<?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>85579</bug_id>
          
          <creation_ts>2012-05-03 21:44:13 -0700</creation_ts>
          <short_desc>IndexedDB: Fire error when there are problems opening a DB</short_desc>
          <delta_ts>2012-05-22 08:54:37 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="David Grogan">dgrogan</reporter>
          <assigned_to name="David Grogan">dgrogan</assigned_to>
          <cc>alecflett</cc>
    
    <cc>jsbell</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>615949</commentid>
    <comment_count>0</comment_count>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-05-03 21:44:13 -0700</bug_when>
    <thetext>IndexedDB: Fire error when there are problems opening a DB</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>615950</commentid>
    <comment_count>1</comment_count>
      <attachid>140156</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-05-03 21:46:54 -0700</bug_when>
    <thetext>Created attachment 140156
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>615956</commentid>
    <comment_count>2</comment_count>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-05-03 22:26:01 -0700</bug_when>
    <thetext>Josh and Alec, could you take a look at this?

There were a few places where we were firing success on open when we shouldn&apos;t have, this changes them to error or abort as appropriate. This won&apos;t help our proximate issues but it _might_ lessen some confusion.

I have a similar patch that surfaces errors when deleting object stores but that seems less relevant.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>616666</commentid>
    <comment_count>3</comment_count>
      <attachid>140156</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-05-04 14:27:56 -0700</bug_when>
    <thetext>Comment on attachment 140156
Patch

lgtm</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>616699</commentid>
    <comment_count>4</comment_count>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-05-04 14:57:36 -0700</bug_when>
    <thetext>Tony, sorry to send another test-less patch, but could you review this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>616722</commentid>
    <comment_count>5</comment_count>
      <attachid>140156</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-05-04 15:25:15 -0700</bug_when>
    <thetext>Comment on attachment 140156
Patch

Would it be possible to write a unittest that truncates the file?  I guess the location of the file is unknown.

A more involved solution would be to add a method to WebCore/testing/Internals.idl that corrupts the file, but a pyauto test is OK too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>616725</commentid>
    <comment_count>6</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-05-04 15:28:24 -0700</bug_when>
    <thetext>Source/WebKit/chromium/tests/ might be another place to add tests - LevelDBTest.cpp there creates and corrupts a database. If IDBDatabaseBackendImpl&apos;s backing store could be pointed at an arbitrary directory, that might work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>627430</commentid>
    <comment_count>7</comment_count>
      <attachid>142654</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-05-18 00:35:44 -0700</bug_when>
    <thetext>Created attachment 142654
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>627434</commentid>
    <comment_count>8</comment_count>
      <attachid>142655</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-05-18 00:38:39 -0700</bug_when>
    <thetext>Created attachment 142655
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>627436</commentid>
    <comment_count>9</comment_count>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-05-18 00:40:53 -0700</bug_when>
    <thetext>Josh, I added a unit test with the fake backing store from your other patch.  Could you take a look?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>627917</commentid>
    <comment_count>10</comment_count>
      <attachid>142655</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-05-18 12:21:14 -0700</bug_when>
    <thetext>Comment on attachment 142655
Patch

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

Overall LGTM

&gt; Source/WebKit/chromium/ChangeLog:29
&gt; +        * tests/IDBFakeBackingStore.h: Copied from Source/WebCore/Modules/indexeddb/IDBLevelDBBackingStore.h.

Was that comment auto-generated?

&gt; Source/WebCore/Modules/indexeddb/IDBDatabaseBackendImpl.h:50
&gt; +        return adoptRef(new IDBDatabaseBackendImpl(name, database, coordinator, factory, uniqueIdentifier, success));

Can IDBDatabaseBackendImpl::create() return null if the constructor sets success to false? Then the success parameter could be removed from create(). On the other hand, XXX::create() doesn&apos;t usually fail so perhaps an explicit flag is clearer, but having an unusable object returned also feels usafe.

&gt; Source/WebKit/chromium/WebKit.gypi:109
&gt; +            &apos;tests/IDBAbortOnCorruptTest.cpp&apos;,

tests/IDBFakeBackingStore.h should be included as well.

&gt; Source/WebKit/chromium/tests/IDBAbortOnCorruptTest.cpp:14
&gt; + * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS &quot;AS IS&quot; AND ANY

s/APPLE/GOOGLE/ ?

&gt; Source/WebKit/chromium/tests/IDBFakeBackingStore.h:14
&gt; + * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS &quot;AS IS&quot; AND ANY

s/APPLE/GOOGLE/ ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>629435</commentid>
    <comment_count>11</comment_count>
      <attachid>143088</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-05-21 13:32:08 -0700</bug_when>
    <thetext>Created attachment 143088
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>629436</commentid>
    <comment_count>12</comment_count>
      <attachid>142655</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-05-21 13:33:13 -0700</bug_when>
    <thetext>Comment on attachment 142655
Patch

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

&gt;&gt; Source/WebKit/chromium/ChangeLog:29
&gt;&gt; +        * tests/IDBFakeBackingStore.h: Copied from Source/WebCore/Modules/indexeddb/IDBLevelDBBackingStore.h.
&gt; 
&gt; Was that comment auto-generated?

Yes

&gt;&gt; Source/WebCore/Modules/indexeddb/IDBDatabaseBackendImpl.h:50
&gt;&gt; +        return adoptRef(new IDBDatabaseBackendImpl(name, database, coordinator, factory, uniqueIdentifier, success));
&gt; 
&gt; Can IDBDatabaseBackendImpl::create() return null if the constructor sets success to false? Then the success parameter could be removed from create(). On the other hand, XXX::create() doesn&apos;t usually fail so perhaps an explicit flag is clearer, but having an unusable object returned also feels usafe.

I gave this a shot, I think I like it more than the old way.

&gt;&gt; Source/WebKit/chromium/WebKit.gypi:109
&gt;&gt; +            &apos;tests/IDBAbortOnCorruptTest.cpp&apos;,
&gt; 
&gt; tests/IDBFakeBackingStore.h should be included as well.

Done.

&gt;&gt; Source/WebKit/chromium/tests/IDBAbortOnCorruptTest.cpp:14
&gt;&gt; + * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS &quot;AS IS&quot; AND ANY
&gt; 
&gt; s/APPLE/GOOGLE/ ?

All the other files have APPLE, so this is probably right.  Tony will know.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>629485</commentid>
    <comment_count>13</comment_count>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-05-21 14:19:15 -0700</bug_when>
    <thetext>Tony, could you take a look at this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>629513</commentid>
    <comment_count>14</comment_count>
      <attachid>143088</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-05-21 14:37:07 -0700</bug_when>
    <thetext>Comment on attachment 143088
Patch

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

&gt; Source/WebCore/Modules/indexeddb/IDBDatabaseBackendImpl.h:55
&gt; +        bool success = false;
&gt; +        IDBDatabaseBackendImpl* backend = new IDBDatabaseBackendImpl(name, database, coordinator, factory, uniqueIdentifier, success);
&gt; +        if (!success) {
&gt; +          delete backend;
&gt; +          return 0;
&gt; +        }

Using an out param for success in a constructor is weird.  Can we just call openInternal here after the object is constructed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>629574</commentid>
    <comment_count>15</comment_count>
      <attachid>143113</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-05-21 15:19:31 -0700</bug_when>
    <thetext>Created attachment 143113
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>629582</commentid>
    <comment_count>16</comment_count>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-05-21 15:21:27 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; Using an out param for success in a constructor is weird.  Can we just call openInternal here after the object is constructed?

Agreed. I think so, and done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>629598</commentid>
    <comment_count>17</comment_count>
      <attachid>143088</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-05-21 15:28:08 -0700</bug_when>
    <thetext>Comment on attachment 143088
Patch

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

Sorry, i&apos;m not a great reviwer for this, but here are some drive-bys:

&gt; Source/WebCore/Modules/indexeddb/IDBDatabaseBackendImpl.cpp:106
&gt; -    openInternal();
&gt; +    success = openInternal();

Why not just move the openInternal call out of the constructor?  Then you don&apos;t need the success callback, and the create() function is responsible for calling openInternal?

&gt; Source/WebCore/Modules/indexeddb/IDBDatabaseBackendImpl.cpp:117
&gt;      bool success = m_backingStore-&gt;getIDBDatabaseMetaData(m_name, m_version, m_id);
&gt;      ASSERT(success == (m_id != InvalidId));
&gt;      if (success) {
&gt;          loadObjectStores();
&gt; -        return;
&gt; +        return true;
&gt;      }
&gt; -    if (!m_backingStore-&gt;createIDBDatabaseMetaData(m_name, m_version, m_id))
&gt; -        ASSERT_NOT_REACHED(); // FIXME: Need better error handling.
&gt; +    return m_backingStore-&gt;createIDBDatabaseMetaData(m_name, m_version, m_id);

Alternatively, one could do this work up front, and then pass in the relevant structure to the DatabaseBackendImpl in the constructor (which could then never fail).

&gt; Source/WebCore/Modules/indexeddb/IDBDatabaseBackendImpl.h:51
&gt; +        IDBDatabaseBackendImpl* backend = new IDBDatabaseBackendImpl(name, database, coordinator, factory, uniqueIdentifier, success);

Better to put it in an OwnPtr right away, then you don&apos;t need a delete below.  WHy is this inline?  The malloc surely out-weighs the inline saving.

&gt; Source/WebCore/Modules/indexeddb/IDBDatabaseBackendImpl.h:86
&gt; +    IDBDatabaseBackendImpl(const String&amp; name, IDBBackingStore* database, IDBTransactionCoordinator*, IDBFactoryBackendImpl*, const String&amp; uniqueIdentifier, bool&amp; success);

A success parameter to a constructor is a kinda odd idium.  Should we be allocating some substructure first in a separate create method which could return 0 when it fails?  I&apos;m not sure what you&apos;re using success for here.  It&apos;s not wrong in my eyes... just a bit odd.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>629671</commentid>
    <comment_count>18</comment_count>
      <attachid>143124</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-05-21 16:10:00 -0700</bug_when>
    <thetext>Created attachment 143124
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>629676</commentid>
    <comment_count>19</comment_count>
      <attachid>143124</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-05-21 16:14:39 -0700</bug_when>
    <thetext>Comment on attachment 143124
Patch

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

&gt; Source/WebCore/Modules/indexeddb/IDBDatabaseBackendImpl.cpp:100
&gt; +        backend.clear();

Nit: This shouldn&apos;t be necessary since backend is a RefPtr.

&gt; Source/WebKit/chromium/tests/IDBAbortOnCorruptTest.cpp:40
&gt; + public:

Nit: No space before public:.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>629700</commentid>
    <comment_count>20</comment_count>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-05-21 16:31:34 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; (From update of attachment 143088 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=143088&amp;action=review
&gt; 
&gt; Sorry, i&apos;m not a great reviwer for this, but here are some drive-bys:
&gt; 
&gt; &gt; Source/WebCore/Modules/indexeddb/IDBDatabaseBackendImpl.cpp:106
&gt; &gt; -    openInternal();
&gt; &gt; +    success = openInternal();
&gt; 
&gt; Why not just move the openInternal call out of the constructor?  Then you don&apos;t need the success callback, and the create() function is responsible for calling openInternal?

An idea so good it&apos;s already done.

&gt; 
&gt; &gt; Source/WebCore/Modules/indexeddb/IDBDatabaseBackendImpl.cpp:117
&gt; &gt;      bool success = m_backingStore-&gt;getIDBDatabaseMetaData(m_name, m_version, m_id);
&gt; &gt;      ASSERT(success == (m_id != InvalidId));
&gt; &gt;      if (success) {
&gt; &gt;          loadObjectStores();
&gt; &gt; -        return;
&gt; &gt; +        return true;
&gt; &gt;      }
&gt; &gt; -    if (!m_backingStore-&gt;createIDBDatabaseMetaData(m_name, m_version, m_id))
&gt; &gt; -        ASSERT_NOT_REACHED(); // FIXME: Need better error handling.
&gt; &gt; +    return m_backingStore-&gt;createIDBDatabaseMetaData(m_name, m_version, m_id);
&gt; 
&gt; Alternatively, one could do this work up front, and then pass in the relevant structure to the DatabaseBackendImpl in the constructor (which could then never fail).

Good point that I hadn&apos;t considered, but in this case splitting up openInternal or moving it outside the class would probably be more trouble than it&apos;s worth.

&gt; 
&gt; &gt; Source/WebCore/Modules/indexeddb/IDBDatabaseBackendImpl.h:51
&gt; &gt; +        IDBDatabaseBackendImpl* backend = new IDBDatabaseBackendImpl(name, database, coordinator, factory, uniqueIdentifier, success);
&gt; 
&gt; Better to put it in an OwnPtr right away, then you don&apos;t need a delete below.  WHy is this inline?

I don&apos;t know. Moved.

The malloc surely out-weighs the inline saving.
&gt; 
&gt; &gt; Source/WebCore/Modules/indexeddb/IDBDatabaseBackendImpl.h:86
&gt; &gt; +    IDBDatabaseBackendImpl(const String&amp; name, IDBBackingStore* database, IDBTransactionCoordinator*, IDBFactoryBackendImpl*, const String&amp; uniqueIdentifier, bool&amp; success);
&gt; 
&gt; A success parameter to a constructor is a kinda odd idium.  Should we be allocating some substructure first in a separate create method which could return 0 when it fails?  I&apos;m not sure what you&apos;re using success for here.  It&apos;s not wrong in my eyes... just a bit odd.

Tony had the same feeling, this is all changed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>629702</commentid>
    <comment_count>21</comment_count>
      <attachid>143131</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-05-21 16:32:16 -0700</bug_when>
    <thetext>Created attachment 143131
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>629704</commentid>
    <comment_count>22</comment_count>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-05-21 16:33:19 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; (From update of attachment 143124 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=143124&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/Modules/indexeddb/IDBDatabaseBackendImpl.cpp:100
&gt; &gt; +        backend.clear();
&gt; 
&gt; Nit: This shouldn&apos;t be necessary since backend is a RefPtr.
&gt; 
&gt; &gt; Source/WebKit/chromium/tests/IDBAbortOnCorruptTest.cpp:40
&gt; &gt; + public:
&gt; 
&gt; Nit: No space before public:.

Fixed and fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>629950</commentid>
    <comment_count>23</comment_count>
      <attachid>143131</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-21 22:59:08 -0700</bug_when>
    <thetext>Comment on attachment 143131
Patch for landing

Rejecting attachment 143131 from commit-queue.

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

Last 500 characters of output:
l&gt;&amp;, WTF::Vector&lt;WebCore::IDBKeyPath, 0ul&gt;&amp;, WTF::Vector&lt;bool, 0ul&gt;&amp;, WTF::Vector&lt;bool, 0ul&gt;&amp;)
Source/WebCore/Modules/indexeddb/IDBBackingStore.h:81: note: 	virtual bool WebCore::IDBBackingStore::createIndex(int64_t, int64_t, const WTF::String&amp;, const WebCore::IDBKeyPath&amp;, bool, bool, int64_t&amp;)
make: *** [out/Debug/obj.target/webkit_unit_tests/Source/WebKit/chromium/tests/IDBAbortOnCorruptTest.o] Error 1
make: *** Waiting for unfinished jobs....
  LINK(target) out/Debug/DumpRenderTree: Finished

Full output: http://queues.webkit.org/results/12742483</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>630377</commentid>
    <comment_count>24</comment_count>
      <attachid>143302</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-05-22 08:10:02 -0700</bug_when>
    <thetext>Created attachment 143302
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>630410</commentid>
    <comment_count>25</comment_count>
      <attachid>143302</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-22 08:54:32 -0700</bug_when>
    <thetext>Comment on attachment 143302
Patch for landing

Clearing flags on attachment: 143302

Committed r117978: &lt;http://trac.webkit.org/changeset/117978&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>630411</commentid>
    <comment_count>26</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-22 08:54:37 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>140156</attachid>
            <date>2012-05-03 21:46:54 -0700</date>
            <delta_ts>2012-05-18 00:35:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-85579-20120503214653.patch</filename>
            <type>text/plain</type>
            <size>8133</size>
            <attacher name="David Grogan">dgrogan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE2MDMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjViNWJhMDlkMWJlNWZi
ZTBiOTY1OGM5Y2UzZmViNzc4ZmUwNzVkOC4uMjRlYTFmNDY4NDcyNWY0MzJhNDQ3Y2VkYTNlMTA5
ZjM5MWQ3NGViYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDEyLTA1LTAzICBEYXZp
ZCBHcm9nYW4gIDxkZ3JvZ2FuQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IEZp
cmUgZXJyb3Igd2hlbiB0aGVyZSBhcmUgcHJvYmxlbXMgb3BlbmluZyBhIERCCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NTU3OQorCisgICAgICAgIFdl
IGN1cnJlbnRseSBmaXJlIHN1Y2Nlc3MuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiAgV2UgdGhpbmsgdGhlIG9ubHkgd2F5IHRo
aXMgd2lsbCBoYXBwZW4gaXMgaWYgdGhlCisgICAgICAgIGxldmVsZGIgc3RvcmUgZ2V0cyBjb3Jy
dXB0ZWQsIGVpdGhlciBkdWUgdG8gSU8gcHJvYmxlbXMgb3IgY29kaW5nCisgICAgICAgIGVycm9y
LiAgV2UncmUgd29ya2luZyBvbiBhIHB5YXV0byB0ZXN0IHRoYXQgY29ycnVwcyB0aGUgZGIgaW4g
dGhlCisgICAgICAgIGJhY2tncm91bmQgYnV0IGNhbid0IGRvIHRoYXQgZnJvbSBEUlQuCisKKyAg
ICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OklEQkRhdGFiYXNlQmFja2Vu
ZEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6b3Blbklu
dGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6Om9wZW5D
b25uZWN0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tl
bmRJbXBsLmg6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpjcmVh
dGUpOgorICAgICAgICAoSURCRGF0YWJhc2VCYWNrZW5kSW1wbCk6CisgICAgICAgICogTW9kdWxl
cy9pbmRleGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OklEQkZhY3RvcnlCYWNrZW5kSW1wbDo6ZGVsZXRlRGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCRmFjdG9yeUJhY2tlbmRJbXBsOjpvcGVuSW50ZXJuYWwpOgorCiAyMDEyLTA1LTAzICBQ
aGlsaXAgUm9nZXJzICA8cGRyQGdvb2dsZS5jb20+CiAKICAgICAgICAgRml4IG51bWVyaWMgcHJl
Y2lzaW9uIGlzc3VlIGluIFNWRyBhbmltYXRpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3BwCmluZGV4
IGIwNWIzMjg2M2QwNzJmYjY1N2RjYTljOGQ2NGUwYjg1MWFkMDkyNDUuLjkxMDhlZWJmMDMxMjhh
YjdjZjViNmYzNjYxN2YwMTJmYjM2YjljOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3BwCkBAIC05
Myw3ICs5Myw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBt
X2RhdGFiYXNlQ2FsbGJhY2tzOwogfTsKIAotSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6SURCRGF0
YWJhc2VCYWNrZW5kSW1wbChjb25zdCBTdHJpbmcmIG5hbWUsIElEQkJhY2tpbmdTdG9yZSogYmFj
a2luZ1N0b3JlLCBJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yKiBjb29yZGluYXRvciwgSURCRmFj
dG9yeUJhY2tlbmRJbXBsKiBmYWN0b3J5LCBjb25zdCBTdHJpbmcmIHVuaXF1ZUlkZW50aWZpZXIp
CitJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsKGNvbnN0IFN0
cmluZyYgbmFtZSwgSURCQmFja2luZ1N0b3JlKiBiYWNraW5nU3RvcmUsIElEQlRyYW5zYWN0aW9u
Q29vcmRpbmF0b3IqIGNvb3JkaW5hdG9yLCBJREJGYWN0b3J5QmFja2VuZEltcGwqIGZhY3Rvcnks
IGNvbnN0IFN0cmluZyYgdW5pcXVlSWRlbnRpZmllciwgYm9vbCYgc3VjY2VzcykKICAgICA6IG1f
YmFja2luZ1N0b3JlKGJhY2tpbmdTdG9yZSkKICAgICAsIG1faWQoSW52YWxpZElkKQogICAgICwg
bV9uYW1lKG5hbWUpCkBAIC0xMDMsMTkgKzEwMywyMiBAQCBJREJEYXRhYmFzZUJhY2tlbmRJbXBs
OjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsKGNvbnN0IFN0cmluZyYgbmFtZSwgSURCQmFja2luZ1N0
bwogICAgICwgbV90cmFuc2FjdGlvbkNvb3JkaW5hdG9yKGNvb3JkaW5hdG9yKQogewogICAgIEFT
U0VSVCghbV9uYW1lLmlzTnVsbCgpKTsKLSAgICBvcGVuSW50ZXJuYWwoKTsKKyAgICBzdWNjZXNz
ID0gb3BlbkludGVybmFsKCk7CiB9CiAKLXZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6b3Bl
bkludGVybmFsKCkKK2Jvb2wgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6b3BlbkludGVybmFsKCkK
IHsKICAgICBib29sIHN1Y2Nlc3MgPSBtX2JhY2tpbmdTdG9yZS0+Z2V0SURCRGF0YWJhc2VNZXRh
RGF0YShtX25hbWUsIG1fdmVyc2lvbiwgbV9pZCk7CiAgICAgQVNTRVJUKHN1Y2Nlc3MgPT0gKG1f
aWQgIT0gSW52YWxpZElkKSk7CiAgICAgaWYgKHN1Y2Nlc3MpIHsKICAgICAgICAgbG9hZE9iamVj
dFN0b3JlcygpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0K
KyAgICBpZiAoIW1fYmFja2luZ1N0b3JlLT5jcmVhdGVJREJEYXRhYmFzZU1ldGFEYXRhKG1fbmFt
ZSwgbV92ZXJzaW9uLCBtX2lkKSkgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICBpZiAoIW1fYmFja2luZ1N0b3JlLT5jcmVh
dGVJREJEYXRhYmFzZU1ldGFEYXRhKG1fbmFtZSwgbV92ZXJzaW9uLCBtX2lkKSkKLSAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7IC8vIEZJWE1FOiBOZWVkIGJldHRlciBlcnJvciBoYW5kbGlu
Zy4KKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6fklEQkRh
dGFiYXNlQmFja2VuZEltcGwoKQpAQCAtMzI1LDkgKzMyOCwxMCBAQCB2b2lkIElEQkRhdGFiYXNl
QmFja2VuZEltcGw6Om9wZW5Db25uZWN0aW9uKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxs
YmFja3MpCiAgICAgaWYgKCFtX3BlbmRpbmdEZWxldGVDYWxscy5pc0VtcHR5KCkgfHwgbV9ydW5u
aW5nVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uIHx8ICFtX3BlbmRpbmdTZXRWZXJzaW9uQ2FsbHMu
aXNFbXB0eSgpKQogICAgICAgICBtX3BlbmRpbmdPcGVuQ2FsbHMuYXBwZW5kKFBlbmRpbmdPcGVu
Q2FsbDo6Y3JlYXRlKGNhbGxiYWNrcykpOwogICAgIGVsc2UgewotICAgICAgICBpZiAobV9pZCA9
PSBJbnZhbGlkSWQpCi0gICAgICAgICAgICBvcGVuSW50ZXJuYWwoKTsKLSAgICAgICAgY2FsbGJh
Y2tzLT5vblN1Y2Nlc3ModGhpcyk7CisgICAgICAgIGlmIChtX2lkID09IEludmFsaWRJZCAmJiAh
b3BlbkludGVybmFsKCkpCisgICAgICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJh
c2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVTktOT1dOX0VSUiwgIkludGVy
bmFsIGVycm9yLiIpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY2FsbGJhY2tzLT5vblN1
Y2Nlc3ModGhpcyk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmgKaW5kZXggMTA4NmViMTZl
Yjg3ZDE5ZjAyOGUzZjRjOGM0N2I5MDVkODY3OGYwNS4uM2NjOTE2NjRmNjk5OTg3NDNiZWZkYWQ2
MTViMjIwYTA2Mzg1YzA5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuaApAQCAtNDUsOSArNDUsOSBAQCBj
bGFzcyBJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yOwogCiBjbGFzcyBJREJEYXRhYmFzZUJhY2tl
bmRJbXBsIDogcHVibGljIElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZSB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW1wbD4gY3JlYXRlKGNvbnN0
IFN0cmluZyYgbmFtZSwgSURCQmFja2luZ1N0b3JlKiBkYXRhYmFzZSwgSURCVHJhbnNhY3Rpb25D
b29yZGluYXRvciogY29vcmRpbmF0b3IsIElEQkZhY3RvcnlCYWNrZW5kSW1wbCogZmFjdG9yeSwg
Y29uc3QgU3RyaW5nJiB1bmlxdWVJZGVudGlmaWVyKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPElE
QkRhdGFiYXNlQmFja2VuZEltcGw+IGNyZWF0ZShjb25zdCBTdHJpbmcmIG5hbWUsIElEQkJhY2tp
bmdTdG9yZSogZGF0YWJhc2UsIElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3IqIGNvb3JkaW5hdG9y
LCBJREJGYWN0b3J5QmFja2VuZEltcGwqIGZhY3RvcnksIGNvbnN0IFN0cmluZyYgdW5pcXVlSWRl
bnRpZmllciwgYm9vbCYgc3VjY2VzcykKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgSURCRGF0YWJhc2VCYWNrZW5kSW1wbChuYW1lLCBkYXRhYmFzZSwgY29vcmRpbmF0b3IsIGZh
Y3RvcnksIHVuaXF1ZUlkZW50aWZpZXIpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJ
REJEYXRhYmFzZUJhY2tlbmRJbXBsKG5hbWUsIGRhdGFiYXNlLCBjb29yZGluYXRvciwgZmFjdG9y
eSwgdW5pcXVlSWRlbnRpZmllciwgc3VjY2VzcykpOwogICAgIH0KICAgICB2aXJ0dWFsIH5JREJE
YXRhYmFzZUJhY2tlbmRJbXBsKCk7CiAKQEAgLTc3LDkgKzc3LDkgQEAgcHVibGljOgogICAgIHZv
aWQgdHJhbnNhY3Rpb25GaW5pc2hlZChQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZElu
dGVyZmFjZT4pOwogCiBwcml2YXRlOgotICAgIElEQkRhdGFiYXNlQmFja2VuZEltcGwoY29uc3Qg
U3RyaW5nJiBuYW1lLCBJREJCYWNraW5nU3RvcmUqIGRhdGFiYXNlLCBJREJUcmFuc2FjdGlvbkNv
b3JkaW5hdG9yKiwgSURCRmFjdG9yeUJhY2tlbmRJbXBsKiwgY29uc3QgU3RyaW5nJiB1bmlxdWVJ
ZGVudGlmaWVyKTsKKyAgICBJREJEYXRhYmFzZUJhY2tlbmRJbXBsKGNvbnN0IFN0cmluZyYgbmFt
ZSwgSURCQmFja2luZ1N0b3JlKiBkYXRhYmFzZSwgSURCVHJhbnNhY3Rpb25Db29yZGluYXRvcios
IElEQkZhY3RvcnlCYWNrZW5kSW1wbCosIGNvbnN0IFN0cmluZyYgdW5pcXVlSWRlbnRpZmllciwg
Ym9vbCYgc3VjY2Vzcyk7CiAKLSAgICB2b2lkIG9wZW5JbnRlcm5hbCgpOworICAgIGJvb2wgb3Bl
bkludGVybmFsKCk7CiAgICAgdm9pZCBsb2FkT2JqZWN0U3RvcmVzKCk7CiAgICAgdm9pZCBwcm9j
ZXNzUGVuZGluZ0NhbGxzKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5QmFja2VuZEltcGwuY3BwCmluZGV4IGY1YjljODc3NDA2
NzQzZjBlNWE2MDlhNGNjZTlkNWU0ZGEyOWEzMWMuLmZhZjg1N2JhOGQ5ZjZhMmMzMmQyYzM0MWQ4
N2E0OTZmNzRkN2IxYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJbXBsLmNwcApAQCAtMTI4LDkgKzEyOCwxMyBA
QCB2b2lkIElEQkZhY3RvcnlCYWNrZW5kSW1wbDo6ZGVsZXRlRGF0YWJhc2UoY29uc3QgU3RyaW5n
JiBuYW1lLCBQYXNzUmVmUHRyPElEQkNhbAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
UmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEltcGw+IGRhdGFiYXNlQmFja2VuZCA9IElEQkRhdGFi
YXNlQmFja2VuZEltcGw6OmNyZWF0ZShuYW1lLCBiYWNraW5nU3RvcmUuZ2V0KCksIG1fdHJhbnNh
Y3Rpb25Db29yZGluYXRvci5nZXQoKSwgdGhpcywgdW5pcXVlSWRlbnRpZmllcik7Ci0gICAgbV9k
YXRhYmFzZUJhY2tlbmRNYXAuc2V0KHVuaXF1ZUlkZW50aWZpZXIsIGRhdGFiYXNlQmFja2VuZC5n
ZXQoKSk7Ci0gICAgZGF0YWJhc2VCYWNrZW5kLT5kZWxldGVEYXRhYmFzZShjYWxsYmFja3MpOwor
ICAgIGJvb2wgc3VjY2VzcyA9IGZhbHNlOworICAgIFJlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJ
bXBsPiBkYXRhYmFzZUJhY2tlbmQgPSBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpjcmVhdGUobmFt
ZSwgYmFja2luZ1N0b3JlLmdldCgpLCBtX3RyYW5zYWN0aW9uQ29vcmRpbmF0b3IuZ2V0KCksIHRo
aXMsIHVuaXF1ZUlkZW50aWZpZXIsIHN1Y2Nlc3MpOworICAgIGlmIChzdWNjZXNzKSB7CisgICAg
ICAgIG1fZGF0YWJhc2VCYWNrZW5kTWFwLnNldCh1bmlxdWVJZGVudGlmaWVyLCBkYXRhYmFzZUJh
Y2tlbmQuZ2V0KCkpOworICAgICAgICBkYXRhYmFzZUJhY2tlbmQtPmRlbGV0ZURhdGFiYXNlKGNh
bGxiYWNrcyk7CisgICAgfSBlbHNlCisgICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRh
YmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVOS05PV05fRVJSLCAiSW50
ZXJuYWwgZXJyb3IuIikpOwogfQogCiBQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZT4gSURCRmFj
dG9yeUJhY2tlbmRJbXBsOjpvcGVuQmFja2luZ1N0b3JlKFBhc3NSZWZQdHI8U2VjdXJpdHlPcmln
aW4+IHNlY3VyaXR5T3JpZ2luLCBjb25zdCBTdHJpbmcmIGRhdGFEaXJlY3RvcnkpCkBAIC0xNzYs
OSArMTgwLDEzIEBAIHZvaWQgSURCRmFjdG9yeUJhY2tlbmRJbXBsOjpvcGVuSW50ZXJuYWwoY29u
c3QgU3RyaW5nJiBuYW1lLCBJREJDYWxsYmFja3MqIGNhbGxiCiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW1wbD4gZGF0YWJhc2VCYWNrZW5k
ID0gSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6Y3JlYXRlKG5hbWUsIGJhY2tpbmdTdG9yZS5nZXQo
KSwgbV90cmFuc2FjdGlvbkNvb3JkaW5hdG9yLmdldCgpLCB0aGlzLCB1bmlxdWVJZGVudGlmaWVy
KTsKLSAgICBjYWxsYmFja3MtPm9uU3VjY2VzcyhSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50
ZXJmYWNlPihkYXRhYmFzZUJhY2tlbmQuZ2V0KCkpLnJlbGVhc2UoKSk7Ci0gICAgbV9kYXRhYmFz
ZUJhY2tlbmRNYXAuc2V0KHVuaXF1ZUlkZW50aWZpZXIsIGRhdGFiYXNlQmFja2VuZC5nZXQoKSk7
CisgICAgYm9vbCBzdWNjZXNzID0gZmFsc2U7CisgICAgUmVmUHRyPElEQkRhdGFiYXNlQmFja2Vu
ZEltcGw+IGRhdGFiYXNlQmFja2VuZCA9IElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNyZWF0ZShu
YW1lLCBiYWNraW5nU3RvcmUuZ2V0KCksIG1fdHJhbnNhY3Rpb25Db29yZGluYXRvci5nZXQoKSwg
dGhpcywgdW5pcXVlSWRlbnRpZmllciwgc3VjY2Vzcyk7CisgICAgaWYgKHN1Y2Nlc3MpIHsKKyAg
ICAgICAgY2FsbGJhY2tzLT5vblN1Y2Nlc3MoUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVy
ZmFjZT4oZGF0YWJhc2VCYWNrZW5kLmdldCgpKS5yZWxlYXNlKCkpOworICAgICAgICBtX2RhdGFi
YXNlQmFja2VuZE1hcC5zZXQodW5pcXVlSWRlbnRpZmllciwgZGF0YWJhc2VCYWNrZW5kLmdldCgp
KTsKKyAgICB9IGVsc2UKKyAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJy
b3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VU5LTk9XTl9FUlIsICJJbnRlcm5hbCBl
cnJvci4iKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>142654</attachid>
            <date>2012-05-18 00:35:44 -0700</date>
            <delta_ts>2012-05-18 00:38:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-85579-20120518003543.patch</filename>
            <type>text/plain</type>
            <size>23445</size>
            <attacher name="David Grogan">dgrogan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE3MDg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzg4MmJhNGMwZjg1ODNm
MDAyZmNlZWIzZDIxZGIxMzZjN2JjZWRjNi4uNDY3OWJlNjNmZGMzMDY1YzI0ZGQyYWRhNGFmNDIy
Yjc4YzM3OWE4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEyLTA1LTE4ICBEYXZp
ZCBHcm9nYW4gIDxkZ3JvZ2FuQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IEZp
cmUgZXJyb3Igd2hlbiB0aGVyZSBhcmUgcHJvYmxlbXMgb3BlbmluZyBhIERCCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NTU3OQorCisgICAgICAgIFdl
IHVzZWQgdG8gZWl0aGVyIGZpcmUgc3VjY2VzcyBvciBnZXQgaW50byBhbiBpbmZpbml0ZSBsb29w
LgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5ldyB1
bml0IHRlc3QgaW4KKyAgICAgICAgU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJBYm9y
dE9uQ29ycnVwdFRlc3QuY3BwCisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRh
YmFzZUJhY2tlbmRJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2Vu
ZEltcGw6OklEQkRhdGFiYXNlQmFja2VuZEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0
YWJhc2VCYWNrZW5kSW1wbDo6b3BlbkludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRh
dGFiYXNlQmFja2VuZEltcGw6Om9wZW5Db25uZWN0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmg6CisgICAgICAgIChXZWJDb3JlOjpJREJE
YXRhYmFzZUJhY2tlbmRJbXBsOjpjcmVhdGUpOgorICAgICAgICAoSURCRGF0YWJhc2VCYWNrZW5k
SW1wbCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJbXBs
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkZhY3RvcnlCYWNrZW5kSW1wbDo6ZGVsZXRlRGF0
YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6SURCRmFjdG9yeUJhY2tlbmRJbXBsOjpvcGVuSW50
ZXJuYWwpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnlCYWNrZW5kSW1w
bC5oOgorICAgICAgICAoSURCRmFjdG9yeUJhY2tlbmRJbXBsKToKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9JREJMZXZlbERCQmFja2luZ1N0b3JlLmg6CisgICAgICAgIChJREJMZXZlbERC
QmFja2luZ1N0b3JlKToKKwogMjAxMi0wNS0xNSAgUm9iIEJ1aXMgIDxyYnVpc0ByaW0uY29tPgog
CiAgICAgICAgIFJlZmFjdG9yIFNWRyBwYXJ0cyBvZiBOb2RlOjphZGRFdmVudExpc3RlbmVyL3Jl
bW92ZUV2ZW50TGlzdGVuZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggNWRhYWY5NjY3
MzhiYWI2MWJjODJlZGIyYTdlYzljZTU0NDcyN2QxYy4uZGFiYTk0MDc5ODk3MWU0ZjkxMTIxMTlh
MjljMTdmMDMxYjY0NTU0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwz
NSBAQAorMjAxMi0wNS0xOCAgRGF2aWQgR3JvZ2FuICA8ZGdyb2dhbkBjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgSW5kZXhlZERCOiBGaXJlIGVycm9yIHdoZW4gdGhlcmUgYXJlIHByb2JsZW1zIG9w
ZW5pbmcgYSBEQgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9ODU1NzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIFdlYktpdC5neXBpOgorICAgICAgICAqIHRlc3RzL0lEQkFib3J0T25Db3JydXB0VGVzdC5j
cHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChNb2NrSURCQ2FsbGJhY2tz
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tJREJDYWxsYmFja3M6Ok1vY2tJREJDYWxsYmFja3Mp
OgorICAgICAgICAoV2ViQ29yZTo6TW9ja0lEQkNhbGxiYWNrczo6fk1vY2tJREJDYWxsYmFja3Mp
OgorICAgICAgICAoV2ViQ29yZTo6TW9ja0lEQkNhbGxiYWNrczo6b25FcnJvcik6CisgICAgICAg
IChXZWJDb3JlOjpNb2NrSURCQ2FsbGJhY2tzOjpvblN1Y2Nlc3MpOgorICAgICAgICAoV2ViQ29y
ZTo6TW9ja0lEQkNhbGxiYWNrczo6b25TdWNjZXNzV2l0aENvbnRpbnVhdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpNb2NrSURCQ2FsbGJhY2tzOjpvblN1Y2Nlc3NXaXRoUHJlZmV0Y2gpOgorICAg
ICAgICAoV2ViQ29yZTo6TW9ja0lEQkNhbGxiYWNrczo6b25CbG9ja2VkKToKKyAgICAgICAgKEZh
aWxpbmdCYWNraW5nU3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6RmFpbGluZ0JhY2tpbmdTdG9y
ZTo6fkZhaWxpbmdCYWNraW5nU3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6RmFpbGluZ0JhY2tp
bmdTdG9yZTo6b3Blbik6CisgICAgICAgIChXZWJDb3JlOjpGYWlsaW5nQmFja2luZ1N0b3JlOjpj
cmVhdGVJREJEYXRhYmFzZU1ldGFEYXRhKToKKyAgICAgICAgKEZhaWxpbmdJREJGYWN0b3J5QmFj
a2VuZEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6RmFpbGluZ0lEQkZhY3RvcnlCYWNrZW5kSW1w
bDo6fkZhaWxpbmdJREJGYWN0b3J5QmFja2VuZEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6RmFp
bGluZ0lEQkZhY3RvcnlCYWNrZW5kSW1wbDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZh
aWxpbmdJREJGYWN0b3J5QmFja2VuZEltcGw6OnJlbW92ZUlEQkRhdGFiYXNlQmFja2VuZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpGYWlsaW5nSURCRmFjdG9yeUJhY2tlbmRJbXBsOjpvcGVuQmFja2lu
Z1N0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlRFU1QpOgorICAgICAgICAqIHRlc3RzL0lEQkZh
a2VCYWNraW5nU3RvcmUuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5oLgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgIChJREJGYWtlQmFja2luZ1N0b3JlKToKKwogMjAxMi0wNS0xNSAgSGFucyBXZW5uYm9yZyAg
PGhhbnNAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFNwZWVjaCBKYXZhU2NyaXB0IEFQSTogSW50
cm9kdWNlIGVycm9yIGNvZGUgZW51bSBpbiBDaHJvbWl1bSBwbHVtYmluZwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJ
bXBsLmNwcAppbmRleCBiMDViMzI4NjNkMDcyZmI2NTdkY2E5YzhkNjRlMGI4NTFhZDA5MjQ1Li4z
NDY4ZGI3ZTY5MDBlYzUyODI4ZDc0YTM0NjgyZjc5MGZhYTIyMjQ2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJ
bXBsLmNwcApAQCAtOTMsNyArOTMsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxJREJEYXRhYmFz
ZUNhbGxiYWNrcz4gbV9kYXRhYmFzZUNhbGxiYWNrczsKIH07CiAKLUlEQkRhdGFiYXNlQmFja2Vu
ZEltcGw6OklEQkRhdGFiYXNlQmFja2VuZEltcGwoY29uc3QgU3RyaW5nJiBuYW1lLCBJREJCYWNr
aW5nU3RvcmUqIGJhY2tpbmdTdG9yZSwgSURCVHJhbnNhY3Rpb25Db29yZGluYXRvciogY29vcmRp
bmF0b3IsIElEQkZhY3RvcnlCYWNrZW5kSW1wbCogZmFjdG9yeSwgY29uc3QgU3RyaW5nJiB1bmlx
dWVJZGVudGlmaWVyKQorSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6SURCRGF0YWJhc2VCYWNrZW5k
SW1wbChjb25zdCBTdHJpbmcmIG5hbWUsIElEQkJhY2tpbmdTdG9yZSogYmFja2luZ1N0b3JlLCBJ
REJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yKiBjb29yZGluYXRvciwgSURCRmFjdG9yeUJhY2tlbmRJ
bXBsKiBmYWN0b3J5LCBjb25zdCBTdHJpbmcmIHVuaXF1ZUlkZW50aWZpZXIsIGJvb2wmIHN1Y2Nl
c3MpCiAgICAgOiBtX2JhY2tpbmdTdG9yZShiYWNraW5nU3RvcmUpCiAgICAgLCBtX2lkKEludmFs
aWRJZCkKICAgICAsIG1fbmFtZShuYW1lKQpAQCAtMTAzLDE5ICsxMDMsMTggQEAgSURCRGF0YWJh
c2VCYWNrZW5kSW1wbDo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbChjb25zdCBTdHJpbmcmIG5hbWUs
IElEQkJhY2tpbmdTdG8KICAgICAsIG1fdHJhbnNhY3Rpb25Db29yZGluYXRvcihjb29yZGluYXRv
cikKIHsKICAgICBBU1NFUlQoIW1fbmFtZS5pc051bGwoKSk7Ci0gICAgb3BlbkludGVybmFsKCk7
CisgICAgc3VjY2VzcyA9IG9wZW5JbnRlcm5hbCgpOwogfQogCi12b2lkIElEQkRhdGFiYXNlQmFj
a2VuZEltcGw6Om9wZW5JbnRlcm5hbCgpCitib29sIElEQkRhdGFiYXNlQmFja2VuZEltcGw6Om9w
ZW5JbnRlcm5hbCgpCiB7CiAgICAgYm9vbCBzdWNjZXNzID0gbV9iYWNraW5nU3RvcmUtPmdldElE
QkRhdGFiYXNlTWV0YURhdGEobV9uYW1lLCBtX3ZlcnNpb24sIG1faWQpOwogICAgIEFTU0VSVChz
dWNjZXNzID09IChtX2lkICE9IEludmFsaWRJZCkpOwogICAgIGlmIChzdWNjZXNzKSB7CiAgICAg
ICAgIGxvYWRPYmplY3RTdG9yZXMoKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICB9Ci0gICAgaWYgKCFtX2JhY2tpbmdTdG9yZS0+Y3JlYXRlSURCRGF0YWJhc2VN
ZXRhRGF0YShtX25hbWUsIG1fdmVyc2lvbiwgbV9pZCkpCi0gICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOyAvLyBGSVhNRTogTmVlZCBiZXR0ZXIgZXJyb3IgaGFuZGxpbmcuCisgICAgcmV0dXJu
IG1fYmFja2luZ1N0b3JlLT5jcmVhdGVJREJEYXRhYmFzZU1ldGFEYXRhKG1fbmFtZSwgbV92ZXJz
aW9uLCBtX2lkKTsKIH0KIAogSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6fklEQkRhdGFiYXNlQmFj
a2VuZEltcGwoKQpAQCAtMzI1LDkgKzMyNCwxMCBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZElt
cGw6Om9wZW5Db25uZWN0aW9uKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiAg
ICAgaWYgKCFtX3BlbmRpbmdEZWxldGVDYWxscy5pc0VtcHR5KCkgfHwgbV9ydW5uaW5nVmVyc2lv
bkNoYW5nZVRyYW5zYWN0aW9uIHx8ICFtX3BlbmRpbmdTZXRWZXJzaW9uQ2FsbHMuaXNFbXB0eSgp
KQogICAgICAgICBtX3BlbmRpbmdPcGVuQ2FsbHMuYXBwZW5kKFBlbmRpbmdPcGVuQ2FsbDo6Y3Jl
YXRlKGNhbGxiYWNrcykpOwogICAgIGVsc2UgewotICAgICAgICBpZiAobV9pZCA9PSBJbnZhbGlk
SWQpCi0gICAgICAgICAgICBvcGVuSW50ZXJuYWwoKTsKLSAgICAgICAgY2FsbGJhY2tzLT5vblN1
Y2Nlc3ModGhpcyk7CisgICAgICAgIGlmIChtX2lkID09IEludmFsaWRJZCAmJiAhb3BlbkludGVy
bmFsKCkpCisgICAgICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6
Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVTktOT1dOX0VSUiwgIkludGVybmFsIGVycm9y
LiIpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY2FsbGJhY2tzLT5vblN1Y2Nlc3ModGhp
cyk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmgKaW5kZXggMTA4NmViMTZlYjg3ZDE5ZjAy
OGUzZjRjOGM0N2I5MDVkODY3OGYwNS4uM2NjOTE2NjRmNjk5OTg3NDNiZWZkYWQ2MTViMjIwYTA2
Mzg1YzA5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
RGF0YWJhc2VCYWNrZW5kSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuaApAQCAtNDUsOSArNDUsOSBAQCBjbGFzcyBJREJU
cmFuc2FjdGlvbkNvb3JkaW5hdG9yOwogCiBjbGFzcyBJREJEYXRhYmFzZUJhY2tlbmRJbXBsIDog
cHVibGljIElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW1wbD4gY3JlYXRlKGNvbnN0IFN0cmluZyYg
bmFtZSwgSURCQmFja2luZ1N0b3JlKiBkYXRhYmFzZSwgSURCVHJhbnNhY3Rpb25Db29yZGluYXRv
ciogY29vcmRpbmF0b3IsIElEQkZhY3RvcnlCYWNrZW5kSW1wbCogZmFjdG9yeSwgY29uc3QgU3Ry
aW5nJiB1bmlxdWVJZGVudGlmaWVyKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQkRhdGFiYXNl
QmFja2VuZEltcGw+IGNyZWF0ZShjb25zdCBTdHJpbmcmIG5hbWUsIElEQkJhY2tpbmdTdG9yZSog
ZGF0YWJhc2UsIElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3IqIGNvb3JkaW5hdG9yLCBJREJGYWN0
b3J5QmFja2VuZEltcGwqIGZhY3RvcnksIGNvbnN0IFN0cmluZyYgdW5pcXVlSWRlbnRpZmllciwg
Ym9vbCYgc3VjY2VzcykKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSURCRGF0
YWJhc2VCYWNrZW5kSW1wbChuYW1lLCBkYXRhYmFzZSwgY29vcmRpbmF0b3IsIGZhY3RvcnksIHVu
aXF1ZUlkZW50aWZpZXIpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJEYXRhYmFz
ZUJhY2tlbmRJbXBsKG5hbWUsIGRhdGFiYXNlLCBjb29yZGluYXRvciwgZmFjdG9yeSwgdW5pcXVl
SWRlbnRpZmllciwgc3VjY2VzcykpOwogICAgIH0KICAgICB2aXJ0dWFsIH5JREJEYXRhYmFzZUJh
Y2tlbmRJbXBsKCk7CiAKQEAgLTc3LDkgKzc3LDkgQEAgcHVibGljOgogICAgIHZvaWQgdHJhbnNh
Y3Rpb25GaW5pc2hlZChQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4p
OwogCiBwcml2YXRlOgotICAgIElEQkRhdGFiYXNlQmFja2VuZEltcGwoY29uc3QgU3RyaW5nJiBu
YW1lLCBJREJCYWNraW5nU3RvcmUqIGRhdGFiYXNlLCBJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9y
KiwgSURCRmFjdG9yeUJhY2tlbmRJbXBsKiwgY29uc3QgU3RyaW5nJiB1bmlxdWVJZGVudGlmaWVy
KTsKKyAgICBJREJEYXRhYmFzZUJhY2tlbmRJbXBsKGNvbnN0IFN0cmluZyYgbmFtZSwgSURCQmFj
a2luZ1N0b3JlKiBkYXRhYmFzZSwgSURCVHJhbnNhY3Rpb25Db29yZGluYXRvciosIElEQkZhY3Rv
cnlCYWNrZW5kSW1wbCosIGNvbnN0IFN0cmluZyYgdW5pcXVlSWRlbnRpZmllciwgYm9vbCYgc3Vj
Y2Vzcyk7CiAKLSAgICB2b2lkIG9wZW5JbnRlcm5hbCgpOworICAgIGJvb2wgb3BlbkludGVybmFs
KCk7CiAgICAgdm9pZCBsb2FkT2JqZWN0U3RvcmVzKCk7CiAgICAgdm9pZCBwcm9jZXNzUGVuZGlu
Z0NhbGxzKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJGYWN0b3J5QmFja2VuZEltcGwuY3BwCmluZGV4IGY1YjljODc3NDA2NzQzZjBlNWE2
MDlhNGNjZTlkNWU0ZGEyOWEzMWMuLmZhZjg1N2JhOGQ5ZjZhMmMzMmQyYzM0MWQ4N2E0OTZmNzRk
N2IxYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZh
Y3RvcnlCYWNrZW5kSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCRmFjdG9yeUJhY2tlbmRJbXBsLmNwcApAQCAtMTI4LDkgKzEyOCwxMyBAQCB2b2lkIElE
QkZhY3RvcnlCYWNrZW5kSW1wbDo6ZGVsZXRlRGF0YWJhc2UoY29uc3QgU3RyaW5nJiBuYW1lLCBQ
YXNzUmVmUHRyPElEQkNhbAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgUmVmUHRyPElE
QkRhdGFiYXNlQmFja2VuZEltcGw+IGRhdGFiYXNlQmFja2VuZCA9IElEQkRhdGFiYXNlQmFja2Vu
ZEltcGw6OmNyZWF0ZShuYW1lLCBiYWNraW5nU3RvcmUuZ2V0KCksIG1fdHJhbnNhY3Rpb25Db29y
ZGluYXRvci5nZXQoKSwgdGhpcywgdW5pcXVlSWRlbnRpZmllcik7Ci0gICAgbV9kYXRhYmFzZUJh
Y2tlbmRNYXAuc2V0KHVuaXF1ZUlkZW50aWZpZXIsIGRhdGFiYXNlQmFja2VuZC5nZXQoKSk7Ci0g
ICAgZGF0YWJhc2VCYWNrZW5kLT5kZWxldGVEYXRhYmFzZShjYWxsYmFja3MpOworICAgIGJvb2wg
c3VjY2VzcyA9IGZhbHNlOworICAgIFJlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbXBsPiBkYXRh
YmFzZUJhY2tlbmQgPSBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpjcmVhdGUobmFtZSwgYmFja2lu
Z1N0b3JlLmdldCgpLCBtX3RyYW5zYWN0aW9uQ29vcmRpbmF0b3IuZ2V0KCksIHRoaXMsIHVuaXF1
ZUlkZW50aWZpZXIsIHN1Y2Nlc3MpOworICAgIGlmIChzdWNjZXNzKSB7CisgICAgICAgIG1fZGF0
YWJhc2VCYWNrZW5kTWFwLnNldCh1bmlxdWVJZGVudGlmaWVyLCBkYXRhYmFzZUJhY2tlbmQuZ2V0
KCkpOworICAgICAgICBkYXRhYmFzZUJhY2tlbmQtPmRlbGV0ZURhdGFiYXNlKGNhbGxiYWNrcyk7
CisgICAgfSBlbHNlCisgICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9y
OjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVOS05PV05fRVJSLCAiSW50ZXJuYWwgZXJy
b3IuIikpOwogfQogCiBQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZT4gSURCRmFjdG9yeUJhY2tl
bmRJbXBsOjpvcGVuQmFja2luZ1N0b3JlKFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHNlY3Vy
aXR5T3JpZ2luLCBjb25zdCBTdHJpbmcmIGRhdGFEaXJlY3RvcnkpCkBAIC0xNzYsOSArMTgwLDEz
IEBAIHZvaWQgSURCRmFjdG9yeUJhY2tlbmRJbXBsOjpvcGVuSW50ZXJuYWwoY29uc3QgU3RyaW5n
JiBuYW1lLCBJREJDYWxsYmFja3MqIGNhbGxiCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW1wbD4gZGF0YWJhc2VCYWNrZW5kID0gSURCRGF0
YWJhc2VCYWNrZW5kSW1wbDo6Y3JlYXRlKG5hbWUsIGJhY2tpbmdTdG9yZS5nZXQoKSwgbV90cmFu
c2FjdGlvbkNvb3JkaW5hdG9yLmdldCgpLCB0aGlzLCB1bmlxdWVJZGVudGlmaWVyKTsKLSAgICBj
YWxsYmFja3MtPm9uU3VjY2VzcyhSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPihk
YXRhYmFzZUJhY2tlbmQuZ2V0KCkpLnJlbGVhc2UoKSk7Ci0gICAgbV9kYXRhYmFzZUJhY2tlbmRN
YXAuc2V0KHVuaXF1ZUlkZW50aWZpZXIsIGRhdGFiYXNlQmFja2VuZC5nZXQoKSk7CisgICAgYm9v
bCBzdWNjZXNzID0gZmFsc2U7CisgICAgUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEltcGw+IGRh
dGFiYXNlQmFja2VuZCA9IElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNyZWF0ZShuYW1lLCBiYWNr
aW5nU3RvcmUuZ2V0KCksIG1fdHJhbnNhY3Rpb25Db29yZGluYXRvci5nZXQoKSwgdGhpcywgdW5p
cXVlSWRlbnRpZmllciwgc3VjY2Vzcyk7CisgICAgaWYgKHN1Y2Nlc3MpIHsKKyAgICAgICAgY2Fs
bGJhY2tzLT5vblN1Y2Nlc3MoUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4oZGF0
YWJhc2VCYWNrZW5kLmdldCgpKS5yZWxlYXNlKCkpOworICAgICAgICBtX2RhdGFiYXNlQmFja2Vu
ZE1hcC5zZXQodW5pcXVlSWRlbnRpZmllciwgZGF0YWJhc2VCYWNrZW5kLmdldCgpKTsKKyAgICB9
IGVsc2UKKyAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0
ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VU5LTk9XTl9FUlIsICJJbnRlcm5hbCBlcnJvci4iKSk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJbXBsLmgKaW5kZXggNzk4MjE2
OGJlMzM3ZGM5NTZhMGI2NWJmMzhiMThkNDY4ZGUxYmJmOS4uYTM5ODllMmQzYTE3MDA4MDVmNzJi
ZTRhYmUwNjUwZmIwMTU2ZDI1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJbXBsLmgKQEAgLTUxLDkgKzUxLDkgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgfklEQkZhY3RvcnlCYWNrZW5kSW1wbCgpOwogCiAgICAgLy8g
Tm90aWZpY2F0aW9ucyBmcm9tIHdlYWsgcG9pbnRlcnMuCi0gICAgdm9pZCByZW1vdmVJREJEYXRh
YmFzZUJhY2tlbmQoY29uc3QgU3RyaW5nJiB1bmlxdWVJZGVudGlmaWVyKTsKKyAgICB2aXJ0dWFs
IHZvaWQgcmVtb3ZlSURCRGF0YWJhc2VCYWNrZW5kKGNvbnN0IFN0cmluZyYgdW5pcXVlSWRlbnRp
Zmllcik7CiAgICAgdm9pZCBhZGRJREJCYWNraW5nU3RvcmUoY29uc3QgU3RyaW5nJiBmaWxlSWRl
bnRpZmllciwgSURCQmFja2luZ1N0b3JlKik7Ci0gICAgdm9pZCByZW1vdmVJREJCYWNraW5nU3Rv
cmUoY29uc3QgU3RyaW5nJiBmaWxlSWRlbnRpZmllcik7CisgICAgdmlydHVhbCB2b2lkIHJlbW92
ZUlEQkJhY2tpbmdTdG9yZShjb25zdCBTdHJpbmcmIGZpbGVJZGVudGlmaWVyKTsKIAogICAgIHZp
cnR1YWwgdm9pZCBnZXREYXRhYmFzZU5hbWVzKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgUGFz
c1JlZlB0cjxTZWN1cml0eU9yaWdpbj4sIEZyYW1lKiwgY29uc3QgU3RyaW5nJiBkYXRhRGlyKTsK
IApAQCAtNjEsOSArNjEsMTEgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBvcGVuRnJvbVdv
cmtlcihjb25zdCBTdHJpbmcmIG5hbWUsIElEQkNhbGxiYWNrcyosIFBhc3NSZWZQdHI8U2VjdXJp
dHlPcmlnaW4+LCBXb3JrZXJDb250ZXh0KiwgY29uc3QgU3RyaW5nJiBkYXRhRGlyKTsKICAgICB2
aXJ0dWFsIHZvaWQgZGVsZXRlRGF0YWJhc2UoY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRy
PElEQkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+LCBGcmFtZSosIGNvbnN0
IFN0cmluZyYgZGF0YURpcik7CiAKLXByaXZhdGU6Citwcm90ZWN0ZWQ6CiAgICAgSURCRmFjdG9y
eUJhY2tlbmRJbXBsKCk7Ci0gICAgUGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmU+IG9wZW5CYWNr
aW5nU3RvcmUoUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4sIGNvbnN0IFN0cmluZyYgZGF0YURp
cik7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZT4gb3BlbkJhY2tpbmdT
dG9yZShQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiwgY29uc3QgU3RyaW5nJiBkYXRhRGlyKTsK
KworcHJpdmF0ZToKICAgICB2b2lkIG9wZW5JbnRlcm5hbChjb25zdCBTdHJpbmcmIG5hbWUsIElE
QkNhbGxiYWNrcyosIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+LCBjb25zdCBTdHJpbmcmIGRh
dGFEaXIpOwogCiAgICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgSURCRGF0YWJhc2VCYWNrZW5k
SW1wbCo+IElEQkRhdGFiYXNlQmFja2VuZE1hcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJCYWNraW5nU3RvcmUuaAppbmRleCBlMTdh
NmYxZmIyNzljMmExOTFmZWQzMzFjOTk3NjZkMTA2MmQ0NmY1Li5iNGNiN2FiYWUwNzRhMmMxYjAx
YzUzYjZjYzlmMjBlNzQ1N2IzMDVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJMZXZlbERCQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5oCkBAIC04MCw5ICs4MCwx
MCBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgYm9vbCBiYWNraW5nU3RvcmVFeGlzdHMoU2VjdXJp
dHlPcmlnaW4qLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgcGF0aEJhc2UpOwog
Ci1wcml2YXRlOgorcHJvdGVjdGVkOgogICAgIElEQkxldmVsREJCYWNraW5nU3RvcmUoY29uc3Qg
U3RyaW5nJiBpZGVudGlmaWVyLCBJREJGYWN0b3J5QmFja2VuZEltcGwqLCBQYXNzT3duUHRyPExl
dmVsREJEYXRhYmFzZT4pOwogCitwcml2YXRlOgogICAgIFN0cmluZyBtX2lkZW50aWZpZXI7CiAg
ICAgUmVmUHRyPElEQkZhY3RvcnlCYWNrZW5kSW1wbD4gbV9mYWN0b3J5OwogICAgIE93blB0cjxM
ZXZlbERCRGF0YWJhc2U+IG1fZGI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L1dlYktpdC5neXBpIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaQppbmRleCBi
YjJlM2JkMzJjOGE1ZDI2ZmEzZDRiMmZhNWVmNzZiNGU3YzYyOTNkLi4xYTg5YWI1MGRhMTlhMzky
MzlmYTAxMjg5YTAyMzhmYmY1MTJjZGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL1dlYktpdC5neXBpCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkK
QEAgLTEwNiw2ICsxMDYsNyBAQAogICAgICAgICAgICAgJ3Rlc3RzL0ZyYW1lVGVzdEhlbHBlcnMu
Y3BwJywKICAgICAgICAgICAgICd0ZXN0cy9GcmFtZVRlc3RIZWxwZXJzLmgnLAogICAgICAgICAg
ICAgJ3Rlc3RzL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bVRlc3QuY3BwJywKKyAgICAgICAgICAgICd0
ZXN0cy9JREJBYm9ydE9uQ29ycnVwdFRlc3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9JREJC
aW5kaW5nVXRpbGl0aWVzVGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL0lEQktleVBhdGhU
ZXN0LmNwcCcsCiAgICAgICAgICAgICAndGVzdHMvSURCTGV2ZWxEQkNvZGluZ1Rlc3QuY3BwJywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCQWJvcnRPbkNvcnJ1
cHRUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCQWJvcnRPbkNvcnJ1
cHRUZXN0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMGEwOGQ1OWU3ZTExZjBmNjVhZTAwOWFmN2JiZDc3M2Nk
MTEyNTZlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9J
REJBYm9ydE9uQ29ycnVwdFRlc3QuY3BwCkBAIC0wLDAgKzEsMTA3IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRT
IENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElU
UyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisg
KiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIklEQkZhY3RvcnlCYWNrZW5kSW1wbC5oIgorI2luY2x1
ZGUgIklEQkZha2VCYWNraW5nU3RvcmUuaCIKKyNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgor
I2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCisjaWYg
RU5BQkxFKElOREVYRURfREFUQUJBU0UpCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitu
YW1lc3BhY2UgeworCitjbGFzcyBNb2NrSURCQ2FsbGJhY2tzIDogcHVibGljIElEQkNhbGxiYWNr
cyB7CisgcHVibGljOgorICAgIE1vY2tJREJDYWxsYmFja3MoKSA6IG1fd2FzRXJyb3JDYWxsZWQo
ZmFsc2UpIHsgfQorCisgICAgdmlydHVhbCB+TW9ja0lEQkNhbGxiYWNrcygpCisgICAgeworICAg
ICAgICBFWFBFQ1RfVFJVRShtX3dhc0Vycm9yQ2FsbGVkKTsKKyAgICB9CisgICAgdmlydHVhbCB2
b2lkIG9uRXJyb3IoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUVycm9yPikKKyAgICB7CisgICAgICAg
IG1fd2FzRXJyb3JDYWxsZWQgPSB0cnVlOworICAgIH0KKyAgICB2aXJ0dWFsIHZvaWQgb25TdWNj
ZXNzKFBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4pIHsgfQorICAgIHZpcnR1YWwgdm9pZCBvblN1
Y2Nlc3MoUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlPikgeyB9CisgICAgdmly
dHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFj
ZT4pCisgICAgeworICAgICAgICBFWFBFQ1RfVFJVRShmYWxzZSk7CisgICAgfQorICAgIHZpcnR1
YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJLZXk+KSB7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPikg
eyB9CisgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4pIHsgfQorICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3NXaXRoQ29udGludWF0aW9u
KCkgeyB9CisgICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vzc1dpdGhQcmVmZXRjaChjb25zdCBWZWN0
b3I8UmVmUHRyPElEQktleT4gPiYsIGNvbnN0IFZlY3RvcjxSZWZQdHI8SURCS2V5PiA+JiwgY29u
c3QgVmVjdG9yPFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+ID4mKSB7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgb25CbG9ja2VkKCkgeyB9Citwcml2YXRlOgorICAgIGJvb2wgbV93YXNFcnJvckNh
bGxlZDsKK307CisKK2NsYXNzIEZhaWxpbmdCYWNraW5nU3RvcmUgOiBwdWJsaWMgSURCRmFrZUJh
Y2tpbmdTdG9yZSB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+RmFpbGluZ0JhY2tpbmdTdG9yZSgp
IHsgfQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZT4gb3BlbigpCisgICAg
eworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEZhaWxpbmdCYWNraW5nU3RvcmUpOworICAg
IH0KKyAgICB2aXJ0dWFsIGJvb2wgY3JlYXRlSURCRGF0YWJhc2VNZXRhRGF0YShjb25zdCBTdHJp
bmcmLCBjb25zdCBTdHJpbmcmLCBpbnQ2NF90JikKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9Cit9OworCitjbGFzcyBGYWlsaW5nSURCRmFjdG9yeUJhY2tlbmRJbXBsIDogcHVi
bGljIElEQkZhY3RvcnlCYWNrZW5kSW1wbCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+RmFpbGlu
Z0lEQkZhY3RvcnlCYWNrZW5kSW1wbCgpIHsgfQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZhaWxp
bmdJREJGYWN0b3J5QmFja2VuZEltcGw+IGNyZWF0ZSgpCisgICAgeworICAgICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IEZhaWxpbmdJREJGYWN0b3J5QmFja2VuZEltcGwpOworICAgIH0KKyAgICB2
aXJ0dWFsIHZvaWQgcmVtb3ZlSURCRGF0YWJhc2VCYWNrZW5kKGNvbnN0IFdURjo6U3RyaW5nICYp
IHsgfQorCitwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9y
ZT4gb3BlbkJhY2tpbmdTdG9yZShQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBwcnBPcmlnaW4s
IGNvbnN0IFN0cmluZyYgZGF0YURpcikKKyAgICB7CisgICAgICAgIHJldHVybiBGYWlsaW5nQmFj
a2luZ1N0b3JlOjpvcGVuKCk7CisgICAgfQorfTsKKworVEVTVChJREJBYm9ydFRlc3QsIFRoZVRl
c3QpCit7CisgICAgUmVmUHRyPElEQkZhY3RvcnlCYWNrZW5kSW1wbD4gZmFjdG9yeSA9IEZhaWxp
bmdJREJGYWN0b3J5QmFja2VuZEltcGw6OmNyZWF0ZSgpOworICAgIGNvbnN0IFN0cmluZyYgbmFt
ZSA9ICJkYiBuYW1lIjsKKyAgICBNb2NrSURCQ2FsbGJhY2tzIGNhbGxiYWNrczsKKyAgICBSZWZQ
dHI8U2VjdXJpdHlPcmlnaW4+IG9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoImh0dHAi
LCAibG9jYWxob3N0IiwgODEpOworICAgIGZhY3RvcnktPm9wZW4obmFtZSwgJmNhbGxiYWNrcywg
b3JpZ2luLCAwIC8qRnJhbWUqLywgU3RyaW5nKCkgLypwYXRoKi8pOworfQorCit9IC8vIG5hbWVz
cGFjZQorCisjZW5kaWYgLy8gRU5BQkxFKElOREVYRURfREFUQUJBU0UpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQkZha2VCYWNraW5nU3RvcmUuaCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCRmFrZUJhY2tpbmdTdG9yZS5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjdhYjVmNWEwNWMwZjFmOGU5MDg1NzJlMzdjY2M0YzQ5ODUzYzExMjEKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQkZha2VCYWNraW5nU3RvcmUuaApA
QCAtMCwwICsxLDgwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBJREJGYWtlQmFja2luZ1N0b3JlX2gKKyNk
ZWZpbmUgSURCRmFrZUJhY2tpbmdTdG9yZV9oCisKKyNpbmNsdWRlICJJREJCYWNraW5nU3RvcmUu
aCIKKworI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRB
QkFTRSkKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBJREJGYWtlQmFja2luZ1N0b3Jl
IDogcHVibGljIElEQkJhY2tpbmdTdG9yZSB7CitwdWJsaWM6CisgICAgdmlydHVhbCB2b2lkIGdl
dERhdGFiYXNlTmFtZXMoVmVjdG9yPFN0cmluZz4mIGZvdW5kTmFtZXMpIE9WRVJSSURFIHsgfQor
ICAgIHZpcnR1YWwgYm9vbCBnZXRJREJEYXRhYmFzZU1ldGFEYXRhKGNvbnN0IFN0cmluZyYgbmFt
ZSwgU3RyaW5nJiBmb3VuZFZlcnNpb24sIGludDY0X3QmIGZvdW5kSWQpIE9WRVJSSURFIHsgcmV0
dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGNyZWF0ZUlEQkRhdGFiYXNlTWV0YURhdGEo
Y29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZlcnNpb24sIGludDY0X3QmIHJvd0lk
KSBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBib29sIHVwZGF0ZUlEQkRh
dGFiYXNlTWV0YURhdGEoaW50NjRfdCByb3dJZCwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uKSBPVkVS
UklERSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBkZWxldGVEYXRhYmFzZShj
b25zdCBTdHJpbmcmIG5hbWUpIE9WRVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9CisKKyAgICB2aXJ0
dWFsIHZvaWQgZ2V0T2JqZWN0U3RvcmVzKGludDY0X3QgZGF0YWJhc2VJZCwgVmVjdG9yPGludDY0
X3Q+JiBmb3VuZElkcywgVmVjdG9yPFN0cmluZz4mIGZvdW5kTmFtZXMsIFZlY3RvcjxTdHJpbmc+
JiBmb3VuZEtleVBhdGhzLCBWZWN0b3I8Ym9vbD4mIGZvdW5kQXV0b0luY3JlbWVudEZsYWdzKSBP
VkVSUklERSB7IH0KKyAgICB2aXJ0dWFsIGJvb2wgY3JlYXRlT2JqZWN0U3RvcmUoaW50NjRfdCBk
YXRhYmFzZUlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9v
bCBhdXRvSW5jcmVtZW50LCBpbnQ2NF90JiBhc3NpZ25lZE9iamVjdFN0b3JlSWQpIE9WRVJSSURF
IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCB2b2lkIGRlbGV0ZU9iamVjdFN0b3JlKGlu
dDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkKSBPVkVSUklERSB7IH0KKwor
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxPYmplY3RTdG9yZVJlY29yZElkZW50aWZpZXI+IGNyZWF0
ZUludmFsaWRSZWNvcmRJZGVudGlmaWVyKCkgT1ZFUlJJREUgeyByZXR1cm4gUGFzc1JlZlB0cjxP
YmplY3RTdG9yZVJlY29yZElkZW50aWZpZXI+KCk7IH0KKworICAgIHZpcnR1YWwgU3RyaW5nIGdl
dE9iamVjdFN0b3JlUmVjb3JkKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9y
ZUlkLCBjb25zdCBJREJLZXkmKSBPVkVSUklERSB7IHJldHVybiBTdHJpbmcoKTsgfQorICAgIHZp
cnR1YWwgYm9vbCBwdXRPYmplY3RTdG9yZVJlY29yZChpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0
X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgSURCS2V5JiwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgT2Jq
ZWN0U3RvcmVSZWNvcmRJZGVudGlmaWVyKikgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgY2xlYXJPYmplY3RTdG9yZShpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0
X3Qgb2JqZWN0U3RvcmVJZCkgT1ZFUlJJREUgeyB9CisgICAgdmlydHVhbCB2b2lkIGRlbGV0ZU9i
amVjdFN0b3JlUmVjb3JkKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlk
LCBjb25zdCBPYmplY3RTdG9yZVJlY29yZElkZW50aWZpZXIqKSBPVkVSUklERSB7IH0KKyAgICB2
aXJ0dWFsIGludDY0X3QgbmV4dEF1dG9JbmNyZW1lbnROdW1iZXIoaW50NjRfdCBkYXRhYmFzZUlk
LCBpbnQ2NF90IG9iamVjdFN0b3JlSWQpIE9WRVJSSURFIHsgcmV0dXJuIDAuMDsgfQorICAgIHZp
cnR1YWwgYm9vbCBrZXlFeGlzdHNJbk9iamVjdFN0b3JlKGludDY0X3QgZGF0YWJhc2VJZCwgaW50
NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBJREJLZXkmLCBPYmplY3RTdG9yZVJlY29yZElkZW50
aWZpZXIqIGZvdW5kUmVjb3JkSWRlbnRpZmllcikgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7IH0K
KworICAgIHZpcnR1YWwgYm9vbCBmb3JFYWNoT2JqZWN0U3RvcmVSZWNvcmQoaW50NjRfdCBkYXRh
YmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIE9iamVjdFN0b3JlUmVjb3JkQ2FsbGJhY2sm
KSBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfQorCisgICAgdmlydHVhbCB2b2lkIGdldEluZGV4
ZXMoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIFZlY3RvcjxpbnQ2
NF90PiYgZm91bmRJZHMsIFZlY3RvcjxTdHJpbmc+JiBmb3VuZE5hbWVzLCBWZWN0b3I8U3RyaW5n
PiYgZm91bmRLZXlQYXRocywgVmVjdG9yPGJvb2w+JiBmb3VuZFVuaXF1ZUZsYWdzLCBWZWN0b3I8
Ym9vbD4mIGZvdW5kTXVsdGlFbnRyeUZsYWdzKSBPVkVSUklERSB7IH0KKyAgICB2aXJ0dWFsIGJv
b2wgY3JlYXRlSW5kZXgoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQs
IGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIGlzVW5pcXVl
LCBib29sIGlzTXVsdGlFbnRyeSwgaW50NjRfdCYgaW5kZXhJZCkgT1ZFUlJJREUgeyByZXR1cm4g
ZmFsc2U7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlSW5kZXgoaW50NjRfdCBkYXRhYmFzZUlk
LCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCkgT1ZFUlJJREUgeyB9Cisg
ICAgdmlydHVhbCBib29sIHB1dEluZGV4RGF0YUZvclJlY29yZChpbnQ2NF90IGRhdGFiYXNlSWQs
IGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBJREJLZXkmLCBj
b25zdCBPYmplY3RTdG9yZVJlY29yZElkZW50aWZpZXIqKSBPVkVSUklERSB7IHJldHVybiBmYWxz
ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBkZWxldGVJbmRleERhdGFGb3JSZWNvcmQoaW50NjRfdCBk
YXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3Qg
T2JqZWN0U3RvcmVSZWNvcmRJZGVudGlmaWVyKikgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7IH0K
KyAgICB2aXJ0dWFsIFN0cmluZyBnZXRPYmplY3RWaWFJbmRleChpbnQ2NF90IGRhdGFiYXNlSWQs
IGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBJREJLZXkmKSBP
VkVSUklERSB7IHJldHVybiBTdHJpbmcoKTsgfQorICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJL
ZXk+IGdldFByaW1hcnlLZXlWaWFJbmRleChpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2Jq
ZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBJREJLZXkmKSBPVkVSUklERSB7IHJl
dHVybiBQYXNzUmVmUHRyPElEQktleT4oKTsgfQorICAgIHZpcnR1YWwgYm9vbCBrZXlFeGlzdHNJ
bkluZGV4KGludDY0X3QgZGF0YWJhc2VpZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90
IGluZGV4SWQsIGNvbnN0IElEQktleSYgaW5kZXhLZXksIFJlZlB0cjxJREJLZXk+JiBmb3VuZFBy
aW1hcnlLZXkpIE9WRVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9CisKKyAgICB2aXJ0dWFsIFBhc3NS
ZWZQdHI8Q3Vyc29yPiBvcGVuT2JqZWN0U3RvcmVDdXJzb3IoaW50NjRfdCBkYXRhYmFzZUlkLCBp
bnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IElEQktleVJhbmdlKiwgSURCQ3Vyc29yOjpEaXJl
Y3Rpb24pIE9WRVJSSURFIHsgcmV0dXJuIFBhc3NSZWZQdHI8Q3Vyc29yPigpOyB9CisgICAgdmly
dHVhbCBQYXNzUmVmUHRyPEN1cnNvcj4gb3BlbkluZGV4S2V5Q3Vyc29yKGludDY0X3QgZGF0YWJh
c2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IElEQktl
eVJhbmdlKiwgSURCQ3Vyc29yOjpEaXJlY3Rpb24pIE9WRVJSSURFIHsgcmV0dXJuIFBhc3NSZWZQ
dHI8Q3Vyc29yPigpOyB9CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPEN1cnNvcj4gb3BlbkluZGV4
Q3Vyc29yKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90
IGluZGV4SWQsIGNvbnN0IElEQktleVJhbmdlKiwgSURCQ3Vyc29yOjpEaXJlY3Rpb24pIE9WRVJS
SURFIHsgcmV0dXJuIFBhc3NSZWZQdHI8Q3Vyc29yPigpOyB9CisKKyAgICB2aXJ0dWFsIFBhc3NS
ZWZQdHI8VHJhbnNhY3Rpb24+IGNyZWF0ZVRyYW5zYWN0aW9uKCkgT1ZFUlJJREUgeyByZXR1cm4g
UGFzc1JlZlB0cjxUcmFuc2FjdGlvbj4oKTsgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCisjZW5kaWYgLy8gRU5BQkxFKElOREVYRURfREFUQUJBU0UpCisKKyNlbmRpZiAvLyBJREJG
YWtlQmFja2luZ1N0b3JlX2gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>142655</attachid>
            <date>2012-05-18 00:38:39 -0700</date>
            <delta_ts>2012-05-21 15:19:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-85579-20120518003838.patch</filename>
            <type>text/plain</type>
            <size>23347</size>
            <attacher name="David Grogan">dgrogan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE3MDg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzg4MmJhNGMwZjg1ODNm
MDAyZmNlZWIzZDIxZGIxMzZjN2JjZWRjNi4uNDY3OWJlNjNmZGMzMDY1YzI0ZGQyYWRhNGFmNDIy
Yjc4YzM3OWE4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEyLTA1LTE4ICBEYXZp
ZCBHcm9nYW4gIDxkZ3JvZ2FuQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IEZp
cmUgZXJyb3Igd2hlbiB0aGVyZSBhcmUgcHJvYmxlbXMgb3BlbmluZyBhIERCCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NTU3OQorCisgICAgICAgIFdl
IHVzZWQgdG8gZWl0aGVyIGZpcmUgc3VjY2VzcyBvciBnZXQgaW50byBhbiBpbmZpbml0ZSBsb29w
LgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5ldyB1
bml0IHRlc3QgaW4KKyAgICAgICAgU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJBYm9y
dE9uQ29ycnVwdFRlc3QuY3BwCisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRh
YmFzZUJhY2tlbmRJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2Vu
ZEltcGw6OklEQkRhdGFiYXNlQmFja2VuZEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0
YWJhc2VCYWNrZW5kSW1wbDo6b3BlbkludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRh
dGFiYXNlQmFja2VuZEltcGw6Om9wZW5Db25uZWN0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmg6CisgICAgICAgIChXZWJDb3JlOjpJREJE
YXRhYmFzZUJhY2tlbmRJbXBsOjpjcmVhdGUpOgorICAgICAgICAoSURCRGF0YWJhc2VCYWNrZW5k
SW1wbCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJbXBs
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkZhY3RvcnlCYWNrZW5kSW1wbDo6ZGVsZXRlRGF0
YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6SURCRmFjdG9yeUJhY2tlbmRJbXBsOjpvcGVuSW50
ZXJuYWwpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnlCYWNrZW5kSW1w
bC5oOgorICAgICAgICAoSURCRmFjdG9yeUJhY2tlbmRJbXBsKToKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9JREJMZXZlbERCQmFja2luZ1N0b3JlLmg6CisgICAgICAgIChJREJMZXZlbERC
QmFja2luZ1N0b3JlKToKKwogMjAxMi0wNS0xNSAgUm9iIEJ1aXMgIDxyYnVpc0ByaW0uY29tPgog
CiAgICAgICAgIFJlZmFjdG9yIFNWRyBwYXJ0cyBvZiBOb2RlOjphZGRFdmVudExpc3RlbmVyL3Jl
bW92ZUV2ZW50TGlzdGVuZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggNWRhYWY5NjY3
MzhiYWI2MWJjODJlZGIyYTdlYzljZTU0NDcyN2QxYy4uZGFiYTk0MDc5ODk3MWU0ZjkxMTIxMTlh
MjljMTdmMDMxYjY0NTU0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwz
NSBAQAorMjAxMi0wNS0xOCAgRGF2aWQgR3JvZ2FuICA8ZGdyb2dhbkBjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgSW5kZXhlZERCOiBGaXJlIGVycm9yIHdoZW4gdGhlcmUgYXJlIHByb2JsZW1zIG9w
ZW5pbmcgYSBEQgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9ODU1NzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIFdlYktpdC5neXBpOgorICAgICAgICAqIHRlc3RzL0lEQkFib3J0T25Db3JydXB0VGVzdC5j
cHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChNb2NrSURCQ2FsbGJhY2tz
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tJREJDYWxsYmFja3M6Ok1vY2tJREJDYWxsYmFja3Mp
OgorICAgICAgICAoV2ViQ29yZTo6TW9ja0lEQkNhbGxiYWNrczo6fk1vY2tJREJDYWxsYmFja3Mp
OgorICAgICAgICAoV2ViQ29yZTo6TW9ja0lEQkNhbGxiYWNrczo6b25FcnJvcik6CisgICAgICAg
IChXZWJDb3JlOjpNb2NrSURCQ2FsbGJhY2tzOjpvblN1Y2Nlc3MpOgorICAgICAgICAoV2ViQ29y
ZTo6TW9ja0lEQkNhbGxiYWNrczo6b25TdWNjZXNzV2l0aENvbnRpbnVhdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpNb2NrSURCQ2FsbGJhY2tzOjpvblN1Y2Nlc3NXaXRoUHJlZmV0Y2gpOgorICAg
ICAgICAoV2ViQ29yZTo6TW9ja0lEQkNhbGxiYWNrczo6b25CbG9ja2VkKToKKyAgICAgICAgKEZh
aWxpbmdCYWNraW5nU3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6RmFpbGluZ0JhY2tpbmdTdG9y
ZTo6fkZhaWxpbmdCYWNraW5nU3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6RmFpbGluZ0JhY2tp
bmdTdG9yZTo6b3Blbik6CisgICAgICAgIChXZWJDb3JlOjpGYWlsaW5nQmFja2luZ1N0b3JlOjpj
cmVhdGVJREJEYXRhYmFzZU1ldGFEYXRhKToKKyAgICAgICAgKEZhaWxpbmdJREJGYWN0b3J5QmFj
a2VuZEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6RmFpbGluZ0lEQkZhY3RvcnlCYWNrZW5kSW1w
bDo6fkZhaWxpbmdJREJGYWN0b3J5QmFja2VuZEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6RmFp
bGluZ0lEQkZhY3RvcnlCYWNrZW5kSW1wbDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZh
aWxpbmdJREJGYWN0b3J5QmFja2VuZEltcGw6OnJlbW92ZUlEQkRhdGFiYXNlQmFja2VuZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpGYWlsaW5nSURCRmFjdG9yeUJhY2tlbmRJbXBsOjpvcGVuQmFja2lu
Z1N0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlRFU1QpOgorICAgICAgICAqIHRlc3RzL0lEQkZh
a2VCYWNraW5nU3RvcmUuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5oLgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgIChJREJGYWtlQmFja2luZ1N0b3JlKToKKwogMjAxMi0wNS0xNSAgSGFucyBXZW5uYm9yZyAg
PGhhbnNAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFNwZWVjaCBKYXZhU2NyaXB0IEFQSTogSW50
cm9kdWNlIGVycm9yIGNvZGUgZW51bSBpbiBDaHJvbWl1bSBwbHVtYmluZwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJ
bXBsLmNwcAppbmRleCBiMDViMzI4NjNkMDcyZmI2NTdkY2E5YzhkNjRlMGI4NTFhZDA5MjQ1Li4z
NDY4ZGI3ZTY5MDBlYzUyODI4ZDc0YTM0NjgyZjc5MGZhYTIyMjQ2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJ
bXBsLmNwcApAQCAtOTMsNyArOTMsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxJREJEYXRhYmFz
ZUNhbGxiYWNrcz4gbV9kYXRhYmFzZUNhbGxiYWNrczsKIH07CiAKLUlEQkRhdGFiYXNlQmFja2Vu
ZEltcGw6OklEQkRhdGFiYXNlQmFja2VuZEltcGwoY29uc3QgU3RyaW5nJiBuYW1lLCBJREJCYWNr
aW5nU3RvcmUqIGJhY2tpbmdTdG9yZSwgSURCVHJhbnNhY3Rpb25Db29yZGluYXRvciogY29vcmRp
bmF0b3IsIElEQkZhY3RvcnlCYWNrZW5kSW1wbCogZmFjdG9yeSwgY29uc3QgU3RyaW5nJiB1bmlx
dWVJZGVudGlmaWVyKQorSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6SURCRGF0YWJhc2VCYWNrZW5k
SW1wbChjb25zdCBTdHJpbmcmIG5hbWUsIElEQkJhY2tpbmdTdG9yZSogYmFja2luZ1N0b3JlLCBJ
REJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yKiBjb29yZGluYXRvciwgSURCRmFjdG9yeUJhY2tlbmRJ
bXBsKiBmYWN0b3J5LCBjb25zdCBTdHJpbmcmIHVuaXF1ZUlkZW50aWZpZXIsIGJvb2wmIHN1Y2Nl
c3MpCiAgICAgOiBtX2JhY2tpbmdTdG9yZShiYWNraW5nU3RvcmUpCiAgICAgLCBtX2lkKEludmFs
aWRJZCkKICAgICAsIG1fbmFtZShuYW1lKQpAQCAtMTAzLDE5ICsxMDMsMTggQEAgSURCRGF0YWJh
c2VCYWNrZW5kSW1wbDo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbChjb25zdCBTdHJpbmcmIG5hbWUs
IElEQkJhY2tpbmdTdG8KICAgICAsIG1fdHJhbnNhY3Rpb25Db29yZGluYXRvcihjb29yZGluYXRv
cikKIHsKICAgICBBU1NFUlQoIW1fbmFtZS5pc051bGwoKSk7Ci0gICAgb3BlbkludGVybmFsKCk7
CisgICAgc3VjY2VzcyA9IG9wZW5JbnRlcm5hbCgpOwogfQogCi12b2lkIElEQkRhdGFiYXNlQmFj
a2VuZEltcGw6Om9wZW5JbnRlcm5hbCgpCitib29sIElEQkRhdGFiYXNlQmFja2VuZEltcGw6Om9w
ZW5JbnRlcm5hbCgpCiB7CiAgICAgYm9vbCBzdWNjZXNzID0gbV9iYWNraW5nU3RvcmUtPmdldElE
QkRhdGFiYXNlTWV0YURhdGEobV9uYW1lLCBtX3ZlcnNpb24sIG1faWQpOwogICAgIEFTU0VSVChz
dWNjZXNzID09IChtX2lkICE9IEludmFsaWRJZCkpOwogICAgIGlmIChzdWNjZXNzKSB7CiAgICAg
ICAgIGxvYWRPYmplY3RTdG9yZXMoKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICB9Ci0gICAgaWYgKCFtX2JhY2tpbmdTdG9yZS0+Y3JlYXRlSURCRGF0YWJhc2VN
ZXRhRGF0YShtX25hbWUsIG1fdmVyc2lvbiwgbV9pZCkpCi0gICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOyAvLyBGSVhNRTogTmVlZCBiZXR0ZXIgZXJyb3IgaGFuZGxpbmcuCisgICAgcmV0dXJu
IG1fYmFja2luZ1N0b3JlLT5jcmVhdGVJREJEYXRhYmFzZU1ldGFEYXRhKG1fbmFtZSwgbV92ZXJz
aW9uLCBtX2lkKTsKIH0KIAogSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6fklEQkRhdGFiYXNlQmFj
a2VuZEltcGwoKQpAQCAtMzI1LDkgKzMyNCwxMCBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZElt
cGw6Om9wZW5Db25uZWN0aW9uKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiAg
ICAgaWYgKCFtX3BlbmRpbmdEZWxldGVDYWxscy5pc0VtcHR5KCkgfHwgbV9ydW5uaW5nVmVyc2lv
bkNoYW5nZVRyYW5zYWN0aW9uIHx8ICFtX3BlbmRpbmdTZXRWZXJzaW9uQ2FsbHMuaXNFbXB0eSgp
KQogICAgICAgICBtX3BlbmRpbmdPcGVuQ2FsbHMuYXBwZW5kKFBlbmRpbmdPcGVuQ2FsbDo6Y3Jl
YXRlKGNhbGxiYWNrcykpOwogICAgIGVsc2UgewotICAgICAgICBpZiAobV9pZCA9PSBJbnZhbGlk
SWQpCi0gICAgICAgICAgICBvcGVuSW50ZXJuYWwoKTsKLSAgICAgICAgY2FsbGJhY2tzLT5vblN1
Y2Nlc3ModGhpcyk7CisgICAgICAgIGlmIChtX2lkID09IEludmFsaWRJZCAmJiAhb3BlbkludGVy
bmFsKCkpCisgICAgICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6
Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVTktOT1dOX0VSUiwgIkludGVybmFsIGVycm9y
LiIpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY2FsbGJhY2tzLT5vblN1Y2Nlc3ModGhp
cyk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmgKaW5kZXggMTA4NmViMTZlYjg3ZDE5ZjAy
OGUzZjRjOGM0N2I5MDVkODY3OGYwNS4uM2NjOTE2NjRmNjk5OTg3NDNiZWZkYWQ2MTViMjIwYTA2
Mzg1YzA5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
RGF0YWJhc2VCYWNrZW5kSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuaApAQCAtNDUsOSArNDUsOSBAQCBjbGFzcyBJREJU
cmFuc2FjdGlvbkNvb3JkaW5hdG9yOwogCiBjbGFzcyBJREJEYXRhYmFzZUJhY2tlbmRJbXBsIDog
cHVibGljIElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW1wbD4gY3JlYXRlKGNvbnN0IFN0cmluZyYg
bmFtZSwgSURCQmFja2luZ1N0b3JlKiBkYXRhYmFzZSwgSURCVHJhbnNhY3Rpb25Db29yZGluYXRv
ciogY29vcmRpbmF0b3IsIElEQkZhY3RvcnlCYWNrZW5kSW1wbCogZmFjdG9yeSwgY29uc3QgU3Ry
aW5nJiB1bmlxdWVJZGVudGlmaWVyKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQkRhdGFiYXNl
QmFja2VuZEltcGw+IGNyZWF0ZShjb25zdCBTdHJpbmcmIG5hbWUsIElEQkJhY2tpbmdTdG9yZSog
ZGF0YWJhc2UsIElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3IqIGNvb3JkaW5hdG9yLCBJREJGYWN0
b3J5QmFja2VuZEltcGwqIGZhY3RvcnksIGNvbnN0IFN0cmluZyYgdW5pcXVlSWRlbnRpZmllciwg
Ym9vbCYgc3VjY2VzcykKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSURCRGF0
YWJhc2VCYWNrZW5kSW1wbChuYW1lLCBkYXRhYmFzZSwgY29vcmRpbmF0b3IsIGZhY3RvcnksIHVu
aXF1ZUlkZW50aWZpZXIpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJEYXRhYmFz
ZUJhY2tlbmRJbXBsKG5hbWUsIGRhdGFiYXNlLCBjb29yZGluYXRvciwgZmFjdG9yeSwgdW5pcXVl
SWRlbnRpZmllciwgc3VjY2VzcykpOwogICAgIH0KICAgICB2aXJ0dWFsIH5JREJEYXRhYmFzZUJh
Y2tlbmRJbXBsKCk7CiAKQEAgLTc3LDkgKzc3LDkgQEAgcHVibGljOgogICAgIHZvaWQgdHJhbnNh
Y3Rpb25GaW5pc2hlZChQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4p
OwogCiBwcml2YXRlOgotICAgIElEQkRhdGFiYXNlQmFja2VuZEltcGwoY29uc3QgU3RyaW5nJiBu
YW1lLCBJREJCYWNraW5nU3RvcmUqIGRhdGFiYXNlLCBJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9y
KiwgSURCRmFjdG9yeUJhY2tlbmRJbXBsKiwgY29uc3QgU3RyaW5nJiB1bmlxdWVJZGVudGlmaWVy
KTsKKyAgICBJREJEYXRhYmFzZUJhY2tlbmRJbXBsKGNvbnN0IFN0cmluZyYgbmFtZSwgSURCQmFj
a2luZ1N0b3JlKiBkYXRhYmFzZSwgSURCVHJhbnNhY3Rpb25Db29yZGluYXRvciosIElEQkZhY3Rv
cnlCYWNrZW5kSW1wbCosIGNvbnN0IFN0cmluZyYgdW5pcXVlSWRlbnRpZmllciwgYm9vbCYgc3Vj
Y2Vzcyk7CiAKLSAgICB2b2lkIG9wZW5JbnRlcm5hbCgpOworICAgIGJvb2wgb3BlbkludGVybmFs
KCk7CiAgICAgdm9pZCBsb2FkT2JqZWN0U3RvcmVzKCk7CiAgICAgdm9pZCBwcm9jZXNzUGVuZGlu
Z0NhbGxzKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJGYWN0b3J5QmFja2VuZEltcGwuY3BwCmluZGV4IGY1YjljODc3NDA2NzQzZjBlNWE2
MDlhNGNjZTlkNWU0ZGEyOWEzMWMuLmZhZjg1N2JhOGQ5ZjZhMmMzMmQyYzM0MWQ4N2E0OTZmNzRk
N2IxYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZh
Y3RvcnlCYWNrZW5kSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCRmFjdG9yeUJhY2tlbmRJbXBsLmNwcApAQCAtMTI4LDkgKzEyOCwxMyBAQCB2b2lkIElE
QkZhY3RvcnlCYWNrZW5kSW1wbDo6ZGVsZXRlRGF0YWJhc2UoY29uc3QgU3RyaW5nJiBuYW1lLCBQ
YXNzUmVmUHRyPElEQkNhbAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgUmVmUHRyPElE
QkRhdGFiYXNlQmFja2VuZEltcGw+IGRhdGFiYXNlQmFja2VuZCA9IElEQkRhdGFiYXNlQmFja2Vu
ZEltcGw6OmNyZWF0ZShuYW1lLCBiYWNraW5nU3RvcmUuZ2V0KCksIG1fdHJhbnNhY3Rpb25Db29y
ZGluYXRvci5nZXQoKSwgdGhpcywgdW5pcXVlSWRlbnRpZmllcik7Ci0gICAgbV9kYXRhYmFzZUJh
Y2tlbmRNYXAuc2V0KHVuaXF1ZUlkZW50aWZpZXIsIGRhdGFiYXNlQmFja2VuZC5nZXQoKSk7Ci0g
ICAgZGF0YWJhc2VCYWNrZW5kLT5kZWxldGVEYXRhYmFzZShjYWxsYmFja3MpOworICAgIGJvb2wg
c3VjY2VzcyA9IGZhbHNlOworICAgIFJlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbXBsPiBkYXRh
YmFzZUJhY2tlbmQgPSBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpjcmVhdGUobmFtZSwgYmFja2lu
Z1N0b3JlLmdldCgpLCBtX3RyYW5zYWN0aW9uQ29vcmRpbmF0b3IuZ2V0KCksIHRoaXMsIHVuaXF1
ZUlkZW50aWZpZXIsIHN1Y2Nlc3MpOworICAgIGlmIChzdWNjZXNzKSB7CisgICAgICAgIG1fZGF0
YWJhc2VCYWNrZW5kTWFwLnNldCh1bmlxdWVJZGVudGlmaWVyLCBkYXRhYmFzZUJhY2tlbmQuZ2V0
KCkpOworICAgICAgICBkYXRhYmFzZUJhY2tlbmQtPmRlbGV0ZURhdGFiYXNlKGNhbGxiYWNrcyk7
CisgICAgfSBlbHNlCisgICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9y
OjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVOS05PV05fRVJSLCAiSW50ZXJuYWwgZXJy
b3IuIikpOwogfQogCiBQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZT4gSURCRmFjdG9yeUJhY2tl
bmRJbXBsOjpvcGVuQmFja2luZ1N0b3JlKFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHNlY3Vy
aXR5T3JpZ2luLCBjb25zdCBTdHJpbmcmIGRhdGFEaXJlY3RvcnkpCkBAIC0xNzYsOSArMTgwLDEz
IEBAIHZvaWQgSURCRmFjdG9yeUJhY2tlbmRJbXBsOjpvcGVuSW50ZXJuYWwoY29uc3QgU3RyaW5n
JiBuYW1lLCBJREJDYWxsYmFja3MqIGNhbGxiCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW1wbD4gZGF0YWJhc2VCYWNrZW5kID0gSURCRGF0
YWJhc2VCYWNrZW5kSW1wbDo6Y3JlYXRlKG5hbWUsIGJhY2tpbmdTdG9yZS5nZXQoKSwgbV90cmFu
c2FjdGlvbkNvb3JkaW5hdG9yLmdldCgpLCB0aGlzLCB1bmlxdWVJZGVudGlmaWVyKTsKLSAgICBj
YWxsYmFja3MtPm9uU3VjY2VzcyhSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPihk
YXRhYmFzZUJhY2tlbmQuZ2V0KCkpLnJlbGVhc2UoKSk7Ci0gICAgbV9kYXRhYmFzZUJhY2tlbmRN
YXAuc2V0KHVuaXF1ZUlkZW50aWZpZXIsIGRhdGFiYXNlQmFja2VuZC5nZXQoKSk7CisgICAgYm9v
bCBzdWNjZXNzID0gZmFsc2U7CisgICAgUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEltcGw+IGRh
dGFiYXNlQmFja2VuZCA9IElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNyZWF0ZShuYW1lLCBiYWNr
aW5nU3RvcmUuZ2V0KCksIG1fdHJhbnNhY3Rpb25Db29yZGluYXRvci5nZXQoKSwgdGhpcywgdW5p
cXVlSWRlbnRpZmllciwgc3VjY2Vzcyk7CisgICAgaWYgKHN1Y2Nlc3MpIHsKKyAgICAgICAgY2Fs
bGJhY2tzLT5vblN1Y2Nlc3MoUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4oZGF0
YWJhc2VCYWNrZW5kLmdldCgpKS5yZWxlYXNlKCkpOworICAgICAgICBtX2RhdGFiYXNlQmFja2Vu
ZE1hcC5zZXQodW5pcXVlSWRlbnRpZmllciwgZGF0YWJhc2VCYWNrZW5kLmdldCgpKTsKKyAgICB9
IGVsc2UKKyAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0
ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VU5LTk9XTl9FUlIsICJJbnRlcm5hbCBlcnJvci4iKSk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJbXBsLmgKaW5kZXggNzk4MjE2
OGJlMzM3ZGM5NTZhMGI2NWJmMzhiMThkNDY4ZGUxYmJmOS4uYTM5ODllMmQzYTE3MDA4MDVmNzJi
ZTRhYmUwNjUwZmIwMTU2ZDI1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJbXBsLmgKQEAgLTUxLDkgKzUxLDkgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgfklEQkZhY3RvcnlCYWNrZW5kSW1wbCgpOwogCiAgICAgLy8g
Tm90aWZpY2F0aW9ucyBmcm9tIHdlYWsgcG9pbnRlcnMuCi0gICAgdm9pZCByZW1vdmVJREJEYXRh
YmFzZUJhY2tlbmQoY29uc3QgU3RyaW5nJiB1bmlxdWVJZGVudGlmaWVyKTsKKyAgICB2aXJ0dWFs
IHZvaWQgcmVtb3ZlSURCRGF0YWJhc2VCYWNrZW5kKGNvbnN0IFN0cmluZyYgdW5pcXVlSWRlbnRp
Zmllcik7CiAgICAgdm9pZCBhZGRJREJCYWNraW5nU3RvcmUoY29uc3QgU3RyaW5nJiBmaWxlSWRl
bnRpZmllciwgSURCQmFja2luZ1N0b3JlKik7Ci0gICAgdm9pZCByZW1vdmVJREJCYWNraW5nU3Rv
cmUoY29uc3QgU3RyaW5nJiBmaWxlSWRlbnRpZmllcik7CisgICAgdmlydHVhbCB2b2lkIHJlbW92
ZUlEQkJhY2tpbmdTdG9yZShjb25zdCBTdHJpbmcmIGZpbGVJZGVudGlmaWVyKTsKIAogICAgIHZp
cnR1YWwgdm9pZCBnZXREYXRhYmFzZU5hbWVzKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgUGFz
c1JlZlB0cjxTZWN1cml0eU9yaWdpbj4sIEZyYW1lKiwgY29uc3QgU3RyaW5nJiBkYXRhRGlyKTsK
IApAQCAtNjEsOSArNjEsMTEgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBvcGVuRnJvbVdv
cmtlcihjb25zdCBTdHJpbmcmIG5hbWUsIElEQkNhbGxiYWNrcyosIFBhc3NSZWZQdHI8U2VjdXJp
dHlPcmlnaW4+LCBXb3JrZXJDb250ZXh0KiwgY29uc3QgU3RyaW5nJiBkYXRhRGlyKTsKICAgICB2
aXJ0dWFsIHZvaWQgZGVsZXRlRGF0YWJhc2UoY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRy
PElEQkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+LCBGcmFtZSosIGNvbnN0
IFN0cmluZyYgZGF0YURpcik7CiAKLXByaXZhdGU6Citwcm90ZWN0ZWQ6CiAgICAgSURCRmFjdG9y
eUJhY2tlbmRJbXBsKCk7Ci0gICAgUGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmU+IG9wZW5CYWNr
aW5nU3RvcmUoUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4sIGNvbnN0IFN0cmluZyYgZGF0YURp
cik7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZT4gb3BlbkJhY2tpbmdT
dG9yZShQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiwgY29uc3QgU3RyaW5nJiBkYXRhRGlyKTsK
KworcHJpdmF0ZToKICAgICB2b2lkIG9wZW5JbnRlcm5hbChjb25zdCBTdHJpbmcmIG5hbWUsIElE
QkNhbGxiYWNrcyosIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+LCBjb25zdCBTdHJpbmcmIGRh
dGFEaXIpOwogCiAgICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgSURCRGF0YWJhc2VCYWNrZW5k
SW1wbCo+IElEQkRhdGFiYXNlQmFja2VuZE1hcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJCYWNraW5nU3RvcmUuaAppbmRleCBlMTdh
NmYxZmIyNzljMmExOTFmZWQzMzFjOTk3NjZkMTA2MmQ0NmY1Li5iNGNiN2FiYWUwNzRhMmMxYjAx
YzUzYjZjYzlmMjBlNzQ1N2IzMDVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJMZXZlbERCQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5oCkBAIC04MCw5ICs4MCwx
MCBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgYm9vbCBiYWNraW5nU3RvcmVFeGlzdHMoU2VjdXJp
dHlPcmlnaW4qLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgcGF0aEJhc2UpOwog
Ci1wcml2YXRlOgorcHJvdGVjdGVkOgogICAgIElEQkxldmVsREJCYWNraW5nU3RvcmUoY29uc3Qg
U3RyaW5nJiBpZGVudGlmaWVyLCBJREJGYWN0b3J5QmFja2VuZEltcGwqLCBQYXNzT3duUHRyPExl
dmVsREJEYXRhYmFzZT4pOwogCitwcml2YXRlOgogICAgIFN0cmluZyBtX2lkZW50aWZpZXI7CiAg
ICAgUmVmUHRyPElEQkZhY3RvcnlCYWNrZW5kSW1wbD4gbV9mYWN0b3J5OwogICAgIE93blB0cjxM
ZXZlbERCRGF0YWJhc2U+IG1fZGI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L1dlYktpdC5neXBpIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaQppbmRleCBi
YjJlM2JkMzJjOGE1ZDI2ZmEzZDRiMmZhNWVmNzZiNGU3YzYyOTNkLi4xYTg5YWI1MGRhMTlhMzky
MzlmYTAxMjg5YTAyMzhmYmY1MTJjZGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL1dlYktpdC5neXBpCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkK
QEAgLTEwNiw2ICsxMDYsNyBAQAogICAgICAgICAgICAgJ3Rlc3RzL0ZyYW1lVGVzdEhlbHBlcnMu
Y3BwJywKICAgICAgICAgICAgICd0ZXN0cy9GcmFtZVRlc3RIZWxwZXJzLmgnLAogICAgICAgICAg
ICAgJ3Rlc3RzL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bVRlc3QuY3BwJywKKyAgICAgICAgICAgICd0
ZXN0cy9JREJBYm9ydE9uQ29ycnVwdFRlc3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9JREJC
aW5kaW5nVXRpbGl0aWVzVGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL0lEQktleVBhdGhU
ZXN0LmNwcCcsCiAgICAgICAgICAgICAndGVzdHMvSURCTGV2ZWxEQkNvZGluZ1Rlc3QuY3BwJywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCQWJvcnRPbkNvcnJ1
cHRUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCQWJvcnRPbkNvcnJ1
cHRUZXN0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMGEwOGQ1OWU3ZTExZjBmNjVhZTAwOWFmN2JiZDc3M2Nk
MTEyNTZlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9J
REJBYm9ydE9uQ29ycnVwdFRlc3QuY3BwCkBAIC0wLDAgKzEsMTA3IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRT
IENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElU
UyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisg
KiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIklEQkZhY3RvcnlCYWNrZW5kSW1wbC5oIgorI2luY2x1
ZGUgIklEQkZha2VCYWNraW5nU3RvcmUuaCIKKyNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgor
I2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCisjaWYg
RU5BQkxFKElOREVYRURfREFUQUJBU0UpCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitu
YW1lc3BhY2UgeworCitjbGFzcyBNb2NrSURCQ2FsbGJhY2tzIDogcHVibGljIElEQkNhbGxiYWNr
cyB7CisgcHVibGljOgorICAgIE1vY2tJREJDYWxsYmFja3MoKSA6IG1fd2FzRXJyb3JDYWxsZWQo
ZmFsc2UpIHsgfQorCisgICAgdmlydHVhbCB+TW9ja0lEQkNhbGxiYWNrcygpCisgICAgeworICAg
ICAgICBFWFBFQ1RfVFJVRShtX3dhc0Vycm9yQ2FsbGVkKTsKKyAgICB9CisgICAgdmlydHVhbCB2
b2lkIG9uRXJyb3IoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUVycm9yPikKKyAgICB7CisgICAgICAg
IG1fd2FzRXJyb3JDYWxsZWQgPSB0cnVlOworICAgIH0KKyAgICB2aXJ0dWFsIHZvaWQgb25TdWNj
ZXNzKFBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4pIHsgfQorICAgIHZpcnR1YWwgdm9pZCBvblN1
Y2Nlc3MoUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlPikgeyB9CisgICAgdmly
dHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFj
ZT4pCisgICAgeworICAgICAgICBFWFBFQ1RfVFJVRShmYWxzZSk7CisgICAgfQorICAgIHZpcnR1
YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJLZXk+KSB7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPikg
eyB9CisgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4pIHsgfQorICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3NXaXRoQ29udGludWF0aW9u
KCkgeyB9CisgICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vzc1dpdGhQcmVmZXRjaChjb25zdCBWZWN0
b3I8UmVmUHRyPElEQktleT4gPiYsIGNvbnN0IFZlY3RvcjxSZWZQdHI8SURCS2V5PiA+JiwgY29u
c3QgVmVjdG9yPFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+ID4mKSB7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgb25CbG9ja2VkKCkgeyB9Citwcml2YXRlOgorICAgIGJvb2wgbV93YXNFcnJvckNh
bGxlZDsKK307CisKK2NsYXNzIEZhaWxpbmdCYWNraW5nU3RvcmUgOiBwdWJsaWMgSURCRmFrZUJh
Y2tpbmdTdG9yZSB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+RmFpbGluZ0JhY2tpbmdTdG9yZSgp
IHsgfQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZT4gb3BlbigpCisgICAg
eworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEZhaWxpbmdCYWNraW5nU3RvcmUpOworICAg
IH0KKyAgICB2aXJ0dWFsIGJvb2wgY3JlYXRlSURCRGF0YWJhc2VNZXRhRGF0YShjb25zdCBTdHJp
bmcmLCBjb25zdCBTdHJpbmcmLCBpbnQ2NF90JikKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9Cit9OworCitjbGFzcyBGYWlsaW5nSURCRmFjdG9yeUJhY2tlbmRJbXBsIDogcHVi
bGljIElEQkZhY3RvcnlCYWNrZW5kSW1wbCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+RmFpbGlu
Z0lEQkZhY3RvcnlCYWNrZW5kSW1wbCgpIHsgfQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZhaWxp
bmdJREJGYWN0b3J5QmFja2VuZEltcGw+IGNyZWF0ZSgpCisgICAgeworICAgICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IEZhaWxpbmdJREJGYWN0b3J5QmFja2VuZEltcGwpOworICAgIH0KKyAgICB2
aXJ0dWFsIHZvaWQgcmVtb3ZlSURCRGF0YWJhc2VCYWNrZW5kKGNvbnN0IFdURjo6U3RyaW5nICYp
IHsgfQorCitwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9y
ZT4gb3BlbkJhY2tpbmdTdG9yZShQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBwcnBPcmlnaW4s
IGNvbnN0IFN0cmluZyYgZGF0YURpcikKKyAgICB7CisgICAgICAgIHJldHVybiBGYWlsaW5nQmFj
a2luZ1N0b3JlOjpvcGVuKCk7CisgICAgfQorfTsKKworVEVTVChJREJBYm9ydFRlc3QsIFRoZVRl
c3QpCit7CisgICAgUmVmUHRyPElEQkZhY3RvcnlCYWNrZW5kSW1wbD4gZmFjdG9yeSA9IEZhaWxp
bmdJREJGYWN0b3J5QmFja2VuZEltcGw6OmNyZWF0ZSgpOworICAgIGNvbnN0IFN0cmluZyYgbmFt
ZSA9ICJkYiBuYW1lIjsKKyAgICBNb2NrSURCQ2FsbGJhY2tzIGNhbGxiYWNrczsKKyAgICBSZWZQ
dHI8U2VjdXJpdHlPcmlnaW4+IG9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoImh0dHAi
LCAibG9jYWxob3N0IiwgODEpOworICAgIGZhY3RvcnktPm9wZW4obmFtZSwgJmNhbGxiYWNrcywg
b3JpZ2luLCAwIC8qRnJhbWUqLywgU3RyaW5nKCkgLypwYXRoKi8pOworfQorCit9IC8vIG5hbWVz
cGFjZQorCisjZW5kaWYgLy8gRU5BQkxFKElOREVYRURfREFUQUJBU0UpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQkZha2VCYWNraW5nU3RvcmUuaCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCRmFrZUJhY2tpbmdTdG9yZS5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmE5MTYwYThhMTliMjE3ZjE4NTE3YThkYzEzZGU1OGUzNzgyNzQwNGQKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQkZha2VCYWNraW5nU3RvcmUuaApA
QCAtMCwwICsxLDc0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBJREJGYWtlQmFja2luZ1N0b3JlX2gKKyNk
ZWZpbmUgSURCRmFrZUJhY2tpbmdTdG9yZV9oCisKKyNpbmNsdWRlICJJREJCYWNraW5nU3RvcmUu
aCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBJREJGYWtlQmFja2luZ1N0b3JlIDog
cHVibGljIElEQkJhY2tpbmdTdG9yZSB7CitwdWJsaWM6CisgICAgdmlydHVhbCB2b2lkIGdldERh
dGFiYXNlTmFtZXMoVmVjdG9yPFN0cmluZz4mIGZvdW5kTmFtZXMpIE9WRVJSSURFIHsgfQorICAg
IHZpcnR1YWwgYm9vbCBnZXRJREJEYXRhYmFzZU1ldGFEYXRhKGNvbnN0IFN0cmluZyYgbmFtZSwg
U3RyaW5nJiBmb3VuZFZlcnNpb24sIGludDY0X3QmIGZvdW5kSWQpIE9WRVJSSURFIHsgcmV0dXJu
IGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGNyZWF0ZUlEQkRhdGFiYXNlTWV0YURhdGEoY29u
c3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZlcnNpb24sIGludDY0X3QmIHJvd0lkKSBP
VkVSUklERSB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBib29sIHVwZGF0ZUlEQkRhdGFi
YXNlTWV0YURhdGEoaW50NjRfdCByb3dJZCwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uKSBPVkVSUklE
RSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBkZWxldGVEYXRhYmFzZShjb25z
dCBTdHJpbmcmIG5hbWUpIE9WRVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9CisKKyAgICB2aXJ0dWFs
IHZvaWQgZ2V0T2JqZWN0U3RvcmVzKGludDY0X3QgZGF0YWJhc2VJZCwgVmVjdG9yPGludDY0X3Q+
JiBmb3VuZElkcywgVmVjdG9yPFN0cmluZz4mIGZvdW5kTmFtZXMsIFZlY3RvcjxTdHJpbmc+JiBm
b3VuZEtleVBhdGhzLCBWZWN0b3I8Ym9vbD4mIGZvdW5kQXV0b0luY3JlbWVudEZsYWdzKSBPVkVS
UklERSB7IH0KKyAgICB2aXJ0dWFsIGJvb2wgY3JlYXRlT2JqZWN0U3RvcmUoaW50NjRfdCBkYXRh
YmFzZUlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCBh
dXRvSW5jcmVtZW50LCBpbnQ2NF90JiBhc3NpZ25lZE9iamVjdFN0b3JlSWQpIE9WRVJSSURFIHsg
cmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCB2b2lkIGRlbGV0ZU9iamVjdFN0b3JlKGludDY0
X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkKSBPVkVSUklERSB7IH0KKworICAg
IHZpcnR1YWwgUGFzc1JlZlB0cjxPYmplY3RTdG9yZVJlY29yZElkZW50aWZpZXI+IGNyZWF0ZUlu
dmFsaWRSZWNvcmRJZGVudGlmaWVyKCkgT1ZFUlJJREUgeyByZXR1cm4gUGFzc1JlZlB0cjxPYmpl
Y3RTdG9yZVJlY29yZElkZW50aWZpZXI+KCk7IH0KKworICAgIHZpcnR1YWwgU3RyaW5nIGdldE9i
amVjdFN0b3JlUmVjb3JkKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlk
LCBjb25zdCBJREJLZXkmKSBPVkVSUklERSB7IHJldHVybiBTdHJpbmcoKTsgfQorICAgIHZpcnR1
YWwgYm9vbCBwdXRPYmplY3RTdG9yZVJlY29yZChpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qg
b2JqZWN0U3RvcmVJZCwgY29uc3QgSURCS2V5JiwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgT2JqZWN0
U3RvcmVSZWNvcmRJZGVudGlmaWVyKikgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgY2xlYXJPYmplY3RTdG9yZShpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qg
b2JqZWN0U3RvcmVJZCkgT1ZFUlJJREUgeyB9CisgICAgdmlydHVhbCB2b2lkIGRlbGV0ZU9iamVj
dFN0b3JlUmVjb3JkKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBj
b25zdCBPYmplY3RTdG9yZVJlY29yZElkZW50aWZpZXIqKSBPVkVSUklERSB7IH0KKyAgICB2aXJ0
dWFsIGludDY0X3QgbmV4dEF1dG9JbmNyZW1lbnROdW1iZXIoaW50NjRfdCBkYXRhYmFzZUlkLCBp
bnQ2NF90IG9iamVjdFN0b3JlSWQpIE9WRVJSSURFIHsgcmV0dXJuIDAuMDsgfQorICAgIHZpcnR1
YWwgYm9vbCBrZXlFeGlzdHNJbk9iamVjdFN0b3JlKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRf
dCBvYmplY3RTdG9yZUlkLCBjb25zdCBJREJLZXkmLCBPYmplY3RTdG9yZVJlY29yZElkZW50aWZp
ZXIqIGZvdW5kUmVjb3JkSWRlbnRpZmllcikgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7IH0KKwor
ICAgIHZpcnR1YWwgYm9vbCBmb3JFYWNoT2JqZWN0U3RvcmVSZWNvcmQoaW50NjRfdCBkYXRhYmFz
ZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIE9iamVjdFN0b3JlUmVjb3JkQ2FsbGJhY2smKSBP
VkVSUklERSB7IHJldHVybiBmYWxzZTsgfQorCisgICAgdmlydHVhbCB2b2lkIGdldEluZGV4ZXMo
aW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIFZlY3RvcjxpbnQ2NF90
PiYgZm91bmRJZHMsIFZlY3RvcjxTdHJpbmc+JiBmb3VuZE5hbWVzLCBWZWN0b3I8U3RyaW5nPiYg
Zm91bmRLZXlQYXRocywgVmVjdG9yPGJvb2w+JiBmb3VuZFVuaXF1ZUZsYWdzLCBWZWN0b3I8Ym9v
bD4mIGZvdW5kTXVsdGlFbnRyeUZsYWdzKSBPVkVSUklERSB7IH0KKyAgICB2aXJ0dWFsIGJvb2wg
Y3JlYXRlSW5kZXgoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNv
bnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIGlzVW5pcXVlLCBi
b29sIGlzTXVsdGlFbnRyeSwgaW50NjRfdCYgaW5kZXhJZCkgT1ZFUlJJREUgeyByZXR1cm4gZmFs
c2U7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlSW5kZXgoaW50NjRfdCBkYXRhYmFzZUlkLCBp
bnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCkgT1ZFUlJJREUgeyB9CisgICAg
dmlydHVhbCBib29sIHB1dEluZGV4RGF0YUZvclJlY29yZChpbnQ2NF90IGRhdGFiYXNlSWQsIGlu
dDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBJREJLZXkmLCBjb25z
dCBPYmplY3RTdG9yZVJlY29yZElkZW50aWZpZXIqKSBPVkVSUklERSB7IHJldHVybiBmYWxzZTsg
fQorICAgIHZpcnR1YWwgYm9vbCBkZWxldGVJbmRleERhdGFGb3JSZWNvcmQoaW50NjRfdCBkYXRh
YmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3QgT2Jq
ZWN0U3RvcmVSZWNvcmRJZGVudGlmaWVyKikgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7IH0KKyAg
ICB2aXJ0dWFsIFN0cmluZyBnZXRPYmplY3RWaWFJbmRleChpbnQ2NF90IGRhdGFiYXNlSWQsIGlu
dDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBJREJLZXkmKSBPVkVS
UklERSB7IHJldHVybiBTdHJpbmcoKTsgfQorICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJLZXk+
IGdldFByaW1hcnlLZXlWaWFJbmRleChpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0
U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBJREJLZXkmKSBPVkVSUklERSB7IHJldHVy
biBQYXNzUmVmUHRyPElEQktleT4oKTsgfQorICAgIHZpcnR1YWwgYm9vbCBrZXlFeGlzdHNJbklu
ZGV4KGludDY0X3QgZGF0YWJhc2VpZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGlu
ZGV4SWQsIGNvbnN0IElEQktleSYgaW5kZXhLZXksIFJlZlB0cjxJREJLZXk+JiBmb3VuZFByaW1h
cnlLZXkpIE9WRVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9CisKKyAgICB2aXJ0dWFsIFBhc3NSZWZQ
dHI8Q3Vyc29yPiBvcGVuT2JqZWN0U3RvcmVDdXJzb3IoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2
NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IElEQktleVJhbmdlKiwgSURCQ3Vyc29yOjpEaXJlY3Rp
b24pIE9WRVJSSURFIHsgcmV0dXJuIFBhc3NSZWZQdHI8Q3Vyc29yPigpOyB9CisgICAgdmlydHVh
bCBQYXNzUmVmUHRyPEN1cnNvcj4gb3BlbkluZGV4S2V5Q3Vyc29yKGludDY0X3QgZGF0YWJhc2VJ
ZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IElEQktleVJh
bmdlKiwgSURCQ3Vyc29yOjpEaXJlY3Rpb24pIE9WRVJSSURFIHsgcmV0dXJuIFBhc3NSZWZQdHI8
Q3Vyc29yPigpOyB9CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPEN1cnNvcj4gb3BlbkluZGV4Q3Vy
c29yKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGlu
ZGV4SWQsIGNvbnN0IElEQktleVJhbmdlKiwgSURCQ3Vyc29yOjpEaXJlY3Rpb24pIE9WRVJSSURF
IHsgcmV0dXJuIFBhc3NSZWZQdHI8Q3Vyc29yPigpOyB9CisKKyAgICB2aXJ0dWFsIFBhc3NSZWZQ
dHI8VHJhbnNhY3Rpb24+IGNyZWF0ZVRyYW5zYWN0aW9uKCkgT1ZFUlJJREUgeyByZXR1cm4gUGFz
c1JlZlB0cjxUcmFuc2FjdGlvbj4oKTsgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgLy8gSURCRmFrZUJhY2tpbmdTdG9yZV9oCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>143088</attachid>
            <date>2012-05-21 13:32:08 -0700</date>
            <delta_ts>2012-05-21 15:28:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-85579-20120521133208.patch</filename>
            <type>text/plain</type>
            <size>22992</size>
            <attacher name="David Grogan">dgrogan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE3Nzc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTM3NjliMzYxNGU4ZmIx
ZmI3MzgzMTkyOWY5NjZhZjBjZjliN2E2NC4uYzZlN2JmODg2NWFiYTY2MTU2ODBkOTcyYjM2Y2Mw
NmVmYjQyY2FjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEyLTA1LTE4ICBEYXZp
ZCBHcm9nYW4gIDxkZ3JvZ2FuQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IEZp
cmUgZXJyb3Igd2hlbiB0aGVyZSBhcmUgcHJvYmxlbXMgb3BlbmluZyBhIERCCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NTU3OQorCisgICAgICAgIFdl
IHVzZWQgdG8gZWl0aGVyIGZpcmUgc3VjY2VzcyBvciBnZXQgaW50byBhbiBpbmZpbml0ZSBsb29w
LgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5ldyB1
bml0IHRlc3QgaW4KKyAgICAgICAgU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJBYm9y
dE9uQ29ycnVwdFRlc3QuY3BwCisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRh
YmFzZUJhY2tlbmRJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2Vu
ZEltcGw6OklEQkRhdGFiYXNlQmFja2VuZEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0
YWJhc2VCYWNrZW5kSW1wbDo6b3BlbkludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRh
dGFiYXNlQmFja2VuZEltcGw6Om9wZW5Db25uZWN0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmg6CisgICAgICAgIChXZWJDb3JlOjpJREJE
YXRhYmFzZUJhY2tlbmRJbXBsOjpjcmVhdGUpOgorICAgICAgICAoSURCRGF0YWJhc2VCYWNrZW5k
SW1wbCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJbXBs
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkZhY3RvcnlCYWNrZW5kSW1wbDo6ZGVsZXRlRGF0
YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6SURCRmFjdG9yeUJhY2tlbmRJbXBsOjpvcGVuSW50
ZXJuYWwpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnlCYWNrZW5kSW1w
bC5oOgorICAgICAgICAoSURCRmFjdG9yeUJhY2tlbmRJbXBsKToKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9JREJMZXZlbERCQmFja2luZ1N0b3JlLmg6CisgICAgICAgIChJREJMZXZlbERC
QmFja2luZ1N0b3JlKToKKwogMjAxMi0wNS0yMSAgQW5kcmV5IEtvc3lha292ICA8Y2FzZXFAY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFtyZWZhY3RvcmluZ10gcHJvbW90
ZSBmaWxsL2JvcmRlciBjb2xvcnMgdXNlZCBieSB0aW1lbGluZSdzIGZyYW1lIG92ZXJ2aWV3IHRv
IFRpbWVsaW5lQ2F0ZWdvcnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggODQxZTZjYjY2
M2RhYzYxMjA5MGNhNjQ5YTc3NmE5NzQ4YjFiM2MzNC4uMzFiZDNhNjZjZWUxOTk3ZDM0OTg5ZjI5
ZmQ4NzZmNzRhY2M3OTc4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwz
NSBAQAorMjAxMi0wNS0xOCAgRGF2aWQgR3JvZ2FuICA8ZGdyb2dhbkBjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgSW5kZXhlZERCOiBGaXJlIGVycm9yIHdoZW4gdGhlcmUgYXJlIHByb2JsZW1zIG9w
ZW5pbmcgYSBEQgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9ODU1NzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIFdlYktpdC5neXBpOgorICAgICAgICAqIHRlc3RzL0lEQkFib3J0T25Db3JydXB0VGVzdC5j
cHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChNb2NrSURCQ2FsbGJhY2tz
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tJREJDYWxsYmFja3M6Ok1vY2tJREJDYWxsYmFja3Mp
OgorICAgICAgICAoV2ViQ29yZTo6TW9ja0lEQkNhbGxiYWNrczo6fk1vY2tJREJDYWxsYmFja3Mp
OgorICAgICAgICAoV2ViQ29yZTo6TW9ja0lEQkNhbGxiYWNrczo6b25FcnJvcik6CisgICAgICAg
IChXZWJDb3JlOjpNb2NrSURCQ2FsbGJhY2tzOjpvblN1Y2Nlc3MpOgorICAgICAgICAoV2ViQ29y
ZTo6TW9ja0lEQkNhbGxiYWNrczo6b25TdWNjZXNzV2l0aENvbnRpbnVhdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpNb2NrSURCQ2FsbGJhY2tzOjpvblN1Y2Nlc3NXaXRoUHJlZmV0Y2gpOgorICAg
ICAgICAoV2ViQ29yZTo6TW9ja0lEQkNhbGxiYWNrczo6b25CbG9ja2VkKToKKyAgICAgICAgKEZh
aWxpbmdCYWNraW5nU3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6RmFpbGluZ0JhY2tpbmdTdG9y
ZTo6fkZhaWxpbmdCYWNraW5nU3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6RmFpbGluZ0JhY2tp
bmdTdG9yZTo6b3Blbik6CisgICAgICAgIChXZWJDb3JlOjpGYWlsaW5nQmFja2luZ1N0b3JlOjpj
cmVhdGVJREJEYXRhYmFzZU1ldGFEYXRhKToKKyAgICAgICAgKEZhaWxpbmdJREJGYWN0b3J5QmFj
a2VuZEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6RmFpbGluZ0lEQkZhY3RvcnlCYWNrZW5kSW1w
bDo6fkZhaWxpbmdJREJGYWN0b3J5QmFja2VuZEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6RmFp
bGluZ0lEQkZhY3RvcnlCYWNrZW5kSW1wbDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZh
aWxpbmdJREJGYWN0b3J5QmFja2VuZEltcGw6OnJlbW92ZUlEQkRhdGFiYXNlQmFja2VuZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpGYWlsaW5nSURCRmFjdG9yeUJhY2tlbmRJbXBsOjpvcGVuQmFja2lu
Z1N0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlRFU1QpOgorICAgICAgICAqIHRlc3RzL0lEQkZh
a2VCYWNraW5nU3RvcmUuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5oLgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgIChJREJGYWtlQmFja2luZ1N0b3JlKToKKwogMjAxMi0wNS0yMCAgS2ludWtvIFlhc3VkYSAg
PGtpbnVrb0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQ2xlYW51cDogUmVtb3ZlIFdlYkNvcmU6
OnJldmVhbEZvbGRlckluT1MoKSB3aGljaCBpcyBubyBsb25nZXIgdXNlZCBhbnl3aGVyZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNr
ZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFz
ZUJhY2tlbmRJbXBsLmNwcAppbmRleCBiMDViMzI4NjNkMDcyZmI2NTdkY2E5YzhkNjRlMGI4NTFh
ZDA5MjQ1Li4zNDY4ZGI3ZTY5MDBlYzUyODI4ZDc0YTM0NjgyZjc5MGZhYTIyMjQ2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJ
bXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFz
ZUJhY2tlbmRJbXBsLmNwcApAQCAtOTMsNyArOTMsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxJ
REJEYXRhYmFzZUNhbGxiYWNrcz4gbV9kYXRhYmFzZUNhbGxiYWNrczsKIH07CiAKLUlEQkRhdGFi
YXNlQmFja2VuZEltcGw6OklEQkRhdGFiYXNlQmFja2VuZEltcGwoY29uc3QgU3RyaW5nJiBuYW1l
LCBJREJCYWNraW5nU3RvcmUqIGJhY2tpbmdTdG9yZSwgSURCVHJhbnNhY3Rpb25Db29yZGluYXRv
ciogY29vcmRpbmF0b3IsIElEQkZhY3RvcnlCYWNrZW5kSW1wbCogZmFjdG9yeSwgY29uc3QgU3Ry
aW5nJiB1bmlxdWVJZGVudGlmaWVyKQorSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6SURCRGF0YWJh
c2VCYWNrZW5kSW1wbChjb25zdCBTdHJpbmcmIG5hbWUsIElEQkJhY2tpbmdTdG9yZSogYmFja2lu
Z1N0b3JlLCBJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yKiBjb29yZGluYXRvciwgSURCRmFjdG9y
eUJhY2tlbmRJbXBsKiBmYWN0b3J5LCBjb25zdCBTdHJpbmcmIHVuaXF1ZUlkZW50aWZpZXIsIGJv
b2wmIHN1Y2Nlc3MpCiAgICAgOiBtX2JhY2tpbmdTdG9yZShiYWNraW5nU3RvcmUpCiAgICAgLCBt
X2lkKEludmFsaWRJZCkKICAgICAsIG1fbmFtZShuYW1lKQpAQCAtMTAzLDE5ICsxMDMsMTggQEAg
SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbChjb25zdCBTdHJp
bmcmIG5hbWUsIElEQkJhY2tpbmdTdG8KICAgICAsIG1fdHJhbnNhY3Rpb25Db29yZGluYXRvcihj
b29yZGluYXRvcikKIHsKICAgICBBU1NFUlQoIW1fbmFtZS5pc051bGwoKSk7Ci0gICAgb3Blbklu
dGVybmFsKCk7CisgICAgc3VjY2VzcyA9IG9wZW5JbnRlcm5hbCgpOwogfQogCi12b2lkIElEQkRh
dGFiYXNlQmFja2VuZEltcGw6Om9wZW5JbnRlcm5hbCgpCitib29sIElEQkRhdGFiYXNlQmFja2Vu
ZEltcGw6Om9wZW5JbnRlcm5hbCgpCiB7CiAgICAgYm9vbCBzdWNjZXNzID0gbV9iYWNraW5nU3Rv
cmUtPmdldElEQkRhdGFiYXNlTWV0YURhdGEobV9uYW1lLCBtX3ZlcnNpb24sIG1faWQpOwogICAg
IEFTU0VSVChzdWNjZXNzID09IChtX2lkICE9IEludmFsaWRJZCkpOwogICAgIGlmIChzdWNjZXNz
KSB7CiAgICAgICAgIGxvYWRPYmplY3RTdG9yZXMoKTsKLSAgICAgICAgcmV0dXJuOworICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICB9Ci0gICAgaWYgKCFtX2JhY2tpbmdTdG9yZS0+Y3JlYXRlSURC
RGF0YWJhc2VNZXRhRGF0YShtX25hbWUsIG1fdmVyc2lvbiwgbV9pZCkpCi0gICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOyAvLyBGSVhNRTogTmVlZCBiZXR0ZXIgZXJyb3IgaGFuZGxpbmcuCisg
ICAgcmV0dXJuIG1fYmFja2luZ1N0b3JlLT5jcmVhdGVJREJEYXRhYmFzZU1ldGFEYXRhKG1fbmFt
ZSwgbV92ZXJzaW9uLCBtX2lkKTsKIH0KIAogSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6fklEQkRh
dGFiYXNlQmFja2VuZEltcGwoKQpAQCAtMzI1LDkgKzMyNCwxMCBAQCB2b2lkIElEQkRhdGFiYXNl
QmFja2VuZEltcGw6Om9wZW5Db25uZWN0aW9uKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxs
YmFja3MpCiAgICAgaWYgKCFtX3BlbmRpbmdEZWxldGVDYWxscy5pc0VtcHR5KCkgfHwgbV9ydW5u
aW5nVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uIHx8ICFtX3BlbmRpbmdTZXRWZXJzaW9uQ2FsbHMu
aXNFbXB0eSgpKQogICAgICAgICBtX3BlbmRpbmdPcGVuQ2FsbHMuYXBwZW5kKFBlbmRpbmdPcGVu
Q2FsbDo6Y3JlYXRlKGNhbGxiYWNrcykpOwogICAgIGVsc2UgewotICAgICAgICBpZiAobV9pZCA9
PSBJbnZhbGlkSWQpCi0gICAgICAgICAgICBvcGVuSW50ZXJuYWwoKTsKLSAgICAgICAgY2FsbGJh
Y2tzLT5vblN1Y2Nlc3ModGhpcyk7CisgICAgICAgIGlmIChtX2lkID09IEludmFsaWRJZCAmJiAh
b3BlbkludGVybmFsKCkpCisgICAgICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJh
c2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVTktOT1dOX0VSUiwgIkludGVy
bmFsIGVycm9yLiIpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY2FsbGJhY2tzLT5vblN1
Y2Nlc3ModGhpcyk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmgKaW5kZXggMTA4NmViMTZl
Yjg3ZDE5ZjAyOGUzZjRjOGM0N2I5MDVkODY3OGYwNS4uNDZmOTI4MDUxMTA3Nzg1YzhkNzA2MzFm
Mjc2YjE4NWFlODUzYThhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuaApAQCAtNDcsNyArNDcsMTMgQEAg
Y2xhc3MgSURCRGF0YWJhc2VCYWNrZW5kSW1wbCA6IHB1YmxpYyBJREJEYXRhYmFzZUJhY2tlbmRJ
bnRlcmZhY2UgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFj
a2VuZEltcGw+IGNyZWF0ZShjb25zdCBTdHJpbmcmIG5hbWUsIElEQkJhY2tpbmdTdG9yZSogZGF0
YWJhc2UsIElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3IqIGNvb3JkaW5hdG9yLCBJREJGYWN0b3J5
QmFja2VuZEltcGwqIGZhY3RvcnksIGNvbnN0IFN0cmluZyYgdW5pcXVlSWRlbnRpZmllcikKICAg
ICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSURCRGF0YWJhc2VCYWNrZW5kSW1wbChu
YW1lLCBkYXRhYmFzZSwgY29vcmRpbmF0b3IsIGZhY3RvcnksIHVuaXF1ZUlkZW50aWZpZXIpKTsK
KyAgICAgICAgYm9vbCBzdWNjZXNzID0gZmFsc2U7CisgICAgICAgIElEQkRhdGFiYXNlQmFja2Vu
ZEltcGwqIGJhY2tlbmQgPSBuZXcgSURCRGF0YWJhc2VCYWNrZW5kSW1wbChuYW1lLCBkYXRhYmFz
ZSwgY29vcmRpbmF0b3IsIGZhY3RvcnksIHVuaXF1ZUlkZW50aWZpZXIsIHN1Y2Nlc3MpOworICAg
ICAgICBpZiAoIXN1Y2Nlc3MpIHsKKyAgICAgICAgICBkZWxldGUgYmFja2VuZDsKKyAgICAgICAg
ICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gYWRvcHRSZWYoYmFja2VuZCk7
CiAgICAgfQogICAgIHZpcnR1YWwgfklEQkRhdGFiYXNlQmFja2VuZEltcGwoKTsKIApAQCAtNzcs
OSArODMsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCB0cmFuc2FjdGlvbkZpbmlzaGVkKFBhc3NSZWZQ
dHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPik7CiAKIHByaXZhdGU6Ci0gICAgSURC
RGF0YWJhc2VCYWNrZW5kSW1wbChjb25zdCBTdHJpbmcmIG5hbWUsIElEQkJhY2tpbmdTdG9yZSog
ZGF0YWJhc2UsIElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3IqLCBJREJGYWN0b3J5QmFja2VuZElt
cGwqLCBjb25zdCBTdHJpbmcmIHVuaXF1ZUlkZW50aWZpZXIpOworICAgIElEQkRhdGFiYXNlQmFj
a2VuZEltcGwoY29uc3QgU3RyaW5nJiBuYW1lLCBJREJCYWNraW5nU3RvcmUqIGRhdGFiYXNlLCBJ
REJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yKiwgSURCRmFjdG9yeUJhY2tlbmRJbXBsKiwgY29uc3Qg
U3RyaW5nJiB1bmlxdWVJZGVudGlmaWVyLCBib29sJiBzdWNjZXNzKTsKIAotICAgIHZvaWQgb3Bl
bkludGVybmFsKCk7CisgICAgYm9vbCBvcGVuSW50ZXJuYWwoKTsKICAgICB2b2lkIGxvYWRPYmpl
Y3RTdG9yZXMoKTsKICAgICB2b2lkIHByb2Nlc3NQZW5kaW5nQ2FsbHMoKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJbXBs
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnlCYWNrZW5k
SW1wbC5jcHAKaW5kZXggZjViOWM4Nzc0MDY3NDNmMGU1YTYwOWE0Y2NlOWQ1ZTRkYTI5YTMxYy4u
OWViMTE2NzA5MjZlZTM2ZGJhYzEyYTdiM2JiM2M2NDgwN2VlODBiMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJbXBsLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5QmFja2VuZElt
cGwuY3BwCkBAIC0xMjksOCArMTI5LDExIEBAIHZvaWQgSURCRmFjdG9yeUJhY2tlbmRJbXBsOjpk
ZWxldGVEYXRhYmFzZShjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8SURCQ2FsCiAgICAg
fQogCiAgICAgUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEltcGw+IGRhdGFiYXNlQmFja2VuZCA9
IElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNyZWF0ZShuYW1lLCBiYWNraW5nU3RvcmUuZ2V0KCks
IG1fdHJhbnNhY3Rpb25Db29yZGluYXRvci5nZXQoKSwgdGhpcywgdW5pcXVlSWRlbnRpZmllcik7
Ci0gICAgbV9kYXRhYmFzZUJhY2tlbmRNYXAuc2V0KHVuaXF1ZUlkZW50aWZpZXIsIGRhdGFiYXNl
QmFja2VuZC5nZXQoKSk7Ci0gICAgZGF0YWJhc2VCYWNrZW5kLT5kZWxldGVEYXRhYmFzZShjYWxs
YmFja3MpOworICAgIGlmIChkYXRhYmFzZUJhY2tlbmQpIHsKKyAgICAgICAgbV9kYXRhYmFzZUJh
Y2tlbmRNYXAuc2V0KHVuaXF1ZUlkZW50aWZpZXIsIGRhdGFiYXNlQmFja2VuZC5nZXQoKSk7Cisg
ICAgICAgIGRhdGFiYXNlQmFja2VuZC0+ZGVsZXRlRGF0YWJhc2UoY2FsbGJhY2tzKTsKKyAgICB9
IGVsc2UKKyAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0
ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VU5LTk9XTl9FUlIsICJJbnRlcm5hbCBlcnJvci4iKSk7
CiB9CiAKIFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlPiBJREJGYWN0b3J5QmFja2VuZEltcGw6
Om9wZW5CYWNraW5nU3RvcmUoUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlPcmln
aW4sIGNvbnN0IFN0cmluZyYgZGF0YURpcmVjdG9yeSkKQEAgLTE3Nyw4ICsxODAsMTEgQEAgdm9p
ZCBJREJGYWN0b3J5QmFja2VuZEltcGw6Om9wZW5JbnRlcm5hbChjb25zdCBTdHJpbmcmIG5hbWUs
IElEQkNhbGxiYWNrcyogY2FsbGIKICAgICB9CiAKICAgICBSZWZQdHI8SURCRGF0YWJhc2VCYWNr
ZW5kSW1wbD4gZGF0YWJhc2VCYWNrZW5kID0gSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6Y3JlYXRl
KG5hbWUsIGJhY2tpbmdTdG9yZS5nZXQoKSwgbV90cmFuc2FjdGlvbkNvb3JkaW5hdG9yLmdldCgp
LCB0aGlzLCB1bmlxdWVJZGVudGlmaWVyKTsKLSAgICBjYWxsYmFja3MtPm9uU3VjY2VzcyhSZWZQ
dHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPihkYXRhYmFzZUJhY2tlbmQuZ2V0KCkpLnJl
bGVhc2UoKSk7Ci0gICAgbV9kYXRhYmFzZUJhY2tlbmRNYXAuc2V0KHVuaXF1ZUlkZW50aWZpZXIs
IGRhdGFiYXNlQmFja2VuZC5nZXQoKSk7CisgICAgaWYgKGRhdGFiYXNlQmFja2VuZCkgeworICAg
ICAgICBjYWxsYmFja3MtPm9uU3VjY2VzcyhSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJm
YWNlPihkYXRhYmFzZUJhY2tlbmQuZ2V0KCkpLnJlbGVhc2UoKSk7CisgICAgICAgIG1fZGF0YWJh
c2VCYWNrZW5kTWFwLnNldCh1bmlxdWVJZGVudGlmaWVyLCBkYXRhYmFzZUJhY2tlbmQuZ2V0KCkp
OworICAgIH0gZWxzZQorICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJv
cjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVTktOT1dOX0VSUiwgIkludGVybmFsIGVy
cm9yLiIpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJbXBsLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5QmFja2VuZEltcGwuaAppbmRl
eCA3OTgyMTY4YmUzMzdkYzk1NmEwYjY1YmYzOGIxOGQ0NjhkZTFiYmY5Li5hMzk4OWUyZDNhMTcw
MDgwNWY3MmJlNGFiZTA2NTBmYjAxNTZkMjUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5QmFja2VuZEltcGwuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5QmFja2VuZEltcGwuaApAQCAtNTEsOSAr
NTEsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+SURCRmFjdG9yeUJhY2tlbmRJbXBsKCk7CiAK
ICAgICAvLyBOb3RpZmljYXRpb25zIGZyb20gd2VhayBwb2ludGVycy4KLSAgICB2b2lkIHJlbW92
ZUlEQkRhdGFiYXNlQmFja2VuZChjb25zdCBTdHJpbmcmIHVuaXF1ZUlkZW50aWZpZXIpOworICAg
IHZpcnR1YWwgdm9pZCByZW1vdmVJREJEYXRhYmFzZUJhY2tlbmQoY29uc3QgU3RyaW5nJiB1bmlx
dWVJZGVudGlmaWVyKTsKICAgICB2b2lkIGFkZElEQkJhY2tpbmdTdG9yZShjb25zdCBTdHJpbmcm
IGZpbGVJZGVudGlmaWVyLCBJREJCYWNraW5nU3RvcmUqKTsKLSAgICB2b2lkIHJlbW92ZUlEQkJh
Y2tpbmdTdG9yZShjb25zdCBTdHJpbmcmIGZpbGVJZGVudGlmaWVyKTsKKyAgICB2aXJ0dWFsIHZv
aWQgcmVtb3ZlSURCQmFja2luZ1N0b3JlKGNvbnN0IFN0cmluZyYgZmlsZUlkZW50aWZpZXIpOwog
CiAgICAgdmlydHVhbCB2b2lkIGdldERhdGFiYXNlTmFtZXMoUGFzc1JlZlB0cjxJREJDYWxsYmFj
a3M+LCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiwgRnJhbWUqLCBjb25zdCBTdHJpbmcmIGRh
dGFEaXIpOwogCkBAIC02MSw5ICs2MSwxMSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIG9w
ZW5Gcm9tV29ya2VyKGNvbnN0IFN0cmluZyYgbmFtZSwgSURCQ2FsbGJhY2tzKiwgUGFzc1JlZlB0
cjxTZWN1cml0eU9yaWdpbj4sIFdvcmtlckNvbnRleHQqLCBjb25zdCBTdHJpbmcmIGRhdGFEaXIp
OwogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVEYXRhYmFzZShjb25zdCBTdHJpbmcmIG5hbWUsIFBh
c3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4sIEZyYW1l
KiwgY29uc3QgU3RyaW5nJiBkYXRhRGlyKTsKIAotcHJpdmF0ZToKK3Byb3RlY3RlZDoKICAgICBJ
REJGYWN0b3J5QmFja2VuZEltcGwoKTsKLSAgICBQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZT4g
b3BlbkJhY2tpbmdTdG9yZShQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiwgY29uc3QgU3RyaW5n
JiBkYXRhRGlyKTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlPiBvcGVu
QmFja2luZ1N0b3JlKFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+LCBjb25zdCBTdHJpbmcmIGRh
dGFEaXIpOworCitwcml2YXRlOgogICAgIHZvaWQgb3BlbkludGVybmFsKGNvbnN0IFN0cmluZyYg
bmFtZSwgSURCQ2FsbGJhY2tzKiwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4sIGNvbnN0IFN0
cmluZyYgZGF0YURpcik7CiAKICAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBJREJEYXRhYmFz
ZUJhY2tlbmRJbXBsKj4gSURCRGF0YWJhc2VCYWNrZW5kTWFwOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5oCmlu
ZGV4IGUxN2E2ZjFmYjI3OWMyYTE5MWZlZDMzMWM5OTc2NmQxMDYyZDQ2ZjUuLmI0Y2I3YWJhZTA3
NGEyYzFiMDFjNTNiNmNjOWYyMGU3NDU3YjMwNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQmFja2luZ1N0b3JlLmgKQEAgLTgw
LDkgKzgwLDEwIEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBib29sIGJhY2tpbmdTdG9yZUV4aXN0
cyhTZWN1cml0eU9yaWdpbiosIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBwYXRo
QmFzZSk7CiAKLXByaXZhdGU6Citwcm90ZWN0ZWQ6CiAgICAgSURCTGV2ZWxEQkJhY2tpbmdTdG9y
ZShjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIElEQkZhY3RvcnlCYWNrZW5kSW1wbCosIFBhc3NP
d25QdHI8TGV2ZWxEQkRhdGFiYXNlPik7CiAKK3ByaXZhdGU6CiAgICAgU3RyaW5nIG1faWRlbnRp
ZmllcjsKICAgICBSZWZQdHI8SURCRmFjdG9yeUJhY2tlbmRJbXBsPiBtX2ZhY3Rvcnk7CiAgICAg
T3duUHRyPExldmVsREJEYXRhYmFzZT4gbV9kYjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vV2ViS2l0Lmd5cGkgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBp
CmluZGV4IGNmYjFkN2I0ZTI1YjllOTgxNDI2MzViMDdiM2Q2MDlhOGYwMjZlYWMuLjcyY2FiMTgy
Nzk1OWMxNjM5MDIzYTdmYjE2ZTExMGVhMDFlNmM5ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJL
aXQuZ3lwaQpAQCAtMTA2LDcgKzEwNiw5IEBACiAgICAgICAgICAgICAndGVzdHMvRnJhbWVUZXN0
SGVscGVycy5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL0ZyYW1lVGVzdEhlbHBlcnMuaCcsCiAg
ICAgICAgICAgICAndGVzdHMvR3JhcGhpY3NMYXllckNocm9taXVtVGVzdC5jcHAnLAorICAgICAg
ICAgICAgJ3Rlc3RzL0lEQkFib3J0T25Db3JydXB0VGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rl
c3RzL0lEQkJpbmRpbmdVdGlsaXRpZXNUZXN0LmNwcCcsCisgICAgICAgICAgICAndGVzdHMvSURC
RmFrZUJhY2tpbmdTdG9yZS5oJywKICAgICAgICAgICAgICd0ZXN0cy9JREJLZXlQYXRoVGVzdC5j
cHAnLAogICAgICAgICAgICAgJ3Rlc3RzL0lEQkxldmVsREJDb2RpbmdUZXN0LmNwcCcsCiAgICAg
ICAgICAgICAndGVzdHMvSW1hZ2VMYXllckNocm9taXVtVGVzdC5jcHAnLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJBYm9ydE9uQ29ycnVwdFRlc3QuY3BwIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJBYm9ydE9uQ29ycnVwdFRlc3QuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjEwYTA4ZDU5ZTdlMTFmMGY2NWFlMDA5YWY3YmJkNzczY2QxMTI1NmUKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQkFib3J0T25Db3Jy
dXB0VGVzdC5jcHAKQEAgLTAsMCArMSwxMDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JT
ICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQor
ICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiSURCRmFjdG9yeUJhY2tlbmRJbXBsLmgiCisjaW5jbHVkZSAiSURCRmFrZUJh
Y2tpbmdTdG9yZS5oIgorI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCisjaW5jbHVkZSA8Z3Rl
c3QvZ3Rlc3QuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKKyNpZiBFTkFCTEUoSU5ERVhF
RF9EQVRBQkFTRSkKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSB7CisK
K2NsYXNzIE1vY2tJREJDYWxsYmFja3MgOiBwdWJsaWMgSURCQ2FsbGJhY2tzIHsKKyBwdWJsaWM6
CisgICAgTW9ja0lEQkNhbGxiYWNrcygpIDogbV93YXNFcnJvckNhbGxlZChmYWxzZSkgeyB9CisK
KyAgICB2aXJ0dWFsIH5Nb2NrSURCQ2FsbGJhY2tzKCkKKyAgICB7CisgICAgICAgIEVYUEVDVF9U
UlVFKG1fd2FzRXJyb3JDYWxsZWQpOworICAgIH0KKyAgICB2aXJ0dWFsIHZvaWQgb25FcnJvcihQ
YXNzUmVmUHRyPElEQkRhdGFiYXNlRXJyb3I+KQorICAgIHsKKyAgICAgICAgbV93YXNFcnJvckNh
bGxlZCA9IHRydWU7CisgICAgfQorICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0
cjxET01TdHJpbmdMaXN0PikgeyB9CisgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVm
UHRyPElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U+KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgb25T
dWNjZXNzKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPikKKyAgICB7Cisg
ICAgICAgIEVYUEVDVF9UUlVFKGZhbHNlKTsKKyAgICB9CisgICAgdmlydHVhbCB2b2lkIG9uU3Vj
Y2VzcyhQYXNzUmVmUHRyPElEQktleT4pIHsgfQorICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3Mo
UGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+KSB7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPikgeyB9
CisgICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vzc1dpdGhDb250aW51YXRpb24oKSB7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgb25TdWNjZXNzV2l0aFByZWZldGNoKGNvbnN0IFZlY3RvcjxSZWZQdHI8SURC
S2V5PiA+JiwgY29uc3QgVmVjdG9yPFJlZlB0cjxJREJLZXk+ID4mLCBjb25zdCBWZWN0b3I8UmVm
UHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gPiYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBvbkJs
b2NrZWQoKSB7IH0KK3ByaXZhdGU6CisgICAgYm9vbCBtX3dhc0Vycm9yQ2FsbGVkOworfTsKKwor
Y2xhc3MgRmFpbGluZ0JhY2tpbmdTdG9yZSA6IHB1YmxpYyBJREJGYWtlQmFja2luZ1N0b3JlIHsK
K3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5GYWlsaW5nQmFja2luZ1N0b3JlKCkgeyB9CisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlPiBvcGVuKCkKKyAgICB7CisgICAgICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgRmFpbGluZ0JhY2tpbmdTdG9yZSk7CisgICAgfQorICAgIHZpcnR1
YWwgYm9vbCBjcmVhdGVJREJEYXRhYmFzZU1ldGFEYXRhKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0
cmluZyYsIGludDY0X3QmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK307
CisKK2NsYXNzIEZhaWxpbmdJREJGYWN0b3J5QmFja2VuZEltcGwgOiBwdWJsaWMgSURCRmFjdG9y
eUJhY2tlbmRJbXBsIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5GYWlsaW5nSURCRmFjdG9yeUJh
Y2tlbmRJbXBsKCkgeyB9CisgICAgc3RhdGljIFBhc3NSZWZQdHI8RmFpbGluZ0lEQkZhY3RvcnlC
YWNrZW5kSW1wbD4gY3JlYXRlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcg
RmFpbGluZ0lEQkZhY3RvcnlCYWNrZW5kSW1wbCk7CisgICAgfQorICAgIHZpcnR1YWwgdm9pZCBy
ZW1vdmVJREJEYXRhYmFzZUJhY2tlbmQoY29uc3QgV1RGOjpTdHJpbmcgJikgeyB9CisKK3Byb3Rl
Y3RlZDoKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlPiBvcGVuQmFja2lu
Z1N0b3JlKFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHBycE9yaWdpbiwgY29uc3QgU3RyaW5n
JiBkYXRhRGlyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEZhaWxpbmdCYWNraW5nU3RvcmU6Om9w
ZW4oKTsKKyAgICB9Cit9OworCitURVNUKElEQkFib3J0VGVzdCwgVGhlVGVzdCkKK3sKKyAgICBS
ZWZQdHI8SURCRmFjdG9yeUJhY2tlbmRJbXBsPiBmYWN0b3J5ID0gRmFpbGluZ0lEQkZhY3RvcnlC
YWNrZW5kSW1wbDo6Y3JlYXRlKCk7CisgICAgY29uc3QgU3RyaW5nJiBuYW1lID0gImRiIG5hbWUi
OworICAgIE1vY2tJREJDYWxsYmFja3MgY2FsbGJhY2tzOworICAgIFJlZlB0cjxTZWN1cml0eU9y
aWdpbj4gb3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZSgiaHR0cCIsICJsb2NhbGhvc3Qi
LCA4MSk7CisgICAgZmFjdG9yeS0+b3BlbihuYW1lLCAmY2FsbGJhY2tzLCBvcmlnaW4sIDAgLypG
cmFtZSovLCBTdHJpbmcoKSAvKnBhdGgqLyk7Cit9CisKK30gLy8gbmFtZXNwYWNlCisKKyNlbmRp
ZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvSURCRmFrZUJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9JREJGYWtlQmFja2luZ1N0b3JlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTkxNjBhOGExOWIy
MTdmMTg1MTdhOGRjMTNkZTU4ZTM3ODI3NDA0ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCRmFrZUJhY2tpbmdTdG9yZS5oCkBAIC0wLDAgKzEsNzQg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisg
KiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIElEQkZha2VCYWNraW5nU3RvcmVfaAorI2RlZmluZSBJREJGYWtl
QmFja2luZ1N0b3JlX2gKKworI2luY2x1ZGUgIklEQkJhY2tpbmdTdG9yZS5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2NsYXNzIElEQkZha2VCYWNraW5nU3RvcmUgOiBwdWJsaWMgSURCQmFj
a2luZ1N0b3JlIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0RGF0YWJhc2VOYW1lcyhW
ZWN0b3I8U3RyaW5nPiYgZm91bmROYW1lcykgT1ZFUlJJREUgeyB9CisgICAgdmlydHVhbCBib29s
IGdldElEQkRhdGFiYXNlTWV0YURhdGEoY29uc3QgU3RyaW5nJiBuYW1lLCBTdHJpbmcmIGZvdW5k
VmVyc2lvbiwgaW50NjRfdCYgZm91bmRJZCkgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7IH0KKyAg
ICB2aXJ0dWFsIGJvb2wgY3JlYXRlSURCRGF0YWJhc2VNZXRhRGF0YShjb25zdCBTdHJpbmcmIG5h
bWUsIGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgaW50NjRfdCYgcm93SWQpIE9WRVJSSURFIHsgcmV0
dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgdXBkYXRlSURCRGF0YWJhc2VNZXRhRGF0YShp
bnQ2NF90IHJvd0lkLCBjb25zdCBTdHJpbmcmIHZlcnNpb24pIE9WRVJSSURFIHsgcmV0dXJuIGZh
bHNlOyB9CisgICAgdmlydHVhbCBib29sIGRlbGV0ZURhdGFiYXNlKGNvbnN0IFN0cmluZyYgbmFt
ZSkgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7IH0KKworICAgIHZpcnR1YWwgdm9pZCBnZXRPYmpl
Y3RTdG9yZXMoaW50NjRfdCBkYXRhYmFzZUlkLCBWZWN0b3I8aW50NjRfdD4mIGZvdW5kSWRzLCBW
ZWN0b3I8U3RyaW5nPiYgZm91bmROYW1lcywgVmVjdG9yPFN0cmluZz4mIGZvdW5kS2V5UGF0aHMs
IFZlY3Rvcjxib29sPiYgZm91bmRBdXRvSW5jcmVtZW50RmxhZ3MpIE9WRVJSSURFIHsgfQorICAg
IHZpcnR1YWwgYm9vbCBjcmVhdGVPYmplY3RTdG9yZShpbnQ2NF90IGRhdGFiYXNlSWQsIGNvbnN0
IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIGF1dG9JbmNyZW1lbnQs
IGludDY0X3QmIGFzc2lnbmVkT2JqZWN0U3RvcmVJZCkgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlT2JqZWN0U3RvcmUoaW50NjRfdCBkYXRhYmFzZUlk
LCBpbnQ2NF90IG9iamVjdFN0b3JlSWQpIE9WRVJSSURFIHsgfQorCisgICAgdmlydHVhbCBQYXNz
UmVmUHRyPE9iamVjdFN0b3JlUmVjb3JkSWRlbnRpZmllcj4gY3JlYXRlSW52YWxpZFJlY29yZElk
ZW50aWZpZXIoKSBPVkVSUklERSB7IHJldHVybiBQYXNzUmVmUHRyPE9iamVjdFN0b3JlUmVjb3Jk
SWRlbnRpZmllcj4oKTsgfQorCisgICAgdmlydHVhbCBTdHJpbmcgZ2V0T2JqZWN0U3RvcmVSZWNv
cmQoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IElEQktl
eSYpIE9WRVJSSURFIHsgcmV0dXJuIFN0cmluZygpOyB9CisgICAgdmlydHVhbCBib29sIHB1dE9i
amVjdFN0b3JlUmVjb3JkKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlk
LCBjb25zdCBJREJLZXkmLCBjb25zdCBTdHJpbmcmIHZhbHVlLCBPYmplY3RTdG9yZVJlY29yZElk
ZW50aWZpZXIqKSBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgdm9pZCBj
bGVhck9iamVjdFN0b3JlKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlk
KSBPVkVSUklERSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlT2JqZWN0U3RvcmVSZWNvcmQo
aW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IE9iamVjdFN0
b3JlUmVjb3JkSWRlbnRpZmllciopIE9WRVJSSURFIHsgfQorICAgIHZpcnR1YWwgaW50NjRfdCBu
ZXh0QXV0b0luY3JlbWVudE51bWJlcihpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0
U3RvcmVJZCkgT1ZFUlJJREUgeyByZXR1cm4gMC4wOyB9CisgICAgdmlydHVhbCBib29sIGtleUV4
aXN0c0luT2JqZWN0U3RvcmUoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3Jl
SWQsIGNvbnN0IElEQktleSYsIE9iamVjdFN0b3JlUmVjb3JkSWRlbnRpZmllciogZm91bmRSZWNv
cmRJZGVudGlmaWVyKSBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfQorCisgICAgdmlydHVhbCBi
b29sIGZvckVhY2hPYmplY3RTdG9yZVJlY29yZChpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qg
b2JqZWN0U3RvcmVJZCwgT2JqZWN0U3RvcmVSZWNvcmRDYWxsYmFjayYpIE9WRVJSSURFIHsgcmV0
dXJuIGZhbHNlOyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0SW5kZXhlcyhpbnQ2NF90IGRhdGFi
YXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgVmVjdG9yPGludDY0X3Q+JiBmb3VuZElkcywg
VmVjdG9yPFN0cmluZz4mIGZvdW5kTmFtZXMsIFZlY3RvcjxTdHJpbmc+JiBmb3VuZEtleVBhdGhz
LCBWZWN0b3I8Ym9vbD4mIGZvdW5kVW5pcXVlRmxhZ3MsIFZlY3Rvcjxib29sPiYgZm91bmRNdWx0
aUVudHJ5RmxhZ3MpIE9WRVJSSURFIHsgfQorICAgIHZpcnR1YWwgYm9vbCBjcmVhdGVJbmRleChp
bnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgU3RyaW5nJiBu
YW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgaXNVbmlxdWUsIGJvb2wgaXNNdWx0aUVu
dHJ5LCBpbnQ2NF90JiBpbmRleElkKSBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZp
cnR1YWwgdm9pZCBkZWxldGVJbmRleChpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0
U3RvcmVJZCwgaW50NjRfdCBpbmRleElkKSBPVkVSUklERSB7IH0KKyAgICB2aXJ0dWFsIGJvb2wg
cHV0SW5kZXhEYXRhRm9yUmVjb3JkKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RT
dG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IElEQktleSYsIGNvbnN0IE9iamVjdFN0b3Jl
UmVjb3JkSWRlbnRpZmllciopIE9WRVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVh
bCBib29sIGRlbGV0ZUluZGV4RGF0YUZvclJlY29yZChpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0
X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBPYmplY3RTdG9yZVJlY29y
ZElkZW50aWZpZXIqKSBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgU3Ry
aW5nIGdldE9iamVjdFZpYUluZGV4KGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RT
dG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IElEQktleSYpIE9WRVJSSURFIHsgcmV0dXJu
IFN0cmluZygpOyB9CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQktleT4gZ2V0UHJpbWFyeUtl
eVZpYUluZGV4KGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2
NF90IGluZGV4SWQsIGNvbnN0IElEQktleSYpIE9WRVJSSURFIHsgcmV0dXJuIFBhc3NSZWZQdHI8
SURCS2V5PigpOyB9CisgICAgdmlydHVhbCBib29sIGtleUV4aXN0c0luSW5kZXgoaW50NjRfdCBk
YXRhYmFzZWlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3Qg
SURCS2V5JiBpbmRleEtleSwgUmVmUHRyPElEQktleT4mIGZvdW5kUHJpbWFyeUtleSkgT1ZFUlJJ
REUgeyByZXR1cm4gZmFsc2U7IH0KKworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxDdXJzb3I+IG9w
ZW5PYmplY3RTdG9yZUN1cnNvcihpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3Rv
cmVJZCwgY29uc3QgSURCS2V5UmFuZ2UqLCBJREJDdXJzb3I6OkRpcmVjdGlvbikgT1ZFUlJJREUg
eyByZXR1cm4gUGFzc1JlZlB0cjxDdXJzb3I+KCk7IH0KKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8
Q3Vyc29yPiBvcGVuSW5kZXhLZXlDdXJzb3IoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9i
amVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3QgSURCS2V5UmFuZ2UqLCBJREJDdXJz
b3I6OkRpcmVjdGlvbikgT1ZFUlJJREUgeyByZXR1cm4gUGFzc1JlZlB0cjxDdXJzb3I+KCk7IH0K
KyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q3Vyc29yPiBvcGVuSW5kZXhDdXJzb3IoaW50NjRfdCBk
YXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3Qg
SURCS2V5UmFuZ2UqLCBJREJDdXJzb3I6OkRpcmVjdGlvbikgT1ZFUlJJREUgeyByZXR1cm4gUGFz
c1JlZlB0cjxDdXJzb3I+KCk7IH0KKworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxUcmFuc2FjdGlv
bj4gY3JlYXRlVHJhbnNhY3Rpb24oKSBPVkVSUklERSB7IHJldHVybiBQYXNzUmVmUHRyPFRyYW5z
YWN0aW9uPigpOyB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBJ
REJGYWtlQmFja2luZ1N0b3JlX2gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>143113</attachid>
            <date>2012-05-21 15:19:31 -0700</date>
            <delta_ts>2012-05-21 16:09:56 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-85579-20120521151930.patch</filename>
            <type>text/plain</type>
            <size>22111</size>
            <attacher name="David Grogan">dgrogan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE3Nzc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTM3NjliMzYxNGU4ZmIx
ZmI3MzgzMTkyOWY5NjZhZjBjZjliN2E2NC4uYTliMjFiNTAzOWI0ZDZkZmMxZWNmNTM5ZWI5NDVi
YmNlNDZjZTkwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEyLTA1LTE4ICBEYXZp
ZCBHcm9nYW4gIDxkZ3JvZ2FuQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IEZp
cmUgZXJyb3Igd2hlbiB0aGVyZSBhcmUgcHJvYmxlbXMgb3BlbmluZyBhIERCCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NTU3OQorCisgICAgICAgIFdl
IHVzZWQgdG8gZWl0aGVyIGZpcmUgc3VjY2VzcyBvciBnZXQgaW50byBhbiBpbmZpbml0ZSBsb29w
LgorCisgICAgICAgIFJldmlld2VkIGJ5IFRvbnkgQ2hhbmcuCisKKyAgICAgICAgTmV3IHVuaXQg
dGVzdCBpbgorICAgICAgICBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQkFib3J0T25D
b3JydXB0VGVzdC5jcHAKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNl
QmFja2VuZEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1w
bDo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFz
ZUJhY2tlbmRJbXBsOjpvcGVuSW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJh
c2VCYWNrZW5kSW1wbDo6b3BlbkNvbm5lY3Rpb24pOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhl
ZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuaDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFi
YXNlQmFja2VuZEltcGw6OmNyZWF0ZSk6CisgICAgICAgIChJREJEYXRhYmFzZUJhY2tlbmRJbXBs
KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5QmFja2VuZEltcGwuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SURCRmFjdG9yeUJhY2tlbmRJbXBsOjpkZWxldGVEYXRhYmFz
ZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJGYWN0b3J5QmFja2VuZEltcGw6Om9wZW5JbnRlcm5h
bCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJbXBsLmg6
CisgICAgICAgIChJREJGYWN0b3J5QmFja2VuZEltcGwpOgorICAgICAgICAqIE1vZHVsZXMvaW5k
ZXhlZGRiL0lEQkxldmVsREJCYWNraW5nU3RvcmUuaDoKKyAgICAgICAgKElEQkxldmVsREJCYWNr
aW5nU3RvcmUpOgorCiAyMDEyLTA1LTIxICBBbmRyZXkgS29zeWFrb3YgIDxjYXNlcUBjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogW3JlZmFjdG9yaW5nXSBwcm9tb3RlIGZp
bGwvYm9yZGVyIGNvbG9ycyB1c2VkIGJ5IHRpbWVsaW5lJ3MgZnJhbWUgb3ZlcnZpZXcgdG8gVGlt
ZWxpbmVDYXRlZ29yeQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA4NDFlNmNiNjYzZGFj
NjEyMDkwY2E2NDlhNzc2YTk3NDhiMWIzYzM0Li44NzI2YTdhYzZhMDNhNzZkMTZkMWEwMWMzMjc0
ODE3MDYzNGE0YmEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBA
CisyMDEyLTA1LTE4ICBEYXZpZCBHcm9nYW4gIDxkZ3JvZ2FuQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBJbmRleGVkREI6IEZpcmUgZXJyb3Igd2hlbiB0aGVyZSBhcmUgcHJvYmxlbXMgb3Blbmlu
ZyBhIERCCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04
NTU3OQorCisgICAgICAgIFJldmlld2VkIGJ5IFRvbnkgQ2hhbmcuCisKKyAgICAgICAgKiBXZWJL
aXQuZ3lwaToKKyAgICAgICAgKiB0ZXN0cy9JREJBYm9ydE9uQ29ycnVwdFRlc3QuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoTW9ja0lEQkNhbGxiYWNrcyk6CisgICAg
ICAgIChXZWJDb3JlOjpNb2NrSURCQ2FsbGJhY2tzOjpNb2NrSURCQ2FsbGJhY2tzKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1vY2tJREJDYWxsYmFja3M6On5Nb2NrSURCQ2FsbGJhY2tzKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1vY2tJREJDYWxsYmFja3M6Om9uRXJyb3IpOgorICAgICAgICAoV2ViQ29y
ZTo6TW9ja0lEQkNhbGxiYWNrczo6b25TdWNjZXNzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tJ
REJDYWxsYmFja3M6Om9uU3VjY2Vzc1dpdGhDb250aW51YXRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6TW9ja0lEQkNhbGxiYWNrczo6b25TdWNjZXNzV2l0aFByZWZldGNoKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1vY2tJREJDYWxsYmFja3M6Om9uQmxvY2tlZCk6CisgICAgICAgIChGYWlsaW5nQmFj
a2luZ1N0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkZhaWxpbmdCYWNraW5nU3RvcmU6On5GYWls
aW5nQmFja2luZ1N0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkZhaWxpbmdCYWNraW5nU3RvcmU6
Om9wZW4pOgorICAgICAgICAoV2ViQ29yZTo6RmFpbGluZ0JhY2tpbmdTdG9yZTo6Y3JlYXRlSURC
RGF0YWJhc2VNZXRhRGF0YSk6CisgICAgICAgIChGYWlsaW5nSURCRmFjdG9yeUJhY2tlbmRJbXBs
KToKKyAgICAgICAgKFdlYkNvcmU6OkZhaWxpbmdJREJGYWN0b3J5QmFja2VuZEltcGw6On5GYWls
aW5nSURCRmFjdG9yeUJhY2tlbmRJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OkZhaWxpbmdJREJG
YWN0b3J5QmFja2VuZEltcGw6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpGYWlsaW5nSURC
RmFjdG9yeUJhY2tlbmRJbXBsOjpyZW1vdmVJREJEYXRhYmFzZUJhY2tlbmQpOgorICAgICAgICAo
V2ViQ29yZTo6RmFpbGluZ0lEQkZhY3RvcnlCYWNrZW5kSW1wbDo6b3BlbkJhY2tpbmdTdG9yZSk6
CisgICAgICAgIChXZWJDb3JlOjpURVNUKToKKyAgICAgICAgKiB0ZXN0cy9JREJGYWtlQmFja2lu
Z1N0b3JlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkxldmVsREJCYWNraW5nU3RvcmUuaC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoSURC
RmFrZUJhY2tpbmdTdG9yZSk6CisKIDIwMTItMDUtMjAgIEtpbnVrbyBZYXN1ZGEgIDxraW51a29A
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIENsZWFudXA6IFJlbW92ZSBXZWJDb3JlOjpyZXZlYWxG
b2xkZXJJbk9TKCkgd2hpY2ggaXMgbm8gbG9uZ2VyIHVzZWQgYW55d2hlcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5k
SW1wbC5jcHAKaW5kZXggYjA1YjMyODYzZDA3MmZiNjU3ZGNhOWM4ZDY0ZTBiODUxYWQwOTI0NS4u
N2ZjNGI5YmI4NmFiZGM2Y2YwOGRiNGI1ZmZmY2I3ZjE1Y2IyOWNmMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5k
SW1wbC5jcHAKQEAgLTEwMywxOSArMTAzLDE3IEBAIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OklE
QkRhdGFiYXNlQmFja2VuZEltcGwoY29uc3QgU3RyaW5nJiBuYW1lLCBJREJCYWNraW5nU3RvCiAg
ICAgLCBtX3RyYW5zYWN0aW9uQ29vcmRpbmF0b3IoY29vcmRpbmF0b3IpCiB7CiAgICAgQVNTRVJU
KCFtX25hbWUuaXNOdWxsKCkpOwotICAgIG9wZW5JbnRlcm5hbCgpOwogfQogCi12b2lkIElEQkRh
dGFiYXNlQmFja2VuZEltcGw6Om9wZW5JbnRlcm5hbCgpCitib29sIElEQkRhdGFiYXNlQmFja2Vu
ZEltcGw6Om9wZW5JbnRlcm5hbCgpCiB7CiAgICAgYm9vbCBzdWNjZXNzID0gbV9iYWNraW5nU3Rv
cmUtPmdldElEQkRhdGFiYXNlTWV0YURhdGEobV9uYW1lLCBtX3ZlcnNpb24sIG1faWQpOwogICAg
IEFTU0VSVChzdWNjZXNzID09IChtX2lkICE9IEludmFsaWRJZCkpOwogICAgIGlmIChzdWNjZXNz
KSB7CiAgICAgICAgIGxvYWRPYmplY3RTdG9yZXMoKTsKLSAgICAgICAgcmV0dXJuOworICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICB9Ci0gICAgaWYgKCFtX2JhY2tpbmdTdG9yZS0+Y3JlYXRlSURC
RGF0YWJhc2VNZXRhRGF0YShtX25hbWUsIG1fdmVyc2lvbiwgbV9pZCkpCi0gICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOyAvLyBGSVhNRTogTmVlZCBiZXR0ZXIgZXJyb3IgaGFuZGxpbmcuCisg
ICAgcmV0dXJuIG1fYmFja2luZ1N0b3JlLT5jcmVhdGVJREJEYXRhYmFzZU1ldGFEYXRhKG1fbmFt
ZSwgbV92ZXJzaW9uLCBtX2lkKTsKIH0KIAogSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6fklEQkRh
dGFiYXNlQmFja2VuZEltcGwoKQpAQCAtMzI1LDkgKzMyMywxMCBAQCB2b2lkIElEQkRhdGFiYXNl
QmFja2VuZEltcGw6Om9wZW5Db25uZWN0aW9uKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxs
YmFja3MpCiAgICAgaWYgKCFtX3BlbmRpbmdEZWxldGVDYWxscy5pc0VtcHR5KCkgfHwgbV9ydW5u
aW5nVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uIHx8ICFtX3BlbmRpbmdTZXRWZXJzaW9uQ2FsbHMu
aXNFbXB0eSgpKQogICAgICAgICBtX3BlbmRpbmdPcGVuQ2FsbHMuYXBwZW5kKFBlbmRpbmdPcGVu
Q2FsbDo6Y3JlYXRlKGNhbGxiYWNrcykpOwogICAgIGVsc2UgewotICAgICAgICBpZiAobV9pZCA9
PSBJbnZhbGlkSWQpCi0gICAgICAgICAgICBvcGVuSW50ZXJuYWwoKTsKLSAgICAgICAgY2FsbGJh
Y2tzLT5vblN1Y2Nlc3ModGhpcyk7CisgICAgICAgIGlmIChtX2lkID09IEludmFsaWRJZCAmJiAh
b3BlbkludGVybmFsKCkpCisgICAgICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJh
c2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVTktOT1dOX0VSUiwgIkludGVy
bmFsIGVycm9yLiIpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY2FsbGJhY2tzLT5vblN1
Y2Nlc3ModGhpcyk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmgKaW5kZXggMTA4NmViMTZl
Yjg3ZDE5ZjAyOGUzZjRjOGM0N2I5MDVkODY3OGYwNS4uOTkwYmM4ZjkzNzljMmY2NGU1MTBjNjFi
N2Y4OGQ5YTI5Y2M0YTZmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuaApAQCAtNDcsNyArNDcsMTIgQEAg
Y2xhc3MgSURCRGF0YWJhc2VCYWNrZW5kSW1wbCA6IHB1YmxpYyBJREJEYXRhYmFzZUJhY2tlbmRJ
bnRlcmZhY2UgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFj
a2VuZEltcGw+IGNyZWF0ZShjb25zdCBTdHJpbmcmIG5hbWUsIElEQkJhY2tpbmdTdG9yZSogZGF0
YWJhc2UsIElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3IqIGNvb3JkaW5hdG9yLCBJREJGYWN0b3J5
QmFja2VuZEltcGwqIGZhY3RvcnksIGNvbnN0IFN0cmluZyYgdW5pcXVlSWRlbnRpZmllcikKICAg
ICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSURCRGF0YWJhc2VCYWNrZW5kSW1wbChu
YW1lLCBkYXRhYmFzZSwgY29vcmRpbmF0b3IsIGZhY3RvcnksIHVuaXF1ZUlkZW50aWZpZXIpKTsK
KyAgICAgICAgUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEltcGw+IGJhY2tlbmQgPSBhZG9wdFJl
ZihuZXcgSURCRGF0YWJhc2VCYWNrZW5kSW1wbChuYW1lLCBkYXRhYmFzZSwgY29vcmRpbmF0b3Is
IGZhY3RvcnksIHVuaXF1ZUlkZW50aWZpZXIpKTsKKyAgICAgICAgaWYgKCFiYWNrZW5kLT5vcGVu
SW50ZXJuYWwoKSkgeworICAgICAgICAgICAgYmFja2VuZC5jbGVhcigpOworICAgICAgICAgICAg
cmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGJhY2tlbmQucmVsZWFzZSgpOwog
ICAgIH0KICAgICB2aXJ0dWFsIH5JREJEYXRhYmFzZUJhY2tlbmRJbXBsKCk7CiAKQEAgLTc5LDcg
Kzg0LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBJREJEYXRhYmFzZUJhY2tlbmRJbXBsKGNv
bnN0IFN0cmluZyYgbmFtZSwgSURCQmFja2luZ1N0b3JlKiBkYXRhYmFzZSwgSURCVHJhbnNhY3Rp
b25Db29yZGluYXRvciosIElEQkZhY3RvcnlCYWNrZW5kSW1wbCosIGNvbnN0IFN0cmluZyYgdW5p
cXVlSWRlbnRpZmllcik7CiAKLSAgICB2b2lkIG9wZW5JbnRlcm5hbCgpOworICAgIGJvb2wgb3Bl
bkludGVybmFsKCk7CiAgICAgdm9pZCBsb2FkT2JqZWN0U3RvcmVzKCk7CiAgICAgdm9pZCBwcm9j
ZXNzUGVuZGluZ0NhbGxzKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5QmFja2VuZEltcGwuY3BwCmluZGV4IGY1YjljODc3NDA2
NzQzZjBlNWE2MDlhNGNjZTlkNWU0ZGEyOWEzMWMuLjllYjExNjcwOTI2ZWUzNmRiYWMxMmE3YjNi
YjNjNjQ4MDdlZTgwYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJbXBsLmNwcApAQCAtMTI5LDggKzEyOSwxMSBA
QCB2b2lkIElEQkZhY3RvcnlCYWNrZW5kSW1wbDo6ZGVsZXRlRGF0YWJhc2UoY29uc3QgU3RyaW5n
JiBuYW1lLCBQYXNzUmVmUHRyPElEQkNhbAogICAgIH0KIAogICAgIFJlZlB0cjxJREJEYXRhYmFz
ZUJhY2tlbmRJbXBsPiBkYXRhYmFzZUJhY2tlbmQgPSBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpj
cmVhdGUobmFtZSwgYmFja2luZ1N0b3JlLmdldCgpLCBtX3RyYW5zYWN0aW9uQ29vcmRpbmF0b3Iu
Z2V0KCksIHRoaXMsIHVuaXF1ZUlkZW50aWZpZXIpOwotICAgIG1fZGF0YWJhc2VCYWNrZW5kTWFw
LnNldCh1bmlxdWVJZGVudGlmaWVyLCBkYXRhYmFzZUJhY2tlbmQuZ2V0KCkpOwotICAgIGRhdGFi
YXNlQmFja2VuZC0+ZGVsZXRlRGF0YWJhc2UoY2FsbGJhY2tzKTsKKyAgICBpZiAoZGF0YWJhc2VC
YWNrZW5kKSB7CisgICAgICAgIG1fZGF0YWJhc2VCYWNrZW5kTWFwLnNldCh1bmlxdWVJZGVudGlm
aWVyLCBkYXRhYmFzZUJhY2tlbmQuZ2V0KCkpOworICAgICAgICBkYXRhYmFzZUJhY2tlbmQtPmRl
bGV0ZURhdGFiYXNlKGNhbGxiYWNrcyk7CisgICAgfSBlbHNlCisgICAgICAgIGNhbGxiYWNrcy0+
b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVO
S05PV05fRVJSLCAiSW50ZXJuYWwgZXJyb3IuIikpOwogfQogCiBQYXNzUmVmUHRyPElEQkJhY2tp
bmdTdG9yZT4gSURCRmFjdG9yeUJhY2tlbmRJbXBsOjpvcGVuQmFja2luZ1N0b3JlKFBhc3NSZWZQ
dHI8U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luLCBjb25zdCBTdHJpbmcmIGRhdGFEaXJl
Y3RvcnkpCkBAIC0xNzcsOCArMTgwLDExIEBAIHZvaWQgSURCRmFjdG9yeUJhY2tlbmRJbXBsOjpv
cGVuSW50ZXJuYWwoY29uc3QgU3RyaW5nJiBuYW1lLCBJREJDYWxsYmFja3MqIGNhbGxiCiAgICAg
fQogCiAgICAgUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEltcGw+IGRhdGFiYXNlQmFja2VuZCA9
IElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNyZWF0ZShuYW1lLCBiYWNraW5nU3RvcmUuZ2V0KCks
IG1fdHJhbnNhY3Rpb25Db29yZGluYXRvci5nZXQoKSwgdGhpcywgdW5pcXVlSWRlbnRpZmllcik7
Ci0gICAgY2FsbGJhY2tzLT5vblN1Y2Nlc3MoUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVy
ZmFjZT4oZGF0YWJhc2VCYWNrZW5kLmdldCgpKS5yZWxlYXNlKCkpOwotICAgIG1fZGF0YWJhc2VC
YWNrZW5kTWFwLnNldCh1bmlxdWVJZGVudGlmaWVyLCBkYXRhYmFzZUJhY2tlbmQuZ2V0KCkpOwor
ICAgIGlmIChkYXRhYmFzZUJhY2tlbmQpIHsKKyAgICAgICAgY2FsbGJhY2tzLT5vblN1Y2Nlc3Mo
UmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4oZGF0YWJhc2VCYWNrZW5kLmdldCgp
KS5yZWxlYXNlKCkpOworICAgICAgICBtX2RhdGFiYXNlQmFja2VuZE1hcC5zZXQodW5pcXVlSWRl
bnRpZmllciwgZGF0YWJhc2VCYWNrZW5kLmdldCgpKTsKKyAgICB9IGVsc2UKKyAgICAgICAgY2Fs
bGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2Vw
dGlvbjo6VU5LTk9XTl9FUlIsICJJbnRlcm5hbCBlcnJvci4iKSk7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCRmFjdG9yeUJhY2tlbmRJbXBsLmgKaW5kZXggNzk4MjE2OGJlMzM3ZGM5NTZhMGI2NWJm
MzhiMThkNDY4ZGUxYmJmOS4uYTM5ODllMmQzYTE3MDA4MDVmNzJiZTRhYmUwNjUwZmIwMTU2ZDI1
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9y
eUJhY2tlbmRJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
RmFjdG9yeUJhY2tlbmRJbXBsLmgKQEAgLTUxLDkgKzUxLDkgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgfklEQkZhY3RvcnlCYWNrZW5kSW1wbCgpOwogCiAgICAgLy8gTm90aWZpY2F0aW9ucyBmcm9t
IHdlYWsgcG9pbnRlcnMuCi0gICAgdm9pZCByZW1vdmVJREJEYXRhYmFzZUJhY2tlbmQoY29uc3Qg
U3RyaW5nJiB1bmlxdWVJZGVudGlmaWVyKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlSURCRGF0
YWJhc2VCYWNrZW5kKGNvbnN0IFN0cmluZyYgdW5pcXVlSWRlbnRpZmllcik7CiAgICAgdm9pZCBh
ZGRJREJCYWNraW5nU3RvcmUoY29uc3QgU3RyaW5nJiBmaWxlSWRlbnRpZmllciwgSURCQmFja2lu
Z1N0b3JlKik7Ci0gICAgdm9pZCByZW1vdmVJREJCYWNraW5nU3RvcmUoY29uc3QgU3RyaW5nJiBm
aWxlSWRlbnRpZmllcik7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZUlEQkJhY2tpbmdTdG9yZShj
b25zdCBTdHJpbmcmIGZpbGVJZGVudGlmaWVyKTsKIAogICAgIHZpcnR1YWwgdm9pZCBnZXREYXRh
YmFzZU5hbWVzKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgUGFzc1JlZlB0cjxTZWN1cml0eU9y
aWdpbj4sIEZyYW1lKiwgY29uc3QgU3RyaW5nJiBkYXRhRGlyKTsKIApAQCAtNjEsOSArNjEsMTEg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBvcGVuRnJvbVdvcmtlcihjb25zdCBTdHJpbmcm
IG5hbWUsIElEQkNhbGxiYWNrcyosIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+LCBXb3JrZXJD
b250ZXh0KiwgY29uc3QgU3RyaW5nJiBkYXRhRGlyKTsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRl
RGF0YWJhc2UoY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIFBh
c3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+LCBGcmFtZSosIGNvbnN0IFN0cmluZyYgZGF0YURpcik7
CiAKLXByaXZhdGU6Citwcm90ZWN0ZWQ6CiAgICAgSURCRmFjdG9yeUJhY2tlbmRJbXBsKCk7Ci0g
ICAgUGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmU+IG9wZW5CYWNraW5nU3RvcmUoUGFzc1JlZlB0
cjxTZWN1cml0eU9yaWdpbj4sIGNvbnN0IFN0cmluZyYgZGF0YURpcik7CisgICAgdmlydHVhbCBQ
YXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZT4gb3BlbkJhY2tpbmdTdG9yZShQYXNzUmVmUHRyPFNl
Y3VyaXR5T3JpZ2luPiwgY29uc3QgU3RyaW5nJiBkYXRhRGlyKTsKKworcHJpdmF0ZToKICAgICB2
b2lkIG9wZW5JbnRlcm5hbChjb25zdCBTdHJpbmcmIG5hbWUsIElEQkNhbGxiYWNrcyosIFBhc3NS
ZWZQdHI8U2VjdXJpdHlPcmlnaW4+LCBjb25zdCBTdHJpbmcmIGRhdGFEaXIpOwogCiAgICAgdHlw
ZWRlZiBIYXNoTWFwPFN0cmluZywgSURCRGF0YWJhc2VCYWNrZW5kSW1wbCo+IElEQkRhdGFiYXNl
QmFja2VuZE1hcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkxldmVsREJCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkxldmVsREJCYWNraW5nU3RvcmUuaAppbmRleCBlMTdhNmYxZmIyNzljMmExOTFmZWQz
MzFjOTk3NjZkMTA2MmQ0NmY1Li5iNGNiN2FiYWUwNzRhMmMxYjAxYzUzYjZjYzlmMjBlNzQ1N2Iz
MDVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZl
bERCQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5oCkBAIC04MCw5ICs4MCwxMCBAQCBwdWJsaWM6CiAKICAg
ICBzdGF0aWMgYm9vbCBiYWNraW5nU3RvcmVFeGlzdHMoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBT
dHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgcGF0aEJhc2UpOwogCi1wcml2YXRlOgorcHJvdGVj
dGVkOgogICAgIElEQkxldmVsREJCYWNraW5nU3RvcmUoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVy
LCBJREJGYWN0b3J5QmFja2VuZEltcGwqLCBQYXNzT3duUHRyPExldmVsREJEYXRhYmFzZT4pOwog
Citwcml2YXRlOgogICAgIFN0cmluZyBtX2lkZW50aWZpZXI7CiAgICAgUmVmUHRyPElEQkZhY3Rv
cnlCYWNrZW5kSW1wbD4gbV9mYWN0b3J5OwogICAgIE93blB0cjxMZXZlbERCRGF0YWJhc2U+IG1f
ZGI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaQppbmRleCBjZmIxZDdiNGUyNWI5ZTk4MTQy
NjM1YjA3YjNkNjA5YThmMDI2ZWFjLi43MmNhYjE4Mjc5NTljMTYzOTAyM2E3ZmIxNmUxMTBlYTAx
ZTZjOWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkKQEAgLTEwNiw3ICsxMDYsOSBA
QAogICAgICAgICAgICAgJ3Rlc3RzL0ZyYW1lVGVzdEhlbHBlcnMuY3BwJywKICAgICAgICAgICAg
ICd0ZXN0cy9GcmFtZVRlc3RIZWxwZXJzLmgnLAogICAgICAgICAgICAgJ3Rlc3RzL0dyYXBoaWNz
TGF5ZXJDaHJvbWl1bVRlc3QuY3BwJywKKyAgICAgICAgICAgICd0ZXN0cy9JREJBYm9ydE9uQ29y
cnVwdFRlc3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9JREJCaW5kaW5nVXRpbGl0aWVzVGVz
dC5jcHAnLAorICAgICAgICAgICAgJ3Rlc3RzL0lEQkZha2VCYWNraW5nU3RvcmUuaCcsCiAgICAg
ICAgICAgICAndGVzdHMvSURCS2V5UGF0aFRlc3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9J
REJMZXZlbERCQ29kaW5nVGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL0ltYWdlTGF5ZXJD
aHJvbWl1bVRlc3QuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvSURCQWJvcnRPbkNvcnJ1cHRUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvSURCQWJvcnRPbkNvcnJ1cHRUZXN0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMGEwOGQ1OWU3ZTExZjBm
NjVhZTAwOWFmN2JiZDc3M2NkMTEyNTZlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9JREJBYm9ydE9uQ29ycnVwdFRlc3QuY3BwCkBAIC0wLDAgKzEsMTA3
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgor
ICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIklEQkZhY3RvcnlCYWNr
ZW5kSW1wbC5oIgorI2luY2x1ZGUgIklEQkZha2VCYWNraW5nU3RvcmUuaCIKKyNpbmNsdWRlICJT
ZWN1cml0eU9yaWdpbi5oIgorI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgorCisjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCisKK3VzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgeworCitjbGFzcyBNb2NrSURCQ2FsbGJhY2tzIDog
cHVibGljIElEQkNhbGxiYWNrcyB7CisgcHVibGljOgorICAgIE1vY2tJREJDYWxsYmFja3MoKSA6
IG1fd2FzRXJyb3JDYWxsZWQoZmFsc2UpIHsgfQorCisgICAgdmlydHVhbCB+TW9ja0lEQkNhbGxi
YWNrcygpCisgICAgeworICAgICAgICBFWFBFQ1RfVFJVRShtX3dhc0Vycm9yQ2FsbGVkKTsKKyAg
ICB9CisgICAgdmlydHVhbCB2b2lkIG9uRXJyb3IoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUVycm9y
PikKKyAgICB7CisgICAgICAgIG1fd2FzRXJyb3JDYWxsZWQgPSB0cnVlOworICAgIH0KKyAgICB2
aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4pIHsgfQorICAg
IHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW50ZXJm
YWNlPikgeyB9CisgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQkRhdGFi
YXNlQmFja2VuZEludGVyZmFjZT4pCisgICAgeworICAgICAgICBFWFBFQ1RfVFJVRShmYWxzZSk7
CisgICAgfQorICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJLZXk+KSB7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25C
YWNrZW5kSW50ZXJmYWNlPikgeyB9CisgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVm
UHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4pIHsgfQorICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nl
c3NXaXRoQ29udGludWF0aW9uKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vzc1dpdGhQ
cmVmZXRjaChjb25zdCBWZWN0b3I8UmVmUHRyPElEQktleT4gPiYsIGNvbnN0IFZlY3RvcjxSZWZQ
dHI8SURCS2V5PiA+JiwgY29uc3QgVmVjdG9yPFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+
ID4mKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgb25CbG9ja2VkKCkgeyB9Citwcml2YXRlOgorICAg
IGJvb2wgbV93YXNFcnJvckNhbGxlZDsKK307CisKK2NsYXNzIEZhaWxpbmdCYWNraW5nU3RvcmUg
OiBwdWJsaWMgSURCRmFrZUJhY2tpbmdTdG9yZSB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+RmFp
bGluZ0JhY2tpbmdTdG9yZSgpIHsgfQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQkJhY2tpbmdT
dG9yZT4gb3BlbigpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEZhaWxpbmdC
YWNraW5nU3RvcmUpOworICAgIH0KKyAgICB2aXJ0dWFsIGJvb2wgY3JlYXRlSURCRGF0YWJhc2VN
ZXRhRGF0YShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBpbnQ2NF90JikKKyAgICB7Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9OworCitjbGFzcyBGYWlsaW5nSURCRmFjdG9y
eUJhY2tlbmRJbXBsIDogcHVibGljIElEQkZhY3RvcnlCYWNrZW5kSW1wbCB7CitwdWJsaWM6Cisg
ICAgdmlydHVhbCB+RmFpbGluZ0lEQkZhY3RvcnlCYWNrZW5kSW1wbCgpIHsgfQorICAgIHN0YXRp
YyBQYXNzUmVmUHRyPEZhaWxpbmdJREJGYWN0b3J5QmFja2VuZEltcGw+IGNyZWF0ZSgpCisgICAg
eworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEZhaWxpbmdJREJGYWN0b3J5QmFja2VuZElt
cGwpOworICAgIH0KKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlSURCRGF0YWJhc2VCYWNrZW5kKGNv
bnN0IFdURjo6U3RyaW5nICYpIHsgfQorCitwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCBQYXNzUmVm
UHRyPElEQkJhY2tpbmdTdG9yZT4gb3BlbkJhY2tpbmdTdG9yZShQYXNzUmVmUHRyPFNlY3VyaXR5
T3JpZ2luPiBwcnBPcmlnaW4sIGNvbnN0IFN0cmluZyYgZGF0YURpcikKKyAgICB7CisgICAgICAg
IHJldHVybiBGYWlsaW5nQmFja2luZ1N0b3JlOjpvcGVuKCk7CisgICAgfQorfTsKKworVEVTVChJ
REJBYm9ydFRlc3QsIFRoZVRlc3QpCit7CisgICAgUmVmUHRyPElEQkZhY3RvcnlCYWNrZW5kSW1w
bD4gZmFjdG9yeSA9IEZhaWxpbmdJREJGYWN0b3J5QmFja2VuZEltcGw6OmNyZWF0ZSgpOworICAg
IGNvbnN0IFN0cmluZyYgbmFtZSA9ICJkYiBuYW1lIjsKKyAgICBNb2NrSURCQ2FsbGJhY2tzIGNh
bGxiYWNrczsKKyAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG9yaWdpbiA9IFNlY3VyaXR5T3Jp
Z2luOjpjcmVhdGUoImh0dHAiLCAibG9jYWxob3N0IiwgODEpOworICAgIGZhY3RvcnktPm9wZW4o
bmFtZSwgJmNhbGxiYWNrcywgb3JpZ2luLCAwIC8qRnJhbWUqLywgU3RyaW5nKCkgLypwYXRoKi8p
OworfQorCit9IC8vIG5hbWVzcGFjZQorCisjZW5kaWYgLy8gRU5BQkxFKElOREVYRURfREFUQUJB
U0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQkZha2VCYWNr
aW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCRmFrZUJhY2tpbmdT
dG9yZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmE5MTYwYThhMTliMjE3ZjE4NTE3YThkYzEzZGU1OGUzNzgyNzQw
NGQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQkZh
a2VCYWNraW5nU3RvcmUuaApAQCAtMCwwICsxLDc0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJV
VE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBJREJGYWtl
QmFja2luZ1N0b3JlX2gKKyNkZWZpbmUgSURCRmFrZUJhY2tpbmdTdG9yZV9oCisKKyNpbmNsdWRl
ICJJREJCYWNraW5nU3RvcmUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBJREJG
YWtlQmFja2luZ1N0b3JlIDogcHVibGljIElEQkJhY2tpbmdTdG9yZSB7CitwdWJsaWM6CisgICAg
dmlydHVhbCB2b2lkIGdldERhdGFiYXNlTmFtZXMoVmVjdG9yPFN0cmluZz4mIGZvdW5kTmFtZXMp
IE9WRVJSSURFIHsgfQorICAgIHZpcnR1YWwgYm9vbCBnZXRJREJEYXRhYmFzZU1ldGFEYXRhKGNv
bnN0IFN0cmluZyYgbmFtZSwgU3RyaW5nJiBmb3VuZFZlcnNpb24sIGludDY0X3QmIGZvdW5kSWQp
IE9WRVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGNyZWF0ZUlEQkRh
dGFiYXNlTWV0YURhdGEoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZlcnNpb24s
IGludDY0X3QmIHJvd0lkKSBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBi
b29sIHVwZGF0ZUlEQkRhdGFiYXNlTWV0YURhdGEoaW50NjRfdCByb3dJZCwgY29uc3QgU3RyaW5n
JiB2ZXJzaW9uKSBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBk
ZWxldGVEYXRhYmFzZShjb25zdCBTdHJpbmcmIG5hbWUpIE9WRVJSSURFIHsgcmV0dXJuIGZhbHNl
OyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0T2JqZWN0U3RvcmVzKGludDY0X3QgZGF0YWJhc2VJ
ZCwgVmVjdG9yPGludDY0X3Q+JiBmb3VuZElkcywgVmVjdG9yPFN0cmluZz4mIGZvdW5kTmFtZXMs
IFZlY3RvcjxTdHJpbmc+JiBmb3VuZEtleVBhdGhzLCBWZWN0b3I8Ym9vbD4mIGZvdW5kQXV0b0lu
Y3JlbWVudEZsYWdzKSBPVkVSUklERSB7IH0KKyAgICB2aXJ0dWFsIGJvb2wgY3JlYXRlT2JqZWN0
U3RvcmUoaW50NjRfdCBkYXRhYmFzZUlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmlu
ZyYga2V5UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50LCBpbnQ2NF90JiBhc3NpZ25lZE9iamVjdFN0
b3JlSWQpIE9WRVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCB2b2lkIGRlbGV0
ZU9iamVjdFN0b3JlKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkKSBP
VkVSUklERSB7IH0KKworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxPYmplY3RTdG9yZVJlY29yZElk
ZW50aWZpZXI+IGNyZWF0ZUludmFsaWRSZWNvcmRJZGVudGlmaWVyKCkgT1ZFUlJJREUgeyByZXR1
cm4gUGFzc1JlZlB0cjxPYmplY3RTdG9yZVJlY29yZElkZW50aWZpZXI+KCk7IH0KKworICAgIHZp
cnR1YWwgU3RyaW5nIGdldE9iamVjdFN0b3JlUmVjb3JkKGludDY0X3QgZGF0YWJhc2VJZCwgaW50
NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBJREJLZXkmKSBPVkVSUklERSB7IHJldHVybiBTdHJp
bmcoKTsgfQorICAgIHZpcnR1YWwgYm9vbCBwdXRPYmplY3RTdG9yZVJlY29yZChpbnQ2NF90IGRh
dGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgSURCS2V5JiwgY29uc3QgU3Ry
aW5nJiB2YWx1ZSwgT2JqZWN0U3RvcmVSZWNvcmRJZGVudGlmaWVyKikgT1ZFUlJJREUgeyByZXR1
cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIHZvaWQgY2xlYXJPYmplY3RTdG9yZShpbnQ2NF90IGRh
dGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCkgT1ZFUlJJREUgeyB9CisgICAgdmlydHVh
bCB2b2lkIGRlbGV0ZU9iamVjdFN0b3JlUmVjb3JkKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRf
dCBvYmplY3RTdG9yZUlkLCBjb25zdCBPYmplY3RTdG9yZVJlY29yZElkZW50aWZpZXIqKSBPVkVS
UklERSB7IH0KKyAgICB2aXJ0dWFsIGludDY0X3QgbmV4dEF1dG9JbmNyZW1lbnROdW1iZXIoaW50
NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQpIE9WRVJSSURFIHsgcmV0dXJu
IDAuMDsgfQorICAgIHZpcnR1YWwgYm9vbCBrZXlFeGlzdHNJbk9iamVjdFN0b3JlKGludDY0X3Qg
ZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBJREJLZXkmLCBPYmplY3RT
dG9yZVJlY29yZElkZW50aWZpZXIqIGZvdW5kUmVjb3JkSWRlbnRpZmllcikgT1ZFUlJJREUgeyBy
ZXR1cm4gZmFsc2U7IH0KKworICAgIHZpcnR1YWwgYm9vbCBmb3JFYWNoT2JqZWN0U3RvcmVSZWNv
cmQoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIE9iamVjdFN0b3Jl
UmVjb3JkQ2FsbGJhY2smKSBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfQorCisgICAgdmlydHVh
bCB2b2lkIGdldEluZGV4ZXMoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3Jl
SWQsIFZlY3RvcjxpbnQ2NF90PiYgZm91bmRJZHMsIFZlY3RvcjxTdHJpbmc+JiBmb3VuZE5hbWVz
LCBWZWN0b3I8U3RyaW5nPiYgZm91bmRLZXlQYXRocywgVmVjdG9yPGJvb2w+JiBmb3VuZFVuaXF1
ZUZsYWdzLCBWZWN0b3I8Ym9vbD4mIGZvdW5kTXVsdGlFbnRyeUZsYWdzKSBPVkVSUklERSB7IH0K
KyAgICB2aXJ0dWFsIGJvb2wgY3JlYXRlSW5kZXgoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90
IG9iamVjdFN0b3JlSWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRo
LCBib29sIGlzVW5pcXVlLCBib29sIGlzTXVsdGlFbnRyeSwgaW50NjRfdCYgaW5kZXhJZCkgT1ZF
UlJJREUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlSW5kZXgoaW50
NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCkg
T1ZFUlJJREUgeyB9CisgICAgdmlydHVhbCBib29sIHB1dEluZGV4RGF0YUZvclJlY29yZChpbnQ2
NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBj
b25zdCBJREJLZXkmLCBjb25zdCBPYmplY3RTdG9yZVJlY29yZElkZW50aWZpZXIqKSBPVkVSUklE
RSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBkZWxldGVJbmRleERhdGFGb3JS
ZWNvcmQoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3Qg
aW5kZXhJZCwgY29uc3QgT2JqZWN0U3RvcmVSZWNvcmRJZGVudGlmaWVyKikgT1ZFUlJJREUgeyBy
ZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIFN0cmluZyBnZXRPYmplY3RWaWFJbmRleChpbnQ2
NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBj
b25zdCBJREJLZXkmKSBPVkVSUklERSB7IHJldHVybiBTdHJpbmcoKTsgfQorICAgIHZpcnR1YWwg
UGFzc1JlZlB0cjxJREJLZXk+IGdldFByaW1hcnlLZXlWaWFJbmRleChpbnQ2NF90IGRhdGFiYXNl
SWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBJREJLZXkm
KSBPVkVSUklERSB7IHJldHVybiBQYXNzUmVmUHRyPElEQktleT4oKTsgfQorICAgIHZpcnR1YWwg
Ym9vbCBrZXlFeGlzdHNJbkluZGV4KGludDY0X3QgZGF0YWJhc2VpZCwgaW50NjRfdCBvYmplY3RT
dG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IElEQktleSYgaW5kZXhLZXksIFJlZlB0cjxJ
REJLZXk+JiBmb3VuZFByaW1hcnlLZXkpIE9WRVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9CisKKyAg
ICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q3Vyc29yPiBvcGVuT2JqZWN0U3RvcmVDdXJzb3IoaW50NjRf
dCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IElEQktleVJhbmdlKiwg
SURCQ3Vyc29yOjpEaXJlY3Rpb24pIE9WRVJSSURFIHsgcmV0dXJuIFBhc3NSZWZQdHI8Q3Vyc29y
PigpOyB9CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPEN1cnNvcj4gb3BlbkluZGV4S2V5Q3Vyc29y
KGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4
SWQsIGNvbnN0IElEQktleVJhbmdlKiwgSURCQ3Vyc29yOjpEaXJlY3Rpb24pIE9WRVJSSURFIHsg
cmV0dXJuIFBhc3NSZWZQdHI8Q3Vyc29yPigpOyB9CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPEN1
cnNvcj4gb3BlbkluZGV4Q3Vyc29yKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RT
dG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IElEQktleVJhbmdlKiwgSURCQ3Vyc29yOjpE
aXJlY3Rpb24pIE9WRVJSSURFIHsgcmV0dXJuIFBhc3NSZWZQdHI8Q3Vyc29yPigpOyB9CisKKyAg
ICB2aXJ0dWFsIFBhc3NSZWZQdHI8VHJhbnNhY3Rpb24+IGNyZWF0ZVRyYW5zYWN0aW9uKCkgT1ZF
UlJJREUgeyByZXR1cm4gUGFzc1JlZlB0cjxUcmFuc2FjdGlvbj4oKTsgfQorfTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gSURCRmFrZUJhY2tpbmdTdG9yZV9oCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>143124</attachid>
            <date>2012-05-21 16:10:00 -0700</date>
            <delta_ts>2012-05-21 16:32:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-85579-20120521161000.patch</filename>
            <type>text/plain</type>
            <size>22941</size>
            <attacher name="David Grogan">dgrogan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE3Nzc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTM3NjliMzYxNGU4ZmIx
ZmI3MzgzMTkyOWY5NjZhZjBjZjliN2E2NC4uYTliMjFiNTAzOWI0ZDZkZmMxZWNmNTM5ZWI5NDVi
YmNlNDZjZTkwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEyLTA1LTE4ICBEYXZp
ZCBHcm9nYW4gIDxkZ3JvZ2FuQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IEZp
cmUgZXJyb3Igd2hlbiB0aGVyZSBhcmUgcHJvYmxlbXMgb3BlbmluZyBhIERCCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NTU3OQorCisgICAgICAgIFdl
IHVzZWQgdG8gZWl0aGVyIGZpcmUgc3VjY2VzcyBvciBnZXQgaW50byBhbiBpbmZpbml0ZSBsb29w
LgorCisgICAgICAgIFJldmlld2VkIGJ5IFRvbnkgQ2hhbmcuCisKKyAgICAgICAgTmV3IHVuaXQg
dGVzdCBpbgorICAgICAgICBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQkFib3J0T25D
b3JydXB0VGVzdC5jcHAKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNl
QmFja2VuZEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1w
bDo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFz
ZUJhY2tlbmRJbXBsOjpvcGVuSW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJh
c2VCYWNrZW5kSW1wbDo6b3BlbkNvbm5lY3Rpb24pOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhl
ZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuaDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFi
YXNlQmFja2VuZEltcGw6OmNyZWF0ZSk6CisgICAgICAgIChJREJEYXRhYmFzZUJhY2tlbmRJbXBs
KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5QmFja2VuZEltcGwuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SURCRmFjdG9yeUJhY2tlbmRJbXBsOjpkZWxldGVEYXRhYmFz
ZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJGYWN0b3J5QmFja2VuZEltcGw6Om9wZW5JbnRlcm5h
bCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJbXBsLmg6
CisgICAgICAgIChJREJGYWN0b3J5QmFja2VuZEltcGwpOgorICAgICAgICAqIE1vZHVsZXMvaW5k
ZXhlZGRiL0lEQkxldmVsREJCYWNraW5nU3RvcmUuaDoKKyAgICAgICAgKElEQkxldmVsREJCYWNr
aW5nU3RvcmUpOgorCiAyMDEyLTA1LTIxICBBbmRyZXkgS29zeWFrb3YgIDxjYXNlcUBjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogW3JlZmFjdG9yaW5nXSBwcm9tb3RlIGZp
bGwvYm9yZGVyIGNvbG9ycyB1c2VkIGJ5IHRpbWVsaW5lJ3MgZnJhbWUgb3ZlcnZpZXcgdG8gVGlt
ZWxpbmVDYXRlZ29yeQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA4NDFlNmNiNjYzZGFj
NjEyMDkwY2E2NDlhNzc2YTk3NDhiMWIzYzM0Li44NzI2YTdhYzZhMDNhNzZkMTZkMWEwMWMzMjc0
ODE3MDYzNGE0YmEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBA
CisyMDEyLTA1LTE4ICBEYXZpZCBHcm9nYW4gIDxkZ3JvZ2FuQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBJbmRleGVkREI6IEZpcmUgZXJyb3Igd2hlbiB0aGVyZSBhcmUgcHJvYmxlbXMgb3Blbmlu
ZyBhIERCCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04
NTU3OQorCisgICAgICAgIFJldmlld2VkIGJ5IFRvbnkgQ2hhbmcuCisKKyAgICAgICAgKiBXZWJL
aXQuZ3lwaToKKyAgICAgICAgKiB0ZXN0cy9JREJBYm9ydE9uQ29ycnVwdFRlc3QuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoTW9ja0lEQkNhbGxiYWNrcyk6CisgICAg
ICAgIChXZWJDb3JlOjpNb2NrSURCQ2FsbGJhY2tzOjpNb2NrSURCQ2FsbGJhY2tzKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1vY2tJREJDYWxsYmFja3M6On5Nb2NrSURCQ2FsbGJhY2tzKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1vY2tJREJDYWxsYmFja3M6Om9uRXJyb3IpOgorICAgICAgICAoV2ViQ29y
ZTo6TW9ja0lEQkNhbGxiYWNrczo6b25TdWNjZXNzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tJ
REJDYWxsYmFja3M6Om9uU3VjY2Vzc1dpdGhDb250aW51YXRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6TW9ja0lEQkNhbGxiYWNrczo6b25TdWNjZXNzV2l0aFByZWZldGNoKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1vY2tJREJDYWxsYmFja3M6Om9uQmxvY2tlZCk6CisgICAgICAgIChGYWlsaW5nQmFj
a2luZ1N0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkZhaWxpbmdCYWNraW5nU3RvcmU6On5GYWls
aW5nQmFja2luZ1N0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkZhaWxpbmdCYWNraW5nU3RvcmU6
Om9wZW4pOgorICAgICAgICAoV2ViQ29yZTo6RmFpbGluZ0JhY2tpbmdTdG9yZTo6Y3JlYXRlSURC
RGF0YWJhc2VNZXRhRGF0YSk6CisgICAgICAgIChGYWlsaW5nSURCRmFjdG9yeUJhY2tlbmRJbXBs
KToKKyAgICAgICAgKFdlYkNvcmU6OkZhaWxpbmdJREJGYWN0b3J5QmFja2VuZEltcGw6On5GYWls
aW5nSURCRmFjdG9yeUJhY2tlbmRJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OkZhaWxpbmdJREJG
YWN0b3J5QmFja2VuZEltcGw6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpGYWlsaW5nSURC
RmFjdG9yeUJhY2tlbmRJbXBsOjpyZW1vdmVJREJEYXRhYmFzZUJhY2tlbmQpOgorICAgICAgICAo
V2ViQ29yZTo6RmFpbGluZ0lEQkZhY3RvcnlCYWNrZW5kSW1wbDo6b3BlbkJhY2tpbmdTdG9yZSk6
CisgICAgICAgIChXZWJDb3JlOjpURVNUKToKKyAgICAgICAgKiB0ZXN0cy9JREJGYWtlQmFja2lu
Z1N0b3JlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkxldmVsREJCYWNraW5nU3RvcmUuaC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoSURC
RmFrZUJhY2tpbmdTdG9yZSk6CisKIDIwMTItMDUtMjAgIEtpbnVrbyBZYXN1ZGEgIDxraW51a29A
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIENsZWFudXA6IFJlbW92ZSBXZWJDb3JlOjpyZXZlYWxG
b2xkZXJJbk9TKCkgd2hpY2ggaXMgbm8gbG9uZ2VyIHVzZWQgYW55d2hlcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5k
SW1wbC5jcHAKaW5kZXggYjA1YjMyODYzZDA3MmZiNjU3ZGNhOWM4ZDY0ZTBiODUxYWQwOTI0NS4u
ODM1NGFjNWM2Yjg4N2ZjYWNmYzA5YjM0MmQyMGJhMzUzNjkzNGYzZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5k
SW1wbC5jcHAKQEAgLTkzLDYgKzkzLDE2IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPElEQkRhdGFi
YXNlQ2FsbGJhY2tzPiBtX2RhdGFiYXNlQ2FsbGJhY2tzOwogfTsKIAorUGFzc1JlZlB0cjxJREJE
YXRhYmFzZUJhY2tlbmRJbXBsPiBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpjcmVhdGUoY29uc3Qg
U3RyaW5nJiBuYW1lLCBJREJCYWNraW5nU3RvcmUqIGRhdGFiYXNlLCBJREJUcmFuc2FjdGlvbkNv
b3JkaW5hdG9yKiBjb29yZGluYXRvciwgSURCRmFjdG9yeUJhY2tlbmRJbXBsKiBmYWN0b3J5LCBj
b25zdCBTdHJpbmcmIHVuaXF1ZUlkZW50aWZpZXIpCit7CisgICAgUmVmUHRyPElEQkRhdGFiYXNl
QmFja2VuZEltcGw+IGJhY2tlbmQgPSBhZG9wdFJlZihuZXcgSURCRGF0YWJhc2VCYWNrZW5kSW1w
bChuYW1lLCBkYXRhYmFzZSwgY29vcmRpbmF0b3IsIGZhY3RvcnksIHVuaXF1ZUlkZW50aWZpZXIp
KTsKKyAgICBpZiAoIWJhY2tlbmQtPm9wZW5JbnRlcm5hbCgpKSB7CisgICAgICAgIGJhY2tlbmQu
Y2xlYXIoKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIHJldHVybiBiYWNrZW5kLnJl
bGVhc2UoKTsKK30KKwogSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6SURCRGF0YWJhc2VCYWNrZW5k
SW1wbChjb25zdCBTdHJpbmcmIG5hbWUsIElEQkJhY2tpbmdTdG9yZSogYmFja2luZ1N0b3JlLCBJ
REJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yKiBjb29yZGluYXRvciwgSURCRmFjdG9yeUJhY2tlbmRJ
bXBsKiBmYWN0b3J5LCBjb25zdCBTdHJpbmcmIHVuaXF1ZUlkZW50aWZpZXIpCiAgICAgOiBtX2Jh
Y2tpbmdTdG9yZShiYWNraW5nU3RvcmUpCiAgICAgLCBtX2lkKEludmFsaWRJZCkKQEAgLTEwMywx
OSArMTEzLDE3IEBAIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OklEQkRhdGFiYXNlQmFja2VuZElt
cGwoY29uc3QgU3RyaW5nJiBuYW1lLCBJREJCYWNraW5nU3RvCiAgICAgLCBtX3RyYW5zYWN0aW9u
Q29vcmRpbmF0b3IoY29vcmRpbmF0b3IpCiB7CiAgICAgQVNTRVJUKCFtX25hbWUuaXNOdWxsKCkp
OwotICAgIG9wZW5JbnRlcm5hbCgpOwogfQogCi12b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6
Om9wZW5JbnRlcm5hbCgpCitib29sIElEQkRhdGFiYXNlQmFja2VuZEltcGw6Om9wZW5JbnRlcm5h
bCgpCiB7CiAgICAgYm9vbCBzdWNjZXNzID0gbV9iYWNraW5nU3RvcmUtPmdldElEQkRhdGFiYXNl
TWV0YURhdGEobV9uYW1lLCBtX3ZlcnNpb24sIG1faWQpOwogICAgIEFTU0VSVChzdWNjZXNzID09
IChtX2lkICE9IEludmFsaWRJZCkpOwogICAgIGlmIChzdWNjZXNzKSB7CiAgICAgICAgIGxvYWRP
YmplY3RTdG9yZXMoKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICB9Ci0gICAgaWYgKCFtX2JhY2tpbmdTdG9yZS0+Y3JlYXRlSURCRGF0YWJhc2VNZXRhRGF0YSht
X25hbWUsIG1fdmVyc2lvbiwgbV9pZCkpCi0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyAv
LyBGSVhNRTogTmVlZCBiZXR0ZXIgZXJyb3IgaGFuZGxpbmcuCisgICAgcmV0dXJuIG1fYmFja2lu
Z1N0b3JlLT5jcmVhdGVJREJEYXRhYmFzZU1ldGFEYXRhKG1fbmFtZSwgbV92ZXJzaW9uLCBtX2lk
KTsKIH0KIAogSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6fklEQkRhdGFiYXNlQmFja2VuZEltcGwo
KQpAQCAtMzI1LDkgKzMzMywxMCBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6Om9wZW5D
b25uZWN0aW9uKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiAgICAgaWYgKCFt
X3BlbmRpbmdEZWxldGVDYWxscy5pc0VtcHR5KCkgfHwgbV9ydW5uaW5nVmVyc2lvbkNoYW5nZVRy
YW5zYWN0aW9uIHx8ICFtX3BlbmRpbmdTZXRWZXJzaW9uQ2FsbHMuaXNFbXB0eSgpKQogICAgICAg
ICBtX3BlbmRpbmdPcGVuQ2FsbHMuYXBwZW5kKFBlbmRpbmdPcGVuQ2FsbDo6Y3JlYXRlKGNhbGxi
YWNrcykpOwogICAgIGVsc2UgewotICAgICAgICBpZiAobV9pZCA9PSBJbnZhbGlkSWQpCi0gICAg
ICAgICAgICBvcGVuSW50ZXJuYWwoKTsKLSAgICAgICAgY2FsbGJhY2tzLT5vblN1Y2Nlc3ModGhp
cyk7CisgICAgICAgIGlmIChtX2lkID09IEludmFsaWRJZCAmJiAhb3BlbkludGVybmFsKCkpCisg
ICAgICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElE
QkRhdGFiYXNlRXhjZXB0aW9uOjpVTktOT1dOX0VSUiwgIkludGVybmFsIGVycm9yLiIpKTsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgY2FsbGJhY2tzLT5vblN1Y2Nlc3ModGhpcyk7CiAgICAg
fQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJE
YXRhYmFzZUJhY2tlbmRJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJEYXRhYmFzZUJhY2tlbmRJbXBsLmgKaW5kZXggMTA4NmViMTZlYjg3ZDE5ZjAyOGUzZjRjOGM0
N2I5MDVkODY3OGYwNS4uMGVkOTYxMGU4Nzk0NGFmYWUyYmI2MjFmMGZjMzg2NDkwN2EyOTQzZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VC
YWNrZW5kSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRh
dGFiYXNlQmFja2VuZEltcGwuaApAQCAtNDUsMTAgKzQ1LDcgQEAgY2xhc3MgSURCVHJhbnNhY3Rp
b25Db29yZGluYXRvcjsKIAogY2xhc3MgSURCRGF0YWJhc2VCYWNrZW5kSW1wbCA6IHB1YmxpYyBJ
REJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVm
UHRyPElEQkRhdGFiYXNlQmFja2VuZEltcGw+IGNyZWF0ZShjb25zdCBTdHJpbmcmIG5hbWUsIElE
QkJhY2tpbmdTdG9yZSogZGF0YWJhc2UsIElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3IqIGNvb3Jk
aW5hdG9yLCBJREJGYWN0b3J5QmFja2VuZEltcGwqIGZhY3RvcnksIGNvbnN0IFN0cmluZyYgdW5p
cXVlSWRlbnRpZmllcikKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSURCRGF0
YWJhc2VCYWNrZW5kSW1wbChuYW1lLCBkYXRhYmFzZSwgY29vcmRpbmF0b3IsIGZhY3RvcnksIHVu
aXF1ZUlkZW50aWZpZXIpKTsKLSAgICB9CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SURCRGF0YWJh
c2VCYWNrZW5kSW1wbD4gY3JlYXRlKGNvbnN0IFN0cmluZyYgbmFtZSwgSURCQmFja2luZ1N0b3Jl
KiBkYXRhYmFzZSwgSURCVHJhbnNhY3Rpb25Db29yZGluYXRvciosIElEQkZhY3RvcnlCYWNrZW5k
SW1wbCosIGNvbnN0IFN0cmluZyYgdW5pcXVlSWRlbnRpZmllcik7CiAgICAgdmlydHVhbCB+SURC
RGF0YWJhc2VCYWNrZW5kSW1wbCgpOwogCiAgICAgUGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmU+
IGJhY2tpbmdTdG9yZSgpIGNvbnN0OwpAQCAtNzksNyArNzYsNyBAQCBwdWJsaWM6CiBwcml2YXRl
OgogICAgIElEQkRhdGFiYXNlQmFja2VuZEltcGwoY29uc3QgU3RyaW5nJiBuYW1lLCBJREJCYWNr
aW5nU3RvcmUqIGRhdGFiYXNlLCBJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yKiwgSURCRmFjdG9y
eUJhY2tlbmRJbXBsKiwgY29uc3QgU3RyaW5nJiB1bmlxdWVJZGVudGlmaWVyKTsKIAotICAgIHZv
aWQgb3BlbkludGVybmFsKCk7CisgICAgYm9vbCBvcGVuSW50ZXJuYWwoKTsKICAgICB2b2lkIGxv
YWRPYmplY3RTdG9yZXMoKTsKICAgICB2b2lkIHByb2Nlc3NQZW5kaW5nQ2FsbHMoKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeUJhY2tl
bmRJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnlC
YWNrZW5kSW1wbC5jcHAKaW5kZXggZjViOWM4Nzc0MDY3NDNmMGU1YTYwOWE0Y2NlOWQ1ZTRkYTI5
YTMxYy4uOWViMTE2NzA5MjZlZTM2ZGJhYzEyYTdiM2JiM2M2NDgwN2VlODBiMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJbXBs
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5QmFj
a2VuZEltcGwuY3BwCkBAIC0xMjksOCArMTI5LDExIEBAIHZvaWQgSURCRmFjdG9yeUJhY2tlbmRJ
bXBsOjpkZWxldGVEYXRhYmFzZShjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8SURCQ2Fs
CiAgICAgfQogCiAgICAgUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEltcGw+IGRhdGFiYXNlQmFj
a2VuZCA9IElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNyZWF0ZShuYW1lLCBiYWNraW5nU3RvcmUu
Z2V0KCksIG1fdHJhbnNhY3Rpb25Db29yZGluYXRvci5nZXQoKSwgdGhpcywgdW5pcXVlSWRlbnRp
Zmllcik7Ci0gICAgbV9kYXRhYmFzZUJhY2tlbmRNYXAuc2V0KHVuaXF1ZUlkZW50aWZpZXIsIGRh
dGFiYXNlQmFja2VuZC5nZXQoKSk7Ci0gICAgZGF0YWJhc2VCYWNrZW5kLT5kZWxldGVEYXRhYmFz
ZShjYWxsYmFja3MpOworICAgIGlmIChkYXRhYmFzZUJhY2tlbmQpIHsKKyAgICAgICAgbV9kYXRh
YmFzZUJhY2tlbmRNYXAuc2V0KHVuaXF1ZUlkZW50aWZpZXIsIGRhdGFiYXNlQmFja2VuZC5nZXQo
KSk7CisgICAgICAgIGRhdGFiYXNlQmFja2VuZC0+ZGVsZXRlRGF0YWJhc2UoY2FsbGJhY2tzKTsK
KyAgICB9IGVsc2UKKyAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6
OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VU5LTk9XTl9FUlIsICJJbnRlcm5hbCBlcnJv
ci4iKSk7CiB9CiAKIFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlPiBJREJGYWN0b3J5QmFja2Vu
ZEltcGw6Om9wZW5CYWNraW5nU3RvcmUoUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gc2VjdXJp
dHlPcmlnaW4sIGNvbnN0IFN0cmluZyYgZGF0YURpcmVjdG9yeSkKQEAgLTE3Nyw4ICsxODAsMTEg
QEAgdm9pZCBJREJGYWN0b3J5QmFja2VuZEltcGw6Om9wZW5JbnRlcm5hbChjb25zdCBTdHJpbmcm
IG5hbWUsIElEQkNhbGxiYWNrcyogY2FsbGIKICAgICB9CiAKICAgICBSZWZQdHI8SURCRGF0YWJh
c2VCYWNrZW5kSW1wbD4gZGF0YWJhc2VCYWNrZW5kID0gSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6
Y3JlYXRlKG5hbWUsIGJhY2tpbmdTdG9yZS5nZXQoKSwgbV90cmFuc2FjdGlvbkNvb3JkaW5hdG9y
LmdldCgpLCB0aGlzLCB1bmlxdWVJZGVudGlmaWVyKTsKLSAgICBjYWxsYmFja3MtPm9uU3VjY2Vz
cyhSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPihkYXRhYmFzZUJhY2tlbmQuZ2V0
KCkpLnJlbGVhc2UoKSk7Ci0gICAgbV9kYXRhYmFzZUJhY2tlbmRNYXAuc2V0KHVuaXF1ZUlkZW50
aWZpZXIsIGRhdGFiYXNlQmFja2VuZC5nZXQoKSk7CisgICAgaWYgKGRhdGFiYXNlQmFja2VuZCkg
eworICAgICAgICBjYWxsYmFja3MtPm9uU3VjY2VzcyhSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5k
SW50ZXJmYWNlPihkYXRhYmFzZUJhY2tlbmQuZ2V0KCkpLnJlbGVhc2UoKSk7CisgICAgICAgIG1f
ZGF0YWJhc2VCYWNrZW5kTWFwLnNldCh1bmlxdWVJZGVudGlmaWVyLCBkYXRhYmFzZUJhY2tlbmQu
Z2V0KCkpOworICAgIH0gZWxzZQorICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJh
c2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVTktOT1dOX0VSUiwgIkludGVy
bmFsIGVycm9yLiIpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJbXBsLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5QmFja2VuZEltcGwu
aAppbmRleCA3OTgyMTY4YmUzMzdkYzk1NmEwYjY1YmYzOGIxOGQ0NjhkZTFiYmY5Li5hMzk4OWUy
ZDNhMTcwMDgwNWY3MmJlNGFiZTA2NTBmYjAxNTZkMjUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5QmFja2VuZEltcGwuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5QmFja2VuZEltcGwuaApAQCAt
NTEsOSArNTEsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+SURCRmFjdG9yeUJhY2tlbmRJbXBs
KCk7CiAKICAgICAvLyBOb3RpZmljYXRpb25zIGZyb20gd2VhayBwb2ludGVycy4KLSAgICB2b2lk
IHJlbW92ZUlEQkRhdGFiYXNlQmFja2VuZChjb25zdCBTdHJpbmcmIHVuaXF1ZUlkZW50aWZpZXIp
OworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVJREJEYXRhYmFzZUJhY2tlbmQoY29uc3QgU3RyaW5n
JiB1bmlxdWVJZGVudGlmaWVyKTsKICAgICB2b2lkIGFkZElEQkJhY2tpbmdTdG9yZShjb25zdCBT
dHJpbmcmIGZpbGVJZGVudGlmaWVyLCBJREJCYWNraW5nU3RvcmUqKTsKLSAgICB2b2lkIHJlbW92
ZUlEQkJhY2tpbmdTdG9yZShjb25zdCBTdHJpbmcmIGZpbGVJZGVudGlmaWVyKTsKKyAgICB2aXJ0
dWFsIHZvaWQgcmVtb3ZlSURCQmFja2luZ1N0b3JlKGNvbnN0IFN0cmluZyYgZmlsZUlkZW50aWZp
ZXIpOwogCiAgICAgdmlydHVhbCB2b2lkIGdldERhdGFiYXNlTmFtZXMoUGFzc1JlZlB0cjxJREJD
YWxsYmFja3M+LCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiwgRnJhbWUqLCBjb25zdCBTdHJp
bmcmIGRhdGFEaXIpOwogCkBAIC02MSw5ICs2MSwxMSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIG9wZW5Gcm9tV29ya2VyKGNvbnN0IFN0cmluZyYgbmFtZSwgSURCQ2FsbGJhY2tzKiwgUGFz
c1JlZlB0cjxTZWN1cml0eU9yaWdpbj4sIFdvcmtlckNvbnRleHQqLCBjb25zdCBTdHJpbmcmIGRh
dGFEaXIpOwogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVEYXRhYmFzZShjb25zdCBTdHJpbmcmIG5h
bWUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4s
IEZyYW1lKiwgY29uc3QgU3RyaW5nJiBkYXRhRGlyKTsKIAotcHJpdmF0ZToKK3Byb3RlY3RlZDoK
ICAgICBJREJGYWN0b3J5QmFja2VuZEltcGwoKTsKLSAgICBQYXNzUmVmUHRyPElEQkJhY2tpbmdT
dG9yZT4gb3BlbkJhY2tpbmdTdG9yZShQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiwgY29uc3Qg
U3RyaW5nJiBkYXRhRGlyKTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3Jl
PiBvcGVuQmFja2luZ1N0b3JlKFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+LCBjb25zdCBTdHJp
bmcmIGRhdGFEaXIpOworCitwcml2YXRlOgogICAgIHZvaWQgb3BlbkludGVybmFsKGNvbnN0IFN0
cmluZyYgbmFtZSwgSURCQ2FsbGJhY2tzKiwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4sIGNv
bnN0IFN0cmluZyYgZGF0YURpcik7CiAKICAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBJREJE
YXRhYmFzZUJhY2tlbmRJbXBsKj4gSURCRGF0YWJhc2VCYWNrZW5kTWFwOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkJhY2tpbmdTdG9y
ZS5oCmluZGV4IGUxN2E2ZjFmYjI3OWMyYTE5MWZlZDMzMWM5OTc2NmQxMDYyZDQ2ZjUuLmI0Y2I3
YWJhZTA3NGEyYzFiMDFjNTNiNmNjOWYyMGU3NDU3YjMwNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJCYWNraW5nU3RvcmUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQmFja2luZ1N0b3JlLmgK
QEAgLTgwLDkgKzgwLDEwIEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBib29sIGJhY2tpbmdTdG9y
ZUV4aXN0cyhTZWN1cml0eU9yaWdpbiosIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5n
JiBwYXRoQmFzZSk7CiAKLXByaXZhdGU6Citwcm90ZWN0ZWQ6CiAgICAgSURCTGV2ZWxEQkJhY2tp
bmdTdG9yZShjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIElEQkZhY3RvcnlCYWNrZW5kSW1wbCos
IFBhc3NPd25QdHI8TGV2ZWxEQkRhdGFiYXNlPik7CiAKK3ByaXZhdGU6CiAgICAgU3RyaW5nIG1f
aWRlbnRpZmllcjsKICAgICBSZWZQdHI8SURCRmFjdG9yeUJhY2tlbmRJbXBsPiBtX2ZhY3Rvcnk7
CiAgICAgT3duUHRyPExldmVsREJEYXRhYmFzZT4gbV9kYjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktp
dC5neXBpCmluZGV4IGNmYjFkN2I0ZTI1YjllOTgxNDI2MzViMDdiM2Q2MDlhOGYwMjZlYWMuLjcy
Y2FiMTgyNzk1OWMxNjM5MDIzYTdmYjE2ZTExMGVhMDFlNmM5ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9XZWJLaXQuZ3lwaQpAQCAtMTA2LDcgKzEwNiw5IEBACiAgICAgICAgICAgICAndGVzdHMvRnJh
bWVUZXN0SGVscGVycy5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL0ZyYW1lVGVzdEhlbHBlcnMu
aCcsCiAgICAgICAgICAgICAndGVzdHMvR3JhcGhpY3NMYXllckNocm9taXVtVGVzdC5jcHAnLAor
ICAgICAgICAgICAgJ3Rlc3RzL0lEQkFib3J0T25Db3JydXB0VGVzdC5jcHAnLAogICAgICAgICAg
ICAgJ3Rlc3RzL0lEQkJpbmRpbmdVdGlsaXRpZXNUZXN0LmNwcCcsCisgICAgICAgICAgICAndGVz
dHMvSURCRmFrZUJhY2tpbmdTdG9yZS5oJywKICAgICAgICAgICAgICd0ZXN0cy9JREJLZXlQYXRo
VGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL0lEQkxldmVsREJDb2RpbmdUZXN0LmNwcCcs
CiAgICAgICAgICAgICAndGVzdHMvSW1hZ2VMYXllckNocm9taXVtVGVzdC5jcHAnLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJBYm9ydE9uQ29ycnVwdFRlc3Qu
Y3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJBYm9ydE9uQ29ycnVwdFRlc3Qu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjEwYTA4ZDU5ZTdlMTFmMGY2NWFlMDA5YWY3YmJkNzczY2QxMTI1NmUK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQkFib3J0
T25Db3JydXB0VGVzdC5jcHAKQEAgLTAsMCArMSwxMDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJ
QlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiSURCRmFjdG9yeUJhY2tlbmRJbXBsLmgiCisjaW5jbHVkZSAiSURC
RmFrZUJhY2tpbmdTdG9yZS5oIgorI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCisjaW5jbHVk
ZSA8Z3Rlc3QvZ3Rlc3QuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKKyNpZiBFTkFCTEUo
SU5ERVhFRF9EQVRBQkFTRSkKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFj
ZSB7CisKK2NsYXNzIE1vY2tJREJDYWxsYmFja3MgOiBwdWJsaWMgSURCQ2FsbGJhY2tzIHsKKyBw
dWJsaWM6CisgICAgTW9ja0lEQkNhbGxiYWNrcygpIDogbV93YXNFcnJvckNhbGxlZChmYWxzZSkg
eyB9CisKKyAgICB2aXJ0dWFsIH5Nb2NrSURCQ2FsbGJhY2tzKCkKKyAgICB7CisgICAgICAgIEVY
UEVDVF9UUlVFKG1fd2FzRXJyb3JDYWxsZWQpOworICAgIH0KKyAgICB2aXJ0dWFsIHZvaWQgb25F
cnJvcihQYXNzUmVmUHRyPElEQkRhdGFiYXNlRXJyb3I+KQorICAgIHsKKyAgICAgICAgbV93YXNF
cnJvckNhbGxlZCA9IHRydWU7CisgICAgfQorICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFz
c1JlZlB0cjxET01TdHJpbmdMaXN0PikgeyB9CisgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQ
YXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U+KSB7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPikKKyAg
ICB7CisgICAgICAgIEVYUEVDVF9UUlVFKGZhbHNlKTsKKyAgICB9CisgICAgdmlydHVhbCB2b2lk
IG9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQktleT4pIHsgfQorICAgIHZpcnR1YWwgdm9pZCBvblN1
Y2Nlc3MoUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+KSB7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVl
PikgeyB9CisgICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vzc1dpdGhDb250aW51YXRpb24oKSB7IH0K
KyAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzV2l0aFByZWZldGNoKGNvbnN0IFZlY3RvcjxSZWZQ
dHI8SURCS2V5PiA+JiwgY29uc3QgVmVjdG9yPFJlZlB0cjxJREJLZXk+ID4mLCBjb25zdCBWZWN0
b3I8UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gPiYpIHsgfQorICAgIHZpcnR1YWwgdm9p
ZCBvbkJsb2NrZWQoKSB7IH0KK3ByaXZhdGU6CisgICAgYm9vbCBtX3dhc0Vycm9yQ2FsbGVkOwor
fTsKKworY2xhc3MgRmFpbGluZ0JhY2tpbmdTdG9yZSA6IHB1YmxpYyBJREJGYWtlQmFja2luZ1N0
b3JlIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5GYWlsaW5nQmFja2luZ1N0b3JlKCkgeyB9Cisg
ICAgc3RhdGljIFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlPiBvcGVuKCkKKyAgICB7CisgICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgRmFpbGluZ0JhY2tpbmdTdG9yZSk7CisgICAgfQorICAg
IHZpcnR1YWwgYm9vbCBjcmVhdGVJREJEYXRhYmFzZU1ldGFEYXRhKGNvbnN0IFN0cmluZyYsIGNv
bnN0IFN0cmluZyYsIGludDY0X3QmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KK307CisKK2NsYXNzIEZhaWxpbmdJREJGYWN0b3J5QmFja2VuZEltcGwgOiBwdWJsaWMgSURC
RmFjdG9yeUJhY2tlbmRJbXBsIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5GYWlsaW5nSURCRmFj
dG9yeUJhY2tlbmRJbXBsKCkgeyB9CisgICAgc3RhdGljIFBhc3NSZWZQdHI8RmFpbGluZ0lEQkZh
Y3RvcnlCYWNrZW5kSW1wbD4gY3JlYXRlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgRmFpbGluZ0lEQkZhY3RvcnlCYWNrZW5kSW1wbCk7CisgICAgfQorICAgIHZpcnR1YWwg
dm9pZCByZW1vdmVJREJEYXRhYmFzZUJhY2tlbmQoY29uc3QgV1RGOjpTdHJpbmcgJikgeyB9CisK
K3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlPiBvcGVu
QmFja2luZ1N0b3JlKFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHBycE9yaWdpbiwgY29uc3Qg
U3RyaW5nJiBkYXRhRGlyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEZhaWxpbmdCYWNraW5nU3Rv
cmU6Om9wZW4oKTsKKyAgICB9Cit9OworCitURVNUKElEQkFib3J0VGVzdCwgVGhlVGVzdCkKK3sK
KyAgICBSZWZQdHI8SURCRmFjdG9yeUJhY2tlbmRJbXBsPiBmYWN0b3J5ID0gRmFpbGluZ0lEQkZh
Y3RvcnlCYWNrZW5kSW1wbDo6Y3JlYXRlKCk7CisgICAgY29uc3QgU3RyaW5nJiBuYW1lID0gImRi
IG5hbWUiOworICAgIE1vY2tJREJDYWxsYmFja3MgY2FsbGJhY2tzOworICAgIFJlZlB0cjxTZWN1
cml0eU9yaWdpbj4gb3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZSgiaHR0cCIsICJsb2Nh
bGhvc3QiLCA4MSk7CisgICAgZmFjdG9yeS0+b3BlbihuYW1lLCAmY2FsbGJhY2tzLCBvcmlnaW4s
IDAgLypGcmFtZSovLCBTdHJpbmcoKSAvKnBhdGgqLyk7Cit9CisKK30gLy8gbmFtZXNwYWNlCisK
KyNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCRmFrZUJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9JREJGYWtlQmFja2luZ1N0b3JlLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTkxNjBh
OGExOWIyMTdmMTg1MTdhOGRjMTNkZTU4ZTM3ODI3NDA0ZAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCRmFrZUJhY2tpbmdTdG9yZS5oCkBAIC0wLDAg
KzEsNzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQor
ICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICog
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIElEQkZha2VCYWNraW5nU3RvcmVfaAorI2RlZmluZSBJ
REJGYWtlQmFja2luZ1N0b3JlX2gKKworI2luY2x1ZGUgIklEQkJhY2tpbmdTdG9yZS5oIgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIElEQkZha2VCYWNraW5nU3RvcmUgOiBwdWJsaWMg
SURCQmFja2luZ1N0b3JlIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0RGF0YWJhc2VO
YW1lcyhWZWN0b3I8U3RyaW5nPiYgZm91bmROYW1lcykgT1ZFUlJJREUgeyB9CisgICAgdmlydHVh
bCBib29sIGdldElEQkRhdGFiYXNlTWV0YURhdGEoY29uc3QgU3RyaW5nJiBuYW1lLCBTdHJpbmcm
IGZvdW5kVmVyc2lvbiwgaW50NjRfdCYgZm91bmRJZCkgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7
IH0KKyAgICB2aXJ0dWFsIGJvb2wgY3JlYXRlSURCRGF0YWJhc2VNZXRhRGF0YShjb25zdCBTdHJp
bmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgaW50NjRfdCYgcm93SWQpIE9WRVJSSURF
IHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgdXBkYXRlSURCRGF0YWJhc2VNZXRh
RGF0YShpbnQ2NF90IHJvd0lkLCBjb25zdCBTdHJpbmcmIHZlcnNpb24pIE9WRVJSSURFIHsgcmV0
dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGRlbGV0ZURhdGFiYXNlKGNvbnN0IFN0cmlu
ZyYgbmFtZSkgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7IH0KKworICAgIHZpcnR1YWwgdm9pZCBn
ZXRPYmplY3RTdG9yZXMoaW50NjRfdCBkYXRhYmFzZUlkLCBWZWN0b3I8aW50NjRfdD4mIGZvdW5k
SWRzLCBWZWN0b3I8U3RyaW5nPiYgZm91bmROYW1lcywgVmVjdG9yPFN0cmluZz4mIGZvdW5kS2V5
UGF0aHMsIFZlY3Rvcjxib29sPiYgZm91bmRBdXRvSW5jcmVtZW50RmxhZ3MpIE9WRVJSSURFIHsg
fQorICAgIHZpcnR1YWwgYm9vbCBjcmVhdGVPYmplY3RTdG9yZShpbnQ2NF90IGRhdGFiYXNlSWQs
IGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIGF1dG9JbmNy
ZW1lbnQsIGludDY0X3QmIGFzc2lnbmVkT2JqZWN0U3RvcmVJZCkgT1ZFUlJJREUgeyByZXR1cm4g
ZmFsc2U7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlT2JqZWN0U3RvcmUoaW50NjRfdCBkYXRh
YmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQpIE9WRVJSSURFIHsgfQorCisgICAgdmlydHVh
bCBQYXNzUmVmUHRyPE9iamVjdFN0b3JlUmVjb3JkSWRlbnRpZmllcj4gY3JlYXRlSW52YWxpZFJl
Y29yZElkZW50aWZpZXIoKSBPVkVSUklERSB7IHJldHVybiBQYXNzUmVmUHRyPE9iamVjdFN0b3Jl
UmVjb3JkSWRlbnRpZmllcj4oKTsgfQorCisgICAgdmlydHVhbCBTdHJpbmcgZ2V0T2JqZWN0U3Rv
cmVSZWNvcmQoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0
IElEQktleSYpIE9WRVJSSURFIHsgcmV0dXJuIFN0cmluZygpOyB9CisgICAgdmlydHVhbCBib29s
IHB1dE9iamVjdFN0b3JlUmVjb3JkKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RT
dG9yZUlkLCBjb25zdCBJREJLZXkmLCBjb25zdCBTdHJpbmcmIHZhbHVlLCBPYmplY3RTdG9yZVJl
Y29yZElkZW50aWZpZXIqKSBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwg
dm9pZCBjbGVhck9iamVjdFN0b3JlKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RT
dG9yZUlkKSBPVkVSUklERSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlT2JqZWN0U3RvcmVS
ZWNvcmQoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IE9i
amVjdFN0b3JlUmVjb3JkSWRlbnRpZmllciopIE9WRVJSSURFIHsgfQorICAgIHZpcnR1YWwgaW50
NjRfdCBuZXh0QXV0b0luY3JlbWVudE51bWJlcihpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qg
b2JqZWN0U3RvcmVJZCkgT1ZFUlJJREUgeyByZXR1cm4gMC4wOyB9CisgICAgdmlydHVhbCBib29s
IGtleUV4aXN0c0luT2JqZWN0U3RvcmUoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVj
dFN0b3JlSWQsIGNvbnN0IElEQktleSYsIE9iamVjdFN0b3JlUmVjb3JkSWRlbnRpZmllciogZm91
bmRSZWNvcmRJZGVudGlmaWVyKSBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfQorCisgICAgdmly
dHVhbCBib29sIGZvckVhY2hPYmplY3RTdG9yZVJlY29yZChpbnQ2NF90IGRhdGFiYXNlSWQsIGlu
dDY0X3Qgb2JqZWN0U3RvcmVJZCwgT2JqZWN0U3RvcmVSZWNvcmRDYWxsYmFjayYpIE9WRVJSSURF
IHsgcmV0dXJuIGZhbHNlOyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0SW5kZXhlcyhpbnQ2NF90
IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgVmVjdG9yPGludDY0X3Q+JiBmb3Vu
ZElkcywgVmVjdG9yPFN0cmluZz4mIGZvdW5kTmFtZXMsIFZlY3RvcjxTdHJpbmc+JiBmb3VuZEtl
eVBhdGhzLCBWZWN0b3I8Ym9vbD4mIGZvdW5kVW5pcXVlRmxhZ3MsIFZlY3Rvcjxib29sPiYgZm91
bmRNdWx0aUVudHJ5RmxhZ3MpIE9WRVJSSURFIHsgfQorICAgIHZpcnR1YWwgYm9vbCBjcmVhdGVJ
bmRleChpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgU3Ry
aW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgaXNVbmlxdWUsIGJvb2wgaXNN
dWx0aUVudHJ5LCBpbnQ2NF90JiBpbmRleElkKSBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfQor
ICAgIHZpcnR1YWwgdm9pZCBkZWxldGVJbmRleChpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qg
b2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkKSBPVkVSUklERSB7IH0KKyAgICB2aXJ0dWFs
IGJvb2wgcHV0SW5kZXhEYXRhRm9yUmVjb3JkKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBv
YmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IElEQktleSYsIGNvbnN0IE9iamVj
dFN0b3JlUmVjb3JkSWRlbnRpZmllciopIE9WRVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9CisgICAg
dmlydHVhbCBib29sIGRlbGV0ZUluZGV4RGF0YUZvclJlY29yZChpbnQ2NF90IGRhdGFiYXNlSWQs
IGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBPYmplY3RTdG9y
ZVJlY29yZElkZW50aWZpZXIqKSBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1
YWwgU3RyaW5nIGdldE9iamVjdFZpYUluZGV4KGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBv
YmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IElEQktleSYpIE9WRVJSSURFIHsg
cmV0dXJuIFN0cmluZygpOyB9CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQktleT4gZ2V0UHJp
bWFyeUtleVZpYUluZGV4KGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlk
LCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IElEQktleSYpIE9WRVJSSURFIHsgcmV0dXJuIFBhc3NS
ZWZQdHI8SURCS2V5PigpOyB9CisgICAgdmlydHVhbCBib29sIGtleUV4aXN0c0luSW5kZXgoaW50
NjRfdCBkYXRhYmFzZWlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwg
Y29uc3QgSURCS2V5JiBpbmRleEtleSwgUmVmUHRyPElEQktleT4mIGZvdW5kUHJpbWFyeUtleSkg
T1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7IH0KKworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxDdXJz
b3I+IG9wZW5PYmplY3RTdG9yZUN1cnNvcihpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2Jq
ZWN0U3RvcmVJZCwgY29uc3QgSURCS2V5UmFuZ2UqLCBJREJDdXJzb3I6OkRpcmVjdGlvbikgT1ZF
UlJJREUgeyByZXR1cm4gUGFzc1JlZlB0cjxDdXJzb3I+KCk7IH0KKyAgICB2aXJ0dWFsIFBhc3NS
ZWZQdHI8Q3Vyc29yPiBvcGVuSW5kZXhLZXlDdXJzb3IoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2
NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3QgSURCS2V5UmFuZ2UqLCBJ
REJDdXJzb3I6OkRpcmVjdGlvbikgT1ZFUlJJREUgeyByZXR1cm4gUGFzc1JlZlB0cjxDdXJzb3I+
KCk7IH0KKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q3Vyc29yPiBvcGVuSW5kZXhDdXJzb3IoaW50
NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwg
Y29uc3QgSURCS2V5UmFuZ2UqLCBJREJDdXJzb3I6OkRpcmVjdGlvbikgT1ZFUlJJREUgeyByZXR1
cm4gUGFzc1JlZlB0cjxDdXJzb3I+KCk7IH0KKworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxUcmFu
c2FjdGlvbj4gY3JlYXRlVHJhbnNhY3Rpb24oKSBPVkVSUklERSB7IHJldHVybiBQYXNzUmVmUHRy
PFRyYW5zYWN0aW9uPigpOyB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRp
ZiAvLyBJREJGYWtlQmFja2luZ1N0b3JlX2gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>143131</attachid>
            <date>2012-05-21 16:32:16 -0700</date>
            <delta_ts>2012-05-22 08:09:58 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-85579-20120521163215.patch</filename>
            <type>text/plain</type>
            <size>22905</size>
            <attacher name="David Grogan">dgrogan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE3Nzc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTM3NjliMzYxNGU4ZmIx
ZmI3MzgzMTkyOWY5NjZhZjBjZjliN2E2NC4uYTliMjFiNTAzOWI0ZDZkZmMxZWNmNTM5ZWI5NDVi
YmNlNDZjZTkwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEyLTA1LTE4ICBEYXZp
ZCBHcm9nYW4gIDxkZ3JvZ2FuQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IEZp
cmUgZXJyb3Igd2hlbiB0aGVyZSBhcmUgcHJvYmxlbXMgb3BlbmluZyBhIERCCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NTU3OQorCisgICAgICAgIFdl
IHVzZWQgdG8gZWl0aGVyIGZpcmUgc3VjY2VzcyBvciBnZXQgaW50byBhbiBpbmZpbml0ZSBsb29w
LgorCisgICAgICAgIFJldmlld2VkIGJ5IFRvbnkgQ2hhbmcuCisKKyAgICAgICAgTmV3IHVuaXQg
dGVzdCBpbgorICAgICAgICBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQkFib3J0T25D
b3JydXB0VGVzdC5jcHAKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNl
QmFja2VuZEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1w
bDo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFz
ZUJhY2tlbmRJbXBsOjpvcGVuSW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJh
c2VCYWNrZW5kSW1wbDo6b3BlbkNvbm5lY3Rpb24pOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhl
ZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuaDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFi
YXNlQmFja2VuZEltcGw6OmNyZWF0ZSk6CisgICAgICAgIChJREJEYXRhYmFzZUJhY2tlbmRJbXBs
KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5QmFja2VuZEltcGwuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SURCRmFjdG9yeUJhY2tlbmRJbXBsOjpkZWxldGVEYXRhYmFz
ZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJGYWN0b3J5QmFja2VuZEltcGw6Om9wZW5JbnRlcm5h
bCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJbXBsLmg6
CisgICAgICAgIChJREJGYWN0b3J5QmFja2VuZEltcGwpOgorICAgICAgICAqIE1vZHVsZXMvaW5k
ZXhlZGRiL0lEQkxldmVsREJCYWNraW5nU3RvcmUuaDoKKyAgICAgICAgKElEQkxldmVsREJCYWNr
aW5nU3RvcmUpOgorCiAyMDEyLTA1LTIxICBBbmRyZXkgS29zeWFrb3YgIDxjYXNlcUBjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogW3JlZmFjdG9yaW5nXSBwcm9tb3RlIGZp
bGwvYm9yZGVyIGNvbG9ycyB1c2VkIGJ5IHRpbWVsaW5lJ3MgZnJhbWUgb3ZlcnZpZXcgdG8gVGlt
ZWxpbmVDYXRlZ29yeQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA4NDFlNmNiNjYzZGFj
NjEyMDkwY2E2NDlhNzc2YTk3NDhiMWIzYzM0Li44NzI2YTdhYzZhMDNhNzZkMTZkMWEwMWMzMjc0
ODE3MDYzNGE0YmEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBA
CisyMDEyLTA1LTE4ICBEYXZpZCBHcm9nYW4gIDxkZ3JvZ2FuQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBJbmRleGVkREI6IEZpcmUgZXJyb3Igd2hlbiB0aGVyZSBhcmUgcHJvYmxlbXMgb3Blbmlu
ZyBhIERCCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04
NTU3OQorCisgICAgICAgIFJldmlld2VkIGJ5IFRvbnkgQ2hhbmcuCisKKyAgICAgICAgKiBXZWJL
aXQuZ3lwaToKKyAgICAgICAgKiB0ZXN0cy9JREJBYm9ydE9uQ29ycnVwdFRlc3QuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoTW9ja0lEQkNhbGxiYWNrcyk6CisgICAg
ICAgIChXZWJDb3JlOjpNb2NrSURCQ2FsbGJhY2tzOjpNb2NrSURCQ2FsbGJhY2tzKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1vY2tJREJDYWxsYmFja3M6On5Nb2NrSURCQ2FsbGJhY2tzKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1vY2tJREJDYWxsYmFja3M6Om9uRXJyb3IpOgorICAgICAgICAoV2ViQ29y
ZTo6TW9ja0lEQkNhbGxiYWNrczo6b25TdWNjZXNzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tJ
REJDYWxsYmFja3M6Om9uU3VjY2Vzc1dpdGhDb250aW51YXRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6TW9ja0lEQkNhbGxiYWNrczo6b25TdWNjZXNzV2l0aFByZWZldGNoKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1vY2tJREJDYWxsYmFja3M6Om9uQmxvY2tlZCk6CisgICAgICAgIChGYWlsaW5nQmFj
a2luZ1N0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkZhaWxpbmdCYWNraW5nU3RvcmU6On5GYWls
aW5nQmFja2luZ1N0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkZhaWxpbmdCYWNraW5nU3RvcmU6
Om9wZW4pOgorICAgICAgICAoV2ViQ29yZTo6RmFpbGluZ0JhY2tpbmdTdG9yZTo6Y3JlYXRlSURC
RGF0YWJhc2VNZXRhRGF0YSk6CisgICAgICAgIChGYWlsaW5nSURCRmFjdG9yeUJhY2tlbmRJbXBs
KToKKyAgICAgICAgKFdlYkNvcmU6OkZhaWxpbmdJREJGYWN0b3J5QmFja2VuZEltcGw6On5GYWls
aW5nSURCRmFjdG9yeUJhY2tlbmRJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OkZhaWxpbmdJREJG
YWN0b3J5QmFja2VuZEltcGw6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpGYWlsaW5nSURC
RmFjdG9yeUJhY2tlbmRJbXBsOjpyZW1vdmVJREJEYXRhYmFzZUJhY2tlbmQpOgorICAgICAgICAo
V2ViQ29yZTo6RmFpbGluZ0lEQkZhY3RvcnlCYWNrZW5kSW1wbDo6b3BlbkJhY2tpbmdTdG9yZSk6
CisgICAgICAgIChXZWJDb3JlOjpURVNUKToKKyAgICAgICAgKiB0ZXN0cy9JREJGYWtlQmFja2lu
Z1N0b3JlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkxldmVsREJCYWNraW5nU3RvcmUuaC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoSURC
RmFrZUJhY2tpbmdTdG9yZSk6CisKIDIwMTItMDUtMjAgIEtpbnVrbyBZYXN1ZGEgIDxraW51a29A
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIENsZWFudXA6IFJlbW92ZSBXZWJDb3JlOjpyZXZlYWxG
b2xkZXJJbk9TKCkgd2hpY2ggaXMgbm8gbG9uZ2VyIHVzZWQgYW55d2hlcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5k
SW1wbC5jcHAKaW5kZXggYjA1YjMyODYzZDA3MmZiNjU3ZGNhOWM4ZDY0ZTBiODUxYWQwOTI0NS4u
YjZhYTU1N2I3OTRlYjkwMWQyMGJhZDE1ZDhiMWI5NDIzMDRmODg2ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5k
SW1wbC5jcHAKQEAgLTkzLDYgKzkzLDE0IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPElEQkRhdGFi
YXNlQ2FsbGJhY2tzPiBtX2RhdGFiYXNlQ2FsbGJhY2tzOwogfTsKIAorUGFzc1JlZlB0cjxJREJE
YXRhYmFzZUJhY2tlbmRJbXBsPiBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpjcmVhdGUoY29uc3Qg
U3RyaW5nJiBuYW1lLCBJREJCYWNraW5nU3RvcmUqIGRhdGFiYXNlLCBJREJUcmFuc2FjdGlvbkNv
b3JkaW5hdG9yKiBjb29yZGluYXRvciwgSURCRmFjdG9yeUJhY2tlbmRJbXBsKiBmYWN0b3J5LCBj
b25zdCBTdHJpbmcmIHVuaXF1ZUlkZW50aWZpZXIpCit7CisgICAgUmVmUHRyPElEQkRhdGFiYXNl
QmFja2VuZEltcGw+IGJhY2tlbmQgPSBhZG9wdFJlZihuZXcgSURCRGF0YWJhc2VCYWNrZW5kSW1w
bChuYW1lLCBkYXRhYmFzZSwgY29vcmRpbmF0b3IsIGZhY3RvcnksIHVuaXF1ZUlkZW50aWZpZXIp
KTsKKyAgICBpZiAoIWJhY2tlbmQtPm9wZW5JbnRlcm5hbCgpKQorICAgICAgICByZXR1cm4gMDsK
KyAgICByZXR1cm4gYmFja2VuZC5yZWxlYXNlKCk7Cit9CisKIElEQkRhdGFiYXNlQmFja2VuZElt
cGw6OklEQkRhdGFiYXNlQmFja2VuZEltcGwoY29uc3QgU3RyaW5nJiBuYW1lLCBJREJCYWNraW5n
U3RvcmUqIGJhY2tpbmdTdG9yZSwgSURCVHJhbnNhY3Rpb25Db29yZGluYXRvciogY29vcmRpbmF0
b3IsIElEQkZhY3RvcnlCYWNrZW5kSW1wbCogZmFjdG9yeSwgY29uc3QgU3RyaW5nJiB1bmlxdWVJ
ZGVudGlmaWVyKQogICAgIDogbV9iYWNraW5nU3RvcmUoYmFja2luZ1N0b3JlKQogICAgICwgbV9p
ZChJbnZhbGlkSWQpCkBAIC0xMDMsMTkgKzExMSwxNyBAQCBJREJEYXRhYmFzZUJhY2tlbmRJbXBs
OjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsKGNvbnN0IFN0cmluZyYgbmFtZSwgSURCQmFja2luZ1N0
bwogICAgICwgbV90cmFuc2FjdGlvbkNvb3JkaW5hdG9yKGNvb3JkaW5hdG9yKQogewogICAgIEFT
U0VSVCghbV9uYW1lLmlzTnVsbCgpKTsKLSAgICBvcGVuSW50ZXJuYWwoKTsKIH0KIAotdm9pZCBJ
REJEYXRhYmFzZUJhY2tlbmRJbXBsOjpvcGVuSW50ZXJuYWwoKQorYm9vbCBJREJEYXRhYmFzZUJh
Y2tlbmRJbXBsOjpvcGVuSW50ZXJuYWwoKQogewogICAgIGJvb2wgc3VjY2VzcyA9IG1fYmFja2lu
Z1N0b3JlLT5nZXRJREJEYXRhYmFzZU1ldGFEYXRhKG1fbmFtZSwgbV92ZXJzaW9uLCBtX2lkKTsK
ICAgICBBU1NFUlQoc3VjY2VzcyA9PSAobV9pZCAhPSBJbnZhbGlkSWQpKTsKICAgICBpZiAoc3Vj
Y2VzcykgewogICAgICAgICBsb2FkT2JqZWN0U3RvcmVzKCk7Ci0gICAgICAgIHJldHVybjsKKyAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQotICAgIGlmICghbV9iYWNraW5nU3RvcmUtPmNyZWF0
ZUlEQkRhdGFiYXNlTWV0YURhdGEobV9uYW1lLCBtX3ZlcnNpb24sIG1faWQpKQotICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsgLy8gRklYTUU6IE5lZWQgYmV0dGVyIGVycm9yIGhhbmRsaW5n
LgorICAgIHJldHVybiBtX2JhY2tpbmdTdG9yZS0+Y3JlYXRlSURCRGF0YWJhc2VNZXRhRGF0YSht
X25hbWUsIG1fdmVyc2lvbiwgbV9pZCk7CiB9CiAKIElEQkRhdGFiYXNlQmFja2VuZEltcGw6On5J
REJEYXRhYmFzZUJhY2tlbmRJbXBsKCkKQEAgLTMyNSw5ICszMzEsMTAgQEAgdm9pZCBJREJEYXRh
YmFzZUJhY2tlbmRJbXBsOjpvcGVuQ29ubmVjdGlvbihQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4g
Y2FsbGJhY2tzKQogICAgIGlmICghbV9wZW5kaW5nRGVsZXRlQ2FsbHMuaXNFbXB0eSgpIHx8IG1f
cnVubmluZ1ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbiB8fCAhbV9wZW5kaW5nU2V0VmVyc2lvbkNh
bGxzLmlzRW1wdHkoKSkKICAgICAgICAgbV9wZW5kaW5nT3BlbkNhbGxzLmFwcGVuZChQZW5kaW5n
T3BlbkNhbGw6OmNyZWF0ZShjYWxsYmFja3MpKTsKICAgICBlbHNlIHsKLSAgICAgICAgaWYgKG1f
aWQgPT0gSW52YWxpZElkKQotICAgICAgICAgICAgb3BlbkludGVybmFsKCk7Ci0gICAgICAgIGNh
bGxiYWNrcy0+b25TdWNjZXNzKHRoaXMpOworICAgICAgICBpZiAobV9pZCA9PSBJbnZhbGlkSWQg
JiYgIW9wZW5JbnRlcm5hbCgpKQorICAgICAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRh
dGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VU5LTk9XTl9FUlIsICJJ
bnRlcm5hbCBlcnJvci4iKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNhbGxiYWNrcy0+
b25TdWNjZXNzKHRoaXMpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oCmluZGV4IDEwODZl
YjE2ZWI4N2QxOWYwMjhlM2Y0YzhjNDdiOTA1ZDg2NzhmMDUuLjBlZDk2MTBlODc5NDRhZmFlMmJi
NjIxZjBmYzM4NjQ5MDdhMjk0M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmgKQEAgLTQ1LDEwICs0NSw3
IEBAIGNsYXNzIElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3I7CiAKIGNsYXNzIElEQkRhdGFiYXNl
QmFja2VuZEltcGwgOiBwdWJsaWMgSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlIHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbXBsPiBjcmVhdGUo
Y29uc3QgU3RyaW5nJiBuYW1lLCBJREJCYWNraW5nU3RvcmUqIGRhdGFiYXNlLCBJREJUcmFuc2Fj
dGlvbkNvb3JkaW5hdG9yKiBjb29yZGluYXRvciwgSURCRmFjdG9yeUJhY2tlbmRJbXBsKiBmYWN0
b3J5LCBjb25zdCBTdHJpbmcmIHVuaXF1ZUlkZW50aWZpZXIpCi0gICAgewotICAgICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IElEQkRhdGFiYXNlQmFja2VuZEltcGwobmFtZSwgZGF0YWJhc2UsIGNv
b3JkaW5hdG9yLCBmYWN0b3J5LCB1bmlxdWVJZGVudGlmaWVyKSk7Ci0gICAgfQorICAgIHN0YXRp
YyBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEltcGw+IGNyZWF0ZShjb25zdCBTdHJpbmcm
IG5hbWUsIElEQkJhY2tpbmdTdG9yZSogZGF0YWJhc2UsIElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0
b3IqLCBJREJGYWN0b3J5QmFja2VuZEltcGwqLCBjb25zdCBTdHJpbmcmIHVuaXF1ZUlkZW50aWZp
ZXIpOwogICAgIHZpcnR1YWwgfklEQkRhdGFiYXNlQmFja2VuZEltcGwoKTsKIAogICAgIFBhc3NS
ZWZQdHI8SURCQmFja2luZ1N0b3JlPiBiYWNraW5nU3RvcmUoKSBjb25zdDsKQEAgLTc5LDcgKzc2
LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBJREJEYXRhYmFzZUJhY2tlbmRJbXBsKGNvbnN0
IFN0cmluZyYgbmFtZSwgSURCQmFja2luZ1N0b3JlKiBkYXRhYmFzZSwgSURCVHJhbnNhY3Rpb25D
b29yZGluYXRvciosIElEQkZhY3RvcnlCYWNrZW5kSW1wbCosIGNvbnN0IFN0cmluZyYgdW5pcXVl
SWRlbnRpZmllcik7CiAKLSAgICB2b2lkIG9wZW5JbnRlcm5hbCgpOworICAgIGJvb2wgb3Blbklu
dGVybmFsKCk7CiAgICAgdm9pZCBsb2FkT2JqZWN0U3RvcmVzKCk7CiAgICAgdm9pZCBwcm9jZXNz
UGVuZGluZ0NhbGxzKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJGYWN0b3J5QmFja2VuZEltcGwuY3BwCmluZGV4IGY1YjljODc3NDA2NzQz
ZjBlNWE2MDlhNGNjZTlkNWU0ZGEyOWEzMWMuLjllYjExNjcwOTI2ZWUzNmRiYWMxMmE3YjNiYjNj
NjQ4MDdlZTgwYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJbXBsLmNwcApAQCAtMTI5LDggKzEyOSwxMSBAQCB2
b2lkIElEQkZhY3RvcnlCYWNrZW5kSW1wbDo6ZGVsZXRlRGF0YWJhc2UoY29uc3QgU3RyaW5nJiBu
YW1lLCBQYXNzUmVmUHRyPElEQkNhbAogICAgIH0KIAogICAgIFJlZlB0cjxJREJEYXRhYmFzZUJh
Y2tlbmRJbXBsPiBkYXRhYmFzZUJhY2tlbmQgPSBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpjcmVh
dGUobmFtZSwgYmFja2luZ1N0b3JlLmdldCgpLCBtX3RyYW5zYWN0aW9uQ29vcmRpbmF0b3IuZ2V0
KCksIHRoaXMsIHVuaXF1ZUlkZW50aWZpZXIpOwotICAgIG1fZGF0YWJhc2VCYWNrZW5kTWFwLnNl
dCh1bmlxdWVJZGVudGlmaWVyLCBkYXRhYmFzZUJhY2tlbmQuZ2V0KCkpOwotICAgIGRhdGFiYXNl
QmFja2VuZC0+ZGVsZXRlRGF0YWJhc2UoY2FsbGJhY2tzKTsKKyAgICBpZiAoZGF0YWJhc2VCYWNr
ZW5kKSB7CisgICAgICAgIG1fZGF0YWJhc2VCYWNrZW5kTWFwLnNldCh1bmlxdWVJZGVudGlmaWVy
LCBkYXRhYmFzZUJhY2tlbmQuZ2V0KCkpOworICAgICAgICBkYXRhYmFzZUJhY2tlbmQtPmRlbGV0
ZURhdGFiYXNlKGNhbGxiYWNrcyk7CisgICAgfSBlbHNlCisgICAgICAgIGNhbGxiYWNrcy0+b25F
cnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVOS05P
V05fRVJSLCAiSW50ZXJuYWwgZXJyb3IuIikpOwogfQogCiBQYXNzUmVmUHRyPElEQkJhY2tpbmdT
dG9yZT4gSURCRmFjdG9yeUJhY2tlbmRJbXBsOjpvcGVuQmFja2luZ1N0b3JlKFBhc3NSZWZQdHI8
U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luLCBjb25zdCBTdHJpbmcmIGRhdGFEaXJlY3Rv
cnkpCkBAIC0xNzcsOCArMTgwLDExIEBAIHZvaWQgSURCRmFjdG9yeUJhY2tlbmRJbXBsOjpvcGVu
SW50ZXJuYWwoY29uc3QgU3RyaW5nJiBuYW1lLCBJREJDYWxsYmFja3MqIGNhbGxiCiAgICAgfQog
CiAgICAgUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEltcGw+IGRhdGFiYXNlQmFja2VuZCA9IElE
QkRhdGFiYXNlQmFja2VuZEltcGw6OmNyZWF0ZShuYW1lLCBiYWNraW5nU3RvcmUuZ2V0KCksIG1f
dHJhbnNhY3Rpb25Db29yZGluYXRvci5nZXQoKSwgdGhpcywgdW5pcXVlSWRlbnRpZmllcik7Ci0g
ICAgY2FsbGJhY2tzLT5vblN1Y2Nlc3MoUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFj
ZT4oZGF0YWJhc2VCYWNrZW5kLmdldCgpKS5yZWxlYXNlKCkpOwotICAgIG1fZGF0YWJhc2VCYWNr
ZW5kTWFwLnNldCh1bmlxdWVJZGVudGlmaWVyLCBkYXRhYmFzZUJhY2tlbmQuZ2V0KCkpOworICAg
IGlmIChkYXRhYmFzZUJhY2tlbmQpIHsKKyAgICAgICAgY2FsbGJhY2tzLT5vblN1Y2Nlc3MoUmVm
UHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4oZGF0YWJhc2VCYWNrZW5kLmdldCgpKS5y
ZWxlYXNlKCkpOworICAgICAgICBtX2RhdGFiYXNlQmFja2VuZE1hcC5zZXQodW5pcXVlSWRlbnRp
ZmllciwgZGF0YWJhc2VCYWNrZW5kLmdldCgpKTsKKyAgICB9IGVsc2UKKyAgICAgICAgY2FsbGJh
Y2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlv
bjo6VU5LTk9XTl9FUlIsICJJbnRlcm5hbCBlcnJvci4iKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkZhY3RvcnlCYWNrZW5kSW1wbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCRmFjdG9yeUJhY2tlbmRJbXBsLmgKaW5kZXggNzk4MjE2OGJlMzM3ZGM5NTZhMGI2NWJmMzhi
MThkNDY4ZGUxYmJmOS4uYTM5ODllMmQzYTE3MDA4MDVmNzJiZTRhYmUwNjUwZmIwMTU2ZDI1MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeUJh
Y2tlbmRJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFj
dG9yeUJhY2tlbmRJbXBsLmgKQEAgLTUxLDkgKzUxLDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
fklEQkZhY3RvcnlCYWNrZW5kSW1wbCgpOwogCiAgICAgLy8gTm90aWZpY2F0aW9ucyBmcm9tIHdl
YWsgcG9pbnRlcnMuCi0gICAgdm9pZCByZW1vdmVJREJEYXRhYmFzZUJhY2tlbmQoY29uc3QgU3Ry
aW5nJiB1bmlxdWVJZGVudGlmaWVyKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlSURCRGF0YWJh
c2VCYWNrZW5kKGNvbnN0IFN0cmluZyYgdW5pcXVlSWRlbnRpZmllcik7CiAgICAgdm9pZCBhZGRJ
REJCYWNraW5nU3RvcmUoY29uc3QgU3RyaW5nJiBmaWxlSWRlbnRpZmllciwgSURCQmFja2luZ1N0
b3JlKik7Ci0gICAgdm9pZCByZW1vdmVJREJCYWNraW5nU3RvcmUoY29uc3QgU3RyaW5nJiBmaWxl
SWRlbnRpZmllcik7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZUlEQkJhY2tpbmdTdG9yZShjb25z
dCBTdHJpbmcmIGZpbGVJZGVudGlmaWVyKTsKIAogICAgIHZpcnR1YWwgdm9pZCBnZXREYXRhYmFz
ZU5hbWVzKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdp
bj4sIEZyYW1lKiwgY29uc3QgU3RyaW5nJiBkYXRhRGlyKTsKIApAQCAtNjEsOSArNjEsMTEgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBvcGVuRnJvbVdvcmtlcihjb25zdCBTdHJpbmcmIG5h
bWUsIElEQkNhbGxiYWNrcyosIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+LCBXb3JrZXJDb250
ZXh0KiwgY29uc3QgU3RyaW5nJiBkYXRhRGlyKTsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlRGF0
YWJhc2UoY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIFBhc3NS
ZWZQdHI8U2VjdXJpdHlPcmlnaW4+LCBGcmFtZSosIGNvbnN0IFN0cmluZyYgZGF0YURpcik7CiAK
LXByaXZhdGU6Citwcm90ZWN0ZWQ6CiAgICAgSURCRmFjdG9yeUJhY2tlbmRJbXBsKCk7Ci0gICAg
UGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmU+IG9wZW5CYWNraW5nU3RvcmUoUGFzc1JlZlB0cjxT
ZWN1cml0eU9yaWdpbj4sIGNvbnN0IFN0cmluZyYgZGF0YURpcik7CisgICAgdmlydHVhbCBQYXNz
UmVmUHRyPElEQkJhY2tpbmdTdG9yZT4gb3BlbkJhY2tpbmdTdG9yZShQYXNzUmVmUHRyPFNlY3Vy
aXR5T3JpZ2luPiwgY29uc3QgU3RyaW5nJiBkYXRhRGlyKTsKKworcHJpdmF0ZToKICAgICB2b2lk
IG9wZW5JbnRlcm5hbChjb25zdCBTdHJpbmcmIG5hbWUsIElEQkNhbGxiYWNrcyosIFBhc3NSZWZQ
dHI8U2VjdXJpdHlPcmlnaW4+LCBjb25zdCBTdHJpbmcmIGRhdGFEaXIpOwogCiAgICAgdHlwZWRl
ZiBIYXNoTWFwPFN0cmluZywgSURCRGF0YWJhc2VCYWNrZW5kSW1wbCo+IElEQkRhdGFiYXNlQmFj
a2VuZE1hcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkxldmVsREJCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkxldmVsREJCYWNraW5nU3RvcmUuaAppbmRleCBlMTdhNmYxZmIyNzljMmExOTFmZWQzMzFj
OTk3NjZkMTA2MmQ0NmY1Li5iNGNiN2FiYWUwNzRhMmMxYjAxYzUzYjZjYzlmMjBlNzQ1N2IzMDVm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERC
QmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
TGV2ZWxEQkJhY2tpbmdTdG9yZS5oCkBAIC04MCw5ICs4MCwxMCBAQCBwdWJsaWM6CiAKICAgICBz
dGF0aWMgYm9vbCBiYWNraW5nU3RvcmVFeGlzdHMoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBTdHJp
bmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgcGF0aEJhc2UpOwogCi1wcml2YXRlOgorcHJvdGVjdGVk
OgogICAgIElEQkxldmVsREJCYWNraW5nU3RvcmUoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBJ
REJGYWN0b3J5QmFja2VuZEltcGwqLCBQYXNzT3duUHRyPExldmVsREJEYXRhYmFzZT4pOwogCitw
cml2YXRlOgogICAgIFN0cmluZyBtX2lkZW50aWZpZXI7CiAgICAgUmVmUHRyPElEQkZhY3RvcnlC
YWNrZW5kSW1wbD4gbV9mYWN0b3J5OwogICAgIE93blB0cjxMZXZlbERCRGF0YWJhc2U+IG1fZGI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaQppbmRleCBjZmIxZDdiNGUyNWI5ZTk4MTQyNjM1
YjA3YjNkNjA5YThmMDI2ZWFjLi43MmNhYjE4Mjc5NTljMTYzOTAyM2E3ZmIxNmUxMTBlYTAxZTZj
OWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkKQEAgLTEwNiw3ICsxMDYsOSBAQAog
ICAgICAgICAgICAgJ3Rlc3RzL0ZyYW1lVGVzdEhlbHBlcnMuY3BwJywKICAgICAgICAgICAgICd0
ZXN0cy9GcmFtZVRlc3RIZWxwZXJzLmgnLAogICAgICAgICAgICAgJ3Rlc3RzL0dyYXBoaWNzTGF5
ZXJDaHJvbWl1bVRlc3QuY3BwJywKKyAgICAgICAgICAgICd0ZXN0cy9JREJBYm9ydE9uQ29ycnVw
dFRlc3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9JREJCaW5kaW5nVXRpbGl0aWVzVGVzdC5j
cHAnLAorICAgICAgICAgICAgJ3Rlc3RzL0lEQkZha2VCYWNraW5nU3RvcmUuaCcsCiAgICAgICAg
ICAgICAndGVzdHMvSURCS2V5UGF0aFRlc3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9JREJM
ZXZlbERCQ29kaW5nVGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL0ltYWdlTGF5ZXJDaHJv
bWl1bVRlc3QuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
SURCQWJvcnRPbkNvcnJ1cHRUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
SURCQWJvcnRPbkNvcnJ1cHRUZXN0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42Yzc4YWE1M2M1MjJiNjBiMjBh
ZGI2Nzc5MGJkOTQwMDViNGI3ZmQyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9JREJBYm9ydE9uQ29ycnVwdFRlc3QuY3BwCkBAIC0wLDAgKzEsMTA3IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIklEQkZhY3RvcnlCYWNrZW5k
SW1wbC5oIgorI2luY2x1ZGUgIklEQkZha2VCYWNraW5nU3RvcmUuaCIKKyNpbmNsdWRlICJTZWN1
cml0eU9yaWdpbi5oIgorI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgorCisjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCisKK3VzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOworCituYW1lc3BhY2UgeworCitjbGFzcyBNb2NrSURCQ2FsbGJhY2tzIDogcHVi
bGljIElEQkNhbGxiYWNrcyB7CitwdWJsaWM6CisgICAgTW9ja0lEQkNhbGxiYWNrcygpIDogbV93
YXNFcnJvckNhbGxlZChmYWxzZSkgeyB9CisKKyAgICB2aXJ0dWFsIH5Nb2NrSURCQ2FsbGJhY2tz
KCkKKyAgICB7CisgICAgICAgIEVYUEVDVF9UUlVFKG1fd2FzRXJyb3JDYWxsZWQpOworICAgIH0K
KyAgICB2aXJ0dWFsIHZvaWQgb25FcnJvcihQYXNzUmVmUHRyPElEQkRhdGFiYXNlRXJyb3I+KQor
ICAgIHsKKyAgICAgICAgbV93YXNFcnJvckNhbGxlZCA9IHRydWU7CisgICAgfQorICAgIHZpcnR1
YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PikgeyB9CisgICAgdmly
dHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U+
KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VC
YWNrZW5kSW50ZXJmYWNlPikKKyAgICB7CisgICAgICAgIEVYUEVDVF9UUlVFKGZhbHNlKTsKKyAg
ICB9CisgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQktleT4pIHsgfQor
ICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tl
bmRJbnRlcmZhY2U+KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8
U2VyaWFsaXplZFNjcmlwdFZhbHVlPikgeyB9CisgICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vzc1dp
dGhDb250aW51YXRpb24oKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzV2l0aFByZWZl
dGNoKGNvbnN0IFZlY3RvcjxSZWZQdHI8SURCS2V5PiA+JiwgY29uc3QgVmVjdG9yPFJlZlB0cjxJ
REJLZXk+ID4mLCBjb25zdCBWZWN0b3I8UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gPiYp
IHsgfQorICAgIHZpcnR1YWwgdm9pZCBvbkJsb2NrZWQoKSB7IH0KK3ByaXZhdGU6CisgICAgYm9v
bCBtX3dhc0Vycm9yQ2FsbGVkOworfTsKKworY2xhc3MgRmFpbGluZ0JhY2tpbmdTdG9yZSA6IHB1
YmxpYyBJREJGYWtlQmFja2luZ1N0b3JlIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5GYWlsaW5n
QmFja2luZ1N0b3JlKCkgeyB9CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3Jl
PiBvcGVuKCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRmFpbGluZ0JhY2tp
bmdTdG9yZSk7CisgICAgfQorICAgIHZpcnR1YWwgYm9vbCBjcmVhdGVJREJEYXRhYmFzZU1ldGFE
YXRhKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGludDY0X3QmKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KK307CisKK2NsYXNzIEZhaWxpbmdJREJGYWN0b3J5QmFj
a2VuZEltcGwgOiBwdWJsaWMgSURCRmFjdG9yeUJhY2tlbmRJbXBsIHsKK3B1YmxpYzoKKyAgICB2
aXJ0dWFsIH5GYWlsaW5nSURCRmFjdG9yeUJhY2tlbmRJbXBsKCkgeyB9CisgICAgc3RhdGljIFBh
c3NSZWZQdHI8RmFpbGluZ0lEQkZhY3RvcnlCYWNrZW5kSW1wbD4gY3JlYXRlKCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRmFpbGluZ0lEQkZhY3RvcnlCYWNrZW5kSW1wbCk7
CisgICAgfQorICAgIHZpcnR1YWwgdm9pZCByZW1vdmVJREJEYXRhYmFzZUJhY2tlbmQoY29uc3Qg
V1RGOjpTdHJpbmcgJikgeyB9CisKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8
SURCQmFja2luZ1N0b3JlPiBvcGVuQmFja2luZ1N0b3JlKFBhc3NSZWZQdHI8U2VjdXJpdHlPcmln
aW4+IHBycE9yaWdpbiwgY29uc3QgU3RyaW5nJiBkYXRhRGlyKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIEZhaWxpbmdCYWNraW5nU3RvcmU6Om9wZW4oKTsKKyAgICB9Cit9OworCitURVNUKElEQkFi
b3J0VGVzdCwgVGhlVGVzdCkKK3sKKyAgICBSZWZQdHI8SURCRmFjdG9yeUJhY2tlbmRJbXBsPiBm
YWN0b3J5ID0gRmFpbGluZ0lEQkZhY3RvcnlCYWNrZW5kSW1wbDo6Y3JlYXRlKCk7CisgICAgY29u
c3QgU3RyaW5nJiBuYW1lID0gImRiIG5hbWUiOworICAgIE1vY2tJREJDYWxsYmFja3MgY2FsbGJh
Y2tzOworICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gb3JpZ2luID0gU2VjdXJpdHlPcmlnaW46
OmNyZWF0ZSgiaHR0cCIsICJsb2NhbGhvc3QiLCA4MSk7CisgICAgZmFjdG9yeS0+b3BlbihuYW1l
LCAmY2FsbGJhY2tzLCBvcmlnaW4sIDAgLypGcmFtZSovLCBTdHJpbmcoKSAvKnBhdGgqLyk7Cit9
CisKK30gLy8gbmFtZXNwYWNlCisKKyNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCRmFrZUJhY2tpbmdT
dG9yZS5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJGYWtlQmFja2luZ1N0b3Jl
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYTkxNjBhOGExOWIyMTdmMTg1MTdhOGRjMTNkZTU4ZTM3ODI3NDA0ZAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCRmFrZUJh
Y2tpbmdTdG9yZS5oCkBAIC0wLDAgKzEsNzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JT
ICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQor
ICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIElEQkZha2VCYWNr
aW5nU3RvcmVfaAorI2RlZmluZSBJREJGYWtlQmFja2luZ1N0b3JlX2gKKworI2luY2x1ZGUgIklE
QkJhY2tpbmdTdG9yZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIElEQkZha2VC
YWNraW5nU3RvcmUgOiBwdWJsaWMgSURCQmFja2luZ1N0b3JlIHsKK3B1YmxpYzoKKyAgICB2aXJ0
dWFsIHZvaWQgZ2V0RGF0YWJhc2VOYW1lcyhWZWN0b3I8U3RyaW5nPiYgZm91bmROYW1lcykgT1ZF
UlJJREUgeyB9CisgICAgdmlydHVhbCBib29sIGdldElEQkRhdGFiYXNlTWV0YURhdGEoY29uc3Qg
U3RyaW5nJiBuYW1lLCBTdHJpbmcmIGZvdW5kVmVyc2lvbiwgaW50NjRfdCYgZm91bmRJZCkgT1ZF
UlJJREUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgY3JlYXRlSURCRGF0YWJh
c2VNZXRhRGF0YShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgaW50
NjRfdCYgcm93SWQpIE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wg
dXBkYXRlSURCRGF0YWJhc2VNZXRhRGF0YShpbnQ2NF90IHJvd0lkLCBjb25zdCBTdHJpbmcmIHZl
cnNpb24pIE9WRVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGRlbGV0
ZURhdGFiYXNlKGNvbnN0IFN0cmluZyYgbmFtZSkgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7IH0K
KworICAgIHZpcnR1YWwgdm9pZCBnZXRPYmplY3RTdG9yZXMoaW50NjRfdCBkYXRhYmFzZUlkLCBW
ZWN0b3I8aW50NjRfdD4mIGZvdW5kSWRzLCBWZWN0b3I8U3RyaW5nPiYgZm91bmROYW1lcywgVmVj
dG9yPFN0cmluZz4mIGZvdW5kS2V5UGF0aHMsIFZlY3Rvcjxib29sPiYgZm91bmRBdXRvSW5jcmVt
ZW50RmxhZ3MpIE9WRVJSSURFIHsgfQorICAgIHZpcnR1YWwgYm9vbCBjcmVhdGVPYmplY3RTdG9y
ZShpbnQ2NF90IGRhdGFiYXNlSWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBr
ZXlQYXRoLCBib29sIGF1dG9JbmNyZW1lbnQsIGludDY0X3QmIGFzc2lnbmVkT2JqZWN0U3RvcmVJ
ZCkgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlT2Jq
ZWN0U3RvcmUoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQpIE9WRVJS
SURFIHsgfQorCisgICAgdmlydHVhbCBQYXNzUmVmUHRyPE9iamVjdFN0b3JlUmVjb3JkSWRlbnRp
Zmllcj4gY3JlYXRlSW52YWxpZFJlY29yZElkZW50aWZpZXIoKSBPVkVSUklERSB7IHJldHVybiBQ
YXNzUmVmUHRyPE9iamVjdFN0b3JlUmVjb3JkSWRlbnRpZmllcj4oKTsgfQorCisgICAgdmlydHVh
bCBTdHJpbmcgZ2V0T2JqZWN0U3RvcmVSZWNvcmQoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90
IG9iamVjdFN0b3JlSWQsIGNvbnN0IElEQktleSYpIE9WRVJSSURFIHsgcmV0dXJuIFN0cmluZygp
OyB9CisgICAgdmlydHVhbCBib29sIHB1dE9iamVjdFN0b3JlUmVjb3JkKGludDY0X3QgZGF0YWJh
c2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBJREJLZXkmLCBjb25zdCBTdHJpbmcm
IHZhbHVlLCBPYmplY3RTdG9yZVJlY29yZElkZW50aWZpZXIqKSBPVkVSUklERSB7IHJldHVybiBm
YWxzZTsgfQorICAgIHZpcnR1YWwgdm9pZCBjbGVhck9iamVjdFN0b3JlKGludDY0X3QgZGF0YWJh
c2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkKSBPVkVSUklERSB7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgZGVsZXRlT2JqZWN0U3RvcmVSZWNvcmQoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9i
amVjdFN0b3JlSWQsIGNvbnN0IE9iamVjdFN0b3JlUmVjb3JkSWRlbnRpZmllciopIE9WRVJSSURF
IHsgfQorICAgIHZpcnR1YWwgaW50NjRfdCBuZXh0QXV0b0luY3JlbWVudE51bWJlcihpbnQ2NF90
IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCkgT1ZFUlJJREUgeyByZXR1cm4gMC4w
OyB9CisgICAgdmlydHVhbCBib29sIGtleUV4aXN0c0luT2JqZWN0U3RvcmUoaW50NjRfdCBkYXRh
YmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IElEQktleSYsIE9iamVjdFN0b3Jl
UmVjb3JkSWRlbnRpZmllciogZm91bmRSZWNvcmRJZGVudGlmaWVyKSBPVkVSUklERSB7IHJldHVy
biBmYWxzZTsgfQorCisgICAgdmlydHVhbCBib29sIGZvckVhY2hPYmplY3RTdG9yZVJlY29yZChp
bnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgT2JqZWN0U3RvcmVSZWNv
cmRDYWxsYmFjayYpIE9WRVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9CisKKyAgICB2aXJ0dWFsIHZv
aWQgZ2V0SW5kZXhlcyhpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwg
VmVjdG9yPGludDY0X3Q+JiBmb3VuZElkcywgVmVjdG9yPFN0cmluZz4mIGZvdW5kTmFtZXMsIFZl
Y3RvcjxTdHJpbmc+JiBmb3VuZEtleVBhdGhzLCBWZWN0b3I8Ym9vbD4mIGZvdW5kVW5pcXVlRmxh
Z3MsIFZlY3Rvcjxib29sPiYgZm91bmRNdWx0aUVudHJ5RmxhZ3MpIE9WRVJSSURFIHsgfQorICAg
IHZpcnR1YWwgYm9vbCBjcmVhdGVJbmRleChpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2Jq
ZWN0U3RvcmVJZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJv
b2wgaXNVbmlxdWUsIGJvb2wgaXNNdWx0aUVudHJ5LCBpbnQ2NF90JiBpbmRleElkKSBPVkVSUklE
RSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgdm9pZCBkZWxldGVJbmRleChpbnQ2NF90
IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkKSBPVkVS
UklERSB7IH0KKyAgICB2aXJ0dWFsIGJvb2wgcHV0SW5kZXhEYXRhRm9yUmVjb3JkKGludDY0X3Qg
ZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0
IElEQktleSYsIGNvbnN0IE9iamVjdFN0b3JlUmVjb3JkSWRlbnRpZmllciopIE9WRVJSSURFIHsg
cmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGRlbGV0ZUluZGV4RGF0YUZvclJlY29y
ZChpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRl
eElkLCBjb25zdCBPYmplY3RTdG9yZVJlY29yZElkZW50aWZpZXIqKSBPVkVSUklERSB7IHJldHVy
biBmYWxzZTsgfQorICAgIHZpcnR1YWwgU3RyaW5nIGdldE9iamVjdFZpYUluZGV4KGludDY0X3Qg
ZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0
IElEQktleSYpIE9WRVJSSURFIHsgcmV0dXJuIFN0cmluZygpOyB9CisgICAgdmlydHVhbCBQYXNz
UmVmUHRyPElEQktleT4gZ2V0UHJpbWFyeUtleVZpYUluZGV4KGludDY0X3QgZGF0YWJhc2VJZCwg
aW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IElEQktleSYpIE9W
RVJSSURFIHsgcmV0dXJuIFBhc3NSZWZQdHI8SURCS2V5PigpOyB9CisgICAgdmlydHVhbCBib29s
IGtleUV4aXN0c0luSW5kZXgoaW50NjRfdCBkYXRhYmFzZWlkLCBpbnQ2NF90IG9iamVjdFN0b3Jl
SWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3QgSURCS2V5JiBpbmRleEtleSwgUmVmUHRyPElEQktl
eT4mIGZvdW5kUHJpbWFyeUtleSkgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7IH0KKworICAgIHZp
cnR1YWwgUGFzc1JlZlB0cjxDdXJzb3I+IG9wZW5PYmplY3RTdG9yZUN1cnNvcihpbnQ2NF90IGRh
dGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgSURCS2V5UmFuZ2UqLCBJREJD
dXJzb3I6OkRpcmVjdGlvbikgT1ZFUlJJREUgeyByZXR1cm4gUGFzc1JlZlB0cjxDdXJzb3I+KCk7
IH0KKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q3Vyc29yPiBvcGVuSW5kZXhLZXlDdXJzb3IoaW50
NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwg
Y29uc3QgSURCS2V5UmFuZ2UqLCBJREJDdXJzb3I6OkRpcmVjdGlvbikgT1ZFUlJJREUgeyByZXR1
cm4gUGFzc1JlZlB0cjxDdXJzb3I+KCk7IH0KKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q3Vyc29y
PiBvcGVuSW5kZXhDdXJzb3IoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3Jl
SWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3QgSURCS2V5UmFuZ2UqLCBJREJDdXJzb3I6OkRpcmVj
dGlvbikgT1ZFUlJJREUgeyByZXR1cm4gUGFzc1JlZlB0cjxDdXJzb3I+KCk7IH0KKworICAgIHZp
cnR1YWwgUGFzc1JlZlB0cjxUcmFuc2FjdGlvbj4gY3JlYXRlVHJhbnNhY3Rpb24oKSBPVkVSUklE
RSB7IHJldHVybiBQYXNzUmVmUHRyPFRyYW5zYWN0aW9uPigpOyB9Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBJREJGYWtlQmFja2luZ1N0b3JlX2gK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>143302</attachid>
            <date>2012-05-22 08:10:02 -0700</date>
            <delta_ts>2012-05-22 08:54:32 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-85579-20120522081001.patch</filename>
            <type>text/plain</type>
            <size>22848</size>
            <attacher name="David Grogan">dgrogan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE3OTczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2VhYTIzNGJiYTUyYTFj
Mjc1Y2QzMzNkYjRiMDNkOGIwMmRkOWJjYS4uZjNiYWM3ZmZiMjgyODUwMDdiNWIxMTA3MzNlZWY3
OTcxMzkyYzgwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEyLTA1LTE4ICBEYXZp
ZCBHcm9nYW4gIDxkZ3JvZ2FuQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IEZp
cmUgZXJyb3Igd2hlbiB0aGVyZSBhcmUgcHJvYmxlbXMgb3BlbmluZyBhIERCCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NTU3OQorCisgICAgICAgIFdl
IHVzZWQgdG8gZWl0aGVyIGZpcmUgc3VjY2VzcyBvciBnZXQgaW50byBhbiBpbmZpbml0ZSBsb29w
LgorCisgICAgICAgIFJldmlld2VkIGJ5IFRvbnkgQ2hhbmcuCisKKyAgICAgICAgTmV3IHVuaXQg
dGVzdCBpbgorICAgICAgICBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQkFib3J0T25D
b3JydXB0VGVzdC5jcHAKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNl
QmFja2VuZEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1w
bDo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFz
ZUJhY2tlbmRJbXBsOjpvcGVuSW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJh
c2VCYWNrZW5kSW1wbDo6b3BlbkNvbm5lY3Rpb24pOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhl
ZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuaDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFi
YXNlQmFja2VuZEltcGw6OmNyZWF0ZSk6CisgICAgICAgIChJREJEYXRhYmFzZUJhY2tlbmRJbXBs
KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5QmFja2VuZEltcGwuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SURCRmFjdG9yeUJhY2tlbmRJbXBsOjpkZWxldGVEYXRhYmFz
ZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJGYWN0b3J5QmFja2VuZEltcGw6Om9wZW5JbnRlcm5h
bCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJbXBsLmg6
CisgICAgICAgIChJREJGYWN0b3J5QmFja2VuZEltcGwpOgorICAgICAgICAqIE1vZHVsZXMvaW5k
ZXhlZGRiL0lEQkxldmVsREJCYWNraW5nU3RvcmUuaDoKKyAgICAgICAgKElEQkxldmVsREJCYWNr
aW5nU3RvcmUpOgorCiAyMDEyLTA1LTIyICBJbHlhIFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBIZWFwU25hcHNob3Q6IHNwZWVkVXAg
YnVpbGRBZ2dyZWdhdGVzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA4NWFmODNiZDE4
OWRiZjA3MjYxMDY4MTAxMjNiZTExMTlmZmQyMjkxLi4xNGUyZjhhODVmYWRiNjRkZGNhNjI0NzFi
ZTM1YmI3NjU0M2U1ZTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1
IEBACisyMDEyLTA1LTE4ICBEYXZpZCBHcm9nYW4gIDxkZ3JvZ2FuQGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBJbmRleGVkREI6IEZpcmUgZXJyb3Igd2hlbiB0aGVyZSBhcmUgcHJvYmxlbXMgb3Bl
bmluZyBhIERCCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD04NTU3OQorCisgICAgICAgIFJldmlld2VkIGJ5IFRvbnkgQ2hhbmcuCisKKyAgICAgICAgKiBX
ZWJLaXQuZ3lwaToKKyAgICAgICAgKiB0ZXN0cy9JREJBYm9ydE9uQ29ycnVwdFRlc3QuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoTW9ja0lEQkNhbGxiYWNrcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpNb2NrSURCQ2FsbGJhY2tzOjpNb2NrSURCQ2FsbGJhY2tzKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1vY2tJREJDYWxsYmFja3M6On5Nb2NrSURCQ2FsbGJhY2tzKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1vY2tJREJDYWxsYmFja3M6Om9uRXJyb3IpOgorICAgICAgICAoV2Vi
Q29yZTo6TW9ja0lEQkNhbGxiYWNrczo6b25TdWNjZXNzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1v
Y2tJREJDYWxsYmFja3M6Om9uU3VjY2Vzc1dpdGhDb250aW51YXRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6TW9ja0lEQkNhbGxiYWNrczo6b25TdWNjZXNzV2l0aFByZWZldGNoKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1vY2tJREJDYWxsYmFja3M6Om9uQmxvY2tlZCk6CisgICAgICAgIChGYWlsaW5n
QmFja2luZ1N0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkZhaWxpbmdCYWNraW5nU3RvcmU6On5G
YWlsaW5nQmFja2luZ1N0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkZhaWxpbmdCYWNraW5nU3Rv
cmU6Om9wZW4pOgorICAgICAgICAoV2ViQ29yZTo6RmFpbGluZ0JhY2tpbmdTdG9yZTo6Y3JlYXRl
SURCRGF0YWJhc2VNZXRhRGF0YSk6CisgICAgICAgIChGYWlsaW5nSURCRmFjdG9yeUJhY2tlbmRJ
bXBsKToKKyAgICAgICAgKFdlYkNvcmU6OkZhaWxpbmdJREJGYWN0b3J5QmFja2VuZEltcGw6On5G
YWlsaW5nSURCRmFjdG9yeUJhY2tlbmRJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OkZhaWxpbmdJ
REJGYWN0b3J5QmFja2VuZEltcGw6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpGYWlsaW5n
SURCRmFjdG9yeUJhY2tlbmRJbXBsOjpyZW1vdmVJREJEYXRhYmFzZUJhY2tlbmQpOgorICAgICAg
ICAoV2ViQ29yZTo6RmFpbGluZ0lEQkZhY3RvcnlCYWNrZW5kSW1wbDo6b3BlbkJhY2tpbmdTdG9y
ZSk6CisgICAgICAgIChXZWJDb3JlOjpURVNUKToKKyAgICAgICAgKiB0ZXN0cy9JREJGYWtlQmFj
a2luZ1N0b3JlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkxldmVsREJCYWNraW5nU3RvcmUuaC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
SURCRmFrZUJhY2tpbmdTdG9yZSk6CisKIDIwMTItMDUtMjIgIEFsZXhhbmRlciBQYXZsb3YgIDxh
cGF2bG92QGNocm9taXVtLm9yZz4KIAogICAgICAgICBbQ2hyb21pdW1dIEltcGxlbWVudCB0aGUg
Q29udGV4dE1lbnVJdGVtIFN1Yk1lbnUgdHlwZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcAppbmRleCA1
OTE5OWZjNjMyYWJmMTVhZjZmODI3NzE1ZGNhMTE3OTQ0MzViNzFiLi4wMTBhMTIwZTUxNTZlMTZj
MDcxZDQ1MDYyODcwNDk0ZGZhYTYzMjUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcApAQCAtOTMs
NiArOTMsMTQgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IG1f
ZGF0YWJhc2VDYWxsYmFja3M7CiB9OwogCitQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZElt
cGw+IElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNyZWF0ZShjb25zdCBTdHJpbmcmIG5hbWUsIElE
QkJhY2tpbmdTdG9yZSogZGF0YWJhc2UsIElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3IqIGNvb3Jk
aW5hdG9yLCBJREJGYWN0b3J5QmFja2VuZEltcGwqIGZhY3RvcnksIGNvbnN0IFN0cmluZyYgdW5p
cXVlSWRlbnRpZmllcikKK3sKKyAgICBSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW1wbD4gYmFj
a2VuZCA9IGFkb3B0UmVmKG5ldyBJREJEYXRhYmFzZUJhY2tlbmRJbXBsKG5hbWUsIGRhdGFiYXNl
LCBjb29yZGluYXRvciwgZmFjdG9yeSwgdW5pcXVlSWRlbnRpZmllcikpOworICAgIGlmICghYmFj
a2VuZC0+b3BlbkludGVybmFsKCkpCisgICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBiYWNr
ZW5kLnJlbGVhc2UoKTsKK30KKwogSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6SURCRGF0YWJhc2VC
YWNrZW5kSW1wbChjb25zdCBTdHJpbmcmIG5hbWUsIElEQkJhY2tpbmdTdG9yZSogYmFja2luZ1N0
b3JlLCBJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yKiBjb29yZGluYXRvciwgSURCRmFjdG9yeUJh
Y2tlbmRJbXBsKiBmYWN0b3J5LCBjb25zdCBTdHJpbmcmIHVuaXF1ZUlkZW50aWZpZXIpCiAgICAg
OiBtX2JhY2tpbmdTdG9yZShiYWNraW5nU3RvcmUpCiAgICAgLCBtX2lkKEludmFsaWRJZCkKQEAg
LTEwMywxOSArMTExLDE3IEBAIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OklEQkRhdGFiYXNlQmFj
a2VuZEltcGwoY29uc3QgU3RyaW5nJiBuYW1lLCBJREJCYWNraW5nU3RvCiAgICAgLCBtX3RyYW5z
YWN0aW9uQ29vcmRpbmF0b3IoY29vcmRpbmF0b3IpCiB7CiAgICAgQVNTRVJUKCFtX25hbWUuaXNO
dWxsKCkpOwotICAgIG9wZW5JbnRlcm5hbCgpOwogfQogCi12b2lkIElEQkRhdGFiYXNlQmFja2Vu
ZEltcGw6Om9wZW5JbnRlcm5hbCgpCitib29sIElEQkRhdGFiYXNlQmFja2VuZEltcGw6Om9wZW5J
bnRlcm5hbCgpCiB7CiAgICAgYm9vbCBzdWNjZXNzID0gbV9iYWNraW5nU3RvcmUtPmdldElEQkRh
dGFiYXNlTWV0YURhdGEobV9uYW1lLCBtX3ZlcnNpb24sIG1faWQpOwogICAgIEFTU0VSVChzdWNj
ZXNzID09IChtX2lkICE9IEludmFsaWRJZCkpOwogICAgIGlmIChzdWNjZXNzKSB7CiAgICAgICAg
IGxvYWRPYmplY3RTdG9yZXMoKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICB9Ci0gICAgaWYgKCFtX2JhY2tpbmdTdG9yZS0+Y3JlYXRlSURCRGF0YWJhc2VNZXRh
RGF0YShtX25hbWUsIG1fdmVyc2lvbiwgbV9pZCkpCi0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOyAvLyBGSVhNRTogTmVlZCBiZXR0ZXIgZXJyb3IgaGFuZGxpbmcuCisgICAgcmV0dXJuIG1f
YmFja2luZ1N0b3JlLT5jcmVhdGVJREJEYXRhYmFzZU1ldGFEYXRhKG1fbmFtZSwgbV92ZXJzaW9u
LCBtX2lkKTsKIH0KIAogSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6fklEQkRhdGFiYXNlQmFja2Vu
ZEltcGwoKQpAQCAtMzI1LDkgKzMzMSwxMCBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6
Om9wZW5Db25uZWN0aW9uKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiAgICAg
aWYgKCFtX3BlbmRpbmdEZWxldGVDYWxscy5pc0VtcHR5KCkgfHwgbV9ydW5uaW5nVmVyc2lvbkNo
YW5nZVRyYW5zYWN0aW9uIHx8ICFtX3BlbmRpbmdTZXRWZXJzaW9uQ2FsbHMuaXNFbXB0eSgpKQog
ICAgICAgICBtX3BlbmRpbmdPcGVuQ2FsbHMuYXBwZW5kKFBlbmRpbmdPcGVuQ2FsbDo6Y3JlYXRl
KGNhbGxiYWNrcykpOwogICAgIGVsc2UgewotICAgICAgICBpZiAobV9pZCA9PSBJbnZhbGlkSWQp
Ci0gICAgICAgICAgICBvcGVuSW50ZXJuYWwoKTsKLSAgICAgICAgY2FsbGJhY2tzLT5vblN1Y2Nl
c3ModGhpcyk7CisgICAgICAgIGlmIChtX2lkID09IEludmFsaWRJZCAmJiAhb3BlbkludGVybmFs
KCkpCisgICAgICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3Jl
YXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVTktOT1dOX0VSUiwgIkludGVybmFsIGVycm9yLiIp
KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY2FsbGJhY2tzLT5vblN1Y2Nlc3ModGhpcyk7
CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmgKaW5kZXggMzMxOGUyYmYxODQyZmVmNmMxYjM3
ZDgwZjI2MGJiMjBlNTUxYjM2ZC4uMmE2ZmIzYjc3MjE2ZTdjM2M1NjYzOTNlZDZhNWU1N2U4MTU2
ZGJkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0
YWJhc2VCYWNrZW5kSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkRhdGFiYXNlQmFja2VuZEltcGwuaApAQCAtNDUsMTAgKzQ1LDcgQEAgY2xhc3MgSURCVHJh
bnNhY3Rpb25Db29yZGluYXRvcjsKIAogY2xhc3MgSURCRGF0YWJhc2VCYWNrZW5kSW1wbCA6IHB1
YmxpYyBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UgewogcHVibGljOgotICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEltcGw+IGNyZWF0ZShjb25zdCBTdHJpbmcmIG5h
bWUsIElEQkJhY2tpbmdTdG9yZSogZGF0YWJhc2UsIElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3Iq
IGNvb3JkaW5hdG9yLCBJREJGYWN0b3J5QmFja2VuZEltcGwqIGZhY3RvcnksIGNvbnN0IFN0cmlu
ZyYgdW5pcXVlSWRlbnRpZmllcikKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcg
SURCRGF0YWJhc2VCYWNrZW5kSW1wbChuYW1lLCBkYXRhYmFzZSwgY29vcmRpbmF0b3IsIGZhY3Rv
cnksIHVuaXF1ZUlkZW50aWZpZXIpKTsKLSAgICB9CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SURC
RGF0YWJhc2VCYWNrZW5kSW1wbD4gY3JlYXRlKGNvbnN0IFN0cmluZyYgbmFtZSwgSURCQmFja2lu
Z1N0b3JlKiBkYXRhYmFzZSwgSURCVHJhbnNhY3Rpb25Db29yZGluYXRvciosIElEQkZhY3RvcnlC
YWNrZW5kSW1wbCosIGNvbnN0IFN0cmluZyYgdW5pcXVlSWRlbnRpZmllcik7CiAgICAgdmlydHVh
bCB+SURCRGF0YWJhc2VCYWNrZW5kSW1wbCgpOwogCiAgICAgUGFzc1JlZlB0cjxJREJCYWNraW5n
U3RvcmU+IGJhY2tpbmdTdG9yZSgpIGNvbnN0OwpAQCAtNzksNyArNzYsNyBAQCBwdWJsaWM6CiBw
cml2YXRlOgogICAgIElEQkRhdGFiYXNlQmFja2VuZEltcGwoY29uc3QgU3RyaW5nJiBuYW1lLCBJ
REJCYWNraW5nU3RvcmUqIGRhdGFiYXNlLCBJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yKiwgSURC
RmFjdG9yeUJhY2tlbmRJbXBsKiwgY29uc3QgU3RyaW5nJiB1bmlxdWVJZGVudGlmaWVyKTsKIAot
ICAgIHZvaWQgb3BlbkludGVybmFsKCk7CisgICAgYm9vbCBvcGVuSW50ZXJuYWwoKTsKICAgICB2
b2lkIGxvYWRPYmplY3RTdG9yZXMoKTsKICAgICB2b2lkIHByb2Nlc3NQZW5kaW5nQ2FsbHMoKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9y
eUJhY2tlbmRJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZh
Y3RvcnlCYWNrZW5kSW1wbC5jcHAKaW5kZXggZjViOWM4Nzc0MDY3NDNmMGU1YTYwOWE0Y2NlOWQ1
ZTRkYTI5YTMxYy4uOWViMTE2NzA5MjZlZTM2ZGJhYzEyYTdiM2JiM2M2NDgwN2VlODBiMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeUJhY2tl
bmRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0
b3J5QmFja2VuZEltcGwuY3BwCkBAIC0xMjksOCArMTI5LDExIEBAIHZvaWQgSURCRmFjdG9yeUJh
Y2tlbmRJbXBsOjpkZWxldGVEYXRhYmFzZShjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8
SURCQ2FsCiAgICAgfQogCiAgICAgUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEltcGw+IGRhdGFi
YXNlQmFja2VuZCA9IElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNyZWF0ZShuYW1lLCBiYWNraW5n
U3RvcmUuZ2V0KCksIG1fdHJhbnNhY3Rpb25Db29yZGluYXRvci5nZXQoKSwgdGhpcywgdW5pcXVl
SWRlbnRpZmllcik7Ci0gICAgbV9kYXRhYmFzZUJhY2tlbmRNYXAuc2V0KHVuaXF1ZUlkZW50aWZp
ZXIsIGRhdGFiYXNlQmFja2VuZC5nZXQoKSk7Ci0gICAgZGF0YWJhc2VCYWNrZW5kLT5kZWxldGVE
YXRhYmFzZShjYWxsYmFja3MpOworICAgIGlmIChkYXRhYmFzZUJhY2tlbmQpIHsKKyAgICAgICAg
bV9kYXRhYmFzZUJhY2tlbmRNYXAuc2V0KHVuaXF1ZUlkZW50aWZpZXIsIGRhdGFiYXNlQmFja2Vu
ZC5nZXQoKSk7CisgICAgICAgIGRhdGFiYXNlQmFja2VuZC0+ZGVsZXRlRGF0YWJhc2UoY2FsbGJh
Y2tzKTsKKyAgICB9IGVsc2UKKyAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNl
RXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VU5LTk9XTl9FUlIsICJJbnRlcm5h
bCBlcnJvci4iKSk7CiB9CiAKIFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlPiBJREJGYWN0b3J5
QmFja2VuZEltcGw6Om9wZW5CYWNraW5nU3RvcmUoUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4g
c2VjdXJpdHlPcmlnaW4sIGNvbnN0IFN0cmluZyYgZGF0YURpcmVjdG9yeSkKQEAgLTE3Nyw4ICsx
ODAsMTEgQEAgdm9pZCBJREJGYWN0b3J5QmFja2VuZEltcGw6Om9wZW5JbnRlcm5hbChjb25zdCBT
dHJpbmcmIG5hbWUsIElEQkNhbGxiYWNrcyogY2FsbGIKICAgICB9CiAKICAgICBSZWZQdHI8SURC
RGF0YWJhc2VCYWNrZW5kSW1wbD4gZGF0YWJhc2VCYWNrZW5kID0gSURCRGF0YWJhc2VCYWNrZW5k
SW1wbDo6Y3JlYXRlKG5hbWUsIGJhY2tpbmdTdG9yZS5nZXQoKSwgbV90cmFuc2FjdGlvbkNvb3Jk
aW5hdG9yLmdldCgpLCB0aGlzLCB1bmlxdWVJZGVudGlmaWVyKTsKLSAgICBjYWxsYmFja3MtPm9u
U3VjY2VzcyhSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPihkYXRhYmFzZUJhY2tl
bmQuZ2V0KCkpLnJlbGVhc2UoKSk7Ci0gICAgbV9kYXRhYmFzZUJhY2tlbmRNYXAuc2V0KHVuaXF1
ZUlkZW50aWZpZXIsIGRhdGFiYXNlQmFja2VuZC5nZXQoKSk7CisgICAgaWYgKGRhdGFiYXNlQmFj
a2VuZCkgeworICAgICAgICBjYWxsYmFja3MtPm9uU3VjY2VzcyhSZWZQdHI8SURCRGF0YWJhc2VC
YWNrZW5kSW50ZXJmYWNlPihkYXRhYmFzZUJhY2tlbmQuZ2V0KCkpLnJlbGVhc2UoKSk7CisgICAg
ICAgIG1fZGF0YWJhc2VCYWNrZW5kTWFwLnNldCh1bmlxdWVJZGVudGlmaWVyLCBkYXRhYmFzZUJh
Y2tlbmQuZ2V0KCkpOworICAgIH0gZWxzZQorICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURC
RGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVTktOT1dOX0VSUiwg
IkludGVybmFsIGVycm9yLiIpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJ
bXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5QmFja2Vu
ZEltcGwuaAppbmRleCA3OTgyMTY4YmUzMzdkYzk1NmEwYjY1YmYzOGIxOGQ0NjhkZTFiYmY5Li5h
Mzk4OWUyZDNhMTcwMDgwNWY3MmJlNGFiZTA2NTBmYjAxNTZkMjUyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5QmFja2VuZEltcGwuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5QmFja2VuZEltcGwu
aApAQCAtNTEsOSArNTEsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+SURCRmFjdG9yeUJhY2tl
bmRJbXBsKCk7CiAKICAgICAvLyBOb3RpZmljYXRpb25zIGZyb20gd2VhayBwb2ludGVycy4KLSAg
ICB2b2lkIHJlbW92ZUlEQkRhdGFiYXNlQmFja2VuZChjb25zdCBTdHJpbmcmIHVuaXF1ZUlkZW50
aWZpZXIpOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVJREJEYXRhYmFzZUJhY2tlbmQoY29uc3Qg
U3RyaW5nJiB1bmlxdWVJZGVudGlmaWVyKTsKICAgICB2b2lkIGFkZElEQkJhY2tpbmdTdG9yZShj
b25zdCBTdHJpbmcmIGZpbGVJZGVudGlmaWVyLCBJREJCYWNraW5nU3RvcmUqKTsKLSAgICB2b2lk
IHJlbW92ZUlEQkJhY2tpbmdTdG9yZShjb25zdCBTdHJpbmcmIGZpbGVJZGVudGlmaWVyKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgcmVtb3ZlSURCQmFja2luZ1N0b3JlKGNvbnN0IFN0cmluZyYgZmlsZUlk
ZW50aWZpZXIpOwogCiAgICAgdmlydHVhbCB2b2lkIGdldERhdGFiYXNlTmFtZXMoUGFzc1JlZlB0
cjxJREJDYWxsYmFja3M+LCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiwgRnJhbWUqLCBjb25z
dCBTdHJpbmcmIGRhdGFEaXIpOwogCkBAIC02MSw5ICs2MSwxMSBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIG9wZW5Gcm9tV29ya2VyKGNvbnN0IFN0cmluZyYgbmFtZSwgSURCQ2FsbGJhY2tz
KiwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4sIFdvcmtlckNvbnRleHQqLCBjb25zdCBTdHJp
bmcmIGRhdGFEaXIpOwogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVEYXRhYmFzZShjb25zdCBTdHJp
bmcmIG5hbWUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgUGFzc1JlZlB0cjxTZWN1cml0eU9y
aWdpbj4sIEZyYW1lKiwgY29uc3QgU3RyaW5nJiBkYXRhRGlyKTsKIAotcHJpdmF0ZToKK3Byb3Rl
Y3RlZDoKICAgICBJREJGYWN0b3J5QmFja2VuZEltcGwoKTsKLSAgICBQYXNzUmVmUHRyPElEQkJh
Y2tpbmdTdG9yZT4gb3BlbkJhY2tpbmdTdG9yZShQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiwg
Y29uc3QgU3RyaW5nJiBkYXRhRGlyKTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCQmFja2lu
Z1N0b3JlPiBvcGVuQmFja2luZ1N0b3JlKFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+LCBjb25z
dCBTdHJpbmcmIGRhdGFEaXIpOworCitwcml2YXRlOgogICAgIHZvaWQgb3BlbkludGVybmFsKGNv
bnN0IFN0cmluZyYgbmFtZSwgSURCQ2FsbGJhY2tzKiwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdp
bj4sIGNvbnN0IFN0cmluZyYgZGF0YURpcik7CiAKICAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5n
LCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsKj4gSURCRGF0YWJhc2VCYWNrZW5kTWFwOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkJhY2tpbmdT
dG9yZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkJhY2tp
bmdTdG9yZS5oCmluZGV4IGNjODcwZmVjNWNhMGVlMjhjOTdiNTQ3ZmE2NDYxY2U2MmJmZDA2YzMu
LmE2NWY5NjNlODUwNDMyNTg0ZDk3YzY4MThkYzk0YzJjNjc1MTY2ODkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJCYWNraW5nU3RvcmUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQmFja2luZ1N0
b3JlLmgKQEAgLTgwLDkgKzgwLDEwIEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBib29sIGJhY2tp
bmdTdG9yZUV4aXN0cyhTZWN1cml0eU9yaWdpbiosIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3Qg
U3RyaW5nJiBwYXRoQmFzZSk7CiAKLXByaXZhdGU6Citwcm90ZWN0ZWQ6CiAgICAgSURCTGV2ZWxE
QkJhY2tpbmdTdG9yZShjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIElEQkZhY3RvcnlCYWNrZW5k
SW1wbCosIFBhc3NPd25QdHI8TGV2ZWxEQkRhdGFiYXNlPik7CiAKK3ByaXZhdGU6CiAgICAgU3Ry
aW5nIG1faWRlbnRpZmllcjsKICAgICBSZWZQdHI8SURCRmFjdG9yeUJhY2tlbmRJbXBsPiBtX2Zh
Y3Rvcnk7CiAgICAgT3duUHRyPExldmVsREJEYXRhYmFzZT4gbV9kYjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L1dlYktpdC5neXBpCmluZGV4IGZjYzA0YTBkNTk3MTc4YzdjMzc5NTliOGY4YTJiYThlNGE2YTJi
MzUuLjc4NTRlZGYwYTk5ZDZjYmQ4MjE1NzRjZTZmNDE1NGJjMTEwYjAzODQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9XZWJLaXQuZ3lwaQpAQCAtMTA3LDcgKzEwNyw5IEBACiAgICAgICAgICAgICAndGVz
dHMvRnJhbWVUZXN0SGVscGVycy5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL0ZyYW1lVGVzdEhl
bHBlcnMuaCcsCiAgICAgICAgICAgICAndGVzdHMvR3JhcGhpY3NMYXllckNocm9taXVtVGVzdC5j
cHAnLAorICAgICAgICAgICAgJ3Rlc3RzL0lEQkFib3J0T25Db3JydXB0VGVzdC5jcHAnLAogICAg
ICAgICAgICAgJ3Rlc3RzL0lEQkJpbmRpbmdVdGlsaXRpZXNUZXN0LmNwcCcsCisgICAgICAgICAg
ICAndGVzdHMvSURCRmFrZUJhY2tpbmdTdG9yZS5oJywKICAgICAgICAgICAgICd0ZXN0cy9JREJL
ZXlQYXRoVGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL0lEQkxldmVsREJDb2RpbmdUZXN0
LmNwcCcsCiAgICAgICAgICAgICAndGVzdHMvSW1hZ2VMYXllckNocm9taXVtVGVzdC5jcHAnLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJBYm9ydE9uQ29ycnVw
dFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJBYm9ydE9uQ29ycnVw
dFRlc3QuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZjNzhhYTUzYzUyMmI2MGIyMGFkYjY3NzkwYmQ5NDAwNWI0
YjdmZDIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lE
QkFib3J0T25Db3JydXB0VGVzdC5jcHAKQEAgLTAsMCArMSwxMDcgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMg
Q09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAq
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSURCRmFjdG9yeUJhY2tlbmRJbXBsLmgiCisjaW5jbHVk
ZSAiSURCRmFrZUJhY2tpbmdTdG9yZS5oIgorI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCisj
aW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKKyNpZiBF
TkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25h
bWVzcGFjZSB7CisKK2NsYXNzIE1vY2tJREJDYWxsYmFja3MgOiBwdWJsaWMgSURCQ2FsbGJhY2tz
IHsKK3B1YmxpYzoKKyAgICBNb2NrSURCQ2FsbGJhY2tzKCkgOiBtX3dhc0Vycm9yQ2FsbGVkKGZh
bHNlKSB7IH0KKworICAgIHZpcnR1YWwgfk1vY2tJREJDYWxsYmFja3MoKQorICAgIHsKKyAgICAg
ICAgRVhQRUNUX1RSVUUobV93YXNFcnJvckNhbGxlZCk7CisgICAgfQorICAgIHZpcnR1YWwgdm9p
ZCBvbkVycm9yKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VFcnJvcj4pCisgICAgeworICAgICAgICBt
X3dhc0Vycm9yQ2FsbGVkID0gdHJ1ZTsKKyAgICB9CisgICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vz
cyhQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgb25TdWNj
ZXNzKFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZT4pIHsgfQorICAgIHZpcnR1
YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+
KQorICAgIHsKKyAgICAgICAgRVhQRUNUX1RSVUUoZmFsc2UpOworICAgIH0KKyAgICB2aXJ0dWFs
IHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8SURCS2V5PikgeyB9CisgICAgdmlydHVhbCB2b2lk
IG9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4pIHsg
fQorICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzV2l0aENvbnRpbnVhdGlvbigp
IHsgfQorICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3NXaXRoUHJlZmV0Y2goY29uc3QgVmVjdG9y
PFJlZlB0cjxJREJLZXk+ID4mLCBjb25zdCBWZWN0b3I8UmVmUHRyPElEQktleT4gPiYsIGNvbnN0
IFZlY3RvcjxSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiA+JikgeyB9CisgICAgdmlydHVh
bCB2b2lkIG9uQmxvY2tlZCgpIHsgfQorcHJpdmF0ZToKKyAgICBib29sIG1fd2FzRXJyb3JDYWxs
ZWQ7Cit9OworCitjbGFzcyBGYWlsaW5nQmFja2luZ1N0b3JlIDogcHVibGljIElEQkZha2VCYWNr
aW5nU3RvcmUgeworcHVibGljOgorICAgIHZpcnR1YWwgfkZhaWxpbmdCYWNraW5nU3RvcmUoKSB7
IH0KKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmU+IG9wZW4oKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBGYWlsaW5nQmFja2luZ1N0b3JlKTsKKyAgICB9
CisgICAgdmlydHVhbCBib29sIGNyZWF0ZUlEQkRhdGFiYXNlTWV0YURhdGEoY29uc3QgU3RyaW5n
JiwgY29uc3QgU3RyaW5nJiwgaW50NjRfdCYpCisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQorfTsKKworY2xhc3MgRmFpbGluZ0lEQkZhY3RvcnlCYWNrZW5kSW1wbCA6IHB1Ymxp
YyBJREJGYWN0b3J5QmFja2VuZEltcGwgeworcHVibGljOgorICAgIHZpcnR1YWwgfkZhaWxpbmdJ
REJGYWN0b3J5QmFja2VuZEltcGwoKSB7IH0KKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxGYWlsaW5n
SURCRmFjdG9yeUJhY2tlbmRJbXBsPiBjcmVhdGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBGYWlsaW5nSURCRmFjdG9yeUJhY2tlbmRJbXBsKTsKKyAgICB9CisgICAgdmly
dHVhbCB2b2lkIHJlbW92ZUlEQkRhdGFiYXNlQmFja2VuZChjb25zdCBXVEY6OlN0cmluZyAmKSB7
IH0KKworcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmU+
IG9wZW5CYWNraW5nU3RvcmUoUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gcHJwT3JpZ2luLCBj
b25zdCBTdHJpbmcmIGRhdGFEaXIpCisgICAgeworICAgICAgICByZXR1cm4gRmFpbGluZ0JhY2tp
bmdTdG9yZTo6b3BlbigpOworICAgIH0KK307CisKK1RFU1QoSURCQWJvcnRUZXN0LCBUaGVUZXN0
KQoreworICAgIFJlZlB0cjxJREJGYWN0b3J5QmFja2VuZEltcGw+IGZhY3RvcnkgPSBGYWlsaW5n
SURCRmFjdG9yeUJhY2tlbmRJbXBsOjpjcmVhdGUoKTsKKyAgICBjb25zdCBTdHJpbmcmIG5hbWUg
PSAiZGIgbmFtZSI7CisgICAgTW9ja0lEQkNhbGxiYWNrcyBjYWxsYmFja3M7CisgICAgUmVmUHRy
PFNlY3VyaXR5T3JpZ2luPiBvcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKCJodHRwIiwg
ImxvY2FsaG9zdCIsIDgxKTsKKyAgICBmYWN0b3J5LT5vcGVuKG5hbWUsICZjYWxsYmFja3MsIG9y
aWdpbiwgMCAvKkZyYW1lKi8sIFN0cmluZygpIC8qcGF0aCovKTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UKKworI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJGYWtlQmFja2luZ1N0b3JlLmggYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQkZha2VCYWNraW5nU3RvcmUuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5l
ZDg5NGNiMTlmZTFkMTVhYjk5ZGQ1NjFkNzYyZDNmMjQ0OGFmOWEwCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJGYWtlQmFja2luZ1N0b3JlLmgKQEAg
LTAsMCArMSw3NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
CisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSURCRmFrZUJhY2tpbmdTdG9yZV9oCisjZGVm
aW5lIElEQkZha2VCYWNraW5nU3RvcmVfaAorCisjaW5jbHVkZSAiSURCQmFja2luZ1N0b3JlLmgi
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgSURCRmFrZUJhY2tpbmdTdG9yZSA6IHB1
YmxpYyBJREJCYWNraW5nU3RvcmUgeworcHVibGljOgorICAgIHZpcnR1YWwgdm9pZCBnZXREYXRh
YmFzZU5hbWVzKFZlY3RvcjxTdHJpbmc+JiBmb3VuZE5hbWVzKSBPVkVSUklERSB7IH0KKyAgICB2
aXJ0dWFsIGJvb2wgZ2V0SURCRGF0YWJhc2VNZXRhRGF0YShjb25zdCBTdHJpbmcmIG5hbWUsIFN0
cmluZyYgZm91bmRWZXJzaW9uLCBpbnQ2NF90JiBmb3VuZElkKSBPVkVSUklERSB7IHJldHVybiBm
YWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBjcmVhdGVJREJEYXRhYmFzZU1ldGFEYXRhKGNvbnN0
IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uLCBpbnQ2NF90JiByb3dJZCkgT1ZF
UlJJREUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCB1cGRhdGVJREJEYXRhYmFz
ZU1ldGFEYXRhKGludDY0X3Qgcm93SWQsIGNvbnN0IFN0cmluZyYgdmVyc2lvbikgT1ZFUlJJREUg
eyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgZGVsZXRlRGF0YWJhc2UoY29uc3Qg
U3RyaW5nJiBuYW1lKSBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfQorCisgICAgdmlydHVhbCB2
b2lkIGdldE9iamVjdFN0b3JlcyhpbnQ2NF90IGRhdGFiYXNlSWQsIFZlY3RvcjxpbnQ2NF90PiYg
Zm91bmRJZHMsIFZlY3RvcjxTdHJpbmc+JiBmb3VuZE5hbWVzLCBWZWN0b3I8SURCS2V5UGF0aD4m
IGZvdW5kS2V5UGF0aHMsIFZlY3Rvcjxib29sPiYgZm91bmRBdXRvSW5jcmVtZW50RmxhZ3MpIE9W
RVJSSURFIHsgfQorICAgIHZpcnR1YWwgYm9vbCBjcmVhdGVPYmplY3RTdG9yZShpbnQ2NF90IGRh
dGFiYXNlSWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCwg
Ym9vbCBhdXRvSW5jcmVtZW50LCBpbnQ2NF90JiBhc3NpZ25lZE9iamVjdFN0b3JlSWQpIE9WRVJS
SURFIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCB2b2lkIGRlbGV0ZU9iamVjdFN0b3Jl
KGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkKSBPVkVSUklERSB7IH0K
KworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxPYmplY3RTdG9yZVJlY29yZElkZW50aWZpZXI+IGNy
ZWF0ZUludmFsaWRSZWNvcmRJZGVudGlmaWVyKCkgT1ZFUlJJREUgeyByZXR1cm4gUGFzc1JlZlB0
cjxPYmplY3RTdG9yZVJlY29yZElkZW50aWZpZXI+KCk7IH0KKworICAgIHZpcnR1YWwgU3RyaW5n
IGdldE9iamVjdFN0b3JlUmVjb3JkKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RT
dG9yZUlkLCBjb25zdCBJREJLZXkmKSBPVkVSUklERSB7IHJldHVybiBTdHJpbmcoKTsgfQorICAg
IHZpcnR1YWwgYm9vbCBwdXRPYmplY3RTdG9yZVJlY29yZChpbnQ2NF90IGRhdGFiYXNlSWQsIGlu
dDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgSURCS2V5JiwgY29uc3QgU3RyaW5nJiB2YWx1ZSwg
T2JqZWN0U3RvcmVSZWNvcmRJZGVudGlmaWVyKikgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7IH0K
KyAgICB2aXJ0dWFsIHZvaWQgY2xlYXJPYmplY3RTdG9yZShpbnQ2NF90IGRhdGFiYXNlSWQsIGlu
dDY0X3Qgb2JqZWN0U3RvcmVJZCkgT1ZFUlJJREUgeyB9CisgICAgdmlydHVhbCB2b2lkIGRlbGV0
ZU9iamVjdFN0b3JlUmVjb3JkKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9y
ZUlkLCBjb25zdCBPYmplY3RTdG9yZVJlY29yZElkZW50aWZpZXIqKSBPVkVSUklERSB7IH0KKyAg
ICB2aXJ0dWFsIGludDY0X3QgbmV4dEF1dG9JbmNyZW1lbnROdW1iZXIoaW50NjRfdCBkYXRhYmFz
ZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQpIE9WRVJSSURFIHsgcmV0dXJuIDAuMDsgfQorICAg
IHZpcnR1YWwgYm9vbCBrZXlFeGlzdHNJbk9iamVjdFN0b3JlKGludDY0X3QgZGF0YWJhc2VJZCwg
aW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBJREJLZXkmLCBPYmplY3RTdG9yZVJlY29yZElk
ZW50aWZpZXIqIGZvdW5kUmVjb3JkSWRlbnRpZmllcikgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7
IH0KKworICAgIHZpcnR1YWwgYm9vbCBmb3JFYWNoT2JqZWN0U3RvcmVSZWNvcmQoaW50NjRfdCBk
YXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIE9iamVjdFN0b3JlUmVjb3JkQ2FsbGJh
Y2smKSBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfQorCisgICAgdmlydHVhbCB2b2lkIGdldElu
ZGV4ZXMoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIFZlY3Rvcjxp
bnQ2NF90PiYgZm91bmRJZHMsIFZlY3RvcjxTdHJpbmc+JiBmb3VuZE5hbWVzLCBWZWN0b3I8SURC
S2V5UGF0aD4mIGZvdW5kS2V5UGF0aHMsIFZlY3Rvcjxib29sPiYgZm91bmRVbmlxdWVGbGFncywg
VmVjdG9yPGJvb2w+JiBmb3VuZE11bHRpRW50cnlGbGFncykgT1ZFUlJJREUgeyB9CisgICAgdmly
dHVhbCBib29sIGNyZWF0ZUluZGV4KGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RT
dG9yZUlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgsIGJv
b2wgaXNVbmlxdWUsIGJvb2wgaXNNdWx0aUVudHJ5LCBpbnQ2NF90JiBpbmRleElkKSBPVkVSUklE
RSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgdm9pZCBkZWxldGVJbmRleChpbnQ2NF90
IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkKSBPVkVS
UklERSB7IH0KKyAgICB2aXJ0dWFsIGJvb2wgcHV0SW5kZXhEYXRhRm9yUmVjb3JkKGludDY0X3Qg
ZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0
IElEQktleSYsIGNvbnN0IE9iamVjdFN0b3JlUmVjb3JkSWRlbnRpZmllciopIE9WRVJSSURFIHsg
cmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGRlbGV0ZUluZGV4RGF0YUZvclJlY29y
ZChpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRl
eElkLCBjb25zdCBPYmplY3RTdG9yZVJlY29yZElkZW50aWZpZXIqKSBPVkVSUklERSB7IHJldHVy
biBmYWxzZTsgfQorICAgIHZpcnR1YWwgU3RyaW5nIGdldE9iamVjdFZpYUluZGV4KGludDY0X3Qg
ZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0
IElEQktleSYpIE9WRVJSSURFIHsgcmV0dXJuIFN0cmluZygpOyB9CisgICAgdmlydHVhbCBQYXNz
UmVmUHRyPElEQktleT4gZ2V0UHJpbWFyeUtleVZpYUluZGV4KGludDY0X3QgZGF0YWJhc2VJZCwg
aW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IElEQktleSYpIE9W
RVJSSURFIHsgcmV0dXJuIFBhc3NSZWZQdHI8SURCS2V5PigpOyB9CisgICAgdmlydHVhbCBib29s
IGtleUV4aXN0c0luSW5kZXgoaW50NjRfdCBkYXRhYmFzZWlkLCBpbnQ2NF90IG9iamVjdFN0b3Jl
SWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3QgSURCS2V5JiBpbmRleEtleSwgUmVmUHRyPElEQktl
eT4mIGZvdW5kUHJpbWFyeUtleSkgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7IH0KKworICAgIHZp
cnR1YWwgUGFzc1JlZlB0cjxDdXJzb3I+IG9wZW5PYmplY3RTdG9yZUN1cnNvcihpbnQ2NF90IGRh
dGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgSURCS2V5UmFuZ2UqLCBJREJD
dXJzb3I6OkRpcmVjdGlvbikgT1ZFUlJJREUgeyByZXR1cm4gUGFzc1JlZlB0cjxDdXJzb3I+KCk7
IH0KKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q3Vyc29yPiBvcGVuSW5kZXhLZXlDdXJzb3IoaW50
NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwg
Y29uc3QgSURCS2V5UmFuZ2UqLCBJREJDdXJzb3I6OkRpcmVjdGlvbikgT1ZFUlJJREUgeyByZXR1
cm4gUGFzc1JlZlB0cjxDdXJzb3I+KCk7IH0KKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q3Vyc29y
PiBvcGVuSW5kZXhDdXJzb3IoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3Jl
SWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3QgSURCS2V5UmFuZ2UqLCBJREJDdXJzb3I6OkRpcmVj
dGlvbikgT1ZFUlJJREUgeyByZXR1cm4gUGFzc1JlZlB0cjxDdXJzb3I+KCk7IH0KKworICAgIHZp
cnR1YWwgUGFzc1JlZlB0cjxUcmFuc2FjdGlvbj4gY3JlYXRlVHJhbnNhY3Rpb24oKSBPVkVSUklE
RSB7IHJldHVybiBQYXNzUmVmUHRyPFRyYW5zYWN0aW9uPigpOyB9Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBJREJGYWtlQmFja2luZ1N0b3JlX2gK
</data>

          </attachment>
      

    </bug>

</bugzilla>