<?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>90411</bug_id>
          
          <creation_ts>2012-07-02 16:01:26 -0700</creation_ts>
          <short_desc>IndexedDB: Consolidate two-phase connection to avoid race conditions</short_desc>
          <delta_ts>2012-09-13 17:28:23 -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>
          <dependson>89505</dependson>
    
    <dependson>96122</dependson>
    
    <dependson>96686</dependson>
    
    <dependson>96700</dependson>
          <blocked>95912</blocked>
    
    <blocked>96444</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Joshua Bell">jsbell</reporter>
          <assigned_to name="Joshua Bell">jsbell</assigned_to>
          <cc>abarth</cc>
    
    <cc>alecflett</cc>
    
    <cc>dglazkov</cc>
    
    <cc>dgrogan</cc>
    
    <cc>fishd</cc>
    
    <cc>jamesr</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>661792</commentid>
    <comment_count>0</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-07-02 16:01:26 -0700</bug_when>
    <thetext>IndexedDB: Consolidate two-phase connection to avoid race conditions</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>661793</commentid>
    <comment_count>1</comment_count>
      <attachid>150493</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-07-02 16:01:39 -0700</bug_when>
    <thetext>Created attachment 150493
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>661799</commentid>
    <comment_count>2</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-07-02 16:11:06 -0700</bug_when>
    <thetext>Work in progress - the attached patch builds with DumpRenderTree (with some Chromium webkit support library changes) and all Layout Tests pass. I&apos;m still working my way through the Chromium side changes, then it will be a matter of figuring out a landing sequence for this.

The basic pattern is that instead of:

IDBFactoy::open(...) {
  r = IDBRequest::create();
  IDBFactoryBackend-&gt;open(..., r, ...);
}

IDBRequest::onSuccess(IDBDatabaseBackend b) {
  db = IDBDatabase::create();
  b-&gt;registerFrontend(db-&gt;callbacks);
}

(which leaves nothing registered with the backend in the mean time, so it must be artificially kept alive)

We do:

IDBFactoy::open(...) {
  r = IDBRequest::create();
  c = IDBDatabaseCallbacks::create();
  r.setDBCallbacks(c);
  IDBFactoryBackend-&gt;open(..., r, c, ...);
}

IDBRequest::onSuccess(IDBDatabaseBackend b) {
  db = IDBDatabase::create(this-&gt;callbacks);
}

This seems easy in theory, but the multiple layers of indirection mean that each layer ends up with wrappers around the db_callbacks which need to be kept in sync. So... it might make more sense to have the db_callbacks minted during the callback path leading to the IDBRequest::onSuccess call instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>680818</commentid>
    <comment_count>3</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-07-27 11:01:09 -0700</bug_when>
    <thetext>Hold off on this until the dust settles from http://webkit.org/b/89505</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>707939</commentid>
    <comment_count>4</comment_count>
      <attachid>161334</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-08-29 15:30:59 -0700</bug_when>
    <thetext>Created attachment 161334
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>712635</commentid>
    <comment_count>5</comment_count>
      <attachid>162360</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-09-05 16:09:52 -0700</bug_when>
    <thetext>Created attachment 162360
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>712637</commentid>
    <comment_count>6</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-09-05 16:12:48 -0700</bug_when>
    <thetext>Getting close - with the Chromium side http://codereview.chromium.org/10917099/ in place, all tests pass (various chromium tests plus layout tests).

Need to dig into the specifics of:
* Why this affects layout tests behavior (although the tests are more correct now, that isn&apos;t the intent of the patch!)
* The &quot;FIXME: Verify that the following is still needed...&quot; note
* If the onSuccess -&gt; onError logic in IDBOpenDBRequest::onSuccess is really the best approach
* How to split this up for landing :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>712692</commentid>
    <comment_count>7</comment_count>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-09-05 17:13:32 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; Getting close - with the Chromium side http://codereview.chromium.org/10917099/ in place, all tests pass (various chromium tests plus layout tests).
&gt; 
&gt; Need to dig into the specifics of:
&gt; * Why this affects layout tests behavior (although the tests are more correct now, that isn&apos;t the intent of the patch!)

Regardless of why, I think we can (and should) split that fix into a separate patch. Let me know if you want me to do so.

&gt; * The &quot;FIXME: Verify that the following is still needed...&quot; note

Well, we don&apos;t HAVE to figure that out now.

&gt; * If the onSuccess -&gt; onError logic in IDBOpenDBRequest::onSuccess is really the best approach

After seeing it I think I prefer it over sending an IPC to the backend.

&gt; * How to split this up for landing :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>712827</commentid>
    <comment_count>8</comment_count>
      <attachid>162405</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-09-05 20:43:41 -0700</bug_when>
    <thetext>Created attachment 162405
dgrogans</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>712840</commentid>
    <comment_count>9</comment_count>
      <attachid>162405</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-09-05 21:13:31 -0700</bug_when>
    <thetext>Comment on attachment 162405
dgrogans

interdiff isn&apos;t working, just ignore this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>712856</commentid>
    <comment_count>10</comment_count>
      <attachid>162360</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-09-05 21:46:26 -0700</bug_when>
    <thetext>Comment on attachment 162360
Patch

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

&gt; Source/WebCore/Modules/indexeddb/IDBDatabaseBackendImpl.cpp:472
&gt; +    if (m_runningVersionChangeTransaction || connectionCount() &gt; 1) {

Reverting this to &gt; 0 makes the layout tests unaffected for me. &gt;0 seems correct as we don&apos;t want to fire blocked (above) and immediately schedule the setIntVersionInternal task (below).

That this was hidden by correcting the layout tests&apos; other faults makes me think we don&apos;t have enough test coverage.

&gt; Source/WebCore/Modules/indexeddb/IDBDatabaseBackendImpl.cpp:562
&gt; +    for (Deque&lt;RefPtr&lt;PendingOpenWithVersionCall&gt; &gt;::iterator it = m_pendingSecondHalfOpenWithVersionCalls.begin(); it != m_pendingSecondHalfOpenWithVersionCalls.end(); ++it) {

I think you can move this loop to a later patch.

&gt; Source/WebCore/Modules/indexeddb/IDBDatabaseBackendImpl.cpp:570
&gt; +    if (connectionCount() &gt; 1 || m_pendingSecondHalfOpenWithVersionCalls.size())

This second clause looks to be a no-op as the previous loop emptied m_pendingSecondHalfOpenWithVersionCalls.  If you remove that loop, which you should be able to do, then I&apos;m not sure what the ramifications of that second clause are.  Removing it didn&apos;t change the result of any of our existing tests but I&apos;m working on writing one that would bring out a difference.  What&apos;s your intuition/understanding?

&gt; Source/WebCore/Modules/indexeddb/IDBOpenDBRequest.cpp:112
&gt; +        if (idbDatabase-&gt;isClosePending()) {

This can be moved to a later patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>713350</commentid>
    <comment_count>11</comment_count>
      <attachid>162360</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-09-06 09:11:48 -0700</bug_when>
    <thetext>Comment on attachment 162360
Patch

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

&gt;&gt; Source/WebCore/Modules/indexeddb/IDBDatabaseBackendImpl.cpp:472
&gt;&gt; +    if (m_runningVersionChangeTransaction || connectionCount() &gt; 1) {
&gt; 
&gt; Reverting this to &gt; 0 makes the layout tests unaffected for me. &gt;0 seems correct as we don&apos;t want to fire blocked (above) and immediately schedule the setIntVersionInternal task (below).
&gt; 
&gt; That this was hidden by correcting the layout tests&apos; other faults makes me think we don&apos;t have enough test coverage.

Good catch. Yeah, makes sense for the tests to be the same. This is probably residue from an earlier iteration where m_databaseCallbacksSet.add(databaseCallbacks) ran earlier. It makes sense for the test to be &gt; 0 with set addition being at the end of this method.

&gt;&gt; Source/WebCore/Modules/indexeddb/IDBDatabaseBackendImpl.cpp:562
&gt;&gt; +    for (Deque&lt;RefPtr&lt;PendingOpenWithVersionCall&gt; &gt;::iterator it = m_pendingSecondHalfOpenWithVersionCalls.begin(); it != m_pendingSecondHalfOpenWithVersionCalls.end(); ++it) {
&gt; 
&gt; I think you can move this loop to a later patch.

The loop doesn&apos;t necessarily empty the m_pendingSecondHalfWithVersionCalls, just removes the connection being closed if it was in the halfway state. (A &quot;find&quot; would make more sense than an iteration, but it will stop being a list soon anyway.)

So, this is to handle the case where the connection being closed is in the halfway state, i.e. upgradeneeded has fired and the front end has called close() before success fires. close() needs to ensure that onsuccess won&apos;t fire, so it clears it from the ...SecondHalf... queue.

Without this, it looks like we&apos;ll fall into processPendingCalls() which will dispatch an onSuccess() then drop the connection on the floor, which I guess matches the current behavior so we can defer?

&gt;&gt; Source/WebCore/Modules/indexeddb/IDBDatabaseBackendImpl.cpp:570
&gt;&gt; +    if (connectionCount() &gt; 1 || m_pendingSecondHalfOpenWithVersionCalls.size())
&gt; 
&gt; This second clause looks to be a no-op as the previous loop emptied m_pendingSecondHalfOpenWithVersionCalls.  If you remove that loop, which you should be able to do, then I&apos;m not sure what the ramifications of that second clause are.  Removing it didn&apos;t change the result of any of our existing tests but I&apos;m working on writing one that would bring out a difference.  What&apos;s your intuition/understanding?

The if() is asserting that either there are multiple connections (so delete, openWithVersion, setVersion should remain blocked) or that there&apos;s still an pending second half unrelated to the close() (which should not be unblocked by the close).

That said, after thinking further, I think we claim:

ASSERT((connectionCount() == 1) == (m_pendingSecondHalfOpenWithVersionCalls.size() == 1))

... as there should never be pending second half if there are multiple connections. If that&apos;s true, then the second half of the if() clause can indeed go away.

&gt; Source/WebCore/Modules/indexeddb/IDBDatabaseBackendImpl.cpp:576
&gt; +        // FIXME: Verify that the following is still needed even if there are no connections or pending activity:

This may be from the forceClose() case, where the back end is told to close even though the front end may not have tidied up yet.

&gt;&gt; Source/WebCore/Modules/indexeddb/IDBOpenDBRequest.cpp:112
&gt;&gt; +        if (idbDatabase-&gt;isClosePending()) {
&gt; 
&gt; This can be moved to a later patch.

Yeah... not worse than what we&apos;re currently doing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>713406</commentid>
    <comment_count>12</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-09-06 10:14:11 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; 
&gt; That said, after thinking further, I think we claim:
&gt; 
&gt; ASSERT((connectionCount() == 1) == (m_pendingSecondHalfOpenWithVersionCalls.size() == 1))
&gt; 

.. er, not quite:

if (m_pendingSecondHalfOpenWithVersionCalls.size() == 1) {
  ASSERT(connectionCount() == 1)
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>713483</commentid>
    <comment_count>13</comment_count>
      <attachid>162541</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-09-06 11:11:10 -0700</bug_when>
    <thetext>Created attachment 162541
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>713487</commentid>
    <comment_count>14</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-09-06 11:12:55 -0700</bug_when>
    <thetext>Landing sequence is:

(1) Update Chromium to handle old/new WK API: https://chromiumcodereview.appspot.com/10917099
(2) Land WK change (this): https://bugs.webkit.org/show_bug.cgi?id=90411
(3) Remove back-compat shims from Chromium
(4) Remove back-compat shims from WebKit/chromium/public</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>713983</commentid>
    <comment_count>15</comment_count>
      <attachid>162541</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-09-06 18:41:07 -0700</bug_when>
    <thetext>Comment on attachment 162541
Patch

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

Substantively I&apos;d say this and the cr patch LGTM.  Just the question of breaking up for landing remains.

&gt; Source/WebCore/Modules/indexeddb/IDBDatabaseBackendImpl.cpp:570
&gt; +    if (!connectionCount() &amp;&amp; !m_pendingOpenCalls.size() &amp;&amp; !m_pendingOpenWithVersionCalls.size() &amp;&amp; !m_pendingDeleteCalls.size()) {

Could you add a FIXME saying to add a test for !m_pendingOpenCalls.size() &amp;&amp; !m_pendingOpenWithVersionCalls.size() ?  Removing those doesn&apos;t make any of our tests fail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714639</commentid>
    <comment_count>16</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-09-07 10:01:21 -0700</bug_when>
    <thetext>(In reply to comment #14)

(0) Land new WK API method: http://webkit.org/b/96122

&gt; (1) Update Chromium to handle old/new WK API: https://chromiumcodereview.appspot.com/10917099
&gt; (2) Land WK change (this): https://bugs.webkit.org/show_bug.cgi?id=90411
&gt; (3) Remove back-compat shims from Chromium
&gt; (4) Remove back-compat shims from WebKit/chromium/public</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714677</commentid>
    <comment_count>17</comment_count>
      <attachid>162802</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-09-07 10:21:14 -0700</bug_when>
    <thetext>Created attachment 162802
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715107</commentid>
    <comment_count>18</comment_count>
      <attachid>162901</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-09-07 16:33:00 -0700</bug_when>
    <thetext>Created attachment 162901
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715110</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-07 16:36:08 -0700</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715130</commentid>
    <comment_count>20</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-09-07 16:56:57 -0700</bug_when>
    <thetext>Bleah, inspector test failures. Something didn&apos;t like being rebased...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715143</commentid>
    <comment_count>21</comment_count>
      <attachid>162909</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-09-07 17:03:00 -0700</bug_when>
    <thetext>Created attachment 162909
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715486</commentid>
    <comment_count>22</comment_count>
      <attachid>162909</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-09 06:00:29 -0700</bug_when>
    <thetext>Comment on attachment 162909
Patch

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

New failing tests:
platform/chromium/compositing/layout-width-change.html
platform/chromium/compositing/render-surface-alpha-blending.html
platform/chromium/compositing/tiny-layer-rotated.html
platform/chromium/compositing/huge-layer-rotated.html
http/tests/inspector/indexeddb/database-data.html
platform/chromium/compositing/3d-corners.html
platform/chromium/compositing/video-frame-size-change.html
platform/chromium/compositing/perpendicular-layer-sorting.html
fast/loader/unload-form-post-about-blank.html
platform/chromium/compositing/child-layer-3d-sorting.html
platform/chromium/compositing/accelerated-drawing/svg-filters.html
platform/chromium/compositing/lost-compositor-context-permanently.html
platform/chromium/compositing/filters/background-filter-blur-outsets.html
platform/chromium/compositing/lost-compositor-context-with-video.html
platform/chromium/compositing/accelerated-drawing/alpha.html
http/tests/inspector/indexeddb/database-structure.html
fast/repaint/block-selection-gap-in-composited-layer.html
http/tests/inspector/indexeddb/resources-panel.html
fast/canvas/webgl/shader-precision-format.html
platform/chromium/compositing/webgl-loses-compositor-context.html
platform/chromium/compositing/backface-visibility-transformed.html
platform/chromium/compositing/lost-compositor-context-with-rendersurface.html
http/tests/xmlhttprequest/web-apps/001.html
http/tests/inspector/indexeddb/database-names.html
platform/chromium/compositing/lost-compositor-context.html
platform/chromium/compositing/filters/background-filter-blur-off-axis.html
http/tests/media/media-source/seek-to-end-after-duration-change.html
fast/loader/local-CSS-from-local.html
platform/chromium/compositing/img-layer-grow.html
platform/chromium/compositing/lost-compositor-context-twice.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>717386</commentid>
    <comment_count>23</comment_count>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-09-11 11:00:24 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; Bleah, inspector test failures. Something didn&apos;t like being rebased...

The inspector tests pass for me locally after applying that latest patch, fwiw.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>717404</commentid>
    <comment_count>24</comment_count>
      <attachid>163406</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-09-11 11:15:00 -0700</bug_when>
    <thetext>Created attachment 163406
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>717405</commentid>
    <comment_count>25</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-09-11 11:17:05 -0700</bug_when>
    <thetext>&gt; The inspector tests pass for me locally after applying that latest patch, fwiw.

Yeah, I&apos;m not sure what that later failure was about - possibly it was results of a previous run mixed in? The other failures were obviously unrelated.

Anyway, passed locally for me as well. I just re-uploaded the same patch, let&apos;s see what happens.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>717639</commentid>
    <comment_count>26</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-09-11 15:42:26 -0700</bug_when>
    <thetext>abarth@ - can you look at the chromum public webkit API part of this?

tony@ - can you take a general look?

Sorry about the size of this. It&apos;s big, but fairly mechanical (thanks to dgrogan&apos;s suggestions for minimizing test impact).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>717651</commentid>
    <comment_count>27</comment_count>
      <attachid>163406</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-09-11 15:57:59 -0700</bug_when>
    <thetext>Comment on attachment 163406
Patch

Looks like the API changes are only FIXME comments.  They LGTM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>719549</commentid>
    <comment_count>28</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-09-13 08:46:49 -0700</bug_when>
    <thetext>Oops, would help to cc tony@ if I ask him for a review. D&apos;oh.

tony@ r?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>719710</commentid>
    <comment_count>29</comment_count>
      <attachid>163406</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-09-13 11:22:22 -0700</bug_when>
    <thetext>Comment on attachment 163406
Patch

There&apos;s some flakiness with the compositor tests on the ews bots.  We&apos;re still trying to track down the cause.

This looks much simpler.  LGTM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>719717</commentid>
    <comment_count>30</comment_count>
      <attachid>163406</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-13 11:32:33 -0700</bug_when>
    <thetext>Comment on attachment 163406
Patch

Rejecting attachment 163406 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:
seImpl.cpp
patching file Source/WebKit/chromium/src/WebIDBDatabaseImpl.h
patching file Source/WebKit/chromium/src/WebIDBFactoryImpl.cpp
patching file Source/WebKit/chromium/src/WebIDBFactoryImpl.h
patching file Source/WebKit/chromium/tests/IDBAbortOnCorruptTest.cpp
patching file Source/WebKit/chromium/tests/IDBDatabaseBackendTest.cpp

Failed to run &quot;[u&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/svn-apply&apos;, u&apos;--force&apos;, u&apos;--reviewer&apos;, u&apos;Tony Chang&apos;]&quot; exit_code: 1 cwd: /mnt/git/webkit-commit-queue

Full output: http://queues.webkit.org/results/13855088</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>719734</commentid>
    <comment_count>31</comment_count>
      <attachid>163921</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-09-13 11:43:20 -0700</bug_when>
    <thetext>Created attachment 163921
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>719773</commentid>
    <comment_count>32</comment_count>
      <attachid>163921</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-13 12:19:22 -0700</bug_when>
    <thetext>Comment on attachment 163921
Patch for landing

Clearing flags on attachment: 163921

Committed r128489: &lt;http://trac.webkit.org/changeset/128489&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>719775</commentid>
    <comment_count>33</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-13 12:19:27 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>719812</commentid>
    <comment_count>34</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-09-13 12:49:23 -0700</bug_when>
    <thetext>This doesn&apos;t compile on windows unfortunately:


1&gt;c:\b\build\slave\webkit-win-latest-rel\build\src\third_party\webkit\source\webcore\modules\indexeddb\IDBFactoryBackendInterface.h(57):error C2923: &apos;WTF::PassRefPtr&apos; : &apos;WebCore::IDBDatabaseCallbacks&apos; is not a valid template type argument for parameter &apos;T&apos;
1&gt;          C:\b\build\slave\webkit-win-latest-rel\build\src\build\Release\obj\global_intermediate\webcore\bindings/V8IDBDatabase.cpp(407) : see declaration of &apos;WebCore::IDBDatabaseCallbacks&apos;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>719852</commentid>
    <comment_count>35</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-09-13 13:18:40 -0700</bug_when>
    <thetext>(In reply to comment #34)
&gt; This doesn&apos;t compile on windows unfortunately:
&gt; 
&gt; 
&gt; 1&gt;c:\b\build\slave\webkit-win-latest-rel\build\src\third_party\webkit\source\webcore\modules\indexeddb\IDBFactoryBackendInterface.h(57):error C2923: &apos;WTF::PassRefPtr&apos; : &apos;WebCore::IDBDatabaseCallbacks&apos; is not a valid template type argument for parameter &apos;T&apos;
&gt; 1&gt;          C:\b\build\slave\webkit-win-latest-rel\build\src\build\Release\obj\global_intermediate\webcore\bindings/V8IDBDatabase.cpp(407) : see declaration of &apos;WebCore::IDBDatabaseCallbacks&apos;

Bleah. Thanks jamesr@

I think it just needs #include &quot;IDBDatabaseCallbacks.h&quot; in IDBFactoryBackendInterface.h - submitting a try job to see.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>719924</commentid>
    <comment_count>36</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-09-13 14:17:59 -0700</bug_when>
    <thetext>Oh, bleah, it&apos;s confusing the IDBDatabaseCallbacks auto-generated inside V8IDBDatabase.cpp with the &quot;real&quot; IDBDatabaseCallbacks type. The former is a static array of V8DOMConfiguration::BatchedCallback entries - it should probably be in the IDBDatabaseV8Internal namespace, which means a code generator change?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720087</commentid>
    <comment_count>37</comment_count>
      <attachid>163994</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-09-13 16:22:13 -0700</bug_when>
    <thetext>Created attachment 163994
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720152</commentid>
    <comment_count>38</comment_count>
      <attachid>163994</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-13 17:28:17 -0700</bug_when>
    <thetext>Comment on attachment 163994
Patch for landing

Clearing flags on attachment: 163994

Committed r128533: &lt;http://trac.webkit.org/changeset/128533&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720153</commentid>
    <comment_count>39</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-13 17:28:23 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>150493</attachid>
            <date>2012-07-02 16:01:39 -0700</date>
            <delta_ts>2012-08-29 15:30:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-90411-20120702160138.patch</filename>
            <type>text/plain</type>
            <size>49991</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIxNjU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzVmOGRkYzdhZDc1NTZi
MWM4YjFiMmI4OWY4YWI1Y2ExNTkyNjYyZC4uNDA2OWZjYzZjYWExZWFhODBmZTgwNDY0OTE4N2U0
NTFkZmZiODdmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU5IEBACisyMDEyLTA3LTAyICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBDb25z
b2xpZGF0ZSB0d28tcGhhc2UgY29ubmVjdGlvbiB0byBhdm9pZCByYWNlIGNvbmRpdGlvbnMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkwNDExCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3Rz
LiAoT09QUyEpCisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQkRhdGFiYXNlOjpJREJEYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRh
YmFzZTo6fklEQkRhdGFiYXNlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRh
YmFzZS5oOgorICAgICAgICAoSURCRGF0YWJhc2UpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhl
ZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0
YWJhc2VCYWNrZW5kSW1wbDo6UGVuZGluZ09wZW5DYWxsOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6UGVuZGluZ09wZW5DYWxsOjpkYXRhYmFzZUNh
bGxiYWNrcyk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpQZW5k
aW5nT3BlbkNhbGw6OlBlbmRpbmdPcGVuQ2FsbCk6CisgICAgICAgIChJREJEYXRhYmFzZUJhY2tl
bmRJbXBsOjpQZW5kaW5nT3BlbkNhbGwpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VC
YWNrZW5kSW1wbDo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJ
REJEYXRhYmFzZUJhY2tlbmRJbXBsOjpjb25uZWN0aW9uQ291bnQpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6cHJvY2Vzc1BlbmRpbmdDYWxscyk6CisgICAgICAg
IChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpvcGVuQ29ubmVjdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpjbG9zZSk6CisgICAgICAgICog
TW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oOgorICAgICAgICAoSURC
RGF0YWJhc2VCYWNrZW5kSW1wbCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0
YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmg6CisgICAgICAgIChJREJEYXRhYmFzZUJhY2tlbmRJbnRl
cmZhY2UpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQ2FsbGJhY2tz
SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGw6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGw6OklEQkRh
dGFiYXNlQ2FsbGJhY2tzSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUNhbGxi
YWNrc0ltcGw6Om9uVmVyc2lvbkNoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFz
ZUNhbGxiYWNrc0ltcGw6OmNvbm5lY3QpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lE
QkRhdGFiYXNlQ2FsbGJhY2tzSW1wbC5oOgorICAgICAgICAoSURCRGF0YWJhc2VDYWxsYmFja3NJ
bXBsKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OklEQkZhY3Rvcnk6Om9wZW4pOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhl
ZGRiL0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJGYWN0
b3J5QmFja2VuZEltcGw6Om9wZW4pOgorICAgICAgICAoV2ViQ29yZTo6SURCRmFjdG9yeUJhY2tl
bmRJbXBsOjpvcGVuRnJvbVdvcmtlcik6CisgICAgICAgIChXZWJDb3JlOjpJREJGYWN0b3J5QmFj
a2VuZEltcGw6Om9wZW5JbnRlcm5hbCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURC
RmFjdG9yeUJhY2tlbmRJbXBsLmg6CisgICAgICAgIChJREJGYWN0b3J5QmFja2VuZEltcGwpOgor
ICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlLmg6
CisgICAgICAgIChJREJGYWN0b3J5QmFja2VuZEludGVyZmFjZSk6CisgICAgICAgICogTW9kdWxl
cy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0
OjpzZXREYXRhYmFzZUNhbGxiYWNrcyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQlJlcXVlc3Q6Om9uU3VjY2Vzcyk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVk
ZGIvSURCUmVxdWVzdC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChJREJSZXF1ZXN0
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZSk6CisKIDIwMTItMDctMDEgIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTIxNjM1Lgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCBiYmY4ZjdiNzRmM2Q4MGUwYjY3OTQwZTk4NmE1
NzdiOTE0ZjFjNTE4Li44NzE1NTMxNWFkZTFlMDYyMDc4ZmE1MzBmNmEwODkyMzI3OGZmNzJjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDEyLTA3LTAyICBK
b3NodWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBD
b25zb2xpZGF0ZSB0d28tcGhhc2UgY29ubmVjdGlvbiB0byBhdm9pZCByYWNlIGNvbmRpdGlvbnMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkwNDExCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwdWJsaWMv
V2ViSURCRGF0YWJhc2UuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViSURCRGF0YWJhc2U6OnRyYW5z
YWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCRGF0YWJhc2U6OmNsb3NlKToKKyAgICAg
ICAgKiBwdWJsaWMvV2ViSURCRmFjdG9yeS5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAg
KFdlYktpdDo6V2ViSURCRmFjdG9yeTo6b3Blbik6CisgICAgICAgICogc3JjL0lEQkNhbGxiYWNr
c1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SURCQ2FsbGJhY2tzUHJveHk6Om9uU3VjY2Vz
cyk6CisgICAgICAgIChXZWJLaXQ6OklEQkNhbGxiYWNrc1Byb3h5OjpzZXREYXRhYmFzZUNhbGxi
YWNrcyk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAqIHNyYy9JREJDYWxsYmFja3NQcm94
eS5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKElEQkNhbGxiYWNrc1Byb3h5KToKKyAg
ICAgICAgKiBzcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuY3BwOgorICAgICAgICAqIHNyYy9J
REJEYXRhYmFzZUJhY2tlbmRQcm94eS5oOgorICAgICAgICAoSURCRGF0YWJhc2VCYWNrZW5kUHJv
eHkpOgorICAgICAgICAqIHNyYy9JREJGYWN0b3J5QmFja2VuZFByb3h5LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6SURCRmFjdG9yeUJhY2tlbmRQcm94eTo6b3BlbkZyb21Xb3JrZXIpOgorICAgICAg
ICAoV2ViS2l0OjpJREJGYWN0b3J5QmFja2VuZFByb3h5OjpvcGVuKToKKyAgICAgICAgKiBzcmMv
SURCRmFjdG9yeUJhY2tlbmRQcm94eS5oOgorICAgICAgICAoSURCRmFjdG9yeUJhY2tlbmRQcm94
eSk6CisgICAgICAgICogc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYklEQkRhdGFiYXNlSW1wbDo6V2ViSURCRGF0YWJhc2VJbXBsKToKKyAgICAgICAgKFdl
YktpdDo6V2ViSURCRGF0YWJhc2VJbXBsOjpjbG9zZSk6CisgICAgICAgICogc3JjL1dlYklEQkRh
dGFiYXNlSW1wbC5oOgorICAgICAgICAoV2ViSURCRGF0YWJhc2VJbXBsKToKKyAgICAgICAgKiBz
cmMvV2ViSURCRmFjdG9yeUltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJGYWN0b3J5
SW1wbDo6b3Blbik6CisgICAgICAgICogc3JjL1dlYklEQkZhY3RvcnlJbXBsLmg6CisgICAgICAg
IChXZWJJREJGYWN0b3J5SW1wbCk6CisKIDIwMTItMDctMDEgIEtlaXNoaSBIYXR0b3JpICA8a2Vp
c2hpQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEyMTY1
MC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFi
YXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNw
cAppbmRleCA2MzI5OTlkN2YxY2QyNjZjMDI4Njg2ZjI5ZDAyZTgwYmNkZmQwNGViLi5lOTUxNmI5
OTRmNmI2NmNiZDllNTE1YzJhNGNmZTkzMGExOTQ3OWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwCkBAIC00OCwyOSArNDgsMjkgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzUmVmUHRyPElEQkRhdGFiYXNlPiBJREJEYXRh
YmFzZTo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8
SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiBkYXRhYmFzZSkKK1Bhc3NSZWZQdHI8SURCRGF0
YWJhc2U+IElEQkRhdGFiYXNlOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+IGRhdGFiYXNlLCBQYXNz
UmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbD4gY2FsbGJhY2tzKQogewotICAgIFJlZlB0
cjxJREJEYXRhYmFzZT4gaWRiRGF0YWJhc2UoYWRvcHRSZWYobmV3IElEQkRhdGFiYXNlKGNvbnRl
eHQsIGRhdGFiYXNlKSkpOworICAgIFJlZlB0cjxJREJEYXRhYmFzZT4gaWRiRGF0YWJhc2UoYWRv
cHRSZWYobmV3IElEQkRhdGFiYXNlKGNvbnRleHQsIGRhdGFiYXNlLCBjYWxsYmFja3MpKSk7CiAg
ICAgaWRiRGF0YWJhc2UtPnN1c3BlbmRJZk5lZWRlZCgpOwogICAgIHJldHVybiBpZGJEYXRhYmFz
ZS5yZWxlYXNlKCk7CiB9CiAKLUlEQkRhdGFiYXNlOjpJREJEYXRhYmFzZShTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFj
ZT4gYmFja2VuZCkKK0lEQkRhdGFiYXNlOjpJREJEYXRhYmFzZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4gYmFj
a2VuZCwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGw+IGNhbGxiYWNrcykKICAg
ICA6IEFjdGl2ZURPTU9iamVjdChjb250ZXh0LCB0aGlzKQogICAgICwgbV9iYWNrZW5kKGJhY2tl
bmQpCiAgICAgLCBtX2Nsb3NlUGVuZGluZyhmYWxzZSkKICAgICAsIG1fY29udGV4dFN0b3BwZWQo
ZmFsc2UpCisgICAgLCBtX2RhdGFiYXNlQ2FsbGJhY2tzKGNhbGxiYWNrcykKIHsKICAgICAvLyBX
ZSBwYXNzIGEgcmVmZXJlbmNlIG9mIHRoaXMgb2JqZWN0IGJlZm9yZSBpdCBjYW4gYmUgYWRvcHRl
ZC4KICAgICByZWxheEFkb3B0aW9uUmVxdWlyZW1lbnQoKTsKLSAgICBtX2RhdGFiYXNlQ2FsbGJh
Y2tzID0gSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsOjpjcmVhdGUodGhpcyk7CisgICAgbV9kYXRh
YmFzZUNhbGxiYWNrcy0+Y29ubmVjdCh0aGlzKTsKICAgICBtX21ldGFkYXRhID0gbV9iYWNrZW5k
LT5tZXRhZGF0YSgpOwogfQogCiBJREJEYXRhYmFzZTo6fklEQkRhdGFiYXNlKCkKIHsKICAgICBj
bG9zZSgpOwotICAgIG1fZGF0YWJhc2VDYWxsYmFja3MtPnVucmVnaXN0ZXJEYXRhYmFzZSh0aGlz
KTsKIH0KIAogdm9pZCBJREJEYXRhYmFzZTo6dHJhbnNhY3Rpb25DcmVhdGVkKElEQlRyYW5zYWN0
aW9uKiB0cmFuc2FjdGlvbikKQEAgLTMwMywxMSArMzAzLDYgQEAgdm9pZCBJREJEYXRhYmFzZTo6
b25WZXJzaW9uQ2hhbmdlKGNvbnN0IFN0cmluZyYgdmVyc2lvbikKICAgICBlbnF1ZXVlRXZlbnQo
SURCVmVyc2lvbkNoYW5nZUV2ZW50OjpjcmVhdGUodmVyc2lvbiwgZXZlbnROYW1lcygpLnZlcnNp
b25jaGFuZ2VFdmVudCkpOwogfQogCi12b2lkIElEQkRhdGFiYXNlOjpyZWdpc3RlckZyb250ZW5k
Q2FsbGJhY2tzKCkKLXsKLSAgICBtX2JhY2tlbmQtPnJlZ2lzdGVyRnJvbnRlbmRDYWxsYmFja3Mo
bV9kYXRhYmFzZUNhbGxiYWNrcyk7Ci19Ci0KIHZvaWQgSURCRGF0YWJhc2U6OmVucXVldWVFdmVu
dChQYXNzUmVmUHRyPEV2ZW50PiBldmVudCkKIHsKICAgICBBU1NFUlQoIW1fY29udGV4dFN0b3Bw
ZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0
YWJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmgK
aW5kZXggYTI0OGNkODBkZWI4MzdhM2IxNWJkYWEzOGQxZGYxMzBlZDNhMzFhYS4uMzE3YTM2ZWJk
OTcwMTE0N2VjOWZlNDJlYzUzOGI4ZDg3Nzc5MWUxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5oCkBAIC01MSw3ICs1MSw3IEBAIHR5cGVkZWYg
aW50IEV4Y2VwdGlvbkNvZGU7CiAKIGNsYXNzIElEQkRhdGFiYXNlIDogcHVibGljIFJlZkNvdW50
ZWQ8SURCRGF0YWJhc2U+LCBwdWJsaWMgRXZlbnRUYXJnZXQsIHB1YmxpYyBBY3RpdmVET01PYmpl
Y3QgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQkRhdGFiYXNlPiBjcmVhdGUo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50
ZXJmYWNlPik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SURCRGF0YWJhc2U+IGNyZWF0ZShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZh
Y2U+LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbD4pOwogICAgIH5JREJEYXRh
YmFzZSgpOwogCiAgICAgdm9pZCB0cmFuc2FjdGlvbkNyZWF0ZWQoSURCVHJhbnNhY3Rpb24qKTsK
QEAgLTg3LDcgKzg3LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5n
JiBpbnRlcmZhY2VOYW1lKCkgY29uc3Q7CiAgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3Q7CiAKLSAgICB2b2lkIHJlZ2lzdGVy
RnJvbnRlbmRDYWxsYmFja3MoKTsKICAgICBjb25zdCBJREJEYXRhYmFzZU1ldGFkYXRhIG1ldGFk
YXRhKCkgY29uc3QgeyByZXR1cm4gbV9tZXRhZGF0YTsgfQogICAgIHZvaWQgZW5xdWV1ZUV2ZW50
KFBhc3NSZWZQdHI8RXZlbnQ+KTsKICAgICBib29sIGRpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxF
dmVudD4gZXZlbnQsIEV4Y2VwdGlvbkNvZGUmIGVjKSB7IHJldHVybiBFdmVudFRhcmdldDo6ZGlz
cGF0Y2hFdmVudChldmVudCwgZWMpOyB9CkBAIC05Nyw3ICs5Niw3IEBAIHB1YmxpYzoKICAgICB1
c2luZyBSZWZDb3VudGVkPElEQkRhdGFiYXNlPjo6ZGVyZWY7CiAKIHByaXZhdGU6Ci0gICAgSURC
RGF0YWJhc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VC
YWNrZW5kSW50ZXJmYWNlPik7CisgICAgSURCRGF0YWJhc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiwgUGFzc1JlZlB0cjxJ
REJEYXRhYmFzZUNhbGxiYWNrc0ltcGw+KTsKIAogICAgIC8vIEV2ZW50VGFyZ2V0CiAgICAgdmly
dHVhbCB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgeyByZWYoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNw
cAppbmRleCA1MDViYTc1N2JlNDhmYzFhZmNhNDVjNTk2NmZmYmZhMDA0ZDQ3NWU4Li4wMjBkYTNm
NTk1Y2QxNWU0YzI1MTY4MjhhOTdmYmYyOGE3NDIyMTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNw
cApAQCAtNDEsMTggKzQxLDIxIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSURCRGF0
YWJhc2VCYWNrZW5kSW1wbDo6UGVuZGluZ09wZW5DYWxsIDogcHVibGljIFJlZkNvdW50ZWQ8UGVu
ZGluZ09wZW5DYWxsPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8UGVuZGluZ09w
ZW5DYWxsPiBjcmVhdGUoUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKKyAgICBz
dGF0aWMgUGFzc1JlZlB0cjxQZW5kaW5nT3BlbkNhbGw+IGNyZWF0ZShQYXNzUmVmUHRyPElEQkNh
bGxiYWNrcz4gY2FsbGJhY2tzLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBkYXRh
YmFzZUNhbGxiYWNrcykKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgUGVuZGlu
Z09wZW5DYWxsKGNhbGxiYWNrcykpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBlbmRp
bmdPcGVuQ2FsbChjYWxsYmFja3MsIGRhdGFiYXNlQ2FsbGJhY2tzKSk7CiAgICAgfQogICAgIFBh
c3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MoKSB7IHJldHVybiBtX2NhbGxiYWNrczsg
fQorICAgIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IGRhdGFiYXNlQ2FsbGJhY2tz
KCkgeyByZXR1cm4gbV9kYXRhYmFzZUNhbGxiYWNrczsgfQogCiBwcml2YXRlOgotICAgIFBlbmRp
bmdPcGVuQ2FsbChQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQorICAgIFBlbmRp
bmdPcGVuQ2FsbChQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBQYXNzUmVmUHRy
PElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBkYXRhYmFzZUNhbGxiYWNrcykKICAgICAgICAgOiBtX2Nh
bGxiYWNrcyhjYWxsYmFja3MpCisgICAgICAgICwgbV9kYXRhYmFzZUNhbGxiYWNrcyhkYXRhYmFz
ZUNhbGxiYWNrcykKICAgICB7CiAgICAgfQogICAgIFJlZlB0cjxJREJDYWxsYmFja3M+IG1fY2Fs
bGJhY2tzOworICAgIFJlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gbV9kYXRhYmFzZUNhbGxi
YWNrczsKIH07CiAKIGNsYXNzIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OlBlbmRpbmdEZWxldGVD
YWxsIDogcHVibGljIFJlZkNvdW50ZWQ8UGVuZGluZ0RlbGV0ZUNhbGw+IHsKQEAgLTEwOSw3ICsx
MTIsNiBAQCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsKGNv
bnN0IFN0cmluZyYgbmFtZSwgSURCQmFja2luZ1N0bwogICAgICwgbV9pZGVudGlmaWVyKHVuaXF1
ZUlkZW50aWZpZXIpCiAgICAgLCBtX2ZhY3RvcnkoZmFjdG9yeSkKICAgICAsIG1fdHJhbnNhY3Rp
b25Db29yZGluYXRvcihjb29yZGluYXRvcikKLSAgICAsIG1fcGVuZGluZ0Nvbm5lY3Rpb25Db3Vu
dCgwKQogewogICAgIEFTU0VSVCghbV9uYW1lLmlzTnVsbCgpKTsKIH0KQEAgLTI3NSw3ICsyNzcs
NyBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OnRyYW5zYWN0aW9uRmluaXNoZWQoUGFz
c1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbgogCiBpbnQzMl90IElEQkRhdGFiYXNlQmFja2Vu
ZEltcGw6OmNvbm5lY3Rpb25Db3VudCgpCiB7Ci0gICAgcmV0dXJuIG1fZGF0YWJhc2VDYWxsYmFj
a3NTZXQuc2l6ZSgpICsgbV9wZW5kaW5nQ29ubmVjdGlvbkNvdW50OworICAgIHJldHVybiBtX2Rh
dGFiYXNlQ2FsbGJhY2tzU2V0LnNpemUoKTsKIH0KIAogdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJ
bXBsOjpwcm9jZXNzUGVuZGluZ0NhbGxzKCkKQEAgLTMyNCw3ICszMjYsNyBAQCB2b2lkIElEQkRh
dGFiYXNlQmFja2VuZEltcGw6OnByb2Nlc3NQZW5kaW5nQ2FsbHMoKQogICAgIG1fcGVuZGluZ09w
ZW5DYWxscy5zd2FwKHBlbmRpbmdPcGVuQ2FsbHMpOwogICAgIHdoaWxlICghcGVuZGluZ09wZW5D
YWxscy5pc0VtcHR5KCkpIHsKICAgICAgICAgUmVmUHRyPFBlbmRpbmdPcGVuQ2FsbD4gcGVuZGlu
Z09wZW5DYWxsID0gcGVuZGluZ09wZW5DYWxscy50YWtlRmlyc3QoKTsKLSAgICAgICAgb3BlbkNv
bm5lY3Rpb24ocGVuZGluZ09wZW5DYWxsLT5jYWxsYmFja3MoKSk7CisgICAgICAgIG9wZW5Db25u
ZWN0aW9uKHBlbmRpbmdPcGVuQ2FsbC0+Y2FsbGJhY2tzKCksIHBlbmRpbmdPcGVuQ2FsbC0+ZGF0
YWJhc2VDYWxsYmFja3MoKSk7CiAgICAgfQogICAgIEFTU0VSVChtX3BlbmRpbmdPcGVuQ2FsbHMu
aXNFbXB0eSgpKTsKIH0KQEAgLTM0MywyNCArMzQ1LDE3IEBAIFBhc3NSZWZQdHI8SURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW50ZXJmYWNlPiBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjp0cmFuc2FjdGlv
bihECiAgICAgcmV0dXJuIHRyYW5zYWN0aW9uLnJlbGVhc2UoKTsKIH0KIAotdm9pZCBJREJEYXRh
YmFzZUJhY2tlbmRJbXBsOjpyZWdpc3RlckZyb250ZW5kQ2FsbGJhY2tzKFBhc3NSZWZQdHI8SURC
RGF0YWJhc2VDYWxsYmFja3M+IGNhbGxiYWNrcykKLXsKLSAgICBBU1NFUlQobV9iYWNraW5nU3Rv
cmUuZ2V0KCkpOwotICAgIEFTU0VSVChtX3BlbmRpbmdDb25uZWN0aW9uQ291bnQpOwotICAgIC0t
bV9wZW5kaW5nQ29ubmVjdGlvbkNvdW50OwotICAgIG1fZGF0YWJhc2VDYWxsYmFja3NTZXQuYWRk
KFJlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4oY2FsbGJhY2tzKSk7Ci19Ci0KLXZvaWQgSURC
RGF0YWJhc2VCYWNrZW5kSW1wbDo6b3BlbkNvbm5lY3Rpb24oUGFzc1JlZlB0cjxJREJDYWxsYmFj
a3M+IGNhbGxiYWNrcykKK3ZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6b3BlbkNvbm5lY3Rp
b24oUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgUGFzc1JlZlB0cjxJREJEYXRh
YmFzZUNhbGxiYWNrcz4gZGF0YWJhc2VDYWxsYmFja3MpCiB7CiAgICAgQVNTRVJUKG1fYmFja2lu
Z1N0b3JlLmdldCgpKTsKICAgICBpZiAoIW1fcGVuZGluZ0RlbGV0ZUNhbGxzLmlzRW1wdHkoKSB8
fCBtX3J1bm5pbmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24gfHwgIW1fcGVuZGluZ1NldFZlcnNp
b25DYWxscy5pc0VtcHR5KCkpCi0gICAgICAgIG1fcGVuZGluZ09wZW5DYWxscy5hcHBlbmQoUGVu
ZGluZ09wZW5DYWxsOjpjcmVhdGUoY2FsbGJhY2tzKSk7CisgICAgICAgIG1fcGVuZGluZ09wZW5D
YWxscy5hcHBlbmQoUGVuZGluZ09wZW5DYWxsOjpjcmVhdGUoY2FsbGJhY2tzLCBkYXRhYmFzZUNh
bGxiYWNrcykpOwogICAgIGVsc2UgewogICAgICAgICBpZiAobV9pZCA9PSBJbnZhbGlkSWQgJiYg
IW9wZW5JbnRlcm5hbCgpKQogICAgICAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFi
YXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VU5LTk9XTl9FUlIsICJJbnRl
cm5hbCBlcnJvci4iKSk7CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgKyttX3BlbmRpbmdD
b25uZWN0aW9uQ291bnQ7CisgICAgICAgICAgICBtX2RhdGFiYXNlQ2FsbGJhY2tzU2V0LmFkZChS
ZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+KGRhdGFiYXNlQ2FsbGJhY2tzKSk7CisgICAgICAg
ICAgICBjb25uZWN0aW9uQ291bnQoKTsKICAgICAgICAgICAgIGNhbGxiYWNrcy0+b25TdWNjZXNz
KHRoaXMpOwogICAgICAgICB9CiAgICAgfQpAQCAtNDAxLDYgKzM5Niw3IEBAIHZvaWQgSURCRGF0
YWJhc2VCYWNrZW5kSW1wbDo6Y2xvc2UoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4g
cHJwQ2FsbGJhY2tzCiAgICAgUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBjYWxsYmFja3Mg
PSBwcnBDYWxsYmFja3M7CiAgICAgQVNTRVJUKG1fZGF0YWJhc2VDYWxsYmFja3NTZXQuY29udGFp
bnMoY2FsbGJhY2tzKSk7CiAgICAgbV9kYXRhYmFzZUNhbGxiYWNrc1NldC5yZW1vdmUoY2FsbGJh
Y2tzKTsKKyAgICBjb25uZWN0aW9uQ291bnQoKTsKICAgICBpZiAoY29ubmVjdGlvbkNvdW50KCkg
PiAxKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuaAppbmRleCAyMWY0ZjkzYzFi
M2ViMWM2OTZiMzI5NGRjY2U2YjA5MTdhMmVjNWJkLi5lYzFiMDFhNThlYzVjMjQ5M2E5NGU0ZGIy
Mjg2N2M0ZDAxNDYwZTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oCkBAIC01NCw4ICs1NCw2IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgY29uc3QgaW50NjRfdCBJbnZhbGlkSWQgPSAwOwogICAgIGludDY0
X3QgaWQoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9CiAKLSAgICB2b2lkIHJlZ2lzdGVyRnJvbnRl
bmRDYWxsYmFja3MoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4pOwotICAgIHZvaWQg
b3BlbkNvbm5lY3Rpb24oUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+KTsKICAgICB2b2lkIGRlbGV0
ZURhdGFiYXNlKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPik7CiAKICAgICB2aXJ0dWFsIElEQkRh
dGFiYXNlTWV0YWRhdGEgbWV0YWRhdGEoKSBjb25zdDsKQEAgLTY2LDYgKzY0LDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+
IHRyYW5zYWN0aW9uKERPTVN0cmluZ0xpc3QqIG9iamVjdFN0b3JlTmFtZXMsIHVuc2lnbmVkIHNo
b3J0IG1vZGUsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2aXJ0dWFsIHZvaWQgY2xvc2UoUGFzc1Jl
ZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4pOwogCisgICAgdm9pZCBvcGVuQ29ubmVjdGlvbihQ
YXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+
KTsKICAgICBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4gb2JqZWN0
U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lKTsKICAgICBJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9y
KiB0cmFuc2FjdGlvbkNvb3JkaW5hdG9yKCkgY29uc3QgeyByZXR1cm4gbV90cmFuc2FjdGlvbkNv
b3JkaW5hdG9yLmdldCgpOyB9CiAgICAgdm9pZCB0cmFuc2FjdGlvblN0YXJ0ZWQoUGFzc1JlZlB0
cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+KTsKQEAgLTExNSwxMCArMTE0LDYgQEAg
cHJpdmF0ZToKICAgICBjbGFzcyBQZW5kaW5nRGVsZXRlQ2FsbDsKICAgICBEZXF1ZTxSZWZQdHI8
UGVuZGluZ0RlbGV0ZUNhbGw+ID4gbV9wZW5kaW5nRGVsZXRlQ2FsbHM7CiAKLSAgICAvLyBGSVhN
RTogRWxpbWluYXRlIHRoZSBsaW1ibyBzdGF0ZSBiZXR3ZWVuIG9wZW5Db25uZWN0aW9uKCkgYW5k
IHJlZ2lzdGVyRnJvbnRlbmRDYWxsYmFja3MoKQotICAgIC8vIHRoYXQgdGhpcyBjb3VudGVyIHRy
YWNrcy4KLSAgICBpbnQzMl90IG1fcGVuZGluZ0Nvbm5lY3Rpb25Db3VudDsKLQogICAgIHR5cGVk
ZWYgTGlzdEhhc2hTZXQ8UmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiA+IERhdGFiYXNlQ2Fs
bGJhY2tzU2V0OwogICAgIERhdGFiYXNlQ2FsbGJhY2tzU2V0IG1fZGF0YWJhc2VDYWxsYmFja3NT
ZXQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
RGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UuaAppbmRleCAwZjZiMzVkNjA5MzY0ZGNh
Y2JjMTcxNDYzMWZkMTZjNTkxZGNjZDU1Li5lNGZjMGNjOGE3MmFhOTU4ZTMyNzM5MDg0NDM1NWEx
OTA1ZWQ3NzE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UuaApAQCAtNjAsOCArNjAsNiBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldFZlcnNpb24oY29uc3QgU3RyaW5nJiB2ZXJz
aW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxs
YmFja3M+LCBFeGNlcHRpb25Db2RlJikgPSAwOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IHRyYW5zYWN0aW9uKERPTVN0cmluZ0xpc3QqIHN0
b3JlTmFtZXMsIHVuc2lnbmVkIHNob3J0IG1vZGUsIEV4Y2VwdGlvbkNvZGUmKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIGNsb3NlKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+KSA9IDA7
Ci0KLSAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJGcm9udGVuZENhbGxiYWNrcyhQYXNzUmVmUHRy
PElEQkRhdGFiYXNlQ2FsbGJhY2tzPikgPSAwOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJh
c2VDYWxsYmFja3NJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkRhdGFiYXNlQ2FsbGJhY2tzSW1wbC5jcHAKaW5kZXggMTk0MTJmY2JlNTBhYjQ0YmY1M2RjMDFl
MDNkODg1M2UyOGY3YzVmZi4uOTE2YmIzMTU1M2ZiYTU4NDdkNjgwYmIxMTJhODBkODg1ZDNhNzI2
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJh
c2VDYWxsYmFja3NJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwuY3BwCkBAIC0zMiwxMyArMzIsMTMgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbD4g
SURCRGF0YWJhc2VDYWxsYmFja3NJbXBsOjpjcmVhdGUoSURCRGF0YWJhc2UqIGRhdGFiYXNlKQor
UGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGw+IElEQkRhdGFiYXNlQ2FsbGJhY2tz
SW1wbDo6Y3JlYXRlKCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IElEQkRhdGFiYXNlQ2Fs
bGJhY2tzSW1wbChkYXRhYmFzZSkpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgSURCRGF0YWJh
c2VDYWxsYmFja3NJbXBsKCkpOwogfQogCi1JREJEYXRhYmFzZUNhbGxiYWNrc0ltcGw6OklEQkRh
dGFiYXNlQ2FsbGJhY2tzSW1wbChJREJEYXRhYmFzZSogZGF0YWJhc2UpCi0gICAgOiBtX2RhdGFi
YXNlKGRhdGFiYXNlKQorSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsOjpJREJEYXRhYmFzZUNhbGxi
YWNrc0ltcGwoKQorICAgIDogbV9kYXRhYmFzZSgwKQogewogfQogCkBAIC00OCwxNCArNDgsMTUg
QEAgSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsOjp+SURCRGF0YWJhc2VDYWxsYmFja3NJbXBsKCkK
IAogdm9pZCBJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGw6Om9uVmVyc2lvbkNoYW5nZShjb25zdCBT
dHJpbmcmIHZlcnNpb24pCiB7Ci0gICAgaWYgKG1fZGF0YWJhc2UpCi0gICAgICAgIG1fZGF0YWJh
c2UtPm9uVmVyc2lvbkNoYW5nZSh2ZXJzaW9uKTsKKyAgICBBU1NFUlQobV9kYXRhYmFzZSk7Cisg
ICAgbV9kYXRhYmFzZS0+b25WZXJzaW9uQ2hhbmdlKHZlcnNpb24pOwogfQogCi12b2lkIElEQkRh
dGFiYXNlQ2FsbGJhY2tzSW1wbDo6dW5yZWdpc3RlckRhdGFiYXNlKElEQkRhdGFiYXNlKiBkYXRh
YmFzZSkKK3ZvaWQgSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsOjpjb25uZWN0KElEQkRhdGFiYXNl
KiBkYXRhYmFzZSkKIHsKLSAgICBBU1NFUlRfVU5VU0VEKGRhdGFiYXNlLCBkYXRhYmFzZSA9PSBt
X2RhdGFiYXNlKTsKLSAgICBtX2RhdGFiYXNlID0gMDsKKyAgICBBU1NFUlQoIW1fZGF0YWJhc2Up
OworICAgIEFTU0VSVChkYXRhYmFzZSk7CisgICAgbV9kYXRhYmFzZSA9IGRhdGFiYXNlOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbC5oCmluZGV4IGU4YjFm
OTliODM4YWY3YjkzN2Q5NGI3YWY4ZjdmN2RmYjgyYmU3ZmIuLjhkZDQ0ZmU4YzAyMWY3ZTNjZjNi
YjcwZTlhMWYwZDE2NGUwNTVlMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbC5oCkBAIC0zOCwxNiAr
MzgsMTcgQEAgY2xhc3MgSURCRGF0YWJhc2U7CiAKIGNsYXNzIElEQkRhdGFiYXNlQ2FsbGJhY2tz
SW1wbCA6IHB1YmxpYyBJREJEYXRhYmFzZUNhbGxiYWNrcyB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3NJbXBsPiBjcmVhdGUoSURCRGF0YWJhc2Uq
KTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGw+IGNyZWF0
ZSgpOwogICAgIHZpcnR1YWwgfklEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbCgpOwogCiAgICAgdmly
dHVhbCB2b2lkIG9uVmVyc2lvbkNoYW5nZShjb25zdCBTdHJpbmcmIHZlcnNpb24pOwotICAgIHZv
aWQgdW5yZWdpc3RlckRhdGFiYXNlKElEQkRhdGFiYXNlKik7CisKKyAgICB2b2lkIGNvbm5lY3Qo
SURCRGF0YWJhc2UqKTsKIAogcHJpdmF0ZToKLSAgICBJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwo
SURCRGF0YWJhc2UqKTsKKyAgICBJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwoKTsKIAotICAgIC8v
IG1fZGF0YWJhc2UgaGFzIGEgUmVmUHRyIHRvIHRoaXMsIHNvIHVzZSBhIHdlYWsgcG9pbnRlciB0
byBhdm9pZCBhIGN5Y2xlLgorICAgIC8vIFRoZSBpbml0aWFsIElEQlJlcXVlc3Qgb3IgZmluYWwg
SURCRGF0YWJhc2UgbWFpbnRhaW5zIGEgUmVmUHRyIHRvIHRoaXMKICAgICBJREJEYXRhYmFzZSog
bV9kYXRhYmFzZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkZhY3RvcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCRmFjdG9yeS5jcHAKaW5kZXggZDNkZThmNmZhNWI0ZTczMzM2NDBjNjMxM2Q2ZDRlZmY4ZWU5
ZGI1My4uNGM3ZWFiMTE2ZWZhMGJkYzk0NDg1ZjExM2Y1YzExYzIwNzcxYmY3MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5jcHAKQEAgLTk0LDEy
ICs5NCwxNiBAQCBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQkZhY3Rvcnk6Om9wZW4oU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgUwogICAgICAgICAgICAgcmV0dXJuIDA7
CiAgICAgICAgIEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50LT5mcmFtZSgpOwogICAgICAgICBSZWZQ
dHI8SURCUmVxdWVzdD4gcmVxdWVzdCA9IElEQlJlcXVlc3Q6OmNyZWF0ZShjb250ZXh0LCBJREJB
bnk6OmNyZWF0ZSh0aGlzKSwgMCk7Ci0gICAgICAgIG1fYmFja2VuZC0+b3BlbihuYW1lLCByZXF1
ZXN0LmdldCgpLCBjb250ZXh0LT5zZWN1cml0eU9yaWdpbigpLCBmcmFtZSwgU3RyaW5nKCkpOwor
ICAgICAgICBSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3NJbXBsPiBkYXRhYmFzZUNhbGxiYWNr
cyA9IElEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbDo6Y3JlYXRlKCk7CisgICAgICAgIHJlcXVlc3Qt
PnNldERhdGFiYXNlQ2FsbGJhY2tzKGRhdGFiYXNlQ2FsbGJhY2tzKTsKKyAgICAgICAgbV9iYWNr
ZW5kLT5vcGVuKG5hbWUsIHJlcXVlc3QuZ2V0KCksIGRhdGFiYXNlQ2FsbGJhY2tzLmdldCgpLCBj
b250ZXh0LT5zZWN1cml0eU9yaWdpbigpLCBmcmFtZSwgU3RyaW5nKCkpOwogICAgICAgICByZXR1
cm4gcmVxdWVzdDsKICAgICB9CiAjaWYgRU5BQkxFKFdPUktFUlMpCiAgICAgUmVmUHRyPElEQlJl
cXVlc3Q+IHJlcXVlc3QgPSBJREJSZXF1ZXN0OjpjcmVhdGUoY29udGV4dCwgSURCQW55OjpjcmVh
dGUodGhpcyksIDApOwotICAgIG1fYmFja2VuZC0+b3BlbkZyb21Xb3JrZXIobmFtZSwgcmVxdWVz
dC5nZXQoKSwgY29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKSwgc3RhdGljX2Nhc3Q8V29ya2VyQ29u
dGV4dCo+KGNvbnRleHQpLCBTdHJpbmcoKSk7CisgICAgUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJh
Y2tzSW1wbD4gZGF0YWJhc2VDYWxsYmFja3MgPSBJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGw6OmNy
ZWF0ZSgpOworICAgIHJlcXVlc3QtPnNldERhdGFiYXNlQ2FsbGJhY2tzKGRhdGFiYXNlQ2FsbGJh
Y2tzKTsKKyAgICBtX2JhY2tlbmQtPm9wZW5Gcm9tV29ya2VyKG5hbWUsIHJlcXVlc3QuZ2V0KCks
IGRhdGFiYXNlQ2FsbGJhY2tzLmdldCgpLCBjb250ZXh0LT5zZWN1cml0eU9yaWdpbigpLCBzdGF0
aWNfY2FzdDxXb3JrZXJDb250ZXh0Kj4oY29udGV4dCksIFN0cmluZygpKTsKICAgICByZXR1cm4g
cmVxdWVzdDsKICNlbHNlCiAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5QmFja2VuZEltcGwuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJbXBsLmNwcAppbmRleCA0
NDdiYTc3NTEwMzVjOGU5N2U0NzAxN2NkN2Q3NmEwYzcyMTUyYWU2Li4yODViMGViYTM4NzNiOTk3
NmIyOWQ0YzZhNjQ4YjAxNjQyZWYzMDM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5QmFja2VuZEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5jcHAKQEAgLTk5LDE0
ICs5OSwxNCBAQCB2b2lkIElEQkZhY3RvcnlCYWNrZW5kSW1wbDo6Z2V0RGF0YWJhc2VOYW1lcyhQ
YXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLAogICAgIGNhbGxiYWNrcy0+b25TdWNj
ZXNzKGRhdGFiYXNlTmFtZXMucmVsZWFzZSgpKTsKIH0KIAotdm9pZCBJREJGYWN0b3J5QmFja2Vu
ZEltcGw6Om9wZW4oY29uc3QgU3RyaW5nJiBuYW1lLCBJREJDYWxsYmFja3MqIGNhbGxiYWNrcywg
UGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW4sIEZyYW1lKiwgY29uc3Qg
U3RyaW5nJiBkYXRhRGlyZWN0b3J5KQordm9pZCBJREJGYWN0b3J5QmFja2VuZEltcGw6Om9wZW4o
Y29uc3QgU3RyaW5nJiBuYW1lLCBJREJDYWxsYmFja3MqIGNhbGxiYWNrcywgSURCRGF0YWJhc2VD
YWxsYmFja3MqIGRhdGFiYXNlQ2FsbGJhY2tzLCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBz
ZWN1cml0eU9yaWdpbiwgRnJhbWUqLCBjb25zdCBTdHJpbmcmIGRhdGFEaXJlY3RvcnkpCiB7Ci0g
ICAgb3BlbkludGVybmFsKG5hbWUsIGNhbGxiYWNrcywgc2VjdXJpdHlPcmlnaW4sIGRhdGFEaXJl
Y3RvcnkpOworICAgIG9wZW5JbnRlcm5hbChuYW1lLCBjYWxsYmFja3MsIGRhdGFiYXNlQ2FsbGJh
Y2tzLCBzZWN1cml0eU9yaWdpbiwgZGF0YURpcmVjdG9yeSk7CiB9CiAKLXZvaWQgSURCRmFjdG9y
eUJhY2tlbmRJbXBsOjpvcGVuRnJvbVdvcmtlcihjb25zdCBTdHJpbmcmIG5hbWUsIElEQkNhbGxi
YWNrcyogY2FsbGJhY2tzLCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdp
biwgV29ya2VyQ29udGV4dCosIGNvbnN0IFN0cmluZyYgZGF0YURpcmVjdG9yeSkKK3ZvaWQgSURC
RmFjdG9yeUJhY2tlbmRJbXBsOjpvcGVuRnJvbVdvcmtlcihjb25zdCBTdHJpbmcmIG5hbWUsIElE
QkNhbGxiYWNrcyogY2FsbGJhY2tzLCBJREJEYXRhYmFzZUNhbGxiYWNrcyogZGF0YWJhc2VDYWxs
YmFja3MsIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luLCBXb3JrZXJD
b250ZXh0KiwgY29uc3QgU3RyaW5nJiBkYXRhRGlyZWN0b3J5KQogewotICAgIG9wZW5JbnRlcm5h
bChuYW1lLCBjYWxsYmFja3MsIHNlY3VyaXR5T3JpZ2luLCBkYXRhRGlyZWN0b3J5KTsKKyAgICBv
cGVuSW50ZXJuYWwobmFtZSwgY2FsbGJhY2tzLCBkYXRhYmFzZUNhbGxiYWNrcywgc2VjdXJpdHlP
cmlnaW4sIGRhdGFEaXJlY3RvcnkpOwogfQogCiB2b2lkIElEQkZhY3RvcnlCYWNrZW5kSW1wbDo6
ZGVsZXRlRGF0YWJhc2UoY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNr
cz4gY2FsbGJhY2tzLCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdpbiwg
RnJhbWUqLCBjb25zdCBTdHJpbmcmIGRhdGFEaXJlY3RvcnkpCkBAIC0xNjAsNyArMTYwLDcgQEAg
UGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmU+IElEQkZhY3RvcnlCYWNrZW5kSW1wbDo6b3BlbkJh
Y2tpbmdTdG9yZShQYXNzUmVmUHRyPFMKICAgICByZXR1cm4gMDsKIH0KIAotdm9pZCBJREJGYWN0
b3J5QmFja2VuZEltcGw6Om9wZW5JbnRlcm5hbChjb25zdCBTdHJpbmcmIG5hbWUsIElEQkNhbGxi
YWNrcyogY2FsbGJhY2tzLCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBwcnBTZWN1cml0eU9y
aWdpbiwgY29uc3QgU3RyaW5nJiBkYXRhRGlyZWN0b3J5KQordm9pZCBJREJGYWN0b3J5QmFja2Vu
ZEltcGw6Om9wZW5JbnRlcm5hbChjb25zdCBTdHJpbmcmIG5hbWUsIElEQkNhbGxiYWNrcyogY2Fs
bGJhY2tzLCBJREJEYXRhYmFzZUNhbGxiYWNrcyogZGF0YWJhc2VDYWxsYmFja3MsIFBhc3NSZWZQ
dHI8U2VjdXJpdHlPcmlnaW4+IHBycFNlY3VyaXR5T3JpZ2luLCBjb25zdCBTdHJpbmcmIGRhdGFE
aXJlY3RvcnkpCiB7CiAgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdpbiA9
IHBycFNlY3VyaXR5T3JpZ2luOwogICAgIGNvbnN0IFN0cmluZyB1bmlxdWVJZGVudGlmaWVyID0g
Y29tcHV0ZVVuaXF1ZUlkZW50aWZpZXIobmFtZSwgc2VjdXJpdHlPcmlnaW4uZ2V0KCkpOwpAQCAt
MTY5LDcgKzE2OSw3IEBAIHZvaWQgSURCRmFjdG9yeUJhY2tlbmRJbXBsOjpvcGVuSW50ZXJuYWwo
Y29uc3QgU3RyaW5nJiBuYW1lLCBJREJDYWxsYmFja3MqIGNhbGxiCiAgICAgaWYgKGl0ICE9IG1f
ZGF0YWJhc2VCYWNrZW5kTWFwLmVuZCgpKSB7CiAgICAgICAgIC8vIElmIGl0J3MgYWxyZWFkeSBi
ZWVuIG9wZW5lZCwgd2UgaGF2ZSB0byB3YWl0IGZvciBhbnkgcGVuZGluZwogICAgICAgICAvLyBz
ZXRWZXJzaW9uIGNhbGxzIHRvIGNvbXBsZXRlLgotICAgICAgICBpdC0+c2Vjb25kLT5vcGVuQ29u
bmVjdGlvbihjYWxsYmFja3MpOworICAgICAgICBpdC0+c2Vjb25kLT5vcGVuQ29ubmVjdGlvbihj
YWxsYmFja3MsIGRhdGFiYXNlQ2FsbGJhY2tzKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApA
QCAtMTgzLDcgKzE4Myw3IEBAIHZvaWQgSURCRmFjdG9yeUJhY2tlbmRJbXBsOjpvcGVuSW50ZXJu
YWwoY29uc3QgU3RyaW5nJiBuYW1lLCBJREJDYWxsYmFja3MqIGNhbGxiCiAgICAgUmVmUHRyPElE
QkRhdGFiYXNlQmFja2VuZEltcGw+IGRhdGFiYXNlQmFja2VuZCA9IElEQkRhdGFiYXNlQmFja2Vu
ZEltcGw6OmNyZWF0ZShuYW1lLCBiYWNraW5nU3RvcmUuZ2V0KCksIG1fdHJhbnNhY3Rpb25Db29y
ZGluYXRvci5nZXQoKSwgdGhpcywgdW5pcXVlSWRlbnRpZmllcik7CiAgICAgaWYgKGRhdGFiYXNl
QmFja2VuZCkgewogICAgICAgICBtX2RhdGFiYXNlQmFja2VuZE1hcC5zZXQodW5pcXVlSWRlbnRp
ZmllciwgZGF0YWJhc2VCYWNrZW5kLmdldCgpKTsKLSAgICAgICAgZGF0YWJhc2VCYWNrZW5kLT5v
cGVuQ29ubmVjdGlvbihjYWxsYmFja3MpOworICAgICAgICBkYXRhYmFzZUJhY2tlbmQtPm9wZW5D
b25uZWN0aW9uKGNhbGxiYWNrcywgZGF0YWJhc2VDYWxsYmFja3MpOwogICAgIH0gZWxzZQogICAg
ICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFi
YXNlRXhjZXB0aW9uOjpVTktOT1dOX0VSUiwgIkludGVybmFsIGVycm9yLiIpKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnlCYWNrZW5k
SW1wbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeUJhY2tl
bmRJbXBsLmgKaW5kZXggMjA1NjRhODg1MmUzMjEwYWQ3NjY5Y2E3YTU0OTRhOGQ2OGQzNGUyMC4u
MDQ2OTk1M2NiY2Y4NWE1YjgxYWJmNWNiY2Y2NjU4ZGZjZDc2MDk4NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJbXBsLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJbXBs
LmgKQEAgLTU3LDggKzU3LDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGdldERhdGFi
YXNlTmFtZXMoUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBQYXNzUmVmUHRyPFNlY3VyaXR5T3Jp
Z2luPiwgRnJhbWUqLCBjb25zdCBTdHJpbmcmIGRhdGFEaXIpOwogCi0gICAgdmlydHVhbCB2b2lk
IG9wZW4oY29uc3QgU3RyaW5nJiBuYW1lLCBJREJDYWxsYmFja3MqLCBQYXNzUmVmUHRyPFNlY3Vy
aXR5T3JpZ2luPiwgRnJhbWUqLCBjb25zdCBTdHJpbmcmIGRhdGFEaXIpOwotICAgIHZpcnR1YWwg
dm9pZCBvcGVuRnJvbVdvcmtlcihjb25zdCBTdHJpbmcmIG5hbWUsIElEQkNhbGxiYWNrcyosIFBh
c3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+LCBXb3JrZXJDb250ZXh0KiwgY29uc3QgU3RyaW5nJiBk
YXRhRGlyKTsKKyAgICB2aXJ0dWFsIHZvaWQgb3Blbihjb25zdCBTdHJpbmcmIG5hbWUsIElEQkNh
bGxiYWNrcyosIElEQkRhdGFiYXNlQ2FsbGJhY2tzKiwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdp
bj4sIEZyYW1lKiwgY29uc3QgU3RyaW5nJiBkYXRhRGlyKTsKKyAgICB2aXJ0dWFsIHZvaWQgb3Bl
bkZyb21Xb3JrZXIoY29uc3QgU3RyaW5nJiBuYW1lLCBJREJDYWxsYmFja3MqLCBJREJEYXRhYmFz
ZUNhbGxiYWNrcyosIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+LCBXb3JrZXJDb250ZXh0Kiwg
Y29uc3QgU3RyaW5nJiBkYXRhRGlyKTsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlRGF0YWJhc2Uo
Y29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8
U2VjdXJpdHlPcmlnaW4+LCBGcmFtZSosIGNvbnN0IFN0cmluZyYgZGF0YURpcik7CiAKIHByb3Rl
Y3RlZDoKQEAgLTY2LDcgKzY2LDcgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgUGFzc1JlZlB0
cjxJREJCYWNraW5nU3RvcmU+IG9wZW5CYWNraW5nU3RvcmUoUGFzc1JlZlB0cjxTZWN1cml0eU9y
aWdpbj4sIGNvbnN0IFN0cmluZyYgZGF0YURpcik7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBvcGVu
SW50ZXJuYWwoY29uc3QgU3RyaW5nJiBuYW1lLCBJREJDYWxsYmFja3MqLCBQYXNzUmVmUHRyPFNl
Y3VyaXR5T3JpZ2luPiwgY29uc3QgU3RyaW5nJiBkYXRhRGlyKTsKKyAgICB2b2lkIG9wZW5JbnRl
cm5hbChjb25zdCBTdHJpbmcmIG5hbWUsIElEQkNhbGxiYWNrcyosIElEQkRhdGFiYXNlQ2FsbGJh
Y2tzKiwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4sIGNvbnN0IFN0cmluZyYgZGF0YURpcik7
CiAKICAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5k
SW1wbD4gPiBJREJEYXRhYmFzZUJhY2tlbmRNYXA7CiAgICAgSURCRGF0YWJhc2VCYWNrZW5kTWFw
IG1fZGF0YWJhc2VCYWNrZW5kTWFwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlLmgKaW5kZXggMTlh
MWM5Nzg0YzMwYmY3YWE4NzU1MDBhYmJjYzhkNDA5MDhmYjU1Zi4uZDk5N2M4YTE3YjQyZjBmODVm
ZDA4NGU5YTVkMTM1NmYyMDM0NzcxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5QmFja2VuZEludGVyZmFjZS5oCkBAIC01
NSw4ICs1NSw4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBnZXREYXRhYmFzZU5hbWVz
KFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4sIEZy
YW1lKiwgY29uc3QgU3RyaW5nJiBkYXRhRGlyKSA9IDA7CiAKLSAgICB2aXJ0dWFsIHZvaWQgb3Bl
bihjb25zdCBTdHJpbmcmIG5hbWUsIElEQkNhbGxiYWNrcyosIFBhc3NSZWZQdHI8U2VjdXJpdHlP
cmlnaW4+LCBGcmFtZSosIGNvbnN0IFN0cmluZyYgZGF0YURpcikgPSAwOwotICAgIHZpcnR1YWwg
dm9pZCBvcGVuRnJvbVdvcmtlcihjb25zdCBTdHJpbmcmIG5hbWUsIElEQkNhbGxiYWNrcyosIFBh
c3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+LCBXb3JrZXJDb250ZXh0KiwgY29uc3QgU3RyaW5nJiBk
YXRhRGlyKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIG9wZW4oY29uc3QgU3RyaW5nJiBuYW1lLCBJ
REJDYWxsYmFja3MqLCBJREJEYXRhYmFzZUNhbGxiYWNrcyosIFBhc3NSZWZQdHI8U2VjdXJpdHlP
cmlnaW4+LCBGcmFtZSosIGNvbnN0IFN0cmluZyYgZGF0YURpcikgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBvcGVuRnJvbVdvcmtlcihjb25zdCBTdHJpbmcmIG5hbWUsIElEQkNhbGxiYWNrcyosIElE
QkRhdGFiYXNlQ2FsbGJhY2tzKiwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4sIFdvcmtlckNv
bnRleHQqLCBjb25zdCBTdHJpbmcmIGRhdGFEaXIpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGVs
ZXRlRGF0YWJhc2UoY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4s
IFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+LCBGcmFtZSosIGNvbnN0IFN0cmluZyYgZGF0YURp
cikgPSAwOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJS
ZXF1ZXN0LmNwcAppbmRleCAwODg1Y2FjMWVkM2NlOGE4ZDNjZjQ2YmQxMGUwYTc1MWZlOGRiZWY1
Li42ZTYxNjJiMzRjZGNjNzMzNTc3OTBjZjk1MmQ5M2QwZDEwYjZjODBlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcApAQCAtMjA4LDYgKzIw
OCwxMyBAQCB2b2lkIElEQlJlcXVlc3Q6OmZpbmlzaEN1cnNvcigpCiAgICAgICAgIG1fcmVxdWVz
dEZpbmlzaGVkID0gdHJ1ZTsKIH0KIAordm9pZCBJREJSZXF1ZXN0OjpzZXREYXRhYmFzZUNhbGxi
YWNrcyhQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbD4gZGF0YWJhc2VDYWxsYmFj
a3MpCit7CisgICAgQVNTRVJUKG1fcmVhZHlTdGF0ZSA9PSBQRU5ESU5HKTsKKyAgICBBU1NFUlQo
IW1fZGF0YWJhc2VDYWxsYmFja3MpOworICAgIG1fZGF0YWJhc2VDYWxsYmFja3MgPSBkYXRhYmFz
ZUNhbGxiYWNrczsKK30KKwogdm9pZCBJREJSZXF1ZXN0OjpvbkVycm9yKFBhc3NSZWZQdHI8SURC
RGF0YWJhc2VFcnJvcj4gZXJyb3IpCiB7CiAgICAgQVNTRVJUKCFtX2Vycm9yQ29kZSAmJiBtX2Vy
cm9yTWVzc2FnZS5pc051bGwoKSAmJiAhbV9yZXN1bHQpOwpAQCAtMjUxLDExICsyNTgsMTEgQEAg
dm9pZCBJREJSZXF1ZXN0OjpvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJ
bnRlcmZhY2U+IGJhY2tlbmQpCiB7CiAgICAgSURCX1RSQUNFKCJJREJSZXF1ZXN0OjpvblN1Y2Nl
c3MoSURCRGF0YWJhc2UpIik7CiAgICAgQVNTRVJUKCFtX2Vycm9yQ29kZSAmJiBtX2Vycm9yTWVz
c2FnZS5pc051bGwoKSAmJiAhbV9lcnJvciAmJiAhbV9yZXN1bHQpOworICAgIEFTU0VSVChtX2Rh
dGFiYXNlQ2FsbGJhY2tzLmdldCgpKTsKICAgICBpZiAobV9jb250ZXh0U3RvcHBlZCB8fCAhc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBSZWZQdHI8SURC
RGF0YWJhc2U+IGlkYkRhdGFiYXNlID0gSURCRGF0YWJhc2U6OmNyZWF0ZShzY3JpcHRFeGVjdXRp
b25Db250ZXh0KCksIGJhY2tlbmQpOwotICAgIGlkYkRhdGFiYXNlLT5yZWdpc3RlckZyb250ZW5k
Q2FsbGJhY2tzKCk7CisgICAgUmVmUHRyPElEQkRhdGFiYXNlPiBpZGJEYXRhYmFzZSA9IElEQkRh
dGFiYXNlOjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBiYWNrZW5kLCBtX2RhdGFi
YXNlQ2FsbGJhY2tzLnJlbGVhc2UoKSk7CiAKICAgICBtX3Jlc3VsdCA9IElEQkFueTo6Y3JlYXRl
KGlkYkRhdGFiYXNlLnJlbGVhc2UoKSk7CiAgICAgZW5xdWV1ZUV2ZW50KGNyZWF0ZVN1Y2Nlc3NF
dmVudCgpKTsKQEAgLTMwNiw3ICszMTMsNiBAQCB2b2lkIElEQlJlcXVlc3Q6Om9uU3VjY2VzcyhQ
YXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXplZFNjcmlwdFZhbAogCiB2
b2lkIElEQlJlcXVlc3Q6Om9uU3VjY2VzcyhQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4gcHJwU2VyaWFsaXplZFNjcmlwdFZhbHVlLCBQYXNzUmVmUHRyPElEQktleT4gcHJwUHJpbWFy
eUtleSwgY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCkKIHsKLSAgICBMT0dfRVJST1IoIkNIRUNL
SU5HOiBvblN1Y2Nlc3ModmFsdWUsIGtleSwga2V5cGF0aCkiKTsKICAgICBSZWZQdHI8U2VyaWFs
aXplZFNjcmlwdFZhbHVlPiBzZXJpYWxpemVkU2NyaXB0VmFsdWUgPSBwcnBTZXJpYWxpemVkU2Ny
aXB0VmFsdWU7CiAjaWZuZGVmIE5ERUJVRwogICAgIC8vIEZJWE1FOiBBc3NlcnQgdW50aWwgd2Ug
Y2FuIGFjdHVhbGx5IGluamVjdCB0aGUgcmlnaHQgdmFsdWUuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmgKaW5kZXggNDkwNzI0NGQ1N2NjYzVmZWNjZWY4
NzVhYWRlMTIxMWJkNTljMDJjYS4uZGI4OTJlNTk2YTczOGRhYWRhMDBlOWMzOTkxNGY3MTc4MWZj
YWNhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVx
dWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3Qu
aApAQCAtNDQsNiArNDQsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIElEQkRh
dGFiYXNlQ2FsbGJhY2tzSW1wbDsKIGNsYXNzIElEQlRyYW5zYWN0aW9uOwogCiB0eXBlZGVmIGlu
dCBFeGNlcHRpb25Db2RlOwpAQCAtNzcsNiArNzgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRD
dXJzb3JEZXRhaWxzKElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U6OkN1cnNvclR5cGUsIElEQkN1
cnNvcjo6RGlyZWN0aW9uKTsKICAgICB2b2lkIHNldEN1cnNvcihQYXNzUmVmUHRyPElEQkN1cnNv
cj4pOwogICAgIHZvaWQgZmluaXNoQ3Vyc29yKCk7CisgICAgdm9pZCBzZXREYXRhYmFzZUNhbGxi
YWNrcyhQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbD4pOwogICAgIElEQkFueSog
c291cmNlKCk7CiAgICAgdm9pZCBhYm9ydCgpOwogCkBAIC0xMzgsNiArMTQwLDkgQEAgcHJpdmF0
ZToKICAgICBJREJDdXJzb3I6OkRpcmVjdGlvbiBtX2N1cnNvckRpcmVjdGlvbjsKICAgICBSZWZQ
dHI8SURCQ3Vyc29yPiBtX2N1cnNvcjsKIAorICAgIC8vIE9ubHkgdXNlZCBpZiB0aGUgcmVzdWx0
IHR5cGUgd2lsbCBiZSBhIGRhdGFiYXNlIGNvbm5lY3Rpb24uCisgICAgUmVmUHRyPElEQkRhdGFi
YXNlQ2FsbGJhY2tzSW1wbD4gbV9kYXRhYmFzZUNhbGxiYWNrczsKKwogICAgIEV2ZW50VGFyZ2V0
RGF0YSBtX2V2ZW50VGFyZ2V0RGF0YTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwCmluZGV4IDYxMDdlYjk4MmUwMWM2
MDZkZmNhZjRiMmViMzFkMmI4MmRmYTFhZjguLjFhOTI0YzdlMTUwNTE1OWEzMDFkYTA5ZmNkMzYz
N2QzNDUyYjQ0MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JJbmRleGVkREJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckluZGV4ZWREQkFnZW50LmNwcApAQCAtMTgzLDM1ICsxODMsMzUgQEAgcHJpdmF0ZToKICAg
ICBTdHJpbmcgbV9zZWN1cml0eU9yaWdpbjsKIH07CiAKLWNsYXNzIEV4ZWN1dGFibGVXaXRoRGF0
YWJhc2UgOiBwdWJsaWMgUmVmQ291bnRlZDxFeGVjdXRhYmxlV2l0aERhdGFiYXNlPiB7Ci1wdWJs
aWM6Ci0gICAgdmlydHVhbCB+RXhlY3V0YWJsZVdpdGhEYXRhYmFzZSgpIHsgfTsKLSAgICB2b2lk
IHN0YXJ0KElEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlKiwgU2VjdXJpdHlPcmlnaW4qLCBGcmFt
ZSosIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lKTsKLSAgICB2aXJ0dWFsIHZvaWQgZXhlY3V0
ZShQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4pID0gMDsKLX07Ci0KIGNs
YXNzIERhdGFiYXNlQ29ubmVjdGlvbiB7CiBwdWJsaWM6CiAgICAgRGF0YWJhc2VDb25uZWN0aW9u
KCkKICAgICAgICAgOiBtX2lkYkRhdGFiYXNlQ2FsbGJhY2tzKEluc3BlY3RvcklEQkRhdGFiYXNl
Q2FsbGJhY2tzOjpjcmVhdGUoKSkgeyB9CiAKLSAgICB2b2lkIGNvbm5lY3QoUGFzc1JlZlB0cjxJ
REJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+IGlkYkRhdGFiYXNlKQotICAgIHsKLSAgICAgICAg
bV9pZGJEYXRhYmFzZSA9IGlkYkRhdGFiYXNlOwotICAgICAgICBtX2lkYkRhdGFiYXNlLT5yZWdp
c3RlckZyb250ZW5kQ2FsbGJhY2tzKG1faWRiRGF0YWJhc2VDYWxsYmFja3MpOwotICAgIH0KLQog
ICAgIH5EYXRhYmFzZUNvbm5lY3Rpb24oKQogICAgIHsKICAgICAgICAgaWYgKG1faWRiRGF0YWJh
c2UpCiAgICAgICAgICAgICBtX2lkYkRhdGFiYXNlLT5jbG9zZShtX2lkYkRhdGFiYXNlQ2FsbGJh
Y2tzKTsKICAgICB9CiAKKyAgICB2b2lkIGNvbm5lY3QoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJh
Y2tlbmRJbnRlcmZhY2U+IGRhdGFiYXNlKSB7IG1faWRiRGF0YWJhc2UgPSBkYXRhYmFzZTsgfQor
ICAgIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IGNhbGxiYWNrcygpIHsgcmV0dXJu
IG1faWRiRGF0YWJhc2VDYWxsYmFja3M7IH0KKwogcHJpdmF0ZToKICAgICBSZWZQdHI8SURCRGF0
YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiBtX2lkYkRhdGFiYXNlOwogICAgIFJlZlB0cjxJREJEYXRh
YmFzZUNhbGxiYWNrcz4gbV9pZGJEYXRhYmFzZUNhbGxiYWNrczsKIH07CiAKK2NsYXNzIEV4ZWN1
dGFibGVXaXRoRGF0YWJhc2UgOiBwdWJsaWMgUmVmQ291bnRlZDxFeGVjdXRhYmxlV2l0aERhdGFi
YXNlPiB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+RXhlY3V0YWJsZVdpdGhEYXRhYmFzZSgpIHsg
fTsKKyAgICB2b2lkIHN0YXJ0KElEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlKiwgU2VjdXJpdHlP
cmlnaW4qLCBGcmFtZSosIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lKTsKKyAgICB2b2lkIGNv
bm5lY3QoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+IGRhdGFiYXNlKSB7
IG1fY29ubmVjdGlvbi5jb25uZWN0KGRhdGFiYXNlKTsgfQorICAgIHZpcnR1YWwgdm9pZCBleGVj
dXRlKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPikgPSAwOworcHJpdmF0
ZToKKyAgICBEYXRhYmFzZUNvbm5lY3Rpb24gbV9jb25uZWN0aW9uOworfTsKKwogY2xhc3MgT3Bl
bkRhdGFiYXNlQ2FsbGJhY2sgOiBwdWJsaWMgSW5zcGVjdG9ySURCQ2FsbGJhY2sgewogcHVibGlj
OgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPE9wZW5EYXRhYmFzZUNhbGxiYWNrPiBjcmVhdGUoRXhl
Y3V0YWJsZVdpdGhEYXRhYmFzZSogZXhlY3V0YWJsZVdpdGhEYXRhYmFzZSkKQEAgLTIyNCw2ICsy
MjQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPElE
QkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4gcHJwRGF0YWJhc2UpCiAgICAgewogICAgICAgICBS
ZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiBpZGJEYXRhYmFzZSA9IHBycERhdGFi
YXNlOworICAgICAgICBtX2V4ZWN1dGFibGVXaXRoRGF0YWJhc2UtPmNvbm5lY3QoaWRiRGF0YWJh
c2UpOwogICAgICAgICBtX2V4ZWN1dGFibGVXaXRoRGF0YWJhc2UtPmV4ZWN1dGUoaWRiRGF0YWJh
c2UpOwogICAgIH0KIApAQCAtMjM2LDcgKzIzNyw3IEBAIHByaXZhdGU6CiB2b2lkIEV4ZWN1dGFi
bGVXaXRoRGF0YWJhc2U6OnN0YXJ0KElEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlKiBpZGJGYWN0
b3J5LCBTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4sIEZyYW1lKiBmcmFtZSwgY29uc3Qg
U3RyaW5nJiBkYXRhYmFzZU5hbWUpCiB7CiAgICAgUmVmUHRyPE9wZW5EYXRhYmFzZUNhbGxiYWNr
PiBjYWxsYmFjayA9IE9wZW5EYXRhYmFzZUNhbGxiYWNrOjpjcmVhdGUodGhpcyk7Ci0gICAgaWRi
RmFjdG9yeS0+b3BlbihkYXRhYmFzZU5hbWUsIGNhbGxiYWNrLmdldCgpLCBzZWN1cml0eU9yaWdp
biwgZnJhbWUsIFN0cmluZygpKTsKKyAgICBpZGJGYWN0b3J5LT5vcGVuKGRhdGFiYXNlTmFtZSwg
Y2FsbGJhY2suZ2V0KCksIG1fY29ubmVjdGlvbi5jYWxsYmFja3MoKS5nZXQoKSwgc2VjdXJpdHlP
cmlnaW4sIGZyYW1lLCBTdHJpbmcoKSk7CiB9CiAKIHN0YXRpYyBQYXNzUmVmUHRyPElEQlRyYW5z
YWN0aW9uQmFja2VuZEludGVyZmFjZT4gdHJhbnNhY3Rpb25Gb3JEYXRhYmFzZShJREJEYXRhYmFz
ZUJhY2tlbmRJbnRlcmZhY2UqIGlkYkRhdGFiYXNlLCBjb25zdCBTdHJpbmcmIG9iamVjdFN0b3Jl
TmFtZSkKQEAgLTMwNyw3ICszMDgsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGV4ZWN1
dGUoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+IHBycERhdGFiYXNlKQog
ICAgIHsKICAgICAgICAgUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4gaWRiRGF0
YWJhc2UgPSBwcnBEYXRhYmFzZTsKLSAgICAgICAgbV9jb25uZWN0aW9uLmNvbm5lY3QoaWRiRGF0
YWJhc2UpOwogICAgICAgICBpZiAoIW1fZnJvbnRlbmRQcm92aWRlci0+ZnJvbnRlbmQoKSkKICAg
ICAgICAgICAgIHJldHVybjsKIApAQCAtMzUyLDcgKzM1Miw2IEBAIHByaXZhdGU6CiAgICAgICAg
ICwgbV9yZXF1ZXN0SWQocmVxdWVzdElkKSB7IH0KICAgICBSZWZQdHI8SW5zcGVjdG9ySW5kZXhl
ZERCQWdlbnQ6OkZyb250ZW5kUHJvdmlkZXI+IG1fZnJvbnRlbmRQcm92aWRlcjsKICAgICBpbnQg
bV9yZXF1ZXN0SWQ7Ci0gICAgRGF0YWJhc2VDb25uZWN0aW9uIG1fY29ubmVjdGlvbjsKIH07CiAK
IHN0YXRpYyBQYXNzUmVmUHRyPElEQktleT4gaWRiS2V5RnJvbUluc3BlY3Rvck9iamVjdChJbnNw
ZWN0b3JPYmplY3QqIGtleSkKQEAgLTU4Nyw3ICs1ODYsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIGV4ZWN1dGUoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+IHBy
cERhdGFiYXNlKQogICAgIHsKICAgICAgICAgUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVy
ZmFjZT4gaWRiRGF0YWJhc2UgPSBwcnBEYXRhYmFzZTsKLSAgICAgICAgbV9jb25uZWN0aW9uLmNv
bm5lY3QoaWRiRGF0YWJhc2UpOwogICAgICAgICBpZiAoIW1fZnJvbnRlbmRQcm92aWRlci0+ZnJv
bnRlbmQoKSkKICAgICAgICAgICAgIHJldHVybjsKIApAQCAtNjMzLDcgKzYzMSw2IEBAIHByaXZh
dGU6CiAgICAgUmVmUHRyPElEQktleVJhbmdlPiBtX2lkYktleVJhbmdlOwogICAgIGludCBtX3Nr
aXBDb3VudDsKICAgICB1bnNpZ25lZCBtX3BhZ2VTaXplOwotICAgIERhdGFiYXNlQ29ubmVjdGlv
biBtX2Nvbm5lY3Rpb247CiB9OwogCiB9IC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCRGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYklEQkRhdGFiYXNlLmgKaW5kZXggYTAwMWMyZTkyMjE4ZTgzM2Vm
NzM5ZWIyZGM3OTMwZDRmY2VhOGRiYS4uZTczMGZmOTkzYzgwMGQ1MGM1ZDM3ZWVhZGM1MDNiODBi
OWZjOWM1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURC
RGF0YWJhc2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJEYXRh
YmFzZS5oCkBAIC03OCw5ICs3OCw4IEBAIHB1YmxpYzoKICAgICAgICAgV0VCS0lUX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9Ci0gICAgdmlydHVhbCB2b2lk
IGNsb3NlKCkgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KIAotICAgIHZpcnR1YWwg
dm9pZCBvcGVuKFdlYklEQkRhdGFiYXNlQ2FsbGJhY2tzKikgeyBXRUJLSVRfQVNTRVJUX05PVF9S
RUFDSEVEKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgY2xvc2UoKSB7IFdFQktJVF9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgV2ViSURCRGF0YWJhc2UoKSB7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQkZhY3RvcnkuaCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQkZhY3RvcnkuaAppbmRleCBlOTU2
ZWJkZWQ4YzQ1OWU3ZWZlNjMyMzcxZjZlNmQyNGFkYTgwOWYyLi5iMWIwZDIxN2JmMTA0NGY2YTU3
OWIzYzMwYzIxZmI2ZDVkNmExYWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJJREJGYWN0b3J5LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViSURCRmFjdG9yeS5oCkBAIC00MCw2ICs0MCw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewog
CiBjbGFzcyBXZWJGcmFtZTsKIGNsYXNzIFdlYklEQkRhdGFiYXNlOworY2xhc3MgV2ViSURCRGF0
YWJhc2VDYWxsYmFja3M7CiBjbGFzcyBXZWJTZWN1cml0eU9yaWdpbjsKIAogLy8gVGhlIGVudHJ5
IHBvaW50IGludG8gdGhlIEluZGV4ZWREYXRhYmFzZSBBUEkuICBUaGVzZSBjbGFzc2VzIG1hdGNo
IHRoZWlyIEZvbyBhbmQKQEAgLTU0LDcgKzU1LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCBnZXREYXRhYmFzZU5hbWVzKFdlYklEQkNhbGxiYWNrcyogY2FsbGJhY2tzLCBjb25zdCBXZWJT
ZWN1cml0eU9yaWdpbiYgb3JpZ2luLCBXZWJGcmFtZSogZnJhbWUsIGNvbnN0IFdlYlN0cmluZyYg
ZGF0YURpcikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KIAogICAgIC8vIFRoZSBX
ZWJLaXQgaW1wbGVtZW50YXRpb24gb2Ygb3BlbiBpZ25vcmVzIHRoZSBXZWJGcmFtZSogcGFyYW1l
dGVyLgotICAgIHZpcnR1YWwgdm9pZCBvcGVuKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgV2ViSURC
Q2FsbGJhY2tzKiBjYWxsYmFja3MsIGNvbnN0IFdlYlNlY3VyaXR5T3JpZ2luJiBvcmlnaW4sIFdl
YkZyYW1lKiBmcmFtZSwgY29uc3QgV2ViU3RyaW5nJiBkYXRhRGlyKSB7IFdFQktJVF9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBvcGVuKGNvbnN0IFdlYlN0cmluZyYg
bmFtZSwgV2ViSURCQ2FsbGJhY2tzKiBjYWxsYmFja3MsIFdlYklEQkRhdGFiYXNlQ2FsbGJhY2tz
KiBkYXRhYmFzZUNhbGxiYWNrcywgY29uc3QgV2ViU2VjdXJpdHlPcmlnaW4mIG9yaWdpbiwgV2Vi
RnJhbWUqIGZyYW1lLCBjb25zdCBXZWJTdHJpbmcmIGRhdGFEaXIpIHsgV0VCS0lUX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlRGF0YWJhc2UoY29uc3Qg
V2ViU3RyaW5nJiBuYW1lLCBXZWJJREJDYWxsYmFja3MqLCBjb25zdCBXZWJTZWN1cml0eU9yaWdp
biYsIFdlYkZyYW1lKiwgY29uc3QgV2ViU3RyaW5nJiBkYXRhRGlyKSB7IFdFQktJVF9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL0lEQkNhbGxiYWNrc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lE
QkNhbGxiYWNrc1Byb3h5LmNwcAppbmRleCBhNTQ0MTg5YjY2OGY0NGVkODE0ZDRjNzIyODA3MTQw
M2MyN2I5N2NkLi40YzZjZGVjZWI5ZmI4M2M5MGVhZGNjY2I1ODRiMDQ4MGM4NGRjZGU2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJDYWxsYmFja3NQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ2FsbGJhY2tzUHJveHkuY3BwCkBA
IC0zMiwxMSArMzIsMTMgQEAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIAogI2luY2x1
ZGUgIklEQkRhdGFiYXNlQmFja2VuZFByb3h5LmgiCisjaW5jbHVkZSAiSURCRGF0YWJhc2VDYWxs
YmFja3NQcm94eS5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNlRXJyb3IuaCIKICNpbmNsdWRlICJX
ZWJJREJDYWxsYmFja3MuaCIKICNpbmNsdWRlICJXZWJJREJDdXJzb3JJbXBsLmgiCi0jaW5jbHVk
ZSAiV2ViSURCRGF0YWJhc2VJbXBsLmgiCisjaW5jbHVkZSAiV2ViSURCRGF0YWJhc2VDYWxsYmFj
a3MuaCIKICNpbmNsdWRlICJXZWJJREJEYXRhYmFzZUVycm9yLmgiCisjaW5jbHVkZSAiV2ViSURC
RGF0YWJhc2VJbXBsLmgiCiAjaW5jbHVkZSAiV2ViSURCS2V5LmgiCiAjaW5jbHVkZSAiV2ViSURC
VHJhbnNhY3Rpb25JbXBsLmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViU2VyaWFsaXplZFNjcmlw
dFZhbHVlLmgiCkBAIC03MSw3ICs3Myw4IEBAIHZvaWQgSURCQ2FsbGJhY2tzUHJveHk6Om9uU3Vj
Y2VzcyhQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U+IGlkYkN1cnNvCiAKIHZv
aWQgSURCQ2FsbGJhY2tzUHJveHk6Om9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFj
a2VuZEludGVyZmFjZT4gYmFja2VuZCkKIHsKLSAgICBtX2NhbGxiYWNrcy0+b25TdWNjZXNzKG5l
dyBXZWJJREJEYXRhYmFzZUltcGwoYmFja2VuZCkpOworICAgIEFTU0VSVChtX2RhdGFiYXNlQ2Fs
bGJhY2tzLmdldCgpKTsKKyAgICBtX2NhbGxiYWNrcy0+b25TdWNjZXNzKG5ldyBXZWJJREJEYXRh
YmFzZUltcGwoYmFja2VuZCwgbV9kYXRhYmFzZUNhbGxiYWNrcy5yZWxlYXNlKCkpKTsKIH0KIAog
dm9pZCBJREJDYWxsYmFja3NQcm94eTo6b25TdWNjZXNzKFBhc3NSZWZQdHI8SURCS2V5PiBpZGJL
ZXkpCkBAIC0xMjUsNiArMTI4LDEzIEBAIHZvaWQgSURCQ2FsbGJhY2tzUHJveHk6Om9uQmxvY2tl
ZCgpCiAgICAgbV9jYWxsYmFja3MtPm9uQmxvY2tlZCgpOwogfQogCit2b2lkIElEQkNhbGxiYWNr
c1Byb3h5OjpzZXREYXRhYmFzZUNhbGxiYWNrcyhQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJh
Y2tzUHJveHk+IGRhdGFiYXNlQ2FsbGJhY2tzKQoreworICAgIEFTU0VSVCghbV9kYXRhYmFzZUNh
bGxiYWNrcyk7CisgICAgbV9kYXRhYmFzZUNhbGxiYWNrcyA9IGRhdGFiYXNlQ2FsbGJhY2tzOwor
fQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAorCiAjZW5kaWYgLy8gRU5BQkxFKElOREVYRURf
REFUQUJBU0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJDYWxs
YmFja3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ2FsbGJhY2tzUHJv
eHkuaAppbmRleCBkYjMwNTY1NTBiMmIyZTE3ZTJlMzBkZGVmNzllOWRkMjljMjVmZmJkLi4wMjI4
ZjczNzYwNmQ3MmFiYzgyNjA1OTEwZmVlMThjZmJlNTdlZmI2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9JREJDYWxsYmFja3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL0lEQkNhbGxiYWNrc1Byb3h5LmgKQEAgLTM5LDYgKzM5LDcgQEAKIG5h
bWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJJREJDYWxsYmFja3M7CitjbGFzcyBJREJEYXRh
YmFzZUNhbGxiYWNrc1Byb3h5OwogCiBjbGFzcyBJREJDYWxsYmFja3NQcm94eSA6IHB1YmxpYyBX
ZWJDb3JlOjpJREJDYWxsYmFja3MgewogcHVibGljOgpAQCAtNTcsMTAgKzU4LDEzIEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzV2l0aFByZWZldGNoKGNvbnN0IFZlY3RvcjxS
ZWZQdHI8V2ViQ29yZTo6SURCS2V5PiA+JiBrZXlzLCBjb25zdCBWZWN0b3I8UmVmUHRyPFdlYkNv
cmU6OklEQktleT4gPiYgcHJpbWFyeUtleXMsIGNvbnN0IFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6
U2VyaWFsaXplZFNjcmlwdFZhbHVlPiA+JiB2YWx1ZXMpOwogICAgIHZpcnR1YWwgdm9pZCBvbkJs
b2NrZWQoKTsKIAorICAgIHZvaWQgc2V0RGF0YWJhc2VDYWxsYmFja3MoUGFzc1JlZlB0cjxJREJE
YXRhYmFzZUNhbGxiYWNrc1Byb3h5Pik7CisKIHByaXZhdGU6CiAgICAgSURCQ2FsbGJhY2tzUHJv
eHkoUGFzc093blB0cjxXZWJJREJDYWxsYmFja3M+KTsKIAogICAgIE93blB0cjxXZWJJREJDYWxs
YmFja3M+IG1fY2FsbGJhY2tzOworICAgIFJlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5
PiBtX2RhdGFiYXNlQ2FsbGJhY2tzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94
eS5jcHAKaW5kZXggMTA3ZWM2M2IzYjc4ODNlMDllZWEzMzdjNTkxNWMzNWFkNDBhMWQzYi4uMjcx
NTA5MGQ0YmM4Y2EyZjNhNzA5NGE5MGJjNTQzYTllZTA1NWY2NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmNwcApAQCAt
MTIxLDExICsxMjEsNiBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZFByb3h5OjpjbG9zZShQYXNz
UmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPikKICAgICBtX3dlYklEQkRhdGFiYXNlLT5jbG9z
ZSgpOwogfQogCi12b2lkIElEQkRhdGFiYXNlQmFja2VuZFByb3h5OjpyZWdpc3RlckZyb250ZW5k
Q2FsbGJhY2tzKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IGRhdGFiYXNlQ2FsbGJh
Y2tzKQotewotICAgIG1fd2ViSURCRGF0YWJhc2UtPm9wZW4obmV3IFdlYklEQkRhdGFiYXNlQ2Fs
bGJhY2tzSW1wbChkYXRhYmFzZUNhbGxiYWNrcykpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKIAogI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuaCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmgKaW5kZXggYjA1
NTUyY2NiZjExNzIwNWNjZTU3NGNlOWFhZDI4NWY5ZWJiZWY4ZS4uOTI0MGFlZmIxMDExNzAwNDgx
ZWI5NmQyN2I2YTUxMDQ1ZDY5NjkwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94eS5oCkBAIC01Myw4ICs1Myw2IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5k
SW50ZXJmYWNlPiB0cmFuc2FjdGlvbihXZWJDb3JlOjpET01TdHJpbmdMaXN0KiBzdG9yZU5hbWVz
LCB1bnNpZ25lZCBzaG9ydCBtb2RlLCBXZWJDb3JlOjpFeGNlcHRpb25Db2RlJik7CiAgICAgdmly
dHVhbCB2b2lkIGNsb3NlKFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCRGF0YWJhc2VDYWxsYmFja3M+
KTsKIAotICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckZyb250ZW5kQ2FsbGJhY2tzKFBhc3NSZWZQ
dHI8V2ViQ29yZTo6SURCRGF0YWJhc2VDYWxsYmFja3M+KTsKLQogcHJpdmF0ZToKICAgICBJREJE
YXRhYmFzZUJhY2tlbmRQcm94eShQYXNzT3duUHRyPFdlYklEQkRhdGFiYXNlPik7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkZhY3RvcnlCYWNrZW5kUHJveHku
Y3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRmFjdG9yeUJhY2tlbmRQcm94eS5j
cHAKaW5kZXggMTQ5YmZlMTJhMGUzOTY3M2Y3YjQ2NWFmNmI5N2QxMTBmM2RjZDU2Ny4uZmY2ZTQ4
MTM3ODcwNTEwZDM5ODViYjQyYjFmMWQ3MGNhNzY2NTdiOCAxMDA3NTUKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvSURCRmFjdG9yeUJhY2tlbmRQcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRmFjdG9yeUJhY2tlbmRQcm94eS5jcHAKQEAgLTM0LDEx
ICszNCwxMyBAQAogI2luY2x1ZGUgIkNyb3NzVGhyZWFkVGFzay5oIgogI2luY2x1ZGUgIkRPTVN0
cmluZ0xpc3QuaCIKICNpbmNsdWRlICJJREJEYXRhYmFzZUJhY2tlbmRQcm94eS5oIgorI2luY2x1
ZGUgIklEQkRhdGFiYXNlQ2FsbGJhY2tzLmgiCiAjaW5jbHVkZSAiSURCRGF0YWJhc2VFcnJvci5o
IgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVJbXBsLmgi
CiAjaW5jbHVkZSAiV2ViSURCQ2FsbGJhY2tzSW1wbC5oIgogI2luY2x1ZGUgIldlYklEQkRhdGFi
YXNlLmgiCisjaW5jbHVkZSAiV2ViSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsLmgiCiAjaW5jbHVk
ZSAiV2ViSURCRGF0YWJhc2VFcnJvci5oIgogI2luY2x1ZGUgIldlYklEQkZhY3RvcnkuaCIKICNp
bmNsdWRlICJXZWJLaXQuaCIKQEAgLTE4MCw3ICsxODIsNyBAQCBib29sIElEQkZhY3RvcnlCYWNr
ZW5kUHJveHk6OmFsbG93SURCRnJvbVdvcmtlclRocmVhZChXb3JrZXJDb250ZXh0KiB3b3JrZXJD
b250ZQogICAgIHJldHVybiBicmlkZ2UtPnJlc3VsdCgpOwogfQogCi12b2lkIElEQkZhY3RvcnlC
YWNrZW5kUHJveHk6Om9wZW5Gcm9tV29ya2VyKGNvbnN0IFN0cmluZyYgbmFtZSwgSURCQ2FsbGJh
Y2tzKiBjYWxsYmFja3MsIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHBycE9yaWdpbiwgV29y
a2VyQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBkYXRhRGlyKQordm9pZCBJREJGYWN0
b3J5QmFja2VuZFByb3h5OjpvcGVuRnJvbVdvcmtlcihjb25zdCBTdHJpbmcmIG5hbWUsIElEQkNh
bGxiYWNrcyogY2FsbGJhY2tzLCBJREJEYXRhYmFzZUNhbGxiYWNrcyogZGF0YWJhc2VDYWxsYmFj
a3MsIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHBycE9yaWdpbiwgV29ya2VyQ29udGV4dCog
Y29udGV4dCwgY29uc3QgU3RyaW5nJiBkYXRhRGlyKQogewogI2lmIEVOQUJMRShXT1JLRVJTKQog
ICAgIFdlYlNlY3VyaXR5T3JpZ2luIG9yaWdpbihwcnBPcmlnaW4pOwpAQCAtMTg4LDExICsxOTAs
MTEgQEAgdm9pZCBJREJGYWN0b3J5QmFja2VuZFByb3h5OjpvcGVuRnJvbVdvcmtlcihjb25zdCBT
dHJpbmcmIG5hbWUsIElEQkNhbGxiYWNrcyogY2EKICAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9y
KFdlYklEQkRhdGFiYXNlRXJyb3IoMCwgIlRoZSB1c2VyIGRlbmllZCBwZXJtaXNzaW9uIHRvIGFj
Y2VzcyB0aGUgZGF0YWJhc2UuIikpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIG1fd2Vi
SURCRmFjdG9yeS0+b3BlbihuYW1lLCBuZXcgV2ViSURCQ2FsbGJhY2tzSW1wbChjYWxsYmFja3Mp
LCBvcmlnaW4sIC8qd2ViRnJhbWUqLzAsIGRhdGFEaXIpOworICAgIG1fd2ViSURCRmFjdG9yeS0+
b3BlbihuYW1lLCBuZXcgV2ViSURCQ2FsbGJhY2tzSW1wbChjYWxsYmFja3MpLCBuZXcgV2ViSURC
RGF0YWJhc2VDYWxsYmFja3NJbXBsKGRhdGFiYXNlQ2FsbGJhY2tzKSwgb3JpZ2luLCAvKndlYkZy
YW1lKi8wLCBkYXRhRGlyKTsKICNlbmRpZgogfQogCi12b2lkIElEQkZhY3RvcnlCYWNrZW5kUHJv
eHk6Om9wZW4oY29uc3QgU3RyaW5nJiBuYW1lLCBJREJDYWxsYmFja3MqIGNhbGxiYWNrcywgUGFz
c1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gcHJwT3JpZ2luLCBGcmFtZSogZnJhbWUsIGNvbnN0IFN0
cmluZyYgZGF0YURpcikKK3ZvaWQgSURCRmFjdG9yeUJhY2tlbmRQcm94eTo6b3Blbihjb25zdCBT
dHJpbmcmIG5hbWUsIElEQkNhbGxiYWNrcyogY2FsbGJhY2tzLCBJREJEYXRhYmFzZUNhbGxiYWNr
cyogZGF0YWJhc2VDYWxsYmFja3MsIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHBycE9yaWdp
biwgRnJhbWUqIGZyYW1lLCBjb25zdCBTdHJpbmcmIGRhdGFEaXIpCiB7CiAgICAgV2ViU2VjdXJp
dHlPcmlnaW4gb3JpZ2luKHBycE9yaWdpbik7CiAgICAgV2ViRnJhbWVJbXBsKiB3ZWJGcmFtZSA9
IFdlYkZyYW1lSW1wbDo6ZnJvbUZyYW1lKGZyYW1lKTsKQEAgLTIwMiw3ICsyMDQsNyBAQCB2b2lk
IElEQkZhY3RvcnlCYWNrZW5kUHJveHk6Om9wZW4oY29uc3QgU3RyaW5nJiBuYW1lLCBJREJDYWxs
YmFja3MqIGNhbGxiYWNrcywgUAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV93ZWJJ
REJGYWN0b3J5LT5vcGVuKG5hbWUsIG5ldyBXZWJJREJDYWxsYmFja3NJbXBsKGNhbGxiYWNrcyks
IG9yaWdpbiwgd2ViRnJhbWUsIGRhdGFEaXIpOworICAgIG1fd2ViSURCRmFjdG9yeS0+b3Blbihu
YW1lLCBuZXcgV2ViSURCQ2FsbGJhY2tzSW1wbChjYWxsYmFja3MpLCAgbmV3IFdlYklEQkRhdGFi
YXNlQ2FsbGJhY2tzSW1wbChkYXRhYmFzZUNhbGxiYWNrcyksIG9yaWdpbiwgd2ViRnJhbWUsIGRh
dGFEaXIpOwogfQogCiB2b2lkIElEQkZhY3RvcnlCYWNrZW5kUHJveHk6OmRlbGV0ZURhdGFiYXNl
KGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywg
UGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gcHJwT3JpZ2luLCBGcmFtZSogZnJhbWUsIGNvbnN0
IFN0cmluZyYgZGF0YURpcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0lEQkZhY3RvcnlCYWNrZW5kUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lE
QkZhY3RvcnlCYWNrZW5kUHJveHkuaAppbmRleCBjMDdkYjM1NTZlMDkwMDY2YzdiNGNiMWUxYjll
ZGNhZmM3MDZjOTYwLi5hYzVmZThmYjk0MmJhNzIxNzQzMTU4NWIyNzUwMWFmMTQwNDdkYmVkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJGYWN0b3J5QmFja2VuZFBy
b3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRmFjdG9yeUJhY2tlbmRQ
cm94eS5oCkBAIC00OSw4ICs0OSw4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBnZXRE
YXRhYmFzZU5hbWVzKFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCQ2FsbGJhY2tzPiwgUGFzc1JlZlB0
cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4sIFdlYkNvcmU6OkZyYW1lKiwgY29uc3QgU3RyaW5n
JiBkYXRhRGlyKTsKIAotICAgIHZpcnR1YWwgdm9pZCBvcGVuKGNvbnN0IFN0cmluZyYgbmFtZSwg
V2ViQ29yZTo6SURCQ2FsbGJhY2tzKiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bj4sIFdlYkNvcmU6OkZyYW1lKiwgY29uc3QgU3RyaW5nJiBkYXRhRGlyKTsKLSAgICB2aXJ0dWFs
IHZvaWQgb3BlbkZyb21Xb3JrZXIoY29uc3QgU3RyaW5nJiBuYW1lLCBXZWJDb3JlOjpJREJDYWxs
YmFja3MqLCBQYXNzUmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiwgV2ViQ29yZTo6V29y
a2VyQ29udGV4dCosIGNvbnN0IFN0cmluZyYgZGF0YURpcik7CisgICAgdmlydHVhbCB2b2lkIG9w
ZW4oY29uc3QgU3RyaW5nJiBuYW1lLCBXZWJDb3JlOjpJREJDYWxsYmFja3MqLCBXZWJDb3JlOjpJ
REJEYXRhYmFzZUNhbGxiYWNrcyosIFBhc3NSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+
LCBXZWJDb3JlOjpGcmFtZSosIGNvbnN0IFN0cmluZyYgZGF0YURpcik7CisgICAgdmlydHVhbCB2
b2lkIG9wZW5Gcm9tV29ya2VyKGNvbnN0IFN0cmluZyYgbmFtZSwgV2ViQ29yZTo6SURCQ2FsbGJh
Y2tzKiwgV2ViQ29yZTo6SURCRGF0YWJhc2VDYWxsYmFja3MqLCBQYXNzUmVmUHRyPFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luPiwgV2ViQ29yZTo6V29ya2VyQ29udGV4dCosIGNvbnN0IFN0cmluZyYg
ZGF0YURpcik7CiAKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlRGF0YWJhc2UoY29uc3QgU3RyaW5n
JiBuYW1lLCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8V2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW4+LCBXZWJDb3JlOjpGcmFtZSosIGNvbnN0IFN0cmluZyYgZGF0
YURpcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRh
dGFiYXNlSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFz
ZUltcGwuY3BwCmluZGV4IDE4NTczY2FjZmUxODAxYjk4YjllMzliYTNmMWVlOGQ2YzY0ZDBkOTIu
LmFjYThkZjViYjA3NGFjMGI4YjQwM2M0MDI3NzNjYTg4NjI1NzhjM2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmNwcApAQCAtNDQsOCAr
NDQsOSBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAK
LVdlYklEQkRhdGFiYXNlSW1wbDo6V2ViSURCRGF0YWJhc2VJbXBsKFBhc3NSZWZQdHI8SURCRGF0
YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiBkYXRhYmFzZUJhY2tlbmQpCitXZWJJREJEYXRhYmFzZUlt
cGw6OldlYklEQkRhdGFiYXNlSW1wbChQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVy
ZmFjZT4gZGF0YWJhc2VCYWNrZW5kLCBXVEY6OlBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFj
a3NQcm94eT4gZGF0YWJhc2VDYWxsYmFja3MpCiAgICAgOiBtX2RhdGFiYXNlQmFja2VuZChkYXRh
YmFzZUJhY2tlbmQpCisgICAgLCBtX2RhdGFiYXNlQ2FsbGJhY2tzKGRhdGFiYXNlQ2FsbGJhY2tz
KQogewogfQogCkBAIC05MSw3ICs5Miw3IEBAIFdlYklEQlRyYW5zYWN0aW9uKiBXZWJJREJEYXRh
YmFzZUltcGw6OnRyYW5zYWN0aW9uKGNvbnN0IFdlYkRPTVN0cmluZ0xpc3QmIG5hbWVzCiAKIHZv
aWQgV2ViSURCRGF0YWJhc2VJbXBsOjpjbG9zZSgpCiB7Ci0gICAgLy8gVXNlIHRoZSBjYWxsYmFj
a3MgdGhhdCA6Om9wZW4gZ2F2ZSB1cyBzbyB0aGF0IHRoZSBiYWNrZW5kIGluCisgICAgLy8gVXNl
IHRoZSBjYWxsYmFja3MgcGFzc2VkIGluIHRvIHRoZSBjb25zdHJ1Y3RvciBzbyB0aGF0IHRoZSBi
YWNrZW5kIGluCiAgICAgLy8gbXVsdGktcHJvY2VzcyBjaHJvbWl1bSBrbm93cyB3aGljaCBkYXRh
YmFzZSBjb25uZWN0aW9uIGlzIGNsb3NpbmcuCiAgICAgaWYgKCFtX2RhdGFiYXNlQ2FsbGJhY2tz
KQogICAgICAgICByZXR1cm47CkBAIC05OSwxMyArMTAwLDYgQEAgdm9pZCBXZWJJREJEYXRhYmFz
ZUltcGw6OmNsb3NlKCkKICAgICBtX2RhdGFiYXNlQ2FsbGJhY2tzID0gMDsKIH0KIAotdm9pZCBX
ZWJJREJEYXRhYmFzZUltcGw6Om9wZW4oV2ViSURCRGF0YWJhc2VDYWxsYmFja3MqIGNhbGxiYWNr
cykKLXsKLSAgICBBU1NFUlQoIW1fZGF0YWJhc2VDYWxsYmFja3MpOwotICAgIG1fZGF0YWJhc2VD
YWxsYmFja3MgPSBJREJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5OjpjcmVhdGUoYWRvcHRQdHIoY2Fs
bGJhY2tzKSk7Ci0gICAgbV9kYXRhYmFzZUJhY2tlbmQtPnJlZ2lzdGVyRnJvbnRlbmRDYWxsYmFj
a3MobV9kYXRhYmFzZUNhbGxiYWNrcyk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAj
ZW5kaWYgLy8gRU5BQkxFKElOREVYRURfREFUQUJBU0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5oCmluZGV4IDRmODI1MTgyMGE0OWJiZGZkZTUy
ZmFiOTFlZmZhNWFlYzA4YmE0NmQuLjU5YWQ1YzdjNTk1MWJiNWNhYmJiYmVjMWVkNTI2ZjI2YWQ3
ZmM1NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFi
YXNlSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNl
SW1wbC5oCkBAIC00Nyw3ICs0Nyw3IEBAIGNsYXNzIFdlYklEQlRyYW5zYWN0aW9uOwogLy8gU2Vl
IGNvbW1lbnQgaW4gV2ViSURCRmFjdG9yeSBmb3IgYSBoaWdoIGxldmVsIG92ZXJ2aWV3IHRoZXNl
IGNsYXNzZXMuCiBjbGFzcyBXZWJJREJEYXRhYmFzZUltcGwgOiBwdWJsaWMgV2ViSURCRGF0YWJh
c2UgewogcHVibGljOgotICAgIFdlYklEQkRhdGFiYXNlSW1wbChXVEY6OlBhc3NSZWZQdHI8V2Vi
Q29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPik7CisgICAgV2ViSURCRGF0YWJhc2VJ
bXBsKFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+
LCBXVEY6OlBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3NQcm94eT4pOwogICAgIHZpcnR1
YWwgfldlYklEQkRhdGFiYXNlSW1wbCgpOwogCiAgICAgdmlydHVhbCBXZWJJREJNZXRhZGF0YSBt
ZXRhZGF0YSgpIGNvbnN0OwpAQCAtNTgsOSArNTgsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBX
ZWJJREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24oY29uc3QgV2ViRE9NU3RyaW5nTGlzdCYgbmFt
ZXMsIHVuc2lnbmVkIHNob3J0IG1vZGUsIFdlYkV4Y2VwdGlvbkNvZGUmKTsKICAgICB2aXJ0dWFs
IHZvaWQgY2xvc2UoKTsKIAotICAgIC8vIEZJWE1FOiBSZW5hbWUgIm9wZW4iIHRvIHJlZ2lzdGVy
RnJvbnRlbmRDYWxsYmFja3MuCi0gICAgdmlydHVhbCB2b2lkIG9wZW4oV2ViSURCRGF0YWJhc2VD
YWxsYmFja3MqKTsKLQogcHJpdmF0ZToKICAgICBXVEY6OlJlZlB0cjxXZWJDb3JlOjpJREJEYXRh
YmFzZUJhY2tlbmRJbnRlcmZhY2U+IG1fZGF0YWJhc2VCYWNrZW5kOwogICAgIFdURjo6UmVmUHRy
PElEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHk+IG1fZGF0YWJhc2VDYWxsYmFja3M7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJGYWN0b3J5SW1wbC5jcHAgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJGYWN0b3J5SW1wbC5jcHAKaW5kZXggZDg3
NWUxMWJjNjVlZjU4OGUwNmUyYjVmNTFkYWMxNmQyNmI2MDhlYy4uZTFkYmRjNGVjNDgxM2YzZjBl
ZDk4MzA4OGFmNzYyMzhiNTA1Mjk0ZiAxMDA3NTUKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViSURCRmFjdG9yeUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYklEQkZhY3RvcnlJbXBsLmNwcApAQCAtMzUsOCArMzUsMTAgQEAKIAogI2luY2x1ZGUg
IkRPTVN0cmluZ0xpc3QuaCIKICNpbmNsdWRlICJJREJDYWxsYmFja3NQcm94eS5oIgorI2luY2x1
ZGUgIklEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHkuaCIKICNpbmNsdWRlICJJREJGYWN0b3J5QmFj
a2VuZEltcGwuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgorI2luY2x1ZGUgIldlYklE
QkRhdGFiYXNlQ2FsbGJhY2tzLmgiCiAjaW5jbHVkZSAiV2ViSURCRGF0YWJhc2VFcnJvci5oIgog
I2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KIApAQCAtNjQsOSArNjYsMTIgQEAgdm9pZCBXZWJJREJG
YWN0b3J5SW1wbDo6Z2V0RGF0YWJhc2VOYW1lcyhXZWJJREJDYWxsYmFja3MqIGNhbGxiYWNrcywg
Y29uc3QgV2ViU2UKIH0KIAogCi12b2lkIFdlYklEQkZhY3RvcnlJbXBsOjpvcGVuKGNvbnN0IFdl
YlN0cmluZyYgbmFtZSwgV2ViSURCQ2FsbGJhY2tzKiBjYWxsYmFja3MsIGNvbnN0IFdlYlNlY3Vy
aXR5T3JpZ2luJiBvcmlnaW4sIFdlYkZyYW1lKiwgY29uc3QgV2ViU3RyaW5nJiBkYXRhRGlyKQor
dm9pZCBXZWJJREJGYWN0b3J5SW1wbDo6b3Blbihjb25zdCBXZWJTdHJpbmcmIG5hbWUsIFdlYklE
QkNhbGxiYWNrcyogY2FsbGJhY2tzLCBXZWJJREJEYXRhYmFzZUNhbGxiYWNrcyogZGF0YWJhc2VD
YWxsYmFja3MsIGNvbnN0IFdlYlNlY3VyaXR5T3JpZ2luJiBvcmlnaW4sIFdlYkZyYW1lKiwgY29u
c3QgV2ViU3RyaW5nJiBkYXRhRGlyKQogewotICAgIG1faWRiRmFjdG9yeUJhY2tlbmQtPm9wZW4o
bmFtZSwgSURCQ2FsbGJhY2tzUHJveHk6OmNyZWF0ZShhZG9wdFB0cihjYWxsYmFja3MpKS5nZXQo
KSwgb3JpZ2luLCAwLCBkYXRhRGlyKTsKKyAgICBSZWZQdHI8SURCQ2FsbGJhY2tzUHJveHk+IGNh
bGxiYWNrc1Byb3h5ID0gSURCQ2FsbGJhY2tzUHJveHk6OmNyZWF0ZShhZG9wdFB0cihjYWxsYmFj
a3MpKTsKKyAgICBSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3NQcm94eT4gZGF0YWJhc2VDYWxs
YmFja3NQcm94eSA9IElEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHk6OmNyZWF0ZShhZG9wdFB0cihk
YXRhYmFzZUNhbGxiYWNrcykpOworICAgIGNhbGxiYWNrc1Byb3h5LT5zZXREYXRhYmFzZUNhbGxi
YWNrcyhkYXRhYmFzZUNhbGxiYWNrc1Byb3h5KTsKKyAgICBtX2lkYkZhY3RvcnlCYWNrZW5kLT5v
cGVuKG5hbWUsIGNhbGxiYWNrc1Byb3h5LmdldCgpLCBkYXRhYmFzZUNhbGxiYWNrc1Byb3h5Lmdl
dCgpLCBvcmlnaW4sIDAsIGRhdGFEaXIpOwogfQogCiB2b2lkIFdlYklEQkZhY3RvcnlJbXBsOjpk
ZWxldGVEYXRhYmFzZShjb25zdCBXZWJTdHJpbmcmIG5hbWUsIFdlYklEQkNhbGxiYWNrcyogY2Fs
bGJhY2tzLCBjb25zdCBXZWJTZWN1cml0eU9yaWdpbiYgb3JpZ2luLCBXZWJGcmFtZSosIGNvbnN0
IFdlYlN0cmluZyYgZGF0YURpcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYklEQkZhY3RvcnlJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJ
REJGYWN0b3J5SW1wbC5oCmluZGV4IGIzZTQ3NGRmOTI1NWU4NzdmMmZmNmQwZTYzMTAzNTU2MjQ2
ZDE3MTkuLmQ4NzE5MGRhNTM1MjMxNDY3MjA1ZWZjY2RlYjRhZmI3YmRmMDI2NTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkZhY3RvcnlJbXBsLmgKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRmFjdG9yeUltcGwuaApAQCAtNDUsNyAr
NDUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+V2ViSURCRmFjdG9yeUltcGwoKTsKIAogICAg
IHZpcnR1YWwgdm9pZCBnZXREYXRhYmFzZU5hbWVzKFdlYklEQkNhbGxiYWNrcyosIGNvbnN0IFdl
YlNlY3VyaXR5T3JpZ2luJiwgV2ViRnJhbWUqLCBjb25zdCBXZWJTdHJpbmcmIGRhdGFEaXIpOwot
ICAgIHZpcnR1YWwgdm9pZCBvcGVuKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgV2ViSURCQ2FsbGJh
Y2tzKiwgY29uc3QgV2ViU2VjdXJpdHlPcmlnaW4mLCBXZWJGcmFtZSosIGNvbnN0IFdlYlN0cmlu
ZyYgZGF0YURpcik7CisgICAgdmlydHVhbCB2b2lkIG9wZW4oY29uc3QgV2ViU3RyaW5nJiBuYW1l
LCBXZWJJREJDYWxsYmFja3MqLCBXZWJJREJEYXRhYmFzZUNhbGxiYWNrcyosIGNvbnN0IFdlYlNl
Y3VyaXR5T3JpZ2luJiwgV2ViRnJhbWUqLCBjb25zdCBXZWJTdHJpbmcmIGRhdGFEaXIpOwogICAg
IHZpcnR1YWwgdm9pZCBkZWxldGVEYXRhYmFzZShjb25zdCBXZWJTdHJpbmcmIG5hbWUsIFdlYklE
QkNhbGxiYWNrcyosIGNvbnN0IFdlYlNlY3VyaXR5T3JpZ2luJiwgV2ViRnJhbWUqLCBjb25zdCBX
ZWJTdHJpbmcmIGRhdGFEaXIpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDAwMTVjZWE0OGEzMGFmNmNh
MjY4YjMwODNjNDI1ODc1YzE5MGQ4NDkuLjA1ZDc5ZWUzZThlMWZjZDY1NjVjYTFkNzVhYzczNjY3
ODAxZDg1ZDAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMi0wNy0wMiAgSm9zaHVhIEJlbGwg
IDxqc2JlbGxAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEluZGV4ZWREQjogQ29uc29saWRhdGUg
dHdvLXBoYXNlIGNvbm5lY3Rpb24gdG8gYXZvaWQgcmFjZSBjb25kaXRpb25zCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MDQxMQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIv
cmVzb3VyY2VzL2ZhY3RvcnktYmFzaWNzLmpzOgorICAgICAgICAoZ2V0RGF0YWJhc2VOYW1lc1N1
Y2Nlc3MyKToKKwogMjAxMi0wNy0wMSAgS2lob25nIEt3b24gIDxraWhvbmcua3dvbkBzYW1zdW5n
LmNvbT4KIAogICAgICAgICBNb3ZlIHBsYXRmb3JtL3F0L2Zhc3QvanNuYXZpZ2F0b3ItbGFuZ3Vh
Z2UuaHRtbCB0byBmYXN0L2pzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9yZXNvdXJjZXMvZmFjdG9yeS1iYXNpY3MuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9yZXNvdXJjZXMvZmFjdG9yeS1iYXNpY3MuanMKaW5kZXggMTg4Yzk3MDQ0YzI4YWVk
OWFmOWJmNDA0OGE3NGRkNWVlNTA1NzgzNS4uNDdjMzcyMDc2MzQ3OTJjMGFlNDU1MDA3MGM4YjQy
ZTUxMjcxZjZlYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVz
b3VyY2VzL2ZhY3RvcnktYmFzaWNzLmpzCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL3Jlc291cmNlcy9mYWN0b3J5LWJhc2ljcy5qcwpAQCAtNTUsNiArNTUsNyBAQCBmdW5jdGlv
biBnZXREYXRhYmFzZU5hbWVzU3VjY2VzczIoKQogICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJp
bmRleGVkREIuZGVsZXRlRGF0YWJhc2UoJyIgKyBuYW1lICsgIicpIik7CiAgICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBkZWxldGVEYXRhYmFzZVN1Y2Nlc3M7CiAgICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbmJsb2NrZWQgPSB1bmV4cGVj
dGVkQmxvY2tlZENhbGxiYWNrOwogfQogCiBmdW5jdGlvbiBkZWxldGVEYXRhYmFzZVN1Y2Nlc3Mo
KQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161334</attachid>
            <date>2012-08-29 15:30:59 -0700</date>
            <delta_ts>2012-09-05 16:09:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-90411-20120829153049.patch</filename>
            <type>text/plain</type>
            <size>72625</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2Nzg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTBjNWNjOGM2NWQxZGE3
ODJiODkzZmFjZDU3YmM5ZmNjYjc3ZTg4OC4uNmI2ZmQzMWVkN2QyM2E1Mzg3YmNkN2QzMmI4MzIz
MDA2OWU0YWI4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcyIEBACisyMDEyLTA4LTI5ICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBDb25z
b2xpZGF0ZSB0d28tcGhhc2UgY29ubmVjdGlvbiB0byBhdm9pZCByYWNlIGNvbmRpdGlvbnMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkwNDExCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkaXRpb25hbCBp
bmZvcm1hdGlvbiBvZiB0aGUgY2hhbmdlIHN1Y2ggYXMgYXBwcm9hY2gsIHJhdGlvbmFsZS4gUGxl
YXNlIGFkZCBwZXItZnVuY3Rpb24gZGVzY3JpcHRpb25zIGJlbG93IChPT1BTISkuCisKKyAgICAg
ICAgTm8gbmV3IHRlc3RzIChPT1BTISkuCisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9J
REJEYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZTo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlOjpJREJEYXRhYmFzZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJEYXRhYmFzZTo6fklEQkRhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QkRhdGFiYXNlOjpjbG9zZUNvbm5lY3Rpb24pOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRi
L0lEQkRhdGFiYXNlLmg6CisgICAgICAgIChJREJEYXRhYmFzZSk6CisgICAgICAgICogTW9kdWxl
cy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpQZW5kaW5nT3BlbkNhbGw6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpQZW5kaW5nT3BlbkNhbGw6OmRh
dGFiYXNlQ2FsbGJhY2tzKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZElt
cGw6OlBlbmRpbmdPcGVuQ2FsbDo6UGVuZGluZ09wZW5DYWxsKToKKyAgICAgICAgKElEQkRhdGFi
YXNlQmFja2VuZEltcGw6OlBlbmRpbmdPcGVuQ2FsbCk6CisgICAgICAgIChXZWJDb3JlOjpJREJE
YXRhYmFzZUJhY2tlbmRJbXBsOjpQZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbDo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OlBlbmRpbmdPcGVuV2l0
aFZlcnNpb25DYWxsOjpkYXRhYmFzZUNhbGxiYWNrcyk6CisgICAgICAgIChXZWJDb3JlOjpJREJE
YXRhYmFzZUJhY2tlbmRJbXBsOjpQZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbDo6UGVuZGluZ09w
ZW5XaXRoVmVyc2lvbkNhbGwpOgorICAgICAgICAoSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6UGVu
ZGluZ09wZW5XaXRoVmVyc2lvbkNhbGwpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VC
YWNrZW5kSW1wbDo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJ
REJEYXRhYmFzZUJhY2tlbmRJbXBsOjpvcGVuSW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6
SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6c2V0VmVyc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpJ
REJEYXRhYmFzZUJhY2tlbmRJbXBsOjpjb25uZWN0aW9uQ291bnQpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6cHJvY2Vzc1BlbmRpbmdDYWxscyk6CisgICAgICAg
IChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpvcGVuQ29ubmVjdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpydW5JbnRWZXJzaW9uQ2hhbmdl
VHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6
b3BlbkNvbm5lY3Rpb25XaXRoVmVyc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFz
ZUJhY2tlbmRJbXBsOjpkZWxldGVEYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRh
YmFzZUJhY2tlbmRJbXBsOjpjbG9zZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURC
RGF0YWJhc2VCYWNrZW5kSW1wbC5oOgorICAgICAgICAoSURCRGF0YWJhc2VCYWNrZW5kSW1wbCk6
CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNl
Lmg6CisgICAgICAgIChJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UpOgorICAgICAgICAqIE1v
ZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGw6OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGw6OklEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbCk6
CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGw6OmNvbm5lY3QpOgor
ICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbC5oOgor
ICAgICAgICAoSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsKToKKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9JREJGYWN0b3J5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkZhY3Rvcnk6Om9w
ZW4pOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJREJGYWN0b3J5QmFja2VuZEltcGw6Om9wZW4pOgorICAg
ICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5oOgorICAgICAg
ICAoSURCRmFjdG9yeUJhY2tlbmRJbXBsKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9J
REJGYWN0b3J5QmFja2VuZEludGVyZmFjZS5oOgorICAgICAgICAoSURCRmFjdG9yeUJhY2tlbmRJ
bnRlcmZhY2UpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQk9wZW5EQlJlcXVlc3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCT3BlbkRCUmVxdWVzdDo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQk9wZW5EQlJlcXVlc3Q6OklEQk9wZW5EQlJlcXVlc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCT3BlbkRCUmVxdWVzdDo6b25VcGdyYWRlTmVlZGVkKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQk9wZW5EQlJlcXVlc3Q6Om9uU3VjY2Vzcyk6CisgICAgICAgICogTW9kdWxl
cy9pbmRleGVkZGIvSURCT3BlbkRCUmVxdWVzdC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgIChJREJPcGVuREJSZXF1ZXN0KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJU
cmFuc2FjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6b25BYm9y
dCk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6b25Db21wbGV0ZSk6CisgICAg
ICAgICogaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmUpOgorCiAyMDEyLTA4LTI3ICBKdXN0aW4gTm92b3NhZCAgPGp1bm92QGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBbQ2hyb21pdW1dIEZpeGluZyBpbmZpbml0ZSByZWN1cnNpb24gaW4gQ2Fu
dmFzMkRMYXllck1hbmFnZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggMzRlNTJhOGRh
ZGM1ZWFmYTNkMWQxMzc2OWRlZGQ2MjZiMGU3M2VjYS4uODRhYWMyNzMxMGIzZWJjYmQ0YzIwNTYx
MGI5MDA5YzY4OWM3NDI3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0
OSBAQAorMjAxMi0wOC0yOSAgSm9zaHVhIEJlbGwgIDxqc2JlbGxAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIEluZGV4ZWREQjogQ29uc29saWRhdGUgdHdvLXBoYXNlIGNvbm5lY3Rpb24gdG8gYXZv
aWQgcmFjZSBjb25kaXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD05MDQxMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb2YgdGhlIGNoYW5nZSBzdWNoIGFzIGFw
cHJvYWNoLCByYXRpb25hbGUuIFBsZWFzZSBhZGQgcGVyLWZ1bmN0aW9uIGRlc2NyaXB0aW9ucyBi
ZWxvdyAoT09QUyEpLgorCisgICAgICAgICogcHVibGljL1dlYklEQkRhdGFiYXNlLmg6CisgICAg
ICAgICogcHVibGljL1dlYklEQkZhY3RvcnkuaDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAg
IChXZWJLaXQ6OldlYklEQkZhY3Rvcnk6Om9wZW4pOgorICAgICAgICAqIHNyYy9JREJDYWxsYmFj
a3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OklEQkNhbGxiYWNrc1Byb3h5OjpvblN1Y2Nl
c3MpOgorICAgICAgICAoV2ViS2l0OjpJREJDYWxsYmFja3NQcm94eTo6b25VcGdyYWRlTmVlZGVk
KToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OklEQkNhbGxiYWNrc1Byb3h5
OjpzZXREYXRhYmFzZUNhbGxiYWNrcyk6CisgICAgICAgICogc3JjL0lEQkNhbGxiYWNrc1Byb3h5
Lmg6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoSURCQ2FsbGJhY2tzUHJveHkpOgorICAg
ICAgICAqIHNyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94eS5jcHA6CisgICAgICAgICogc3JjL0lE
QkRhdGFiYXNlQmFja2VuZFByb3h5Lmg6CisgICAgICAgIChJREJEYXRhYmFzZUJhY2tlbmRQcm94
eSk6CisgICAgICAgICogc3JjL0lEQkZhY3RvcnlCYWNrZW5kUHJveHkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpJREJGYWN0b3J5QmFja2VuZFByb3h5OjpvcGVuKToKKyAgICAgICAgKiBzcmMvSURC
RmFjdG9yeUJhY2tlbmRQcm94eS5oOgorICAgICAgICAoSURCRmFjdG9yeUJhY2tlbmRQcm94eSk6
CisgICAgICAgICogc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYklEQkRhdGFiYXNlSW1wbDo6V2ViSURCRGF0YWJhc2VJbXBsKToKKyAgICAgICAgKFdlYktp
dDo6V2ViSURCRGF0YWJhc2VJbXBsOjpjbG9zZSk6CisgICAgICAgICogc3JjL1dlYklEQkRhdGFi
YXNlSW1wbC5oOgorICAgICAgICAoV2ViSURCRGF0YWJhc2VJbXBsKToKKyAgICAgICAgKiBzcmMv
V2ViSURCRmFjdG9yeUltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJGYWN0b3J5SW1w
bDo6b3Blbik6CisgICAgICAgICogc3JjL1dlYklEQkZhY3RvcnlJbXBsLmg6CisgICAgICAgIChX
ZWJJREJGYWN0b3J5SW1wbCk6CisgICAgICAgICogdGVzdHMvSURCQWJvcnRPbkNvcnJ1cHRUZXN0
LmNwcDoKKyAgICAgICAgKEZha2VJREJEYXRhYmFzZUNhbGxiYWNrcyk6CisgICAgICAgIChXZWJD
b3JlOjpGYWtlSURCRGF0YWJhc2VDYWxsYmFja3M6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpGYWtlSURCRGF0YWJhc2VDYWxsYmFja3M6On5GYWtlSURCRGF0YWJhc2VDYWxsYmFja3MpOgor
ICAgICAgICAoV2ViQ29yZTo6RmFrZUlEQkRhdGFiYXNlQ2FsbGJhY2tzOjpGYWtlSURCRGF0YWJh
c2VDYWxsYmFja3MpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpURVNU
KToKKyAgICAgICAgKiB0ZXN0cy9JREJEYXRhYmFzZUJhY2tlbmRUZXN0LmNwcDoKKwogMjAxMi0w
OC0yNyAgSnVzdGluIE5vdm9zYWQgIDxqdW5vdkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW0No
cm9taXVtXSBGaXhpbmcgaW5maW5pdGUgcmVjdXJzaW9uIGluIENhbnZhczJETGF5ZXJNYW5hZ2Vy
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFz
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHAK
aW5kZXggYWE5M2U2YTgyYzc1NDhjOThiMTk5NDI1YWEwMGIyY2VjMzllODg5My4uZWM5OTg2Yzg4
MjhlZDZhNDNiNjU4NjBhMGM5MTBjMTQyZWQ3NTgyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcApAQCAtMzEsNyArMzEsNyBAQAogI2lu
Y2x1ZGUgIkV2ZW50UXVldWUuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVk
ZSAiSURCQW55LmgiCi0jaW5jbHVkZSAiSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsLmgiCisjaW5j
bHVkZSAiSURCRGF0YWJhc2VDYWxsYmFja3MuaCIKICNpbmNsdWRlICJJREJEYXRhYmFzZUVycm9y
LmgiCiAjaW5jbHVkZSAiSURCRGF0YWJhc2VFeGNlcHRpb24uaCIKICNpbmNsdWRlICJJREJFdmVu
dERpc3BhdGNoZXIuaCIKQEAgLTUwLDI5ICs1MCwyOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLVBhc3NSZWZQdHI8SURCRGF0YWJhc2U+IElEQkRhdGFiYXNlOjpjcmVhdGUoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRl
cmZhY2U+IGRhdGFiYXNlKQorUGFzc1JlZlB0cjxJREJEYXRhYmFzZT4gSURCRGF0YWJhc2U6OmNy
ZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQkRhdGFi
YXNlQmFja2VuZEludGVyZmFjZT4gZGF0YWJhc2UsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxs
YmFja3M+IGNhbGxiYWNrcykKIHsKLSAgICBSZWZQdHI8SURCRGF0YWJhc2U+IGlkYkRhdGFiYXNl
KGFkb3B0UmVmKG5ldyBJREJEYXRhYmFzZShjb250ZXh0LCBkYXRhYmFzZSkpKTsKKyAgICBSZWZQ
dHI8SURCRGF0YWJhc2U+IGlkYkRhdGFiYXNlKGFkb3B0UmVmKG5ldyBJREJEYXRhYmFzZShjb250
ZXh0LCBkYXRhYmFzZSwgY2FsbGJhY2tzKSkpOwogICAgIGlkYkRhdGFiYXNlLT5zdXNwZW5kSWZO
ZWVkZWQoKTsKICAgICByZXR1cm4gaWRiRGF0YWJhc2UucmVsZWFzZSgpOwogfQogCi1JREJEYXRh
YmFzZTo6SURCRGF0YWJhc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1Jl
ZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+IGJhY2tlbmQpCitJREJEYXRhYmFzZTo6
SURCRGF0YWJhc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJ
REJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+IGJhY2tlbmQsIFBhc3NSZWZQdHI8SURCRGF0YWJh
c2VDYWxsYmFja3M+IGNhbGxiYWNrcykKICAgICA6IEFjdGl2ZURPTU9iamVjdChjb250ZXh0LCB0
aGlzKQogICAgICwgbV9iYWNrZW5kKGJhY2tlbmQpCiAgICAgLCBtX2Nsb3NlUGVuZGluZyhmYWxz
ZSkKICAgICAsIG1fY29udGV4dFN0b3BwZWQoZmFsc2UpCisgICAgLCBtX2RhdGFiYXNlQ2FsbGJh
Y2tzKGNhbGxiYWNrcykKIHsKICAgICAvLyBXZSBwYXNzIGEgcmVmZXJlbmNlIG9mIHRoaXMgb2Jq
ZWN0IGJlZm9yZSBpdCBjYW4gYmUgYWRvcHRlZC4KICAgICByZWxheEFkb3B0aW9uUmVxdWlyZW1l
bnQoKTsKLSAgICBtX2RhdGFiYXNlQ2FsbGJhY2tzID0gSURCRGF0YWJhc2VDYWxsYmFja3NJbXBs
OjpjcmVhdGUodGhpcyk7CiAgICAgbV9tZXRhZGF0YSA9IG1fYmFja2VuZC0+bWV0YWRhdGEoKTsK
IH0KIAogSURCRGF0YWJhc2U6On5JREJEYXRhYmFzZSgpCiB7CiAgICAgY2xvc2UoKTsKLSAgICBt
X2RhdGFiYXNlQ2FsbGJhY2tzLT51bnJlZ2lzdGVyRGF0YWJhc2UodGhpcyk7CiB9CiAKIHZvaWQg
SURCRGF0YWJhc2U6OnRyYW5zYWN0aW9uQ3JlYXRlZChJREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rp
b24pCkBAIC0yOTMsNiArMjkyLDcgQEAgdm9pZCBJREJEYXRhYmFzZTo6Y2xvc2UoKQogCiB2b2lk
IElEQkRhdGFiYXNlOjpjbG9zZUNvbm5lY3Rpb24oKQogeworICAgIElEQl9UUkFDRSgiSURCRGF0
YWJhc2U6OmNsb3NlQ29ubmVjdGlvbiIpOwogICAgIEFTU0VSVChtX2Nsb3NlUGVuZGluZyk7CiAg
ICAgQVNTRVJUKG1fdHJhbnNhY3Rpb25zLmlzRW1wdHkoKSk7CiAKQEAgLTMzNCwxMiArMzM0LDYg
QEAgdm9pZCBJREJEYXRhYmFzZTo6b25WZXJzaW9uQ2hhbmdlKGNvbnN0IFN0cmluZyYgdmVyc2lv
bikKICAgICBlbnF1ZXVlRXZlbnQoSURCVmVyc2lvbkNoYW5nZUV2ZW50OjpjcmVhdGUodmVyc2lv
biwgZXZlbnROYW1lcygpLnZlcnNpb25jaGFuZ2VFdmVudCkpOwogfQogCi12b2lkIElEQkRhdGFi
YXNlOjpyZWdpc3RlckZyb250ZW5kQ2FsbGJhY2tzKCkKLXsKLSAgICBBU1NFUlQobV9iYWNrZW5k
KTsKLSAgICBtX2JhY2tlbmQtPnJlZ2lzdGVyRnJvbnRlbmRDYWxsYmFja3MobV9kYXRhYmFzZUNh
bGxiYWNrcyk7Ci19Ci0KIHZvaWQgSURCRGF0YWJhc2U6OmVucXVldWVFdmVudChQYXNzUmVmUHRy
PEV2ZW50PiBldmVudCkKIHsKICAgICBBU1NFUlQoIW1fY29udGV4dFN0b3BwZWQpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmgKaW5kZXggMjdmMDNi
NmUzNTQ4YTgwMGY0MWEzZmFlNTg2MDE3OWM4N2ZkNzJjZC4uNjQ5OTI0YWI2NjJkOTk0NWM3OGUy
MzJlYmI0MzY5MDQ1NjkzMjUwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCRGF0YWJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJEYXRhYmFzZS5oCkBAIC01MSw3ICs1MSw3IEBAIHR5cGVkZWYgaW50IEV4Y2VwdGlv
bkNvZGU7CiAKIGNsYXNzIElEQkRhdGFiYXNlIDogcHVibGljIFJlZkNvdW50ZWQ8SURCRGF0YWJh
c2U+LCBwdWJsaWMgRXZlbnRUYXJnZXQsIHB1YmxpYyBBY3RpdmVET01PYmplY3QgewogcHVibGlj
OgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQkRhdGFiYXNlPiBjcmVhdGUoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPik7Cisg
ICAgc3RhdGljIFBhc3NSZWZQdHI8SURCRGF0YWJhc2U+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+LCBQYXNzUmVm
UHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPik7CiAgICAgfklEQkRhdGFiYXNlKCk7CiAKICAgICB2
b2lkIHRyYW5zYWN0aW9uQ3JlYXRlZChJREJUcmFuc2FjdGlvbiopOwpAQCAtODksNyArODksNiBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCkgY29uc3Q7CiAKICAgICB2b2lkIGZvcmNlQ2xvc2UoKTsKLSAgICB2b2lk
IHJlZ2lzdGVyRnJvbnRlbmRDYWxsYmFja3MoKTsKICAgICBjb25zdCBJREJEYXRhYmFzZU1ldGFk
YXRhIG1ldGFkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9tZXRhZGF0YTsgfQogICAgIHZvaWQgZW5x
dWV1ZUV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+KTsKICAgICBib29sIGRpc3BhdGNoRXZlbnQoUGFz
c1JlZlB0cjxFdmVudD4gZXZlbnQsIEV4Y2VwdGlvbkNvZGUmIGVjKSB7IHJldHVybiBFdmVudFRh
cmdldDo6ZGlzcGF0Y2hFdmVudChldmVudCwgZWMpOyB9CkBAIC05OSw3ICs5OCw3IEBAIHB1Ymxp
YzoKICAgICB1c2luZyBSZWZDb3VudGVkPElEQkRhdGFiYXNlPjo6ZGVyZWY7CiAKIHByaXZhdGU6
Ci0gICAgSURCRGF0YWJhc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURC
RGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPik7CisgICAgSURCRGF0YWJhc2UoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiwgUGFz
c1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4pOwogCiAgICAgLy8gRXZlbnRUYXJnZXQKICAg
ICB2aXJ0dWFsIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSB7IHJlZigpOyB9CkBAIC0xMjMsNyArMTIy
LDcgQEAgcHJpdmF0ZToKICAgICAvLyBkYXRhYmFzZSBzbyB0aGF0IHdlIGNhbiBjYW5jZWwgdGhl
bSBpZiB0aGUgZGF0YWJhc2UgY2xvc2VzLgogICAgIFZlY3RvcjxSZWZQdHI8RXZlbnQ+ID4gbV9l
bnF1ZXVlZEV2ZW50czsKIAotICAgIFJlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGw+IG1f
ZGF0YWJhc2VDYWxsYmFja3M7CisgICAgUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBtX2Rh
dGFiYXNlQ2FsbGJhY2tzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1w
bC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tl
bmRJbXBsLmNwcAppbmRleCA4MTEwYzI0YzEzYjNjNDYzZWUzN2IyMGQ0Y2ZmYTcxMjQyNDRiNjM5
Li43YWRmMDNhODViOTdiNGY0ZjYyMDRhNTVkY2EwMTBmZWQ0YTdkNDkyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tl
bmRJbXBsLmNwcApAQCAtNDEsMzcgKzQxLDQzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6UGVuZGluZ09wZW5DYWxsIDogcHVibGljIFJlZkNv
dW50ZWQ8UGVuZGluZ09wZW5DYWxsPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8
UGVuZGluZ09wZW5DYWxsPiBjcmVhdGUoUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNr
cykKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxQZW5kaW5nT3BlbkNhbGw+IGNyZWF0ZShQYXNzUmVm
UHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJh
Y2tzPiBkYXRhYmFzZUNhbGxiYWNrcykKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgUGVuZGluZ09wZW5DYWxsKGNhbGxiYWNrcykpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IFBlbmRpbmdPcGVuQ2FsbChjYWxsYmFja3MsIGRhdGFiYXNlQ2FsbGJhY2tzKSk7CiAgICAg
fQogICAgIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MoKSB7IHJldHVybiBtX2Nh
bGxiYWNrczsgfQorICAgIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IGRhdGFiYXNl
Q2FsbGJhY2tzKCkgeyByZXR1cm4gbV9kYXRhYmFzZUNhbGxiYWNrczsgfQogCiBwcml2YXRlOgot
ICAgIFBlbmRpbmdPcGVuQ2FsbChQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQor
ICAgIFBlbmRpbmdPcGVuQ2FsbChQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBQ
YXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBkYXRhYmFzZUNhbGxiYWNrcykKICAgICAg
ICAgOiBtX2NhbGxiYWNrcyhjYWxsYmFja3MpCisgICAgICAgICwgbV9kYXRhYmFzZUNhbGxiYWNr
cyhkYXRhYmFzZUNhbGxiYWNrcykKICAgICB7CiAgICAgfQogCiAgICAgUmVmUHRyPElEQkNhbGxi
YWNrcz4gbV9jYWxsYmFja3M7CisgICAgUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBtX2Rh
dGFiYXNlQ2FsbGJhY2tzOwogfTsKIAogY2xhc3MgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6UGVu
ZGluZ09wZW5XaXRoVmVyc2lvbkNhbGwgOiBwdWJsaWMgUmVmQ291bnRlZDxQZW5kaW5nT3Blbldp
dGhWZXJzaW9uQ2FsbD4gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBlbmRpbmdP
cGVuV2l0aFZlcnNpb25DYWxsPiBjcmVhdGUoUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxi
YWNrcywgaW50NjRfdCB2ZXJzaW9uKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBlbmRpbmdPcGVu
V2l0aFZlcnNpb25DYWxsPiBjcmVhdGUoUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNr
cywgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gZGF0YWJhc2VDYWxsYmFja3MsIGlu
dDY0X3QgdmVyc2lvbikKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgUGVuZGlu
Z09wZW5XaXRoVmVyc2lvbkNhbGwoY2FsbGJhY2tzLCB2ZXJzaW9uKSk7CisgICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgUGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGwoY2FsbGJhY2tzLCBkYXRh
YmFzZUNhbGxiYWNrcywgdmVyc2lvbikpOwogICAgIH0KICAgICBQYXNzUmVmUHRyPElEQkNhbGxi
YWNrcz4gY2FsbGJhY2tzKCkgeyByZXR1cm4gbV9jYWxsYmFja3M7IH0KKyAgICBQYXNzUmVmUHRy
PElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBkYXRhYmFzZUNhbGxiYWNrcygpIHsgcmV0dXJuIG1fZGF0
YWJhc2VDYWxsYmFja3M7IH0KICAgICBpbnQ2NF90IHZlcnNpb24oKSB7IHJldHVybiBtX3ZlcnNp
b247IH0KIAogcHJpdmF0ZToKLSAgICBQZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbChQYXNzUmVm
UHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBpbnQ2NF90IHZlcnNpb24pCisgICAgUGVuZGlu
Z09wZW5XaXRoVmVyc2lvbkNhbGwoUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywg
UGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gZGF0YWJhc2VDYWxsYmFja3MsIGludDY0
X3QgdmVyc2lvbikKICAgICAgICAgOiBtX2NhbGxiYWNrcyhjYWxsYmFja3MpCisgICAgICAgICwg
bV9kYXRhYmFzZUNhbGxiYWNrcyhkYXRhYmFzZUNhbGxiYWNrcykKICAgICAgICAgLCBtX3ZlcnNp
b24odmVyc2lvbikKICAgICB7CiAgICAgfQogICAgIFJlZlB0cjxJREJDYWxsYmFja3M+IG1fY2Fs
bGJhY2tzOworICAgIFJlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gbV9kYXRhYmFzZUNhbGxi
YWNrczsKICAgICBpbnQ2NF90IG1fdmVyc2lvbjsKIH07CiAKQEAgLTEzMCw3ICsxMzYsNiBAQCBJ
REJEYXRhYmFzZUJhY2tlbmRJbXBsOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsKGNvbnN0IFN0cmlu
ZyYgbmFtZSwgSURCQmFja2luZ1N0bwogICAgICwgbV9pZGVudGlmaWVyKHVuaXF1ZUlkZW50aWZp
ZXIpCiAgICAgLCBtX2ZhY3RvcnkoZmFjdG9yeSkKICAgICAsIG1fdHJhbnNhY3Rpb25Db29yZGlu
YXRvcihjb29yZGluYXRvcikKLSAgICAsIG1fcGVuZGluZ0Nvbm5lY3Rpb25Db3VudCgwKQogewog
ICAgIEFTU0VSVCghbV9uYW1lLmlzTnVsbCgpKTsKIH0KQEAgLTE0Myw2ICsxNDgsNyBAQCBib29s
IElEQkRhdGFiYXNlQmFja2VuZEltcGw6Om9wZW5JbnRlcm5hbCgpCiAgICAgICAgIGxvYWRPYmpl
Y3RTdG9yZXMoKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQorCiAgICAgcmV0dXJuIG1f
YmFja2luZ1N0b3JlLT5jcmVhdGVJREJEYXRhYmFzZU1ldGFEYXRhKG1fbmFtZSwgbV92ZXJzaW9u
LCBtX2ludFZlcnNpb24sIG1faWQpOwogfQogCkBAIC0yNDAsNiArMjQ2LDcgQEAgdm9pZCBJREJE
YXRhYmFzZUJhY2tlbmRJbXBsOjpzZXRWZXJzaW9uKGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgUGFz
c1JlZlB0cjxJREJDYWwKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBmb3IgKERhdGFiYXNl
Q2FsbGJhY2tzU2V0Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1fZGF0YWJhc2VDYWxsYmFja3NTZXQu
YmVnaW4oKTsgaXQgIT0gbV9kYXRhYmFzZUNhbGxiYWNrc1NldC5lbmQoKTsgKytpdCkgeworICAg
ICAgICAvLyBGcm9udCBlbmQgZW5zdXJlcyB0aGUgZXZlbnQgaXMgbm90IGZpcmVkIGF0IGNvbm5l
Y3Rpb25zIHRoYXQgaGF2ZSBjbG9zZVBlbmRpbmcgc2V0LgogICAgICAgICBpZiAoKml0ICE9IGRh
dGFiYXNlQ2FsbGJhY2tzKQogICAgICAgICAgICAgKCppdCktPm9uVmVyc2lvbkNoYW5nZSh2ZXJz
aW9uKTsKICAgICB9CkBAIC0zNDIsOSArMzQ5LDEwIEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5k
SW1wbDo6dHJhbnNhY3Rpb25GaW5pc2hlZEFuZENvbXBsZXRlRmlyZWQoUGFzc1JlZlB0cjxJREJU
CiAgICAgICAgIHByb2Nlc3NQZW5kaW5nQ2FsbHMoKTsKIH0KIAotaW50MzJfdCBJREJEYXRhYmFz
ZUJhY2tlbmRJbXBsOjpjb25uZWN0aW9uQ291bnQoKQorc2l6ZV90IElEQkRhdGFiYXNlQmFja2Vu
ZEltcGw6OmNvbm5lY3Rpb25Db3VudCgpCiB7Ci0gICAgcmV0dXJuIG1fZGF0YWJhc2VDYWxsYmFj
a3NTZXQuc2l6ZSgpICsgbV9wZW5kaW5nQ29ubmVjdGlvbkNvdW50OworICAgIC8vIFRoaXMgZG9l
cyBub3QgaW5jbHVkZSBwZW5kaW5nIG9wZW4gY2FsbHMsIGFzIHRob3NlIHNob3VsZCBub3QgYmxv
Y2sgdmVyc2lvbiBjaGFuZ2VzIGFuZCBkZWxldGVzLgorICAgIHJldHVybiBtX2RhdGFiYXNlQ2Fs
bGJhY2tzU2V0LnNpemUoKTsKIH0KIAogdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpwcm9j
ZXNzUGVuZGluZ0NhbGxzKCkKQEAgLTM1NSw3ICszNjMsNiBAQCB2b2lkIElEQkRhdGFiYXNlQmFj
a2VuZEltcGw6OnByb2Nlc3NQZW5kaW5nQ2FsbHMoKQogICAgICAgICBSZWZQdHI8UGVuZGluZ09w
ZW5XaXRoVmVyc2lvbkNhbGw+IHBlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxsID0gbV9wZW5kaW5n
U2Vjb25kSGFsZk9wZW5XaXRoVmVyc2lvbkNhbGxzLnRha2VGaXJzdCgpOwogICAgICAgICBBU1NF
UlQocGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGwtPnZlcnNpb24oKSA9PSBtX2ludFZlcnNpb24p
OwogICAgICAgICBBU1NFUlQobV9pZCAhPSBJbnZhbGlkSWQpOwotICAgICAgICArK21fcGVuZGlu
Z0Nvbm5lY3Rpb25Db3VudDsKICAgICAgICAgcGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGwtPmNh
bGxiYWNrcygpLT5vblN1Y2Nlc3ModGhpcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC00
MDAsNyArNDA3LDcgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpwcm9jZXNzUGVuZGlu
Z0NhbGxzKCkKICAgICBtX3BlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxscy5zd2FwKHBlbmRpbmdP
cGVuV2l0aFZlcnNpb25DYWxscyk7CiAgICAgd2hpbGUgKCFwZW5kaW5nT3BlbldpdGhWZXJzaW9u
Q2FsbHMuaXNFbXB0eSgpKSB7CiAgICAgICAgIFJlZlB0cjxQZW5kaW5nT3BlbldpdGhWZXJzaW9u
Q2FsbD4gcGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGwgPSBwZW5kaW5nT3BlbldpdGhWZXJzaW9u
Q2FsbHMudGFrZUZpcnN0KCk7Ci0gICAgICAgIG9wZW5Db25uZWN0aW9uV2l0aFZlcnNpb24ocGVu
ZGluZ09wZW5XaXRoVmVyc2lvbkNhbGwtPmNhbGxiYWNrcygpLCBwZW5kaW5nT3BlbldpdGhWZXJz
aW9uQ2FsbC0+dmVyc2lvbigpKTsKKyAgICAgICAgb3BlbkNvbm5lY3Rpb25XaXRoVmVyc2lvbihw
ZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbC0+Y2FsbGJhY2tzKCksIHBlbmRpbmdPcGVuV2l0aFZl
cnNpb25DYWxsLT5kYXRhYmFzZUNhbGxiYWNrcygpLCBwZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2Fs
bC0+dmVyc2lvbigpKTsKICAgICB9CiAKICAgICAvLyBHaXZlbiB0aGUgY2hlY2sgYWJvdmUsIGl0
IGFwcGVhcnMgdGhhdCBjYWxscyBjYW5ub3QgYmUgcmVxdWV1ZWQgYnkKQEAgLTQwOSw3ICs0MTYs
NyBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OnByb2Nlc3NQZW5kaW5nQ2FsbHMoKQog
ICAgIG1fcGVuZGluZ09wZW5DYWxscy5zd2FwKHBlbmRpbmdPcGVuQ2FsbHMpOwogICAgIHdoaWxl
ICghcGVuZGluZ09wZW5DYWxscy5pc0VtcHR5KCkpIHsKICAgICAgICAgUmVmUHRyPFBlbmRpbmdP
cGVuQ2FsbD4gcGVuZGluZ09wZW5DYWxsID0gcGVuZGluZ09wZW5DYWxscy50YWtlRmlyc3QoKTsK
LSAgICAgICAgb3BlbkNvbm5lY3Rpb24ocGVuZGluZ09wZW5DYWxsLT5jYWxsYmFja3MoKSk7Cisg
ICAgICAgIG9wZW5Db25uZWN0aW9uKHBlbmRpbmdPcGVuQ2FsbC0+Y2FsbGJhY2tzKCksIHBlbmRp
bmdPcGVuQ2FsbC0+ZGF0YWJhc2VDYWxsYmFja3MoKSk7CiAgICAgfQogICAgIEFTU0VSVChtX3Bl
bmRpbmdPcGVuQ2FsbHMuaXNFbXB0eSgpKTsKIH0KQEAgLTQyOCw0NCArNDM1LDMwIEBAIFBhc3NS
ZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiBJREJEYXRhYmFzZUJhY2tlbmRJ
bXBsOjp0cmFuc2FjdGlvbihECiAgICAgcmV0dXJuIHRyYW5zYWN0aW9uLnJlbGVhc2UoKTsKIH0K
IAotdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpyZWdpc3RlckZyb250ZW5kQ2FsbGJhY2tz
KFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IGNhbGxiYWNrcykKLXsKLSAgICBBU1NF
UlQobV9iYWNraW5nU3RvcmUuZ2V0KCkpOwotICAgIEFTU0VSVChtX3BlbmRpbmdDb25uZWN0aW9u
Q291bnQpOwotICAgIC0tbV9wZW5kaW5nQ29ubmVjdGlvbkNvdW50OwotICAgIG1fZGF0YWJhc2VD
YWxsYmFja3NTZXQuYWRkKFJlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4oY2FsbGJhY2tzKSk7
Ci0gICAgLy8gV2UgZ2l2ZSBtYXggcHJpb3JpdHkgdG8gb3BlbiBjYWxscyB0aGF0IGZvbGxvdyB1
cGdyYWRlbmVlZGVkCi0gICAgLy8gZXZlbnRzOyB0cmlnZ2VyIHRoZSByZXN0IG9mIHRoZSBxdWV1
ZXMgdG8gYmUgc2VydmljZWQgd2hlbiB0aG9zZSBvcGVuCi0gICAgLy8gY2FsbHMgYXJlIGZpbmlz
aGVkLgotICAgIHByb2Nlc3NQZW5kaW5nQ2FsbHMoKTsKLX0KLQotdm9pZCBJREJEYXRhYmFzZUJh
Y2tlbmRJbXBsOjpvcGVuQ29ubmVjdGlvbihQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJh
Y2tzKQordm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpvcGVuQ29ubmVjdGlvbihQYXNzUmVm
UHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJh
Y2tzPiBkYXRhYmFzZUNhbGxiYWNrcykKIHsKICAgICBBU1NFUlQobV9iYWNraW5nU3RvcmUuZ2V0
KCkpOwogICAgIGlmICghbV9wZW5kaW5nRGVsZXRlQ2FsbHMuaXNFbXB0eSgpIHx8IG1fcnVubmlu
Z1ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbiB8fCAhbV9wZW5kaW5nU2V0VmVyc2lvbkNhbGxzLmlz
RW1wdHkoKSkKLSAgICAgICAgbV9wZW5kaW5nT3BlbkNhbGxzLmFwcGVuZChQZW5kaW5nT3BlbkNh
bGw6OmNyZWF0ZShjYWxsYmFja3MpKTsKKyAgICAgICAgbV9wZW5kaW5nT3BlbkNhbGxzLmFwcGVu
ZChQZW5kaW5nT3BlbkNhbGw6OmNyZWF0ZShjYWxsYmFja3MsIGRhdGFiYXNlQ2FsbGJhY2tzKSk7
CiAgICAgZWxzZSB7CiAgICAgICAgIGlmIChtX2lkID09IEludmFsaWRJZCAmJiAhb3BlbkludGVy
bmFsKCkpCiAgICAgICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6
Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVTktOT1dOX0VSUiwgIkludGVybmFsIGVycm9y
LiIpKTsKICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICArK21fcGVuZGluZ0Nvbm5lY3Rpb25D
b3VudDsKKyAgICAgICAgICAgIG1fZGF0YWJhc2VDYWxsYmFja3NTZXQuYWRkKFJlZlB0cjxJREJE
YXRhYmFzZUNhbGxiYWNrcz4oZGF0YWJhc2VDYWxsYmFja3MpKTsKICAgICAgICAgICAgIGNhbGxi
YWNrcy0+b25TdWNjZXNzKHRoaXMpOwogICAgICAgICB9CiAgICAgfQogfQogCi12b2lkIElEQkRh
dGFiYXNlQmFja2VuZEltcGw6OnJ1bkludFZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbihpbnQ2NF90
IHJlcXVlc3RlZFZlcnNpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmFja3Mp
Cit2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OnJ1bkludFZlcnNpb25DaGFuZ2VUcmFuc2Fj
dGlvbihpbnQ2NF90IHJlcXVlc3RlZFZlcnNpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBw
cnBDYWxsYmFja3MsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IHBycERhdGFiYXNl
Q2FsbGJhY2tzKQogewogICAgIFJlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcyA9IHBycENh
bGxiYWNrczsKKyAgICBSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IGRhdGFiYXNlQ2FsbGJh
Y2tzID0gcHJwRGF0YWJhc2VDYWxsYmFja3M7CiAgICAgQVNTRVJUKGNhbGxiYWNrcyk7CiAgICAg
Zm9yIChEYXRhYmFzZUNhbGxiYWNrc1NldDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX2RhdGFiYXNl
Q2FsbGJhY2tzU2V0LmJlZ2luKCk7IGl0ICE9IG1fZGF0YWJhc2VDYWxsYmFja3NTZXQuZW5kKCk7
ICsraXQpIHsKLSAgICAgICAgLy8gTm90ZSB0aGF0IHNvbWUgY29ubmVjdGlvbnMgbWlnaHQgY2xv
c2UgaW4gdGhlIHZlcnNpb25jaGFuZ2UgZXZlbnQKLSAgICAgICAgLy8gaGFuZGxlciBmb3Igc29t
ZSBvdGhlciBjb25uZWN0aW9uLCBhZnRlciB3aGljaCBpdHMgb3duIHZlcnNpb25jaGFuZ2UKLSAg
ICAgICAgLy8gZXZlbnQgc2hvdWxkIG5vdCBiZSBmaXJlZC4gVGhlIGJhY2tlbmQgZG9lc24ndCB3
b3JyeSBhYm91dCB0aGlzLCB3ZQotICAgICAgICAvLyBqdXN0IHF1ZXVlIHVwIGEgdmVyc2lvbiBj
aGFuZ2UgZXZlbnQgZm9yIGV2ZXJ5IGNvbm5lY3Rpb24uIFRoZQotICAgICAgICAvLyBmcm9udGVu
ZCB0YWtlcyBjYXJlIHRvIG9ubHkgZGlzcGF0Y2ggdG8gb3BlbiBjb25uZWN0aW9ucy4KLSAgICAg
ICAgKCppdCktPm9uVmVyc2lvbkNoYW5nZShtX2ludFZlcnNpb24sIHJlcXVlc3RlZFZlcnNpb24p
OworICAgICAgICAvLyBGcm9udCBlbmQgZW5zdXJlcyB0aGUgZXZlbnQgaXMgbm90IGZpcmVkIGF0
IGNvbm5lY3Rpb25zIHRoYXQgaGF2ZSBjbG9zZVBlbmRpbmcgc2V0LgorICAgICAgICBpZiAoKml0
ICE9IGRhdGFiYXNlQ2FsbGJhY2tzKQorICAgICAgICAgICAgKCppdCktPm9uVmVyc2lvbkNoYW5n
ZShtX2ludFZlcnNpb24sIHJlcXVlc3RlZFZlcnNpb24pOwogICAgIH0KICAgICAvLyBUaGUgc3Bl
YyBkaWN0YXRlcyB3ZSB3YWl0IHVudGlsIGFsbCB0aGUgdmVyc2lvbiBjaGFuZ2UgZXZlbnRzIGFy
ZQogICAgIC8vIGRlbGl2ZXJlZCBhbmQgdGhlbiBjaGVjayBtX2RhdGFiYXNlQ2FsbGJhY2tzLmVt
cHR5KCkgYmVmb3JlIHByb2NlZWRpbmcKQEAgLTQ3NCwxMSArNDY3LDExIEBAIHZvaWQgSURCRGF0
YWJhc2VCYWNrZW5kSW1wbDo6cnVuSW50VmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKGludDY0X3Qg
cmVxdWVzdGVkVmVyCiAgICAgLy8gRklYTUU6IFJlbW92ZSB0aGUgY2FsbCB0byBvbkJsb2NrZWQg
YW5kIGluc3RlYWQgd2FpdCB1bnRpbCB0aGUgZnJvbnRlbmQKICAgICAvLyB0ZWxscyB1cyB0aGF0
IGFsbCB0aGUgYmxvY2tlZCBldmVudHMgaGF2ZSBiZWVuIGRlbGl2ZXJlZC4gU2VlCiAgICAgLy8g
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxMTMwCi0gICAgaWYgKGNv
bm5lY3Rpb25Db3VudCgpID4gMCkKKyAgICBpZiAoY29ubmVjdGlvbkNvdW50KCkpCiAgICAgICAg
IGNhbGxiYWNrcy0+b25CbG9ja2VkKG1faW50VmVyc2lvbik7CiAgICAgLy8gRklYTUU6IEFkZCB0
ZXN0IGZvciBtX3J1bm5pbmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24uCi0gICAgaWYgKG1fcnVu
bmluZ1ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbiB8fCBjb25uZWN0aW9uQ291bnQoKSA+IDApIHsK
LSAgICAgICAgbV9wZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbHMuYXBwZW5kKFBlbmRpbmdPcGVu
V2l0aFZlcnNpb25DYWxsOjpjcmVhdGUoY2FsbGJhY2tzLCByZXF1ZXN0ZWRWZXJzaW9uKSk7Cisg
ICAgaWYgKG1fcnVubmluZ1ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbiB8fCBjb25uZWN0aW9uQ291
bnQoKSA+IDEpIHsKKyAgICAgICAgbV9wZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbHMuYXBwZW5k
KFBlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxsOjpjcmVhdGUoY2FsbGJhY2tzLCBkYXRhYmFzZUNh
bGxiYWNrcywgcmVxdWVzdGVkVmVyc2lvbikpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBA
IC00OTcsMTQgKzQ5MCwxNiBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OnJ1bkludFZl
cnNpb25DaGFuZ2VUcmFuc2FjdGlvbihpbnQ2NF90IHJlcXVlc3RlZFZlcgogICAgICAgICBlYyA9
IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpUUkFOU0FDVElPTl9JTkFDVElWRV9FUlI7CiAgICAgfQog
ICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIW1fcGVuZGluZ1NlY29uZEhhbGZPcGVuV2l0aFZlcnNp
b25DYWxscy5zaXplKCksICJtX3BlbmRpbmdTZWNvbmRIYWxmT3BlbldpdGhWZXJzaW9uQ2FsbHMu
c2l6ZSA9ICV6dSIsIG1fcGVuZGluZ1NlY29uZEhhbGZPcGVuV2l0aFZlcnNpb25DYWxscy5zaXpl
KCkpOwotICAgIG1fcGVuZGluZ1NlY29uZEhhbGZPcGVuV2l0aFZlcnNpb25DYWxscy5hcHBlbmQo
UGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGw6OmNyZWF0ZShjYWxsYmFja3MsIHJlcXVlc3RlZFZl
cnNpb24pKTsKKyAgICBtX3BlbmRpbmdTZWNvbmRIYWxmT3BlbldpdGhWZXJzaW9uQ2FsbHMuYXBw
ZW5kKFBlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxsOjpjcmVhdGUoY2FsbGJhY2tzLCBkYXRhYmFz
ZUNhbGxiYWNrcywgcmVxdWVzdGVkVmVyc2lvbikpOworICAgIG1fZGF0YWJhc2VDYWxsYmFja3NT
ZXQuYWRkKGRhdGFiYXNlQ2FsbGJhY2tzKTsKIH0KIAotdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJ
bXBsOjpvcGVuQ29ubmVjdGlvbldpdGhWZXJzaW9uKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBw
cnBDYWxsYmFja3MsIGludDY0X3QgdmVyc2lvbikKK3ZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1w
bDo6b3BlbkNvbm5lY3Rpb25XaXRoVmVyc2lvbihQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gcHJw
Q2FsbGJhY2tzLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBwcnBEYXRhYmFzZUNh
bGxiYWNrcywgaW50NjRfdCB2ZXJzaW9uKQogewogICAgIFJlZlB0cjxJREJDYWxsYmFja3M+IGNh
bGxiYWNrcyA9IHBycENhbGxiYWNrczsKKyAgICBSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+
IGRhdGFiYXNlQ2FsbGJhY2tzID0gcHJwRGF0YWJhc2VDYWxsYmFja3M7CiAgICAgaWYgKCFtX3Bl
bmRpbmdEZWxldGVDYWxscy5pc0VtcHR5KCkgfHwgbV9ydW5uaW5nVmVyc2lvbkNoYW5nZVRyYW5z
YWN0aW9uIHx8ICFtX3BlbmRpbmdTZXRWZXJzaW9uQ2FsbHMuaXNFbXB0eSgpKSB7Ci0gICAgICAg
IG1fcGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGxzLmFwcGVuZChQZW5kaW5nT3BlbldpdGhWZXJz
aW9uQ2FsbDo6Y3JlYXRlKGNhbGxiYWNrcywgdmVyc2lvbikpOworICAgICAgICBtX3BlbmRpbmdP
cGVuV2l0aFZlcnNpb25DYWxscy5hcHBlbmQoUGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGw6OmNy
ZWF0ZShjYWxsYmFja3MsIGRhdGFiYXNlQ2FsbGJhY2tzLCB2ZXJzaW9uKSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAgICAgaWYgKG1faWQgPT0gSW52YWxpZElkKSB7CkBAIC01MTUsMTYgKzUx
MCwxOSBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6Om9wZW5Db25uZWN0aW9uV2l0aFZl
cnNpb24oUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KICAgICB9CisKKwogICAgIGlmICh2ZXJzaW9uID4gbV9pbnRWZXJzaW9uKSB7Ci0gICAg
ICAgIHJ1bkludFZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbih2ZXJzaW9uLCBjYWxsYmFja3MpOwor
ICAgICAgICBydW5JbnRWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24odmVyc2lvbiwgY2FsbGJhY2tz
LCBkYXRhYmFzZUNhbGxiYWNrcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKHZl
cnNpb24gPCBtX2ludFZlcnNpb24pIHsKICAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRh
dGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VkVSX0VSUiwgU3RyaW5n
Ojpmb3JtYXQoIlRoZSByZXF1ZXN0ZWQgdmVyc2lvbiAoJWxsZCkgaXMgbGVzcyB0aGFuIHRoZSBl
eGlzdGluZyB2ZXJzaW9uICglbGxkKS4iLCBzdGF0aWNfY2FzdDxsb25nIGxvbmc+KHZlcnNpb24p
LCBzdGF0aWNfY2FzdDxsb25nIGxvbmc+KG1faW50VmVyc2lvbikpKSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CisKICAgICBBU1NFUlQodmVyc2lvbiA9PSBtX2ludFZlcnNpb24pOwotICAgICsr
bV9wZW5kaW5nQ29ubmVjdGlvbkNvdW50OworICAgIG1fZGF0YWJhc2VDYWxsYmFja3NTZXQuYWRk
KGRhdGFiYXNlQ2FsbGJhY2tzKTsKICAgICBjYWxsYmFja3MtPm9uU3VjY2Vzcyh0aGlzKTsKIH0K
IApAQCAtNTM1LDE1ICs1MzMsMTQgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpkZWxl
dGVEYXRhYmFzZShQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJhY2sKICAgICAgICAg
cmV0dXJuOwogICAgIH0KICAgICBSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MgPSBwcnBD
YWxsYmFja3M7Ci0gICAgLy8gRklYTUU6IE9ubHkgZmlyZSBvblZlcnNpb25DaGFuZ2UgaWYgdGhl
cmUgdGhlIGNvbm5lY3Rpb24gaXNuJ3QgaW4KLSAgICAvLyB0aGUgcHJvY2VzcyBvZiBjbG9zaW5n
LgotICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTEyOQot
ICAgIGZvciAoRGF0YWJhc2VDYWxsYmFja3NTZXQ6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9kYXRh
YmFzZUNhbGxiYWNrc1NldC5iZWdpbigpOyBpdCAhPSBtX2RhdGFiYXNlQ2FsbGJhY2tzU2V0LmVu
ZCgpOyArK2l0KQorICAgIGZvciAoRGF0YWJhc2VDYWxsYmFja3NTZXQ6OmNvbnN0X2l0ZXJhdG9y
IGl0ID0gbV9kYXRhYmFzZUNhbGxiYWNrc1NldC5iZWdpbigpOyBpdCAhPSBtX2RhdGFiYXNlQ2Fs
bGJhY2tzU2V0LmVuZCgpOyArK2l0KSB7CisgICAgICAgIC8vIEZyb250IGVuZCBlbnN1cmVzIHRo
ZSBldmVudCBpcyBub3QgZmlyZWQgYXQgY29ubmVjdGlvbnMgdGhhdCBoYXZlIGNsb3NlUGVuZGlu
ZyBzZXQuCiAgICAgICAgICgqaXQpLT5vblZlcnNpb25DaGFuZ2UoIiIpOworICAgIH0KICAgICAv
LyBGSVhNRTogT25seSBmaXJlIG9uQmxvY2tlZCBpZiB0aGVyZSBhcmUgb3BlbiBjb25uZWN0aW9u
cyBhZnRlciB0aGUKICAgICAvLyBWZXJzaW9uQ2hhbmdlRXZlbnRzIGFyZSByZWNlaXZlZCwgbm90
IGp1c3Qgc2V0IHVwIHRvIGZpcmUuCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTcxMTMwCi0gICAgaWYgKGNvbm5lY3Rpb25Db3VudCgpID49IDEpIHsKKyAg
ICBpZiAoY29ubmVjdGlvbkNvdW50KCkpIHsKICAgICAgICAgbV9wZW5kaW5nRGVsZXRlQ2FsbHMu
YXBwZW5kKFBlbmRpbmdEZWxldGVDYWxsOjpjcmVhdGUoY2FsbGJhY2tzKSk7CiAgICAgICAgIGNh
bGxiYWNrcy0+b25CbG9ja2VkKCk7CiAgICAgICAgIHJldHVybjsKQEAgLTU2NCwyNCArNTYxLDMw
IEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6Y2xvc2UoUGFzc1JlZlB0cjxJREJEYXRh
YmFzZUNhbGxiYWNrcz4gcHJwQ2FsbGJhY2tzCiB7CiAgICAgUmVmUHRyPElEQkRhdGFiYXNlQ2Fs
bGJhY2tzPiBjYWxsYmFja3MgPSBwcnBDYWxsYmFja3M7CiAgICAgQVNTRVJUKG1fZGF0YWJhc2VD
YWxsYmFja3NTZXQuY29udGFpbnMoY2FsbGJhY2tzKSk7CisKICAgICBtX2RhdGFiYXNlQ2FsbGJh
Y2tzU2V0LnJlbW92ZShjYWxsYmFja3MpOwotICAgIGlmIChjb25uZWN0aW9uQ291bnQoKSA+IDEp
CisgICAgZm9yIChEZXF1ZTxSZWZQdHI8UGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGw+ID46Oml0
ZXJhdG9yIGl0ID0gbV9wZW5kaW5nU2Vjb25kSGFsZk9wZW5XaXRoVmVyc2lvbkNhbGxzLmJlZ2lu
KCk7IGl0ICE9IG1fcGVuZGluZ1NlY29uZEhhbGZPcGVuV2l0aFZlcnNpb25DYWxscy5lbmQoKTsg
KytpdCkgeworICAgICAgICBpZiAoKCppdCktPmRhdGFiYXNlQ2FsbGJhY2tzKCkgPT0gY2FsbGJh
Y2tzKSB7CisgICAgICAgICAgICAoKml0KS0+Y2FsbGJhY2tzKCktPm9uRXJyb3IoSURCRGF0YWJh
c2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJREJfQUJPUlRfRVJSLCAiVGhl
IGNvbm5lY3Rpb24gd2FzIGNsb3NlZCBkdXJpbmcgdXBncmFkZW5lZWRlZCBldmVudCBwcm9jZXNz
aW5nLiIpKTsKKyAgICAgICAgICAgIG1fcGVuZGluZ1NlY29uZEhhbGZPcGVuV2l0aFZlcnNpb25D
YWxscy5yZW1vdmUoaXQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisK
KyAgICBpZiAoY29ubmVjdGlvbkNvdW50KCkgPiAxIHx8IG1fcGVuZGluZ1NlY29uZEhhbGZPcGVu
V2l0aFZlcnNpb25DYWxscy5zaXplKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFRyYW5zYWN0
aW9uU2V0IHRyYW5zYWN0aW9ucyhtX3RyYW5zYWN0aW9ucyk7CiAgICAgcHJvY2Vzc1BlbmRpbmdD
YWxscygpOwogCi0gICAgQVNTRVJUKG1fdHJhbnNhY3Rpb25zLnNpemUoKSAtIHRyYW5zYWN0aW9u
cy5zaXplKCkgPD0gMSk7Ci0gICAgLy8gRklYTUU6IEluc3RlYWQgb2YgcmVseWluZyBvbiB0cmFu
c2FjdGlvbnMuc2l6ZSgpLCBtYWtlIGNvbm5lY3Rpb25Db3VudAotICAgIC8vIGF3YXJlIG9mIGlu
LWZsaWdodCB1cGdyYWRlbmVlZGVkIGV2ZW50cyBhcyB3ZWxsIGFzIGluLWZsaWdodCBzdWNjZXNz
Ci0gICAgLy8gZXZlbnRzLgotICAgIGlmICghY29ubmVjdGlvbkNvdW50KCkgJiYgIW1fcGVuZGlu
Z0RlbGV0ZUNhbGxzLnNpemUoKSAmJiBtX3RyYW5zYWN0aW9ucy5zaXplKCkgPT0gdHJhbnNhY3Rp
b25zLnNpemUoKSkgeworICAgIGlmICghY29ubmVjdGlvbkNvdW50KCkgJiYgIW1fcGVuZGluZ09w
ZW5DYWxscy5zaXplKCkgJiYgIW1fcGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGxzLnNpemUoKSAm
JiAhbV9wZW5kaW5nRGVsZXRlQ2FsbHMuc2l6ZSgpKSB7CisgICAgICAgIC8vIEZJWE1FOiBWZXJp
ZnkgdGhhdCB0aGUgZm9sbG93aW5nIGlzIHN0aWxsIG5lZWRlZCBldmVuIGlmIHRoZXJlIGFyZSBu
byBjb25uZWN0aW9ucyBvciBwZW5kaW5nIGFjdGl2aXR5OgorICAgICAgICBUcmFuc2FjdGlvblNl
dCB0cmFuc2FjdGlvbnMobV90cmFuc2FjdGlvbnMpOwogICAgICAgICBmb3IgKFRyYW5zYWN0aW9u
U2V0Ojpjb25zdF9pdGVyYXRvciBpdCA9IHRyYW5zYWN0aW9ucy5iZWdpbigpOyBpdCAhPSB0cmFu
c2FjdGlvbnMuZW5kKCk7ICsraXQpCiAgICAgICAgICAgICAoKml0KS0+YWJvcnQoKTsKLQogICAg
ICAgICBBU1NFUlQobV90cmFuc2FjdGlvbnMuaXNFbXB0eSgpKTsKIAogICAgICAgICBtX2JhY2tp
bmdTdG9yZS5jbGVhcigpOworCiAgICAgICAgIC8vIFRoaXMgY2hlY2sgc2hvdWxkIG9ubHkgYmUg
ZmFsc2UgaW4gdGVzdHMuCiAgICAgICAgIGlmIChtX2ZhY3RvcnkpCiAgICAgICAgICAgICBtX2Zh
Y3RvcnktPnJlbW92ZUlEQkRhdGFiYXNlQmFja2VuZChtX2lkZW50aWZpZXIpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1w
bC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5k
SW1wbC5oCmluZGV4IDdmMzFjYjA0ZWE0ZWRiZmNkNjcyMTdjMTljOGNhN2EyYzk3M2JlMTEuLjIy
Y2NjNDMyMjBiNTA0ZmU3MDY4NTY3YjU5YTQ3NjI1NWVlYTg1NGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBs
LmgKQEAgLTU1LDkgKzU1LDggQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBpbnQ2NF90IElu
dmFsaWRJZCA9IDA7CiAgICAgaW50NjRfdCBpZCgpIGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0KIAot
ICAgIHZvaWQgcmVnaXN0ZXJGcm9udGVuZENhbGxiYWNrcyhQYXNzUmVmUHRyPElEQkRhdGFiYXNl
Q2FsbGJhY2tzPik7Ci0gICAgdm9pZCBvcGVuQ29ubmVjdGlvbihQYXNzUmVmUHRyPElEQkNhbGxi
YWNrcz4pOwotICAgIHZvaWQgb3BlbkNvbm5lY3Rpb25XaXRoVmVyc2lvbihQYXNzUmVmUHRyPElE
QkNhbGxiYWNrcz4sIGludDY0X3QgdmVyc2lvbik7CisgICAgdm9pZCBvcGVuQ29ubmVjdGlvbihQ
YXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+
KTsKKyAgICB2b2lkIG9wZW5Db25uZWN0aW9uV2l0aFZlcnNpb24oUGFzc1JlZlB0cjxJREJDYWxs
YmFja3M+LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiwgaW50NjRfdCB2ZXJzaW9u
KTsKICAgICB2b2lkIGRlbGV0ZURhdGFiYXNlKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPik7CiAK
ICAgICAvLyBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UKQEAgLTc5LDkgKzc4LDkgQEAgcHJp
dmF0ZToKICAgICBJREJEYXRhYmFzZUJhY2tlbmRJbXBsKGNvbnN0IFN0cmluZyYgbmFtZSwgSURC
QmFja2luZ1N0b3JlKiBkYXRhYmFzZSwgSURCVHJhbnNhY3Rpb25Db29yZGluYXRvciosIElEQkZh
Y3RvcnlCYWNrZW5kSW1wbCosIGNvbnN0IFN0cmluZyYgdW5pcXVlSWRlbnRpZmllcik7CiAKICAg
ICBib29sIG9wZW5JbnRlcm5hbCgpOwotICAgIHZvaWQgcnVuSW50VmVyc2lvbkNoYW5nZVRyYW5z
YWN0aW9uKGludDY0X3QgcmVxdWVzdGVkVmVyc2lvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+
KTsKKyAgICB2b2lkIHJ1bkludFZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbihpbnQ2NF90IHJlcXVl
c3RlZFZlcnNpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgUGFzc1JlZlB0cjxJREJEYXRh
YmFzZUNhbGxiYWNrcz4pOwogICAgIHZvaWQgbG9hZE9iamVjdFN0b3JlcygpOwotICAgIGludDMy
X3QgY29ubmVjdGlvbkNvdW50KCk7CisgICAgc2l6ZV90IGNvbm5lY3Rpb25Db3VudCgpOwogICAg
IHZvaWQgcHJvY2Vzc1BlbmRpbmdDYWxscygpOwogCiAgICAgc3RhdGljIHZvaWQgY3JlYXRlT2Jq
ZWN0U3RvcmVJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJE
YXRhYmFzZUJhY2tlbmRJbXBsPiwgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBs
PiwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPik7CkBAIC0xMjcsMTAgKzEy
Niw2IEBAIHByaXZhdGU6CiAgICAgY2xhc3MgUGVuZGluZ0RlbGV0ZUNhbGw7CiAgICAgRGVxdWU8
UmVmUHRyPFBlbmRpbmdEZWxldGVDYWxsPiA+IG1fcGVuZGluZ0RlbGV0ZUNhbGxzOwogCi0gICAg
Ly8gRklYTUU6IEVsaW1pbmF0ZSB0aGUgbGltYm8gc3RhdGUgYmV0d2VlbiBvcGVuQ29ubmVjdGlv
bigpIGFuZCByZWdpc3RlckZyb250ZW5kQ2FsbGJhY2tzKCkKLSAgICAvLyB0aGF0IHRoaXMgY291
bnRlciB0cmFja3MuCi0gICAgaW50MzJfdCBtX3BlbmRpbmdDb25uZWN0aW9uQ291bnQ7Ci0KICAg
ICB0eXBlZGVmIExpc3RIYXNoU2V0PFJlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gPiBEYXRh
YmFzZUNhbGxiYWNrc1NldDsKICAgICBEYXRhYmFzZUNhbGxiYWNrc1NldCBtX2RhdGFiYXNlQ2Fs
bGJhY2tzU2V0OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmgKaW5kZXggMGY2YjM1ZDYw
OTM2NGRjYWNiYzE3MTQ2MzFmZDE2YzU5MWRjY2Q1NS4uZTRmYzBjYzhhNzJhYTk1OGUzMjczOTA4
NDQzNTVhMTkwNWVkNzcxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmgKQEAgLTYwLDgg
KzYwLDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRWZXJzaW9uKGNvbnN0IFN0cmlu
ZyYgdmVyc2lvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBQYXNzUmVmUHRyPElEQkRhdGFi
YXNlQ2FsbGJhY2tzPiwgRXhjZXB0aW9uQ29kZSYpID0gMDsKICAgICB2aXJ0dWFsIFBhc3NSZWZQ
dHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiB0cmFuc2FjdGlvbihET01TdHJpbmdM
aXN0KiBzdG9yZU5hbWVzLCB1bnNpZ25lZCBzaG9ydCBtb2RlLCBFeGNlcHRpb25Db2RlJikgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBjbG9zZShQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tz
PikgPSAwOwotCi0gICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyRnJvbnRlbmRDYWxsYmFja3MoUGFz
c1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4pID0gMDsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkRhdGFiYXNlQ2FsbGJhY2tzSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwuY3BwCmluZGV4IGY2NTY1ZGNhMWJkODIyZmU2
ZGMxMzU5NjhjM2IwZWRiOTk5NWEzYjguLjk3MGQzYTE2N2NhZjk5NmM3ZjAzMWZmNTRhNGYxNTky
NDlmMWFhMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkRhdGFiYXNlQ2FsbGJhY2tzSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsLmNwcApAQCAtMzIsMTMgKzMyLDEzIEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNr
c0ltcGw+IElEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbDo6Y3JlYXRlKElEQkRhdGFiYXNlKiBkYXRh
YmFzZSkKK1Bhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3NJbXBsPiBJREJEYXRhYmFzZUNh
bGxiYWNrc0ltcGw6OmNyZWF0ZSgpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJEYXRh
YmFzZUNhbGxiYWNrc0ltcGwoZGF0YWJhc2UpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IElE
QkRhdGFiYXNlQ2FsbGJhY2tzSW1wbCgpKTsKIH0KIAotSURCRGF0YWJhc2VDYWxsYmFja3NJbXBs
OjpJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwoSURCRGF0YWJhc2UqIGRhdGFiYXNlKQotICAgIDog
bV9kYXRhYmFzZShkYXRhYmFzZSkKK0lEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbDo6SURCRGF0YWJh
c2VDYWxsYmFja3NJbXBsKCkKKyAgICA6IG1fZGF0YWJhc2UoMCkKIHsKIH0KIApAQCAtNjQsMTAg
KzY0LDExIEBAIHZvaWQgSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsOjpvblZlcnNpb25DaGFuZ2Uo
aW50NjRfdCBvbGRWZXJzaW9uLCBpbnQ2NF90IG5ld1ZlCiAgICAgICAgIG1fZGF0YWJhc2UtPm9u
VmVyc2lvbkNoYW5nZShvbGRWZXJzaW9uLCBuZXdWZXJzaW9uKTsKIH0KIAotdm9pZCBJREJEYXRh
YmFzZUNhbGxiYWNrc0ltcGw6OnVucmVnaXN0ZXJEYXRhYmFzZShJREJEYXRhYmFzZSogZGF0YWJh
c2UpCit2b2lkIElEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbDo6Y29ubmVjdChJREJEYXRhYmFzZSog
ZGF0YWJhc2UpCiB7Ci0gICAgQVNTRVJUX1VOVVNFRChkYXRhYmFzZSwgZGF0YWJhc2UgPT0gbV9k
YXRhYmFzZSk7Ci0gICAgbV9kYXRhYmFzZSA9IDA7CisgICAgQVNTRVJUKCFtX2RhdGFiYXNlKTsK
KyAgICBBU1NFUlQoZGF0YWJhc2UpOworICAgIG1fZGF0YWJhc2UgPSBkYXRhYmFzZTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwuaAppbmRleCA3OTJiZTNh
ZDc2ZjU0ZjAzNTlkNmFmMTYwM2U1ZGQ5M2I5MWQ2YmExLi43NDk3MDcwMTBkYmY5NzcyNTExYjZk
NDczY2VhZDEwYjI4MjU3MjgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwuaApAQCAtMzgsMTggKzM4
LDIwIEBAIGNsYXNzIElEQkRhdGFiYXNlOwogCiBjbGFzcyBJREJEYXRhYmFzZUNhbGxiYWNrc0lt
cGwgOiBwdWJsaWMgSURCRGF0YWJhc2VDYWxsYmFja3MgewogcHVibGljOgotICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbD4gY3JlYXRlKElEQkRhdGFiYXNlKik7
CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3NJbXBsPiBjcmVhdGUo
KTsKICAgICB2aXJ0dWFsIH5JREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwoKTsKIAorICAgIC8vIElE
QkRhdGFiYXNlQ2FsbGJhY2tzCiAgICAgdmlydHVhbCB2b2lkIG9uRm9yY2VkQ2xvc2UoKTsKICAg
ICB2aXJ0dWFsIHZvaWQgb25WZXJzaW9uQ2hhbmdlKGNvbnN0IFN0cmluZyYgdmVyc2lvbik7CiAg
ICAgdmlydHVhbCB2b2lkIG9uVmVyc2lvbkNoYW5nZShpbnQ2NF90IG9sZFZlcnNpb24sIGludDY0
X3QgbmV3VmVyc2lvbik7Ci0gICAgdm9pZCB1bnJlZ2lzdGVyRGF0YWJhc2UoSURCRGF0YWJhc2Uq
KTsKKworICAgIHZvaWQgY29ubmVjdChJREJEYXRhYmFzZSopOwogCiBwcml2YXRlOgotICAgIElE
QkRhdGFiYXNlQ2FsbGJhY2tzSW1wbChJREJEYXRhYmFzZSopOworICAgIElEQkRhdGFiYXNlQ2Fs
bGJhY2tzSW1wbCgpOwogCi0gICAgLy8gbV9kYXRhYmFzZSBoYXMgYSBSZWZQdHIgdG8gdGhpcywg
c28gdXNlIGEgd2VhayBwb2ludGVyIHRvIGF2b2lkIGEgY3ljbGUuCisgICAgLy8gVGhlIGluaXRp
YWwgSURCT3BlbkRCUmVxdWVzdCBvciBmaW5hbCBJREJEYXRhYmFzZSBtYWludGFpbnMgYSBSZWZQ
dHIgdG8gdGhpcwogICAgIElEQkRhdGFiYXNlKiBtX2RhdGFiYXNlOwogfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcAppbmRleCBjODNiYTM2
NDVkYmY2ZDM5ODNjOWNjYTdkN2IzN2FiMTUwNzcyYjI3Li5jZGQ0OTliY2Q3NzZhNjQyNTRjMWJh
N2ZlNzAyNmE1MjQ5MDFjOWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJGYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJGYWN0b3J5LmNwcApAQCAtMTE0LDggKzExNCw5IEBAIFBhc3NSZWZQdHI8SURCT3Bl
bkRCUmVxdWVzdD4gSURCRmFjdG9yeTo6b3BlbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0LCBjCiAgICAgaWYgKCFpc0NvbnRleHRWYWxpZChjb250ZXh0KSkKICAgICAgICAgcmV0dXJu
IDA7CiAKLSAgICBSZWZQdHI8SURCT3BlbkRCUmVxdWVzdD4gcmVxdWVzdCA9IElEQk9wZW5EQlJl
cXVlc3Q6OmNyZWF0ZShjb250ZXh0LCBJREJBbnk6OmNyZWF0ZSh0aGlzKSwgdmVyc2lvbik7Ci0g
ICAgbV9iYWNrZW5kLT5vcGVuKG5hbWUsIHZlcnNpb24sIHJlcXVlc3QsIGNvbnRleHQtPnNlY3Vy
aXR5T3JpZ2luKCksIGNvbnRleHQsIGdldEluZGV4ZWREQkRhdGFiYXNlUGF0aChjb250ZXh0KSk7
CisgICAgUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbD4gZGF0YWJhc2VDYWxsYmFja3Mg
PSBJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGw6OmNyZWF0ZSgpOworICAgIFJlZlB0cjxJREJPcGVu
REJSZXF1ZXN0PiByZXF1ZXN0ID0gSURCT3BlbkRCUmVxdWVzdDo6Y3JlYXRlKGNvbnRleHQsIElE
QkFueTo6Y3JlYXRlKHRoaXMpLCBkYXRhYmFzZUNhbGxiYWNrcywgdmVyc2lvbik7CisgICAgbV9i
YWNrZW5kLT5vcGVuKG5hbWUsIHZlcnNpb24sIHJlcXVlc3QsIGRhdGFiYXNlQ2FsbGJhY2tzLCBj
b250ZXh0LT5zZWN1cml0eU9yaWdpbigpLCBjb250ZXh0LCBnZXRJbmRleGVkREJEYXRhYmFzZVBh
dGgoY29udGV4dCkpOwogICAgIHJldHVybiByZXF1ZXN0OwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5QmFja2VuZEltcGwuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJbXBsLmNw
cAppbmRleCA4ZGE1YzAyZTQyM2Y2ZjY0ZTU3OTczMGRiNzNmYTI5ZWMyYmU0NjA2Li5jN2VmODYw
ZTEzZTJkMTgxNzlhZTVlY2MwYzc1OTcwOWI4ODQzZGU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5QmFja2VuZEltcGwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5jcHAK
QEAgLTE1MCw3ICsxNTAsNyBAQCBQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZT4gSURCRmFjdG9y
eUJhY2tlbmRJbXBsOjpvcGVuQmFja2luZ1N0b3JlKFBhc3NSZWZQdHI8UwogICAgIHJldHVybiAw
OwogfQogCi12b2lkIElEQkZhY3RvcnlCYWNrZW5kSW1wbDo6b3Blbihjb25zdCBTdHJpbmcmIG5h
bWUsIGludDY0X3QgdmVyc2lvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywg
UGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gcHJwU2VjdXJpdHlPcmlnaW4sIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIGRhdGFEaXJlY3RvcnkpCit2b2lkIElEQkZhY3Rv
cnlCYWNrZW5kSW1wbDo6b3Blbihjb25zdCBTdHJpbmcmIG5hbWUsIGludDY0X3QgdmVyc2lvbiwg
UGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgUGFzc1JlZlB0cjxJREJEYXRhYmFz
ZUNhbGxiYWNrcz4gZGF0YWJhc2VDYWxsYmFja3MsIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+
IHBycFNlY3VyaXR5T3JpZ2luLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5n
JiBkYXRhRGlyZWN0b3J5KQogewogICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlP
cmlnaW4gPSBwcnBTZWN1cml0eU9yaWdpbjsKICAgICBjb25zdCBTdHJpbmcgdW5pcXVlSWRlbnRp
ZmllciA9IGNvbXB1dGVVbmlxdWVJZGVudGlmaWVyKG5hbWUsIHNlY3VyaXR5T3JpZ2luLmdldCgp
KTsKQEAgLTE3NSw5ICsxNzUsOSBAQCB2b2lkIElEQkZhY3RvcnlCYWNrZW5kSW1wbDo6b3Blbihj
b25zdCBTdHJpbmcmIG5hbWUsIGludDY0X3QgdmVyc2lvbiwgUGFzc1JlZlB0cgogICAgICAgICBk
YXRhYmFzZUJhY2tlbmQgPSBpdC0+c2Vjb25kOwogCiAgICAgaWYgKHZlcnNpb24gPT0gSURCRGF0
YWJhc2VNZXRhZGF0YTo6Tm9JbnRWZXJzaW9uKQotICAgICAgICBkYXRhYmFzZUJhY2tlbmQtPm9w
ZW5Db25uZWN0aW9uKGNhbGxiYWNrcyk7CisgICAgICAgIGRhdGFiYXNlQmFja2VuZC0+b3BlbkNv
bm5lY3Rpb24oY2FsbGJhY2tzLCBkYXRhYmFzZUNhbGxiYWNrcyk7CiAgICAgZWxzZQotICAgICAg
ICBkYXRhYmFzZUJhY2tlbmQtPm9wZW5Db25uZWN0aW9uV2l0aFZlcnNpb24oY2FsbGJhY2tzLCB2
ZXJzaW9uKTsKKyAgICAgICAgZGF0YWJhc2VCYWNrZW5kLT5vcGVuQ29ubmVjdGlvbldpdGhWZXJz
aW9uKGNhbGxiYWNrcywgZGF0YWJhc2VDYWxsYmFja3MsIHZlcnNpb24pOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJGYWN0b3J5QmFja2VuZEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5oCmluZGV4IGNhZDNiNWEyNGIyOTlhOTI5OWMy
YWQyOTRlM2IyZWEwNGNmZDcyYTUuLjNhZTA3MDMxMGRhZTg3NjQzNTk2Y2E5YjI5OTNjMzNhNDY3
MGIxYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZh
Y3RvcnlCYWNrZW5kSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5oCkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgcmVtb3ZlSURCQmFja2luZ1N0b3JlKGNvbnN0IFN0cmluZyYgZmlsZUlkZW50
aWZpZXIpOwogCiAgICAgdmlydHVhbCB2b2lkIGdldERhdGFiYXNlTmFtZXMoUGFzc1JlZlB0cjxJ
REJDYWxsYmFja3M+LCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiwgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIGNvbnN0IFN0cmluZyYgZGF0YURpcik7Ci0gICAgdmlydHVhbCB2b2lkIG9wZW4o
Y29uc3QgU3RyaW5nJiBuYW1lLCBpbnQ2NF90IHZlcnNpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJh
Y2tzPiwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBjb25zdCBTdHJpbmcmIGRhdGFEaXIpOworICAgIHZpcnR1YWwgdm9pZCBvcGVuKGNvbnN0IFN0
cmluZyYgbmFtZSwgaW50NjRfdCB2ZXJzaW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIFBh
c3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+LCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2lu
PiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgZGF0YURpcik7CiAgICAg
dmlydHVhbCB2b2lkIGRlbGV0ZURhdGFiYXNlKGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0
cjxJREJDYWxsYmFja3M+LCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiwgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgZGF0YURpcik7CiAKIHByb3RlY3RlZDoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnlCYWNrZW5k
SW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5
QmFja2VuZEludGVyZmFjZS5oCmluZGV4IDRlYTVkOGEzMzBmZDA0MWFmNTFjYjJhOTU0NGVhNDhh
Y2Y2NjZmZWYuLjBhYTNiYTJiNzgwZDA3OTc2NjNmNjBmNTgyM2ExZGIyY2FjNjg4M2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnlCYWNrZW5k
SW50ZXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFj
dG9yeUJhY2tlbmRJbnRlcmZhY2UuaApAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB+SURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2UoKSB7IH0KIAogICAgIHZpcnR1YWwgdm9p
ZCBnZXREYXRhYmFzZU5hbWVzKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgUGFzc1JlZlB0cjxT
ZWN1cml0eU9yaWdpbj4sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIGRh
dGFEaXIpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgb3Blbihjb25zdCBTdHJpbmcmIG5hbWUsIGlu
dDY0X3QgdmVyc2lvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBQYXNzUmVmUHRyPFNlY3Vy
aXR5T3JpZ2luPiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgZGF0YURp
cikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBvcGVuKGNvbnN0IFN0cmluZyYgbmFtZSwgaW50NjRf
dCB2ZXJzaW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8SURCRGF0YWJh
c2VDYWxsYmFja3M+LCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiwgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIGNvbnN0IFN0cmluZyYgZGF0YURpcikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBk
ZWxldGVEYXRhYmFzZShjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tz
PiwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBj
b25zdCBTdHJpbmcmIGRhdGFEaXIpID0gMDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9wZW5EQlJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT3BlbkRCUmVxdWVzdC5jcHAKaW5kZXggZTg5YTc0Y2Zk
OWJmYjdmZjc2M2JhNmVlMjVmZDIyYmNmMjQ2OTUwYS4uYmM1YzNhZGE1OGFjZDBlMjFkMWI0MjYz
NGM1ZjU5YjgwZTI5MDVjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCT3BlbkRCUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCT3BlbkRCUmVxdWVzdC5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBFTkFC
TEUoSU5ERVhFRF9EQVRBQkFTRSkKIAogI2luY2x1ZGUgIklEQkRhdGFiYXNlLmgiCisjaW5jbHVk
ZSAiSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsLmgiCiAjaW5jbHVkZSAiSURCUGVuZGluZ1RyYW5z
YWN0aW9uTW9uaXRvci5oIgogI2luY2x1ZGUgIklEQlRyYWNpbmcuaCIKICNpbmNsdWRlICJJREJV
cGdyYWRlTmVlZGVkRXZlbnQuaCIKQEAgLTM2LDE1ICszNywxNiBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLVBhc3NSZWZQdHI8SURCT3BlbkRCUmVxdWVzdD4gSURCT3BlbkRCUmVxdWVzdDo6
Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8SURCQW55
PiBzb3VyY2UsIGludDY0X3QgdmVyc2lvbikKK1Bhc3NSZWZQdHI8SURCT3BlbkRCUmVxdWVzdD4g
SURCT3BlbkRCUmVxdWVzdDo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQs
IFBhc3NSZWZQdHI8SURCQW55PiBzb3VyY2UsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFj
a3NJbXBsPiBjYWxsYmFja3MsIGludDY0X3QgdmVyc2lvbikKIHsKLSAgICBSZWZQdHI8SURCT3Bl
bkRCUmVxdWVzdD4gcmVxdWVzdChhZG9wdFJlZihuZXcgSURCT3BlbkRCUmVxdWVzdChjb250ZXh0
LCBzb3VyY2UsIHZlcnNpb24pKSk7CisgICAgUmVmUHRyPElEQk9wZW5EQlJlcXVlc3Q+IHJlcXVl
c3QoYWRvcHRSZWYobmV3IElEQk9wZW5EQlJlcXVlc3QoY29udGV4dCwgc291cmNlLCBjYWxsYmFj
a3MsIHZlcnNpb24pKSk7CiAgICAgcmVxdWVzdC0+c3VzcGVuZElmTmVlZGVkKCk7CiAgICAgcmV0
dXJuIHJlcXVlc3QucmVsZWFzZSgpOwogfQogCi1JREJPcGVuREJSZXF1ZXN0OjpJREJPcGVuREJS
ZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8SURCQW55
PiBzb3VyY2UsIGludDY0X3QgdmVyc2lvbikKK0lEQk9wZW5EQlJlcXVlc3Q6OklEQk9wZW5EQlJl
cXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJREJBbnk+
IHNvdXJjZSwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGw+IGNhbGxiYWNrcywg
aW50NjRfdCB2ZXJzaW9uKQogICAgIDogSURCUmVxdWVzdChjb250ZXh0LCBzb3VyY2UsIElEQlRy
YW5zYWN0aW9uQmFja2VuZEludGVyZmFjZTo6Tm9ybWFsVGFzaywgMCkKKyAgICAsIG1fZGF0YWJh
c2VDYWxsYmFja3MoY2FsbGJhY2tzKQogICAgICwgbV92ZXJzaW9uKHZlcnNpb24pCiB7CiAgICAg
QVNTRVJUKCFtX3Jlc3VsdCk7CkBAIC03Miw5ICs3NCwxMyBAQCB2b2lkIElEQk9wZW5EQlJlcXVl
c3Q6Om9uVXBncmFkZU5lZWRlZChpbnQ2NF90IG9sZFZlcnNpb24sIFBhc3NSZWZQdHI8SURCVHJh
bnNhYwogICAgIGlmICghc2hvdWxkRW5xdWV1ZUV2ZW50KCkpCiAgICAgICAgIHJldHVybjsKIAor
ICAgIEFTU0VSVChtX2RhdGFiYXNlQ2FsbGJhY2tzKTsKKwogICAgIFJlZlB0cjxJREJEYXRhYmFz
ZUJhY2tlbmRJbnRlcmZhY2U+IGRhdGFiYXNlQmFja2VuZCA9IHBycERhdGFiYXNlQmFja2VuZDsK
ICAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiB0cmFuc2FjdGlvbkJh
Y2tlbmQgPSBwcnBUcmFuc2FjdGlvbkJhY2tlbmQ7Ci0gICAgUmVmUHRyPElEQkRhdGFiYXNlPiBp
ZGJEYXRhYmFzZSA9IElEQkRhdGFiYXNlOjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
LCBkYXRhYmFzZUJhY2tlbmQpOworICAgIFJlZlB0cjxJREJEYXRhYmFzZT4gaWRiRGF0YWJhc2Ug
PSBJREJEYXRhYmFzZTo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgZGF0YWJhc2VC
YWNrZW5kLCBtX2RhdGFiYXNlQ2FsbGJhY2tzKTsKKyAgICBtX2RhdGFiYXNlQ2FsbGJhY2tzLT5j
b25uZWN0KGlkYkRhdGFiYXNlLmdldCgpKTsKKyAgICBtX2RhdGFiYXNlQ2FsbGJhY2tzID0gMDsK
IAogICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbj4gZnJvbnRlbmQgPSBJREJUcmFuc2FjdGlvbjo6
Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgdHJhbnNhY3Rpb25CYWNrZW5kLCBJREJU
cmFuc2FjdGlvbjo6VkVSU0lPTl9DSEFOR0UsIGlkYkRhdGFiYXNlLmdldCgpLCB0aGlzKTsKICAg
ICB0cmFuc2FjdGlvbkJhY2tlbmQtPnNldENhbGxiYWNrcyhmcm9udGVuZC5nZXQoKSk7CkBAIC05
OCwxMSArMTA0LDE0IEBAIHZvaWQgSURCT3BlbkRCUmVxdWVzdDo6b25TdWNjZXNzKFBhc3NSZWZQ
dHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiBiYWNrZW5kCiAgICAgaWYgKG1fcmVzdWx0
KSB7CiAgICAgICAgIGlkYkRhdGFiYXNlID0gbV9yZXN1bHQtPmlkYkRhdGFiYXNlKCk7CiAgICAg
ICAgIEFTU0VSVChpZGJEYXRhYmFzZSk7CisgICAgICAgIEFTU0VSVCghbV9kYXRhYmFzZUNhbGxi
YWNrcyk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgaWRiRGF0YWJhc2UgPSBJREJEYXRhYmFzZTo6
Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgYmFja2VuZCk7CisgICAgICAgIEFTU0VS
VChtX2RhdGFiYXNlQ2FsbGJhY2tzKTsKKyAgICAgICAgaWRiRGF0YWJhc2UgPSBJREJEYXRhYmFz
ZTo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgYmFja2VuZCwgbV9kYXRhYmFzZUNh
bGxiYWNrcyk7CisgICAgICAgIG1fZGF0YWJhc2VDYWxsYmFja3MtPmNvbm5lY3QoaWRiRGF0YWJh
c2UuZ2V0KCkpOworICAgICAgICBtX2RhdGFiYXNlQ2FsbGJhY2tzID0gMDsKICAgICAgICAgbV9y
ZXN1bHQgPSBJREJBbnk6OmNyZWF0ZShpZGJEYXRhYmFzZS5nZXQoKSk7CiAgICAgfQotICAgIGlk
YkRhdGFiYXNlLT5yZWdpc3RlckZyb250ZW5kQ2FsbGJhY2tzKCk7CiAgICAgZW5xdWV1ZUV2ZW50
KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLnN1Y2Nlc3NFdmVudCwgZmFsc2UsIGZhbHNlKSk7
CiB9CiAKQEAgLTExNiw3ICsxMjUsNiBAQCBib29sIElEQk9wZW5EQlJlcXVlc3Q6OnNob3VsZEVu
cXVldWVFdmVudCgpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLQogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQk9wZW5EQlJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQk9wZW5EQlJlcXVlc3QuaAppbmRleCBjODdkYjdlZDFiZGQyZDQwNTNlNzRjMTAy
YTJlYzZkNjk1OTcyZTNmLi4xZTg0YjU0YzlkYTUwN2FmNTUxOWM4MDg4OTg0NmQ0MmVmZGVkNDlm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPcGVuREJS
ZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT3BlbkRC
UmVxdWVzdC5oCkBAIC0zMiw5ICszMiwxMSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2Ns
YXNzIElEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbDsKKwogY2xhc3MgSURCT3BlbkRCUmVxdWVzdCA6
IHB1YmxpYyBJREJSZXF1ZXN0IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJP
cGVuREJSZXF1ZXN0PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8
SURCQW55PiBzb3VyY2UsIGludDY0X3QgdmVyc2lvbik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8
SURCT3BlbkRCUmVxdWVzdD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVm
UHRyPElEQkFueT4gc291cmNlLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbD4s
IGludDY0X3QgdmVyc2lvbik7CiAgICAgdmlydHVhbCB+SURCT3BlbkRCUmVxdWVzdCgpOwogCiAg
ICAgdXNpbmcgSURCUmVxdWVzdDo6b25TdWNjZXNzOwpAQCAtNTMsOCArNTUsOSBAQCBwcm90ZWN0
ZWQ6CiAgICAgdmlydHVhbCBib29sIHNob3VsZEVucXVldWVFdmVudCgpIGNvbnN0IE9WRVJSSURF
OwogCiBwcml2YXRlOgotICAgIElEQk9wZW5EQlJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIFBhc3NSZWZQdHI8SURCQW55PiBzb3VyY2UsIGludDY0X3QgdmVyc2lvbik7CisgICAgSURC
T3BlbkRCUmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJBbnk+
IHNvdXJjZSwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGw+LCBpbnQ2NF90IHZl
cnNpb24pOwogCisgICAgUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbD4gbV9kYXRhYmFz
ZUNhbGxiYWNrczsKICAgICBpbnQ2NF90IG1fdmVyc2lvbjsKIH07CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcAppbmRleCAyMWU1
ZjMyOGUzNDU1Mzg5Y2UwODU2NjIwNzBlZWVhMTQ2NTVmNjI4Li5lMWUwNWYxZjI4ODY4ZGIyZDI4
OWYyZWYwNWNlYjQyZjUyNTBlY2NkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCkBAIC0yOTQsMTIgKzI5NCwxMCBAQCB2b2lk
IElEQlRyYW5zYWN0aW9uOjpvbkFib3J0KCkKICAgICB9CiAgICAgbV9vYmplY3RTdG9yZUNsZWFu
dXBNYXAuY2xlYXIoKTsKICAgICBjbG9zZU9wZW5DdXJzb3JzKCk7Ci0gICAgbV9kYXRhYmFzZS0+
dHJhbnNhY3Rpb25GaW5pc2hlZCh0aGlzKTsKLQotICAgIGlmIChtX2NvbnRleHRTdG9wcGVkIHx8
ICFzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCi0gICAgICAgIHJldHVybjsKIAorICAgIC8vIEVu
cXVldWUgZXZlbnRzIGJlZm9yZSBub3RpZnlpbmcgZGF0YWJhc2UsIGFzIGRhdGFiYXNlIG1heSBj
bG9zZSB3aGljaCBlbnF1ZXVlcyBtb3JlIGV2ZW50cyBhbmQgb3JkZXIgbWF0dGVycy4KICAgICBl
bnF1ZXVlRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuYWJvcnRFdmVudCwgdHJ1ZSwg
ZmFsc2UpKTsKKyAgICBtX2RhdGFiYXNlLT50cmFuc2FjdGlvbkZpbmlzaGVkKHRoaXMpOwogfQog
CiB2b2lkIElEQlRyYW5zYWN0aW9uOjpvbkNvbXBsZXRlKCkKQEAgLTMwOSwxMiArMzA3LDEwIEBA
IHZvaWQgSURCVHJhbnNhY3Rpb246Om9uQ29tcGxldGUoKQogICAgIG1fc3RhdGUgPSBGaW5pc2hp
bmc7CiAgICAgbV9vYmplY3RTdG9yZUNsZWFudXBNYXAuY2xlYXIoKTsKICAgICBjbG9zZU9wZW5D
dXJzb3JzKCk7Ci0gICAgbV9kYXRhYmFzZS0+dHJhbnNhY3Rpb25GaW5pc2hlZCh0aGlzKTsKLQot
ICAgIGlmIChtX2NvbnRleHRTdG9wcGVkIHx8ICFzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCi0g
ICAgICAgIHJldHVybjsKIAorICAgIC8vIEVucXVldWUgZXZlbnRzIGJlZm9yZSBub3RpZnlpbmcg
ZGF0YWJhc2UsIGFzIGRhdGFiYXNlIG1heSBjbG9zZSB3aGljaCBlbnF1ZXVlcyBtb3JlIGV2ZW50
cyBhbmQgb3JkZXIgbWF0dGVycy4KICAgICBlbnF1ZXVlRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVu
dE5hbWVzKCkuY29tcGxldGVFdmVudCwgZmFsc2UsIGZhbHNlKSk7CisgICAgbV9kYXRhYmFzZS0+
dHJhbnNhY3Rpb25GaW5pc2hlZCh0aGlzKTsKIH0KIAogYm9vbCBJREJUcmFuc2FjdGlvbjo6aGFz
UGVuZGluZ0FjdGl2aXR5KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwCmluZGV4IDMzYjIxYjRmZGQxMmMxOTkyNWY0
NWMzMzNhZWE3MDQ3MzdlYzZmODEuLmI0OTJlYzUyMDE5MjAxMzNmZjA3N2UxM2RhNjE4YjZkZjY0
YmYyZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRl
eGVkREJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvcklu
ZGV4ZWREQkFnZW50LmNwcApAQCAtMTg2LDM1ICsxODYsMzUgQEAgcHJpdmF0ZToKICAgICBTdHJp
bmcgbV9zZWN1cml0eU9yaWdpbjsKIH07CiAKLWNsYXNzIEV4ZWN1dGFibGVXaXRoRGF0YWJhc2Ug
OiBwdWJsaWMgUmVmQ291bnRlZDxFeGVjdXRhYmxlV2l0aERhdGFiYXNlPiB7Ci1wdWJsaWM6Ci0g
ICAgdmlydHVhbCB+RXhlY3V0YWJsZVdpdGhEYXRhYmFzZSgpIHsgfTsKLSAgICB2b2lkIHN0YXJ0
KElEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlKiwgU2VjdXJpdHlPcmlnaW4qLCBTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUpOwotICAgIHZpcnR1YWwg
dm9pZCBleGVjdXRlKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPikgPSAw
OwotfTsKLQogY2xhc3MgRGF0YWJhc2VDb25uZWN0aW9uIHsKIHB1YmxpYzoKICAgICBEYXRhYmFz
ZUNvbm5lY3Rpb24oKQogICAgICAgICA6IG1faWRiRGF0YWJhc2VDYWxsYmFja3MoSW5zcGVjdG9y
SURCRGF0YWJhc2VDYWxsYmFja3M6OmNyZWF0ZSgpKSB7IH0KIAotICAgIHZvaWQgY29ubmVjdChQ
YXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4gaWRiRGF0YWJhc2UpCi0gICAg
ewotICAgICAgICBtX2lkYkRhdGFiYXNlID0gaWRiRGF0YWJhc2U7Ci0gICAgICAgIG1faWRiRGF0
YWJhc2UtPnJlZ2lzdGVyRnJvbnRlbmRDYWxsYmFja3MobV9pZGJEYXRhYmFzZUNhbGxiYWNrcyk7
Ci0gICAgfQotCiAgICAgfkRhdGFiYXNlQ29ubmVjdGlvbigpCiAgICAgewogICAgICAgICBpZiAo
bV9pZGJEYXRhYmFzZSkKICAgICAgICAgICAgIG1faWRiRGF0YWJhc2UtPmNsb3NlKG1faWRiRGF0
YWJhc2VDYWxsYmFja3MpOwogICAgIH0KIAorICAgIHZvaWQgY29ubmVjdChQYXNzUmVmUHRyPElE
QkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4gZGF0YWJhc2UpIHsgbV9pZGJEYXRhYmFzZSA9IGRh
dGFiYXNlOyB9CisgICAgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gY2FsbGJhY2tz
KCkgeyByZXR1cm4gbV9pZGJEYXRhYmFzZUNhbGxiYWNrczsgfQorCiBwcml2YXRlOgogICAgIFJl
ZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+IG1faWRiRGF0YWJhc2U7CiAgICAgUmVm
UHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBtX2lkYkRhdGFiYXNlQ2FsbGJhY2tzOwogfTsKIAor
Y2xhc3MgRXhlY3V0YWJsZVdpdGhEYXRhYmFzZSA6IHB1YmxpYyBSZWZDb3VudGVkPEV4ZWN1dGFi
bGVXaXRoRGF0YWJhc2U+IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5FeGVjdXRhYmxlV2l0aERh
dGFiYXNlKCkgeyB9OworICAgIHZvaWQgc3RhcnQoSURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2Uq
LCBTZWN1cml0eU9yaWdpbiosIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcm
IGRhdGFiYXNlTmFtZSk7CisgICAgdm9pZCBjb25uZWN0KFBhc3NSZWZQdHI8SURCRGF0YWJhc2VC
YWNrZW5kSW50ZXJmYWNlPiBkYXRhYmFzZSkgeyBtX2Nvbm5lY3Rpb24uY29ubmVjdChkYXRhYmFz
ZSk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZXhlY3V0ZShQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFj
a2VuZEludGVyZmFjZT4pID0gMDsKK3ByaXZhdGU6CisgICAgRGF0YWJhc2VDb25uZWN0aW9uIG1f
Y29ubmVjdGlvbjsKK307CisKIGNsYXNzIE9wZW5EYXRhYmFzZUNhbGxiYWNrIDogcHVibGljIElu
c3BlY3RvcklEQkNhbGxiYWNrIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxPcGVu
RGF0YWJhc2VDYWxsYmFjaz4gY3JlYXRlKEV4ZWN1dGFibGVXaXRoRGF0YWJhc2UqIGV4ZWN1dGFi
bGVXaXRoRGF0YWJhc2UpCkBAIC0yMjcsNiArMjI3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+IHBy
cERhdGFiYXNlKQogICAgIHsKICAgICAgICAgUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVy
ZmFjZT4gaWRiRGF0YWJhc2UgPSBwcnBEYXRhYmFzZTsKKyAgICAgICAgbV9leGVjdXRhYmxlV2l0
aERhdGFiYXNlLT5jb25uZWN0KGlkYkRhdGFiYXNlKTsKICAgICAgICAgbV9leGVjdXRhYmxlV2l0
aERhdGFiYXNlLT5leGVjdXRlKGlkYkRhdGFiYXNlKTsKICAgICB9CiAKQEAgLTIzOSw3ICsyNDAs
NyBAQCBwcml2YXRlOgogdm9pZCBFeGVjdXRhYmxlV2l0aERhdGFiYXNlOjpzdGFydChJREJGYWN0
b3J5QmFja2VuZEludGVyZmFjZSogaWRiRmFjdG9yeSwgU2VjdXJpdHlPcmlnaW4qIHNlY3VyaXR5
T3JpZ2luLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIGRh
dGFiYXNlTmFtZSkKIHsKICAgICBSZWZQdHI8T3BlbkRhdGFiYXNlQ2FsbGJhY2s+IGNhbGxiYWNr
ID0gT3BlbkRhdGFiYXNlQ2FsbGJhY2s6OmNyZWF0ZSh0aGlzKTsKLSAgICBpZGJGYWN0b3J5LT5v
cGVuKGRhdGFiYXNlTmFtZSwgSURCRGF0YWJhc2VNZXRhZGF0YTo6Tm9JbnRWZXJzaW9uLCBjYWxs
YmFjay5nZXQoKSwgc2VjdXJpdHlPcmlnaW4sIGNvbnRleHQsIFN0cmluZygpKTsKKyAgICBpZGJG
YWN0b3J5LT5vcGVuKGRhdGFiYXNlTmFtZSwgSURCRGF0YWJhc2VNZXRhZGF0YTo6Tm9JbnRWZXJz
aW9uLCBjYWxsYmFjaywgbV9jb25uZWN0aW9uLmNhbGxiYWNrcygpLCBzZWN1cml0eU9yaWdpbiwg
Y29udGV4dCwgU3RyaW5nKCkpOwogfQogCiBzdGF0aWMgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlv
bkJhY2tlbmRJbnRlcmZhY2U+IHRyYW5zYWN0aW9uRm9yRGF0YWJhc2UoSURCRGF0YWJhc2VCYWNr
ZW5kSW50ZXJmYWNlKiBpZGJEYXRhYmFzZSwgY29uc3QgU3RyaW5nJiBvYmplY3RTdG9yZU5hbWUp
CkBAIC0zMTAsNyArMzExLDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBleGVjdXRlKFBh
c3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiBwcnBEYXRhYmFzZSkKICAgICB7
CiAgICAgICAgIFJlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+IGlkYkRhdGFiYXNl
ID0gcHJwRGF0YWJhc2U7Ci0gICAgICAgIG1fY29ubmVjdGlvbi5jb25uZWN0KGlkYkRhdGFiYXNl
KTsKICAgICAgICAgaWYgKCFtX2Zyb250ZW5kUHJvdmlkZXItPmZyb250ZW5kKCkpCiAgICAgICAg
ICAgICByZXR1cm47CiAKQEAgLTM1NSw3ICszNTUsNiBAQCBwcml2YXRlOgogICAgICAgICAsIG1f
cmVxdWVzdElkKHJlcXVlc3RJZCkgeyB9CiAgICAgUmVmUHRyPEluc3BlY3RvckluZGV4ZWREQkFn
ZW50OjpGcm9udGVuZFByb3ZpZGVyPiBtX2Zyb250ZW5kUHJvdmlkZXI7CiAgICAgaW50IG1fcmVx
dWVzdElkOwotICAgIERhdGFiYXNlQ29ubmVjdGlvbiBtX2Nvbm5lY3Rpb247CiB9OwogCiBzdGF0
aWMgUGFzc1JlZlB0cjxJREJLZXk+IGlkYktleUZyb21JbnNwZWN0b3JPYmplY3QoSW5zcGVjdG9y
T2JqZWN0KiBrZXkpCkBAIC01ODcsNyArNTg2LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCBleGVjdXRlKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiBwcnBEYXRh
YmFzZSkKICAgICB7CiAgICAgICAgIFJlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+
IGlkYkRhdGFiYXNlID0gcHJwRGF0YWJhc2U7Ci0gICAgICAgIG1fY29ubmVjdGlvbi5jb25uZWN0
KGlkYkRhdGFiYXNlKTsKICAgICAgICAgaWYgKCFtX2Zyb250ZW5kUHJvdmlkZXItPmZyb250ZW5k
KCkpCiAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTYzMyw3ICs2MzEsNiBAQCBwcml2YXRlOgog
ICAgIFJlZlB0cjxJREJLZXlSYW5nZT4gbV9pZGJLZXlSYW5nZTsKICAgICBpbnQgbV9za2lwQ291
bnQ7CiAgICAgdW5zaWduZWQgbV9wYWdlU2l6ZTsKLSAgICBEYXRhYmFzZUNvbm5lY3Rpb24gbV9j
b25uZWN0aW9uOwogfTsKIAogfSAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYklEQkRhdGFiYXNlLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJJREJEYXRhYmFzZS5oCmluZGV4IGE4YjAzNWM3MjdmODhkZGJmMGNlMTcw
ZWFkNzQxODVjNjhiZTJhZDYuLjgzYjlhNDI1Zjg0N2ZhOWQ4ODE3MzdjMzA5ZWE4YTI4MmFiNGVm
MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQkRhdGFi
YXNlLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCRGF0YWJhc2Uu
aApAQCAtNjYsOCArNjYsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGNsb3NlKCkgeyBX
RUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgZm9yY2VDbG9z
ZSgpIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQg
b3BlbihXZWJJREJEYXRhYmFzZUNhbGxiYWNrcyopIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOyB9Ci0KIHByb3RlY3RlZDoKICAgICBXZWJJREJEYXRhYmFzZSgpIHsgfQogfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQkZhY3RvcnkuaCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQkZhY3RvcnkuaAppbmRleCBmMTBhOGVi
OWFlMGY0OTc5NDE4YTFmYjNmODNlYTY0NzlmNjAyN2E3Li41MTQ1N2MxY2EwNmMxNjVjY2IyMzEy
NzkzYzQ5ZTA4NzljYjdkNTI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJJREJGYWN0b3J5LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViSURCRmFjdG9yeS5oCkBAIC00MSw2ICs0MSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBj
bGFzcyBXZWJGcmFtZTsKIGNsYXNzIFdlYklEQkRhdGFiYXNlOworY2xhc3MgV2ViSURCRGF0YWJh
c2VDYWxsYmFja3M7CiBjbGFzcyBXZWJTZWN1cml0eU9yaWdpbjsKIAogLy8gVGhlIGVudHJ5IHBv
aW50IGludG8gdGhlIEluZGV4ZWREYXRhYmFzZSBBUEkuICBUaGVzZSBjbGFzc2VzIG1hdGNoIHRo
ZWlyIEZvbyBhbmQKQEAgLTU2LDEzICs1NywxMyBAQCBwdWJsaWM6CiAKICAgICAvLyBGSVhNRTog
RGVsZXRlIHRoaXMgbWV0aG9kIHdoZW4gZGVyaXZlZCBjbGFzc2VzIGluIGNocm9taXVtIGhhdmUK
ICAgICAvLyBpbXBsZW1lbnRlZCB0aGUgb3RoZXIgb3BlbiBtZXRob2QuCi0gICAgdmlydHVhbCB2
b2lkIG9wZW4oY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBXZWJJREJDYWxsYmFja3MqIGNhbGxiYWNr
cywgY29uc3QgV2ViU2VjdXJpdHlPcmlnaW4mIG9yaWdpbiwgV2ViRnJhbWUqIGZyYW1lLCBjb25z
dCBXZWJTdHJpbmcmIGRhdGFEaXIpCisgICAgdmlydHVhbCB2b2lkIG9wZW4oY29uc3QgV2ViU3Ry
aW5nJiBuYW1lLCBXZWJJREJDYWxsYmFja3MqIGNhbGxiYWNrcywgV2ViSURCRGF0YWJhc2VDYWxs
YmFja3MqIGRhdGFiYXNlQ2FsbGJhY2tzLCBjb25zdCBXZWJTZWN1cml0eU9yaWdpbiYgb3JpZ2lu
LCBXZWJGcmFtZSogZnJhbWUsIGNvbnN0IFdlYlN0cmluZyYgZGF0YURpcikKICAgICB7Ci0gICAg
ICAgIG9wZW4obmFtZSwgV2ViSURCTWV0YWRhdGE6Ok5vSW50VmVyc2lvbiwgY2FsbGJhY2tzLCBv
cmlnaW4sIGZyYW1lLCBkYXRhRGlyKTsKKyAgICAgICAgb3BlbihuYW1lLCBXZWJJREJNZXRhZGF0
YTo6Tm9JbnRWZXJzaW9uLCBjYWxsYmFja3MsIGRhdGFiYXNlQ2FsbGJhY2tzLCBvcmlnaW4sIGZy
YW1lLCBkYXRhRGlyKTsKICAgICB9CiAKICAgICAvLyBUaGUgV2ViS2l0IGltcGxlbWVudGF0aW9u
IG9mIG9wZW4gaWdub3JlcyB0aGUgV2ViRnJhbWUqIHBhcmFtZXRlci4KLSAgICB2aXJ0dWFsIHZv
aWQgb3Blbihjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGxvbmcgbG9uZyB2ZXJzaW9uLCBXZWJJREJD
YWxsYmFja3MqIGNhbGxiYWNrcywgY29uc3QgV2ViU2VjdXJpdHlPcmlnaW4mIG9yaWdpbiwgV2Vi
RnJhbWUqIGZyYW1lLCBjb25zdCBXZWJTdHJpbmcmIGRhdGFEaXIpIHsgV0VCS0lUX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOyB9CisgICAgdmlydHVhbCB2b2lkIG9wZW4oY29uc3QgV2ViU3RyaW5nJiBu
YW1lLCBsb25nIGxvbmcgdmVyc2lvbiwgV2ViSURCQ2FsbGJhY2tzKiBjYWxsYmFja3MsIFdlYklE
QkRhdGFiYXNlQ2FsbGJhY2tzKiBkYXRhYmFzZUNhbGxiYWNrcywgY29uc3QgV2ViU2VjdXJpdHlP
cmlnaW4mIG9yaWdpbiwgV2ViRnJhbWUqIGZyYW1lLCBjb25zdCBXZWJTdHJpbmcmIGRhdGFEaXIp
IHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZGVs
ZXRlRGF0YWJhc2UoY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBXZWJJREJDYWxsYmFja3MqLCBjb25z
dCBXZWJTZWN1cml0eU9yaWdpbiYsIFdlYkZyYW1lKiwgY29uc3QgV2ViU3RyaW5nJiBkYXRhRGly
KSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkNhbGxiYWNrc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL0lEQkNhbGxiYWNrc1Byb3h5LmNwcAppbmRleCAxOTNiZjJiNWY2YzY2
NmM3YmQ1MDYyYWQ0NDc0NDE1YmZiMzA0Mjk3Li5hZjQ5ODRhNzdjNGI4NWUyNmUyOWVmODhhOGQy
ODNkZTQ2YWNjMzhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJD
YWxsYmFja3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ2Fs
bGJhY2tzUHJveHkuY3BwCkBAIC0zNCwxMyArMzQsMTUgQEAKICNpbmNsdWRlICJJREJDdXJzb3JC
YWNrZW5kSW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNl
LmgiCiAjaW5jbHVkZSAiSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuaCIKKyNpbmNsdWRlICJJREJE
YXRhYmFzZUNhbGxiYWNrc1Byb3h5LmgiCiAjaW5jbHVkZSAiSURCRGF0YWJhc2VFcnJvci5oIgog
I2luY2x1ZGUgIklEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZS5oIgogI2luY2x1ZGUgIklE
QlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZS5oIgogI2luY2x1ZGUgIldlYklEQkNhbGxiYWNr
cy5oIgogI2luY2x1ZGUgIldlYklEQkN1cnNvckltcGwuaCIKLSNpbmNsdWRlICJXZWJJREJEYXRh
YmFzZUltcGwuaCIKKyNpbmNsdWRlICJXZWJJREJEYXRhYmFzZUNhbGxiYWNrcy5oIgogI2luY2x1
ZGUgIldlYklEQkRhdGFiYXNlRXJyb3IuaCIKKyNpbmNsdWRlICJXZWJJREJEYXRhYmFzZUltcGwu
aCIKICNpbmNsdWRlICJXZWJJREJLZXkuaCIKICNpbmNsdWRlICJXZWJJREJUcmFuc2FjdGlvbklt
cGwuaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKQEAg
LTc1LDcgKzc3LDggQEAgdm9pZCBJREJDYWxsYmFja3NQcm94eTo6b25TdWNjZXNzKFBhc3NSZWZQ
dHI8SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZT4gaWRiQ3Vyc28KIAogdm9pZCBJREJDYWxsYmFj
a3NQcm94eTo6b25TdWNjZXNzKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNl
PiBiYWNrZW5kKQogewotICAgIG1fY2FsbGJhY2tzLT5vblN1Y2Nlc3MobmV3IFdlYklEQkRhdGFi
YXNlSW1wbChiYWNrZW5kKSk7CisgICAgQVNTRVJUKG1fZGF0YWJhc2VDYWxsYmFja3MuZ2V0KCkp
OworICAgIG1fY2FsbGJhY2tzLT5vblN1Y2Nlc3MobmV3IFdlYklEQkRhdGFiYXNlSW1wbChiYWNr
ZW5kLCBtX2RhdGFiYXNlQ2FsbGJhY2tzLnJlbGVhc2UoKSkpOwogfQogCiB2b2lkIElEQkNhbGxi
YWNrc1Byb3h5OjpvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJLZXk+IGlkYktleSkKQEAgLTEzNyw5
ICsxNDAsMTcgQEAgdm9pZCBJREJDYWxsYmFja3NQcm94eTo6b25CbG9ja2VkKGludDY0X3QgZXhp
c3RpbmdWZXJzaW9uKQogCiB2b2lkIElEQkNhbGxiYWNrc1Byb3h5OjpvblVwZ3JhZGVOZWVkZWQo
aW50NjRfdCBvbGRWZXJzaW9uLCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVy
ZmFjZT4gdHJhbnNhY3Rpb24sIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNl
PiBkYXRhYmFzZSkKIHsKLSAgICBtX2NhbGxiYWNrcy0+b25VcGdyYWRlTmVlZGVkKG9sZFZlcnNp
b24sIG5ldyBXZWJJREJUcmFuc2FjdGlvbkltcGwodHJhbnNhY3Rpb24pLCBuZXcgV2ViSURCRGF0
YWJhc2VJbXBsKGRhdGFiYXNlKSk7CisgICAgQVNTRVJUKG1fZGF0YWJhc2VDYWxsYmFja3MpOwor
ICAgIG1fY2FsbGJhY2tzLT5vblVwZ3JhZGVOZWVkZWQob2xkVmVyc2lvbiwgbmV3IFdlYklEQlRy
YW5zYWN0aW9uSW1wbCh0cmFuc2FjdGlvbiksIG5ldyBXZWJJREJEYXRhYmFzZUltcGwoZGF0YWJh
c2UsIG1fZGF0YWJhc2VDYWxsYmFja3MpKTsKK30KKwordm9pZCBJREJDYWxsYmFja3NQcm94eTo6
c2V0RGF0YWJhc2VDYWxsYmFja3MoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5
PiBkYXRhYmFzZUNhbGxiYWNrcykKK3sKKyAgICBBU1NFUlQoIW1fZGF0YWJhc2VDYWxsYmFja3Mp
OworICAgIG1fZGF0YWJhc2VDYWxsYmFja3MgPSBkYXRhYmFzZUNhbGxiYWNrczsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CiAKKwogI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNF
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ2FsbGJhY2tzUHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkNhbGxiYWNrc1Byb3h5LmgKaW5k
ZXggODI1NzU4YWFkZTkzZjQxZjI2MjkzMDM2OGJkOTY2NjBmZTUyYTUyNy4uZjYxM2E4NWMyZTRl
ZDE2Y2I4ODdmNjhhMDUwMzE4NDljYjFjZWYyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvSURCQ2FsbGJhY2tzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9JREJDYWxsYmFja3NQcm94eS5oCkBAIC0zOSw2ICszOSw3IEBACiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAogY2xhc3MgV2ViSURCQ2FsbGJhY2tzOworY2xhc3MgSURCRGF0YWJhc2VDYWxs
YmFja3NQcm94eTsKIAogY2xhc3MgSURCQ2FsbGJhY2tzUHJveHkgOiBwdWJsaWMgV2ViQ29yZTo6
SURCQ2FsbGJhY2tzIHsKIHB1YmxpYzoKQEAgLTU5LDEwICs2MCwxMyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIG9uQmxvY2tlZChpbnQ2NF90IGV4aXN0aW5nVmVyc2lvbik7CiAgICAgdmly
dHVhbCB2b2lkIG9uVXBncmFkZU5lZWRlZChpbnQ2NF90IG9sZFZlcnNpb24sIFBhc3NSZWZQdHI8
V2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiwgUGFzc1JlZlB0cjxXZWJD
b3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+KTsKIAorICAgIHZvaWQgc2V0RGF0YWJh
c2VDYWxsYmFja3MoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5Pik7CisKIHBy
aXZhdGU6CiAgICAgSURCQ2FsbGJhY2tzUHJveHkoUGFzc093blB0cjxXZWJJREJDYWxsYmFja3M+
KTsKIAogICAgIE93blB0cjxXZWJJREJDYWxsYmFja3M+IG1fY2FsbGJhY2tzOworICAgIFJlZlB0
cjxJREJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5PiBtX2RhdGFiYXNlQ2FsbGJhY2tzOwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94eS5jcHAKaW5kZXggNTZhZmU1ZmI1ZDJiNjJmYTQ0
NDk5NTQ0NjkzMGEwMWQwYmM5Nzc5OC4uNTAxY2U2MWZiNTk1NjI2NmIwYzNiZjFiNGMwMmFlZjZj
ZGEwMDgwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJh
c2VCYWNrZW5kUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRh
dGFiYXNlQmFja2VuZFByb3h5LmNwcApAQCAtMTA3LDExICsxMDcsNiBAQCB2b2lkIElEQkRhdGFi
YXNlQmFja2VuZFByb3h5OjpjbG9zZShQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPikK
ICAgICBtX3dlYklEQkRhdGFiYXNlLT5jbG9zZSgpOwogfQogCi12b2lkIElEQkRhdGFiYXNlQmFj
a2VuZFByb3h5OjpyZWdpc3RlckZyb250ZW5kQ2FsbGJhY2tzKFBhc3NSZWZQdHI8SURCRGF0YWJh
c2VDYWxsYmFja3M+IGRhdGFiYXNlQ2FsbGJhY2tzKQotewotICAgIG1fd2ViSURCRGF0YWJhc2Ut
Pm9wZW4obmV3IFdlYklEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbChkYXRhYmFzZUNhbGxiYWNrcykp
OwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVE
X0RBVEFCQVNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0
YWJhc2VCYWNrZW5kUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFi
YXNlQmFja2VuZFByb3h5LmgKaW5kZXggMmE5MzYwMGM2ZjJmYTBjMjY3YzJkYTA2ZmI4YjkyMTZm
ZDgyOGUzNi4uNzk1NjEwYWE2NTcyZGNhNDZjYzI2NGRiNWIwOGJkMTc4YzFjNTY1MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHku
aAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94
eS5oCkBAIC01MCw4ICs1MCw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2Vi
Q29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiB0cmFuc2FjdGlvbihXZWJDb3Jl
OjpET01TdHJpbmdMaXN0KiBzdG9yZU5hbWVzLCB1bnNpZ25lZCBzaG9ydCBtb2RlLCBXZWJDb3Jl
OjpFeGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVhbCB2b2lkIGNsb3NlKFBhc3NSZWZQdHI8V2Vi
Q29yZTo6SURCRGF0YWJhc2VDYWxsYmFja3M+KTsKIAotICAgIHZpcnR1YWwgdm9pZCByZWdpc3Rl
ckZyb250ZW5kQ2FsbGJhY2tzKFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCRGF0YWJhc2VDYWxsYmFj
a3M+KTsKLQogcHJpdmF0ZToKICAgICBJREJEYXRhYmFzZUJhY2tlbmRQcm94eShQYXNzT3duUHRy
PFdlYklEQkRhdGFiYXNlPik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL0lEQkZhY3RvcnlCYWNrZW5kUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvSURCRmFjdG9yeUJhY2tlbmRQcm94eS5jcHAKaW5kZXggYmFiY2JhZTE4NDA5YzVkZDI1OTJj
MGRmZDkyMzMyNmZiZjYwZTk0YS4uMjg5OTVlYzY2MGUzMWZmN2NlZmFkOTNlYjNiZGEyMzQxYWEx
ZWZmOCAxMDA3NTUKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRmFjdG9yeUJh
Y2tlbmRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRmFjdG9y
eUJhY2tlbmRQcm94eS5jcHAKQEAgLTM0LDEyICszNCwxNCBAQAogI2luY2x1ZGUgIkNyb3NzVGhy
ZWFkVGFzay5oIgogI2luY2x1ZGUgIkRPTVN0cmluZ0xpc3QuaCIKICNpbmNsdWRlICJJREJEYXRh
YmFzZUJhY2tlbmRQcm94eS5oIgorI2luY2x1ZGUgIklEQkRhdGFiYXNlQ2FsbGJhY2tzLmgiCiAj
aW5jbHVkZSAiSURCRGF0YWJhc2VFcnJvci5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIldlYkZyYW1l
SW1wbC5oIgogI2luY2x1ZGUgIldlYklEQkNhbGxiYWNrc0ltcGwuaCIKICNpbmNsdWRlICJXZWJJ
REJEYXRhYmFzZS5oIgorI2luY2x1ZGUgIldlYklEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbC5oIgog
I2luY2x1ZGUgIldlYklEQkRhdGFiYXNlRXJyb3IuaCIKICNpbmNsdWRlICJXZWJJREJGYWN0b3J5
LmgiCiAjaW5jbHVkZSAiV2ViS2l0LmgiCkBAIC0yMDMsMTUgKzIwNSwxNiBAQCB2b2lkIElEQkZh
Y3RvcnlCYWNrZW5kUHJveHk6OmdldERhdGFiYXNlTmFtZXMoUGFzc1JlZlB0cjxJREJDYWxsYmFj
a3M+IHBycENhbGxiYQogfQogCiAKLXZvaWQgSURCRmFjdG9yeUJhY2tlbmRQcm94eTo6b3Blbihj
b25zdCBTdHJpbmcmIG5hbWUsIGludDY0X3QgdmVyc2lvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFj
a3M+IHBycENhbGxiYWNrcywgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlPcmln
aW4sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgZGF0YURp
cikKK3ZvaWQgSURCRmFjdG9yeUJhY2tlbmRQcm94eTo6b3Blbihjb25zdCBTdHJpbmcmIG5hbWUs
IGludDY0X3QgdmVyc2lvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNrcywg
UGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gcHJwRGF0YWJhc2VDYWxsYmFja3MsIFBh
c3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luLCBTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIGRhdGFEaXIpCiB7CiAgICAgUmVmUHRyPElE
QkNhbGxiYWNrcz4gY2FsbGJhY2tzKHBycENhbGxiYWNrcyk7CisgICAgUmVmUHRyPElEQkRhdGFi
YXNlQ2FsbGJhY2tzPiBkYXRhYmFzZUNhbGxiYWNrcyhwcnBEYXRhYmFzZUNhbGxiYWNrcyk7CiAg
ICAgV2ViU2VjdXJpdHlPcmlnaW4gb3JpZ2luKHNlY3VyaXR5T3JpZ2luKTsKICAgICBpZiAoIWFs
bG93SW5kZXhlZERCKGNvbnRleHQsIG5hbWUsIG9yaWdpbiwgY2FsbGJhY2tzKSkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgV2ViRnJhbWVJbXBsKiB3ZWJGcmFtZSA9IGdldFdlYkZyYW1lKGNvbnRl
eHQpOwotICAgIG1fd2ViSURCRmFjdG9yeS0+b3BlbihuYW1lLCB2ZXJzaW9uLCBuZXcgV2ViSURC
Q2FsbGJhY2tzSW1wbChjYWxsYmFja3MpLCBvcmlnaW4sIHdlYkZyYW1lLCBkYXRhRGlyKTsKKyAg
ICBtX3dlYklEQkZhY3RvcnktPm9wZW4obmFtZSwgdmVyc2lvbiwgbmV3IFdlYklEQkNhbGxiYWNr
c0ltcGwoY2FsbGJhY2tzKSwgbmV3IFdlYklEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbChkYXRhYmFz
ZUNhbGxiYWNrcyksIG9yaWdpbiwgd2ViRnJhbWUsIGRhdGFEaXIpOwogfQogCiB2b2lkIElEQkZh
Y3RvcnlCYWNrZW5kUHJveHk6OmRlbGV0ZURhdGFiYXNlKGNvbnN0IFN0cmluZyYgbmFtZSwgUGFz
c1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNrcywgUGFzc1JlZlB0cjxTZWN1cml0eU9y
aWdpbj4gc2VjdXJpdHlPcmlnaW4sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNv
bnN0IFN0cmluZyYgZGF0YURpcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL0lEQkZhY3RvcnlCYWNrZW5kUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0lEQkZhY3RvcnlCYWNrZW5kUHJveHkuaAppbmRleCBjMGRlOTEwYTkyY2RlYTkxYTNkM2ExYzUz
MGEyODA3YzVhYmZhYTdhLi44ODM4MGQ3YTQyZWQxMTczMDI5MzViZWJiY2FjY2ViNmY2ZTk3ZDc4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJGYWN0b3J5QmFja2Vu
ZFByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRmFjdG9yeUJhY2tl
bmRQcm94eS5oCkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5JREJGYWN0
b3J5QmFja2VuZFByb3h5KCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgZ2V0RGF0YWJhc2VOYW1lcyhQ
YXNzUmVmUHRyPFdlYkNvcmU6OklEQkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8V2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW4+LCBXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3Ry
aW5nJiBkYXRhRGlyKTsKLSAgICB2aXJ0dWFsIHZvaWQgb3Blbihjb25zdCBTdHJpbmcmIG5hbWUs
IGludDY0X3QgdmVyc2lvbiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJDYWxsYmFja3M+LCBQYXNz
UmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiwgV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIGNvbnN0IFN0cmluZyYgZGF0YURpcik7CisgICAgdmlydHVhbCB2b2lkIG9wZW4o
Y29uc3QgU3RyaW5nJiBuYW1lLCBpbnQ2NF90IHZlcnNpb24sIFBhc3NSZWZQdHI8V2ViQ29yZTo6
SURCQ2FsbGJhY2tzPiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJEYXRhYmFzZUNhbGxiYWNrcz4s
IFBhc3NSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+LCBXZWJDb3JlOjpTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBkYXRhRGlyKTsKICAgICB2aXJ0dWFsIHZvaWQg
ZGVsZXRlRGF0YWJhc2UoY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPFdlYkNvcmU6OklE
QkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+LCBXZWJDb3Jl
OjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBkYXRhRGlyKTsKIAogcHJp
dmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFi
YXNlSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUlt
cGwuY3BwCmluZGV4IDBkMTQyYmMwMjkzYWExM2Y1YjE5MmMzZmRiYzU2MzM3Y2RhYzc1N2QuLjUy
ODc5YTlhN2YzYjczODBhYmEzMDZlZDY3M2QwYzQyYTEyOGZjNDYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmNwcApAQCAtNDUsOCArNDUs
OSBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVdl
YklEQkRhdGFiYXNlSW1wbDo6V2ViSURCRGF0YWJhc2VJbXBsKFBhc3NSZWZQdHI8SURCRGF0YWJh
c2VCYWNrZW5kSW50ZXJmYWNlPiBkYXRhYmFzZUJhY2tlbmQpCitXZWJJREJEYXRhYmFzZUltcGw6
OldlYklEQkRhdGFiYXNlSW1wbChQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFj
ZT4gZGF0YWJhc2VCYWNrZW5kLCBXVEY6OlBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3NQ
cm94eT4gZGF0YWJhc2VDYWxsYmFja3MpCiAgICAgOiBtX2RhdGFiYXNlQmFja2VuZChkYXRhYmFz
ZUJhY2tlbmQpCisgICAgLCBtX2RhdGFiYXNlQ2FsbGJhY2tzKGRhdGFiYXNlQ2FsbGJhY2tzKQog
ICAgICwgbV9jbG9zZVBlbmRpbmcoZmFsc2UpCiB7CiB9CkBAIC05Myw3ICs5NCw3IEBAIFdlYklE
QlRyYW5zYWN0aW9uKiBXZWJJREJEYXRhYmFzZUltcGw6OnRyYW5zYWN0aW9uKGNvbnN0IFdlYkRP
TVN0cmluZ0xpc3QmIG5hbWVzCiAKIHZvaWQgV2ViSURCRGF0YWJhc2VJbXBsOjpjbG9zZSgpCiB7
Ci0gICAgLy8gVXNlIHRoZSBjYWxsYmFja3MgdGhhdCA6Om9wZW4gZ2F2ZSB1cyBzbyB0aGF0IHRo
ZSBiYWNrZW5kIGluCisgICAgLy8gVXNlIHRoZSBjYWxsYmFja3MgcGFzc2VkIGluIHRvIHRoZSBj
b25zdHJ1Y3RvciBzbyB0aGF0IHRoZSBiYWNrZW5kIGluCiAgICAgLy8gbXVsdGktcHJvY2VzcyBj
aHJvbWl1bSBrbm93cyB3aGljaCBkYXRhYmFzZSBjb25uZWN0aW9uIGlzIGNsb3NpbmcuCiAgICAg
aWYgKCFtX2RhdGFiYXNlQ2FsbGJhY2tzKSB7CiAgICAgICAgIG1fY2xvc2VQZW5kaW5nID0gdHJ1
ZTsKQEAgLTExMywxNSArMTE0LDYgQEAgdm9pZCBXZWJJREJEYXRhYmFzZUltcGw6OmZvcmNlQ2xv
c2UoKQogICAgIGNhbGxiYWNrcy0+b25Gb3JjZWRDbG9zZSgpOwogfQogCi12b2lkIFdlYklEQkRh
dGFiYXNlSW1wbDo6b3BlbihXZWJJREJEYXRhYmFzZUNhbGxiYWNrcyogY2FsbGJhY2tzKQotewot
ICAgIEFTU0VSVCghbV9kYXRhYmFzZUNhbGxiYWNrcyk7Ci0gICAgbV9kYXRhYmFzZUNhbGxiYWNr
cyA9IElEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHk6OmNyZWF0ZShhZG9wdFB0cihjYWxsYmFja3Mp
KTsKLSAgICBtX2RhdGFiYXNlQmFja2VuZC0+cmVnaXN0ZXJGcm9udGVuZENhbGxiYWNrcyhtX2Rh
dGFiYXNlQ2FsbGJhY2tzKTsKLSAgICBpZiAobV9jbG9zZVBlbmRpbmcpCi0gICAgICAgIGNsb3Nl
KCk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxFKElOREVY
RURfREFUQUJBU0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJ
REJEYXRhYmFzZUltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFi
YXNlSW1wbC5oCmluZGV4IDRhODI4NGNlNTlhZDFlNjM2Y2M0ZmJjOTcyN2JjYjc3YTQyMmMzMGUu
LjljZDFjYWY1OTIwNjliNTRkZmI5NmNjODc4NDRjMzc5NmRiM2EzMDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5oCkBAIC00Nyw3ICs0Nyw3
IEBAIGNsYXNzIFdlYklEQlRyYW5zYWN0aW9uOwogLy8gU2VlIGNvbW1lbnQgaW4gV2ViSURCRmFj
dG9yeSBmb3IgYSBoaWdoIGxldmVsIG92ZXJ2aWV3IHRoZXNlIGNsYXNzZXMuCiBjbGFzcyBXZWJJ
REJEYXRhYmFzZUltcGwgOiBwdWJsaWMgV2ViSURCRGF0YWJhc2UgewogcHVibGljOgotICAgIFdl
YklEQkRhdGFiYXNlSW1wbChXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6SURCRGF0YWJhc2VCYWNr
ZW5kSW50ZXJmYWNlPik7CisgICAgV2ViSURCRGF0YWJhc2VJbXBsKFdURjo6UGFzc1JlZlB0cjxX
ZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+LCBXVEY6OlBhc3NSZWZQdHI8SURC
RGF0YWJhc2VDYWxsYmFja3NQcm94eT4pOwogICAgIHZpcnR1YWwgfldlYklEQkRhdGFiYXNlSW1w
bCgpOwogCiAgICAgdmlydHVhbCBXZWJJREJNZXRhZGF0YSBtZXRhZGF0YSgpIGNvbnN0OwpAQCAt
NTksOSArNTksNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGZvcmNlQ2xvc2UoKTsKICAg
ICB2aXJ0dWFsIHZvaWQgY2xvc2UoKTsKIAotICAgIC8vIEZJWE1FOiBSZW5hbWUgIm9wZW4iIHRv
IHJlZ2lzdGVyRnJvbnRlbmRDYWxsYmFja3MuCi0gICAgdmlydHVhbCB2b2lkIG9wZW4oV2ViSURC
RGF0YWJhc2VDYWxsYmFja3MqKTsKLQogcHJpdmF0ZToKICAgICBXVEY6OlJlZlB0cjxXZWJDb3Jl
OjpJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+IG1fZGF0YWJhc2VCYWNrZW5kOwogICAgIFdU
Rjo6UmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHk+IG1fZGF0YWJhc2VDYWxsYmFja3M7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJGYWN0b3J5SW1w
bC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJGYWN0b3J5SW1wbC5jcHAK
aW5kZXggYWQ3MTQ3NmI3ZWJiNDY4NmVhODI1Yjk2MjE5MTZlNjNiMjkwYWM3Ny4uOTRhOGQ0Njhh
OTBhOTBjNDEyYzdhYTZjOThhZWZiNzRiYjdhMzdiOCAxMDA3NTUKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViSURCRmFjdG9yeUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYklEQkZhY3RvcnlJbXBsLmNwcApAQCAtMzUsOCArMzUsMTAgQEAKIAog
I2luY2x1ZGUgIkRPTVN0cmluZ0xpc3QuaCIKICNpbmNsdWRlICJJREJDYWxsYmFja3NQcm94eS5o
IgorI2luY2x1ZGUgIklEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHkuaCIKICNpbmNsdWRlICJJREJG
YWN0b3J5QmFja2VuZEltcGwuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgorI2luY2x1
ZGUgIldlYklEQkRhdGFiYXNlQ2FsbGJhY2tzLmgiCiAjaW5jbHVkZSAiV2ViSURCRGF0YWJhc2VF
cnJvci5oIgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KIApAQCAtNjMsOSArNjUsMTIgQEAgdm9p
ZCBXZWJJREJGYWN0b3J5SW1wbDo6Z2V0RGF0YWJhc2VOYW1lcyhXZWJJREJDYWxsYmFja3MqIGNh
bGxiYWNrcywgY29uc3QgV2ViU2UKICAgICBtX2lkYkZhY3RvcnlCYWNrZW5kLT5nZXREYXRhYmFz
ZU5hbWVzKElEQkNhbGxiYWNrc1Byb3h5OjpjcmVhdGUoYWRvcHRQdHIoY2FsbGJhY2tzKSksIG9y
aWdpbiwgMCwgZGF0YURpcik7CiB9CiAKLXZvaWQgV2ViSURCRmFjdG9yeUltcGw6Om9wZW4oY29u
c3QgV2ViU3RyaW5nJiBuYW1lLCBsb25nIGxvbmcgdmVyc2lvbiwgV2ViSURCQ2FsbGJhY2tzKiBj
YWxsYmFja3MsIGNvbnN0IFdlYlNlY3VyaXR5T3JpZ2luJiBvcmlnaW4sIFdlYkZyYW1lKiwgY29u
c3QgV2ViU3RyaW5nJiBkYXRhRGlyKQordm9pZCBXZWJJREJGYWN0b3J5SW1wbDo6b3Blbihjb25z
dCBXZWJTdHJpbmcmIG5hbWUsIGxvbmcgbG9uZyB2ZXJzaW9uLCBXZWJJREJDYWxsYmFja3MqIGNh
bGxiYWNrcywgV2ViSURCRGF0YWJhc2VDYWxsYmFja3MqIGRhdGFiYXNlQ2FsbGJhY2tzLCBjb25z
dCBXZWJTZWN1cml0eU9yaWdpbiYgb3JpZ2luLCBXZWJGcmFtZSosIGNvbnN0IFdlYlN0cmluZyYg
ZGF0YURpcikKIHsKLSAgICBtX2lkYkZhY3RvcnlCYWNrZW5kLT5vcGVuKG5hbWUsIHZlcnNpb24s
IElEQkNhbGxiYWNrc1Byb3h5OjpjcmVhdGUoYWRvcHRQdHIoY2FsbGJhY2tzKSkuZ2V0KCksIG9y
aWdpbiwgMCwgZGF0YURpcik7CisgICAgUmVmUHRyPElEQkNhbGxiYWNrc1Byb3h5PiBjYWxsYmFj
a3NQcm94eSA9IElEQkNhbGxiYWNrc1Byb3h5OjpjcmVhdGUoYWRvcHRQdHIoY2FsbGJhY2tzKSk7
CisgICAgUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHk+IGRhdGFiYXNlQ2FsbGJhY2tz
UHJveHkgPSBJREJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5OjpjcmVhdGUoYWRvcHRQdHIoZGF0YWJh
c2VDYWxsYmFja3MpKTsKKyAgICBjYWxsYmFja3NQcm94eS0+c2V0RGF0YWJhc2VDYWxsYmFja3Mo
ZGF0YWJhc2VDYWxsYmFja3NQcm94eSk7CisgICAgbV9pZGJGYWN0b3J5QmFja2VuZC0+b3Blbihu
YW1lLCB2ZXJzaW9uLCBjYWxsYmFja3NQcm94eS5nZXQoKSwgZGF0YWJhc2VDYWxsYmFja3NQcm94
eS5nZXQoKSwgb3JpZ2luLCAwLCBkYXRhRGlyKTsKIH0KIAogdm9pZCBXZWJJREJGYWN0b3J5SW1w
bDo6ZGVsZXRlRGF0YWJhc2UoY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBXZWJJREJDYWxsYmFja3Mq
IGNhbGxiYWNrcywgY29uc3QgV2ViU2VjdXJpdHlPcmlnaW4mIG9yaWdpbiwgV2ViRnJhbWUqLCBj
b25zdCBXZWJTdHJpbmcmIGRhdGFEaXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJJREJGYWN0b3J5SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViSURCRmFjdG9yeUltcGwuaAppbmRleCA4MzNlZWI1OTEyNTliODUzYzMyMWZkMTE4ZjA5NGE1
YjhhN2M4ODY0Li4zM2Y1YTIxZDJjNzRmNThkZmY5NGUxZWI3YjkwZTVhZDQzMGQxNjI3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJGYWN0b3J5SW1wbC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkZhY3RvcnlJbXBsLmgKQEAgLTQ1
LDcgKzQ1LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfldlYklEQkZhY3RvcnlJbXBsKCk7CiAK
ICAgICB2aXJ0dWFsIHZvaWQgZ2V0RGF0YWJhc2VOYW1lcyhXZWJJREJDYWxsYmFja3MqLCBjb25z
dCBXZWJTZWN1cml0eU9yaWdpbiYsIFdlYkZyYW1lKiwgY29uc3QgV2ViU3RyaW5nJiBkYXRhRGly
KTsKLSAgICB2aXJ0dWFsIHZvaWQgb3Blbihjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGxvbmcgbG9u
ZyB2ZXJzaW9uLCBXZWJJREJDYWxsYmFja3MqLCBjb25zdCBXZWJTZWN1cml0eU9yaWdpbiYsIFdl
YkZyYW1lKiwgY29uc3QgV2ViU3RyaW5nJiBkYXRhRGlyKTsKKyAgICB2aXJ0dWFsIHZvaWQgb3Bl
bihjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGxvbmcgbG9uZyB2ZXJzaW9uLCBXZWJJREJDYWxsYmFj
a3MqLCBXZWJJREJEYXRhYmFzZUNhbGxiYWNrcyosIGNvbnN0IFdlYlNlY3VyaXR5T3JpZ2luJiwg
V2ViRnJhbWUqLCBjb25zdCBXZWJTdHJpbmcmIGRhdGFEaXIpOwogICAgIHZpcnR1YWwgdm9pZCBk
ZWxldGVEYXRhYmFzZShjb25zdCBXZWJTdHJpbmcmIG5hbWUsIFdlYklEQkNhbGxiYWNrcyosIGNv
bnN0IFdlYlNlY3VyaXR5T3JpZ2luJiwgV2ViRnJhbWUqLCBjb25zdCBXZWJTdHJpbmcmIGRhdGFE
aXIpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9JREJBYm9ydE9uQ29ycnVwdFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9JREJBYm9ydE9uQ29ycnVwdFRlc3QuY3BwCmluZGV4IDFkMzk1MDk2YWFkYjNhNWIzZGU5Yjcw
ZGFiNjBmMzE4OWNmYmE5ODYuLmIwODBiZmM0ZGY1MWEyOThmNGZkYjVkOWMyOGU3NzE3ZjQwZGFm
MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCQWJvcnRPbkNv
cnJ1cHRUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQkFib3J0
T25Db3JydXB0VGVzdC5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiSURCRGF0
YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmgiCisjaW5jbHVkZSAiSURCRGF0YWJhc2VDYWxsYmFja3Mu
aCIKICNpbmNsdWRlICJJREJGYWN0b3J5QmFja2VuZEltcGwuaCIKICNpbmNsdWRlICJJREJGYWtl
QmFja2luZ1N0b3JlLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKQEAgLTk2LDE0ICs5
NywyNiBAQCBwcm90ZWN0ZWQ6CiAgICAgfQogfTsKIAorY2xhc3MgRmFrZUlEQkRhdGFiYXNlQ2Fs
bGJhY2tzIDogcHVibGljIElEQkRhdGFiYXNlQ2FsbGJhY2tzIHsKK3B1YmxpYzoKKyAgICBzdGF0
aWMgUGFzc1JlZlB0cjxGYWtlSURCRGF0YWJhc2VDYWxsYmFja3M+IGNyZWF0ZSgpIHsgcmV0dXJu
IGFkb3B0UmVmKG5ldyBGYWtlSURCRGF0YWJhc2VDYWxsYmFja3MoKSk7IH0KKyAgICB2aXJ0dWFs
IH5GYWtlSURCRGF0YWJhc2VDYWxsYmFja3MoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgb25WZXJz
aW9uQ2hhbmdlKGNvbnN0IFN0cmluZyYgdmVyc2lvbikgT1ZFUlJJREUgeyB9CisgICAgdmlydHVh
bCB2b2lkIG9uVmVyc2lvbkNoYW5nZShpbnQ2NF90IG9sZFZlcnNpb24sIGludDY0X3QgbmV3VmVy
c2lvbikgT1ZFUlJJREUgeyB9CisgICAgdmlydHVhbCB2b2lkIG9uRm9yY2VkQ2xvc2UoKSBPVkVS
UklERSB7IH0KK3ByaXZhdGU6CisgICAgRmFrZUlEQkRhdGFiYXNlQ2FsbGJhY2tzKCkgeyB9Cit9
OworCiBURVNUKElEQkFib3J0VGVzdCwgVGhlVGVzdCkKIHsKICAgICBSZWZQdHI8SURCRmFjdG9y
eUJhY2tlbmRJbXBsPiBmYWN0b3J5ID0gRmFpbGluZ0lEQkZhY3RvcnlCYWNrZW5kSW1wbDo6Y3Jl
YXRlKCk7CiAgICAgY29uc3QgU3RyaW5nJiBuYW1lID0gImRiIG5hbWUiOwogICAgIE1vY2tJREJD
YWxsYmFja3MgY2FsbGJhY2tzOworICAgIFJlZlB0cjxGYWtlSURCRGF0YWJhc2VDYWxsYmFja3M+
IGRhdGFiYXNlQ2FsbGJhY2tzID0gRmFrZUlEQkRhdGFiYXNlQ2FsbGJhY2tzOjpjcmVhdGUoKTsK
ICAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVh
dGUoImh0dHAiLCAibG9jYWxob3N0IiwgODEpOwogICAgIGNvbnN0IGludDY0X3QgRHVtbXlWZXJz
aW9uID0gMjsKLSAgICBmYWN0b3J5LT5vcGVuKG5hbWUsIER1bW15VmVyc2lvbiwgJmNhbGxiYWNr
cywgb3JpZ2luLCAwIC8qRnJhbWUqLywgU3RyaW5nKCkgLypwYXRoKi8pOworICAgIGZhY3Rvcnkt
Pm9wZW4obmFtZSwgRHVtbXlWZXJzaW9uLCAmY2FsbGJhY2tzLCBkYXRhYmFzZUNhbGxiYWNrcywg
b3JpZ2luLCAwIC8qRnJhbWUqLywgU3RyaW5nKCkgLypwYXRoKi8pOwogfQogCiB9IC8vIG5hbWVz
cGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJEYXRhYmFz
ZUJhY2tlbmRUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCRGF0YWJh
c2VCYWNrZW5kVGVzdC5jcHAKaW5kZXggZWFkN2Y5YmI5NjIxNjk4MjFmZGVmNzAyZjgxOTYyYzI0
ZGE0NTA1MS4uNDVlYzI1NDFiMWNjZmU5Y2Q0OTQyZjBhYmU3MDQ4NWVjOGM1MmZkZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJEYXRhYmFzZUJhY2tlbmRUZXN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQkRhdGFiYXNlQmFja2Vu
ZFRlc3QuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiSURCQmFja2luZ1N0b3JlLmgi
CiAjaW5jbHVkZSAiSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZS5oIgogI2luY2x1ZGUgIklEQkRh
dGFiYXNlQmFja2VuZEltcGwuaCIKKyNpbmNsdWRlICJJREJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5
LmgiCiAjaW5jbHVkZSAiSURCRmFjdG9yeUJhY2tlbmRJbXBsLmgiCiAjaW5jbHVkZSAiSURCRmFr
ZUJhY2tpbmdTdG9yZS5oIgogI2luY2x1ZGUgIklEQkluZGV4QmFja2VuZEltcGwuaCIKQEAgLTQw
LDkgKzQxLDEwIEBACiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAKIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwordXNpbmcgV2ViS2l0OjpJREJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5Owog
dXNpbmcgV2ViS2l0OjpXZWJJREJEYXRhYmFzZTsKLXVzaW5nIFdlYktpdDo6V2ViSURCRGF0YWJh
c2VDYWxsYmFja3NJbXBsOwogdXNpbmcgV2ViS2l0OjpXZWJJREJEYXRhYmFzZUltcGw7Cit1c2lu
ZyBXZWJLaXQ6OldlYklEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbDsKIAogbmFtZXNwYWNlIHsKIApA
QCAtMTIyLDIwICsxMjQsMTYgQEAgVEVTVChJREJEYXRhYmFzZUJhY2tlbmRUZXN0LCBDb25uZWN0
aW9uTGlmZWN5Y2xlKQogICAgIEVYUEVDVF9HVChiYWNraW5nU3RvcmUtPnJlZkNvdW50KCksIDEp
OwogCiAgICAgUmVmUHRyPE1vY2tJREJDYWxsYmFja3M+IHJlcXVlc3QxID0gTW9ja0lEQkNhbGxi
YWNrczo6Y3JlYXRlKCk7Ci0gICAgZGItPm9wZW5Db25uZWN0aW9uKHJlcXVlc3QxKTsKLQogICAg
IFJlZlB0cjxGYWtlSURCRGF0YWJhc2VDYWxsYmFja3M+IGNvbm5lY3Rpb24xID0gRmFrZUlEQkRh
dGFiYXNlQ2FsbGJhY2tzOjpjcmVhdGUoKTsKLSAgICBkYi0+cmVnaXN0ZXJGcm9udGVuZENhbGxi
YWNrcyhjb25uZWN0aW9uMSk7CisgICAgZGItPm9wZW5Db25uZWN0aW9uKHJlcXVlc3QxLCBjb25u
ZWN0aW9uMSk7CiAKICAgICBSZWZQdHI8TW9ja0lEQkNhbGxiYWNrcz4gcmVxdWVzdDIgPSBNb2Nr
SURCQ2FsbGJhY2tzOjpjcmVhdGUoKTsKLSAgICBkYi0+b3BlbkNvbm5lY3Rpb24ocmVxdWVzdDIp
OworICAgIFJlZlB0cjxGYWtlSURCRGF0YWJhc2VDYWxsYmFja3M+IGNvbm5lY3Rpb24yID0gRmFr
ZUlEQkRhdGFiYXNlQ2FsbGJhY2tzOjpjcmVhdGUoKTsKKyAgICBkYi0+b3BlbkNvbm5lY3Rpb24o
cmVxdWVzdDIsIGNvbm5lY3Rpb24yKTsKIAogICAgIGRiLT5jbG9zZShjb25uZWN0aW9uMSk7CiAg
ICAgRVhQRUNUX0dUKGJhY2tpbmdTdG9yZS0+cmVmQ291bnQoKSwgMSk7CiAKLSAgICBSZWZQdHI8
RmFrZUlEQkRhdGFiYXNlQ2FsbGJhY2tzPiBjb25uZWN0aW9uMiA9IEZha2VJREJEYXRhYmFzZUNh
bGxiYWNrczo6Y3JlYXRlKCk7Ci0gICAgZGItPnJlZ2lzdGVyRnJvbnRlbmRDYWxsYmFja3MoY29u
bmVjdGlvbjIpOwotCiAgICAgZGItPmNsb3NlKGNvbm5lY3Rpb24yKTsKICAgICBFWFBFQ1RfVFJV
RShiYWNraW5nU3RvcmUtPmhhc09uZVJlZigpKTsKIH0KQEAgLTE0OSw3ICsxNDcsNyBAQCBwdWJs
aWM6CiAKICAgICB+TW9ja0lEQkRhdGFiYXNlQmFja2VuZFByb3h5KCkKICAgICB7Ci0gICAgICAg
IEVYUEVDVF9UUlVFKG1fd2FzUmVnaXN0ZXJGcm9udGVuZENhbGxiYWNrc0NhbGxlZCk7CisgICAg
ICAgIEVYUEVDVF9UUlVFKG1fd2FzQ2xvc2VDYWxsZWQpOwogICAgIH0KIAogICAgIHZpcnR1YWwg
SURCRGF0YWJhc2VNZXRhZGF0YSBtZXRhZGF0YSgpIGNvbnN0IHsgcmV0dXJuIElEQkRhdGFiYXNl
TWV0YWRhdGEoKTsgfQpAQCAtMTYzLDE5ICsxNjEsMTIgQEAgcHVibGljOgogICAgICAgICBtX3dh
c0Nsb3NlQ2FsbGVkID0gdHJ1ZTsKICAgICAgICAgbV93ZWJEYXRhYmFzZS5jbG9zZSgpOwogICAg
IH0KLSAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJGcm9udGVuZENhbGxiYWNrcyhQYXNzUmVmUHRy
PElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBjb25uZWN0aW9uKQotICAgIHsKLSAgICAgICAgbV93YXNS
ZWdpc3RlckZyb250ZW5kQ2FsbGJhY2tzQ2FsbGVkID0gdHJ1ZTsKLSAgICAgICAgbV93ZWJEYXRh
YmFzZS5vcGVuKG5ldyBXZWJJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwoY29ubmVjdGlvbikpOwot
ICAgIH0KIAogcHJpdmF0ZToKICAgICBNb2NrSURCRGF0YWJhc2VCYWNrZW5kUHJveHkoV2ViSURC
RGF0YWJhc2VJbXBsJiB3ZWJEYXRhYmFzZSkKLSAgICAgICAgOiBtX3dhc1JlZ2lzdGVyRnJvbnRl
bmRDYWxsYmFja3NDYWxsZWQoZmFsc2UpCi0gICAgICAgICwgbV93YXNDbG9zZUNhbGxlZChmYWxz
ZSkKKyAgICAgICAgOiBtX3dhc0Nsb3NlQ2FsbGVkKGZhbHNlKQogICAgICAgICAsIG1fd2ViRGF0
YWJhc2Uod2ViRGF0YWJhc2UpIHsgfQogCi0gICAgYm9vbCBtX3dhc1JlZ2lzdGVyRnJvbnRlbmRD
YWxsYmFja3NDYWxsZWQ7CiAgICAgYm9vbCBtX3dhc0Nsb3NlQ2FsbGVkOwogCiAgICAgV2ViSURC
RGF0YWJhc2VJbXBsJiBtX3dlYkRhdGFiYXNlOwpAQCAtMTkxLDE4ICsxODIsMjAgQEAgVEVTVChJ
REJEYXRhYmFzZUJhY2tlbmRUZXN0LCBGb3JjZWRDbG9zZSkKICAgICBSZWZQdHI8SURCRGF0YWJh
c2VCYWNrZW5kSW1wbD4gYmFja2VuZCA9IElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNyZWF0ZSgi
ZGIiLCBiYWNraW5nU3RvcmUuZ2V0KCksIGNvb3JkaW5hdG9yLCBmYWN0b3J5LCAidW5pcXVlaWQi
KTsKICAgICBFWFBFQ1RfR1QoYmFja2luZ1N0b3JlLT5yZWZDb3VudCgpLCAxKTsKIAotICAgIFdl
YklEQkRhdGFiYXNlSW1wbCB3ZWJEYXRhYmFzZShiYWNrZW5kKTsKKyAgICBSZWZQdHI8RmFrZUlE
QkRhdGFiYXNlQ2FsbGJhY2tzPiBjb25uZWN0aW9uID0gRmFrZUlEQkRhdGFiYXNlQ2FsbGJhY2tz
OjpjcmVhdGUoKTsKKyAgICBSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3NQcm94eT4gY29ubmVj
dGlvblByb3h5ID0gSURCRGF0YWJhc2VDYWxsYmFja3NQcm94eTo6Y3JlYXRlKGFkb3B0UHRyKG5l
dyBXZWJJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwoY29ubmVjdGlvbikpKTsKKyAgICBXZWJJREJE
YXRhYmFzZUltcGwgd2ViRGF0YWJhc2UoYmFja2VuZCwgY29ubmVjdGlvblByb3h5KTsKIAotICAg
IFJlZlB0cjxNb2NrSURCQ2FsbGJhY2tzPiByZXF1ZXN0MSA9IE1vY2tJREJDYWxsYmFja3M6OmNy
ZWF0ZSgpOwotICAgIGJhY2tlbmQtPm9wZW5Db25uZWN0aW9uKHJlcXVlc3QxKTsKIAogICAgIFJl
ZlB0cjxNb2NrSURCRGF0YWJhc2VCYWNrZW5kUHJveHk+IHByb3h5ID0gTW9ja0lEQkRhdGFiYXNl
QmFja2VuZFByb3h5OjpjcmVhdGUod2ViRGF0YWJhc2UpOworICAgIFJlZlB0cjxNb2NrSURCQ2Fs
bGJhY2tzPiByZXF1ZXN0ID0gTW9ja0lEQkNhbGxiYWNrczo6Y3JlYXRlKCk7CisgICAgYmFja2Vu
ZC0+b3BlbkNvbm5lY3Rpb24ocmVxdWVzdCwgY29ubmVjdGlvbik7CiAKICAgICBTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0ID0gMDsKLSAgICBSZWZQdHI8SURCRGF0YWJhc2U+IGlkYkRh
dGFiYXNlID0gSURCRGF0YWJhc2U6OmNyZWF0ZShjb250ZXh0LCBwcm94eSk7Ci0gICAgaWRiRGF0
YWJhc2UtPnJlZ2lzdGVyRnJvbnRlbmRDYWxsYmFja3MoKTsKKyAgICBSZWZQdHI8SURCRGF0YWJh
c2U+IGlkYkRhdGFiYXNlID0gSURCRGF0YWJhc2U6OmNyZWF0ZShjb250ZXh0LCBwcm94eSwgY29u
bmVjdGlvbik7CiAKICAgICB3ZWJEYXRhYmFzZS5mb3JjZUNsb3NlKCk7CisKICAgICBFWFBFQ1Rf
VFJVRShiYWNraW5nU3RvcmUtPmhhc09uZVJlZigpKTsKIH0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDA5NzRiMWVjMjk3
ZGI0ODMzZWVjYTFjOTFhMTkxNjJjYTNiZGIwOTQuLmYxNGI3NTY2YjljYjM0YmZhMmQ3MTg3OTE3
YjI3YWQwNjY0YmVhYjggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxMi0wOC0yOSAgSm9zaHVh
IEJlbGwgIDxqc2JlbGxAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEluZGV4ZWREQjogQ29uc29s
aWRhdGUgdHdvLXBoYXNlIGNvbm5lY3Rpb24gdG8gYXZvaWQgcmFjZSBjb25kaXRpb25zCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MDQxMQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGl0aW9uYWwgaW5m
b3JtYXRpb24gb2YgdGhlIGNoYW5nZSBzdWNoIGFzIGFwcHJvYWNoLCByYXRpb25hbGUuIFBsZWFz
ZSBhZGQgcGVyLWZ1bmN0aW9uIGRlc2NyaXB0aW9ucyBiZWxvdyAoT09QUyEpLgorCisgICAgICAg
ICogc3RvcmFnZS9pbmRleGVkZGIvaW50dmVyc2lvbi1jbG9zZS1pbi11cGdyYWRlbmVlZGVkLWV4
cGVjdGVkLnR4dDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvZmFjdG9y
eS1iYXNpY3MuanM6CisgICAgICAgIChnZXREYXRhYmFzZU5hbWVzU3VjY2VzczIpOgorICAgICAg
ICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9pbnR2ZXJzaW9uLWNsb3NlLWluLXVwZ3Jh
ZGVuZWVkZWQuanM6CisgICAgICAgIChkZWxldGVTdWNjZXNzKToKKyAgICAgICAgKHVwZ3JhZGVO
ZWVkZWQudHJhbnNhY3Rpb24ub25jb21wbGV0ZSk6CisgICAgICAgICh1cGdyYWRlTmVlZGVkKToK
KyAgICAgICAgKG9wZW5FcnJvcik6CisKIDIwMTItMDgtMjcgIEFubmEgQ2F2ZW5kZXIgIDxhbm5h
Y2NAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFRleHRUcmFjayBtb2RlcyBhcmUgc3RyaW5ncwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW50dmVyc2lvbi1jbG9z
ZS1pbi11cGdyYWRlbmVlZGVkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL2ludHZlcnNpb24tY2xvc2UtaW4tdXBncmFkZW5lZWRlZC1leHBlY3RlZC50eHQKaW5k
ZXggMThmMzNiOGI0NmUyZWI1NDJjY2I5NDgxODkxY2JlYTgzZGFlMDMwYS4uYjI3MzZmNjg2NDkw
ODU5OGUyNGQ0ZTM4ZjI0Yzg0NDBkMjI1NGUwNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvaW50dmVyc2lvbi1jbG9zZS1pbi11cGdyYWRlbmVlZGVkLWV4cGVjdGVk
LnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9uLWNsb3Nl
LWluLXVwZ3JhZGVuZWVkZWQtZXhwZWN0ZWQudHh0CkBAIC0yMCwxMiArMjAsMTQgQEAgZGIuY2xv
c2UoKQogdHJhbnNhY3Rpb24ub25jb21wbGV0ZToKIHNhd1RyYW5zYWN0aW9uQ29tcGxldGUgPSB0
cnVlCiAKLW9wZW5TdWNjZXNzKCk6CitvcGVuRXJyb3IoKToKIFBBU1Mgc2F3VHJhbnNhY3Rpb25D
b21wbGV0ZSBpcyB0cnVlCiBkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQKIFBBU1MgZGIudmVyc2lv
biBpcyA3Ci10cmFuc2FjdGlvbiA9IGRiLnRyYW5zYWN0aW9uKCdvcycpCi1GQUlMIHRyYW5zYWN0
aW9uID0gZGIudHJhbnNhY3Rpb24oJ29zJykgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBJbnZhbGlk
U3RhdGVFcnJvcjogRE9NIElEQkRhdGFiYXNlIEV4Y2VwdGlvbiAxMQorRXhwZWN0aW5nIGV4Y2Vw
dGlvbiBmcm9tIHRyYW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oJ29zJykKK1BBU1MgRXhjZXB0
aW9uIHdhcyB0aHJvd24uCitQQVNTIGNvZGUgaXMgRE9NRXhjZXB0aW9uLklOVkFMSURfU1RBVEVf
RVJSCitQQVNTIGVuYW1lIGlzICdJbnZhbGlkU3RhdGVFcnJvcicKIFBBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2ZhY3RvcnktYmFzaWNzLmpzIGIvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2ZhY3RvcnktYmFzaWNzLmpzCmluZGV4IDdh
MmMzM2U5MTI2MDVlZDMzZmQwNDY3ZTU5MTVjNGNkNjUxNDUyODcuLjc1OTk3MGRmMmVhNDZjZTQy
OWVjZDVkNzY2YmYyMDA0OWQzYmU2YzYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL3Jlc291cmNlcy9mYWN0b3J5LWJhc2ljcy5qcworKysgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvZmFjdG9yeS1iYXNpY3MuanMKQEAgLTU4LDYgKzU4
LDcgQEAgZnVuY3Rpb24gZ2V0RGF0YWJhc2VOYW1lc1N1Y2Nlc3MyKGV2dCkKICAgICByZXF1ZXN0
ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLmRlbGV0ZURhdGFiYXNlKCciICsgbmFtZSArICInKSIp
OwogICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZGVsZXRlRGF0YWJhc2VTdWNjZXNzOwogICAgIHJl
cXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25i
bG9ja2VkID0gdW5leHBlY3RlZEJsb2NrZWRDYWxsYmFjazsKIH0KIAogZnVuY3Rpb24gZGVsZXRl
RGF0YWJhc2VTdWNjZXNzKCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL3Jlc291cmNlcy9pbnR2ZXJzaW9uLWNsb3NlLWluLXVwZ3JhZGVuZWVkZWQuanMgYi9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvaW50dmVyc2lvbi1jbG9zZS1pbi11
cGdyYWRlbmVlZGVkLmpzCmluZGV4IDIxNWMzZDIyMWY0N2Y3Nzc0ODRjZjRmMTA5ODcwMTk5ODQ5
ZjJlODEuLmIxMDY3ODBkMmE0MDdjYmRmNWFjNjQ3ZTI5MGRhZjdmNjU0MWE1NDQgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9pbnR2ZXJzaW9uLWNs
b3NlLWluLXVwZ3JhZGVuZWVkZWQuanMKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvcmVzb3VyY2VzL2ludHZlcnNpb24tY2xvc2UtaW4tdXBncmFkZW5lZWRlZC5qcwpAQCAtMTcs
MTggKzE3LDE3IEBAIGZ1bmN0aW9uIHRlc3QoKQogCiBmdW5jdGlvbiBkZWxldGVTdWNjZXNzKGV2
dCkgewogICAgIGV2YWxBbmRMb2coInJlcXVlc3QgPSBpbmRleGVkREIub3BlbihkYm5hbWUsIDcp
Iik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9u
c3VjY2VzcyA9IHVuZXhwZWN0ZWRTdWNjZXNzQ2FsbGJhY2s7CiAgICAgcmVxdWVzdC5vbnVwZ3Jh
ZGVuZWVkZWQgPSB1cGdyYWRlTmVlZGVkOwogICAgIHJlcXVlc3Qub25ibG9ja2VkID0gdW5leHBl
Y3RlZEJsb2NrZWRDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSBvcGVuRXJyb3I7CiAg
ICAgZGVidWcoIiIpOwogfQogCiB2YXIgc2F3VHJhbnNhY3Rpb25Db21wbGV0ZSA9IGZhbHNlOwog
ZnVuY3Rpb24gdXBncmFkZU5lZWRlZChldnQpCiB7Ci0gICAgZXZlbnQgPSBldnQ7Ci0gICAgZGVi
dWcoIiIpOwotICAgIGRlYnVnKCJ1cGdyYWRlTmVlZGVkKCk6Iik7CisgICAgcHJlYW1ibGUoZXZ0
KTsKICAgICBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKICAgICBzaG91
bGRCZSgiZXZlbnQubmV3VmVyc2lvbiIsICI3Iik7CiAKQEAgLTQwLDE4ICszOSwxNiBAQCBmdW5j
dGlvbiB1cGdyYWRlTmVlZGVkKGV2dCkKICAgICAgICAgZGVidWcoIiIpOwogICAgICAgICBkZWJ1
ZygidHJhbnNhY3Rpb24ub25jb21wbGV0ZToiKTsKICAgICAgICAgZXZhbEFuZExvZygic2F3VHJh
bnNhY3Rpb25Db21wbGV0ZSA9IHRydWUiKTsKLSAgICB9CisgICAgfTsKIH0KIAotZnVuY3Rpb24g
b3BlblN1Y2Nlc3MoZXZ0KQorZnVuY3Rpb24gb3BlbkVycm9yKGV2dCkKIHsKLSAgICBldmVudCA9
IGV2dDsKLSAgICBkZWJ1ZygiIik7Ci0gICAgZGVidWcoIm9wZW5TdWNjZXNzKCk6Iik7CisgICAg
cHJlYW1ibGUoZXZ0KTsKICAgICBzaG91bGRCZVRydWUoInNhd1RyYW5zYWN0aW9uQ29tcGxldGUi
KTsKICAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwogICAg
IHNob3VsZEJlKCdkYi52ZXJzaW9uJywgIjciKTsKLSAgICBldmFsQW5kTG9nKCJ0cmFuc2FjdGlv
biA9IGRiLnRyYW5zYWN0aW9uKCdvcycpIik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigi
dHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbignb3MnKSIsICJET01FeGNlcHRpb24uSU5WQUxJ
RF9TVEFURV9FUlIiLCAiJ0ludmFsaWRTdGF0ZUVycm9yJyIpOwogICAgIGZpbmlzaEpTVGVzdCgp
OwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162360</attachid>
            <date>2012-09-05 16:09:52 -0700</date>
            <delta_ts>2012-09-06 09:11:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-90411-20120905160934.patch</filename>
            <type>text/plain</type>
            <size>74172</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3NTMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzc3NjFkMGY5MGUzZDRj
MWJjMmY4NDc0MTZmZDVlODdjYmI5OWI4Zi4uZDUyMTVmNzRkNTEwOGVmN2VkNWM3YWQ0MWRjZmFk
MWJkZWRiOWIyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcyIEBACisyMDEyLTA4LTI5ICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBDb25z
b2xpZGF0ZSB0d28tcGhhc2UgY29ubmVjdGlvbiB0byBhdm9pZCByYWNlIGNvbmRpdGlvbnMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkwNDExCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkaXRpb25hbCBp
bmZvcm1hdGlvbiBvZiB0aGUgY2hhbmdlIHN1Y2ggYXMgYXBwcm9hY2gsIHJhdGlvbmFsZS4gUGxl
YXNlIGFkZCBwZXItZnVuY3Rpb24gZGVzY3JpcHRpb25zIGJlbG93IChPT1BTISkuCisKKyAgICAg
ICAgTm8gbmV3IHRlc3RzIChPT1BTISkuCisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9J
REJEYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZTo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlOjpJREJEYXRhYmFzZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJEYXRhYmFzZTo6fklEQkRhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QkRhdGFiYXNlOjpjbG9zZUNvbm5lY3Rpb24pOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRi
L0lEQkRhdGFiYXNlLmg6CisgICAgICAgIChJREJEYXRhYmFzZSk6CisgICAgICAgICogTW9kdWxl
cy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpQZW5kaW5nT3BlbkNhbGw6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpQZW5kaW5nT3BlbkNhbGw6OmRh
dGFiYXNlQ2FsbGJhY2tzKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZElt
cGw6OlBlbmRpbmdPcGVuQ2FsbDo6UGVuZGluZ09wZW5DYWxsKToKKyAgICAgICAgKElEQkRhdGFi
YXNlQmFja2VuZEltcGw6OlBlbmRpbmdPcGVuQ2FsbCk6CisgICAgICAgIChXZWJDb3JlOjpJREJE
YXRhYmFzZUJhY2tlbmRJbXBsOjpQZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbDo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OlBlbmRpbmdPcGVuV2l0
aFZlcnNpb25DYWxsOjpkYXRhYmFzZUNhbGxiYWNrcyk6CisgICAgICAgIChXZWJDb3JlOjpJREJE
YXRhYmFzZUJhY2tlbmRJbXBsOjpQZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbDo6UGVuZGluZ09w
ZW5XaXRoVmVyc2lvbkNhbGwpOgorICAgICAgICAoSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6UGVu
ZGluZ09wZW5XaXRoVmVyc2lvbkNhbGwpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VC
YWNrZW5kSW1wbDo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJ
REJEYXRhYmFzZUJhY2tlbmRJbXBsOjpvcGVuSW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6
SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6c2V0VmVyc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpJ
REJEYXRhYmFzZUJhY2tlbmRJbXBsOjpjb25uZWN0aW9uQ291bnQpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6cHJvY2Vzc1BlbmRpbmdDYWxscyk6CisgICAgICAg
IChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpvcGVuQ29ubmVjdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpydW5JbnRWZXJzaW9uQ2hhbmdl
VHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6
b3BlbkNvbm5lY3Rpb25XaXRoVmVyc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFz
ZUJhY2tlbmRJbXBsOjpkZWxldGVEYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRh
YmFzZUJhY2tlbmRJbXBsOjpjbG9zZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURC
RGF0YWJhc2VCYWNrZW5kSW1wbC5oOgorICAgICAgICAoSURCRGF0YWJhc2VCYWNrZW5kSW1wbCk6
CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNl
Lmg6CisgICAgICAgIChJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UpOgorICAgICAgICAqIE1v
ZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGw6OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGw6OklEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbCk6
CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGw6OmNvbm5lY3QpOgor
ICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbC5oOgor
ICAgICAgICAoSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsKToKKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9JREJGYWN0b3J5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkZhY3Rvcnk6Om9w
ZW4pOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJREJGYWN0b3J5QmFja2VuZEltcGw6Om9wZW4pOgorICAg
ICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5oOgorICAgICAg
ICAoSURCRmFjdG9yeUJhY2tlbmRJbXBsKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9J
REJGYWN0b3J5QmFja2VuZEludGVyZmFjZS5oOgorICAgICAgICAoSURCRmFjdG9yeUJhY2tlbmRJ
bnRlcmZhY2UpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQk9wZW5EQlJlcXVlc3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCT3BlbkRCUmVxdWVzdDo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQk9wZW5EQlJlcXVlc3Q6OklEQk9wZW5EQlJlcXVlc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCT3BlbkRCUmVxdWVzdDo6b25VcGdyYWRlTmVlZGVkKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQk9wZW5EQlJlcXVlc3Q6Om9uU3VjY2Vzcyk6CisgICAgICAgICogTW9kdWxl
cy9pbmRleGVkZGIvSURCT3BlbkRCUmVxdWVzdC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgIChJREJPcGVuREJSZXF1ZXN0KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJU
cmFuc2FjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6b25BYm9y
dCk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6b25Db21wbGV0ZSk6CisgICAg
ICAgICogaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmUpOgorCiAyMDEyLTA5LTAzICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgUGFydCAxIG9mIHJlbW92aW5nIFBsYXRmb3JtU3RyaW5nLmgsIG1vdmUgcmVtYWluaW5n
IGZ1bmN0aW9ucyB0byBuZXcgaG9tZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggZjIz
NGU3YjE3ODEzY2EwMDE4ZWI1ZmZkZWE1ZTFjM2MxNTJmZTRhZC4uMjJjMTNmMWZjZDZkMDEyOTIx
OWFkMTU2MWVlODU1YzdkOTBhYzBhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0OSBAQAorMjAxMi0wOC0yOSAgSm9zaHVhIEJlbGwgIDxqc2JlbGxAY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIEluZGV4ZWREQjogQ29uc29saWRhdGUgdHdvLXBoYXNlIGNvbm5lY3Rpb24g
dG8gYXZvaWQgcmFjZSBjb25kaXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD05MDQxMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb2YgdGhlIGNoYW5nZSBzdWNo
IGFzIGFwcHJvYWNoLCByYXRpb25hbGUuIFBsZWFzZSBhZGQgcGVyLWZ1bmN0aW9uIGRlc2NyaXB0
aW9ucyBiZWxvdyAoT09QUyEpLgorCisgICAgICAgICogcHVibGljL1dlYklEQkRhdGFiYXNlLmg6
CisgICAgICAgICogcHVibGljL1dlYklEQkZhY3RvcnkuaDoKKyAgICAgICAgKFdlYktpdCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYklEQkZhY3Rvcnk6Om9wZW4pOgorICAgICAgICAqIHNyYy9JREJD
YWxsYmFja3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OklEQkNhbGxiYWNrc1Byb3h5Ojpv
blN1Y2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpJREJDYWxsYmFja3NQcm94eTo6b25VcGdyYWRl
TmVlZGVkKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OklEQkNhbGxiYWNr
c1Byb3h5OjpzZXREYXRhYmFzZUNhbGxiYWNrcyk6CisgICAgICAgICogc3JjL0lEQkNhbGxiYWNr
c1Byb3h5Lmg6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoSURCQ2FsbGJhY2tzUHJveHkp
OgorICAgICAgICAqIHNyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94eS5jcHA6CisgICAgICAgICog
c3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5Lmg6CisgICAgICAgIChJREJEYXRhYmFzZUJhY2tl
bmRQcm94eSk6CisgICAgICAgICogc3JjL0lEQkZhY3RvcnlCYWNrZW5kUHJveHkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpJREJGYWN0b3J5QmFja2VuZFByb3h5OjpvcGVuKToKKyAgICAgICAgKiBz
cmMvSURCRmFjdG9yeUJhY2tlbmRQcm94eS5oOgorICAgICAgICAoSURCRmFjdG9yeUJhY2tlbmRQ
cm94eSk6CisgICAgICAgICogc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYklEQkRhdGFiYXNlSW1wbDo6V2ViSURCRGF0YWJhc2VJbXBsKToKKyAgICAgICAg
KFdlYktpdDo6V2ViSURCRGF0YWJhc2VJbXBsOjpjbG9zZSk6CisgICAgICAgICogc3JjL1dlYklE
QkRhdGFiYXNlSW1wbC5oOgorICAgICAgICAoV2ViSURCRGF0YWJhc2VJbXBsKToKKyAgICAgICAg
KiBzcmMvV2ViSURCRmFjdG9yeUltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJGYWN0
b3J5SW1wbDo6b3Blbik6CisgICAgICAgICogc3JjL1dlYklEQkZhY3RvcnlJbXBsLmg6CisgICAg
ICAgIChXZWJJREJGYWN0b3J5SW1wbCk6CisgICAgICAgICogdGVzdHMvSURCQWJvcnRPbkNvcnJ1
cHRUZXN0LmNwcDoKKyAgICAgICAgKEZha2VJREJEYXRhYmFzZUNhbGxiYWNrcyk6CisgICAgICAg
IChXZWJDb3JlOjpGYWtlSURCRGF0YWJhc2VDYWxsYmFja3M6OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpGYWtlSURCRGF0YWJhc2VDYWxsYmFja3M6On5GYWtlSURCRGF0YWJhc2VDYWxsYmFj
a3MpOgorICAgICAgICAoV2ViQ29yZTo6RmFrZUlEQkRhdGFiYXNlQ2FsbGJhY2tzOjpGYWtlSURC
RGF0YWJhc2VDYWxsYmFja3MpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpURVNUKToKKyAgICAgICAgKiB0ZXN0cy9JREJEYXRhYmFzZUJhY2tlbmRUZXN0LmNwcDoKKwog
MjAxMi0wOS0wNCAgVGllbi1SZW4gQ2hlbiAgPHRyY2hlbkBjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgW2Nocm9taXVtXSBSZW5hbWUgV2ViVmlld0NsaWVudDo6aGFuZGxlRGlzYW1iaWd1YXRpb25Q
b3B1cApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0
YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2Uu
Y3BwCmluZGV4IGIzZjcwYWRkMjkzMmNlMTU5N2VjYTA1NWFlZDFlZWYwNzBjZDVkYTcuLmQ2NDFk
MDRhNDM2ZTFmZmY1ZjY0MTg0ZmQ4MzQyZjQyZDVjMDM3NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHAKQEAgLTMxLDcgKzMxLDcgQEAK
ICNpbmNsdWRlICJFdmVudFF1ZXVlLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2lu
Y2x1ZGUgIklEQkFueS5oIgotI2luY2x1ZGUgIklEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbC5oIgor
I2luY2x1ZGUgIklEQkRhdGFiYXNlQ2FsbGJhY2tzLmgiCiAjaW5jbHVkZSAiSURCRGF0YWJhc2VF
cnJvci5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNlRXhjZXB0aW9uLmgiCiAjaW5jbHVkZSAiSURC
RXZlbnREaXNwYXRjaGVyLmgiCkBAIC01MCwyOSArNTAsMjggQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1QYXNzUmVmUHRyPElEQkRhdGFiYXNlPiBJREJEYXRhYmFzZTo6Y3JlYXRlKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5k
SW50ZXJmYWNlPiBkYXRhYmFzZSkKK1Bhc3NSZWZQdHI8SURCRGF0YWJhc2U+IElEQkRhdGFiYXNl
OjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJREJE
YXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+IGRhdGFiYXNlLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNl
Q2FsbGJhY2tzPiBjYWxsYmFja3MpCiB7Ci0gICAgUmVmUHRyPElEQkRhdGFiYXNlPiBpZGJEYXRh
YmFzZShhZG9wdFJlZihuZXcgSURCRGF0YWJhc2UoY29udGV4dCwgZGF0YWJhc2UpKSk7CisgICAg
UmVmUHRyPElEQkRhdGFiYXNlPiBpZGJEYXRhYmFzZShhZG9wdFJlZihuZXcgSURCRGF0YWJhc2Uo
Y29udGV4dCwgZGF0YWJhc2UsIGNhbGxiYWNrcykpKTsKICAgICBpZGJEYXRhYmFzZS0+c3VzcGVu
ZElmTmVlZGVkKCk7CiAgICAgcmV0dXJuIGlkYkRhdGFiYXNlLnJlbGVhc2UoKTsKIH0KIAotSURC
RGF0YWJhc2U6OklEQkRhdGFiYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBh
c3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiBiYWNrZW5kKQorSURCRGF0YWJh
c2U6OklEQkRhdGFiYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQ
dHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiBiYWNrZW5kLCBQYXNzUmVmUHRyPElEQkRh
dGFiYXNlQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiAgICAgOiBBY3RpdmVET01PYmplY3QoY29udGV4
dCwgdGhpcykKICAgICAsIG1fYmFja2VuZChiYWNrZW5kKQogICAgICwgbV9jbG9zZVBlbmRpbmco
ZmFsc2UpCiAgICAgLCBtX2NvbnRleHRTdG9wcGVkKGZhbHNlKQorICAgICwgbV9kYXRhYmFzZUNh
bGxiYWNrcyhjYWxsYmFja3MpCiB7CiAgICAgLy8gV2UgcGFzcyBhIHJlZmVyZW5jZSBvZiB0aGlz
IG9iamVjdCBiZWZvcmUgaXQgY2FuIGJlIGFkb3B0ZWQuCiAgICAgcmVsYXhBZG9wdGlvblJlcXVp
cmVtZW50KCk7Ci0gICAgbV9kYXRhYmFzZUNhbGxiYWNrcyA9IElEQkRhdGFiYXNlQ2FsbGJhY2tz
SW1wbDo6Y3JlYXRlKHRoaXMpOwogICAgIG1fbWV0YWRhdGEgPSBtX2JhY2tlbmQtPm1ldGFkYXRh
KCk7CiB9CiAKIElEQkRhdGFiYXNlOjp+SURCRGF0YWJhc2UoKQogewogICAgIGNsb3NlKCk7Ci0g
ICAgbV9kYXRhYmFzZUNhbGxiYWNrcy0+dW5yZWdpc3RlckRhdGFiYXNlKHRoaXMpOwogfQogCiB2
b2lkIElEQkRhdGFiYXNlOjp0cmFuc2FjdGlvbkNyZWF0ZWQoSURCVHJhbnNhY3Rpb24qIHRyYW5z
YWN0aW9uKQpAQCAtMzM1LDEyICszMzQsNiBAQCB2b2lkIElEQkRhdGFiYXNlOjpvblZlcnNpb25D
aGFuZ2UoY29uc3QgU3RyaW5nJiB2ZXJzaW9uKQogICAgIGVucXVldWVFdmVudChJREJWZXJzaW9u
Q2hhbmdlRXZlbnQ6OmNyZWF0ZSh2ZXJzaW9uLCBldmVudE5hbWVzKCkudmVyc2lvbmNoYW5nZUV2
ZW50KSk7CiB9CiAKLXZvaWQgSURCRGF0YWJhc2U6OnJlZ2lzdGVyRnJvbnRlbmRDYWxsYmFja3Mo
KQotewotICAgIEFTU0VSVChtX2JhY2tlbmQpOwotICAgIG1fYmFja2VuZC0+cmVnaXN0ZXJGcm9u
dGVuZENhbGxiYWNrcyhtX2RhdGFiYXNlQ2FsbGJhY2tzKTsKLX0KLQogdm9pZCBJREJEYXRhYmFz
ZTo6ZW5xdWV1ZUV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50KQogewogICAgIEFTU0VSVCgh
bV9jb250ZXh0U3RvcHBlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJEYXRhYmFzZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCRGF0YWJhc2UuaAppbmRleCAyN2YwM2I2ZTM1NDhhODAwZjQxYTNmYWU1ODYwMTc5Yzg3ZmQ3
MmNkLi44MGJlZmEzMTI0OWM4M2FhNGFmYjc4ZjFhOGFmZWE0OThhNWMyNmE2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmgKQEAgLTUxLDcgKzUx
LDcgQEAgdHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKIAogY2xhc3MgSURCRGF0YWJhc2UgOiBw
dWJsaWMgUmVmQ291bnRlZDxJREJEYXRhYmFzZT4sIHB1YmxpYyBFdmVudFRhcmdldCwgcHVibGlj
IEFjdGl2ZURPTU9iamVjdCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SURCRGF0
YWJhc2U+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJEYXRh
YmFzZUJhY2tlbmRJbnRlcmZhY2U+KTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJEYXRhYmFz
ZT4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNl
QmFja2VuZEludGVyZmFjZT4sIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+KTsKICAg
ICB+SURCRGF0YWJhc2UoKTsKIAogICAgIHZvaWQgdHJhbnNhY3Rpb25DcmVhdGVkKElEQlRyYW5z
YWN0aW9uKik7CkBAIC04OCw4ICs4OCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGNvbnN0IEF0
b21pY1N0cmluZyYgaW50ZXJmYWNlTmFtZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0OwogCisgICAgYm9v
bCBpc0Nsb3NlUGVuZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fY2xvc2VQZW5kaW5nOyB9CiAgICAg
dm9pZCBmb3JjZUNsb3NlKCk7Ci0gICAgdm9pZCByZWdpc3RlckZyb250ZW5kQ2FsbGJhY2tzKCk7
CiAgICAgY29uc3QgSURCRGF0YWJhc2VNZXRhZGF0YSBtZXRhZGF0YSgpIGNvbnN0IHsgcmV0dXJu
IG1fbWV0YWRhdGE7IH0KICAgICB2b2lkIGVucXVldWVFdmVudChQYXNzUmVmUHRyPEV2ZW50Pik7
CiAgICAgYm9vbCBkaXNwYXRjaEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50LCBFeGNlcHRp
b25Db2RlJiBlYykgeyByZXR1cm4gRXZlbnRUYXJnZXQ6OmRpc3BhdGNoRXZlbnQoZXZlbnQsIGVj
KTsgfQpAQCAtOTksNyArOTksNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgUmVmQ291bnRlZDxJREJE
YXRhYmFzZT46OmRlcmVmOwogCiBwcml2YXRlOgotICAgIElEQkRhdGFiYXNlKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4pOwor
ICAgIElEQkRhdGFiYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQkRh
dGFiYXNlQmFja2VuZEludGVyZmFjZT4sIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+
KTsKIAogICAgIC8vIEV2ZW50VGFyZ2V0CiAgICAgdmlydHVhbCB2b2lkIHJlZkV2ZW50VGFyZ2V0
KCkgeyByZWYoKTsgfQpAQCAtMTIzLDcgKzEyMyw3IEBAIHByaXZhdGU6CiAgICAgLy8gZGF0YWJh
c2Ugc28gdGhhdCB3ZSBjYW4gY2FuY2VsIHRoZW0gaWYgdGhlIGRhdGFiYXNlIGNsb3Nlcy4KICAg
ICBWZWN0b3I8UmVmUHRyPEV2ZW50PiA+IG1fZW5xdWV1ZWRFdmVudHM7CiAKLSAgICBSZWZQdHI8
SURCRGF0YWJhc2VDYWxsYmFja3NJbXBsPiBtX2RhdGFiYXNlQ2FsbGJhY2tzOworICAgIFJlZlB0
cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gbV9kYXRhYmFzZUNhbGxiYWNrczsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAKaW5kZXggODExMGMyNGMxM2Iz
YzQ2M2VlMzdiMjBkNGNmZmE3MTI0MjQ0YjYzOS4uM2U4YzM3Y2QyNTc2OWJiMGJkY2FkNDhmZmI4
Njc2MWY4OTMyZTJkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAKQEAgLTQxLDM3ICs0MSw0MyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OlBl
bmRpbmdPcGVuQ2FsbCA6IHB1YmxpYyBSZWZDb3VudGVkPFBlbmRpbmdPcGVuQ2FsbD4gewogcHVi
bGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBlbmRpbmdPcGVuQ2FsbD4gY3JlYXRlKFBhc3NS
ZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8UGVu
ZGluZ09wZW5DYWxsPiBjcmVhdGUoUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywg
UGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gZGF0YWJhc2VDYWxsYmFja3MpCiAgICAg
ewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBlbmRpbmdPcGVuQ2FsbChjYWxsYmFja3Mp
KTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQZW5kaW5nT3BlbkNhbGwoY2FsbGJhY2tz
LCBkYXRhYmFzZUNhbGxiYWNrcykpOwogICAgIH0KICAgICBQYXNzUmVmUHRyPElEQkNhbGxiYWNr
cz4gY2FsbGJhY2tzKCkgeyByZXR1cm4gbV9jYWxsYmFja3M7IH0KKyAgICBQYXNzUmVmUHRyPElE
QkRhdGFiYXNlQ2FsbGJhY2tzPiBkYXRhYmFzZUNhbGxiYWNrcygpIHsgcmV0dXJuIG1fZGF0YWJh
c2VDYWxsYmFja3M7IH0KIAogcHJpdmF0ZToKLSAgICBQZW5kaW5nT3BlbkNhbGwoUGFzc1JlZlB0
cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKKyAgICBQZW5kaW5nT3BlbkNhbGwoUGFzc1JlZlB0
cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNr
cz4gZGF0YWJhc2VDYWxsYmFja3MpCiAgICAgICAgIDogbV9jYWxsYmFja3MoY2FsbGJhY2tzKQor
ICAgICAgICAsIG1fZGF0YWJhc2VDYWxsYmFja3MoZGF0YWJhc2VDYWxsYmFja3MpCiAgICAgewog
ICAgIH0KIAogICAgIFJlZlB0cjxJREJDYWxsYmFja3M+IG1fY2FsbGJhY2tzOworICAgIFJlZlB0
cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gbV9kYXRhYmFzZUNhbGxiYWNrczsKIH07CiAKIGNsYXNz
IElEQkRhdGFiYXNlQmFja2VuZEltcGw6OlBlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxsIDogcHVi
bGljIFJlZkNvdW50ZWQ8UGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGw+IHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxQZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbD4gY3JlYXRlKFBh
c3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIGludDY0X3QgdmVyc2lvbikKKyAgICBz
dGF0aWMgUGFzc1JlZlB0cjxQZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbD4gY3JlYXRlKFBhc3NS
ZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxs
YmFja3M+IGRhdGFiYXNlQ2FsbGJhY2tzLCBpbnQ2NF90IHZlcnNpb24pCiAgICAgewotICAgICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IFBlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxsKGNhbGxiYWNr
cywgdmVyc2lvbikpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBlbmRpbmdPcGVuV2l0
aFZlcnNpb25DYWxsKGNhbGxiYWNrcywgZGF0YWJhc2VDYWxsYmFja3MsIHZlcnNpb24pKTsKICAg
ICB9CiAgICAgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcygpIHsgcmV0dXJuIG1f
Y2FsbGJhY2tzOyB9CisgICAgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gZGF0YWJh
c2VDYWxsYmFja3MoKSB7IHJldHVybiBtX2RhdGFiYXNlQ2FsbGJhY2tzOyB9CiAgICAgaW50NjRf
dCB2ZXJzaW9uKCkgeyByZXR1cm4gbV92ZXJzaW9uOyB9CiAKIHByaXZhdGU6Ci0gICAgUGVuZGlu
Z09wZW5XaXRoVmVyc2lvbkNhbGwoUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywg
aW50NjRfdCB2ZXJzaW9uKQorICAgIFBlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxsKFBhc3NSZWZQ
dHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFj
a3M+IGRhdGFiYXNlQ2FsbGJhY2tzLCBpbnQ2NF90IHZlcnNpb24pCiAgICAgICAgIDogbV9jYWxs
YmFja3MoY2FsbGJhY2tzKQorICAgICAgICAsIG1fZGF0YWJhc2VDYWxsYmFja3MoZGF0YWJhc2VD
YWxsYmFja3MpCiAgICAgICAgICwgbV92ZXJzaW9uKHZlcnNpb24pCiAgICAgewogICAgIH0KICAg
ICBSZWZQdHI8SURCQ2FsbGJhY2tzPiBtX2NhbGxiYWNrczsKKyAgICBSZWZQdHI8SURCRGF0YWJh
c2VDYWxsYmFja3M+IG1fZGF0YWJhc2VDYWxsYmFja3M7CiAgICAgaW50NjRfdCBtX3ZlcnNpb247
CiB9OwogCkBAIC0xMzAsNyArMTM2LDYgQEAgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6SURCRGF0
YWJhc2VCYWNrZW5kSW1wbChjb25zdCBTdHJpbmcmIG5hbWUsIElEQkJhY2tpbmdTdG8KICAgICAs
IG1faWRlbnRpZmllcih1bmlxdWVJZGVudGlmaWVyKQogICAgICwgbV9mYWN0b3J5KGZhY3Rvcnkp
CiAgICAgLCBtX3RyYW5zYWN0aW9uQ29vcmRpbmF0b3IoY29vcmRpbmF0b3IpCi0gICAgLCBtX3Bl
bmRpbmdDb25uZWN0aW9uQ291bnQoMCkKIHsKICAgICBBU1NFUlQoIW1fbmFtZS5pc051bGwoKSk7
CiB9CkBAIC0yNDAsNiArMjQ1LDcgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpzZXRW
ZXJzaW9uKGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgUGFzc1JlZlB0cjxJREJDYWwKICAgICAgICAg
cmV0dXJuOwogICAgIH0KICAgICBmb3IgKERhdGFiYXNlQ2FsbGJhY2tzU2V0Ojpjb25zdF9pdGVy
YXRvciBpdCA9IG1fZGF0YWJhc2VDYWxsYmFja3NTZXQuYmVnaW4oKTsgaXQgIT0gbV9kYXRhYmFz
ZUNhbGxiYWNrc1NldC5lbmQoKTsgKytpdCkgeworICAgICAgICAvLyBGcm9udCBlbmQgZW5zdXJl
cyB0aGUgZXZlbnQgaXMgbm90IGZpcmVkIGF0IGNvbm5lY3Rpb25zIHRoYXQgaGF2ZSBjbG9zZVBl
bmRpbmcgc2V0LgogICAgICAgICBpZiAoKml0ICE9IGRhdGFiYXNlQ2FsbGJhY2tzKQogICAgICAg
ICAgICAgKCppdCktPm9uVmVyc2lvbkNoYW5nZSh2ZXJzaW9uKTsKICAgICB9CkBAIC0zNDIsOSAr
MzQ4LDEwIEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6dHJhbnNhY3Rpb25GaW5pc2hl
ZEFuZENvbXBsZXRlRmlyZWQoUGFzc1JlZlB0cjxJREJUCiAgICAgICAgIHByb2Nlc3NQZW5kaW5n
Q2FsbHMoKTsKIH0KIAotaW50MzJfdCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpjb25uZWN0aW9u
Q291bnQoKQorc2l6ZV90IElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNvbm5lY3Rpb25Db3VudCgp
CiB7Ci0gICAgcmV0dXJuIG1fZGF0YWJhc2VDYWxsYmFja3NTZXQuc2l6ZSgpICsgbV9wZW5kaW5n
Q29ubmVjdGlvbkNvdW50OworICAgIC8vIFRoaXMgZG9lcyBub3QgaW5jbHVkZSBwZW5kaW5nIG9w
ZW4gY2FsbHMsIGFzIHRob3NlIHNob3VsZCBub3QgYmxvY2sgdmVyc2lvbiBjaGFuZ2VzIGFuZCBk
ZWxldGVzLgorICAgIHJldHVybiBtX2RhdGFiYXNlQ2FsbGJhY2tzU2V0LnNpemUoKTsKIH0KIAog
dm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpwcm9jZXNzUGVuZGluZ0NhbGxzKCkKQEAgLTM1
NSw5ICszNjIsOCBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OnByb2Nlc3NQZW5kaW5n
Q2FsbHMoKQogICAgICAgICBSZWZQdHI8UGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGw+IHBlbmRp
bmdPcGVuV2l0aFZlcnNpb25DYWxsID0gbV9wZW5kaW5nU2Vjb25kSGFsZk9wZW5XaXRoVmVyc2lv
bkNhbGxzLnRha2VGaXJzdCgpOwogICAgICAgICBBU1NFUlQocGVuZGluZ09wZW5XaXRoVmVyc2lv
bkNhbGwtPnZlcnNpb24oKSA9PSBtX2ludFZlcnNpb24pOwogICAgICAgICBBU1NFUlQobV9pZCAh
PSBJbnZhbGlkSWQpOwotICAgICAgICArK21fcGVuZGluZ0Nvbm5lY3Rpb25Db3VudDsKICAgICAg
ICAgcGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGwtPmNhbGxiYWNrcygpLT5vblN1Y2Nlc3ModGhp
cyk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgLy8gRmFsbCB0aHJvdWdoIHdoZW4gY29tcGxl
dGUsIGFzIHBlbmRpbmcgZGVsZXRlcyBtYXkgYmUgKHBhcnRpYWxseSkgdW5ibG9ja2VkLgogICAg
IH0KIAogICAgIC8vIFBlbmRpbmcgY2FsbHMgbWF5IGJlIHJlcXVldWVkIG9yIGFib3J0ZWQKQEAg
LTQwMCw3ICs0MDYsNyBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OnByb2Nlc3NQZW5k
aW5nQ2FsbHMoKQogICAgIG1fcGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGxzLnN3YXAocGVuZGlu
Z09wZW5XaXRoVmVyc2lvbkNhbGxzKTsKICAgICB3aGlsZSAoIXBlbmRpbmdPcGVuV2l0aFZlcnNp
b25DYWxscy5pc0VtcHR5KCkpIHsKICAgICAgICAgUmVmUHRyPFBlbmRpbmdPcGVuV2l0aFZlcnNp
b25DYWxsPiBwZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbCA9IHBlbmRpbmdPcGVuV2l0aFZlcnNp
b25DYWxscy50YWtlRmlyc3QoKTsKLSAgICAgICAgb3BlbkNvbm5lY3Rpb25XaXRoVmVyc2lvbihw
ZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbC0+Y2FsbGJhY2tzKCksIHBlbmRpbmdPcGVuV2l0aFZl
cnNpb25DYWxsLT52ZXJzaW9uKCkpOworICAgICAgICBvcGVuQ29ubmVjdGlvbldpdGhWZXJzaW9u
KHBlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxsLT5jYWxsYmFja3MoKSwgcGVuZGluZ09wZW5XaXRo
VmVyc2lvbkNhbGwtPmRhdGFiYXNlQ2FsbGJhY2tzKCksIHBlbmRpbmdPcGVuV2l0aFZlcnNpb25D
YWxsLT52ZXJzaW9uKCkpOwogICAgIH0KIAogICAgIC8vIEdpdmVuIHRoZSBjaGVjayBhYm92ZSwg
aXQgYXBwZWFycyB0aGF0IGNhbGxzIGNhbm5vdCBiZSByZXF1ZXVlZCBieQpAQCAtNDA5LDcgKzQx
NSw3IEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6cHJvY2Vzc1BlbmRpbmdDYWxscygp
CiAgICAgbV9wZW5kaW5nT3BlbkNhbGxzLnN3YXAocGVuZGluZ09wZW5DYWxscyk7CiAgICAgd2hp
bGUgKCFwZW5kaW5nT3BlbkNhbGxzLmlzRW1wdHkoKSkgewogICAgICAgICBSZWZQdHI8UGVuZGlu
Z09wZW5DYWxsPiBwZW5kaW5nT3BlbkNhbGwgPSBwZW5kaW5nT3BlbkNhbGxzLnRha2VGaXJzdCgp
OwotICAgICAgICBvcGVuQ29ubmVjdGlvbihwZW5kaW5nT3BlbkNhbGwtPmNhbGxiYWNrcygpKTsK
KyAgICAgICAgb3BlbkNvbm5lY3Rpb24ocGVuZGluZ09wZW5DYWxsLT5jYWxsYmFja3MoKSwgcGVu
ZGluZ09wZW5DYWxsLT5kYXRhYmFzZUNhbGxiYWNrcygpKTsKICAgICB9CiAgICAgQVNTRVJUKG1f
cGVuZGluZ09wZW5DYWxscy5pc0VtcHR5KCkpOwogfQpAQCAtNDI4LDQ0ICs0MzQsMzAgQEAgUGFz
c1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IElEQkRhdGFiYXNlQmFja2Vu
ZEltcGw6OnRyYW5zYWN0aW9uKEQKICAgICByZXR1cm4gdHJhbnNhY3Rpb24ucmVsZWFzZSgpOwog
fQogCi12b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OnJlZ2lzdGVyRnJvbnRlbmRDYWxsYmFj
a3MoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gY2FsbGJhY2tzKQotewotICAgIEFT
U0VSVChtX2JhY2tpbmdTdG9yZS5nZXQoKSk7Ci0gICAgQVNTRVJUKG1fcGVuZGluZ0Nvbm5lY3Rp
b25Db3VudCk7Ci0gICAgLS1tX3BlbmRpbmdDb25uZWN0aW9uQ291bnQ7Ci0gICAgbV9kYXRhYmFz
ZUNhbGxiYWNrc1NldC5hZGQoUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPihjYWxsYmFja3Mp
KTsKLSAgICAvLyBXZSBnaXZlIG1heCBwcmlvcml0eSB0byBvcGVuIGNhbGxzIHRoYXQgZm9sbG93
IHVwZ3JhZGVuZWVkZWQKLSAgICAvLyBldmVudHM7IHRyaWdnZXIgdGhlIHJlc3Qgb2YgdGhlIHF1
ZXVlcyB0byBiZSBzZXJ2aWNlZCB3aGVuIHRob3NlIG9wZW4KLSAgICAvLyBjYWxscyBhcmUgZmlu
aXNoZWQuCi0gICAgcHJvY2Vzc1BlbmRpbmdDYWxscygpOwotfQotCi12b2lkIElEQkRhdGFiYXNl
QmFja2VuZEltcGw6Om9wZW5Db25uZWN0aW9uKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxs
YmFja3MpCit2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6Om9wZW5Db25uZWN0aW9uKFBhc3NS
ZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxs
YmFja3M+IGRhdGFiYXNlQ2FsbGJhY2tzKQogewogICAgIEFTU0VSVChtX2JhY2tpbmdTdG9yZS5n
ZXQoKSk7CiAgICAgaWYgKCFtX3BlbmRpbmdEZWxldGVDYWxscy5pc0VtcHR5KCkgfHwgbV9ydW5u
aW5nVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uIHx8ICFtX3BlbmRpbmdTZXRWZXJzaW9uQ2FsbHMu
aXNFbXB0eSgpKQotICAgICAgICBtX3BlbmRpbmdPcGVuQ2FsbHMuYXBwZW5kKFBlbmRpbmdPcGVu
Q2FsbDo6Y3JlYXRlKGNhbGxiYWNrcykpOworICAgICAgICBtX3BlbmRpbmdPcGVuQ2FsbHMuYXBw
ZW5kKFBlbmRpbmdPcGVuQ2FsbDo6Y3JlYXRlKGNhbGxiYWNrcywgZGF0YWJhc2VDYWxsYmFja3Mp
KTsKICAgICBlbHNlIHsKICAgICAgICAgaWYgKG1faWQgPT0gSW52YWxpZElkICYmICFvcGVuSW50
ZXJuYWwoKSkKICAgICAgICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9y
OjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVOS05PV05fRVJSLCAiSW50ZXJuYWwgZXJy
b3IuIikpOwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICsrbV9wZW5kaW5nQ29ubmVjdGlv
bkNvdW50OworICAgICAgICAgICAgbV9kYXRhYmFzZUNhbGxiYWNrc1NldC5hZGQoUmVmUHRyPElE
QkRhdGFiYXNlQ2FsbGJhY2tzPihkYXRhYmFzZUNhbGxiYWNrcykpOwogICAgICAgICAgICAgY2Fs
bGJhY2tzLT5vblN1Y2Nlc3ModGhpcyk7CiAgICAgICAgIH0KICAgICB9CiB9CiAKLXZvaWQgSURC
RGF0YWJhc2VCYWNrZW5kSW1wbDo6cnVuSW50VmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKGludDY0
X3QgcmVxdWVzdGVkVmVyc2lvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNr
cykKK3ZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6cnVuSW50VmVyc2lvbkNoYW5nZVRyYW5z
YWN0aW9uKGludDY0X3QgcmVxdWVzdGVkVmVyc2lvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+
IHBycENhbGxiYWNrcywgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gcHJwRGF0YWJh
c2VDYWxsYmFja3MpCiB7CiAgICAgUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzID0gcHJw
Q2FsbGJhY2tzOworICAgIFJlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gZGF0YWJhc2VDYWxs
YmFja3MgPSBwcnBEYXRhYmFzZUNhbGxiYWNrczsKICAgICBBU1NFUlQoY2FsbGJhY2tzKTsKICAg
ICBmb3IgKERhdGFiYXNlQ2FsbGJhY2tzU2V0Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1fZGF0YWJh
c2VDYWxsYmFja3NTZXQuYmVnaW4oKTsgaXQgIT0gbV9kYXRhYmFzZUNhbGxiYWNrc1NldC5lbmQo
KTsgKytpdCkgewotICAgICAgICAvLyBOb3RlIHRoYXQgc29tZSBjb25uZWN0aW9ucyBtaWdodCBj
bG9zZSBpbiB0aGUgdmVyc2lvbmNoYW5nZSBldmVudAotICAgICAgICAvLyBoYW5kbGVyIGZvciBz
b21lIG90aGVyIGNvbm5lY3Rpb24sIGFmdGVyIHdoaWNoIGl0cyBvd24gdmVyc2lvbmNoYW5nZQot
ICAgICAgICAvLyBldmVudCBzaG91bGQgbm90IGJlIGZpcmVkLiBUaGUgYmFja2VuZCBkb2Vzbid0
IHdvcnJ5IGFib3V0IHRoaXMsIHdlCi0gICAgICAgIC8vIGp1c3QgcXVldWUgdXAgYSB2ZXJzaW9u
IGNoYW5nZSBldmVudCBmb3IgZXZlcnkgY29ubmVjdGlvbi4gVGhlCi0gICAgICAgIC8vIGZyb250
ZW5kIHRha2VzIGNhcmUgdG8gb25seSBkaXNwYXRjaCB0byBvcGVuIGNvbm5lY3Rpb25zLgotICAg
ICAgICAoKml0KS0+b25WZXJzaW9uQ2hhbmdlKG1faW50VmVyc2lvbiwgcmVxdWVzdGVkVmVyc2lv
bik7CisgICAgICAgIC8vIEZyb250IGVuZCBlbnN1cmVzIHRoZSBldmVudCBpcyBub3QgZmlyZWQg
YXQgY29ubmVjdGlvbnMgdGhhdCBoYXZlIGNsb3NlUGVuZGluZyBzZXQuCisgICAgICAgIGlmICgq
aXQgIT0gZGF0YWJhc2VDYWxsYmFja3MpCisgICAgICAgICAgICAoKml0KS0+b25WZXJzaW9uQ2hh
bmdlKG1faW50VmVyc2lvbiwgcmVxdWVzdGVkVmVyc2lvbik7CiAgICAgfQogICAgIC8vIFRoZSBz
cGVjIGRpY3RhdGVzIHdlIHdhaXQgdW50aWwgYWxsIHRoZSB2ZXJzaW9uIGNoYW5nZSBldmVudHMg
YXJlCiAgICAgLy8gZGVsaXZlcmVkIGFuZCB0aGVuIGNoZWNrIG1fZGF0YWJhc2VDYWxsYmFja3Mu
ZW1wdHkoKSBiZWZvcmUgcHJvY2VlZGluZwpAQCAtNDc0LDExICs0NjYsMTEgQEAgdm9pZCBJREJE
YXRhYmFzZUJhY2tlbmRJbXBsOjpydW5JbnRWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24oaW50NjRf
dCByZXF1ZXN0ZWRWZXIKICAgICAvLyBGSVhNRTogUmVtb3ZlIHRoZSBjYWxsIHRvIG9uQmxvY2tl
ZCBhbmQgaW5zdGVhZCB3YWl0IHVudGlsIHRoZSBmcm9udGVuZAogICAgIC8vIHRlbGxzIHVzIHRo
YXQgYWxsIHRoZSBibG9ja2VkIGV2ZW50cyBoYXZlIGJlZW4gZGVsaXZlcmVkLiBTZWUKICAgICAv
LyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzExMzAKLSAgICBpZiAo
Y29ubmVjdGlvbkNvdW50KCkgPiAwKQorICAgIGlmIChjb25uZWN0aW9uQ291bnQoKSkKICAgICAg
ICAgY2FsbGJhY2tzLT5vbkJsb2NrZWQobV9pbnRWZXJzaW9uKTsKICAgICAvLyBGSVhNRTogQWRk
IHRlc3QgZm9yIG1fcnVubmluZ1ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbi4KLSAgICBpZiAobV9y
dW5uaW5nVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uIHx8IGNvbm5lY3Rpb25Db3VudCgpID4gMCkg
ewotICAgICAgICBtX3BlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxscy5hcHBlbmQoUGVuZGluZ09w
ZW5XaXRoVmVyc2lvbkNhbGw6OmNyZWF0ZShjYWxsYmFja3MsIHJlcXVlc3RlZFZlcnNpb24pKTsK
KyAgICBpZiAobV9ydW5uaW5nVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uIHx8IGNvbm5lY3Rpb25D
b3VudCgpID4gMSkgeworICAgICAgICBtX3BlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxscy5hcHBl
bmQoUGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGw6OmNyZWF0ZShjYWxsYmFja3MsIGRhdGFiYXNl
Q2FsbGJhY2tzLCByZXF1ZXN0ZWRWZXJzaW9uKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
QEAgLTQ5NywxNCArNDg5LDE2IEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6cnVuSW50
VmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKGludDY0X3QgcmVxdWVzdGVkVmVyCiAgICAgICAgIGVj
ID0gSURCRGF0YWJhc2VFeGNlcHRpb246OlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUjsKICAgICB9
CiAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghbV9wZW5kaW5nU2Vjb25kSGFsZk9wZW5XaXRoVmVy
c2lvbkNhbGxzLnNpemUoKSwgIm1fcGVuZGluZ1NlY29uZEhhbGZPcGVuV2l0aFZlcnNpb25DYWxs
cy5zaXplID0gJXp1IiwgbV9wZW5kaW5nU2Vjb25kSGFsZk9wZW5XaXRoVmVyc2lvbkNhbGxzLnNp
emUoKSk7Ci0gICAgbV9wZW5kaW5nU2Vjb25kSGFsZk9wZW5XaXRoVmVyc2lvbkNhbGxzLmFwcGVu
ZChQZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbDo6Y3JlYXRlKGNhbGxiYWNrcywgcmVxdWVzdGVk
VmVyc2lvbikpOworICAgIG1fcGVuZGluZ1NlY29uZEhhbGZPcGVuV2l0aFZlcnNpb25DYWxscy5h
cHBlbmQoUGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGw6OmNyZWF0ZShjYWxsYmFja3MsIGRhdGFi
YXNlQ2FsbGJhY2tzLCByZXF1ZXN0ZWRWZXJzaW9uKSk7CisgICAgbV9kYXRhYmFzZUNhbGxiYWNr
c1NldC5hZGQoZGF0YWJhc2VDYWxsYmFja3MpOwogfQogCi12b2lkIElEQkRhdGFiYXNlQmFja2Vu
ZEltcGw6Om9wZW5Db25uZWN0aW9uV2l0aFZlcnNpb24oUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+
IHBycENhbGxiYWNrcywgaW50NjRfdCB2ZXJzaW9uKQordm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJ
bXBsOjpvcGVuQ29ubmVjdGlvbldpdGhWZXJzaW9uKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBw
cnBDYWxsYmFja3MsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IHBycERhdGFiYXNl
Q2FsbGJhY2tzLCBpbnQ2NF90IHZlcnNpb24pCiB7CiAgICAgUmVmUHRyPElEQkNhbGxiYWNrcz4g
Y2FsbGJhY2tzID0gcHJwQ2FsbGJhY2tzOworICAgIFJlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNr
cz4gZGF0YWJhc2VDYWxsYmFja3MgPSBwcnBEYXRhYmFzZUNhbGxiYWNrczsKICAgICBpZiAoIW1f
cGVuZGluZ0RlbGV0ZUNhbGxzLmlzRW1wdHkoKSB8fCBtX3J1bm5pbmdWZXJzaW9uQ2hhbmdlVHJh
bnNhY3Rpb24gfHwgIW1fcGVuZGluZ1NldFZlcnNpb25DYWxscy5pc0VtcHR5KCkpIHsKLSAgICAg
ICAgbV9wZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbHMuYXBwZW5kKFBlbmRpbmdPcGVuV2l0aFZl
cnNpb25DYWxsOjpjcmVhdGUoY2FsbGJhY2tzLCB2ZXJzaW9uKSk7CisgICAgICAgIG1fcGVuZGlu
Z09wZW5XaXRoVmVyc2lvbkNhbGxzLmFwcGVuZChQZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbDo6
Y3JlYXRlKGNhbGxiYWNrcywgZGF0YWJhc2VDYWxsYmFja3MsIHZlcnNpb24pKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KICAgICBpZiAobV9pZCA9PSBJbnZhbGlkSWQpIHsKQEAgLTUxNiw3ICs1
MTAsNyBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6Om9wZW5Db25uZWN0aW9uV2l0aFZl
cnNpb24oUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+CiAgICAgICAgIH0KICAgICB9CiAgICAgaWYg
KHZlcnNpb24gPiBtX2ludFZlcnNpb24pIHsKLSAgICAgICAgcnVuSW50VmVyc2lvbkNoYW5nZVRy
YW5zYWN0aW9uKHZlcnNpb24sIGNhbGxiYWNrcyk7CisgICAgICAgIHJ1bkludFZlcnNpb25DaGFu
Z2VUcmFuc2FjdGlvbih2ZXJzaW9uLCBjYWxsYmFja3MsIGRhdGFiYXNlQ2FsbGJhY2tzKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAodmVyc2lvbiA8IG1faW50VmVyc2lvbikgewpA
QCAtNTI0LDcgKzUxOCw3IEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6b3BlbkNvbm5l
Y3Rpb25XaXRoVmVyc2lvbihQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4KICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICBBU1NFUlQodmVyc2lvbiA9PSBtX2ludFZlcnNpb24pOwotICAgICsrbV9w
ZW5kaW5nQ29ubmVjdGlvbkNvdW50OworICAgIG1fZGF0YWJhc2VDYWxsYmFja3NTZXQuYWRkKGRh
dGFiYXNlQ2FsbGJhY2tzKTsKICAgICBjYWxsYmFja3MtPm9uU3VjY2Vzcyh0aGlzKTsKIH0KIApA
QCAtNTM1LDE1ICs1MjksMTQgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpkZWxldGVE
YXRhYmFzZShQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJhY2sKICAgICAgICAgcmV0
dXJuOwogICAgIH0KICAgICBSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MgPSBwcnBDYWxs
YmFja3M7Ci0gICAgLy8gRklYTUU6IE9ubHkgZmlyZSBvblZlcnNpb25DaGFuZ2UgaWYgdGhlcmUg
dGhlIGNvbm5lY3Rpb24gaXNuJ3QgaW4KLSAgICAvLyB0aGUgcHJvY2VzcyBvZiBjbG9zaW5nLgot
ICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTEyOQotICAg
IGZvciAoRGF0YWJhc2VDYWxsYmFja3NTZXQ6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9kYXRhYmFz
ZUNhbGxiYWNrc1NldC5iZWdpbigpOyBpdCAhPSBtX2RhdGFiYXNlQ2FsbGJhY2tzU2V0LmVuZCgp
OyArK2l0KQorICAgIGZvciAoRGF0YWJhc2VDYWxsYmFja3NTZXQ6OmNvbnN0X2l0ZXJhdG9yIGl0
ID0gbV9kYXRhYmFzZUNhbGxiYWNrc1NldC5iZWdpbigpOyBpdCAhPSBtX2RhdGFiYXNlQ2FsbGJh
Y2tzU2V0LmVuZCgpOyArK2l0KSB7CisgICAgICAgIC8vIEZyb250IGVuZCBlbnN1cmVzIHRoZSBl
dmVudCBpcyBub3QgZmlyZWQgYXQgY29ubmVjdGlvbnMgdGhhdCBoYXZlIGNsb3NlUGVuZGluZyBz
ZXQuCiAgICAgICAgICgqaXQpLT5vblZlcnNpb25DaGFuZ2UoIiIpOworICAgIH0KICAgICAvLyBG
SVhNRTogT25seSBmaXJlIG9uQmxvY2tlZCBpZiB0aGVyZSBhcmUgb3BlbiBjb25uZWN0aW9ucyBh
ZnRlciB0aGUKICAgICAvLyBWZXJzaW9uQ2hhbmdlRXZlbnRzIGFyZSByZWNlaXZlZCwgbm90IGp1
c3Qgc2V0IHVwIHRvIGZpcmUuCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTcxMTMwCi0gICAgaWYgKGNvbm5lY3Rpb25Db3VudCgpID49IDEpIHsKKyAgICBp
ZiAoY29ubmVjdGlvbkNvdW50KCkpIHsKICAgICAgICAgbV9wZW5kaW5nRGVsZXRlQ2FsbHMuYXBw
ZW5kKFBlbmRpbmdEZWxldGVDYWxsOjpjcmVhdGUoY2FsbGJhY2tzKSk7CiAgICAgICAgIGNhbGxi
YWNrcy0+b25CbG9ja2VkKCk7CiAgICAgICAgIHJldHVybjsKQEAgLTU2NCwxOCArNTU3LDI0IEBA
IHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6Y2xvc2UoUGFzc1JlZlB0cjxJREJEYXRhYmFz
ZUNhbGxiYWNrcz4gcHJwQ2FsbGJhY2tzCiB7CiAgICAgUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJh
Y2tzPiBjYWxsYmFja3MgPSBwcnBDYWxsYmFja3M7CiAgICAgQVNTRVJUKG1fZGF0YWJhc2VDYWxs
YmFja3NTZXQuY29udGFpbnMoY2FsbGJhY2tzKSk7CisKICAgICBtX2RhdGFiYXNlQ2FsbGJhY2tz
U2V0LnJlbW92ZShjYWxsYmFja3MpOwotICAgIGlmIChjb25uZWN0aW9uQ291bnQoKSA+IDEpCisg
ICAgZm9yIChEZXF1ZTxSZWZQdHI8UGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGw+ID46Oml0ZXJh
dG9yIGl0ID0gbV9wZW5kaW5nU2Vjb25kSGFsZk9wZW5XaXRoVmVyc2lvbkNhbGxzLmJlZ2luKCk7
IGl0ICE9IG1fcGVuZGluZ1NlY29uZEhhbGZPcGVuV2l0aFZlcnNpb25DYWxscy5lbmQoKTsgKytp
dCkgeworICAgICAgICBpZiAoKCppdCktPmRhdGFiYXNlQ2FsbGJhY2tzKCkgPT0gY2FsbGJhY2tz
KSB7CisgICAgICAgICAgICAoKml0KS0+Y2FsbGJhY2tzKCktPm9uRXJyb3IoSURCRGF0YWJhc2VF
cnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJREJfQUJPUlRfRVJSLCAiVGhlIGNv
bm5lY3Rpb24gd2FzIGNsb3NlZC4iKSk7CisgICAgICAgICAgICBtX3BlbmRpbmdTZWNvbmRIYWxm
T3BlbldpdGhWZXJzaW9uQ2FsbHMucmVtb3ZlKGl0KTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CisgICAgfQorCisgICAgaWYgKGNvbm5lY3Rpb25Db3VudCgpID4gMSB8fCBtX3BlbmRp
bmdTZWNvbmRIYWxmT3BlbldpdGhWZXJzaW9uQ2FsbHMuc2l6ZSgpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBUcmFuc2FjdGlvblNldCB0cmFuc2FjdGlvbnMobV90cmFuc2FjdGlvbnMpOwogICAg
IHByb2Nlc3NQZW5kaW5nQ2FsbHMoKTsKIAotICAgIEFTU0VSVChtX3RyYW5zYWN0aW9ucy5zaXpl
KCkgLSB0cmFuc2FjdGlvbnMuc2l6ZSgpIDw9IDEpOwotICAgIC8vIEZJWE1FOiBJbnN0ZWFkIG9m
IHJlbHlpbmcgb24gdHJhbnNhY3Rpb25zLnNpemUoKSwgbWFrZSBjb25uZWN0aW9uQ291bnQKLSAg
ICAvLyBhd2FyZSBvZiBpbi1mbGlnaHQgdXBncmFkZW5lZWRlZCBldmVudHMgYXMgd2VsbCBhcyBp
bi1mbGlnaHQgc3VjY2VzcwotICAgIC8vIGV2ZW50cy4KLSAgICBpZiAoIWNvbm5lY3Rpb25Db3Vu
dCgpICYmICFtX3BlbmRpbmdEZWxldGVDYWxscy5zaXplKCkgJiYgbV90cmFuc2FjdGlvbnMuc2l6
ZSgpID09IHRyYW5zYWN0aW9ucy5zaXplKCkpIHsKKyAgICBpZiAoIWNvbm5lY3Rpb25Db3VudCgp
ICYmICFtX3BlbmRpbmdPcGVuQ2FsbHMuc2l6ZSgpICYmICFtX3BlbmRpbmdPcGVuV2l0aFZlcnNp
b25DYWxscy5zaXplKCkgJiYgIW1fcGVuZGluZ0RlbGV0ZUNhbGxzLnNpemUoKSkgeworICAgICAg
ICAvLyBGSVhNRTogVmVyaWZ5IHRoYXQgdGhlIGZvbGxvd2luZyBpcyBzdGlsbCBuZWVkZWQgZXZl
biBpZiB0aGVyZSBhcmUgbm8gY29ubmVjdGlvbnMgb3IgcGVuZGluZyBhY3Rpdml0eToKKyAgICAg
ICAgVHJhbnNhY3Rpb25TZXQgdHJhbnNhY3Rpb25zKG1fdHJhbnNhY3Rpb25zKTsKICAgICAgICAg
Zm9yIChUcmFuc2FjdGlvblNldDo6Y29uc3RfaXRlcmF0b3IgaXQgPSB0cmFuc2FjdGlvbnMuYmVn
aW4oKTsgaXQgIT0gdHJhbnNhY3Rpb25zLmVuZCgpOyArK2l0KQogICAgICAgICAgICAgKCppdCkt
PmFib3J0KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkRhdGFiYXNlQmFja2VuZEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuaAppbmRleCA3ZjMxY2IwNGVhNGVkYmZjZDY3MjE3
YzE5YzhjYTdhMmM5NzNiZTExLi4yMmNjYzQzMjIwYjUwNGZlNzA2ODU2N2I1OWE0NzYyNTVlZWE4
NTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRh
YmFzZUJhY2tlbmRJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oCkBAIC01NSw5ICs1NSw4IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgY29uc3QgaW50NjRfdCBJbnZhbGlkSWQgPSAwOwogICAgIGludDY0X3QgaWQoKSBjb25z
dCB7IHJldHVybiBtX2lkOyB9CiAKLSAgICB2b2lkIHJlZ2lzdGVyRnJvbnRlbmRDYWxsYmFja3Mo
UGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4pOwotICAgIHZvaWQgb3BlbkNvbm5lY3Rp
b24oUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+KTsKLSAgICB2b2lkIG9wZW5Db25uZWN0aW9uV2l0
aFZlcnNpb24oUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBpbnQ2NF90IHZlcnNpb24pOworICAg
IHZvaWQgb3BlbkNvbm5lY3Rpb24oUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBQYXNzUmVmUHRy
PElEQkRhdGFiYXNlQ2FsbGJhY2tzPik7CisgICAgdm9pZCBvcGVuQ29ubmVjdGlvbldpdGhWZXJz
aW9uKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxi
YWNrcz4sIGludDY0X3QgdmVyc2lvbik7CiAgICAgdm9pZCBkZWxldGVEYXRhYmFzZShQYXNzUmVm
UHRyPElEQkNhbGxiYWNrcz4pOwogCiAgICAgLy8gSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNl
CkBAIC03OSw5ICs3OCw5IEBAIHByaXZhdGU6CiAgICAgSURCRGF0YWJhc2VCYWNrZW5kSW1wbChj
b25zdCBTdHJpbmcmIG5hbWUsIElEQkJhY2tpbmdTdG9yZSogZGF0YWJhc2UsIElEQlRyYW5zYWN0
aW9uQ29vcmRpbmF0b3IqLCBJREJGYWN0b3J5QmFja2VuZEltcGwqLCBjb25zdCBTdHJpbmcmIHVu
aXF1ZUlkZW50aWZpZXIpOwogCiAgICAgYm9vbCBvcGVuSW50ZXJuYWwoKTsKLSAgICB2b2lkIHJ1
bkludFZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbihpbnQ2NF90IHJlcXVlc3RlZFZlcnNpb24sIFBh
c3NSZWZQdHI8SURCQ2FsbGJhY2tzPik7CisgICAgdm9pZCBydW5JbnRWZXJzaW9uQ2hhbmdlVHJh
bnNhY3Rpb24oaW50NjRfdCByZXF1ZXN0ZWRWZXJzaW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNr
cz4sIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+KTsKICAgICB2b2lkIGxvYWRPYmpl
Y3RTdG9yZXMoKTsKLSAgICBpbnQzMl90IGNvbm5lY3Rpb25Db3VudCgpOworICAgIHNpemVfdCBj
b25uZWN0aW9uQ291bnQoKTsKICAgICB2b2lkIHByb2Nlc3NQZW5kaW5nQ2FsbHMoKTsKIAogICAg
IHN0YXRpYyB2b2lkIGNyZWF0ZU9iamVjdFN0b3JlSW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW1wbD4sIFBhc3NSZWZQdHI8SURC
T2JqZWN0U3RvcmVCYWNrZW5kSW1wbD4sIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5k
SW1wbD4pOwpAQCAtMTI3LDEwICsxMjYsNiBAQCBwcml2YXRlOgogICAgIGNsYXNzIFBlbmRpbmdE
ZWxldGVDYWxsOwogICAgIERlcXVlPFJlZlB0cjxQZW5kaW5nRGVsZXRlQ2FsbD4gPiBtX3BlbmRp
bmdEZWxldGVDYWxsczsKIAotICAgIC8vIEZJWE1FOiBFbGltaW5hdGUgdGhlIGxpbWJvIHN0YXRl
IGJldHdlZW4gb3BlbkNvbm5lY3Rpb24oKSBhbmQgcmVnaXN0ZXJGcm9udGVuZENhbGxiYWNrcygp
Ci0gICAgLy8gdGhhdCB0aGlzIGNvdW50ZXIgdHJhY2tzLgotICAgIGludDMyX3QgbV9wZW5kaW5n
Q29ubmVjdGlvbkNvdW50OwotCiAgICAgdHlwZWRlZiBMaXN0SGFzaFNldDxSZWZQdHI8SURCRGF0
YWJhc2VDYWxsYmFja3M+ID4gRGF0YWJhc2VDYWxsYmFja3NTZXQ7CiAgICAgRGF0YWJhc2VDYWxs
YmFja3NTZXQgbV9kYXRhYmFzZUNhbGxiYWNrc1NldDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEludGVy
ZmFjZS5oCmluZGV4IDBmNmIzNWQ2MDkzNjRkY2FjYmMxNzE0NjMxZmQxNmM1OTFkY2NkNTUuLmU0
ZmMwY2M4YTcyYWE5NThlMzI3MzkwODQ0MzU1YTE5MDVlZDc3MTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2Vu
ZEludGVyZmFjZS5oCkBAIC02MCw4ICs2MCw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
c2V0VmVyc2lvbihjb25zdCBTdHJpbmcmIHZlcnNpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tz
PiwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4sIEV4Y2VwdGlvbkNvZGUmKSA9IDA7
CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4g
dHJhbnNhY3Rpb24oRE9NU3RyaW5nTGlzdCogc3RvcmVOYW1lcywgdW5zaWduZWQgc2hvcnQgbW9k
ZSwgRXhjZXB0aW9uQ29kZSYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2xvc2UoUGFzc1JlZlB0
cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4pID0gMDsKLQotICAgIHZpcnR1YWwgdm9pZCByZWdpc3Rl
ckZyb250ZW5kQ2FsbGJhY2tzKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+KSA9IDA7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsLmNwcApp
bmRleCBmNjU2NWRjYTFiZDgyMmZlNmRjMTM1OTY4YzNiMGVkYjk5OTVhM2I4Li45NzBkM2ExNjdj
YWY5OTZjN2YwMzFmZjU0YTRmMTU5MjQ5ZjFhYTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbC5j
cHAKQEAgLTMyLDEzICszMiwxMyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NSZWZQ
dHI8SURCRGF0YWJhc2VDYWxsYmFja3NJbXBsPiBJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGw6OmNy
ZWF0ZShJREJEYXRhYmFzZSogZGF0YWJhc2UpCitQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJh
Y2tzSW1wbD4gSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsOjpjcmVhdGUoKQogewotICAgIHJldHVy
biBhZG9wdFJlZihuZXcgSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsKGRhdGFiYXNlKSk7CisgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwoKSk7CiB9CiAKLUlE
QkRhdGFiYXNlQ2FsbGJhY2tzSW1wbDo6SURCRGF0YWJhc2VDYWxsYmFja3NJbXBsKElEQkRhdGFi
YXNlKiBkYXRhYmFzZSkKLSAgICA6IG1fZGF0YWJhc2UoZGF0YWJhc2UpCitJREJEYXRhYmFzZUNh
bGxiYWNrc0ltcGw6OklEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbCgpCisgICAgOiBtX2RhdGFiYXNl
KDApCiB7CiB9CiAKQEAgLTY0LDEwICs2NCwxMSBAQCB2b2lkIElEQkRhdGFiYXNlQ2FsbGJhY2tz
SW1wbDo6b25WZXJzaW9uQ2hhbmdlKGludDY0X3Qgb2xkVmVyc2lvbiwgaW50NjRfdCBuZXdWZQog
ICAgICAgICBtX2RhdGFiYXNlLT5vblZlcnNpb25DaGFuZ2Uob2xkVmVyc2lvbiwgbmV3VmVyc2lv
bik7CiB9CiAKLXZvaWQgSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsOjp1bnJlZ2lzdGVyRGF0YWJh
c2UoSURCRGF0YWJhc2UqIGRhdGFiYXNlKQordm9pZCBJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGw6
OmNvbm5lY3QoSURCRGF0YWJhc2UqIGRhdGFiYXNlKQogewotICAgIEFTU0VSVF9VTlVTRUQoZGF0
YWJhc2UsIGRhdGFiYXNlID09IG1fZGF0YWJhc2UpOwotICAgIG1fZGF0YWJhc2UgPSAwOworICAg
IEFTU0VSVCghbV9kYXRhYmFzZSk7CisgICAgQVNTRVJUKGRhdGFiYXNlKTsKKyAgICBtX2RhdGFi
YXNlID0gZGF0YWJhc2U7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQ2FsbGJhY2tzSW1w
bC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VDYWxsYmFj
a3NJbXBsLmgKaW5kZXggNzkyYmUzYWQ3NmY1NGYwMzU5ZDZhZjE2MDNlNWRkOTNiOTFkNmJhMS4u
NzQ5NzA3MDEwZGJmOTc3MjUxMWI2ZDQ3M2NlYWQxMGIyODI1NzI4MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VDYWxsYmFj
a3NJbXBsLmgKQEAgLTM4LDE4ICszOCwyMCBAQCBjbGFzcyBJREJEYXRhYmFzZTsKIAogY2xhc3Mg
SURCRGF0YWJhc2VDYWxsYmFja3NJbXBsIDogcHVibGljIElEQkRhdGFiYXNlQ2FsbGJhY2tzIHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGw+
IGNyZWF0ZShJREJEYXRhYmFzZSopOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQkRhdGFiYXNl
Q2FsbGJhY2tzSW1wbD4gY3JlYXRlKCk7CiAgICAgdmlydHVhbCB+SURCRGF0YWJhc2VDYWxsYmFj
a3NJbXBsKCk7CiAKKyAgICAvLyBJREJEYXRhYmFzZUNhbGxiYWNrcwogICAgIHZpcnR1YWwgdm9p
ZCBvbkZvcmNlZENsb3NlKCk7CiAgICAgdmlydHVhbCB2b2lkIG9uVmVyc2lvbkNoYW5nZShjb25z
dCBTdHJpbmcmIHZlcnNpb24pOwogICAgIHZpcnR1YWwgdm9pZCBvblZlcnNpb25DaGFuZ2UoaW50
NjRfdCBvbGRWZXJzaW9uLCBpbnQ2NF90IG5ld1ZlcnNpb24pOwotICAgIHZvaWQgdW5yZWdpc3Rl
ckRhdGFiYXNlKElEQkRhdGFiYXNlKik7CisKKyAgICB2b2lkIGNvbm5lY3QoSURCRGF0YWJhc2Uq
KTsKIAogcHJpdmF0ZToKLSAgICBJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwoSURCRGF0YWJhc2Uq
KTsKKyAgICBJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwoKTsKIAotICAgIC8vIG1fZGF0YWJhc2Ug
aGFzIGEgUmVmUHRyIHRvIHRoaXMsIHNvIHVzZSBhIHdlYWsgcG9pbnRlciB0byBhdm9pZCBhIGN5
Y2xlLgorICAgIC8vIFRoZSBpbml0aWFsIElEQk9wZW5EQlJlcXVlc3Qgb3IgZmluYWwgSURCRGF0
YWJhc2UgbWFpbnRhaW5zIGEgUmVmUHRyIHRvIHRoaXMKICAgICBJREJEYXRhYmFzZSogbV9kYXRh
YmFzZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkZhY3RvcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFj
dG9yeS5jcHAKaW5kZXggYzIwNjM1ZjJhYTM3ZGQ5NTFjM2M4NGY0MzQ2MzQxMTA2MGUxMTdhMC4u
NGUzMDIzMTY3MTk5MDMyZDY0ZGM5YjhiZjgxMDRmMDAzMDY5MWNkMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5jcHAKQEAgLTEyMCw4ICsxMjAs
OSBAQCBQYXNzUmVmUHRyPElEQk9wZW5EQlJlcXVlc3Q+IElEQkZhY3Rvcnk6Om9wZW4oU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgYwogICAgIGlmICghaXNDb250ZXh0VmFsaWQoY29u
dGV4dCkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgUmVmUHRyPElEQk9wZW5EQlJlcXVlc3Q+
IHJlcXVlc3QgPSBJREJPcGVuREJSZXF1ZXN0OjpjcmVhdGUoY29udGV4dCwgSURCQW55OjpjcmVh
dGUodGhpcyksIHZlcnNpb24pOwotICAgIG1fYmFja2VuZC0+b3BlbihuYW1lLCB2ZXJzaW9uLCBy
ZXF1ZXN0LCBjb250ZXh0LT5zZWN1cml0eU9yaWdpbigpLCBjb250ZXh0LCBnZXRJbmRleGVkREJE
YXRhYmFzZVBhdGgoY29udGV4dCkpOworICAgIFJlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrc0lt
cGw+IGRhdGFiYXNlQ2FsbGJhY2tzID0gSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsOjpjcmVhdGUo
KTsKKyAgICBSZWZQdHI8SURCT3BlbkRCUmVxdWVzdD4gcmVxdWVzdCA9IElEQk9wZW5EQlJlcXVl
c3Q6OmNyZWF0ZShjb250ZXh0LCBJREJBbnk6OmNyZWF0ZSh0aGlzKSwgZGF0YWJhc2VDYWxsYmFj
a3MsIHZlcnNpb24pOworICAgIG1fYmFja2VuZC0+b3BlbihuYW1lLCB2ZXJzaW9uLCByZXF1ZXN0
LCBkYXRhYmFzZUNhbGxiYWNrcywgY29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKSwgY29udGV4dCwg
Z2V0SW5kZXhlZERCRGF0YWJhc2VQYXRoKGNvbnRleHQpKTsKICAgICByZXR1cm4gcmVxdWVzdDsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFj
dG9yeUJhY2tlbmRJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkZhY3RvcnlCYWNrZW5kSW1wbC5jcHAKaW5kZXggOGRhNWMwMmU0MjNmNmY2NGU1Nzk3MzBkYjcz
ZmEyOWVjMmJlNDYwNi4uYzdlZjg2MGUxM2UyZDE4MTc5YWU1ZWNjMGM3NTk3MDliODg0M2RlOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeUJh
Y2tlbmRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJG
YWN0b3J5QmFja2VuZEltcGwuY3BwCkBAIC0xNTAsNyArMTUwLDcgQEAgUGFzc1JlZlB0cjxJREJC
YWNraW5nU3RvcmU+IElEQkZhY3RvcnlCYWNrZW5kSW1wbDo6b3BlbkJhY2tpbmdTdG9yZShQYXNz
UmVmUHRyPFMKICAgICByZXR1cm4gMDsKIH0KIAotdm9pZCBJREJGYWN0b3J5QmFja2VuZEltcGw6
Om9wZW4oY29uc3QgU3RyaW5nJiBuYW1lLCBpbnQ2NF90IHZlcnNpb24sIFBhc3NSZWZQdHI8SURC
Q2FsbGJhY2tzPiBjYWxsYmFja3MsIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHBycFNlY3Vy
aXR5T3JpZ2luLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBkYXRhRGly
ZWN0b3J5KQordm9pZCBJREJGYWN0b3J5QmFja2VuZEltcGw6Om9wZW4oY29uc3QgU3RyaW5nJiBu
YW1lLCBpbnQ2NF90IHZlcnNpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3Ms
IFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IGRhdGFiYXNlQ2FsbGJhY2tzLCBQYXNz
UmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBwcnBTZWN1cml0eU9yaWdpbiwgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIGNvbnN0IFN0cmluZyYgZGF0YURpcmVjdG9yeSkKIHsKICAgICBSZWZQdHI8U2Vj
dXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luID0gcHJwU2VjdXJpdHlPcmlnaW47CiAgICAgY29u
c3QgU3RyaW5nIHVuaXF1ZUlkZW50aWZpZXIgPSBjb21wdXRlVW5pcXVlSWRlbnRpZmllcihuYW1l
LCBzZWN1cml0eU9yaWdpbi5nZXQoKSk7CkBAIC0xNzUsOSArMTc1LDkgQEAgdm9pZCBJREJGYWN0
b3J5QmFja2VuZEltcGw6Om9wZW4oY29uc3QgU3RyaW5nJiBuYW1lLCBpbnQ2NF90IHZlcnNpb24s
IFBhc3NSZWZQdHIKICAgICAgICAgZGF0YWJhc2VCYWNrZW5kID0gaXQtPnNlY29uZDsKIAogICAg
IGlmICh2ZXJzaW9uID09IElEQkRhdGFiYXNlTWV0YWRhdGE6Ok5vSW50VmVyc2lvbikKLSAgICAg
ICAgZGF0YWJhc2VCYWNrZW5kLT5vcGVuQ29ubmVjdGlvbihjYWxsYmFja3MpOworICAgICAgICBk
YXRhYmFzZUJhY2tlbmQtPm9wZW5Db25uZWN0aW9uKGNhbGxiYWNrcywgZGF0YWJhc2VDYWxsYmFj
a3MpOwogICAgIGVsc2UKLSAgICAgICAgZGF0YWJhc2VCYWNrZW5kLT5vcGVuQ29ubmVjdGlvbldp
dGhWZXJzaW9uKGNhbGxiYWNrcywgdmVyc2lvbik7CisgICAgICAgIGRhdGFiYXNlQmFja2VuZC0+
b3BlbkNvbm5lY3Rpb25XaXRoVmVyc2lvbihjYWxsYmFja3MsIGRhdGFiYXNlQ2FsbGJhY2tzLCB2
ZXJzaW9uKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJbXBsLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5QmFja2VuZEltcGwuaAppbmRl
eCBjYWQzYjVhMjRiMjk5YTkyOTljMmFkMjk0ZTNiMmVhMDRjZmQ3MmE1Li4zYWUwNzAzMTBkYWU4
NzY0MzU5NmNhOWIyOTkzYzMzYTQ2NzBiMWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5QmFja2VuZEltcGwuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5QmFja2VuZEltcGwuaApAQCAtNTcsNyAr
NTcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZUlEQkJhY2tpbmdTdG9yZShj
b25zdCBTdHJpbmcmIGZpbGVJZGVudGlmaWVyKTsKIAogICAgIHZpcnR1YWwgdm9pZCBnZXREYXRh
YmFzZU5hbWVzKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgUGFzc1JlZlB0cjxTZWN1cml0eU9y
aWdpbj4sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIGRhdGFEaXIpOwot
ICAgIHZpcnR1YWwgdm9pZCBvcGVuKGNvbnN0IFN0cmluZyYgbmFtZSwgaW50NjRfdCB2ZXJzaW9u
LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+LCBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBkYXRhRGlyKTsKKyAgICB2aXJ0
dWFsIHZvaWQgb3Blbihjb25zdCBTdHJpbmcmIG5hbWUsIGludDY0X3QgdmVyc2lvbiwgUGFzc1Jl
ZlB0cjxJREJDYWxsYmFja3M+LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiwgUGFz
c1JlZlB0cjxTZWN1cml0eU9yaWdpbj4sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBT
dHJpbmcmIGRhdGFEaXIpOwogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVEYXRhYmFzZShjb25zdCBT
dHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgUGFzc1JlZlB0cjxTZWN1cml0
eU9yaWdpbj4sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIGRhdGFEaXIp
OwogCiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJGYWN0b3J5QmFja2VuZEludGVyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2UuaAppbmRleCA0ZWE1ZDhhMzMw
ZmQwNDFhZjUxY2IyYTk1NDRlYTQ4YWNmNjY2ZmVmLi4wYWEzYmEyYjc4MGQwNzk3NjYzZjYwZjU4
MjNhMWRiMmNhYzY4ODNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJGYWN0b3J5QmFja2VuZEludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlLmgKQEAgLTU0LDcgKzU0
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfklEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlKCkg
eyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZ2V0RGF0YWJhc2VOYW1lcyhQYXNzUmVmUHRyPElEQkNh
bGxiYWNrcz4sIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+LCBTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgY29uc3QgU3RyaW5nJiBkYXRhRGlyKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIG9wZW4o
Y29uc3QgU3RyaW5nJiBuYW1lLCBpbnQ2NF90IHZlcnNpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJh
Y2tzPiwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBjb25zdCBTdHJpbmcmIGRhdGFEaXIpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgb3Blbihjb25z
dCBTdHJpbmcmIG5hbWUsIGludDY0X3QgdmVyc2lvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+
LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiwgUGFzc1JlZlB0cjxTZWN1cml0eU9y
aWdpbj4sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIGRhdGFEaXIpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlRGF0YWJhc2UoY29uc3QgU3RyaW5nJiBuYW1lLCBQ
YXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+LCBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBkYXRhRGlyKSA9IDA7CiB9OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPcGVuREJSZXF1
ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9wZW5EQlJlcXVl
c3QuY3BwCmluZGV4IGU4OWE3NGNmZDliZmI3ZmY3NjNiYTZlZTI1ZmQyMmJjZjI0Njk1MGEuLjU0
Yzk2Yjk3MzYzZmZkYzY2OWMyZmIwZmZmZDM5ZDVmN2Q5NDA3MTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9wZW5EQlJlcXVlc3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9wZW5EQlJlcXVlc3QuY3BwCkBAIC0y
OSw2ICsyOSw3IEBACiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAKICNpbmNsdWRlICJJ
REJEYXRhYmFzZS5oIgorI2luY2x1ZGUgIklEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbC5oIgogI2lu
Y2x1ZGUgIklEQlBlbmRpbmdUcmFuc2FjdGlvbk1vbml0b3IuaCIKICNpbmNsdWRlICJJREJUcmFj
aW5nLmgiCiAjaW5jbHVkZSAiSURCVXBncmFkZU5lZWRlZEV2ZW50LmgiCkBAIC0zNiwxNSArMzcs
MTYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzUmVmUHRyPElEQk9wZW5EQlJlcXVl
c3Q+IElEQk9wZW5EQlJlcXVlc3Q6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0LCBQYXNzUmVmUHRyPElEQkFueT4gc291cmNlLCBpbnQ2NF90IHZlcnNpb24pCitQYXNzUmVm
UHRyPElEQk9wZW5EQlJlcXVlc3Q+IElEQk9wZW5EQlJlcXVlc3Q6OmNyZWF0ZShTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQkFueT4gc291cmNlLCBQYXNzUmVm
UHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbD4gY2FsbGJhY2tzLCBpbnQ2NF90IHZlcnNpb24p
CiB7Ci0gICAgUmVmUHRyPElEQk9wZW5EQlJlcXVlc3Q+IHJlcXVlc3QoYWRvcHRSZWYobmV3IElE
Qk9wZW5EQlJlcXVlc3QoY29udGV4dCwgc291cmNlLCB2ZXJzaW9uKSkpOworICAgIFJlZlB0cjxJ
REJPcGVuREJSZXF1ZXN0PiByZXF1ZXN0KGFkb3B0UmVmKG5ldyBJREJPcGVuREJSZXF1ZXN0KGNv
bnRleHQsIHNvdXJjZSwgY2FsbGJhY2tzLCB2ZXJzaW9uKSkpOwogICAgIHJlcXVlc3QtPnN1c3Bl
bmRJZk5lZWRlZCgpOwogICAgIHJldHVybiByZXF1ZXN0LnJlbGVhc2UoKTsKIH0KIAotSURCT3Bl
bkRCUmVxdWVzdDo6SURCT3BlbkRCUmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0LCBQYXNzUmVmUHRyPElEQkFueT4gc291cmNlLCBpbnQ2NF90IHZlcnNpb24pCitJREJPcGVu
REJSZXF1ZXN0OjpJREJPcGVuREJSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQsIFBhc3NSZWZQdHI8SURCQW55PiBzb3VyY2UsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxs
YmFja3NJbXBsPiBjYWxsYmFja3MsIGludDY0X3QgdmVyc2lvbikKICAgICA6IElEQlJlcXVlc3Qo
Y29udGV4dCwgc291cmNlLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U6Ok5vcm1hbFRh
c2ssIDApCisgICAgLCBtX2RhdGFiYXNlQ2FsbGJhY2tzKGNhbGxiYWNrcykKICAgICAsIG1fdmVy
c2lvbih2ZXJzaW9uKQogewogICAgIEFTU0VSVCghbV9yZXN1bHQpOwpAQCAtNzIsOSArNzQsMTMg
QEAgdm9pZCBJREJPcGVuREJSZXF1ZXN0OjpvblVwZ3JhZGVOZWVkZWQoaW50NjRfdCBvbGRWZXJz
aW9uLCBQYXNzUmVmUHRyPElEQlRyYW5zYWMKICAgICBpZiAoIXNob3VsZEVucXVldWVFdmVudCgp
KQogICAgICAgICByZXR1cm47CiAKKyAgICBBU1NFUlQobV9kYXRhYmFzZUNhbGxiYWNrcyk7CisK
ICAgICBSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiBkYXRhYmFzZUJhY2tlbmQg
PSBwcnBEYXRhYmFzZUJhY2tlbmQ7CiAgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZElu
dGVyZmFjZT4gdHJhbnNhY3Rpb25CYWNrZW5kID0gcHJwVHJhbnNhY3Rpb25CYWNrZW5kOwotICAg
IFJlZlB0cjxJREJEYXRhYmFzZT4gaWRiRGF0YWJhc2UgPSBJREJEYXRhYmFzZTo6Y3JlYXRlKHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgZGF0YWJhc2VCYWNrZW5kKTsKKyAgICBSZWZQdHI8SURC
RGF0YWJhc2U+IGlkYkRhdGFiYXNlID0gSURCRGF0YWJhc2U6OmNyZWF0ZShzY3JpcHRFeGVjdXRp
b25Db250ZXh0KCksIGRhdGFiYXNlQmFja2VuZCwgbV9kYXRhYmFzZUNhbGxiYWNrcyk7CisgICAg
bV9kYXRhYmFzZUNhbGxiYWNrcy0+Y29ubmVjdChpZGJEYXRhYmFzZS5nZXQoKSk7CisgICAgbV9k
YXRhYmFzZUNhbGxiYWNrcyA9IDA7CiAKICAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb24+IGZyb250
ZW5kID0gSURCVHJhbnNhY3Rpb246OmNyZWF0ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIHRy
YW5zYWN0aW9uQmFja2VuZCwgSURCVHJhbnNhY3Rpb246OlZFUlNJT05fQ0hBTkdFLCBpZGJEYXRh
YmFzZS5nZXQoKSwgdGhpcyk7CiAgICAgdHJhbnNhY3Rpb25CYWNrZW5kLT5zZXRDYWxsYmFja3Mo
ZnJvbnRlbmQuZ2V0KCkpOwpAQCAtOTgsMTEgKzEwNCwyMyBAQCB2b2lkIElEQk9wZW5EQlJlcXVl
c3Q6Om9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4gYmFj
a2VuZAogICAgIGlmIChtX3Jlc3VsdCkgewogICAgICAgICBpZGJEYXRhYmFzZSA9IG1fcmVzdWx0
LT5pZGJEYXRhYmFzZSgpOwogICAgICAgICBBU1NFUlQoaWRiRGF0YWJhc2UpOworICAgICAgICBB
U1NFUlQoIW1fZGF0YWJhc2VDYWxsYmFja3MpOworCisgICAgICAgIC8vIElmIGNvbm5lY3Rpb24g
Y2xvc2VkIGJldHdlZW4gb25VcGdyYWRlTmVlZGVkIGFuZCBvblN1Y2Nlc3MsIGFuIGVycm9yCisg
ICAgICAgIC8vIHNob3VsZCBiZSBmaXJlZCBpbnN0ZWFkIG9mIHN1Y2Nlc3MuIFRoZSBiYWNrLWVu
ZCBtYXkgbm90IGJlIGF3YXJlCisgICAgICAgIC8vIG9mIHRoZSBjbG9zaW5nIHN0YXRlIGlmIHRo
ZSBldmVudHMgYXJlIGFzeW5jaHJvbm91c2x5IGRlbGl2ZXJlZC4KKyAgICAgICAgaWYgKGlkYkRh
dGFiYXNlLT5pc0Nsb3NlUGVuZGluZygpKSB7CisgICAgICAgICAgICBtX3Jlc3VsdC5jbGVhcigp
OworICAgICAgICAgICAgb25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJh
c2VFeGNlcHRpb246OklEQl9BQk9SVF9FUlIsICJUaGUgY29ubmVjdGlvbiB3YXMgY2xvc2VkLiIp
KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQogICAgIH0gZWxzZSB7Ci0gICAgICAg
IGlkYkRhdGFiYXNlID0gSURCRGF0YWJhc2U6OmNyZWF0ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCksIGJhY2tlbmQpOworICAgICAgICBBU1NFUlQobV9kYXRhYmFzZUNhbGxiYWNrcyk7CisgICAg
ICAgIGlkYkRhdGFiYXNlID0gSURCRGF0YWJhc2U6OmNyZWF0ZShzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCksIGJhY2tlbmQsIG1fZGF0YWJhc2VDYWxsYmFja3MpOworICAgICAgICBtX2RhdGFiYXNl
Q2FsbGJhY2tzLT5jb25uZWN0KGlkYkRhdGFiYXNlLmdldCgpKTsKKyAgICAgICAgbV9kYXRhYmFz
ZUNhbGxiYWNrcyA9IDA7CiAgICAgICAgIG1fcmVzdWx0ID0gSURCQW55OjpjcmVhdGUoaWRiRGF0
YWJhc2UuZ2V0KCkpOwogICAgIH0KLSAgICBpZGJEYXRhYmFzZS0+cmVnaXN0ZXJGcm9udGVuZENh
bGxiYWNrcygpOwogICAgIGVucXVldWVFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5z
dWNjZXNzRXZlbnQsIGZhbHNlLCBmYWxzZSkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPcGVuREJSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPcGVuREJSZXF1ZXN0LmgKaW5kZXggYzg3ZGI3ZWQxYmRk
MmQ0MDUzZTc0YzEwMmEyZWM2ZDY5NTk3MmUzZi4uMWU4NGI1NGM5ZGE1MDdhZjU1MTljODA4ODk4
NDZkNDJlZmRlZDQ5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCT3BlbkRCUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQk9wZW5EQlJlcXVlc3QuaApAQCAtMzIsOSArMzIsMTEgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCitjbGFzcyBJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGw7CisKIGNsYXNzIElEQk9w
ZW5EQlJlcXVlc3QgOiBwdWJsaWMgSURCUmVxdWVzdCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBh
c3NSZWZQdHI8SURCT3BlbkRCUmVxdWVzdD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBQYXNzUmVmUHRyPElEQkFueT4gc291cmNlLCBpbnQ2NF90IHZlcnNpb24pOworICAgIHN0YXRp
YyBQYXNzUmVmUHRyPElEQk9wZW5EQlJlcXVlc3Q+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgUGFzc1JlZlB0cjxJREJBbnk+IHNvdXJjZSwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNh
bGxiYWNrc0ltcGw+LCBpbnQ2NF90IHZlcnNpb24pOwogICAgIHZpcnR1YWwgfklEQk9wZW5EQlJl
cXVlc3QoKTsKIAogICAgIHVzaW5nIElEQlJlcXVlc3Q6Om9uU3VjY2VzczsKQEAgLTUzLDggKzU1
LDkgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRFbnF1ZXVlRXZlbnQoKSBj
b25zdCBPVkVSUklERTsKIAogcHJpdmF0ZToKLSAgICBJREJPcGVuREJSZXF1ZXN0KFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQkFueT4gc291cmNlLCBpbnQ2NF90IHZlcnNp
b24pOworICAgIElEQk9wZW5EQlJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NS
ZWZQdHI8SURCQW55PiBzb3VyY2UsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3NJbXBs
PiwgaW50NjRfdCB2ZXJzaW9uKTsKIAorICAgIFJlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrc0lt
cGw+IG1fZGF0YWJhc2VDYWxsYmFja3M7CiAgICAgaW50NjRfdCBtX3ZlcnNpb247CiB9OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlv
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5j
cHAKaW5kZXggMjFlNWYzMjhlMzQ1NTM4OWNlMDg1NjYyMDcwZWVlYTE0NjU1ZjYyOC4uZTFlMDVm
MWYyODg2OGRiMmQyODlmMmVmMDVjZWI0MmY1MjUwZWNjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcApAQCAtMjk0LDEyICsy
OTQsMTAgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6b25BYm9ydCgpCiAgICAgfQogICAgIG1fb2Jq
ZWN0U3RvcmVDbGVhbnVwTWFwLmNsZWFyKCk7CiAgICAgY2xvc2VPcGVuQ3Vyc29ycygpOwotICAg
IG1fZGF0YWJhc2UtPnRyYW5zYWN0aW9uRmluaXNoZWQodGhpcyk7Ci0KLSAgICBpZiAobV9jb250
ZXh0U3RvcHBlZCB8fCAhc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQotICAgICAgICByZXR1cm47
CiAKKyAgICAvLyBFbnF1ZXVlIGV2ZW50cyBiZWZvcmUgbm90aWZ5aW5nIGRhdGFiYXNlLCBhcyBk
YXRhYmFzZSBtYXkgY2xvc2Ugd2hpY2ggZW5xdWV1ZXMgbW9yZSBldmVudHMgYW5kIG9yZGVyIG1h
dHRlcnMuCiAgICAgZW5xdWV1ZUV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmFib3J0
RXZlbnQsIHRydWUsIGZhbHNlKSk7CisgICAgbV9kYXRhYmFzZS0+dHJhbnNhY3Rpb25GaW5pc2hl
ZCh0aGlzKTsKIH0KIAogdm9pZCBJREJUcmFuc2FjdGlvbjo6b25Db21wbGV0ZSgpCkBAIC0zMDks
MTIgKzMwNywxMCBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpvbkNvbXBsZXRlKCkKICAgICBtX3N0
YXRlID0gRmluaXNoaW5nOwogICAgIG1fb2JqZWN0U3RvcmVDbGVhbnVwTWFwLmNsZWFyKCk7CiAg
ICAgY2xvc2VPcGVuQ3Vyc29ycygpOwotICAgIG1fZGF0YWJhc2UtPnRyYW5zYWN0aW9uRmluaXNo
ZWQodGhpcyk7Ci0KLSAgICBpZiAobV9jb250ZXh0U3RvcHBlZCB8fCAhc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpKQotICAgICAgICByZXR1cm47CiAKKyAgICAvLyBFbnF1ZXVlIGV2ZW50cyBiZWZv
cmUgbm90aWZ5aW5nIGRhdGFiYXNlLCBhcyBkYXRhYmFzZSBtYXkgY2xvc2Ugd2hpY2ggZW5xdWV1
ZXMgbW9yZSBldmVudHMgYW5kIG9yZGVyIG1hdHRlcnMuCiAgICAgZW5xdWV1ZUV2ZW50KEV2ZW50
OjpjcmVhdGUoZXZlbnROYW1lcygpLmNvbXBsZXRlRXZlbnQsIGZhbHNlLCBmYWxzZSkpOworICAg
IG1fZGF0YWJhc2UtPnRyYW5zYWN0aW9uRmluaXNoZWQodGhpcyk7CiB9CiAKIGJvb2wgSURCVHJh
bnNhY3Rpb246Omhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcAppbmRleCA4Nzk2MWQ4
MmMwOTBiZjIyZjU3N2MzZTRiZWU3ZTI1MWY3N2VmMWQ1Li4yZWVmMmNmZDFlZDE5Y2FmZjAwMDFh
NmNlYTBhY2RmZjFlYjk5YTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKQEAgLTE4NiwzNSArMTg2LDM1IEBAIHByaXZh
dGU6CiAgICAgU3RyaW5nIG1fc2VjdXJpdHlPcmlnaW47CiB9OwogCi1jbGFzcyBFeGVjdXRhYmxl
V2l0aERhdGFiYXNlIDogcHVibGljIFJlZkNvdW50ZWQ8RXhlY3V0YWJsZVdpdGhEYXRhYmFzZT4g
ewotcHVibGljOgotICAgIHZpcnR1YWwgfkV4ZWN1dGFibGVXaXRoRGF0YWJhc2UoKSB7IH07Ci0g
ICAgdm9pZCBzdGFydChJREJGYWN0b3J5QmFja2VuZEludGVyZmFjZSosIFNlY3VyaXR5T3JpZ2lu
KiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lKTsK
LSAgICB2aXJ0dWFsIHZvaWQgZXhlY3V0ZShQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZElu
dGVyZmFjZT4pID0gMDsKLX07Ci0KIGNsYXNzIERhdGFiYXNlQ29ubmVjdGlvbiB7CiBwdWJsaWM6
CiAgICAgRGF0YWJhc2VDb25uZWN0aW9uKCkKICAgICAgICAgOiBtX2lkYkRhdGFiYXNlQ2FsbGJh
Y2tzKEluc3BlY3RvcklEQkRhdGFiYXNlQ2FsbGJhY2tzOjpjcmVhdGUoKSkgeyB9CiAKLSAgICB2
b2lkIGNvbm5lY3QoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+IGlkYkRh
dGFiYXNlKQotICAgIHsKLSAgICAgICAgbV9pZGJEYXRhYmFzZSA9IGlkYkRhdGFiYXNlOwotICAg
ICAgICBtX2lkYkRhdGFiYXNlLT5yZWdpc3RlckZyb250ZW5kQ2FsbGJhY2tzKG1faWRiRGF0YWJh
c2VDYWxsYmFja3MpOwotICAgIH0KLQogICAgIH5EYXRhYmFzZUNvbm5lY3Rpb24oKQogICAgIHsK
ICAgICAgICAgaWYgKG1faWRiRGF0YWJhc2UpCiAgICAgICAgICAgICBtX2lkYkRhdGFiYXNlLT5j
bG9zZShtX2lkYkRhdGFiYXNlQ2FsbGJhY2tzKTsKICAgICB9CiAKKyAgICB2b2lkIGNvbm5lY3Qo
UGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+IGRhdGFiYXNlKSB7IG1faWRi
RGF0YWJhc2UgPSBkYXRhYmFzZTsgfQorICAgIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFj
a3M+IGNhbGxiYWNrcygpIHsgcmV0dXJuIG1faWRiRGF0YWJhc2VDYWxsYmFja3M7IH0KKwogcHJp
dmF0ZToKICAgICBSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiBtX2lkYkRhdGFi
YXNlOwogICAgIFJlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gbV9pZGJEYXRhYmFzZUNhbGxi
YWNrczsKIH07CiAKK2NsYXNzIEV4ZWN1dGFibGVXaXRoRGF0YWJhc2UgOiBwdWJsaWMgUmVmQ291
bnRlZDxFeGVjdXRhYmxlV2l0aERhdGFiYXNlPiB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+RXhl
Y3V0YWJsZVdpdGhEYXRhYmFzZSgpIHsgfTsKKyAgICB2b2lkIHN0YXJ0KElEQkZhY3RvcnlCYWNr
ZW5kSW50ZXJmYWNlKiwgU2VjdXJpdHlPcmlnaW4qLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
Y29uc3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUpOworICAgIHZvaWQgY29ubmVjdChQYXNzUmVmUHRy
PElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4gZGF0YWJhc2UpIHsgbV9jb25uZWN0aW9uLmNv
bm5lY3QoZGF0YWJhc2UpOyB9CisgICAgdmlydHVhbCB2b2lkIGV4ZWN1dGUoUGFzc1JlZlB0cjxJ
REJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+KSA9IDA7Citwcml2YXRlOgorICAgIERhdGFiYXNl
Q29ubmVjdGlvbiBtX2Nvbm5lY3Rpb247Cit9OworCiBjbGFzcyBPcGVuRGF0YWJhc2VDYWxsYmFj
ayA6IHB1YmxpYyBJbnNwZWN0b3JJREJDYWxsYmFjayB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBh
c3NSZWZQdHI8T3BlbkRhdGFiYXNlQ2FsbGJhY2s+IGNyZWF0ZShFeGVjdXRhYmxlV2l0aERhdGFi
YXNlKiBleGVjdXRhYmxlV2l0aERhdGFiYXNlKQpAQCAtMjI3LDYgKzIyNyw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5k
SW50ZXJmYWNlPiBwcnBEYXRhYmFzZSkKICAgICB7CiAgICAgICAgIFJlZlB0cjxJREJEYXRhYmFz
ZUJhY2tlbmRJbnRlcmZhY2U+IGlkYkRhdGFiYXNlID0gcHJwRGF0YWJhc2U7CisgICAgICAgIG1f
ZXhlY3V0YWJsZVdpdGhEYXRhYmFzZS0+Y29ubmVjdChpZGJEYXRhYmFzZSk7CiAgICAgICAgIG1f
ZXhlY3V0YWJsZVdpdGhEYXRhYmFzZS0+ZXhlY3V0ZShpZGJEYXRhYmFzZSk7CiAgICAgfQogCkBA
IC0yMzksNyArMjQwLDcgQEAgcHJpdmF0ZToKIHZvaWQgRXhlY3V0YWJsZVdpdGhEYXRhYmFzZTo6
c3RhcnQoSURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2UqIGlkYkZhY3RvcnksIFNlY3VyaXR5T3Jp
Z2luKiBzZWN1cml0eU9yaWdpbiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29u
c3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUpCiB7CiAgICAgUmVmUHRyPE9wZW5EYXRhYmFzZUNhbGxi
YWNrPiBjYWxsYmFjayA9IE9wZW5EYXRhYmFzZUNhbGxiYWNrOjpjcmVhdGUodGhpcyk7Ci0gICAg
aWRiRmFjdG9yeS0+b3BlbihkYXRhYmFzZU5hbWUsIElEQkRhdGFiYXNlTWV0YWRhdGE6Ok5vSW50
VmVyc2lvbiwgY2FsbGJhY2suZ2V0KCksIHNlY3VyaXR5T3JpZ2luLCBjb250ZXh0LCBTdHJpbmco
KSk7CisgICAgaWRiRmFjdG9yeS0+b3BlbihkYXRhYmFzZU5hbWUsIElEQkRhdGFiYXNlTWV0YWRh
dGE6Ok5vSW50VmVyc2lvbiwgY2FsbGJhY2ssIG1fY29ubmVjdGlvbi5jYWxsYmFja3MoKSwgc2Vj
dXJpdHlPcmlnaW4sIGNvbnRleHQsIFN0cmluZygpKTsKIH0KIAogc3RhdGljIFBhc3NSZWZQdHI8
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiB0cmFuc2FjdGlvbkZvckRhdGFiYXNlKElE
QkRhdGFiYXNlQmFja2VuZEludGVyZmFjZSogaWRiRGF0YWJhc2UsIGNvbnN0IFN0cmluZyYgb2Jq
ZWN0U3RvcmVOYW1lKQpAQCAtMzEwLDcgKzMxMSw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgZXhlY3V0ZShQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4gcHJwRGF0
YWJhc2UpCiAgICAgewogICAgICAgICBSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNl
PiBpZGJEYXRhYmFzZSA9IHBycERhdGFiYXNlOwotICAgICAgICBtX2Nvbm5lY3Rpb24uY29ubmVj
dChpZGJEYXRhYmFzZSk7CiAgICAgICAgIGlmICghbV9mcm9udGVuZFByb3ZpZGVyLT5mcm9udGVu
ZCgpKQogICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0zNTUsNyArMzU1LDYgQEAgcHJpdmF0ZToK
ICAgICAgICAgLCBtX3JlcXVlc3RJZChyZXF1ZXN0SWQpIHsgfQogICAgIFJlZlB0cjxJbnNwZWN0
b3JJbmRleGVkREJBZ2VudDo6RnJvbnRlbmRQcm92aWRlcj4gbV9mcm9udGVuZFByb3ZpZGVyOwog
ICAgIGludCBtX3JlcXVlc3RJZDsKLSAgICBEYXRhYmFzZUNvbm5lY3Rpb24gbV9jb25uZWN0aW9u
OwogfTsKIAogc3RhdGljIFBhc3NSZWZQdHI8SURCS2V5PiBpZGJLZXlGcm9tSW5zcGVjdG9yT2Jq
ZWN0KEluc3BlY3Rvck9iamVjdCoga2V5KQpAQCAtNTg3LDcgKzU4Niw2IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgZXhlY3V0ZShQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVy
ZmFjZT4gcHJwRGF0YWJhc2UpCiAgICAgewogICAgICAgICBSZWZQdHI8SURCRGF0YWJhc2VCYWNr
ZW5kSW50ZXJmYWNlPiBpZGJEYXRhYmFzZSA9IHBycERhdGFiYXNlOwotICAgICAgICBtX2Nvbm5l
Y3Rpb24uY29ubmVjdChpZGJEYXRhYmFzZSk7CiAgICAgICAgIGlmICghbV9mcm9udGVuZFByb3Zp
ZGVyLT5mcm9udGVuZCgpKQogICAgICAgICAgICAgcmV0dXJuOwogCkBAIC02MzMsNyArNjMxLDYg
QEAgcHJpdmF0ZToKICAgICBSZWZQdHI8SURCS2V5UmFuZ2U+IG1faWRiS2V5UmFuZ2U7CiAgICAg
aW50IG1fc2tpcENvdW50OwogICAgIHVuc2lnbmVkIG1fcGFnZVNpemU7Ci0gICAgRGF0YWJhc2VD
b25uZWN0aW9uIG1fY29ubmVjdGlvbjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJEYXRhYmFzZS5oIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCRGF0YWJhc2UuaAppbmRleCBhOGIwMzVjNzI3
Zjg4ZGRiZjBjZTE3MGVhZDc0MTg1YzY4YmUyYWQ2Li44M2I5YTQyNWY4NDdmYTlkODgxNzM3YzMw
OWVhOGEyODJhYjRlZjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJJREJEYXRhYmFzZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YklEQkRhdGFiYXNlLmgKQEAgLTY2LDggKzY2LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCBjbG9zZSgpIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAgICAgdmlydHVhbCB2
b2lkIGZvcmNlQ2xvc2UoKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogCi0gICAg
dmlydHVhbCB2b2lkIG9wZW4oV2ViSURCRGF0YWJhc2VDYWxsYmFja3MqKSB7IFdFQktJVF9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsgfQotCiBwcm90ZWN0ZWQ6CiAgICAgV2ViSURCRGF0YWJhc2UoKSB7
IH0KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJG
YWN0b3J5LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJGYWN0b3J5LmgK
aW5kZXggZjEwYThlYjlhZTBmNDk3OTQxOGExZmIzZjgzZWE2NDc5ZjYwMjdhNy4uNTE0NTdjMWNh
MDZjMTY1Y2NiMjMxMjc5M2M0OWUwODc5Y2I3ZDUyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCRmFjdG9yeS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYklEQkZhY3RvcnkuaApAQCAtNDEsNiArNDEsNyBAQCBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAogY2xhc3MgV2ViRnJhbWU7CiBjbGFzcyBXZWJJREJEYXRhYmFzZTsKK2NsYXNz
IFdlYklEQkRhdGFiYXNlQ2FsbGJhY2tzOwogY2xhc3MgV2ViU2VjdXJpdHlPcmlnaW47CiAKIC8v
IFRoZSBlbnRyeSBwb2ludCBpbnRvIHRoZSBJbmRleGVkRGF0YWJhc2UgQVBJLiAgVGhlc2UgY2xh
c3NlcyBtYXRjaCB0aGVpciBGb28gYW5kCkBAIC01NiwxMyArNTcsMTMgQEAgcHVibGljOgogCiAg
ICAgLy8gRklYTUU6IERlbGV0ZSB0aGlzIG1ldGhvZCB3aGVuIGRlcml2ZWQgY2xhc3NlcyBpbiBj
aHJvbWl1bSBoYXZlCiAgICAgLy8gaW1wbGVtZW50ZWQgdGhlIG90aGVyIG9wZW4gbWV0aG9kLgot
ICAgIHZpcnR1YWwgdm9pZCBvcGVuKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgV2ViSURCQ2FsbGJh
Y2tzKiBjYWxsYmFja3MsIGNvbnN0IFdlYlNlY3VyaXR5T3JpZ2luJiBvcmlnaW4sIFdlYkZyYW1l
KiBmcmFtZSwgY29uc3QgV2ViU3RyaW5nJiBkYXRhRGlyKQorICAgIHZpcnR1YWwgdm9pZCBvcGVu
KGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgV2ViSURCQ2FsbGJhY2tzKiBjYWxsYmFja3MsIFdlYklE
QkRhdGFiYXNlQ2FsbGJhY2tzKiBkYXRhYmFzZUNhbGxiYWNrcywgY29uc3QgV2ViU2VjdXJpdHlP
cmlnaW4mIG9yaWdpbiwgV2ViRnJhbWUqIGZyYW1lLCBjb25zdCBXZWJTdHJpbmcmIGRhdGFEaXIp
CiAgICAgewotICAgICAgICBvcGVuKG5hbWUsIFdlYklEQk1ldGFkYXRhOjpOb0ludFZlcnNpb24s
IGNhbGxiYWNrcywgb3JpZ2luLCBmcmFtZSwgZGF0YURpcik7CisgICAgICAgIG9wZW4obmFtZSwg
V2ViSURCTWV0YWRhdGE6Ok5vSW50VmVyc2lvbiwgY2FsbGJhY2tzLCBkYXRhYmFzZUNhbGxiYWNr
cywgb3JpZ2luLCBmcmFtZSwgZGF0YURpcik7CiAgICAgfQogCiAgICAgLy8gVGhlIFdlYktpdCBp
bXBsZW1lbnRhdGlvbiBvZiBvcGVuIGlnbm9yZXMgdGhlIFdlYkZyYW1lKiBwYXJhbWV0ZXIuCi0g
ICAgdmlydHVhbCB2b2lkIG9wZW4oY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBsb25nIGxvbmcgdmVy
c2lvbiwgV2ViSURCQ2FsbGJhY2tzKiBjYWxsYmFja3MsIGNvbnN0IFdlYlNlY3VyaXR5T3JpZ2lu
JiBvcmlnaW4sIFdlYkZyYW1lKiBmcmFtZSwgY29uc3QgV2ViU3RyaW5nJiBkYXRhRGlyKSB7IFdF
QktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBvcGVuKGNvbnN0
IFdlYlN0cmluZyYgbmFtZSwgbG9uZyBsb25nIHZlcnNpb24sIFdlYklEQkNhbGxiYWNrcyogY2Fs
bGJhY2tzLCBXZWJJREJEYXRhYmFzZUNhbGxiYWNrcyogZGF0YWJhc2VDYWxsYmFja3MsIGNvbnN0
IFdlYlNlY3VyaXR5T3JpZ2luJiBvcmlnaW4sIFdlYkZyYW1lKiBmcmFtZSwgY29uc3QgV2ViU3Ry
aW5nJiBkYXRhRGlyKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogCiAgICAgdmly
dHVhbCB2b2lkIGRlbGV0ZURhdGFiYXNlKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgV2ViSURCQ2Fs
bGJhY2tzKiwgY29uc3QgV2ViU2VjdXJpdHlPcmlnaW4mLCBXZWJGcmFtZSosIGNvbnN0IFdlYlN0
cmluZyYgZGF0YURpcikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJDYWxsYmFja3NQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJDYWxsYmFja3NQcm94eS5jcHAKaW5kZXgg
MTkzYmYyYjVmNmM2NjZjN2JkNTA2MmFkNDQ3NDQxNWJmYjMwNDI5Ny4uYWY0OTg0YTc3YzRiODVl
MjZlMjllZjg4YThkMjgzZGU0NmFjYzM4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvSURCQ2FsbGJhY2tzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL0lEQkNhbGxiYWNrc1Byb3h5LmNwcApAQCAtMzQsMTMgKzM0LDE1IEBACiAjaW5jbHVk
ZSAiSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZS5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNlQmFj
a2VuZEludGVyZmFjZS5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNlQmFja2VuZFByb3h5LmgiCisj
aW5jbHVkZSAiSURCRGF0YWJhc2VDYWxsYmFja3NQcm94eS5oIgogI2luY2x1ZGUgIklEQkRhdGFi
YXNlRXJyb3IuaCIKICNpbmNsdWRlICJJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2UuaCIK
ICNpbmNsdWRlICJJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJX
ZWJJREJDYWxsYmFja3MuaCIKICNpbmNsdWRlICJXZWJJREJDdXJzb3JJbXBsLmgiCi0jaW5jbHVk
ZSAiV2ViSURCRGF0YWJhc2VJbXBsLmgiCisjaW5jbHVkZSAiV2ViSURCRGF0YWJhc2VDYWxsYmFj
a3MuaCIKICNpbmNsdWRlICJXZWJJREJEYXRhYmFzZUVycm9yLmgiCisjaW5jbHVkZSAiV2ViSURC
RGF0YWJhc2VJbXBsLmgiCiAjaW5jbHVkZSAiV2ViSURCS2V5LmgiCiAjaW5jbHVkZSAiV2ViSURC
VHJhbnNhY3Rpb25JbXBsLmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViU2VyaWFsaXplZFNjcmlw
dFZhbHVlLmgiCkBAIC03NSw3ICs3Nyw4IEBAIHZvaWQgSURCQ2FsbGJhY2tzUHJveHk6Om9uU3Vj
Y2VzcyhQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U+IGlkYkN1cnNvCiAKIHZv
aWQgSURCQ2FsbGJhY2tzUHJveHk6Om9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFj
a2VuZEludGVyZmFjZT4gYmFja2VuZCkKIHsKLSAgICBtX2NhbGxiYWNrcy0+b25TdWNjZXNzKG5l
dyBXZWJJREJEYXRhYmFzZUltcGwoYmFja2VuZCkpOworICAgIEFTU0VSVChtX2RhdGFiYXNlQ2Fs
bGJhY2tzLmdldCgpKTsKKyAgICBtX2NhbGxiYWNrcy0+b25TdWNjZXNzKG5ldyBXZWJJREJEYXRh
YmFzZUltcGwoYmFja2VuZCwgbV9kYXRhYmFzZUNhbGxiYWNrcy5yZWxlYXNlKCkpKTsKIH0KIAog
dm9pZCBJREJDYWxsYmFja3NQcm94eTo6b25TdWNjZXNzKFBhc3NSZWZQdHI8SURCS2V5PiBpZGJL
ZXkpCkBAIC0xMzcsOSArMTQwLDE3IEBAIHZvaWQgSURCQ2FsbGJhY2tzUHJveHk6Om9uQmxvY2tl
ZChpbnQ2NF90IGV4aXN0aW5nVmVyc2lvbikKIAogdm9pZCBJREJDYWxsYmFja3NQcm94eTo6b25V
cGdyYWRlTmVlZGVkKGludDY0X3Qgb2xkVmVyc2lvbiwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlv
bkJhY2tlbmRJbnRlcmZhY2U+IHRyYW5zYWN0aW9uLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFj
a2VuZEludGVyZmFjZT4gZGF0YWJhc2UpCiB7Ci0gICAgbV9jYWxsYmFja3MtPm9uVXBncmFkZU5l
ZWRlZChvbGRWZXJzaW9uLCBuZXcgV2ViSURCVHJhbnNhY3Rpb25JbXBsKHRyYW5zYWN0aW9uKSwg
bmV3IFdlYklEQkRhdGFiYXNlSW1wbChkYXRhYmFzZSkpOworICAgIEFTU0VSVChtX2RhdGFiYXNl
Q2FsbGJhY2tzKTsKKyAgICBtX2NhbGxiYWNrcy0+b25VcGdyYWRlTmVlZGVkKG9sZFZlcnNpb24s
IG5ldyBXZWJJREJUcmFuc2FjdGlvbkltcGwodHJhbnNhY3Rpb24pLCBuZXcgV2ViSURCRGF0YWJh
c2VJbXBsKGRhdGFiYXNlLCBtX2RhdGFiYXNlQ2FsbGJhY2tzKSk7Cit9CisKK3ZvaWQgSURCQ2Fs
bGJhY2tzUHJveHk6OnNldERhdGFiYXNlQ2FsbGJhY2tzKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VD
YWxsYmFja3NQcm94eT4gZGF0YWJhc2VDYWxsYmFja3MpCit7CisgICAgQVNTRVJUKCFtX2RhdGFi
YXNlQ2FsbGJhY2tzKTsKKyAgICBtX2RhdGFiYXNlQ2FsbGJhY2tzID0gZGF0YWJhc2VDYWxsYmFj
a3M7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCisKICNlbmRpZiAvLyBFTkFCTEUoSU5E
RVhFRF9EQVRBQkFTRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lE
QkNhbGxiYWNrc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJDYWxsYmFj
a3NQcm94eS5oCmluZGV4IDgyNTc1OGFhZGU5M2Y0MWYyNjI5MzAzNjhiZDk2NjYwZmU1MmE1Mjcu
LmY2MTNhODVjMmU0ZWQxNmNiODg3ZjY4YTA1MDMxODQ5Y2IxY2VmMjAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkNhbGxiYWNrc1Byb3h5LmgKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ2FsbGJhY2tzUHJveHkuaApAQCAtMzksNiArMzksNyBA
QAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYklEQkNhbGxiYWNrczsKK2NsYXNzIElE
QkRhdGFiYXNlQ2FsbGJhY2tzUHJveHk7CiAKIGNsYXNzIElEQkNhbGxiYWNrc1Byb3h5IDogcHVi
bGljIFdlYkNvcmU6OklEQkNhbGxiYWNrcyB7CiBwdWJsaWM6CkBAIC01OSwxMCArNjAsMTMgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBvbkJsb2NrZWQoaW50NjRfdCBleGlzdGluZ1ZlcnNp
b24pOwogICAgIHZpcnR1YWwgdm9pZCBvblVwZ3JhZGVOZWVkZWQoaW50NjRfdCBvbGRWZXJzaW9u
LCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4sIFBh
c3NSZWZQdHI8V2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPik7CiAKKyAgICB2
b2lkIHNldERhdGFiYXNlQ2FsbGJhY2tzKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3NQ
cm94eT4pOworCiBwcml2YXRlOgogICAgIElEQkNhbGxiYWNrc1Byb3h5KFBhc3NPd25QdHI8V2Vi
SURCQ2FsbGJhY2tzPik7CiAKICAgICBPd25QdHI8V2ViSURCQ2FsbGJhY2tzPiBtX2NhbGxiYWNr
czsKKyAgICBSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3NQcm94eT4gbV9kYXRhYmFzZUNhbGxi
YWNrczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuY3BwIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuY3BwCmluZGV4IDU2YWZl
NWZiNWQyYjYyZmE0NDQ5OTU0NDY5MzBhMDFkMGJjOTc3OTguLjUwMWNlNjFmYjU5NTYyNjZiMGMz
YmYxYjRjMDJhZWY2Y2RhMDA4MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94eS5jcHAKQEAgLTEwNywxMSArMTA3LDYgQEAg
dm9pZCBJREJEYXRhYmFzZUJhY2tlbmRQcm94eTo6Y2xvc2UoUGFzc1JlZlB0cjxJREJEYXRhYmFz
ZUNhbGxiYWNrcz4pCiAgICAgbV93ZWJJREJEYXRhYmFzZS0+Y2xvc2UoKTsKIH0KIAotdm9pZCBJ
REJEYXRhYmFzZUJhY2tlbmRQcm94eTo6cmVnaXN0ZXJGcm9udGVuZENhbGxiYWNrcyhQYXNzUmVm
UHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBkYXRhYmFzZUNhbGxiYWNrcykKLXsKLSAgICBtX3dl
YklEQkRhdGFiYXNlLT5vcGVuKG5ldyBXZWJJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwoZGF0YWJh
c2VDYWxsYmFja3MpKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBF
TkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94eS5oCmluZGV4IDJhOTM2MDBjNmYyZmEwYzI2N2My
ZGEwNmZiOGI5MjE2ZmQ4MjhlMzYuLjc5NTYxMGFhNjU3MmRjYTQ2Y2MyNjRkYjViMDhiZDE3OGMx
YzU2NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNl
QmFja2VuZFByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJh
c2VCYWNrZW5kUHJveHkuaApAQCAtNTAsOCArNTAsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBQ
YXNzUmVmUHRyPFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gdHJhbnNh
Y3Rpb24oV2ViQ29yZTo6RE9NU3RyaW5nTGlzdCogc3RvcmVOYW1lcywgdW5zaWduZWQgc2hvcnQg
bW9kZSwgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSYpOwogICAgIHZpcnR1YWwgdm9pZCBjbG9zZShQ
YXNzUmVmUHRyPFdlYkNvcmU6OklEQkRhdGFiYXNlQ2FsbGJhY2tzPik7CiAKLSAgICB2aXJ0dWFs
IHZvaWQgcmVnaXN0ZXJGcm9udGVuZENhbGxiYWNrcyhQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkRh
dGFiYXNlQ2FsbGJhY2tzPik7Ci0KIHByaXZhdGU6CiAgICAgSURCRGF0YWJhc2VCYWNrZW5kUHJv
eHkoUGFzc093blB0cjxXZWJJREJEYXRhYmFzZT4pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9JREJGYWN0b3J5QmFja2VuZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL0lEQkZhY3RvcnlCYWNrZW5kUHJveHkuY3BwCmluZGV4IGJhYmNiYWUx
ODQwOWM1ZGQyNTkyYzBkZmQ5MjMzMjZmYmY2MGU5NGEuLjI4OTk1ZWM2NjBlMzFmZjdjZWZhZDkz
ZWIzYmRhMjM0MWFhMWVmZjggMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0lEQkZhY3RvcnlCYWNrZW5kUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL0lEQkZhY3RvcnlCYWNrZW5kUHJveHkuY3BwCkBAIC0zNCwxMiArMzQsMTQgQEAKICNpbmNs
dWRlICJDcm9zc1RocmVhZFRhc2suaCIKICNpbmNsdWRlICJET01TdHJpbmdMaXN0LmgiCiAjaW5j
bHVkZSAiSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuaCIKKyNpbmNsdWRlICJJREJEYXRhYmFzZUNh
bGxiYWNrcy5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNlRXJyb3IuaCIKICNpbmNsdWRlICJTY3Jp
cHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNs
dWRlICJXZWJGcmFtZUltcGwuaCIKICNpbmNsdWRlICJXZWJJREJDYWxsYmFja3NJbXBsLmgiCiAj
aW5jbHVkZSAiV2ViSURCRGF0YWJhc2UuaCIKKyNpbmNsdWRlICJXZWJJREJEYXRhYmFzZUNhbGxi
YWNrc0ltcGwuaCIKICNpbmNsdWRlICJXZWJJREJEYXRhYmFzZUVycm9yLmgiCiAjaW5jbHVkZSAi
V2ViSURCRmFjdG9yeS5oIgogI2luY2x1ZGUgIldlYktpdC5oIgpAQCAtMjAzLDE1ICsyMDUsMTYg
QEAgdm9pZCBJREJGYWN0b3J5QmFja2VuZFByb3h5OjpnZXREYXRhYmFzZU5hbWVzKFBhc3NSZWZQ
dHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmEKIH0KIAogCi12b2lkIElEQkZhY3RvcnlCYWNrZW5k
UHJveHk6Om9wZW4oY29uc3QgU3RyaW5nJiBuYW1lLCBpbnQ2NF90IHZlcnNpb24sIFBhc3NSZWZQ
dHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmFja3MsIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+
IHNlY3VyaXR5T3JpZ2luLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBT
dHJpbmcmIGRhdGFEaXIpCit2b2lkIElEQkZhY3RvcnlCYWNrZW5kUHJveHk6Om9wZW4oY29uc3Qg
U3RyaW5nJiBuYW1lLCBpbnQ2NF90IHZlcnNpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBw
cnBDYWxsYmFja3MsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IHBycERhdGFiYXNl
Q2FsbGJhY2tzLCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdpbiwgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBkYXRhRGlyKQogewog
ICAgIFJlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcyhwcnBDYWxsYmFja3MpOworICAgIFJl
ZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gZGF0YWJhc2VDYWxsYmFja3MocHJwRGF0YWJhc2VD
YWxsYmFja3MpOwogICAgIFdlYlNlY3VyaXR5T3JpZ2luIG9yaWdpbihzZWN1cml0eU9yaWdpbik7
CiAgICAgaWYgKCFhbGxvd0luZGV4ZWREQihjb250ZXh0LCBuYW1lLCBvcmlnaW4sIGNhbGxiYWNr
cykpCiAgICAgICAgIHJldHVybjsKIAogICAgIFdlYkZyYW1lSW1wbCogd2ViRnJhbWUgPSBnZXRX
ZWJGcmFtZShjb250ZXh0KTsKLSAgICBtX3dlYklEQkZhY3RvcnktPm9wZW4obmFtZSwgdmVyc2lv
biwgbmV3IFdlYklEQkNhbGxiYWNrc0ltcGwoY2FsbGJhY2tzKSwgb3JpZ2luLCB3ZWJGcmFtZSwg
ZGF0YURpcik7CisgICAgbV93ZWJJREJGYWN0b3J5LT5vcGVuKG5hbWUsIHZlcnNpb24sIG5ldyBX
ZWJJREJDYWxsYmFja3NJbXBsKGNhbGxiYWNrcyksIG5ldyBXZWJJREJEYXRhYmFzZUNhbGxiYWNr
c0ltcGwoZGF0YWJhc2VDYWxsYmFja3MpLCBvcmlnaW4sIHdlYkZyYW1lLCBkYXRhRGlyKTsKIH0K
IAogdm9pZCBJREJGYWN0b3J5QmFja2VuZFByb3h5OjpkZWxldGVEYXRhYmFzZShjb25zdCBTdHJp
bmcmIG5hbWUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmFja3MsIFBhc3NSZWZQ
dHI8U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIGRhdGFEaXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9JREJGYWN0b3J5QmFja2VuZFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9JREJGYWN0b3J5QmFja2VuZFByb3h5LmgKaW5kZXggYzBkZTkxMGE5MmNk
ZWE5MWEzZDNhMWM1MzBhMjgwN2M1YWJmYWE3YS4uODgzODBkN2E0MmVkMTE3MzAyOTM1YmViYmNh
Y2NlYjZmNmU5N2Q3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURC
RmFjdG9yeUJhY2tlbmRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lE
QkZhY3RvcnlCYWNrZW5kUHJveHkuaApAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB+SURCRmFjdG9yeUJhY2tlbmRQcm94eSgpOwogCiAgICAgdmlydHVhbCB2b2lkIGdldERh
dGFiYXNlTmFtZXMoUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJDYWxsYmFja3M+LCBQYXNzUmVmUHRy
PFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiwgV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIGNvbnN0IFN0cmluZyYgZGF0YURpcik7Ci0gICAgdmlydHVhbCB2b2lkIG9wZW4oY29uc3Qg
U3RyaW5nJiBuYW1lLCBpbnQ2NF90IHZlcnNpb24sIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCQ2Fs
bGJhY2tzPiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4sIFdlYkNvcmU6OlNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIGRhdGFEaXIpOworICAgIHZpcnR1
YWwgdm9pZCBvcGVuKGNvbnN0IFN0cmluZyYgbmFtZSwgaW50NjRfdCB2ZXJzaW9uLCBQYXNzUmVm
UHRyPFdlYkNvcmU6OklEQkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCRGF0YWJh
c2VDYWxsYmFja3M+LCBQYXNzUmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiwgV2ViQ29y
ZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgZGF0YURpcik7CiAgICAg
dmlydHVhbCB2b2lkIGRlbGV0ZURhdGFiYXNlKGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0
cjxXZWJDb3JlOjpJREJDYWxsYmFja3M+LCBQYXNzUmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luPiwgV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgZGF0
YURpcik7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJJREJEYXRhYmFzZUltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
SURCRGF0YWJhc2VJbXBsLmNwcAppbmRleCAwZDE0MmJjMDI5M2FhMTNmNWIxOTJjM2ZkYmM1NjMz
N2NkYWM3NTdkLi41Mjg3OWE5YTdmM2I3MzgwYWJhMzA2ZWQ2NzNkMGM0MmExMjhmYzQ2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5jcHAK
QEAgLTQ1LDggKzQ1LDkgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewogCi1XZWJJREJEYXRhYmFzZUltcGw6OldlYklEQkRhdGFiYXNlSW1wbChQYXNzUmVm
UHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4gZGF0YWJhc2VCYWNrZW5kKQorV2ViSURC
RGF0YWJhc2VJbXBsOjpXZWJJREJEYXRhYmFzZUltcGwoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJh
Y2tlbmRJbnRlcmZhY2U+IGRhdGFiYXNlQmFja2VuZCwgV1RGOjpQYXNzUmVmUHRyPElEQkRhdGFi
YXNlQ2FsbGJhY2tzUHJveHk+IGRhdGFiYXNlQ2FsbGJhY2tzKQogICAgIDogbV9kYXRhYmFzZUJh
Y2tlbmQoZGF0YWJhc2VCYWNrZW5kKQorICAgICwgbV9kYXRhYmFzZUNhbGxiYWNrcyhkYXRhYmFz
ZUNhbGxiYWNrcykKICAgICAsIG1fY2xvc2VQZW5kaW5nKGZhbHNlKQogewogfQpAQCAtOTMsNyAr
OTQsNyBAQCBXZWJJREJUcmFuc2FjdGlvbiogV2ViSURCRGF0YWJhc2VJbXBsOjp0cmFuc2FjdGlv
bihjb25zdCBXZWJET01TdHJpbmdMaXN0JiBuYW1lcwogCiB2b2lkIFdlYklEQkRhdGFiYXNlSW1w
bDo6Y2xvc2UoKQogewotICAgIC8vIFVzZSB0aGUgY2FsbGJhY2tzIHRoYXQgOjpvcGVuIGdhdmUg
dXMgc28gdGhhdCB0aGUgYmFja2VuZCBpbgorICAgIC8vIFVzZSB0aGUgY2FsbGJhY2tzIHBhc3Nl
ZCBpbiB0byB0aGUgY29uc3RydWN0b3Igc28gdGhhdCB0aGUgYmFja2VuZCBpbgogICAgIC8vIG11
bHRpLXByb2Nlc3MgY2hyb21pdW0ga25vd3Mgd2hpY2ggZGF0YWJhc2UgY29ubmVjdGlvbiBpcyBj
bG9zaW5nLgogICAgIGlmICghbV9kYXRhYmFzZUNhbGxiYWNrcykgewogICAgICAgICBtX2Nsb3Nl
UGVuZGluZyA9IHRydWU7CkBAIC0xMTMsMTUgKzExNCw2IEBAIHZvaWQgV2ViSURCRGF0YWJhc2VJ
bXBsOjpmb3JjZUNsb3NlKCkKICAgICBjYWxsYmFja3MtPm9uRm9yY2VkQ2xvc2UoKTsKIH0KIAot
dm9pZCBXZWJJREJEYXRhYmFzZUltcGw6Om9wZW4oV2ViSURCRGF0YWJhc2VDYWxsYmFja3MqIGNh
bGxiYWNrcykKLXsKLSAgICBBU1NFUlQoIW1fZGF0YWJhc2VDYWxsYmFja3MpOwotICAgIG1fZGF0
YWJhc2VDYWxsYmFja3MgPSBJREJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5OjpjcmVhdGUoYWRvcHRQ
dHIoY2FsbGJhY2tzKSk7Ci0gICAgbV9kYXRhYmFzZUJhY2tlbmQtPnJlZ2lzdGVyRnJvbnRlbmRD
YWxsYmFja3MobV9kYXRhYmFzZUNhbGxiYWNrcyk7Ci0gICAgaWYgKG1fY2xvc2VQZW5kaW5nKQot
ICAgICAgICBjbG9zZSgpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8v
IEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJJREJEYXRhYmFzZUltcGwuaAppbmRleCA0YTgyODRjZTU5YWQxZTYzNmNjNGZiYzk3Mjdi
Y2I3N2E0MjJjMzBlLi45Y2QxY2FmNTkyMDY5YjU0ZGZiOTZjYzg3ODQ0YzM3OTZkYjNhMzA3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwuaApA
QCAtNDcsNyArNDcsNyBAQCBjbGFzcyBXZWJJREJUcmFuc2FjdGlvbjsKIC8vIFNlZSBjb21tZW50
IGluIFdlYklEQkZhY3RvcnkgZm9yIGEgaGlnaCBsZXZlbCBvdmVydmlldyB0aGVzZSBjbGFzc2Vz
LgogY2xhc3MgV2ViSURCRGF0YWJhc2VJbXBsIDogcHVibGljIFdlYklEQkRhdGFiYXNlIHsKIHB1
YmxpYzoKLSAgICBXZWJJREJEYXRhYmFzZUltcGwoV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OklE
QkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4pOworICAgIFdlYklEQkRhdGFiYXNlSW1wbChXVEY6
OlBhc3NSZWZQdHI8V2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiwgV1RGOjpQ
YXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHk+KTsKICAgICB2aXJ0dWFsIH5XZWJJ
REJEYXRhYmFzZUltcGwoKTsKIAogICAgIHZpcnR1YWwgV2ViSURCTWV0YWRhdGEgbWV0YWRhdGEo
KSBjb25zdDsKQEAgLTU5LDkgKzU5LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBmb3Jj
ZUNsb3NlKCk7CiAgICAgdmlydHVhbCB2b2lkIGNsb3NlKCk7CiAKLSAgICAvLyBGSVhNRTogUmVu
YW1lICJvcGVuIiB0byByZWdpc3RlckZyb250ZW5kQ2FsbGJhY2tzLgotICAgIHZpcnR1YWwgdm9p
ZCBvcGVuKFdlYklEQkRhdGFiYXNlQ2FsbGJhY2tzKik7Ci0KIHByaXZhdGU6CiAgICAgV1RGOjpS
ZWZQdHI8V2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiBtX2RhdGFiYXNlQmFj
a2VuZDsKICAgICBXVEY6OlJlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5PiBtX2RhdGFi
YXNlQ2FsbGJhY2tzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
SURCRmFjdG9yeUltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRmFj
dG9yeUltcGwuY3BwCmluZGV4IGFkNzE0NzZiN2ViYjQ2ODZlYTgyNWI5NjIxOTE2ZTYzYjI5MGFj
NzcuLjk0YThkNDY4YTkwYTkwYzQxMmM3YWE2Yzk4YWVmYjc0YmI3YTM3YjggMTAwNzU1Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkZhY3RvcnlJbXBsLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJGYWN0b3J5SW1wbC5jcHAKQEAgLTM1LDgg
KzM1LDEwIEBACiAKICNpbmNsdWRlICJET01TdHJpbmdMaXN0LmgiCiAjaW5jbHVkZSAiSURCQ2Fs
bGJhY2tzUHJveHkuaCIKKyNpbmNsdWRlICJJREJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5LmgiCiAj
aW5jbHVkZSAiSURCRmFjdG9yeUJhY2tlbmRJbXBsLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmln
aW4uaCIKKyNpbmNsdWRlICJXZWJJREJEYXRhYmFzZUNhbGxiYWNrcy5oIgogI2luY2x1ZGUgIldl
YklEQkRhdGFiYXNlRXJyb3IuaCIKICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAKQEAgLTYzLDkg
KzY1LDEyIEBAIHZvaWQgV2ViSURCRmFjdG9yeUltcGw6OmdldERhdGFiYXNlTmFtZXMoV2ViSURC
Q2FsbGJhY2tzKiBjYWxsYmFja3MsIGNvbnN0IFdlYlNlCiAgICAgbV9pZGJGYWN0b3J5QmFja2Vu
ZC0+Z2V0RGF0YWJhc2VOYW1lcyhJREJDYWxsYmFja3NQcm94eTo6Y3JlYXRlKGFkb3B0UHRyKGNh
bGxiYWNrcykpLCBvcmlnaW4sIDAsIGRhdGFEaXIpOwogfQogCi12b2lkIFdlYklEQkZhY3RvcnlJ
bXBsOjpvcGVuKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgbG9uZyBsb25nIHZlcnNpb24sIFdlYklE
QkNhbGxiYWNrcyogY2FsbGJhY2tzLCBjb25zdCBXZWJTZWN1cml0eU9yaWdpbiYgb3JpZ2luLCBX
ZWJGcmFtZSosIGNvbnN0IFdlYlN0cmluZyYgZGF0YURpcikKK3ZvaWQgV2ViSURCRmFjdG9yeUlt
cGw6Om9wZW4oY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBsb25nIGxvbmcgdmVyc2lvbiwgV2ViSURC
Q2FsbGJhY2tzKiBjYWxsYmFja3MsIFdlYklEQkRhdGFiYXNlQ2FsbGJhY2tzKiBkYXRhYmFzZUNh
bGxiYWNrcywgY29uc3QgV2ViU2VjdXJpdHlPcmlnaW4mIG9yaWdpbiwgV2ViRnJhbWUqLCBjb25z
dCBXZWJTdHJpbmcmIGRhdGFEaXIpCiB7Ci0gICAgbV9pZGJGYWN0b3J5QmFja2VuZC0+b3Blbihu
YW1lLCB2ZXJzaW9uLCBJREJDYWxsYmFja3NQcm94eTo6Y3JlYXRlKGFkb3B0UHRyKGNhbGxiYWNr
cykpLmdldCgpLCBvcmlnaW4sIDAsIGRhdGFEaXIpOworICAgIFJlZlB0cjxJREJDYWxsYmFja3NQ
cm94eT4gY2FsbGJhY2tzUHJveHkgPSBJREJDYWxsYmFja3NQcm94eTo6Y3JlYXRlKGFkb3B0UHRy
KGNhbGxiYWNrcykpOworICAgIFJlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5PiBkYXRh
YmFzZUNhbGxiYWNrc1Byb3h5ID0gSURCRGF0YWJhc2VDYWxsYmFja3NQcm94eTo6Y3JlYXRlKGFk
b3B0UHRyKGRhdGFiYXNlQ2FsbGJhY2tzKSk7CisgICAgY2FsbGJhY2tzUHJveHktPnNldERhdGFi
YXNlQ2FsbGJhY2tzKGRhdGFiYXNlQ2FsbGJhY2tzUHJveHkpOworICAgIG1faWRiRmFjdG9yeUJh
Y2tlbmQtPm9wZW4obmFtZSwgdmVyc2lvbiwgY2FsbGJhY2tzUHJveHkuZ2V0KCksIGRhdGFiYXNl
Q2FsbGJhY2tzUHJveHkuZ2V0KCksIG9yaWdpbiwgMCwgZGF0YURpcik7CiB9CiAKIHZvaWQgV2Vi
SURCRmFjdG9yeUltcGw6OmRlbGV0ZURhdGFiYXNlKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgV2Vi
SURCQ2FsbGJhY2tzKiBjYWxsYmFja3MsIGNvbnN0IFdlYlNlY3VyaXR5T3JpZ2luJiBvcmlnaW4s
IFdlYkZyYW1lKiwgY29uc3QgV2ViU3RyaW5nJiBkYXRhRGlyKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRmFjdG9yeUltcGwuaCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYklEQkZhY3RvcnlJbXBsLmgKaW5kZXggODMzZWViNTkxMjU5Yjg1M2Mz
MjFmZDExOGYwOTRhNWI4YTdjODg2NC4uMzNmNWEyMWQyYzc0ZjU4ZGZmOTRlMWViN2I5MGU1YWQ0
MzBkMTYyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRmFj
dG9yeUltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJGYWN0b3J5
SW1wbC5oCkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5XZWJJREJGYWN0
b3J5SW1wbCgpOwogCiAgICAgdmlydHVhbCB2b2lkIGdldERhdGFiYXNlTmFtZXMoV2ViSURCQ2Fs
bGJhY2tzKiwgY29uc3QgV2ViU2VjdXJpdHlPcmlnaW4mLCBXZWJGcmFtZSosIGNvbnN0IFdlYlN0
cmluZyYgZGF0YURpcik7Ci0gICAgdmlydHVhbCB2b2lkIG9wZW4oY29uc3QgV2ViU3RyaW5nJiBu
YW1lLCBsb25nIGxvbmcgdmVyc2lvbiwgV2ViSURCQ2FsbGJhY2tzKiwgY29uc3QgV2ViU2VjdXJp
dHlPcmlnaW4mLCBXZWJGcmFtZSosIGNvbnN0IFdlYlN0cmluZyYgZGF0YURpcik7CisgICAgdmly
dHVhbCB2b2lkIG9wZW4oY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBsb25nIGxvbmcgdmVyc2lvbiwg
V2ViSURCQ2FsbGJhY2tzKiwgV2ViSURCRGF0YWJhc2VDYWxsYmFja3MqLCBjb25zdCBXZWJTZWN1
cml0eU9yaWdpbiYsIFdlYkZyYW1lKiwgY29uc3QgV2ViU3RyaW5nJiBkYXRhRGlyKTsKICAgICB2
aXJ0dWFsIHZvaWQgZGVsZXRlRGF0YWJhc2UoY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBXZWJJREJD
YWxsYmFja3MqLCBjb25zdCBXZWJTZWN1cml0eU9yaWdpbiYsIFdlYkZyYW1lKiwgY29uc3QgV2Vi
U3RyaW5nJiBkYXRhRGlyKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvSURCQWJvcnRPbkNvcnJ1cHRUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvSURCQWJvcnRPbkNvcnJ1cHRUZXN0LmNwcAppbmRleCAxZDM5NTA5NmFh
ZGIzYTViM2RlOWI3MGRhYjYwZjMxODljZmJhOTg2Li5iMDgwYmZjNGRmNTFhMjk4ZjRmZGI1ZDlj
MjhlNzcxN2Y0MGRhZjE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0lEQkFib3J0T25Db3JydXB0VGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9JREJBYm9ydE9uQ29ycnVwdFRlc3QuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZS5oIgogI2lu
Y2x1ZGUgIklEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZS5oIgorI2luY2x1ZGUgIklEQkRhdGFi
YXNlQ2FsbGJhY2tzLmgiCiAjaW5jbHVkZSAiSURCRmFjdG9yeUJhY2tlbmRJbXBsLmgiCiAjaW5j
bHVkZSAiSURCRmFrZUJhY2tpbmdTdG9yZS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgi
CkBAIC05NiwxNCArOTcsMjYgQEAgcHJvdGVjdGVkOgogICAgIH0KIH07CiAKK2NsYXNzIEZha2VJ
REJEYXRhYmFzZUNhbGxiYWNrcyA6IHB1YmxpYyBJREJEYXRhYmFzZUNhbGxiYWNrcyB7CitwdWJs
aWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8RmFrZUlEQkRhdGFiYXNlQ2FsbGJhY2tzPiBjcmVh
dGUoKSB7IHJldHVybiBhZG9wdFJlZihuZXcgRmFrZUlEQkRhdGFiYXNlQ2FsbGJhY2tzKCkpOyB9
CisgICAgdmlydHVhbCB+RmFrZUlEQkRhdGFiYXNlQ2FsbGJhY2tzKCkgeyB9CisgICAgdmlydHVh
bCB2b2lkIG9uVmVyc2lvbkNoYW5nZShjb25zdCBTdHJpbmcmIHZlcnNpb24pIE9WRVJSSURFIHsg
fQorICAgIHZpcnR1YWwgdm9pZCBvblZlcnNpb25DaGFuZ2UoaW50NjRfdCBvbGRWZXJzaW9uLCBp
bnQ2NF90IG5ld1ZlcnNpb24pIE9WRVJSSURFIHsgfQorICAgIHZpcnR1YWwgdm9pZCBvbkZvcmNl
ZENsb3NlKCkgT1ZFUlJJREUgeyB9Citwcml2YXRlOgorICAgIEZha2VJREJEYXRhYmFzZUNhbGxi
YWNrcygpIHsgfQorfTsKKwogVEVTVChJREJBYm9ydFRlc3QsIFRoZVRlc3QpCiB7CiAgICAgUmVm
UHRyPElEQkZhY3RvcnlCYWNrZW5kSW1wbD4gZmFjdG9yeSA9IEZhaWxpbmdJREJGYWN0b3J5QmFj
a2VuZEltcGw6OmNyZWF0ZSgpOwogICAgIGNvbnN0IFN0cmluZyYgbmFtZSA9ICJkYiBuYW1lIjsK
ICAgICBNb2NrSURCQ2FsbGJhY2tzIGNhbGxiYWNrczsKKyAgICBSZWZQdHI8RmFrZUlEQkRhdGFi
YXNlQ2FsbGJhY2tzPiBkYXRhYmFzZUNhbGxiYWNrcyA9IEZha2VJREJEYXRhYmFzZUNhbGxiYWNr
czo6Y3JlYXRlKCk7CiAgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBvcmlnaW4gPSBTZWN1cml0
eU9yaWdpbjo6Y3JlYXRlKCJodHRwIiwgImxvY2FsaG9zdCIsIDgxKTsKICAgICBjb25zdCBpbnQ2
NF90IER1bW15VmVyc2lvbiA9IDI7Ci0gICAgZmFjdG9yeS0+b3BlbihuYW1lLCBEdW1teVZlcnNp
b24sICZjYWxsYmFja3MsIG9yaWdpbiwgMCAvKkZyYW1lKi8sIFN0cmluZygpIC8qcGF0aCovKTsK
KyAgICBmYWN0b3J5LT5vcGVuKG5hbWUsIER1bW15VmVyc2lvbiwgJmNhbGxiYWNrcywgZGF0YWJh
c2VDYWxsYmFja3MsIG9yaWdpbiwgMCAvKkZyYW1lKi8sIFN0cmluZygpIC8qcGF0aCovKTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvSURCRGF0YWJhc2VCYWNrZW5kVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL0lEQkRhdGFiYXNlQmFja2VuZFRlc3QuY3BwCmluZGV4IGVhZDdmOWJiOTYyMTY5ODIxZmRl
ZjcwMmY4MTk2MmMyNGRhNDUwNTEuLjljYzg3OGYzZTg4ZmE1ZGRmNzJiYThjZTgzODNkYThlZjg2
NGQyMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCRGF0YWJh
c2VCYWNrZW5kVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJE
YXRhYmFzZUJhY2tlbmRUZXN0LmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIklEQkJh
Y2tpbmdTdG9yZS5oIgogI2luY2x1ZGUgIklEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2UuaCIKICNp
bmNsdWRlICJJREJEYXRhYmFzZUJhY2tlbmRJbXBsLmgiCisjaW5jbHVkZSAiSURCRGF0YWJhc2VD
YWxsYmFja3NQcm94eS5oIgogI2luY2x1ZGUgIklEQkZhY3RvcnlCYWNrZW5kSW1wbC5oIgogI2lu
Y2x1ZGUgIklEQkZha2VCYWNraW5nU3RvcmUuaCIKICNpbmNsdWRlICJJREJJbmRleEJhY2tlbmRJ
bXBsLmgiCkBAIC00MCw5ICs0MSwxMCBAQAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQog
CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKK3VzaW5nIFdlYktpdDo6SURCRGF0YWJhc2VDYWxs
YmFja3NQcm94eTsKIHVzaW5nIFdlYktpdDo6V2ViSURCRGF0YWJhc2U7Ci11c2luZyBXZWJLaXQ6
OldlYklEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbDsKIHVzaW5nIFdlYktpdDo6V2ViSURCRGF0YWJh
c2VJbXBsOwordXNpbmcgV2ViS2l0OjpXZWJJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGw7CiAKIG5h
bWVzcGFjZSB7CiAKQEAgLTEyMiwyMCArMTI0LDE2IEBAIFRFU1QoSURCRGF0YWJhc2VCYWNrZW5k
VGVzdCwgQ29ubmVjdGlvbkxpZmVjeWNsZSkKICAgICBFWFBFQ1RfR1QoYmFja2luZ1N0b3JlLT5y
ZWZDb3VudCgpLCAxKTsKIAogICAgIFJlZlB0cjxNb2NrSURCQ2FsbGJhY2tzPiByZXF1ZXN0MSA9
IE1vY2tJREJDYWxsYmFja3M6OmNyZWF0ZSgpOwotICAgIGRiLT5vcGVuQ29ubmVjdGlvbihyZXF1
ZXN0MSk7Ci0KICAgICBSZWZQdHI8RmFrZUlEQkRhdGFiYXNlQ2FsbGJhY2tzPiBjb25uZWN0aW9u
MSA9IEZha2VJREJEYXRhYmFzZUNhbGxiYWNrczo6Y3JlYXRlKCk7Ci0gICAgZGItPnJlZ2lzdGVy
RnJvbnRlbmRDYWxsYmFja3MoY29ubmVjdGlvbjEpOworICAgIGRiLT5vcGVuQ29ubmVjdGlvbihy
ZXF1ZXN0MSwgY29ubmVjdGlvbjEpOwogCiAgICAgUmVmUHRyPE1vY2tJREJDYWxsYmFja3M+IHJl
cXVlc3QyID0gTW9ja0lEQkNhbGxiYWNrczo6Y3JlYXRlKCk7Ci0gICAgZGItPm9wZW5Db25uZWN0
aW9uKHJlcXVlc3QyKTsKKyAgICBSZWZQdHI8RmFrZUlEQkRhdGFiYXNlQ2FsbGJhY2tzPiBjb25u
ZWN0aW9uMiA9IEZha2VJREJEYXRhYmFzZUNhbGxiYWNrczo6Y3JlYXRlKCk7CisgICAgZGItPm9w
ZW5Db25uZWN0aW9uKHJlcXVlc3QyLCBjb25uZWN0aW9uMik7CiAKICAgICBkYi0+Y2xvc2UoY29u
bmVjdGlvbjEpOwogICAgIEVYUEVDVF9HVChiYWNraW5nU3RvcmUtPnJlZkNvdW50KCksIDEpOwog
Ci0gICAgUmVmUHRyPEZha2VJREJEYXRhYmFzZUNhbGxiYWNrcz4gY29ubmVjdGlvbjIgPSBGYWtl
SURCRGF0YWJhc2VDYWxsYmFja3M6OmNyZWF0ZSgpOwotICAgIGRiLT5yZWdpc3RlckZyb250ZW5k
Q2FsbGJhY2tzKGNvbm5lY3Rpb24yKTsKLQogICAgIGRiLT5jbG9zZShjb25uZWN0aW9uMik7CiAg
ICAgRVhQRUNUX1RSVUUoYmFja2luZ1N0b3JlLT5oYXNPbmVSZWYoKSk7CiB9CkBAIC0xNDksNyAr
MTQ3LDcgQEAgcHVibGljOgogCiAgICAgfk1vY2tJREJEYXRhYmFzZUJhY2tlbmRQcm94eSgpCiAg
ICAgewotICAgICAgICBFWFBFQ1RfVFJVRShtX3dhc1JlZ2lzdGVyRnJvbnRlbmRDYWxsYmFja3ND
YWxsZWQpOworICAgICAgICBFWFBFQ1RfVFJVRShtX3dhc0Nsb3NlQ2FsbGVkKTsKICAgICB9CiAK
ICAgICB2aXJ0dWFsIElEQkRhdGFiYXNlTWV0YWRhdGEgbWV0YWRhdGEoKSBjb25zdCB7IHJldHVy
biBJREJEYXRhYmFzZU1ldGFkYXRhKCk7IH0KQEAgLTE2MywxOSArMTYxLDEyIEBAIHB1YmxpYzoK
ICAgICAgICAgbV93YXNDbG9zZUNhbGxlZCA9IHRydWU7CiAgICAgICAgIG1fd2ViRGF0YWJhc2Uu
Y2xvc2UoKTsKICAgICB9Ci0gICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyRnJvbnRlbmRDYWxsYmFj
a3MoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gY29ubmVjdGlvbikKLSAgICB7Ci0g
ICAgICAgIG1fd2FzUmVnaXN0ZXJGcm9udGVuZENhbGxiYWNrc0NhbGxlZCA9IHRydWU7Ci0gICAg
ICAgIG1fd2ViRGF0YWJhc2Uub3BlbihuZXcgV2ViSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsKGNv
bm5lY3Rpb24pKTsKLSAgICB9CiAKIHByaXZhdGU6CiAgICAgTW9ja0lEQkRhdGFiYXNlQmFja2Vu
ZFByb3h5KFdlYklEQkRhdGFiYXNlSW1wbCYgd2ViRGF0YWJhc2UpCi0gICAgICAgIDogbV93YXNS
ZWdpc3RlckZyb250ZW5kQ2FsbGJhY2tzQ2FsbGVkKGZhbHNlKQotICAgICAgICAsIG1fd2FzQ2xv
c2VDYWxsZWQoZmFsc2UpCisgICAgICAgIDogbV93YXNDbG9zZUNhbGxlZChmYWxzZSkKICAgICAg
ICAgLCBtX3dlYkRhdGFiYXNlKHdlYkRhdGFiYXNlKSB7IH0KIAotICAgIGJvb2wgbV93YXNSZWdp
c3RlckZyb250ZW5kQ2FsbGJhY2tzQ2FsbGVkOwogICAgIGJvb2wgbV93YXNDbG9zZUNhbGxlZDsK
IAogICAgIFdlYklEQkRhdGFiYXNlSW1wbCYgbV93ZWJEYXRhYmFzZTsKQEAgLTE5MSwxOCArMTgy
LDE5IEBAIFRFU1QoSURCRGF0YWJhc2VCYWNrZW5kVGVzdCwgRm9yY2VkQ2xvc2UpCiAgICAgUmVm
UHRyPElEQkRhdGFiYXNlQmFja2VuZEltcGw+IGJhY2tlbmQgPSBJREJEYXRhYmFzZUJhY2tlbmRJ
bXBsOjpjcmVhdGUoImRiIiwgYmFja2luZ1N0b3JlLmdldCgpLCBjb29yZGluYXRvciwgZmFjdG9y
eSwgInVuaXF1ZWlkIik7CiAgICAgRVhQRUNUX0dUKGJhY2tpbmdTdG9yZS0+cmVmQ291bnQoKSwg
MSk7CiAKLSAgICBXZWJJREJEYXRhYmFzZUltcGwgd2ViRGF0YWJhc2UoYmFja2VuZCk7Ci0KLSAg
ICBSZWZQdHI8TW9ja0lEQkNhbGxiYWNrcz4gcmVxdWVzdDEgPSBNb2NrSURCQ2FsbGJhY2tzOjpj
cmVhdGUoKTsKLSAgICBiYWNrZW5kLT5vcGVuQ29ubmVjdGlvbihyZXF1ZXN0MSk7CisgICAgUmVm
UHRyPEZha2VJREJEYXRhYmFzZUNhbGxiYWNrcz4gY29ubmVjdGlvbiA9IEZha2VJREJEYXRhYmFz
ZUNhbGxiYWNrczo6Y3JlYXRlKCk7CisgICAgUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzUHJv
eHk+IGNvbm5lY3Rpb25Qcm94eSA9IElEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHk6OmNyZWF0ZShh
ZG9wdFB0cihuZXcgV2ViSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsKGNvbm5lY3Rpb24pKSk7Cisg
ICAgV2ViSURCRGF0YWJhc2VJbXBsIHdlYkRhdGFiYXNlKGJhY2tlbmQsIGNvbm5lY3Rpb25Qcm94
eSk7CiAKICAgICBSZWZQdHI8TW9ja0lEQkRhdGFiYXNlQmFja2VuZFByb3h5PiBwcm94eSA9IE1v
Y2tJREJEYXRhYmFzZUJhY2tlbmRQcm94eTo6Y3JlYXRlKHdlYkRhdGFiYXNlKTsKKyAgICBSZWZQ
dHI8TW9ja0lEQkNhbGxiYWNrcz4gcmVxdWVzdCA9IE1vY2tJREJDYWxsYmFja3M6OmNyZWF0ZSgp
OworICAgIGJhY2tlbmQtPm9wZW5Db25uZWN0aW9uKHJlcXVlc3QsIGNvbm5lY3Rpb25Qcm94eSk7
CiAKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0ID0gMDsKLSAgICBSZWZQdHI8
SURCRGF0YWJhc2U+IGlkYkRhdGFiYXNlID0gSURCRGF0YWJhc2U6OmNyZWF0ZShjb250ZXh0LCBw
cm94eSk7Ci0gICAgaWRiRGF0YWJhc2UtPnJlZ2lzdGVyRnJvbnRlbmRDYWxsYmFja3MoKTsKKyAg
ICBSZWZQdHI8SURCRGF0YWJhc2U+IGlkYkRhdGFiYXNlID0gSURCRGF0YWJhc2U6OmNyZWF0ZShj
b250ZXh0LCBwcm94eSwgY29ubmVjdGlvbik7CiAKICAgICB3ZWJEYXRhYmFzZS5mb3JjZUNsb3Nl
KCk7CisKICAgICBFWFBFQ1RfVFJVRShiYWNraW5nU3RvcmUtPmhhc09uZVJlZigpKTsKIH0KIApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CmluZGV4IGQzZDIxMzFkYjljNjVhNDUyNWY0YWQyMGFjNmVmYmRiOGQ4YjMxOWQuLjMxY2Y2NmFi
ZTA3ZmQ1ZDQ5NzJlZjk4ZGRhZDg5OTQ2ZjNhMTBkNTYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAor
MjAxMi0wOC0yOSAgSm9zaHVhIEJlbGwgIDxqc2JlbGxAY2hyb21pdW0ub3JnPgorCisgICAgICAg
IEluZGV4ZWREQjogQ29uc29saWRhdGUgdHdvLXBoYXNlIGNvbm5lY3Rpb24gdG8gYXZvaWQgcmFj
ZSBjb25kaXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD05MDQxMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb2YgdGhlIGNoYW5nZSBzdWNoIGFzIGFwcHJvYWNo
LCByYXRpb25hbGUuIFBsZWFzZSBhZGQgcGVyLWZ1bmN0aW9uIGRlc2NyaXB0aW9ucyBiZWxvdyAo
T09QUyEpLgorCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvaW50dmVyc2lvbi1jbG9zZS1p
bi11cGdyYWRlbmVlZGVkLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRk
Yi9yZXNvdXJjZXMvZmFjdG9yeS1iYXNpY3MuanM6CisgICAgICAgIChnZXREYXRhYmFzZU5hbWVz
U3VjY2VzczIpOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9pbnR2ZXJz
aW9uLWNsb3NlLWluLXVwZ3JhZGVuZWVkZWQuanM6CisgICAgICAgIChkZWxldGVTdWNjZXNzKToK
KyAgICAgICAgKHVwZ3JhZGVOZWVkZWQudHJhbnNhY3Rpb24ub25jb21wbGV0ZSk6CisgICAgICAg
ICh1cGdyYWRlTmVlZGVkKToKKyAgICAgICAgKG9wZW5FcnJvcik6CisKIDIwMTItMDktMDQgIEtl
bmljaGkgSXNoaWJhc2hpICA8YmFzaGlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtDaHJvbWl1
bV0gVW5yZXZpZXdlZCB0ZXN0IGV4cGVjdGF0aW9uIHVwZGF0ZSBhZnRlciByMTI3NDU3CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRpb25zIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0aW9ucwppbmRleCAxMDhi
ZjIwZTE5YjRlMzMxZjkxMmQ1MjM3N2FkMTkyNTg2ODMxMTNiLi44YzUyYzZmZWM0NWQ3ZjRlNDdm
ZGIzZjMwYWE5YjBjOGFkYTY5YTQ5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9j
aHJvbWl1bS9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9t
aXVtL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTMzNDEsOSArMzM0MSw2IEBAIEJVR1dLOTEzNzIgV0lO
IDogY3NzMi4xLzIwMTEwMzIzL3ZlcnRpY2FsLWFsaWduLWJveGVzLTAwMS5odG0gPSBJTUFHRQog
Ly8gRmFpbHMgb24gV2luCiBCVUdXSzkzNjI0IFdJTiBSRUxFQVNFIDogaW5zcGVjdG9yL2NvbnNv
bGUvY29uc29sZS1mb3JtYXQtY29sbGVjdGlvbnMuaHRtbCA9IFBBU1MgVEVYVAogCi0vLyBUaW1l
cyBvdXQgaW4gRFJULCBidXQgd29ya3MgaW4gY2hyb21lCi1CVUdXSzkyNzc2IFNLSVAgOiBzdG9y
YWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9uLWRlbGV0ZS1pbi11cGdyYWRlbmVlZGVkLmh0bWwgPSBQ
QVNTCi0KIC8vIFN0YXJ0ZWQgZmFpbGluZyBhcm91bmQgcjEyMjc3MAogQlVHV0s5MTQ0NSBMSU5V
WCA6IHBsdWdpbnMvZW1iZWQtYXR0cmlidXRlcy1zdHlsZS5odG1sID0gUEFTUyBJTUFHRQogCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9uLWNsb3Nl
LWluLXVwZ3JhZGVuZWVkZWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvaW50dmVyc2lvbi1jbG9zZS1pbi11cGdyYWRlbmVlZGVkLWV4cGVjdGVkLnR4dAppbmRl
eCAxOGYzM2I4YjQ2ZTJlYjU0MmNjYjk0ODE4OTFjYmVhODNkYWUwMzBhLi40YmFlNTQ2ZGQ2ZmEw
MzlhMGY3MTY2ZmU3ZDhhMzZkYWMwMDRiZjJlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9uLWNsb3NlLWluLXVwZ3JhZGVuZWVkZWQtZXhwZWN0ZWQu
dHh0CisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2ludHZlcnNpb24tY2xvc2Ut
aW4tdXBncmFkZW5lZWRlZC1leHBlY3RlZC50eHQKQEAgLTIwLDEyICsyMCwyMCBAQCBkYi5jbG9z
ZSgpCiB0cmFuc2FjdGlvbi5vbmNvbXBsZXRlOgogc2F3VHJhbnNhY3Rpb25Db21wbGV0ZSA9IHRy
dWUKIAotb3BlblN1Y2Nlc3MoKToKK29wZW5FcnJvcigpOgogUEFTUyBzYXdUcmFuc2FjdGlvbkNv
bXBsZXRlIGlzIHRydWUKLWRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdAorUEFTUyBldmVudC50YXJn
ZXQuZXJyb3JDb2RlIGlzIERPTUV4Y2VwdGlvbi5BQk9SVF9FUlIKK1BBU1MgZXZlbnQudGFyZ2V0
LmVycm9yLm5hbWUgaXMgJ0Fib3J0RXJyb3InCitQQVNTIGV2ZW50LnJlc3VsdCBpcyB1bmRlZmlu
ZWQKKworVmVyaWZ5IHRoYXQgdGhlIG9sZCBjb25uZWN0aW9uIGlzIHVuY2hhbmdlZCBhbmQgd2Fz
IGNsb3NlZDoKK1BBU1MgZGIgaXMgbm9uLW51bGwuCiBQQVNTIGRiLnZlcnNpb24gaXMgNwotdHJh
bnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbignb3MnKQotRkFJTCB0cmFuc2FjdGlvbiA9IGRiLnRy
YW5zYWN0aW9uKCdvcycpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSW52YWxpZFN0YXRlRXJyb3I6
IERPTSBJREJEYXRhYmFzZSBFeGNlcHRpb24gMTEKK0V4cGVjdGluZyBleGNlcHRpb24gZnJvbSBk
Yi50cmFuc2FjdGlvbignb3MnKQorUEFTUyBFeGNlcHRpb24gd2FzIHRocm93bi4KK1BBU1MgY29k
ZSBpcyBET01FeGNlcHRpb24uSU5WQUxJRF9TVEFURV9FUlIKK1BBU1MgZW5hbWUgaXMgJ0ludmFs
aWRTdGF0ZUVycm9yJworCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1Qg
Q09NUExFVEUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2ludHZl
cnNpb24tZGVsZXRlLWluLXVwZ3JhZGVuZWVkZWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvaW50dmVyc2lvbi1kZWxldGUtaW4tdXBncmFkZW5lZWRlZC1leHBl
Y3RlZC50eHQKaW5kZXggNzE0ZDI5YzA2NzI1NWMwNmE3ZjUzMmUxN2FlYzkyYTdiNWJhOWY5My4u
ZjM1OWExMDQzYmRjODllYjNlYmM5M2I4M2IyYTIwMmNiNTNkMDAyNiAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW50dmVyc2lvbi1kZWxldGUtaW4tdXBncmFkZW5l
ZWRlZC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW50
dmVyc2lvbi1kZWxldGUtaW4tdXBncmFkZW5lZWRlZC1leHBlY3RlZC50eHQKQEAgLTM5LDMgKzM5
LDQgQEAgUEFTUyBzYXdWZXJzaW9uQ2hhbmdlIGlzIHRydWUKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvZmFjdG9yeS1iYXNpY3MuanMgYi9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvZmFjdG9yeS1iYXNpY3MuanMKaW5kZXggN2Ey
YzMzZTkxMjYwNWVkMzNmZDA0NjdlNTkxNWM0Y2Q2NTE0NTI4Ny4uNzU5OTcwZGYyZWE0NmNlNDI5
ZWNkNWQ3NjZiZjIwMDQ5ZDNiZTZjNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvcmVzb3VyY2VzL2ZhY3RvcnktYmFzaWNzLmpzCisrKyBiL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9mYWN0b3J5LWJhc2ljcy5qcwpAQCAtNTgsNiArNTgs
NyBAQCBmdW5jdGlvbiBnZXREYXRhYmFzZU5hbWVzU3VjY2VzczIoZXZ0KQogICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJpbmRleGVkREIuZGVsZXRlRGF0YWJhc2UoJyIgKyBuYW1lICsgIicpIik7
CiAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBkZWxldGVEYXRhYmFzZVN1Y2Nlc3M7CiAgICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbmJs
b2NrZWQgPSB1bmV4cGVjdGVkQmxvY2tlZENhbGxiYWNrOwogfQogCiBmdW5jdGlvbiBkZWxldGVE
YXRhYmFzZVN1Y2Nlc3MoKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvcmVzb3VyY2VzL2ludHZlcnNpb24tY2xvc2UtaW4tdXBncmFkZW5lZWRlZC5qcyBiL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9pbnR2ZXJzaW9uLWNsb3NlLWluLXVw
Z3JhZGVuZWVkZWQuanMKaW5kZXggMjE1YzNkMjIxZjQ3Zjc3NzQ4NGNmNGYxMDk4NzAxOTk4NDlm
MmU4MS4uYzNiNmM3MWE0NDVmY2NjYWNjMzRmMjAxNjAxNzM2YTM1MWNkNDlhYSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2ludHZlcnNpb24tY2xv
c2UtaW4tdXBncmFkZW5lZWRlZC5qcworKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9yZXNvdXJjZXMvaW50dmVyc2lvbi1jbG9zZS1pbi11cGdyYWRlbmVlZGVkLmpzCkBAIC0xNywx
OCArMTcsMTcgQEAgZnVuY3Rpb24gdGVzdCgpCiAKIGZ1bmN0aW9uIGRlbGV0ZVN1Y2Nlc3MoZXZ0
KSB7CiAgICAgZXZhbEFuZExvZygicmVxdWVzdCA9IGluZGV4ZWREQi5vcGVuKGRibmFtZSwgNyki
KTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOworICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gdW5leHBlY3RlZFN1Y2Nlc3NDYWxsYmFjazsKICAgICByZXF1ZXN0Lm9udXBncmFk
ZW5lZWRlZCA9IHVwZ3JhZGVOZWVkZWQ7CiAgICAgcmVxdWVzdC5vbmJsb2NrZWQgPSB1bmV4cGVj
dGVkQmxvY2tlZENhbGxiYWNrOworICAgIHJlcXVlc3Qub25lcnJvciA9IG9wZW5FcnJvcjsKICAg
ICBkZWJ1ZygiIik7CiB9CiAKIHZhciBzYXdUcmFuc2FjdGlvbkNvbXBsZXRlID0gZmFsc2U7CiBm
dW5jdGlvbiB1cGdyYWRlTmVlZGVkKGV2dCkKIHsKLSAgICBldmVudCA9IGV2dDsKLSAgICBkZWJ1
ZygiIik7Ci0gICAgZGVidWcoInVwZ3JhZGVOZWVkZWQoKToiKTsKKyAgICBwcmVhbWJsZShldnQp
OwogICAgIGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwogICAgIHNob3Vs
ZEJlKCJldmVudC5uZXdWZXJzaW9uIiwgIjciKTsKIApAQCAtNDAsMTggKzM5LDI0IEBAIGZ1bmN0
aW9uIHVwZ3JhZGVOZWVkZWQoZXZ0KQogICAgICAgICBkZWJ1ZygiIik7CiAgICAgICAgIGRlYnVn
KCJ0cmFuc2FjdGlvbi5vbmNvbXBsZXRlOiIpOwogICAgICAgICBldmFsQW5kTG9nKCJzYXdUcmFu
c2FjdGlvbkNvbXBsZXRlID0gdHJ1ZSIpOwotICAgIH0KKyAgICB9OwogfQogCi1mdW5jdGlvbiBv
cGVuU3VjY2VzcyhldnQpCitmdW5jdGlvbiBvcGVuRXJyb3IoZXZ0KQogewotICAgIGV2ZW50ID0g
ZXZ0OwotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1Zygib3BlblN1Y2Nlc3MoKToiKTsKKyAgICBw
cmVhbWJsZShldnQpOwogICAgIHNob3VsZEJlVHJ1ZSgic2F3VHJhbnNhY3Rpb25Db21wbGV0ZSIp
OwotICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAg
c2hvdWxkQmUoImV2ZW50LnRhcmdldC5lcnJvckNvZGUiLCAiRE9NRXhjZXB0aW9uLkFCT1JUX0VS
UiIpOworICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQuZXJyb3IubmFtZSIsICInQWJvcnRFcnJv
ciciKTsKKyAgICBzaG91bGRCZSgiZXZlbnQucmVzdWx0IiwgInVuZGVmaW5lZCIpOworCisgICAg
ZGVidWcoIiIpOworICAgIGRlYnVnKCJWZXJpZnkgdGhhdCB0aGUgb2xkIGNvbm5lY3Rpb24gaXMg
dW5jaGFuZ2VkIGFuZCB3YXMgY2xvc2VkOiIpOworICAgIHNob3VsZEJlTm9uTnVsbCgiZGIiKTsK
ICAgICBzaG91bGRCZSgnZGIudmVyc2lvbicsICI3Iik7Ci0gICAgZXZhbEFuZExvZygidHJhbnNh
Y3Rpb24gPSBkYi50cmFuc2FjdGlvbignb3MnKSIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRp
b24oImRiLnRyYW5zYWN0aW9uKCdvcycpIiwgIkRPTUV4Y2VwdGlvbi5JTlZBTElEX1NUQVRFX0VS
UiIsICInSW52YWxpZFN0YXRlRXJyb3InIik7CisKKyAgICBkZWJ1ZygiIik7CiAgICAgZmluaXNo
SlNUZXN0KCk7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162405</attachid>
            <date>2012-09-05 20:43:41 -0700</date>
            <delta_ts>2012-09-05 21:13:31 -0700</delta_ts>
            <desc>dgrogans</desc>
            <filename>bug-90411-20120905204322.patch</filename>
            <type>text/plain</type>
            <size>70083</size>
            <attacher name="David Grogan">dgrogan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3Njc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmJkMjE3ZGY0NTU3MDZk
NmYzYmI2ZWJkZDhkMjEwMGVmNzAzYzMzZC4uNWEyOGNjYTg3MjYyMmU0YzkzZTZkMmVmYTgzOTAx
NzhhNWQ0NzhiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcyIEBACisyMDEyLTA5LTA1ICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBDb25z
b2xpZGF0ZSB0d28tcGhhc2UgY29ubmVjdGlvbiB0byBhdm9pZCByYWNlIGNvbmRpdGlvbnMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkwNDExCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkaXRpb25hbCBp
bmZvcm1hdGlvbiBvZiB0aGUgY2hhbmdlIHN1Y2ggYXMgYXBwcm9hY2gsIHJhdGlvbmFsZS4gUGxl
YXNlIGFkZCBwZXItZnVuY3Rpb24gZGVzY3JpcHRpb25zIGJlbG93IChPT1BTISkuCisKKyAgICAg
ICAgTm8gbmV3IHRlc3RzIChPT1BTISkuCisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9J
REJEYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZTo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlOjpJREJEYXRhYmFzZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJEYXRhYmFzZTo6fklEQkRhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QkRhdGFiYXNlOjpjbG9zZUNvbm5lY3Rpb24pOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRi
L0lEQkRhdGFiYXNlLmg6CisgICAgICAgIChJREJEYXRhYmFzZSk6CisgICAgICAgICogTW9kdWxl
cy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpQZW5kaW5nT3BlbkNhbGw6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpQZW5kaW5nT3BlbkNhbGw6OmRh
dGFiYXNlQ2FsbGJhY2tzKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZElt
cGw6OlBlbmRpbmdPcGVuQ2FsbDo6UGVuZGluZ09wZW5DYWxsKToKKyAgICAgICAgKElEQkRhdGFi
YXNlQmFja2VuZEltcGw6OlBlbmRpbmdPcGVuQ2FsbCk6CisgICAgICAgIChXZWJDb3JlOjpJREJE
YXRhYmFzZUJhY2tlbmRJbXBsOjpQZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbDo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OlBlbmRpbmdPcGVuV2l0
aFZlcnNpb25DYWxsOjpkYXRhYmFzZUNhbGxiYWNrcyk6CisgICAgICAgIChXZWJDb3JlOjpJREJE
YXRhYmFzZUJhY2tlbmRJbXBsOjpQZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbDo6UGVuZGluZ09w
ZW5XaXRoVmVyc2lvbkNhbGwpOgorICAgICAgICAoSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6UGVu
ZGluZ09wZW5XaXRoVmVyc2lvbkNhbGwpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VC
YWNrZW5kSW1wbDo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJ
REJEYXRhYmFzZUJhY2tlbmRJbXBsOjpvcGVuSW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6
SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6c2V0VmVyc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpJ
REJEYXRhYmFzZUJhY2tlbmRJbXBsOjpjb25uZWN0aW9uQ291bnQpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6cHJvY2Vzc1BlbmRpbmdDYWxscyk6CisgICAgICAg
IChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpvcGVuQ29ubmVjdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpydW5JbnRWZXJzaW9uQ2hhbmdl
VHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6
b3BlbkNvbm5lY3Rpb25XaXRoVmVyc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFz
ZUJhY2tlbmRJbXBsOjpkZWxldGVEYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRh
YmFzZUJhY2tlbmRJbXBsOjpjbG9zZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURC
RGF0YWJhc2VCYWNrZW5kSW1wbC5oOgorICAgICAgICAoSURCRGF0YWJhc2VCYWNrZW5kSW1wbCk6
CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNl
Lmg6CisgICAgICAgIChJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UpOgorICAgICAgICAqIE1v
ZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGw6OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGw6OklEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbCk6
CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGw6OmNvbm5lY3QpOgor
ICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbC5oOgor
ICAgICAgICAoSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsKToKKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9JREJGYWN0b3J5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkZhY3Rvcnk6Om9w
ZW4pOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJREJGYWN0b3J5QmFja2VuZEltcGw6Om9wZW4pOgorICAg
ICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5oOgorICAgICAg
ICAoSURCRmFjdG9yeUJhY2tlbmRJbXBsKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9J
REJGYWN0b3J5QmFja2VuZEludGVyZmFjZS5oOgorICAgICAgICAoSURCRmFjdG9yeUJhY2tlbmRJ
bnRlcmZhY2UpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQk9wZW5EQlJlcXVlc3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCT3BlbkRCUmVxdWVzdDo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQk9wZW5EQlJlcXVlc3Q6OklEQk9wZW5EQlJlcXVlc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCT3BlbkRCUmVxdWVzdDo6b25VcGdyYWRlTmVlZGVkKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQk9wZW5EQlJlcXVlc3Q6Om9uU3VjY2Vzcyk6CisgICAgICAgICogTW9kdWxl
cy9pbmRleGVkZGIvSURCT3BlbkRCUmVxdWVzdC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgIChJREJPcGVuREJSZXF1ZXN0KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJU
cmFuc2FjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6b25BYm9y
dCk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6b25Db21wbGV0ZSk6CisgICAg
ICAgICogaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmUpOgorCiAyMDEyLTA5LTA1ICBNaWhhaSBQYXJwYXJpdGEgIDxtaWhhaXBAY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFtDaHJvbWl1bV0gaGlzdG9yeS57cHVzaCxyZXBsYWNlfVN0YXRlIHNo
b3VsZCBubyBsb25nZXIgYmUgVjhFbmFibGVkQXRSdW50aW1lCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCmluZGV4IDVmMWM4OWJhNjZjYmZkODdhZGU1NzBkNjBlNWE0MjA0YWI3N2YxMjUuLjI5ZTM4
ZjczMDIzMDM0NDY5NGViYzI0ZjIwNDQyNGMzY2ZlZjA0ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNDkgQEAKKzIwMTItMDktMDUgIEpvc2h1YSBCZWxsICA8anNiZWxs
QGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IENvbnNvbGlkYXRlIHR3by1waGFz
ZSBjb25uZWN0aW9uIHRvIGF2b2lkIHJhY2UgY29uZGl0aW9ucworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTA0MTEKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRpdGlvbmFsIGluZm9ybWF0aW9uIG9mIHRo
ZSBjaGFuZ2Ugc3VjaCBhcyBhcHByb2FjaCwgcmF0aW9uYWxlLiBQbGVhc2UgYWRkIHBlci1mdW5j
dGlvbiBkZXNjcmlwdGlvbnMgYmVsb3cgKE9PUFMhKS4KKworICAgICAgICAqIHB1YmxpYy9XZWJJ
REJEYXRhYmFzZS5oOgorICAgICAgICAqIHB1YmxpYy9XZWJJREJGYWN0b3J5Lmg6CisgICAgICAg
IChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJGYWN0b3J5OjpvcGVuKToKKyAgICAg
ICAgKiBzcmMvSURCQ2FsbGJhY2tzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpJREJDYWxs
YmFja3NQcm94eTo6b25TdWNjZXNzKToKKyAgICAgICAgKFdlYktpdDo6SURCQ2FsbGJhY2tzUHJv
eHk6Om9uVXBncmFkZU5lZWRlZCk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0
OjpJREJDYWxsYmFja3NQcm94eTo6c2V0RGF0YWJhc2VDYWxsYmFja3MpOgorICAgICAgICAqIHNy
Yy9JREJDYWxsYmFja3NQcm94eS5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKElEQkNh
bGxiYWNrc1Byb3h5KToKKyAgICAgICAgKiBzcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuY3Bw
OgorICAgICAgICAqIHNyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94eS5oOgorICAgICAgICAoSURC
RGF0YWJhc2VCYWNrZW5kUHJveHkpOgorICAgICAgICAqIHNyYy9JREJGYWN0b3J5QmFja2VuZFBy
b3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SURCRmFjdG9yeUJhY2tlbmRQcm94eTo6b3Blbik6
CisgICAgICAgICogc3JjL0lEQkZhY3RvcnlCYWNrZW5kUHJveHkuaDoKKyAgICAgICAgKElEQkZh
Y3RvcnlCYWNrZW5kUHJveHkpOgorICAgICAgICAqIHNyYy9XZWJJREJEYXRhYmFzZUltcGwuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJJREJEYXRhYmFzZUltcGw6OldlYklEQkRhdGFiYXNlSW1w
bCk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkRhdGFiYXNlSW1wbDo6Y2xvc2UpOgorICAgICAg
ICAqIHNyYy9XZWJJREJEYXRhYmFzZUltcGwuaDoKKyAgICAgICAgKFdlYklEQkRhdGFiYXNlSW1w
bCk6CisgICAgICAgICogc3JjL1dlYklEQkZhY3RvcnlJbXBsLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViSURCRmFjdG9yeUltcGw6Om9wZW4pOgorICAgICAgICAqIHNyYy9XZWJJREJGYWN0b3J5
SW1wbC5oOgorICAgICAgICAoV2ViSURCRmFjdG9yeUltcGwpOgorICAgICAgICAqIHRlc3RzL0lE
QkFib3J0T25Db3JydXB0VGVzdC5jcHA6CisgICAgICAgIChGYWtlSURCRGF0YWJhc2VDYWxsYmFj
a3MpOgorICAgICAgICAoV2ViQ29yZTo6RmFrZUlEQkRhdGFiYXNlQ2FsbGJhY2tzOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6RmFrZUlEQkRhdGFiYXNlQ2FsbGJhY2tzOjp+RmFrZUlEQkRh
dGFiYXNlQ2FsbGJhY2tzKToKKyAgICAgICAgKFdlYkNvcmU6OkZha2VJREJEYXRhYmFzZUNhbGxi
YWNrczo6RmFrZUlEQkRhdGFiYXNlQ2FsbGJhY2tzKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6VEVTVCk6CisgICAgICAgICogdGVzdHMvSURCRGF0YWJhc2VCYWNrZW5k
VGVzdC5jcHA6CisKIDIwMTItMDktMDUgIE1paGFpIFBhcnBhcml0YSAgPG1paGFpcEBjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgW0Nocm9taXVtXSBoaXN0b3J5LntwdXNoLHJlcGxhY2V9U3RhdGUg
c2hvdWxkIG5vIGxvbmdlciBiZSBWOEVuYWJsZWRBdFJ1bnRpbWUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcAppbmRleCBiM2Y3MGFkZDI5MzJj
ZTE1OTdlY2EwNTVhZWQxZWVmMDcwY2Q1ZGE3Li5kNjQxZDA0YTQzNmUxZmZmNWY2NDE4NGZkODM0
MmY0MmQ1YzAzNzQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJEYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCRGF0YWJhc2UuY3BwCkBAIC0zMSw3ICszMSw3IEBACiAjaW5jbHVkZSAiRXZlbnRRdWV1ZS5o
IgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJJREJBbnkuaCIKLSNpbmNs
dWRlICJJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwuaCIKKyNpbmNsdWRlICJJREJEYXRhYmFzZUNh
bGxiYWNrcy5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNlRXJyb3IuaCIKICNpbmNsdWRlICJJREJE
YXRhYmFzZUV4Y2VwdGlvbi5oIgogI2luY2x1ZGUgIklEQkV2ZW50RGlzcGF0Y2hlci5oIgpAQCAt
NTAsMjkgKzUwLDI4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxJREJE
YXRhYmFzZT4gSURCRGF0YWJhc2U6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4gZGF0YWJhc2UpCitQ
YXNzUmVmUHRyPElEQkRhdGFiYXNlPiBJREJEYXRhYmFzZTo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNl
PiBkYXRhYmFzZSwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gY2FsbGJhY2tzKQog
ewotICAgIFJlZlB0cjxJREJEYXRhYmFzZT4gaWRiRGF0YWJhc2UoYWRvcHRSZWYobmV3IElEQkRh
dGFiYXNlKGNvbnRleHQsIGRhdGFiYXNlKSkpOworICAgIFJlZlB0cjxJREJEYXRhYmFzZT4gaWRi
RGF0YWJhc2UoYWRvcHRSZWYobmV3IElEQkRhdGFiYXNlKGNvbnRleHQsIGRhdGFiYXNlLCBjYWxs
YmFja3MpKSk7CiAgICAgaWRiRGF0YWJhc2UtPnN1c3BlbmRJZk5lZWRlZCgpOwogICAgIHJldHVy
biBpZGJEYXRhYmFzZS5yZWxlYXNlKCk7CiB9CiAKLUlEQkRhdGFiYXNlOjpJREJEYXRhYmFzZShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFj
a2VuZEludGVyZmFjZT4gYmFja2VuZCkKK0lEQkRhdGFiYXNlOjpJREJEYXRhYmFzZShTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZElu
dGVyZmFjZT4gYmFja2VuZCwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gY2FsbGJh
Y2tzKQogICAgIDogQWN0aXZlRE9NT2JqZWN0KGNvbnRleHQsIHRoaXMpCiAgICAgLCBtX2JhY2tl
bmQoYmFja2VuZCkKICAgICAsIG1fY2xvc2VQZW5kaW5nKGZhbHNlKQogICAgICwgbV9jb250ZXh0
U3RvcHBlZChmYWxzZSkKKyAgICAsIG1fZGF0YWJhc2VDYWxsYmFja3MoY2FsbGJhY2tzKQogewog
ICAgIC8vIFdlIHBhc3MgYSByZWZlcmVuY2Ugb2YgdGhpcyBvYmplY3QgYmVmb3JlIGl0IGNhbiBi
ZSBhZG9wdGVkLgogICAgIHJlbGF4QWRvcHRpb25SZXF1aXJlbWVudCgpOwotICAgIG1fZGF0YWJh
c2VDYWxsYmFja3MgPSBJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGw6OmNyZWF0ZSh0aGlzKTsKICAg
ICBtX21ldGFkYXRhID0gbV9iYWNrZW5kLT5tZXRhZGF0YSgpOwogfQogCiBJREJEYXRhYmFzZTo6
fklEQkRhdGFiYXNlKCkKIHsKICAgICBjbG9zZSgpOwotICAgIG1fZGF0YWJhc2VDYWxsYmFja3Mt
PnVucmVnaXN0ZXJEYXRhYmFzZSh0aGlzKTsKIH0KIAogdm9pZCBJREJEYXRhYmFzZTo6dHJhbnNh
Y3Rpb25DcmVhdGVkKElEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbikKQEAgLTMzNSwxMiArMzM0
LDYgQEAgdm9pZCBJREJEYXRhYmFzZTo6b25WZXJzaW9uQ2hhbmdlKGNvbnN0IFN0cmluZyYgdmVy
c2lvbikKICAgICBlbnF1ZXVlRXZlbnQoSURCVmVyc2lvbkNoYW5nZUV2ZW50OjpjcmVhdGUodmVy
c2lvbiwgZXZlbnROYW1lcygpLnZlcnNpb25jaGFuZ2VFdmVudCkpOwogfQogCi12b2lkIElEQkRh
dGFiYXNlOjpyZWdpc3RlckZyb250ZW5kQ2FsbGJhY2tzKCkKLXsKLSAgICBBU1NFUlQobV9iYWNr
ZW5kKTsKLSAgICBtX2JhY2tlbmQtPnJlZ2lzdGVyRnJvbnRlbmRDYWxsYmFja3MobV9kYXRhYmFz
ZUNhbGxiYWNrcyk7Ci19Ci0KIHZvaWQgSURCRGF0YWJhc2U6OmVucXVldWVFdmVudChQYXNzUmVm
UHRyPEV2ZW50PiBldmVudCkKIHsKICAgICBBU1NFUlQoIW1fY29udGV4dFN0b3BwZWQpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmgKaW5kZXggMjdm
MDNiNmUzNTQ4YTgwMGY0MWEzZmFlNTg2MDE3OWM4N2ZkNzJjZC4uODBiZWZhMzEyNDljODNhYTRh
ZmI3OGYxYThhZmVhNDk4YTVjMjZhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCRGF0YWJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJEYXRhYmFzZS5oCkBAIC01MSw3ICs1MSw3IEBAIHR5cGVkZWYgaW50IEV4Y2Vw
dGlvbkNvZGU7CiAKIGNsYXNzIElEQkRhdGFiYXNlIDogcHVibGljIFJlZkNvdW50ZWQ8SURCRGF0
YWJhc2U+LCBwdWJsaWMgRXZlbnRUYXJnZXQsIHB1YmxpYyBBY3RpdmVET01PYmplY3QgewogcHVi
bGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQkRhdGFiYXNlPiBjcmVhdGUoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPik7
CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SURCRGF0YWJhc2U+IGNyZWF0ZShTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+LCBQYXNz
UmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPik7CiAgICAgfklEQkRhdGFiYXNlKCk7CiAKICAg
ICB2b2lkIHRyYW5zYWN0aW9uQ3JlYXRlZChJREJUcmFuc2FjdGlvbiopOwpAQCAtODgsOCArODgs
OCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGludGVyZmFjZU5h
bWUoKSBjb25zdDsKICAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSBjb25zdDsKIAorICAgIGJvb2wgaXNDbG9zZVBlbmRpbmcoKSBjb25z
dCB7IHJldHVybiBtX2Nsb3NlUGVuZGluZzsgfQogICAgIHZvaWQgZm9yY2VDbG9zZSgpOwotICAg
IHZvaWQgcmVnaXN0ZXJGcm9udGVuZENhbGxiYWNrcygpOwogICAgIGNvbnN0IElEQkRhdGFiYXNl
TWV0YWRhdGEgbWV0YWRhdGEoKSBjb25zdCB7IHJldHVybiBtX21ldGFkYXRhOyB9CiAgICAgdm9p
ZCBlbnF1ZXVlRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4pOwogICAgIGJvb2wgZGlzcGF0Y2hFdmVu
dChQYXNzUmVmUHRyPEV2ZW50PiBldmVudCwgRXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJuIEV2
ZW50VGFyZ2V0OjpkaXNwYXRjaEV2ZW50KGV2ZW50LCBlYyk7IH0KQEAgLTk5LDcgKzk5LDcgQEAg
cHVibGljOgogICAgIHVzaW5nIFJlZkNvdW50ZWQ8SURCRGF0YWJhc2U+OjpkZXJlZjsKIAogcHJp
dmF0ZToKLSAgICBJREJEYXRhYmFzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0
cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+KTsKKyAgICBJREJEYXRhYmFzZShTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+
LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPik7CiAKICAgICAvLyBFdmVudFRhcmdl
dAogICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgpIHsgcmVmKCk7IH0KQEAgLTEyMyw3
ICsxMjMsNyBAQCBwcml2YXRlOgogICAgIC8vIGRhdGFiYXNlIHNvIHRoYXQgd2UgY2FuIGNhbmNl
bCB0aGVtIGlmIHRoZSBkYXRhYmFzZSBjbG9zZXMuCiAgICAgVmVjdG9yPFJlZlB0cjxFdmVudD4g
PiBtX2VucXVldWVkRXZlbnRzOwogCi0gICAgUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzSW1w
bD4gbV9kYXRhYmFzZUNhbGxiYWNrczsKKyAgICBSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+
IG1fZGF0YWJhc2VDYWxsYmFja3M7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tl
bmRJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNl
QmFja2VuZEltcGwuY3BwCmluZGV4IDgxMTBjMjRjMTNiM2M0NjNlZTM3YjIwZDRjZmZhNzEyNDI0
NGI2MzkuLjA4NzZmNzc4M2U0OTc0NGM2NzY4ZWQyOTBjMDlmYjUzN2UxYTdjY2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZElt
cGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNl
QmFja2VuZEltcGwuY3BwCkBAIC00MSwzNyArNDEsNDMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpQZW5kaW5nT3BlbkNhbGwgOiBwdWJsaWMg
UmVmQ291bnRlZDxQZW5kaW5nT3BlbkNhbGw+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxQZW5kaW5nT3BlbkNhbGw+IGNyZWF0ZShQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2Fs
bGJhY2tzKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBlbmRpbmdPcGVuQ2FsbD4gY3JlYXRlKFBh
c3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VD
YWxsYmFja3M+IGRhdGFiYXNlQ2FsbGJhY2tzKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBQZW5kaW5nT3BlbkNhbGwoY2FsbGJhY2tzKSk7CisgICAgICAgIHJldHVybiBhZG9w
dFJlZihuZXcgUGVuZGluZ09wZW5DYWxsKGNhbGxiYWNrcywgZGF0YWJhc2VDYWxsYmFja3MpKTsK
ICAgICB9CiAgICAgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcygpIHsgcmV0dXJu
IG1fY2FsbGJhY2tzOyB9CisgICAgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gZGF0
YWJhc2VDYWxsYmFja3MoKSB7IHJldHVybiBtX2RhdGFiYXNlQ2FsbGJhY2tzOyB9CiAKIHByaXZh
dGU6Ci0gICAgUGVuZGluZ09wZW5DYWxsKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFj
a3MpCisgICAgUGVuZGluZ09wZW5DYWxsKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFj
a3MsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IGRhdGFiYXNlQ2FsbGJhY2tzKQog
ICAgICAgICA6IG1fY2FsbGJhY2tzKGNhbGxiYWNrcykKKyAgICAgICAgLCBtX2RhdGFiYXNlQ2Fs
bGJhY2tzKGRhdGFiYXNlQ2FsbGJhY2tzKQogICAgIHsKICAgICB9CiAKICAgICBSZWZQdHI8SURC
Q2FsbGJhY2tzPiBtX2NhbGxiYWNrczsKKyAgICBSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+
IG1fZGF0YWJhc2VDYWxsYmFja3M7CiB9OwogCiBjbGFzcyBJREJEYXRhYmFzZUJhY2tlbmRJbXBs
OjpQZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbCA6IHB1YmxpYyBSZWZDb3VudGVkPFBlbmRpbmdP
cGVuV2l0aFZlcnNpb25DYWxsPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8UGVu
ZGluZ09wZW5XaXRoVmVyc2lvbkNhbGw+IGNyZWF0ZShQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4g
Y2FsbGJhY2tzLCBpbnQ2NF90IHZlcnNpb24pCisgICAgc3RhdGljIFBhc3NSZWZQdHI8UGVuZGlu
Z09wZW5XaXRoVmVyc2lvbkNhbGw+IGNyZWF0ZShQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2Fs
bGJhY2tzLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBkYXRhYmFzZUNhbGxiYWNr
cywgaW50NjRfdCB2ZXJzaW9uKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQ
ZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbChjYWxsYmFja3MsIHZlcnNpb24pKTsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBQZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbChjYWxsYmFja3Ms
IGRhdGFiYXNlQ2FsbGJhY2tzLCB2ZXJzaW9uKSk7CiAgICAgfQogICAgIFBhc3NSZWZQdHI8SURC
Q2FsbGJhY2tzPiBjYWxsYmFja3MoKSB7IHJldHVybiBtX2NhbGxiYWNrczsgfQorICAgIFBhc3NS
ZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IGRhdGFiYXNlQ2FsbGJhY2tzKCkgeyByZXR1cm4g
bV9kYXRhYmFzZUNhbGxiYWNrczsgfQogICAgIGludDY0X3QgdmVyc2lvbigpIHsgcmV0dXJuIG1f
dmVyc2lvbjsgfQogCiBwcml2YXRlOgotICAgIFBlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxsKFBh
c3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIGludDY0X3QgdmVyc2lvbikKKyAgICBQ
ZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbChQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJh
Y2tzLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBkYXRhYmFzZUNhbGxiYWNrcywg
aW50NjRfdCB2ZXJzaW9uKQogICAgICAgICA6IG1fY2FsbGJhY2tzKGNhbGxiYWNrcykKKyAgICAg
ICAgLCBtX2RhdGFiYXNlQ2FsbGJhY2tzKGRhdGFiYXNlQ2FsbGJhY2tzKQogICAgICAgICAsIG1f
dmVyc2lvbih2ZXJzaW9uKQogICAgIHsKICAgICB9CiAgICAgUmVmUHRyPElEQkNhbGxiYWNrcz4g
bV9jYWxsYmFja3M7CisgICAgUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBtX2RhdGFiYXNl
Q2FsbGJhY2tzOwogICAgIGludDY0X3QgbV92ZXJzaW9uOwogfTsKIApAQCAtMTMwLDcgKzEzNiw2
IEBAIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OklEQkRhdGFiYXNlQmFja2VuZEltcGwoY29uc3Qg
U3RyaW5nJiBuYW1lLCBJREJCYWNraW5nU3RvCiAgICAgLCBtX2lkZW50aWZpZXIodW5pcXVlSWRl
bnRpZmllcikKICAgICAsIG1fZmFjdG9yeShmYWN0b3J5KQogICAgICwgbV90cmFuc2FjdGlvbkNv
b3JkaW5hdG9yKGNvb3JkaW5hdG9yKQotICAgICwgbV9wZW5kaW5nQ29ubmVjdGlvbkNvdW50KDAp
CiB7CiAgICAgQVNTRVJUKCFtX25hbWUuaXNOdWxsKCkpOwogfQpAQCAtMjQwLDYgKzI0NSw3IEBA
IHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6c2V0VmVyc2lvbihjb25zdCBTdHJpbmcmIHZl
cnNpb24sIFBhc3NSZWZQdHI8SURCQ2FsCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgZm9y
IChEYXRhYmFzZUNhbGxiYWNrc1NldDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX2RhdGFiYXNlQ2Fs
bGJhY2tzU2V0LmJlZ2luKCk7IGl0ICE9IG1fZGF0YWJhc2VDYWxsYmFja3NTZXQuZW5kKCk7ICsr
aXQpIHsKKyAgICAgICAgLy8gRnJvbnQgZW5kIGVuc3VyZXMgdGhlIGV2ZW50IGlzIG5vdCBmaXJl
ZCBhdCBjb25uZWN0aW9ucyB0aGF0IGhhdmUgY2xvc2VQZW5kaW5nIHNldC4KICAgICAgICAgaWYg
KCppdCAhPSBkYXRhYmFzZUNhbGxiYWNrcykKICAgICAgICAgICAgICgqaXQpLT5vblZlcnNpb25D
aGFuZ2UodmVyc2lvbik7CiAgICAgfQpAQCAtMzQyLDkgKzM0OCwxMCBAQCB2b2lkIElEQkRhdGFi
YXNlQmFja2VuZEltcGw6OnRyYW5zYWN0aW9uRmluaXNoZWRBbmRDb21wbGV0ZUZpcmVkKFBhc3NS
ZWZQdHI8SURCVAogICAgICAgICBwcm9jZXNzUGVuZGluZ0NhbGxzKCk7CiB9CiAKLWludDMyX3Qg
SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6Y29ubmVjdGlvbkNvdW50KCkKK3NpemVfdCBJREJEYXRh
YmFzZUJhY2tlbmRJbXBsOjpjb25uZWN0aW9uQ291bnQoKQogewotICAgIHJldHVybiBtX2RhdGFi
YXNlQ2FsbGJhY2tzU2V0LnNpemUoKSArIG1fcGVuZGluZ0Nvbm5lY3Rpb25Db3VudDsKKyAgICAv
LyBUaGlzIGRvZXMgbm90IGluY2x1ZGUgcGVuZGluZyBvcGVuIGNhbGxzLCBhcyB0aG9zZSBzaG91
bGQgbm90IGJsb2NrIHZlcnNpb24gY2hhbmdlcyBhbmQgZGVsZXRlcy4KKyAgICByZXR1cm4gbV9k
YXRhYmFzZUNhbGxiYWNrc1NldC5zaXplKCk7CiB9CiAKIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5k
SW1wbDo6cHJvY2Vzc1BlbmRpbmdDYWxscygpCkBAIC0zNTMsMTEgKzM2MCwxMCBAQCB2b2lkIElE
QkRhdGFiYXNlQmFja2VuZEltcGw6OnByb2Nlc3NQZW5kaW5nQ2FsbHMoKQogICAgIEFTU0VSVCht
X3BlbmRpbmdTZWNvbmRIYWxmT3BlbldpdGhWZXJzaW9uQ2FsbHMuc2l6ZSgpIDw9IDEpOwogICAg
IHdoaWxlICghbV9wZW5kaW5nU2Vjb25kSGFsZk9wZW5XaXRoVmVyc2lvbkNhbGxzLmlzRW1wdHko
KSkgewogICAgICAgICBSZWZQdHI8UGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGw+IHBlbmRpbmdP
cGVuV2l0aFZlcnNpb25DYWxsID0gbV9wZW5kaW5nU2Vjb25kSGFsZk9wZW5XaXRoVmVyc2lvbkNh
bGxzLnRha2VGaXJzdCgpOwotICAgICAgICBBU1NFUlQocGVuZGluZ09wZW5XaXRoVmVyc2lvbkNh
bGwtPnZlcnNpb24oKSA9PSBtX2ludFZlcnNpb24pOworICAgICAgICBBU1NFUlRfV0lUSF9NRVNT
QUdFKHBlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxsLT52ZXJzaW9uKCkgPT0gbV9pbnRWZXJzaW9u
LCAiJWxsZCB2cyAlbGxkIiwgKGxvbmcgbG9uZylwZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbC0+
dmVyc2lvbigpLCAobG9uZyBsb25nKW1faW50VmVyc2lvbik7CiAgICAgICAgIEFTU0VSVChtX2lk
ICE9IEludmFsaWRJZCk7Ci0gICAgICAgICsrbV9wZW5kaW5nQ29ubmVjdGlvbkNvdW50OwogICAg
ICAgICBwZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbC0+Y2FsbGJhY2tzKCktPm9uU3VjY2Vzcyh0
aGlzKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICAvLyBGYWxsIHRocm91Z2ggd2hlbiBjb21w
bGV0ZSwgYXMgcGVuZGluZyBkZWxldGVzIG1heSBiZSAocGFydGlhbGx5KSB1bmJsb2NrZWQuCiAg
ICAgfQogCiAgICAgLy8gUGVuZGluZyBjYWxscyBtYXkgYmUgcmVxdWV1ZWQgb3IgYWJvcnRlZApA
QCAtNDAwLDcgKzQwNiw3IEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6cHJvY2Vzc1Bl
bmRpbmdDYWxscygpCiAgICAgbV9wZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbHMuc3dhcChwZW5k
aW5nT3BlbldpdGhWZXJzaW9uQ2FsbHMpOwogICAgIHdoaWxlICghcGVuZGluZ09wZW5XaXRoVmVy
c2lvbkNhbGxzLmlzRW1wdHkoKSkgewogICAgICAgICBSZWZQdHI8UGVuZGluZ09wZW5XaXRoVmVy
c2lvbkNhbGw+IHBlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxsID0gcGVuZGluZ09wZW5XaXRoVmVy
c2lvbkNhbGxzLnRha2VGaXJzdCgpOwotICAgICAgICBvcGVuQ29ubmVjdGlvbldpdGhWZXJzaW9u
KHBlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxsLT5jYWxsYmFja3MoKSwgcGVuZGluZ09wZW5XaXRo
VmVyc2lvbkNhbGwtPnZlcnNpb24oKSk7CisgICAgICAgIG9wZW5Db25uZWN0aW9uV2l0aFZlcnNp
b24ocGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGwtPmNhbGxiYWNrcygpLCBwZW5kaW5nT3Blbldp
dGhWZXJzaW9uQ2FsbC0+ZGF0YWJhc2VDYWxsYmFja3MoKSwgcGVuZGluZ09wZW5XaXRoVmVyc2lv
bkNhbGwtPnZlcnNpb24oKSk7CiAgICAgfQogCiAgICAgLy8gR2l2ZW4gdGhlIGNoZWNrIGFib3Zl
LCBpdCBhcHBlYXJzIHRoYXQgY2FsbHMgY2Fubm90IGJlIHJlcXVldWVkIGJ5CkBAIC00MDksNyAr
NDE1LDcgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpwcm9jZXNzUGVuZGluZ0NhbGxz
KCkKICAgICBtX3BlbmRpbmdPcGVuQ2FsbHMuc3dhcChwZW5kaW5nT3BlbkNhbGxzKTsKICAgICB3
aGlsZSAoIXBlbmRpbmdPcGVuQ2FsbHMuaXNFbXB0eSgpKSB7CiAgICAgICAgIFJlZlB0cjxQZW5k
aW5nT3BlbkNhbGw+IHBlbmRpbmdPcGVuQ2FsbCA9IHBlbmRpbmdPcGVuQ2FsbHMudGFrZUZpcnN0
KCk7Ci0gICAgICAgIG9wZW5Db25uZWN0aW9uKHBlbmRpbmdPcGVuQ2FsbC0+Y2FsbGJhY2tzKCkp
OworICAgICAgICBvcGVuQ29ubmVjdGlvbihwZW5kaW5nT3BlbkNhbGwtPmNhbGxiYWNrcygpLCBw
ZW5kaW5nT3BlbkNhbGwtPmRhdGFiYXNlQ2FsbGJhY2tzKCkpOwogICAgIH0KICAgICBBU1NFUlQo
bV9wZW5kaW5nT3BlbkNhbGxzLmlzRW1wdHkoKSk7CiB9CkBAIC00MjgsNDQgKzQzNCwzMCBAQCBQ
YXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gSURCRGF0YWJhc2VCYWNr
ZW5kSW1wbDo6dHJhbnNhY3Rpb24oRAogICAgIHJldHVybiB0cmFuc2FjdGlvbi5yZWxlYXNlKCk7
CiB9CiAKLXZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6cmVnaXN0ZXJGcm9udGVuZENhbGxi
YWNrcyhQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBjYWxsYmFja3MpCi17Ci0gICAg
QVNTRVJUKG1fYmFja2luZ1N0b3JlLmdldCgpKTsKLSAgICBBU1NFUlQobV9wZW5kaW5nQ29ubmVj
dGlvbkNvdW50KTsKLSAgICAtLW1fcGVuZGluZ0Nvbm5lY3Rpb25Db3VudDsKLSAgICBtX2RhdGFi
YXNlQ2FsbGJhY2tzU2V0LmFkZChSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+KGNhbGxiYWNr
cykpOwotICAgIC8vIFdlIGdpdmUgbWF4IHByaW9yaXR5IHRvIG9wZW4gY2FsbHMgdGhhdCBmb2xs
b3cgdXBncmFkZW5lZWRlZAotICAgIC8vIGV2ZW50czsgdHJpZ2dlciB0aGUgcmVzdCBvZiB0aGUg
cXVldWVzIHRvIGJlIHNlcnZpY2VkIHdoZW4gdGhvc2Ugb3BlbgotICAgIC8vIGNhbGxzIGFyZSBm
aW5pc2hlZC4KLSAgICBwcm9jZXNzUGVuZGluZ0NhbGxzKCk7Ci19Ci0KLXZvaWQgSURCRGF0YWJh
c2VCYWNrZW5kSW1wbDo6b3BlbkNvbm5lY3Rpb24oUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNh
bGxiYWNrcykKK3ZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6b3BlbkNvbm5lY3Rpb24oUGFz
c1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNh
bGxiYWNrcz4gZGF0YWJhc2VDYWxsYmFja3MpCiB7CiAgICAgQVNTRVJUKG1fYmFja2luZ1N0b3Jl
LmdldCgpKTsKICAgICBpZiAoIW1fcGVuZGluZ0RlbGV0ZUNhbGxzLmlzRW1wdHkoKSB8fCBtX3J1
bm5pbmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24gfHwgIW1fcGVuZGluZ1NldFZlcnNpb25DYWxs
cy5pc0VtcHR5KCkpCi0gICAgICAgIG1fcGVuZGluZ09wZW5DYWxscy5hcHBlbmQoUGVuZGluZ09w
ZW5DYWxsOjpjcmVhdGUoY2FsbGJhY2tzKSk7CisgICAgICAgIG1fcGVuZGluZ09wZW5DYWxscy5h
cHBlbmQoUGVuZGluZ09wZW5DYWxsOjpjcmVhdGUoY2FsbGJhY2tzLCBkYXRhYmFzZUNhbGxiYWNr
cykpOwogICAgIGVsc2UgewogICAgICAgICBpZiAobV9pZCA9PSBJbnZhbGlkSWQgJiYgIW9wZW5J
bnRlcm5hbCgpKQogICAgICAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJy
b3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VU5LTk9XTl9FUlIsICJJbnRlcm5hbCBl
cnJvci4iKSk7CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgKyttX3BlbmRpbmdDb25uZWN0
aW9uQ291bnQ7CisgICAgICAgICAgICBtX2RhdGFiYXNlQ2FsbGJhY2tzU2V0LmFkZChSZWZQdHI8
SURCRGF0YWJhc2VDYWxsYmFja3M+KGRhdGFiYXNlQ2FsbGJhY2tzKSk7CiAgICAgICAgICAgICBj
YWxsYmFja3MtPm9uU3VjY2Vzcyh0aGlzKTsKICAgICAgICAgfQogICAgIH0KIH0KIAotdm9pZCBJ
REJEYXRhYmFzZUJhY2tlbmRJbXBsOjpydW5JbnRWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24oaW50
NjRfdCByZXF1ZXN0ZWRWZXJzaW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJh
Y2tzKQordm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpydW5JbnRWZXJzaW9uQ2hhbmdlVHJh
bnNhY3Rpb24oaW50NjRfdCByZXF1ZXN0ZWRWZXJzaW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNr
cz4gcHJwQ2FsbGJhY2tzLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBwcnBEYXRh
YmFzZUNhbGxiYWNrcykKIHsKICAgICBSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MgPSBw
cnBDYWxsYmFja3M7CisgICAgUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBkYXRhYmFzZUNh
bGxiYWNrcyA9IHBycERhdGFiYXNlQ2FsbGJhY2tzOwogICAgIEFTU0VSVChjYWxsYmFja3MpOwog
ICAgIGZvciAoRGF0YWJhc2VDYWxsYmFja3NTZXQ6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9kYXRh
YmFzZUNhbGxiYWNrc1NldC5iZWdpbigpOyBpdCAhPSBtX2RhdGFiYXNlQ2FsbGJhY2tzU2V0LmVu
ZCgpOyArK2l0KSB7Ci0gICAgICAgIC8vIE5vdGUgdGhhdCBzb21lIGNvbm5lY3Rpb25zIG1pZ2h0
IGNsb3NlIGluIHRoZSB2ZXJzaW9uY2hhbmdlIGV2ZW50Ci0gICAgICAgIC8vIGhhbmRsZXIgZm9y
IHNvbWUgb3RoZXIgY29ubmVjdGlvbiwgYWZ0ZXIgd2hpY2ggaXRzIG93biB2ZXJzaW9uY2hhbmdl
Ci0gICAgICAgIC8vIGV2ZW50IHNob3VsZCBub3QgYmUgZmlyZWQuIFRoZSBiYWNrZW5kIGRvZXNu
J3Qgd29ycnkgYWJvdXQgdGhpcywgd2UKLSAgICAgICAgLy8ganVzdCBxdWV1ZSB1cCBhIHZlcnNp
b24gY2hhbmdlIGV2ZW50IGZvciBldmVyeSBjb25uZWN0aW9uLiBUaGUKLSAgICAgICAgLy8gZnJv
bnRlbmQgdGFrZXMgY2FyZSB0byBvbmx5IGRpc3BhdGNoIHRvIG9wZW4gY29ubmVjdGlvbnMuCi0g
ICAgICAgICgqaXQpLT5vblZlcnNpb25DaGFuZ2UobV9pbnRWZXJzaW9uLCByZXF1ZXN0ZWRWZXJz
aW9uKTsKKyAgICAgICAgLy8gRnJvbnQgZW5kIGVuc3VyZXMgdGhlIGV2ZW50IGlzIG5vdCBmaXJl
ZCBhdCBjb25uZWN0aW9ucyB0aGF0IGhhdmUgY2xvc2VQZW5kaW5nIHNldC4KKyAgICAgICAgaWYg
KCppdCAhPSBkYXRhYmFzZUNhbGxiYWNrcykKKyAgICAgICAgICAgICgqaXQpLT5vblZlcnNpb25D
aGFuZ2UobV9pbnRWZXJzaW9uLCByZXF1ZXN0ZWRWZXJzaW9uKTsKICAgICB9CiAgICAgLy8gVGhl
IHNwZWMgZGljdGF0ZXMgd2Ugd2FpdCB1bnRpbCBhbGwgdGhlIHZlcnNpb24gY2hhbmdlIGV2ZW50
cyBhcmUKICAgICAvLyBkZWxpdmVyZWQgYW5kIHRoZW4gY2hlY2sgbV9kYXRhYmFzZUNhbGxiYWNr
cy5lbXB0eSgpIGJlZm9yZSBwcm9jZWVkaW5nCkBAIC00NzQsMTEgKzQ2NiwxMSBAQCB2b2lkIElE
QkRhdGFiYXNlQmFja2VuZEltcGw6OnJ1bkludFZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbihpbnQ2
NF90IHJlcXVlc3RlZFZlcgogICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhlIGNhbGwgdG8gb25CbG9j
a2VkIGFuZCBpbnN0ZWFkIHdhaXQgdW50aWwgdGhlIGZyb250ZW5kCiAgICAgLy8gdGVsbHMgdXMg
dGhhdCBhbGwgdGhlIGJsb2NrZWQgZXZlbnRzIGhhdmUgYmVlbiBkZWxpdmVyZWQuIFNlZQogICAg
IC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTEzMAotICAgIGlm
IChjb25uZWN0aW9uQ291bnQoKSA+IDApCisgICAgaWYgKGNvbm5lY3Rpb25Db3VudCgpKQogICAg
ICAgICBjYWxsYmFja3MtPm9uQmxvY2tlZChtX2ludFZlcnNpb24pOwogICAgIC8vIEZJWE1FOiBB
ZGQgdGVzdCBmb3IgbV9ydW5uaW5nVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uLgotICAgIGlmICht
X3J1bm5pbmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24gfHwgY29ubmVjdGlvbkNvdW50KCkgPiAw
KSB7Ci0gICAgICAgIG1fcGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGxzLmFwcGVuZChQZW5kaW5n
T3BlbldpdGhWZXJzaW9uQ2FsbDo6Y3JlYXRlKGNhbGxiYWNrcywgcmVxdWVzdGVkVmVyc2lvbikp
OworICAgIGlmIChtX3J1bm5pbmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24gfHwgY29ubmVjdGlv
bkNvdW50KCkpIHsKKyAgICAgICAgbV9wZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbHMuYXBwZW5k
KFBlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxsOjpjcmVhdGUoY2FsbGJhY2tzLCBkYXRhYmFzZUNh
bGxiYWNrcywgcmVxdWVzdGVkVmVyc2lvbikpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBA
IC00OTcsMTQgKzQ4OSwxNiBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OnJ1bkludFZl
cnNpb25DaGFuZ2VUcmFuc2FjdGlvbihpbnQ2NF90IHJlcXVlc3RlZFZlcgogICAgICAgICBlYyA9
IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpUUkFOU0FDVElPTl9JTkFDVElWRV9FUlI7CiAgICAgfQog
ICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIW1fcGVuZGluZ1NlY29uZEhhbGZPcGVuV2l0aFZlcnNp
b25DYWxscy5zaXplKCksICJtX3BlbmRpbmdTZWNvbmRIYWxmT3BlbldpdGhWZXJzaW9uQ2FsbHMu
c2l6ZSA9ICV6dSIsIG1fcGVuZGluZ1NlY29uZEhhbGZPcGVuV2l0aFZlcnNpb25DYWxscy5zaXpl
KCkpOwotICAgIG1fcGVuZGluZ1NlY29uZEhhbGZPcGVuV2l0aFZlcnNpb25DYWxscy5hcHBlbmQo
UGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGw6OmNyZWF0ZShjYWxsYmFja3MsIHJlcXVlc3RlZFZl
cnNpb24pKTsKKyAgICBtX3BlbmRpbmdTZWNvbmRIYWxmT3BlbldpdGhWZXJzaW9uQ2FsbHMuYXBw
ZW5kKFBlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxsOjpjcmVhdGUoY2FsbGJhY2tzLCBkYXRhYmFz
ZUNhbGxiYWNrcywgcmVxdWVzdGVkVmVyc2lvbikpOworICAgIG1fZGF0YWJhc2VDYWxsYmFja3NT
ZXQuYWRkKGRhdGFiYXNlQ2FsbGJhY2tzKTsKIH0KIAotdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJ
bXBsOjpvcGVuQ29ubmVjdGlvbldpdGhWZXJzaW9uKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBw
cnBDYWxsYmFja3MsIGludDY0X3QgdmVyc2lvbikKK3ZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1w
bDo6b3BlbkNvbm5lY3Rpb25XaXRoVmVyc2lvbihQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gcHJw
Q2FsbGJhY2tzLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBwcnBEYXRhYmFzZUNh
bGxiYWNrcywgaW50NjRfdCB2ZXJzaW9uKQogewogICAgIFJlZlB0cjxJREJDYWxsYmFja3M+IGNh
bGxiYWNrcyA9IHBycENhbGxiYWNrczsKKyAgICBSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+
IGRhdGFiYXNlQ2FsbGJhY2tzID0gcHJwRGF0YWJhc2VDYWxsYmFja3M7CiAgICAgaWYgKCFtX3Bl
bmRpbmdEZWxldGVDYWxscy5pc0VtcHR5KCkgfHwgbV9ydW5uaW5nVmVyc2lvbkNoYW5nZVRyYW5z
YWN0aW9uIHx8ICFtX3BlbmRpbmdTZXRWZXJzaW9uQ2FsbHMuaXNFbXB0eSgpKSB7Ci0gICAgICAg
IG1fcGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGxzLmFwcGVuZChQZW5kaW5nT3BlbldpdGhWZXJz
aW9uQ2FsbDo6Y3JlYXRlKGNhbGxiYWNrcywgdmVyc2lvbikpOworICAgICAgICBtX3BlbmRpbmdP
cGVuV2l0aFZlcnNpb25DYWxscy5hcHBlbmQoUGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGw6OmNy
ZWF0ZShjYWxsYmFja3MsIGRhdGFiYXNlQ2FsbGJhY2tzLCB2ZXJzaW9uKSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAgICAgaWYgKG1faWQgPT0gSW52YWxpZElkKSB7CkBAIC01MTYsNyArNTEw
LDcgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpvcGVuQ29ubmVjdGlvbldpdGhWZXJz
aW9uKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPgogICAgICAgICB9CiAgICAgfQogICAgIGlmICh2
ZXJzaW9uID4gbV9pbnRWZXJzaW9uKSB7Ci0gICAgICAgIHJ1bkludFZlcnNpb25DaGFuZ2VUcmFu
c2FjdGlvbih2ZXJzaW9uLCBjYWxsYmFja3MpOworICAgICAgICBydW5JbnRWZXJzaW9uQ2hhbmdl
VHJhbnNhY3Rpb24odmVyc2lvbiwgY2FsbGJhY2tzLCBkYXRhYmFzZUNhbGxiYWNrcyk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKHZlcnNpb24gPCBtX2ludFZlcnNpb24pIHsKQEAg
LTUyNCw3ICs1MTgsNyBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6Om9wZW5Db25uZWN0
aW9uV2l0aFZlcnNpb24oUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAgICAgQVNTRVJUKHZlcnNpb24gPT0gbV9pbnRWZXJzaW9uKTsKLSAgICArK21fcGVu
ZGluZ0Nvbm5lY3Rpb25Db3VudDsKKyAgICBtX2RhdGFiYXNlQ2FsbGJhY2tzU2V0LmFkZChkYXRh
YmFzZUNhbGxiYWNrcyk7CiAgICAgY2FsbGJhY2tzLT5vblN1Y2Nlc3ModGhpcyk7CiB9CiAKQEAg
LTUzNSwxNSArNTI5LDE0IEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6ZGVsZXRlRGF0
YWJhc2UoUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNrCiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAgICAgUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzID0gcHJwQ2FsbGJh
Y2tzOwotICAgIC8vIEZJWE1FOiBPbmx5IGZpcmUgb25WZXJzaW9uQ2hhbmdlIGlmIHRoZXJlIHRo
ZSBjb25uZWN0aW9uIGlzbid0IGluCi0gICAgLy8gdGhlIHByb2Nlc3Mgb2YgY2xvc2luZy4KLSAg
ICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzExMjkKLSAgICBm
b3IgKERhdGFiYXNlQ2FsbGJhY2tzU2V0Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1fZGF0YWJhc2VD
YWxsYmFja3NTZXQuYmVnaW4oKTsgaXQgIT0gbV9kYXRhYmFzZUNhbGxiYWNrc1NldC5lbmQoKTsg
KytpdCkKKyAgICBmb3IgKERhdGFiYXNlQ2FsbGJhY2tzU2V0Ojpjb25zdF9pdGVyYXRvciBpdCA9
IG1fZGF0YWJhc2VDYWxsYmFja3NTZXQuYmVnaW4oKTsgaXQgIT0gbV9kYXRhYmFzZUNhbGxiYWNr
c1NldC5lbmQoKTsgKytpdCkgeworICAgICAgICAvLyBGcm9udCBlbmQgZW5zdXJlcyB0aGUgZXZl
bnQgaXMgbm90IGZpcmVkIGF0IGNvbm5lY3Rpb25zIHRoYXQgaGF2ZSBjbG9zZVBlbmRpbmcgc2V0
LgogICAgICAgICAoKml0KS0+b25WZXJzaW9uQ2hhbmdlKCIiKTsKKyAgICB9CiAgICAgLy8gRklY
TUU6IE9ubHkgZmlyZSBvbkJsb2NrZWQgaWYgdGhlcmUgYXJlIG9wZW4gY29ubmVjdGlvbnMgYWZ0
ZXIgdGhlCiAgICAgLy8gVmVyc2lvbkNoYW5nZUV2ZW50cyBhcmUgcmVjZWl2ZWQsIG5vdCBqdXN0
IHNldCB1cCB0byBmaXJlLgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD03MTEzMAotICAgIGlmIChjb25uZWN0aW9uQ291bnQoKSA+PSAxKSB7CisgICAgaWYg
KGNvbm5lY3Rpb25Db3VudCgpKSB7CiAgICAgICAgIG1fcGVuZGluZ0RlbGV0ZUNhbGxzLmFwcGVu
ZChQZW5kaW5nRGVsZXRlQ2FsbDo6Y3JlYXRlKGNhbGxiYWNrcykpOwogICAgICAgICBjYWxsYmFj
a3MtPm9uQmxvY2tlZCgpOwogICAgICAgICByZXR1cm47CkBAIC01NjQsMTggKzU1NywxNyBAQCB2
b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNsb3NlKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VD
YWxsYmFja3M+IHBycENhbGxiYWNrcwogewogICAgIFJlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNr
cz4gY2FsbGJhY2tzID0gcHJwQ2FsbGJhY2tzOwogICAgIEFTU0VSVChtX2RhdGFiYXNlQ2FsbGJh
Y2tzU2V0LmNvbnRhaW5zKGNhbGxiYWNrcykpOworCiAgICAgbV9kYXRhYmFzZUNhbGxiYWNrc1Nl
dC5yZW1vdmUoY2FsbGJhY2tzKTsKKwogICAgIGlmIChjb25uZWN0aW9uQ291bnQoKSA+IDEpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIFRyYW5zYWN0aW9uU2V0IHRyYW5zYWN0aW9ucyhtX3RyYW5z
YWN0aW9ucyk7CiAgICAgcHJvY2Vzc1BlbmRpbmdDYWxscygpOwogCi0gICAgQVNTRVJUKG1fdHJh
bnNhY3Rpb25zLnNpemUoKSAtIHRyYW5zYWN0aW9ucy5zaXplKCkgPD0gMSk7Ci0gICAgLy8gRklY
TUU6IEluc3RlYWQgb2YgcmVseWluZyBvbiB0cmFuc2FjdGlvbnMuc2l6ZSgpLCBtYWtlIGNvbm5l
Y3Rpb25Db3VudAotICAgIC8vIGF3YXJlIG9mIGluLWZsaWdodCB1cGdyYWRlbmVlZGVkIGV2ZW50
cyBhcyB3ZWxsIGFzIGluLWZsaWdodCBzdWNjZXNzCi0gICAgLy8gZXZlbnRzLgotICAgIGlmICgh
Y29ubmVjdGlvbkNvdW50KCkgJiYgIW1fcGVuZGluZ0RlbGV0ZUNhbGxzLnNpemUoKSAmJiBtX3Ry
YW5zYWN0aW9ucy5zaXplKCkgPT0gdHJhbnNhY3Rpb25zLnNpemUoKSkgeworICAgIGlmICghY29u
bmVjdGlvbkNvdW50KCkgJiYgIW1fcGVuZGluZ09wZW5DYWxscy5zaXplKCkgJiYgIW1fcGVuZGlu
Z09wZW5XaXRoVmVyc2lvbkNhbGxzLnNpemUoKSAmJiAhbV9wZW5kaW5nRGVsZXRlQ2FsbHMuc2l6
ZSgpKSB7CisgICAgICAgIC8vIEZJWE1FOiBWZXJpZnkgdGhhdCB0aGUgZm9sbG93aW5nIGlzIHN0
aWxsIG5lZWRlZCBldmVuIGlmIHRoZXJlIGFyZSBubyBjb25uZWN0aW9ucyBvciBwZW5kaW5nIGFj
dGl2aXR5OgorICAgICAgICBUcmFuc2FjdGlvblNldCB0cmFuc2FjdGlvbnMobV90cmFuc2FjdGlv
bnMpOwogICAgICAgICBmb3IgKFRyYW5zYWN0aW9uU2V0Ojpjb25zdF9pdGVyYXRvciBpdCA9IHRy
YW5zYWN0aW9ucy5iZWdpbigpOyBpdCAhPSB0cmFuc2FjdGlvbnMuZW5kKCk7ICsraXQpCiAgICAg
ICAgICAgICAoKml0KS0+YWJvcnQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oCmluZGV4IDdmMzFjYjA0
ZWE0ZWRiZmNkNjcyMTdjMTljOGNhN2EyYzk3M2JlMTEuLjIyY2NjNDMyMjBiNTA0ZmU3MDY4NTY3
YjU5YTQ3NjI1NWVlYTg1NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmgKQEAgLTU1LDkgKzU1LDggQEAg
cHVibGljOgogICAgIHN0YXRpYyBjb25zdCBpbnQ2NF90IEludmFsaWRJZCA9IDA7CiAgICAgaW50
NjRfdCBpZCgpIGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0KIAotICAgIHZvaWQgcmVnaXN0ZXJGcm9u
dGVuZENhbGxiYWNrcyhQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPik7Ci0gICAgdm9p
ZCBvcGVuQ29ubmVjdGlvbihQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pOwotICAgIHZvaWQgb3Bl
bkNvbm5lY3Rpb25XaXRoVmVyc2lvbihQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIGludDY0X3Qg
dmVyc2lvbik7CisgICAgdm9pZCBvcGVuQ29ubmVjdGlvbihQYXNzUmVmUHRyPElEQkNhbGxiYWNr
cz4sIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+KTsKKyAgICB2b2lkIG9wZW5Db25u
ZWN0aW9uV2l0aFZlcnNpb24oUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBQYXNzUmVmUHRyPElE
QkRhdGFiYXNlQ2FsbGJhY2tzPiwgaW50NjRfdCB2ZXJzaW9uKTsKICAgICB2b2lkIGRlbGV0ZURh
dGFiYXNlKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPik7CiAKICAgICAvLyBJREJEYXRhYmFzZUJh
Y2tlbmRJbnRlcmZhY2UKQEAgLTc5LDkgKzc4LDkgQEAgcHJpdmF0ZToKICAgICBJREJEYXRhYmFz
ZUJhY2tlbmRJbXBsKGNvbnN0IFN0cmluZyYgbmFtZSwgSURCQmFja2luZ1N0b3JlKiBkYXRhYmFz
ZSwgSURCVHJhbnNhY3Rpb25Db29yZGluYXRvciosIElEQkZhY3RvcnlCYWNrZW5kSW1wbCosIGNv
bnN0IFN0cmluZyYgdW5pcXVlSWRlbnRpZmllcik7CiAKICAgICBib29sIG9wZW5JbnRlcm5hbCgp
OwotICAgIHZvaWQgcnVuSW50VmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKGludDY0X3QgcmVxdWVz
dGVkVmVyc2lvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+KTsKKyAgICB2b2lkIHJ1bkludFZl
cnNpb25DaGFuZ2VUcmFuc2FjdGlvbihpbnQ2NF90IHJlcXVlc3RlZFZlcnNpb24sIFBhc3NSZWZQ
dHI8SURCQ2FsbGJhY2tzPiwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4pOwogICAg
IHZvaWQgbG9hZE9iamVjdFN0b3JlcygpOwotICAgIGludDMyX3QgY29ubmVjdGlvbkNvdW50KCk7
CisgICAgc2l6ZV90IGNvbm5lY3Rpb25Db3VudCgpOwogICAgIHZvaWQgcHJvY2Vzc1BlbmRpbmdD
YWxscygpOwogCiAgICAgc3RhdGljIHZvaWQgY3JlYXRlT2JqZWN0U3RvcmVJbnRlcm5hbChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbXBsPiwg
UGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsPiwgUGFzc1JlZlB0cjxJREJUcmFu
c2FjdGlvbkJhY2tlbmRJbXBsPik7CkBAIC0xMjcsMTAgKzEyNiw2IEBAIHByaXZhdGU6CiAgICAg
Y2xhc3MgUGVuZGluZ0RlbGV0ZUNhbGw7CiAgICAgRGVxdWU8UmVmUHRyPFBlbmRpbmdEZWxldGVD
YWxsPiA+IG1fcGVuZGluZ0RlbGV0ZUNhbGxzOwogCi0gICAgLy8gRklYTUU6IEVsaW1pbmF0ZSB0
aGUgbGltYm8gc3RhdGUgYmV0d2VlbiBvcGVuQ29ubmVjdGlvbigpIGFuZCByZWdpc3RlckZyb250
ZW5kQ2FsbGJhY2tzKCkKLSAgICAvLyB0aGF0IHRoaXMgY291bnRlciB0cmFja3MuCi0gICAgaW50
MzJfdCBtX3BlbmRpbmdDb25uZWN0aW9uQ291bnQ7Ci0KICAgICB0eXBlZGVmIExpc3RIYXNoU2V0
PFJlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gPiBEYXRhYmFzZUNhbGxiYWNrc1NldDsKICAg
ICBEYXRhYmFzZUNhbGxiYWNrc1NldCBtX2RhdGFiYXNlQ2FsbGJhY2tzU2V0OwogfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2Vu
ZEludGVyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJh
c2VCYWNrZW5kSW50ZXJmYWNlLmgKaW5kZXggMGY2YjM1ZDYwOTM2NGRjYWNiYzE3MTQ2MzFmZDE2
YzU5MWRjY2Q1NS4uZTRmYzBjYzhhNzJhYTk1OGUzMjczOTA4NDQzNTVhMTkwNWVkNzcxNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNr
ZW5kSW50ZXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
RGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmgKQEAgLTYwLDggKzYwLDYgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCBzZXRWZXJzaW9uKGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgUGFzc1JlZlB0
cjxJREJDYWxsYmFja3M+LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiwgRXhjZXB0
aW9uQ29kZSYpID0gMDsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNr
ZW5kSW50ZXJmYWNlPiB0cmFuc2FjdGlvbihET01TdHJpbmdMaXN0KiBzdG9yZU5hbWVzLCB1bnNp
Z25lZCBzaG9ydCBtb2RlLCBFeGNlcHRpb25Db2RlJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBj
bG9zZShQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPikgPSAwOwotCi0gICAgdmlydHVh
bCB2b2lkIHJlZ2lzdGVyRnJvbnRlbmRDYWxsYmFja3MoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNh
bGxiYWNrcz4pID0gMDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQ2FsbGJhY2tzSW1w
bC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUNhbGxi
YWNrc0ltcGwuY3BwCmluZGV4IGY2NTY1ZGNhMWJkODIyZmU2ZGMxMzU5NjhjM2IwZWRiOTk5NWEz
YjguLjk3MGQzYTE2N2NhZjk5NmM3ZjAzMWZmNTRhNGYxNTkyNDlmMWFhMGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQ2FsbGJhY2tzSW1w
bC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VD
YWxsYmFja3NJbXBsLmNwcApAQCAtMzIsMTMgKzMyLDEzIEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGw+IElEQkRhdGFiYXNlQ2Fs
bGJhY2tzSW1wbDo6Y3JlYXRlKElEQkRhdGFiYXNlKiBkYXRhYmFzZSkKK1Bhc3NSZWZQdHI8SURC
RGF0YWJhc2VDYWxsYmFja3NJbXBsPiBJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGw6OmNyZWF0ZSgp
CiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwoZGF0
YWJhc2UpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IElEQkRhdGFiYXNlQ2FsbGJhY2tzSW1w
bCgpKTsKIH0KIAotSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsOjpJREJEYXRhYmFzZUNhbGxiYWNr
c0ltcGwoSURCRGF0YWJhc2UqIGRhdGFiYXNlKQotICAgIDogbV9kYXRhYmFzZShkYXRhYmFzZSkK
K0lEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbDo6SURCRGF0YWJhc2VDYWxsYmFja3NJbXBsKCkKKyAg
ICA6IG1fZGF0YWJhc2UoMCkKIHsKIH0KIApAQCAtNjQsMTAgKzY0LDExIEBAIHZvaWQgSURCRGF0
YWJhc2VDYWxsYmFja3NJbXBsOjpvblZlcnNpb25DaGFuZ2UoaW50NjRfdCBvbGRWZXJzaW9uLCBp
bnQ2NF90IG5ld1ZlCiAgICAgICAgIG1fZGF0YWJhc2UtPm9uVmVyc2lvbkNoYW5nZShvbGRWZXJz
aW9uLCBuZXdWZXJzaW9uKTsKIH0KIAotdm9pZCBJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGw6OnVu
cmVnaXN0ZXJEYXRhYmFzZShJREJEYXRhYmFzZSogZGF0YWJhc2UpCit2b2lkIElEQkRhdGFiYXNl
Q2FsbGJhY2tzSW1wbDo6Y29ubmVjdChJREJEYXRhYmFzZSogZGF0YWJhc2UpCiB7Ci0gICAgQVNT
RVJUX1VOVVNFRChkYXRhYmFzZSwgZGF0YWJhc2UgPT0gbV9kYXRhYmFzZSk7Ci0gICAgbV9kYXRh
YmFzZSA9IDA7CisgICAgQVNTRVJUKCFtX2RhdGFiYXNlKTsKKyAgICBBU1NFUlQoZGF0YWJhc2Up
OworICAgIG1fZGF0YWJhc2UgPSBkYXRhYmFzZTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJh
c2VDYWxsYmFja3NJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJE
YXRhYmFzZUNhbGxiYWNrc0ltcGwuaAppbmRleCA3OTJiZTNhZDc2ZjU0ZjAzNTlkNmFmMTYwM2U1
ZGQ5M2I5MWQ2YmExLi43NDk3MDcwMTBkYmY5NzcyNTExYjZkNDczY2VhZDEwYjI4MjU3MjgwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUNh
bGxiYWNrc0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJE
YXRhYmFzZUNhbGxiYWNrc0ltcGwuaApAQCAtMzgsMTggKzM4LDIwIEBAIGNsYXNzIElEQkRhdGFi
YXNlOwogCiBjbGFzcyBJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwgOiBwdWJsaWMgSURCRGF0YWJh
c2VDYWxsYmFja3MgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQkRhdGFiYXNl
Q2FsbGJhY2tzSW1wbD4gY3JlYXRlKElEQkRhdGFiYXNlKik7CisgICAgc3RhdGljIFBhc3NSZWZQ
dHI8SURCRGF0YWJhc2VDYWxsYmFja3NJbXBsPiBjcmVhdGUoKTsKICAgICB2aXJ0dWFsIH5JREJE
YXRhYmFzZUNhbGxiYWNrc0ltcGwoKTsKIAorICAgIC8vIElEQkRhdGFiYXNlQ2FsbGJhY2tzCiAg
ICAgdmlydHVhbCB2b2lkIG9uRm9yY2VkQ2xvc2UoKTsKICAgICB2aXJ0dWFsIHZvaWQgb25WZXJz
aW9uQ2hhbmdlKGNvbnN0IFN0cmluZyYgdmVyc2lvbik7CiAgICAgdmlydHVhbCB2b2lkIG9uVmVy
c2lvbkNoYW5nZShpbnQ2NF90IG9sZFZlcnNpb24sIGludDY0X3QgbmV3VmVyc2lvbik7Ci0gICAg
dm9pZCB1bnJlZ2lzdGVyRGF0YWJhc2UoSURCRGF0YWJhc2UqKTsKKworICAgIHZvaWQgY29ubmVj
dChJREJEYXRhYmFzZSopOwogCiBwcml2YXRlOgotICAgIElEQkRhdGFiYXNlQ2FsbGJhY2tzSW1w
bChJREJEYXRhYmFzZSopOworICAgIElEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbCgpOwogCi0gICAg
Ly8gbV9kYXRhYmFzZSBoYXMgYSBSZWZQdHIgdG8gdGhpcywgc28gdXNlIGEgd2VhayBwb2ludGVy
IHRvIGF2b2lkIGEgY3ljbGUuCisgICAgLy8gVGhlIGluaXRpYWwgSURCT3BlbkRCUmVxdWVzdCBv
ciBmaW5hbCBJREJEYXRhYmFzZSBtYWludGFpbnMgYSBSZWZQdHIgdG8gdGhpcwogICAgIElEQkRh
dGFiYXNlKiBtX2RhdGFiYXNlOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJGYWN0b3J5LmNwcAppbmRleCBjMjA2MzVmMmFhMzdkZDk1MWMzYzg0ZjQzNDYz
NDExMDYwZTExN2EwLi40ZTMwMjMxNjcxOTkwMzJkNjRkYzliOGJmODEwNGYwMDMwNjkxY2QzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcApA
QCAtMTIwLDggKzEyMCw5IEBAIFBhc3NSZWZQdHI8SURCT3BlbkRCUmVxdWVzdD4gSURCRmFjdG9y
eTo6b3BlbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjCiAgICAgaWYgKCFpc0Nv
bnRleHRWYWxpZChjb250ZXh0KSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBSZWZQdHI8SURC
T3BlbkRCUmVxdWVzdD4gcmVxdWVzdCA9IElEQk9wZW5EQlJlcXVlc3Q6OmNyZWF0ZShjb250ZXh0
LCBJREJBbnk6OmNyZWF0ZSh0aGlzKSwgdmVyc2lvbik7Ci0gICAgbV9iYWNrZW5kLT5vcGVuKG5h
bWUsIHZlcnNpb24sIHJlcXVlc3QsIGNvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCksIGNvbnRleHQs
IGdldEluZGV4ZWREQkRhdGFiYXNlUGF0aChjb250ZXh0KSk7CisgICAgUmVmUHRyPElEQkRhdGFi
YXNlQ2FsbGJhY2tzSW1wbD4gZGF0YWJhc2VDYWxsYmFja3MgPSBJREJEYXRhYmFzZUNhbGxiYWNr
c0ltcGw6OmNyZWF0ZSgpOworICAgIFJlZlB0cjxJREJPcGVuREJSZXF1ZXN0PiByZXF1ZXN0ID0g
SURCT3BlbkRCUmVxdWVzdDo6Y3JlYXRlKGNvbnRleHQsIElEQkFueTo6Y3JlYXRlKHRoaXMpLCBk
YXRhYmFzZUNhbGxiYWNrcywgdmVyc2lvbik7CisgICAgbV9iYWNrZW5kLT5vcGVuKG5hbWUsIHZl
cnNpb24sIHJlcXVlc3QsIGRhdGFiYXNlQ2FsbGJhY2tzLCBjb250ZXh0LT5zZWN1cml0eU9yaWdp
bigpLCBjb250ZXh0LCBnZXRJbmRleGVkREJEYXRhYmFzZVBhdGgoY29udGV4dCkpOwogICAgIHJl
dHVybiByZXF1ZXN0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJGYWN0b3J5QmFja2VuZEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJbXBsLmNwcAppbmRleCA4ZGE1YzAyZTQyM2Y2
ZjY0ZTU3OTczMGRiNzNmYTI5ZWMyYmU0NjA2Li5jN2VmODYwZTEzZTJkMTgxNzlhZTVlY2MwYzc1
OTcwOWI4ODQzZGU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJGYWN0b3J5QmFja2VuZEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5jcHAKQEAgLTE1MCw3ICsxNTAsNyBAQCBQ
YXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZT4gSURCRmFjdG9yeUJhY2tlbmRJbXBsOjpvcGVuQmFj
a2luZ1N0b3JlKFBhc3NSZWZQdHI8UwogICAgIHJldHVybiAwOwogfQogCi12b2lkIElEQkZhY3Rv
cnlCYWNrZW5kSW1wbDo6b3Blbihjb25zdCBTdHJpbmcmIG5hbWUsIGludDY0X3QgdmVyc2lvbiwg
UGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgUGFzc1JlZlB0cjxTZWN1cml0eU9y
aWdpbj4gcHJwU2VjdXJpdHlPcmlnaW4sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBT
dHJpbmcmIGRhdGFEaXJlY3RvcnkpCit2b2lkIElEQkZhY3RvcnlCYWNrZW5kSW1wbDo6b3Blbihj
b25zdCBTdHJpbmcmIG5hbWUsIGludDY0X3QgdmVyc2lvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFj
a3M+IGNhbGxiYWNrcywgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gZGF0YWJhc2VD
YWxsYmFja3MsIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHBycFNlY3VyaXR5T3JpZ2luLCBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBkYXRhRGlyZWN0b3J5KQogewog
ICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW4gPSBwcnBTZWN1cml0eU9y
aWdpbjsKICAgICBjb25zdCBTdHJpbmcgdW5pcXVlSWRlbnRpZmllciA9IGNvbXB1dGVVbmlxdWVJ
ZGVudGlmaWVyKG5hbWUsIHNlY3VyaXR5T3JpZ2luLmdldCgpKTsKQEAgLTE3NSw5ICsxNzUsOSBA
QCB2b2lkIElEQkZhY3RvcnlCYWNrZW5kSW1wbDo6b3Blbihjb25zdCBTdHJpbmcmIG5hbWUsIGlu
dDY0X3QgdmVyc2lvbiwgUGFzc1JlZlB0cgogICAgICAgICBkYXRhYmFzZUJhY2tlbmQgPSBpdC0+
c2Vjb25kOwogCiAgICAgaWYgKHZlcnNpb24gPT0gSURCRGF0YWJhc2VNZXRhZGF0YTo6Tm9JbnRW
ZXJzaW9uKQotICAgICAgICBkYXRhYmFzZUJhY2tlbmQtPm9wZW5Db25uZWN0aW9uKGNhbGxiYWNr
cyk7CisgICAgICAgIGRhdGFiYXNlQmFja2VuZC0+b3BlbkNvbm5lY3Rpb24oY2FsbGJhY2tzLCBk
YXRhYmFzZUNhbGxiYWNrcyk7CiAgICAgZWxzZQotICAgICAgICBkYXRhYmFzZUJhY2tlbmQtPm9w
ZW5Db25uZWN0aW9uV2l0aFZlcnNpb24oY2FsbGJhY2tzLCB2ZXJzaW9uKTsKKyAgICAgICAgZGF0
YWJhc2VCYWNrZW5kLT5vcGVuQ29ubmVjdGlvbldpdGhWZXJzaW9uKGNhbGxiYWNrcywgZGF0YWJh
c2VDYWxsYmFja3MsIHZlcnNpb24pOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5QmFja2Vu
ZEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnlCYWNr
ZW5kSW1wbC5oCmluZGV4IGNhZDNiNWEyNGIyOTlhOTI5OWMyYWQyOTRlM2IyZWEwNGNmZDcyYTUu
LjNhZTA3MDMxMGRhZTg3NjQzNTk2Y2E5YjI5OTNjMzNhNDY3MGIxYjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnlCYWNrZW5kSW1w
bC5oCkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlSURC
QmFja2luZ1N0b3JlKGNvbnN0IFN0cmluZyYgZmlsZUlkZW50aWZpZXIpOwogCiAgICAgdmlydHVh
bCB2b2lkIGdldERhdGFiYXNlTmFtZXMoUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBQYXNzUmVm
UHRyPFNlY3VyaXR5T3JpZ2luPiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmlu
ZyYgZGF0YURpcik7Ci0gICAgdmlydHVhbCB2b2lkIG9wZW4oY29uc3QgU3RyaW5nJiBuYW1lLCBp
bnQ2NF90IHZlcnNpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgUGFzc1JlZlB0cjxTZWN1
cml0eU9yaWdpbj4sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIGRhdGFE
aXIpOworICAgIHZpcnR1YWwgdm9pZCBvcGVuKGNvbnN0IFN0cmluZyYgbmFtZSwgaW50NjRfdCB2
ZXJzaW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VD
YWxsYmFja3M+LCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiwgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIGNvbnN0IFN0cmluZyYgZGF0YURpcik7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZURh
dGFiYXNlKGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBQYXNz
UmVmUHRyPFNlY3VyaXR5T3JpZ2luPiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0
cmluZyYgZGF0YURpcik7CiAKIHByb3RlY3RlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5QmFja2VuZEludGVyZmFjZS5oCmlu
ZGV4IDRlYTVkOGEzMzBmZDA0MWFmNTFjYjJhOTU0NGVhNDhhY2Y2NjZmZWYuLjBhYTNiYTJiNzgw
ZDA3OTc2NjNmNjBmNTgyM2ExZGIyY2FjNjg4M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2Uu
aApAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+SURCRmFjdG9yeUJhY2tl
bmRJbnRlcmZhY2UoKSB7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBnZXREYXRhYmFzZU5hbWVzKFBh
c3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4sIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIGRhdGFEaXIpID0gMDsKLSAgICB2aXJ0
dWFsIHZvaWQgb3Blbihjb25zdCBTdHJpbmcmIG5hbWUsIGludDY0X3QgdmVyc2lvbiwgUGFzc1Jl
ZlB0cjxJREJDYWxsYmFja3M+LCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiwgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgZGF0YURpcikgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBvcGVuKGNvbnN0IFN0cmluZyYgbmFtZSwgaW50NjRfdCB2ZXJzaW9uLCBQYXNzUmVmUHRy
PElEQkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+LCBQYXNzUmVm
UHRyPFNlY3VyaXR5T3JpZ2luPiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmlu
ZyYgZGF0YURpcikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVEYXRhYmFzZShjb25zdCBT
dHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgUGFzc1JlZlB0cjxTZWN1cml0
eU9yaWdpbj4sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIGRhdGFEaXIp
ID0gMDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQk9wZW5EQlJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCT3BlbkRCUmVxdWVzdC5jcHAKaW5kZXggZTg5YTc0Y2ZkOWJmYjdmZjc2M2JhNmVlMjVmZDIy
YmNmMjQ2OTUwYS4uNTA1YWRkYzlhYzM5YmQ2Yzc2NWY5ZDVkM2Y1NTQ2NzMwZjI4MDgzYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT3BlbkRCUmVxdWVz
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT3BlbkRCUmVx
dWVzdC5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkK
IAogI2luY2x1ZGUgIklEQkRhdGFiYXNlLmgiCisjaW5jbHVkZSAiSURCRGF0YWJhc2VDYWxsYmFj
a3NJbXBsLmgiCiAjaW5jbHVkZSAiSURCUGVuZGluZ1RyYW5zYWN0aW9uTW9uaXRvci5oIgogI2lu
Y2x1ZGUgIklEQlRyYWNpbmcuaCIKICNpbmNsdWRlICJJREJVcGdyYWRlTmVlZGVkRXZlbnQuaCIK
QEAgLTM2LDE1ICszNywxNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NSZWZQdHI8
SURCT3BlbkRCUmVxdWVzdD4gSURCT3BlbkRCUmVxdWVzdDo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8SURCQW55PiBzb3VyY2UsIGludDY0X3QgdmVy
c2lvbikKK1Bhc3NSZWZQdHI8SURCT3BlbkRCUmVxdWVzdD4gSURCT3BlbkRCUmVxdWVzdDo6Y3Jl
YXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8SURCQW55PiBz
b3VyY2UsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3NJbXBsPiBjYWxsYmFja3MsIGlu
dDY0X3QgdmVyc2lvbikKIHsKLSAgICBSZWZQdHI8SURCT3BlbkRCUmVxdWVzdD4gcmVxdWVzdChh
ZG9wdFJlZihuZXcgSURCT3BlbkRCUmVxdWVzdChjb250ZXh0LCBzb3VyY2UsIHZlcnNpb24pKSk7
CisgICAgUmVmUHRyPElEQk9wZW5EQlJlcXVlc3Q+IHJlcXVlc3QoYWRvcHRSZWYobmV3IElEQk9w
ZW5EQlJlcXVlc3QoY29udGV4dCwgc291cmNlLCBjYWxsYmFja3MsIHZlcnNpb24pKSk7CiAgICAg
cmVxdWVzdC0+c3VzcGVuZElmTmVlZGVkKCk7CiAgICAgcmV0dXJuIHJlcXVlc3QucmVsZWFzZSgp
OwogfQogCi1JREJPcGVuREJSZXF1ZXN0OjpJREJPcGVuREJSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8SURCQW55PiBzb3VyY2UsIGludDY0X3QgdmVy
c2lvbikKK0lEQk9wZW5EQlJlcXVlc3Q6OklEQk9wZW5EQlJlcXVlc3QoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJREJBbnk+IHNvdXJjZSwgUGFzc1JlZlB0cjxJ
REJEYXRhYmFzZUNhbGxiYWNrc0ltcGw+IGNhbGxiYWNrcywgaW50NjRfdCB2ZXJzaW9uKQogICAg
IDogSURCUmVxdWVzdChjb250ZXh0LCBzb3VyY2UsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVy
ZmFjZTo6Tm9ybWFsVGFzaywgMCkKKyAgICAsIG1fZGF0YWJhc2VDYWxsYmFja3MoY2FsbGJhY2tz
KQogICAgICwgbV92ZXJzaW9uKHZlcnNpb24pCiB7CiAgICAgQVNTRVJUKCFtX3Jlc3VsdCk7CkBA
IC03Miw5ICs3NCwxMyBAQCB2b2lkIElEQk9wZW5EQlJlcXVlc3Q6Om9uVXBncmFkZU5lZWRlZChp
bnQ2NF90IG9sZFZlcnNpb24sIFBhc3NSZWZQdHI8SURCVHJhbnNhYwogICAgIGlmICghc2hvdWxk
RW5xdWV1ZUV2ZW50KCkpCiAgICAgICAgIHJldHVybjsKIAorICAgIEFTU0VSVChtX2RhdGFiYXNl
Q2FsbGJhY2tzKTsKKwogICAgIFJlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+IGRh
dGFiYXNlQmFja2VuZCA9IHBycERhdGFiYXNlQmFja2VuZDsKICAgICBSZWZQdHI8SURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW50ZXJmYWNlPiB0cmFuc2FjdGlvbkJhY2tlbmQgPSBwcnBUcmFuc2FjdGlv
bkJhY2tlbmQ7Ci0gICAgUmVmUHRyPElEQkRhdGFiYXNlPiBpZGJEYXRhYmFzZSA9IElEQkRhdGFi
YXNlOjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBkYXRhYmFzZUJhY2tlbmQpOwor
ICAgIFJlZlB0cjxJREJEYXRhYmFzZT4gaWRiRGF0YWJhc2UgPSBJREJEYXRhYmFzZTo6Y3JlYXRl
KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgZGF0YWJhc2VCYWNrZW5kLCBtX2RhdGFiYXNlQ2Fs
bGJhY2tzKTsKKyAgICBtX2RhdGFiYXNlQ2FsbGJhY2tzLT5jb25uZWN0KGlkYkRhdGFiYXNlLmdl
dCgpKTsKKyAgICBtX2RhdGFiYXNlQ2FsbGJhY2tzID0gMDsKIAogICAgIFJlZlB0cjxJREJUcmFu
c2FjdGlvbj4gZnJvbnRlbmQgPSBJREJUcmFuc2FjdGlvbjo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKSwgdHJhbnNhY3Rpb25CYWNrZW5kLCBJREJUcmFuc2FjdGlvbjo6VkVSU0lPTl9D
SEFOR0UsIGlkYkRhdGFiYXNlLmdldCgpLCB0aGlzKTsKICAgICB0cmFuc2FjdGlvbkJhY2tlbmQt
PnNldENhbGxiYWNrcyhmcm9udGVuZC5nZXQoKSk7CkBAIC05OCwxMSArMTA0LDIzIEBAIHZvaWQg
SURCT3BlbkRCUmVxdWVzdDo6b25TdWNjZXNzKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5k
SW50ZXJmYWNlPiBiYWNrZW5kCiAgICAgaWYgKG1fcmVzdWx0KSB7CiAgICAgICAgIGlkYkRhdGFi
YXNlID0gbV9yZXN1bHQtPmlkYkRhdGFiYXNlKCk7CiAgICAgICAgIEFTU0VSVChpZGJEYXRhYmFz
ZSk7CisgICAgICAgIEFTU0VSVCghbV9kYXRhYmFzZUNhbGxiYWNrcyk7CisKKyAgICAgICAgLy8g
SWYgY29ubmVjdGlvbiBjbG9zZWQgYmV0d2VlbiBvblVwZ3JhZGVOZWVkZWQgYW5kIG9uU3VjY2Vz
cywgYW4gZXJyb3IKKyAgICAgICAgLy8gc2hvdWxkIGJlIGZpcmVkIGluc3RlYWQgb2Ygc3VjY2Vz
cy4gVGhlIGJhY2stZW5kIG1heSBub3QgYmUgYXdhcmUKKyAgICAgICAgLy8gb2YgdGhlIGNsb3Np
bmcgc3RhdGUgaWYgdGhlIGV2ZW50cyBhcmUgYXN5bmNocm9ub3VzbHkgZGVsaXZlcmVkLgorLy8g
ICAgICAgIGlmIChpZGJEYXRhYmFzZS0+aXNDbG9zZVBlbmRpbmcoKSkgeworLy8gICAgICAgICAg
ICBtX3Jlc3VsdC5jbGVhcigpOworLy8gICAgICAgICAgICBvbkVycm9yKElEQkRhdGFiYXNlRXJy
b3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SURCX0FCT1JUX0VSUiwgIlRoZSBjb25u
ZWN0aW9uIHdhcyBjbG9zZWQuIikpOworLy8gICAgICAgICAgICByZXR1cm47CisvLyAgICAgICAg
fQogICAgIH0gZWxzZSB7Ci0gICAgICAgIGlkYkRhdGFiYXNlID0gSURCRGF0YWJhc2U6OmNyZWF0
ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGJhY2tlbmQpOworICAgICAgICBBU1NFUlQobV9k
YXRhYmFzZUNhbGxiYWNrcyk7CisgICAgICAgIGlkYkRhdGFiYXNlID0gSURCRGF0YWJhc2U6OmNy
ZWF0ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGJhY2tlbmQsIG1fZGF0YWJhc2VDYWxsYmFj
a3MpOworICAgICAgICBtX2RhdGFiYXNlQ2FsbGJhY2tzLT5jb25uZWN0KGlkYkRhdGFiYXNlLmdl
dCgpKTsKKyAgICAgICAgbV9kYXRhYmFzZUNhbGxiYWNrcyA9IDA7CiAgICAgICAgIG1fcmVzdWx0
ID0gSURCQW55OjpjcmVhdGUoaWRiRGF0YWJhc2UuZ2V0KCkpOwogICAgIH0KLSAgICBpZGJEYXRh
YmFzZS0+cmVnaXN0ZXJGcm9udGVuZENhbGxiYWNrcygpOwogICAgIGVucXVldWVFdmVudChFdmVu
dDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5zdWNjZXNzRXZlbnQsIGZhbHNlLCBmYWxzZSkpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPcGVuREJS
ZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPcGVuREJSZXF1
ZXN0LmgKaW5kZXggYzg3ZGI3ZWQxYmRkMmQ0MDUzZTc0YzEwMmEyZWM2ZDY5NTk3MmUzZi4uMWU4
NGI1NGM5ZGE1MDdhZjU1MTljODA4ODk4NDZkNDJlZmRlZDQ5ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT3BlbkRCUmVxdWVzdC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9wZW5EQlJlcXVlc3QuaApAQCAtMzIsOSAr
MzIsMTEgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBJREJEYXRhYmFzZUNhbGxi
YWNrc0ltcGw7CisKIGNsYXNzIElEQk9wZW5EQlJlcXVlc3QgOiBwdWJsaWMgSURCUmVxdWVzdCB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SURCT3BlbkRCUmVxdWVzdD4gY3JlYXRl
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQkFueT4gc291cmNlLCBpbnQ2
NF90IHZlcnNpb24pOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQk9wZW5EQlJlcXVlc3Q+IGNy
ZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJBbnk+IHNvdXJjZSwg
UGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGw+LCBpbnQ2NF90IHZlcnNpb24pOwog
ICAgIHZpcnR1YWwgfklEQk9wZW5EQlJlcXVlc3QoKTsKIAogICAgIHVzaW5nIElEQlJlcXVlc3Q6
Om9uU3VjY2VzczsKQEAgLTUzLDggKzU1LDkgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgYm9v
bCBzaG91bGRFbnF1ZXVlRXZlbnQoKSBjb25zdCBPVkVSUklERTsKIAogcHJpdmF0ZToKLSAgICBJ
REJPcGVuREJSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQkFu
eT4gc291cmNlLCBpbnQ2NF90IHZlcnNpb24pOworICAgIElEQk9wZW5EQlJlcXVlc3QoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCQW55PiBzb3VyY2UsIFBhc3NSZWZQdHI8
SURCRGF0YWJhc2VDYWxsYmFja3NJbXBsPiwgaW50NjRfdCB2ZXJzaW9uKTsKIAorICAgIFJlZlB0
cjxJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGw+IG1fZGF0YWJhc2VDYWxsYmFja3M7CiAgICAgaW50
NjRfdCBtX3ZlcnNpb247CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKaW5kZXggMjFlNWYzMjhlMzQ1NTM4OWNlMDg1NjYy
MDcwZWVlYTE0NjU1ZjYyOC4uZTFlMDVmMWYyODg2OGRiMmQyODlmMmVmMDVjZWI0MmY1MjUwZWNj
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNh
Y3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5z
YWN0aW9uLmNwcApAQCAtMjk0LDEyICsyOTQsMTAgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6b25B
Ym9ydCgpCiAgICAgfQogICAgIG1fb2JqZWN0U3RvcmVDbGVhbnVwTWFwLmNsZWFyKCk7CiAgICAg
Y2xvc2VPcGVuQ3Vyc29ycygpOwotICAgIG1fZGF0YWJhc2UtPnRyYW5zYWN0aW9uRmluaXNoZWQo
dGhpcyk7Ci0KLSAgICBpZiAobV9jb250ZXh0U3RvcHBlZCB8fCAhc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpKQotICAgICAgICByZXR1cm47CiAKKyAgICAvLyBFbnF1ZXVlIGV2ZW50cyBiZWZvcmUg
bm90aWZ5aW5nIGRhdGFiYXNlLCBhcyBkYXRhYmFzZSBtYXkgY2xvc2Ugd2hpY2ggZW5xdWV1ZXMg
bW9yZSBldmVudHMgYW5kIG9yZGVyIG1hdHRlcnMuCiAgICAgZW5xdWV1ZUV2ZW50KEV2ZW50Ojpj
cmVhdGUoZXZlbnROYW1lcygpLmFib3J0RXZlbnQsIHRydWUsIGZhbHNlKSk7CisgICAgbV9kYXRh
YmFzZS0+dHJhbnNhY3Rpb25GaW5pc2hlZCh0aGlzKTsKIH0KIAogdm9pZCBJREJUcmFuc2FjdGlv
bjo6b25Db21wbGV0ZSgpCkBAIC0zMDksMTIgKzMwNywxMCBAQCB2b2lkIElEQlRyYW5zYWN0aW9u
OjpvbkNvbXBsZXRlKCkKICAgICBtX3N0YXRlID0gRmluaXNoaW5nOwogICAgIG1fb2JqZWN0U3Rv
cmVDbGVhbnVwTWFwLmNsZWFyKCk7CiAgICAgY2xvc2VPcGVuQ3Vyc29ycygpOwotICAgIG1fZGF0
YWJhc2UtPnRyYW5zYWN0aW9uRmluaXNoZWQodGhpcyk7Ci0KLSAgICBpZiAobV9jb250ZXh0U3Rv
cHBlZCB8fCAhc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQotICAgICAgICByZXR1cm47CiAKKyAg
ICAvLyBFbnF1ZXVlIGV2ZW50cyBiZWZvcmUgbm90aWZ5aW5nIGRhdGFiYXNlLCBhcyBkYXRhYmFz
ZSBtYXkgY2xvc2Ugd2hpY2ggZW5xdWV1ZXMgbW9yZSBldmVudHMgYW5kIG9yZGVyIG1hdHRlcnMu
CiAgICAgZW5xdWV1ZUV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmNvbXBsZXRlRXZl
bnQsIGZhbHNlLCBmYWxzZSkpOworICAgIG1fZGF0YWJhc2UtPnRyYW5zYWN0aW9uRmluaXNoZWQo
dGhpcyk7CiB9CiAKIGJvb2wgSURCVHJhbnNhY3Rpb246Omhhc1BlbmRpbmdBY3Rpdml0eSgpIGNv
bnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhl
ZERCQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWRE
QkFnZW50LmNwcAppbmRleCA4Nzk2MWQ4MmMwOTBiZjIyZjU3N2MzZTRiZWU3ZTI1MWY3N2VmMWQ1
Li4yZWVmMmNmZDFlZDE5Y2FmZjAwMDFhNmNlYTBhY2RmZjFlYjk5YTkyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKQEAg
LTE4NiwzNSArMTg2LDM1IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fc2VjdXJpdHlPcmlnaW47
CiB9OwogCi1jbGFzcyBFeGVjdXRhYmxlV2l0aERhdGFiYXNlIDogcHVibGljIFJlZkNvdW50ZWQ8
RXhlY3V0YWJsZVdpdGhEYXRhYmFzZT4gewotcHVibGljOgotICAgIHZpcnR1YWwgfkV4ZWN1dGFi
bGVXaXRoRGF0YWJhc2UoKSB7IH07Ci0gICAgdm9pZCBzdGFydChJREJGYWN0b3J5QmFja2VuZElu
dGVyZmFjZSosIFNlY3VyaXR5T3JpZ2luKiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0
IFN0cmluZyYgZGF0YWJhc2VOYW1lKTsKLSAgICB2aXJ0dWFsIHZvaWQgZXhlY3V0ZShQYXNzUmVm
UHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4pID0gMDsKLX07Ci0KIGNsYXNzIERhdGFi
YXNlQ29ubmVjdGlvbiB7CiBwdWJsaWM6CiAgICAgRGF0YWJhc2VDb25uZWN0aW9uKCkKICAgICAg
ICAgOiBtX2lkYkRhdGFiYXNlQ2FsbGJhY2tzKEluc3BlY3RvcklEQkRhdGFiYXNlQ2FsbGJhY2tz
OjpjcmVhdGUoKSkgeyB9CiAKLSAgICB2b2lkIGNvbm5lY3QoUGFzc1JlZlB0cjxJREJEYXRhYmFz
ZUJhY2tlbmRJbnRlcmZhY2U+IGlkYkRhdGFiYXNlKQotICAgIHsKLSAgICAgICAgbV9pZGJEYXRh
YmFzZSA9IGlkYkRhdGFiYXNlOwotICAgICAgICBtX2lkYkRhdGFiYXNlLT5yZWdpc3RlckZyb250
ZW5kQ2FsbGJhY2tzKG1faWRiRGF0YWJhc2VDYWxsYmFja3MpOwotICAgIH0KLQogICAgIH5EYXRh
YmFzZUNvbm5lY3Rpb24oKQogICAgIHsKICAgICAgICAgaWYgKG1faWRiRGF0YWJhc2UpCiAgICAg
ICAgICAgICBtX2lkYkRhdGFiYXNlLT5jbG9zZShtX2lkYkRhdGFiYXNlQ2FsbGJhY2tzKTsKICAg
ICB9CiAKKyAgICB2b2lkIGNvbm5lY3QoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRl
cmZhY2U+IGRhdGFiYXNlKSB7IG1faWRiRGF0YWJhc2UgPSBkYXRhYmFzZTsgfQorICAgIFBhc3NS
ZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IGNhbGxiYWNrcygpIHsgcmV0dXJuIG1faWRiRGF0
YWJhc2VDYWxsYmFja3M7IH0KKwogcHJpdmF0ZToKICAgICBSZWZQdHI8SURCRGF0YWJhc2VCYWNr
ZW5kSW50ZXJmYWNlPiBtX2lkYkRhdGFiYXNlOwogICAgIFJlZlB0cjxJREJEYXRhYmFzZUNhbGxi
YWNrcz4gbV9pZGJEYXRhYmFzZUNhbGxiYWNrczsKIH07CiAKK2NsYXNzIEV4ZWN1dGFibGVXaXRo
RGF0YWJhc2UgOiBwdWJsaWMgUmVmQ291bnRlZDxFeGVjdXRhYmxlV2l0aERhdGFiYXNlPiB7Citw
dWJsaWM6CisgICAgdmlydHVhbCB+RXhlY3V0YWJsZVdpdGhEYXRhYmFzZSgpIHsgfTsKKyAgICB2
b2lkIHN0YXJ0KElEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlKiwgU2VjdXJpdHlPcmlnaW4qLCBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUpOworICAg
IHZvaWQgY29ubmVjdChQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4gZGF0
YWJhc2UpIHsgbV9jb25uZWN0aW9uLmNvbm5lY3QoZGF0YWJhc2UpOyB9CisgICAgdmlydHVhbCB2
b2lkIGV4ZWN1dGUoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+KSA9IDA7
Citwcml2YXRlOgorICAgIERhdGFiYXNlQ29ubmVjdGlvbiBtX2Nvbm5lY3Rpb247Cit9OworCiBj
bGFzcyBPcGVuRGF0YWJhc2VDYWxsYmFjayA6IHB1YmxpYyBJbnNwZWN0b3JJREJDYWxsYmFjayB7
CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8T3BlbkRhdGFiYXNlQ2FsbGJhY2s+IGNy
ZWF0ZShFeGVjdXRhYmxlV2l0aERhdGFiYXNlKiBleGVjdXRhYmxlV2l0aERhdGFiYXNlKQpAQCAt
MjI3LDYgKzIyNyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NS
ZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiBwcnBEYXRhYmFzZSkKICAgICB7CiAg
ICAgICAgIFJlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+IGlkYkRhdGFiYXNlID0g
cHJwRGF0YWJhc2U7CisgICAgICAgIG1fZXhlY3V0YWJsZVdpdGhEYXRhYmFzZS0+Y29ubmVjdChp
ZGJEYXRhYmFzZSk7CiAgICAgICAgIG1fZXhlY3V0YWJsZVdpdGhEYXRhYmFzZS0+ZXhlY3V0ZShp
ZGJEYXRhYmFzZSk7CiAgICAgfQogCkBAIC0yMzksNyArMjQwLDcgQEAgcHJpdmF0ZToKIHZvaWQg
RXhlY3V0YWJsZVdpdGhEYXRhYmFzZTo6c3RhcnQoSURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2Uq
IGlkYkZhY3RvcnksIFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0eU9yaWdpbiwgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUpCiB7CiAgICAg
UmVmUHRyPE9wZW5EYXRhYmFzZUNhbGxiYWNrPiBjYWxsYmFjayA9IE9wZW5EYXRhYmFzZUNhbGxi
YWNrOjpjcmVhdGUodGhpcyk7Ci0gICAgaWRiRmFjdG9yeS0+b3BlbihkYXRhYmFzZU5hbWUsIElE
QkRhdGFiYXNlTWV0YWRhdGE6Ok5vSW50VmVyc2lvbiwgY2FsbGJhY2suZ2V0KCksIHNlY3VyaXR5
T3JpZ2luLCBjb250ZXh0LCBTdHJpbmcoKSk7CisgICAgaWRiRmFjdG9yeS0+b3BlbihkYXRhYmFz
ZU5hbWUsIElEQkRhdGFiYXNlTWV0YWRhdGE6Ok5vSW50VmVyc2lvbiwgY2FsbGJhY2ssIG1fY29u
bmVjdGlvbi5jYWxsYmFja3MoKSwgc2VjdXJpdHlPcmlnaW4sIGNvbnRleHQsIFN0cmluZygpKTsK
IH0KIAogc3RhdGljIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiB0
cmFuc2FjdGlvbkZvckRhdGFiYXNlKElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZSogaWRiRGF0
YWJhc2UsIGNvbnN0IFN0cmluZyYgb2JqZWN0U3RvcmVOYW1lKQpAQCAtMzEwLDcgKzMxMSw2IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZXhlY3V0ZShQYXNzUmVmUHRyPElEQkRhdGFiYXNl
QmFja2VuZEludGVyZmFjZT4gcHJwRGF0YWJhc2UpCiAgICAgewogICAgICAgICBSZWZQdHI8SURC
RGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiBpZGJEYXRhYmFzZSA9IHBycERhdGFiYXNlOwotICAg
ICAgICBtX2Nvbm5lY3Rpb24uY29ubmVjdChpZGJEYXRhYmFzZSk7CiAgICAgICAgIGlmICghbV9m
cm9udGVuZFByb3ZpZGVyLT5mcm9udGVuZCgpKQogICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0z
NTUsNyArMzU1LDYgQEAgcHJpdmF0ZToKICAgICAgICAgLCBtX3JlcXVlc3RJZChyZXF1ZXN0SWQp
IHsgfQogICAgIFJlZlB0cjxJbnNwZWN0b3JJbmRleGVkREJBZ2VudDo6RnJvbnRlbmRQcm92aWRl
cj4gbV9mcm9udGVuZFByb3ZpZGVyOwogICAgIGludCBtX3JlcXVlc3RJZDsKLSAgICBEYXRhYmFz
ZUNvbm5lY3Rpb24gbV9jb25uZWN0aW9uOwogfTsKIAogc3RhdGljIFBhc3NSZWZQdHI8SURCS2V5
PiBpZGJLZXlGcm9tSW5zcGVjdG9yT2JqZWN0KEluc3BlY3Rvck9iamVjdCoga2V5KQpAQCAtNTg3
LDcgKzU4Niw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZXhlY3V0ZShQYXNzUmVmUHRy
PElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4gcHJwRGF0YWJhc2UpCiAgICAgewogICAgICAg
ICBSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiBpZGJEYXRhYmFzZSA9IHBycERh
dGFiYXNlOwotICAgICAgICBtX2Nvbm5lY3Rpb24uY29ubmVjdChpZGJEYXRhYmFzZSk7CiAgICAg
ICAgIGlmICghbV9mcm9udGVuZFByb3ZpZGVyLT5mcm9udGVuZCgpKQogICAgICAgICAgICAgcmV0
dXJuOwogCkBAIC02MzMsNyArNjMxLDYgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8SURCS2V5UmFu
Z2U+IG1faWRiS2V5UmFuZ2U7CiAgICAgaW50IG1fc2tpcENvdW50OwogICAgIHVuc2lnbmVkIG1f
cGFnZVNpemU7Ci0gICAgRGF0YWJhc2VDb25uZWN0aW9uIG1fY29ubmVjdGlvbjsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJJREJEYXRhYmFzZS5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCRGF0
YWJhc2UuaAppbmRleCBhOGIwMzVjNzI3Zjg4ZGRiZjBjZTE3MGVhZDc0MTg1YzY4YmUyYWQ2Li44
M2I5YTQyNWY4NDdmYTlkODgxNzM3YzMwOWVhOGEyODJhYjRlZjI5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJEYXRhYmFzZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQkRhdGFiYXNlLmgKQEAgLTY2LDggKzY2LDYgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBjbG9zZSgpIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOyB9CiAgICAgdmlydHVhbCB2b2lkIGZvcmNlQ2xvc2UoKSB7IFdFQktJVF9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsgfQogCi0gICAgdmlydHVhbCB2b2lkIG9wZW4oV2ViSURCRGF0YWJhc2VD
YWxsYmFja3MqKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQotCiBwcm90ZWN0ZWQ6
CiAgICAgV2ViSURCRGF0YWJhc2UoKSB7IH0KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJJREJGYWN0b3J5LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJJREJGYWN0b3J5LmgKaW5kZXggZjEwYThlYjlhZTBmNDk3OTQxOGExZmIzZjgz
ZWE2NDc5ZjYwMjdhNy4uNTE0NTdjMWNhMDZjMTY1Y2NiMjMxMjc5M2M0OWUwODc5Y2I3ZDUyOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCRmFjdG9yeS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQkZhY3RvcnkuaApAQCAt
NDEsNiArNDEsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViRnJhbWU7CiBjbGFz
cyBXZWJJREJEYXRhYmFzZTsKK2NsYXNzIFdlYklEQkRhdGFiYXNlQ2FsbGJhY2tzOwogY2xhc3Mg
V2ViU2VjdXJpdHlPcmlnaW47CiAKIC8vIFRoZSBlbnRyeSBwb2ludCBpbnRvIHRoZSBJbmRleGVk
RGF0YWJhc2UgQVBJLiAgVGhlc2UgY2xhc3NlcyBtYXRjaCB0aGVpciBGb28gYW5kCkBAIC01Niwx
MyArNTcsMTMgQEAgcHVibGljOgogCiAgICAgLy8gRklYTUU6IERlbGV0ZSB0aGlzIG1ldGhvZCB3
aGVuIGRlcml2ZWQgY2xhc3NlcyBpbiBjaHJvbWl1bSBoYXZlCiAgICAgLy8gaW1wbGVtZW50ZWQg
dGhlIG90aGVyIG9wZW4gbWV0aG9kLgotICAgIHZpcnR1YWwgdm9pZCBvcGVuKGNvbnN0IFdlYlN0
cmluZyYgbmFtZSwgV2ViSURCQ2FsbGJhY2tzKiBjYWxsYmFja3MsIGNvbnN0IFdlYlNlY3VyaXR5
T3JpZ2luJiBvcmlnaW4sIFdlYkZyYW1lKiBmcmFtZSwgY29uc3QgV2ViU3RyaW5nJiBkYXRhRGly
KQorICAgIHZpcnR1YWwgdm9pZCBvcGVuKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgV2ViSURCQ2Fs
bGJhY2tzKiBjYWxsYmFja3MsIFdlYklEQkRhdGFiYXNlQ2FsbGJhY2tzKiBkYXRhYmFzZUNhbGxi
YWNrcywgY29uc3QgV2ViU2VjdXJpdHlPcmlnaW4mIG9yaWdpbiwgV2ViRnJhbWUqIGZyYW1lLCBj
b25zdCBXZWJTdHJpbmcmIGRhdGFEaXIpCiAgICAgewotICAgICAgICBvcGVuKG5hbWUsIFdlYklE
Qk1ldGFkYXRhOjpOb0ludFZlcnNpb24sIGNhbGxiYWNrcywgb3JpZ2luLCBmcmFtZSwgZGF0YURp
cik7CisgICAgICAgIG9wZW4obmFtZSwgV2ViSURCTWV0YWRhdGE6Ok5vSW50VmVyc2lvbiwgY2Fs
bGJhY2tzLCBkYXRhYmFzZUNhbGxiYWNrcywgb3JpZ2luLCBmcmFtZSwgZGF0YURpcik7CiAgICAg
fQogCiAgICAgLy8gVGhlIFdlYktpdCBpbXBsZW1lbnRhdGlvbiBvZiBvcGVuIGlnbm9yZXMgdGhl
IFdlYkZyYW1lKiBwYXJhbWV0ZXIuCi0gICAgdmlydHVhbCB2b2lkIG9wZW4oY29uc3QgV2ViU3Ry
aW5nJiBuYW1lLCBsb25nIGxvbmcgdmVyc2lvbiwgV2ViSURCQ2FsbGJhY2tzKiBjYWxsYmFja3Ms
IGNvbnN0IFdlYlNlY3VyaXR5T3JpZ2luJiBvcmlnaW4sIFdlYkZyYW1lKiBmcmFtZSwgY29uc3Qg
V2ViU3RyaW5nJiBkYXRhRGlyKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAg
IHZpcnR1YWwgdm9pZCBvcGVuKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgbG9uZyBsb25nIHZlcnNp
b24sIFdlYklEQkNhbGxiYWNrcyogY2FsbGJhY2tzLCBXZWJJREJEYXRhYmFzZUNhbGxiYWNrcyog
ZGF0YWJhc2VDYWxsYmFja3MsIGNvbnN0IFdlYlNlY3VyaXR5T3JpZ2luJiBvcmlnaW4sIFdlYkZy
YW1lKiBmcmFtZSwgY29uc3QgV2ViU3RyaW5nJiBkYXRhRGlyKSB7IFdFQktJVF9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsgfQogCiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZURhdGFiYXNlKGNvbnN0IFdl
YlN0cmluZyYgbmFtZSwgV2ViSURCQ2FsbGJhY2tzKiwgY29uc3QgV2ViU2VjdXJpdHlPcmlnaW4m
LCBXZWJGcmFtZSosIGNvbnN0IFdlYlN0cmluZyYgZGF0YURpcikgeyBXRUJLSVRfQVNTRVJUX05P
VF9SRUFDSEVEKCk7IH0KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9JREJDYWxsYmFja3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJD
YWxsYmFja3NQcm94eS5jcHAKaW5kZXggMTkzYmYyYjVmNmM2NjZjN2JkNTA2MmFkNDQ3NDQxNWJm
YjMwNDI5Ny4uYWY0OTg0YTc3YzRiODVlMjZlMjllZjg4YThkMjgzZGU0NmFjYzM4YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ2FsbGJhY2tzUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkNhbGxiYWNrc1Byb3h5LmNwcApAQCAt
MzQsMTMgKzM0LDE1IEBACiAjaW5jbHVkZSAiSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZS5oIgog
I2luY2x1ZGUgIklEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZS5oIgogI2luY2x1ZGUgIklEQkRh
dGFiYXNlQmFja2VuZFByb3h5LmgiCisjaW5jbHVkZSAiSURCRGF0YWJhc2VDYWxsYmFja3NQcm94
eS5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNlRXJyb3IuaCIKICNpbmNsdWRlICJJREJPYmplY3RT
dG9yZUJhY2tlbmRJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJJREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bnRlcmZhY2UuaCIKICNpbmNsdWRlICJXZWJJREJDYWxsYmFja3MuaCIKICNpbmNsdWRlICJXZWJJ
REJDdXJzb3JJbXBsLmgiCi0jaW5jbHVkZSAiV2ViSURCRGF0YWJhc2VJbXBsLmgiCisjaW5jbHVk
ZSAiV2ViSURCRGF0YWJhc2VDYWxsYmFja3MuaCIKICNpbmNsdWRlICJXZWJJREJEYXRhYmFzZUVy
cm9yLmgiCisjaW5jbHVkZSAiV2ViSURCRGF0YWJhc2VJbXBsLmgiCiAjaW5jbHVkZSAiV2ViSURC
S2V5LmgiCiAjaW5jbHVkZSAiV2ViSURCVHJhbnNhY3Rpb25JbXBsLmgiCiAjaW5jbHVkZSAicGxh
dGZvcm0vV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCkBAIC03NSw3ICs3Nyw4IEBAIHZvaWQg
SURCQ2FsbGJhY2tzUHJveHk6Om9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJ
bnRlcmZhY2U+IGlkYkN1cnNvCiAKIHZvaWQgSURCQ2FsbGJhY2tzUHJveHk6Om9uU3VjY2VzcyhQ
YXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4gYmFja2VuZCkKIHsKLSAgICBt
X2NhbGxiYWNrcy0+b25TdWNjZXNzKG5ldyBXZWJJREJEYXRhYmFzZUltcGwoYmFja2VuZCkpOwor
ICAgIEFTU0VSVChtX2RhdGFiYXNlQ2FsbGJhY2tzLmdldCgpKTsKKyAgICBtX2NhbGxiYWNrcy0+
b25TdWNjZXNzKG5ldyBXZWJJREJEYXRhYmFzZUltcGwoYmFja2VuZCwgbV9kYXRhYmFzZUNhbGxi
YWNrcy5yZWxlYXNlKCkpKTsKIH0KIAogdm9pZCBJREJDYWxsYmFja3NQcm94eTo6b25TdWNjZXNz
KFBhc3NSZWZQdHI8SURCS2V5PiBpZGJLZXkpCkBAIC0xMzcsOSArMTQwLDE3IEBAIHZvaWQgSURC
Q2FsbGJhY2tzUHJveHk6Om9uQmxvY2tlZChpbnQ2NF90IGV4aXN0aW5nVmVyc2lvbikKIAogdm9p
ZCBJREJDYWxsYmFja3NQcm94eTo6b25VcGdyYWRlTmVlZGVkKGludDY0X3Qgb2xkVmVyc2lvbiwg
UGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IHRyYW5zYWN0aW9uLCBQ
YXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4gZGF0YWJhc2UpCiB7Ci0gICAg
bV9jYWxsYmFja3MtPm9uVXBncmFkZU5lZWRlZChvbGRWZXJzaW9uLCBuZXcgV2ViSURCVHJhbnNh
Y3Rpb25JbXBsKHRyYW5zYWN0aW9uKSwgbmV3IFdlYklEQkRhdGFiYXNlSW1wbChkYXRhYmFzZSkp
OworICAgIEFTU0VSVChtX2RhdGFiYXNlQ2FsbGJhY2tzKTsKKyAgICBtX2NhbGxiYWNrcy0+b25V
cGdyYWRlTmVlZGVkKG9sZFZlcnNpb24sIG5ldyBXZWJJREJUcmFuc2FjdGlvbkltcGwodHJhbnNh
Y3Rpb24pLCBuZXcgV2ViSURCRGF0YWJhc2VJbXBsKGRhdGFiYXNlLCBtX2RhdGFiYXNlQ2FsbGJh
Y2tzKSk7Cit9CisKK3ZvaWQgSURCQ2FsbGJhY2tzUHJveHk6OnNldERhdGFiYXNlQ2FsbGJhY2tz
KFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3NQcm94eT4gZGF0YWJhc2VDYWxsYmFja3Mp
Cit7CisgICAgQVNTRVJUKCFtX2RhdGFiYXNlQ2FsbGJhY2tzKTsKKyAgICBtX2RhdGFiYXNlQ2Fs
bGJhY2tzID0gZGF0YWJhc2VDYWxsYmFja3M7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAog
CisKICNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkNhbGxiYWNrc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9JREJDYWxsYmFja3NQcm94eS5oCmluZGV4IDgyNTc1OGFhZGU5M2Y0MWYy
NjI5MzAzNjhiZDk2NjYwZmU1MmE1MjcuLmY2MTNhODVjMmU0ZWQxNmNiODg3ZjY4YTA1MDMxODQ5
Y2IxY2VmMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkNhbGxi
YWNrc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ2FsbGJhY2tz
UHJveHkuaApAQCAtMzksNiArMzksNyBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdl
YklEQkNhbGxiYWNrczsKK2NsYXNzIElEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHk7CiAKIGNsYXNz
IElEQkNhbGxiYWNrc1Byb3h5IDogcHVibGljIFdlYkNvcmU6OklEQkNhbGxiYWNrcyB7CiBwdWJs
aWM6CkBAIC01OSwxMCArNjAsMTMgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBvbkJsb2Nr
ZWQoaW50NjRfdCBleGlzdGluZ1ZlcnNpb24pOwogICAgIHZpcnR1YWwgdm9pZCBvblVwZ3JhZGVO
ZWVkZWQoaW50NjRfdCBvbGRWZXJzaW9uLCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQlRyYW5zYWN0
aW9uQmFja2VuZEludGVyZmFjZT4sIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCRGF0YWJhc2VCYWNr
ZW5kSW50ZXJmYWNlPik7CiAKKyAgICB2b2lkIHNldERhdGFiYXNlQ2FsbGJhY2tzKFBhc3NSZWZQ
dHI8SURCRGF0YWJhc2VDYWxsYmFja3NQcm94eT4pOworCiBwcml2YXRlOgogICAgIElEQkNhbGxi
YWNrc1Byb3h5KFBhc3NPd25QdHI8V2ViSURCQ2FsbGJhY2tzPik7CiAKICAgICBPd25QdHI8V2Vi
SURCQ2FsbGJhY2tzPiBtX2NhbGxiYWNrczsKKyAgICBSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFj
a3NQcm94eT4gbV9kYXRhYmFzZUNhbGxiYWNrczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VCYWNr
ZW5kUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VCYWNr
ZW5kUHJveHkuY3BwCmluZGV4IDU2YWZlNWZiNWQyYjYyZmE0NDQ5OTU0NDY5MzBhMDFkMGJjOTc3
OTguLjUwMWNlNjFmYjU5NTYyNjZiMGMzYmYxYjRjMDJhZWY2Y2RhMDA4MDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94eS5j
cHAKQEAgLTEwNywxMSArMTA3LDYgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRQcm94eTo6Y2xv
c2UoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4pCiAgICAgbV93ZWJJREJEYXRhYmFz
ZS0+Y2xvc2UoKTsKIH0KIAotdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRQcm94eTo6cmVnaXN0ZXJG
cm9udGVuZENhbGxiYWNrcyhQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBkYXRhYmFz
ZUNhbGxiYWNrcykKLXsKLSAgICBtX3dlYklEQkRhdGFiYXNlLT5vcGVuKG5ldyBXZWJJREJEYXRh
YmFzZUNhbGxiYWNrc0ltcGwoZGF0YWJhc2VDYWxsYmFja3MpKTsKLX0KLQogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5Lmgg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94eS5oCmlu
ZGV4IDJhOTM2MDBjNmYyZmEwYzI2N2MyZGEwNmZiOGI5MjE2ZmQ4MjhlMzYuLjc5NTYxMGFhNjU3
MmRjYTQ2Y2MyNjRkYjViMDhiZDE3OGMxYzU2NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmgKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuaApAQCAtNTAsOCArNTAsNiBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQlRyYW5zYWN0aW9u
QmFja2VuZEludGVyZmFjZT4gdHJhbnNhY3Rpb24oV2ViQ29yZTo6RE9NU3RyaW5nTGlzdCogc3Rv
cmVOYW1lcywgdW5zaWduZWQgc2hvcnQgbW9kZSwgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSYpOwog
ICAgIHZpcnR1YWwgdm9pZCBjbG9zZShQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkRhdGFiYXNlQ2Fs
bGJhY2tzPik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJGcm9udGVuZENhbGxiYWNrcyhQ
YXNzUmVmUHRyPFdlYkNvcmU6OklEQkRhdGFiYXNlQ2FsbGJhY2tzPik7Ci0KIHByaXZhdGU6CiAg
ICAgSURCRGF0YWJhc2VCYWNrZW5kUHJveHkoUGFzc093blB0cjxXZWJJREJEYXRhYmFzZT4pOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJGYWN0b3J5QmFja2Vu
ZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkZhY3RvcnlCYWNrZW5k
UHJveHkuY3BwCmluZGV4IGJhYmNiYWUxODQwOWM1ZGQyNTkyYzBkZmQ5MjMzMjZmYmY2MGU5NGEu
LjI4OTk1ZWM2NjBlMzFmZjdjZWZhZDkzZWIzYmRhMjM0MWFhMWVmZjggMTAwNzU1Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkZhY3RvcnlCYWNrZW5kUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkZhY3RvcnlCYWNrZW5kUHJveHkuY3BwCkBA
IC0zNCwxMiArMzQsMTQgQEAKICNpbmNsdWRlICJDcm9zc1RocmVhZFRhc2suaCIKICNpbmNsdWRl
ICJET01TdHJpbmdMaXN0LmgiCiAjaW5jbHVkZSAiSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuaCIK
KyNpbmNsdWRlICJJREJEYXRhYmFzZUNhbGxiYWNrcy5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNl
RXJyb3IuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSAi
U2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJXZWJGcmFtZUltcGwuaCIKICNpbmNsdWRlICJX
ZWJJREJDYWxsYmFja3NJbXBsLmgiCiAjaW5jbHVkZSAiV2ViSURCRGF0YWJhc2UuaCIKKyNpbmNs
dWRlICJXZWJJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwuaCIKICNpbmNsdWRlICJXZWJJREJEYXRh
YmFzZUVycm9yLmgiCiAjaW5jbHVkZSAiV2ViSURCRmFjdG9yeS5oIgogI2luY2x1ZGUgIldlYktp
dC5oIgpAQCAtMjAzLDE1ICsyMDUsMTYgQEAgdm9pZCBJREJGYWN0b3J5QmFja2VuZFByb3h5Ojpn
ZXREYXRhYmFzZU5hbWVzKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmEKIH0KIAog
Ci12b2lkIElEQkZhY3RvcnlCYWNrZW5kUHJveHk6Om9wZW4oY29uc3QgU3RyaW5nJiBuYW1lLCBp
bnQ2NF90IHZlcnNpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmFja3MsIFBh
c3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luLCBTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIGRhdGFEaXIpCit2b2lkIElEQkZhY3RvcnlC
YWNrZW5kUHJveHk6Om9wZW4oY29uc3QgU3RyaW5nJiBuYW1lLCBpbnQ2NF90IHZlcnNpb24sIFBh
c3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmFja3MsIFBhc3NSZWZQdHI8SURCRGF0YWJh
c2VDYWxsYmFja3M+IHBycERhdGFiYXNlQ2FsbGJhY2tzLCBQYXNzUmVmUHRyPFNlY3VyaXR5T3Jp
Z2luPiBzZWN1cml0eU9yaWdpbiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29u
c3QgU3RyaW5nJiBkYXRhRGlyKQogewogICAgIFJlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNr
cyhwcnBDYWxsYmFja3MpOworICAgIFJlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gZGF0YWJh
c2VDYWxsYmFja3MocHJwRGF0YWJhc2VDYWxsYmFja3MpOwogICAgIFdlYlNlY3VyaXR5T3JpZ2lu
IG9yaWdpbihzZWN1cml0eU9yaWdpbik7CiAgICAgaWYgKCFhbGxvd0luZGV4ZWREQihjb250ZXh0
LCBuYW1lLCBvcmlnaW4sIGNhbGxiYWNrcykpCiAgICAgICAgIHJldHVybjsKIAogICAgIFdlYkZy
YW1lSW1wbCogd2ViRnJhbWUgPSBnZXRXZWJGcmFtZShjb250ZXh0KTsKLSAgICBtX3dlYklEQkZh
Y3RvcnktPm9wZW4obmFtZSwgdmVyc2lvbiwgbmV3IFdlYklEQkNhbGxiYWNrc0ltcGwoY2FsbGJh
Y2tzKSwgb3JpZ2luLCB3ZWJGcmFtZSwgZGF0YURpcik7CisgICAgbV93ZWJJREJGYWN0b3J5LT5v
cGVuKG5hbWUsIHZlcnNpb24sIG5ldyBXZWJJREJDYWxsYmFja3NJbXBsKGNhbGxiYWNrcyksIG5l
dyBXZWJJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwoZGF0YWJhc2VDYWxsYmFja3MpLCBvcmlnaW4s
IHdlYkZyYW1lLCBkYXRhRGlyKTsKIH0KIAogdm9pZCBJREJGYWN0b3J5QmFja2VuZFByb3h5Ojpk
ZWxldGVEYXRhYmFzZShjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tz
PiBwcnBDYWxsYmFja3MsIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2lu
LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIGRhdGFEaXIp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJGYWN0b3J5QmFja2Vu
ZFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJGYWN0b3J5QmFja2VuZFBy
b3h5LmgKaW5kZXggYzBkZTkxMGE5MmNkZWE5MWEzZDNhMWM1MzBhMjgwN2M1YWJmYWE3YS4uODgz
ODBkN2E0MmVkMTE3MzAyOTM1YmViYmNhY2NlYjZmNmU5N2Q3OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRmFjdG9yeUJhY2tlbmRQcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkZhY3RvcnlCYWNrZW5kUHJveHkuaApAQCAtNDksNyAr
NDksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+SURCRmFjdG9yeUJhY2tlbmRQcm94eSgpOwog
CiAgICAgdmlydHVhbCB2b2lkIGdldERhdGFiYXNlTmFtZXMoUGFzc1JlZlB0cjxXZWJDb3JlOjpJ
REJDYWxsYmFja3M+LCBQYXNzUmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiwgV2ViQ29y
ZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgZGF0YURpcik7Ci0gICAg
dmlydHVhbCB2b2lkIG9wZW4oY29uc3QgU3RyaW5nJiBuYW1lLCBpbnQ2NF90IHZlcnNpb24sIFBh
c3NSZWZQdHI8V2ViQ29yZTo6SURCQ2FsbGJhY2tzPiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbj4sIFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJp
bmcmIGRhdGFEaXIpOworICAgIHZpcnR1YWwgdm9pZCBvcGVuKGNvbnN0IFN0cmluZyYgbmFtZSwg
aW50NjRfdCB2ZXJzaW9uLCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkNhbGxiYWNrcz4sIFBhc3NS
ZWZQdHI8V2ViQ29yZTo6SURCRGF0YWJhc2VDYWxsYmFja3M+LCBQYXNzUmVmUHRyPFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luPiwgV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0
IFN0cmluZyYgZGF0YURpcik7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZURhdGFiYXNlKGNvbnN0
IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJDYWxsYmFja3M+LCBQYXNzUmVm
UHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiwgV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIGNvbnN0IFN0cmluZyYgZGF0YURpcik7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwuY3BwIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmNwcAppbmRleCAwZDE0MmJj
MDI5M2FhMTNmNWIxOTJjM2ZkYmM1NjMzN2NkYWM3NTdkLi41Mjg3OWE5YTdmM2I3MzgwYWJhMzA2
ZWQ2NzNkMGM0MmExMjhmYzQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJJREJEYXRhYmFzZUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYklEQkRhdGFiYXNlSW1wbC5jcHAKQEAgLTQ1LDggKzQ1LDkgQEAgdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1XZWJJREJEYXRhYmFzZUltcGw6Oldl
YklEQkRhdGFiYXNlSW1wbChQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4g
ZGF0YWJhc2VCYWNrZW5kKQorV2ViSURCRGF0YWJhc2VJbXBsOjpXZWJJREJEYXRhYmFzZUltcGwo
UGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+IGRhdGFiYXNlQmFja2VuZCwg
V1RGOjpQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHk+IGRhdGFiYXNlQ2FsbGJh
Y2tzKQogICAgIDogbV9kYXRhYmFzZUJhY2tlbmQoZGF0YWJhc2VCYWNrZW5kKQorICAgICwgbV9k
YXRhYmFzZUNhbGxiYWNrcyhkYXRhYmFzZUNhbGxiYWNrcykKICAgICAsIG1fY2xvc2VQZW5kaW5n
KGZhbHNlKQogewogfQpAQCAtOTMsNyArOTQsNyBAQCBXZWJJREJUcmFuc2FjdGlvbiogV2ViSURC
RGF0YWJhc2VJbXBsOjp0cmFuc2FjdGlvbihjb25zdCBXZWJET01TdHJpbmdMaXN0JiBuYW1lcwog
CiB2b2lkIFdlYklEQkRhdGFiYXNlSW1wbDo6Y2xvc2UoKQogewotICAgIC8vIFVzZSB0aGUgY2Fs
bGJhY2tzIHRoYXQgOjpvcGVuIGdhdmUgdXMgc28gdGhhdCB0aGUgYmFja2VuZCBpbgorICAgIC8v
IFVzZSB0aGUgY2FsbGJhY2tzIHBhc3NlZCBpbiB0byB0aGUgY29uc3RydWN0b3Igc28gdGhhdCB0
aGUgYmFja2VuZCBpbgogICAgIC8vIG11bHRpLXByb2Nlc3MgY2hyb21pdW0ga25vd3Mgd2hpY2gg
ZGF0YWJhc2UgY29ubmVjdGlvbiBpcyBjbG9zaW5nLgogICAgIGlmICghbV9kYXRhYmFzZUNhbGxi
YWNrcykgewogICAgICAgICBtX2Nsb3NlUGVuZGluZyA9IHRydWU7CkBAIC0xMTMsMTUgKzExNCw2
IEBAIHZvaWQgV2ViSURCRGF0YWJhc2VJbXBsOjpmb3JjZUNsb3NlKCkKICAgICBjYWxsYmFja3Mt
Pm9uRm9yY2VkQ2xvc2UoKTsKIH0KIAotdm9pZCBXZWJJREJEYXRhYmFzZUltcGw6Om9wZW4oV2Vi
SURCRGF0YWJhc2VDYWxsYmFja3MqIGNhbGxiYWNrcykKLXsKLSAgICBBU1NFUlQoIW1fZGF0YWJh
c2VDYWxsYmFja3MpOwotICAgIG1fZGF0YWJhc2VDYWxsYmFja3MgPSBJREJEYXRhYmFzZUNhbGxi
YWNrc1Byb3h5OjpjcmVhdGUoYWRvcHRQdHIoY2FsbGJhY2tzKSk7Ci0gICAgbV9kYXRhYmFzZUJh
Y2tlbmQtPnJlZ2lzdGVyRnJvbnRlbmRDYWxsYmFja3MobV9kYXRhYmFzZUNhbGxiYWNrcyk7Ci0g
ICAgaWYgKG1fY2xvc2VQZW5kaW5nKQotICAgICAgICBjbG9zZSgpOwotfQotCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmggYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwuaAppbmRleCA0YTgy
ODRjZTU5YWQxZTYzNmNjNGZiYzk3MjdiY2I3N2E0MjJjMzBlLi45Y2QxY2FmNTkyMDY5YjU0ZGZi
OTZjYzg3ODQ0YzM3OTZkYjNhMzA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJJREJEYXRhYmFzZUltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJJREJEYXRhYmFzZUltcGwuaApAQCAtNDcsNyArNDcsNyBAQCBjbGFzcyBXZWJJREJUcmFu
c2FjdGlvbjsKIC8vIFNlZSBjb21tZW50IGluIFdlYklEQkZhY3RvcnkgZm9yIGEgaGlnaCBsZXZl
bCBvdmVydmlldyB0aGVzZSBjbGFzc2VzLgogY2xhc3MgV2ViSURCRGF0YWJhc2VJbXBsIDogcHVi
bGljIFdlYklEQkRhdGFiYXNlIHsKIHB1YmxpYzoKLSAgICBXZWJJREJEYXRhYmFzZUltcGwoV1RG
OjpQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4pOworICAg
IFdlYklEQkRhdGFiYXNlSW1wbChXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6SURCRGF0YWJhc2VC
YWNrZW5kSW50ZXJmYWNlPiwgV1RGOjpQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzUHJv
eHk+KTsKICAgICB2aXJ0dWFsIH5XZWJJREJEYXRhYmFzZUltcGwoKTsKIAogICAgIHZpcnR1YWwg
V2ViSURCTWV0YWRhdGEgbWV0YWRhdGEoKSBjb25zdDsKQEAgLTU5LDkgKzU5LDYgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBmb3JjZUNsb3NlKCk7CiAgICAgdmlydHVhbCB2b2lkIGNsb3Nl
KCk7CiAKLSAgICAvLyBGSVhNRTogUmVuYW1lICJvcGVuIiB0byByZWdpc3RlckZyb250ZW5kQ2Fs
bGJhY2tzLgotICAgIHZpcnR1YWwgdm9pZCBvcGVuKFdlYklEQkRhdGFiYXNlQ2FsbGJhY2tzKik7
Ci0KIHByaXZhdGU6CiAgICAgV1RGOjpSZWZQdHI8V2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5k
SW50ZXJmYWNlPiBtX2RhdGFiYXNlQmFja2VuZDsKICAgICBXVEY6OlJlZlB0cjxJREJEYXRhYmFz
ZUNhbGxiYWNrc1Byb3h5PiBtX2RhdGFiYXNlQ2FsbGJhY2tzOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRmFjdG9yeUltcGwuY3BwIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViSURCRmFjdG9yeUltcGwuY3BwCmluZGV4IGFkNzE0NzZiN2ViYjQ2
ODZlYTgyNWI5NjIxOTE2ZTYzYjI5MGFjNzcuLjk0YThkNDY4YTkwYTkwYzQxMmM3YWE2Yzk4YWVm
Yjc0YmI3YTM3YjggMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklE
QkZhY3RvcnlJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJG
YWN0b3J5SW1wbC5jcHAKQEAgLTM1LDggKzM1LDEwIEBACiAKICNpbmNsdWRlICJET01TdHJpbmdM
aXN0LmgiCiAjaW5jbHVkZSAiSURCQ2FsbGJhY2tzUHJveHkuaCIKKyNpbmNsdWRlICJJREJEYXRh
YmFzZUNhbGxiYWNrc1Byb3h5LmgiCiAjaW5jbHVkZSAiSURCRmFjdG9yeUJhY2tlbmRJbXBsLmgi
CiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKKyNpbmNsdWRlICJXZWJJREJEYXRhYmFzZUNh
bGxiYWNrcy5oIgogI2luY2x1ZGUgIldlYklEQkRhdGFiYXNlRXJyb3IuaCIKICNpbmNsdWRlIDx3
dGYvT3duUHRyLmg+CiAKQEAgLTYzLDkgKzY1LDEyIEBAIHZvaWQgV2ViSURCRmFjdG9yeUltcGw6
OmdldERhdGFiYXNlTmFtZXMoV2ViSURCQ2FsbGJhY2tzKiBjYWxsYmFja3MsIGNvbnN0IFdlYlNl
CiAgICAgbV9pZGJGYWN0b3J5QmFja2VuZC0+Z2V0RGF0YWJhc2VOYW1lcyhJREJDYWxsYmFja3NQ
cm94eTo6Y3JlYXRlKGFkb3B0UHRyKGNhbGxiYWNrcykpLCBvcmlnaW4sIDAsIGRhdGFEaXIpOwog
fQogCi12b2lkIFdlYklEQkZhY3RvcnlJbXBsOjpvcGVuKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwg
bG9uZyBsb25nIHZlcnNpb24sIFdlYklEQkNhbGxiYWNrcyogY2FsbGJhY2tzLCBjb25zdCBXZWJT
ZWN1cml0eU9yaWdpbiYgb3JpZ2luLCBXZWJGcmFtZSosIGNvbnN0IFdlYlN0cmluZyYgZGF0YURp
cikKK3ZvaWQgV2ViSURCRmFjdG9yeUltcGw6Om9wZW4oY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBs
b25nIGxvbmcgdmVyc2lvbiwgV2ViSURCQ2FsbGJhY2tzKiBjYWxsYmFja3MsIFdlYklEQkRhdGFi
YXNlQ2FsbGJhY2tzKiBkYXRhYmFzZUNhbGxiYWNrcywgY29uc3QgV2ViU2VjdXJpdHlPcmlnaW4m
IG9yaWdpbiwgV2ViRnJhbWUqLCBjb25zdCBXZWJTdHJpbmcmIGRhdGFEaXIpCiB7Ci0gICAgbV9p
ZGJGYWN0b3J5QmFja2VuZC0+b3BlbihuYW1lLCB2ZXJzaW9uLCBJREJDYWxsYmFja3NQcm94eTo6
Y3JlYXRlKGFkb3B0UHRyKGNhbGxiYWNrcykpLmdldCgpLCBvcmlnaW4sIDAsIGRhdGFEaXIpOwor
ICAgIFJlZlB0cjxJREJDYWxsYmFja3NQcm94eT4gY2FsbGJhY2tzUHJveHkgPSBJREJDYWxsYmFj
a3NQcm94eTo6Y3JlYXRlKGFkb3B0UHRyKGNhbGxiYWNrcykpOworICAgIFJlZlB0cjxJREJEYXRh
YmFzZUNhbGxiYWNrc1Byb3h5PiBkYXRhYmFzZUNhbGxiYWNrc1Byb3h5ID0gSURCRGF0YWJhc2VD
YWxsYmFja3NQcm94eTo6Y3JlYXRlKGFkb3B0UHRyKGRhdGFiYXNlQ2FsbGJhY2tzKSk7CisgICAg
Y2FsbGJhY2tzUHJveHktPnNldERhdGFiYXNlQ2FsbGJhY2tzKGRhdGFiYXNlQ2FsbGJhY2tzUHJv
eHkpOworICAgIG1faWRiRmFjdG9yeUJhY2tlbmQtPm9wZW4obmFtZSwgdmVyc2lvbiwgY2FsbGJh
Y2tzUHJveHkuZ2V0KCksIGRhdGFiYXNlQ2FsbGJhY2tzUHJveHkuZ2V0KCksIG9yaWdpbiwgMCwg
ZGF0YURpcik7CiB9CiAKIHZvaWQgV2ViSURCRmFjdG9yeUltcGw6OmRlbGV0ZURhdGFiYXNlKGNv
bnN0IFdlYlN0cmluZyYgbmFtZSwgV2ViSURCQ2FsbGJhY2tzKiBjYWxsYmFja3MsIGNvbnN0IFdl
YlNlY3VyaXR5T3JpZ2luJiBvcmlnaW4sIFdlYkZyYW1lKiwgY29uc3QgV2ViU3RyaW5nJiBkYXRh
RGlyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRmFjdG9y
eUltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkZhY3RvcnlJbXBsLmgK
aW5kZXggODMzZWViNTkxMjU5Yjg1M2MzMjFmZDExOGYwOTRhNWI4YTdjODg2NC4uMzNmNWEyMWQy
Yzc0ZjU4ZGZmOTRlMWViN2I5MGU1YWQ0MzBkMTYyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViSURCRmFjdG9yeUltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJJREJGYWN0b3J5SW1wbC5oCkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIH5XZWJJREJGYWN0b3J5SW1wbCgpOwogCiAgICAgdmlydHVhbCB2b2lkIGdl
dERhdGFiYXNlTmFtZXMoV2ViSURCQ2FsbGJhY2tzKiwgY29uc3QgV2ViU2VjdXJpdHlPcmlnaW4m
LCBXZWJGcmFtZSosIGNvbnN0IFdlYlN0cmluZyYgZGF0YURpcik7Ci0gICAgdmlydHVhbCB2b2lk
IG9wZW4oY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBsb25nIGxvbmcgdmVyc2lvbiwgV2ViSURCQ2Fs
bGJhY2tzKiwgY29uc3QgV2ViU2VjdXJpdHlPcmlnaW4mLCBXZWJGcmFtZSosIGNvbnN0IFdlYlN0
cmluZyYgZGF0YURpcik7CisgICAgdmlydHVhbCB2b2lkIG9wZW4oY29uc3QgV2ViU3RyaW5nJiBu
YW1lLCBsb25nIGxvbmcgdmVyc2lvbiwgV2ViSURCQ2FsbGJhY2tzKiwgV2ViSURCRGF0YWJhc2VD
YWxsYmFja3MqLCBjb25zdCBXZWJTZWN1cml0eU9yaWdpbiYsIFdlYkZyYW1lKiwgY29uc3QgV2Vi
U3RyaW5nJiBkYXRhRGlyKTsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlRGF0YWJhc2UoY29uc3Qg
V2ViU3RyaW5nJiBuYW1lLCBXZWJJREJDYWxsYmFja3MqLCBjb25zdCBXZWJTZWN1cml0eU9yaWdp
biYsIFdlYkZyYW1lKiwgY29uc3QgV2ViU3RyaW5nJiBkYXRhRGlyKTsKIAogcHJpdmF0ZToKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCQWJvcnRPbkNvcnJ1cHRU
ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCQWJvcnRPbkNvcnJ1cHRU
ZXN0LmNwcAppbmRleCAxZDM5NTA5NmFhZGIzYTViM2RlOWI3MGRhYjYwZjMxODljZmJhOTg2Li5i
MDgwYmZjNGRmNTFhMjk4ZjRmZGI1ZDljMjhlNzcxN2Y0MGRhZjE0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQkFib3J0T25Db3JydXB0VGVzdC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJBYm9ydE9uQ29ycnVwdFRlc3QuY3BwCkBA
IC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSURCQ3Vyc29y
QmFja2VuZEludGVyZmFjZS5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNlQmFja2VuZEludGVyZmFj
ZS5oIgorI2luY2x1ZGUgIklEQkRhdGFiYXNlQ2FsbGJhY2tzLmgiCiAjaW5jbHVkZSAiSURCRmFj
dG9yeUJhY2tlbmRJbXBsLmgiCiAjaW5jbHVkZSAiSURCRmFrZUJhY2tpbmdTdG9yZS5oIgogI2lu
Y2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCkBAIC05NiwxNCArOTcsMjYgQEAgcHJvdGVjdGVkOgog
ICAgIH0KIH07CiAKK2NsYXNzIEZha2VJREJEYXRhYmFzZUNhbGxiYWNrcyA6IHB1YmxpYyBJREJE
YXRhYmFzZUNhbGxiYWNrcyB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8RmFrZUlE
QkRhdGFiYXNlQ2FsbGJhY2tzPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZihuZXcgRmFrZUlE
QkRhdGFiYXNlQ2FsbGJhY2tzKCkpOyB9CisgICAgdmlydHVhbCB+RmFrZUlEQkRhdGFiYXNlQ2Fs
bGJhY2tzKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIG9uVmVyc2lvbkNoYW5nZShjb25zdCBTdHJp
bmcmIHZlcnNpb24pIE9WRVJSSURFIHsgfQorICAgIHZpcnR1YWwgdm9pZCBvblZlcnNpb25DaGFu
Z2UoaW50NjRfdCBvbGRWZXJzaW9uLCBpbnQ2NF90IG5ld1ZlcnNpb24pIE9WRVJSSURFIHsgfQor
ICAgIHZpcnR1YWwgdm9pZCBvbkZvcmNlZENsb3NlKCkgT1ZFUlJJREUgeyB9Citwcml2YXRlOgor
ICAgIEZha2VJREJEYXRhYmFzZUNhbGxiYWNrcygpIHsgfQorfTsKKwogVEVTVChJREJBYm9ydFRl
c3QsIFRoZVRlc3QpCiB7CiAgICAgUmVmUHRyPElEQkZhY3RvcnlCYWNrZW5kSW1wbD4gZmFjdG9y
eSA9IEZhaWxpbmdJREJGYWN0b3J5QmFja2VuZEltcGw6OmNyZWF0ZSgpOwogICAgIGNvbnN0IFN0
cmluZyYgbmFtZSA9ICJkYiBuYW1lIjsKICAgICBNb2NrSURCQ2FsbGJhY2tzIGNhbGxiYWNrczsK
KyAgICBSZWZQdHI8RmFrZUlEQkRhdGFiYXNlQ2FsbGJhY2tzPiBkYXRhYmFzZUNhbGxiYWNrcyA9
IEZha2VJREJEYXRhYmFzZUNhbGxiYWNrczo6Y3JlYXRlKCk7CiAgICAgUmVmUHRyPFNlY3VyaXR5
T3JpZ2luPiBvcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKCJodHRwIiwgImxvY2FsaG9z
dCIsIDgxKTsKICAgICBjb25zdCBpbnQ2NF90IER1bW15VmVyc2lvbiA9IDI7Ci0gICAgZmFjdG9y
eS0+b3BlbihuYW1lLCBEdW1teVZlcnNpb24sICZjYWxsYmFja3MsIG9yaWdpbiwgMCAvKkZyYW1l
Ki8sIFN0cmluZygpIC8qcGF0aCovKTsKKyAgICBmYWN0b3J5LT5vcGVuKG5hbWUsIER1bW15VmVy
c2lvbiwgJmNhbGxiYWNrcywgZGF0YWJhc2VDYWxsYmFja3MsIG9yaWdpbiwgMCAvKkZyYW1lKi8s
IFN0cmluZygpIC8qcGF0aCovKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCRGF0YWJhc2VCYWNrZW5kVGVzdC5jcHAgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQkRhdGFiYXNlQmFja2VuZFRlc3QuY3BwCmlu
ZGV4IGVhZDdmOWJiOTYyMTY5ODIxZmRlZjcwMmY4MTk2MmMyNGRhNDUwNTEuLjljYzg3OGYzZTg4
ZmE1ZGRmNzJiYThjZTgzODNkYThlZjg2NGQyMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvSURCRGF0YWJhc2VCYWNrZW5kVGVzdC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9JREJEYXRhYmFzZUJhY2tlbmRUZXN0LmNwcApAQCAtMjcsNiAr
MjcsNyBAQAogI2luY2x1ZGUgIklEQkJhY2tpbmdTdG9yZS5oIgogI2luY2x1ZGUgIklEQkN1cnNv
ckJhY2tlbmRJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJJREJEYXRhYmFzZUJhY2tlbmRJbXBsLmgi
CisjaW5jbHVkZSAiSURCRGF0YWJhc2VDYWxsYmFja3NQcm94eS5oIgogI2luY2x1ZGUgIklEQkZh
Y3RvcnlCYWNrZW5kSW1wbC5oIgogI2luY2x1ZGUgIklEQkZha2VCYWNraW5nU3RvcmUuaCIKICNp
bmNsdWRlICJJREJJbmRleEJhY2tlbmRJbXBsLmgiCkBAIC00MCw5ICs0MSwxMCBAQAogI2lmIEVO
QUJMRShJTkRFWEVEX0RBVEFCQVNFKQogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKK3VzaW5n
IFdlYktpdDo6SURCRGF0YWJhc2VDYWxsYmFja3NQcm94eTsKIHVzaW5nIFdlYktpdDo6V2ViSURC
RGF0YWJhc2U7Ci11c2luZyBXZWJLaXQ6OldlYklEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbDsKIHVz
aW5nIFdlYktpdDo6V2ViSURCRGF0YWJhc2VJbXBsOwordXNpbmcgV2ViS2l0OjpXZWJJREJEYXRh
YmFzZUNhbGxiYWNrc0ltcGw7CiAKIG5hbWVzcGFjZSB7CiAKQEAgLTEyMiwyMCArMTI0LDE2IEBA
IFRFU1QoSURCRGF0YWJhc2VCYWNrZW5kVGVzdCwgQ29ubmVjdGlvbkxpZmVjeWNsZSkKICAgICBF
WFBFQ1RfR1QoYmFja2luZ1N0b3JlLT5yZWZDb3VudCgpLCAxKTsKIAogICAgIFJlZlB0cjxNb2Nr
SURCQ2FsbGJhY2tzPiByZXF1ZXN0MSA9IE1vY2tJREJDYWxsYmFja3M6OmNyZWF0ZSgpOwotICAg
IGRiLT5vcGVuQ29ubmVjdGlvbihyZXF1ZXN0MSk7Ci0KICAgICBSZWZQdHI8RmFrZUlEQkRhdGFi
YXNlQ2FsbGJhY2tzPiBjb25uZWN0aW9uMSA9IEZha2VJREJEYXRhYmFzZUNhbGxiYWNrczo6Y3Jl
YXRlKCk7Ci0gICAgZGItPnJlZ2lzdGVyRnJvbnRlbmRDYWxsYmFja3MoY29ubmVjdGlvbjEpOwor
ICAgIGRiLT5vcGVuQ29ubmVjdGlvbihyZXF1ZXN0MSwgY29ubmVjdGlvbjEpOwogCiAgICAgUmVm
UHRyPE1vY2tJREJDYWxsYmFja3M+IHJlcXVlc3QyID0gTW9ja0lEQkNhbGxiYWNrczo6Y3JlYXRl
KCk7Ci0gICAgZGItPm9wZW5Db25uZWN0aW9uKHJlcXVlc3QyKTsKKyAgICBSZWZQdHI8RmFrZUlE
QkRhdGFiYXNlQ2FsbGJhY2tzPiBjb25uZWN0aW9uMiA9IEZha2VJREJEYXRhYmFzZUNhbGxiYWNr
czo6Y3JlYXRlKCk7CisgICAgZGItPm9wZW5Db25uZWN0aW9uKHJlcXVlc3QyLCBjb25uZWN0aW9u
Mik7CiAKICAgICBkYi0+Y2xvc2UoY29ubmVjdGlvbjEpOwogICAgIEVYUEVDVF9HVChiYWNraW5n
U3RvcmUtPnJlZkNvdW50KCksIDEpOwogCi0gICAgUmVmUHRyPEZha2VJREJEYXRhYmFzZUNhbGxi
YWNrcz4gY29ubmVjdGlvbjIgPSBGYWtlSURCRGF0YWJhc2VDYWxsYmFja3M6OmNyZWF0ZSgpOwot
ICAgIGRiLT5yZWdpc3RlckZyb250ZW5kQ2FsbGJhY2tzKGNvbm5lY3Rpb24yKTsKLQogICAgIGRi
LT5jbG9zZShjb25uZWN0aW9uMik7CiAgICAgRVhQRUNUX1RSVUUoYmFja2luZ1N0b3JlLT5oYXNP
bmVSZWYoKSk7CiB9CkBAIC0xNDksNyArMTQ3LDcgQEAgcHVibGljOgogCiAgICAgfk1vY2tJREJE
YXRhYmFzZUJhY2tlbmRQcm94eSgpCiAgICAgewotICAgICAgICBFWFBFQ1RfVFJVRShtX3dhc1Jl
Z2lzdGVyRnJvbnRlbmRDYWxsYmFja3NDYWxsZWQpOworICAgICAgICBFWFBFQ1RfVFJVRShtX3dh
c0Nsb3NlQ2FsbGVkKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIElEQkRhdGFiYXNlTWV0YWRhdGEg
bWV0YWRhdGEoKSBjb25zdCB7IHJldHVybiBJREJEYXRhYmFzZU1ldGFkYXRhKCk7IH0KQEAgLTE2
MywxOSArMTYxLDEyIEBAIHB1YmxpYzoKICAgICAgICAgbV93YXNDbG9zZUNhbGxlZCA9IHRydWU7
CiAgICAgICAgIG1fd2ViRGF0YWJhc2UuY2xvc2UoKTsKICAgICB9Ci0gICAgdmlydHVhbCB2b2lk
IHJlZ2lzdGVyRnJvbnRlbmRDYWxsYmFja3MoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNr
cz4gY29ubmVjdGlvbikKLSAgICB7Ci0gICAgICAgIG1fd2FzUmVnaXN0ZXJGcm9udGVuZENhbGxi
YWNrc0NhbGxlZCA9IHRydWU7Ci0gICAgICAgIG1fd2ViRGF0YWJhc2Uub3BlbihuZXcgV2ViSURC
RGF0YWJhc2VDYWxsYmFja3NJbXBsKGNvbm5lY3Rpb24pKTsKLSAgICB9CiAKIHByaXZhdGU6CiAg
ICAgTW9ja0lEQkRhdGFiYXNlQmFja2VuZFByb3h5KFdlYklEQkRhdGFiYXNlSW1wbCYgd2ViRGF0
YWJhc2UpCi0gICAgICAgIDogbV93YXNSZWdpc3RlckZyb250ZW5kQ2FsbGJhY2tzQ2FsbGVkKGZh
bHNlKQotICAgICAgICAsIG1fd2FzQ2xvc2VDYWxsZWQoZmFsc2UpCisgICAgICAgIDogbV93YXND
bG9zZUNhbGxlZChmYWxzZSkKICAgICAgICAgLCBtX3dlYkRhdGFiYXNlKHdlYkRhdGFiYXNlKSB7
IH0KIAotICAgIGJvb2wgbV93YXNSZWdpc3RlckZyb250ZW5kQ2FsbGJhY2tzQ2FsbGVkOwogICAg
IGJvb2wgbV93YXNDbG9zZUNhbGxlZDsKIAogICAgIFdlYklEQkRhdGFiYXNlSW1wbCYgbV93ZWJE
YXRhYmFzZTsKQEAgLTE5MSwxOCArMTgyLDE5IEBAIFRFU1QoSURCRGF0YWJhc2VCYWNrZW5kVGVz
dCwgRm9yY2VkQ2xvc2UpCiAgICAgUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEltcGw+IGJhY2tl
bmQgPSBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpjcmVhdGUoImRiIiwgYmFja2luZ1N0b3JlLmdl
dCgpLCBjb29yZGluYXRvciwgZmFjdG9yeSwgInVuaXF1ZWlkIik7CiAgICAgRVhQRUNUX0dUKGJh
Y2tpbmdTdG9yZS0+cmVmQ291bnQoKSwgMSk7CiAKLSAgICBXZWJJREJEYXRhYmFzZUltcGwgd2Vi
RGF0YWJhc2UoYmFja2VuZCk7Ci0KLSAgICBSZWZQdHI8TW9ja0lEQkNhbGxiYWNrcz4gcmVxdWVz
dDEgPSBNb2NrSURCQ2FsbGJhY2tzOjpjcmVhdGUoKTsKLSAgICBiYWNrZW5kLT5vcGVuQ29ubmVj
dGlvbihyZXF1ZXN0MSk7CisgICAgUmVmUHRyPEZha2VJREJEYXRhYmFzZUNhbGxiYWNrcz4gY29u
bmVjdGlvbiA9IEZha2VJREJEYXRhYmFzZUNhbGxiYWNrczo6Y3JlYXRlKCk7CisgICAgUmVmUHRy
PElEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHk+IGNvbm5lY3Rpb25Qcm94eSA9IElEQkRhdGFiYXNl
Q2FsbGJhY2tzUHJveHk6OmNyZWF0ZShhZG9wdFB0cihuZXcgV2ViSURCRGF0YWJhc2VDYWxsYmFj
a3NJbXBsKGNvbm5lY3Rpb24pKSk7CisgICAgV2ViSURCRGF0YWJhc2VJbXBsIHdlYkRhdGFiYXNl
KGJhY2tlbmQsIGNvbm5lY3Rpb25Qcm94eSk7CiAKICAgICBSZWZQdHI8TW9ja0lEQkRhdGFiYXNl
QmFja2VuZFByb3h5PiBwcm94eSA9IE1vY2tJREJEYXRhYmFzZUJhY2tlbmRQcm94eTo6Y3JlYXRl
KHdlYkRhdGFiYXNlKTsKKyAgICBSZWZQdHI8TW9ja0lEQkNhbGxiYWNrcz4gcmVxdWVzdCA9IE1v
Y2tJREJDYWxsYmFja3M6OmNyZWF0ZSgpOworICAgIGJhY2tlbmQtPm9wZW5Db25uZWN0aW9uKHJl
cXVlc3QsIGNvbm5lY3Rpb25Qcm94eSk7CiAKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBj
b250ZXh0ID0gMDsKLSAgICBSZWZQdHI8SURCRGF0YWJhc2U+IGlkYkRhdGFiYXNlID0gSURCRGF0
YWJhc2U6OmNyZWF0ZShjb250ZXh0LCBwcm94eSk7Ci0gICAgaWRiRGF0YWJhc2UtPnJlZ2lzdGVy
RnJvbnRlbmRDYWxsYmFja3MoKTsKKyAgICBSZWZQdHI8SURCRGF0YWJhc2U+IGlkYkRhdGFiYXNl
ID0gSURCRGF0YWJhc2U6OmNyZWF0ZShjb250ZXh0LCBwcm94eSwgY29ubmVjdGlvbik7CiAKICAg
ICB3ZWJEYXRhYmFzZS5mb3JjZUNsb3NlKCk7CisKICAgICBFWFBFQ1RfVFJVRShiYWNraW5nU3Rv
cmUtPmhhc09uZVJlZigpKTsKIH0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDI0MTY5NTQ0ZjViNjk0MjQ1YmI0MjQ4ZmJk
NDFjYWE5ZGE2MzE3MTMuLmQzYmZmMDY4NTg0Mzc2ZDMxZjRlYTNjNDkyMjQ5ZDJiOWY2MWUyZGIg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxMi0wOS0wNSAgSm9zaHVhIEJlbGwgIDxqc2JlbGxA
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIEluZGV4ZWREQjogQ29uc29saWRhdGUgdHdvLXBoYXNl
IGNvbm5lY3Rpb24gdG8gYXZvaWQgcmFjZSBjb25kaXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MDQxMQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb2YgdGhl
IGNoYW5nZSBzdWNoIGFzIGFwcHJvYWNoLCByYXRpb25hbGUuIFBsZWFzZSBhZGQgcGVyLWZ1bmN0
aW9uIGRlc2NyaXB0aW9ucyBiZWxvdyAoT09QUyEpLgorCisgICAgICAgICogc3RvcmFnZS9pbmRl
eGVkZGIvaW50dmVyc2lvbi1jbG9zZS1pbi11cGdyYWRlbmVlZGVkLWV4cGVjdGVkLnR4dDoKKyAg
ICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvZmFjdG9yeS1iYXNpY3MuanM6Cisg
ICAgICAgIChnZXREYXRhYmFzZU5hbWVzU3VjY2VzczIpOgorICAgICAgICAqIHN0b3JhZ2UvaW5k
ZXhlZGRiL3Jlc291cmNlcy9pbnR2ZXJzaW9uLWNsb3NlLWluLXVwZ3JhZGVuZWVkZWQuanM6Cisg
ICAgICAgIChkZWxldGVTdWNjZXNzKToKKyAgICAgICAgKHVwZ3JhZGVOZWVkZWQudHJhbnNhY3Rp
b24ub25jb21wbGV0ZSk6CisgICAgICAgICh1cGdyYWRlTmVlZGVkKToKKyAgICAgICAgKG9wZW5F
cnJvcik6CisKIDIwMTItMDktMDUgIEtlbmljaGkgSXNoaWJhc2hpICA8YmFzaGlAY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFtDaHJvbWl1bV0gdW5yZXZpZXdlZCBnYXJkZW5pbmcgYWZ0ZXIgcjEy
NzU2NApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4cGVj
dGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlvbnMK
aW5kZXggNjk3MDkxOTk5MjVjZTdiNjMyMGY3N2RlNDczNmQyYzYyMGE1ZDI5NC4uYzQ3MmI0MTEy
YjhhN2FmM2RkNWVmMDZhMDFmZGQ2ZTljMGEzYTMxMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRpb25zCkBAIC0zMzEzLDkgKzMzMTMsNiBAQCBCVUdX
SzkxMzcyIFdJTiA6IGNzczIuMS8yMDExMDMyMy92ZXJ0aWNhbC1hbGlnbi1ib3hlcy0wMDEuaHRt
ID0gSU1BR0UKIC8vIEZhaWxzIG9uIFdpbgogQlVHV0s5MzYyNCBXSU4gUkVMRUFTRSA6IGluc3Bl
Y3Rvci9jb25zb2xlL2NvbnNvbGUtZm9ybWF0LWNvbGxlY3Rpb25zLmh0bWwgPSBQQVNTIFRFWFQK
IAotLy8gVGltZXMgb3V0IGluIERSVCwgYnV0IHdvcmtzIGluIGNocm9tZQotQlVHV0s5Mjc3NiBT
S0lQIDogc3RvcmFnZS9pbmRleGVkZGIvaW50dmVyc2lvbi1kZWxldGUtaW4tdXBncmFkZW5lZWRl
ZC5odG1sID0gUEFTUwotCiAvLyBTdGFydGVkIGZhaWxpbmcgYXJvdW5kIHIxMjI3NzAKIEJVR1dL
OTE0NDUgTElOVVggOiBwbHVnaW5zL2VtYmVkLWF0dHJpYnV0ZXMtc3R5bGUuaHRtbCA9IFBBU1Mg
SU1BR0UKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW50dmVy
c2lvbi1kZWxldGUtaW4tdXBncmFkZW5lZWRlZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9uLWRlbGV0ZS1pbi11cGdyYWRlbmVlZGVkLWV4cGVj
dGVkLnR4dAppbmRleCA3MTRkMjljMDY3MjU1YzA2YTdmNTMyZTE3YWVjOTJhN2I1YmE5ZjkzLi5m
MzU5YTEwNDNiZGM4OWViM2ViYzkzYjgzYjJhMjAyY2I1M2QwMDI2IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9uLWRlbGV0ZS1pbi11cGdyYWRlbmVl
ZGVkLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbnR2
ZXJzaW9uLWRlbGV0ZS1pbi11cGdyYWRlbmVlZGVkLWV4cGVjdGVkLnR4dApAQCAtMzksMyArMzks
NCBAQCBQQVNTIHNhd1ZlcnNpb25DaGFuZ2UgaXMgdHJ1ZQogUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162541</attachid>
            <date>2012-09-06 11:11:10 -0700</date>
            <delta_ts>2012-09-07 10:21:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-90411-20120906111051.patch</filename>
            <type>text/plain</type>
            <size>67554</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3NTMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzc3NjFkMGY5MGUzZDRj
MWJjMmY4NDc0MTZmZDVlODdjYmI5OWI4Zi4uYWU5ZTYyZjY0OGI4YzY3ZTMxOTJkZjAzNmEwMzJm
ODA1OTkwZjExZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc4IEBACisyMDEyLTA5LTA2ICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBDb25z
b2xpZGF0ZSB0d28tcGhhc2UgY29ubmVjdGlvbiB0byBhdm9pZCByYWNlIGNvbmRpdGlvbnMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkwNDExCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUHJldmlvdXNseSwg
SURCIGNvbm5lY3Rpb25zIHdlcmUgb3BlbmVkIGJ5IGhhdmluZyB0aGUgZnJvbnQtZW5kICgxKSBj
YWxsIHRocm91Z2ggdG8KKyAgICAgICAgYSBiYWNrLWVuZCBvcGVuKCkgbWV0aG9kLCBldmVudHVh
bGx5IHJlY2VpdmUgYSBzdWNjZXNzIG1lc3NhZ2Ugd2l0aCBhIGJhY2stZW5kIG9iamVjdAorICAg
ICAgICBoYW5kbGUsIGFuZCAoMikgY2FsbCBpbnRvIHRoZSBiYWNrLWVuZCBvYmplY3QgdG8gcmVn
aXN0ZXIgZnJvbnQtZW5kIGNhbGxiYWNrcy4gVGhpcyBsZWZ0CisgICAgICAgIHRoZSBiYWNrLWVu
ZCdzIG5vdGlvbiBvZiBhbiBvcGVuIGNvbm5lY3Rpb24gaW4gYSBsaW1ibyBzdGF0ZSBiZXR3ZWVu
IHRoZXNlIHR3byBjYWxscy4KKyAgICAgICAgSW4gbXVsdGktcHJvY2VzcyBwb3J0cywgYSBjcmFz
aCBvZiB0aGUgZnJvbnQtZW5kIHByb2Nlc3MgY291bGQgbGVhdmUgdGhlIGJhY2stZW5kIHdlZGdl
ZAorICAgICAgICB3YWl0aW5nIGZvciB0aGlzIHNlY29uZCBjYWxsIChlLmcuIGNhbid0IGRlbGV0
ZSB1bnRpbCBhbGwgY29ubmVjdGlvbnMgYXJlIGNsb3NlZCkuCisKKyAgICAgICAgU2ltcGxpZnkg
dGhpcyBieSBoYXZpbmcgdGhlIGZyb250LWVuZCBwYXNzIHRocm91Z2ggdGhlIGNhbGxiYWNrcyBp
bnRvIHRoZSBiYWNrLWVuZAorICAgICAgICBkdXJpbmcgdGhlIGluaXRpYWwgb3BlbigpIGNhbGws
IHdoaWNoIGVsaW1pbmF0ZXMgdGhlIGxpbWJvIHN0YXRlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0
cyAtIG5vIGZ1bmN0aW9uYWwgY2hhbmdlcy4gQ2hyb21pdW0gcG9ydCdzIHdlYmtpdF91bml0X3Rl
c3RzIHVwZGF0ZWQuCisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZTo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQkRhdGFiYXNlOjpJREJEYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJE
YXRhYmFzZTo6fklEQkRhdGFiYXNlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJE
YXRhYmFzZS5oOgorICAgICAgICAoSURCRGF0YWJhc2UpOgorICAgICAgICAqIE1vZHVsZXMvaW5k
ZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURC
RGF0YWJhc2VCYWNrZW5kSW1wbDo6UGVuZGluZ09wZW5DYWxsOjpjcmVhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6UGVuZGluZ09wZW5DYWxsOjpkYXRhYmFz
ZUNhbGxiYWNrcyk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpQ
ZW5kaW5nT3BlbkNhbGw6OlBlbmRpbmdPcGVuQ2FsbCk6CisgICAgICAgIChJREJEYXRhYmFzZUJh
Y2tlbmRJbXBsOjpQZW5kaW5nT3BlbkNhbGwpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJh
c2VCYWNrZW5kSW1wbDo6UGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGw6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpQZW5kaW5nT3BlbldpdGhWZXJz
aW9uQ2FsbDo6ZGF0YWJhc2VDYWxsYmFja3MpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJh
c2VCYWNrZW5kSW1wbDo6UGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGw6OlBlbmRpbmdPcGVuV2l0
aFZlcnNpb25DYWxsKToKKyAgICAgICAgKElEQkRhdGFiYXNlQmFja2VuZEltcGw6OlBlbmRpbmdP
cGVuV2l0aFZlcnNpb25DYWxsKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2Vu
ZEltcGw6OklEQkRhdGFiYXNlQmFja2VuZEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0
YWJhc2VCYWNrZW5kSW1wbDo6c2V0VmVyc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRh
YmFzZUJhY2tlbmRJbXBsOjpjb25uZWN0aW9uQ291bnQpOgorICAgICAgICAoV2ViQ29yZTo6SURC
RGF0YWJhc2VCYWNrZW5kSW1wbDo6cHJvY2Vzc1BlbmRpbmdDYWxscyk6CisgICAgICAgIChXZWJD
b3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpvcGVuQ29ubmVjdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpydW5JbnRWZXJzaW9uQ2hhbmdlVHJhbnNh
Y3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6b3BlbkNv
bm5lY3Rpb25XaXRoVmVyc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tl
bmRJbXBsOjpkZWxldGVEYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJh
Y2tlbmRJbXBsOjpjbG9zZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJh
c2VCYWNrZW5kSW1wbC5oOgorICAgICAgICAoSURCRGF0YWJhc2VCYWNrZW5kSW1wbCk6CisgICAg
ICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmg6Cisg
ICAgICAgIChJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UpOgorICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL0lEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGw6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
REJEYXRhYmFzZUNhbGxiYWNrc0ltcGw6OklEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbCk6CisgICAg
ICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGw6OmNvbm5lY3QpOgorICAgICAg
ICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbC5oOgorICAgICAg
ICAoSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRk
Yi9JREJGYWN0b3J5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkZhY3Rvcnk6Om9wZW4pOgor
ICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJGYWN0b3J5QmFja2VuZEltcGw6Om9wZW4pOgorICAgICAgICAq
IE1vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5oOgorICAgICAgICAoSURC
RmFjdG9yeUJhY2tlbmRJbXBsKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0
b3J5QmFja2VuZEludGVyZmFjZS5oOgorICAgICAgICAoSURCRmFjdG9yeUJhY2tlbmRJbnRlcmZh
Y2UpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQk9wZW5EQlJlcXVlc3QuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SURCT3BlbkRCUmVxdWVzdDo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQk9wZW5EQlJlcXVlc3Q6OklEQk9wZW5EQlJlcXVlc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCT3BlbkRCUmVxdWVzdDo6b25VcGdyYWRlTmVlZGVkKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQk9wZW5EQlJlcXVlc3Q6Om9uU3VjY2Vzcyk6CisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvSURCT3BlbkRCUmVxdWVzdC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChJ
REJPcGVuREJSZXF1ZXN0KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2Fj
dGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6b25BYm9ydCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6b25Db21wbGV0ZSk6CisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmUp
OgorCiAyMDEyLTA5LTAzICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
UGFydCAxIG9mIHJlbW92aW5nIFBsYXRmb3JtU3RyaW5nLmgsIG1vdmUgcmVtYWluaW5nIGZ1bmN0
aW9ucyB0byBuZXcgaG9tZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggZjIzNGU3YjE3
ODEzY2EwMDE4ZWI1ZmZkZWE1ZTFjM2MxNTJmZTRhZC4uMzg4NGUyODZkOTJlYjE5MGNhY2EzZTQ3
NTcxNTExNTZiZmI1NDJjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1
MiBAQAorMjAxMi0wOS0wNiAgSm9zaHVhIEJlbGwgIDxqc2JlbGxAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIEluZGV4ZWREQjogQ29uc29saWRhdGUgdHdvLXBoYXNlIGNvbm5lY3Rpb24gdG8gYXZv
aWQgcmFjZSBjb25kaXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD05MDQxMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEFQSSBwbHVtYmluZyBmb3Igc2ltcGxpZmllZCBzaW5nbGUtcGhhc2UgY29ubmVj
dGlvbiBvcGVuaW5nLCBhbmQgdGVzdHMgdXBkYXRlZAorICAgICAgICB0byBleGVyY2lzZSB0aGUg
bmV3IEFQSXMuCisKKyAgICAgICAgKiBwdWJsaWMvV2ViSURCRGF0YWJhc2UuaDoKKyAgICAgICAg
KFdlYklEQkRhdGFiYXNlKToKKyAgICAgICAgKiBwdWJsaWMvV2ViSURCRmFjdG9yeS5oOgorICAg
ICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYklEQkZhY3RvcnkpOgorICAgICAgICAoV2ViS2l0
OjpXZWJJREJGYWN0b3J5OjpvcGVuKToKKyAgICAgICAgKiBzcmMvSURCQ2FsbGJhY2tzUHJveHku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpJREJDYWxsYmFja3NQcm94eTo6b25TdWNjZXNzKToKKyAg
ICAgICAgKFdlYktpdDo6SURCQ2FsbGJhY2tzUHJveHk6Om9uVXBncmFkZU5lZWRlZCk6CisgICAg
ICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpJREJDYWxsYmFja3NQcm94eTo6c2V0RGF0
YWJhc2VDYWxsYmFja3MpOgorICAgICAgICAqIHNyYy9JREJDYWxsYmFja3NQcm94eS5oOgorICAg
ICAgICAoV2ViS2l0KToKKyAgICAgICAgKElEQkNhbGxiYWNrc1Byb3h5KToKKyAgICAgICAgKiBz
cmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuY3BwOgorICAgICAgICAqIHNyYy9JREJEYXRhYmFz
ZUJhY2tlbmRQcm94eS5oOgorICAgICAgICAoSURCRGF0YWJhc2VCYWNrZW5kUHJveHkpOgorICAg
ICAgICAqIHNyYy9JREJGYWN0b3J5QmFja2VuZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
SURCRmFjdG9yeUJhY2tlbmRQcm94eTo6b3Blbik6CisgICAgICAgICogc3JjL0lEQkZhY3RvcnlC
YWNrZW5kUHJveHkuaDoKKyAgICAgICAgKElEQkZhY3RvcnlCYWNrZW5kUHJveHkpOgorICAgICAg
ICAqIHNyYy9XZWJJREJEYXRhYmFzZUltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJE
YXRhYmFzZUltcGw6OldlYklEQkRhdGFiYXNlSW1wbCk6CisgICAgICAgIChXZWJLaXQ6OldlYklE
QkRhdGFiYXNlSW1wbDo6Y2xvc2UpOgorICAgICAgICAqIHNyYy9XZWJJREJEYXRhYmFzZUltcGwu
aDoKKyAgICAgICAgKFdlYklEQkRhdGFiYXNlSW1wbCk6CisgICAgICAgICogc3JjL1dlYklEQkZh
Y3RvcnlJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSURCRmFjdG9yeUltcGw6Om9wZW4p
OgorICAgICAgICAqIHNyYy9XZWJJREJGYWN0b3J5SW1wbC5oOgorICAgICAgICAoV2ViSURCRmFj
dG9yeUltcGwpOgorICAgICAgICAqIHRlc3RzL0lEQkFib3J0T25Db3JydXB0VGVzdC5jcHA6Cisg
ICAgICAgIChGYWtlSURCRGF0YWJhc2VDYWxsYmFja3MpOgorICAgICAgICAoV2ViQ29yZTo6RmFr
ZUlEQkRhdGFiYXNlQ2FsbGJhY2tzOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RmFrZUlE
QkRhdGFiYXNlQ2FsbGJhY2tzOjp+RmFrZUlEQkRhdGFiYXNlQ2FsbGJhY2tzKToKKyAgICAgICAg
KFdlYkNvcmU6OkZha2VJREJEYXRhYmFzZUNhbGxiYWNrczo6RmFrZUlEQkRhdGFiYXNlQ2FsbGJh
Y2tzKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6VEVTVCk6CisgICAg
ICAgICogdGVzdHMvSURCRGF0YWJhc2VCYWNrZW5kVGVzdC5jcHA6CisKIDIwMTItMDktMDQgIFRp
ZW4tUmVuIENoZW4gIDx0cmNoZW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0g
UmVuYW1lIFdlYlZpZXdDbGllbnQ6OmhhbmRsZURpc2FtYmlndWF0aW9uUG9wdXAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcAppbmRleCBiM2Y3
MGFkZDI5MzJjZTE1OTdlY2EwNTVhZWQxZWVmMDcwY2Q1ZGE3Li5kNjQxZDA0YTQzNmUxZmZmNWY2
NDE4NGZkODM0MmY0MmQ1YzAzNzQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCRGF0YWJhc2UuY3BwCkBAIC0zMSw3ICszMSw3IEBACiAjaW5jbHVkZSAiRXZl
bnRRdWV1ZS5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJJREJBbnku
aCIKLSNpbmNsdWRlICJJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwuaCIKKyNpbmNsdWRlICJJREJE
YXRhYmFzZUNhbGxiYWNrcy5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNlRXJyb3IuaCIKICNpbmNs
dWRlICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5oIgogI2luY2x1ZGUgIklEQkV2ZW50RGlzcGF0Y2hl
ci5oIgpAQCAtNTAsMjkgKzUwLDI4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1Jl
ZlB0cjxJREJEYXRhYmFzZT4gSURCRGF0YWJhc2U6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4gZGF0
YWJhc2UpCitQYXNzUmVmUHRyPElEQkRhdGFiYXNlPiBJREJEYXRhYmFzZTo6Y3JlYXRlKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5k
SW50ZXJmYWNlPiBkYXRhYmFzZSwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gY2Fs
bGJhY2tzKQogewotICAgIFJlZlB0cjxJREJEYXRhYmFzZT4gaWRiRGF0YWJhc2UoYWRvcHRSZWYo
bmV3IElEQkRhdGFiYXNlKGNvbnRleHQsIGRhdGFiYXNlKSkpOworICAgIFJlZlB0cjxJREJEYXRh
YmFzZT4gaWRiRGF0YWJhc2UoYWRvcHRSZWYobmV3IElEQkRhdGFiYXNlKGNvbnRleHQsIGRhdGFi
YXNlLCBjYWxsYmFja3MpKSk7CiAgICAgaWRiRGF0YWJhc2UtPnN1c3BlbmRJZk5lZWRlZCgpOwog
ICAgIHJldHVybiBpZGJEYXRhYmFzZS5yZWxlYXNlKCk7CiB9CiAKLUlEQkRhdGFiYXNlOjpJREJE
YXRhYmFzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQkRh
dGFiYXNlQmFja2VuZEludGVyZmFjZT4gYmFja2VuZCkKK0lEQkRhdGFiYXNlOjpJREJEYXRhYmFz
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNl
QmFja2VuZEludGVyZmFjZT4gYmFja2VuZCwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNr
cz4gY2FsbGJhY2tzKQogICAgIDogQWN0aXZlRE9NT2JqZWN0KGNvbnRleHQsIHRoaXMpCiAgICAg
LCBtX2JhY2tlbmQoYmFja2VuZCkKICAgICAsIG1fY2xvc2VQZW5kaW5nKGZhbHNlKQogICAgICwg
bV9jb250ZXh0U3RvcHBlZChmYWxzZSkKKyAgICAsIG1fZGF0YWJhc2VDYWxsYmFja3MoY2FsbGJh
Y2tzKQogewogICAgIC8vIFdlIHBhc3MgYSByZWZlcmVuY2Ugb2YgdGhpcyBvYmplY3QgYmVmb3Jl
IGl0IGNhbiBiZSBhZG9wdGVkLgogICAgIHJlbGF4QWRvcHRpb25SZXF1aXJlbWVudCgpOwotICAg
IG1fZGF0YWJhc2VDYWxsYmFja3MgPSBJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGw6OmNyZWF0ZSh0
aGlzKTsKICAgICBtX21ldGFkYXRhID0gbV9iYWNrZW5kLT5tZXRhZGF0YSgpOwogfQogCiBJREJE
YXRhYmFzZTo6fklEQkRhdGFiYXNlKCkKIHsKICAgICBjbG9zZSgpOwotICAgIG1fZGF0YWJhc2VD
YWxsYmFja3MtPnVucmVnaXN0ZXJEYXRhYmFzZSh0aGlzKTsKIH0KIAogdm9pZCBJREJEYXRhYmFz
ZTo6dHJhbnNhY3Rpb25DcmVhdGVkKElEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbikKQEAgLTMz
NSwxMiArMzM0LDYgQEAgdm9pZCBJREJEYXRhYmFzZTo6b25WZXJzaW9uQ2hhbmdlKGNvbnN0IFN0
cmluZyYgdmVyc2lvbikKICAgICBlbnF1ZXVlRXZlbnQoSURCVmVyc2lvbkNoYW5nZUV2ZW50Ojpj
cmVhdGUodmVyc2lvbiwgZXZlbnROYW1lcygpLnZlcnNpb25jaGFuZ2VFdmVudCkpOwogfQogCi12
b2lkIElEQkRhdGFiYXNlOjpyZWdpc3RlckZyb250ZW5kQ2FsbGJhY2tzKCkKLXsKLSAgICBBU1NF
UlQobV9iYWNrZW5kKTsKLSAgICBtX2JhY2tlbmQtPnJlZ2lzdGVyRnJvbnRlbmRDYWxsYmFja3Mo
bV9kYXRhYmFzZUNhbGxiYWNrcyk7Ci19Ci0KIHZvaWQgSURCRGF0YWJhc2U6OmVucXVldWVFdmVu
dChQYXNzUmVmUHRyPEV2ZW50PiBldmVudCkKIHsKICAgICBBU1NFUlQoIW1fY29udGV4dFN0b3Bw
ZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0
YWJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmgK
aW5kZXggMjdmMDNiNmUzNTQ4YTgwMGY0MWEzZmFlNTg2MDE3OWM4N2ZkNzJjZC4uNjQ5OTI0YWI2
NjJkOTk0NWM3OGUyMzJlYmI0MzY5MDQ1NjkzMjUwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5oCkBAIC01MSw3ICs1MSw3IEBAIHR5cGVkZWYg
aW50IEV4Y2VwdGlvbkNvZGU7CiAKIGNsYXNzIElEQkRhdGFiYXNlIDogcHVibGljIFJlZkNvdW50
ZWQ8SURCRGF0YWJhc2U+LCBwdWJsaWMgRXZlbnRUYXJnZXQsIHB1YmxpYyBBY3RpdmVET01PYmpl
Y3QgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQkRhdGFiYXNlPiBjcmVhdGUo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50
ZXJmYWNlPik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SURCRGF0YWJhc2U+IGNyZWF0ZShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZh
Y2U+LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPik7CiAgICAgfklEQkRhdGFiYXNl
KCk7CiAKICAgICB2b2lkIHRyYW5zYWN0aW9uQ3JlYXRlZChJREJUcmFuc2FjdGlvbiopOwpAQCAt
ODksNyArODksNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3Q7CiAKICAgICB2b2lkIGZvcmNlQ2xvc2Uo
KTsKLSAgICB2b2lkIHJlZ2lzdGVyRnJvbnRlbmRDYWxsYmFja3MoKTsKICAgICBjb25zdCBJREJE
YXRhYmFzZU1ldGFkYXRhIG1ldGFkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9tZXRhZGF0YTsgfQog
ICAgIHZvaWQgZW5xdWV1ZUV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+KTsKICAgICBib29sIGRpc3Bh
dGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQsIEV4Y2VwdGlvbkNvZGUmIGVjKSB7IHJl
dHVybiBFdmVudFRhcmdldDo6ZGlzcGF0Y2hFdmVudChldmVudCwgZWMpOyB9CkBAIC05OSw3ICs5
OCw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBSZWZDb3VudGVkPElEQkRhdGFiYXNlPjo6ZGVyZWY7
CiAKIHByaXZhdGU6Ci0gICAgSURCRGF0YWJhc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBh
c3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPik7CisgICAgSURCRGF0YWJhc2Uo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50
ZXJmYWNlPiwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4pOwogCiAgICAgLy8gRXZl
bnRUYXJnZXQKICAgICB2aXJ0dWFsIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSB7IHJlZigpOyB9CkBA
IC0xMjMsNyArMTIyLDcgQEAgcHJpdmF0ZToKICAgICAvLyBkYXRhYmFzZSBzbyB0aGF0IHdlIGNh
biBjYW5jZWwgdGhlbSBpZiB0aGUgZGF0YWJhc2UgY2xvc2VzLgogICAgIFZlY3RvcjxSZWZQdHI8
RXZlbnQ+ID4gbV9lbnF1ZXVlZEV2ZW50czsKIAotICAgIFJlZlB0cjxJREJEYXRhYmFzZUNhbGxi
YWNrc0ltcGw+IG1fZGF0YWJhc2VDYWxsYmFja3M7CisgICAgUmVmUHRyPElEQkRhdGFiYXNlQ2Fs
bGJhY2tzPiBtX2RhdGFiYXNlQ2FsbGJhY2tzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJh
c2VCYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJE
YXRhYmFzZUJhY2tlbmRJbXBsLmNwcAppbmRleCA4MTEwYzI0YzEzYjNjNDYzZWUzN2IyMGQ0Y2Zm
YTcxMjQyNDRiNjM5Li5mNmU3YmQxZjUyNmM5MDhmYmIwNGYzM2FkYTFiZDU3ZTViOGY0OWMwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJh
Y2tlbmRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJE
YXRhYmFzZUJhY2tlbmRJbXBsLmNwcApAQCAtNDEsMzcgKzQxLDQzIEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6UGVuZGluZ09wZW5DYWxsIDog
cHVibGljIFJlZkNvdW50ZWQ8UGVuZGluZ09wZW5DYWxsPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFBhc3NSZWZQdHI8UGVuZGluZ09wZW5DYWxsPiBjcmVhdGUoUGFzc1JlZlB0cjxJREJDYWxsYmFj
a3M+IGNhbGxiYWNrcykKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxQZW5kaW5nT3BlbkNhbGw+IGNy
ZWF0ZShQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBQYXNzUmVmUHRyPElEQkRh
dGFiYXNlQ2FsbGJhY2tzPiBkYXRhYmFzZUNhbGxiYWNrcykKICAgICB7Ci0gICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgUGVuZGluZ09wZW5DYWxsKGNhbGxiYWNrcykpOworICAgICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IFBlbmRpbmdPcGVuQ2FsbChjYWxsYmFja3MsIGRhdGFiYXNlQ2FsbGJh
Y2tzKSk7CiAgICAgfQogICAgIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MoKSB7
IHJldHVybiBtX2NhbGxiYWNrczsgfQorICAgIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFj
a3M+IGRhdGFiYXNlQ2FsbGJhY2tzKCkgeyByZXR1cm4gbV9kYXRhYmFzZUNhbGxiYWNrczsgfQog
CiBwcml2YXRlOgotICAgIFBlbmRpbmdPcGVuQ2FsbChQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4g
Y2FsbGJhY2tzKQorICAgIFBlbmRpbmdPcGVuQ2FsbChQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4g
Y2FsbGJhY2tzLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBkYXRhYmFzZUNhbGxi
YWNrcykKICAgICAgICAgOiBtX2NhbGxiYWNrcyhjYWxsYmFja3MpCisgICAgICAgICwgbV9kYXRh
YmFzZUNhbGxiYWNrcyhkYXRhYmFzZUNhbGxiYWNrcykKICAgICB7CiAgICAgfQogCiAgICAgUmVm
UHRyPElEQkNhbGxiYWNrcz4gbV9jYWxsYmFja3M7CisgICAgUmVmUHRyPElEQkRhdGFiYXNlQ2Fs
bGJhY2tzPiBtX2RhdGFiYXNlQ2FsbGJhY2tzOwogfTsKIAogY2xhc3MgSURCRGF0YWJhc2VCYWNr
ZW5kSW1wbDo6UGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGwgOiBwdWJsaWMgUmVmQ291bnRlZDxQ
ZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbD4gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVm
UHRyPFBlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxsPiBjcmVhdGUoUGFzc1JlZlB0cjxJREJDYWxs
YmFja3M+IGNhbGxiYWNrcywgaW50NjRfdCB2ZXJzaW9uKQorICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFBlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxsPiBjcmVhdGUoUGFzc1JlZlB0cjxJREJDYWxsYmFj
a3M+IGNhbGxiYWNrcywgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gZGF0YWJhc2VD
YWxsYmFja3MsIGludDY0X3QgdmVyc2lvbikKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgUGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGwoY2FsbGJhY2tzLCB2ZXJzaW9uKSk7Cisg
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgUGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGwoY2Fs
bGJhY2tzLCBkYXRhYmFzZUNhbGxiYWNrcywgdmVyc2lvbikpOwogICAgIH0KICAgICBQYXNzUmVm
UHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKCkgeyByZXR1cm4gbV9jYWxsYmFja3M7IH0KKyAg
ICBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBkYXRhYmFzZUNhbGxiYWNrcygpIHsg
cmV0dXJuIG1fZGF0YWJhc2VDYWxsYmFja3M7IH0KICAgICBpbnQ2NF90IHZlcnNpb24oKSB7IHJl
dHVybiBtX3ZlcnNpb247IH0KIAogcHJpdmF0ZToKLSAgICBQZW5kaW5nT3BlbldpdGhWZXJzaW9u
Q2FsbChQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBpbnQ2NF90IHZlcnNpb24p
CisgICAgUGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGwoUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+
IGNhbGxiYWNrcywgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gZGF0YWJhc2VDYWxs
YmFja3MsIGludDY0X3QgdmVyc2lvbikKICAgICAgICAgOiBtX2NhbGxiYWNrcyhjYWxsYmFja3Mp
CisgICAgICAgICwgbV9kYXRhYmFzZUNhbGxiYWNrcyhkYXRhYmFzZUNhbGxiYWNrcykKICAgICAg
ICAgLCBtX3ZlcnNpb24odmVyc2lvbikKICAgICB7CiAgICAgfQogICAgIFJlZlB0cjxJREJDYWxs
YmFja3M+IG1fY2FsbGJhY2tzOworICAgIFJlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gbV9k
YXRhYmFzZUNhbGxiYWNrczsKICAgICBpbnQ2NF90IG1fdmVyc2lvbjsKIH07CiAKQEAgLTEzMCw3
ICsxMzYsNiBAQCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBs
KGNvbnN0IFN0cmluZyYgbmFtZSwgSURCQmFja2luZ1N0bwogICAgICwgbV9pZGVudGlmaWVyKHVu
aXF1ZUlkZW50aWZpZXIpCiAgICAgLCBtX2ZhY3RvcnkoZmFjdG9yeSkKICAgICAsIG1fdHJhbnNh
Y3Rpb25Db29yZGluYXRvcihjb29yZGluYXRvcikKLSAgICAsIG1fcGVuZGluZ0Nvbm5lY3Rpb25D
b3VudCgwKQogewogICAgIEFTU0VSVCghbV9uYW1lLmlzTnVsbCgpKTsKIH0KQEAgLTI0MCw2ICsy
NDUsNyBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OnNldFZlcnNpb24oY29uc3QgU3Ry
aW5nJiB2ZXJzaW9uLCBQYXNzUmVmUHRyPElEQkNhbAogICAgICAgICByZXR1cm47CiAgICAgfQog
ICAgIGZvciAoRGF0YWJhc2VDYWxsYmFja3NTZXQ6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9kYXRh
YmFzZUNhbGxiYWNrc1NldC5iZWdpbigpOyBpdCAhPSBtX2RhdGFiYXNlQ2FsbGJhY2tzU2V0LmVu
ZCgpOyArK2l0KSB7CisgICAgICAgIC8vIEZyb250IGVuZCBlbnN1cmVzIHRoZSBldmVudCBpcyBu
b3QgZmlyZWQgYXQgY29ubmVjdGlvbnMgdGhhdCBoYXZlIGNsb3NlUGVuZGluZyBzZXQuCiAgICAg
ICAgIGlmICgqaXQgIT0gZGF0YWJhc2VDYWxsYmFja3MpCiAgICAgICAgICAgICAoKml0KS0+b25W
ZXJzaW9uQ2hhbmdlKHZlcnNpb24pOwogICAgIH0KQEAgLTM0Miw5ICszNDgsMTAgQEAgdm9pZCBJ
REJEYXRhYmFzZUJhY2tlbmRJbXBsOjp0cmFuc2FjdGlvbkZpbmlzaGVkQW5kQ29tcGxldGVGaXJl
ZChQYXNzUmVmUHRyPElEQlQKICAgICAgICAgcHJvY2Vzc1BlbmRpbmdDYWxscygpOwogfQogCi1p
bnQzMl90IElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNvbm5lY3Rpb25Db3VudCgpCitzaXplX3Qg
SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6Y29ubmVjdGlvbkNvdW50KCkKIHsKLSAgICByZXR1cm4g
bV9kYXRhYmFzZUNhbGxiYWNrc1NldC5zaXplKCkgKyBtX3BlbmRpbmdDb25uZWN0aW9uQ291bnQ7
CisgICAgLy8gVGhpcyBkb2VzIG5vdCBpbmNsdWRlIHBlbmRpbmcgb3BlbiBjYWxscywgYXMgdGhv
c2Ugc2hvdWxkIG5vdCBibG9jayB2ZXJzaW9uIGNoYW5nZXMgYW5kIGRlbGV0ZXMuCisgICAgcmV0
dXJuIG1fZGF0YWJhc2VDYWxsYmFja3NTZXQuc2l6ZSgpOwogfQogCiB2b2lkIElEQkRhdGFiYXNl
QmFja2VuZEltcGw6OnByb2Nlc3NQZW5kaW5nQ2FsbHMoKQpAQCAtMzU1LDkgKzM2Miw4IEBAIHZv
aWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6cHJvY2Vzc1BlbmRpbmdDYWxscygpCiAgICAgICAg
IFJlZlB0cjxQZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbD4gcGVuZGluZ09wZW5XaXRoVmVyc2lv
bkNhbGwgPSBtX3BlbmRpbmdTZWNvbmRIYWxmT3BlbldpdGhWZXJzaW9uQ2FsbHMudGFrZUZpcnN0
KCk7CiAgICAgICAgIEFTU0VSVChwZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbC0+dmVyc2lvbigp
ID09IG1faW50VmVyc2lvbik7CiAgICAgICAgIEFTU0VSVChtX2lkICE9IEludmFsaWRJZCk7Ci0g
ICAgICAgICsrbV9wZW5kaW5nQ29ubmVjdGlvbkNvdW50OwogICAgICAgICBwZW5kaW5nT3Blbldp
dGhWZXJzaW9uQ2FsbC0+Y2FsbGJhY2tzKCktPm9uU3VjY2Vzcyh0aGlzKTsKLSAgICAgICAgcmV0
dXJuOworICAgICAgICAvLyBGYWxsIHRocm91Z2ggd2hlbiBjb21wbGV0ZSwgYXMgcGVuZGluZyBk
ZWxldGVzIG1heSBiZSAocGFydGlhbGx5KSB1bmJsb2NrZWQuCiAgICAgfQogCiAgICAgLy8gUGVu
ZGluZyBjYWxscyBtYXkgYmUgcmVxdWV1ZWQgb3IgYWJvcnRlZApAQCAtNDAwLDcgKzQwNiw3IEBA
IHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6cHJvY2Vzc1BlbmRpbmdDYWxscygpCiAgICAg
bV9wZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbHMuc3dhcChwZW5kaW5nT3BlbldpdGhWZXJzaW9u
Q2FsbHMpOwogICAgIHdoaWxlICghcGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGxzLmlzRW1wdHko
KSkgewogICAgICAgICBSZWZQdHI8UGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGw+IHBlbmRpbmdP
cGVuV2l0aFZlcnNpb25DYWxsID0gcGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGxzLnRha2VGaXJz
dCgpOwotICAgICAgICBvcGVuQ29ubmVjdGlvbldpdGhWZXJzaW9uKHBlbmRpbmdPcGVuV2l0aFZl
cnNpb25DYWxsLT5jYWxsYmFja3MoKSwgcGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGwtPnZlcnNp
b24oKSk7CisgICAgICAgIG9wZW5Db25uZWN0aW9uV2l0aFZlcnNpb24ocGVuZGluZ09wZW5XaXRo
VmVyc2lvbkNhbGwtPmNhbGxiYWNrcygpLCBwZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbC0+ZGF0
YWJhc2VDYWxsYmFja3MoKSwgcGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGwtPnZlcnNpb24oKSk7
CiAgICAgfQogCiAgICAgLy8gR2l2ZW4gdGhlIGNoZWNrIGFib3ZlLCBpdCBhcHBlYXJzIHRoYXQg
Y2FsbHMgY2Fubm90IGJlIHJlcXVldWVkIGJ5CkBAIC00MDksNyArNDE1LDcgQEAgdm9pZCBJREJE
YXRhYmFzZUJhY2tlbmRJbXBsOjpwcm9jZXNzUGVuZGluZ0NhbGxzKCkKICAgICBtX3BlbmRpbmdP
cGVuQ2FsbHMuc3dhcChwZW5kaW5nT3BlbkNhbGxzKTsKICAgICB3aGlsZSAoIXBlbmRpbmdPcGVu
Q2FsbHMuaXNFbXB0eSgpKSB7CiAgICAgICAgIFJlZlB0cjxQZW5kaW5nT3BlbkNhbGw+IHBlbmRp
bmdPcGVuQ2FsbCA9IHBlbmRpbmdPcGVuQ2FsbHMudGFrZUZpcnN0KCk7Ci0gICAgICAgIG9wZW5D
b25uZWN0aW9uKHBlbmRpbmdPcGVuQ2FsbC0+Y2FsbGJhY2tzKCkpOworICAgICAgICBvcGVuQ29u
bmVjdGlvbihwZW5kaW5nT3BlbkNhbGwtPmNhbGxiYWNrcygpLCBwZW5kaW5nT3BlbkNhbGwtPmRh
dGFiYXNlQ2FsbGJhY2tzKCkpOwogICAgIH0KICAgICBBU1NFUlQobV9wZW5kaW5nT3BlbkNhbGxz
LmlzRW1wdHkoKSk7CiB9CkBAIC00MjgsNDQgKzQzNCwzMCBAQCBQYXNzUmVmUHRyPElEQlRyYW5z
YWN0aW9uQmFja2VuZEludGVyZmFjZT4gSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6dHJhbnNhY3Rp
b24oRAogICAgIHJldHVybiB0cmFuc2FjdGlvbi5yZWxlYXNlKCk7CiB9CiAKLXZvaWQgSURCRGF0
YWJhc2VCYWNrZW5kSW1wbDo6cmVnaXN0ZXJGcm9udGVuZENhbGxiYWNrcyhQYXNzUmVmUHRyPElE
QkRhdGFiYXNlQ2FsbGJhY2tzPiBjYWxsYmFja3MpCi17Ci0gICAgQVNTRVJUKG1fYmFja2luZ1N0
b3JlLmdldCgpKTsKLSAgICBBU1NFUlQobV9wZW5kaW5nQ29ubmVjdGlvbkNvdW50KTsKLSAgICAt
LW1fcGVuZGluZ0Nvbm5lY3Rpb25Db3VudDsKLSAgICBtX2RhdGFiYXNlQ2FsbGJhY2tzU2V0LmFk
ZChSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+KGNhbGxiYWNrcykpOwotICAgIC8vIFdlIGdp
dmUgbWF4IHByaW9yaXR5IHRvIG9wZW4gY2FsbHMgdGhhdCBmb2xsb3cgdXBncmFkZW5lZWRlZAot
ICAgIC8vIGV2ZW50czsgdHJpZ2dlciB0aGUgcmVzdCBvZiB0aGUgcXVldWVzIHRvIGJlIHNlcnZp
Y2VkIHdoZW4gdGhvc2Ugb3BlbgotICAgIC8vIGNhbGxzIGFyZSBmaW5pc2hlZC4KLSAgICBwcm9j
ZXNzUGVuZGluZ0NhbGxzKCk7Ci19Ci0KLXZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6b3Bl
bkNvbm5lY3Rpb24oUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKK3ZvaWQgSURC
RGF0YWJhc2VCYWNrZW5kSW1wbDo6b3BlbkNvbm5lY3Rpb24oUGFzc1JlZlB0cjxJREJDYWxsYmFj
a3M+IGNhbGxiYWNrcywgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gZGF0YWJhc2VD
YWxsYmFja3MpCiB7CiAgICAgQVNTRVJUKG1fYmFja2luZ1N0b3JlLmdldCgpKTsKICAgICBpZiAo
IW1fcGVuZGluZ0RlbGV0ZUNhbGxzLmlzRW1wdHkoKSB8fCBtX3J1bm5pbmdWZXJzaW9uQ2hhbmdl
VHJhbnNhY3Rpb24gfHwgIW1fcGVuZGluZ1NldFZlcnNpb25DYWxscy5pc0VtcHR5KCkpCi0gICAg
ICAgIG1fcGVuZGluZ09wZW5DYWxscy5hcHBlbmQoUGVuZGluZ09wZW5DYWxsOjpjcmVhdGUoY2Fs
bGJhY2tzKSk7CisgICAgICAgIG1fcGVuZGluZ09wZW5DYWxscy5hcHBlbmQoUGVuZGluZ09wZW5D
YWxsOjpjcmVhdGUoY2FsbGJhY2tzLCBkYXRhYmFzZUNhbGxiYWNrcykpOwogICAgIGVsc2Ugewog
ICAgICAgICBpZiAobV9pZCA9PSBJbnZhbGlkSWQgJiYgIW9wZW5JbnRlcm5hbCgpKQogICAgICAg
ICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRh
YmFzZUV4Y2VwdGlvbjo6VU5LTk9XTl9FUlIsICJJbnRlcm5hbCBlcnJvci4iKSk7CiAgICAgICAg
IGVsc2UgewotICAgICAgICAgICAgKyttX3BlbmRpbmdDb25uZWN0aW9uQ291bnQ7CisgICAgICAg
ICAgICBtX2RhdGFiYXNlQ2FsbGJhY2tzU2V0LmFkZChSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFj
a3M+KGRhdGFiYXNlQ2FsbGJhY2tzKSk7CiAgICAgICAgICAgICBjYWxsYmFja3MtPm9uU3VjY2Vz
cyh0aGlzKTsKICAgICAgICAgfQogICAgIH0KIH0KIAotdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJ
bXBsOjpydW5JbnRWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24oaW50NjRfdCByZXF1ZXN0ZWRWZXJz
aW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJhY2tzKQordm9pZCBJREJEYXRh
YmFzZUJhY2tlbmRJbXBsOjpydW5JbnRWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24oaW50NjRfdCBy
ZXF1ZXN0ZWRWZXJzaW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJhY2tzLCBQ
YXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBwcnBEYXRhYmFzZUNhbGxiYWNrcykKIHsK
ICAgICBSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MgPSBwcnBDYWxsYmFja3M7CisgICAg
UmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBkYXRhYmFzZUNhbGxiYWNrcyA9IHBycERhdGFi
YXNlQ2FsbGJhY2tzOwogICAgIEFTU0VSVChjYWxsYmFja3MpOwogICAgIGZvciAoRGF0YWJhc2VD
YWxsYmFja3NTZXQ6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9kYXRhYmFzZUNhbGxiYWNrc1NldC5i
ZWdpbigpOyBpdCAhPSBtX2RhdGFiYXNlQ2FsbGJhY2tzU2V0LmVuZCgpOyArK2l0KSB7Ci0gICAg
ICAgIC8vIE5vdGUgdGhhdCBzb21lIGNvbm5lY3Rpb25zIG1pZ2h0IGNsb3NlIGluIHRoZSB2ZXJz
aW9uY2hhbmdlIGV2ZW50Ci0gICAgICAgIC8vIGhhbmRsZXIgZm9yIHNvbWUgb3RoZXIgY29ubmVj
dGlvbiwgYWZ0ZXIgd2hpY2ggaXRzIG93biB2ZXJzaW9uY2hhbmdlCi0gICAgICAgIC8vIGV2ZW50
IHNob3VsZCBub3QgYmUgZmlyZWQuIFRoZSBiYWNrZW5kIGRvZXNuJ3Qgd29ycnkgYWJvdXQgdGhp
cywgd2UKLSAgICAgICAgLy8ganVzdCBxdWV1ZSB1cCBhIHZlcnNpb24gY2hhbmdlIGV2ZW50IGZv
ciBldmVyeSBjb25uZWN0aW9uLiBUaGUKLSAgICAgICAgLy8gZnJvbnRlbmQgdGFrZXMgY2FyZSB0
byBvbmx5IGRpc3BhdGNoIHRvIG9wZW4gY29ubmVjdGlvbnMuCi0gICAgICAgICgqaXQpLT5vblZl
cnNpb25DaGFuZ2UobV9pbnRWZXJzaW9uLCByZXF1ZXN0ZWRWZXJzaW9uKTsKKyAgICAgICAgLy8g
RnJvbnQgZW5kIGVuc3VyZXMgdGhlIGV2ZW50IGlzIG5vdCBmaXJlZCBhdCBjb25uZWN0aW9ucyB0
aGF0IGhhdmUgY2xvc2VQZW5kaW5nIHNldC4KKyAgICAgICAgaWYgKCppdCAhPSBkYXRhYmFzZUNh
bGxiYWNrcykKKyAgICAgICAgICAgICgqaXQpLT5vblZlcnNpb25DaGFuZ2UobV9pbnRWZXJzaW9u
LCByZXF1ZXN0ZWRWZXJzaW9uKTsKICAgICB9CiAgICAgLy8gVGhlIHNwZWMgZGljdGF0ZXMgd2Ug
d2FpdCB1bnRpbCBhbGwgdGhlIHZlcnNpb24gY2hhbmdlIGV2ZW50cyBhcmUKICAgICAvLyBkZWxp
dmVyZWQgYW5kIHRoZW4gY2hlY2sgbV9kYXRhYmFzZUNhbGxiYWNrcy5lbXB0eSgpIGJlZm9yZSBw
cm9jZWVkaW5nCkBAIC00NzQsMTEgKzQ2NiwxMSBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZElt
cGw6OnJ1bkludFZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbihpbnQ2NF90IHJlcXVlc3RlZFZlcgog
ICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhlIGNhbGwgdG8gb25CbG9ja2VkIGFuZCBpbnN0ZWFkIHdh
aXQgdW50aWwgdGhlIGZyb250ZW5kCiAgICAgLy8gdGVsbHMgdXMgdGhhdCBhbGwgdGhlIGJsb2Nr
ZWQgZXZlbnRzIGhhdmUgYmVlbiBkZWxpdmVyZWQuIFNlZQogICAgIC8vIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTEzMAotICAgIGlmIChjb25uZWN0aW9uQ291bnQo
KSA+IDApCisgICAgaWYgKGNvbm5lY3Rpb25Db3VudCgpKQogICAgICAgICBjYWxsYmFja3MtPm9u
QmxvY2tlZChtX2ludFZlcnNpb24pOwogICAgIC8vIEZJWE1FOiBBZGQgdGVzdCBmb3IgbV9ydW5u
aW5nVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uLgotICAgIGlmIChtX3J1bm5pbmdWZXJzaW9uQ2hh
bmdlVHJhbnNhY3Rpb24gfHwgY29ubmVjdGlvbkNvdW50KCkgPiAwKSB7Ci0gICAgICAgIG1fcGVu
ZGluZ09wZW5XaXRoVmVyc2lvbkNhbGxzLmFwcGVuZChQZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2Fs
bDo6Y3JlYXRlKGNhbGxiYWNrcywgcmVxdWVzdGVkVmVyc2lvbikpOworICAgIGlmIChtX3J1bm5p
bmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24gfHwgY29ubmVjdGlvbkNvdW50KCkpIHsKKyAgICAg
ICAgbV9wZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbHMuYXBwZW5kKFBlbmRpbmdPcGVuV2l0aFZl
cnNpb25DYWxsOjpjcmVhdGUoY2FsbGJhY2tzLCBkYXRhYmFzZUNhbGxiYWNrcywgcmVxdWVzdGVk
VmVyc2lvbikpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC00OTcsMTQgKzQ4OSwxNiBA
QCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OnJ1bkludFZlcnNpb25DaGFuZ2VUcmFuc2Fj
dGlvbihpbnQ2NF90IHJlcXVlc3RlZFZlcgogICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0
aW9uOjpUUkFOU0FDVElPTl9JTkFDVElWRV9FUlI7CiAgICAgfQogICAgIEFTU0VSVF9XSVRIX01F
U1NBR0UoIW1fcGVuZGluZ1NlY29uZEhhbGZPcGVuV2l0aFZlcnNpb25DYWxscy5zaXplKCksICJt
X3BlbmRpbmdTZWNvbmRIYWxmT3BlbldpdGhWZXJzaW9uQ2FsbHMuc2l6ZSA9ICV6dSIsIG1fcGVu
ZGluZ1NlY29uZEhhbGZPcGVuV2l0aFZlcnNpb25DYWxscy5zaXplKCkpOwotICAgIG1fcGVuZGlu
Z1NlY29uZEhhbGZPcGVuV2l0aFZlcnNpb25DYWxscy5hcHBlbmQoUGVuZGluZ09wZW5XaXRoVmVy
c2lvbkNhbGw6OmNyZWF0ZShjYWxsYmFja3MsIHJlcXVlc3RlZFZlcnNpb24pKTsKKyAgICBtX3Bl
bmRpbmdTZWNvbmRIYWxmT3BlbldpdGhWZXJzaW9uQ2FsbHMuYXBwZW5kKFBlbmRpbmdPcGVuV2l0
aFZlcnNpb25DYWxsOjpjcmVhdGUoY2FsbGJhY2tzLCBkYXRhYmFzZUNhbGxiYWNrcywgcmVxdWVz
dGVkVmVyc2lvbikpOworICAgIG1fZGF0YWJhc2VDYWxsYmFja3NTZXQuYWRkKGRhdGFiYXNlQ2Fs
bGJhY2tzKTsKIH0KIAotdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpvcGVuQ29ubmVjdGlv
bldpdGhWZXJzaW9uKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmFja3MsIGludDY0
X3QgdmVyc2lvbikKK3ZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6b3BlbkNvbm5lY3Rpb25X
aXRoVmVyc2lvbihQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJhY2tzLCBQYXNzUmVm
UHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBwcnBEYXRhYmFzZUNhbGxiYWNrcywgaW50NjRfdCB2
ZXJzaW9uKQogewogICAgIFJlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcyA9IHBycENhbGxi
YWNrczsKKyAgICBSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IGRhdGFiYXNlQ2FsbGJhY2tz
ID0gcHJwRGF0YWJhc2VDYWxsYmFja3M7CiAgICAgaWYgKCFtX3BlbmRpbmdEZWxldGVDYWxscy5p
c0VtcHR5KCkgfHwgbV9ydW5uaW5nVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uIHx8ICFtX3BlbmRp
bmdTZXRWZXJzaW9uQ2FsbHMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIG1fcGVuZGluZ09wZW5XaXRo
VmVyc2lvbkNhbGxzLmFwcGVuZChQZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbDo6Y3JlYXRlKGNh
bGxiYWNrcywgdmVyc2lvbikpOworICAgICAgICBtX3BlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxs
cy5hcHBlbmQoUGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGw6OmNyZWF0ZShjYWxsYmFja3MsIGRh
dGFiYXNlQ2FsbGJhY2tzLCB2ZXJzaW9uKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAg
aWYgKG1faWQgPT0gSW52YWxpZElkKSB7CkBAIC01MTYsNyArNTEwLDcgQEAgdm9pZCBJREJEYXRh
YmFzZUJhY2tlbmRJbXBsOjpvcGVuQ29ubmVjdGlvbldpdGhWZXJzaW9uKFBhc3NSZWZQdHI8SURC
Q2FsbGJhY2tzPgogICAgICAgICB9CiAgICAgfQogICAgIGlmICh2ZXJzaW9uID4gbV9pbnRWZXJz
aW9uKSB7Ci0gICAgICAgIHJ1bkludFZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbih2ZXJzaW9uLCBj
YWxsYmFja3MpOworICAgICAgICBydW5JbnRWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24odmVyc2lv
biwgY2FsbGJhY2tzLCBkYXRhYmFzZUNhbGxiYWNrcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAgICAgaWYgKHZlcnNpb24gPCBtX2ludFZlcnNpb24pIHsKQEAgLTUyNCw3ICs1MTgsNyBAQCB2
b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6Om9wZW5Db25uZWN0aW9uV2l0aFZlcnNpb24oUGFz
c1JlZlB0cjxJREJDYWxsYmFja3M+CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgQVNTRVJU
KHZlcnNpb24gPT0gbV9pbnRWZXJzaW9uKTsKLSAgICArK21fcGVuZGluZ0Nvbm5lY3Rpb25Db3Vu
dDsKKyAgICBtX2RhdGFiYXNlQ2FsbGJhY2tzU2V0LmFkZChkYXRhYmFzZUNhbGxiYWNrcyk7CiAg
ICAgY2FsbGJhY2tzLT5vblN1Y2Nlc3ModGhpcyk7CiB9CiAKQEAgLTUzNSwxNSArNTI5LDE0IEBA
IHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6ZGVsZXRlRGF0YWJhc2UoUGFzc1JlZlB0cjxJ
REJDYWxsYmFja3M+IHBycENhbGxiYWNrCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgUmVm
UHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzID0gcHJwQ2FsbGJhY2tzOwotICAgIC8vIEZJWE1F
OiBPbmx5IGZpcmUgb25WZXJzaW9uQ2hhbmdlIGlmIHRoZXJlIHRoZSBjb25uZWN0aW9uIGlzbid0
IGluCi0gICAgLy8gdGhlIHByb2Nlc3Mgb2YgY2xvc2luZy4KLSAgICAvLyBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzExMjkKLSAgICBmb3IgKERhdGFiYXNlQ2FsbGJh
Y2tzU2V0Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1fZGF0YWJhc2VDYWxsYmFja3NTZXQuYmVnaW4o
KTsgaXQgIT0gbV9kYXRhYmFzZUNhbGxiYWNrc1NldC5lbmQoKTsgKytpdCkKKyAgICBmb3IgKERh
dGFiYXNlQ2FsbGJhY2tzU2V0Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1fZGF0YWJhc2VDYWxsYmFj
a3NTZXQuYmVnaW4oKTsgaXQgIT0gbV9kYXRhYmFzZUNhbGxiYWNrc1NldC5lbmQoKTsgKytpdCkg
eworICAgICAgICAvLyBGcm9udCBlbmQgZW5zdXJlcyB0aGUgZXZlbnQgaXMgbm90IGZpcmVkIGF0
IGNvbm5lY3Rpb25zIHRoYXQgaGF2ZSBjbG9zZVBlbmRpbmcgc2V0LgogICAgICAgICAoKml0KS0+
b25WZXJzaW9uQ2hhbmdlKCIiKTsKKyAgICB9CiAgICAgLy8gRklYTUU6IE9ubHkgZmlyZSBvbkJs
b2NrZWQgaWYgdGhlcmUgYXJlIG9wZW4gY29ubmVjdGlvbnMgYWZ0ZXIgdGhlCiAgICAgLy8gVmVy
c2lvbkNoYW5nZUV2ZW50cyBhcmUgcmVjZWl2ZWQsIG5vdCBqdXN0IHNldCB1cCB0byBmaXJlLgog
ICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTEzMAotICAg
IGlmIChjb25uZWN0aW9uQ291bnQoKSA+PSAxKSB7CisgICAgaWYgKGNvbm5lY3Rpb25Db3VudCgp
KSB7CiAgICAgICAgIG1fcGVuZGluZ0RlbGV0ZUNhbGxzLmFwcGVuZChQZW5kaW5nRGVsZXRlQ2Fs
bDo6Y3JlYXRlKGNhbGxiYWNrcykpOwogICAgICAgICBjYWxsYmFja3MtPm9uQmxvY2tlZCgpOwog
ICAgICAgICByZXR1cm47CkBAIC01NjQsMTggKzU1NywxOCBAQCB2b2lkIElEQkRhdGFiYXNlQmFj
a2VuZEltcGw6OmNsb3NlKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IHBycENhbGxi
YWNrcwogewogICAgIFJlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gY2FsbGJhY2tzID0gcHJw
Q2FsbGJhY2tzOwogICAgIEFTU0VSVChtX2RhdGFiYXNlQ2FsbGJhY2tzU2V0LmNvbnRhaW5zKGNh
bGxiYWNrcykpOworCiAgICAgbV9kYXRhYmFzZUNhbGxiYWNrc1NldC5yZW1vdmUoY2FsbGJhY2tz
KTsKKyAgICAvLyBGSVhNRTogSWYgY2FsbGJhY2tzIGlzIGFsc28gaGVsZCBpbiBtX3BlbmRpbmdT
ZWNvbmRIYWxmT3BlbldpdGhWZXJzaW9uQ2FsbHMKKyAgICAvLyBpdCBzaG91bGQgYmUgcmVtb3Zl
ZCBhbmQgb25FcnJvciBmaXJlZCBhZ2FpbnN0IGl0LgorCiAgICAgaWYgKGNvbm5lY3Rpb25Db3Vu
dCgpID4gMSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgVHJhbnNhY3Rpb25TZXQgdHJhbnNhY3Rp
b25zKG1fdHJhbnNhY3Rpb25zKTsKICAgICBwcm9jZXNzUGVuZGluZ0NhbGxzKCk7CiAKLSAgICBB
U1NFUlQobV90cmFuc2FjdGlvbnMuc2l6ZSgpIC0gdHJhbnNhY3Rpb25zLnNpemUoKSA8PSAxKTsK
LSAgICAvLyBGSVhNRTogSW5zdGVhZCBvZiByZWx5aW5nIG9uIHRyYW5zYWN0aW9ucy5zaXplKCks
IG1ha2UgY29ubmVjdGlvbkNvdW50Ci0gICAgLy8gYXdhcmUgb2YgaW4tZmxpZ2h0IHVwZ3JhZGVu
ZWVkZWQgZXZlbnRzIGFzIHdlbGwgYXMgaW4tZmxpZ2h0IHN1Y2Nlc3MKLSAgICAvLyBldmVudHMu
Ci0gICAgaWYgKCFjb25uZWN0aW9uQ291bnQoKSAmJiAhbV9wZW5kaW5nRGVsZXRlQ2FsbHMuc2l6
ZSgpICYmIG1fdHJhbnNhY3Rpb25zLnNpemUoKSA9PSB0cmFuc2FjdGlvbnMuc2l6ZSgpKSB7Cisg
ICAgaWYgKCFjb25uZWN0aW9uQ291bnQoKSAmJiAhbV9wZW5kaW5nT3BlbkNhbGxzLnNpemUoKSAm
JiAhbV9wZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbHMuc2l6ZSgpICYmICFtX3BlbmRpbmdEZWxl
dGVDYWxscy5zaXplKCkpIHsKKyAgICAgICAgVHJhbnNhY3Rpb25TZXQgdHJhbnNhY3Rpb25zKG1f
dHJhbnNhY3Rpb25zKTsKICAgICAgICAgZm9yIChUcmFuc2FjdGlvblNldDo6Y29uc3RfaXRlcmF0
b3IgaXQgPSB0cmFuc2FjdGlvbnMuYmVnaW4oKTsgaXQgIT0gdHJhbnNhY3Rpb25zLmVuZCgpOyAr
K2l0KQogICAgICAgICAgICAgKCppdCktPmFib3J0KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuaAppbmRl
eCA3ZjMxY2IwNGVhNGVkYmZjZDY3MjE3YzE5YzhjYTdhMmM5NzNiZTExLi4yMmNjYzQzMjIwYjUw
NGZlNzA2ODU2N2I1OWE0NzYyNTVlZWE4NTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oCkBAIC01NSw5
ICs1NSw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgaW50NjRfdCBJbnZhbGlkSWQgPSAw
OwogICAgIGludDY0X3QgaWQoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9CiAKLSAgICB2b2lkIHJl
Z2lzdGVyRnJvbnRlbmRDYWxsYmFja3MoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4p
OwotICAgIHZvaWQgb3BlbkNvbm5lY3Rpb24oUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+KTsKLSAg
ICB2b2lkIG9wZW5Db25uZWN0aW9uV2l0aFZlcnNpb24oUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+
LCBpbnQ2NF90IHZlcnNpb24pOworICAgIHZvaWQgb3BlbkNvbm5lY3Rpb24oUGFzc1JlZlB0cjxJ
REJDYWxsYmFja3M+LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPik7CisgICAgdm9p
ZCBvcGVuQ29ubmVjdGlvbldpdGhWZXJzaW9uKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgUGFz
c1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4sIGludDY0X3QgdmVyc2lvbik7CiAgICAgdm9p
ZCBkZWxldGVEYXRhYmFzZShQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pOwogCiAgICAgLy8gSURC
RGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlCkBAIC03OSw5ICs3OCw5IEBAIHByaXZhdGU6CiAgICAg
SURCRGF0YWJhc2VCYWNrZW5kSW1wbChjb25zdCBTdHJpbmcmIG5hbWUsIElEQkJhY2tpbmdTdG9y
ZSogZGF0YWJhc2UsIElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3IqLCBJREJGYWN0b3J5QmFja2Vu
ZEltcGwqLCBjb25zdCBTdHJpbmcmIHVuaXF1ZUlkZW50aWZpZXIpOwogCiAgICAgYm9vbCBvcGVu
SW50ZXJuYWwoKTsKLSAgICB2b2lkIHJ1bkludFZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbihpbnQ2
NF90IHJlcXVlc3RlZFZlcnNpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPik7CisgICAgdm9p
ZCBydW5JbnRWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24oaW50NjRfdCByZXF1ZXN0ZWRWZXJzaW9u
LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFj
a3M+KTsKICAgICB2b2lkIGxvYWRPYmplY3RTdG9yZXMoKTsKLSAgICBpbnQzMl90IGNvbm5lY3Rp
b25Db3VudCgpOworICAgIHNpemVfdCBjb25uZWN0aW9uQ291bnQoKTsKICAgICB2b2lkIHByb2Nl
c3NQZW5kaW5nQ2FsbHMoKTsKIAogICAgIHN0YXRpYyB2b2lkIGNyZWF0ZU9iamVjdFN0b3JlSW50
ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNr
ZW5kSW1wbD4sIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbD4sIFBhc3NSZWZQ
dHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4pOwpAQCAtMTI3LDEwICsxMjYsNiBAQCBwcml2
YXRlOgogICAgIGNsYXNzIFBlbmRpbmdEZWxldGVDYWxsOwogICAgIERlcXVlPFJlZlB0cjxQZW5k
aW5nRGVsZXRlQ2FsbD4gPiBtX3BlbmRpbmdEZWxldGVDYWxsczsKIAotICAgIC8vIEZJWE1FOiBF
bGltaW5hdGUgdGhlIGxpbWJvIHN0YXRlIGJldHdlZW4gb3BlbkNvbm5lY3Rpb24oKSBhbmQgcmVn
aXN0ZXJGcm9udGVuZENhbGxiYWNrcygpCi0gICAgLy8gdGhhdCB0aGlzIGNvdW50ZXIgdHJhY2tz
LgotICAgIGludDMyX3QgbV9wZW5kaW5nQ29ubmVjdGlvbkNvdW50OwotCiAgICAgdHlwZWRlZiBM
aXN0SGFzaFNldDxSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+ID4gRGF0YWJhc2VDYWxsYmFj
a3NTZXQ7CiAgICAgRGF0YWJhc2VDYWxsYmFja3NTZXQgbV9kYXRhYmFzZUNhbGxiYWNrc1NldDsK
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRh
YmFzZUJhY2tlbmRJbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZS5oCmluZGV4IDBmNmIzNWQ2MDkzNjRkY2FjYmMx
NzE0NjMxZmQxNmM1OTFkY2NkNTUuLmU0ZmMwY2M4YTcyYWE5NThlMzI3MzkwODQ0MzU1YTE5MDVl
ZDc3MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRh
dGFiYXNlQmFja2VuZEludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZS5oCkBAIC02MCw4ICs2MCw2IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0VmVyc2lvbihjb25zdCBTdHJpbmcmIHZlcnNpb24s
IFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNr
cz4sIEV4Y2VwdGlvbkNvZGUmKSA9IDA7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQlRyYW5z
YWN0aW9uQmFja2VuZEludGVyZmFjZT4gdHJhbnNhY3Rpb24oRE9NU3RyaW5nTGlzdCogc3RvcmVO
YW1lcywgdW5zaWduZWQgc2hvcnQgbW9kZSwgRXhjZXB0aW9uQ29kZSYpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgY2xvc2UoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4pID0gMDsKLQot
ICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckZyb250ZW5kQ2FsbGJhY2tzKFBhc3NSZWZQdHI8SURC
RGF0YWJhc2VDYWxsYmFja3M+KSA9IDA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUNh
bGxiYWNrc0ltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0
YWJhc2VDYWxsYmFja3NJbXBsLmNwcAppbmRleCBmNjU2NWRjYTFiZDgyMmZlNmRjMTM1OTY4YzNi
MGVkYjk5OTVhM2I4Li45NzBkM2ExNjdjYWY5OTZjN2YwMzFmZjU0YTRmMTU5MjQ5ZjFhYTBiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUNh
bGxiYWNrc0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkRhdGFiYXNlQ2FsbGJhY2tzSW1wbC5jcHAKQEAgLTMyLDEzICszMiwxMyBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLVBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3NJbXBsPiBJREJE
YXRhYmFzZUNhbGxiYWNrc0ltcGw6OmNyZWF0ZShJREJEYXRhYmFzZSogZGF0YWJhc2UpCitQYXNz
UmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbD4gSURCRGF0YWJhc2VDYWxsYmFja3NJbXBs
OjpjcmVhdGUoKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgSURCRGF0YWJhc2VDYWxsYmFj
a3NJbXBsKGRhdGFiYXNlKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJEYXRhYmFzZUNh
bGxiYWNrc0ltcGwoKSk7CiB9CiAKLUlEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbDo6SURCRGF0YWJh
c2VDYWxsYmFja3NJbXBsKElEQkRhdGFiYXNlKiBkYXRhYmFzZSkKLSAgICA6IG1fZGF0YWJhc2Uo
ZGF0YWJhc2UpCitJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGw6OklEQkRhdGFiYXNlQ2FsbGJhY2tz
SW1wbCgpCisgICAgOiBtX2RhdGFiYXNlKDApCiB7CiB9CiAKQEAgLTY0LDEwICs2NCwxMSBAQCB2
b2lkIElEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbDo6b25WZXJzaW9uQ2hhbmdlKGludDY0X3Qgb2xk
VmVyc2lvbiwgaW50NjRfdCBuZXdWZQogICAgICAgICBtX2RhdGFiYXNlLT5vblZlcnNpb25DaGFu
Z2Uob2xkVmVyc2lvbiwgbmV3VmVyc2lvbik7CiB9CiAKLXZvaWQgSURCRGF0YWJhc2VDYWxsYmFj
a3NJbXBsOjp1bnJlZ2lzdGVyRGF0YWJhc2UoSURCRGF0YWJhc2UqIGRhdGFiYXNlKQordm9pZCBJ
REJEYXRhYmFzZUNhbGxiYWNrc0ltcGw6OmNvbm5lY3QoSURCRGF0YWJhc2UqIGRhdGFiYXNlKQog
ewotICAgIEFTU0VSVF9VTlVTRUQoZGF0YWJhc2UsIGRhdGFiYXNlID09IG1fZGF0YWJhc2UpOwot
ICAgIG1fZGF0YWJhc2UgPSAwOworICAgIEFTU0VSVCghbV9kYXRhYmFzZSk7CisgICAgQVNTRVJU
KGRhdGFiYXNlKTsKKyAgICBtX2RhdGFiYXNlID0gZGF0YWJhc2U7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsLmgKaW5kZXggNzkyYmUzYWQ3NmY1NGYwMzU5
ZDZhZjE2MDNlNWRkOTNiOTFkNmJhMS4uNzQ5NzA3MDEwZGJmOTc3MjUxMWI2ZDQ3M2NlYWQxMGIy
ODI1NzI4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
RGF0YWJhc2VDYWxsYmFja3NJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsLmgKQEAgLTM4LDE4ICszOCwyMCBAQCBjbGFz
cyBJREJEYXRhYmFzZTsKIAogY2xhc3MgSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsIDogcHVibGlj
IElEQkRhdGFiYXNlQ2FsbGJhY2tzIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJ
REJEYXRhYmFzZUNhbGxiYWNrc0ltcGw+IGNyZWF0ZShJREJEYXRhYmFzZSopOworICAgIHN0YXRp
YyBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbD4gY3JlYXRlKCk7CiAgICAgdmly
dHVhbCB+SURCRGF0YWJhc2VDYWxsYmFja3NJbXBsKCk7CiAKKyAgICAvLyBJREJEYXRhYmFzZUNh
bGxiYWNrcwogICAgIHZpcnR1YWwgdm9pZCBvbkZvcmNlZENsb3NlKCk7CiAgICAgdmlydHVhbCB2
b2lkIG9uVmVyc2lvbkNoYW5nZShjb25zdCBTdHJpbmcmIHZlcnNpb24pOwogICAgIHZpcnR1YWwg
dm9pZCBvblZlcnNpb25DaGFuZ2UoaW50NjRfdCBvbGRWZXJzaW9uLCBpbnQ2NF90IG5ld1ZlcnNp
b24pOwotICAgIHZvaWQgdW5yZWdpc3RlckRhdGFiYXNlKElEQkRhdGFiYXNlKik7CisKKyAgICB2
b2lkIGNvbm5lY3QoSURCRGF0YWJhc2UqKTsKIAogcHJpdmF0ZToKLSAgICBJREJEYXRhYmFzZUNh
bGxiYWNrc0ltcGwoSURCRGF0YWJhc2UqKTsKKyAgICBJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwo
KTsKIAotICAgIC8vIG1fZGF0YWJhc2UgaGFzIGEgUmVmUHRyIHRvIHRoaXMsIHNvIHVzZSBhIHdl
YWsgcG9pbnRlciB0byBhdm9pZCBhIGN5Y2xlLgorICAgIC8vIFRoZSBpbml0aWFsIElEQk9wZW5E
QlJlcXVlc3Qgb3IgZmluYWwgSURCRGF0YWJhc2UgbWFpbnRhaW5zIGEgUmVmUHRyIHRvIHRoaXMK
ICAgICBJREJEYXRhYmFzZSogbV9kYXRhYmFzZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5jcHAKaW5kZXggYzIwNjM1ZjJhYTM3ZGQ5NTFj
M2M4NGY0MzQ2MzQxMTA2MGUxMTdhMC4uNGUzMDIzMTY3MTk5MDMyZDY0ZGM5YjhiZjgxMDRmMDAz
MDY5MWNkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
RmFjdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFj
dG9yeS5jcHAKQEAgLTEyMCw4ICsxMjAsOSBAQCBQYXNzUmVmUHRyPElEQk9wZW5EQlJlcXVlc3Q+
IElEQkZhY3Rvcnk6Om9wZW4oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgYwogICAg
IGlmICghaXNDb250ZXh0VmFsaWQoY29udGV4dCkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAg
UmVmUHRyPElEQk9wZW5EQlJlcXVlc3Q+IHJlcXVlc3QgPSBJREJPcGVuREJSZXF1ZXN0OjpjcmVh
dGUoY29udGV4dCwgSURCQW55OjpjcmVhdGUodGhpcyksIHZlcnNpb24pOwotICAgIG1fYmFja2Vu
ZC0+b3BlbihuYW1lLCB2ZXJzaW9uLCByZXF1ZXN0LCBjb250ZXh0LT5zZWN1cml0eU9yaWdpbigp
LCBjb250ZXh0LCBnZXRJbmRleGVkREJEYXRhYmFzZVBhdGgoY29udGV4dCkpOworICAgIFJlZlB0
cjxJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGw+IGRhdGFiYXNlQ2FsbGJhY2tzID0gSURCRGF0YWJh
c2VDYWxsYmFja3NJbXBsOjpjcmVhdGUoKTsKKyAgICBSZWZQdHI8SURCT3BlbkRCUmVxdWVzdD4g
cmVxdWVzdCA9IElEQk9wZW5EQlJlcXVlc3Q6OmNyZWF0ZShjb250ZXh0LCBJREJBbnk6OmNyZWF0
ZSh0aGlzKSwgZGF0YWJhc2VDYWxsYmFja3MsIHZlcnNpb24pOworICAgIG1fYmFja2VuZC0+b3Bl
bihuYW1lLCB2ZXJzaW9uLCByZXF1ZXN0LCBkYXRhYmFzZUNhbGxiYWNrcywgY29udGV4dC0+c2Vj
dXJpdHlPcmlnaW4oKSwgY29udGV4dCwgZ2V0SW5kZXhlZERCRGF0YWJhc2VQYXRoKGNvbnRleHQp
KTsKICAgICByZXR1cm4gcmVxdWVzdDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJbXBsLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5jcHAKaW5kZXggOGRh
NWMwMmU0MjNmNmY2NGU1Nzk3MzBkYjczZmEyOWVjMmJlNDYwNi4uYzdlZjg2MGUxM2UyZDE4MTc5
YWU1ZWNjMGM3NTk3MDliODg0M2RlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5QmFja2VuZEltcGwuY3BwCkBAIC0xNTAsNyAr
MTUwLDcgQEAgUGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmU+IElEQkZhY3RvcnlCYWNrZW5kSW1w
bDo6b3BlbkJhY2tpbmdTdG9yZShQYXNzUmVmUHRyPFMKICAgICByZXR1cm4gMDsKIH0KIAotdm9p
ZCBJREJGYWN0b3J5QmFja2VuZEltcGw6Om9wZW4oY29uc3QgU3RyaW5nJiBuYW1lLCBpbnQ2NF90
IHZlcnNpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIFBhc3NSZWZQdHI8
U2VjdXJpdHlPcmlnaW4+IHBycFNlY3VyaXR5T3JpZ2luLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgY29uc3QgU3RyaW5nJiBkYXRhRGlyZWN0b3J5KQordm9pZCBJREJGYWN0b3J5QmFja2VuZElt
cGw6Om9wZW4oY29uc3QgU3RyaW5nJiBuYW1lLCBpbnQ2NF90IHZlcnNpb24sIFBhc3NSZWZQdHI8
SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+
IGRhdGFiYXNlQ2FsbGJhY2tzLCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBwcnBTZWN1cml0
eU9yaWdpbiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgZGF0YURpcmVj
dG9yeSkKIHsKICAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luID0gcHJw
U2VjdXJpdHlPcmlnaW47CiAgICAgY29uc3QgU3RyaW5nIHVuaXF1ZUlkZW50aWZpZXIgPSBjb21w
dXRlVW5pcXVlSWRlbnRpZmllcihuYW1lLCBzZWN1cml0eU9yaWdpbi5nZXQoKSk7CkBAIC0xNzUs
OSArMTc1LDkgQEAgdm9pZCBJREJGYWN0b3J5QmFja2VuZEltcGw6Om9wZW4oY29uc3QgU3RyaW5n
JiBuYW1lLCBpbnQ2NF90IHZlcnNpb24sIFBhc3NSZWZQdHIKICAgICAgICAgZGF0YWJhc2VCYWNr
ZW5kID0gaXQtPnNlY29uZDsKIAogICAgIGlmICh2ZXJzaW9uID09IElEQkRhdGFiYXNlTWV0YWRh
dGE6Ok5vSW50VmVyc2lvbikKLSAgICAgICAgZGF0YWJhc2VCYWNrZW5kLT5vcGVuQ29ubmVjdGlv
bihjYWxsYmFja3MpOworICAgICAgICBkYXRhYmFzZUJhY2tlbmQtPm9wZW5Db25uZWN0aW9uKGNh
bGxiYWNrcywgZGF0YWJhc2VDYWxsYmFja3MpOwogICAgIGVsc2UKLSAgICAgICAgZGF0YWJhc2VC
YWNrZW5kLT5vcGVuQ29ubmVjdGlvbldpdGhWZXJzaW9uKGNhbGxiYWNrcywgdmVyc2lvbik7Cisg
ICAgICAgIGRhdGFiYXNlQmFja2VuZC0+b3BlbkNvbm5lY3Rpb25XaXRoVmVyc2lvbihjYWxsYmFj
a3MsIGRhdGFiYXNlQ2FsbGJhY2tzLCB2ZXJzaW9uKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFj
dG9yeUJhY2tlbmRJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJG
YWN0b3J5QmFja2VuZEltcGwuaAppbmRleCBjYWQzYjVhMjRiMjk5YTkyOTljMmFkMjk0ZTNiMmVh
MDRjZmQ3MmE1Li4zYWUwNzAzMTBkYWU4NzY0MzU5NmNhOWIyOTkzYzMzYTQ2NzBiMWIzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5QmFja2Vu
ZEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5
QmFja2VuZEltcGwuaApAQCAtNTcsNyArNTcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IHJlbW92ZUlEQkJhY2tpbmdTdG9yZShjb25zdCBTdHJpbmcmIGZpbGVJZGVudGlmaWVyKTsKIAog
ICAgIHZpcnR1YWwgdm9pZCBnZXREYXRhYmFzZU5hbWVzKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tz
PiwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBj
b25zdCBTdHJpbmcmIGRhdGFEaXIpOwotICAgIHZpcnR1YWwgdm9pZCBvcGVuKGNvbnN0IFN0cmlu
ZyYgbmFtZSwgaW50NjRfdCB2ZXJzaW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIFBhc3NS
ZWZQdHI8U2VjdXJpdHlPcmlnaW4+LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3Ry
aW5nJiBkYXRhRGlyKTsKKyAgICB2aXJ0dWFsIHZvaWQgb3Blbihjb25zdCBTdHJpbmcmIG5hbWUs
IGludDY0X3QgdmVyc2lvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBQYXNzUmVmUHRyPElE
QkRhdGFiYXNlQ2FsbGJhY2tzPiwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4sIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIGRhdGFEaXIpOwogICAgIHZpcnR1YWwgdm9p
ZCBkZWxldGVEYXRhYmFzZShjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8SURCQ2FsbGJh
Y2tzPiwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBjb25zdCBTdHJpbmcmIGRhdGFEaXIpOwogCiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5QmFja2VuZEludGVyZmFjZS5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJbnRl
cmZhY2UuaAppbmRleCA0ZWE1ZDhhMzMwZmQwNDFhZjUxY2IyYTk1NDRlYTQ4YWNmNjY2ZmVmLi4w
YWEzYmEyYjc4MGQwNzk3NjYzZjYwZjU4MjNhMWRiMmNhYzY4ODNjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5QmFja2VuZEludGVyZmFjZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnlCYWNrZW5k
SW50ZXJmYWNlLmgKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfklEQkZh
Y3RvcnlCYWNrZW5kSW50ZXJmYWNlKCkgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZ2V0RGF0YWJh
c2VOYW1lcyhQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmln
aW4+LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBkYXRhRGlyKSA9IDA7
Ci0gICAgdmlydHVhbCB2b2lkIG9wZW4oY29uc3QgU3RyaW5nJiBuYW1lLCBpbnQ2NF90IHZlcnNp
b24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4s
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIGRhdGFEaXIpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgb3Blbihjb25zdCBTdHJpbmcmIG5hbWUsIGludDY0X3QgdmVyc2lvbiwg
UGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tz
PiwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBj
b25zdCBTdHJpbmcmIGRhdGFEaXIpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlRGF0YWJh
c2UoY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIFBhc3NSZWZQ
dHI8U2VjdXJpdHlPcmlnaW4+LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5n
JiBkYXRhRGlyKSA9IDA7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJPcGVuREJSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQk9wZW5EQlJlcXVlc3QuY3BwCmluZGV4IGU4OWE3NGNmZDliZmI3ZmY3NjNi
YTZlZTI1ZmQyMmJjZjI0Njk1MGEuLjZlZjE2Y2YwMjkzYTY5MTkwZjk2Y2QzYTg1YWMzNTI3MjNl
YmI2ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9w
ZW5EQlJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
Qk9wZW5EQlJlcXVlc3QuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaWYgRU5BQkxFKElOREVYRURf
REFUQUJBU0UpCiAKICNpbmNsdWRlICJJREJEYXRhYmFzZS5oIgorI2luY2x1ZGUgIklEQkRhdGFi
YXNlQ2FsbGJhY2tzSW1wbC5oIgogI2luY2x1ZGUgIklEQlBlbmRpbmdUcmFuc2FjdGlvbk1vbml0
b3IuaCIKICNpbmNsdWRlICJJREJUcmFjaW5nLmgiCiAjaW5jbHVkZSAiSURCVXBncmFkZU5lZWRl
ZEV2ZW50LmgiCkBAIC0zNiwxNSArMzcsMTYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1Q
YXNzUmVmUHRyPElEQk9wZW5EQlJlcXVlc3Q+IElEQk9wZW5EQlJlcXVlc3Q6OmNyZWF0ZShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQkFueT4gc291cmNlLCBp
bnQ2NF90IHZlcnNpb24pCitQYXNzUmVmUHRyPElEQk9wZW5EQlJlcXVlc3Q+IElEQk9wZW5EQlJl
cXVlc3Q6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRy
PElEQkFueT4gc291cmNlLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbD4gY2Fs
bGJhY2tzLCBpbnQ2NF90IHZlcnNpb24pCiB7Ci0gICAgUmVmUHRyPElEQk9wZW5EQlJlcXVlc3Q+
IHJlcXVlc3QoYWRvcHRSZWYobmV3IElEQk9wZW5EQlJlcXVlc3QoY29udGV4dCwgc291cmNlLCB2
ZXJzaW9uKSkpOworICAgIFJlZlB0cjxJREJPcGVuREJSZXF1ZXN0PiByZXF1ZXN0KGFkb3B0UmVm
KG5ldyBJREJPcGVuREJSZXF1ZXN0KGNvbnRleHQsIHNvdXJjZSwgY2FsbGJhY2tzLCB2ZXJzaW9u
KSkpOwogICAgIHJlcXVlc3QtPnN1c3BlbmRJZk5lZWRlZCgpOwogICAgIHJldHVybiByZXF1ZXN0
LnJlbGVhc2UoKTsKIH0KIAotSURCT3BlbkRCUmVxdWVzdDo6SURCT3BlbkRCUmVxdWVzdChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQkFueT4gc291cmNlLCBp
bnQ2NF90IHZlcnNpb24pCitJREJPcGVuREJSZXF1ZXN0OjpJREJPcGVuREJSZXF1ZXN0KFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8SURCQW55PiBzb3VyY2UsIFBh
c3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3NJbXBsPiBjYWxsYmFja3MsIGludDY0X3QgdmVy
c2lvbikKICAgICA6IElEQlJlcXVlc3QoY29udGV4dCwgc291cmNlLCBJREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbnRlcmZhY2U6Ok5vcm1hbFRhc2ssIDApCisgICAgLCBtX2RhdGFiYXNlQ2FsbGJhY2tz
KGNhbGxiYWNrcykKICAgICAsIG1fdmVyc2lvbih2ZXJzaW9uKQogewogICAgIEFTU0VSVCghbV9y
ZXN1bHQpOwpAQCAtNzIsOSArNzQsMTMgQEAgdm9pZCBJREJPcGVuREJSZXF1ZXN0OjpvblVwZ3Jh
ZGVOZWVkZWQoaW50NjRfdCBvbGRWZXJzaW9uLCBQYXNzUmVmUHRyPElEQlRyYW5zYWMKICAgICBp
ZiAoIXNob3VsZEVucXVldWVFdmVudCgpKQogICAgICAgICByZXR1cm47CiAKKyAgICBBU1NFUlQo
bV9kYXRhYmFzZUNhbGxiYWNrcyk7CisKICAgICBSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50
ZXJmYWNlPiBkYXRhYmFzZUJhY2tlbmQgPSBwcnBEYXRhYmFzZUJhY2tlbmQ7CiAgICAgUmVmUHRy
PElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gdHJhbnNhY3Rpb25CYWNrZW5kID0gcHJw
VHJhbnNhY3Rpb25CYWNrZW5kOwotICAgIFJlZlB0cjxJREJEYXRhYmFzZT4gaWRiRGF0YWJhc2Ug
PSBJREJEYXRhYmFzZTo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgZGF0YWJhc2VC
YWNrZW5kKTsKKyAgICBSZWZQdHI8SURCRGF0YWJhc2U+IGlkYkRhdGFiYXNlID0gSURCRGF0YWJh
c2U6OmNyZWF0ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGRhdGFiYXNlQmFja2VuZCwgbV9k
YXRhYmFzZUNhbGxiYWNrcyk7CisgICAgbV9kYXRhYmFzZUNhbGxiYWNrcy0+Y29ubmVjdChpZGJE
YXRhYmFzZS5nZXQoKSk7CisgICAgbV9kYXRhYmFzZUNhbGxiYWNrcyA9IDA7CiAKICAgICBSZWZQ
dHI8SURCVHJhbnNhY3Rpb24+IGZyb250ZW5kID0gSURCVHJhbnNhY3Rpb246OmNyZWF0ZShzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCksIHRyYW5zYWN0aW9uQmFja2VuZCwgSURCVHJhbnNhY3Rpb246
OlZFUlNJT05fQ0hBTkdFLCBpZGJEYXRhYmFzZS5nZXQoKSwgdGhpcyk7CiAgICAgdHJhbnNhY3Rp
b25CYWNrZW5kLT5zZXRDYWxsYmFja3MoZnJvbnRlbmQuZ2V0KCkpOwpAQCAtOTgsMTEgKzEwNCwx
NCBAQCB2b2lkIElEQk9wZW5EQlJlcXVlc3Q6Om9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQkRhdGFi
YXNlQmFja2VuZEludGVyZmFjZT4gYmFja2VuZAogICAgIGlmIChtX3Jlc3VsdCkgewogICAgICAg
ICBpZGJEYXRhYmFzZSA9IG1fcmVzdWx0LT5pZGJEYXRhYmFzZSgpOwogICAgICAgICBBU1NFUlQo
aWRiRGF0YWJhc2UpOworICAgICAgICBBU1NFUlQoIW1fZGF0YWJhc2VDYWxsYmFja3MpOwogICAg
IH0gZWxzZSB7Ci0gICAgICAgIGlkYkRhdGFiYXNlID0gSURCRGF0YWJhc2U6OmNyZWF0ZShzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCksIGJhY2tlbmQpOworICAgICAgICBBU1NFUlQobV9kYXRhYmFz
ZUNhbGxiYWNrcyk7CisgICAgICAgIGlkYkRhdGFiYXNlID0gSURCRGF0YWJhc2U6OmNyZWF0ZShz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGJhY2tlbmQsIG1fZGF0YWJhc2VDYWxsYmFja3MpOwor
ICAgICAgICBtX2RhdGFiYXNlQ2FsbGJhY2tzLT5jb25uZWN0KGlkYkRhdGFiYXNlLmdldCgpKTsK
KyAgICAgICAgbV9kYXRhYmFzZUNhbGxiYWNrcyA9IDA7CiAgICAgICAgIG1fcmVzdWx0ID0gSURC
QW55OjpjcmVhdGUoaWRiRGF0YWJhc2UuZ2V0KCkpOwogICAgIH0KLSAgICBpZGJEYXRhYmFzZS0+
cmVnaXN0ZXJGcm9udGVuZENhbGxiYWNrcygpOwogICAgIGVucXVldWVFdmVudChFdmVudDo6Y3Jl
YXRlKGV2ZW50TmFtZXMoKS5zdWNjZXNzRXZlbnQsIGZhbHNlLCBmYWxzZSkpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPcGVuREJSZXF1ZXN0
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPcGVuREJSZXF1ZXN0LmgK
aW5kZXggYzg3ZGI3ZWQxYmRkMmQ0MDUzZTc0YzEwMmEyZWM2ZDY5NTk3MmUzZi4uMWU4NGI1NGM5
ZGE1MDdhZjU1MTljODA4ODk4NDZkNDJlZmRlZDQ5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT3BlbkRCUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9wZW5EQlJlcXVlc3QuaApAQCAtMzIsOSArMzIsMTEg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBJREJEYXRhYmFzZUNhbGxiYWNrc0lt
cGw7CisKIGNsYXNzIElEQk9wZW5EQlJlcXVlc3QgOiBwdWJsaWMgSURCUmVxdWVzdCB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SURCT3BlbkRCUmVxdWVzdD4gY3JlYXRlKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQkFueT4gc291cmNlLCBpbnQ2NF90IHZl
cnNpb24pOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQk9wZW5EQlJlcXVlc3Q+IGNyZWF0ZShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJBbnk+IHNvdXJjZSwgUGFzc1Jl
ZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGw+LCBpbnQ2NF90IHZlcnNpb24pOwogICAgIHZp
cnR1YWwgfklEQk9wZW5EQlJlcXVlc3QoKTsKIAogICAgIHVzaW5nIElEQlJlcXVlc3Q6Om9uU3Vj
Y2VzczsKQEAgLTUzLDggKzU1LDkgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgYm9vbCBzaG91
bGRFbnF1ZXVlRXZlbnQoKSBjb25zdCBPVkVSUklERTsKIAogcHJpdmF0ZToKLSAgICBJREJPcGVu
REJSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQkFueT4gc291
cmNlLCBpbnQ2NF90IHZlcnNpb24pOworICAgIElEQk9wZW5EQlJlcXVlc3QoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCQW55PiBzb3VyY2UsIFBhc3NSZWZQdHI8SURCRGF0
YWJhc2VDYWxsYmFja3NJbXBsPiwgaW50NjRfdCB2ZXJzaW9uKTsKIAorICAgIFJlZlB0cjxJREJE
YXRhYmFzZUNhbGxiYWNrc0ltcGw+IG1fZGF0YWJhc2VDYWxsYmFja3M7CiAgICAgaW50NjRfdCBt
X3ZlcnNpb247CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJUcmFuc2FjdGlvbi5jcHAKaW5kZXggMjFlNWYzMjhlMzQ1NTM4OWNlMDg1NjYyMDcwZWVl
YTE0NjU1ZjYyOC4uZTFlMDVmMWYyODg2OGRiMmQyODlmMmVmMDVjZWI0MmY1MjUwZWNjZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9u
LmNwcApAQCAtMjk0LDEyICsyOTQsMTAgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6b25BYm9ydCgp
CiAgICAgfQogICAgIG1fb2JqZWN0U3RvcmVDbGVhbnVwTWFwLmNsZWFyKCk7CiAgICAgY2xvc2VP
cGVuQ3Vyc29ycygpOwotICAgIG1fZGF0YWJhc2UtPnRyYW5zYWN0aW9uRmluaXNoZWQodGhpcyk7
Ci0KLSAgICBpZiAobV9jb250ZXh0U3RvcHBlZCB8fCAhc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
KQotICAgICAgICByZXR1cm47CiAKKyAgICAvLyBFbnF1ZXVlIGV2ZW50cyBiZWZvcmUgbm90aWZ5
aW5nIGRhdGFiYXNlLCBhcyBkYXRhYmFzZSBtYXkgY2xvc2Ugd2hpY2ggZW5xdWV1ZXMgbW9yZSBl
dmVudHMgYW5kIG9yZGVyIG1hdHRlcnMuCiAgICAgZW5xdWV1ZUV2ZW50KEV2ZW50OjpjcmVhdGUo
ZXZlbnROYW1lcygpLmFib3J0RXZlbnQsIHRydWUsIGZhbHNlKSk7CisgICAgbV9kYXRhYmFzZS0+
dHJhbnNhY3Rpb25GaW5pc2hlZCh0aGlzKTsKIH0KIAogdm9pZCBJREJUcmFuc2FjdGlvbjo6b25D
b21wbGV0ZSgpCkBAIC0zMDksMTIgKzMwNywxMCBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpvbkNv
bXBsZXRlKCkKICAgICBtX3N0YXRlID0gRmluaXNoaW5nOwogICAgIG1fb2JqZWN0U3RvcmVDbGVh
bnVwTWFwLmNsZWFyKCk7CiAgICAgY2xvc2VPcGVuQ3Vyc29ycygpOwotICAgIG1fZGF0YWJhc2Ut
PnRyYW5zYWN0aW9uRmluaXNoZWQodGhpcyk7Ci0KLSAgICBpZiAobV9jb250ZXh0U3RvcHBlZCB8
fCAhc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQotICAgICAgICByZXR1cm47CiAKKyAgICAvLyBF
bnF1ZXVlIGV2ZW50cyBiZWZvcmUgbm90aWZ5aW5nIGRhdGFiYXNlLCBhcyBkYXRhYmFzZSBtYXkg
Y2xvc2Ugd2hpY2ggZW5xdWV1ZXMgbW9yZSBldmVudHMgYW5kIG9yZGVyIG1hdHRlcnMuCiAgICAg
ZW5xdWV1ZUV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmNvbXBsZXRlRXZlbnQsIGZh
bHNlLCBmYWxzZSkpOworICAgIG1fZGF0YWJhc2UtPnRyYW5zYWN0aW9uRmluaXNoZWQodGhpcyk7
CiB9CiAKIGJvb2wgSURCVHJhbnNhY3Rpb246Omhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdl
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50
LmNwcAppbmRleCA4Nzk2MWQ4MmMwOTBiZjIyZjU3N2MzZTRiZWU3ZTI1MWY3N2VmMWQ1Li4yZWVm
MmNmZDFlZDE5Y2FmZjAwMDFhNmNlYTBhY2RmZjFlYjk5YTkyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKQEAgLTE4Niwz
NSArMTg2LDM1IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fc2VjdXJpdHlPcmlnaW47CiB9Owog
Ci1jbGFzcyBFeGVjdXRhYmxlV2l0aERhdGFiYXNlIDogcHVibGljIFJlZkNvdW50ZWQ8RXhlY3V0
YWJsZVdpdGhEYXRhYmFzZT4gewotcHVibGljOgotICAgIHZpcnR1YWwgfkV4ZWN1dGFibGVXaXRo
RGF0YWJhc2UoKSB7IH07Ci0gICAgdm9pZCBzdGFydChJREJGYWN0b3J5QmFja2VuZEludGVyZmFj
ZSosIFNlY3VyaXR5T3JpZ2luKiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmlu
ZyYgZGF0YWJhc2VOYW1lKTsKLSAgICB2aXJ0dWFsIHZvaWQgZXhlY3V0ZShQYXNzUmVmUHRyPElE
QkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4pID0gMDsKLX07Ci0KIGNsYXNzIERhdGFiYXNlQ29u
bmVjdGlvbiB7CiBwdWJsaWM6CiAgICAgRGF0YWJhc2VDb25uZWN0aW9uKCkKICAgICAgICAgOiBt
X2lkYkRhdGFiYXNlQ2FsbGJhY2tzKEluc3BlY3RvcklEQkRhdGFiYXNlQ2FsbGJhY2tzOjpjcmVh
dGUoKSkgeyB9CiAKLSAgICB2b2lkIGNvbm5lY3QoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tl
bmRJbnRlcmZhY2U+IGlkYkRhdGFiYXNlKQotICAgIHsKLSAgICAgICAgbV9pZGJEYXRhYmFzZSA9
IGlkYkRhdGFiYXNlOwotICAgICAgICBtX2lkYkRhdGFiYXNlLT5yZWdpc3RlckZyb250ZW5kQ2Fs
bGJhY2tzKG1faWRiRGF0YWJhc2VDYWxsYmFja3MpOwotICAgIH0KLQogICAgIH5EYXRhYmFzZUNv
bm5lY3Rpb24oKQogICAgIHsKICAgICAgICAgaWYgKG1faWRiRGF0YWJhc2UpCiAgICAgICAgICAg
ICBtX2lkYkRhdGFiYXNlLT5jbG9zZShtX2lkYkRhdGFiYXNlQ2FsbGJhY2tzKTsKICAgICB9CiAK
KyAgICB2b2lkIGNvbm5lY3QoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+
IGRhdGFiYXNlKSB7IG1faWRiRGF0YWJhc2UgPSBkYXRhYmFzZTsgfQorICAgIFBhc3NSZWZQdHI8
SURCRGF0YWJhc2VDYWxsYmFja3M+IGNhbGxiYWNrcygpIHsgcmV0dXJuIG1faWRiRGF0YWJhc2VD
YWxsYmFja3M7IH0KKwogcHJpdmF0ZToKICAgICBSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50
ZXJmYWNlPiBtX2lkYkRhdGFiYXNlOwogICAgIFJlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4g
bV9pZGJEYXRhYmFzZUNhbGxiYWNrczsKIH07CiAKK2NsYXNzIEV4ZWN1dGFibGVXaXRoRGF0YWJh
c2UgOiBwdWJsaWMgUmVmQ291bnRlZDxFeGVjdXRhYmxlV2l0aERhdGFiYXNlPiB7CitwdWJsaWM6
CisgICAgdmlydHVhbCB+RXhlY3V0YWJsZVdpdGhEYXRhYmFzZSgpIHsgfTsKKyAgICB2b2lkIHN0
YXJ0KElEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlKiwgU2VjdXJpdHlPcmlnaW4qLCBTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUpOworICAgIHZvaWQg
Y29ubmVjdChQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4gZGF0YWJhc2Up
IHsgbV9jb25uZWN0aW9uLmNvbm5lY3QoZGF0YWJhc2UpOyB9CisgICAgdmlydHVhbCB2b2lkIGV4
ZWN1dGUoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+KSA9IDA7Citwcml2
YXRlOgorICAgIERhdGFiYXNlQ29ubmVjdGlvbiBtX2Nvbm5lY3Rpb247Cit9OworCiBjbGFzcyBP
cGVuRGF0YWJhc2VDYWxsYmFjayA6IHB1YmxpYyBJbnNwZWN0b3JJREJDYWxsYmFjayB7CiBwdWJs
aWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8T3BlbkRhdGFiYXNlQ2FsbGJhY2s+IGNyZWF0ZShF
eGVjdXRhYmxlV2l0aERhdGFiYXNlKiBleGVjdXRhYmxlV2l0aERhdGFiYXNlKQpAQCAtMjI3LDYg
KzIyNyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8
SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiBwcnBEYXRhYmFzZSkKICAgICB7CiAgICAgICAg
IFJlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+IGlkYkRhdGFiYXNlID0gcHJwRGF0
YWJhc2U7CisgICAgICAgIG1fZXhlY3V0YWJsZVdpdGhEYXRhYmFzZS0+Y29ubmVjdChpZGJEYXRh
YmFzZSk7CiAgICAgICAgIG1fZXhlY3V0YWJsZVdpdGhEYXRhYmFzZS0+ZXhlY3V0ZShpZGJEYXRh
YmFzZSk7CiAgICAgfQogCkBAIC0yMzksNyArMjQwLDcgQEAgcHJpdmF0ZToKIHZvaWQgRXhlY3V0
YWJsZVdpdGhEYXRhYmFzZTo6c3RhcnQoSURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2UqIGlkYkZh
Y3RvcnksIFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0eU9yaWdpbiwgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUpCiB7CiAgICAgUmVmUHRy
PE9wZW5EYXRhYmFzZUNhbGxiYWNrPiBjYWxsYmFjayA9IE9wZW5EYXRhYmFzZUNhbGxiYWNrOjpj
cmVhdGUodGhpcyk7Ci0gICAgaWRiRmFjdG9yeS0+b3BlbihkYXRhYmFzZU5hbWUsIElEQkRhdGFi
YXNlTWV0YWRhdGE6Ok5vSW50VmVyc2lvbiwgY2FsbGJhY2suZ2V0KCksIHNlY3VyaXR5T3JpZ2lu
LCBjb250ZXh0LCBTdHJpbmcoKSk7CisgICAgaWRiRmFjdG9yeS0+b3BlbihkYXRhYmFzZU5hbWUs
IElEQkRhdGFiYXNlTWV0YWRhdGE6Ok5vSW50VmVyc2lvbiwgY2FsbGJhY2ssIG1fY29ubmVjdGlv
bi5jYWxsYmFja3MoKSwgc2VjdXJpdHlPcmlnaW4sIGNvbnRleHQsIFN0cmluZygpKTsKIH0KIAog
c3RhdGljIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiB0cmFuc2Fj
dGlvbkZvckRhdGFiYXNlKElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZSogaWRiRGF0YWJhc2Us
IGNvbnN0IFN0cmluZyYgb2JqZWN0U3RvcmVOYW1lKQpAQCAtMzEwLDcgKzMxMSw2IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgZXhlY3V0ZShQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2Vu
ZEludGVyZmFjZT4gcHJwRGF0YWJhc2UpCiAgICAgewogICAgICAgICBSZWZQdHI8SURCRGF0YWJh
c2VCYWNrZW5kSW50ZXJmYWNlPiBpZGJEYXRhYmFzZSA9IHBycERhdGFiYXNlOwotICAgICAgICBt
X2Nvbm5lY3Rpb24uY29ubmVjdChpZGJEYXRhYmFzZSk7CiAgICAgICAgIGlmICghbV9mcm9udGVu
ZFByb3ZpZGVyLT5mcm9udGVuZCgpKQogICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0zNTUsNyAr
MzU1LDYgQEAgcHJpdmF0ZToKICAgICAgICAgLCBtX3JlcXVlc3RJZChyZXF1ZXN0SWQpIHsgfQog
ICAgIFJlZlB0cjxJbnNwZWN0b3JJbmRleGVkREJBZ2VudDo6RnJvbnRlbmRQcm92aWRlcj4gbV9m
cm9udGVuZFByb3ZpZGVyOwogICAgIGludCBtX3JlcXVlc3RJZDsKLSAgICBEYXRhYmFzZUNvbm5l
Y3Rpb24gbV9jb25uZWN0aW9uOwogfTsKIAogc3RhdGljIFBhc3NSZWZQdHI8SURCS2V5PiBpZGJL
ZXlGcm9tSW5zcGVjdG9yT2JqZWN0KEluc3BlY3Rvck9iamVjdCoga2V5KQpAQCAtNTg3LDcgKzU4
Niw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZXhlY3V0ZShQYXNzUmVmUHRyPElEQkRh
dGFiYXNlQmFja2VuZEludGVyZmFjZT4gcHJwRGF0YWJhc2UpCiAgICAgewogICAgICAgICBSZWZQ
dHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiBpZGJEYXRhYmFzZSA9IHBycERhdGFiYXNl
OwotICAgICAgICBtX2Nvbm5lY3Rpb24uY29ubmVjdChpZGJEYXRhYmFzZSk7CiAgICAgICAgIGlm
ICghbV9mcm9udGVuZFByb3ZpZGVyLT5mcm9udGVuZCgpKQogICAgICAgICAgICAgcmV0dXJuOwog
CkBAIC02MzMsNyArNjMxLDYgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8SURCS2V5UmFuZ2U+IG1f
aWRiS2V5UmFuZ2U7CiAgICAgaW50IG1fc2tpcENvdW50OwogICAgIHVuc2lnbmVkIG1fcGFnZVNp
emU7Ci0gICAgRGF0YWJhc2VDb25uZWN0aW9uIG1fY29ubmVjdGlvbjsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJE
YXRhYmFzZS5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCRGF0YWJhc2Uu
aAppbmRleCBhOGIwMzVjNzI3Zjg4ZGRiZjBjZTE3MGVhZDc0MTg1YzY4YmUyYWQ2Li41OTJhMTBl
M2UxOTcwMWZlNDA4OGYzMjlkMTJlYzk4MDBmOTRkMjk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJEYXRhYmFzZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYklEQkRhdGFiYXNlLmgKQEAgLTY2LDYgKzY2LDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBjbG9zZSgpIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OyB9CiAgICAgdmlydHVhbCB2b2lkIGZvcmNlQ2xvc2UoKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsgfQogCisgICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIG1ldGhvZCBhZnRlciBXSzkw
NDExIGNsZWFudXAgaXMgY29tcGxldGUgb24gdGhlIENocm9taXVtIHNpZGUuCiAgICAgdmlydHVh
bCB2b2lkIG9wZW4oV2ViSURCRGF0YWJhc2VDYWxsYmFja3MqKSB7IFdFQktJVF9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsgfQogCiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJJREJGYWN0b3J5LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJJREJGYWN0b3J5LmgKaW5kZXggZjEwYThlYjlhZTBmNDk3OTQxOGExZmIzZjgzZWE2
NDc5ZjYwMjdhNy4uNjlhNDUzYWJjZDk0NGUzNzI2YWI1YWJhZTg2ZTQ3YzdkOWE1YzQzOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCRmFjdG9yeS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQkZhY3RvcnkuaApAQCAtNDEs
NiArNDEsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViRnJhbWU7CiBjbGFzcyBX
ZWJJREJEYXRhYmFzZTsKK2NsYXNzIFdlYklEQkRhdGFiYXNlQ2FsbGJhY2tzOwogY2xhc3MgV2Vi
U2VjdXJpdHlPcmlnaW47CiAKIC8vIFRoZSBlbnRyeSBwb2ludCBpbnRvIHRoZSBJbmRleGVkRGF0
YWJhc2UgQVBJLiAgVGhlc2UgY2xhc3NlcyBtYXRjaCB0aGVpciBGb28gYW5kCkBAIC01NCwxNiAr
NTUsMTMgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGdldERhdGFiYXNlTmFtZXMoV2Vi
SURCQ2FsbGJhY2tzKiBjYWxsYmFja3MsIGNvbnN0IFdlYlNlY3VyaXR5T3JpZ2luJiBvcmlnaW4s
IFdlYkZyYW1lKiBmcmFtZSwgY29uc3QgV2ViU3RyaW5nJiBkYXRhRGlyKSB7IFdFQktJVF9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsgfQogCi0gICAgLy8gRklYTUU6IERlbGV0ZSB0aGlzIG1ldGhvZCB3
aGVuIGRlcml2ZWQgY2xhc3NlcyBpbiBjaHJvbWl1bSBoYXZlCi0gICAgLy8gaW1wbGVtZW50ZWQg
dGhlIG90aGVyIG9wZW4gbWV0aG9kLgotICAgIHZpcnR1YWwgdm9pZCBvcGVuKGNvbnN0IFdlYlN0
cmluZyYgbmFtZSwgV2ViSURCQ2FsbGJhY2tzKiBjYWxsYmFja3MsIGNvbnN0IFdlYlNlY3VyaXR5
T3JpZ2luJiBvcmlnaW4sIFdlYkZyYW1lKiBmcmFtZSwgY29uc3QgV2ViU3RyaW5nJiBkYXRhRGly
KQotICAgIHsKLSAgICAgICAgb3BlbihuYW1lLCBXZWJJREJNZXRhZGF0YTo6Tm9JbnRWZXJzaW9u
LCBjYWxsYmFja3MsIG9yaWdpbiwgZnJhbWUsIGRhdGFEaXIpOwotICAgIH0KLQorICAgIC8vIEZJ
WE1FOiBSZW1vdmUgdGhpcyBvdmVybG9hZCBhZnRlciBXSzkwNDExIGNsZWFudXAgaXMgY29tcGxl
dGUgb24gdGhlIENocm9taXVtIHNpZGUuCiAgICAgLy8gVGhlIFdlYktpdCBpbXBsZW1lbnRhdGlv
biBvZiBvcGVuIGlnbm9yZXMgdGhlIFdlYkZyYW1lKiBwYXJhbWV0ZXIuCiAgICAgdmlydHVhbCB2
b2lkIG9wZW4oY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBsb25nIGxvbmcgdmVyc2lvbiwgV2ViSURC
Q2FsbGJhY2tzKiBjYWxsYmFja3MsIGNvbnN0IFdlYlNlY3VyaXR5T3JpZ2luJiBvcmlnaW4sIFdl
YkZyYW1lKiBmcmFtZSwgY29uc3QgV2ViU3RyaW5nJiBkYXRhRGlyKSB7IFdFQktJVF9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsgfQogCisgICAgLy8gVGhlIFdlYktpdCBpbXBsZW1lbnRhdGlvbiBvZiBv
cGVuIGlnbm9yZXMgdGhlIFdlYkZyYW1lKiBwYXJhbWV0ZXIuCisgICAgdmlydHVhbCB2b2lkIG9w
ZW4oY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBsb25nIGxvbmcgdmVyc2lvbiwgV2ViSURCQ2FsbGJh
Y2tzKiBjYWxsYmFja3MsIFdlYklEQkRhdGFiYXNlQ2FsbGJhY2tzKiBkYXRhYmFzZUNhbGxiYWNr
cywgY29uc3QgV2ViU2VjdXJpdHlPcmlnaW4mIG9yaWdpbiwgV2ViRnJhbWUqIGZyYW1lLCBjb25z
dCBXZWJTdHJpbmcmIGRhdGFEaXIpIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CisK
ICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlRGF0YWJhc2UoY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBX
ZWJJREJDYWxsYmFja3MqLCBjb25zdCBXZWJTZWN1cml0eU9yaWdpbiYsIFdlYkZyYW1lKiwgY29u
c3QgV2ViU3RyaW5nJiBkYXRhRGlyKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQog
fTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ2FsbGJhY2tz
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ2FsbGJhY2tzUHJveHku
Y3BwCmluZGV4IDE5M2JmMmI1ZjZjNjY2YzdiZDUwNjJhZDQ0NzQ0MTViZmIzMDQyOTcuLmFmNDk4
NGE3N2M0Yjg1ZTI2ZTI5ZWY4OGE4ZDI4M2RlNDZhY2MzOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL0lEQkNhbGxiYWNrc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9JREJDYWxsYmFja3NQcm94eS5jcHAKQEAgLTM0LDEzICszNCwxNSBA
QAogI2luY2x1ZGUgIklEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJJREJE
YXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJJREJEYXRhYmFzZUJhY2tlbmRQ
cm94eS5oIgorI2luY2x1ZGUgIklEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHkuaCIKICNpbmNsdWRl
ICJJREJEYXRhYmFzZUVycm9yLmgiCiAjaW5jbHVkZSAiSURCT2JqZWN0U3RvcmVCYWNrZW5kSW50
ZXJmYWNlLmgiCiAjaW5jbHVkZSAiSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlLmgiCiAj
aW5jbHVkZSAiV2ViSURCQ2FsbGJhY2tzLmgiCiAjaW5jbHVkZSAiV2ViSURCQ3Vyc29ySW1wbC5o
IgotI2luY2x1ZGUgIldlYklEQkRhdGFiYXNlSW1wbC5oIgorI2luY2x1ZGUgIldlYklEQkRhdGFi
YXNlQ2FsbGJhY2tzLmgiCiAjaW5jbHVkZSAiV2ViSURCRGF0YWJhc2VFcnJvci5oIgorI2luY2x1
ZGUgIldlYklEQkRhdGFiYXNlSW1wbC5oIgogI2luY2x1ZGUgIldlYklEQktleS5oIgogI2luY2x1
ZGUgIldlYklEQlRyYW5zYWN0aW9uSW1wbC5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYlNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS5oIgpAQCAtNzUsNyArNzcsOCBAQCB2b2lkIElEQkNhbGxiYWNrc1By
b3h5OjpvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlPiBpZGJD
dXJzbwogCiB2b2lkIElEQkNhbGxiYWNrc1Byb3h5OjpvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJE
YXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+IGJhY2tlbmQpCiB7Ci0gICAgbV9jYWxsYmFja3MtPm9u
U3VjY2VzcyhuZXcgV2ViSURCRGF0YWJhc2VJbXBsKGJhY2tlbmQpKTsKKyAgICBBU1NFUlQobV9k
YXRhYmFzZUNhbGxiYWNrcy5nZXQoKSk7CisgICAgbV9jYWxsYmFja3MtPm9uU3VjY2VzcyhuZXcg
V2ViSURCRGF0YWJhc2VJbXBsKGJhY2tlbmQsIG1fZGF0YWJhc2VDYWxsYmFja3MucmVsZWFzZSgp
KSk7CiB9CiAKIHZvaWQgSURCQ2FsbGJhY2tzUHJveHk6Om9uU3VjY2VzcyhQYXNzUmVmUHRyPElE
QktleT4gaWRiS2V5KQpAQCAtMTM3LDkgKzE0MCwxNyBAQCB2b2lkIElEQkNhbGxiYWNrc1Byb3h5
OjpvbkJsb2NrZWQoaW50NjRfdCBleGlzdGluZ1ZlcnNpb24pCiAKIHZvaWQgSURCQ2FsbGJhY2tz
UHJveHk6Om9uVXBncmFkZU5lZWRlZChpbnQ2NF90IG9sZFZlcnNpb24sIFBhc3NSZWZQdHI8SURC
VHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiB0cmFuc2FjdGlvbiwgUGFzc1JlZlB0cjxJREJE
YXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+IGRhdGFiYXNlKQogewotICAgIG1fY2FsbGJhY2tzLT5v
blVwZ3JhZGVOZWVkZWQob2xkVmVyc2lvbiwgbmV3IFdlYklEQlRyYW5zYWN0aW9uSW1wbCh0cmFu
c2FjdGlvbiksIG5ldyBXZWJJREJEYXRhYmFzZUltcGwoZGF0YWJhc2UpKTsKKyAgICBBU1NFUlQo
bV9kYXRhYmFzZUNhbGxiYWNrcyk7CisgICAgbV9jYWxsYmFja3MtPm9uVXBncmFkZU5lZWRlZChv
bGRWZXJzaW9uLCBuZXcgV2ViSURCVHJhbnNhY3Rpb25JbXBsKHRyYW5zYWN0aW9uKSwgbmV3IFdl
YklEQkRhdGFiYXNlSW1wbChkYXRhYmFzZSwgbV9kYXRhYmFzZUNhbGxiYWNrcykpOworfQorCit2
b2lkIElEQkNhbGxiYWNrc1Byb3h5OjpzZXREYXRhYmFzZUNhbGxiYWNrcyhQYXNzUmVmUHRyPElE
QkRhdGFiYXNlQ2FsbGJhY2tzUHJveHk+IGRhdGFiYXNlQ2FsbGJhY2tzKQoreworICAgIEFTU0VS
VCghbV9kYXRhYmFzZUNhbGxiYWNrcyk7CisgICAgbV9kYXRhYmFzZUNhbGxiYWNrcyA9IGRhdGFi
YXNlQ2FsbGJhY2tzOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAorCiAjZW5kaWYgLy8g
RU5BQkxFKElOREVYRURfREFUQUJBU0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9JREJDYWxsYmFja3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
SURCQ2FsbGJhY2tzUHJveHkuaAppbmRleCA4MjU3NThhYWRlOTNmNDFmMjYyOTMwMzY4YmQ5NjY2
MGZlNTJhNTI3Li5mNjEzYTg1YzJlNGVkMTZjYjg4N2Y2OGEwNTAzMTg0OWNiMWNlZjIwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJDYWxsYmFja3NQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkNhbGxiYWNrc1Byb3h5LmgKQEAgLTM5
LDYgKzM5LDcgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJJREJDYWxsYmFja3M7
CitjbGFzcyBJREJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5OwogCiBjbGFzcyBJREJDYWxsYmFja3NQ
cm94eSA6IHB1YmxpYyBXZWJDb3JlOjpJREJDYWxsYmFja3MgewogcHVibGljOgpAQCAtNTksMTAg
KzYwLDEzIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgb25CbG9ja2VkKGludDY0X3QgZXhp
c3RpbmdWZXJzaW9uKTsKICAgICB2aXJ0dWFsIHZvaWQgb25VcGdyYWRlTmVlZGVkKGludDY0X3Qg
b2xkVmVyc2lvbiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRl
cmZhY2U+LCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4p
OwogCisgICAgdm9pZCBzZXREYXRhYmFzZUNhbGxiYWNrcyhQYXNzUmVmUHRyPElEQkRhdGFiYXNl
Q2FsbGJhY2tzUHJveHk+KTsKKwogcHJpdmF0ZToKICAgICBJREJDYWxsYmFja3NQcm94eShQYXNz
T3duUHRyPFdlYklEQkNhbGxiYWNrcz4pOwogCiAgICAgT3duUHRyPFdlYklEQkNhbGxiYWNrcz4g
bV9jYWxsYmFja3M7CisgICAgUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHk+IG1fZGF0
YWJhc2VDYWxsYmFja3M7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmNwcCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmNwcApp
bmRleCA1NmFmZTVmYjVkMmI2MmZhNDQ0OTk1NDQ2OTMwYTAxZDBiYzk3Nzk4Li41MDFjZTYxZmI1
OTU2MjY2YjBjM2JmMWI0YzAyYWVmNmNkYTAwODA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuY3BwCkBAIC0xMDcsMTEg
KzEwNyw2IEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kUHJveHk6OmNsb3NlKFBhc3NSZWZQdHI8
SURCRGF0YWJhc2VDYWxsYmFja3M+KQogICAgIG1fd2ViSURCRGF0YWJhc2UtPmNsb3NlKCk7CiB9
CiAKLXZvaWQgSURCRGF0YWJhc2VCYWNrZW5kUHJveHk6OnJlZ2lzdGVyRnJvbnRlbmRDYWxsYmFj
a3MoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gZGF0YWJhc2VDYWxsYmFja3MpCi17
Ci0gICAgbV93ZWJJREJEYXRhYmFzZS0+b3BlbihuZXcgV2ViSURCRGF0YWJhc2VDYWxsYmFja3NJ
bXBsKGRhdGFiYXNlQ2FsbGJhY2tzKSk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAj
ZW5kaWYgLy8gRU5BQkxFKElOREVYRURfREFUQUJBU0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94eS5oIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuaAppbmRleCAyYTkzNjAwYzZm
MmZhMGMyNjdjMmRhMDZmYjhiOTIxNmZkODI4ZTM2Li43OTU2MTBhYTY1NzJkY2E0NmNjMjY0ZGI1
YjA4YmQxNzhjMWM1NjUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9J
REJEYXRhYmFzZUJhY2tlbmRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmgKQEAgLTUwLDggKzUwLDYgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZh
Y2U+IHRyYW5zYWN0aW9uKFdlYkNvcmU6OkRPTVN0cmluZ0xpc3QqIHN0b3JlTmFtZXMsIHVuc2ln
bmVkIHNob3J0IG1vZGUsIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUmKTsKICAgICB2aXJ0dWFsIHZv
aWQgY2xvc2UoUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJEYXRhYmFzZUNhbGxiYWNrcz4pOwogCi0g
ICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyRnJvbnRlbmRDYWxsYmFja3MoUGFzc1JlZlB0cjxXZWJD
b3JlOjpJREJEYXRhYmFzZUNhbGxiYWNrcz4pOwotCiBwcml2YXRlOgogICAgIElEQkRhdGFiYXNl
QmFja2VuZFByb3h5KFBhc3NPd25QdHI8V2ViSURCRGF0YWJhc2U+KTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRmFjdG9yeUJhY2tlbmRQcm94eS5jcHAgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJGYWN0b3J5QmFja2VuZFByb3h5LmNwcAppbmRl
eCBiYWJjYmFlMTg0MDljNWRkMjU5MmMwZGZkOTIzMzI2ZmJmNjBlOTRhLi4yODk5NWVjNjYwZTMx
ZmY3Y2VmYWQ5M2ViM2JkYTIzNDFhYTFlZmY4IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9JREJGYWN0b3J5QmFja2VuZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9JREJGYWN0b3J5QmFja2VuZFByb3h5LmNwcApAQCAtMzQsMTIgKzM0LDE0
IEBACiAjaW5jbHVkZSAiQ3Jvc3NUaHJlYWRUYXNrLmgiCiAjaW5jbHVkZSAiRE9NU3RyaW5nTGlz
dC5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNlQmFja2VuZFByb3h5LmgiCisjaW5jbHVkZSAiSURC
RGF0YWJhc2VDYWxsYmFja3MuaCIKICNpbmNsdWRlICJJREJEYXRhYmFzZUVycm9yLmgiCiAjaW5j
bHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2lu
LmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVJbXBsLmgiCiAjaW5jbHVkZSAiV2ViSURCQ2FsbGJhY2tz
SW1wbC5oIgogI2luY2x1ZGUgIldlYklEQkRhdGFiYXNlLmgiCisjaW5jbHVkZSAiV2ViSURCRGF0
YWJhc2VDYWxsYmFja3NJbXBsLmgiCiAjaW5jbHVkZSAiV2ViSURCRGF0YWJhc2VFcnJvci5oIgog
I2luY2x1ZGUgIldlYklEQkZhY3RvcnkuaCIKICNpbmNsdWRlICJXZWJLaXQuaCIKQEAgLTIwMywx
NSArMjA1LDE2IEBAIHZvaWQgSURCRmFjdG9yeUJhY2tlbmRQcm94eTo6Z2V0RGF0YWJhc2VOYW1l
cyhQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJhCiB9CiAKIAotdm9pZCBJREJGYWN0
b3J5QmFja2VuZFByb3h5OjpvcGVuKGNvbnN0IFN0cmluZyYgbmFtZSwgaW50NjRfdCB2ZXJzaW9u
LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJhY2tzLCBQYXNzUmVmUHRyPFNlY3Vy
aXR5T3JpZ2luPiBzZWN1cml0eU9yaWdpbiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCwgY29uc3QgU3RyaW5nJiBkYXRhRGlyKQordm9pZCBJREJGYWN0b3J5QmFja2VuZFByb3h5Ojpv
cGVuKGNvbnN0IFN0cmluZyYgbmFtZSwgaW50NjRfdCB2ZXJzaW9uLCBQYXNzUmVmUHRyPElEQkNh
bGxiYWNrcz4gcHJwQ2FsbGJhY2tzLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBw
cnBEYXRhYmFzZUNhbGxiYWNrcywgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlP
cmlnaW4sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgZGF0
YURpcikKIHsKICAgICBSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MocHJwQ2FsbGJhY2tz
KTsKKyAgICBSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IGRhdGFiYXNlQ2FsbGJhY2tzKHBy
cERhdGFiYXNlQ2FsbGJhY2tzKTsKICAgICBXZWJTZWN1cml0eU9yaWdpbiBvcmlnaW4oc2VjdXJp
dHlPcmlnaW4pOwogICAgIGlmICghYWxsb3dJbmRleGVkREIoY29udGV4dCwgbmFtZSwgb3JpZ2lu
LCBjYWxsYmFja3MpKQogICAgICAgICByZXR1cm47CiAKICAgICBXZWJGcmFtZUltcGwqIHdlYkZy
YW1lID0gZ2V0V2ViRnJhbWUoY29udGV4dCk7Ci0gICAgbV93ZWJJREJGYWN0b3J5LT5vcGVuKG5h
bWUsIHZlcnNpb24sIG5ldyBXZWJJREJDYWxsYmFja3NJbXBsKGNhbGxiYWNrcyksIG9yaWdpbiwg
d2ViRnJhbWUsIGRhdGFEaXIpOworICAgIG1fd2ViSURCRmFjdG9yeS0+b3BlbihuYW1lLCB2ZXJz
aW9uLCBuZXcgV2ViSURCQ2FsbGJhY2tzSW1wbChjYWxsYmFja3MpLCBuZXcgV2ViSURCRGF0YWJh
c2VDYWxsYmFja3NJbXBsKGRhdGFiYXNlQ2FsbGJhY2tzKSwgb3JpZ2luLCB3ZWJGcmFtZSwgZGF0
YURpcik7CiB9CiAKIHZvaWQgSURCRmFjdG9yeUJhY2tlbmRQcm94eTo6ZGVsZXRlRGF0YWJhc2Uo
Y29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJhY2tz
LCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdpbiwgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBkYXRhRGlyKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRmFjdG9yeUJhY2tlbmRQcm94eS5oIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRmFjdG9yeUJhY2tlbmRQcm94eS5oCmluZGV4IGMw
ZGU5MTBhOTJjZGVhOTFhM2QzYTFjNTMwYTI4MDdjNWFiZmFhN2EuLjg4MzgwZDdhNDJlZDExNzMw
MjkzNWJlYmJjYWNjZWI2ZjZlOTdkNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL0lEQkZhY3RvcnlCYWNrZW5kUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9JREJGYWN0b3J5QmFja2VuZFByb3h5LmgKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgfklEQkZhY3RvcnlCYWNrZW5kUHJveHkoKTsKIAogICAgIHZpcnR1YWwg
dm9pZCBnZXREYXRhYmFzZU5hbWVzKFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCQ2FsbGJhY2tzPiwg
UGFzc1JlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4sIFdlYkNvcmU6OlNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIGRhdGFEaXIpOwotICAgIHZpcnR1YWwgdm9pZCBv
cGVuKGNvbnN0IFN0cmluZyYgbmFtZSwgaW50NjRfdCB2ZXJzaW9uLCBQYXNzUmVmUHRyPFdlYkNv
cmU6OklEQkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+LCBX
ZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBkYXRhRGlyKTsK
KyAgICB2aXJ0dWFsIHZvaWQgb3Blbihjb25zdCBTdHJpbmcmIG5hbWUsIGludDY0X3QgdmVyc2lv
biwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJDYWxsYmFja3M+LCBQYXNzUmVmUHRyPFdlYkNvcmU6
OklEQkRhdGFiYXNlQ2FsbGJhY2tzPiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bj4sIFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIGRhdGFE
aXIpOwogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVEYXRhYmFzZShjb25zdCBTdHJpbmcmIG5hbWUs
IFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCQ2FsbGJhY2tzPiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbj4sIFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBT
dHJpbmcmIGRhdGFEaXIpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5jcHAKaW5kZXggMGQxNDJiYzAyOTNhYTEzZjViMTky
YzNmZGJjNTYzMzdjZGFjNzU3ZC4uNTI4NzlhOWE3ZjNiNzM4MGFiYTMwNmVkNjczZDBjNDJhMTI4
ZmM0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJh
c2VJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFz
ZUltcGwuY3BwCkBAIC00NSw4ICs0NSw5IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKIAotV2ViSURCRGF0YWJhc2VJbXBsOjpXZWJJREJEYXRhYmFzZUlt
cGwoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+IGRhdGFiYXNlQmFja2Vu
ZCkKK1dlYklEQkRhdGFiYXNlSW1wbDo6V2ViSURCRGF0YWJhc2VJbXBsKFBhc3NSZWZQdHI8SURC
RGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiBkYXRhYmFzZUJhY2tlbmQsIFdURjo6UGFzc1JlZlB0
cjxJREJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5PiBkYXRhYmFzZUNhbGxiYWNrcykKICAgICA6IG1f
ZGF0YWJhc2VCYWNrZW5kKGRhdGFiYXNlQmFja2VuZCkKKyAgICAsIG1fZGF0YWJhc2VDYWxsYmFj
a3MoZGF0YWJhc2VDYWxsYmFja3MpCiAgICAgLCBtX2Nsb3NlUGVuZGluZyhmYWxzZSkKIHsKIH0K
QEAgLTkzLDcgKzk0LDcgQEAgV2ViSURCVHJhbnNhY3Rpb24qIFdlYklEQkRhdGFiYXNlSW1wbDo6
dHJhbnNhY3Rpb24oY29uc3QgV2ViRE9NU3RyaW5nTGlzdCYgbmFtZXMKIAogdm9pZCBXZWJJREJE
YXRhYmFzZUltcGw6OmNsb3NlKCkKIHsKLSAgICAvLyBVc2UgdGhlIGNhbGxiYWNrcyB0aGF0IDo6
b3BlbiBnYXZlIHVzIHNvIHRoYXQgdGhlIGJhY2tlbmQgaW4KKyAgICAvLyBVc2UgdGhlIGNhbGxi
YWNrcyBwYXNzZWQgaW4gdG8gdGhlIGNvbnN0cnVjdG9yIHNvIHRoYXQgdGhlIGJhY2tlbmQgaW4K
ICAgICAvLyBtdWx0aS1wcm9jZXNzIGNocm9taXVtIGtub3dzIHdoaWNoIGRhdGFiYXNlIGNvbm5l
Y3Rpb24gaXMgY2xvc2luZy4KICAgICBpZiAoIW1fZGF0YWJhc2VDYWxsYmFja3MpIHsKICAgICAg
ICAgbV9jbG9zZVBlbmRpbmcgPSB0cnVlOwpAQCAtMTEzLDE1ICsxMTQsNiBAQCB2b2lkIFdlYklE
QkRhdGFiYXNlSW1wbDo6Zm9yY2VDbG9zZSgpCiAgICAgY2FsbGJhY2tzLT5vbkZvcmNlZENsb3Nl
KCk7CiB9CiAKLXZvaWQgV2ViSURCRGF0YWJhc2VJbXBsOjpvcGVuKFdlYklEQkRhdGFiYXNlQ2Fs
bGJhY2tzKiBjYWxsYmFja3MpCi17Ci0gICAgQVNTRVJUKCFtX2RhdGFiYXNlQ2FsbGJhY2tzKTsK
LSAgICBtX2RhdGFiYXNlQ2FsbGJhY2tzID0gSURCRGF0YWJhc2VDYWxsYmFja3NQcm94eTo6Y3Jl
YXRlKGFkb3B0UHRyKGNhbGxiYWNrcykpOwotICAgIG1fZGF0YWJhc2VCYWNrZW5kLT5yZWdpc3Rl
ckZyb250ZW5kQ2FsbGJhY2tzKG1fZGF0YWJhc2VDYWxsYmFja3MpOwotICAgIGlmIChtX2Nsb3Nl
UGVuZGluZykKLSAgICAgICAgY2xvc2UoKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAK
ICNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5oIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmgKaW5kZXggNGE4Mjg0Y2U1OWFkMWU2MzZj
YzRmYmM5NzI3YmNiNzdhNDIyYzMwZS4uOWNkMWNhZjU5MjA2OWI1NGRmYjk2Y2M4Nzg0NGMzNzk2
ZGIzYTMwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0
YWJhc2VJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJh
c2VJbXBsLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgY2xhc3MgV2ViSURCVHJhbnNhY3Rpb247CiAvLyBT
ZWUgY29tbWVudCBpbiBXZWJJREJGYWN0b3J5IGZvciBhIGhpZ2ggbGV2ZWwgb3ZlcnZpZXcgdGhl
c2UgY2xhc3Nlcy4KIGNsYXNzIFdlYklEQkRhdGFiYXNlSW1wbCA6IHB1YmxpYyBXZWJJREJEYXRh
YmFzZSB7CiBwdWJsaWM6Ci0gICAgV2ViSURCRGF0YWJhc2VJbXBsKFdURjo6UGFzc1JlZlB0cjxX
ZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+KTsKKyAgICBXZWJJREJEYXRhYmFz
ZUltcGwoV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEludGVyZmFj
ZT4sIFdURjo6UGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5Pik7CiAgICAgdmly
dHVhbCB+V2ViSURCRGF0YWJhc2VJbXBsKCk7CiAKICAgICB2aXJ0dWFsIFdlYklEQk1ldGFkYXRh
IG1ldGFkYXRhKCkgY29uc3Q7CkBAIC01OSw5ICs1OSw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgZm9yY2VDbG9zZSgpOwogICAgIHZpcnR1YWwgdm9pZCBjbG9zZSgpOwogCi0gICAgLy8g
RklYTUU6IFJlbmFtZSAib3BlbiIgdG8gcmVnaXN0ZXJGcm9udGVuZENhbGxiYWNrcy4KLSAgICB2
aXJ0dWFsIHZvaWQgb3BlbihXZWJJREJEYXRhYmFzZUNhbGxiYWNrcyopOwotCiBwcml2YXRlOgog
ICAgIFdURjo6UmVmUHRyPFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4gbV9k
YXRhYmFzZUJhY2tlbmQ7CiAgICAgV1RGOjpSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3NQcm94
eT4gbV9kYXRhYmFzZUNhbGxiYWNrczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYklEQkZhY3RvcnlJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYklEQkZhY3RvcnlJbXBsLmNwcAppbmRleCBhZDcxNDc2YjdlYmI0Njg2ZWE4MjViOTYyMTkx
NmU2M2IyOTBhYzc3Li45NGE4ZDQ2OGE5MGE5MGM0MTJjN2FhNmM5OGFlZmI3NGJiN2EzN2I4IDEw
MDc1NQotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJGYWN0b3J5SW1wbC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRmFjdG9yeUltcGwuY3Bw
CkBAIC0zNSw4ICszNSwxMCBAQAogCiAjaW5jbHVkZSAiRE9NU3RyaW5nTGlzdC5oIgogI2luY2x1
ZGUgIklEQkNhbGxiYWNrc1Byb3h5LmgiCisjaW5jbHVkZSAiSURCRGF0YWJhc2VDYWxsYmFja3NQ
cm94eS5oIgogI2luY2x1ZGUgIklEQkZhY3RvcnlCYWNrZW5kSW1wbC5oIgogI2luY2x1ZGUgIlNl
Y3VyaXR5T3JpZ2luLmgiCisjaW5jbHVkZSAiV2ViSURCRGF0YWJhc2VDYWxsYmFja3MuaCIKICNp
bmNsdWRlICJXZWJJREJEYXRhYmFzZUVycm9yLmgiCiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgog
CkBAIC02Myw5ICs2NSwxMiBAQCB2b2lkIFdlYklEQkZhY3RvcnlJbXBsOjpnZXREYXRhYmFzZU5h
bWVzKFdlYklEQkNhbGxiYWNrcyogY2FsbGJhY2tzLCBjb25zdCBXZWJTZQogICAgIG1faWRiRmFj
dG9yeUJhY2tlbmQtPmdldERhdGFiYXNlTmFtZXMoSURCQ2FsbGJhY2tzUHJveHk6OmNyZWF0ZShh
ZG9wdFB0cihjYWxsYmFja3MpKSwgb3JpZ2luLCAwLCBkYXRhRGlyKTsKIH0KIAotdm9pZCBXZWJJ
REJGYWN0b3J5SW1wbDo6b3Blbihjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGxvbmcgbG9uZyB2ZXJz
aW9uLCBXZWJJREJDYWxsYmFja3MqIGNhbGxiYWNrcywgY29uc3QgV2ViU2VjdXJpdHlPcmlnaW4m
IG9yaWdpbiwgV2ViRnJhbWUqLCBjb25zdCBXZWJTdHJpbmcmIGRhdGFEaXIpCit2b2lkIFdlYklE
QkZhY3RvcnlJbXBsOjpvcGVuKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgbG9uZyBsb25nIHZlcnNp
b24sIFdlYklEQkNhbGxiYWNrcyogY2FsbGJhY2tzLCBXZWJJREJEYXRhYmFzZUNhbGxiYWNrcyog
ZGF0YWJhc2VDYWxsYmFja3MsIGNvbnN0IFdlYlNlY3VyaXR5T3JpZ2luJiBvcmlnaW4sIFdlYkZy
YW1lKiwgY29uc3QgV2ViU3RyaW5nJiBkYXRhRGlyKQogewotICAgIG1faWRiRmFjdG9yeUJhY2tl
bmQtPm9wZW4obmFtZSwgdmVyc2lvbiwgSURCQ2FsbGJhY2tzUHJveHk6OmNyZWF0ZShhZG9wdFB0
cihjYWxsYmFja3MpKS5nZXQoKSwgb3JpZ2luLCAwLCBkYXRhRGlyKTsKKyAgICBSZWZQdHI8SURC
Q2FsbGJhY2tzUHJveHk+IGNhbGxiYWNrc1Byb3h5ID0gSURCQ2FsbGJhY2tzUHJveHk6OmNyZWF0
ZShhZG9wdFB0cihjYWxsYmFja3MpKTsKKyAgICBSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3NQ
cm94eT4gZGF0YWJhc2VDYWxsYmFja3NQcm94eSA9IElEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHk6
OmNyZWF0ZShhZG9wdFB0cihkYXRhYmFzZUNhbGxiYWNrcykpOworICAgIGNhbGxiYWNrc1Byb3h5
LT5zZXREYXRhYmFzZUNhbGxiYWNrcyhkYXRhYmFzZUNhbGxiYWNrc1Byb3h5KTsKKyAgICBtX2lk
YkZhY3RvcnlCYWNrZW5kLT5vcGVuKG5hbWUsIHZlcnNpb24sIGNhbGxiYWNrc1Byb3h5LmdldCgp
LCBkYXRhYmFzZUNhbGxiYWNrc1Byb3h5LmdldCgpLCBvcmlnaW4sIDAsIGRhdGFEaXIpOwogfQog
CiB2b2lkIFdlYklEQkZhY3RvcnlJbXBsOjpkZWxldGVEYXRhYmFzZShjb25zdCBXZWJTdHJpbmcm
IG5hbWUsIFdlYklEQkNhbGxiYWNrcyogY2FsbGJhY2tzLCBjb25zdCBXZWJTZWN1cml0eU9yaWdp
biYgb3JpZ2luLCBXZWJGcmFtZSosIGNvbnN0IFdlYlN0cmluZyYgZGF0YURpcikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkZhY3RvcnlJbXBsLmggYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJGYWN0b3J5SW1wbC5oCmluZGV4IDgzM2VlYjU5
MTI1OWI4NTNjMzIxZmQxMThmMDk0YTViOGE3Yzg4NjQuLjMzZjVhMjFkMmM3NGY1OGRmZjk0ZTFl
YjdiOTBlNWFkNDMwZDE2MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYklEQkZhY3RvcnlJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
SURCRmFjdG9yeUltcGwuaApAQCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+
V2ViSURCRmFjdG9yeUltcGwoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBnZXREYXRhYmFzZU5hbWVz
KFdlYklEQkNhbGxiYWNrcyosIGNvbnN0IFdlYlNlY3VyaXR5T3JpZ2luJiwgV2ViRnJhbWUqLCBj
b25zdCBXZWJTdHJpbmcmIGRhdGFEaXIpOwotICAgIHZpcnR1YWwgdm9pZCBvcGVuKGNvbnN0IFdl
YlN0cmluZyYgbmFtZSwgbG9uZyBsb25nIHZlcnNpb24sIFdlYklEQkNhbGxiYWNrcyosIGNvbnN0
IFdlYlNlY3VyaXR5T3JpZ2luJiwgV2ViRnJhbWUqLCBjb25zdCBXZWJTdHJpbmcmIGRhdGFEaXIp
OworICAgIHZpcnR1YWwgdm9pZCBvcGVuKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgbG9uZyBsb25n
IHZlcnNpb24sIFdlYklEQkNhbGxiYWNrcyosIFdlYklEQkRhdGFiYXNlQ2FsbGJhY2tzKiwgY29u
c3QgV2ViU2VjdXJpdHlPcmlnaW4mLCBXZWJGcmFtZSosIGNvbnN0IFdlYlN0cmluZyYgZGF0YURp
cik7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZURhdGFiYXNlKGNvbnN0IFdlYlN0cmluZyYgbmFt
ZSwgV2ViSURCQ2FsbGJhY2tzKiwgY29uc3QgV2ViU2VjdXJpdHlPcmlnaW4mLCBXZWJGcmFtZSos
IGNvbnN0IFdlYlN0cmluZyYgZGF0YURpcik7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQkFib3J0T25Db3JydXB0VGVzdC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQkFib3J0T25Db3JydXB0VGVzdC5jcHAKaW5kZXgg
MWQzOTUwOTZhYWRiM2E1YjNkZTliNzBkYWI2MGYzMTg5Y2ZiYTk4Ni4uYjA4MGJmYzRkZjUxYTI5
OGY0ZmRiNWQ5YzI4ZTc3MTdmNDBkYWYxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9JREJBYm9ydE9uQ29ycnVwdFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvSURCQWJvcnRPbkNvcnJ1cHRUZXN0LmNwcApAQCAtMjYsNiArMjYsNyBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIklEQkN1cnNvckJhY2tlbmRJbnRlcmZh
Y2UuaCIKICNpbmNsdWRlICJJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UuaCIKKyNpbmNsdWRl
ICJJREJEYXRhYmFzZUNhbGxiYWNrcy5oIgogI2luY2x1ZGUgIklEQkZhY3RvcnlCYWNrZW5kSW1w
bC5oIgogI2luY2x1ZGUgIklEQkZha2VCYWNraW5nU3RvcmUuaCIKICNpbmNsdWRlICJTZWN1cml0
eU9yaWdpbi5oIgpAQCAtOTYsMTQgKzk3LDI2IEBAIHByb3RlY3RlZDoKICAgICB9CiB9OwogCitj
bGFzcyBGYWtlSURCRGF0YWJhc2VDYWxsYmFja3MgOiBwdWJsaWMgSURCRGF0YWJhc2VDYWxsYmFj
a3MgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZha2VJREJEYXRhYmFzZUNhbGxi
YWNrcz4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IEZha2VJREJEYXRhYmFzZUNhbGxi
YWNrcygpKTsgfQorICAgIHZpcnR1YWwgfkZha2VJREJEYXRhYmFzZUNhbGxiYWNrcygpIHsgfQor
ICAgIHZpcnR1YWwgdm9pZCBvblZlcnNpb25DaGFuZ2UoY29uc3QgU3RyaW5nJiB2ZXJzaW9uKSBP
VkVSUklERSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgb25WZXJzaW9uQ2hhbmdlKGludDY0X3Qgb2xk
VmVyc2lvbiwgaW50NjRfdCBuZXdWZXJzaW9uKSBPVkVSUklERSB7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgb25Gb3JjZWRDbG9zZSgpIE9WRVJSSURFIHsgfQorcHJpdmF0ZToKKyAgICBGYWtlSURCRGF0
YWJhc2VDYWxsYmFja3MoKSB7IH0KK307CisKIFRFU1QoSURCQWJvcnRUZXN0LCBUaGVUZXN0KQog
ewogICAgIFJlZlB0cjxJREJGYWN0b3J5QmFja2VuZEltcGw+IGZhY3RvcnkgPSBGYWlsaW5nSURC
RmFjdG9yeUJhY2tlbmRJbXBsOjpjcmVhdGUoKTsKICAgICBjb25zdCBTdHJpbmcmIG5hbWUgPSAi
ZGIgbmFtZSI7CiAgICAgTW9ja0lEQkNhbGxiYWNrcyBjYWxsYmFja3M7CisgICAgUmVmUHRyPEZh
a2VJREJEYXRhYmFzZUNhbGxiYWNrcz4gZGF0YWJhc2VDYWxsYmFja3MgPSBGYWtlSURCRGF0YWJh
c2VDYWxsYmFja3M6OmNyZWF0ZSgpOwogICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gb3JpZ2lu
ID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZSgiaHR0cCIsICJsb2NhbGhvc3QiLCA4MSk7CiAgICAg
Y29uc3QgaW50NjRfdCBEdW1teVZlcnNpb24gPSAyOwotICAgIGZhY3RvcnktPm9wZW4obmFtZSwg
RHVtbXlWZXJzaW9uLCAmY2FsbGJhY2tzLCBvcmlnaW4sIDAgLypGcmFtZSovLCBTdHJpbmcoKSAv
KnBhdGgqLyk7CisgICAgZmFjdG9yeS0+b3BlbihuYW1lLCBEdW1teVZlcnNpb24sICZjYWxsYmFj
a3MsIGRhdGFiYXNlQ2FsbGJhY2tzLCBvcmlnaW4sIDAgLypGcmFtZSovLCBTdHJpbmcoKSAvKnBh
dGgqLyk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL0lEQkRhdGFiYXNlQmFja2VuZFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9JREJEYXRhYmFzZUJhY2tlbmRUZXN0LmNwcAppbmRleCBlYWQ3ZjliYjk2
MjE2OTgyMWZkZWY3MDJmODE5NjJjMjRkYTQ1MDUxLi45Y2M4NzhmM2U4OGZhNWRkZjcyYmE4Y2U4
MzgzZGE4ZWY4NjRkMjA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0lEQkRhdGFiYXNlQmFja2VuZFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvSURCRGF0YWJhc2VCYWNrZW5kVGVzdC5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNs
dWRlICJJREJCYWNraW5nU3RvcmUuaCIKICNpbmNsdWRlICJJREJDdXJzb3JCYWNrZW5kSW50ZXJm
YWNlLmgiCiAjaW5jbHVkZSAiSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oIgorI2luY2x1ZGUgIklE
QkRhdGFiYXNlQ2FsbGJhY2tzUHJveHkuaCIKICNpbmNsdWRlICJJREJGYWN0b3J5QmFja2VuZElt
cGwuaCIKICNpbmNsdWRlICJJREJGYWtlQmFja2luZ1N0b3JlLmgiCiAjaW5jbHVkZSAiSURCSW5k
ZXhCYWNrZW5kSW1wbC5oIgpAQCAtNDAsOSArNDEsMTAgQEAKICNpZiBFTkFCTEUoSU5ERVhFRF9E
QVRBQkFTRSkKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Cit1c2luZyBXZWJLaXQ6OklEQkRh
dGFiYXNlQ2FsbGJhY2tzUHJveHk7CiB1c2luZyBXZWJLaXQ6OldlYklEQkRhdGFiYXNlOwotdXNp
bmcgV2ViS2l0OjpXZWJJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGw7CiB1c2luZyBXZWJLaXQ6Oldl
YklEQkRhdGFiYXNlSW1wbDsKK3VzaW5nIFdlYktpdDo6V2ViSURCRGF0YWJhc2VDYWxsYmFja3NJ
bXBsOwogCiBuYW1lc3BhY2UgewogCkBAIC0xMjIsMjAgKzEyNCwxNiBAQCBURVNUKElEQkRhdGFi
YXNlQmFja2VuZFRlc3QsIENvbm5lY3Rpb25MaWZlY3ljbGUpCiAgICAgRVhQRUNUX0dUKGJhY2tp
bmdTdG9yZS0+cmVmQ291bnQoKSwgMSk7CiAKICAgICBSZWZQdHI8TW9ja0lEQkNhbGxiYWNrcz4g
cmVxdWVzdDEgPSBNb2NrSURCQ2FsbGJhY2tzOjpjcmVhdGUoKTsKLSAgICBkYi0+b3BlbkNvbm5l
Y3Rpb24ocmVxdWVzdDEpOwotCiAgICAgUmVmUHRyPEZha2VJREJEYXRhYmFzZUNhbGxiYWNrcz4g
Y29ubmVjdGlvbjEgPSBGYWtlSURCRGF0YWJhc2VDYWxsYmFja3M6OmNyZWF0ZSgpOwotICAgIGRi
LT5yZWdpc3RlckZyb250ZW5kQ2FsbGJhY2tzKGNvbm5lY3Rpb24xKTsKKyAgICBkYi0+b3BlbkNv
bm5lY3Rpb24ocmVxdWVzdDEsIGNvbm5lY3Rpb24xKTsKIAogICAgIFJlZlB0cjxNb2NrSURCQ2Fs
bGJhY2tzPiByZXF1ZXN0MiA9IE1vY2tJREJDYWxsYmFja3M6OmNyZWF0ZSgpOwotICAgIGRiLT5v
cGVuQ29ubmVjdGlvbihyZXF1ZXN0Mik7CisgICAgUmVmUHRyPEZha2VJREJEYXRhYmFzZUNhbGxi
YWNrcz4gY29ubmVjdGlvbjIgPSBGYWtlSURCRGF0YWJhc2VDYWxsYmFja3M6OmNyZWF0ZSgpOwor
ICAgIGRiLT5vcGVuQ29ubmVjdGlvbihyZXF1ZXN0MiwgY29ubmVjdGlvbjIpOwogCiAgICAgZGIt
PmNsb3NlKGNvbm5lY3Rpb24xKTsKICAgICBFWFBFQ1RfR1QoYmFja2luZ1N0b3JlLT5yZWZDb3Vu
dCgpLCAxKTsKIAotICAgIFJlZlB0cjxGYWtlSURCRGF0YWJhc2VDYWxsYmFja3M+IGNvbm5lY3Rp
b24yID0gRmFrZUlEQkRhdGFiYXNlQ2FsbGJhY2tzOjpjcmVhdGUoKTsKLSAgICBkYi0+cmVnaXN0
ZXJGcm9udGVuZENhbGxiYWNrcyhjb25uZWN0aW9uMik7Ci0KICAgICBkYi0+Y2xvc2UoY29ubmVj
dGlvbjIpOwogICAgIEVYUEVDVF9UUlVFKGJhY2tpbmdTdG9yZS0+aGFzT25lUmVmKCkpOwogfQpA
QCAtMTQ5LDcgKzE0Nyw3IEBAIHB1YmxpYzoKIAogICAgIH5Nb2NrSURCRGF0YWJhc2VCYWNrZW5k
UHJveHkoKQogICAgIHsKLSAgICAgICAgRVhQRUNUX1RSVUUobV93YXNSZWdpc3RlckZyb250ZW5k
Q2FsbGJhY2tzQ2FsbGVkKTsKKyAgICAgICAgRVhQRUNUX1RSVUUobV93YXNDbG9zZUNhbGxlZCk7
CiAgICAgfQogCiAgICAgdmlydHVhbCBJREJEYXRhYmFzZU1ldGFkYXRhIG1ldGFkYXRhKCkgY29u
c3QgeyByZXR1cm4gSURCRGF0YWJhc2VNZXRhZGF0YSgpOyB9CkBAIC0xNjMsMTkgKzE2MSwxMiBA
QCBwdWJsaWM6CiAgICAgICAgIG1fd2FzQ2xvc2VDYWxsZWQgPSB0cnVlOwogICAgICAgICBtX3dl
YkRhdGFiYXNlLmNsb3NlKCk7CiAgICAgfQotICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckZyb250
ZW5kQ2FsbGJhY2tzKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IGNvbm5lY3Rpb24p
Ci0gICAgewotICAgICAgICBtX3dhc1JlZ2lzdGVyRnJvbnRlbmRDYWxsYmFja3NDYWxsZWQgPSB0
cnVlOwotICAgICAgICBtX3dlYkRhdGFiYXNlLm9wZW4obmV3IFdlYklEQkRhdGFiYXNlQ2FsbGJh
Y2tzSW1wbChjb25uZWN0aW9uKSk7Ci0gICAgfQogCiBwcml2YXRlOgogICAgIE1vY2tJREJEYXRh
YmFzZUJhY2tlbmRQcm94eShXZWJJREJEYXRhYmFzZUltcGwmIHdlYkRhdGFiYXNlKQotICAgICAg
ICA6IG1fd2FzUmVnaXN0ZXJGcm9udGVuZENhbGxiYWNrc0NhbGxlZChmYWxzZSkKLSAgICAgICAg
LCBtX3dhc0Nsb3NlQ2FsbGVkKGZhbHNlKQorICAgICAgICA6IG1fd2FzQ2xvc2VDYWxsZWQoZmFs
c2UpCiAgICAgICAgICwgbV93ZWJEYXRhYmFzZSh3ZWJEYXRhYmFzZSkgeyB9CiAKLSAgICBib29s
IG1fd2FzUmVnaXN0ZXJGcm9udGVuZENhbGxiYWNrc0NhbGxlZDsKICAgICBib29sIG1fd2FzQ2xv
c2VDYWxsZWQ7CiAKICAgICBXZWJJREJEYXRhYmFzZUltcGwmIG1fd2ViRGF0YWJhc2U7CkBAIC0x
OTEsMTggKzE4MiwxOSBAQCBURVNUKElEQkRhdGFiYXNlQmFja2VuZFRlc3QsIEZvcmNlZENsb3Nl
KQogICAgIFJlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbXBsPiBiYWNrZW5kID0gSURCRGF0YWJh
c2VCYWNrZW5kSW1wbDo6Y3JlYXRlKCJkYiIsIGJhY2tpbmdTdG9yZS5nZXQoKSwgY29vcmRpbmF0
b3IsIGZhY3RvcnksICJ1bmlxdWVpZCIpOwogICAgIEVYUEVDVF9HVChiYWNraW5nU3RvcmUtPnJl
ZkNvdW50KCksIDEpOwogCi0gICAgV2ViSURCRGF0YWJhc2VJbXBsIHdlYkRhdGFiYXNlKGJhY2tl
bmQpOwotCi0gICAgUmVmUHRyPE1vY2tJREJDYWxsYmFja3M+IHJlcXVlc3QxID0gTW9ja0lEQkNh
bGxiYWNrczo6Y3JlYXRlKCk7Ci0gICAgYmFja2VuZC0+b3BlbkNvbm5lY3Rpb24ocmVxdWVzdDEp
OworICAgIFJlZlB0cjxGYWtlSURCRGF0YWJhc2VDYWxsYmFja3M+IGNvbm5lY3Rpb24gPSBGYWtl
SURCRGF0YWJhc2VDYWxsYmFja3M6OmNyZWF0ZSgpOworICAgIFJlZlB0cjxJREJEYXRhYmFzZUNh
bGxiYWNrc1Byb3h5PiBjb25uZWN0aW9uUHJveHkgPSBJREJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5
OjpjcmVhdGUoYWRvcHRQdHIobmV3IFdlYklEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbChjb25uZWN0
aW9uKSkpOworICAgIFdlYklEQkRhdGFiYXNlSW1wbCB3ZWJEYXRhYmFzZShiYWNrZW5kLCBjb25u
ZWN0aW9uUHJveHkpOwogCiAgICAgUmVmUHRyPE1vY2tJREJEYXRhYmFzZUJhY2tlbmRQcm94eT4g
cHJveHkgPSBNb2NrSURCRGF0YWJhc2VCYWNrZW5kUHJveHk6OmNyZWF0ZSh3ZWJEYXRhYmFzZSk7
CisgICAgUmVmUHRyPE1vY2tJREJDYWxsYmFja3M+IHJlcXVlc3QgPSBNb2NrSURCQ2FsbGJhY2tz
OjpjcmVhdGUoKTsKKyAgICBiYWNrZW5kLT5vcGVuQ29ubmVjdGlvbihyZXF1ZXN0LCBjb25uZWN0
aW9uUHJveHkpOwogCiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCA9IDA7Ci0g
ICAgUmVmUHRyPElEQkRhdGFiYXNlPiBpZGJEYXRhYmFzZSA9IElEQkRhdGFiYXNlOjpjcmVhdGUo
Y29udGV4dCwgcHJveHkpOwotICAgIGlkYkRhdGFiYXNlLT5yZWdpc3RlckZyb250ZW5kQ2FsbGJh
Y2tzKCk7CisgICAgUmVmUHRyPElEQkRhdGFiYXNlPiBpZGJEYXRhYmFzZSA9IElEQkRhdGFiYXNl
OjpjcmVhdGUoY29udGV4dCwgcHJveHksIGNvbm5lY3Rpb24pOwogCiAgICAgd2ViRGF0YWJhc2Uu
Zm9yY2VDbG9zZSgpOworCiAgICAgRVhQRUNUX1RSVUUoYmFja2luZ1N0b3JlLT5oYXNPbmVSZWYo
KSk7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162802</attachid>
            <date>2012-09-07 10:21:14 -0700</date>
            <delta_ts>2012-09-07 16:32:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-90411-20120907102054.patch</filename>
            <type>text/plain</type>
            <size>68663</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3NTMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzc3NjFkMGY5MGUzZDRj
MWJjMmY4NDc0MTZmZDVlODdjYmI5OWI4Zi4uN2ZmZDVkYTI1NTliNGVhNDkyM2IzMDY1MTYwMGVl
OGIxMzU4NTU3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgxIEBACisyMDEyLTA5LTA2ICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBDb25z
b2xpZGF0ZSB0d28tcGhhc2UgY29ubmVjdGlvbiB0byBhdm9pZCByYWNlIGNvbmRpdGlvbnMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkwNDExCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUHJldmlvdXNseSwg
SURCIGNvbm5lY3Rpb25zIHdlcmUgb3BlbmVkIGJ5IGhhdmluZyB0aGUgZnJvbnQtZW5kICgxKSBj
YWxsIHRocm91Z2ggdG8KKyAgICAgICAgYSBiYWNrLWVuZCBvcGVuKCkgbWV0aG9kLCBldmVudHVh
bGx5IHJlY2VpdmUgYSBzdWNjZXNzIG1lc3NhZ2Ugd2l0aCBhIGJhY2stZW5kIG9iamVjdAorICAg
ICAgICBoYW5kbGUsIGFuZCAoMikgY2FsbCBpbnRvIHRoZSBiYWNrLWVuZCBvYmplY3QgdG8gcmVn
aXN0ZXIgZnJvbnQtZW5kIGNhbGxiYWNrcy4gVGhpcyBsZWZ0CisgICAgICAgIHRoZSBiYWNrLWVu
ZCdzIG5vdGlvbiBvZiBhbiBvcGVuIGNvbm5lY3Rpb24gaW4gYSBsaW1ibyBzdGF0ZSBiZXR3ZWVu
IHRoZXNlIHR3byBjYWxscy4KKyAgICAgICAgSW4gbXVsdGktcHJvY2VzcyBwb3J0cywgYSBjcmFz
aCBvZiB0aGUgZnJvbnQtZW5kIHByb2Nlc3MgY291bGQgbGVhdmUgdGhlIGJhY2stZW5kIHdlZGdl
ZAorICAgICAgICB3YWl0aW5nIGZvciB0aGlzIHNlY29uZCBjYWxsIChlLmcuIGNhbid0IGRlbGV0
ZSB1bnRpbCBhbGwgY29ubmVjdGlvbnMgYXJlIGNsb3NlZCkuCisKKyAgICAgICAgU2ltcGxpZnkg
dGhpcyBieSBoYXZpbmcgdGhlIGZyb250LWVuZCBwYXNzIHRocm91Z2ggdGhlIGNhbGxiYWNrcyBp
bnRvIHRoZSBiYWNrLWVuZAorICAgICAgICBkdXJpbmcgdGhlIGluaXRpYWwgb3BlbigpIGNhbGws
IHdoaWNoIGVsaW1pbmF0ZXMgdGhlIGxpbWJvIHN0YXRlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0
cyAtIG5vIGZ1bmN0aW9uYWwgY2hhbmdlcy4gQ2hyb21pdW0gcG9ydCdzIHdlYmtpdF91bml0X3Rl
c3RzIHVwZGF0ZWQuCisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZTo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQkRhdGFiYXNlOjpJREJEYXRhYmFzZSk6IERiLWNhbGxiYWNrcyBpcyBhdmFpbGFi
bGUgYXQgY3JlYXRpb24gdGltZS4KKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlOjp+SURC
RGF0YWJhc2UpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmg6Cisg
ICAgICAgIChJREJEYXRhYmFzZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0
YWJhc2VCYWNrZW5kSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tl
bmRJbXBsOjpQZW5kaW5nT3BlbkNhbGw6OmNyZWF0ZSk6IE5lZWQgdG8gdHJhY2sgZGItY2FsbGJh
Y2tzIGFzIHdlbGwuCisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpQ
ZW5kaW5nT3BlbkNhbGw6OmRhdGFiYXNlQ2FsbGJhY2tzKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QkRhdGFiYXNlQmFja2VuZEltcGw6OlBlbmRpbmdPcGVuQ2FsbDo6UGVuZGluZ09wZW5DYWxsKToK
KyAgICAgICAgKElEQkRhdGFiYXNlQmFja2VuZEltcGw6OlBlbmRpbmdPcGVuQ2FsbCk6CisgICAg
ICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpQZW5kaW5nT3BlbldpdGhWZXJz
aW9uQ2FsbDo6Y3JlYXRlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJh
Y2tlbmRJbXBsOjpQZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbDo6ZGF0YWJhc2VDYWxsYmFja3Mp
OgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6UGVuZGluZ09wZW5X
aXRoVmVyc2lvbkNhbGw6OlBlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxsKToKKyAgICAgICAgKElE
QkRhdGFiYXNlQmFja2VuZEltcGw6OlBlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxsKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OklEQkRhdGFiYXNlQmFja2VuZElt
cGwpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6c2V0VmVyc2lv
bik6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpjb25uZWN0aW9u
Q291bnQpOiBEb24ndCBuZWVkIHRvIGNvdW50IGxpbWJvIGNvbm5lY3Rpb25zIGFueSBtb3JlLgor
ICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6cHJvY2Vzc1BlbmRpbmdD
YWxscyk6IFBhc3MgdGhyb3VnaCBkYi1jYWxsYmFja3MuCisgICAgICAgIChXZWJDb3JlOjpJREJE
YXRhYmFzZUJhY2tlbmRJbXBsOjpvcGVuQ29ubmVjdGlvbik6IE5vIG1vcmUgbGltYm8gY29ubmVj
dGlvbnMgKHlheSEpLgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6
cnVuSW50VmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKTogUGFzcyB0aHJvdWdoIGRiLWNhbGxiYWNr
cy4KKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6Om9wZW5Db25uZWN0
aW9uV2l0aFZlcnNpb24pOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFj
a2VuZEltcGw6OmRlbGV0ZURhdGFiYXNlKTogU3R5bGUuCisgICAgICAgIChXZWJDb3JlOjpJREJE
YXRhYmFzZUJhY2tlbmRJbXBsOjpjbG9zZSk6IFJlc29sdmUgRklYTUUgYWJvdXQgY29ubmVjdGlv
bkNvdW50LgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZElt
cGwuaDoKKyAgICAgICAgKElEQkRhdGFiYXNlQmFja2VuZEltcGwpOgorICAgICAgICAqIE1vZHVs
ZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZS5oOgorICAgICAgICAoSURC
RGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9J
REJEYXRhYmFzZUNhbGxiYWNrc0ltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJh
c2VDYWxsYmFja3NJbXBsOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VD
YWxsYmFja3NJbXBsOjpJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCRGF0YWJhc2VDYWxsYmFja3NJbXBsOjpjb25uZWN0KToKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9JREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwuaDoKKyAgICAgICAgKElEQkRhdGFi
YXNlQ2FsbGJhY2tzSW1wbCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9y
eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJGYWN0b3J5OjpvcGVuKTogTWludCB0aGUgZGIt
Y2FsbGJhY2tzIGhlcmUuLi4KKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5
QmFja2VuZEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCRmFjdG9yeUJhY2tlbmRJbXBs
OjpvcGVuKTogLi4ucGFzc2VkIHRocm91Z2ggdG8gaGVyZS4uLgorICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5oOgorICAgICAgICAoSURCRmFjdG9yeUJh
Y2tlbmRJbXBsKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5QmFja2Vu
ZEludGVyZmFjZS5oOgorICAgICAgICAoSURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2UpOgorICAg
ICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQk9wZW5EQlJlcXVlc3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SURCT3BlbkRCUmVxdWVzdDo6Y3JlYXRlKTogLi4uYWxsIHRoZSB3YXkgdG8gaGVy
ZS4uLgorICAgICAgICAoV2ViQ29yZTo6SURCT3BlbkRCUmVxdWVzdDo6SURCT3BlbkRCUmVxdWVz
dCk6CisgICAgICAgIChXZWJDb3JlOjpJREJPcGVuREJSZXF1ZXN0OjpvblVwZ3JhZGVOZWVkZWQp
OiAuLi5hbmQgZmluYWxseSBob29rZWQgdXAgaGVyZS4KKyAgICAgICAgKFdlYkNvcmU6OklEQk9w
ZW5EQlJlcXVlc3Q6Om9uU3VjY2Vzcyk6IChvciBoZXJlLCBpZiBubyB1cGdyYWRlIG5lZWRlZCku
CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCT3BlbkRCUmVxdWVzdC5oOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChJREJPcGVuREJSZXF1ZXN0KToKKyAgICAgICAgKiBNb2R1
bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJU
cmFuc2FjdGlvbjo6b25BYm9ydCk6IFR3ZWFrIGV2ZW50L25vdGlmaWNhdGlvbiBvcmRlcmluZzsg
dGhlCisgICAgICAgIG5vdGlmeWluZyB0aGUgZGF0YWJhc2UgdGhhdCB0aGUgdHJhbnNhY3Rpb24g
aXMgZmluaXNoZWQgbWF5IHVuYmxvY2sgY2xvc2luZywKKyAgICAgICAgd2hpY2ggZmlyZXMgbW9y
ZSBldmVudHMsIGFuZCB0aGUgZGVsaXZlcnkgbWF0dGVycy4gUHJldmlvdXNseSB0aGUgY2xvc2Ug
d291bGQKKyAgICAgICAgYmUgYmxvY2tlZCBieSB0aGUgdHJhbnNhY3Rpb24gd2hpY2ggZ2F2ZSB0
aGUgZGVzaXJlZCBvcmRlci4KKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpvbkNv
bXBsZXRlKTogRGl0dG8uCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFn
ZW50LmNwcDogTmV3IGhvb2t1cCBsb2dpYy4KKyAgICAgICAgKFdlYkNvcmUpOgorCiAyMDEyLTA5
LTAzICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUGFydCAxIG9mIHJl
bW92aW5nIFBsYXRmb3JtU3RyaW5nLmgsIG1vdmUgcmVtYWluaW5nIGZ1bmN0aW9ucyB0byBuZXcg
aG9tZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggZjIzNGU3YjE3ODEzY2EwMDE4ZWI1
ZmZkZWE1ZTFjM2MxNTJmZTRhZC4uZTIxYWYxNDc1ZWE2MzU0Njg3Yjg3NGU3Nzc0YzZkYWE2ZTFm
NmMwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MyBAQAorMjAxMi0w
OS0wNiAgSm9zaHVhIEJlbGwgIDxqc2JlbGxAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEluZGV4
ZWREQjogQ29uc29saWRhdGUgdHdvLXBoYXNlIGNvbm5lY3Rpb24gdG8gYXZvaWQgcmFjZSBjb25k
aXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05
MDQxMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFQ
SSBwbHVtYmluZyBmb3Igc2ltcGxpZmllZCBzaW5nbGUtcGhhc2UgY29ubmVjdGlvbiBvcGVuaW5n
LCBhbmQgdGVzdHMgdXBkYXRlZAorICAgICAgICB0byBleGVyY2lzZSB0aGUgbmV3IEFQSXMuCisK
KyAgICAgICAgKiBwdWJsaWMvV2ViSURCRGF0YWJhc2UuaDoKKyAgICAgICAgKFdlYklEQkRhdGFi
YXNlKTogSnVzdCBhIEZJWE1FIHRvIHJlbW92ZSB0aGUgb2xkIHNlY29uZC1waGFzZSBob29rdXAg
QVBJLgorICAgICAgICAqIHB1YmxpYy9XZWJJREJGYWN0b3J5Lmg6CisgICAgICAgIChXZWJLaXQp
OgorICAgICAgICAoV2ViSURCRmFjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkZhY3Rv
cnk6Om9wZW4pOiBOZXcgb3ZlcmxvYWQgdGhhdCB0YWtlcyBkYi1jYWxsYmFja3MuCisgICAgICAg
ICogc3JjL0lEQkNhbGxiYWNrc1Byb3h5LmNwcDogVGhlIGRiLWNhbGxiYWNrcyBwbHVtYmluZyBp
cyBuZWVkZWQgZWFybGllci4KKyAgICAgICAgKFdlYktpdDo6SURCQ2FsbGJhY2tzUHJveHk6Om9u
U3VjY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OklEQkNhbGxiYWNrc1Byb3h5OjpvblVwZ3JhZGVO
ZWVkZWQpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6SURCQ2FsbGJhY2tz
UHJveHk6OnNldERhdGFiYXNlQ2FsbGJhY2tzKTogTmVlZHMgdG8gaG9sZCBvbiB0bworICAgICAg
ICB0aGUgZGItY2FsbGJhY2tzIGFuZCBob29rIGl0IHVwIHdoZW4gdGhlIG9uU3VjY2VzcyBjYWxs
YmFjayBjb21lcyB0aHJvdWdoLgorICAgICAgICAqIHNyYy9JREJDYWxsYmFja3NQcm94eS5oOgor
ICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKElEQkNhbGxiYWNrc1Byb3h5KToKKyAgICAgICAg
KiBzcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuY3BwOgorICAgICAgICAqIHNyYy9JREJEYXRh
YmFzZUJhY2tlbmRQcm94eS5oOgorICAgICAgICAoSURCRGF0YWJhc2VCYWNrZW5kUHJveHkpOgor
ICAgICAgICAqIHNyYy9JREJGYWN0b3J5QmFja2VuZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6SURCRmFjdG9yeUJhY2tlbmRQcm94eTo6b3Blbik6CisgICAgICAgICogc3JjL0lEQkZhY3Rv
cnlCYWNrZW5kUHJveHkuaDoKKyAgICAgICAgKElEQkZhY3RvcnlCYWNrZW5kUHJveHkpOgorICAg
ICAgICAqIHNyYy9XZWJJREJEYXRhYmFzZUltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJ
REJEYXRhYmFzZUltcGw6OldlYklEQkRhdGFiYXNlSW1wbCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YklEQkRhdGFiYXNlSW1wbDo6Y2xvc2UpOgorICAgICAgICAqIHNyYy9XZWJJREJEYXRhYmFzZUlt
cGwuaDoKKyAgICAgICAgKFdlYklEQkRhdGFiYXNlSW1wbCk6CisgICAgICAgICogc3JjL1dlYklE
QkZhY3RvcnlJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSURCRmFjdG9yeUltcGw6Om9w
ZW4pOgorICAgICAgICAqIHNyYy9XZWJJREJGYWN0b3J5SW1wbC5oOgorICAgICAgICAoV2ViSURC
RmFjdG9yeUltcGwpOgorICAgICAgICAqIHRlc3RzL0lEQkFib3J0T25Db3JydXB0VGVzdC5jcHA6
CisgICAgICAgIChGYWtlSURCRGF0YWJhc2VDYWxsYmFja3MpOgorICAgICAgICAoV2ViQ29yZTo6
RmFrZUlEQkRhdGFiYXNlQ2FsbGJhY2tzOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RmFr
ZUlEQkRhdGFiYXNlQ2FsbGJhY2tzOjp+RmFrZUlEQkRhdGFiYXNlQ2FsbGJhY2tzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZha2VJREJEYXRhYmFzZUNhbGxiYWNrczo6RmFrZUlEQkRhdGFiYXNlQ2Fs
bGJhY2tzKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6VEVTVCk6IFVw
ZGF0ZWQgY29ubmVjdGlvbiBzZXF1ZW5jZS4KKyAgICAgICAgKiB0ZXN0cy9JREJEYXRhYmFzZUJh
Y2tlbmRUZXN0LmNwcDogRGl0dG8uCisKIDIwMTItMDktMDQgIFRpZW4tUmVuIENoZW4gIDx0cmNo
ZW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gUmVuYW1lIFdlYlZpZXdDbGll
bnQ6OmhhbmRsZURpc2FtYmlndWF0aW9uUG9wdXAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcAppbmRleCBiM2Y3MGFkZDI5MzJjZTE1OTdlY2Ew
NTVhZWQxZWVmMDcwY2Q1ZGE3Li5kNjQxZDA0YTQzNmUxZmZmNWY2NDE4NGZkODM0MmY0MmQ1YzAz
NzQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRh
YmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJh
c2UuY3BwCkBAIC0zMSw3ICszMSw3IEBACiAjaW5jbHVkZSAiRXZlbnRRdWV1ZS5oIgogI2luY2x1
ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJJREJBbnkuaCIKLSNpbmNsdWRlICJJREJE
YXRhYmFzZUNhbGxiYWNrc0ltcGwuaCIKKyNpbmNsdWRlICJJREJEYXRhYmFzZUNhbGxiYWNrcy5o
IgogI2luY2x1ZGUgIklEQkRhdGFiYXNlRXJyb3IuaCIKICNpbmNsdWRlICJJREJEYXRhYmFzZUV4
Y2VwdGlvbi5oIgogI2luY2x1ZGUgIklEQkV2ZW50RGlzcGF0Y2hlci5oIgpAQCAtNTAsMjkgKzUw
LDI4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxJREJEYXRhYmFzZT4g
SURCRGF0YWJhc2U6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNz
UmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4gZGF0YWJhc2UpCitQYXNzUmVmUHRy
PElEQkRhdGFiYXNlPiBJREJEYXRhYmFzZTo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiBkYXRhYmFz
ZSwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gY2FsbGJhY2tzKQogewotICAgIFJl
ZlB0cjxJREJEYXRhYmFzZT4gaWRiRGF0YWJhc2UoYWRvcHRSZWYobmV3IElEQkRhdGFiYXNlKGNv
bnRleHQsIGRhdGFiYXNlKSkpOworICAgIFJlZlB0cjxJREJEYXRhYmFzZT4gaWRiRGF0YWJhc2Uo
YWRvcHRSZWYobmV3IElEQkRhdGFiYXNlKGNvbnRleHQsIGRhdGFiYXNlLCBjYWxsYmFja3MpKSk7
CiAgICAgaWRiRGF0YWJhc2UtPnN1c3BlbmRJZk5lZWRlZCgpOwogICAgIHJldHVybiBpZGJEYXRh
YmFzZS5yZWxlYXNlKCk7CiB9CiAKLUlEQkRhdGFiYXNlOjpJREJEYXRhYmFzZShTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVy
ZmFjZT4gYmFja2VuZCkKK0lEQkRhdGFiYXNlOjpJREJEYXRhYmFzZShTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4g
YmFja2VuZCwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gY2FsbGJhY2tzKQogICAg
IDogQWN0aXZlRE9NT2JqZWN0KGNvbnRleHQsIHRoaXMpCiAgICAgLCBtX2JhY2tlbmQoYmFja2Vu
ZCkKICAgICAsIG1fY2xvc2VQZW5kaW5nKGZhbHNlKQogICAgICwgbV9jb250ZXh0U3RvcHBlZChm
YWxzZSkKKyAgICAsIG1fZGF0YWJhc2VDYWxsYmFja3MoY2FsbGJhY2tzKQogewogICAgIC8vIFdl
IHBhc3MgYSByZWZlcmVuY2Ugb2YgdGhpcyBvYmplY3QgYmVmb3JlIGl0IGNhbiBiZSBhZG9wdGVk
LgogICAgIHJlbGF4QWRvcHRpb25SZXF1aXJlbWVudCgpOwotICAgIG1fZGF0YWJhc2VDYWxsYmFj
a3MgPSBJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGw6OmNyZWF0ZSh0aGlzKTsKICAgICBtX21ldGFk
YXRhID0gbV9iYWNrZW5kLT5tZXRhZGF0YSgpOwogfQogCiBJREJEYXRhYmFzZTo6fklEQkRhdGFi
YXNlKCkKIHsKICAgICBjbG9zZSgpOwotICAgIG1fZGF0YWJhc2VDYWxsYmFja3MtPnVucmVnaXN0
ZXJEYXRhYmFzZSh0aGlzKTsKIH0KIAogdm9pZCBJREJEYXRhYmFzZTo6dHJhbnNhY3Rpb25DcmVh
dGVkKElEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbikKQEAgLTMzNSwxMiArMzM0LDYgQEAgdm9p
ZCBJREJEYXRhYmFzZTo6b25WZXJzaW9uQ2hhbmdlKGNvbnN0IFN0cmluZyYgdmVyc2lvbikKICAg
ICBlbnF1ZXVlRXZlbnQoSURCVmVyc2lvbkNoYW5nZUV2ZW50OjpjcmVhdGUodmVyc2lvbiwgZXZl
bnROYW1lcygpLnZlcnNpb25jaGFuZ2VFdmVudCkpOwogfQogCi12b2lkIElEQkRhdGFiYXNlOjpy
ZWdpc3RlckZyb250ZW5kQ2FsbGJhY2tzKCkKLXsKLSAgICBBU1NFUlQobV9iYWNrZW5kKTsKLSAg
ICBtX2JhY2tlbmQtPnJlZ2lzdGVyRnJvbnRlbmRDYWxsYmFja3MobV9kYXRhYmFzZUNhbGxiYWNr
cyk7Ci19Ci0KIHZvaWQgSURCRGF0YWJhc2U6OmVucXVldWVFdmVudChQYXNzUmVmUHRyPEV2ZW50
PiBldmVudCkKIHsKICAgICBBU1NFUlQoIW1fY29udGV4dFN0b3BwZWQpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmgKaW5kZXggMjdmMDNiNmUzNTQ4
YTgwMGY0MWEzZmFlNTg2MDE3OWM4N2ZkNzJjZC4uNjQ5OTI0YWI2NjJkOTk0NWM3OGUyMzJlYmI0
MzY5MDQ1NjkzMjUwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCRGF0YWJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJEYXRhYmFzZS5oCkBAIC01MSw3ICs1MSw3IEBAIHR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7
CiAKIGNsYXNzIElEQkRhdGFiYXNlIDogcHVibGljIFJlZkNvdW50ZWQ8SURCRGF0YWJhc2U+LCBw
dWJsaWMgRXZlbnRUYXJnZXQsIHB1YmxpYyBBY3RpdmVET01PYmplY3QgewogcHVibGljOgotICAg
IHN0YXRpYyBQYXNzUmVmUHRyPElEQkRhdGFiYXNlPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPik7CisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8SURCRGF0YWJhc2U+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+LCBQYXNzUmVmUHRyPElE
QkRhdGFiYXNlQ2FsbGJhY2tzPik7CiAgICAgfklEQkRhdGFiYXNlKCk7CiAKICAgICB2b2lkIHRy
YW5zYWN0aW9uQ3JlYXRlZChJREJUcmFuc2FjdGlvbiopOwpAQCAtODksNyArODksNiBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCkgY29uc3Q7CiAKICAgICB2b2lkIGZvcmNlQ2xvc2UoKTsKLSAgICB2b2lkIHJlZ2lz
dGVyRnJvbnRlbmRDYWxsYmFja3MoKTsKICAgICBjb25zdCBJREJEYXRhYmFzZU1ldGFkYXRhIG1l
dGFkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9tZXRhZGF0YTsgfQogICAgIHZvaWQgZW5xdWV1ZUV2
ZW50KFBhc3NSZWZQdHI8RXZlbnQ+KTsKICAgICBib29sIGRpc3BhdGNoRXZlbnQoUGFzc1JlZlB0
cjxFdmVudD4gZXZlbnQsIEV4Y2VwdGlvbkNvZGUmIGVjKSB7IHJldHVybiBFdmVudFRhcmdldDo6
ZGlzcGF0Y2hFdmVudChldmVudCwgZWMpOyB9CkBAIC05OSw3ICs5OCw3IEBAIHB1YmxpYzoKICAg
ICB1c2luZyBSZWZDb3VudGVkPElEQkRhdGFiYXNlPjo6ZGVyZWY7CiAKIHByaXZhdGU6Ci0gICAg
SURCRGF0YWJhc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCRGF0YWJh
c2VCYWNrZW5kSW50ZXJmYWNlPik7CisgICAgSURCRGF0YWJhc2UoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiwgUGFzc1JlZlB0
cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4pOwogCiAgICAgLy8gRXZlbnRUYXJnZXQKICAgICB2aXJ0
dWFsIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSB7IHJlZigpOyB9CkBAIC0xMjMsNyArMTIyLDcgQEAg
cHJpdmF0ZToKICAgICAvLyBkYXRhYmFzZSBzbyB0aGF0IHdlIGNhbiBjYW5jZWwgdGhlbSBpZiB0
aGUgZGF0YWJhc2UgY2xvc2VzLgogICAgIFZlY3RvcjxSZWZQdHI8RXZlbnQ+ID4gbV9lbnF1ZXVl
ZEV2ZW50czsKIAotICAgIFJlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGw+IG1fZGF0YWJh
c2VDYWxsYmFja3M7CisgICAgUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBtX2RhdGFiYXNl
Q2FsbGJhY2tzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBs
LmNwcAppbmRleCA4MTEwYzI0YzEzYjNjNDYzZWUzN2IyMGQ0Y2ZmYTcxMjQyNDRiNjM5Li5iZmIy
YWUyNjc2MTVkNjM4NTIzYzBkZTJiZWVlNDVkYzUyZmEzNDRhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBs
LmNwcApAQCAtNDEsMzcgKzQxLDQzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSURC
RGF0YWJhc2VCYWNrZW5kSW1wbDo6UGVuZGluZ09wZW5DYWxsIDogcHVibGljIFJlZkNvdW50ZWQ8
UGVuZGluZ09wZW5DYWxsPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8UGVuZGlu
Z09wZW5DYWxsPiBjcmVhdGUoUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKKyAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxQZW5kaW5nT3BlbkNhbGw+IGNyZWF0ZShQYXNzUmVmUHRyPElE
QkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBk
YXRhYmFzZUNhbGxiYWNrcykKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgUGVu
ZGluZ09wZW5DYWxsKGNhbGxiYWNrcykpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBl
bmRpbmdPcGVuQ2FsbChjYWxsYmFja3MsIGRhdGFiYXNlQ2FsbGJhY2tzKSk7CiAgICAgfQogICAg
IFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MoKSB7IHJldHVybiBtX2NhbGxiYWNr
czsgfQorICAgIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IGRhdGFiYXNlQ2FsbGJh
Y2tzKCkgeyByZXR1cm4gbV9kYXRhYmFzZUNhbGxiYWNrczsgfQogCiBwcml2YXRlOgotICAgIFBl
bmRpbmdPcGVuQ2FsbChQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQorICAgIFBl
bmRpbmdPcGVuQ2FsbChQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBQYXNzUmVm
UHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBkYXRhYmFzZUNhbGxiYWNrcykKICAgICAgICAgOiBt
X2NhbGxiYWNrcyhjYWxsYmFja3MpCisgICAgICAgICwgbV9kYXRhYmFzZUNhbGxiYWNrcyhkYXRh
YmFzZUNhbGxiYWNrcykKICAgICB7CiAgICAgfQogCiAgICAgUmVmUHRyPElEQkNhbGxiYWNrcz4g
bV9jYWxsYmFja3M7CisgICAgUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBtX2RhdGFiYXNl
Q2FsbGJhY2tzOwogfTsKIAogY2xhc3MgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6UGVuZGluZ09w
ZW5XaXRoVmVyc2lvbkNhbGwgOiBwdWJsaWMgUmVmQ291bnRlZDxQZW5kaW5nT3BlbldpdGhWZXJz
aW9uQ2FsbD4gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBlbmRpbmdPcGVuV2l0
aFZlcnNpb25DYWxsPiBjcmVhdGUoUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywg
aW50NjRfdCB2ZXJzaW9uKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBlbmRpbmdPcGVuV2l0aFZl
cnNpb25DYWxsPiBjcmVhdGUoUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgUGFz
c1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gZGF0YWJhc2VDYWxsYmFja3MsIGludDY0X3Qg
dmVyc2lvbikKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgUGVuZGluZ09wZW5X
aXRoVmVyc2lvbkNhbGwoY2FsbGJhY2tzLCB2ZXJzaW9uKSk7CisgICAgICAgIHJldHVybiBhZG9w
dFJlZihuZXcgUGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGwoY2FsbGJhY2tzLCBkYXRhYmFzZUNh
bGxiYWNrcywgdmVyc2lvbikpOwogICAgIH0KICAgICBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4g
Y2FsbGJhY2tzKCkgeyByZXR1cm4gbV9jYWxsYmFja3M7IH0KKyAgICBQYXNzUmVmUHRyPElEQkRh
dGFiYXNlQ2FsbGJhY2tzPiBkYXRhYmFzZUNhbGxiYWNrcygpIHsgcmV0dXJuIG1fZGF0YWJhc2VD
YWxsYmFja3M7IH0KICAgICBpbnQ2NF90IHZlcnNpb24oKSB7IHJldHVybiBtX3ZlcnNpb247IH0K
IAogcHJpdmF0ZToKLSAgICBQZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbChQYXNzUmVmUHRyPElE
QkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBpbnQ2NF90IHZlcnNpb24pCisgICAgUGVuZGluZ09wZW5X
aXRoVmVyc2lvbkNhbGwoUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgUGFzc1Jl
ZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gZGF0YWJhc2VDYWxsYmFja3MsIGludDY0X3QgdmVy
c2lvbikKICAgICAgICAgOiBtX2NhbGxiYWNrcyhjYWxsYmFja3MpCisgICAgICAgICwgbV9kYXRh
YmFzZUNhbGxiYWNrcyhkYXRhYmFzZUNhbGxiYWNrcykKICAgICAgICAgLCBtX3ZlcnNpb24odmVy
c2lvbikKICAgICB7CiAgICAgfQogICAgIFJlZlB0cjxJREJDYWxsYmFja3M+IG1fY2FsbGJhY2tz
OworICAgIFJlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gbV9kYXRhYmFzZUNhbGxiYWNrczsK
ICAgICBpbnQ2NF90IG1fdmVyc2lvbjsKIH07CiAKQEAgLTEzMCw3ICsxMzYsNiBAQCBJREJEYXRh
YmFzZUJhY2tlbmRJbXBsOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsKGNvbnN0IFN0cmluZyYgbmFt
ZSwgSURCQmFja2luZ1N0bwogICAgICwgbV9pZGVudGlmaWVyKHVuaXF1ZUlkZW50aWZpZXIpCiAg
ICAgLCBtX2ZhY3RvcnkoZmFjdG9yeSkKICAgICAsIG1fdHJhbnNhY3Rpb25Db29yZGluYXRvcihj
b29yZGluYXRvcikKLSAgICAsIG1fcGVuZGluZ0Nvbm5lY3Rpb25Db3VudCgwKQogewogICAgIEFT
U0VSVCghbV9uYW1lLmlzTnVsbCgpKTsKIH0KQEAgLTI0MCw2ICsyNDUsNyBAQCB2b2lkIElEQkRh
dGFiYXNlQmFja2VuZEltcGw6OnNldFZlcnNpb24oY29uc3QgU3RyaW5nJiB2ZXJzaW9uLCBQYXNz
UmVmUHRyPElEQkNhbAogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGZvciAoRGF0YWJhc2VD
YWxsYmFja3NTZXQ6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9kYXRhYmFzZUNhbGxiYWNrc1NldC5i
ZWdpbigpOyBpdCAhPSBtX2RhdGFiYXNlQ2FsbGJhY2tzU2V0LmVuZCgpOyArK2l0KSB7CisgICAg
ICAgIC8vIEZyb250IGVuZCBlbnN1cmVzIHRoZSBldmVudCBpcyBub3QgZmlyZWQgYXQgY29ubmVj
dGlvbnMgdGhhdCBoYXZlIGNsb3NlUGVuZGluZyBzZXQuCiAgICAgICAgIGlmICgqaXQgIT0gZGF0
YWJhc2VDYWxsYmFja3MpCiAgICAgICAgICAgICAoKml0KS0+b25WZXJzaW9uQ2hhbmdlKHZlcnNp
b24pOwogICAgIH0KQEAgLTM0Miw5ICszNDgsMTAgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJ
bXBsOjp0cmFuc2FjdGlvbkZpbmlzaGVkQW5kQ29tcGxldGVGaXJlZChQYXNzUmVmUHRyPElEQlQK
ICAgICAgICAgcHJvY2Vzc1BlbmRpbmdDYWxscygpOwogfQogCi1pbnQzMl90IElEQkRhdGFiYXNl
QmFja2VuZEltcGw6OmNvbm5lY3Rpb25Db3VudCgpCitzaXplX3QgSURCRGF0YWJhc2VCYWNrZW5k
SW1wbDo6Y29ubmVjdGlvbkNvdW50KCkKIHsKLSAgICByZXR1cm4gbV9kYXRhYmFzZUNhbGxiYWNr
c1NldC5zaXplKCkgKyBtX3BlbmRpbmdDb25uZWN0aW9uQ291bnQ7CisgICAgLy8gVGhpcyBkb2Vz
IG5vdCBpbmNsdWRlIHBlbmRpbmcgb3BlbiBjYWxscywgYXMgdGhvc2Ugc2hvdWxkIG5vdCBibG9j
ayB2ZXJzaW9uIGNoYW5nZXMgYW5kIGRlbGV0ZXMuCisgICAgcmV0dXJuIG1fZGF0YWJhc2VDYWxs
YmFja3NTZXQuc2l6ZSgpOwogfQogCiB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OnByb2Nl
c3NQZW5kaW5nQ2FsbHMoKQpAQCAtMzU1LDkgKzM2Miw4IEBAIHZvaWQgSURCRGF0YWJhc2VCYWNr
ZW5kSW1wbDo6cHJvY2Vzc1BlbmRpbmdDYWxscygpCiAgICAgICAgIFJlZlB0cjxQZW5kaW5nT3Bl
bldpdGhWZXJzaW9uQ2FsbD4gcGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGwgPSBtX3BlbmRpbmdT
ZWNvbmRIYWxmT3BlbldpdGhWZXJzaW9uQ2FsbHMudGFrZUZpcnN0KCk7CiAgICAgICAgIEFTU0VS
VChwZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbC0+dmVyc2lvbigpID09IG1faW50VmVyc2lvbik7
CiAgICAgICAgIEFTU0VSVChtX2lkICE9IEludmFsaWRJZCk7Ci0gICAgICAgICsrbV9wZW5kaW5n
Q29ubmVjdGlvbkNvdW50OwogICAgICAgICBwZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbC0+Y2Fs
bGJhY2tzKCktPm9uU3VjY2Vzcyh0aGlzKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICAvLyBG
YWxsIHRocm91Z2ggd2hlbiBjb21wbGV0ZSwgYXMgcGVuZGluZyBkZWxldGVzIG1heSBiZSAocGFy
dGlhbGx5KSB1bmJsb2NrZWQuCiAgICAgfQogCiAgICAgLy8gUGVuZGluZyBjYWxscyBtYXkgYmUg
cmVxdWV1ZWQgb3IgYWJvcnRlZApAQCAtNDAwLDcgKzQwNiw3IEBAIHZvaWQgSURCRGF0YWJhc2VC
YWNrZW5kSW1wbDo6cHJvY2Vzc1BlbmRpbmdDYWxscygpCiAgICAgbV9wZW5kaW5nT3BlbldpdGhW
ZXJzaW9uQ2FsbHMuc3dhcChwZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbHMpOwogICAgIHdoaWxl
ICghcGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGxzLmlzRW1wdHkoKSkgewogICAgICAgICBSZWZQ
dHI8UGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGw+IHBlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxs
ID0gcGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGxzLnRha2VGaXJzdCgpOwotICAgICAgICBvcGVu
Q29ubmVjdGlvbldpdGhWZXJzaW9uKHBlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxsLT5jYWxsYmFj
a3MoKSwgcGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGwtPnZlcnNpb24oKSk7CisgICAgICAgIG9w
ZW5Db25uZWN0aW9uV2l0aFZlcnNpb24ocGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGwtPmNhbGxi
YWNrcygpLCBwZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbC0+ZGF0YWJhc2VDYWxsYmFja3MoKSwg
cGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGwtPnZlcnNpb24oKSk7CiAgICAgfQogCiAgICAgLy8g
R2l2ZW4gdGhlIGNoZWNrIGFib3ZlLCBpdCBhcHBlYXJzIHRoYXQgY2FsbHMgY2Fubm90IGJlIHJl
cXVldWVkIGJ5CkBAIC00MDksNyArNDE1LDcgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBs
Ojpwcm9jZXNzUGVuZGluZ0NhbGxzKCkKICAgICBtX3BlbmRpbmdPcGVuQ2FsbHMuc3dhcChwZW5k
aW5nT3BlbkNhbGxzKTsKICAgICB3aGlsZSAoIXBlbmRpbmdPcGVuQ2FsbHMuaXNFbXB0eSgpKSB7
CiAgICAgICAgIFJlZlB0cjxQZW5kaW5nT3BlbkNhbGw+IHBlbmRpbmdPcGVuQ2FsbCA9IHBlbmRp
bmdPcGVuQ2FsbHMudGFrZUZpcnN0KCk7Ci0gICAgICAgIG9wZW5Db25uZWN0aW9uKHBlbmRpbmdP
cGVuQ2FsbC0+Y2FsbGJhY2tzKCkpOworICAgICAgICBvcGVuQ29ubmVjdGlvbihwZW5kaW5nT3Bl
bkNhbGwtPmNhbGxiYWNrcygpLCBwZW5kaW5nT3BlbkNhbGwtPmRhdGFiYXNlQ2FsbGJhY2tzKCkp
OwogICAgIH0KICAgICBBU1NFUlQobV9wZW5kaW5nT3BlbkNhbGxzLmlzRW1wdHkoKSk7CiB9CkBA
IC00MjgsNDQgKzQzNCwzMCBAQCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVy
ZmFjZT4gSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6dHJhbnNhY3Rpb24oRAogICAgIHJldHVybiB0
cmFuc2FjdGlvbi5yZWxlYXNlKCk7CiB9CiAKLXZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6
cmVnaXN0ZXJGcm9udGVuZENhbGxiYWNrcyhQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tz
PiBjYWxsYmFja3MpCi17Ci0gICAgQVNTRVJUKG1fYmFja2luZ1N0b3JlLmdldCgpKTsKLSAgICBB
U1NFUlQobV9wZW5kaW5nQ29ubmVjdGlvbkNvdW50KTsKLSAgICAtLW1fcGVuZGluZ0Nvbm5lY3Rp
b25Db3VudDsKLSAgICBtX2RhdGFiYXNlQ2FsbGJhY2tzU2V0LmFkZChSZWZQdHI8SURCRGF0YWJh
c2VDYWxsYmFja3M+KGNhbGxiYWNrcykpOwotICAgIC8vIFdlIGdpdmUgbWF4IHByaW9yaXR5IHRv
IG9wZW4gY2FsbHMgdGhhdCBmb2xsb3cgdXBncmFkZW5lZWRlZAotICAgIC8vIGV2ZW50czsgdHJp
Z2dlciB0aGUgcmVzdCBvZiB0aGUgcXVldWVzIHRvIGJlIHNlcnZpY2VkIHdoZW4gdGhvc2Ugb3Bl
bgotICAgIC8vIGNhbGxzIGFyZSBmaW5pc2hlZC4KLSAgICBwcm9jZXNzUGVuZGluZ0NhbGxzKCk7
Ci19Ci0KLXZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6b3BlbkNvbm5lY3Rpb24oUGFzc1Jl
ZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKK3ZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1w
bDo6b3BlbkNvbm5lY3Rpb24oUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgUGFz
c1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gZGF0YWJhc2VDYWxsYmFja3MpCiB7CiAgICAg
QVNTRVJUKG1fYmFja2luZ1N0b3JlLmdldCgpKTsKICAgICBpZiAoIW1fcGVuZGluZ0RlbGV0ZUNh
bGxzLmlzRW1wdHkoKSB8fCBtX3J1bm5pbmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24gfHwgIW1f
cGVuZGluZ1NldFZlcnNpb25DYWxscy5pc0VtcHR5KCkpCi0gICAgICAgIG1fcGVuZGluZ09wZW5D
YWxscy5hcHBlbmQoUGVuZGluZ09wZW5DYWxsOjpjcmVhdGUoY2FsbGJhY2tzKSk7CisgICAgICAg
IG1fcGVuZGluZ09wZW5DYWxscy5hcHBlbmQoUGVuZGluZ09wZW5DYWxsOjpjcmVhdGUoY2FsbGJh
Y2tzLCBkYXRhYmFzZUNhbGxiYWNrcykpOwogICAgIGVsc2UgewogICAgICAgICBpZiAobV9pZCA9
PSBJbnZhbGlkSWQgJiYgIW9wZW5JbnRlcm5hbCgpKQogICAgICAgICAgICAgY2FsbGJhY2tzLT5v
bkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VU5L
Tk9XTl9FUlIsICJJbnRlcm5hbCBlcnJvci4iKSk7CiAgICAgICAgIGVsc2UgewotICAgICAgICAg
ICAgKyttX3BlbmRpbmdDb25uZWN0aW9uQ291bnQ7CisgICAgICAgICAgICBtX2RhdGFiYXNlQ2Fs
bGJhY2tzU2V0LmFkZChSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+KGRhdGFiYXNlQ2FsbGJh
Y2tzKSk7CiAgICAgICAgICAgICBjYWxsYmFja3MtPm9uU3VjY2Vzcyh0aGlzKTsKICAgICAgICAg
fQogICAgIH0KIH0KIAotdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpydW5JbnRWZXJzaW9u
Q2hhbmdlVHJhbnNhY3Rpb24oaW50NjRfdCByZXF1ZXN0ZWRWZXJzaW9uLCBQYXNzUmVmUHRyPElE
QkNhbGxiYWNrcz4gcHJwQ2FsbGJhY2tzKQordm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpy
dW5JbnRWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24oaW50NjRfdCByZXF1ZXN0ZWRWZXJzaW9uLCBQ
YXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJhY2tzLCBQYXNzUmVmUHRyPElEQkRhdGFi
YXNlQ2FsbGJhY2tzPiBwcnBEYXRhYmFzZUNhbGxiYWNrcykKIHsKICAgICBSZWZQdHI8SURCQ2Fs
bGJhY2tzPiBjYWxsYmFja3MgPSBwcnBDYWxsYmFja3M7CisgICAgUmVmUHRyPElEQkRhdGFiYXNl
Q2FsbGJhY2tzPiBkYXRhYmFzZUNhbGxiYWNrcyA9IHBycERhdGFiYXNlQ2FsbGJhY2tzOwogICAg
IEFTU0VSVChjYWxsYmFja3MpOwogICAgIGZvciAoRGF0YWJhc2VDYWxsYmFja3NTZXQ6OmNvbnN0
X2l0ZXJhdG9yIGl0ID0gbV9kYXRhYmFzZUNhbGxiYWNrc1NldC5iZWdpbigpOyBpdCAhPSBtX2Rh
dGFiYXNlQ2FsbGJhY2tzU2V0LmVuZCgpOyArK2l0KSB7Ci0gICAgICAgIC8vIE5vdGUgdGhhdCBz
b21lIGNvbm5lY3Rpb25zIG1pZ2h0IGNsb3NlIGluIHRoZSB2ZXJzaW9uY2hhbmdlIGV2ZW50Ci0g
ICAgICAgIC8vIGhhbmRsZXIgZm9yIHNvbWUgb3RoZXIgY29ubmVjdGlvbiwgYWZ0ZXIgd2hpY2gg
aXRzIG93biB2ZXJzaW9uY2hhbmdlCi0gICAgICAgIC8vIGV2ZW50IHNob3VsZCBub3QgYmUgZmly
ZWQuIFRoZSBiYWNrZW5kIGRvZXNuJ3Qgd29ycnkgYWJvdXQgdGhpcywgd2UKLSAgICAgICAgLy8g
anVzdCBxdWV1ZSB1cCBhIHZlcnNpb24gY2hhbmdlIGV2ZW50IGZvciBldmVyeSBjb25uZWN0aW9u
LiBUaGUKLSAgICAgICAgLy8gZnJvbnRlbmQgdGFrZXMgY2FyZSB0byBvbmx5IGRpc3BhdGNoIHRv
IG9wZW4gY29ubmVjdGlvbnMuCi0gICAgICAgICgqaXQpLT5vblZlcnNpb25DaGFuZ2UobV9pbnRW
ZXJzaW9uLCByZXF1ZXN0ZWRWZXJzaW9uKTsKKyAgICAgICAgLy8gRnJvbnQgZW5kIGVuc3VyZXMg
dGhlIGV2ZW50IGlzIG5vdCBmaXJlZCBhdCBjb25uZWN0aW9ucyB0aGF0IGhhdmUgY2xvc2VQZW5k
aW5nIHNldC4KKyAgICAgICAgaWYgKCppdCAhPSBkYXRhYmFzZUNhbGxiYWNrcykKKyAgICAgICAg
ICAgICgqaXQpLT5vblZlcnNpb25DaGFuZ2UobV9pbnRWZXJzaW9uLCByZXF1ZXN0ZWRWZXJzaW9u
KTsKICAgICB9CiAgICAgLy8gVGhlIHNwZWMgZGljdGF0ZXMgd2Ugd2FpdCB1bnRpbCBhbGwgdGhl
IHZlcnNpb24gY2hhbmdlIGV2ZW50cyBhcmUKICAgICAvLyBkZWxpdmVyZWQgYW5kIHRoZW4gY2hl
Y2sgbV9kYXRhYmFzZUNhbGxiYWNrcy5lbXB0eSgpIGJlZm9yZSBwcm9jZWVkaW5nCkBAIC00NzQs
MTEgKzQ2NiwxMSBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OnJ1bkludFZlcnNpb25D
aGFuZ2VUcmFuc2FjdGlvbihpbnQ2NF90IHJlcXVlc3RlZFZlcgogICAgIC8vIEZJWE1FOiBSZW1v
dmUgdGhlIGNhbGwgdG8gb25CbG9ja2VkIGFuZCBpbnN0ZWFkIHdhaXQgdW50aWwgdGhlIGZyb250
ZW5kCiAgICAgLy8gdGVsbHMgdXMgdGhhdCBhbGwgdGhlIGJsb2NrZWQgZXZlbnRzIGhhdmUgYmVl
biBkZWxpdmVyZWQuIFNlZQogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD03MTEzMAotICAgIGlmIChjb25uZWN0aW9uQ291bnQoKSA+IDApCisgICAgaWYgKGNv
bm5lY3Rpb25Db3VudCgpKQogICAgICAgICBjYWxsYmFja3MtPm9uQmxvY2tlZChtX2ludFZlcnNp
b24pOwogICAgIC8vIEZJWE1FOiBBZGQgdGVzdCBmb3IgbV9ydW5uaW5nVmVyc2lvbkNoYW5nZVRy
YW5zYWN0aW9uLgotICAgIGlmIChtX3J1bm5pbmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24gfHwg
Y29ubmVjdGlvbkNvdW50KCkgPiAwKSB7Ci0gICAgICAgIG1fcGVuZGluZ09wZW5XaXRoVmVyc2lv
bkNhbGxzLmFwcGVuZChQZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbDo6Y3JlYXRlKGNhbGxiYWNr
cywgcmVxdWVzdGVkVmVyc2lvbikpOworICAgIGlmIChtX3J1bm5pbmdWZXJzaW9uQ2hhbmdlVHJh
bnNhY3Rpb24gfHwgY29ubmVjdGlvbkNvdW50KCkpIHsKKyAgICAgICAgbV9wZW5kaW5nT3Blbldp
dGhWZXJzaW9uQ2FsbHMuYXBwZW5kKFBlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxsOjpjcmVhdGUo
Y2FsbGJhY2tzLCBkYXRhYmFzZUNhbGxiYWNrcywgcmVxdWVzdGVkVmVyc2lvbikpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCkBAIC00OTcsMTQgKzQ4OSwxNiBAQCB2b2lkIElEQkRhdGFiYXNl
QmFja2VuZEltcGw6OnJ1bkludFZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbihpbnQ2NF90IHJlcXVl
c3RlZFZlcgogICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpUUkFOU0FDVElPTl9J
TkFDVElWRV9FUlI7CiAgICAgfQogICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIW1fcGVuZGluZ1Nl
Y29uZEhhbGZPcGVuV2l0aFZlcnNpb25DYWxscy5zaXplKCksICJtX3BlbmRpbmdTZWNvbmRIYWxm
T3BlbldpdGhWZXJzaW9uQ2FsbHMuc2l6ZSA9ICV6dSIsIG1fcGVuZGluZ1NlY29uZEhhbGZPcGVu
V2l0aFZlcnNpb25DYWxscy5zaXplKCkpOwotICAgIG1fcGVuZGluZ1NlY29uZEhhbGZPcGVuV2l0
aFZlcnNpb25DYWxscy5hcHBlbmQoUGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGw6OmNyZWF0ZShj
YWxsYmFja3MsIHJlcXVlc3RlZFZlcnNpb24pKTsKKyAgICBtX3BlbmRpbmdTZWNvbmRIYWxmT3Bl
bldpdGhWZXJzaW9uQ2FsbHMuYXBwZW5kKFBlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxsOjpjcmVh
dGUoY2FsbGJhY2tzLCBkYXRhYmFzZUNhbGxiYWNrcywgcmVxdWVzdGVkVmVyc2lvbikpOworICAg
IG1fZGF0YWJhc2VDYWxsYmFja3NTZXQuYWRkKGRhdGFiYXNlQ2FsbGJhY2tzKTsKIH0KIAotdm9p
ZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpvcGVuQ29ubmVjdGlvbldpdGhWZXJzaW9uKFBhc3NS
ZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmFja3MsIGludDY0X3QgdmVyc2lvbikKK3ZvaWQg
SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6b3BlbkNvbm5lY3Rpb25XaXRoVmVyc2lvbihQYXNzUmVm
UHRyPElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJhY2tzLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2Fs
bGJhY2tzPiBwcnBEYXRhYmFzZUNhbGxiYWNrcywgaW50NjRfdCB2ZXJzaW9uKQogewogICAgIFJl
ZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcyA9IHBycENhbGxiYWNrczsKKyAgICBSZWZQdHI8
SURCRGF0YWJhc2VDYWxsYmFja3M+IGRhdGFiYXNlQ2FsbGJhY2tzID0gcHJwRGF0YWJhc2VDYWxs
YmFja3M7CiAgICAgaWYgKCFtX3BlbmRpbmdEZWxldGVDYWxscy5pc0VtcHR5KCkgfHwgbV9ydW5u
aW5nVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uIHx8ICFtX3BlbmRpbmdTZXRWZXJzaW9uQ2FsbHMu
aXNFbXB0eSgpKSB7Ci0gICAgICAgIG1fcGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGxzLmFwcGVu
ZChQZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbDo6Y3JlYXRlKGNhbGxiYWNrcywgdmVyc2lvbikp
OworICAgICAgICBtX3BlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxscy5hcHBlbmQoUGVuZGluZ09w
ZW5XaXRoVmVyc2lvbkNhbGw6OmNyZWF0ZShjYWxsYmFja3MsIGRhdGFiYXNlQ2FsbGJhY2tzLCB2
ZXJzaW9uKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKG1faWQgPT0gSW52YWxp
ZElkKSB7CkBAIC01MTYsNyArNTEwLDcgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpv
cGVuQ29ubmVjdGlvbldpdGhWZXJzaW9uKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPgogICAgICAg
ICB9CiAgICAgfQogICAgIGlmICh2ZXJzaW9uID4gbV9pbnRWZXJzaW9uKSB7Ci0gICAgICAgIHJ1
bkludFZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbih2ZXJzaW9uLCBjYWxsYmFja3MpOworICAgICAg
ICBydW5JbnRWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24odmVyc2lvbiwgY2FsbGJhY2tzLCBkYXRh
YmFzZUNhbGxiYWNrcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKHZlcnNpb24g
PCBtX2ludFZlcnNpb24pIHsKQEAgLTUyNCw3ICs1MTgsNyBAQCB2b2lkIElEQkRhdGFiYXNlQmFj
a2VuZEltcGw6Om9wZW5Db25uZWN0aW9uV2l0aFZlcnNpb24oUGFzc1JlZlB0cjxJREJDYWxsYmFj
a3M+CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgQVNTRVJUKHZlcnNpb24gPT0gbV9pbnRW
ZXJzaW9uKTsKLSAgICArK21fcGVuZGluZ0Nvbm5lY3Rpb25Db3VudDsKKyAgICBtX2RhdGFiYXNl
Q2FsbGJhY2tzU2V0LmFkZChkYXRhYmFzZUNhbGxiYWNrcyk7CiAgICAgY2FsbGJhY2tzLT5vblN1
Y2Nlc3ModGhpcyk7CiB9CiAKQEAgLTUzNSwxNSArNTI5LDE0IEBAIHZvaWQgSURCRGF0YWJhc2VC
YWNrZW5kSW1wbDo6ZGVsZXRlRGF0YWJhc2UoUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENh
bGxiYWNrCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgUmVmUHRyPElEQkNhbGxiYWNrcz4g
Y2FsbGJhY2tzID0gcHJwQ2FsbGJhY2tzOwotICAgIC8vIEZJWE1FOiBPbmx5IGZpcmUgb25WZXJz
aW9uQ2hhbmdlIGlmIHRoZXJlIHRoZSBjb25uZWN0aW9uIGlzbid0IGluCi0gICAgLy8gdGhlIHBy
b2Nlc3Mgb2YgY2xvc2luZy4KLSAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NzExMjkKLSAgICBmb3IgKERhdGFiYXNlQ2FsbGJhY2tzU2V0Ojpjb25zdF9pdGVy
YXRvciBpdCA9IG1fZGF0YWJhc2VDYWxsYmFja3NTZXQuYmVnaW4oKTsgaXQgIT0gbV9kYXRhYmFz
ZUNhbGxiYWNrc1NldC5lbmQoKTsgKytpdCkKKyAgICBmb3IgKERhdGFiYXNlQ2FsbGJhY2tzU2V0
Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1fZGF0YWJhc2VDYWxsYmFja3NTZXQuYmVnaW4oKTsgaXQg
IT0gbV9kYXRhYmFzZUNhbGxiYWNrc1NldC5lbmQoKTsgKytpdCkgeworICAgICAgICAvLyBGcm9u
dCBlbmQgZW5zdXJlcyB0aGUgZXZlbnQgaXMgbm90IGZpcmVkIGF0IGNvbm5lY3Rpb25zIHRoYXQg
aGF2ZSBjbG9zZVBlbmRpbmcgc2V0LgogICAgICAgICAoKml0KS0+b25WZXJzaW9uQ2hhbmdlKCIi
KTsKKyAgICB9CiAgICAgLy8gRklYTUU6IE9ubHkgZmlyZSBvbkJsb2NrZWQgaWYgdGhlcmUgYXJl
IG9wZW4gY29ubmVjdGlvbnMgYWZ0ZXIgdGhlCiAgICAgLy8gVmVyc2lvbkNoYW5nZUV2ZW50cyBh
cmUgcmVjZWl2ZWQsIG5vdCBqdXN0IHNldCB1cCB0byBmaXJlLgogICAgIC8vIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTEzMAotICAgIGlmIChjb25uZWN0aW9uQ291
bnQoKSA+PSAxKSB7CisgICAgaWYgKGNvbm5lY3Rpb25Db3VudCgpKSB7CiAgICAgICAgIG1fcGVu
ZGluZ0RlbGV0ZUNhbGxzLmFwcGVuZChQZW5kaW5nRGVsZXRlQ2FsbDo6Y3JlYXRlKGNhbGxiYWNr
cykpOwogICAgICAgICBjYWxsYmFja3MtPm9uQmxvY2tlZCgpOwogICAgICAgICByZXR1cm47CkBA
IC01NjQsMTggKzU1NywxOSBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNsb3NlKFBh
c3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IHBycENhbGxiYWNrcwogewogICAgIFJlZlB0
cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gY2FsbGJhY2tzID0gcHJwQ2FsbGJhY2tzOwogICAgIEFT
U0VSVChtX2RhdGFiYXNlQ2FsbGJhY2tzU2V0LmNvbnRhaW5zKGNhbGxiYWNrcykpOworCiAgICAg
bV9kYXRhYmFzZUNhbGxiYWNrc1NldC5yZW1vdmUoY2FsbGJhY2tzKTsKKyAgICAvLyBGSVhNRTog
SWYgY2FsbGJhY2tzIGlzIGFsc28gaGVsZCBpbiBtX3BlbmRpbmdTZWNvbmRIYWxmT3BlbldpdGhW
ZXJzaW9uQ2FsbHMKKyAgICAvLyBpdCBzaG91bGQgYmUgcmVtb3ZlZCBhbmQgb25FcnJvciBmaXJl
ZCBhZ2FpbnN0IGl0LgorCiAgICAgaWYgKGNvbm5lY3Rpb25Db3VudCgpID4gMSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgVHJhbnNhY3Rpb25TZXQgdHJhbnNhY3Rpb25zKG1fdHJhbnNhY3Rpb25z
KTsKICAgICBwcm9jZXNzUGVuZGluZ0NhbGxzKCk7CiAKLSAgICBBU1NFUlQobV90cmFuc2FjdGlv
bnMuc2l6ZSgpIC0gdHJhbnNhY3Rpb25zLnNpemUoKSA8PSAxKTsKLSAgICAvLyBGSVhNRTogSW5z
dGVhZCBvZiByZWx5aW5nIG9uIHRyYW5zYWN0aW9ucy5zaXplKCksIG1ha2UgY29ubmVjdGlvbkNv
dW50Ci0gICAgLy8gYXdhcmUgb2YgaW4tZmxpZ2h0IHVwZ3JhZGVuZWVkZWQgZXZlbnRzIGFzIHdl
bGwgYXMgaW4tZmxpZ2h0IHN1Y2Nlc3MKLSAgICAvLyBldmVudHMuCi0gICAgaWYgKCFjb25uZWN0
aW9uQ291bnQoKSAmJiAhbV9wZW5kaW5nRGVsZXRlQ2FsbHMuc2l6ZSgpICYmIG1fdHJhbnNhY3Rp
b25zLnNpemUoKSA9PSB0cmFuc2FjdGlvbnMuc2l6ZSgpKSB7CisgICAgLy8gRklYTUU6IEFkZCBh
IHRlc3QgZm9yIHRoZSBtX3BlbmRpbmdPcGVuQ2FsbHPCt2FuZCBtX3BlbmRpbmdPcGVuV2l0aFZl
cnNpb25DYWxscyBjYXNlcyBiZWxvdy4KKyAgICBpZiAoIWNvbm5lY3Rpb25Db3VudCgpICYmICFt
X3BlbmRpbmdPcGVuQ2FsbHMuc2l6ZSgpICYmICFtX3BlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxs
cy5zaXplKCkgJiYgIW1fcGVuZGluZ0RlbGV0ZUNhbGxzLnNpemUoKSkgeworICAgICAgICBUcmFu
c2FjdGlvblNldCB0cmFuc2FjdGlvbnMobV90cmFuc2FjdGlvbnMpOwogICAgICAgICBmb3IgKFRy
YW5zYWN0aW9uU2V0Ojpjb25zdF9pdGVyYXRvciBpdCA9IHRyYW5zYWN0aW9ucy5iZWdpbigpOyBp
dCAhPSB0cmFuc2FjdGlvbnMuZW5kKCk7ICsraXQpCiAgICAgICAgICAgICAoKml0KS0+YWJvcnQo
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0
YWJhc2VCYWNrZW5kSW1wbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
RGF0YWJhc2VCYWNrZW5kSW1wbC5oCmluZGV4IDdmMzFjYjA0ZWE0ZWRiZmNkNjcyMTdjMTljOGNh
N2EyYzk3M2JlMTEuLjIyY2NjNDMyMjBiNTA0ZmU3MDY4NTY3YjU5YTQ3NjI1NWVlYTg1NGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFj
a2VuZEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRh
YmFzZUJhY2tlbmRJbXBsLmgKQEAgLTU1LDkgKzU1LDggQEAgcHVibGljOgogICAgIHN0YXRpYyBj
b25zdCBpbnQ2NF90IEludmFsaWRJZCA9IDA7CiAgICAgaW50NjRfdCBpZCgpIGNvbnN0IHsgcmV0
dXJuIG1faWQ7IH0KIAotICAgIHZvaWQgcmVnaXN0ZXJGcm9udGVuZENhbGxiYWNrcyhQYXNzUmVm
UHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPik7Ci0gICAgdm9pZCBvcGVuQ29ubmVjdGlvbihQYXNz
UmVmUHRyPElEQkNhbGxiYWNrcz4pOwotICAgIHZvaWQgb3BlbkNvbm5lY3Rpb25XaXRoVmVyc2lv
bihQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIGludDY0X3QgdmVyc2lvbik7CisgICAgdm9pZCBv
cGVuQ29ubmVjdGlvbihQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8SURCRGF0
YWJhc2VDYWxsYmFja3M+KTsKKyAgICB2b2lkIG9wZW5Db25uZWN0aW9uV2l0aFZlcnNpb24oUGFz
c1JlZlB0cjxJREJDYWxsYmFja3M+LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiwg
aW50NjRfdCB2ZXJzaW9uKTsKICAgICB2b2lkIGRlbGV0ZURhdGFiYXNlKFBhc3NSZWZQdHI8SURC
Q2FsbGJhY2tzPik7CiAKICAgICAvLyBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UKQEAgLTc5
LDkgKzc4LDkgQEAgcHJpdmF0ZToKICAgICBJREJEYXRhYmFzZUJhY2tlbmRJbXBsKGNvbnN0IFN0
cmluZyYgbmFtZSwgSURCQmFja2luZ1N0b3JlKiBkYXRhYmFzZSwgSURCVHJhbnNhY3Rpb25Db29y
ZGluYXRvciosIElEQkZhY3RvcnlCYWNrZW5kSW1wbCosIGNvbnN0IFN0cmluZyYgdW5pcXVlSWRl
bnRpZmllcik7CiAKICAgICBib29sIG9wZW5JbnRlcm5hbCgpOwotICAgIHZvaWQgcnVuSW50VmVy
c2lvbkNoYW5nZVRyYW5zYWN0aW9uKGludDY0X3QgcmVxdWVzdGVkVmVyc2lvbiwgUGFzc1JlZlB0
cjxJREJDYWxsYmFja3M+KTsKKyAgICB2b2lkIHJ1bkludFZlcnNpb25DaGFuZ2VUcmFuc2FjdGlv
bihpbnQ2NF90IHJlcXVlc3RlZFZlcnNpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgUGFz
c1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4pOwogICAgIHZvaWQgbG9hZE9iamVjdFN0b3Jl
cygpOwotICAgIGludDMyX3QgY29ubmVjdGlvbkNvdW50KCk7CisgICAgc2l6ZV90IGNvbm5lY3Rp
b25Db3VudCgpOwogICAgIHZvaWQgcHJvY2Vzc1BlbmRpbmdDYWxscygpOwogCiAgICAgc3RhdGlj
IHZvaWQgY3JlYXRlT2JqZWN0U3RvcmVJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
UGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbXBsPiwgUGFzc1JlZlB0cjxJREJPYmplY3RT
dG9yZUJhY2tlbmRJbXBsPiwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPik7
CkBAIC0xMjcsMTAgKzEyNiw2IEBAIHByaXZhdGU6CiAgICAgY2xhc3MgUGVuZGluZ0RlbGV0ZUNh
bGw7CiAgICAgRGVxdWU8UmVmUHRyPFBlbmRpbmdEZWxldGVDYWxsPiA+IG1fcGVuZGluZ0RlbGV0
ZUNhbGxzOwogCi0gICAgLy8gRklYTUU6IEVsaW1pbmF0ZSB0aGUgbGltYm8gc3RhdGUgYmV0d2Vl
biBvcGVuQ29ubmVjdGlvbigpIGFuZCByZWdpc3RlckZyb250ZW5kQ2FsbGJhY2tzKCkKLSAgICAv
LyB0aGF0IHRoaXMgY291bnRlciB0cmFja3MuCi0gICAgaW50MzJfdCBtX3BlbmRpbmdDb25uZWN0
aW9uQ291bnQ7Ci0KICAgICB0eXBlZGVmIExpc3RIYXNoU2V0PFJlZlB0cjxJREJEYXRhYmFzZUNh
bGxiYWNrcz4gPiBEYXRhYmFzZUNhbGxiYWNrc1NldDsKICAgICBEYXRhYmFzZUNhbGxiYWNrc1Nl
dCBtX2RhdGFiYXNlQ2FsbGJhY2tzU2V0OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZS5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmgK
aW5kZXggMGY2YjM1ZDYwOTM2NGRjYWNiYzE3MTQ2MzFmZDE2YzU5MWRjY2Q1NS4uZTRmYzBjYzhh
NzJhYTk1OGUzMjczOTA4NDQzNTVhMTkwNWVkNzcxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJm
YWNlLmgKQEAgLTYwLDggKzYwLDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRWZXJz
aW9uKGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBQYXNz
UmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiwgRXhjZXB0aW9uQ29kZSYpID0gMDsKICAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiB0cmFuc2Fj
dGlvbihET01TdHJpbmdMaXN0KiBzdG9yZU5hbWVzLCB1bnNpZ25lZCBzaG9ydCBtb2RlLCBFeGNl
cHRpb25Db2RlJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjbG9zZShQYXNzUmVmUHRyPElEQkRh
dGFiYXNlQ2FsbGJhY2tzPikgPSAwOwotCi0gICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyRnJvbnRl
bmRDYWxsYmFja3MoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4pID0gMDsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwuY3BwCmluZGV4IGY2
NTY1ZGNhMWJkODIyZmU2ZGMxMzU5NjhjM2IwZWRiOTk5NWEzYjguLjk3MGQzYTE2N2NhZjk5NmM3
ZjAzMWZmNTRhNGYxNTkyNDlmMWFhMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsLmNwcApAQCAt
MzIsMTMgKzMyLDEzIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxJREJE
YXRhYmFzZUNhbGxiYWNrc0ltcGw+IElEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbDo6Y3JlYXRlKElE
QkRhdGFiYXNlKiBkYXRhYmFzZSkKK1Bhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3NJbXBs
PiBJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGw6OmNyZWF0ZSgpCiB7Ci0gICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwoZGF0YWJhc2UpKTsKKyAgICByZXR1cm4g
YWRvcHRSZWYobmV3IElEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbCgpKTsKIH0KIAotSURCRGF0YWJh
c2VDYWxsYmFja3NJbXBsOjpJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwoSURCRGF0YWJhc2UqIGRh
dGFiYXNlKQotICAgIDogbV9kYXRhYmFzZShkYXRhYmFzZSkKK0lEQkRhdGFiYXNlQ2FsbGJhY2tz
SW1wbDo6SURCRGF0YWJhc2VDYWxsYmFja3NJbXBsKCkKKyAgICA6IG1fZGF0YWJhc2UoMCkKIHsK
IH0KIApAQCAtNjQsMTAgKzY0LDExIEBAIHZvaWQgSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsOjpv
blZlcnNpb25DaGFuZ2UoaW50NjRfdCBvbGRWZXJzaW9uLCBpbnQ2NF90IG5ld1ZlCiAgICAgICAg
IG1fZGF0YWJhc2UtPm9uVmVyc2lvbkNoYW5nZShvbGRWZXJzaW9uLCBuZXdWZXJzaW9uKTsKIH0K
IAotdm9pZCBJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGw6OnVucmVnaXN0ZXJEYXRhYmFzZShJREJE
YXRhYmFzZSogZGF0YWJhc2UpCit2b2lkIElEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbDo6Y29ubmVj
dChJREJEYXRhYmFzZSogZGF0YWJhc2UpCiB7Ci0gICAgQVNTRVJUX1VOVVNFRChkYXRhYmFzZSwg
ZGF0YWJhc2UgPT0gbV9kYXRhYmFzZSk7Ci0gICAgbV9kYXRhYmFzZSA9IDA7CisgICAgQVNTRVJU
KCFtX2RhdGFiYXNlKTsKKyAgICBBU1NFUlQoZGF0YWJhc2UpOworICAgIG1fZGF0YWJhc2UgPSBk
YXRhYmFzZTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwu
aAppbmRleCA3OTJiZTNhZDc2ZjU0ZjAzNTlkNmFmMTYwM2U1ZGQ5M2I5MWQ2YmExLi43NDk3MDcw
MTBkYmY5NzcyNTExYjZkNDczY2VhZDEwYjI4MjU3MjgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwu
aApAQCAtMzgsMTggKzM4LDIwIEBAIGNsYXNzIElEQkRhdGFiYXNlOwogCiBjbGFzcyBJREJEYXRh
YmFzZUNhbGxiYWNrc0ltcGwgOiBwdWJsaWMgSURCRGF0YWJhc2VDYWxsYmFja3MgewogcHVibGlj
OgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbD4gY3JlYXRl
KElEQkRhdGFiYXNlKik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFj
a3NJbXBsPiBjcmVhdGUoKTsKICAgICB2aXJ0dWFsIH5JREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwo
KTsKIAorICAgIC8vIElEQkRhdGFiYXNlQ2FsbGJhY2tzCiAgICAgdmlydHVhbCB2b2lkIG9uRm9y
Y2VkQ2xvc2UoKTsKICAgICB2aXJ0dWFsIHZvaWQgb25WZXJzaW9uQ2hhbmdlKGNvbnN0IFN0cmlu
ZyYgdmVyc2lvbik7CiAgICAgdmlydHVhbCB2b2lkIG9uVmVyc2lvbkNoYW5nZShpbnQ2NF90IG9s
ZFZlcnNpb24sIGludDY0X3QgbmV3VmVyc2lvbik7Ci0gICAgdm9pZCB1bnJlZ2lzdGVyRGF0YWJh
c2UoSURCRGF0YWJhc2UqKTsKKworICAgIHZvaWQgY29ubmVjdChJREJEYXRhYmFzZSopOwogCiBw
cml2YXRlOgotICAgIElEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbChJREJEYXRhYmFzZSopOworICAg
IElEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbCgpOwogCi0gICAgLy8gbV9kYXRhYmFzZSBoYXMgYSBS
ZWZQdHIgdG8gdGhpcywgc28gdXNlIGEgd2VhayBwb2ludGVyIHRvIGF2b2lkIGEgY3ljbGUuCisg
ICAgLy8gVGhlIGluaXRpYWwgSURCT3BlbkRCUmVxdWVzdCBvciBmaW5hbCBJREJEYXRhYmFzZSBt
YWludGFpbnMgYSBSZWZQdHIgdG8gdGhpcwogICAgIElEQkRhdGFiYXNlKiBtX2RhdGFiYXNlOwog
fTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFj
dG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNw
cAppbmRleCBjMjA2MzVmMmFhMzdkZDk1MWMzYzg0ZjQzNDYzNDExMDYwZTExN2EwLi40ZTMwMjMx
NjcxOTkwMzJkNjRkYzliOGJmODEwNGYwMDMwNjkxY2QzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcApAQCAtMTIwLDggKzEyMCw5IEBAIFBh
c3NSZWZQdHI8SURCT3BlbkRCUmVxdWVzdD4gSURCRmFjdG9yeTo6b3BlbihTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0LCBjCiAgICAgaWYgKCFpc0NvbnRleHRWYWxpZChjb250ZXh0KSkK
ICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBSZWZQdHI8SURCT3BlbkRCUmVxdWVzdD4gcmVxdWVz
dCA9IElEQk9wZW5EQlJlcXVlc3Q6OmNyZWF0ZShjb250ZXh0LCBJREJBbnk6OmNyZWF0ZSh0aGlz
KSwgdmVyc2lvbik7Ci0gICAgbV9iYWNrZW5kLT5vcGVuKG5hbWUsIHZlcnNpb24sIHJlcXVlc3Qs
IGNvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCksIGNvbnRleHQsIGdldEluZGV4ZWREQkRhdGFiYXNl
UGF0aChjb250ZXh0KSk7CisgICAgUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbD4gZGF0
YWJhc2VDYWxsYmFja3MgPSBJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGw6OmNyZWF0ZSgpOworICAg
IFJlZlB0cjxJREJPcGVuREJSZXF1ZXN0PiByZXF1ZXN0ID0gSURCT3BlbkRCUmVxdWVzdDo6Y3Jl
YXRlKGNvbnRleHQsIElEQkFueTo6Y3JlYXRlKHRoaXMpLCBkYXRhYmFzZUNhbGxiYWNrcywgdmVy
c2lvbik7CisgICAgbV9iYWNrZW5kLT5vcGVuKG5hbWUsIHZlcnNpb24sIHJlcXVlc3QsIGRhdGFi
YXNlQ2FsbGJhY2tzLCBjb250ZXh0LT5zZWN1cml0eU9yaWdpbigpLCBjb250ZXh0LCBnZXRJbmRl
eGVkREJEYXRhYmFzZVBhdGgoY29udGV4dCkpOwogICAgIHJldHVybiByZXF1ZXN0OwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5QmFj
a2VuZEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9y
eUJhY2tlbmRJbXBsLmNwcAppbmRleCA4ZGE1YzAyZTQyM2Y2ZjY0ZTU3OTczMGRiNzNmYTI5ZWMy
YmU0NjA2Li5jN2VmODYwZTEzZTJkMTgxNzlhZTVlY2MwYzc1OTcwOWI4ODQzZGU5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5QmFja2VuZElt
cGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnlC
YWNrZW5kSW1wbC5jcHAKQEAgLTE1MCw3ICsxNTAsNyBAQCBQYXNzUmVmUHRyPElEQkJhY2tpbmdT
dG9yZT4gSURCRmFjdG9yeUJhY2tlbmRJbXBsOjpvcGVuQmFja2luZ1N0b3JlKFBhc3NSZWZQdHI8
UwogICAgIHJldHVybiAwOwogfQogCi12b2lkIElEQkZhY3RvcnlCYWNrZW5kSW1wbDo6b3Blbihj
b25zdCBTdHJpbmcmIG5hbWUsIGludDY0X3QgdmVyc2lvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFj
a3M+IGNhbGxiYWNrcywgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gcHJwU2VjdXJpdHlPcmln
aW4sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIGRhdGFEaXJlY3Rvcnkp
Cit2b2lkIElEQkZhY3RvcnlCYWNrZW5kSW1wbDo6b3Blbihjb25zdCBTdHJpbmcmIG5hbWUsIGlu
dDY0X3QgdmVyc2lvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgUGFzc1Jl
ZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gZGF0YWJhc2VDYWxsYmFja3MsIFBhc3NSZWZQdHI8
U2VjdXJpdHlPcmlnaW4+IHBycFNlY3VyaXR5T3JpZ2luLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgY29uc3QgU3RyaW5nJiBkYXRhRGlyZWN0b3J5KQogewogICAgIFJlZlB0cjxTZWN1cml0eU9y
aWdpbj4gc2VjdXJpdHlPcmlnaW4gPSBwcnBTZWN1cml0eU9yaWdpbjsKICAgICBjb25zdCBTdHJp
bmcgdW5pcXVlSWRlbnRpZmllciA9IGNvbXB1dGVVbmlxdWVJZGVudGlmaWVyKG5hbWUsIHNlY3Vy
aXR5T3JpZ2luLmdldCgpKTsKQEAgLTE3NSw5ICsxNzUsOSBAQCB2b2lkIElEQkZhY3RvcnlCYWNr
ZW5kSW1wbDo6b3Blbihjb25zdCBTdHJpbmcmIG5hbWUsIGludDY0X3QgdmVyc2lvbiwgUGFzc1Jl
ZlB0cgogICAgICAgICBkYXRhYmFzZUJhY2tlbmQgPSBpdC0+c2Vjb25kOwogCiAgICAgaWYgKHZl
cnNpb24gPT0gSURCRGF0YWJhc2VNZXRhZGF0YTo6Tm9JbnRWZXJzaW9uKQotICAgICAgICBkYXRh
YmFzZUJhY2tlbmQtPm9wZW5Db25uZWN0aW9uKGNhbGxiYWNrcyk7CisgICAgICAgIGRhdGFiYXNl
QmFja2VuZC0+b3BlbkNvbm5lY3Rpb24oY2FsbGJhY2tzLCBkYXRhYmFzZUNhbGxiYWNrcyk7CiAg
ICAgZWxzZQotICAgICAgICBkYXRhYmFzZUJhY2tlbmQtPm9wZW5Db25uZWN0aW9uV2l0aFZlcnNp
b24oY2FsbGJhY2tzLCB2ZXJzaW9uKTsKKyAgICAgICAgZGF0YWJhc2VCYWNrZW5kLT5vcGVuQ29u
bmVjdGlvbldpdGhWZXJzaW9uKGNhbGxiYWNrcywgZGF0YWJhc2VDYWxsYmFja3MsIHZlcnNpb24p
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5QmFja2VuZEltcGwuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5oCmluZGV4IGNhZDNi
NWEyNGIyOTlhOTI5OWMyYWQyOTRlM2IyZWEwNGNmZDcyYTUuLjNhZTA3MDMxMGRhZTg3NjQzNTk2
Y2E5YjI5OTNjMzNhNDY3MGIxYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5oCkBAIC01Nyw3ICs1Nyw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlSURCQmFja2luZ1N0b3JlKGNvbnN0IFN0
cmluZyYgZmlsZUlkZW50aWZpZXIpOwogCiAgICAgdmlydHVhbCB2b2lkIGdldERhdGFiYXNlTmFt
ZXMoUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiwg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgZGF0YURpcik7Ci0gICAgdmly
dHVhbCB2b2lkIG9wZW4oY29uc3QgU3RyaW5nJiBuYW1lLCBpbnQ2NF90IHZlcnNpb24sIFBhc3NS
ZWZQdHI8SURCQ2FsbGJhY2tzPiwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4sIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIGRhdGFEaXIpOworICAgIHZpcnR1YWwgdm9p
ZCBvcGVuKGNvbnN0IFN0cmluZyYgbmFtZSwgaW50NjRfdCB2ZXJzaW9uLCBQYXNzUmVmUHRyPElE
QkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+LCBQYXNzUmVmUHRy
PFNlY3VyaXR5T3JpZ2luPiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYg
ZGF0YURpcik7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZURhdGFiYXNlKGNvbnN0IFN0cmluZyYg
bmFtZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2lu
PiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgZGF0YURpcik7CiAKIHBy
b3RlY3RlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJGYWN0b3J5QmFja2VuZEludGVyZmFjZS5oCmluZGV4IDRlYTVkOGEzMzBmZDA0MWFm
NTFjYjJhOTU0NGVhNDhhY2Y2NjZmZWYuLjBhYTNiYTJiNzgwZDA3OTc2NjNmNjBmNTgyM2ExZGIy
Y2FjNjg4M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2UuaApAQCAtNTQsNyArNTQsNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB+SURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2UoKSB7IH0KIAog
ICAgIHZpcnR1YWwgdm9pZCBnZXREYXRhYmFzZU5hbWVzKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tz
PiwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBj
b25zdCBTdHJpbmcmIGRhdGFEaXIpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgb3Blbihjb25zdCBT
dHJpbmcmIG5hbWUsIGludDY0X3QgdmVyc2lvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBQ
YXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0
IFN0cmluZyYgZGF0YURpcikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBvcGVuKGNvbnN0IFN0cmlu
ZyYgbmFtZSwgaW50NjRfdCB2ZXJzaW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIFBhc3NS
ZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+LCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiwg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgZGF0YURpcikgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBkZWxldGVEYXRhYmFzZShjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQ
dHI8SURCQ2FsbGJhY2tzPiwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4sIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIGRhdGFEaXIpID0gMDsKIH07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9wZW5EQlJlcXVlc3QuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT3BlbkRCUmVxdWVzdC5jcHAK
aW5kZXggZTg5YTc0Y2ZkOWJmYjdmZjc2M2JhNmVlMjVmZDIyYmNmMjQ2OTUwYS4uNmVmMTZjZjAy
OTNhNjkxOTBmOTZjZDNhODVhYzM1MjcyM2ViYjZmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT3BlbkRCUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT3BlbkRCUmVxdWVzdC5jcHAKQEAgLTI5LDYgKzI5
LDcgQEAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIAogI2luY2x1ZGUgIklEQkRhdGFi
YXNlLmgiCisjaW5jbHVkZSAiSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsLmgiCiAjaW5jbHVkZSAi
SURCUGVuZGluZ1RyYW5zYWN0aW9uTW9uaXRvci5oIgogI2luY2x1ZGUgIklEQlRyYWNpbmcuaCIK
ICNpbmNsdWRlICJJREJVcGdyYWRlTmVlZGVkRXZlbnQuaCIKQEAgLTM2LDE1ICszNywxNiBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NSZWZQdHI8SURCT3BlbkRCUmVxdWVzdD4gSURC
T3BlbkRCUmVxdWVzdDo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBh
c3NSZWZQdHI8SURCQW55PiBzb3VyY2UsIGludDY0X3QgdmVyc2lvbikKK1Bhc3NSZWZQdHI8SURC
T3BlbkRCUmVxdWVzdD4gSURCT3BlbkRCUmVxdWVzdDo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8SURCQW55PiBzb3VyY2UsIFBhc3NSZWZQdHI8SURC
RGF0YWJhc2VDYWxsYmFja3NJbXBsPiBjYWxsYmFja3MsIGludDY0X3QgdmVyc2lvbikKIHsKLSAg
ICBSZWZQdHI8SURCT3BlbkRCUmVxdWVzdD4gcmVxdWVzdChhZG9wdFJlZihuZXcgSURCT3BlbkRC
UmVxdWVzdChjb250ZXh0LCBzb3VyY2UsIHZlcnNpb24pKSk7CisgICAgUmVmUHRyPElEQk9wZW5E
QlJlcXVlc3Q+IHJlcXVlc3QoYWRvcHRSZWYobmV3IElEQk9wZW5EQlJlcXVlc3QoY29udGV4dCwg
c291cmNlLCBjYWxsYmFja3MsIHZlcnNpb24pKSk7CiAgICAgcmVxdWVzdC0+c3VzcGVuZElmTmVl
ZGVkKCk7CiAgICAgcmV0dXJuIHJlcXVlc3QucmVsZWFzZSgpOwogfQogCi1JREJPcGVuREJSZXF1
ZXN0OjpJREJPcGVuREJSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBh
c3NSZWZQdHI8SURCQW55PiBzb3VyY2UsIGludDY0X3QgdmVyc2lvbikKK0lEQk9wZW5EQlJlcXVl
c3Q6OklEQk9wZW5EQlJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFz
c1JlZlB0cjxJREJBbnk+IHNvdXJjZSwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrc0lt
cGw+IGNhbGxiYWNrcywgaW50NjRfdCB2ZXJzaW9uKQogICAgIDogSURCUmVxdWVzdChjb250ZXh0
LCBzb3VyY2UsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZTo6Tm9ybWFsVGFzaywgMCkK
KyAgICAsIG1fZGF0YWJhc2VDYWxsYmFja3MoY2FsbGJhY2tzKQogICAgICwgbV92ZXJzaW9uKHZl
cnNpb24pCiB7CiAgICAgQVNTRVJUKCFtX3Jlc3VsdCk7CkBAIC03Miw5ICs3NCwxMyBAQCB2b2lk
IElEQk9wZW5EQlJlcXVlc3Q6Om9uVXBncmFkZU5lZWRlZChpbnQ2NF90IG9sZFZlcnNpb24sIFBh
c3NSZWZQdHI8SURCVHJhbnNhYwogICAgIGlmICghc2hvdWxkRW5xdWV1ZUV2ZW50KCkpCiAgICAg
ICAgIHJldHVybjsKIAorICAgIEFTU0VSVChtX2RhdGFiYXNlQ2FsbGJhY2tzKTsKKwogICAgIFJl
ZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+IGRhdGFiYXNlQmFja2VuZCA9IHBycERh
dGFiYXNlQmFja2VuZDsKICAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNl
PiB0cmFuc2FjdGlvbkJhY2tlbmQgPSBwcnBUcmFuc2FjdGlvbkJhY2tlbmQ7Ci0gICAgUmVmUHRy
PElEQkRhdGFiYXNlPiBpZGJEYXRhYmFzZSA9IElEQkRhdGFiYXNlOjpjcmVhdGUoc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpLCBkYXRhYmFzZUJhY2tlbmQpOworICAgIFJlZlB0cjxJREJEYXRhYmFz
ZT4gaWRiRGF0YWJhc2UgPSBJREJEYXRhYmFzZTo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSwgZGF0YWJhc2VCYWNrZW5kLCBtX2RhdGFiYXNlQ2FsbGJhY2tzKTsKKyAgICBtX2RhdGFi
YXNlQ2FsbGJhY2tzLT5jb25uZWN0KGlkYkRhdGFiYXNlLmdldCgpKTsKKyAgICBtX2RhdGFiYXNl
Q2FsbGJhY2tzID0gMDsKIAogICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbj4gZnJvbnRlbmQgPSBJ
REJUcmFuc2FjdGlvbjo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgdHJhbnNhY3Rp
b25CYWNrZW5kLCBJREJUcmFuc2FjdGlvbjo6VkVSU0lPTl9DSEFOR0UsIGlkYkRhdGFiYXNlLmdl
dCgpLCB0aGlzKTsKICAgICB0cmFuc2FjdGlvbkJhY2tlbmQtPnNldENhbGxiYWNrcyhmcm9udGVu
ZC5nZXQoKSk7CkBAIC05OCwxMSArMTA0LDE0IEBAIHZvaWQgSURCT3BlbkRCUmVxdWVzdDo6b25T
dWNjZXNzKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiBiYWNrZW5kCiAg
ICAgaWYgKG1fcmVzdWx0KSB7CiAgICAgICAgIGlkYkRhdGFiYXNlID0gbV9yZXN1bHQtPmlkYkRh
dGFiYXNlKCk7CiAgICAgICAgIEFTU0VSVChpZGJEYXRhYmFzZSk7CisgICAgICAgIEFTU0VSVCgh
bV9kYXRhYmFzZUNhbGxiYWNrcyk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgaWRiRGF0YWJhc2Ug
PSBJREJEYXRhYmFzZTo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgYmFja2VuZCk7
CisgICAgICAgIEFTU0VSVChtX2RhdGFiYXNlQ2FsbGJhY2tzKTsKKyAgICAgICAgaWRiRGF0YWJh
c2UgPSBJREJEYXRhYmFzZTo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgYmFja2Vu
ZCwgbV9kYXRhYmFzZUNhbGxiYWNrcyk7CisgICAgICAgIG1fZGF0YWJhc2VDYWxsYmFja3MtPmNv
bm5lY3QoaWRiRGF0YWJhc2UuZ2V0KCkpOworICAgICAgICBtX2RhdGFiYXNlQ2FsbGJhY2tzID0g
MDsKICAgICAgICAgbV9yZXN1bHQgPSBJREJBbnk6OmNyZWF0ZShpZGJEYXRhYmFzZS5nZXQoKSk7
CiAgICAgfQotICAgIGlkYkRhdGFiYXNlLT5yZWdpc3RlckZyb250ZW5kQ2FsbGJhY2tzKCk7CiAg
ICAgZW5xdWV1ZUV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLnN1Y2Nlc3NFdmVudCwg
ZmFsc2UsIGZhbHNlKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQk9wZW5EQlJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQk9wZW5EQlJlcXVlc3QuaAppbmRleCBjODdkYjdlZDFiZGQyZDQwNTNlNzRjMTAy
YTJlYzZkNjk1OTcyZTNmLi4xZTg0YjU0YzlkYTUwN2FmNTUxOWM4MDg4OTg0NmQ0MmVmZGVkNDlm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPcGVuREJS
ZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT3BlbkRC
UmVxdWVzdC5oCkBAIC0zMiw5ICszMiwxMSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2Ns
YXNzIElEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbDsKKwogY2xhc3MgSURCT3BlbkRCUmVxdWVzdCA6
IHB1YmxpYyBJREJSZXF1ZXN0IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJP
cGVuREJSZXF1ZXN0PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8
SURCQW55PiBzb3VyY2UsIGludDY0X3QgdmVyc2lvbik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8
SURCT3BlbkRCUmVxdWVzdD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVm
UHRyPElEQkFueT4gc291cmNlLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbD4s
IGludDY0X3QgdmVyc2lvbik7CiAgICAgdmlydHVhbCB+SURCT3BlbkRCUmVxdWVzdCgpOwogCiAg
ICAgdXNpbmcgSURCUmVxdWVzdDo6b25TdWNjZXNzOwpAQCAtNTMsOCArNTUsOSBAQCBwcm90ZWN0
ZWQ6CiAgICAgdmlydHVhbCBib29sIHNob3VsZEVucXVldWVFdmVudCgpIGNvbnN0IE9WRVJSSURF
OwogCiBwcml2YXRlOgotICAgIElEQk9wZW5EQlJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIFBhc3NSZWZQdHI8SURCQW55PiBzb3VyY2UsIGludDY0X3QgdmVyc2lvbik7CisgICAgSURC
T3BlbkRCUmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJBbnk+
IHNvdXJjZSwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGw+LCBpbnQ2NF90IHZl
cnNpb24pOwogCisgICAgUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbD4gbV9kYXRhYmFz
ZUNhbGxiYWNrczsKICAgICBpbnQ2NF90IG1fdmVyc2lvbjsKIH07CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcAppbmRleCAyMWU1
ZjMyOGUzNDU1Mzg5Y2UwODU2NjIwNzBlZWVhMTQ2NTVmNjI4Li5lMWUwNWYxZjI4ODY4ZGIyZDI4
OWYyZWYwNWNlYjQyZjUyNTBlY2NkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCkBAIC0yOTQsMTIgKzI5NCwxMCBAQCB2b2lk
IElEQlRyYW5zYWN0aW9uOjpvbkFib3J0KCkKICAgICB9CiAgICAgbV9vYmplY3RTdG9yZUNsZWFu
dXBNYXAuY2xlYXIoKTsKICAgICBjbG9zZU9wZW5DdXJzb3JzKCk7Ci0gICAgbV9kYXRhYmFzZS0+
dHJhbnNhY3Rpb25GaW5pc2hlZCh0aGlzKTsKLQotICAgIGlmIChtX2NvbnRleHRTdG9wcGVkIHx8
ICFzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCi0gICAgICAgIHJldHVybjsKIAorICAgIC8vIEVu
cXVldWUgZXZlbnRzIGJlZm9yZSBub3RpZnlpbmcgZGF0YWJhc2UsIGFzIGRhdGFiYXNlIG1heSBj
bG9zZSB3aGljaCBlbnF1ZXVlcyBtb3JlIGV2ZW50cyBhbmQgb3JkZXIgbWF0dGVycy4KICAgICBl
bnF1ZXVlRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuYWJvcnRFdmVudCwgdHJ1ZSwg
ZmFsc2UpKTsKKyAgICBtX2RhdGFiYXNlLT50cmFuc2FjdGlvbkZpbmlzaGVkKHRoaXMpOwogfQog
CiB2b2lkIElEQlRyYW5zYWN0aW9uOjpvbkNvbXBsZXRlKCkKQEAgLTMwOSwxMiArMzA3LDEwIEBA
IHZvaWQgSURCVHJhbnNhY3Rpb246Om9uQ29tcGxldGUoKQogICAgIG1fc3RhdGUgPSBGaW5pc2hp
bmc7CiAgICAgbV9vYmplY3RTdG9yZUNsZWFudXBNYXAuY2xlYXIoKTsKICAgICBjbG9zZU9wZW5D
dXJzb3JzKCk7Ci0gICAgbV9kYXRhYmFzZS0+dHJhbnNhY3Rpb25GaW5pc2hlZCh0aGlzKTsKLQot
ICAgIGlmIChtX2NvbnRleHRTdG9wcGVkIHx8ICFzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCi0g
ICAgICAgIHJldHVybjsKIAorICAgIC8vIEVucXVldWUgZXZlbnRzIGJlZm9yZSBub3RpZnlpbmcg
ZGF0YWJhc2UsIGFzIGRhdGFiYXNlIG1heSBjbG9zZSB3aGljaCBlbnF1ZXVlcyBtb3JlIGV2ZW50
cyBhbmQgb3JkZXIgbWF0dGVycy4KICAgICBlbnF1ZXVlRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVu
dE5hbWVzKCkuY29tcGxldGVFdmVudCwgZmFsc2UsIGZhbHNlKSk7CisgICAgbV9kYXRhYmFzZS0+
dHJhbnNhY3Rpb25GaW5pc2hlZCh0aGlzKTsKIH0KIAogYm9vbCBJREJUcmFuc2FjdGlvbjo6aGFz
UGVuZGluZ0FjdGl2aXR5KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwCmluZGV4IDg3OTYxZDgyYzA5MGJmMjJmNTc3
YzNlNGJlZTdlMjUxZjc3ZWYxZDUuLjJlZWYyY2ZkMWVkMTljYWZmMDAwMWE2Y2VhMGFjZGZmMWVi
OTlhOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRl
eGVkREJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvcklu
ZGV4ZWREQkFnZW50LmNwcApAQCAtMTg2LDM1ICsxODYsMzUgQEAgcHJpdmF0ZToKICAgICBTdHJp
bmcgbV9zZWN1cml0eU9yaWdpbjsKIH07CiAKLWNsYXNzIEV4ZWN1dGFibGVXaXRoRGF0YWJhc2Ug
OiBwdWJsaWMgUmVmQ291bnRlZDxFeGVjdXRhYmxlV2l0aERhdGFiYXNlPiB7Ci1wdWJsaWM6Ci0g
ICAgdmlydHVhbCB+RXhlY3V0YWJsZVdpdGhEYXRhYmFzZSgpIHsgfTsKLSAgICB2b2lkIHN0YXJ0
KElEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlKiwgU2VjdXJpdHlPcmlnaW4qLCBTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUpOwotICAgIHZpcnR1YWwg
dm9pZCBleGVjdXRlKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPikgPSAw
OwotfTsKLQogY2xhc3MgRGF0YWJhc2VDb25uZWN0aW9uIHsKIHB1YmxpYzoKICAgICBEYXRhYmFz
ZUNvbm5lY3Rpb24oKQogICAgICAgICA6IG1faWRiRGF0YWJhc2VDYWxsYmFja3MoSW5zcGVjdG9y
SURCRGF0YWJhc2VDYWxsYmFja3M6OmNyZWF0ZSgpKSB7IH0KIAotICAgIHZvaWQgY29ubmVjdChQ
YXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4gaWRiRGF0YWJhc2UpCi0gICAg
ewotICAgICAgICBtX2lkYkRhdGFiYXNlID0gaWRiRGF0YWJhc2U7Ci0gICAgICAgIG1faWRiRGF0
YWJhc2UtPnJlZ2lzdGVyRnJvbnRlbmRDYWxsYmFja3MobV9pZGJEYXRhYmFzZUNhbGxiYWNrcyk7
Ci0gICAgfQotCiAgICAgfkRhdGFiYXNlQ29ubmVjdGlvbigpCiAgICAgewogICAgICAgICBpZiAo
bV9pZGJEYXRhYmFzZSkKICAgICAgICAgICAgIG1faWRiRGF0YWJhc2UtPmNsb3NlKG1faWRiRGF0
YWJhc2VDYWxsYmFja3MpOwogICAgIH0KIAorICAgIHZvaWQgY29ubmVjdChQYXNzUmVmUHRyPElE
QkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4gZGF0YWJhc2UpIHsgbV9pZGJEYXRhYmFzZSA9IGRh
dGFiYXNlOyB9CisgICAgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gY2FsbGJhY2tz
KCkgeyByZXR1cm4gbV9pZGJEYXRhYmFzZUNhbGxiYWNrczsgfQorCiBwcml2YXRlOgogICAgIFJl
ZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+IG1faWRiRGF0YWJhc2U7CiAgICAgUmVm
UHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBtX2lkYkRhdGFiYXNlQ2FsbGJhY2tzOwogfTsKIAor
Y2xhc3MgRXhlY3V0YWJsZVdpdGhEYXRhYmFzZSA6IHB1YmxpYyBSZWZDb3VudGVkPEV4ZWN1dGFi
bGVXaXRoRGF0YWJhc2U+IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5FeGVjdXRhYmxlV2l0aERh
dGFiYXNlKCkgeyB9OworICAgIHZvaWQgc3RhcnQoSURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2Uq
LCBTZWN1cml0eU9yaWdpbiosIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcm
IGRhdGFiYXNlTmFtZSk7CisgICAgdm9pZCBjb25uZWN0KFBhc3NSZWZQdHI8SURCRGF0YWJhc2VC
YWNrZW5kSW50ZXJmYWNlPiBkYXRhYmFzZSkgeyBtX2Nvbm5lY3Rpb24uY29ubmVjdChkYXRhYmFz
ZSk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZXhlY3V0ZShQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFj
a2VuZEludGVyZmFjZT4pID0gMDsKK3ByaXZhdGU6CisgICAgRGF0YWJhc2VDb25uZWN0aW9uIG1f
Y29ubmVjdGlvbjsKK307CisKIGNsYXNzIE9wZW5EYXRhYmFzZUNhbGxiYWNrIDogcHVibGljIElu
c3BlY3RvcklEQkNhbGxiYWNrIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxPcGVu
RGF0YWJhc2VDYWxsYmFjaz4gY3JlYXRlKEV4ZWN1dGFibGVXaXRoRGF0YWJhc2UqIGV4ZWN1dGFi
bGVXaXRoRGF0YWJhc2UpCkBAIC0yMjcsNiArMjI3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+IHBy
cERhdGFiYXNlKQogICAgIHsKICAgICAgICAgUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVy
ZmFjZT4gaWRiRGF0YWJhc2UgPSBwcnBEYXRhYmFzZTsKKyAgICAgICAgbV9leGVjdXRhYmxlV2l0
aERhdGFiYXNlLT5jb25uZWN0KGlkYkRhdGFiYXNlKTsKICAgICAgICAgbV9leGVjdXRhYmxlV2l0
aERhdGFiYXNlLT5leGVjdXRlKGlkYkRhdGFiYXNlKTsKICAgICB9CiAKQEAgLTIzOSw3ICsyNDAs
NyBAQCBwcml2YXRlOgogdm9pZCBFeGVjdXRhYmxlV2l0aERhdGFiYXNlOjpzdGFydChJREJGYWN0
b3J5QmFja2VuZEludGVyZmFjZSogaWRiRmFjdG9yeSwgU2VjdXJpdHlPcmlnaW4qIHNlY3VyaXR5
T3JpZ2luLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIGRh
dGFiYXNlTmFtZSkKIHsKICAgICBSZWZQdHI8T3BlbkRhdGFiYXNlQ2FsbGJhY2s+IGNhbGxiYWNr
ID0gT3BlbkRhdGFiYXNlQ2FsbGJhY2s6OmNyZWF0ZSh0aGlzKTsKLSAgICBpZGJGYWN0b3J5LT5v
cGVuKGRhdGFiYXNlTmFtZSwgSURCRGF0YWJhc2VNZXRhZGF0YTo6Tm9JbnRWZXJzaW9uLCBjYWxs
YmFjay5nZXQoKSwgc2VjdXJpdHlPcmlnaW4sIGNvbnRleHQsIFN0cmluZygpKTsKKyAgICBpZGJG
YWN0b3J5LT5vcGVuKGRhdGFiYXNlTmFtZSwgSURCRGF0YWJhc2VNZXRhZGF0YTo6Tm9JbnRWZXJz
aW9uLCBjYWxsYmFjaywgbV9jb25uZWN0aW9uLmNhbGxiYWNrcygpLCBzZWN1cml0eU9yaWdpbiwg
Y29udGV4dCwgU3RyaW5nKCkpOwogfQogCiBzdGF0aWMgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlv
bkJhY2tlbmRJbnRlcmZhY2U+IHRyYW5zYWN0aW9uRm9yRGF0YWJhc2UoSURCRGF0YWJhc2VCYWNr
ZW5kSW50ZXJmYWNlKiBpZGJEYXRhYmFzZSwgY29uc3QgU3RyaW5nJiBvYmplY3RTdG9yZU5hbWUp
CkBAIC0zMTAsNyArMzExLDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBleGVjdXRlKFBh
c3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiBwcnBEYXRhYmFzZSkKICAgICB7
CiAgICAgICAgIFJlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+IGlkYkRhdGFiYXNl
ID0gcHJwRGF0YWJhc2U7Ci0gICAgICAgIG1fY29ubmVjdGlvbi5jb25uZWN0KGlkYkRhdGFiYXNl
KTsKICAgICAgICAgaWYgKCFtX2Zyb250ZW5kUHJvdmlkZXItPmZyb250ZW5kKCkpCiAgICAgICAg
ICAgICByZXR1cm47CiAKQEAgLTM1NSw3ICszNTUsNiBAQCBwcml2YXRlOgogICAgICAgICAsIG1f
cmVxdWVzdElkKHJlcXVlc3RJZCkgeyB9CiAgICAgUmVmUHRyPEluc3BlY3RvckluZGV4ZWREQkFn
ZW50OjpGcm9udGVuZFByb3ZpZGVyPiBtX2Zyb250ZW5kUHJvdmlkZXI7CiAgICAgaW50IG1fcmVx
dWVzdElkOwotICAgIERhdGFiYXNlQ29ubmVjdGlvbiBtX2Nvbm5lY3Rpb247CiB9OwogCiBzdGF0
aWMgUGFzc1JlZlB0cjxJREJLZXk+IGlkYktleUZyb21JbnNwZWN0b3JPYmplY3QoSW5zcGVjdG9y
T2JqZWN0KiBrZXkpCkBAIC01ODcsNyArNTg2LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCBleGVjdXRlKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiBwcnBEYXRh
YmFzZSkKICAgICB7CiAgICAgICAgIFJlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+
IGlkYkRhdGFiYXNlID0gcHJwRGF0YWJhc2U7Ci0gICAgICAgIG1fY29ubmVjdGlvbi5jb25uZWN0
KGlkYkRhdGFiYXNlKTsKICAgICAgICAgaWYgKCFtX2Zyb250ZW5kUHJvdmlkZXItPmZyb250ZW5k
KCkpCiAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTYzMyw3ICs2MzEsNiBAQCBwcml2YXRlOgog
ICAgIFJlZlB0cjxJREJLZXlSYW5nZT4gbV9pZGJLZXlSYW5nZTsKICAgICBpbnQgbV9za2lwQ291
bnQ7CiAgICAgdW5zaWduZWQgbV9wYWdlU2l6ZTsKLSAgICBEYXRhYmFzZUNvbm5lY3Rpb24gbV9j
b25uZWN0aW9uOwogfTsKIAogfSAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYklEQkRhdGFiYXNlLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJJREJEYXRhYmFzZS5oCmluZGV4IGE4YjAzNWM3MjdmODhkZGJmMGNlMTcw
ZWFkNzQxODVjNjhiZTJhZDYuLjU5MmExMGUzZTE5NzAxZmU0MDg4ZjMyOWQxMmVjOTgwMGY5NGQy
OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQkRhdGFi
YXNlLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCRGF0YWJhc2Uu
aApAQCAtNjYsNiArNjYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGNsb3NlKCkgeyBX
RUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgZm9yY2VDbG9z
ZSgpIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAKKyAgICAvLyBGSVhNRTogUmVt
b3ZlIHRoaXMgbWV0aG9kIGFmdGVyIFdLOTA0MTEgY2xlYW51cCBpcyBjb21wbGV0ZSBvbiB0aGUg
Q2hyb21pdW0gc2lkZS4KICAgICB2aXJ0dWFsIHZvaWQgb3BlbihXZWJJREJEYXRhYmFzZUNhbGxi
YWNrcyopIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAKIHByb3RlY3RlZDoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQkZhY3RvcnkuaCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQkZhY3RvcnkuaAppbmRleCBmMTBh
OGViOWFlMGY0OTc5NDE4YTFmYjNmODNlYTY0NzlmNjAyN2E3Li42OWE0NTNhYmNkOTQ0ZTM3MjZh
YjVhYmFlODZlNDdjN2Q5YTVjNDM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJJREJGYWN0b3J5LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViSURCRmFjdG9yeS5oCkBAIC00MSw2ICs0MSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewog
CiBjbGFzcyBXZWJGcmFtZTsKIGNsYXNzIFdlYklEQkRhdGFiYXNlOworY2xhc3MgV2ViSURCRGF0
YWJhc2VDYWxsYmFja3M7CiBjbGFzcyBXZWJTZWN1cml0eU9yaWdpbjsKIAogLy8gVGhlIGVudHJ5
IHBvaW50IGludG8gdGhlIEluZGV4ZWREYXRhYmFzZSBBUEkuICBUaGVzZSBjbGFzc2VzIG1hdGNo
IHRoZWlyIEZvbyBhbmQKQEAgLTU0LDE2ICs1NSwxMyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFs
IHZvaWQgZ2V0RGF0YWJhc2VOYW1lcyhXZWJJREJDYWxsYmFja3MqIGNhbGxiYWNrcywgY29uc3Qg
V2ViU2VjdXJpdHlPcmlnaW4mIG9yaWdpbiwgV2ViRnJhbWUqIGZyYW1lLCBjb25zdCBXZWJTdHJp
bmcmIGRhdGFEaXIpIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAKLSAgICAvLyBG
SVhNRTogRGVsZXRlIHRoaXMgbWV0aG9kIHdoZW4gZGVyaXZlZCBjbGFzc2VzIGluIGNocm9taXVt
IGhhdmUKLSAgICAvLyBpbXBsZW1lbnRlZCB0aGUgb3RoZXIgb3BlbiBtZXRob2QuCi0gICAgdmly
dHVhbCB2b2lkIG9wZW4oY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBXZWJJREJDYWxsYmFja3MqIGNh
bGxiYWNrcywgY29uc3QgV2ViU2VjdXJpdHlPcmlnaW4mIG9yaWdpbiwgV2ViRnJhbWUqIGZyYW1l
LCBjb25zdCBXZWJTdHJpbmcmIGRhdGFEaXIpCi0gICAgewotICAgICAgICBvcGVuKG5hbWUsIFdl
YklEQk1ldGFkYXRhOjpOb0ludFZlcnNpb24sIGNhbGxiYWNrcywgb3JpZ2luLCBmcmFtZSwgZGF0
YURpcik7Ci0gICAgfQotCisgICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIG92ZXJsb2FkIGFmdGVy
IFdLOTA0MTEgY2xlYW51cCBpcyBjb21wbGV0ZSBvbiB0aGUgQ2hyb21pdW0gc2lkZS4KICAgICAv
LyBUaGUgV2ViS2l0IGltcGxlbWVudGF0aW9uIG9mIG9wZW4gaWdub3JlcyB0aGUgV2ViRnJhbWUq
IHBhcmFtZXRlci4KICAgICB2aXJ0dWFsIHZvaWQgb3Blbihjb25zdCBXZWJTdHJpbmcmIG5hbWUs
IGxvbmcgbG9uZyB2ZXJzaW9uLCBXZWJJREJDYWxsYmFja3MqIGNhbGxiYWNrcywgY29uc3QgV2Vi
U2VjdXJpdHlPcmlnaW4mIG9yaWdpbiwgV2ViRnJhbWUqIGZyYW1lLCBjb25zdCBXZWJTdHJpbmcm
IGRhdGFEaXIpIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAKKyAgICAvLyBUaGUg
V2ViS2l0IGltcGxlbWVudGF0aW9uIG9mIG9wZW4gaWdub3JlcyB0aGUgV2ViRnJhbWUqIHBhcmFt
ZXRlci4KKyAgICB2aXJ0dWFsIHZvaWQgb3Blbihjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGxvbmcg
bG9uZyB2ZXJzaW9uLCBXZWJJREJDYWxsYmFja3MqIGNhbGxiYWNrcywgV2ViSURCRGF0YWJhc2VD
YWxsYmFja3MqIGRhdGFiYXNlQ2FsbGJhY2tzLCBjb25zdCBXZWJTZWN1cml0eU9yaWdpbiYgb3Jp
Z2luLCBXZWJGcmFtZSogZnJhbWUsIGNvbnN0IFdlYlN0cmluZyYgZGF0YURpcikgeyBXRUJLSVRf
QVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKwogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVEYXRhYmFz
ZShjb25zdCBXZWJTdHJpbmcmIG5hbWUsIFdlYklEQkNhbGxiYWNrcyosIGNvbnN0IFdlYlNlY3Vy
aXR5T3JpZ2luJiwgV2ViRnJhbWUqLCBjb25zdCBXZWJTdHJpbmcmIGRhdGFEaXIpIHsgV0VCS0lU
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9JREJDYWxsYmFja3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9JREJDYWxsYmFja3NQcm94eS5jcHAKaW5kZXggMTkzYmYyYjVmNmM2NjZjN2JkNTA2
MmFkNDQ3NDQxNWJmYjMwNDI5Ny4uYWY0OTg0YTc3YzRiODVlMjZlMjllZjg4YThkMjgzZGU0NmFj
YzM4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ2FsbGJhY2tz
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkNhbGxiYWNrc1By
b3h5LmNwcApAQCAtMzQsMTMgKzM0LDE1IEBACiAjaW5jbHVkZSAiSURCQ3Vyc29yQmFja2VuZElu
dGVyZmFjZS5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZS5oIgogI2lu
Y2x1ZGUgIklEQkRhdGFiYXNlQmFja2VuZFByb3h5LmgiCisjaW5jbHVkZSAiSURCRGF0YWJhc2VD
YWxsYmFja3NQcm94eS5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNlRXJyb3IuaCIKICNpbmNsdWRl
ICJJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJJREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJXZWJJREJDYWxsYmFja3MuaCIKICNp
bmNsdWRlICJXZWJJREJDdXJzb3JJbXBsLmgiCi0jaW5jbHVkZSAiV2ViSURCRGF0YWJhc2VJbXBs
LmgiCisjaW5jbHVkZSAiV2ViSURCRGF0YWJhc2VDYWxsYmFja3MuaCIKICNpbmNsdWRlICJXZWJJ
REJEYXRhYmFzZUVycm9yLmgiCisjaW5jbHVkZSAiV2ViSURCRGF0YWJhc2VJbXBsLmgiCiAjaW5j
bHVkZSAiV2ViSURCS2V5LmgiCiAjaW5jbHVkZSAiV2ViSURCVHJhbnNhY3Rpb25JbXBsLmgiCiAj
aW5jbHVkZSAicGxhdGZvcm0vV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCkBAIC03NSw3ICs3
Nyw4IEBAIHZvaWQgSURCQ2FsbGJhY2tzUHJveHk6Om9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQkN1
cnNvckJhY2tlbmRJbnRlcmZhY2U+IGlkYkN1cnNvCiAKIHZvaWQgSURCQ2FsbGJhY2tzUHJveHk6
Om9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4gYmFja2Vu
ZCkKIHsKLSAgICBtX2NhbGxiYWNrcy0+b25TdWNjZXNzKG5ldyBXZWJJREJEYXRhYmFzZUltcGwo
YmFja2VuZCkpOworICAgIEFTU0VSVChtX2RhdGFiYXNlQ2FsbGJhY2tzLmdldCgpKTsKKyAgICBt
X2NhbGxiYWNrcy0+b25TdWNjZXNzKG5ldyBXZWJJREJEYXRhYmFzZUltcGwoYmFja2VuZCwgbV9k
YXRhYmFzZUNhbGxiYWNrcy5yZWxlYXNlKCkpKTsKIH0KIAogdm9pZCBJREJDYWxsYmFja3NQcm94
eTo6b25TdWNjZXNzKFBhc3NSZWZQdHI8SURCS2V5PiBpZGJLZXkpCkBAIC0xMzcsOSArMTQwLDE3
IEBAIHZvaWQgSURCQ2FsbGJhY2tzUHJveHk6Om9uQmxvY2tlZChpbnQ2NF90IGV4aXN0aW5nVmVy
c2lvbikKIAogdm9pZCBJREJDYWxsYmFja3NQcm94eTo6b25VcGdyYWRlTmVlZGVkKGludDY0X3Qg
b2xkVmVyc2lvbiwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IHRy
YW5zYWN0aW9uLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4gZGF0YWJh
c2UpCiB7Ci0gICAgbV9jYWxsYmFja3MtPm9uVXBncmFkZU5lZWRlZChvbGRWZXJzaW9uLCBuZXcg
V2ViSURCVHJhbnNhY3Rpb25JbXBsKHRyYW5zYWN0aW9uKSwgbmV3IFdlYklEQkRhdGFiYXNlSW1w
bChkYXRhYmFzZSkpOworICAgIEFTU0VSVChtX2RhdGFiYXNlQ2FsbGJhY2tzKTsKKyAgICBtX2Nh
bGxiYWNrcy0+b25VcGdyYWRlTmVlZGVkKG9sZFZlcnNpb24sIG5ldyBXZWJJREJUcmFuc2FjdGlv
bkltcGwodHJhbnNhY3Rpb24pLCBuZXcgV2ViSURCRGF0YWJhc2VJbXBsKGRhdGFiYXNlLCBtX2Rh
dGFiYXNlQ2FsbGJhY2tzKSk7Cit9CisKK3ZvaWQgSURCQ2FsbGJhY2tzUHJveHk6OnNldERhdGFi
YXNlQ2FsbGJhY2tzKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3NQcm94eT4gZGF0YWJh
c2VDYWxsYmFja3MpCit7CisgICAgQVNTRVJUKCFtX2RhdGFiYXNlQ2FsbGJhY2tzKTsKKyAgICBt
X2RhdGFiYXNlQ2FsbGJhY2tzID0gZGF0YWJhc2VDYWxsYmFja3M7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdAogCisKICNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkNhbGxiYWNrc1Byb3h5LmggYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJDYWxsYmFja3NQcm94eS5oCmluZGV4IDgyNTc1
OGFhZGU5M2Y0MWYyNjI5MzAzNjhiZDk2NjYwZmU1MmE1MjcuLmY2MTNhODVjMmU0ZWQxNmNiODg3
ZjY4YTA1MDMxODQ5Y2IxY2VmMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL0lEQkNhbGxiYWNrc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
SURCQ2FsbGJhY2tzUHJveHkuaApAQCAtMzksNiArMzksNyBAQAogbmFtZXNwYWNlIFdlYktpdCB7
CiAKIGNsYXNzIFdlYklEQkNhbGxiYWNrczsKK2NsYXNzIElEQkRhdGFiYXNlQ2FsbGJhY2tzUHJv
eHk7CiAKIGNsYXNzIElEQkNhbGxiYWNrc1Byb3h5IDogcHVibGljIFdlYkNvcmU6OklEQkNhbGxi
YWNrcyB7CiBwdWJsaWM6CkBAIC01OSwxMCArNjAsMTMgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCBvbkJsb2NrZWQoaW50NjRfdCBleGlzdGluZ1ZlcnNpb24pOwogICAgIHZpcnR1YWwgdm9p
ZCBvblVwZ3JhZGVOZWVkZWQoaW50NjRfdCBvbGRWZXJzaW9uLCBQYXNzUmVmUHRyPFdlYkNvcmU6
OklEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4sIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURC
RGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPik7CiAKKyAgICB2b2lkIHNldERhdGFiYXNlQ2FsbGJh
Y2tzKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3NQcm94eT4pOworCiBwcml2YXRlOgog
ICAgIElEQkNhbGxiYWNrc1Byb3h5KFBhc3NPd25QdHI8V2ViSURCQ2FsbGJhY2tzPik7CiAKICAg
ICBPd25QdHI8V2ViSURCQ2FsbGJhY2tzPiBtX2NhbGxiYWNrczsKKyAgICBSZWZQdHI8SURCRGF0
YWJhc2VDYWxsYmFja3NQcm94eT4gbV9kYXRhYmFzZUNhbGxiYWNrczsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURC
RGF0YWJhc2VCYWNrZW5kUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURC
RGF0YWJhc2VCYWNrZW5kUHJveHkuY3BwCmluZGV4IDU2YWZlNWZiNWQyYjYyZmE0NDQ5OTU0NDY5
MzBhMDFkMGJjOTc3OTguLjUwMWNlNjFmYjU5NTYyNjZiMGMzYmYxYjRjMDJhZWY2Y2RhMDA4MDYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQmFja2Vu
ZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUJh
Y2tlbmRQcm94eS5jcHAKQEAgLTEwNywxMSArMTA3LDYgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tl
bmRQcm94eTo6Y2xvc2UoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4pCiAgICAgbV93
ZWJJREJEYXRhYmFzZS0+Y2xvc2UoKTsKIH0KIAotdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRQcm94
eTo6cmVnaXN0ZXJGcm9udGVuZENhbGxiYWNrcyhQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJh
Y2tzPiBkYXRhYmFzZUNhbGxiYWNrcykKLXsKLSAgICBtX3dlYklEQkRhdGFiYXNlLT5vcGVuKG5l
dyBXZWJJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwoZGF0YWJhc2VDYWxsYmFja3MpKTsKLX0KLQog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFT
RSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQmFj
a2VuZFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUJhY2tl
bmRQcm94eS5oCmluZGV4IDJhOTM2MDBjNmYyZmEwYzI2N2MyZGEwNmZiOGI5MjE2ZmQ4MjhlMzYu
Ljc5NTYxMGFhNjU3MmRjYTQ2Y2MyNjRkYjViMDhiZDE3OGMxYzU2NTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmgKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuaApAQCAt
NTAsOCArNTAsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OklE
QlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gdHJhbnNhY3Rpb24oV2ViQ29yZTo6RE9NU3Ry
aW5nTGlzdCogc3RvcmVOYW1lcywgdW5zaWduZWQgc2hvcnQgbW9kZSwgV2ViQ29yZTo6RXhjZXB0
aW9uQ29kZSYpOwogICAgIHZpcnR1YWwgdm9pZCBjbG9zZShQYXNzUmVmUHRyPFdlYkNvcmU6OklE
QkRhdGFiYXNlQ2FsbGJhY2tzPik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJGcm9udGVu
ZENhbGxiYWNrcyhQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkRhdGFiYXNlQ2FsbGJhY2tzPik7Ci0K
IHByaXZhdGU6CiAgICAgSURCRGF0YWJhc2VCYWNrZW5kUHJveHkoUGFzc093blB0cjxXZWJJREJE
YXRhYmFzZT4pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJG
YWN0b3J5QmFja2VuZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkZh
Y3RvcnlCYWNrZW5kUHJveHkuY3BwCmluZGV4IGJhYmNiYWUxODQwOWM1ZGQyNTkyYzBkZmQ5MjMz
MjZmYmY2MGU5NGEuLjI4OTk1ZWM2NjBlMzFmZjdjZWZhZDkzZWIzYmRhMjM0MWFhMWVmZjggMTAw
NzU1Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkZhY3RvcnlCYWNrZW5kUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkZhY3RvcnlCYWNrZW5k
UHJveHkuY3BwCkBAIC0zNCwxMiArMzQsMTQgQEAKICNpbmNsdWRlICJDcm9zc1RocmVhZFRhc2su
aCIKICNpbmNsdWRlICJET01TdHJpbmdMaXN0LmgiCiAjaW5jbHVkZSAiSURCRGF0YWJhc2VCYWNr
ZW5kUHJveHkuaCIKKyNpbmNsdWRlICJJREJEYXRhYmFzZUNhbGxiYWNrcy5oIgogI2luY2x1ZGUg
IklEQkRhdGFiYXNlRXJyb3IuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0Lmgi
CiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJXZWJGcmFtZUltcGwuaCIK
ICNpbmNsdWRlICJXZWJJREJDYWxsYmFja3NJbXBsLmgiCiAjaW5jbHVkZSAiV2ViSURCRGF0YWJh
c2UuaCIKKyNpbmNsdWRlICJXZWJJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwuaCIKICNpbmNsdWRl
ICJXZWJJREJEYXRhYmFzZUVycm9yLmgiCiAjaW5jbHVkZSAiV2ViSURCRmFjdG9yeS5oIgogI2lu
Y2x1ZGUgIldlYktpdC5oIgpAQCAtMjAzLDE1ICsyMDUsMTYgQEAgdm9pZCBJREJGYWN0b3J5QmFj
a2VuZFByb3h5OjpnZXREYXRhYmFzZU5hbWVzKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBD
YWxsYmEKIH0KIAogCi12b2lkIElEQkZhY3RvcnlCYWNrZW5kUHJveHk6Om9wZW4oY29uc3QgU3Ry
aW5nJiBuYW1lLCBpbnQ2NF90IHZlcnNpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBD
YWxsYmFja3MsIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luLCBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIGRhdGFEaXIpCit2b2lk
IElEQkZhY3RvcnlCYWNrZW5kUHJveHk6Om9wZW4oY29uc3QgU3RyaW5nJiBuYW1lLCBpbnQ2NF90
IHZlcnNpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmFja3MsIFBhc3NSZWZQ
dHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IHBycERhdGFiYXNlQ2FsbGJhY2tzLCBQYXNzUmVmUHRy
PFNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdpbiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCwgY29uc3QgU3RyaW5nJiBkYXRhRGlyKQogewogICAgIFJlZlB0cjxJREJDYWxsYmFj
a3M+IGNhbGxiYWNrcyhwcnBDYWxsYmFja3MpOworICAgIFJlZlB0cjxJREJEYXRhYmFzZUNhbGxi
YWNrcz4gZGF0YWJhc2VDYWxsYmFja3MocHJwRGF0YWJhc2VDYWxsYmFja3MpOwogICAgIFdlYlNl
Y3VyaXR5T3JpZ2luIG9yaWdpbihzZWN1cml0eU9yaWdpbik7CiAgICAgaWYgKCFhbGxvd0luZGV4
ZWREQihjb250ZXh0LCBuYW1lLCBvcmlnaW4sIGNhbGxiYWNrcykpCiAgICAgICAgIHJldHVybjsK
IAogICAgIFdlYkZyYW1lSW1wbCogd2ViRnJhbWUgPSBnZXRXZWJGcmFtZShjb250ZXh0KTsKLSAg
ICBtX3dlYklEQkZhY3RvcnktPm9wZW4obmFtZSwgdmVyc2lvbiwgbmV3IFdlYklEQkNhbGxiYWNr
c0ltcGwoY2FsbGJhY2tzKSwgb3JpZ2luLCB3ZWJGcmFtZSwgZGF0YURpcik7CisgICAgbV93ZWJJ
REJGYWN0b3J5LT5vcGVuKG5hbWUsIHZlcnNpb24sIG5ldyBXZWJJREJDYWxsYmFja3NJbXBsKGNh
bGxiYWNrcyksIG5ldyBXZWJJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwoZGF0YWJhc2VDYWxsYmFj
a3MpLCBvcmlnaW4sIHdlYkZyYW1lLCBkYXRhRGlyKTsKIH0KIAogdm9pZCBJREJGYWN0b3J5QmFj
a2VuZFByb3h5OjpkZWxldGVEYXRhYmFzZShjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8
SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmFja3MsIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHNl
Y3VyaXR5T3JpZ2luLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJp
bmcmIGRhdGFEaXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJG
YWN0b3J5QmFja2VuZFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJGYWN0
b3J5QmFja2VuZFByb3h5LmgKaW5kZXggYzBkZTkxMGE5MmNkZWE5MWEzZDNhMWM1MzBhMjgwN2M1
YWJmYWE3YS4uODgzODBkN2E0MmVkMTE3MzAyOTM1YmViYmNhY2NlYjZmNmU5N2Q3OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRmFjdG9yeUJhY2tlbmRQcm94eS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkZhY3RvcnlCYWNrZW5kUHJveHku
aApAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+SURCRmFjdG9yeUJhY2tl
bmRQcm94eSgpOwogCiAgICAgdmlydHVhbCB2b2lkIGdldERhdGFiYXNlTmFtZXMoUGFzc1JlZlB0
cjxXZWJDb3JlOjpJREJDYWxsYmFja3M+LCBQYXNzUmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luPiwgV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgZGF0
YURpcik7Ci0gICAgdmlydHVhbCB2b2lkIG9wZW4oY29uc3QgU3RyaW5nJiBuYW1lLCBpbnQ2NF90
IHZlcnNpb24sIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCQ2FsbGJhY2tzPiwgUGFzc1JlZlB0cjxX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4sIFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBjb25zdCBTdHJpbmcmIGRhdGFEaXIpOworICAgIHZpcnR1YWwgdm9pZCBvcGVuKGNvbnN0IFN0
cmluZyYgbmFtZSwgaW50NjRfdCB2ZXJzaW9uLCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkNhbGxi
YWNrcz4sIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCRGF0YWJhc2VDYWxsYmFja3M+LCBQYXNzUmVm
UHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiwgV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIGNvbnN0IFN0cmluZyYgZGF0YURpcik7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZURh
dGFiYXNlKGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJDYWxsYmFj
a3M+LCBQYXNzUmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiwgV2ViQ29yZTo6U2NyaXB0
RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgZGF0YURpcik7CiAKIHByaXZhdGU6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwu
Y3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmNwcApp
bmRleCAwZDE0MmJjMDI5M2FhMTNmNWIxOTJjM2ZkYmM1NjMzN2NkYWM3NTdkLi41Mjg3OWE5YTdm
M2I3MzgwYWJhMzA2ZWQ2NzNkMGM0MmExMjhmYzQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5jcHAKQEAgLTQ1LDggKzQ1LDkgQEAgdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1XZWJJREJEYXRh
YmFzZUltcGw6OldlYklEQkRhdGFiYXNlSW1wbChQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2Vu
ZEludGVyZmFjZT4gZGF0YWJhc2VCYWNrZW5kKQorV2ViSURCRGF0YWJhc2VJbXBsOjpXZWJJREJE
YXRhYmFzZUltcGwoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+IGRhdGFi
YXNlQmFja2VuZCwgV1RGOjpQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHk+IGRh
dGFiYXNlQ2FsbGJhY2tzKQogICAgIDogbV9kYXRhYmFzZUJhY2tlbmQoZGF0YWJhc2VCYWNrZW5k
KQorICAgICwgbV9kYXRhYmFzZUNhbGxiYWNrcyhkYXRhYmFzZUNhbGxiYWNrcykKICAgICAsIG1f
Y2xvc2VQZW5kaW5nKGZhbHNlKQogewogfQpAQCAtOTMsNyArOTQsNyBAQCBXZWJJREJUcmFuc2Fj
dGlvbiogV2ViSURCRGF0YWJhc2VJbXBsOjp0cmFuc2FjdGlvbihjb25zdCBXZWJET01TdHJpbmdM
aXN0JiBuYW1lcwogCiB2b2lkIFdlYklEQkRhdGFiYXNlSW1wbDo6Y2xvc2UoKQogewotICAgIC8v
IFVzZSB0aGUgY2FsbGJhY2tzIHRoYXQgOjpvcGVuIGdhdmUgdXMgc28gdGhhdCB0aGUgYmFja2Vu
ZCBpbgorICAgIC8vIFVzZSB0aGUgY2FsbGJhY2tzIHBhc3NlZCBpbiB0byB0aGUgY29uc3RydWN0
b3Igc28gdGhhdCB0aGUgYmFja2VuZCBpbgogICAgIC8vIG11bHRpLXByb2Nlc3MgY2hyb21pdW0g
a25vd3Mgd2hpY2ggZGF0YWJhc2UgY29ubmVjdGlvbiBpcyBjbG9zaW5nLgogICAgIGlmICghbV9k
YXRhYmFzZUNhbGxiYWNrcykgewogICAgICAgICBtX2Nsb3NlUGVuZGluZyA9IHRydWU7CkBAIC0x
MTMsMTUgKzExNCw2IEBAIHZvaWQgV2ViSURCRGF0YWJhc2VJbXBsOjpmb3JjZUNsb3NlKCkKICAg
ICBjYWxsYmFja3MtPm9uRm9yY2VkQ2xvc2UoKTsKIH0KIAotdm9pZCBXZWJJREJEYXRhYmFzZUlt
cGw6Om9wZW4oV2ViSURCRGF0YWJhc2VDYWxsYmFja3MqIGNhbGxiYWNrcykKLXsKLSAgICBBU1NF
UlQoIW1fZGF0YWJhc2VDYWxsYmFja3MpOwotICAgIG1fZGF0YWJhc2VDYWxsYmFja3MgPSBJREJE
YXRhYmFzZUNhbGxiYWNrc1Byb3h5OjpjcmVhdGUoYWRvcHRQdHIoY2FsbGJhY2tzKSk7Ci0gICAg
bV9kYXRhYmFzZUJhY2tlbmQtPnJlZ2lzdGVyRnJvbnRlbmRDYWxsYmFja3MobV9kYXRhYmFzZUNh
bGxiYWNrcyk7Ci0gICAgaWYgKG1fY2xvc2VQZW5kaW5nKQotICAgICAgICBjbG9zZSgpOwotfQot
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFC
QVNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJh
c2VJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwu
aAppbmRleCA0YTgyODRjZTU5YWQxZTYzNmNjNGZiYzk3MjdiY2I3N2E0MjJjMzBlLi45Y2QxY2Fm
NTkyMDY5YjU0ZGZiOTZjYzg3ODQ0YzM3OTZkYjNhMzA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwuaApAQCAtNDcsNyArNDcsNyBAQCBjbGFz
cyBXZWJJREJUcmFuc2FjdGlvbjsKIC8vIFNlZSBjb21tZW50IGluIFdlYklEQkZhY3RvcnkgZm9y
IGEgaGlnaCBsZXZlbCBvdmVydmlldyB0aGVzZSBjbGFzc2VzLgogY2xhc3MgV2ViSURCRGF0YWJh
c2VJbXBsIDogcHVibGljIFdlYklEQkRhdGFiYXNlIHsKIHB1YmxpYzoKLSAgICBXZWJJREJEYXRh
YmFzZUltcGwoV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEludGVy
ZmFjZT4pOworICAgIFdlYklEQkRhdGFiYXNlSW1wbChXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6
SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiwgV1RGOjpQYXNzUmVmUHRyPElEQkRhdGFiYXNl
Q2FsbGJhY2tzUHJveHk+KTsKICAgICB2aXJ0dWFsIH5XZWJJREJEYXRhYmFzZUltcGwoKTsKIAog
ICAgIHZpcnR1YWwgV2ViSURCTWV0YWRhdGEgbWV0YWRhdGEoKSBjb25zdDsKQEAgLTU5LDkgKzU5
LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBmb3JjZUNsb3NlKCk7CiAgICAgdmlydHVh
bCB2b2lkIGNsb3NlKCk7CiAKLSAgICAvLyBGSVhNRTogUmVuYW1lICJvcGVuIiB0byByZWdpc3Rl
ckZyb250ZW5kQ2FsbGJhY2tzLgotICAgIHZpcnR1YWwgdm9pZCBvcGVuKFdlYklEQkRhdGFiYXNl
Q2FsbGJhY2tzKik7Ci0KIHByaXZhdGU6CiAgICAgV1RGOjpSZWZQdHI8V2ViQ29yZTo6SURCRGF0
YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiBtX2RhdGFiYXNlQmFja2VuZDsKICAgICBXVEY6OlJlZlB0
cjxJREJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5PiBtX2RhdGFiYXNlQ2FsbGJhY2tzOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRmFjdG9yeUltcGwuY3BwIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRmFjdG9yeUltcGwuY3BwCmluZGV4IGFk
NzE0NzZiN2ViYjQ2ODZlYTgyNWI5NjIxOTE2ZTYzYjI5MGFjNzcuLjk0YThkNDY4YTkwYTkwYzQx
MmM3YWE2Yzk4YWVmYjc0YmI3YTM3YjggMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYklEQkZhY3RvcnlJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJJREJGYWN0b3J5SW1wbC5jcHAKQEAgLTM1LDggKzM1LDEwIEBACiAKICNpbmNsdWRl
ICJET01TdHJpbmdMaXN0LmgiCiAjaW5jbHVkZSAiSURCQ2FsbGJhY2tzUHJveHkuaCIKKyNpbmNs
dWRlICJJREJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5LmgiCiAjaW5jbHVkZSAiSURCRmFjdG9yeUJh
Y2tlbmRJbXBsLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKKyNpbmNsdWRlICJXZWJJ
REJEYXRhYmFzZUNhbGxiYWNrcy5oIgogI2luY2x1ZGUgIldlYklEQkRhdGFiYXNlRXJyb3IuaCIK
ICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAKQEAgLTYzLDkgKzY1LDEyIEBAIHZvaWQgV2ViSURC
RmFjdG9yeUltcGw6OmdldERhdGFiYXNlTmFtZXMoV2ViSURCQ2FsbGJhY2tzKiBjYWxsYmFja3Ms
IGNvbnN0IFdlYlNlCiAgICAgbV9pZGJGYWN0b3J5QmFja2VuZC0+Z2V0RGF0YWJhc2VOYW1lcyhJ
REJDYWxsYmFja3NQcm94eTo6Y3JlYXRlKGFkb3B0UHRyKGNhbGxiYWNrcykpLCBvcmlnaW4sIDAs
IGRhdGFEaXIpOwogfQogCi12b2lkIFdlYklEQkZhY3RvcnlJbXBsOjpvcGVuKGNvbnN0IFdlYlN0
cmluZyYgbmFtZSwgbG9uZyBsb25nIHZlcnNpb24sIFdlYklEQkNhbGxiYWNrcyogY2FsbGJhY2tz
LCBjb25zdCBXZWJTZWN1cml0eU9yaWdpbiYgb3JpZ2luLCBXZWJGcmFtZSosIGNvbnN0IFdlYlN0
cmluZyYgZGF0YURpcikKK3ZvaWQgV2ViSURCRmFjdG9yeUltcGw6Om9wZW4oY29uc3QgV2ViU3Ry
aW5nJiBuYW1lLCBsb25nIGxvbmcgdmVyc2lvbiwgV2ViSURCQ2FsbGJhY2tzKiBjYWxsYmFja3Ms
IFdlYklEQkRhdGFiYXNlQ2FsbGJhY2tzKiBkYXRhYmFzZUNhbGxiYWNrcywgY29uc3QgV2ViU2Vj
dXJpdHlPcmlnaW4mIG9yaWdpbiwgV2ViRnJhbWUqLCBjb25zdCBXZWJTdHJpbmcmIGRhdGFEaXIp
CiB7Ci0gICAgbV9pZGJGYWN0b3J5QmFja2VuZC0+b3BlbihuYW1lLCB2ZXJzaW9uLCBJREJDYWxs
YmFja3NQcm94eTo6Y3JlYXRlKGFkb3B0UHRyKGNhbGxiYWNrcykpLmdldCgpLCBvcmlnaW4sIDAs
IGRhdGFEaXIpOworICAgIFJlZlB0cjxJREJDYWxsYmFja3NQcm94eT4gY2FsbGJhY2tzUHJveHkg
PSBJREJDYWxsYmFja3NQcm94eTo6Y3JlYXRlKGFkb3B0UHRyKGNhbGxiYWNrcykpOworICAgIFJl
ZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5PiBkYXRhYmFzZUNhbGxiYWNrc1Byb3h5ID0g
SURCRGF0YWJhc2VDYWxsYmFja3NQcm94eTo6Y3JlYXRlKGFkb3B0UHRyKGRhdGFiYXNlQ2FsbGJh
Y2tzKSk7CisgICAgY2FsbGJhY2tzUHJveHktPnNldERhdGFiYXNlQ2FsbGJhY2tzKGRhdGFiYXNl
Q2FsbGJhY2tzUHJveHkpOworICAgIG1faWRiRmFjdG9yeUJhY2tlbmQtPm9wZW4obmFtZSwgdmVy
c2lvbiwgY2FsbGJhY2tzUHJveHkuZ2V0KCksIGRhdGFiYXNlQ2FsbGJhY2tzUHJveHkuZ2V0KCks
IG9yaWdpbiwgMCwgZGF0YURpcik7CiB9CiAKIHZvaWQgV2ViSURCRmFjdG9yeUltcGw6OmRlbGV0
ZURhdGFiYXNlKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgV2ViSURCQ2FsbGJhY2tzKiBjYWxsYmFj
a3MsIGNvbnN0IFdlYlNlY3VyaXR5T3JpZ2luJiBvcmlnaW4sIFdlYkZyYW1lKiwgY29uc3QgV2Vi
U3RyaW5nJiBkYXRhRGlyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViSURCRmFjdG9yeUltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkZh
Y3RvcnlJbXBsLmgKaW5kZXggODMzZWViNTkxMjU5Yjg1M2MzMjFmZDExOGYwOTRhNWI4YTdjODg2
NC4uMzNmNWEyMWQyYzc0ZjU4ZGZmOTRlMWViN2I5MGU1YWQ0MzBkMTYyNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRmFjdG9yeUltcGwuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJGYWN0b3J5SW1wbC5oCkBAIC00NSw3ICs0NSw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5XZWJJREJGYWN0b3J5SW1wbCgpOwogCiAgICAgdmly
dHVhbCB2b2lkIGdldERhdGFiYXNlTmFtZXMoV2ViSURCQ2FsbGJhY2tzKiwgY29uc3QgV2ViU2Vj
dXJpdHlPcmlnaW4mLCBXZWJGcmFtZSosIGNvbnN0IFdlYlN0cmluZyYgZGF0YURpcik7Ci0gICAg
dmlydHVhbCB2b2lkIG9wZW4oY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBsb25nIGxvbmcgdmVyc2lv
biwgV2ViSURCQ2FsbGJhY2tzKiwgY29uc3QgV2ViU2VjdXJpdHlPcmlnaW4mLCBXZWJGcmFtZSos
IGNvbnN0IFdlYlN0cmluZyYgZGF0YURpcik7CisgICAgdmlydHVhbCB2b2lkIG9wZW4oY29uc3Qg
V2ViU3RyaW5nJiBuYW1lLCBsb25nIGxvbmcgdmVyc2lvbiwgV2ViSURCQ2FsbGJhY2tzKiwgV2Vi
SURCRGF0YWJhc2VDYWxsYmFja3MqLCBjb25zdCBXZWJTZWN1cml0eU9yaWdpbiYsIFdlYkZyYW1l
KiwgY29uc3QgV2ViU3RyaW5nJiBkYXRhRGlyKTsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlRGF0
YWJhc2UoY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBXZWJJREJDYWxsYmFja3MqLCBjb25zdCBXZWJT
ZWN1cml0eU9yaWdpbiYsIFdlYkZyYW1lKiwgY29uc3QgV2ViU3RyaW5nJiBkYXRhRGlyKTsKIAog
cHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCQWJv
cnRPbkNvcnJ1cHRUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCQWJv
cnRPbkNvcnJ1cHRUZXN0LmNwcAppbmRleCAxZDM5NTA5NmFhZGIzYTViM2RlOWI3MGRhYjYwZjMx
ODljZmJhOTg2Li5iMDgwYmZjNGRmNTFhMjk4ZjRmZGI1ZDljMjhlNzcxN2Y0MGRhZjE0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQkFib3J0T25Db3JydXB0VGVz
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJBYm9ydE9uQ29ycnVw
dFRlc3QuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZS5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNlQmFj
a2VuZEludGVyZmFjZS5oIgorI2luY2x1ZGUgIklEQkRhdGFiYXNlQ2FsbGJhY2tzLmgiCiAjaW5j
bHVkZSAiSURCRmFjdG9yeUJhY2tlbmRJbXBsLmgiCiAjaW5jbHVkZSAiSURCRmFrZUJhY2tpbmdT
dG9yZS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCkBAIC05NiwxNCArOTcsMjYgQEAg
cHJvdGVjdGVkOgogICAgIH0KIH07CiAKK2NsYXNzIEZha2VJREJEYXRhYmFzZUNhbGxiYWNrcyA6
IHB1YmxpYyBJREJEYXRhYmFzZUNhbGxiYWNrcyB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NS
ZWZQdHI8RmFrZUlEQkRhdGFiYXNlQ2FsbGJhY2tzPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJl
ZihuZXcgRmFrZUlEQkRhdGFiYXNlQ2FsbGJhY2tzKCkpOyB9CisgICAgdmlydHVhbCB+RmFrZUlE
QkRhdGFiYXNlQ2FsbGJhY2tzKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIG9uVmVyc2lvbkNoYW5n
ZShjb25zdCBTdHJpbmcmIHZlcnNpb24pIE9WRVJSSURFIHsgfQorICAgIHZpcnR1YWwgdm9pZCBv
blZlcnNpb25DaGFuZ2UoaW50NjRfdCBvbGRWZXJzaW9uLCBpbnQ2NF90IG5ld1ZlcnNpb24pIE9W
RVJSSURFIHsgfQorICAgIHZpcnR1YWwgdm9pZCBvbkZvcmNlZENsb3NlKCkgT1ZFUlJJREUgeyB9
Citwcml2YXRlOgorICAgIEZha2VJREJEYXRhYmFzZUNhbGxiYWNrcygpIHsgfQorfTsKKwogVEVT
VChJREJBYm9ydFRlc3QsIFRoZVRlc3QpCiB7CiAgICAgUmVmUHRyPElEQkZhY3RvcnlCYWNrZW5k
SW1wbD4gZmFjdG9yeSA9IEZhaWxpbmdJREJGYWN0b3J5QmFja2VuZEltcGw6OmNyZWF0ZSgpOwog
ICAgIGNvbnN0IFN0cmluZyYgbmFtZSA9ICJkYiBuYW1lIjsKICAgICBNb2NrSURCQ2FsbGJhY2tz
IGNhbGxiYWNrczsKKyAgICBSZWZQdHI8RmFrZUlEQkRhdGFiYXNlQ2FsbGJhY2tzPiBkYXRhYmFz
ZUNhbGxiYWNrcyA9IEZha2VJREJEYXRhYmFzZUNhbGxiYWNrczo6Y3JlYXRlKCk7CiAgICAgUmVm
UHRyPFNlY3VyaXR5T3JpZ2luPiBvcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKCJodHRw
IiwgImxvY2FsaG9zdCIsIDgxKTsKICAgICBjb25zdCBpbnQ2NF90IER1bW15VmVyc2lvbiA9IDI7
Ci0gICAgZmFjdG9yeS0+b3BlbihuYW1lLCBEdW1teVZlcnNpb24sICZjYWxsYmFja3MsIG9yaWdp
biwgMCAvKkZyYW1lKi8sIFN0cmluZygpIC8qcGF0aCovKTsKKyAgICBmYWN0b3J5LT5vcGVuKG5h
bWUsIER1bW15VmVyc2lvbiwgJmNhbGxiYWNrcywgZGF0YWJhc2VDYWxsYmFja3MsIG9yaWdpbiwg
MCAvKkZyYW1lKi8sIFN0cmluZygpIC8qcGF0aCovKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCRGF0YWJhc2VCYWNrZW5k
VGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQkRhdGFiYXNlQmFja2Vu
ZFRlc3QuY3BwCmluZGV4IGVhZDdmOWJiOTYyMTY5ODIxZmRlZjcwMmY4MTk2MmMyNGRhNDUwNTEu
LjljYzg3OGYzZTg4ZmE1ZGRmNzJiYThjZTgzODNkYThlZjg2NGQyMDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCRGF0YWJhc2VCYWNrZW5kVGVzdC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJEYXRhYmFzZUJhY2tlbmRUZXN0LmNw
cApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIklEQkJhY2tpbmdTdG9yZS5oIgogI2luY2x1
ZGUgIklEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJJREJEYXRhYmFzZUJh
Y2tlbmRJbXBsLmgiCisjaW5jbHVkZSAiSURCRGF0YWJhc2VDYWxsYmFja3NQcm94eS5oIgogI2lu
Y2x1ZGUgIklEQkZhY3RvcnlCYWNrZW5kSW1wbC5oIgogI2luY2x1ZGUgIklEQkZha2VCYWNraW5n
U3RvcmUuaCIKICNpbmNsdWRlICJJREJJbmRleEJhY2tlbmRJbXBsLmgiCkBAIC00MCw5ICs0MSwx
MCBAQAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogCiB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKK3VzaW5nIFdlYktpdDo6SURCRGF0YWJhc2VDYWxsYmFja3NQcm94eTsKIHVzaW5nIFdl
YktpdDo6V2ViSURCRGF0YWJhc2U7Ci11c2luZyBXZWJLaXQ6OldlYklEQkRhdGFiYXNlQ2FsbGJh
Y2tzSW1wbDsKIHVzaW5nIFdlYktpdDo6V2ViSURCRGF0YWJhc2VJbXBsOwordXNpbmcgV2ViS2l0
OjpXZWJJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGw7CiAKIG5hbWVzcGFjZSB7CiAKQEAgLTEyMiwy
MCArMTI0LDE2IEBAIFRFU1QoSURCRGF0YWJhc2VCYWNrZW5kVGVzdCwgQ29ubmVjdGlvbkxpZmVj
eWNsZSkKICAgICBFWFBFQ1RfR1QoYmFja2luZ1N0b3JlLT5yZWZDb3VudCgpLCAxKTsKIAogICAg
IFJlZlB0cjxNb2NrSURCQ2FsbGJhY2tzPiByZXF1ZXN0MSA9IE1vY2tJREJDYWxsYmFja3M6OmNy
ZWF0ZSgpOwotICAgIGRiLT5vcGVuQ29ubmVjdGlvbihyZXF1ZXN0MSk7Ci0KICAgICBSZWZQdHI8
RmFrZUlEQkRhdGFiYXNlQ2FsbGJhY2tzPiBjb25uZWN0aW9uMSA9IEZha2VJREJEYXRhYmFzZUNh
bGxiYWNrczo6Y3JlYXRlKCk7Ci0gICAgZGItPnJlZ2lzdGVyRnJvbnRlbmRDYWxsYmFja3MoY29u
bmVjdGlvbjEpOworICAgIGRiLT5vcGVuQ29ubmVjdGlvbihyZXF1ZXN0MSwgY29ubmVjdGlvbjEp
OwogCiAgICAgUmVmUHRyPE1vY2tJREJDYWxsYmFja3M+IHJlcXVlc3QyID0gTW9ja0lEQkNhbGxi
YWNrczo6Y3JlYXRlKCk7Ci0gICAgZGItPm9wZW5Db25uZWN0aW9uKHJlcXVlc3QyKTsKKyAgICBS
ZWZQdHI8RmFrZUlEQkRhdGFiYXNlQ2FsbGJhY2tzPiBjb25uZWN0aW9uMiA9IEZha2VJREJEYXRh
YmFzZUNhbGxiYWNrczo6Y3JlYXRlKCk7CisgICAgZGItPm9wZW5Db25uZWN0aW9uKHJlcXVlc3Qy
LCBjb25uZWN0aW9uMik7CiAKICAgICBkYi0+Y2xvc2UoY29ubmVjdGlvbjEpOwogICAgIEVYUEVD
VF9HVChiYWNraW5nU3RvcmUtPnJlZkNvdW50KCksIDEpOwogCi0gICAgUmVmUHRyPEZha2VJREJE
YXRhYmFzZUNhbGxiYWNrcz4gY29ubmVjdGlvbjIgPSBGYWtlSURCRGF0YWJhc2VDYWxsYmFja3M6
OmNyZWF0ZSgpOwotICAgIGRiLT5yZWdpc3RlckZyb250ZW5kQ2FsbGJhY2tzKGNvbm5lY3Rpb24y
KTsKLQogICAgIGRiLT5jbG9zZShjb25uZWN0aW9uMik7CiAgICAgRVhQRUNUX1RSVUUoYmFja2lu
Z1N0b3JlLT5oYXNPbmVSZWYoKSk7CiB9CkBAIC0xNDksNyArMTQ3LDcgQEAgcHVibGljOgogCiAg
ICAgfk1vY2tJREJEYXRhYmFzZUJhY2tlbmRQcm94eSgpCiAgICAgewotICAgICAgICBFWFBFQ1Rf
VFJVRShtX3dhc1JlZ2lzdGVyRnJvbnRlbmRDYWxsYmFja3NDYWxsZWQpOworICAgICAgICBFWFBF
Q1RfVFJVRShtX3dhc0Nsb3NlQ2FsbGVkKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIElEQkRhdGFi
YXNlTWV0YWRhdGEgbWV0YWRhdGEoKSBjb25zdCB7IHJldHVybiBJREJEYXRhYmFzZU1ldGFkYXRh
KCk7IH0KQEAgLTE2MywxOSArMTYxLDEyIEBAIHB1YmxpYzoKICAgICAgICAgbV93YXNDbG9zZUNh
bGxlZCA9IHRydWU7CiAgICAgICAgIG1fd2ViRGF0YWJhc2UuY2xvc2UoKTsKICAgICB9Ci0gICAg
dmlydHVhbCB2b2lkIHJlZ2lzdGVyRnJvbnRlbmRDYWxsYmFja3MoUGFzc1JlZlB0cjxJREJEYXRh
YmFzZUNhbGxiYWNrcz4gY29ubmVjdGlvbikKLSAgICB7Ci0gICAgICAgIG1fd2FzUmVnaXN0ZXJG
cm9udGVuZENhbGxiYWNrc0NhbGxlZCA9IHRydWU7Ci0gICAgICAgIG1fd2ViRGF0YWJhc2Uub3Bl
bihuZXcgV2ViSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsKGNvbm5lY3Rpb24pKTsKLSAgICB9CiAK
IHByaXZhdGU6CiAgICAgTW9ja0lEQkRhdGFiYXNlQmFja2VuZFByb3h5KFdlYklEQkRhdGFiYXNl
SW1wbCYgd2ViRGF0YWJhc2UpCi0gICAgICAgIDogbV93YXNSZWdpc3RlckZyb250ZW5kQ2FsbGJh
Y2tzQ2FsbGVkKGZhbHNlKQotICAgICAgICAsIG1fd2FzQ2xvc2VDYWxsZWQoZmFsc2UpCisgICAg
ICAgIDogbV93YXNDbG9zZUNhbGxlZChmYWxzZSkKICAgICAgICAgLCBtX3dlYkRhdGFiYXNlKHdl
YkRhdGFiYXNlKSB7IH0KIAotICAgIGJvb2wgbV93YXNSZWdpc3RlckZyb250ZW5kQ2FsbGJhY2tz
Q2FsbGVkOwogICAgIGJvb2wgbV93YXNDbG9zZUNhbGxlZDsKIAogICAgIFdlYklEQkRhdGFiYXNl
SW1wbCYgbV93ZWJEYXRhYmFzZTsKQEAgLTE5MSwxOCArMTgyLDE5IEBAIFRFU1QoSURCRGF0YWJh
c2VCYWNrZW5kVGVzdCwgRm9yY2VkQ2xvc2UpCiAgICAgUmVmUHRyPElEQkRhdGFiYXNlQmFja2Vu
ZEltcGw+IGJhY2tlbmQgPSBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpjcmVhdGUoImRiIiwgYmFj
a2luZ1N0b3JlLmdldCgpLCBjb29yZGluYXRvciwgZmFjdG9yeSwgInVuaXF1ZWlkIik7CiAgICAg
RVhQRUNUX0dUKGJhY2tpbmdTdG9yZS0+cmVmQ291bnQoKSwgMSk7CiAKLSAgICBXZWJJREJEYXRh
YmFzZUltcGwgd2ViRGF0YWJhc2UoYmFja2VuZCk7Ci0KLSAgICBSZWZQdHI8TW9ja0lEQkNhbGxi
YWNrcz4gcmVxdWVzdDEgPSBNb2NrSURCQ2FsbGJhY2tzOjpjcmVhdGUoKTsKLSAgICBiYWNrZW5k
LT5vcGVuQ29ubmVjdGlvbihyZXF1ZXN0MSk7CisgICAgUmVmUHRyPEZha2VJREJEYXRhYmFzZUNh
bGxiYWNrcz4gY29ubmVjdGlvbiA9IEZha2VJREJEYXRhYmFzZUNhbGxiYWNrczo6Y3JlYXRlKCk7
CisgICAgUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHk+IGNvbm5lY3Rpb25Qcm94eSA9
IElEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHk6OmNyZWF0ZShhZG9wdFB0cihuZXcgV2ViSURCRGF0
YWJhc2VDYWxsYmFja3NJbXBsKGNvbm5lY3Rpb24pKSk7CisgICAgV2ViSURCRGF0YWJhc2VJbXBs
IHdlYkRhdGFiYXNlKGJhY2tlbmQsIGNvbm5lY3Rpb25Qcm94eSk7CiAKICAgICBSZWZQdHI8TW9j
a0lEQkRhdGFiYXNlQmFja2VuZFByb3h5PiBwcm94eSA9IE1vY2tJREJEYXRhYmFzZUJhY2tlbmRQ
cm94eTo6Y3JlYXRlKHdlYkRhdGFiYXNlKTsKKyAgICBSZWZQdHI8TW9ja0lEQkNhbGxiYWNrcz4g
cmVxdWVzdCA9IE1vY2tJREJDYWxsYmFja3M6OmNyZWF0ZSgpOworICAgIGJhY2tlbmQtPm9wZW5D
b25uZWN0aW9uKHJlcXVlc3QsIGNvbm5lY3Rpb25Qcm94eSk7CiAKICAgICBTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0ID0gMDsKLSAgICBSZWZQdHI8SURCRGF0YWJhc2U+IGlkYkRhdGFi
YXNlID0gSURCRGF0YWJhc2U6OmNyZWF0ZShjb250ZXh0LCBwcm94eSk7Ci0gICAgaWRiRGF0YWJh
c2UtPnJlZ2lzdGVyRnJvbnRlbmRDYWxsYmFja3MoKTsKKyAgICBSZWZQdHI8SURCRGF0YWJhc2U+
IGlkYkRhdGFiYXNlID0gSURCRGF0YWJhc2U6OmNyZWF0ZShjb250ZXh0LCBwcm94eSwgY29ubmVj
dGlvbik7CiAKICAgICB3ZWJEYXRhYmFzZS5mb3JjZUNsb3NlKCk7CisKICAgICBFWFBFQ1RfVFJV
RShiYWNraW5nU3RvcmUtPmhhc09uZVJlZigpKTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162901</attachid>
            <date>2012-09-07 16:33:00 -0700</date>
            <delta_ts>2012-09-07 17:02:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-90411-20120907163240.patch</filename>
            <type>text/plain</type>
            <size>67358</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3OTMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTFkZjlhNTVkZGIxNGZl
YWNmZmJjOGRlMzNhYzg3ZTY3YTUyYzAwYi4uZmVlNmRjMzViYzQyZjljZGMwNmM1N2RiMjk5NDJj
OGY2ZTJkYjRjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgxIEBACisyMDEyLTA5LTA2ICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBDb25z
b2xpZGF0ZSB0d28tcGhhc2UgY29ubmVjdGlvbiB0byBhdm9pZCByYWNlIGNvbmRpdGlvbnMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkwNDExCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUHJldmlvdXNseSwg
SURCIGNvbm5lY3Rpb25zIHdlcmUgb3BlbmVkIGJ5IGhhdmluZyB0aGUgZnJvbnQtZW5kICgxKSBj
YWxsIHRocm91Z2ggdG8KKyAgICAgICAgYSBiYWNrLWVuZCBvcGVuKCkgbWV0aG9kLCBldmVudHVh
bGx5IHJlY2VpdmUgYSBzdWNjZXNzIG1lc3NhZ2Ugd2l0aCBhIGJhY2stZW5kIG9iamVjdAorICAg
ICAgICBoYW5kbGUsIGFuZCAoMikgY2FsbCBpbnRvIHRoZSBiYWNrLWVuZCBvYmplY3QgdG8gcmVn
aXN0ZXIgZnJvbnQtZW5kIGNhbGxiYWNrcy4gVGhpcyBsZWZ0CisgICAgICAgIHRoZSBiYWNrLWVu
ZCdzIG5vdGlvbiBvZiBhbiBvcGVuIGNvbm5lY3Rpb24gaW4gYSBsaW1ibyBzdGF0ZSBiZXR3ZWVu
IHRoZXNlIHR3byBjYWxscy4KKyAgICAgICAgSW4gbXVsdGktcHJvY2VzcyBwb3J0cywgYSBjcmFz
aCBvZiB0aGUgZnJvbnQtZW5kIHByb2Nlc3MgY291bGQgbGVhdmUgdGhlIGJhY2stZW5kIHdlZGdl
ZAorICAgICAgICB3YWl0aW5nIGZvciB0aGlzIHNlY29uZCBjYWxsIChlLmcuIGNhbid0IGRlbGV0
ZSB1bnRpbCBhbGwgY29ubmVjdGlvbnMgYXJlIGNsb3NlZCkuCisKKyAgICAgICAgU2ltcGxpZnkg
dGhpcyBieSBoYXZpbmcgdGhlIGZyb250LWVuZCBwYXNzIHRocm91Z2ggdGhlIGNhbGxiYWNrcyBp
bnRvIHRoZSBiYWNrLWVuZAorICAgICAgICBkdXJpbmcgdGhlIGluaXRpYWwgb3BlbigpIGNhbGws
IHdoaWNoIGVsaW1pbmF0ZXMgdGhlIGxpbWJvIHN0YXRlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0
cyAtIG5vIGZ1bmN0aW9uYWwgY2hhbmdlcy4gQ2hyb21pdW0gcG9ydCdzIHdlYmtpdF91bml0X3Rl
c3RzIHVwZGF0ZWQuCisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZTo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQkRhdGFiYXNlOjpJREJEYXRhYmFzZSk6IERiLWNhbGxiYWNrcyBpcyBhdmFpbGFi
bGUgYXQgY3JlYXRpb24gdGltZS4KKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlOjp+SURC
RGF0YWJhc2UpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmg6Cisg
ICAgICAgIChJREJEYXRhYmFzZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0
YWJhc2VCYWNrZW5kSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tl
bmRJbXBsOjpQZW5kaW5nT3BlbkNhbGw6OmNyZWF0ZSk6IE5lZWQgdG8gdHJhY2sgZGItY2FsbGJh
Y2tzIGFzIHdlbGwuCisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpQ
ZW5kaW5nT3BlbkNhbGw6OmRhdGFiYXNlQ2FsbGJhY2tzKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QkRhdGFiYXNlQmFja2VuZEltcGw6OlBlbmRpbmdPcGVuQ2FsbDo6UGVuZGluZ09wZW5DYWxsKToK
KyAgICAgICAgKElEQkRhdGFiYXNlQmFja2VuZEltcGw6OlBlbmRpbmdPcGVuQ2FsbCk6CisgICAg
ICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpQZW5kaW5nT3BlbldpdGhWZXJz
aW9uQ2FsbDo6Y3JlYXRlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJh
Y2tlbmRJbXBsOjpQZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbDo6ZGF0YWJhc2VDYWxsYmFja3Mp
OgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6UGVuZGluZ09wZW5X
aXRoVmVyc2lvbkNhbGw6OlBlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxsKToKKyAgICAgICAgKElE
QkRhdGFiYXNlQmFja2VuZEltcGw6OlBlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxsKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OklEQkRhdGFiYXNlQmFja2VuZElt
cGwpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6c2V0VmVyc2lv
bik6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpjb25uZWN0aW9u
Q291bnQpOiBEb24ndCBuZWVkIHRvIGNvdW50IGxpbWJvIGNvbm5lY3Rpb25zIGFueSBtb3JlLgor
ICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6cHJvY2Vzc1BlbmRpbmdD
YWxscyk6IFBhc3MgdGhyb3VnaCBkYi1jYWxsYmFja3MuCisgICAgICAgIChXZWJDb3JlOjpJREJE
YXRhYmFzZUJhY2tlbmRJbXBsOjpvcGVuQ29ubmVjdGlvbik6IE5vIG1vcmUgbGltYm8gY29ubmVj
dGlvbnMgKHlheSEpLgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6
cnVuSW50VmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKTogUGFzcyB0aHJvdWdoIGRiLWNhbGxiYWNr
cy4KKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6Om9wZW5Db25uZWN0
aW9uV2l0aFZlcnNpb24pOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFj
a2VuZEltcGw6OmRlbGV0ZURhdGFiYXNlKTogU3R5bGUuCisgICAgICAgIChXZWJDb3JlOjpJREJE
YXRhYmFzZUJhY2tlbmRJbXBsOjpjbG9zZSk6IFJlc29sdmUgRklYTUUgYWJvdXQgY29ubmVjdGlv
bkNvdW50LgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZElt
cGwuaDoKKyAgICAgICAgKElEQkRhdGFiYXNlQmFja2VuZEltcGwpOgorICAgICAgICAqIE1vZHVs
ZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZS5oOgorICAgICAgICAoSURC
RGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9J
REJEYXRhYmFzZUNhbGxiYWNrc0ltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJh
c2VDYWxsYmFja3NJbXBsOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VD
YWxsYmFja3NJbXBsOjpJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCRGF0YWJhc2VDYWxsYmFja3NJbXBsOjpjb25uZWN0KToKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9JREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwuaDoKKyAgICAgICAgKElEQkRhdGFi
YXNlQ2FsbGJhY2tzSW1wbCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9y
eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJGYWN0b3J5OjpvcGVuKTogTWludCB0aGUgZGIt
Y2FsbGJhY2tzIGhlcmUuLi4KKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5
QmFja2VuZEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCRmFjdG9yeUJhY2tlbmRJbXBs
OjpvcGVuKTogLi4ucGFzc2VkIHRocm91Z2ggdG8gaGVyZS4uLgorICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5oOgorICAgICAgICAoSURCRmFjdG9yeUJh
Y2tlbmRJbXBsKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5QmFja2Vu
ZEludGVyZmFjZS5oOgorICAgICAgICAoSURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2UpOgorICAg
ICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQk9wZW5EQlJlcXVlc3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SURCT3BlbkRCUmVxdWVzdDo6Y3JlYXRlKTogLi4uYWxsIHRoZSB3YXkgdG8gaGVy
ZS4uLgorICAgICAgICAoV2ViQ29yZTo6SURCT3BlbkRCUmVxdWVzdDo6SURCT3BlbkRCUmVxdWVz
dCk6CisgICAgICAgIChXZWJDb3JlOjpJREJPcGVuREJSZXF1ZXN0OjpvblVwZ3JhZGVOZWVkZWQp
OiAuLi5hbmQgZmluYWxseSBob29rZWQgdXAgaGVyZS4KKyAgICAgICAgKFdlYkNvcmU6OklEQk9w
ZW5EQlJlcXVlc3Q6Om9uU3VjY2Vzcyk6IChvciBoZXJlLCBpZiBubyB1cGdyYWRlIG5lZWRlZCku
CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCT3BlbkRCUmVxdWVzdC5oOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChJREJPcGVuREJSZXF1ZXN0KToKKyAgICAgICAgKiBNb2R1
bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJU
cmFuc2FjdGlvbjo6b25BYm9ydCk6IFR3ZWFrIGV2ZW50L25vdGlmaWNhdGlvbiBvcmRlcmluZzsg
dGhlCisgICAgICAgIG5vdGlmeWluZyB0aGUgZGF0YWJhc2UgdGhhdCB0aGUgdHJhbnNhY3Rpb24g
aXMgZmluaXNoZWQgbWF5IHVuYmxvY2sgY2xvc2luZywKKyAgICAgICAgd2hpY2ggZmlyZXMgbW9y
ZSBldmVudHMsIGFuZCB0aGUgZGVsaXZlcnkgbWF0dGVycy4gUHJldmlvdXNseSB0aGUgY2xvc2Ug
d291bGQKKyAgICAgICAgYmUgYmxvY2tlZCBieSB0aGUgdHJhbnNhY3Rpb24gd2hpY2ggZ2F2ZSB0
aGUgZGVzaXJlZCBvcmRlci4KKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpvbkNv
bXBsZXRlKTogRGl0dG8uCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFn
ZW50LmNwcDogTmV3IGhvb2t1cCBsb2dpYy4KKyAgICAgICAgKFdlYkNvcmUpOgorCiAyMDEyLTA5
LTA3ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAg
ICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTI3OTIwIGFuZCByMTI3OTI2LgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZwppbmRleCA5MTkyYWNjOWEzYmQ5MzdiOWUwZTUyZmMzNTdmOTBkZGQwMDQy
YjhiLi4zM2I5YjBjY2VlNDgyMDEwMDhiODVlZWQ0ZGUzMzcyZTA1ZmQ4MzEzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDEyLTA5LTA2ICBKb3NodWEgQmVs
bCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBDb25zb2xpZGF0
ZSB0d28tcGhhc2UgY29ubmVjdGlvbiB0byBhdm9pZCByYWNlIGNvbmRpdGlvbnMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkwNDExCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQVBJIHBsdW1iaW5nIGZvciBz
aW1wbGlmaWVkIHNpbmdsZS1waGFzZSBjb25uZWN0aW9uIG9wZW5pbmcsIGFuZCB0ZXN0cyB1cGRh
dGVkCisgICAgICAgIHRvIGV4ZXJjaXNlIHRoZSBuZXcgQVBJcy4KKworICAgICAgICAqIHB1Ymxp
Yy9XZWJJREJEYXRhYmFzZS5oOgorICAgICAgICAoV2ViSURCRGF0YWJhc2UpOiBKdXN0IGEgRklY
TUUgdG8gcmVtb3ZlIHRoZSBvbGQgc2Vjb25kLXBoYXNlIGhvb2t1cCBBUEkuCisgICAgICAgICog
cHVibGljL1dlYklEQkZhY3RvcnkuaDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJJ
REJGYWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCRmFjdG9yeTo6b3Blbik6IE5ldyBv
dmVybG9hZCB0aGF0IHRha2VzIGRiLWNhbGxiYWNrcy4KKyAgICAgICAgKiBzcmMvSURCQ2FsbGJh
Y2tzUHJveHkuY3BwOiBUaGUgZGItY2FsbGJhY2tzIHBsdW1iaW5nIGlzIG5lZWRlZCBlYXJsaWVy
LgorICAgICAgICAoV2ViS2l0OjpJREJDYWxsYmFja3NQcm94eTo6b25TdWNjZXNzKToKKyAgICAg
ICAgKFdlYktpdDo6SURCQ2FsbGJhY2tzUHJveHk6Om9uVXBncmFkZU5lZWRlZCk6CisgICAgICAg
IChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpJREJDYWxsYmFja3NQcm94eTo6c2V0RGF0YWJh
c2VDYWxsYmFja3MpOiBOZWVkcyB0byBob2xkIG9uIHRvCisgICAgICAgIHRoZSBkYi1jYWxsYmFj
a3MgYW5kIGhvb2sgaXQgdXAgd2hlbiB0aGUgb25TdWNjZXNzIGNhbGxiYWNrIGNvbWVzIHRocm91
Z2guCisgICAgICAgICogc3JjL0lEQkNhbGxiYWNrc1Byb3h5Lmg6CisgICAgICAgIChXZWJLaXQp
OgorICAgICAgICAoSURCQ2FsbGJhY2tzUHJveHkpOgorICAgICAgICAqIHNyYy9JREJEYXRhYmFz
ZUJhY2tlbmRQcm94eS5jcHA6CisgICAgICAgICogc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5
Lmg6CisgICAgICAgIChJREJEYXRhYmFzZUJhY2tlbmRQcm94eSk6CisgICAgICAgICogc3JjL0lE
QkZhY3RvcnlCYWNrZW5kUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpJREJGYWN0b3J5QmFj
a2VuZFByb3h5OjpvcGVuKToKKyAgICAgICAgKiBzcmMvSURCRmFjdG9yeUJhY2tlbmRQcm94eS5o
OgorICAgICAgICAoSURCRmFjdG9yeUJhY2tlbmRQcm94eSk6CisgICAgICAgICogc3JjL1dlYklE
QkRhdGFiYXNlSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkRhdGFiYXNlSW1wbDo6
V2ViSURCRGF0YWJhc2VJbXBsKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCRGF0YWJhc2VJbXBs
OjpjbG9zZSk6CisgICAgICAgICogc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5oOgorICAgICAgICAo
V2ViSURCRGF0YWJhc2VJbXBsKToKKyAgICAgICAgKiBzcmMvV2ViSURCRmFjdG9yeUltcGwuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJJREJGYWN0b3J5SW1wbDo6b3Blbik6CisgICAgICAgICog
c3JjL1dlYklEQkZhY3RvcnlJbXBsLmg6CisgICAgICAgIChXZWJJREJGYWN0b3J5SW1wbCk6Cisg
ICAgICAgICogdGVzdHMvSURCQWJvcnRPbkNvcnJ1cHRUZXN0LmNwcDoKKyAgICAgICAgKEZha2VJ
REJEYXRhYmFzZUNhbGxiYWNrcyk6CisgICAgICAgIChXZWJDb3JlOjpGYWtlSURCRGF0YWJhc2VD
YWxsYmFja3M6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpGYWtlSURCRGF0YWJhc2VDYWxs
YmFja3M6On5GYWtlSURCRGF0YWJhc2VDYWxsYmFja3MpOgorICAgICAgICAoV2ViQ29yZTo6RmFr
ZUlEQkRhdGFiYXNlQ2FsbGJhY2tzOjpGYWtlSURCRGF0YWJhc2VDYWxsYmFja3MpOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpURVNUKTogVXBkYXRlZCBjb25uZWN0aW9u
IHNlcXVlbmNlLgorICAgICAgICAqIHRlc3RzL0lEQkRhdGFiYXNlQmFja2VuZFRlc3QuY3BwOiBE
aXR0by4KKwogMjAxMi0wOS0wNyAgRG9taW5pYyBNYXp6b25pICA8ZG1henpvbmlAZ29vZ2xlLmNv
bT4KIAogICAgICAgICBBWDogQ2hyb21pdW0gbmVlZHMgYWNjZXNzIHRvIGNhbnZhc0hhc0ZhbGxi
YWNrQ29udGVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0
YWJhc2UuY3BwCmluZGV4IGIzZjcwYWRkMjkzMmNlMTU5N2VjYTA1NWFlZDFlZWYwNzBjZDVkYTcu
LmQ2NDFkMDRhNDM2ZTFmZmY1ZjY0MTg0ZmQ4MzQyZjQyZDVjMDM3NDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHAKQEAgLTMxLDcgKzMx
LDcgQEAKICNpbmNsdWRlICJFdmVudFF1ZXVlLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5o
IgogI2luY2x1ZGUgIklEQkFueS5oIgotI2luY2x1ZGUgIklEQkRhdGFiYXNlQ2FsbGJhY2tzSW1w
bC5oIgorI2luY2x1ZGUgIklEQkRhdGFiYXNlQ2FsbGJhY2tzLmgiCiAjaW5jbHVkZSAiSURCRGF0
YWJhc2VFcnJvci5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNlRXhjZXB0aW9uLmgiCiAjaW5jbHVk
ZSAiSURCRXZlbnREaXNwYXRjaGVyLmgiCkBAIC01MCwyOSArNTAsMjggQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1QYXNzUmVmUHRyPElEQkRhdGFiYXNlPiBJREJEYXRhYmFzZTo6Y3JlYXRl
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VC
YWNrZW5kSW50ZXJmYWNlPiBkYXRhYmFzZSkKK1Bhc3NSZWZQdHI8SURCRGF0YWJhc2U+IElEQkRh
dGFiYXNlOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0
cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+IGRhdGFiYXNlLCBQYXNzUmVmUHRyPElEQkRh
dGFiYXNlQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiB7Ci0gICAgUmVmUHRyPElEQkRhdGFiYXNlPiBp
ZGJEYXRhYmFzZShhZG9wdFJlZihuZXcgSURCRGF0YWJhc2UoY29udGV4dCwgZGF0YWJhc2UpKSk7
CisgICAgUmVmUHRyPElEQkRhdGFiYXNlPiBpZGJEYXRhYmFzZShhZG9wdFJlZihuZXcgSURCRGF0
YWJhc2UoY29udGV4dCwgZGF0YWJhc2UsIGNhbGxiYWNrcykpKTsKICAgICBpZGJEYXRhYmFzZS0+
c3VzcGVuZElmTmVlZGVkKCk7CiAgICAgcmV0dXJuIGlkYkRhdGFiYXNlLnJlbGVhc2UoKTsKIH0K
IAotSURCRGF0YWJhc2U6OklEQkRhdGFiYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiBiYWNrZW5kKQorSURC
RGF0YWJhc2U6OklEQkRhdGFiYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBh
c3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiBiYWNrZW5kLCBQYXNzUmVmUHRy
PElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiAgICAgOiBBY3RpdmVET01PYmplY3Qo
Y29udGV4dCwgdGhpcykKICAgICAsIG1fYmFja2VuZChiYWNrZW5kKQogICAgICwgbV9jbG9zZVBl
bmRpbmcoZmFsc2UpCiAgICAgLCBtX2NvbnRleHRTdG9wcGVkKGZhbHNlKQorICAgICwgbV9kYXRh
YmFzZUNhbGxiYWNrcyhjYWxsYmFja3MpCiB7CiAgICAgLy8gV2UgcGFzcyBhIHJlZmVyZW5jZSBv
ZiB0aGlzIG9iamVjdCBiZWZvcmUgaXQgY2FuIGJlIGFkb3B0ZWQuCiAgICAgcmVsYXhBZG9wdGlv
blJlcXVpcmVtZW50KCk7Ci0gICAgbV9kYXRhYmFzZUNhbGxiYWNrcyA9IElEQkRhdGFiYXNlQ2Fs
bGJhY2tzSW1wbDo6Y3JlYXRlKHRoaXMpOwogICAgIG1fbWV0YWRhdGEgPSBtX2JhY2tlbmQtPm1l
dGFkYXRhKCk7CiB9CiAKIElEQkRhdGFiYXNlOjp+SURCRGF0YWJhc2UoKQogewogICAgIGNsb3Nl
KCk7Ci0gICAgbV9kYXRhYmFzZUNhbGxiYWNrcy0+dW5yZWdpc3RlckRhdGFiYXNlKHRoaXMpOwog
fQogCiB2b2lkIElEQkRhdGFiYXNlOjp0cmFuc2FjdGlvbkNyZWF0ZWQoSURCVHJhbnNhY3Rpb24q
IHRyYW5zYWN0aW9uKQpAQCAtMzM1LDEyICszMzQsNiBAQCB2b2lkIElEQkRhdGFiYXNlOjpvblZl
cnNpb25DaGFuZ2UoY29uc3QgU3RyaW5nJiB2ZXJzaW9uKQogICAgIGVucXVldWVFdmVudChJREJW
ZXJzaW9uQ2hhbmdlRXZlbnQ6OmNyZWF0ZSh2ZXJzaW9uLCBldmVudE5hbWVzKCkudmVyc2lvbmNo
YW5nZUV2ZW50KSk7CiB9CiAKLXZvaWQgSURCRGF0YWJhc2U6OnJlZ2lzdGVyRnJvbnRlbmRDYWxs
YmFja3MoKQotewotICAgIEFTU0VSVChtX2JhY2tlbmQpOwotICAgIG1fYmFja2VuZC0+cmVnaXN0
ZXJGcm9udGVuZENhbGxiYWNrcyhtX2RhdGFiYXNlQ2FsbGJhY2tzKTsKLX0KLQogdm9pZCBJREJE
YXRhYmFzZTo6ZW5xdWV1ZUV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50KQogewogICAgIEFT
U0VSVCghbV9jb250ZXh0U3RvcHBlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCRGF0YWJhc2UuaAppbmRleCAyN2YwM2I2ZTM1NDhhODAwZjQxYTNmYWU1ODYwMTc5
Yzg3ZmQ3MmNkLi42NDk5MjRhYjY2MmQ5OTQ1Yzc4ZTIzMmViYjQzNjkwNDU2OTMyNTBiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmgKQEAgLTUx
LDcgKzUxLDcgQEAgdHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKIAogY2xhc3MgSURCRGF0YWJh
c2UgOiBwdWJsaWMgUmVmQ291bnRlZDxJREJEYXRhYmFzZT4sIHB1YmxpYyBFdmVudFRhcmdldCwg
cHVibGljIEFjdGl2ZURPTU9iamVjdCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8
SURCRGF0YWJhc2U+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJ
REJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+KTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJE
YXRhYmFzZT4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQkRh
dGFiYXNlQmFja2VuZEludGVyZmFjZT4sIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+
KTsKICAgICB+SURCRGF0YWJhc2UoKTsKIAogICAgIHZvaWQgdHJhbnNhY3Rpb25DcmVhdGVkKElE
QlRyYW5zYWN0aW9uKik7CkBAIC04OSw3ICs4OSw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdDsKIAog
ICAgIHZvaWQgZm9yY2VDbG9zZSgpOwotICAgIHZvaWQgcmVnaXN0ZXJGcm9udGVuZENhbGxiYWNr
cygpOwogICAgIGNvbnN0IElEQkRhdGFiYXNlTWV0YWRhdGEgbWV0YWRhdGEoKSBjb25zdCB7IHJl
dHVybiBtX21ldGFkYXRhOyB9CiAgICAgdm9pZCBlbnF1ZXVlRXZlbnQoUGFzc1JlZlB0cjxFdmVu
dD4pOwogICAgIGJvb2wgZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBldmVudCwgRXhj
ZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJuIEV2ZW50VGFyZ2V0OjpkaXNwYXRjaEV2ZW50KGV2ZW50
LCBlYyk7IH0KQEAgLTk5LDcgKzk4LDcgQEAgcHVibGljOgogICAgIHVzaW5nIFJlZkNvdW50ZWQ8
SURCRGF0YWJhc2U+OjpkZXJlZjsKIAogcHJpdmF0ZToKLSAgICBJREJEYXRhYmFzZShTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+
KTsKKyAgICBJREJEYXRhYmFzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJ
REJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJh
Y2tzPik7CiAKICAgICAvLyBFdmVudFRhcmdldAogICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRh
cmdldCgpIHsgcmVmKCk7IH0KQEAgLTEyMyw3ICsxMjIsNyBAQCBwcml2YXRlOgogICAgIC8vIGRh
dGFiYXNlIHNvIHRoYXQgd2UgY2FuIGNhbmNlbCB0aGVtIGlmIHRoZSBkYXRhYmFzZSBjbG9zZXMu
CiAgICAgVmVjdG9yPFJlZlB0cjxFdmVudD4gPiBtX2VucXVldWVkRXZlbnRzOwogCi0gICAgUmVm
UHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbD4gbV9kYXRhYmFzZUNhbGxiYWNrczsKKyAgICBS
ZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IG1fZGF0YWJhc2VDYWxsYmFja3M7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3BwCmluZGV4IDgxMTBjMjRj
MTNiM2M0NjNlZTM3YjIwZDRjZmZhNzEyNDI0NGI2MzkuLmJmYjJhZTI2NzYxNWQ2Mzg1MjNjMGRl
MmJlZWU0NWRjNTJmYTM0NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3BwCkBAIC00MSwzNyArNDEs
NDMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJREJEYXRhYmFzZUJhY2tlbmRJbXBs
OjpQZW5kaW5nT3BlbkNhbGwgOiBwdWJsaWMgUmVmQ291bnRlZDxQZW5kaW5nT3BlbkNhbGw+IHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxQZW5kaW5nT3BlbkNhbGw+IGNyZWF0ZShQ
YXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQorICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFBlbmRpbmdPcGVuQ2FsbD4gY3JlYXRlKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFj
a3MsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IGRhdGFiYXNlQ2FsbGJhY2tzKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQZW5kaW5nT3BlbkNhbGwoY2FsbGJh
Y2tzKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgUGVuZGluZ09wZW5DYWxsKGNhbGxi
YWNrcywgZGF0YWJhc2VDYWxsYmFja3MpKTsKICAgICB9CiAgICAgUGFzc1JlZlB0cjxJREJDYWxs
YmFja3M+IGNhbGxiYWNrcygpIHsgcmV0dXJuIG1fY2FsbGJhY2tzOyB9CisgICAgUGFzc1JlZlB0
cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gZGF0YWJhc2VDYWxsYmFja3MoKSB7IHJldHVybiBtX2Rh
dGFiYXNlQ2FsbGJhY2tzOyB9CiAKIHByaXZhdGU6Ci0gICAgUGVuZGluZ09wZW5DYWxsKFBhc3NS
ZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCisgICAgUGVuZGluZ09wZW5DYWxsKFBhc3NS
ZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxs
YmFja3M+IGRhdGFiYXNlQ2FsbGJhY2tzKQogICAgICAgICA6IG1fY2FsbGJhY2tzKGNhbGxiYWNr
cykKKyAgICAgICAgLCBtX2RhdGFiYXNlQ2FsbGJhY2tzKGRhdGFiYXNlQ2FsbGJhY2tzKQogICAg
IHsKICAgICB9CiAKICAgICBSZWZQdHI8SURCQ2FsbGJhY2tzPiBtX2NhbGxiYWNrczsKKyAgICBS
ZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IG1fZGF0YWJhc2VDYWxsYmFja3M7CiB9OwogCiBj
bGFzcyBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpQZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbCA6
IHB1YmxpYyBSZWZDb3VudGVkPFBlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxsPiB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8UGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGw+IGNyZWF0
ZShQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBpbnQ2NF90IHZlcnNpb24pCisg
ICAgc3RhdGljIFBhc3NSZWZQdHI8UGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGw+IGNyZWF0ZShQ
YXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNl
Q2FsbGJhY2tzPiBkYXRhYmFzZUNhbGxiYWNrcywgaW50NjRfdCB2ZXJzaW9uKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbChjYWxs
YmFja3MsIHZlcnNpb24pKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQZW5kaW5nT3Bl
bldpdGhWZXJzaW9uQ2FsbChjYWxsYmFja3MsIGRhdGFiYXNlQ2FsbGJhY2tzLCB2ZXJzaW9uKSk7
CiAgICAgfQogICAgIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MoKSB7IHJldHVy
biBtX2NhbGxiYWNrczsgfQorICAgIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IGRh
dGFiYXNlQ2FsbGJhY2tzKCkgeyByZXR1cm4gbV9kYXRhYmFzZUNhbGxiYWNrczsgfQogICAgIGlu
dDY0X3QgdmVyc2lvbigpIHsgcmV0dXJuIG1fdmVyc2lvbjsgfQogCiBwcml2YXRlOgotICAgIFBl
bmRpbmdPcGVuV2l0aFZlcnNpb25DYWxsKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFj
a3MsIGludDY0X3QgdmVyc2lvbikKKyAgICBQZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbChQYXNz
UmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2Fs
bGJhY2tzPiBkYXRhYmFzZUNhbGxiYWNrcywgaW50NjRfdCB2ZXJzaW9uKQogICAgICAgICA6IG1f
Y2FsbGJhY2tzKGNhbGxiYWNrcykKKyAgICAgICAgLCBtX2RhdGFiYXNlQ2FsbGJhY2tzKGRhdGFi
YXNlQ2FsbGJhY2tzKQogICAgICAgICAsIG1fdmVyc2lvbih2ZXJzaW9uKQogICAgIHsKICAgICB9
CiAgICAgUmVmUHRyPElEQkNhbGxiYWNrcz4gbV9jYWxsYmFja3M7CisgICAgUmVmUHRyPElEQkRh
dGFiYXNlQ2FsbGJhY2tzPiBtX2RhdGFiYXNlQ2FsbGJhY2tzOwogICAgIGludDY0X3QgbV92ZXJz
aW9uOwogfTsKIApAQCAtMTMwLDcgKzEzNiw2IEBAIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OklE
QkRhdGFiYXNlQmFja2VuZEltcGwoY29uc3QgU3RyaW5nJiBuYW1lLCBJREJCYWNraW5nU3RvCiAg
ICAgLCBtX2lkZW50aWZpZXIodW5pcXVlSWRlbnRpZmllcikKICAgICAsIG1fZmFjdG9yeShmYWN0
b3J5KQogICAgICwgbV90cmFuc2FjdGlvbkNvb3JkaW5hdG9yKGNvb3JkaW5hdG9yKQotICAgICwg
bV9wZW5kaW5nQ29ubmVjdGlvbkNvdW50KDApCiB7CiAgICAgQVNTRVJUKCFtX25hbWUuaXNOdWxs
KCkpOwogfQpAQCAtMjQwLDYgKzI0NSw3IEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6
c2V0VmVyc2lvbihjb25zdCBTdHJpbmcmIHZlcnNpb24sIFBhc3NSZWZQdHI8SURCQ2FsCiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAgICAgZm9yIChEYXRhYmFzZUNhbGxiYWNrc1NldDo6Y29uc3Rf
aXRlcmF0b3IgaXQgPSBtX2RhdGFiYXNlQ2FsbGJhY2tzU2V0LmJlZ2luKCk7IGl0ICE9IG1fZGF0
YWJhc2VDYWxsYmFja3NTZXQuZW5kKCk7ICsraXQpIHsKKyAgICAgICAgLy8gRnJvbnQgZW5kIGVu
c3VyZXMgdGhlIGV2ZW50IGlzIG5vdCBmaXJlZCBhdCBjb25uZWN0aW9ucyB0aGF0IGhhdmUgY2xv
c2VQZW5kaW5nIHNldC4KICAgICAgICAgaWYgKCppdCAhPSBkYXRhYmFzZUNhbGxiYWNrcykKICAg
ICAgICAgICAgICgqaXQpLT5vblZlcnNpb25DaGFuZ2UodmVyc2lvbik7CiAgICAgfQpAQCAtMzQy
LDkgKzM0OCwxMCBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OnRyYW5zYWN0aW9uRmlu
aXNoZWRBbmRDb21wbGV0ZUZpcmVkKFBhc3NSZWZQdHI8SURCVAogICAgICAgICBwcm9jZXNzUGVu
ZGluZ0NhbGxzKCk7CiB9CiAKLWludDMyX3QgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6Y29ubmVj
dGlvbkNvdW50KCkKK3NpemVfdCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpjb25uZWN0aW9uQ291
bnQoKQogewotICAgIHJldHVybiBtX2RhdGFiYXNlQ2FsbGJhY2tzU2V0LnNpemUoKSArIG1fcGVu
ZGluZ0Nvbm5lY3Rpb25Db3VudDsKKyAgICAvLyBUaGlzIGRvZXMgbm90IGluY2x1ZGUgcGVuZGlu
ZyBvcGVuIGNhbGxzLCBhcyB0aG9zZSBzaG91bGQgbm90IGJsb2NrIHZlcnNpb24gY2hhbmdlcyBh
bmQgZGVsZXRlcy4KKyAgICByZXR1cm4gbV9kYXRhYmFzZUNhbGxiYWNrc1NldC5zaXplKCk7CiB9
CiAKIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6cHJvY2Vzc1BlbmRpbmdDYWxscygpCkBA
IC0zNTUsOSArMzYyLDggQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpwcm9jZXNzUGVu
ZGluZ0NhbGxzKCkKICAgICAgICAgUmVmUHRyPFBlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxsPiBw
ZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbCA9IG1fcGVuZGluZ1NlY29uZEhhbGZPcGVuV2l0aFZl
cnNpb25DYWxscy50YWtlRmlyc3QoKTsKICAgICAgICAgQVNTRVJUKHBlbmRpbmdPcGVuV2l0aFZl
cnNpb25DYWxsLT52ZXJzaW9uKCkgPT0gbV9pbnRWZXJzaW9uKTsKICAgICAgICAgQVNTRVJUKG1f
aWQgIT0gSW52YWxpZElkKTsKLSAgICAgICAgKyttX3BlbmRpbmdDb25uZWN0aW9uQ291bnQ7CiAg
ICAgICAgIHBlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxsLT5jYWxsYmFja3MoKS0+b25TdWNjZXNz
KHRoaXMpOwotICAgICAgICByZXR1cm47CisgICAgICAgIC8vIEZhbGwgdGhyb3VnaCB3aGVuIGNv
bXBsZXRlLCBhcyBwZW5kaW5nIGRlbGV0ZXMgbWF5IGJlIChwYXJ0aWFsbHkpIHVuYmxvY2tlZC4K
ICAgICB9CiAKICAgICAvLyBQZW5kaW5nIGNhbGxzIG1heSBiZSByZXF1ZXVlZCBvciBhYm9ydGVk
CkBAIC00MDAsNyArNDA2LDcgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpwcm9jZXNz
UGVuZGluZ0NhbGxzKCkKICAgICBtX3BlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxscy5zd2FwKHBl
bmRpbmdPcGVuV2l0aFZlcnNpb25DYWxscyk7CiAgICAgd2hpbGUgKCFwZW5kaW5nT3BlbldpdGhW
ZXJzaW9uQ2FsbHMuaXNFbXB0eSgpKSB7CiAgICAgICAgIFJlZlB0cjxQZW5kaW5nT3BlbldpdGhW
ZXJzaW9uQ2FsbD4gcGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGwgPSBwZW5kaW5nT3BlbldpdGhW
ZXJzaW9uQ2FsbHMudGFrZUZpcnN0KCk7Ci0gICAgICAgIG9wZW5Db25uZWN0aW9uV2l0aFZlcnNp
b24ocGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGwtPmNhbGxiYWNrcygpLCBwZW5kaW5nT3Blbldp
dGhWZXJzaW9uQ2FsbC0+dmVyc2lvbigpKTsKKyAgICAgICAgb3BlbkNvbm5lY3Rpb25XaXRoVmVy
c2lvbihwZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbC0+Y2FsbGJhY2tzKCksIHBlbmRpbmdPcGVu
V2l0aFZlcnNpb25DYWxsLT5kYXRhYmFzZUNhbGxiYWNrcygpLCBwZW5kaW5nT3BlbldpdGhWZXJz
aW9uQ2FsbC0+dmVyc2lvbigpKTsKICAgICB9CiAKICAgICAvLyBHaXZlbiB0aGUgY2hlY2sgYWJv
dmUsIGl0IGFwcGVhcnMgdGhhdCBjYWxscyBjYW5ub3QgYmUgcmVxdWV1ZWQgYnkKQEAgLTQwOSw3
ICs0MTUsNyBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OnByb2Nlc3NQZW5kaW5nQ2Fs
bHMoKQogICAgIG1fcGVuZGluZ09wZW5DYWxscy5zd2FwKHBlbmRpbmdPcGVuQ2FsbHMpOwogICAg
IHdoaWxlICghcGVuZGluZ09wZW5DYWxscy5pc0VtcHR5KCkpIHsKICAgICAgICAgUmVmUHRyPFBl
bmRpbmdPcGVuQ2FsbD4gcGVuZGluZ09wZW5DYWxsID0gcGVuZGluZ09wZW5DYWxscy50YWtlRmly
c3QoKTsKLSAgICAgICAgb3BlbkNvbm5lY3Rpb24ocGVuZGluZ09wZW5DYWxsLT5jYWxsYmFja3Mo
KSk7CisgICAgICAgIG9wZW5Db25uZWN0aW9uKHBlbmRpbmdPcGVuQ2FsbC0+Y2FsbGJhY2tzKCks
IHBlbmRpbmdPcGVuQ2FsbC0+ZGF0YWJhc2VDYWxsYmFja3MoKSk7CiAgICAgfQogICAgIEFTU0VS
VChtX3BlbmRpbmdPcGVuQ2FsbHMuaXNFbXB0eSgpKTsKIH0KQEAgLTQyOCw0NCArNDM0LDMwIEBA
IFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiBJREJEYXRhYmFzZUJh
Y2tlbmRJbXBsOjp0cmFuc2FjdGlvbihECiAgICAgcmV0dXJuIHRyYW5zYWN0aW9uLnJlbGVhc2Uo
KTsKIH0KIAotdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpyZWdpc3RlckZyb250ZW5kQ2Fs
bGJhY2tzKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IGNhbGxiYWNrcykKLXsKLSAg
ICBBU1NFUlQobV9iYWNraW5nU3RvcmUuZ2V0KCkpOwotICAgIEFTU0VSVChtX3BlbmRpbmdDb25u
ZWN0aW9uQ291bnQpOwotICAgIC0tbV9wZW5kaW5nQ29ubmVjdGlvbkNvdW50OwotICAgIG1fZGF0
YWJhc2VDYWxsYmFja3NTZXQuYWRkKFJlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4oY2FsbGJh
Y2tzKSk7Ci0gICAgLy8gV2UgZ2l2ZSBtYXggcHJpb3JpdHkgdG8gb3BlbiBjYWxscyB0aGF0IGZv
bGxvdyB1cGdyYWRlbmVlZGVkCi0gICAgLy8gZXZlbnRzOyB0cmlnZ2VyIHRoZSByZXN0IG9mIHRo
ZSBxdWV1ZXMgdG8gYmUgc2VydmljZWQgd2hlbiB0aG9zZSBvcGVuCi0gICAgLy8gY2FsbHMgYXJl
IGZpbmlzaGVkLgotICAgIHByb2Nlc3NQZW5kaW5nQ2FsbHMoKTsKLX0KLQotdm9pZCBJREJEYXRh
YmFzZUJhY2tlbmRJbXBsOjpvcGVuQ29ubmVjdGlvbihQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4g
Y2FsbGJhY2tzKQordm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpvcGVuQ29ubmVjdGlvbihQ
YXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNl
Q2FsbGJhY2tzPiBkYXRhYmFzZUNhbGxiYWNrcykKIHsKICAgICBBU1NFUlQobV9iYWNraW5nU3Rv
cmUuZ2V0KCkpOwogICAgIGlmICghbV9wZW5kaW5nRGVsZXRlQ2FsbHMuaXNFbXB0eSgpIHx8IG1f
cnVubmluZ1ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbiB8fCAhbV9wZW5kaW5nU2V0VmVyc2lvbkNh
bGxzLmlzRW1wdHkoKSkKLSAgICAgICAgbV9wZW5kaW5nT3BlbkNhbGxzLmFwcGVuZChQZW5kaW5n
T3BlbkNhbGw6OmNyZWF0ZShjYWxsYmFja3MpKTsKKyAgICAgICAgbV9wZW5kaW5nT3BlbkNhbGxz
LmFwcGVuZChQZW5kaW5nT3BlbkNhbGw6OmNyZWF0ZShjYWxsYmFja3MsIGRhdGFiYXNlQ2FsbGJh
Y2tzKSk7CiAgICAgZWxzZSB7CiAgICAgICAgIGlmIChtX2lkID09IEludmFsaWRJZCAmJiAhb3Bl
bkludGVybmFsKCkpCiAgICAgICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VF
cnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVTktOT1dOX0VSUiwgIkludGVybmFs
IGVycm9yLiIpKTsKICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICArK21fcGVuZGluZ0Nvbm5l
Y3Rpb25Db3VudDsKKyAgICAgICAgICAgIG1fZGF0YWJhc2VDYWxsYmFja3NTZXQuYWRkKFJlZlB0
cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4oZGF0YWJhc2VDYWxsYmFja3MpKTsKICAgICAgICAgICAg
IGNhbGxiYWNrcy0+b25TdWNjZXNzKHRoaXMpOwogICAgICAgICB9CiAgICAgfQogfQogCi12b2lk
IElEQkRhdGFiYXNlQmFja2VuZEltcGw6OnJ1bkludFZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbihp
bnQ2NF90IHJlcXVlc3RlZFZlcnNpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxs
YmFja3MpCit2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OnJ1bkludFZlcnNpb25DaGFuZ2VU
cmFuc2FjdGlvbihpbnQ2NF90IHJlcXVlc3RlZFZlcnNpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJh
Y2tzPiBwcnBDYWxsYmFja3MsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IHBycERh
dGFiYXNlQ2FsbGJhY2tzKQogewogICAgIFJlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcyA9
IHBycENhbGxiYWNrczsKKyAgICBSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IGRhdGFiYXNl
Q2FsbGJhY2tzID0gcHJwRGF0YWJhc2VDYWxsYmFja3M7CiAgICAgQVNTRVJUKGNhbGxiYWNrcyk7
CiAgICAgZm9yIChEYXRhYmFzZUNhbGxiYWNrc1NldDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX2Rh
dGFiYXNlQ2FsbGJhY2tzU2V0LmJlZ2luKCk7IGl0ICE9IG1fZGF0YWJhc2VDYWxsYmFja3NTZXQu
ZW5kKCk7ICsraXQpIHsKLSAgICAgICAgLy8gTm90ZSB0aGF0IHNvbWUgY29ubmVjdGlvbnMgbWln
aHQgY2xvc2UgaW4gdGhlIHZlcnNpb25jaGFuZ2UgZXZlbnQKLSAgICAgICAgLy8gaGFuZGxlciBm
b3Igc29tZSBvdGhlciBjb25uZWN0aW9uLCBhZnRlciB3aGljaCBpdHMgb3duIHZlcnNpb25jaGFu
Z2UKLSAgICAgICAgLy8gZXZlbnQgc2hvdWxkIG5vdCBiZSBmaXJlZC4gVGhlIGJhY2tlbmQgZG9l
c24ndCB3b3JyeSBhYm91dCB0aGlzLCB3ZQotICAgICAgICAvLyBqdXN0IHF1ZXVlIHVwIGEgdmVy
c2lvbiBjaGFuZ2UgZXZlbnQgZm9yIGV2ZXJ5IGNvbm5lY3Rpb24uIFRoZQotICAgICAgICAvLyBm
cm9udGVuZCB0YWtlcyBjYXJlIHRvIG9ubHkgZGlzcGF0Y2ggdG8gb3BlbiBjb25uZWN0aW9ucy4K
LSAgICAgICAgKCppdCktPm9uVmVyc2lvbkNoYW5nZShtX2ludFZlcnNpb24sIHJlcXVlc3RlZFZl
cnNpb24pOworICAgICAgICAvLyBGcm9udCBlbmQgZW5zdXJlcyB0aGUgZXZlbnQgaXMgbm90IGZp
cmVkIGF0IGNvbm5lY3Rpb25zIHRoYXQgaGF2ZSBjbG9zZVBlbmRpbmcgc2V0LgorICAgICAgICBp
ZiAoKml0ICE9IGRhdGFiYXNlQ2FsbGJhY2tzKQorICAgICAgICAgICAgKCppdCktPm9uVmVyc2lv
bkNoYW5nZShtX2ludFZlcnNpb24sIHJlcXVlc3RlZFZlcnNpb24pOwogICAgIH0KICAgICAvLyBU
aGUgc3BlYyBkaWN0YXRlcyB3ZSB3YWl0IHVudGlsIGFsbCB0aGUgdmVyc2lvbiBjaGFuZ2UgZXZl
bnRzIGFyZQogICAgIC8vIGRlbGl2ZXJlZCBhbmQgdGhlbiBjaGVjayBtX2RhdGFiYXNlQ2FsbGJh
Y2tzLmVtcHR5KCkgYmVmb3JlIHByb2NlZWRpbmcKQEAgLTQ3NCwxMSArNDY2LDExIEBAIHZvaWQg
SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6cnVuSW50VmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKGlu
dDY0X3QgcmVxdWVzdGVkVmVyCiAgICAgLy8gRklYTUU6IFJlbW92ZSB0aGUgY2FsbCB0byBvbkJs
b2NrZWQgYW5kIGluc3RlYWQgd2FpdCB1bnRpbCB0aGUgZnJvbnRlbmQKICAgICAvLyB0ZWxscyB1
cyB0aGF0IGFsbCB0aGUgYmxvY2tlZCBldmVudHMgaGF2ZSBiZWVuIGRlbGl2ZXJlZC4gU2VlCiAg
ICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxMTMwCi0gICAg
aWYgKGNvbm5lY3Rpb25Db3VudCgpID4gMCkKKyAgICBpZiAoY29ubmVjdGlvbkNvdW50KCkpCiAg
ICAgICAgIGNhbGxiYWNrcy0+b25CbG9ja2VkKG1faW50VmVyc2lvbik7CiAgICAgLy8gRklYTUU6
IEFkZCB0ZXN0IGZvciBtX3J1bm5pbmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24uCi0gICAgaWYg
KG1fcnVubmluZ1ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbiB8fCBjb25uZWN0aW9uQ291bnQoKSA+
IDApIHsKLSAgICAgICAgbV9wZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbHMuYXBwZW5kKFBlbmRp
bmdPcGVuV2l0aFZlcnNpb25DYWxsOjpjcmVhdGUoY2FsbGJhY2tzLCByZXF1ZXN0ZWRWZXJzaW9u
KSk7CisgICAgaWYgKG1fcnVubmluZ1ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbiB8fCBjb25uZWN0
aW9uQ291bnQoKSkgeworICAgICAgICBtX3BlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxscy5hcHBl
bmQoUGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGw6OmNyZWF0ZShjYWxsYmFja3MsIGRhdGFiYXNl
Q2FsbGJhY2tzLCByZXF1ZXN0ZWRWZXJzaW9uKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
QEAgLTQ5NywxNCArNDg5LDE2IEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6cnVuSW50
VmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKGludDY0X3QgcmVxdWVzdGVkVmVyCiAgICAgICAgIGVj
ID0gSURCRGF0YWJhc2VFeGNlcHRpb246OlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUjsKICAgICB9
CiAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghbV9wZW5kaW5nU2Vjb25kSGFsZk9wZW5XaXRoVmVy
c2lvbkNhbGxzLnNpemUoKSwgIm1fcGVuZGluZ1NlY29uZEhhbGZPcGVuV2l0aFZlcnNpb25DYWxs
cy5zaXplID0gJXp1IiwgbV9wZW5kaW5nU2Vjb25kSGFsZk9wZW5XaXRoVmVyc2lvbkNhbGxzLnNp
emUoKSk7Ci0gICAgbV9wZW5kaW5nU2Vjb25kSGFsZk9wZW5XaXRoVmVyc2lvbkNhbGxzLmFwcGVu
ZChQZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbDo6Y3JlYXRlKGNhbGxiYWNrcywgcmVxdWVzdGVk
VmVyc2lvbikpOworICAgIG1fcGVuZGluZ1NlY29uZEhhbGZPcGVuV2l0aFZlcnNpb25DYWxscy5h
cHBlbmQoUGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGw6OmNyZWF0ZShjYWxsYmFja3MsIGRhdGFi
YXNlQ2FsbGJhY2tzLCByZXF1ZXN0ZWRWZXJzaW9uKSk7CisgICAgbV9kYXRhYmFzZUNhbGxiYWNr
c1NldC5hZGQoZGF0YWJhc2VDYWxsYmFja3MpOwogfQogCi12b2lkIElEQkRhdGFiYXNlQmFja2Vu
ZEltcGw6Om9wZW5Db25uZWN0aW9uV2l0aFZlcnNpb24oUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+
IHBycENhbGxiYWNrcywgaW50NjRfdCB2ZXJzaW9uKQordm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJ
bXBsOjpvcGVuQ29ubmVjdGlvbldpdGhWZXJzaW9uKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBw
cnBDYWxsYmFja3MsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IHBycERhdGFiYXNl
Q2FsbGJhY2tzLCBpbnQ2NF90IHZlcnNpb24pCiB7CiAgICAgUmVmUHRyPElEQkNhbGxiYWNrcz4g
Y2FsbGJhY2tzID0gcHJwQ2FsbGJhY2tzOworICAgIFJlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNr
cz4gZGF0YWJhc2VDYWxsYmFja3MgPSBwcnBEYXRhYmFzZUNhbGxiYWNrczsKICAgICBpZiAoIW1f
cGVuZGluZ0RlbGV0ZUNhbGxzLmlzRW1wdHkoKSB8fCBtX3J1bm5pbmdWZXJzaW9uQ2hhbmdlVHJh
bnNhY3Rpb24gfHwgIW1fcGVuZGluZ1NldFZlcnNpb25DYWxscy5pc0VtcHR5KCkpIHsKLSAgICAg
ICAgbV9wZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbHMuYXBwZW5kKFBlbmRpbmdPcGVuV2l0aFZl
cnNpb25DYWxsOjpjcmVhdGUoY2FsbGJhY2tzLCB2ZXJzaW9uKSk7CisgICAgICAgIG1fcGVuZGlu
Z09wZW5XaXRoVmVyc2lvbkNhbGxzLmFwcGVuZChQZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbDo6
Y3JlYXRlKGNhbGxiYWNrcywgZGF0YWJhc2VDYWxsYmFja3MsIHZlcnNpb24pKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KICAgICBpZiAobV9pZCA9PSBJbnZhbGlkSWQpIHsKQEAgLTUxNiw3ICs1
MTAsNyBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6Om9wZW5Db25uZWN0aW9uV2l0aFZl
cnNpb24oUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+CiAgICAgICAgIH0KICAgICB9CiAgICAgaWYg
KHZlcnNpb24gPiBtX2ludFZlcnNpb24pIHsKLSAgICAgICAgcnVuSW50VmVyc2lvbkNoYW5nZVRy
YW5zYWN0aW9uKHZlcnNpb24sIGNhbGxiYWNrcyk7CisgICAgICAgIHJ1bkludFZlcnNpb25DaGFu
Z2VUcmFuc2FjdGlvbih2ZXJzaW9uLCBjYWxsYmFja3MsIGRhdGFiYXNlQ2FsbGJhY2tzKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAodmVyc2lvbiA8IG1faW50VmVyc2lvbikgewpA
QCAtNTI0LDcgKzUxOCw3IEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6b3BlbkNvbm5l
Y3Rpb25XaXRoVmVyc2lvbihQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4KICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICBBU1NFUlQodmVyc2lvbiA9PSBtX2ludFZlcnNpb24pOwotICAgICsrbV9w
ZW5kaW5nQ29ubmVjdGlvbkNvdW50OworICAgIG1fZGF0YWJhc2VDYWxsYmFja3NTZXQuYWRkKGRh
dGFiYXNlQ2FsbGJhY2tzKTsKICAgICBjYWxsYmFja3MtPm9uU3VjY2Vzcyh0aGlzKTsKIH0KIApA
QCAtNTM1LDE1ICs1MjksMTQgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpkZWxldGVE
YXRhYmFzZShQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJhY2sKICAgICAgICAgcmV0
dXJuOwogICAgIH0KICAgICBSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MgPSBwcnBDYWxs
YmFja3M7Ci0gICAgLy8gRklYTUU6IE9ubHkgZmlyZSBvblZlcnNpb25DaGFuZ2UgaWYgdGhlcmUg
dGhlIGNvbm5lY3Rpb24gaXNuJ3QgaW4KLSAgICAvLyB0aGUgcHJvY2VzcyBvZiBjbG9zaW5nLgot
ICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTEyOQotICAg
IGZvciAoRGF0YWJhc2VDYWxsYmFja3NTZXQ6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9kYXRhYmFz
ZUNhbGxiYWNrc1NldC5iZWdpbigpOyBpdCAhPSBtX2RhdGFiYXNlQ2FsbGJhY2tzU2V0LmVuZCgp
OyArK2l0KQorICAgIGZvciAoRGF0YWJhc2VDYWxsYmFja3NTZXQ6OmNvbnN0X2l0ZXJhdG9yIGl0
ID0gbV9kYXRhYmFzZUNhbGxiYWNrc1NldC5iZWdpbigpOyBpdCAhPSBtX2RhdGFiYXNlQ2FsbGJh
Y2tzU2V0LmVuZCgpOyArK2l0KSB7CisgICAgICAgIC8vIEZyb250IGVuZCBlbnN1cmVzIHRoZSBl
dmVudCBpcyBub3QgZmlyZWQgYXQgY29ubmVjdGlvbnMgdGhhdCBoYXZlIGNsb3NlUGVuZGluZyBz
ZXQuCiAgICAgICAgICgqaXQpLT5vblZlcnNpb25DaGFuZ2UoIiIpOworICAgIH0KICAgICAvLyBG
SVhNRTogT25seSBmaXJlIG9uQmxvY2tlZCBpZiB0aGVyZSBhcmUgb3BlbiBjb25uZWN0aW9ucyBh
ZnRlciB0aGUKICAgICAvLyBWZXJzaW9uQ2hhbmdlRXZlbnRzIGFyZSByZWNlaXZlZCwgbm90IGp1
c3Qgc2V0IHVwIHRvIGZpcmUuCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTcxMTMwCi0gICAgaWYgKGNvbm5lY3Rpb25Db3VudCgpID49IDEpIHsKKyAgICBp
ZiAoY29ubmVjdGlvbkNvdW50KCkpIHsKICAgICAgICAgbV9wZW5kaW5nRGVsZXRlQ2FsbHMuYXBw
ZW5kKFBlbmRpbmdEZWxldGVDYWxsOjpjcmVhdGUoY2FsbGJhY2tzKSk7CiAgICAgICAgIGNhbGxi
YWNrcy0+b25CbG9ja2VkKCk7CiAgICAgICAgIHJldHVybjsKQEAgLTU2NCwxOCArNTU3LDE5IEBA
IHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6Y2xvc2UoUGFzc1JlZlB0cjxJREJEYXRhYmFz
ZUNhbGxiYWNrcz4gcHJwQ2FsbGJhY2tzCiB7CiAgICAgUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJh
Y2tzPiBjYWxsYmFja3MgPSBwcnBDYWxsYmFja3M7CiAgICAgQVNTRVJUKG1fZGF0YWJhc2VDYWxs
YmFja3NTZXQuY29udGFpbnMoY2FsbGJhY2tzKSk7CisKICAgICBtX2RhdGFiYXNlQ2FsbGJhY2tz
U2V0LnJlbW92ZShjYWxsYmFja3MpOworICAgIC8vIEZJWE1FOiBJZiBjYWxsYmFja3MgaXMgYWxz
byBoZWxkIGluIG1fcGVuZGluZ1NlY29uZEhhbGZPcGVuV2l0aFZlcnNpb25DYWxscworICAgIC8v
IGl0IHNob3VsZCBiZSByZW1vdmVkIGFuZCBvbkVycm9yIGZpcmVkIGFnYWluc3QgaXQuCisKICAg
ICBpZiAoY29ubmVjdGlvbkNvdW50KCkgPiAxKQogICAgICAgICByZXR1cm47CiAKLSAgICBUcmFu
c2FjdGlvblNldCB0cmFuc2FjdGlvbnMobV90cmFuc2FjdGlvbnMpOwogICAgIHByb2Nlc3NQZW5k
aW5nQ2FsbHMoKTsKIAotICAgIEFTU0VSVChtX3RyYW5zYWN0aW9ucy5zaXplKCkgLSB0cmFuc2Fj
dGlvbnMuc2l6ZSgpIDw9IDEpOwotICAgIC8vIEZJWE1FOiBJbnN0ZWFkIG9mIHJlbHlpbmcgb24g
dHJhbnNhY3Rpb25zLnNpemUoKSwgbWFrZSBjb25uZWN0aW9uQ291bnQKLSAgICAvLyBhd2FyZSBv
ZiBpbi1mbGlnaHQgdXBncmFkZW5lZWRlZCBldmVudHMgYXMgd2VsbCBhcyBpbi1mbGlnaHQgc3Vj
Y2VzcwotICAgIC8vIGV2ZW50cy4KLSAgICBpZiAoIWNvbm5lY3Rpb25Db3VudCgpICYmICFtX3Bl
bmRpbmdEZWxldGVDYWxscy5zaXplKCkgJiYgbV90cmFuc2FjdGlvbnMuc2l6ZSgpID09IHRyYW5z
YWN0aW9ucy5zaXplKCkpIHsKKyAgICAvLyBGSVhNRTogQWRkIGEgdGVzdCBmb3IgdGhlIG1fcGVu
ZGluZ09wZW5DYWxsc8K3YW5kIG1fcGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGxzIGNhc2VzIGJl
bG93LgorICAgIGlmICghY29ubmVjdGlvbkNvdW50KCkgJiYgIW1fcGVuZGluZ09wZW5DYWxscy5z
aXplKCkgJiYgIW1fcGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGxzLnNpemUoKSAmJiAhbV9wZW5k
aW5nRGVsZXRlQ2FsbHMuc2l6ZSgpKSB7CisgICAgICAgIFRyYW5zYWN0aW9uU2V0IHRyYW5zYWN0
aW9ucyhtX3RyYW5zYWN0aW9ucyk7CiAgICAgICAgIGZvciAoVHJhbnNhY3Rpb25TZXQ6OmNvbnN0
X2l0ZXJhdG9yIGl0ID0gdHJhbnNhY3Rpb25zLmJlZ2luKCk7IGl0ICE9IHRyYW5zYWN0aW9ucy5l
bmQoKTsgKytpdCkKICAgICAgICAgICAgICgqaXQpLT5hYm9ydCgpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBs
LmgKaW5kZXggN2YzMWNiMDRlYTRlZGJmY2Q2NzIxN2MxOWM4Y2E3YTJjOTczYmUxMS4uMjJjY2M0
MzIyMGI1MDRmZTcwNjg1NjdiNTlhNDc2MjU1ZWVhODU0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuaApA
QCAtNTUsOSArNTUsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IGludDY0X3QgSW52YWxp
ZElkID0gMDsKICAgICBpbnQ2NF90IGlkKCkgY29uc3QgeyByZXR1cm4gbV9pZDsgfQogCi0gICAg
dm9pZCByZWdpc3RlckZyb250ZW5kQ2FsbGJhY2tzKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxs
YmFja3M+KTsKLSAgICB2b2lkIG9wZW5Db25uZWN0aW9uKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tz
Pik7Ci0gICAgdm9pZCBvcGVuQ29ubmVjdGlvbldpdGhWZXJzaW9uKFBhc3NSZWZQdHI8SURCQ2Fs
bGJhY2tzPiwgaW50NjRfdCB2ZXJzaW9uKTsKKyAgICB2b2lkIG9wZW5Db25uZWN0aW9uKFBhc3NS
ZWZQdHI8SURCQ2FsbGJhY2tzPiwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4pOwor
ICAgIHZvaWQgb3BlbkNvbm5lY3Rpb25XaXRoVmVyc2lvbihQYXNzUmVmUHRyPElEQkNhbGxiYWNr
cz4sIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+LCBpbnQ2NF90IHZlcnNpb24pOwog
ICAgIHZvaWQgZGVsZXRlRGF0YWJhc2UoUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+KTsKIAogICAg
IC8vIElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZQpAQCAtNzksOSArNzgsOSBAQCBwcml2YXRl
OgogICAgIElEQkRhdGFiYXNlQmFja2VuZEltcGwoY29uc3QgU3RyaW5nJiBuYW1lLCBJREJCYWNr
aW5nU3RvcmUqIGRhdGFiYXNlLCBJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yKiwgSURCRmFjdG9y
eUJhY2tlbmRJbXBsKiwgY29uc3QgU3RyaW5nJiB1bmlxdWVJZGVudGlmaWVyKTsKIAogICAgIGJv
b2wgb3BlbkludGVybmFsKCk7Ci0gICAgdm9pZCBydW5JbnRWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rp
b24oaW50NjRfdCByZXF1ZXN0ZWRWZXJzaW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pOwor
ICAgIHZvaWQgcnVuSW50VmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKGludDY0X3QgcmVxdWVzdGVk
VmVyc2lvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNl
Q2FsbGJhY2tzPik7CiAgICAgdm9pZCBsb2FkT2JqZWN0U3RvcmVzKCk7Ci0gICAgaW50MzJfdCBj
b25uZWN0aW9uQ291bnQoKTsKKyAgICBzaXplX3QgY29ubmVjdGlvbkNvdW50KCk7CiAgICAgdm9p
ZCBwcm9jZXNzUGVuZGluZ0NhbGxzKCk7CiAKICAgICBzdGF0aWMgdm9pZCBjcmVhdGVPYmplY3RT
dG9yZUludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQkRhdGFi
YXNlQmFja2VuZEltcGw+LCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw+LCBQ
YXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+KTsKQEAgLTEyNywxMCArMTI2LDYg
QEAgcHJpdmF0ZToKICAgICBjbGFzcyBQZW5kaW5nRGVsZXRlQ2FsbDsKICAgICBEZXF1ZTxSZWZQ
dHI8UGVuZGluZ0RlbGV0ZUNhbGw+ID4gbV9wZW5kaW5nRGVsZXRlQ2FsbHM7CiAKLSAgICAvLyBG
SVhNRTogRWxpbWluYXRlIHRoZSBsaW1ibyBzdGF0ZSBiZXR3ZWVuIG9wZW5Db25uZWN0aW9uKCkg
YW5kIHJlZ2lzdGVyRnJvbnRlbmRDYWxsYmFja3MoKQotICAgIC8vIHRoYXQgdGhpcyBjb3VudGVy
IHRyYWNrcy4KLSAgICBpbnQzMl90IG1fcGVuZGluZ0Nvbm5lY3Rpb25Db3VudDsKLQogICAgIHR5
cGVkZWYgTGlzdEhhc2hTZXQ8UmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiA+IERhdGFiYXNl
Q2FsbGJhY2tzU2V0OwogICAgIERhdGFiYXNlQ2FsbGJhY2tzU2V0IG1fZGF0YWJhc2VDYWxsYmFj
a3NTZXQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UuaAppbmRleCBjN2QxZDYwMWJlMjZl
N2JiYzkyMTcwNjgzNDI0NzUyODVhMmE4NWQxLi40MmIzYjkwMmNhM2ZkZTY2NzQ5MTBmZWI5NDA1
NzA4M2EzMzM1YWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UuaApAQCAtNjAsOCArNjAs
NiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldFZlcnNpb24oY29uc3QgU3RyaW5nJiB2
ZXJzaW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VD
YWxsYmFja3M+LCBFeGNlcHRpb25Db2RlJikgPSAwOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJ
REJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IHRyYW5zYWN0aW9uKERPTVN0cmluZ0xpc3Qq
IHN0b3JlTmFtZXMsIHVuc2lnbmVkIHNob3J0IG1vZGUsIEV4Y2VwdGlvbkNvZGUmKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIGNsb3NlKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+KSA9
IDA7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJGcm9udGVuZENhbGxiYWNrcyhQYXNzUmVm
UHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPikgPSAwOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0
YWJhc2VDYWxsYmFja3NJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbC5jcHAKaW5kZXggZjY1NjVkY2ExYmQ4MjJmZTZkYzEz
NTk2OGMzYjBlZGI5OTk1YTNiOC4uOTcwZDNhMTY3Y2FmOTk2YzdmMDMxZmY1NGE0ZjE1OTI0OWYx
YWEwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0
YWJhc2VDYWxsYmFja3NJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwuY3BwCkBAIC0zMiwxMyArMzIsMTMgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzSW1w
bD4gSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsOjpjcmVhdGUoSURCRGF0YWJhc2UqIGRhdGFiYXNl
KQorUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGw+IElEQkRhdGFiYXNlQ2FsbGJh
Y2tzSW1wbDo6Y3JlYXRlKCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IElEQkRhdGFiYXNl
Q2FsbGJhY2tzSW1wbChkYXRhYmFzZSkpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgSURCRGF0
YWJhc2VDYWxsYmFja3NJbXBsKCkpOwogfQogCi1JREJEYXRhYmFzZUNhbGxiYWNrc0ltcGw6OklE
QkRhdGFiYXNlQ2FsbGJhY2tzSW1wbChJREJEYXRhYmFzZSogZGF0YWJhc2UpCi0gICAgOiBtX2Rh
dGFiYXNlKGRhdGFiYXNlKQorSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsOjpJREJEYXRhYmFzZUNh
bGxiYWNrc0ltcGwoKQorICAgIDogbV9kYXRhYmFzZSgwKQogewogfQogCkBAIC02NCwxMCArNjQs
MTEgQEAgdm9pZCBJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGw6Om9uVmVyc2lvbkNoYW5nZShpbnQ2
NF90IG9sZFZlcnNpb24sIGludDY0X3QgbmV3VmUKICAgICAgICAgbV9kYXRhYmFzZS0+b25WZXJz
aW9uQ2hhbmdlKG9sZFZlcnNpb24sIG5ld1ZlcnNpb24pOwogfQogCi12b2lkIElEQkRhdGFiYXNl
Q2FsbGJhY2tzSW1wbDo6dW5yZWdpc3RlckRhdGFiYXNlKElEQkRhdGFiYXNlKiBkYXRhYmFzZSkK
K3ZvaWQgSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsOjpjb25uZWN0KElEQkRhdGFiYXNlKiBkYXRh
YmFzZSkKIHsKLSAgICBBU1NFUlRfVU5VU0VEKGRhdGFiYXNlLCBkYXRhYmFzZSA9PSBtX2RhdGFi
YXNlKTsKLSAgICBtX2RhdGFiYXNlID0gMDsKKyAgICBBU1NFUlQoIW1fZGF0YWJhc2UpOworICAg
IEFTU0VSVChkYXRhYmFzZSk7CisgICAgbV9kYXRhYmFzZSA9IGRhdGFiYXNlOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbC5oCmluZGV4IDg3ODFkYmIwYTMx
NTBhNDQzOTI0MjM3ZTJlMWYzNGZiYWUyOTBlOTguLmJiNGExYWU3NGU4MjI3MzhiMzNkZDZjMDgw
OWU3MmU2MTBmZDNjYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbC5oCkBAIC0zOCwxOCArMzgsMjAg
QEAgY2xhc3MgSURCRGF0YWJhc2U7CiAKIGNsYXNzIElEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbCA6
IHB1YmxpYyBJREJEYXRhYmFzZUNhbGxiYWNrcyB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NS
ZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3NJbXBsPiBjcmVhdGUoSURCRGF0YWJhc2UqKTsKKyAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGw+IGNyZWF0ZSgpOwog
ICAgIHZpcnR1YWwgfklEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbCgpOwogCisgICAgLy8gSURCRGF0
YWJhc2VDYWxsYmFja3MKICAgICB2aXJ0dWFsIHZvaWQgb25Gb3JjZWRDbG9zZSgpOwogICAgIHZp
cnR1YWwgdm9pZCBvblZlcnNpb25DaGFuZ2UoY29uc3QgU3RyaW5nJiB2ZXJzaW9uKTsKICAgICB2
aXJ0dWFsIHZvaWQgb25WZXJzaW9uQ2hhbmdlKGludDY0X3Qgb2xkVmVyc2lvbiwgaW50NjRfdCBu
ZXdWZXJzaW9uKTsKLSAgICB2b2lkIHVucmVnaXN0ZXJEYXRhYmFzZShJREJEYXRhYmFzZSopOwor
CisgICAgdm9pZCBjb25uZWN0KElEQkRhdGFiYXNlKik7CiAKIHByaXZhdGU6Ci0gICAgSURCRGF0
YWJhc2VDYWxsYmFja3NJbXBsKElEQkRhdGFiYXNlKik7CisgICAgSURCRGF0YWJhc2VDYWxsYmFj
a3NJbXBsKCk7CiAKLSAgICAvLyBtX2RhdGFiYXNlIGhhcyBhIFJlZlB0ciB0byB0aGlzLCBzbyB1
c2UgYSB3ZWFrIHBvaW50ZXIgdG8gYXZvaWQgYSBjeWNsZS4KKyAgICAvLyBUaGUgaW5pdGlhbCBJ
REJPcGVuREJSZXF1ZXN0IG9yIGZpbmFsIElEQkRhdGFiYXNlIG1haW50YWlucyBhIFJlZlB0ciB0
byB0aGlzCiAgICAgSURCRGF0YWJhc2UqIG1fZGF0YWJhc2U7CiB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuY3BwCmluZGV4IGMyMDYzNWYyYWEz
N2RkOTUxYzNjODRmNDM0NjM0MTEwNjBlMTE3YTAuLjRlMzAyMzE2NzE5OTAzMmQ2NGRjOWI4YmY4
MTA0ZjAwMzA2OTFjZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkZhY3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkZhY3RvcnkuY3BwCkBAIC0xMjAsOCArMTIwLDkgQEAgUGFzc1JlZlB0cjxJREJPcGVuREJS
ZXF1ZXN0PiBJREJGYWN0b3J5OjpvcGVuKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQs
IGMKICAgICBpZiAoIWlzQ29udGV4dFZhbGlkKGNvbnRleHQpKQogICAgICAgICByZXR1cm4gMDsK
IAotICAgIFJlZlB0cjxJREJPcGVuREJSZXF1ZXN0PiByZXF1ZXN0ID0gSURCT3BlbkRCUmVxdWVz
dDo6Y3JlYXRlKGNvbnRleHQsIElEQkFueTo6Y3JlYXRlKHRoaXMpLCB2ZXJzaW9uKTsKLSAgICBt
X2JhY2tlbmQtPm9wZW4obmFtZSwgdmVyc2lvbiwgcmVxdWVzdCwgY29udGV4dC0+c2VjdXJpdHlP
cmlnaW4oKSwgY29udGV4dCwgZ2V0SW5kZXhlZERCRGF0YWJhc2VQYXRoKGNvbnRleHQpKTsKKyAg
ICBSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3NJbXBsPiBkYXRhYmFzZUNhbGxiYWNrcyA9IElE
QkRhdGFiYXNlQ2FsbGJhY2tzSW1wbDo6Y3JlYXRlKCk7CisgICAgUmVmUHRyPElEQk9wZW5EQlJl
cXVlc3Q+IHJlcXVlc3QgPSBJREJPcGVuREJSZXF1ZXN0OjpjcmVhdGUoY29udGV4dCwgSURCQW55
OjpjcmVhdGUodGhpcyksIGRhdGFiYXNlQ2FsbGJhY2tzLCB2ZXJzaW9uKTsKKyAgICBtX2JhY2tl
bmQtPm9wZW4obmFtZSwgdmVyc2lvbiwgcmVxdWVzdCwgZGF0YWJhc2VDYWxsYmFja3MsIGNvbnRl
eHQtPnNlY3VyaXR5T3JpZ2luKCksIGNvbnRleHQsIGdldEluZGV4ZWREQkRhdGFiYXNlUGF0aChj
b250ZXh0KSk7CiAgICAgcmV0dXJuIHJlcXVlc3Q7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5QmFja2VuZEltcGwuY3BwCmlu
ZGV4IDhkYTVjMDJlNDIzZjZmNjRlNTc5NzMwZGI3M2ZhMjllYzJiZTQ2MDYuLmM3ZWY4NjBlMTNl
MmQxODE3OWFlNWVjYzBjNzU5NzA5Yjg4NDNkZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJbXBsLmNwcApAQCAt
MTUwLDcgKzE1MCw3IEBAIFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlPiBJREJGYWN0b3J5QmFj
a2VuZEltcGw6Om9wZW5CYWNraW5nU3RvcmUoUGFzc1JlZlB0cjxTCiAgICAgcmV0dXJuIDA7CiB9
CiAKLXZvaWQgSURCRmFjdG9yeUJhY2tlbmRJbXBsOjpvcGVuKGNvbnN0IFN0cmluZyYgbmFtZSwg
aW50NjRfdCB2ZXJzaW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBQYXNz
UmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBwcnBTZWN1cml0eU9yaWdpbiwgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIGNvbnN0IFN0cmluZyYgZGF0YURpcmVjdG9yeSkKK3ZvaWQgSURCRmFjdG9yeUJh
Y2tlbmRJbXBsOjpvcGVuKGNvbnN0IFN0cmluZyYgbmFtZSwgaW50NjRfdCB2ZXJzaW9uLCBQYXNz
UmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2Fs
bGJhY2tzPiBkYXRhYmFzZUNhbGxiYWNrcywgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gcHJw
U2VjdXJpdHlPcmlnaW4sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIGRh
dGFEaXJlY3RvcnkpCiB7CiAgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdp
biA9IHBycFNlY3VyaXR5T3JpZ2luOwogICAgIGNvbnN0IFN0cmluZyB1bmlxdWVJZGVudGlmaWVy
ID0gY29tcHV0ZVVuaXF1ZUlkZW50aWZpZXIobmFtZSwgc2VjdXJpdHlPcmlnaW4uZ2V0KCkpOwpA
QCAtMTc1LDkgKzE3NSw5IEBAIHZvaWQgSURCRmFjdG9yeUJhY2tlbmRJbXBsOjpvcGVuKGNvbnN0
IFN0cmluZyYgbmFtZSwgaW50NjRfdCB2ZXJzaW9uLCBQYXNzUmVmUHRyCiAgICAgICAgIGRhdGFi
YXNlQmFja2VuZCA9IGl0LT5zZWNvbmQ7CiAKICAgICBpZiAodmVyc2lvbiA9PSBJREJEYXRhYmFz
ZU1ldGFkYXRhOjpOb0ludFZlcnNpb24pCi0gICAgICAgIGRhdGFiYXNlQmFja2VuZC0+b3BlbkNv
bm5lY3Rpb24oY2FsbGJhY2tzKTsKKyAgICAgICAgZGF0YWJhc2VCYWNrZW5kLT5vcGVuQ29ubmVj
dGlvbihjYWxsYmFja3MsIGRhdGFiYXNlQ2FsbGJhY2tzKTsKICAgICBlbHNlCi0gICAgICAgIGRh
dGFiYXNlQmFja2VuZC0+b3BlbkNvbm5lY3Rpb25XaXRoVmVyc2lvbihjYWxsYmFja3MsIHZlcnNp
b24pOworICAgICAgICBkYXRhYmFzZUJhY2tlbmQtPm9wZW5Db25uZWN0aW9uV2l0aFZlcnNpb24o
Y2FsbGJhY2tzLCBkYXRhYmFzZUNhbGxiYWNrcywgdmVyc2lvbik7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCRmFjdG9yeUJhY2tlbmRJbXBsLmgKaW5kZXggY2FkM2I1YTI0YjI5OWE5Mjk5YzJhZDI5
NGUzYjJlYTA0Y2ZkNzJhNS4uM2FlMDcwMzEwZGFlODc2NDM1OTZjYTliMjk5M2MzM2E0NjcwYjFi
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9y
eUJhY2tlbmRJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
RmFjdG9yeUJhY2tlbmRJbXBsLmgKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCByZW1vdmVJREJCYWNraW5nU3RvcmUoY29uc3QgU3RyaW5nJiBmaWxlSWRlbnRpZmll
cik7CiAKICAgICB2aXJ0dWFsIHZvaWQgZ2V0RGF0YWJhc2VOYW1lcyhQYXNzUmVmUHRyPElEQkNh
bGxiYWNrcz4sIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+LCBTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgY29uc3QgU3RyaW5nJiBkYXRhRGlyKTsKLSAgICB2aXJ0dWFsIHZvaWQgb3Blbihjb25z
dCBTdHJpbmcmIG5hbWUsIGludDY0X3QgdmVyc2lvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+
LCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNv
bnN0IFN0cmluZyYgZGF0YURpcik7CisgICAgdmlydHVhbCB2b2lkIG9wZW4oY29uc3QgU3RyaW5n
JiBuYW1lLCBpbnQ2NF90IHZlcnNpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgUGFzc1Jl
ZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+LCBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBkYXRhRGlyKTsKICAgICB2aXJ0
dWFsIHZvaWQgZGVsZXRlRGF0YWJhc2UoY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPElE
QkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+LCBTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiwgY29uc3QgU3RyaW5nJiBkYXRhRGlyKTsKIAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJbnRl
cmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnlCYWNr
ZW5kSW50ZXJmYWNlLmgKaW5kZXggZjU2ZmMwNmUwMGU2MzNkZjRkNzRkOTgzZGIyM2IwMjliNTIw
NTVlOC4uYWUyMjcwNjhmNTYyYzI2OTk1OWIyZTViOWZiNDEyOTI2YTFiZGZhOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJbnRl
cmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5
QmFja2VuZEludGVyZmFjZS5oCkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IH5JREJGYWN0b3J5QmFja2VuZEludGVyZmFjZSgpIHsgfQogCiAgICAgdmlydHVhbCB2b2lkIGdl
dERhdGFiYXNlTmFtZXMoUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBQYXNzUmVmUHRyPFNlY3Vy
aXR5T3JpZ2luPiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgZGF0YURp
cikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBvcGVuKGNvbnN0IFN0cmluZyYgbmFtZSwgaW50NjRf
dCB2ZXJzaW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8U2VjdXJpdHlP
cmlnaW4+LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBkYXRhRGlyKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIG9wZW4oY29uc3QgU3RyaW5nJiBuYW1lLCBpbnQ2NF90IHZl
cnNpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNh
bGxiYWNrcz4sIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+LCBTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgY29uc3QgU3RyaW5nJiBkYXRhRGlyKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0
ZURhdGFiYXNlKGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBQ
YXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0
IFN0cmluZyYgZGF0YURpcikgPSAwOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCT3BlbkRCUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJPcGVuREJSZXF1ZXN0LmNwcAppbmRleCBlODlhNzRjZmQ5YmZi
N2ZmNzYzYmE2ZWUyNWZkMjJiY2YyNDY5NTBhLi42ZWYxNmNmMDI5M2E2OTE5MGY5NmNkM2E4NWFj
MzUyNzIzZWJiNmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJPcGVuREJSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJPcGVuREJSZXF1ZXN0LmNwcApAQCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJMRShJ
TkRFWEVEX0RBVEFCQVNFKQogCiAjaW5jbHVkZSAiSURCRGF0YWJhc2UuaCIKKyNpbmNsdWRlICJJ
REJEYXRhYmFzZUNhbGxiYWNrc0ltcGwuaCIKICNpbmNsdWRlICJJREJQZW5kaW5nVHJhbnNhY3Rp
b25Nb25pdG9yLmgiCiAjaW5jbHVkZSAiSURCVHJhY2luZy5oIgogI2luY2x1ZGUgIklEQlVwZ3Jh
ZGVOZWVkZWRFdmVudC5oIgpAQCAtMzYsMTUgKzM3LDE2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotUGFzc1JlZlB0cjxJREJPcGVuREJSZXF1ZXN0PiBJREJPcGVuREJSZXF1ZXN0OjpjcmVh
dGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJREJBbnk+IHNv
dXJjZSwgaW50NjRfdCB2ZXJzaW9uKQorUGFzc1JlZlB0cjxJREJPcGVuREJSZXF1ZXN0PiBJREJP
cGVuREJSZXF1ZXN0OjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFz
c1JlZlB0cjxJREJBbnk+IHNvdXJjZSwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrc0lt
cGw+IGNhbGxiYWNrcywgaW50NjRfdCB2ZXJzaW9uKQogewotICAgIFJlZlB0cjxJREJPcGVuREJS
ZXF1ZXN0PiByZXF1ZXN0KGFkb3B0UmVmKG5ldyBJREJPcGVuREJSZXF1ZXN0KGNvbnRleHQsIHNv
dXJjZSwgdmVyc2lvbikpKTsKKyAgICBSZWZQdHI8SURCT3BlbkRCUmVxdWVzdD4gcmVxdWVzdChh
ZG9wdFJlZihuZXcgSURCT3BlbkRCUmVxdWVzdChjb250ZXh0LCBzb3VyY2UsIGNhbGxiYWNrcywg
dmVyc2lvbikpKTsKICAgICByZXF1ZXN0LT5zdXNwZW5kSWZOZWVkZWQoKTsKICAgICByZXR1cm4g
cmVxdWVzdC5yZWxlYXNlKCk7CiB9CiAKLUlEQk9wZW5EQlJlcXVlc3Q6OklEQk9wZW5EQlJlcXVl
c3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJREJBbnk+IHNv
dXJjZSwgaW50NjRfdCB2ZXJzaW9uKQorSURCT3BlbkRCUmVxdWVzdDo6SURCT3BlbkRCUmVxdWVz
dChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQkFueT4gc291
cmNlLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbD4gY2FsbGJhY2tzLCBpbnQ2
NF90IHZlcnNpb24pCiAgICAgOiBJREJSZXF1ZXN0KGNvbnRleHQsIHNvdXJjZSwgSURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW50ZXJmYWNlOjpOb3JtYWxUYXNrLCAwKQorICAgICwgbV9kYXRhYmFzZUNh
bGxiYWNrcyhjYWxsYmFja3MpCiAgICAgLCBtX3ZlcnNpb24odmVyc2lvbikKIHsKICAgICBBU1NF
UlQoIW1fcmVzdWx0KTsKQEAgLTcyLDkgKzc0LDEzIEBAIHZvaWQgSURCT3BlbkRCUmVxdWVzdDo6
b25VcGdyYWRlTmVlZGVkKGludDY0X3Qgb2xkVmVyc2lvbiwgUGFzc1JlZlB0cjxJREJUcmFuc2Fj
CiAgICAgaWYgKCFzaG91bGRFbnF1ZXVlRXZlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCisgICAg
QVNTRVJUKG1fZGF0YWJhc2VDYWxsYmFja3MpOworCiAgICAgUmVmUHRyPElEQkRhdGFiYXNlQmFj
a2VuZEludGVyZmFjZT4gZGF0YWJhc2VCYWNrZW5kID0gcHJwRGF0YWJhc2VCYWNrZW5kOwogICAg
IFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IHRyYW5zYWN0aW9uQmFja2Vu
ZCA9IHBycFRyYW5zYWN0aW9uQmFja2VuZDsKLSAgICBSZWZQdHI8SURCRGF0YWJhc2U+IGlkYkRh
dGFiYXNlID0gSURCRGF0YWJhc2U6OmNyZWF0ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGRh
dGFiYXNlQmFja2VuZCk7CisgICAgUmVmUHRyPElEQkRhdGFiYXNlPiBpZGJEYXRhYmFzZSA9IElE
QkRhdGFiYXNlOjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBkYXRhYmFzZUJhY2tl
bmQsIG1fZGF0YWJhc2VDYWxsYmFja3MpOworICAgIG1fZGF0YWJhc2VDYWxsYmFja3MtPmNvbm5l
Y3QoaWRiRGF0YWJhc2UuZ2V0KCkpOworICAgIG1fZGF0YWJhc2VDYWxsYmFja3MgPSAwOwogCiAg
ICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uPiBmcm9udGVuZCA9IElEQlRyYW5zYWN0aW9uOjpjcmVh
dGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCB0cmFuc2FjdGlvbkJhY2tlbmQsIElEQlRyYW5z
YWN0aW9uOjpWRVJTSU9OX0NIQU5HRSwgaWRiRGF0YWJhc2UuZ2V0KCksIHRoaXMpOwogICAgIHRy
YW5zYWN0aW9uQmFja2VuZC0+c2V0Q2FsbGJhY2tzKGZyb250ZW5kLmdldCgpKTsKQEAgLTk4LDEx
ICsxMDQsMTQgQEAgdm9pZCBJREJPcGVuREJSZXF1ZXN0OjpvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJ
REJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+IGJhY2tlbmQKICAgICBpZiAobV9yZXN1bHQpIHsK
ICAgICAgICAgaWRiRGF0YWJhc2UgPSBtX3Jlc3VsdC0+aWRiRGF0YWJhc2UoKTsKICAgICAgICAg
QVNTRVJUKGlkYkRhdGFiYXNlKTsKKyAgICAgICAgQVNTRVJUKCFtX2RhdGFiYXNlQ2FsbGJhY2tz
KTsKICAgICB9IGVsc2UgewotICAgICAgICBpZGJEYXRhYmFzZSA9IElEQkRhdGFiYXNlOjpjcmVh
dGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBiYWNrZW5kKTsKKyAgICAgICAgQVNTRVJUKG1f
ZGF0YWJhc2VDYWxsYmFja3MpOworICAgICAgICBpZGJEYXRhYmFzZSA9IElEQkRhdGFiYXNlOjpj
cmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBiYWNrZW5kLCBtX2RhdGFiYXNlQ2FsbGJh
Y2tzKTsKKyAgICAgICAgbV9kYXRhYmFzZUNhbGxiYWNrcy0+Y29ubmVjdChpZGJEYXRhYmFzZS5n
ZXQoKSk7CisgICAgICAgIG1fZGF0YWJhc2VDYWxsYmFja3MgPSAwOwogICAgICAgICBtX3Jlc3Vs
dCA9IElEQkFueTo6Y3JlYXRlKGlkYkRhdGFiYXNlLmdldCgpKTsKICAgICB9Ci0gICAgaWRiRGF0
YWJhc2UtPnJlZ2lzdGVyRnJvbnRlbmRDYWxsYmFja3MoKTsKICAgICBlbnF1ZXVlRXZlbnQoRXZl
bnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuc3VjY2Vzc0V2ZW50LCBmYWxzZSwgZmFsc2UpKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT3BlbkRC
UmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT3BlbkRCUmVx
dWVzdC5oCmluZGV4IGM4N2RiN2VkMWJkZDJkNDA1M2U3NGMxMDJhMmVjNmQ2OTU5NzJlM2YuLjFl
ODRiNTRjOWRhNTA3YWY1NTE5YzgwODg5ODQ2ZDQyZWZkZWQ0OWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9wZW5EQlJlcXVlc3QuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPcGVuREJSZXF1ZXN0LmgKQEAgLTMyLDkg
KzMyLDExIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgSURCRGF0YWJhc2VDYWxs
YmFja3NJbXBsOworCiBjbGFzcyBJREJPcGVuREJSZXF1ZXN0IDogcHVibGljIElEQlJlcXVlc3Qg
ewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQk9wZW5EQlJlcXVlc3Q+IGNyZWF0
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJBbnk+IHNvdXJjZSwgaW50
NjRfdCB2ZXJzaW9uKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJPcGVuREJSZXF1ZXN0PiBj
cmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCQW55PiBzb3VyY2Us
IFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3NJbXBsPiwgaW50NjRfdCB2ZXJzaW9uKTsK
ICAgICB2aXJ0dWFsIH5JREJPcGVuREJSZXF1ZXN0KCk7CiAKICAgICB1c2luZyBJREJSZXF1ZXN0
OjpvblN1Y2Nlc3M7CkBAIC01Myw4ICs1NSw5IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIGJv
b2wgc2hvdWxkRW5xdWV1ZUV2ZW50KCkgY29uc3QgT1ZFUlJJREU7CiAKIHByaXZhdGU6Ci0gICAg
SURCT3BlbkRCUmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJB
bnk+IHNvdXJjZSwgaW50NjRfdCB2ZXJzaW9uKTsKKyAgICBJREJPcGVuREJSZXF1ZXN0KFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQkFueT4gc291cmNlLCBQYXNzUmVmUHRy
PElEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbD4sIGludDY0X3QgdmVyc2lvbik7CiAKKyAgICBSZWZQ
dHI8SURCRGF0YWJhc2VDYWxsYmFja3NJbXBsPiBtX2RhdGFiYXNlQ2FsbGJhY2tzOwogICAgIGlu
dDY0X3QgbV92ZXJzaW9uOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCmluZGV4IDIxZTVmMzI4ZTM0NTUzODljZTA4NTY2
MjA3MGVlZWExNDY1NWY2MjguLmUxZTA1ZjFmMjg4NjhkYjJkMjg5ZjJlZjA1Y2ViNDJmNTI1MGVj
Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5z
YWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFu
c2FjdGlvbi5jcHAKQEAgLTI5NCwxMiArMjk0LDEwIEBAIHZvaWQgSURCVHJhbnNhY3Rpb246Om9u
QWJvcnQoKQogICAgIH0KICAgICBtX29iamVjdFN0b3JlQ2xlYW51cE1hcC5jbGVhcigpOwogICAg
IGNsb3NlT3BlbkN1cnNvcnMoKTsKLSAgICBtX2RhdGFiYXNlLT50cmFuc2FjdGlvbkZpbmlzaGVk
KHRoaXMpOwotCi0gICAgaWYgKG1fY29udGV4dFN0b3BwZWQgfHwgIXNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSkKLSAgICAgICAgcmV0dXJuOwogCisgICAgLy8gRW5xdWV1ZSBldmVudHMgYmVmb3Jl
IG5vdGlmeWluZyBkYXRhYmFzZSwgYXMgZGF0YWJhc2UgbWF5IGNsb3NlIHdoaWNoIGVucXVldWVz
IG1vcmUgZXZlbnRzIGFuZCBvcmRlciBtYXR0ZXJzLgogICAgIGVucXVldWVFdmVudChFdmVudDo6
Y3JlYXRlKGV2ZW50TmFtZXMoKS5hYm9ydEV2ZW50LCB0cnVlLCBmYWxzZSkpOworICAgIG1fZGF0
YWJhc2UtPnRyYW5zYWN0aW9uRmluaXNoZWQodGhpcyk7CiB9CiAKIHZvaWQgSURCVHJhbnNhY3Rp
b246Om9uQ29tcGxldGUoKQpAQCAtMzA5LDEyICszMDcsMTAgQEAgdm9pZCBJREJUcmFuc2FjdGlv
bjo6b25Db21wbGV0ZSgpCiAgICAgbV9zdGF0ZSA9IEZpbmlzaGluZzsKICAgICBtX29iamVjdFN0
b3JlQ2xlYW51cE1hcC5jbGVhcigpOwogICAgIGNsb3NlT3BlbkN1cnNvcnMoKTsKLSAgICBtX2Rh
dGFiYXNlLT50cmFuc2FjdGlvbkZpbmlzaGVkKHRoaXMpOwotCi0gICAgaWYgKG1fY29udGV4dFN0
b3BwZWQgfHwgIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKLSAgICAgICAgcmV0dXJuOwogCisg
ICAgLy8gRW5xdWV1ZSBldmVudHMgYmVmb3JlIG5vdGlmeWluZyBkYXRhYmFzZSwgYXMgZGF0YWJh
c2UgbWF5IGNsb3NlIHdoaWNoIGVucXVldWVzIG1vcmUgZXZlbnRzIGFuZCBvcmRlciBtYXR0ZXJz
LgogICAgIGVucXVldWVFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jb21wbGV0ZUV2
ZW50LCBmYWxzZSwgZmFsc2UpKTsKKyAgICBtX2RhdGFiYXNlLT50cmFuc2FjdGlvbkZpbmlzaGVk
KHRoaXMpOwogfQogCiBib29sIElEQlRyYW5zYWN0aW9uOjpoYXNQZW5kaW5nQWN0aXZpdHkoKSBj
b25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4
ZWREQkFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVk
REJBZ2VudC5jcHAKaW5kZXggNWRmZDk5NTE5NThiYTYwZTgyOGU0ZWM1MzUwMzZjMzUxNDE5YTJk
YS4uOGNkMjIyYTExNzQ2M2RjZmNiMWNkNTA0MzMyYzAyY2QwZDUyYTkzYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwCkBA
IC0xNzIsMzUgKzE3MiwzNSBAQCBwcml2YXRlOgogICAgIFN0cmluZyBtX3NlY3VyaXR5T3JpZ2lu
OwogfTsKIAotY2xhc3MgRXhlY3V0YWJsZVdpdGhEYXRhYmFzZSA6IHB1YmxpYyBSZWZDb3VudGVk
PEV4ZWN1dGFibGVXaXRoRGF0YWJhc2U+IHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIH5FeGVjdXRh
YmxlV2l0aERhdGFiYXNlKCkgeyB9OwotICAgIHZvaWQgc3RhcnQoSURCRmFjdG9yeUJhY2tlbmRJ
bnRlcmZhY2UqLCBTZWN1cml0eU9yaWdpbiosIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25z
dCBTdHJpbmcmIGRhdGFiYXNlTmFtZSk7Ci0gICAgdmlydHVhbCB2b2lkIGV4ZWN1dGUoUGFzc1Jl
ZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+KSA9IDA7Ci19OwotCiBjbGFzcyBEYXRh
YmFzZUNvbm5lY3Rpb24gewogcHVibGljOgogICAgIERhdGFiYXNlQ29ubmVjdGlvbigpCiAgICAg
ICAgIDogbV9pZGJEYXRhYmFzZUNhbGxiYWNrcyhJbnNwZWN0b3JJREJEYXRhYmFzZUNhbGxiYWNr
czo6Y3JlYXRlKCkpIHsgfQogCi0gICAgdm9pZCBjb25uZWN0KFBhc3NSZWZQdHI8SURCRGF0YWJh
c2VCYWNrZW5kSW50ZXJmYWNlPiBpZGJEYXRhYmFzZSkKLSAgICB7Ci0gICAgICAgIG1faWRiRGF0
YWJhc2UgPSBpZGJEYXRhYmFzZTsKLSAgICAgICAgbV9pZGJEYXRhYmFzZS0+cmVnaXN0ZXJGcm9u
dGVuZENhbGxiYWNrcyhtX2lkYkRhdGFiYXNlQ2FsbGJhY2tzKTsKLSAgICB9Ci0KICAgICB+RGF0
YWJhc2VDb25uZWN0aW9uKCkKICAgICB7CiAgICAgICAgIGlmIChtX2lkYkRhdGFiYXNlKQogICAg
ICAgICAgICAgbV9pZGJEYXRhYmFzZS0+Y2xvc2UobV9pZGJEYXRhYmFzZUNhbGxiYWNrcyk7CiAg
ICAgfQogCisgICAgdm9pZCBjb25uZWN0KFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50
ZXJmYWNlPiBkYXRhYmFzZSkgeyBtX2lkYkRhdGFiYXNlID0gZGF0YWJhc2U7IH0KKyAgICBQYXNz
UmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBjYWxsYmFja3MoKSB7IHJldHVybiBtX2lkYkRh
dGFiYXNlQ2FsbGJhY2tzOyB9CisKIHByaXZhdGU6CiAgICAgUmVmUHRyPElEQkRhdGFiYXNlQmFj
a2VuZEludGVyZmFjZT4gbV9pZGJEYXRhYmFzZTsKICAgICBSZWZQdHI8SURCRGF0YWJhc2VDYWxs
YmFja3M+IG1faWRiRGF0YWJhc2VDYWxsYmFja3M7CiB9OwogCitjbGFzcyBFeGVjdXRhYmxlV2l0
aERhdGFiYXNlIDogcHVibGljIFJlZkNvdW50ZWQ8RXhlY3V0YWJsZVdpdGhEYXRhYmFzZT4gewor
cHVibGljOgorICAgIHZpcnR1YWwgfkV4ZWN1dGFibGVXaXRoRGF0YWJhc2UoKSB7IH07CisgICAg
dm9pZCBzdGFydChJREJGYWN0b3J5QmFja2VuZEludGVyZmFjZSosIFNlY3VyaXR5T3JpZ2luKiwg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lKTsKKyAg
ICB2b2lkIGNvbm5lY3QoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+IGRh
dGFiYXNlKSB7IG1fY29ubmVjdGlvbi5jb25uZWN0KGRhdGFiYXNlKTsgfQorICAgIHZpcnR1YWwg
dm9pZCBleGVjdXRlKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPikgPSAw
OworcHJpdmF0ZToKKyAgICBEYXRhYmFzZUNvbm5lY3Rpb24gbV9jb25uZWN0aW9uOworfTsKKwog
Y2xhc3MgT3BlbkRhdGFiYXNlQ2FsbGJhY2sgOiBwdWJsaWMgSW5zcGVjdG9ySURCQ2FsbGJhY2sg
ewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPE9wZW5EYXRhYmFzZUNhbGxiYWNrPiBj
cmVhdGUoRXhlY3V0YWJsZVdpdGhEYXRhYmFzZSogZXhlY3V0YWJsZVdpdGhEYXRhYmFzZSkKQEAg
LTIyNSw3ICsyMjUsNyBAQCBwcml2YXRlOgogdm9pZCBFeGVjdXRhYmxlV2l0aERhdGFiYXNlOjpz
dGFydChJREJGYWN0b3J5QmFja2VuZEludGVyZmFjZSogaWRiRmFjdG9yeSwgU2VjdXJpdHlPcmln
aW4qIHNlY3VyaXR5T3JpZ2luLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25z
dCBTdHJpbmcmIGRhdGFiYXNlTmFtZSkKIHsKICAgICBSZWZQdHI8T3BlbkRhdGFiYXNlQ2FsbGJh
Y2s+IGNhbGxiYWNrID0gT3BlbkRhdGFiYXNlQ2FsbGJhY2s6OmNyZWF0ZSh0aGlzKTsKLSAgICBp
ZGJGYWN0b3J5LT5vcGVuKGRhdGFiYXNlTmFtZSwgSURCRGF0YWJhc2VNZXRhZGF0YTo6Tm9JbnRW
ZXJzaW9uLCBjYWxsYmFjay5nZXQoKSwgc2VjdXJpdHlPcmlnaW4sIGNvbnRleHQsIFN0cmluZygp
KTsKKyAgICBpZGJGYWN0b3J5LT5vcGVuKGRhdGFiYXNlTmFtZSwgSURCRGF0YWJhc2VNZXRhZGF0
YTo6Tm9JbnRWZXJzaW9uLCBjYWxsYmFjaywgbV9jb25uZWN0aW9uLmNhbGxiYWNrcygpLCBzZWN1
cml0eU9yaWdpbiwgY29udGV4dCwgU3RyaW5nKCkpOwogfQogCiBzdGF0aWMgUGFzc1JlZlB0cjxJ
REJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IHRyYW5zYWN0aW9uRm9yRGF0YWJhc2UoSURC
RGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlKiBpZGJEYXRhYmFzZSwgY29uc3QgU3RyaW5nJiBvYmpl
Y3RTdG9yZU5hbWUpCkBAIC0yOTYsNyArMjk2LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCBleGVjdXRlKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiBwcnBEYXRh
YmFzZSkKICAgICB7CiAgICAgICAgIFJlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+
IGlkYkRhdGFiYXNlID0gcHJwRGF0YWJhc2U7Ci0gICAgICAgIG1fY29ubmVjdGlvbi5jb25uZWN0
KGlkYkRhdGFiYXNlKTsKICAgICAgICAgaWYgKCFtX3JlcXVlc3RDYWxsYmFjay0+aXNBY3RpdmUo
KSkKICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMzM5LDcgKzMzOCw2IEBAIHByaXZhdGU6CiAg
ICAgRGF0YWJhc2VMb2FkZXJDYWxsYmFjayhQYXNzUmVmUHRyPFJlcXVlc3REYXRhYmFzZUNhbGxi
YWNrPiByZXF1ZXN0Q2FsbGJhY2spCiAgICAgICAgIDogbV9yZXF1ZXN0Q2FsbGJhY2socmVxdWVz
dENhbGxiYWNrKSB7IH0KICAgICBSZWZQdHI8UmVxdWVzdERhdGFiYXNlQ2FsbGJhY2s+IG1fcmVx
dWVzdENhbGxiYWNrOwotICAgIERhdGFiYXNlQ29ubmVjdGlvbiBtX2Nvbm5lY3Rpb247CiB9Owog
CiBzdGF0aWMgUGFzc1JlZlB0cjxJREJLZXk+IGlkYktleUZyb21JbnNwZWN0b3JPYmplY3QoSW5z
cGVjdG9yT2JqZWN0KiBrZXkpCkBAIC01NTUsNyArNTUzLDYgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBleGVjdXRlKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiBw
cnBEYXRhYmFzZSkKICAgICB7CiAgICAgICAgIFJlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRl
cmZhY2U+IGlkYkRhdGFiYXNlID0gcHJwRGF0YWJhc2U7Ci0gICAgICAgIG1fY29ubmVjdGlvbi5j
b25uZWN0KGlkYkRhdGFiYXNlKTsKICAgICAgICAgaWYgKCFtX3JlcXVlc3RDYWxsYmFjay0+aXNB
Y3RpdmUoKSkKICAgICAgICAgICAgIHJldHVybjsKIApAQCAtNTk3LDcgKzU5NCw2IEBAIHByaXZh
dGU6CiAgICAgUmVmUHRyPElEQktleVJhbmdlPiBtX2lkYktleVJhbmdlOwogICAgIGludCBtX3Nr
aXBDb3VudDsKICAgICB1bnNpZ25lZCBtX3BhZ2VTaXplOwotICAgIERhdGFiYXNlQ29ubmVjdGlv
biBtX2Nvbm5lY3Rpb247CiB9OwogCiB9IC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCRGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYklEQkRhdGFiYXNlLmgKaW5kZXggYThiMDM1YzcyN2Y4OGRkYmYw
Y2UxNzBlYWQ3NDE4NWM2OGJlMmFkNi4uNTkyYTEwZTNlMTk3MDFmZTQwODhmMzI5ZDEyZWM5ODAw
Zjk0ZDI5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURC
RGF0YWJhc2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJEYXRh
YmFzZS5oCkBAIC02Niw2ICs2Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY2xvc2Uo
KSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogICAgIHZpcnR1YWwgdm9pZCBmb3Jj
ZUNsb3NlKCkgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KIAorICAgIC8vIEZJWE1F
OiBSZW1vdmUgdGhpcyBtZXRob2QgYWZ0ZXIgV0s5MDQxMSBjbGVhbnVwIGlzIGNvbXBsZXRlIG9u
IHRoZSBDaHJvbWl1bSBzaWRlLgogICAgIHZpcnR1YWwgdm9pZCBvcGVuKFdlYklEQkRhdGFiYXNl
Q2FsbGJhY2tzKikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KIAogcHJvdGVjdGVk
OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCRmFjdG9y
eS5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCRmFjdG9yeS5oCmluZGV4
IDcwYzhjODQwYzExODEwZWM3ZWE1MTQ1NWM0ZmRlNzQxYzJiMzFhZGIuLjY5YTQ1M2FiY2Q5NDRl
MzcyNmFiNWFiYWU4NmU0N2M3ZDlhNWM0MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYklEQkZhY3RvcnkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJJREJGYWN0b3J5LmgKQEAgLTU1LDcgKzU1LDcgQEAgcHVibGljOgogCiAgICAg
dmlydHVhbCB2b2lkIGdldERhdGFiYXNlTmFtZXMoV2ViSURCQ2FsbGJhY2tzKiBjYWxsYmFja3Ms
IGNvbnN0IFdlYlNlY3VyaXR5T3JpZ2luJiBvcmlnaW4sIFdlYkZyYW1lKiBmcmFtZSwgY29uc3Qg
V2ViU3RyaW5nJiBkYXRhRGlyKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogCi0g
ICAgLy8gRklYTUU6IFRoaXMgb3ZlcmxvYWQgc2hvdWxkIGJlIHJlbW92ZWQgd2hlbiBXSzkwNDEx
IGxhbmRzLgorICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyBvdmVybG9hZCBhZnRlciBXSzkwNDEx
IGNsZWFudXAgaXMgY29tcGxldGUgb24gdGhlIENocm9taXVtIHNpZGUuCiAgICAgLy8gVGhlIFdl
YktpdCBpbXBsZW1lbnRhdGlvbiBvZiBvcGVuIGlnbm9yZXMgdGhlIFdlYkZyYW1lKiBwYXJhbWV0
ZXIuCiAgICAgdmlydHVhbCB2b2lkIG9wZW4oY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBsb25nIGxv
bmcgdmVyc2lvbiwgV2ViSURCQ2FsbGJhY2tzKiBjYWxsYmFja3MsIGNvbnN0IFdlYlNlY3VyaXR5
T3JpZ2luJiBvcmlnaW4sIFdlYkZyYW1lKiBmcmFtZSwgY29uc3QgV2ViU3RyaW5nJiBkYXRhRGly
KSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9JREJDYWxsYmFja3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9JREJDYWxsYmFja3NQcm94eS5jcHAKaW5kZXggMTkzYmYyYjVmNmM2NjZj
N2JkNTA2MmFkNDQ3NDQxNWJmYjMwNDI5Ny4uYWY0OTg0YTc3YzRiODVlMjZlMjllZjg4YThkMjgz
ZGU0NmFjYzM4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ2Fs
bGJhY2tzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkNhbGxi
YWNrc1Byb3h5LmNwcApAQCAtMzQsMTMgKzM0LDE1IEBACiAjaW5jbHVkZSAiSURCQ3Vyc29yQmFj
a2VuZEludGVyZmFjZS5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZS5o
IgogI2luY2x1ZGUgIklEQkRhdGFiYXNlQmFja2VuZFByb3h5LmgiCisjaW5jbHVkZSAiSURCRGF0
YWJhc2VDYWxsYmFja3NQcm94eS5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNlRXJyb3IuaCIKICNp
bmNsdWRlICJJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJXZWJJREJDYWxsYmFja3Mu
aCIKICNpbmNsdWRlICJXZWJJREJDdXJzb3JJbXBsLmgiCi0jaW5jbHVkZSAiV2ViSURCRGF0YWJh
c2VJbXBsLmgiCisjaW5jbHVkZSAiV2ViSURCRGF0YWJhc2VDYWxsYmFja3MuaCIKICNpbmNsdWRl
ICJXZWJJREJEYXRhYmFzZUVycm9yLmgiCisjaW5jbHVkZSAiV2ViSURCRGF0YWJhc2VJbXBsLmgi
CiAjaW5jbHVkZSAiV2ViSURCS2V5LmgiCiAjaW5jbHVkZSAiV2ViSURCVHJhbnNhY3Rpb25JbXBs
LmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCkBAIC03
NSw3ICs3Nyw4IEBAIHZvaWQgSURCQ2FsbGJhY2tzUHJveHk6Om9uU3VjY2VzcyhQYXNzUmVmUHRy
PElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U+IGlkYkN1cnNvCiAKIHZvaWQgSURCQ2FsbGJhY2tz
UHJveHk6Om9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4g
YmFja2VuZCkKIHsKLSAgICBtX2NhbGxiYWNrcy0+b25TdWNjZXNzKG5ldyBXZWJJREJEYXRhYmFz
ZUltcGwoYmFja2VuZCkpOworICAgIEFTU0VSVChtX2RhdGFiYXNlQ2FsbGJhY2tzLmdldCgpKTsK
KyAgICBtX2NhbGxiYWNrcy0+b25TdWNjZXNzKG5ldyBXZWJJREJEYXRhYmFzZUltcGwoYmFja2Vu
ZCwgbV9kYXRhYmFzZUNhbGxiYWNrcy5yZWxlYXNlKCkpKTsKIH0KIAogdm9pZCBJREJDYWxsYmFj
a3NQcm94eTo6b25TdWNjZXNzKFBhc3NSZWZQdHI8SURCS2V5PiBpZGJLZXkpCkBAIC0xMzcsOSAr
MTQwLDE3IEBAIHZvaWQgSURCQ2FsbGJhY2tzUHJveHk6Om9uQmxvY2tlZChpbnQ2NF90IGV4aXN0
aW5nVmVyc2lvbikKIAogdm9pZCBJREJDYWxsYmFja3NQcm94eTo6b25VcGdyYWRlTmVlZGVkKGlu
dDY0X3Qgb2xkVmVyc2lvbiwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZh
Y2U+IHRyYW5zYWN0aW9uLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4g
ZGF0YWJhc2UpCiB7Ci0gICAgbV9jYWxsYmFja3MtPm9uVXBncmFkZU5lZWRlZChvbGRWZXJzaW9u
LCBuZXcgV2ViSURCVHJhbnNhY3Rpb25JbXBsKHRyYW5zYWN0aW9uKSwgbmV3IFdlYklEQkRhdGFi
YXNlSW1wbChkYXRhYmFzZSkpOworICAgIEFTU0VSVChtX2RhdGFiYXNlQ2FsbGJhY2tzKTsKKyAg
ICBtX2NhbGxiYWNrcy0+b25VcGdyYWRlTmVlZGVkKG9sZFZlcnNpb24sIG5ldyBXZWJJREJUcmFu
c2FjdGlvbkltcGwodHJhbnNhY3Rpb24pLCBuZXcgV2ViSURCRGF0YWJhc2VJbXBsKGRhdGFiYXNl
LCBtX2RhdGFiYXNlQ2FsbGJhY2tzKSk7Cit9CisKK3ZvaWQgSURCQ2FsbGJhY2tzUHJveHk6OnNl
dERhdGFiYXNlQ2FsbGJhY2tzKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3NQcm94eT4g
ZGF0YWJhc2VDYWxsYmFja3MpCit7CisgICAgQVNTRVJUKCFtX2RhdGFiYXNlQ2FsbGJhY2tzKTsK
KyAgICBtX2RhdGFiYXNlQ2FsbGJhY2tzID0gZGF0YWJhc2VDYWxsYmFja3M7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdAogCisKICNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkNhbGxiYWNrc1Byb3h5
LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJDYWxsYmFja3NQcm94eS5oCmluZGV4
IDgyNTc1OGFhZGU5M2Y0MWYyNjI5MzAzNjhiZDk2NjYwZmU1MmE1MjcuLmY2MTNhODVjMmU0ZWQx
NmNiODg3ZjY4YTA1MDMxODQ5Y2IxY2VmMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL0lEQkNhbGxiYWNrc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvSURCQ2FsbGJhY2tzUHJveHkuaApAQCAtMzksNiArMzksNyBAQAogbmFtZXNwYWNlIFdl
YktpdCB7CiAKIGNsYXNzIFdlYklEQkNhbGxiYWNrczsKK2NsYXNzIElEQkRhdGFiYXNlQ2FsbGJh
Y2tzUHJveHk7CiAKIGNsYXNzIElEQkNhbGxiYWNrc1Byb3h5IDogcHVibGljIFdlYkNvcmU6OklE
QkNhbGxiYWNrcyB7CiBwdWJsaWM6CkBAIC01OSwxMCArNjAsMTMgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCBvbkJsb2NrZWQoaW50NjRfdCBleGlzdGluZ1ZlcnNpb24pOwogICAgIHZpcnR1
YWwgdm9pZCBvblVwZ3JhZGVOZWVkZWQoaW50NjRfdCBvbGRWZXJzaW9uLCBQYXNzUmVmUHRyPFdl
YkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4sIFBhc3NSZWZQdHI8V2ViQ29y
ZTo6SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPik7CiAKKyAgICB2b2lkIHNldERhdGFiYXNl
Q2FsbGJhY2tzKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3NQcm94eT4pOworCiBwcml2
YXRlOgogICAgIElEQkNhbGxiYWNrc1Byb3h5KFBhc3NPd25QdHI8V2ViSURCQ2FsbGJhY2tzPik7
CiAKICAgICBPd25QdHI8V2ViSURCQ2FsbGJhY2tzPiBtX2NhbGxiYWNrczsKKyAgICBSZWZQdHI8
SURCRGF0YWJhc2VDYWxsYmFja3NQcm94eT4gbV9kYXRhYmFzZUNhbGxiYWNrczsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuY3BwCmluZGV4IDU2YWZlNWZiNWQyYjYyZmE0NDQ5
OTU0NDY5MzBhMDFkMGJjOTc3OTguLjUwMWNlNjFmYjU5NTYyNjZiMGMzYmYxYjRjMDJhZWY2Y2Rh
MDA4MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNl
QmFja2VuZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRh
YmFzZUJhY2tlbmRQcm94eS5jcHAKQEAgLTEwNywxMSArMTA3LDYgQEAgdm9pZCBJREJEYXRhYmFz
ZUJhY2tlbmRQcm94eTo6Y2xvc2UoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4pCiAg
ICAgbV93ZWJJREJEYXRhYmFzZS0+Y2xvc2UoKTsKIH0KIAotdm9pZCBJREJEYXRhYmFzZUJhY2tl
bmRQcm94eTo6cmVnaXN0ZXJGcm9udGVuZENhbGxiYWNrcyhQYXNzUmVmUHRyPElEQkRhdGFiYXNl
Q2FsbGJhY2tzPiBkYXRhYmFzZUNhbGxiYWNrcykKLXsKLSAgICBtX3dlYklEQkRhdGFiYXNlLT5v
cGVuKG5ldyBXZWJJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwoZGF0YWJhc2VDYWxsYmFja3MpKTsK
LX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9E
QVRBQkFTRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFi
YXNlQmFja2VuZFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFz
ZUJhY2tlbmRQcm94eS5oCmluZGV4IDJhOTM2MDBjNmYyZmEwYzI2N2MyZGEwNmZiOGI5MjE2ZmQ4
MjhlMzYuLjc5NTYxMGFhNjU3MmRjYTQ2Y2MyNjRkYjViMDhiZDE3OGMxYzU2NTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmgK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHku
aApAQCAtNTAsOCArNTAsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNv
cmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gdHJhbnNhY3Rpb24oV2ViQ29yZTo6
RE9NU3RyaW5nTGlzdCogc3RvcmVOYW1lcywgdW5zaWduZWQgc2hvcnQgbW9kZSwgV2ViQ29yZTo6
RXhjZXB0aW9uQ29kZSYpOwogICAgIHZpcnR1YWwgdm9pZCBjbG9zZShQYXNzUmVmUHRyPFdlYkNv
cmU6OklEQkRhdGFiYXNlQ2FsbGJhY2tzPik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJG
cm9udGVuZENhbGxiYWNrcyhQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkRhdGFiYXNlQ2FsbGJhY2tz
Pik7Ci0KIHByaXZhdGU6CiAgICAgSURCRGF0YWJhc2VCYWNrZW5kUHJveHkoUGFzc093blB0cjxX
ZWJJREJEYXRhYmFzZT4pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9JREJGYWN0b3J5QmFja2VuZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0lEQkZhY3RvcnlCYWNrZW5kUHJveHkuY3BwCmluZGV4IGJhYmNiYWUxODQwOWM1ZGQyNTkyYzBk
ZmQ5MjMzMjZmYmY2MGU5NGEuLjI4OTk1ZWM2NjBlMzFmZjdjZWZhZDkzZWIzYmRhMjM0MWFhMWVm
ZjggMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkZhY3RvcnlCYWNr
ZW5kUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkZhY3RvcnlC
YWNrZW5kUHJveHkuY3BwCkBAIC0zNCwxMiArMzQsMTQgQEAKICNpbmNsdWRlICJDcm9zc1RocmVh
ZFRhc2suaCIKICNpbmNsdWRlICJET01TdHJpbmdMaXN0LmgiCiAjaW5jbHVkZSAiSURCRGF0YWJh
c2VCYWNrZW5kUHJveHkuaCIKKyNpbmNsdWRlICJJREJEYXRhYmFzZUNhbGxiYWNrcy5oIgogI2lu
Y2x1ZGUgIklEQkRhdGFiYXNlRXJyb3IuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250
ZXh0LmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJXZWJGcmFtZUlt
cGwuaCIKICNpbmNsdWRlICJXZWJJREJDYWxsYmFja3NJbXBsLmgiCiAjaW5jbHVkZSAiV2ViSURC
RGF0YWJhc2UuaCIKKyNpbmNsdWRlICJXZWJJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwuaCIKICNp
bmNsdWRlICJXZWJJREJEYXRhYmFzZUVycm9yLmgiCiAjaW5jbHVkZSAiV2ViSURCRmFjdG9yeS5o
IgogI2luY2x1ZGUgIldlYktpdC5oIgpAQCAtMjAzLDE1ICsyMDUsMTYgQEAgdm9pZCBJREJGYWN0
b3J5QmFja2VuZFByb3h5OjpnZXREYXRhYmFzZU5hbWVzKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tz
PiBwcnBDYWxsYmEKIH0KIAogCi12b2lkIElEQkZhY3RvcnlCYWNrZW5kUHJveHk6Om9wZW4oY29u
c3QgU3RyaW5nJiBuYW1lLCBpbnQ2NF90IHZlcnNpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tz
PiBwcnBDYWxsYmFja3MsIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2lu
LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIGRhdGFEaXIp
Cit2b2lkIElEQkZhY3RvcnlCYWNrZW5kUHJveHk6Om9wZW4oY29uc3QgU3RyaW5nJiBuYW1lLCBp
bnQ2NF90IHZlcnNpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmFja3MsIFBh
c3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IHBycERhdGFiYXNlQ2FsbGJhY2tzLCBQYXNz
UmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdpbiwgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBkYXRhRGlyKQogewogICAgIFJlZlB0cjxJREJD
YWxsYmFja3M+IGNhbGxiYWNrcyhwcnBDYWxsYmFja3MpOworICAgIFJlZlB0cjxJREJEYXRhYmFz
ZUNhbGxiYWNrcz4gZGF0YWJhc2VDYWxsYmFja3MocHJwRGF0YWJhc2VDYWxsYmFja3MpOwogICAg
IFdlYlNlY3VyaXR5T3JpZ2luIG9yaWdpbihzZWN1cml0eU9yaWdpbik7CiAgICAgaWYgKCFhbGxv
d0luZGV4ZWREQihjb250ZXh0LCBuYW1lLCBvcmlnaW4sIGNhbGxiYWNrcykpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIFdlYkZyYW1lSW1wbCogd2ViRnJhbWUgPSBnZXRXZWJGcmFtZShjb250ZXh0
KTsKLSAgICBtX3dlYklEQkZhY3RvcnktPm9wZW4obmFtZSwgdmVyc2lvbiwgbmV3IFdlYklEQkNh
bGxiYWNrc0ltcGwoY2FsbGJhY2tzKSwgb3JpZ2luLCB3ZWJGcmFtZSwgZGF0YURpcik7CisgICAg
bV93ZWJJREJGYWN0b3J5LT5vcGVuKG5hbWUsIHZlcnNpb24sIG5ldyBXZWJJREJDYWxsYmFja3NJ
bXBsKGNhbGxiYWNrcyksIG5ldyBXZWJJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwoZGF0YWJhc2VD
YWxsYmFja3MpLCBvcmlnaW4sIHdlYkZyYW1lLCBkYXRhRGlyKTsKIH0KIAogdm9pZCBJREJGYWN0
b3J5QmFja2VuZFByb3h5OjpkZWxldGVEYXRhYmFzZShjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NS
ZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmFja3MsIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmln
aW4+IHNlY3VyaXR5T3JpZ2luLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25z
dCBTdHJpbmcmIGRhdGFEaXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9JREJGYWN0b3J5QmFja2VuZFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9J
REJGYWN0b3J5QmFja2VuZFByb3h5LmgKaW5kZXggYzBkZTkxMGE5MmNkZWE5MWEzZDNhMWM1MzBh
MjgwN2M1YWJmYWE3YS4uODgzODBkN2E0MmVkMTE3MzAyOTM1YmViYmNhY2NlYjZmNmU5N2Q3OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRmFjdG9yeUJhY2tlbmRQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkZhY3RvcnlCYWNrZW5k
UHJveHkuaApAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+SURCRmFjdG9y
eUJhY2tlbmRQcm94eSgpOwogCiAgICAgdmlydHVhbCB2b2lkIGdldERhdGFiYXNlTmFtZXMoUGFz
c1JlZlB0cjxXZWJDb3JlOjpJREJDYWxsYmFja3M+LCBQYXNzUmVmUHRyPFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luPiwgV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmlu
ZyYgZGF0YURpcik7Ci0gICAgdmlydHVhbCB2b2lkIG9wZW4oY29uc3QgU3RyaW5nJiBuYW1lLCBp
bnQ2NF90IHZlcnNpb24sIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCQ2FsbGJhY2tzPiwgUGFzc1Jl
ZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4sIFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCBjb25zdCBTdHJpbmcmIGRhdGFEaXIpOworICAgIHZpcnR1YWwgdm9pZCBvcGVuKGNv
bnN0IFN0cmluZyYgbmFtZSwgaW50NjRfdCB2ZXJzaW9uLCBQYXNzUmVmUHRyPFdlYkNvcmU6OklE
QkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCRGF0YWJhc2VDYWxsYmFja3M+LCBQ
YXNzUmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiwgV2ViQ29yZTo6U2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgZGF0YURpcik7CiAgICAgdmlydHVhbCB2b2lkIGRl
bGV0ZURhdGFiYXNlKGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJD
YWxsYmFja3M+LCBQYXNzUmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiwgV2ViQ29yZTo6
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgZGF0YURpcik7CiAKIHByaXZh
dGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFz
ZUltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBs
LmNwcAppbmRleCAwZDE0MmJjMDI5M2FhMTNmNWIxOTJjM2ZkYmM1NjMzN2NkYWM3NTdkLi41Mjg3
OWE5YTdmM2I3MzgwYWJhMzA2ZWQ2NzNkMGM0MmExMjhmYzQ2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5jcHAKQEAgLTQ1LDggKzQ1LDkg
QEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1XZWJJ
REJEYXRhYmFzZUltcGw6OldlYklEQkRhdGFiYXNlSW1wbChQYXNzUmVmUHRyPElEQkRhdGFiYXNl
QmFja2VuZEludGVyZmFjZT4gZGF0YWJhc2VCYWNrZW5kKQorV2ViSURCRGF0YWJhc2VJbXBsOjpX
ZWJJREJEYXRhYmFzZUltcGwoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+
IGRhdGFiYXNlQmFja2VuZCwgV1RGOjpQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzUHJv
eHk+IGRhdGFiYXNlQ2FsbGJhY2tzKQogICAgIDogbV9kYXRhYmFzZUJhY2tlbmQoZGF0YWJhc2VC
YWNrZW5kKQorICAgICwgbV9kYXRhYmFzZUNhbGxiYWNrcyhkYXRhYmFzZUNhbGxiYWNrcykKICAg
ICAsIG1fY2xvc2VQZW5kaW5nKGZhbHNlKQogewogfQpAQCAtOTMsNyArOTQsNyBAQCBXZWJJREJU
cmFuc2FjdGlvbiogV2ViSURCRGF0YWJhc2VJbXBsOjp0cmFuc2FjdGlvbihjb25zdCBXZWJET01T
dHJpbmdMaXN0JiBuYW1lcwogCiB2b2lkIFdlYklEQkRhdGFiYXNlSW1wbDo6Y2xvc2UoKQogewot
ICAgIC8vIFVzZSB0aGUgY2FsbGJhY2tzIHRoYXQgOjpvcGVuIGdhdmUgdXMgc28gdGhhdCB0aGUg
YmFja2VuZCBpbgorICAgIC8vIFVzZSB0aGUgY2FsbGJhY2tzIHBhc3NlZCBpbiB0byB0aGUgY29u
c3RydWN0b3Igc28gdGhhdCB0aGUgYmFja2VuZCBpbgogICAgIC8vIG11bHRpLXByb2Nlc3MgY2hy
b21pdW0ga25vd3Mgd2hpY2ggZGF0YWJhc2UgY29ubmVjdGlvbiBpcyBjbG9zaW5nLgogICAgIGlm
ICghbV9kYXRhYmFzZUNhbGxiYWNrcykgewogICAgICAgICBtX2Nsb3NlUGVuZGluZyA9IHRydWU7
CkBAIC0xMTMsMTUgKzExNCw2IEBAIHZvaWQgV2ViSURCRGF0YWJhc2VJbXBsOjpmb3JjZUNsb3Nl
KCkKICAgICBjYWxsYmFja3MtPm9uRm9yY2VkQ2xvc2UoKTsKIH0KIAotdm9pZCBXZWJJREJEYXRh
YmFzZUltcGw6Om9wZW4oV2ViSURCRGF0YWJhc2VDYWxsYmFja3MqIGNhbGxiYWNrcykKLXsKLSAg
ICBBU1NFUlQoIW1fZGF0YWJhc2VDYWxsYmFja3MpOwotICAgIG1fZGF0YWJhc2VDYWxsYmFja3Mg
PSBJREJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5OjpjcmVhdGUoYWRvcHRQdHIoY2FsbGJhY2tzKSk7
Ci0gICAgbV9kYXRhYmFzZUJhY2tlbmQtPnJlZ2lzdGVyRnJvbnRlbmRDYWxsYmFja3MobV9kYXRh
YmFzZUNhbGxiYWNrcyk7Ci0gICAgaWYgKG1fY2xvc2VQZW5kaW5nKQotICAgICAgICBjbG9zZSgp
OwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVE
X0RBVEFCQVNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURC
RGF0YWJhc2VJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFz
ZUltcGwuaAppbmRleCA0YTgyODRjZTU5YWQxZTYzNmNjNGZiYzk3MjdiY2I3N2E0MjJjMzBlLi45
Y2QxY2FmNTkyMDY5YjU0ZGZiOTZjYzg3ODQ0YzM3OTZkYjNhMzA3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwuaApAQCAtNDcsNyArNDcsNyBA
QCBjbGFzcyBXZWJJREJUcmFuc2FjdGlvbjsKIC8vIFNlZSBjb21tZW50IGluIFdlYklEQkZhY3Rv
cnkgZm9yIGEgaGlnaCBsZXZlbCBvdmVydmlldyB0aGVzZSBjbGFzc2VzLgogY2xhc3MgV2ViSURC
RGF0YWJhc2VJbXBsIDogcHVibGljIFdlYklEQkRhdGFiYXNlIHsKIHB1YmxpYzoKLSAgICBXZWJJ
REJEYXRhYmFzZUltcGwoV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2Vu
ZEludGVyZmFjZT4pOworICAgIFdlYklEQkRhdGFiYXNlSW1wbChXVEY6OlBhc3NSZWZQdHI8V2Vi
Q29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiwgV1RGOjpQYXNzUmVmUHRyPElEQkRh
dGFiYXNlQ2FsbGJhY2tzUHJveHk+KTsKICAgICB2aXJ0dWFsIH5XZWJJREJEYXRhYmFzZUltcGwo
KTsKIAogICAgIHZpcnR1YWwgV2ViSURCTWV0YWRhdGEgbWV0YWRhdGEoKSBjb25zdDsKQEAgLTU5
LDkgKzU5LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBmb3JjZUNsb3NlKCk7CiAgICAg
dmlydHVhbCB2b2lkIGNsb3NlKCk7CiAKLSAgICAvLyBGSVhNRTogUmVuYW1lICJvcGVuIiB0byBy
ZWdpc3RlckZyb250ZW5kQ2FsbGJhY2tzLgotICAgIHZpcnR1YWwgdm9pZCBvcGVuKFdlYklEQkRh
dGFiYXNlQ2FsbGJhY2tzKik7Ci0KIHByaXZhdGU6CiAgICAgV1RGOjpSZWZQdHI8V2ViQ29yZTo6
SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiBtX2RhdGFiYXNlQmFja2VuZDsKICAgICBXVEY6
OlJlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5PiBtX2RhdGFiYXNlQ2FsbGJhY2tzOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRmFjdG9yeUltcGwu
Y3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRmFjdG9yeUltcGwuY3BwCmlu
ZGV4IGFkNzE0NzZiN2ViYjQ2ODZlYTgyNWI5NjIxOTE2ZTYzYjI5MGFjNzcuLjk0YThkNDY4YTkw
YTkwYzQxMmM3YWE2Yzk4YWVmYjc0YmI3YTM3YjggMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYklEQkZhY3RvcnlJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJJREJGYWN0b3J5SW1wbC5jcHAKQEAgLTM1LDggKzM1LDEwIEBACiAKICNp
bmNsdWRlICJET01TdHJpbmdMaXN0LmgiCiAjaW5jbHVkZSAiSURCQ2FsbGJhY2tzUHJveHkuaCIK
KyNpbmNsdWRlICJJREJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5LmgiCiAjaW5jbHVkZSAiSURCRmFj
dG9yeUJhY2tlbmRJbXBsLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKKyNpbmNsdWRl
ICJXZWJJREJEYXRhYmFzZUNhbGxiYWNrcy5oIgogI2luY2x1ZGUgIldlYklEQkRhdGFiYXNlRXJy
b3IuaCIKICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAKQEAgLTYzLDkgKzY1LDEyIEBAIHZvaWQg
V2ViSURCRmFjdG9yeUltcGw6OmdldERhdGFiYXNlTmFtZXMoV2ViSURCQ2FsbGJhY2tzKiBjYWxs
YmFja3MsIGNvbnN0IFdlYlNlCiAgICAgbV9pZGJGYWN0b3J5QmFja2VuZC0+Z2V0RGF0YWJhc2VO
YW1lcyhJREJDYWxsYmFja3NQcm94eTo6Y3JlYXRlKGFkb3B0UHRyKGNhbGxiYWNrcykpLCBvcmln
aW4sIDAsIGRhdGFEaXIpOwogfQogCi12b2lkIFdlYklEQkZhY3RvcnlJbXBsOjpvcGVuKGNvbnN0
IFdlYlN0cmluZyYgbmFtZSwgbG9uZyBsb25nIHZlcnNpb24sIFdlYklEQkNhbGxiYWNrcyogY2Fs
bGJhY2tzLCBjb25zdCBXZWJTZWN1cml0eU9yaWdpbiYgb3JpZ2luLCBXZWJGcmFtZSosIGNvbnN0
IFdlYlN0cmluZyYgZGF0YURpcikKK3ZvaWQgV2ViSURCRmFjdG9yeUltcGw6Om9wZW4oY29uc3Qg
V2ViU3RyaW5nJiBuYW1lLCBsb25nIGxvbmcgdmVyc2lvbiwgV2ViSURCQ2FsbGJhY2tzKiBjYWxs
YmFja3MsIFdlYklEQkRhdGFiYXNlQ2FsbGJhY2tzKiBkYXRhYmFzZUNhbGxiYWNrcywgY29uc3Qg
V2ViU2VjdXJpdHlPcmlnaW4mIG9yaWdpbiwgV2ViRnJhbWUqLCBjb25zdCBXZWJTdHJpbmcmIGRh
dGFEaXIpCiB7Ci0gICAgbV9pZGJGYWN0b3J5QmFja2VuZC0+b3BlbihuYW1lLCB2ZXJzaW9uLCBJ
REJDYWxsYmFja3NQcm94eTo6Y3JlYXRlKGFkb3B0UHRyKGNhbGxiYWNrcykpLmdldCgpLCBvcmln
aW4sIDAsIGRhdGFEaXIpOworICAgIFJlZlB0cjxJREJDYWxsYmFja3NQcm94eT4gY2FsbGJhY2tz
UHJveHkgPSBJREJDYWxsYmFja3NQcm94eTo6Y3JlYXRlKGFkb3B0UHRyKGNhbGxiYWNrcykpOwor
ICAgIFJlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5PiBkYXRhYmFzZUNhbGxiYWNrc1By
b3h5ID0gSURCRGF0YWJhc2VDYWxsYmFja3NQcm94eTo6Y3JlYXRlKGFkb3B0UHRyKGRhdGFiYXNl
Q2FsbGJhY2tzKSk7CisgICAgY2FsbGJhY2tzUHJveHktPnNldERhdGFiYXNlQ2FsbGJhY2tzKGRh
dGFiYXNlQ2FsbGJhY2tzUHJveHkpOworICAgIG1faWRiRmFjdG9yeUJhY2tlbmQtPm9wZW4obmFt
ZSwgdmVyc2lvbiwgY2FsbGJhY2tzUHJveHkuZ2V0KCksIGRhdGFiYXNlQ2FsbGJhY2tzUHJveHku
Z2V0KCksIG9yaWdpbiwgMCwgZGF0YURpcik7CiB9CiAKIHZvaWQgV2ViSURCRmFjdG9yeUltcGw6
OmRlbGV0ZURhdGFiYXNlKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgV2ViSURCQ2FsbGJhY2tzKiBj
YWxsYmFja3MsIGNvbnN0IFdlYlNlY3VyaXR5T3JpZ2luJiBvcmlnaW4sIFdlYkZyYW1lKiwgY29u
c3QgV2ViU3RyaW5nJiBkYXRhRGlyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViSURCRmFjdG9yeUltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YklEQkZhY3RvcnlJbXBsLmgKaW5kZXggODMzZWViNTkxMjU5Yjg1M2MzMjFmZDExOGYwOTRhNWI4
YTdjODg2NC4uMzNmNWEyMWQyYzc0ZjU4ZGZmOTRlMWViN2I5MGU1YWQ0MzBkMTYyNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRmFjdG9yeUltcGwuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJGYWN0b3J5SW1wbC5oCkBAIC00NSw3
ICs0NSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5XZWJJREJGYWN0b3J5SW1wbCgpOwogCiAg
ICAgdmlydHVhbCB2b2lkIGdldERhdGFiYXNlTmFtZXMoV2ViSURCQ2FsbGJhY2tzKiwgY29uc3Qg
V2ViU2VjdXJpdHlPcmlnaW4mLCBXZWJGcmFtZSosIGNvbnN0IFdlYlN0cmluZyYgZGF0YURpcik7
Ci0gICAgdmlydHVhbCB2b2lkIG9wZW4oY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBsb25nIGxvbmcg
dmVyc2lvbiwgV2ViSURCQ2FsbGJhY2tzKiwgY29uc3QgV2ViU2VjdXJpdHlPcmlnaW4mLCBXZWJG
cmFtZSosIGNvbnN0IFdlYlN0cmluZyYgZGF0YURpcik7CisgICAgdmlydHVhbCB2b2lkIG9wZW4o
Y29uc3QgV2ViU3RyaW5nJiBuYW1lLCBsb25nIGxvbmcgdmVyc2lvbiwgV2ViSURCQ2FsbGJhY2tz
KiwgV2ViSURCRGF0YWJhc2VDYWxsYmFja3MqLCBjb25zdCBXZWJTZWN1cml0eU9yaWdpbiYsIFdl
YkZyYW1lKiwgY29uc3QgV2ViU3RyaW5nJiBkYXRhRGlyKTsKICAgICB2aXJ0dWFsIHZvaWQgZGVs
ZXRlRGF0YWJhc2UoY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBXZWJJREJDYWxsYmFja3MqLCBjb25z
dCBXZWJTZWN1cml0eU9yaWdpbiYsIFdlYkZyYW1lKiwgY29uc3QgV2ViU3RyaW5nJiBkYXRhRGly
KTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
SURCQWJvcnRPbkNvcnJ1cHRUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
SURCQWJvcnRPbkNvcnJ1cHRUZXN0LmNwcAppbmRleCAxZDM5NTA5NmFhZGIzYTViM2RlOWI3MGRh
YjYwZjMxODljZmJhOTg2Li5iMDgwYmZjNGRmNTFhMjk4ZjRmZGI1ZDljMjhlNzcxN2Y0MGRhZjE0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQkFib3J0T25Db3Jy
dXB0VGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJBYm9ydE9u
Q29ycnVwdFRlc3QuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZS5oIgogI2luY2x1ZGUgIklEQkRhdGFi
YXNlQmFja2VuZEludGVyZmFjZS5oIgorI2luY2x1ZGUgIklEQkRhdGFiYXNlQ2FsbGJhY2tzLmgi
CiAjaW5jbHVkZSAiSURCRmFjdG9yeUJhY2tlbmRJbXBsLmgiCiAjaW5jbHVkZSAiSURCRmFrZUJh
Y2tpbmdTdG9yZS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCkBAIC05NiwxNCArOTcs
MjYgQEAgcHJvdGVjdGVkOgogICAgIH0KIH07CiAKK2NsYXNzIEZha2VJREJEYXRhYmFzZUNhbGxi
YWNrcyA6IHB1YmxpYyBJREJEYXRhYmFzZUNhbGxiYWNrcyB7CitwdWJsaWM6CisgICAgc3RhdGlj
IFBhc3NSZWZQdHI8RmFrZUlEQkRhdGFiYXNlQ2FsbGJhY2tzPiBjcmVhdGUoKSB7IHJldHVybiBh
ZG9wdFJlZihuZXcgRmFrZUlEQkRhdGFiYXNlQ2FsbGJhY2tzKCkpOyB9CisgICAgdmlydHVhbCB+
RmFrZUlEQkRhdGFiYXNlQ2FsbGJhY2tzKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIG9uVmVyc2lv
bkNoYW5nZShjb25zdCBTdHJpbmcmIHZlcnNpb24pIE9WRVJSSURFIHsgfQorICAgIHZpcnR1YWwg
dm9pZCBvblZlcnNpb25DaGFuZ2UoaW50NjRfdCBvbGRWZXJzaW9uLCBpbnQ2NF90IG5ld1ZlcnNp
b24pIE9WRVJSSURFIHsgfQorICAgIHZpcnR1YWwgdm9pZCBvbkZvcmNlZENsb3NlKCkgT1ZFUlJJ
REUgeyB9Citwcml2YXRlOgorICAgIEZha2VJREJEYXRhYmFzZUNhbGxiYWNrcygpIHsgfQorfTsK
KwogVEVTVChJREJBYm9ydFRlc3QsIFRoZVRlc3QpCiB7CiAgICAgUmVmUHRyPElEQkZhY3RvcnlC
YWNrZW5kSW1wbD4gZmFjdG9yeSA9IEZhaWxpbmdJREJGYWN0b3J5QmFja2VuZEltcGw6OmNyZWF0
ZSgpOwogICAgIGNvbnN0IFN0cmluZyYgbmFtZSA9ICJkYiBuYW1lIjsKICAgICBNb2NrSURCQ2Fs
bGJhY2tzIGNhbGxiYWNrczsKKyAgICBSZWZQdHI8RmFrZUlEQkRhdGFiYXNlQ2FsbGJhY2tzPiBk
YXRhYmFzZUNhbGxiYWNrcyA9IEZha2VJREJEYXRhYmFzZUNhbGxiYWNrczo6Y3JlYXRlKCk7CiAg
ICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBvcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRl
KCJodHRwIiwgImxvY2FsaG9zdCIsIDgxKTsKICAgICBjb25zdCBpbnQ2NF90IER1bW15VmVyc2lv
biA9IDI7Ci0gICAgZmFjdG9yeS0+b3BlbihuYW1lLCBEdW1teVZlcnNpb24sICZjYWxsYmFja3Ms
IG9yaWdpbiwgMCAvKkZyYW1lKi8sIFN0cmluZygpIC8qcGF0aCovKTsKKyAgICBmYWN0b3J5LT5v
cGVuKG5hbWUsIER1bW15VmVyc2lvbiwgJmNhbGxiYWNrcywgZGF0YWJhc2VDYWxsYmFja3MsIG9y
aWdpbiwgMCAvKkZyYW1lKi8sIFN0cmluZygpIC8qcGF0aCovKTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCRGF0YWJhc2VC
YWNrZW5kVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQkRhdGFiYXNl
QmFja2VuZFRlc3QuY3BwCmluZGV4IDFmYTJjMjYyZGIxZDE1NTFlZmQyNTgxYTFiNzJlNjNlZGQy
ZTc1MDUuLmNiOTQyNDNkMDZhZmYyMDk5Yzk5YThlZTZiYTQ2MGY1ZjMyMWRlZWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCRGF0YWJhc2VCYWNrZW5kVGVzdC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJEYXRhYmFzZUJhY2tlbmRU
ZXN0LmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIklEQkJhY2tpbmdTdG9yZS5oIgog
I2luY2x1ZGUgIklEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJJREJEYXRh
YmFzZUJhY2tlbmRJbXBsLmgiCisjaW5jbHVkZSAiSURCRGF0YWJhc2VDYWxsYmFja3NQcm94eS5o
IgogI2luY2x1ZGUgIklEQkZhY3RvcnlCYWNrZW5kSW1wbC5oIgogI2luY2x1ZGUgIklEQkZha2VC
YWNraW5nU3RvcmUuaCIKICNpbmNsdWRlICJJREJJbmRleEJhY2tlbmRJbXBsLmgiCkBAIC00MCw5
ICs0MSwxMCBAQAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogCiB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKK3VzaW5nIFdlYktpdDo6SURCRGF0YWJhc2VDYWxsYmFja3NQcm94eTsKIHVz
aW5nIFdlYktpdDo6V2ViSURCRGF0YWJhc2U7Ci11c2luZyBXZWJLaXQ6OldlYklEQkRhdGFiYXNl
Q2FsbGJhY2tzSW1wbDsKIHVzaW5nIFdlYktpdDo6V2ViSURCRGF0YWJhc2VJbXBsOwordXNpbmcg
V2ViS2l0OjpXZWJJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGw7CiAKIG5hbWVzcGFjZSB7CiAKQEAg
LTEyMiwyMCArMTI0LDE2IEBAIFRFU1QoSURCRGF0YWJhc2VCYWNrZW5kVGVzdCwgQ29ubmVjdGlv
bkxpZmVjeWNsZSkKICAgICBFWFBFQ1RfR1QoYmFja2luZ1N0b3JlLT5yZWZDb3VudCgpLCAxKTsK
IAogICAgIFJlZlB0cjxNb2NrSURCQ2FsbGJhY2tzPiByZXF1ZXN0MSA9IE1vY2tJREJDYWxsYmFj
a3M6OmNyZWF0ZSgpOwotICAgIGRiLT5vcGVuQ29ubmVjdGlvbihyZXF1ZXN0MSk7Ci0KICAgICBS
ZWZQdHI8RmFrZUlEQkRhdGFiYXNlQ2FsbGJhY2tzPiBjb25uZWN0aW9uMSA9IEZha2VJREJEYXRh
YmFzZUNhbGxiYWNrczo6Y3JlYXRlKCk7Ci0gICAgZGItPnJlZ2lzdGVyRnJvbnRlbmRDYWxsYmFj
a3MoY29ubmVjdGlvbjEpOworICAgIGRiLT5vcGVuQ29ubmVjdGlvbihyZXF1ZXN0MSwgY29ubmVj
dGlvbjEpOwogCiAgICAgUmVmUHRyPE1vY2tJREJDYWxsYmFja3M+IHJlcXVlc3QyID0gTW9ja0lE
QkNhbGxiYWNrczo6Y3JlYXRlKCk7Ci0gICAgZGItPm9wZW5Db25uZWN0aW9uKHJlcXVlc3QyKTsK
KyAgICBSZWZQdHI8RmFrZUlEQkRhdGFiYXNlQ2FsbGJhY2tzPiBjb25uZWN0aW9uMiA9IEZha2VJ
REJEYXRhYmFzZUNhbGxiYWNrczo6Y3JlYXRlKCk7CisgICAgZGItPm9wZW5Db25uZWN0aW9uKHJl
cXVlc3QyLCBjb25uZWN0aW9uMik7CiAKICAgICBkYi0+Y2xvc2UoY29ubmVjdGlvbjEpOwogICAg
IEVYUEVDVF9HVChiYWNraW5nU3RvcmUtPnJlZkNvdW50KCksIDEpOwogCi0gICAgUmVmUHRyPEZh
a2VJREJEYXRhYmFzZUNhbGxiYWNrcz4gY29ubmVjdGlvbjIgPSBGYWtlSURCRGF0YWJhc2VDYWxs
YmFja3M6OmNyZWF0ZSgpOwotICAgIGRiLT5yZWdpc3RlckZyb250ZW5kQ2FsbGJhY2tzKGNvbm5l
Y3Rpb24yKTsKLQogICAgIGRiLT5jbG9zZShjb25uZWN0aW9uMik7CiAgICAgRVhQRUNUX1RSVUUo
YmFja2luZ1N0b3JlLT5oYXNPbmVSZWYoKSk7CiB9CkBAIC0xNDksNyArMTQ3LDcgQEAgcHVibGlj
OgogCiAgICAgfk1vY2tJREJEYXRhYmFzZUJhY2tlbmRQcm94eSgpCiAgICAgewotICAgICAgICBF
WFBFQ1RfVFJVRShtX3dhc1JlZ2lzdGVyRnJvbnRlbmRDYWxsYmFja3NDYWxsZWQpOworICAgICAg
ICBFWFBFQ1RfVFJVRShtX3dhc0Nsb3NlQ2FsbGVkKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIElE
QkRhdGFiYXNlTWV0YWRhdGEgbWV0YWRhdGEoKSBjb25zdCB7IHJldHVybiBJREJEYXRhYmFzZU1l
dGFkYXRhKCk7IH0KQEAgLTE2MywxOSArMTYxLDEyIEBAIHB1YmxpYzoKICAgICAgICAgbV93YXND
bG9zZUNhbGxlZCA9IHRydWU7CiAgICAgICAgIG1fd2ViRGF0YWJhc2UuY2xvc2UoKTsKICAgICB9
Ci0gICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyRnJvbnRlbmRDYWxsYmFja3MoUGFzc1JlZlB0cjxJ
REJEYXRhYmFzZUNhbGxiYWNrcz4gY29ubmVjdGlvbikKLSAgICB7Ci0gICAgICAgIG1fd2FzUmVn
aXN0ZXJGcm9udGVuZENhbGxiYWNrc0NhbGxlZCA9IHRydWU7Ci0gICAgICAgIG1fd2ViRGF0YWJh
c2Uub3BlbihuZXcgV2ViSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsKGNvbm5lY3Rpb24pKTsKLSAg
ICB9CiAKIHByaXZhdGU6CiAgICAgTW9ja0lEQkRhdGFiYXNlQmFja2VuZFByb3h5KFdlYklEQkRh
dGFiYXNlSW1wbCYgd2ViRGF0YWJhc2UpCi0gICAgICAgIDogbV93YXNSZWdpc3RlckZyb250ZW5k
Q2FsbGJhY2tzQ2FsbGVkKGZhbHNlKQotICAgICAgICAsIG1fd2FzQ2xvc2VDYWxsZWQoZmFsc2Up
CisgICAgICAgIDogbV93YXNDbG9zZUNhbGxlZChmYWxzZSkKICAgICAgICAgLCBtX3dlYkRhdGFi
YXNlKHdlYkRhdGFiYXNlKSB7IH0KIAotICAgIGJvb2wgbV93YXNSZWdpc3RlckZyb250ZW5kQ2Fs
bGJhY2tzQ2FsbGVkOwogICAgIGJvb2wgbV93YXNDbG9zZUNhbGxlZDsKIAogICAgIFdlYklEQkRh
dGFiYXNlSW1wbCYgbV93ZWJEYXRhYmFzZTsKQEAgLTE5MSwxOCArMTgyLDE5IEBAIFRFU1QoSURC
RGF0YWJhc2VCYWNrZW5kVGVzdCwgRm9yY2VkQ2xvc2UpCiAgICAgUmVmUHRyPElEQkRhdGFiYXNl
QmFja2VuZEltcGw+IGJhY2tlbmQgPSBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpjcmVhdGUoImRi
IiwgYmFja2luZ1N0b3JlLmdldCgpLCBjb29yZGluYXRvciwgZmFjdG9yeSwgInVuaXF1ZWlkIik7
CiAgICAgRVhQRUNUX0dUKGJhY2tpbmdTdG9yZS0+cmVmQ291bnQoKSwgMSk7CiAKLSAgICBXZWJJ
REJEYXRhYmFzZUltcGwgd2ViRGF0YWJhc2UoYmFja2VuZCk7Ci0KLSAgICBSZWZQdHI8TW9ja0lE
QkNhbGxiYWNrcz4gcmVxdWVzdDEgPSBNb2NrSURCQ2FsbGJhY2tzOjpjcmVhdGUoKTsKLSAgICBi
YWNrZW5kLT5vcGVuQ29ubmVjdGlvbihyZXF1ZXN0MSk7CisgICAgUmVmUHRyPEZha2VJREJEYXRh
YmFzZUNhbGxiYWNrcz4gY29ubmVjdGlvbiA9IEZha2VJREJEYXRhYmFzZUNhbGxiYWNrczo6Y3Jl
YXRlKCk7CisgICAgUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHk+IGNvbm5lY3Rpb25Q
cm94eSA9IElEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHk6OmNyZWF0ZShhZG9wdFB0cihuZXcgV2Vi
SURCRGF0YWJhc2VDYWxsYmFja3NJbXBsKGNvbm5lY3Rpb24pKSk7CisgICAgV2ViSURCRGF0YWJh
c2VJbXBsIHdlYkRhdGFiYXNlKGJhY2tlbmQsIGNvbm5lY3Rpb25Qcm94eSk7CiAKICAgICBSZWZQ
dHI8TW9ja0lEQkRhdGFiYXNlQmFja2VuZFByb3h5PiBwcm94eSA9IE1vY2tJREJEYXRhYmFzZUJh
Y2tlbmRQcm94eTo6Y3JlYXRlKHdlYkRhdGFiYXNlKTsKKyAgICBSZWZQdHI8TW9ja0lEQkNhbGxi
YWNrcz4gcmVxdWVzdCA9IE1vY2tJREJDYWxsYmFja3M6OmNyZWF0ZSgpOworICAgIGJhY2tlbmQt
Pm9wZW5Db25uZWN0aW9uKHJlcXVlc3QsIGNvbm5lY3Rpb25Qcm94eSk7CiAKICAgICBTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0ID0gMDsKLSAgICBSZWZQdHI8SURCRGF0YWJhc2U+IGlk
YkRhdGFiYXNlID0gSURCRGF0YWJhc2U6OmNyZWF0ZShjb250ZXh0LCBwcm94eSk7Ci0gICAgaWRi
RGF0YWJhc2UtPnJlZ2lzdGVyRnJvbnRlbmRDYWxsYmFja3MoKTsKKyAgICBSZWZQdHI8SURCRGF0
YWJhc2U+IGlkYkRhdGFiYXNlID0gSURCRGF0YWJhc2U6OmNyZWF0ZShjb250ZXh0LCBwcm94eSwg
Y29ubmVjdGlvbik7CiAKICAgICB3ZWJEYXRhYmFzZS5mb3JjZUNsb3NlKCk7CisKICAgICBFWFBF
Q1RfVFJVRShiYWNraW5nU3RvcmUtPmhhc09uZVJlZigpKTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162909</attachid>
            <date>2012-09-07 17:03:00 -0700</date>
            <delta_ts>2012-09-11 11:14:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-90411-20120907170239.patch</filename>
            <type>text/plain</type>
            <size>67669</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3OTMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTFkZjlhNTVkZGIxNGZl
YWNmZmJjOGRlMzNhYzg3ZTY3YTUyYzAwYi4uZmVlNmRjMzViYzQyZjljZGMwNmM1N2RiMjk5NDJj
OGY2ZTJkYjRjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgxIEBACisyMDEyLTA5LTA2ICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBDb25z
b2xpZGF0ZSB0d28tcGhhc2UgY29ubmVjdGlvbiB0byBhdm9pZCByYWNlIGNvbmRpdGlvbnMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkwNDExCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUHJldmlvdXNseSwg
SURCIGNvbm5lY3Rpb25zIHdlcmUgb3BlbmVkIGJ5IGhhdmluZyB0aGUgZnJvbnQtZW5kICgxKSBj
YWxsIHRocm91Z2ggdG8KKyAgICAgICAgYSBiYWNrLWVuZCBvcGVuKCkgbWV0aG9kLCBldmVudHVh
bGx5IHJlY2VpdmUgYSBzdWNjZXNzIG1lc3NhZ2Ugd2l0aCBhIGJhY2stZW5kIG9iamVjdAorICAg
ICAgICBoYW5kbGUsIGFuZCAoMikgY2FsbCBpbnRvIHRoZSBiYWNrLWVuZCBvYmplY3QgdG8gcmVn
aXN0ZXIgZnJvbnQtZW5kIGNhbGxiYWNrcy4gVGhpcyBsZWZ0CisgICAgICAgIHRoZSBiYWNrLWVu
ZCdzIG5vdGlvbiBvZiBhbiBvcGVuIGNvbm5lY3Rpb24gaW4gYSBsaW1ibyBzdGF0ZSBiZXR3ZWVu
IHRoZXNlIHR3byBjYWxscy4KKyAgICAgICAgSW4gbXVsdGktcHJvY2VzcyBwb3J0cywgYSBjcmFz
aCBvZiB0aGUgZnJvbnQtZW5kIHByb2Nlc3MgY291bGQgbGVhdmUgdGhlIGJhY2stZW5kIHdlZGdl
ZAorICAgICAgICB3YWl0aW5nIGZvciB0aGlzIHNlY29uZCBjYWxsIChlLmcuIGNhbid0IGRlbGV0
ZSB1bnRpbCBhbGwgY29ubmVjdGlvbnMgYXJlIGNsb3NlZCkuCisKKyAgICAgICAgU2ltcGxpZnkg
dGhpcyBieSBoYXZpbmcgdGhlIGZyb250LWVuZCBwYXNzIHRocm91Z2ggdGhlIGNhbGxiYWNrcyBp
bnRvIHRoZSBiYWNrLWVuZAorICAgICAgICBkdXJpbmcgdGhlIGluaXRpYWwgb3BlbigpIGNhbGws
IHdoaWNoIGVsaW1pbmF0ZXMgdGhlIGxpbWJvIHN0YXRlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0
cyAtIG5vIGZ1bmN0aW9uYWwgY2hhbmdlcy4gQ2hyb21pdW0gcG9ydCdzIHdlYmtpdF91bml0X3Rl
c3RzIHVwZGF0ZWQuCisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZTo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQkRhdGFiYXNlOjpJREJEYXRhYmFzZSk6IERiLWNhbGxiYWNrcyBpcyBhdmFpbGFi
bGUgYXQgY3JlYXRpb24gdGltZS4KKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlOjp+SURC
RGF0YWJhc2UpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmg6Cisg
ICAgICAgIChJREJEYXRhYmFzZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0
YWJhc2VCYWNrZW5kSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tl
bmRJbXBsOjpQZW5kaW5nT3BlbkNhbGw6OmNyZWF0ZSk6IE5lZWQgdG8gdHJhY2sgZGItY2FsbGJh
Y2tzIGFzIHdlbGwuCisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpQ
ZW5kaW5nT3BlbkNhbGw6OmRhdGFiYXNlQ2FsbGJhY2tzKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QkRhdGFiYXNlQmFja2VuZEltcGw6OlBlbmRpbmdPcGVuQ2FsbDo6UGVuZGluZ09wZW5DYWxsKToK
KyAgICAgICAgKElEQkRhdGFiYXNlQmFja2VuZEltcGw6OlBlbmRpbmdPcGVuQ2FsbCk6CisgICAg
ICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpQZW5kaW5nT3BlbldpdGhWZXJz
aW9uQ2FsbDo6Y3JlYXRlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJh
Y2tlbmRJbXBsOjpQZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbDo6ZGF0YWJhc2VDYWxsYmFja3Mp
OgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6UGVuZGluZ09wZW5X
aXRoVmVyc2lvbkNhbGw6OlBlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxsKToKKyAgICAgICAgKElE
QkRhdGFiYXNlQmFja2VuZEltcGw6OlBlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxsKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OklEQkRhdGFiYXNlQmFja2VuZElt
cGwpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6c2V0VmVyc2lv
bik6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpjb25uZWN0aW9u
Q291bnQpOiBEb24ndCBuZWVkIHRvIGNvdW50IGxpbWJvIGNvbm5lY3Rpb25zIGFueSBtb3JlLgor
ICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6cHJvY2Vzc1BlbmRpbmdD
YWxscyk6IFBhc3MgdGhyb3VnaCBkYi1jYWxsYmFja3MuCisgICAgICAgIChXZWJDb3JlOjpJREJE
YXRhYmFzZUJhY2tlbmRJbXBsOjpvcGVuQ29ubmVjdGlvbik6IE5vIG1vcmUgbGltYm8gY29ubmVj
dGlvbnMgKHlheSEpLgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6
cnVuSW50VmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKTogUGFzcyB0aHJvdWdoIGRiLWNhbGxiYWNr
cy4KKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6Om9wZW5Db25uZWN0
aW9uV2l0aFZlcnNpb24pOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFj
a2VuZEltcGw6OmRlbGV0ZURhdGFiYXNlKTogU3R5bGUuCisgICAgICAgIChXZWJDb3JlOjpJREJE
YXRhYmFzZUJhY2tlbmRJbXBsOjpjbG9zZSk6IFJlc29sdmUgRklYTUUgYWJvdXQgY29ubmVjdGlv
bkNvdW50LgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZElt
cGwuaDoKKyAgICAgICAgKElEQkRhdGFiYXNlQmFja2VuZEltcGwpOgorICAgICAgICAqIE1vZHVs
ZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZS5oOgorICAgICAgICAoSURC
RGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9J
REJEYXRhYmFzZUNhbGxiYWNrc0ltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJh
c2VDYWxsYmFja3NJbXBsOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VD
YWxsYmFja3NJbXBsOjpJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCRGF0YWJhc2VDYWxsYmFja3NJbXBsOjpjb25uZWN0KToKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9JREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwuaDoKKyAgICAgICAgKElEQkRhdGFi
YXNlQ2FsbGJhY2tzSW1wbCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9y
eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJGYWN0b3J5OjpvcGVuKTogTWludCB0aGUgZGIt
Y2FsbGJhY2tzIGhlcmUuLi4KKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5
QmFja2VuZEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCRmFjdG9yeUJhY2tlbmRJbXBs
OjpvcGVuKTogLi4ucGFzc2VkIHRocm91Z2ggdG8gaGVyZS4uLgorICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5oOgorICAgICAgICAoSURCRmFjdG9yeUJh
Y2tlbmRJbXBsKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5QmFja2Vu
ZEludGVyZmFjZS5oOgorICAgICAgICAoSURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2UpOgorICAg
ICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQk9wZW5EQlJlcXVlc3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SURCT3BlbkRCUmVxdWVzdDo6Y3JlYXRlKTogLi4uYWxsIHRoZSB3YXkgdG8gaGVy
ZS4uLgorICAgICAgICAoV2ViQ29yZTo6SURCT3BlbkRCUmVxdWVzdDo6SURCT3BlbkRCUmVxdWVz
dCk6CisgICAgICAgIChXZWJDb3JlOjpJREJPcGVuREJSZXF1ZXN0OjpvblVwZ3JhZGVOZWVkZWQp
OiAuLi5hbmQgZmluYWxseSBob29rZWQgdXAgaGVyZS4KKyAgICAgICAgKFdlYkNvcmU6OklEQk9w
ZW5EQlJlcXVlc3Q6Om9uU3VjY2Vzcyk6IChvciBoZXJlLCBpZiBubyB1cGdyYWRlIG5lZWRlZCku
CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCT3BlbkRCUmVxdWVzdC5oOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChJREJPcGVuREJSZXF1ZXN0KToKKyAgICAgICAgKiBNb2R1
bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJU
cmFuc2FjdGlvbjo6b25BYm9ydCk6IFR3ZWFrIGV2ZW50L25vdGlmaWNhdGlvbiBvcmRlcmluZzsg
dGhlCisgICAgICAgIG5vdGlmeWluZyB0aGUgZGF0YWJhc2UgdGhhdCB0aGUgdHJhbnNhY3Rpb24g
aXMgZmluaXNoZWQgbWF5IHVuYmxvY2sgY2xvc2luZywKKyAgICAgICAgd2hpY2ggZmlyZXMgbW9y
ZSBldmVudHMsIGFuZCB0aGUgZGVsaXZlcnkgbWF0dGVycy4gUHJldmlvdXNseSB0aGUgY2xvc2Ug
d291bGQKKyAgICAgICAgYmUgYmxvY2tlZCBieSB0aGUgdHJhbnNhY3Rpb24gd2hpY2ggZ2F2ZSB0
aGUgZGVzaXJlZCBvcmRlci4KKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpvbkNv
bXBsZXRlKTogRGl0dG8uCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFn
ZW50LmNwcDogTmV3IGhvb2t1cCBsb2dpYy4KKyAgICAgICAgKFdlYkNvcmUpOgorCiAyMDEyLTA5
LTA3ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAg
ICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTI3OTIwIGFuZCByMTI3OTI2LgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZwppbmRleCA5MTkyYWNjOWEzYmQ5MzdiOWUwZTUyZmMzNTdmOTBkZGQwMDQy
YjhiLi4zM2I5YjBjY2VlNDgyMDEwMDhiODVlZWQ0ZGUzMzcyZTA1ZmQ4MzEzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDEyLTA5LTA2ICBKb3NodWEgQmVs
bCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBDb25zb2xpZGF0
ZSB0d28tcGhhc2UgY29ubmVjdGlvbiB0byBhdm9pZCByYWNlIGNvbmRpdGlvbnMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkwNDExCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQVBJIHBsdW1iaW5nIGZvciBz
aW1wbGlmaWVkIHNpbmdsZS1waGFzZSBjb25uZWN0aW9uIG9wZW5pbmcsIGFuZCB0ZXN0cyB1cGRh
dGVkCisgICAgICAgIHRvIGV4ZXJjaXNlIHRoZSBuZXcgQVBJcy4KKworICAgICAgICAqIHB1Ymxp
Yy9XZWJJREJEYXRhYmFzZS5oOgorICAgICAgICAoV2ViSURCRGF0YWJhc2UpOiBKdXN0IGEgRklY
TUUgdG8gcmVtb3ZlIHRoZSBvbGQgc2Vjb25kLXBoYXNlIGhvb2t1cCBBUEkuCisgICAgICAgICog
cHVibGljL1dlYklEQkZhY3RvcnkuaDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJJ
REJGYWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCRmFjdG9yeTo6b3Blbik6IE5ldyBv
dmVybG9hZCB0aGF0IHRha2VzIGRiLWNhbGxiYWNrcy4KKyAgICAgICAgKiBzcmMvSURCQ2FsbGJh
Y2tzUHJveHkuY3BwOiBUaGUgZGItY2FsbGJhY2tzIHBsdW1iaW5nIGlzIG5lZWRlZCBlYXJsaWVy
LgorICAgICAgICAoV2ViS2l0OjpJREJDYWxsYmFja3NQcm94eTo6b25TdWNjZXNzKToKKyAgICAg
ICAgKFdlYktpdDo6SURCQ2FsbGJhY2tzUHJveHk6Om9uVXBncmFkZU5lZWRlZCk6CisgICAgICAg
IChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpJREJDYWxsYmFja3NQcm94eTo6c2V0RGF0YWJh
c2VDYWxsYmFja3MpOiBOZWVkcyB0byBob2xkIG9uIHRvCisgICAgICAgIHRoZSBkYi1jYWxsYmFj
a3MgYW5kIGhvb2sgaXQgdXAgd2hlbiB0aGUgb25TdWNjZXNzIGNhbGxiYWNrIGNvbWVzIHRocm91
Z2guCisgICAgICAgICogc3JjL0lEQkNhbGxiYWNrc1Byb3h5Lmg6CisgICAgICAgIChXZWJLaXQp
OgorICAgICAgICAoSURCQ2FsbGJhY2tzUHJveHkpOgorICAgICAgICAqIHNyYy9JREJEYXRhYmFz
ZUJhY2tlbmRQcm94eS5jcHA6CisgICAgICAgICogc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5
Lmg6CisgICAgICAgIChJREJEYXRhYmFzZUJhY2tlbmRQcm94eSk6CisgICAgICAgICogc3JjL0lE
QkZhY3RvcnlCYWNrZW5kUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpJREJGYWN0b3J5QmFj
a2VuZFByb3h5OjpvcGVuKToKKyAgICAgICAgKiBzcmMvSURCRmFjdG9yeUJhY2tlbmRQcm94eS5o
OgorICAgICAgICAoSURCRmFjdG9yeUJhY2tlbmRQcm94eSk6CisgICAgICAgICogc3JjL1dlYklE
QkRhdGFiYXNlSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkRhdGFiYXNlSW1wbDo6
V2ViSURCRGF0YWJhc2VJbXBsKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCRGF0YWJhc2VJbXBs
OjpjbG9zZSk6CisgICAgICAgICogc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5oOgorICAgICAgICAo
V2ViSURCRGF0YWJhc2VJbXBsKToKKyAgICAgICAgKiBzcmMvV2ViSURCRmFjdG9yeUltcGwuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJJREJGYWN0b3J5SW1wbDo6b3Blbik6CisgICAgICAgICog
c3JjL1dlYklEQkZhY3RvcnlJbXBsLmg6CisgICAgICAgIChXZWJJREJGYWN0b3J5SW1wbCk6Cisg
ICAgICAgICogdGVzdHMvSURCQWJvcnRPbkNvcnJ1cHRUZXN0LmNwcDoKKyAgICAgICAgKEZha2VJ
REJEYXRhYmFzZUNhbGxiYWNrcyk6CisgICAgICAgIChXZWJDb3JlOjpGYWtlSURCRGF0YWJhc2VD
YWxsYmFja3M6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpGYWtlSURCRGF0YWJhc2VDYWxs
YmFja3M6On5GYWtlSURCRGF0YWJhc2VDYWxsYmFja3MpOgorICAgICAgICAoV2ViQ29yZTo6RmFr
ZUlEQkRhdGFiYXNlQ2FsbGJhY2tzOjpGYWtlSURCRGF0YWJhc2VDYWxsYmFja3MpOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpURVNUKTogVXBkYXRlZCBjb25uZWN0aW9u
IHNlcXVlbmNlLgorICAgICAgICAqIHRlc3RzL0lEQkRhdGFiYXNlQmFja2VuZFRlc3QuY3BwOiBE
aXR0by4KKwogMjAxMi0wOS0wNyAgRG9taW5pYyBNYXp6b25pICA8ZG1henpvbmlAZ29vZ2xlLmNv
bT4KIAogICAgICAgICBBWDogQ2hyb21pdW0gbmVlZHMgYWNjZXNzIHRvIGNhbnZhc0hhc0ZhbGxi
YWNrQ29udGVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0
YWJhc2UuY3BwCmluZGV4IGIzZjcwYWRkMjkzMmNlMTU5N2VjYTA1NWFlZDFlZWYwNzBjZDVkYTcu
LmQ2NDFkMDRhNDM2ZTFmZmY1ZjY0MTg0ZmQ4MzQyZjQyZDVjMDM3NDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHAKQEAgLTMxLDcgKzMx
LDcgQEAKICNpbmNsdWRlICJFdmVudFF1ZXVlLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5o
IgogI2luY2x1ZGUgIklEQkFueS5oIgotI2luY2x1ZGUgIklEQkRhdGFiYXNlQ2FsbGJhY2tzSW1w
bC5oIgorI2luY2x1ZGUgIklEQkRhdGFiYXNlQ2FsbGJhY2tzLmgiCiAjaW5jbHVkZSAiSURCRGF0
YWJhc2VFcnJvci5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNlRXhjZXB0aW9uLmgiCiAjaW5jbHVk
ZSAiSURCRXZlbnREaXNwYXRjaGVyLmgiCkBAIC01MCwyOSArNTAsMjggQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1QYXNzUmVmUHRyPElEQkRhdGFiYXNlPiBJREJEYXRhYmFzZTo6Y3JlYXRl
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VC
YWNrZW5kSW50ZXJmYWNlPiBkYXRhYmFzZSkKK1Bhc3NSZWZQdHI8SURCRGF0YWJhc2U+IElEQkRh
dGFiYXNlOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0
cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+IGRhdGFiYXNlLCBQYXNzUmVmUHRyPElEQkRh
dGFiYXNlQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiB7Ci0gICAgUmVmUHRyPElEQkRhdGFiYXNlPiBp
ZGJEYXRhYmFzZShhZG9wdFJlZihuZXcgSURCRGF0YWJhc2UoY29udGV4dCwgZGF0YWJhc2UpKSk7
CisgICAgUmVmUHRyPElEQkRhdGFiYXNlPiBpZGJEYXRhYmFzZShhZG9wdFJlZihuZXcgSURCRGF0
YWJhc2UoY29udGV4dCwgZGF0YWJhc2UsIGNhbGxiYWNrcykpKTsKICAgICBpZGJEYXRhYmFzZS0+
c3VzcGVuZElmTmVlZGVkKCk7CiAgICAgcmV0dXJuIGlkYkRhdGFiYXNlLnJlbGVhc2UoKTsKIH0K
IAotSURCRGF0YWJhc2U6OklEQkRhdGFiYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiBiYWNrZW5kKQorSURC
RGF0YWJhc2U6OklEQkRhdGFiYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBh
c3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiBiYWNrZW5kLCBQYXNzUmVmUHRy
PElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiAgICAgOiBBY3RpdmVET01PYmplY3Qo
Y29udGV4dCwgdGhpcykKICAgICAsIG1fYmFja2VuZChiYWNrZW5kKQogICAgICwgbV9jbG9zZVBl
bmRpbmcoZmFsc2UpCiAgICAgLCBtX2NvbnRleHRTdG9wcGVkKGZhbHNlKQorICAgICwgbV9kYXRh
YmFzZUNhbGxiYWNrcyhjYWxsYmFja3MpCiB7CiAgICAgLy8gV2UgcGFzcyBhIHJlZmVyZW5jZSBv
ZiB0aGlzIG9iamVjdCBiZWZvcmUgaXQgY2FuIGJlIGFkb3B0ZWQuCiAgICAgcmVsYXhBZG9wdGlv
blJlcXVpcmVtZW50KCk7Ci0gICAgbV9kYXRhYmFzZUNhbGxiYWNrcyA9IElEQkRhdGFiYXNlQ2Fs
bGJhY2tzSW1wbDo6Y3JlYXRlKHRoaXMpOwogICAgIG1fbWV0YWRhdGEgPSBtX2JhY2tlbmQtPm1l
dGFkYXRhKCk7CiB9CiAKIElEQkRhdGFiYXNlOjp+SURCRGF0YWJhc2UoKQogewogICAgIGNsb3Nl
KCk7Ci0gICAgbV9kYXRhYmFzZUNhbGxiYWNrcy0+dW5yZWdpc3RlckRhdGFiYXNlKHRoaXMpOwog
fQogCiB2b2lkIElEQkRhdGFiYXNlOjp0cmFuc2FjdGlvbkNyZWF0ZWQoSURCVHJhbnNhY3Rpb24q
IHRyYW5zYWN0aW9uKQpAQCAtMzM1LDEyICszMzQsNiBAQCB2b2lkIElEQkRhdGFiYXNlOjpvblZl
cnNpb25DaGFuZ2UoY29uc3QgU3RyaW5nJiB2ZXJzaW9uKQogICAgIGVucXVldWVFdmVudChJREJW
ZXJzaW9uQ2hhbmdlRXZlbnQ6OmNyZWF0ZSh2ZXJzaW9uLCBldmVudE5hbWVzKCkudmVyc2lvbmNo
YW5nZUV2ZW50KSk7CiB9CiAKLXZvaWQgSURCRGF0YWJhc2U6OnJlZ2lzdGVyRnJvbnRlbmRDYWxs
YmFja3MoKQotewotICAgIEFTU0VSVChtX2JhY2tlbmQpOwotICAgIG1fYmFja2VuZC0+cmVnaXN0
ZXJGcm9udGVuZENhbGxiYWNrcyhtX2RhdGFiYXNlQ2FsbGJhY2tzKTsKLX0KLQogdm9pZCBJREJE
YXRhYmFzZTo6ZW5xdWV1ZUV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50KQogewogICAgIEFT
U0VSVCghbV9jb250ZXh0U3RvcHBlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCRGF0YWJhc2UuaAppbmRleCAyN2YwM2I2ZTM1NDhhODAwZjQxYTNmYWU1ODYwMTc5
Yzg3ZmQ3MmNkLi42NDk5MjRhYjY2MmQ5OTQ1Yzc4ZTIzMmViYjQzNjkwNDU2OTMyNTBiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmgKQEAgLTUx
LDcgKzUxLDcgQEAgdHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKIAogY2xhc3MgSURCRGF0YWJh
c2UgOiBwdWJsaWMgUmVmQ291bnRlZDxJREJEYXRhYmFzZT4sIHB1YmxpYyBFdmVudFRhcmdldCwg
cHVibGljIEFjdGl2ZURPTU9iamVjdCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8
SURCRGF0YWJhc2U+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJ
REJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+KTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJE
YXRhYmFzZT4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQkRh
dGFiYXNlQmFja2VuZEludGVyZmFjZT4sIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+
KTsKICAgICB+SURCRGF0YWJhc2UoKTsKIAogICAgIHZvaWQgdHJhbnNhY3Rpb25DcmVhdGVkKElE
QlRyYW5zYWN0aW9uKik7CkBAIC04OSw3ICs4OSw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdDsKIAog
ICAgIHZvaWQgZm9yY2VDbG9zZSgpOwotICAgIHZvaWQgcmVnaXN0ZXJGcm9udGVuZENhbGxiYWNr
cygpOwogICAgIGNvbnN0IElEQkRhdGFiYXNlTWV0YWRhdGEgbWV0YWRhdGEoKSBjb25zdCB7IHJl
dHVybiBtX21ldGFkYXRhOyB9CiAgICAgdm9pZCBlbnF1ZXVlRXZlbnQoUGFzc1JlZlB0cjxFdmVu
dD4pOwogICAgIGJvb2wgZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBldmVudCwgRXhj
ZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJuIEV2ZW50VGFyZ2V0OjpkaXNwYXRjaEV2ZW50KGV2ZW50
LCBlYyk7IH0KQEAgLTk5LDcgKzk4LDcgQEAgcHVibGljOgogICAgIHVzaW5nIFJlZkNvdW50ZWQ8
SURCRGF0YWJhc2U+OjpkZXJlZjsKIAogcHJpdmF0ZToKLSAgICBJREJEYXRhYmFzZShTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+
KTsKKyAgICBJREJEYXRhYmFzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJ
REJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJh
Y2tzPik7CiAKICAgICAvLyBFdmVudFRhcmdldAogICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRh
cmdldCgpIHsgcmVmKCk7IH0KQEAgLTEyMyw3ICsxMjIsNyBAQCBwcml2YXRlOgogICAgIC8vIGRh
dGFiYXNlIHNvIHRoYXQgd2UgY2FuIGNhbmNlbCB0aGVtIGlmIHRoZSBkYXRhYmFzZSBjbG9zZXMu
CiAgICAgVmVjdG9yPFJlZlB0cjxFdmVudD4gPiBtX2VucXVldWVkRXZlbnRzOwogCi0gICAgUmVm
UHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbD4gbV9kYXRhYmFzZUNhbGxiYWNrczsKKyAgICBS
ZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IG1fZGF0YWJhc2VDYWxsYmFja3M7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3BwCmluZGV4IDgxMTBjMjRj
MTNiM2M0NjNlZTM3YjIwZDRjZmZhNzEyNDI0NGI2MzkuLmJmYjJhZTI2NzYxNWQ2Mzg1MjNjMGRl
MmJlZWU0NWRjNTJmYTM0NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3BwCkBAIC00MSwzNyArNDEs
NDMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJREJEYXRhYmFzZUJhY2tlbmRJbXBs
OjpQZW5kaW5nT3BlbkNhbGwgOiBwdWJsaWMgUmVmQ291bnRlZDxQZW5kaW5nT3BlbkNhbGw+IHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxQZW5kaW5nT3BlbkNhbGw+IGNyZWF0ZShQ
YXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQorICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFBlbmRpbmdPcGVuQ2FsbD4gY3JlYXRlKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFj
a3MsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IGRhdGFiYXNlQ2FsbGJhY2tzKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQZW5kaW5nT3BlbkNhbGwoY2FsbGJh
Y2tzKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgUGVuZGluZ09wZW5DYWxsKGNhbGxi
YWNrcywgZGF0YWJhc2VDYWxsYmFja3MpKTsKICAgICB9CiAgICAgUGFzc1JlZlB0cjxJREJDYWxs
YmFja3M+IGNhbGxiYWNrcygpIHsgcmV0dXJuIG1fY2FsbGJhY2tzOyB9CisgICAgUGFzc1JlZlB0
cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gZGF0YWJhc2VDYWxsYmFja3MoKSB7IHJldHVybiBtX2Rh
dGFiYXNlQ2FsbGJhY2tzOyB9CiAKIHByaXZhdGU6Ci0gICAgUGVuZGluZ09wZW5DYWxsKFBhc3NS
ZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCisgICAgUGVuZGluZ09wZW5DYWxsKFBhc3NS
ZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxs
YmFja3M+IGRhdGFiYXNlQ2FsbGJhY2tzKQogICAgICAgICA6IG1fY2FsbGJhY2tzKGNhbGxiYWNr
cykKKyAgICAgICAgLCBtX2RhdGFiYXNlQ2FsbGJhY2tzKGRhdGFiYXNlQ2FsbGJhY2tzKQogICAg
IHsKICAgICB9CiAKICAgICBSZWZQdHI8SURCQ2FsbGJhY2tzPiBtX2NhbGxiYWNrczsKKyAgICBS
ZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IG1fZGF0YWJhc2VDYWxsYmFja3M7CiB9OwogCiBj
bGFzcyBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpQZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbCA6
IHB1YmxpYyBSZWZDb3VudGVkPFBlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxsPiB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8UGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGw+IGNyZWF0
ZShQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBpbnQ2NF90IHZlcnNpb24pCisg
ICAgc3RhdGljIFBhc3NSZWZQdHI8UGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGw+IGNyZWF0ZShQ
YXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNl
Q2FsbGJhY2tzPiBkYXRhYmFzZUNhbGxiYWNrcywgaW50NjRfdCB2ZXJzaW9uKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbChjYWxs
YmFja3MsIHZlcnNpb24pKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQZW5kaW5nT3Bl
bldpdGhWZXJzaW9uQ2FsbChjYWxsYmFja3MsIGRhdGFiYXNlQ2FsbGJhY2tzLCB2ZXJzaW9uKSk7
CiAgICAgfQogICAgIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MoKSB7IHJldHVy
biBtX2NhbGxiYWNrczsgfQorICAgIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IGRh
dGFiYXNlQ2FsbGJhY2tzKCkgeyByZXR1cm4gbV9kYXRhYmFzZUNhbGxiYWNrczsgfQogICAgIGlu
dDY0X3QgdmVyc2lvbigpIHsgcmV0dXJuIG1fdmVyc2lvbjsgfQogCiBwcml2YXRlOgotICAgIFBl
bmRpbmdPcGVuV2l0aFZlcnNpb25DYWxsKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFj
a3MsIGludDY0X3QgdmVyc2lvbikKKyAgICBQZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbChQYXNz
UmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2Fs
bGJhY2tzPiBkYXRhYmFzZUNhbGxiYWNrcywgaW50NjRfdCB2ZXJzaW9uKQogICAgICAgICA6IG1f
Y2FsbGJhY2tzKGNhbGxiYWNrcykKKyAgICAgICAgLCBtX2RhdGFiYXNlQ2FsbGJhY2tzKGRhdGFi
YXNlQ2FsbGJhY2tzKQogICAgICAgICAsIG1fdmVyc2lvbih2ZXJzaW9uKQogICAgIHsKICAgICB9
CiAgICAgUmVmUHRyPElEQkNhbGxiYWNrcz4gbV9jYWxsYmFja3M7CisgICAgUmVmUHRyPElEQkRh
dGFiYXNlQ2FsbGJhY2tzPiBtX2RhdGFiYXNlQ2FsbGJhY2tzOwogICAgIGludDY0X3QgbV92ZXJz
aW9uOwogfTsKIApAQCAtMTMwLDcgKzEzNiw2IEBAIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OklE
QkRhdGFiYXNlQmFja2VuZEltcGwoY29uc3QgU3RyaW5nJiBuYW1lLCBJREJCYWNraW5nU3RvCiAg
ICAgLCBtX2lkZW50aWZpZXIodW5pcXVlSWRlbnRpZmllcikKICAgICAsIG1fZmFjdG9yeShmYWN0
b3J5KQogICAgICwgbV90cmFuc2FjdGlvbkNvb3JkaW5hdG9yKGNvb3JkaW5hdG9yKQotICAgICwg
bV9wZW5kaW5nQ29ubmVjdGlvbkNvdW50KDApCiB7CiAgICAgQVNTRVJUKCFtX25hbWUuaXNOdWxs
KCkpOwogfQpAQCAtMjQwLDYgKzI0NSw3IEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6
c2V0VmVyc2lvbihjb25zdCBTdHJpbmcmIHZlcnNpb24sIFBhc3NSZWZQdHI8SURCQ2FsCiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAgICAgZm9yIChEYXRhYmFzZUNhbGxiYWNrc1NldDo6Y29uc3Rf
aXRlcmF0b3IgaXQgPSBtX2RhdGFiYXNlQ2FsbGJhY2tzU2V0LmJlZ2luKCk7IGl0ICE9IG1fZGF0
YWJhc2VDYWxsYmFja3NTZXQuZW5kKCk7ICsraXQpIHsKKyAgICAgICAgLy8gRnJvbnQgZW5kIGVu
c3VyZXMgdGhlIGV2ZW50IGlzIG5vdCBmaXJlZCBhdCBjb25uZWN0aW9ucyB0aGF0IGhhdmUgY2xv
c2VQZW5kaW5nIHNldC4KICAgICAgICAgaWYgKCppdCAhPSBkYXRhYmFzZUNhbGxiYWNrcykKICAg
ICAgICAgICAgICgqaXQpLT5vblZlcnNpb25DaGFuZ2UodmVyc2lvbik7CiAgICAgfQpAQCAtMzQy
LDkgKzM0OCwxMCBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OnRyYW5zYWN0aW9uRmlu
aXNoZWRBbmRDb21wbGV0ZUZpcmVkKFBhc3NSZWZQdHI8SURCVAogICAgICAgICBwcm9jZXNzUGVu
ZGluZ0NhbGxzKCk7CiB9CiAKLWludDMyX3QgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6Y29ubmVj
dGlvbkNvdW50KCkKK3NpemVfdCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpjb25uZWN0aW9uQ291
bnQoKQogewotICAgIHJldHVybiBtX2RhdGFiYXNlQ2FsbGJhY2tzU2V0LnNpemUoKSArIG1fcGVu
ZGluZ0Nvbm5lY3Rpb25Db3VudDsKKyAgICAvLyBUaGlzIGRvZXMgbm90IGluY2x1ZGUgcGVuZGlu
ZyBvcGVuIGNhbGxzLCBhcyB0aG9zZSBzaG91bGQgbm90IGJsb2NrIHZlcnNpb24gY2hhbmdlcyBh
bmQgZGVsZXRlcy4KKyAgICByZXR1cm4gbV9kYXRhYmFzZUNhbGxiYWNrc1NldC5zaXplKCk7CiB9
CiAKIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6cHJvY2Vzc1BlbmRpbmdDYWxscygpCkBA
IC0zNTUsOSArMzYyLDggQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpwcm9jZXNzUGVu
ZGluZ0NhbGxzKCkKICAgICAgICAgUmVmUHRyPFBlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxsPiBw
ZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbCA9IG1fcGVuZGluZ1NlY29uZEhhbGZPcGVuV2l0aFZl
cnNpb25DYWxscy50YWtlRmlyc3QoKTsKICAgICAgICAgQVNTRVJUKHBlbmRpbmdPcGVuV2l0aFZl
cnNpb25DYWxsLT52ZXJzaW9uKCkgPT0gbV9pbnRWZXJzaW9uKTsKICAgICAgICAgQVNTRVJUKG1f
aWQgIT0gSW52YWxpZElkKTsKLSAgICAgICAgKyttX3BlbmRpbmdDb25uZWN0aW9uQ291bnQ7CiAg
ICAgICAgIHBlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxsLT5jYWxsYmFja3MoKS0+b25TdWNjZXNz
KHRoaXMpOwotICAgICAgICByZXR1cm47CisgICAgICAgIC8vIEZhbGwgdGhyb3VnaCB3aGVuIGNv
bXBsZXRlLCBhcyBwZW5kaW5nIGRlbGV0ZXMgbWF5IGJlIChwYXJ0aWFsbHkpIHVuYmxvY2tlZC4K
ICAgICB9CiAKICAgICAvLyBQZW5kaW5nIGNhbGxzIG1heSBiZSByZXF1ZXVlZCBvciBhYm9ydGVk
CkBAIC00MDAsNyArNDA2LDcgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpwcm9jZXNz
UGVuZGluZ0NhbGxzKCkKICAgICBtX3BlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxscy5zd2FwKHBl
bmRpbmdPcGVuV2l0aFZlcnNpb25DYWxscyk7CiAgICAgd2hpbGUgKCFwZW5kaW5nT3BlbldpdGhW
ZXJzaW9uQ2FsbHMuaXNFbXB0eSgpKSB7CiAgICAgICAgIFJlZlB0cjxQZW5kaW5nT3BlbldpdGhW
ZXJzaW9uQ2FsbD4gcGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGwgPSBwZW5kaW5nT3BlbldpdGhW
ZXJzaW9uQ2FsbHMudGFrZUZpcnN0KCk7Ci0gICAgICAgIG9wZW5Db25uZWN0aW9uV2l0aFZlcnNp
b24ocGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGwtPmNhbGxiYWNrcygpLCBwZW5kaW5nT3Blbldp
dGhWZXJzaW9uQ2FsbC0+dmVyc2lvbigpKTsKKyAgICAgICAgb3BlbkNvbm5lY3Rpb25XaXRoVmVy
c2lvbihwZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbC0+Y2FsbGJhY2tzKCksIHBlbmRpbmdPcGVu
V2l0aFZlcnNpb25DYWxsLT5kYXRhYmFzZUNhbGxiYWNrcygpLCBwZW5kaW5nT3BlbldpdGhWZXJz
aW9uQ2FsbC0+dmVyc2lvbigpKTsKICAgICB9CiAKICAgICAvLyBHaXZlbiB0aGUgY2hlY2sgYWJv
dmUsIGl0IGFwcGVhcnMgdGhhdCBjYWxscyBjYW5ub3QgYmUgcmVxdWV1ZWQgYnkKQEAgLTQwOSw3
ICs0MTUsNyBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OnByb2Nlc3NQZW5kaW5nQ2Fs
bHMoKQogICAgIG1fcGVuZGluZ09wZW5DYWxscy5zd2FwKHBlbmRpbmdPcGVuQ2FsbHMpOwogICAg
IHdoaWxlICghcGVuZGluZ09wZW5DYWxscy5pc0VtcHR5KCkpIHsKICAgICAgICAgUmVmUHRyPFBl
bmRpbmdPcGVuQ2FsbD4gcGVuZGluZ09wZW5DYWxsID0gcGVuZGluZ09wZW5DYWxscy50YWtlRmly
c3QoKTsKLSAgICAgICAgb3BlbkNvbm5lY3Rpb24ocGVuZGluZ09wZW5DYWxsLT5jYWxsYmFja3Mo
KSk7CisgICAgICAgIG9wZW5Db25uZWN0aW9uKHBlbmRpbmdPcGVuQ2FsbC0+Y2FsbGJhY2tzKCks
IHBlbmRpbmdPcGVuQ2FsbC0+ZGF0YWJhc2VDYWxsYmFja3MoKSk7CiAgICAgfQogICAgIEFTU0VS
VChtX3BlbmRpbmdPcGVuQ2FsbHMuaXNFbXB0eSgpKTsKIH0KQEAgLTQyOCw0NCArNDM0LDMwIEBA
IFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiBJREJEYXRhYmFzZUJh
Y2tlbmRJbXBsOjp0cmFuc2FjdGlvbihECiAgICAgcmV0dXJuIHRyYW5zYWN0aW9uLnJlbGVhc2Uo
KTsKIH0KIAotdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpyZWdpc3RlckZyb250ZW5kQ2Fs
bGJhY2tzKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IGNhbGxiYWNrcykKLXsKLSAg
ICBBU1NFUlQobV9iYWNraW5nU3RvcmUuZ2V0KCkpOwotICAgIEFTU0VSVChtX3BlbmRpbmdDb25u
ZWN0aW9uQ291bnQpOwotICAgIC0tbV9wZW5kaW5nQ29ubmVjdGlvbkNvdW50OwotICAgIG1fZGF0
YWJhc2VDYWxsYmFja3NTZXQuYWRkKFJlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4oY2FsbGJh
Y2tzKSk7Ci0gICAgLy8gV2UgZ2l2ZSBtYXggcHJpb3JpdHkgdG8gb3BlbiBjYWxscyB0aGF0IGZv
bGxvdyB1cGdyYWRlbmVlZGVkCi0gICAgLy8gZXZlbnRzOyB0cmlnZ2VyIHRoZSByZXN0IG9mIHRo
ZSBxdWV1ZXMgdG8gYmUgc2VydmljZWQgd2hlbiB0aG9zZSBvcGVuCi0gICAgLy8gY2FsbHMgYXJl
IGZpbmlzaGVkLgotICAgIHByb2Nlc3NQZW5kaW5nQ2FsbHMoKTsKLX0KLQotdm9pZCBJREJEYXRh
YmFzZUJhY2tlbmRJbXBsOjpvcGVuQ29ubmVjdGlvbihQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4g
Y2FsbGJhY2tzKQordm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpvcGVuQ29ubmVjdGlvbihQ
YXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNl
Q2FsbGJhY2tzPiBkYXRhYmFzZUNhbGxiYWNrcykKIHsKICAgICBBU1NFUlQobV9iYWNraW5nU3Rv
cmUuZ2V0KCkpOwogICAgIGlmICghbV9wZW5kaW5nRGVsZXRlQ2FsbHMuaXNFbXB0eSgpIHx8IG1f
cnVubmluZ1ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbiB8fCAhbV9wZW5kaW5nU2V0VmVyc2lvbkNh
bGxzLmlzRW1wdHkoKSkKLSAgICAgICAgbV9wZW5kaW5nT3BlbkNhbGxzLmFwcGVuZChQZW5kaW5n
T3BlbkNhbGw6OmNyZWF0ZShjYWxsYmFja3MpKTsKKyAgICAgICAgbV9wZW5kaW5nT3BlbkNhbGxz
LmFwcGVuZChQZW5kaW5nT3BlbkNhbGw6OmNyZWF0ZShjYWxsYmFja3MsIGRhdGFiYXNlQ2FsbGJh
Y2tzKSk7CiAgICAgZWxzZSB7CiAgICAgICAgIGlmIChtX2lkID09IEludmFsaWRJZCAmJiAhb3Bl
bkludGVybmFsKCkpCiAgICAgICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VF
cnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVTktOT1dOX0VSUiwgIkludGVybmFs
IGVycm9yLiIpKTsKICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICArK21fcGVuZGluZ0Nvbm5l
Y3Rpb25Db3VudDsKKyAgICAgICAgICAgIG1fZGF0YWJhc2VDYWxsYmFja3NTZXQuYWRkKFJlZlB0
cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4oZGF0YWJhc2VDYWxsYmFja3MpKTsKICAgICAgICAgICAg
IGNhbGxiYWNrcy0+b25TdWNjZXNzKHRoaXMpOwogICAgICAgICB9CiAgICAgfQogfQogCi12b2lk
IElEQkRhdGFiYXNlQmFja2VuZEltcGw6OnJ1bkludFZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbihp
bnQ2NF90IHJlcXVlc3RlZFZlcnNpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxs
YmFja3MpCit2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OnJ1bkludFZlcnNpb25DaGFuZ2VU
cmFuc2FjdGlvbihpbnQ2NF90IHJlcXVlc3RlZFZlcnNpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJh
Y2tzPiBwcnBDYWxsYmFja3MsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IHBycERh
dGFiYXNlQ2FsbGJhY2tzKQogewogICAgIFJlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcyA9
IHBycENhbGxiYWNrczsKKyAgICBSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IGRhdGFiYXNl
Q2FsbGJhY2tzID0gcHJwRGF0YWJhc2VDYWxsYmFja3M7CiAgICAgQVNTRVJUKGNhbGxiYWNrcyk7
CiAgICAgZm9yIChEYXRhYmFzZUNhbGxiYWNrc1NldDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX2Rh
dGFiYXNlQ2FsbGJhY2tzU2V0LmJlZ2luKCk7IGl0ICE9IG1fZGF0YWJhc2VDYWxsYmFja3NTZXQu
ZW5kKCk7ICsraXQpIHsKLSAgICAgICAgLy8gTm90ZSB0aGF0IHNvbWUgY29ubmVjdGlvbnMgbWln
aHQgY2xvc2UgaW4gdGhlIHZlcnNpb25jaGFuZ2UgZXZlbnQKLSAgICAgICAgLy8gaGFuZGxlciBm
b3Igc29tZSBvdGhlciBjb25uZWN0aW9uLCBhZnRlciB3aGljaCBpdHMgb3duIHZlcnNpb25jaGFu
Z2UKLSAgICAgICAgLy8gZXZlbnQgc2hvdWxkIG5vdCBiZSBmaXJlZC4gVGhlIGJhY2tlbmQgZG9l
c24ndCB3b3JyeSBhYm91dCB0aGlzLCB3ZQotICAgICAgICAvLyBqdXN0IHF1ZXVlIHVwIGEgdmVy
c2lvbiBjaGFuZ2UgZXZlbnQgZm9yIGV2ZXJ5IGNvbm5lY3Rpb24uIFRoZQotICAgICAgICAvLyBm
cm9udGVuZCB0YWtlcyBjYXJlIHRvIG9ubHkgZGlzcGF0Y2ggdG8gb3BlbiBjb25uZWN0aW9ucy4K
LSAgICAgICAgKCppdCktPm9uVmVyc2lvbkNoYW5nZShtX2ludFZlcnNpb24sIHJlcXVlc3RlZFZl
cnNpb24pOworICAgICAgICAvLyBGcm9udCBlbmQgZW5zdXJlcyB0aGUgZXZlbnQgaXMgbm90IGZp
cmVkIGF0IGNvbm5lY3Rpb25zIHRoYXQgaGF2ZSBjbG9zZVBlbmRpbmcgc2V0LgorICAgICAgICBp
ZiAoKml0ICE9IGRhdGFiYXNlQ2FsbGJhY2tzKQorICAgICAgICAgICAgKCppdCktPm9uVmVyc2lv
bkNoYW5nZShtX2ludFZlcnNpb24sIHJlcXVlc3RlZFZlcnNpb24pOwogICAgIH0KICAgICAvLyBU
aGUgc3BlYyBkaWN0YXRlcyB3ZSB3YWl0IHVudGlsIGFsbCB0aGUgdmVyc2lvbiBjaGFuZ2UgZXZl
bnRzIGFyZQogICAgIC8vIGRlbGl2ZXJlZCBhbmQgdGhlbiBjaGVjayBtX2RhdGFiYXNlQ2FsbGJh
Y2tzLmVtcHR5KCkgYmVmb3JlIHByb2NlZWRpbmcKQEAgLTQ3NCwxMSArNDY2LDExIEBAIHZvaWQg
SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6cnVuSW50VmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKGlu
dDY0X3QgcmVxdWVzdGVkVmVyCiAgICAgLy8gRklYTUU6IFJlbW92ZSB0aGUgY2FsbCB0byBvbkJs
b2NrZWQgYW5kIGluc3RlYWQgd2FpdCB1bnRpbCB0aGUgZnJvbnRlbmQKICAgICAvLyB0ZWxscyB1
cyB0aGF0IGFsbCB0aGUgYmxvY2tlZCBldmVudHMgaGF2ZSBiZWVuIGRlbGl2ZXJlZC4gU2VlCiAg
ICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxMTMwCi0gICAg
aWYgKGNvbm5lY3Rpb25Db3VudCgpID4gMCkKKyAgICBpZiAoY29ubmVjdGlvbkNvdW50KCkpCiAg
ICAgICAgIGNhbGxiYWNrcy0+b25CbG9ja2VkKG1faW50VmVyc2lvbik7CiAgICAgLy8gRklYTUU6
IEFkZCB0ZXN0IGZvciBtX3J1bm5pbmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24uCi0gICAgaWYg
KG1fcnVubmluZ1ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbiB8fCBjb25uZWN0aW9uQ291bnQoKSA+
IDApIHsKLSAgICAgICAgbV9wZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbHMuYXBwZW5kKFBlbmRp
bmdPcGVuV2l0aFZlcnNpb25DYWxsOjpjcmVhdGUoY2FsbGJhY2tzLCByZXF1ZXN0ZWRWZXJzaW9u
KSk7CisgICAgaWYgKG1fcnVubmluZ1ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbiB8fCBjb25uZWN0
aW9uQ291bnQoKSkgeworICAgICAgICBtX3BlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxscy5hcHBl
bmQoUGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGw6OmNyZWF0ZShjYWxsYmFja3MsIGRhdGFiYXNl
Q2FsbGJhY2tzLCByZXF1ZXN0ZWRWZXJzaW9uKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
QEAgLTQ5NywxNCArNDg5LDE2IEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6cnVuSW50
VmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKGludDY0X3QgcmVxdWVzdGVkVmVyCiAgICAgICAgIGVj
ID0gSURCRGF0YWJhc2VFeGNlcHRpb246OlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUjsKICAgICB9
CiAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghbV9wZW5kaW5nU2Vjb25kSGFsZk9wZW5XaXRoVmVy
c2lvbkNhbGxzLnNpemUoKSwgIm1fcGVuZGluZ1NlY29uZEhhbGZPcGVuV2l0aFZlcnNpb25DYWxs
cy5zaXplID0gJXp1IiwgbV9wZW5kaW5nU2Vjb25kSGFsZk9wZW5XaXRoVmVyc2lvbkNhbGxzLnNp
emUoKSk7Ci0gICAgbV9wZW5kaW5nU2Vjb25kSGFsZk9wZW5XaXRoVmVyc2lvbkNhbGxzLmFwcGVu
ZChQZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbDo6Y3JlYXRlKGNhbGxiYWNrcywgcmVxdWVzdGVk
VmVyc2lvbikpOworICAgIG1fcGVuZGluZ1NlY29uZEhhbGZPcGVuV2l0aFZlcnNpb25DYWxscy5h
cHBlbmQoUGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGw6OmNyZWF0ZShjYWxsYmFja3MsIGRhdGFi
YXNlQ2FsbGJhY2tzLCByZXF1ZXN0ZWRWZXJzaW9uKSk7CisgICAgbV9kYXRhYmFzZUNhbGxiYWNr
c1NldC5hZGQoZGF0YWJhc2VDYWxsYmFja3MpOwogfQogCi12b2lkIElEQkRhdGFiYXNlQmFja2Vu
ZEltcGw6Om9wZW5Db25uZWN0aW9uV2l0aFZlcnNpb24oUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+
IHBycENhbGxiYWNrcywgaW50NjRfdCB2ZXJzaW9uKQordm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJ
bXBsOjpvcGVuQ29ubmVjdGlvbldpdGhWZXJzaW9uKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBw
cnBDYWxsYmFja3MsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IHBycERhdGFiYXNl
Q2FsbGJhY2tzLCBpbnQ2NF90IHZlcnNpb24pCiB7CiAgICAgUmVmUHRyPElEQkNhbGxiYWNrcz4g
Y2FsbGJhY2tzID0gcHJwQ2FsbGJhY2tzOworICAgIFJlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNr
cz4gZGF0YWJhc2VDYWxsYmFja3MgPSBwcnBEYXRhYmFzZUNhbGxiYWNrczsKICAgICBpZiAoIW1f
cGVuZGluZ0RlbGV0ZUNhbGxzLmlzRW1wdHkoKSB8fCBtX3J1bm5pbmdWZXJzaW9uQ2hhbmdlVHJh
bnNhY3Rpb24gfHwgIW1fcGVuZGluZ1NldFZlcnNpb25DYWxscy5pc0VtcHR5KCkpIHsKLSAgICAg
ICAgbV9wZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbHMuYXBwZW5kKFBlbmRpbmdPcGVuV2l0aFZl
cnNpb25DYWxsOjpjcmVhdGUoY2FsbGJhY2tzLCB2ZXJzaW9uKSk7CisgICAgICAgIG1fcGVuZGlu
Z09wZW5XaXRoVmVyc2lvbkNhbGxzLmFwcGVuZChQZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbDo6
Y3JlYXRlKGNhbGxiYWNrcywgZGF0YWJhc2VDYWxsYmFja3MsIHZlcnNpb24pKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KICAgICBpZiAobV9pZCA9PSBJbnZhbGlkSWQpIHsKQEAgLTUxNiw3ICs1
MTAsNyBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6Om9wZW5Db25uZWN0aW9uV2l0aFZl
cnNpb24oUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+CiAgICAgICAgIH0KICAgICB9CiAgICAgaWYg
KHZlcnNpb24gPiBtX2ludFZlcnNpb24pIHsKLSAgICAgICAgcnVuSW50VmVyc2lvbkNoYW5nZVRy
YW5zYWN0aW9uKHZlcnNpb24sIGNhbGxiYWNrcyk7CisgICAgICAgIHJ1bkludFZlcnNpb25DaGFu
Z2VUcmFuc2FjdGlvbih2ZXJzaW9uLCBjYWxsYmFja3MsIGRhdGFiYXNlQ2FsbGJhY2tzKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAodmVyc2lvbiA8IG1faW50VmVyc2lvbikgewpA
QCAtNTI0LDcgKzUxOCw3IEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6b3BlbkNvbm5l
Y3Rpb25XaXRoVmVyc2lvbihQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4KICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICBBU1NFUlQodmVyc2lvbiA9PSBtX2ludFZlcnNpb24pOwotICAgICsrbV9w
ZW5kaW5nQ29ubmVjdGlvbkNvdW50OworICAgIG1fZGF0YWJhc2VDYWxsYmFja3NTZXQuYWRkKGRh
dGFiYXNlQ2FsbGJhY2tzKTsKICAgICBjYWxsYmFja3MtPm9uU3VjY2Vzcyh0aGlzKTsKIH0KIApA
QCAtNTM1LDE1ICs1MjksMTQgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpkZWxldGVE
YXRhYmFzZShQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJhY2sKICAgICAgICAgcmV0
dXJuOwogICAgIH0KICAgICBSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MgPSBwcnBDYWxs
YmFja3M7Ci0gICAgLy8gRklYTUU6IE9ubHkgZmlyZSBvblZlcnNpb25DaGFuZ2UgaWYgdGhlcmUg
dGhlIGNvbm5lY3Rpb24gaXNuJ3QgaW4KLSAgICAvLyB0aGUgcHJvY2VzcyBvZiBjbG9zaW5nLgot
ICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTEyOQotICAg
IGZvciAoRGF0YWJhc2VDYWxsYmFja3NTZXQ6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9kYXRhYmFz
ZUNhbGxiYWNrc1NldC5iZWdpbigpOyBpdCAhPSBtX2RhdGFiYXNlQ2FsbGJhY2tzU2V0LmVuZCgp
OyArK2l0KQorICAgIGZvciAoRGF0YWJhc2VDYWxsYmFja3NTZXQ6OmNvbnN0X2l0ZXJhdG9yIGl0
ID0gbV9kYXRhYmFzZUNhbGxiYWNrc1NldC5iZWdpbigpOyBpdCAhPSBtX2RhdGFiYXNlQ2FsbGJh
Y2tzU2V0LmVuZCgpOyArK2l0KSB7CisgICAgICAgIC8vIEZyb250IGVuZCBlbnN1cmVzIHRoZSBl
dmVudCBpcyBub3QgZmlyZWQgYXQgY29ubmVjdGlvbnMgdGhhdCBoYXZlIGNsb3NlUGVuZGluZyBz
ZXQuCiAgICAgICAgICgqaXQpLT5vblZlcnNpb25DaGFuZ2UoIiIpOworICAgIH0KICAgICAvLyBG
SVhNRTogT25seSBmaXJlIG9uQmxvY2tlZCBpZiB0aGVyZSBhcmUgb3BlbiBjb25uZWN0aW9ucyBh
ZnRlciB0aGUKICAgICAvLyBWZXJzaW9uQ2hhbmdlRXZlbnRzIGFyZSByZWNlaXZlZCwgbm90IGp1
c3Qgc2V0IHVwIHRvIGZpcmUuCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTcxMTMwCi0gICAgaWYgKGNvbm5lY3Rpb25Db3VudCgpID49IDEpIHsKKyAgICBp
ZiAoY29ubmVjdGlvbkNvdW50KCkpIHsKICAgICAgICAgbV9wZW5kaW5nRGVsZXRlQ2FsbHMuYXBw
ZW5kKFBlbmRpbmdEZWxldGVDYWxsOjpjcmVhdGUoY2FsbGJhY2tzKSk7CiAgICAgICAgIGNhbGxi
YWNrcy0+b25CbG9ja2VkKCk7CiAgICAgICAgIHJldHVybjsKQEAgLTU2NCwxOCArNTU3LDE5IEBA
IHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6Y2xvc2UoUGFzc1JlZlB0cjxJREJEYXRhYmFz
ZUNhbGxiYWNrcz4gcHJwQ2FsbGJhY2tzCiB7CiAgICAgUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJh
Y2tzPiBjYWxsYmFja3MgPSBwcnBDYWxsYmFja3M7CiAgICAgQVNTRVJUKG1fZGF0YWJhc2VDYWxs
YmFja3NTZXQuY29udGFpbnMoY2FsbGJhY2tzKSk7CisKICAgICBtX2RhdGFiYXNlQ2FsbGJhY2tz
U2V0LnJlbW92ZShjYWxsYmFja3MpOworICAgIC8vIEZJWE1FOiBJZiBjYWxsYmFja3MgaXMgYWxz
byBoZWxkIGluIG1fcGVuZGluZ1NlY29uZEhhbGZPcGVuV2l0aFZlcnNpb25DYWxscworICAgIC8v
IGl0IHNob3VsZCBiZSByZW1vdmVkIGFuZCBvbkVycm9yIGZpcmVkIGFnYWluc3QgaXQuCisKICAg
ICBpZiAoY29ubmVjdGlvbkNvdW50KCkgPiAxKQogICAgICAgICByZXR1cm47CiAKLSAgICBUcmFu
c2FjdGlvblNldCB0cmFuc2FjdGlvbnMobV90cmFuc2FjdGlvbnMpOwogICAgIHByb2Nlc3NQZW5k
aW5nQ2FsbHMoKTsKIAotICAgIEFTU0VSVChtX3RyYW5zYWN0aW9ucy5zaXplKCkgLSB0cmFuc2Fj
dGlvbnMuc2l6ZSgpIDw9IDEpOwotICAgIC8vIEZJWE1FOiBJbnN0ZWFkIG9mIHJlbHlpbmcgb24g
dHJhbnNhY3Rpb25zLnNpemUoKSwgbWFrZSBjb25uZWN0aW9uQ291bnQKLSAgICAvLyBhd2FyZSBv
ZiBpbi1mbGlnaHQgdXBncmFkZW5lZWRlZCBldmVudHMgYXMgd2VsbCBhcyBpbi1mbGlnaHQgc3Vj
Y2VzcwotICAgIC8vIGV2ZW50cy4KLSAgICBpZiAoIWNvbm5lY3Rpb25Db3VudCgpICYmICFtX3Bl
bmRpbmdEZWxldGVDYWxscy5zaXplKCkgJiYgbV90cmFuc2FjdGlvbnMuc2l6ZSgpID09IHRyYW5z
YWN0aW9ucy5zaXplKCkpIHsKKyAgICAvLyBGSVhNRTogQWRkIGEgdGVzdCBmb3IgdGhlIG1fcGVu
ZGluZ09wZW5DYWxsc8K3YW5kIG1fcGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGxzIGNhc2VzIGJl
bG93LgorICAgIGlmICghY29ubmVjdGlvbkNvdW50KCkgJiYgIW1fcGVuZGluZ09wZW5DYWxscy5z
aXplKCkgJiYgIW1fcGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGxzLnNpemUoKSAmJiAhbV9wZW5k
aW5nRGVsZXRlQ2FsbHMuc2l6ZSgpKSB7CisgICAgICAgIFRyYW5zYWN0aW9uU2V0IHRyYW5zYWN0
aW9ucyhtX3RyYW5zYWN0aW9ucyk7CiAgICAgICAgIGZvciAoVHJhbnNhY3Rpb25TZXQ6OmNvbnN0
X2l0ZXJhdG9yIGl0ID0gdHJhbnNhY3Rpb25zLmJlZ2luKCk7IGl0ICE9IHRyYW5zYWN0aW9ucy5l
bmQoKTsgKytpdCkKICAgICAgICAgICAgICgqaXQpLT5hYm9ydCgpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBs
LmgKaW5kZXggN2YzMWNiMDRlYTRlZGJmY2Q2NzIxN2MxOWM4Y2E3YTJjOTczYmUxMS4uMjJjY2M0
MzIyMGI1MDRmZTcwNjg1NjdiNTlhNDc2MjU1ZWVhODU0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuaApA
QCAtNTUsOSArNTUsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IGludDY0X3QgSW52YWxp
ZElkID0gMDsKICAgICBpbnQ2NF90IGlkKCkgY29uc3QgeyByZXR1cm4gbV9pZDsgfQogCi0gICAg
dm9pZCByZWdpc3RlckZyb250ZW5kQ2FsbGJhY2tzKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxs
YmFja3M+KTsKLSAgICB2b2lkIG9wZW5Db25uZWN0aW9uKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tz
Pik7Ci0gICAgdm9pZCBvcGVuQ29ubmVjdGlvbldpdGhWZXJzaW9uKFBhc3NSZWZQdHI8SURCQ2Fs
bGJhY2tzPiwgaW50NjRfdCB2ZXJzaW9uKTsKKyAgICB2b2lkIG9wZW5Db25uZWN0aW9uKFBhc3NS
ZWZQdHI8SURCQ2FsbGJhY2tzPiwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4pOwor
ICAgIHZvaWQgb3BlbkNvbm5lY3Rpb25XaXRoVmVyc2lvbihQYXNzUmVmUHRyPElEQkNhbGxiYWNr
cz4sIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+LCBpbnQ2NF90IHZlcnNpb24pOwog
ICAgIHZvaWQgZGVsZXRlRGF0YWJhc2UoUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+KTsKIAogICAg
IC8vIElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZQpAQCAtNzksOSArNzgsOSBAQCBwcml2YXRl
OgogICAgIElEQkRhdGFiYXNlQmFja2VuZEltcGwoY29uc3QgU3RyaW5nJiBuYW1lLCBJREJCYWNr
aW5nU3RvcmUqIGRhdGFiYXNlLCBJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yKiwgSURCRmFjdG9y
eUJhY2tlbmRJbXBsKiwgY29uc3QgU3RyaW5nJiB1bmlxdWVJZGVudGlmaWVyKTsKIAogICAgIGJv
b2wgb3BlbkludGVybmFsKCk7Ci0gICAgdm9pZCBydW5JbnRWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rp
b24oaW50NjRfdCByZXF1ZXN0ZWRWZXJzaW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pOwor
ICAgIHZvaWQgcnVuSW50VmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKGludDY0X3QgcmVxdWVzdGVk
VmVyc2lvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNl
Q2FsbGJhY2tzPik7CiAgICAgdm9pZCBsb2FkT2JqZWN0U3RvcmVzKCk7Ci0gICAgaW50MzJfdCBj
b25uZWN0aW9uQ291bnQoKTsKKyAgICBzaXplX3QgY29ubmVjdGlvbkNvdW50KCk7CiAgICAgdm9p
ZCBwcm9jZXNzUGVuZGluZ0NhbGxzKCk7CiAKICAgICBzdGF0aWMgdm9pZCBjcmVhdGVPYmplY3RT
dG9yZUludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQkRhdGFi
YXNlQmFja2VuZEltcGw+LCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw+LCBQ
YXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+KTsKQEAgLTEyNywxMCArMTI2LDYg
QEAgcHJpdmF0ZToKICAgICBjbGFzcyBQZW5kaW5nRGVsZXRlQ2FsbDsKICAgICBEZXF1ZTxSZWZQ
dHI8UGVuZGluZ0RlbGV0ZUNhbGw+ID4gbV9wZW5kaW5nRGVsZXRlQ2FsbHM7CiAKLSAgICAvLyBG
SVhNRTogRWxpbWluYXRlIHRoZSBsaW1ibyBzdGF0ZSBiZXR3ZWVuIG9wZW5Db25uZWN0aW9uKCkg
YW5kIHJlZ2lzdGVyRnJvbnRlbmRDYWxsYmFja3MoKQotICAgIC8vIHRoYXQgdGhpcyBjb3VudGVy
IHRyYWNrcy4KLSAgICBpbnQzMl90IG1fcGVuZGluZ0Nvbm5lY3Rpb25Db3VudDsKLQogICAgIHR5
cGVkZWYgTGlzdEhhc2hTZXQ8UmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiA+IERhdGFiYXNl
Q2FsbGJhY2tzU2V0OwogICAgIERhdGFiYXNlQ2FsbGJhY2tzU2V0IG1fZGF0YWJhc2VDYWxsYmFj
a3NTZXQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UuaAppbmRleCBjN2QxZDYwMWJlMjZl
N2JiYzkyMTcwNjgzNDI0NzUyODVhMmE4NWQxLi40MmIzYjkwMmNhM2ZkZTY2NzQ5MTBmZWI5NDA1
NzA4M2EzMzM1YWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UuaApAQCAtNjAsOCArNjAs
NiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldFZlcnNpb24oY29uc3QgU3RyaW5nJiB2
ZXJzaW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VD
YWxsYmFja3M+LCBFeGNlcHRpb25Db2RlJikgPSAwOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJ
REJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IHRyYW5zYWN0aW9uKERPTVN0cmluZ0xpc3Qq
IHN0b3JlTmFtZXMsIHVuc2lnbmVkIHNob3J0IG1vZGUsIEV4Y2VwdGlvbkNvZGUmKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIGNsb3NlKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+KSA9
IDA7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJGcm9udGVuZENhbGxiYWNrcyhQYXNzUmVm
UHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPikgPSAwOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0
YWJhc2VDYWxsYmFja3NJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbC5jcHAKaW5kZXggZjY1NjVkY2ExYmQ4MjJmZTZkYzEz
NTk2OGMzYjBlZGI5OTk1YTNiOC4uOTcwZDNhMTY3Y2FmOTk2YzdmMDMxZmY1NGE0ZjE1OTI0OWYx
YWEwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0
YWJhc2VDYWxsYmFja3NJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwuY3BwCkBAIC0zMiwxMyArMzIsMTMgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzSW1w
bD4gSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsOjpjcmVhdGUoSURCRGF0YWJhc2UqIGRhdGFiYXNl
KQorUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGw+IElEQkRhdGFiYXNlQ2FsbGJh
Y2tzSW1wbDo6Y3JlYXRlKCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IElEQkRhdGFiYXNl
Q2FsbGJhY2tzSW1wbChkYXRhYmFzZSkpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgSURCRGF0
YWJhc2VDYWxsYmFja3NJbXBsKCkpOwogfQogCi1JREJEYXRhYmFzZUNhbGxiYWNrc0ltcGw6OklE
QkRhdGFiYXNlQ2FsbGJhY2tzSW1wbChJREJEYXRhYmFzZSogZGF0YWJhc2UpCi0gICAgOiBtX2Rh
dGFiYXNlKGRhdGFiYXNlKQorSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsOjpJREJEYXRhYmFzZUNh
bGxiYWNrc0ltcGwoKQorICAgIDogbV9kYXRhYmFzZSgwKQogewogfQogCkBAIC02NCwxMCArNjQs
MTEgQEAgdm9pZCBJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGw6Om9uVmVyc2lvbkNoYW5nZShpbnQ2
NF90IG9sZFZlcnNpb24sIGludDY0X3QgbmV3VmUKICAgICAgICAgbV9kYXRhYmFzZS0+b25WZXJz
aW9uQ2hhbmdlKG9sZFZlcnNpb24sIG5ld1ZlcnNpb24pOwogfQogCi12b2lkIElEQkRhdGFiYXNl
Q2FsbGJhY2tzSW1wbDo6dW5yZWdpc3RlckRhdGFiYXNlKElEQkRhdGFiYXNlKiBkYXRhYmFzZSkK
K3ZvaWQgSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsOjpjb25uZWN0KElEQkRhdGFiYXNlKiBkYXRh
YmFzZSkKIHsKLSAgICBBU1NFUlRfVU5VU0VEKGRhdGFiYXNlLCBkYXRhYmFzZSA9PSBtX2RhdGFi
YXNlKTsKLSAgICBtX2RhdGFiYXNlID0gMDsKKyAgICBBU1NFUlQoIW1fZGF0YWJhc2UpOworICAg
IEFTU0VSVChkYXRhYmFzZSk7CisgICAgbV9kYXRhYmFzZSA9IGRhdGFiYXNlOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbC5oCmluZGV4IDg3ODFkYmIwYTMx
NTBhNDQzOTI0MjM3ZTJlMWYzNGZiYWUyOTBlOTguLmJiNGExYWU3NGU4MjI3MzhiMzNkZDZjMDgw
OWU3MmU2MTBmZDNjYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbC5oCkBAIC0zOCwxOCArMzgsMjAg
QEAgY2xhc3MgSURCRGF0YWJhc2U7CiAKIGNsYXNzIElEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbCA6
IHB1YmxpYyBJREJEYXRhYmFzZUNhbGxiYWNrcyB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NS
ZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3NJbXBsPiBjcmVhdGUoSURCRGF0YWJhc2UqKTsKKyAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGw+IGNyZWF0ZSgpOwog
ICAgIHZpcnR1YWwgfklEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbCgpOwogCisgICAgLy8gSURCRGF0
YWJhc2VDYWxsYmFja3MKICAgICB2aXJ0dWFsIHZvaWQgb25Gb3JjZWRDbG9zZSgpOwogICAgIHZp
cnR1YWwgdm9pZCBvblZlcnNpb25DaGFuZ2UoY29uc3QgU3RyaW5nJiB2ZXJzaW9uKTsKICAgICB2
aXJ0dWFsIHZvaWQgb25WZXJzaW9uQ2hhbmdlKGludDY0X3Qgb2xkVmVyc2lvbiwgaW50NjRfdCBu
ZXdWZXJzaW9uKTsKLSAgICB2b2lkIHVucmVnaXN0ZXJEYXRhYmFzZShJREJEYXRhYmFzZSopOwor
CisgICAgdm9pZCBjb25uZWN0KElEQkRhdGFiYXNlKik7CiAKIHByaXZhdGU6Ci0gICAgSURCRGF0
YWJhc2VDYWxsYmFja3NJbXBsKElEQkRhdGFiYXNlKik7CisgICAgSURCRGF0YWJhc2VDYWxsYmFj
a3NJbXBsKCk7CiAKLSAgICAvLyBtX2RhdGFiYXNlIGhhcyBhIFJlZlB0ciB0byB0aGlzLCBzbyB1
c2UgYSB3ZWFrIHBvaW50ZXIgdG8gYXZvaWQgYSBjeWNsZS4KKyAgICAvLyBUaGUgaW5pdGlhbCBJ
REJPcGVuREJSZXF1ZXN0IG9yIGZpbmFsIElEQkRhdGFiYXNlIG1haW50YWlucyBhIFJlZlB0ciB0
byB0aGlzCiAgICAgSURCRGF0YWJhc2UqIG1fZGF0YWJhc2U7CiB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuY3BwCmluZGV4IGMyMDYzNWYyYWEz
N2RkOTUxYzNjODRmNDM0NjM0MTEwNjBlMTE3YTAuLjRlMzAyMzE2NzE5OTAzMmQ2NGRjOWI4YmY4
MTA0ZjAwMzA2OTFjZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkZhY3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkZhY3RvcnkuY3BwCkBAIC0xMjAsOCArMTIwLDkgQEAgUGFzc1JlZlB0cjxJREJPcGVuREJS
ZXF1ZXN0PiBJREJGYWN0b3J5OjpvcGVuKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQs
IGMKICAgICBpZiAoIWlzQ29udGV4dFZhbGlkKGNvbnRleHQpKQogICAgICAgICByZXR1cm4gMDsK
IAotICAgIFJlZlB0cjxJREJPcGVuREJSZXF1ZXN0PiByZXF1ZXN0ID0gSURCT3BlbkRCUmVxdWVz
dDo6Y3JlYXRlKGNvbnRleHQsIElEQkFueTo6Y3JlYXRlKHRoaXMpLCB2ZXJzaW9uKTsKLSAgICBt
X2JhY2tlbmQtPm9wZW4obmFtZSwgdmVyc2lvbiwgcmVxdWVzdCwgY29udGV4dC0+c2VjdXJpdHlP
cmlnaW4oKSwgY29udGV4dCwgZ2V0SW5kZXhlZERCRGF0YWJhc2VQYXRoKGNvbnRleHQpKTsKKyAg
ICBSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3NJbXBsPiBkYXRhYmFzZUNhbGxiYWNrcyA9IElE
QkRhdGFiYXNlQ2FsbGJhY2tzSW1wbDo6Y3JlYXRlKCk7CisgICAgUmVmUHRyPElEQk9wZW5EQlJl
cXVlc3Q+IHJlcXVlc3QgPSBJREJPcGVuREJSZXF1ZXN0OjpjcmVhdGUoY29udGV4dCwgSURCQW55
OjpjcmVhdGUodGhpcyksIGRhdGFiYXNlQ2FsbGJhY2tzLCB2ZXJzaW9uKTsKKyAgICBtX2JhY2tl
bmQtPm9wZW4obmFtZSwgdmVyc2lvbiwgcmVxdWVzdCwgZGF0YWJhc2VDYWxsYmFja3MsIGNvbnRl
eHQtPnNlY3VyaXR5T3JpZ2luKCksIGNvbnRleHQsIGdldEluZGV4ZWREQkRhdGFiYXNlUGF0aChj
b250ZXh0KSk7CiAgICAgcmV0dXJuIHJlcXVlc3Q7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5QmFja2VuZEltcGwuY3BwCmlu
ZGV4IDhkYTVjMDJlNDIzZjZmNjRlNTc5NzMwZGI3M2ZhMjllYzJiZTQ2MDYuLmM3ZWY4NjBlMTNl
MmQxODE3OWFlNWVjYzBjNzU5NzA5Yjg4NDNkZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJbXBsLmNwcApAQCAt
MTUwLDcgKzE1MCw3IEBAIFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlPiBJREJGYWN0b3J5QmFj
a2VuZEltcGw6Om9wZW5CYWNraW5nU3RvcmUoUGFzc1JlZlB0cjxTCiAgICAgcmV0dXJuIDA7CiB9
CiAKLXZvaWQgSURCRmFjdG9yeUJhY2tlbmRJbXBsOjpvcGVuKGNvbnN0IFN0cmluZyYgbmFtZSwg
aW50NjRfdCB2ZXJzaW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBQYXNz
UmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBwcnBTZWN1cml0eU9yaWdpbiwgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIGNvbnN0IFN0cmluZyYgZGF0YURpcmVjdG9yeSkKK3ZvaWQgSURCRmFjdG9yeUJh
Y2tlbmRJbXBsOjpvcGVuKGNvbnN0IFN0cmluZyYgbmFtZSwgaW50NjRfdCB2ZXJzaW9uLCBQYXNz
UmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2Fs
bGJhY2tzPiBkYXRhYmFzZUNhbGxiYWNrcywgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gcHJw
U2VjdXJpdHlPcmlnaW4sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIGRh
dGFEaXJlY3RvcnkpCiB7CiAgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdp
biA9IHBycFNlY3VyaXR5T3JpZ2luOwogICAgIGNvbnN0IFN0cmluZyB1bmlxdWVJZGVudGlmaWVy
ID0gY29tcHV0ZVVuaXF1ZUlkZW50aWZpZXIobmFtZSwgc2VjdXJpdHlPcmlnaW4uZ2V0KCkpOwpA
QCAtMTc1LDkgKzE3NSw5IEBAIHZvaWQgSURCRmFjdG9yeUJhY2tlbmRJbXBsOjpvcGVuKGNvbnN0
IFN0cmluZyYgbmFtZSwgaW50NjRfdCB2ZXJzaW9uLCBQYXNzUmVmUHRyCiAgICAgICAgIGRhdGFi
YXNlQmFja2VuZCA9IGl0LT5zZWNvbmQ7CiAKICAgICBpZiAodmVyc2lvbiA9PSBJREJEYXRhYmFz
ZU1ldGFkYXRhOjpOb0ludFZlcnNpb24pCi0gICAgICAgIGRhdGFiYXNlQmFja2VuZC0+b3BlbkNv
bm5lY3Rpb24oY2FsbGJhY2tzKTsKKyAgICAgICAgZGF0YWJhc2VCYWNrZW5kLT5vcGVuQ29ubmVj
dGlvbihjYWxsYmFja3MsIGRhdGFiYXNlQ2FsbGJhY2tzKTsKICAgICBlbHNlCi0gICAgICAgIGRh
dGFiYXNlQmFja2VuZC0+b3BlbkNvbm5lY3Rpb25XaXRoVmVyc2lvbihjYWxsYmFja3MsIHZlcnNp
b24pOworICAgICAgICBkYXRhYmFzZUJhY2tlbmQtPm9wZW5Db25uZWN0aW9uV2l0aFZlcnNpb24o
Y2FsbGJhY2tzLCBkYXRhYmFzZUNhbGxiYWNrcywgdmVyc2lvbik7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCRmFjdG9yeUJhY2tlbmRJbXBsLmgKaW5kZXggY2FkM2I1YTI0YjI5OWE5Mjk5YzJhZDI5
NGUzYjJlYTA0Y2ZkNzJhNS4uM2FlMDcwMzEwZGFlODc2NDM1OTZjYTliMjk5M2MzM2E0NjcwYjFi
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9y
eUJhY2tlbmRJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
RmFjdG9yeUJhY2tlbmRJbXBsLmgKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCByZW1vdmVJREJCYWNraW5nU3RvcmUoY29uc3QgU3RyaW5nJiBmaWxlSWRlbnRpZmll
cik7CiAKICAgICB2aXJ0dWFsIHZvaWQgZ2V0RGF0YWJhc2VOYW1lcyhQYXNzUmVmUHRyPElEQkNh
bGxiYWNrcz4sIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+LCBTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgY29uc3QgU3RyaW5nJiBkYXRhRGlyKTsKLSAgICB2aXJ0dWFsIHZvaWQgb3Blbihjb25z
dCBTdHJpbmcmIG5hbWUsIGludDY0X3QgdmVyc2lvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+
LCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNv
bnN0IFN0cmluZyYgZGF0YURpcik7CisgICAgdmlydHVhbCB2b2lkIG9wZW4oY29uc3QgU3RyaW5n
JiBuYW1lLCBpbnQ2NF90IHZlcnNpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgUGFzc1Jl
ZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+LCBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBkYXRhRGlyKTsKICAgICB2aXJ0
dWFsIHZvaWQgZGVsZXRlRGF0YWJhc2UoY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPElE
QkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+LCBTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiwgY29uc3QgU3RyaW5nJiBkYXRhRGlyKTsKIAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJbnRl
cmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnlCYWNr
ZW5kSW50ZXJmYWNlLmgKaW5kZXggZjU2ZmMwNmUwMGU2MzNkZjRkNzRkOTgzZGIyM2IwMjliNTIw
NTVlOC4uYWUyMjcwNjhmNTYyYzI2OTk1OWIyZTViOWZiNDEyOTI2YTFiZGZhOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJbnRl
cmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5
QmFja2VuZEludGVyZmFjZS5oCkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IH5JREJGYWN0b3J5QmFja2VuZEludGVyZmFjZSgpIHsgfQogCiAgICAgdmlydHVhbCB2b2lkIGdl
dERhdGFiYXNlTmFtZXMoUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBQYXNzUmVmUHRyPFNlY3Vy
aXR5T3JpZ2luPiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgZGF0YURp
cikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBvcGVuKGNvbnN0IFN0cmluZyYgbmFtZSwgaW50NjRf
dCB2ZXJzaW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8U2VjdXJpdHlP
cmlnaW4+LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBkYXRhRGlyKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIG9wZW4oY29uc3QgU3RyaW5nJiBuYW1lLCBpbnQ2NF90IHZl
cnNpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNh
bGxiYWNrcz4sIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+LCBTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgY29uc3QgU3RyaW5nJiBkYXRhRGlyKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0
ZURhdGFiYXNlKGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBQ
YXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0
IFN0cmluZyYgZGF0YURpcikgPSAwOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCT3BlbkRCUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJPcGVuREJSZXF1ZXN0LmNwcAppbmRleCBlODlhNzRjZmQ5YmZi
N2ZmNzYzYmE2ZWUyNWZkMjJiY2YyNDY5NTBhLi42ZWYxNmNmMDI5M2E2OTE5MGY5NmNkM2E4NWFj
MzUyNzIzZWJiNmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJPcGVuREJSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJPcGVuREJSZXF1ZXN0LmNwcApAQCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJMRShJ
TkRFWEVEX0RBVEFCQVNFKQogCiAjaW5jbHVkZSAiSURCRGF0YWJhc2UuaCIKKyNpbmNsdWRlICJJ
REJEYXRhYmFzZUNhbGxiYWNrc0ltcGwuaCIKICNpbmNsdWRlICJJREJQZW5kaW5nVHJhbnNhY3Rp
b25Nb25pdG9yLmgiCiAjaW5jbHVkZSAiSURCVHJhY2luZy5oIgogI2luY2x1ZGUgIklEQlVwZ3Jh
ZGVOZWVkZWRFdmVudC5oIgpAQCAtMzYsMTUgKzM3LDE2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotUGFzc1JlZlB0cjxJREJPcGVuREJSZXF1ZXN0PiBJREJPcGVuREJSZXF1ZXN0OjpjcmVh
dGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJREJBbnk+IHNv
dXJjZSwgaW50NjRfdCB2ZXJzaW9uKQorUGFzc1JlZlB0cjxJREJPcGVuREJSZXF1ZXN0PiBJREJP
cGVuREJSZXF1ZXN0OjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFz
c1JlZlB0cjxJREJBbnk+IHNvdXJjZSwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrc0lt
cGw+IGNhbGxiYWNrcywgaW50NjRfdCB2ZXJzaW9uKQogewotICAgIFJlZlB0cjxJREJPcGVuREJS
ZXF1ZXN0PiByZXF1ZXN0KGFkb3B0UmVmKG5ldyBJREJPcGVuREJSZXF1ZXN0KGNvbnRleHQsIHNv
dXJjZSwgdmVyc2lvbikpKTsKKyAgICBSZWZQdHI8SURCT3BlbkRCUmVxdWVzdD4gcmVxdWVzdChh
ZG9wdFJlZihuZXcgSURCT3BlbkRCUmVxdWVzdChjb250ZXh0LCBzb3VyY2UsIGNhbGxiYWNrcywg
dmVyc2lvbikpKTsKICAgICByZXF1ZXN0LT5zdXNwZW5kSWZOZWVkZWQoKTsKICAgICByZXR1cm4g
cmVxdWVzdC5yZWxlYXNlKCk7CiB9CiAKLUlEQk9wZW5EQlJlcXVlc3Q6OklEQk9wZW5EQlJlcXVl
c3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJREJBbnk+IHNv
dXJjZSwgaW50NjRfdCB2ZXJzaW9uKQorSURCT3BlbkRCUmVxdWVzdDo6SURCT3BlbkRCUmVxdWVz
dChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQkFueT4gc291
cmNlLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbD4gY2FsbGJhY2tzLCBpbnQ2
NF90IHZlcnNpb24pCiAgICAgOiBJREJSZXF1ZXN0KGNvbnRleHQsIHNvdXJjZSwgSURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW50ZXJmYWNlOjpOb3JtYWxUYXNrLCAwKQorICAgICwgbV9kYXRhYmFzZUNh
bGxiYWNrcyhjYWxsYmFja3MpCiAgICAgLCBtX3ZlcnNpb24odmVyc2lvbikKIHsKICAgICBBU1NF
UlQoIW1fcmVzdWx0KTsKQEAgLTcyLDkgKzc0LDEzIEBAIHZvaWQgSURCT3BlbkRCUmVxdWVzdDo6
b25VcGdyYWRlTmVlZGVkKGludDY0X3Qgb2xkVmVyc2lvbiwgUGFzc1JlZlB0cjxJREJUcmFuc2Fj
CiAgICAgaWYgKCFzaG91bGRFbnF1ZXVlRXZlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCisgICAg
QVNTRVJUKG1fZGF0YWJhc2VDYWxsYmFja3MpOworCiAgICAgUmVmUHRyPElEQkRhdGFiYXNlQmFj
a2VuZEludGVyZmFjZT4gZGF0YWJhc2VCYWNrZW5kID0gcHJwRGF0YWJhc2VCYWNrZW5kOwogICAg
IFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IHRyYW5zYWN0aW9uQmFja2Vu
ZCA9IHBycFRyYW5zYWN0aW9uQmFja2VuZDsKLSAgICBSZWZQdHI8SURCRGF0YWJhc2U+IGlkYkRh
dGFiYXNlID0gSURCRGF0YWJhc2U6OmNyZWF0ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGRh
dGFiYXNlQmFja2VuZCk7CisgICAgUmVmUHRyPElEQkRhdGFiYXNlPiBpZGJEYXRhYmFzZSA9IElE
QkRhdGFiYXNlOjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBkYXRhYmFzZUJhY2tl
bmQsIG1fZGF0YWJhc2VDYWxsYmFja3MpOworICAgIG1fZGF0YWJhc2VDYWxsYmFja3MtPmNvbm5l
Y3QoaWRiRGF0YWJhc2UuZ2V0KCkpOworICAgIG1fZGF0YWJhc2VDYWxsYmFja3MgPSAwOwogCiAg
ICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uPiBmcm9udGVuZCA9IElEQlRyYW5zYWN0aW9uOjpjcmVh
dGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCB0cmFuc2FjdGlvbkJhY2tlbmQsIElEQlRyYW5z
YWN0aW9uOjpWRVJTSU9OX0NIQU5HRSwgaWRiRGF0YWJhc2UuZ2V0KCksIHRoaXMpOwogICAgIHRy
YW5zYWN0aW9uQmFja2VuZC0+c2V0Q2FsbGJhY2tzKGZyb250ZW5kLmdldCgpKTsKQEAgLTk4LDEx
ICsxMDQsMTQgQEAgdm9pZCBJREJPcGVuREJSZXF1ZXN0OjpvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJ
REJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+IGJhY2tlbmQKICAgICBpZiAobV9yZXN1bHQpIHsK
ICAgICAgICAgaWRiRGF0YWJhc2UgPSBtX3Jlc3VsdC0+aWRiRGF0YWJhc2UoKTsKICAgICAgICAg
QVNTRVJUKGlkYkRhdGFiYXNlKTsKKyAgICAgICAgQVNTRVJUKCFtX2RhdGFiYXNlQ2FsbGJhY2tz
KTsKICAgICB9IGVsc2UgewotICAgICAgICBpZGJEYXRhYmFzZSA9IElEQkRhdGFiYXNlOjpjcmVh
dGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBiYWNrZW5kKTsKKyAgICAgICAgQVNTRVJUKG1f
ZGF0YWJhc2VDYWxsYmFja3MpOworICAgICAgICBpZGJEYXRhYmFzZSA9IElEQkRhdGFiYXNlOjpj
cmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBiYWNrZW5kLCBtX2RhdGFiYXNlQ2FsbGJh
Y2tzKTsKKyAgICAgICAgbV9kYXRhYmFzZUNhbGxiYWNrcy0+Y29ubmVjdChpZGJEYXRhYmFzZS5n
ZXQoKSk7CisgICAgICAgIG1fZGF0YWJhc2VDYWxsYmFja3MgPSAwOwogICAgICAgICBtX3Jlc3Vs
dCA9IElEQkFueTo6Y3JlYXRlKGlkYkRhdGFiYXNlLmdldCgpKTsKICAgICB9Ci0gICAgaWRiRGF0
YWJhc2UtPnJlZ2lzdGVyRnJvbnRlbmRDYWxsYmFja3MoKTsKICAgICBlbnF1ZXVlRXZlbnQoRXZl
bnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuc3VjY2Vzc0V2ZW50LCBmYWxzZSwgZmFsc2UpKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT3BlbkRC
UmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT3BlbkRCUmVx
dWVzdC5oCmluZGV4IGM4N2RiN2VkMWJkZDJkNDA1M2U3NGMxMDJhMmVjNmQ2OTU5NzJlM2YuLjFl
ODRiNTRjOWRhNTA3YWY1NTE5YzgwODg5ODQ2ZDQyZWZkZWQ0OWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9wZW5EQlJlcXVlc3QuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPcGVuREJSZXF1ZXN0LmgKQEAgLTMyLDkg
KzMyLDExIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgSURCRGF0YWJhc2VDYWxs
YmFja3NJbXBsOworCiBjbGFzcyBJREJPcGVuREJSZXF1ZXN0IDogcHVibGljIElEQlJlcXVlc3Qg
ewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQk9wZW5EQlJlcXVlc3Q+IGNyZWF0
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJBbnk+IHNvdXJjZSwgaW50
NjRfdCB2ZXJzaW9uKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJPcGVuREJSZXF1ZXN0PiBj
cmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCQW55PiBzb3VyY2Us
IFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3NJbXBsPiwgaW50NjRfdCB2ZXJzaW9uKTsK
ICAgICB2aXJ0dWFsIH5JREJPcGVuREJSZXF1ZXN0KCk7CiAKICAgICB1c2luZyBJREJSZXF1ZXN0
OjpvblN1Y2Nlc3M7CkBAIC01Myw4ICs1NSw5IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIGJv
b2wgc2hvdWxkRW5xdWV1ZUV2ZW50KCkgY29uc3QgT1ZFUlJJREU7CiAKIHByaXZhdGU6Ci0gICAg
SURCT3BlbkRCUmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJB
bnk+IHNvdXJjZSwgaW50NjRfdCB2ZXJzaW9uKTsKKyAgICBJREJPcGVuREJSZXF1ZXN0KFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQkFueT4gc291cmNlLCBQYXNzUmVmUHRy
PElEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbD4sIGludDY0X3QgdmVyc2lvbik7CiAKKyAgICBSZWZQ
dHI8SURCRGF0YWJhc2VDYWxsYmFja3NJbXBsPiBtX2RhdGFiYXNlQ2FsbGJhY2tzOwogICAgIGlu
dDY0X3QgbV92ZXJzaW9uOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCmluZGV4IDIxZTVmMzI4ZTM0NTUzODljZTA4NTY2
MjA3MGVlZWExNDY1NWY2MjguLmUxZTA1ZjFmMjg4NjhkYjJkMjg5ZjJlZjA1Y2ViNDJmNTI1MGVj
Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5z
YWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFu
c2FjdGlvbi5jcHAKQEAgLTI5NCwxMiArMjk0LDEwIEBAIHZvaWQgSURCVHJhbnNhY3Rpb246Om9u
QWJvcnQoKQogICAgIH0KICAgICBtX29iamVjdFN0b3JlQ2xlYW51cE1hcC5jbGVhcigpOwogICAg
IGNsb3NlT3BlbkN1cnNvcnMoKTsKLSAgICBtX2RhdGFiYXNlLT50cmFuc2FjdGlvbkZpbmlzaGVk
KHRoaXMpOwotCi0gICAgaWYgKG1fY29udGV4dFN0b3BwZWQgfHwgIXNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSkKLSAgICAgICAgcmV0dXJuOwogCisgICAgLy8gRW5xdWV1ZSBldmVudHMgYmVmb3Jl
IG5vdGlmeWluZyBkYXRhYmFzZSwgYXMgZGF0YWJhc2UgbWF5IGNsb3NlIHdoaWNoIGVucXVldWVz
IG1vcmUgZXZlbnRzIGFuZCBvcmRlciBtYXR0ZXJzLgogICAgIGVucXVldWVFdmVudChFdmVudDo6
Y3JlYXRlKGV2ZW50TmFtZXMoKS5hYm9ydEV2ZW50LCB0cnVlLCBmYWxzZSkpOworICAgIG1fZGF0
YWJhc2UtPnRyYW5zYWN0aW9uRmluaXNoZWQodGhpcyk7CiB9CiAKIHZvaWQgSURCVHJhbnNhY3Rp
b246Om9uQ29tcGxldGUoKQpAQCAtMzA5LDEyICszMDcsMTAgQEAgdm9pZCBJREJUcmFuc2FjdGlv
bjo6b25Db21wbGV0ZSgpCiAgICAgbV9zdGF0ZSA9IEZpbmlzaGluZzsKICAgICBtX29iamVjdFN0
b3JlQ2xlYW51cE1hcC5jbGVhcigpOwogICAgIGNsb3NlT3BlbkN1cnNvcnMoKTsKLSAgICBtX2Rh
dGFiYXNlLT50cmFuc2FjdGlvbkZpbmlzaGVkKHRoaXMpOwotCi0gICAgaWYgKG1fY29udGV4dFN0
b3BwZWQgfHwgIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKLSAgICAgICAgcmV0dXJuOwogCisg
ICAgLy8gRW5xdWV1ZSBldmVudHMgYmVmb3JlIG5vdGlmeWluZyBkYXRhYmFzZSwgYXMgZGF0YWJh
c2UgbWF5IGNsb3NlIHdoaWNoIGVucXVldWVzIG1vcmUgZXZlbnRzIGFuZCBvcmRlciBtYXR0ZXJz
LgogICAgIGVucXVldWVFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jb21wbGV0ZUV2
ZW50LCBmYWxzZSwgZmFsc2UpKTsKKyAgICBtX2RhdGFiYXNlLT50cmFuc2FjdGlvbkZpbmlzaGVk
KHRoaXMpOwogfQogCiBib29sIElEQlRyYW5zYWN0aW9uOjpoYXNQZW5kaW5nQWN0aXZpdHkoKSBj
b25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4
ZWREQkFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVk
REJBZ2VudC5jcHAKaW5kZXggNWRmZDk5NTE5NThiYTYwZTgyOGU0ZWM1MzUwMzZjMzUxNDE5YTJk
YS4uZjEyYmQwZGFjZjhlMzBhZmI4ZGYyNTU4NmU1OTE1NWM2ZDhkMmM0MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwCkBA
IC0xNzIsMzUgKzE3MiwzNSBAQCBwcml2YXRlOgogICAgIFN0cmluZyBtX3NlY3VyaXR5T3JpZ2lu
OwogfTsKIAotY2xhc3MgRXhlY3V0YWJsZVdpdGhEYXRhYmFzZSA6IHB1YmxpYyBSZWZDb3VudGVk
PEV4ZWN1dGFibGVXaXRoRGF0YWJhc2U+IHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIH5FeGVjdXRh
YmxlV2l0aERhdGFiYXNlKCkgeyB9OwotICAgIHZvaWQgc3RhcnQoSURCRmFjdG9yeUJhY2tlbmRJ
bnRlcmZhY2UqLCBTZWN1cml0eU9yaWdpbiosIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25z
dCBTdHJpbmcmIGRhdGFiYXNlTmFtZSk7Ci0gICAgdmlydHVhbCB2b2lkIGV4ZWN1dGUoUGFzc1Jl
ZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+KSA9IDA7Ci19OwotCiBjbGFzcyBEYXRh
YmFzZUNvbm5lY3Rpb24gewogcHVibGljOgogICAgIERhdGFiYXNlQ29ubmVjdGlvbigpCiAgICAg
ICAgIDogbV9pZGJEYXRhYmFzZUNhbGxiYWNrcyhJbnNwZWN0b3JJREJEYXRhYmFzZUNhbGxiYWNr
czo6Y3JlYXRlKCkpIHsgfQogCi0gICAgdm9pZCBjb25uZWN0KFBhc3NSZWZQdHI8SURCRGF0YWJh
c2VCYWNrZW5kSW50ZXJmYWNlPiBpZGJEYXRhYmFzZSkKLSAgICB7Ci0gICAgICAgIG1faWRiRGF0
YWJhc2UgPSBpZGJEYXRhYmFzZTsKLSAgICAgICAgbV9pZGJEYXRhYmFzZS0+cmVnaXN0ZXJGcm9u
dGVuZENhbGxiYWNrcyhtX2lkYkRhdGFiYXNlQ2FsbGJhY2tzKTsKLSAgICB9Ci0KICAgICB+RGF0
YWJhc2VDb25uZWN0aW9uKCkKICAgICB7CiAgICAgICAgIGlmIChtX2lkYkRhdGFiYXNlKQogICAg
ICAgICAgICAgbV9pZGJEYXRhYmFzZS0+Y2xvc2UobV9pZGJEYXRhYmFzZUNhbGxiYWNrcyk7CiAg
ICAgfQogCisgICAgdm9pZCBjb25uZWN0KFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50
ZXJmYWNlPiBkYXRhYmFzZSkgeyBtX2lkYkRhdGFiYXNlID0gZGF0YWJhc2U7IH0KKyAgICBQYXNz
UmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBjYWxsYmFja3MoKSB7IHJldHVybiBtX2lkYkRh
dGFiYXNlQ2FsbGJhY2tzOyB9CisKIHByaXZhdGU6CiAgICAgUmVmUHRyPElEQkRhdGFiYXNlQmFj
a2VuZEludGVyZmFjZT4gbV9pZGJEYXRhYmFzZTsKICAgICBSZWZQdHI8SURCRGF0YWJhc2VDYWxs
YmFja3M+IG1faWRiRGF0YWJhc2VDYWxsYmFja3M7CiB9OwogCitjbGFzcyBFeGVjdXRhYmxlV2l0
aERhdGFiYXNlIDogcHVibGljIFJlZkNvdW50ZWQ8RXhlY3V0YWJsZVdpdGhEYXRhYmFzZT4gewor
cHVibGljOgorICAgIHZpcnR1YWwgfkV4ZWN1dGFibGVXaXRoRGF0YWJhc2UoKSB7IH07CisgICAg
dm9pZCBzdGFydChJREJGYWN0b3J5QmFja2VuZEludGVyZmFjZSosIFNlY3VyaXR5T3JpZ2luKiwg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lKTsKKyAg
ICB2b2lkIGNvbm5lY3QoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+IGRh
dGFiYXNlKSB7IG1fY29ubmVjdGlvbi5jb25uZWN0KGRhdGFiYXNlKTsgfQorICAgIHZpcnR1YWwg
dm9pZCBleGVjdXRlKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPikgPSAw
OworcHJpdmF0ZToKKyAgICBEYXRhYmFzZUNvbm5lY3Rpb24gbV9jb25uZWN0aW9uOworfTsKKwog
Y2xhc3MgT3BlbkRhdGFiYXNlQ2FsbGJhY2sgOiBwdWJsaWMgSW5zcGVjdG9ySURCQ2FsbGJhY2sg
ewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPE9wZW5EYXRhYmFzZUNhbGxiYWNrPiBj
cmVhdGUoRXhlY3V0YWJsZVdpdGhEYXRhYmFzZSogZXhlY3V0YWJsZVdpdGhEYXRhYmFzZSkKQEAg
LTIxMyw2ICsyMTMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNz
UmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4gcHJwRGF0YWJhc2UpCiAgICAgewog
ICAgICAgICBSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiBpZGJEYXRhYmFzZSA9
IHBycERhdGFiYXNlOworICAgICAgICBtX2V4ZWN1dGFibGVXaXRoRGF0YWJhc2UtPmNvbm5lY3Qo
aWRiRGF0YWJhc2UpOwogICAgICAgICBtX2V4ZWN1dGFibGVXaXRoRGF0YWJhc2UtPmV4ZWN1dGUo
aWRiRGF0YWJhc2UpOwogICAgIH0KIApAQCAtMjI1LDcgKzIyNiw3IEBAIHByaXZhdGU6CiB2b2lk
IEV4ZWN1dGFibGVXaXRoRGF0YWJhc2U6OnN0YXJ0KElEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNl
KiBpZGJGYWN0b3J5LCBTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4sIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lKQogewogICAg
IFJlZlB0cjxPcGVuRGF0YWJhc2VDYWxsYmFjaz4gY2FsbGJhY2sgPSBPcGVuRGF0YWJhc2VDYWxs
YmFjazo6Y3JlYXRlKHRoaXMpOwotICAgIGlkYkZhY3RvcnktPm9wZW4oZGF0YWJhc2VOYW1lLCBJ
REJEYXRhYmFzZU1ldGFkYXRhOjpOb0ludFZlcnNpb24sIGNhbGxiYWNrLmdldCgpLCBzZWN1cml0
eU9yaWdpbiwgY29udGV4dCwgU3RyaW5nKCkpOworICAgIGlkYkZhY3RvcnktPm9wZW4oZGF0YWJh
c2VOYW1lLCBJREJEYXRhYmFzZU1ldGFkYXRhOjpOb0ludFZlcnNpb24sIGNhbGxiYWNrLCBtX2Nv
bm5lY3Rpb24uY2FsbGJhY2tzKCksIHNlY3VyaXR5T3JpZ2luLCBjb250ZXh0LCBTdHJpbmcoKSk7
CiB9CiAKIHN0YXRpYyBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4g
dHJhbnNhY3Rpb25Gb3JEYXRhYmFzZShJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UqIGlkYkRh
dGFiYXNlLCBjb25zdCBTdHJpbmcmIG9iamVjdFN0b3JlTmFtZSkKQEAgLTI5Niw3ICsyOTcsNiBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGV4ZWN1dGUoUGFzc1JlZlB0cjxJREJEYXRhYmFz
ZUJhY2tlbmRJbnRlcmZhY2U+IHBycERhdGFiYXNlKQogICAgIHsKICAgICAgICAgUmVmUHRyPElE
QkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4gaWRiRGF0YWJhc2UgPSBwcnBEYXRhYmFzZTsKLSAg
ICAgICAgbV9jb25uZWN0aW9uLmNvbm5lY3QoaWRiRGF0YWJhc2UpOwogICAgICAgICBpZiAoIW1f
cmVxdWVzdENhbGxiYWNrLT5pc0FjdGl2ZSgpKQogICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0z
MzksNyArMzM5LDYgQEAgcHJpdmF0ZToKICAgICBEYXRhYmFzZUxvYWRlckNhbGxiYWNrKFBhc3NS
ZWZQdHI8UmVxdWVzdERhdGFiYXNlQ2FsbGJhY2s+IHJlcXVlc3RDYWxsYmFjaykKICAgICAgICAg
OiBtX3JlcXVlc3RDYWxsYmFjayhyZXF1ZXN0Q2FsbGJhY2spIHsgfQogICAgIFJlZlB0cjxSZXF1
ZXN0RGF0YWJhc2VDYWxsYmFjaz4gbV9yZXF1ZXN0Q2FsbGJhY2s7Ci0gICAgRGF0YWJhc2VDb25u
ZWN0aW9uIG1fY29ubmVjdGlvbjsKIH07CiAKIHN0YXRpYyBQYXNzUmVmUHRyPElEQktleT4gaWRi
S2V5RnJvbUluc3BlY3Rvck9iamVjdChJbnNwZWN0b3JPYmplY3QqIGtleSkKQEAgLTU1NSw3ICs1
NTQsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGV4ZWN1dGUoUGFzc1JlZlB0cjxJREJE
YXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+IHBycERhdGFiYXNlKQogICAgIHsKICAgICAgICAgUmVm
UHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4gaWRiRGF0YWJhc2UgPSBwcnBEYXRhYmFz
ZTsKLSAgICAgICAgbV9jb25uZWN0aW9uLmNvbm5lY3QoaWRiRGF0YWJhc2UpOwogICAgICAgICBp
ZiAoIW1fcmVxdWVzdENhbGxiYWNrLT5pc0FjdGl2ZSgpKQogICAgICAgICAgICAgcmV0dXJuOwog
CkBAIC01OTcsNyArNTk1LDYgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8SURCS2V5UmFuZ2U+IG1f
aWRiS2V5UmFuZ2U7CiAgICAgaW50IG1fc2tpcENvdW50OwogICAgIHVuc2lnbmVkIG1fcGFnZVNp
emU7Ci0gICAgRGF0YWJhc2VDb25uZWN0aW9uIG1fY29ubmVjdGlvbjsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJE
YXRhYmFzZS5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCRGF0YWJhc2Uu
aAppbmRleCBhOGIwMzVjNzI3Zjg4ZGRiZjBjZTE3MGVhZDc0MTg1YzY4YmUyYWQ2Li41OTJhMTBl
M2UxOTcwMWZlNDA4OGYzMjlkMTJlYzk4MDBmOTRkMjk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJEYXRhYmFzZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYklEQkRhdGFiYXNlLmgKQEAgLTY2LDYgKzY2LDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBjbG9zZSgpIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OyB9CiAgICAgdmlydHVhbCB2b2lkIGZvcmNlQ2xvc2UoKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsgfQogCisgICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIG1ldGhvZCBhZnRlciBXSzkw
NDExIGNsZWFudXAgaXMgY29tcGxldGUgb24gdGhlIENocm9taXVtIHNpZGUuCiAgICAgdmlydHVh
bCB2b2lkIG9wZW4oV2ViSURCRGF0YWJhc2VDYWxsYmFja3MqKSB7IFdFQktJVF9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsgfQogCiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJJREJGYWN0b3J5LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJJREJGYWN0b3J5LmgKaW5kZXggNzBjOGM4NDBjMTE4MTBlYzdlYTUxNDU1YzRmZGU3
NDFjMmIzMWFkYi4uNjlhNDUzYWJjZDk0NGUzNzI2YWI1YWJhZTg2ZTQ3YzdkOWE1YzQzOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCRmFjdG9yeS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQkZhY3RvcnkuaApAQCAtNTUs
NyArNTUsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgZ2V0RGF0YWJhc2VOYW1lcyhX
ZWJJREJDYWxsYmFja3MqIGNhbGxiYWNrcywgY29uc3QgV2ViU2VjdXJpdHlPcmlnaW4mIG9yaWdp
biwgV2ViRnJhbWUqIGZyYW1lLCBjb25zdCBXZWJTdHJpbmcmIGRhdGFEaXIpIHsgV0VCS0lUX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAKLSAgICAvLyBGSVhNRTogVGhpcyBvdmVybG9hZCBzaG91
bGQgYmUgcmVtb3ZlZCB3aGVuIFdLOTA0MTEgbGFuZHMuCisgICAgLy8gRklYTUU6IFJlbW92ZSB0
aGlzIG92ZXJsb2FkIGFmdGVyIFdLOTA0MTEgY2xlYW51cCBpcyBjb21wbGV0ZSBvbiB0aGUgQ2hy
b21pdW0gc2lkZS4KICAgICAvLyBUaGUgV2ViS2l0IGltcGxlbWVudGF0aW9uIG9mIG9wZW4gaWdu
b3JlcyB0aGUgV2ViRnJhbWUqIHBhcmFtZXRlci4KICAgICB2aXJ0dWFsIHZvaWQgb3Blbihjb25z
dCBXZWJTdHJpbmcmIG5hbWUsIGxvbmcgbG9uZyB2ZXJzaW9uLCBXZWJJREJDYWxsYmFja3MqIGNh
bGxiYWNrcywgY29uc3QgV2ViU2VjdXJpdHlPcmlnaW4mIG9yaWdpbiwgV2ViRnJhbWUqIGZyYW1l
LCBjb25zdCBXZWJTdHJpbmcmIGRhdGFEaXIpIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkNhbGxiYWNr
c1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkNhbGxiYWNrc1Byb3h5
LmNwcAppbmRleCAxOTNiZjJiNWY2YzY2NmM3YmQ1MDYyYWQ0NDc0NDE1YmZiMzA0Mjk3Li5hZjQ5
ODRhNzdjNGI4NWUyNmUyOWVmODhhOGQyODNkZTQ2YWNjMzhjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9JREJDYWxsYmFja3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvSURCQ2FsbGJhY2tzUHJveHkuY3BwCkBAIC0zNCwxMyArMzQsMTUg
QEAKICNpbmNsdWRlICJJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiSURC
RGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiSURCRGF0YWJhc2VCYWNrZW5k
UHJveHkuaCIKKyNpbmNsdWRlICJJREJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5LmgiCiAjaW5jbHVk
ZSAiSURCRGF0YWJhc2VFcnJvci5oIgogI2luY2x1ZGUgIklEQk9iamVjdFN0b3JlQmFja2VuZElu
dGVyZmFjZS5oIgogI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZS5oIgog
I2luY2x1ZGUgIldlYklEQkNhbGxiYWNrcy5oIgogI2luY2x1ZGUgIldlYklEQkN1cnNvckltcGwu
aCIKLSNpbmNsdWRlICJXZWJJREJEYXRhYmFzZUltcGwuaCIKKyNpbmNsdWRlICJXZWJJREJEYXRh
YmFzZUNhbGxiYWNrcy5oIgogI2luY2x1ZGUgIldlYklEQkRhdGFiYXNlRXJyb3IuaCIKKyNpbmNs
dWRlICJXZWJJREJEYXRhYmFzZUltcGwuaCIKICNpbmNsdWRlICJXZWJJREJLZXkuaCIKICNpbmNs
dWRlICJXZWJJREJUcmFuc2FjdGlvbkltcGwuaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJTZXJp
YWxpemVkU2NyaXB0VmFsdWUuaCIKQEAgLTc1LDcgKzc3LDggQEAgdm9pZCBJREJDYWxsYmFja3NQ
cm94eTo6b25TdWNjZXNzKFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZT4gaWRi
Q3Vyc28KIAogdm9pZCBJREJDYWxsYmFja3NQcm94eTo6b25TdWNjZXNzKFBhc3NSZWZQdHI8SURC
RGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiBiYWNrZW5kKQogewotICAgIG1fY2FsbGJhY2tzLT5v
blN1Y2Nlc3MobmV3IFdlYklEQkRhdGFiYXNlSW1wbChiYWNrZW5kKSk7CisgICAgQVNTRVJUKG1f
ZGF0YWJhc2VDYWxsYmFja3MuZ2V0KCkpOworICAgIG1fY2FsbGJhY2tzLT5vblN1Y2Nlc3MobmV3
IFdlYklEQkRhdGFiYXNlSW1wbChiYWNrZW5kLCBtX2RhdGFiYXNlQ2FsbGJhY2tzLnJlbGVhc2Uo
KSkpOwogfQogCiB2b2lkIElEQkNhbGxiYWNrc1Byb3h5OjpvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJ
REJLZXk+IGlkYktleSkKQEAgLTEzNyw5ICsxNDAsMTcgQEAgdm9pZCBJREJDYWxsYmFja3NQcm94
eTo6b25CbG9ja2VkKGludDY0X3QgZXhpc3RpbmdWZXJzaW9uKQogCiB2b2lkIElEQkNhbGxiYWNr
c1Byb3h5OjpvblVwZ3JhZGVOZWVkZWQoaW50NjRfdCBvbGRWZXJzaW9uLCBQYXNzUmVmUHRyPElE
QlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gdHJhbnNhY3Rpb24sIFBhc3NSZWZQdHI8SURC
RGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiBkYXRhYmFzZSkKIHsKLSAgICBtX2NhbGxiYWNrcy0+
b25VcGdyYWRlTmVlZGVkKG9sZFZlcnNpb24sIG5ldyBXZWJJREJUcmFuc2FjdGlvbkltcGwodHJh
bnNhY3Rpb24pLCBuZXcgV2ViSURCRGF0YWJhc2VJbXBsKGRhdGFiYXNlKSk7CisgICAgQVNTRVJU
KG1fZGF0YWJhc2VDYWxsYmFja3MpOworICAgIG1fY2FsbGJhY2tzLT5vblVwZ3JhZGVOZWVkZWQo
b2xkVmVyc2lvbiwgbmV3IFdlYklEQlRyYW5zYWN0aW9uSW1wbCh0cmFuc2FjdGlvbiksIG5ldyBX
ZWJJREJEYXRhYmFzZUltcGwoZGF0YWJhc2UsIG1fZGF0YWJhc2VDYWxsYmFja3MpKTsKK30KKwor
dm9pZCBJREJDYWxsYmFja3NQcm94eTo6c2V0RGF0YWJhc2VDYWxsYmFja3MoUGFzc1JlZlB0cjxJ
REJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5PiBkYXRhYmFzZUNhbGxiYWNrcykKK3sKKyAgICBBU1NF
UlQoIW1fZGF0YWJhc2VDYWxsYmFja3MpOworICAgIG1fZGF0YWJhc2VDYWxsYmFja3MgPSBkYXRh
YmFzZUNhbGxiYWNrczsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKKwogI2VuZGlmIC8v
IEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvSURCQ2FsbGJhY2tzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0lEQkNhbGxiYWNrc1Byb3h5LmgKaW5kZXggODI1NzU4YWFkZTkzZjQxZjI2MjkzMDM2OGJkOTY2
NjBmZTUyYTUyNy4uZjYxM2E4NWMyZTRlZDE2Y2I4ODdmNjhhMDUwMzE4NDljYjFjZWYyMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ2FsbGJhY2tzUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJDYWxsYmFja3NQcm94eS5oCkBAIC0z
OSw2ICszOSw3IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViSURCQ2FsbGJhY2tz
OworY2xhc3MgSURCRGF0YWJhc2VDYWxsYmFja3NQcm94eTsKIAogY2xhc3MgSURCQ2FsbGJhY2tz
UHJveHkgOiBwdWJsaWMgV2ViQ29yZTo6SURCQ2FsbGJhY2tzIHsKIHB1YmxpYzoKQEAgLTU5LDEw
ICs2MCwxMyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIG9uQmxvY2tlZChpbnQ2NF90IGV4
aXN0aW5nVmVyc2lvbik7CiAgICAgdmlydHVhbCB2b2lkIG9uVXBncmFkZU5lZWRlZChpbnQ2NF90
IG9sZFZlcnNpb24sIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50
ZXJmYWNlPiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+
KTsKIAorICAgIHZvaWQgc2V0RGF0YWJhc2VDYWxsYmFja3MoUGFzc1JlZlB0cjxJREJEYXRhYmFz
ZUNhbGxiYWNrc1Byb3h5Pik7CisKIHByaXZhdGU6CiAgICAgSURCQ2FsbGJhY2tzUHJveHkoUGFz
c093blB0cjxXZWJJREJDYWxsYmFja3M+KTsKIAogICAgIE93blB0cjxXZWJJREJDYWxsYmFja3M+
IG1fY2FsbGJhY2tzOworICAgIFJlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5PiBtX2Rh
dGFiYXNlQ2FsbGJhY2tzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94eS5jcHAK
aW5kZXggNTZhZmU1ZmI1ZDJiNjJmYTQ0NDk5NTQ0NjkzMGEwMWQwYmM5Nzc5OC4uNTAxY2U2MWZi
NTk1NjI2NmIwYzNiZjFiNGMwMmFlZjZjZGEwMDgwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmNwcApAQCAtMTA3LDEx
ICsxMDcsNiBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZFByb3h5OjpjbG9zZShQYXNzUmVmUHRy
PElEQkRhdGFiYXNlQ2FsbGJhY2tzPikKICAgICBtX3dlYklEQkRhdGFiYXNlLT5jbG9zZSgpOwog
fQogCi12b2lkIElEQkRhdGFiYXNlQmFja2VuZFByb3h5OjpyZWdpc3RlckZyb250ZW5kQ2FsbGJh
Y2tzKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IGRhdGFiYXNlQ2FsbGJhY2tzKQot
ewotICAgIG1fd2ViSURCRGF0YWJhc2UtPm9wZW4obmV3IFdlYklEQkRhdGFiYXNlQ2FsbGJhY2tz
SW1wbChkYXRhYmFzZUNhbGxiYWNrcykpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAog
I2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuaCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmgKaW5kZXggMmE5MzYwMGM2
ZjJmYTBjMjY3YzJkYTA2ZmI4YjkyMTZmZDgyOGUzNi4uNzk1NjEwYWE2NTcyZGNhNDZjYzI2NGRi
NWIwOGJkMTc4YzFjNTY1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
SURCRGF0YWJhc2VCYWNrZW5kUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9JREJEYXRhYmFzZUJhY2tlbmRQcm94eS5oCkBAIC01MCw4ICs1MCw2IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJm
YWNlPiB0cmFuc2FjdGlvbihXZWJDb3JlOjpET01TdHJpbmdMaXN0KiBzdG9yZU5hbWVzLCB1bnNp
Z25lZCBzaG9ydCBtb2RlLCBXZWJDb3JlOjpFeGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVhbCB2
b2lkIGNsb3NlKFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCRGF0YWJhc2VDYWxsYmFja3M+KTsKIAot
ICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckZyb250ZW5kQ2FsbGJhY2tzKFBhc3NSZWZQdHI8V2Vi
Q29yZTo6SURCRGF0YWJhc2VDYWxsYmFja3M+KTsKLQogcHJpdmF0ZToKICAgICBJREJEYXRhYmFz
ZUJhY2tlbmRQcm94eShQYXNzT3duUHRyPFdlYklEQkRhdGFiYXNlPik7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkZhY3RvcnlCYWNrZW5kUHJveHkuY3BwIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRmFjdG9yeUJhY2tlbmRQcm94eS5jcHAKaW5k
ZXggYmFiY2JhZTE4NDA5YzVkZDI1OTJjMGRmZDkyMzMyNmZiZjYwZTk0YS4uMjg5OTVlYzY2MGUz
MWZmN2NlZmFkOTNlYjNiZGEyMzQxYWExZWZmOCAxMDA3NTUKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvSURCRmFjdG9yeUJhY2tlbmRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvSURCRmFjdG9yeUJhY2tlbmRQcm94eS5jcHAKQEAgLTM0LDEyICszNCwx
NCBAQAogI2luY2x1ZGUgIkNyb3NzVGhyZWFkVGFzay5oIgogI2luY2x1ZGUgIkRPTVN0cmluZ0xp
c3QuaCIKICNpbmNsdWRlICJJREJEYXRhYmFzZUJhY2tlbmRQcm94eS5oIgorI2luY2x1ZGUgIklE
QkRhdGFiYXNlQ2FsbGJhY2tzLmgiCiAjaW5jbHVkZSAiSURCRGF0YWJhc2VFcnJvci5oIgogI2lu
Y2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdp
bi5oIgogI2luY2x1ZGUgIldlYkZyYW1lSW1wbC5oIgogI2luY2x1ZGUgIldlYklEQkNhbGxiYWNr
c0ltcGwuaCIKICNpbmNsdWRlICJXZWJJREJEYXRhYmFzZS5oIgorI2luY2x1ZGUgIldlYklEQkRh
dGFiYXNlQ2FsbGJhY2tzSW1wbC5oIgogI2luY2x1ZGUgIldlYklEQkRhdGFiYXNlRXJyb3IuaCIK
ICNpbmNsdWRlICJXZWJJREJGYWN0b3J5LmgiCiAjaW5jbHVkZSAiV2ViS2l0LmgiCkBAIC0yMDMs
MTUgKzIwNSwxNiBAQCB2b2lkIElEQkZhY3RvcnlCYWNrZW5kUHJveHk6OmdldERhdGFiYXNlTmFt
ZXMoUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxiYQogfQogCiAKLXZvaWQgSURCRmFj
dG9yeUJhY2tlbmRQcm94eTo6b3Blbihjb25zdCBTdHJpbmcmIG5hbWUsIGludDY0X3QgdmVyc2lv
biwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNrcywgUGFzc1JlZlB0cjxTZWN1
cml0eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW4sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQsIGNvbnN0IFN0cmluZyYgZGF0YURpcikKK3ZvaWQgSURCRmFjdG9yeUJhY2tlbmRQcm94eTo6
b3Blbihjb25zdCBTdHJpbmcmIG5hbWUsIGludDY0X3QgdmVyc2lvbiwgUGFzc1JlZlB0cjxJREJD
YWxsYmFja3M+IHBycENhbGxiYWNrcywgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4g
cHJwRGF0YWJhc2VDYWxsYmFja3MsIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5
T3JpZ2luLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIGRh
dGFEaXIpCiB7CiAgICAgUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKHBycENhbGxiYWNr
cyk7CisgICAgUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBkYXRhYmFzZUNhbGxiYWNrcyhw
cnBEYXRhYmFzZUNhbGxiYWNrcyk7CiAgICAgV2ViU2VjdXJpdHlPcmlnaW4gb3JpZ2luKHNlY3Vy
aXR5T3JpZ2luKTsKICAgICBpZiAoIWFsbG93SW5kZXhlZERCKGNvbnRleHQsIG5hbWUsIG9yaWdp
biwgY2FsbGJhY2tzKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgV2ViRnJhbWVJbXBsKiB3ZWJG
cmFtZSA9IGdldFdlYkZyYW1lKGNvbnRleHQpOwotICAgIG1fd2ViSURCRmFjdG9yeS0+b3Blbihu
YW1lLCB2ZXJzaW9uLCBuZXcgV2ViSURCQ2FsbGJhY2tzSW1wbChjYWxsYmFja3MpLCBvcmlnaW4s
IHdlYkZyYW1lLCBkYXRhRGlyKTsKKyAgICBtX3dlYklEQkZhY3RvcnktPm9wZW4obmFtZSwgdmVy
c2lvbiwgbmV3IFdlYklEQkNhbGxiYWNrc0ltcGwoY2FsbGJhY2tzKSwgbmV3IFdlYklEQkRhdGFi
YXNlQ2FsbGJhY2tzSW1wbChkYXRhYmFzZUNhbGxiYWNrcyksIG9yaWdpbiwgd2ViRnJhbWUsIGRh
dGFEaXIpOwogfQogCiB2b2lkIElEQkZhY3RvcnlCYWNrZW5kUHJveHk6OmRlbGV0ZURhdGFiYXNl
KGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNr
cywgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW4sIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgZGF0YURpcikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkZhY3RvcnlCYWNrZW5kUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkZhY3RvcnlCYWNrZW5kUHJveHkuaAppbmRleCBj
MGRlOTEwYTkyY2RlYTkxYTNkM2ExYzUzMGEyODA3YzVhYmZhYTdhLi44ODM4MGQ3YTQyZWQxMTcz
MDI5MzViZWJiY2FjY2ViNmY2ZTk3ZDc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9JREJGYWN0b3J5QmFja2VuZFByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvSURCRmFjdG9yeUJhY2tlbmRQcm94eS5oCkBAIC00OSw3ICs0OSw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIH5JREJGYWN0b3J5QmFja2VuZFByb3h5KCk7CiAKICAgICB2aXJ0dWFs
IHZvaWQgZ2V0RGF0YWJhc2VOYW1lcyhQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkNhbGxiYWNrcz4s
IFBhc3NSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+LCBXZWJDb3JlOjpTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBkYXRhRGlyKTsKLSAgICB2aXJ0dWFsIHZvaWQg
b3Blbihjb25zdCBTdHJpbmcmIG5hbWUsIGludDY0X3QgdmVyc2lvbiwgUGFzc1JlZlB0cjxXZWJD
b3JlOjpJREJDYWxsYmFja3M+LCBQYXNzUmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiwg
V2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgZGF0YURpcik7
CisgICAgdmlydHVhbCB2b2lkIG9wZW4oY29uc3QgU3RyaW5nJiBuYW1lLCBpbnQ2NF90IHZlcnNp
b24sIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCQ2FsbGJhY2tzPiwgUGFzc1JlZlB0cjxXZWJDb3Jl
OjpJREJEYXRhYmFzZUNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmln
aW4+LCBXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBkYXRh
RGlyKTsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlRGF0YWJhc2UoY29uc3QgU3RyaW5nJiBuYW1l
LCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8V2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW4+LCBXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3Qg
U3RyaW5nJiBkYXRhRGlyKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwuY3BwCmluZGV4IDBkMTQyYmMwMjkzYWExM2Y1YjE5
MmMzZmRiYzU2MzM3Y2RhYzc1N2QuLjUyODc5YTlhN2YzYjczODBhYmEzMDZlZDY3M2QwYzQyYTEy
OGZjNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFi
YXNlSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJh
c2VJbXBsLmNwcApAQCAtNDUsOCArNDUsOSBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAog
bmFtZXNwYWNlIFdlYktpdCB7CiAKLVdlYklEQkRhdGFiYXNlSW1wbDo6V2ViSURCRGF0YWJhc2VJ
bXBsKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiBkYXRhYmFzZUJhY2tl
bmQpCitXZWJJREJEYXRhYmFzZUltcGw6OldlYklEQkRhdGFiYXNlSW1wbChQYXNzUmVmUHRyPElE
QkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4gZGF0YWJhc2VCYWNrZW5kLCBXVEY6OlBhc3NSZWZQ
dHI8SURCRGF0YWJhc2VDYWxsYmFja3NQcm94eT4gZGF0YWJhc2VDYWxsYmFja3MpCiAgICAgOiBt
X2RhdGFiYXNlQmFja2VuZChkYXRhYmFzZUJhY2tlbmQpCisgICAgLCBtX2RhdGFiYXNlQ2FsbGJh
Y2tzKGRhdGFiYXNlQ2FsbGJhY2tzKQogICAgICwgbV9jbG9zZVBlbmRpbmcoZmFsc2UpCiB7CiB9
CkBAIC05Myw3ICs5NCw3IEBAIFdlYklEQlRyYW5zYWN0aW9uKiBXZWJJREJEYXRhYmFzZUltcGw6
OnRyYW5zYWN0aW9uKGNvbnN0IFdlYkRPTVN0cmluZ0xpc3QmIG5hbWVzCiAKIHZvaWQgV2ViSURC
RGF0YWJhc2VJbXBsOjpjbG9zZSgpCiB7Ci0gICAgLy8gVXNlIHRoZSBjYWxsYmFja3MgdGhhdCA6
Om9wZW4gZ2F2ZSB1cyBzbyB0aGF0IHRoZSBiYWNrZW5kIGluCisgICAgLy8gVXNlIHRoZSBjYWxs
YmFja3MgcGFzc2VkIGluIHRvIHRoZSBjb25zdHJ1Y3RvciBzbyB0aGF0IHRoZSBiYWNrZW5kIGlu
CiAgICAgLy8gbXVsdGktcHJvY2VzcyBjaHJvbWl1bSBrbm93cyB3aGljaCBkYXRhYmFzZSBjb25u
ZWN0aW9uIGlzIGNsb3NpbmcuCiAgICAgaWYgKCFtX2RhdGFiYXNlQ2FsbGJhY2tzKSB7CiAgICAg
ICAgIG1fY2xvc2VQZW5kaW5nID0gdHJ1ZTsKQEAgLTExMywxNSArMTE0LDYgQEAgdm9pZCBXZWJJ
REJEYXRhYmFzZUltcGw6OmZvcmNlQ2xvc2UoKQogICAgIGNhbGxiYWNrcy0+b25Gb3JjZWRDbG9z
ZSgpOwogfQogCi12b2lkIFdlYklEQkRhdGFiYXNlSW1wbDo6b3BlbihXZWJJREJEYXRhYmFzZUNh
bGxiYWNrcyogY2FsbGJhY2tzKQotewotICAgIEFTU0VSVCghbV9kYXRhYmFzZUNhbGxiYWNrcyk7
Ci0gICAgbV9kYXRhYmFzZUNhbGxiYWNrcyA9IElEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHk6OmNy
ZWF0ZShhZG9wdFB0cihjYWxsYmFja3MpKTsKLSAgICBtX2RhdGFiYXNlQmFja2VuZC0+cmVnaXN0
ZXJGcm9udGVuZENhbGxiYWNrcyhtX2RhdGFiYXNlQ2FsbGJhY2tzKTsKLSAgICBpZiAobV9jbG9z
ZVBlbmRpbmcpCi0gICAgICAgIGNsb3NlKCk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYktpdAog
CiAjZW5kaWYgLy8gRU5BQkxFKElOREVYRURfREFUQUJBU0UpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwuaCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5oCmluZGV4IDRhODI4NGNlNTlhZDFlNjM2
Y2M0ZmJjOTcyN2JjYjc3YTQyMmMzMGUuLjljZDFjYWY1OTIwNjliNTRkZmI5NmNjODc4NDRjMzc5
NmRiM2EzMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRh
dGFiYXNlSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFi
YXNlSW1wbC5oCkBAIC00Nyw3ICs0Nyw3IEBAIGNsYXNzIFdlYklEQlRyYW5zYWN0aW9uOwogLy8g
U2VlIGNvbW1lbnQgaW4gV2ViSURCRmFjdG9yeSBmb3IgYSBoaWdoIGxldmVsIG92ZXJ2aWV3IHRo
ZXNlIGNsYXNzZXMuCiBjbGFzcyBXZWJJREJEYXRhYmFzZUltcGwgOiBwdWJsaWMgV2ViSURCRGF0
YWJhc2UgewogcHVibGljOgotICAgIFdlYklEQkRhdGFiYXNlSW1wbChXVEY6OlBhc3NSZWZQdHI8
V2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPik7CisgICAgV2ViSURCRGF0YWJh
c2VJbXBsKFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZh
Y2U+LCBXVEY6OlBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3NQcm94eT4pOwogICAgIHZp
cnR1YWwgfldlYklEQkRhdGFiYXNlSW1wbCgpOwogCiAgICAgdmlydHVhbCBXZWJJREJNZXRhZGF0
YSBtZXRhZGF0YSgpIGNvbnN0OwpAQCAtNTksOSArNTksNiBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIGZvcmNlQ2xvc2UoKTsKICAgICB2aXJ0dWFsIHZvaWQgY2xvc2UoKTsKIAotICAgIC8v
IEZJWE1FOiBSZW5hbWUgIm9wZW4iIHRvIHJlZ2lzdGVyRnJvbnRlbmRDYWxsYmFja3MuCi0gICAg
dmlydHVhbCB2b2lkIG9wZW4oV2ViSURCRGF0YWJhc2VDYWxsYmFja3MqKTsKLQogcHJpdmF0ZToK
ICAgICBXVEY6OlJlZlB0cjxXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+IG1f
ZGF0YWJhc2VCYWNrZW5kOwogICAgIFdURjo6UmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzUHJv
eHk+IG1fZGF0YWJhc2VDYWxsYmFja3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJJREJGYWN0b3J5SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJJREJGYWN0b3J5SW1wbC5jcHAKaW5kZXggYWQ3MTQ3NmI3ZWJiNDY4NmVhODI1Yjk2MjE5
MTZlNjNiMjkwYWM3Ny4uOTRhOGQ0NjhhOTBhOTBjNDEyYzdhYTZjOThhZWZiNzRiYjdhMzdiOCAx
MDA3NTUKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRmFjdG9yeUltcGwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkZhY3RvcnlJbXBsLmNw
cApAQCAtMzUsOCArMzUsMTAgQEAKIAogI2luY2x1ZGUgIkRPTVN0cmluZ0xpc3QuaCIKICNpbmNs
dWRlICJJREJDYWxsYmFja3NQcm94eS5oIgorI2luY2x1ZGUgIklEQkRhdGFiYXNlQ2FsbGJhY2tz
UHJveHkuaCIKICNpbmNsdWRlICJJREJGYWN0b3J5QmFja2VuZEltcGwuaCIKICNpbmNsdWRlICJT
ZWN1cml0eU9yaWdpbi5oIgorI2luY2x1ZGUgIldlYklEQkRhdGFiYXNlQ2FsbGJhY2tzLmgiCiAj
aW5jbHVkZSAiV2ViSURCRGF0YWJhc2VFcnJvci5oIgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4K
IApAQCAtNjMsOSArNjUsMTIgQEAgdm9pZCBXZWJJREJGYWN0b3J5SW1wbDo6Z2V0RGF0YWJhc2VO
YW1lcyhXZWJJREJDYWxsYmFja3MqIGNhbGxiYWNrcywgY29uc3QgV2ViU2UKICAgICBtX2lkYkZh
Y3RvcnlCYWNrZW5kLT5nZXREYXRhYmFzZU5hbWVzKElEQkNhbGxiYWNrc1Byb3h5OjpjcmVhdGUo
YWRvcHRQdHIoY2FsbGJhY2tzKSksIG9yaWdpbiwgMCwgZGF0YURpcik7CiB9CiAKLXZvaWQgV2Vi
SURCRmFjdG9yeUltcGw6Om9wZW4oY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBsb25nIGxvbmcgdmVy
c2lvbiwgV2ViSURCQ2FsbGJhY2tzKiBjYWxsYmFja3MsIGNvbnN0IFdlYlNlY3VyaXR5T3JpZ2lu
JiBvcmlnaW4sIFdlYkZyYW1lKiwgY29uc3QgV2ViU3RyaW5nJiBkYXRhRGlyKQordm9pZCBXZWJJ
REJGYWN0b3J5SW1wbDo6b3Blbihjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGxvbmcgbG9uZyB2ZXJz
aW9uLCBXZWJJREJDYWxsYmFja3MqIGNhbGxiYWNrcywgV2ViSURCRGF0YWJhc2VDYWxsYmFja3Mq
IGRhdGFiYXNlQ2FsbGJhY2tzLCBjb25zdCBXZWJTZWN1cml0eU9yaWdpbiYgb3JpZ2luLCBXZWJG
cmFtZSosIGNvbnN0IFdlYlN0cmluZyYgZGF0YURpcikKIHsKLSAgICBtX2lkYkZhY3RvcnlCYWNr
ZW5kLT5vcGVuKG5hbWUsIHZlcnNpb24sIElEQkNhbGxiYWNrc1Byb3h5OjpjcmVhdGUoYWRvcHRQ
dHIoY2FsbGJhY2tzKSkuZ2V0KCksIG9yaWdpbiwgMCwgZGF0YURpcik7CisgICAgUmVmUHRyPElE
QkNhbGxiYWNrc1Byb3h5PiBjYWxsYmFja3NQcm94eSA9IElEQkNhbGxiYWNrc1Byb3h5OjpjcmVh
dGUoYWRvcHRQdHIoY2FsbGJhY2tzKSk7CisgICAgUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tz
UHJveHk+IGRhdGFiYXNlQ2FsbGJhY2tzUHJveHkgPSBJREJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5
OjpjcmVhdGUoYWRvcHRQdHIoZGF0YWJhc2VDYWxsYmFja3MpKTsKKyAgICBjYWxsYmFja3NQcm94
eS0+c2V0RGF0YWJhc2VDYWxsYmFja3MoZGF0YWJhc2VDYWxsYmFja3NQcm94eSk7CisgICAgbV9p
ZGJGYWN0b3J5QmFja2VuZC0+b3BlbihuYW1lLCB2ZXJzaW9uLCBjYWxsYmFja3NQcm94eS5nZXQo
KSwgZGF0YWJhc2VDYWxsYmFja3NQcm94eS5nZXQoKSwgb3JpZ2luLCAwLCBkYXRhRGlyKTsKIH0K
IAogdm9pZCBXZWJJREJGYWN0b3J5SW1wbDo6ZGVsZXRlRGF0YWJhc2UoY29uc3QgV2ViU3RyaW5n
JiBuYW1lLCBXZWJJREJDYWxsYmFja3MqIGNhbGxiYWNrcywgY29uc3QgV2ViU2VjdXJpdHlPcmln
aW4mIG9yaWdpbiwgV2ViRnJhbWUqLCBjb25zdCBXZWJTdHJpbmcmIGRhdGFEaXIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJGYWN0b3J5SW1wbC5oIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRmFjdG9yeUltcGwuaAppbmRleCA4MzNlZWI1
OTEyNTliODUzYzMyMWZkMTE4ZjA5NGE1YjhhN2M4ODY0Li4zM2Y1YTIxZDJjNzRmNThkZmY5NGUx
ZWI3YjkwZTVhZDQzMGQxNjI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJJREJGYWN0b3J5SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YklEQkZhY3RvcnlJbXBsLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
fldlYklEQkZhY3RvcnlJbXBsKCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgZ2V0RGF0YWJhc2VOYW1l
cyhXZWJJREJDYWxsYmFja3MqLCBjb25zdCBXZWJTZWN1cml0eU9yaWdpbiYsIFdlYkZyYW1lKiwg
Y29uc3QgV2ViU3RyaW5nJiBkYXRhRGlyKTsKLSAgICB2aXJ0dWFsIHZvaWQgb3Blbihjb25zdCBX
ZWJTdHJpbmcmIG5hbWUsIGxvbmcgbG9uZyB2ZXJzaW9uLCBXZWJJREJDYWxsYmFja3MqLCBjb25z
dCBXZWJTZWN1cml0eU9yaWdpbiYsIFdlYkZyYW1lKiwgY29uc3QgV2ViU3RyaW5nJiBkYXRhRGly
KTsKKyAgICB2aXJ0dWFsIHZvaWQgb3Blbihjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGxvbmcgbG9u
ZyB2ZXJzaW9uLCBXZWJJREJDYWxsYmFja3MqLCBXZWJJREJEYXRhYmFzZUNhbGxiYWNrcyosIGNv
bnN0IFdlYlNlY3VyaXR5T3JpZ2luJiwgV2ViRnJhbWUqLCBjb25zdCBXZWJTdHJpbmcmIGRhdGFE
aXIpOwogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVEYXRhYmFzZShjb25zdCBXZWJTdHJpbmcmIG5h
bWUsIFdlYklEQkNhbGxiYWNrcyosIGNvbnN0IFdlYlNlY3VyaXR5T3JpZ2luJiwgV2ViRnJhbWUq
LCBjb25zdCBXZWJTdHJpbmcmIGRhdGFEaXIpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJBYm9ydE9uQ29ycnVwdFRlc3QuY3BwIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJBYm9ydE9uQ29ycnVwdFRlc3QuY3BwCmluZGV4
IDFkMzk1MDk2YWFkYjNhNWIzZGU5YjcwZGFiNjBmMzE4OWNmYmE5ODYuLmIwODBiZmM0ZGY1MWEy
OThmNGZkYjVkOWMyOGU3NzE3ZjQwZGFmMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvSURCQWJvcnRPbkNvcnJ1cHRUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL0lEQkFib3J0T25Db3JydXB0VGVzdC5jcHAKQEAgLTI2LDYgKzI2LDcg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJJREJDdXJzb3JCYWNrZW5kSW50ZXJm
YWNlLmgiCiAjaW5jbHVkZSAiSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmgiCisjaW5jbHVk
ZSAiSURCRGF0YWJhc2VDYWxsYmFja3MuaCIKICNpbmNsdWRlICJJREJGYWN0b3J5QmFja2VuZElt
cGwuaCIKICNpbmNsdWRlICJJREJGYWtlQmFja2luZ1N0b3JlLmgiCiAjaW5jbHVkZSAiU2VjdXJp
dHlPcmlnaW4uaCIKQEAgLTk2LDE0ICs5NywyNiBAQCBwcm90ZWN0ZWQ6CiAgICAgfQogfTsKIAor
Y2xhc3MgRmFrZUlEQkRhdGFiYXNlQ2FsbGJhY2tzIDogcHVibGljIElEQkRhdGFiYXNlQ2FsbGJh
Y2tzIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxGYWtlSURCRGF0YWJhc2VDYWxs
YmFja3M+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBGYWtlSURCRGF0YWJhc2VDYWxs
YmFja3MoKSk7IH0KKyAgICB2aXJ0dWFsIH5GYWtlSURCRGF0YWJhc2VDYWxsYmFja3MoKSB7IH0K
KyAgICB2aXJ0dWFsIHZvaWQgb25WZXJzaW9uQ2hhbmdlKGNvbnN0IFN0cmluZyYgdmVyc2lvbikg
T1ZFUlJJREUgeyB9CisgICAgdmlydHVhbCB2b2lkIG9uVmVyc2lvbkNoYW5nZShpbnQ2NF90IG9s
ZFZlcnNpb24sIGludDY0X3QgbmV3VmVyc2lvbikgT1ZFUlJJREUgeyB9CisgICAgdmlydHVhbCB2
b2lkIG9uRm9yY2VkQ2xvc2UoKSBPVkVSUklERSB7IH0KK3ByaXZhdGU6CisgICAgRmFrZUlEQkRh
dGFiYXNlQ2FsbGJhY2tzKCkgeyB9Cit9OworCiBURVNUKElEQkFib3J0VGVzdCwgVGhlVGVzdCkK
IHsKICAgICBSZWZQdHI8SURCRmFjdG9yeUJhY2tlbmRJbXBsPiBmYWN0b3J5ID0gRmFpbGluZ0lE
QkZhY3RvcnlCYWNrZW5kSW1wbDo6Y3JlYXRlKCk7CiAgICAgY29uc3QgU3RyaW5nJiBuYW1lID0g
ImRiIG5hbWUiOwogICAgIE1vY2tJREJDYWxsYmFja3MgY2FsbGJhY2tzOworICAgIFJlZlB0cjxG
YWtlSURCRGF0YWJhc2VDYWxsYmFja3M+IGRhdGFiYXNlQ2FsbGJhY2tzID0gRmFrZUlEQkRhdGFi
YXNlQ2FsbGJhY2tzOjpjcmVhdGUoKTsKICAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG9yaWdp
biA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoImh0dHAiLCAibG9jYWxob3N0IiwgODEpOwogICAg
IGNvbnN0IGludDY0X3QgRHVtbXlWZXJzaW9uID0gMjsKLSAgICBmYWN0b3J5LT5vcGVuKG5hbWUs
IER1bW15VmVyc2lvbiwgJmNhbGxiYWNrcywgb3JpZ2luLCAwIC8qRnJhbWUqLywgU3RyaW5nKCkg
LypwYXRoKi8pOworICAgIGZhY3RvcnktPm9wZW4obmFtZSwgRHVtbXlWZXJzaW9uLCAmY2FsbGJh
Y2tzLCBkYXRhYmFzZUNhbGxiYWNrcywgb3JpZ2luLCAwIC8qRnJhbWUqLywgU3RyaW5nKCkgLypw
YXRoKi8pOwogfQogCiB9IC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9JREJEYXRhYmFzZUJhY2tlbmRUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvSURCRGF0YWJhc2VCYWNrZW5kVGVzdC5jcHAKaW5kZXggMWZhMmMyNjJk
YjFkMTU1MWVmZDI1ODFhMWI3MmU2M2VkZDJlNzUwNS4uY2I5NDI0M2QwNmFmZjIwOTljOTlhOGVl
NmJhNDYwZjVmMzIxZGVlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9JREJEYXRhYmFzZUJhY2tlbmRUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0lEQkRhdGFiYXNlQmFja2VuZFRlc3QuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5j
bHVkZSAiSURCQmFja2luZ1N0b3JlLmgiCiAjaW5jbHVkZSAiSURCQ3Vyc29yQmFja2VuZEludGVy
ZmFjZS5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNlQmFja2VuZEltcGwuaCIKKyNpbmNsdWRlICJJ
REJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5LmgiCiAjaW5jbHVkZSAiSURCRmFjdG9yeUJhY2tlbmRJ
bXBsLmgiCiAjaW5jbHVkZSAiSURCRmFrZUJhY2tpbmdTdG9yZS5oIgogI2luY2x1ZGUgIklEQklu
ZGV4QmFja2VuZEltcGwuaCIKQEAgLTQwLDkgKzQxLDEwIEBACiAjaWYgRU5BQkxFKElOREVYRURf
REFUQUJBU0UpCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwordXNpbmcgV2ViS2l0OjpJREJE
YXRhYmFzZUNhbGxiYWNrc1Byb3h5OwogdXNpbmcgV2ViS2l0OjpXZWJJREJEYXRhYmFzZTsKLXVz
aW5nIFdlYktpdDo6V2ViSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsOwogdXNpbmcgV2ViS2l0OjpX
ZWJJREJEYXRhYmFzZUltcGw7Cit1c2luZyBXZWJLaXQ6OldlYklEQkRhdGFiYXNlQ2FsbGJhY2tz
SW1wbDsKIAogbmFtZXNwYWNlIHsKIApAQCAtMTIyLDIwICsxMjQsMTYgQEAgVEVTVChJREJEYXRh
YmFzZUJhY2tlbmRUZXN0LCBDb25uZWN0aW9uTGlmZWN5Y2xlKQogICAgIEVYUEVDVF9HVChiYWNr
aW5nU3RvcmUtPnJlZkNvdW50KCksIDEpOwogCiAgICAgUmVmUHRyPE1vY2tJREJDYWxsYmFja3M+
IHJlcXVlc3QxID0gTW9ja0lEQkNhbGxiYWNrczo6Y3JlYXRlKCk7Ci0gICAgZGItPm9wZW5Db25u
ZWN0aW9uKHJlcXVlc3QxKTsKLQogICAgIFJlZlB0cjxGYWtlSURCRGF0YWJhc2VDYWxsYmFja3M+
IGNvbm5lY3Rpb24xID0gRmFrZUlEQkRhdGFiYXNlQ2FsbGJhY2tzOjpjcmVhdGUoKTsKLSAgICBk
Yi0+cmVnaXN0ZXJGcm9udGVuZENhbGxiYWNrcyhjb25uZWN0aW9uMSk7CisgICAgZGItPm9wZW5D
b25uZWN0aW9uKHJlcXVlc3QxLCBjb25uZWN0aW9uMSk7CiAKICAgICBSZWZQdHI8TW9ja0lEQkNh
bGxiYWNrcz4gcmVxdWVzdDIgPSBNb2NrSURCQ2FsbGJhY2tzOjpjcmVhdGUoKTsKLSAgICBkYi0+
b3BlbkNvbm5lY3Rpb24ocmVxdWVzdDIpOworICAgIFJlZlB0cjxGYWtlSURCRGF0YWJhc2VDYWxs
YmFja3M+IGNvbm5lY3Rpb24yID0gRmFrZUlEQkRhdGFiYXNlQ2FsbGJhY2tzOjpjcmVhdGUoKTsK
KyAgICBkYi0+b3BlbkNvbm5lY3Rpb24ocmVxdWVzdDIsIGNvbm5lY3Rpb24yKTsKIAogICAgIGRi
LT5jbG9zZShjb25uZWN0aW9uMSk7CiAgICAgRVhQRUNUX0dUKGJhY2tpbmdTdG9yZS0+cmVmQ291
bnQoKSwgMSk7CiAKLSAgICBSZWZQdHI8RmFrZUlEQkRhdGFiYXNlQ2FsbGJhY2tzPiBjb25uZWN0
aW9uMiA9IEZha2VJREJEYXRhYmFzZUNhbGxiYWNrczo6Y3JlYXRlKCk7Ci0gICAgZGItPnJlZ2lz
dGVyRnJvbnRlbmRDYWxsYmFja3MoY29ubmVjdGlvbjIpOwotCiAgICAgZGItPmNsb3NlKGNvbm5l
Y3Rpb24yKTsKICAgICBFWFBFQ1RfVFJVRShiYWNraW5nU3RvcmUtPmhhc09uZVJlZigpKTsKIH0K
QEAgLTE0OSw3ICsxNDcsNyBAQCBwdWJsaWM6CiAKICAgICB+TW9ja0lEQkRhdGFiYXNlQmFja2Vu
ZFByb3h5KCkKICAgICB7Ci0gICAgICAgIEVYUEVDVF9UUlVFKG1fd2FzUmVnaXN0ZXJGcm9udGVu
ZENhbGxiYWNrc0NhbGxlZCk7CisgICAgICAgIEVYUEVDVF9UUlVFKG1fd2FzQ2xvc2VDYWxsZWQp
OwogICAgIH0KIAogICAgIHZpcnR1YWwgSURCRGF0YWJhc2VNZXRhZGF0YSBtZXRhZGF0YSgpIGNv
bnN0IHsgcmV0dXJuIElEQkRhdGFiYXNlTWV0YWRhdGEoKTsgfQpAQCAtMTYzLDE5ICsxNjEsMTIg
QEAgcHVibGljOgogICAgICAgICBtX3dhc0Nsb3NlQ2FsbGVkID0gdHJ1ZTsKICAgICAgICAgbV93
ZWJEYXRhYmFzZS5jbG9zZSgpOwogICAgIH0KLSAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJGcm9u
dGVuZENhbGxiYWNrcyhQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBjb25uZWN0aW9u
KQotICAgIHsKLSAgICAgICAgbV93YXNSZWdpc3RlckZyb250ZW5kQ2FsbGJhY2tzQ2FsbGVkID0g
dHJ1ZTsKLSAgICAgICAgbV93ZWJEYXRhYmFzZS5vcGVuKG5ldyBXZWJJREJEYXRhYmFzZUNhbGxi
YWNrc0ltcGwoY29ubmVjdGlvbikpOwotICAgIH0KIAogcHJpdmF0ZToKICAgICBNb2NrSURCRGF0
YWJhc2VCYWNrZW5kUHJveHkoV2ViSURCRGF0YWJhc2VJbXBsJiB3ZWJEYXRhYmFzZSkKLSAgICAg
ICAgOiBtX3dhc1JlZ2lzdGVyRnJvbnRlbmRDYWxsYmFja3NDYWxsZWQoZmFsc2UpCi0gICAgICAg
ICwgbV93YXNDbG9zZUNhbGxlZChmYWxzZSkKKyAgICAgICAgOiBtX3dhc0Nsb3NlQ2FsbGVkKGZh
bHNlKQogICAgICAgICAsIG1fd2ViRGF0YWJhc2Uod2ViRGF0YWJhc2UpIHsgfQogCi0gICAgYm9v
bCBtX3dhc1JlZ2lzdGVyRnJvbnRlbmRDYWxsYmFja3NDYWxsZWQ7CiAgICAgYm9vbCBtX3dhc0Ns
b3NlQ2FsbGVkOwogCiAgICAgV2ViSURCRGF0YWJhc2VJbXBsJiBtX3dlYkRhdGFiYXNlOwpAQCAt
MTkxLDE4ICsxODIsMTkgQEAgVEVTVChJREJEYXRhYmFzZUJhY2tlbmRUZXN0LCBGb3JjZWRDbG9z
ZSkKICAgICBSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW1wbD4gYmFja2VuZCA9IElEQkRhdGFi
YXNlQmFja2VuZEltcGw6OmNyZWF0ZSgiZGIiLCBiYWNraW5nU3RvcmUuZ2V0KCksIGNvb3JkaW5h
dG9yLCBmYWN0b3J5LCAidW5pcXVlaWQiKTsKICAgICBFWFBFQ1RfR1QoYmFja2luZ1N0b3JlLT5y
ZWZDb3VudCgpLCAxKTsKIAotICAgIFdlYklEQkRhdGFiYXNlSW1wbCB3ZWJEYXRhYmFzZShiYWNr
ZW5kKTsKLQotICAgIFJlZlB0cjxNb2NrSURCQ2FsbGJhY2tzPiByZXF1ZXN0MSA9IE1vY2tJREJD
YWxsYmFja3M6OmNyZWF0ZSgpOwotICAgIGJhY2tlbmQtPm9wZW5Db25uZWN0aW9uKHJlcXVlc3Qx
KTsKKyAgICBSZWZQdHI8RmFrZUlEQkRhdGFiYXNlQ2FsbGJhY2tzPiBjb25uZWN0aW9uID0gRmFr
ZUlEQkRhdGFiYXNlQ2FsbGJhY2tzOjpjcmVhdGUoKTsKKyAgICBSZWZQdHI8SURCRGF0YWJhc2VD
YWxsYmFja3NQcm94eT4gY29ubmVjdGlvblByb3h5ID0gSURCRGF0YWJhc2VDYWxsYmFja3NQcm94
eTo6Y3JlYXRlKGFkb3B0UHRyKG5ldyBXZWJJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwoY29ubmVj
dGlvbikpKTsKKyAgICBXZWJJREJEYXRhYmFzZUltcGwgd2ViRGF0YWJhc2UoYmFja2VuZCwgY29u
bmVjdGlvblByb3h5KTsKIAogICAgIFJlZlB0cjxNb2NrSURCRGF0YWJhc2VCYWNrZW5kUHJveHk+
IHByb3h5ID0gTW9ja0lEQkRhdGFiYXNlQmFja2VuZFByb3h5OjpjcmVhdGUod2ViRGF0YWJhc2Up
OworICAgIFJlZlB0cjxNb2NrSURCQ2FsbGJhY2tzPiByZXF1ZXN0ID0gTW9ja0lEQkNhbGxiYWNr
czo6Y3JlYXRlKCk7CisgICAgYmFja2VuZC0+b3BlbkNvbm5lY3Rpb24ocmVxdWVzdCwgY29ubmVj
dGlvblByb3h5KTsKIAogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQgPSAwOwot
ICAgIFJlZlB0cjxJREJEYXRhYmFzZT4gaWRiRGF0YWJhc2UgPSBJREJEYXRhYmFzZTo6Y3JlYXRl
KGNvbnRleHQsIHByb3h5KTsKLSAgICBpZGJEYXRhYmFzZS0+cmVnaXN0ZXJGcm9udGVuZENhbGxi
YWNrcygpOworICAgIFJlZlB0cjxJREJEYXRhYmFzZT4gaWRiRGF0YWJhc2UgPSBJREJEYXRhYmFz
ZTo6Y3JlYXRlKGNvbnRleHQsIHByb3h5LCBjb25uZWN0aW9uKTsKIAogICAgIHdlYkRhdGFiYXNl
LmZvcmNlQ2xvc2UoKTsKKwogICAgIEVYUEVDVF9UUlVFKGJhY2tpbmdTdG9yZS0+aGFzT25lUmVm
KCkpOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>163406</attachid>
            <date>2012-09-11 11:15:00 -0700</date>
            <delta_ts>2012-09-13 11:43:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-90411-20120911111435.patch</filename>
            <type>text/plain</type>
            <size>67679</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI4MDE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWNhZTY2ZjExM2ExZjk5
NWQxY2NiMDY4YzY2YjViOTQwMTY5NjI4OC4uMTBhOGEzMTAxNmI4ZjQ5ZDc5ZjAzZWM4NWRkMTMx
YTgxNjZiMjZkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgxIEBACisyMDEyLTA5LTA2ICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBDb25z
b2xpZGF0ZSB0d28tcGhhc2UgY29ubmVjdGlvbiB0byBhdm9pZCByYWNlIGNvbmRpdGlvbnMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkwNDExCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUHJldmlvdXNseSwg
SURCIGNvbm5lY3Rpb25zIHdlcmUgb3BlbmVkIGJ5IGhhdmluZyB0aGUgZnJvbnQtZW5kICgxKSBj
YWxsIHRocm91Z2ggdG8KKyAgICAgICAgYSBiYWNrLWVuZCBvcGVuKCkgbWV0aG9kLCBldmVudHVh
bGx5IHJlY2VpdmUgYSBzdWNjZXNzIG1lc3NhZ2Ugd2l0aCBhIGJhY2stZW5kIG9iamVjdAorICAg
ICAgICBoYW5kbGUsIGFuZCAoMikgY2FsbCBpbnRvIHRoZSBiYWNrLWVuZCBvYmplY3QgdG8gcmVn
aXN0ZXIgZnJvbnQtZW5kIGNhbGxiYWNrcy4gVGhpcyBsZWZ0CisgICAgICAgIHRoZSBiYWNrLWVu
ZCdzIG5vdGlvbiBvZiBhbiBvcGVuIGNvbm5lY3Rpb24gaW4gYSBsaW1ibyBzdGF0ZSBiZXR3ZWVu
IHRoZXNlIHR3byBjYWxscy4KKyAgICAgICAgSW4gbXVsdGktcHJvY2VzcyBwb3J0cywgYSBjcmFz
aCBvZiB0aGUgZnJvbnQtZW5kIHByb2Nlc3MgY291bGQgbGVhdmUgdGhlIGJhY2stZW5kIHdlZGdl
ZAorICAgICAgICB3YWl0aW5nIGZvciB0aGlzIHNlY29uZCBjYWxsIChlLmcuIGNhbid0IGRlbGV0
ZSB1bnRpbCBhbGwgY29ubmVjdGlvbnMgYXJlIGNsb3NlZCkuCisKKyAgICAgICAgU2ltcGxpZnkg
dGhpcyBieSBoYXZpbmcgdGhlIGZyb250LWVuZCBwYXNzIHRocm91Z2ggdGhlIGNhbGxiYWNrcyBp
bnRvIHRoZSBiYWNrLWVuZAorICAgICAgICBkdXJpbmcgdGhlIGluaXRpYWwgb3BlbigpIGNhbGws
IHdoaWNoIGVsaW1pbmF0ZXMgdGhlIGxpbWJvIHN0YXRlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0
cyAtIG5vIGZ1bmN0aW9uYWwgY2hhbmdlcy4gQ2hyb21pdW0gcG9ydCdzIHdlYmtpdF91bml0X3Rl
c3RzIHVwZGF0ZWQuCisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZTo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQkRhdGFiYXNlOjpJREJEYXRhYmFzZSk6IERiLWNhbGxiYWNrcyBpcyBhdmFpbGFi
bGUgYXQgY3JlYXRpb24gdGltZS4KKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlOjp+SURC
RGF0YWJhc2UpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmg6Cisg
ICAgICAgIChJREJEYXRhYmFzZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0
YWJhc2VCYWNrZW5kSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tl
bmRJbXBsOjpQZW5kaW5nT3BlbkNhbGw6OmNyZWF0ZSk6IE5lZWQgdG8gdHJhY2sgZGItY2FsbGJh
Y2tzIGFzIHdlbGwuCisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpQ
ZW5kaW5nT3BlbkNhbGw6OmRhdGFiYXNlQ2FsbGJhY2tzKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QkRhdGFiYXNlQmFja2VuZEltcGw6OlBlbmRpbmdPcGVuQ2FsbDo6UGVuZGluZ09wZW5DYWxsKToK
KyAgICAgICAgKElEQkRhdGFiYXNlQmFja2VuZEltcGw6OlBlbmRpbmdPcGVuQ2FsbCk6CisgICAg
ICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpQZW5kaW5nT3BlbldpdGhWZXJz
aW9uQ2FsbDo6Y3JlYXRlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJh
Y2tlbmRJbXBsOjpQZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbDo6ZGF0YWJhc2VDYWxsYmFja3Mp
OgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6UGVuZGluZ09wZW5X
aXRoVmVyc2lvbkNhbGw6OlBlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxsKToKKyAgICAgICAgKElE
QkRhdGFiYXNlQmFja2VuZEltcGw6OlBlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxsKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OklEQkRhdGFiYXNlQmFja2VuZElt
cGwpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6c2V0VmVyc2lv
bik6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpjb25uZWN0aW9u
Q291bnQpOiBEb24ndCBuZWVkIHRvIGNvdW50IGxpbWJvIGNvbm5lY3Rpb25zIGFueSBtb3JlLgor
ICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6cHJvY2Vzc1BlbmRpbmdD
YWxscyk6IFBhc3MgdGhyb3VnaCBkYi1jYWxsYmFja3MuCisgICAgICAgIChXZWJDb3JlOjpJREJE
YXRhYmFzZUJhY2tlbmRJbXBsOjpvcGVuQ29ubmVjdGlvbik6IE5vIG1vcmUgbGltYm8gY29ubmVj
dGlvbnMgKHlheSEpLgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6
cnVuSW50VmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKTogUGFzcyB0aHJvdWdoIGRiLWNhbGxiYWNr
cy4KKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6Om9wZW5Db25uZWN0
aW9uV2l0aFZlcnNpb24pOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFj
a2VuZEltcGw6OmRlbGV0ZURhdGFiYXNlKTogU3R5bGUuCisgICAgICAgIChXZWJDb3JlOjpJREJE
YXRhYmFzZUJhY2tlbmRJbXBsOjpjbG9zZSk6IFJlc29sdmUgRklYTUUgYWJvdXQgY29ubmVjdGlv
bkNvdW50LgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZElt
cGwuaDoKKyAgICAgICAgKElEQkRhdGFiYXNlQmFja2VuZEltcGwpOgorICAgICAgICAqIE1vZHVs
ZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZS5oOgorICAgICAgICAoSURC
RGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9J
REJEYXRhYmFzZUNhbGxiYWNrc0ltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJh
c2VDYWxsYmFja3NJbXBsOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VD
YWxsYmFja3NJbXBsOjpJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCRGF0YWJhc2VDYWxsYmFja3NJbXBsOjpjb25uZWN0KToKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9JREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwuaDoKKyAgICAgICAgKElEQkRhdGFi
YXNlQ2FsbGJhY2tzSW1wbCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9y
eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJGYWN0b3J5OjpvcGVuKTogTWludCB0aGUgZGIt
Y2FsbGJhY2tzIGhlcmUuLi4KKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5
QmFja2VuZEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCRmFjdG9yeUJhY2tlbmRJbXBs
OjpvcGVuKTogLi4ucGFzc2VkIHRocm91Z2ggdG8gaGVyZS4uLgorICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5oOgorICAgICAgICAoSURCRmFjdG9yeUJh
Y2tlbmRJbXBsKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5QmFja2Vu
ZEludGVyZmFjZS5oOgorICAgICAgICAoSURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2UpOgorICAg
ICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQk9wZW5EQlJlcXVlc3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SURCT3BlbkRCUmVxdWVzdDo6Y3JlYXRlKTogLi4uYWxsIHRoZSB3YXkgdG8gaGVy
ZS4uLgorICAgICAgICAoV2ViQ29yZTo6SURCT3BlbkRCUmVxdWVzdDo6SURCT3BlbkRCUmVxdWVz
dCk6CisgICAgICAgIChXZWJDb3JlOjpJREJPcGVuREJSZXF1ZXN0OjpvblVwZ3JhZGVOZWVkZWQp
OiAuLi5hbmQgZmluYWxseSBob29rZWQgdXAgaGVyZS4KKyAgICAgICAgKFdlYkNvcmU6OklEQk9w
ZW5EQlJlcXVlc3Q6Om9uU3VjY2Vzcyk6IChvciBoZXJlLCBpZiBubyB1cGdyYWRlIG5lZWRlZCku
CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCT3BlbkRCUmVxdWVzdC5oOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChJREJPcGVuREJSZXF1ZXN0KToKKyAgICAgICAgKiBNb2R1
bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJU
cmFuc2FjdGlvbjo6b25BYm9ydCk6IFR3ZWFrIGV2ZW50L25vdGlmaWNhdGlvbiBvcmRlcmluZzsg
dGhlCisgICAgICAgIG5vdGlmeWluZyB0aGUgZGF0YWJhc2UgdGhhdCB0aGUgdHJhbnNhY3Rpb24g
aXMgZmluaXNoZWQgbWF5IHVuYmxvY2sgY2xvc2luZywKKyAgICAgICAgd2hpY2ggZmlyZXMgbW9y
ZSBldmVudHMsIGFuZCB0aGUgZGVsaXZlcnkgbWF0dGVycy4gUHJldmlvdXNseSB0aGUgY2xvc2Ug
d291bGQKKyAgICAgICAgYmUgYmxvY2tlZCBieSB0aGUgdHJhbnNhY3Rpb24gd2hpY2ggZ2F2ZSB0
aGUgZGVzaXJlZCBvcmRlci4KKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpvbkNv
bXBsZXRlKTogRGl0dG8uCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFn
ZW50LmNwcDogTmV3IGhvb2t1cCBsb2dpYy4KKyAgICAgICAgKFdlYkNvcmUpOgorCiAyMDEyLTA5
LTA5ICBQYXRyaWNrIEdhbnN0ZXJlciAgPHBhcm9nYUB3ZWJraXQub3JnPgogCiAgICAgICAgIEFk
ZCBTdHJpbmdCdWlsZGVyOjphcHBlbmROdW1iZXIoKSBhbmQgdXNlIGl0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCmluZGV4IDIwMzYyYzM2NTBkMTExZjQ4ZmZhYTYwZWJjMTY0MTU0N2U2MDY4YjIu
LmRjYzBlMTliNTBkZmM3ZjMyYjVkZDc2YmE2MzE0MGQzNWUwMzBiYjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTMgQEAKKzIwMTItMDktMDYgIEpvc2h1YSBCZWxsICA8
anNiZWxsQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IENvbnNvbGlkYXRlIHR3
by1waGFzZSBjb25uZWN0aW9uIHRvIGF2b2lkIHJhY2UgY29uZGl0aW9ucworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTA0MTEKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBUEkgcGx1bWJpbmcgZm9yIHNpbXBs
aWZpZWQgc2luZ2xlLXBoYXNlIGNvbm5lY3Rpb24gb3BlbmluZywgYW5kIHRlc3RzIHVwZGF0ZWQK
KyAgICAgICAgdG8gZXhlcmNpc2UgdGhlIG5ldyBBUElzLgorCisgICAgICAgICogcHVibGljL1dl
YklEQkRhdGFiYXNlLmg6CisgICAgICAgIChXZWJJREJEYXRhYmFzZSk6IEp1c3QgYSBGSVhNRSB0
byByZW1vdmUgdGhlIG9sZCBzZWNvbmQtcGhhc2UgaG9va3VwIEFQSS4KKyAgICAgICAgKiBwdWJs
aWMvV2ViSURCRmFjdG9yeS5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYklEQkZh
Y3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJGYWN0b3J5OjpvcGVuKTogTmV3IG92ZXJs
b2FkIHRoYXQgdGFrZXMgZGItY2FsbGJhY2tzLgorICAgICAgICAqIHNyYy9JREJDYWxsYmFja3NQ
cm94eS5jcHA6IFRoZSBkYi1jYWxsYmFja3MgcGx1bWJpbmcgaXMgbmVlZGVkIGVhcmxpZXIuCisg
ICAgICAgIChXZWJLaXQ6OklEQkNhbGxiYWNrc1Byb3h5OjpvblN1Y2Nlc3MpOgorICAgICAgICAo
V2ViS2l0OjpJREJDYWxsYmFja3NQcm94eTo6b25VcGdyYWRlTmVlZGVkKToKKyAgICAgICAgKFdl
YktpdCk6CisgICAgICAgIChXZWJLaXQ6OklEQkNhbGxiYWNrc1Byb3h5OjpzZXREYXRhYmFzZUNh
bGxiYWNrcyk6IE5lZWRzIHRvIGhvbGQgb24gdG8KKyAgICAgICAgdGhlIGRiLWNhbGxiYWNrcyBh
bmQgaG9vayBpdCB1cCB3aGVuIHRoZSBvblN1Y2Nlc3MgY2FsbGJhY2sgY29tZXMgdGhyb3VnaC4K
KyAgICAgICAgKiBzcmMvSURCQ2FsbGJhY2tzUHJveHkuaDoKKyAgICAgICAgKFdlYktpdCk6Cisg
ICAgICAgIChJREJDYWxsYmFja3NQcm94eSk6CisgICAgICAgICogc3JjL0lEQkRhdGFiYXNlQmFj
a2VuZFByb3h5LmNwcDoKKyAgICAgICAgKiBzcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuaDoK
KyAgICAgICAgKElEQkRhdGFiYXNlQmFja2VuZFByb3h5KToKKyAgICAgICAgKiBzcmMvSURCRmFj
dG9yeUJhY2tlbmRQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OklEQkZhY3RvcnlCYWNrZW5k
UHJveHk6Om9wZW4pOgorICAgICAgICAqIHNyYy9JREJGYWN0b3J5QmFja2VuZFByb3h5Lmg6Cisg
ICAgICAgIChJREJGYWN0b3J5QmFja2VuZFByb3h5KToKKyAgICAgICAgKiBzcmMvV2ViSURCRGF0
YWJhc2VJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSURCRGF0YWJhc2VJbXBsOjpXZWJJ
REJEYXRhYmFzZUltcGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJEYXRhYmFzZUltcGw6OmNs
b3NlKToKKyAgICAgICAgKiBzcmMvV2ViSURCRGF0YWJhc2VJbXBsLmg6CisgICAgICAgIChXZWJJ
REJEYXRhYmFzZUltcGwpOgorICAgICAgICAqIHNyYy9XZWJJREJGYWN0b3J5SW1wbC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYklEQkZhY3RvcnlJbXBsOjpvcGVuKToKKyAgICAgICAgKiBzcmMv
V2ViSURCRmFjdG9yeUltcGwuaDoKKyAgICAgICAgKFdlYklEQkZhY3RvcnlJbXBsKToKKyAgICAg
ICAgKiB0ZXN0cy9JREJBYm9ydE9uQ29ycnVwdFRlc3QuY3BwOgorICAgICAgICAoRmFrZUlEQkRh
dGFiYXNlQ2FsbGJhY2tzKToKKyAgICAgICAgKFdlYkNvcmU6OkZha2VJREJEYXRhYmFzZUNhbGxi
YWNrczo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZha2VJREJEYXRhYmFzZUNhbGxiYWNr
czo6fkZha2VJREJEYXRhYmFzZUNhbGxiYWNrcyk6CisgICAgICAgIChXZWJDb3JlOjpGYWtlSURC
RGF0YWJhc2VDYWxsYmFja3M6OkZha2VJREJEYXRhYmFzZUNhbGxiYWNrcyk6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlRFU1QpOiBVcGRhdGVkIGNvbm5lY3Rpb24gc2Vx
dWVuY2UuCisgICAgICAgICogdGVzdHMvSURCRGF0YWJhc2VCYWNrZW5kVGVzdC5jcHA6IERpdHRv
LgorCiAyMDEyLTA5LTA5ICBLZWlzaGkgSGF0dG9yaSAgPGtlaXNoaUB3ZWJraXQub3JnPgogCiAg
ICAgICAgIFJFR1JFU1NJT04ocjEyNzU1OCk6IEZpeCBhIGNyYXNoIGluIERhdGVUaW1lQ2hvb3Nl
ckltcGw6OmRpZENsb3NlUG9wdXAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkRhdGFiYXNlLmNwcAppbmRleCBiM2Y3MGFkZDI5MzJjZTE1OTdlY2EwNTVhZWQxZWVm
MDcwY2Q1ZGE3Li5kNjQxZDA0YTQzNmUxZmZmNWY2NDE4NGZkODM0MmY0MmQ1YzAzNzQ5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwCkBA
IC0zMSw3ICszMSw3IEBACiAjaW5jbHVkZSAiRXZlbnRRdWV1ZS5oIgogI2luY2x1ZGUgIkV4Y2Vw
dGlvbkNvZGUuaCIKICNpbmNsdWRlICJJREJBbnkuaCIKLSNpbmNsdWRlICJJREJEYXRhYmFzZUNh
bGxiYWNrc0ltcGwuaCIKKyNpbmNsdWRlICJJREJEYXRhYmFzZUNhbGxiYWNrcy5oIgogI2luY2x1
ZGUgIklEQkRhdGFiYXNlRXJyb3IuaCIKICNpbmNsdWRlICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5o
IgogI2luY2x1ZGUgIklEQkV2ZW50RGlzcGF0Y2hlci5oIgpAQCAtNTAsMjkgKzUwLDI4IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxJREJEYXRhYmFzZT4gSURCRGF0YWJh
c2U6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElE
QkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4gZGF0YWJhc2UpCitQYXNzUmVmUHRyPElEQkRhdGFi
YXNlPiBJREJEYXRhYmFzZTo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQs
IFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiBkYXRhYmFzZSwgUGFzc1Jl
ZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gY2FsbGJhY2tzKQogewotICAgIFJlZlB0cjxJREJE
YXRhYmFzZT4gaWRiRGF0YWJhc2UoYWRvcHRSZWYobmV3IElEQkRhdGFiYXNlKGNvbnRleHQsIGRh
dGFiYXNlKSkpOworICAgIFJlZlB0cjxJREJEYXRhYmFzZT4gaWRiRGF0YWJhc2UoYWRvcHRSZWYo
bmV3IElEQkRhdGFiYXNlKGNvbnRleHQsIGRhdGFiYXNlLCBjYWxsYmFja3MpKSk7CiAgICAgaWRi
RGF0YWJhc2UtPnN1c3BlbmRJZk5lZWRlZCgpOwogICAgIHJldHVybiBpZGJEYXRhYmFzZS5yZWxl
YXNlKCk7CiB9CiAKLUlEQkRhdGFiYXNlOjpJREJEYXRhYmFzZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4gYmFj
a2VuZCkKK0lEQkRhdGFiYXNlOjpJREJEYXRhYmFzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBj
b250ZXh0LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4gYmFja2VuZCwg
UGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gY2FsbGJhY2tzKQogICAgIDogQWN0aXZl
RE9NT2JqZWN0KGNvbnRleHQsIHRoaXMpCiAgICAgLCBtX2JhY2tlbmQoYmFja2VuZCkKICAgICAs
IG1fY2xvc2VQZW5kaW5nKGZhbHNlKQogICAgICwgbV9jb250ZXh0U3RvcHBlZChmYWxzZSkKKyAg
ICAsIG1fZGF0YWJhc2VDYWxsYmFja3MoY2FsbGJhY2tzKQogewogICAgIC8vIFdlIHBhc3MgYSBy
ZWZlcmVuY2Ugb2YgdGhpcyBvYmplY3QgYmVmb3JlIGl0IGNhbiBiZSBhZG9wdGVkLgogICAgIHJl
bGF4QWRvcHRpb25SZXF1aXJlbWVudCgpOwotICAgIG1fZGF0YWJhc2VDYWxsYmFja3MgPSBJREJE
YXRhYmFzZUNhbGxiYWNrc0ltcGw6OmNyZWF0ZSh0aGlzKTsKICAgICBtX21ldGFkYXRhID0gbV9i
YWNrZW5kLT5tZXRhZGF0YSgpOwogfQogCiBJREJEYXRhYmFzZTo6fklEQkRhdGFiYXNlKCkKIHsK
ICAgICBjbG9zZSgpOwotICAgIG1fZGF0YWJhc2VDYWxsYmFja3MtPnVucmVnaXN0ZXJEYXRhYmFz
ZSh0aGlzKTsKIH0KIAogdm9pZCBJREJEYXRhYmFzZTo6dHJhbnNhY3Rpb25DcmVhdGVkKElEQlRy
YW5zYWN0aW9uKiB0cmFuc2FjdGlvbikKQEAgLTMzNSwxMiArMzM0LDYgQEAgdm9pZCBJREJEYXRh
YmFzZTo6b25WZXJzaW9uQ2hhbmdlKGNvbnN0IFN0cmluZyYgdmVyc2lvbikKICAgICBlbnF1ZXVl
RXZlbnQoSURCVmVyc2lvbkNoYW5nZUV2ZW50OjpjcmVhdGUodmVyc2lvbiwgZXZlbnROYW1lcygp
LnZlcnNpb25jaGFuZ2VFdmVudCkpOwogfQogCi12b2lkIElEQkRhdGFiYXNlOjpyZWdpc3RlckZy
b250ZW5kQ2FsbGJhY2tzKCkKLXsKLSAgICBBU1NFUlQobV9iYWNrZW5kKTsKLSAgICBtX2JhY2tl
bmQtPnJlZ2lzdGVyRnJvbnRlbmRDYWxsYmFja3MobV9kYXRhYmFzZUNhbGxiYWNrcyk7Ci19Ci0K
IHZvaWQgSURCRGF0YWJhc2U6OmVucXVldWVFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBldmVudCkK
IHsKICAgICBBU1NFUlQoIW1fY29udGV4dFN0b3BwZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmgKaW5kZXggMjdmMDNiNmUzNTQ4YTgwMGY0MWEz
ZmFlNTg2MDE3OWM4N2ZkNzJjZC4uNjQ5OTI0YWI2NjJkOTk0NWM3OGUyMzJlYmI0MzY5MDQ1Njkz
MjUwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0
YWJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFz
ZS5oCkBAIC01MSw3ICs1MSw3IEBAIHR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7CiAKIGNsYXNz
IElEQkRhdGFiYXNlIDogcHVibGljIFJlZkNvdW50ZWQ8SURCRGF0YWJhc2U+LCBwdWJsaWMgRXZl
bnRUYXJnZXQsIHB1YmxpYyBBY3RpdmVET01PYmplY3QgewogcHVibGljOgotICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPElEQkRhdGFiYXNlPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBh
c3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPik7CisgICAgc3RhdGljIFBhc3NS
ZWZQdHI8SURCRGF0YWJhc2U+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1Jl
ZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNl
Q2FsbGJhY2tzPik7CiAgICAgfklEQkRhdGFiYXNlKCk7CiAKICAgICB2b2lkIHRyYW5zYWN0aW9u
Q3JlYXRlZChJREJUcmFuc2FjdGlvbiopOwpAQCAtODksNyArODksNiBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkg
Y29uc3Q7CiAKICAgICB2b2lkIGZvcmNlQ2xvc2UoKTsKLSAgICB2b2lkIHJlZ2lzdGVyRnJvbnRl
bmRDYWxsYmFja3MoKTsKICAgICBjb25zdCBJREJEYXRhYmFzZU1ldGFkYXRhIG1ldGFkYXRhKCkg
Y29uc3QgeyByZXR1cm4gbV9tZXRhZGF0YTsgfQogICAgIHZvaWQgZW5xdWV1ZUV2ZW50KFBhc3NS
ZWZQdHI8RXZlbnQ+KTsKICAgICBib29sIGRpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4g
ZXZlbnQsIEV4Y2VwdGlvbkNvZGUmIGVjKSB7IHJldHVybiBFdmVudFRhcmdldDo6ZGlzcGF0Y2hF
dmVudChldmVudCwgZWMpOyB9CkBAIC05OSw3ICs5OCw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBS
ZWZDb3VudGVkPElEQkRhdGFiYXNlPjo6ZGVyZWY7CiAKIHByaXZhdGU6Ci0gICAgSURCRGF0YWJh
c2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5k
SW50ZXJmYWNlPik7CisgICAgSURCRGF0YWJhc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBh
c3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiwgUGFzc1JlZlB0cjxJREJEYXRh
YmFzZUNhbGxiYWNrcz4pOwogCiAgICAgLy8gRXZlbnRUYXJnZXQKICAgICB2aXJ0dWFsIHZvaWQg
cmVmRXZlbnRUYXJnZXQoKSB7IHJlZigpOyB9CkBAIC0xMjMsNyArMTIyLDcgQEAgcHJpdmF0ZToK
ICAgICAvLyBkYXRhYmFzZSBzbyB0aGF0IHdlIGNhbiBjYW5jZWwgdGhlbSBpZiB0aGUgZGF0YWJh
c2UgY2xvc2VzLgogICAgIFZlY3RvcjxSZWZQdHI8RXZlbnQ+ID4gbV9lbnF1ZXVlZEV2ZW50czsK
IAotICAgIFJlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGw+IG1fZGF0YWJhc2VDYWxsYmFj
a3M7CisgICAgUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBtX2RhdGFiYXNlQ2FsbGJhY2tz
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcAppbmRl
eCA4MTEwYzI0YzEzYjNjNDYzZWUzN2IyMGQ0Y2ZmYTcxMjQyNDRiNjM5Li5iZmIyYWUyNjc2MTVk
NjM4NTIzYzBkZTJiZWVlNDVkYzUyZmEzNDRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcApAQCAt
NDEsMzcgKzQxLDQzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSURCRGF0YWJhc2VC
YWNrZW5kSW1wbDo6UGVuZGluZ09wZW5DYWxsIDogcHVibGljIFJlZkNvdW50ZWQ8UGVuZGluZ09w
ZW5DYWxsPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8UGVuZGluZ09wZW5DYWxs
PiBjcmVhdGUoUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKKyAgICBzdGF0aWMg
UGFzc1JlZlB0cjxQZW5kaW5nT3BlbkNhbGw+IGNyZWF0ZShQYXNzUmVmUHRyPElEQkNhbGxiYWNr
cz4gY2FsbGJhY2tzLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBkYXRhYmFzZUNh
bGxiYWNrcykKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgUGVuZGluZ09wZW5D
YWxsKGNhbGxiYWNrcykpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBlbmRpbmdPcGVu
Q2FsbChjYWxsYmFja3MsIGRhdGFiYXNlQ2FsbGJhY2tzKSk7CiAgICAgfQogICAgIFBhc3NSZWZQ
dHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MoKSB7IHJldHVybiBtX2NhbGxiYWNrczsgfQorICAg
IFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IGRhdGFiYXNlQ2FsbGJhY2tzKCkgeyBy
ZXR1cm4gbV9kYXRhYmFzZUNhbGxiYWNrczsgfQogCiBwcml2YXRlOgotICAgIFBlbmRpbmdPcGVu
Q2FsbChQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQorICAgIFBlbmRpbmdPcGVu
Q2FsbChQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBQYXNzUmVmUHRyPElEQkRh
dGFiYXNlQ2FsbGJhY2tzPiBkYXRhYmFzZUNhbGxiYWNrcykKICAgICAgICAgOiBtX2NhbGxiYWNr
cyhjYWxsYmFja3MpCisgICAgICAgICwgbV9kYXRhYmFzZUNhbGxiYWNrcyhkYXRhYmFzZUNhbGxi
YWNrcykKICAgICB7CiAgICAgfQogCiAgICAgUmVmUHRyPElEQkNhbGxiYWNrcz4gbV9jYWxsYmFj
a3M7CisgICAgUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBtX2RhdGFiYXNlQ2FsbGJhY2tz
OwogfTsKIAogY2xhc3MgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6UGVuZGluZ09wZW5XaXRoVmVy
c2lvbkNhbGwgOiBwdWJsaWMgUmVmQ291bnRlZDxQZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbD4g
ewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBlbmRpbmdPcGVuV2l0aFZlcnNpb25D
YWxsPiBjcmVhdGUoUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgaW50NjRfdCB2
ZXJzaW9uKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxs
PiBjcmVhdGUoUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgUGFzc1JlZlB0cjxJ
REJEYXRhYmFzZUNhbGxiYWNrcz4gZGF0YWJhc2VDYWxsYmFja3MsIGludDY0X3QgdmVyc2lvbikK
ICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgUGVuZGluZ09wZW5XaXRoVmVyc2lv
bkNhbGwoY2FsbGJhY2tzLCB2ZXJzaW9uKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcg
UGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGwoY2FsbGJhY2tzLCBkYXRhYmFzZUNhbGxiYWNrcywg
dmVyc2lvbikpOwogICAgIH0KICAgICBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tz
KCkgeyByZXR1cm4gbV9jYWxsYmFja3M7IH0KKyAgICBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2Fs
bGJhY2tzPiBkYXRhYmFzZUNhbGxiYWNrcygpIHsgcmV0dXJuIG1fZGF0YWJhc2VDYWxsYmFja3M7
IH0KICAgICBpbnQ2NF90IHZlcnNpb24oKSB7IHJldHVybiBtX3ZlcnNpb247IH0KIAogcHJpdmF0
ZToKLSAgICBQZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbChQYXNzUmVmUHRyPElEQkNhbGxiYWNr
cz4gY2FsbGJhY2tzLCBpbnQ2NF90IHZlcnNpb24pCisgICAgUGVuZGluZ09wZW5XaXRoVmVyc2lv
bkNhbGwoUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgUGFzc1JlZlB0cjxJREJE
YXRhYmFzZUNhbGxiYWNrcz4gZGF0YWJhc2VDYWxsYmFja3MsIGludDY0X3QgdmVyc2lvbikKICAg
ICAgICAgOiBtX2NhbGxiYWNrcyhjYWxsYmFja3MpCisgICAgICAgICwgbV9kYXRhYmFzZUNhbGxi
YWNrcyhkYXRhYmFzZUNhbGxiYWNrcykKICAgICAgICAgLCBtX3ZlcnNpb24odmVyc2lvbikKICAg
ICB7CiAgICAgfQogICAgIFJlZlB0cjxJREJDYWxsYmFja3M+IG1fY2FsbGJhY2tzOworICAgIFJl
ZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gbV9kYXRhYmFzZUNhbGxiYWNrczsKICAgICBpbnQ2
NF90IG1fdmVyc2lvbjsKIH07CiAKQEAgLTEzMCw3ICsxMzYsNiBAQCBJREJEYXRhYmFzZUJhY2tl
bmRJbXBsOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsKGNvbnN0IFN0cmluZyYgbmFtZSwgSURCQmFj
a2luZ1N0bwogICAgICwgbV9pZGVudGlmaWVyKHVuaXF1ZUlkZW50aWZpZXIpCiAgICAgLCBtX2Zh
Y3RvcnkoZmFjdG9yeSkKICAgICAsIG1fdHJhbnNhY3Rpb25Db29yZGluYXRvcihjb29yZGluYXRv
cikKLSAgICAsIG1fcGVuZGluZ0Nvbm5lY3Rpb25Db3VudCgwKQogewogICAgIEFTU0VSVCghbV9u
YW1lLmlzTnVsbCgpKTsKIH0KQEAgLTI0MCw2ICsyNDUsNyBAQCB2b2lkIElEQkRhdGFiYXNlQmFj
a2VuZEltcGw6OnNldFZlcnNpb24oY29uc3QgU3RyaW5nJiB2ZXJzaW9uLCBQYXNzUmVmUHRyPElE
QkNhbAogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGZvciAoRGF0YWJhc2VDYWxsYmFja3NT
ZXQ6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9kYXRhYmFzZUNhbGxiYWNrc1NldC5iZWdpbigpOyBp
dCAhPSBtX2RhdGFiYXNlQ2FsbGJhY2tzU2V0LmVuZCgpOyArK2l0KSB7CisgICAgICAgIC8vIEZy
b250IGVuZCBlbnN1cmVzIHRoZSBldmVudCBpcyBub3QgZmlyZWQgYXQgY29ubmVjdGlvbnMgdGhh
dCBoYXZlIGNsb3NlUGVuZGluZyBzZXQuCiAgICAgICAgIGlmICgqaXQgIT0gZGF0YWJhc2VDYWxs
YmFja3MpCiAgICAgICAgICAgICAoKml0KS0+b25WZXJzaW9uQ2hhbmdlKHZlcnNpb24pOwogICAg
IH0KQEAgLTM0Miw5ICszNDgsMTAgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjp0cmFu
c2FjdGlvbkZpbmlzaGVkQW5kQ29tcGxldGVGaXJlZChQYXNzUmVmUHRyPElEQlQKICAgICAgICAg
cHJvY2Vzc1BlbmRpbmdDYWxscygpOwogfQogCi1pbnQzMl90IElEQkRhdGFiYXNlQmFja2VuZElt
cGw6OmNvbm5lY3Rpb25Db3VudCgpCitzaXplX3QgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6Y29u
bmVjdGlvbkNvdW50KCkKIHsKLSAgICByZXR1cm4gbV9kYXRhYmFzZUNhbGxiYWNrc1NldC5zaXpl
KCkgKyBtX3BlbmRpbmdDb25uZWN0aW9uQ291bnQ7CisgICAgLy8gVGhpcyBkb2VzIG5vdCBpbmNs
dWRlIHBlbmRpbmcgb3BlbiBjYWxscywgYXMgdGhvc2Ugc2hvdWxkIG5vdCBibG9jayB2ZXJzaW9u
IGNoYW5nZXMgYW5kIGRlbGV0ZXMuCisgICAgcmV0dXJuIG1fZGF0YWJhc2VDYWxsYmFja3NTZXQu
c2l6ZSgpOwogfQogCiB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OnByb2Nlc3NQZW5kaW5n
Q2FsbHMoKQpAQCAtMzU1LDkgKzM2Miw4IEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6
cHJvY2Vzc1BlbmRpbmdDYWxscygpCiAgICAgICAgIFJlZlB0cjxQZW5kaW5nT3BlbldpdGhWZXJz
aW9uQ2FsbD4gcGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGwgPSBtX3BlbmRpbmdTZWNvbmRIYWxm
T3BlbldpdGhWZXJzaW9uQ2FsbHMudGFrZUZpcnN0KCk7CiAgICAgICAgIEFTU0VSVChwZW5kaW5n
T3BlbldpdGhWZXJzaW9uQ2FsbC0+dmVyc2lvbigpID09IG1faW50VmVyc2lvbik7CiAgICAgICAg
IEFTU0VSVChtX2lkICE9IEludmFsaWRJZCk7Ci0gICAgICAgICsrbV9wZW5kaW5nQ29ubmVjdGlv
bkNvdW50OwogICAgICAgICBwZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbC0+Y2FsbGJhY2tzKCkt
Pm9uU3VjY2Vzcyh0aGlzKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICAvLyBGYWxsIHRocm91
Z2ggd2hlbiBjb21wbGV0ZSwgYXMgcGVuZGluZyBkZWxldGVzIG1heSBiZSAocGFydGlhbGx5KSB1
bmJsb2NrZWQuCiAgICAgfQogCiAgICAgLy8gUGVuZGluZyBjYWxscyBtYXkgYmUgcmVxdWV1ZWQg
b3IgYWJvcnRlZApAQCAtNDAwLDcgKzQwNiw3IEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1w
bDo6cHJvY2Vzc1BlbmRpbmdDYWxscygpCiAgICAgbV9wZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2Fs
bHMuc3dhcChwZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbHMpOwogICAgIHdoaWxlICghcGVuZGlu
Z09wZW5XaXRoVmVyc2lvbkNhbGxzLmlzRW1wdHkoKSkgewogICAgICAgICBSZWZQdHI8UGVuZGlu
Z09wZW5XaXRoVmVyc2lvbkNhbGw+IHBlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxsID0gcGVuZGlu
Z09wZW5XaXRoVmVyc2lvbkNhbGxzLnRha2VGaXJzdCgpOwotICAgICAgICBvcGVuQ29ubmVjdGlv
bldpdGhWZXJzaW9uKHBlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxsLT5jYWxsYmFja3MoKSwgcGVu
ZGluZ09wZW5XaXRoVmVyc2lvbkNhbGwtPnZlcnNpb24oKSk7CisgICAgICAgIG9wZW5Db25uZWN0
aW9uV2l0aFZlcnNpb24ocGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGwtPmNhbGxiYWNrcygpLCBw
ZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbC0+ZGF0YWJhc2VDYWxsYmFja3MoKSwgcGVuZGluZ09w
ZW5XaXRoVmVyc2lvbkNhbGwtPnZlcnNpb24oKSk7CiAgICAgfQogCiAgICAgLy8gR2l2ZW4gdGhl
IGNoZWNrIGFib3ZlLCBpdCBhcHBlYXJzIHRoYXQgY2FsbHMgY2Fubm90IGJlIHJlcXVldWVkIGJ5
CkBAIC00MDksNyArNDE1LDcgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpwcm9jZXNz
UGVuZGluZ0NhbGxzKCkKICAgICBtX3BlbmRpbmdPcGVuQ2FsbHMuc3dhcChwZW5kaW5nT3BlbkNh
bGxzKTsKICAgICB3aGlsZSAoIXBlbmRpbmdPcGVuQ2FsbHMuaXNFbXB0eSgpKSB7CiAgICAgICAg
IFJlZlB0cjxQZW5kaW5nT3BlbkNhbGw+IHBlbmRpbmdPcGVuQ2FsbCA9IHBlbmRpbmdPcGVuQ2Fs
bHMudGFrZUZpcnN0KCk7Ci0gICAgICAgIG9wZW5Db25uZWN0aW9uKHBlbmRpbmdPcGVuQ2FsbC0+
Y2FsbGJhY2tzKCkpOworICAgICAgICBvcGVuQ29ubmVjdGlvbihwZW5kaW5nT3BlbkNhbGwtPmNh
bGxiYWNrcygpLCBwZW5kaW5nT3BlbkNhbGwtPmRhdGFiYXNlQ2FsbGJhY2tzKCkpOwogICAgIH0K
ICAgICBBU1NFUlQobV9wZW5kaW5nT3BlbkNhbGxzLmlzRW1wdHkoKSk7CiB9CkBAIC00MjgsNDQg
KzQzNCwzMCBAQCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gSURC
RGF0YWJhc2VCYWNrZW5kSW1wbDo6dHJhbnNhY3Rpb24oRAogICAgIHJldHVybiB0cmFuc2FjdGlv
bi5yZWxlYXNlKCk7CiB9CiAKLXZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6cmVnaXN0ZXJG
cm9udGVuZENhbGxiYWNrcyhQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBjYWxsYmFj
a3MpCi17Ci0gICAgQVNTRVJUKG1fYmFja2luZ1N0b3JlLmdldCgpKTsKLSAgICBBU1NFUlQobV9w
ZW5kaW5nQ29ubmVjdGlvbkNvdW50KTsKLSAgICAtLW1fcGVuZGluZ0Nvbm5lY3Rpb25Db3VudDsK
LSAgICBtX2RhdGFiYXNlQ2FsbGJhY2tzU2V0LmFkZChSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFj
a3M+KGNhbGxiYWNrcykpOwotICAgIC8vIFdlIGdpdmUgbWF4IHByaW9yaXR5IHRvIG9wZW4gY2Fs
bHMgdGhhdCBmb2xsb3cgdXBncmFkZW5lZWRlZAotICAgIC8vIGV2ZW50czsgdHJpZ2dlciB0aGUg
cmVzdCBvZiB0aGUgcXVldWVzIHRvIGJlIHNlcnZpY2VkIHdoZW4gdGhvc2Ugb3BlbgotICAgIC8v
IGNhbGxzIGFyZSBmaW5pc2hlZC4KLSAgICBwcm9jZXNzUGVuZGluZ0NhbGxzKCk7Ci19Ci0KLXZv
aWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6b3BlbkNvbm5lY3Rpb24oUGFzc1JlZlB0cjxJREJD
YWxsYmFja3M+IGNhbGxiYWNrcykKK3ZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6b3BlbkNv
bm5lY3Rpb24oUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgUGFzc1JlZlB0cjxJ
REJEYXRhYmFzZUNhbGxiYWNrcz4gZGF0YWJhc2VDYWxsYmFja3MpCiB7CiAgICAgQVNTRVJUKG1f
YmFja2luZ1N0b3JlLmdldCgpKTsKICAgICBpZiAoIW1fcGVuZGluZ0RlbGV0ZUNhbGxzLmlzRW1w
dHkoKSB8fCBtX3J1bm5pbmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24gfHwgIW1fcGVuZGluZ1Nl
dFZlcnNpb25DYWxscy5pc0VtcHR5KCkpCi0gICAgICAgIG1fcGVuZGluZ09wZW5DYWxscy5hcHBl
bmQoUGVuZGluZ09wZW5DYWxsOjpjcmVhdGUoY2FsbGJhY2tzKSk7CisgICAgICAgIG1fcGVuZGlu
Z09wZW5DYWxscy5hcHBlbmQoUGVuZGluZ09wZW5DYWxsOjpjcmVhdGUoY2FsbGJhY2tzLCBkYXRh
YmFzZUNhbGxiYWNrcykpOwogICAgIGVsc2UgewogICAgICAgICBpZiAobV9pZCA9PSBJbnZhbGlk
SWQgJiYgIW9wZW5JbnRlcm5hbCgpKQogICAgICAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElE
QkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VU5LTk9XTl9FUlIs
ICJJbnRlcm5hbCBlcnJvci4iKSk7CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgKyttX3Bl
bmRpbmdDb25uZWN0aW9uQ291bnQ7CisgICAgICAgICAgICBtX2RhdGFiYXNlQ2FsbGJhY2tzU2V0
LmFkZChSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+KGRhdGFiYXNlQ2FsbGJhY2tzKSk7CiAg
ICAgICAgICAgICBjYWxsYmFja3MtPm9uU3VjY2Vzcyh0aGlzKTsKICAgICAgICAgfQogICAgIH0K
IH0KIAotdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpydW5JbnRWZXJzaW9uQ2hhbmdlVHJh
bnNhY3Rpb24oaW50NjRfdCByZXF1ZXN0ZWRWZXJzaW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNr
cz4gcHJwQ2FsbGJhY2tzKQordm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpydW5JbnRWZXJz
aW9uQ2hhbmdlVHJhbnNhY3Rpb24oaW50NjRfdCByZXF1ZXN0ZWRWZXJzaW9uLCBQYXNzUmVmUHRy
PElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJhY2tzLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJh
Y2tzPiBwcnBEYXRhYmFzZUNhbGxiYWNrcykKIHsKICAgICBSZWZQdHI8SURCQ2FsbGJhY2tzPiBj
YWxsYmFja3MgPSBwcnBDYWxsYmFja3M7CisgICAgUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tz
PiBkYXRhYmFzZUNhbGxiYWNrcyA9IHBycERhdGFiYXNlQ2FsbGJhY2tzOwogICAgIEFTU0VSVChj
YWxsYmFja3MpOwogICAgIGZvciAoRGF0YWJhc2VDYWxsYmFja3NTZXQ6OmNvbnN0X2l0ZXJhdG9y
IGl0ID0gbV9kYXRhYmFzZUNhbGxiYWNrc1NldC5iZWdpbigpOyBpdCAhPSBtX2RhdGFiYXNlQ2Fs
bGJhY2tzU2V0LmVuZCgpOyArK2l0KSB7Ci0gICAgICAgIC8vIE5vdGUgdGhhdCBzb21lIGNvbm5l
Y3Rpb25zIG1pZ2h0IGNsb3NlIGluIHRoZSB2ZXJzaW9uY2hhbmdlIGV2ZW50Ci0gICAgICAgIC8v
IGhhbmRsZXIgZm9yIHNvbWUgb3RoZXIgY29ubmVjdGlvbiwgYWZ0ZXIgd2hpY2ggaXRzIG93biB2
ZXJzaW9uY2hhbmdlCi0gICAgICAgIC8vIGV2ZW50IHNob3VsZCBub3QgYmUgZmlyZWQuIFRoZSBi
YWNrZW5kIGRvZXNuJ3Qgd29ycnkgYWJvdXQgdGhpcywgd2UKLSAgICAgICAgLy8ganVzdCBxdWV1
ZSB1cCBhIHZlcnNpb24gY2hhbmdlIGV2ZW50IGZvciBldmVyeSBjb25uZWN0aW9uLiBUaGUKLSAg
ICAgICAgLy8gZnJvbnRlbmQgdGFrZXMgY2FyZSB0byBvbmx5IGRpc3BhdGNoIHRvIG9wZW4gY29u
bmVjdGlvbnMuCi0gICAgICAgICgqaXQpLT5vblZlcnNpb25DaGFuZ2UobV9pbnRWZXJzaW9uLCBy
ZXF1ZXN0ZWRWZXJzaW9uKTsKKyAgICAgICAgLy8gRnJvbnQgZW5kIGVuc3VyZXMgdGhlIGV2ZW50
IGlzIG5vdCBmaXJlZCBhdCBjb25uZWN0aW9ucyB0aGF0IGhhdmUgY2xvc2VQZW5kaW5nIHNldC4K
KyAgICAgICAgaWYgKCppdCAhPSBkYXRhYmFzZUNhbGxiYWNrcykKKyAgICAgICAgICAgICgqaXQp
LT5vblZlcnNpb25DaGFuZ2UobV9pbnRWZXJzaW9uLCByZXF1ZXN0ZWRWZXJzaW9uKTsKICAgICB9
CiAgICAgLy8gVGhlIHNwZWMgZGljdGF0ZXMgd2Ugd2FpdCB1bnRpbCBhbGwgdGhlIHZlcnNpb24g
Y2hhbmdlIGV2ZW50cyBhcmUKICAgICAvLyBkZWxpdmVyZWQgYW5kIHRoZW4gY2hlY2sgbV9kYXRh
YmFzZUNhbGxiYWNrcy5lbXB0eSgpIGJlZm9yZSBwcm9jZWVkaW5nCkBAIC00NzQsMTEgKzQ2Niwx
MSBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OnJ1bkludFZlcnNpb25DaGFuZ2VUcmFu
c2FjdGlvbihpbnQ2NF90IHJlcXVlc3RlZFZlcgogICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhlIGNh
bGwgdG8gb25CbG9ja2VkIGFuZCBpbnN0ZWFkIHdhaXQgdW50aWwgdGhlIGZyb250ZW5kCiAgICAg
Ly8gdGVsbHMgdXMgdGhhdCBhbGwgdGhlIGJsb2NrZWQgZXZlbnRzIGhhdmUgYmVlbiBkZWxpdmVy
ZWQuIFNlZQogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03
MTEzMAotICAgIGlmIChjb25uZWN0aW9uQ291bnQoKSA+IDApCisgICAgaWYgKGNvbm5lY3Rpb25D
b3VudCgpKQogICAgICAgICBjYWxsYmFja3MtPm9uQmxvY2tlZChtX2ludFZlcnNpb24pOwogICAg
IC8vIEZJWE1FOiBBZGQgdGVzdCBmb3IgbV9ydW5uaW5nVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9u
LgotICAgIGlmIChtX3J1bm5pbmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24gfHwgY29ubmVjdGlv
bkNvdW50KCkgPiAwKSB7Ci0gICAgICAgIG1fcGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGxzLmFw
cGVuZChQZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbDo6Y3JlYXRlKGNhbGxiYWNrcywgcmVxdWVz
dGVkVmVyc2lvbikpOworICAgIGlmIChtX3J1bm5pbmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24g
fHwgY29ubmVjdGlvbkNvdW50KCkpIHsKKyAgICAgICAgbV9wZW5kaW5nT3BlbldpdGhWZXJzaW9u
Q2FsbHMuYXBwZW5kKFBlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxsOjpjcmVhdGUoY2FsbGJhY2tz
LCBkYXRhYmFzZUNhbGxiYWNrcywgcmVxdWVzdGVkVmVyc2lvbikpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCkBAIC00OTcsMTQgKzQ4OSwxNiBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZElt
cGw6OnJ1bkludFZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbihpbnQ2NF90IHJlcXVlc3RlZFZlcgog
ICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpUUkFOU0FDVElPTl9JTkFDVElWRV9F
UlI7CiAgICAgfQogICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIW1fcGVuZGluZ1NlY29uZEhhbGZP
cGVuV2l0aFZlcnNpb25DYWxscy5zaXplKCksICJtX3BlbmRpbmdTZWNvbmRIYWxmT3BlbldpdGhW
ZXJzaW9uQ2FsbHMuc2l6ZSA9ICV6dSIsIG1fcGVuZGluZ1NlY29uZEhhbGZPcGVuV2l0aFZlcnNp
b25DYWxscy5zaXplKCkpOwotICAgIG1fcGVuZGluZ1NlY29uZEhhbGZPcGVuV2l0aFZlcnNpb25D
YWxscy5hcHBlbmQoUGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGw6OmNyZWF0ZShjYWxsYmFja3Ms
IHJlcXVlc3RlZFZlcnNpb24pKTsKKyAgICBtX3BlbmRpbmdTZWNvbmRIYWxmT3BlbldpdGhWZXJz
aW9uQ2FsbHMuYXBwZW5kKFBlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxsOjpjcmVhdGUoY2FsbGJh
Y2tzLCBkYXRhYmFzZUNhbGxiYWNrcywgcmVxdWVzdGVkVmVyc2lvbikpOworICAgIG1fZGF0YWJh
c2VDYWxsYmFja3NTZXQuYWRkKGRhdGFiYXNlQ2FsbGJhY2tzKTsKIH0KIAotdm9pZCBJREJEYXRh
YmFzZUJhY2tlbmRJbXBsOjpvcGVuQ29ubmVjdGlvbldpdGhWZXJzaW9uKFBhc3NSZWZQdHI8SURC
Q2FsbGJhY2tzPiBwcnBDYWxsYmFja3MsIGludDY0X3QgdmVyc2lvbikKK3ZvaWQgSURCRGF0YWJh
c2VCYWNrZW5kSW1wbDo6b3BlbkNvbm5lY3Rpb25XaXRoVmVyc2lvbihQYXNzUmVmUHRyPElEQkNh
bGxiYWNrcz4gcHJwQ2FsbGJhY2tzLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBw
cnBEYXRhYmFzZUNhbGxiYWNrcywgaW50NjRfdCB2ZXJzaW9uKQogewogICAgIFJlZlB0cjxJREJD
YWxsYmFja3M+IGNhbGxiYWNrcyA9IHBycENhbGxiYWNrczsKKyAgICBSZWZQdHI8SURCRGF0YWJh
c2VDYWxsYmFja3M+IGRhdGFiYXNlQ2FsbGJhY2tzID0gcHJwRGF0YWJhc2VDYWxsYmFja3M7CiAg
ICAgaWYgKCFtX3BlbmRpbmdEZWxldGVDYWxscy5pc0VtcHR5KCkgfHwgbV9ydW5uaW5nVmVyc2lv
bkNoYW5nZVRyYW5zYWN0aW9uIHx8ICFtX3BlbmRpbmdTZXRWZXJzaW9uQ2FsbHMuaXNFbXB0eSgp
KSB7Ci0gICAgICAgIG1fcGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGxzLmFwcGVuZChQZW5kaW5n
T3BlbldpdGhWZXJzaW9uQ2FsbDo6Y3JlYXRlKGNhbGxiYWNrcywgdmVyc2lvbikpOworICAgICAg
ICBtX3BlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxscy5hcHBlbmQoUGVuZGluZ09wZW5XaXRoVmVy
c2lvbkNhbGw6OmNyZWF0ZShjYWxsYmFja3MsIGRhdGFiYXNlQ2FsbGJhY2tzLCB2ZXJzaW9uKSk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKG1faWQgPT0gSW52YWxpZElkKSB7CkBA
IC01MTYsNyArNTEwLDcgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpvcGVuQ29ubmVj
dGlvbldpdGhWZXJzaW9uKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPgogICAgICAgICB9CiAgICAg
fQogICAgIGlmICh2ZXJzaW9uID4gbV9pbnRWZXJzaW9uKSB7Ci0gICAgICAgIHJ1bkludFZlcnNp
b25DaGFuZ2VUcmFuc2FjdGlvbih2ZXJzaW9uLCBjYWxsYmFja3MpOworICAgICAgICBydW5JbnRW
ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24odmVyc2lvbiwgY2FsbGJhY2tzLCBkYXRhYmFzZUNhbGxi
YWNrcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKHZlcnNpb24gPCBtX2ludFZl
cnNpb24pIHsKQEAgLTUyNCw3ICs1MTgsNyBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6
Om9wZW5Db25uZWN0aW9uV2l0aFZlcnNpb24oUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAgICAgQVNTRVJUKHZlcnNpb24gPT0gbV9pbnRWZXJzaW9uKTsK
LSAgICArK21fcGVuZGluZ0Nvbm5lY3Rpb25Db3VudDsKKyAgICBtX2RhdGFiYXNlQ2FsbGJhY2tz
U2V0LmFkZChkYXRhYmFzZUNhbGxiYWNrcyk7CiAgICAgY2FsbGJhY2tzLT5vblN1Y2Nlc3ModGhp
cyk7CiB9CiAKQEAgLTUzNSwxNSArNTI5LDE0IEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1w
bDo6ZGVsZXRlRGF0YWJhc2UoUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNrCiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAgICAgUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tz
ID0gcHJwQ2FsbGJhY2tzOwotICAgIC8vIEZJWE1FOiBPbmx5IGZpcmUgb25WZXJzaW9uQ2hhbmdl
IGlmIHRoZXJlIHRoZSBjb25uZWN0aW9uIGlzbid0IGluCi0gICAgLy8gdGhlIHByb2Nlc3Mgb2Yg
Y2xvc2luZy4KLSAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NzExMjkKLSAgICBmb3IgKERhdGFiYXNlQ2FsbGJhY2tzU2V0Ojpjb25zdF9pdGVyYXRvciBpdCA9
IG1fZGF0YWJhc2VDYWxsYmFja3NTZXQuYmVnaW4oKTsgaXQgIT0gbV9kYXRhYmFzZUNhbGxiYWNr
c1NldC5lbmQoKTsgKytpdCkKKyAgICBmb3IgKERhdGFiYXNlQ2FsbGJhY2tzU2V0Ojpjb25zdF9p
dGVyYXRvciBpdCA9IG1fZGF0YWJhc2VDYWxsYmFja3NTZXQuYmVnaW4oKTsgaXQgIT0gbV9kYXRh
YmFzZUNhbGxiYWNrc1NldC5lbmQoKTsgKytpdCkgeworICAgICAgICAvLyBGcm9udCBlbmQgZW5z
dXJlcyB0aGUgZXZlbnQgaXMgbm90IGZpcmVkIGF0IGNvbm5lY3Rpb25zIHRoYXQgaGF2ZSBjbG9z
ZVBlbmRpbmcgc2V0LgogICAgICAgICAoKml0KS0+b25WZXJzaW9uQ2hhbmdlKCIiKTsKKyAgICB9
CiAgICAgLy8gRklYTUU6IE9ubHkgZmlyZSBvbkJsb2NrZWQgaWYgdGhlcmUgYXJlIG9wZW4gY29u
bmVjdGlvbnMgYWZ0ZXIgdGhlCiAgICAgLy8gVmVyc2lvbkNoYW5nZUV2ZW50cyBhcmUgcmVjZWl2
ZWQsIG5vdCBqdXN0IHNldCB1cCB0byBmaXJlLgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD03MTEzMAotICAgIGlmIChjb25uZWN0aW9uQ291bnQoKSA+PSAx
KSB7CisgICAgaWYgKGNvbm5lY3Rpb25Db3VudCgpKSB7CiAgICAgICAgIG1fcGVuZGluZ0RlbGV0
ZUNhbGxzLmFwcGVuZChQZW5kaW5nRGVsZXRlQ2FsbDo6Y3JlYXRlKGNhbGxiYWNrcykpOwogICAg
ICAgICBjYWxsYmFja3MtPm9uQmxvY2tlZCgpOwogICAgICAgICByZXR1cm47CkBAIC01NjQsMTgg
KzU1NywxOSBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNsb3NlKFBhc3NSZWZQdHI8
SURCRGF0YWJhc2VDYWxsYmFja3M+IHBycENhbGxiYWNrcwogewogICAgIFJlZlB0cjxJREJEYXRh
YmFzZUNhbGxiYWNrcz4gY2FsbGJhY2tzID0gcHJwQ2FsbGJhY2tzOwogICAgIEFTU0VSVChtX2Rh
dGFiYXNlQ2FsbGJhY2tzU2V0LmNvbnRhaW5zKGNhbGxiYWNrcykpOworCiAgICAgbV9kYXRhYmFz
ZUNhbGxiYWNrc1NldC5yZW1vdmUoY2FsbGJhY2tzKTsKKyAgICAvLyBGSVhNRTogSWYgY2FsbGJh
Y2tzIGlzIGFsc28gaGVsZCBpbiBtX3BlbmRpbmdTZWNvbmRIYWxmT3BlbldpdGhWZXJzaW9uQ2Fs
bHMKKyAgICAvLyBpdCBzaG91bGQgYmUgcmVtb3ZlZCBhbmQgb25FcnJvciBmaXJlZCBhZ2FpbnN0
IGl0LgorCiAgICAgaWYgKGNvbm5lY3Rpb25Db3VudCgpID4gMSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgVHJhbnNhY3Rpb25TZXQgdHJhbnNhY3Rpb25zKG1fdHJhbnNhY3Rpb25zKTsKICAgICBw
cm9jZXNzUGVuZGluZ0NhbGxzKCk7CiAKLSAgICBBU1NFUlQobV90cmFuc2FjdGlvbnMuc2l6ZSgp
IC0gdHJhbnNhY3Rpb25zLnNpemUoKSA8PSAxKTsKLSAgICAvLyBGSVhNRTogSW5zdGVhZCBvZiBy
ZWx5aW5nIG9uIHRyYW5zYWN0aW9ucy5zaXplKCksIG1ha2UgY29ubmVjdGlvbkNvdW50Ci0gICAg
Ly8gYXdhcmUgb2YgaW4tZmxpZ2h0IHVwZ3JhZGVuZWVkZWQgZXZlbnRzIGFzIHdlbGwgYXMgaW4t
ZmxpZ2h0IHN1Y2Nlc3MKLSAgICAvLyBldmVudHMuCi0gICAgaWYgKCFjb25uZWN0aW9uQ291bnQo
KSAmJiAhbV9wZW5kaW5nRGVsZXRlQ2FsbHMuc2l6ZSgpICYmIG1fdHJhbnNhY3Rpb25zLnNpemUo
KSA9PSB0cmFuc2FjdGlvbnMuc2l6ZSgpKSB7CisgICAgLy8gRklYTUU6IEFkZCBhIHRlc3QgZm9y
IHRoZSBtX3BlbmRpbmdPcGVuQ2FsbHPCt2FuZCBtX3BlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxs
cyBjYXNlcyBiZWxvdy4KKyAgICBpZiAoIWNvbm5lY3Rpb25Db3VudCgpICYmICFtX3BlbmRpbmdP
cGVuQ2FsbHMuc2l6ZSgpICYmICFtX3BlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxscy5zaXplKCkg
JiYgIW1fcGVuZGluZ0RlbGV0ZUNhbGxzLnNpemUoKSkgeworICAgICAgICBUcmFuc2FjdGlvblNl
dCB0cmFuc2FjdGlvbnMobV90cmFuc2FjdGlvbnMpOwogICAgICAgICBmb3IgKFRyYW5zYWN0aW9u
U2V0Ojpjb25zdF9pdGVyYXRvciBpdCA9IHRyYW5zYWN0aW9ucy5iZWdpbigpOyBpdCAhPSB0cmFu
c2FjdGlvbnMuZW5kKCk7ICsraXQpCiAgICAgICAgICAgICAoKml0KS0+YWJvcnQoKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNr
ZW5kSW1wbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VC
YWNrZW5kSW1wbC5oCmluZGV4IDdmMzFjYjA0ZWE0ZWRiZmNkNjcyMTdjMTljOGNhN2EyYzk3M2Jl
MTEuLjIyY2NjNDMyMjBiNTA0ZmU3MDY4NTY3YjU5YTQ3NjI1NWVlYTg1NGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tl
bmRJbXBsLmgKQEAgLTU1LDkgKzU1LDggQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBpbnQ2
NF90IEludmFsaWRJZCA9IDA7CiAgICAgaW50NjRfdCBpZCgpIGNvbnN0IHsgcmV0dXJuIG1faWQ7
IH0KIAotICAgIHZvaWQgcmVnaXN0ZXJGcm9udGVuZENhbGxiYWNrcyhQYXNzUmVmUHRyPElEQkRh
dGFiYXNlQ2FsbGJhY2tzPik7Ci0gICAgdm9pZCBvcGVuQ29ubmVjdGlvbihQYXNzUmVmUHRyPElE
QkNhbGxiYWNrcz4pOwotICAgIHZvaWQgb3BlbkNvbm5lY3Rpb25XaXRoVmVyc2lvbihQYXNzUmVm
UHRyPElEQkNhbGxiYWNrcz4sIGludDY0X3QgdmVyc2lvbik7CisgICAgdm9pZCBvcGVuQ29ubmVj
dGlvbihQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxs
YmFja3M+KTsKKyAgICB2b2lkIG9wZW5Db25uZWN0aW9uV2l0aFZlcnNpb24oUGFzc1JlZlB0cjxJ
REJDYWxsYmFja3M+LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiwgaW50NjRfdCB2
ZXJzaW9uKTsKICAgICB2b2lkIGRlbGV0ZURhdGFiYXNlKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tz
Pik7CiAKICAgICAvLyBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UKQEAgLTc5LDkgKzc4LDkg
QEAgcHJpdmF0ZToKICAgICBJREJEYXRhYmFzZUJhY2tlbmRJbXBsKGNvbnN0IFN0cmluZyYgbmFt
ZSwgSURCQmFja2luZ1N0b3JlKiBkYXRhYmFzZSwgSURCVHJhbnNhY3Rpb25Db29yZGluYXRvcios
IElEQkZhY3RvcnlCYWNrZW5kSW1wbCosIGNvbnN0IFN0cmluZyYgdW5pcXVlSWRlbnRpZmllcik7
CiAKICAgICBib29sIG9wZW5JbnRlcm5hbCgpOwotICAgIHZvaWQgcnVuSW50VmVyc2lvbkNoYW5n
ZVRyYW5zYWN0aW9uKGludDY0X3QgcmVxdWVzdGVkVmVyc2lvbiwgUGFzc1JlZlB0cjxJREJDYWxs
YmFja3M+KTsKKyAgICB2b2lkIHJ1bkludFZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbihpbnQ2NF90
IHJlcXVlc3RlZFZlcnNpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgUGFzc1JlZlB0cjxJ
REJEYXRhYmFzZUNhbGxiYWNrcz4pOwogICAgIHZvaWQgbG9hZE9iamVjdFN0b3JlcygpOwotICAg
IGludDMyX3QgY29ubmVjdGlvbkNvdW50KCk7CisgICAgc2l6ZV90IGNvbm5lY3Rpb25Db3VudCgp
OwogICAgIHZvaWQgcHJvY2Vzc1BlbmRpbmdDYWxscygpOwogCiAgICAgc3RhdGljIHZvaWQgY3Jl
YXRlT2JqZWN0U3RvcmVJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0
cjxJREJEYXRhYmFzZUJhY2tlbmRJbXBsPiwgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tl
bmRJbXBsPiwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPik7CkBAIC0xMjcs
MTAgKzEyNiw2IEBAIHByaXZhdGU6CiAgICAgY2xhc3MgUGVuZGluZ0RlbGV0ZUNhbGw7CiAgICAg
RGVxdWU8UmVmUHRyPFBlbmRpbmdEZWxldGVDYWxsPiA+IG1fcGVuZGluZ0RlbGV0ZUNhbGxzOwog
Ci0gICAgLy8gRklYTUU6IEVsaW1pbmF0ZSB0aGUgbGltYm8gc3RhdGUgYmV0d2VlbiBvcGVuQ29u
bmVjdGlvbigpIGFuZCByZWdpc3RlckZyb250ZW5kQ2FsbGJhY2tzKCkKLSAgICAvLyB0aGF0IHRo
aXMgY291bnRlciB0cmFja3MuCi0gICAgaW50MzJfdCBtX3BlbmRpbmdDb25uZWN0aW9uQ291bnQ7
Ci0KICAgICB0eXBlZGVmIExpc3RIYXNoU2V0PFJlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4g
PiBEYXRhYmFzZUNhbGxiYWNrc1NldDsKICAgICBEYXRhYmFzZUNhbGxiYWNrc1NldCBtX2RhdGFi
YXNlQ2FsbGJhY2tzU2V0OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmgKaW5kZXggYzdk
MWQ2MDFiZTI2ZTdiYmM5MjE3MDY4MzQyNDc1Mjg1YTJhODVkMS4uNDJiM2I5MDJjYTNmZGU2Njc0
OTEwZmViOTQwNTcwODNhMzMzNWFiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmgKQEAg
LTYwLDggKzYwLDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRWZXJzaW9uKGNvbnN0
IFN0cmluZyYgdmVyc2lvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBQYXNzUmVmUHRyPElE
QkRhdGFiYXNlQ2FsbGJhY2tzPiwgRXhjZXB0aW9uQ29kZSYpID0gMDsKICAgICB2aXJ0dWFsIFBh
c3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiB0cmFuc2FjdGlvbihET01T
dHJpbmdMaXN0KiBzdG9yZU5hbWVzLCB1bnNpZ25lZCBzaG9ydCBtb2RlLCBFeGNlcHRpb25Db2Rl
JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjbG9zZShQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2Fs
bGJhY2tzPikgPSAwOwotCi0gICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyRnJvbnRlbmRDYWxsYmFj
a3MoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4pID0gMDsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwuY3BwCmluZGV4IGY2NTY1ZGNhMWJk
ODIyZmU2ZGMxMzU5NjhjM2IwZWRiOTk5NWEzYjguLjk3MGQzYTE2N2NhZjk5NmM3ZjAzMWZmNTRh
NGYxNTkyNDlmMWFhMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsLmNwcApAQCAtMzIsMTMgKzMy
LDEzIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNh
bGxiYWNrc0ltcGw+IElEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbDo6Y3JlYXRlKElEQkRhdGFiYXNl
KiBkYXRhYmFzZSkKK1Bhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3NJbXBsPiBJREJEYXRh
YmFzZUNhbGxiYWNrc0ltcGw6OmNyZWF0ZSgpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJ
REJEYXRhYmFzZUNhbGxiYWNrc0ltcGwoZGF0YWJhc2UpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IElEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbCgpKTsKIH0KIAotSURCRGF0YWJhc2VDYWxsYmFj
a3NJbXBsOjpJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwoSURCRGF0YWJhc2UqIGRhdGFiYXNlKQot
ICAgIDogbV9kYXRhYmFzZShkYXRhYmFzZSkKK0lEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbDo6SURC
RGF0YWJhc2VDYWxsYmFja3NJbXBsKCkKKyAgICA6IG1fZGF0YWJhc2UoMCkKIHsKIH0KIApAQCAt
NjQsMTAgKzY0LDExIEBAIHZvaWQgSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsOjpvblZlcnNpb25D
aGFuZ2UoaW50NjRfdCBvbGRWZXJzaW9uLCBpbnQ2NF90IG5ld1ZlCiAgICAgICAgIG1fZGF0YWJh
c2UtPm9uVmVyc2lvbkNoYW5nZShvbGRWZXJzaW9uLCBuZXdWZXJzaW9uKTsKIH0KIAotdm9pZCBJ
REJEYXRhYmFzZUNhbGxiYWNrc0ltcGw6OnVucmVnaXN0ZXJEYXRhYmFzZShJREJEYXRhYmFzZSog
ZGF0YWJhc2UpCit2b2lkIElEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbDo6Y29ubmVjdChJREJEYXRh
YmFzZSogZGF0YWJhc2UpCiB7Ci0gICAgQVNTRVJUX1VOVVNFRChkYXRhYmFzZSwgZGF0YWJhc2Ug
PT0gbV9kYXRhYmFzZSk7Ci0gICAgbV9kYXRhYmFzZSA9IDA7CisgICAgQVNTRVJUKCFtX2RhdGFi
YXNlKTsKKyAgICBBU1NFUlQoZGF0YWJhc2UpOworICAgIG1fZGF0YWJhc2UgPSBkYXRhYmFzZTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwuaAppbmRleCA4
NzgxZGJiMGEzMTUwYTQ0MzkyNDIzN2UyZTFmMzRmYmFlMjkwZTk4Li5iYjRhMWFlNzRlODIyNzM4
YjMzZGQ2YzA4MDllNzJlNjEwZmQzY2JjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwuaApAQCAtMzgs
MTggKzM4LDIwIEBAIGNsYXNzIElEQkRhdGFiYXNlOwogCiBjbGFzcyBJREJEYXRhYmFzZUNhbGxi
YWNrc0ltcGwgOiBwdWJsaWMgSURCRGF0YWJhc2VDYWxsYmFja3MgewogcHVibGljOgotICAgIHN0
YXRpYyBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbD4gY3JlYXRlKElEQkRhdGFi
YXNlKik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3NJbXBsPiBj
cmVhdGUoKTsKICAgICB2aXJ0dWFsIH5JREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwoKTsKIAorICAg
IC8vIElEQkRhdGFiYXNlQ2FsbGJhY2tzCiAgICAgdmlydHVhbCB2b2lkIG9uRm9yY2VkQ2xvc2Uo
KTsKICAgICB2aXJ0dWFsIHZvaWQgb25WZXJzaW9uQ2hhbmdlKGNvbnN0IFN0cmluZyYgdmVyc2lv
bik7CiAgICAgdmlydHVhbCB2b2lkIG9uVmVyc2lvbkNoYW5nZShpbnQ2NF90IG9sZFZlcnNpb24s
IGludDY0X3QgbmV3VmVyc2lvbik7Ci0gICAgdm9pZCB1bnJlZ2lzdGVyRGF0YWJhc2UoSURCRGF0
YWJhc2UqKTsKKworICAgIHZvaWQgY29ubmVjdChJREJEYXRhYmFzZSopOwogCiBwcml2YXRlOgot
ICAgIElEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbChJREJEYXRhYmFzZSopOworICAgIElEQkRhdGFi
YXNlQ2FsbGJhY2tzSW1wbCgpOwogCi0gICAgLy8gbV9kYXRhYmFzZSBoYXMgYSBSZWZQdHIgdG8g
dGhpcywgc28gdXNlIGEgd2VhayBwb2ludGVyIHRvIGF2b2lkIGEgY3ljbGUuCisgICAgLy8gVGhl
IGluaXRpYWwgSURCT3BlbkRCUmVxdWVzdCBvciBmaW5hbCBJREJEYXRhYmFzZSBtYWludGFpbnMg
YSBSZWZQdHIgdG8gdGhpcwogICAgIElEQkRhdGFiYXNlKiBtX2RhdGFiYXNlOwogfTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcAppbmRleCBj
MjA2MzVmMmFhMzdkZDk1MWMzYzg0ZjQzNDYzNDExMDYwZTExN2EwLi40ZTMwMjMxNjcxOTkwMzJk
NjRkYzliOGJmODEwNGYwMDMwNjkxY2QzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcApAQCAtMTIwLDggKzEyMCw5IEBAIFBhc3NSZWZQdHI8
SURCT3BlbkRCUmVxdWVzdD4gSURCRmFjdG9yeTo6b3BlbihTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBjCiAgICAgaWYgKCFpc0NvbnRleHRWYWxpZChjb250ZXh0KSkKICAgICAgICAg
cmV0dXJuIDA7CiAKLSAgICBSZWZQdHI8SURCT3BlbkRCUmVxdWVzdD4gcmVxdWVzdCA9IElEQk9w
ZW5EQlJlcXVlc3Q6OmNyZWF0ZShjb250ZXh0LCBJREJBbnk6OmNyZWF0ZSh0aGlzKSwgdmVyc2lv
bik7Ci0gICAgbV9iYWNrZW5kLT5vcGVuKG5hbWUsIHZlcnNpb24sIHJlcXVlc3QsIGNvbnRleHQt
PnNlY3VyaXR5T3JpZ2luKCksIGNvbnRleHQsIGdldEluZGV4ZWREQkRhdGFiYXNlUGF0aChjb250
ZXh0KSk7CisgICAgUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbD4gZGF0YWJhc2VDYWxs
YmFja3MgPSBJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGw6OmNyZWF0ZSgpOworICAgIFJlZlB0cjxJ
REJPcGVuREJSZXF1ZXN0PiByZXF1ZXN0ID0gSURCT3BlbkRCUmVxdWVzdDo6Y3JlYXRlKGNvbnRl
eHQsIElEQkFueTo6Y3JlYXRlKHRoaXMpLCBkYXRhYmFzZUNhbGxiYWNrcywgdmVyc2lvbik7Cisg
ICAgbV9iYWNrZW5kLT5vcGVuKG5hbWUsIHZlcnNpb24sIHJlcXVlc3QsIGRhdGFiYXNlQ2FsbGJh
Y2tzLCBjb250ZXh0LT5zZWN1cml0eU9yaWdpbigpLCBjb250ZXh0LCBnZXRJbmRleGVkREJEYXRh
YmFzZVBhdGgoY29udGV4dCkpOwogICAgIHJldHVybiByZXF1ZXN0OwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5QmFja2VuZEltcGwu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJ
bXBsLmNwcAppbmRleCA4ZGE1YzAyZTQyM2Y2ZjY0ZTU3OTczMGRiNzNmYTI5ZWMyYmU0NjA2Li5j
N2VmODYwZTEzZTJkMTgxNzlhZTVlY2MwYzc1OTcwOWI4ODQzZGU5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5QmFja2VuZEltcGwuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnlCYWNrZW5kSW1w
bC5jcHAKQEAgLTE1MCw3ICsxNTAsNyBAQCBQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZT4gSURC
RmFjdG9yeUJhY2tlbmRJbXBsOjpvcGVuQmFja2luZ1N0b3JlKFBhc3NSZWZQdHI8UwogICAgIHJl
dHVybiAwOwogfQogCi12b2lkIElEQkZhY3RvcnlCYWNrZW5kSW1wbDo6b3Blbihjb25zdCBTdHJp
bmcmIG5hbWUsIGludDY0X3QgdmVyc2lvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxi
YWNrcywgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gcHJwU2VjdXJpdHlPcmlnaW4sIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIGRhdGFEaXJlY3RvcnkpCit2b2lkIElE
QkZhY3RvcnlCYWNrZW5kSW1wbDo6b3Blbihjb25zdCBTdHJpbmcmIG5hbWUsIGludDY0X3QgdmVy
c2lvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgUGFzc1JlZlB0cjxJREJE
YXRhYmFzZUNhbGxiYWNrcz4gZGF0YWJhc2VDYWxsYmFja3MsIFBhc3NSZWZQdHI8U2VjdXJpdHlP
cmlnaW4+IHBycFNlY3VyaXR5T3JpZ2luLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3Qg
U3RyaW5nJiBkYXRhRGlyZWN0b3J5KQogewogICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gc2Vj
dXJpdHlPcmlnaW4gPSBwcnBTZWN1cml0eU9yaWdpbjsKICAgICBjb25zdCBTdHJpbmcgdW5pcXVl
SWRlbnRpZmllciA9IGNvbXB1dGVVbmlxdWVJZGVudGlmaWVyKG5hbWUsIHNlY3VyaXR5T3JpZ2lu
LmdldCgpKTsKQEAgLTE3NSw5ICsxNzUsOSBAQCB2b2lkIElEQkZhY3RvcnlCYWNrZW5kSW1wbDo6
b3Blbihjb25zdCBTdHJpbmcmIG5hbWUsIGludDY0X3QgdmVyc2lvbiwgUGFzc1JlZlB0cgogICAg
ICAgICBkYXRhYmFzZUJhY2tlbmQgPSBpdC0+c2Vjb25kOwogCiAgICAgaWYgKHZlcnNpb24gPT0g
SURCRGF0YWJhc2VNZXRhZGF0YTo6Tm9JbnRWZXJzaW9uKQotICAgICAgICBkYXRhYmFzZUJhY2tl
bmQtPm9wZW5Db25uZWN0aW9uKGNhbGxiYWNrcyk7CisgICAgICAgIGRhdGFiYXNlQmFja2VuZC0+
b3BlbkNvbm5lY3Rpb24oY2FsbGJhY2tzLCBkYXRhYmFzZUNhbGxiYWNrcyk7CiAgICAgZWxzZQot
ICAgICAgICBkYXRhYmFzZUJhY2tlbmQtPm9wZW5Db25uZWN0aW9uV2l0aFZlcnNpb24oY2FsbGJh
Y2tzLCB2ZXJzaW9uKTsKKyAgICAgICAgZGF0YWJhc2VCYWNrZW5kLT5vcGVuQ29ubmVjdGlvbldp
dGhWZXJzaW9uKGNhbGxiYWNrcywgZGF0YWJhc2VDYWxsYmFja3MsIHZlcnNpb24pOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJGYWN0b3J5QmFja2VuZEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5oCmluZGV4IGNhZDNiNWEyNGIyOTlh
OTI5OWMyYWQyOTRlM2IyZWEwNGNmZDcyYTUuLjNhZTA3MDMxMGRhZTg3NjQzNTk2Y2E5YjI5OTNj
MzNhNDY3MGIxYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5oCkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlSURCQmFja2luZ1N0b3JlKGNvbnN0IFN0cmluZyYgZmls
ZUlkZW50aWZpZXIpOwogCiAgICAgdmlydHVhbCB2b2lkIGdldERhdGFiYXNlTmFtZXMoUGFzc1Jl
ZlB0cjxJREJDYWxsYmFja3M+LCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiwgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgZGF0YURpcik7Ci0gICAgdmlydHVhbCB2b2lk
IG9wZW4oY29uc3QgU3RyaW5nJiBuYW1lLCBpbnQ2NF90IHZlcnNpb24sIFBhc3NSZWZQdHI8SURC
Q2FsbGJhY2tzPiwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4sIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCBjb25zdCBTdHJpbmcmIGRhdGFEaXIpOworICAgIHZpcnR1YWwgdm9pZCBvcGVuKGNv
bnN0IFN0cmluZyYgbmFtZSwgaW50NjRfdCB2ZXJzaW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNr
cz4sIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+LCBQYXNzUmVmUHRyPFNlY3VyaXR5
T3JpZ2luPiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgZGF0YURpcik7
CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZURhdGFiYXNlKGNvbnN0IFN0cmluZyYgbmFtZSwgUGFz
c1JlZlB0cjxJREJDYWxsYmFja3M+LCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiwgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgZGF0YURpcik7CiAKIHByb3RlY3RlZDoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnlC
YWNrZW5kSW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJG
YWN0b3J5QmFja2VuZEludGVyZmFjZS5oCmluZGV4IGY1NmZjMDZlMDBlNjMzZGY0ZDc0ZDk4M2Ri
MjNiMDI5YjUyMDU1ZTguLmFlMjI3MDY4ZjU2MmMyNjk5NTliMmU1YjlmYjQxMjkyNmExYmRmYTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnlC
YWNrZW5kSW50ZXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2UuaApAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB+SURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2UoKSB7IH0KIAogICAgIHZpcnR1
YWwgdm9pZCBnZXREYXRhYmFzZU5hbWVzKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgUGFzc1Jl
ZlB0cjxTZWN1cml0eU9yaWdpbj4sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJp
bmcmIGRhdGFEaXIpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgb3Blbihjb25zdCBTdHJpbmcmIG5h
bWUsIGludDY0X3QgdmVyc2lvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBQYXNzUmVmUHRy
PFNlY3VyaXR5T3JpZ2luPiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYg
ZGF0YURpcikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBvcGVuKGNvbnN0IFN0cmluZyYgbmFtZSwg
aW50NjRfdCB2ZXJzaW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8SURC
RGF0YWJhc2VDYWxsYmFja3M+LCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiwgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgZGF0YURpcikgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBkZWxldGVEYXRhYmFzZShjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8SURCQ2Fs
bGJhY2tzPiwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4sIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCBjb25zdCBTdHJpbmcmIGRhdGFEaXIpID0gMDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9wZW5EQlJlcXVlc3QuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT3BlbkRCUmVxdWVzdC5jcHAKaW5kZXggZTg5
YTc0Y2ZkOWJmYjdmZjc2M2JhNmVlMjVmZDIyYmNmMjQ2OTUwYS4uNmVmMTZjZjAyOTNhNjkxOTBm
OTZjZDNhODVhYzM1MjcyM2ViYjZmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCT3BlbkRCUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCT3BlbkRCUmVxdWVzdC5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNp
ZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIAogI2luY2x1ZGUgIklEQkRhdGFiYXNlLmgiCisj
aW5jbHVkZSAiSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsLmgiCiAjaW5jbHVkZSAiSURCUGVuZGlu
Z1RyYW5zYWN0aW9uTW9uaXRvci5oIgogI2luY2x1ZGUgIklEQlRyYWNpbmcuaCIKICNpbmNsdWRl
ICJJREJVcGdyYWRlTmVlZGVkRXZlbnQuaCIKQEAgLTM2LDE1ICszNywxNiBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLVBhc3NSZWZQdHI8SURCT3BlbkRCUmVxdWVzdD4gSURCT3BlbkRCUmVx
dWVzdDo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8
SURCQW55PiBzb3VyY2UsIGludDY0X3QgdmVyc2lvbikKK1Bhc3NSZWZQdHI8SURCT3BlbkRCUmVx
dWVzdD4gSURCT3BlbkRCUmVxdWVzdDo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQsIFBhc3NSZWZQdHI8SURCQW55PiBzb3VyY2UsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VD
YWxsYmFja3NJbXBsPiBjYWxsYmFja3MsIGludDY0X3QgdmVyc2lvbikKIHsKLSAgICBSZWZQdHI8
SURCT3BlbkRCUmVxdWVzdD4gcmVxdWVzdChhZG9wdFJlZihuZXcgSURCT3BlbkRCUmVxdWVzdChj
b250ZXh0LCBzb3VyY2UsIHZlcnNpb24pKSk7CisgICAgUmVmUHRyPElEQk9wZW5EQlJlcXVlc3Q+
IHJlcXVlc3QoYWRvcHRSZWYobmV3IElEQk9wZW5EQlJlcXVlc3QoY29udGV4dCwgc291cmNlLCBj
YWxsYmFja3MsIHZlcnNpb24pKSk7CiAgICAgcmVxdWVzdC0+c3VzcGVuZElmTmVlZGVkKCk7CiAg
ICAgcmV0dXJuIHJlcXVlc3QucmVsZWFzZSgpOwogfQogCi1JREJPcGVuREJSZXF1ZXN0OjpJREJP
cGVuREJSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8
SURCQW55PiBzb3VyY2UsIGludDY0X3QgdmVyc2lvbikKK0lEQk9wZW5EQlJlcXVlc3Q6OklEQk9w
ZW5EQlJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJ
REJBbnk+IHNvdXJjZSwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGw+IGNhbGxi
YWNrcywgaW50NjRfdCB2ZXJzaW9uKQogICAgIDogSURCUmVxdWVzdChjb250ZXh0LCBzb3VyY2Us
IElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZTo6Tm9ybWFsVGFzaywgMCkKKyAgICAsIG1f
ZGF0YWJhc2VDYWxsYmFja3MoY2FsbGJhY2tzKQogICAgICwgbV92ZXJzaW9uKHZlcnNpb24pCiB7
CiAgICAgQVNTRVJUKCFtX3Jlc3VsdCk7CkBAIC03Miw5ICs3NCwxMyBAQCB2b2lkIElEQk9wZW5E
QlJlcXVlc3Q6Om9uVXBncmFkZU5lZWRlZChpbnQ2NF90IG9sZFZlcnNpb24sIFBhc3NSZWZQdHI8
SURCVHJhbnNhYwogICAgIGlmICghc2hvdWxkRW5xdWV1ZUV2ZW50KCkpCiAgICAgICAgIHJldHVy
bjsKIAorICAgIEFTU0VSVChtX2RhdGFiYXNlQ2FsbGJhY2tzKTsKKwogICAgIFJlZlB0cjxJREJE
YXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+IGRhdGFiYXNlQmFja2VuZCA9IHBycERhdGFiYXNlQmFj
a2VuZDsKICAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiB0cmFuc2Fj
dGlvbkJhY2tlbmQgPSBwcnBUcmFuc2FjdGlvbkJhY2tlbmQ7Ci0gICAgUmVmUHRyPElEQkRhdGFi
YXNlPiBpZGJEYXRhYmFzZSA9IElEQkRhdGFiYXNlOjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpLCBkYXRhYmFzZUJhY2tlbmQpOworICAgIFJlZlB0cjxJREJEYXRhYmFzZT4gaWRiRGF0
YWJhc2UgPSBJREJEYXRhYmFzZTo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgZGF0
YWJhc2VCYWNrZW5kLCBtX2RhdGFiYXNlQ2FsbGJhY2tzKTsKKyAgICBtX2RhdGFiYXNlQ2FsbGJh
Y2tzLT5jb25uZWN0KGlkYkRhdGFiYXNlLmdldCgpKTsKKyAgICBtX2RhdGFiYXNlQ2FsbGJhY2tz
ID0gMDsKIAogICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbj4gZnJvbnRlbmQgPSBJREJUcmFuc2Fj
dGlvbjo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgdHJhbnNhY3Rpb25CYWNrZW5k
LCBJREJUcmFuc2FjdGlvbjo6VkVSU0lPTl9DSEFOR0UsIGlkYkRhdGFiYXNlLmdldCgpLCB0aGlz
KTsKICAgICB0cmFuc2FjdGlvbkJhY2tlbmQtPnNldENhbGxiYWNrcyhmcm9udGVuZC5nZXQoKSk7
CkBAIC05OCwxMSArMTA0LDE0IEBAIHZvaWQgSURCT3BlbkRCUmVxdWVzdDo6b25TdWNjZXNzKFBh
c3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiBiYWNrZW5kCiAgICAgaWYgKG1f
cmVzdWx0KSB7CiAgICAgICAgIGlkYkRhdGFiYXNlID0gbV9yZXN1bHQtPmlkYkRhdGFiYXNlKCk7
CiAgICAgICAgIEFTU0VSVChpZGJEYXRhYmFzZSk7CisgICAgICAgIEFTU0VSVCghbV9kYXRhYmFz
ZUNhbGxiYWNrcyk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgaWRiRGF0YWJhc2UgPSBJREJEYXRh
YmFzZTo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgYmFja2VuZCk7CisgICAgICAg
IEFTU0VSVChtX2RhdGFiYXNlQ2FsbGJhY2tzKTsKKyAgICAgICAgaWRiRGF0YWJhc2UgPSBJREJE
YXRhYmFzZTo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgYmFja2VuZCwgbV9kYXRh
YmFzZUNhbGxiYWNrcyk7CisgICAgICAgIG1fZGF0YWJhc2VDYWxsYmFja3MtPmNvbm5lY3QoaWRi
RGF0YWJhc2UuZ2V0KCkpOworICAgICAgICBtX2RhdGFiYXNlQ2FsbGJhY2tzID0gMDsKICAgICAg
ICAgbV9yZXN1bHQgPSBJREJBbnk6OmNyZWF0ZShpZGJEYXRhYmFzZS5nZXQoKSk7CiAgICAgfQot
ICAgIGlkYkRhdGFiYXNlLT5yZWdpc3RlckZyb250ZW5kQ2FsbGJhY2tzKCk7CiAgICAgZW5xdWV1
ZUV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLnN1Y2Nlc3NFdmVudCwgZmFsc2UsIGZh
bHNlKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQk9wZW5EQlJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
Qk9wZW5EQlJlcXVlc3QuaAppbmRleCBjODdkYjdlZDFiZGQyZDQwNTNlNzRjMTAyYTJlYzZkNjk1
OTcyZTNmLi4xZTg0YjU0YzlkYTUwN2FmNTUxOWM4MDg4OTg0NmQ0MmVmZGVkNDlmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPcGVuREJSZXF1ZXN0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT3BlbkRCUmVxdWVzdC5o
CkBAIC0zMiw5ICszMiwxMSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIElEQkRh
dGFiYXNlQ2FsbGJhY2tzSW1wbDsKKwogY2xhc3MgSURCT3BlbkRCUmVxdWVzdCA6IHB1YmxpYyBJ
REJSZXF1ZXN0IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJPcGVuREJSZXF1
ZXN0PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCQW55PiBz
b3VyY2UsIGludDY0X3QgdmVyc2lvbik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SURCT3BlbkRC
UmVxdWVzdD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQkFu
eT4gc291cmNlLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbD4sIGludDY0X3Qg
dmVyc2lvbik7CiAgICAgdmlydHVhbCB+SURCT3BlbkRCUmVxdWVzdCgpOwogCiAgICAgdXNpbmcg
SURCUmVxdWVzdDo6b25TdWNjZXNzOwpAQCAtNTMsOCArNTUsOSBAQCBwcm90ZWN0ZWQ6CiAgICAg
dmlydHVhbCBib29sIHNob3VsZEVucXVldWVFdmVudCgpIGNvbnN0IE9WRVJSSURFOwogCiBwcml2
YXRlOgotICAgIElEQk9wZW5EQlJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NS
ZWZQdHI8SURCQW55PiBzb3VyY2UsIGludDY0X3QgdmVyc2lvbik7CisgICAgSURCT3BlbkRCUmVx
dWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJBbnk+IHNvdXJjZSwg
UGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGw+LCBpbnQ2NF90IHZlcnNpb24pOwog
CisgICAgUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbD4gbV9kYXRhYmFzZUNhbGxiYWNr
czsKICAgICBpbnQ2NF90IG1fdmVyc2lvbjsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcAppbmRleCAyMWU1ZjMyOGUzNDU1
Mzg5Y2UwODU2NjIwNzBlZWVhMTQ2NTVmNjI4Li5lMWUwNWYxZjI4ODY4ZGIyZDI4OWYyZWYwNWNl
YjQyZjUyNTBlY2NkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJUcmFuc2FjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCVHJhbnNhY3Rpb24uY3BwCkBAIC0yOTQsMTIgKzI5NCwxMCBAQCB2b2lkIElEQlRyYW5z
YWN0aW9uOjpvbkFib3J0KCkKICAgICB9CiAgICAgbV9vYmplY3RTdG9yZUNsZWFudXBNYXAuY2xl
YXIoKTsKICAgICBjbG9zZU9wZW5DdXJzb3JzKCk7Ci0gICAgbV9kYXRhYmFzZS0+dHJhbnNhY3Rp
b25GaW5pc2hlZCh0aGlzKTsKLQotICAgIGlmIChtX2NvbnRleHRTdG9wcGVkIHx8ICFzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCkpCi0gICAgICAgIHJldHVybjsKIAorICAgIC8vIEVucXVldWUgZXZl
bnRzIGJlZm9yZSBub3RpZnlpbmcgZGF0YWJhc2UsIGFzIGRhdGFiYXNlIG1heSBjbG9zZSB3aGlj
aCBlbnF1ZXVlcyBtb3JlIGV2ZW50cyBhbmQgb3JkZXIgbWF0dGVycy4KICAgICBlbnF1ZXVlRXZl
bnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuYWJvcnRFdmVudCwgdHJ1ZSwgZmFsc2UpKTsK
KyAgICBtX2RhdGFiYXNlLT50cmFuc2FjdGlvbkZpbmlzaGVkKHRoaXMpOwogfQogCiB2b2lkIElE
QlRyYW5zYWN0aW9uOjpvbkNvbXBsZXRlKCkKQEAgLTMwOSwxMiArMzA3LDEwIEBAIHZvaWQgSURC
VHJhbnNhY3Rpb246Om9uQ29tcGxldGUoKQogICAgIG1fc3RhdGUgPSBGaW5pc2hpbmc7CiAgICAg
bV9vYmplY3RTdG9yZUNsZWFudXBNYXAuY2xlYXIoKTsKICAgICBjbG9zZU9wZW5DdXJzb3JzKCk7
Ci0gICAgbV9kYXRhYmFzZS0+dHJhbnNhY3Rpb25GaW5pc2hlZCh0aGlzKTsKLQotICAgIGlmICht
X2NvbnRleHRTdG9wcGVkIHx8ICFzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCi0gICAgICAgIHJl
dHVybjsKIAorICAgIC8vIEVucXVldWUgZXZlbnRzIGJlZm9yZSBub3RpZnlpbmcgZGF0YWJhc2Us
IGFzIGRhdGFiYXNlIG1heSBjbG9zZSB3aGljaCBlbnF1ZXVlcyBtb3JlIGV2ZW50cyBhbmQgb3Jk
ZXIgbWF0dGVycy4KICAgICBlbnF1ZXVlRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCku
Y29tcGxldGVFdmVudCwgZmFsc2UsIGZhbHNlKSk7CisgICAgbV9kYXRhYmFzZS0+dHJhbnNhY3Rp
b25GaW5pc2hlZCh0aGlzKTsKIH0KIAogYm9vbCBJREJUcmFuc2FjdGlvbjo6aGFzUGVuZGluZ0Fj
dGl2aXR5KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JJbmRleGVkREJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9ySW5kZXhlZERCQWdlbnQuY3BwCmluZGV4IDVkZmQ5OTUxOTU4YmE2MGU4MjhlNGVjNTM1MDM2
YzM1MTQxOWEyZGEuLmYxMmJkMGRhY2Y4ZTMwYWZiOGRmMjU1ODZlNTkxNTVjNmQ4ZDJjNDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2Vu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFn
ZW50LmNwcApAQCAtMTcyLDM1ICsxNzIsMzUgQEAgcHJpdmF0ZToKICAgICBTdHJpbmcgbV9zZWN1
cml0eU9yaWdpbjsKIH07CiAKLWNsYXNzIEV4ZWN1dGFibGVXaXRoRGF0YWJhc2UgOiBwdWJsaWMg
UmVmQ291bnRlZDxFeGVjdXRhYmxlV2l0aERhdGFiYXNlPiB7Ci1wdWJsaWM6Ci0gICAgdmlydHVh
bCB+RXhlY3V0YWJsZVdpdGhEYXRhYmFzZSgpIHsgfTsKLSAgICB2b2lkIHN0YXJ0KElEQkZhY3Rv
cnlCYWNrZW5kSW50ZXJmYWNlKiwgU2VjdXJpdHlPcmlnaW4qLCBTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUpOwotICAgIHZpcnR1YWwgdm9pZCBleGVj
dXRlKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPikgPSAwOwotfTsKLQog
Y2xhc3MgRGF0YWJhc2VDb25uZWN0aW9uIHsKIHB1YmxpYzoKICAgICBEYXRhYmFzZUNvbm5lY3Rp
b24oKQogICAgICAgICA6IG1faWRiRGF0YWJhc2VDYWxsYmFja3MoSW5zcGVjdG9ySURCRGF0YWJh
c2VDYWxsYmFja3M6OmNyZWF0ZSgpKSB7IH0KIAotICAgIHZvaWQgY29ubmVjdChQYXNzUmVmUHRy
PElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4gaWRiRGF0YWJhc2UpCi0gICAgewotICAgICAg
ICBtX2lkYkRhdGFiYXNlID0gaWRiRGF0YWJhc2U7Ci0gICAgICAgIG1faWRiRGF0YWJhc2UtPnJl
Z2lzdGVyRnJvbnRlbmRDYWxsYmFja3MobV9pZGJEYXRhYmFzZUNhbGxiYWNrcyk7Ci0gICAgfQot
CiAgICAgfkRhdGFiYXNlQ29ubmVjdGlvbigpCiAgICAgewogICAgICAgICBpZiAobV9pZGJEYXRh
YmFzZSkKICAgICAgICAgICAgIG1faWRiRGF0YWJhc2UtPmNsb3NlKG1faWRiRGF0YWJhc2VDYWxs
YmFja3MpOwogICAgIH0KIAorICAgIHZvaWQgY29ubmVjdChQYXNzUmVmUHRyPElEQkRhdGFiYXNl
QmFja2VuZEludGVyZmFjZT4gZGF0YWJhc2UpIHsgbV9pZGJEYXRhYmFzZSA9IGRhdGFiYXNlOyB9
CisgICAgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gY2FsbGJhY2tzKCkgeyByZXR1
cm4gbV9pZGJEYXRhYmFzZUNhbGxiYWNrczsgfQorCiBwcml2YXRlOgogICAgIFJlZlB0cjxJREJE
YXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+IG1faWRiRGF0YWJhc2U7CiAgICAgUmVmUHRyPElEQkRh
dGFiYXNlQ2FsbGJhY2tzPiBtX2lkYkRhdGFiYXNlQ2FsbGJhY2tzOwogfTsKIAorY2xhc3MgRXhl
Y3V0YWJsZVdpdGhEYXRhYmFzZSA6IHB1YmxpYyBSZWZDb3VudGVkPEV4ZWN1dGFibGVXaXRoRGF0
YWJhc2U+IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5FeGVjdXRhYmxlV2l0aERhdGFiYXNlKCkg
eyB9OworICAgIHZvaWQgc3RhcnQoSURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2UqLCBTZWN1cml0
eU9yaWdpbiosIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNl
TmFtZSk7CisgICAgdm9pZCBjb25uZWN0KFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50
ZXJmYWNlPiBkYXRhYmFzZSkgeyBtX2Nvbm5lY3Rpb24uY29ubmVjdChkYXRhYmFzZSk7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgZXhlY3V0ZShQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVy
ZmFjZT4pID0gMDsKK3ByaXZhdGU6CisgICAgRGF0YWJhc2VDb25uZWN0aW9uIG1fY29ubmVjdGlv
bjsKK307CisKIGNsYXNzIE9wZW5EYXRhYmFzZUNhbGxiYWNrIDogcHVibGljIEluc3BlY3RvcklE
QkNhbGxiYWNrIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxPcGVuRGF0YWJhc2VD
YWxsYmFjaz4gY3JlYXRlKEV4ZWN1dGFibGVXaXRoRGF0YWJhc2UqIGV4ZWN1dGFibGVXaXRoRGF0
YWJhc2UpCkBAIC0yMTMsNiArMjEzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBvblN1
Y2Nlc3MoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+IHBycERhdGFiYXNl
KQogICAgIHsKICAgICAgICAgUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4gaWRi
RGF0YWJhc2UgPSBwcnBEYXRhYmFzZTsKKyAgICAgICAgbV9leGVjdXRhYmxlV2l0aERhdGFiYXNl
LT5jb25uZWN0KGlkYkRhdGFiYXNlKTsKICAgICAgICAgbV9leGVjdXRhYmxlV2l0aERhdGFiYXNl
LT5leGVjdXRlKGlkYkRhdGFiYXNlKTsKICAgICB9CiAKQEAgLTIyNSw3ICsyMjYsNyBAQCBwcml2
YXRlOgogdm9pZCBFeGVjdXRhYmxlV2l0aERhdGFiYXNlOjpzdGFydChJREJGYWN0b3J5QmFja2Vu
ZEludGVyZmFjZSogaWRiRmFjdG9yeSwgU2VjdXJpdHlPcmlnaW4qIHNlY3VyaXR5T3JpZ2luLCBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlTmFt
ZSkKIHsKICAgICBSZWZQdHI8T3BlbkRhdGFiYXNlQ2FsbGJhY2s+IGNhbGxiYWNrID0gT3BlbkRh
dGFiYXNlQ2FsbGJhY2s6OmNyZWF0ZSh0aGlzKTsKLSAgICBpZGJGYWN0b3J5LT5vcGVuKGRhdGFi
YXNlTmFtZSwgSURCRGF0YWJhc2VNZXRhZGF0YTo6Tm9JbnRWZXJzaW9uLCBjYWxsYmFjay5nZXQo
KSwgc2VjdXJpdHlPcmlnaW4sIGNvbnRleHQsIFN0cmluZygpKTsKKyAgICBpZGJGYWN0b3J5LT5v
cGVuKGRhdGFiYXNlTmFtZSwgSURCRGF0YWJhc2VNZXRhZGF0YTo6Tm9JbnRWZXJzaW9uLCBjYWxs
YmFjaywgbV9jb25uZWN0aW9uLmNhbGxiYWNrcygpLCBzZWN1cml0eU9yaWdpbiwgY29udGV4dCwg
U3RyaW5nKCkpOwogfQogCiBzdGF0aWMgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bnRlcmZhY2U+IHRyYW5zYWN0aW9uRm9yRGF0YWJhc2UoSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJm
YWNlKiBpZGJEYXRhYmFzZSwgY29uc3QgU3RyaW5nJiBvYmplY3RTdG9yZU5hbWUpCkBAIC0yOTYs
NyArMjk3LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBleGVjdXRlKFBhc3NSZWZQdHI8
SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiBwcnBEYXRhYmFzZSkKICAgICB7CiAgICAgICAg
IFJlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+IGlkYkRhdGFiYXNlID0gcHJwRGF0
YWJhc2U7Ci0gICAgICAgIG1fY29ubmVjdGlvbi5jb25uZWN0KGlkYkRhdGFiYXNlKTsKICAgICAg
ICAgaWYgKCFtX3JlcXVlc3RDYWxsYmFjay0+aXNBY3RpdmUoKSkKICAgICAgICAgICAgIHJldHVy
bjsKIApAQCAtMzM5LDcgKzMzOSw2IEBAIHByaXZhdGU6CiAgICAgRGF0YWJhc2VMb2FkZXJDYWxs
YmFjayhQYXNzUmVmUHRyPFJlcXVlc3REYXRhYmFzZUNhbGxiYWNrPiByZXF1ZXN0Q2FsbGJhY2sp
CiAgICAgICAgIDogbV9yZXF1ZXN0Q2FsbGJhY2socmVxdWVzdENhbGxiYWNrKSB7IH0KICAgICBS
ZWZQdHI8UmVxdWVzdERhdGFiYXNlQ2FsbGJhY2s+IG1fcmVxdWVzdENhbGxiYWNrOwotICAgIERh
dGFiYXNlQ29ubmVjdGlvbiBtX2Nvbm5lY3Rpb247CiB9OwogCiBzdGF0aWMgUGFzc1JlZlB0cjxJ
REJLZXk+IGlkYktleUZyb21JbnNwZWN0b3JPYmplY3QoSW5zcGVjdG9yT2JqZWN0KiBrZXkpCkBA
IC01NTUsNyArNTU0LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBleGVjdXRlKFBhc3NS
ZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiBwcnBEYXRhYmFzZSkKICAgICB7CiAg
ICAgICAgIFJlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+IGlkYkRhdGFiYXNlID0g
cHJwRGF0YWJhc2U7Ci0gICAgICAgIG1fY29ubmVjdGlvbi5jb25uZWN0KGlkYkRhdGFiYXNlKTsK
ICAgICAgICAgaWYgKCFtX3JlcXVlc3RDYWxsYmFjay0+aXNBY3RpdmUoKSkKICAgICAgICAgICAg
IHJldHVybjsKIApAQCAtNTk3LDcgKzU5NSw2IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPElEQktl
eVJhbmdlPiBtX2lkYktleVJhbmdlOwogICAgIGludCBtX3NraXBDb3VudDsKICAgICB1bnNpZ25l
ZCBtX3BhZ2VTaXplOwotICAgIERhdGFiYXNlQ29ubmVjdGlvbiBtX2Nvbm5lY3Rpb247CiB9Owog
CiB9IC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViSURCRGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklE
QkRhdGFiYXNlLmgKaW5kZXggYThiMDM1YzcyN2Y4OGRkYmYwY2UxNzBlYWQ3NDE4NWM2OGJlMmFk
Ni4uNTkyYTEwZTNlMTk3MDFmZTQwODhmMzI5ZDEyZWM5ODAwZjk0ZDI5NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCRGF0YWJhc2UuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJEYXRhYmFzZS5oCkBAIC02Niw2ICs2Niw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY2xvc2UoKSB7IFdFQktJVF9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsgfQogICAgIHZpcnR1YWwgdm9pZCBmb3JjZUNsb3NlKCkgeyBXRUJLSVRfQVNT
RVJUX05PVF9SRUFDSEVEKCk7IH0KIAorICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyBtZXRob2Qg
YWZ0ZXIgV0s5MDQxMSBjbGVhbnVwIGlzIGNvbXBsZXRlIG9uIHRoZSBDaHJvbWl1bSBzaWRlLgog
ICAgIHZpcnR1YWwgdm9pZCBvcGVuKFdlYklEQkRhdGFiYXNlQ2FsbGJhY2tzKikgeyBXRUJLSVRf
QVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KIAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCRmFjdG9yeS5oIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViSURCRmFjdG9yeS5oCmluZGV4IDcwYzhjODQwYzExODEwZWM3ZWE1
MTQ1NWM0ZmRlNzQxYzJiMzFhZGIuLjY5YTQ1M2FiY2Q5NDRlMzcyNmFiNWFiYWU4NmU0N2M3ZDlh
NWM0MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQkZh
Y3RvcnkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJGYWN0b3J5
LmgKQEAgLTU1LDcgKzU1LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGdldERhdGFi
YXNlTmFtZXMoV2ViSURCQ2FsbGJhY2tzKiBjYWxsYmFja3MsIGNvbnN0IFdlYlNlY3VyaXR5T3Jp
Z2luJiBvcmlnaW4sIFdlYkZyYW1lKiBmcmFtZSwgY29uc3QgV2ViU3RyaW5nJiBkYXRhRGlyKSB7
IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogCi0gICAgLy8gRklYTUU6IFRoaXMgb3Zl
cmxvYWQgc2hvdWxkIGJlIHJlbW92ZWQgd2hlbiBXSzkwNDExIGxhbmRzLgorICAgIC8vIEZJWE1F
OiBSZW1vdmUgdGhpcyBvdmVybG9hZCBhZnRlciBXSzkwNDExIGNsZWFudXAgaXMgY29tcGxldGUg
b24gdGhlIENocm9taXVtIHNpZGUuCiAgICAgLy8gVGhlIFdlYktpdCBpbXBsZW1lbnRhdGlvbiBv
ZiBvcGVuIGlnbm9yZXMgdGhlIFdlYkZyYW1lKiBwYXJhbWV0ZXIuCiAgICAgdmlydHVhbCB2b2lk
IG9wZW4oY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBsb25nIGxvbmcgdmVyc2lvbiwgV2ViSURCQ2Fs
bGJhY2tzKiBjYWxsYmFja3MsIGNvbnN0IFdlYlNlY3VyaXR5T3JpZ2luJiBvcmlnaW4sIFdlYkZy
YW1lKiBmcmFtZSwgY29uc3QgV2ViU3RyaW5nJiBkYXRhRGlyKSB7IFdFQktJVF9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9J
REJDYWxsYmFja3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJDYWxs
YmFja3NQcm94eS5jcHAKaW5kZXggMTkzYmYyYjVmNmM2NjZjN2JkNTA2MmFkNDQ3NDQxNWJmYjMw
NDI5Ny4uYWY0OTg0YTc3YzRiODVlMjZlMjllZjg4YThkMjgzZGU0NmFjYzM4YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ2FsbGJhY2tzUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkNhbGxiYWNrc1Byb3h5LmNwcApAQCAtMzQs
MTMgKzM0LDE1IEBACiAjaW5jbHVkZSAiSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZS5oIgogI2lu
Y2x1ZGUgIklEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZS5oIgogI2luY2x1ZGUgIklEQkRhdGFi
YXNlQmFja2VuZFByb3h5LmgiCisjaW5jbHVkZSAiSURCRGF0YWJhc2VDYWxsYmFja3NQcm94eS5o
IgogI2luY2x1ZGUgIklEQkRhdGFiYXNlRXJyb3IuaCIKICNpbmNsdWRlICJJREJPYmplY3RTdG9y
ZUJhY2tlbmRJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRl
cmZhY2UuaCIKICNpbmNsdWRlICJXZWJJREJDYWxsYmFja3MuaCIKICNpbmNsdWRlICJXZWJJREJD
dXJzb3JJbXBsLmgiCi0jaW5jbHVkZSAiV2ViSURCRGF0YWJhc2VJbXBsLmgiCisjaW5jbHVkZSAi
V2ViSURCRGF0YWJhc2VDYWxsYmFja3MuaCIKICNpbmNsdWRlICJXZWJJREJEYXRhYmFzZUVycm9y
LmgiCisjaW5jbHVkZSAiV2ViSURCRGF0YWJhc2VJbXBsLmgiCiAjaW5jbHVkZSAiV2ViSURCS2V5
LmgiCiAjaW5jbHVkZSAiV2ViSURCVHJhbnNhY3Rpb25JbXBsLmgiCiAjaW5jbHVkZSAicGxhdGZv
cm0vV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCkBAIC03NSw3ICs3Nyw4IEBAIHZvaWQgSURC
Q2FsbGJhY2tzUHJveHk6Om9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbnRl
cmZhY2U+IGlkYkN1cnNvCiAKIHZvaWQgSURCQ2FsbGJhY2tzUHJveHk6Om9uU3VjY2VzcyhQYXNz
UmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4gYmFja2VuZCkKIHsKLSAgICBtX2Nh
bGxiYWNrcy0+b25TdWNjZXNzKG5ldyBXZWJJREJEYXRhYmFzZUltcGwoYmFja2VuZCkpOworICAg
IEFTU0VSVChtX2RhdGFiYXNlQ2FsbGJhY2tzLmdldCgpKTsKKyAgICBtX2NhbGxiYWNrcy0+b25T
dWNjZXNzKG5ldyBXZWJJREJEYXRhYmFzZUltcGwoYmFja2VuZCwgbV9kYXRhYmFzZUNhbGxiYWNr
cy5yZWxlYXNlKCkpKTsKIH0KIAogdm9pZCBJREJDYWxsYmFja3NQcm94eTo6b25TdWNjZXNzKFBh
c3NSZWZQdHI8SURCS2V5PiBpZGJLZXkpCkBAIC0xMzcsOSArMTQwLDE3IEBAIHZvaWQgSURCQ2Fs
bGJhY2tzUHJveHk6Om9uQmxvY2tlZChpbnQ2NF90IGV4aXN0aW5nVmVyc2lvbikKIAogdm9pZCBJ
REJDYWxsYmFja3NQcm94eTo6b25VcGdyYWRlTmVlZGVkKGludDY0X3Qgb2xkVmVyc2lvbiwgUGFz
c1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IHRyYW5zYWN0aW9uLCBQYXNz
UmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4gZGF0YWJhc2UpCiB7Ci0gICAgbV9j
YWxsYmFja3MtPm9uVXBncmFkZU5lZWRlZChvbGRWZXJzaW9uLCBuZXcgV2ViSURCVHJhbnNhY3Rp
b25JbXBsKHRyYW5zYWN0aW9uKSwgbmV3IFdlYklEQkRhdGFiYXNlSW1wbChkYXRhYmFzZSkpOwor
ICAgIEFTU0VSVChtX2RhdGFiYXNlQ2FsbGJhY2tzKTsKKyAgICBtX2NhbGxiYWNrcy0+b25VcGdy
YWRlTmVlZGVkKG9sZFZlcnNpb24sIG5ldyBXZWJJREJUcmFuc2FjdGlvbkltcGwodHJhbnNhY3Rp
b24pLCBuZXcgV2ViSURCRGF0YWJhc2VJbXBsKGRhdGFiYXNlLCBtX2RhdGFiYXNlQ2FsbGJhY2tz
KSk7Cit9CisKK3ZvaWQgSURCQ2FsbGJhY2tzUHJveHk6OnNldERhdGFiYXNlQ2FsbGJhY2tzKFBh
c3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3NQcm94eT4gZGF0YWJhc2VDYWxsYmFja3MpCit7
CisgICAgQVNTRVJUKCFtX2RhdGFiYXNlQ2FsbGJhY2tzKTsKKyAgICBtX2RhdGFiYXNlQ2FsbGJh
Y2tzID0gZGF0YWJhc2VDYWxsYmFja3M7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCisK
ICNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL0lEQkNhbGxiYWNrc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9JREJDYWxsYmFja3NQcm94eS5oCmluZGV4IDgyNTc1OGFhZGU5M2Y0MWYyNjI5
MzAzNjhiZDk2NjYwZmU1MmE1MjcuLmY2MTNhODVjMmU0ZWQxNmNiODg3ZjY4YTA1MDMxODQ5Y2Ix
Y2VmMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkNhbGxiYWNr
c1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ2FsbGJhY2tzUHJv
eHkuaApAQCAtMzksNiArMzksNyBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYklE
QkNhbGxiYWNrczsKK2NsYXNzIElEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHk7CiAKIGNsYXNzIElE
QkNhbGxiYWNrc1Byb3h5IDogcHVibGljIFdlYkNvcmU6OklEQkNhbGxiYWNrcyB7CiBwdWJsaWM6
CkBAIC01OSwxMCArNjAsMTMgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBvbkJsb2NrZWQo
aW50NjRfdCBleGlzdGluZ1ZlcnNpb24pOwogICAgIHZpcnR1YWwgdm9pZCBvblVwZ3JhZGVOZWVk
ZWQoaW50NjRfdCBvbGRWZXJzaW9uLCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQlRyYW5zYWN0aW9u
QmFja2VuZEludGVyZmFjZT4sIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5k
SW50ZXJmYWNlPik7CiAKKyAgICB2b2lkIHNldERhdGFiYXNlQ2FsbGJhY2tzKFBhc3NSZWZQdHI8
SURCRGF0YWJhc2VDYWxsYmFja3NQcm94eT4pOworCiBwcml2YXRlOgogICAgIElEQkNhbGxiYWNr
c1Byb3h5KFBhc3NPd25QdHI8V2ViSURCQ2FsbGJhY2tzPik7CiAKICAgICBPd25QdHI8V2ViSURC
Q2FsbGJhY2tzPiBtX2NhbGxiYWNrczsKKyAgICBSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3NQ
cm94eT4gbV9kYXRhYmFzZUNhbGxiYWNrczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5k
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5k
UHJveHkuY3BwCmluZGV4IDU2YWZlNWZiNWQyYjYyZmE0NDQ5OTU0NDY5MzBhMDFkMGJjOTc3OTgu
LjUwMWNlNjFmYjU5NTYyNjZiMGMzYmYxYjRjMDJhZWY2Y2RhMDA4MDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94eS5jcHAK
QEAgLTEwNywxMSArMTA3LDYgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRQcm94eTo6Y2xvc2Uo
UGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4pCiAgICAgbV93ZWJJREJEYXRhYmFzZS0+
Y2xvc2UoKTsKIH0KIAotdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRQcm94eTo6cmVnaXN0ZXJGcm9u
dGVuZENhbGxiYWNrcyhQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBkYXRhYmFzZUNh
bGxiYWNrcykKLXsKLSAgICBtX3dlYklEQkRhdGFiYXNlLT5vcGVuKG5ldyBXZWJJREJEYXRhYmFz
ZUNhbGxiYWNrc0ltcGwoZGF0YWJhc2VDYWxsYmFja3MpKTsKLX0KLQogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmggYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94eS5oCmluZGV4
IDJhOTM2MDBjNmYyZmEwYzI2N2MyZGEwNmZiOGI5MjE2ZmQ4MjhlMzYuLjc5NTYxMGFhNjU3MmRj
YTQ2Y2MyNjRkYjViMDhiZDE3OGMxYzU2NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuaApAQCAtNTAsOCArNTAsNiBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFj
a2VuZEludGVyZmFjZT4gdHJhbnNhY3Rpb24oV2ViQ29yZTo6RE9NU3RyaW5nTGlzdCogc3RvcmVO
YW1lcywgdW5zaWduZWQgc2hvcnQgbW9kZSwgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSYpOwogICAg
IHZpcnR1YWwgdm9pZCBjbG9zZShQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkRhdGFiYXNlQ2FsbGJh
Y2tzPik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJGcm9udGVuZENhbGxiYWNrcyhQYXNz
UmVmUHRyPFdlYkNvcmU6OklEQkRhdGFiYXNlQ2FsbGJhY2tzPik7Ci0KIHByaXZhdGU6CiAgICAg
SURCRGF0YWJhc2VCYWNrZW5kUHJveHkoUGFzc093blB0cjxXZWJJREJEYXRhYmFzZT4pOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJGYWN0b3J5QmFja2VuZFBy
b3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkZhY3RvcnlCYWNrZW5kUHJv
eHkuY3BwCmluZGV4IGJhYmNiYWUxODQwOWM1ZGQyNTkyYzBkZmQ5MjMzMjZmYmY2MGU5NGEuLjI4
OTk1ZWM2NjBlMzFmZjdjZWZhZDkzZWIzYmRhMjM0MWFhMWVmZjggMTAwNzU1Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkZhY3RvcnlCYWNrZW5kUHJveHkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkZhY3RvcnlCYWNrZW5kUHJveHkuY3BwCkBAIC0z
NCwxMiArMzQsMTQgQEAKICNpbmNsdWRlICJDcm9zc1RocmVhZFRhc2suaCIKICNpbmNsdWRlICJE
T01TdHJpbmdMaXN0LmgiCiAjaW5jbHVkZSAiSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuaCIKKyNp
bmNsdWRlICJJREJEYXRhYmFzZUNhbGxiYWNrcy5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNlRXJy
b3IuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSAiU2Vj
dXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJXZWJGcmFtZUltcGwuaCIKICNpbmNsdWRlICJXZWJJ
REJDYWxsYmFja3NJbXBsLmgiCiAjaW5jbHVkZSAiV2ViSURCRGF0YWJhc2UuaCIKKyNpbmNsdWRl
ICJXZWJJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwuaCIKICNpbmNsdWRlICJXZWJJREJEYXRhYmFz
ZUVycm9yLmgiCiAjaW5jbHVkZSAiV2ViSURCRmFjdG9yeS5oIgogI2luY2x1ZGUgIldlYktpdC5o
IgpAQCAtMjAzLDE1ICsyMDUsMTYgQEAgdm9pZCBJREJGYWN0b3J5QmFja2VuZFByb3h5OjpnZXRE
YXRhYmFzZU5hbWVzKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmEKIH0KIAogCi12
b2lkIElEQkZhY3RvcnlCYWNrZW5kUHJveHk6Om9wZW4oY29uc3QgU3RyaW5nJiBuYW1lLCBpbnQ2
NF90IHZlcnNpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmFja3MsIFBhc3NS
ZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luLCBTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIGRhdGFEaXIpCit2b2lkIElEQkZhY3RvcnlCYWNr
ZW5kUHJveHk6Om9wZW4oY29uc3QgU3RyaW5nJiBuYW1lLCBpbnQ2NF90IHZlcnNpb24sIFBhc3NS
ZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmFja3MsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VD
YWxsYmFja3M+IHBycERhdGFiYXNlQ2FsbGJhY2tzLCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2lu
PiBzZWN1cml0eU9yaWdpbiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3Qg
U3RyaW5nJiBkYXRhRGlyKQogewogICAgIFJlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcyhw
cnBDYWxsYmFja3MpOworICAgIFJlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gZGF0YWJhc2VD
YWxsYmFja3MocHJwRGF0YWJhc2VDYWxsYmFja3MpOwogICAgIFdlYlNlY3VyaXR5T3JpZ2luIG9y
aWdpbihzZWN1cml0eU9yaWdpbik7CiAgICAgaWYgKCFhbGxvd0luZGV4ZWREQihjb250ZXh0LCBu
YW1lLCBvcmlnaW4sIGNhbGxiYWNrcykpCiAgICAgICAgIHJldHVybjsKIAogICAgIFdlYkZyYW1l
SW1wbCogd2ViRnJhbWUgPSBnZXRXZWJGcmFtZShjb250ZXh0KTsKLSAgICBtX3dlYklEQkZhY3Rv
cnktPm9wZW4obmFtZSwgdmVyc2lvbiwgbmV3IFdlYklEQkNhbGxiYWNrc0ltcGwoY2FsbGJhY2tz
KSwgb3JpZ2luLCB3ZWJGcmFtZSwgZGF0YURpcik7CisgICAgbV93ZWJJREJGYWN0b3J5LT5vcGVu
KG5hbWUsIHZlcnNpb24sIG5ldyBXZWJJREJDYWxsYmFja3NJbXBsKGNhbGxiYWNrcyksIG5ldyBX
ZWJJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwoZGF0YWJhc2VDYWxsYmFja3MpLCBvcmlnaW4sIHdl
YkZyYW1lLCBkYXRhRGlyKTsKIH0KIAogdm9pZCBJREJGYWN0b3J5QmFja2VuZFByb3h5OjpkZWxl
dGVEYXRhYmFzZShjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBw
cnBDYWxsYmFja3MsIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luLCBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIGRhdGFEaXIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJGYWN0b3J5QmFja2VuZFBy
b3h5LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJGYWN0b3J5QmFja2VuZFByb3h5
LmgKaW5kZXggYzBkZTkxMGE5MmNkZWE5MWEzZDNhMWM1MzBhMjgwN2M1YWJmYWE3YS4uODgzODBk
N2E0MmVkMTE3MzAyOTM1YmViYmNhY2NlYjZmNmU5N2Q3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvSURCRmFjdG9yeUJhY2tlbmRQcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL0lEQkZhY3RvcnlCYWNrZW5kUHJveHkuaApAQCAtNDksNyArNDks
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+SURCRmFjdG9yeUJhY2tlbmRQcm94eSgpOwogCiAg
ICAgdmlydHVhbCB2b2lkIGdldERhdGFiYXNlTmFtZXMoUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJD
YWxsYmFja3M+LCBQYXNzUmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiwgV2ViQ29yZTo6
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgZGF0YURpcik7Ci0gICAgdmly
dHVhbCB2b2lkIG9wZW4oY29uc3QgU3RyaW5nJiBuYW1lLCBpbnQ2NF90IHZlcnNpb24sIFBhc3NS
ZWZQdHI8V2ViQ29yZTo6SURCQ2FsbGJhY2tzPiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbj4sIFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcm
IGRhdGFEaXIpOworICAgIHZpcnR1YWwgdm9pZCBvcGVuKGNvbnN0IFN0cmluZyYgbmFtZSwgaW50
NjRfdCB2ZXJzaW9uLCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkNhbGxiYWNrcz4sIFBhc3NSZWZQ
dHI8V2ViQ29yZTo6SURCRGF0YWJhc2VDYWxsYmFja3M+LCBQYXNzUmVmUHRyPFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luPiwgV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0
cmluZyYgZGF0YURpcik7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZURhdGFiYXNlKGNvbnN0IFN0
cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJDYWxsYmFja3M+LCBQYXNzUmVmUHRy
PFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiwgV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIGNvbnN0IFN0cmluZyYgZGF0YURpcik7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwuY3BwIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmNwcAppbmRleCAwZDE0MmJjMDI5
M2FhMTNmNWIxOTJjM2ZkYmM1NjMzN2NkYWM3NTdkLi41Mjg3OWE5YTdmM2I3MzgwYWJhMzA2ZWQ2
NzNkMGM0MmExMjhmYzQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJJREJEYXRhYmFzZUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YklEQkRhdGFiYXNlSW1wbC5jcHAKQEAgLTQ1LDggKzQ1LDkgQEAgdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1XZWJJREJEYXRhYmFzZUltcGw6OldlYklE
QkRhdGFiYXNlSW1wbChQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4gZGF0
YWJhc2VCYWNrZW5kKQorV2ViSURCRGF0YWJhc2VJbXBsOjpXZWJJREJEYXRhYmFzZUltcGwoUGFz
c1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+IGRhdGFiYXNlQmFja2VuZCwgV1RG
OjpQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHk+IGRhdGFiYXNlQ2FsbGJhY2tz
KQogICAgIDogbV9kYXRhYmFzZUJhY2tlbmQoZGF0YWJhc2VCYWNrZW5kKQorICAgICwgbV9kYXRh
YmFzZUNhbGxiYWNrcyhkYXRhYmFzZUNhbGxiYWNrcykKICAgICAsIG1fY2xvc2VQZW5kaW5nKGZh
bHNlKQogewogfQpAQCAtOTMsNyArOTQsNyBAQCBXZWJJREJUcmFuc2FjdGlvbiogV2ViSURCRGF0
YWJhc2VJbXBsOjp0cmFuc2FjdGlvbihjb25zdCBXZWJET01TdHJpbmdMaXN0JiBuYW1lcwogCiB2
b2lkIFdlYklEQkRhdGFiYXNlSW1wbDo6Y2xvc2UoKQogewotICAgIC8vIFVzZSB0aGUgY2FsbGJh
Y2tzIHRoYXQgOjpvcGVuIGdhdmUgdXMgc28gdGhhdCB0aGUgYmFja2VuZCBpbgorICAgIC8vIFVz
ZSB0aGUgY2FsbGJhY2tzIHBhc3NlZCBpbiB0byB0aGUgY29uc3RydWN0b3Igc28gdGhhdCB0aGUg
YmFja2VuZCBpbgogICAgIC8vIG11bHRpLXByb2Nlc3MgY2hyb21pdW0ga25vd3Mgd2hpY2ggZGF0
YWJhc2UgY29ubmVjdGlvbiBpcyBjbG9zaW5nLgogICAgIGlmICghbV9kYXRhYmFzZUNhbGxiYWNr
cykgewogICAgICAgICBtX2Nsb3NlUGVuZGluZyA9IHRydWU7CkBAIC0xMTMsMTUgKzExNCw2IEBA
IHZvaWQgV2ViSURCRGF0YWJhc2VJbXBsOjpmb3JjZUNsb3NlKCkKICAgICBjYWxsYmFja3MtPm9u
Rm9yY2VkQ2xvc2UoKTsKIH0KIAotdm9pZCBXZWJJREJEYXRhYmFzZUltcGw6Om9wZW4oV2ViSURC
RGF0YWJhc2VDYWxsYmFja3MqIGNhbGxiYWNrcykKLXsKLSAgICBBU1NFUlQoIW1fZGF0YWJhc2VD
YWxsYmFja3MpOwotICAgIG1fZGF0YWJhc2VDYWxsYmFja3MgPSBJREJEYXRhYmFzZUNhbGxiYWNr
c1Byb3h5OjpjcmVhdGUoYWRvcHRQdHIoY2FsbGJhY2tzKSk7Ci0gICAgbV9kYXRhYmFzZUJhY2tl
bmQtPnJlZ2lzdGVyRnJvbnRlbmRDYWxsYmFja3MobV9kYXRhYmFzZUNhbGxiYWNrcyk7Ci0gICAg
aWYgKG1fY2xvc2VQZW5kaW5nKQotICAgICAgICBjbG9zZSgpOwotfQotCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmggYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwuaAppbmRleCA0YTgyODRj
ZTU5YWQxZTYzNmNjNGZiYzk3MjdiY2I3N2E0MjJjMzBlLi45Y2QxY2FmNTkyMDY5YjU0ZGZiOTZj
Yzg3ODQ0YzM3OTZkYjNhMzA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJJREJEYXRhYmFzZUltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJJREJEYXRhYmFzZUltcGwuaApAQCAtNDcsNyArNDcsNyBAQCBjbGFzcyBXZWJJREJUcmFuc2Fj
dGlvbjsKIC8vIFNlZSBjb21tZW50IGluIFdlYklEQkZhY3RvcnkgZm9yIGEgaGlnaCBsZXZlbCBv
dmVydmlldyB0aGVzZSBjbGFzc2VzLgogY2xhc3MgV2ViSURCRGF0YWJhc2VJbXBsIDogcHVibGlj
IFdlYklEQkRhdGFiYXNlIHsKIHB1YmxpYzoKLSAgICBXZWJJREJEYXRhYmFzZUltcGwoV1RGOjpQ
YXNzUmVmUHRyPFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4pOworICAgIFdl
YklEQkRhdGFiYXNlSW1wbChXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6SURCRGF0YWJhc2VCYWNr
ZW5kSW50ZXJmYWNlPiwgV1RGOjpQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHk+
KTsKICAgICB2aXJ0dWFsIH5XZWJJREJEYXRhYmFzZUltcGwoKTsKIAogICAgIHZpcnR1YWwgV2Vi
SURCTWV0YWRhdGEgbWV0YWRhdGEoKSBjb25zdDsKQEAgLTU5LDkgKzU5LDYgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBmb3JjZUNsb3NlKCk7CiAgICAgdmlydHVhbCB2b2lkIGNsb3NlKCk7
CiAKLSAgICAvLyBGSVhNRTogUmVuYW1lICJvcGVuIiB0byByZWdpc3RlckZyb250ZW5kQ2FsbGJh
Y2tzLgotICAgIHZpcnR1YWwgdm9pZCBvcGVuKFdlYklEQkRhdGFiYXNlQ2FsbGJhY2tzKik7Ci0K
IHByaXZhdGU6CiAgICAgV1RGOjpSZWZQdHI8V2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW50
ZXJmYWNlPiBtX2RhdGFiYXNlQmFja2VuZDsKICAgICBXVEY6OlJlZlB0cjxJREJEYXRhYmFzZUNh
bGxiYWNrc1Byb3h5PiBtX2RhdGFiYXNlQ2FsbGJhY2tzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRmFjdG9yeUltcGwuY3BwIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViSURCRmFjdG9yeUltcGwuY3BwCmluZGV4IGFkNzE0NzZiN2ViYjQ2ODZl
YTgyNWI5NjIxOTE2ZTYzYjI5MGFjNzcuLjk0YThkNDY4YTkwYTkwYzQxMmM3YWE2Yzk4YWVmYjc0
YmI3YTM3YjggMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkZh
Y3RvcnlJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJGYWN0
b3J5SW1wbC5jcHAKQEAgLTM1LDggKzM1LDEwIEBACiAKICNpbmNsdWRlICJET01TdHJpbmdMaXN0
LmgiCiAjaW5jbHVkZSAiSURCQ2FsbGJhY2tzUHJveHkuaCIKKyNpbmNsdWRlICJJREJEYXRhYmFz
ZUNhbGxiYWNrc1Byb3h5LmgiCiAjaW5jbHVkZSAiSURCRmFjdG9yeUJhY2tlbmRJbXBsLmgiCiAj
aW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKKyNpbmNsdWRlICJXZWJJREJEYXRhYmFzZUNhbGxi
YWNrcy5oIgogI2luY2x1ZGUgIldlYklEQkRhdGFiYXNlRXJyb3IuaCIKICNpbmNsdWRlIDx3dGYv
T3duUHRyLmg+CiAKQEAgLTYzLDkgKzY1LDEyIEBAIHZvaWQgV2ViSURCRmFjdG9yeUltcGw6Omdl
dERhdGFiYXNlTmFtZXMoV2ViSURCQ2FsbGJhY2tzKiBjYWxsYmFja3MsIGNvbnN0IFdlYlNlCiAg
ICAgbV9pZGJGYWN0b3J5QmFja2VuZC0+Z2V0RGF0YWJhc2VOYW1lcyhJREJDYWxsYmFja3NQcm94
eTo6Y3JlYXRlKGFkb3B0UHRyKGNhbGxiYWNrcykpLCBvcmlnaW4sIDAsIGRhdGFEaXIpOwogfQog
Ci12b2lkIFdlYklEQkZhY3RvcnlJbXBsOjpvcGVuKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgbG9u
ZyBsb25nIHZlcnNpb24sIFdlYklEQkNhbGxiYWNrcyogY2FsbGJhY2tzLCBjb25zdCBXZWJTZWN1
cml0eU9yaWdpbiYgb3JpZ2luLCBXZWJGcmFtZSosIGNvbnN0IFdlYlN0cmluZyYgZGF0YURpcikK
K3ZvaWQgV2ViSURCRmFjdG9yeUltcGw6Om9wZW4oY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBsb25n
IGxvbmcgdmVyc2lvbiwgV2ViSURCQ2FsbGJhY2tzKiBjYWxsYmFja3MsIFdlYklEQkRhdGFiYXNl
Q2FsbGJhY2tzKiBkYXRhYmFzZUNhbGxiYWNrcywgY29uc3QgV2ViU2VjdXJpdHlPcmlnaW4mIG9y
aWdpbiwgV2ViRnJhbWUqLCBjb25zdCBXZWJTdHJpbmcmIGRhdGFEaXIpCiB7Ci0gICAgbV9pZGJG
YWN0b3J5QmFja2VuZC0+b3BlbihuYW1lLCB2ZXJzaW9uLCBJREJDYWxsYmFja3NQcm94eTo6Y3Jl
YXRlKGFkb3B0UHRyKGNhbGxiYWNrcykpLmdldCgpLCBvcmlnaW4sIDAsIGRhdGFEaXIpOworICAg
IFJlZlB0cjxJREJDYWxsYmFja3NQcm94eT4gY2FsbGJhY2tzUHJveHkgPSBJREJDYWxsYmFja3NQ
cm94eTo6Y3JlYXRlKGFkb3B0UHRyKGNhbGxiYWNrcykpOworICAgIFJlZlB0cjxJREJEYXRhYmFz
ZUNhbGxiYWNrc1Byb3h5PiBkYXRhYmFzZUNhbGxiYWNrc1Byb3h5ID0gSURCRGF0YWJhc2VDYWxs
YmFja3NQcm94eTo6Y3JlYXRlKGFkb3B0UHRyKGRhdGFiYXNlQ2FsbGJhY2tzKSk7CisgICAgY2Fs
bGJhY2tzUHJveHktPnNldERhdGFiYXNlQ2FsbGJhY2tzKGRhdGFiYXNlQ2FsbGJhY2tzUHJveHkp
OworICAgIG1faWRiRmFjdG9yeUJhY2tlbmQtPm9wZW4obmFtZSwgdmVyc2lvbiwgY2FsbGJhY2tz
UHJveHkuZ2V0KCksIGRhdGFiYXNlQ2FsbGJhY2tzUHJveHkuZ2V0KCksIG9yaWdpbiwgMCwgZGF0
YURpcik7CiB9CiAKIHZvaWQgV2ViSURCRmFjdG9yeUltcGw6OmRlbGV0ZURhdGFiYXNlKGNvbnN0
IFdlYlN0cmluZyYgbmFtZSwgV2ViSURCQ2FsbGJhY2tzKiBjYWxsYmFja3MsIGNvbnN0IFdlYlNl
Y3VyaXR5T3JpZ2luJiBvcmlnaW4sIFdlYkZyYW1lKiwgY29uc3QgV2ViU3RyaW5nJiBkYXRhRGly
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRmFjdG9yeUlt
cGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkZhY3RvcnlJbXBsLmgKaW5k
ZXggODMzZWViNTkxMjU5Yjg1M2MzMjFmZDExOGYwOTRhNWI4YTdjODg2NC4uMzNmNWEyMWQyYzc0
ZjU4ZGZmOTRlMWViN2I5MGU1YWQ0MzBkMTYyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViSURCRmFjdG9yeUltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJJREJGYWN0b3J5SW1wbC5oCkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIH5XZWJJREJGYWN0b3J5SW1wbCgpOwogCiAgICAgdmlydHVhbCB2b2lkIGdldERh
dGFiYXNlTmFtZXMoV2ViSURCQ2FsbGJhY2tzKiwgY29uc3QgV2ViU2VjdXJpdHlPcmlnaW4mLCBX
ZWJGcmFtZSosIGNvbnN0IFdlYlN0cmluZyYgZGF0YURpcik7Ci0gICAgdmlydHVhbCB2b2lkIG9w
ZW4oY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBsb25nIGxvbmcgdmVyc2lvbiwgV2ViSURCQ2FsbGJh
Y2tzKiwgY29uc3QgV2ViU2VjdXJpdHlPcmlnaW4mLCBXZWJGcmFtZSosIGNvbnN0IFdlYlN0cmlu
ZyYgZGF0YURpcik7CisgICAgdmlydHVhbCB2b2lkIG9wZW4oY29uc3QgV2ViU3RyaW5nJiBuYW1l
LCBsb25nIGxvbmcgdmVyc2lvbiwgV2ViSURCQ2FsbGJhY2tzKiwgV2ViSURCRGF0YWJhc2VDYWxs
YmFja3MqLCBjb25zdCBXZWJTZWN1cml0eU9yaWdpbiYsIFdlYkZyYW1lKiwgY29uc3QgV2ViU3Ry
aW5nJiBkYXRhRGlyKTsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlRGF0YWJhc2UoY29uc3QgV2Vi
U3RyaW5nJiBuYW1lLCBXZWJJREJDYWxsYmFja3MqLCBjb25zdCBXZWJTZWN1cml0eU9yaWdpbiYs
IFdlYkZyYW1lKiwgY29uc3QgV2ViU3RyaW5nJiBkYXRhRGlyKTsKIAogcHJpdmF0ZToKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCQWJvcnRPbkNvcnJ1cHRUZXN0
LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCQWJvcnRPbkNvcnJ1cHRUZXN0
LmNwcAppbmRleCAxZDM5NTA5NmFhZGIzYTViM2RlOWI3MGRhYjYwZjMxODljZmJhOTg2Li5iMDgw
YmZjNGRmNTFhMjk4ZjRmZGI1ZDljMjhlNzcxN2Y0MGRhZjE0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQkFib3J0T25Db3JydXB0VGVzdC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJBYm9ydE9uQ29ycnVwdFRlc3QuY3BwCkBAIC0y
Niw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSURCQ3Vyc29yQmFj
a2VuZEludGVyZmFjZS5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZS5o
IgorI2luY2x1ZGUgIklEQkRhdGFiYXNlQ2FsbGJhY2tzLmgiCiAjaW5jbHVkZSAiSURCRmFjdG9y
eUJhY2tlbmRJbXBsLmgiCiAjaW5jbHVkZSAiSURCRmFrZUJhY2tpbmdTdG9yZS5oIgogI2luY2x1
ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCkBAIC05NiwxNCArOTcsMjYgQEAgcHJvdGVjdGVkOgogICAg
IH0KIH07CiAKK2NsYXNzIEZha2VJREJEYXRhYmFzZUNhbGxiYWNrcyA6IHB1YmxpYyBJREJEYXRh
YmFzZUNhbGxiYWNrcyB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8RmFrZUlEQkRh
dGFiYXNlQ2FsbGJhY2tzPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZihuZXcgRmFrZUlEQkRh
dGFiYXNlQ2FsbGJhY2tzKCkpOyB9CisgICAgdmlydHVhbCB+RmFrZUlEQkRhdGFiYXNlQ2FsbGJh
Y2tzKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIG9uVmVyc2lvbkNoYW5nZShjb25zdCBTdHJpbmcm
IHZlcnNpb24pIE9WRVJSSURFIHsgfQorICAgIHZpcnR1YWwgdm9pZCBvblZlcnNpb25DaGFuZ2Uo
aW50NjRfdCBvbGRWZXJzaW9uLCBpbnQ2NF90IG5ld1ZlcnNpb24pIE9WRVJSSURFIHsgfQorICAg
IHZpcnR1YWwgdm9pZCBvbkZvcmNlZENsb3NlKCkgT1ZFUlJJREUgeyB9Citwcml2YXRlOgorICAg
IEZha2VJREJEYXRhYmFzZUNhbGxiYWNrcygpIHsgfQorfTsKKwogVEVTVChJREJBYm9ydFRlc3Qs
IFRoZVRlc3QpCiB7CiAgICAgUmVmUHRyPElEQkZhY3RvcnlCYWNrZW5kSW1wbD4gZmFjdG9yeSA9
IEZhaWxpbmdJREJGYWN0b3J5QmFja2VuZEltcGw6OmNyZWF0ZSgpOwogICAgIGNvbnN0IFN0cmlu
ZyYgbmFtZSA9ICJkYiBuYW1lIjsKICAgICBNb2NrSURCQ2FsbGJhY2tzIGNhbGxiYWNrczsKKyAg
ICBSZWZQdHI8RmFrZUlEQkRhdGFiYXNlQ2FsbGJhY2tzPiBkYXRhYmFzZUNhbGxiYWNrcyA9IEZh
a2VJREJEYXRhYmFzZUNhbGxiYWNrczo6Y3JlYXRlKCk7CiAgICAgUmVmUHRyPFNlY3VyaXR5T3Jp
Z2luPiBvcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKCJodHRwIiwgImxvY2FsaG9zdCIs
IDgxKTsKICAgICBjb25zdCBpbnQ2NF90IER1bW15VmVyc2lvbiA9IDI7Ci0gICAgZmFjdG9yeS0+
b3BlbihuYW1lLCBEdW1teVZlcnNpb24sICZjYWxsYmFja3MsIG9yaWdpbiwgMCAvKkZyYW1lKi8s
IFN0cmluZygpIC8qcGF0aCovKTsKKyAgICBmYWN0b3J5LT5vcGVuKG5hbWUsIER1bW15VmVyc2lv
biwgJmNhbGxiYWNrcywgZGF0YWJhc2VDYWxsYmFja3MsIG9yaWdpbiwgMCAvKkZyYW1lKi8sIFN0
cmluZygpIC8qcGF0aCovKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCRGF0YWJhc2VCYWNrZW5kVGVzdC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQkRhdGFiYXNlQmFja2VuZFRlc3QuY3BwCmluZGV4
IDFmYTJjMjYyZGIxZDE1NTFlZmQyNTgxYTFiNzJlNjNlZGQyZTc1MDUuLmNiOTQyNDNkMDZhZmYy
MDk5Yzk5YThlZTZiYTQ2MGY1ZjMyMWRlZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvSURCRGF0YWJhc2VCYWNrZW5kVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9JREJEYXRhYmFzZUJhY2tlbmRUZXN0LmNwcApAQCAtMjcsNiArMjcs
NyBAQAogI2luY2x1ZGUgIklEQkJhY2tpbmdTdG9yZS5oIgogI2luY2x1ZGUgIklEQkN1cnNvckJh
Y2tlbmRJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJJREJEYXRhYmFzZUJhY2tlbmRJbXBsLmgiCisj
aW5jbHVkZSAiSURCRGF0YWJhc2VDYWxsYmFja3NQcm94eS5oIgogI2luY2x1ZGUgIklEQkZhY3Rv
cnlCYWNrZW5kSW1wbC5oIgogI2luY2x1ZGUgIklEQkZha2VCYWNraW5nU3RvcmUuaCIKICNpbmNs
dWRlICJJREJJbmRleEJhY2tlbmRJbXBsLmgiCkBAIC00MCw5ICs0MSwxMCBAQAogI2lmIEVOQUJM
RShJTkRFWEVEX0RBVEFCQVNFKQogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKK3VzaW5nIFdl
YktpdDo6SURCRGF0YWJhc2VDYWxsYmFja3NQcm94eTsKIHVzaW5nIFdlYktpdDo6V2ViSURCRGF0
YWJhc2U7Ci11c2luZyBXZWJLaXQ6OldlYklEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbDsKIHVzaW5n
IFdlYktpdDo6V2ViSURCRGF0YWJhc2VJbXBsOwordXNpbmcgV2ViS2l0OjpXZWJJREJEYXRhYmFz
ZUNhbGxiYWNrc0ltcGw7CiAKIG5hbWVzcGFjZSB7CiAKQEAgLTEyMiwyMCArMTI0LDE2IEBAIFRF
U1QoSURCRGF0YWJhc2VCYWNrZW5kVGVzdCwgQ29ubmVjdGlvbkxpZmVjeWNsZSkKICAgICBFWFBF
Q1RfR1QoYmFja2luZ1N0b3JlLT5yZWZDb3VudCgpLCAxKTsKIAogICAgIFJlZlB0cjxNb2NrSURC
Q2FsbGJhY2tzPiByZXF1ZXN0MSA9IE1vY2tJREJDYWxsYmFja3M6OmNyZWF0ZSgpOwotICAgIGRi
LT5vcGVuQ29ubmVjdGlvbihyZXF1ZXN0MSk7Ci0KICAgICBSZWZQdHI8RmFrZUlEQkRhdGFiYXNl
Q2FsbGJhY2tzPiBjb25uZWN0aW9uMSA9IEZha2VJREJEYXRhYmFzZUNhbGxiYWNrczo6Y3JlYXRl
KCk7Ci0gICAgZGItPnJlZ2lzdGVyRnJvbnRlbmRDYWxsYmFja3MoY29ubmVjdGlvbjEpOworICAg
IGRiLT5vcGVuQ29ubmVjdGlvbihyZXF1ZXN0MSwgY29ubmVjdGlvbjEpOwogCiAgICAgUmVmUHRy
PE1vY2tJREJDYWxsYmFja3M+IHJlcXVlc3QyID0gTW9ja0lEQkNhbGxiYWNrczo6Y3JlYXRlKCk7
Ci0gICAgZGItPm9wZW5Db25uZWN0aW9uKHJlcXVlc3QyKTsKKyAgICBSZWZQdHI8RmFrZUlEQkRh
dGFiYXNlQ2FsbGJhY2tzPiBjb25uZWN0aW9uMiA9IEZha2VJREJEYXRhYmFzZUNhbGxiYWNrczo6
Y3JlYXRlKCk7CisgICAgZGItPm9wZW5Db25uZWN0aW9uKHJlcXVlc3QyLCBjb25uZWN0aW9uMik7
CiAKICAgICBkYi0+Y2xvc2UoY29ubmVjdGlvbjEpOwogICAgIEVYUEVDVF9HVChiYWNraW5nU3Rv
cmUtPnJlZkNvdW50KCksIDEpOwogCi0gICAgUmVmUHRyPEZha2VJREJEYXRhYmFzZUNhbGxiYWNr
cz4gY29ubmVjdGlvbjIgPSBGYWtlSURCRGF0YWJhc2VDYWxsYmFja3M6OmNyZWF0ZSgpOwotICAg
IGRiLT5yZWdpc3RlckZyb250ZW5kQ2FsbGJhY2tzKGNvbm5lY3Rpb24yKTsKLQogICAgIGRiLT5j
bG9zZShjb25uZWN0aW9uMik7CiAgICAgRVhQRUNUX1RSVUUoYmFja2luZ1N0b3JlLT5oYXNPbmVS
ZWYoKSk7CiB9CkBAIC0xNDksNyArMTQ3LDcgQEAgcHVibGljOgogCiAgICAgfk1vY2tJREJEYXRh
YmFzZUJhY2tlbmRQcm94eSgpCiAgICAgewotICAgICAgICBFWFBFQ1RfVFJVRShtX3dhc1JlZ2lz
dGVyRnJvbnRlbmRDYWxsYmFja3NDYWxsZWQpOworICAgICAgICBFWFBFQ1RfVFJVRShtX3dhc0Ns
b3NlQ2FsbGVkKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIElEQkRhdGFiYXNlTWV0YWRhdGEgbWV0
YWRhdGEoKSBjb25zdCB7IHJldHVybiBJREJEYXRhYmFzZU1ldGFkYXRhKCk7IH0KQEAgLTE2Mywx
OSArMTYxLDEyIEBAIHB1YmxpYzoKICAgICAgICAgbV93YXNDbG9zZUNhbGxlZCA9IHRydWU7CiAg
ICAgICAgIG1fd2ViRGF0YWJhc2UuY2xvc2UoKTsKICAgICB9Ci0gICAgdmlydHVhbCB2b2lkIHJl
Z2lzdGVyRnJvbnRlbmRDYWxsYmFja3MoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4g
Y29ubmVjdGlvbikKLSAgICB7Ci0gICAgICAgIG1fd2FzUmVnaXN0ZXJGcm9udGVuZENhbGxiYWNr
c0NhbGxlZCA9IHRydWU7Ci0gICAgICAgIG1fd2ViRGF0YWJhc2Uub3BlbihuZXcgV2ViSURCRGF0
YWJhc2VDYWxsYmFja3NJbXBsKGNvbm5lY3Rpb24pKTsKLSAgICB9CiAKIHByaXZhdGU6CiAgICAg
TW9ja0lEQkRhdGFiYXNlQmFja2VuZFByb3h5KFdlYklEQkRhdGFiYXNlSW1wbCYgd2ViRGF0YWJh
c2UpCi0gICAgICAgIDogbV93YXNSZWdpc3RlckZyb250ZW5kQ2FsbGJhY2tzQ2FsbGVkKGZhbHNl
KQotICAgICAgICAsIG1fd2FzQ2xvc2VDYWxsZWQoZmFsc2UpCisgICAgICAgIDogbV93YXNDbG9z
ZUNhbGxlZChmYWxzZSkKICAgICAgICAgLCBtX3dlYkRhdGFiYXNlKHdlYkRhdGFiYXNlKSB7IH0K
IAotICAgIGJvb2wgbV93YXNSZWdpc3RlckZyb250ZW5kQ2FsbGJhY2tzQ2FsbGVkOwogICAgIGJv
b2wgbV93YXNDbG9zZUNhbGxlZDsKIAogICAgIFdlYklEQkRhdGFiYXNlSW1wbCYgbV93ZWJEYXRh
YmFzZTsKQEAgLTE5MSwxOCArMTgyLDE5IEBAIFRFU1QoSURCRGF0YWJhc2VCYWNrZW5kVGVzdCwg
Rm9yY2VkQ2xvc2UpCiAgICAgUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEltcGw+IGJhY2tlbmQg
PSBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpjcmVhdGUoImRiIiwgYmFja2luZ1N0b3JlLmdldCgp
LCBjb29yZGluYXRvciwgZmFjdG9yeSwgInVuaXF1ZWlkIik7CiAgICAgRVhQRUNUX0dUKGJhY2tp
bmdTdG9yZS0+cmVmQ291bnQoKSwgMSk7CiAKLSAgICBXZWJJREJEYXRhYmFzZUltcGwgd2ViRGF0
YWJhc2UoYmFja2VuZCk7Ci0KLSAgICBSZWZQdHI8TW9ja0lEQkNhbGxiYWNrcz4gcmVxdWVzdDEg
PSBNb2NrSURCQ2FsbGJhY2tzOjpjcmVhdGUoKTsKLSAgICBiYWNrZW5kLT5vcGVuQ29ubmVjdGlv
bihyZXF1ZXN0MSk7CisgICAgUmVmUHRyPEZha2VJREJEYXRhYmFzZUNhbGxiYWNrcz4gY29ubmVj
dGlvbiA9IEZha2VJREJEYXRhYmFzZUNhbGxiYWNrczo6Y3JlYXRlKCk7CisgICAgUmVmUHRyPElE
QkRhdGFiYXNlQ2FsbGJhY2tzUHJveHk+IGNvbm5lY3Rpb25Qcm94eSA9IElEQkRhdGFiYXNlQ2Fs
bGJhY2tzUHJveHk6OmNyZWF0ZShhZG9wdFB0cihuZXcgV2ViSURCRGF0YWJhc2VDYWxsYmFja3NJ
bXBsKGNvbm5lY3Rpb24pKSk7CisgICAgV2ViSURCRGF0YWJhc2VJbXBsIHdlYkRhdGFiYXNlKGJh
Y2tlbmQsIGNvbm5lY3Rpb25Qcm94eSk7CiAKICAgICBSZWZQdHI8TW9ja0lEQkRhdGFiYXNlQmFj
a2VuZFByb3h5PiBwcm94eSA9IE1vY2tJREJEYXRhYmFzZUJhY2tlbmRQcm94eTo6Y3JlYXRlKHdl
YkRhdGFiYXNlKTsKKyAgICBSZWZQdHI8TW9ja0lEQkNhbGxiYWNrcz4gcmVxdWVzdCA9IE1vY2tJ
REJDYWxsYmFja3M6OmNyZWF0ZSgpOworICAgIGJhY2tlbmQtPm9wZW5Db25uZWN0aW9uKHJlcXVl
c3QsIGNvbm5lY3Rpb25Qcm94eSk7CiAKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0ID0gMDsKLSAgICBSZWZQdHI8SURCRGF0YWJhc2U+IGlkYkRhdGFiYXNlID0gSURCRGF0YWJh
c2U6OmNyZWF0ZShjb250ZXh0LCBwcm94eSk7Ci0gICAgaWRiRGF0YWJhc2UtPnJlZ2lzdGVyRnJv
bnRlbmRDYWxsYmFja3MoKTsKKyAgICBSZWZQdHI8SURCRGF0YWJhc2U+IGlkYkRhdGFiYXNlID0g
SURCRGF0YWJhc2U6OmNyZWF0ZShjb250ZXh0LCBwcm94eSwgY29ubmVjdGlvbik7CiAKICAgICB3
ZWJEYXRhYmFzZS5mb3JjZUNsb3NlKCk7CisKICAgICBFWFBFQ1RfVFJVRShiYWNraW5nU3RvcmUt
Pmhhc09uZVJlZigpKTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>163921</attachid>
            <date>2012-09-13 11:43:20 -0700</date>
            <delta_ts>2012-09-13 16:22:09 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-90411-20120913114252.patch</filename>
            <type>text/plain</type>
            <size>67660</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI4NDI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWZlMzQ5YmZlNTY1NWJh
YzAwZGYyMjZiNDk3OTIzZTg1NjkyMWUwNS4uOWU1MmFjNmFmY2IyMmE3NjU5NzQ5ZDBmN2U5OWY0
MTAwMDkwZTAxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgxIEBACisyMDEyLTA5LTA2ICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBDb25z
b2xpZGF0ZSB0d28tcGhhc2UgY29ubmVjdGlvbiB0byBhdm9pZCByYWNlIGNvbmRpdGlvbnMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkwNDExCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgVG9ueSBDaGFuZy4KKworICAgICAgICBQcmV2aW91c2x5LCBJREIg
Y29ubmVjdGlvbnMgd2VyZSBvcGVuZWQgYnkgaGF2aW5nIHRoZSBmcm9udC1lbmQgKDEpIGNhbGwg
dGhyb3VnaCB0bworICAgICAgICBhIGJhY2stZW5kIG9wZW4oKSBtZXRob2QsIGV2ZW50dWFsbHkg
cmVjZWl2ZSBhIHN1Y2Nlc3MgbWVzc2FnZSB3aXRoIGEgYmFjay1lbmQgb2JqZWN0CisgICAgICAg
IGhhbmRsZSwgYW5kICgyKSBjYWxsIGludG8gdGhlIGJhY2stZW5kIG9iamVjdCB0byByZWdpc3Rl
ciBmcm9udC1lbmQgY2FsbGJhY2tzLiBUaGlzIGxlZnQKKyAgICAgICAgdGhlIGJhY2stZW5kJ3Mg
bm90aW9uIG9mIGFuIG9wZW4gY29ubmVjdGlvbiBpbiBhIGxpbWJvIHN0YXRlIGJldHdlZW4gdGhl
c2UgdHdvIGNhbGxzLgorICAgICAgICBJbiBtdWx0aS1wcm9jZXNzIHBvcnRzLCBhIGNyYXNoIG9m
IHRoZSBmcm9udC1lbmQgcHJvY2VzcyBjb3VsZCBsZWF2ZSB0aGUgYmFjay1lbmQgd2VkZ2VkCisg
ICAgICAgIHdhaXRpbmcgZm9yIHRoaXMgc2Vjb25kIGNhbGwgKGUuZy4gY2FuJ3QgZGVsZXRlIHVu
dGlsIGFsbCBjb25uZWN0aW9ucyBhcmUgY2xvc2VkKS4KKworICAgICAgICBTaW1wbGlmeSB0aGlz
IGJ5IGhhdmluZyB0aGUgZnJvbnQtZW5kIHBhc3MgdGhyb3VnaCB0aGUgY2FsbGJhY2tzIGludG8g
dGhlIGJhY2stZW5kCisgICAgICAgIGR1cmluZyB0aGUgaW5pdGlhbCBvcGVuKCkgY2FsbCwgd2hp
Y2ggZWxpbWluYXRlcyB0aGUgbGltYm8gc3RhdGUuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIC0g
bm8gZnVuY3Rpb25hbCBjaGFuZ2VzLiBDaHJvbWl1bSBwb3J0J3Mgd2Via2l0X3VuaXRfdGVzdHMg
dXBkYXRlZC4KKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCRGF0YWJhc2U6OklEQkRhdGFiYXNlKTogRGItY2FsbGJhY2tzIGlzIGF2YWlsYWJsZSBh
dCBjcmVhdGlvbiB0aW1lLgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2U6On5JREJEYXRh
YmFzZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuaDoKKyAgICAg
ICAgKElEQkRhdGFiYXNlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFz
ZUJhY2tlbmRJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZElt
cGw6OlBlbmRpbmdPcGVuQ2FsbDo6Y3JlYXRlKTogTmVlZCB0byB0cmFjayBkYi1jYWxsYmFja3Mg
YXMgd2VsbC4KKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OlBlbmRp
bmdPcGVuQ2FsbDo6ZGF0YWJhc2VDYWxsYmFja3MpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0
YWJhc2VCYWNrZW5kSW1wbDo6UGVuZGluZ09wZW5DYWxsOjpQZW5kaW5nT3BlbkNhbGwpOgorICAg
ICAgICAoSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6UGVuZGluZ09wZW5DYWxsKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OlBlbmRpbmdPcGVuV2l0aFZlcnNpb25D
YWxsOjpjcmVhdGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2Vu
ZEltcGw6OlBlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxsOjpkYXRhYmFzZUNhbGxiYWNrcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpQZW5kaW5nT3BlbldpdGhW
ZXJzaW9uQ2FsbDo6UGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGwpOgorICAgICAgICAoSURCRGF0
YWJhc2VCYWNrZW5kSW1wbDo6UGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGwpOgorICAgICAgICAo
V2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbCk6
CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpzZXRWZXJzaW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNvbm5lY3Rpb25Db3Vu
dCk6IERvbid0IG5lZWQgdG8gY291bnQgbGltYm8gY29ubmVjdGlvbnMgYW55IG1vcmUuCisgICAg
ICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpwcm9jZXNzUGVuZGluZ0NhbGxz
KTogUGFzcyB0aHJvdWdoIGRiLWNhbGxiYWNrcy4KKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFi
YXNlQmFja2VuZEltcGw6Om9wZW5Db25uZWN0aW9uKTogTm8gbW9yZSBsaW1ibyBjb25uZWN0aW9u
cyAoeWF5ISkuCisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpydW5J
bnRWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24pOiBQYXNzIHRocm91Z2ggZGItY2FsbGJhY2tzLgor
ICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6b3BlbkNvbm5lY3Rpb25X
aXRoVmVyc2lvbik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5k
SW1wbDo6ZGVsZXRlRGF0YWJhc2UpOiBTdHlsZS4KKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFi
YXNlQmFja2VuZEltcGw6OmNsb3NlKTogUmVzb2x2ZSBGSVhNRSBhYm91dCBjb25uZWN0aW9uQ291
bnQuCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5o
OgorICAgICAgICAoSURCRGF0YWJhc2VCYWNrZW5kSW1wbCk6CisgICAgICAgICogTW9kdWxlcy9p
bmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmg6CisgICAgICAgIChJREJEYXRh
YmFzZUJhY2tlbmRJbnRlcmZhY2UpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRh
dGFiYXNlQ2FsbGJhY2tzSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUNh
bGxiYWNrc0ltcGw6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUNhbGxi
YWNrc0ltcGw6OklEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJ
REJEYXRhYmFzZUNhbGxiYWNrc0ltcGw6OmNvbm5lY3QpOgorICAgICAgICAqIE1vZHVsZXMvaW5k
ZXhlZGRiL0lEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbC5oOgorICAgICAgICAoSURCRGF0YWJhc2VD
YWxsYmFja3NJbXBsKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkZhY3Rvcnk6Om9wZW4pOiBNaW50IHRoZSBkYi1jYWxs
YmFja3MgaGVyZS4uLgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnlCYWNr
ZW5kSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJGYWN0b3J5QmFja2VuZEltcGw6Om9w
ZW4pOiAuLi5wYXNzZWQgdGhyb3VnaCB0byBoZXJlLi4uCisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJbXBsLmg6CisgICAgICAgIChJREJGYWN0b3J5QmFja2Vu
ZEltcGwpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnlCYWNrZW5kSW50
ZXJmYWNlLmg6CisgICAgICAgIChJREJGYWN0b3J5QmFja2VuZEludGVyZmFjZSk6CisgICAgICAg
ICogTW9kdWxlcy9pbmRleGVkZGIvSURCT3BlbkRCUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJREJPcGVuREJSZXF1ZXN0OjpjcmVhdGUpOiAuLi5hbGwgdGhlIHdheSB0byBoZXJlLi4u
CisgICAgICAgIChXZWJDb3JlOjpJREJPcGVuREJSZXF1ZXN0OjpJREJPcGVuREJSZXF1ZXN0KToK
KyAgICAgICAgKFdlYkNvcmU6OklEQk9wZW5EQlJlcXVlc3Q6Om9uVXBncmFkZU5lZWRlZCk6IC4u
LmFuZCBmaW5hbGx5IGhvb2tlZCB1cCBoZXJlLgorICAgICAgICAoV2ViQ29yZTo6SURCT3BlbkRC
UmVxdWVzdDo6b25TdWNjZXNzKTogKG9yIGhlcmUsIGlmIG5vIHVwZ3JhZGUgbmVlZGVkKS4KKyAg
ICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJPcGVuREJSZXF1ZXN0Lmg6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKElEQk9wZW5EQlJlcXVlc3QpOgorICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5z
YWN0aW9uOjpvbkFib3J0KTogVHdlYWsgZXZlbnQvbm90aWZpY2F0aW9uIG9yZGVyaW5nOyB0aGUK
KyAgICAgICAgbm90aWZ5aW5nIHRoZSBkYXRhYmFzZSB0aGF0IHRoZSB0cmFuc2FjdGlvbiBpcyBm
aW5pc2hlZCBtYXkgdW5ibG9jayBjbG9zaW5nLAorICAgICAgICB3aGljaCBmaXJlcyBtb3JlIGV2
ZW50cywgYW5kIHRoZSBkZWxpdmVyeSBtYXR0ZXJzLiBQcmV2aW91c2x5IHRoZSBjbG9zZSB3b3Vs
ZAorICAgICAgICBiZSBibG9ja2VkIGJ5IHRoZSB0cmFuc2FjdGlvbiB3aGljaCBnYXZlIHRoZSBk
ZXNpcmVkIG9yZGVyLgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246Om9uQ29tcGxl
dGUpOiBEaXR0by4KKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQu
Y3BwOiBOZXcgaG9va3VwIGxvZ2ljLgorICAgICAgICAoV2ViQ29yZSk6CisKIDIwMTItMDktMTMg
IEFsZXhhbmRlciBQYXZsb3YgIDxhcGF2bG92QGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIg
SW5zcGVjdG9yOiBDU1MgZG9tYWluIHNlbmRzIGV2ZW50cyB3aGlsZSBpdCBpcyBub3QgZW5hYmxl
ZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCAxYWY1ODViYjFkZDEyZmE4MjUzOTJkN2Q1
ZjQwZDQ1Y2Q2OWRjN2E5Li41Y2FkNDFjNTViNzNkMjk4NDU0YTVmNDg0NDM4OTAyYTliNDQyYmRk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDEyLTA5LTA2
ICBKb3NodWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERC
OiBDb25zb2xpZGF0ZSB0d28tcGhhc2UgY29ubmVjdGlvbiB0byBhdm9pZCByYWNlIGNvbmRpdGlv
bnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkwNDEx
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVG9ueSBDaGFuZy4KKworICAgICAgICBBUEkgcGx1bWJp
bmcgZm9yIHNpbXBsaWZpZWQgc2luZ2xlLXBoYXNlIGNvbm5lY3Rpb24gb3BlbmluZywgYW5kIHRl
c3RzIHVwZGF0ZWQKKyAgICAgICAgdG8gZXhlcmNpc2UgdGhlIG5ldyBBUElzLgorCisgICAgICAg
ICogcHVibGljL1dlYklEQkRhdGFiYXNlLmg6CisgICAgICAgIChXZWJJREJEYXRhYmFzZSk6IEp1
c3QgYSBGSVhNRSB0byByZW1vdmUgdGhlIG9sZCBzZWNvbmQtcGhhc2UgaG9va3VwIEFQSS4KKyAg
ICAgICAgKiBwdWJsaWMvV2ViSURCRmFjdG9yeS5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAg
ICAgKFdlYklEQkZhY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJGYWN0b3J5OjpvcGVu
KTogTmV3IG92ZXJsb2FkIHRoYXQgdGFrZXMgZGItY2FsbGJhY2tzLgorICAgICAgICAqIHNyYy9J
REJDYWxsYmFja3NQcm94eS5jcHA6IFRoZSBkYi1jYWxsYmFja3MgcGx1bWJpbmcgaXMgbmVlZGVk
IGVhcmxpZXIuCisgICAgICAgIChXZWJLaXQ6OklEQkNhbGxiYWNrc1Byb3h5OjpvblN1Y2Nlc3Mp
OgorICAgICAgICAoV2ViS2l0OjpJREJDYWxsYmFja3NQcm94eTo6b25VcGdyYWRlTmVlZGVkKToK
KyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OklEQkNhbGxiYWNrc1Byb3h5Ojpz
ZXREYXRhYmFzZUNhbGxiYWNrcyk6IE5lZWRzIHRvIGhvbGQgb24gdG8KKyAgICAgICAgdGhlIGRi
LWNhbGxiYWNrcyBhbmQgaG9vayBpdCB1cCB3aGVuIHRoZSBvblN1Y2Nlc3MgY2FsbGJhY2sgY29t
ZXMgdGhyb3VnaC4KKyAgICAgICAgKiBzcmMvSURCQ2FsbGJhY2tzUHJveHkuaDoKKyAgICAgICAg
KFdlYktpdCk6CisgICAgICAgIChJREJDYWxsYmFja3NQcm94eSk6CisgICAgICAgICogc3JjL0lE
QkRhdGFiYXNlQmFja2VuZFByb3h5LmNwcDoKKyAgICAgICAgKiBzcmMvSURCRGF0YWJhc2VCYWNr
ZW5kUHJveHkuaDoKKyAgICAgICAgKElEQkRhdGFiYXNlQmFja2VuZFByb3h5KToKKyAgICAgICAg
KiBzcmMvSURCRmFjdG9yeUJhY2tlbmRQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OklEQkZh
Y3RvcnlCYWNrZW5kUHJveHk6Om9wZW4pOgorICAgICAgICAqIHNyYy9JREJGYWN0b3J5QmFja2Vu
ZFByb3h5Lmg6CisgICAgICAgIChJREJGYWN0b3J5QmFja2VuZFByb3h5KToKKyAgICAgICAgKiBz
cmMvV2ViSURCRGF0YWJhc2VJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSURCRGF0YWJh
c2VJbXBsOjpXZWJJREJEYXRhYmFzZUltcGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJEYXRh
YmFzZUltcGw6OmNsb3NlKToKKyAgICAgICAgKiBzcmMvV2ViSURCRGF0YWJhc2VJbXBsLmg6Cisg
ICAgICAgIChXZWJJREJEYXRhYmFzZUltcGwpOgorICAgICAgICAqIHNyYy9XZWJJREJGYWN0b3J5
SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkZhY3RvcnlJbXBsOjpvcGVuKToKKyAg
ICAgICAgKiBzcmMvV2ViSURCRmFjdG9yeUltcGwuaDoKKyAgICAgICAgKFdlYklEQkZhY3RvcnlJ
bXBsKToKKyAgICAgICAgKiB0ZXN0cy9JREJBYm9ydE9uQ29ycnVwdFRlc3QuY3BwOgorICAgICAg
ICAoRmFrZUlEQkRhdGFiYXNlQ2FsbGJhY2tzKToKKyAgICAgICAgKFdlYkNvcmU6OkZha2VJREJE
YXRhYmFzZUNhbGxiYWNrczo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZha2VJREJEYXRh
YmFzZUNhbGxiYWNrczo6fkZha2VJREJEYXRhYmFzZUNhbGxiYWNrcyk6CisgICAgICAgIChXZWJD
b3JlOjpGYWtlSURCRGF0YWJhc2VDYWxsYmFja3M6OkZha2VJREJEYXRhYmFzZUNhbGxiYWNrcyk6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlRFU1QpOiBVcGRhdGVkIGNv
bm5lY3Rpb24gc2VxdWVuY2UuCisgICAgICAgICogdGVzdHMvSURCRGF0YWJhc2VCYWNrZW5kVGVz
dC5jcHA6IERpdHRvLgorCiAyMDEyLTA5LTEzICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcu
Ym90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTI4NDA5
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJh
c2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3Bw
CmluZGV4IGIzZjcwYWRkMjkzMmNlMTU5N2VjYTA1NWFlZDFlZWYwNzBjZDVkYTcuLmQ2NDFkMDRh
NDM2ZTFmZmY1ZjY0MTg0ZmQ4MzQyZjQyZDVjMDM3NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHAKQEAgLTMxLDcgKzMxLDcgQEAKICNp
bmNsdWRlICJFdmVudFF1ZXVlLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1
ZGUgIklEQkFueS5oIgotI2luY2x1ZGUgIklEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbC5oIgorI2lu
Y2x1ZGUgIklEQkRhdGFiYXNlQ2FsbGJhY2tzLmgiCiAjaW5jbHVkZSAiSURCRGF0YWJhc2VFcnJv
ci5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNlRXhjZXB0aW9uLmgiCiAjaW5jbHVkZSAiSURCRXZl
bnREaXNwYXRjaGVyLmgiCkBAIC01MCwyOSArNTAsMjggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1QYXNzUmVmUHRyPElEQkRhdGFiYXNlPiBJREJEYXRhYmFzZTo6Y3JlYXRlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50
ZXJmYWNlPiBkYXRhYmFzZSkKK1Bhc3NSZWZQdHI8SURCRGF0YWJhc2U+IElEQkRhdGFiYXNlOjpj
cmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJREJEYXRh
YmFzZUJhY2tlbmRJbnRlcmZhY2U+IGRhdGFiYXNlLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2Fs
bGJhY2tzPiBjYWxsYmFja3MpCiB7Ci0gICAgUmVmUHRyPElEQkRhdGFiYXNlPiBpZGJEYXRhYmFz
ZShhZG9wdFJlZihuZXcgSURCRGF0YWJhc2UoY29udGV4dCwgZGF0YWJhc2UpKSk7CisgICAgUmVm
UHRyPElEQkRhdGFiYXNlPiBpZGJEYXRhYmFzZShhZG9wdFJlZihuZXcgSURCRGF0YWJhc2UoY29u
dGV4dCwgZGF0YWJhc2UsIGNhbGxiYWNrcykpKTsKICAgICBpZGJEYXRhYmFzZS0+c3VzcGVuZElm
TmVlZGVkKCk7CiAgICAgcmV0dXJuIGlkYkRhdGFiYXNlLnJlbGVhc2UoKTsKIH0KIAotSURCRGF0
YWJhc2U6OklEQkRhdGFiYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NS
ZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiBiYWNrZW5kKQorSURCRGF0YWJhc2U6
OklEQkRhdGFiYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8
SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiBiYWNrZW5kLCBQYXNzUmVmUHRyPElEQkRhdGFi
YXNlQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiAgICAgOiBBY3RpdmVET01PYmplY3QoY29udGV4dCwg
dGhpcykKICAgICAsIG1fYmFja2VuZChiYWNrZW5kKQogICAgICwgbV9jbG9zZVBlbmRpbmcoZmFs
c2UpCiAgICAgLCBtX2NvbnRleHRTdG9wcGVkKGZhbHNlKQorICAgICwgbV9kYXRhYmFzZUNhbGxi
YWNrcyhjYWxsYmFja3MpCiB7CiAgICAgLy8gV2UgcGFzcyBhIHJlZmVyZW5jZSBvZiB0aGlzIG9i
amVjdCBiZWZvcmUgaXQgY2FuIGJlIGFkb3B0ZWQuCiAgICAgcmVsYXhBZG9wdGlvblJlcXVpcmVt
ZW50KCk7Ci0gICAgbV9kYXRhYmFzZUNhbGxiYWNrcyA9IElEQkRhdGFiYXNlQ2FsbGJhY2tzSW1w
bDo6Y3JlYXRlKHRoaXMpOwogICAgIG1fbWV0YWRhdGEgPSBtX2JhY2tlbmQtPm1ldGFkYXRhKCk7
CiB9CiAKIElEQkRhdGFiYXNlOjp+SURCRGF0YWJhc2UoKQogewogICAgIGNsb3NlKCk7Ci0gICAg
bV9kYXRhYmFzZUNhbGxiYWNrcy0+dW5yZWdpc3RlckRhdGFiYXNlKHRoaXMpOwogfQogCiB2b2lk
IElEQkRhdGFiYXNlOjp0cmFuc2FjdGlvbkNyZWF0ZWQoSURCVHJhbnNhY3Rpb24qIHRyYW5zYWN0
aW9uKQpAQCAtMzM1LDEyICszMzQsNiBAQCB2b2lkIElEQkRhdGFiYXNlOjpvblZlcnNpb25DaGFu
Z2UoY29uc3QgU3RyaW5nJiB2ZXJzaW9uKQogICAgIGVucXVldWVFdmVudChJREJWZXJzaW9uQ2hh
bmdlRXZlbnQ6OmNyZWF0ZSh2ZXJzaW9uLCBldmVudE5hbWVzKCkudmVyc2lvbmNoYW5nZUV2ZW50
KSk7CiB9CiAKLXZvaWQgSURCRGF0YWJhc2U6OnJlZ2lzdGVyRnJvbnRlbmRDYWxsYmFja3MoKQot
ewotICAgIEFTU0VSVChtX2JhY2tlbmQpOwotICAgIG1fYmFja2VuZC0+cmVnaXN0ZXJGcm9udGVu
ZENhbGxiYWNrcyhtX2RhdGFiYXNlQ2FsbGJhY2tzKTsKLX0KLQogdm9pZCBJREJEYXRhYmFzZTo6
ZW5xdWV1ZUV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50KQogewogICAgIEFTU0VSVCghbV9j
b250ZXh0U3RvcHBlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJEYXRhYmFzZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
RGF0YWJhc2UuaAppbmRleCAyN2YwM2I2ZTM1NDhhODAwZjQxYTNmYWU1ODYwMTc5Yzg3ZmQ3MmNk
Li42NDk5MjRhYjY2MmQ5OTQ1Yzc4ZTIzMmViYjQzNjkwNDU2OTMyNTBiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmgKQEAgLTUxLDcgKzUxLDcg
QEAgdHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKIAogY2xhc3MgSURCRGF0YWJhc2UgOiBwdWJs
aWMgUmVmQ291bnRlZDxJREJEYXRhYmFzZT4sIHB1YmxpYyBFdmVudFRhcmdldCwgcHVibGljIEFj
dGl2ZURPTU9iamVjdCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SURCRGF0YWJh
c2U+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJEYXRhYmFz
ZUJhY2tlbmRJbnRlcmZhY2U+KTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJEYXRhYmFzZT4g
Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFj
a2VuZEludGVyZmFjZT4sIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+KTsKICAgICB+
SURCRGF0YWJhc2UoKTsKIAogICAgIHZvaWQgdHJhbnNhY3Rpb25DcmVhdGVkKElEQlRyYW5zYWN0
aW9uKik7CkBAIC04OSw3ICs4OSw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdDsKIAogICAgIHZvaWQg
Zm9yY2VDbG9zZSgpOwotICAgIHZvaWQgcmVnaXN0ZXJGcm9udGVuZENhbGxiYWNrcygpOwogICAg
IGNvbnN0IElEQkRhdGFiYXNlTWV0YWRhdGEgbWV0YWRhdGEoKSBjb25zdCB7IHJldHVybiBtX21l
dGFkYXRhOyB9CiAgICAgdm9pZCBlbnF1ZXVlRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4pOwogICAg
IGJvb2wgZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBldmVudCwgRXhjZXB0aW9uQ29k
ZSYgZWMpIHsgcmV0dXJuIEV2ZW50VGFyZ2V0OjpkaXNwYXRjaEV2ZW50KGV2ZW50LCBlYyk7IH0K
QEAgLTk5LDcgKzk4LDcgQEAgcHVibGljOgogICAgIHVzaW5nIFJlZkNvdW50ZWQ8SURCRGF0YWJh
c2U+OjpkZXJlZjsKIAogcHJpdmF0ZToKLSAgICBJREJEYXRhYmFzZShTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+KTsKKyAgICBJ
REJEYXRhYmFzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJEYXRhYmFz
ZUJhY2tlbmRJbnRlcmZhY2U+LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPik7CiAK
ICAgICAvLyBFdmVudFRhcmdldAogICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgpIHsg
cmVmKCk7IH0KQEAgLTEyMyw3ICsxMjIsNyBAQCBwcml2YXRlOgogICAgIC8vIGRhdGFiYXNlIHNv
IHRoYXQgd2UgY2FuIGNhbmNlbCB0aGVtIGlmIHRoZSBkYXRhYmFzZSBjbG9zZXMuCiAgICAgVmVj
dG9yPFJlZlB0cjxFdmVudD4gPiBtX2VucXVldWVkRXZlbnRzOwogCi0gICAgUmVmUHRyPElEQkRh
dGFiYXNlQ2FsbGJhY2tzSW1wbD4gbV9kYXRhYmFzZUNhbGxiYWNrczsKKyAgICBSZWZQdHI8SURC
RGF0YWJhc2VDYWxsYmFja3M+IG1fZGF0YWJhc2VDYWxsYmFja3M7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3BwCmluZGV4IDgxMTBjMjRjMTNiM2M0NjNl
ZTM3YjIwZDRjZmZhNzEyNDI0NGI2MzkuLmJmYjJhZTI2NzYxNWQ2Mzg1MjNjMGRlMmJlZWU0NWRj
NTJmYTM0NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkRhdGFiYXNlQmFja2VuZEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3BwCkBAIC00MSwzNyArNDEsNDMgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpQZW5kaW5n
T3BlbkNhbGwgOiBwdWJsaWMgUmVmQ291bnRlZDxQZW5kaW5nT3BlbkNhbGw+IHsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUGFzc1JlZlB0cjxQZW5kaW5nT3BlbkNhbGw+IGNyZWF0ZShQYXNzUmVmUHRy
PElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBlbmRpbmdP
cGVuQ2FsbD4gY3JlYXRlKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIFBhc3NS
ZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IGRhdGFiYXNlQ2FsbGJhY2tzKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQZW5kaW5nT3BlbkNhbGwoY2FsbGJhY2tzKSk7Cisg
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgUGVuZGluZ09wZW5DYWxsKGNhbGxiYWNrcywgZGF0
YWJhc2VDYWxsYmFja3MpKTsKICAgICB9CiAgICAgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNh
bGxiYWNrcygpIHsgcmV0dXJuIG1fY2FsbGJhY2tzOyB9CisgICAgUGFzc1JlZlB0cjxJREJEYXRh
YmFzZUNhbGxiYWNrcz4gZGF0YWJhc2VDYWxsYmFja3MoKSB7IHJldHVybiBtX2RhdGFiYXNlQ2Fs
bGJhY2tzOyB9CiAKIHByaXZhdGU6Ci0gICAgUGVuZGluZ09wZW5DYWxsKFBhc3NSZWZQdHI8SURC
Q2FsbGJhY2tzPiBjYWxsYmFja3MpCisgICAgUGVuZGluZ09wZW5DYWxsKFBhc3NSZWZQdHI8SURC
Q2FsbGJhY2tzPiBjYWxsYmFja3MsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IGRh
dGFiYXNlQ2FsbGJhY2tzKQogICAgICAgICA6IG1fY2FsbGJhY2tzKGNhbGxiYWNrcykKKyAgICAg
ICAgLCBtX2RhdGFiYXNlQ2FsbGJhY2tzKGRhdGFiYXNlQ2FsbGJhY2tzKQogICAgIHsKICAgICB9
CiAKICAgICBSZWZQdHI8SURCQ2FsbGJhY2tzPiBtX2NhbGxiYWNrczsKKyAgICBSZWZQdHI8SURC
RGF0YWJhc2VDYWxsYmFja3M+IG1fZGF0YWJhc2VDYWxsYmFja3M7CiB9OwogCiBjbGFzcyBJREJE
YXRhYmFzZUJhY2tlbmRJbXBsOjpQZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbCA6IHB1YmxpYyBS
ZWZDb3VudGVkPFBlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxsPiB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFBhc3NSZWZQdHI8UGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGw+IGNyZWF0ZShQYXNzUmVm
UHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBpbnQ2NF90IHZlcnNpb24pCisgICAgc3RhdGlj
IFBhc3NSZWZQdHI8UGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGw+IGNyZWF0ZShQYXNzUmVmUHRy
PElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tz
PiBkYXRhYmFzZUNhbGxiYWNrcywgaW50NjRfdCB2ZXJzaW9uKQogICAgIHsKLSAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBQZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbChjYWxsYmFja3MsIHZl
cnNpb24pKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQZW5kaW5nT3BlbldpdGhWZXJz
aW9uQ2FsbChjYWxsYmFja3MsIGRhdGFiYXNlQ2FsbGJhY2tzLCB2ZXJzaW9uKSk7CiAgICAgfQog
ICAgIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MoKSB7IHJldHVybiBtX2NhbGxi
YWNrczsgfQorICAgIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IGRhdGFiYXNlQ2Fs
bGJhY2tzKCkgeyByZXR1cm4gbV9kYXRhYmFzZUNhbGxiYWNrczsgfQogICAgIGludDY0X3QgdmVy
c2lvbigpIHsgcmV0dXJuIG1fdmVyc2lvbjsgfQogCiBwcml2YXRlOgotICAgIFBlbmRpbmdPcGVu
V2l0aFZlcnNpb25DYWxsKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIGludDY0
X3QgdmVyc2lvbikKKyAgICBQZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbChQYXNzUmVmUHRyPElE
QkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBk
YXRhYmFzZUNhbGxiYWNrcywgaW50NjRfdCB2ZXJzaW9uKQogICAgICAgICA6IG1fY2FsbGJhY2tz
KGNhbGxiYWNrcykKKyAgICAgICAgLCBtX2RhdGFiYXNlQ2FsbGJhY2tzKGRhdGFiYXNlQ2FsbGJh
Y2tzKQogICAgICAgICAsIG1fdmVyc2lvbih2ZXJzaW9uKQogICAgIHsKICAgICB9CiAgICAgUmVm
UHRyPElEQkNhbGxiYWNrcz4gbV9jYWxsYmFja3M7CisgICAgUmVmUHRyPElEQkRhdGFiYXNlQ2Fs
bGJhY2tzPiBtX2RhdGFiYXNlQ2FsbGJhY2tzOwogICAgIGludDY0X3QgbV92ZXJzaW9uOwogfTsK
IApAQCAtMTMwLDcgKzEzNiw2IEBAIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OklEQkRhdGFiYXNl
QmFja2VuZEltcGwoY29uc3QgU3RyaW5nJiBuYW1lLCBJREJCYWNraW5nU3RvCiAgICAgLCBtX2lk
ZW50aWZpZXIodW5pcXVlSWRlbnRpZmllcikKICAgICAsIG1fZmFjdG9yeShmYWN0b3J5KQogICAg
ICwgbV90cmFuc2FjdGlvbkNvb3JkaW5hdG9yKGNvb3JkaW5hdG9yKQotICAgICwgbV9wZW5kaW5n
Q29ubmVjdGlvbkNvdW50KDApCiB7CiAgICAgQVNTRVJUKCFtX25hbWUuaXNOdWxsKCkpOwogfQpA
QCAtMjQwLDYgKzI0NSw3IEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6c2V0VmVyc2lv
bihjb25zdCBTdHJpbmcmIHZlcnNpb24sIFBhc3NSZWZQdHI8SURCQ2FsCiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAgICAgZm9yIChEYXRhYmFzZUNhbGxiYWNrc1NldDo6Y29uc3RfaXRlcmF0b3Ig
aXQgPSBtX2RhdGFiYXNlQ2FsbGJhY2tzU2V0LmJlZ2luKCk7IGl0ICE9IG1fZGF0YWJhc2VDYWxs
YmFja3NTZXQuZW5kKCk7ICsraXQpIHsKKyAgICAgICAgLy8gRnJvbnQgZW5kIGVuc3VyZXMgdGhl
IGV2ZW50IGlzIG5vdCBmaXJlZCBhdCBjb25uZWN0aW9ucyB0aGF0IGhhdmUgY2xvc2VQZW5kaW5n
IHNldC4KICAgICAgICAgaWYgKCppdCAhPSBkYXRhYmFzZUNhbGxiYWNrcykKICAgICAgICAgICAg
ICgqaXQpLT5vblZlcnNpb25DaGFuZ2UodmVyc2lvbik7CiAgICAgfQpAQCAtMzQyLDkgKzM0OCwx
MCBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OnRyYW5zYWN0aW9uRmluaXNoZWRBbmRD
b21wbGV0ZUZpcmVkKFBhc3NSZWZQdHI8SURCVAogICAgICAgICBwcm9jZXNzUGVuZGluZ0NhbGxz
KCk7CiB9CiAKLWludDMyX3QgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6Y29ubmVjdGlvbkNvdW50
KCkKK3NpemVfdCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpjb25uZWN0aW9uQ291bnQoKQogewot
ICAgIHJldHVybiBtX2RhdGFiYXNlQ2FsbGJhY2tzU2V0LnNpemUoKSArIG1fcGVuZGluZ0Nvbm5l
Y3Rpb25Db3VudDsKKyAgICAvLyBUaGlzIGRvZXMgbm90IGluY2x1ZGUgcGVuZGluZyBvcGVuIGNh
bGxzLCBhcyB0aG9zZSBzaG91bGQgbm90IGJsb2NrIHZlcnNpb24gY2hhbmdlcyBhbmQgZGVsZXRl
cy4KKyAgICByZXR1cm4gbV9kYXRhYmFzZUNhbGxiYWNrc1NldC5zaXplKCk7CiB9CiAKIHZvaWQg
SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6cHJvY2Vzc1BlbmRpbmdDYWxscygpCkBAIC0zNTUsOSAr
MzYyLDggQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpwcm9jZXNzUGVuZGluZ0NhbGxz
KCkKICAgICAgICAgUmVmUHRyPFBlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxsPiBwZW5kaW5nT3Bl
bldpdGhWZXJzaW9uQ2FsbCA9IG1fcGVuZGluZ1NlY29uZEhhbGZPcGVuV2l0aFZlcnNpb25DYWxs
cy50YWtlRmlyc3QoKTsKICAgICAgICAgQVNTRVJUKHBlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxs
LT52ZXJzaW9uKCkgPT0gbV9pbnRWZXJzaW9uKTsKICAgICAgICAgQVNTRVJUKG1faWQgIT0gSW52
YWxpZElkKTsKLSAgICAgICAgKyttX3BlbmRpbmdDb25uZWN0aW9uQ291bnQ7CiAgICAgICAgIHBl
bmRpbmdPcGVuV2l0aFZlcnNpb25DYWxsLT5jYWxsYmFja3MoKS0+b25TdWNjZXNzKHRoaXMpOwot
ICAgICAgICByZXR1cm47CisgICAgICAgIC8vIEZhbGwgdGhyb3VnaCB3aGVuIGNvbXBsZXRlLCBh
cyBwZW5kaW5nIGRlbGV0ZXMgbWF5IGJlIChwYXJ0aWFsbHkpIHVuYmxvY2tlZC4KICAgICB9CiAK
ICAgICAvLyBQZW5kaW5nIGNhbGxzIG1heSBiZSByZXF1ZXVlZCBvciBhYm9ydGVkCkBAIC00MDAs
NyArNDA2LDcgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpwcm9jZXNzUGVuZGluZ0Nh
bGxzKCkKICAgICBtX3BlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxscy5zd2FwKHBlbmRpbmdPcGVu
V2l0aFZlcnNpb25DYWxscyk7CiAgICAgd2hpbGUgKCFwZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2Fs
bHMuaXNFbXB0eSgpKSB7CiAgICAgICAgIFJlZlB0cjxQZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2Fs
bD4gcGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGwgPSBwZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2Fs
bHMudGFrZUZpcnN0KCk7Ci0gICAgICAgIG9wZW5Db25uZWN0aW9uV2l0aFZlcnNpb24ocGVuZGlu
Z09wZW5XaXRoVmVyc2lvbkNhbGwtPmNhbGxiYWNrcygpLCBwZW5kaW5nT3BlbldpdGhWZXJzaW9u
Q2FsbC0+dmVyc2lvbigpKTsKKyAgICAgICAgb3BlbkNvbm5lY3Rpb25XaXRoVmVyc2lvbihwZW5k
aW5nT3BlbldpdGhWZXJzaW9uQ2FsbC0+Y2FsbGJhY2tzKCksIHBlbmRpbmdPcGVuV2l0aFZlcnNp
b25DYWxsLT5kYXRhYmFzZUNhbGxiYWNrcygpLCBwZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbC0+
dmVyc2lvbigpKTsKICAgICB9CiAKICAgICAvLyBHaXZlbiB0aGUgY2hlY2sgYWJvdmUsIGl0IGFw
cGVhcnMgdGhhdCBjYWxscyBjYW5ub3QgYmUgcmVxdWV1ZWQgYnkKQEAgLTQwOSw3ICs0MTUsNyBA
QCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OnByb2Nlc3NQZW5kaW5nQ2FsbHMoKQogICAg
IG1fcGVuZGluZ09wZW5DYWxscy5zd2FwKHBlbmRpbmdPcGVuQ2FsbHMpOwogICAgIHdoaWxlICgh
cGVuZGluZ09wZW5DYWxscy5pc0VtcHR5KCkpIHsKICAgICAgICAgUmVmUHRyPFBlbmRpbmdPcGVu
Q2FsbD4gcGVuZGluZ09wZW5DYWxsID0gcGVuZGluZ09wZW5DYWxscy50YWtlRmlyc3QoKTsKLSAg
ICAgICAgb3BlbkNvbm5lY3Rpb24ocGVuZGluZ09wZW5DYWxsLT5jYWxsYmFja3MoKSk7CisgICAg
ICAgIG9wZW5Db25uZWN0aW9uKHBlbmRpbmdPcGVuQ2FsbC0+Y2FsbGJhY2tzKCksIHBlbmRpbmdP
cGVuQ2FsbC0+ZGF0YWJhc2VDYWxsYmFja3MoKSk7CiAgICAgfQogICAgIEFTU0VSVChtX3BlbmRp
bmdPcGVuQ2FsbHMuaXNFbXB0eSgpKTsKIH0KQEAgLTQyOCw0NCArNDM0LDMwIEBAIFBhc3NSZWZQ
dHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiBJREJEYXRhYmFzZUJhY2tlbmRJbXBs
Ojp0cmFuc2FjdGlvbihECiAgICAgcmV0dXJuIHRyYW5zYWN0aW9uLnJlbGVhc2UoKTsKIH0KIAot
dm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpyZWdpc3RlckZyb250ZW5kQ2FsbGJhY2tzKFBh
c3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IGNhbGxiYWNrcykKLXsKLSAgICBBU1NFUlQo
bV9iYWNraW5nU3RvcmUuZ2V0KCkpOwotICAgIEFTU0VSVChtX3BlbmRpbmdDb25uZWN0aW9uQ291
bnQpOwotICAgIC0tbV9wZW5kaW5nQ29ubmVjdGlvbkNvdW50OwotICAgIG1fZGF0YWJhc2VDYWxs
YmFja3NTZXQuYWRkKFJlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4oY2FsbGJhY2tzKSk7Ci0g
ICAgLy8gV2UgZ2l2ZSBtYXggcHJpb3JpdHkgdG8gb3BlbiBjYWxscyB0aGF0IGZvbGxvdyB1cGdy
YWRlbmVlZGVkCi0gICAgLy8gZXZlbnRzOyB0cmlnZ2VyIHRoZSByZXN0IG9mIHRoZSBxdWV1ZXMg
dG8gYmUgc2VydmljZWQgd2hlbiB0aG9zZSBvcGVuCi0gICAgLy8gY2FsbHMgYXJlIGZpbmlzaGVk
LgotICAgIHByb2Nlc3NQZW5kaW5nQ2FsbHMoKTsKLX0KLQotdm9pZCBJREJEYXRhYmFzZUJhY2tl
bmRJbXBsOjpvcGVuQ29ubmVjdGlvbihQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tz
KQordm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpvcGVuQ29ubmVjdGlvbihQYXNzUmVmUHRy
PElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tz
PiBkYXRhYmFzZUNhbGxiYWNrcykKIHsKICAgICBBU1NFUlQobV9iYWNraW5nU3RvcmUuZ2V0KCkp
OwogICAgIGlmICghbV9wZW5kaW5nRGVsZXRlQ2FsbHMuaXNFbXB0eSgpIHx8IG1fcnVubmluZ1Zl
cnNpb25DaGFuZ2VUcmFuc2FjdGlvbiB8fCAhbV9wZW5kaW5nU2V0VmVyc2lvbkNhbGxzLmlzRW1w
dHkoKSkKLSAgICAgICAgbV9wZW5kaW5nT3BlbkNhbGxzLmFwcGVuZChQZW5kaW5nT3BlbkNhbGw6
OmNyZWF0ZShjYWxsYmFja3MpKTsKKyAgICAgICAgbV9wZW5kaW5nT3BlbkNhbGxzLmFwcGVuZChQ
ZW5kaW5nT3BlbkNhbGw6OmNyZWF0ZShjYWxsYmFja3MsIGRhdGFiYXNlQ2FsbGJhY2tzKSk7CiAg
ICAgZWxzZSB7CiAgICAgICAgIGlmIChtX2lkID09IEludmFsaWRJZCAmJiAhb3BlbkludGVybmFs
KCkpCiAgICAgICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3Jl
YXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVTktOT1dOX0VSUiwgIkludGVybmFsIGVycm9yLiIp
KTsKICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICArK21fcGVuZGluZ0Nvbm5lY3Rpb25Db3Vu
dDsKKyAgICAgICAgICAgIG1fZGF0YWJhc2VDYWxsYmFja3NTZXQuYWRkKFJlZlB0cjxJREJEYXRh
YmFzZUNhbGxiYWNrcz4oZGF0YWJhc2VDYWxsYmFja3MpKTsKICAgICAgICAgICAgIGNhbGxiYWNr
cy0+b25TdWNjZXNzKHRoaXMpOwogICAgICAgICB9CiAgICAgfQogfQogCi12b2lkIElEQkRhdGFi
YXNlQmFja2VuZEltcGw6OnJ1bkludFZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbihpbnQ2NF90IHJl
cXVlc3RlZFZlcnNpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmFja3MpCit2
b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OnJ1bkludFZlcnNpb25DaGFuZ2VUcmFuc2FjdGlv
bihpbnQ2NF90IHJlcXVlc3RlZFZlcnNpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBD
YWxsYmFja3MsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IHBycERhdGFiYXNlQ2Fs
bGJhY2tzKQogewogICAgIFJlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcyA9IHBycENhbGxi
YWNrczsKKyAgICBSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IGRhdGFiYXNlQ2FsbGJhY2tz
ID0gcHJwRGF0YWJhc2VDYWxsYmFja3M7CiAgICAgQVNTRVJUKGNhbGxiYWNrcyk7CiAgICAgZm9y
IChEYXRhYmFzZUNhbGxiYWNrc1NldDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX2RhdGFiYXNlQ2Fs
bGJhY2tzU2V0LmJlZ2luKCk7IGl0ICE9IG1fZGF0YWJhc2VDYWxsYmFja3NTZXQuZW5kKCk7ICsr
aXQpIHsKLSAgICAgICAgLy8gTm90ZSB0aGF0IHNvbWUgY29ubmVjdGlvbnMgbWlnaHQgY2xvc2Ug
aW4gdGhlIHZlcnNpb25jaGFuZ2UgZXZlbnQKLSAgICAgICAgLy8gaGFuZGxlciBmb3Igc29tZSBv
dGhlciBjb25uZWN0aW9uLCBhZnRlciB3aGljaCBpdHMgb3duIHZlcnNpb25jaGFuZ2UKLSAgICAg
ICAgLy8gZXZlbnQgc2hvdWxkIG5vdCBiZSBmaXJlZC4gVGhlIGJhY2tlbmQgZG9lc24ndCB3b3Jy
eSBhYm91dCB0aGlzLCB3ZQotICAgICAgICAvLyBqdXN0IHF1ZXVlIHVwIGEgdmVyc2lvbiBjaGFu
Z2UgZXZlbnQgZm9yIGV2ZXJ5IGNvbm5lY3Rpb24uIFRoZQotICAgICAgICAvLyBmcm9udGVuZCB0
YWtlcyBjYXJlIHRvIG9ubHkgZGlzcGF0Y2ggdG8gb3BlbiBjb25uZWN0aW9ucy4KLSAgICAgICAg
KCppdCktPm9uVmVyc2lvbkNoYW5nZShtX2ludFZlcnNpb24sIHJlcXVlc3RlZFZlcnNpb24pOwor
ICAgICAgICAvLyBGcm9udCBlbmQgZW5zdXJlcyB0aGUgZXZlbnQgaXMgbm90IGZpcmVkIGF0IGNv
bm5lY3Rpb25zIHRoYXQgaGF2ZSBjbG9zZVBlbmRpbmcgc2V0LgorICAgICAgICBpZiAoKml0ICE9
IGRhdGFiYXNlQ2FsbGJhY2tzKQorICAgICAgICAgICAgKCppdCktPm9uVmVyc2lvbkNoYW5nZSht
X2ludFZlcnNpb24sIHJlcXVlc3RlZFZlcnNpb24pOwogICAgIH0KICAgICAvLyBUaGUgc3BlYyBk
aWN0YXRlcyB3ZSB3YWl0IHVudGlsIGFsbCB0aGUgdmVyc2lvbiBjaGFuZ2UgZXZlbnRzIGFyZQog
ICAgIC8vIGRlbGl2ZXJlZCBhbmQgdGhlbiBjaGVjayBtX2RhdGFiYXNlQ2FsbGJhY2tzLmVtcHR5
KCkgYmVmb3JlIHByb2NlZWRpbmcKQEAgLTQ3NCwxMSArNDY2LDExIEBAIHZvaWQgSURCRGF0YWJh
c2VCYWNrZW5kSW1wbDo6cnVuSW50VmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKGludDY0X3QgcmVx
dWVzdGVkVmVyCiAgICAgLy8gRklYTUU6IFJlbW92ZSB0aGUgY2FsbCB0byBvbkJsb2NrZWQgYW5k
IGluc3RlYWQgd2FpdCB1bnRpbCB0aGUgZnJvbnRlbmQKICAgICAvLyB0ZWxscyB1cyB0aGF0IGFs
bCB0aGUgYmxvY2tlZCBldmVudHMgaGF2ZSBiZWVuIGRlbGl2ZXJlZC4gU2VlCiAgICAgLy8gaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxMTMwCi0gICAgaWYgKGNvbm5l
Y3Rpb25Db3VudCgpID4gMCkKKyAgICBpZiAoY29ubmVjdGlvbkNvdW50KCkpCiAgICAgICAgIGNh
bGxiYWNrcy0+b25CbG9ja2VkKG1faW50VmVyc2lvbik7CiAgICAgLy8gRklYTUU6IEFkZCB0ZXN0
IGZvciBtX3J1bm5pbmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24uCi0gICAgaWYgKG1fcnVubmlu
Z1ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbiB8fCBjb25uZWN0aW9uQ291bnQoKSA+IDApIHsKLSAg
ICAgICAgbV9wZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbHMuYXBwZW5kKFBlbmRpbmdPcGVuV2l0
aFZlcnNpb25DYWxsOjpjcmVhdGUoY2FsbGJhY2tzLCByZXF1ZXN0ZWRWZXJzaW9uKSk7CisgICAg
aWYgKG1fcnVubmluZ1ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbiB8fCBjb25uZWN0aW9uQ291bnQo
KSkgeworICAgICAgICBtX3BlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxscy5hcHBlbmQoUGVuZGlu
Z09wZW5XaXRoVmVyc2lvbkNhbGw6OmNyZWF0ZShjYWxsYmFja3MsIGRhdGFiYXNlQ2FsbGJhY2tz
LCByZXF1ZXN0ZWRWZXJzaW9uKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTQ5Nywx
NCArNDg5LDE2IEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6cnVuSW50VmVyc2lvbkNo
YW5nZVRyYW5zYWN0aW9uKGludDY0X3QgcmVxdWVzdGVkVmVyCiAgICAgICAgIGVjID0gSURCRGF0
YWJhc2VFeGNlcHRpb246OlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUjsKICAgICB9CiAgICAgQVNT
RVJUX1dJVEhfTUVTU0FHRSghbV9wZW5kaW5nU2Vjb25kSGFsZk9wZW5XaXRoVmVyc2lvbkNhbGxz
LnNpemUoKSwgIm1fcGVuZGluZ1NlY29uZEhhbGZPcGVuV2l0aFZlcnNpb25DYWxscy5zaXplID0g
JXp1IiwgbV9wZW5kaW5nU2Vjb25kSGFsZk9wZW5XaXRoVmVyc2lvbkNhbGxzLnNpemUoKSk7Ci0g
ICAgbV9wZW5kaW5nU2Vjb25kSGFsZk9wZW5XaXRoVmVyc2lvbkNhbGxzLmFwcGVuZChQZW5kaW5n
T3BlbldpdGhWZXJzaW9uQ2FsbDo6Y3JlYXRlKGNhbGxiYWNrcywgcmVxdWVzdGVkVmVyc2lvbikp
OworICAgIG1fcGVuZGluZ1NlY29uZEhhbGZPcGVuV2l0aFZlcnNpb25DYWxscy5hcHBlbmQoUGVu
ZGluZ09wZW5XaXRoVmVyc2lvbkNhbGw6OmNyZWF0ZShjYWxsYmFja3MsIGRhdGFiYXNlQ2FsbGJh
Y2tzLCByZXF1ZXN0ZWRWZXJzaW9uKSk7CisgICAgbV9kYXRhYmFzZUNhbGxiYWNrc1NldC5hZGQo
ZGF0YWJhc2VDYWxsYmFja3MpOwogfQogCi12b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6Om9w
ZW5Db25uZWN0aW9uV2l0aFZlcnNpb24oUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxi
YWNrcywgaW50NjRfdCB2ZXJzaW9uKQordm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpvcGVu
Q29ubmVjdGlvbldpdGhWZXJzaW9uKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmFj
a3MsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IHBycERhdGFiYXNlQ2FsbGJhY2tz
LCBpbnQ2NF90IHZlcnNpb24pCiB7CiAgICAgUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tz
ID0gcHJwQ2FsbGJhY2tzOworICAgIFJlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gZGF0YWJh
c2VDYWxsYmFja3MgPSBwcnBEYXRhYmFzZUNhbGxiYWNrczsKICAgICBpZiAoIW1fcGVuZGluZ0Rl
bGV0ZUNhbGxzLmlzRW1wdHkoKSB8fCBtX3J1bm5pbmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24g
fHwgIW1fcGVuZGluZ1NldFZlcnNpb25DYWxscy5pc0VtcHR5KCkpIHsKLSAgICAgICAgbV9wZW5k
aW5nT3BlbldpdGhWZXJzaW9uQ2FsbHMuYXBwZW5kKFBlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxs
OjpjcmVhdGUoY2FsbGJhY2tzLCB2ZXJzaW9uKSk7CisgICAgICAgIG1fcGVuZGluZ09wZW5XaXRo
VmVyc2lvbkNhbGxzLmFwcGVuZChQZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbDo6Y3JlYXRlKGNh
bGxiYWNrcywgZGF0YWJhc2VDYWxsYmFja3MsIHZlcnNpb24pKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KICAgICBpZiAobV9pZCA9PSBJbnZhbGlkSWQpIHsKQEAgLTUxNiw3ICs1MTAsNyBAQCB2
b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6Om9wZW5Db25uZWN0aW9uV2l0aFZlcnNpb24oUGFz
c1JlZlB0cjxJREJDYWxsYmFja3M+CiAgICAgICAgIH0KICAgICB9CiAgICAgaWYgKHZlcnNpb24g
PiBtX2ludFZlcnNpb24pIHsKLSAgICAgICAgcnVuSW50VmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9u
KHZlcnNpb24sIGNhbGxiYWNrcyk7CisgICAgICAgIHJ1bkludFZlcnNpb25DaGFuZ2VUcmFuc2Fj
dGlvbih2ZXJzaW9uLCBjYWxsYmFja3MsIGRhdGFiYXNlQ2FsbGJhY2tzKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KICAgICBpZiAodmVyc2lvbiA8IG1faW50VmVyc2lvbikgewpAQCAtNTI0LDcg
KzUxOCw3IEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6b3BlbkNvbm5lY3Rpb25XaXRo
VmVyc2lvbihQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4KICAgICAgICAgcmV0dXJuOwogICAgIH0K
ICAgICBBU1NFUlQodmVyc2lvbiA9PSBtX2ludFZlcnNpb24pOwotICAgICsrbV9wZW5kaW5nQ29u
bmVjdGlvbkNvdW50OworICAgIG1fZGF0YWJhc2VDYWxsYmFja3NTZXQuYWRkKGRhdGFiYXNlQ2Fs
bGJhY2tzKTsKICAgICBjYWxsYmFja3MtPm9uU3VjY2Vzcyh0aGlzKTsKIH0KIApAQCAtNTM1LDE1
ICs1MjksMTQgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpkZWxldGVEYXRhYmFzZShQ
YXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJhY2sKICAgICAgICAgcmV0dXJuOwogICAg
IH0KICAgICBSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MgPSBwcnBDYWxsYmFja3M7Ci0g
ICAgLy8gRklYTUU6IE9ubHkgZmlyZSBvblZlcnNpb25DaGFuZ2UgaWYgdGhlcmUgdGhlIGNvbm5l
Y3Rpb24gaXNuJ3QgaW4KLSAgICAvLyB0aGUgcHJvY2VzcyBvZiBjbG9zaW5nLgotICAgIC8vIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTEyOQotICAgIGZvciAoRGF0
YWJhc2VDYWxsYmFja3NTZXQ6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9kYXRhYmFzZUNhbGxiYWNr
c1NldC5iZWdpbigpOyBpdCAhPSBtX2RhdGFiYXNlQ2FsbGJhY2tzU2V0LmVuZCgpOyArK2l0KQor
ICAgIGZvciAoRGF0YWJhc2VDYWxsYmFja3NTZXQ6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9kYXRh
YmFzZUNhbGxiYWNrc1NldC5iZWdpbigpOyBpdCAhPSBtX2RhdGFiYXNlQ2FsbGJhY2tzU2V0LmVu
ZCgpOyArK2l0KSB7CisgICAgICAgIC8vIEZyb250IGVuZCBlbnN1cmVzIHRoZSBldmVudCBpcyBu
b3QgZmlyZWQgYXQgY29ubmVjdGlvbnMgdGhhdCBoYXZlIGNsb3NlUGVuZGluZyBzZXQuCiAgICAg
ICAgICgqaXQpLT5vblZlcnNpb25DaGFuZ2UoIiIpOworICAgIH0KICAgICAvLyBGSVhNRTogT25s
eSBmaXJlIG9uQmxvY2tlZCBpZiB0aGVyZSBhcmUgb3BlbiBjb25uZWN0aW9ucyBhZnRlciB0aGUK
ICAgICAvLyBWZXJzaW9uQ2hhbmdlRXZlbnRzIGFyZSByZWNlaXZlZCwgbm90IGp1c3Qgc2V0IHVw
IHRvIGZpcmUuCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTcxMTMwCi0gICAgaWYgKGNvbm5lY3Rpb25Db3VudCgpID49IDEpIHsKKyAgICBpZiAoY29ubmVj
dGlvbkNvdW50KCkpIHsKICAgICAgICAgbV9wZW5kaW5nRGVsZXRlQ2FsbHMuYXBwZW5kKFBlbmRp
bmdEZWxldGVDYWxsOjpjcmVhdGUoY2FsbGJhY2tzKSk7CiAgICAgICAgIGNhbGxiYWNrcy0+b25C
bG9ja2VkKCk7CiAgICAgICAgIHJldHVybjsKQEAgLTU2NCwxOCArNTU3LDE5IEBAIHZvaWQgSURC
RGF0YWJhc2VCYWNrZW5kSW1wbDo6Y2xvc2UoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNr
cz4gcHJwQ2FsbGJhY2tzCiB7CiAgICAgUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBjYWxs
YmFja3MgPSBwcnBDYWxsYmFja3M7CiAgICAgQVNTRVJUKG1fZGF0YWJhc2VDYWxsYmFja3NTZXQu
Y29udGFpbnMoY2FsbGJhY2tzKSk7CisKICAgICBtX2RhdGFiYXNlQ2FsbGJhY2tzU2V0LnJlbW92
ZShjYWxsYmFja3MpOworICAgIC8vIEZJWE1FOiBJZiBjYWxsYmFja3MgaXMgYWxzbyBoZWxkIGlu
IG1fcGVuZGluZ1NlY29uZEhhbGZPcGVuV2l0aFZlcnNpb25DYWxscworICAgIC8vIGl0IHNob3Vs
ZCBiZSByZW1vdmVkIGFuZCBvbkVycm9yIGZpcmVkIGFnYWluc3QgaXQuCisKICAgICBpZiAoY29u
bmVjdGlvbkNvdW50KCkgPiAxKQogICAgICAgICByZXR1cm47CiAKLSAgICBUcmFuc2FjdGlvblNl
dCB0cmFuc2FjdGlvbnMobV90cmFuc2FjdGlvbnMpOwogICAgIHByb2Nlc3NQZW5kaW5nQ2FsbHMo
KTsKIAotICAgIEFTU0VSVChtX3RyYW5zYWN0aW9ucy5zaXplKCkgLSB0cmFuc2FjdGlvbnMuc2l6
ZSgpIDw9IDEpOwotICAgIC8vIEZJWE1FOiBJbnN0ZWFkIG9mIHJlbHlpbmcgb24gdHJhbnNhY3Rp
b25zLnNpemUoKSwgbWFrZSBjb25uZWN0aW9uQ291bnQKLSAgICAvLyBhd2FyZSBvZiBpbi1mbGln
aHQgdXBncmFkZW5lZWRlZCBldmVudHMgYXMgd2VsbCBhcyBpbi1mbGlnaHQgc3VjY2VzcwotICAg
IC8vIGV2ZW50cy4KLSAgICBpZiAoIWNvbm5lY3Rpb25Db3VudCgpICYmICFtX3BlbmRpbmdEZWxl
dGVDYWxscy5zaXplKCkgJiYgbV90cmFuc2FjdGlvbnMuc2l6ZSgpID09IHRyYW5zYWN0aW9ucy5z
aXplKCkpIHsKKyAgICAvLyBGSVhNRTogQWRkIGEgdGVzdCBmb3IgdGhlIG1fcGVuZGluZ09wZW5D
YWxsc8K3YW5kIG1fcGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGxzIGNhc2VzIGJlbG93LgorICAg
IGlmICghY29ubmVjdGlvbkNvdW50KCkgJiYgIW1fcGVuZGluZ09wZW5DYWxscy5zaXplKCkgJiYg
IW1fcGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGxzLnNpemUoKSAmJiAhbV9wZW5kaW5nRGVsZXRl
Q2FsbHMuc2l6ZSgpKSB7CisgICAgICAgIFRyYW5zYWN0aW9uU2V0IHRyYW5zYWN0aW9ucyhtX3Ry
YW5zYWN0aW9ucyk7CiAgICAgICAgIGZvciAoVHJhbnNhY3Rpb25TZXQ6OmNvbnN0X2l0ZXJhdG9y
IGl0ID0gdHJhbnNhY3Rpb25zLmJlZ2luKCk7IGl0ICE9IHRyYW5zYWN0aW9ucy5lbmQoKTsgKytp
dCkKICAgICAgICAgICAgICgqaXQpLT5hYm9ydCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmgKaW5kZXgg
N2YzMWNiMDRlYTRlZGJmY2Q2NzIxN2MxOWM4Y2E3YTJjOTczYmUxMS4uMjJjY2M0MzIyMGI1MDRm
ZTcwNjg1NjdiNTlhNDc2MjU1ZWVhODU0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuaApAQCAtNTUsOSAr
NTUsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IGludDY0X3QgSW52YWxpZElkID0gMDsK
ICAgICBpbnQ2NF90IGlkKCkgY29uc3QgeyByZXR1cm4gbV9pZDsgfQogCi0gICAgdm9pZCByZWdp
c3RlckZyb250ZW5kQ2FsbGJhY2tzKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+KTsK
LSAgICB2b2lkIG9wZW5Db25uZWN0aW9uKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPik7Ci0gICAg
dm9pZCBvcGVuQ29ubmVjdGlvbldpdGhWZXJzaW9uKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwg
aW50NjRfdCB2ZXJzaW9uKTsKKyAgICB2b2lkIG9wZW5Db25uZWN0aW9uKFBhc3NSZWZQdHI8SURC
Q2FsbGJhY2tzPiwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4pOworICAgIHZvaWQg
b3BlbkNvbm5lY3Rpb25XaXRoVmVyc2lvbihQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIFBhc3NS
ZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+LCBpbnQ2NF90IHZlcnNpb24pOwogICAgIHZvaWQg
ZGVsZXRlRGF0YWJhc2UoUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+KTsKIAogICAgIC8vIElEQkRh
dGFiYXNlQmFja2VuZEludGVyZmFjZQpAQCAtNzksOSArNzgsOSBAQCBwcml2YXRlOgogICAgIElE
QkRhdGFiYXNlQmFja2VuZEltcGwoY29uc3QgU3RyaW5nJiBuYW1lLCBJREJCYWNraW5nU3RvcmUq
IGRhdGFiYXNlLCBJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yKiwgSURCRmFjdG9yeUJhY2tlbmRJ
bXBsKiwgY29uc3QgU3RyaW5nJiB1bmlxdWVJZGVudGlmaWVyKTsKIAogICAgIGJvb2wgb3Blbklu
dGVybmFsKCk7Ci0gICAgdm9pZCBydW5JbnRWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24oaW50NjRf
dCByZXF1ZXN0ZWRWZXJzaW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pOworICAgIHZvaWQg
cnVuSW50VmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKGludDY0X3QgcmVxdWVzdGVkVmVyc2lvbiwg
UGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tz
Pik7CiAgICAgdm9pZCBsb2FkT2JqZWN0U3RvcmVzKCk7Ci0gICAgaW50MzJfdCBjb25uZWN0aW9u
Q291bnQoKTsKKyAgICBzaXplX3QgY29ubmVjdGlvbkNvdW50KCk7CiAgICAgdm9pZCBwcm9jZXNz
UGVuZGluZ0NhbGxzKCk7CiAKICAgICBzdGF0aWMgdm9pZCBjcmVhdGVPYmplY3RTdG9yZUludGVy
bmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2Vu
ZEltcGw+LCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw+LCBQYXNzUmVmUHRy
PElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+KTsKQEAgLTEyNywxMCArMTI2LDYgQEAgcHJpdmF0
ZToKICAgICBjbGFzcyBQZW5kaW5nRGVsZXRlQ2FsbDsKICAgICBEZXF1ZTxSZWZQdHI8UGVuZGlu
Z0RlbGV0ZUNhbGw+ID4gbV9wZW5kaW5nRGVsZXRlQ2FsbHM7CiAKLSAgICAvLyBGSVhNRTogRWxp
bWluYXRlIHRoZSBsaW1ibyBzdGF0ZSBiZXR3ZWVuIG9wZW5Db25uZWN0aW9uKCkgYW5kIHJlZ2lz
dGVyRnJvbnRlbmRDYWxsYmFja3MoKQotICAgIC8vIHRoYXQgdGhpcyBjb3VudGVyIHRyYWNrcy4K
LSAgICBpbnQzMl90IG1fcGVuZGluZ0Nvbm5lY3Rpb25Db3VudDsKLQogICAgIHR5cGVkZWYgTGlz
dEhhc2hTZXQ8UmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiA+IERhdGFiYXNlQ2FsbGJhY2tz
U2V0OwogICAgIERhdGFiYXNlQ2FsbGJhY2tzU2V0IG1fZGF0YWJhc2VDYWxsYmFja3NTZXQ7CiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJh
c2VCYWNrZW5kSW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UuaAppbmRleCBjN2QxZDYwMWJlMjZlN2JiYzkyMTcw
NjgzNDI0NzUyODVhMmE4NWQxLi40MmIzYjkwMmNhM2ZkZTY2NzQ5MTBmZWI5NDA1NzA4M2EzMzM1
YWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRh
YmFzZUJhY2tlbmRJbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UuaApAQCAtNjAsOCArNjAsNiBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIHNldFZlcnNpb24oY29uc3QgU3RyaW5nJiB2ZXJzaW9uLCBQ
YXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+
LCBFeGNlcHRpb25Db2RlJikgPSAwOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbnRlcmZhY2U+IHRyYW5zYWN0aW9uKERPTVN0cmluZ0xpc3QqIHN0b3JlTmFt
ZXMsIHVuc2lnbmVkIHNob3J0IG1vZGUsIEV4Y2VwdGlvbkNvZGUmKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIGNsb3NlKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+KSA9IDA7Ci0KLSAg
ICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJGcm9udGVuZENhbGxiYWNrcyhQYXNzUmVmUHRyPElEQkRh
dGFiYXNlQ2FsbGJhY2tzPikgPSAwOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VDYWxs
YmFja3NJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFi
YXNlQ2FsbGJhY2tzSW1wbC5jcHAKaW5kZXggZjY1NjVkY2ExYmQ4MjJmZTZkYzEzNTk2OGMzYjBl
ZGI5OTk1YTNiOC4uOTcwZDNhMTY3Y2FmOTk2YzdmMDMxZmY1NGE0ZjE1OTI0OWYxYWEwYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VDYWxs
YmFja3NJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJE
YXRhYmFzZUNhbGxiYWNrc0ltcGwuY3BwCkBAIC0zMiwxMyArMzIsMTMgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1QYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbD4gSURCRGF0
YWJhc2VDYWxsYmFja3NJbXBsOjpjcmVhdGUoSURCRGF0YWJhc2UqIGRhdGFiYXNlKQorUGFzc1Jl
ZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGw+IElEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbDo6
Y3JlYXRlKCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IElEQkRhdGFiYXNlQ2FsbGJhY2tz
SW1wbChkYXRhYmFzZSkpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgSURCRGF0YWJhc2VDYWxs
YmFja3NJbXBsKCkpOwogfQogCi1JREJEYXRhYmFzZUNhbGxiYWNrc0ltcGw6OklEQkRhdGFiYXNl
Q2FsbGJhY2tzSW1wbChJREJEYXRhYmFzZSogZGF0YWJhc2UpCi0gICAgOiBtX2RhdGFiYXNlKGRh
dGFiYXNlKQorSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsOjpJREJEYXRhYmFzZUNhbGxiYWNrc0lt
cGwoKQorICAgIDogbV9kYXRhYmFzZSgwKQogewogfQogCkBAIC02NCwxMCArNjQsMTEgQEAgdm9p
ZCBJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGw6Om9uVmVyc2lvbkNoYW5nZShpbnQ2NF90IG9sZFZl
cnNpb24sIGludDY0X3QgbmV3VmUKICAgICAgICAgbV9kYXRhYmFzZS0+b25WZXJzaW9uQ2hhbmdl
KG9sZFZlcnNpb24sIG5ld1ZlcnNpb24pOwogfQogCi12b2lkIElEQkRhdGFiYXNlQ2FsbGJhY2tz
SW1wbDo6dW5yZWdpc3RlckRhdGFiYXNlKElEQkRhdGFiYXNlKiBkYXRhYmFzZSkKK3ZvaWQgSURC
RGF0YWJhc2VDYWxsYmFja3NJbXBsOjpjb25uZWN0KElEQkRhdGFiYXNlKiBkYXRhYmFzZSkKIHsK
LSAgICBBU1NFUlRfVU5VU0VEKGRhdGFiYXNlLCBkYXRhYmFzZSA9PSBtX2RhdGFiYXNlKTsKLSAg
ICBtX2RhdGFiYXNlID0gMDsKKyAgICBBU1NFUlQoIW1fZGF0YWJhc2UpOworICAgIEFTU0VSVChk
YXRhYmFzZSk7CisgICAgbV9kYXRhYmFzZSA9IGRhdGFiYXNlOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJEYXRhYmFzZUNhbGxiYWNrc0ltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbC5oCmluZGV4IDg3ODFkYmIwYTMxNTBhNDQzOTI0
MjM3ZTJlMWYzNGZiYWUyOTBlOTguLmJiNGExYWU3NGU4MjI3MzhiMzNkZDZjMDgwOWU3MmU2MTBm
ZDNjYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRh
dGFiYXNlQ2FsbGJhY2tzSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbC5oCkBAIC0zOCwxOCArMzgsMjAgQEAgY2xhc3Mg
SURCRGF0YWJhc2U7CiAKIGNsYXNzIElEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbCA6IHB1YmxpYyBJ
REJEYXRhYmFzZUNhbGxiYWNrcyB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SURC
RGF0YWJhc2VDYWxsYmFja3NJbXBsPiBjcmVhdGUoSURCRGF0YWJhc2UqKTsKKyAgICBzdGF0aWMg
UGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGw+IGNyZWF0ZSgpOwogICAgIHZpcnR1
YWwgfklEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbCgpOwogCisgICAgLy8gSURCRGF0YWJhc2VDYWxs
YmFja3MKICAgICB2aXJ0dWFsIHZvaWQgb25Gb3JjZWRDbG9zZSgpOwogICAgIHZpcnR1YWwgdm9p
ZCBvblZlcnNpb25DaGFuZ2UoY29uc3QgU3RyaW5nJiB2ZXJzaW9uKTsKICAgICB2aXJ0dWFsIHZv
aWQgb25WZXJzaW9uQ2hhbmdlKGludDY0X3Qgb2xkVmVyc2lvbiwgaW50NjRfdCBuZXdWZXJzaW9u
KTsKLSAgICB2b2lkIHVucmVnaXN0ZXJEYXRhYmFzZShJREJEYXRhYmFzZSopOworCisgICAgdm9p
ZCBjb25uZWN0KElEQkRhdGFiYXNlKik7CiAKIHByaXZhdGU6Ci0gICAgSURCRGF0YWJhc2VDYWxs
YmFja3NJbXBsKElEQkRhdGFiYXNlKik7CisgICAgSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsKCk7
CiAKLSAgICAvLyBtX2RhdGFiYXNlIGhhcyBhIFJlZlB0ciB0byB0aGlzLCBzbyB1c2UgYSB3ZWFr
IHBvaW50ZXIgdG8gYXZvaWQgYSBjeWNsZS4KKyAgICAvLyBUaGUgaW5pdGlhbCBJREJPcGVuREJS
ZXF1ZXN0IG9yIGZpbmFsIElEQkRhdGFiYXNlIG1haW50YWlucyBhIFJlZlB0ciB0byB0aGlzCiAg
ICAgSURCRGF0YWJhc2UqIG1fZGF0YWJhc2U7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuY3BwCmluZGV4IDQ5OThmNmExN2Q3MTExZGFmNTll
NWMzNTYyZjg1NTY5MTJiOWUxODQuLjA2ODAxNGM4ZWVkZDllMjBhNjY4ZGRmNWM5ZGIxMjJiZmE4
ZDZlNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZh
Y3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3Rv
cnkuY3BwCkBAIC0xMjAsOCArMTIwLDkgQEAgUGFzc1JlZlB0cjxJREJPcGVuREJSZXF1ZXN0PiBJ
REJGYWN0b3J5OjpvcGVuKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGMKICAgICBp
ZiAoIWlzQ29udGV4dFZhbGlkKGNvbnRleHQpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIFJl
ZlB0cjxJREJPcGVuREJSZXF1ZXN0PiByZXF1ZXN0ID0gSURCT3BlbkRCUmVxdWVzdDo6Y3JlYXRl
KGNvbnRleHQsIElEQkFueTo6Y3JlYXRlTnVsbCgpLCB2ZXJzaW9uKTsKLSAgICBtX2JhY2tlbmQt
Pm9wZW4obmFtZSwgdmVyc2lvbiwgcmVxdWVzdCwgY29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKSwg
Y29udGV4dCwgZ2V0SW5kZXhlZERCRGF0YWJhc2VQYXRoKGNvbnRleHQpKTsKKyAgICBSZWZQdHI8
SURCRGF0YWJhc2VDYWxsYmFja3NJbXBsPiBkYXRhYmFzZUNhbGxiYWNrcyA9IElEQkRhdGFiYXNl
Q2FsbGJhY2tzSW1wbDo6Y3JlYXRlKCk7CisgICAgUmVmUHRyPElEQk9wZW5EQlJlcXVlc3Q+IHJl
cXVlc3QgPSBJREJPcGVuREJSZXF1ZXN0OjpjcmVhdGUoY29udGV4dCwgSURCQW55OjpjcmVhdGVO
dWxsKCksIGRhdGFiYXNlQ2FsbGJhY2tzLCB2ZXJzaW9uKTsKKyAgICBtX2JhY2tlbmQtPm9wZW4o
bmFtZSwgdmVyc2lvbiwgcmVxdWVzdCwgZGF0YWJhc2VDYWxsYmFja3MsIGNvbnRleHQtPnNlY3Vy
aXR5T3JpZ2luKCksIGNvbnRleHQsIGdldEluZGV4ZWREQkRhdGFiYXNlUGF0aChjb250ZXh0KSk7
CiAgICAgcmV0dXJuIHJlcXVlc3Q7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5QmFja2VuZEltcGwuY3BwCmluZGV4IDhkYTVj
MDJlNDIzZjZmNjRlNTc5NzMwZGI3M2ZhMjllYzJiZTQ2MDYuLmM3ZWY4NjBlMTNlMmQxODE3OWFl
NWVjYzBjNzU5NzA5Yjg4NDNkZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJbXBsLmNwcApAQCAtMTUwLDcgKzE1
MCw3IEBAIFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlPiBJREJGYWN0b3J5QmFja2VuZEltcGw6
Om9wZW5CYWNraW5nU3RvcmUoUGFzc1JlZlB0cjxTCiAgICAgcmV0dXJuIDA7CiB9CiAKLXZvaWQg
SURCRmFjdG9yeUJhY2tlbmRJbXBsOjpvcGVuKGNvbnN0IFN0cmluZyYgbmFtZSwgaW50NjRfdCB2
ZXJzaW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBQYXNzUmVmUHRyPFNl
Y3VyaXR5T3JpZ2luPiBwcnBTZWN1cml0eU9yaWdpbiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IGNvbnN0IFN0cmluZyYgZGF0YURpcmVjdG9yeSkKK3ZvaWQgSURCRmFjdG9yeUJhY2tlbmRJbXBs
OjpvcGVuKGNvbnN0IFN0cmluZyYgbmFtZSwgaW50NjRfdCB2ZXJzaW9uLCBQYXNzUmVmUHRyPElE
QkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBk
YXRhYmFzZUNhbGxiYWNrcywgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gcHJwU2VjdXJpdHlP
cmlnaW4sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIGRhdGFEaXJlY3Rv
cnkpCiB7CiAgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdpbiA9IHBycFNl
Y3VyaXR5T3JpZ2luOwogICAgIGNvbnN0IFN0cmluZyB1bmlxdWVJZGVudGlmaWVyID0gY29tcHV0
ZVVuaXF1ZUlkZW50aWZpZXIobmFtZSwgc2VjdXJpdHlPcmlnaW4uZ2V0KCkpOwpAQCAtMTc1LDkg
KzE3NSw5IEBAIHZvaWQgSURCRmFjdG9yeUJhY2tlbmRJbXBsOjpvcGVuKGNvbnN0IFN0cmluZyYg
bmFtZSwgaW50NjRfdCB2ZXJzaW9uLCBQYXNzUmVmUHRyCiAgICAgICAgIGRhdGFiYXNlQmFja2Vu
ZCA9IGl0LT5zZWNvbmQ7CiAKICAgICBpZiAodmVyc2lvbiA9PSBJREJEYXRhYmFzZU1ldGFkYXRh
OjpOb0ludFZlcnNpb24pCi0gICAgICAgIGRhdGFiYXNlQmFja2VuZC0+b3BlbkNvbm5lY3Rpb24o
Y2FsbGJhY2tzKTsKKyAgICAgICAgZGF0YWJhc2VCYWNrZW5kLT5vcGVuQ29ubmVjdGlvbihjYWxs
YmFja3MsIGRhdGFiYXNlQ2FsbGJhY2tzKTsKICAgICBlbHNlCi0gICAgICAgIGRhdGFiYXNlQmFj
a2VuZC0+b3BlbkNvbm5lY3Rpb25XaXRoVmVyc2lvbihjYWxsYmFja3MsIHZlcnNpb24pOworICAg
ICAgICBkYXRhYmFzZUJhY2tlbmQtPm9wZW5Db25uZWN0aW9uV2l0aFZlcnNpb24oY2FsbGJhY2tz
LCBkYXRhYmFzZUNhbGxiYWNrcywgdmVyc2lvbik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3Rv
cnlCYWNrZW5kSW1wbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFj
dG9yeUJhY2tlbmRJbXBsLmgKaW5kZXggY2FkM2I1YTI0YjI5OWE5Mjk5YzJhZDI5NGUzYjJlYTA0
Y2ZkNzJhNS4uM2FlMDcwMzEwZGFlODc2NDM1OTZjYTliMjk5M2MzM2E0NjcwYjFiMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJ
bXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeUJh
Y2tlbmRJbXBsLmgKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBy
ZW1vdmVJREJCYWNraW5nU3RvcmUoY29uc3QgU3RyaW5nJiBmaWxlSWRlbnRpZmllcik7CiAKICAg
ICB2aXJ0dWFsIHZvaWQgZ2V0RGF0YWJhc2VOYW1lcyhQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4s
IFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29u
c3QgU3RyaW5nJiBkYXRhRGlyKTsKLSAgICB2aXJ0dWFsIHZvaWQgb3Blbihjb25zdCBTdHJpbmcm
IG5hbWUsIGludDY0X3QgdmVyc2lvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBQYXNzUmVm
UHRyPFNlY3VyaXR5T3JpZ2luPiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmlu
ZyYgZGF0YURpcik7CisgICAgdmlydHVhbCB2b2lkIG9wZW4oY29uc3QgU3RyaW5nJiBuYW1lLCBp
bnQ2NF90IHZlcnNpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgUGFzc1JlZlB0cjxJREJE
YXRhYmFzZUNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+LCBTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBkYXRhRGlyKTsKICAgICB2aXJ0dWFsIHZvaWQg
ZGVsZXRlRGF0YWJhc2UoY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNr
cz4sIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
Y29uc3QgU3RyaW5nJiBkYXRhRGlyKTsKIAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2UuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnlCYWNrZW5kSW50ZXJm
YWNlLmgKaW5kZXggZjU2ZmMwNmUwMGU2MzNkZjRkNzRkOTgzZGIyM2IwMjliNTIwNTVlOC4uYWUy
MjcwNjhmNTYyYzI2OTk1OWIyZTViOWZiNDEyOTI2YTFiZGZhOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5QmFja2VuZElu
dGVyZmFjZS5oCkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5JREJGYWN0
b3J5QmFja2VuZEludGVyZmFjZSgpIHsgfQogCiAgICAgdmlydHVhbCB2b2lkIGdldERhdGFiYXNl
TmFtZXMoUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2lu
PiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgZGF0YURpcikgPSAwOwot
ICAgIHZpcnR1YWwgdm9pZCBvcGVuKGNvbnN0IFN0cmluZyYgbmFtZSwgaW50NjRfdCB2ZXJzaW9u
LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+LCBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBkYXRhRGlyKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIG9wZW4oY29uc3QgU3RyaW5nJiBuYW1lLCBpbnQ2NF90IHZlcnNpb24sIFBh
c3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4s
IFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29u
c3QgU3RyaW5nJiBkYXRhRGlyKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZURhdGFiYXNl
KGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBQYXNzUmVmUHRy
PFNlY3VyaXR5T3JpZ2luPiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYg
ZGF0YURpcikgPSAwOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCT3BlbkRCUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJPcGVuREJSZXF1ZXN0LmNwcAppbmRleCBlODlhNzRjZmQ5YmZiN2ZmNzYzYmE2
ZWUyNWZkMjJiY2YyNDY5NTBhLi42ZWYxNmNmMDI5M2E2OTE5MGY5NmNkM2E4NWFjMzUyNzIzZWJi
NmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPcGVu
REJSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJP
cGVuREJSZXF1ZXN0LmNwcApAQCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJMRShJTkRFWEVEX0RB
VEFCQVNFKQogCiAjaW5jbHVkZSAiSURCRGF0YWJhc2UuaCIKKyNpbmNsdWRlICJJREJEYXRhYmFz
ZUNhbGxiYWNrc0ltcGwuaCIKICNpbmNsdWRlICJJREJQZW5kaW5nVHJhbnNhY3Rpb25Nb25pdG9y
LmgiCiAjaW5jbHVkZSAiSURCVHJhY2luZy5oIgogI2luY2x1ZGUgIklEQlVwZ3JhZGVOZWVkZWRF
dmVudC5oIgpAQCAtMzYsMTUgKzM3LDE2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFz
c1JlZlB0cjxJREJPcGVuREJSZXF1ZXN0PiBJREJPcGVuREJSZXF1ZXN0OjpjcmVhdGUoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJREJBbnk+IHNvdXJjZSwgaW50
NjRfdCB2ZXJzaW9uKQorUGFzc1JlZlB0cjxJREJPcGVuREJSZXF1ZXN0PiBJREJPcGVuREJSZXF1
ZXN0OjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJ
REJBbnk+IHNvdXJjZSwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGw+IGNhbGxi
YWNrcywgaW50NjRfdCB2ZXJzaW9uKQogewotICAgIFJlZlB0cjxJREJPcGVuREJSZXF1ZXN0PiBy
ZXF1ZXN0KGFkb3B0UmVmKG5ldyBJREJPcGVuREJSZXF1ZXN0KGNvbnRleHQsIHNvdXJjZSwgdmVy
c2lvbikpKTsKKyAgICBSZWZQdHI8SURCT3BlbkRCUmVxdWVzdD4gcmVxdWVzdChhZG9wdFJlZihu
ZXcgSURCT3BlbkRCUmVxdWVzdChjb250ZXh0LCBzb3VyY2UsIGNhbGxiYWNrcywgdmVyc2lvbikp
KTsKICAgICByZXF1ZXN0LT5zdXNwZW5kSWZOZWVkZWQoKTsKICAgICByZXR1cm4gcmVxdWVzdC5y
ZWxlYXNlKCk7CiB9CiAKLUlEQk9wZW5EQlJlcXVlc3Q6OklEQk9wZW5EQlJlcXVlc3QoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJREJBbnk+IHNvdXJjZSwgaW50
NjRfdCB2ZXJzaW9uKQorSURCT3BlbkRCUmVxdWVzdDo6SURCT3BlbkRCUmVxdWVzdChTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQkFueT4gc291cmNlLCBQYXNz
UmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbD4gY2FsbGJhY2tzLCBpbnQ2NF90IHZlcnNp
b24pCiAgICAgOiBJREJSZXF1ZXN0KGNvbnRleHQsIHNvdXJjZSwgSURCVHJhbnNhY3Rpb25CYWNr
ZW5kSW50ZXJmYWNlOjpOb3JtYWxUYXNrLCAwKQorICAgICwgbV9kYXRhYmFzZUNhbGxiYWNrcyhj
YWxsYmFja3MpCiAgICAgLCBtX3ZlcnNpb24odmVyc2lvbikKIHsKICAgICBBU1NFUlQoIW1fcmVz
dWx0KTsKQEAgLTcyLDkgKzc0LDEzIEBAIHZvaWQgSURCT3BlbkRCUmVxdWVzdDo6b25VcGdyYWRl
TmVlZGVkKGludDY0X3Qgb2xkVmVyc2lvbiwgUGFzc1JlZlB0cjxJREJUcmFuc2FjCiAgICAgaWYg
KCFzaG91bGRFbnF1ZXVlRXZlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCisgICAgQVNTRVJUKG1f
ZGF0YWJhc2VDYWxsYmFja3MpOworCiAgICAgUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVy
ZmFjZT4gZGF0YWJhc2VCYWNrZW5kID0gcHJwRGF0YWJhc2VCYWNrZW5kOwogICAgIFJlZlB0cjxJ
REJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IHRyYW5zYWN0aW9uQmFja2VuZCA9IHBycFRy
YW5zYWN0aW9uQmFja2VuZDsKLSAgICBSZWZQdHI8SURCRGF0YWJhc2U+IGlkYkRhdGFiYXNlID0g
SURCRGF0YWJhc2U6OmNyZWF0ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGRhdGFiYXNlQmFj
a2VuZCk7CisgICAgUmVmUHRyPElEQkRhdGFiYXNlPiBpZGJEYXRhYmFzZSA9IElEQkRhdGFiYXNl
OjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBkYXRhYmFzZUJhY2tlbmQsIG1fZGF0
YWJhc2VDYWxsYmFja3MpOworICAgIG1fZGF0YWJhc2VDYWxsYmFja3MtPmNvbm5lY3QoaWRiRGF0
YWJhc2UuZ2V0KCkpOworICAgIG1fZGF0YWJhc2VDYWxsYmFja3MgPSAwOwogCiAgICAgUmVmUHRy
PElEQlRyYW5zYWN0aW9uPiBmcm9udGVuZCA9IElEQlRyYW5zYWN0aW9uOjpjcmVhdGUoc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpLCB0cmFuc2FjdGlvbkJhY2tlbmQsIElEQlRyYW5zYWN0aW9uOjpW
RVJTSU9OX0NIQU5HRSwgaWRiRGF0YWJhc2UuZ2V0KCksIHRoaXMpOwogICAgIHRyYW5zYWN0aW9u
QmFja2VuZC0+c2V0Q2FsbGJhY2tzKGZyb250ZW5kLmdldCgpKTsKQEAgLTk4LDExICsxMDQsMTQg
QEAgdm9pZCBJREJPcGVuREJSZXF1ZXN0OjpvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJEYXRhYmFz
ZUJhY2tlbmRJbnRlcmZhY2U+IGJhY2tlbmQKICAgICBpZiAobV9yZXN1bHQpIHsKICAgICAgICAg
aWRiRGF0YWJhc2UgPSBtX3Jlc3VsdC0+aWRiRGF0YWJhc2UoKTsKICAgICAgICAgQVNTRVJUKGlk
YkRhdGFiYXNlKTsKKyAgICAgICAgQVNTRVJUKCFtX2RhdGFiYXNlQ2FsbGJhY2tzKTsKICAgICB9
IGVsc2UgewotICAgICAgICBpZGJEYXRhYmFzZSA9IElEQkRhdGFiYXNlOjpjcmVhdGUoc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpLCBiYWNrZW5kKTsKKyAgICAgICAgQVNTRVJUKG1fZGF0YWJhc2VD
YWxsYmFja3MpOworICAgICAgICBpZGJEYXRhYmFzZSA9IElEQkRhdGFiYXNlOjpjcmVhdGUoc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpLCBiYWNrZW5kLCBtX2RhdGFiYXNlQ2FsbGJhY2tzKTsKKyAg
ICAgICAgbV9kYXRhYmFzZUNhbGxiYWNrcy0+Y29ubmVjdChpZGJEYXRhYmFzZS5nZXQoKSk7Cisg
ICAgICAgIG1fZGF0YWJhc2VDYWxsYmFja3MgPSAwOwogICAgICAgICBtX3Jlc3VsdCA9IElEQkFu
eTo6Y3JlYXRlKGlkYkRhdGFiYXNlLmdldCgpKTsKICAgICB9Ci0gICAgaWRiRGF0YWJhc2UtPnJl
Z2lzdGVyRnJvbnRlbmRDYWxsYmFja3MoKTsKICAgICBlbnF1ZXVlRXZlbnQoRXZlbnQ6OmNyZWF0
ZShldmVudE5hbWVzKCkuc3VjY2Vzc0V2ZW50LCBmYWxzZSwgZmFsc2UpKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT3BlbkRCUmVxdWVzdC5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT3BlbkRCUmVxdWVzdC5oCmlu
ZGV4IGM4N2RiN2VkMWJkZDJkNDA1M2U3NGMxMDJhMmVjNmQ2OTU5NzJlM2YuLjFlODRiNTRjOWRh
NTA3YWY1NTE5YzgwODg5ODQ2ZDQyZWZkZWQ0OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQk9wZW5EQlJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPcGVuREJSZXF1ZXN0LmgKQEAgLTMyLDkgKzMyLDExIEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgSURCRGF0YWJhc2VDYWxsYmFja3NJbXBs
OworCiBjbGFzcyBJREJPcGVuREJSZXF1ZXN0IDogcHVibGljIElEQlJlcXVlc3QgewogcHVibGlj
OgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQk9wZW5EQlJlcXVlc3Q+IGNyZWF0ZShTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJBbnk+IHNvdXJjZSwgaW50NjRfdCB2ZXJz
aW9uKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJPcGVuREJSZXF1ZXN0PiBjcmVhdGUoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCQW55PiBzb3VyY2UsIFBhc3NSZWZQ
dHI8SURCRGF0YWJhc2VDYWxsYmFja3NJbXBsPiwgaW50NjRfdCB2ZXJzaW9uKTsKICAgICB2aXJ0
dWFsIH5JREJPcGVuREJSZXF1ZXN0KCk7CiAKICAgICB1c2luZyBJREJSZXF1ZXN0OjpvblN1Y2Nl
c3M7CkBAIC01Myw4ICs1NSw5IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxk
RW5xdWV1ZUV2ZW50KCkgY29uc3QgT1ZFUlJJREU7CiAKIHByaXZhdGU6Ci0gICAgSURCT3BlbkRC
UmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJBbnk+IHNvdXJj
ZSwgaW50NjRfdCB2ZXJzaW9uKTsKKyAgICBJREJPcGVuREJSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQkFueT4gc291cmNlLCBQYXNzUmVmUHRyPElEQkRhdGFi
YXNlQ2FsbGJhY2tzSW1wbD4sIGludDY0X3QgdmVyc2lvbik7CiAKKyAgICBSZWZQdHI8SURCRGF0
YWJhc2VDYWxsYmFja3NJbXBsPiBtX2RhdGFiYXNlQ2FsbGJhY2tzOwogICAgIGludDY0X3QgbV92
ZXJzaW9uOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCVHJhbnNhY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCVHJhbnNhY3Rpb24uY3BwCmluZGV4IDIxZTVmMzI4ZTM0NTUzODljZTA4NTY2MjA3MGVlZWEx
NDY1NWY2MjguLmUxZTA1ZjFmMjg4NjhkYjJkMjg5ZjJlZjA1Y2ViNDJmNTI1MGVjY2QgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5j
cHAKQEAgLTI5NCwxMiArMjk0LDEwIEBAIHZvaWQgSURCVHJhbnNhY3Rpb246Om9uQWJvcnQoKQog
ICAgIH0KICAgICBtX29iamVjdFN0b3JlQ2xlYW51cE1hcC5jbGVhcigpOwogICAgIGNsb3NlT3Bl
bkN1cnNvcnMoKTsKLSAgICBtX2RhdGFiYXNlLT50cmFuc2FjdGlvbkZpbmlzaGVkKHRoaXMpOwot
Ci0gICAgaWYgKG1fY29udGV4dFN0b3BwZWQgfHwgIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkK
LSAgICAgICAgcmV0dXJuOwogCisgICAgLy8gRW5xdWV1ZSBldmVudHMgYmVmb3JlIG5vdGlmeWlu
ZyBkYXRhYmFzZSwgYXMgZGF0YWJhc2UgbWF5IGNsb3NlIHdoaWNoIGVucXVldWVzIG1vcmUgZXZl
bnRzIGFuZCBvcmRlciBtYXR0ZXJzLgogICAgIGVucXVldWVFdmVudChFdmVudDo6Y3JlYXRlKGV2
ZW50TmFtZXMoKS5hYm9ydEV2ZW50LCB0cnVlLCBmYWxzZSkpOworICAgIG1fZGF0YWJhc2UtPnRy
YW5zYWN0aW9uRmluaXNoZWQodGhpcyk7CiB9CiAKIHZvaWQgSURCVHJhbnNhY3Rpb246Om9uQ29t
cGxldGUoKQpAQCAtMzA5LDEyICszMDcsMTAgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6b25Db21w
bGV0ZSgpCiAgICAgbV9zdGF0ZSA9IEZpbmlzaGluZzsKICAgICBtX29iamVjdFN0b3JlQ2xlYW51
cE1hcC5jbGVhcigpOwogICAgIGNsb3NlT3BlbkN1cnNvcnMoKTsKLSAgICBtX2RhdGFiYXNlLT50
cmFuc2FjdGlvbkZpbmlzaGVkKHRoaXMpOwotCi0gICAgaWYgKG1fY29udGV4dFN0b3BwZWQgfHwg
IXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKLSAgICAgICAgcmV0dXJuOwogCisgICAgLy8gRW5x
dWV1ZSBldmVudHMgYmVmb3JlIG5vdGlmeWluZyBkYXRhYmFzZSwgYXMgZGF0YWJhc2UgbWF5IGNs
b3NlIHdoaWNoIGVucXVldWVzIG1vcmUgZXZlbnRzIGFuZCBvcmRlciBtYXR0ZXJzLgogICAgIGVu
cXVldWVFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jb21wbGV0ZUV2ZW50LCBmYWxz
ZSwgZmFsc2UpKTsKKyAgICBtX2RhdGFiYXNlLT50cmFuc2FjdGlvbkZpbmlzaGVkKHRoaXMpOwog
fQogCiBib29sIElEQlRyYW5zYWN0aW9uOjpoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5j
cHAKaW5kZXggNWRmZDk5NTE5NThiYTYwZTgyOGU0ZWM1MzUwMzZjMzUxNDE5YTJkYS4uZjEyYmQw
ZGFjZjhlMzBhZmI4ZGYyNTU4NmU1OTE1NWM2ZDhkMmM0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwCkBAIC0xNzIsMzUg
KzE3MiwzNSBAQCBwcml2YXRlOgogICAgIFN0cmluZyBtX3NlY3VyaXR5T3JpZ2luOwogfTsKIAot
Y2xhc3MgRXhlY3V0YWJsZVdpdGhEYXRhYmFzZSA6IHB1YmxpYyBSZWZDb3VudGVkPEV4ZWN1dGFi
bGVXaXRoRGF0YWJhc2U+IHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIH5FeGVjdXRhYmxlV2l0aERh
dGFiYXNlKCkgeyB9OwotICAgIHZvaWQgc3RhcnQoSURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2Uq
LCBTZWN1cml0eU9yaWdpbiosIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcm
IGRhdGFiYXNlTmFtZSk7Ci0gICAgdmlydHVhbCB2b2lkIGV4ZWN1dGUoUGFzc1JlZlB0cjxJREJE
YXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+KSA9IDA7Ci19OwotCiBjbGFzcyBEYXRhYmFzZUNvbm5l
Y3Rpb24gewogcHVibGljOgogICAgIERhdGFiYXNlQ29ubmVjdGlvbigpCiAgICAgICAgIDogbV9p
ZGJEYXRhYmFzZUNhbGxiYWNrcyhJbnNwZWN0b3JJREJEYXRhYmFzZUNhbGxiYWNrczo6Y3JlYXRl
KCkpIHsgfQogCi0gICAgdm9pZCBjb25uZWN0KFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5k
SW50ZXJmYWNlPiBpZGJEYXRhYmFzZSkKLSAgICB7Ci0gICAgICAgIG1faWRiRGF0YWJhc2UgPSBp
ZGJEYXRhYmFzZTsKLSAgICAgICAgbV9pZGJEYXRhYmFzZS0+cmVnaXN0ZXJGcm9udGVuZENhbGxi
YWNrcyhtX2lkYkRhdGFiYXNlQ2FsbGJhY2tzKTsKLSAgICB9Ci0KICAgICB+RGF0YWJhc2VDb25u
ZWN0aW9uKCkKICAgICB7CiAgICAgICAgIGlmIChtX2lkYkRhdGFiYXNlKQogICAgICAgICAgICAg
bV9pZGJEYXRhYmFzZS0+Y2xvc2UobV9pZGJEYXRhYmFzZUNhbGxiYWNrcyk7CiAgICAgfQogCisg
ICAgdm9pZCBjb25uZWN0KFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiBk
YXRhYmFzZSkgeyBtX2lkYkRhdGFiYXNlID0gZGF0YWJhc2U7IH0KKyAgICBQYXNzUmVmUHRyPElE
QkRhdGFiYXNlQ2FsbGJhY2tzPiBjYWxsYmFja3MoKSB7IHJldHVybiBtX2lkYkRhdGFiYXNlQ2Fs
bGJhY2tzOyB9CisKIHByaXZhdGU6CiAgICAgUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVy
ZmFjZT4gbV9pZGJEYXRhYmFzZTsKICAgICBSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IG1f
aWRiRGF0YWJhc2VDYWxsYmFja3M7CiB9OwogCitjbGFzcyBFeGVjdXRhYmxlV2l0aERhdGFiYXNl
IDogcHVibGljIFJlZkNvdW50ZWQ8RXhlY3V0YWJsZVdpdGhEYXRhYmFzZT4geworcHVibGljOgor
ICAgIHZpcnR1YWwgfkV4ZWN1dGFibGVXaXRoRGF0YWJhc2UoKSB7IH07CisgICAgdm9pZCBzdGFy
dChJREJGYWN0b3J5QmFja2VuZEludGVyZmFjZSosIFNlY3VyaXR5T3JpZ2luKiwgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lKTsKKyAgICB2b2lkIGNv
bm5lY3QoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+IGRhdGFiYXNlKSB7
IG1fY29ubmVjdGlvbi5jb25uZWN0KGRhdGFiYXNlKTsgfQorICAgIHZpcnR1YWwgdm9pZCBleGVj
dXRlKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPikgPSAwOworcHJpdmF0
ZToKKyAgICBEYXRhYmFzZUNvbm5lY3Rpb24gbV9jb25uZWN0aW9uOworfTsKKwogY2xhc3MgT3Bl
bkRhdGFiYXNlQ2FsbGJhY2sgOiBwdWJsaWMgSW5zcGVjdG9ySURCQ2FsbGJhY2sgewogcHVibGlj
OgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPE9wZW5EYXRhYmFzZUNhbGxiYWNrPiBjcmVhdGUoRXhl
Y3V0YWJsZVdpdGhEYXRhYmFzZSogZXhlY3V0YWJsZVdpdGhEYXRhYmFzZSkKQEAgLTIxMyw2ICsy
MTMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPElE
QkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4gcHJwRGF0YWJhc2UpCiAgICAgewogICAgICAgICBS
ZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiBpZGJEYXRhYmFzZSA9IHBycERhdGFi
YXNlOworICAgICAgICBtX2V4ZWN1dGFibGVXaXRoRGF0YWJhc2UtPmNvbm5lY3QoaWRiRGF0YWJh
c2UpOwogICAgICAgICBtX2V4ZWN1dGFibGVXaXRoRGF0YWJhc2UtPmV4ZWN1dGUoaWRiRGF0YWJh
c2UpOwogICAgIH0KIApAQCAtMjI1LDcgKzIyNiw3IEBAIHByaXZhdGU6CiB2b2lkIEV4ZWN1dGFi
bGVXaXRoRGF0YWJhc2U6OnN0YXJ0KElEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlKiBpZGJGYWN0
b3J5LCBTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4sIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lKQogewogICAgIFJlZlB0cjxP
cGVuRGF0YWJhc2VDYWxsYmFjaz4gY2FsbGJhY2sgPSBPcGVuRGF0YWJhc2VDYWxsYmFjazo6Y3Jl
YXRlKHRoaXMpOwotICAgIGlkYkZhY3RvcnktPm9wZW4oZGF0YWJhc2VOYW1lLCBJREJEYXRhYmFz
ZU1ldGFkYXRhOjpOb0ludFZlcnNpb24sIGNhbGxiYWNrLmdldCgpLCBzZWN1cml0eU9yaWdpbiwg
Y29udGV4dCwgU3RyaW5nKCkpOworICAgIGlkYkZhY3RvcnktPm9wZW4oZGF0YWJhc2VOYW1lLCBJ
REJEYXRhYmFzZU1ldGFkYXRhOjpOb0ludFZlcnNpb24sIGNhbGxiYWNrLCBtX2Nvbm5lY3Rpb24u
Y2FsbGJhY2tzKCksIHNlY3VyaXR5T3JpZ2luLCBjb250ZXh0LCBTdHJpbmcoKSk7CiB9CiAKIHN0
YXRpYyBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gdHJhbnNhY3Rp
b25Gb3JEYXRhYmFzZShJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UqIGlkYkRhdGFiYXNlLCBj
b25zdCBTdHJpbmcmIG9iamVjdFN0b3JlTmFtZSkKQEAgLTI5Niw3ICsyOTcsNiBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIGV4ZWN1dGUoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJ
bnRlcmZhY2U+IHBycERhdGFiYXNlKQogICAgIHsKICAgICAgICAgUmVmUHRyPElEQkRhdGFiYXNl
QmFja2VuZEludGVyZmFjZT4gaWRiRGF0YWJhc2UgPSBwcnBEYXRhYmFzZTsKLSAgICAgICAgbV9j
b25uZWN0aW9uLmNvbm5lY3QoaWRiRGF0YWJhc2UpOwogICAgICAgICBpZiAoIW1fcmVxdWVzdENh
bGxiYWNrLT5pc0FjdGl2ZSgpKQogICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0zMzksNyArMzM5
LDYgQEAgcHJpdmF0ZToKICAgICBEYXRhYmFzZUxvYWRlckNhbGxiYWNrKFBhc3NSZWZQdHI8UmVx
dWVzdERhdGFiYXNlQ2FsbGJhY2s+IHJlcXVlc3RDYWxsYmFjaykKICAgICAgICAgOiBtX3JlcXVl
c3RDYWxsYmFjayhyZXF1ZXN0Q2FsbGJhY2spIHsgfQogICAgIFJlZlB0cjxSZXF1ZXN0RGF0YWJh
c2VDYWxsYmFjaz4gbV9yZXF1ZXN0Q2FsbGJhY2s7Ci0gICAgRGF0YWJhc2VDb25uZWN0aW9uIG1f
Y29ubmVjdGlvbjsKIH07CiAKIHN0YXRpYyBQYXNzUmVmUHRyPElEQktleT4gaWRiS2V5RnJvbUlu
c3BlY3Rvck9iamVjdChJbnNwZWN0b3JPYmplY3QqIGtleSkKQEAgLTU1NSw3ICs1NTQsNiBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGV4ZWN1dGUoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJh
Y2tlbmRJbnRlcmZhY2U+IHBycERhdGFiYXNlKQogICAgIHsKICAgICAgICAgUmVmUHRyPElEQkRh
dGFiYXNlQmFja2VuZEludGVyZmFjZT4gaWRiRGF0YWJhc2UgPSBwcnBEYXRhYmFzZTsKLSAgICAg
ICAgbV9jb25uZWN0aW9uLmNvbm5lY3QoaWRiRGF0YWJhc2UpOwogICAgICAgICBpZiAoIW1fcmVx
dWVzdENhbGxiYWNrLT5pc0FjdGl2ZSgpKQogICAgICAgICAgICAgcmV0dXJuOwogCkBAIC01OTcs
NyArNTk1LDYgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8SURCS2V5UmFuZ2U+IG1faWRiS2V5UmFu
Z2U7CiAgICAgaW50IG1fc2tpcENvdW50OwogICAgIHVuc2lnbmVkIG1fcGFnZVNpemU7Ci0gICAg
RGF0YWJhc2VDb25uZWN0aW9uIG1fY29ubmVjdGlvbjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJEYXRhYmFzZS5o
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCRGF0YWJhc2UuaAppbmRleCBh
OGIwMzVjNzI3Zjg4ZGRiZjBjZTE3MGVhZDc0MTg1YzY4YmUyYWQ2Li41OTJhMTBlM2UxOTcwMWZl
NDA4OGYzMjlkMTJlYzk4MDBmOTRkMjk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJJREJEYXRhYmFzZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYklEQkRhdGFiYXNlLmgKQEAgLTY2LDYgKzY2LDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCBjbG9zZSgpIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAgICAg
dmlydHVhbCB2b2lkIGZvcmNlQ2xvc2UoKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsg
fQogCisgICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIG1ldGhvZCBhZnRlciBXSzkwNDExIGNsZWFu
dXAgaXMgY29tcGxldGUgb24gdGhlIENocm9taXVtIHNpZGUuCiAgICAgdmlydHVhbCB2b2lkIG9w
ZW4oV2ViSURCRGF0YWJhc2VDYWxsYmFja3MqKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsgfQogCiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJJREJGYWN0b3J5LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJ
REJGYWN0b3J5LmgKaW5kZXggNzBjOGM4NDBjMTE4MTBlYzdlYTUxNDU1YzRmZGU3NDFjMmIzMWFk
Yi4uNjlhNDUzYWJjZDk0NGUzNzI2YWI1YWJhZTg2ZTQ3YzdkOWE1YzQzOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCRmFjdG9yeS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQkZhY3RvcnkuaApAQCAtNTUsNyArNTUsNyBA
QCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgZ2V0RGF0YWJhc2VOYW1lcyhXZWJJREJDYWxs
YmFja3MqIGNhbGxiYWNrcywgY29uc3QgV2ViU2VjdXJpdHlPcmlnaW4mIG9yaWdpbiwgV2ViRnJh
bWUqIGZyYW1lLCBjb25zdCBXZWJTdHJpbmcmIGRhdGFEaXIpIHsgV0VCS0lUX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOyB9CiAKLSAgICAvLyBGSVhNRTogVGhpcyBvdmVybG9hZCBzaG91bGQgYmUgcmVt
b3ZlZCB3aGVuIFdLOTA0MTEgbGFuZHMuCisgICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIG92ZXJs
b2FkIGFmdGVyIFdLOTA0MTEgY2xlYW51cCBpcyBjb21wbGV0ZSBvbiB0aGUgQ2hyb21pdW0gc2lk
ZS4KICAgICAvLyBUaGUgV2ViS2l0IGltcGxlbWVudGF0aW9uIG9mIG9wZW4gaWdub3JlcyB0aGUg
V2ViRnJhbWUqIHBhcmFtZXRlci4KICAgICB2aXJ0dWFsIHZvaWQgb3Blbihjb25zdCBXZWJTdHJp
bmcmIG5hbWUsIGxvbmcgbG9uZyB2ZXJzaW9uLCBXZWJJREJDYWxsYmFja3MqIGNhbGxiYWNrcywg
Y29uc3QgV2ViU2VjdXJpdHlPcmlnaW4mIG9yaWdpbiwgV2ViRnJhbWUqIGZyYW1lLCBjb25zdCBX
ZWJTdHJpbmcmIGRhdGFEaXIpIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkNhbGxiYWNrc1Byb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkNhbGxiYWNrc1Byb3h5LmNwcAppbmRl
eCAxOTNiZjJiNWY2YzY2NmM3YmQ1MDYyYWQ0NDc0NDE1YmZiMzA0Mjk3Li5hZjQ5ODRhNzdjNGI4
NWUyNmUyOWVmODhhOGQyODNkZTQ2YWNjMzhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9JREJDYWxsYmFja3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvSURCQ2FsbGJhY2tzUHJveHkuY3BwCkBAIC0zNCwxMyArMzQsMTUgQEAKICNpbmNs
dWRlICJJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiSURCRGF0YWJhc2VC
YWNrZW5kSW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuaCIK
KyNpbmNsdWRlICJJREJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5LmgiCiAjaW5jbHVkZSAiSURCRGF0
YWJhc2VFcnJvci5oIgogI2luY2x1ZGUgIklEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZS5o
IgogI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZS5oIgogI2luY2x1ZGUg
IldlYklEQkNhbGxiYWNrcy5oIgogI2luY2x1ZGUgIldlYklEQkN1cnNvckltcGwuaCIKLSNpbmNs
dWRlICJXZWJJREJEYXRhYmFzZUltcGwuaCIKKyNpbmNsdWRlICJXZWJJREJEYXRhYmFzZUNhbGxi
YWNrcy5oIgogI2luY2x1ZGUgIldlYklEQkRhdGFiYXNlRXJyb3IuaCIKKyNpbmNsdWRlICJXZWJJ
REJEYXRhYmFzZUltcGwuaCIKICNpbmNsdWRlICJXZWJJREJLZXkuaCIKICNpbmNsdWRlICJXZWJJ
REJUcmFuc2FjdGlvbkltcGwuaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJTZXJpYWxpemVkU2Ny
aXB0VmFsdWUuaCIKQEAgLTc1LDcgKzc3LDggQEAgdm9pZCBJREJDYWxsYmFja3NQcm94eTo6b25T
dWNjZXNzKFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZT4gaWRiQ3Vyc28KIAog
dm9pZCBJREJDYWxsYmFja3NQcm94eTo6b25TdWNjZXNzKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VC
YWNrZW5kSW50ZXJmYWNlPiBiYWNrZW5kKQogewotICAgIG1fY2FsbGJhY2tzLT5vblN1Y2Nlc3Mo
bmV3IFdlYklEQkRhdGFiYXNlSW1wbChiYWNrZW5kKSk7CisgICAgQVNTRVJUKG1fZGF0YWJhc2VD
YWxsYmFja3MuZ2V0KCkpOworICAgIG1fY2FsbGJhY2tzLT5vblN1Y2Nlc3MobmV3IFdlYklEQkRh
dGFiYXNlSW1wbChiYWNrZW5kLCBtX2RhdGFiYXNlQ2FsbGJhY2tzLnJlbGVhc2UoKSkpOwogfQog
CiB2b2lkIElEQkNhbGxiYWNrc1Byb3h5OjpvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJLZXk+IGlk
YktleSkKQEAgLTEzNyw5ICsxNDAsMTcgQEAgdm9pZCBJREJDYWxsYmFja3NQcm94eTo6b25CbG9j
a2VkKGludDY0X3QgZXhpc3RpbmdWZXJzaW9uKQogCiB2b2lkIElEQkNhbGxiYWNrc1Byb3h5Ojpv
blVwZ3JhZGVOZWVkZWQoaW50NjRfdCBvbGRWZXJzaW9uLCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0
aW9uQmFja2VuZEludGVyZmFjZT4gdHJhbnNhY3Rpb24sIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VC
YWNrZW5kSW50ZXJmYWNlPiBkYXRhYmFzZSkKIHsKLSAgICBtX2NhbGxiYWNrcy0+b25VcGdyYWRl
TmVlZGVkKG9sZFZlcnNpb24sIG5ldyBXZWJJREJUcmFuc2FjdGlvbkltcGwodHJhbnNhY3Rpb24p
LCBuZXcgV2ViSURCRGF0YWJhc2VJbXBsKGRhdGFiYXNlKSk7CisgICAgQVNTRVJUKG1fZGF0YWJh
c2VDYWxsYmFja3MpOworICAgIG1fY2FsbGJhY2tzLT5vblVwZ3JhZGVOZWVkZWQob2xkVmVyc2lv
biwgbmV3IFdlYklEQlRyYW5zYWN0aW9uSW1wbCh0cmFuc2FjdGlvbiksIG5ldyBXZWJJREJEYXRh
YmFzZUltcGwoZGF0YWJhc2UsIG1fZGF0YWJhc2VDYWxsYmFja3MpKTsKK30KKwordm9pZCBJREJD
YWxsYmFja3NQcm94eTo6c2V0RGF0YWJhc2VDYWxsYmFja3MoUGFzc1JlZlB0cjxJREJEYXRhYmFz
ZUNhbGxiYWNrc1Byb3h5PiBkYXRhYmFzZUNhbGxiYWNrcykKK3sKKyAgICBBU1NFUlQoIW1fZGF0
YWJhc2VDYWxsYmFja3MpOworICAgIG1fZGF0YWJhc2VDYWxsYmFja3MgPSBkYXRhYmFzZUNhbGxi
YWNrczsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKKwogI2VuZGlmIC8vIEVOQUJMRShJ
TkRFWEVEX0RBVEFCQVNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
SURCQ2FsbGJhY2tzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkNhbGxi
YWNrc1Byb3h5LmgKaW5kZXggODI1NzU4YWFkZTkzZjQxZjI2MjkzMDM2OGJkOTY2NjBmZTUyYTUy
Ny4uZjYxM2E4NWMyZTRlZDE2Y2I4ODdmNjhhMDUwMzE4NDljYjFjZWYyMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ2FsbGJhY2tzUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJDYWxsYmFja3NQcm94eS5oCkBAIC0zOSw2ICszOSw3
IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViSURCQ2FsbGJhY2tzOworY2xhc3Mg
SURCRGF0YWJhc2VDYWxsYmFja3NQcm94eTsKIAogY2xhc3MgSURCQ2FsbGJhY2tzUHJveHkgOiBw
dWJsaWMgV2ViQ29yZTo6SURCQ2FsbGJhY2tzIHsKIHB1YmxpYzoKQEAgLTU5LDEwICs2MCwxMyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIG9uQmxvY2tlZChpbnQ2NF90IGV4aXN0aW5nVmVy
c2lvbik7CiAgICAgdmlydHVhbCB2b2lkIG9uVXBncmFkZU5lZWRlZChpbnQ2NF90IG9sZFZlcnNp
b24sIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiwg
UGFzc1JlZlB0cjxXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+KTsKIAorICAg
IHZvaWQgc2V0RGF0YWJhc2VDYWxsYmFja3MoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNr
c1Byb3h5Pik7CisKIHByaXZhdGU6CiAgICAgSURCQ2FsbGJhY2tzUHJveHkoUGFzc093blB0cjxX
ZWJJREJDYWxsYmFja3M+KTsKIAogICAgIE93blB0cjxXZWJJREJDYWxsYmFja3M+IG1fY2FsbGJh
Y2tzOworICAgIFJlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5PiBtX2RhdGFiYXNlQ2Fs
bGJhY2tzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94eS5jcHAKaW5kZXggNTZh
ZmU1ZmI1ZDJiNjJmYTQ0NDk5NTQ0NjkzMGEwMWQwYmM5Nzc5OC4uNTAxY2U2MWZiNTk1NjI2NmIw
YzNiZjFiNGMwMmFlZjZjZGEwMDgwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmNwcApAQCAtMTA3LDExICsxMDcsNiBA
QCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZFByb3h5OjpjbG9zZShQYXNzUmVmUHRyPElEQkRhdGFi
YXNlQ2FsbGJhY2tzPikKICAgICBtX3dlYklEQkRhdGFiYXNlLT5jbG9zZSgpOwogfQogCi12b2lk
IElEQkRhdGFiYXNlQmFja2VuZFByb3h5OjpyZWdpc3RlckZyb250ZW5kQ2FsbGJhY2tzKFBhc3NS
ZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IGRhdGFiYXNlQ2FsbGJhY2tzKQotewotICAgIG1f
d2ViSURCRGF0YWJhc2UtPm9wZW4obmV3IFdlYklEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbChkYXRh
YmFzZUNhbGxiYWNrcykpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8v
IEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmgKaW5kZXggMmE5MzYwMGM2ZjJmYTBjMjY3
YzJkYTA2ZmI4YjkyMTZmZDgyOGUzNi4uNzk1NjEwYWE2NTcyZGNhNDZjYzI2NGRiNWIwOGJkMTc4
YzFjNTY1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJh
c2VCYWNrZW5kUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRh
YmFzZUJhY2tlbmRQcm94eS5oCkBAIC01MCw4ICs1MCw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiB0cmFu
c2FjdGlvbihXZWJDb3JlOjpET01TdHJpbmdMaXN0KiBzdG9yZU5hbWVzLCB1bnNpZ25lZCBzaG9y
dCBtb2RlLCBXZWJDb3JlOjpFeGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVhbCB2b2lkIGNsb3Nl
KFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCRGF0YWJhc2VDYWxsYmFja3M+KTsKIAotICAgIHZpcnR1
YWwgdm9pZCByZWdpc3RlckZyb250ZW5kQ2FsbGJhY2tzKFBhc3NSZWZQdHI8V2ViQ29yZTo6SURC
RGF0YWJhc2VDYWxsYmFja3M+KTsKLQogcHJpdmF0ZToKICAgICBJREJEYXRhYmFzZUJhY2tlbmRQ
cm94eShQYXNzT3duUHRyPFdlYklEQkRhdGFiYXNlPik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL0lEQkZhY3RvcnlCYWNrZW5kUHJveHkuY3BwIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvSURCRmFjdG9yeUJhY2tlbmRQcm94eS5jcHAKaW5kZXggYmFiY2Jh
ZTE4NDA5YzVkZDI1OTJjMGRmZDkyMzMyNmZiZjYwZTk0YS4uMjg5OTVlYzY2MGUzMWZmN2NlZmFk
OTNlYjNiZGEyMzQxYWExZWZmOCAxMDA3NTUKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvSURCRmFjdG9yeUJhY2tlbmRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvSURCRmFjdG9yeUJhY2tlbmRQcm94eS5jcHAKQEAgLTM0LDEyICszNCwxNCBAQAogI2lu
Y2x1ZGUgIkNyb3NzVGhyZWFkVGFzay5oIgogI2luY2x1ZGUgIkRPTVN0cmluZ0xpc3QuaCIKICNp
bmNsdWRlICJJREJEYXRhYmFzZUJhY2tlbmRQcm94eS5oIgorI2luY2x1ZGUgIklEQkRhdGFiYXNl
Q2FsbGJhY2tzLmgiCiAjaW5jbHVkZSAiSURCRGF0YWJhc2VFcnJvci5oIgogI2luY2x1ZGUgIlNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2lu
Y2x1ZGUgIldlYkZyYW1lSW1wbC5oIgogI2luY2x1ZGUgIldlYklEQkNhbGxiYWNrc0ltcGwuaCIK
ICNpbmNsdWRlICJXZWJJREJEYXRhYmFzZS5oIgorI2luY2x1ZGUgIldlYklEQkRhdGFiYXNlQ2Fs
bGJhY2tzSW1wbC5oIgogI2luY2x1ZGUgIldlYklEQkRhdGFiYXNlRXJyb3IuaCIKICNpbmNsdWRl
ICJXZWJJREJGYWN0b3J5LmgiCiAjaW5jbHVkZSAiV2ViS2l0LmgiCkBAIC0yMDMsMTUgKzIwNSwx
NiBAQCB2b2lkIElEQkZhY3RvcnlCYWNrZW5kUHJveHk6OmdldERhdGFiYXNlTmFtZXMoUGFzc1Jl
ZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxiYQogfQogCiAKLXZvaWQgSURCRmFjdG9yeUJhY2tl
bmRQcm94eTo6b3Blbihjb25zdCBTdHJpbmcmIG5hbWUsIGludDY0X3QgdmVyc2lvbiwgUGFzc1Jl
ZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNrcywgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdp
bj4gc2VjdXJpdHlPcmlnaW4sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0
IFN0cmluZyYgZGF0YURpcikKK3ZvaWQgSURCRmFjdG9yeUJhY2tlbmRQcm94eTo6b3Blbihjb25z
dCBTdHJpbmcmIG5hbWUsIGludDY0X3QgdmVyc2lvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+
IHBycENhbGxiYWNrcywgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gcHJwRGF0YWJh
c2VDYWxsYmFja3MsIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luLCBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIGRhdGFEaXIpCiB7
CiAgICAgUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKHBycENhbGxiYWNrcyk7CisgICAg
UmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBkYXRhYmFzZUNhbGxiYWNrcyhwcnBEYXRhYmFz
ZUNhbGxiYWNrcyk7CiAgICAgV2ViU2VjdXJpdHlPcmlnaW4gb3JpZ2luKHNlY3VyaXR5T3JpZ2lu
KTsKICAgICBpZiAoIWFsbG93SW5kZXhlZERCKGNvbnRleHQsIG5hbWUsIG9yaWdpbiwgY2FsbGJh
Y2tzKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgV2ViRnJhbWVJbXBsKiB3ZWJGcmFtZSA9IGdl
dFdlYkZyYW1lKGNvbnRleHQpOwotICAgIG1fd2ViSURCRmFjdG9yeS0+b3BlbihuYW1lLCB2ZXJz
aW9uLCBuZXcgV2ViSURCQ2FsbGJhY2tzSW1wbChjYWxsYmFja3MpLCBvcmlnaW4sIHdlYkZyYW1l
LCBkYXRhRGlyKTsKKyAgICBtX3dlYklEQkZhY3RvcnktPm9wZW4obmFtZSwgdmVyc2lvbiwgbmV3
IFdlYklEQkNhbGxiYWNrc0ltcGwoY2FsbGJhY2tzKSwgbmV3IFdlYklEQkRhdGFiYXNlQ2FsbGJh
Y2tzSW1wbChkYXRhYmFzZUNhbGxiYWNrcyksIG9yaWdpbiwgd2ViRnJhbWUsIGRhdGFEaXIpOwog
fQogCiB2b2lkIElEQkZhY3RvcnlCYWNrZW5kUHJveHk6OmRlbGV0ZURhdGFiYXNlKGNvbnN0IFN0
cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNrcywgUGFzc1Jl
ZlB0cjxTZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW4sIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgZGF0YURpcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL0lEQkZhY3RvcnlCYWNrZW5kUHJveHkuaCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL0lEQkZhY3RvcnlCYWNrZW5kUHJveHkuaAppbmRleCBjMGRlOTEwYTky
Y2RlYTkxYTNkM2ExYzUzMGEyODA3YzVhYmZhYTdhLi44ODM4MGQ3YTQyZWQxMTczMDI5MzViZWJi
Y2FjY2ViNmY2ZTk3ZDc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9J
REJGYWN0b3J5QmFja2VuZFByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
SURCRmFjdG9yeUJhY2tlbmRQcm94eS5oCkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIH5JREJGYWN0b3J5QmFja2VuZFByb3h5KCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgZ2V0
RGF0YWJhc2VOYW1lcyhQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkNhbGxiYWNrcz4sIFBhc3NSZWZQ
dHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+LCBXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgY29uc3QgU3RyaW5nJiBkYXRhRGlyKTsKLSAgICB2aXJ0dWFsIHZvaWQgb3Blbihjb25z
dCBTdHJpbmcmIG5hbWUsIGludDY0X3QgdmVyc2lvbiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJD
YWxsYmFja3M+LCBQYXNzUmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiwgV2ViQ29yZTo6
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgZGF0YURpcik7CisgICAgdmly
dHVhbCB2b2lkIG9wZW4oY29uc3QgU3RyaW5nJiBuYW1lLCBpbnQ2NF90IHZlcnNpb24sIFBhc3NS
ZWZQdHI8V2ViQ29yZTo6SURCQ2FsbGJhY2tzPiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJEYXRh
YmFzZUNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+LCBXZWJD
b3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBkYXRhRGlyKTsKICAg
ICB2aXJ0dWFsIHZvaWQgZGVsZXRlRGF0YWJhc2UoY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVm
UHRyPFdlYkNvcmU6OklEQkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW4+LCBXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBk
YXRhRGlyKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYklEQkRhdGFiYXNlSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJJREJEYXRhYmFzZUltcGwuY3BwCmluZGV4IDBkMTQyYmMwMjkzYWExM2Y1YjE5MmMzZmRiYzU2
MzM3Y2RhYzc1N2QuLjUyODc5YTlhN2YzYjczODBhYmEzMDZlZDY3M2QwYzQyYTEyOGZjNDYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmNw
cApAQCAtNDUsOCArNDUsOSBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNl
IFdlYktpdCB7CiAKLVdlYklEQkRhdGFiYXNlSW1wbDo6V2ViSURCRGF0YWJhc2VJbXBsKFBhc3NS
ZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiBkYXRhYmFzZUJhY2tlbmQpCitXZWJJ
REJEYXRhYmFzZUltcGw6OldlYklEQkRhdGFiYXNlSW1wbChQYXNzUmVmUHRyPElEQkRhdGFiYXNl
QmFja2VuZEludGVyZmFjZT4gZGF0YWJhc2VCYWNrZW5kLCBXVEY6OlBhc3NSZWZQdHI8SURCRGF0
YWJhc2VDYWxsYmFja3NQcm94eT4gZGF0YWJhc2VDYWxsYmFja3MpCiAgICAgOiBtX2RhdGFiYXNl
QmFja2VuZChkYXRhYmFzZUJhY2tlbmQpCisgICAgLCBtX2RhdGFiYXNlQ2FsbGJhY2tzKGRhdGFi
YXNlQ2FsbGJhY2tzKQogICAgICwgbV9jbG9zZVBlbmRpbmcoZmFsc2UpCiB7CiB9CkBAIC05Myw3
ICs5NCw3IEBAIFdlYklEQlRyYW5zYWN0aW9uKiBXZWJJREJEYXRhYmFzZUltcGw6OnRyYW5zYWN0
aW9uKGNvbnN0IFdlYkRPTVN0cmluZ0xpc3QmIG5hbWVzCiAKIHZvaWQgV2ViSURCRGF0YWJhc2VJ
bXBsOjpjbG9zZSgpCiB7Ci0gICAgLy8gVXNlIHRoZSBjYWxsYmFja3MgdGhhdCA6Om9wZW4gZ2F2
ZSB1cyBzbyB0aGF0IHRoZSBiYWNrZW5kIGluCisgICAgLy8gVXNlIHRoZSBjYWxsYmFja3MgcGFz
c2VkIGluIHRvIHRoZSBjb25zdHJ1Y3RvciBzbyB0aGF0IHRoZSBiYWNrZW5kIGluCiAgICAgLy8g
bXVsdGktcHJvY2VzcyBjaHJvbWl1bSBrbm93cyB3aGljaCBkYXRhYmFzZSBjb25uZWN0aW9uIGlz
IGNsb3NpbmcuCiAgICAgaWYgKCFtX2RhdGFiYXNlQ2FsbGJhY2tzKSB7CiAgICAgICAgIG1fY2xv
c2VQZW5kaW5nID0gdHJ1ZTsKQEAgLTExMywxNSArMTE0LDYgQEAgdm9pZCBXZWJJREJEYXRhYmFz
ZUltcGw6OmZvcmNlQ2xvc2UoKQogICAgIGNhbGxiYWNrcy0+b25Gb3JjZWRDbG9zZSgpOwogfQog
Ci12b2lkIFdlYklEQkRhdGFiYXNlSW1wbDo6b3BlbihXZWJJREJEYXRhYmFzZUNhbGxiYWNrcyog
Y2FsbGJhY2tzKQotewotICAgIEFTU0VSVCghbV9kYXRhYmFzZUNhbGxiYWNrcyk7Ci0gICAgbV9k
YXRhYmFzZUNhbGxiYWNrcyA9IElEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHk6OmNyZWF0ZShhZG9w
dFB0cihjYWxsYmFja3MpKTsKLSAgICBtX2RhdGFiYXNlQmFja2VuZC0+cmVnaXN0ZXJGcm9udGVu
ZENhbGxiYWNrcyhtX2RhdGFiYXNlQ2FsbGJhY2tzKTsKLSAgICBpZiAobV9jbG9zZVBlbmRpbmcp
Ci0gICAgICAgIGNsb3NlKCk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYg
Ly8gRU5BQkxFKElOREVYRURfREFUQUJBU0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYklEQkRhdGFiYXNlSW1wbC5oCmluZGV4IDRhODI4NGNlNTlhZDFlNjM2Y2M0ZmJjOTcy
N2JjYjc3YTQyMmMzMGUuLjljZDFjYWY1OTIwNjliNTRkZmI5NmNjODc4NDRjMzc5NmRiM2EzMDcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlSW1w
bC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5o
CkBAIC00Nyw3ICs0Nyw3IEBAIGNsYXNzIFdlYklEQlRyYW5zYWN0aW9uOwogLy8gU2VlIGNvbW1l
bnQgaW4gV2ViSURCRmFjdG9yeSBmb3IgYSBoaWdoIGxldmVsIG92ZXJ2aWV3IHRoZXNlIGNsYXNz
ZXMuCiBjbGFzcyBXZWJJREJEYXRhYmFzZUltcGwgOiBwdWJsaWMgV2ViSURCRGF0YWJhc2Ugewog
cHVibGljOgotICAgIFdlYklEQkRhdGFiYXNlSW1wbChXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6
SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPik7CisgICAgV2ViSURCRGF0YWJhc2VJbXBsKFdU
Rjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+LCBXVEY6
OlBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3NQcm94eT4pOwogICAgIHZpcnR1YWwgfldl
YklEQkRhdGFiYXNlSW1wbCgpOwogCiAgICAgdmlydHVhbCBXZWJJREJNZXRhZGF0YSBtZXRhZGF0
YSgpIGNvbnN0OwpAQCAtNTksOSArNTksNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGZv
cmNlQ2xvc2UoKTsKICAgICB2aXJ0dWFsIHZvaWQgY2xvc2UoKTsKIAotICAgIC8vIEZJWE1FOiBS
ZW5hbWUgIm9wZW4iIHRvIHJlZ2lzdGVyRnJvbnRlbmRDYWxsYmFja3MuCi0gICAgdmlydHVhbCB2
b2lkIG9wZW4oV2ViSURCRGF0YWJhc2VDYWxsYmFja3MqKTsKLQogcHJpdmF0ZToKICAgICBXVEY6
OlJlZlB0cjxXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+IG1fZGF0YWJhc2VC
YWNrZW5kOwogICAgIFdURjo6UmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHk+IG1fZGF0
YWJhc2VDYWxsYmFja3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJJREJGYWN0b3J5SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJG
YWN0b3J5SW1wbC5jcHAKaW5kZXggYWQ3MTQ3NmI3ZWJiNDY4NmVhODI1Yjk2MjE5MTZlNjNiMjkw
YWM3Ny4uOTRhOGQ0NjhhOTBhOTBjNDEyYzdhYTZjOThhZWZiNzRiYjdhMzdiOCAxMDA3NTUKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRmFjdG9yeUltcGwuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkZhY3RvcnlJbXBsLmNwcApAQCAtMzUs
OCArMzUsMTAgQEAKIAogI2luY2x1ZGUgIkRPTVN0cmluZ0xpc3QuaCIKICNpbmNsdWRlICJJREJD
YWxsYmFja3NQcm94eS5oIgorI2luY2x1ZGUgIklEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHkuaCIK
ICNpbmNsdWRlICJJREJGYWN0b3J5QmFja2VuZEltcGwuaCIKICNpbmNsdWRlICJTZWN1cml0eU9y
aWdpbi5oIgorI2luY2x1ZGUgIldlYklEQkRhdGFiYXNlQ2FsbGJhY2tzLmgiCiAjaW5jbHVkZSAi
V2ViSURCRGF0YWJhc2VFcnJvci5oIgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KIApAQCAtNjMs
OSArNjUsMTIgQEAgdm9pZCBXZWJJREJGYWN0b3J5SW1wbDo6Z2V0RGF0YWJhc2VOYW1lcyhXZWJJ
REJDYWxsYmFja3MqIGNhbGxiYWNrcywgY29uc3QgV2ViU2UKICAgICBtX2lkYkZhY3RvcnlCYWNr
ZW5kLT5nZXREYXRhYmFzZU5hbWVzKElEQkNhbGxiYWNrc1Byb3h5OjpjcmVhdGUoYWRvcHRQdHIo
Y2FsbGJhY2tzKSksIG9yaWdpbiwgMCwgZGF0YURpcik7CiB9CiAKLXZvaWQgV2ViSURCRmFjdG9y
eUltcGw6Om9wZW4oY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBsb25nIGxvbmcgdmVyc2lvbiwgV2Vi
SURCQ2FsbGJhY2tzKiBjYWxsYmFja3MsIGNvbnN0IFdlYlNlY3VyaXR5T3JpZ2luJiBvcmlnaW4s
IFdlYkZyYW1lKiwgY29uc3QgV2ViU3RyaW5nJiBkYXRhRGlyKQordm9pZCBXZWJJREJGYWN0b3J5
SW1wbDo6b3Blbihjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGxvbmcgbG9uZyB2ZXJzaW9uLCBXZWJJ
REJDYWxsYmFja3MqIGNhbGxiYWNrcywgV2ViSURCRGF0YWJhc2VDYWxsYmFja3MqIGRhdGFiYXNl
Q2FsbGJhY2tzLCBjb25zdCBXZWJTZWN1cml0eU9yaWdpbiYgb3JpZ2luLCBXZWJGcmFtZSosIGNv
bnN0IFdlYlN0cmluZyYgZGF0YURpcikKIHsKLSAgICBtX2lkYkZhY3RvcnlCYWNrZW5kLT5vcGVu
KG5hbWUsIHZlcnNpb24sIElEQkNhbGxiYWNrc1Byb3h5OjpjcmVhdGUoYWRvcHRQdHIoY2FsbGJh
Y2tzKSkuZ2V0KCksIG9yaWdpbiwgMCwgZGF0YURpcik7CisgICAgUmVmUHRyPElEQkNhbGxiYWNr
c1Byb3h5PiBjYWxsYmFja3NQcm94eSA9IElEQkNhbGxiYWNrc1Byb3h5OjpjcmVhdGUoYWRvcHRQ
dHIoY2FsbGJhY2tzKSk7CisgICAgUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHk+IGRh
dGFiYXNlQ2FsbGJhY2tzUHJveHkgPSBJREJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5OjpjcmVhdGUo
YWRvcHRQdHIoZGF0YWJhc2VDYWxsYmFja3MpKTsKKyAgICBjYWxsYmFja3NQcm94eS0+c2V0RGF0
YWJhc2VDYWxsYmFja3MoZGF0YWJhc2VDYWxsYmFja3NQcm94eSk7CisgICAgbV9pZGJGYWN0b3J5
QmFja2VuZC0+b3BlbihuYW1lLCB2ZXJzaW9uLCBjYWxsYmFja3NQcm94eS5nZXQoKSwgZGF0YWJh
c2VDYWxsYmFja3NQcm94eS5nZXQoKSwgb3JpZ2luLCAwLCBkYXRhRGlyKTsKIH0KIAogdm9pZCBX
ZWJJREJGYWN0b3J5SW1wbDo6ZGVsZXRlRGF0YWJhc2UoY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBX
ZWJJREJDYWxsYmFja3MqIGNhbGxiYWNrcywgY29uc3QgV2ViU2VjdXJpdHlPcmlnaW4mIG9yaWdp
biwgV2ViRnJhbWUqLCBjb25zdCBXZWJTdHJpbmcmIGRhdGFEaXIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJGYWN0b3J5SW1wbC5oIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViSURCRmFjdG9yeUltcGwuaAppbmRleCA4MzNlZWI1OTEyNTliODUz
YzMyMWZkMTE4ZjA5NGE1YjhhN2M4ODY0Li4zM2Y1YTIxZDJjNzRmNThkZmY5NGUxZWI3YjkwZTVh
ZDQzMGQxNjI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJG
YWN0b3J5SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkZhY3Rv
cnlJbXBsLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfldlYklEQkZh
Y3RvcnlJbXBsKCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgZ2V0RGF0YWJhc2VOYW1lcyhXZWJJREJD
YWxsYmFja3MqLCBjb25zdCBXZWJTZWN1cml0eU9yaWdpbiYsIFdlYkZyYW1lKiwgY29uc3QgV2Vi
U3RyaW5nJiBkYXRhRGlyKTsKLSAgICB2aXJ0dWFsIHZvaWQgb3Blbihjb25zdCBXZWJTdHJpbmcm
IG5hbWUsIGxvbmcgbG9uZyB2ZXJzaW9uLCBXZWJJREJDYWxsYmFja3MqLCBjb25zdCBXZWJTZWN1
cml0eU9yaWdpbiYsIFdlYkZyYW1lKiwgY29uc3QgV2ViU3RyaW5nJiBkYXRhRGlyKTsKKyAgICB2
aXJ0dWFsIHZvaWQgb3Blbihjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGxvbmcgbG9uZyB2ZXJzaW9u
LCBXZWJJREJDYWxsYmFja3MqLCBXZWJJREJEYXRhYmFzZUNhbGxiYWNrcyosIGNvbnN0IFdlYlNl
Y3VyaXR5T3JpZ2luJiwgV2ViRnJhbWUqLCBjb25zdCBXZWJTdHJpbmcmIGRhdGFEaXIpOwogICAg
IHZpcnR1YWwgdm9pZCBkZWxldGVEYXRhYmFzZShjb25zdCBXZWJTdHJpbmcmIG5hbWUsIFdlYklE
QkNhbGxiYWNrcyosIGNvbnN0IFdlYlNlY3VyaXR5T3JpZ2luJiwgV2ViRnJhbWUqLCBjb25zdCBX
ZWJTdHJpbmcmIGRhdGFEaXIpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9JREJBYm9ydE9uQ29ycnVwdFRlc3QuY3BwIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9JREJBYm9ydE9uQ29ycnVwdFRlc3QuY3BwCmluZGV4IDFkMzk1MDk2
YWFkYjNhNWIzZGU5YjcwZGFiNjBmMzE4OWNmYmE5ODYuLmIwODBiZmM0ZGY1MWEyOThmNGZkYjVk
OWMyOGU3NzE3ZjQwZGFmMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvSURCQWJvcnRPbkNvcnJ1cHRUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0lEQkFib3J0T25Db3JydXB0VGVzdC5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlLmgiCiAj
aW5jbHVkZSAiSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmgiCisjaW5jbHVkZSAiSURCRGF0
YWJhc2VDYWxsYmFja3MuaCIKICNpbmNsdWRlICJJREJGYWN0b3J5QmFja2VuZEltcGwuaCIKICNp
bmNsdWRlICJJREJGYWtlQmFja2luZ1N0b3JlLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4u
aCIKQEAgLTk2LDE0ICs5NywyNiBAQCBwcm90ZWN0ZWQ6CiAgICAgfQogfTsKIAorY2xhc3MgRmFr
ZUlEQkRhdGFiYXNlQ2FsbGJhY2tzIDogcHVibGljIElEQkRhdGFiYXNlQ2FsbGJhY2tzIHsKK3B1
YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxGYWtlSURCRGF0YWJhc2VDYWxsYmFja3M+IGNy
ZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBGYWtlSURCRGF0YWJhc2VDYWxsYmFja3MoKSk7
IH0KKyAgICB2aXJ0dWFsIH5GYWtlSURCRGF0YWJhc2VDYWxsYmFja3MoKSB7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgb25WZXJzaW9uQ2hhbmdlKGNvbnN0IFN0cmluZyYgdmVyc2lvbikgT1ZFUlJJREUg
eyB9CisgICAgdmlydHVhbCB2b2lkIG9uVmVyc2lvbkNoYW5nZShpbnQ2NF90IG9sZFZlcnNpb24s
IGludDY0X3QgbmV3VmVyc2lvbikgT1ZFUlJJREUgeyB9CisgICAgdmlydHVhbCB2b2lkIG9uRm9y
Y2VkQ2xvc2UoKSBPVkVSUklERSB7IH0KK3ByaXZhdGU6CisgICAgRmFrZUlEQkRhdGFiYXNlQ2Fs
bGJhY2tzKCkgeyB9Cit9OworCiBURVNUKElEQkFib3J0VGVzdCwgVGhlVGVzdCkKIHsKICAgICBS
ZWZQdHI8SURCRmFjdG9yeUJhY2tlbmRJbXBsPiBmYWN0b3J5ID0gRmFpbGluZ0lEQkZhY3RvcnlC
YWNrZW5kSW1wbDo6Y3JlYXRlKCk7CiAgICAgY29uc3QgU3RyaW5nJiBuYW1lID0gImRiIG5hbWUi
OwogICAgIE1vY2tJREJDYWxsYmFja3MgY2FsbGJhY2tzOworICAgIFJlZlB0cjxGYWtlSURCRGF0
YWJhc2VDYWxsYmFja3M+IGRhdGFiYXNlQ2FsbGJhY2tzID0gRmFrZUlEQkRhdGFiYXNlQ2FsbGJh
Y2tzOjpjcmVhdGUoKTsKICAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG9yaWdpbiA9IFNlY3Vy
aXR5T3JpZ2luOjpjcmVhdGUoImh0dHAiLCAibG9jYWxob3N0IiwgODEpOwogICAgIGNvbnN0IGlu
dDY0X3QgRHVtbXlWZXJzaW9uID0gMjsKLSAgICBmYWN0b3J5LT5vcGVuKG5hbWUsIER1bW15VmVy
c2lvbiwgJmNhbGxiYWNrcywgb3JpZ2luLCAwIC8qRnJhbWUqLywgU3RyaW5nKCkgLypwYXRoKi8p
OworICAgIGZhY3RvcnktPm9wZW4obmFtZSwgRHVtbXlWZXJzaW9uLCAmY2FsbGJhY2tzLCBkYXRh
YmFzZUNhbGxiYWNrcywgb3JpZ2luLCAwIC8qRnJhbWUqLywgU3RyaW5nKCkgLypwYXRoKi8pOwog
fQogCiB9IC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9JREJEYXRhYmFzZUJhY2tlbmRUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvSURCRGF0YWJhc2VCYWNrZW5kVGVzdC5jcHAKaW5kZXggMWZhMmMyNjJkYjFkMTU1MWVm
ZDI1ODFhMWI3MmU2M2VkZDJlNzUwNS4uY2I5NDI0M2QwNmFmZjIwOTljOTlhOGVlNmJhNDYwZjVm
MzIxZGVlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJEYXRh
YmFzZUJhY2tlbmRUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lE
QkRhdGFiYXNlQmFja2VuZFRlc3QuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiSURC
QmFja2luZ1N0b3JlLmgiCiAjaW5jbHVkZSAiSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZS5oIgog
I2luY2x1ZGUgIklEQkRhdGFiYXNlQmFja2VuZEltcGwuaCIKKyNpbmNsdWRlICJJREJEYXRhYmFz
ZUNhbGxiYWNrc1Byb3h5LmgiCiAjaW5jbHVkZSAiSURCRmFjdG9yeUJhY2tlbmRJbXBsLmgiCiAj
aW5jbHVkZSAiSURCRmFrZUJhY2tpbmdTdG9yZS5oIgogI2luY2x1ZGUgIklEQkluZGV4QmFja2Vu
ZEltcGwuaCIKQEAgLTQwLDkgKzQxLDEwIEBACiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0Up
CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwordXNpbmcgV2ViS2l0OjpJREJEYXRhYmFzZUNh
bGxiYWNrc1Byb3h5OwogdXNpbmcgV2ViS2l0OjpXZWJJREJEYXRhYmFzZTsKLXVzaW5nIFdlYktp
dDo6V2ViSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsOwogdXNpbmcgV2ViS2l0OjpXZWJJREJEYXRh
YmFzZUltcGw7Cit1c2luZyBXZWJLaXQ6OldlYklEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbDsKIAog
bmFtZXNwYWNlIHsKIApAQCAtMTIyLDIwICsxMjQsMTYgQEAgVEVTVChJREJEYXRhYmFzZUJhY2tl
bmRUZXN0LCBDb25uZWN0aW9uTGlmZWN5Y2xlKQogICAgIEVYUEVDVF9HVChiYWNraW5nU3RvcmUt
PnJlZkNvdW50KCksIDEpOwogCiAgICAgUmVmUHRyPE1vY2tJREJDYWxsYmFja3M+IHJlcXVlc3Qx
ID0gTW9ja0lEQkNhbGxiYWNrczo6Y3JlYXRlKCk7Ci0gICAgZGItPm9wZW5Db25uZWN0aW9uKHJl
cXVlc3QxKTsKLQogICAgIFJlZlB0cjxGYWtlSURCRGF0YWJhc2VDYWxsYmFja3M+IGNvbm5lY3Rp
b24xID0gRmFrZUlEQkRhdGFiYXNlQ2FsbGJhY2tzOjpjcmVhdGUoKTsKLSAgICBkYi0+cmVnaXN0
ZXJGcm9udGVuZENhbGxiYWNrcyhjb25uZWN0aW9uMSk7CisgICAgZGItPm9wZW5Db25uZWN0aW9u
KHJlcXVlc3QxLCBjb25uZWN0aW9uMSk7CiAKICAgICBSZWZQdHI8TW9ja0lEQkNhbGxiYWNrcz4g
cmVxdWVzdDIgPSBNb2NrSURCQ2FsbGJhY2tzOjpjcmVhdGUoKTsKLSAgICBkYi0+b3BlbkNvbm5l
Y3Rpb24ocmVxdWVzdDIpOworICAgIFJlZlB0cjxGYWtlSURCRGF0YWJhc2VDYWxsYmFja3M+IGNv
bm5lY3Rpb24yID0gRmFrZUlEQkRhdGFiYXNlQ2FsbGJhY2tzOjpjcmVhdGUoKTsKKyAgICBkYi0+
b3BlbkNvbm5lY3Rpb24ocmVxdWVzdDIsIGNvbm5lY3Rpb24yKTsKIAogICAgIGRiLT5jbG9zZShj
b25uZWN0aW9uMSk7CiAgICAgRVhQRUNUX0dUKGJhY2tpbmdTdG9yZS0+cmVmQ291bnQoKSwgMSk7
CiAKLSAgICBSZWZQdHI8RmFrZUlEQkRhdGFiYXNlQ2FsbGJhY2tzPiBjb25uZWN0aW9uMiA9IEZh
a2VJREJEYXRhYmFzZUNhbGxiYWNrczo6Y3JlYXRlKCk7Ci0gICAgZGItPnJlZ2lzdGVyRnJvbnRl
bmRDYWxsYmFja3MoY29ubmVjdGlvbjIpOwotCiAgICAgZGItPmNsb3NlKGNvbm5lY3Rpb24yKTsK
ICAgICBFWFBFQ1RfVFJVRShiYWNraW5nU3RvcmUtPmhhc09uZVJlZigpKTsKIH0KQEAgLTE0OSw3
ICsxNDcsNyBAQCBwdWJsaWM6CiAKICAgICB+TW9ja0lEQkRhdGFiYXNlQmFja2VuZFByb3h5KCkK
ICAgICB7Ci0gICAgICAgIEVYUEVDVF9UUlVFKG1fd2FzUmVnaXN0ZXJGcm9udGVuZENhbGxiYWNr
c0NhbGxlZCk7CisgICAgICAgIEVYUEVDVF9UUlVFKG1fd2FzQ2xvc2VDYWxsZWQpOwogICAgIH0K
IAogICAgIHZpcnR1YWwgSURCRGF0YWJhc2VNZXRhZGF0YSBtZXRhZGF0YSgpIGNvbnN0IHsgcmV0
dXJuIElEQkRhdGFiYXNlTWV0YWRhdGEoKTsgfQpAQCAtMTYzLDE5ICsxNjEsMTIgQEAgcHVibGlj
OgogICAgICAgICBtX3dhc0Nsb3NlQ2FsbGVkID0gdHJ1ZTsKICAgICAgICAgbV93ZWJEYXRhYmFz
ZS5jbG9zZSgpOwogICAgIH0KLSAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJGcm9udGVuZENhbGxi
YWNrcyhQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBjb25uZWN0aW9uKQotICAgIHsK
LSAgICAgICAgbV93YXNSZWdpc3RlckZyb250ZW5kQ2FsbGJhY2tzQ2FsbGVkID0gdHJ1ZTsKLSAg
ICAgICAgbV93ZWJEYXRhYmFzZS5vcGVuKG5ldyBXZWJJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwo
Y29ubmVjdGlvbikpOwotICAgIH0KIAogcHJpdmF0ZToKICAgICBNb2NrSURCRGF0YWJhc2VCYWNr
ZW5kUHJveHkoV2ViSURCRGF0YWJhc2VJbXBsJiB3ZWJEYXRhYmFzZSkKLSAgICAgICAgOiBtX3dh
c1JlZ2lzdGVyRnJvbnRlbmRDYWxsYmFja3NDYWxsZWQoZmFsc2UpCi0gICAgICAgICwgbV93YXND
bG9zZUNhbGxlZChmYWxzZSkKKyAgICAgICAgOiBtX3dhc0Nsb3NlQ2FsbGVkKGZhbHNlKQogICAg
ICAgICAsIG1fd2ViRGF0YWJhc2Uod2ViRGF0YWJhc2UpIHsgfQogCi0gICAgYm9vbCBtX3dhc1Jl
Z2lzdGVyRnJvbnRlbmRDYWxsYmFja3NDYWxsZWQ7CiAgICAgYm9vbCBtX3dhc0Nsb3NlQ2FsbGVk
OwogCiAgICAgV2ViSURCRGF0YWJhc2VJbXBsJiBtX3dlYkRhdGFiYXNlOwpAQCAtMTkxLDE4ICsx
ODIsMTkgQEAgVEVTVChJREJEYXRhYmFzZUJhY2tlbmRUZXN0LCBGb3JjZWRDbG9zZSkKICAgICBS
ZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW1wbD4gYmFja2VuZCA9IElEQkRhdGFiYXNlQmFja2Vu
ZEltcGw6OmNyZWF0ZSgiZGIiLCBiYWNraW5nU3RvcmUuZ2V0KCksIGNvb3JkaW5hdG9yLCBmYWN0
b3J5LCAidW5pcXVlaWQiKTsKICAgICBFWFBFQ1RfR1QoYmFja2luZ1N0b3JlLT5yZWZDb3VudCgp
LCAxKTsKIAotICAgIFdlYklEQkRhdGFiYXNlSW1wbCB3ZWJEYXRhYmFzZShiYWNrZW5kKTsKLQot
ICAgIFJlZlB0cjxNb2NrSURCQ2FsbGJhY2tzPiByZXF1ZXN0MSA9IE1vY2tJREJDYWxsYmFja3M6
OmNyZWF0ZSgpOwotICAgIGJhY2tlbmQtPm9wZW5Db25uZWN0aW9uKHJlcXVlc3QxKTsKKyAgICBS
ZWZQdHI8RmFrZUlEQkRhdGFiYXNlQ2FsbGJhY2tzPiBjb25uZWN0aW9uID0gRmFrZUlEQkRhdGFi
YXNlQ2FsbGJhY2tzOjpjcmVhdGUoKTsKKyAgICBSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3NQ
cm94eT4gY29ubmVjdGlvblByb3h5ID0gSURCRGF0YWJhc2VDYWxsYmFja3NQcm94eTo6Y3JlYXRl
KGFkb3B0UHRyKG5ldyBXZWJJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwoY29ubmVjdGlvbikpKTsK
KyAgICBXZWJJREJEYXRhYmFzZUltcGwgd2ViRGF0YWJhc2UoYmFja2VuZCwgY29ubmVjdGlvblBy
b3h5KTsKIAogICAgIFJlZlB0cjxNb2NrSURCRGF0YWJhc2VCYWNrZW5kUHJveHk+IHByb3h5ID0g
TW9ja0lEQkRhdGFiYXNlQmFja2VuZFByb3h5OjpjcmVhdGUod2ViRGF0YWJhc2UpOworICAgIFJl
ZlB0cjxNb2NrSURCQ2FsbGJhY2tzPiByZXF1ZXN0ID0gTW9ja0lEQkNhbGxiYWNrczo6Y3JlYXRl
KCk7CisgICAgYmFja2VuZC0+b3BlbkNvbm5lY3Rpb24ocmVxdWVzdCwgY29ubmVjdGlvblByb3h5
KTsKIAogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQgPSAwOwotICAgIFJlZlB0
cjxJREJEYXRhYmFzZT4gaWRiRGF0YWJhc2UgPSBJREJEYXRhYmFzZTo6Y3JlYXRlKGNvbnRleHQs
IHByb3h5KTsKLSAgICBpZGJEYXRhYmFzZS0+cmVnaXN0ZXJGcm9udGVuZENhbGxiYWNrcygpOwor
ICAgIFJlZlB0cjxJREJEYXRhYmFzZT4gaWRiRGF0YWJhc2UgPSBJREJEYXRhYmFzZTo6Y3JlYXRl
KGNvbnRleHQsIHByb3h5LCBjb25uZWN0aW9uKTsKIAogICAgIHdlYkRhdGFiYXNlLmZvcmNlQ2xv
c2UoKTsKKwogICAgIEVYUEVDVF9UUlVFKGJhY2tpbmdTdG9yZS0+aGFzT25lUmVmKCkpOwogfQog
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>163994</attachid>
            <date>2012-09-13 16:22:13 -0700</date>
            <delta_ts>2012-09-13 17:28:17 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-90411-20120913162146.patch</filename>
            <type>text/plain</type>
            <size>68888</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI4NTI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzE1MmM5NzYzMmJjMmQy
YzZkZjU1N2YwMzZjZDQ0YzFmOTk1MzgzZC4uMzMwZjllZmJjYjA2YjMyYjYyMTUzNmJkMjExNjA1
MjU1YzI0YmViNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgxIEBACisyMDEyLTA5LTA2ICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBDb25z
b2xpZGF0ZSB0d28tcGhhc2UgY29ubmVjdGlvbiB0byBhdm9pZCByYWNlIGNvbmRpdGlvbnMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkwNDExCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgVG9ueSBDaGFuZy4KKworICAgICAgICBQcmV2aW91c2x5LCBJREIg
Y29ubmVjdGlvbnMgd2VyZSBvcGVuZWQgYnkgaGF2aW5nIHRoZSBmcm9udC1lbmQgKDEpIGNhbGwg
dGhyb3VnaCB0bworICAgICAgICBhIGJhY2stZW5kIG9wZW4oKSBtZXRob2QsIGV2ZW50dWFsbHkg
cmVjZWl2ZSBhIHN1Y2Nlc3MgbWVzc2FnZSB3aXRoIGEgYmFjay1lbmQgb2JqZWN0CisgICAgICAg
IGhhbmRsZSwgYW5kICgyKSBjYWxsIGludG8gdGhlIGJhY2stZW5kIG9iamVjdCB0byByZWdpc3Rl
ciBmcm9udC1lbmQgY2FsbGJhY2tzLiBUaGlzIGxlZnQKKyAgICAgICAgdGhlIGJhY2stZW5kJ3Mg
bm90aW9uIG9mIGFuIG9wZW4gY29ubmVjdGlvbiBpbiBhIGxpbWJvIHN0YXRlIGJldHdlZW4gdGhl
c2UgdHdvIGNhbGxzLgorICAgICAgICBJbiBtdWx0aS1wcm9jZXNzIHBvcnRzLCBhIGNyYXNoIG9m
IHRoZSBmcm9udC1lbmQgcHJvY2VzcyBjb3VsZCBsZWF2ZSB0aGUgYmFjay1lbmQgd2VkZ2VkCisg
ICAgICAgIHdhaXRpbmcgZm9yIHRoaXMgc2Vjb25kIGNhbGwgKGUuZy4gY2FuJ3QgZGVsZXRlIHVu
dGlsIGFsbCBjb25uZWN0aW9ucyBhcmUgY2xvc2VkKS4KKworICAgICAgICBTaW1wbGlmeSB0aGlz
IGJ5IGhhdmluZyB0aGUgZnJvbnQtZW5kIHBhc3MgdGhyb3VnaCB0aGUgY2FsbGJhY2tzIGludG8g
dGhlIGJhY2stZW5kCisgICAgICAgIGR1cmluZyB0aGUgaW5pdGlhbCBvcGVuKCkgY2FsbCwgd2hp
Y2ggZWxpbWluYXRlcyB0aGUgbGltYm8gc3RhdGUuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIC0g
bm8gZnVuY3Rpb25hbCBjaGFuZ2VzLiBDaHJvbWl1bSBwb3J0J3Mgd2Via2l0X3VuaXRfdGVzdHMg
dXBkYXRlZC4KKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCRGF0YWJhc2U6OklEQkRhdGFiYXNlKTogRGItY2FsbGJhY2tzIGlzIGF2YWlsYWJsZSBh
dCBjcmVhdGlvbiB0aW1lLgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2U6On5JREJEYXRh
YmFzZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuaDoKKyAgICAg
ICAgKElEQkRhdGFiYXNlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFz
ZUJhY2tlbmRJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZElt
cGw6OlBlbmRpbmdPcGVuQ2FsbDo6Y3JlYXRlKTogTmVlZCB0byB0cmFjayBkYi1jYWxsYmFja3Mg
YXMgd2VsbC4KKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OlBlbmRp
bmdPcGVuQ2FsbDo6ZGF0YWJhc2VDYWxsYmFja3MpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0
YWJhc2VCYWNrZW5kSW1wbDo6UGVuZGluZ09wZW5DYWxsOjpQZW5kaW5nT3BlbkNhbGwpOgorICAg
ICAgICAoSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6UGVuZGluZ09wZW5DYWxsKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OlBlbmRpbmdPcGVuV2l0aFZlcnNpb25D
YWxsOjpjcmVhdGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2Vu
ZEltcGw6OlBlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxsOjpkYXRhYmFzZUNhbGxiYWNrcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpQZW5kaW5nT3BlbldpdGhW
ZXJzaW9uQ2FsbDo6UGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGwpOgorICAgICAgICAoSURCRGF0
YWJhc2VCYWNrZW5kSW1wbDo6UGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGwpOgorICAgICAgICAo
V2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbCk6
CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpzZXRWZXJzaW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNvbm5lY3Rpb25Db3Vu
dCk6IERvbid0IG5lZWQgdG8gY291bnQgbGltYm8gY29ubmVjdGlvbnMgYW55IG1vcmUuCisgICAg
ICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpwcm9jZXNzUGVuZGluZ0NhbGxz
KTogUGFzcyB0aHJvdWdoIGRiLWNhbGxiYWNrcy4KKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFi
YXNlQmFja2VuZEltcGw6Om9wZW5Db25uZWN0aW9uKTogTm8gbW9yZSBsaW1ibyBjb25uZWN0aW9u
cyAoeWF5ISkuCisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpydW5J
bnRWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24pOiBQYXNzIHRocm91Z2ggZGItY2FsbGJhY2tzLgor
ICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6b3BlbkNvbm5lY3Rpb25X
aXRoVmVyc2lvbik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5k
SW1wbDo6ZGVsZXRlRGF0YWJhc2UpOiBTdHlsZS4KKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFi
YXNlQmFja2VuZEltcGw6OmNsb3NlKTogUmVzb2x2ZSBGSVhNRSBhYm91dCBjb25uZWN0aW9uQ291
bnQuCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5o
OgorICAgICAgICAoSURCRGF0YWJhc2VCYWNrZW5kSW1wbCk6CisgICAgICAgICogTW9kdWxlcy9p
bmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmg6CisgICAgICAgIChJREJEYXRh
YmFzZUJhY2tlbmRJbnRlcmZhY2UpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRh
dGFiYXNlQ2FsbGJhY2tzSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUNh
bGxiYWNrc0ltcGw6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUNhbGxi
YWNrc0ltcGw6OklEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJ
REJEYXRhYmFzZUNhbGxiYWNrc0ltcGw6OmNvbm5lY3QpOgorICAgICAgICAqIE1vZHVsZXMvaW5k
ZXhlZGRiL0lEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbC5oOgorICAgICAgICAoSURCRGF0YWJhc2VD
YWxsYmFja3NJbXBsKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkZhY3Rvcnk6Om9wZW4pOiBNaW50IHRoZSBkYi1jYWxs
YmFja3MgaGVyZS4uLgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnlCYWNr
ZW5kSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJGYWN0b3J5QmFja2VuZEltcGw6Om9w
ZW4pOiAuLi5wYXNzZWQgdGhyb3VnaCB0byBoZXJlLi4uCisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJbXBsLmg6CisgICAgICAgIChJREJGYWN0b3J5QmFja2Vu
ZEltcGwpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnlCYWNrZW5kSW50
ZXJmYWNlLmg6CisgICAgICAgIChJREJGYWN0b3J5QmFja2VuZEludGVyZmFjZSk6CisgICAgICAg
ICogTW9kdWxlcy9pbmRleGVkZGIvSURCT3BlbkRCUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJREJPcGVuREJSZXF1ZXN0OjpjcmVhdGUpOiAuLi5hbGwgdGhlIHdheSB0byBoZXJlLi4u
CisgICAgICAgIChXZWJDb3JlOjpJREJPcGVuREJSZXF1ZXN0OjpJREJPcGVuREJSZXF1ZXN0KToK
KyAgICAgICAgKFdlYkNvcmU6OklEQk9wZW5EQlJlcXVlc3Q6Om9uVXBncmFkZU5lZWRlZCk6IC4u
LmFuZCBmaW5hbGx5IGhvb2tlZCB1cCBoZXJlLgorICAgICAgICAoV2ViQ29yZTo6SURCT3BlbkRC
UmVxdWVzdDo6b25TdWNjZXNzKTogKG9yIGhlcmUsIGlmIG5vIHVwZ3JhZGUgbmVlZGVkKS4KKyAg
ICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJPcGVuREJSZXF1ZXN0Lmg6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKElEQk9wZW5EQlJlcXVlc3QpOgorICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5z
YWN0aW9uOjpvbkFib3J0KTogVHdlYWsgZXZlbnQvbm90aWZpY2F0aW9uIG9yZGVyaW5nOyB0aGUK
KyAgICAgICAgbm90aWZ5aW5nIHRoZSBkYXRhYmFzZSB0aGF0IHRoZSB0cmFuc2FjdGlvbiBpcyBm
aW5pc2hlZCBtYXkgdW5ibG9jayBjbG9zaW5nLAorICAgICAgICB3aGljaCBmaXJlcyBtb3JlIGV2
ZW50cywgYW5kIHRoZSBkZWxpdmVyeSBtYXR0ZXJzLiBQcmV2aW91c2x5IHRoZSBjbG9zZSB3b3Vs
ZAorICAgICAgICBiZSBibG9ja2VkIGJ5IHRoZSB0cmFuc2FjdGlvbiB3aGljaCBnYXZlIHRoZSBk
ZXNpcmVkIG9yZGVyLgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246Om9uQ29tcGxl
dGUpOiBEaXR0by4KKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQu
Y3BwOiBOZXcgaG9va3VwIGxvZ2ljLgorICAgICAgICAoV2ViQ29yZSk6CisKIDIwMTItMDktMTMg
IFRvbSBTZXBleiAgPHRzZXBlekBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQVNTRVJUKCFldmVu
dERpc3BhdGNoRm9yYmlkZGVuKCkpIGZpcmVzIHdoZW4gcmVtb3ZlZCBwbHVnaW4gcmUtaW5zZXJ0
ZWQgYXMgcGFydCBvZiByZWFkeVN0YXRlQ2hhbmdlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpp
bmRleCAyZTUwMWEwMjYzZjhmNTdlNmQ1MzhmNzdmZjgxMmE1Y2E0MDg2NjRhLi4wMzMzZTc1NjMw
MTc2MzhmMzRiNDRmMTljOTNiODk0ZmI1MWY0ZTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDUzIEBACisyMDEyLTA5LTA2ICBKb3NodWEgQmVsbCAgPGpzYmVsbEBjaHJv
bWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBDb25zb2xpZGF0ZSB0d28tcGhhc2UgY29u
bmVjdGlvbiB0byBhdm9pZCByYWNlIGNvbmRpdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkwNDExCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVG9u
eSBDaGFuZy4KKworICAgICAgICBBUEkgcGx1bWJpbmcgZm9yIHNpbXBsaWZpZWQgc2luZ2xlLXBo
YXNlIGNvbm5lY3Rpb24gb3BlbmluZywgYW5kIHRlc3RzIHVwZGF0ZWQKKyAgICAgICAgdG8gZXhl
cmNpc2UgdGhlIG5ldyBBUElzLgorCisgICAgICAgICogcHVibGljL1dlYklEQkRhdGFiYXNlLmg6
CisgICAgICAgIChXZWJJREJEYXRhYmFzZSk6IEp1c3QgYSBGSVhNRSB0byByZW1vdmUgdGhlIG9s
ZCBzZWNvbmQtcGhhc2UgaG9va3VwIEFQSS4KKyAgICAgICAgKiBwdWJsaWMvV2ViSURCRmFjdG9y
eS5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYklEQkZhY3RvcnkpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJJREJGYWN0b3J5OjpvcGVuKTogTmV3IG92ZXJsb2FkIHRoYXQgdGFrZXMg
ZGItY2FsbGJhY2tzLgorICAgICAgICAqIHNyYy9JREJDYWxsYmFja3NQcm94eS5jcHA6IFRoZSBk
Yi1jYWxsYmFja3MgcGx1bWJpbmcgaXMgbmVlZGVkIGVhcmxpZXIuCisgICAgICAgIChXZWJLaXQ6
OklEQkNhbGxiYWNrc1Byb3h5OjpvblN1Y2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpJREJDYWxs
YmFja3NQcm94eTo6b25VcGdyYWRlTmVlZGVkKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAg
IChXZWJLaXQ6OklEQkNhbGxiYWNrc1Byb3h5OjpzZXREYXRhYmFzZUNhbGxiYWNrcyk6IE5lZWRz
IHRvIGhvbGQgb24gdG8KKyAgICAgICAgdGhlIGRiLWNhbGxiYWNrcyBhbmQgaG9vayBpdCB1cCB3
aGVuIHRoZSBvblN1Y2Nlc3MgY2FsbGJhY2sgY29tZXMgdGhyb3VnaC4KKyAgICAgICAgKiBzcmMv
SURCQ2FsbGJhY2tzUHJveHkuaDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChJREJDYWxs
YmFja3NQcm94eSk6CisgICAgICAgICogc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmNwcDoK
KyAgICAgICAgKiBzcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuaDoKKyAgICAgICAgKElEQkRh
dGFiYXNlQmFja2VuZFByb3h5KToKKyAgICAgICAgKiBzcmMvSURCRmFjdG9yeUJhY2tlbmRQcm94
eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OklEQkZhY3RvcnlCYWNrZW5kUHJveHk6Om9wZW4pOgor
ICAgICAgICAqIHNyYy9JREJGYWN0b3J5QmFja2VuZFByb3h5Lmg6CisgICAgICAgIChJREJGYWN0
b3J5QmFja2VuZFByb3h5KToKKyAgICAgICAgKiBzcmMvV2ViSURCRGF0YWJhc2VJbXBsLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViSURCRGF0YWJhc2VJbXBsOjpXZWJJREJEYXRhYmFzZUltcGwp
OgorICAgICAgICAoV2ViS2l0OjpXZWJJREJEYXRhYmFzZUltcGw6OmNsb3NlKToKKyAgICAgICAg
KiBzcmMvV2ViSURCRGF0YWJhc2VJbXBsLmg6CisgICAgICAgIChXZWJJREJEYXRhYmFzZUltcGwp
OgorICAgICAgICAqIHNyYy9XZWJJREJGYWN0b3J5SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYklEQkZhY3RvcnlJbXBsOjpvcGVuKToKKyAgICAgICAgKiBzcmMvV2ViSURCRmFjdG9yeUlt
cGwuaDoKKyAgICAgICAgKFdlYklEQkZhY3RvcnlJbXBsKToKKyAgICAgICAgKiB0ZXN0cy9JREJB
Ym9ydE9uQ29ycnVwdFRlc3QuY3BwOgorICAgICAgICAoRmFrZUlEQkRhdGFiYXNlQ2FsbGJhY2tz
KToKKyAgICAgICAgKFdlYkNvcmU6OkZha2VJREJEYXRhYmFzZUNhbGxiYWNrczo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkZha2VJREJEYXRhYmFzZUNhbGxiYWNrczo6fkZha2VJREJEYXRh
YmFzZUNhbGxiYWNrcyk6CisgICAgICAgIChXZWJDb3JlOjpGYWtlSURCRGF0YWJhc2VDYWxsYmFj
a3M6OkZha2VJREJEYXRhYmFzZUNhbGxiYWNrcyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRFU1QpOiBVcGRhdGVkIGNvbm5lY3Rpb24gc2VxdWVuY2UuCisgICAgICAg
ICogdGVzdHMvSURCRGF0YWJhc2VCYWNrZW5kVGVzdC5jcHA6IERpdHRvLgorCiAyMDEyLTA5LTEz
ICBKYW1lcyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgRml4IGNv
bXBpbGUgd2FybmluZy9lcnJvciBvbiB3aW5kb3dzIC0gbGl0ZXJhbCB0aGF0IGlzbid0IGV4YWN0
bHkgcmVwcmVzZW50YWJsZSBhcyBhIGZsb2F0IG5lZWRzICJmIiBzdWZmaXguCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHAKaW5kZXggYjNmNzBh
ZGQyOTMyY2UxNTk3ZWNhMDU1YWVkMWVlZjA3MGNkNWRhNy4uZDY0MWQwNGE0MzZlMWZmZjVmNjQx
ODRmZDgzNDJmNDJkNWMwMzc0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkRhdGFiYXNlLmNwcApAQCAtMzEsNyArMzEsNyBAQAogI2luY2x1ZGUgIkV2ZW50
UXVldWUuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiSURCQW55Lmgi
Ci0jaW5jbHVkZSAiSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsLmgiCisjaW5jbHVkZSAiSURCRGF0
YWJhc2VDYWxsYmFja3MuaCIKICNpbmNsdWRlICJJREJEYXRhYmFzZUVycm9yLmgiCiAjaW5jbHVk
ZSAiSURCRGF0YWJhc2VFeGNlcHRpb24uaCIKICNpbmNsdWRlICJJREJFdmVudERpc3BhdGNoZXIu
aCIKQEAgLTUwLDI5ICs1MCwyOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NSZWZQ
dHI8SURCRGF0YWJhc2U+IElEQkRhdGFiYXNlOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogY29udGV4dCwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+IGRhdGFi
YXNlKQorUGFzc1JlZlB0cjxJREJEYXRhYmFzZT4gSURCRGF0YWJhc2U6OmNyZWF0ZShTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZElu
dGVyZmFjZT4gZGF0YWJhc2UsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IGNhbGxi
YWNrcykKIHsKLSAgICBSZWZQdHI8SURCRGF0YWJhc2U+IGlkYkRhdGFiYXNlKGFkb3B0UmVmKG5l
dyBJREJEYXRhYmFzZShjb250ZXh0LCBkYXRhYmFzZSkpKTsKKyAgICBSZWZQdHI8SURCRGF0YWJh
c2U+IGlkYkRhdGFiYXNlKGFkb3B0UmVmKG5ldyBJREJEYXRhYmFzZShjb250ZXh0LCBkYXRhYmFz
ZSwgY2FsbGJhY2tzKSkpOwogICAgIGlkYkRhdGFiYXNlLT5zdXNwZW5kSWZOZWVkZWQoKTsKICAg
ICByZXR1cm4gaWRiRGF0YWJhc2UucmVsZWFzZSgpOwogfQogCi1JREJEYXRhYmFzZTo6SURCRGF0
YWJhc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJREJEYXRh
YmFzZUJhY2tlbmRJbnRlcmZhY2U+IGJhY2tlbmQpCitJREJEYXRhYmFzZTo6SURCRGF0YWJhc2Uo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJh
Y2tlbmRJbnRlcmZhY2U+IGJhY2tlbmQsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+
IGNhbGxiYWNrcykKICAgICA6IEFjdGl2ZURPTU9iamVjdChjb250ZXh0LCB0aGlzKQogICAgICwg
bV9iYWNrZW5kKGJhY2tlbmQpCiAgICAgLCBtX2Nsb3NlUGVuZGluZyhmYWxzZSkKICAgICAsIG1f
Y29udGV4dFN0b3BwZWQoZmFsc2UpCisgICAgLCBtX2RhdGFiYXNlQ2FsbGJhY2tzKGNhbGxiYWNr
cykKIHsKICAgICAvLyBXZSBwYXNzIGEgcmVmZXJlbmNlIG9mIHRoaXMgb2JqZWN0IGJlZm9yZSBp
dCBjYW4gYmUgYWRvcHRlZC4KICAgICByZWxheEFkb3B0aW9uUmVxdWlyZW1lbnQoKTsKLSAgICBt
X2RhdGFiYXNlQ2FsbGJhY2tzID0gSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsOjpjcmVhdGUodGhp
cyk7CiAgICAgbV9tZXRhZGF0YSA9IG1fYmFja2VuZC0+bWV0YWRhdGEoKTsKIH0KIAogSURCRGF0
YWJhc2U6On5JREJEYXRhYmFzZSgpCiB7CiAgICAgY2xvc2UoKTsKLSAgICBtX2RhdGFiYXNlQ2Fs
bGJhY2tzLT51bnJlZ2lzdGVyRGF0YWJhc2UodGhpcyk7CiB9CiAKIHZvaWQgSURCRGF0YWJhc2U6
OnRyYW5zYWN0aW9uQ3JlYXRlZChJREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24pCkBAIC0zMzUs
MTIgKzMzNCw2IEBAIHZvaWQgSURCRGF0YWJhc2U6Om9uVmVyc2lvbkNoYW5nZShjb25zdCBTdHJp
bmcmIHZlcnNpb24pCiAgICAgZW5xdWV1ZUV2ZW50KElEQlZlcnNpb25DaGFuZ2VFdmVudDo6Y3Jl
YXRlKHZlcnNpb24sIGV2ZW50TmFtZXMoKS52ZXJzaW9uY2hhbmdlRXZlbnQpKTsKIH0KIAotdm9p
ZCBJREJEYXRhYmFzZTo6cmVnaXN0ZXJGcm9udGVuZENhbGxiYWNrcygpCi17Ci0gICAgQVNTRVJU
KG1fYmFja2VuZCk7Ci0gICAgbV9iYWNrZW5kLT5yZWdpc3RlckZyb250ZW5kQ2FsbGJhY2tzKG1f
ZGF0YWJhc2VDYWxsYmFja3MpOwotfQotCiB2b2lkIElEQkRhdGFiYXNlOjplbnF1ZXVlRXZlbnQo
UGFzc1JlZlB0cjxFdmVudD4gZXZlbnQpCiB7CiAgICAgQVNTRVJUKCFtX2NvbnRleHRTdG9wcGVk
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFi
YXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5oCmlu
ZGV4IDI3ZjAzYjZlMzU0OGE4MDBmNDFhM2ZhZTU4NjAxNzljODdmZDcyY2QuLjRkZWIyN2E2OGI3
NmI3ZTA1MzQ2NmViNmJiNGFhMjhjZGJhYjY2ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuaApAQCAtMzIsNyArMzIsNyBAQAogI2luY2x1ZGUg
IkV2ZW50LmgiCiAjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKICNpbmNsdWRlICJJREJEYXRhYmFz
ZUJhY2tlbmRJbnRlcmZhY2UuaCIKLSNpbmNsdWRlICJJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwu
aCIKKyNpbmNsdWRlICJJREJEYXRhYmFzZUNhbGxiYWNrcy5oIgogI2luY2x1ZGUgIklEQk1ldGFk
YXRhLmgiCiAjaW5jbHVkZSAiSURCT2JqZWN0U3RvcmUuaCIKICNpbmNsdWRlICJJREJUcmFuc2Fj
dGlvbi5oIgpAQCAtNTEsNyArNTEsNyBAQCB0eXBlZGVmIGludCBFeGNlcHRpb25Db2RlOwogCiBj
bGFzcyBJREJEYXRhYmFzZSA6IHB1YmxpYyBSZWZDb3VudGVkPElEQkRhdGFiYXNlPiwgcHVibGlj
IEV2ZW50VGFyZ2V0LCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUGFzc1JlZlB0cjxJREJEYXRhYmFzZT4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4pOworICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPElEQkRhdGFiYXNlPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBh
c3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiwgUGFzc1JlZlB0cjxJREJEYXRh
YmFzZUNhbGxiYWNrcz4pOwogICAgIH5JREJEYXRhYmFzZSgpOwogCiAgICAgdm9pZCB0cmFuc2Fj
dGlvbkNyZWF0ZWQoSURCVHJhbnNhY3Rpb24qKTsKQEAgLTg5LDcgKzg5LDYgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpIGNvbnN0OwogCiAgICAgdm9pZCBmb3JjZUNsb3NlKCk7Ci0gICAgdm9pZCByZWdpc3RlckZy
b250ZW5kQ2FsbGJhY2tzKCk7CiAgICAgY29uc3QgSURCRGF0YWJhc2VNZXRhZGF0YSBtZXRhZGF0
YSgpIGNvbnN0IHsgcmV0dXJuIG1fbWV0YWRhdGE7IH0KICAgICB2b2lkIGVucXVldWVFdmVudChQ
YXNzUmVmUHRyPEV2ZW50Pik7CiAgICAgYm9vbCBkaXNwYXRjaEV2ZW50KFBhc3NSZWZQdHI8RXZl
bnQ+IGV2ZW50LCBFeGNlcHRpb25Db2RlJiBlYykgeyByZXR1cm4gRXZlbnRUYXJnZXQ6OmRpc3Bh
dGNoRXZlbnQoZXZlbnQsIGVjKTsgfQpAQCAtOTksNyArOTgsNyBAQCBwdWJsaWM6CiAgICAgdXNp
bmcgUmVmQ291bnRlZDxJREJEYXRhYmFzZT46OmRlcmVmOwogCiBwcml2YXRlOgotICAgIElEQkRh
dGFiYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFj
a2VuZEludGVyZmFjZT4pOworICAgIElEQkRhdGFiYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4sIFBhc3NSZWZQdHI8SURC
RGF0YWJhc2VDYWxsYmFja3M+KTsKIAogICAgIC8vIEV2ZW50VGFyZ2V0CiAgICAgdmlydHVhbCB2
b2lkIHJlZkV2ZW50VGFyZ2V0KCkgeyByZWYoKTsgfQpAQCAtMTIzLDcgKzEyMiw3IEBAIHByaXZh
dGU6CiAgICAgLy8gZGF0YWJhc2Ugc28gdGhhdCB3ZSBjYW4gY2FuY2VsIHRoZW0gaWYgdGhlIGRh
dGFiYXNlIGNsb3Nlcy4KICAgICBWZWN0b3I8UmVmUHRyPEV2ZW50PiA+IG1fZW5xdWV1ZWRFdmVu
dHM7CiAKLSAgICBSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3NJbXBsPiBtX2RhdGFiYXNlQ2Fs
bGJhY2tzOworICAgIFJlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gbV9kYXRhYmFzZUNhbGxi
YWNrczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAK
aW5kZXggODExMGMyNGMxM2IzYzQ2M2VlMzdiMjBkNGNmZmE3MTI0MjQ0YjYzOS4uYmZiMmFlMjY3
NjE1ZDYzODUyM2MwZGUyYmVlZTQ1ZGM1MmZhMzQ0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAK
QEAgLTQxLDM3ICs0MSw0MyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIElEQkRhdGFi
YXNlQmFja2VuZEltcGw6OlBlbmRpbmdPcGVuQ2FsbCA6IHB1YmxpYyBSZWZDb3VudGVkPFBlbmRp
bmdPcGVuQ2FsbD4gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBlbmRpbmdPcGVu
Q2FsbD4gY3JlYXRlKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8UGVuZGluZ09wZW5DYWxsPiBjcmVhdGUoUGFzc1JlZlB0cjxJREJDYWxs
YmFja3M+IGNhbGxiYWNrcywgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gZGF0YWJh
c2VDYWxsYmFja3MpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBlbmRpbmdP
cGVuQ2FsbChjYWxsYmFja3MpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQZW5kaW5n
T3BlbkNhbGwoY2FsbGJhY2tzLCBkYXRhYmFzZUNhbGxiYWNrcykpOwogICAgIH0KICAgICBQYXNz
UmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKCkgeyByZXR1cm4gbV9jYWxsYmFja3M7IH0K
KyAgICBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBkYXRhYmFzZUNhbGxiYWNrcygp
IHsgcmV0dXJuIG1fZGF0YWJhc2VDYWxsYmFja3M7IH0KIAogcHJpdmF0ZToKLSAgICBQZW5kaW5n
T3BlbkNhbGwoUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKKyAgICBQZW5kaW5n
T3BlbkNhbGwoUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgUGFzc1JlZlB0cjxJ
REJEYXRhYmFzZUNhbGxiYWNrcz4gZGF0YWJhc2VDYWxsYmFja3MpCiAgICAgICAgIDogbV9jYWxs
YmFja3MoY2FsbGJhY2tzKQorICAgICAgICAsIG1fZGF0YWJhc2VDYWxsYmFja3MoZGF0YWJhc2VD
YWxsYmFja3MpCiAgICAgewogICAgIH0KIAogICAgIFJlZlB0cjxJREJDYWxsYmFja3M+IG1fY2Fs
bGJhY2tzOworICAgIFJlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gbV9kYXRhYmFzZUNhbGxi
YWNrczsKIH07CiAKIGNsYXNzIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OlBlbmRpbmdPcGVuV2l0
aFZlcnNpb25DYWxsIDogcHVibGljIFJlZkNvdW50ZWQ8UGVuZGluZ09wZW5XaXRoVmVyc2lvbkNh
bGw+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxQZW5kaW5nT3BlbldpdGhWZXJz
aW9uQ2FsbD4gY3JlYXRlKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIGludDY0
X3QgdmVyc2lvbikKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxQZW5kaW5nT3BlbldpdGhWZXJzaW9u
Q2FsbD4gY3JlYXRlKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIFBhc3NSZWZQ
dHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IGRhdGFiYXNlQ2FsbGJhY2tzLCBpbnQ2NF90IHZlcnNp
b24pCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBlbmRpbmdPcGVuV2l0aFZl
cnNpb25DYWxsKGNhbGxiYWNrcywgdmVyc2lvbikpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IFBlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxsKGNhbGxiYWNrcywgZGF0YWJhc2VDYWxsYmFj
a3MsIHZlcnNpb24pKTsKICAgICB9CiAgICAgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxi
YWNrcygpIHsgcmV0dXJuIG1fY2FsbGJhY2tzOyB9CisgICAgUGFzc1JlZlB0cjxJREJEYXRhYmFz
ZUNhbGxiYWNrcz4gZGF0YWJhc2VDYWxsYmFja3MoKSB7IHJldHVybiBtX2RhdGFiYXNlQ2FsbGJh
Y2tzOyB9CiAgICAgaW50NjRfdCB2ZXJzaW9uKCkgeyByZXR1cm4gbV92ZXJzaW9uOyB9CiAKIHBy
aXZhdGU6Ci0gICAgUGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGwoUGFzc1JlZlB0cjxJREJDYWxs
YmFja3M+IGNhbGxiYWNrcywgaW50NjRfdCB2ZXJzaW9uKQorICAgIFBlbmRpbmdPcGVuV2l0aFZl
cnNpb25DYWxsKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIFBhc3NSZWZQdHI8
SURCRGF0YWJhc2VDYWxsYmFja3M+IGRhdGFiYXNlQ2FsbGJhY2tzLCBpbnQ2NF90IHZlcnNpb24p
CiAgICAgICAgIDogbV9jYWxsYmFja3MoY2FsbGJhY2tzKQorICAgICAgICAsIG1fZGF0YWJhc2VD
YWxsYmFja3MoZGF0YWJhc2VDYWxsYmFja3MpCiAgICAgICAgICwgbV92ZXJzaW9uKHZlcnNpb24p
CiAgICAgewogICAgIH0KICAgICBSZWZQdHI8SURCQ2FsbGJhY2tzPiBtX2NhbGxiYWNrczsKKyAg
ICBSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IG1fZGF0YWJhc2VDYWxsYmFja3M7CiAgICAg
aW50NjRfdCBtX3ZlcnNpb247CiB9OwogCkBAIC0xMzAsNyArMTM2LDYgQEAgSURCRGF0YWJhc2VC
YWNrZW5kSW1wbDo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbChjb25zdCBTdHJpbmcmIG5hbWUsIElE
QkJhY2tpbmdTdG8KICAgICAsIG1faWRlbnRpZmllcih1bmlxdWVJZGVudGlmaWVyKQogICAgICwg
bV9mYWN0b3J5KGZhY3RvcnkpCiAgICAgLCBtX3RyYW5zYWN0aW9uQ29vcmRpbmF0b3IoY29vcmRp
bmF0b3IpCi0gICAgLCBtX3BlbmRpbmdDb25uZWN0aW9uQ291bnQoMCkKIHsKICAgICBBU1NFUlQo
IW1fbmFtZS5pc051bGwoKSk7CiB9CkBAIC0yNDAsNiArMjQ1LDcgQEAgdm9pZCBJREJEYXRhYmFz
ZUJhY2tlbmRJbXBsOjpzZXRWZXJzaW9uKGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgUGFzc1JlZlB0
cjxJREJDYWwKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBmb3IgKERhdGFiYXNlQ2FsbGJh
Y2tzU2V0Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1fZGF0YWJhc2VDYWxsYmFja3NTZXQuYmVnaW4o
KTsgaXQgIT0gbV9kYXRhYmFzZUNhbGxiYWNrc1NldC5lbmQoKTsgKytpdCkgeworICAgICAgICAv
LyBGcm9udCBlbmQgZW5zdXJlcyB0aGUgZXZlbnQgaXMgbm90IGZpcmVkIGF0IGNvbm5lY3Rpb25z
IHRoYXQgaGF2ZSBjbG9zZVBlbmRpbmcgc2V0LgogICAgICAgICBpZiAoKml0ICE9IGRhdGFiYXNl
Q2FsbGJhY2tzKQogICAgICAgICAgICAgKCppdCktPm9uVmVyc2lvbkNoYW5nZSh2ZXJzaW9uKTsK
ICAgICB9CkBAIC0zNDIsOSArMzQ4LDEwIEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6
dHJhbnNhY3Rpb25GaW5pc2hlZEFuZENvbXBsZXRlRmlyZWQoUGFzc1JlZlB0cjxJREJUCiAgICAg
ICAgIHByb2Nlc3NQZW5kaW5nQ2FsbHMoKTsKIH0KIAotaW50MzJfdCBJREJEYXRhYmFzZUJhY2tl
bmRJbXBsOjpjb25uZWN0aW9uQ291bnQoKQorc2l6ZV90IElEQkRhdGFiYXNlQmFja2VuZEltcGw6
OmNvbm5lY3Rpb25Db3VudCgpCiB7Ci0gICAgcmV0dXJuIG1fZGF0YWJhc2VDYWxsYmFja3NTZXQu
c2l6ZSgpICsgbV9wZW5kaW5nQ29ubmVjdGlvbkNvdW50OworICAgIC8vIFRoaXMgZG9lcyBub3Qg
aW5jbHVkZSBwZW5kaW5nIG9wZW4gY2FsbHMsIGFzIHRob3NlIHNob3VsZCBub3QgYmxvY2sgdmVy
c2lvbiBjaGFuZ2VzIGFuZCBkZWxldGVzLgorICAgIHJldHVybiBtX2RhdGFiYXNlQ2FsbGJhY2tz
U2V0LnNpemUoKTsKIH0KIAogdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpwcm9jZXNzUGVu
ZGluZ0NhbGxzKCkKQEAgLTM1NSw5ICszNjIsOCBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZElt
cGw6OnByb2Nlc3NQZW5kaW5nQ2FsbHMoKQogICAgICAgICBSZWZQdHI8UGVuZGluZ09wZW5XaXRo
VmVyc2lvbkNhbGw+IHBlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxsID0gbV9wZW5kaW5nU2Vjb25k
SGFsZk9wZW5XaXRoVmVyc2lvbkNhbGxzLnRha2VGaXJzdCgpOwogICAgICAgICBBU1NFUlQocGVu
ZGluZ09wZW5XaXRoVmVyc2lvbkNhbGwtPnZlcnNpb24oKSA9PSBtX2ludFZlcnNpb24pOwogICAg
ICAgICBBU1NFUlQobV9pZCAhPSBJbnZhbGlkSWQpOwotICAgICAgICArK21fcGVuZGluZ0Nvbm5l
Y3Rpb25Db3VudDsKICAgICAgICAgcGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGwtPmNhbGxiYWNr
cygpLT5vblN1Y2Nlc3ModGhpcyk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgLy8gRmFsbCB0
aHJvdWdoIHdoZW4gY29tcGxldGUsIGFzIHBlbmRpbmcgZGVsZXRlcyBtYXkgYmUgKHBhcnRpYWxs
eSkgdW5ibG9ja2VkLgogICAgIH0KIAogICAgIC8vIFBlbmRpbmcgY2FsbHMgbWF5IGJlIHJlcXVl
dWVkIG9yIGFib3J0ZWQKQEAgLTQwMCw3ICs0MDYsNyBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2Vu
ZEltcGw6OnByb2Nlc3NQZW5kaW5nQ2FsbHMoKQogICAgIG1fcGVuZGluZ09wZW5XaXRoVmVyc2lv
bkNhbGxzLnN3YXAocGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGxzKTsKICAgICB3aGlsZSAoIXBl
bmRpbmdPcGVuV2l0aFZlcnNpb25DYWxscy5pc0VtcHR5KCkpIHsKICAgICAgICAgUmVmUHRyPFBl
bmRpbmdPcGVuV2l0aFZlcnNpb25DYWxsPiBwZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbCA9IHBl
bmRpbmdPcGVuV2l0aFZlcnNpb25DYWxscy50YWtlRmlyc3QoKTsKLSAgICAgICAgb3BlbkNvbm5l
Y3Rpb25XaXRoVmVyc2lvbihwZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbC0+Y2FsbGJhY2tzKCks
IHBlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxsLT52ZXJzaW9uKCkpOworICAgICAgICBvcGVuQ29u
bmVjdGlvbldpdGhWZXJzaW9uKHBlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxsLT5jYWxsYmFja3Mo
KSwgcGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGwtPmRhdGFiYXNlQ2FsbGJhY2tzKCksIHBlbmRp
bmdPcGVuV2l0aFZlcnNpb25DYWxsLT52ZXJzaW9uKCkpOwogICAgIH0KIAogICAgIC8vIEdpdmVu
IHRoZSBjaGVjayBhYm92ZSwgaXQgYXBwZWFycyB0aGF0IGNhbGxzIGNhbm5vdCBiZSByZXF1ZXVl
ZCBieQpAQCAtNDA5LDcgKzQxNSw3IEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6cHJv
Y2Vzc1BlbmRpbmdDYWxscygpCiAgICAgbV9wZW5kaW5nT3BlbkNhbGxzLnN3YXAocGVuZGluZ09w
ZW5DYWxscyk7CiAgICAgd2hpbGUgKCFwZW5kaW5nT3BlbkNhbGxzLmlzRW1wdHkoKSkgewogICAg
ICAgICBSZWZQdHI8UGVuZGluZ09wZW5DYWxsPiBwZW5kaW5nT3BlbkNhbGwgPSBwZW5kaW5nT3Bl
bkNhbGxzLnRha2VGaXJzdCgpOwotICAgICAgICBvcGVuQ29ubmVjdGlvbihwZW5kaW5nT3BlbkNh
bGwtPmNhbGxiYWNrcygpKTsKKyAgICAgICAgb3BlbkNvbm5lY3Rpb24ocGVuZGluZ09wZW5DYWxs
LT5jYWxsYmFja3MoKSwgcGVuZGluZ09wZW5DYWxsLT5kYXRhYmFzZUNhbGxiYWNrcygpKTsKICAg
ICB9CiAgICAgQVNTRVJUKG1fcGVuZGluZ09wZW5DYWxscy5pc0VtcHR5KCkpOwogfQpAQCAtNDI4
LDQ0ICs0MzQsMzAgQEAgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+
IElEQkRhdGFiYXNlQmFja2VuZEltcGw6OnRyYW5zYWN0aW9uKEQKICAgICByZXR1cm4gdHJhbnNh
Y3Rpb24ucmVsZWFzZSgpOwogfQogCi12b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OnJlZ2lz
dGVyRnJvbnRlbmRDYWxsYmFja3MoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gY2Fs
bGJhY2tzKQotewotICAgIEFTU0VSVChtX2JhY2tpbmdTdG9yZS5nZXQoKSk7Ci0gICAgQVNTRVJU
KG1fcGVuZGluZ0Nvbm5lY3Rpb25Db3VudCk7Ci0gICAgLS1tX3BlbmRpbmdDb25uZWN0aW9uQ291
bnQ7Ci0gICAgbV9kYXRhYmFzZUNhbGxiYWNrc1NldC5hZGQoUmVmUHRyPElEQkRhdGFiYXNlQ2Fs
bGJhY2tzPihjYWxsYmFja3MpKTsKLSAgICAvLyBXZSBnaXZlIG1heCBwcmlvcml0eSB0byBvcGVu
IGNhbGxzIHRoYXQgZm9sbG93IHVwZ3JhZGVuZWVkZWQKLSAgICAvLyBldmVudHM7IHRyaWdnZXIg
dGhlIHJlc3Qgb2YgdGhlIHF1ZXVlcyB0byBiZSBzZXJ2aWNlZCB3aGVuIHRob3NlIG9wZW4KLSAg
ICAvLyBjYWxscyBhcmUgZmluaXNoZWQuCi0gICAgcHJvY2Vzc1BlbmRpbmdDYWxscygpOwotfQot
Ci12b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6Om9wZW5Db25uZWN0aW9uKFBhc3NSZWZQdHI8
SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCit2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6Om9w
ZW5Db25uZWN0aW9uKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIFBhc3NSZWZQ
dHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IGRhdGFiYXNlQ2FsbGJhY2tzKQogewogICAgIEFTU0VS
VChtX2JhY2tpbmdTdG9yZS5nZXQoKSk7CiAgICAgaWYgKCFtX3BlbmRpbmdEZWxldGVDYWxscy5p
c0VtcHR5KCkgfHwgbV9ydW5uaW5nVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uIHx8ICFtX3BlbmRp
bmdTZXRWZXJzaW9uQ2FsbHMuaXNFbXB0eSgpKQotICAgICAgICBtX3BlbmRpbmdPcGVuQ2FsbHMu
YXBwZW5kKFBlbmRpbmdPcGVuQ2FsbDo6Y3JlYXRlKGNhbGxiYWNrcykpOworICAgICAgICBtX3Bl
bmRpbmdPcGVuQ2FsbHMuYXBwZW5kKFBlbmRpbmdPcGVuQ2FsbDo6Y3JlYXRlKGNhbGxiYWNrcywg
ZGF0YWJhc2VDYWxsYmFja3MpKTsKICAgICBlbHNlIHsKICAgICAgICAgaWYgKG1faWQgPT0gSW52
YWxpZElkICYmICFvcGVuSW50ZXJuYWwoKSkKICAgICAgICAgICAgIGNhbGxiYWNrcy0+b25FcnJv
cihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVOS05PV05f
RVJSLCAiSW50ZXJuYWwgZXJyb3IuIikpOwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICsr
bV9wZW5kaW5nQ29ubmVjdGlvbkNvdW50OworICAgICAgICAgICAgbV9kYXRhYmFzZUNhbGxiYWNr
c1NldC5hZGQoUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPihkYXRhYmFzZUNhbGxiYWNrcykp
OwogICAgICAgICAgICAgY2FsbGJhY2tzLT5vblN1Y2Nlc3ModGhpcyk7CiAgICAgICAgIH0KICAg
ICB9CiB9CiAKLXZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6cnVuSW50VmVyc2lvbkNoYW5n
ZVRyYW5zYWN0aW9uKGludDY0X3QgcmVxdWVzdGVkVmVyc2lvbiwgUGFzc1JlZlB0cjxJREJDYWxs
YmFja3M+IHBycENhbGxiYWNrcykKK3ZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6cnVuSW50
VmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKGludDY0X3QgcmVxdWVzdGVkVmVyc2lvbiwgUGFzc1Jl
ZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNrcywgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNh
bGxiYWNrcz4gcHJwRGF0YWJhc2VDYWxsYmFja3MpCiB7CiAgICAgUmVmUHRyPElEQkNhbGxiYWNr
cz4gY2FsbGJhY2tzID0gcHJwQ2FsbGJhY2tzOworICAgIFJlZlB0cjxJREJEYXRhYmFzZUNhbGxi
YWNrcz4gZGF0YWJhc2VDYWxsYmFja3MgPSBwcnBEYXRhYmFzZUNhbGxiYWNrczsKICAgICBBU1NF
UlQoY2FsbGJhY2tzKTsKICAgICBmb3IgKERhdGFiYXNlQ2FsbGJhY2tzU2V0Ojpjb25zdF9pdGVy
YXRvciBpdCA9IG1fZGF0YWJhc2VDYWxsYmFja3NTZXQuYmVnaW4oKTsgaXQgIT0gbV9kYXRhYmFz
ZUNhbGxiYWNrc1NldC5lbmQoKTsgKytpdCkgewotICAgICAgICAvLyBOb3RlIHRoYXQgc29tZSBj
b25uZWN0aW9ucyBtaWdodCBjbG9zZSBpbiB0aGUgdmVyc2lvbmNoYW5nZSBldmVudAotICAgICAg
ICAvLyBoYW5kbGVyIGZvciBzb21lIG90aGVyIGNvbm5lY3Rpb24sIGFmdGVyIHdoaWNoIGl0cyBv
d24gdmVyc2lvbmNoYW5nZQotICAgICAgICAvLyBldmVudCBzaG91bGQgbm90IGJlIGZpcmVkLiBU
aGUgYmFja2VuZCBkb2Vzbid0IHdvcnJ5IGFib3V0IHRoaXMsIHdlCi0gICAgICAgIC8vIGp1c3Qg
cXVldWUgdXAgYSB2ZXJzaW9uIGNoYW5nZSBldmVudCBmb3IgZXZlcnkgY29ubmVjdGlvbi4gVGhl
Ci0gICAgICAgIC8vIGZyb250ZW5kIHRha2VzIGNhcmUgdG8gb25seSBkaXNwYXRjaCB0byBvcGVu
IGNvbm5lY3Rpb25zLgotICAgICAgICAoKml0KS0+b25WZXJzaW9uQ2hhbmdlKG1faW50VmVyc2lv
biwgcmVxdWVzdGVkVmVyc2lvbik7CisgICAgICAgIC8vIEZyb250IGVuZCBlbnN1cmVzIHRoZSBl
dmVudCBpcyBub3QgZmlyZWQgYXQgY29ubmVjdGlvbnMgdGhhdCBoYXZlIGNsb3NlUGVuZGluZyBz
ZXQuCisgICAgICAgIGlmICgqaXQgIT0gZGF0YWJhc2VDYWxsYmFja3MpCisgICAgICAgICAgICAo
Kml0KS0+b25WZXJzaW9uQ2hhbmdlKG1faW50VmVyc2lvbiwgcmVxdWVzdGVkVmVyc2lvbik7CiAg
ICAgfQogICAgIC8vIFRoZSBzcGVjIGRpY3RhdGVzIHdlIHdhaXQgdW50aWwgYWxsIHRoZSB2ZXJz
aW9uIGNoYW5nZSBldmVudHMgYXJlCiAgICAgLy8gZGVsaXZlcmVkIGFuZCB0aGVuIGNoZWNrIG1f
ZGF0YWJhc2VDYWxsYmFja3MuZW1wdHkoKSBiZWZvcmUgcHJvY2VlZGluZwpAQCAtNDc0LDExICs0
NjYsMTEgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpydW5JbnRWZXJzaW9uQ2hhbmdl
VHJhbnNhY3Rpb24oaW50NjRfdCByZXF1ZXN0ZWRWZXIKICAgICAvLyBGSVhNRTogUmVtb3ZlIHRo
ZSBjYWxsIHRvIG9uQmxvY2tlZCBhbmQgaW5zdGVhZCB3YWl0IHVudGlsIHRoZSBmcm9udGVuZAog
ICAgIC8vIHRlbGxzIHVzIHRoYXQgYWxsIHRoZSBibG9ja2VkIGV2ZW50cyBoYXZlIGJlZW4gZGVs
aXZlcmVkLiBTZWUKICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NzExMzAKLSAgICBpZiAoY29ubmVjdGlvbkNvdW50KCkgPiAwKQorICAgIGlmIChjb25uZWN0
aW9uQ291bnQoKSkKICAgICAgICAgY2FsbGJhY2tzLT5vbkJsb2NrZWQobV9pbnRWZXJzaW9uKTsK
ICAgICAvLyBGSVhNRTogQWRkIHRlc3QgZm9yIG1fcnVubmluZ1ZlcnNpb25DaGFuZ2VUcmFuc2Fj
dGlvbi4KLSAgICBpZiAobV9ydW5uaW5nVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uIHx8IGNvbm5l
Y3Rpb25Db3VudCgpID4gMCkgewotICAgICAgICBtX3BlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxs
cy5hcHBlbmQoUGVuZGluZ09wZW5XaXRoVmVyc2lvbkNhbGw6OmNyZWF0ZShjYWxsYmFja3MsIHJl
cXVlc3RlZFZlcnNpb24pKTsKKyAgICBpZiAobV9ydW5uaW5nVmVyc2lvbkNoYW5nZVRyYW5zYWN0
aW9uIHx8IGNvbm5lY3Rpb25Db3VudCgpKSB7CisgICAgICAgIG1fcGVuZGluZ09wZW5XaXRoVmVy
c2lvbkNhbGxzLmFwcGVuZChQZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbDo6Y3JlYXRlKGNhbGxi
YWNrcywgZGF0YWJhc2VDYWxsYmFja3MsIHJlcXVlc3RlZFZlcnNpb24pKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIApAQCAtNDk3LDE0ICs0ODksMTYgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tl
bmRJbXBsOjpydW5JbnRWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24oaW50NjRfdCByZXF1ZXN0ZWRW
ZXIKICAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VFJBTlNBQ1RJT05fSU5BQ1RJ
VkVfRVJSOwogICAgIH0KICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFtX3BlbmRpbmdTZWNvbmRI
YWxmT3BlbldpdGhWZXJzaW9uQ2FsbHMuc2l6ZSgpLCAibV9wZW5kaW5nU2Vjb25kSGFsZk9wZW5X
aXRoVmVyc2lvbkNhbGxzLnNpemUgPSAlenUiLCBtX3BlbmRpbmdTZWNvbmRIYWxmT3BlbldpdGhW
ZXJzaW9uQ2FsbHMuc2l6ZSgpKTsKLSAgICBtX3BlbmRpbmdTZWNvbmRIYWxmT3BlbldpdGhWZXJz
aW9uQ2FsbHMuYXBwZW5kKFBlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxsOjpjcmVhdGUoY2FsbGJh
Y2tzLCByZXF1ZXN0ZWRWZXJzaW9uKSk7CisgICAgbV9wZW5kaW5nU2Vjb25kSGFsZk9wZW5XaXRo
VmVyc2lvbkNhbGxzLmFwcGVuZChQZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbDo6Y3JlYXRlKGNh
bGxiYWNrcywgZGF0YWJhc2VDYWxsYmFja3MsIHJlcXVlc3RlZFZlcnNpb24pKTsKKyAgICBtX2Rh
dGFiYXNlQ2FsbGJhY2tzU2V0LmFkZChkYXRhYmFzZUNhbGxiYWNrcyk7CiB9CiAKLXZvaWQgSURC
RGF0YWJhc2VCYWNrZW5kSW1wbDo6b3BlbkNvbm5lY3Rpb25XaXRoVmVyc2lvbihQYXNzUmVmUHRy
PElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJhY2tzLCBpbnQ2NF90IHZlcnNpb24pCit2b2lkIElEQkRh
dGFiYXNlQmFja2VuZEltcGw6Om9wZW5Db25uZWN0aW9uV2l0aFZlcnNpb24oUGFzc1JlZlB0cjxJ
REJDYWxsYmFja3M+IHBycENhbGxiYWNrcywgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNr
cz4gcHJwRGF0YWJhc2VDYWxsYmFja3MsIGludDY0X3QgdmVyc2lvbikKIHsKICAgICBSZWZQdHI8
SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MgPSBwcnBDYWxsYmFja3M7CisgICAgUmVmUHRyPElEQkRh
dGFiYXNlQ2FsbGJhY2tzPiBkYXRhYmFzZUNhbGxiYWNrcyA9IHBycERhdGFiYXNlQ2FsbGJhY2tz
OwogICAgIGlmICghbV9wZW5kaW5nRGVsZXRlQ2FsbHMuaXNFbXB0eSgpIHx8IG1fcnVubmluZ1Zl
cnNpb25DaGFuZ2VUcmFuc2FjdGlvbiB8fCAhbV9wZW5kaW5nU2V0VmVyc2lvbkNhbGxzLmlzRW1w
dHkoKSkgewotICAgICAgICBtX3BlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxscy5hcHBlbmQoUGVu
ZGluZ09wZW5XaXRoVmVyc2lvbkNhbGw6OmNyZWF0ZShjYWxsYmFja3MsIHZlcnNpb24pKTsKKyAg
ICAgICAgbV9wZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbHMuYXBwZW5kKFBlbmRpbmdPcGVuV2l0
aFZlcnNpb25DYWxsOjpjcmVhdGUoY2FsbGJhY2tzLCBkYXRhYmFzZUNhbGxiYWNrcywgdmVyc2lv
bikpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmIChtX2lkID09IEludmFsaWRJZCkg
ewpAQCAtNTE2LDcgKzUxMCw3IEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6b3BlbkNv
bm5lY3Rpb25XaXRoVmVyc2lvbihQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4KICAgICAgICAgfQog
ICAgIH0KICAgICBpZiAodmVyc2lvbiA+IG1faW50VmVyc2lvbikgewotICAgICAgICBydW5JbnRW
ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24odmVyc2lvbiwgY2FsbGJhY2tzKTsKKyAgICAgICAgcnVu
SW50VmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKHZlcnNpb24sIGNhbGxiYWNrcywgZGF0YWJhc2VD
YWxsYmFja3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmICh2ZXJzaW9uIDwgbV9p
bnRWZXJzaW9uKSB7CkBAIC01MjQsNyArNTE4LDcgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJ
bXBsOjpvcGVuQ29ubmVjdGlvbldpdGhWZXJzaW9uKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPgog
ICAgICAgICByZXR1cm47CiAgICAgfQogICAgIEFTU0VSVCh2ZXJzaW9uID09IG1faW50VmVyc2lv
bik7Ci0gICAgKyttX3BlbmRpbmdDb25uZWN0aW9uQ291bnQ7CisgICAgbV9kYXRhYmFzZUNhbGxi
YWNrc1NldC5hZGQoZGF0YWJhc2VDYWxsYmFja3MpOwogICAgIGNhbGxiYWNrcy0+b25TdWNjZXNz
KHRoaXMpOwogfQogCkBAIC01MzUsMTUgKzUyOSwxNCBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2Vu
ZEltcGw6OmRlbGV0ZURhdGFiYXNlKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmFj
awogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIFJlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxi
YWNrcyA9IHBycENhbGxiYWNrczsKLSAgICAvLyBGSVhNRTogT25seSBmaXJlIG9uVmVyc2lvbkNo
YW5nZSBpZiB0aGVyZSB0aGUgY29ubmVjdGlvbiBpc24ndCBpbgotICAgIC8vIHRoZSBwcm9jZXNz
IG9mIGNsb3NpbmcuCi0gICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTcxMTI5Ci0gICAgZm9yIChEYXRhYmFzZUNhbGxiYWNrc1NldDo6Y29uc3RfaXRlcmF0b3Ig
aXQgPSBtX2RhdGFiYXNlQ2FsbGJhY2tzU2V0LmJlZ2luKCk7IGl0ICE9IG1fZGF0YWJhc2VDYWxs
YmFja3NTZXQuZW5kKCk7ICsraXQpCisgICAgZm9yIChEYXRhYmFzZUNhbGxiYWNrc1NldDo6Y29u
c3RfaXRlcmF0b3IgaXQgPSBtX2RhdGFiYXNlQ2FsbGJhY2tzU2V0LmJlZ2luKCk7IGl0ICE9IG1f
ZGF0YWJhc2VDYWxsYmFja3NTZXQuZW5kKCk7ICsraXQpIHsKKyAgICAgICAgLy8gRnJvbnQgZW5k
IGVuc3VyZXMgdGhlIGV2ZW50IGlzIG5vdCBmaXJlZCBhdCBjb25uZWN0aW9ucyB0aGF0IGhhdmUg
Y2xvc2VQZW5kaW5nIHNldC4KICAgICAgICAgKCppdCktPm9uVmVyc2lvbkNoYW5nZSgiIik7Cisg
ICAgfQogICAgIC8vIEZJWE1FOiBPbmx5IGZpcmUgb25CbG9ja2VkIGlmIHRoZXJlIGFyZSBvcGVu
IGNvbm5lY3Rpb25zIGFmdGVyIHRoZQogICAgIC8vIFZlcnNpb25DaGFuZ2VFdmVudHMgYXJlIHJl
Y2VpdmVkLCBub3QganVzdCBzZXQgdXAgdG8gZmlyZS4KICAgICAvLyBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzExMzAKLSAgICBpZiAoY29ubmVjdGlvbkNvdW50KCkg
Pj0gMSkgeworICAgIGlmIChjb25uZWN0aW9uQ291bnQoKSkgewogICAgICAgICBtX3BlbmRpbmdE
ZWxldGVDYWxscy5hcHBlbmQoUGVuZGluZ0RlbGV0ZUNhbGw6OmNyZWF0ZShjYWxsYmFja3MpKTsK
ICAgICAgICAgY2FsbGJhY2tzLT5vbkJsb2NrZWQoKTsKICAgICAgICAgcmV0dXJuOwpAQCAtNTY0
LDE4ICs1NTcsMTkgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpjbG9zZShQYXNzUmVm
UHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBwcnBDYWxsYmFja3MKIHsKICAgICBSZWZQdHI8SURC
RGF0YWJhc2VDYWxsYmFja3M+IGNhbGxiYWNrcyA9IHBycENhbGxiYWNrczsKICAgICBBU1NFUlQo
bV9kYXRhYmFzZUNhbGxiYWNrc1NldC5jb250YWlucyhjYWxsYmFja3MpKTsKKwogICAgIG1fZGF0
YWJhc2VDYWxsYmFja3NTZXQucmVtb3ZlKGNhbGxiYWNrcyk7CisgICAgLy8gRklYTUU6IElmIGNh
bGxiYWNrcyBpcyBhbHNvIGhlbGQgaW4gbV9wZW5kaW5nU2Vjb25kSGFsZk9wZW5XaXRoVmVyc2lv
bkNhbGxzCisgICAgLy8gaXQgc2hvdWxkIGJlIHJlbW92ZWQgYW5kIG9uRXJyb3IgZmlyZWQgYWdh
aW5zdCBpdC4KKwogICAgIGlmIChjb25uZWN0aW9uQ291bnQoKSA+IDEpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIFRyYW5zYWN0aW9uU2V0IHRyYW5zYWN0aW9ucyhtX3RyYW5zYWN0aW9ucyk7CiAg
ICAgcHJvY2Vzc1BlbmRpbmdDYWxscygpOwogCi0gICAgQVNTRVJUKG1fdHJhbnNhY3Rpb25zLnNp
emUoKSAtIHRyYW5zYWN0aW9ucy5zaXplKCkgPD0gMSk7Ci0gICAgLy8gRklYTUU6IEluc3RlYWQg
b2YgcmVseWluZyBvbiB0cmFuc2FjdGlvbnMuc2l6ZSgpLCBtYWtlIGNvbm5lY3Rpb25Db3VudAot
ICAgIC8vIGF3YXJlIG9mIGluLWZsaWdodCB1cGdyYWRlbmVlZGVkIGV2ZW50cyBhcyB3ZWxsIGFz
IGluLWZsaWdodCBzdWNjZXNzCi0gICAgLy8gZXZlbnRzLgotICAgIGlmICghY29ubmVjdGlvbkNv
dW50KCkgJiYgIW1fcGVuZGluZ0RlbGV0ZUNhbGxzLnNpemUoKSAmJiBtX3RyYW5zYWN0aW9ucy5z
aXplKCkgPT0gdHJhbnNhY3Rpb25zLnNpemUoKSkgeworICAgIC8vIEZJWE1FOiBBZGQgYSB0ZXN0
IGZvciB0aGUgbV9wZW5kaW5nT3BlbkNhbGxzwrdhbmQgbV9wZW5kaW5nT3BlbldpdGhWZXJzaW9u
Q2FsbHMgY2FzZXMgYmVsb3cuCisgICAgaWYgKCFjb25uZWN0aW9uQ291bnQoKSAmJiAhbV9wZW5k
aW5nT3BlbkNhbGxzLnNpemUoKSAmJiAhbV9wZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbHMuc2l6
ZSgpICYmICFtX3BlbmRpbmdEZWxldGVDYWxscy5zaXplKCkpIHsKKyAgICAgICAgVHJhbnNhY3Rp
b25TZXQgdHJhbnNhY3Rpb25zKG1fdHJhbnNhY3Rpb25zKTsKICAgICAgICAgZm9yIChUcmFuc2Fj
dGlvblNldDo6Y29uc3RfaXRlcmF0b3IgaXQgPSB0cmFuc2FjdGlvbnMuYmVnaW4oKTsgaXQgIT0g
dHJhbnNhY3Rpb25zLmVuZCgpOyArK2l0KQogICAgICAgICAgICAgKCppdCktPmFib3J0KCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNl
QmFja2VuZEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFi
YXNlQmFja2VuZEltcGwuaAppbmRleCA3ZjMxY2IwNGVhNGVkYmZjZDY3MjE3YzE5YzhjYTdhMmM5
NzNiZTExLi4yMmNjYzQzMjIwYjUwNGZlNzA2ODU2N2I1OWE0NzYyNTVlZWE4NTRkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJ
bXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VC
YWNrZW5kSW1wbC5oCkBAIC01NSw5ICs1NSw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3Qg
aW50NjRfdCBJbnZhbGlkSWQgPSAwOwogICAgIGludDY0X3QgaWQoKSBjb25zdCB7IHJldHVybiBt
X2lkOyB9CiAKLSAgICB2b2lkIHJlZ2lzdGVyRnJvbnRlbmRDYWxsYmFja3MoUGFzc1JlZlB0cjxJ
REJEYXRhYmFzZUNhbGxiYWNrcz4pOwotICAgIHZvaWQgb3BlbkNvbm5lY3Rpb24oUGFzc1JlZlB0
cjxJREJDYWxsYmFja3M+KTsKLSAgICB2b2lkIG9wZW5Db25uZWN0aW9uV2l0aFZlcnNpb24oUGFz
c1JlZlB0cjxJREJDYWxsYmFja3M+LCBpbnQ2NF90IHZlcnNpb24pOworICAgIHZvaWQgb3BlbkNv
bm5lY3Rpb24oUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNl
Q2FsbGJhY2tzPik7CisgICAgdm9pZCBvcGVuQ29ubmVjdGlvbldpdGhWZXJzaW9uKFBhc3NSZWZQ
dHI8SURCQ2FsbGJhY2tzPiwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4sIGludDY0
X3QgdmVyc2lvbik7CiAgICAgdm9pZCBkZWxldGVEYXRhYmFzZShQYXNzUmVmUHRyPElEQkNhbGxi
YWNrcz4pOwogCiAgICAgLy8gSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlCkBAIC03OSw5ICs3
OCw5IEBAIHByaXZhdGU6CiAgICAgSURCRGF0YWJhc2VCYWNrZW5kSW1wbChjb25zdCBTdHJpbmcm
IG5hbWUsIElEQkJhY2tpbmdTdG9yZSogZGF0YWJhc2UsIElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0
b3IqLCBJREJGYWN0b3J5QmFja2VuZEltcGwqLCBjb25zdCBTdHJpbmcmIHVuaXF1ZUlkZW50aWZp
ZXIpOwogCiAgICAgYm9vbCBvcGVuSW50ZXJuYWwoKTsKLSAgICB2b2lkIHJ1bkludFZlcnNpb25D
aGFuZ2VUcmFuc2FjdGlvbihpbnQ2NF90IHJlcXVlc3RlZFZlcnNpb24sIFBhc3NSZWZQdHI8SURC
Q2FsbGJhY2tzPik7CisgICAgdm9pZCBydW5JbnRWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24oaW50
NjRfdCByZXF1ZXN0ZWRWZXJzaW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIFBhc3NSZWZQ
dHI8SURCRGF0YWJhc2VDYWxsYmFja3M+KTsKICAgICB2b2lkIGxvYWRPYmplY3RTdG9yZXMoKTsK
LSAgICBpbnQzMl90IGNvbm5lY3Rpb25Db3VudCgpOworICAgIHNpemVfdCBjb25uZWN0aW9uQ291
bnQoKTsKICAgICB2b2lkIHByb2Nlc3NQZW5kaW5nQ2FsbHMoKTsKIAogICAgIHN0YXRpYyB2b2lk
IGNyZWF0ZU9iamVjdFN0b3JlSW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NS
ZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW1wbD4sIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVC
YWNrZW5kSW1wbD4sIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4pOwpAQCAt
MTI3LDEwICsxMjYsNiBAQCBwcml2YXRlOgogICAgIGNsYXNzIFBlbmRpbmdEZWxldGVDYWxsOwog
ICAgIERlcXVlPFJlZlB0cjxQZW5kaW5nRGVsZXRlQ2FsbD4gPiBtX3BlbmRpbmdEZWxldGVDYWxs
czsKIAotICAgIC8vIEZJWE1FOiBFbGltaW5hdGUgdGhlIGxpbWJvIHN0YXRlIGJldHdlZW4gb3Bl
bkNvbm5lY3Rpb24oKSBhbmQgcmVnaXN0ZXJGcm9udGVuZENhbGxiYWNrcygpCi0gICAgLy8gdGhh
dCB0aGlzIGNvdW50ZXIgdHJhY2tzLgotICAgIGludDMyX3QgbV9wZW5kaW5nQ29ubmVjdGlvbkNv
dW50OwotCiAgICAgdHlwZWRlZiBMaXN0SGFzaFNldDxSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFj
a3M+ID4gRGF0YWJhc2VDYWxsYmFja3NTZXQ7CiAgICAgRGF0YWJhc2VDYWxsYmFja3NTZXQgbV9k
YXRhYmFzZUNhbGxiYWNrc1NldDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZS5oCmluZGV4
IGM3ZDFkNjAxYmUyNmU3YmJjOTIxNzA2ODM0MjQ3NTI4NWEyYTg1ZDEuLmNiY2I5YTU5YzU1NmFj
MDVjYTc2YjRjYjc4ODBiYjM5ZmVjMDEyNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZS5o
CkBAIC0zNSw3ICszNSw2IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERPTVN0cmlu
Z0xpc3Q7Ci1jbGFzcyBGcmFtZTsKIGNsYXNzIElEQkNhbGxiYWNrczsKIGNsYXNzIElEQkRhdGFi
YXNlQ2FsbGJhY2tzOwogY2xhc3MgSURCS2V5UGF0aDsKQEAgLTYwLDggKzU5LDYgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBzZXRWZXJzaW9uKGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgUGFz
c1JlZlB0cjxJREJDYWxsYmFja3M+LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiwg
RXhjZXB0aW9uQ29kZSYpID0gMDsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rp
b25CYWNrZW5kSW50ZXJmYWNlPiB0cmFuc2FjdGlvbihET01TdHJpbmdMaXN0KiBzdG9yZU5hbWVz
LCB1bnNpZ25lZCBzaG9ydCBtb2RlLCBFeGNlcHRpb25Db2RlJikgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBjbG9zZShQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPikgPSAwOwotCi0gICAg
dmlydHVhbCB2b2lkIHJlZ2lzdGVyRnJvbnRlbmRDYWxsYmFja3MoUGFzc1JlZlB0cjxJREJEYXRh
YmFzZUNhbGxiYWNrcz4pID0gMDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQ2FsbGJh
Y2tzSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFz
ZUNhbGxiYWNrc0ltcGwuY3BwCmluZGV4IGY2NTY1ZGNhMWJkODIyZmU2ZGMxMzU5NjhjM2IwZWRi
OTk5NWEzYjguLjk3MGQzYTE2N2NhZjk5NmM3ZjAzMWZmNTRhNGYxNTkyNDlmMWFhMGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQ2FsbGJh
Y2tzSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0
YWJhc2VDYWxsYmFja3NJbXBsLmNwcApAQCAtMzIsMTMgKzMyLDEzIEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGw+IElEQkRhdGFi
YXNlQ2FsbGJhY2tzSW1wbDo6Y3JlYXRlKElEQkRhdGFiYXNlKiBkYXRhYmFzZSkKK1Bhc3NSZWZQ
dHI8SURCRGF0YWJhc2VDYWxsYmFja3NJbXBsPiBJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGw6OmNy
ZWF0ZSgpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJEYXRhYmFzZUNhbGxiYWNrc0lt
cGwoZGF0YWJhc2UpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IElEQkRhdGFiYXNlQ2FsbGJh
Y2tzSW1wbCgpKTsKIH0KIAotSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsOjpJREJEYXRhYmFzZUNh
bGxiYWNrc0ltcGwoSURCRGF0YWJhc2UqIGRhdGFiYXNlKQotICAgIDogbV9kYXRhYmFzZShkYXRh
YmFzZSkKK0lEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbDo6SURCRGF0YWJhc2VDYWxsYmFja3NJbXBs
KCkKKyAgICA6IG1fZGF0YWJhc2UoMCkKIHsKIH0KIApAQCAtNjQsMTAgKzY0LDExIEBAIHZvaWQg
SURCRGF0YWJhc2VDYWxsYmFja3NJbXBsOjpvblZlcnNpb25DaGFuZ2UoaW50NjRfdCBvbGRWZXJz
aW9uLCBpbnQ2NF90IG5ld1ZlCiAgICAgICAgIG1fZGF0YWJhc2UtPm9uVmVyc2lvbkNoYW5nZShv
bGRWZXJzaW9uLCBuZXdWZXJzaW9uKTsKIH0KIAotdm9pZCBJREJEYXRhYmFzZUNhbGxiYWNrc0lt
cGw6OnVucmVnaXN0ZXJEYXRhYmFzZShJREJEYXRhYmFzZSogZGF0YWJhc2UpCit2b2lkIElEQkRh
dGFiYXNlQ2FsbGJhY2tzSW1wbDo6Y29ubmVjdChJREJEYXRhYmFzZSogZGF0YWJhc2UpCiB7Ci0g
ICAgQVNTRVJUX1VOVVNFRChkYXRhYmFzZSwgZGF0YWJhc2UgPT0gbV9kYXRhYmFzZSk7Ci0gICAg
bV9kYXRhYmFzZSA9IDA7CisgICAgQVNTRVJUKCFtX2RhdGFiYXNlKTsKKyAgICBBU1NFUlQoZGF0
YWJhc2UpOworICAgIG1fZGF0YWJhc2UgPSBkYXRhYmFzZTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
RGF0YWJhc2VDYWxsYmFja3NJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwuaAppbmRleCA4NzgxZGJiMGEzMTUwYTQ0MzkyNDIz
N2UyZTFmMzRmYmFlMjkwZTk4Li5iYjRhMWFlNzRlODIyNzM4YjMzZGQ2YzA4MDllNzJlNjEwZmQz
Y2JjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRh
YmFzZUNhbGxiYWNrc0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwuaApAQCAtMzgsMTggKzM4LDIwIEBAIGNsYXNzIElE
QkRhdGFiYXNlOwogCiBjbGFzcyBJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwgOiBwdWJsaWMgSURC
RGF0YWJhc2VDYWxsYmFja3MgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQkRh
dGFiYXNlQ2FsbGJhY2tzSW1wbD4gY3JlYXRlKElEQkRhdGFiYXNlKik7CisgICAgc3RhdGljIFBh
c3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3NJbXBsPiBjcmVhdGUoKTsKICAgICB2aXJ0dWFs
IH5JREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwoKTsKIAorICAgIC8vIElEQkRhdGFiYXNlQ2FsbGJh
Y2tzCiAgICAgdmlydHVhbCB2b2lkIG9uRm9yY2VkQ2xvc2UoKTsKICAgICB2aXJ0dWFsIHZvaWQg
b25WZXJzaW9uQ2hhbmdlKGNvbnN0IFN0cmluZyYgdmVyc2lvbik7CiAgICAgdmlydHVhbCB2b2lk
IG9uVmVyc2lvbkNoYW5nZShpbnQ2NF90IG9sZFZlcnNpb24sIGludDY0X3QgbmV3VmVyc2lvbik7
Ci0gICAgdm9pZCB1bnJlZ2lzdGVyRGF0YWJhc2UoSURCRGF0YWJhc2UqKTsKKworICAgIHZvaWQg
Y29ubmVjdChJREJEYXRhYmFzZSopOwogCiBwcml2YXRlOgotICAgIElEQkRhdGFiYXNlQ2FsbGJh
Y2tzSW1wbChJREJEYXRhYmFzZSopOworICAgIElEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbCgpOwog
Ci0gICAgLy8gbV9kYXRhYmFzZSBoYXMgYSBSZWZQdHIgdG8gdGhpcywgc28gdXNlIGEgd2VhayBw
b2ludGVyIHRvIGF2b2lkIGEgY3ljbGUuCisgICAgLy8gVGhlIGluaXRpYWwgSURCT3BlbkRCUmVx
dWVzdCBvciBmaW5hbCBJREJEYXRhYmFzZSBtYWludGFpbnMgYSBSZWZQdHIgdG8gdGhpcwogICAg
IElEQkRhdGFiYXNlKiBtX2RhdGFiYXNlOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcAppbmRleCA0OTk4ZjZhMTdkNzExMWRhZjU5ZTVj
MzU2MmY4NTU2OTEyYjllMTg0Li5mNWZjY2I0ZTJhZGQ2MWE3Y2Y1ODZjYzM3OGNhODEyMWIwNmRm
OTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0
b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5
LmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiR3Jv
dXBTZXR0aW5ncy5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNlLmgiCisjaW5jbHVkZSAiSURCRGF0
YWJhc2VDYWxsYmFja3NJbXBsLmgiCiAjaW5jbHVkZSAiSURCRGF0YWJhc2VFeGNlcHRpb24uaCIK
ICNpbmNsdWRlICJJREJGYWN0b3J5QmFja2VuZEludGVyZmFjZS5oIgogI2luY2x1ZGUgIklEQktl
eS5oIgpAQCAtMTIwLDggKzEyMSw5IEBAIFBhc3NSZWZQdHI8SURCT3BlbkRCUmVxdWVzdD4gSURC
RmFjdG9yeTo6b3BlbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjCiAgICAgaWYg
KCFpc0NvbnRleHRWYWxpZChjb250ZXh0KSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBSZWZQ
dHI8SURCT3BlbkRCUmVxdWVzdD4gcmVxdWVzdCA9IElEQk9wZW5EQlJlcXVlc3Q6OmNyZWF0ZShj
b250ZXh0LCBJREJBbnk6OmNyZWF0ZU51bGwoKSwgdmVyc2lvbik7Ci0gICAgbV9iYWNrZW5kLT5v
cGVuKG5hbWUsIHZlcnNpb24sIHJlcXVlc3QsIGNvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCksIGNv
bnRleHQsIGdldEluZGV4ZWREQkRhdGFiYXNlUGF0aChjb250ZXh0KSk7CisgICAgUmVmUHRyPElE
QkRhdGFiYXNlQ2FsbGJhY2tzSW1wbD4gZGF0YWJhc2VDYWxsYmFja3MgPSBJREJEYXRhYmFzZUNh
bGxiYWNrc0ltcGw6OmNyZWF0ZSgpOworICAgIFJlZlB0cjxJREJPcGVuREJSZXF1ZXN0PiByZXF1
ZXN0ID0gSURCT3BlbkRCUmVxdWVzdDo6Y3JlYXRlKGNvbnRleHQsIElEQkFueTo6Y3JlYXRlTnVs
bCgpLCBkYXRhYmFzZUNhbGxiYWNrcywgdmVyc2lvbik7CisgICAgbV9iYWNrZW5kLT5vcGVuKG5h
bWUsIHZlcnNpb24sIHJlcXVlc3QsIGRhdGFiYXNlQ2FsbGJhY2tzLCBjb250ZXh0LT5zZWN1cml0
eU9yaWdpbigpLCBjb250ZXh0LCBnZXRJbmRleGVkREJEYXRhYmFzZVBhdGgoY29udGV4dCkpOwog
ICAgIHJldHVybiByZXF1ZXN0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5QmFja2VuZEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJbXBsLmNwcAppbmRleCA4ZGE1YzAy
ZTQyM2Y2ZjY0ZTU3OTczMGRiNzNmYTI5ZWMyYmU0NjA2Li5jN2VmODYwZTEzZTJkMTgxNzlhZTVl
Y2MwYzc1OTcwOWI4ODQzZGU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJGYWN0b3J5QmFja2VuZEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5jcHAKQEAgLTE1MCw3ICsxNTAs
NyBAQCBQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZT4gSURCRmFjdG9yeUJhY2tlbmRJbXBsOjpv
cGVuQmFja2luZ1N0b3JlKFBhc3NSZWZQdHI8UwogICAgIHJldHVybiAwOwogfQogCi12b2lkIElE
QkZhY3RvcnlCYWNrZW5kSW1wbDo6b3Blbihjb25zdCBTdHJpbmcmIG5hbWUsIGludDY0X3QgdmVy
c2lvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgUGFzc1JlZlB0cjxTZWN1
cml0eU9yaWdpbj4gcHJwU2VjdXJpdHlPcmlnaW4sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBj
b25zdCBTdHJpbmcmIGRhdGFEaXJlY3RvcnkpCit2b2lkIElEQkZhY3RvcnlCYWNrZW5kSW1wbDo6
b3Blbihjb25zdCBTdHJpbmcmIG5hbWUsIGludDY0X3QgdmVyc2lvbiwgUGFzc1JlZlB0cjxJREJD
YWxsYmFja3M+IGNhbGxiYWNrcywgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gZGF0
YWJhc2VDYWxsYmFja3MsIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHBycFNlY3VyaXR5T3Jp
Z2luLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBkYXRhRGlyZWN0b3J5
KQogewogICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW4gPSBwcnBTZWN1
cml0eU9yaWdpbjsKICAgICBjb25zdCBTdHJpbmcgdW5pcXVlSWRlbnRpZmllciA9IGNvbXB1dGVV
bmlxdWVJZGVudGlmaWVyKG5hbWUsIHNlY3VyaXR5T3JpZ2luLmdldCgpKTsKQEAgLTE3NSw5ICsx
NzUsOSBAQCB2b2lkIElEQkZhY3RvcnlCYWNrZW5kSW1wbDo6b3Blbihjb25zdCBTdHJpbmcmIG5h
bWUsIGludDY0X3QgdmVyc2lvbiwgUGFzc1JlZlB0cgogICAgICAgICBkYXRhYmFzZUJhY2tlbmQg
PSBpdC0+c2Vjb25kOwogCiAgICAgaWYgKHZlcnNpb24gPT0gSURCRGF0YWJhc2VNZXRhZGF0YTo6
Tm9JbnRWZXJzaW9uKQotICAgICAgICBkYXRhYmFzZUJhY2tlbmQtPm9wZW5Db25uZWN0aW9uKGNh
bGxiYWNrcyk7CisgICAgICAgIGRhdGFiYXNlQmFja2VuZC0+b3BlbkNvbm5lY3Rpb24oY2FsbGJh
Y2tzLCBkYXRhYmFzZUNhbGxiYWNrcyk7CiAgICAgZWxzZQotICAgICAgICBkYXRhYmFzZUJhY2tl
bmQtPm9wZW5Db25uZWN0aW9uV2l0aFZlcnNpb24oY2FsbGJhY2tzLCB2ZXJzaW9uKTsKKyAgICAg
ICAgZGF0YWJhc2VCYWNrZW5kLT5vcGVuQ29ubmVjdGlvbldpdGhWZXJzaW9uKGNhbGxiYWNrcywg
ZGF0YWJhc2VDYWxsYmFja3MsIHZlcnNpb24pOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5
QmFja2VuZEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3Rv
cnlCYWNrZW5kSW1wbC5oCmluZGV4IGNhZDNiNWEyNGIyOTlhOTI5OWMyYWQyOTRlM2IyZWEwNGNm
ZDcyYTUuLjNhZTA3MDMxMGRhZTg3NjQzNTk2Y2E5YjI5OTNjMzNhNDY3MGIxYjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnlCYWNrZW5kSW1w
bC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnlCYWNr
ZW5kSW1wbC5oCkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVt
b3ZlSURCQmFja2luZ1N0b3JlKGNvbnN0IFN0cmluZyYgZmlsZUlkZW50aWZpZXIpOwogCiAgICAg
dmlydHVhbCB2b2lkIGdldERhdGFiYXNlTmFtZXMoUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBQ
YXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0
IFN0cmluZyYgZGF0YURpcik7Ci0gICAgdmlydHVhbCB2b2lkIG9wZW4oY29uc3QgU3RyaW5nJiBu
YW1lLCBpbnQ2NF90IHZlcnNpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgUGFzc1JlZlB0
cjxTZWN1cml0eU9yaWdpbj4sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcm
IGRhdGFEaXIpOworICAgIHZpcnR1YWwgdm9pZCBvcGVuKGNvbnN0IFN0cmluZyYgbmFtZSwgaW50
NjRfdCB2ZXJzaW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8SURCRGF0
YWJhc2VDYWxsYmFja3M+LCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiwgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgZGF0YURpcik7CiAgICAgdmlydHVhbCB2b2lkIGRl
bGV0ZURhdGFiYXNlKGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+
LCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNv
bnN0IFN0cmluZyYgZGF0YURpcik7CiAKIHByb3RlY3RlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5QmFja2VuZEludGVyZmFj
ZS5oCmluZGV4IGY1NmZjMDZlMDBlNjMzZGY0ZDc0ZDk4M2RiMjNiMDI5YjUyMDU1ZTguLmJhYjIx
OWY1ZjRlYzU0ZGYyM2FjN2RmNGY0NTRiNzZmYWViNzJmMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJbnRl
cmZhY2UuaApAQCAtMjgsMTkgKzI4LDE5IEBACiAjaWZuZGVmIElEQkZhY3RvcnlCYWNrZW5kSW50
ZXJmYWNlX2gKICNkZWZpbmUgSURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2VfaAogCi0jaW5jbHVk
ZSAiSURCQ2FsbGJhY2tzLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRl
IDx3dGYvVGhyZWFkaW5nLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgogCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgRnJhbWU7CitjbGFzcyBJREJDYWxsYmFja3M7CiBj
bGFzcyBJREJEYXRhYmFzZTsKK2NsYXNzIElEQkRhdGFiYXNlQ2FsbGJhY2tzOwogY2xhc3MgU2Vj
dXJpdHlPcmlnaW47Ci1jbGFzcyBXb3JrZXJDb250ZXh0OworY2xhc3MgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dDsKIAogdHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKIApAQCAtNTQsNyArNTQsNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB+SURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2UoKSB7IH0K
IAogICAgIHZpcnR1YWwgdm9pZCBnZXREYXRhYmFzZU5hbWVzKFBhc3NSZWZQdHI8SURCQ2FsbGJh
Y2tzPiwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBjb25zdCBTdHJpbmcmIGRhdGFEaXIpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgb3Blbihjb25z
dCBTdHJpbmcmIG5hbWUsIGludDY0X3QgdmVyc2lvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+
LCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNv
bnN0IFN0cmluZyYgZGF0YURpcikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBvcGVuKGNvbnN0IFN0
cmluZyYgbmFtZSwgaW50NjRfdCB2ZXJzaW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIFBh
c3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+LCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2lu
PiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgZGF0YURpcikgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBkZWxldGVEYXRhYmFzZShjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NS
ZWZQdHI8SURCQ2FsbGJhY2tzPiwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4sIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIGRhdGFEaXIpID0gMDsKIH07CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9wZW5EQlJlcXVlc3Qu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT3BlbkRCUmVxdWVzdC5j
cHAKaW5kZXggZTg5YTc0Y2ZkOWJmYjdmZjc2M2JhNmVlMjVmZDIyYmNmMjQ2OTUwYS4uNmVmMTZj
ZjAyOTNhNjkxOTBmOTZjZDNhODVhYzM1MjcyM2ViYjZmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT3BlbkRCUmVxdWVzdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT3BlbkRCUmVxdWVzdC5jcHAKQEAgLTI5LDYg
KzI5LDcgQEAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIAogI2luY2x1ZGUgIklEQkRh
dGFiYXNlLmgiCisjaW5jbHVkZSAiSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsLmgiCiAjaW5jbHVk
ZSAiSURCUGVuZGluZ1RyYW5zYWN0aW9uTW9uaXRvci5oIgogI2luY2x1ZGUgIklEQlRyYWNpbmcu
aCIKICNpbmNsdWRlICJJREJVcGdyYWRlTmVlZGVkRXZlbnQuaCIKQEAgLTM2LDE1ICszNywxNiBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NSZWZQdHI8SURCT3BlbkRCUmVxdWVzdD4g
SURCT3BlbkRCUmVxdWVzdDo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQs
IFBhc3NSZWZQdHI8SURCQW55PiBzb3VyY2UsIGludDY0X3QgdmVyc2lvbikKK1Bhc3NSZWZQdHI8
SURCT3BlbkRCUmVxdWVzdD4gSURCT3BlbkRCUmVxdWVzdDo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8SURCQW55PiBzb3VyY2UsIFBhc3NSZWZQdHI8
SURCRGF0YWJhc2VDYWxsYmFja3NJbXBsPiBjYWxsYmFja3MsIGludDY0X3QgdmVyc2lvbikKIHsK
LSAgICBSZWZQdHI8SURCT3BlbkRCUmVxdWVzdD4gcmVxdWVzdChhZG9wdFJlZihuZXcgSURCT3Bl
bkRCUmVxdWVzdChjb250ZXh0LCBzb3VyY2UsIHZlcnNpb24pKSk7CisgICAgUmVmUHRyPElEQk9w
ZW5EQlJlcXVlc3Q+IHJlcXVlc3QoYWRvcHRSZWYobmV3IElEQk9wZW5EQlJlcXVlc3QoY29udGV4
dCwgc291cmNlLCBjYWxsYmFja3MsIHZlcnNpb24pKSk7CiAgICAgcmVxdWVzdC0+c3VzcGVuZElm
TmVlZGVkKCk7CiAgICAgcmV0dXJuIHJlcXVlc3QucmVsZWFzZSgpOwogfQogCi1JREJPcGVuREJS
ZXF1ZXN0OjpJREJPcGVuREJSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQs
IFBhc3NSZWZQdHI8SURCQW55PiBzb3VyY2UsIGludDY0X3QgdmVyc2lvbikKK0lEQk9wZW5EQlJl
cXVlc3Q6OklEQk9wZW5EQlJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwg
UGFzc1JlZlB0cjxJREJBbnk+IHNvdXJjZSwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNr
c0ltcGw+IGNhbGxiYWNrcywgaW50NjRfdCB2ZXJzaW9uKQogICAgIDogSURCUmVxdWVzdChjb250
ZXh0LCBzb3VyY2UsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZTo6Tm9ybWFsVGFzaywg
MCkKKyAgICAsIG1fZGF0YWJhc2VDYWxsYmFja3MoY2FsbGJhY2tzKQogICAgICwgbV92ZXJzaW9u
KHZlcnNpb24pCiB7CiAgICAgQVNTRVJUKCFtX3Jlc3VsdCk7CkBAIC03Miw5ICs3NCwxMyBAQCB2
b2lkIElEQk9wZW5EQlJlcXVlc3Q6Om9uVXBncmFkZU5lZWRlZChpbnQ2NF90IG9sZFZlcnNpb24s
IFBhc3NSZWZQdHI8SURCVHJhbnNhYwogICAgIGlmICghc2hvdWxkRW5xdWV1ZUV2ZW50KCkpCiAg
ICAgICAgIHJldHVybjsKIAorICAgIEFTU0VSVChtX2RhdGFiYXNlQ2FsbGJhY2tzKTsKKwogICAg
IFJlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+IGRhdGFiYXNlQmFja2VuZCA9IHBy
cERhdGFiYXNlQmFja2VuZDsKICAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJm
YWNlPiB0cmFuc2FjdGlvbkJhY2tlbmQgPSBwcnBUcmFuc2FjdGlvbkJhY2tlbmQ7Ci0gICAgUmVm
UHRyPElEQkRhdGFiYXNlPiBpZGJEYXRhYmFzZSA9IElEQkRhdGFiYXNlOjpjcmVhdGUoc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpLCBkYXRhYmFzZUJhY2tlbmQpOworICAgIFJlZlB0cjxJREJEYXRh
YmFzZT4gaWRiRGF0YWJhc2UgPSBJREJEYXRhYmFzZTo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSwgZGF0YWJhc2VCYWNrZW5kLCBtX2RhdGFiYXNlQ2FsbGJhY2tzKTsKKyAgICBtX2Rh
dGFiYXNlQ2FsbGJhY2tzLT5jb25uZWN0KGlkYkRhdGFiYXNlLmdldCgpKTsKKyAgICBtX2RhdGFi
YXNlQ2FsbGJhY2tzID0gMDsKIAogICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbj4gZnJvbnRlbmQg
PSBJREJUcmFuc2FjdGlvbjo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgdHJhbnNh
Y3Rpb25CYWNrZW5kLCBJREJUcmFuc2FjdGlvbjo6VkVSU0lPTl9DSEFOR0UsIGlkYkRhdGFiYXNl
LmdldCgpLCB0aGlzKTsKICAgICB0cmFuc2FjdGlvbkJhY2tlbmQtPnNldENhbGxiYWNrcyhmcm9u
dGVuZC5nZXQoKSk7CkBAIC05OCwxMSArMTA0LDE0IEBAIHZvaWQgSURCT3BlbkRCUmVxdWVzdDo6
b25TdWNjZXNzKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiBiYWNrZW5k
CiAgICAgaWYgKG1fcmVzdWx0KSB7CiAgICAgICAgIGlkYkRhdGFiYXNlID0gbV9yZXN1bHQtPmlk
YkRhdGFiYXNlKCk7CiAgICAgICAgIEFTU0VSVChpZGJEYXRhYmFzZSk7CisgICAgICAgIEFTU0VS
VCghbV9kYXRhYmFzZUNhbGxiYWNrcyk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgaWRiRGF0YWJh
c2UgPSBJREJEYXRhYmFzZTo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgYmFja2Vu
ZCk7CisgICAgICAgIEFTU0VSVChtX2RhdGFiYXNlQ2FsbGJhY2tzKTsKKyAgICAgICAgaWRiRGF0
YWJhc2UgPSBJREJEYXRhYmFzZTo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgYmFj
a2VuZCwgbV9kYXRhYmFzZUNhbGxiYWNrcyk7CisgICAgICAgIG1fZGF0YWJhc2VDYWxsYmFja3Mt
PmNvbm5lY3QoaWRiRGF0YWJhc2UuZ2V0KCkpOworICAgICAgICBtX2RhdGFiYXNlQ2FsbGJhY2tz
ID0gMDsKICAgICAgICAgbV9yZXN1bHQgPSBJREJBbnk6OmNyZWF0ZShpZGJEYXRhYmFzZS5nZXQo
KSk7CiAgICAgfQotICAgIGlkYkRhdGFiYXNlLT5yZWdpc3RlckZyb250ZW5kQ2FsbGJhY2tzKCk7
CiAgICAgZW5xdWV1ZUV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLnN1Y2Nlc3NFdmVu
dCwgZmFsc2UsIGZhbHNlKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQk9wZW5EQlJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQk9wZW5EQlJlcXVlc3QuaAppbmRleCBjODdkYjdlZDFiZGQyZDQwNTNlNzRj
MTAyYTJlYzZkNjk1OTcyZTNmLi4xZTg0YjU0YzlkYTUwN2FmNTUxOWM4MDg4OTg0NmQ0MmVmZGVk
NDlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPcGVu
REJSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT3Bl
bkRCUmVxdWVzdC5oCkBAIC0zMiw5ICszMiwxMSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
K2NsYXNzIElEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbDsKKwogY2xhc3MgSURCT3BlbkRCUmVxdWVz
dCA6IHB1YmxpYyBJREJSZXF1ZXN0IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJ
REJPcGVuREJSZXF1ZXN0PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQ
dHI8SURCQW55PiBzb3VyY2UsIGludDY0X3QgdmVyc2lvbik7CisgICAgc3RhdGljIFBhc3NSZWZQ
dHI8SURCT3BlbkRCUmVxdWVzdD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNz
UmVmUHRyPElEQkFueT4gc291cmNlLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzSW1w
bD4sIGludDY0X3QgdmVyc2lvbik7CiAgICAgdmlydHVhbCB+SURCT3BlbkRCUmVxdWVzdCgpOwog
CiAgICAgdXNpbmcgSURCUmVxdWVzdDo6b25TdWNjZXNzOwpAQCAtNTMsOCArNTUsOSBAQCBwcm90
ZWN0ZWQ6CiAgICAgdmlydHVhbCBib29sIHNob3VsZEVucXVldWVFdmVudCgpIGNvbnN0IE9WRVJS
SURFOwogCiBwcml2YXRlOgotICAgIElEQk9wZW5EQlJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIFBhc3NSZWZQdHI8SURCQW55PiBzb3VyY2UsIGludDY0X3QgdmVyc2lvbik7CisgICAg
SURCT3BlbkRCUmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJB
bnk+IHNvdXJjZSwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGw+LCBpbnQ2NF90
IHZlcnNpb24pOwogCisgICAgUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbD4gbV9kYXRh
YmFzZUNhbGxiYWNrczsKICAgICBpbnQ2NF90IG1fdmVyc2lvbjsKIH07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcAppbmRleCAy
MWU1ZjMyOGUzNDU1Mzg5Y2UwODU2NjIwNzBlZWVhMTQ2NTVmNjI4Li5lMWUwNWYxZjI4ODY4ZGIy
ZDI4OWYyZWYwNWNlYjQyZjUyNTBlY2NkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCkBAIC0yOTQsMTIgKzI5NCwxMCBAQCB2
b2lkIElEQlRyYW5zYWN0aW9uOjpvbkFib3J0KCkKICAgICB9CiAgICAgbV9vYmplY3RTdG9yZUNs
ZWFudXBNYXAuY2xlYXIoKTsKICAgICBjbG9zZU9wZW5DdXJzb3JzKCk7Ci0gICAgbV9kYXRhYmFz
ZS0+dHJhbnNhY3Rpb25GaW5pc2hlZCh0aGlzKTsKLQotICAgIGlmIChtX2NvbnRleHRTdG9wcGVk
IHx8ICFzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCi0gICAgICAgIHJldHVybjsKIAorICAgIC8v
IEVucXVldWUgZXZlbnRzIGJlZm9yZSBub3RpZnlpbmcgZGF0YWJhc2UsIGFzIGRhdGFiYXNlIG1h
eSBjbG9zZSB3aGljaCBlbnF1ZXVlcyBtb3JlIGV2ZW50cyBhbmQgb3JkZXIgbWF0dGVycy4KICAg
ICBlbnF1ZXVlRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuYWJvcnRFdmVudCwgdHJ1
ZSwgZmFsc2UpKTsKKyAgICBtX2RhdGFiYXNlLT50cmFuc2FjdGlvbkZpbmlzaGVkKHRoaXMpOwog
fQogCiB2b2lkIElEQlRyYW5zYWN0aW9uOjpvbkNvbXBsZXRlKCkKQEAgLTMwOSwxMiArMzA3LDEw
IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246Om9uQ29tcGxldGUoKQogICAgIG1fc3RhdGUgPSBGaW5p
c2hpbmc7CiAgICAgbV9vYmplY3RTdG9yZUNsZWFudXBNYXAuY2xlYXIoKTsKICAgICBjbG9zZU9w
ZW5DdXJzb3JzKCk7Ci0gICAgbV9kYXRhYmFzZS0+dHJhbnNhY3Rpb25GaW5pc2hlZCh0aGlzKTsK
LQotICAgIGlmIChtX2NvbnRleHRTdG9wcGVkIHx8ICFzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkp
Ci0gICAgICAgIHJldHVybjsKIAorICAgIC8vIEVucXVldWUgZXZlbnRzIGJlZm9yZSBub3RpZnlp
bmcgZGF0YWJhc2UsIGFzIGRhdGFiYXNlIG1heSBjbG9zZSB3aGljaCBlbnF1ZXVlcyBtb3JlIGV2
ZW50cyBhbmQgb3JkZXIgbWF0dGVycy4KICAgICBlbnF1ZXVlRXZlbnQoRXZlbnQ6OmNyZWF0ZShl
dmVudE5hbWVzKCkuY29tcGxldGVFdmVudCwgZmFsc2UsIGZhbHNlKSk7CisgICAgbV9kYXRhYmFz
ZS0+dHJhbnNhY3Rpb25GaW5pc2hlZCh0aGlzKTsKIH0KIAogYm9vbCBJREJUcmFuc2FjdGlvbjo6
aGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwCmluZGV4IDVkZmQ5OTUxOTU4YmE2MGU4
MjhlNGVjNTM1MDM2YzM1MTQxOWEyZGEuLmYxMmJkMGRhY2Y4ZTMwYWZiOGRmMjU1ODZlNTkxNTVj
NmQ4ZDJjNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJ
bmRleGVkREJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckluZGV4ZWREQkFnZW50LmNwcApAQCAtMTcyLDM1ICsxNzIsMzUgQEAgcHJpdmF0ZToKICAgICBT
dHJpbmcgbV9zZWN1cml0eU9yaWdpbjsKIH07CiAKLWNsYXNzIEV4ZWN1dGFibGVXaXRoRGF0YWJh
c2UgOiBwdWJsaWMgUmVmQ291bnRlZDxFeGVjdXRhYmxlV2l0aERhdGFiYXNlPiB7Ci1wdWJsaWM6
Ci0gICAgdmlydHVhbCB+RXhlY3V0YWJsZVdpdGhEYXRhYmFzZSgpIHsgfTsKLSAgICB2b2lkIHN0
YXJ0KElEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlKiwgU2VjdXJpdHlPcmlnaW4qLCBTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUpOwotICAgIHZpcnR1
YWwgdm9pZCBleGVjdXRlKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPikg
PSAwOwotfTsKLQogY2xhc3MgRGF0YWJhc2VDb25uZWN0aW9uIHsKIHB1YmxpYzoKICAgICBEYXRh
YmFzZUNvbm5lY3Rpb24oKQogICAgICAgICA6IG1faWRiRGF0YWJhc2VDYWxsYmFja3MoSW5zcGVj
dG9ySURCRGF0YWJhc2VDYWxsYmFja3M6OmNyZWF0ZSgpKSB7IH0KIAotICAgIHZvaWQgY29ubmVj
dChQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4gaWRiRGF0YWJhc2UpCi0g
ICAgewotICAgICAgICBtX2lkYkRhdGFiYXNlID0gaWRiRGF0YWJhc2U7Ci0gICAgICAgIG1faWRi
RGF0YWJhc2UtPnJlZ2lzdGVyRnJvbnRlbmRDYWxsYmFja3MobV9pZGJEYXRhYmFzZUNhbGxiYWNr
cyk7Ci0gICAgfQotCiAgICAgfkRhdGFiYXNlQ29ubmVjdGlvbigpCiAgICAgewogICAgICAgICBp
ZiAobV9pZGJEYXRhYmFzZSkKICAgICAgICAgICAgIG1faWRiRGF0YWJhc2UtPmNsb3NlKG1faWRi
RGF0YWJhc2VDYWxsYmFja3MpOwogICAgIH0KIAorICAgIHZvaWQgY29ubmVjdChQYXNzUmVmUHRy
PElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4gZGF0YWJhc2UpIHsgbV9pZGJEYXRhYmFzZSA9
IGRhdGFiYXNlOyB9CisgICAgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gY2FsbGJh
Y2tzKCkgeyByZXR1cm4gbV9pZGJEYXRhYmFzZUNhbGxiYWNrczsgfQorCiBwcml2YXRlOgogICAg
IFJlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+IG1faWRiRGF0YWJhc2U7CiAgICAg
UmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBtX2lkYkRhdGFiYXNlQ2FsbGJhY2tzOwogfTsK
IAorY2xhc3MgRXhlY3V0YWJsZVdpdGhEYXRhYmFzZSA6IHB1YmxpYyBSZWZDb3VudGVkPEV4ZWN1
dGFibGVXaXRoRGF0YWJhc2U+IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5FeGVjdXRhYmxlV2l0
aERhdGFiYXNlKCkgeyB9OworICAgIHZvaWQgc3RhcnQoSURCRmFjdG9yeUJhY2tlbmRJbnRlcmZh
Y2UqLCBTZWN1cml0eU9yaWdpbiosIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJp
bmcmIGRhdGFiYXNlTmFtZSk7CisgICAgdm9pZCBjb25uZWN0KFBhc3NSZWZQdHI8SURCRGF0YWJh
c2VCYWNrZW5kSW50ZXJmYWNlPiBkYXRhYmFzZSkgeyBtX2Nvbm5lY3Rpb24uY29ubmVjdChkYXRh
YmFzZSk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZXhlY3V0ZShQYXNzUmVmUHRyPElEQkRhdGFiYXNl
QmFja2VuZEludGVyZmFjZT4pID0gMDsKK3ByaXZhdGU6CisgICAgRGF0YWJhc2VDb25uZWN0aW9u
IG1fY29ubmVjdGlvbjsKK307CisKIGNsYXNzIE9wZW5EYXRhYmFzZUNhbGxiYWNrIDogcHVibGlj
IEluc3BlY3RvcklEQkNhbGxiYWNrIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxP
cGVuRGF0YWJhc2VDYWxsYmFjaz4gY3JlYXRlKEV4ZWN1dGFibGVXaXRoRGF0YWJhc2UqIGV4ZWN1
dGFibGVXaXRoRGF0YWJhc2UpCkBAIC0yMTMsNiArMjEzLDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+
IHBycERhdGFiYXNlKQogICAgIHsKICAgICAgICAgUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZElu
dGVyZmFjZT4gaWRiRGF0YWJhc2UgPSBwcnBEYXRhYmFzZTsKKyAgICAgICAgbV9leGVjdXRhYmxl
V2l0aERhdGFiYXNlLT5jb25uZWN0KGlkYkRhdGFiYXNlKTsKICAgICAgICAgbV9leGVjdXRhYmxl
V2l0aERhdGFiYXNlLT5leGVjdXRlKGlkYkRhdGFiYXNlKTsKICAgICB9CiAKQEAgLTIyNSw3ICsy
MjYsNyBAQCBwcml2YXRlOgogdm9pZCBFeGVjdXRhYmxlV2l0aERhdGFiYXNlOjpzdGFydChJREJG
YWN0b3J5QmFja2VuZEludGVyZmFjZSogaWRiRmFjdG9yeSwgU2VjdXJpdHlPcmlnaW4qIHNlY3Vy
aXR5T3JpZ2luLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcm
IGRhdGFiYXNlTmFtZSkKIHsKICAgICBSZWZQdHI8T3BlbkRhdGFiYXNlQ2FsbGJhY2s+IGNhbGxi
YWNrID0gT3BlbkRhdGFiYXNlQ2FsbGJhY2s6OmNyZWF0ZSh0aGlzKTsKLSAgICBpZGJGYWN0b3J5
LT5vcGVuKGRhdGFiYXNlTmFtZSwgSURCRGF0YWJhc2VNZXRhZGF0YTo6Tm9JbnRWZXJzaW9uLCBj
YWxsYmFjay5nZXQoKSwgc2VjdXJpdHlPcmlnaW4sIGNvbnRleHQsIFN0cmluZygpKTsKKyAgICBp
ZGJGYWN0b3J5LT5vcGVuKGRhdGFiYXNlTmFtZSwgSURCRGF0YWJhc2VNZXRhZGF0YTo6Tm9JbnRW
ZXJzaW9uLCBjYWxsYmFjaywgbV9jb25uZWN0aW9uLmNhbGxiYWNrcygpLCBzZWN1cml0eU9yaWdp
biwgY29udGV4dCwgU3RyaW5nKCkpOwogfQogCiBzdGF0aWMgUGFzc1JlZlB0cjxJREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbnRlcmZhY2U+IHRyYW5zYWN0aW9uRm9yRGF0YWJhc2UoSURCRGF0YWJhc2VC
YWNrZW5kSW50ZXJmYWNlKiBpZGJEYXRhYmFzZSwgY29uc3QgU3RyaW5nJiBvYmplY3RTdG9yZU5h
bWUpCkBAIC0yOTYsNyArMjk3LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBleGVjdXRl
KFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiBwcnBEYXRhYmFzZSkKICAg
ICB7CiAgICAgICAgIFJlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+IGlkYkRhdGFi
YXNlID0gcHJwRGF0YWJhc2U7Ci0gICAgICAgIG1fY29ubmVjdGlvbi5jb25uZWN0KGlkYkRhdGFi
YXNlKTsKICAgICAgICAgaWYgKCFtX3JlcXVlc3RDYWxsYmFjay0+aXNBY3RpdmUoKSkKICAgICAg
ICAgICAgIHJldHVybjsKIApAQCAtMzM5LDcgKzMzOSw2IEBAIHByaXZhdGU6CiAgICAgRGF0YWJh
c2VMb2FkZXJDYWxsYmFjayhQYXNzUmVmUHRyPFJlcXVlc3REYXRhYmFzZUNhbGxiYWNrPiByZXF1
ZXN0Q2FsbGJhY2spCiAgICAgICAgIDogbV9yZXF1ZXN0Q2FsbGJhY2socmVxdWVzdENhbGxiYWNr
KSB7IH0KICAgICBSZWZQdHI8UmVxdWVzdERhdGFiYXNlQ2FsbGJhY2s+IG1fcmVxdWVzdENhbGxi
YWNrOwotICAgIERhdGFiYXNlQ29ubmVjdGlvbiBtX2Nvbm5lY3Rpb247CiB9OwogCiBzdGF0aWMg
UGFzc1JlZlB0cjxJREJLZXk+IGlkYktleUZyb21JbnNwZWN0b3JPYmplY3QoSW5zcGVjdG9yT2Jq
ZWN0KiBrZXkpCkBAIC01NTUsNyArNTU0LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBl
eGVjdXRlKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiBwcnBEYXRhYmFz
ZSkKICAgICB7CiAgICAgICAgIFJlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+IGlk
YkRhdGFiYXNlID0gcHJwRGF0YWJhc2U7Ci0gICAgICAgIG1fY29ubmVjdGlvbi5jb25uZWN0KGlk
YkRhdGFiYXNlKTsKICAgICAgICAgaWYgKCFtX3JlcXVlc3RDYWxsYmFjay0+aXNBY3RpdmUoKSkK
ICAgICAgICAgICAgIHJldHVybjsKIApAQCAtNTk3LDcgKzU5NSw2IEBAIHByaXZhdGU6CiAgICAg
UmVmUHRyPElEQktleVJhbmdlPiBtX2lkYktleVJhbmdlOwogICAgIGludCBtX3NraXBDb3VudDsK
ICAgICB1bnNpZ25lZCBtX3BhZ2VTaXplOwotICAgIERhdGFiYXNlQ29ubmVjdGlvbiBtX2Nvbm5l
Y3Rpb247CiB9OwogCiB9IC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViSURCRGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYklEQkRhdGFiYXNlLmgKaW5kZXggYThiMDM1YzcyN2Y4OGRkYmYwY2UxNzBlYWQ3
NDE4NWM2OGJlMmFkNi4uNTkyYTEwZTNlMTk3MDFmZTQwODhmMzI5ZDEyZWM5ODAwZjk0ZDI5NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCRGF0YWJhc2Uu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJEYXRhYmFzZS5oCkBA
IC02Niw2ICs2Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY2xvc2UoKSB7IFdFQktJ
VF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogICAgIHZpcnR1YWwgdm9pZCBmb3JjZUNsb3NlKCkg
eyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KIAorICAgIC8vIEZJWE1FOiBSZW1vdmUg
dGhpcyBtZXRob2QgYWZ0ZXIgV0s5MDQxMSBjbGVhbnVwIGlzIGNvbXBsZXRlIG9uIHRoZSBDaHJv
bWl1bSBzaWRlLgogICAgIHZpcnR1YWwgdm9pZCBvcGVuKFdlYklEQkRhdGFiYXNlQ2FsbGJhY2tz
KikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KIAogcHJvdGVjdGVkOgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCRmFjdG9yeS5oIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCRmFjdG9yeS5oCmluZGV4IDcwYzhjODQw
YzExODEwZWM3ZWE1MTQ1NWM0ZmRlNzQxYzJiMzFhZGIuLjY5YTQ1M2FiY2Q5NDRlMzcyNmFiNWFi
YWU4NmU0N2M3ZDlhNWM0MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYklEQkZhY3RvcnkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJJREJGYWN0b3J5LmgKQEAgLTU1LDcgKzU1LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2
b2lkIGdldERhdGFiYXNlTmFtZXMoV2ViSURCQ2FsbGJhY2tzKiBjYWxsYmFja3MsIGNvbnN0IFdl
YlNlY3VyaXR5T3JpZ2luJiBvcmlnaW4sIFdlYkZyYW1lKiBmcmFtZSwgY29uc3QgV2ViU3RyaW5n
JiBkYXRhRGlyKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogCi0gICAgLy8gRklY
TUU6IFRoaXMgb3ZlcmxvYWQgc2hvdWxkIGJlIHJlbW92ZWQgd2hlbiBXSzkwNDExIGxhbmRzLgor
ICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyBvdmVybG9hZCBhZnRlciBXSzkwNDExIGNsZWFudXAg
aXMgY29tcGxldGUgb24gdGhlIENocm9taXVtIHNpZGUuCiAgICAgLy8gVGhlIFdlYktpdCBpbXBs
ZW1lbnRhdGlvbiBvZiBvcGVuIGlnbm9yZXMgdGhlIFdlYkZyYW1lKiBwYXJhbWV0ZXIuCiAgICAg
dmlydHVhbCB2b2lkIG9wZW4oY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBsb25nIGxvbmcgdmVyc2lv
biwgV2ViSURCQ2FsbGJhY2tzKiBjYWxsYmFja3MsIGNvbnN0IFdlYlNlY3VyaXR5T3JpZ2luJiBv
cmlnaW4sIFdlYkZyYW1lKiBmcmFtZSwgY29uc3QgV2ViU3RyaW5nJiBkYXRhRGlyKSB7IFdFQktJ
VF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9JREJDYWxsYmFja3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9JREJDYWxsYmFja3NQcm94eS5jcHAKaW5kZXggMTkzYmYyYjVmNmM2NjZjN2JkNTA2MmFk
NDQ3NDQxNWJmYjMwNDI5Ny4uYWY0OTg0YTc3YzRiODVlMjZlMjllZjg4YThkMjgzZGU0NmFjYzM4
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ2FsbGJhY2tzUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkNhbGxiYWNrc1Byb3h5
LmNwcApAQCAtMzQsMTMgKzM0LDE1IEBACiAjaW5jbHVkZSAiSURCQ3Vyc29yQmFja2VuZEludGVy
ZmFjZS5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZS5oIgogI2luY2x1
ZGUgIklEQkRhdGFiYXNlQmFja2VuZFByb3h5LmgiCisjaW5jbHVkZSAiSURCRGF0YWJhc2VDYWxs
YmFja3NQcm94eS5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNlRXJyb3IuaCIKICNpbmNsdWRlICJJ
REJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJJREJUcmFuc2FjdGlv
bkJhY2tlbmRJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJXZWJJREJDYWxsYmFja3MuaCIKICNpbmNs
dWRlICJXZWJJREJDdXJzb3JJbXBsLmgiCi0jaW5jbHVkZSAiV2ViSURCRGF0YWJhc2VJbXBsLmgi
CisjaW5jbHVkZSAiV2ViSURCRGF0YWJhc2VDYWxsYmFja3MuaCIKICNpbmNsdWRlICJXZWJJREJE
YXRhYmFzZUVycm9yLmgiCisjaW5jbHVkZSAiV2ViSURCRGF0YWJhc2VJbXBsLmgiCiAjaW5jbHVk
ZSAiV2ViSURCS2V5LmgiCiAjaW5jbHVkZSAiV2ViSURCVHJhbnNhY3Rpb25JbXBsLmgiCiAjaW5j
bHVkZSAicGxhdGZvcm0vV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCkBAIC03NSw3ICs3Nyw4
IEBAIHZvaWQgSURCQ2FsbGJhY2tzUHJveHk6Om9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQkN1cnNv
ckJhY2tlbmRJbnRlcmZhY2U+IGlkYkN1cnNvCiAKIHZvaWQgSURCQ2FsbGJhY2tzUHJveHk6Om9u
U3VjY2VzcyhQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4gYmFja2VuZCkK
IHsKLSAgICBtX2NhbGxiYWNrcy0+b25TdWNjZXNzKG5ldyBXZWJJREJEYXRhYmFzZUltcGwoYmFj
a2VuZCkpOworICAgIEFTU0VSVChtX2RhdGFiYXNlQ2FsbGJhY2tzLmdldCgpKTsKKyAgICBtX2Nh
bGxiYWNrcy0+b25TdWNjZXNzKG5ldyBXZWJJREJEYXRhYmFzZUltcGwoYmFja2VuZCwgbV9kYXRh
YmFzZUNhbGxiYWNrcy5yZWxlYXNlKCkpKTsKIH0KIAogdm9pZCBJREJDYWxsYmFja3NQcm94eTo6
b25TdWNjZXNzKFBhc3NSZWZQdHI8SURCS2V5PiBpZGJLZXkpCkBAIC0xMzcsOSArMTQwLDE3IEBA
IHZvaWQgSURCQ2FsbGJhY2tzUHJveHk6Om9uQmxvY2tlZChpbnQ2NF90IGV4aXN0aW5nVmVyc2lv
bikKIAogdm9pZCBJREJDYWxsYmFja3NQcm94eTo6b25VcGdyYWRlTmVlZGVkKGludDY0X3Qgb2xk
VmVyc2lvbiwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IHRyYW5z
YWN0aW9uLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4gZGF0YWJhc2Up
CiB7Ci0gICAgbV9jYWxsYmFja3MtPm9uVXBncmFkZU5lZWRlZChvbGRWZXJzaW9uLCBuZXcgV2Vi
SURCVHJhbnNhY3Rpb25JbXBsKHRyYW5zYWN0aW9uKSwgbmV3IFdlYklEQkRhdGFiYXNlSW1wbChk
YXRhYmFzZSkpOworICAgIEFTU0VSVChtX2RhdGFiYXNlQ2FsbGJhY2tzKTsKKyAgICBtX2NhbGxi
YWNrcy0+b25VcGdyYWRlTmVlZGVkKG9sZFZlcnNpb24sIG5ldyBXZWJJREJUcmFuc2FjdGlvbklt
cGwodHJhbnNhY3Rpb24pLCBuZXcgV2ViSURCRGF0YWJhc2VJbXBsKGRhdGFiYXNlLCBtX2RhdGFi
YXNlQ2FsbGJhY2tzKSk7Cit9CisKK3ZvaWQgSURCQ2FsbGJhY2tzUHJveHk6OnNldERhdGFiYXNl
Q2FsbGJhY2tzKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3NQcm94eT4gZGF0YWJhc2VD
YWxsYmFja3MpCit7CisgICAgQVNTRVJUKCFtX2RhdGFiYXNlQ2FsbGJhY2tzKTsKKyAgICBtX2Rh
dGFiYXNlQ2FsbGJhY2tzID0gZGF0YWJhc2VDYWxsYmFja3M7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdAogCisKICNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkNhbGxiYWNrc1Byb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJDYWxsYmFja3NQcm94eS5oCmluZGV4IDgyNTc1OGFh
ZGU5M2Y0MWYyNjI5MzAzNjhiZDk2NjYwZmU1MmE1MjcuLmY2MTNhODVjMmU0ZWQxNmNiODg3ZjY4
YTA1MDMxODQ5Y2IxY2VmMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0lEQkNhbGxiYWNrc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURC
Q2FsbGJhY2tzUHJveHkuaApAQCAtMzksNiArMzksNyBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiAK
IGNsYXNzIFdlYklEQkNhbGxiYWNrczsKK2NsYXNzIElEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHk7
CiAKIGNsYXNzIElEQkNhbGxiYWNrc1Byb3h5IDogcHVibGljIFdlYkNvcmU6OklEQkNhbGxiYWNr
cyB7CiBwdWJsaWM6CkBAIC01OSwxMCArNjAsMTMgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCBvbkJsb2NrZWQoaW50NjRfdCBleGlzdGluZ1ZlcnNpb24pOwogICAgIHZpcnR1YWwgdm9pZCBv
blVwZ3JhZGVOZWVkZWQoaW50NjRfdCBvbGRWZXJzaW9uLCBQYXNzUmVmUHRyPFdlYkNvcmU6OklE
QlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4sIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCRGF0
YWJhc2VCYWNrZW5kSW50ZXJmYWNlPik7CiAKKyAgICB2b2lkIHNldERhdGFiYXNlQ2FsbGJhY2tz
KFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3NQcm94eT4pOworCiBwcml2YXRlOgogICAg
IElEQkNhbGxiYWNrc1Byb3h5KFBhc3NPd25QdHI8V2ViSURCQ2FsbGJhY2tzPik7CiAKICAgICBP
d25QdHI8V2ViSURCQ2FsbGJhY2tzPiBtX2NhbGxiYWNrczsKKyAgICBSZWZQdHI8SURCRGF0YWJh
c2VDYWxsYmFja3NQcm94eT4gbV9kYXRhYmFzZUNhbGxiYWNrczsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0
YWJhc2VCYWNrZW5kUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0
YWJhc2VCYWNrZW5kUHJveHkuY3BwCmluZGV4IDU2YWZlNWZiNWQyYjYyZmE0NDQ5OTU0NDY5MzBh
MDFkMGJjOTc3OTguLjUwMWNlNjFmYjU5NTYyNjZiMGMzYmYxYjRjMDJhZWY2Y2RhMDA4MDYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQmFja2VuZFBy
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUJhY2tl
bmRQcm94eS5jcHAKQEAgLTEwNywxMSArMTA3LDYgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRQ
cm94eTo6Y2xvc2UoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4pCiAgICAgbV93ZWJJ
REJEYXRhYmFzZS0+Y2xvc2UoKTsKIH0KIAotdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRQcm94eTo6
cmVnaXN0ZXJGcm9udGVuZENhbGxiYWNrcyhQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tz
PiBkYXRhYmFzZUNhbGxiYWNrcykKLXsKLSAgICBtX3dlYklEQkRhdGFiYXNlLT5vcGVuKG5ldyBX
ZWJJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwoZGF0YWJhc2VDYWxsYmFja3MpKTsKLX0KLQogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQmFja2Vu
ZFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUJhY2tlbmRQ
cm94eS5oCmluZGV4IDJhOTM2MDBjNmYyZmEwYzI2N2MyZGEwNmZiOGI5MjE2ZmQ4MjhlMzYuLjc5
NTYxMGFhNjU3MmRjYTQ2Y2MyNjRkYjViMDhiZDE3OGMxYzU2NTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmgKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuaApAQCAtNTAs
OCArNTAsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQlRy
YW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gdHJhbnNhY3Rpb24oV2ViQ29yZTo6RE9NU3RyaW5n
TGlzdCogc3RvcmVOYW1lcywgdW5zaWduZWQgc2hvcnQgbW9kZSwgV2ViQ29yZTo6RXhjZXB0aW9u
Q29kZSYpOwogICAgIHZpcnR1YWwgdm9pZCBjbG9zZShQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkRh
dGFiYXNlQ2FsbGJhY2tzPik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJGcm9udGVuZENh
bGxiYWNrcyhQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkRhdGFiYXNlQ2FsbGJhY2tzPik7Ci0KIHBy
aXZhdGU6CiAgICAgSURCRGF0YWJhc2VCYWNrZW5kUHJveHkoUGFzc093blB0cjxXZWJJREJEYXRh
YmFzZT4pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJGYWN0
b3J5QmFja2VuZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkZhY3Rv
cnlCYWNrZW5kUHJveHkuY3BwCmluZGV4IGJhYmNiYWUxODQwOWM1ZGQyNTkyYzBkZmQ5MjMzMjZm
YmY2MGU5NGEuLjI4OTk1ZWM2NjBlMzFmZjdjZWZhZDkzZWIzYmRhMjM0MWFhMWVmZjggMTAwNzU1
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkZhY3RvcnlCYWNrZW5kUHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkZhY3RvcnlCYWNrZW5kUHJv
eHkuY3BwCkBAIC0zNCwxMiArMzQsMTQgQEAKICNpbmNsdWRlICJDcm9zc1RocmVhZFRhc2suaCIK
ICNpbmNsdWRlICJET01TdHJpbmdMaXN0LmgiCiAjaW5jbHVkZSAiSURCRGF0YWJhc2VCYWNrZW5k
UHJveHkuaCIKKyNpbmNsdWRlICJJREJEYXRhYmFzZUNhbGxiYWNrcy5oIgogI2luY2x1ZGUgIklE
QkRhdGFiYXNlRXJyb3IuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAj
aW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJXZWJGcmFtZUltcGwuaCIKICNp
bmNsdWRlICJXZWJJREJDYWxsYmFja3NJbXBsLmgiCiAjaW5jbHVkZSAiV2ViSURCRGF0YWJhc2Uu
aCIKKyNpbmNsdWRlICJXZWJJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwuaCIKICNpbmNsdWRlICJX
ZWJJREJEYXRhYmFzZUVycm9yLmgiCiAjaW5jbHVkZSAiV2ViSURCRmFjdG9yeS5oIgogI2luY2x1
ZGUgIldlYktpdC5oIgpAQCAtMjAzLDE1ICsyMDUsMTYgQEAgdm9pZCBJREJGYWN0b3J5QmFja2Vu
ZFByb3h5OjpnZXREYXRhYmFzZU5hbWVzKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxs
YmEKIH0KIAogCi12b2lkIElEQkZhY3RvcnlCYWNrZW5kUHJveHk6Om9wZW4oY29uc3QgU3RyaW5n
JiBuYW1lLCBpbnQ2NF90IHZlcnNpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxs
YmFja3MsIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luLCBTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIGRhdGFEaXIpCit2b2lkIElE
QkZhY3RvcnlCYWNrZW5kUHJveHk6Om9wZW4oY29uc3QgU3RyaW5nJiBuYW1lLCBpbnQ2NF90IHZl
cnNpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmFja3MsIFBhc3NSZWZQdHI8
SURCRGF0YWJhc2VDYWxsYmFja3M+IHBycERhdGFiYXNlQ2FsbGJhY2tzLCBQYXNzUmVmUHRyPFNl
Y3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdpbiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCwgY29uc3QgU3RyaW5nJiBkYXRhRGlyKQogewogICAgIFJlZlB0cjxJREJDYWxsYmFja3M+
IGNhbGxiYWNrcyhwcnBDYWxsYmFja3MpOworICAgIFJlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNr
cz4gZGF0YWJhc2VDYWxsYmFja3MocHJwRGF0YWJhc2VDYWxsYmFja3MpOwogICAgIFdlYlNlY3Vy
aXR5T3JpZ2luIG9yaWdpbihzZWN1cml0eU9yaWdpbik7CiAgICAgaWYgKCFhbGxvd0luZGV4ZWRE
Qihjb250ZXh0LCBuYW1lLCBvcmlnaW4sIGNhbGxiYWNrcykpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIFdlYkZyYW1lSW1wbCogd2ViRnJhbWUgPSBnZXRXZWJGcmFtZShjb250ZXh0KTsKLSAgICBt
X3dlYklEQkZhY3RvcnktPm9wZW4obmFtZSwgdmVyc2lvbiwgbmV3IFdlYklEQkNhbGxiYWNrc0lt
cGwoY2FsbGJhY2tzKSwgb3JpZ2luLCB3ZWJGcmFtZSwgZGF0YURpcik7CisgICAgbV93ZWJJREJG
YWN0b3J5LT5vcGVuKG5hbWUsIHZlcnNpb24sIG5ldyBXZWJJREJDYWxsYmFja3NJbXBsKGNhbGxi
YWNrcyksIG5ldyBXZWJJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwoZGF0YWJhc2VDYWxsYmFja3Mp
LCBvcmlnaW4sIHdlYkZyYW1lLCBkYXRhRGlyKTsKIH0KIAogdm9pZCBJREJGYWN0b3J5QmFja2Vu
ZFByb3h5OjpkZWxldGVEYXRhYmFzZShjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8SURC
Q2FsbGJhY2tzPiBwcnBDYWxsYmFja3MsIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHNlY3Vy
aXR5T3JpZ2luLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcm
IGRhdGFEaXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJGYWN0
b3J5QmFja2VuZFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJGYWN0b3J5
QmFja2VuZFByb3h5LmgKaW5kZXggYzBkZTkxMGE5MmNkZWE5MWEzZDNhMWM1MzBhMjgwN2M1YWJm
YWE3YS4uODgzODBkN2E0MmVkMTE3MzAyOTM1YmViYmNhY2NlYjZmNmU5N2Q3OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRmFjdG9yeUJhY2tlbmRQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkZhY3RvcnlCYWNrZW5kUHJveHkuaApA
QCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+SURCRmFjdG9yeUJhY2tlbmRQ
cm94eSgpOwogCiAgICAgdmlydHVhbCB2b2lkIGdldERhdGFiYXNlTmFtZXMoUGFzc1JlZlB0cjxX
ZWJDb3JlOjpJREJDYWxsYmFja3M+LCBQYXNzUmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
PiwgV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgZGF0YURp
cik7Ci0gICAgdmlydHVhbCB2b2lkIG9wZW4oY29uc3QgU3RyaW5nJiBuYW1lLCBpbnQ2NF90IHZl
cnNpb24sIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCQ2FsbGJhY2tzPiwgUGFzc1JlZlB0cjxXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbj4sIFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBj
b25zdCBTdHJpbmcmIGRhdGFEaXIpOworICAgIHZpcnR1YWwgdm9pZCBvcGVuKGNvbnN0IFN0cmlu
ZyYgbmFtZSwgaW50NjRfdCB2ZXJzaW9uLCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkNhbGxiYWNr
cz4sIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCRGF0YWJhc2VDYWxsYmFja3M+LCBQYXNzUmVmUHRy
PFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiwgV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIGNvbnN0IFN0cmluZyYgZGF0YURpcik7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZURhdGFi
YXNlKGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJDYWxsYmFja3M+
LCBQYXNzUmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiwgV2ViQ29yZTo6U2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgZGF0YURpcik7CiAKIHByaXZhdGU6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwuY3Bw
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmNwcAppbmRl
eCAwZDE0MmJjMDI5M2FhMTNmNWIxOTJjM2ZkYmM1NjMzN2NkYWM3NTdkLi41Mjg3OWE5YTdmM2I3
MzgwYWJhMzA2ZWQ2NzNkMGM0MmExMjhmYzQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5jcHAKQEAgLTQ1LDggKzQ1LDkgQEAgdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1XZWJJREJEYXRhYmFz
ZUltcGw6OldlYklEQkRhdGFiYXNlSW1wbChQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZElu
dGVyZmFjZT4gZGF0YWJhc2VCYWNrZW5kKQorV2ViSURCRGF0YWJhc2VJbXBsOjpXZWJJREJEYXRh
YmFzZUltcGwoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+IGRhdGFiYXNl
QmFja2VuZCwgV1RGOjpQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHk+IGRhdGFi
YXNlQ2FsbGJhY2tzKQogICAgIDogbV9kYXRhYmFzZUJhY2tlbmQoZGF0YWJhc2VCYWNrZW5kKQor
ICAgICwgbV9kYXRhYmFzZUNhbGxiYWNrcyhkYXRhYmFzZUNhbGxiYWNrcykKICAgICAsIG1fY2xv
c2VQZW5kaW5nKGZhbHNlKQogewogfQpAQCAtOTMsNyArOTQsNyBAQCBXZWJJREJUcmFuc2FjdGlv
biogV2ViSURCRGF0YWJhc2VJbXBsOjp0cmFuc2FjdGlvbihjb25zdCBXZWJET01TdHJpbmdMaXN0
JiBuYW1lcwogCiB2b2lkIFdlYklEQkRhdGFiYXNlSW1wbDo6Y2xvc2UoKQogewotICAgIC8vIFVz
ZSB0aGUgY2FsbGJhY2tzIHRoYXQgOjpvcGVuIGdhdmUgdXMgc28gdGhhdCB0aGUgYmFja2VuZCBp
bgorICAgIC8vIFVzZSB0aGUgY2FsbGJhY2tzIHBhc3NlZCBpbiB0byB0aGUgY29uc3RydWN0b3Ig
c28gdGhhdCB0aGUgYmFja2VuZCBpbgogICAgIC8vIG11bHRpLXByb2Nlc3MgY2hyb21pdW0ga25v
d3Mgd2hpY2ggZGF0YWJhc2UgY29ubmVjdGlvbiBpcyBjbG9zaW5nLgogICAgIGlmICghbV9kYXRh
YmFzZUNhbGxiYWNrcykgewogICAgICAgICBtX2Nsb3NlUGVuZGluZyA9IHRydWU7CkBAIC0xMTMs
MTUgKzExNCw2IEBAIHZvaWQgV2ViSURCRGF0YWJhc2VJbXBsOjpmb3JjZUNsb3NlKCkKICAgICBj
YWxsYmFja3MtPm9uRm9yY2VkQ2xvc2UoKTsKIH0KIAotdm9pZCBXZWJJREJEYXRhYmFzZUltcGw6
Om9wZW4oV2ViSURCRGF0YWJhc2VDYWxsYmFja3MqIGNhbGxiYWNrcykKLXsKLSAgICBBU1NFUlQo
IW1fZGF0YWJhc2VDYWxsYmFja3MpOwotICAgIG1fZGF0YWJhc2VDYWxsYmFja3MgPSBJREJEYXRh
YmFzZUNhbGxiYWNrc1Byb3h5OjpjcmVhdGUoYWRvcHRQdHIoY2FsbGJhY2tzKSk7Ci0gICAgbV9k
YXRhYmFzZUJhY2tlbmQtPnJlZ2lzdGVyRnJvbnRlbmRDYWxsYmFja3MobV9kYXRhYmFzZUNhbGxi
YWNrcyk7Ci0gICAgaWYgKG1fY2xvc2VQZW5kaW5nKQotICAgICAgICBjbG9zZSgpOwotfQotCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNF
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJ
bXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwuaApp
bmRleCA0YTgyODRjZTU5YWQxZTYzNmNjNGZiYzk3MjdiY2I3N2E0MjJjMzBlLi45Y2QxY2FmNTky
MDY5YjU0ZGZiOTZjYzg3ODQ0YzM3OTZkYjNhMzA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwuaApAQCAtNDcsNyArNDcsNyBAQCBjbGFzcyBX
ZWJJREJUcmFuc2FjdGlvbjsKIC8vIFNlZSBjb21tZW50IGluIFdlYklEQkZhY3RvcnkgZm9yIGEg
aGlnaCBsZXZlbCBvdmVydmlldyB0aGVzZSBjbGFzc2VzLgogY2xhc3MgV2ViSURCRGF0YWJhc2VJ
bXBsIDogcHVibGljIFdlYklEQkRhdGFiYXNlIHsKIHB1YmxpYzoKLSAgICBXZWJJREJEYXRhYmFz
ZUltcGwoV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEludGVyZmFj
ZT4pOworICAgIFdlYklEQkRhdGFiYXNlSW1wbChXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6SURC
RGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiwgV1RGOjpQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2Fs
bGJhY2tzUHJveHk+KTsKICAgICB2aXJ0dWFsIH5XZWJJREJEYXRhYmFzZUltcGwoKTsKIAogICAg
IHZpcnR1YWwgV2ViSURCTWV0YWRhdGEgbWV0YWRhdGEoKSBjb25zdDsKQEAgLTU5LDkgKzU5LDYg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBmb3JjZUNsb3NlKCk7CiAgICAgdmlydHVhbCB2
b2lkIGNsb3NlKCk7CiAKLSAgICAvLyBGSVhNRTogUmVuYW1lICJvcGVuIiB0byByZWdpc3RlckZy
b250ZW5kQ2FsbGJhY2tzLgotICAgIHZpcnR1YWwgdm9pZCBvcGVuKFdlYklEQkRhdGFiYXNlQ2Fs
bGJhY2tzKik7Ci0KIHByaXZhdGU6CiAgICAgV1RGOjpSZWZQdHI8V2ViQ29yZTo6SURCRGF0YWJh
c2VCYWNrZW5kSW50ZXJmYWNlPiBtX2RhdGFiYXNlQmFja2VuZDsKICAgICBXVEY6OlJlZlB0cjxJ
REJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5PiBtX2RhdGFiYXNlQ2FsbGJhY2tzOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRmFjdG9yeUltcGwuY3BwIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRmFjdG9yeUltcGwuY3BwCmluZGV4IGFkNzE0
NzZiN2ViYjQ2ODZlYTgyNWI5NjIxOTE2ZTYzYjI5MGFjNzcuLjk0YThkNDY4YTkwYTkwYzQxMmM3
YWE2Yzk4YWVmYjc0YmI3YTM3YjggMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYklEQkZhY3RvcnlJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJJREJGYWN0b3J5SW1wbC5jcHAKQEAgLTM1LDggKzM1LDEwIEBACiAKICNpbmNsdWRlICJE
T01TdHJpbmdMaXN0LmgiCiAjaW5jbHVkZSAiSURCQ2FsbGJhY2tzUHJveHkuaCIKKyNpbmNsdWRl
ICJJREJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5LmgiCiAjaW5jbHVkZSAiSURCRmFjdG9yeUJhY2tl
bmRJbXBsLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKKyNpbmNsdWRlICJXZWJJREJE
YXRhYmFzZUNhbGxiYWNrcy5oIgogI2luY2x1ZGUgIldlYklEQkRhdGFiYXNlRXJyb3IuaCIKICNp
bmNsdWRlIDx3dGYvT3duUHRyLmg+CiAKQEAgLTYzLDkgKzY1LDEyIEBAIHZvaWQgV2ViSURCRmFj
dG9yeUltcGw6OmdldERhdGFiYXNlTmFtZXMoV2ViSURCQ2FsbGJhY2tzKiBjYWxsYmFja3MsIGNv
bnN0IFdlYlNlCiAgICAgbV9pZGJGYWN0b3J5QmFja2VuZC0+Z2V0RGF0YWJhc2VOYW1lcyhJREJD
YWxsYmFja3NQcm94eTo6Y3JlYXRlKGFkb3B0UHRyKGNhbGxiYWNrcykpLCBvcmlnaW4sIDAsIGRh
dGFEaXIpOwogfQogCi12b2lkIFdlYklEQkZhY3RvcnlJbXBsOjpvcGVuKGNvbnN0IFdlYlN0cmlu
ZyYgbmFtZSwgbG9uZyBsb25nIHZlcnNpb24sIFdlYklEQkNhbGxiYWNrcyogY2FsbGJhY2tzLCBj
b25zdCBXZWJTZWN1cml0eU9yaWdpbiYgb3JpZ2luLCBXZWJGcmFtZSosIGNvbnN0IFdlYlN0cmlu
ZyYgZGF0YURpcikKK3ZvaWQgV2ViSURCRmFjdG9yeUltcGw6Om9wZW4oY29uc3QgV2ViU3RyaW5n
JiBuYW1lLCBsb25nIGxvbmcgdmVyc2lvbiwgV2ViSURCQ2FsbGJhY2tzKiBjYWxsYmFja3MsIFdl
YklEQkRhdGFiYXNlQ2FsbGJhY2tzKiBkYXRhYmFzZUNhbGxiYWNrcywgY29uc3QgV2ViU2VjdXJp
dHlPcmlnaW4mIG9yaWdpbiwgV2ViRnJhbWUqLCBjb25zdCBXZWJTdHJpbmcmIGRhdGFEaXIpCiB7
Ci0gICAgbV9pZGJGYWN0b3J5QmFja2VuZC0+b3BlbihuYW1lLCB2ZXJzaW9uLCBJREJDYWxsYmFj
a3NQcm94eTo6Y3JlYXRlKGFkb3B0UHRyKGNhbGxiYWNrcykpLmdldCgpLCBvcmlnaW4sIDAsIGRh
dGFEaXIpOworICAgIFJlZlB0cjxJREJDYWxsYmFja3NQcm94eT4gY2FsbGJhY2tzUHJveHkgPSBJ
REJDYWxsYmFja3NQcm94eTo6Y3JlYXRlKGFkb3B0UHRyKGNhbGxiYWNrcykpOworICAgIFJlZlB0
cjxJREJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5PiBkYXRhYmFzZUNhbGxiYWNrc1Byb3h5ID0gSURC
RGF0YWJhc2VDYWxsYmFja3NQcm94eTo6Y3JlYXRlKGFkb3B0UHRyKGRhdGFiYXNlQ2FsbGJhY2tz
KSk7CisgICAgY2FsbGJhY2tzUHJveHktPnNldERhdGFiYXNlQ2FsbGJhY2tzKGRhdGFiYXNlQ2Fs
bGJhY2tzUHJveHkpOworICAgIG1faWRiRmFjdG9yeUJhY2tlbmQtPm9wZW4obmFtZSwgdmVyc2lv
biwgY2FsbGJhY2tzUHJveHkuZ2V0KCksIGRhdGFiYXNlQ2FsbGJhY2tzUHJveHkuZ2V0KCksIG9y
aWdpbiwgMCwgZGF0YURpcik7CiB9CiAKIHZvaWQgV2ViSURCRmFjdG9yeUltcGw6OmRlbGV0ZURh
dGFiYXNlKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgV2ViSURCQ2FsbGJhY2tzKiBjYWxsYmFja3Ms
IGNvbnN0IFdlYlNlY3VyaXR5T3JpZ2luJiBvcmlnaW4sIFdlYkZyYW1lKiwgY29uc3QgV2ViU3Ry
aW5nJiBkYXRhRGlyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
SURCRmFjdG9yeUltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkZhY3Rv
cnlJbXBsLmgKaW5kZXggODMzZWViNTkxMjU5Yjg1M2MzMjFmZDExOGYwOTRhNWI4YTdjODg2NC4u
MzNmNWEyMWQyYzc0ZjU4ZGZmOTRlMWViN2I5MGU1YWQ0MzBkMTYyNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRmFjdG9yeUltcGwuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJGYWN0b3J5SW1wbC5oCkBAIC00NSw3ICs0NSw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIH5XZWJJREJGYWN0b3J5SW1wbCgpOwogCiAgICAgdmlydHVh
bCB2b2lkIGdldERhdGFiYXNlTmFtZXMoV2ViSURCQ2FsbGJhY2tzKiwgY29uc3QgV2ViU2VjdXJp
dHlPcmlnaW4mLCBXZWJGcmFtZSosIGNvbnN0IFdlYlN0cmluZyYgZGF0YURpcik7Ci0gICAgdmly
dHVhbCB2b2lkIG9wZW4oY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBsb25nIGxvbmcgdmVyc2lvbiwg
V2ViSURCQ2FsbGJhY2tzKiwgY29uc3QgV2ViU2VjdXJpdHlPcmlnaW4mLCBXZWJGcmFtZSosIGNv
bnN0IFdlYlN0cmluZyYgZGF0YURpcik7CisgICAgdmlydHVhbCB2b2lkIG9wZW4oY29uc3QgV2Vi
U3RyaW5nJiBuYW1lLCBsb25nIGxvbmcgdmVyc2lvbiwgV2ViSURCQ2FsbGJhY2tzKiwgV2ViSURC
RGF0YWJhc2VDYWxsYmFja3MqLCBjb25zdCBXZWJTZWN1cml0eU9yaWdpbiYsIFdlYkZyYW1lKiwg
Y29uc3QgV2ViU3RyaW5nJiBkYXRhRGlyKTsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlRGF0YWJh
c2UoY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBXZWJJREJDYWxsYmFja3MqLCBjb25zdCBXZWJTZWN1
cml0eU9yaWdpbiYsIFdlYkZyYW1lKiwgY29uc3QgV2ViU3RyaW5nJiBkYXRhRGlyKTsKIAogcHJp
dmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCQWJvcnRP
bkNvcnJ1cHRUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCQWJvcnRP
bkNvcnJ1cHRUZXN0LmNwcAppbmRleCAxZDM5NTA5NmFhZGIzYTViM2RlOWI3MGRhYjYwZjMxODlj
ZmJhOTg2Li5iMDgwYmZjNGRmNTFhMjk4ZjRmZGI1ZDljMjhlNzcxN2Y0MGRhZjE0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQkFib3J0T25Db3JydXB0VGVzdC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJBYm9ydE9uQ29ycnVwdFRl
c3QuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZS5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNlQmFja2Vu
ZEludGVyZmFjZS5oIgorI2luY2x1ZGUgIklEQkRhdGFiYXNlQ2FsbGJhY2tzLmgiCiAjaW5jbHVk
ZSAiSURCRmFjdG9yeUJhY2tlbmRJbXBsLmgiCiAjaW5jbHVkZSAiSURCRmFrZUJhY2tpbmdTdG9y
ZS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCkBAIC05NiwxNCArOTcsMjYgQEAgcHJv
dGVjdGVkOgogICAgIH0KIH07CiAKK2NsYXNzIEZha2VJREJEYXRhYmFzZUNhbGxiYWNrcyA6IHB1
YmxpYyBJREJEYXRhYmFzZUNhbGxiYWNrcyB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQ
dHI8RmFrZUlEQkRhdGFiYXNlQ2FsbGJhY2tzPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZihu
ZXcgRmFrZUlEQkRhdGFiYXNlQ2FsbGJhY2tzKCkpOyB9CisgICAgdmlydHVhbCB+RmFrZUlEQkRh
dGFiYXNlQ2FsbGJhY2tzKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIG9uVmVyc2lvbkNoYW5nZShj
b25zdCBTdHJpbmcmIHZlcnNpb24pIE9WRVJSSURFIHsgfQorICAgIHZpcnR1YWwgdm9pZCBvblZl
cnNpb25DaGFuZ2UoaW50NjRfdCBvbGRWZXJzaW9uLCBpbnQ2NF90IG5ld1ZlcnNpb24pIE9WRVJS
SURFIHsgfQorICAgIHZpcnR1YWwgdm9pZCBvbkZvcmNlZENsb3NlKCkgT1ZFUlJJREUgeyB9Citw
cml2YXRlOgorICAgIEZha2VJREJEYXRhYmFzZUNhbGxiYWNrcygpIHsgfQorfTsKKwogVEVTVChJ
REJBYm9ydFRlc3QsIFRoZVRlc3QpCiB7CiAgICAgUmVmUHRyPElEQkZhY3RvcnlCYWNrZW5kSW1w
bD4gZmFjdG9yeSA9IEZhaWxpbmdJREJGYWN0b3J5QmFja2VuZEltcGw6OmNyZWF0ZSgpOwogICAg
IGNvbnN0IFN0cmluZyYgbmFtZSA9ICJkYiBuYW1lIjsKICAgICBNb2NrSURCQ2FsbGJhY2tzIGNh
bGxiYWNrczsKKyAgICBSZWZQdHI8RmFrZUlEQkRhdGFiYXNlQ2FsbGJhY2tzPiBkYXRhYmFzZUNh
bGxiYWNrcyA9IEZha2VJREJEYXRhYmFzZUNhbGxiYWNrczo6Y3JlYXRlKCk7CiAgICAgUmVmUHRy
PFNlY3VyaXR5T3JpZ2luPiBvcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKCJodHRwIiwg
ImxvY2FsaG9zdCIsIDgxKTsKICAgICBjb25zdCBpbnQ2NF90IER1bW15VmVyc2lvbiA9IDI7Ci0g
ICAgZmFjdG9yeS0+b3BlbihuYW1lLCBEdW1teVZlcnNpb24sICZjYWxsYmFja3MsIG9yaWdpbiwg
MCAvKkZyYW1lKi8sIFN0cmluZygpIC8qcGF0aCovKTsKKyAgICBmYWN0b3J5LT5vcGVuKG5hbWUs
IER1bW15VmVyc2lvbiwgJmNhbGxiYWNrcywgZGF0YWJhc2VDYWxsYmFja3MsIG9yaWdpbiwgMCAv
KkZyYW1lKi8sIFN0cmluZygpIC8qcGF0aCovKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCRGF0YWJhc2VCYWNrZW5kVGVz
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQkRhdGFiYXNlQmFja2VuZFRl
c3QuY3BwCmluZGV4IDFmYTJjMjYyZGIxZDE1NTFlZmQyNTgxYTFiNzJlNjNlZGQyZTc1MDUuLmNi
OTQyNDNkMDZhZmYyMDk5Yzk5YThlZTZiYTQ2MGY1ZjMyMWRlZWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCRGF0YWJhc2VCYWNrZW5kVGVzdC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJEYXRhYmFzZUJhY2tlbmRUZXN0LmNwcApA
QCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIklEQkJhY2tpbmdTdG9yZS5oIgogI2luY2x1ZGUg
IklEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJJREJEYXRhYmFzZUJhY2tl
bmRJbXBsLmgiCisjaW5jbHVkZSAiSURCRGF0YWJhc2VDYWxsYmFja3NQcm94eS5oIgogI2luY2x1
ZGUgIklEQkZhY3RvcnlCYWNrZW5kSW1wbC5oIgogI2luY2x1ZGUgIklEQkZha2VCYWNraW5nU3Rv
cmUuaCIKICNpbmNsdWRlICJJREJJbmRleEJhY2tlbmRJbXBsLmgiCkBAIC00MCw5ICs0MSwxMCBA
QAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKK3VzaW5nIFdlYktpdDo6SURCRGF0YWJhc2VDYWxsYmFja3NQcm94eTsKIHVzaW5nIFdlYktp
dDo6V2ViSURCRGF0YWJhc2U7Ci11c2luZyBXZWJLaXQ6OldlYklEQkRhdGFiYXNlQ2FsbGJhY2tz
SW1wbDsKIHVzaW5nIFdlYktpdDo6V2ViSURCRGF0YWJhc2VJbXBsOwordXNpbmcgV2ViS2l0OjpX
ZWJJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGw7CiAKIG5hbWVzcGFjZSB7CiAKQEAgLTEyMiwyMCAr
MTI0LDE2IEBAIFRFU1QoSURCRGF0YWJhc2VCYWNrZW5kVGVzdCwgQ29ubmVjdGlvbkxpZmVjeWNs
ZSkKICAgICBFWFBFQ1RfR1QoYmFja2luZ1N0b3JlLT5yZWZDb3VudCgpLCAxKTsKIAogICAgIFJl
ZlB0cjxNb2NrSURCQ2FsbGJhY2tzPiByZXF1ZXN0MSA9IE1vY2tJREJDYWxsYmFja3M6OmNyZWF0
ZSgpOwotICAgIGRiLT5vcGVuQ29ubmVjdGlvbihyZXF1ZXN0MSk7Ci0KICAgICBSZWZQdHI8RmFr
ZUlEQkRhdGFiYXNlQ2FsbGJhY2tzPiBjb25uZWN0aW9uMSA9IEZha2VJREJEYXRhYmFzZUNhbGxi
YWNrczo6Y3JlYXRlKCk7Ci0gICAgZGItPnJlZ2lzdGVyRnJvbnRlbmRDYWxsYmFja3MoY29ubmVj
dGlvbjEpOworICAgIGRiLT5vcGVuQ29ubmVjdGlvbihyZXF1ZXN0MSwgY29ubmVjdGlvbjEpOwog
CiAgICAgUmVmUHRyPE1vY2tJREJDYWxsYmFja3M+IHJlcXVlc3QyID0gTW9ja0lEQkNhbGxiYWNr
czo6Y3JlYXRlKCk7Ci0gICAgZGItPm9wZW5Db25uZWN0aW9uKHJlcXVlc3QyKTsKKyAgICBSZWZQ
dHI8RmFrZUlEQkRhdGFiYXNlQ2FsbGJhY2tzPiBjb25uZWN0aW9uMiA9IEZha2VJREJEYXRhYmFz
ZUNhbGxiYWNrczo6Y3JlYXRlKCk7CisgICAgZGItPm9wZW5Db25uZWN0aW9uKHJlcXVlc3QyLCBj
b25uZWN0aW9uMik7CiAKICAgICBkYi0+Y2xvc2UoY29ubmVjdGlvbjEpOwogICAgIEVYUEVDVF9H
VChiYWNraW5nU3RvcmUtPnJlZkNvdW50KCksIDEpOwogCi0gICAgUmVmUHRyPEZha2VJREJEYXRh
YmFzZUNhbGxiYWNrcz4gY29ubmVjdGlvbjIgPSBGYWtlSURCRGF0YWJhc2VDYWxsYmFja3M6OmNy
ZWF0ZSgpOwotICAgIGRiLT5yZWdpc3RlckZyb250ZW5kQ2FsbGJhY2tzKGNvbm5lY3Rpb24yKTsK
LQogICAgIGRiLT5jbG9zZShjb25uZWN0aW9uMik7CiAgICAgRVhQRUNUX1RSVUUoYmFja2luZ1N0
b3JlLT5oYXNPbmVSZWYoKSk7CiB9CkBAIC0xNDksNyArMTQ3LDcgQEAgcHVibGljOgogCiAgICAg
fk1vY2tJREJEYXRhYmFzZUJhY2tlbmRQcm94eSgpCiAgICAgewotICAgICAgICBFWFBFQ1RfVFJV
RShtX3dhc1JlZ2lzdGVyRnJvbnRlbmRDYWxsYmFja3NDYWxsZWQpOworICAgICAgICBFWFBFQ1Rf
VFJVRShtX3dhc0Nsb3NlQ2FsbGVkKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIElEQkRhdGFiYXNl
TWV0YWRhdGEgbWV0YWRhdGEoKSBjb25zdCB7IHJldHVybiBJREJEYXRhYmFzZU1ldGFkYXRhKCk7
IH0KQEAgLTE2MywxOSArMTYxLDEyIEBAIHB1YmxpYzoKICAgICAgICAgbV93YXNDbG9zZUNhbGxl
ZCA9IHRydWU7CiAgICAgICAgIG1fd2ViRGF0YWJhc2UuY2xvc2UoKTsKICAgICB9Ci0gICAgdmly
dHVhbCB2b2lkIHJlZ2lzdGVyRnJvbnRlbmRDYWxsYmFja3MoUGFzc1JlZlB0cjxJREJEYXRhYmFz
ZUNhbGxiYWNrcz4gY29ubmVjdGlvbikKLSAgICB7Ci0gICAgICAgIG1fd2FzUmVnaXN0ZXJGcm9u
dGVuZENhbGxiYWNrc0NhbGxlZCA9IHRydWU7Ci0gICAgICAgIG1fd2ViRGF0YWJhc2Uub3Blbihu
ZXcgV2ViSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsKGNvbm5lY3Rpb24pKTsKLSAgICB9CiAKIHBy
aXZhdGU6CiAgICAgTW9ja0lEQkRhdGFiYXNlQmFja2VuZFByb3h5KFdlYklEQkRhdGFiYXNlSW1w
bCYgd2ViRGF0YWJhc2UpCi0gICAgICAgIDogbV93YXNSZWdpc3RlckZyb250ZW5kQ2FsbGJhY2tz
Q2FsbGVkKGZhbHNlKQotICAgICAgICAsIG1fd2FzQ2xvc2VDYWxsZWQoZmFsc2UpCisgICAgICAg
IDogbV93YXNDbG9zZUNhbGxlZChmYWxzZSkKICAgICAgICAgLCBtX3dlYkRhdGFiYXNlKHdlYkRh
dGFiYXNlKSB7IH0KIAotICAgIGJvb2wgbV93YXNSZWdpc3RlckZyb250ZW5kQ2FsbGJhY2tzQ2Fs
bGVkOwogICAgIGJvb2wgbV93YXNDbG9zZUNhbGxlZDsKIAogICAgIFdlYklEQkRhdGFiYXNlSW1w
bCYgbV93ZWJEYXRhYmFzZTsKQEAgLTE5MSwxOCArMTgyLDE5IEBAIFRFU1QoSURCRGF0YWJhc2VC
YWNrZW5kVGVzdCwgRm9yY2VkQ2xvc2UpCiAgICAgUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZElt
cGw+IGJhY2tlbmQgPSBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpjcmVhdGUoImRiIiwgYmFja2lu
Z1N0b3JlLmdldCgpLCBjb29yZGluYXRvciwgZmFjdG9yeSwgInVuaXF1ZWlkIik7CiAgICAgRVhQ
RUNUX0dUKGJhY2tpbmdTdG9yZS0+cmVmQ291bnQoKSwgMSk7CiAKLSAgICBXZWJJREJEYXRhYmFz
ZUltcGwgd2ViRGF0YWJhc2UoYmFja2VuZCk7Ci0KLSAgICBSZWZQdHI8TW9ja0lEQkNhbGxiYWNr
cz4gcmVxdWVzdDEgPSBNb2NrSURCQ2FsbGJhY2tzOjpjcmVhdGUoKTsKLSAgICBiYWNrZW5kLT5v
cGVuQ29ubmVjdGlvbihyZXF1ZXN0MSk7CisgICAgUmVmUHRyPEZha2VJREJEYXRhYmFzZUNhbGxi
YWNrcz4gY29ubmVjdGlvbiA9IEZha2VJREJEYXRhYmFzZUNhbGxiYWNrczo6Y3JlYXRlKCk7Cisg
ICAgUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHk+IGNvbm5lY3Rpb25Qcm94eSA9IElE
QkRhdGFiYXNlQ2FsbGJhY2tzUHJveHk6OmNyZWF0ZShhZG9wdFB0cihuZXcgV2ViSURCRGF0YWJh
c2VDYWxsYmFja3NJbXBsKGNvbm5lY3Rpb24pKSk7CisgICAgV2ViSURCRGF0YWJhc2VJbXBsIHdl
YkRhdGFiYXNlKGJhY2tlbmQsIGNvbm5lY3Rpb25Qcm94eSk7CiAKICAgICBSZWZQdHI8TW9ja0lE
QkRhdGFiYXNlQmFja2VuZFByb3h5PiBwcm94eSA9IE1vY2tJREJEYXRhYmFzZUJhY2tlbmRQcm94
eTo6Y3JlYXRlKHdlYkRhdGFiYXNlKTsKKyAgICBSZWZQdHI8TW9ja0lEQkNhbGxiYWNrcz4gcmVx
dWVzdCA9IE1vY2tJREJDYWxsYmFja3M6OmNyZWF0ZSgpOworICAgIGJhY2tlbmQtPm9wZW5Db25u
ZWN0aW9uKHJlcXVlc3QsIGNvbm5lY3Rpb25Qcm94eSk7CiAKICAgICBTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0ID0gMDsKLSAgICBSZWZQdHI8SURCRGF0YWJhc2U+IGlkYkRhdGFiYXNl
ID0gSURCRGF0YWJhc2U6OmNyZWF0ZShjb250ZXh0LCBwcm94eSk7Ci0gICAgaWRiRGF0YWJhc2Ut
PnJlZ2lzdGVyRnJvbnRlbmRDYWxsYmFja3MoKTsKKyAgICBSZWZQdHI8SURCRGF0YWJhc2U+IGlk
YkRhdGFiYXNlID0gSURCRGF0YWJhc2U6OmNyZWF0ZShjb250ZXh0LCBwcm94eSwgY29ubmVjdGlv
bik7CiAKICAgICB3ZWJEYXRhYmFzZS5mb3JjZUNsb3NlKCk7CisKICAgICBFWFBFQ1RfVFJVRShi
YWNraW5nU3RvcmUtPmhhc09uZVJlZigpKTsKIH0KIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>