<?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>140191</bug_id>
          
          <creation_ts>2015-01-07 11:43:31 -0800</creation_ts>
          <short_desc>WKWebView provides no access to cookies</short_desc>
          <delta_ts>2017-11-23 09:03:37 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>iPhone / iPad</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=140205</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Major</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eugene But">eugenebut</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>achristensen</cc>
    
    <cc>arsham.faghihi</cc>
    
    <cc>beidson</cc>
    
    <cc>cgarcia</cc>
    
    <cc>clopez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>cpugh</cc>
    
    <cc>dieter</cc>
    
    <cc>gaspariantigran</cc>
    
    <cc>m.goleb+bugzilla</cc>
    
    <cc>mitz</cc>
    
    <cc>ossy</cc>
    
    <cc>peter.nusios</cc>
    
    <cc>roger.hu</cc>
    
    <cc>ryanhaddad</cc>
    
    <cc>sam</cc>
    
    <cc>stefan</cc>
    
    <cc>stuartmorgan</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1059445</commentid>
    <comment_count>0</comment_count>
    <who name="Eugene But">eugenebut</who>
    <bug_when>2015-01-07 11:43:31 -0800</bug_when>
    <thetext>With UIWebView, it&apos;s possible to set, remove, and clear cookies using NSHTTPCookieStorage. WKWebView does not appear to interoperate with NSHTTPCookieStorage, and has no API for cookies. This makes it impossible to do things like:
- Set authentication cookies from native code based on native login
- Swap cookie stores for a multi-profile/-user setup

Steps to Reproduce:
N/A, but for example:
- Create a trivial WKWebView app
- Browser around
- Log [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookies] and see that it&apos;s empty.

Expected Results:
Either NSHTTPCookieStorage working as expected (as it did with UIWebView), or WK* APIs for inspecting and manipulating cookies.

Actual Results:
No apparent way to interact with cookies.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1059594</commentid>
    <comment_count>1</comment_count>
    <who name="Eugene But">eugenebut</who>
    <bug_when>2015-01-07 15:58:03 -0800</bug_when>
    <thetext>Radar ID: 17486250</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1094161</commentid>
    <comment_count>2</comment_count>
    <who name="Stefan Arentz">stefan</who>
    <bug_when>2015-05-12 07:51:21 -0700</bug_when>
    <thetext>On iOS 8.3 I do get a list of cookies from NSHTTPCookieStorage().sharedHTTPCookieStorage().cookies but the results are unpredictable:

Eventually I do get a list of cookies of sites that I visited but it seems there is a delay between cookies being available via NSHTTPCookieStorage.

Setting a WKProcessPool made no difference.

WKWebView probably syncs cookies back to the UI process on its own schedule. Not after each navigation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1203543</commentid>
    <comment_count>3</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-06-17 22:17:47 -0700</bug_when>
    <thetext>*** Bug 158901 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1203547</commentid>
    <comment_count>4</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-06-17 22:20:15 -0700</bug_when>
    <thetext>Have a patch that does this, but I&apos;m not quite done with it, as I should make it handle the request in https://bugs.webkit.org/show_bug.cgi?id=140205 as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1203548</commentid>
    <comment_count>5</comment_count>
      <attachid>281607</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-06-17 22:28:19 -0700</bug_when>
    <thetext>Created attachment 281607
Patch v1

Meh, may as well review this one as is.

I&apos;ll add 140205 functionality in a followup (and that patch will be much, much smaller)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1203549</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-06-17 22:30:00 -0700</bug_when>
    <thetext>Attachment 281607 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.h:73:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.h:74:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.h:119:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.h:52:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.h:53:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.cpp:43:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.cpp:48:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:138:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:144:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 9 in 31 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1203557</commentid>
    <comment_count>7</comment_count>
      <attachid>281607</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-06-17 23:00:50 -0700</bug_when>
    <thetext>Comment on attachment 281607
Patch v1

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

&gt; Source/WebCore/ChangeLog:12
&gt; +        * platform/Cookie.h:

This needs some explanation.  You added three new member variables: comment, commentURL, ports.

&gt; Source/WebCore/platform/network/NetworkStorageSession.h:107
&gt; +Vector&lt;Cookie&gt; NetworkStorageSession::getAllCookies()

This needs to be inline after including Cookie.h, or in a cpp.  I prefer the latter.

&gt; Tools/TestWebKitAPI/Tests/WebKit2Cocoa/WKHTTPCookieStorage.mm:46
&gt; +    [webView loadHTMLString:@&quot;Oh hello&quot; baseURL:[NSURL URLWithString:@&quot;http://webkit.org&quot;]];

We should load some JavaScript that sets cookies and make sure that it shows up in the correct cookie storage.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1203582</commentid>
    <comment_count>8</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-06-18 08:51:22 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; Comment on attachment 281607 [details]
&gt; Patch v1
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=281607&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:12
&gt; &gt; +        * platform/Cookie.h:
&gt; 
&gt; This needs some explanation.  You added three new member variables: comment,
&gt; commentURL, ports.
&gt; 

It&apos;s pretty self explanatory in code, but I&apos;ll add a comment that explains what the code explains.

&gt; &gt; Source/WebCore/platform/network/NetworkStorageSession.h:107
&gt; &gt; +Vector&lt;Cookie&gt; NetworkStorageSession::getAllCookies()
&gt; 
&gt; This needs to be inline after including Cookie.h, or in a cpp.  I prefer the
&gt; latter.
&gt; 

Hmmmm...  yah, not sure why I built fine locally.

&gt; &gt; Tools/TestWebKitAPI/Tests/WebKit2Cocoa/WKHTTPCookieStorage.mm:46
&gt; &gt; +    [webView loadHTMLString:@&quot;Oh hello&quot; baseURL:[NSURL URLWithString:@&quot;http://webkit.org&quot;]];
&gt; 
&gt; We should load some JavaScript that sets cookies and make sure that it shows
&gt; up in the correct cookie storage.

Good idea.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1203583</commentid>
    <comment_count>9</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-06-18 08:54:03 -0700</bug_when>
    <thetext>Other changes I plan on making are making the set and get cookies methods take an optional completion handler.

I&apos;ll get to these changes sometime soonish</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1203589</commentid>
    <comment_count>10</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-06-18 13:08:18 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; Other changes I plan on making are making the set and get cookies methods
&gt; take an optional completion handler.
You mean set and delete?  I was thinking about that, too.  We might want info about what cookie was there before setting or deleting.  Get with an optional completion handler wouldn&apos;t be very useful, though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1203686</commentid>
    <comment_count>11</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-06-19 20:33:25 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (In reply to comment #9)
&gt; &gt; Other changes I plan on making are making the set and get cookies methods
&gt; &gt; take an optional completion handler.
&gt; You mean set and delete?  I was thinking about that, too.  We might want
&gt; info about what cookie was there before setting or deleting.  Get with an
&gt; optional completion handler wouldn&apos;t be very useful, though.

Yes, I meant set and delete.

Get is taken care of.

I&apos;m not sure its useful to have info about the cookie that was set or deleted. Doesn&apos;t exist in the current NS-API, and it would slow down the whole set or delete operation, as we&apos;d have to manually fetch.

If clients were interested they could fetch ahead of time for themselves.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1203715</commentid>
    <comment_count>12</comment_count>
      <attachid>281607</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-06-20 00:44:25 -0700</bug_when>
    <thetext>Comment on attachment 281607
Patch v1

Yes, probably a good idea to conceptually match NSHTTPCookieStorage, but asynchronous obviously because everything&apos;s in a different process.  What about removeCookiesSinceDate and getting/setting cookieAcceptPolicy?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1203754</commentid>
    <comment_count>13</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-06-20 08:45:11 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; Comment on attachment 281607 [details]
&gt; Patch v1
&gt; 
&gt; Yes, probably a good idea to conceptually match NSHTTPCookieStorage, but
&gt; asynchronous obviously because everything&apos;s in a different process.  What
&gt; about removeCookiesSinceDate and getting/setting cookieAcceptPolicy?

https://bugs.webkit.org/show_bug.cgi?id=140191#c4 and https://bugs.webkit.org/show_bug.cgi?id=140191#c5 explain how I&apos;ll do the policy separately.

I&apos;ll also file a followup for removeCookiesSinceData - Don&apos;t want to keep making this patch bigger when it&apos;s already not 100% of the task.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1204211</commentid>
    <comment_count>14</comment_count>
      <attachid>281607</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2016-06-21 11:26:31 -0700</bug_when>
    <thetext>Comment on attachment 281607
Patch v1

I don&apos;t think this should be a property on the WKWebView - it should be on the WKWebsiteDataStore - that&apos;s where all the other website data lives.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1243456</commentid>
    <comment_count>15</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2016-10-22 18:45:54 -0700</bug_when>
    <thetext>&lt;rdar://problem/17486250&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1273888</commentid>
    <comment_count>16</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-02-06 23:58:06 -0800</bug_when>
    <thetext>Any plans to finish this? I guess we really need to make the new HTTPCookieStorage a property of WebsiteDataStore as Anders suggested, and also make it session ID aware. We could probably reuse WebCookieManagerProxy by adding a sessionID parameter to all the IPC messages. We use the default session ID in the old API implementation, and the WebsiteDataStore session ID in the new one. I can help with this if needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1280916</commentid>
    <comment_count>17</comment_count>
    <who name="">roger.hu</who>
    <bug_when>2017-02-24 16:20:33 -0800</bug_when>
    <thetext>+1 having access to the WKWebView would enable single-sign-on support.  We have had to downgrade to UIWebView because of this limitation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1286991</commentid>
    <comment_count>18</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-03-12 18:51:16 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; Any plans to finish this? 

Stay tuned. Waiting on a couple of other patches to work their way through CQ.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1286994</commentid>
    <comment_count>19</comment_count>
      <attachid>304213</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-03-12 18:57:52 -0700</bug_when>
    <thetext>Created attachment 304213
Not for review - Initial EWS run</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1286995</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-12 19:00:03 -0700</bug_when>
    <thetext>Attachment 304213 did not pass style-queue:


ERROR: Source/WebCore/platform/network/soup/NetworkStorageSessionSoup.cpp:309:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WebCore/platform/network/soup/NetworkStorageSessionSoup.cpp:314:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WebCore/platform/network/soup/NetworkStorageSessionSoup.cpp:319:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.h:70:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.h:73:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.h:75:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.h:77:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.h:78:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.h:80:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.h:81:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/C/WKCookieManager.cpp:64:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebKit2/UIProcess/API/C/WKCookieManager.cpp:64:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WebKit2/UIProcess/API/C/WKCookieManager.cpp:69:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebKit2/UIProcess/API/C/WKCookieManager.cpp:69:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WebKit2/UIProcess/WebsiteData/WebCookieStorage.cpp:62:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebKit2/UIProcess/WebsiteData/WebCookieStorage.cpp:70:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebsiteData/WebCookieStorage.cpp:83:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebsiteData/WebCookieStorage.cpp:96:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebsiteData/WebCookieStorage.cpp:109:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebsiteData/WebCookieStorage.cpp:122:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebsiteData/WebCookieStorage.cpp:135:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebsiteData/WebCookieStorage.cpp:148:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebsiteData/WebCookieStorage.cpp:161:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebsiteData/WebCookieStorage.h:46:  The parameter name &quot;sessionID&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebKit2/UIProcess/WebsiteData/WebCookieStorage.h:48:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebsiteData/WebCookieStorage.h:49:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebsiteData/WebCookieStorage.h:51:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebsiteData/WebCookieStorage.h:52:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebsiteData/WebCookieStorage.h:53:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebsiteData/WebCookieStorage.h:55:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebsiteData/WebCookieStorage.h:57:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebsiteData/WebCookieStorage.h:58:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Automation/WebAutomationSession.cpp:733:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebKit2/UIProcess/Automation/WebAutomationSession.cpp:733:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.h:56:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.h:57:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.h:59:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.h:60:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.h:61:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.h:63:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.h:65:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.h:66:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/Cocoa/WKProcessPool.mm:199:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebKit2/UIProcess/API/Cocoa/WKProcessPool.mm:199:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.cpp:44:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.cpp:51:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.cpp:58:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.cpp:65:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.cpp:72:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.cpp:79:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.cpp:86:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.cpp:93:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:100:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:130:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:139:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:148:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:157:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:166:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:200:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:215:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:237:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 61 in 32 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287086</commentid>
    <comment_count>21</comment_count>
      <attachid>304237</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-03-13 00:45:48 -0700</bug_when>
    <thetext>Created attachment 304237
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287087</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-13 00:48:37 -0700</bug_when>
    <thetext>Attachment 304237 did not pass style-queue:


ERROR: Source/WebCore/platform/network/soup/NetworkStorageSessionSoup.cpp:309:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WebCore/platform/network/soup/NetworkStorageSessionSoup.cpp:314:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WebCore/platform/network/soup/NetworkStorageSessionSoup.cpp:319:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.h:70:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.h:73:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.h:75:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.h:77:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.h:78:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.h:80:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.h:81:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/C/WKCookieManager.cpp:64:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebKit2/UIProcess/API/C/WKCookieManager.cpp:64:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WebKit2/UIProcess/API/C/WKCookieManager.cpp:69:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebKit2/UIProcess/API/C/WKCookieManager.cpp:69:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WebKit2/UIProcess/Automation/WebAutomationSession.cpp:733:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebKit2/UIProcess/Automation/WebAutomationSession.cpp:733:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.h:51:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.h:52:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.h:54:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.h:55:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.h:56:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.h:58:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.h:60:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.h:61:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.h:64:  The parameter name &quot;websiteDataStore&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebKit2/UIProcess/API/Cocoa/WKProcessPool.mm:199:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebKit2/UIProcess/API/Cocoa/WKProcessPool.mm:199:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.cpp:47:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.cpp:58:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.cpp:69:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.cpp:80:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.cpp:91:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.cpp:102:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.cpp:113:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.cpp:124:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:100:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:130:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:139:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:148:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:157:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:166:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:200:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:215:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:237:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 44 in 33 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287096</commentid>
    <comment_count>23</comment_count>
      <attachid>304238</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-03-13 01:13:31 -0700</bug_when>
    <thetext>Created attachment 304238
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287101</commentid>
    <comment_count>24</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-13 01:20:52 -0700</bug_when>
    <thetext>Attachment 304238 did not pass style-queue:


ERROR: Source/WebCore/platform/network/soup/NetworkStorageSessionSoup.cpp:309:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WebCore/platform/network/soup/NetworkStorageSessionSoup.cpp:314:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WebCore/platform/network/soup/NetworkStorageSessionSoup.cpp:319:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.h:70:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.h:73:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.h:75:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.h:76:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.h:78:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.h:79:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.h:81:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.h:82:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/C/WKCookieManager.cpp:64:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebKit2/UIProcess/API/C/WKCookieManager.cpp:64:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WebKit2/UIProcess/API/C/WKCookieManager.cpp:69:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebKit2/UIProcess/API/C/WKCookieManager.cpp:69:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WebKit2/UIProcess/Automation/WebAutomationSession.cpp:733:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebKit2/UIProcess/Automation/WebAutomationSession.cpp:733:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.h:51:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.h:52:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.h:54:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.h:55:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.h:56:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.h:58:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.h:60:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.h:61:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.h:64:  The parameter name &quot;websiteDataStore&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebKit2/UIProcess/API/Cocoa/WKProcessPool.mm:199:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebKit2/UIProcess/API/Cocoa/WKProcessPool.mm:199:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.cpp:47:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.cpp:58:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.cpp:69:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.cpp:80:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.cpp:91:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.cpp:102:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.cpp:113:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.cpp:124:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:100:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:130:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:139:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:148:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:157:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:166:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:175:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:209:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:224:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:246:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 46 in 33 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287103</commentid>
    <comment_count>25</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-03-13 01:28:01 -0700</bug_when>
    <thetext>Will be adding much more extensive tests (as Alex had suggested last year, but also to cover the entire API), but this upcoming patch will be ready for review regardless</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287105</commentid>
    <comment_count>26</comment_count>
      <attachid>304242</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-03-13 01:35:18 -0700</bug_when>
    <thetext>Created attachment 304242
Patch for review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287106</commentid>
    <comment_count>27</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-13 01:37:01 -0700</bug_when>
    <thetext>Attachment 304242 did not pass style-queue:


ERROR: Source/WebCore/platform/network/soup/NetworkStorageSessionSoup.cpp:309:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WebCore/platform/network/soup/NetworkStorageSessionSoup.cpp:314:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WebCore/platform/network/soup/NetworkStorageSessionSoup.cpp:319:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.h:70:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.h:73:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.h:75:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.h:76:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.h:78:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.h:79:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.h:81:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.h:82:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/C/WKCookieManager.cpp:64:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebKit2/UIProcess/API/C/WKCookieManager.cpp:64:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WebKit2/UIProcess/API/C/WKCookieManager.cpp:69:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebKit2/UIProcess/API/C/WKCookieManager.cpp:69:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WebKit2/UIProcess/Automation/WebAutomationSession.cpp:733:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebKit2/UIProcess/Automation/WebAutomationSession.cpp:733:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.h:51:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.h:52:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.h:54:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.h:55:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.h:56:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.h:58:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.h:60:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.h:61:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.h:64:  The parameter name &quot;websiteDataStore&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebKit2/UIProcess/API/Cocoa/WKProcessPool.mm:199:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebKit2/UIProcess/API/Cocoa/WKProcessPool.mm:199:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.cpp:47:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.cpp:58:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.cpp:69:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.cpp:80:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.cpp:91:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.cpp:102:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.cpp:113:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.cpp:124:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:100:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:130:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:139:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:148:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:157:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:166:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:175:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:209:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:224:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:246:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 46 in 37 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287150</commentid>
    <comment_count>28</comment_count>
      <attachid>304242</attachid>
    <who name="">mitz</who>
    <bug_when>2017-03-13 06:27:05 -0700</bug_when>
    <thetext>Comment on attachment 304242
Patch for review

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

&gt; Source/WebKit2/ChangeLog:8
&gt; +        This adds a new _WKHTTPCookieManager SPI.

There is very little detail in this change log, but this one detail is wrong.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287161</commentid>
    <comment_count>29</comment_count>
      <attachid>304255</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-03-13 07:29:45 -0700</bug_when>
    <thetext>Created attachment 304255
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287162</commentid>
    <comment_count>30</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-13 07:31:44 -0700</bug_when>
    <thetext>Attachment 304255 did not pass style-queue:


ERROR: Source/WebCore/platform/network/soup/NetworkStorageSessionSoup.cpp:309:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WebCore/platform/network/soup/NetworkStorageSessionSoup.cpp:314:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WebCore/platform/network/soup/NetworkStorageSessionSoup.cpp:319:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.h:70:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.h:73:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.h:75:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.h:76:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.h:78:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.h:79:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.h:81:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.h:82:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/C/WKCookieManager.cpp:64:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebKit2/UIProcess/API/C/WKCookieManager.cpp:64:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WebKit2/UIProcess/API/C/WKCookieManager.cpp:69:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebKit2/UIProcess/API/C/WKCookieManager.cpp:69:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WebKit2/UIProcess/Automation/WebAutomationSession.cpp:737:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebKit2/UIProcess/Automation/WebAutomationSession.cpp:737:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.h:51:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.h:52:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.h:54:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.h:55:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.h:56:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.h:58:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.h:60:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.h:61:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.h:64:  The parameter name &quot;websiteDataStore&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebKit2/UIProcess/API/Cocoa/WKProcessPool.mm:199:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebKit2/UIProcess/API/Cocoa/WKProcessPool.mm:199:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.cpp:47:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.cpp:58:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.cpp:69:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.cpp:80:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.cpp:91:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.cpp:102:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.cpp:113:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.cpp:124:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:100:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:130:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:139:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:148:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:157:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:166:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:175:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:209:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:224:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:246:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 46 in 37 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287180</commentid>
    <comment_count>31</comment_count>
      <attachid>304261</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-03-13 09:07:13 -0700</bug_when>
    <thetext>Created attachment 304261
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287182</commentid>
    <comment_count>32</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-13 09:09:43 -0700</bug_when>
    <thetext>Attachment 304261 did not pass style-queue:


ERROR: Source/WebCore/platform/network/soup/NetworkStorageSessionSoup.cpp:309:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WebCore/platform/network/soup/NetworkStorageSessionSoup.cpp:314:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WebCore/platform/network/soup/NetworkStorageSessionSoup.cpp:319:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.h:70:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.h:73:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.h:75:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.h:76:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.h:78:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.h:79:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.h:81:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.h:82:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/C/WKCookieManager.cpp:64:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebKit2/UIProcess/API/C/WKCookieManager.cpp:64:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WebKit2/UIProcess/API/C/WKCookieManager.cpp:69:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebKit2/UIProcess/API/C/WKCookieManager.cpp:69:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WebKit2/UIProcess/Automation/WebAutomationSession.cpp:737:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebKit2/UIProcess/Automation/WebAutomationSession.cpp:737:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.h:51:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.h:52:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.h:54:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.h:55:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.h:56:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.h:58:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.h:60:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.h:61:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.h:64:  The parameter name &quot;websiteDataStore&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebKit2/UIProcess/API/Cocoa/WKProcessPool.mm:199:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebKit2/UIProcess/API/Cocoa/WKProcessPool.mm:199:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.cpp:47:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.cpp:58:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.cpp:69:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.cpp:80:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.cpp:91:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.cpp:102:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.cpp:113:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.cpp:124:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:100:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:130:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:139:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:148:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:157:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:166:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:175:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:209:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:224:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:246:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 46 in 38 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287186</commentid>
    <comment_count>33</comment_count>
    <who name="">mitz</who>
    <bug_when>2017-03-13 09:20:58 -0700</bug_when>
    <thetext>I suggest preemptively wrapping the new SPI headers in NS_ASSUME_NONNULL_{BEGIN,END} (like all the API headers), and then removing all the “nonnull” specifiers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287226</commentid>
    <comment_count>34</comment_count>
      <attachid>304269</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-03-13 10:24:07 -0700</bug_when>
    <thetext>Created attachment 304269
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287227</commentid>
    <comment_count>35</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-13 10:26:50 -0700</bug_when>
    <thetext>Attachment 304269 did not pass style-queue:


ERROR: Source/WebCore/platform/network/soup/NetworkStorageSessionSoup.cpp:309:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WebCore/platform/network/soup/NetworkStorageSessionSoup.cpp:314:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WebCore/platform/network/soup/NetworkStorageSessionSoup.cpp:319:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.h:70:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.h:73:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.h:75:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.h:76:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.h:78:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.h:79:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.h:81:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.h:82:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/C/WKCookieManager.cpp:64:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebKit2/UIProcess/API/C/WKCookieManager.cpp:64:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WebKit2/UIProcess/API/C/WKCookieManager.cpp:69:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebKit2/UIProcess/API/C/WKCookieManager.cpp:69:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WebKit2/UIProcess/Automation/WebAutomationSession.cpp:737:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebKit2/UIProcess/Automation/WebAutomationSession.cpp:737:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.h:51:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.h:52:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.h:54:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.h:55:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.h:56:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.h:58:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.h:60:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.h:61:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.h:64:  The parameter name &quot;websiteDataStore&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebKit2/UIProcess/API/Cocoa/WKProcessPool.mm:199:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebKit2/UIProcess/API/Cocoa/WKProcessPool.mm:199:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.cpp:47:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.cpp:58:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.cpp:69:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.cpp:80:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.cpp:91:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.cpp:102:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.cpp:113:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.cpp:124:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:100:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:130:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:139:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:148:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:157:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:166:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:175:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:209:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:224:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:246:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 46 in 38 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287244</commentid>
    <comment_count>36</comment_count>
      <attachid>304269</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2017-03-13 10:53:59 -0700</bug_when>
    <thetext>Comment on attachment 304269
Patch

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

&gt; Source/WebKit2/UIProcess/API/Cocoa/_WKHTTPCookieStorage.mm:42
&gt; +        [nsCookies addObject:(NSHTTPCookie*)cookie];

Star&apos;s on the wrong side :P

&gt; Source/WebKit2/UIProcess/WebsiteData/WebsiteDataStore.cpp:1151
&gt; +                // have a data store; They should.

They

&gt; Tools/TestWebKitAPI/Tests/WebKit2Cocoa/WKHTTPCookieStorage.mm:30
&gt; +#if PLATFORM(MAC)

Why Mac only?

&gt; Tools/TestWebKitAPI/Tests/WebKit2Cocoa/WKHTTPCookieStorage.mm:46
&gt; +    auto window = adoptNS([[NSWindow alloc] initWithContentRect:[webView frame] styleMask:NSBorderlessWindowMask backing:NSBackingStoreBuffered defer:YES]);
&gt; +    [[window contentView] addSubview:webView.get()];

Why do you need a window? If you do, can you use TestWKWebView?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287251</commentid>
    <comment_count>37</comment_count>
      <attachid>304276</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-03-13 11:25:36 -0700</bug_when>
    <thetext>Created attachment 304276
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287253</commentid>
    <comment_count>38</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-13 11:27:14 -0700</bug_when>
    <thetext>Attachment 304276 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.h:70:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.h:73:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.h:75:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.h:76:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.h:78:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.h:79:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.h:81:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.h:82:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/C/WKCookieManager.cpp:64:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebKit2/UIProcess/API/C/WKCookieManager.cpp:64:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WebKit2/UIProcess/API/C/WKCookieManager.cpp:69:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebKit2/UIProcess/API/C/WKCookieManager.cpp:69:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WebKit2/UIProcess/Automation/WebAutomationSession.cpp:737:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebKit2/UIProcess/Automation/WebAutomationSession.cpp:737:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.h:51:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.h:52:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.h:54:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.h:55:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.h:56:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.h:58:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.h:60:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.h:61:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/Cocoa/WKProcessPool.mm:199:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebKit2/UIProcess/API/Cocoa/WKProcessPool.mm:199:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.cpp:47:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.cpp:58:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.cpp:69:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.cpp:80:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.cpp:91:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.cpp:102:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.cpp:113:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.cpp:124:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:100:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:130:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:139:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:148:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:157:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:166:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:175:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:209:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:224:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:246:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 42 in 38 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287281</commentid>
    <comment_count>39</comment_count>
      <attachid>304285</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-03-13 12:14:54 -0700</bug_when>
    <thetext>Created attachment 304285
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287283</commentid>
    <comment_count>40</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-13 12:17:37 -0700</bug_when>
    <thetext>Attachment 304285 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.h:70:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.h:73:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.h:75:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.h:76:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.h:78:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.h:79:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.h:81:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.h:82:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/C/WKCookieManager.cpp:64:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebKit2/UIProcess/API/C/WKCookieManager.cpp:64:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WebKit2/UIProcess/API/C/WKCookieManager.cpp:69:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebKit2/UIProcess/API/C/WKCookieManager.cpp:69:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WebKit2/UIProcess/Automation/WebAutomationSession.cpp:737:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebKit2/UIProcess/Automation/WebAutomationSession.cpp:737:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.h:51:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.h:52:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.h:54:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.h:55:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.h:56:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.h:58:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.h:60:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.h:61:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/Cocoa/WKProcessPool.mm:199:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebKit2/UIProcess/API/Cocoa/WKProcessPool.mm:199:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.cpp:47:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.cpp:58:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.cpp:69:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.cpp:80:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.cpp:91:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.cpp:102:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.cpp:113:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.cpp:124:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:100:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:130:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:139:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:148:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:157:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:166:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:175:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:209:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:224:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:246:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 42 in 39 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287301</commentid>
    <comment_count>41</comment_count>
      <attachid>304288</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-03-13 12:57:34 -0700</bug_when>
    <thetext>Created attachment 304288
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287302</commentid>
    <comment_count>42</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-13 13:00:22 -0700</bug_when>
    <thetext>Attachment 304288 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.h:70:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.h:73:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.h:75:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.h:76:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.h:78:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.h:79:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.h:81:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.h:82:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/C/WKCookieManager.cpp:64:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebKit2/UIProcess/API/C/WKCookieManager.cpp:64:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WebKit2/UIProcess/API/C/WKCookieManager.cpp:69:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebKit2/UIProcess/API/C/WKCookieManager.cpp:69:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WebKit2/UIProcess/Automation/WebAutomationSession.cpp:737:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebKit2/UIProcess/Automation/WebAutomationSession.cpp:737:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.h:51:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.h:52:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.h:54:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.h:55:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.h:56:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.h:58:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.h:60:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.h:61:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/Cocoa/WKProcessPool.mm:199:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebKit2/UIProcess/API/Cocoa/WKProcessPool.mm:199:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.cpp:47:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.cpp:58:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.cpp:69:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.cpp:80:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.cpp:91:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.cpp:102:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.cpp:113:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.cpp:124:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:100:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:130:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:139:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:148:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:157:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:166:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:175:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:209:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:224:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:246:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 42 in 39 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287306</commentid>
    <comment_count>43</comment_count>
      <attachid>304290</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-03-13 13:20:50 -0700</bug_when>
    <thetext>Created attachment 304290
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287309</commentid>
    <comment_count>44</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-13 13:22:36 -0700</bug_when>
    <thetext>Attachment 304290 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.h:70:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.h:73:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.h:75:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.h:76:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.h:78:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.h:79:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.h:81:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.h:82:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/C/WKCookieManager.cpp:64:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebKit2/UIProcess/API/C/WKCookieManager.cpp:64:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WebKit2/UIProcess/API/C/WKCookieManager.cpp:69:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebKit2/UIProcess/API/C/WKCookieManager.cpp:69:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WebKit2/UIProcess/Automation/WebAutomationSession.cpp:737:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebKit2/UIProcess/Automation/WebAutomationSession.cpp:737:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.h:51:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.h:52:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.h:54:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.h:55:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.h:56:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.h:58:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.h:60:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.h:61:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/Cocoa/WKProcessPool.mm:199:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebKit2/UIProcess/API/Cocoa/WKProcessPool.mm:199:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.cpp:47:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.cpp:58:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.cpp:69:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.cpp:80:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.cpp:91:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.cpp:102:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.cpp:113:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.cpp:124:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:100:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:130:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:139:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:148:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:157:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:166:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:175:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:209:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:224:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:246:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/gtk/WebKitCookieManager.cpp:182:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebKit2/UIProcess/API/gtk/WebKitCookieManager.cpp:182:  Missing space inside { }.  [whitespace/braces] [5]
Total errors found: 44 in 39 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287335</commentid>
    <comment_count>45</comment_count>
      <attachid>304299</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-03-13 14:15:15 -0700</bug_when>
    <thetext>Created attachment 304299
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287337</commentid>
    <comment_count>46</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-13 14:18:07 -0700</bug_when>
    <thetext>Attachment 304299 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.h:70:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.h:73:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.h:75:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.h:76:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.h:78:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.h:79:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.h:81:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.h:82:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/C/WKCookieManager.cpp:64:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebKit2/UIProcess/API/C/WKCookieManager.cpp:64:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WebKit2/UIProcess/API/C/WKCookieManager.cpp:69:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebKit2/UIProcess/API/C/WKCookieManager.cpp:69:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WebKit2/UIProcess/Automation/WebAutomationSession.cpp:737:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebKit2/UIProcess/Automation/WebAutomationSession.cpp:737:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.h:51:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.h:52:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.h:54:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.h:55:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.h:56:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.h:58:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.h:60:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.h:61:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/Cocoa/WKProcessPool.mm:199:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebKit2/UIProcess/API/Cocoa/WKProcessPool.mm:199:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.cpp:47:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.cpp:58:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.cpp:69:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.cpp:80:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.cpp:91:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.cpp:102:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.cpp:113:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.cpp:124:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:100:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:130:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:139:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:148:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:157:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:166:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:175:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:209:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:224:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:246:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/gtk/WebKitCookieManager.cpp:182:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebKit2/UIProcess/API/gtk/WebKitCookieManager.cpp:182:  Missing space inside { }.  [whitespace/braces] [5]
Total errors found: 44 in 39 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287379</commentid>
    <comment_count>47</comment_count>
      <attachid>304299</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2017-03-13 15:24:09 -0700</bug_when>
    <thetext>Comment on attachment 304299
Patch

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

Also please address ggaren&apos;s offline comments.

&gt; Source/WebKit2/ChangeLog:10
&gt; +        After the implementation is landed and we review internally we&apos;ll consider promoting to API.

Not necessarily a great changelog line.

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKHTTPCookieStorage.h:53
&gt; + @param cookies The cookie to set.

Cookie*s*?

&gt; Source/WebKit2/UIProcess/WebsiteData/WebsiteDataStore.cpp:122
&gt; +    // FIXME: We need to start to unravel this mess going forward.

Please.

&gt; Tools/TestWebKitAPI/Tests/WebKit2Cocoa/WKHTTPCookieStorage.mm:77
&gt; +    [cookieStorage setCookie:cookie1.get() completionHandler:nil];
&gt; +    [cookieStorage setCookie:cookie2.get() completionHandler:nil];

Seems like you should make sure these completion handlers get called! And also have tests for e.g. what happens if the web/network process dies while doing this, etc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287387</commentid>
    <comment_count>48</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-03-13 15:33:33 -0700</bug_when>
    <thetext>(In reply to comment #47)
&gt; Comment on attachment 304299 [details]
&gt; Patch
&gt; 
&gt; &gt; Tools/TestWebKitAPI/Tests/WebKit2Cocoa/WKHTTPCookieStorage.mm:77
&gt; &gt; +    [cookieStorage setCookie:cookie1.get() completionHandler:nil];
&gt; &gt; +    [cookieStorage setCookie:cookie2.get() completionHandler:nil];
&gt; 
&gt; Seems like you should make sure these completion handlers get called! And
&gt; also have tests for e.g. what happens if the web/network process dies while
&gt; doing this, etc.

I&apos;ll change this basic test to have completion handlers there.

More edge case tests coming soon!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287391</commentid>
    <comment_count>49</comment_count>
      <attachid>304314</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-03-13 15:41:40 -0700</bug_when>
    <thetext>Created attachment 304314
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287394</commentid>
    <comment_count>50</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-13 15:44:15 -0700</bug_when>
    <thetext>Attachment 304314 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.h:70:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.h:73:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.h:75:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.h:76:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.h:78:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.h:79:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.h:81:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.h:82:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/C/WKCookieManager.cpp:64:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebKit2/UIProcess/API/C/WKCookieManager.cpp:64:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WebKit2/UIProcess/API/C/WKCookieManager.cpp:69:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebKit2/UIProcess/API/C/WKCookieManager.cpp:69:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Tools/TestWebKitAPI/Tests/WebKit2Cocoa/WKHTTPCookieStorage.mm:76:  Missing space before {  [whitespace/braces] [5]
ERROR: Tools/TestWebKitAPI/Tests/WebKit2Cocoa/WKHTTPCookieStorage.mm:83:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebKit2/UIProcess/Automation/WebAutomationSession.cpp:737:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebKit2/UIProcess/Automation/WebAutomationSession.cpp:737:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.h:51:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.h:52:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.h:54:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.h:55:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.h:56:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.h:58:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.h:60:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.h:61:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/Cocoa/WKProcessPool.mm:199:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebKit2/UIProcess/API/Cocoa/WKProcessPool.mm:199:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.cpp:47:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.cpp:58:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.cpp:69:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.cpp:80:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.cpp:91:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.cpp:102:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.cpp:113:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/APIHTTPCookieStorage.cpp:124:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:100:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:130:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:139:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:148:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:157:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:166:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:175:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:209:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:224:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp:246:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/gtk/WebKitCookieManager.cpp:182:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebKit2/UIProcess/API/gtk/WebKitCookieManager.cpp:182:  Missing space inside { }.  [whitespace/braces] [5]
Total errors found: 46 in 39 files


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

Clearing flags on attachment: 304314

Committed r213877: &lt;http://trac.webkit.org/changeset/213877&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287399</commentid>
    <comment_count>52</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-13 16:01:01 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287403</commentid>
    <comment_count>53</comment_count>
    <who name="">roger.hu</who>
    <bug_when>2017-03-13 16:08:10 -0700</bug_when>
    <thetext>Thank you again!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287434</commentid>
    <comment_count>54</comment_count>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2017-03-13 17:18:29 -0700</bug_when>
    <thetext>Committed r213879: &lt;http://trac.webkit.org/changeset/213879&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287446</commentid>
    <comment_count>55</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2017-03-13 18:04:31 -0700</bug_when>
    <thetext>(In reply to comment #51)
&gt; Comment on attachment 304314 [details]
&gt; Patch
&gt; 
&gt; Clearing flags on attachment: 304314
&gt; 
&gt; Committed r213877: &lt;http://trac.webkit.org/changeset/213877&gt;

This change appears to have caused API test WebKit2.CookieManager to fail with an assertion: https://build.webkit.org/builders/Apple%20El%20Capitan%20Debug%20WK2%20%28Tests%29/builds/11623/steps/run-api-tests/logs/stdio</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287463</commentid>
    <comment_count>56</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-03-13 19:40:09 -0700</bug_when>
    <thetext>(In reply to comment #55)
&gt; (In reply to comment #51)
&gt; &gt; Comment on attachment 304314 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; Clearing flags on attachment: 304314
&gt; &gt; 
&gt; &gt; Committed r213877: &lt;http://trac.webkit.org/changeset/213877&gt;
&gt; 
&gt; This change appears to have caused API test WebKit2.CookieManager to fail
&gt; with an assertion:
&gt; https://build.webkit.org/builders/
&gt; Apple%20El%20Capitan%20Debug%20WK2%20%28Tests%29/builds/11623/steps/run-api-
&gt; tests/logs/stdio

Looking into it now. Please disable the test instead of rolling out if I can&apos;t resolve it quickly enough.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287468</commentid>
    <comment_count>57</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-03-13 19:51:56 -0700</bug_when>
    <thetext>(In reply to comment #56)
&gt; (In reply to comment #55)
&gt; &gt; (In reply to comment #51)
&gt; &gt; &gt; Comment on attachment 304314 [details]
&gt; &gt; &gt; Patch
&gt; &gt; &gt; 
&gt; &gt; &gt; Clearing flags on attachment: 304314
&gt; &gt; &gt; 
&gt; &gt; &gt; Committed r213877: &lt;http://trac.webkit.org/changeset/213877&gt;
&gt; &gt; 
&gt; &gt; This change appears to have caused API test WebKit2.CookieManager to fail
&gt; &gt; with an assertion:
&gt; &gt; https://build.webkit.org/builders/
&gt; &gt; Apple%20El%20Capitan%20Debug%20WK2%20%28Tests%29/builds/11623/steps/run-api-
&gt; &gt; tests/logs/stdio
&gt; 
&gt; Looking into it now. Please disable the test instead of rolling out if I
&gt; can&apos;t resolve it quickly enough.

There is something to be cleaned up here, but in the meantime it&apos;s a debug-only assert that doesn&apos;t cause a big problem in release builds.

I&apos;m going to disable the test for now because I probably won&apos;t be able to fix tonight, but will first thing tomorrow AM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287626</commentid>
    <comment_count>58</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-03-14 08:53:43 -0700</bug_when>
    <thetext>(In reply to comment #57)
&gt; (In reply to comment #56)
&gt; &gt; (In reply to comment #55)
&gt; &gt; &gt; (In reply to comment #51)
&gt; &gt; &gt; &gt; Comment on attachment 304314 [details]
&gt; &gt; &gt; &gt; Patch
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Clearing flags on attachment: 304314
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Committed r213877: &lt;http://trac.webkit.org/changeset/213877&gt;
&gt; &gt; &gt; 
&gt; &gt; &gt; This change appears to have caused API test WebKit2.CookieManager to fail
&gt; &gt; &gt; with an assertion:
&gt; &gt; &gt; https://build.webkit.org/builders/
&gt; &gt; &gt; Apple%20El%20Capitan%20Debug%20WK2%20%28Tests%29/builds/11623/steps/run-api-
&gt; &gt; &gt; tests/logs/stdio
&gt; &gt; 
&gt; &gt; Looking into it now. Please disable the test instead of rolling out if I
&gt; &gt; can&apos;t resolve it quickly enough.
&gt; 
&gt; There is something to be cleaned up here, but in the meantime it&apos;s a
&gt; debug-only assert that doesn&apos;t cause a big problem in release builds.
&gt; 
&gt; I&apos;m going to disable the test for now because I probably won&apos;t be able to
&gt; fix tonight, but will first thing tomorrow AM.

Working on it over in https://bugs.webkit.org/show_bug.cgi?id=169581</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1288023</commentid>
    <comment_count>59</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2017-03-15 02:14:00 -0700</bug_when>
    <thetext>(In reply to comment #51)
&gt; Comment on attachment 304314 [details]
&gt; Patch
&gt; 
&gt; Clearing flags on attachment: 304314
&gt; 
&gt; Committed r213877: &lt;http://trac.webkit.org/changeset/213877&gt;

It broke the Apple Mac cmake build:
https://build.webkit.org/builders/Apple%20El%20Capitan%20CMake%20Debug%20%28Build%29/builds/12991</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1312363</commentid>
    <comment_count>60</comment_count>
    <who name="">roger.hu</who>
    <bug_when>2017-05-24 12:40:31 -0700</bug_when>
    <thetext>Just wondering (sorry about the dup question) -- do you have any sense of when these patches will make themselves into iOS updates?  Would clients need to have WebKit updated too or is it primarily on the iOS SDK side?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1312366</commentid>
    <comment_count>61</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2017-05-24 12:48:02 -0700</bug_when>
    <thetext>(In reply to rhu from comment #60)
&gt; Just wondering (sorry about the dup question) -- do you have any sense of
&gt; when these patches will make themselves into iOS updates?

Apple doesn&apos;t comment on the timing/content of updates.

&gt; Would clients need to have WebKit updated too or is it primarily on the iOS SDK side?

Things like this will certainly require the client to update.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>281607</attachid>
            <date>2016-06-17 22:28:19 -0700</date>
            <delta_ts>2017-03-12 18:57:52 -0700</delta_ts>
            <desc>Patch v1</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>77494</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBkNjQ1Yzg1Li5lZTE2YzExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDQg
QEAKKzIwMTYtMDYtMTcgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAg
ICAgIFNQSSBmb3I6IFdLV2ViVmlldyBwcm92aWRlcyBubyBhY2Nlc3MgdG8gY29va2llcworICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vMTc0ODYyNTA+IGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTU4OTAxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQ292ZXJlZCBieSBuZXcgQVBJIHRlc3QuCisKKyAgICAgICAgKiBX
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgIAorICAgICAgICAqIHBs
YXRmb3JtL0Nvb2tpZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q29va2llOjpDb29raWUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q29va2llSGFzaDo6aGFzaCk6CisgICAgICAgIChXZWJDb3JlOjpDb29r
aWVIYXNoOjplcXVhbCk6CisgICAgICAgIChXZWJDb3JlOjpDb29raWU6OmVuY29kZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDb29raWU6OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vY29jb2Ev
Q29va2llQ29jb2EubW06IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6cG9ydFZlY3RvckZyb21M
aXN0KToKKyAgICAgICAgKFdlYkNvcmU6OnBvcnRTdHJpbmdGcm9tVmVjdG9yKToKKyAgICAgICAg
KFdlYkNvcmU6OkNvb2tpZTo6Q29va2llKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb2tpZTo6b3Bl
cmF0b3IgTlNIVFRQQ29va2llKik6CisgICAgICAgIAorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3Rv
cmFnZVNlc3Npb246OmdldEFsbENvb2tpZXMpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpnZXRDb29raWVzKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6YWRkQ29va2llKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdl
U2Vzc2lvbjo6YWRkQ29va2llcyk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNl
c3Npb246OmRlbGV0ZUNvb2tpZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2NvYS9O
ZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpO
ZXR3b3JrU3RvcmFnZVNlc3Npb246Om5zQ29va2llU3RvcmFnZSk6CisgICAgICAgIChXZWJDb3Jl
Ojpuc0Nvb2tpZXNUb0NvcmVDb29raWVzKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6Z2V0QWxsQ29va2llcyk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3Rv
cmFnZVNlc3Npb246OmdldENvb2tpZXMpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjphZGRDb29raWUpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjphZGRDb29raWVzKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vz
c2lvbjo6ZGVsZXRlQ29va2llKToKKyAgICAgICAgCisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9tYWMvQ29va2llSmFyTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6Y29va2llU3RvcmFnZSk6
CisKIDIwMTYtMDYtMTMgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAog
ICAgICAgICB3aW5kb3cub25lcnJvciBzaG91bGQgcGFzcyB0aGUgRXJyb3JFdmVudCdzICdlcnJv
cicgcHJvcGVydHkgYXMgdGhlIDV0aCBhcmd1bWVudCB0byB0aGUgZXZlbnQgaGFuZGxlcgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IDkzZWMyZTYuLjljYjJhZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIxNzYsNiArMjE3Niw4IEBACiAJCTUxQTA1MjU2MTA1
ODg3NDAwMENDOUU5NSAvKiBQcm90ZWN0aW9uU3BhY2VIYXNoLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUEwNTI1NTEwNTg4NzQwMDBDQzlFOTUgLyog
UHJvdGVjdGlvblNwYWNlSGFzaC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTUxQTRCQjBBMTk1NEQ2MTYwMEZBNUMyRSAvKiBHYW1lcGFkLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQTRCQjA3MTk1
NEQ2MTYwMEZBNUMyRSAvKiBHYW1lcGFkLmNwcCAqLzsgfTsKIAkJNTFBNEJCMTAxOTU0RDYyNzAw
RkE1QzJFIC8qIE5hdmlnYXRvckdhbWVwYWQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTFBNEJCMEQxOTU0RDYyNzAwRkE1QzJFIC8qIE5hdmlnYXRv
ckdhbWVwYWQuY3BwICovOyB9OworCQk1MUE1ODc3OTFEMTQ2QjEyMDA0QkE5QUYgLyogQ29va2ll
Q29jb2EubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MUE1ODc3ODFEMTQ2QUM4MDA0QkE5QUYgLyogQ29va2llQ29jb2EubW0gKi87IH07CisJCTUxQTU4
NzdCMUQxNDk0NUYwMDRCQTlBRiAvKiBOZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQTU4NzdBMUQxNDky
NDkwMDRCQTlBRiAvKiBOZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbSAqLzsgfTsKIAkJNTFB
OUQ5RTkxOTVCOTMxRjAwMUIyQjVDIC8qIEdhbWVwYWRNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQTlEOUU3MTk1QjkzMUYwMDFCMkI1
QyAvKiBHYW1lcGFkTWFuYWdlci5jcHAgKi87IH07CiAJCTUxQTlEOUVBMTk1QjkzMUYwMDFCMkI1
QyAvKiBHYW1lcGFkTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTFBOUQ5RTgxOTVCOTMxRjAwMUIyQjVDIC8qIEdhbWVwYWRNYW5hZ2VyLmgg
Ki87IH07CiAJCTUxQTlEOUYzMTk1Qjk1MDMwMDFCMkI1QyAvKiBISURHYW1lcGFkLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQTlEOUVGMTk1Qjk1
MDMwMDFCMkI1QyAvKiBISURHYW1lcGFkLmNwcCAqLzsgfTsKQEAgLTk3NTIsNiArOTc1NCw4IEBA
CiAJCTUxQTRCQjBEMTk1NEQ2MjcwMEZBNUMyRSAvKiBOYXZpZ2F0b3JHYW1lcGFkLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5hdmlnYXRvckdhbWVwYWQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUE0QkIwRTE5NTRENjI3MDBGQTVDMkUgLyog
TmF2aWdhdG9yR2FtZXBhZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOYXZp
Z2F0b3JHYW1lcGFkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxQTRCQjBGMTk1
NEQ2MjcwMEZBNUMyRSAvKiBOYXZpZ2F0b3JHYW1lcGFkLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBh
dGggPSBOYXZpZ2F0b3JHYW1lcGFkLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NTFBNTg3NzgxRDE0NkFDODAwNEJBOUFGIC8qIENvb2tpZUNvY29hLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQ29va2llQ29jb2EubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTUxQTU4NzdBMUQxNDkyNDkwMDRCQTlBRiAvKiBOZXR3b3JrU3RvcmFn
ZVNlc3Npb25Db2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1MUE5RDlFNzE5NUI5MzFGMDAxQjJCNUMgLyogR2FtZXBhZE1hbmFnZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR2FtZXBhZE1hbmFnZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUE5RDlFODE5NUI5MzFGMDAxQjJCNUMgLyogR2Ft
ZXBhZE1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR2FtZXBhZE1h
bmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFBOUQ5RUYxOTVCOTUwMzAw
MUIyQjVDIC8qIEhJREdhbWVwYWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSElER2FtZXBhZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xODI0
Nyw2ICsxODI1MSw3IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQkzNzkyOTE3QzE5ODc2NzhGMDBG
NEI2NjEgLyogQ3JlZGVudGlhbENvY29hLmggKi8sCiAJCQkJMzc5MjkxN0IxOTg3Njc4RjAwRjRC
NjYxIC8qIENyZWRlbnRpYWxDb2NvYS5tbSAqLywKKwkJCQk1MUE1ODc3QTFEMTQ5MjQ5MDA0QkE5
QUYgLyogTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2EubW0gKi8sCiAJCQkJMzcyQURBMzcxOTdG
NDdCOTAwRkM1MDFFIC8qIFByb3RlY3Rpb25TcGFjZUNvY29hLmggKi8sCiAJCQkJMzcyQURBMzkx
OTdGNjg3NjAwRkM1MDFFIC8qIFByb3RlY3Rpb25TcGFjZUNvY29hLm1tICovLAogCQkJCTVDOUI4
NjBCMUMyMUUzQzYwMDExMEYzNiAvKiBSZXNvdXJjZUxvYWRUaW1pbmcubW0gKi8sCkBAIC0yMDA2
Niw2ICsyMDA3MSw3IEBACiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJ
CUExNDA5MEZBMUFBNTFFMUQwMDkxMTkxQSAvKiBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXJD
b2NvYS5tbSAqLywKKwkJCQk1MUE1ODc3ODFEMTQ2QUM4MDA0QkE5QUYgLyogQ29va2llQ29jb2Eu
bW0gKi8sCiAJCQkJQ0Q3RDMzNDUxQzdBMTZCRjAwMDQxMjkzIC8qIENvcmVWaWRlb1NvZnRMaW5r
LmNwcCAqLywKIAkJCQlDRDdEMzM0NjFDN0ExNkJGMDAwNDEyOTMgLyogQ29yZVZpZGVvU29mdExp
bmsuaCAqLywKIAkJCQk3Qzc5NDFFMzFDNTZDMjkzMDBBNEM1OEUgLyogRGF0YURldGVjdG9yc0Nv
cmVTb2Z0TGluay5oICovLApAQCAtMzA1MzksNiArMzA1NDUsNyBAQAogCQkJCUNEQTk4RERGMTYw
MjZBMzcwMEZFQTNCMSAvKiBKU01lZGlhS2V5TWVzc2FnZUV2ZW50LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUNEQTk4REUwMTYwMjZBMzcwMEZFQTNCMSAvKiBKU01lZGlhS2V5TmVlZGVkRXZlbnQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RBOThFMDQxNjAzOUUxQTAwRkVBM0IxIC8qIEpTTWVk
aWFLZXlzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUxQTU4NzdCMUQxNDk0NUYwMDRCQTlBRiAv
KiBOZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNEQTk4
RTA2MTYwMzlFMUYwMEZFQTNCMSAvKiBKU01lZGlhS2V5U2Vzc2lvbi5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlCQzNDMzlCNjBDMEQzRDhEMDA1RjREN0EgLyogSlNNZWRpYUxpc3QuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJRDNBOTRBNDYxMjJEQzQwRjAwQTM3QkJDIC8qIEpTTWVkaWFRdWVyeUxp
c3QuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zMDc2MCw2ICszMDc2Nyw3IEBACiAJCQkJQjJGQTNE
QTIwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHTGVuZ3RoTGlzdC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlCMkZBM0RBNDBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdMaW5lYXJHcmFkaWVudEVsZW1l
bnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjJGQTNEQTYwQUI3NUE2RjAwMEU1QUM0IC8qIEpT
U1ZHTGluZUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTFBNTg3NzkxRDE0NkIxMjAw
NEJBOUFGIC8qIENvb2tpZUNvY29hLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQjJGQTNEQTgwQUI3
NUE2RjAwMEU1QUM0IC8qIEpTU1ZHTWFya2VyRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlCMkZBM0RBQTBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdNYXNrRWxlbWVudC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlCMkZBM0RBQzBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdNYXRyaXguY3Bw
IGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db29r
aWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nvb2tpZS5oCmluZGV4IDk2MWRmZTUuLjQz
YWMyNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nvb2tpZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nvb2tpZS5oCkBAIC0xLDUgKzEsNiBAQAogLyoKICAq
IENvcHlyaWdodCAoQykgMjAwOSBKb3NlcGggUGVjb3Jhcm8uIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMyw2MCArMjQsMTI1IEBACiAgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKICAqLwogCi0jaWZuZGVmIENvb2tpZV9oCi0jZGVmaW5lIENvb2tpZV9oCisj
cHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmlu
Z0hhc2guaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAorI2lmIFBMQVRGT1JN
KENPQ09BKQorT0JKQ19DTEFTUyBOU0hUVFBDb29raWU7CisjZW5kaWYKKwogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi0gICAgc3RydWN0IENvb2tpZSB7Ci0gICAgICAgIENvb2tpZSgpIHsgfQotCi0g
ICAgICAgIENvb2tpZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUsIGNv
bnN0IFN0cmluZyYgZG9tYWluLAotICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgcGF0aCwg
ZG91YmxlIGV4cGlyZXMsIGJvb2wgaHR0cE9ubHksIGJvb2wgc2VjdXJlLAotICAgICAgICAgICAg
ICAgIGJvb2wgc2Vzc2lvbikKLSAgICAgICAgICAgIDogbmFtZShuYW1lKQotICAgICAgICAgICAg
LCB2YWx1ZSh2YWx1ZSkKLSAgICAgICAgICAgICwgZG9tYWluKGRvbWFpbikKLSAgICAgICAgICAg
ICwgcGF0aChwYXRoKQotICAgICAgICAgICAgLCBleHBpcmVzKGV4cGlyZXMpCi0gICAgICAgICAg
ICAsIGh0dHBPbmx5KGh0dHBPbmx5KQotICAgICAgICAgICAgLCBzZWN1cmUoc2VjdXJlKQotICAg
ICAgICAgICAgLCBzZXNzaW9uKHNlc3Npb24pCi0gICAgICAgIHsKLSAgICAgICAgfQotCi0gICAg
ICAgIFN0cmluZyBuYW1lOwotICAgICAgICBTdHJpbmcgdmFsdWU7Ci0gICAgICAgIFN0cmluZyBk
b21haW47Ci0gICAgICAgIFN0cmluZyBwYXRoOwotICAgICAgICAvLyBFeHBpcmF0aW9uIGRhdGUs
IGV4cHJlc3NlZCBhcyBtaWxsaXNlY29uZHMgc2luY2UgdGhlIFVOSVggZXBvY2guCi0gICAgICAg
IGRvdWJsZSBleHBpcmVzOwotICAgICAgICBib29sIGh0dHBPbmx5OwotICAgICAgICBib29sIHNl
Y3VyZTsKLSAgICAgICAgYm9vbCBzZXNzaW9uOwotICAgIH07CitzdHJ1Y3QgQ29va2llIHsKKyAg
ICBDb29raWUoKSB7IH0KIAotICAgIHN0cnVjdCBDb29raWVIYXNoIHsKLSAgICAgICAgc3RhdGlj
IHVuc2lnbmVkIGhhc2goY29uc3QgQ29va2llJiBrZXkpCi0gICAgICAgIHsgCi0gICAgICAgICAg
ICByZXR1cm4gU3RyaW5nSGFzaDo6aGFzaChrZXkubmFtZSkgKyBTdHJpbmdIYXNoOjpoYXNoKGtl
eS5kb21haW4pICsgU3RyaW5nSGFzaDo6aGFzaChrZXkucGF0aCkgKyBrZXkuc2VjdXJlOwotICAg
ICAgICB9CisgICAgQ29va2llKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1
ZSwgY29uc3QgU3RyaW5nJiBkb21haW4sIGNvbnN0IFN0cmluZyYgcGF0aCwgZG91YmxlIGV4cGly
ZXMsIGJvb2wgaHR0cE9ubHksIGJvb2wgc2VjdXJlLCBib29sIHNlc3Npb24pCisgICAgICAgIDog
Q29va2llKG5hbWUsIHZhbHVlLCBkb21haW4sIHBhdGgsIGV4cGlyZXMsIGh0dHBPbmx5LCBzZWN1
cmUsIHNlc3Npb24sIHsgfSwgeyB9LCB7IH0pCisgICAgeworICAgIH0KIAotICAgICAgICBzdGF0
aWMgYm9vbCBlcXVhbChjb25zdCBDb29raWUmIGEsIGNvbnN0IENvb2tpZSYgYikKLSAgICAgICAg
ewotICAgICAgICAgICAgcmV0dXJuIGEubmFtZSA9PSBiLm5hbWUgJiYgYS5kb21haW4gPT0gYi5k
b21haW4gJiYgYS5wYXRoID09IGIucGF0aCAmJiBhLnNlY3VyZSA9PSBiLnNlY3VyZTsKLSAgICAg
ICAgfQotICAgIH07CisgICAgQ29va2llKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5n
JiB2YWx1ZSwgY29uc3QgU3RyaW5nJiBkb21haW4sIGNvbnN0IFN0cmluZyYgcGF0aCwgZG91Ymxl
IGV4cGlyZXMsIGJvb2wgaHR0cE9ubHksIGJvb2wgc2VjdXJlLCBib29sIHNlc3Npb24sIGNvbnN0
IFN0cmluZyYgY29tbWVudCwgY29uc3QgVVJMJiBjb21tZW50VVJMLCBjb25zdCBWZWN0b3I8dWlu
dDE2X3Q+JiBwb3J0cykKKyAgICAgICAgOiBuYW1lKG5hbWUpCisgICAgICAgICwgdmFsdWUodmFs
dWUpCisgICAgICAgICwgZG9tYWluKGRvbWFpbikKKyAgICAgICAgLCBwYXRoKHBhdGgpCisgICAg
ICAgICwgZXhwaXJlcyhleHBpcmVzKQorICAgICAgICAsIGh0dHBPbmx5KGh0dHBPbmx5KQorICAg
ICAgICAsIHNlY3VyZShzZWN1cmUpCisgICAgICAgICwgc2Vzc2lvbihzZXNzaW9uKQorICAgICAg
ICAsIGNvbW1lbnQoY29tbWVudCkKKyAgICAgICAgLCBjb21tZW50VVJMKGNvbW1lbnRVUkwpCisg
ICAgICAgICwgcG9ydHMocG9ydHMpCisgICAgeworICAgIH0KKworI2lmIFBMQVRGT1JNKENPQ09B
KQorICAgIFdFQkNPUkVfRVhQT1JUIENvb2tpZShOU0hUVFBDb29raWUgKik7CisgICAgV0VCQ09S
RV9FWFBPUlQgb3BlcmF0b3IgTlNIVFRQQ29va2llKigpIGNvbnN0OworI2VuZGlmCisKKyAgICB0
ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAg
dGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIGJvb2wgZGVjb2RlKERlY29kZXImLCBDb29r
aWUmKTsKKworICAgIFN0cmluZyBuYW1lOworICAgIFN0cmluZyB2YWx1ZTsKKyAgICBTdHJpbmcg
ZG9tYWluOworICAgIFN0cmluZyBwYXRoOworICAgIC8vIEV4cGlyYXRpb24gZGF0ZSwgZXhwcmVz
c2VkIGFzIG1pbGxpc2Vjb25kcyBzaW5jZSB0aGUgVU5JWCBlcG9jaC4KKyAgICBkb3VibGUgZXhw
aXJlczsKKyAgICBib29sIGh0dHBPbmx5OworICAgIGJvb2wgc2VjdXJlOworICAgIGJvb2wgc2Vz
c2lvbjsKKyAgICBTdHJpbmcgY29tbWVudDsKKyAgICBVUkwgY29tbWVudFVSTDsKKyAgICBWZWN0
b3I8dWludDE2X3Q+IHBvcnRzOworfTsKKworc3RydWN0IENvb2tpZUhhc2ggeworICAgIHN0YXRp
YyB1bnNpZ25lZCBoYXNoKGNvbnN0IENvb2tpZSYga2V5KQorICAgIHsgCisgICAgICAgIHJldHVy
biBTdHJpbmdIYXNoOjpoYXNoKGtleS5uYW1lKSArIFN0cmluZ0hhc2g6Omhhc2goa2V5LmRvbWFp
bikgKyBTdHJpbmdIYXNoOjpoYXNoKGtleS5wYXRoKSArIGtleS5zZWN1cmU7CisgICAgfQorCisg
ICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgQ29va2llJiBhLCBjb25zdCBDb29raWUmIGIpCisg
ICAgeworICAgICAgICByZXR1cm4gYS5uYW1lID09IGIubmFtZSAmJiBhLmRvbWFpbiA9PSBiLmRv
bWFpbiAmJiBhLnBhdGggPT0gYi5wYXRoICYmIGEuc2VjdXJlID09IGIuc2VjdXJlOworICAgIH0K
K307CisKK3RlbXBsYXRlPGNsYXNzIEVuY29kZXI+Cit2b2lkIENvb2tpZTo6ZW5jb2RlKEVuY29k
ZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCBuYW1lOworICAgIGVuY29kZXIg
PDwgdmFsdWU7CisgICAgZW5jb2RlciA8PCBkb21haW47CisgICAgZW5jb2RlciA8PCBwYXRoOwor
ICAgIGVuY29kZXIgPDwgZXhwaXJlczsKKyAgICBlbmNvZGVyIDw8IGh0dHBPbmx5OworICAgIGVu
Y29kZXIgPDwgc2VjdXJlOworICAgIGVuY29kZXIgPDwgc2Vzc2lvbjsKKyAgICBlbmNvZGVyIDw8
IGNvbW1lbnQ7CisgICAgZW5jb2RlciA8PCBjb21tZW50VVJMOworICAgIGVuY29kZXIgPDwgcG9y
dHM7Cit9CisKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+Citib29sIENvb2tpZTo6ZGVjb2RlKERl
Y29kZXImIGRlY29kZXIsIENvb2tpZSYgY29va2llKQoreworICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUoY29va2llLm5hbWUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShjb29raWUudmFsdWUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShjb29raWUuZG9tYWluKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IGlmICghZGVjb2Rlci5kZWNvZGUoY29va2llLnBhdGgpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShjb29raWUuZXhwaXJlcykpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGNvb2tpZS5odHRwT25seSkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGNvb2tpZS5zZWN1cmUp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShjb29raWUu
c2Vzc2lvbikpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KGNvb2tpZS5jb21tZW50KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUoY29va2llLmNvbW1lbnRVUkwpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShjb29raWUucG9ydHMpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCiBuYW1l
c3BhY2UgV1RGIHsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgRGVmYXVsdEhhc2g7
CiAgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8V2ViQ29yZTo6Q29va2llPiB7CiAg
ICAgICAgIHR5cGVkZWYgV2ViQ29yZTo6Q29va2llSGFzaCBIYXNoOwogICAgIH07CiB9Ci0KLSNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvQ29va2llQ29j
b2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9Db29raWVDb2NvYS5tbQpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NWM1ZDE2Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvQ29va2llQ29jb2EubW0KQEAgLTAsMCAr
MSwxMDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNv
b2tpZS5oIgorCisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK3N0YXRpYyBWZWN0b3I8dWludDE2X3Q+IHBvcnRWZWN0b3JGcm9tTGlz
dChOU0FycmF5PE5TTnVtYmVyICo+ICpwb3J0TGlzdCkKK3sKKyAgICBWZWN0b3I8dWludDE2X3Q+
IHBvcnRzOworICAgIHBvcnRzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkocG9ydExpc3QuY291bnQp
OworCisgICAgZm9yIChOU051bWJlciAqcG9ydCA6IHBvcnRMaXN0KQorICAgICAgICBwb3J0cy51
bmNoZWNrZWRBcHBlbmQocG9ydC51bnNpZ25lZFNob3J0VmFsdWUpOworCisgICAgcmV0dXJuIHBv
cnRzOworfQorCitzdGF0aWMgTlNTdHJpbmcgKnBvcnRTdHJpbmdGcm9tVmVjdG9yKGNvbnN0IFZl
Y3Rvcjx1aW50MTZfdD4mIHBvcnRzKQoreworICAgIGlmIChwb3J0cy5pc0VtcHR5KCkpCisgICAg
ICAgIHJldHVybiBuaWw7CisKKyAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBwb3J0cy5zaXplKCkgLSAxOyArK2kpIHsKKyAgICAgICAgYnVpbGRl
ci5hcHBlbmQoU3RyaW5nOjpudW1iZXIocG9ydHNbaV0pKTsKKyAgICAgICAgYnVpbGRlci5hcHBl
bmQoIiwgIik7CisgICAgfQorICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZzo6bnVtYmVyKHBvcnRz
Lmxhc3QoKSkpOworCisgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKK30KKworQ29va2ll
OjpDb29raWUoTlNIVFRQQ29va2llICpjb29raWUpCisgICAgOiBDb29raWUoY29va2llLm5hbWUs
IGNvb2tpZS52YWx1ZSwgY29va2llLmRvbWFpbiwgY29va2llLnBhdGgsIFtjb29raWUuZXhwaXJl
c0RhdGUgdGltZUludGVydmFsU2luY2UxOTcwXSAqIDEwMDAuMCwKKyAgICAgICAgY29va2llLkhU
VFBPbmx5LCBjb29raWUuc2VjdXJlLCBjb29raWUuc2Vzc2lvbk9ubHksIGNvb2tpZS5jb21tZW50
LCBjb29raWUuY29tbWVudFVSTCwgcG9ydFZlY3RvckZyb21MaXN0KGNvb2tpZS5wb3J0TGlzdCkp
Cit7Cit9CisKK0Nvb2tpZTo6b3BlcmF0b3IgTlNIVFRQQ29va2llKigpIGNvbnN0Cit7CisgICAg
TlNNdXRhYmxlRGljdGlvbmFyeSAqcHJvcGVydGllcyA9IFtOU011dGFibGVEaWN0aW9uYXJ5IGRp
Y3Rpb25hcnlXaXRoQ2FwYWNpdHk6MTFdOworCisgICAgaWYgKCFjb21tZW50LmlzTnVsbCgpKQor
ICAgICAgICBbcHJvcGVydGllcyBzZXRPYmplY3Q6KE5TU3RyaW5nICopY29tbWVudCBmb3JLZXk6
TlNIVFRQQ29va2llQ29tbWVudF07CisKKyAgICBpZiAoIWNvbW1lbnRVUkwuaXNOdWxsKCkpCisg
ICAgICAgIFtwcm9wZXJ0aWVzIHNldE9iamVjdDooTlNVUkwgKiljb21tZW50VVJMIGZvcktleTpO
U0hUVFBDb29raWVDb21tZW50VVJMXTsKKworICAgIGlmICghZG9tYWluLmlzTnVsbCgpKQorICAg
ICAgICBbcHJvcGVydGllcyBzZXRPYmplY3Q6KE5TU3RyaW5nICopZG9tYWluIGZvcktleTpOU0hU
VFBDb29raWVEb21haW5dOworCisgICAgaWYgKCFuYW1lLmlzTnVsbCgpKQorICAgICAgICBbcHJv
cGVydGllcyBzZXRPYmplY3Q6KE5TU3RyaW5nICopbmFtZSBmb3JLZXk6TlNIVFRQQ29va2llTmFt
ZV07CisKKyAgICBpZiAoIXBhdGguaXNOdWxsKCkpCisgICAgICAgIFtwcm9wZXJ0aWVzIHNldE9i
amVjdDooTlNTdHJpbmcgKilwYXRoIGZvcktleTpOU0hUVFBDb29raWVQYXRoXTsKKworICAgIGlm
ICghdmFsdWUuaXNOdWxsKCkpCisgICAgICAgIFtwcm9wZXJ0aWVzIHNldE9iamVjdDooTlNTdHJp
bmcgKil2YWx1ZSBmb3JLZXk6TlNIVFRQQ29va2llVmFsdWVdOworCisgICAgTlNEYXRlICpleHBp
cmF0aW9uRGF0ZSA9IFtOU0RhdGUgZGF0ZVdpdGhUaW1lSW50ZXJ2YWxTaW5jZTE5NzA6ZXhwaXJl
cyAvIDEwMDAuMF07CisgICAgYXV0byBtYXhBZ2UgPSBbZXhwaXJhdGlvbkRhdGUgdGltZUludGVy
dmFsU2luY2VOb3ddOworICAgIGlmIChtYXhBZ2UgPiAwKQorICAgICAgICBbcHJvcGVydGllcyBz
ZXRPYmplY3Q6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlZiIsIG1heEFnZV0gZm9yS2V5
Ok5TSFRUUENvb2tpZU1heGltdW1BZ2VdOworCisgICAgYXV0byogcG9ydFN0cmluZyA9IHBvcnRT
dHJpbmdGcm9tVmVjdG9yKHBvcnRzKTsKKyAgICBpZiAocG9ydFN0cmluZykKKyAgICAgICAgW3By
b3BlcnRpZXMgc2V0T2JqZWN0OnBvcnRTdHJpbmcgZm9yS2V5Ok5TSFRUUENvb2tpZVBvcnRdOwor
CisgICAgaWYgKHNlY3VyZSkKKyAgICAgICAgW3Byb3BlcnRpZXMgc2V0T2JqZWN0OkAiWUVTIiBm
b3JLZXk6TlNIVFRQQ29va2llU2VjdXJlXTsKKworICAgIFtwcm9wZXJ0aWVzIHNldE9iamVjdDpz
ZXNzaW9uID8gQCJUUlVFIiA6IEAiRkFMU0UiIGZvcktleTpOU0hUVFBDb29raWVEaXNjYXJkXTsK
KyAgICBbcHJvcGVydGllcyBzZXRPYmplY3Q6QCIxIiBmb3JLZXk6TlNIVFRQQ29va2llVmVyc2lv
bl07CisKKyAgICByZXR1cm4gW05TSFRUUENvb2tpZSBjb29raWVXaXRoUHJvcGVydGllczpwcm9w
ZXJ0aWVzXTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgKaW5kZXggZmM0NWUzMi4uZWUzMTRkYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNl
c3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9y
YWdlU2Vzc2lvbi5oCkBAIC0zNSwxMSArMzUsMTcgQEAKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRy
Lmg+CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKENPQ09BKQorT0JKQ19DTEFTUyBOU0hUVFBDb29r
aWVTdG9yYWdlOworI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTmV0d29y
a2luZ0NvbnRleHQ7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBTb3VwTmV0d29ya1Nl
c3Npb247CitjbGFzcyBVUkw7CitzdHJ1Y3QgQ29va2llOwogCiBjbGFzcyBOZXR3b3JrU3RvcmFn
ZVNlc3Npb24gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE5ldHdvcmtTdG9yYWdlU2Vzc2lv
bik7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtNTIsNiArNTgsOSBAQCBwdWJsaWM6CiAg
ICAgU2Vzc2lvbklEIHNlc3Npb25JRCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Vzc2lvbklEOyB9CiAg
ICAgQ3JlZGVudGlhbFN0b3JhZ2UmIGNyZWRlbnRpYWxTdG9yYWdlKCkgeyByZXR1cm4gbV9jcmVk
ZW50aWFsU3RvcmFnZTsgfQogCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgTlNIVFRQQ29va2ll
U3RvcmFnZSAqbnNDb29raWVTdG9yYWdlKCkgY29uc3Q7CisjZW5kaWYKICNpZiBQTEFURk9STShD
T0NPQSkgfHwgVVNFKENGTkVUV09SSykKICAgICBOZXR3b3JrU3RvcmFnZVNlc3Npb24oU2Vzc2lv
bklELCBSZXRhaW5QdHI8Q0ZVUkxTdG9yYWdlU2Vzc2lvblJlZj4pOwogCkBAIC03MSw2ICs4MCwx
MiBAQCBwdWJsaWM6CiAgICAgTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQoKSBjb25zdDsKICNl
bmRpZgogCisgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPENvb2tpZT4gZ2V0QWxsQ29va2llcygp
OworICAgIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxDb29raWU+IGdldENvb2tpZXMoY29uc3QgVVJM
Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRDb29raWUoY29uc3QgQ29va2llJik7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRDb29raWVzKGNvbnN0IFZlY3RvcjxDb29raWU+JiBj
b29raWVzLCBjb25zdCBVUkwmLCBjb25zdCBVUkwmIG1haW5Eb2N1bWVudFVSTCk7CisgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBkZWxldGVDb29raWUoY29uc3QgQ29va2llJik7CisKIHByaXZhdGU6
CiAgICAgU2Vzc2lvbklEIG1fc2Vzc2lvbklEOwogCkBAIC04OCw2ICsxMDMsMzAgQEAgcHJpdmF0
ZToKIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBjb29raWVTdG9yYWdlUGFydGl0aW9uKGNvbnN0IFJl
c291cmNlUmVxdWVzdCYpOwogU3RyaW5nIGNvb2tpZVN0b3JhZ2VQYXJ0aXRpb24oY29uc3QgVVJM
JiBmaXJzdFBhcnR5Rm9yQ29va2llcywgY29uc3QgVVJMJiByZXNvdXJjZSk7CiAKKyNpZiAhUExB
VEZPUk0oQ09DT0EpCitWZWN0b3I8Q29va2llPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmdldEFs
bENvb2tpZXMoKQoreworICAgIHJldHVybiB7IH07Cit9CisKK1ZlY3RvcjxDb29raWU+IE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbjo6Z2V0Q29va2llcyhjb25zdCBVUkwmKQoreworICAgIHJldHVybiB7
IH07Cit9CisKK3ZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjphZGRDb29raWUoY29uc3QgQ29v
a2llJikKK3sKK30KKwordm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmFkZENvb2tpZXMoY29u
c3QgVmVjdG9yPENvb2tpZT4mLCBjb25zdCBVUkwmLCBjb25zdCBVUkwmKQoreworfQorCit2b2lk
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVsZXRlQ29va2llKGNvbnN0IENvb2tpZSYpCit7Cit9
CisjZW5kaWYKKwogfQogCiAjZW5kaWYgLy8gTmV0d29ya1N0b3JhZ2VTZXNzaW9uX2gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29h
L05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLjNjMTk3YTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tCkBAIC0wLDAg
KzEsODIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUsIEluYy4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgiCisK
KyNpbXBvcnQgIkNvb2tpZS5oIgorI2ltcG9ydCAiVVJMLmgiCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworTlNIVFRQQ29va2llU3RvcmFnZSAqTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpuc0Nvb2tp
ZVN0b3JhZ2UoKSBjb25zdAoreworICAgIGF1dG8gY2ZTdG9yYWdlID0gY29va2llU3RvcmFnZSgp
OworICAgIGlmICghY2ZTdG9yYWdlIHx8IFtOU0hUVFBDb29raWVTdG9yYWdlIHNoYXJlZEhUVFBD
b29raWVTdG9yYWdlXS5fY29va2llU3RvcmFnZSA9PSBjZlN0b3JhZ2UpCisgICAgICAgIHJldHVy
biBbTlNIVFRQQ29va2llU3RvcmFnZSBzaGFyZWRIVFRQQ29va2llU3RvcmFnZV07CisKKyAgICBy
ZXR1cm4gW1tbTlNIVFRQQ29va2llU3RvcmFnZSBhbGxvY10gX2luaXRXaXRoQ0ZIVFRQQ29va2ll
U3RvcmFnZTpjZlN0b3JhZ2UuZ2V0KCldIGF1dG9yZWxlYXNlXTsKK30KKworaW5saW5lIFZlY3Rv
cjxDb29raWU+IG5zQ29va2llc1RvQ29yZUNvb2tpZXMoTlNBcnJheTxOU0hUVFBDb29raWUgKj4g
Km5zQ29va2llcykKK3sKKyAgICBWZWN0b3I8Q29va2llPiBjb3JlQ29va2llczsKKyAgICBjb3Jl
Q29va2llcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG5zQ29va2llcy5jb3VudCk7CisgICAgZm9y
IChOU0hUVFBDb29raWUgKmNvb2tpZSA6IG5zQ29va2llcykKKyAgICAgICAgY29yZUNvb2tpZXMu
dW5jaGVja2VkQXBwZW5kKGNvb2tpZSk7CisKKyAgICByZXR1cm4gY29yZUNvb2tpZXM7Cit9CisK
K1ZlY3RvcjxDb29raWU+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0QWxsQ29va2llcygpCit7
CisgICAgcmV0dXJuIG5zQ29va2llc1RvQ29yZUNvb2tpZXMobnNDb29raWVTdG9yYWdlKCkuY29v
a2llcyk7Cit9CisKK1ZlY3RvcjxDb29raWU+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0Q29v
a2llcyhjb25zdCBVUkwmIHVybCkKK3sKKyAgICByZXR1cm4gbnNDb29raWVzVG9Db3JlQ29va2ll
cyhbbnNDb29raWVTdG9yYWdlKCkgY29va2llc0ZvclVSTDooTlNVUkwqKXVybF0pOworfQorCit2
b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6YWRkQ29va2llKGNvbnN0IENvb2tpZSYgY29va2ll
KQoreworICAgIFtuc0Nvb2tpZVN0b3JhZ2UoKSBzZXRDb29raWU6KE5TSFRUUENvb2tpZSopY29v
a2llXTsKK30KKwordm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmFkZENvb2tpZXMoY29uc3Qg
VmVjdG9yPENvb2tpZT4mIGNvb2tpZXMsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBVUkwmIG1haW5E
b2N1bWVudFVSTCkKK3sKKyAgICBOU011dGFibGVBcnJheTxOU0hUVFBDb29raWUgKj4gKm5zQ29v
a2llcyA9IFtOU011dGFibGVBcnJheSBhcnJheVdpdGhDYXBhY2l0eTpjb29raWVzLnNpemUoKV07
CisgICAgZm9yIChhdXRvJiBjb29raWUgOiBjb29raWVzKQorICAgICAgICBbbnNDb29raWVzIGFk
ZE9iamVjdDooTlNIVFRQQ29va2llKiljb29raWVdOworCisgICAgW25zQ29va2llU3RvcmFnZSgp
IHNldENvb2tpZXM6bnNDb29raWVzIGZvclVSTDooTlNVUkwqKXVybCBtYWluRG9jdW1lbnRVUkw6
KE5TVVJMKiltYWluRG9jdW1lbnRVUkxdOworfQorCit2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lv
bjo6ZGVsZXRlQ29va2llKGNvbnN0IENvb2tpZSYgY29va2llKQoreworICAgIFtuc0Nvb2tpZVN0
b3JhZ2UoKSBkZWxldGVDb29raWU6KE5TSFRUUENvb2tpZSopY29va2llXTsKK30KKworfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQ29va2llSmFyTWFj
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQ29va2llSmFyTWFjLm1t
CmluZGV4IDVlYzk5ODAuLmI3MzQ0NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvbWFjL0Nvb2tpZUphck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL21hYy9Db29raWVKYXJNYWMubW0KQEAgLTMwMywxMSArMzAzLDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgTlNIVFRQQ29va2llU3RvcmFnZSAqY29va2llU3Rv
cmFnZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24pCiB7Ci0gICAgYXV0byBj
b29raWVTdG9yYWdlID0gc2Vzc2lvbi5jb29raWVTdG9yYWdlKCk7Ci0gICAgaWYgKCFjb29raWVT
dG9yYWdlIHx8IFtOU0hUVFBDb29raWVTdG9yYWdlIHNoYXJlZEhUVFBDb29raWVTdG9yYWdlXS5f
Y29va2llU3RvcmFnZSA9PSBjb29raWVTdG9yYWdlKQotICAgICAgICByZXR1cm4gW05TSFRUUENv
b2tpZVN0b3JhZ2Ugc2hhcmVkSFRUUENvb2tpZVN0b3JhZ2VdOwotCi0gICAgcmV0dXJuIFtbW05T
SFRUUENvb2tpZVN0b3JhZ2UgYWxsb2NdIF9pbml0V2l0aENGSFRUUENvb2tpZVN0b3JhZ2U6Y29v
a2llU3RvcmFnZS5nZXQoKV0gYXV0b3JlbGVhc2VdOworICAgIHJldHVybiBzZXNzaW9uLm5zQ29v
a2llU3RvcmFnZSgpOwogfQogCiB2b2lkIGRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZXMoY29uc3Qg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgaG9z
dG5hbWVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQgYi9Tb3Vy
Y2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dAppbmRleCAyM2FmNWU4Li4zZTM2YzNlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9D
TWFrZUxpc3RzLnR4dApAQCAtMzk2LDYgKzM5Niw3IEBAIHNldChXZWJLaXQyX1NPVVJDRVMKIAog
ICAgIFVJUHJvY2Vzcy9BUEkvQVBJRXhwZXJpbWVudGFsRmVhdHVyZS5jcHAKICAgICBVSVByb2Nl
c3MvQVBJL0FQSUZyYW1lSW5mby5jcHAKKyAgICBVSVByb2Nlc3MvQVBJL0FQSUhUVFBDb29raWVT
dG9yYWdlLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvQVBJSGl0VGVzdFJlc3VsdC5jcHAKICAgICBV
SVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb24uY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9BUElOYXZp
Z2F0aW9uRGF0YS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAxYWI5MzEwLi4wNTZjNTQ3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsODUgQEAKKzIwMTYtMDYtMTcgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBw
bGUuY29tPgorCisgICAgICAgIFNQSSBmb3I6IFdLV2ViVmlldyBwcm92aWRlcyBubyBhY2Nlc3Mg
dG8gY29va2llcworICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTc0ODYyNTA+IGFuZCBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4OTAxCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBhZGRzIGEgV0tIVFRQQ29va2ll
U3RvcmFnZSBBUEkgb2JqZWN0LCBvd25lZCBieSBhIFByb2Nlc3NQb29sLCB0aGF0IHlvdSBjYW4g
YWNjZXNzCisgICAgICAgIGZyb20gYW55IFdLV2ViVmlldy4KKyAgICAgICAgCisgICAgICAgIEl0
IHByb3ZpZGVzIHRoZSBtb3N0IGNvbW1vbiBhbmQgcmVxdWVzdGVkIGZ1bmN0aW9uYWxpdHkgb2Yg
TlNIVFRQQ29va2llU3RvcmFnZSwgbWFyc2hhbGluZworICAgICAgICByZXF1ZXN0cyBvdmVyIHRv
IHRoZSBOZXR3b3JraW5nIHByb2Nlc3MsIGFuZCB3aXRoIGFzeW5jLWNvbXBsZXRpb24taGFuZGxl
ciBiYXNlZCBnZXR0ZXJzCisgICAgICAgIGluc3RlYWQgb2Ygc3luYy1pL28gYmFzZWQgZ2V0dGVy
cy4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFdlYktpdDIueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKworICAgICAgICAqIFNoYXJlZC9BUEkvQVBJT2JqZWN0Lmg6
CisgICAgICAgICogU2hhcmVkL0NvY29hL0FQSU9iamVjdC5tbToKKyAgICAgICAgKEFQSTo6T2Jq
ZWN0OjpuZXdPYmplY3QpOgorICAgICAgICAKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmNwcDoKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxDb29raWU+OjplbmNv
ZGUpOiBEZWxldGVkLiAoTW92ZWQgdG8gV2ViQ29yZSkKKyAgICAgICAgKElQQzo6QXJndW1lbnRD
b2RlcjxDb29raWU+OjpkZWNvZGUpOiBEZWxldGVkLiAoTW92ZWQgdG8gV2ViQ29yZSkKKyAgICAg
ICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmg6CisgICAgICAgIAorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3JhZ2UuY3BwOiBBZGRlZC4KKyAgICAgICAg
KEFQSTo6SFRUUENvb2tpZVN0b3JhZ2U6OkhUVFBDb29raWVTdG9yYWdlKToKKyAgICAgICAgKEFQ
STo6SFRUUENvb2tpZVN0b3JhZ2U6On5IVFRQQ29va2llU3RvcmFnZSk6CisgICAgICAgIChBUEk6
OkhUVFBDb29raWVTdG9yYWdlOjpjb29raWVzKToKKyAgICAgICAgKEFQSTo6SFRUUENvb2tpZVN0
b3JhZ2U6OnNldENvb2tpZSk6CisgICAgICAgIChBUEk6OkhUVFBDb29raWVTdG9yYWdlOjpzZXRD
b29raWVzKToKKyAgICAgICAgKEFQSTo6SFRUUENvb2tpZVN0b3JhZ2U6OmRlbGV0ZUNvb2tpZSk6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElIVFRQQ29va2llU3RvcmFnZS5oOiBDb3BpZWQg
ZnJvbSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5t
ZXNzYWdlcy5pbi4KKyAgICAgICAgCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmlldyBfaHR0cENvb2tpZVN0b3JhZ2VdKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaDoKKyAgICAgICAg
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tIVFRQQ29va2llU3RvcmFnZS5oOiBD
b3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFu
YWdlci5tZXNzYWdlcy5pbi4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0hUVFBD
b29raWVTdG9yYWdlLm1tOiBBZGRlZC4KKyAgICAgICAgKGNvcmVDb29raWVzVG9OU0Nvb2tpZXMp
OgorICAgICAgICAoLVtfV0tIVFRQQ29va2llU3RvcmFnZSBkZWFsbG9jXSk6CisgICAgICAgICgt
W19XS0hUVFBDb29raWVTdG9yYWdlIGNvb2tpZXNXaXRoQ29tcGxldGlvbkhhbmRsZXI6XSk6Cisg
ICAgICAgICgtW19XS0hUVFBDb29raWVTdG9yYWdlIGNvb2tpZXNGb3JVUkw6Y29tcGxldGlvbkhh
bmRsZXI6XSk6CisgICAgICAgICgtW19XS0hUVFBDb29raWVTdG9yYWdlIHNldENvb2tpZTpdKToK
KyAgICAgICAgKC1bX1dLSFRUUENvb2tpZVN0b3JhZ2UgZGVsZXRlQ29va2llOl0pOgorICAgICAg
ICAoLVtfV0tIVFRQQ29va2llU3RvcmFnZSBzZXRDb29raWVzOmZvclVSTDptYWluRG9jdW1lbnRV
Ukw6XSk6CisgICAgICAgICgtW19XS0hUVFBDb29raWVTdG9yYWdlIF9hcGlPYmplY3RdKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0hUVFBDb29raWVTdG9yYWdlSW50ZXJuYWwu
aDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tp
ZU1hbmFnZXIubWVzc2FnZXMuaW4uCisgICAgICAgIChXZWJLaXQ6OndyYXBwZXIpOgorICAgICAg
ICAKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjphZGRTaW5nbGVDb29r
aWUpOgorICAgICAgICAKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlclByb3h5OjphZGRDb29raWVG
b3JBdXRvbWF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlclByb3h5Ojpn
ZXRBbGxDb29raWVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlclByb3h5Ojpn
ZXRDb29raWVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlclByb3h5OjpkaWRH
ZXRDb29raWVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlclByb3h5OjpkZWxl
dGVDb29raWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OnNldENv
b2tpZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6c2V0Q29va2ll
cyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6YWRkQ29va2llKTog
RGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5Lmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbjoKKyAg
ICAgICAgCisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6bV9jb29raWVTdG9yYWdlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vz
c1Bvb2wuaDoKKyAgICAgICAgCisgICAgICAgICogV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tp
ZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyOjphZGRDb29r
aWVGb3JBdXRvbWF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlcjo6Z2V0
QWxsQ29va2llcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXI6OmdldENvb2tp
ZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyOjpkZWxldGVDb29raWUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyOjpzZXRDb29raWUpOgorICAgICAgICAo
V2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyOjpzZXRDb29raWVzKToKKyAgICAgICAgKFdlYktpdDo6
V2ViQ29va2llTWFuYWdlcjo6YWRkQ29va2llKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvQ29v
a2llcy9XZWJDb29raWVNYW5hZ2VyLm1lc3NhZ2VzLmluOgorCiAyMDE2LTA2LTEzICBEYW4gQmVy
bnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CiAKICAgICAgICAgW01hY10gV2ViIENvbnRlbnQgc2Vy
dmljZSB3aXRoIGEgcmVzdHJpY3RlZCBlbnRpdGxlbWVudCBtYXkgbG9hZCBhcmJpdHJhcnkgZHls
aWJzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0FQSU9iamVjdC5oIGIv
U291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9BUElPYmplY3QuaAppbmRleCBkZGVmM2MzLi45MmJh
OWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0FQSU9iamVjdC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvQVBJT2JqZWN0LmgKQEAgLTExNSw2ICsxMTUs
NyBAQCBwdWJsaWM6CiAgICAgICAgIEZ1bGxTY3JlZW5NYW5hZ2VyLAogICAgICAgICBHZW9sb2Nh
dGlvbk1hbmFnZXIsCiAgICAgICAgIEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QsCisgICAg
ICAgIEhUVFBDb29raWVTdG9yYWdlLAogICAgICAgICBIaXRUZXN0UmVzdWx0LAogICAgICAgICBH
ZW9sb2NhdGlvblBvc2l0aW9uLAogICAgICAgICBHcmFtbWFyRGV0YWlsLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvU2hhcmVkL0NvY29hL0FQSU9iamVjdC5tbSBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9Db2NvYS9BUElPYmplY3QubW0KaW5kZXggNTFiMTlhYS4uODE0OWU2ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0NvY29hL0FQSU9iamVjdC5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvQ29jb2EvQVBJT2JqZWN0Lm1tCkBAIC02Niw2ICs2Niw3IEBACiAj
aW1wb3J0ICJfV0tEb3dubG9hZEludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tFeHBlcmltZW50YWxG
ZWF0dXJlSW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS0ZyYW1lSGFuZGxlSW50ZXJuYWwuaCIKKyNp
bXBvcnQgIl9XS0hUVFBDb29raWVTdG9yYWdlSW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS0hpdFRl
c3RSZXN1bHRJbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
SW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS1VzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmVJbnRlcm5h
bC5oIgpAQCAtMTY3LDYgKzE2OCwxMCBAQCB2b2lkKiBPYmplY3Q6Om5ld09iamVjdChzaXplX3Qg
c2l6ZSwgVHlwZSB0eXBlKQogICAgICAgICB3cmFwcGVyID0gW1dLRnJhbWVJbmZvIGFsbG9jXTsK
ICAgICAgICAgYnJlYWs7CiAKKyAgICBjYXNlIFR5cGU6OkhUVFBDb29raWVTdG9yYWdlOgorICAg
ICAgICB3cmFwcGVyID0gW19XS0hUVFBDb29raWVTdG9yYWdlIGFsbG9jXTsKKyAgICAgICAgYnJl
YWs7CisKICAgICBjYXNlIFR5cGU6OkhpdFRlc3RSZXN1bHQ6CiAgICAgICAgIHdyYXBwZXIgPSBb
X1dLSGl0VGVzdFJlc3VsdCBhbGxvY107CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAppbmRleCA5MjQ2ZWU3Li5mZmM5
OTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmNwcApAQCAtMzEsNyArMzEsNiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Jsb2JQYXJ0Lmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9DZXJ0aWZpY2F0ZUluZm8uaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0Nvb2tpZS5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvQ3JlZGVudGlhbC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ3Vyc29yLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9EYXRhYmFzZURldGFpbHMuaD4KQEAgLTExNDIsNDEgKzExNDEs
NiBAQCBib29sIEFyZ3VtZW50Q29kZXI8Q29tcG9zaXRpb25VbmRlcmxpbmU+OjpkZWNvZGUoQXJn
dW1lbnREZWNvZGVyJiBkZWNvZGVyLCBDb21wbwogICAgIHJldHVybiB0cnVlOwogfQogCi0KLXZv
aWQgQXJndW1lbnRDb2RlcjxDb29raWU+OjplbmNvZGUoQXJndW1lbnRFbmNvZGVyJiBlbmNvZGVy
LCBjb25zdCBDb29raWUmIGNvb2tpZSkKLXsKLSAgICBlbmNvZGVyIDw8IGNvb2tpZS5uYW1lOwot
ICAgIGVuY29kZXIgPDwgY29va2llLnZhbHVlOwotICAgIGVuY29kZXIgPDwgY29va2llLmRvbWFp
bjsKLSAgICBlbmNvZGVyIDw8IGNvb2tpZS5wYXRoOwotICAgIGVuY29kZXIgPDwgY29va2llLmV4
cGlyZXM7Ci0gICAgZW5jb2RlciA8PCBjb29raWUuaHR0cE9ubHk7Ci0gICAgZW5jb2RlciA8PCBj
b29raWUuc2VjdXJlOwotICAgIGVuY29kZXIgPDwgY29va2llLnNlc3Npb247Ci19Ci0KLWJvb2wg
QXJndW1lbnRDb2RlcjxDb29raWU+OjpkZWNvZGUoQXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBD
b29raWUmIGNvb2tpZSkKLXsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGNvb2tpZS5uYW1lKSkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUoY29va2llLnZh
bHVlKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUoY29v
a2llLmRvbWFpbikpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKGNvb2tpZS5wYXRoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUoY29va2llLmV4cGlyZXMpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYg
KCFkZWNvZGVyLmRlY29kZShjb29raWUuaHR0cE9ubHkpKQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShjb29raWUuc2VjdXJlKSkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUoY29va2llLnNlc3Npb24pKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQogdm9pZCBBcmd1bWVudENv
ZGVyPERhdGFiYXNlRGV0YWlscz46OmVuY29kZShBcmd1bWVudEVuY29kZXImIGVuY29kZXIsIGNv
bnN0IERhdGFiYXNlRGV0YWlscyYgZGV0YWlscykKIHsKICAgICBlbmNvZGVyIDw8IGRldGFpbHMu
bmFtZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVu
dENvZGVycy5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5o
CmluZGV4IDQ3YWIxOTMuLmIwZDdmZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzLmgKQEAgLTY5LDcgKzY5LDYgQEAgY2xhc3MgVXNlclN0eWxlU2hl
ZXQ7CiBjbGFzcyBVc2VyU2NyaXB0OwogY2xhc3MgVVJMOwogc3RydWN0IENvbXBvc2l0aW9uVW5k
ZXJsaW5lOwotc3RydWN0IENvb2tpZTsKIHN0cnVjdCBEaWN0YXRpb25BbHRlcm5hdGl2ZTsKIHN0
cnVjdCBEaWN0aW9uYXJ5UG9wdXBJbmZvOwogc3RydWN0IEV2ZW50VHJhY2tpbmdSZWdpb25zOwpA
QCAtMzM4LDExICszMzcsNiBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNv
cmU6OkNvbXBvc2l0aW9uVW5kZXJsaW5lPiB7CiAgICAgc3RhdGljIGJvb2wgZGVjb2RlKEFyZ3Vt
ZW50RGVjb2RlciYsIFdlYkNvcmU6OkNvbXBvc2l0aW9uVW5kZXJsaW5lJik7CiB9OwogCi10ZW1w
bGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkNvb2tpZT4gewotICAgIHN0YXRp
YyB2b2lkIGVuY29kZShBcmd1bWVudEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpDb29raWUmKTsK
LSAgICBzdGF0aWMgYm9vbCBkZWNvZGUoQXJndW1lbnREZWNvZGVyJiwgV2ViQ29yZTo6Q29va2ll
Jik7Ci19OwotCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkRhdGFi
YXNlRGV0YWlscz4gewogICAgIHN0YXRpYyB2b2lkIGVuY29kZShBcmd1bWVudEVuY29kZXImLCBj
b25zdCBXZWJDb3JlOjpEYXRhYmFzZURldGFpbHMmKTsKICAgICBzdGF0aWMgYm9vbCBkZWNvZGUo
QXJndW1lbnREZWNvZGVyJiwgV2ViQ29yZTo6RGF0YWJhc2VEZXRhaWxzJik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSUhUVFBDb29raWVTdG9yYWdlLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3JhZ2UuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJhMGU0ZjYKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSUhUVFBDb29raWVTdG9yYWdlLmNw
cApAQCAtMCwwICsxLDY4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIkFQSUhUVFBDb29raWVTdG9yYWdlLmgiCisKKyNpbmNsdWRlICJXZWJDb29raWVNYW5h
Z2VyUHJveHkuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgorCituYW1lc3BhY2UgQVBJ
IHsKKworSFRUUENvb2tpZVN0b3JhZ2U6OkhUVFBDb29raWVTdG9yYWdlKFdlYktpdDo6V2ViUHJv
Y2Vzc1Bvb2wmIHByb2Nlc3NQb29sKQorICAgIDogbV9wcm9jZXNzUG9vbChwcm9jZXNzUG9vbCkK
K3sKK30KKworSFRUUENvb2tpZVN0b3JhZ2U6On5IVFRQQ29va2llU3RvcmFnZSgpCit7Cit9CisK
K3ZvaWQgSFRUUENvb2tpZVN0b3JhZ2U6OmNvb2tpZXMoTm9uY29weWFibGVGdW5jdGlvbjx2b2lk
IChjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
eworICAgIG1fcHJvY2Vzc1Bvb2wuc3VwcGxlbWVudDxXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQ
cm94eT4oKS0+Z2V0QWxsQ29va2llcyhXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisK
K3ZvaWQgSFRUUENvb2tpZVN0b3JhZ2U6OmNvb2tpZXMoY29uc3QgV2ViQ29yZTo6VVJMJiB1cmws
IE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4m
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBtX3Byb2Nlc3NQb29sLnN1cHBsZW1lbnQ8
V2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk+KCktPmdldENvb2tpZXModXJsLCBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKK3ZvaWQgSFRUUENvb2tpZVN0b3JhZ2U6OnNldENv
b2tpZShjb25zdCBXZWJDb3JlOjpDb29raWUmIGNvb2tpZSkKK3sKKyAgICBtX3Byb2Nlc3NQb29s
LnN1cHBsZW1lbnQ8V2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk+KCktPnNldENvb2tpZShj
b29raWUpOworfQorCit2b2lkIEhUVFBDb29raWVTdG9yYWdlOjpzZXRDb29raWVzKGNvbnN0IFZl
Y3RvcjxXZWJDb3JlOjpDb29raWU+JiBjb29raWVzLCBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCwg
Y29uc3QgV2ViQ29yZTo6VVJMJiBtYWluRG9jdW1lbnRVUkwpCit7CisgICAgbV9wcm9jZXNzUG9v
bC5zdXBwbGVtZW50PFdlYktpdDo6V2ViQ29va2llTWFuYWdlclByb3h5PigpLT5zZXRDb29raWVz
KGNvb2tpZXMsIHVybCwgbWFpbkRvY3VtZW50VVJMKTsKK30KKwordm9pZCBIVFRQQ29va2llU3Rv
cmFnZTo6ZGVsZXRlQ29va2llKGNvbnN0IFdlYkNvcmU6OkNvb2tpZSYgY29va2llKQoreworICAg
IG1fcHJvY2Vzc1Bvb2wuc3VwcGxlbWVudDxXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eT4o
KS0+ZGVsZXRlQ29va2llKGNvb2tpZSk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3JhZ2UuaCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3JhZ2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi4zMTgwZTk3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9BUElIVFRQQ29va2llU3RvcmFnZS5oCkBAIC0wLDAgKzEsNjUgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkFQSU9iamVjdC5oIgorI2lu
Y2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZUZ1bmN0aW9uLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBVUkw7CitzdHJ1Y3QgQ29va2llOworfQor
CituYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIFdlYlByb2Nlc3NQb29sOworfTsKKworbmFtZXNw
YWNlIEFQSSB7CisKK2NsYXNzIEhUVFBDb29raWVTdG9yYWdlIGZpbmFsIDogcHVibGljIE9iamVj
dEltcGw8T2JqZWN0OjpUeXBlOjpIVFRQQ29va2llU3RvcmFnZT4geworcHVibGljOgorICAgIHN0
YXRpYyBSZWY8SFRUUENvb2tpZVN0b3JhZ2U+IGNyZWF0ZShXZWJLaXQ6OldlYlByb2Nlc3NQb29s
JiBwcm9jZXNzUG9vbCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEhUVFBD
b29raWVTdG9yYWdlKHByb2Nlc3NQb29sKSk7CisgICAgfQorCisgICAgdmlydHVhbCB+SFRUUENv
b2tpZVN0b3JhZ2UoKTsKKworICAgIHZvaWQgY29va2llcyhOb25jb3B5YWJsZUZ1bmN0aW9uPHZv
aWQgKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jik+JiYgY29tcGxldGlvbkhhbmRsZXIp
OworICAgIHZvaWQgY29va2llcyhjb25zdCBXZWJDb3JlOjpVUkwmLCBOb25jb3B5YWJsZUZ1bmN0
aW9uPHZvaWQgKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jik+JiYgY29tcGxldGlvbkhh
bmRsZXIpOworCisgICAgdm9pZCBzZXRDb29raWUoY29uc3QgV2ViQ29yZTo6Q29va2llJik7Cisg
ICAgdm9pZCBzZXRDb29raWVzKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiwgY29uc3Qg
V2ViQ29yZTo6VVJMJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBtYWluRG9jdW1lbnRVUkwpOworICAg
IHZvaWQgZGVsZXRlQ29va2llKGNvbnN0IFdlYkNvcmU6OkNvb2tpZSYpOworCitwcml2YXRlOgor
ICAgIEhUVFBDb29raWVTdG9yYWdlKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmKTsKKworICAgIFdl
YktpdDo6V2ViUHJvY2Vzc1Bvb2wmIG1fcHJvY2Vzc1Bvb2w7Cit9OworCit9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IGUxNzU0ZjQu
LjYyYWQ0MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3Lm1tCkBAIC03Nyw2ICs3Nyw3IEBACiAjaW1wb3J0ICJfV0tGaW5kRGVsZWdhdGUuaCIK
ICNpbXBvcnQgIl9XS0Zvcm1EZWxlZ2F0ZS5oIgogI2ltcG9ydCAiX1dLRnJhbWVIYW5kbGVJbnRl
cm5hbC5oIgorI2ltcG9ydCAiX1dLSFRUUENvb2tpZVN0b3JhZ2VJbnRlcm5hbC5oIgogI2ltcG9y
dCAiX1dLSGl0VGVzdFJlc3VsdEludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tJbnB1dERlbGVnYXRl
LmgiCiAjaW1wb3J0ICJfV0tSZW1vdGVPYmplY3RSZWdpc3RyeUludGVybmFsLmgiCkBAIC0zODkw
LDYgKzM4OTEsMTIgQEAgLSAoQk9PTClfd2ViUHJvY2Vzc0lzUmVzcG9uc2l2ZQogICAgIHJldHVy
biBfcGFnZS0+cHJvY2VzcygpLnJlc3BvbnNpdmVuZXNzVGltZXIoKS5pc1Jlc3BvbnNpdmUoKTsK
IH0KIAorLSAoX1dLSFRUUENvb2tpZVN0b3JhZ2UgKilfaHR0cENvb2tpZVN0b3JhZ2UKK3sKKyAg
ICBXS1Byb2Nlc3NQb29sICp3a1Byb2Nlc3NQb29sID0gW19jb25maWd1cmF0aW9uIHByb2Nlc3NQ
b29sXTsKKyAgICByZXR1cm4gV2ViS2l0Ojp3cmFwcGVyKHdrUHJvY2Vzc1Bvb2wtPl9wcm9jZXNz
UG9vbC0+Y29va2llU3RvcmFnZSgpKTsKK30KKwogI3ByYWdtYSBtYXJrIGlPUy1zcGVjaWZpYyBt
ZXRob2RzCiAKICNpZiBQTEFURk9STShJT1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCmluZGV4IGQ5NDBhMTEuLjg1N2Iw
ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3UHJpdmF0ZS5oCkBAIC01MCw2ICs1MCw3IEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVn
ZXIsIF9XS0ltbWVkaWF0ZUFjdGlvblR5cGUpIHsKIAogQGNsYXNzIFdLQnJvd3NpbmdDb250ZXh0
SGFuZGxlOwogQGNsYXNzIF9XS0ZyYW1lSGFuZGxlOworQGNsYXNzIF9XS0hUVFBDb29raWVTdG9y
YWdlOwogQGNsYXNzIF9XS0hpdFRlc3RSZXN1bHQ7CiBAY2xhc3MgX1dLUmVtb3RlT2JqZWN0UmVn
aXN0cnk7CiBAY2xhc3MgX1dLU2Vzc2lvblN0YXRlOwpAQCAtMjM3LDYgKzIzOCw4IEBAIHR5cGVk
ZWYgTlNfRU5VTShOU0ludGVnZXIsIF9XS0ltbWVkaWF0ZUFjdGlvblR5cGUpIHsKIAogQHByb3Bl
cnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBCT09MIF93ZWJQcm9jZXNzSXNSZXNwb25zaXZlIFdL
X0FWQUlMQUJMRShXS19NQUNfVEJBLCBXS19JT1NfVEJBKTsKIAorQHByb3BlcnR5IChub25hdG9t
aWMsIHJlYWRvbmx5KSBfV0tIVFRQQ29va2llU3RvcmFnZSAqX2h0dHBDb29raWVTdG9yYWdlIFdL
X0FWQUlMQUJMRShXS19NQUNfVEJBLCBXS19JT1NfVEJBKTsKKwogQGVuZAogCiAjaWYgIVRBUkdF
VF9PU19JUEhPTkUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLSFRUUENvb2tpZVN0b3JhZ2UuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Q29jb2EvX1dLSFRUUENvb2tpZVN0b3JhZ2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi41MjljMjBkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tIVFRQQ29va2llU3RvcmFnZS5oCkBAIC0wLDAgKzEsNDUgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW1wb3J0IDxXZWJLaXQvV0tGb3VuZGF0aW9uLmg+CisKKyNpZiBXS19BUElf
RU5BQkxFRAorCisjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KKworV0tfQ0xBU1Nf
QVZBSUxBQkxFKFdLX01BQ19UQkEsIFdLX0lPU19UQkEpCitAaW50ZXJmYWNlIF9XS0hUVFBDb29r
aWVTdG9yYWdlIDogTlNPYmplY3QKKworLSAodm9pZCljb29raWVzV2l0aENvbXBsZXRpb25IYW5k
bGVyOihub25udWxsIHZvaWQgKF4pKE5TQXJyYXk8TlNIVFRQQ29va2llICo+ICpfTnVsbGFibGUp
KWNvbXBsZXRpb25IYW5kbGVyOworLSAodm9pZCljb29raWVzRm9yVVJMOihub25udWxsIE5TVVJM
ICopdXJsIGNvbXBsZXRpb25IYW5kbGVyOihub25udWxsIHZvaWQgKF4pKE5TQXJyYXk8TlNIVFRQ
Q29va2llICo+ICpfTnVsbGFibGUpKWNvbXBsZXRpb25IYW5kbGVyOworCistICh2b2lkKXNldENv
b2tpZToobm9ubnVsbCBOU0hUVFBDb29raWUgKiljb29raWU7CistICh2b2lkKWRlbGV0ZUNvb2tp
ZToobm9ubnVsbCBOU0hUVFBDb29raWUgKiljb29raWU7CisKKy0gKHZvaWQpc2V0Q29va2llczoo
bm9ubnVsbCBOU0FycmF5PE5TSFRUUENvb2tpZSAqPiAqKWNvb2tpZXMgZm9yVVJMOihub25udWxs
IE5TVVJMICopVVJMIG1haW5Eb2N1bWVudFVSTDoobm9ubnVsbCBOU1VSTCAqKW1haW5Eb2N1bWVu
dFVSTDsKKworQGVuZAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLSFRUUENvb2tpZVN0b3JhZ2UubW0gYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0NvY29hL19XS0hUVFBDb29raWVTdG9yYWdlLm1tCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE0NmQyNjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0hUVFBDb29raWVTdG9yYWdlLm1tCkBAIC0w
LDAgKzEsOTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIl9X
S0hUVFBDb29raWVTdG9yYWdlSW50ZXJuYWwuaCIKKworI2lmIFdLX0FQSV9FTkFCTEVECisKKyNp
bmNsdWRlIDxXZWJDb3JlL0Nvb2tpZS5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKwor
c3RhdGljIE5TQXJyYXk8TlNIVFRQQ29va2llICo+ICpjb3JlQ29va2llc1RvTlNDb29raWVzKGNv
bnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiBjb3JlQ29va2llcykKK3sKKyAgICBOU011dGFi
bGVBcnJheTxOU0hUVFBDb29raWUgKj4gKiBuc0Nvb2tpZXMgPSBbTlNNdXRhYmxlQXJyYXkgYXJy
YXlXaXRoQ2FwYWNpdHk6Y29yZUNvb2tpZXMuc2l6ZSgpXTsKKworICAgIGZvciAoYXV0byYgY29v
a2llIDogY29yZUNvb2tpZXMpCisgICAgICAgIFtuc0Nvb2tpZXMgYWRkT2JqZWN0OihOU0hUVFBD
b29raWUqKWNvb2tpZV07CisKKyAgICByZXR1cm4gbnNDb29raWVzOworfQorCitAaW1wbGVtZW50
YXRpb24gX1dLSFRUUENvb2tpZVN0b3JhZ2UKKworLSAodm9pZClkZWFsbG9jCit7CisgICAgX2Nv
b2tpZVN0b3JhZ2UtPkFQSTo6SFRUUENvb2tpZVN0b3JhZ2U6On5IVFRQQ29va2llU3RvcmFnZSgp
OworCisgICAgW3N1cGVyIGRlYWxsb2NdOworfQorCistICh2b2lkKWNvb2tpZXNXaXRoQ29tcGxl
dGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TQXJyYXk8TlNIVFRQQ29va2llICo+ICopKWNvbXBsZXRp
b25IYW5kbGVyCit7CisgICAgX2Nvb2tpZVN0b3JhZ2UtPmNvb2tpZXMoW2hhbmRsZXIgPSBhZG9w
dE5TKFtjb21wbGV0aW9uSGFuZGxlciBjb3B5XSldKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29r
aWU+JiBjb29raWVzKSB7CisgICAgICAgIGF1dG8gcmF3SGFuZGxlciA9ICh2b2lkICheKShOU0Fy
cmF5PE5TSFRUUENvb2tpZSAqPiAqKSloYW5kbGVyLmdldCgpOworICAgICAgICByYXdIYW5kbGVy
KGNvcmVDb29raWVzVG9OU0Nvb2tpZXMoY29va2llcykpOworICAgIH0pOworfQorCistICh2b2lk
KWNvb2tpZXNGb3JVUkw6KE5TVVJMICopdXJsIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShO
U0FycmF5PE5TSFRUUENvb2tpZSAqPiAqKSljb21wbGV0aW9uSGFuZGxlcgoreworICAgIF9jb29r
aWVTdG9yYWdlLT5jb29raWVzKHVybCwgW2hhbmRsZXIgPSBhZG9wdE5TKFtjb21wbGV0aW9uSGFu
ZGxlciBjb3B5XSldKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiBjb29raWVzKSB7Cisg
ICAgICAgIGF1dG8gcmF3SGFuZGxlciA9ICh2b2lkICheKShOU0FycmF5PE5TSFRUUENvb2tpZSAq
PiAqKSloYW5kbGVyLmdldCgpOworICAgICAgICByYXdIYW5kbGVyKGNvcmVDb29raWVzVG9OU0Nv
b2tpZXMoY29va2llcykpOworICAgIH0pOworfQorCistICh2b2lkKXNldENvb2tpZTooTlNIVFRQ
Q29va2llICopY29va2llCit7CisgICAgX2Nvb2tpZVN0b3JhZ2UtPnNldENvb2tpZShjb29raWUp
OworfQorCistICh2b2lkKWRlbGV0ZUNvb2tpZTooTlNIVFRQQ29va2llICopY29va2llCit7Cisg
ICAgX2Nvb2tpZVN0b3JhZ2UtPmRlbGV0ZUNvb2tpZShjb29raWUpOworfQorCistICh2b2lkKXNl
dENvb2tpZXM6KE5TQXJyYXk8TlNIVFRQQ29va2llICo+ICopY29va2llcyBmb3JVUkw6KE5TVVJM
ICopVVJMIG1haW5Eb2N1bWVudFVSTDooTlNVUkwgKiltYWluRG9jdW1lbnRVUkwKK3sKKyAgICBW
ZWN0b3I8V2ViQ29yZTo6Q29va2llPiBjb3JlQ29va2llczsKKyAgICBjb3JlQ29va2llcy5yZXNl
cnZlSW5pdGlhbENhcGFjaXR5KGNvb2tpZXMuY291bnQpOworICAgIGZvciAoTlNIVFRQQ29va2ll
ICpjb29raWUgOiBjb29raWVzKQorICAgICAgICBjb3JlQ29va2llcy51bmNoZWNrZWRBcHBlbmQo
Y29va2llKTsKKworICAgIF9jb29raWVTdG9yYWdlLT5zZXRDb29raWVzKGNvcmVDb29raWVzLCBV
UkwsIG1haW5Eb2N1bWVudFVSTCk7Cit9CisKKyNwcmFnbWEgbWFyayBXS09iamVjdCBwcm90b2Nv
bCBpbXBsZW1lbnRhdGlvbgorCistIChBUEk6Ok9iamVjdCYpX2FwaU9iamVjdAoreworICAgIHJl
dHVybiAqX2Nvb2tpZVN0b3JhZ2U7Cit9CisKK0BlbmQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0hUVFBDb29raWVTdG9yYWdlSW50
ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSFRUUENvb2tp
ZVN0b3JhZ2VJbnRlcm5hbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE0
OWJiNjYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS0hUVFBDb29raWVTdG9yYWdlSW50ZXJuYWwuaApAQCAtMCwwICsxLDQ5IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2ltcG9ydCAiX1dLSFRUUENvb2tpZVN0b3JhZ2UuaCIKKworI2lmIFdLX0FQSV9F
TkFCTEVECisKKyNpbXBvcnQgIkFQSUhUVFBDb29raWVTdG9yYWdlLmgiCisjaW1wb3J0ICJXS09i
amVjdC5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworaW5saW5lIF9XS0hUVFBDb29raWVTdG9y
YWdlICp3cmFwcGVyKEFQSTo6SFRUUENvb2tpZVN0b3JhZ2UmIGNvb2tpZVN0b3JhZ2UpCit7Cisg
ICAgQVNTRVJUKFtjb29raWVTdG9yYWdlLndyYXBwZXIoKSBpc0tpbmRPZkNsYXNzOltfV0tIVFRQ
Q29va2llU3RvcmFnZSBjbGFzc11dKTsKKyAgICByZXR1cm4gKF9XS0hUVFBDb29raWVTdG9yYWdl
ICopY29va2llU3RvcmFnZS53cmFwcGVyKCk7Cit9CisKK30KKworQGludGVyZmFjZSBfV0tIVFRQ
Q29va2llU3RvcmFnZSAoKSA8V0tPYmplY3Q+IHsKK0BwYWNrYWdlCisgICAgQVBJOjpPYmplY3RT
dG9yYWdlPEFQSTo6SFRUUENvb2tpZVN0b3JhZ2U+IF9jb29raWVTdG9yYWdlOworfQorQGVuZAor
CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRvbWF0aW9u
L1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRv
bWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcAppbmRleCBkZDY5MGNkLi42MWJiYjc0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0
aW9uU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1dG9tYXRpb24v
V2ViQXV0b21hdGlvblNlc3Npb24uY3BwCkBAIC04MzYsNyArODM2LDcgQEAgdm9pZCBXZWJBdXRv
bWF0aW9uU2Vzc2lvbjo6YWRkU2luZ2xlQ29va2llKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywg
Y29uc3QgU3RyaW4KICAgICAgICAgRkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfQU5EX0RFVEFJ
TFMoTWlzc2luZ1BhcmFtZXRlciwgIlRoZSBwYXJhbWV0ZXIgJ2h0dHBPbmx5JyB3YXMgbm90IGZv
dW5kLiIpOwogCiAgICAgV2ViQ29va2llTWFuYWdlclByb3h5KiBjb29raWVNYW5hZ2VyID0gbV9w
cm9jZXNzUG9vbC0+c3VwcGxlbWVudDxXZWJDb29raWVNYW5hZ2VyUHJveHk+KCk7Ci0gICAgY29v
a2llTWFuYWdlci0+YWRkQ29va2llKGNvb2tpZSwgYWN0aXZlVVJMLmhvc3QoKSk7CisgICAgY29v
a2llTWFuYWdlci0+YWRkQ29va2llRm9yQXV0b21hdGlvbihjb29raWUsIGFjdGl2ZVVSTC5ob3N0
KCkpOwogCiAgICAgY2FsbGJhY2stPnNlbmRTdWNjZXNzKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkuY3BwCmluZGV4IDJjMzBkNjQu
LjcyMjJjNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVN
YW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVN
YW5hZ2VyUHJveHkuY3BwCkBAIC0xMjgsOSArMTI4LDQ2IEBAIHZvaWQgV2ViQ29va2llTWFuYWdl
clByb3h5OjpkZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZShzdGQ6OmNocm9ubzo6c3lzdGVt
X2NsCiAgICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvTmV0d29ya2luZ1Byb2Nlc3NSZWxhdW5jaGlu
Z0lmTmVjZXNzYXJ5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpEZWxldGVBbGxDb29raWVz
TW9kaWZpZWRTaW5jZSh0aW1lKSk7CiB9CiAKLXZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5Ojph
ZGRDb29raWUoY29uc3QgV2ViQ29yZTo6Q29va2llJiBjb29raWUsIGNvbnN0IFN0cmluZyYgaG9z
dG5hbWUpCit2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6YWRkQ29va2llRm9yQXV0b21hdGlv
bihjb25zdCBXZWJDb3JlOjpDb29raWUmIGNvb2tpZSwgY29uc3QgU3RyaW5nJiBob3N0bmFtZSkK
IHsKLSAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9OZXR3b3JraW5nUHJvY2Vzc1JlbGF1bmNoaW5n
SWZOZWNlc3NhcnkoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OkFkZENvb2tpZShjb29raWUs
IGhvc3RuYW1lKSk7CisgICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvTmV0d29ya2luZ1Byb2Nlc3NS
ZWxhdW5jaGluZ0lmTmVjZXNzYXJ5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpBZGRDb29r
aWVGb3JBdXRvbWF0aW9uKGNvb2tpZSwgaG9zdG5hbWUpKTsKK30KKworc3RhdGljIHVpbnQ2NF90
IGN1cnJlbnRHZXRDb29raWVDYWxsYmFja0lEOworCit2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94
eTo6Z2V0QWxsQ29va2llcyhOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKGNvbnN0IFZlY3RvcjxX
ZWJDb3JlOjpDb29raWU+Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgbV9nZXRDb29r
aWVDYWxsYmFja3Muc2V0KCsrY3VycmVudEdldENvb2tpZUNhbGxiYWNrSUQsIFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKTsKKyAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9OZXR3b3JraW5nUHJv
Y2Vzc1JlbGF1bmNoaW5nSWZOZWNlc3NhcnkoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6Okdl
dEFsbENvb2tpZXMoY3VycmVudEdldENvb2tpZUNhbGxiYWNrSUQpKTsKK30KKwordm9pZCBXZWJD
b29raWVNYW5hZ2VyUHJveHk6OmdldENvb2tpZXMoY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwsIE5v
bmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBtX2dldENvb2tpZUNhbGxiYWNrcy5zZXQoKytj
dXJyZW50R2V0Q29va2llQ2FsbGJhY2tJRCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwor
ICAgIHByb2Nlc3NQb29sKCktPnNlbmRUb05ldHdvcmtpbmdQcm9jZXNzUmVsYXVuY2hpbmdJZk5l
Y2Vzc2FyeShNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6R2V0Q29va2llcyh1cmwsIGN1cnJl
bnRHZXRDb29raWVDYWxsYmFja0lEKSk7Cit9CisKK3ZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5
OjpkaWRHZXRDb29raWVzKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiBjb29raWVzLCB1
aW50NjRfdCBjYWxsYmFja0lEKQoreworICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBtX2dl
dENvb2tpZUNhbGxiYWNrcy50YWtlKGNhbGxiYWNrSUQpOworICAgIEFTU0VSVChjb21wbGV0aW9u
SGFuZGxlcik7CisKKyAgICBjb21wbGV0aW9uSGFuZGxlcihjb29raWVzKTsKK30KKwordm9pZCBX
ZWJDb29raWVNYW5hZ2VyUHJveHk6OmRlbGV0ZUNvb2tpZShjb25zdCBXZWJDb3JlOjpDb29raWUm
IGNvb2tpZSkKK3sKKyAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9OZXR3b3JraW5nUHJvY2Vzc1Jl
bGF1bmNoaW5nSWZOZWNlc3NhcnkoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OkRlbGV0ZUNv
b2tpZShjb29raWUpKTsKK30KKwordm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OnNldENvb2tp
ZShjb25zdCBXZWJDb3JlOjpDb29raWUmIGNvb2tpZSkKK3sKKyAgICBwcm9jZXNzUG9vbCgpLT5z
ZW5kVG9OZXR3b3JraW5nUHJvY2Vzc1JlbGF1bmNoaW5nSWZOZWNlc3NhcnkoTWVzc2FnZXM6Oldl
YkNvb2tpZU1hbmFnZXI6OlNldENvb2tpZShjb29raWUpKTsKK30KKwordm9pZCBXZWJDb29raWVN
YW5hZ2VyUHJveHk6OnNldENvb2tpZXMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mIGNv
b2tpZXMsIGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsLCBjb25zdCBXZWJDb3JlOjpVUkwmIG1haW5E
b2N1bWVudFVSTCkKK3sKKyAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9OZXR3b3JraW5nUHJvY2Vz
c1JlbGF1bmNoaW5nSWZOZWNlc3NhcnkoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OlNldENv
b2tpZXMoY29va2llcywgdXJsLCBtYWluRG9jdW1lbnRVUkwpKTsKIH0KIAogdm9pZCBXZWJDb29r
aWVNYW5hZ2VyUHJveHk6OnN0YXJ0T2JzZXJ2aW5nQ29va2llQ2hhbmdlcygpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmgKaW5kZXggYTJhMDUz
Yi4uMTgzZTlmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tp
ZU1hbmFnZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVN
YW5hZ2VyUHJveHkuaApAQCAtNjgsNyArNjgsMTUgQEAgcHVibGljOgogICAgIHZvaWQgZGVsZXRl
Q29va2llc0Zvckhvc3RuYW1lKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpOwogICAgIHZvaWQgZGVs
ZXRlQWxsQ29va2llcygpOwogICAgIHZvaWQgZGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2Uo
c3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCk7Ci0gICAgdm9pZCBhZGRDb29r
aWUoY29uc3QgV2ViQ29yZTo6Q29va2llJiwgY29uc3QgU3RyaW5nJiBob3N0bmFtZSk7CisgICAg
dm9pZCBhZGRDb29raWVGb3JBdXRvbWF0aW9uKGNvbnN0IFdlYkNvcmU6OkNvb2tpZSYsIGNvbnN0
IFN0cmluZyYgaG9zdG5hbWUpOworCisgICAgdm9pZCBnZXRBbGxDb29raWVzKE5vbmNvcHlhYmxl
RnVuY3Rpb248dm9pZCAoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mKT4mJiBjb21wbGV0
aW9uSGFuZGxlcik7CisgICAgdm9pZCBnZXRDb29raWVzKGNvbnN0IFdlYkNvcmU6OlVSTCYsIE5v
bmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mKT4m
JiBjb21wbGV0aW9uSGFuZGxlcik7CisgICAgdm9pZCBkaWRHZXRDb29raWVzKGNvbnN0IFZlY3Rv
cjxXZWJDb3JlOjpDb29raWU+JiwgdWludDY0X3QgY2FsbGJhY2tJRCk7CisKKyAgICB2b2lkIGRl
bGV0ZUNvb2tpZShjb25zdCBXZWJDb3JlOjpDb29raWUmKTsKKyAgICB2b2lkIHNldENvb2tpZShj
b25zdCBXZWJDb3JlOjpDb29raWUmKTsKKyAgICB2b2lkIHNldENvb2tpZXMoY29uc3QgVmVjdG9y
PFdlYkNvcmU6OkNvb2tpZT4mLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXZWJDb3JlOjpV
UkwmIG1haW5Eb2N1bWVudFVSTCk7CiAKICAgICB2b2lkIHNldEhUVFBDb29raWVBY2NlcHRQb2xp
Y3koSFRUUENvb2tpZUFjY2VwdFBvbGljeSk7CiAgICAgdm9pZCBnZXRIVFRQQ29va2llQWNjZXB0
UG9saWN5KHN0ZDo6ZnVuY3Rpb248dm9pZCAoSFRUUENvb2tpZUFjY2VwdFBvbGljeSwgQ2FsbGJh
Y2tCYXNlOjpFcnJvcik+KTsKQEAgLTEwOCw2ICsxMTYsNyBAQCBwcml2YXRlOgogCiAgICAgSGFz
aE1hcDx1aW50NjRfdCwgUmVmUHRyPEFycmF5Q2FsbGJhY2s+PiBtX2FycmF5Q2FsbGJhY2tzOwog
ICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxIVFRQQ29va2llQWNjZXB0UG9saWN5Q2FsbGJh
Y2s+PiBtX2h0dHBDb29raWVBY2NlcHRQb2xpY3lDYWxsYmFja3M7CisgICAgSGFzaE1hcDx1aW50
NjRfdCwgTm9uY29weWFibGVGdW5jdGlvbjx2b2lkIChjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29v
a2llPiYpPj4gbV9nZXRDb29raWVDYWxsYmFja3M7CiAKICAgICBXZWJDb29raWVNYW5hZ2VyUHJv
eHlDbGllbnQgbV9jbGllbnQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJDb29raWVNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDQ5YWM2ZGIuLmQ2
OGExYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVNYW5h
Z2VyUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNv
b2tpZU1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgpAQCAtMjMsNiArMjMsNyBAQAogbWVzc2FnZXMg
LT4gV2ViQ29va2llTWFuYWdlclByb3h5IHsKICAgICBEaWRHZXRIb3N0bmFtZXNXaXRoQ29va2ll
cyhWZWN0b3I8U3RyaW5nPiBob3N0bmFtZXMsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwogICAgIERp
ZEdldEhUVFBDb29raWVBY2NlcHRQb2xpY3kodWludDMyX3QgcG9saWN5LCB1aW50NjRfdCBjYWxs
YmFja0lEKTsKLSAgICAKKyAgICBEaWRHZXRDb29raWVzKFZlY3RvcjxXZWJDb3JlOjpDb29raWU+
IGNvb2tpZXMsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOworCiAgICAgQ29va2llc0RpZENoYW5nZSgp
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wu
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAppbmRleCA4
YzYyMDUzLi42NDI4NjNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJBUElBcnJheS5oIgogI2luY2x1
ZGUgIkFQSUF1dG9tYXRpb25DbGllbnQuaCIKICNpbmNsdWRlICJBUElEb3dubG9hZENsaWVudC5o
IgorI2luY2x1ZGUgIkFQSUhUVFBDb29raWVTdG9yYWdlLmgiCiAjaW5jbHVkZSAiQVBJTGVnYWN5
Q29udGV4dEhpc3RvcnlDbGllbnQuaCIKICNpbmNsdWRlICJBUElQYWdlQ29uZmlndXJhdGlvbi5o
IgogI2luY2x1ZGUgIkFQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oIgpAQCAtMTY3LDYgKzE2
OCw3IEBAIFdlYlByb2Nlc3NQb29sOjpXZWJQcm9jZXNzUG9vbChBUEk6OlByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikKICAgICAsIG1fcHJvY2Vzc1N1cHByZXNzaW9uRGlz
YWJsZWRGb3JQYWdlQ291bnRlcihbdGhpc10oUmVmQ291bnRlckV2ZW50KSB7IHVwZGF0ZVByb2Nl
c3NTdXBwcmVzc2lvblN0YXRlKCk7IH0pCiAgICAgLCBtX2hpZGRlblBhZ2VUaHJvdHRsaW5nQXV0
b0luY3JlYXNlc0NvdW50ZXIoW3RoaXNdKFJlZkNvdW50ZXJFdmVudCkgeyBtX2hpZGRlblBhZ2VU
aHJvdHRsaW5nVGltZXIuc3RhcnRPbmVTaG90KDApOyB9KQogICAgICwgbV9oaWRkZW5QYWdlVGhy
b3R0bGluZ1RpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJldlYlByb2Nlc3NQb29sOjp1cGRh
dGVIaWRkZW5QYWdlVGhyb3R0bGluZ0F1dG9JbmNyZWFzZUxpbWl0KQorICAgICwgbV9jb29raWVT
dG9yYWdlKEFQSTo6SFRUUENvb2tpZVN0b3JhZ2U6OmNyZWF0ZSgqdGhpcykpCiB7CiAgICAgZm9y
IChhdXRvJiBzY2hlbWUgOiBtX2NvbmZpZ3VyYXRpb24tPmFsd2F5c1JldmFsaWRhdGVkVVJMU2No
ZW1lcygpKQogICAgICAgICBtX3NjaGVtZXNUb1JlZ2lzdGVyQXNBbHdheXNSZXZhbGlkYXRlZC5h
ZGQoc2NoZW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUG9vbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKaW5k
ZXggZDU3YjA5ZS4uNmQ2NWM3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQb29sLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmgKQEAgLTcyLDYgKzcyLDcgQEAgT0JKQ19DTEFTUyBOU1N0cmluZzsKIG5hbWVzcGFj
ZSBBUEkgewogY2xhc3MgQXV0b21hdGlvbkNsaWVudDsKIGNsYXNzIERvd25sb2FkQ2xpZW50Owor
Y2xhc3MgSFRUUENvb2tpZVN0b3JhZ2U7CiBjbGFzcyBMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVu
dDsKIGNsYXNzIFBhZ2VDb25maWd1cmF0aW9uOwogfQpAQCAtMzY5LDYgKzM3MCw4IEBAIHB1Ymxp
YzoKICAgICBib29sIHJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKCkgeyByZXR1cm4gbV9y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZDsgfQogICAgIHZvaWQgc2V0UmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0VuYWJsZWQoYm9vbCBlbmFibGVkKSB7IG1fcmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0VuYWJsZWQgPSBlbmFibGVkOyB9CiAKKyAgICBBUEk6OkhUVFBDb29raWVTdG9yYWdlJiBjb29r
aWVTdG9yYWdlKCkgeyByZXR1cm4gbV9jb29raWVTdG9yYWdlLmdldCgpOyB9CisKIHByaXZhdGU6
CiAgICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemUoKTsKIApAQCAtNTM5LDYgKzU0Miw4IEBAIHBy
aXZhdGU6CiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAgICAgSGFzaE1hcDxTdHJp
bmcsIEhhc2hNYXA8U3RyaW5nLCBIYXNoTWFwPFN0cmluZywgdWludDhfdD4+PiBtX3BsdWdpbkxv
YWRDbGllbnRQb2xpY2llczsKICNlbmRpZgorCisgICAgUmVmPEFQSTo6SFRUUENvb2tpZVN0b3Jh
Z2U+IG1fY29va2llU3RvcmFnZTsKIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9T
b3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNjEw
ZTBmZi4uOTllMTc1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtODY2LDYgKzg2Niw3IEBACiAJCTUxMDZEN0M0MThCREJFNzMw
MDBBQjE2NiAvKiBDb250ZXh0TWVudUNvbnRleHREYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTA2RDdDMDE4QkRCRTczMDAwQUIxNjYgLyogQ29u
dGV4dE1lbnVDb250ZXh0RGF0YS5oICovOyB9OwogCQk1MTBBRkZCOTE2NTQyMDQ4MDAxQkEwNUUg
LyogV2ViUmVzb3VyY2VMb2FkZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTEwQUZGQjcxNjU0MjA0ODAwMUJBMDVFIC8qIFdlYlJlc291cmNlTG9h
ZGVyLmNwcCAqLzsgfTsKIAkJNTEwQUZGQkExNjU0MjA0ODAwMUJBMDVFIC8qIFdlYlJlc291cmNl
TG9hZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MTBBRkZCODE2NTQyMDQ4MDAxQkEwNUUgLyogV2ViUmVzb3VyY2VMb2FkZXIuaCAqLzsgfTsKKwkJ
NTEwRENDMjYxRDE0QjVBNDAwOTY5M0E0IC8qIF9XS0hUVFBDb29raWVTdG9yYWdlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUE1ODc3MTFEMTQ1REJG
MDA0QkE5QUYgLyogX1dLSFRUUENvb2tpZVN0b3JhZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTBGQkI5QTEyODhDOTVFMDBBRkZERjQgLyog
V2ViQ29udGV4dE1lbnVJdGVtRGF0YS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MTBGQkI5ODEyODhDOTVFMDBBRkZERjQgLyogV2ViQ29udGV4dE1l
bnVJdGVtRGF0YS5jcHAgKi87IH07CiAJCTUxMEZCQjlCMTI4OEM5NUUwMEFGRkRGNCAvKiBXZWJD
b250ZXh0TWVudUl0ZW1EYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MTBGQkI5OTEyODhDOTVFMDBBRkZERjQgLyogV2ViQ29udGV4dE1lbnVJdGVt
RGF0YS5oICovOyB9OwogCQk1MTEwQUUwQzEzM0MxNkNCMDA3MjcxN0EgLyogV0tJY29uRGF0YWJh
c2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEx
MEFFMEExMzNDMTZDQjAwNzI3MTdBIC8qIFdLSWNvbkRhdGFiYXNlLmNwcCAqLzsgfTsKQEAgLTk1
OCw2ICs5NTksMTAgQEAKIAkJNTFBNTU1RjUxMjhDNkM0NzAwOUFCQ0VDIC8qIFdLQ29udGV4dE1l
bnVJdGVtLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxQTU1NUYzMTI4QzZDNDcwMDlBQkNFQyAvKiBXS0NvbnRleHRNZW51SXRlbS5jcHAgKi87IH07
CiAJCTUxQTU1NUY2MTI4QzZDNDcwMDlBQkNFQyAvKiBXS0NvbnRleHRNZW51SXRlbS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFBNTU1RjQxMjhDNkM0
NzAwOUFCQ0VDIC8qIFdLQ29udGV4dE1lbnVJdGVtLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTFBNTU2MDExMjhDNkQ5MjAwOUFCQ0VDIC8qIFdL
Q29udGV4dE1lbnVJdGVtVHlwZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUxQTU1NjAwMTI4QzZEOTIwMDlBQkNFQyAvKiBXS0NvbnRleHRNZW51SXRl
bVR5cGVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJNTFBNTg3NzMxRDE0NUU0ODAwNEJBOUFGIC8qIEFQSUhUVFBDb29raWVTdG9yYWdlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUE1ODc3MDFEMTQ1
RDQyMDA0QkE5QUYgLyogQVBJSFRUUENvb2tpZVN0b3JhZ2UuaCAqLzsgfTsKKwkJNTFBNTg3NzQx
RDE0NUU0RDAwNEJBOUFGIC8qIEFQSUhUVFBDb29raWVTdG9yYWdlLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQTU4NzZGMUQxNDVENDIwMDRCQTlB
RiAvKiBBUElIVFRQQ29va2llU3RvcmFnZS5jcHAgKi87IH07CisJCTUxQTU4Nzc2MUQxNDYxQjEw
MDRCQTlBRiAvKiBfV0tIVFRQQ29va2llU3RvcmFnZUludGVybmFsLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUE1ODc3NTFEMTQ2MTkxMDA0QkE5QUYg
LyogX1dLSFRUUENvb2tpZVN0b3JhZ2VJbnRlcm5hbC5oICovOyB9OworCQk1MUE1ODc3NzFEMTQ2
NUEzMDA0QkE5QUYgLyogX1dLSFRUUENvb2tpZVN0b3JhZ2UubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUE1ODc3MjFEMTQ1REJGMDA0QkE5QUYgLyog
X1dLSFRUUENvb2tpZVN0b3JhZ2UubW0gKi87IH07CiAJCTUxQTcyOERFMUIxQkFEMzgwMDEwMkVF
RSAvKiBXS0J1bmRsZU5hdmlnYXRpb25BY3Rpb25Qcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUE3MjhEQzFCMUJBRDJEMDAxMDJFRUUgLyog
V0tCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uUHJpdmF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxQTdGMkYzMTI1QkY4MjAwMDhBRUIxRCAvKiBM
b2dnaW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MUE3RjJGMjEyNUJGODIwMDA4QUVCMUQgLyogTG9nZ2luZy5oICovOyB9OwogCQk1MUE3RjJGNTEy
NUJGOEQ0MDA4QUVCMUQgLyogTG9nZ2luZy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MUE3RjJGNDEyNUJGOEQ0MDA4QUVCMUQgLyogTG9nZ2luZy5j
cHAgKi87IH07CkBAIC0yOTc1LDYgKzI5ODAsMTEgQEAKIAkJNTFBNTU1RjMxMjhDNkM0NzAwOUFC
Q0VDIC8qIFdLQ29udGV4dE1lbnVJdGVtLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFdLQ29udGV4dE1lbnVJdGVtLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTFBNTU1RjQxMjhDNkM0NzAwOUFCQ0VDIC8qIFdLQ29udGV4dE1lbnVJdGVtLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLQ29udGV4dE1lbnVJdGVtLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxQTU1NjAwMTI4QzZEOTIwMDlBQkNFQyAvKiBXS0Nv
bnRleHRNZW51SXRlbVR5cGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdL
Q29udGV4dE1lbnVJdGVtVHlwZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFB
NTg3NkYxRDE0NUQ0MjAwNEJBOUFGIC8qIEFQSUhUVFBDb29raWVTdG9yYWdlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFQSUhUVFBDb29raWVTdG9yYWdlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFBNTg3NzAxRDE0NUQ0MjAwNEJBOUFGIC8q
IEFQSUhUVFBDb29raWVTdG9yYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEFQSUhUVFBDb29raWVTdG9yYWdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUx
QTU4NzcxMUQxNDVEQkYwMDRCQTlBRiAvKiBfV0tIVFRQQ29va2llU3RvcmFnZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tIVFRQQ29va2llU3RvcmFnZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk1MUE1ODc3MjFEMTQ1REJGMDA0QkE5QUYgLyogX1dLSFRU
UENvb2tpZVN0b3JhZ2UubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBfV0tIVFRQQ29va2llU3RvcmFnZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NTFBNTg3NzUxRDE0NjE5MTAwNEJBOUFGIC8qIF9XS0hUVFBDb29raWVTdG9yYWdlSW50ZXJuYWwu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLSFRUUENvb2tpZVN0b3JhZ2VJ
bnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUE2MEIyOTE4MENDRDkw
MDBGM0JGNTAgLyogRGF0YWJhc2VTZXJ2aWNlLnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IERhdGFi
YXNlU2VydmljZS54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFBNzI4
REMxQjFCQUQyRDAwMTAyRUVFIC8qIFdLQnVuZGxlTmF2aWdhdGlvbkFjdGlvblByaXZhdGUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tCdW5kbGVOYXZpZ2F0aW9uQWN0aW9u
UHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUE3RjJGMjEyNUJGODIw
MDA4QUVCMUQgLyogTG9nZ2luZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBM
b2dnaW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01MDMxLDYgKzUwNDEsOSBA
QAogCQkJCTJFN0E5NDQ5MUJCRDk1QzYwMDk0NTU0NyAvKiBfV0tGb2N1c2VkRWxlbWVudEluZm8u
aCAqLywKIAkJCQkyRTBCOEE3OTFCQzU5QTU5MDA0NEIzMkQgLyogX1dLRm9ybURlbGVnYXRlLmgg
Ki8sCiAJCQkJMzdBNjRFNTYxOEYzOEY0NjAwRUIzMEYxIC8qIF9XS0Zvcm1JbnB1dFNlc3Npb24u
aCAqLywKKwkJCQk1MUE1ODc3MTFEMTQ1REJGMDA0QkE5QUYgLyogX1dLSFRUUENvb2tpZVN0b3Jh
Z2UuaCAqLywKKwkJCQk1MUE1ODc3MjFEMTQ1REJGMDA0QkE5QUYgLyogX1dLSFRUUENvb2tpZVN0
b3JhZ2UubW0gKi8sCisJCQkJNTFBNTg3NzUxRDE0NjE5MTAwNEJBOUFGIC8qIF9XS0hUVFBDb29r
aWVTdG9yYWdlSW50ZXJuYWwuaCAqLywKIAkJCQkzN0E2NEU1NDE4RjM4RTNDMDBFQjMwRjEgLyog
X1dLSW5wdXREZWxlZ2F0ZS5oICovLAogCQkJCTJENzkwQTlDMUFENzA1MEQwMEFCOTBCMyAvKiBf
V0tMYXlvdXRNb2RlLmggKi8sCiAJCQkJOTMyMzYxMUQxQjAxNURBODAwRkE5MjMyIC8qIF9XS092
ZXJsYXlTY3JvbGxiYXJTdHlsZS5oICovLApAQCAtNjAxNCw2ICs2MDI3LDggQEAKIAkJCQkzN0Uy
NUQ2RDE4RkRFNUQ2MDA1RDNBMDAgLyogQVBJRm9ybUNsaWVudC5oICovLAogCQkJCTJERjlFRUUz
MUE3ODFGQjQwMEI2Q0ZCRSAvKiBBUElGcmFtZUluZm8uY3BwICovLAogCQkJCTJERjlFRUU0MUE3
ODFGQjQwMEI2Q0ZCRSAvKiBBUElGcmFtZUluZm8uaCAqLywKKwkJCQk1MUE1ODc2RjFEMTQ1RDQy
MDA0QkE5QUYgLyogQVBJSFRUUENvb2tpZVN0b3JhZ2UuY3BwICovLAorCQkJCTUxQTU4NzcwMUQx
NDVENDIwMDRCQTlBRiAvKiBBUElIVFRQQ29va2llU3RvcmFnZS5oICovLAogCQkJCTJEQUJBNzc1
MUE4MkI0MjEwMEVGMEYxQSAvKiBBUElIaXN0b3J5Q2xpZW50LmggKi8sCiAJCQkJOTNBODhCNDIx
QkM4ODI4QzAwQUJBNUMyIC8qIEFQSUhpdFRlc3RSZXN1bHQuY3BwICovLAogCQkJCTkzQTg4QjQz
MUJDODgyOEMwMEFCQTVDMiAvKiBBUElIaXRUZXN0UmVzdWx0LmggKi8sCkBAIC03NDgyLDYgKzc0
OTcsNyBAQAogCQkJCTgzNEIyNTBGMUE4MzFBOEQwMENGQjE1MCAvKiBOZXR3b3JrQ2FjaGVGaWxl
U3lzdGVtLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNDJFMDYxMDFBQTc1MjNCMDBCMTE2OTkgLyog
TmV0d29ya0NhY2hlSU9DaGFubmVsLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNDQzNkVDRTFBMEQw
NDBCMDBFQUQyMDQgLyogTmV0d29ya0NhY2hlS2V5LmggaW4gSGVhZGVycyAqLywKKwkJCQk1MUE1
ODc3MzFEMTQ1RTQ4MDA0QkE5QUYgLyogQVBJSFRUUENvb2tpZVN0b3JhZ2UuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTgzMUVFQkJEMUJEODVDNDMwMEJCNjRDMyAvKiBOZXR3b3JrQ2FjaGVTcGVjdWxh
dGl2ZUxvYWQuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzMkFFMjUyMUJFMkU4Q0QwMEZBQUUxMCAv
KiBOZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk4MzRCMjUxMjFBODQyQzg3MDBDRkIxNTAgLyogTmV0d29ya0NhY2hlU3RhdGlzdGljcy5oIGlu
IEhlYWRlcnMgKi8sCkBAIC03NTI5LDYgKzc1NDUsNyBAQAogCQkJCUUxOTU4MkQzMTUzQ0JGRDcw
MEI2MDg3NSAvKiBQREZLaXRJbXBvcnRzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzI5OERBMDFD
M0RGMDIxMDA0NzBBRkUgLyogUGVuZGluZ0Rvd25sb2FkLmggaW4gSGVhZGVycyAqLywKIAkJCQk1
Q0U4NUIyMDFDODhFNjRCMDA3MEJGQ0UgLyogUGluZ0xvYWQuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTUxMERDQzI2MUQxNEI1QTQwMDk2OTNBNCAvKiBfV0tIVFRQQ29va2llU3RvcmFnZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEY1RTIwMDQxOEU3NzA1MTAwM0VDM0U1IC8qIFBsYXRmb3JtQ0FBbmlt
YXRpb25SZW1vdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTJEQTA0OUI0MTgwQ0NDRDMwMEFBRkE5
RSAvKiBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTJEODcxMDE3
MTgyODQxNUQwMDE4RkEwMSAvKiBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20uaCBpbiBIZWFk
ZXJzICovLApAQCAtNzg2OSw2ICs3ODg2LDcgQEAKIAkJCQkxQUI0NzRFODE4NEQ0NEQwMDA1MUI2
MjIgLyogV0tCdW5kbGVQYWdlRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQuaCBpbiBIZWFkZXJzICov
LAogCQkJCTFBQjQ3NEUwMTg0RDQ0NkEwMDUxQjYyMiAvKiBXS0J1bmRsZVBhZ2VFZGl0b3JDbGll
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQjQ3NEUyMTg0RDQ0ODAwMDUxQjYyMiAvKiBXS0J1
bmRsZVBhZ2VGb3JtQ2xpZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk1MUE1ODc3NjFEMTQ2MUIx
MDA0QkE5QUYgLyogX1dLSFRUUENvb2tpZVN0b3JhZ2VJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMUFCNDc0RTYxODRENDRCNDAwNTFCNjIyIC8qIFdLQnVuZGxlUGFnZUZ1bGxTY3JlZW5D
bGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDN0I2MzNEMTJBNDVEMTIwMEQxNzRBNCAvKiBX
S0J1bmRsZVBhZ2VHcm91cC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFCNDc0RDgxODRENDNGRDAw
NTFCNjIyIC8qIFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC04
ODA5LDYgKzg4MjcsNyBAQAogCQkJCTk5QzgxRDU5MUMyMEUxRTUwMDVDNEM4MiAvKiBBdXRvbWF0
aW9uQ2xpZW50Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJOTk1NUE2RjYxQzc5ODZFMzAwRUI2QTkz
IC8qIEF1dG9tYXRpb25Qcm90b2NvbE9iamVjdHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTkw
RDI4QkMxQzY1MzlEQTAwOTg2OTc3IC8qIEF1dG9tYXRpb25TZXNzaW9uQ2xpZW50Lm1tIGluIFNv
dXJjZXMgKi8sCisJCQkJNTFBNTg3NzQxRDE0NUU0RDAwNEJBOUFGIC8qIEFQSUhUVFBDb29raWVT
dG9yYWdlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxNjRBMkYxMTkxQUYxNEUwMDEwNzM3RCAv
KiBCbG9iRGF0YUZpbGVSZWZlcmVuY2VXaXRoU2FuZGJveEV4dGVuc2lvbi5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlFMTcwODc2QjE2RDZDQTY5MDBGOTkyMjYgLyogQmxvYlJlZ2lzdHJ5UHJveHku
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNGMTg2MzgxNjdEMDcxRTAwQTFBODVBIC8qIENhY2hl
TW9kZWwuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC05MDMwLDYgKzkwNDksNyBAQAogCQkJCTFBOEVG
QTcwMTI1MkI4NDEwMEY3MDY3RiAvKiBQbHVnaW5Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk3Q0Q2MjI3NzE3MzlEODYzMDA1QkQ3RkYgLyogUGx1Z2luU2FuZGJv
eFByb2ZpbGUubW0gaW4gU291cmNlcyAqLywKIAkJCQlCQzgyODQ0RDE2QjUwODFDMDBBMjc4RkUg
LyogUGx1Z2luU2VydmljZUVudHJ5UG9pbnQubW0gaW4gU291cmNlcyAqLywKKwkJCQk1MUE1ODc3
NzFEMTQ2NUEzMDA0QkE5QUYgLyogX1dLSFRUUENvb2tpZVN0b3JhZ2UubW0gaW4gU291cmNlcyAq
LywKIAkJCQkxQTZGQjdBRTExRTY0QjY4MDBEQjEzNzEgLyogUGx1Z2luVmlldy5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlFMThDOTJGNDEyREI5RTcxMDBDRjJBRUIgLyogUHJpbnRJbmZvLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUUxQ0MxQjkxMTJEN0VBREYwMDYyNTgzOCAvKiBQcmludEluZm9N
YWMubW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmNwcAppbmRleCBlMTE0OGExLi5jNzA5MTFkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFu
YWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tp
ZU1hbmFnZXIuY3BwCkBAIC04NCwxMSArODQsMzggQEAgdm9pZCBXZWJDb29raWVNYW5hZ2VyOjpk
ZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZShzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjoK
ICAgICBXZWJDb3JlOjpkZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZShOZXR3b3JrU3RvcmFn
ZVNlc3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpLCB0aW1lKTsKIH0KIAotdm9pZCBXZWJD
b29raWVNYW5hZ2VyOjphZGRDb29raWUoY29uc3QgQ29va2llJiBjb29raWUsIGNvbnN0IFN0cmlu
ZyYgaG9zdG5hbWUpCit2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmFkZENvb2tpZUZvckF1dG9tYXRp
b24oY29uc3QgQ29va2llJiBjb29raWUsIGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpCiB7CiAgICAg
V2ViQ29yZTo6YWRkQ29va2llKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VT
ZXNzaW9uKCksIFVSTChVUkwoKSwgaG9zdG5hbWUpLCBjb29raWUpOwogfQogCit2b2lkIFdlYkNv
b2tpZU1hbmFnZXI6OmdldEFsbENvb2tpZXModWludDY0X3QgY2FsbGJhY2tJRCkKK3sKKyAgICBh
dXRvIGNvb2tpZXMgPSAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Np
b24oKS5nZXRBbGxDb29raWVzKCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJD
b29raWVNYW5hZ2VyUHJveHk6OkRpZEdldENvb2tpZXMoY29va2llcywgY2FsbGJhY2tJRCksIDAp
OworfQorCit2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmdldENvb2tpZXMoY29uc3QgV2ViQ29yZTo6
VVJMJiB1cmwsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit7CisgICAgYXV0byBjb29raWVzID0gIE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCkuZ2V0Q29va2llcyh1
cmwpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlclByb3h5
OjpEaWRHZXRDb29raWVzKGNvb2tpZXMsIGNhbGxiYWNrSUQpLCAwKTsKK30KKwordm9pZCBXZWJD
b29raWVNYW5hZ2VyOjpkZWxldGVDb29raWUoY29uc3QgV2ViQ29yZTo6Q29va2llJiBjb29raWUp
Cit7CisgICAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKS5k
ZWxldGVDb29raWUoY29va2llKTsKK30KKwordm9pZCBXZWJDb29raWVNYW5hZ2VyOjpzZXRDb29r
aWUoY29uc3QgV2ViQ29yZTo6Q29va2llJiBjb29raWUpCit7CisgICAgTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKS5hZGRDb29raWUoY29va2llKTsKK30KKwor
dm9pZCBXZWJDb29raWVNYW5hZ2VyOjpzZXRDb29raWVzKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpD
b29raWU+JiBjb29raWVzLCBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCwgY29uc3QgV2ViQ29yZTo6
VVJMJiBtYWluRG9jdW1lbnRVUkwpCit7CisgICAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZh
dWx0U3RvcmFnZVNlc3Npb24oKS5hZGRDb29raWVzKGNvb2tpZXMsIHVybCwgbWFpbkRvY3VtZW50
VVJMKTsKK30KKwogdm9pZCBXZWJDb29raWVNYW5hZ2VyOjpzdGFydE9ic2VydmluZ0Nvb2tpZUNo
YW5nZXMoKQogewogICAgIFdlYkNvcmU6OnN0YXJ0T2JzZXJ2aW5nQ29va2llQ2hhbmdlcyhjb29r
aWVzRGlkQ2hhbmdlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29v
a2llcy9XZWJDb29raWVNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Nvb2tp
ZXMvV2ViQ29va2llTWFuYWdlci5oCmluZGV4IDExNmRjMzQuLmM2Y2MzMzcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmgKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIuaApA
QCAtMzMsMTIgKzMzLDE0IEBACiAjaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8d3RmL0Zv
cndhcmQuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CiAKICNpZiBVU0UoU09VUCkKICNpbmNsdWRlICJTb3VwQ29va2llUGVyc2lzdGVudFN0
b3JhZ2VUeXBlLmgiCiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgVVJMOwog
c3RydWN0IENvb2tpZTsKIH0KIApAQCAtNjYsNyArNjgsMTMgQEAgcHJpdmF0ZToKICAgICB2b2lk
IGRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZShjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIGRlbGV0
ZUFsbENvb2tpZXMoKTsKICAgICB2b2lkIGRlbGV0ZUFsbENvb2tpZXNNb2RpZmllZFNpbmNlKHN0
ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQpOwotICAgIHZvaWQgYWRkQ29va2ll
KGNvbnN0IFdlYkNvcmU6OkNvb2tpZSYsIGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpOworICAgIHZv
aWQgYWRkQ29va2llRm9yQXV0b21hdGlvbihjb25zdCBXZWJDb3JlOjpDb29raWUmLCBjb25zdCBT
dHJpbmcmIGhvc3RuYW1lKTsKKworICAgIHZvaWQgZ2V0QWxsQ29va2llcyh1aW50NjRfdCBjYWxs
YmFja0lEKTsKKyAgICB2b2lkIGdldENvb2tpZXMoY29uc3QgV2ViQ29yZTo6VVJMJiwgdWludDY0
X3QgY2FsbGJhY2tJRCk7CisgICAgdm9pZCBkZWxldGVDb29raWUoY29uc3QgV2ViQ29yZTo6Q29v
a2llJik7CisgICAgdm9pZCBzZXRDb29raWUoY29uc3QgV2ViQ29yZTo6Q29va2llJik7CisgICAg
dm9pZCBzZXRDb29raWVzKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiBjb29raWVzLCBj
b25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXZWJDb3JlOjpVUkwmIG1haW5Eb2N1bWVudFVSTCk7
CiAKICAgICB2b2lkIHBsYXRmb3JtU2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShIVFRQQ29va2ll
QWNjZXB0UG9saWN5KTsKICAgICB2b2lkIGdldEhUVFBDb29raWVBY2NlcHRQb2xpY3kodWludDY0
X3QgY2FsbGJhY2tJRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Nv
b2tpZXMvV2ViQ29va2llTWFuYWdlci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLm1lc3NhZ2VzLmluCmluZGV4IGMyZDE2YWYu
LmU5NTQzZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2llcy9X
ZWJDb29raWVNYW5hZ2VyLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLm1lc3NhZ2VzLmluCkBAIC0yOCw3ICsyOCwxMyBA
QAogICAgIHZvaWQgRGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKFN0cmluZyBob3N0bmFtZSkKICAg
ICB2b2lkIERlbGV0ZUFsbENvb2tpZXMoKQogICAgIHZvaWQgRGVsZXRlQWxsQ29va2llc01vZGlm
aWVkU2luY2Uoc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCB0aW1lKQotICAg
IHZvaWQgQWRkQ29va2llKHN0cnVjdCBXZWJDb3JlOjpDb29raWUgY29va2llLCBTdHJpbmcgaG9z
dG5hbWUpCisgICAgdm9pZCBBZGRDb29raWVGb3JBdXRvbWF0aW9uKHN0cnVjdCBXZWJDb3JlOjpD
b29raWUgY29va2llLCBTdHJpbmcgaG9zdG5hbWUpCisKKyAgICB2b2lkIEdldEFsbENvb2tpZXMo
dWludDY0X3QgY2FsbGJhY2tJRCkKKyAgICB2b2lkIEdldENvb2tpZXMoV2ViQ29yZTo6VVJMIHVy
bCwgdWludDY0X3QgY2FsbGJhY2tJRCkKKyAgICB2b2lkIERlbGV0ZUNvb2tpZShzdHJ1Y3QgV2Vi
Q29yZTo6Q29va2llIGNvb2tpZSkKKyAgICB2b2lkIFNldENvb2tpZShzdHJ1Y3QgV2ViQ29yZTo6
Q29va2llIGNvb2tpZSkKKyAgICB2b2lkIFNldENvb2tpZXMoVmVjdG9yPFdlYkNvcmU6OkNvb2tp
ZT4gY29va2llcywgV2ViQ29yZTo6VVJMIHVybCwgV2ViQ29yZTo6VVJMIG1haW5Eb2N1bWVudFVS
TCkKIAogICAgIHZvaWQgU2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSh1aW50MzJfdCBwb2xpY3kp
CiAgICAgdm9pZCBHZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHVpbnQ2NF90IGNhbGxiYWNrSUQp
CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggODdi
Zjc3NS4uMGI4YTFjNCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE2LTA2LTE3ICBCcmFkeSBFaWRzb24gIDxiZWlk
c29uQGFwcGxlLmNvbT4KKworICAgICAgICBTUEkgZm9yOiBXS1dlYlZpZXcgcHJvdmlkZXMgbm8g
YWNjZXNzIHRvIGNvb2tpZXMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzE3NDg2MjUwPiBhbmQg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1ODkwMQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvV0tIVFRQQ29va2llU3RvcmFnZS5tbTogQWRkZWQu
CisKIDIwMTYtMDYtMTMgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KIAogICAg
ICAgICBGYWxzZS1wb3NpdGl2ZSBvdmVyLXJlbGVhc2Ugb2YgV2ViVmlldyBpbiBkZXN0cm95V2Vi
Vmlld0FuZE9mZnNjcmVlbldpbmRvdygpIGluIER1bXBSZW5kZXJUcmVlLm1tCmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IGMwNzdmMDEuLjQ1OWQ1N2IgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC02Myw2ICs2Myw3IEBACiAJCTM3REM2NzkxMTQwRDdENzYwMEFCQ0NEQiAvKiBET01SYW5n
ZU9mU3RyaW5nLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMzdEQzY3OEYxNDBEN0QzQTAwQUJDQ0RCIC8qIERPTVJhbmdlT2ZTdHJpbmcu
aHRtbCAqLzsgfTsKIAkJMzdFMTA2NEMxNjk3NjgxODAwQjc4QkQwIC8qIERPTUhUTUxUYWJsZUNl
bGxFbGVtZW50Q2VsbEFib3ZlLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMzdFMTA2NEIxNjk3NjdGNzAwQjc4QkQwIC8qIERPTUhUTUxU
YWJsZUNlbGxFbGVtZW50Q2VsbEFib3ZlLmh0bWwgKi87IH07CiAJCTRCRkRGRkE3MTMxNDc3NkMw
MDYxRjI0QiAvKiBIaXRUZXN0UmVzdWx0Tm9kZUhhbmRsZV9CdW5kbGUuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEJGREZGQTYxMzE0Nzc2QzAwNjFG
MjRCIC8qIEhpdFRlc3RSZXN1bHROb2RlSGFuZGxlX0J1bmRsZS5jcHAgKi87IH07CisJCTUxMERD
QzI1MUQxNEI0MzkwMDk2OTNBNCAvKiBXS0hUVFBDb29raWVTdG9yYWdlLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwRENDMjQxRDE0QjQyRjAwOTY5
M0E0IC8qIFdLSFRUUENvb2tpZVN0b3JhZ2UubW0gKi87IH07CiAJCTUxMzkzRTIyMTUyMzk1MkQw
MDVGMzlDNSAvKiBET01XaW5kb3dFeHRlbnNpb25CYXNpY19CdW5kbGUuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEzOTNFMUQxNTIzOTQ0QTAwNUYz
OUM1IC8qIERPTVdpbmRvd0V4dGVuc2lvbkJhc2ljX0J1bmRsZS5jcHAgKi87IH07CiAJCTUxNDJC
MjczMTUxN0M4QzgwMEMzMkIxOSAvKiBDb250ZXh0TWVudUNhbkNvcHlVUkwuaHRtbCBpbiBDb3B5
IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTQyQjI3MjE1
MTdDODkxMDBDMzJCMTkgLyogQ29udGV4dE1lbnVDYW5Db3B5VVJMLmh0bWwgKi87IH07CiAJCTUx
NzE0RUI0MUNGOEM3OEMwMDQ3MjNDNCAvKiBXZWJQcm9jZXNzS2lsbElEQkNsZWFudXAtMS5odG1s
IGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUx
NzE0RUIyMUNGOEM3NjEwMDQ3MjNDNCAvKiBXZWJQcm9jZXNzS2lsbElEQkNsZWFudXAtMS5odG1s
ICovOyB9OwpAQCAtNjgyLDYgKzY4Myw3IEBACiAJCTRCQjQxNjAzMTY4MTVGOTEwMDgyNDIzOCAv
KiBFbGVtZW50QXRQb2ludEluV2ViRnJhbWUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBFbGVtZW50QXRQb2ludEluV2ViRnJhbWUubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTRCRkRGRkE2MTMxNDc3NkMwMDYxRjI0QiAvKiBIaXRUZXN0UmVzdWx0
Tm9kZUhhbmRsZV9CdW5kbGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSGl0VGVzdFJlc3VsdE5vZGVIYW5kbGVfQnVuZGxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNEJGREZGQTgxMzE0Nzc3NzAwNjFGMjRCIC8qIEhpdFRlc3RSZXN1bHROb2Rl
SGFuZGxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhpdFRlc3RS
ZXN1bHROb2RlSGFuZGxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTEwREND
MjQxRDE0QjQyRjAwOTY5M0E0IC8qIFdLSFRUUENvb2tpZVN0b3JhZ2UubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS0hUVFBDb29raWVTdG9yYWdlLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTM5M0UxRDE1MjM5NDRBMDA1RjM5QzUgLyogRE9N
V2luZG93RXh0ZW5zaW9uQmFzaWNfQnVuZGxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IERPTVdpbmRvd0V4dGVuc2lvbkJhc2ljX0J1bmRsZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMzkzRTFFMTUyMzk0NEEwMDVGMzlDNSAvKiBET01XaW5k
b3dFeHRlbnNpb25CYXNpYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBET01XaW5kb3dFeHRlbnNpb25CYXNpYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTUxNDJCMjcwMTUxN0M4OEIwMEMzMkIxOSAvKiBDb250ZXh0TWVudUNhbkNvcHlVUkwubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBDb250ZXh0TWVudUNhbkNv
cHlVUkwubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMTYwLDYgKzExNjIsNyBA
QAogCQkJCTdDODgyRTA0MUM4MEM2MjQwMDZCRjczMSAvKiBVc2VyQ29udGVudFdvcmxkUGx1Z0lu
Lm1tICovLAogCQkJCTdDODgyRTA1MUM4MEM2MjQwMDZCRjczMSAvKiBVc2VyQ29udGVudFdvcmxk
UHJvdG9jb2wuaCAqLywKIAkJCQk5M0U5NDNGMTFDRDNFODdFMDBBQzA4QzIgLyogVmlkZW9Db250
cm9sc01hbmFnZXIubW0gKi8sCisJCQkJNTEwRENDMjQxRDE0QjQyRjAwOTY5M0E0IC8qIFdLSFRU
UENvb2tpZVN0b3JhZ2UubW0gKi8sCiAJCQkJMkQwMDA2NUQxQzFGNTg5NDAwODhFNkE3IC8qIFdL
UERGVmlld1Jlc2l6ZUNyYXNoLm1tICovLAogCQkJCTBGM0I5NEE1MUE3NzI2NkMwMERFMzI3MiAv
KiBXS1dlYlZpZXdFdmFsdWF0ZUphdmFTY3JpcHQubW0gKi8sCiAJCQkJOTk4NEZBQ0ExQ0ZGQUVF
RTAwOEQxOThDIC8qIFdLV2ViVmlld1RleHRJbnB1dC5tbSAqLywKQEAgLTIwODksNiArMjA5Miw3
IEBACiAJCQkJN0NDRTdFQzcxQTQxMUE3RTAwNDQ3QzRDIC8qIFBhZ2VWaXNpYmlsaXR5U3RhdGVX
aXRoV2luZG93Q2hhbmdlcy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RjA5MUE0MTFBRTYw
MDQ0N0M0QyAvKiBQYXJlbnRGcmFtZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0YwQTFB
NDExQUU2MDA0NDdDNEMgLyogUGFzdGVib2FyZE5vdGlmaWNhdGlvbnMubW0gaW4gU291cmNlcyAq
LywKKwkJCQk1MTBEQ0MyNTFEMTRCNDM5MDA5NjkzQTQgLyogV0tIVFRQQ29va2llU3RvcmFnZS5t
bSBpbiBTb3VyY2VzICovLAogCQkJCTdDODNFMEJCMUQwQTY1MDAwMEZFQkNGMyAvKiBGaW5kSW5Q
YWdlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFQUYxQTQxMUEzODAwNDQ3QzRDIC8qIFBs
YXRmb3JtVXRpbGl0aWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMTM5RTc4MUE0MjNBNkIw
MEY1OTBGNSAvKiBQbGF0Zm9ybVV0aWxpdGllc0NvY29hLm1tIGluIFNvdXJjZXMgKi8sCmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9XS0hUVFBDb29r
aWVTdG9yYWdlLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvV0tI
VFRQQ29va2llU3RvcmFnZS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4x
NjViYWYwCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXQyQ29jb2EvV0tIVFRQQ29va2llU3RvcmFnZS5tbQpAQCAtMCwwICsxLDExMSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIFBMQVRGT1JNKE1BQykKKworI2ltcG9y
dCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKKyNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQcml2YXRl
Lmg+CisjaW1wb3J0IDxXZWJLaXQvX1dLSFRUUENvb2tpZVN0b3JhZ2UuaD4KKyNpbXBvcnQgPHd0
Zi9SZXRhaW5QdHIuaD4KKworI2lmIFdLX0FQSV9FTkFCTEVECisKK3N0YXRpYyBib29sIGdvdENv
b2tpZXM7CisKK1RFU1QoV2ViS2l0MiwgV0tIVFRQQ29va2llU3RvcmFnZSkKK3sKKyAgICBhdXRv
IHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFr
ZVJlY3QoMCwgMCwgODAwLCA2MDApXSk7CisKKyAgICBhdXRvIHdpbmRvdyA9IGFkb3B0TlMoW1tO
U1dpbmRvdyBhbGxvY10gaW5pdFdpdGhDb250ZW50UmVjdDpbd2ViVmlldyBmcmFtZV0gc3R5bGVN
YXNrOk5TQm9yZGVybGVzc1dpbmRvd01hc2sgYmFja2luZzpOU0JhY2tpbmdTdG9yZUJ1ZmZlcmVk
IGRlZmVyOllFU10pOworICAgIFtbd2luZG93IGNvbnRlbnRWaWV3XSBhZGRTdWJ2aWV3OndlYlZp
ZXcuZ2V0KCldOworCisgICAgW3dlYlZpZXcgbG9hZEhUTUxTdHJpbmc6QCJPaCBoZWxsbyIgYmFz
ZVVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHA6Ly93ZWJraXQub3JnIl1dOworCisgICAg
YXV0byBodHRwQ29va2llU3RvcmFnZSA9IFt3ZWJWaWV3IF9odHRwQ29va2llU3RvcmFnZV07CisK
KyAgICBSZXRhaW5QdHI8TlNBcnJheTxOU0hUVFBDb29raWUgKj4gKj4gY29va2llczsKKyAgICBb
aHR0cENvb2tpZVN0b3JhZ2UgY29va2llc1dpdGhDb21wbGV0aW9uSGFuZGxlcjpbY29va2llc1B0
ciA9ICZjb29raWVzXShOU0FycmF5PE5TSFRUUENvb2tpZSAqPiAqY29va2llcykgeworICAgICAg
ICAqY29va2llc1B0ciA9IGNvb2tpZXM7CisgICAgICAgIGdvdENvb2tpZXMgPSB0cnVlOworICAg
IH1dOworCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZnb3RDb29raWVzKTsKKyAgICBB
U1NFUlRfRVEoY29va2llcy5nZXQoKS5jb3VudCwgMCk7CisKKyAgICBnb3RDb29raWVzID0gZmFs
c2U7CisKKyAgICBSZXRhaW5QdHI8TlNIVFRQQ29va2llPiBjb29raWUxID0gW05TSFRUUENvb2tp
ZSBjb29raWVXaXRoUHJvcGVydGllczpAeworICAgICAgICBOU0hUVFBDb29raWVQYXRoOiBAIi8i
LAorICAgICAgICBOU0hUVFBDb29raWVOYW1lOiBAIkNvb2tpZU5hbWUiLAorICAgICAgICBOU0hU
VFBDb29raWVWYWx1ZTogQCJDb29raWVWYWx1ZSIsCisgICAgICAgIE5TSFRUUENvb2tpZURvbWFp
bjogQCIud3d3LndlYmtpdC5vcmciLAorICAgICAgICBOU0hUVFBDb29raWVTZWN1cmU6IEAiVFJV
RSIsCisgICAgICAgIE5TSFRUUENvb2tpZURpc2NhcmQ6IEAiVFJVRSIsCisgICAgICAgIE5TSFRU
UENvb2tpZU1heGltdW1BZ2U6IEAiMTAwMDAiLAorICAgIH1dOworCisgICAgUmV0YWluUHRyPE5T
SFRUUENvb2tpZT4gY29va2llMiA9IFtOU0hUVFBDb29raWUgY29va2llV2l0aFByb3BlcnRpZXM6
QHsKKyAgICAgICAgTlNIVFRQQ29va2llUGF0aDogQCIvcGF0aCIsCisgICAgICAgIE5TSFRUUENv
b2tpZU5hbWU6IEAiT3RoZXJDb29raWVOYW1lIiwKKyAgICAgICAgTlNIVFRQQ29va2llVmFsdWU6
IEAiT3RoZXJDb29raWVWYWx1ZSIsCisgICAgICAgIE5TSFRUUENvb2tpZURvbWFpbjogQCIud3d3
LnczYy5vcmciLAorICAgICAgICBOU0hUVFBDb29raWVNYXhpbXVtQWdlOiBAIjEwMDAwIiwKKyAg
ICB9XTsKKworICAgIFtodHRwQ29va2llU3RvcmFnZSBzZXRDb29raWU6Y29va2llMS5nZXQoKV07
CisgICAgW2h0dHBDb29raWVTdG9yYWdlIHNldENvb2tpZTpjb29raWUyLmdldCgpXTsKKworICAg
IFtodHRwQ29va2llU3RvcmFnZSBjb29raWVzV2l0aENvbXBsZXRpb25IYW5kbGVyOltjb29raWVz
UHRyID0gJmNvb2tpZXNdKE5TQXJyYXk8TlNIVFRQQ29va2llICo+ICpjb29raWVzKSB7CisgICAg
ICAgICpjb29raWVzUHRyID0gY29va2llczsKKyAgICAgICAgZ290Q29va2llcyA9IHRydWU7Cisg
ICAgfV07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmdvdENvb2tpZXMpOworCisg
ICAgQVNTRVJUX0VRKGNvb2tpZXMuZ2V0KCkuY291bnQsIDIpOworCisgICAgZm9yIChOU0hUVFBD
b29raWUgKmNvb2tpZSA6IGNvb2tpZXMuZ2V0KCkpIHsKKyAgICAgICAgaWYgKFtjb29raWUubmFt
ZSBpc0VxdWFsOkAiQ29va2llTmFtZSJdKSB7CisgICAgICAgICAgICBBU1NFUlRfRVEoY29va2ll
MS5nZXQoKS5wYXRoLCBAIi8iKTsKKyAgICAgICAgICAgIEFTU0VSVF9FUShjb29raWUxLmdldCgp
LnZhbHVlLCBAIkNvb2tpZVZhbHVlIik7CisgICAgICAgICAgICBBU1NFUlRfRVEoY29va2llMS5n
ZXQoKS5kb21haW4sIEAiLnd3dy53ZWJraXQub3JnIik7CisgICAgICAgICAgICBBU1NFUlRfVFJV
RShjb29raWUxLmdldCgpLnNlY3VyZSk7CisgICAgICAgICAgICBBU1NFUlRfVFJVRShjb29raWUx
LmdldCgpLnNlc3Npb25Pbmx5KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIEFTU0VS
VF9FUShjb29raWUyLmdldCgpLnBhdGgsIEAiL3BhdGgiKTsKKyAgICAgICAgICAgIEFTU0VSVF9F
UShjb29raWUyLmdldCgpLm5hbWUsIEAiT3RoZXJDb29raWVOYW1lIik7CisgICAgICAgICAgICBB
U1NFUlRfRVEoY29va2llMi5nZXQoKS52YWx1ZSwgQCJPdGhlckNvb2tpZVZhbHVlIik7CisgICAg
ICAgICAgICBBU1NFUlRfRVEoY29va2llMi5nZXQoKS5kb21haW4sIEAiLnd3dy53M2Mub3JnIik7
CisgICAgICAgICAgICBBU1NFUlRfRkFMU0UoY29va2llMi5nZXQoKS5zZWN1cmUpOworICAgICAg
ICAgICAgQVNTRVJUX0ZBTFNFKGNvb2tpZTIuZ2V0KCkuc2Vzc2lvbk9ubHkpOworICAgICAgICB9
CisgICAgfQorfQorCisjZW5kaWYKKworI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>304213</attachid>
            <date>2017-03-12 18:57:52 -0700</date>
            <delta_ts>2017-03-13 00:45:48 -0700</delta_ts>
            <desc>Not for review - Initial EWS run</desc>
            <filename>p1</filename>
            <type>text/plain</type>
            <size>72069</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nvb2tpZS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vQ29va2llLmgKaW5kZXggZTQ3ZTdiYmZmNWIuLjVkZGI5MzU0Y2U4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db29raWUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9Db29raWUuaApAQCAtNTgsNyArNTgsNyBAQCBzdHJ1Y3QgQ29va2ll
IHsKIAogI2lmZGVmIF9fT0JKQ19fCiAgICAgV0VCQ09SRV9FWFBPUlQgQ29va2llKE5TSFRUUENv
b2tpZSAqKTsKLSAgICBvcGVyYXRvciBOU0hUVFBDb29raWUgKigpIGNvbnN0OworICAgIFdFQkNP
UkVfRVhQT1JUIG9wZXJhdG9yIE5TSFRUUENvb2tpZSAqKCkgY29uc3Q7CiAjZW5kaWYKIAogICAg
IFN0cmluZyBuYW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgKaW5kZXggZjE0ODljNmI0MmEuLjdlNWJjZTY0ZmY4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9y
YWdlU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29y
a1N0b3JhZ2VTZXNzaW9uLmgKQEAgLTEwMSw2ICsxMDEsOSBAQCBwdWJsaWM6CiAjZW5kaWYKIAog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q29va2llcyhjb25zdCBWZWN0b3I8Q29va2llPiYs
IGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgbWFpbkRvY3VtZW50VVJMKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBDb29raWUmKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBWZWN0b3I8Q29va2llPiBnZXRBbGxDb29raWVzKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgVmVj
dG9yPENvb2tpZT4gZ2V0Q29va2llcyhjb25zdCBVUkwmKTsKIAogcHJpdmF0ZToKICAgICBzdGF0
aWMgSGFzaE1hcDxTZXNzaW9uSUQsIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrU3RvcmFnZVNlc3Np
b24+PiYgZ2xvYmFsU2Vzc2lvbk1hcCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29j
b2EubW0KaW5kZXggNDRhZWFiNzBlOTkuLmYzYjg0ZDE5ZmE0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29h
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0
b3JhZ2VTZXNzaW9uQ29jb2EubW0KQEAgLTQzLDYgKzQzLDMxIEBAIHZvaWQgTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpzZXRDb29raWVzKGNvbnN0IFZlY3RvcjxDb29raWU+JiBjb29raWVzLCBjb25z
dCBVUkwmCiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIH0KIAordm9pZCBOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OmRlbGV0ZUNvb2tpZShjb25zdCBDb29raWUmIGNvb2tpZSkKK3sKKyAg
ICBbbnNDb29raWVTdG9yYWdlKCkgZGVsZXRlQ29va2llOihOU0hUVFBDb29raWUgKiljb29raWVd
OworfQorCitzdGF0aWMgVmVjdG9yPENvb2tpZT4gbnNDb29raWVzVG9Db29raWVWZWN0b3IoTlNB
cnJheTxOU0hUVFBDb29raWUgKj4gKm5zQ29va2llcykKK3sKKyAgICBWZWN0b3I8Q29va2llPiBj
b29raWVzOworICAgIGNvb2tpZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShuc0Nvb2tpZXMuY291
bnQpOworICAgIGZvciAoTlNIVFRQQ29va2llICpuc0Nvb2tpZSBpbiBuc0Nvb2tpZXMpCisgICAg
ICAgIGNvb2tpZXMudW5jaGVja2VkQXBwZW5kKG5zQ29va2llKTsKKworICAgIHJldHVybiBjb29r
aWVzOworfQorCitWZWN0b3I8Q29va2llPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmdldEFsbENv
b2tpZXMoKQoreworICAgIHJldHVybiBuc0Nvb2tpZXNUb0Nvb2tpZVZlY3Rvcihuc0Nvb2tpZVN0
b3JhZ2UoKS5jb29raWVzKTsKK30KKworVmVjdG9yPENvb2tpZT4gTmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpnZXRDb29raWVzKGNvbnN0IFVSTCYgdXJsKQoreworICAgIHJldHVybiBuc0Nvb2tpZXNU
b0Nvb2tpZVZlY3RvcihbbnNDb29raWVTdG9yYWdlKCkgY29va2llc0ZvclVSTDooTlNVUkwgKil1
cmxdKTsKK30KKwogTlNIVFRQQ29va2llU3RvcmFnZSAqTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpu
c0Nvb2tpZVN0b3JhZ2UoKSBjb25zdAogewogICAgIGF1dG8gY2ZDb29raWVTdG9yYWdlID0gY29v
a2llU3RvcmFnZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lvblNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lvblNvdXAuY3BwCmluZGV4IDI0
OWJkODJiZDc0Li4zNmVmOWZlY2IzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lvblNvdXAuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3Vw
LmNwcApAQCAtMzA0LDYgKzMwNCwyMCBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0
Q29va2llcyhjb25zdCBWZWN0b3I8Q29va2llPiYgY29va2llcywgY29uc3QgVVJMJgogICAgICAg
ICBzb3VwX2Nvb2tpZV9qYXJfYWRkX2Nvb2tpZShjb29raWVTdG9yYWdlKCksIHRvU291cENvb2tp
ZShjb29raWUpKTsKIH0KIAordm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlbGV0ZUNvb2tp
ZShjb25zdCBDb29raWUmKQoreworCS8vIEZJWE1FOiBJbXBsZW1lbnQgZm9yIFdLMiB0byB1c2Uu
Cit9CisKK1ZlY3RvcjxDb29raWU+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0QWxsQ29va2ll
cygpCit7CisJLy8gRklYTUU6IEltcGxlbWVudCBmb3IgV0syIHRvIHVzZS4KK30KKworVmVjdG9y
PENvb2tpZT4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpnZXRDb29raWVzKGNvbnN0IFVSTCYpCit7
CisJLy8gRklYTUU6IEltcGxlbWVudCBmb3IgV0syIHRvIHVzZS4KK30KIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dCBi
L1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0CmluZGV4IDgxZmY4ZGE4MTEyLi4xMWRlN2Fh
ZGU5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKKysrIGIvU291
cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKQEAgLTMzNiw2ICszMzYsNyBAQCBzZXQoV2ViS2l0
Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNzL0FQSS9BUElDb250ZW50RXh0ZW5zaW9uU3RvcmUuY3Bw
CiAgICAgVUlQcm9jZXNzL0FQSS9BUElFeHBlcmltZW50YWxGZWF0dXJlLmNwcAogICAgIFVJUHJv
Y2Vzcy9BUEkvQVBJRnJhbWVJbmZvLmNwcAorICAgIFVJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tp
ZVN0b3JhZ2UuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9BUElIaXRUZXN0UmVzdWx0LmNwcAogICAg
IFVJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbi5jcHAKICAgICBVSVByb2Nlc3MvQVBJL0FQSU5h
dmlnYXRpb25EYXRhLmNwcApAQCAtNDQ0LDYgKzQ0NSw3IEBAIHNldChXZWJLaXQyX1NPVVJDRVMK
ICAgICBVSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXIuY3BwCiAg
ICAgVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmNw
cAogCisgICAgVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYkNvb2tpZVN0b3JhZ2UuY3BwCiAgICAg
VUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhUmVjb3JkLmNwcAogICAgIFVJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvQVBJL0FQSU9iamVjdC5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQ
SS9BUElPYmplY3QuaAppbmRleCBhZTBmYzk5ODViZC4uNDZmMjc5MWRkZmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvQVBJT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYktp
dDIvU2hhcmVkL0FQSS9BUElPYmplY3QuaApAQCAtMTE2LDYgKzExNiw3IEBAIHB1YmxpYzoKICAg
ICAgICAgRnVsbFNjcmVlbk1hbmFnZXIsCiAgICAgICAgIEdlb2xvY2F0aW9uTWFuYWdlciwKICAg
ICAgICAgR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdCwKKyAgICAgICAgSFRUUENvb2tpZVN0
b3JhZ2UsCiAgICAgICAgIEhpdFRlc3RSZXN1bHQsCiAgICAgICAgIEdlb2xvY2F0aW9uUG9zaXRp
b24sCiAgICAgICAgIEdyYW1tYXJEZXRhaWwsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvQ29jb2EvQVBJT2JqZWN0Lm1tIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0NvY29hL0FQ
SU9iamVjdC5tbQppbmRleCAxMTYzMjQ1NDIwYy4uYzcyMTc2MjkzY2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9Db2NvYS9BUElPYmplY3QubW0KKysrIGIvU291cmNlL1dlYktp
dDIvU2hhcmVkL0NvY29hL0FQSU9iamVjdC5tbQpAQCAtNzEsNiArNzEsNyBAQAogI2ltcG9ydCAi
X1dLRG93bmxvYWRJbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLRXhwZXJpbWVudGFsRmVhdHVyZUlu
dGVybmFsLmgiCiAjaW1wb3J0ICJfV0tGcmFtZUhhbmRsZUludGVybmFsLmgiCisjaW1wb3J0ICJf
V0tIVFRQQ29va2llU3RvcmFnZUludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tIaXRUZXN0UmVzdWx0
SW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbkludGVybmFs
LmgiCiAjaW1wb3J0ICJfV0tVc2VyQ29udGVudFdvcmxkSW50ZXJuYWwuaCIKQEAgLTE3OCw2ICsx
NzksMTAgQEAgdm9pZCogT2JqZWN0OjpuZXdPYmplY3Qoc2l6ZV90IHNpemUsIFR5cGUgdHlwZSkK
ICAgICAgICAgd3JhcHBlciA9IFtXS0ZyYW1lSW5mbyBhbGxvY107CiAgICAgICAgIGJyZWFrOwog
CisgICAgY2FzZSBUeXBlOjpIVFRQQ29va2llU3RvcmFnZToKKyAgICAgICAgd3JhcHBlciA9IFtf
V0tIVFRQQ29va2llU3RvcmFnZSBhbGxvY107CisgICAgICAgIGJyZWFrOworCiAjaWYgUExBVEZP
Uk0oTUFDKQogICAgIGNhc2UgVHlwZTo6SGl0VGVzdFJlc3VsdDoKICAgICAgICAgd3JhcHBlciA9
IFtfV0tIaXRUZXN0UmVzdWx0IGFsbG9jXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9BUElIVFRQQ29va2llU3RvcmFnZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAuLjRkMzA1ZDE5OTMyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElIVFRQQ29va2llU3RvcmFnZS5jcHAKQEAgLTAsMCAr
MSwxMDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQVBJ
SFRUUENvb2tpZVN0b3JhZ2UuaCIKKworI2luY2x1ZGUgIldlYkNvb2tpZVN0b3JhZ2UuaCIKKwor
dXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKworbmFtZXNwYWNlIEFQSSB7CisKK0hUVFBDb29raWVT
dG9yYWdlOjpIVFRQQ29va2llU3RvcmFnZShXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQor
ICAgIDogbV93ZWJDb29raWVTdG9yYWdlKFdlYkNvb2tpZVN0b3JhZ2U6OmNyZWF0ZShzZXNzaW9u
SUQpKQoreworfQorCitIVFRQQ29va2llU3RvcmFnZTo6fkhUVFBDb29raWVTdG9yYWdlKCkKK3sK
K30KKwordm9pZCBIVFRQQ29va2llU3RvcmFnZTo6Y29va2llcyhGdW5jdGlvbjx2b2lkIChjb25z
dCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAg
IG1fd2ViQ29va2llU3RvcmFnZS0+Y29va2llcyhbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKV0oY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mIGNvb2tp
ZXMsIENhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoY29va2llcyk7CisgICAgfSk7Cit9CisKK3ZvaWQgSFRUUENvb2tpZVN0b3JhZ2U6OmNvb2tp
ZXMoY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwsIEZ1bmN0aW9uPHZvaWQgKGNvbnN0IFZlY3RvcjxX
ZWJDb3JlOjpDb29raWU+Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgbV93ZWJDb29r
aWVTdG9yYWdlLT5jb29raWVzKHVybCwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcildKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiBjb29raWVzLCBD
YWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGNv
b2tpZXMpOworICAgIH0pOworfQorCit2b2lkIEhUVFBDb29raWVTdG9yYWdlOjpzZXRDb29raWUo
Y29uc3QgV2ViQ29yZTo6Q29va2llJiBjb29raWUsIEZ1bmN0aW9uPHZvaWQgKCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCit7CisgICAgbV93ZWJDb29raWVTdG9yYWdlLT5zZXRDb29raWUoY29va2ll
LCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oQ2FsbGJh
Y2tCYXNlOjpFcnJvciBlcnJvcikgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAg
IH0pOworfQorCit2b2lkIEhUVFBDb29raWVTdG9yYWdlOjpzZXRDb29raWVzKGNvbnN0IFZlY3Rv
cjxXZWJDb3JlOjpDb29raWU+JiBjb29raWVzLCBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCwgY29u
c3QgV2ViQ29yZTo6VVJMJiBtYWluRG9jdW1lbnRVUkwsIEZ1bmN0aW9uPHZvaWQgKCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCit7CisgICAgbV93ZWJDb29raWVTdG9yYWdlLT5zZXRDb29raWVzKGNv
b2tpZXMsIHVybCwgbWFpbkRvY3VtZW50VVJMLCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKV0oQ2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcikgeworICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcigpOworICAgIH0pOworfQorCit2b2lkIEhUVFBDb29raWVTdG9y
YWdlOjpkZWxldGVDb29raWUoY29uc3QgV2ViQ29yZTo6Q29va2llJiBjb29raWUsIEZ1bmN0aW9u
PHZvaWQgKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgbV93ZWJDb29raWVTdG9yYWdl
LT5kZWxldGVDb29raWUoY29va2llLCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKV0oQ2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcikgeworICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcigpOworICAgIH0pOworfQorCit2b2lkIEhUVFBDb29raWVTdG9yYWdlOjpy
ZW1vdmVDb29raWVzU2luY2VEYXRlKHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9p
bnQgZGF0ZSwgRnVuY3Rpb248dm9pZCAoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBt
X3dlYkNvb2tpZVN0b3JhZ2UtPnJlbW92ZUNvb2tpZXNTaW5jZURhdGUoZGF0ZSwgW2NvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKENhbGxiYWNrQmFzZTo6RXJy
b3IgZXJyb3IpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICB9KTsKK30KKwor
dm9pZCBIVFRQQ29va2llU3RvcmFnZTo6c2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShIVFRQQ29v
a2llQWNjZXB0UG9saWN5IHBvbGljeSwgRnVuY3Rpb248dm9pZCAoKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKK3sKKyAgICBtX3dlYkNvb2tpZVN0b3JhZ2UtPnNldEhUVFBDb29raWVBY2NlcHRQb2xp
Y3kocG9saWN5LCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KV0oQ2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcikgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cigpOworICAgIH0pOworfQorCit2b2lkIEhUVFBDb29raWVTdG9yYWdlOjpnZXRIVFRQQ29va2ll
QWNjZXB0UG9saWN5KEZ1bmN0aW9uPHZvaWQgKEhUVFBDb29raWVBY2NlcHRQb2xpY3kpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQoreworICAgIG1fd2ViQ29va2llU3RvcmFnZS0+Z2V0SFRUUENvb2tp
ZUFjY2VwdFBvbGljeShbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKV0oSFRUUENvb2tpZUFjY2VwdFBvbGljeSBwb2xpY3ksIENhbGxiYWNrQmFzZTo6RXJyb3Ig
ZXJyb3IpIHsKKyAgICAgICAgaWYgKGVycm9yICE9IENhbGxiYWNrQmFzZTo6RXJyb3I6Ok5vbmUp
CisgICAgICAgICAgICBwb2xpY3kgPSBIVFRQQ29va2llQWNjZXB0UG9saWN5TmV2ZXI7CisKKyAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIocG9saWN5KTsKKyAgICB9KTsKK30KKworfSAvLyBuYW1l
c3BhY2UgQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSUhU
VFBDb29raWVTdG9yYWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSUhUVFBD
b29raWVTdG9yYWdlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjZh
NTZjMmU0ZGYwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9BUElIVFRQQ29va2llU3RvcmFnZS5oCkBAIC0wLDAgKzEsNzQgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkFQSU9iamVjdC5oIgorI2luY2x1ZGUgIkhUVFBDb29r
aWVBY2NlcHRQb2xpY3kuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1Nlc3Npb25JRC5oPgorI2luY2x1
ZGUgPHd0Zi9GdW5jdGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworY2xhc3MgVVJMOworc3RydWN0IENvb2tpZTsKK30KKworbmFtZXNwYWNlIFdl
YktpdCB7CitjbGFzcyBXZWJDb29raWVTdG9yYWdlOworfTsKKworbmFtZXNwYWNlIEFQSSB7CisK
K2NsYXNzIFdlYnNpdGVEYXRhU3RvcmU7CisKK2NsYXNzIEhUVFBDb29raWVTdG9yYWdlIGZpbmFs
IDogcHVibGljIE9iamVjdEltcGw8T2JqZWN0OjpUeXBlOjpIVFRQQ29va2llU3RvcmFnZT4gewor
cHVibGljOgorICAgIHN0YXRpYyBSZWY8SFRUUENvb2tpZVN0b3JhZ2U+IGNyZWF0ZShXZWJDb3Jl
OjpTZXNzaW9uSUQgc2Vzc2lvbklEKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgSFRUUENvb2tpZVN0b3JhZ2Uoc2Vzc2lvbklEKSk7CisgICAgfQorCisgICAgdmlydHVhbCB+
SFRUUENvb2tpZVN0b3JhZ2UoKTsKKworICAgIHZvaWQgY29va2llcyhGdW5jdGlvbjx2b2lkIChj
b25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKKyAg
ICB2b2lkIGNvb2tpZXMoY29uc3QgV2ViQ29yZTo6VVJMJiwgRnVuY3Rpb248dm9pZCAoY29uc3Qg
VmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7CisKKyAgICB2
b2lkIHNldENvb2tpZShjb25zdCBXZWJDb3JlOjpDb29raWUmLCBGdW5jdGlvbjx2b2lkICgpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICB2b2lkIHNldENvb2tpZXMoY29uc3QgVmVjdG9yPFdl
YkNvcmU6OkNvb2tpZT4mLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXZWJDb3JlOjpVUkwm
IG1haW5Eb2N1bWVudFVSTCwgRnVuY3Rpb248dm9pZCAoKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7
CisgICAgdm9pZCBkZWxldGVDb29raWUoY29uc3QgV2ViQ29yZTo6Q29va2llJiwgRnVuY3Rpb248
dm9pZCAoKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7CisKKyAgICB2b2lkIHJlbW92ZUNvb2tpZXNT
aW5jZURhdGUoc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCwgRnVuY3Rpb248
dm9pZCAoKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7CisKKyAgICB2b2lkIHNldEhUVFBDb29raWVB
Y2NlcHRQb2xpY3koV2ViS2l0OjpIVFRQQ29va2llQWNjZXB0UG9saWN5LCBGdW5jdGlvbjx2b2lk
ICgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICB2b2lkIGdldEhUVFBDb29raWVBY2NlcHRQ
b2xpY3koRnVuY3Rpb248dm9pZCAoV2ViS2l0OjpIVFRQQ29va2llQWNjZXB0UG9saWN5KT4mJiBj
b21wbGV0aW9uSGFuZGxlcik7CisgICAgCitwcml2YXRlOgorICAgIEhUVFBDb29raWVTdG9yYWdl
KFdlYkNvcmU6OlNlc3Npb25JRCk7CisKKyAgICBSZWY8V2ViS2l0OjpXZWJDb29raWVTdG9yYWdl
PiBtX3dlYkNvb2tpZVN0b3JhZ2U7Cit9OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmNwcAppbmRleCA1Yzc4Y2NkN2FlMi4u
OTA2YmQwZGY2MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJ
V2Vic2l0ZURhdGFTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9B
UElXZWJzaXRlRGF0YVN0b3JlLmNwcApAQCAtNjQsNiArNjQsMTQgQEAgV2Vic2l0ZURhdGFTdG9y
ZTo6fldlYnNpdGVEYXRhU3RvcmUoKQogewogfQogCitIVFRQQ29va2llU3RvcmFnZSYgV2Vic2l0
ZURhdGFTdG9yZTo6aHR0cENvb2tpZVN0b3JhZ2UoKQoreworICAgIGlmICghbV9hcGlIVFRQQ29v
a2llU3RvcmFnZSkKKyAgICAgICAgbV9hcGlIVFRQQ29va2llU3RvcmFnZSA9IEhUVFBDb29raWVT
dG9yYWdlOjpjcmVhdGUod2Vic2l0ZURhdGFTdG9yZSgpLnNlc3Npb25JRCgpKTsKKworICAgIHJl
dHVybiAqbV9hcGlIVFRQQ29va2llU3RvcmFnZTsKK30KKwogYm9vbCBXZWJzaXRlRGF0YVN0b3Jl
Ojppc1BlcnNpc3RlbnQoKQogewogICAgIHJldHVybiBtX3dlYnNpdGVEYXRhU3RvcmUtPmlzUGVy
c2lzdGVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElX
ZWJzaXRlRGF0YVN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVdlYnNp
dGVEYXRhU3RvcmUuaAppbmRleCAyNjdkNjljMzM4NC4uYWEwMWNjMzhiNGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5oCkBAIC0y
Niw3ICsyNiw3IEBACiAjaWZuZGVmIEFQSVdlYnNpdGVEYXRhU3RvcmVfaAogI2RlZmluZSBBUElX
ZWJzaXRlRGF0YVN0b3JlX2gKIAotI2luY2x1ZGUgIkFQSU9iamVjdC5oIgorI2luY2x1ZGUgIkFQ
SUhUVFBDb29raWVTdG9yYWdlLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZS5oIgogI2lu
Y2x1ZGUgPFdlYkNvcmUvU2Vzc2lvbklELmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CkBAIC00OSw2ICs0OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlZ2lzdGVyU2hhcmVkUmVz
b3VyY2VMb2FkT2JzZXJ2ZXIoKTsKIAogICAgIFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZSYgd2Vi
c2l0ZURhdGFTdG9yZSgpIHsgcmV0dXJuICptX3dlYnNpdGVEYXRhU3RvcmU7IH0KKyAgICBIVFRQ
Q29va2llU3RvcmFnZSYgaHR0cENvb2tpZVN0b3JhZ2UoKTsKIAogICAgIHN0YXRpYyBTdHJpbmcg
ZGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKTsKICAgICBzdGF0aWMgU3RyaW5nIGRl
ZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKTsKQEAgLTcwLDYgKzcxLDcgQEAgcHJpdmF0ZToK
ICAgICBzdGF0aWMgU3RyaW5nIHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5TmFtZSk7CiAKICAgICBSZWZQdHI8V2ViS2l0
OjpXZWJzaXRlRGF0YVN0b3JlPiBtX3dlYnNpdGVEYXRhU3RvcmU7CisgICAgUmVmUHRyPEhUVFBD
b29raWVTdG9yYWdlPiBtX2FwaUhUVFBDb29raWVTdG9yYWdlOwogfTsKIAogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29va2llTWFuYWdlci5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb29raWVNYW5hZ2VyLmNwcAppbmRleCAy
NzhlODNjNTFlMC4uODBhYzhhODYyNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQy9XS0Nvb2tpZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQy9XS0Nvb2tpZU1hbmFnZXIuY3BwCkBAIC02MSwxNyArNjEsMTcgQEAgdm9pZCBX
S0Nvb2tpZU1hbmFnZXJEZWxldGVBbGxDb29raWVzTW9kaWZpZWRBZnRlckRhdGUoV0tDb29raWVN
YW5hZ2VyUmVmIGNvb2tpZU0KICAgICB1c2luZyBuYW1lc3BhY2Ugc3RkOjpjaHJvbm87CiAKICAg
ICBhdXRvIHRpbWUgPSBzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQoZHVyYXRpb25fY2FzdDxzeXN0
ZW1fY2xvY2s6OmR1cmF0aW9uPihkdXJhdGlvbjxkb3VibGU+KGRhdGUpKSk7Ci0gICAgdG9JbXBs
KGNvb2tpZU1hbmFnZXJSZWYpLT5kZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZShXZWJDb3Jl
OjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSwgdGltZSk7CisgICAgdG9JbXBsKGNvb2tp
ZU1hbmFnZXJSZWYpLT5kZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZShXZWJDb3JlOjpTZXNz
aW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSwgdGltZSwgW10oQ2FsbGJhY2tCYXNlOjpFcnJvcil7
fSk7CiB9CiAKIHZvaWQgV0tDb29raWVNYW5hZ2VyU2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShX
S0Nvb2tpZU1hbmFnZXJSZWYgY29va2llTWFuYWdlciwgV0tIVFRQQ29va2llQWNjZXB0UG9saWN5
IHBvbGljeSkKIHsKLSAgICB0b0ltcGwoY29va2llTWFuYWdlciktPnNldEhUVFBDb29raWVBY2Nl
cHRQb2xpY3kodG9IVFRQQ29va2llQWNjZXB0UG9saWN5KHBvbGljeSkpOworICAgIHRvSW1wbChj
b29raWVNYW5hZ2VyKS0+c2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShXZWJDb3JlOjpTZXNzaW9u
SUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSwgdG9IVFRQQ29va2llQWNjZXB0UG9saWN5KHBvbGljeSks
IFtdKENhbGxiYWNrQmFzZTo6RXJyb3Ipe30pOwogfQogCiB2b2lkIFdLQ29va2llTWFuYWdlckdl
dEhUVFBDb29raWVBY2NlcHRQb2xpY3koV0tDb29raWVNYW5hZ2VyUmVmIGNvb2tpZU1hbmFnZXIs
IHZvaWQqIGNvbnRleHQsIFdLQ29va2llTWFuYWdlckdldEhUVFBDb29raWVBY2NlcHRQb2xpY3lG
dW5jdGlvbiBjYWxsYmFjaykKIHsKLSAgICB0b0ltcGwoY29va2llTWFuYWdlciktPmdldEhUVFBD
b29raWVBY2NlcHRQb2xpY3kodG9HZW5lcmljQ2FsbGJhY2tGdW5jdGlvbjxXS0hUVFBDb29raWVB
Y2NlcHRQb2xpY3ksIEhUVFBDb29raWVBY2NlcHRQb2xpY3k+KGNvbnRleHQsIGNhbGxiYWNrKSk7
CisgICAgdG9JbXBsKGNvb2tpZU1hbmFnZXIpLT5nZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KFdl
YkNvcmU6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpLCB0b0dlbmVyaWNDYWxsYmFja0Z1
bmN0aW9uPFdLSFRUUENvb2tpZUFjY2VwdFBvbGljeSwgSFRUUENvb2tpZUFjY2VwdFBvbGljeT4o
Y29udGV4dCwgY2FsbGJhY2spKTsKIH0KIAogdm9pZCBXS0Nvb2tpZU1hbmFnZXJTZXRDb29raWVT
dG9yYWdlUGFydGl0aW9uaW5nRW5hYmxlZChXS0Nvb2tpZU1hbmFnZXJSZWYgY29va2llTWFuYWdl
ciwgYm9vbCBlbmFibGVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1Byb2Nlc3NQb29sLm1tCmluZGV4IDNmNDNiZmM2NWRkLi44Zjg3ZGFjZTgyNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29s
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9v
bC5tbQpAQCAtMTk2LDcgKzE5Niw3IEBAIHN0YXRpYyBXZWJLaXQ6OkhUVFBDb29raWVBY2NlcHRQ
b2xpY3kgdG9IVFRQQ29va2llQWNjZXB0UG9saWN5KE5TSFRUUENvb2tpZUFjY2VwCiAKIC0gKHZv
aWQpX3NldENvb2tpZUFjY2VwdFBvbGljeTooTlNIVFRQQ29va2llQWNjZXB0UG9saWN5KXBvbGlj
eQogewotICAgIF9wcm9jZXNzUG9vbC0+c3VwcGxlbWVudDxXZWJLaXQ6OldlYkNvb2tpZU1hbmFn
ZXJQcm94eT4oKS0+c2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSh0b0hUVFBDb29raWVBY2NlcHRQ
b2xpY3kocG9saWN5KSk7CisgICAgX3Byb2Nlc3NQb29sLT5zdXBwbGVtZW50PFdlYktpdDo6V2Vi
Q29va2llTWFuYWdlclByb3h5PigpLT5zZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KFdlYkNvcmU6
OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpLCB0b0hUVFBDb29raWVBY2NlcHRQb2xpY3ko
cG9saWN5KSwgW10oV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yKXt9KTsKIH0KIAogLSAoaWQp
X29iamVjdEZvckJ1bmRsZVBhcmFtZXRlcjooTlNTdHJpbmcgKilwYXJhbWV0ZXIKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5o
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgK
aW5kZXggNjg3MzFmNGUxNzMuLjZlNGRmZTZkNjQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaApAQCAtNjEsNiArNjEs
NyBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBfV0tJbW1lZGlhdGVBY3Rpb25UeXBlKSB7
CiBAY2xhc3MgQVZGdW5jdGlvbkJhclNjcnViYmVyOwogQGNsYXNzIFdLQnJvd3NpbmdDb250ZXh0
SGFuZGxlOwogQGNsYXNzIF9XS0ZyYW1lSGFuZGxlOworQGNsYXNzIF9XS0hUVFBDb29raWVTdG9y
YWdlOwogQGNsYXNzIF9XS0hpdFRlc3RSZXN1bHQ7CiBAY2xhc3MgX1dLSWNvbkxvYWRpbmdEZWxl
Z2F0ZTsKIEBjbGFzcyBfV0tSZW1vdGVPYmplY3RSZWdpc3RyeTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KaW5k
ZXggNzEzODE5ZTQ3NDAuLjlkYTAzODEyYWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQpAQCAtMzEsNiAr
MzEsNyBAQAogI2ltcG9ydCAiV0tOU0FycmF5LmgiCiAjaW1wb3J0ICJXS1dlYnNpdGVEYXRhUmVj
b3JkSW50ZXJuYWwuaCIKICNpbXBvcnQgIldlYnNpdGVEYXRhRmV0Y2hPcHRpb24uaCIKKyNpbXBv
cnQgIl9XS0hUVFBDb29raWVTdG9yYWdlSW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS1dlYnNpdGVE
YXRhU3RvcmVDb25maWd1cmF0aW9uLmgiCiAjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KIApAQCAt
MTk0LDYgKzE5NSwxMSBAQCAtICh2b2lkKV9zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxl
ZDooQk9PTCllbmFibGVkCiAgICAgX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUo
KS5zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChlbmFibGVkKTsKIH0KIAorLSAoX1dL
SFRUUENvb2tpZVN0b3JhZ2UgKilfaHR0cENvb2tpZVN0b3JhZ2UKK3sKKyAgICByZXR1cm4gV2Vi
S2l0Ojp3cmFwcGVyKF93ZWJzaXRlRGF0YVN0b3JlLT5odHRwQ29va2llU3RvcmFnZSgpKTsKK30K
KwogQGVuZAogCiAjZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2
YXRlLmgKaW5kZXggNDlkOWJlNmFkMTEuLmZjMThiZTI4MzlhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9y
ZVByaXZhdGUuaApAQCAtMjksNiArMjksNyBAQAogCiBOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgog
CitAY2xhc3MgX1dLSFRUUENvb2tpZVN0b3JhZ2U7CiBAY2xhc3MgX1dLV2Vic2l0ZURhdGFTdG9y
ZUNvbmZpZ3VyYXRpb247CiAKIHR5cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRlZ2VyLCBfV0tXZWJz
aXRlRGF0YVN0b3JlRmV0Y2hPcHRpb25zKSB7CkBAIC00Myw2ICs0NCw4IEBAIHR5cGVkZWYgTlNf
T1BUSU9OUyhOU1VJbnRlZ2VyLCBfV0tXZWJzaXRlRGF0YVN0b3JlRmV0Y2hPcHRpb25zKSB7CiAK
IEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldFJlc291cmNlTG9hZFN0YXRpc3RpY3NF
bmFibGVkOikgQk9PTCBfcmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQgV0tfQVBJX0FWQUlM
QUJMRShtYWNvc3goMTAuMTIpLCBpb3MoMTAuMCkpOwogCitAcHJvcGVydHkgKG5vbmF0b21pYywg
cmVhZG9ubHkpIF9XS0hUVFBDb29raWVTdG9yYWdlICpfaHR0cENvb2tpZVN0b3JhZ2UgV0tfQVBJ
X0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CisKIEBlbmQK
IAogTlNfQVNTVU1FX05PTk5VTExfRU5ECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0NvY29hL19XS0hUVFBDb29raWVTdG9yYWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0NvY29hL19XS0hUVFBDb29raWVTdG9yYWdlLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjZjZWRiOTk5M2RiCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tIVFRQQ29va2llU3RvcmFnZS5o
CkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0IDxXZWJLaXQvV0tGb3VuZGF0
aW9uLmg+CisKKyNpZiBXS19BUElfRU5BQkxFRAorCisjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5k
YXRpb24uaD4KKworV0tfQ0xBU1NfQVZBSUxBQkxFKFdLX01BQ19UQkEsIFdLX0lPU19UQkEpCitA
aW50ZXJmYWNlIF9XS0hUVFBDb29raWVTdG9yYWdlIDogTlNPYmplY3QKKworLSAodm9pZClmZXRj
aENvb2tpZXM6KG5vbm51bGwgdm9pZCAoXikoTlNBcnJheTxOU0hUVFBDb29raWUgKj4gKl9OdWxs
YWJsZSkpY29tcGxldGlvbkhhbmRsZXI7CistICh2b2lkKWZldGNoQ29va2llc0ZvclVSTDoobm9u
bnVsbCBOU1VSTCAqKXVybCBjb21wbGV0aW9uSGFuZGxlcjoobm9ubnVsbCB2b2lkICheKShOU0Fy
cmF5PE5TSFRUUENvb2tpZSAqPiAqX051bGxhYmxlKSljb21wbGV0aW9uSGFuZGxlcjsKKworLSAo
dm9pZClzZXRDb29raWU6KG5vbm51bGwgTlNIVFRQQ29va2llICopY29va2llIGNvbXBsZXRpb25I
YW5kbGVyOihub25udWxsIHZvaWQgKF4pKCkpY29tcGxldGlvbkhhbmRsZXI7CistICh2b2lkKXNl
dENvb2tpZXM6KG5vbm51bGwgTlNBcnJheTxOU0hUVFBDb29raWUgKj4gKiljb29raWVzIGZvclVS
TDoobnVsbGFibGUgTlNVUkwgKil1cmwgbWFpbkRvY3VtZW50VVJMOihudWxsYWJsZSBOU1VSTCAq
KW1haW5Eb2N1bWVudFVSTCBjb21wbGV0aW9uSGFuZGxlcjoobm9ubnVsbCB2b2lkICheKSgpKWNv
bXBsZXRpb25IYW5kbGVyOworCistICh2b2lkKWRlbGV0ZUNvb2tpZToobm9ubnVsbCBOU0hUVFBD
b29raWUgKiljb29raWUgY29tcGxldGlvbkhhbmRsZXI6KG5vbm51bGwgdm9pZCAoXikoKSljb21w
bGV0aW9uSGFuZGxlcjsKKy0gKHZvaWQpcmVtb3ZlQ29va2llc1NpbmNlRGF0ZToobm9ubnVsbCBO
U0RhdGUgKilkYXRlIGNvbXBsZXRpb25IYW5kbGVyOihub25udWxsIHZvaWQgKF4pKCkpY29tcGxl
dGlvbkhhbmRsZXI7CisKKy0gKHZvaWQpc2V0Q29va2llQWNjZXB0UG9saWN5OihOU0hUVFBDb29r
aWVBY2NlcHRQb2xpY3kpcG9saWN5IGNvbXBsZXRpb25IYW5kbGVyOihub25udWxsIHZvaWQgKF4p
KCkpY29tcGxldGlvbkhhbmRsZXI7CistICh2b2lkKWZldGNoQ29va2llQWNjZXB0UG9saWN5Oihu
b25udWxsIHZvaWQgKF4pKE5TSFRUUENvb2tpZUFjY2VwdFBvbGljeSkpY29tcGxldGlvbkhhbmRs
ZXI7CisKK0BlbmQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS0hUVFBDb29raWVTdG9yYWdlLm1tIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tIVFRQQ29va2llU3RvcmFnZS5tbQpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZDM0ZDllNDQzYTYKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0hUVFBDb29raWVTdG9yYWdlLm1t
CkBAIC0wLDAgKzEsMTU1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1w
b3J0ICJfV0tIVFRQQ29va2llU3RvcmFnZUludGVybmFsLmgiCisKKyNpZiBXS19BUElfRU5BQkxF
RAorCisjaW5jbHVkZSAiSFRUUENvb2tpZUFjY2VwdFBvbGljeS5oIgorI2luY2x1ZGUgPFdlYkNv
cmUvQ0ZOZXR3b3JrU1BJLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Db29raWUuaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL1VSTC5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKworc3RhdGljIE5T
QXJyYXk8TlNIVFRQQ29va2llICo+ICpjb3JlQ29va2llc1RvTlNDb29raWVzKGNvbnN0IFZlY3Rv
cjxXZWJDb3JlOjpDb29raWU+JiBjb3JlQ29va2llcykKK3sKKyAgICBOU011dGFibGVBcnJheTxO
U0hUVFBDb29raWUgKj4gKiBuc0Nvb2tpZXMgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXlXaXRoQ2Fw
YWNpdHk6Y29yZUNvb2tpZXMuc2l6ZSgpXTsKKworICAgIGZvciAoYXV0byYgY29va2llIDogY29y
ZUNvb2tpZXMpCisgICAgICAgIFtuc0Nvb2tpZXMgYWRkT2JqZWN0OihOU0hUVFBDb29raWUqKWNv
b2tpZV07CisKKyAgICByZXR1cm4gbnNDb29raWVzOworfQorCitAaW1wbGVtZW50YXRpb24gX1dL
SFRUUENvb2tpZVN0b3JhZ2UKKworLSAodm9pZClkZWFsbG9jCit7CisgICAgX2Nvb2tpZVN0b3Jh
Z2UtPkFQSTo6SFRUUENvb2tpZVN0b3JhZ2U6On5IVFRQQ29va2llU3RvcmFnZSgpOworCisgICAg
W3N1cGVyIGRlYWxsb2NdOworfQorCistICh2b2lkKWZldGNoQ29va2llczoodm9pZCAoXikoTlNB
cnJheTxOU0hUVFBDb29raWUgKj4gKikpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICBfY29va2ll
U3RvcmFnZS0+Y29va2llcyhbaGFuZGxlciA9IGFkb3B0TlMoW2NvbXBsZXRpb25IYW5kbGVyIGNv
cHldKV0oY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mIGNvb2tpZXMpIHsKKyAgICAgICAg
YXV0byByYXdIYW5kbGVyID0gKHZvaWQgKF4pKE5TQXJyYXk8TlNIVFRQQ29va2llICo+ICopKWhh
bmRsZXIuZ2V0KCk7CisgICAgICAgIHJhd0hhbmRsZXIoY29yZUNvb2tpZXNUb05TQ29va2llcyhj
b29raWVzKSk7CisgICAgfSk7Cit9CisKKy0gKHZvaWQpZmV0Y2hDb29raWVzRm9yVVJMOihOU1VS
TCAqKXVybCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNBcnJheTxOU0hUVFBDb29raWUg
Kj4gKikpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICBfY29va2llU3RvcmFnZS0+Y29va2llcyh1
cmwsIFtoYW5kbGVyID0gYWRvcHROUyhbY29tcGxldGlvbkhhbmRsZXIgY29weV0pXShjb25zdCBW
ZWN0b3I8V2ViQ29yZTo6Q29va2llPiYgY29va2llcykgeworICAgICAgICBhdXRvIHJhd0hhbmRs
ZXIgPSAodm9pZCAoXikoTlNBcnJheTxOU0hUVFBDb29raWUgKj4gKikpaGFuZGxlci5nZXQoKTsK
KyAgICAgICAgcmF3SGFuZGxlcihjb3JlQ29va2llc1RvTlNDb29raWVzKGNvb2tpZXMpKTsKKyAg
ICB9KTsKK30KKworLSAodm9pZClzZXRDb29raWU6KE5TSFRUUENvb2tpZSAqKWNvb2tpZSBjb21w
bGV0aW9uSGFuZGxlcjoodm9pZCAoXikoKSljb21wbGV0aW9uSGFuZGxlcgoreworICAgIF9jb29r
aWVTdG9yYWdlLT5zZXRDb29raWUoY29va2llLCBbaGFuZGxlciA9IGFkb3B0TlMoW2NvbXBsZXRp
b25IYW5kbGVyIGNvcHldKV0oKSB7CisgICAgICAgIGF1dG8gcmF3SGFuZGxlciA9ICh2b2lkIChe
KSgpKWhhbmRsZXIuZ2V0KCk7CisgICAgICAgIHJhd0hhbmRsZXIoKTsKKyAgICB9KTsKKworfQor
CistICh2b2lkKWRlbGV0ZUNvb2tpZTooTlNIVFRQQ29va2llICopY29va2llIGNvbXBsZXRpb25I
YW5kbGVyOih2b2lkICheKSgpKWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAgX2Nvb2tpZVN0b3Jh
Z2UtPmRlbGV0ZUNvb2tpZShjb29raWUsIFtoYW5kbGVyID0gYWRvcHROUyhbY29tcGxldGlvbkhh
bmRsZXIgY29weV0pXSgpIHsKKyAgICAgICAgYXV0byByYXdIYW5kbGVyID0gKHZvaWQgKF4pKCkp
aGFuZGxlci5nZXQoKTsKKyAgICAgICAgcmF3SGFuZGxlcigpOworICAgIH0pOworfQorCistICh2
b2lkKXNldENvb2tpZXM6KE5TQXJyYXk8TlNIVFRQQ29va2llICo+ICopY29va2llcyBmb3JVUkw6
KE5TVVJMICopVVJMIG1haW5Eb2N1bWVudFVSTDooTlNVUkwgKiltYWluRG9jdW1lbnRVUkwgY29t
cGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKCkpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICBWZWN0
b3I8V2ViQ29yZTo6Q29va2llPiBjb3JlQ29va2llczsKKyAgICBjb3JlQ29va2llcy5yZXNlcnZl
SW5pdGlhbENhcGFjaXR5KGNvb2tpZXMuY291bnQpOworICAgIGZvciAoTlNIVFRQQ29va2llICpj
b29raWUgOiBjb29raWVzKQorICAgICAgICBjb3JlQ29va2llcy51bmNoZWNrZWRBcHBlbmQoY29v
a2llKTsKKworICAgIF9jb29raWVTdG9yYWdlLT5zZXRDb29raWVzKGNvcmVDb29raWVzLCBVUkws
IG1haW5Eb2N1bWVudFVSTCwgW2hhbmRsZXIgPSBhZG9wdE5TKFtjb21wbGV0aW9uSGFuZGxlciBj
b3B5XSldKCkgeworICAgICAgICBhdXRvIHJhd0hhbmRsZXIgPSAodm9pZCAoXikoKSloYW5kbGVy
LmdldCgpOworICAgICAgICByYXdIYW5kbGVyKCk7CisgICAgfSk7Cit9CisKKy0gKHZvaWQpcmVt
b3ZlQ29va2llc1NpbmNlRGF0ZTooTlNEYXRlICopZGF0ZSBjb21wbGV0aW9uSGFuZGxlcjoodm9p
ZCAoXikoKSljb21wbGV0aW9uSGFuZGxlcgoreworICAgIGF1dG8gc3lzdGVtQ2xvY2tUaW1lID0g
c3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludChzdGQ6OmNocm9ubzo6ZHVyYXRp
b25fY2FzdDxzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjpkdXJhdGlvbj4oc3RkOjpjaHJvbm86
OmR1cmF0aW9uPGRvdWJsZT4oZGF0ZS50aW1lSW50ZXJ2YWxTaW5jZTE5NzApKSk7CisKKyAgICBf
Y29va2llU3RvcmFnZS0+cmVtb3ZlQ29va2llc1NpbmNlRGF0ZShzeXN0ZW1DbG9ja1RpbWUsIFto
YW5kbGVyID0gYWRvcHROUyhbY29tcGxldGlvbkhhbmRsZXIgY29weV0pXSgpIHsKKyAgICAgICAg
YXV0byByYXdIYW5kbGVyID0gKHZvaWQgKF4pKCkpaGFuZGxlci5nZXQoKTsKKyAgICAgICAgcmF3
SGFuZGxlcigpOworICAgIH0pOworfQorCistICh2b2lkKXNldENvb2tpZUFjY2VwdFBvbGljeToo
TlNIVFRQQ29va2llQWNjZXB0UG9saWN5KXBvbGljeSBjb21wbGV0aW9uSGFuZGxlcjoobm9ubnVs
bCB2b2lkICheKSgpKWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAgX2Nvb2tpZVN0b3JhZ2UtPnNl
dEhUVFBDb29raWVBY2NlcHRQb2xpY3kocG9saWN5LCBbaGFuZGxlciA9IGFkb3B0TlMoW2NvbXBs
ZXRpb25IYW5kbGVyIGNvcHldKV0oKSB7CisgICAgICAgIGF1dG8gcmF3SGFuZGxlciA9ICh2b2lk
ICheKSgpKWhhbmRsZXIuZ2V0KCk7CisgICAgICAgIHJhd0hhbmRsZXIoKTsKKyAgICB9KTsKK30K
Kworc3RhdGljIE5TSFRUUENvb2tpZUFjY2VwdFBvbGljeSBraXRDb29raWVQb2xpY3lUb05TQ29v
a2llUG9saWN5KFdlYktpdDo6SFRUUENvb2tpZUFjY2VwdFBvbGljeSBraXRQb2xpY3kpCit7Cisg
ICAgc3dpdGNoIChraXRQb2xpY3kpIHsKKyAgICBjYXNlIFdlYktpdDo6SFRUUENvb2tpZUFjY2Vw
dFBvbGljeUFsd2F5czoKKyAgICAgICAgcmV0dXJuIE5TSFRUUENvb2tpZUFjY2VwdFBvbGljeUFs
d2F5czsKKyAgICBjYXNlIFdlYktpdDo6SFRUUENvb2tpZUFjY2VwdFBvbGljeU5ldmVyOgorICAg
ICAgICByZXR1cm4gTlNIVFRQQ29va2llQWNjZXB0UG9saWN5TmV2ZXI7CisgICAgY2FzZSBXZWJL
aXQ6OkhUVFBDb29raWVBY2NlcHRQb2xpY3lPbmx5RnJvbU1haW5Eb2N1bWVudERvbWFpbjoKKyAg
ICAgICAgcmV0dXJuIE5TSFRUUENvb2tpZUFjY2VwdFBvbGljeU9ubHlGcm9tTWFpbkRvY3VtZW50
RG9tYWluOworICAgIGNhc2UgV2ViS2l0OjpIVFRQQ29va2llQWNjZXB0UG9saWN5RXhjbHVzaXZl
bHlGcm9tTWFpbkRvY3VtZW50RG9tYWluOgorICAgICAgICByZXR1cm4gTlNIVFRQQ29va2llQWNj
ZXB0UG9saWN5RXhjbHVzaXZlbHlGcm9tTWFpbkRvY3VtZW50RG9tYWluOworICAgIGRlZmF1bHQ6
CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKworICAgIHJldHVybiBOU0hU
VFBDb29raWVBY2NlcHRQb2xpY3lOZXZlcjsKK30KKworLSAodm9pZClmZXRjaENvb2tpZUFjY2Vw
dFBvbGljeToobm9ubnVsbCB2b2lkICheKShOU0hUVFBDb29raWVBY2NlcHRQb2xpY3kpKWNvbXBs
ZXRpb25IYW5kbGVyCit7CisgICAgX2Nvb2tpZVN0b3JhZ2UtPmdldEhUVFBDb29raWVBY2NlcHRQ
b2xpY3koW2hhbmRsZXIgPSBhZG9wdE5TKFtjb21wbGV0aW9uSGFuZGxlciBjb3B5XSldKFdlYktp
dDo6SFRUUENvb2tpZUFjY2VwdFBvbGljeSBwb2xpY3kpIHsKKyAgICAgICAgYXV0byByYXdIYW5k
bGVyID0gKHZvaWQgKF4pKE5TSFRUUENvb2tpZUFjY2VwdFBvbGljeSkpaGFuZGxlci5nZXQoKTsK
KyAgICAgICAgcmF3SGFuZGxlcihraXRDb29raWVQb2xpY3lUb05TQ29va2llUG9saWN5KHBvbGlj
eSkpOworICAgIH0pOworfQorCisjcHJhZ21hIG1hcmsgV0tPYmplY3QgcHJvdG9jb2wgaW1wbGVt
ZW50YXRpb24KKworLSAoQVBJOjpPYmplY3QmKV9hcGlPYmplY3QKK3sKKyAgICByZXR1cm4gKl9j
b29raWVTdG9yYWdlOworfQorCitAZW5kCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tIVFRQQ29va2llU3RvcmFnZUludGVybmFsLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0hUVFBDb29raWVTdG9yYWdl
SW50ZXJuYWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uM2RlMDFi
YTViZjEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS0hUVFBDb29raWVTdG9yYWdlSW50ZXJuYWwuaApAQCAtMCwwICsxLDQ5IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2ltcG9ydCAiX1dLSFRUUENvb2tpZVN0b3JhZ2UuaCIKKworI2lmIFdLX0FQSV9F
TkFCTEVECisKKyNpbXBvcnQgIkFQSUhUVFBDb29raWVTdG9yYWdlLmgiCisjaW1wb3J0ICJXS09i
amVjdC5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworaW5saW5lIF9XS0hUVFBDb29raWVTdG9y
YWdlICp3cmFwcGVyKEFQSTo6SFRUUENvb2tpZVN0b3JhZ2UmIGNvb2tpZVN0b3JhZ2UpCit7Cisg
ICAgQVNTRVJUKFtjb29raWVTdG9yYWdlLndyYXBwZXIoKSBpc0tpbmRPZkNsYXNzOltfV0tIVFRQ
Q29va2llU3RvcmFnZSBjbGFzc11dKTsKKyAgICByZXR1cm4gKF9XS0hUVFBDb29raWVTdG9yYWdl
ICopY29va2llU3RvcmFnZS53cmFwcGVyKCk7Cit9CisKK30KKworQGludGVyZmFjZSBfV0tIVFRQ
Q29va2llU3RvcmFnZSAoKSA8V0tPYmplY3Q+IHsKK0BwYWNrYWdlCisgICAgQVBJOjpPYmplY3RT
dG9yYWdlPEFQSTo6SFRUUENvb2tpZVN0b3JhZ2U+IF9jb29raWVTdG9yYWdlOworfQorQGVuZAor
CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRvbWF0aW9u
L1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRv
bWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcAppbmRleCA0OGNhZGM3MTI0Zi4uYTgzMTg0
YWY5MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dl
YkF1dG9tYXRpb25TZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0
b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKQEAgLTczMCw3ICs3MzAsNyBAQCB2b2lk
IFdlYkF1dG9tYXRpb25TZXNzaW9uOjphZGRTaW5nbGVDb29raWUoRXJyb3JTdHJpbmcmIGVycm9y
U3RyaW5nLCBjb25zdCBTdHJpbgogCiAgICAgLy8gRklYTUU6IFVzaW5nIGFjdGl2ZVVSTCBoZXJl
IHR3aWNlIGlzIGJhc2ljYWxseSBzYXlpbmcgInRoaXMgaXMgYWx3YXlzIGluIHRoZSBjb250ZXh0
IG9mIHRoZSBtYWluIGRvY3VtZW50IgogICAgIC8vIHdoaWNoIHByb2JhYmx5IGlzbid0IGFjY3Vy
YXRlLgotICAgIGNvb2tpZU1hbmFnZXItPnNldENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklEOjpk
ZWZhdWx0U2Vzc2lvbklEKCksIHsgY29va2llIH0sIGFjdGl2ZVVSTCwgYWN0aXZlVVJMKTsKKyAg
ICBjb29raWVNYW5hZ2VyLT5zZXRDb29raWVzKFdlYkNvcmU6OlNlc3Npb25JRDo6ZGVmYXVsdFNl
c3Npb25JRCgpLCB7IGNvb2tpZSB9LCBhY3RpdmVVUkwsIGFjdGl2ZVVSTCwgW10oQ2FsbGJhY2tC
YXNlOjpFcnJvcil7fSk7CiAKICAgICBjYWxsYmFjay0+c2VuZFN1Y2Nlc3MoKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5jcHAKaW5k
ZXggMmVhYTVjZTNiZmEuLjdlYjQzMDJlNTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmNwcApAQCAtMzIsOCArMzIsMTEgQEAKICNp
bmNsdWRlICJXZWJDb29raWVNYW5hZ2VyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJDb29raWVN
YW5hZ2VyUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sLmgiCisjaW5j
bHVkZSA8V2ViQ29yZS9Db29raWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2lu
RGF0YS5oPgogCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKwogbmFtZXNwYWNlIFdlYktpdCB7
CiAKIGNvbnN0IGNoYXIqIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6c3VwcGxlbWVudE5hbWUoKQpA
QCAtOTQsNyArOTcsNyBAQCB2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGVyZWZXZWJDb250
ZXh0U3VwcGxlbWVudCgpCiAgICAgQVBJOjpPYmplY3Q6OmRlcmVmKCk7CiB9CiAKLXZvaWQgV2Vi
Q29va2llTWFuYWdlclByb3h5OjpnZXRIb3N0bmFtZXNXaXRoQ29va2llcyhXZWJDb3JlOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBGdW5jdGlvbjx2b2lkIChBUEk6OkFycmF5KiwgQ2FsbGJhY2tCYXNl
OjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKK3ZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5
OjpnZXRIb3N0bmFtZXNXaXRoQ29va2llcyhTZXNzaW9uSUQgc2Vzc2lvbklELCBGdW5jdGlvbjx2
b2lkIChBUEk6OkFycmF5KiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlv
bikKIHsKICAgICBhdXRvIGNhbGxiYWNrID0gQXJyYXlDYWxsYmFjazo6Y3JlYXRlKFdURk1vdmUo
Y2FsbGJhY2tGdW5jdGlvbikpOwogICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+
Y2FsbGJhY2tJRCgpOwpAQCAtMTE0LDM3ICsxMTcsODcgQEAgdm9pZCBXZWJDb29raWVNYW5hZ2Vy
UHJveHk6OmRpZEdldEhvc3RuYW1lc1dpdGhDb29raWVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBo
b3MKICAgICBjYWxsYmFjay0+cGVyZm9ybUNhbGxiYWNrV2l0aFJldHVyblZhbHVlKEFQSTo6QXJy
YXk6OmNyZWF0ZVN0cmluZ0FycmF5KGhvc3RuYW1lcykucHRyKCkpOwogfQogCi12b2lkIFdlYkNv
b2tpZU1hbmFnZXJQcm94eTo6ZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKFdlYkNvcmU6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpCit2b2lkIFdlYkNvb2tpZU1h
bmFnZXJQcm94eTo6ZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKFNlc3Npb25JRCBzZXNzaW9uSUQs
IGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpCiB7CiAgICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvTmV0
d29ya2luZ1Byb2Nlc3NSZWxhdW5jaGluZ0lmTmVjZXNzYXJ5KE1lc3NhZ2VzOjpXZWJDb29raWVN
YW5hZ2VyOjpEZWxldGVDb29raWVzRm9ySG9zdG5hbWUoc2Vzc2lvbklELCBob3N0bmFtZSkpOwog
fQogCi12b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGVsZXRlQWxsQ29va2llcyhXZWJDb3Jl
OjpTZXNzaW9uSUQgc2Vzc2lvbklEKQordm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRlbGV0
ZUFsbENvb2tpZXMoU2Vzc2lvbklEIHNlc3Npb25JRCkKIHsKICAgICBwcm9jZXNzUG9vbCgpLT5z
ZW5kVG9OZXR3b3JraW5nUHJvY2Vzc1JlbGF1bmNoaW5nSWZOZWNlc3NhcnkoTWVzc2FnZXM6Oldl
YkNvb2tpZU1hbmFnZXI6OkRlbGV0ZUFsbENvb2tpZXMoc2Vzc2lvbklEKSk7CiB9CiAKLXZvaWQg
V2ViQ29va2llTWFuYWdlclByb3h5OjpkZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZShXZWJD
b3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1l
X3BvaW50IHRpbWUpCit2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGVsZXRlQ29va2llKFNl
c3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IENvb2tpZSYgY29va2llLCBGdW5jdGlvbjx2b2lkIChD
YWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQoreworICAgIGF1dG8gY2Fs
bGJhY2sgPSBWb2lkQ2FsbGJhY2s6OmNyZWF0ZShXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pKTsK
KyAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gY2FsbGJhY2stPmNhbGxiYWNrSUQoKTsKKyAgICBt
X3ZvaWRDYWxsYmFja3Muc2V0KGNhbGxiYWNrSUQsIFdURk1vdmUoY2FsbGJhY2spKTsKKworICAg
IHByb2Nlc3NQb29sKCktPnNlbmRUb05ldHdvcmtpbmdQcm9jZXNzUmVsYXVuY2hpbmdJZk5lY2Vz
c2FyeShNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6RGVsZXRlQ29va2llKHNlc3Npb25JRCwg
Y29va2llLCBjYWxsYmFja0lEKSk7Cit9CisKK3ZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5Ojpk
ZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZShTZXNzaW9uSUQgc2Vzc2lvbklELCBzdGQ6OmNo
cm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IHRpbWUsIEZ1bmN0aW9uPHZvaWQgKENhbGxi
YWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCit7CisgICAgYXV0byBjYWxsYmFj
ayA9IFZvaWRDYWxsYmFjazo6Y3JlYXRlKFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbikpOworICAg
IHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgpOworICAgIG1fdm9p
ZENhbGxiYWNrcy5zZXQoY2FsbGJhY2tJRCwgV1RGTW92ZShjYWxsYmFjaykpOworCisgICAgcHJv
Y2Vzc1Bvb2woKS0+c2VuZFRvTmV0d29ya2luZ1Byb2Nlc3NSZWxhdW5jaGluZ0lmTmVjZXNzYXJ5
KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpEZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5j
ZShzZXNzaW9uSUQsIHRpbWUsIGNhbGxiYWNrSUQpKTsKK30KKwordm9pZCBXZWJDb29raWVNYW5h
Z2VyUHJveHk6OnNldENvb2tpZXMoU2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVmVjdG9yPENv
b2tpZT4mIGNvb2tpZXMsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBVUkwmIG1haW5Eb2N1bWVudFVS
TCwgRnVuY3Rpb248dm9pZCAoQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlv
bikKK3sKKyAgICBhdXRvIGNhbGxiYWNrID0gVm9pZENhbGxiYWNrOjpjcmVhdGUoV1RGTW92ZShj
YWxsYmFja0Z1bmN0aW9uKSk7CisgICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5j
YWxsYmFja0lEKCk7CisgICAgbV92b2lkQ2FsbGJhY2tzLnNldChjYWxsYmFja0lELCBXVEZNb3Zl
KGNhbGxiYWNrKSk7CisKKyAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9OZXR3b3JraW5nUHJvY2Vz
c1JlbGF1bmNoaW5nSWZOZWNlc3NhcnkoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OlNldENv
b2tpZXMoc2Vzc2lvbklELCBjb29raWVzLCB1cmwsIG1haW5Eb2N1bWVudFVSTCwgY2FsbGJhY2tJ
RCkpOworfQorCit2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6Z2V0QWxsQ29va2llcyhTZXNz
aW9uSUQgc2Vzc2lvbklELCBGdW5jdGlvbjx2b2lkIChjb25zdCBWZWN0b3I8Q29va2llPiYsIENh
bGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCit7CisgICAgYXV0byBjYWxs
YmFjayA9IEdldENvb2tpZXNDYWxsYmFjazo6Y3JlYXRlKFdURk1vdmUoY2FsbGJhY2tGdW5jdGlv
bikpOworICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgpOwor
ICAgIG1fZ2V0Q29va2llc0NhbGxiYWNrcy5zZXQoY2FsbGJhY2tJRCwgV1RGTW92ZShjYWxsYmFj
aykpOworCisgICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvTmV0d29ya2luZ1Byb2Nlc3NSZWxhdW5j
aGluZ0lmTmVjZXNzYXJ5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpHZXRBbGxDb29raWVz
KHNlc3Npb25JRCwgY2FsbGJhY2tJRCkpOworfQorCit2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94
eTo6Z2V0Q29va2llcyhTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIHVybCwgRnVuY3Rp
b248dm9pZCAoY29uc3QgVmVjdG9yPENvb2tpZT4mLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBj
YWxsYmFja0Z1bmN0aW9uKQoreworICAgIGF1dG8gY2FsbGJhY2sgPSBHZXRDb29raWVzQ2FsbGJh
Y2s6OmNyZWF0ZShXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pKTsKKyAgICB1aW50NjRfdCBjYWxs
YmFja0lEID0gY2FsbGJhY2stPmNhbGxiYWNrSUQoKTsKKyAgICBtX2dldENvb2tpZXNDYWxsYmFj
a3Muc2V0KGNhbGxiYWNrSUQsIFdURk1vdmUoY2FsbGJhY2spKTsKKworICAgIHByb2Nlc3NQb29s
KCktPnNlbmRUb05ldHdvcmtpbmdQcm9jZXNzUmVsYXVuY2hpbmdJZk5lY2Vzc2FyeShNZXNzYWdl
czo6V2ViQ29va2llTWFuYWdlcjo6R2V0Q29va2llcyhzZXNzaW9uSUQsIHVybCwgY2FsbGJhY2tJ
RCkpOworfQorCit2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGlkU2V0Q29va2llcyh1aW50
NjRfdCBjYWxsYmFja0lEKQoreworICAgIG1fdm9pZENhbGxiYWNrcy50YWtlKGNhbGxiYWNrSUQp
LT5wZXJmb3JtQ2FsbGJhY2soKTsKK30KKwordm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRp
ZEdldENvb2tpZXMoY29uc3QgVmVjdG9yPENvb2tpZT4mIGNvb2tpZXMsIHVpbnQ2NF90IGNhbGxi
YWNrSUQpCiB7Ci0gICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvTmV0d29ya2luZ1Byb2Nlc3NSZWxh
dW5jaGluZ0lmTmVjZXNzYXJ5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpEZWxldGVBbGxD
b29raWVzTW9kaWZpZWRTaW5jZShzZXNzaW9uSUQsIHRpbWUpKTsKKyAgICBtX2dldENvb2tpZXND
YWxsYmFja3MudGFrZShjYWxsYmFja0lEKS0+cGVyZm9ybUNhbGxiYWNrV2l0aFJldHVyblZhbHVl
KGNvb2tpZXMpOwogfQogCi12b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6c2V0Q29va2llcyhX
ZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2ll
PiYgY29va2llcywgY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwsIGNvbnN0IFdlYkNvcmU6OlVSTCYg
bWFpbkRvY3VtZW50VVJMKQordm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRpZERlbGV0ZUNv
b2tpZXModWludDY0X3QgY2FsbGJhY2tJRCkKIHsKLSAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9O
ZXR3b3JraW5nUHJvY2Vzc1JlbGF1bmNoaW5nSWZOZWNlc3NhcnkoTWVzc2FnZXM6OldlYkNvb2tp
ZU1hbmFnZXI6OlNldENvb2tpZXMoc2Vzc2lvbklELCBjb29raWVzLCB1cmwsIG1haW5Eb2N1bWVu
dFVSTCkpOworICAgIG1fdm9pZENhbGxiYWNrcy50YWtlKGNhbGxiYWNrSUQpLT5wZXJmb3JtQ2Fs
bGJhY2soKTsKIH0KIAotdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OnN0YXJ0T2JzZXJ2aW5n
Q29va2llQ2hhbmdlcyhXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQordm9pZCBXZWJDb29r
aWVNYW5hZ2VyUHJveHk6OnN0YXJ0T2JzZXJ2aW5nQ29va2llQ2hhbmdlcyhTZXNzaW9uSUQgc2Vz
c2lvbklEKQogewogICAgIHByb2Nlc3NQb29sKCktPnNlbmRUb05ldHdvcmtpbmdQcm9jZXNzUmVs
YXVuY2hpbmdJZk5lY2Vzc2FyeShNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6U3RhcnRPYnNl
cnZpbmdDb29raWVDaGFuZ2VzKHNlc3Npb25JRCkpOwogfQogCi12b2lkIFdlYkNvb2tpZU1hbmFn
ZXJQcm94eTo6c3RvcE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMoV2ViQ29yZTo6U2Vzc2lvbklEIHNl
c3Npb25JRCkKK3ZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpzdG9wT2JzZXJ2aW5nQ29va2ll
Q2hhbmdlcyhTZXNzaW9uSUQgc2Vzc2lvbklEKQogewogICAgIHByb2Nlc3NQb29sKCktPnNlbmRU
b05ldHdvcmtpbmdQcm9jZXNzUmVsYXVuY2hpbmdJZk5lY2Vzc2FyeShNZXNzYWdlczo6V2ViQ29v
a2llTWFuYWdlcjo6U3RvcE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMoc2Vzc2lvbklEKSk7CiB9CiAK
LXZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpzZXRDb29raWVPYnNlcnZlckNhbGxiYWNrKFdl
YkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4mJiBjYWxs
YmFjaykKK3ZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpzZXRDb29raWVPYnNlcnZlckNhbGxi
YWNrKFNlc3Npb25JRCBzZXNzaW9uSUQsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4mJiBjYWxsYmFj
aykKIHsKICAgICBpZiAoY2FsbGJhY2spCiAgICAgICAgIG1fY29va2llT2JzZXJ2ZXJzLnNldChz
ZXNzaW9uSUQsIFdURk1vdmUoY2FsbGJhY2spKTsKQEAgLTE1MiwxNCArMjA1LDE0IEBAIHZvaWQg
V2ViQ29va2llTWFuYWdlclByb3h5OjpzZXRDb29raWVPYnNlcnZlckNhbGxiYWNrKFdlYkNvcmU6
OlNlc3Npb25JRCBzZXNzaW9uCiAgICAgICAgIG1fY29va2llT2JzZXJ2ZXJzLnJlbW92ZShzZXNz
aW9uSUQpOwogfQogCi12b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6Y29va2llc0RpZENoYW5n
ZShXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQordm9pZCBXZWJDb29raWVNYW5hZ2VyUHJv
eHk6OmNvb2tpZXNEaWRDaGFuZ2UoU2Vzc2lvbklEIHNlc3Npb25JRCkKIHsKICAgICBtX2NsaWVu
dC5jb29raWVzRGlkQ2hhbmdlKHRoaXMpOwogICAgIGlmIChhdXRvIGNhbGxiYWNrID0gbV9jb29r
aWVPYnNlcnZlcnMuZ2V0KHNlc3Npb25JRCkpCiAgICAgICAgIGNhbGxiYWNrKCk7CiB9CiAKLXZv
aWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpzZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KEhUVFBD
b29raWVBY2NlcHRQb2xpY3kgcG9saWN5KQordm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OnNl
dEhUVFBDb29raWVBY2NlcHRQb2xpY3koU2Vzc2lvbklELCBIVFRQQ29va2llQWNjZXB0UG9saWN5
IHBvbGljeSwgRnVuY3Rpb248dm9pZCAoQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tG
dW5jdGlvbikKIHsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBpZiAoIXByb2Nlc3NQb29sKCkt
PmlzVXNpbmdUZXN0aW5nTmV0d29ya1Nlc3Npb24oKSkKQEAgLTE3MiwxMSArMjI1LDE2IEBAIHZv
aWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpzZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KEhUVFBD
b29raWVBY2NlcHRQb2xpY3kgcG9sCiAgICAgLy8gVGhlIHBvbGljeSBpcyBub3Qgc2VudCB0byBu
ZXdseSBjcmVhdGVkIHByb2Nlc3NlcyAob25seSBTb3VwIGRvZXMgdGhhdCB2aWEgc2V0SW5pdGlh
bEhUVFBDb29raWVBY2NlcHRQb2xpY3koKSkuIFRoaXMgaXMgbm90IGEgc2VyaW91cyBwcm9ibGVt
LCBiZWNhdXNlOgogICAgIC8vIC0gV2hlbiB0ZXN0aW5nLCB3ZSBvbmx5IGhhdmUgb25lIFdlYlBy
b2Nlc3MgYW5kIG9uZSBOZXR3b3JrUHJvY2VzcywgYW5kIFdlYktpdFRlc3RSdW5uZXIgbmV2ZXIg
cmVzdGFydHMgdGhlbTsKICAgICAvLyAtIFdoZW4gbm90IHRlc3RpbmcsIENvY29hIGhhcyB0aGUg
cG9saWN5IHBlcnNpc3RlZCwgYW5kIHRodXMgbmV3IHByb2Nlc3NlcyB1c2UgaXQgKGV2ZW4gZm9y
IGVwaGVtZXJhbCBzZXNzaW9ucykuCi0gICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvQWxsUHJvY2Vz
c2VzKE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5
KHBvbGljeSkpOwotICAgIHByb2Nlc3NQb29sKCktPnNlbmRUb05ldHdvcmtpbmdQcm9jZXNzKE1l
c3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHBvbGlj
eSkpOworICAgIHByb2Nlc3NQb29sKCktPnNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2Vi
Q29va2llTWFuYWdlcjo6U2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShwb2xpY3ksIDApKTsKKwor
ICAgIGF1dG8gY2FsbGJhY2sgPSBWb2lkQ2FsbGJhY2s6OmNyZWF0ZShXVEZNb3ZlKGNhbGxiYWNr
RnVuY3Rpb24pKTsKKyAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gY2FsbGJhY2stPmNhbGxiYWNr
SUQoKTsKKyAgICBtX3ZvaWRDYWxsYmFja3Muc2V0KGNhbGxiYWNrSUQsIFdURk1vdmUoY2FsbGJh
Y2spKTsKKworICAgIHByb2Nlc3NQb29sKCktPnNlbmRUb05ldHdvcmtpbmdQcm9jZXNzKE1lc3Nh
Z2VzOjpXZWJDb29raWVNYW5hZ2VyOjpTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHBvbGljeSwg
Y2FsbGJhY2tJRCkpOwogfQogCi12b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6Z2V0SFRUUENv
b2tpZUFjY2VwdFBvbGljeShGdW5jdGlvbjx2b2lkIChIVFRQQ29va2llQWNjZXB0UG9saWN5LCBD
YWxsYmFja0Jhc2U6OkVycm9yKT4gY2FsbGJhY2tGdW5jdGlvbikKK3ZvaWQgV2ViQ29va2llTWFu
YWdlclByb3h5OjpnZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KFNlc3Npb25JRCwgRnVuY3Rpb248
dm9pZCAoSFRUUENvb2tpZUFjY2VwdFBvbGljeSwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2Fs
bGJhY2tGdW5jdGlvbikKIHsKICAgICBhdXRvIGNhbGxiYWNrID0gSFRUUENvb2tpZUFjY2VwdFBv
bGljeUNhbGxiYWNrOjpjcmVhdGUoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSk7CiAKQEAgLTE4
OCwxMyArMjQ2LDEyIEBAIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpnZXRIVFRQQ29va2ll
QWNjZXB0UG9saWN5KEZ1bmN0aW9uPHZvaWQgKEhUVFBDb29raWVBCiAKIHZvaWQgV2ViQ29va2ll
TWFuYWdlclByb3h5OjpkaWRHZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHVpbnQzMl90IHBvbGlj
eSwgdWludDY0X3QgY2FsbGJhY2tJRCkKIHsKLSAgICBSZWZQdHI8SFRUUENvb2tpZUFjY2VwdFBv
bGljeUNhbGxiYWNrPiBjYWxsYmFjayA9IG1faHR0cENvb2tpZUFjY2VwdFBvbGljeUNhbGxiYWNr
cy50YWtlKGNhbGxiYWNrSUQpOwotICAgIGlmICghY2FsbGJhY2spIHsKLSAgICAgICAgLy8gRklY
TUU6IExvZyBlcnJvciBvciBhc3NlcnQuCi0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgbV9o
dHRwQ29va2llQWNjZXB0UG9saWN5Q2FsbGJhY2tzLnRha2UoY2FsbGJhY2tJRCktPnBlcmZvcm1D
YWxsYmFja1dpdGhSZXR1cm5WYWx1ZShwb2xpY3kpOworfQogCi0gICAgY2FsbGJhY2stPnBlcmZv
cm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZShwb2xpY3kpOwordm9pZCBXZWJDb29raWVNYW5hZ2Vy
UHJveHk6OmRpZFNldEhUVFBDb29raWVBY2NlcHRQb2xpY3kodWludDY0X3QgY2FsbGJhY2tJRCkK
K3sKKyAgICBtX3ZvaWRDYWxsYmFja3MudGFrZShjYWxsYmFja0lEKS0+cGVyZm9ybUNhbGxiYWNr
KCk7CiB9CiAKIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpzZXRDb29raWVTdG9yYWdlUGFy
dGl0aW9uaW5nRW5hYmxlZChib29sIGVuYWJsZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmgKaW5kZXggY2Y3OThkN2NjY2MuLjg0NjE5Y2Fi
YWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdl
clByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQ
cm94eS5oCkBAIC01NSw2ICs1NSw3IEBAIGNsYXNzIFdlYlByb2Nlc3NQcm94eTsKIAogdHlwZWRl
ZiBHZW5lcmljQ2FsbGJhY2s8QVBJOjpBcnJheSo+IEFycmF5Q2FsbGJhY2s7CiB0eXBlZGVmIEdl
bmVyaWNDYWxsYmFjazxIVFRQQ29va2llQWNjZXB0UG9saWN5PiBIVFRQQ29va2llQWNjZXB0UG9s
aWN5Q2FsbGJhY2s7Cit0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxjb25zdCBWZWN0b3I8V2ViQ29y
ZTo6Q29va2llPiY+IEdldENvb2tpZXNDYWxsYmFjazsKIAogY2xhc3MgV2ViQ29va2llTWFuYWdl
clByb3h5IDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6Q29va2ll
TWFuYWdlcj4sIHB1YmxpYyBXZWJDb250ZXh0U3VwcGxlbWVudCwgcHJpdmF0ZSBJUEM6Ok1lc3Nh
Z2VSZWNlaXZlciB7CiBwdWJsaWM6CkBAIC02NiwxNCArNjcsMTkgQEAgcHVibGljOgogICAgIHZv
aWQgaW5pdGlhbGl6ZUNsaWVudChjb25zdCBXS0Nvb2tpZU1hbmFnZXJDbGllbnRCYXNlKik7CiAg
ICAgCiAgICAgdm9pZCBnZXRIb3N0bmFtZXNXaXRoQ29va2llcyhXZWJDb3JlOjpTZXNzaW9uSUQs
IEZ1bmN0aW9uPHZvaWQgKEFQSTo6QXJyYXkqLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7Cisg
ICAgdm9pZCBkZWxldGVDb29raWUoV2ViQ29yZTo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpD
b29raWUmLCBGdW5jdGlvbjx2b2lkIChDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CiAgICAgdm9p
ZCBkZWxldGVDb29raWVzRm9ySG9zdG5hbWUoV2ViQ29yZTo6U2Vzc2lvbklELCBjb25zdCBTdHJp
bmcmIGhvc3RuYW1lKTsKICAgICB2b2lkIGRlbGV0ZUFsbENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lv
bklEKTsKLSAgICB2b2lkIGRlbGV0ZUFsbENvb2tpZXNNb2RpZmllZFNpbmNlKFdlYkNvcmU6OlNl
c3Npb25JRCwgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCk7CisgICAgdm9p
ZCBkZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZShXZWJDb3JlOjpTZXNzaW9uSUQsIHN0ZDo6
Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQsIEZ1bmN0aW9uPHZvaWQgKENhbGxiYWNr
QmFzZTo6RXJyb3IpPiYmKTsKIAotICAgIHZvaWQgc2V0Q29va2llcyhXZWJDb3JlOjpTZXNzaW9u
SUQsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiwgY29uc3QgV2ViQ29yZTo6VVJMJiwg
Y29uc3QgV2ViQ29yZTo6VVJMJiBtYWluRG9jdW1lbnRVUkwpOworICAgIHZvaWQgc2V0Q29va2ll
cyhXZWJDb3JlOjpTZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiwgY29u
c3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBtYWluRG9jdW1lbnRVUkwsIEZ1
bmN0aW9uPHZvaWQgKENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKKworICAgIHZvaWQgZ2V0QWxs
Q29va2llcyhXZWJDb3JlOjpTZXNzaW9uSUQsIEZ1bmN0aW9uPHZvaWQgKGNvbnN0IFZlY3RvcjxX
ZWJDb3JlOjpDb29raWU+JiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpOworICAgIHZvaWQgZ2V0Q29va2llcyhXZWJDb3JlOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNv
cmU6OlVSTCYsIEZ1bmN0aW9uPHZvaWQgKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jiwg
Q2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY29tcGxldGlvbkhhbmRsZXIpOworCisgICAgdm9pZCBz
ZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KFdlYkNvcmU6OlNlc3Npb25JRCwgSFRUUENvb2tpZUFj
Y2VwdFBvbGljeSwgRnVuY3Rpb248dm9pZCAoQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOworICAg
IHZvaWQgZ2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShXZWJDb3JlOjpTZXNzaW9uSUQsIEZ1bmN0
aW9uPHZvaWQgKEhUVFBDb29raWVBY2NlcHRQb2xpY3ksIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYm
KTsKIAotICAgIHZvaWQgc2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShIVFRQQ29va2llQWNjZXB0
UG9saWN5KTsKLSAgICB2b2lkIGdldEhUVFBDb29raWVBY2NlcHRQb2xpY3koRnVuY3Rpb248dm9p
ZCAoSFRUUENvb2tpZUFjY2VwdFBvbGljeSwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+KTsKICAgICB2
b2lkIHNldENvb2tpZVN0b3JhZ2VQYXJ0aXRpb25pbmdFbmFibGVkKGJvb2wpOwogCiAgICAgdm9p
ZCBzdGFydE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMoV2ViQ29yZTo6U2Vzc2lvbklEKTsKQEAgLTk1
LDYgKzEwMSwxMSBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkR2V0SG9zdG5hbWVzV2l0aENvb2tp
ZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKICAgICB2b2lk
IGRpZEdldEhUVFBDb29raWVBY2NlcHRQb2xpY3kodWludDMyX3QgcG9saWN5LCB1aW50NjRfdCBj
YWxsYmFja0lEKTsKIAorICAgIHZvaWQgZGlkU2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSh1aW50
NjRfdCBjYWxsYmFja0lEKTsKKyAgICB2b2lkIGRpZFNldENvb2tpZXModWludDY0X3QgY2FsbGJh
Y2tJRCk7CisgICAgdm9pZCBkaWRHZXRDb29raWVzKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29r
aWU+JiwgdWludDY0X3QgY2FsbGJhY2tJRCk7CisgICAgdm9pZCBkaWREZWxldGVDb29raWVzKHVp
bnQ2NF90IGNhbGxiYWNrSUQpOworCiAgICAgdm9pZCBjb29raWVzRGlkQ2hhbmdlKFdlYkNvcmU6
OlNlc3Npb25JRCk7CiAKICAgICAvLyBXZWJDb250ZXh0U3VwcGxlbWVudApAQCAtMTEzLDYgKzEy
NCw4IEBAIHByaXZhdGU6CiAKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8QXJyYXlDYWxs
YmFjaz4+IG1fYXJyYXlDYWxsYmFja3M7CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPEhU
VFBDb29raWVBY2NlcHRQb2xpY3lDYWxsYmFjaz4+IG1faHR0cENvb2tpZUFjY2VwdFBvbGljeUNh
bGxiYWNrczsKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8Vm9pZENhbGxiYWNrPj4gbV92
b2lkQ2FsbGJhY2tzOworICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxHZXRDb29raWVzQ2Fs
bGJhY2s+PiBtX2dldENvb2tpZXNDYWxsYmFja3M7CiAKICAgICBIYXNoTWFwPFdlYkNvcmU6OlNl
c3Npb25JRCwgc3RkOjpmdW5jdGlvbjx2b2lkICgpPj4gbV9jb29raWVPYnNlcnZlcnM7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHku
bWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclBy
b3h5Lm1lc3NhZ2VzLmluCmluZGV4IDEyZTAwOTAxOGI3Li5kY2NiY2YyOWUwNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5tZXNzYWdl
cy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5
Lm1lc3NhZ2VzLmluCkBAIC0yMyw2ICsyMywxMSBAQAogbWVzc2FnZXMgLT4gV2ViQ29va2llTWFu
YWdlclByb3h5IHsKICAgICBEaWRHZXRIb3N0bmFtZXNXaXRoQ29va2llcyhWZWN0b3I8U3RyaW5n
PiBob3N0bmFtZXMsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwogICAgIERpZEdldEhUVFBDb29raWVB
Y2NlcHRQb2xpY3kodWludDMyX3QgcG9saWN5LCB1aW50NjRfdCBjYWxsYmFja0lEKTsKLSAgICAK
KworICAgIERpZFNldEhUVFBDb29raWVBY2NlcHRQb2xpY3kodWludDY0X3QgY2FsbGJhY2tJRCk7
CisgICAgRGlkRGVsZXRlQ29va2llcyh1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICBEaWRTZXRD
b29raWVzKHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAgIERpZEdldENvb2tpZXMoVmVjdG9yPFdl
YkNvcmU6OkNvb2tpZT4gY29va2llcywgdWludDY0X3QgY2FsbGJhY2tJRCk7CisKICAgICBDb29r
aWVzRGlkQ2hhbmdlKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuaAppbmRleCA2YmY5OTM4NjJiNy4uNTViNWI2N2Uw
YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmgK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuaApAQCAtMzEsNiAr
MzEsNyBAQAogI2luY2x1ZGUgIldlYkZyYW1lTGlzdGVuZXJQcm94eS5oIgogI2luY2x1ZGUgPFdl
YkNvcmUvRnJhbWVMb2FkZXJUeXBlcy5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5j
bHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggZjY5NjIzMWJhMDUuLmFhYzZiYTViM2MxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKQEAgLTMwLDYgKzMwLDcg
QEAKICNpbmNsdWRlICJBUElBdXRvbWF0aW9uQ2xpZW50LmgiCiAjaW5jbHVkZSAiQVBJQ3VzdG9t
UHJvdG9jb2xNYW5hZ2VyQ2xpZW50LmgiCiAjaW5jbHVkZSAiQVBJRG93bmxvYWRDbGllbnQuaCIK
KyNpbmNsdWRlICJBUElIVFRQQ29va2llU3RvcmFnZS5oIgogI2luY2x1ZGUgIkFQSUxlZ2FjeUNv
bnRleHRIaXN0b3J5Q2xpZW50LmgiCiAjaW5jbHVkZSAiQVBJUGFnZUNvbmZpZ3VyYXRpb24uaCIK
ICNpbmNsdWRlICJBUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaCIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKaW5kZXggODg1YWQzY2ViYjMuLmUwZTE5MjZkNTNl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaApAQCAtNzYsNiAr
NzYsNyBAQCBuYW1lc3BhY2UgQVBJIHsKIGNsYXNzIEF1dG9tYXRpb25DbGllbnQ7CiBjbGFzcyBD
dXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQ7CiBjbGFzcyBEb3dubG9hZENsaWVudDsKK2NsYXNz
IEhUVFBDb29raWVTdG9yYWdlOwogY2xhc3MgTGVnYWN5Q29udGV4dEhpc3RvcnlDbGllbnQ7CiBj
bGFzcyBQYWdlQ29uZmlndXJhdGlvbjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJDb29raWVTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJDb29raWVTdG9yYWdlLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZTQwYjgzNDE3MjAKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2ViQ29va2llU3RvcmFnZS5j
cHAKQEAgLTAsMCArMSwxNzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiV2ViQ29va2llU3RvcmFnZS5oIgorCisjaW5jbHVkZSAiQVBJV2Vic2l0ZURhdGFT
dG9yZS5oIgorI2luY2x1ZGUgIldlYkNvb2tpZU1hbmFnZXJQcm94eS5oIgorI2luY2x1ZGUgIldl
YlByb2Nlc3NQb29sLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Db29raWUuaD4KKwordXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitSZWY8V2ViQ29va2llU3Rv
cmFnZT4gV2ViQ29va2llU3RvcmFnZTo6Y3JlYXRlKFNlc3Npb25JRCBzZXNzaW9uSUQpCit7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViQ29va2llU3RvcmFnZShzZXNzaW9uSUQpKTsKK30K
KworV2ViQ29va2llU3RvcmFnZTo6V2ViQ29va2llU3RvcmFnZShTZXNzaW9uSUQgc2Vzc2lvbklE
KQorICAgIDogbV9zZXNzaW9uSUQoc2Vzc2lvbklEKQoreworfQorCitXZWJQcm9jZXNzUG9vbCog
V2ViQ29va2llU3RvcmFnZTo6cHJvY2Vzc1Bvb2xGb3JPcGVyYXRpb25zKCkKK3sKKyAgICAvLyBP
dXIgY29uY2VwdHMgb2YgV2ViUHJvY2VzcywgV2ViUHJvY2Vzc1Bvb2wsIFdlYnNpdGVEYXRhU3Rv
cmUsIGFuZCBTZXNzaW9uSURzIGhhdmUgYWxsIHN0YXJ0ZWQgdG8gb3ZlcmxhcC4KKyAgICAvLyBJ
biBwcmFjdGljZSwgbXVsdGlwbGUgV2ViUHJvY2Vzc1Bvb2xzIGNhbiBjb250YWluICJ0aGUgc2Ft
ZSBzZXNzaW9uIiwgZXNwZWNpYWxseSBzaW5jZSB0aGVyZSBpcyBjdXJyZW50bHkKKyAgICAvLyBv
bmx5IGEgc2luZ2xlIGRlZmF1bHQgZ2xvYmFsIFNlc3Npb25JRC4KKyAgICAvLworICAgIC8vIFRo
aXMgbWVhbnMgdGhhdCBtdWx0aXBsZSBOZXR3b3JrUHJvY2Vzc2VzIGNhbiBiZSB1c2luZyB0aGUg
c2FtZSBzZXNzaW9uLCB3aGljaCBtZWFucyB0aGF0IG11bHRpcGxlCisgICAgLy8gTmV0d29ya1By
b2Nlc3NlcyBjYW4gYmUgcmVmZXJyaW5nIHRvIHRoZSBzYW1lIHBsYXRmb3JtIGNvb2tpZSBzdG9y
YWdlLgorICAgIC8vCisgICAgLy8gV2hpbGUgdGhpcyBtYXkgY2F1c2UgY29tcGxpY2F0aW9ucyB3
aXRoIGZ1dHVyZSBBUElzIGl0IGlzIGFjdHVhbGx5IGZpbmUgZm9yIGltcGxlbWVudGluZyB0aGUg
V0tIVFRQQ29va2llU3RvcmFnZSBBUEkKKyAgICAvLyBiZWNhdXNlIHdlIG9ubHkgbmVlZCBvbmUg
TmV0d29ya1Byb2Nlc3MgdG8gc3VjY2Vzc2Z1bGx5IG1ha2UgYSByZXF1ZXN0ZWQgcGxhdGZvcm0g
Y29va2llIHN0b3JhZ2UgY2hhbmdlLgorICAgIC8vCisgICAgLy8gRklYTUU6IFdlIG5lZWQgdG8g
c3RhcnQgdG8gdW5yYXZlbCB0aGlzIG1lc3MgZ29pbmcgZm9yd2FyZC4KKworICAgIGZvciAoYXV0
byYgcHJvY2Vzc1Bvb2wgOiBXZWJQcm9jZXNzUG9vbDo6YWxsUHJvY2Vzc1Bvb2xzKCkpeworICAg
ICAgICBpZiAocHJvY2Vzc1Bvb2wtPndlYnNpdGVEYXRhU3RvcmUoKS0+d2Vic2l0ZURhdGFTdG9y
ZSgpLnNlc3Npb25JRCgpID09IG1fc2Vzc2lvbklEKQorICAgICAgICAgICAgcmV0dXJuIHByb2Nl
c3NQb29sOworICAgIH0KKworICAgIHJldHVybiBudWxscHRyOworfQorCit2b2lkIFdlYkNvb2tp
ZVN0b3JhZ2U6OmNvb2tpZXMoRnVuY3Rpb248dm9pZCAoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNv
b2tpZT4mLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAg
ICBhdXRvKiBwb29sID0gcHJvY2Vzc1Bvb2xGb3JPcGVyYXRpb25zKCk7CisgICAgaWYgKCFwb29s
KSB7CisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcildICgpIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KHsgfSwgQ2FsbGJhY2tCYXNlOjpFcnJvcjo6VW5rbm93bik7CisgICAgICAgIH0pOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgcG9vbC0+c3VwcGxlbWVudDxXZWJLaXQ6OldlYkNvb2tp
ZU1hbmFnZXJQcm94eT4oKS0+Z2V0QWxsQ29va2llcyhtX3Nlc3Npb25JRCwgV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOworfQorCit2b2lkIFdlYkNvb2tpZVN0b3JhZ2U6OmNvb2tpZXMoY29u
c3QgV2ViQ29yZTo6VVJMJiB1cmwsIEZ1bmN0aW9uPHZvaWQgKGNvbnN0IFZlY3RvcjxXZWJDb3Jl
OjpDb29raWU+JiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7
CisgICAgYXV0byogcG9vbCA9IHByb2Nlc3NQb29sRm9yT3BlcmF0aW9ucygpOworICAgIGlmICgh
cG9vbCkgeworICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcih7IH0sIENhbGxiYWNrQmFzZTo6RXJyb3I6OlVua25vd24pOworICAgICAgICB9KTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHBvb2wtPnN1cHBsZW1lbnQ8V2ViS2l0OjpXZWJD
b29raWVNYW5hZ2VyUHJveHk+KCktPmdldENvb2tpZXMobV9zZXNzaW9uSUQsIHVybCwgV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorCit2b2lkIFdlYkNvb2tpZVN0b3JhZ2U6OnNldENv
b2tpZShjb25zdCBXZWJDb3JlOjpDb29raWUmIGNvb2tpZSwgRnVuY3Rpb248dm9pZCAoQ2FsbGJh
Y2tCYXNlOjpFcnJvcik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgYXV0byogcG9vbCA9
IHByb2Nlc3NQb29sRm9yT3BlcmF0aW9ucygpOworICAgIGlmICghcG9vbCkgeworICAgICAgICBj
YWxsT25NYWluVGhyZWFkKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpXSAoKSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihDYWxsYmFja0Jhc2U6
OkVycm9yOjpVbmtub3duKTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBwb29sLT5zdXBwbGVtZW50PFdlYktpdDo6V2ViQ29va2llTWFuYWdlclByb3h5PigpLT5z
ZXRDb29raWVzKG1fc2Vzc2lvbklELCB7IGNvb2tpZSB9LCB7IH0sIHsgfSwgV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOworfQorCit2b2lkIFdlYkNvb2tpZVN0b3JhZ2U6OnNldENvb2tpZXMo
Y29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mIGNvb2tpZXMsIGNvbnN0IFdlYkNvcmU6OlVS
TCYgdXJsLCBjb25zdCBXZWJDb3JlOjpVUkwmIG1haW5Eb2N1bWVudFVSTCwgRnVuY3Rpb248dm9p
ZCAoQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgYXV0
byogcG9vbCA9IHByb2Nlc3NQb29sRm9yT3BlcmF0aW9ucygpOworICAgIGlmICghcG9vbCkgewor
ICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpXSAoKSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihDYWxs
YmFja0Jhc2U6OkVycm9yOjpVbmtub3duKTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBwb29sLT5zdXBwbGVtZW50PFdlYktpdDo6V2ViQ29va2llTWFuYWdlclBy
b3h5PigpLT5zZXRDb29raWVzKG1fc2Vzc2lvbklELCBjb29raWVzLCB1cmwsIG1haW5Eb2N1bWVu
dFVSTCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorCit2b2lkIFdlYkNvb2tpZVN0
b3JhZ2U6OmRlbGV0ZUNvb2tpZShjb25zdCBXZWJDb3JlOjpDb29raWUmIGNvb2tpZSwgRnVuY3Rp
b248dm9pZCAoQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7Cisg
ICAgYXV0byogcG9vbCA9IHByb2Nlc3NQb29sRm9yT3BlcmF0aW9ucygpOworICAgIGlmICghcG9v
bCkgeworICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihDYWxsYmFja0Jhc2U6OkVycm9yOjpVbmtub3duKTsKKyAgICAgICAgfSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBwb29sLT5zdXBwbGVtZW50PFdlYktpdDo6V2ViQ29va2llTWFu
YWdlclByb3h5PigpLT5kZWxldGVDb29raWUobV9zZXNzaW9uSUQsIGNvb2tpZSwgV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOworfQorCit2b2lkIFdlYkNvb2tpZVN0b3JhZ2U6OnJlbW92ZUNv
b2tpZXNTaW5jZURhdGUoc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCBkYXRl
LCBGdW5jdGlvbjx2b2lkIChDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKK3sKKyAgICBhdXRvKiBwb29sID0gcHJvY2Vzc1Bvb2xGb3JPcGVyYXRpb25zKCk7CisgICAg
aWYgKCFwb29sKSB7CisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW2NvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildICgpIHsKKyAgICAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKENhbGxiYWNrQmFzZTo6RXJyb3I6OlVua25vd24pOworICAgICAgICB9KTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHBvb2wtPnN1cHBsZW1lbnQ8V2ViS2l0OjpXZWJD
b29raWVNYW5hZ2VyUHJveHk+KCktPmRlbGV0ZUFsbENvb2tpZXNNb2RpZmllZFNpbmNlKG1fc2Vz
c2lvbklELCBkYXRlLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKK3ZvaWQgV2Vi
Q29va2llU3RvcmFnZTo6c2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShIVFRQQ29va2llQWNjZXB0
UG9saWN5IHBvbGljeSwgRnVuY3Rpb248dm9pZCAoQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCit7CisgICAgYXV0byogcG9vbCA9IHByb2Nlc3NQb29sRm9yT3BlcmF0
aW9ucygpOworICAgIGlmICghcG9vbCkgeworICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSB7CisgICAgICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihDYWxsYmFja0Jhc2U6OkVycm9yOjpVbmtub3duKTsKKyAg
ICAgICAgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBwb29sLT5zdXBwbGVtZW50
PFdlYktpdDo6V2ViQ29va2llTWFuYWdlclByb3h5PigpLT5zZXRIVFRQQ29va2llQWNjZXB0UG9s
aWN5KG1fc2Vzc2lvbklELCBwb2xpY3ksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30K
Kwordm9pZCBXZWJDb29raWVTdG9yYWdlOjpnZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KEZ1bmN0
aW9uPHZvaWQgKEhUVFBDb29raWVBY2NlcHRQb2xpY3kgcG9saWN5LCBDYWxsYmFja0Jhc2U6OkVy
cm9yKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBhdXRvKiBwb29sID0gcHJvY2Vzc1Bv
b2xGb3JPcGVyYXRpb25zKCk7CisgICAgaWYgKCFwb29sKSB7CisgICAgICAgIGNhbGxPbk1haW5U
aHJlYWQoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildICgp
IHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKEhUVFBDb29raWVBY2NlcHRQb2xpY3lO
ZXZlciwgQ2FsbGJhY2tCYXNlOjpFcnJvcjo6VW5rbm93bik7CisgICAgICAgIH0pOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgcG9vbC0+c3VwcGxlbWVudDxXZWJLaXQ6OldlYkNvb2tp
ZU1hbmFnZXJQcm94eT4oKS0+Z2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShtX3Nlc3Npb25JRCwg
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJDb29r
aWVTdG9yYWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2ViQ29v
a2llU3RvcmFnZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5kY2Zl
OGQ4NmJiNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJz
aXRlRGF0YS9XZWJDb29raWVTdG9yYWdlLmgKQEAgLTAsMCArMSw2OCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiR2VuZXJpY0NhbGxiYWNrLmgiCisjaW5jbHVkZSAi
SFRUUENvb2tpZUFjY2VwdFBvbGljeS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvU2Vzc2lvbklELmg+
CisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4K
KyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFVS
TDsKK3N0cnVjdCBDb29raWU7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJQ
cm9jZXNzUG9vbDsKKworY2xhc3MgV2ViQ29va2llU3RvcmFnZSA6IHB1YmxpYyBSZWZDb3VudGVk
PFdlYkNvb2tpZVN0b3JhZ2U+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFdlYkNvb2tpZVN0
b3JhZ2U+IGNyZWF0ZShXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklEKTsKKworICAgIHZvaWQg
Y29va2llcyhGdW5jdGlvbjx2b2lkIChjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYsIENh
bGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICB2b2lkIGNvb2tp
ZXMoY29uc3QgV2ViQ29yZTo6VVJMJiwgRnVuY3Rpb248dm9pZCAoY29uc3QgVmVjdG9yPFdlYkNv
cmU6OkNvb2tpZT4mLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7
CisKKyAgICB2b2lkIHNldENvb2tpZShjb25zdCBXZWJDb3JlOjpDb29raWUmLCBGdW5jdGlvbjx2
b2lkIChDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7CisgICAgdm9p
ZCBzZXRDb29raWVzKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiwgY29uc3QgV2ViQ29y
ZTo6VVJMJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBtYWluRG9jdW1lbnRVUkwsIEZ1bmN0aW9uPHZv
aWQgKENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICB2b2lk
IGRlbGV0ZUNvb2tpZShjb25zdCBXZWJDb3JlOjpDb29raWUmLCBGdW5jdGlvbjx2b2lkIChDYWxs
YmFja0Jhc2U6OkVycm9yKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7CisKKyAgICB2b2lkIHJlbW92
ZUNvb2tpZXNTaW5jZURhdGUoc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCwg
RnVuY3Rpb248dm9pZCAoQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY29tcGxldGlvbkhhbmRsZXIp
OworCisgICAgdm9pZCBzZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KEhUVFBDb29raWVBY2NlcHRQ
b2xpY3ksIEZ1bmN0aW9uPHZvaWQgKENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKKyAgICB2b2lk
IGdldEhUVFBDb29raWVBY2NlcHRQb2xpY3koRnVuY3Rpb248dm9pZCAoSFRUUENvb2tpZUFjY2Vw
dFBvbGljeSwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOworCitwcml2YXRlOgorICAgIFdlYkNv
b2tpZVN0b3JhZ2UoV2ViQ29yZTo6U2Vzc2lvbklEKTsKKworICAgIFdlYlByb2Nlc3NQb29sKiBw
cm9jZXNzUG9vbEZvck9wZXJhdGlvbnMoKTsKKworICAgIFdlYkNvcmU6OlNlc3Npb25JRCBtX3Nl
c3Npb25JRDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktp
dDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDdlMTg4MjJmMDRkLi4y
ZTI3ZGJkNDk0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtMTA2Myw2ICsxMDYzLDkgQEAKIAkJNTFEMTI0MzUxRTZERjY1MjAw
MkIyODIwIC8qIFdLVVJMU2NoZW1lSGFuZGxlclRhc2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRDEyNDJGMUU2RERERDcwMDJCMjgyMCAvKiBXS1VS
TFNjaGVtZUhhbmRsZXJUYXNrLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGlj
LCApOyB9OyB9OwogCQk1MUQxMjQzNjFFNkRGQjM5MDAyQjI4MjAgLyogV0tVUkxTY2hlbWVIYW5k
bGVyVGFzay5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxRDEyNDMwMUU2RERERDcwMDJCMjgyMCAvKiBXS1VSTFNjaGVtZUhhbmRsZXJUYXNrLm1tICov
OyB9OwogCQk1MUQxMjQzQTFFNkUwQUFCMDAyQjI4MjAgLyogQVBJVVJMU2NoZW1lSGFuZGxlclRh
c2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFE
MTI0MzgxRTZERkRCOTAwMkIyODIwIC8qIEFQSVVSTFNjaGVtZUhhbmRsZXJUYXNrLmNwcCAqLzsg
fTsKKwkJNTFEMTI0OTExRTc0QkYzQzAwMkIyODIwIC8qIEFQSUhUVFBDb29raWVTdG9yYWdlLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRDEyNDgy
MUU3MzRBQzgwMDJCMjgyMCAvKiBBUElIVFRQQ29va2llU3RvcmFnZS5jcHAgKi87IH07CisJCTUx
RDEyNDkyMUU3NEJGNDgwMDJCMjgyMCAvKiBfV0tIVFRQQ29va2llU3RvcmFnZS5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRDEyNDg1MUU3MzRBRTMw
MDJCMjgyMCAvKiBfV0tIVFRQQ29va2llU3RvcmFnZS5tbSAqLzsgfTsKKwkJNTFEMTI0OTUxRTc1
RDYwRTAwMkIyODIwIC8qIFdlYkNvb2tpZVN0b3JhZ2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFEMTI0OTMxRTc1RDVDNTAwMkIyODIwIC8qIFdl
YkNvb2tpZVN0b3JhZ2UuY3BwICovOyB9OwogCQk1MUQxMzA1MzEzODJFQUMwMDAzNTFFREQgLyog
U2VjSXRlbVJlcXVlc3REYXRhLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUxRDEzMDRGMTM4MkVBQzAwMDM1MUVERCAvKiBTZWNJdGVtUmVxdWVzdERh
dGEuY3BwICovOyB9OwogCQk1MUQxMzA1NDEzODJFQUMwMDAzNTFFREQgLyogU2VjSXRlbVJlcXVl
c3REYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MUQxMzA1MDEzODJFQUMwMDAzNTFFREQgLyogU2VjSXRlbVJlcXVlc3REYXRhLmggKi87IH07CiAJ
CTUxRDEzMDU1MTM4MkVBQzAwMDM1MUVERCAvKiBTZWNJdGVtUmVzcG9uc2VEYXRhLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRDEzMDUxMTM4MkVB
QzAwMDM1MUVERCAvKiBTZWNJdGVtUmVzcG9uc2VEYXRhLmNwcCAqLzsgfTsKQEAgLTMyODUsNiAr
MzI4OCwxMyBAQAogCQk1MUQxMjQzNzFFNkRGRDJBMDAyQjI4MjAgLyogV0tVUkxTY2hlbWVIYW5k
bGVyVGFza0ludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLVVJM
U2NoZW1lSGFuZGxlclRhc2tJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1MUQxMjQzODFFNkRGREI5MDAyQjI4MjAgLyogQVBJVVJMU2NoZW1lSGFuZGxlclRhc2suY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQVBJVVJMU2NoZW1lSGFuZGxl
clRhc2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUQxMjQzOTFFNkRGREI5
MDAyQjI4MjAgLyogQVBJVVJMU2NoZW1lSGFuZGxlclRhc2suaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQVBJVVJMU2NoZW1lSGFuZGxlclRhc2suaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNTFEMTI0ODIxRTczNEFDODAwMkIyODIwIC8qIEFQSUhUVFBDb29raWVT
dG9yYWdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFQSUhUVFBD
b29raWVTdG9yYWdlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFEMTI0ODMx
RTczNEFDODAwMkIyODIwIC8qIEFQSUhUVFBDb29raWVTdG9yYWdlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEFQSUhUVFBDb29raWVTdG9yYWdlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTUxRDEyNDg0MUU3MzRBRTMwMDJCMjgyMCAvKiBfV0tIVFRQQ29va2ll
U3RvcmFnZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tIVFRQQ29va2ll
U3RvcmFnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MUQxMjQ4NTFFNzM0QUUz
MDAyQjI4MjAgLyogX1dLSFRUUENvb2tpZVN0b3JhZ2UubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBfV0tIVFRQQ29va2llU3RvcmFnZS5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNTFEMTI0ODYxRTczNEFFMzAwMkIyODIwIC8qIF9XS0hUVFBDb29r
aWVTdG9yYWdlSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dL
SFRUUENvb2tpZVN0b3JhZ2VJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk1MUQxMjQ5MzFFNzVENUM1MDAyQjI4MjAgLyogV2ViQ29va2llU3RvcmFnZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJDb29raWVTdG9yYWdlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFEMTI0OTQxRTc1RDVDNTAwMkIyODIwIC8qIFdl
YkNvb2tpZVN0b3JhZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ29v
a2llU3RvcmFnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUQxMzA0RjEzODJF
QUMwMDAzNTFFREQgLyogU2VjSXRlbVJlcXVlc3REYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFNlY0l0ZW1SZXF1ZXN0RGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTUxRDEzMDUwMTM4MkVBQzAwMDM1MUVERCAvKiBTZWNJdGVtUmVxdWVz
dERhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2VjSXRlbVJlcXVlc3RE
YXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxRDEzMDUxMTM4MkVBQzAwMDM1
MUVERCAvKiBTZWNJdGVtUmVzcG9uc2VEYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFNlY0l0ZW1SZXNwb25zZURhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtNDY3Myw2ICs0NjgzLDggQEAKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hp
bGRyZW4gPSAoCiAJCQkJMUE0ODMyQzAxQTk2NUEzMzAwOEI0REZFIC8qIENvY29hICovLAorCQkJ
CTUxRDEyNDkzMUU3NUQ1QzUwMDJCMjgyMCAvKiBXZWJDb29raWVTdG9yYWdlLmNwcCAqLywKKwkJ
CQk1MUQxMjQ5NDFFNzVENUM1MDAyQjI4MjAgLyogV2ViQ29va2llU3RvcmFnZS5oICovLAogCQkJ
CTFBNDgzMkQ4MUE5RDFGRDIwMDhCNERGRSAvKiBXZWJzaXRlRGF0YVJlY29yZC5jcHAgKi8sCiAJ
CQkJMUE0ODMyQ0YxQTlCRDgyMTAwOEI0REZFIC8qIFdlYnNpdGVEYXRhUmVjb3JkLmggKi8sCiAJ
CQkJMUE1M0MyQTQxQTMyNTY5RjAwNEU4QzcwIC8qIFdlYnNpdGVEYXRhU3RvcmUuY3BwICovLApA
QCAtNTQ3OCw2ICs1NDkwLDkgQEAKIAkJCQkyRTdBOTQ0OTFCQkQ5NUM2MDA5NDU1NDcgLyogX1dL
Rm9jdXNlZEVsZW1lbnRJbmZvLmggKi8sCiAJCQkJMzdBNjRFNTYxOEYzOEY0NjAwRUIzMEYxIC8q
IF9XS0Zvcm1JbnB1dFNlc3Npb24uaCAqLywKIAkJCQlDRDc4RTExODFEQjdFNUFEMDAxNEEyREUg
LyogX1dLRnVsbHNjcmVlbkRlbGVnYXRlLmggKi8sCisJCQkJNTFEMTI0ODQxRTczNEFFMzAwMkIy
ODIwIC8qIF9XS0hUVFBDb29raWVTdG9yYWdlLmggKi8sCisJCQkJNTFEMTI0ODUxRTczNEFFMzAw
MkIyODIwIC8qIF9XS0hUVFBDb29raWVTdG9yYWdlLm1tICovLAorCQkJCTUxRDEyNDg2MUU3MzRB
RTMwMDJCMjgyMCAvKiBfV0tIVFRQQ29va2llU3RvcmFnZUludGVybmFsLmggKi8sCiAJCQkJNTE0
M0IyNUUxRERDREZEMTAwMTRGQUM2IC8qIF9XS0ljb25Mb2FkaW5nRGVsZWdhdGUuaCAqLywKIAkJ
CQkzN0E2NEU1NDE4RjM4RTNDMDBFQjMwRjEgLyogX1dLSW5wdXREZWxlZ2F0ZS5oICovLAogCQkJ
CTJENzkwQTlDMUFENzA1MEQwMEFCOTBCMyAvKiBfV0tMYXlvdXRNb2RlLmggKi8sCkBAIC02NzMy
LDYgKzY3NDcsOCBAQAogCQkJCTJEQUJBNzc1MUE4MkI0MjEwMEVGMEYxQSAvKiBBUElIaXN0b3J5
Q2xpZW50LmggKi8sCiAJCQkJOTNBODhCNDIxQkM4ODI4QzAwQUJBNUMyIC8qIEFQSUhpdFRlc3RS
ZXN1bHQuY3BwICovLAogCQkJCTkzQTg4QjQzMUJDODgyOEMwMEFCQTVDMiAvKiBBUElIaXRUZXN0
UmVzdWx0LmggKi8sCisJCQkJNTFEMTI0ODIxRTczNEFDODAwMkIyODIwIC8qIEFQSUhUVFBDb29r
aWVTdG9yYWdlLmNwcCAqLywKKwkJCQk1MUQxMjQ4MzFFNzM0QUM4MDAyQjI4MjAgLyogQVBJSFRU
UENvb2tpZVN0b3JhZ2UuaCAqLywKIAkJCQk1MTQzQjI2MTFEREQwREEwMDAxNEZBQzYgLyogQVBJ
SWNvbkxvYWRpbmdDbGllbnQuaCAqLywKIAkJCQk3Q0U0RDIwNjFBNDY3NzU3MDBDN0YxNTIgLyog
QVBJTGVnYWN5Q29udGV4dEhpc3RvcnlDbGllbnQuaCAqLywKIAkJCQkxQTI0NjRGMjE4OTFFNDUx
MDAyMzRDNUIgLyogQVBJTG9hZGVyQ2xpZW50LmggKi8sCkBAIC05NjQwLDYgKzk2NTcsNyBAQAog
CQkJCTk5QzgxRDU5MUMyMEUxRTUwMDVDNEM4MiAvKiBBdXRvbWF0aW9uQ2xpZW50Lm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJOTk1NUE2RjYxQzc5ODZFMzAwRUI2QTkzIC8qIEF1dG9tYXRpb25Qcm90
b2NvbE9iamVjdHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTkwRDI4QkMxQzY1MzlEQTAwOTg2
OTc3IC8qIEF1dG9tYXRpb25TZXNzaW9uQ2xpZW50Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJNTFE
MTI0OTUxRTc1RDYwRTAwMkIyODIwIC8qIFdlYkNvb2tpZVN0b3JhZ2UuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJRTE2NEEyRjExOTFBRjE0RTAwMTA3MzdEIC8qIEJsb2JEYXRhRmlsZVJlZmVyZW5j
ZVdpdGhTYW5kYm94RXh0ZW5zaW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTgzQkZBQzQzMUQ5
NjEzN0MwMDQzMzQ5MCAvKiBCbG9iRG93bmxvYWRDbGllbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJRTE3MDg3NkIxNkQ2Q0E2OTAwRjk5MjI2IC8qIEJsb2JSZWdpc3RyeVByb3h5LmNwcCBpbiBT
b3VyY2VzICovLApAQCAtOTc2Nyw2ICs5Nzg1LDcgQEAKIAkJCQkxQTZGQkEyQjExRTY4NjI3MDBE
QjEzNzEgLyogTmV0c2NhcGVCcm93c2VyRnVuY3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE2
RkJEMjkxMUU2OUJDMjAwREIxMzcxIC8qIE5ldHNjYXBlUGx1Z2luLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTFBRTVCN0ZCMTFFN0FFRDIwMEJBNjc2NyAvKiBOZXRzY2FwZVBsdWdpbk1hYy5tbSBp
biBTb3VyY2VzICovLAorCQkJCTUxRDEyNDkyMUU3NEJGNDgwMDJCMjgyMCAvKiBfV0tIVFRQQ29v
a2llU3RvcmFnZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFBNEE5QzU1MTJCODE2Q0YwMDhGRTk4
NCAvKiBOZXRzY2FwZVBsdWdpbk1vZHVsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4MzlBMkYz
MTFFMjA2NzQ1MDAzOTA1N0UgLyogSGlnaFBlcmZvcm1hbmNlR3JhcGhpY3NVc2FnZVNhbXBsZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE0QTlDOUExMkI4MjFDRDAwOEZFOTg0IC8qIE5ldHNj
YXBlUGx1Z2luTW9kdWxlTWFjLm1tIGluIFNvdXJjZXMgKi8sCkBAIC05Nzg1LDYgKzk4MDQsNyBA
QAogCQkJCTgzMUVFQkJFMUJEODVDNDMwMEJCNjRDMyAvKiBOZXR3b3JrQ2FjaGVTcGVjdWxhdGl2
ZUxvYWQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODMyQUUyNTMxQkUyRThDRDAwRkFBRTEwIC8q
IE5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZE1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJODNCRENDQjkxQUM1RkRCNjAwM0Y2NDQxIC8qIE5ldHdvcmtDYWNoZVN0YXRpc3RpY3MuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJNTFEMTI0OTExRTc0QkYzQzAwMkIyODIwIC8qIEFQSUhUVFBD
b29raWVTdG9yYWdlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUU0NDM2RUQwMUEwRDA0MEIwMEVB
RDIwNCAvKiBOZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTgzMTA0
MjhDMUJENkI2NkYwMEE3MTVFNCAvKiBOZXR3b3JrQ2FjaGVTdWJyZXNvdXJjZXNFbnRyeS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk1MzAyNTgzRDFEQ0JCRDIyMDBEQTg5QzIgLyogTmV0d29ya0Nh
cHR1cmVFdmVudC5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmNwcAppbmRleCA5ZTIxZjc4Y2Nk
Yi4uNzIyYjliNDY3ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29v
a2llcy9XZWJDb29raWVNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5jcHAKQEAgLTcyLDIyICs3Miw1NSBAQCB2b2lkIFdl
YkNvb2tpZU1hbmFnZXI6OmRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZShTZXNzaW9uSUQgc2Vzc2lv
bklELCBjb25zdCBTdHJpbgogICAgICAgICBXZWJDb3JlOjpkZWxldGVDb29raWVzRm9ySG9zdG5h
bWVzKCpzdG9yYWdlU2Vzc2lvbiwgeyBob3N0bmFtZSB9KTsKIH0KIAorCiB2b2lkIFdlYkNvb2tp
ZU1hbmFnZXI6OmRlbGV0ZUFsbENvb2tpZXMoU2Vzc2lvbklEIHNlc3Npb25JRCkKIHsKICAgICBp
ZiAoYXV0byogc3RvcmFnZVNlc3Npb24gPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VT
ZXNzaW9uKHNlc3Npb25JRCkpCiAgICAgICAgIFdlYkNvcmU6OmRlbGV0ZUFsbENvb2tpZXMoKnN0
b3JhZ2VTZXNzaW9uKTsKIH0KIAotdm9pZCBXZWJDb29raWVNYW5hZ2VyOjpkZWxldGVBbGxDb29r
aWVzTW9kaWZpZWRTaW5jZShTZXNzaW9uSUQgc2Vzc2lvbklELCBzdGQ6OmNocm9ubzo6c3lzdGVt
X2Nsb2NrOjp0aW1lX3BvaW50IHRpbWUpCit2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmRlbGV0ZUNv
b2tpZShTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBDb29raWUmIGNvb2tpZSwgdWludDY0X3Qg
Y2FsbGJhY2tJRCkKK3sKKyAgICBpZiAoYXV0byogc3RvcmFnZVNlc3Npb24gPSBOZXR3b3JrU3Rv
cmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCisgICAgICAgIHN0b3JhZ2VT
ZXNzaW9uLT5kZWxldGVDb29raWUoY29va2llKTsKKworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViQ29va2llTWFuYWdlclByb3h5OjpEaWREZWxldGVDb29raWVzKGNhbGxiYWNrSUQp
LCAwKTsKK30KKwordm9pZCBXZWJDb29raWVNYW5hZ2VyOjpkZWxldGVBbGxDb29raWVzTW9kaWZp
ZWRTaW5jZShTZXNzaW9uSUQgc2Vzc2lvbklELCBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0
aW1lX3BvaW50IHRpbWUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiB7CiAgICAgaWYgKGF1dG8qIHN0
b3JhZ2VTZXNzaW9uID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNz
aW9uSUQpKQogICAgICAgICBXZWJDb3JlOjpkZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZSgq
c3RvcmFnZVNlc3Npb24sIHRpbWUpOworCisgICAgaWYgKGNhbGxiYWNrSUQpCisgICAgICAgIG1f
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlclByb3h5OjpEaWREZWxldGVD
b29raWVzKGNhbGxiYWNrSUQpLCAwKTsKIH0KIAotdm9pZCBXZWJDb29raWVNYW5hZ2VyOjpzZXRD
b29raWVzKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxDb29raWU+
JiBjb29raWVzLCBjb25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBtYWluRG9jdW1lbnRVUkwpCit2
b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmdldEFsbENvb2tpZXMoU2Vzc2lvbklEIHNlc3Npb25JRCwg
dWludDY0X3QgY2FsbGJhY2tJRCkKK3sKKyAgICBWZWN0b3I8Q29va2llPiBjb29raWVzOworICAg
IGlmIChhdXRvKiBzdG9yYWdlU2Vzc2lvbiA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFn
ZVNlc3Npb24oc2Vzc2lvbklEKSkKKyAgICAgICAgY29va2llcyA9IHN0b3JhZ2VTZXNzaW9uLT5n
ZXRBbGxDb29raWVzKCk7CisKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYkNvb2tp
ZU1hbmFnZXJQcm94eTo6RGlkR2V0Q29va2llcyhjb29raWVzLCBjYWxsYmFja0lEKSwgMCk7Cit9
CisKK3ZvaWQgV2ViQ29va2llTWFuYWdlcjo6Z2V0Q29va2llcyhTZXNzaW9uSUQgc2Vzc2lvbklE
LCBjb25zdCBVUkwmIHVybCwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3sKKyAgICBWZWN0b3I8Q29v
a2llPiBjb29raWVzOworICAgIGlmIChhdXRvKiBzdG9yYWdlU2Vzc2lvbiA9IE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKKyAgICAgICAgY29va2llcyA9
IHN0b3JhZ2VTZXNzaW9uLT5nZXRDb29raWVzKHVybCk7CisKKyAgICBtX3Byb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6RGlkR2V0Q29va2llcyhjb29raWVzLCBj
YWxsYmFja0lEKSwgMCk7Cit9CisKK3ZvaWQgV2ViQ29va2llTWFuYWdlcjo6c2V0Q29va2llcyhX
ZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBWZWN0b3I8Q29va2llPiYgY29va2ll
cywgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFVSTCYgbWFpbkRvY3VtZW50VVJMLCB1aW50NjRfdCBj
YWxsYmFja0lEKQogewogICAgIGlmIChhdXRvKiBzdG9yYWdlU2Vzc2lvbiA9IE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKICAgICAgICAgc3RvcmFnZVNl
c3Npb24tPnNldENvb2tpZXMoY29va2llcywgdXJsLCBtYWluRG9jdW1lbnRVUkwpOworCisgICAg
aWYgKGNhbGxiYWNrSUQpCisgICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViQ29v
a2llTWFuYWdlclByb3h5OjpEaWRTZXRDb29raWVzKGNhbGxiYWNrSUQpLCAwKTsKIH0KIAogdm9p
ZCBXZWJDb29raWVNYW5hZ2VyOjpub3RpZnlDb29raWVzRGlkQ2hhbmdlKFNlc3Npb25JRCBzZXNz
aW9uSUQpCkBAIC0xMTEsOSArMTQ0LDEyIEBAIHZvaWQgV2ViQ29va2llTWFuYWdlcjo6c3RvcE9i
c2VydmluZ0Nvb2tpZUNoYW5nZXMoU2Vzc2lvbklEIHNlc3Npb25JRCkKICAgICAgICAgV2ViQ29y
ZTo6c3RvcE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMoKnN0b3JhZ2VTZXNzaW9uKTsKIH0KIAotdm9p
ZCBXZWJDb29raWVNYW5hZ2VyOjpzZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KEhUVFBDb29raWVB
Y2NlcHRQb2xpY3kgcG9saWN5KQordm9pZCBXZWJDb29raWVNYW5hZ2VyOjpzZXRIVFRQQ29va2ll
QWNjZXB0UG9saWN5KEhUVFBDb29raWVBY2NlcHRQb2xpY3kgcG9saWN5LCB1aW50NjRfdCBjYWxs
YmFja0lEKQogewogICAgIHBsYXRmb3JtU2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShwb2xpY3kp
OworCisgICAgaWYgKGNhbGxiYWNrSUQpCisgICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6V2ViQ29va2llTWFuYWdlclByb3h5OjpEaWRTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KGNh
bGxiYWNrSUQpLCAwKTsKIH0KIAogdm9pZCBXZWJDb29raWVNYW5hZ2VyOjpnZXRIVFRQQ29va2ll
QWNjZXB0UG9saWN5KHVpbnQ2NF90IGNhbGxiYWNrSUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5oIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIuaAppbmRleCBkYjI3ZDIwYWFk
ZC4uYTM3YjZkZGFlOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29v
a2llcy9XZWJDb29raWVNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9D
b29raWVzL1dlYkNvb2tpZU1hbmFnZXIuaApAQCAtNTYsNyArNTYsOCBAQCBwdWJsaWM6CiAKICAg
ICBzdGF0aWMgY29uc3QgY2hhciogc3VwcGxlbWVudE5hbWUoKTsKIAotICAgIHZvaWQgc2V0SFRU
UENvb2tpZUFjY2VwdFBvbGljeShIVFRQQ29va2llQWNjZXB0UG9saWN5KTsKKyAgICB2b2lkIHNl
dEhUVFBDb29raWVBY2NlcHRQb2xpY3koSFRUUENvb2tpZUFjY2VwdFBvbGljeSwgdWludDY0X3Qg
Y2FsbGJhY2tJRCk7CisKICNpZiBVU0UoU09VUCkKICAgICB2b2lkIHNldENvb2tpZVBlcnNpc3Rl
bnRTdG9yYWdlKGNvbnN0IFN0cmluZyYgc3RvcmFnZVBhdGgsIHVpbnQzMl90IHN0b3JhZ2VUeXBl
KTsKICNlbmRpZgpAQCAtNjgsMTEgKzY5LDE1IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZWNl
aXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsKIAog
ICAgIHZvaWQgZ2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklELCB1aW50
NjRfdCBjYWxsYmFja0lEKTsKKworICAgIHZvaWQgZGVsZXRlQ29va2llKFdlYkNvcmU6OlNlc3Np
b25JRCwgY29uc3QgV2ViQ29yZTo6Q29va2llJiwgdWludDY0X3QgY2FsbGJhY2tJRCk7CiAgICAg
dm9pZCBkZWxldGVDb29raWVzRm9ySG9zdG5hbWUoV2ViQ29yZTo6U2Vzc2lvbklELCBjb25zdCBT
dHJpbmcmKTsKICAgICB2b2lkIGRlbGV0ZUFsbENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklEKTsK
LSAgICB2b2lkIGRlbGV0ZUFsbENvb2tpZXNNb2RpZmllZFNpbmNlKFdlYkNvcmU6OlNlc3Npb25J
RCwgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCk7CisgICAgdm9pZCBkZWxl
dGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZShXZWJDb3JlOjpTZXNzaW9uSUQsIHN0ZDo6Y2hyb25v
OjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwogCi0gICAg
dm9pZCBzZXRDb29raWVzKFdlYkNvcmU6OlNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6
OkNvb2tpZT4mLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXZWJDb3JlOjpVUkwmIG1haW5E
b2N1bWVudFVSTCk7CisgICAgdm9pZCBzZXRDb29raWVzKFdlYkNvcmU6OlNlc3Npb25JRCwgY29u
c3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBX
ZWJDb3JlOjpVUkwmIG1haW5Eb2N1bWVudFVSTCwgdWludDY0X3QgY2FsbGJhY2tJRCk7CisgICAg
dm9pZCBnZXRBbGxDb29raWVzKFdlYkNvcmU6OlNlc3Npb25JRCwgdWludDY0X3QgY2FsbGJhY2tJ
RCk7CisgICAgdm9pZCBnZXRDb29raWVzKFdlYkNvcmU6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29y
ZTo6VVJMJiwgdWludDY0X3QgY2FsbGJhY2tJRCk7CiAKICAgICB2b2lkIHBsYXRmb3JtU2V0SFRU
UENvb2tpZUFjY2VwdFBvbGljeShIVFRQQ29va2llQWNjZXB0UG9saWN5KTsKICAgICB2b2lkIGdl
dEhUVFBDb29raWVBY2NlcHRQb2xpY3kodWludDY0X3QgY2FsbGJhY2tJRCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5tZXNz
YWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5h
Z2VyLm1lc3NhZ2VzLmluCmluZGV4IDAwZTdiNjViNzQ5Li42Y2I4NjkyMWIzYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIubWVz
c2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tp
ZU1hbmFnZXIubWVzc2FnZXMuaW4KQEAgLTI3LDExICsyNywxNCBAQAogICAgIHZvaWQgR2V0SG9z
dG5hbWVzV2l0aENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3Qg
Y2FsbGJhY2tJRCkKICAgICB2b2lkIERlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZShXZWJDb3JlOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBTdHJpbmcgaG9zdG5hbWUpCiAgICAgdm9pZCBEZWxldGVBbGxD
b29raWVzKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQpCi0gICAgdm9pZCBEZWxldGVBbGxD
b29raWVzTW9kaWZpZWRTaW5jZShXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBzdGQ6OmNo
cm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IHRpbWUpCiAKLSAgICB2b2lkIFNldENvb2tp
ZXMoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4g
Y29va2llcywgV2ViQ29yZTo6VVJMIHVybCwgV2ViQ29yZTo6VVJMIG1haW5Eb2N1bWVudFVSTCk7
CisgICAgdm9pZCBTZXRDb29raWVzKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFZlY3Rv
cjxXZWJDb3JlOjpDb29raWU+IGNvb2tpZXMsIFdlYkNvcmU6OlVSTCB1cmwsIFdlYkNvcmU6OlVS
TCBtYWluRG9jdW1lbnRVUkwsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCisgICAgdm9pZCBHZXRBbGxD
b29raWVzKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IGNhbGxiYWNrSUQp
CisgICAgdm9pZCBHZXRDb29raWVzKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNv
cmU6OlVSTCB1cmwsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCisgICAgdm9pZCBEZWxldGVDb29raWUo
V2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgc3RydWN0IFdlYkNvcmU6OkNvb2tpZSBjb29r
aWUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCisgICAgdm9pZCBEZWxldGVBbGxDb29raWVzTW9kaWZp
ZWRTaW5jZShXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBzdGQ6OmNocm9ubzo6c3lzdGVt
X2Nsb2NrOjp0aW1lX3BvaW50IHRpbWUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAKLSAgICB2b2lk
IFNldEhUVFBDb29raWVBY2NlcHRQb2xpY3kodWludDMyX3QgcG9saWN5KQorICAgIHZvaWQgU2V0
SFRUUENvb2tpZUFjY2VwdFBvbGljeSh1aW50MzJfdCBwb2xpY3ksIHVpbnQ2NF90IGNhbGxiYWNr
SUQpCiAgICAgdm9pZCBHZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHVpbnQ2NF90IGNhbGxiYWNr
SUQpCiAgICAgCiAgICAgdm9pZCBTdGFydE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMoV2ViQ29yZTo6
U2Vzc2lvbklEIHNlc3Npb25JRCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>304237</attachid>
            <date>2017-03-13 00:45:48 -0700</date>
            <delta_ts>2017-03-13 01:13:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>68783</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nvb2tpZS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vQ29va2llLmgKaW5kZXggZTQ3ZTdiYmZmNWIuLjVkZGI5MzU0Y2U4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db29raWUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9Db29raWUuaApAQCAtNTgsNyArNTgsNyBAQCBzdHJ1Y3QgQ29va2ll
IHsKIAogI2lmZGVmIF9fT0JKQ19fCiAgICAgV0VCQ09SRV9FWFBPUlQgQ29va2llKE5TSFRUUENv
b2tpZSAqKTsKLSAgICBvcGVyYXRvciBOU0hUVFBDb29raWUgKigpIGNvbnN0OworICAgIFdFQkNP
UkVfRVhQT1JUIG9wZXJhdG9yIE5TSFRUUENvb2tpZSAqKCkgY29uc3Q7CiAjZW5kaWYKIAogICAg
IFN0cmluZyBuYW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgKaW5kZXggZjE0ODljNmI0MmEuLjdlNWJjZTY0ZmY4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9y
YWdlU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29y
a1N0b3JhZ2VTZXNzaW9uLmgKQEAgLTEwMSw2ICsxMDEsOSBAQCBwdWJsaWM6CiAjZW5kaWYKIAog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q29va2llcyhjb25zdCBWZWN0b3I8Q29va2llPiYs
IGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgbWFpbkRvY3VtZW50VVJMKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBDb29raWUmKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBWZWN0b3I8Q29va2llPiBnZXRBbGxDb29raWVzKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgVmVj
dG9yPENvb2tpZT4gZ2V0Q29va2llcyhjb25zdCBVUkwmKTsKIAogcHJpdmF0ZToKICAgICBzdGF0
aWMgSGFzaE1hcDxTZXNzaW9uSUQsIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrU3RvcmFnZVNlc3Np
b24+PiYgZ2xvYmFsU2Vzc2lvbk1hcCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29j
b2EubW0KaW5kZXggNDRhZWFiNzBlOTkuLmYzYjg0ZDE5ZmE0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29h
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0
b3JhZ2VTZXNzaW9uQ29jb2EubW0KQEAgLTQzLDYgKzQzLDMxIEBAIHZvaWQgTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpzZXRDb29raWVzKGNvbnN0IFZlY3RvcjxDb29raWU+JiBjb29raWVzLCBjb25z
dCBVUkwmCiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIH0KIAordm9pZCBOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OmRlbGV0ZUNvb2tpZShjb25zdCBDb29raWUmIGNvb2tpZSkKK3sKKyAg
ICBbbnNDb29raWVTdG9yYWdlKCkgZGVsZXRlQ29va2llOihOU0hUVFBDb29raWUgKiljb29raWVd
OworfQorCitzdGF0aWMgVmVjdG9yPENvb2tpZT4gbnNDb29raWVzVG9Db29raWVWZWN0b3IoTlNB
cnJheTxOU0hUVFBDb29raWUgKj4gKm5zQ29va2llcykKK3sKKyAgICBWZWN0b3I8Q29va2llPiBj
b29raWVzOworICAgIGNvb2tpZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShuc0Nvb2tpZXMuY291
bnQpOworICAgIGZvciAoTlNIVFRQQ29va2llICpuc0Nvb2tpZSBpbiBuc0Nvb2tpZXMpCisgICAg
ICAgIGNvb2tpZXMudW5jaGVja2VkQXBwZW5kKG5zQ29va2llKTsKKworICAgIHJldHVybiBjb29r
aWVzOworfQorCitWZWN0b3I8Q29va2llPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmdldEFsbENv
b2tpZXMoKQoreworICAgIHJldHVybiBuc0Nvb2tpZXNUb0Nvb2tpZVZlY3Rvcihuc0Nvb2tpZVN0
b3JhZ2UoKS5jb29raWVzKTsKK30KKworVmVjdG9yPENvb2tpZT4gTmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpnZXRDb29raWVzKGNvbnN0IFVSTCYgdXJsKQoreworICAgIHJldHVybiBuc0Nvb2tpZXNU
b0Nvb2tpZVZlY3RvcihbbnNDb29raWVTdG9yYWdlKCkgY29va2llc0ZvclVSTDooTlNVUkwgKil1
cmxdKTsKK30KKwogTlNIVFRQQ29va2llU3RvcmFnZSAqTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpu
c0Nvb2tpZVN0b3JhZ2UoKSBjb25zdAogewogICAgIGF1dG8gY2ZDb29raWVTdG9yYWdlID0gY29v
a2llU3RvcmFnZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lvblNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lvblNvdXAuY3BwCmluZGV4IDI0
OWJkODJiZDc0Li4zNmVmOWZlY2IzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lvblNvdXAuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3Vw
LmNwcApAQCAtMzA0LDYgKzMwNCwyMCBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0
Q29va2llcyhjb25zdCBWZWN0b3I8Q29va2llPiYgY29va2llcywgY29uc3QgVVJMJgogICAgICAg
ICBzb3VwX2Nvb2tpZV9qYXJfYWRkX2Nvb2tpZShjb29raWVTdG9yYWdlKCksIHRvU291cENvb2tp
ZShjb29raWUpKTsKIH0KIAordm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlbGV0ZUNvb2tp
ZShjb25zdCBDb29raWUmKQoreworCS8vIEZJWE1FOiBJbXBsZW1lbnQgZm9yIFdLMiB0byB1c2Uu
Cit9CisKK1ZlY3RvcjxDb29raWU+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0QWxsQ29va2ll
cygpCit7CisJLy8gRklYTUU6IEltcGxlbWVudCBmb3IgV0syIHRvIHVzZS4KK30KKworVmVjdG9y
PENvb2tpZT4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpnZXRDb29raWVzKGNvbnN0IFVSTCYpCit7
CisJLy8gRklYTUU6IEltcGxlbWVudCBmb3IgV0syIHRvIHVzZS4KK30KIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dCBi
L1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0CmluZGV4IDgxZmY4ZGE4MTEyLi4xMWRlN2Fh
ZGU5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKKysrIGIvU291
cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKQEAgLTMzNiw2ICszMzYsNyBAQCBzZXQoV2ViS2l0
Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNzL0FQSS9BUElDb250ZW50RXh0ZW5zaW9uU3RvcmUuY3Bw
CiAgICAgVUlQcm9jZXNzL0FQSS9BUElFeHBlcmltZW50YWxGZWF0dXJlLmNwcAogICAgIFVJUHJv
Y2Vzcy9BUEkvQVBJRnJhbWVJbmZvLmNwcAorICAgIFVJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tp
ZVN0b3JhZ2UuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9BUElIaXRUZXN0UmVzdWx0LmNwcAogICAg
IFVJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbi5jcHAKICAgICBVSVByb2Nlc3MvQVBJL0FQSU5h
dmlnYXRpb25EYXRhLmNwcApAQCAtNDQ0LDYgKzQ0NSw3IEBAIHNldChXZWJLaXQyX1NPVVJDRVMK
ICAgICBVSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXIuY3BwCiAg
ICAgVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmNw
cAogCisgICAgVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYkNvb2tpZVN0b3JhZ2UuY3BwCiAgICAg
VUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhUmVjb3JkLmNwcAogICAgIFVJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvQVBJL0FQSU9iamVjdC5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQ
SS9BUElPYmplY3QuaAppbmRleCBhZTBmYzk5ODViZC4uNDZmMjc5MWRkZmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvQVBJT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYktp
dDIvU2hhcmVkL0FQSS9BUElPYmplY3QuaApAQCAtMTE2LDYgKzExNiw3IEBAIHB1YmxpYzoKICAg
ICAgICAgRnVsbFNjcmVlbk1hbmFnZXIsCiAgICAgICAgIEdlb2xvY2F0aW9uTWFuYWdlciwKICAg
ICAgICAgR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdCwKKyAgICAgICAgSFRUUENvb2tpZVN0
b3JhZ2UsCiAgICAgICAgIEhpdFRlc3RSZXN1bHQsCiAgICAgICAgIEdlb2xvY2F0aW9uUG9zaXRp
b24sCiAgICAgICAgIEdyYW1tYXJEZXRhaWwsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvQ29jb2EvQVBJT2JqZWN0Lm1tIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0NvY29hL0FQ
SU9iamVjdC5tbQppbmRleCAxMTYzMjQ1NDIwYy4uYzcyMTc2MjkzY2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9Db2NvYS9BUElPYmplY3QubW0KKysrIGIvU291cmNlL1dlYktp
dDIvU2hhcmVkL0NvY29hL0FQSU9iamVjdC5tbQpAQCAtNzEsNiArNzEsNyBAQAogI2ltcG9ydCAi
X1dLRG93bmxvYWRJbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLRXhwZXJpbWVudGFsRmVhdHVyZUlu
dGVybmFsLmgiCiAjaW1wb3J0ICJfV0tGcmFtZUhhbmRsZUludGVybmFsLmgiCisjaW1wb3J0ICJf
V0tIVFRQQ29va2llU3RvcmFnZUludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tIaXRUZXN0UmVzdWx0
SW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbkludGVybmFs
LmgiCiAjaW1wb3J0ICJfV0tVc2VyQ29udGVudFdvcmxkSW50ZXJuYWwuaCIKQEAgLTE3OCw2ICsx
NzksMTAgQEAgdm9pZCogT2JqZWN0OjpuZXdPYmplY3Qoc2l6ZV90IHNpemUsIFR5cGUgdHlwZSkK
ICAgICAgICAgd3JhcHBlciA9IFtXS0ZyYW1lSW5mbyBhbGxvY107CiAgICAgICAgIGJyZWFrOwog
CisgICAgY2FzZSBUeXBlOjpIVFRQQ29va2llU3RvcmFnZToKKyAgICAgICAgd3JhcHBlciA9IFtf
V0tIVFRQQ29va2llU3RvcmFnZSBhbGxvY107CisgICAgICAgIGJyZWFrOworCiAjaWYgUExBVEZP
Uk0oTUFDKQogICAgIGNhc2UgVHlwZTo6SGl0VGVzdFJlc3VsdDoKICAgICAgICAgd3JhcHBlciA9
IFtfV0tIaXRUZXN0UmVzdWx0IGFsbG9jXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9BUElIVFRQQ29va2llU3RvcmFnZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAuLmUyM2Y5Y2FmNGFmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElIVFRQQ29va2llU3RvcmFnZS5jcHAKQEAgLTAsMCAr
MSwxMzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQVBJ
SFRUUENvb2tpZVN0b3JhZ2UuaCIKKworI2luY2x1ZGUgIkFQSVdlYnNpdGVEYXRhU3RvcmUuaCIK
KyNpbmNsdWRlICJXZWJDb29raWVNYW5hZ2VyUHJveHkuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNz
UG9vbC5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ29va2llLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBX
ZWJLaXQ7CisKK25hbWVzcGFjZSBBUEkgeworCitIVFRQQ29va2llU3RvcmFnZTo6SFRUUENvb2tp
ZVN0b3JhZ2UoV2Vic2l0ZURhdGFTdG9yZSYgd2Vic2l0ZURhdGFTdG9yZSkKKyAgICA6IG1fb3du
aW5nRGF0YVN0b3JlKHdlYnNpdGVEYXRhU3RvcmUpCit7Cit9CisKK0hUVFBDb29raWVTdG9yYWdl
Ojp+SFRUUENvb2tpZVN0b3JhZ2UoKQoreworfQorCit2b2lkIEhUVFBDb29raWVTdG9yYWdlOjpj
b29raWVzKEZ1bmN0aW9uPHZvaWQgKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgYXV0byYgZGF0YVN0b3JlID0gbV9vd25pbmdEYXRh
U3RvcmUud2Vic2l0ZURhdGFTdG9yZSgpOworICAgIGF1dG8gcG9vbCA9IGRhdGFTdG9yZS5wcm9j
ZXNzUG9vbEZvckNvb2tpZVN0b3JhZ2VPcGVyYXRpb25zKCk7CisgICAgYXV0byogY29va2llTWFu
YWdlciA9IHBvb2wtPnN1cHBsZW1lbnQ8V2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk+KCk7
CisKKyAgICBjb29raWVNYW5hZ2VyLT5nZXRBbGxDb29raWVzKGRhdGFTdG9yZS5zZXNzaW9uSUQo
KSwgW3Bvb2wgPSBXVEZNb3ZlKHBvb2wpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpXShjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYgY29va2llcywg
Q2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcikgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihj
b29raWVzKTsKKyAgICB9KTsKK30KKwordm9pZCBIVFRQQ29va2llU3RvcmFnZTo6Y29va2llcyhj
b25zdCBXZWJDb3JlOjpVUkwmIHVybCwgRnVuY3Rpb248dm9pZCAoY29uc3QgVmVjdG9yPFdlYkNv
cmU6OkNvb2tpZT4mKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBhdXRvJiBkYXRhU3Rv
cmUgPSBtX293bmluZ0RhdGFTdG9yZS53ZWJzaXRlRGF0YVN0b3JlKCk7CisgICAgYXV0byBwb29s
ID0gZGF0YVN0b3JlLnByb2Nlc3NQb29sRm9yQ29va2llU3RvcmFnZU9wZXJhdGlvbnMoKTsKKyAg
ICBhdXRvKiBjb29raWVNYW5hZ2VyID0gcG9vbC0+c3VwcGxlbWVudDxXZWJLaXQ6OldlYkNvb2tp
ZU1hbmFnZXJQcm94eT4oKTsKKworICAgIGNvb2tpZU1hbmFnZXItPmdldENvb2tpZXMoZGF0YVN0
b3JlLnNlc3Npb25JRCgpLCB1cmwsIFtwb29sID0gV1RGTW92ZShwb29sKSwgY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oY29uc3QgVmVjdG9yPFdlYkNvcmU6
OkNvb2tpZT4mIGNvb2tpZXMsIENhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKKyAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoY29va2llcyk7CisgICAgfSk7Cit9CisKK3ZvaWQgSFRUUENvb2tp
ZVN0b3JhZ2U6OnNldENvb2tpZShjb25zdCBXZWJDb3JlOjpDb29raWUmIGNvb2tpZSwgRnVuY3Rp
b248dm9pZCAoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBhdXRvJiBkYXRhU3RvcmUg
PSBtX293bmluZ0RhdGFTdG9yZS53ZWJzaXRlRGF0YVN0b3JlKCk7CisgICAgYXV0byBwb29sID0g
ZGF0YVN0b3JlLnByb2Nlc3NQb29sRm9yQ29va2llU3RvcmFnZU9wZXJhdGlvbnMoKTsKKyAgICBh
dXRvKiBjb29raWVNYW5hZ2VyID0gcG9vbC0+c3VwcGxlbWVudDxXZWJLaXQ6OldlYkNvb2tpZU1h
bmFnZXJQcm94eT4oKTsKKworICAgIGNvb2tpZU1hbmFnZXItPnNldENvb2tpZXMoZGF0YVN0b3Jl
LnNlc3Npb25JRCgpLCB7IGNvb2tpZSB9LCB7IH0sIHsgfSwgW3Bvb2wgPSBXVEZNb3ZlKHBvb2wp
LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShDYWxsYmFj
a0Jhc2U6OkVycm9yIGVycm9yKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAg
fSk7Cit9CisKK3ZvaWQgSFRUUENvb2tpZVN0b3JhZ2U6OnNldENvb2tpZXMoY29uc3QgVmVjdG9y
PFdlYkNvcmU6OkNvb2tpZT4mIGNvb2tpZXMsIGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsLCBjb25z
dCBXZWJDb3JlOjpVUkwmIG1haW5Eb2N1bWVudFVSTCwgRnVuY3Rpb248dm9pZCAoKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKK3sKKyAgICBhdXRvJiBkYXRhU3RvcmUgPSBtX293bmluZ0RhdGFTdG9y
ZS53ZWJzaXRlRGF0YVN0b3JlKCk7CisgICAgYXV0byBwb29sID0gZGF0YVN0b3JlLnByb2Nlc3NQ
b29sRm9yQ29va2llU3RvcmFnZU9wZXJhdGlvbnMoKTsKKyAgICBhdXRvKiBjb29raWVNYW5hZ2Vy
ID0gcG9vbC0+c3VwcGxlbWVudDxXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eT4oKTsKKwor
ICAgIGNvb2tpZU1hbmFnZXItPnNldENvb2tpZXMoZGF0YVN0b3JlLnNlc3Npb25JRCgpLCBjb29r
aWVzLCB1cmwsIG1haW5Eb2N1bWVudFVSTCwgW3Bvb2wgPSBXVEZNb3ZlKHBvb2wpLCBjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShDYWxsYmFja0Jhc2U6OkVy
cm9yIGVycm9yKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgfSk7Cit9CisK
K3ZvaWQgSFRUUENvb2tpZVN0b3JhZ2U6OmRlbGV0ZUNvb2tpZShjb25zdCBXZWJDb3JlOjpDb29r
aWUmIGNvb2tpZSwgRnVuY3Rpb248dm9pZCAoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAg
ICBhdXRvJiBkYXRhU3RvcmUgPSBtX293bmluZ0RhdGFTdG9yZS53ZWJzaXRlRGF0YVN0b3JlKCk7
CisgICAgYXV0byBwb29sID0gZGF0YVN0b3JlLnByb2Nlc3NQb29sRm9yQ29va2llU3RvcmFnZU9w
ZXJhdGlvbnMoKTsKKyAgICBhdXRvKiBjb29raWVNYW5hZ2VyID0gcG9vbC0+c3VwcGxlbWVudDxX
ZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eT4oKTsKKworICAgIGNvb2tpZU1hbmFnZXItPmRl
bGV0ZUNvb2tpZShkYXRhU3RvcmUuc2Vzc2lvbklEKCksIGNvb2tpZSwgW3Bvb2wgPSBXVEZNb3Zl
KHBvb2wpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShD
YWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7
CisgICAgfSk7Cit9CisKK3ZvaWQgSFRUUENvb2tpZVN0b3JhZ2U6OnJlbW92ZUNvb2tpZXNTaW5j
ZURhdGUoc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCBkYXRlLCBGdW5jdGlv
bjx2b2lkICgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGF1dG8mIGRhdGFTdG9yZSA9
IG1fb3duaW5nRGF0YVN0b3JlLndlYnNpdGVEYXRhU3RvcmUoKTsKKyAgICBhdXRvIHBvb2wgPSBk
YXRhU3RvcmUucHJvY2Vzc1Bvb2xGb3JDb29raWVTdG9yYWdlT3BlcmF0aW9ucygpOworICAgIGF1
dG8qIGNvb2tpZU1hbmFnZXIgPSBwb29sLT5zdXBwbGVtZW50PFdlYktpdDo6V2ViQ29va2llTWFu
YWdlclByb3h5PigpOworCisgICAgY29va2llTWFuYWdlci0+ZGVsZXRlQWxsQ29va2llc01vZGlm
aWVkU2luY2UoZGF0YVN0b3JlLnNlc3Npb25JRCgpLCBkYXRlLCBbcG9vbCA9IFdURk1vdmUocG9v
bCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKENhbGxi
YWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAg
ICB9KTsKK30KKwordm9pZCBIVFRQQ29va2llU3RvcmFnZTo6c2V0SFRUUENvb2tpZUFjY2VwdFBv
bGljeShIVFRQQ29va2llQWNjZXB0UG9saWN5IHBvbGljeSwgRnVuY3Rpb248dm9pZCAoKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBhdXRvJiBkYXRhU3RvcmUgPSBtX293bmluZ0RhdGFT
dG9yZS53ZWJzaXRlRGF0YVN0b3JlKCk7CisgICAgYXV0byBwb29sID0gZGF0YVN0b3JlLnByb2Nl
c3NQb29sRm9yQ29va2llU3RvcmFnZU9wZXJhdGlvbnMoKTsKKyAgICBhdXRvKiBjb29raWVNYW5h
Z2VyID0gcG9vbC0+c3VwcGxlbWVudDxXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eT4oKTsK
KworICAgIGNvb2tpZU1hbmFnZXItPnNldEhUVFBDb29raWVBY2NlcHRQb2xpY3koZGF0YVN0b3Jl
LnNlc3Npb25JRCgpLCBwb2xpY3ksIFtwb29sID0gV1RGTW92ZShwb29sKSwgY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oQ2FsbGJhY2tCYXNlOjpFcnJvciBl
cnJvcikgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAgIH0pOworfQorCit2b2lk
IEhUVFBDb29raWVTdG9yYWdlOjpnZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KEZ1bmN0aW9uPHZv
aWQgKEhUVFBDb29raWVBY2NlcHRQb2xpY3kpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAg
IGF1dG8mIGRhdGFTdG9yZSA9IG1fb3duaW5nRGF0YVN0b3JlLndlYnNpdGVEYXRhU3RvcmUoKTsK
KyAgICBhdXRvIHBvb2wgPSBkYXRhU3RvcmUucHJvY2Vzc1Bvb2xGb3JDb29raWVTdG9yYWdlT3Bl
cmF0aW9ucygpOworICAgIGF1dG8qIGNvb2tpZU1hbmFnZXIgPSBwb29sLT5zdXBwbGVtZW50PFdl
YktpdDo6V2ViQ29va2llTWFuYWdlclByb3h5PigpOworCisgICAgY29va2llTWFuYWdlci0+Z2V0
SFRUUENvb2tpZUFjY2VwdFBvbGljeShkYXRhU3RvcmUuc2Vzc2lvbklEKCksIFtwb29sID0gV1RG
TW92ZShwb29sKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KV0oSFRUUENvb2tpZUFjY2VwdFBvbGljeSBwb2xpY3ksIENhbGxiYWNrQmFzZTo6RXJyb3IgZXJy
b3IpIHsKKyAgICAgICAgaWYgKGVycm9yICE9IENhbGxiYWNrQmFzZTo6RXJyb3I6Ok5vbmUpCisg
ICAgICAgICAgICBwb2xpY3kgPSBIVFRQQ29va2llQWNjZXB0UG9saWN5TmV2ZXI7CisKKyAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIocG9saWN5KTsKKyAgICB9KTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSUhUVFBD
b29raWVTdG9yYWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSUhUVFBDb29r
aWVTdG9yYWdlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmQzYjkz
OGVlNDJmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9B
UElIVFRQQ29va2llU3RvcmFnZS5oCkBAIC0wLDAgKzEsNjkgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2luY2x1ZGUgIkFQSU9iamVjdC5oIgorI2luY2x1ZGUgIkhUVFBDb29raWVB
Y2NlcHRQb2xpY3kuaCIKKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KKyNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFVSTDsKK3N0cnVjdCBDb29r
aWU7Cit9CisKK25hbWVzcGFjZSBBUEkgeworCitjbGFzcyBXZWJzaXRlRGF0YVN0b3JlOworCitj
bGFzcyBIVFRQQ29va2llU3RvcmFnZSBmaW5hbCA6IHB1YmxpYyBPYmplY3RJbXBsPE9iamVjdDo6
VHlwZTo6SFRUUENvb2tpZVN0b3JhZ2U+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPEhUVFBD
b29raWVTdG9yYWdlPiBjcmVhdGUoV2Vic2l0ZURhdGFTdG9yZSYgd2Vic2l0ZURhdGFTdG9yZSkK
KyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEhUVFBDb29raWVTdG9yYWdlKHdl
YnNpdGVEYXRhU3RvcmUpKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5IVFRQQ29va2llU3RvcmFn
ZSgpOworCisgICAgdm9pZCBjb29raWVzKEZ1bmN0aW9uPHZvaWQgKGNvbnN0IFZlY3RvcjxXZWJD
b3JlOjpDb29raWU+Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpOworICAgIHZvaWQgY29va2llcyhj
b25zdCBXZWJDb3JlOjpVUkwmLCBGdW5jdGlvbjx2b2lkIChjb25zdCBWZWN0b3I8V2ViQ29yZTo6
Q29va2llPiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKKworICAgIHZvaWQgc2V0Q29va2llKGNv
bnN0IFdlYkNvcmU6OkNvb2tpZSYsIEZ1bmN0aW9uPHZvaWQgKCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpOworICAgIHZvaWQgc2V0Q29va2llcyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYs
IGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgbWFpbkRvY3VtZW50VVJM
LCBGdW5jdGlvbjx2b2lkICgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICB2b2lkIGRlbGV0
ZUNvb2tpZShjb25zdCBXZWJDb3JlOjpDb29raWUmLCBGdW5jdGlvbjx2b2lkICgpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKTsKKworICAgIHZvaWQgcmVtb3ZlQ29va2llc1NpbmNlRGF0ZShzdGQ6OmNo
cm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50LCBGdW5jdGlvbjx2b2lkICgpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKTsKKworICAgIHZvaWQgc2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShXZWJL
aXQ6OkhUVFBDb29raWVBY2NlcHRQb2xpY3ksIEZ1bmN0aW9uPHZvaWQgKCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpOworICAgIHZvaWQgZ2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShGdW5jdGlvbjx2
b2lkIChXZWJLaXQ6OkhUVFBDb29raWVBY2NlcHRQb2xpY3kpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KTsKKyAgICAKK3ByaXZhdGU6CisgICAgSFRUUENvb2tpZVN0b3JhZ2UoV2Vic2l0ZURhdGFTdG9y
ZSYgd2Vic2l0ZURhdGFTdG9yZSk7CisKKyAgICBXZWJzaXRlRGF0YVN0b3JlJiBtX293bmluZ0Rh
dGFTdG9yZTsKK307CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0FQSVdlYnNpdGVEYXRhU3RvcmUuY3BwCmluZGV4IDVjNzhjY2Q3YWUyLi5jYTFkZjc1NzEwZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0
b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRh
U3RvcmUuY3BwCkBAIC0zMSwxMyArMzEsMTMgQEAKIAogbmFtZXNwYWNlIEFQSSB7CiAKLVJlZlB0
cjxXZWJzaXRlRGF0YVN0b3JlPiBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlKCkK
K1JlZjxXZWJzaXRlRGF0YVN0b3JlPiBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3Jl
KCkKIHsKICAgICBXZWJLaXQ6OkluaXRpYWxpemVXZWJLaXQyKCk7CiAKICAgICBzdGF0aWMgV2Vi
c2l0ZURhdGFTdG9yZSogZGVmYXVsdERhdGFTdG9yZSA9IGFkb3B0UmVmKG5ldyBXZWJzaXRlRGF0
YVN0b3JlKGRlZmF1bHREYXRhU3RvcmVDb25maWd1cmF0aW9uKCkpKS5sZWFrUmVmKCk7CiAKLSAg
ICByZXR1cm4gZGVmYXVsdERhdGFTdG9yZTsKKyAgICByZXR1cm4gKmRlZmF1bHREYXRhU3RvcmU7
CiB9CiAKIFJlZjxXZWJzaXRlRGF0YVN0b3JlPiBXZWJzaXRlRGF0YVN0b3JlOjpjcmVhdGVOb25Q
ZXJzaXN0ZW50RGF0YVN0b3JlKCkKQEAgLTY0LDYgKzY0LDE0IEBAIFdlYnNpdGVEYXRhU3RvcmU6
On5XZWJzaXRlRGF0YVN0b3JlKCkKIHsKIH0KIAorSFRUUENvb2tpZVN0b3JhZ2UmIFdlYnNpdGVE
YXRhU3RvcmU6Omh0dHBDb29raWVTdG9yYWdlKCkKK3sKKyAgICBpZiAoIW1fYXBpSFRUUENvb2tp
ZVN0b3JhZ2UpCisgICAgICAgIG1fYXBpSFRUUENvb2tpZVN0b3JhZ2UgPSBIVFRQQ29va2llU3Rv
cmFnZTo6Y3JlYXRlKCp0aGlzKTsKKworICAgIHJldHVybiAqbV9hcGlIVFRQQ29va2llU3RvcmFn
ZTsKK30KKwogYm9vbCBXZWJzaXRlRGF0YVN0b3JlOjppc1BlcnNpc3RlbnQoKQogewogICAgIHJl
dHVybiBtX3dlYnNpdGVEYXRhU3RvcmUtPmlzUGVyc2lzdGVudCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUuaAppbmRleCAyNjdkNjlj
MzM4NC4uY2E3NGRiY2M0NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5oCkBAIC0yNiw3ICsyNiw3IEBACiAjaWZuZGVmIEFQSVdl
YnNpdGVEYXRhU3RvcmVfaAogI2RlZmluZSBBUElXZWJzaXRlRGF0YVN0b3JlX2gKIAotI2luY2x1
ZGUgIkFQSU9iamVjdC5oIgorI2luY2x1ZGUgIkFQSUhUVFBDb29raWVTdG9yYWdlLmgiCiAjaW5j
bHVkZSAiV2Vic2l0ZURhdGFTdG9yZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvU2Vzc2lvbklELmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC0zNSw3ICszNSw3IEBAIG5hbWVz
cGFjZSBBUEkgewogCiBjbGFzcyBXZWJzaXRlRGF0YVN0b3JlIGZpbmFsIDogcHVibGljIE9iamVj
dEltcGw8T2JqZWN0OjpUeXBlOjpXZWJzaXRlRGF0YVN0b3JlPiB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFJlZlB0cjxXZWJzaXRlRGF0YVN0b3JlPiBkZWZhdWx0RGF0YVN0b3JlKCk7CisgICAgc3Rh
dGljIFJlZjxXZWJzaXRlRGF0YVN0b3JlPiBkZWZhdWx0RGF0YVN0b3JlKCk7CiAgICAgc3RhdGlj
IFJlZjxXZWJzaXRlRGF0YVN0b3JlPiBjcmVhdGVOb25QZXJzaXN0ZW50RGF0YVN0b3JlKCk7CiAg
ICAgc3RhdGljIFJlZjxXZWJzaXRlRGF0YVN0b3JlPiBjcmVhdGUoV2ViS2l0OjpXZWJzaXRlRGF0
YVN0b3JlOjpDb25maWd1cmF0aW9uKTsKIApAQCAtNDksNiArNDksNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCByZWdpc3RlclNoYXJlZFJlc291cmNlTG9hZE9ic2VydmVyKCk7CiAKICAgICBXZWJLaXQ6
OldlYnNpdGVEYXRhU3RvcmUmIHdlYnNpdGVEYXRhU3RvcmUoKSB7IHJldHVybiAqbV93ZWJzaXRl
RGF0YVN0b3JlOyB9CisgICAgSFRUUENvb2tpZVN0b3JhZ2UmIGh0dHBDb29raWVTdG9yYWdlKCk7
CiAKICAgICBzdGF0aWMgU3RyaW5nIGRlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCk7
CiAgICAgc3RhdGljIFN0cmluZyBkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCk7CkBAIC03
MCw2ICs3MSw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIFN0cmluZyB3ZWJzaXRlRGF0YURpcmVj
dG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmIGRpcmVjdG9yeU5hbWUp
OwogCiAgICAgUmVmUHRyPFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZT4gbV93ZWJzaXRlRGF0YVN0
b3JlOworICAgIFJlZlB0cjxIVFRQQ29va2llU3RvcmFnZT4gbV9hcGlIVFRQQ29va2llU3RvcmFn
ZTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9X
S0Nvb2tpZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29v
a2llTWFuYWdlci5jcHAKaW5kZXggMjc4ZTgzYzUxZTAuLjgwYWM4YTg2MjQwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb29raWVNYW5hZ2VyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb29raWVNYW5hZ2VyLmNwcApAQCAt
NjEsMTcgKzYxLDE3IEBAIHZvaWQgV0tDb29raWVNYW5hZ2VyRGVsZXRlQWxsQ29va2llc01vZGlm
aWVkQWZ0ZXJEYXRlKFdLQ29va2llTWFuYWdlclJlZiBjb29raWVNCiAgICAgdXNpbmcgbmFtZXNw
YWNlIHN0ZDo6Y2hyb25vOwogCiAgICAgYXV0byB0aW1lID0gc3lzdGVtX2Nsb2NrOjp0aW1lX3Bv
aW50KGR1cmF0aW9uX2Nhc3Q8c3lzdGVtX2Nsb2NrOjpkdXJhdGlvbj4oZHVyYXRpb248ZG91Ymxl
PihkYXRlKSkpOwotICAgIHRvSW1wbChjb29raWVNYW5hZ2VyUmVmKS0+ZGVsZXRlQWxsQ29va2ll
c01vZGlmaWVkU2luY2UoV2ViQ29yZTo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCksIHRp
bWUpOworICAgIHRvSW1wbChjb29raWVNYW5hZ2VyUmVmKS0+ZGVsZXRlQWxsQ29va2llc01vZGlm
aWVkU2luY2UoV2ViQ29yZTo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCksIHRpbWUsIFtd
KENhbGxiYWNrQmFzZTo6RXJyb3Ipe30pOwogfQogCiB2b2lkIFdLQ29va2llTWFuYWdlclNldEhU
VFBDb29raWVBY2NlcHRQb2xpY3koV0tDb29raWVNYW5hZ2VyUmVmIGNvb2tpZU1hbmFnZXIsIFdL
SFRUUENvb2tpZUFjY2VwdFBvbGljeSBwb2xpY3kpCiB7Ci0gICAgdG9JbXBsKGNvb2tpZU1hbmFn
ZXIpLT5zZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHRvSFRUUENvb2tpZUFjY2VwdFBvbGljeShw
b2xpY3kpKTsKKyAgICB0b0ltcGwoY29va2llTWFuYWdlciktPnNldEhUVFBDb29raWVBY2NlcHRQ
b2xpY3koV2ViQ29yZTo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCksIHRvSFRUUENvb2tp
ZUFjY2VwdFBvbGljeShwb2xpY3kpLCBbXShDYWxsYmFja0Jhc2U6OkVycm9yKXt9KTsKIH0KIAog
dm9pZCBXS0Nvb2tpZU1hbmFnZXJHZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KFdLQ29va2llTWFu
YWdlclJlZiBjb29raWVNYW5hZ2VyLCB2b2lkKiBjb250ZXh0LCBXS0Nvb2tpZU1hbmFnZXJHZXRI
VFRQQ29va2llQWNjZXB0UG9saWN5RnVuY3Rpb24gY2FsbGJhY2spCiB7Ci0gICAgdG9JbXBsKGNv
b2tpZU1hbmFnZXIpLT5nZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHRvR2VuZXJpY0NhbGxiYWNr
RnVuY3Rpb248V0tIVFRQQ29va2llQWNjZXB0UG9saWN5LCBIVFRQQ29va2llQWNjZXB0UG9saWN5
Pihjb250ZXh0LCBjYWxsYmFjaykpOworICAgIHRvSW1wbChjb29raWVNYW5hZ2VyKS0+Z2V0SFRU
UENvb2tpZUFjY2VwdFBvbGljeShXZWJDb3JlOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQo
KSwgdG9HZW5lcmljQ2FsbGJhY2tGdW5jdGlvbjxXS0hUVFBDb29raWVBY2NlcHRQb2xpY3ksIEhU
VFBDb29raWVBY2NlcHRQb2xpY3k+KGNvbnRleHQsIGNhbGxiYWNrKSk7CiB9CiAKIHZvaWQgV0tD
b29raWVNYW5hZ2VyU2V0Q29va2llU3RvcmFnZVBhcnRpdGlvbmluZ0VuYWJsZWQoV0tDb29raWVN
YW5hZ2VyUmVmIGNvb2tpZU1hbmFnZXIsIGJvb2wgZW5hYmxlZCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAKaW5k
ZXggYTc3YzFhODlkNWMuLjZjYTY5YzZkMmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcApAQCAtMzcsNyAr
MzcsNyBAQCBXS1R5cGVJRCBXS1dlYnNpdGVEYXRhU3RvcmVHZXRUeXBlSUQoKQogCiBXS1dlYnNp
dGVEYXRhU3RvcmVSZWYgV0tXZWJzaXRlRGF0YVN0b3JlR2V0RGVmYXVsdERhdGFTdG9yZSgpCiB7
Ci0gICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0
RGF0YVN0b3JlKCkuZ2V0KCkpOworICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKEFQSTo6V2Vic2l0
ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZSgpLnB0cigpKTsKIH0KIAogV0tXZWJzaXRlRGF0
YVN0b3JlUmVmIFdLV2Vic2l0ZURhdGFTdG9yZUNyZWF0ZU5vblBlcnNpc3RlbnREYXRhU3RvcmUo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nl
c3NQb29sLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQ
b29sLm1tCmluZGV4IDNmNDNiZmM2NWRkLi44Zjg3ZGFjZTgyNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQpAQCAtMTk2LDcg
KzE5Niw3IEBAIHN0YXRpYyBXZWJLaXQ6OkhUVFBDb29raWVBY2NlcHRQb2xpY3kgdG9IVFRQQ29v
a2llQWNjZXB0UG9saWN5KE5TSFRUUENvb2tpZUFjY2VwCiAKIC0gKHZvaWQpX3NldENvb2tpZUFj
Y2VwdFBvbGljeTooTlNIVFRQQ29va2llQWNjZXB0UG9saWN5KXBvbGljeQogewotICAgIF9wcm9j
ZXNzUG9vbC0+c3VwcGxlbWVudDxXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eT4oKS0+c2V0
SFRUUENvb2tpZUFjY2VwdFBvbGljeSh0b0hUVFBDb29raWVBY2NlcHRQb2xpY3kocG9saWN5KSk7
CisgICAgX3Byb2Nlc3NQb29sLT5zdXBwbGVtZW50PFdlYktpdDo6V2ViQ29va2llTWFuYWdlclBy
b3h5PigpLT5zZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KFdlYkNvcmU6OlNlc3Npb25JRDo6ZGVm
YXVsdFNlc3Npb25JRCgpLCB0b0hUVFBDb29raWVBY2NlcHRQb2xpY3kocG9saWN5KSwgW10oV2Vi
S2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yKXt9KTsKIH0KIAogLSAoaWQpX29iamVjdEZvckJ1bmRs
ZVBhcmFtZXRlcjooTlNTdHJpbmcgKilwYXJhbWV0ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKaW5kZXggNjg3MzFmNGUx
NzMuLjZlNGRmZTZkNjQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaApAQCAtNjEsNiArNjEsNyBAQCB0eXBlZGVmIE5T
X0VOVU0oTlNJbnRlZ2VyLCBfV0tJbW1lZGlhdGVBY3Rpb25UeXBlKSB7CiBAY2xhc3MgQVZGdW5j
dGlvbkJhclNjcnViYmVyOwogQGNsYXNzIFdLQnJvd3NpbmdDb250ZXh0SGFuZGxlOwogQGNsYXNz
IF9XS0ZyYW1lSGFuZGxlOworQGNsYXNzIF9XS0hUVFBDb29raWVTdG9yYWdlOwogQGNsYXNzIF9X
S0hpdFRlc3RSZXN1bHQ7CiBAY2xhc3MgX1dLSWNvbkxvYWRpbmdEZWxlZ2F0ZTsKIEBjbGFzcyBf
V0tSZW1vdGVPYmplY3RSZWdpc3RyeTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KaW5kZXggNzEzODE5ZTQ3NDAu
LmJlOGJlZGQyZjIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQpAQCAtMzEsNiArMzEsNyBAQAogI2ltcG9y
dCAiV0tOU0FycmF5LmgiCiAjaW1wb3J0ICJXS1dlYnNpdGVEYXRhUmVjb3JkSW50ZXJuYWwuaCIK
ICNpbXBvcnQgIldlYnNpdGVEYXRhRmV0Y2hPcHRpb24uaCIKKyNpbXBvcnQgIl9XS0hUVFBDb29r
aWVTdG9yYWdlSW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1
cmF0aW9uLmgiCiAjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KIApAQCAtMzgsNyArMzksNyBAQCBA
aW1wbGVtZW50YXRpb24gV0tXZWJzaXRlRGF0YVN0b3JlCiAKICsgKFdLV2Vic2l0ZURhdGFTdG9y
ZSAqKWRlZmF1bHREYXRhU3RvcmUKIHsKLSAgICByZXR1cm4gV2ViS2l0Ojp3cmFwcGVyKCpBUEk6
OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmUoKS5nZXQoKSk7CisgICAgcmV0dXJu
IFdlYktpdDo6d3JhcHBlcihBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmUo
KS5nZXQoKSk7CiB9CiAKICsgKFdLV2Vic2l0ZURhdGFTdG9yZSAqKW5vblBlcnNpc3RlbnREYXRh
U3RvcmUKQEAgLTE5NCw2ICsxOTUsMTEgQEAgLSAodm9pZClfc2V0UmVzb3VyY2VMb2FkU3RhdGlz
dGljc0VuYWJsZWQ6KEJPT0wpZW5hYmxlZAogICAgIF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRl
RGF0YVN0b3JlKCkuc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoZW5hYmxlZCk7CiB9
CiAKKy0gKF9XS0hUVFBDb29raWVTdG9yYWdlICopX2h0dHBDb29raWVTdG9yYWdlCit7CisgICAg
cmV0dXJuIFdlYktpdDo6d3JhcHBlcihfd2Vic2l0ZURhdGFTdG9yZS0+aHR0cENvb2tpZVN0b3Jh
Z2UoKSk7Cit9CisKIEBlbmQKIAogI2VuZGlmIC8vIFdLX0FQSV9FTkFCTEVECmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVBy
aXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0
YVN0b3JlUHJpdmF0ZS5oCmluZGV4IDQ5ZDliZTZhZDExLi5mYzE4YmUyODM5YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQ
cml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNp
dGVEYXRhU3RvcmVQcml2YXRlLmgKQEAgLTI5LDYgKzI5LDcgQEAKIAogTlNfQVNTVU1FX05PTk5V
TExfQkVHSU4KIAorQGNsYXNzIF9XS0hUVFBDb29raWVTdG9yYWdlOwogQGNsYXNzIF9XS1dlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOwogCiB0eXBlZGVmIE5TX09QVElPTlMoTlNVSW50ZWdl
ciwgX1dLV2Vic2l0ZURhdGFTdG9yZUZldGNoT3B0aW9ucykgewpAQCAtNDMsNiArNDQsOCBAQCB0
eXBlZGVmIE5TX09QVElPTlMoTlNVSW50ZWdlciwgX1dLV2Vic2l0ZURhdGFTdG9yZUZldGNoT3B0
aW9ucykgewogCiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRW5hYmxlZDopIEJPT0wgX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkIFdL
X0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjEyKSwgaW9zKDEwLjApKTsKIAorQHByb3BlcnR5IChu
b25hdG9taWMsIHJlYWRvbmx5KSBfV0tIVFRQQ29va2llU3RvcmFnZSAqX2h0dHBDb29raWVTdG9y
YWdlIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkp
OworCiBAZW5kCiAKIE5TX0FTU1VNRV9OT05OVUxMX0VORApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tIVFRQQ29va2llU3RvcmFnZS5oIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tIVFRQQ29va2llU3RvcmFnZS5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4wZWEyMjU1Zjk1YQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSFRUUENvb2tp
ZVN0b3JhZ2UuaApAQCAtMCwwICsxLDQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCA8V2ViS2l0
L1dLRm91bmRhdGlvbi5oPgorCisjaWYgV0tfQVBJX0VOQUJMRUQKKworI2ltcG9ydCA8Rm91bmRh
dGlvbi9Gb3VuZGF0aW9uLmg+CisKK1dLX0NMQVNTX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RC
QSksIGlvcyhXS19JT1NfVEJBKSkKK0BpbnRlcmZhY2UgX1dLSFRUUENvb2tpZVN0b3JhZ2UgOiBO
U09iamVjdAorCistICh2b2lkKWZldGNoQ29va2llczoobm9ubnVsbCB2b2lkICheKShOU0FycmF5
PE5TSFRUUENvb2tpZSAqPiAqX051bGxhYmxlKSljb21wbGV0aW9uSGFuZGxlcjsKKy0gKHZvaWQp
ZmV0Y2hDb29raWVzRm9yVVJMOihub25udWxsIE5TVVJMICopdXJsIGNvbXBsZXRpb25IYW5kbGVy
Oihub25udWxsIHZvaWQgKF4pKE5TQXJyYXk8TlNIVFRQQ29va2llICo+ICpfTnVsbGFibGUpKWNv
bXBsZXRpb25IYW5kbGVyOworCistICh2b2lkKXNldENvb2tpZToobm9ubnVsbCBOU0hUVFBDb29r
aWUgKiljb29raWUgY29tcGxldGlvbkhhbmRsZXI6KG51bGxhYmxlIHZvaWQgKF4pKCkpY29tcGxl
dGlvbkhhbmRsZXI7CistICh2b2lkKXNldENvb2tpZXM6KG5vbm51bGwgTlNBcnJheTxOU0hUVFBD
b29raWUgKj4gKiljb29raWVzIGZvclVSTDoobnVsbGFibGUgTlNVUkwgKil1cmwgbWFpbkRvY3Vt
ZW50VVJMOihudWxsYWJsZSBOU1VSTCAqKW1haW5Eb2N1bWVudFVSTCBjb21wbGV0aW9uSGFuZGxl
cjoobnVsbGFibGUgdm9pZCAoXikoKSljb21wbGV0aW9uSGFuZGxlcjsKKworLSAodm9pZClkZWxl
dGVDb29raWU6KG5vbm51bGwgTlNIVFRQQ29va2llICopY29va2llIGNvbXBsZXRpb25IYW5kbGVy
OihudWxsYWJsZSB2b2lkICheKSgpKWNvbXBsZXRpb25IYW5kbGVyOworLSAodm9pZClyZW1vdmVD
b29raWVzU2luY2VEYXRlOihub25udWxsIE5TRGF0ZSAqKWRhdGUgY29tcGxldGlvbkhhbmRsZXI6
KG51bGxhYmxlIHZvaWQgKF4pKCkpY29tcGxldGlvbkhhbmRsZXI7CisKKy0gKHZvaWQpc2V0Q29v
a2llQWNjZXB0UG9saWN5OihOU0hUVFBDb29raWVBY2NlcHRQb2xpY3kpcG9saWN5IGNvbXBsZXRp
b25IYW5kbGVyOihudWxsYWJsZSB2b2lkICheKSgpKWNvbXBsZXRpb25IYW5kbGVyOworLSAodm9p
ZClmZXRjaENvb2tpZUFjY2VwdFBvbGljeToobm9ubnVsbCB2b2lkICheKShOU0hUVFBDb29raWVB
Y2NlcHRQb2xpY3kpKWNvbXBsZXRpb25IYW5kbGVyOworCitAZW5kCisKKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tIVFRQQ29va2llU3Rv
cmFnZS5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSFRUUENvb2tp
ZVN0b3JhZ2UubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjg0YWQ5
OTU3ZDBmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
b2NvYS9fV0tIVFRQQ29va2llU3RvcmFnZS5tbQpAQCAtMCwwICsxLDE1NiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiX1dLSFRUUENvb2tpZVN0b3JhZ2VJbnRl
cm5hbC5oIgorCisjaWYgV0tfQVBJX0VOQUJMRUQKKworI2luY2x1ZGUgIkhUVFBDb29raWVBY2Nl
cHRQb2xpY3kuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0NGTmV0d29ya1NQSS5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvQ29va2llLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KKyNpbmNsdWRlIDx3
dGYvUmV0YWluUHRyLmg+CisKK3N0YXRpYyBOU0FycmF5PE5TSFRUUENvb2tpZSAqPiAqY29yZUNv
b2tpZXNUb05TQ29va2llcyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYgY29yZUNvb2tp
ZXMpCit7CisgICAgTlNNdXRhYmxlQXJyYXk8TlNIVFRQQ29va2llICo+ICpuc0Nvb2tpZXMgPSBb
TlNNdXRhYmxlQXJyYXkgYXJyYXlXaXRoQ2FwYWNpdHk6Y29yZUNvb2tpZXMuc2l6ZSgpXTsKKwor
ICAgIGZvciAoYXV0byYgY29va2llIDogY29yZUNvb2tpZXMpCisgICAgICAgIFtuc0Nvb2tpZXMg
YWRkT2JqZWN0OihOU0hUVFBDb29raWUqKWNvb2tpZV07CisKKyAgICByZXR1cm4gbnNDb29raWVz
OworfQorCitAaW1wbGVtZW50YXRpb24gX1dLSFRUUENvb2tpZVN0b3JhZ2UKKworLSAodm9pZClk
ZWFsbG9jCit7CisgICAgX2Nvb2tpZVN0b3JhZ2UtPkFQSTo6SFRUUENvb2tpZVN0b3JhZ2U6On5I
VFRQQ29va2llU3RvcmFnZSgpOworCisgICAgW3N1cGVyIGRlYWxsb2NdOworfQorCistICh2b2lk
KWZldGNoQ29va2llczoodm9pZCAoXikoTlNBcnJheTxOU0hUVFBDb29raWUgKj4gKikpY29tcGxl
dGlvbkhhbmRsZXIKK3sKKyAgICBfY29va2llU3RvcmFnZS0+Y29va2llcyhbaGFuZGxlciA9IGFk
b3B0TlMoW2NvbXBsZXRpb25IYW5kbGVyIGNvcHldKV0oY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNv
b2tpZT4mIGNvb2tpZXMpIHsKKyAgICAgICAgYXV0byByYXdIYW5kbGVyID0gKHZvaWQgKF4pKE5T
QXJyYXk8TlNIVFRQQ29va2llICo+ICopKWhhbmRsZXIuZ2V0KCk7CisgICAgICAgIHJhd0hhbmRs
ZXIoY29yZUNvb2tpZXNUb05TQ29va2llcyhjb29raWVzKSk7CisgICAgfSk7Cit9CisKKy0gKHZv
aWQpZmV0Y2hDb29raWVzRm9yVVJMOihOU1VSTCAqKXVybCBjb21wbGV0aW9uSGFuZGxlcjoodm9p
ZCAoXikoTlNBcnJheTxOU0hUVFBDb29raWUgKj4gKikpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAg
ICBfY29va2llU3RvcmFnZS0+Y29va2llcyh1cmwsIFtoYW5kbGVyID0gYWRvcHROUyhbY29tcGxl
dGlvbkhhbmRsZXIgY29weV0pXShjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYgY29va2ll
cykgeworICAgICAgICBhdXRvIHJhd0hhbmRsZXIgPSAodm9pZCAoXikoTlNBcnJheTxOU0hUVFBD
b29raWUgKj4gKikpaGFuZGxlci5nZXQoKTsKKyAgICAgICAgcmF3SGFuZGxlcihjb3JlQ29va2ll
c1RvTlNDb29raWVzKGNvb2tpZXMpKTsKKyAgICB9KTsKK30KKworLSAodm9pZClzZXRDb29raWU6
KE5TSFRUUENvb2tpZSAqKWNvb2tpZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoKSljb21w
bGV0aW9uSGFuZGxlcgoreworICAgIF9jb29raWVTdG9yYWdlLT5zZXRDb29raWUoY29va2llLCBb
aGFuZGxlciA9IGFkb3B0TlMoW2NvbXBsZXRpb25IYW5kbGVyIGNvcHldKV0oKSB7CisgICAgICAg
IGF1dG8gcmF3SGFuZGxlciA9ICh2b2lkICheKSgpKWhhbmRsZXIuZ2V0KCk7CisgICAgICAgIHJh
d0hhbmRsZXIoKTsKKyAgICB9KTsKKworfQorCistICh2b2lkKWRlbGV0ZUNvb2tpZTooTlNIVFRQ
Q29va2llICopY29va2llIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKSgpKWNvbXBsZXRpb25I
YW5kbGVyCit7CisgICAgX2Nvb2tpZVN0b3JhZ2UtPmRlbGV0ZUNvb2tpZShjb29raWUsIFtoYW5k
bGVyID0gYWRvcHROUyhbY29tcGxldGlvbkhhbmRsZXIgY29weV0pXSgpIHsKKyAgICAgICAgYXV0
byByYXdIYW5kbGVyID0gKHZvaWQgKF4pKCkpaGFuZGxlci5nZXQoKTsKKyAgICAgICAgcmF3SGFu
ZGxlcigpOworICAgIH0pOworfQorCistICh2b2lkKXNldENvb2tpZXM6KE5TQXJyYXk8TlNIVFRQ
Q29va2llICo+ICopY29va2llcyBmb3JVUkw6KE5TVVJMICopVVJMIG1haW5Eb2N1bWVudFVSTDoo
TlNVUkwgKiltYWluRG9jdW1lbnRVUkwgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKCkpY29t
cGxldGlvbkhhbmRsZXIKK3sKKyAgICBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiBjb3JlQ29va2ll
czsKKyAgICBjb3JlQ29va2llcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGNvb2tpZXMuY291bnQp
OworICAgIGZvciAoTlNIVFRQQ29va2llICpjb29raWUgOiBjb29raWVzKQorICAgICAgICBjb3Jl
Q29va2llcy51bmNoZWNrZWRBcHBlbmQoY29va2llKTsKKworICAgIF9jb29raWVTdG9yYWdlLT5z
ZXRDb29raWVzKGNvcmVDb29raWVzLCBVUkwsIG1haW5Eb2N1bWVudFVSTCwgW2hhbmRsZXIgPSBh
ZG9wdE5TKFtjb21wbGV0aW9uSGFuZGxlciBjb3B5XSldKCkgeworICAgICAgICBhdXRvIHJhd0hh
bmRsZXIgPSAodm9pZCAoXikoKSloYW5kbGVyLmdldCgpOworICAgICAgICByYXdIYW5kbGVyKCk7
CisgICAgfSk7Cit9CisKKy0gKHZvaWQpcmVtb3ZlQ29va2llc1NpbmNlRGF0ZTooTlNEYXRlICop
ZGF0ZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoKSljb21wbGV0aW9uSGFuZGxlcgorewor
ICAgIGF1dG8gc3lzdGVtQ2xvY2tUaW1lID0gc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGlt
ZV9wb2ludChzdGQ6OmNocm9ubzo6ZHVyYXRpb25fY2FzdDxzdGQ6OmNocm9ubzo6c3lzdGVtX2Ns
b2NrOjpkdXJhdGlvbj4oc3RkOjpjaHJvbm86OmR1cmF0aW9uPGRvdWJsZT4oZGF0ZS50aW1lSW50
ZXJ2YWxTaW5jZTE5NzApKSk7CisKKyAgICBfY29va2llU3RvcmFnZS0+cmVtb3ZlQ29va2llc1Np
bmNlRGF0ZShzeXN0ZW1DbG9ja1RpbWUsIFtoYW5kbGVyID0gYWRvcHROUyhbY29tcGxldGlvbkhh
bmRsZXIgY29weV0pXSgpIHsKKyAgICAgICAgYXV0byByYXdIYW5kbGVyID0gKHZvaWQgKF4pKCkp
aGFuZGxlci5nZXQoKTsKKyAgICAgICAgcmF3SGFuZGxlcigpOworICAgIH0pOworfQorCistICh2
b2lkKXNldENvb2tpZUFjY2VwdFBvbGljeTooTlNIVFRQQ29va2llQWNjZXB0UG9saWN5KXBvbGlj
eSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoKSljb21wbGV0aW9uSGFuZGxlcgoreworICAg
IF9jb29raWVTdG9yYWdlLT5zZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHBvbGljeSwgW2hhbmRs
ZXIgPSBhZG9wdE5TKFtjb21wbGV0aW9uSGFuZGxlciBjb3B5XSldKCkgeworICAgICAgICBhdXRv
IHJhd0hhbmRsZXIgPSAodm9pZCAoXikoKSloYW5kbGVyLmdldCgpOworICAgICAgICByYXdIYW5k
bGVyKCk7CisgICAgfSk7Cit9CisKK3N0YXRpYyBOU0hUVFBDb29raWVBY2NlcHRQb2xpY3kga2l0
Q29va2llUG9saWN5VG9OU0Nvb2tpZVBvbGljeShXZWJLaXQ6OkhUVFBDb29raWVBY2NlcHRQb2xp
Y3kga2l0UG9saWN5KQoreworICAgIHN3aXRjaCAoa2l0UG9saWN5KSB7CisgICAgY2FzZSBXZWJL
aXQ6OkhUVFBDb29raWVBY2NlcHRQb2xpY3lBbHdheXM6CisgICAgICAgIHJldHVybiBOU0hUVFBD
b29raWVBY2NlcHRQb2xpY3lBbHdheXM7CisgICAgY2FzZSBXZWJLaXQ6OkhUVFBDb29raWVBY2Nl
cHRQb2xpY3lOZXZlcjoKKyAgICAgICAgcmV0dXJuIE5TSFRUUENvb2tpZUFjY2VwdFBvbGljeU5l
dmVyOworICAgIGNhc2UgV2ViS2l0OjpIVFRQQ29va2llQWNjZXB0UG9saWN5T25seUZyb21NYWlu
RG9jdW1lbnREb21haW46CisgICAgICAgIHJldHVybiBOU0hUVFBDb29raWVBY2NlcHRQb2xpY3lP
bmx5RnJvbU1haW5Eb2N1bWVudERvbWFpbjsKKyAgICBjYXNlIFdlYktpdDo6SFRUUENvb2tpZUFj
Y2VwdFBvbGljeUV4Y2x1c2l2ZWx5RnJvbU1haW5Eb2N1bWVudERvbWFpbjoKKyAgICAgICAgLy8g
Q2FzdCByZXF1aXJlZCBiZWNhdXNlIG9mIENGTmV0d29ya1NQSS4KKyAgICAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PE5TSFRUUENvb2tpZUFjY2VwdFBvbGljeT4oTlNIVFRQQ29va2llQWNjZXB0UG9s
aWN5RXhjbHVzaXZlbHlGcm9tTWFpbkRvY3VtZW50RG9tYWluKTsKKyAgICBkZWZhdWx0OgorICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisKKyAgICByZXR1cm4gTlNIVFRQQ29v
a2llQWNjZXB0UG9saWN5TmV2ZXI7Cit9CisKKy0gKHZvaWQpZmV0Y2hDb29raWVBY2NlcHRQb2xp
Y3k6KHZvaWQgKF4pKE5TSFRUUENvb2tpZUFjY2VwdFBvbGljeSkpY29tcGxldGlvbkhhbmRsZXIK
K3sKKyAgICBfY29va2llU3RvcmFnZS0+Z2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShbaGFuZGxl
ciA9IGFkb3B0TlMoW2NvbXBsZXRpb25IYW5kbGVyIGNvcHldKV0oV2ViS2l0OjpIVFRQQ29va2ll
QWNjZXB0UG9saWN5IHBvbGljeSkgeworICAgICAgICBhdXRvIHJhd0hhbmRsZXIgPSAodm9pZCAo
XikoTlNIVFRQQ29va2llQWNjZXB0UG9saWN5KSloYW5kbGVyLmdldCgpOworICAgICAgICByYXdI
YW5kbGVyKGtpdENvb2tpZVBvbGljeVRvTlNDb29raWVQb2xpY3kocG9saWN5KSk7CisgICAgfSk7
Cit9CisKKyNwcmFnbWEgbWFyayBXS09iamVjdCBwcm90b2NvbCBpbXBsZW1lbnRhdGlvbgorCist
IChBUEk6Ok9iamVjdCYpX2FwaU9iamVjdAoreworICAgIHJldHVybiAqX2Nvb2tpZVN0b3JhZ2U7
Cit9CisKK0BlbmQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS0hUVFBDb29raWVTdG9yYWdlSW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSFRUUENvb2tpZVN0b3JhZ2VJbnRlcm5hbC5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4zZGUwMWJhNWJmMQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSFRUUENv
b2tpZVN0b3JhZ2VJbnRlcm5hbC5oCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1w
b3J0ICJfV0tIVFRQQ29va2llU3RvcmFnZS5oIgorCisjaWYgV0tfQVBJX0VOQUJMRUQKKworI2lt
cG9ydCAiQVBJSFRUUENvb2tpZVN0b3JhZ2UuaCIKKyNpbXBvcnQgIldLT2JqZWN0LmgiCisKK25h
bWVzcGFjZSBXZWJLaXQgeworCitpbmxpbmUgX1dLSFRUUENvb2tpZVN0b3JhZ2UgKndyYXBwZXIo
QVBJOjpIVFRQQ29va2llU3RvcmFnZSYgY29va2llU3RvcmFnZSkKK3sKKyAgICBBU1NFUlQoW2Nv
b2tpZVN0b3JhZ2Uud3JhcHBlcigpIGlzS2luZE9mQ2xhc3M6W19XS0hUVFBDb29raWVTdG9yYWdl
IGNsYXNzXV0pOworICAgIHJldHVybiAoX1dLSFRUUENvb2tpZVN0b3JhZ2UgKiljb29raWVTdG9y
YWdlLndyYXBwZXIoKTsKK30KKworfQorCitAaW50ZXJmYWNlIF9XS0hUVFBDb29raWVTdG9yYWdl
ICgpIDxXS09iamVjdD4geworQHBhY2thZ2UKKyAgICBBUEk6Ok9iamVjdFN0b3JhZ2U8QVBJOjpI
VFRQQ29va2llU3RvcmFnZT4gX2Nvb2tpZVN0b3JhZ2U7Cit9CitAZW5kCisKKyNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlv
blNlc3Npb24uY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0
b21hdGlvblNlc3Npb24uY3BwCmluZGV4IDQ4Y2FkYzcxMjRmLi5hODMxODRhZjkwMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNl
c3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1
dG9tYXRpb25TZXNzaW9uLmNwcApAQCAtNzMwLDcgKzczMCw3IEBAIHZvaWQgV2ViQXV0b21hdGlv
blNlc3Npb246OmFkZFNpbmdsZUNvb2tpZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0
IFN0cmluCiAKICAgICAvLyBGSVhNRTogVXNpbmcgYWN0aXZlVVJMIGhlcmUgdHdpY2UgaXMgYmFz
aWNhbGx5IHNheWluZyAidGhpcyBpcyBhbHdheXMgaW4gdGhlIGNvbnRleHQgb2YgdGhlIG1haW4g
ZG9jdW1lbnQiCiAgICAgLy8gd2hpY2ggcHJvYmFibHkgaXNuJ3QgYWNjdXJhdGUuCi0gICAgY29v
a2llTWFuYWdlci0+c2V0Q29va2llcyhXZWJDb3JlOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9u
SUQoKSwgeyBjb29raWUgfSwgYWN0aXZlVVJMLCBhY3RpdmVVUkwpOworICAgIGNvb2tpZU1hbmFn
ZXItPnNldENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCksIHsg
Y29va2llIH0sIGFjdGl2ZVVSTCwgYWN0aXZlVVJMLCBbXShDYWxsYmFja0Jhc2U6OkVycm9yKXt9
KTsKIAogICAgIGNhbGxiYWNrLT5zZW5kU3VjY2VzcygpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmNwcAppbmRleCAyZWFhNWNlM2Jm
YS4uN2ViNDMwMmU1MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJD
b29raWVNYW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJD
b29raWVNYW5hZ2VyUHJveHkuY3BwCkBAIC0zMiw4ICszMiwxMSBAQAogI2luY2x1ZGUgIldlYkNv
b2tpZU1hbmFnZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYkNvb2tpZU1hbmFnZXJQcm94eU1l
c3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKKyNpbmNsdWRlIDxXZWJDb3Jl
L0Nvb2tpZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW5EYXRhLmg+CiAKK3Vz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY29uc3QgY2hh
ciogV2ViQ29va2llTWFuYWdlclByb3h5OjpzdXBwbGVtZW50TmFtZSgpCkBAIC05NCw3ICs5Nyw3
IEBAIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpkZXJlZldlYkNvbnRleHRTdXBwbGVtZW50
KCkKICAgICBBUEk6Ok9iamVjdDo6ZGVyZWYoKTsKIH0KIAotdm9pZCBXZWJDb29raWVNYW5hZ2Vy
UHJveHk6OmdldEhvc3RuYW1lc1dpdGhDb29raWVzKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIEZ1bmN0aW9uPHZvaWQgKEFQSTo6QXJyYXkqLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBj
YWxsYmFja0Z1bmN0aW9uKQordm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmdldEhvc3RuYW1l
c1dpdGhDb29raWVzKFNlc3Npb25JRCBzZXNzaW9uSUQsIEZ1bmN0aW9uPHZvaWQgKEFQSTo6QXJy
YXkqLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQogewogICAgIGF1
dG8gY2FsbGJhY2sgPSBBcnJheUNhbGxiYWNrOjpjcmVhdGUoV1RGTW92ZShjYWxsYmFja0Z1bmN0
aW9uKSk7CiAgICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7
CkBAIC0xMTQsMzcgKzExNyw4NyBAQCB2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGlkR2V0
SG9zdG5hbWVzV2l0aENvb2tpZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGhvcwogICAgIGNhbGxi
YWNrLT5wZXJmb3JtQ2FsbGJhY2tXaXRoUmV0dXJuVmFsdWUoQVBJOjpBcnJheTo6Y3JlYXRlU3Ry
aW5nQXJyYXkoaG9zdG5hbWVzKS5wdHIoKSk7CiB9CiAKLXZvaWQgV2ViQ29va2llTWFuYWdlclBy
b3h5OjpkZWxldGVDb29raWVzRm9ySG9zdG5hbWUoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgY29uc3QgU3RyaW5nJiBob3N0bmFtZSkKK3ZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5Ojpk
ZWxldGVDb29raWVzRm9ySG9zdG5hbWUoU2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5n
JiBob3N0bmFtZSkKIHsKICAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9OZXR3b3JraW5nUHJvY2Vz
c1JlbGF1bmNoaW5nSWZOZWNlc3NhcnkoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OkRlbGV0
ZUNvb2tpZXNGb3JIb3N0bmFtZShzZXNzaW9uSUQsIGhvc3RuYW1lKSk7CiB9CiAKLXZvaWQgV2Vi
Q29va2llTWFuYWdlclByb3h5OjpkZWxldGVBbGxDb29raWVzKFdlYkNvcmU6OlNlc3Npb25JRCBz
ZXNzaW9uSUQpCit2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGVsZXRlQWxsQ29va2llcyhT
ZXNzaW9uSUQgc2Vzc2lvbklEKQogewogICAgIHByb2Nlc3NQb29sKCktPnNlbmRUb05ldHdvcmtp
bmdQcm9jZXNzUmVsYXVuY2hpbmdJZk5lY2Vzc2FyeShNZXNzYWdlczo6V2ViQ29va2llTWFuYWdl
cjo6RGVsZXRlQWxsQ29va2llcyhzZXNzaW9uSUQpKTsKIH0KIAotdm9pZCBXZWJDb29raWVNYW5h
Z2VyUHJveHk6OmRlbGV0ZUFsbENvb2tpZXNNb2RpZmllZFNpbmNlKFdlYkNvcmU6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgdGltZSkK
K3ZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpkZWxldGVDb29raWUoU2Vzc2lvbklEIHNlc3Np
b25JRCwgY29uc3QgQ29va2llJiBjb29raWUsIEZ1bmN0aW9uPHZvaWQgKENhbGxiYWNrQmFzZTo6
RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCit7CisgICAgYXV0byBjYWxsYmFjayA9IFZvaWRD
YWxsYmFjazo6Y3JlYXRlKFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbikpOworICAgIHVpbnQ2NF90
IGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgpOworICAgIG1fdm9pZENhbGxiYWNr
cy5zZXQoY2FsbGJhY2tJRCwgV1RGTW92ZShjYWxsYmFjaykpOworCisgICAgcHJvY2Vzc1Bvb2wo
KS0+c2VuZFRvTmV0d29ya2luZ1Byb2Nlc3NSZWxhdW5jaGluZ0lmTmVjZXNzYXJ5KE1lc3NhZ2Vz
OjpXZWJDb29raWVNYW5hZ2VyOjpEZWxldGVDb29raWUoc2Vzc2lvbklELCBjb29raWUsIGNhbGxi
YWNrSUQpKTsKK30KKwordm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRlbGV0ZUFsbENvb2tp
ZXNNb2RpZmllZFNpbmNlKFNlc3Npb25JRCBzZXNzaW9uSUQsIHN0ZDo6Y2hyb25vOjpzeXN0ZW1f
Y2xvY2s6OnRpbWVfcG9pbnQgdGltZSwgRnVuY3Rpb248dm9pZCAoQ2FsbGJhY2tCYXNlOjpFcnJv
cik+JiYgY2FsbGJhY2tGdW5jdGlvbikKK3sKKyAgICBhdXRvIGNhbGxiYWNrID0gVm9pZENhbGxi
YWNrOjpjcmVhdGUoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSk7CisgICAgdWludDY0X3QgY2Fs
bGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7CisgICAgbV92b2lkQ2FsbGJhY2tzLnNl
dChjYWxsYmFja0lELCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisKKyAgICBwcm9jZXNzUG9vbCgpLT5z
ZW5kVG9OZXR3b3JraW5nUHJvY2Vzc1JlbGF1bmNoaW5nSWZOZWNlc3NhcnkoTWVzc2FnZXM6Oldl
YkNvb2tpZU1hbmFnZXI6OkRlbGV0ZUFsbENvb2tpZXNNb2RpZmllZFNpbmNlKHNlc3Npb25JRCwg
dGltZSwgY2FsbGJhY2tJRCkpOworfQorCit2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6c2V0
Q29va2llcyhTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBWZWN0b3I8Q29va2llPiYgY29va2ll
cywgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFVSTCYgbWFpbkRvY3VtZW50VVJMLCBGdW5jdGlvbjx2
b2lkIChDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQoreworICAgIGF1
dG8gY2FsbGJhY2sgPSBWb2lkQ2FsbGJhY2s6OmNyZWF0ZShXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rp
b24pKTsKKyAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gY2FsbGJhY2stPmNhbGxiYWNrSUQoKTsK
KyAgICBtX3ZvaWRDYWxsYmFja3Muc2V0KGNhbGxiYWNrSUQsIFdURk1vdmUoY2FsbGJhY2spKTsK
KworICAgIHByb2Nlc3NQb29sKCktPnNlbmRUb05ldHdvcmtpbmdQcm9jZXNzUmVsYXVuY2hpbmdJ
Zk5lY2Vzc2FyeShNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6U2V0Q29va2llcyhzZXNzaW9u
SUQsIGNvb2tpZXMsIHVybCwgbWFpbkRvY3VtZW50VVJMLCBjYWxsYmFja0lEKSk7Cit9CisKK3Zv
aWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpnZXRBbGxDb29raWVzKFNlc3Npb25JRCBzZXNzaW9u
SUQsIEZ1bmN0aW9uPHZvaWQgKGNvbnN0IFZlY3RvcjxDb29raWU+JiwgQ2FsbGJhY2tCYXNlOjpF
cnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKK3sKKyAgICBhdXRvIGNhbGxiYWNrID0gR2V0Q29v
a2llc0NhbGxiYWNrOjpjcmVhdGUoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSk7CisgICAgdWlu
dDY0X3QgY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7CisgICAgbV9nZXRDb29r
aWVzQ2FsbGJhY2tzLnNldChjYWxsYmFja0lELCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisKKyAgICBw
cm9jZXNzUG9vbCgpLT5zZW5kVG9OZXR3b3JraW5nUHJvY2Vzc1JlbGF1bmNoaW5nSWZOZWNlc3Nh
cnkoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OkdldEFsbENvb2tpZXMoc2Vzc2lvbklELCBj
YWxsYmFja0lEKSk7Cit9CisKK3ZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpnZXRDb29raWVz
KFNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgdXJsLCBGdW5jdGlvbjx2b2lkIChjb25z
dCBWZWN0b3I8Q29va2llPiYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rp
b24pCit7CisgICAgYXV0byBjYWxsYmFjayA9IEdldENvb2tpZXNDYWxsYmFjazo6Y3JlYXRlKFdU
Rk1vdmUoY2FsbGJhY2tGdW5jdGlvbikpOworICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBjYWxs
YmFjay0+Y2FsbGJhY2tJRCgpOworICAgIG1fZ2V0Q29va2llc0NhbGxiYWNrcy5zZXQoY2FsbGJh
Y2tJRCwgV1RGTW92ZShjYWxsYmFjaykpOworCisgICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvTmV0
d29ya2luZ1Byb2Nlc3NSZWxhdW5jaGluZ0lmTmVjZXNzYXJ5KE1lc3NhZ2VzOjpXZWJDb29raWVN
YW5hZ2VyOjpHZXRDb29raWVzKHNlc3Npb25JRCwgdXJsLCBjYWxsYmFja0lEKSk7Cit9CisKK3Zv
aWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpkaWRTZXRDb29raWVzKHVpbnQ2NF90IGNhbGxiYWNr
SUQpCit7CisgICAgbV92b2lkQ2FsbGJhY2tzLnRha2UoY2FsbGJhY2tJRCktPnBlcmZvcm1DYWxs
YmFjaygpOworfQorCit2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGlkR2V0Q29va2llcyhj
b25zdCBWZWN0b3I8Q29va2llPiYgY29va2llcywgdWludDY0X3QgY2FsbGJhY2tJRCkKIHsKLSAg
ICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9OZXR3b3JraW5nUHJvY2Vzc1JlbGF1bmNoaW5nSWZOZWNl
c3NhcnkoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OkRlbGV0ZUFsbENvb2tpZXNNb2RpZmll
ZFNpbmNlKHNlc3Npb25JRCwgdGltZSkpOworICAgIG1fZ2V0Q29va2llc0NhbGxiYWNrcy50YWtl
KGNhbGxiYWNrSUQpLT5wZXJmb3JtQ2FsbGJhY2tXaXRoUmV0dXJuVmFsdWUoY29va2llcyk7CiB9
CiAKLXZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpzZXRDb29raWVzKFdlYkNvcmU6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiBjb29raWVzLCBj
b25zdCBXZWJDb3JlOjpVUkwmIHVybCwgY29uc3QgV2ViQ29yZTo6VVJMJiBtYWluRG9jdW1lbnRV
UkwpCit2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGlkRGVsZXRlQ29va2llcyh1aW50NjRf
dCBjYWxsYmFja0lEKQogewotICAgIHByb2Nlc3NQb29sKCktPnNlbmRUb05ldHdvcmtpbmdQcm9j
ZXNzUmVsYXVuY2hpbmdJZk5lY2Vzc2FyeShNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6U2V0
Q29va2llcyhzZXNzaW9uSUQsIGNvb2tpZXMsIHVybCwgbWFpbkRvY3VtZW50VVJMKSk7CisgICAg
bV92b2lkQ2FsbGJhY2tzLnRha2UoY2FsbGJhY2tJRCktPnBlcmZvcm1DYWxsYmFjaygpOwogfQog
Ci12b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6c3RhcnRPYnNlcnZpbmdDb29raWVDaGFuZ2Vz
KFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQpCit2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94
eTo6c3RhcnRPYnNlcnZpbmdDb29raWVDaGFuZ2VzKFNlc3Npb25JRCBzZXNzaW9uSUQpCiB7CiAg
ICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvTmV0d29ya2luZ1Byb2Nlc3NSZWxhdW5jaGluZ0lmTmVj
ZXNzYXJ5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpTdGFydE9ic2VydmluZ0Nvb2tpZUNo
YW5nZXMoc2Vzc2lvbklEKSk7CiB9CiAKLXZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpzdG9w
T2JzZXJ2aW5nQ29va2llQ2hhbmdlcyhXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQordm9p
ZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OnN0b3BPYnNlcnZpbmdDb29raWVDaGFuZ2VzKFNlc3Np
b25JRCBzZXNzaW9uSUQpCiB7CiAgICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvTmV0d29ya2luZ1By
b2Nlc3NSZWxhdW5jaGluZ0lmTmVjZXNzYXJ5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpT
dG9wT2JzZXJ2aW5nQ29va2llQ2hhbmdlcyhzZXNzaW9uSUQpKTsKIH0KIAotdm9pZCBXZWJDb29r
aWVNYW5hZ2VyUHJveHk6OnNldENvb2tpZU9ic2VydmVyQ2FsbGJhY2soV2ViQ29yZTo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgc3RkOjpmdW5jdGlvbjx2b2lkICgpPiYmIGNhbGxiYWNrKQordm9pZCBX
ZWJDb29raWVNYW5hZ2VyUHJveHk6OnNldENvb2tpZU9ic2VydmVyQ2FsbGJhY2soU2Vzc2lvbklE
IHNlc3Npb25JRCwgc3RkOjpmdW5jdGlvbjx2b2lkICgpPiYmIGNhbGxiYWNrKQogewogICAgIGlm
IChjYWxsYmFjaykKICAgICAgICAgbV9jb29raWVPYnNlcnZlcnMuc2V0KHNlc3Npb25JRCwgV1RG
TW92ZShjYWxsYmFjaykpOwpAQCAtMTUyLDE0ICsyMDUsMTQgQEAgdm9pZCBXZWJDb29raWVNYW5h
Z2VyUHJveHk6OnNldENvb2tpZU9ic2VydmVyQ2FsbGJhY2soV2ViQ29yZTo6U2Vzc2lvbklEIHNl
c3Npb24KICAgICAgICAgbV9jb29raWVPYnNlcnZlcnMucmVtb3ZlKHNlc3Npb25JRCk7CiB9CiAK
LXZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5Ojpjb29raWVzRGlkQ2hhbmdlKFdlYkNvcmU6OlNl
c3Npb25JRCBzZXNzaW9uSUQpCit2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6Y29va2llc0Rp
ZENoYW5nZShTZXNzaW9uSUQgc2Vzc2lvbklEKQogewogICAgIG1fY2xpZW50LmNvb2tpZXNEaWRD
aGFuZ2UodGhpcyk7CiAgICAgaWYgKGF1dG8gY2FsbGJhY2sgPSBtX2Nvb2tpZU9ic2VydmVycy5n
ZXQoc2Vzc2lvbklEKSkKICAgICAgICAgY2FsbGJhY2soKTsKIH0KIAotdm9pZCBXZWJDb29raWVN
YW5hZ2VyUHJveHk6OnNldEhUVFBDb29raWVBY2NlcHRQb2xpY3koSFRUUENvb2tpZUFjY2VwdFBv
bGljeSBwb2xpY3kpCit2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6c2V0SFRUUENvb2tpZUFj
Y2VwdFBvbGljeShTZXNzaW9uSUQsIEhUVFBDb29raWVBY2NlcHRQb2xpY3kgcG9saWN5LCBGdW5j
dGlvbjx2b2lkIChDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQogewog
I2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGlmICghcHJvY2Vzc1Bvb2woKS0+aXNVc2luZ1Rlc3Rp
bmdOZXR3b3JrU2Vzc2lvbigpKQpAQCAtMTcyLDExICsyMjUsMTYgQEAgdm9pZCBXZWJDb29raWVN
YW5hZ2VyUHJveHk6OnNldEhUVFBDb29raWVBY2NlcHRQb2xpY3koSFRUUENvb2tpZUFjY2VwdFBv
bGljeSBwb2wKICAgICAvLyBUaGUgcG9saWN5IGlzIG5vdCBzZW50IHRvIG5ld2x5IGNyZWF0ZWQg
cHJvY2Vzc2VzIChvbmx5IFNvdXAgZG9lcyB0aGF0IHZpYSBzZXRJbml0aWFsSFRUUENvb2tpZUFj
Y2VwdFBvbGljeSgpKS4gVGhpcyBpcyBub3QgYSBzZXJpb3VzIHByb2JsZW0sIGJlY2F1c2U6CiAg
ICAgLy8gLSBXaGVuIHRlc3RpbmcsIHdlIG9ubHkgaGF2ZSBvbmUgV2ViUHJvY2VzcyBhbmQgb25l
IE5ldHdvcmtQcm9jZXNzLCBhbmQgV2ViS2l0VGVzdFJ1bm5lciBuZXZlciByZXN0YXJ0cyB0aGVt
OwogICAgIC8vIC0gV2hlbiBub3QgdGVzdGluZywgQ29jb2EgaGFzIHRoZSBwb2xpY3kgcGVyc2lz
dGVkLCBhbmQgdGh1cyBuZXcgcHJvY2Vzc2VzIHVzZSBpdCAoZXZlbiBmb3IgZXBoZW1lcmFsIHNl
c3Npb25zKS4KLSAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6
OldlYkNvb2tpZU1hbmFnZXI6OlNldEhUVFBDb29raWVBY2NlcHRQb2xpY3kocG9saWN5KSk7Ci0g
ICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvTmV0d29ya2luZ1Byb2Nlc3MoTWVzc2FnZXM6OldlYkNv
b2tpZU1hbmFnZXI6OlNldEhUVFBDb29raWVBY2NlcHRQb2xpY3kocG9saWN5KSk7CisgICAgcHJv
Y2Vzc1Bvb2woKS0+c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2Vy
OjpTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHBvbGljeSwgMCkpOworCisgICAgYXV0byBjYWxs
YmFjayA9IFZvaWRDYWxsYmFjazo6Y3JlYXRlKFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbikpOwor
ICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgpOworICAgIG1f
dm9pZENhbGxiYWNrcy5zZXQoY2FsbGJhY2tJRCwgV1RGTW92ZShjYWxsYmFjaykpOworCisgICAg
cHJvY2Vzc1Bvb2woKS0+c2VuZFRvTmV0d29ya2luZ1Byb2Nlc3MoTWVzc2FnZXM6OldlYkNvb2tp
ZU1hbmFnZXI6OlNldEhUVFBDb29raWVBY2NlcHRQb2xpY3kocG9saWN5LCBjYWxsYmFja0lEKSk7
CiB9CiAKLXZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpnZXRIVFRQQ29va2llQWNjZXB0UG9s
aWN5KEZ1bmN0aW9uPHZvaWQgKEhUVFBDb29raWVBY2NlcHRQb2xpY3ksIENhbGxiYWNrQmFzZTo6
RXJyb3IpPiBjYWxsYmFja0Z1bmN0aW9uKQordm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6Omdl
dEhUVFBDb29raWVBY2NlcHRQb2xpY3koU2Vzc2lvbklELCBGdW5jdGlvbjx2b2lkIChIVFRQQ29v
a2llQWNjZXB0UG9saWN5LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9u
KQogewogICAgIGF1dG8gY2FsbGJhY2sgPSBIVFRQQ29va2llQWNjZXB0UG9saWN5Q2FsbGJhY2s6
OmNyZWF0ZShXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pKTsKIApAQCAtMTg4LDEzICsyNDYsMTIg
QEAgdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmdldEhUVFBDb29raWVBY2NlcHRQb2xpY3ko
RnVuY3Rpb248dm9pZCAoSFRUUENvb2tpZUEKIAogdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6
OmRpZEdldEhUVFBDb29raWVBY2NlcHRQb2xpY3kodWludDMyX3QgcG9saWN5LCB1aW50NjRfdCBj
YWxsYmFja0lEKQogewotICAgIFJlZlB0cjxIVFRQQ29va2llQWNjZXB0UG9saWN5Q2FsbGJhY2s+
IGNhbGxiYWNrID0gbV9odHRwQ29va2llQWNjZXB0UG9saWN5Q2FsbGJhY2tzLnRha2UoY2FsbGJh
Y2tJRCk7Ci0gICAgaWYgKCFjYWxsYmFjaykgewotICAgICAgICAvLyBGSVhNRTogTG9nIGVycm9y
IG9yIGFzc2VydC4KLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBtX2h0dHBDb29raWVBY2Nl
cHRQb2xpY3lDYWxsYmFja3MudGFrZShjYWxsYmFja0lEKS0+cGVyZm9ybUNhbGxiYWNrV2l0aFJl
dHVyblZhbHVlKHBvbGljeSk7Cit9CiAKLSAgICBjYWxsYmFjay0+cGVyZm9ybUNhbGxiYWNrV2l0
aFJldHVyblZhbHVlKHBvbGljeSk7Cit2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGlkU2V0
SFRUUENvb2tpZUFjY2VwdFBvbGljeSh1aW50NjRfdCBjYWxsYmFja0lEKQoreworICAgIG1fdm9p
ZENhbGxiYWNrcy50YWtlKGNhbGxiYWNrSUQpLT5wZXJmb3JtQ2FsbGJhY2soKTsKIH0KIAogdm9p
ZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OnNldENvb2tpZVN0b3JhZ2VQYXJ0aXRpb25pbmdFbmFi
bGVkKGJvb2wgZW5hYmxlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJDb29raWVNYW5hZ2VyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29r
aWVNYW5hZ2VyUHJveHkuaAppbmRleCBjZjc5OGQ3Y2NjYy4uODQ2MTljYWJhZmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmgKQEAgLTU1
LDYgKzU1LDcgQEAgY2xhc3MgV2ViUHJvY2Vzc1Byb3h5OwogCiB0eXBlZGVmIEdlbmVyaWNDYWxs
YmFjazxBUEk6OkFycmF5Kj4gQXJyYXlDYWxsYmFjazsKIHR5cGVkZWYgR2VuZXJpY0NhbGxiYWNr
PEhUVFBDb29raWVBY2NlcHRQb2xpY3k+IEhUVFBDb29raWVBY2NlcHRQb2xpY3lDYWxsYmFjazsK
K3R5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jj4g
R2V0Q29va2llc0NhbGxiYWNrOwogCiBjbGFzcyBXZWJDb29raWVNYW5hZ2VyUHJveHkgOiBwdWJs
aWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpDb29raWVNYW5hZ2VyPiwgcHVi
bGljIFdlYkNvbnRleHRTdXBwbGVtZW50LCBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsK
IHB1YmxpYzoKQEAgLTY2LDE0ICs2NywxOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBpbml0aWFsaXpl
Q2xpZW50KGNvbnN0IFdLQ29va2llTWFuYWdlckNsaWVudEJhc2UqKTsKICAgICAKICAgICB2b2lk
IGdldEhvc3RuYW1lc1dpdGhDb29raWVzKFdlYkNvcmU6OlNlc3Npb25JRCwgRnVuY3Rpb248dm9p
ZCAoQVBJOjpBcnJheSosIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKKyAgICB2b2lkIGRlbGV0
ZUNvb2tpZShXZWJDb3JlOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OkNvb2tpZSYsIEZ1bmN0
aW9uPHZvaWQgKENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKICAgICB2b2lkIGRlbGV0ZUNvb2tp
ZXNGb3JIb3N0bmFtZShXZWJDb3JlOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgaG9zdG5hbWUp
OwogICAgIHZvaWQgZGVsZXRlQWxsQ29va2llcyhXZWJDb3JlOjpTZXNzaW9uSUQpOwotICAgIHZv
aWQgZGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2UoV2ViQ29yZTo6U2Vzc2lvbklELCBzdGQ6
OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50KTsKKyAgICB2b2lkIGRlbGV0ZUFsbENv
b2tpZXNNb2RpZmllZFNpbmNlKFdlYkNvcmU6OlNlc3Npb25JRCwgc3RkOjpjaHJvbm86OnN5c3Rl
bV9jbG9jazo6dGltZV9wb2ludCwgRnVuY3Rpb248dm9pZCAoQ2FsbGJhY2tCYXNlOjpFcnJvcik+
JiYpOwogCi0gICAgdm9pZCBzZXRDb29raWVzKFdlYkNvcmU6OlNlc3Npb25JRCwgY29uc3QgVmVj
dG9yPFdlYkNvcmU6OkNvb2tpZT4mLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXZWJDb3Jl
OjpVUkwmIG1haW5Eb2N1bWVudFVSTCk7CisgICAgdm9pZCBzZXRDb29raWVzKFdlYkNvcmU6OlNl
c3Npb25JRCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mLCBjb25zdCBXZWJDb3JlOjpV
UkwmLCBjb25zdCBXZWJDb3JlOjpVUkwmIG1haW5Eb2N1bWVudFVSTCwgRnVuY3Rpb248dm9pZCAo
Q2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOworCisgICAgdm9pZCBnZXRBbGxDb29raWVzKFdlYkNv
cmU6OlNlc3Npb25JRCwgRnVuY3Rpb248dm9pZCAoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tp
ZT4mLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7CisgICAgdm9p
ZCBnZXRDb29raWVzKFdlYkNvcmU6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6VVJMJiwgRnVu
Y3Rpb248dm9pZCAoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mLCBDYWxsYmFja0Jhc2U6
OkVycm9yKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7CisKKyAgICB2b2lkIHNldEhUVFBDb29raWVB
Y2NlcHRQb2xpY3koV2ViQ29yZTo6U2Vzc2lvbklELCBIVFRQQ29va2llQWNjZXB0UG9saWN5LCBG
dW5jdGlvbjx2b2lkIChDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CisgICAgdm9pZCBnZXRIVFRQ
Q29va2llQWNjZXB0UG9saWN5KFdlYkNvcmU6OlNlc3Npb25JRCwgRnVuY3Rpb248dm9pZCAoSFRU
UENvb2tpZUFjY2VwdFBvbGljeSwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwogCi0gICAgdm9p
ZCBzZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KEhUVFBDb29raWVBY2NlcHRQb2xpY3kpOwotICAg
IHZvaWQgZ2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShGdW5jdGlvbjx2b2lkIChIVFRQQ29va2ll
QWNjZXB0UG9saWN5LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4pOwogICAgIHZvaWQgc2V0Q29va2ll
U3RvcmFnZVBhcnRpdGlvbmluZ0VuYWJsZWQoYm9vbCk7CiAKICAgICB2b2lkIHN0YXJ0T2JzZXJ2
aW5nQ29va2llQ2hhbmdlcyhXZWJDb3JlOjpTZXNzaW9uSUQpOwpAQCAtOTUsNiArMTAxLDExIEBA
IHByaXZhdGU6CiAgICAgdm9pZCBkaWRHZXRIb3N0bmFtZXNXaXRoQ29va2llcyhjb25zdCBWZWN0
b3I8U3RyaW5nPiYsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwogICAgIHZvaWQgZGlkR2V0SFRUUENv
b2tpZUFjY2VwdFBvbGljeSh1aW50MzJfdCBwb2xpY3ksIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwog
CisgICAgdm9pZCBkaWRTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHVpbnQ2NF90IGNhbGxiYWNr
SUQpOworICAgIHZvaWQgZGlkU2V0Q29va2llcyh1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICB2
b2lkIGRpZEdldENvb2tpZXMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mLCB1aW50NjRf
dCBjYWxsYmFja0lEKTsKKyAgICB2b2lkIGRpZERlbGV0ZUNvb2tpZXModWludDY0X3QgY2FsbGJh
Y2tJRCk7CisKICAgICB2b2lkIGNvb2tpZXNEaWRDaGFuZ2UoV2ViQ29yZTo6U2Vzc2lvbklEKTsK
IAogICAgIC8vIFdlYkNvbnRleHRTdXBwbGVtZW50CkBAIC0xMTMsNiArMTI0LDggQEAgcHJpdmF0
ZToKIAogICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxBcnJheUNhbGxiYWNrPj4gbV9hcnJh
eUNhbGxiYWNrczsKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8SFRUUENvb2tpZUFjY2Vw
dFBvbGljeUNhbGxiYWNrPj4gbV9odHRwQ29va2llQWNjZXB0UG9saWN5Q2FsbGJhY2tzOworICAg
IEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxWb2lkQ2FsbGJhY2s+PiBtX3ZvaWRDYWxsYmFja3M7
CisgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPEdldENvb2tpZXNDYWxsYmFjaz4+IG1fZ2V0
Q29va2llc0NhbGxiYWNrczsKIAogICAgIEhhc2hNYXA8V2ViQ29yZTo6U2Vzc2lvbklELCBzdGQ6
OmZ1bmN0aW9uPHZvaWQgKCk+PiBtX2Nvb2tpZU9ic2VydmVyczsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbiBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkubWVzc2FnZXMu
aW4KaW5kZXggMTJlMDA5MDE4YjcuLmRjY2JjZjI5ZTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4K
QEAgLTIzLDYgKzIzLDExIEBACiBtZXNzYWdlcyAtPiBXZWJDb29raWVNYW5hZ2VyUHJveHkgewog
ICAgIERpZEdldEhvc3RuYW1lc1dpdGhDb29raWVzKFZlY3RvcjxTdHJpbmc+IGhvc3RuYW1lcywg
dWludDY0X3QgY2FsbGJhY2tJRCk7CiAgICAgRGlkR2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSh1
aW50MzJfdCBwb2xpY3ksIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwotICAgIAorCisgICAgRGlkU2V0
SFRUUENvb2tpZUFjY2VwdFBvbGljeSh1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICBEaWREZWxl
dGVDb29raWVzKHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAgIERpZFNldENvb2tpZXModWludDY0
X3QgY2FsbGJhY2tJRCk7CisgICAgRGlkR2V0Q29va2llcyhWZWN0b3I8V2ViQ29yZTo6Q29va2ll
PiBjb29raWVzLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKKwogICAgIENvb2tpZXNEaWRDaGFuZ2Uo
V2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCkKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViRnJhbWVQcm94eS5oCmluZGV4IDZiZjk5Mzg2MmI3Li41NWI1YjY3ZTBiMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5oCkBAIC0zMSw2ICszMSw3IEBACiAjaW5j
bHVkZSAiV2ViRnJhbWVMaXN0ZW5lclByb3h5LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZUxv
YWRlclR5cGVzLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvRnVu
Y3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Bvb2wuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29s
LmNwcAppbmRleCBmNjk2MjMxYmEwNS4uYWFjNmJhNWIzYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUg
IkFQSUF1dG9tYXRpb25DbGllbnQuaCIKICNpbmNsdWRlICJBUElDdXN0b21Qcm90b2NvbE1hbmFn
ZXJDbGllbnQuaCIKICNpbmNsdWRlICJBUElEb3dubG9hZENsaWVudC5oIgorI2luY2x1ZGUgIkFQ
SUhUVFBDb29raWVTdG9yYWdlLmgiCiAjaW5jbHVkZSAiQVBJTGVnYWN5Q29udGV4dEhpc3RvcnlD
bGllbnQuaCIKICNpbmNsdWRlICJBUElQYWdlQ29uZmlndXJhdGlvbi5oIgogI2luY2x1ZGUgIkFQ
SVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Bvb2wuaAppbmRleCA4ODVhZDNjZWJiMy4uZTBlMTkyNmQ1M2UgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCkBAIC03Niw2ICs3Niw3IEBAIG5hbWVz
cGFjZSBBUEkgewogY2xhc3MgQXV0b21hdGlvbkNsaWVudDsKIGNsYXNzIEN1c3RvbVByb3RvY29s
TWFuYWdlckNsaWVudDsKIGNsYXNzIERvd25sb2FkQ2xpZW50OworY2xhc3MgSFRUUENvb2tpZVN0
b3JhZ2U7CiBjbGFzcyBMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudDsKIGNsYXNzIFBhZ2VDb25m
aWd1cmF0aW9uOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYnNp
dGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCmluZGV4IDdiYWFmODU0NTQyLi5jZjc3ZWVj
MTQ0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dl
YnNpdGVEYXRhU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRl
RGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkFQ
SVdlYnNpdGVEYXRhUmVjb3JkLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NNZXNzYWdlcy5o
IgogI2luY2x1ZGUgIlN0b3JhZ2VNYW5hZ2VyLmgiCisjaW5jbHVkZSAiV2ViQ29va2llTWFuYWdl
clByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2Vi
UHJvY2Vzc1Bvb2wuaCIKICNpbmNsdWRlICJXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUu
aCIKQEAgLTEwNSw2ICsxMDYsMjcgQEAgV2Vic2l0ZURhdGFTdG9yZTo6fldlYnNpdGVEYXRhU3Rv
cmUoKQogICAgIH0KIH0KIAorUmVmPFdlYlByb2Nlc3NQb29sPiBXZWJzaXRlRGF0YVN0b3JlOjpw
cm9jZXNzUG9vbEZvckNvb2tpZVN0b3JhZ2VPcGVyYXRpb25zKCkKK3sKKyAgICAvLyBPdXIgY29u
Y2VwdHMgb2YgV2ViUHJvY2VzcywgV2ViUHJvY2Vzc1Bvb2wsIFdlYnNpdGVEYXRhU3RvcmUsIGFu
ZCBTZXNzaW9uSURzIGhhdmUgYWxsIHN0YXJ0ZWQgdG8gb3ZlcmxhcAorICAgIC8vIHdpdGhvdXQg
Y2xlYXIgZGl2aXNpb25zIG9mIHJlc3BvbnNpYmlsaXRpZXMuCisgICAgLy8gSW4gcHJhY3RpY2Us
IG11bHRpcGxlIFdlYlByb2Nlc3NQb29scyBjYW4gY29udGFpbiAidGhlIHNhbWUgc2Vzc2lvbiIs
IGVzcGVjaWFsbHkgc2luY2UgdGhlcmUgaXMgY3VycmVudGx5CisgICAgLy8gb25seSBhIHNpbmds
ZSBkZWZhdWx0IGdsb2JhbCBTZXNzaW9uSUQuCisgICAgLy8KKyAgICAvLyBUaGlzIG1lYW5zIHRo
YXQgbXVsdGlwbGUgTmV0d29ya1Byb2Nlc3NlcyBjYW4gYmUgdXNpbmcgdGhlIHNhbWUgc2Vzc2lv
biwgd2hpY2ggbWVhbnMgdGhhdCBtdWx0aXBsZQorICAgIC8vIE5ldHdvcmtQcm9jZXNzZXMgY2Fu
IGJlIHJlZmVycmluZyB0byB0aGUgc2FtZSBwbGF0Zm9ybSBjb29raWUgc3RvcmFnZS4KKyAgICAv
LworICAgIC8vIFdoaWxlIHRoaXMgbWF5IGNhdXNlIGNvbXBsaWNhdGlvbnMgd2l0aCBmdXR1cmUg
QVBJcyBpdCBpcyBhY3R1YWxseSBmaW5lIGZvciBpbXBsZW1lbnRpbmcgdGhlIFdLSFRUUENvb2tp
ZVN0b3JhZ2UgQVBJCisgICAgLy8gYmVjYXVzZSB3ZSBvbmx5IG5lZWQgb25lIE5ldHdvcmtQcm9j
ZXNzIHRvIHN1Y2Nlc3NmdWxseSBtYWtlIGEgcmVxdWVzdGVkIHBsYXRmb3JtIGNvb2tpZSBzdG9y
YWdlIGNoYW5nZS4KKyAgICAvLworICAgIC8vIEZJWE1FOiBXZSBuZWVkIHRvIHN0YXJ0IHRvIHVu
cmF2ZWwgdGhpcyBtZXNzIGdvaW5nIGZvcndhcmQuCisKKyAgICBhdXRvIHBvb2xzID0gcHJvY2Vz
c1Bvb2xzKDEpOworICAgIEFTU0VSVCghcG9vbHMuaXNFbXB0eSgpKTsKKworICAgIHJldHVybiAq
KnBvb2xzLmJlZ2luKCk7Cit9CisKIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6cmVzb2x2ZURpcmVj
dG9yaWVzSWZOZWNlc3NhcnkoKQogewogICAgIGlmIChtX2hhc1Jlc29sdmVkRGlyZWN0b3JpZXMp
CkBAIC0xMTA4LDcgKzExMzAsNyBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OndlYlByb2Nlc3NE
aWRDbG9zZUNvbm5lY3Rpb24oV2ViUHJvY2Vzc1Byb3h5JiB3ZWJQcm9jZXNzUAogICAgICAgICBt
X3N0b3JhZ2VNYW5hZ2VyLT5wcm9jZXNzRGlkQ2xvc2VDb25uZWN0aW9uKHdlYlByb2Nlc3NQcm94
eSwgY29ubmVjdGlvbik7CiB9CiAKLUhhc2hTZXQ8UmVmUHRyPFdlYlByb2Nlc3NQb29sPj4gV2Vi
c2l0ZURhdGFTdG9yZTo6cHJvY2Vzc1Bvb2xzKCkgY29uc3QKK0hhc2hTZXQ8UmVmUHRyPFdlYlBy
b2Nlc3NQb29sPj4gV2Vic2l0ZURhdGFTdG9yZTo6cHJvY2Vzc1Bvb2xzKHNpemVfdCBjb3VudCkg
Y29uc3QKIHsKICAgICBIYXNoU2V0PFJlZlB0cjxXZWJQcm9jZXNzUG9vbD4+IHByb2Nlc3NQb29s
czsKICAgICBmb3IgKGF1dG8mIHByb2Nlc3MgOiBwcm9jZXNzZXMoKSkKQEAgLTExMjIsMTEgKzEx
NDQsMjAgQEAgSGFzaFNldDxSZWZQdHI8V2ViUHJvY2Vzc1Bvb2w+PiBXZWJzaXRlRGF0YVN0b3Jl
Ojpwcm9jZXNzUG9vbHMoKSBjb25zdAogICAgICAgICAgICAgICAgICAgICBwcm9jZXNzUG9vbHMu
YWRkKHByb2Nlc3NQb29sKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIGlmICgmQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpk
ZWZhdWx0RGF0YVN0b3JlKCktPndlYnNpdGVEYXRhU3RvcmUoKSA9PSB0aGlzKSB7CisgICAgICAg
ICAgICAgICAgLy8gSWYgYSBwcm9jZXNzIHBvb2wgZG9lc24ndCBoYXZlIGFuIGV4cGxpY2l0IGRh
dGEgc3RvcmUgYW5kIHRoaXMgaXMgdGhlIGRlZmF1bHQgV2Vic2l0ZURhdGFTdG9yZSwKKyAgICAg
ICAgICAgICAgICAvLyBhZGQgdGhhdCBwcm9jZXNzIHBvb2wgdG8gdGhlIHNldC4KKyAgICAgICAg
ICAgICAgICAvLyBGSVhNRTogVGhpcyBiZWhhdmlvciBpcyB3ZWlyZCBhbmQgbmVjZXNzaXRhdGVk
IGJ5IHRoZSBmYWN0IHRoYXQgcHJvY2VzcyBwb29scyBkb24ndCBhbHdheXMKKyAgICAgICAgICAg
ICAgICAvLyBoYXZlIGEgZGF0YSBzdG9yZTsgVGhleSBzaG91bGQuCisgICAgICAgICAgICAgICAg
cHJvY2Vzc1Bvb2xzLmFkZChwcm9jZXNzUG9vbCk7CiAgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIGlmIChwcm9jZXNzUG9vbHMuc2l6ZSgpID09IGNvdW50KQorICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKHByb2Nlc3NQb29scy5pc0VtcHR5KCkp
IHsKKyAgICBpZiAocHJvY2Vzc1Bvb2xzLmlzRW1wdHkoKSAmJiBjb3VudCkgewogICAgICAgICBh
dXRvIHByb2Nlc3NQb29sID0gV2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZShBUEk6OlByb2Nlc3NQb29s
Q29uZmlndXJhdGlvbjo6Y3JlYXRlV2l0aFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uKG1f
Y29uZmlndXJhdGlvbikpOwogICAgICAgICBwcm9jZXNzUG9vbHMuYWRkKHByb2Nlc3NQb29sLnB0
cigpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0
ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYnNp
dGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAppbmRleCA5NzViYWM4ZDg5Yi4uOGQxM2JjZTQ5ODIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRl
RGF0YVN0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dl
YnNpdGVEYXRhU3RvcmUuaApAQCAtMTAzLDYgKzEwMyw4IEBAIHB1YmxpYzoKIAogICAgIFN0b3Jh
Z2VNYW5hZ2VyKiBzdG9yYWdlTWFuYWdlcigpIHsgcmV0dXJuIG1fc3RvcmFnZU1hbmFnZXIuZ2V0
KCk7IH0KIAorICAgIFJlZjxXZWJQcm9jZXNzUG9vbD4gcHJvY2Vzc1Bvb2xGb3JDb29raWVTdG9y
YWdlT3BlcmF0aW9ucygpOworCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFdlYnNpdGVEYXRhU3Rv
cmUoV2ViQ29yZTo6U2Vzc2lvbklEKTsKICAgICBleHBsaWNpdCBXZWJzaXRlRGF0YVN0b3JlKENv
bmZpZ3VyYXRpb24pOwpAQCAtMTE5LDcgKzEyMSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwbGF0
Zm9ybURlc3Ryb3koKTsKICAgICBzdGF0aWMgdm9pZCBwbGF0Zm9ybVJlbW92ZVJlY2VudFNlYXJj
aGVzKHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQpOwogCi0gICAgSGFzaFNl
dDxSZWZQdHI8V2ViUHJvY2Vzc1Bvb2w+PiBwcm9jZXNzUG9vbHMoKSBjb25zdDsKKyAgICBIYXNo
U2V0PFJlZlB0cjxXZWJQcm9jZXNzUG9vbD4+IHByb2Nlc3NQb29scyhzaXplX3QgY291bnQgPSBz
dGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpKSBjb25zdDsKIAogI2lmIEVOQUJMRShO
RVRTQ0FQRV9QTFVHSU5fQVBJKQogICAgIFZlY3RvcjxQbHVnaW5Nb2R1bGVJbmZvPiBwbHVnaW5z
KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggN2UxODgyMmYwNGQuLjljNjNmNjgzMmY5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMDYzLDYgKzEw
NjMsOSBAQAogCQk1MUQxMjQzNTFFNkRGNjUyMDAyQjI4MjAgLyogV0tVUkxTY2hlbWVIYW5kbGVy
VGFzay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFE
MTI0MkYxRTZERERENzAwMkIyODIwIC8qIFdLVVJMU2NoZW1lSGFuZGxlclRhc2suaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CiAJCTUxRDEyNDM2MUU2REZC
MzkwMDJCMjgyMCAvKiBXS1VSTFNjaGVtZUhhbmRsZXJUYXNrLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFEMTI0MzAxRTZERERENzAwMkIyODIwIC8q
IFdLVVJMU2NoZW1lSGFuZGxlclRhc2subW0gKi87IH07CiAJCTUxRDEyNDNBMUU2RTBBQUIwMDJC
MjgyMCAvKiBBUElVUkxTY2hlbWVIYW5kbGVyVGFzay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUQxMjQzODFFNkRGREI5MDAyQjI4MjAgLyogQVBJ
VVJMU2NoZW1lSGFuZGxlclRhc2suY3BwICovOyB9OworCQk1MUQxMjQ5MTFFNzRCRjNDMDAyQjI4
MjAgLyogQVBJSFRUUENvb2tpZVN0b3JhZ2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTFEMTI0ODIxRTczNEFDODAwMkIyODIwIC8qIEFQSUhUVFBD
b29raWVTdG9yYWdlLmNwcCAqLzsgfTsKKwkJNTFEMTI0OTIxRTc0QkY0ODAwMkIyODIwIC8qIF9X
S0hUVFBDb29raWVTdG9yYWdlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTFEMTI0ODUxRTczNEFFMzAwMkIyODIwIC8qIF9XS0hUVFBDb29raWVTdG9y
YWdlLm1tICovOyB9OworCQk1MUQxMjQ5OTFFNzYzQzAxMDAyQjI4MjAgLyogX1dLSFRUUENvb2tp
ZVN0b3JhZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxRDEyNDg0MUU3MzRBRTMwMDJCMjgyMCAvKiBfV0tIVFRQQ29va2llU3RvcmFnZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxRDEzMDUzMTM4
MkVBQzAwMDM1MUVERCAvKiBTZWNJdGVtUmVxdWVzdERhdGEuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFEMTMwNEYxMzgyRUFDMDAwMzUxRUREIC8q
IFNlY0l0ZW1SZXF1ZXN0RGF0YS5jcHAgKi87IH07CiAJCTUxRDEzMDU0MTM4MkVBQzAwMDM1MUVE
RCAvKiBTZWNJdGVtUmVxdWVzdERhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxRDEzMDUwMTM4MkVBQzAwMDM1MUVERCAvKiBTZWNJdGVtUmVxdWVz
dERhdGEuaCAqLzsgfTsKIAkJNTFEMTMwNTUxMzgyRUFDMDAwMzUxRUREIC8qIFNlY0l0ZW1SZXNw
b25zZURhdGEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTFEMTMwNTExMzgyRUFDMDAwMzUxRUREIC8qIFNlY0l0ZW1SZXNwb25zZURhdGEuY3BwICov
OyB9OwpAQCAtMzI4NSw2ICszMjg4LDExIEBACiAJCTUxRDEyNDM3MUU2REZEMkEwMDJCMjgyMCAv
KiBXS1VSTFNjaGVtZUhhbmRsZXJUYXNrSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV0tVUkxTY2hlbWVIYW5kbGVyVGFza0ludGVybmFsLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTUxRDEyNDM4MUU2REZEQjkwMDJCMjgyMCAvKiBBUElVUkxTY2hl
bWVIYW5kbGVyVGFzay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBB
UElVUkxTY2hlbWVIYW5kbGVyVGFzay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTUxRDEyNDM5MUU2REZEQjkwMDJCMjgyMCAvKiBBUElVUkxTY2hlbWVIYW5kbGVyVGFzay5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBUElVUkxTY2hlbWVIYW5kbGVyVGFzay5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MUQxMjQ4MjFFNzM0QUM4MDAyQjI4MjAg
LyogQVBJSFRUUENvb2tpZVN0b3JhZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gQVBJSFRUUENvb2tpZVN0b3JhZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk1MUQxMjQ4MzFFNzM0QUM4MDAyQjI4MjAgLyogQVBJSFRUUENvb2tpZVN0b3JhZ2Uu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJSFRUUENvb2tpZVN0b3JhZ2Uu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFEMTI0ODQxRTczNEFFMzAwMkIyODIw
IC8qIF9XS0hUVFBDb29raWVTdG9yYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IF9XS0hUVFBDb29raWVTdG9yYWdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTUxRDEyNDg1MUU3MzRBRTMwMDJCMjgyMCAvKiBfV0tIVFRQQ29va2llU3RvcmFnZS5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IF9XS0hUVFBDb29raWVTdG9yYWdl
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MUQxMjQ4NjFFNzM0QUUzMDAyQjI4
MjAgLyogX1dLSFRUUENvb2tpZVN0b3JhZ2VJbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBfV0tIVFRQQ29va2llU3RvcmFnZUludGVybmFsLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTUxRDEzMDRGMTM4MkVBQzAwMDM1MUVERCAvKiBTZWNJdGVtUmVx
dWVzdERhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2VjSXRl
bVJlcXVlc3REYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFEMTMwNTAx
MzgyRUFDMDAwMzUxRUREIC8qIFNlY0l0ZW1SZXF1ZXN0RGF0YS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBTZWNJdGVtUmVxdWVzdERhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTFEMTMwNTExMzgyRUFDMDAwMzUxRUREIC8qIFNlY0l0ZW1SZXNwb25zZURh
dGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2VjSXRlbVJlc3Bv
bnNlRGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01NDc4LDYgKzU0ODYs
OSBAQAogCQkJCTJFN0E5NDQ5MUJCRDk1QzYwMDk0NTU0NyAvKiBfV0tGb2N1c2VkRWxlbWVudElu
Zm8uaCAqLywKIAkJCQkzN0E2NEU1NjE4RjM4RjQ2MDBFQjMwRjEgLyogX1dLRm9ybUlucHV0U2Vz
c2lvbi5oICovLAogCQkJCUNENzhFMTE4MURCN0U1QUQwMDE0QTJERSAvKiBfV0tGdWxsc2NyZWVu
RGVsZWdhdGUuaCAqLywKKwkJCQk1MUQxMjQ4NDFFNzM0QUUzMDAyQjI4MjAgLyogX1dLSFRUUENv
b2tpZVN0b3JhZ2UuaCAqLywKKwkJCQk1MUQxMjQ4NTFFNzM0QUUzMDAyQjI4MjAgLyogX1dLSFRU
UENvb2tpZVN0b3JhZ2UubW0gKi8sCisJCQkJNTFEMTI0ODYxRTczNEFFMzAwMkIyODIwIC8qIF9X
S0hUVFBDb29raWVTdG9yYWdlSW50ZXJuYWwuaCAqLywKIAkJCQk1MTQzQjI1RTFERENERkQxMDAx
NEZBQzYgLyogX1dLSWNvbkxvYWRpbmdEZWxlZ2F0ZS5oICovLAogCQkJCTM3QTY0RTU0MThGMzhF
M0MwMEVCMzBGMSAvKiBfV0tJbnB1dERlbGVnYXRlLmggKi8sCiAJCQkJMkQ3OTBBOUMxQUQ3MDUw
RDAwQUI5MEIzIC8qIF9XS0xheW91dE1vZGUuaCAqLywKQEAgLTY3MzIsNiArNjc0Myw4IEBACiAJ
CQkJMkRBQkE3NzUxQTgyQjQyMTAwRUYwRjFBIC8qIEFQSUhpc3RvcnlDbGllbnQuaCAqLywKIAkJ
CQk5M0E4OEI0MjFCQzg4MjhDMDBBQkE1QzIgLyogQVBJSGl0VGVzdFJlc3VsdC5jcHAgKi8sCiAJ
CQkJOTNBODhCNDMxQkM4ODI4QzAwQUJBNUMyIC8qIEFQSUhpdFRlc3RSZXN1bHQuaCAqLywKKwkJ
CQk1MUQxMjQ4MjFFNzM0QUM4MDAyQjI4MjAgLyogQVBJSFRUUENvb2tpZVN0b3JhZ2UuY3BwICov
LAorCQkJCTUxRDEyNDgzMUU3MzRBQzgwMDJCMjgyMCAvKiBBUElIVFRQQ29va2llU3RvcmFnZS5o
ICovLAogCQkJCTUxNDNCMjYxMURERDBEQTAwMDE0RkFDNiAvKiBBUElJY29uTG9hZGluZ0NsaWVu
dC5oICovLAogCQkJCTdDRTREMjA2MUE0Njc3NTcwMEM3RjE1MiAvKiBBUElMZWdhY3lDb250ZXh0
SGlzdG9yeUNsaWVudC5oICovLAogCQkJCTFBMjQ2NEYyMTg5MUU0NTEwMDIzNEM1QiAvKiBBUElM
b2FkZXJDbGllbnQuaCAqLywKQEAgLTg1MTUsNiArODUyOCw3IEBACiAJCQkJNTE0MTI5OTQxQzY0
MjhCQjAwNTlFNzE0IC8qIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNTEwNTIzNzQxQzczRDM4QjAwNzk5M0NCIC8qIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZl
ck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0NGNkFCRDEyQzkxRUY5MDA4RjlDMzUg
LyogV2ViSW1hZ2UuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxRDEyNDk5MUU3NjNDMDEwMDJCMjgy
MCAvKiBfV0tIVFRQQ29va2llU3RvcmFnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUM4RTI4MjAx
Mjc1RDE1NDAwQkM3QkQwIC8qIFdlYkluc3BlY3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMw
MzJEODIxMEY0Mzc4RDAwNThDMTVBIC8qIFdlYkluc3BlY3RvckNsaWVudC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQTU1QkE4MzUxQkEzRTcwQTAwN0NEMzNEIC8qIFdlYkluc3BlY3RvckZyb250ZW5k
QVBJRGlzcGF0Y2hlci5oIGluIEhlYWRlcnMgKi8sCkBAIC05NzY3LDYgKzk3ODEsNyBAQAogCQkJ
CTFBNkZCQTJCMTFFNjg2MjcwMERCMTM3MSAvKiBOZXRzY2FwZUJyb3dzZXJGdW5jcy5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkxQTZGQkQyOTExRTY5QkMyMDBEQjEzNzEgLyogTmV0c2NhcGVQbHVn
aW4uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFFNUI3RkIxMUU3QUVEMjAwQkE2NzY3IC8qIE5l
dHNjYXBlUGx1Z2luTWFjLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJNTFEMTI0OTIxRTc0QkY0ODAw
MkIyODIwIC8qIF9XS0hUVFBDb29raWVTdG9yYWdlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE0
QTlDNTUxMkI4MTZDRjAwOEZFOTg0IC8qIE5ldHNjYXBlUGx1Z2luTW9kdWxlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTgzOUEyRjMxMUUyMDY3NDUwMDM5MDU3RSAvKiBIaWdoUGVyZm9ybWFuY2VH
cmFwaGljc1VzYWdlU2FtcGxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTRBOUM5QTEyQjgy
MUNEMDA4RkU5ODQgLyogTmV0c2NhcGVQbHVnaW5Nb2R1bGVNYWMubW0gaW4gU291cmNlcyAqLywK
QEAgLTk3ODUsNiArOTgwMCw3IEBACiAJCQkJODMxRUVCQkUxQkQ4NUM0MzAwQkI2NEMzIC8qIE5l
dHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4MzJBRTI1
MzFCRTJFOENEMDBGQUFFMTAgLyogTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdlci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk4M0JEQ0NCOTFBQzVGREI2MDAzRjY0NDEgLyogTmV0d29y
a0NhY2hlU3RhdGlzdGljcy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MUQxMjQ5MTFFNzRCRjND
MDAyQjI4MjAgLyogQVBJSFRUUENvb2tpZVN0b3JhZ2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
RTQ0MzZFRDAxQTBEMDQwQjAwRUFEMjA0IC8qIE5ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJODMxMDQyOEMxQkQ2QjY2RjAwQTcxNUU0IC8qIE5ldHdvcmtDYWNoZVN1
YnJlc291cmNlc0VudHJ5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUzMDI1ODNEMURDQkJEMjIw
MERBODlDMiAvKiBOZXR3b3JrQ2FwdHVyZUV2ZW50LmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIu
Y3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIu
Y3BwCmluZGV4IDllMjFmNzhjY2RiLi43MjJiOWI0Njc4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmNwcApAQCAtNzIs
MjIgKzcyLDU1IEBAIHZvaWQgV2ViQ29va2llTWFuYWdlcjo6ZGVsZXRlQ29va2llc0Zvckhvc3Ru
YW1lKFNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluCiAgICAgICAgIFdlYkNvcmU6OmRl
bGV0ZUNvb2tpZXNGb3JIb3N0bmFtZXMoKnN0b3JhZ2VTZXNzaW9uLCB7IGhvc3RuYW1lIH0pOwog
fQogCisKIHZvaWQgV2ViQ29va2llTWFuYWdlcjo6ZGVsZXRlQWxsQ29va2llcyhTZXNzaW9uSUQg
c2Vzc2lvbklEKQogewogICAgIGlmIChhdXRvKiBzdG9yYWdlU2Vzc2lvbiA9IE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKICAgICAgICAgV2ViQ29yZTo6
ZGVsZXRlQWxsQ29va2llcygqc3RvcmFnZVNlc3Npb24pOwogfQogCi12b2lkIFdlYkNvb2tpZU1h
bmFnZXI6OmRlbGV0ZUFsbENvb2tpZXNNb2RpZmllZFNpbmNlKFNlc3Npb25JRCBzZXNzaW9uSUQs
IHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgdGltZSkKK3ZvaWQgV2ViQ29v
a2llTWFuYWdlcjo6ZGVsZXRlQ29va2llKFNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IENvb2tp
ZSYgY29va2llLCB1aW50NjRfdCBjYWxsYmFja0lEKQoreworICAgIGlmIChhdXRvKiBzdG9yYWdl
U2Vzc2lvbiA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vzc2lvbklE
KSkKKyAgICAgICAgc3RvcmFnZVNlc3Npb24tPmRlbGV0ZUNvb2tpZShjb29raWUpOworCisgICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OkRpZERlbGV0
ZUNvb2tpZXMoY2FsbGJhY2tJRCksIDApOworfQorCit2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmRl
bGV0ZUFsbENvb2tpZXNNb2RpZmllZFNpbmNlKFNlc3Npb25JRCBzZXNzaW9uSUQsIHN0ZDo6Y2hy
b25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgdGltZSwgdWludDY0X3QgY2FsbGJhY2tJRCkK
IHsKICAgICBpZiAoYXV0byogc3RvcmFnZVNlc3Npb24gPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246
OnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCiAgICAgICAgIFdlYkNvcmU6OmRlbGV0ZUFsbENv
b2tpZXNNb2RpZmllZFNpbmNlKCpzdG9yYWdlU2Vzc2lvbiwgdGltZSk7CisKKyAgICBpZiAoY2Fs
bGJhY2tJRCkKKyAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJDb29raWVNYW5h
Z2VyUHJveHk6OkRpZERlbGV0ZUNvb2tpZXMoY2FsbGJhY2tJRCksIDApOwogfQogCi12b2lkIFdl
YkNvb2tpZU1hbmFnZXI6OnNldENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
Y29uc3QgVmVjdG9yPENvb2tpZT4mIGNvb2tpZXMsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBVUkwm
IG1haW5Eb2N1bWVudFVSTCkKK3ZvaWQgV2ViQ29va2llTWFuYWdlcjo6Z2V0QWxsQ29va2llcyhT
ZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBjYWxsYmFja0lEKQoreworICAgIFZlY3RvcjxD
b29raWU+IGNvb2tpZXM7CisgICAgaWYgKGF1dG8qIHN0b3JhZ2VTZXNzaW9uID0gTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQorICAgICAgICBjb29raWVz
ID0gc3RvcmFnZVNlc3Npb24tPmdldEFsbENvb2tpZXMoKTsKKworICAgIG1fcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlclByb3h5OjpEaWRHZXRDb29raWVzKGNvb2tpZXMs
IGNhbGxiYWNrSUQpLCAwKTsKK30KKwordm9pZCBXZWJDb29raWVNYW5hZ2VyOjpnZXRDb29raWVz
KFNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgdXJsLCB1aW50NjRfdCBjYWxsYmFja0lE
KQoreworICAgIFZlY3RvcjxDb29raWU+IGNvb2tpZXM7CisgICAgaWYgKGF1dG8qIHN0b3JhZ2VT
ZXNzaW9uID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQp
KQorICAgICAgICBjb29raWVzID0gc3RvcmFnZVNlc3Npb24tPmdldENvb2tpZXModXJsKTsKKwor
ICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlclByb3h5OjpEaWRH
ZXRDb29raWVzKGNvb2tpZXMsIGNhbGxiYWNrSUQpLCAwKTsKK30KKwordm9pZCBXZWJDb29raWVN
YW5hZ2VyOjpzZXRDb29raWVzKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFZl
Y3RvcjxDb29raWU+JiBjb29raWVzLCBjb25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBtYWluRG9j
dW1lbnRVUkwsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiB7CiAgICAgaWYgKGF1dG8qIHN0b3JhZ2VT
ZXNzaW9uID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQp
KQogICAgICAgICBzdG9yYWdlU2Vzc2lvbi0+c2V0Q29va2llcyhjb29raWVzLCB1cmwsIG1haW5E
b2N1bWVudFVSTCk7CisKKyAgICBpZiAoY2FsbGJhY2tJRCkKKyAgICAgICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OkRpZFNldENvb2tpZXMoY2FsbGJh
Y2tJRCksIDApOwogfQogCiB2b2lkIFdlYkNvb2tpZU1hbmFnZXI6Om5vdGlmeUNvb2tpZXNEaWRD
aGFuZ2UoU2Vzc2lvbklEIHNlc3Npb25JRCkKQEAgLTExMSw5ICsxNDQsMTIgQEAgdm9pZCBXZWJD
b29raWVNYW5hZ2VyOjpzdG9wT2JzZXJ2aW5nQ29va2llQ2hhbmdlcyhTZXNzaW9uSUQgc2Vzc2lv
bklEKQogICAgICAgICBXZWJDb3JlOjpzdG9wT2JzZXJ2aW5nQ29va2llQ2hhbmdlcygqc3RvcmFn
ZVNlc3Npb24pOwogfQogCi12b2lkIFdlYkNvb2tpZU1hbmFnZXI6OnNldEhUVFBDb29raWVBY2Nl
cHRQb2xpY3koSFRUUENvb2tpZUFjY2VwdFBvbGljeSBwb2xpY3kpCit2b2lkIFdlYkNvb2tpZU1h
bmFnZXI6OnNldEhUVFBDb29raWVBY2NlcHRQb2xpY3koSFRUUENvb2tpZUFjY2VwdFBvbGljeSBw
b2xpY3ksIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiB7CiAgICAgcGxhdGZvcm1TZXRIVFRQQ29va2ll
QWNjZXB0UG9saWN5KHBvbGljeSk7CisKKyAgICBpZiAoY2FsbGJhY2tJRCkKKyAgICAgICAgbV9w
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OkRpZFNldEhUVFBD
b29raWVBY2NlcHRQb2xpY3koY2FsbGJhY2tJRCksIDApOwogfQogCiB2b2lkIFdlYkNvb2tpZU1h
bmFnZXI6OmdldEhUVFBDb29raWVBY2NlcHRQb2xpY3kodWludDY0X3QgY2FsbGJhY2tJRCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5h
Z2VyLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdl
ci5oCmluZGV4IGRiMjdkMjBhYWRkLi5hMzdiNmRkYWU4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5oCkBAIC01Niw3ICs1
Niw4IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzdXBwbGVtZW50TmFtZSgp
OwogCi0gICAgdm9pZCBzZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KEhUVFBDb29raWVBY2NlcHRQ
b2xpY3kpOworICAgIHZvaWQgc2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShIVFRQQ29va2llQWNj
ZXB0UG9saWN5LCB1aW50NjRfdCBjYWxsYmFja0lEKTsKKwogI2lmIFVTRShTT1VQKQogICAgIHZv
aWQgc2V0Q29va2llUGVyc2lzdGVudFN0b3JhZ2UoY29uc3QgU3RyaW5nJiBzdG9yYWdlUGF0aCwg
dWludDMyX3Qgc3RvcmFnZVR5cGUpOwogI2VuZGlmCkBAIC02OCwxMSArNjksMTUgQEAgcHJpdmF0
ZToKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVj
b2RlciYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBnZXRIb3N0bmFtZXNXaXRoQ29va2llcyhXZWJD
b3JlOjpTZXNzaW9uSUQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOworCisgICAgdm9pZCBkZWxldGVD
b29raWUoV2ViQ29yZTo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpDb29raWUmLCB1aW50NjRf
dCBjYWxsYmFja0lEKTsKICAgICB2b2lkIGRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZShXZWJDb3Jl
OjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgZGVsZXRlQWxsQ29va2llcyhX
ZWJDb3JlOjpTZXNzaW9uSUQpOwotICAgIHZvaWQgZGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2lu
Y2UoV2ViQ29yZTo6U2Vzc2lvbklELCBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3Bv
aW50KTsKKyAgICB2b2lkIGRlbGV0ZUFsbENvb2tpZXNNb2RpZmllZFNpbmNlKFdlYkNvcmU6OlNl
c3Npb25JRCwgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCwgdWludDY0X3Qg
Y2FsbGJhY2tJRCk7CiAKLSAgICB2b2lkIHNldENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklELCBj
b25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0
IFdlYkNvcmU6OlVSTCYgbWFpbkRvY3VtZW50VVJMKTsKKyAgICB2b2lkIHNldENvb2tpZXMoV2Vi
Q29yZTo6U2Vzc2lvbklELCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYsIGNvbnN0IFdl
YkNvcmU6OlVSTCYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgbWFpbkRvY3VtZW50VVJMLCB1aW50NjRf
dCBjYWxsYmFja0lEKTsKKyAgICB2b2lkIGdldEFsbENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklE
LCB1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICB2b2lkIGdldENvb2tpZXMoV2ViQ29yZTo6U2Vz
c2lvbklELCBjb25zdCBXZWJDb3JlOjpVUkwmLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKIAogICAg
IHZvaWQgcGxhdGZvcm1TZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KEhUVFBDb29raWVBY2NlcHRQ
b2xpY3kpOwogICAgIHZvaWQgZ2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSh1aW50NjRfdCBjYWxs
YmFja0lEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2llcy9X
ZWJDb29raWVNYW5hZ2VyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9D
b29raWVzL1dlYkNvb2tpZU1hbmFnZXIubWVzc2FnZXMuaW4KaW5kZXggMDBlN2I2NWI3NDkuLjZj
Yjg2OTIxYjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Nvb2tpZXMv
V2ViQ29va2llTWFuYWdlci5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5tZXNzYWdlcy5pbgpAQCAtMjcsMTEgKzI3LDE0
IEBACiAgICAgdm9pZCBHZXRIb3N0bmFtZXNXaXRoQ29va2llcyhXZWJDb3JlOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCB1aW50NjRfdCBjYWxsYmFja0lEKQogICAgIHZvaWQgRGVsZXRlQ29va2llc0Zv
ckhvc3RuYW1lKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFN0cmluZyBob3N0bmFtZSkK
ICAgICB2b2lkIERlbGV0ZUFsbENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCkK
LSAgICB2b2lkIERlbGV0ZUFsbENvb2tpZXNNb2RpZmllZFNpbmNlKFdlYkNvcmU6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgdGltZSkK
IAotICAgIHZvaWQgU2V0Q29va2llcyhXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBWZWN0
b3I8V2ViQ29yZTo6Q29va2llPiBjb29raWVzLCBXZWJDb3JlOjpVUkwgdXJsLCBXZWJDb3JlOjpV
UkwgbWFpbkRvY3VtZW50VVJMKTsKKyAgICB2b2lkIFNldENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4gY29va2llcywgV2ViQ29yZTo6
VVJMIHVybCwgV2ViQ29yZTo6VVJMIG1haW5Eb2N1bWVudFVSTCwgdWludDY0X3QgY2FsbGJhY2tJ
RCkKKyAgICB2b2lkIEdldEFsbENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
dWludDY0X3QgY2FsbGJhY2tJRCkKKyAgICB2b2lkIEdldENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgV2ViQ29yZTo6VVJMIHVybCwgdWludDY0X3QgY2FsbGJhY2tJRCkKKyAg
ICB2b2lkIERlbGV0ZUNvb2tpZShXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBzdHJ1Y3Qg
V2ViQ29yZTo6Q29va2llIGNvb2tpZSwgdWludDY0X3QgY2FsbGJhY2tJRCkKKyAgICB2b2lkIERl
bGV0ZUFsbENvb2tpZXNNb2RpZmllZFNpbmNlKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgdGltZSwgdWludDY0X3QgY2Fs
bGJhY2tJRCkKIAotICAgIHZvaWQgU2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSh1aW50MzJfdCBw
b2xpY3kpCisgICAgdm9pZCBTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHVpbnQzMl90IHBvbGlj
eSwgdWludDY0X3QgY2FsbGJhY2tJRCkKICAgICB2b2lkIEdldEhUVFBDb29raWVBY2NlcHRQb2xp
Y3kodWludDY0X3QgY2FsbGJhY2tJRCkKICAgICAKICAgICB2b2lkIFN0YXJ0T2JzZXJ2aW5nQ29v
a2llQ2hhbmdlcyhXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>304238</attachid>
            <date>2017-03-13 01:13:31 -0700</date>
            <delta_ts>2017-03-13 07:29:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>70582</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nvb2tpZS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vQ29va2llLmgKaW5kZXggZTQ3ZTdiYmZmNWIuLjVkZGI5MzU0Y2U4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db29raWUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9Db29raWUuaApAQCAtNTgsNyArNTgsNyBAQCBzdHJ1Y3QgQ29va2ll
IHsKIAogI2lmZGVmIF9fT0JKQ19fCiAgICAgV0VCQ09SRV9FWFBPUlQgQ29va2llKE5TSFRUUENv
b2tpZSAqKTsKLSAgICBvcGVyYXRvciBOU0hUVFBDb29raWUgKigpIGNvbnN0OworICAgIFdFQkNP
UkVfRVhQT1JUIG9wZXJhdG9yIE5TSFRUUENvb2tpZSAqKCkgY29uc3Q7CiAjZW5kaWYKIAogICAg
IFN0cmluZyBuYW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgKaW5kZXggZjE0ODljNmI0MmEuLjIxMmJlMjY0ZWE1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9y
YWdlU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29y
a1N0b3JhZ2VTZXNzaW9uLmgKQEAgLTEwMCw3ICsxMDAsMTEgQEAgcHVibGljOgogICAgIE5ldHdv
cmtpbmdDb250ZXh0KiBjb250ZXh0KCkgY29uc3Q7CiAjZW5kaWYKIAorICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgc2V0Q29va2llKGNvbnN0IENvb2tpZSYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc2V0Q29va2llcyhjb25zdCBWZWN0b3I8Q29va2llPiYsIGNvbnN0IFVSTCYsIGNvbnN0IFVS
TCYgbWFpbkRvY3VtZW50VVJMKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRlbGV0ZUNvb2tp
ZShjb25zdCBDb29raWUmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8Q29va2llPiBnZXRB
bGxDb29raWVzKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPENvb2tpZT4gZ2V0Q29va2ll
cyhjb25zdCBVUkwmKTsKIAogcHJpdmF0ZToKICAgICBzdGF0aWMgSGFzaE1hcDxTZXNzaW9uSUQs
IHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrU3RvcmFnZVNlc3Npb24+PiYgZ2xvYmFsU2Vzc2lvbk1h
cCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9O
ZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2EubW0KaW5kZXggNDRhZWFiNzBl
OTkuLjRjOTU2N2U5YzY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NvY29hL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2EubW0K
QEAgLTMyLDYgKzMyLDEzIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAordm9pZCBOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OnNldENvb2tpZShjb25zdCBDb29raWUmIGNvb2tpZSkKK3sKKyAgICBC
RUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CisgICAgW25zQ29va2llU3RvcmFnZSgpIHNldENv
b2tpZTooTlNIVFRQQ29va2llICopY29va2llXTsKKyAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJ
T05TOworfQorCiB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0Q29va2llcyhjb25zdCBW
ZWN0b3I8Q29va2llPiYgY29va2llcywgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFVSTCYgbWFpbkRv
Y3VtZW50VVJMKQogewogICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gbnNDb29raWVzID0g
YWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5OmNvb2tpZXMu
c2l6ZSgpXSk7CkBAIC00Myw2ICs1MCwzMSBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6
c2V0Q29va2llcyhjb25zdCBWZWN0b3I8Q29va2llPiYgY29va2llcywgY29uc3QgVVJMJgogICAg
IEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CiB9CiAKK3ZvaWQgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpkZWxldGVDb29raWUoY29uc3QgQ29va2llJiBjb29raWUpCit7CisgICAgW25zQ29va2ll
U3RvcmFnZSgpIGRlbGV0ZUNvb2tpZTooTlNIVFRQQ29va2llICopY29va2llXTsKK30KKworc3Rh
dGljIFZlY3RvcjxDb29raWU+IG5zQ29va2llc1RvQ29va2llVmVjdG9yKE5TQXJyYXk8TlNIVFRQ
Q29va2llICo+ICpuc0Nvb2tpZXMpCit7CisgICAgVmVjdG9yPENvb2tpZT4gY29va2llczsKKyAg
ICBjb29raWVzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobnNDb29raWVzLmNvdW50KTsKKyAgICBm
b3IgKE5TSFRUUENvb2tpZSAqbnNDb29raWUgaW4gbnNDb29raWVzKQorICAgICAgICBjb29raWVz
LnVuY2hlY2tlZEFwcGVuZChuc0Nvb2tpZSk7CisKKyAgICByZXR1cm4gY29va2llczsKK30KKwor
VmVjdG9yPENvb2tpZT4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpnZXRBbGxDb29raWVzKCkKK3sK
KyAgICByZXR1cm4gbnNDb29raWVzVG9Db29raWVWZWN0b3IobnNDb29raWVTdG9yYWdlKCkuY29v
a2llcyk7Cit9CisKK1ZlY3RvcjxDb29raWU+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0Q29v
a2llcyhjb25zdCBVUkwmIHVybCkKK3sKKyAgICByZXR1cm4gbnNDb29raWVzVG9Db29raWVWZWN0
b3IoW25zQ29va2llU3RvcmFnZSgpIGNvb2tpZXNGb3JVUkw6KE5TVVJMICopdXJsXSk7Cit9CisK
IE5TSFRUUENvb2tpZVN0b3JhZ2UgKk5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6bnNDb29raWVTdG9y
YWdlKCkgY29uc3QKIHsKICAgICBhdXRvIGNmQ29va2llU3RvcmFnZSA9IGNvb2tpZVN0b3JhZ2Uo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3
b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNwcAppbmRleCAyNDliZDgyYmQ3NC4u
MzZlZjlmZWNiM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
c291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL3NvdXAvTmV0d29ya1N0b3JhZ2VTZXNzaW9uU291cC5jcHAKQEAgLTMw
NCw2ICszMDQsMjAgQEAgdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldENvb2tpZXMoY29u
c3QgVmVjdG9yPENvb2tpZT4mIGNvb2tpZXMsIGNvbnN0IFVSTCYKICAgICAgICAgc291cF9jb29r
aWVfamFyX2FkZF9jb29raWUoY29va2llU3RvcmFnZSgpLCB0b1NvdXBDb29raWUoY29va2llKSk7
CiB9CiAKK3ZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWxldGVDb29raWUoY29uc3QgQ29v
a2llJikKK3sKKwkvLyBGSVhNRTogSW1wbGVtZW50IGZvciBXSzIgdG8gdXNlLgorfQorCitWZWN0
b3I8Q29va2llPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmdldEFsbENvb2tpZXMoKQoreworCS8v
IEZJWE1FOiBJbXBsZW1lbnQgZm9yIFdLMiB0byB1c2UuCit9CisKK1ZlY3RvcjxDb29raWU+IE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0Q29va2llcyhjb25zdCBVUkwmKQoreworCS8vIEZJWE1F
OiBJbXBsZW1lbnQgZm9yIFdLMiB0byB1c2UuCit9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2Vi
S2l0Mi9DTWFrZUxpc3RzLnR4dAppbmRleCA4MWZmOGRhODExMi4uMTFkZTdhYWRlOTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQy
L0NNYWtlTGlzdHMudHh0CkBAIC0zMzYsNiArMzM2LDcgQEAgc2V0KFdlYktpdDJfU09VUkNFUwog
ICAgIFVJUHJvY2Vzcy9BUEkvQVBJQ29udGVudEV4dGVuc2lvblN0b3JlLmNwcAogICAgIFVJUHJv
Y2Vzcy9BUEkvQVBJRXhwZXJpbWVudGFsRmVhdHVyZS5jcHAKICAgICBVSVByb2Nlc3MvQVBJL0FQ
SUZyYW1lSW5mby5jcHAKKyAgICBVSVByb2Nlc3MvQVBJL0FQSUhUVFBDb29raWVTdG9yYWdlLmNw
cAogICAgIFVJUHJvY2Vzcy9BUEkvQVBJSGl0VGVzdFJlc3VsdC5jcHAKICAgICBVSVByb2Nlc3Mv
QVBJL0FQSU5hdmlnYXRpb24uY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uRGF0
YS5jcHAKQEAgLTQ0NCw2ICs0NDUsNyBAQCBzZXQoV2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9j
ZXNzL1VzZXJDb250ZW50L1dlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyLmNwcAogICAgIFVJUHJvY2Vz
cy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5jcHAKIAorICAgIFVJ
UHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJDb29raWVTdG9yYWdlLmNwcAogICAgIFVJUHJvY2Vzcy9X
ZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVJlY29yZC5jcHAKICAgICBVSVByb2Nlc3MvV2Vic2l0ZURh
dGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL0FQSS9BUElPYmplY3QuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvQVBJT2JqZWN0
LmgKaW5kZXggYWUwZmM5OTg1YmQuLjQ2ZjI3OTFkZGZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvQVBJL0FQSU9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9B
UEkvQVBJT2JqZWN0LmgKQEAgLTExNiw2ICsxMTYsNyBAQCBwdWJsaWM6CiAgICAgICAgIEZ1bGxT
Y3JlZW5NYW5hZ2VyLAogICAgICAgICBHZW9sb2NhdGlvbk1hbmFnZXIsCiAgICAgICAgIEdlb2xv
Y2F0aW9uUGVybWlzc2lvblJlcXVlc3QsCisgICAgICAgIEhUVFBDb29raWVTdG9yYWdlLAogICAg
ICAgICBIaXRUZXN0UmVzdWx0LAogICAgICAgICBHZW9sb2NhdGlvblBvc2l0aW9uLAogICAgICAg
ICBHcmFtbWFyRGV0YWlsLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0NvY29h
L0FQSU9iamVjdC5tbSBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db2NvYS9BUElPYmplY3QubW0K
aW5kZXggMTE2MzI0NTQyMGMuLmM3MjE3NjI5M2NlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQ29jb2EvQVBJT2JqZWN0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9D
b2NvYS9BUElPYmplY3QubW0KQEAgLTcxLDYgKzcxLDcgQEAKICNpbXBvcnQgIl9XS0Rvd25sb2Fk
SW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS0V4cGVyaW1lbnRhbEZlYXR1cmVJbnRlcm5hbC5oIgog
I2ltcG9ydCAiX1dLRnJhbWVIYW5kbGVJbnRlcm5hbC5oIgorI2ltcG9ydCAiX1dLSFRUUENvb2tp
ZVN0b3JhZ2VJbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLSGl0VGVzdFJlc3VsdEludGVybmFsLmgi
CiAjaW1wb3J0ICJfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb25JbnRlcm5hbC5oIgogI2ltcG9y
dCAiX1dLVXNlckNvbnRlbnRXb3JsZEludGVybmFsLmgiCkBAIC0xNzgsNiArMTc5LDEwIEBAIHZv
aWQqIE9iamVjdDo6bmV3T2JqZWN0KHNpemVfdCBzaXplLCBUeXBlIHR5cGUpCiAgICAgICAgIHdy
YXBwZXIgPSBbV0tGcmFtZUluZm8gYWxsb2NdOwogICAgICAgICBicmVhazsKIAorICAgIGNhc2Ug
VHlwZTo6SFRUUENvb2tpZVN0b3JhZ2U6CisgICAgICAgIHdyYXBwZXIgPSBbX1dLSFRUUENvb2tp
ZVN0b3JhZ2UgYWxsb2NdOworICAgICAgICBicmVhazsKKwogI2lmIFBMQVRGT1JNKE1BQykKICAg
ICBjYXNlIFR5cGU6OkhpdFRlc3RSZXN1bHQ6CiAgICAgICAgIHdyYXBwZXIgPSBbX1dLSGl0VGVz
dFJlc3VsdCBhbGxvY107CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0FQSUhUVFBDb29raWVTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
QVBJSFRUUENvb2tpZVN0b3JhZ2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwLi4zMzhiODUyNGI5ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3JhZ2UuY3BwCkBAIC0wLDAgKzEsMTM4IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkFQSUhUVFBDb29raWVT
dG9yYWdlLmgiCisKKyNpbmNsdWRlICJBUElXZWJzaXRlRGF0YVN0b3JlLmgiCisjaW5jbHVkZSAi
V2ViQ29va2llTWFuYWdlclByb3h5LmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKKyNp
bmNsdWRlIDxXZWJDb3JlL0Nvb2tpZS5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCitu
YW1lc3BhY2UgQVBJIHsKKworSFRUUENvb2tpZVN0b3JhZ2U6OkhUVFBDb29raWVTdG9yYWdlKFdl
YnNpdGVEYXRhU3RvcmUmIHdlYnNpdGVEYXRhU3RvcmUpCisgICAgOiBtX293bmluZ0RhdGFTdG9y
ZSh3ZWJzaXRlRGF0YVN0b3JlKQoreworfQorCitIVFRQQ29va2llU3RvcmFnZTo6fkhUVFBDb29r
aWVTdG9yYWdlKCkKK3sKK30KKwordm9pZCBIVFRQQ29va2llU3RvcmFnZTo6Y29va2llcyhGdW5j
dGlvbjx2b2lkIChjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQoreworICAgIGF1dG8mIGRhdGFTdG9yZSA9IG1fb3duaW5nRGF0YVN0b3JlLndlYnNp
dGVEYXRhU3RvcmUoKTsKKyAgICBhdXRvIHBvb2wgPSBkYXRhU3RvcmUucHJvY2Vzc1Bvb2xGb3JD
b29raWVTdG9yYWdlT3BlcmF0aW9ucygpOworICAgIGF1dG8qIGNvb2tpZU1hbmFnZXIgPSBwb29s
LT5zdXBwbGVtZW50PFdlYktpdDo6V2ViQ29va2llTWFuYWdlclByb3h5PigpOworCisgICAgY29v
a2llTWFuYWdlci0+Z2V0QWxsQ29va2llcyhkYXRhU3RvcmUuc2Vzc2lvbklEKCksIFtwb29sID0g
V1RGTW92ZShwb29sKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKV0oY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mIGNvb2tpZXMsIENhbGxiYWNrQmFz
ZTo6RXJyb3IgZXJyb3IpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoY29va2llcyk7Cisg
ICAgfSk7Cit9CisKK3ZvaWQgSFRUUENvb2tpZVN0b3JhZ2U6OmNvb2tpZXMoY29uc3QgV2ViQ29y
ZTo6VVJMJiB1cmwsIEZ1bmN0aW9uPHZvaWQgKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+
Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgYXV0byYgZGF0YVN0b3JlID0gbV9vd25p
bmdEYXRhU3RvcmUud2Vic2l0ZURhdGFTdG9yZSgpOworICAgIGF1dG8gcG9vbCA9IGRhdGFTdG9y
ZS5wcm9jZXNzUG9vbEZvckNvb2tpZVN0b3JhZ2VPcGVyYXRpb25zKCk7CisgICAgYXV0byogY29v
a2llTWFuYWdlciA9IHBvb2wtPnN1cHBsZW1lbnQ8V2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJv
eHk+KCk7CisKKyAgICBjb29raWVNYW5hZ2VyLT5nZXRDb29raWVzKGRhdGFTdG9yZS5zZXNzaW9u
SUQoKSwgdXJsLCBbcG9vbCA9IFdURk1vdmUocG9vbCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcildKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiBj
b29raWVzLCBDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7CisgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKGNvb2tpZXMpOworICAgIH0pOworfQorCit2b2lkIEhUVFBDb29raWVTdG9yYWdlOjpz
ZXRDb29raWUoY29uc3QgV2ViQ29yZTo6Q29va2llJiBjb29raWUsIEZ1bmN0aW9uPHZvaWQgKCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgYXV0byYgZGF0YVN0b3JlID0gbV9vd25pbmdE
YXRhU3RvcmUud2Vic2l0ZURhdGFTdG9yZSgpOworICAgIGF1dG8gcG9vbCA9IGRhdGFTdG9yZS5w
cm9jZXNzUG9vbEZvckNvb2tpZVN0b3JhZ2VPcGVyYXRpb25zKCk7CisgICAgYXV0byogY29va2ll
TWFuYWdlciA9IHBvb2wtPnN1cHBsZW1lbnQ8V2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk+
KCk7CisKKyAgICBjb29raWVNYW5hZ2VyLT5zZXRDb29raWUoZGF0YVN0b3JlLnNlc3Npb25JRCgp
LCBjb29raWUsIFtwb29sID0gV1RGTW92ZShwb29sKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oQ2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcikgeworICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAgIH0pOworfQorCit2b2lkIEhUVFBDb29raWVT
dG9yYWdlOjpzZXRDb29raWVzKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiBjb29raWVz
LCBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCwgY29uc3QgV2ViQ29yZTo6VVJMJiBtYWluRG9jdW1l
bnRVUkwsIEZ1bmN0aW9uPHZvaWQgKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgYXV0
byYgZGF0YVN0b3JlID0gbV9vd25pbmdEYXRhU3RvcmUud2Vic2l0ZURhdGFTdG9yZSgpOworICAg
IGF1dG8gcG9vbCA9IGRhdGFTdG9yZS5wcm9jZXNzUG9vbEZvckNvb2tpZVN0b3JhZ2VPcGVyYXRp
b25zKCk7CisgICAgYXV0byogY29va2llTWFuYWdlciA9IHBvb2wtPnN1cHBsZW1lbnQ8V2ViS2l0
OjpXZWJDb29raWVNYW5hZ2VyUHJveHk+KCk7CisKKyAgICBjb29raWVNYW5hZ2VyLT5zZXRDb29r
aWVzKGRhdGFTdG9yZS5zZXNzaW9uSUQoKSwgY29va2llcywgdXJsLCBtYWluRG9jdW1lbnRVUkws
IFtwb29sID0gV1RGTW92ZShwb29sKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKV0oQ2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcikgeworICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcigpOworICAgIH0pOworfQorCit2b2lkIEhUVFBDb29raWVTdG9yYWdlOjpk
ZWxldGVDb29raWUoY29uc3QgV2ViQ29yZTo6Q29va2llJiBjb29raWUsIEZ1bmN0aW9uPHZvaWQg
KCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgYXV0byYgZGF0YVN0b3JlID0gbV9vd25p
bmdEYXRhU3RvcmUud2Vic2l0ZURhdGFTdG9yZSgpOworICAgIGF1dG8gcG9vbCA9IGRhdGFTdG9y
ZS5wcm9jZXNzUG9vbEZvckNvb2tpZVN0b3JhZ2VPcGVyYXRpb25zKCk7CisgICAgYXV0byogY29v
a2llTWFuYWdlciA9IHBvb2wtPnN1cHBsZW1lbnQ8V2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJv
eHk+KCk7CisKKyAgICBjb29raWVNYW5hZ2VyLT5kZWxldGVDb29raWUoZGF0YVN0b3JlLnNlc3Np
b25JRCgpLCBjb29raWUsIFtwb29sID0gV1RGTW92ZShwb29sKSwgY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oQ2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcikg
eworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAgIH0pOworfQorCit2b2lkIEhUVFBD
b29raWVTdG9yYWdlOjpyZW1vdmVDb29raWVzU2luY2VEYXRlKHN0ZDo6Y2hyb25vOjpzeXN0ZW1f
Y2xvY2s6OnRpbWVfcG9pbnQgZGF0ZSwgRnVuY3Rpb248dm9pZCAoKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKK3sKKyAgICBhdXRvJiBkYXRhU3RvcmUgPSBtX293bmluZ0RhdGFTdG9yZS53ZWJzaXRl
RGF0YVN0b3JlKCk7CisgICAgYXV0byBwb29sID0gZGF0YVN0b3JlLnByb2Nlc3NQb29sRm9yQ29v
a2llU3RvcmFnZU9wZXJhdGlvbnMoKTsKKyAgICBhdXRvKiBjb29raWVNYW5hZ2VyID0gcG9vbC0+
c3VwcGxlbWVudDxXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eT4oKTsKKworICAgIGNvb2tp
ZU1hbmFnZXItPmRlbGV0ZUFsbENvb2tpZXNNb2RpZmllZFNpbmNlKGRhdGFTdG9yZS5zZXNzaW9u
SUQoKSwgZGF0ZSwgW3Bvb2wgPSBXVEZNb3ZlKHBvb2wpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7Cisg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgfSk7Cit9CisKK3ZvaWQgSFRUUENvb2tp
ZVN0b3JhZ2U6OnNldEhUVFBDb29raWVBY2NlcHRQb2xpY3koSFRUUENvb2tpZUFjY2VwdFBvbGlj
eSBwb2xpY3ksIEZ1bmN0aW9uPHZvaWQgKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAg
YXV0byYgZGF0YVN0b3JlID0gbV9vd25pbmdEYXRhU3RvcmUud2Vic2l0ZURhdGFTdG9yZSgpOwor
ICAgIGF1dG8gcG9vbCA9IGRhdGFTdG9yZS5wcm9jZXNzUG9vbEZvckNvb2tpZVN0b3JhZ2VPcGVy
YXRpb25zKCk7CisgICAgYXV0byogY29va2llTWFuYWdlciA9IHBvb2wtPnN1cHBsZW1lbnQ8V2Vi
S2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk+KCk7CisKKyAgICBjb29raWVNYW5hZ2VyLT5zZXRI
VFRQQ29va2llQWNjZXB0UG9saWN5KGRhdGFTdG9yZS5zZXNzaW9uSUQoKSwgcG9saWN5LCBbcG9v
bCA9IFdURk1vdmUocG9vbCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcildKENhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKKyAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoKTsKKyAgICB9KTsKK30KKwordm9pZCBIVFRQQ29va2llU3RvcmFnZTo6Z2V0SFRU
UENvb2tpZUFjY2VwdFBvbGljeShGdW5jdGlvbjx2b2lkIChIVFRQQ29va2llQWNjZXB0UG9saWN5
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBhdXRvJiBkYXRhU3RvcmUgPSBtX293bmlu
Z0RhdGFTdG9yZS53ZWJzaXRlRGF0YVN0b3JlKCk7CisgICAgYXV0byBwb29sID0gZGF0YVN0b3Jl
LnByb2Nlc3NQb29sRm9yQ29va2llU3RvcmFnZU9wZXJhdGlvbnMoKTsKKyAgICBhdXRvKiBjb29r
aWVNYW5hZ2VyID0gcG9vbC0+c3VwcGxlbWVudDxXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94
eT4oKTsKKworICAgIGNvb2tpZU1hbmFnZXItPmdldEhUVFBDb29raWVBY2NlcHRQb2xpY3koZGF0
YVN0b3JlLnNlc3Npb25JRCgpLCBbcG9vbCA9IFdURk1vdmUocG9vbCksIGNvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKEhUVFBDb29raWVBY2NlcHRQb2xpY3kg
cG9saWN5LCBDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7CisgICAgICAgIGlmIChlcnJvciAh
PSBDYWxsYmFja0Jhc2U6OkVycm9yOjpOb25lKQorICAgICAgICAgICAgcG9saWN5ID0gSFRUUENv
b2tpZUFjY2VwdFBvbGljeU5ldmVyOworCisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHBvbGlj
eSk7CisgICAgfSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElIVFRQQ29va2llU3RvcmFnZS5oIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9BUElIVFRQQ29va2llU3RvcmFnZS5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5kM2I5MzhlZTQyZgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3JhZ2UuaApAQCAt
MCwwICsxLDY5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJBUElP
YmplY3QuaCIKKyNpbmNsdWRlICJIVFRQQ29va2llQWNjZXB0UG9saWN5LmgiCisjaW5jbHVkZSA8
d3RmL0Z1bmN0aW9uLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CitjbGFzcyBVUkw7CitzdHJ1Y3QgQ29va2llOworfQorCituYW1lc3BhY2UgQVBJIHsK
KworY2xhc3MgV2Vic2l0ZURhdGFTdG9yZTsKKworY2xhc3MgSFRUUENvb2tpZVN0b3JhZ2UgZmlu
YWwgOiBwdWJsaWMgT2JqZWN0SW1wbDxPYmplY3Q6OlR5cGU6OkhUVFBDb29raWVTdG9yYWdlPiB7
CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxIVFRQQ29va2llU3RvcmFnZT4gY3JlYXRlKFdlYnNp
dGVEYXRhU3RvcmUmIHdlYnNpdGVEYXRhU3RvcmUpCisgICAgeworICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBIVFRQQ29va2llU3RvcmFnZSh3ZWJzaXRlRGF0YVN0b3JlKSk7CisgICAgfQor
CisgICAgdmlydHVhbCB+SFRUUENvb2tpZVN0b3JhZ2UoKTsKKworICAgIHZvaWQgY29va2llcyhG
dW5jdGlvbjx2b2lkIChjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKTsKKyAgICB2b2lkIGNvb2tpZXMoY29uc3QgV2ViQ29yZTo6VVJMJiwgRnVuY3Rp
b248dm9pZCAoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcik7CisKKyAgICB2b2lkIHNldENvb2tpZShjb25zdCBXZWJDb3JlOjpDb29raWUmLCBGdW5j
dGlvbjx2b2lkICgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICB2b2lkIHNldENvb2tpZXMo
Y29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25z
dCBXZWJDb3JlOjpVUkwmIG1haW5Eb2N1bWVudFVSTCwgRnVuY3Rpb248dm9pZCAoKT4mJiBjb21w
bGV0aW9uSGFuZGxlcik7CisgICAgdm9pZCBkZWxldGVDb29raWUoY29uc3QgV2ViQ29yZTo6Q29v
a2llJiwgRnVuY3Rpb248dm9pZCAoKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7CisKKyAgICB2b2lk
IHJlbW92ZUNvb2tpZXNTaW5jZURhdGUoc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9w
b2ludCwgRnVuY3Rpb248dm9pZCAoKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7CisKKyAgICB2b2lk
IHNldEhUVFBDb29raWVBY2NlcHRQb2xpY3koV2ViS2l0OjpIVFRQQ29va2llQWNjZXB0UG9saWN5
LCBGdW5jdGlvbjx2b2lkICgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICB2b2lkIGdldEhU
VFBDb29raWVBY2NlcHRQb2xpY3koRnVuY3Rpb248dm9pZCAoV2ViS2l0OjpIVFRQQ29va2llQWNj
ZXB0UG9saWN5KT4mJiBjb21wbGV0aW9uSGFuZGxlcik7CisgICAgCitwcml2YXRlOgorICAgIEhU
VFBDb29raWVTdG9yYWdlKFdlYnNpdGVEYXRhU3RvcmUmIHdlYnNpdGVEYXRhU3RvcmUpOworCisg
ICAgV2Vic2l0ZURhdGFTdG9yZSYgbV9vd25pbmdEYXRhU3RvcmU7Cit9OworCit9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUuY3Bw
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmNwcApp
bmRleCA1Yzc4Y2NkN2FlMi4uY2ExZGY3NTcxMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmNwcApAQCAtMzEsMTMgKzMxLDEz
IEBACiAKIG5hbWVzcGFjZSBBUEkgewogCi1SZWZQdHI8V2Vic2l0ZURhdGFTdG9yZT4gV2Vic2l0
ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZSgpCitSZWY8V2Vic2l0ZURhdGFTdG9yZT4gV2Vi
c2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZSgpCiB7CiAgICAgV2ViS2l0OjpJbml0aWFs
aXplV2ViS2l0MigpOwogCiAgICAgc3RhdGljIFdlYnNpdGVEYXRhU3RvcmUqIGRlZmF1bHREYXRh
U3RvcmUgPSBhZG9wdFJlZihuZXcgV2Vic2l0ZURhdGFTdG9yZShkZWZhdWx0RGF0YVN0b3JlQ29u
ZmlndXJhdGlvbigpKSkubGVha1JlZigpOwogCi0gICAgcmV0dXJuIGRlZmF1bHREYXRhU3RvcmU7
CisgICAgcmV0dXJuICpkZWZhdWx0RGF0YVN0b3JlOwogfQogCiBSZWY8V2Vic2l0ZURhdGFTdG9y
ZT4gV2Vic2l0ZURhdGFTdG9yZTo6Y3JlYXRlTm9uUGVyc2lzdGVudERhdGFTdG9yZSgpCkBAIC02
NCw2ICs2NCwxNCBAQCBXZWJzaXRlRGF0YVN0b3JlOjp+V2Vic2l0ZURhdGFTdG9yZSgpCiB7CiB9
CiAKK0hUVFBDb29raWVTdG9yYWdlJiBXZWJzaXRlRGF0YVN0b3JlOjpodHRwQ29va2llU3RvcmFn
ZSgpCit7CisgICAgaWYgKCFtX2FwaUhUVFBDb29raWVTdG9yYWdlKQorICAgICAgICBtX2FwaUhU
VFBDb29raWVTdG9yYWdlID0gSFRUUENvb2tpZVN0b3JhZ2U6OmNyZWF0ZSgqdGhpcyk7CisKKyAg
ICByZXR1cm4gKm1fYXBpSFRUUENvb2tpZVN0b3JhZ2U7Cit9CisKIGJvb2wgV2Vic2l0ZURhdGFT
dG9yZTo6aXNQZXJzaXN0ZW50KCkKIHsKICAgICByZXR1cm4gbV93ZWJzaXRlRGF0YVN0b3JlLT5p
c1BlcnNpc3RlbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
QVBJV2Vic2l0ZURhdGFTdG9yZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElX
ZWJzaXRlRGF0YVN0b3JlLmgKaW5kZXggMjY3ZDY5YzMzODQuLmNhNzRkYmNjNDY3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUuaApA
QCAtMjYsNyArMjYsNyBAQAogI2lmbmRlZiBBUElXZWJzaXRlRGF0YVN0b3JlX2gKICNkZWZpbmUg
QVBJV2Vic2l0ZURhdGFTdG9yZV9oCiAKLSNpbmNsdWRlICJBUElPYmplY3QuaCIKKyNpbmNsdWRl
ICJBUElIVFRQQ29va2llU3RvcmFnZS5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmUuaCIK
ICNpbmNsdWRlIDxXZWJDb3JlL1Nlc3Npb25JRC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgpAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgQVBJIHsKIAogY2xhc3MgV2Vic2l0
ZURhdGFTdG9yZSBmaW5hbCA6IHB1YmxpYyBPYmplY3RJbXBsPE9iamVjdDo6VHlwZTo6V2Vic2l0
ZURhdGFTdG9yZT4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8V2Vic2l0ZURhdGFTdG9y
ZT4gZGVmYXVsdERhdGFTdG9yZSgpOworICAgIHN0YXRpYyBSZWY8V2Vic2l0ZURhdGFTdG9yZT4g
ZGVmYXVsdERhdGFTdG9yZSgpOwogICAgIHN0YXRpYyBSZWY8V2Vic2l0ZURhdGFTdG9yZT4gY3Jl
YXRlTm9uUGVyc2lzdGVudERhdGFTdG9yZSgpOwogICAgIHN0YXRpYyBSZWY8V2Vic2l0ZURhdGFT
dG9yZT4gY3JlYXRlKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6Q29uZmlndXJhdGlvbik7CiAK
QEAgLTQ5LDYgKzQ5LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVnaXN0ZXJTaGFyZWRSZXNvdXJj
ZUxvYWRPYnNlcnZlcigpOwogCiAgICAgV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlJiB3ZWJzaXRl
RGF0YVN0b3JlKCkgeyByZXR1cm4gKm1fd2Vic2l0ZURhdGFTdG9yZTsgfQorICAgIEhUVFBDb29r
aWVTdG9yYWdlJiBodHRwQ29va2llU3RvcmFnZSgpOwogCiAgICAgc3RhdGljIFN0cmluZyBkZWZh
dWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpOwogICAgIHN0YXRpYyBTdHJpbmcgZGVmYXVs
dE5ldHdvcmtDYWNoZURpcmVjdG9yeSgpOwpAQCAtNzAsNiArNzEsNyBAQCBwcml2YXRlOgogICAg
IHN0YXRpYyBTdHJpbmcgd2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24oY29uc3QgU3RyaW5nJiBkaXJlY3RvcnlOYW1lKTsKIAogICAgIFJlZlB0cjxXZWJLaXQ6Oldl
YnNpdGVEYXRhU3RvcmU+IG1fd2Vic2l0ZURhdGFTdG9yZTsKKyAgICBSZWZQdHI8SFRUUENvb2tp
ZVN0b3JhZ2U+IG1fYXBpSFRUUENvb2tpZVN0b3JhZ2U7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb29raWVNYW5hZ2VyLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0Nvb2tpZU1hbmFnZXIuY3BwCmluZGV4IDI3OGU4
M2M1MWUwLi44MGFjOGE4NjI0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9DL1dLQ29va2llTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9DL1dLQ29va2llTWFuYWdlci5jcHAKQEAgLTYxLDE3ICs2MSwxNyBAQCB2b2lkIFdLQ29v
a2llTWFuYWdlckRlbGV0ZUFsbENvb2tpZXNNb2RpZmllZEFmdGVyRGF0ZShXS0Nvb2tpZU1hbmFn
ZXJSZWYgY29va2llTQogICAgIHVzaW5nIG5hbWVzcGFjZSBzdGQ6OmNocm9ubzsKIAogICAgIGF1
dG8gdGltZSA9IHN5c3RlbV9jbG9jazo6dGltZV9wb2ludChkdXJhdGlvbl9jYXN0PHN5c3RlbV9j
bG9jazo6ZHVyYXRpb24+KGR1cmF0aW9uPGRvdWJsZT4oZGF0ZSkpKTsKLSAgICB0b0ltcGwoY29v
a2llTWFuYWdlclJlZiktPmRlbGV0ZUFsbENvb2tpZXNNb2RpZmllZFNpbmNlKFdlYkNvcmU6OlNl
c3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpLCB0aW1lKTsKKyAgICB0b0ltcGwoY29va2llTWFu
YWdlclJlZiktPmRlbGV0ZUFsbENvb2tpZXNNb2RpZmllZFNpbmNlKFdlYkNvcmU6OlNlc3Npb25J
RDo6ZGVmYXVsdFNlc3Npb25JRCgpLCB0aW1lLCBbXShDYWxsYmFja0Jhc2U6OkVycm9yKXt9KTsK
IH0KIAogdm9pZCBXS0Nvb2tpZU1hbmFnZXJTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KFdLQ29v
a2llTWFuYWdlclJlZiBjb29raWVNYW5hZ2VyLCBXS0hUVFBDb29raWVBY2NlcHRQb2xpY3kgcG9s
aWN5KQogewotICAgIHRvSW1wbChjb29raWVNYW5hZ2VyKS0+c2V0SFRUUENvb2tpZUFjY2VwdFBv
bGljeSh0b0hUVFBDb29raWVBY2NlcHRQb2xpY3kocG9saWN5KSk7CisgICAgdG9JbXBsKGNvb2tp
ZU1hbmFnZXIpLT5zZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KFdlYkNvcmU6OlNlc3Npb25JRDo6
ZGVmYXVsdFNlc3Npb25JRCgpLCB0b0hUVFBDb29raWVBY2NlcHRQb2xpY3kocG9saWN5KSwgW10o
Q2FsbGJhY2tCYXNlOjpFcnJvcil7fSk7CiB9CiAKIHZvaWQgV0tDb29raWVNYW5hZ2VyR2V0SFRU
UENvb2tpZUFjY2VwdFBvbGljeShXS0Nvb2tpZU1hbmFnZXJSZWYgY29va2llTWFuYWdlciwgdm9p
ZCogY29udGV4dCwgV0tDb29raWVNYW5hZ2VyR2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeUZ1bmN0
aW9uIGNhbGxiYWNrKQogewotICAgIHRvSW1wbChjb29raWVNYW5hZ2VyKS0+Z2V0SFRUUENvb2tp
ZUFjY2VwdFBvbGljeSh0b0dlbmVyaWNDYWxsYmFja0Z1bmN0aW9uPFdLSFRUUENvb2tpZUFjY2Vw
dFBvbGljeSwgSFRUUENvb2tpZUFjY2VwdFBvbGljeT4oY29udGV4dCwgY2FsbGJhY2spKTsKKyAg
ICB0b0ltcGwoY29va2llTWFuYWdlciktPmdldEhUVFBDb29raWVBY2NlcHRQb2xpY3koV2ViQ29y
ZTo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCksIHRvR2VuZXJpY0NhbGxiYWNrRnVuY3Rp
b248V0tIVFRQQ29va2llQWNjZXB0UG9saWN5LCBIVFRQQ29va2llQWNjZXB0UG9saWN5Pihjb250
ZXh0LCBjYWxsYmFjaykpOwogfQogCiB2b2lkIFdLQ29va2llTWFuYWdlclNldENvb2tpZVN0b3Jh
Z2VQYXJ0aXRpb25pbmdFbmFibGVkKFdLQ29va2llTWFuYWdlclJlZiBjb29raWVNYW5hZ2VyLCBi
b29sIGVuYWJsZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mv
V0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwCmluZGV4IGE3N2MxYTg5ZDVjLi42Y2E2OWM2ZDJm
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURh
dGFTdG9yZVJlZi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLV2Vi
c2l0ZURhdGFTdG9yZVJlZi5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgV0tUeXBlSUQgV0tXZWJzaXRl
RGF0YVN0b3JlR2V0VHlwZUlEKCkKIAogV0tXZWJzaXRlRGF0YVN0b3JlUmVmIFdLV2Vic2l0ZURh
dGFTdG9yZUdldERlZmF1bHREYXRhU3RvcmUoKQogewotICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJ
KEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZSgpLmdldCgpKTsKKyAgICBy
ZXR1cm4gV2ViS2l0Ojp0b0FQSShBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3Rv
cmUoKS5wdHIoKSk7CiB9CiAKIFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBXS1dlYnNpdGVEYXRhU3Rv
cmVDcmVhdGVOb25QZXJzaXN0ZW50RGF0YVN0b3JlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbSBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQppbmRleCAzZjQzYmZjNjVkZC4u
OGY4N2RhY2U4MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tQcm9jZXNzUG9vbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLUHJvY2Vzc1Bvb2wubW0KQEAgLTE5Niw3ICsxOTYsNyBAQCBzdGF0aWMgV2ViS2l0OjpI
VFRQQ29va2llQWNjZXB0UG9saWN5IHRvSFRUUENvb2tpZUFjY2VwdFBvbGljeShOU0hUVFBDb29r
aWVBY2NlcAogCiAtICh2b2lkKV9zZXRDb29raWVBY2NlcHRQb2xpY3k6KE5TSFRUUENvb2tpZUFj
Y2VwdFBvbGljeSlwb2xpY3kKIHsKLSAgICBfcHJvY2Vzc1Bvb2wtPnN1cHBsZW1lbnQ8V2ViS2l0
OjpXZWJDb29raWVNYW5hZ2VyUHJveHk+KCktPnNldEhUVFBDb29raWVBY2NlcHRQb2xpY3kodG9I
VFRQQ29va2llQWNjZXB0UG9saWN5KHBvbGljeSkpOworICAgIF9wcm9jZXNzUG9vbC0+c3VwcGxl
bWVudDxXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eT4oKS0+c2V0SFRUUENvb2tpZUFjY2Vw
dFBvbGljeShXZWJDb3JlOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSwgdG9IVFRQQ29v
a2llQWNjZXB0UG9saWN5KHBvbGljeSksIFtdKFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcil7
fSk7CiB9CiAKIC0gKGlkKV9vYmplY3RGb3JCdW5kbGVQYXJhbWV0ZXI6KE5TU3RyaW5nICopcGFy
YW1ldGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlld1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3UHJpdmF0ZS5oCmluZGV4IDY4NzMxZjRlMTczLi42ZTRkZmU2ZDY0NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRl
LmgKQEAgLTYxLDYgKzYxLDcgQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgX1dLSW1tZWRp
YXRlQWN0aW9uVHlwZSkgewogQGNsYXNzIEFWRnVuY3Rpb25CYXJTY3J1YmJlcjsKIEBjbGFzcyBX
S0Jyb3dzaW5nQ29udGV4dEhhbmRsZTsKIEBjbGFzcyBfV0tGcmFtZUhhbmRsZTsKK0BjbGFzcyBf
V0tIVFRQQ29va2llU3RvcmFnZTsKIEBjbGFzcyBfV0tIaXRUZXN0UmVzdWx0OwogQGNsYXNzIF9X
S0ljb25Mb2FkaW5nRGVsZWdhdGU7CiBAY2xhc3MgX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURh
dGFTdG9yZS5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRl
RGF0YVN0b3JlLm1tCmluZGV4IDcxMzgxOWU0NzQwLi5iZThiZWRkMmYyMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0K
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3Rv
cmUubW0KQEAgLTMxLDYgKzMxLDcgQEAKICNpbXBvcnQgIldLTlNBcnJheS5oIgogI2ltcG9ydCAi
V0tXZWJzaXRlRGF0YVJlY29yZEludGVybmFsLmgiCiAjaW1wb3J0ICJXZWJzaXRlRGF0YUZldGNo
T3B0aW9uLmgiCisjaW1wb3J0ICJfV0tIVFRQQ29va2llU3RvcmFnZUludGVybmFsLmgiCiAjaW1w
b3J0ICJfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oIgogI2ltcG9ydCA8d3RmL0Js
b2NrUHRyLmg+CiAKQEAgLTM4LDcgKzM5LDcgQEAgQGltcGxlbWVudGF0aW9uIFdLV2Vic2l0ZURh
dGFTdG9yZQogCiArIChXS1dlYnNpdGVEYXRhU3RvcmUgKilkZWZhdWx0RGF0YVN0b3JlCiB7Ci0g
ICAgcmV0dXJuIFdlYktpdDo6d3JhcHBlcigqQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0
RGF0YVN0b3JlKCkuZ2V0KCkpOworICAgIHJldHVybiBXZWJLaXQ6OndyYXBwZXIoQVBJOjpXZWJz
aXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlKCkuZ2V0KCkpOwogfQogCiArIChXS1dlYnNp
dGVEYXRhU3RvcmUgKilub25QZXJzaXN0ZW50RGF0YVN0b3JlCkBAIC0xOTQsNiArMTk1LDExIEBA
IC0gKHZvaWQpX3NldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkOihCT09MKWVuYWJsZWQK
ICAgICBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NFbmFibGVkKGVuYWJsZWQpOwogfQogCistIChfV0tIVFRQQ29va2llU3RvcmFn
ZSAqKV9odHRwQ29va2llU3RvcmFnZQoreworICAgIHJldHVybiBXZWJLaXQ6OndyYXBwZXIoX3dl
YnNpdGVEYXRhU3RvcmUtPmh0dHBDb29raWVTdG9yYWdlKCkpOworfQorCiBAZW5kCiAKICNlbmRp
ZiAvLyBXS19BUElfRU5BQkxFRApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaAppbmRleCA0OWQ5
YmU2YWQxMS4uZmMxOGJlMjgzOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oCkBAIC0y
OSw2ICsyOSw3IEBACiAKIE5TX0FTU1VNRV9OT05OVUxMX0JFR0lOCiAKK0BjbGFzcyBfV0tIVFRQ
Q29va2llU3RvcmFnZTsKIEBjbGFzcyBfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjsK
IAogdHlwZWRlZiBOU19PUFRJT05TKE5TVUludGVnZXIsIF9XS1dlYnNpdGVEYXRhU3RvcmVGZXRj
aE9wdGlvbnMpIHsKQEAgLTQzLDYgKzQ0LDggQEAgdHlwZWRlZiBOU19PUFRJT05TKE5TVUludGVn
ZXIsIF9XS1dlYnNpdGVEYXRhU3RvcmVGZXRjaE9wdGlvbnMpIHsKIAogQHByb3BlcnR5IChub25h
dG9taWMsIHNldHRlcj1fc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQ6KSBCT09MIF9y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCBXS19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4x
MiksIGlvcygxMC4wKSk7CiAKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgX1dLSFRU
UENvb2tpZVN0b3JhZ2UgKl9odHRwQ29va2llU3RvcmFnZSBXS19BUElfQVZBSUxBQkxFKG1hY29z
eChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKwogQGVuZAogCiBOU19BU1NVTUVfTk9O
TlVMTF9FTkQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLSFRUUENvb2tpZVN0b3JhZ2UuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLSFRUUENvb2tpZVN0b3JhZ2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMC4uMGVhMjI1NWY5NWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0NvY29hL19XS0hUVFBDb29raWVTdG9yYWdlLmgKQEAgLTAsMCArMSw0OSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbXBvcnQgPFdlYktpdC9XS0ZvdW5kYXRpb24uaD4KKworI2lmIFdL
X0FQSV9FTkFCTEVECisKKyNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgorCitXS19D
TEFTU19BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpCitAaW50
ZXJmYWNlIF9XS0hUVFBDb29raWVTdG9yYWdlIDogTlNPYmplY3QKKworLSAodm9pZClmZXRjaENv
b2tpZXM6KG5vbm51bGwgdm9pZCAoXikoTlNBcnJheTxOU0hUVFBDb29raWUgKj4gKl9OdWxsYWJs
ZSkpY29tcGxldGlvbkhhbmRsZXI7CistICh2b2lkKWZldGNoQ29va2llc0ZvclVSTDoobm9ubnVs
bCBOU1VSTCAqKXVybCBjb21wbGV0aW9uSGFuZGxlcjoobm9ubnVsbCB2b2lkICheKShOU0FycmF5
PE5TSFRUUENvb2tpZSAqPiAqX051bGxhYmxlKSljb21wbGV0aW9uSGFuZGxlcjsKKworLSAodm9p
ZClzZXRDb29raWU6KG5vbm51bGwgTlNIVFRQQ29va2llICopY29va2llIGNvbXBsZXRpb25IYW5k
bGVyOihudWxsYWJsZSB2b2lkICheKSgpKWNvbXBsZXRpb25IYW5kbGVyOworLSAodm9pZClzZXRD
b29raWVzOihub25udWxsIE5TQXJyYXk8TlNIVFRQQ29va2llICo+ICopY29va2llcyBmb3JVUkw6
KG51bGxhYmxlIE5TVVJMICopdXJsIG1haW5Eb2N1bWVudFVSTDoobnVsbGFibGUgTlNVUkwgKilt
YWluRG9jdW1lbnRVUkwgY29tcGxldGlvbkhhbmRsZXI6KG51bGxhYmxlIHZvaWQgKF4pKCkpY29t
cGxldGlvbkhhbmRsZXI7CisKKy0gKHZvaWQpZGVsZXRlQ29va2llOihub25udWxsIE5TSFRUUENv
b2tpZSAqKWNvb2tpZSBjb21wbGV0aW9uSGFuZGxlcjoobnVsbGFibGUgdm9pZCAoXikoKSljb21w
bGV0aW9uSGFuZGxlcjsKKy0gKHZvaWQpcmVtb3ZlQ29va2llc1NpbmNlRGF0ZToobm9ubnVsbCBO
U0RhdGUgKilkYXRlIGNvbXBsZXRpb25IYW5kbGVyOihudWxsYWJsZSB2b2lkICheKSgpKWNvbXBs
ZXRpb25IYW5kbGVyOworCistICh2b2lkKXNldENvb2tpZUFjY2VwdFBvbGljeTooTlNIVFRQQ29v
a2llQWNjZXB0UG9saWN5KXBvbGljeSBjb21wbGV0aW9uSGFuZGxlcjoobnVsbGFibGUgdm9pZCAo
XikoKSljb21wbGV0aW9uSGFuZGxlcjsKKy0gKHZvaWQpZmV0Y2hDb29raWVBY2NlcHRQb2xpY3k6
KG5vbm51bGwgdm9pZCAoXikoTlNIVFRQQ29va2llQWNjZXB0UG9saWN5KSljb21wbGV0aW9uSGFu
ZGxlcjsKKworQGVuZAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLSFRUUENvb2tpZVN0b3JhZ2UubW0gYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0NvY29hL19XS0hUVFBDb29raWVTdG9yYWdlLm1tCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4xMmNkYTMzZGQ4ZgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSFRUUENvb2tpZVN0b3JhZ2Uu
bW0KQEAgLTAsMCArMSwxNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNp
bXBvcnQgIl9XS0hUVFBDb29raWVTdG9yYWdlSW50ZXJuYWwuaCIKKworI2lmIFdLX0FQSV9FTkFC
TEVECisKKyNpbmNsdWRlICJIVFRQQ29va2llQWNjZXB0UG9saWN5LmgiCisjaW5jbHVkZSA8V2Vi
Q29yZS9DRk5ldHdvcmtTUEkuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0Nvb2tpZS5oPgorI2luY2x1
ZGUgPFdlYkNvcmUvVVJMLmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorCitzdGF0aWMg
TlNBcnJheTxOU0hUVFBDb29raWUgKj4gKmNvcmVDb29raWVzVG9OU0Nvb2tpZXMoY29uc3QgVmVj
dG9yPFdlYkNvcmU6OkNvb2tpZT4mIGNvcmVDb29raWVzKQoreworICAgIE5TTXV0YWJsZUFycmF5
PE5TSFRUUENvb2tpZSAqPiAqbnNDb29raWVzID0gW05TTXV0YWJsZUFycmF5IGFycmF5V2l0aENh
cGFjaXR5OmNvcmVDb29raWVzLnNpemUoKV07CisKKyAgICBmb3IgKGF1dG8mIGNvb2tpZSA6IGNv
cmVDb29raWVzKQorICAgICAgICBbbnNDb29raWVzIGFkZE9iamVjdDooTlNIVFRQQ29va2llKilj
b29raWVdOworCisgICAgcmV0dXJuIG5zQ29va2llczsKK30KKworQGltcGxlbWVudGF0aW9uIF9X
S0hUVFBDb29raWVTdG9yYWdlCisKKy0gKHZvaWQpZGVhbGxvYworeworICAgIF9jb29raWVTdG9y
YWdlLT5BUEk6OkhUVFBDb29raWVTdG9yYWdlOjp+SFRUUENvb2tpZVN0b3JhZ2UoKTsKKworICAg
IFtzdXBlciBkZWFsbG9jXTsKK30KKworLSAodm9pZClmZXRjaENvb2tpZXM6KHZvaWQgKF4pKE5T
QXJyYXk8TlNIVFRQQ29va2llICo+ICopKWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAgX2Nvb2tp
ZVN0b3JhZ2UtPmNvb2tpZXMoW2hhbmRsZXIgPSBhZG9wdE5TKFtjb21wbGV0aW9uSGFuZGxlciBj
b3B5XSldKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiBjb29raWVzKSB7CisgICAgICAg
IGF1dG8gcmF3SGFuZGxlciA9ICh2b2lkICheKShOU0FycmF5PE5TSFRUUENvb2tpZSAqPiAqKSlo
YW5kbGVyLmdldCgpOworICAgICAgICByYXdIYW5kbGVyKGNvcmVDb29raWVzVG9OU0Nvb2tpZXMo
Y29va2llcykpOworICAgIH0pOworfQorCistICh2b2lkKWZldGNoQ29va2llc0ZvclVSTDooTlNV
UkwgKil1cmwgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TQXJyYXk8TlNIVFRQQ29va2ll
ICo+ICopKWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAgX2Nvb2tpZVN0b3JhZ2UtPmNvb2tpZXMo
dXJsLCBbaGFuZGxlciA9IGFkb3B0TlMoW2NvbXBsZXRpb25IYW5kbGVyIGNvcHldKV0oY29uc3Qg
VmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mIGNvb2tpZXMpIHsKKyAgICAgICAgYXV0byByYXdIYW5k
bGVyID0gKHZvaWQgKF4pKE5TQXJyYXk8TlNIVFRQQ29va2llICo+ICopKWhhbmRsZXIuZ2V0KCk7
CisgICAgICAgIHJhd0hhbmRsZXIoY29yZUNvb2tpZXNUb05TQ29va2llcyhjb29raWVzKSk7Cisg
ICAgfSk7Cit9CisKKy0gKHZvaWQpc2V0Q29va2llOihOU0hUVFBDb29raWUgKiljb29raWUgY29t
cGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKCkpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICBfY29v
a2llU3RvcmFnZS0+c2V0Q29va2llKGNvb2tpZSwgW2hhbmRsZXIgPSBhZG9wdE5TKFtjb21wbGV0
aW9uSGFuZGxlciBjb3B5XSldKCkgeworICAgICAgICBhdXRvIHJhd0hhbmRsZXIgPSAodm9pZCAo
XikoKSloYW5kbGVyLmdldCgpOworICAgICAgICBpZiAocmF3SGFuZGxlcikKKyAgICAgICAgICAg
IHJhd0hhbmRsZXIoKTsKKyAgICB9KTsKKworfQorCistICh2b2lkKWRlbGV0ZUNvb2tpZTooTlNI
VFRQQ29va2llICopY29va2llIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKSgpKWNvbXBsZXRp
b25IYW5kbGVyCit7CisgICAgX2Nvb2tpZVN0b3JhZ2UtPmRlbGV0ZUNvb2tpZShjb29raWUsIFto
YW5kbGVyID0gYWRvcHROUyhbY29tcGxldGlvbkhhbmRsZXIgY29weV0pXSgpIHsKKyAgICAgICAg
YXV0byByYXdIYW5kbGVyID0gKHZvaWQgKF4pKCkpaGFuZGxlci5nZXQoKTsKKyAgICAgICAgaWYg
KHJhd0hhbmRsZXIpCisgICAgICAgICAgICByYXdIYW5kbGVyKCk7CisgICAgfSk7Cit9CisKKy0g
KHZvaWQpc2V0Q29va2llczooTlNBcnJheTxOU0hUVFBDb29raWUgKj4gKiljb29raWVzIGZvclVS
TDooTlNVUkwgKilVUkwgbWFpbkRvY3VtZW50VVJMOihOU1VSTCAqKW1haW5Eb2N1bWVudFVSTCBj
b21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoKSljb21wbGV0aW9uSGFuZGxlcgoreworICAgIFZl
Y3RvcjxXZWJDb3JlOjpDb29raWU+IGNvcmVDb29raWVzOworICAgIGNvcmVDb29raWVzLnJlc2Vy
dmVJbml0aWFsQ2FwYWNpdHkoY29va2llcy5jb3VudCk7CisgICAgZm9yIChOU0hUVFBDb29raWUg
KmNvb2tpZSA6IGNvb2tpZXMpCisgICAgICAgIGNvcmVDb29raWVzLnVuY2hlY2tlZEFwcGVuZChj
b29raWUpOworCisgICAgX2Nvb2tpZVN0b3JhZ2UtPnNldENvb2tpZXMoY29yZUNvb2tpZXMsIFVS
TCwgbWFpbkRvY3VtZW50VVJMLCBbaGFuZGxlciA9IGFkb3B0TlMoW2NvbXBsZXRpb25IYW5kbGVy
IGNvcHldKV0oKSB7CisgICAgICAgIGF1dG8gcmF3SGFuZGxlciA9ICh2b2lkICheKSgpKWhhbmRs
ZXIuZ2V0KCk7CisgICAgICAgIGlmIChyYXdIYW5kbGVyKQorICAgICAgICAgICAgcmF3SGFuZGxl
cigpOworICAgIH0pOworfQorCistICh2b2lkKXJlbW92ZUNvb2tpZXNTaW5jZURhdGU6KE5TRGF0
ZSAqKWRhdGUgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKCkpY29tcGxldGlvbkhhbmRsZXIK
K3sKKyAgICBhdXRvIHN5c3RlbUNsb2NrVGltZSA9IHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6
OnRpbWVfcG9pbnQoc3RkOjpjaHJvbm86OmR1cmF0aW9uX2Nhc3Q8c3RkOjpjaHJvbm86OnN5c3Rl
bV9jbG9jazo6ZHVyYXRpb24+KHN0ZDo6Y2hyb25vOjpkdXJhdGlvbjxkb3VibGU+KGRhdGUudGlt
ZUludGVydmFsU2luY2UxOTcwKSkpOworCisgICAgX2Nvb2tpZVN0b3JhZ2UtPnJlbW92ZUNvb2tp
ZXNTaW5jZURhdGUoc3lzdGVtQ2xvY2tUaW1lLCBbaGFuZGxlciA9IGFkb3B0TlMoW2NvbXBsZXRp
b25IYW5kbGVyIGNvcHldKV0oKSB7CisgICAgICAgIGF1dG8gcmF3SGFuZGxlciA9ICh2b2lkIChe
KSgpKWhhbmRsZXIuZ2V0KCk7CisgICAgICAgIGlmIChyYXdIYW5kbGVyKQorICAgICAgICAgICAg
cmF3SGFuZGxlcigpOworICAgIH0pOworfQorCistICh2b2lkKXNldENvb2tpZUFjY2VwdFBvbGlj
eTooTlNIVFRQQ29va2llQWNjZXB0UG9saWN5KXBvbGljeSBjb21wbGV0aW9uSGFuZGxlcjoodm9p
ZCAoXikoKSljb21wbGV0aW9uSGFuZGxlcgoreworICAgIF9jb29raWVTdG9yYWdlLT5zZXRIVFRQ
Q29va2llQWNjZXB0UG9saWN5KHBvbGljeSwgW2hhbmRsZXIgPSBhZG9wdE5TKFtjb21wbGV0aW9u
SGFuZGxlciBjb3B5XSldKCkgeworICAgICAgICBhdXRvIHJhd0hhbmRsZXIgPSAodm9pZCAoXiko
KSloYW5kbGVyLmdldCgpOworICAgICAgICBpZiAocmF3SGFuZGxlcikKKyAgICAgICAgICAgIHJh
d0hhbmRsZXIoKTsKKyAgICB9KTsKK30KKworc3RhdGljIE5TSFRUUENvb2tpZUFjY2VwdFBvbGlj
eSBraXRDb29raWVQb2xpY3lUb05TQ29va2llUG9saWN5KFdlYktpdDo6SFRUUENvb2tpZUFjY2Vw
dFBvbGljeSBraXRQb2xpY3kpCit7CisgICAgc3dpdGNoIChraXRQb2xpY3kpIHsKKyAgICBjYXNl
IFdlYktpdDo6SFRUUENvb2tpZUFjY2VwdFBvbGljeUFsd2F5czoKKyAgICAgICAgcmV0dXJuIE5T
SFRUUENvb2tpZUFjY2VwdFBvbGljeUFsd2F5czsKKyAgICBjYXNlIFdlYktpdDo6SFRUUENvb2tp
ZUFjY2VwdFBvbGljeU5ldmVyOgorICAgICAgICByZXR1cm4gTlNIVFRQQ29va2llQWNjZXB0UG9s
aWN5TmV2ZXI7CisgICAgY2FzZSBXZWJLaXQ6OkhUVFBDb29raWVBY2NlcHRQb2xpY3lPbmx5RnJv
bU1haW5Eb2N1bWVudERvbWFpbjoKKyAgICAgICAgcmV0dXJuIE5TSFRUUENvb2tpZUFjY2VwdFBv
bGljeU9ubHlGcm9tTWFpbkRvY3VtZW50RG9tYWluOworICAgIGNhc2UgV2ViS2l0OjpIVFRQQ29v
a2llQWNjZXB0UG9saWN5RXhjbHVzaXZlbHlGcm9tTWFpbkRvY3VtZW50RG9tYWluOgorICAgICAg
ICAvLyBDYXN0IHJlcXVpcmVkIGJlY2F1c2Ugb2YgQ0ZOZXR3b3JrU1BJLgorICAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8TlNIVFRQQ29va2llQWNjZXB0UG9saWN5PihOU0hUVFBDb29raWVBY2Nl
cHRQb2xpY3lFeGNsdXNpdmVseUZyb21NYWluRG9jdW1lbnREb21haW4pOworICAgIGRlZmF1bHQ6
CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKworICAgIHJldHVybiBOU0hU
VFBDb29raWVBY2NlcHRQb2xpY3lOZXZlcjsKK30KKworLSAodm9pZClmZXRjaENvb2tpZUFjY2Vw
dFBvbGljeToodm9pZCAoXikoTlNIVFRQQ29va2llQWNjZXB0UG9saWN5KSljb21wbGV0aW9uSGFu
ZGxlcgoreworICAgIF9jb29raWVTdG9yYWdlLT5nZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KFto
YW5kbGVyID0gYWRvcHROUyhbY29tcGxldGlvbkhhbmRsZXIgY29weV0pXShXZWJLaXQ6OkhUVFBD
b29raWVBY2NlcHRQb2xpY3kgcG9saWN5KSB7CisgICAgICAgIGF1dG8gcmF3SGFuZGxlciA9ICh2
b2lkICheKShOU0hUVFBDb29raWVBY2NlcHRQb2xpY3kpKWhhbmRsZXIuZ2V0KCk7CisgICAgICAg
IHJhd0hhbmRsZXIoa2l0Q29va2llUG9saWN5VG9OU0Nvb2tpZVBvbGljeShwb2xpY3kpKTsKKyAg
ICB9KTsKK30KKworI3ByYWdtYSBtYXJrIFdLT2JqZWN0IHByb3RvY29sIGltcGxlbWVudGF0aW9u
CisKKy0gKEFQSTo6T2JqZWN0JilfYXBpT2JqZWN0Cit7CisgICAgcmV0dXJuICpfY29va2llU3Rv
cmFnZTsKK30KKworQGVuZAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLSFRUUENvb2tpZVN0b3JhZ2VJbnRlcm5hbC5oIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tIVFRQQ29va2llU3RvcmFnZUludGVybmFs
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjNkZTAxYmE1YmYxCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tI
VFRQQ29va2llU3RvcmFnZUludGVybmFsLmgKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbXBvcnQgIl9XS0hUVFBDb29raWVTdG9yYWdlLmgiCisKKyNpZiBXS19BUElfRU5BQkxFRAor
CisjaW1wb3J0ICJBUElIVFRQQ29va2llU3RvcmFnZS5oIgorI2ltcG9ydCAiV0tPYmplY3QuaCIK
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK2lubGluZSBfV0tIVFRQQ29va2llU3RvcmFnZSAqd3Jh
cHBlcihBUEk6OkhUVFBDb29raWVTdG9yYWdlJiBjb29raWVTdG9yYWdlKQoreworICAgIEFTU0VS
VChbY29va2llU3RvcmFnZS53cmFwcGVyKCkgaXNLaW5kT2ZDbGFzczpbX1dLSFRUUENvb2tpZVN0
b3JhZ2UgY2xhc3NdXSk7CisgICAgcmV0dXJuIChfV0tIVFRQQ29va2llU3RvcmFnZSAqKWNvb2tp
ZVN0b3JhZ2Uud3JhcHBlcigpOworfQorCit9CisKK0BpbnRlcmZhY2UgX1dLSFRUUENvb2tpZVN0
b3JhZ2UgKCkgPFdLT2JqZWN0PiB7CitAcGFja2FnZQorICAgIEFQSTo6T2JqZWN0U3RvcmFnZTxB
UEk6OkhUVFBDb29raWVTdG9yYWdlPiBfY29va2llU3RvcmFnZTsKK30KK0BlbmQKKworI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRv
bWF0aW9uU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0b21hdGlvbi9X
ZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKaW5kZXggNDhjYWRjNzEyNGYuLmE4MzE4NGFmOTAyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0
aW9uU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1dG9tYXRpb24v
V2ViQXV0b21hdGlvblNlc3Npb24uY3BwCkBAIC03MzAsNyArNzMwLDcgQEAgdm9pZCBXZWJBdXRv
bWF0aW9uU2Vzc2lvbjo6YWRkU2luZ2xlQ29va2llKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywg
Y29uc3QgU3RyaW4KIAogICAgIC8vIEZJWE1FOiBVc2luZyBhY3RpdmVVUkwgaGVyZSB0d2ljZSBp
cyBiYXNpY2FsbHkgc2F5aW5nICJ0aGlzIGlzIGFsd2F5cyBpbiB0aGUgY29udGV4dCBvZiB0aGUg
bWFpbiBkb2N1bWVudCIKICAgICAvLyB3aGljaCBwcm9iYWJseSBpc24ndCBhY2N1cmF0ZS4KLSAg
ICBjb29raWVNYW5hZ2VyLT5zZXRDb29raWVzKFdlYkNvcmU6OlNlc3Npb25JRDo6ZGVmYXVsdFNl
c3Npb25JRCgpLCB7IGNvb2tpZSB9LCBhY3RpdmVVUkwsIGFjdGl2ZVVSTCk7CisgICAgY29va2ll
TWFuYWdlci0+c2V0Q29va2llcyhXZWJDb3JlOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQo
KSwgeyBjb29raWUgfSwgYWN0aXZlVVJMLCBhY3RpdmVVUkwsIFtdKENhbGxiYWNrQmFzZTo6RXJy
b3Ipe30pOwogCiAgICAgY2FsbGJhY2stPnNlbmRTdWNjZXNzKCk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkuY3BwCmluZGV4IDJlYWE1
Y2UzYmZhLi5lMDIzYjgyNWVlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYkNvb2tpZU1hbmFnZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYkNvb2tpZU1hbmFnZXJQcm94eS5jcHAKQEAgLTMyLDggKzMyLDExIEBACiAjaW5jbHVkZSAi
V2ViQ29va2llTWFuYWdlck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViQ29va2llTWFuYWdlclBy
b3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgorI2luY2x1ZGUgPFdl
YkNvcmUvQ29va2llLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbkRhdGEuaD4K
IAordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjb25z
dCBjaGFyKiBXZWJDb29raWVNYW5hZ2VyUHJveHk6OnN1cHBsZW1lbnROYW1lKCkKQEAgLTk0LDcg
Kzk3LDcgQEAgdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRlcmVmV2ViQ29udGV4dFN1cHBs
ZW1lbnQoKQogICAgIEFQSTo6T2JqZWN0OjpkZXJlZigpOwogfQogCi12b2lkIFdlYkNvb2tpZU1h
bmFnZXJQcm94eTo6Z2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgRnVuY3Rpb248dm9pZCAoQVBJOjpBcnJheSosIENhbGxiYWNrQmFzZTo6RXJyb3Ip
PiYmIGNhbGxiYWNrRnVuY3Rpb24pCit2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6Z2V0SG9z
dG5hbWVzV2l0aENvb2tpZXMoU2Vzc2lvbklEIHNlc3Npb25JRCwgRnVuY3Rpb248dm9pZCAoQVBJ
OjpBcnJheSosIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7CiAg
ICAgYXV0byBjYWxsYmFjayA9IEFycmF5Q2FsbGJhY2s6OmNyZWF0ZShXVEZNb3ZlKGNhbGxiYWNr
RnVuY3Rpb24pKTsKICAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gY2FsbGJhY2stPmNhbGxiYWNr
SUQoKTsKQEAgLTExNCwzNyArMTE3LDk2IEBAIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5Ojpk
aWRHZXRIb3N0bmFtZXNXaXRoQ29va2llcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgaG9zCiAgICAg
Y2FsbGJhY2stPnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZShBUEk6OkFycmF5OjpjcmVh
dGVTdHJpbmdBcnJheShob3N0bmFtZXMpLnB0cigpKTsKIH0KIAotdm9pZCBXZWJDb29raWVNYW5h
Z2VyUHJveHk6OmRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZShXZWJDb3JlOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQordm9pZCBXZWJDb29raWVNYW5hZ2VyUHJv
eHk6OmRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZShTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBT
dHJpbmcmIGhvc3RuYW1lKQogewogICAgIHByb2Nlc3NQb29sKCktPnNlbmRUb05ldHdvcmtpbmdQ
cm9jZXNzUmVsYXVuY2hpbmdJZk5lY2Vzc2FyeShNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6
RGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKHNlc3Npb25JRCwgaG9zdG5hbWUpKTsKIH0KIAotdm9p
ZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRlbGV0ZUFsbENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lv
bklEIHNlc3Npb25JRCkKK3ZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpkZWxldGVBbGxDb29r
aWVzKFNlc3Npb25JRCBzZXNzaW9uSUQpCiB7CiAgICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvTmV0
d29ya2luZ1Byb2Nlc3NSZWxhdW5jaGluZ0lmTmVjZXNzYXJ5KE1lc3NhZ2VzOjpXZWJDb29raWVN
YW5hZ2VyOjpEZWxldGVBbGxDb29raWVzKHNlc3Npb25JRCkpOwogfQogCi12b2lkIFdlYkNvb2tp
ZU1hbmFnZXJQcm94eTo6ZGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2UoV2ViQ29yZTo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCB0
aW1lKQordm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRlbGV0ZUNvb2tpZShTZXNzaW9uSUQg
c2Vzc2lvbklELCBjb25zdCBDb29raWUmIGNvb2tpZSwgRnVuY3Rpb248dm9pZCAoQ2FsbGJhY2tC
YXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKK3sKKyAgICBhdXRvIGNhbGxiYWNrID0g
Vm9pZENhbGxiYWNrOjpjcmVhdGUoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSk7CisgICAgdWlu
dDY0X3QgY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7CisgICAgbV92b2lkQ2Fs
bGJhY2tzLnNldChjYWxsYmFja0lELCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisKKyAgICBwcm9jZXNz
UG9vbCgpLT5zZW5kVG9OZXR3b3JraW5nUHJvY2Vzc1JlbGF1bmNoaW5nSWZOZWNlc3NhcnkoTWVz
c2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OkRlbGV0ZUNvb2tpZShzZXNzaW9uSUQsIGNvb2tpZSwg
Y2FsbGJhY2tJRCkpOworfQorCit2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGVsZXRlQWxs
Q29va2llc01vZGlmaWVkU2luY2UoU2Vzc2lvbklEIHNlc3Npb25JRCwgc3RkOjpjaHJvbm86OnN5
c3RlbV9jbG9jazo6dGltZV9wb2ludCB0aW1lLCBGdW5jdGlvbjx2b2lkIChDYWxsYmFja0Jhc2U6
OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQoreworICAgIGF1dG8gY2FsbGJhY2sgPSBWb2lk
Q2FsbGJhY2s6OmNyZWF0ZShXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pKTsKKyAgICB1aW50NjRf
dCBjYWxsYmFja0lEID0gY2FsbGJhY2stPmNhbGxiYWNrSUQoKTsKKyAgICBtX3ZvaWRDYWxsYmFj
a3Muc2V0KGNhbGxiYWNrSUQsIFdURk1vdmUoY2FsbGJhY2spKTsKKworICAgIHByb2Nlc3NQb29s
KCktPnNlbmRUb05ldHdvcmtpbmdQcm9jZXNzUmVsYXVuY2hpbmdJZk5lY2Vzc2FyeShNZXNzYWdl
czo6V2ViQ29va2llTWFuYWdlcjo6RGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2Uoc2Vzc2lv
bklELCB0aW1lLCBjYWxsYmFja0lEKSk7Cit9CisKK3ZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5
OjpzZXRDb29raWUoU2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgQ29va2llJiBjb29raWUsIEZ1
bmN0aW9uPHZvaWQgKENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7
Ci0gICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvTmV0d29ya2luZ1Byb2Nlc3NSZWxhdW5jaGluZ0lm
TmVjZXNzYXJ5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpEZWxldGVBbGxDb29raWVzTW9k
aWZpZWRTaW5jZShzZXNzaW9uSUQsIHRpbWUpKTsKKyAgICBhdXRvIGNhbGxiYWNrID0gVm9pZENh
bGxiYWNrOjpjcmVhdGUoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSk7CisgICAgdWludDY0X3Qg
Y2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7CisgICAgbV92b2lkQ2FsbGJhY2tz
LnNldChjYWxsYmFja0lELCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisKKyAgICBwcm9jZXNzUG9vbCgp
LT5zZW5kVG9OZXR3b3JraW5nUHJvY2Vzc1JlbGF1bmNoaW5nSWZOZWNlc3NhcnkoTWVzc2FnZXM6
OldlYkNvb2tpZU1hbmFnZXI6OlNldENvb2tpZShzZXNzaW9uSUQsIGNvb2tpZSwgY2FsbGJhY2tJ
RCkpOwogfQogCi12b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6c2V0Q29va2llcyhXZWJDb3Jl
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYgY29v
a2llcywgY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwsIGNvbnN0IFdlYkNvcmU6OlVSTCYgbWFpbkRv
Y3VtZW50VVJMKQordm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OnNldENvb2tpZXMoU2Vzc2lv
bklEIHNlc3Npb25JRCwgY29uc3QgVmVjdG9yPENvb2tpZT4mIGNvb2tpZXMsIGNvbnN0IFVSTCYg
dXJsLCBjb25zdCBVUkwmIG1haW5Eb2N1bWVudFVSTCwgRnVuY3Rpb248dm9pZCAoQ2FsbGJhY2tC
YXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKLSAgICBwcm9jZXNzUG9vbCgpLT5z
ZW5kVG9OZXR3b3JraW5nUHJvY2Vzc1JlbGF1bmNoaW5nSWZOZWNlc3NhcnkoTWVzc2FnZXM6Oldl
YkNvb2tpZU1hbmFnZXI6OlNldENvb2tpZXMoc2Vzc2lvbklELCBjb29raWVzLCB1cmwsIG1haW5E
b2N1bWVudFVSTCkpOworICAgIGF1dG8gY2FsbGJhY2sgPSBWb2lkQ2FsbGJhY2s6OmNyZWF0ZShX
VEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pKTsKKyAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gY2Fs
bGJhY2stPmNhbGxiYWNrSUQoKTsKKyAgICBtX3ZvaWRDYWxsYmFja3Muc2V0KGNhbGxiYWNrSUQs
IFdURk1vdmUoY2FsbGJhY2spKTsKKworICAgIHByb2Nlc3NQb29sKCktPnNlbmRUb05ldHdvcmtp
bmdQcm9jZXNzUmVsYXVuY2hpbmdJZk5lY2Vzc2FyeShNZXNzYWdlczo6V2ViQ29va2llTWFuYWdl
cjo6U2V0Q29va2llcyhzZXNzaW9uSUQsIGNvb2tpZXMsIHVybCwgbWFpbkRvY3VtZW50VVJMLCBj
YWxsYmFja0lEKSk7CiB9CiAKLXZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpzdGFydE9ic2Vy
dmluZ0Nvb2tpZUNoYW5nZXMoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCkKK3ZvaWQgV2Vi
Q29va2llTWFuYWdlclByb3h5OjpnZXRBbGxDb29raWVzKFNlc3Npb25JRCBzZXNzaW9uSUQsIEZ1
bmN0aW9uPHZvaWQgKGNvbnN0IFZlY3RvcjxDb29raWU+JiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+
JiYgY2FsbGJhY2tGdW5jdGlvbikKK3sKKyAgICBhdXRvIGNhbGxiYWNrID0gR2V0Q29va2llc0Nh
bGxiYWNrOjpjcmVhdGUoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSk7CisgICAgdWludDY0X3Qg
Y2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7CisgICAgbV9nZXRDb29raWVzQ2Fs
bGJhY2tzLnNldChjYWxsYmFja0lELCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisKKyAgICBwcm9jZXNz
UG9vbCgpLT5zZW5kVG9OZXR3b3JraW5nUHJvY2Vzc1JlbGF1bmNoaW5nSWZOZWNlc3NhcnkoTWVz
c2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OkdldEFsbENvb2tpZXMoc2Vzc2lvbklELCBjYWxsYmFj
a0lEKSk7Cit9CisKK3ZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpnZXRDb29raWVzKFNlc3Np
b25JRCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgdXJsLCBGdW5jdGlvbjx2b2lkIChjb25zdCBWZWN0
b3I8Q29va2llPiYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCit7
CisgICAgYXV0byBjYWxsYmFjayA9IEdldENvb2tpZXNDYWxsYmFjazo6Y3JlYXRlKFdURk1vdmUo
Y2FsbGJhY2tGdW5jdGlvbikpOworICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+
Y2FsbGJhY2tJRCgpOworICAgIG1fZ2V0Q29va2llc0NhbGxiYWNrcy5zZXQoY2FsbGJhY2tJRCwg
V1RGTW92ZShjYWxsYmFjaykpOworCisgICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvTmV0d29ya2lu
Z1Byb2Nlc3NSZWxhdW5jaGluZ0lmTmVjZXNzYXJ5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2Vy
OjpHZXRDb29raWVzKHNlc3Npb25JRCwgdXJsLCBjYWxsYmFja0lEKSk7Cit9CisKK3ZvaWQgV2Vi
Q29va2llTWFuYWdlclByb3h5OjpkaWRTZXRDb29raWVzKHVpbnQ2NF90IGNhbGxiYWNrSUQpCit7
CisgICAgbV92b2lkQ2FsbGJhY2tzLnRha2UoY2FsbGJhY2tJRCktPnBlcmZvcm1DYWxsYmFjaygp
OworfQorCit2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGlkR2V0Q29va2llcyhjb25zdCBW
ZWN0b3I8Q29va2llPiYgY29va2llcywgdWludDY0X3QgY2FsbGJhY2tJRCkKK3sKKyAgICBtX2dl
dENvb2tpZXNDYWxsYmFja3MudGFrZShjYWxsYmFja0lEKS0+cGVyZm9ybUNhbGxiYWNrV2l0aFJl
dHVyblZhbHVlKGNvb2tpZXMpOworfQorCit2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGlk
RGVsZXRlQ29va2llcyh1aW50NjRfdCBjYWxsYmFja0lEKQoreworICAgIG1fdm9pZENhbGxiYWNr
cy50YWtlKGNhbGxiYWNrSUQpLT5wZXJmb3JtQ2FsbGJhY2soKTsKK30KKwordm9pZCBXZWJDb29r
aWVNYW5hZ2VyUHJveHk6OnN0YXJ0T2JzZXJ2aW5nQ29va2llQ2hhbmdlcyhTZXNzaW9uSUQgc2Vz
c2lvbklEKQogewogICAgIHByb2Nlc3NQb29sKCktPnNlbmRUb05ldHdvcmtpbmdQcm9jZXNzUmVs
YXVuY2hpbmdJZk5lY2Vzc2FyeShNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6U3RhcnRPYnNl
cnZpbmdDb29raWVDaGFuZ2VzKHNlc3Npb25JRCkpOwogfQogCi12b2lkIFdlYkNvb2tpZU1hbmFn
ZXJQcm94eTo6c3RvcE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMoV2ViQ29yZTo6U2Vzc2lvbklEIHNl
c3Npb25JRCkKK3ZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpzdG9wT2JzZXJ2aW5nQ29va2ll
Q2hhbmdlcyhTZXNzaW9uSUQgc2Vzc2lvbklEKQogewogICAgIHByb2Nlc3NQb29sKCktPnNlbmRU
b05ldHdvcmtpbmdQcm9jZXNzUmVsYXVuY2hpbmdJZk5lY2Vzc2FyeShNZXNzYWdlczo6V2ViQ29v
a2llTWFuYWdlcjo6U3RvcE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMoc2Vzc2lvbklEKSk7CiB9CiAK
LXZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpzZXRDb29raWVPYnNlcnZlckNhbGxiYWNrKFdl
YkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4mJiBjYWxs
YmFjaykKK3ZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpzZXRDb29raWVPYnNlcnZlckNhbGxi
YWNrKFNlc3Npb25JRCBzZXNzaW9uSUQsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4mJiBjYWxsYmFj
aykKIHsKICAgICBpZiAoY2FsbGJhY2spCiAgICAgICAgIG1fY29va2llT2JzZXJ2ZXJzLnNldChz
ZXNzaW9uSUQsIFdURk1vdmUoY2FsbGJhY2spKTsKQEAgLTE1MiwxNCArMjE0LDE0IEBAIHZvaWQg
V2ViQ29va2llTWFuYWdlclByb3h5OjpzZXRDb29raWVPYnNlcnZlckNhbGxiYWNrKFdlYkNvcmU6
OlNlc3Npb25JRCBzZXNzaW9uCiAgICAgICAgIG1fY29va2llT2JzZXJ2ZXJzLnJlbW92ZShzZXNz
aW9uSUQpOwogfQogCi12b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6Y29va2llc0RpZENoYW5n
ZShXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQordm9pZCBXZWJDb29raWVNYW5hZ2VyUHJv
eHk6OmNvb2tpZXNEaWRDaGFuZ2UoU2Vzc2lvbklEIHNlc3Npb25JRCkKIHsKICAgICBtX2NsaWVu
dC5jb29raWVzRGlkQ2hhbmdlKHRoaXMpOwogICAgIGlmIChhdXRvIGNhbGxiYWNrID0gbV9jb29r
aWVPYnNlcnZlcnMuZ2V0KHNlc3Npb25JRCkpCiAgICAgICAgIGNhbGxiYWNrKCk7CiB9CiAKLXZv
aWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpzZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KEhUVFBD
b29raWVBY2NlcHRQb2xpY3kgcG9saWN5KQordm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OnNl
dEhUVFBDb29raWVBY2NlcHRQb2xpY3koU2Vzc2lvbklELCBIVFRQQ29va2llQWNjZXB0UG9saWN5
IHBvbGljeSwgRnVuY3Rpb248dm9pZCAoQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tG
dW5jdGlvbikKIHsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBpZiAoIXByb2Nlc3NQb29sKCkt
PmlzVXNpbmdUZXN0aW5nTmV0d29ya1Nlc3Npb24oKSkKQEAgLTE3MiwxMSArMjM0LDE2IEBAIHZv
aWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpzZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KEhUVFBD
b29raWVBY2NlcHRQb2xpY3kgcG9sCiAgICAgLy8gVGhlIHBvbGljeSBpcyBub3Qgc2VudCB0byBu
ZXdseSBjcmVhdGVkIHByb2Nlc3NlcyAob25seSBTb3VwIGRvZXMgdGhhdCB2aWEgc2V0SW5pdGlh
bEhUVFBDb29raWVBY2NlcHRQb2xpY3koKSkuIFRoaXMgaXMgbm90IGEgc2VyaW91cyBwcm9ibGVt
LCBiZWNhdXNlOgogICAgIC8vIC0gV2hlbiB0ZXN0aW5nLCB3ZSBvbmx5IGhhdmUgb25lIFdlYlBy
b2Nlc3MgYW5kIG9uZSBOZXR3b3JrUHJvY2VzcywgYW5kIFdlYktpdFRlc3RSdW5uZXIgbmV2ZXIg
cmVzdGFydHMgdGhlbTsKICAgICAvLyAtIFdoZW4gbm90IHRlc3RpbmcsIENvY29hIGhhcyB0aGUg
cG9saWN5IHBlcnNpc3RlZCwgYW5kIHRodXMgbmV3IHByb2Nlc3NlcyB1c2UgaXQgKGV2ZW4gZm9y
IGVwaGVtZXJhbCBzZXNzaW9ucykuCi0gICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvQWxsUHJvY2Vz
c2VzKE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5
KHBvbGljeSkpOwotICAgIHByb2Nlc3NQb29sKCktPnNlbmRUb05ldHdvcmtpbmdQcm9jZXNzKE1l
c3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHBvbGlj
eSkpOworICAgIHByb2Nlc3NQb29sKCktPnNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2Vi
Q29va2llTWFuYWdlcjo6U2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShwb2xpY3ksIDApKTsKKwor
ICAgIGF1dG8gY2FsbGJhY2sgPSBWb2lkQ2FsbGJhY2s6OmNyZWF0ZShXVEZNb3ZlKGNhbGxiYWNr
RnVuY3Rpb24pKTsKKyAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gY2FsbGJhY2stPmNhbGxiYWNr
SUQoKTsKKyAgICBtX3ZvaWRDYWxsYmFja3Muc2V0KGNhbGxiYWNrSUQsIFdURk1vdmUoY2FsbGJh
Y2spKTsKKworICAgIHByb2Nlc3NQb29sKCktPnNlbmRUb05ldHdvcmtpbmdQcm9jZXNzKE1lc3Nh
Z2VzOjpXZWJDb29raWVNYW5hZ2VyOjpTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHBvbGljeSwg
Y2FsbGJhY2tJRCkpOwogfQogCi12b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6Z2V0SFRUUENv
b2tpZUFjY2VwdFBvbGljeShGdW5jdGlvbjx2b2lkIChIVFRQQ29va2llQWNjZXB0UG9saWN5LCBD
YWxsYmFja0Jhc2U6OkVycm9yKT4gY2FsbGJhY2tGdW5jdGlvbikKK3ZvaWQgV2ViQ29va2llTWFu
YWdlclByb3h5OjpnZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KFNlc3Npb25JRCwgRnVuY3Rpb248
dm9pZCAoSFRUUENvb2tpZUFjY2VwdFBvbGljeSwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2Fs
bGJhY2tGdW5jdGlvbikKIHsKICAgICBhdXRvIGNhbGxiYWNrID0gSFRUUENvb2tpZUFjY2VwdFBv
bGljeUNhbGxiYWNrOjpjcmVhdGUoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSk7CiAKQEAgLTE4
OCwxMyArMjU1LDEyIEBAIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpnZXRIVFRQQ29va2ll
QWNjZXB0UG9saWN5KEZ1bmN0aW9uPHZvaWQgKEhUVFBDb29raWVBCiAKIHZvaWQgV2ViQ29va2ll
TWFuYWdlclByb3h5OjpkaWRHZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHVpbnQzMl90IHBvbGlj
eSwgdWludDY0X3QgY2FsbGJhY2tJRCkKIHsKLSAgICBSZWZQdHI8SFRUUENvb2tpZUFjY2VwdFBv
bGljeUNhbGxiYWNrPiBjYWxsYmFjayA9IG1faHR0cENvb2tpZUFjY2VwdFBvbGljeUNhbGxiYWNr
cy50YWtlKGNhbGxiYWNrSUQpOwotICAgIGlmICghY2FsbGJhY2spIHsKLSAgICAgICAgLy8gRklY
TUU6IExvZyBlcnJvciBvciBhc3NlcnQuCi0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgbV9o
dHRwQ29va2llQWNjZXB0UG9saWN5Q2FsbGJhY2tzLnRha2UoY2FsbGJhY2tJRCktPnBlcmZvcm1D
YWxsYmFja1dpdGhSZXR1cm5WYWx1ZShwb2xpY3kpOworfQogCi0gICAgY2FsbGJhY2stPnBlcmZv
cm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZShwb2xpY3kpOwordm9pZCBXZWJDb29raWVNYW5hZ2Vy
UHJveHk6OmRpZFNldEhUVFBDb29raWVBY2NlcHRQb2xpY3kodWludDY0X3QgY2FsbGJhY2tJRCkK
K3sKKyAgICBtX3ZvaWRDYWxsYmFja3MudGFrZShjYWxsYmFja0lEKS0+cGVyZm9ybUNhbGxiYWNr
KCk7CiB9CiAKIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpzZXRDb29raWVTdG9yYWdlUGFy
dGl0aW9uaW5nRW5hYmxlZChib29sIGVuYWJsZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmgKaW5kZXggY2Y3OThkN2NjY2MuLmZkZjg5MWUx
NTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdl
clByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQ
cm94eS5oCkBAIC01NSw2ICs1NSw3IEBAIGNsYXNzIFdlYlByb2Nlc3NQcm94eTsKIAogdHlwZWRl
ZiBHZW5lcmljQ2FsbGJhY2s8QVBJOjpBcnJheSo+IEFycmF5Q2FsbGJhY2s7CiB0eXBlZGVmIEdl
bmVyaWNDYWxsYmFjazxIVFRQQ29va2llQWNjZXB0UG9saWN5PiBIVFRQQ29va2llQWNjZXB0UG9s
aWN5Q2FsbGJhY2s7Cit0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxjb25zdCBWZWN0b3I8V2ViQ29y
ZTo6Q29va2llPiY+IEdldENvb2tpZXNDYWxsYmFjazsKIAogY2xhc3MgV2ViQ29va2llTWFuYWdl
clByb3h5IDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6Q29va2ll
TWFuYWdlcj4sIHB1YmxpYyBXZWJDb250ZXh0U3VwcGxlbWVudCwgcHJpdmF0ZSBJUEM6Ok1lc3Nh
Z2VSZWNlaXZlciB7CiBwdWJsaWM6CkBAIC02NiwxNCArNjcsMjAgQEAgcHVibGljOgogICAgIHZv
aWQgaW5pdGlhbGl6ZUNsaWVudChjb25zdCBXS0Nvb2tpZU1hbmFnZXJDbGllbnRCYXNlKik7CiAg
ICAgCiAgICAgdm9pZCBnZXRIb3N0bmFtZXNXaXRoQ29va2llcyhXZWJDb3JlOjpTZXNzaW9uSUQs
IEZ1bmN0aW9uPHZvaWQgKEFQSTo6QXJyYXkqLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7Cisg
ICAgdm9pZCBkZWxldGVDb29raWUoV2ViQ29yZTo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpD
b29raWUmLCBGdW5jdGlvbjx2b2lkIChDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CiAgICAgdm9p
ZCBkZWxldGVDb29raWVzRm9ySG9zdG5hbWUoV2ViQ29yZTo6U2Vzc2lvbklELCBjb25zdCBTdHJp
bmcmIGhvc3RuYW1lKTsKICAgICB2b2lkIGRlbGV0ZUFsbENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lv
bklEKTsKLSAgICB2b2lkIGRlbGV0ZUFsbENvb2tpZXNNb2RpZmllZFNpbmNlKFdlYkNvcmU6OlNl
c3Npb25JRCwgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCk7CisgICAgdm9p
ZCBkZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZShXZWJDb3JlOjpTZXNzaW9uSUQsIHN0ZDo6
Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQsIEZ1bmN0aW9uPHZvaWQgKENhbGxiYWNr
QmFzZTo6RXJyb3IpPiYmKTsKIAotICAgIHZvaWQgc2V0Q29va2llcyhXZWJDb3JlOjpTZXNzaW9u
SUQsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiwgY29uc3QgV2ViQ29yZTo6VVJMJiwg
Y29uc3QgV2ViQ29yZTo6VVJMJiBtYWluRG9jdW1lbnRVUkwpOworICAgIHZvaWQgc2V0Q29va2ll
KFdlYkNvcmU6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6Q29va2llJiwgRnVuY3Rpb248dm9p
ZCAoQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOworICAgIHZvaWQgc2V0Q29va2llcyhXZWJDb3Jl
OjpTZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiwgY29uc3QgV2ViQ29y
ZTo6VVJMJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBtYWluRG9jdW1lbnRVUkwsIEZ1bmN0aW9uPHZv
aWQgKENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKKworICAgIHZvaWQgZ2V0QWxsQ29va2llcyhX
ZWJDb3JlOjpTZXNzaW9uSUQsIEZ1bmN0aW9uPHZvaWQgKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpD
b29raWU+JiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY29tcGxldGlvbkhhbmRsZXIpOworICAg
IHZvaWQgZ2V0Q29va2llcyhXZWJDb3JlOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OlVSTCYs
IEZ1bmN0aW9uPHZvaWQgKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiwgQ2FsbGJhY2tC
YXNlOjpFcnJvcik+JiYgY29tcGxldGlvbkhhbmRsZXIpOworCisgICAgdm9pZCBzZXRIVFRQQ29v
a2llQWNjZXB0UG9saWN5KFdlYkNvcmU6OlNlc3Npb25JRCwgSFRUUENvb2tpZUFjY2VwdFBvbGlj
eSwgRnVuY3Rpb248dm9pZCAoQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOworICAgIHZvaWQgZ2V0
SFRUUENvb2tpZUFjY2VwdFBvbGljeShXZWJDb3JlOjpTZXNzaW9uSUQsIEZ1bmN0aW9uPHZvaWQg
KEhUVFBDb29raWVBY2NlcHRQb2xpY3ksIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKIAotICAg
IHZvaWQgc2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShIVFRQQ29va2llQWNjZXB0UG9saWN5KTsK
LSAgICB2b2lkIGdldEhUVFBDb29raWVBY2NlcHRQb2xpY3koRnVuY3Rpb248dm9pZCAoSFRUUENv
b2tpZUFjY2VwdFBvbGljeSwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+KTsKICAgICB2b2lkIHNldENv
b2tpZVN0b3JhZ2VQYXJ0aXRpb25pbmdFbmFibGVkKGJvb2wpOwogCiAgICAgdm9pZCBzdGFydE9i
c2VydmluZ0Nvb2tpZUNoYW5nZXMoV2ViQ29yZTo6U2Vzc2lvbklEKTsKQEAgLTk1LDYgKzEwMiwx
MSBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkR2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoY29uc3Qg
VmVjdG9yPFN0cmluZz4mLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKICAgICB2b2lkIGRpZEdldEhU
VFBDb29raWVBY2NlcHRQb2xpY3kodWludDMyX3QgcG9saWN5LCB1aW50NjRfdCBjYWxsYmFja0lE
KTsKIAorICAgIHZvaWQgZGlkU2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSh1aW50NjRfdCBjYWxs
YmFja0lEKTsKKyAgICB2b2lkIGRpZFNldENvb2tpZXModWludDY0X3QgY2FsbGJhY2tJRCk7Cisg
ICAgdm9pZCBkaWRHZXRDb29raWVzKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiwgdWlu
dDY0X3QgY2FsbGJhY2tJRCk7CisgICAgdm9pZCBkaWREZWxldGVDb29raWVzKHVpbnQ2NF90IGNh
bGxiYWNrSUQpOworCiAgICAgdm9pZCBjb29raWVzRGlkQ2hhbmdlKFdlYkNvcmU6OlNlc3Npb25J
RCk7CiAKICAgICAvLyBXZWJDb250ZXh0U3VwcGxlbWVudApAQCAtMTEzLDYgKzEyNSw4IEBAIHBy
aXZhdGU6CiAKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8QXJyYXlDYWxsYmFjaz4+IG1f
YXJyYXlDYWxsYmFja3M7CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPEhUVFBDb29raWVB
Y2NlcHRQb2xpY3lDYWxsYmFjaz4+IG1faHR0cENvb2tpZUFjY2VwdFBvbGljeUNhbGxiYWNrczsK
KyAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8Vm9pZENhbGxiYWNrPj4gbV92b2lkQ2FsbGJh
Y2tzOworICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxHZXRDb29raWVzQ2FsbGJhY2s+PiBt
X2dldENvb2tpZXNDYWxsYmFja3M7CiAKICAgICBIYXNoTWFwPFdlYkNvcmU6OlNlc3Npb25JRCwg
c3RkOjpmdW5jdGlvbjx2b2lkICgpPj4gbV9jb29raWVPYnNlcnZlcnM7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkubWVzc2FnZXMu
aW4gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5Lm1lc3Nh
Z2VzLmluCmluZGV4IDEyZTAwOTAxOGI3Li5kY2NiY2YyOWUwNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5Lm1lc3NhZ2Vz
LmluCkBAIC0yMyw2ICsyMywxMSBAQAogbWVzc2FnZXMgLT4gV2ViQ29va2llTWFuYWdlclByb3h5
IHsKICAgICBEaWRHZXRIb3N0bmFtZXNXaXRoQ29va2llcyhWZWN0b3I8U3RyaW5nPiBob3N0bmFt
ZXMsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwogICAgIERpZEdldEhUVFBDb29raWVBY2NlcHRQb2xp
Y3kodWludDMyX3QgcG9saWN5LCB1aW50NjRfdCBjYWxsYmFja0lEKTsKLSAgICAKKworICAgIERp
ZFNldEhUVFBDb29raWVBY2NlcHRQb2xpY3kodWludDY0X3QgY2FsbGJhY2tJRCk7CisgICAgRGlk
RGVsZXRlQ29va2llcyh1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICBEaWRTZXRDb29raWVzKHVp
bnQ2NF90IGNhbGxiYWNrSUQpOworICAgIERpZEdldENvb2tpZXMoVmVjdG9yPFdlYkNvcmU6OkNv
b2tpZT4gY29va2llcywgdWludDY0X3QgY2FsbGJhY2tJRCk7CisKICAgICBDb29raWVzRGlkQ2hh
bmdlKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYkZyYW1lUHJveHkuaAppbmRleCA2YmY5OTM4NjJiNy4uNTViNWI2N2UwYjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmgKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuaApAQCAtMzEsNiArMzEsNyBAQAog
I2luY2x1ZGUgIldlYkZyYW1lTGlzdGVuZXJQcm94eS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRnJh
bWVMb2FkZXJUeXBlcy5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3Rm
L0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQb29sLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5jcHAKaW5kZXggZjY5NjIzMWJhMDUuLmFhYzZiYTViM2MxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNs
dWRlICJBUElBdXRvbWF0aW9uQ2xpZW50LmgiCiAjaW5jbHVkZSAiQVBJQ3VzdG9tUHJvdG9jb2xN
YW5hZ2VyQ2xpZW50LmgiCiAjaW5jbHVkZSAiQVBJRG93bmxvYWRDbGllbnQuaCIKKyNpbmNsdWRl
ICJBUElIVFRQQ29va2llU3RvcmFnZS5oIgogI2luY2x1ZGUgIkFQSUxlZ2FjeUNvbnRleHRIaXN0
b3J5Q2xpZW50LmgiCiAjaW5jbHVkZSAiQVBJUGFnZUNvbmZpZ3VyYXRpb24uaCIKICNpbmNsdWRl
ICJBUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQb29sLmgKaW5kZXggODg1YWQzY2ViYjMuLmUwZTE5MjZkNTNlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaApAQCAtNzYsNiArNzYsNyBAQCBu
YW1lc3BhY2UgQVBJIHsKIGNsYXNzIEF1dG9tYXRpb25DbGllbnQ7CiBjbGFzcyBDdXN0b21Qcm90
b2NvbE1hbmFnZXJDbGllbnQ7CiBjbGFzcyBEb3dubG9hZENsaWVudDsKK2NsYXNzIEhUVFBDb29r
aWVTdG9yYWdlOwogY2xhc3MgTGVnYWN5Q29udGV4dEhpc3RvcnlDbGllbnQ7CiBjbGFzcyBQYWdl
Q29uZmlndXJhdGlvbjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAppbmRleCA3YmFhZjg1NDU0Mi4uY2Y3
N2VlYzE0NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0
YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
c2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRl
ICJBUElXZWJzaXRlRGF0YVJlY29yZC5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzTWVzc2Fn
ZXMuaCIKICNpbmNsdWRlICJTdG9yYWdlTWFuYWdlci5oIgorI2luY2x1ZGUgIldlYkNvb2tpZU1h
bmFnZXJQcm94eS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUg
IldlYlByb2Nlc3NQb29sLmgiCiAjaW5jbHVkZSAiV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlLmgiCkBAIC0xMDUsNiArMTA2LDI3IEBAIFdlYnNpdGVEYXRhU3RvcmU6On5XZWJzaXRlRGF0
YVN0b3JlKCkKICAgICB9CiB9CiAKK1JlZjxXZWJQcm9jZXNzUG9vbD4gV2Vic2l0ZURhdGFTdG9y
ZTo6cHJvY2Vzc1Bvb2xGb3JDb29raWVTdG9yYWdlT3BlcmF0aW9ucygpCit7CisgICAgLy8gT3Vy
IGNvbmNlcHRzIG9mIFdlYlByb2Nlc3MsIFdlYlByb2Nlc3NQb29sLCBXZWJzaXRlRGF0YVN0b3Jl
LCBhbmQgU2Vzc2lvbklEcyBoYXZlIGFsbCBzdGFydGVkIHRvIG92ZXJsYXAKKyAgICAvLyB3aXRo
b3V0IGNsZWFyIGRpdmlzaW9ucyBvZiByZXNwb25zaWJpbGl0aWVzLgorICAgIC8vIEluIHByYWN0
aWNlLCBtdWx0aXBsZSBXZWJQcm9jZXNzUG9vbHMgY2FuIGNvbnRhaW4gInRoZSBzYW1lIHNlc3Np
b24iLCBlc3BlY2lhbGx5IHNpbmNlIHRoZXJlIGlzIGN1cnJlbnRseQorICAgIC8vIG9ubHkgYSBz
aW5nbGUgZGVmYXVsdCBnbG9iYWwgU2Vzc2lvbklELgorICAgIC8vCisgICAgLy8gVGhpcyBtZWFu
cyB0aGF0IG11bHRpcGxlIE5ldHdvcmtQcm9jZXNzZXMgY2FuIGJlIHVzaW5nIHRoZSBzYW1lIHNl
c3Npb24sIHdoaWNoIG1lYW5zIHRoYXQgbXVsdGlwbGUKKyAgICAvLyBOZXR3b3JrUHJvY2Vzc2Vz
IGNhbiBiZSByZWZlcnJpbmcgdG8gdGhlIHNhbWUgcGxhdGZvcm0gY29va2llIHN0b3JhZ2UuCisg
ICAgLy8KKyAgICAvLyBXaGlsZSB0aGlzIG1heSBjYXVzZSBjb21wbGljYXRpb25zIHdpdGggZnV0
dXJlIEFQSXMgaXQgaXMgYWN0dWFsbHkgZmluZSBmb3IgaW1wbGVtZW50aW5nIHRoZSBXS0hUVFBD
b29raWVTdG9yYWdlIEFQSQorICAgIC8vIGJlY2F1c2Ugd2Ugb25seSBuZWVkIG9uZSBOZXR3b3Jr
UHJvY2VzcyB0byBzdWNjZXNzZnVsbHkgbWFrZSBhIHJlcXVlc3RlZCBwbGF0Zm9ybSBjb29raWUg
c3RvcmFnZSBjaGFuZ2UuCisgICAgLy8KKyAgICAvLyBGSVhNRTogV2UgbmVlZCB0byBzdGFydCB0
byB1bnJhdmVsIHRoaXMgbWVzcyBnb2luZyBmb3J3YXJkLgorCisgICAgYXV0byBwb29scyA9IHBy
b2Nlc3NQb29scygxKTsKKyAgICBBU1NFUlQoIXBvb2xzLmlzRW1wdHkoKSk7CisKKyAgICByZXR1
cm4gKipwb29scy5iZWdpbigpOworfQorCiB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnJlc29sdmVE
aXJlY3Rvcmllc0lmTmVjZXNzYXJ5KCkKIHsKICAgICBpZiAobV9oYXNSZXNvbHZlZERpcmVjdG9y
aWVzKQpAQCAtMTEwOCw3ICsxMTMwLDcgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjp3ZWJQcm9j
ZXNzRGlkQ2xvc2VDb25uZWN0aW9uKFdlYlByb2Nlc3NQcm94eSYgd2ViUHJvY2Vzc1AKICAgICAg
ICAgbV9zdG9yYWdlTWFuYWdlci0+cHJvY2Vzc0RpZENsb3NlQ29ubmVjdGlvbih3ZWJQcm9jZXNz
UHJveHksIGNvbm5lY3Rpb24pOwogfQogCi1IYXNoU2V0PFJlZlB0cjxXZWJQcm9jZXNzUG9vbD4+
IFdlYnNpdGVEYXRhU3RvcmU6OnByb2Nlc3NQb29scygpIGNvbnN0CitIYXNoU2V0PFJlZlB0cjxX
ZWJQcm9jZXNzUG9vbD4+IFdlYnNpdGVEYXRhU3RvcmU6OnByb2Nlc3NQb29scyhzaXplX3QgY291
bnQpIGNvbnN0CiB7CiAgICAgSGFzaFNldDxSZWZQdHI8V2ViUHJvY2Vzc1Bvb2w+PiBwcm9jZXNz
UG9vbHM7CiAgICAgZm9yIChhdXRvJiBwcm9jZXNzIDogcHJvY2Vzc2VzKCkpCkBAIC0xMTIyLDEx
ICsxMTQ0LDIwIEBAIEhhc2hTZXQ8UmVmUHRyPFdlYlByb2Nlc3NQb29sPj4gV2Vic2l0ZURhdGFT
dG9yZTo6cHJvY2Vzc1Bvb2xzKCkgY29uc3QKICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc1Bv
b2xzLmFkZChwcm9jZXNzUG9vbCk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSBpZiAoJkFQSTo6V2Vic2l0ZURhdGFTdG9y
ZTo6ZGVmYXVsdERhdGFTdG9yZSgpLT53ZWJzaXRlRGF0YVN0b3JlKCkgPT0gdGhpcykgeworICAg
ICAgICAgICAgICAgIC8vIElmIGEgcHJvY2VzcyBwb29sIGRvZXNuJ3QgaGF2ZSBhbiBleHBsaWNp
dCBkYXRhIHN0b3JlIGFuZCB0aGlzIGlzIHRoZSBkZWZhdWx0IFdlYnNpdGVEYXRhU3RvcmUsCisg
ICAgICAgICAgICAgICAgLy8gYWRkIHRoYXQgcHJvY2VzcyBwb29sIHRvIHRoZSBzZXQuCisgICAg
ICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgYmVoYXZpb3IgaXMgd2VpcmQgYW5kIG5lY2Vzc2l0
YXRlZCBieSB0aGUgZmFjdCB0aGF0IHByb2Nlc3MgcG9vbHMgZG9uJ3QgYWx3YXlzCisgICAgICAg
ICAgICAgICAgLy8gaGF2ZSBhIGRhdGEgc3RvcmU7IFRoZXkgc2hvdWxkLgorICAgICAgICAgICAg
ICAgIHByb2Nlc3NQb29scy5hZGQocHJvY2Vzc1Bvb2wpOwogICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBpZiAocHJvY2Vzc1Bvb2xzLnNpemUoKSA9PSBjb3VudCkKKyAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmIChwcm9jZXNzUG9vbHMuaXNFbXB0
eSgpKSB7CisgICAgaWYgKHByb2Nlc3NQb29scy5pc0VtcHR5KCkgJiYgY291bnQpIHsKICAgICAg
ICAgYXV0byBwcm9jZXNzUG9vbCA9IFdlYlByb2Nlc3NQb29sOjpjcmVhdGUoQVBJOjpQcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb246OmNyZWF0ZVdpdGhXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlv
bihtX2NvbmZpZ3VyYXRpb24pKTsKICAgICAgICAgcHJvY2Vzc1Bvb2xzLmFkZChwcm9jZXNzUG9v
bC5wdHIoKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKaW5kZXggOTc1YmFjOGQ4OWIuLjhkMTNiY2U0
OTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vi
c2l0ZURhdGFTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0
YS9XZWJzaXRlRGF0YVN0b3JlLmgKQEAgLTEwMyw2ICsxMDMsOCBAQCBwdWJsaWM6CiAKICAgICBT
dG9yYWdlTWFuYWdlciogc3RvcmFnZU1hbmFnZXIoKSB7IHJldHVybiBtX3N0b3JhZ2VNYW5hZ2Vy
LmdldCgpOyB9CiAKKyAgICBSZWY8V2ViUHJvY2Vzc1Bvb2w+IHByb2Nlc3NQb29sRm9yQ29va2ll
U3RvcmFnZU9wZXJhdGlvbnMoKTsKKwogcHJpdmF0ZToKICAgICBleHBsaWNpdCBXZWJzaXRlRGF0
YVN0b3JlKFdlYkNvcmU6OlNlc3Npb25JRCk7CiAgICAgZXhwbGljaXQgV2Vic2l0ZURhdGFTdG9y
ZShDb25maWd1cmF0aW9uKTsKQEAgLTExOSw3ICsxMjEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
cGxhdGZvcm1EZXN0cm95KCk7CiAgICAgc3RhdGljIHZvaWQgcGxhdGZvcm1SZW1vdmVSZWNlbnRT
ZWFyY2hlcyhzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50KTsKIAotICAgIEhh
c2hTZXQ8UmVmUHRyPFdlYlByb2Nlc3NQb29sPj4gcHJvY2Vzc1Bvb2xzKCkgY29uc3Q7CisgICAg
SGFzaFNldDxSZWZQdHI8V2ViUHJvY2Vzc1Bvb2w+PiBwcm9jZXNzUG9vbHMoc2l6ZV90IGNvdW50
ID0gc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSkgY29uc3Q7CiAKICNpZiBFTkFC
TEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKICAgICBWZWN0b3I8UGx1Z2luTW9kdWxlSW5mbz4gcGx1
Z2lucygpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IDdlMTg4MjJmMDRkLi45YzYzZjY4MzJmOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTA2Myw2
ICsxMDYzLDkgQEAKIAkJNTFEMTI0MzUxRTZERjY1MjAwMkIyODIwIC8qIFdLVVJMU2NoZW1lSGFu
ZGxlclRhc2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxRDEyNDJGMUU2RERERDcwMDJCMjgyMCAvKiBXS1VSTFNjaGVtZUhhbmRsZXJUYXNrLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OwogCQk1MUQxMjQzNjFF
NkRGQjM5MDAyQjI4MjAgLyogV0tVUkxTY2hlbWVIYW5kbGVyVGFzay5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRDEyNDMwMUU2RERERDcwMDJCMjgy
MCAvKiBXS1VSTFNjaGVtZUhhbmRsZXJUYXNrLm1tICovOyB9OwogCQk1MUQxMjQzQTFFNkUwQUFC
MDAyQjI4MjAgLyogQVBJVVJMU2NoZW1lSGFuZGxlclRhc2suY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFEMTI0MzgxRTZERkRCOTAwMkIyODIwIC8q
IEFQSVVSTFNjaGVtZUhhbmRsZXJUYXNrLmNwcCAqLzsgfTsKKwkJNTFEMTI0OTExRTc0QkYzQzAw
MkIyODIwIC8qIEFQSUhUVFBDb29raWVTdG9yYWdlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRDEyNDgyMUU3MzRBQzgwMDJCMjgyMCAvKiBBUElI
VFRQQ29va2llU3RvcmFnZS5jcHAgKi87IH07CisJCTUxRDEyNDkyMUU3NEJGNDgwMDJCMjgyMCAv
KiBfV0tIVFRQQ29va2llU3RvcmFnZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxRDEyNDg1MUU3MzRBRTMwMDJCMjgyMCAvKiBfV0tIVFRQQ29va2ll
U3RvcmFnZS5tbSAqLzsgfTsKKwkJNTFEMTI0OTkxRTc2M0MwMTAwMkIyODIwIC8qIF9XS0hUVFBD
b29raWVTdG9yYWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MUQxMjQ4NDFFNzM0QUUzMDAyQjI4MjAgLyogX1dLSFRUUENvb2tpZVN0b3JhZ2UuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MUQxMzA1
MzEzODJFQUMwMDAzNTFFREQgLyogU2VjSXRlbVJlcXVlc3REYXRhLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRDEzMDRGMTM4MkVBQzAwMDM1MUVE
RCAvKiBTZWNJdGVtUmVxdWVzdERhdGEuY3BwICovOyB9OwogCQk1MUQxMzA1NDEzODJFQUMwMDAz
NTFFREQgLyogU2VjSXRlbVJlcXVlc3REYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MUQxMzA1MDEzODJFQUMwMDAzNTFFREQgLyogU2VjSXRlbVJl
cXVlc3REYXRhLmggKi87IH07CiAJCTUxRDEzMDU1MTM4MkVBQzAwMDM1MUVERCAvKiBTZWNJdGVt
UmVzcG9uc2VEYXRhLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxRDEzMDUxMTM4MkVBQzAwMDM1MUVERCAvKiBTZWNJdGVtUmVzcG9uc2VEYXRhLmNw
cCAqLzsgfTsKQEAgLTMyODUsNiArMzI4OCwxMSBAQAogCQk1MUQxMjQzNzFFNkRGRDJBMDAyQjI4
MjAgLyogV0tVUkxTY2hlbWVIYW5kbGVyVGFza0ludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdLVVJMU2NoZW1lSGFuZGxlclRhc2tJbnRlcm5hbC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1MUQxMjQzODFFNkRGREI5MDAyQjI4MjAgLyogQVBJVVJM
U2NoZW1lSGFuZGxlclRhc2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQVBJVVJMU2NoZW1lSGFuZGxlclRhc2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1MUQxMjQzOTFFNkRGREI5MDAyQjI4MjAgLyogQVBJVVJMU2NoZW1lSGFuZGxlclRhc2su
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJVVJMU2NoZW1lSGFuZGxlclRh
c2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFEMTI0ODIxRTczNEFDODAwMkIy
ODIwIC8qIEFQSUhUVFBDb29raWVTdG9yYWdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEFQSUhUVFBDb29raWVTdG9yYWdlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNTFEMTI0ODMxRTczNEFDODAwMkIyODIwIC8qIEFQSUhUVFBDb29raWVTdG9y
YWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFQSUhUVFBDb29raWVTdG9y
YWdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxRDEyNDg0MUU3MzRBRTMwMDJC
MjgyMCAvKiBfV0tIVFRQQ29va2llU3RvcmFnZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBfV0tIVFRQQ29va2llU3RvcmFnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk1MUQxMjQ4NTFFNzM0QUUzMDAyQjI4MjAgLyogX1dLSFRUUENvb2tpZVN0b3JhZ2UubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBfV0tIVFRQQ29va2llU3Rv
cmFnZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFEMTI0ODYxRTczNEFFMzAw
MkIyODIwIC8qIF9XS0hUVFBDb29raWVTdG9yYWdlSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gX1dLSFRUUENvb2tpZVN0b3JhZ2VJbnRlcm5hbC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1MUQxMzA0RjEzODJFQUMwMDAzNTFFREQgLyogU2VjSXRl
bVJlcXVlc3REYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNl
Y0l0ZW1SZXF1ZXN0RGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxRDEz
MDUwMTM4MkVBQzAwMDM1MUVERCAvKiBTZWNJdGVtUmVxdWVzdERhdGEuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU2VjSXRlbVJlcXVlc3REYXRhLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTUxRDEzMDUxMTM4MkVBQzAwMDM1MUVERCAvKiBTZWNJdGVtUmVzcG9u
c2VEYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNlY0l0ZW1S
ZXNwb25zZURhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTQ3OCw2ICs1
NDg2LDkgQEAKIAkJCQkyRTdBOTQ0OTFCQkQ5NUM2MDA5NDU1NDcgLyogX1dLRm9jdXNlZEVsZW1l
bnRJbmZvLmggKi8sCiAJCQkJMzdBNjRFNTYxOEYzOEY0NjAwRUIzMEYxIC8qIF9XS0Zvcm1JbnB1
dFNlc3Npb24uaCAqLywKIAkJCQlDRDc4RTExODFEQjdFNUFEMDAxNEEyREUgLyogX1dLRnVsbHNj
cmVlbkRlbGVnYXRlLmggKi8sCisJCQkJNTFEMTI0ODQxRTczNEFFMzAwMkIyODIwIC8qIF9XS0hU
VFBDb29raWVTdG9yYWdlLmggKi8sCisJCQkJNTFEMTI0ODUxRTczNEFFMzAwMkIyODIwIC8qIF9X
S0hUVFBDb29raWVTdG9yYWdlLm1tICovLAorCQkJCTUxRDEyNDg2MUU3MzRBRTMwMDJCMjgyMCAv
KiBfV0tIVFRQQ29va2llU3RvcmFnZUludGVybmFsLmggKi8sCiAJCQkJNTE0M0IyNUUxRERDREZE
MTAwMTRGQUM2IC8qIF9XS0ljb25Mb2FkaW5nRGVsZWdhdGUuaCAqLywKIAkJCQkzN0E2NEU1NDE4
RjM4RTNDMDBFQjMwRjEgLyogX1dLSW5wdXREZWxlZ2F0ZS5oICovLAogCQkJCTJENzkwQTlDMUFE
NzA1MEQwMEFCOTBCMyAvKiBfV0tMYXlvdXRNb2RlLmggKi8sCkBAIC02NzMyLDYgKzY3NDMsOCBA
QAogCQkJCTJEQUJBNzc1MUE4MkI0MjEwMEVGMEYxQSAvKiBBUElIaXN0b3J5Q2xpZW50LmggKi8s
CiAJCQkJOTNBODhCNDIxQkM4ODI4QzAwQUJBNUMyIC8qIEFQSUhpdFRlc3RSZXN1bHQuY3BwICov
LAogCQkJCTkzQTg4QjQzMUJDODgyOEMwMEFCQTVDMiAvKiBBUElIaXRUZXN0UmVzdWx0LmggKi8s
CisJCQkJNTFEMTI0ODIxRTczNEFDODAwMkIyODIwIC8qIEFQSUhUVFBDb29raWVTdG9yYWdlLmNw
cCAqLywKKwkJCQk1MUQxMjQ4MzFFNzM0QUM4MDAyQjI4MjAgLyogQVBJSFRUUENvb2tpZVN0b3Jh
Z2UuaCAqLywKIAkJCQk1MTQzQjI2MTFEREQwREEwMDAxNEZBQzYgLyogQVBJSWNvbkxvYWRpbmdD
bGllbnQuaCAqLywKIAkJCQk3Q0U0RDIwNjFBNDY3NzU3MDBDN0YxNTIgLyogQVBJTGVnYWN5Q29u
dGV4dEhpc3RvcnlDbGllbnQuaCAqLywKIAkJCQkxQTI0NjRGMjE4OTFFNDUxMDAyMzRDNUIgLyog
QVBJTG9hZGVyQ2xpZW50LmggKi8sCkBAIC04NTE1LDYgKzg1MjgsNyBAQAogCQkJCTUxNDEyOTk0
MUM2NDI4QkIwMDU5RTcxNCAvKiBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTUxMDUyMzc0MUM3M0QzOEIwMDc5OTNDQiAvKiBXZWJJREJDb25uZWN0aW9uVG9T
ZXJ2ZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNDRjZBQkQxMkM5MUVGOTAwOEY5
QzM1IC8qIFdlYkltYWdlLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MUQxMjQ5OTFFNzYzQzAxMDAy
QjI4MjAgLyogX1dLSFRUUENvb2tpZVN0b3JhZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTFDOEUy
ODIwMTI3NUQxNTQwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUJDMDMyRDgyMTBGNDM3OEQwMDU4QzE1QSAvKiBXZWJJbnNwZWN0b3JDbGllbnQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUE1NUJBODM1MUJBM0U3MEEwMDdDRDMzRCAvKiBXZWJJbnNwZWN0b3JGcm9u
dGVuZEFQSURpc3BhdGNoZXIuaCBpbiBIZWFkZXJzICovLApAQCAtOTc2Nyw2ICs5NzgxLDcgQEAK
IAkJCQkxQTZGQkEyQjExRTY4NjI3MDBEQjEzNzEgLyogTmV0c2NhcGVCcm93c2VyRnVuY3MuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMUE2RkJEMjkxMUU2OUJDMjAwREIxMzcxIC8qIE5ldHNjYXBl
UGx1Z2luLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBRTVCN0ZCMTFFN0FFRDIwMEJBNjc2NyAv
KiBOZXRzY2FwZVBsdWdpbk1hYy5tbSBpbiBTb3VyY2VzICovLAorCQkJCTUxRDEyNDkyMUU3NEJG
NDgwMDJCMjgyMCAvKiBfV0tIVFRQQ29va2llU3RvcmFnZS5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTFBNEE5QzU1MTJCODE2Q0YwMDhGRTk4NCAvKiBOZXRzY2FwZVBsdWdpbk1vZHVsZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk4MzlBMkYzMTFFMjA2NzQ1MDAzOTA1N0UgLyogSGlnaFBlcmZvcm1h
bmNlR3JhcGhpY3NVc2FnZVNhbXBsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE0QTlDOUEx
MkI4MjFDRDAwOEZFOTg0IC8qIE5ldHNjYXBlUGx1Z2luTW9kdWxlTWFjLm1tIGluIFNvdXJjZXMg
Ki8sCkBAIC05Nzg1LDYgKzk4MDAsNyBAQAogCQkJCTgzMUVFQkJFMUJEODVDNDMwMEJCNjRDMyAv
KiBOZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODMy
QUUyNTMxQkUyRThDRDAwRkFBRTEwIC8qIE5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZE1hbmFn
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODNCRENDQjkxQUM1RkRCNjAwM0Y2NDQxIC8qIE5l
dHdvcmtDYWNoZVN0YXRpc3RpY3MuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTFEMTI0OTExRTc0
QkYzQzAwMkIyODIwIC8qIEFQSUhUVFBDb29raWVTdG9yYWdlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUU0NDM2RUQwMUEwRDA0MEIwMEVBRDIwNCAvKiBOZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTgzMTA0MjhDMUJENkI2NkYwMEE3MTVFNCAvKiBOZXR3b3JrQ2Fj
aGVTdWJyZXNvdXJjZXNFbnRyeS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MzAyNTgzRDFEQ0JC
RDIyMDBEQTg5QzIgLyogTmV0d29ya0NhcHR1cmVFdmVudC5jcHAgaW4gU291cmNlcyAqLywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5h
Z2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5h
Z2VyLmNwcAppbmRleCA5ZTIxZjc4Y2NkYi4uNzU0M2EyOWQ4YmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5jcHAKQEAg
LTcyLDIyICs3Miw2NCBAQCB2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmRlbGV0ZUNvb2tpZXNGb3JI
b3N0bmFtZShTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbgogICAgICAgICBXZWJDb3Jl
OjpkZWxldGVDb29raWVzRm9ySG9zdG5hbWVzKCpzdG9yYWdlU2Vzc2lvbiwgeyBob3N0bmFtZSB9
KTsKIH0KIAorCiB2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmRlbGV0ZUFsbENvb2tpZXMoU2Vzc2lv
bklEIHNlc3Npb25JRCkKIHsKICAgICBpZiAoYXV0byogc3RvcmFnZVNlc3Npb24gPSBOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCiAgICAgICAgIFdlYkNv
cmU6OmRlbGV0ZUFsbENvb2tpZXMoKnN0b3JhZ2VTZXNzaW9uKTsKIH0KIAotdm9pZCBXZWJDb29r
aWVNYW5hZ2VyOjpkZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZShTZXNzaW9uSUQgc2Vzc2lv
bklELCBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IHRpbWUpCit2b2lkIFdl
YkNvb2tpZU1hbmFnZXI6OmRlbGV0ZUNvb2tpZShTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBD
b29raWUmIGNvb2tpZSwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3sKKyAgICBpZiAoYXV0byogc3Rv
cmFnZVNlc3Npb24gPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKHNlc3Np
b25JRCkpCisgICAgICAgIHN0b3JhZ2VTZXNzaW9uLT5kZWxldGVDb29raWUoY29va2llKTsKKwor
ICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlclByb3h5OjpEaWRE
ZWxldGVDb29raWVzKGNhbGxiYWNrSUQpLCAwKTsKK30KKwordm9pZCBXZWJDb29raWVNYW5hZ2Vy
OjpkZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZShTZXNzaW9uSUQgc2Vzc2lvbklELCBzdGQ6
OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IHRpbWUsIHVpbnQ2NF90IGNhbGxiYWNr
SUQpCiB7CiAgICAgaWYgKGF1dG8qIHN0b3JhZ2VTZXNzaW9uID0gTmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQogICAgICAgICBXZWJDb3JlOjpkZWxldGVB
bGxDb29raWVzTW9kaWZpZWRTaW5jZSgqc3RvcmFnZVNlc3Npb24sIHRpbWUpOworCisgICAgaWYg
KGNhbGxiYWNrSUQpCisgICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViQ29va2ll
TWFuYWdlclByb3h5OjpEaWREZWxldGVDb29raWVzKGNhbGxiYWNrSUQpLCAwKTsKK30KKwordm9p
ZCBXZWJDb29raWVNYW5hZ2VyOjpnZXRBbGxDb29raWVzKFNlc3Npb25JRCBzZXNzaW9uSUQsIHVp
bnQ2NF90IGNhbGxiYWNrSUQpCit7CisgICAgVmVjdG9yPENvb2tpZT4gY29va2llczsKKyAgICBp
ZiAoYXV0byogc3RvcmFnZVNlc3Npb24gPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VT
ZXNzaW9uKHNlc3Npb25JRCkpCisgICAgICAgIGNvb2tpZXMgPSBzdG9yYWdlU2Vzc2lvbi0+Z2V0
QWxsQ29va2llcygpOworCisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJDb29raWVN
YW5hZ2VyUHJveHk6OkRpZEdldENvb2tpZXMoY29va2llcywgY2FsbGJhY2tJRCksIDApOwogfQog
Ci12b2lkIFdlYkNvb2tpZU1hbmFnZXI6OnNldENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgY29uc3QgVmVjdG9yPENvb2tpZT4mIGNvb2tpZXMsIGNvbnN0IFVSTCYgdXJsLCBj
b25zdCBVUkwmIG1haW5Eb2N1bWVudFVSTCkKK3ZvaWQgV2ViQ29va2llTWFuYWdlcjo6Z2V0Q29v
a2llcyhTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIHVybCwgdWludDY0X3QgY2FsbGJh
Y2tJRCkKK3sKKyAgICBWZWN0b3I8Q29va2llPiBjb29raWVzOworICAgIGlmIChhdXRvKiBzdG9y
YWdlU2Vzc2lvbiA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vzc2lv
bklEKSkKKyAgICAgICAgY29va2llcyA9IHN0b3JhZ2VTZXNzaW9uLT5nZXRDb29raWVzKHVybCk7
CisKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6
RGlkR2V0Q29va2llcyhjb29raWVzLCBjYWxsYmFja0lEKSwgMCk7Cit9CisKK3ZvaWQgV2ViQ29v
a2llTWFuYWdlcjo6c2V0Q29va2llKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0
IENvb2tpZSYgY29va2llLCB1aW50NjRfdCBjYWxsYmFja0lEKQoreworICAgIGlmIChhdXRvKiBz
dG9yYWdlU2Vzc2lvbiA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vz
c2lvbklEKSkKKyAgICAgICAgc3RvcmFnZVNlc3Npb24tPnNldENvb2tpZShjb29raWUpOworCisg
ICAgaWYgKGNhbGxiYWNrSUQpCisgICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
Q29va2llTWFuYWdlclByb3h5OjpEaWRTZXRDb29raWVzKGNhbGxiYWNrSUQpLCAwKTsKK30KKwor
dm9pZCBXZWJDb29raWVNYW5hZ2VyOjpzZXRDb29raWVzKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIGNvbnN0IFZlY3RvcjxDb29raWU+JiBjb29raWVzLCBjb25zdCBVUkwmIHVybCwgY29u
c3QgVVJMJiBtYWluRG9jdW1lbnRVUkwsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiB7CiAgICAgaWYg
KGF1dG8qIHN0b3JhZ2VTZXNzaW9uID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vz
c2lvbihzZXNzaW9uSUQpKQogICAgICAgICBzdG9yYWdlU2Vzc2lvbi0+c2V0Q29va2llcyhjb29r
aWVzLCB1cmwsIG1haW5Eb2N1bWVudFVSTCk7CisKKyAgICBpZiAoY2FsbGJhY2tJRCkKKyAgICAg
ICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OkRpZFNl
dENvb2tpZXMoY2FsbGJhY2tJRCksIDApOwogfQogCiB2b2lkIFdlYkNvb2tpZU1hbmFnZXI6Om5v
dGlmeUNvb2tpZXNEaWRDaGFuZ2UoU2Vzc2lvbklEIHNlc3Npb25JRCkKQEAgLTExMSw5ICsxNTMs
MTIgQEAgdm9pZCBXZWJDb29raWVNYW5hZ2VyOjpzdG9wT2JzZXJ2aW5nQ29va2llQ2hhbmdlcyhT
ZXNzaW9uSUQgc2Vzc2lvbklEKQogICAgICAgICBXZWJDb3JlOjpzdG9wT2JzZXJ2aW5nQ29va2ll
Q2hhbmdlcygqc3RvcmFnZVNlc3Npb24pOwogfQogCi12b2lkIFdlYkNvb2tpZU1hbmFnZXI6OnNl
dEhUVFBDb29raWVBY2NlcHRQb2xpY3koSFRUUENvb2tpZUFjY2VwdFBvbGljeSBwb2xpY3kpCit2
b2lkIFdlYkNvb2tpZU1hbmFnZXI6OnNldEhUVFBDb29raWVBY2NlcHRQb2xpY3koSFRUUENvb2tp
ZUFjY2VwdFBvbGljeSBwb2xpY3ksIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiB7CiAgICAgcGxhdGZv
cm1TZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHBvbGljeSk7CisKKyAgICBpZiAoY2FsbGJhY2tJ
RCkKKyAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyUHJv
eHk6OkRpZFNldEhUVFBDb29raWVBY2NlcHRQb2xpY3koY2FsbGJhY2tJRCksIDApOwogfQogCiB2
b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmdldEhUVFBDb29raWVBY2NlcHRQb2xpY3kodWludDY0X3Qg
Y2FsbGJhY2tJRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2ll
cy9XZWJDb29raWVNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Nvb2tpZXMv
V2ViQ29va2llTWFuYWdlci5oCmluZGV4IGRiMjdkMjBhYWRkLi44MTg3NWRhZmI3NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdl
ci5oCkBAIC01Niw3ICs1Niw4IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBz
dXBwbGVtZW50TmFtZSgpOwogCi0gICAgdm9pZCBzZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KEhU
VFBDb29raWVBY2NlcHRQb2xpY3kpOworICAgIHZvaWQgc2V0SFRUUENvb2tpZUFjY2VwdFBvbGlj
eShIVFRQQ29va2llQWNjZXB0UG9saWN5LCB1aW50NjRfdCBjYWxsYmFja0lEKTsKKwogI2lmIFVT
RShTT1VQKQogICAgIHZvaWQgc2V0Q29va2llUGVyc2lzdGVudFN0b3JhZ2UoY29uc3QgU3RyaW5n
JiBzdG9yYWdlUGF0aCwgdWludDMyX3Qgc3RvcmFnZVR5cGUpOwogI2VuZGlmCkBAIC02OCwxMSAr
NjksMTYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBnZXRIb3N0bmFtZXNX
aXRoQ29va2llcyhXZWJDb3JlOjpTZXNzaW9uSUQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOworCisg
ICAgdm9pZCBkZWxldGVDb29raWUoV2ViQ29yZTo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpD
b29raWUmLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKICAgICB2b2lkIGRlbGV0ZUNvb2tpZXNGb3JI
b3N0bmFtZShXZWJDb3JlOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgZGVs
ZXRlQWxsQ29va2llcyhXZWJDb3JlOjpTZXNzaW9uSUQpOwotICAgIHZvaWQgZGVsZXRlQWxsQ29v
a2llc01vZGlmaWVkU2luY2UoV2ViQ29yZTo6U2Vzc2lvbklELCBzdGQ6OmNocm9ubzo6c3lzdGVt
X2Nsb2NrOjp0aW1lX3BvaW50KTsKKyAgICB2b2lkIGRlbGV0ZUFsbENvb2tpZXNNb2RpZmllZFNp
bmNlKFdlYkNvcmU6OlNlc3Npb25JRCwgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9w
b2ludCwgdWludDY0X3QgY2FsbGJhY2tJRCk7CiAKLSAgICB2b2lkIHNldENvb2tpZXMoV2ViQ29y
ZTo6U2Vzc2lvbklELCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYsIGNvbnN0IFdlYkNv
cmU6OlVSTCYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgbWFpbkRvY3VtZW50VVJMKTsKKyAgICB2b2lk
IHNldENvb2tpZShXZWJDb3JlOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OkNvb2tpZSYsIHVp
bnQ2NF90IGNhbGxiYWNrSUQpOworICAgIHZvaWQgc2V0Q29va2llcyhXZWJDb3JlOjpTZXNzaW9u
SUQsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiwgY29uc3QgV2ViQ29yZTo6VVJMJiwg
Y29uc3QgV2ViQ29yZTo6VVJMJiBtYWluRG9jdW1lbnRVUkwsIHVpbnQ2NF90IGNhbGxiYWNrSUQp
OworICAgIHZvaWQgZ2V0QWxsQ29va2llcyhXZWJDb3JlOjpTZXNzaW9uSUQsIHVpbnQ2NF90IGNh
bGxiYWNrSUQpOworICAgIHZvaWQgZ2V0Q29va2llcyhXZWJDb3JlOjpTZXNzaW9uSUQsIGNvbnN0
IFdlYkNvcmU6OlVSTCYsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwogCiAgICAgdm9pZCBwbGF0Zm9y
bVNldEhUVFBDb29raWVBY2NlcHRQb2xpY3koSFRUUENvb2tpZUFjY2VwdFBvbGljeSk7CiAgICAg
dm9pZCBnZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHVpbnQ2NF90IGNhbGxiYWNrSUQpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFn
ZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29v
a2llTWFuYWdlci5tZXNzYWdlcy5pbgppbmRleCAwMGU3YjY1Yjc0OS4uMGE1ODU1NWVjNmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5h
Z2VyLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2llcy9X
ZWJDb29raWVNYW5hZ2VyLm1lc3NhZ2VzLmluCkBAIC0yNywxMSArMjcsMTUgQEAKICAgICB2b2lk
IEdldEhvc3RuYW1lc1dpdGhDb29raWVzKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVp
bnQ2NF90IGNhbGxiYWNrSUQpCiAgICAgdm9pZCBEZWxldGVDb29raWVzRm9ySG9zdG5hbWUoV2Vi
Q29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgU3RyaW5nIGhvc3RuYW1lKQogICAgIHZvaWQgRGVs
ZXRlQWxsQ29va2llcyhXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQotICAgIHZvaWQgRGVs
ZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2UoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
c3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCB0aW1lKQogCi0gICAgdm9pZCBT
ZXRDb29raWVzKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFZlY3RvcjxXZWJDb3JlOjpD
b29raWU+IGNvb2tpZXMsIFdlYkNvcmU6OlVSTCB1cmwsIFdlYkNvcmU6OlVSTCBtYWluRG9jdW1l
bnRVUkwpOworICAgIHZvaWQgU2V0Q29va2llKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IHN0cnVjdCBXZWJDb3JlOjpDb29raWUgY29va2llLCB1aW50NjRfdCBjYWxsYmFja0lEKQorICAg
IHZvaWQgU2V0Q29va2llcyhXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBWZWN0b3I8V2Vi
Q29yZTo6Q29va2llPiBjb29raWVzLCBXZWJDb3JlOjpVUkwgdXJsLCBXZWJDb3JlOjpVUkwgbWFp
bkRvY3VtZW50VVJMLCB1aW50NjRfdCBjYWxsYmFja0lEKQorICAgIHZvaWQgR2V0QWxsQ29va2ll
cyhXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBjYWxsYmFja0lEKQorICAg
IHZvaWQgR2V0Q29va2llcyhXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpV
UkwgdXJsLCB1aW50NjRfdCBjYWxsYmFja0lEKQorICAgIHZvaWQgRGVsZXRlQ29va2llKFdlYkNv
cmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHN0cnVjdCBXZWJDb3JlOjpDb29raWUgY29va2llLCB1
aW50NjRfdCBjYWxsYmFja0lEKQorICAgIHZvaWQgRGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2lu
Y2UoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9j
azo6dGltZV9wb2ludCB0aW1lLCB1aW50NjRfdCBjYWxsYmFja0lEKQogCi0gICAgdm9pZCBTZXRI
VFRQQ29va2llQWNjZXB0UG9saWN5KHVpbnQzMl90IHBvbGljeSkKKyAgICB2b2lkIFNldEhUVFBD
b29raWVBY2NlcHRQb2xpY3kodWludDMyX3QgcG9saWN5LCB1aW50NjRfdCBjYWxsYmFja0lEKQog
ICAgIHZvaWQgR2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSh1aW50NjRfdCBjYWxsYmFja0lEKQog
ICAgIAogICAgIHZvaWQgU3RhcnRPYnNlcnZpbmdDb29raWVDaGFuZ2VzKFdlYkNvcmU6OlNlc3Np
b25JRCBzZXNzaW9uSUQpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>304242</attachid>
            <date>2017-03-13 01:35:18 -0700</date>
            <delta_ts>2017-03-13 07:29:45 -0700</delta_ts>
            <desc>Patch for review</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>85896</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBmZTcwZWFjZmM1ZC4uZTFmMmE3Yzc2OWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNyBAQAorMjAxNy0wMy0xMyAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+
CisKKyAgICAgICAgV0tXZWJWaWV3IHByb3ZpZGVzIG5vIGFjY2VzcyB0byBjb29raWVzLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQwMTkxCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ292ZXJlZCBieSBB
UEkgdGVzdHMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9Db29raWUuaDoKKworICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9jb2NvYS9OZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbToKKyAgICAgICAg
KFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0Q29va2llKToKKyAgICAgICAgKFdl
YkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVsZXRlQ29va2llKToKKyAgICAgICAgKFdl
YkNvcmU6Om5zQ29va2llc1RvQ29va2llVmVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdv
cmtTdG9yYWdlU2Vzc2lvbjo6Z2V0QWxsQ29va2llcyk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3
b3JrU3RvcmFnZVNlc3Npb246OmdldENvb2tpZXMpOgorCisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lvblNvdXAuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWxldGVDb29raWUpOgorICAgICAgICAoV2ViQ29y
ZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpnZXRBbGxDb29raWVzKToKKyAgICAgICAgKFdlYkNv
cmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0Q29va2llcyk6CisKIDIwMTctMDMtMTIgIEJy
YWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBmdWxsIE5TSFRU
UENvb2tpZSBmaWRlbGl0eSB0byBXZWJDb3JlOjpDb29raWUuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9Db29raWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nvb2tp
ZS5oCmluZGV4IGU0N2U3YmJmZjViLi41ZGRiOTM1NGNlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vQ29va2llLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29v
a2llLmgKQEAgLTU4LDcgKzU4LDcgQEAgc3RydWN0IENvb2tpZSB7CiAKICNpZmRlZiBfX09CSkNf
XwogICAgIFdFQkNPUkVfRVhQT1JUIENvb2tpZShOU0hUVFBDb29raWUgKik7Ci0gICAgb3BlcmF0
b3IgTlNIVFRQQ29va2llICooKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBvcGVyYXRvciBO
U0hUVFBDb29raWUgKigpIGNvbnN0OwogI2VuZGlmCiAKICAgICBTdHJpbmcgbmFtZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNz
aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vz
c2lvbi5oCmluZGV4IGYxNDg5YzZiNDJhLi4yMTJiZTI2NGVhNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oCkBA
IC0xMDAsNyArMTAwLDExIEBAIHB1YmxpYzoKICAgICBOZXR3b3JraW5nQ29udGV4dCogY29udGV4
dCgpIGNvbnN0OwogI2VuZGlmCiAKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENvb2tpZShj
b25zdCBDb29raWUmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENvb2tpZXMoY29uc3Qg
VmVjdG9yPENvb2tpZT4mLCBjb25zdCBVUkwmLCBjb25zdCBVUkwmIG1haW5Eb2N1bWVudFVSTCk7
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkZWxldGVDb29raWUoY29uc3QgQ29va2llJik7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPENvb2tpZT4gZ2V0QWxsQ29va2llcygpOworICAgIFdF
QkNPUkVfRVhQT1JUIFZlY3RvcjxDb29raWU+IGdldENvb2tpZXMoY29uc3QgVVJMJik7CiAKIHBy
aXZhdGU6CiAgICAgc3RhdGljIEhhc2hNYXA8U2Vzc2lvbklELCBzdGQ6OnVuaXF1ZV9wdHI8TmV0
d29ya1N0b3JhZ2VTZXNzaW9uPj4mIGdsb2JhbFNlc3Npb25NYXAoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9u
Q29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtT
dG9yYWdlU2Vzc2lvbkNvY29hLm1tCmluZGV4IDQ0YWVhYjcwZTk5Li40Yzk1NjdlOWM2NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrU3Rv
cmFnZVNlc3Npb25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NvY29hL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tCkBAIC0zMiw2ICszMiwxMyBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3ZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRD
b29raWUoY29uc3QgQ29va2llJiBjb29raWUpCit7CisgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENF
UFRJT05TOworICAgIFtuc0Nvb2tpZVN0b3JhZ2UoKSBzZXRDb29raWU6KE5TSFRUUENvb2tpZSAq
KWNvb2tpZV07CisgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKK30KKwogdm9pZCBOZXR3
b3JrU3RvcmFnZVNlc3Npb246OnNldENvb2tpZXMoY29uc3QgVmVjdG9yPENvb2tpZT4mIGNvb2tp
ZXMsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBVUkwmIG1haW5Eb2N1bWVudFVSTCkKIHsKICAgICBS
ZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IG5zQ29va2llcyA9IGFkb3B0TlMoW1tOU011dGFibGVB
cnJheSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTpjb29raWVzLnNpemUoKV0pOwpAQCAtNDMsNiAr
NTAsMzEgQEAgdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldENvb2tpZXMoY29uc3QgVmVj
dG9yPENvb2tpZT4mIGNvb2tpZXMsIGNvbnN0IFVSTCYKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENF
UFRJT05TOwogfQogCit2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVsZXRlQ29va2llKGNv
bnN0IENvb2tpZSYgY29va2llKQoreworICAgIFtuc0Nvb2tpZVN0b3JhZ2UoKSBkZWxldGVDb29r
aWU6KE5TSFRUUENvb2tpZSAqKWNvb2tpZV07Cit9CisKK3N0YXRpYyBWZWN0b3I8Q29va2llPiBu
c0Nvb2tpZXNUb0Nvb2tpZVZlY3RvcihOU0FycmF5PE5TSFRUUENvb2tpZSAqPiAqbnNDb29raWVz
KQoreworICAgIFZlY3RvcjxDb29raWU+IGNvb2tpZXM7CisgICAgY29va2llcy5yZXNlcnZlSW5p
dGlhbENhcGFjaXR5KG5zQ29va2llcy5jb3VudCk7CisgICAgZm9yIChOU0hUVFBDb29raWUgKm5z
Q29va2llIGluIG5zQ29va2llcykKKyAgICAgICAgY29va2llcy51bmNoZWNrZWRBcHBlbmQobnND
b29raWUpOworCisgICAgcmV0dXJuIGNvb2tpZXM7Cit9CisKK1ZlY3RvcjxDb29raWU+IE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbjo6Z2V0QWxsQ29va2llcygpCit7CisgICAgcmV0dXJuIG5zQ29va2ll
c1RvQ29va2llVmVjdG9yKG5zQ29va2llU3RvcmFnZSgpLmNvb2tpZXMpOworfQorCitWZWN0b3I8
Q29va2llPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmdldENvb2tpZXMoY29uc3QgVVJMJiB1cmwp
Cit7CisgICAgcmV0dXJuIG5zQ29va2llc1RvQ29va2llVmVjdG9yKFtuc0Nvb2tpZVN0b3JhZ2Uo
KSBjb29raWVzRm9yVVJMOihOU1VSTCAqKXVybF0pOworfQorCiBOU0hUVFBDb29raWVTdG9yYWdl
ICpOZXR3b3JrU3RvcmFnZVNlc3Npb246Om5zQ29va2llU3RvcmFnZSgpIGNvbnN0CiB7CiAgICAg
YXV0byBjZkNvb2tpZVN0b3JhZ2UgPSBjb29raWVTdG9yYWdlKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvTmV0d29ya1N0b3JhZ2VTZXNzaW9uU291
cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uU291cC5jcHAKaW5kZXggMjQ5YmQ4MmJkNzQuLjM2ZWY5ZmVjYjNhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uU291cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3Vw
L05ldHdvcmtTdG9yYWdlU2Vzc2lvblNvdXAuY3BwCkBAIC0zMDQsNiArMzA0LDIwIEBAIHZvaWQg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRDb29raWVzKGNvbnN0IFZlY3RvcjxDb29raWU+JiBj
b29raWVzLCBjb25zdCBVUkwmCiAgICAgICAgIHNvdXBfY29va2llX2phcl9hZGRfY29va2llKGNv
b2tpZVN0b3JhZ2UoKSwgdG9Tb3VwQ29va2llKGNvb2tpZSkpOwogfQogCit2b2lkIE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbjo6ZGVsZXRlQ29va2llKGNvbnN0IENvb2tpZSYpCit7CisJLy8gRklYTUU6
IEltcGxlbWVudCBmb3IgV0syIHRvIHVzZS4KK30KKworVmVjdG9yPENvb2tpZT4gTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpnZXRBbGxDb29raWVzKCkKK3sKKwkvLyBGSVhNRTogSW1wbGVtZW50IGZv
ciBXSzIgdG8gdXNlLgorfQorCitWZWN0b3I8Q29va2llPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246
OmdldENvb2tpZXMoY29uc3QgVVJMJikKK3sKKwkvLyBGSVhNRTogSW1wbGVtZW50IGZvciBXSzIg
dG8gdXNlLgorfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQK
aW5kZXggODFmZjhkYTgxMTIuLmE4ZmRjZDExYjNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dApAQCAt
MzM2LDYgKzMzNiw3IEBAIHNldChXZWJLaXQyX1NPVVJDRVMKICAgICBVSVByb2Nlc3MvQVBJL0FQ
SUNvbnRlbnRFeHRlbnNpb25TdG9yZS5jcHAKICAgICBVSVByb2Nlc3MvQVBJL0FQSUV4cGVyaW1l
bnRhbEZlYXR1cmUuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9BUElGcmFtZUluZm8uY3BwCisgICAg
VUlQcm9jZXNzL0FQSS9BUElIVFRQQ29va2llU3RvcmFnZS5jcHAKICAgICBVSVByb2Nlc3MvQVBJ
L0FQSUhpdFRlc3RSZXN1bHQuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uLmNw
cAogICAgIFVJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkRhdGEuY3BwCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXgg
MTEwN2M4M2I0NDkuLjQ5MTQyZjRkYzI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTE4IEBACisy
MDE3LTAzLTEzICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBX
S1dlYlZpZXcgcHJvdmlkZXMgbm8gYWNjZXNzIHRvIGNvb2tpZXMuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDAxOTEKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGFkZHMgYSBuZXcgX1dLSFRUUENv
b2tpZU1hbmFnZXIgU1BJLgorICAgICAgICBBZnRlciB0aGUgaW1wbGVtZW50YXRpb24gaXMgbGFu
ZGVkIGFuZCB3ZSByZXZpZXcgaW50ZXJuYWxseSB3ZSdsbCBjb25zaWRlciBwcm9tb3RpbmcgdG8g
QVBJLgorICAgICAgICAKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBXZWJL
aXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKKyAgICAgICAgKiBTaGFyZWQvQVBJL0FQ
SU9iamVjdC5oOgorICAgICAgICAqIFNoYXJlZC9Db2NvYS9BUElPYmplY3QubW06CisgICAgICAg
IChBUEk6Ok9iamVjdDo6bmV3T2JqZWN0KToKKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJ
SFRUUENvb2tpZVN0b3JhZ2UuY3BwOiBBZGRlZC4KKyAgICAgICAgKEFQSTo6SFRUUENvb2tpZVN0
b3JhZ2U6OkhUVFBDb29raWVTdG9yYWdlKToKKyAgICAgICAgKEFQSTo6SFRUUENvb2tpZVN0b3Jh
Z2U6On5IVFRQQ29va2llU3RvcmFnZSk6CisgICAgICAgIChBUEk6OkhUVFBDb29raWVTdG9yYWdl
Ojpjb29raWVzKToKKyAgICAgICAgKEFQSTo6SFRUUENvb2tpZVN0b3JhZ2U6OnNldENvb2tpZSk6
CisgICAgICAgIChBUEk6OkhUVFBDb29raWVTdG9yYWdlOjpzZXRDb29raWVzKToKKyAgICAgICAg
KEFQSTo6SFRUUENvb2tpZVN0b3JhZ2U6OmRlbGV0ZUNvb2tpZSk6CisgICAgICAgIChBUEk6OkhU
VFBDb29raWVTdG9yYWdlOjpyZW1vdmVDb29raWVzU2luY2VEYXRlKToKKyAgICAgICAgKEFQSTo6
SFRUUENvb2tpZVN0b3JhZ2U6OnNldEhUVFBDb29raWVBY2NlcHRQb2xpY3kpOgorICAgICAgICAo
QVBJOjpIVFRQQ29va2llU3RvcmFnZTo6Z2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSk6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9BUElIVFRQQ29va2llU3RvcmFnZS5oOiBBZGRlZC4KKworICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5jcHA6CisgICAgICAgIChB
UEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmUpOgorICAgICAgICAoQVBJOjpX
ZWJzaXRlRGF0YVN0b3JlOjpodHRwQ29va2llU3RvcmFnZSk6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmg6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Mv
V0tDb29raWVNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdLQ29va2llTWFuYWdlckRlbGV0ZUFsbENv
b2tpZXNNb2RpZmllZEFmdGVyRGF0ZSk6CisgICAgICAgIChXS0Nvb2tpZU1hbmFnZXJTZXRIVFRQ
Q29va2llQWNjZXB0UG9saWN5KToKKyAgICAgICAgKFdLQ29va2llTWFuYWdlckdldEhUVFBDb29r
aWVBY2NlcHRQb2xpY3kpOgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURh
dGFTdG9yZVJlZi5jcHA6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVHZXREZWZhdWx0RGF0
YVN0b3JlKToKKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5t
bToKKyAgICAgICAgKC1bV0tQcm9jZXNzUG9vbCBfc2V0Q29va2llQWNjZXB0UG9saWN5Ol0pOgor
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW06Cisg
ICAgICAgICgrW1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0RGF0YVN0b3JlXSk6CisgICAgICAg
ICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBfaHR0cENvb2tpZVN0b3JhZ2VdKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaDoKKyAgICAgICAg
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tIVFRQQ29va2llU3RvcmFnZS5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSFRUUENvb2tpZVN0b3JhZ2UubW06IEFk
ZGVkLgorICAgICAgICAoY29yZUNvb2tpZXNUb05TQ29va2llcyk6CisgICAgICAgICgtW19XS0hU
VFBDb29raWVTdG9yYWdlIGRlYWxsb2NdKToKKyAgICAgICAgKC1bX1dLSFRUUENvb2tpZVN0b3Jh
Z2UgZmV0Y2hDb29raWVzOl0pOgorICAgICAgICAoLVtfV0tIVFRQQ29va2llU3RvcmFnZSBmZXRj
aENvb2tpZXNGb3JVUkw6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW19XS0hUVFBD
b29raWVTdG9yYWdlIHNldENvb2tpZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1b
X1dLSFRUUENvb2tpZVN0b3JhZ2UgZGVsZXRlQ29va2llOmNvbXBsZXRpb25IYW5kbGVyOl0pOgor
ICAgICAgICAoLVtfV0tIVFRQQ29va2llU3RvcmFnZSBzZXRDb29raWVzOmZvclVSTDptYWluRG9j
dW1lbnRVUkw6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW19XS0hUVFBDb29raWVT
dG9yYWdlIHJlbW92ZUNvb2tpZXNTaW5jZURhdGU6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAg
ICAgICgtW19XS0hUVFBDb29raWVTdG9yYWdlIHNldENvb2tpZUFjY2VwdFBvbGljeTpjb21wbGV0
aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKGtpdENvb2tpZVBvbGljeVRvTlNDb29raWVQb2xpY3kp
OgorICAgICAgICAoLVtfV0tIVFRQQ29va2llU3RvcmFnZSBmZXRjaENvb2tpZUFjY2VwdFBvbGlj
eTpdKToKKyAgICAgICAgKC1bX1dLSFRUUENvb2tpZVN0b3JhZ2UgX2FwaU9iamVjdF0pOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSFRUUENvb2tpZVN0b3JhZ2VJbnRlcm5hbC5o
OiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0
ZURhdGFTdG9yZVByaXZhdGUuaC4KKyAgICAgICAgKFdlYktpdDo6d3JhcHBlcik6CisKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjphZGRTaW5nbGVDb29raWUpOgorCisg
ICAgICAgICogVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6Z2V0SG9zdG5hbWVzV2l0aENvb2tpZXMpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRlbGV0ZUNvb2tpZXNGb3JI
b3N0bmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGVsZXRl
QWxsQ29va2llcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGVs
ZXRlQ29va2llKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlclByb3h5OjpkZWxl
dGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1h
bmFnZXJQcm94eTo6c2V0Q29va2llKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdl
clByb3h5OjpzZXRDb29raWVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlclBy
b3h5OjpnZXRBbGxDb29raWVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlclBy
b3h5OjpnZXRDb29raWVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlclByb3h5
OjpkaWRTZXRDb29raWVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlclByb3h5
OjpkaWRHZXRDb29raWVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlclByb3h5
OjpkaWREZWxldGVDb29raWVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlclBy
b3h5OjpzdGFydE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJD
b29raWVNYW5hZ2VyUHJveHk6OnN0b3BPYnNlcnZpbmdDb29raWVDaGFuZ2VzKToKKyAgICAgICAg
KFdlYktpdDo6V2ViQ29va2llTWFuYWdlclByb3h5OjpzZXRDb29raWVPYnNlcnZlckNhbGxiYWNr
KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlclByb3h5Ojpjb29raWVzRGlkQ2hh
bmdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlclByb3h5OjpzZXRIVFRQQ29v
a2llQWNjZXB0UG9saWN5KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlclByb3h5
OjpnZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2ll
TWFuYWdlclByb3h5OjpkaWRHZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KToKKyAgICAgICAgKFdl
YktpdDo6V2ViQ29va2llTWFuYWdlclByb3h5OjpkaWRTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5Lmg6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbjoKKworICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJGcmFtZVByb3h5Lmg6CisgICAgICAgIAorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
b29sLmg6CisgICAgICAgIAorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRl
RGF0YVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6cHJvY2Vz
c1Bvb2xGb3JDb29raWVTdG9yYWdlT3BlcmF0aW9ucyk6CisgICAgICAgIChXZWJLaXQ6OldlYnNp
dGVEYXRhU3RvcmU6OnByb2Nlc3NQb29scyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVE
YXRhL1dlYnNpdGVEYXRhU3RvcmUuaDoKKyAgICAgICAgCisgICAgICAgICogV2ViUHJvY2Vzcy9D
b29raWVzL1dlYkNvb2tpZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVN
YW5hZ2VyOjpkZWxldGVDb29raWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2Vy
OjpkZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNv
b2tpZU1hbmFnZXI6OmdldEFsbENvb2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVN
YW5hZ2VyOjpnZXRDb29raWVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlcjo6
c2V0Q29va2llKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlcjo6c2V0Q29va2ll
cyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXI6OnNldEhUVFBDb29raWVBY2Nl
cHRQb2xpY3kpOgorICAgICAgICAqIFdlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2Vy
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIubWVzc2Fn
ZXMuaW46CisKIDIwMTctMDMtMTIgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgog
CiAgICAgICAgIFRyYW5zaXRpb24gR2VuZXJpY0NhbGxiYWNrIGZyb20gc3RkOjpmdW5jdGlvbiB0
byBXVEY6OkZ1bmN0aW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9B
UElPYmplY3QuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvQVBJT2JqZWN0LmgKaW5kZXgg
YWUwZmM5OTg1YmQuLjQ2ZjI3OTFkZGZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvQVBJL0FQSU9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvQVBJT2Jq
ZWN0LmgKQEAgLTExNiw2ICsxMTYsNyBAQCBwdWJsaWM6CiAgICAgICAgIEZ1bGxTY3JlZW5NYW5h
Z2VyLAogICAgICAgICBHZW9sb2NhdGlvbk1hbmFnZXIsCiAgICAgICAgIEdlb2xvY2F0aW9uUGVy
bWlzc2lvblJlcXVlc3QsCisgICAgICAgIEhUVFBDb29raWVTdG9yYWdlLAogICAgICAgICBIaXRU
ZXN0UmVzdWx0LAogICAgICAgICBHZW9sb2NhdGlvblBvc2l0aW9uLAogICAgICAgICBHcmFtbWFy
RGV0YWlsLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0NvY29hL0FQSU9iamVj
dC5tbSBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db2NvYS9BUElPYmplY3QubW0KaW5kZXggMTE2
MzI0NTQyMGMuLmM3MjE3NjI5M2NlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
Q29jb2EvQVBJT2JqZWN0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db2NvYS9BUElP
YmplY3QubW0KQEAgLTcxLDYgKzcxLDcgQEAKICNpbXBvcnQgIl9XS0Rvd25sb2FkSW50ZXJuYWwu
aCIKICNpbXBvcnQgIl9XS0V4cGVyaW1lbnRhbEZlYXR1cmVJbnRlcm5hbC5oIgogI2ltcG9ydCAi
X1dLRnJhbWVIYW5kbGVJbnRlcm5hbC5oIgorI2ltcG9ydCAiX1dLSFRUUENvb2tpZVN0b3JhZ2VJ
bnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLSGl0VGVzdFJlc3VsdEludGVybmFsLmgiCiAjaW1wb3J0
ICJfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb25JbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLVXNl
ckNvbnRlbnRXb3JsZEludGVybmFsLmgiCkBAIC0xNzgsNiArMTc5LDEwIEBAIHZvaWQqIE9iamVj
dDo6bmV3T2JqZWN0KHNpemVfdCBzaXplLCBUeXBlIHR5cGUpCiAgICAgICAgIHdyYXBwZXIgPSBb
V0tGcmFtZUluZm8gYWxsb2NdOwogICAgICAgICBicmVhazsKIAorICAgIGNhc2UgVHlwZTo6SFRU
UENvb2tpZVN0b3JhZ2U6CisgICAgICAgIHdyYXBwZXIgPSBbX1dLSFRUUENvb2tpZVN0b3JhZ2Ug
YWxsb2NdOworICAgICAgICBicmVhazsKKwogI2lmIFBMQVRGT1JNKE1BQykKICAgICBjYXNlIFR5
cGU6OkhpdFRlc3RSZXN1bHQ6CiAgICAgICAgIHdyYXBwZXIgPSBbX1dLSGl0VGVzdFJlc3VsdCBh
bGxvY107CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSUhUVFBD
b29raWVTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJSFRUUENv
b2tpZVN0b3JhZ2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4z
MzhiODUyNGI5ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQVBJSFRUUENvb2tpZVN0b3JhZ2UuY3BwCkBAIC0wLDAgKzEsMTM4IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkFQSUhUVFBDb29raWVTdG9yYWdlLmgi
CisKKyNpbmNsdWRlICJBUElXZWJzaXRlRGF0YVN0b3JlLmgiCisjaW5jbHVkZSAiV2ViQ29va2ll
TWFuYWdlclByb3h5LmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKKyNpbmNsdWRlIDxX
ZWJDb3JlL0Nvb2tpZS5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCituYW1lc3BhY2Ug
QVBJIHsKKworSFRUUENvb2tpZVN0b3JhZ2U6OkhUVFBDb29raWVTdG9yYWdlKFdlYnNpdGVEYXRh
U3RvcmUmIHdlYnNpdGVEYXRhU3RvcmUpCisgICAgOiBtX293bmluZ0RhdGFTdG9yZSh3ZWJzaXRl
RGF0YVN0b3JlKQoreworfQorCitIVFRQQ29va2llU3RvcmFnZTo6fkhUVFBDb29raWVTdG9yYWdl
KCkKK3sKK30KKwordm9pZCBIVFRQQ29va2llU3RvcmFnZTo6Y29va2llcyhGdW5jdGlvbjx2b2lk
IChjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
eworICAgIGF1dG8mIGRhdGFTdG9yZSA9IG1fb3duaW5nRGF0YVN0b3JlLndlYnNpdGVEYXRhU3Rv
cmUoKTsKKyAgICBhdXRvIHBvb2wgPSBkYXRhU3RvcmUucHJvY2Vzc1Bvb2xGb3JDb29raWVTdG9y
YWdlT3BlcmF0aW9ucygpOworICAgIGF1dG8qIGNvb2tpZU1hbmFnZXIgPSBwb29sLT5zdXBwbGVt
ZW50PFdlYktpdDo6V2ViQ29va2llTWFuYWdlclByb3h5PigpOworCisgICAgY29va2llTWFuYWdl
ci0+Z2V0QWxsQ29va2llcyhkYXRhU3RvcmUuc2Vzc2lvbklEKCksIFtwb29sID0gV1RGTW92ZShw
b29sKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oY29u
c3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mIGNvb2tpZXMsIENhbGxiYWNrQmFzZTo6RXJyb3Ig
ZXJyb3IpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoY29va2llcyk7CisgICAgfSk7Cit9
CisKK3ZvaWQgSFRUUENvb2tpZVN0b3JhZ2U6OmNvb2tpZXMoY29uc3QgV2ViQ29yZTo6VVJMJiB1
cmwsIEZ1bmN0aW9uPHZvaWQgKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCit7CisgICAgYXV0byYgZGF0YVN0b3JlID0gbV9vd25pbmdEYXRhU3Rv
cmUud2Vic2l0ZURhdGFTdG9yZSgpOworICAgIGF1dG8gcG9vbCA9IGRhdGFTdG9yZS5wcm9jZXNz
UG9vbEZvckNvb2tpZVN0b3JhZ2VPcGVyYXRpb25zKCk7CisgICAgYXV0byogY29va2llTWFuYWdl
ciA9IHBvb2wtPnN1cHBsZW1lbnQ8V2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk+KCk7CisK
KyAgICBjb29raWVNYW5hZ2VyLT5nZXRDb29raWVzKGRhdGFTdG9yZS5zZXNzaW9uSUQoKSwgdXJs
LCBbcG9vbCA9IFdURk1vdmUocG9vbCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcildKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiBjb29raWVzLCBD
YWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGNv
b2tpZXMpOworICAgIH0pOworfQorCit2b2lkIEhUVFBDb29raWVTdG9yYWdlOjpzZXRDb29raWUo
Y29uc3QgV2ViQ29yZTo6Q29va2llJiBjb29raWUsIEZ1bmN0aW9uPHZvaWQgKCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCit7CisgICAgYXV0byYgZGF0YVN0b3JlID0gbV9vd25pbmdEYXRhU3RvcmUu
d2Vic2l0ZURhdGFTdG9yZSgpOworICAgIGF1dG8gcG9vbCA9IGRhdGFTdG9yZS5wcm9jZXNzUG9v
bEZvckNvb2tpZVN0b3JhZ2VPcGVyYXRpb25zKCk7CisgICAgYXV0byogY29va2llTWFuYWdlciA9
IHBvb2wtPnN1cHBsZW1lbnQ8V2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk+KCk7CisKKyAg
ICBjb29raWVNYW5hZ2VyLT5zZXRDb29raWUoZGF0YVN0b3JlLnNlc3Npb25JRCgpLCBjb29raWUs
IFtwb29sID0gV1RGTW92ZShwb29sKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKV0oQ2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcikgeworICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcigpOworICAgIH0pOworfQorCit2b2lkIEhUVFBDb29raWVTdG9yYWdlOjpz
ZXRDb29raWVzKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiBjb29raWVzLCBjb25zdCBX
ZWJDb3JlOjpVUkwmIHVybCwgY29uc3QgV2ViQ29yZTo6VVJMJiBtYWluRG9jdW1lbnRVUkwsIEZ1
bmN0aW9uPHZvaWQgKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgYXV0byYgZGF0YVN0
b3JlID0gbV9vd25pbmdEYXRhU3RvcmUud2Vic2l0ZURhdGFTdG9yZSgpOworICAgIGF1dG8gcG9v
bCA9IGRhdGFTdG9yZS5wcm9jZXNzUG9vbEZvckNvb2tpZVN0b3JhZ2VPcGVyYXRpb25zKCk7Cisg
ICAgYXV0byogY29va2llTWFuYWdlciA9IHBvb2wtPnN1cHBsZW1lbnQ8V2ViS2l0OjpXZWJDb29r
aWVNYW5hZ2VyUHJveHk+KCk7CisKKyAgICBjb29raWVNYW5hZ2VyLT5zZXRDb29raWVzKGRhdGFT
dG9yZS5zZXNzaW9uSUQoKSwgY29va2llcywgdXJsLCBtYWluRG9jdW1lbnRVUkwsIFtwb29sID0g
V1RGTW92ZShwb29sKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKV0oQ2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcikgeworICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcigpOworICAgIH0pOworfQorCit2b2lkIEhUVFBDb29raWVTdG9yYWdlOjpkZWxldGVDb29r
aWUoY29uc3QgV2ViQ29yZTo6Q29va2llJiBjb29raWUsIEZ1bmN0aW9uPHZvaWQgKCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCit7CisgICAgYXV0byYgZGF0YVN0b3JlID0gbV9vd25pbmdEYXRhU3Rv
cmUud2Vic2l0ZURhdGFTdG9yZSgpOworICAgIGF1dG8gcG9vbCA9IGRhdGFTdG9yZS5wcm9jZXNz
UG9vbEZvckNvb2tpZVN0b3JhZ2VPcGVyYXRpb25zKCk7CisgICAgYXV0byogY29va2llTWFuYWdl
ciA9IHBvb2wtPnN1cHBsZW1lbnQ8V2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk+KCk7CisK
KyAgICBjb29raWVNYW5hZ2VyLT5kZWxldGVDb29raWUoZGF0YVN0b3JlLnNlc3Npb25JRCgpLCBj
b29raWUsIFtwb29sID0gV1RGTW92ZShwb29sKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKV0oQ2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcikgeworICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcigpOworICAgIH0pOworfQorCit2b2lkIEhUVFBDb29raWVTdG9y
YWdlOjpyZW1vdmVDb29raWVzU2luY2VEYXRlKHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRp
bWVfcG9pbnQgZGF0ZSwgRnVuY3Rpb248dm9pZCAoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sK
KyAgICBhdXRvJiBkYXRhU3RvcmUgPSBtX293bmluZ0RhdGFTdG9yZS53ZWJzaXRlRGF0YVN0b3Jl
KCk7CisgICAgYXV0byBwb29sID0gZGF0YVN0b3JlLnByb2Nlc3NQb29sRm9yQ29va2llU3RvcmFn
ZU9wZXJhdGlvbnMoKTsKKyAgICBhdXRvKiBjb29raWVNYW5hZ2VyID0gcG9vbC0+c3VwcGxlbWVu
dDxXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eT4oKTsKKworICAgIGNvb2tpZU1hbmFnZXIt
PmRlbGV0ZUFsbENvb2tpZXNNb2RpZmllZFNpbmNlKGRhdGFTdG9yZS5zZXNzaW9uSUQoKSwgZGF0
ZSwgW3Bvb2wgPSBXVEZNb3ZlKHBvb2wpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpXShDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7CisgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKCk7CisgICAgfSk7Cit9CisKK3ZvaWQgSFRUUENvb2tpZVN0b3JhZ2U6
OnNldEhUVFBDb29raWVBY2NlcHRQb2xpY3koSFRUUENvb2tpZUFjY2VwdFBvbGljeSBwb2xpY3ks
IEZ1bmN0aW9uPHZvaWQgKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgYXV0byYgZGF0
YVN0b3JlID0gbV9vd25pbmdEYXRhU3RvcmUud2Vic2l0ZURhdGFTdG9yZSgpOworICAgIGF1dG8g
cG9vbCA9IGRhdGFTdG9yZS5wcm9jZXNzUG9vbEZvckNvb2tpZVN0b3JhZ2VPcGVyYXRpb25zKCk7
CisgICAgYXV0byogY29va2llTWFuYWdlciA9IHBvb2wtPnN1cHBsZW1lbnQ8V2ViS2l0OjpXZWJD
b29raWVNYW5hZ2VyUHJveHk+KCk7CisKKyAgICBjb29raWVNYW5hZ2VyLT5zZXRIVFRQQ29va2ll
QWNjZXB0UG9saWN5KGRhdGFTdG9yZS5zZXNzaW9uSUQoKSwgcG9saWN5LCBbcG9vbCA9IFdURk1v
dmUocG9vbCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcild
KENhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
KTsKKyAgICB9KTsKK30KKwordm9pZCBIVFRQQ29va2llU3RvcmFnZTo6Z2V0SFRUUENvb2tpZUFj
Y2VwdFBvbGljeShGdW5jdGlvbjx2b2lkIChIVFRQQ29va2llQWNjZXB0UG9saWN5KT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKK3sKKyAgICBhdXRvJiBkYXRhU3RvcmUgPSBtX293bmluZ0RhdGFTdG9y
ZS53ZWJzaXRlRGF0YVN0b3JlKCk7CisgICAgYXV0byBwb29sID0gZGF0YVN0b3JlLnByb2Nlc3NQ
b29sRm9yQ29va2llU3RvcmFnZU9wZXJhdGlvbnMoKTsKKyAgICBhdXRvKiBjb29raWVNYW5hZ2Vy
ID0gcG9vbC0+c3VwcGxlbWVudDxXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eT4oKTsKKwor
ICAgIGNvb2tpZU1hbmFnZXItPmdldEhUVFBDb29raWVBY2NlcHRQb2xpY3koZGF0YVN0b3JlLnNl
c3Npb25JRCgpLCBbcG9vbCA9IFdURk1vdmUocG9vbCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcildKEhUVFBDb29raWVBY2NlcHRQb2xpY3kgcG9saWN5LCBD
YWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7CisgICAgICAgIGlmIChlcnJvciAhPSBDYWxsYmFj
a0Jhc2U6OkVycm9yOjpOb25lKQorICAgICAgICAgICAgcG9saWN5ID0gSFRUUENvb2tpZUFjY2Vw
dFBvbGljeU5ldmVyOworCisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHBvbGljeSk7CisgICAg
fSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9BUElIVFRQQ29va2llU3RvcmFnZS5oIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9BUElIVFRQQ29va2llU3RvcmFnZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwLi5kM2I5MzhlZTQyZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3JhZ2UuaApAQCAtMCwwICsxLDY5
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJBUElPYmplY3QuaCIK
KyNpbmNsdWRlICJIVFRQQ29va2llQWNjZXB0UG9saWN5LmgiCisjaW5jbHVkZSA8d3RmL0Z1bmN0
aW9uLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7Citj
bGFzcyBVUkw7CitzdHJ1Y3QgQ29va2llOworfQorCituYW1lc3BhY2UgQVBJIHsKKworY2xhc3Mg
V2Vic2l0ZURhdGFTdG9yZTsKKworY2xhc3MgSFRUUENvb2tpZVN0b3JhZ2UgZmluYWwgOiBwdWJs
aWMgT2JqZWN0SW1wbDxPYmplY3Q6OlR5cGU6OkhUVFBDb29raWVTdG9yYWdlPiB7CitwdWJsaWM6
CisgICAgc3RhdGljIFJlZjxIVFRQQ29va2llU3RvcmFnZT4gY3JlYXRlKFdlYnNpdGVEYXRhU3Rv
cmUmIHdlYnNpdGVEYXRhU3RvcmUpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBIVFRQQ29va2llU3RvcmFnZSh3ZWJzaXRlRGF0YVN0b3JlKSk7CisgICAgfQorCisgICAgdmly
dHVhbCB+SFRUUENvb2tpZVN0b3JhZ2UoKTsKKworICAgIHZvaWQgY29va2llcyhGdW5jdGlvbjx2
b2lkIChjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KTsKKyAgICB2b2lkIGNvb2tpZXMoY29uc3QgV2ViQ29yZTo6VVJMJiwgRnVuY3Rpb248dm9pZCAo
Y29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7CisK
KyAgICB2b2lkIHNldENvb2tpZShjb25zdCBXZWJDb3JlOjpDb29raWUmLCBGdW5jdGlvbjx2b2lk
ICgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICB2b2lkIHNldENvb2tpZXMoY29uc3QgVmVj
dG9yPFdlYkNvcmU6OkNvb2tpZT4mLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXZWJDb3Jl
OjpVUkwmIG1haW5Eb2N1bWVudFVSTCwgRnVuY3Rpb248dm9pZCAoKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcik7CisgICAgdm9pZCBkZWxldGVDb29raWUoY29uc3QgV2ViQ29yZTo6Q29va2llJiwgRnVu
Y3Rpb248dm9pZCAoKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7CisKKyAgICB2b2lkIHJlbW92ZUNv
b2tpZXNTaW5jZURhdGUoc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCwgRnVu
Y3Rpb248dm9pZCAoKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7CisKKyAgICB2b2lkIHNldEhUVFBD
b29raWVBY2NlcHRQb2xpY3koV2ViS2l0OjpIVFRQQ29va2llQWNjZXB0UG9saWN5LCBGdW5jdGlv
bjx2b2lkICgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICB2b2lkIGdldEhUVFBDb29raWVB
Y2NlcHRQb2xpY3koRnVuY3Rpb248dm9pZCAoV2ViS2l0OjpIVFRQQ29va2llQWNjZXB0UG9saWN5
KT4mJiBjb21wbGV0aW9uSGFuZGxlcik7CisgICAgCitwcml2YXRlOgorICAgIEhUVFBDb29raWVT
dG9yYWdlKFdlYnNpdGVEYXRhU3RvcmUmIHdlYnNpdGVEYXRhU3RvcmUpOworCisgICAgV2Vic2l0
ZURhdGFTdG9yZSYgbV9vd25pbmdEYXRhU3RvcmU7Cit9OworCit9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUuY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmNwcAppbmRleCA1Yzc4
Y2NkN2FlMi4uY2ExZGY3NTcxMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmNwcApAQCAtMzEsMTMgKzMxLDEzIEBACiAKIG5h
bWVzcGFjZSBBUEkgewogCi1SZWZQdHI8V2Vic2l0ZURhdGFTdG9yZT4gV2Vic2l0ZURhdGFTdG9y
ZTo6ZGVmYXVsdERhdGFTdG9yZSgpCitSZWY8V2Vic2l0ZURhdGFTdG9yZT4gV2Vic2l0ZURhdGFT
dG9yZTo6ZGVmYXVsdERhdGFTdG9yZSgpCiB7CiAgICAgV2ViS2l0OjpJbml0aWFsaXplV2ViS2l0
MigpOwogCiAgICAgc3RhdGljIFdlYnNpdGVEYXRhU3RvcmUqIGRlZmF1bHREYXRhU3RvcmUgPSBh
ZG9wdFJlZihuZXcgV2Vic2l0ZURhdGFTdG9yZShkZWZhdWx0RGF0YVN0b3JlQ29uZmlndXJhdGlv
bigpKSkubGVha1JlZigpOwogCi0gICAgcmV0dXJuIGRlZmF1bHREYXRhU3RvcmU7CisgICAgcmV0
dXJuICpkZWZhdWx0RGF0YVN0b3JlOwogfQogCiBSZWY8V2Vic2l0ZURhdGFTdG9yZT4gV2Vic2l0
ZURhdGFTdG9yZTo6Y3JlYXRlTm9uUGVyc2lzdGVudERhdGFTdG9yZSgpCkBAIC02NCw2ICs2NCwx
NCBAQCBXZWJzaXRlRGF0YVN0b3JlOjp+V2Vic2l0ZURhdGFTdG9yZSgpCiB7CiB9CiAKK0hUVFBD
b29raWVTdG9yYWdlJiBXZWJzaXRlRGF0YVN0b3JlOjpodHRwQ29va2llU3RvcmFnZSgpCit7Cisg
ICAgaWYgKCFtX2FwaUhUVFBDb29raWVTdG9yYWdlKQorICAgICAgICBtX2FwaUhUVFBDb29raWVT
dG9yYWdlID0gSFRUUENvb2tpZVN0b3JhZ2U6OmNyZWF0ZSgqdGhpcyk7CisKKyAgICByZXR1cm4g
Km1fYXBpSFRUUENvb2tpZVN0b3JhZ2U7Cit9CisKIGJvb2wgV2Vic2l0ZURhdGFTdG9yZTo6aXNQ
ZXJzaXN0ZW50KCkKIHsKICAgICByZXR1cm4gbV93ZWJzaXRlRGF0YVN0b3JlLT5pc1BlcnNpc3Rl
bnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0
ZURhdGFTdG9yZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0
YVN0b3JlLmgKaW5kZXggMjY3ZDY5YzMzODQuLmNhNzRkYmNjNDY3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUuaApAQCAtMjYsNyAr
MjYsNyBAQAogI2lmbmRlZiBBUElXZWJzaXRlRGF0YVN0b3JlX2gKICNkZWZpbmUgQVBJV2Vic2l0
ZURhdGFTdG9yZV9oCiAKLSNpbmNsdWRlICJBUElPYmplY3QuaCIKKyNpbmNsdWRlICJBUElIVFRQ
Q29va2llU3RvcmFnZS5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmUuaCIKICNpbmNsdWRl
IDxXZWJDb3JlL1Nlc3Npb25JRC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpA
QCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgQVBJIHsKIAogY2xhc3MgV2Vic2l0ZURhdGFTdG9y
ZSBmaW5hbCA6IHB1YmxpYyBPYmplY3RJbXBsPE9iamVjdDo6VHlwZTo6V2Vic2l0ZURhdGFTdG9y
ZT4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8V2Vic2l0ZURhdGFTdG9yZT4gZGVmYXVs
dERhdGFTdG9yZSgpOworICAgIHN0YXRpYyBSZWY8V2Vic2l0ZURhdGFTdG9yZT4gZGVmYXVsdERh
dGFTdG9yZSgpOwogICAgIHN0YXRpYyBSZWY8V2Vic2l0ZURhdGFTdG9yZT4gY3JlYXRlTm9uUGVy
c2lzdGVudERhdGFTdG9yZSgpOwogICAgIHN0YXRpYyBSZWY8V2Vic2l0ZURhdGFTdG9yZT4gY3Jl
YXRlKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6Q29uZmlndXJhdGlvbik7CiAKQEAgLTQ5LDYg
KzQ5LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVnaXN0ZXJTaGFyZWRSZXNvdXJjZUxvYWRPYnNl
cnZlcigpOwogCiAgICAgV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlJiB3ZWJzaXRlRGF0YVN0b3Jl
KCkgeyByZXR1cm4gKm1fd2Vic2l0ZURhdGFTdG9yZTsgfQorICAgIEhUVFBDb29raWVTdG9yYWdl
JiBodHRwQ29va2llU3RvcmFnZSgpOwogCiAgICAgc3RhdGljIFN0cmluZyBkZWZhdWx0QXBwbGlj
YXRpb25DYWNoZURpcmVjdG9yeSgpOwogICAgIHN0YXRpYyBTdHJpbmcgZGVmYXVsdE5ldHdvcmtD
YWNoZURpcmVjdG9yeSgpOwpAQCAtNzAsNiArNzEsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBT
dHJpbmcgd2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3Qg
U3RyaW5nJiBkaXJlY3RvcnlOYW1lKTsKIAogICAgIFJlZlB0cjxXZWJLaXQ6OldlYnNpdGVEYXRh
U3RvcmU+IG1fd2Vic2l0ZURhdGFTdG9yZTsKKyAgICBSZWZQdHI8SFRUUENvb2tpZVN0b3JhZ2U+
IG1fYXBpSFRUUENvb2tpZVN0b3JhZ2U7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb29raWVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQy9XS0Nvb2tpZU1hbmFnZXIuY3BwCmluZGV4IDI3OGU4M2M1MWUwLi44
MGFjOGE4NjI0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dL
Q29va2llTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dL
Q29va2llTWFuYWdlci5jcHAKQEAgLTYxLDE3ICs2MSwxNyBAQCB2b2lkIFdLQ29va2llTWFuYWdl
ckRlbGV0ZUFsbENvb2tpZXNNb2RpZmllZEFmdGVyRGF0ZShXS0Nvb2tpZU1hbmFnZXJSZWYgY29v
a2llTQogICAgIHVzaW5nIG5hbWVzcGFjZSBzdGQ6OmNocm9ubzsKIAogICAgIGF1dG8gdGltZSA9
IHN5c3RlbV9jbG9jazo6dGltZV9wb2ludChkdXJhdGlvbl9jYXN0PHN5c3RlbV9jbG9jazo6ZHVy
YXRpb24+KGR1cmF0aW9uPGRvdWJsZT4oZGF0ZSkpKTsKLSAgICB0b0ltcGwoY29va2llTWFuYWdl
clJlZiktPmRlbGV0ZUFsbENvb2tpZXNNb2RpZmllZFNpbmNlKFdlYkNvcmU6OlNlc3Npb25JRDo6
ZGVmYXVsdFNlc3Npb25JRCgpLCB0aW1lKTsKKyAgICB0b0ltcGwoY29va2llTWFuYWdlclJlZikt
PmRlbGV0ZUFsbENvb2tpZXNNb2RpZmllZFNpbmNlKFdlYkNvcmU6OlNlc3Npb25JRDo6ZGVmYXVs
dFNlc3Npb25JRCgpLCB0aW1lLCBbXShDYWxsYmFja0Jhc2U6OkVycm9yKXt9KTsKIH0KIAogdm9p
ZCBXS0Nvb2tpZU1hbmFnZXJTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KFdLQ29va2llTWFuYWdl
clJlZiBjb29raWVNYW5hZ2VyLCBXS0hUVFBDb29raWVBY2NlcHRQb2xpY3kgcG9saWN5KQogewot
ICAgIHRvSW1wbChjb29raWVNYW5hZ2VyKS0+c2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSh0b0hU
VFBDb29raWVBY2NlcHRQb2xpY3kocG9saWN5KSk7CisgICAgdG9JbXBsKGNvb2tpZU1hbmFnZXIp
LT5zZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KFdlYkNvcmU6OlNlc3Npb25JRDo6ZGVmYXVsdFNl
c3Npb25JRCgpLCB0b0hUVFBDb29raWVBY2NlcHRQb2xpY3kocG9saWN5KSwgW10oQ2FsbGJhY2tC
YXNlOjpFcnJvcil7fSk7CiB9CiAKIHZvaWQgV0tDb29raWVNYW5hZ2VyR2V0SFRUUENvb2tpZUFj
Y2VwdFBvbGljeShXS0Nvb2tpZU1hbmFnZXJSZWYgY29va2llTWFuYWdlciwgdm9pZCogY29udGV4
dCwgV0tDb29raWVNYW5hZ2VyR2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeUZ1bmN0aW9uIGNhbGxi
YWNrKQogewotICAgIHRvSW1wbChjb29raWVNYW5hZ2VyKS0+Z2V0SFRUUENvb2tpZUFjY2VwdFBv
bGljeSh0b0dlbmVyaWNDYWxsYmFja0Z1bmN0aW9uPFdLSFRUUENvb2tpZUFjY2VwdFBvbGljeSwg
SFRUUENvb2tpZUFjY2VwdFBvbGljeT4oY29udGV4dCwgY2FsbGJhY2spKTsKKyAgICB0b0ltcGwo
Y29va2llTWFuYWdlciktPmdldEhUVFBDb29raWVBY2NlcHRQb2xpY3koV2ViQ29yZTo6U2Vzc2lv
bklEOjpkZWZhdWx0U2Vzc2lvbklEKCksIHRvR2VuZXJpY0NhbGxiYWNrRnVuY3Rpb248V0tIVFRQ
Q29va2llQWNjZXB0UG9saWN5LCBIVFRQQ29va2llQWNjZXB0UG9saWN5Pihjb250ZXh0LCBjYWxs
YmFjaykpOwogfQogCiB2b2lkIFdLQ29va2llTWFuYWdlclNldENvb2tpZVN0b3JhZ2VQYXJ0aXRp
b25pbmdFbmFibGVkKFdLQ29va2llTWFuYWdlclJlZiBjb29raWVNYW5hZ2VyLCBib29sIGVuYWJs
ZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRl
RGF0YVN0b3JlUmVmLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNp
dGVEYXRhU3RvcmVSZWYuY3BwCmluZGV4IGE3N2MxYTg5ZDVjLi42Y2E2OWM2ZDJmZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJl
Zi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFT
dG9yZVJlZi5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgV0tUeXBlSUQgV0tXZWJzaXRlRGF0YVN0b3Jl
R2V0VHlwZUlEKCkKIAogV0tXZWJzaXRlRGF0YVN0b3JlUmVmIFdLV2Vic2l0ZURhdGFTdG9yZUdl
dERlZmF1bHREYXRhU3RvcmUoKQogewotICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKEFQSTo6V2Vi
c2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZSgpLmdldCgpKTsKKyAgICByZXR1cm4gV2Vi
S2l0Ojp0b0FQSShBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmUoKS5wdHIo
KSk7CiB9CiAKIFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBXS1dlYnNpdGVEYXRhU3RvcmVDcmVhdGVO
b25QZXJzaXN0ZW50RGF0YVN0b3JlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQppbmRleCAzZjQzYmZjNjVkZC4uOGY4N2RhY2U4
MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9j
ZXNzUG9vbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJv
Y2Vzc1Bvb2wubW0KQEAgLTE5Niw3ICsxOTYsNyBAQCBzdGF0aWMgV2ViS2l0OjpIVFRQQ29va2ll
QWNjZXB0UG9saWN5IHRvSFRUUENvb2tpZUFjY2VwdFBvbGljeShOU0hUVFBDb29raWVBY2NlcAog
CiAtICh2b2lkKV9zZXRDb29raWVBY2NlcHRQb2xpY3k6KE5TSFRUUENvb2tpZUFjY2VwdFBvbGlj
eSlwb2xpY3kKIHsKLSAgICBfcHJvY2Vzc1Bvb2wtPnN1cHBsZW1lbnQ8V2ViS2l0OjpXZWJDb29r
aWVNYW5hZ2VyUHJveHk+KCktPnNldEhUVFBDb29raWVBY2NlcHRQb2xpY3kodG9IVFRQQ29va2ll
QWNjZXB0UG9saWN5KHBvbGljeSkpOworICAgIF9wcm9jZXNzUG9vbC0+c3VwcGxlbWVudDxXZWJL
aXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eT4oKS0+c2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShX
ZWJDb3JlOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSwgdG9IVFRQQ29va2llQWNjZXB0
UG9saWN5KHBvbGljeSksIFtdKFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcil7fSk7CiB9CiAK
IC0gKGlkKV9vYmplY3RGb3JCdW5kbGVQYXJhbWV0ZXI6KE5TU3RyaW5nICopcGFyYW1ldGVyCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURh
dGFTdG9yZS5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRl
RGF0YVN0b3JlLm1tCmluZGV4IDcxMzgxOWU0NzQwLi5iZThiZWRkMmYyMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0K
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3Rv
cmUubW0KQEAgLTMxLDYgKzMxLDcgQEAKICNpbXBvcnQgIldLTlNBcnJheS5oIgogI2ltcG9ydCAi
V0tXZWJzaXRlRGF0YVJlY29yZEludGVybmFsLmgiCiAjaW1wb3J0ICJXZWJzaXRlRGF0YUZldGNo
T3B0aW9uLmgiCisjaW1wb3J0ICJfV0tIVFRQQ29va2llU3RvcmFnZUludGVybmFsLmgiCiAjaW1w
b3J0ICJfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oIgogI2ltcG9ydCA8d3RmL0Js
b2NrUHRyLmg+CiAKQEAgLTM4LDcgKzM5LDcgQEAgQGltcGxlbWVudGF0aW9uIFdLV2Vic2l0ZURh
dGFTdG9yZQogCiArIChXS1dlYnNpdGVEYXRhU3RvcmUgKilkZWZhdWx0RGF0YVN0b3JlCiB7Ci0g
ICAgcmV0dXJuIFdlYktpdDo6d3JhcHBlcigqQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0
RGF0YVN0b3JlKCkuZ2V0KCkpOworICAgIHJldHVybiBXZWJLaXQ6OndyYXBwZXIoQVBJOjpXZWJz
aXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlKCkuZ2V0KCkpOwogfQogCiArIChXS1dlYnNp
dGVEYXRhU3RvcmUgKilub25QZXJzaXN0ZW50RGF0YVN0b3JlCkBAIC0xOTQsNiArMTk1LDExIEBA
IC0gKHZvaWQpX3NldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkOihCT09MKWVuYWJsZWQK
ICAgICBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NFbmFibGVkKGVuYWJsZWQpOwogfQogCistIChfV0tIVFRQQ29va2llU3RvcmFn
ZSAqKV9odHRwQ29va2llU3RvcmFnZQoreworICAgIHJldHVybiBXZWJLaXQ6OndyYXBwZXIoX3dl
YnNpdGVEYXRhU3RvcmUtPmh0dHBDb29raWVTdG9yYWdlKCkpOworfQorCiBAZW5kCiAKICNlbmRp
ZiAvLyBXS19BUElfRU5BQkxFRApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaAppbmRleCA0OWQ5
YmU2YWQxMS4uZmMxOGJlMjgzOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oCkBAIC0y
OSw2ICsyOSw3IEBACiAKIE5TX0FTU1VNRV9OT05OVUxMX0JFR0lOCiAKK0BjbGFzcyBfV0tIVFRQ
Q29va2llU3RvcmFnZTsKIEBjbGFzcyBfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjsK
IAogdHlwZWRlZiBOU19PUFRJT05TKE5TVUludGVnZXIsIF9XS1dlYnNpdGVEYXRhU3RvcmVGZXRj
aE9wdGlvbnMpIHsKQEAgLTQzLDYgKzQ0LDggQEAgdHlwZWRlZiBOU19PUFRJT05TKE5TVUludGVn
ZXIsIF9XS1dlYnNpdGVEYXRhU3RvcmVGZXRjaE9wdGlvbnMpIHsKIAogQHByb3BlcnR5IChub25h
dG9taWMsIHNldHRlcj1fc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQ6KSBCT09MIF9y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCBXS19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4x
MiksIGlvcygxMC4wKSk7CiAKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgX1dLSFRU
UENvb2tpZVN0b3JhZ2UgKl9odHRwQ29va2llU3RvcmFnZSBXS19BUElfQVZBSUxBQkxFKG1hY29z
eChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKwogQGVuZAogCiBOU19BU1NVTUVfTk9O
TlVMTF9FTkQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLSFRUUENvb2tpZVN0b3JhZ2UuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLSFRUUENvb2tpZVN0b3JhZ2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMC4uMGVhMjI1NWY5NWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0NvY29hL19XS0hUVFBDb29raWVTdG9yYWdlLmgKQEAgLTAsMCArMSw0OSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbXBvcnQgPFdlYktpdC9XS0ZvdW5kYXRpb24uaD4KKworI2lmIFdL
X0FQSV9FTkFCTEVECisKKyNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgorCitXS19D
TEFTU19BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpCitAaW50
ZXJmYWNlIF9XS0hUVFBDb29raWVTdG9yYWdlIDogTlNPYmplY3QKKworLSAodm9pZClmZXRjaENv
b2tpZXM6KG5vbm51bGwgdm9pZCAoXikoTlNBcnJheTxOU0hUVFBDb29raWUgKj4gKl9OdWxsYWJs
ZSkpY29tcGxldGlvbkhhbmRsZXI7CistICh2b2lkKWZldGNoQ29va2llc0ZvclVSTDoobm9ubnVs
bCBOU1VSTCAqKXVybCBjb21wbGV0aW9uSGFuZGxlcjoobm9ubnVsbCB2b2lkICheKShOU0FycmF5
PE5TSFRUUENvb2tpZSAqPiAqX051bGxhYmxlKSljb21wbGV0aW9uSGFuZGxlcjsKKworLSAodm9p
ZClzZXRDb29raWU6KG5vbm51bGwgTlNIVFRQQ29va2llICopY29va2llIGNvbXBsZXRpb25IYW5k
bGVyOihudWxsYWJsZSB2b2lkICheKSgpKWNvbXBsZXRpb25IYW5kbGVyOworLSAodm9pZClzZXRD
b29raWVzOihub25udWxsIE5TQXJyYXk8TlNIVFRQQ29va2llICo+ICopY29va2llcyBmb3JVUkw6
KG51bGxhYmxlIE5TVVJMICopdXJsIG1haW5Eb2N1bWVudFVSTDoobnVsbGFibGUgTlNVUkwgKilt
YWluRG9jdW1lbnRVUkwgY29tcGxldGlvbkhhbmRsZXI6KG51bGxhYmxlIHZvaWQgKF4pKCkpY29t
cGxldGlvbkhhbmRsZXI7CisKKy0gKHZvaWQpZGVsZXRlQ29va2llOihub25udWxsIE5TSFRUUENv
b2tpZSAqKWNvb2tpZSBjb21wbGV0aW9uSGFuZGxlcjoobnVsbGFibGUgdm9pZCAoXikoKSljb21w
bGV0aW9uSGFuZGxlcjsKKy0gKHZvaWQpcmVtb3ZlQ29va2llc1NpbmNlRGF0ZToobm9ubnVsbCBO
U0RhdGUgKilkYXRlIGNvbXBsZXRpb25IYW5kbGVyOihudWxsYWJsZSB2b2lkICheKSgpKWNvbXBs
ZXRpb25IYW5kbGVyOworCistICh2b2lkKXNldENvb2tpZUFjY2VwdFBvbGljeTooTlNIVFRQQ29v
a2llQWNjZXB0UG9saWN5KXBvbGljeSBjb21wbGV0aW9uSGFuZGxlcjoobnVsbGFibGUgdm9pZCAo
XikoKSljb21wbGV0aW9uSGFuZGxlcjsKKy0gKHZvaWQpZmV0Y2hDb29raWVBY2NlcHRQb2xpY3k6
KG5vbm51bGwgdm9pZCAoXikoTlNIVFRQQ29va2llQWNjZXB0UG9saWN5KSljb21wbGV0aW9uSGFu
ZGxlcjsKKworQGVuZAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLSFRUUENvb2tpZVN0b3JhZ2UubW0gYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0NvY29hL19XS0hUVFBDb29raWVTdG9yYWdlLm1tCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4xMmNkYTMzZGQ4ZgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSFRUUENvb2tpZVN0b3JhZ2Uu
bW0KQEAgLTAsMCArMSwxNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNp
bXBvcnQgIl9XS0hUVFBDb29raWVTdG9yYWdlSW50ZXJuYWwuaCIKKworI2lmIFdLX0FQSV9FTkFC
TEVECisKKyNpbmNsdWRlICJIVFRQQ29va2llQWNjZXB0UG9saWN5LmgiCisjaW5jbHVkZSA8V2Vi
Q29yZS9DRk5ldHdvcmtTUEkuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0Nvb2tpZS5oPgorI2luY2x1
ZGUgPFdlYkNvcmUvVVJMLmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorCitzdGF0aWMg
TlNBcnJheTxOU0hUVFBDb29raWUgKj4gKmNvcmVDb29raWVzVG9OU0Nvb2tpZXMoY29uc3QgVmVj
dG9yPFdlYkNvcmU6OkNvb2tpZT4mIGNvcmVDb29raWVzKQoreworICAgIE5TTXV0YWJsZUFycmF5
PE5TSFRUUENvb2tpZSAqPiAqbnNDb29raWVzID0gW05TTXV0YWJsZUFycmF5IGFycmF5V2l0aENh
cGFjaXR5OmNvcmVDb29raWVzLnNpemUoKV07CisKKyAgICBmb3IgKGF1dG8mIGNvb2tpZSA6IGNv
cmVDb29raWVzKQorICAgICAgICBbbnNDb29raWVzIGFkZE9iamVjdDooTlNIVFRQQ29va2llKilj
b29raWVdOworCisgICAgcmV0dXJuIG5zQ29va2llczsKK30KKworQGltcGxlbWVudGF0aW9uIF9X
S0hUVFBDb29raWVTdG9yYWdlCisKKy0gKHZvaWQpZGVhbGxvYworeworICAgIF9jb29raWVTdG9y
YWdlLT5BUEk6OkhUVFBDb29raWVTdG9yYWdlOjp+SFRUUENvb2tpZVN0b3JhZ2UoKTsKKworICAg
IFtzdXBlciBkZWFsbG9jXTsKK30KKworLSAodm9pZClmZXRjaENvb2tpZXM6KHZvaWQgKF4pKE5T
QXJyYXk8TlNIVFRQQ29va2llICo+ICopKWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAgX2Nvb2tp
ZVN0b3JhZ2UtPmNvb2tpZXMoW2hhbmRsZXIgPSBhZG9wdE5TKFtjb21wbGV0aW9uSGFuZGxlciBj
b3B5XSldKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiBjb29raWVzKSB7CisgICAgICAg
IGF1dG8gcmF3SGFuZGxlciA9ICh2b2lkICheKShOU0FycmF5PE5TSFRUUENvb2tpZSAqPiAqKSlo
YW5kbGVyLmdldCgpOworICAgICAgICByYXdIYW5kbGVyKGNvcmVDb29raWVzVG9OU0Nvb2tpZXMo
Y29va2llcykpOworICAgIH0pOworfQorCistICh2b2lkKWZldGNoQ29va2llc0ZvclVSTDooTlNV
UkwgKil1cmwgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TQXJyYXk8TlNIVFRQQ29va2ll
ICo+ICopKWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAgX2Nvb2tpZVN0b3JhZ2UtPmNvb2tpZXMo
dXJsLCBbaGFuZGxlciA9IGFkb3B0TlMoW2NvbXBsZXRpb25IYW5kbGVyIGNvcHldKV0oY29uc3Qg
VmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mIGNvb2tpZXMpIHsKKyAgICAgICAgYXV0byByYXdIYW5k
bGVyID0gKHZvaWQgKF4pKE5TQXJyYXk8TlNIVFRQQ29va2llICo+ICopKWhhbmRsZXIuZ2V0KCk7
CisgICAgICAgIHJhd0hhbmRsZXIoY29yZUNvb2tpZXNUb05TQ29va2llcyhjb29raWVzKSk7Cisg
ICAgfSk7Cit9CisKKy0gKHZvaWQpc2V0Q29va2llOihOU0hUVFBDb29raWUgKiljb29raWUgY29t
cGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKCkpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICBfY29v
a2llU3RvcmFnZS0+c2V0Q29va2llKGNvb2tpZSwgW2hhbmRsZXIgPSBhZG9wdE5TKFtjb21wbGV0
aW9uSGFuZGxlciBjb3B5XSldKCkgeworICAgICAgICBhdXRvIHJhd0hhbmRsZXIgPSAodm9pZCAo
XikoKSloYW5kbGVyLmdldCgpOworICAgICAgICBpZiAocmF3SGFuZGxlcikKKyAgICAgICAgICAg
IHJhd0hhbmRsZXIoKTsKKyAgICB9KTsKKworfQorCistICh2b2lkKWRlbGV0ZUNvb2tpZTooTlNI
VFRQQ29va2llICopY29va2llIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKSgpKWNvbXBsZXRp
b25IYW5kbGVyCit7CisgICAgX2Nvb2tpZVN0b3JhZ2UtPmRlbGV0ZUNvb2tpZShjb29raWUsIFto
YW5kbGVyID0gYWRvcHROUyhbY29tcGxldGlvbkhhbmRsZXIgY29weV0pXSgpIHsKKyAgICAgICAg
YXV0byByYXdIYW5kbGVyID0gKHZvaWQgKF4pKCkpaGFuZGxlci5nZXQoKTsKKyAgICAgICAgaWYg
KHJhd0hhbmRsZXIpCisgICAgICAgICAgICByYXdIYW5kbGVyKCk7CisgICAgfSk7Cit9CisKKy0g
KHZvaWQpc2V0Q29va2llczooTlNBcnJheTxOU0hUVFBDb29raWUgKj4gKiljb29raWVzIGZvclVS
TDooTlNVUkwgKilVUkwgbWFpbkRvY3VtZW50VVJMOihOU1VSTCAqKW1haW5Eb2N1bWVudFVSTCBj
b21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoKSljb21wbGV0aW9uSGFuZGxlcgoreworICAgIFZl
Y3RvcjxXZWJDb3JlOjpDb29raWU+IGNvcmVDb29raWVzOworICAgIGNvcmVDb29raWVzLnJlc2Vy
dmVJbml0aWFsQ2FwYWNpdHkoY29va2llcy5jb3VudCk7CisgICAgZm9yIChOU0hUVFBDb29raWUg
KmNvb2tpZSA6IGNvb2tpZXMpCisgICAgICAgIGNvcmVDb29raWVzLnVuY2hlY2tlZEFwcGVuZChj
b29raWUpOworCisgICAgX2Nvb2tpZVN0b3JhZ2UtPnNldENvb2tpZXMoY29yZUNvb2tpZXMsIFVS
TCwgbWFpbkRvY3VtZW50VVJMLCBbaGFuZGxlciA9IGFkb3B0TlMoW2NvbXBsZXRpb25IYW5kbGVy
IGNvcHldKV0oKSB7CisgICAgICAgIGF1dG8gcmF3SGFuZGxlciA9ICh2b2lkICheKSgpKWhhbmRs
ZXIuZ2V0KCk7CisgICAgICAgIGlmIChyYXdIYW5kbGVyKQorICAgICAgICAgICAgcmF3SGFuZGxl
cigpOworICAgIH0pOworfQorCistICh2b2lkKXJlbW92ZUNvb2tpZXNTaW5jZURhdGU6KE5TRGF0
ZSAqKWRhdGUgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKCkpY29tcGxldGlvbkhhbmRsZXIK
K3sKKyAgICBhdXRvIHN5c3RlbUNsb2NrVGltZSA9IHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6
OnRpbWVfcG9pbnQoc3RkOjpjaHJvbm86OmR1cmF0aW9uX2Nhc3Q8c3RkOjpjaHJvbm86OnN5c3Rl
bV9jbG9jazo6ZHVyYXRpb24+KHN0ZDo6Y2hyb25vOjpkdXJhdGlvbjxkb3VibGU+KGRhdGUudGlt
ZUludGVydmFsU2luY2UxOTcwKSkpOworCisgICAgX2Nvb2tpZVN0b3JhZ2UtPnJlbW92ZUNvb2tp
ZXNTaW5jZURhdGUoc3lzdGVtQ2xvY2tUaW1lLCBbaGFuZGxlciA9IGFkb3B0TlMoW2NvbXBsZXRp
b25IYW5kbGVyIGNvcHldKV0oKSB7CisgICAgICAgIGF1dG8gcmF3SGFuZGxlciA9ICh2b2lkIChe
KSgpKWhhbmRsZXIuZ2V0KCk7CisgICAgICAgIGlmIChyYXdIYW5kbGVyKQorICAgICAgICAgICAg
cmF3SGFuZGxlcigpOworICAgIH0pOworfQorCistICh2b2lkKXNldENvb2tpZUFjY2VwdFBvbGlj
eTooTlNIVFRQQ29va2llQWNjZXB0UG9saWN5KXBvbGljeSBjb21wbGV0aW9uSGFuZGxlcjoodm9p
ZCAoXikoKSljb21wbGV0aW9uSGFuZGxlcgoreworICAgIF9jb29raWVTdG9yYWdlLT5zZXRIVFRQ
Q29va2llQWNjZXB0UG9saWN5KHBvbGljeSwgW2hhbmRsZXIgPSBhZG9wdE5TKFtjb21wbGV0aW9u
SGFuZGxlciBjb3B5XSldKCkgeworICAgICAgICBhdXRvIHJhd0hhbmRsZXIgPSAodm9pZCAoXiko
KSloYW5kbGVyLmdldCgpOworICAgICAgICBpZiAocmF3SGFuZGxlcikKKyAgICAgICAgICAgIHJh
d0hhbmRsZXIoKTsKKyAgICB9KTsKK30KKworc3RhdGljIE5TSFRUUENvb2tpZUFjY2VwdFBvbGlj
eSBraXRDb29raWVQb2xpY3lUb05TQ29va2llUG9saWN5KFdlYktpdDo6SFRUUENvb2tpZUFjY2Vw
dFBvbGljeSBraXRQb2xpY3kpCit7CisgICAgc3dpdGNoIChraXRQb2xpY3kpIHsKKyAgICBjYXNl
IFdlYktpdDo6SFRUUENvb2tpZUFjY2VwdFBvbGljeUFsd2F5czoKKyAgICAgICAgcmV0dXJuIE5T
SFRUUENvb2tpZUFjY2VwdFBvbGljeUFsd2F5czsKKyAgICBjYXNlIFdlYktpdDo6SFRUUENvb2tp
ZUFjY2VwdFBvbGljeU5ldmVyOgorICAgICAgICByZXR1cm4gTlNIVFRQQ29va2llQWNjZXB0UG9s
aWN5TmV2ZXI7CisgICAgY2FzZSBXZWJLaXQ6OkhUVFBDb29raWVBY2NlcHRQb2xpY3lPbmx5RnJv
bU1haW5Eb2N1bWVudERvbWFpbjoKKyAgICAgICAgcmV0dXJuIE5TSFRUUENvb2tpZUFjY2VwdFBv
bGljeU9ubHlGcm9tTWFpbkRvY3VtZW50RG9tYWluOworICAgIGNhc2UgV2ViS2l0OjpIVFRQQ29v
a2llQWNjZXB0UG9saWN5RXhjbHVzaXZlbHlGcm9tTWFpbkRvY3VtZW50RG9tYWluOgorICAgICAg
ICAvLyBDYXN0IHJlcXVpcmVkIGJlY2F1c2Ugb2YgQ0ZOZXR3b3JrU1BJLgorICAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8TlNIVFRQQ29va2llQWNjZXB0UG9saWN5PihOU0hUVFBDb29raWVBY2Nl
cHRQb2xpY3lFeGNsdXNpdmVseUZyb21NYWluRG9jdW1lbnREb21haW4pOworICAgIGRlZmF1bHQ6
CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKworICAgIHJldHVybiBOU0hU
VFBDb29raWVBY2NlcHRQb2xpY3lOZXZlcjsKK30KKworLSAodm9pZClmZXRjaENvb2tpZUFjY2Vw
dFBvbGljeToodm9pZCAoXikoTlNIVFRQQ29va2llQWNjZXB0UG9saWN5KSljb21wbGV0aW9uSGFu
ZGxlcgoreworICAgIF9jb29raWVTdG9yYWdlLT5nZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KFto
YW5kbGVyID0gYWRvcHROUyhbY29tcGxldGlvbkhhbmRsZXIgY29weV0pXShXZWJLaXQ6OkhUVFBD
b29raWVBY2NlcHRQb2xpY3kgcG9saWN5KSB7CisgICAgICAgIGF1dG8gcmF3SGFuZGxlciA9ICh2
b2lkICheKShOU0hUVFBDb29raWVBY2NlcHRQb2xpY3kpKWhhbmRsZXIuZ2V0KCk7CisgICAgICAg
IHJhd0hhbmRsZXIoa2l0Q29va2llUG9saWN5VG9OU0Nvb2tpZVBvbGljeShwb2xpY3kpKTsKKyAg
ICB9KTsKK30KKworI3ByYWdtYSBtYXJrIFdLT2JqZWN0IHByb3RvY29sIGltcGxlbWVudGF0aW9u
CisKKy0gKEFQSTo6T2JqZWN0JilfYXBpT2JqZWN0Cit7CisgICAgcmV0dXJuICpfY29va2llU3Rv
cmFnZTsKK30KKworQGVuZAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLSFRUUENvb2tpZVN0b3JhZ2VJbnRlcm5hbC5oIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tIVFRQQ29va2llU3RvcmFnZUludGVybmFs
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjNkZTAxYmE1YmYxCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tI
VFRQQ29va2llU3RvcmFnZUludGVybmFsLmgKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbXBvcnQgIl9XS0hUVFBDb29raWVTdG9yYWdlLmgiCisKKyNpZiBXS19BUElfRU5BQkxFRAor
CisjaW1wb3J0ICJBUElIVFRQQ29va2llU3RvcmFnZS5oIgorI2ltcG9ydCAiV0tPYmplY3QuaCIK
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK2lubGluZSBfV0tIVFRQQ29va2llU3RvcmFnZSAqd3Jh
cHBlcihBUEk6OkhUVFBDb29raWVTdG9yYWdlJiBjb29raWVTdG9yYWdlKQoreworICAgIEFTU0VS
VChbY29va2llU3RvcmFnZS53cmFwcGVyKCkgaXNLaW5kT2ZDbGFzczpbX1dLSFRUUENvb2tpZVN0
b3JhZ2UgY2xhc3NdXSk7CisgICAgcmV0dXJuIChfV0tIVFRQQ29va2llU3RvcmFnZSAqKWNvb2tp
ZVN0b3JhZ2Uud3JhcHBlcigpOworfQorCit9CisKK0BpbnRlcmZhY2UgX1dLSFRUUENvb2tpZVN0
b3JhZ2UgKCkgPFdLT2JqZWN0PiB7CitAcGFja2FnZQorICAgIEFQSTo6T2JqZWN0U3RvcmFnZTxB
UEk6OkhUVFBDb29raWVTdG9yYWdlPiBfY29va2llU3RvcmFnZTsKK30KK0BlbmQKKworI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRv
bWF0aW9uU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0b21hdGlvbi9X
ZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKaW5kZXggNDhjYWRjNzEyNGYuLmE4MzE4NGFmOTAyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0
aW9uU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1dG9tYXRpb24v
V2ViQXV0b21hdGlvblNlc3Npb24uY3BwCkBAIC03MzAsNyArNzMwLDcgQEAgdm9pZCBXZWJBdXRv
bWF0aW9uU2Vzc2lvbjo6YWRkU2luZ2xlQ29va2llKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywg
Y29uc3QgU3RyaW4KIAogICAgIC8vIEZJWE1FOiBVc2luZyBhY3RpdmVVUkwgaGVyZSB0d2ljZSBp
cyBiYXNpY2FsbHkgc2F5aW5nICJ0aGlzIGlzIGFsd2F5cyBpbiB0aGUgY29udGV4dCBvZiB0aGUg
bWFpbiBkb2N1bWVudCIKICAgICAvLyB3aGljaCBwcm9iYWJseSBpc24ndCBhY2N1cmF0ZS4KLSAg
ICBjb29raWVNYW5hZ2VyLT5zZXRDb29raWVzKFdlYkNvcmU6OlNlc3Npb25JRDo6ZGVmYXVsdFNl
c3Npb25JRCgpLCB7IGNvb2tpZSB9LCBhY3RpdmVVUkwsIGFjdGl2ZVVSTCk7CisgICAgY29va2ll
TWFuYWdlci0+c2V0Q29va2llcyhXZWJDb3JlOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQo
KSwgeyBjb29raWUgfSwgYWN0aXZlVVJMLCBhY3RpdmVVUkwsIFtdKENhbGxiYWNrQmFzZTo6RXJy
b3Ipe30pOwogCiAgICAgY2FsbGJhY2stPnNlbmRTdWNjZXNzKCk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkuY3BwCmluZGV4IDJlYWE1
Y2UzYmZhLi5lMDIzYjgyNWVlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYkNvb2tpZU1hbmFnZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYkNvb2tpZU1hbmFnZXJQcm94eS5jcHAKQEAgLTMyLDggKzMyLDExIEBACiAjaW5jbHVkZSAi
V2ViQ29va2llTWFuYWdlck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViQ29va2llTWFuYWdlclBy
b3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgorI2luY2x1ZGUgPFdl
YkNvcmUvQ29va2llLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbkRhdGEuaD4K
IAordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjb25z
dCBjaGFyKiBXZWJDb29raWVNYW5hZ2VyUHJveHk6OnN1cHBsZW1lbnROYW1lKCkKQEAgLTk0LDcg
Kzk3LDcgQEAgdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRlcmVmV2ViQ29udGV4dFN1cHBs
ZW1lbnQoKQogICAgIEFQSTo6T2JqZWN0OjpkZXJlZigpOwogfQogCi12b2lkIFdlYkNvb2tpZU1h
bmFnZXJQcm94eTo6Z2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgRnVuY3Rpb248dm9pZCAoQVBJOjpBcnJheSosIENhbGxiYWNrQmFzZTo6RXJyb3Ip
PiYmIGNhbGxiYWNrRnVuY3Rpb24pCit2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6Z2V0SG9z
dG5hbWVzV2l0aENvb2tpZXMoU2Vzc2lvbklEIHNlc3Npb25JRCwgRnVuY3Rpb248dm9pZCAoQVBJ
OjpBcnJheSosIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7CiAg
ICAgYXV0byBjYWxsYmFjayA9IEFycmF5Q2FsbGJhY2s6OmNyZWF0ZShXVEZNb3ZlKGNhbGxiYWNr
RnVuY3Rpb24pKTsKICAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gY2FsbGJhY2stPmNhbGxiYWNr
SUQoKTsKQEAgLTExNCwzNyArMTE3LDk2IEBAIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5Ojpk
aWRHZXRIb3N0bmFtZXNXaXRoQ29va2llcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgaG9zCiAgICAg
Y2FsbGJhY2stPnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZShBUEk6OkFycmF5OjpjcmVh
dGVTdHJpbmdBcnJheShob3N0bmFtZXMpLnB0cigpKTsKIH0KIAotdm9pZCBXZWJDb29raWVNYW5h
Z2VyUHJveHk6OmRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZShXZWJDb3JlOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQordm9pZCBXZWJDb29raWVNYW5hZ2VyUHJv
eHk6OmRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZShTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBT
dHJpbmcmIGhvc3RuYW1lKQogewogICAgIHByb2Nlc3NQb29sKCktPnNlbmRUb05ldHdvcmtpbmdQ
cm9jZXNzUmVsYXVuY2hpbmdJZk5lY2Vzc2FyeShNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6
RGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKHNlc3Npb25JRCwgaG9zdG5hbWUpKTsKIH0KIAotdm9p
ZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRlbGV0ZUFsbENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lv
bklEIHNlc3Npb25JRCkKK3ZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpkZWxldGVBbGxDb29r
aWVzKFNlc3Npb25JRCBzZXNzaW9uSUQpCiB7CiAgICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvTmV0
d29ya2luZ1Byb2Nlc3NSZWxhdW5jaGluZ0lmTmVjZXNzYXJ5KE1lc3NhZ2VzOjpXZWJDb29raWVN
YW5hZ2VyOjpEZWxldGVBbGxDb29raWVzKHNlc3Npb25JRCkpOwogfQogCi12b2lkIFdlYkNvb2tp
ZU1hbmFnZXJQcm94eTo6ZGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2UoV2ViQ29yZTo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCB0
aW1lKQordm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRlbGV0ZUNvb2tpZShTZXNzaW9uSUQg
c2Vzc2lvbklELCBjb25zdCBDb29raWUmIGNvb2tpZSwgRnVuY3Rpb248dm9pZCAoQ2FsbGJhY2tC
YXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKK3sKKyAgICBhdXRvIGNhbGxiYWNrID0g
Vm9pZENhbGxiYWNrOjpjcmVhdGUoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSk7CisgICAgdWlu
dDY0X3QgY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7CisgICAgbV92b2lkQ2Fs
bGJhY2tzLnNldChjYWxsYmFja0lELCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisKKyAgICBwcm9jZXNz
UG9vbCgpLT5zZW5kVG9OZXR3b3JraW5nUHJvY2Vzc1JlbGF1bmNoaW5nSWZOZWNlc3NhcnkoTWVz
c2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OkRlbGV0ZUNvb2tpZShzZXNzaW9uSUQsIGNvb2tpZSwg
Y2FsbGJhY2tJRCkpOworfQorCit2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGVsZXRlQWxs
Q29va2llc01vZGlmaWVkU2luY2UoU2Vzc2lvbklEIHNlc3Npb25JRCwgc3RkOjpjaHJvbm86OnN5
c3RlbV9jbG9jazo6dGltZV9wb2ludCB0aW1lLCBGdW5jdGlvbjx2b2lkIChDYWxsYmFja0Jhc2U6
OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQoreworICAgIGF1dG8gY2FsbGJhY2sgPSBWb2lk
Q2FsbGJhY2s6OmNyZWF0ZShXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pKTsKKyAgICB1aW50NjRf
dCBjYWxsYmFja0lEID0gY2FsbGJhY2stPmNhbGxiYWNrSUQoKTsKKyAgICBtX3ZvaWRDYWxsYmFj
a3Muc2V0KGNhbGxiYWNrSUQsIFdURk1vdmUoY2FsbGJhY2spKTsKKworICAgIHByb2Nlc3NQb29s
KCktPnNlbmRUb05ldHdvcmtpbmdQcm9jZXNzUmVsYXVuY2hpbmdJZk5lY2Vzc2FyeShNZXNzYWdl
czo6V2ViQ29va2llTWFuYWdlcjo6RGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2Uoc2Vzc2lv
bklELCB0aW1lLCBjYWxsYmFja0lEKSk7Cit9CisKK3ZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5
OjpzZXRDb29raWUoU2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgQ29va2llJiBjb29raWUsIEZ1
bmN0aW9uPHZvaWQgKENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7
Ci0gICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvTmV0d29ya2luZ1Byb2Nlc3NSZWxhdW5jaGluZ0lm
TmVjZXNzYXJ5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpEZWxldGVBbGxDb29raWVzTW9k
aWZpZWRTaW5jZShzZXNzaW9uSUQsIHRpbWUpKTsKKyAgICBhdXRvIGNhbGxiYWNrID0gVm9pZENh
bGxiYWNrOjpjcmVhdGUoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSk7CisgICAgdWludDY0X3Qg
Y2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7CisgICAgbV92b2lkQ2FsbGJhY2tz
LnNldChjYWxsYmFja0lELCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisKKyAgICBwcm9jZXNzUG9vbCgp
LT5zZW5kVG9OZXR3b3JraW5nUHJvY2Vzc1JlbGF1bmNoaW5nSWZOZWNlc3NhcnkoTWVzc2FnZXM6
OldlYkNvb2tpZU1hbmFnZXI6OlNldENvb2tpZShzZXNzaW9uSUQsIGNvb2tpZSwgY2FsbGJhY2tJ
RCkpOwogfQogCi12b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6c2V0Q29va2llcyhXZWJDb3Jl
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYgY29v
a2llcywgY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwsIGNvbnN0IFdlYkNvcmU6OlVSTCYgbWFpbkRv
Y3VtZW50VVJMKQordm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OnNldENvb2tpZXMoU2Vzc2lv
bklEIHNlc3Npb25JRCwgY29uc3QgVmVjdG9yPENvb2tpZT4mIGNvb2tpZXMsIGNvbnN0IFVSTCYg
dXJsLCBjb25zdCBVUkwmIG1haW5Eb2N1bWVudFVSTCwgRnVuY3Rpb248dm9pZCAoQ2FsbGJhY2tC
YXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKLSAgICBwcm9jZXNzUG9vbCgpLT5z
ZW5kVG9OZXR3b3JraW5nUHJvY2Vzc1JlbGF1bmNoaW5nSWZOZWNlc3NhcnkoTWVzc2FnZXM6Oldl
YkNvb2tpZU1hbmFnZXI6OlNldENvb2tpZXMoc2Vzc2lvbklELCBjb29raWVzLCB1cmwsIG1haW5E
b2N1bWVudFVSTCkpOworICAgIGF1dG8gY2FsbGJhY2sgPSBWb2lkQ2FsbGJhY2s6OmNyZWF0ZShX
VEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pKTsKKyAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gY2Fs
bGJhY2stPmNhbGxiYWNrSUQoKTsKKyAgICBtX3ZvaWRDYWxsYmFja3Muc2V0KGNhbGxiYWNrSUQs
IFdURk1vdmUoY2FsbGJhY2spKTsKKworICAgIHByb2Nlc3NQb29sKCktPnNlbmRUb05ldHdvcmtp
bmdQcm9jZXNzUmVsYXVuY2hpbmdJZk5lY2Vzc2FyeShNZXNzYWdlczo6V2ViQ29va2llTWFuYWdl
cjo6U2V0Q29va2llcyhzZXNzaW9uSUQsIGNvb2tpZXMsIHVybCwgbWFpbkRvY3VtZW50VVJMLCBj
YWxsYmFja0lEKSk7CiB9CiAKLXZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpzdGFydE9ic2Vy
dmluZ0Nvb2tpZUNoYW5nZXMoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCkKK3ZvaWQgV2Vi
Q29va2llTWFuYWdlclByb3h5OjpnZXRBbGxDb29raWVzKFNlc3Npb25JRCBzZXNzaW9uSUQsIEZ1
bmN0aW9uPHZvaWQgKGNvbnN0IFZlY3RvcjxDb29raWU+JiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+
JiYgY2FsbGJhY2tGdW5jdGlvbikKK3sKKyAgICBhdXRvIGNhbGxiYWNrID0gR2V0Q29va2llc0Nh
bGxiYWNrOjpjcmVhdGUoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSk7CisgICAgdWludDY0X3Qg
Y2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7CisgICAgbV9nZXRDb29raWVzQ2Fs
bGJhY2tzLnNldChjYWxsYmFja0lELCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisKKyAgICBwcm9jZXNz
UG9vbCgpLT5zZW5kVG9OZXR3b3JraW5nUHJvY2Vzc1JlbGF1bmNoaW5nSWZOZWNlc3NhcnkoTWVz
c2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OkdldEFsbENvb2tpZXMoc2Vzc2lvbklELCBjYWxsYmFj
a0lEKSk7Cit9CisKK3ZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpnZXRDb29raWVzKFNlc3Np
b25JRCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgdXJsLCBGdW5jdGlvbjx2b2lkIChjb25zdCBWZWN0
b3I8Q29va2llPiYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCit7
CisgICAgYXV0byBjYWxsYmFjayA9IEdldENvb2tpZXNDYWxsYmFjazo6Y3JlYXRlKFdURk1vdmUo
Y2FsbGJhY2tGdW5jdGlvbikpOworICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+
Y2FsbGJhY2tJRCgpOworICAgIG1fZ2V0Q29va2llc0NhbGxiYWNrcy5zZXQoY2FsbGJhY2tJRCwg
V1RGTW92ZShjYWxsYmFjaykpOworCisgICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvTmV0d29ya2lu
Z1Byb2Nlc3NSZWxhdW5jaGluZ0lmTmVjZXNzYXJ5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2Vy
OjpHZXRDb29raWVzKHNlc3Npb25JRCwgdXJsLCBjYWxsYmFja0lEKSk7Cit9CisKK3ZvaWQgV2Vi
Q29va2llTWFuYWdlclByb3h5OjpkaWRTZXRDb29raWVzKHVpbnQ2NF90IGNhbGxiYWNrSUQpCit7
CisgICAgbV92b2lkQ2FsbGJhY2tzLnRha2UoY2FsbGJhY2tJRCktPnBlcmZvcm1DYWxsYmFjaygp
OworfQorCit2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGlkR2V0Q29va2llcyhjb25zdCBW
ZWN0b3I8Q29va2llPiYgY29va2llcywgdWludDY0X3QgY2FsbGJhY2tJRCkKK3sKKyAgICBtX2dl
dENvb2tpZXNDYWxsYmFja3MudGFrZShjYWxsYmFja0lEKS0+cGVyZm9ybUNhbGxiYWNrV2l0aFJl
dHVyblZhbHVlKGNvb2tpZXMpOworfQorCit2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGlk
RGVsZXRlQ29va2llcyh1aW50NjRfdCBjYWxsYmFja0lEKQoreworICAgIG1fdm9pZENhbGxiYWNr
cy50YWtlKGNhbGxiYWNrSUQpLT5wZXJmb3JtQ2FsbGJhY2soKTsKK30KKwordm9pZCBXZWJDb29r
aWVNYW5hZ2VyUHJveHk6OnN0YXJ0T2JzZXJ2aW5nQ29va2llQ2hhbmdlcyhTZXNzaW9uSUQgc2Vz
c2lvbklEKQogewogICAgIHByb2Nlc3NQb29sKCktPnNlbmRUb05ldHdvcmtpbmdQcm9jZXNzUmVs
YXVuY2hpbmdJZk5lY2Vzc2FyeShNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6U3RhcnRPYnNl
cnZpbmdDb29raWVDaGFuZ2VzKHNlc3Npb25JRCkpOwogfQogCi12b2lkIFdlYkNvb2tpZU1hbmFn
ZXJQcm94eTo6c3RvcE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMoV2ViQ29yZTo6U2Vzc2lvbklEIHNl
c3Npb25JRCkKK3ZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpzdG9wT2JzZXJ2aW5nQ29va2ll
Q2hhbmdlcyhTZXNzaW9uSUQgc2Vzc2lvbklEKQogewogICAgIHByb2Nlc3NQb29sKCktPnNlbmRU
b05ldHdvcmtpbmdQcm9jZXNzUmVsYXVuY2hpbmdJZk5lY2Vzc2FyeShNZXNzYWdlczo6V2ViQ29v
a2llTWFuYWdlcjo6U3RvcE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMoc2Vzc2lvbklEKSk7CiB9CiAK
LXZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpzZXRDb29raWVPYnNlcnZlckNhbGxiYWNrKFdl
YkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4mJiBjYWxs
YmFjaykKK3ZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpzZXRDb29raWVPYnNlcnZlckNhbGxi
YWNrKFNlc3Npb25JRCBzZXNzaW9uSUQsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4mJiBjYWxsYmFj
aykKIHsKICAgICBpZiAoY2FsbGJhY2spCiAgICAgICAgIG1fY29va2llT2JzZXJ2ZXJzLnNldChz
ZXNzaW9uSUQsIFdURk1vdmUoY2FsbGJhY2spKTsKQEAgLTE1MiwxNCArMjE0LDE0IEBAIHZvaWQg
V2ViQ29va2llTWFuYWdlclByb3h5OjpzZXRDb29raWVPYnNlcnZlckNhbGxiYWNrKFdlYkNvcmU6
OlNlc3Npb25JRCBzZXNzaW9uCiAgICAgICAgIG1fY29va2llT2JzZXJ2ZXJzLnJlbW92ZShzZXNz
aW9uSUQpOwogfQogCi12b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6Y29va2llc0RpZENoYW5n
ZShXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQordm9pZCBXZWJDb29raWVNYW5hZ2VyUHJv
eHk6OmNvb2tpZXNEaWRDaGFuZ2UoU2Vzc2lvbklEIHNlc3Npb25JRCkKIHsKICAgICBtX2NsaWVu
dC5jb29raWVzRGlkQ2hhbmdlKHRoaXMpOwogICAgIGlmIChhdXRvIGNhbGxiYWNrID0gbV9jb29r
aWVPYnNlcnZlcnMuZ2V0KHNlc3Npb25JRCkpCiAgICAgICAgIGNhbGxiYWNrKCk7CiB9CiAKLXZv
aWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpzZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KEhUVFBD
b29raWVBY2NlcHRQb2xpY3kgcG9saWN5KQordm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OnNl
dEhUVFBDb29raWVBY2NlcHRQb2xpY3koU2Vzc2lvbklELCBIVFRQQ29va2llQWNjZXB0UG9saWN5
IHBvbGljeSwgRnVuY3Rpb248dm9pZCAoQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tG
dW5jdGlvbikKIHsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBpZiAoIXByb2Nlc3NQb29sKCkt
PmlzVXNpbmdUZXN0aW5nTmV0d29ya1Nlc3Npb24oKSkKQEAgLTE3MiwxMSArMjM0LDE2IEBAIHZv
aWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpzZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KEhUVFBD
b29raWVBY2NlcHRQb2xpY3kgcG9sCiAgICAgLy8gVGhlIHBvbGljeSBpcyBub3Qgc2VudCB0byBu
ZXdseSBjcmVhdGVkIHByb2Nlc3NlcyAob25seSBTb3VwIGRvZXMgdGhhdCB2aWEgc2V0SW5pdGlh
bEhUVFBDb29raWVBY2NlcHRQb2xpY3koKSkuIFRoaXMgaXMgbm90IGEgc2VyaW91cyBwcm9ibGVt
LCBiZWNhdXNlOgogICAgIC8vIC0gV2hlbiB0ZXN0aW5nLCB3ZSBvbmx5IGhhdmUgb25lIFdlYlBy
b2Nlc3MgYW5kIG9uZSBOZXR3b3JrUHJvY2VzcywgYW5kIFdlYktpdFRlc3RSdW5uZXIgbmV2ZXIg
cmVzdGFydHMgdGhlbTsKICAgICAvLyAtIFdoZW4gbm90IHRlc3RpbmcsIENvY29hIGhhcyB0aGUg
cG9saWN5IHBlcnNpc3RlZCwgYW5kIHRodXMgbmV3IHByb2Nlc3NlcyB1c2UgaXQgKGV2ZW4gZm9y
IGVwaGVtZXJhbCBzZXNzaW9ucykuCi0gICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvQWxsUHJvY2Vz
c2VzKE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5
KHBvbGljeSkpOwotICAgIHByb2Nlc3NQb29sKCktPnNlbmRUb05ldHdvcmtpbmdQcm9jZXNzKE1l
c3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHBvbGlj
eSkpOworICAgIHByb2Nlc3NQb29sKCktPnNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2Vi
Q29va2llTWFuYWdlcjo6U2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShwb2xpY3ksIDApKTsKKwor
ICAgIGF1dG8gY2FsbGJhY2sgPSBWb2lkQ2FsbGJhY2s6OmNyZWF0ZShXVEZNb3ZlKGNhbGxiYWNr
RnVuY3Rpb24pKTsKKyAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gY2FsbGJhY2stPmNhbGxiYWNr
SUQoKTsKKyAgICBtX3ZvaWRDYWxsYmFja3Muc2V0KGNhbGxiYWNrSUQsIFdURk1vdmUoY2FsbGJh
Y2spKTsKKworICAgIHByb2Nlc3NQb29sKCktPnNlbmRUb05ldHdvcmtpbmdQcm9jZXNzKE1lc3Nh
Z2VzOjpXZWJDb29raWVNYW5hZ2VyOjpTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHBvbGljeSwg
Y2FsbGJhY2tJRCkpOwogfQogCi12b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6Z2V0SFRUUENv
b2tpZUFjY2VwdFBvbGljeShGdW5jdGlvbjx2b2lkIChIVFRQQ29va2llQWNjZXB0UG9saWN5LCBD
YWxsYmFja0Jhc2U6OkVycm9yKT4gY2FsbGJhY2tGdW5jdGlvbikKK3ZvaWQgV2ViQ29va2llTWFu
YWdlclByb3h5OjpnZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KFNlc3Npb25JRCwgRnVuY3Rpb248
dm9pZCAoSFRUUENvb2tpZUFjY2VwdFBvbGljeSwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2Fs
bGJhY2tGdW5jdGlvbikKIHsKICAgICBhdXRvIGNhbGxiYWNrID0gSFRUUENvb2tpZUFjY2VwdFBv
bGljeUNhbGxiYWNrOjpjcmVhdGUoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSk7CiAKQEAgLTE4
OCwxMyArMjU1LDEyIEBAIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpnZXRIVFRQQ29va2ll
QWNjZXB0UG9saWN5KEZ1bmN0aW9uPHZvaWQgKEhUVFBDb29raWVBCiAKIHZvaWQgV2ViQ29va2ll
TWFuYWdlclByb3h5OjpkaWRHZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHVpbnQzMl90IHBvbGlj
eSwgdWludDY0X3QgY2FsbGJhY2tJRCkKIHsKLSAgICBSZWZQdHI8SFRUUENvb2tpZUFjY2VwdFBv
bGljeUNhbGxiYWNrPiBjYWxsYmFjayA9IG1faHR0cENvb2tpZUFjY2VwdFBvbGljeUNhbGxiYWNr
cy50YWtlKGNhbGxiYWNrSUQpOwotICAgIGlmICghY2FsbGJhY2spIHsKLSAgICAgICAgLy8gRklY
TUU6IExvZyBlcnJvciBvciBhc3NlcnQuCi0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgbV9o
dHRwQ29va2llQWNjZXB0UG9saWN5Q2FsbGJhY2tzLnRha2UoY2FsbGJhY2tJRCktPnBlcmZvcm1D
YWxsYmFja1dpdGhSZXR1cm5WYWx1ZShwb2xpY3kpOworfQogCi0gICAgY2FsbGJhY2stPnBlcmZv
cm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZShwb2xpY3kpOwordm9pZCBXZWJDb29raWVNYW5hZ2Vy
UHJveHk6OmRpZFNldEhUVFBDb29raWVBY2NlcHRQb2xpY3kodWludDY0X3QgY2FsbGJhY2tJRCkK
K3sKKyAgICBtX3ZvaWRDYWxsYmFja3MudGFrZShjYWxsYmFja0lEKS0+cGVyZm9ybUNhbGxiYWNr
KCk7CiB9CiAKIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpzZXRDb29raWVTdG9yYWdlUGFy
dGl0aW9uaW5nRW5hYmxlZChib29sIGVuYWJsZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmgKaW5kZXggY2Y3OThkN2NjY2MuLmZkZjg5MWUx
NTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdl
clByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQ
cm94eS5oCkBAIC01NSw2ICs1NSw3IEBAIGNsYXNzIFdlYlByb2Nlc3NQcm94eTsKIAogdHlwZWRl
ZiBHZW5lcmljQ2FsbGJhY2s8QVBJOjpBcnJheSo+IEFycmF5Q2FsbGJhY2s7CiB0eXBlZGVmIEdl
bmVyaWNDYWxsYmFjazxIVFRQQ29va2llQWNjZXB0UG9saWN5PiBIVFRQQ29va2llQWNjZXB0UG9s
aWN5Q2FsbGJhY2s7Cit0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxjb25zdCBWZWN0b3I8V2ViQ29y
ZTo6Q29va2llPiY+IEdldENvb2tpZXNDYWxsYmFjazsKIAogY2xhc3MgV2ViQ29va2llTWFuYWdl
clByb3h5IDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6Q29va2ll
TWFuYWdlcj4sIHB1YmxpYyBXZWJDb250ZXh0U3VwcGxlbWVudCwgcHJpdmF0ZSBJUEM6Ok1lc3Nh
Z2VSZWNlaXZlciB7CiBwdWJsaWM6CkBAIC02NiwxNCArNjcsMjAgQEAgcHVibGljOgogICAgIHZv
aWQgaW5pdGlhbGl6ZUNsaWVudChjb25zdCBXS0Nvb2tpZU1hbmFnZXJDbGllbnRCYXNlKik7CiAg
ICAgCiAgICAgdm9pZCBnZXRIb3N0bmFtZXNXaXRoQ29va2llcyhXZWJDb3JlOjpTZXNzaW9uSUQs
IEZ1bmN0aW9uPHZvaWQgKEFQSTo6QXJyYXkqLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7Cisg
ICAgdm9pZCBkZWxldGVDb29raWUoV2ViQ29yZTo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpD
b29raWUmLCBGdW5jdGlvbjx2b2lkIChDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CiAgICAgdm9p
ZCBkZWxldGVDb29raWVzRm9ySG9zdG5hbWUoV2ViQ29yZTo6U2Vzc2lvbklELCBjb25zdCBTdHJp
bmcmIGhvc3RuYW1lKTsKICAgICB2b2lkIGRlbGV0ZUFsbENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lv
bklEKTsKLSAgICB2b2lkIGRlbGV0ZUFsbENvb2tpZXNNb2RpZmllZFNpbmNlKFdlYkNvcmU6OlNl
c3Npb25JRCwgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCk7CisgICAgdm9p
ZCBkZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZShXZWJDb3JlOjpTZXNzaW9uSUQsIHN0ZDo6
Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQsIEZ1bmN0aW9uPHZvaWQgKENhbGxiYWNr
QmFzZTo6RXJyb3IpPiYmKTsKIAotICAgIHZvaWQgc2V0Q29va2llcyhXZWJDb3JlOjpTZXNzaW9u
SUQsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiwgY29uc3QgV2ViQ29yZTo6VVJMJiwg
Y29uc3QgV2ViQ29yZTo6VVJMJiBtYWluRG9jdW1lbnRVUkwpOworICAgIHZvaWQgc2V0Q29va2ll
KFdlYkNvcmU6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6Q29va2llJiwgRnVuY3Rpb248dm9p
ZCAoQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOworICAgIHZvaWQgc2V0Q29va2llcyhXZWJDb3Jl
OjpTZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiwgY29uc3QgV2ViQ29y
ZTo6VVJMJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBtYWluRG9jdW1lbnRVUkwsIEZ1bmN0aW9uPHZv
aWQgKENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKKworICAgIHZvaWQgZ2V0QWxsQ29va2llcyhX
ZWJDb3JlOjpTZXNzaW9uSUQsIEZ1bmN0aW9uPHZvaWQgKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpD
b29raWU+JiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY29tcGxldGlvbkhhbmRsZXIpOworICAg
IHZvaWQgZ2V0Q29va2llcyhXZWJDb3JlOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OlVSTCYs
IEZ1bmN0aW9uPHZvaWQgKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiwgQ2FsbGJhY2tC
YXNlOjpFcnJvcik+JiYgY29tcGxldGlvbkhhbmRsZXIpOworCisgICAgdm9pZCBzZXRIVFRQQ29v
a2llQWNjZXB0UG9saWN5KFdlYkNvcmU6OlNlc3Npb25JRCwgSFRUUENvb2tpZUFjY2VwdFBvbGlj
eSwgRnVuY3Rpb248dm9pZCAoQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOworICAgIHZvaWQgZ2V0
SFRUUENvb2tpZUFjY2VwdFBvbGljeShXZWJDb3JlOjpTZXNzaW9uSUQsIEZ1bmN0aW9uPHZvaWQg
KEhUVFBDb29raWVBY2NlcHRQb2xpY3ksIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKIAotICAg
IHZvaWQgc2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShIVFRQQ29va2llQWNjZXB0UG9saWN5KTsK
LSAgICB2b2lkIGdldEhUVFBDb29raWVBY2NlcHRQb2xpY3koRnVuY3Rpb248dm9pZCAoSFRUUENv
b2tpZUFjY2VwdFBvbGljeSwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+KTsKICAgICB2b2lkIHNldENv
b2tpZVN0b3JhZ2VQYXJ0aXRpb25pbmdFbmFibGVkKGJvb2wpOwogCiAgICAgdm9pZCBzdGFydE9i
c2VydmluZ0Nvb2tpZUNoYW5nZXMoV2ViQ29yZTo6U2Vzc2lvbklEKTsKQEAgLTk1LDYgKzEwMiwx
MSBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkR2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoY29uc3Qg
VmVjdG9yPFN0cmluZz4mLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKICAgICB2b2lkIGRpZEdldEhU
VFBDb29raWVBY2NlcHRQb2xpY3kodWludDMyX3QgcG9saWN5LCB1aW50NjRfdCBjYWxsYmFja0lE
KTsKIAorICAgIHZvaWQgZGlkU2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSh1aW50NjRfdCBjYWxs
YmFja0lEKTsKKyAgICB2b2lkIGRpZFNldENvb2tpZXModWludDY0X3QgY2FsbGJhY2tJRCk7Cisg
ICAgdm9pZCBkaWRHZXRDb29raWVzKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiwgdWlu
dDY0X3QgY2FsbGJhY2tJRCk7CisgICAgdm9pZCBkaWREZWxldGVDb29raWVzKHVpbnQ2NF90IGNh
bGxiYWNrSUQpOworCiAgICAgdm9pZCBjb29raWVzRGlkQ2hhbmdlKFdlYkNvcmU6OlNlc3Npb25J
RCk7CiAKICAgICAvLyBXZWJDb250ZXh0U3VwcGxlbWVudApAQCAtMTEzLDYgKzEyNSw4IEBAIHBy
aXZhdGU6CiAKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8QXJyYXlDYWxsYmFjaz4+IG1f
YXJyYXlDYWxsYmFja3M7CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPEhUVFBDb29raWVB
Y2NlcHRQb2xpY3lDYWxsYmFjaz4+IG1faHR0cENvb2tpZUFjY2VwdFBvbGljeUNhbGxiYWNrczsK
KyAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8Vm9pZENhbGxiYWNrPj4gbV92b2lkQ2FsbGJh
Y2tzOworICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxHZXRDb29raWVzQ2FsbGJhY2s+PiBt
X2dldENvb2tpZXNDYWxsYmFja3M7CiAKICAgICBIYXNoTWFwPFdlYkNvcmU6OlNlc3Npb25JRCwg
c3RkOjpmdW5jdGlvbjx2b2lkICgpPj4gbV9jb29raWVPYnNlcnZlcnM7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkubWVzc2FnZXMu
aW4gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5Lm1lc3Nh
Z2VzLmluCmluZGV4IDEyZTAwOTAxOGI3Li5kY2NiY2YyOWUwNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5Lm1lc3NhZ2Vz
LmluCkBAIC0yMyw2ICsyMywxMSBAQAogbWVzc2FnZXMgLT4gV2ViQ29va2llTWFuYWdlclByb3h5
IHsKICAgICBEaWRHZXRIb3N0bmFtZXNXaXRoQ29va2llcyhWZWN0b3I8U3RyaW5nPiBob3N0bmFt
ZXMsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwogICAgIERpZEdldEhUVFBDb29raWVBY2NlcHRQb2xp
Y3kodWludDMyX3QgcG9saWN5LCB1aW50NjRfdCBjYWxsYmFja0lEKTsKLSAgICAKKworICAgIERp
ZFNldEhUVFBDb29raWVBY2NlcHRQb2xpY3kodWludDY0X3QgY2FsbGJhY2tJRCk7CisgICAgRGlk
RGVsZXRlQ29va2llcyh1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICBEaWRTZXRDb29raWVzKHVp
bnQ2NF90IGNhbGxiYWNrSUQpOworICAgIERpZEdldENvb2tpZXMoVmVjdG9yPFdlYkNvcmU6OkNv
b2tpZT4gY29va2llcywgdWludDY0X3QgY2FsbGJhY2tJRCk7CisKICAgICBDb29raWVzRGlkQ2hh
bmdlKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYkZyYW1lUHJveHkuaAppbmRleCA2YmY5OTM4NjJiNy4uNTViNWI2N2UwYjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmgKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuaApAQCAtMzEsNiArMzEsNyBAQAog
I2luY2x1ZGUgIldlYkZyYW1lTGlzdGVuZXJQcm94eS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRnJh
bWVMb2FkZXJUeXBlcy5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3Rm
L0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQb29sLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5jcHAKaW5kZXggZjY5NjIzMWJhMDUuLmFhYzZiYTViM2MxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNs
dWRlICJBUElBdXRvbWF0aW9uQ2xpZW50LmgiCiAjaW5jbHVkZSAiQVBJQ3VzdG9tUHJvdG9jb2xN
YW5hZ2VyQ2xpZW50LmgiCiAjaW5jbHVkZSAiQVBJRG93bmxvYWRDbGllbnQuaCIKKyNpbmNsdWRl
ICJBUElIVFRQQ29va2llU3RvcmFnZS5oIgogI2luY2x1ZGUgIkFQSUxlZ2FjeUNvbnRleHRIaXN0
b3J5Q2xpZW50LmgiCiAjaW5jbHVkZSAiQVBJUGFnZUNvbmZpZ3VyYXRpb24uaCIKICNpbmNsdWRl
ICJBUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQb29sLmgKaW5kZXggODg1YWQzY2ViYjMuLmUwZTE5MjZkNTNlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaApAQCAtNzYsNiArNzYsNyBAQCBu
YW1lc3BhY2UgQVBJIHsKIGNsYXNzIEF1dG9tYXRpb25DbGllbnQ7CiBjbGFzcyBDdXN0b21Qcm90
b2NvbE1hbmFnZXJDbGllbnQ7CiBjbGFzcyBEb3dubG9hZENsaWVudDsKK2NsYXNzIEhUVFBDb29r
aWVTdG9yYWdlOwogY2xhc3MgTGVnYWN5Q29udGV4dEhpc3RvcnlDbGllbnQ7CiBjbGFzcyBQYWdl
Q29uZmlndXJhdGlvbjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAppbmRleCA3YmFhZjg1NDU0Mi4uY2Y3
N2VlYzE0NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0
YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
c2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRl
ICJBUElXZWJzaXRlRGF0YVJlY29yZC5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzTWVzc2Fn
ZXMuaCIKICNpbmNsdWRlICJTdG9yYWdlTWFuYWdlci5oIgorI2luY2x1ZGUgIldlYkNvb2tpZU1h
bmFnZXJQcm94eS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUg
IldlYlByb2Nlc3NQb29sLmgiCiAjaW5jbHVkZSAiV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlLmgiCkBAIC0xMDUsNiArMTA2LDI3IEBAIFdlYnNpdGVEYXRhU3RvcmU6On5XZWJzaXRlRGF0
YVN0b3JlKCkKICAgICB9CiB9CiAKK1JlZjxXZWJQcm9jZXNzUG9vbD4gV2Vic2l0ZURhdGFTdG9y
ZTo6cHJvY2Vzc1Bvb2xGb3JDb29raWVTdG9yYWdlT3BlcmF0aW9ucygpCit7CisgICAgLy8gT3Vy
IGNvbmNlcHRzIG9mIFdlYlByb2Nlc3MsIFdlYlByb2Nlc3NQb29sLCBXZWJzaXRlRGF0YVN0b3Jl
LCBhbmQgU2Vzc2lvbklEcyBoYXZlIGFsbCBzdGFydGVkIHRvIG92ZXJsYXAKKyAgICAvLyB3aXRo
b3V0IGNsZWFyIGRpdmlzaW9ucyBvZiByZXNwb25zaWJpbGl0aWVzLgorICAgIC8vIEluIHByYWN0
aWNlLCBtdWx0aXBsZSBXZWJQcm9jZXNzUG9vbHMgY2FuIGNvbnRhaW4gInRoZSBzYW1lIHNlc3Np
b24iLCBlc3BlY2lhbGx5IHNpbmNlIHRoZXJlIGlzIGN1cnJlbnRseQorICAgIC8vIG9ubHkgYSBz
aW5nbGUgZGVmYXVsdCBnbG9iYWwgU2Vzc2lvbklELgorICAgIC8vCisgICAgLy8gVGhpcyBtZWFu
cyB0aGF0IG11bHRpcGxlIE5ldHdvcmtQcm9jZXNzZXMgY2FuIGJlIHVzaW5nIHRoZSBzYW1lIHNl
c3Npb24sIHdoaWNoIG1lYW5zIHRoYXQgbXVsdGlwbGUKKyAgICAvLyBOZXR3b3JrUHJvY2Vzc2Vz
IGNhbiBiZSByZWZlcnJpbmcgdG8gdGhlIHNhbWUgcGxhdGZvcm0gY29va2llIHN0b3JhZ2UuCisg
ICAgLy8KKyAgICAvLyBXaGlsZSB0aGlzIG1heSBjYXVzZSBjb21wbGljYXRpb25zIHdpdGggZnV0
dXJlIEFQSXMgaXQgaXMgYWN0dWFsbHkgZmluZSBmb3IgaW1wbGVtZW50aW5nIHRoZSBXS0hUVFBD
b29raWVTdG9yYWdlIEFQSQorICAgIC8vIGJlY2F1c2Ugd2Ugb25seSBuZWVkIG9uZSBOZXR3b3Jr
UHJvY2VzcyB0byBzdWNjZXNzZnVsbHkgbWFrZSBhIHJlcXVlc3RlZCBwbGF0Zm9ybSBjb29raWUg
c3RvcmFnZSBjaGFuZ2UuCisgICAgLy8KKyAgICAvLyBGSVhNRTogV2UgbmVlZCB0byBzdGFydCB0
byB1bnJhdmVsIHRoaXMgbWVzcyBnb2luZyBmb3J3YXJkLgorCisgICAgYXV0byBwb29scyA9IHBy
b2Nlc3NQb29scygxKTsKKyAgICBBU1NFUlQoIXBvb2xzLmlzRW1wdHkoKSk7CisKKyAgICByZXR1
cm4gKipwb29scy5iZWdpbigpOworfQorCiB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnJlc29sdmVE
aXJlY3Rvcmllc0lmTmVjZXNzYXJ5KCkKIHsKICAgICBpZiAobV9oYXNSZXNvbHZlZERpcmVjdG9y
aWVzKQpAQCAtMTEwOCw3ICsxMTMwLDcgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjp3ZWJQcm9j
ZXNzRGlkQ2xvc2VDb25uZWN0aW9uKFdlYlByb2Nlc3NQcm94eSYgd2ViUHJvY2Vzc1AKICAgICAg
ICAgbV9zdG9yYWdlTWFuYWdlci0+cHJvY2Vzc0RpZENsb3NlQ29ubmVjdGlvbih3ZWJQcm9jZXNz
UHJveHksIGNvbm5lY3Rpb24pOwogfQogCi1IYXNoU2V0PFJlZlB0cjxXZWJQcm9jZXNzUG9vbD4+
IFdlYnNpdGVEYXRhU3RvcmU6OnByb2Nlc3NQb29scygpIGNvbnN0CitIYXNoU2V0PFJlZlB0cjxX
ZWJQcm9jZXNzUG9vbD4+IFdlYnNpdGVEYXRhU3RvcmU6OnByb2Nlc3NQb29scyhzaXplX3QgY291
bnQpIGNvbnN0CiB7CiAgICAgSGFzaFNldDxSZWZQdHI8V2ViUHJvY2Vzc1Bvb2w+PiBwcm9jZXNz
UG9vbHM7CiAgICAgZm9yIChhdXRvJiBwcm9jZXNzIDogcHJvY2Vzc2VzKCkpCkBAIC0xMTIyLDEx
ICsxMTQ0LDIwIEBAIEhhc2hTZXQ8UmVmUHRyPFdlYlByb2Nlc3NQb29sPj4gV2Vic2l0ZURhdGFT
dG9yZTo6cHJvY2Vzc1Bvb2xzKCkgY29uc3QKICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc1Bv
b2xzLmFkZChwcm9jZXNzUG9vbCk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSBpZiAoJkFQSTo6V2Vic2l0ZURhdGFTdG9y
ZTo6ZGVmYXVsdERhdGFTdG9yZSgpLT53ZWJzaXRlRGF0YVN0b3JlKCkgPT0gdGhpcykgeworICAg
ICAgICAgICAgICAgIC8vIElmIGEgcHJvY2VzcyBwb29sIGRvZXNuJ3QgaGF2ZSBhbiBleHBsaWNp
dCBkYXRhIHN0b3JlIGFuZCB0aGlzIGlzIHRoZSBkZWZhdWx0IFdlYnNpdGVEYXRhU3RvcmUsCisg
ICAgICAgICAgICAgICAgLy8gYWRkIHRoYXQgcHJvY2VzcyBwb29sIHRvIHRoZSBzZXQuCisgICAg
ICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgYmVoYXZpb3IgaXMgd2VpcmQgYW5kIG5lY2Vzc2l0
YXRlZCBieSB0aGUgZmFjdCB0aGF0IHByb2Nlc3MgcG9vbHMgZG9uJ3QgYWx3YXlzCisgICAgICAg
ICAgICAgICAgLy8gaGF2ZSBhIGRhdGEgc3RvcmU7IFRoZXkgc2hvdWxkLgorICAgICAgICAgICAg
ICAgIHByb2Nlc3NQb29scy5hZGQocHJvY2Vzc1Bvb2wpOwogICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBpZiAocHJvY2Vzc1Bvb2xzLnNpemUoKSA9PSBjb3VudCkKKyAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmIChwcm9jZXNzUG9vbHMuaXNFbXB0
eSgpKSB7CisgICAgaWYgKHByb2Nlc3NQb29scy5pc0VtcHR5KCkgJiYgY291bnQpIHsKICAgICAg
ICAgYXV0byBwcm9jZXNzUG9vbCA9IFdlYlByb2Nlc3NQb29sOjpjcmVhdGUoQVBJOjpQcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb246OmNyZWF0ZVdpdGhXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlv
bihtX2NvbmZpZ3VyYXRpb24pKTsKICAgICAgICAgcHJvY2Vzc1Bvb2xzLmFkZChwcm9jZXNzUG9v
bC5wdHIoKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKaW5kZXggOTc1YmFjOGQ4OWIuLjhkMTNiY2U0
OTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vi
c2l0ZURhdGFTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0
YS9XZWJzaXRlRGF0YVN0b3JlLmgKQEAgLTEwMyw2ICsxMDMsOCBAQCBwdWJsaWM6CiAKICAgICBT
dG9yYWdlTWFuYWdlciogc3RvcmFnZU1hbmFnZXIoKSB7IHJldHVybiBtX3N0b3JhZ2VNYW5hZ2Vy
LmdldCgpOyB9CiAKKyAgICBSZWY8V2ViUHJvY2Vzc1Bvb2w+IHByb2Nlc3NQb29sRm9yQ29va2ll
U3RvcmFnZU9wZXJhdGlvbnMoKTsKKwogcHJpdmF0ZToKICAgICBleHBsaWNpdCBXZWJzaXRlRGF0
YVN0b3JlKFdlYkNvcmU6OlNlc3Npb25JRCk7CiAgICAgZXhwbGljaXQgV2Vic2l0ZURhdGFTdG9y
ZShDb25maWd1cmF0aW9uKTsKQEAgLTExOSw3ICsxMjEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
cGxhdGZvcm1EZXN0cm95KCk7CiAgICAgc3RhdGljIHZvaWQgcGxhdGZvcm1SZW1vdmVSZWNlbnRT
ZWFyY2hlcyhzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50KTsKIAotICAgIEhh
c2hTZXQ8UmVmUHRyPFdlYlByb2Nlc3NQb29sPj4gcHJvY2Vzc1Bvb2xzKCkgY29uc3Q7CisgICAg
SGFzaFNldDxSZWZQdHI8V2ViUHJvY2Vzc1Bvb2w+PiBwcm9jZXNzUG9vbHMoc2l6ZV90IGNvdW50
ID0gc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSkgY29uc3Q7CiAKICNpZiBFTkFC
TEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKICAgICBWZWN0b3I8UGx1Z2luTW9kdWxlSW5mbz4gcGx1
Z2lucygpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IDdlMTg4MjJmMDRkLi45YzYzZjY4MzJmOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTA2Myw2
ICsxMDYzLDkgQEAKIAkJNTFEMTI0MzUxRTZERjY1MjAwMkIyODIwIC8qIFdLVVJMU2NoZW1lSGFu
ZGxlclRhc2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxRDEyNDJGMUU2RERERDcwMDJCMjgyMCAvKiBXS1VSTFNjaGVtZUhhbmRsZXJUYXNrLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OwogCQk1MUQxMjQzNjFF
NkRGQjM5MDAyQjI4MjAgLyogV0tVUkxTY2hlbWVIYW5kbGVyVGFzay5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRDEyNDMwMUU2RERERDcwMDJCMjgy
MCAvKiBXS1VSTFNjaGVtZUhhbmRsZXJUYXNrLm1tICovOyB9OwogCQk1MUQxMjQzQTFFNkUwQUFC
MDAyQjI4MjAgLyogQVBJVVJMU2NoZW1lSGFuZGxlclRhc2suY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFEMTI0MzgxRTZERkRCOTAwMkIyODIwIC8q
IEFQSVVSTFNjaGVtZUhhbmRsZXJUYXNrLmNwcCAqLzsgfTsKKwkJNTFEMTI0OTExRTc0QkYzQzAw
MkIyODIwIC8qIEFQSUhUVFBDb29raWVTdG9yYWdlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRDEyNDgyMUU3MzRBQzgwMDJCMjgyMCAvKiBBUElI
VFRQQ29va2llU3RvcmFnZS5jcHAgKi87IH07CisJCTUxRDEyNDkyMUU3NEJGNDgwMDJCMjgyMCAv
KiBfV0tIVFRQQ29va2llU3RvcmFnZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxRDEyNDg1MUU3MzRBRTMwMDJCMjgyMCAvKiBfV0tIVFRQQ29va2ll
U3RvcmFnZS5tbSAqLzsgfTsKKwkJNTFEMTI0OTkxRTc2M0MwMTAwMkIyODIwIC8qIF9XS0hUVFBD
b29raWVTdG9yYWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MUQxMjQ4NDFFNzM0QUUzMDAyQjI4MjAgLyogX1dLSFRUUENvb2tpZVN0b3JhZ2UuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MUQxMzA1
MzEzODJFQUMwMDAzNTFFREQgLyogU2VjSXRlbVJlcXVlc3REYXRhLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRDEzMDRGMTM4MkVBQzAwMDM1MUVE
RCAvKiBTZWNJdGVtUmVxdWVzdERhdGEuY3BwICovOyB9OwogCQk1MUQxMzA1NDEzODJFQUMwMDAz
NTFFREQgLyogU2VjSXRlbVJlcXVlc3REYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MUQxMzA1MDEzODJFQUMwMDAzNTFFREQgLyogU2VjSXRlbVJl
cXVlc3REYXRhLmggKi87IH07CiAJCTUxRDEzMDU1MTM4MkVBQzAwMDM1MUVERCAvKiBTZWNJdGVt
UmVzcG9uc2VEYXRhLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxRDEzMDUxMTM4MkVBQzAwMDM1MUVERCAvKiBTZWNJdGVtUmVzcG9uc2VEYXRhLmNw
cCAqLzsgfTsKQEAgLTMyODUsNiArMzI4OCwxMSBAQAogCQk1MUQxMjQzNzFFNkRGRDJBMDAyQjI4
MjAgLyogV0tVUkxTY2hlbWVIYW5kbGVyVGFza0ludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdLVVJMU2NoZW1lSGFuZGxlclRhc2tJbnRlcm5hbC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1MUQxMjQzODFFNkRGREI5MDAyQjI4MjAgLyogQVBJVVJM
U2NoZW1lSGFuZGxlclRhc2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQVBJVVJMU2NoZW1lSGFuZGxlclRhc2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1MUQxMjQzOTFFNkRGREI5MDAyQjI4MjAgLyogQVBJVVJMU2NoZW1lSGFuZGxlclRhc2su
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJVVJMU2NoZW1lSGFuZGxlclRh
c2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFEMTI0ODIxRTczNEFDODAwMkIy
ODIwIC8qIEFQSUhUVFBDb29raWVTdG9yYWdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEFQSUhUVFBDb29raWVTdG9yYWdlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNTFEMTI0ODMxRTczNEFDODAwMkIyODIwIC8qIEFQSUhUVFBDb29raWVTdG9y
YWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFQSUhUVFBDb29raWVTdG9y
YWdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxRDEyNDg0MUU3MzRBRTMwMDJC
MjgyMCAvKiBfV0tIVFRQQ29va2llU3RvcmFnZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBfV0tIVFRQQ29va2llU3RvcmFnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk1MUQxMjQ4NTFFNzM0QUUzMDAyQjI4MjAgLyogX1dLSFRUUENvb2tpZVN0b3JhZ2UubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBfV0tIVFRQQ29va2llU3Rv
cmFnZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFEMTI0ODYxRTczNEFFMzAw
MkIyODIwIC8qIF9XS0hUVFBDb29raWVTdG9yYWdlSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gX1dLSFRUUENvb2tpZVN0b3JhZ2VJbnRlcm5hbC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1MUQxMzA0RjEzODJFQUMwMDAzNTFFREQgLyogU2VjSXRl
bVJlcXVlc3REYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNl
Y0l0ZW1SZXF1ZXN0RGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxRDEz
MDUwMTM4MkVBQzAwMDM1MUVERCAvKiBTZWNJdGVtUmVxdWVzdERhdGEuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU2VjSXRlbVJlcXVlc3REYXRhLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTUxRDEzMDUxMTM4MkVBQzAwMDM1MUVERCAvKiBTZWNJdGVtUmVzcG9u
c2VEYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNlY0l0ZW1S
ZXNwb25zZURhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTQ3OCw2ICs1
NDg2LDkgQEAKIAkJCQkyRTdBOTQ0OTFCQkQ5NUM2MDA5NDU1NDcgLyogX1dLRm9jdXNlZEVsZW1l
bnRJbmZvLmggKi8sCiAJCQkJMzdBNjRFNTYxOEYzOEY0NjAwRUIzMEYxIC8qIF9XS0Zvcm1JbnB1
dFNlc3Npb24uaCAqLywKIAkJCQlDRDc4RTExODFEQjdFNUFEMDAxNEEyREUgLyogX1dLRnVsbHNj
cmVlbkRlbGVnYXRlLmggKi8sCisJCQkJNTFEMTI0ODQxRTczNEFFMzAwMkIyODIwIC8qIF9XS0hU
VFBDb29raWVTdG9yYWdlLmggKi8sCisJCQkJNTFEMTI0ODUxRTczNEFFMzAwMkIyODIwIC8qIF9X
S0hUVFBDb29raWVTdG9yYWdlLm1tICovLAorCQkJCTUxRDEyNDg2MUU3MzRBRTMwMDJCMjgyMCAv
KiBfV0tIVFRQQ29va2llU3RvcmFnZUludGVybmFsLmggKi8sCiAJCQkJNTE0M0IyNUUxRERDREZE
MTAwMTRGQUM2IC8qIF9XS0ljb25Mb2FkaW5nRGVsZWdhdGUuaCAqLywKIAkJCQkzN0E2NEU1NDE4
RjM4RTNDMDBFQjMwRjEgLyogX1dLSW5wdXREZWxlZ2F0ZS5oICovLAogCQkJCTJENzkwQTlDMUFE
NzA1MEQwMEFCOTBCMyAvKiBfV0tMYXlvdXRNb2RlLmggKi8sCkBAIC02NzMyLDYgKzY3NDMsOCBA
QAogCQkJCTJEQUJBNzc1MUE4MkI0MjEwMEVGMEYxQSAvKiBBUElIaXN0b3J5Q2xpZW50LmggKi8s
CiAJCQkJOTNBODhCNDIxQkM4ODI4QzAwQUJBNUMyIC8qIEFQSUhpdFRlc3RSZXN1bHQuY3BwICov
LAogCQkJCTkzQTg4QjQzMUJDODgyOEMwMEFCQTVDMiAvKiBBUElIaXRUZXN0UmVzdWx0LmggKi8s
CisJCQkJNTFEMTI0ODIxRTczNEFDODAwMkIyODIwIC8qIEFQSUhUVFBDb29raWVTdG9yYWdlLmNw
cCAqLywKKwkJCQk1MUQxMjQ4MzFFNzM0QUM4MDAyQjI4MjAgLyogQVBJSFRUUENvb2tpZVN0b3Jh
Z2UuaCAqLywKIAkJCQk1MTQzQjI2MTFEREQwREEwMDAxNEZBQzYgLyogQVBJSWNvbkxvYWRpbmdD
bGllbnQuaCAqLywKIAkJCQk3Q0U0RDIwNjFBNDY3NzU3MDBDN0YxNTIgLyogQVBJTGVnYWN5Q29u
dGV4dEhpc3RvcnlDbGllbnQuaCAqLywKIAkJCQkxQTI0NjRGMjE4OTFFNDUxMDAyMzRDNUIgLyog
QVBJTG9hZGVyQ2xpZW50LmggKi8sCkBAIC04NTE1LDYgKzg1MjgsNyBAQAogCQkJCTUxNDEyOTk0
MUM2NDI4QkIwMDU5RTcxNCAvKiBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTUxMDUyMzc0MUM3M0QzOEIwMDc5OTNDQiAvKiBXZWJJREJDb25uZWN0aW9uVG9T
ZXJ2ZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNDRjZBQkQxMkM5MUVGOTAwOEY5
QzM1IC8qIFdlYkltYWdlLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MUQxMjQ5OTFFNzYzQzAxMDAy
QjI4MjAgLyogX1dLSFRUUENvb2tpZVN0b3JhZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTFDOEUy
ODIwMTI3NUQxNTQwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUJDMDMyRDgyMTBGNDM3OEQwMDU4QzE1QSAvKiBXZWJJbnNwZWN0b3JDbGllbnQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUE1NUJBODM1MUJBM0U3MEEwMDdDRDMzRCAvKiBXZWJJbnNwZWN0b3JGcm9u
dGVuZEFQSURpc3BhdGNoZXIuaCBpbiBIZWFkZXJzICovLApAQCAtOTc2Nyw2ICs5NzgxLDcgQEAK
IAkJCQkxQTZGQkEyQjExRTY4NjI3MDBEQjEzNzEgLyogTmV0c2NhcGVCcm93c2VyRnVuY3MuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMUE2RkJEMjkxMUU2OUJDMjAwREIxMzcxIC8qIE5ldHNjYXBl
UGx1Z2luLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBRTVCN0ZCMTFFN0FFRDIwMEJBNjc2NyAv
KiBOZXRzY2FwZVBsdWdpbk1hYy5tbSBpbiBTb3VyY2VzICovLAorCQkJCTUxRDEyNDkyMUU3NEJG
NDgwMDJCMjgyMCAvKiBfV0tIVFRQQ29va2llU3RvcmFnZS5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTFBNEE5QzU1MTJCODE2Q0YwMDhGRTk4NCAvKiBOZXRzY2FwZVBsdWdpbk1vZHVsZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk4MzlBMkYzMTFFMjA2NzQ1MDAzOTA1N0UgLyogSGlnaFBlcmZvcm1h
bmNlR3JhcGhpY3NVc2FnZVNhbXBsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE0QTlDOUEx
MkI4MjFDRDAwOEZFOTg0IC8qIE5ldHNjYXBlUGx1Z2luTW9kdWxlTWFjLm1tIGluIFNvdXJjZXMg
Ki8sCkBAIC05Nzg1LDYgKzk4MDAsNyBAQAogCQkJCTgzMUVFQkJFMUJEODVDNDMwMEJCNjRDMyAv
KiBOZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODMy
QUUyNTMxQkUyRThDRDAwRkFBRTEwIC8qIE5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZE1hbmFn
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODNCRENDQjkxQUM1RkRCNjAwM0Y2NDQxIC8qIE5l
dHdvcmtDYWNoZVN0YXRpc3RpY3MuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTFEMTI0OTExRTc0
QkYzQzAwMkIyODIwIC8qIEFQSUhUVFBDb29raWVTdG9yYWdlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUU0NDM2RUQwMUEwRDA0MEIwMEVBRDIwNCAvKiBOZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTgzMTA0MjhDMUJENkI2NkYwMEE3MTVFNCAvKiBOZXR3b3JrQ2Fj
aGVTdWJyZXNvdXJjZXNFbnRyeS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MzAyNTgzRDFEQ0JC
RDIyMDBEQTg5QzIgLyogTmV0d29ya0NhcHR1cmVFdmVudC5jcHAgaW4gU291cmNlcyAqLywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5h
Z2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5h
Z2VyLmNwcAppbmRleCA5ZTIxZjc4Y2NkYi4uNzU0M2EyOWQ4YmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5jcHAKQEAg
LTcyLDIyICs3Miw2NCBAQCB2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmRlbGV0ZUNvb2tpZXNGb3JI
b3N0bmFtZShTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbgogICAgICAgICBXZWJDb3Jl
OjpkZWxldGVDb29raWVzRm9ySG9zdG5hbWVzKCpzdG9yYWdlU2Vzc2lvbiwgeyBob3N0bmFtZSB9
KTsKIH0KIAorCiB2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmRlbGV0ZUFsbENvb2tpZXMoU2Vzc2lv
bklEIHNlc3Npb25JRCkKIHsKICAgICBpZiAoYXV0byogc3RvcmFnZVNlc3Npb24gPSBOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCiAgICAgICAgIFdlYkNv
cmU6OmRlbGV0ZUFsbENvb2tpZXMoKnN0b3JhZ2VTZXNzaW9uKTsKIH0KIAotdm9pZCBXZWJDb29r
aWVNYW5hZ2VyOjpkZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZShTZXNzaW9uSUQgc2Vzc2lv
bklELCBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IHRpbWUpCit2b2lkIFdl
YkNvb2tpZU1hbmFnZXI6OmRlbGV0ZUNvb2tpZShTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBD
b29raWUmIGNvb2tpZSwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3sKKyAgICBpZiAoYXV0byogc3Rv
cmFnZVNlc3Npb24gPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKHNlc3Np
b25JRCkpCisgICAgICAgIHN0b3JhZ2VTZXNzaW9uLT5kZWxldGVDb29raWUoY29va2llKTsKKwor
ICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlclByb3h5OjpEaWRE
ZWxldGVDb29raWVzKGNhbGxiYWNrSUQpLCAwKTsKK30KKwordm9pZCBXZWJDb29raWVNYW5hZ2Vy
OjpkZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZShTZXNzaW9uSUQgc2Vzc2lvbklELCBzdGQ6
OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IHRpbWUsIHVpbnQ2NF90IGNhbGxiYWNr
SUQpCiB7CiAgICAgaWYgKGF1dG8qIHN0b3JhZ2VTZXNzaW9uID0gTmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQogICAgICAgICBXZWJDb3JlOjpkZWxldGVB
bGxDb29raWVzTW9kaWZpZWRTaW5jZSgqc3RvcmFnZVNlc3Npb24sIHRpbWUpOworCisgICAgaWYg
KGNhbGxiYWNrSUQpCisgICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViQ29va2ll
TWFuYWdlclByb3h5OjpEaWREZWxldGVDb29raWVzKGNhbGxiYWNrSUQpLCAwKTsKK30KKwordm9p
ZCBXZWJDb29raWVNYW5hZ2VyOjpnZXRBbGxDb29raWVzKFNlc3Npb25JRCBzZXNzaW9uSUQsIHVp
bnQ2NF90IGNhbGxiYWNrSUQpCit7CisgICAgVmVjdG9yPENvb2tpZT4gY29va2llczsKKyAgICBp
ZiAoYXV0byogc3RvcmFnZVNlc3Npb24gPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VT
ZXNzaW9uKHNlc3Npb25JRCkpCisgICAgICAgIGNvb2tpZXMgPSBzdG9yYWdlU2Vzc2lvbi0+Z2V0
QWxsQ29va2llcygpOworCisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJDb29raWVN
YW5hZ2VyUHJveHk6OkRpZEdldENvb2tpZXMoY29va2llcywgY2FsbGJhY2tJRCksIDApOwogfQog
Ci12b2lkIFdlYkNvb2tpZU1hbmFnZXI6OnNldENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgY29uc3QgVmVjdG9yPENvb2tpZT4mIGNvb2tpZXMsIGNvbnN0IFVSTCYgdXJsLCBj
b25zdCBVUkwmIG1haW5Eb2N1bWVudFVSTCkKK3ZvaWQgV2ViQ29va2llTWFuYWdlcjo6Z2V0Q29v
a2llcyhTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIHVybCwgdWludDY0X3QgY2FsbGJh
Y2tJRCkKK3sKKyAgICBWZWN0b3I8Q29va2llPiBjb29raWVzOworICAgIGlmIChhdXRvKiBzdG9y
YWdlU2Vzc2lvbiA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vzc2lv
bklEKSkKKyAgICAgICAgY29va2llcyA9IHN0b3JhZ2VTZXNzaW9uLT5nZXRDb29raWVzKHVybCk7
CisKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6
RGlkR2V0Q29va2llcyhjb29raWVzLCBjYWxsYmFja0lEKSwgMCk7Cit9CisKK3ZvaWQgV2ViQ29v
a2llTWFuYWdlcjo6c2V0Q29va2llKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0
IENvb2tpZSYgY29va2llLCB1aW50NjRfdCBjYWxsYmFja0lEKQoreworICAgIGlmIChhdXRvKiBz
dG9yYWdlU2Vzc2lvbiA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vz
c2lvbklEKSkKKyAgICAgICAgc3RvcmFnZVNlc3Npb24tPnNldENvb2tpZShjb29raWUpOworCisg
ICAgaWYgKGNhbGxiYWNrSUQpCisgICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
Q29va2llTWFuYWdlclByb3h5OjpEaWRTZXRDb29raWVzKGNhbGxiYWNrSUQpLCAwKTsKK30KKwor
dm9pZCBXZWJDb29raWVNYW5hZ2VyOjpzZXRDb29raWVzKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIGNvbnN0IFZlY3RvcjxDb29raWU+JiBjb29raWVzLCBjb25zdCBVUkwmIHVybCwgY29u
c3QgVVJMJiBtYWluRG9jdW1lbnRVUkwsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiB7CiAgICAgaWYg
KGF1dG8qIHN0b3JhZ2VTZXNzaW9uID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vz
c2lvbihzZXNzaW9uSUQpKQogICAgICAgICBzdG9yYWdlU2Vzc2lvbi0+c2V0Q29va2llcyhjb29r
aWVzLCB1cmwsIG1haW5Eb2N1bWVudFVSTCk7CisKKyAgICBpZiAoY2FsbGJhY2tJRCkKKyAgICAg
ICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OkRpZFNl
dENvb2tpZXMoY2FsbGJhY2tJRCksIDApOwogfQogCiB2b2lkIFdlYkNvb2tpZU1hbmFnZXI6Om5v
dGlmeUNvb2tpZXNEaWRDaGFuZ2UoU2Vzc2lvbklEIHNlc3Npb25JRCkKQEAgLTExMSw5ICsxNTMs
MTIgQEAgdm9pZCBXZWJDb29raWVNYW5hZ2VyOjpzdG9wT2JzZXJ2aW5nQ29va2llQ2hhbmdlcyhT
ZXNzaW9uSUQgc2Vzc2lvbklEKQogICAgICAgICBXZWJDb3JlOjpzdG9wT2JzZXJ2aW5nQ29va2ll
Q2hhbmdlcygqc3RvcmFnZVNlc3Npb24pOwogfQogCi12b2lkIFdlYkNvb2tpZU1hbmFnZXI6OnNl
dEhUVFBDb29raWVBY2NlcHRQb2xpY3koSFRUUENvb2tpZUFjY2VwdFBvbGljeSBwb2xpY3kpCit2
b2lkIFdlYkNvb2tpZU1hbmFnZXI6OnNldEhUVFBDb29raWVBY2NlcHRQb2xpY3koSFRUUENvb2tp
ZUFjY2VwdFBvbGljeSBwb2xpY3ksIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiB7CiAgICAgcGxhdGZv
cm1TZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHBvbGljeSk7CisKKyAgICBpZiAoY2FsbGJhY2tJ
RCkKKyAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyUHJv
eHk6OkRpZFNldEhUVFBDb29raWVBY2NlcHRQb2xpY3koY2FsbGJhY2tJRCksIDApOwogfQogCiB2
b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmdldEhUVFBDb29raWVBY2NlcHRQb2xpY3kodWludDY0X3Qg
Y2FsbGJhY2tJRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2ll
cy9XZWJDb29raWVNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Nvb2tpZXMv
V2ViQ29va2llTWFuYWdlci5oCmluZGV4IGRiMjdkMjBhYWRkLi44MTg3NWRhZmI3NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdl
ci5oCkBAIC01Niw3ICs1Niw4IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBz
dXBwbGVtZW50TmFtZSgpOwogCi0gICAgdm9pZCBzZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KEhU
VFBDb29raWVBY2NlcHRQb2xpY3kpOworICAgIHZvaWQgc2V0SFRUUENvb2tpZUFjY2VwdFBvbGlj
eShIVFRQQ29va2llQWNjZXB0UG9saWN5LCB1aW50NjRfdCBjYWxsYmFja0lEKTsKKwogI2lmIFVT
RShTT1VQKQogICAgIHZvaWQgc2V0Q29va2llUGVyc2lzdGVudFN0b3JhZ2UoY29uc3QgU3RyaW5n
JiBzdG9yYWdlUGF0aCwgdWludDMyX3Qgc3RvcmFnZVR5cGUpOwogI2VuZGlmCkBAIC02OCwxMSAr
NjksMTYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBnZXRIb3N0bmFtZXNX
aXRoQ29va2llcyhXZWJDb3JlOjpTZXNzaW9uSUQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOworCisg
ICAgdm9pZCBkZWxldGVDb29raWUoV2ViQ29yZTo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpD
b29raWUmLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKICAgICB2b2lkIGRlbGV0ZUNvb2tpZXNGb3JI
b3N0bmFtZShXZWJDb3JlOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgZGVs
ZXRlQWxsQ29va2llcyhXZWJDb3JlOjpTZXNzaW9uSUQpOwotICAgIHZvaWQgZGVsZXRlQWxsQ29v
a2llc01vZGlmaWVkU2luY2UoV2ViQ29yZTo6U2Vzc2lvbklELCBzdGQ6OmNocm9ubzo6c3lzdGVt
X2Nsb2NrOjp0aW1lX3BvaW50KTsKKyAgICB2b2lkIGRlbGV0ZUFsbENvb2tpZXNNb2RpZmllZFNp
bmNlKFdlYkNvcmU6OlNlc3Npb25JRCwgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9w
b2ludCwgdWludDY0X3QgY2FsbGJhY2tJRCk7CiAKLSAgICB2b2lkIHNldENvb2tpZXMoV2ViQ29y
ZTo6U2Vzc2lvbklELCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYsIGNvbnN0IFdlYkNv
cmU6OlVSTCYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgbWFpbkRvY3VtZW50VVJMKTsKKyAgICB2b2lk
IHNldENvb2tpZShXZWJDb3JlOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OkNvb2tpZSYsIHVp
bnQ2NF90IGNhbGxiYWNrSUQpOworICAgIHZvaWQgc2V0Q29va2llcyhXZWJDb3JlOjpTZXNzaW9u
SUQsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiwgY29uc3QgV2ViQ29yZTo6VVJMJiwg
Y29uc3QgV2ViQ29yZTo6VVJMJiBtYWluRG9jdW1lbnRVUkwsIHVpbnQ2NF90IGNhbGxiYWNrSUQp
OworICAgIHZvaWQgZ2V0QWxsQ29va2llcyhXZWJDb3JlOjpTZXNzaW9uSUQsIHVpbnQ2NF90IGNh
bGxiYWNrSUQpOworICAgIHZvaWQgZ2V0Q29va2llcyhXZWJDb3JlOjpTZXNzaW9uSUQsIGNvbnN0
IFdlYkNvcmU6OlVSTCYsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwogCiAgICAgdm9pZCBwbGF0Zm9y
bVNldEhUVFBDb29raWVBY2NlcHRQb2xpY3koSFRUUENvb2tpZUFjY2VwdFBvbGljeSk7CiAgICAg
dm9pZCBnZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHVpbnQ2NF90IGNhbGxiYWNrSUQpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFn
ZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29v
a2llTWFuYWdlci5tZXNzYWdlcy5pbgppbmRleCAwMGU3YjY1Yjc0OS4uMGE1ODU1NWVjNmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5h
Z2VyLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2llcy9X
ZWJDb29raWVNYW5hZ2VyLm1lc3NhZ2VzLmluCkBAIC0yNywxMSArMjcsMTUgQEAKICAgICB2b2lk
IEdldEhvc3RuYW1lc1dpdGhDb29raWVzKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVp
bnQ2NF90IGNhbGxiYWNrSUQpCiAgICAgdm9pZCBEZWxldGVDb29raWVzRm9ySG9zdG5hbWUoV2Vi
Q29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgU3RyaW5nIGhvc3RuYW1lKQogICAgIHZvaWQgRGVs
ZXRlQWxsQ29va2llcyhXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQotICAgIHZvaWQgRGVs
ZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2UoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
c3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCB0aW1lKQogCi0gICAgdm9pZCBT
ZXRDb29raWVzKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFZlY3RvcjxXZWJDb3JlOjpD
b29raWU+IGNvb2tpZXMsIFdlYkNvcmU6OlVSTCB1cmwsIFdlYkNvcmU6OlVSTCBtYWluRG9jdW1l
bnRVUkwpOworICAgIHZvaWQgU2V0Q29va2llKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IHN0cnVjdCBXZWJDb3JlOjpDb29raWUgY29va2llLCB1aW50NjRfdCBjYWxsYmFja0lEKQorICAg
IHZvaWQgU2V0Q29va2llcyhXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBWZWN0b3I8V2Vi
Q29yZTo6Q29va2llPiBjb29raWVzLCBXZWJDb3JlOjpVUkwgdXJsLCBXZWJDb3JlOjpVUkwgbWFp
bkRvY3VtZW50VVJMLCB1aW50NjRfdCBjYWxsYmFja0lEKQorICAgIHZvaWQgR2V0QWxsQ29va2ll
cyhXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBjYWxsYmFja0lEKQorICAg
IHZvaWQgR2V0Q29va2llcyhXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpV
UkwgdXJsLCB1aW50NjRfdCBjYWxsYmFja0lEKQorICAgIHZvaWQgRGVsZXRlQ29va2llKFdlYkNv
cmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHN0cnVjdCBXZWJDb3JlOjpDb29raWUgY29va2llLCB1
aW50NjRfdCBjYWxsYmFja0lEKQorICAgIHZvaWQgRGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2lu
Y2UoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9j
azo6dGltZV9wb2ludCB0aW1lLCB1aW50NjRfdCBjYWxsYmFja0lEKQogCi0gICAgdm9pZCBTZXRI
VFRQQ29va2llQWNjZXB0UG9saWN5KHVpbnQzMl90IHBvbGljeSkKKyAgICB2b2lkIFNldEhUVFBD
b29raWVBY2NlcHRQb2xpY3kodWludDMyX3QgcG9saWN5LCB1aW50NjRfdCBjYWxsYmFja0lEKQog
ICAgIHZvaWQgR2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSh1aW50NjRfdCBjYWxsYmFja0lEKQog
ICAgIAogICAgIHZvaWQgU3RhcnRPYnNlcnZpbmdDb29raWVDaGFuZ2VzKFdlYkNvcmU6OlNlc3Np
b25JRCBzZXNzaW9uSUQpCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFu
Z2VMb2cKaW5kZXggODBkYTgyMjhkY2EuLjRjYWRlNmIzMDA4IDEwMDY0NAotLS0gYS9Ub29scy9D
aGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTctMDMt
MTMgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIFdLV2ViVmll
dyBwcm92aWRlcyBubyBhY2Nlc3MgdG8gY29va2llcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MDE5MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMTctMDMtMTEgIFNhaWQgQWJvdS1IYWxsYXdh
ICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KIAogICAgICAgICBFbmFibGUgYXN5bmMgaW1hZ2Ug
ZGVjb2RpbmcgZm9yIGxhcmdlIGltYWdlcwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA3NjAx
ZGJlMDY5Mi4uMmRmMzQ1NjJiNDkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNTIsNiAr
MTUyLDcgQEAKIAkJNTFCQ0VFNEYxQzg0RjUzQjAwNDJDODJFIC8qIEluZGV4ZWREQk11bHRpUHJv
Y2Vzcy0yLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTFCQ0VFNEQxQzg0RjUyQzAwNDJDODJFIC8qIEluZGV4ZWREQk11bHRpUHJvY2Vz
cy0yLmh0bWwgKi87IH07CiAJCTUxQ0QxQzZDMUIzOENFNDMwMDE0MkNBNSAvKiBNb2RhbEFsZXJ0
cy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQ0Qx
QzZBMUIzOENFMzYwMDE0MkNBNSAvKiBNb2RhbEFsZXJ0cy5tbSAqLzsgfTsKIAkJNTFDRDFDNzIx
QjM4RDQ4NDAwMTQyQ0E1IC8qIG1vZGFsLWFsZXJ0cy1pbi1uZXctYWJvdXQtYmxhbmstd2luZG93
Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTFDRDFDNzExQjM4RDQ4NDAwMTQyQ0E1IC8qIG1vZGFsLWFsZXJ0cy1pbi1uZXctYWJvdXQt
Ymxhbmstd2luZG93Lmh0bWwgKi87IH07CisJCTUxRDEyNDk4MUU3NjNCMDIwMDJCMjgyMCAvKiBX
S0hUVFBDb29raWVTdG9yYWdlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTFEMTI0OTcxRTc2M0FGODAwMkIyODIwIC8qIFdLSFRUUENvb2tpZVN0b3Jh
Z2UubW0gKi87IH07CiAJCTUxRTVDNzAyMTkxOUMzQjIwMEQ4QjNFMSAvKiBzaW1wbGUyLmh0bWwg
aW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFF
NzgwMzYxOTE5QUZGODAwMTgyOUEyIC8qIHNpbXBsZTIuaHRtbCAqLzsgfTsKIAkJNTFFNUM3MDMx
OTE5QzNCMjAwRDhCM0UxIC8qIHNpbXBsZTMuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUU3ODAzNzE5MTlBRkY4MDAxODI5QTIgLyog
c2ltcGxlMy5odG1sICovOyB9OwogCQk1MUU2QTg5NDFEMkYxQzBBMDBDMDA0QjYgLyogTG9jYWxT
dG9yYWdlQ2xlYXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MUU2QTg5MjFEMkYxQkVDMDBDMDA0QjYgLyogTG9jYWxTdG9yYWdlQ2xlYXIubW0gKi87
IH07CkBAIC0xMDQ4LDYgKzEwNDksNyBAQAogCQk1MUNCNEFENzFCM0EwNzlDMDBDMUIxQzYgLyog
TW9kYWxBbGVydHNTUEkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
TW9kYWxBbGVydHNTUEkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUNEMUM2
QTFCMzhDRTM2MDAxNDJDQTUgLyogTW9kYWxBbGVydHMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBNb2RhbEFsZXJ0cy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNTFDRDFDNzExQjM4RDQ4NDAwMTQyQ0E1IC8qIG1vZGFsLWFsZXJ0cy1pbi1uZXct
YWJvdXQtYmxhbmstd2luZG93Lmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAibW9kYWwtYWxlcnRzLWluLW5ldy1h
Ym91dC1ibGFuay13aW5kb3cuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUx
RDEyNDk3MUU3NjNBRjgwMDJCMjgyMCAvKiBXS0hUVFBDb29raWVTdG9yYWdlLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tIVFRQQ29va2llU3RvcmFnZS5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFFNUM3MDQxOTE5RUE1RjAwRDhCM0UxIC8q
IFNob3VsZEtlZXBDdXJyZW50QmFja0ZvcndhcmRMaXN0SXRlbUluTGlzdC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaG91bGRLZWVwQ3VycmVudEJhY2tGb3J3YXJk
TGlzdEl0ZW1Jbkxpc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUU2QTg5
MjFEMkYxQkVDMDBDMDA0QjYgLyogTG9jYWxTdG9yYWdlQ2xlYXIubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBMb2NhbFN0b3JhZ2VDbGVhci5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFFNkE4OTUxRDJGMUM3NzAwQzAwNEI2IC8qIExvY2FsU3Rv
cmFnZUNsZWFyLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSBMb2NhbFN0b3JhZ2VD
bGVhci5odG1sOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTY0OSw2ICsxNjUxLDcg
QEAKIAkJCQk1MTIwQzgzQzFFNjc1MDc5MDAyNUIyNTAgLyogV2Vic2l0ZURhdGFTdG9yZUN1c3Rv
bVBhdGhzLm1tICovLAogCQkJCTVDOUU1Njg0MURGOTE0M0QwMEM5RUUzMyAvKiBXZWJzaXRlUG9s
aWNpZXMubW0gKi8sCiAJCQkJMUY4MzU3MUExRDNGRkIwRTAwRTM5NjdCIC8qIFdLQmFja0Zvcndh
cmRMaXN0Lm1tICovLAorCQkJCTUxRDEyNDk3MUU3NjNBRjgwMDJCMjgyMCAvKiBXS0hUVFBDb29r
aWVTdG9yYWdlLm1tICovLAogCQkJCTM3NUUwRTE1MUQ2NjY3NDQwMEVGRUMyQyAvKiBXS05TTnVt
YmVyLm1tICovLAogCQkJCTM3QjQ3RTJFMUQ2NEU3Q0EwMDVGNEVGRiAvKiBXS09iamVjdC5tbSAq
LywKIAkJCQkyRDAwMDY1RDFDMUY1ODk0MDA4OEU2QTcgLyogV0tQREZWaWV3UmVzaXplQ3Jhc2gu
bW0gKi8sCkBAIC0yNzI5LDYgKzI3MzIsNyBAQAogCQkJCTdDQ0U3RUY0MUE0MTFBRTYwMDQ0N0M0
QyAvKiBGaW5kTWF0Y2hlcy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDODNFMDQwMUQwQTYzRTMw
MEZFQkNGMyAvKiBGaXJzdFJlc3BvbmRlclNjcm9sbGluZ1Bvc2l0aW9uLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJN0M4M0UwQkMxRDBBNjUwNzAwRkVCQ0YzIC8qIEZpeGVkTGF5b3V0U2l6ZS5tbSBp
biBTb3VyY2VzICovLAorCQkJCTUxRDEyNDk4MUU3NjNCMDIwMDJCMjgyMCAvKiBXS0hUVFBDb29r
aWVTdG9yYWdlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFRjUxQTQxMUFFNjAwNDQ3QzRD
IC8qIEZvcmNlUmVwYWludC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzN0I0N0UzMDFENjRFN0NB
MDA1RjRFRkYgLyogV0tPYmplY3QubW0gaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0VDMDFBNDEx
QTdFMDA0NDdDNEMgLyogRnJhZ21lbnROYXZpZ2F0aW9uLm1tIGluIFNvdXJjZXMgKi8sCmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9XS0hUVFBDb29r
aWVTdG9yYWdlLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvV0tI
VFRQQ29va2llU3RvcmFnZS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MC4uYWNhOTZmM2Y4ZWMKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdDJDb2NvYS9XS0hUVFBDb29raWVTdG9yYWdlLm1tCkBAIC0wLDAgKzEsMTE3IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW1wb3J0IDxXZWJLaXQvV0tG
b3VuZGF0aW9uLmg+CisKKyNpZiBQTEFURk9STShNQUMpCisKKyNpbXBvcnQgIlBsYXRmb3JtVXRp
bGl0aWVzLmgiCisjaW1wb3J0IDxXZWJLaXQvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oPgor
I2ltcG9ydCA8V2ViS2l0L19XS0hUVFBDb29raWVTdG9yYWdlLmg+CisjaW1wb3J0IDx3dGYvUmV0
YWluUHRyLmg+CisKKyNpZiBXS19BUElfRU5BQkxFRAorCitzdGF0aWMgYm9vbCBnb3RGbGFnOwor
CitURVNUKFdlYktpdDIsIFdLSFRUUENvb2tpZVN0b3JhZ2UpCit7CisgICAgYXV0byB3ZWJWaWV3
ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAs
IDAsIDgwMCwgNjAwKV0pOworCisgICAgYXV0byB3aW5kb3cgPSBhZG9wdE5TKFtbTlNXaW5kb3cg
YWxsb2NdIGluaXRXaXRoQ29udGVudFJlY3Q6W3dlYlZpZXcgZnJhbWVdIHN0eWxlTWFzazpOU0Jv
cmRlcmxlc3NXaW5kb3dNYXNrIGJhY2tpbmc6TlNCYWNraW5nU3RvcmVCdWZmZXJlZCBkZWZlcjpZ
RVNdKTsKKyAgICBbW3dpbmRvdyBjb250ZW50Vmlld10gYWRkU3Vidmlldzp3ZWJWaWV3LmdldCgp
XTsKKworICAgIFt3ZWJWaWV3IGxvYWRIVE1MU3RyaW5nOkAiT2ggaGVsbG8iIGJhc2VVUkw6W05T
VVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwOi8vd2Via2l0Lm9yZyJdXTsKKworICAgIFJldGFpblB0
cjxfV0tIVFRQQ29va2llU3RvcmFnZT4gY29va2llU3RvcmFnZSA9IFtXS1dlYnNpdGVEYXRhU3Rv
cmUgZGVmYXVsdERhdGFTdG9yZV0uX2h0dHBDb29raWVTdG9yYWdlOworCisgICAgTlNBcnJheTxO
U0hUVFBDb29raWUgKj4gKmNvb2tpZXM7CisgICAgW2Nvb2tpZVN0b3JhZ2UgZmV0Y2hDb29raWVz
Oltjb29raWVzUHRyID0gJmNvb2tpZXNdKE5TQXJyYXk8TlNIVFRQQ29va2llICo+ICpuc0Nvb2tp
ZXMpIHsKKyAgICAgICAgKmNvb2tpZXNQdHIgPSBbbnNDb29raWVzIHJldGFpbl07CisgICAgICAg
IGdvdEZsYWcgPSB0cnVlOworICAgIH1dOworCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVu
KCZnb3RGbGFnKTsKKworICAgIEFTU0VSVF9FUShjb29raWVzLmNvdW50LCAwdSk7CisgICAgW2Nv
b2tpZXMgcmVsZWFzZV07CisKKyAgICBnb3RGbGFnID0gZmFsc2U7CisKKyAgICBSZXRhaW5QdHI8
TlNIVFRQQ29va2llPiBjb29raWUxID0gW05TSFRUUENvb2tpZSBjb29raWVXaXRoUHJvcGVydGll
czpAeworICAgICAgICBOU0hUVFBDb29raWVQYXRoOiBAIi8iLAorICAgICAgICBOU0hUVFBDb29r
aWVOYW1lOiBAIkNvb2tpZU5hbWUiLAorICAgICAgICBOU0hUVFBDb29raWVWYWx1ZTogQCJDb29r
aWVWYWx1ZSIsCisgICAgICAgIE5TSFRUUENvb2tpZURvbWFpbjogQCIud3d3LndlYmtpdC5vcmci
LAorICAgICAgICBOU0hUVFBDb29raWVTZWN1cmU6IEAiVFJVRSIsCisgICAgICAgIE5TSFRUUENv
b2tpZURpc2NhcmQ6IEAiVFJVRSIsCisgICAgICAgIE5TSFRUUENvb2tpZU1heGltdW1BZ2U6IEAi
MTAwMDAiLAorICAgIH1dOworCisgICAgUmV0YWluUHRyPE5TSFRUUENvb2tpZT4gY29va2llMiA9
IFtOU0hUVFBDb29raWUgY29va2llV2l0aFByb3BlcnRpZXM6QHsKKyAgICAgICAgTlNIVFRQQ29v
a2llUGF0aDogQCIvcGF0aCIsCisgICAgICAgIE5TSFRUUENvb2tpZU5hbWU6IEAiT3RoZXJDb29r
aWVOYW1lIiwKKyAgICAgICAgTlNIVFRQQ29va2llVmFsdWU6IEAiT3RoZXJDb29raWVWYWx1ZSIs
CisgICAgICAgIE5TSFRUUENvb2tpZURvbWFpbjogQCIud3d3LnczYy5vcmciLAorICAgICAgICBO
U0hUVFBDb29raWVNYXhpbXVtQWdlOiBAIjEwMDAwIiwKKyAgICB9XTsKKworICAgIFtjb29raWVT
dG9yYWdlIHNldENvb2tpZTpjb29raWUxLmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOm5pbF07Cisg
ICAgW2Nvb2tpZVN0b3JhZ2Ugc2V0Q29va2llOmNvb2tpZTIuZ2V0KCkgY29tcGxldGlvbkhhbmRs
ZXI6bmlsXTsKKworICAgIFtjb29raWVTdG9yYWdlIGZldGNoQ29va2llczpbY29va2llc1B0ciA9
ICZjb29raWVzXShOU0FycmF5PE5TSFRUUENvb2tpZSAqPiAqbnNDb29raWVzKSB7CisgICAgICAg
ICpjb29raWVzUHRyID0gW25zQ29va2llcyByZXRhaW5dOworICAgICAgICBnb3RGbGFnID0gdHJ1
ZTsKKyAgICB9XTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZ290RmxhZyk7CisK
KyAgICBBU1NFUlRfRVEoY29va2llcy5jb3VudCwgMnUpOworCisgICAgZm9yIChOU0hUVFBDb29r
aWUgKmNvb2tpZSA6IGNvb2tpZXMpIHsKKyAgICAgICAgaWYgKFtjb29raWUubmFtZSBpc0VxdWFs
OkAiQ29va2llTmFtZSJdKSB7CisgICAgICAgICAgICBBU1NFUlRfVFJVRShbY29va2llMS5nZXQo
KS5wYXRoIGlzRXF1YWxUb1N0cmluZzpjb29raWUucGF0aF0pOworICAgICAgICAgICAgQVNTRVJU
X1RSVUUoW2Nvb2tpZTEuZ2V0KCkudmFsdWUgaXNFcXVhbFRvU3RyaW5nOmNvb2tpZS52YWx1ZV0p
OworICAgICAgICAgICAgQVNTRVJUX1RSVUUoW2Nvb2tpZTEuZ2V0KCkuZG9tYWluIGlzRXF1YWxU
b1N0cmluZzpjb29raWUuZG9tYWluXSk7CisgICAgICAgICAgICBBU1NFUlRfVFJVRShjb29raWUx
LmdldCgpLnNlY3VyZSk7CisgICAgICAgICAgICBBU1NFUlRfVFJVRShjb29raWUxLmdldCgpLnNl
c3Npb25Pbmx5KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIEFTU0VSVF9UUlVFKFtj
b29raWUyLmdldCgpLnBhdGggaXNFcXVhbFRvU3RyaW5nOmNvb2tpZS5wYXRoXSk7CisgICAgICAg
ICAgICBBU1NFUlRfVFJVRShbY29va2llMi5nZXQoKS52YWx1ZSBpc0VxdWFsVG9TdHJpbmc6Y29v
a2llLnZhbHVlXSk7CisgICAgICAgICAgICBBU1NFUlRfVFJVRShbY29va2llMi5nZXQoKS5uYW1l
IGlzRXF1YWxUb1N0cmluZzpjb29raWUubmFtZV0pOworICAgICAgICAgICAgQVNTRVJUX1RSVUUo
W2Nvb2tpZTIuZ2V0KCkuZG9tYWluIGlzRXF1YWxUb1N0cmluZzpjb29raWUuZG9tYWluXSk7Cisg
ICAgICAgICAgICBBU1NFUlRfRkFMU0UoY29va2llMi5nZXQoKS5zZWN1cmUpOworICAgICAgICAg
ICAgQVNTRVJUX0ZBTFNFKGNvb2tpZTIuZ2V0KCkuc2Vzc2lvbk9ubHkpOworICAgICAgICB9Cisg
ICAgfQorCisgICAgW2Nvb2tpZXMgcmVsZWFzZV07Cit9CisKKyNlbmRpZgorCisjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>304255</attachid>
            <date>2017-03-13 07:29:45 -0700</date>
            <delta_ts>2017-03-13 09:07:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>cookie.txt</filename>
            <type>text/plain</type>
            <size>85995</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBmZTcwZWFjZmM1ZC4uZTFmMmE3Yzc2OWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNyBAQAorMjAxNy0wMy0xMyAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+
CisKKyAgICAgICAgV0tXZWJWaWV3IHByb3ZpZGVzIG5vIGFjY2VzcyB0byBjb29raWVzLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQwMTkxCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ292ZXJlZCBieSBB
UEkgdGVzdHMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9Db29raWUuaDoKKworICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9jb2NvYS9OZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbToKKyAgICAgICAg
KFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0Q29va2llKToKKyAgICAgICAgKFdl
YkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVsZXRlQ29va2llKToKKyAgICAgICAgKFdl
YkNvcmU6Om5zQ29va2llc1RvQ29va2llVmVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdv
cmtTdG9yYWdlU2Vzc2lvbjo6Z2V0QWxsQ29va2llcyk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3
b3JrU3RvcmFnZVNlc3Npb246OmdldENvb2tpZXMpOgorCisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lvblNvdXAuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWxldGVDb29raWUpOgorICAgICAgICAoV2ViQ29y
ZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpnZXRBbGxDb29raWVzKToKKyAgICAgICAgKFdlYkNv
cmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0Q29va2llcyk6CisKIDIwMTctMDMtMTIgIEJy
YWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBmdWxsIE5TSFRU
UENvb2tpZSBmaWRlbGl0eSB0byBXZWJDb3JlOjpDb29raWUuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9Db29raWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nvb2tp
ZS5oCmluZGV4IGU0N2U3YmJmZjViLi41ZGRiOTM1NGNlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vQ29va2llLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29v
a2llLmgKQEAgLTU4LDcgKzU4LDcgQEAgc3RydWN0IENvb2tpZSB7CiAKICNpZmRlZiBfX09CSkNf
XwogICAgIFdFQkNPUkVfRVhQT1JUIENvb2tpZShOU0hUVFBDb29raWUgKik7Ci0gICAgb3BlcmF0
b3IgTlNIVFRQQ29va2llICooKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBvcGVyYXRvciBO
U0hUVFBDb29raWUgKigpIGNvbnN0OwogI2VuZGlmCiAKICAgICBTdHJpbmcgbmFtZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNz
aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vz
c2lvbi5oCmluZGV4IGYxNDg5YzZiNDJhLi4yMTJiZTI2NGVhNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oCkBA
IC0xMDAsNyArMTAwLDExIEBAIHB1YmxpYzoKICAgICBOZXR3b3JraW5nQ29udGV4dCogY29udGV4
dCgpIGNvbnN0OwogI2VuZGlmCiAKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENvb2tpZShj
b25zdCBDb29raWUmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENvb2tpZXMoY29uc3Qg
VmVjdG9yPENvb2tpZT4mLCBjb25zdCBVUkwmLCBjb25zdCBVUkwmIG1haW5Eb2N1bWVudFVSTCk7
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkZWxldGVDb29raWUoY29uc3QgQ29va2llJik7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPENvb2tpZT4gZ2V0QWxsQ29va2llcygpOworICAgIFdF
QkNPUkVfRVhQT1JUIFZlY3RvcjxDb29raWU+IGdldENvb2tpZXMoY29uc3QgVVJMJik7CiAKIHBy
aXZhdGU6CiAgICAgc3RhdGljIEhhc2hNYXA8U2Vzc2lvbklELCBzdGQ6OnVuaXF1ZV9wdHI8TmV0
d29ya1N0b3JhZ2VTZXNzaW9uPj4mIGdsb2JhbFNlc3Npb25NYXAoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9u
Q29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtT
dG9yYWdlU2Vzc2lvbkNvY29hLm1tCmluZGV4IDQ0YWVhYjcwZTk5Li40Yzk1NjdlOWM2NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrU3Rv
cmFnZVNlc3Npb25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NvY29hL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tCkBAIC0zMiw2ICszMiwxMyBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3ZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRD
b29raWUoY29uc3QgQ29va2llJiBjb29raWUpCit7CisgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENF
UFRJT05TOworICAgIFtuc0Nvb2tpZVN0b3JhZ2UoKSBzZXRDb29raWU6KE5TSFRUUENvb2tpZSAq
KWNvb2tpZV07CisgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKK30KKwogdm9pZCBOZXR3
b3JrU3RvcmFnZVNlc3Npb246OnNldENvb2tpZXMoY29uc3QgVmVjdG9yPENvb2tpZT4mIGNvb2tp
ZXMsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBVUkwmIG1haW5Eb2N1bWVudFVSTCkKIHsKICAgICBS
ZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IG5zQ29va2llcyA9IGFkb3B0TlMoW1tOU011dGFibGVB
cnJheSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTpjb29raWVzLnNpemUoKV0pOwpAQCAtNDMsNiAr
NTAsMzEgQEAgdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldENvb2tpZXMoY29uc3QgVmVj
dG9yPENvb2tpZT4mIGNvb2tpZXMsIGNvbnN0IFVSTCYKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENF
UFRJT05TOwogfQogCit2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVsZXRlQ29va2llKGNv
bnN0IENvb2tpZSYgY29va2llKQoreworICAgIFtuc0Nvb2tpZVN0b3JhZ2UoKSBkZWxldGVDb29r
aWU6KE5TSFRUUENvb2tpZSAqKWNvb2tpZV07Cit9CisKK3N0YXRpYyBWZWN0b3I8Q29va2llPiBu
c0Nvb2tpZXNUb0Nvb2tpZVZlY3RvcihOU0FycmF5PE5TSFRUUENvb2tpZSAqPiAqbnNDb29raWVz
KQoreworICAgIFZlY3RvcjxDb29raWU+IGNvb2tpZXM7CisgICAgY29va2llcy5yZXNlcnZlSW5p
dGlhbENhcGFjaXR5KG5zQ29va2llcy5jb3VudCk7CisgICAgZm9yIChOU0hUVFBDb29raWUgKm5z
Q29va2llIGluIG5zQ29va2llcykKKyAgICAgICAgY29va2llcy51bmNoZWNrZWRBcHBlbmQobnND
b29raWUpOworCisgICAgcmV0dXJuIGNvb2tpZXM7Cit9CisKK1ZlY3RvcjxDb29raWU+IE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbjo6Z2V0QWxsQ29va2llcygpCit7CisgICAgcmV0dXJuIG5zQ29va2ll
c1RvQ29va2llVmVjdG9yKG5zQ29va2llU3RvcmFnZSgpLmNvb2tpZXMpOworfQorCitWZWN0b3I8
Q29va2llPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmdldENvb2tpZXMoY29uc3QgVVJMJiB1cmwp
Cit7CisgICAgcmV0dXJuIG5zQ29va2llc1RvQ29va2llVmVjdG9yKFtuc0Nvb2tpZVN0b3JhZ2Uo
KSBjb29raWVzRm9yVVJMOihOU1VSTCAqKXVybF0pOworfQorCiBOU0hUVFBDb29raWVTdG9yYWdl
ICpOZXR3b3JrU3RvcmFnZVNlc3Npb246Om5zQ29va2llU3RvcmFnZSgpIGNvbnN0CiB7CiAgICAg
YXV0byBjZkNvb2tpZVN0b3JhZ2UgPSBjb29raWVTdG9yYWdlKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvTmV0d29ya1N0b3JhZ2VTZXNzaW9uU291
cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uU291cC5jcHAKaW5kZXggMjQ5YmQ4MmJkNzQuLjM2ZWY5ZmVjYjNhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uU291cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3Vw
L05ldHdvcmtTdG9yYWdlU2Vzc2lvblNvdXAuY3BwCkBAIC0zMDQsNiArMzA0LDIwIEBAIHZvaWQg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRDb29raWVzKGNvbnN0IFZlY3RvcjxDb29raWU+JiBj
b29raWVzLCBjb25zdCBVUkwmCiAgICAgICAgIHNvdXBfY29va2llX2phcl9hZGRfY29va2llKGNv
b2tpZVN0b3JhZ2UoKSwgdG9Tb3VwQ29va2llKGNvb2tpZSkpOwogfQogCit2b2lkIE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbjo6ZGVsZXRlQ29va2llKGNvbnN0IENvb2tpZSYpCit7CisJLy8gRklYTUU6
IEltcGxlbWVudCBmb3IgV0syIHRvIHVzZS4KK30KKworVmVjdG9yPENvb2tpZT4gTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpnZXRBbGxDb29raWVzKCkKK3sKKwkvLyBGSVhNRTogSW1wbGVtZW50IGZv
ciBXSzIgdG8gdXNlLgorfQorCitWZWN0b3I8Q29va2llPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246
OmdldENvb2tpZXMoY29uc3QgVVJMJikKK3sKKwkvLyBGSVhNRTogSW1wbGVtZW50IGZvciBXSzIg
dG8gdXNlLgorfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQK
aW5kZXggODFmZjhkYTgxMTIuLmE4ZmRjZDExYjNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dApAQCAt
MzM2LDYgKzMzNiw3IEBAIHNldChXZWJLaXQyX1NPVVJDRVMKICAgICBVSVByb2Nlc3MvQVBJL0FQ
SUNvbnRlbnRFeHRlbnNpb25TdG9yZS5jcHAKICAgICBVSVByb2Nlc3MvQVBJL0FQSUV4cGVyaW1l
bnRhbEZlYXR1cmUuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9BUElGcmFtZUluZm8uY3BwCisgICAg
VUlQcm9jZXNzL0FQSS9BUElIVFRQQ29va2llU3RvcmFnZS5jcHAKICAgICBVSVByb2Nlc3MvQVBJ
L0FQSUhpdFRlc3RSZXN1bHQuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uLmNw
cAogICAgIFVJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkRhdGEuY3BwCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXgg
MTEwN2M4M2I0NDkuLjQ5MTQyZjRkYzI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTE5IEBACisy
MDE3LTAzLTEzICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBX
S1dlYlZpZXcgcHJvdmlkZXMgbm8gYWNjZXNzIHRvIGNvb2tpZXMuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDAxOTEKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGFkZHMgYSBuZXcgX1dLSFRUUENv
b2tpZVN0b3JhZ2UgU1BJLgorICAgICAgICBJdCBmb2xsb3dzIHRoZSBOU0hUVFBDb29raWVTdG9y
YWdlIEFQSSBidXQgYXN5bmNocm9ub3VzICh3aXRoIGNvbXBsZXRpb24gaGFuZGxlcnMpLgorICAg
ICAgICBBZnRlciB0aGUgaW1wbGVtZW50YXRpb24gaXMgbGFuZGVkIGFuZCB3ZSByZXZpZXcgaW50
ZXJuYWxseSB3ZSdsbCBjb25zaWRlciBwcm9tb3RpbmcgdG8gQVBJLgorICAgICAgICAKKyAgICAg
ICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBXZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisKKyAgICAgICAgKiBTaGFyZWQvQVBJL0FQSU9iamVjdC5oOgorICAgICAgICAq
IFNoYXJlZC9Db2NvYS9BUElPYmplY3QubW06CisgICAgICAgIChBUEk6Ok9iamVjdDo6bmV3T2Jq
ZWN0KToKKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3JhZ2UuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKEFQSTo6SFRUUENvb2tpZVN0b3JhZ2U6OkhUVFBDb29raWVTdG9y
YWdlKToKKyAgICAgICAgKEFQSTo6SFRUUENvb2tpZVN0b3JhZ2U6On5IVFRQQ29va2llU3RvcmFn
ZSk6CisgICAgICAgIChBUEk6OkhUVFBDb29raWVTdG9yYWdlOjpjb29raWVzKToKKyAgICAgICAg
KEFQSTo6SFRUUENvb2tpZVN0b3JhZ2U6OnNldENvb2tpZSk6CisgICAgICAgIChBUEk6OkhUVFBD
b29raWVTdG9yYWdlOjpzZXRDb29raWVzKToKKyAgICAgICAgKEFQSTo6SFRUUENvb2tpZVN0b3Jh
Z2U6OmRlbGV0ZUNvb2tpZSk6CisgICAgICAgIChBUEk6OkhUVFBDb29raWVTdG9yYWdlOjpyZW1v
dmVDb29raWVzU2luY2VEYXRlKToKKyAgICAgICAgKEFQSTo6SFRUUENvb2tpZVN0b3JhZ2U6OnNl
dEhUVFBDb29raWVBY2NlcHRQb2xpY3kpOgorICAgICAgICAoQVBJOjpIVFRQQ29va2llU3RvcmFn
ZTo6Z2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9B
UElIVFRQQ29va2llU3RvcmFnZS5oOiBBZGRlZC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
QVBJV2Vic2l0ZURhdGFTdG9yZS5jcHA6CisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6
OmRlZmF1bHREYXRhU3RvcmUpOgorICAgICAgICAoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpodHRw
Q29va2llU3RvcmFnZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0
b3JlLmg6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tDb29raWVNYW5hZ2VyLmNwcDoK
KyAgICAgICAgKFdLQ29va2llTWFuYWdlckRlbGV0ZUFsbENvb2tpZXNNb2RpZmllZEFmdGVyRGF0
ZSk6CisgICAgICAgIChXS0Nvb2tpZU1hbmFnZXJTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KToK
KyAgICAgICAgKFdLQ29va2llTWFuYWdlckdldEhUVFBDb29raWVBY2NlcHRQb2xpY3kpOgorCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHA6CisgICAg
ICAgIChXS1dlYnNpdGVEYXRhU3RvcmVHZXREZWZhdWx0RGF0YVN0b3JlKToKKworICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbToKKyAgICAgICAgKC1bV0tQcm9j
ZXNzUG9vbCBfc2V0Q29va2llQWNjZXB0UG9saWN5Ol0pOgorCisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW06CisgICAgICAgICgrW1dLV2Vic2l0ZURh
dGFTdG9yZSBkZWZhdWx0RGF0YVN0b3JlXSk6CisgICAgICAgICgtW1dLV2Vic2l0ZURhdGFTdG9y
ZSBfaHR0cENvb2tpZVN0b3JhZ2VdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaDoKKyAgICAgICAgCisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tIVFRQQ29va2llU3RvcmFnZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLSFRUUENvb2tpZVN0b3JhZ2UubW06IEFkZGVkLgorICAgICAgICAoY29yZUNv
b2tpZXNUb05TQ29va2llcyk6CisgICAgICAgICgtW19XS0hUVFBDb29raWVTdG9yYWdlIGRlYWxs
b2NdKToKKyAgICAgICAgKC1bX1dLSFRUUENvb2tpZVN0b3JhZ2UgZmV0Y2hDb29raWVzOl0pOgor
ICAgICAgICAoLVtfV0tIVFRQQ29va2llU3RvcmFnZSBmZXRjaENvb2tpZXNGb3JVUkw6Y29tcGxl
dGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW19XS0hUVFBDb29raWVTdG9yYWdlIHNldENvb2tp
ZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bX1dLSFRUUENvb2tpZVN0b3JhZ2Ug
ZGVsZXRlQ29va2llOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtfV0tIVFRQQ29v
a2llU3RvcmFnZSBzZXRDb29raWVzOmZvclVSTDptYWluRG9jdW1lbnRVUkw6Y29tcGxldGlvbkhh
bmRsZXI6XSk6CisgICAgICAgICgtW19XS0hUVFBDb29raWVTdG9yYWdlIHJlbW92ZUNvb2tpZXNT
aW5jZURhdGU6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW19XS0hUVFBDb29raWVT
dG9yYWdlIHNldENvb2tpZUFjY2VwdFBvbGljeTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAg
ICAgKGtpdENvb2tpZVBvbGljeVRvTlNDb29raWVQb2xpY3kpOgorICAgICAgICAoLVtfV0tIVFRQ
Q29va2llU3RvcmFnZSBmZXRjaENvb2tpZUFjY2VwdFBvbGljeTpdKToKKyAgICAgICAgKC1bX1dL
SFRUUENvb2tpZVN0b3JhZ2UgX2FwaU9iamVjdF0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Q29jb2EvX1dLSFRUUENvb2tpZVN0b3JhZ2VJbnRlcm5hbC5oOiBDb3BpZWQgZnJvbSBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaC4K
KyAgICAgICAgKFdlYktpdDo6d3JhcHBlcik6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0b21h
dGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9t
YXRpb25TZXNzaW9uOjphZGRTaW5nbGVDb29raWUpOgorCisgICAgICAgICogVUlQcm9jZXNzL1dl
YkNvb2tpZU1hbmFnZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFn
ZXJQcm94eTo6Z2V0SG9zdG5hbWVzV2l0aENvb2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJD
b29raWVNYW5hZ2VyUHJveHk6OmRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGVsZXRlQWxsQ29va2llcyk6CisgICAgICAg
IChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGVsZXRlQ29va2llKToKKyAgICAgICAg
KFdlYktpdDo6V2ViQ29va2llTWFuYWdlclByb3h5OjpkZWxldGVBbGxDb29raWVzTW9kaWZpZWRT
aW5jZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6c2V0Q29va2ll
KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlclByb3h5OjpzZXRDb29raWVzKToK
KyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlclByb3h5OjpnZXRBbGxDb29raWVzKToK
KyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlclByb3h5OjpnZXRDb29raWVzKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlclByb3h5OjpkaWRTZXRDb29raWVzKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlclByb3h5OjpkaWRHZXRDb29raWVzKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlclByb3h5OjpkaWREZWxldGVDb29raWVzKToK
KyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlclByb3h5OjpzdGFydE9ic2VydmluZ0Nv
b2tpZUNoYW5nZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OnN0
b3BPYnNlcnZpbmdDb29raWVDaGFuZ2VzKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFu
YWdlclByb3h5OjpzZXRDb29raWVPYnNlcnZlckNhbGxiYWNrKToKKyAgICAgICAgKFdlYktpdDo6
V2ViQ29va2llTWFuYWdlclByb3h5Ojpjb29raWVzRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYktp
dDo6V2ViQ29va2llTWFuYWdlclByb3h5OjpzZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlclByb3h5OjpnZXRIVFRQQ29va2llQWNjZXB0
UG9saWN5KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlclByb3h5OjpkaWRHZXRI
VFRQQ29va2llQWNjZXB0UG9saWN5KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdl
clByb3h5OjpkaWRTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KToKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViQ29va2llTWFuYWdlclByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvb2tp
ZU1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbjoKKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJGcmFt
ZVByb3h5Lmg6CisgICAgICAgIAorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5j
cHA6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmg6CisgICAgICAgIAorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6cHJvY2Vzc1Bvb2xGb3JDb29raWVTdG9yYWdl
T3BlcmF0aW9ucyk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnByb2Nlc3NQ
b29scyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUu
aDoKKyAgICAgICAgCisgICAgICAgICogV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFn
ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyOjpkZWxldGVDb29raWUp
OgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyOjpkZWxldGVBbGxDb29raWVzTW9k
aWZpZWRTaW5jZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXI6OmdldEFsbENv
b2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyOjpnZXRDb29raWVzKToK
KyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlcjo6c2V0Q29va2llKToKKyAgICAgICAg
KFdlYktpdDo6V2ViQ29va2llTWFuYWdlcjo6c2V0Q29va2llcyk6CisgICAgICAgIChXZWJLaXQ6
OldlYkNvb2tpZU1hbmFnZXI6OnNldEhUVFBDb29raWVBY2NlcHRQb2xpY3kpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIubWVzc2FnZXMuaW46CisKIDIwMTctMDMtMTIg
IEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIFRyYW5zaXRpb24g
R2VuZXJpY0NhbGxiYWNrIGZyb20gc3RkOjpmdW5jdGlvbiB0byBXVEY6OkZ1bmN0aW9uLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9BUElPYmplY3QuaCBiL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9BUEkvQVBJT2JqZWN0LmgKaW5kZXggYWUwZmM5OTg1YmQuLjQ2ZjI3OTFk
ZGZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0FQSU9iamVjdC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvQVBJT2JqZWN0LmgKQEAgLTExNiw2ICsxMTYs
NyBAQCBwdWJsaWM6CiAgICAgICAgIEZ1bGxTY3JlZW5NYW5hZ2VyLAogICAgICAgICBHZW9sb2Nh
dGlvbk1hbmFnZXIsCiAgICAgICAgIEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QsCisgICAg
ICAgIEhUVFBDb29raWVTdG9yYWdlLAogICAgICAgICBIaXRUZXN0UmVzdWx0LAogICAgICAgICBH
ZW9sb2NhdGlvblBvc2l0aW9uLAogICAgICAgICBHcmFtbWFyRGV0YWlsLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvU2hhcmVkL0NvY29hL0FQSU9iamVjdC5tbSBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9Db2NvYS9BUElPYmplY3QubW0KaW5kZXggMTE2MzI0NTQyMGMuLmM3MjE3NjI5M2Nl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29jb2EvQVBJT2JqZWN0Lm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db2NvYS9BUElPYmplY3QubW0KQEAgLTcxLDYgKzcx
LDcgQEAKICNpbXBvcnQgIl9XS0Rvd25sb2FkSW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS0V4cGVy
aW1lbnRhbEZlYXR1cmVJbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLRnJhbWVIYW5kbGVJbnRlcm5h
bC5oIgorI2ltcG9ydCAiX1dLSFRUUENvb2tpZVN0b3JhZ2VJbnRlcm5hbC5oIgogI2ltcG9ydCAi
X1dLSGl0VGVzdFJlc3VsdEludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tQcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb25JbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLVXNlckNvbnRlbnRXb3JsZEludGVybmFs
LmgiCkBAIC0xNzgsNiArMTc5LDEwIEBAIHZvaWQqIE9iamVjdDo6bmV3T2JqZWN0KHNpemVfdCBz
aXplLCBUeXBlIHR5cGUpCiAgICAgICAgIHdyYXBwZXIgPSBbV0tGcmFtZUluZm8gYWxsb2NdOwog
ICAgICAgICBicmVhazsKIAorICAgIGNhc2UgVHlwZTo6SFRUUENvb2tpZVN0b3JhZ2U6CisgICAg
ICAgIHdyYXBwZXIgPSBbX1dLSFRUUENvb2tpZVN0b3JhZ2UgYWxsb2NdOworICAgICAgICBicmVh
azsKKwogI2lmIFBMQVRGT1JNKE1BQykKICAgICBjYXNlIFR5cGU6OkhpdFRlc3RSZXN1bHQ6CiAg
ICAgICAgIHdyYXBwZXIgPSBbX1dLSGl0VGVzdFJlc3VsdCBhbGxvY107CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSUhUVFBDb29raWVTdG9yYWdlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3JhZ2UuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4zMzhiODUyNGI5ZgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3Jh
Z2UuY3BwCkBAIC0wLDAgKzEsMTM4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIkFQSUhUVFBDb29raWVTdG9yYWdlLmgiCisKKyNpbmNsdWRlICJBUElXZWJz
aXRlRGF0YVN0b3JlLmgiCisjaW5jbHVkZSAiV2ViQ29va2llTWFuYWdlclByb3h5LmgiCisjaW5j
bHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0Nvb2tpZS5oPgorCit1
c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCituYW1lc3BhY2UgQVBJIHsKKworSFRUUENvb2tpZVN0
b3JhZ2U6OkhUVFBDb29raWVTdG9yYWdlKFdlYnNpdGVEYXRhU3RvcmUmIHdlYnNpdGVEYXRhU3Rv
cmUpCisgICAgOiBtX293bmluZ0RhdGFTdG9yZSh3ZWJzaXRlRGF0YVN0b3JlKQoreworfQorCitI
VFRQQ29va2llU3RvcmFnZTo6fkhUVFBDb29raWVTdG9yYWdlKCkKK3sKK30KKwordm9pZCBIVFRQ
Q29va2llU3RvcmFnZTo6Y29va2llcyhGdW5jdGlvbjx2b2lkIChjb25zdCBWZWN0b3I8V2ViQ29y
ZTo6Q29va2llPiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGF1dG8mIGRhdGFTdG9y
ZSA9IG1fb3duaW5nRGF0YVN0b3JlLndlYnNpdGVEYXRhU3RvcmUoKTsKKyAgICBhdXRvIHBvb2wg
PSBkYXRhU3RvcmUucHJvY2Vzc1Bvb2xGb3JDb29raWVTdG9yYWdlT3BlcmF0aW9ucygpOworICAg
IGF1dG8qIGNvb2tpZU1hbmFnZXIgPSBwb29sLT5zdXBwbGVtZW50PFdlYktpdDo6V2ViQ29va2ll
TWFuYWdlclByb3h5PigpOworCisgICAgY29va2llTWFuYWdlci0+Z2V0QWxsQ29va2llcyhkYXRh
U3RvcmUuc2Vzc2lvbklEKCksIFtwb29sID0gV1RGTW92ZShwb29sKSwgY29tcGxldGlvbkhhbmRs
ZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNv
b2tpZT4mIGNvb2tpZXMsIENhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKKyAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoY29va2llcyk7CisgICAgfSk7Cit9CisKK3ZvaWQgSFRUUENvb2tpZVN0
b3JhZ2U6OmNvb2tpZXMoY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwsIEZ1bmN0aW9uPHZvaWQgKGNv
bnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7Cisg
ICAgYXV0byYgZGF0YVN0b3JlID0gbV9vd25pbmdEYXRhU3RvcmUud2Vic2l0ZURhdGFTdG9yZSgp
OworICAgIGF1dG8gcG9vbCA9IGRhdGFTdG9yZS5wcm9jZXNzUG9vbEZvckNvb2tpZVN0b3JhZ2VP
cGVyYXRpb25zKCk7CisgICAgYXV0byogY29va2llTWFuYWdlciA9IHBvb2wtPnN1cHBsZW1lbnQ8
V2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk+KCk7CisKKyAgICBjb29raWVNYW5hZ2VyLT5n
ZXRDb29raWVzKGRhdGFTdG9yZS5zZXNzaW9uSUQoKSwgdXJsLCBbcG9vbCA9IFdURk1vdmUocG9v
bCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKGNvbnN0
IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiBjb29raWVzLCBDYWxsYmFja0Jhc2U6OkVycm9yIGVy
cm9yKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGNvb2tpZXMpOworICAgIH0pOworfQor
Cit2b2lkIEhUVFBDb29raWVTdG9yYWdlOjpzZXRDb29raWUoY29uc3QgV2ViQ29yZTo6Q29va2ll
JiBjb29raWUsIEZ1bmN0aW9uPHZvaWQgKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAg
YXV0byYgZGF0YVN0b3JlID0gbV9vd25pbmdEYXRhU3RvcmUud2Vic2l0ZURhdGFTdG9yZSgpOwor
ICAgIGF1dG8gcG9vbCA9IGRhdGFTdG9yZS5wcm9jZXNzUG9vbEZvckNvb2tpZVN0b3JhZ2VPcGVy
YXRpb25zKCk7CisgICAgYXV0byogY29va2llTWFuYWdlciA9IHBvb2wtPnN1cHBsZW1lbnQ8V2Vi
S2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk+KCk7CisKKyAgICBjb29raWVNYW5hZ2VyLT5zZXRD
b29raWUoZGF0YVN0b3JlLnNlc3Npb25JRCgpLCBjb29raWUsIFtwb29sID0gV1RGTW92ZShwb29s
KSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oQ2FsbGJh
Y2tCYXNlOjpFcnJvciBlcnJvcikgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAg
IH0pOworfQorCit2b2lkIEhUVFBDb29raWVTdG9yYWdlOjpzZXRDb29raWVzKGNvbnN0IFZlY3Rv
cjxXZWJDb3JlOjpDb29raWU+JiBjb29raWVzLCBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCwgY29u
c3QgV2ViQ29yZTo6VVJMJiBtYWluRG9jdW1lbnRVUkwsIEZ1bmN0aW9uPHZvaWQgKCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCit7CisgICAgYXV0byYgZGF0YVN0b3JlID0gbV9vd25pbmdEYXRhU3Rv
cmUud2Vic2l0ZURhdGFTdG9yZSgpOworICAgIGF1dG8gcG9vbCA9IGRhdGFTdG9yZS5wcm9jZXNz
UG9vbEZvckNvb2tpZVN0b3JhZ2VPcGVyYXRpb25zKCk7CisgICAgYXV0byogY29va2llTWFuYWdl
ciA9IHBvb2wtPnN1cHBsZW1lbnQ8V2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk+KCk7CisK
KyAgICBjb29raWVNYW5hZ2VyLT5zZXRDb29raWVzKGRhdGFTdG9yZS5zZXNzaW9uSUQoKSwgY29v
a2llcywgdXJsLCBtYWluRG9jdW1lbnRVUkwsIFtwb29sID0gV1RGTW92ZShwb29sKSwgY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oQ2FsbGJhY2tCYXNlOjpF
cnJvciBlcnJvcikgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAgIH0pOworfQor
Cit2b2lkIEhUVFBDb29raWVTdG9yYWdlOjpkZWxldGVDb29raWUoY29uc3QgV2ViQ29yZTo6Q29v
a2llJiBjb29raWUsIEZ1bmN0aW9uPHZvaWQgKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7Cisg
ICAgYXV0byYgZGF0YVN0b3JlID0gbV9vd25pbmdEYXRhU3RvcmUud2Vic2l0ZURhdGFTdG9yZSgp
OworICAgIGF1dG8gcG9vbCA9IGRhdGFTdG9yZS5wcm9jZXNzUG9vbEZvckNvb2tpZVN0b3JhZ2VP
cGVyYXRpb25zKCk7CisgICAgYXV0byogY29va2llTWFuYWdlciA9IHBvb2wtPnN1cHBsZW1lbnQ8
V2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk+KCk7CisKKyAgICBjb29raWVNYW5hZ2VyLT5k
ZWxldGVDb29raWUoZGF0YVN0b3JlLnNlc3Npb25JRCgpLCBjb29raWUsIFtwb29sID0gV1RGTW92
ZShwb29sKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0o
Q2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcikgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigp
OworICAgIH0pOworfQorCit2b2lkIEhUVFBDb29raWVTdG9yYWdlOjpyZW1vdmVDb29raWVzU2lu
Y2VEYXRlKHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgZGF0ZSwgRnVuY3Rp
b248dm9pZCAoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBhdXRvJiBkYXRhU3RvcmUg
PSBtX293bmluZ0RhdGFTdG9yZS53ZWJzaXRlRGF0YVN0b3JlKCk7CisgICAgYXV0byBwb29sID0g
ZGF0YVN0b3JlLnByb2Nlc3NQb29sRm9yQ29va2llU3RvcmFnZU9wZXJhdGlvbnMoKTsKKyAgICBh
dXRvKiBjb29raWVNYW5hZ2VyID0gcG9vbC0+c3VwcGxlbWVudDxXZWJLaXQ6OldlYkNvb2tpZU1h
bmFnZXJQcm94eT4oKTsKKworICAgIGNvb2tpZU1hbmFnZXItPmRlbGV0ZUFsbENvb2tpZXNNb2Rp
ZmllZFNpbmNlKGRhdGFTdG9yZS5zZXNzaW9uSUQoKSwgZGF0ZSwgW3Bvb2wgPSBXVEZNb3ZlKHBv
b2wpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShDYWxs
YmFja0Jhc2U6OkVycm9yIGVycm9yKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7Cisg
ICAgfSk7Cit9CisKK3ZvaWQgSFRUUENvb2tpZVN0b3JhZ2U6OnNldEhUVFBDb29raWVBY2NlcHRQ
b2xpY3koSFRUUENvb2tpZUFjY2VwdFBvbGljeSBwb2xpY3ksIEZ1bmN0aW9uPHZvaWQgKCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgYXV0byYgZGF0YVN0b3JlID0gbV9vd25pbmdEYXRh
U3RvcmUud2Vic2l0ZURhdGFTdG9yZSgpOworICAgIGF1dG8gcG9vbCA9IGRhdGFTdG9yZS5wcm9j
ZXNzUG9vbEZvckNvb2tpZVN0b3JhZ2VPcGVyYXRpb25zKCk7CisgICAgYXV0byogY29va2llTWFu
YWdlciA9IHBvb2wtPnN1cHBsZW1lbnQ8V2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk+KCk7
CisKKyAgICBjb29raWVNYW5hZ2VyLT5zZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KGRhdGFTdG9y
ZS5zZXNzaW9uSUQoKSwgcG9saWN5LCBbcG9vbCA9IFdURk1vdmUocG9vbCksIGNvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKENhbGxiYWNrQmFzZTo6RXJyb3Ig
ZXJyb3IpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICB9KTsKK30KKwordm9p
ZCBIVFRQQ29va2llU3RvcmFnZTo6Z2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShGdW5jdGlvbjx2
b2lkIChIVFRQQ29va2llQWNjZXB0UG9saWN5KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAg
ICBhdXRvJiBkYXRhU3RvcmUgPSBtX293bmluZ0RhdGFTdG9yZS53ZWJzaXRlRGF0YVN0b3JlKCk7
CisgICAgYXV0byBwb29sID0gZGF0YVN0b3JlLnByb2Nlc3NQb29sRm9yQ29va2llU3RvcmFnZU9w
ZXJhdGlvbnMoKTsKKyAgICBhdXRvKiBjb29raWVNYW5hZ2VyID0gcG9vbC0+c3VwcGxlbWVudDxX
ZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eT4oKTsKKworICAgIGNvb2tpZU1hbmFnZXItPmdl
dEhUVFBDb29raWVBY2NlcHRQb2xpY3koZGF0YVN0b3JlLnNlc3Npb25JRCgpLCBbcG9vbCA9IFdU
Rk1vdmUocG9vbCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cildKEhUVFBDb29raWVBY2NlcHRQb2xpY3kgcG9saWN5LCBDYWxsYmFja0Jhc2U6OkVycm9yIGVy
cm9yKSB7CisgICAgICAgIGlmIChlcnJvciAhPSBDYWxsYmFja0Jhc2U6OkVycm9yOjpOb25lKQor
ICAgICAgICAgICAgcG9saWN5ID0gSFRUUENvb2tpZUFjY2VwdFBvbGljeU5ldmVyOworCisgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKHBvbGljeSk7CisgICAgfSk7Cit9CisKK30gLy8gbmFtZXNw
YWNlIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElIVFRQ
Q29va2llU3RvcmFnZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElIVFRQQ29v
a2llU3RvcmFnZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5kM2I5
MzhlZTQyZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
QVBJSFRUUENvb2tpZVN0b3JhZ2UuaApAQCAtMCwwICsxLDY5IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpbmNsdWRlICJBUElPYmplY3QuaCIKKyNpbmNsdWRlICJIVFRQQ29va2ll
QWNjZXB0UG9saWN5LmgiCisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CisjaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBVUkw7CitzdHJ1Y3QgQ29v
a2llOworfQorCituYW1lc3BhY2UgQVBJIHsKKworY2xhc3MgV2Vic2l0ZURhdGFTdG9yZTsKKwor
Y2xhc3MgSFRUUENvb2tpZVN0b3JhZ2UgZmluYWwgOiBwdWJsaWMgT2JqZWN0SW1wbDxPYmplY3Q6
OlR5cGU6OkhUVFBDb29raWVTdG9yYWdlPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxIVFRQ
Q29va2llU3RvcmFnZT4gY3JlYXRlKFdlYnNpdGVEYXRhU3RvcmUmIHdlYnNpdGVEYXRhU3RvcmUp
CisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBIVFRQQ29va2llU3RvcmFnZSh3
ZWJzaXRlRGF0YVN0b3JlKSk7CisgICAgfQorCisgICAgdmlydHVhbCB+SFRUUENvb2tpZVN0b3Jh
Z2UoKTsKKworICAgIHZvaWQgY29va2llcyhGdW5jdGlvbjx2b2lkIChjb25zdCBWZWN0b3I8V2Vi
Q29yZTo6Q29va2llPiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICB2b2lkIGNvb2tpZXMo
Y29uc3QgV2ViQ29yZTo6VVJMJiwgRnVuY3Rpb248dm9pZCAoY29uc3QgVmVjdG9yPFdlYkNvcmU6
OkNvb2tpZT4mKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7CisKKyAgICB2b2lkIHNldENvb2tpZShj
b25zdCBXZWJDb3JlOjpDb29raWUmLCBGdW5jdGlvbjx2b2lkICgpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKTsKKyAgICB2b2lkIHNldENvb2tpZXMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4m
LCBjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXZWJDb3JlOjpVUkwmIG1haW5Eb2N1bWVudFVS
TCwgRnVuY3Rpb248dm9pZCAoKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7CisgICAgdm9pZCBkZWxl
dGVDb29raWUoY29uc3QgV2ViQ29yZTo6Q29va2llJiwgRnVuY3Rpb248dm9pZCAoKT4mJiBjb21w
bGV0aW9uSGFuZGxlcik7CisKKyAgICB2b2lkIHJlbW92ZUNvb2tpZXNTaW5jZURhdGUoc3RkOjpj
aHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCwgRnVuY3Rpb248dm9pZCAoKT4mJiBjb21w
bGV0aW9uSGFuZGxlcik7CisKKyAgICB2b2lkIHNldEhUVFBDb29raWVBY2NlcHRQb2xpY3koV2Vi
S2l0OjpIVFRQQ29va2llQWNjZXB0UG9saWN5LCBGdW5jdGlvbjx2b2lkICgpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKTsKKyAgICB2b2lkIGdldEhUVFBDb29raWVBY2NlcHRQb2xpY3koRnVuY3Rpb248
dm9pZCAoV2ViS2l0OjpIVFRQQ29va2llQWNjZXB0UG9saWN5KT4mJiBjb21wbGV0aW9uSGFuZGxl
cik7CisgICAgCitwcml2YXRlOgorICAgIEhUVFBDb29raWVTdG9yYWdlKFdlYnNpdGVEYXRhU3Rv
cmUmIHdlYnNpdGVEYXRhU3RvcmUpOworCisgICAgV2Vic2l0ZURhdGFTdG9yZSYgbV9vd25pbmdE
YXRhU3RvcmU7Cit9OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9BUElXZWJzaXRlRGF0YVN0b3JlLmNwcAppbmRleCA1Yzc4Y2NkN2FlMi4uY2ExZGY3NTcxMGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFT
dG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0
YVN0b3JlLmNwcApAQCAtMzEsMTMgKzMxLDEzIEBACiAKIG5hbWVzcGFjZSBBUEkgewogCi1SZWZQ
dHI8V2Vic2l0ZURhdGFTdG9yZT4gV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZSgp
CitSZWY8V2Vic2l0ZURhdGFTdG9yZT4gV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9y
ZSgpCiB7CiAgICAgV2ViS2l0OjpJbml0aWFsaXplV2ViS2l0MigpOwogCiAgICAgc3RhdGljIFdl
YnNpdGVEYXRhU3RvcmUqIGRlZmF1bHREYXRhU3RvcmUgPSBhZG9wdFJlZihuZXcgV2Vic2l0ZURh
dGFTdG9yZShkZWZhdWx0RGF0YVN0b3JlQ29uZmlndXJhdGlvbigpKSkubGVha1JlZigpOwogCi0g
ICAgcmV0dXJuIGRlZmF1bHREYXRhU3RvcmU7CisgICAgcmV0dXJuICpkZWZhdWx0RGF0YVN0b3Jl
OwogfQogCiBSZWY8V2Vic2l0ZURhdGFTdG9yZT4gV2Vic2l0ZURhdGFTdG9yZTo6Y3JlYXRlTm9u
UGVyc2lzdGVudERhdGFTdG9yZSgpCkBAIC02NCw2ICs2NCwxNCBAQCBXZWJzaXRlRGF0YVN0b3Jl
Ojp+V2Vic2l0ZURhdGFTdG9yZSgpCiB7CiB9CiAKK0hUVFBDb29raWVTdG9yYWdlJiBXZWJzaXRl
RGF0YVN0b3JlOjpodHRwQ29va2llU3RvcmFnZSgpCit7CisgICAgaWYgKCFtX2FwaUhUVFBDb29r
aWVTdG9yYWdlKQorICAgICAgICBtX2FwaUhUVFBDb29raWVTdG9yYWdlID0gSFRUUENvb2tpZVN0
b3JhZ2U6OmNyZWF0ZSgqdGhpcyk7CisKKyAgICByZXR1cm4gKm1fYXBpSFRUUENvb2tpZVN0b3Jh
Z2U7Cit9CisKIGJvb2wgV2Vic2l0ZURhdGFTdG9yZTo6aXNQZXJzaXN0ZW50KCkKIHsKICAgICBy
ZXR1cm4gbV93ZWJzaXRlRGF0YVN0b3JlLT5pc1BlcnNpc3RlbnQoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5oIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmgKaW5kZXggMjY3ZDY5
YzMzODQuLmNhNzRkYmNjNDY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUuaApAQCAtMjYsNyArMjYsNyBAQAogI2lmbmRlZiBBUElX
ZWJzaXRlRGF0YVN0b3JlX2gKICNkZWZpbmUgQVBJV2Vic2l0ZURhdGFTdG9yZV9oCiAKLSNpbmNs
dWRlICJBUElPYmplY3QuaCIKKyNpbmNsdWRlICJBUElIVFRQQ29va2llU3RvcmFnZS5oIgogI2lu
Y2x1ZGUgIldlYnNpdGVEYXRhU3RvcmUuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1Nlc3Npb25JRC5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtMzUsNyArMzUsNyBAQCBuYW1l
c3BhY2UgQVBJIHsKIAogY2xhc3MgV2Vic2l0ZURhdGFTdG9yZSBmaW5hbCA6IHB1YmxpYyBPYmpl
Y3RJbXBsPE9iamVjdDo6VHlwZTo6V2Vic2l0ZURhdGFTdG9yZT4gewogcHVibGljOgotICAgIHN0
YXRpYyBSZWZQdHI8V2Vic2l0ZURhdGFTdG9yZT4gZGVmYXVsdERhdGFTdG9yZSgpOworICAgIHN0
YXRpYyBSZWY8V2Vic2l0ZURhdGFTdG9yZT4gZGVmYXVsdERhdGFTdG9yZSgpOwogICAgIHN0YXRp
YyBSZWY8V2Vic2l0ZURhdGFTdG9yZT4gY3JlYXRlTm9uUGVyc2lzdGVudERhdGFTdG9yZSgpOwog
ICAgIHN0YXRpYyBSZWY8V2Vic2l0ZURhdGFTdG9yZT4gY3JlYXRlKFdlYktpdDo6V2Vic2l0ZURh
dGFTdG9yZTo6Q29uZmlndXJhdGlvbik7CiAKQEAgLTQ5LDYgKzQ5LDcgQEAgcHVibGljOgogICAg
IHZvaWQgcmVnaXN0ZXJTaGFyZWRSZXNvdXJjZUxvYWRPYnNlcnZlcigpOwogCiAgICAgV2ViS2l0
OjpXZWJzaXRlRGF0YVN0b3JlJiB3ZWJzaXRlRGF0YVN0b3JlKCkgeyByZXR1cm4gKm1fd2Vic2l0
ZURhdGFTdG9yZTsgfQorICAgIEhUVFBDb29raWVTdG9yYWdlJiBodHRwQ29va2llU3RvcmFnZSgp
OwogCiAgICAgc3RhdGljIFN0cmluZyBkZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgp
OwogICAgIHN0YXRpYyBTdHJpbmcgZGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSgpOwpAQCAt
NzAsNiArNzEsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBTdHJpbmcgd2Vic2l0ZURhdGFEaXJl
Y3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiBkaXJlY3RvcnlOYW1l
KTsKIAogICAgIFJlZlB0cjxXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU+IG1fd2Vic2l0ZURhdGFT
dG9yZTsKKyAgICBSZWZQdHI8SFRUUENvb2tpZVN0b3JhZ2U+IG1fYXBpSFRUUENvb2tpZVN0b3Jh
Z2U7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mv
V0tDb29raWVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0Nv
b2tpZU1hbmFnZXIuY3BwCmluZGV4IDI3OGU4M2M1MWUwLi44MGFjOGE4NjI0MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29va2llTWFuYWdlci5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29va2llTWFuYWdlci5jcHAKQEAg
LTYxLDE3ICs2MSwxNyBAQCB2b2lkIFdLQ29va2llTWFuYWdlckRlbGV0ZUFsbENvb2tpZXNNb2Rp
ZmllZEFmdGVyRGF0ZShXS0Nvb2tpZU1hbmFnZXJSZWYgY29va2llTQogICAgIHVzaW5nIG5hbWVz
cGFjZSBzdGQ6OmNocm9ubzsKIAogICAgIGF1dG8gdGltZSA9IHN5c3RlbV9jbG9jazo6dGltZV9w
b2ludChkdXJhdGlvbl9jYXN0PHN5c3RlbV9jbG9jazo6ZHVyYXRpb24+KGR1cmF0aW9uPGRvdWJs
ZT4oZGF0ZSkpKTsKLSAgICB0b0ltcGwoY29va2llTWFuYWdlclJlZiktPmRlbGV0ZUFsbENvb2tp
ZXNNb2RpZmllZFNpbmNlKFdlYkNvcmU6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpLCB0
aW1lKTsKKyAgICB0b0ltcGwoY29va2llTWFuYWdlclJlZiktPmRlbGV0ZUFsbENvb2tpZXNNb2Rp
ZmllZFNpbmNlKFdlYkNvcmU6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpLCB0aW1lLCBb
XShDYWxsYmFja0Jhc2U6OkVycm9yKXt9KTsKIH0KIAogdm9pZCBXS0Nvb2tpZU1hbmFnZXJTZXRI
VFRQQ29va2llQWNjZXB0UG9saWN5KFdLQ29va2llTWFuYWdlclJlZiBjb29raWVNYW5hZ2VyLCBX
S0hUVFBDb29raWVBY2NlcHRQb2xpY3kgcG9saWN5KQogewotICAgIHRvSW1wbChjb29raWVNYW5h
Z2VyKS0+c2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSh0b0hUVFBDb29raWVBY2NlcHRQb2xpY3ko
cG9saWN5KSk7CisgICAgdG9JbXBsKGNvb2tpZU1hbmFnZXIpLT5zZXRIVFRQQ29va2llQWNjZXB0
UG9saWN5KFdlYkNvcmU6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpLCB0b0hUVFBDb29r
aWVBY2NlcHRQb2xpY3kocG9saWN5KSwgW10oQ2FsbGJhY2tCYXNlOjpFcnJvcil7fSk7CiB9CiAK
IHZvaWQgV0tDb29raWVNYW5hZ2VyR2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShXS0Nvb2tpZU1h
bmFnZXJSZWYgY29va2llTWFuYWdlciwgdm9pZCogY29udGV4dCwgV0tDb29raWVNYW5hZ2VyR2V0
SFRUUENvb2tpZUFjY2VwdFBvbGljeUZ1bmN0aW9uIGNhbGxiYWNrKQogewotICAgIHRvSW1wbChj
b29raWVNYW5hZ2VyKS0+Z2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSh0b0dlbmVyaWNDYWxsYmFj
a0Z1bmN0aW9uPFdLSFRUUENvb2tpZUFjY2VwdFBvbGljeSwgSFRUUENvb2tpZUFjY2VwdFBvbGlj
eT4oY29udGV4dCwgY2FsbGJhY2spKTsKKyAgICB0b0ltcGwoY29va2llTWFuYWdlciktPmdldEhU
VFBDb29raWVBY2NlcHRQb2xpY3koV2ViQ29yZTo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklE
KCksIHRvR2VuZXJpY0NhbGxiYWNrRnVuY3Rpb248V0tIVFRQQ29va2llQWNjZXB0UG9saWN5LCBI
VFRQQ29va2llQWNjZXB0UG9saWN5Pihjb250ZXh0LCBjYWxsYmFjaykpOwogfQogCiB2b2lkIFdL
Q29va2llTWFuYWdlclNldENvb2tpZVN0b3JhZ2VQYXJ0aXRpb25pbmdFbmFibGVkKFdLQ29va2ll
TWFuYWdlclJlZiBjb29raWVNYW5hZ2VyLCBib29sIGVuYWJsZWQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwCmlu
ZGV4IGE3N2MxYTg5ZDVjLi42Y2E2OWM2ZDJmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAKQEAgLTM3LDcg
KzM3LDcgQEAgV0tUeXBlSUQgV0tXZWJzaXRlRGF0YVN0b3JlR2V0VHlwZUlEKCkKIAogV0tXZWJz
aXRlRGF0YVN0b3JlUmVmIFdLV2Vic2l0ZURhdGFTdG9yZUdldERlZmF1bHREYXRhU3RvcmUoKQog
ewotICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVs
dERhdGFTdG9yZSgpLmdldCgpKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSShBUEk6OldlYnNp
dGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmUoKS5wdHIoKSk7CiB9CiAKIFdLV2Vic2l0ZURh
dGFTdG9yZVJlZiBXS1dlYnNpdGVEYXRhU3RvcmVDcmVhdGVOb25QZXJzaXN0ZW50RGF0YVN0b3Jl
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9j
ZXNzUG9vbC5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNz
UG9vbC5tbQppbmRleCAzZjQzYmZjNjVkZC4uOGY4N2RhY2U4MjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0KQEAgLTE5Niw3
ICsxOTYsNyBAQCBzdGF0aWMgV2ViS2l0OjpIVFRQQ29va2llQWNjZXB0UG9saWN5IHRvSFRUUENv
b2tpZUFjY2VwdFBvbGljeShOU0hUVFBDb29raWVBY2NlcAogCiAtICh2b2lkKV9zZXRDb29raWVB
Y2NlcHRQb2xpY3k6KE5TSFRUUENvb2tpZUFjY2VwdFBvbGljeSlwb2xpY3kKIHsKLSAgICBfcHJv
Y2Vzc1Bvb2wtPnN1cHBsZW1lbnQ8V2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk+KCktPnNl
dEhUVFBDb29raWVBY2NlcHRQb2xpY3kodG9IVFRQQ29va2llQWNjZXB0UG9saWN5KHBvbGljeSkp
OworICAgIF9wcm9jZXNzUG9vbC0+c3VwcGxlbWVudDxXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQ
cm94eT4oKS0+c2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShXZWJDb3JlOjpTZXNzaW9uSUQ6OmRl
ZmF1bHRTZXNzaW9uSUQoKSwgdG9IVFRQQ29va2llQWNjZXB0UG9saWN5KHBvbGljeSksIFtdKFdl
YktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcil7fSk7CiB9CiAKIC0gKGlkKV9vYmplY3RGb3JCdW5k
bGVQYXJhbWV0ZXI6KE5TU3RyaW5nICopcGFyYW1ldGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbSBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCmluZGV4IDcx
MzgxOWU0NzQwLi5iZThiZWRkMmYyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KQEAgLTMxLDYgKzMxLDcg
QEAKICNpbXBvcnQgIldLTlNBcnJheS5oIgogI2ltcG9ydCAiV0tXZWJzaXRlRGF0YVJlY29yZElu
dGVybmFsLmgiCiAjaW1wb3J0ICJXZWJzaXRlRGF0YUZldGNoT3B0aW9uLmgiCisjaW1wb3J0ICJf
V0tIVFRQQ29va2llU3RvcmFnZUludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tXZWJzaXRlRGF0YVN0
b3JlQ29uZmlndXJhdGlvbi5oIgogI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CiAKQEAgLTM4LDcg
KzM5LDcgQEAgQGltcGxlbWVudGF0aW9uIFdLV2Vic2l0ZURhdGFTdG9yZQogCiArIChXS1dlYnNp
dGVEYXRhU3RvcmUgKilkZWZhdWx0RGF0YVN0b3JlCiB7Ci0gICAgcmV0dXJuIFdlYktpdDo6d3Jh
cHBlcigqQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlKCkuZ2V0KCkpOwor
ICAgIHJldHVybiBXZWJLaXQ6OndyYXBwZXIoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0
RGF0YVN0b3JlKCkuZ2V0KCkpOwogfQogCiArIChXS1dlYnNpdGVEYXRhU3RvcmUgKilub25QZXJz
aXN0ZW50RGF0YVN0b3JlCkBAIC0xOTQsNiArMTk1LDExIEBAIC0gKHZvaWQpX3NldFJlc291cmNl
TG9hZFN0YXRpc3RpY3NFbmFibGVkOihCT09MKWVuYWJsZWQKICAgICBfd2Vic2l0ZURhdGFTdG9y
ZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKGVu
YWJsZWQpOwogfQogCistIChfV0tIVFRQQ29va2llU3RvcmFnZSAqKV9odHRwQ29va2llU3RvcmFn
ZQoreworICAgIHJldHVybiBXZWJLaXQ6OndyYXBwZXIoX3dlYnNpdGVEYXRhU3RvcmUtPmh0dHBD
b29raWVTdG9yYWdlKCkpOworfQorCiBAZW5kCiAKICNlbmRpZiAvLyBXS19BUElfRU5BQkxFRApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVE
YXRhU3RvcmVQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaAppbmRleCA0OWQ5YmU2YWQxMS4uZmMxOGJlMjgzOWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRl
RGF0YVN0b3JlUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oCkBAIC0yOSw2ICsyOSw3IEBACiAKIE5TX0FT
U1VNRV9OT05OVUxMX0JFR0lOCiAKK0BjbGFzcyBfV0tIVFRQQ29va2llU3RvcmFnZTsKIEBjbGFz
cyBfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjsKIAogdHlwZWRlZiBOU19PUFRJT05T
KE5TVUludGVnZXIsIF9XS1dlYnNpdGVEYXRhU3RvcmVGZXRjaE9wdGlvbnMpIHsKQEAgLTQzLDYg
KzQ0LDggQEAgdHlwZWRlZiBOU19PUFRJT05TKE5TVUludGVnZXIsIF9XS1dlYnNpdGVEYXRhU3Rv
cmVGZXRjaE9wdGlvbnMpIHsKIAogQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0UmVz
b3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQ6KSBCT09MIF9yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RW5hYmxlZCBXS19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMiksIGlvcygxMC4wKSk7CiAKK0Bw
cm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgX1dLSFRUUENvb2tpZVN0b3JhZ2UgKl9odHRw
Q29va2llU3RvcmFnZSBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdL
X0lPU19UQkEpKTsKKwogQGVuZAogCiBOU19BU1NVTUVfTk9OTlVMTF9FTkQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSFRUUENvb2tpZVN0b3JhZ2Uu
aCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSFRUUENvb2tpZVN0b3Jh
Z2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMGVhMjI1NWY5NWEK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19X
S0hUVFBDb29raWVTdG9yYWdlLmgKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBv
cnQgPFdlYktpdC9XS0ZvdW5kYXRpb24uaD4KKworI2lmIFdLX0FQSV9FTkFCTEVECisKKyNpbXBv
cnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgorCitXS19DTEFTU19BVkFJTEFCTEUobWFjb3N4
KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpCitAaW50ZXJmYWNlIF9XS0hUVFBDb29raWVT
dG9yYWdlIDogTlNPYmplY3QKKworLSAodm9pZClmZXRjaENvb2tpZXM6KG5vbm51bGwgdm9pZCAo
XikoTlNBcnJheTxOU0hUVFBDb29raWUgKj4gKl9OdWxsYWJsZSkpY29tcGxldGlvbkhhbmRsZXI7
CistICh2b2lkKWZldGNoQ29va2llc0ZvclVSTDoobm9ubnVsbCBOU1VSTCAqKXVybCBjb21wbGV0
aW9uSGFuZGxlcjoobm9ubnVsbCB2b2lkICheKShOU0FycmF5PE5TSFRUUENvb2tpZSAqPiAqX051
bGxhYmxlKSljb21wbGV0aW9uSGFuZGxlcjsKKworLSAodm9pZClzZXRDb29raWU6KG5vbm51bGwg
TlNIVFRQQ29va2llICopY29va2llIGNvbXBsZXRpb25IYW5kbGVyOihudWxsYWJsZSB2b2lkIChe
KSgpKWNvbXBsZXRpb25IYW5kbGVyOworLSAodm9pZClzZXRDb29raWVzOihub25udWxsIE5TQXJy
YXk8TlNIVFRQQ29va2llICo+ICopY29va2llcyBmb3JVUkw6KG51bGxhYmxlIE5TVVJMICopdXJs
IG1haW5Eb2N1bWVudFVSTDoobnVsbGFibGUgTlNVUkwgKiltYWluRG9jdW1lbnRVUkwgY29tcGxl
dGlvbkhhbmRsZXI6KG51bGxhYmxlIHZvaWQgKF4pKCkpY29tcGxldGlvbkhhbmRsZXI7CisKKy0g
KHZvaWQpZGVsZXRlQ29va2llOihub25udWxsIE5TSFRUUENvb2tpZSAqKWNvb2tpZSBjb21wbGV0
aW9uSGFuZGxlcjoobnVsbGFibGUgdm9pZCAoXikoKSljb21wbGV0aW9uSGFuZGxlcjsKKy0gKHZv
aWQpcmVtb3ZlQ29va2llc1NpbmNlRGF0ZToobm9ubnVsbCBOU0RhdGUgKilkYXRlIGNvbXBsZXRp
b25IYW5kbGVyOihudWxsYWJsZSB2b2lkICheKSgpKWNvbXBsZXRpb25IYW5kbGVyOworCistICh2
b2lkKXNldENvb2tpZUFjY2VwdFBvbGljeTooTlNIVFRQQ29va2llQWNjZXB0UG9saWN5KXBvbGlj
eSBjb21wbGV0aW9uSGFuZGxlcjoobnVsbGFibGUgdm9pZCAoXikoKSljb21wbGV0aW9uSGFuZGxl
cjsKKy0gKHZvaWQpZmV0Y2hDb29raWVBY2NlcHRQb2xpY3k6KG5vbm51bGwgdm9pZCAoXikoTlNI
VFRQQ29va2llQWNjZXB0UG9saWN5KSljb21wbGV0aW9uSGFuZGxlcjsKKworQGVuZAorCisjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSFRU
UENvb2tpZVN0b3JhZ2UubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19X
S0hUVFBDb29raWVTdG9yYWdlLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwLi4xMmNkYTMzZGQ4ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLSFRUUENvb2tpZVN0b3JhZ2UubW0KQEAgLTAsMCArMSwxNjEgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIl9XS0hUVFBDb29raWVT
dG9yYWdlSW50ZXJuYWwuaCIKKworI2lmIFdLX0FQSV9FTkFCTEVECisKKyNpbmNsdWRlICJIVFRQ
Q29va2llQWNjZXB0UG9saWN5LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9DRk5ldHdvcmtTUEkuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL0Nvb2tpZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+Cisj
aW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorCitzdGF0aWMgTlNBcnJheTxOU0hUVFBDb29raWUg
Kj4gKmNvcmVDb29raWVzVG9OU0Nvb2tpZXMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4m
IGNvcmVDb29raWVzKQoreworICAgIE5TTXV0YWJsZUFycmF5PE5TSFRUUENvb2tpZSAqPiAqbnND
b29raWVzID0gW05TTXV0YWJsZUFycmF5IGFycmF5V2l0aENhcGFjaXR5OmNvcmVDb29raWVzLnNp
emUoKV07CisKKyAgICBmb3IgKGF1dG8mIGNvb2tpZSA6IGNvcmVDb29raWVzKQorICAgICAgICBb
bnNDb29raWVzIGFkZE9iamVjdDooTlNIVFRQQ29va2llKiljb29raWVdOworCisgICAgcmV0dXJu
IG5zQ29va2llczsKK30KKworQGltcGxlbWVudGF0aW9uIF9XS0hUVFBDb29raWVTdG9yYWdlCisK
Ky0gKHZvaWQpZGVhbGxvYworeworICAgIF9jb29raWVTdG9yYWdlLT5BUEk6OkhUVFBDb29raWVT
dG9yYWdlOjp+SFRUUENvb2tpZVN0b3JhZ2UoKTsKKworICAgIFtzdXBlciBkZWFsbG9jXTsKK30K
KworLSAodm9pZClmZXRjaENvb2tpZXM6KHZvaWQgKF4pKE5TQXJyYXk8TlNIVFRQQ29va2llICo+
ICopKWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAgX2Nvb2tpZVN0b3JhZ2UtPmNvb2tpZXMoW2hh
bmRsZXIgPSBhZG9wdE5TKFtjb21wbGV0aW9uSGFuZGxlciBjb3B5XSldKGNvbnN0IFZlY3RvcjxX
ZWJDb3JlOjpDb29raWU+JiBjb29raWVzKSB7CisgICAgICAgIGF1dG8gcmF3SGFuZGxlciA9ICh2
b2lkICheKShOU0FycmF5PE5TSFRUUENvb2tpZSAqPiAqKSloYW5kbGVyLmdldCgpOworICAgICAg
ICByYXdIYW5kbGVyKGNvcmVDb29raWVzVG9OU0Nvb2tpZXMoY29va2llcykpOworICAgIH0pOwor
fQorCistICh2b2lkKWZldGNoQ29va2llc0ZvclVSTDooTlNVUkwgKil1cmwgY29tcGxldGlvbkhh
bmRsZXI6KHZvaWQgKF4pKE5TQXJyYXk8TlNIVFRQQ29va2llICo+ICopKWNvbXBsZXRpb25IYW5k
bGVyCit7CisgICAgX2Nvb2tpZVN0b3JhZ2UtPmNvb2tpZXModXJsLCBbaGFuZGxlciA9IGFkb3B0
TlMoW2NvbXBsZXRpb25IYW5kbGVyIGNvcHldKV0oY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tp
ZT4mIGNvb2tpZXMpIHsKKyAgICAgICAgYXV0byByYXdIYW5kbGVyID0gKHZvaWQgKF4pKE5TQXJy
YXk8TlNIVFRQQ29va2llICo+ICopKWhhbmRsZXIuZ2V0KCk7CisgICAgICAgIHJhd0hhbmRsZXIo
Y29yZUNvb2tpZXNUb05TQ29va2llcyhjb29raWVzKSk7CisgICAgfSk7Cit9CisKKy0gKHZvaWQp
c2V0Q29va2llOihOU0hUVFBDb29raWUgKiljb29raWUgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQg
KF4pKCkpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICBfY29va2llU3RvcmFnZS0+c2V0Q29va2ll
KGNvb2tpZSwgW2hhbmRsZXIgPSBhZG9wdE5TKFtjb21wbGV0aW9uSGFuZGxlciBjb3B5XSldKCkg
eworICAgICAgICBhdXRvIHJhd0hhbmRsZXIgPSAodm9pZCAoXikoKSloYW5kbGVyLmdldCgpOwor
ICAgICAgICBpZiAocmF3SGFuZGxlcikKKyAgICAgICAgICAgIHJhd0hhbmRsZXIoKTsKKyAgICB9
KTsKKworfQorCistICh2b2lkKWRlbGV0ZUNvb2tpZTooTlNIVFRQQ29va2llICopY29va2llIGNv
bXBsZXRpb25IYW5kbGVyOih2b2lkICheKSgpKWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAgX2Nv
b2tpZVN0b3JhZ2UtPmRlbGV0ZUNvb2tpZShjb29raWUsIFtoYW5kbGVyID0gYWRvcHROUyhbY29t
cGxldGlvbkhhbmRsZXIgY29weV0pXSgpIHsKKyAgICAgICAgYXV0byByYXdIYW5kbGVyID0gKHZv
aWQgKF4pKCkpaGFuZGxlci5nZXQoKTsKKyAgICAgICAgaWYgKHJhd0hhbmRsZXIpCisgICAgICAg
ICAgICByYXdIYW5kbGVyKCk7CisgICAgfSk7Cit9CisKKy0gKHZvaWQpc2V0Q29va2llczooTlNB
cnJheTxOU0hUVFBDb29raWUgKj4gKiljb29raWVzIGZvclVSTDooTlNVUkwgKilVUkwgbWFpbkRv
Y3VtZW50VVJMOihOU1VSTCAqKW1haW5Eb2N1bWVudFVSTCBjb21wbGV0aW9uSGFuZGxlcjoodm9p
ZCAoXikoKSljb21wbGV0aW9uSGFuZGxlcgoreworICAgIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+
IGNvcmVDb29raWVzOworICAgIGNvcmVDb29raWVzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoY29v
a2llcy5jb3VudCk7CisgICAgZm9yIChOU0hUVFBDb29raWUgKmNvb2tpZSA6IGNvb2tpZXMpCisg
ICAgICAgIGNvcmVDb29raWVzLnVuY2hlY2tlZEFwcGVuZChjb29raWUpOworCisgICAgX2Nvb2tp
ZVN0b3JhZ2UtPnNldENvb2tpZXMoY29yZUNvb2tpZXMsIFVSTCwgbWFpbkRvY3VtZW50VVJMLCBb
aGFuZGxlciA9IGFkb3B0TlMoW2NvbXBsZXRpb25IYW5kbGVyIGNvcHldKV0oKSB7CisgICAgICAg
IGF1dG8gcmF3SGFuZGxlciA9ICh2b2lkICheKSgpKWhhbmRsZXIuZ2V0KCk7CisgICAgICAgIGlm
IChyYXdIYW5kbGVyKQorICAgICAgICAgICAgcmF3SGFuZGxlcigpOworICAgIH0pOworfQorCist
ICh2b2lkKXJlbW92ZUNvb2tpZXNTaW5jZURhdGU6KE5TRGF0ZSAqKWRhdGUgY29tcGxldGlvbkhh
bmRsZXI6KHZvaWQgKF4pKCkpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICBhdXRvIHN5c3RlbUNs
b2NrVGltZSA9IHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQoc3RkOjpjaHJv
bm86OmR1cmF0aW9uX2Nhc3Q8c3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6ZHVyYXRpb24+KHN0
ZDo6Y2hyb25vOjpkdXJhdGlvbjxkb3VibGU+KGRhdGUudGltZUludGVydmFsU2luY2UxOTcwKSkp
OworCisgICAgX2Nvb2tpZVN0b3JhZ2UtPnJlbW92ZUNvb2tpZXNTaW5jZURhdGUoc3lzdGVtQ2xv
Y2tUaW1lLCBbaGFuZGxlciA9IGFkb3B0TlMoW2NvbXBsZXRpb25IYW5kbGVyIGNvcHldKV0oKSB7
CisgICAgICAgIGF1dG8gcmF3SGFuZGxlciA9ICh2b2lkICheKSgpKWhhbmRsZXIuZ2V0KCk7Cisg
ICAgICAgIGlmIChyYXdIYW5kbGVyKQorICAgICAgICAgICAgcmF3SGFuZGxlcigpOworICAgIH0p
OworfQorCistICh2b2lkKXNldENvb2tpZUFjY2VwdFBvbGljeTooTlNIVFRQQ29va2llQWNjZXB0
UG9saWN5KXBvbGljeSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoKSljb21wbGV0aW9uSGFu
ZGxlcgoreworICAgIF9jb29raWVTdG9yYWdlLT5zZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHBv
bGljeSwgW2hhbmRsZXIgPSBhZG9wdE5TKFtjb21wbGV0aW9uSGFuZGxlciBjb3B5XSldKCkgewor
ICAgICAgICBhdXRvIHJhd0hhbmRsZXIgPSAodm9pZCAoXikoKSloYW5kbGVyLmdldCgpOworICAg
ICAgICBpZiAocmF3SGFuZGxlcikKKyAgICAgICAgICAgIHJhd0hhbmRsZXIoKTsKKyAgICB9KTsK
K30KKworc3RhdGljIE5TSFRUUENvb2tpZUFjY2VwdFBvbGljeSBraXRDb29raWVQb2xpY3lUb05T
Q29va2llUG9saWN5KFdlYktpdDo6SFRUUENvb2tpZUFjY2VwdFBvbGljeSBraXRQb2xpY3kpCit7
CisgICAgc3dpdGNoIChraXRQb2xpY3kpIHsKKyAgICBjYXNlIFdlYktpdDo6SFRUUENvb2tpZUFj
Y2VwdFBvbGljeUFsd2F5czoKKyAgICAgICAgcmV0dXJuIE5TSFRUUENvb2tpZUFjY2VwdFBvbGlj
eUFsd2F5czsKKyAgICBjYXNlIFdlYktpdDo6SFRUUENvb2tpZUFjY2VwdFBvbGljeU5ldmVyOgor
ICAgICAgICByZXR1cm4gTlNIVFRQQ29va2llQWNjZXB0UG9saWN5TmV2ZXI7CisgICAgY2FzZSBX
ZWJLaXQ6OkhUVFBDb29raWVBY2NlcHRQb2xpY3lPbmx5RnJvbU1haW5Eb2N1bWVudERvbWFpbjoK
KyAgICAgICAgcmV0dXJuIE5TSFRUUENvb2tpZUFjY2VwdFBvbGljeU9ubHlGcm9tTWFpbkRvY3Vt
ZW50RG9tYWluOworICAgIGNhc2UgV2ViS2l0OjpIVFRQQ29va2llQWNjZXB0UG9saWN5RXhjbHVz
aXZlbHlGcm9tTWFpbkRvY3VtZW50RG9tYWluOgorICAgICAgICAvLyBDYXN0IHJlcXVpcmVkIGJl
Y2F1c2Ugb2YgQ0ZOZXR3b3JrU1BJLgorICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8TlNIVFRQ
Q29va2llQWNjZXB0UG9saWN5PihOU0hUVFBDb29raWVBY2NlcHRQb2xpY3lFeGNsdXNpdmVseUZy
b21NYWluRG9jdW1lbnREb21haW4pOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgIH0KKworICAgIHJldHVybiBOU0hUVFBDb29raWVBY2NlcHRQb2xpY3lO
ZXZlcjsKK30KKworLSAodm9pZClmZXRjaENvb2tpZUFjY2VwdFBvbGljeToodm9pZCAoXikoTlNI
VFRQQ29va2llQWNjZXB0UG9saWN5KSljb21wbGV0aW9uSGFuZGxlcgoreworICAgIF9jb29raWVT
dG9yYWdlLT5nZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KFtoYW5kbGVyID0gYWRvcHROUyhbY29t
cGxldGlvbkhhbmRsZXIgY29weV0pXShXZWJLaXQ6OkhUVFBDb29raWVBY2NlcHRQb2xpY3kgcG9s
aWN5KSB7CisgICAgICAgIGF1dG8gcmF3SGFuZGxlciA9ICh2b2lkICheKShOU0hUVFBDb29raWVB
Y2NlcHRQb2xpY3kpKWhhbmRsZXIuZ2V0KCk7CisgICAgICAgIHJhd0hhbmRsZXIoa2l0Q29va2ll
UG9saWN5VG9OU0Nvb2tpZVBvbGljeShwb2xpY3kpKTsKKyAgICB9KTsKK30KKworI3ByYWdtYSBt
YXJrIFdLT2JqZWN0IHByb3RvY29sIGltcGxlbWVudGF0aW9uCisKKy0gKEFQSTo6T2JqZWN0Jilf
YXBpT2JqZWN0Cit7CisgICAgcmV0dXJuICpfY29va2llU3RvcmFnZTsKK30KKworQGVuZAorCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dL
SFRUUENvb2tpZVN0b3JhZ2VJbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9fV0tIVFRQQ29va2llU3RvcmFnZUludGVybmFsLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAuLjNkZTAxYmE1YmYxCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tIVFRQQ29va2llU3RvcmFnZUludGVy
bmFsLmgKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgIl9XS0hUVFBDb29r
aWVTdG9yYWdlLmgiCisKKyNpZiBXS19BUElfRU5BQkxFRAorCisjaW1wb3J0ICJBUElIVFRQQ29v
a2llU3RvcmFnZS5oIgorI2ltcG9ydCAiV0tPYmplY3QuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK2lubGluZSBfV0tIVFRQQ29va2llU3RvcmFnZSAqd3JhcHBlcihBUEk6OkhUVFBDb29raWVT
dG9yYWdlJiBjb29raWVTdG9yYWdlKQoreworICAgIEFTU0VSVChbY29va2llU3RvcmFnZS53cmFw
cGVyKCkgaXNLaW5kT2ZDbGFzczpbX1dLSFRUUENvb2tpZVN0b3JhZ2UgY2xhc3NdXSk7CisgICAg
cmV0dXJuIChfV0tIVFRQQ29va2llU3RvcmFnZSAqKWNvb2tpZVN0b3JhZ2Uud3JhcHBlcigpOwor
fQorCit9CisKK0BpbnRlcmZhY2UgX1dLSFRUUENvb2tpZVN0b3JhZ2UgKCkgPFdLT2JqZWN0PiB7
CitAcGFja2FnZQorICAgIEFQSTo6T2JqZWN0U3RvcmFnZTxBUEk6OkhUVFBDb29raWVTdG9yYWdl
PiBfY29va2llU3RvcmFnZTsKK30KK0BlbmQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5j
cHAKaW5kZXggNDhjYWRjNzEyNGYuLmE4MzE4NGFmOTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24u
Y3BwCkBAIC03MzAsNyArNzMwLDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6YWRkU2lu
Z2xlQ29va2llKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW4KIAogICAgIC8v
IEZJWE1FOiBVc2luZyBhY3RpdmVVUkwgaGVyZSB0d2ljZSBpcyBiYXNpY2FsbHkgc2F5aW5nICJ0
aGlzIGlzIGFsd2F5cyBpbiB0aGUgY29udGV4dCBvZiB0aGUgbWFpbiBkb2N1bWVudCIKICAgICAv
LyB3aGljaCBwcm9iYWJseSBpc24ndCBhY2N1cmF0ZS4KLSAgICBjb29raWVNYW5hZ2VyLT5zZXRD
b29raWVzKFdlYkNvcmU6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpLCB7IGNvb2tpZSB9
LCBhY3RpdmVVUkwsIGFjdGl2ZVVSTCk7CisgICAgY29va2llTWFuYWdlci0+c2V0Q29va2llcyhX
ZWJDb3JlOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSwgeyBjb29raWUgfSwgYWN0aXZl
VVJMLCBhY3RpdmVVUkwsIFtdKENhbGxiYWNrQmFzZTo6RXJyb3Ipe30pOwogCiAgICAgY2FsbGJh
Y2stPnNlbmRTdWNjZXNzKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViQ29va2llTWFuYWdlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJDb29raWVNYW5hZ2VyUHJveHkuY3BwCmluZGV4IDJlYWE1Y2UzYmZhLi5lMDIzYjgyNWVlOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94
eS5jcHAKQEAgLTMyLDggKzMyLDExIEBACiAjaW5jbHVkZSAiV2ViQ29va2llTWFuYWdlck1lc3Nh
Z2VzLmgiCiAjaW5jbHVkZSAiV2ViQ29va2llTWFuYWdlclByb3h5TWVzc2FnZXMuaCIKICNpbmNs
dWRlICJXZWJQcm9jZXNzUG9vbC5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ29va2llLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbkRhdGEuaD4KIAordXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjb25zdCBjaGFyKiBXZWJDb29raWVNYW5h
Z2VyUHJveHk6OnN1cHBsZW1lbnROYW1lKCkKQEAgLTk0LDcgKzk3LDcgQEAgdm9pZCBXZWJDb29r
aWVNYW5hZ2VyUHJveHk6OmRlcmVmV2ViQ29udGV4dFN1cHBsZW1lbnQoKQogICAgIEFQSTo6T2Jq
ZWN0OjpkZXJlZigpOwogfQogCi12b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6Z2V0SG9zdG5h
bWVzV2l0aENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgRnVuY3Rpb248dm9p
ZCAoQVBJOjpBcnJheSosIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24p
Cit2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6Z2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoU2Vz
c2lvbklEIHNlc3Npb25JRCwgRnVuY3Rpb248dm9pZCAoQVBJOjpBcnJheSosIENhbGxiYWNrQmFz
ZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7CiAgICAgYXV0byBjYWxsYmFjayA9IEFy
cmF5Q2FsbGJhY2s6OmNyZWF0ZShXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pKTsKICAgICB1aW50
NjRfdCBjYWxsYmFja0lEID0gY2FsbGJhY2stPmNhbGxiYWNrSUQoKTsKQEAgLTExNCwzNyArMTE3
LDk2IEBAIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpkaWRHZXRIb3N0bmFtZXNXaXRoQ29v
a2llcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgaG9zCiAgICAgY2FsbGJhY2stPnBlcmZvcm1DYWxs
YmFja1dpdGhSZXR1cm5WYWx1ZShBUEk6OkFycmF5OjpjcmVhdGVTdHJpbmdBcnJheShob3N0bmFt
ZXMpLnB0cigpKTsKIH0KIAotdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRlbGV0ZUNvb2tp
ZXNGb3JIb3N0bmFtZShXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcm
IGhvc3RuYW1lKQordm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRlbGV0ZUNvb2tpZXNGb3JI
b3N0bmFtZShTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQogewog
ICAgIHByb2Nlc3NQb29sKCktPnNlbmRUb05ldHdvcmtpbmdQcm9jZXNzUmVsYXVuY2hpbmdJZk5l
Y2Vzc2FyeShNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6RGVsZXRlQ29va2llc0Zvckhvc3Ru
YW1lKHNlc3Npb25JRCwgaG9zdG5hbWUpKTsKIH0KIAotdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJv
eHk6OmRlbGV0ZUFsbENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCkKK3ZvaWQg
V2ViQ29va2llTWFuYWdlclByb3h5OjpkZWxldGVBbGxDb29raWVzKFNlc3Npb25JRCBzZXNzaW9u
SUQpCiB7CiAgICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvTmV0d29ya2luZ1Byb2Nlc3NSZWxhdW5j
aGluZ0lmTmVjZXNzYXJ5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpEZWxldGVBbGxDb29r
aWVzKHNlc3Npb25JRCkpOwogfQogCi12b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGVsZXRl
QWxsQ29va2llc01vZGlmaWVkU2luY2UoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgc3Rk
OjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCB0aW1lKQordm9pZCBXZWJDb29raWVN
YW5hZ2VyUHJveHk6OmRlbGV0ZUNvb2tpZShTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBDb29r
aWUmIGNvb2tpZSwgRnVuY3Rpb248dm9pZCAoQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJh
Y2tGdW5jdGlvbikKK3sKKyAgICBhdXRvIGNhbGxiYWNrID0gVm9pZENhbGxiYWNrOjpjcmVhdGUo
V1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSk7CisgICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IGNh
bGxiYWNrLT5jYWxsYmFja0lEKCk7CisgICAgbV92b2lkQ2FsbGJhY2tzLnNldChjYWxsYmFja0lE
LCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisKKyAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9OZXR3b3Jr
aW5nUHJvY2Vzc1JlbGF1bmNoaW5nSWZOZWNlc3NhcnkoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFn
ZXI6OkRlbGV0ZUNvb2tpZShzZXNzaW9uSUQsIGNvb2tpZSwgY2FsbGJhY2tJRCkpOworfQorCit2
b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2Uo
U2Vzc2lvbklEIHNlc3Npb25JRCwgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2lu
dCB0aW1lLCBGdW5jdGlvbjx2b2lkIChDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1
bmN0aW9uKQoreworICAgIGF1dG8gY2FsbGJhY2sgPSBWb2lkQ2FsbGJhY2s6OmNyZWF0ZShXVEZN
b3ZlKGNhbGxiYWNrRnVuY3Rpb24pKTsKKyAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gY2FsbGJh
Y2stPmNhbGxiYWNrSUQoKTsKKyAgICBtX3ZvaWRDYWxsYmFja3Muc2V0KGNhbGxiYWNrSUQsIFdU
Rk1vdmUoY2FsbGJhY2spKTsKKworICAgIHByb2Nlc3NQb29sKCktPnNlbmRUb05ldHdvcmtpbmdQ
cm9jZXNzUmVsYXVuY2hpbmdJZk5lY2Vzc2FyeShNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6
RGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2Uoc2Vzc2lvbklELCB0aW1lLCBjYWxsYmFja0lE
KSk7Cit9CisKK3ZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpzZXRDb29raWUoU2Vzc2lvbklE
IHNlc3Npb25JRCwgY29uc3QgQ29va2llJiBjb29raWUsIEZ1bmN0aW9uPHZvaWQgKENhbGxiYWNr
QmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7Ci0gICAgcHJvY2Vzc1Bvb2woKS0+
c2VuZFRvTmV0d29ya2luZ1Byb2Nlc3NSZWxhdW5jaGluZ0lmTmVjZXNzYXJ5KE1lc3NhZ2VzOjpX
ZWJDb29raWVNYW5hZ2VyOjpEZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZShzZXNzaW9uSUQs
IHRpbWUpKTsKKyAgICBhdXRvIGNhbGxiYWNrID0gVm9pZENhbGxiYWNrOjpjcmVhdGUoV1RGTW92
ZShjYWxsYmFja0Z1bmN0aW9uKSk7CisgICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IGNhbGxiYWNr
LT5jYWxsYmFja0lEKCk7CisgICAgbV92b2lkQ2FsbGJhY2tzLnNldChjYWxsYmFja0lELCBXVEZN
b3ZlKGNhbGxiYWNrKSk7CisKKyAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9OZXR3b3JraW5nUHJv
Y2Vzc1JlbGF1bmNoaW5nSWZOZWNlc3NhcnkoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OlNl
dENvb2tpZShzZXNzaW9uSUQsIGNvb2tpZSwgY2FsbGJhY2tJRCkpOwogfQogCi12b2lkIFdlYkNv
b2tpZU1hbmFnZXJQcm94eTo6c2V0Q29va2llcyhXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYgY29va2llcywgY29uc3QgV2ViQ29yZTo6
VVJMJiB1cmwsIGNvbnN0IFdlYkNvcmU6OlVSTCYgbWFpbkRvY3VtZW50VVJMKQordm9pZCBXZWJD
b29raWVNYW5hZ2VyUHJveHk6OnNldENvb2tpZXMoU2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3Qg
VmVjdG9yPENvb2tpZT4mIGNvb2tpZXMsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBVUkwmIG1haW5E
b2N1bWVudFVSTCwgRnVuY3Rpb248dm9pZCAoQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJh
Y2tGdW5jdGlvbikKIHsKLSAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9OZXR3b3JraW5nUHJvY2Vz
c1JlbGF1bmNoaW5nSWZOZWNlc3NhcnkoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OlNldENv
b2tpZXMoc2Vzc2lvbklELCBjb29raWVzLCB1cmwsIG1haW5Eb2N1bWVudFVSTCkpOworICAgIGF1
dG8gY2FsbGJhY2sgPSBWb2lkQ2FsbGJhY2s6OmNyZWF0ZShXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rp
b24pKTsKKyAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gY2FsbGJhY2stPmNhbGxiYWNrSUQoKTsK
KyAgICBtX3ZvaWRDYWxsYmFja3Muc2V0KGNhbGxiYWNrSUQsIFdURk1vdmUoY2FsbGJhY2spKTsK
KworICAgIHByb2Nlc3NQb29sKCktPnNlbmRUb05ldHdvcmtpbmdQcm9jZXNzUmVsYXVuY2hpbmdJ
Zk5lY2Vzc2FyeShNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6U2V0Q29va2llcyhzZXNzaW9u
SUQsIGNvb2tpZXMsIHVybCwgbWFpbkRvY3VtZW50VVJMLCBjYWxsYmFja0lEKSk7CiB9CiAKLXZv
aWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpzdGFydE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMoV2Vi
Q29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCkKK3ZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5Ojpn
ZXRBbGxDb29raWVzKFNlc3Npb25JRCBzZXNzaW9uSUQsIEZ1bmN0aW9uPHZvaWQgKGNvbnN0IFZl
Y3RvcjxDb29raWU+JiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikK
K3sKKyAgICBhdXRvIGNhbGxiYWNrID0gR2V0Q29va2llc0NhbGxiYWNrOjpjcmVhdGUoV1RGTW92
ZShjYWxsYmFja0Z1bmN0aW9uKSk7CisgICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IGNhbGxiYWNr
LT5jYWxsYmFja0lEKCk7CisgICAgbV9nZXRDb29raWVzQ2FsbGJhY2tzLnNldChjYWxsYmFja0lE
LCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisKKyAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9OZXR3b3Jr
aW5nUHJvY2Vzc1JlbGF1bmNoaW5nSWZOZWNlc3NhcnkoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFn
ZXI6OkdldEFsbENvb2tpZXMoc2Vzc2lvbklELCBjYWxsYmFja0lEKSk7Cit9CisKK3ZvaWQgV2Vi
Q29va2llTWFuYWdlclByb3h5OjpnZXRDb29raWVzKFNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0
IFVSTCYgdXJsLCBGdW5jdGlvbjx2b2lkIChjb25zdCBWZWN0b3I8Q29va2llPiYsIENhbGxiYWNr
QmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCit7CisgICAgYXV0byBjYWxsYmFjayA9
IEdldENvb2tpZXNDYWxsYmFjazo6Y3JlYXRlKFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbikpOwor
ICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgpOworICAgIG1f
Z2V0Q29va2llc0NhbGxiYWNrcy5zZXQoY2FsbGJhY2tJRCwgV1RGTW92ZShjYWxsYmFjaykpOwor
CisgICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvTmV0d29ya2luZ1Byb2Nlc3NSZWxhdW5jaGluZ0lm
TmVjZXNzYXJ5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpHZXRDb29raWVzKHNlc3Npb25J
RCwgdXJsLCBjYWxsYmFja0lEKSk7Cit9CisKK3ZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5Ojpk
aWRTZXRDb29raWVzKHVpbnQ2NF90IGNhbGxiYWNrSUQpCit7CisgICAgbV92b2lkQ2FsbGJhY2tz
LnRha2UoY2FsbGJhY2tJRCktPnBlcmZvcm1DYWxsYmFjaygpOworfQorCit2b2lkIFdlYkNvb2tp
ZU1hbmFnZXJQcm94eTo6ZGlkR2V0Q29va2llcyhjb25zdCBWZWN0b3I8Q29va2llPiYgY29va2ll
cywgdWludDY0X3QgY2FsbGJhY2tJRCkKK3sKKyAgICBtX2dldENvb2tpZXNDYWxsYmFja3MudGFr
ZShjYWxsYmFja0lEKS0+cGVyZm9ybUNhbGxiYWNrV2l0aFJldHVyblZhbHVlKGNvb2tpZXMpOwor
fQorCit2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGlkRGVsZXRlQ29va2llcyh1aW50NjRf
dCBjYWxsYmFja0lEKQoreworICAgIG1fdm9pZENhbGxiYWNrcy50YWtlKGNhbGxiYWNrSUQpLT5w
ZXJmb3JtQ2FsbGJhY2soKTsKK30KKwordm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OnN0YXJ0
T2JzZXJ2aW5nQ29va2llQ2hhbmdlcyhTZXNzaW9uSUQgc2Vzc2lvbklEKQogewogICAgIHByb2Nl
c3NQb29sKCktPnNlbmRUb05ldHdvcmtpbmdQcm9jZXNzUmVsYXVuY2hpbmdJZk5lY2Vzc2FyeShN
ZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6U3RhcnRPYnNlcnZpbmdDb29raWVDaGFuZ2VzKHNl
c3Npb25JRCkpOwogfQogCi12b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6c3RvcE9ic2Vydmlu
Z0Nvb2tpZUNoYW5nZXMoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCkKK3ZvaWQgV2ViQ29v
a2llTWFuYWdlclByb3h5OjpzdG9wT2JzZXJ2aW5nQ29va2llQ2hhbmdlcyhTZXNzaW9uSUQgc2Vz
c2lvbklEKQogewogICAgIHByb2Nlc3NQb29sKCktPnNlbmRUb05ldHdvcmtpbmdQcm9jZXNzUmVs
YXVuY2hpbmdJZk5lY2Vzc2FyeShNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6U3RvcE9ic2Vy
dmluZ0Nvb2tpZUNoYW5nZXMoc2Vzc2lvbklEKSk7CiB9CiAKLXZvaWQgV2ViQ29va2llTWFuYWdl
clByb3h5OjpzZXRDb29raWVPYnNlcnZlckNhbGxiYWNrKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4mJiBjYWxsYmFjaykKK3ZvaWQgV2ViQ29va2ll
TWFuYWdlclByb3h5OjpzZXRDb29raWVPYnNlcnZlckNhbGxiYWNrKFNlc3Npb25JRCBzZXNzaW9u
SUQsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4mJiBjYWxsYmFjaykKIHsKICAgICBpZiAoY2FsbGJh
Y2spCiAgICAgICAgIG1fY29va2llT2JzZXJ2ZXJzLnNldChzZXNzaW9uSUQsIFdURk1vdmUoY2Fs
bGJhY2spKTsKQEAgLTE1MiwxNCArMjE0LDE0IEBAIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5
OjpzZXRDb29raWVPYnNlcnZlckNhbGxiYWNrKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uCiAg
ICAgICAgIG1fY29va2llT2JzZXJ2ZXJzLnJlbW92ZShzZXNzaW9uSUQpOwogfQogCi12b2lkIFdl
YkNvb2tpZU1hbmFnZXJQcm94eTo6Y29va2llc0RpZENoYW5nZShXZWJDb3JlOjpTZXNzaW9uSUQg
c2Vzc2lvbklEKQordm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmNvb2tpZXNEaWRDaGFuZ2Uo
U2Vzc2lvbklEIHNlc3Npb25JRCkKIHsKICAgICBtX2NsaWVudC5jb29raWVzRGlkQ2hhbmdlKHRo
aXMpOwogICAgIGlmIChhdXRvIGNhbGxiYWNrID0gbV9jb29raWVPYnNlcnZlcnMuZ2V0KHNlc3Np
b25JRCkpCiAgICAgICAgIGNhbGxiYWNrKCk7CiB9CiAKLXZvaWQgV2ViQ29va2llTWFuYWdlclBy
b3h5OjpzZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KEhUVFBDb29raWVBY2NlcHRQb2xpY3kgcG9s
aWN5KQordm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OnNldEhUVFBDb29raWVBY2NlcHRQb2xp
Y3koU2Vzc2lvbklELCBIVFRQQ29va2llQWNjZXB0UG9saWN5IHBvbGljeSwgRnVuY3Rpb248dm9p
ZCAoQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKICNpZiBQTEFU
Rk9STShDT0NPQSkKICAgICBpZiAoIXByb2Nlc3NQb29sKCktPmlzVXNpbmdUZXN0aW5nTmV0d29y
a1Nlc3Npb24oKSkKQEAgLTE3MiwxMSArMjM0LDE2IEBAIHZvaWQgV2ViQ29va2llTWFuYWdlclBy
b3h5OjpzZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KEhUVFBDb29raWVBY2NlcHRQb2xpY3kgcG9s
CiAgICAgLy8gVGhlIHBvbGljeSBpcyBub3Qgc2VudCB0byBuZXdseSBjcmVhdGVkIHByb2Nlc3Nl
cyAob25seSBTb3VwIGRvZXMgdGhhdCB2aWEgc2V0SW5pdGlhbEhUVFBDb29raWVBY2NlcHRQb2xp
Y3koKSkuIFRoaXMgaXMgbm90IGEgc2VyaW91cyBwcm9ibGVtLCBiZWNhdXNlOgogICAgIC8vIC0g
V2hlbiB0ZXN0aW5nLCB3ZSBvbmx5IGhhdmUgb25lIFdlYlByb2Nlc3MgYW5kIG9uZSBOZXR3b3Jr
UHJvY2VzcywgYW5kIFdlYktpdFRlc3RSdW5uZXIgbmV2ZXIgcmVzdGFydHMgdGhlbTsKICAgICAv
LyAtIFdoZW4gbm90IHRlc3RpbmcsIENvY29hIGhhcyB0aGUgcG9saWN5IHBlcnNpc3RlZCwgYW5k
IHRodXMgbmV3IHByb2Nlc3NlcyB1c2UgaXQgKGV2ZW4gZm9yIGVwaGVtZXJhbCBzZXNzaW9ucyku
Ci0gICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJDb29r
aWVNYW5hZ2VyOjpTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHBvbGljeSkpOwotICAgIHByb2Nl
c3NQb29sKCktPnNlbmRUb05ldHdvcmtpbmdQcm9jZXNzKE1lc3NhZ2VzOjpXZWJDb29raWVNYW5h
Z2VyOjpTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHBvbGljeSkpOworICAgIHByb2Nlc3NQb29s
KCktPnNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6U2V0SFRU
UENvb2tpZUFjY2VwdFBvbGljeShwb2xpY3ksIDApKTsKKworICAgIGF1dG8gY2FsbGJhY2sgPSBW
b2lkQ2FsbGJhY2s6OmNyZWF0ZShXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pKTsKKyAgICB1aW50
NjRfdCBjYWxsYmFja0lEID0gY2FsbGJhY2stPmNhbGxiYWNrSUQoKTsKKyAgICBtX3ZvaWRDYWxs
YmFja3Muc2V0KGNhbGxiYWNrSUQsIFdURk1vdmUoY2FsbGJhY2spKTsKKworICAgIHByb2Nlc3NQ
b29sKCktPnNlbmRUb05ldHdvcmtpbmdQcm9jZXNzKE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2Vy
OjpTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHBvbGljeSwgY2FsbGJhY2tJRCkpOwogfQogCi12
b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6Z2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShGdW5j
dGlvbjx2b2lkIChIVFRQQ29va2llQWNjZXB0UG9saWN5LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4g
Y2FsbGJhY2tGdW5jdGlvbikKK3ZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpnZXRIVFRQQ29v
a2llQWNjZXB0UG9saWN5KFNlc3Npb25JRCwgRnVuY3Rpb248dm9pZCAoSFRUUENvb2tpZUFjY2Vw
dFBvbGljeSwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKICAg
ICBhdXRvIGNhbGxiYWNrID0gSFRUUENvb2tpZUFjY2VwdFBvbGljeUNhbGxiYWNrOjpjcmVhdGUo
V1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSk7CiAKQEAgLTE4OCwxMyArMjU1LDEyIEBAIHZvaWQg
V2ViQ29va2llTWFuYWdlclByb3h5OjpnZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KEZ1bmN0aW9u
PHZvaWQgKEhUVFBDb29raWVBCiAKIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpkaWRHZXRI
VFRQQ29va2llQWNjZXB0UG9saWN5KHVpbnQzMl90IHBvbGljeSwgdWludDY0X3QgY2FsbGJhY2tJ
RCkKIHsKLSAgICBSZWZQdHI8SFRUUENvb2tpZUFjY2VwdFBvbGljeUNhbGxiYWNrPiBjYWxsYmFj
ayA9IG1faHR0cENvb2tpZUFjY2VwdFBvbGljeUNhbGxiYWNrcy50YWtlKGNhbGxiYWNrSUQpOwot
ICAgIGlmICghY2FsbGJhY2spIHsKLSAgICAgICAgLy8gRklYTUU6IExvZyBlcnJvciBvciBhc3Nl
cnQuCi0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgbV9odHRwQ29va2llQWNjZXB0UG9saWN5
Q2FsbGJhY2tzLnRha2UoY2FsbGJhY2tJRCktPnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1
ZShwb2xpY3kpOworfQogCi0gICAgY2FsbGJhY2stPnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1cm5W
YWx1ZShwb2xpY3kpOwordm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRpZFNldEhUVFBDb29r
aWVBY2NlcHRQb2xpY3kodWludDY0X3QgY2FsbGJhY2tJRCkKK3sKKyAgICBtX3ZvaWRDYWxsYmFj
a3MudGFrZShjYWxsYmFja0lEKS0+cGVyZm9ybUNhbGxiYWNrKCk7CiB9CiAKIHZvaWQgV2ViQ29v
a2llTWFuYWdlclByb3h5OjpzZXRDb29raWVTdG9yYWdlUGFydGl0aW9uaW5nRW5hYmxlZChib29s
IGVuYWJsZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29va2ll
TWFuYWdlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdl
clByb3h5LmgKaW5kZXggY2Y3OThkN2NjY2MuLmZkZjg5MWUxNTg5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmgKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5oCkBAIC01NSw2ICs1NSw3
IEBAIGNsYXNzIFdlYlByb2Nlc3NQcm94eTsKIAogdHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8QVBJ
OjpBcnJheSo+IEFycmF5Q2FsbGJhY2s7CiB0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxIVFRQQ29v
a2llQWNjZXB0UG9saWN5PiBIVFRQQ29va2llQWNjZXB0UG9saWN5Q2FsbGJhY2s7Cit0eXBlZGVm
IEdlbmVyaWNDYWxsYmFjazxjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiY+IEdldENvb2tp
ZXNDYWxsYmFjazsKIAogY2xhc3MgV2ViQ29va2llTWFuYWdlclByb3h5IDogcHVibGljIEFQSTo6
T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6Q29va2llTWFuYWdlcj4sIHB1YmxpYyBXZWJD
b250ZXh0U3VwcGxlbWVudCwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CiBwdWJsaWM6
CkBAIC02NiwxNCArNjcsMjAgQEAgcHVibGljOgogICAgIHZvaWQgaW5pdGlhbGl6ZUNsaWVudChj
b25zdCBXS0Nvb2tpZU1hbmFnZXJDbGllbnRCYXNlKik7CiAgICAgCiAgICAgdm9pZCBnZXRIb3N0
bmFtZXNXaXRoQ29va2llcyhXZWJDb3JlOjpTZXNzaW9uSUQsIEZ1bmN0aW9uPHZvaWQgKEFQSTo6
QXJyYXkqLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CisgICAgdm9pZCBkZWxldGVDb29raWUo
V2ViQ29yZTo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpDb29raWUmLCBGdW5jdGlvbjx2b2lk
IChDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CiAgICAgdm9pZCBkZWxldGVDb29raWVzRm9ySG9z
dG5hbWUoV2ViQ29yZTo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGhvc3RuYW1lKTsKICAgICB2
b2lkIGRlbGV0ZUFsbENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklEKTsKLSAgICB2b2lkIGRlbGV0
ZUFsbENvb2tpZXNNb2RpZmllZFNpbmNlKFdlYkNvcmU6OlNlc3Npb25JRCwgc3RkOjpjaHJvbm86
OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCk7CisgICAgdm9pZCBkZWxldGVBbGxDb29raWVzTW9k
aWZpZWRTaW5jZShXZWJDb3JlOjpTZXNzaW9uSUQsIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6
OnRpbWVfcG9pbnQsIEZ1bmN0aW9uPHZvaWQgKENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKIAot
ICAgIHZvaWQgc2V0Q29va2llcyhXZWJDb3JlOjpTZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxXZWJD
b3JlOjpDb29raWU+JiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBt
YWluRG9jdW1lbnRVUkwpOworICAgIHZvaWQgc2V0Q29va2llKFdlYkNvcmU6OlNlc3Npb25JRCwg
Y29uc3QgV2ViQ29yZTo6Q29va2llJiwgRnVuY3Rpb248dm9pZCAoQ2FsbGJhY2tCYXNlOjpFcnJv
cik+JiYpOworICAgIHZvaWQgc2V0Q29va2llcyhXZWJDb3JlOjpTZXNzaW9uSUQsIGNvbnN0IFZl
Y3RvcjxXZWJDb3JlOjpDb29raWU+JiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgV2ViQ29y
ZTo6VVJMJiBtYWluRG9jdW1lbnRVUkwsIEZ1bmN0aW9uPHZvaWQgKENhbGxiYWNrQmFzZTo6RXJy
b3IpPiYmKTsKKworICAgIHZvaWQgZ2V0QWxsQ29va2llcyhXZWJDb3JlOjpTZXNzaW9uSUQsIEZ1
bmN0aW9uPHZvaWQgKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiwgQ2FsbGJhY2tCYXNl
OjpFcnJvcik+JiYgY29tcGxldGlvbkhhbmRsZXIpOworICAgIHZvaWQgZ2V0Q29va2llcyhXZWJD
b3JlOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIEZ1bmN0aW9uPHZvaWQgKGNvbnN0
IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY29tcGxl
dGlvbkhhbmRsZXIpOworCisgICAgdm9pZCBzZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KFdlYkNv
cmU6OlNlc3Npb25JRCwgSFRUUENvb2tpZUFjY2VwdFBvbGljeSwgRnVuY3Rpb248dm9pZCAoQ2Fs
bGJhY2tCYXNlOjpFcnJvcik+JiYpOworICAgIHZvaWQgZ2V0SFRUUENvb2tpZUFjY2VwdFBvbGlj
eShXZWJDb3JlOjpTZXNzaW9uSUQsIEZ1bmN0aW9uPHZvaWQgKEhUVFBDb29raWVBY2NlcHRQb2xp
Y3ksIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKIAotICAgIHZvaWQgc2V0SFRUUENvb2tpZUFj
Y2VwdFBvbGljeShIVFRQQ29va2llQWNjZXB0UG9saWN5KTsKLSAgICB2b2lkIGdldEhUVFBDb29r
aWVBY2NlcHRQb2xpY3koRnVuY3Rpb248dm9pZCAoSFRUUENvb2tpZUFjY2VwdFBvbGljeSwgQ2Fs
bGJhY2tCYXNlOjpFcnJvcik+KTsKICAgICB2b2lkIHNldENvb2tpZVN0b3JhZ2VQYXJ0aXRpb25p
bmdFbmFibGVkKGJvb2wpOwogCiAgICAgdm9pZCBzdGFydE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMo
V2ViQ29yZTo6U2Vzc2lvbklEKTsKQEAgLTk1LDYgKzEwMiwxMSBAQCBwcml2YXRlOgogICAgIHZv
aWQgZGlkR2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mLCB1aW50
NjRfdCBjYWxsYmFja0lEKTsKICAgICB2b2lkIGRpZEdldEhUVFBDb29raWVBY2NlcHRQb2xpY3ko
dWludDMyX3QgcG9saWN5LCB1aW50NjRfdCBjYWxsYmFja0lEKTsKIAorICAgIHZvaWQgZGlkU2V0
SFRUUENvb2tpZUFjY2VwdFBvbGljeSh1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICB2b2lkIGRp
ZFNldENvb2tpZXModWludDY0X3QgY2FsbGJhY2tJRCk7CisgICAgdm9pZCBkaWRHZXRDb29raWVz
KGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiwgdWludDY0X3QgY2FsbGJhY2tJRCk7Cisg
ICAgdm9pZCBkaWREZWxldGVDb29raWVzKHVpbnQ2NF90IGNhbGxiYWNrSUQpOworCiAgICAgdm9p
ZCBjb29raWVzRGlkQ2hhbmdlKFdlYkNvcmU6OlNlc3Npb25JRCk7CiAKICAgICAvLyBXZWJDb250
ZXh0U3VwcGxlbWVudApAQCAtMTEzLDYgKzEyNSw4IEBAIHByaXZhdGU6CiAKICAgICBIYXNoTWFw
PHVpbnQ2NF90LCBSZWZQdHI8QXJyYXlDYWxsYmFjaz4+IG1fYXJyYXlDYWxsYmFja3M7CiAgICAg
SGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPEhUVFBDb29raWVBY2NlcHRQb2xpY3lDYWxsYmFjaz4+
IG1faHR0cENvb2tpZUFjY2VwdFBvbGljeUNhbGxiYWNrczsKKyAgICBIYXNoTWFwPHVpbnQ2NF90
LCBSZWZQdHI8Vm9pZENhbGxiYWNrPj4gbV92b2lkQ2FsbGJhY2tzOworICAgIEhhc2hNYXA8dWlu
dDY0X3QsIFJlZlB0cjxHZXRDb29raWVzQ2FsbGJhY2s+PiBtX2dldENvb2tpZXNDYWxsYmFja3M7
CiAKICAgICBIYXNoTWFwPFdlYkNvcmU6OlNlc3Npb25JRCwgc3RkOjpmdW5jdGlvbjx2b2lkICgp
Pj4gbV9jb29raWVPYnNlcnZlcnM7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDEyZTAwOTAx
OGI3Li5kY2NiY2YyOWUwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YkNvb2tpZU1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCkBAIC0yMyw2ICsyMywxMSBA
QAogbWVzc2FnZXMgLT4gV2ViQ29va2llTWFuYWdlclByb3h5IHsKICAgICBEaWRHZXRIb3N0bmFt
ZXNXaXRoQ29va2llcyhWZWN0b3I8U3RyaW5nPiBob3N0bmFtZXMsIHVpbnQ2NF90IGNhbGxiYWNr
SUQpOwogICAgIERpZEdldEhUVFBDb29raWVBY2NlcHRQb2xpY3kodWludDMyX3QgcG9saWN5LCB1
aW50NjRfdCBjYWxsYmFja0lEKTsKLSAgICAKKworICAgIERpZFNldEhUVFBDb29raWVBY2NlcHRQ
b2xpY3kodWludDY0X3QgY2FsbGJhY2tJRCk7CisgICAgRGlkRGVsZXRlQ29va2llcyh1aW50NjRf
dCBjYWxsYmFja0lEKTsKKyAgICBEaWRTZXRDb29raWVzKHVpbnQ2NF90IGNhbGxiYWNrSUQpOwor
ICAgIERpZEdldENvb2tpZXMoVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4gY29va2llcywgdWludDY0
X3QgY2FsbGJhY2tJRCk7CisKICAgICBDb29raWVzRGlkQ2hhbmdlKFdlYkNvcmU6OlNlc3Npb25J
RCBzZXNzaW9uSUQpCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
RnJhbWVQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuaApp
bmRleCA2YmY5OTM4NjJiNy4uNTViNWI2N2UwYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYkZyYW1lUHJveHkuaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIldlYkZyYW1lTGlz
dGVuZXJQcm94eS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVMb2FkZXJUeXBlcy5oPgogI2lu
Y2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVk
ZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggZjY5NjIz
MWJhMDUuLmFhYzZiYTViM2MxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUG9vbC5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJBUElBdXRvbWF0aW9uQ2xp
ZW50LmgiCiAjaW5jbHVkZSAiQVBJQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50LmgiCiAjaW5j
bHVkZSAiQVBJRG93bmxvYWRDbGllbnQuaCIKKyNpbmNsdWRlICJBUElIVFRQQ29va2llU3RvcmFn
ZS5oIgogI2luY2x1ZGUgIkFQSUxlZ2FjeUNvbnRleHRIaXN0b3J5Q2xpZW50LmgiCiAjaW5jbHVk
ZSAiQVBJUGFnZUNvbmZpZ3VyYXRpb24uaCIKICNpbmNsdWRlICJBUElQcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb24uaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUG9vbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKaW5k
ZXggODg1YWQzY2ViYjMuLmUwZTE5MjZkNTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Bvb2wuaApAQCAtNzYsNiArNzYsNyBAQCBuYW1lc3BhY2UgQVBJIHsKIGNsYXNz
IEF1dG9tYXRpb25DbGllbnQ7CiBjbGFzcyBDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQ7CiBj
bGFzcyBEb3dubG9hZENsaWVudDsKK2NsYXNzIEhUVFBDb29raWVTdG9yYWdlOwogY2xhc3MgTGVn
YWN5Q29udGV4dEhpc3RvcnlDbGllbnQ7CiBjbGFzcyBQYWdlQ29uZmlndXJhdGlvbjsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0
YVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRl
RGF0YVN0b3JlLmNwcAppbmRleCA3YmFhZjg1NDU0Mi4uY2Y3N2VlYzE0NGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFT
dG9yZS5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJBUElXZWJzaXRlRGF0YVJlY29y
ZC5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJTdG9y
YWdlTWFuYWdlci5oIgorI2luY2x1ZGUgIldlYkNvb2tpZU1hbmFnZXJQcm94eS5oIgogI2luY2x1
ZGUgIldlYlByb2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sLmgiCiAj
aW5jbHVkZSAiV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgiCkBAIC0xMDUsNiArMTA2
LDI3IEBAIFdlYnNpdGVEYXRhU3RvcmU6On5XZWJzaXRlRGF0YVN0b3JlKCkKICAgICB9CiB9CiAK
K1JlZjxXZWJQcm9jZXNzUG9vbD4gV2Vic2l0ZURhdGFTdG9yZTo6cHJvY2Vzc1Bvb2xGb3JDb29r
aWVTdG9yYWdlT3BlcmF0aW9ucygpCit7CisgICAgLy8gT3VyIGNvbmNlcHRzIG9mIFdlYlByb2Nl
c3MsIFdlYlByb2Nlc3NQb29sLCBXZWJzaXRlRGF0YVN0b3JlLCBhbmQgU2Vzc2lvbklEcyBoYXZl
IGFsbCBzdGFydGVkIHRvIG92ZXJsYXAKKyAgICAvLyB3aXRob3V0IGNsZWFyIGRpdmlzaW9ucyBv
ZiByZXNwb25zaWJpbGl0aWVzLgorICAgIC8vIEluIHByYWN0aWNlLCBtdWx0aXBsZSBXZWJQcm9j
ZXNzUG9vbHMgY2FuIGNvbnRhaW4gInRoZSBzYW1lIHNlc3Npb24iLCBlc3BlY2lhbGx5IHNpbmNl
IHRoZXJlIGlzIGN1cnJlbnRseQorICAgIC8vIG9ubHkgYSBzaW5nbGUgZGVmYXVsdCBnbG9iYWwg
U2Vzc2lvbklELgorICAgIC8vCisgICAgLy8gVGhpcyBtZWFucyB0aGF0IG11bHRpcGxlIE5ldHdv
cmtQcm9jZXNzZXMgY2FuIGJlIHVzaW5nIHRoZSBzYW1lIHNlc3Npb24sIHdoaWNoIG1lYW5zIHRo
YXQgbXVsdGlwbGUKKyAgICAvLyBOZXR3b3JrUHJvY2Vzc2VzIGNhbiBiZSByZWZlcnJpbmcgdG8g
dGhlIHNhbWUgcGxhdGZvcm0gY29va2llIHN0b3JhZ2UuCisgICAgLy8KKyAgICAvLyBXaGlsZSB0
aGlzIG1heSBjYXVzZSBjb21wbGljYXRpb25zIHdpdGggZnV0dXJlIEFQSXMgaXQgaXMgYWN0dWFs
bHkgZmluZSBmb3IgaW1wbGVtZW50aW5nIHRoZSBXS0hUVFBDb29raWVTdG9yYWdlIEFQSQorICAg
IC8vIGJlY2F1c2Ugd2Ugb25seSBuZWVkIG9uZSBOZXR3b3JrUHJvY2VzcyB0byBzdWNjZXNzZnVs
bHkgbWFrZSBhIHJlcXVlc3RlZCBwbGF0Zm9ybSBjb29raWUgc3RvcmFnZSBjaGFuZ2UuCisgICAg
Ly8KKyAgICAvLyBGSVhNRTogV2UgbmVlZCB0byBzdGFydCB0byB1bnJhdmVsIHRoaXMgbWVzcyBn
b2luZyBmb3J3YXJkLgorCisgICAgYXV0byBwb29scyA9IHByb2Nlc3NQb29scygxKTsKKyAgICBB
U1NFUlQoIXBvb2xzLmlzRW1wdHkoKSk7CisKKyAgICByZXR1cm4gKipwb29scy5iZWdpbigpOwor
fQorCiB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnJlc29sdmVEaXJlY3Rvcmllc0lmTmVjZXNzYXJ5
KCkKIHsKICAgICBpZiAobV9oYXNSZXNvbHZlZERpcmVjdG9yaWVzKQpAQCAtMTEwOCw3ICsxMTMw
LDcgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjp3ZWJQcm9jZXNzRGlkQ2xvc2VDb25uZWN0aW9u
KFdlYlByb2Nlc3NQcm94eSYgd2ViUHJvY2Vzc1AKICAgICAgICAgbV9zdG9yYWdlTWFuYWdlci0+
cHJvY2Vzc0RpZENsb3NlQ29ubmVjdGlvbih3ZWJQcm9jZXNzUHJveHksIGNvbm5lY3Rpb24pOwog
fQogCi1IYXNoU2V0PFJlZlB0cjxXZWJQcm9jZXNzUG9vbD4+IFdlYnNpdGVEYXRhU3RvcmU6OnBy
b2Nlc3NQb29scygpIGNvbnN0CitIYXNoU2V0PFJlZlB0cjxXZWJQcm9jZXNzUG9vbD4+IFdlYnNp
dGVEYXRhU3RvcmU6OnByb2Nlc3NQb29scyhzaXplX3QgY291bnQpIGNvbnN0CiB7CiAgICAgSGFz
aFNldDxSZWZQdHI8V2ViUHJvY2Vzc1Bvb2w+PiBwcm9jZXNzUG9vbHM7CiAgICAgZm9yIChhdXRv
JiBwcm9jZXNzIDogcHJvY2Vzc2VzKCkpCkBAIC0xMTIyLDExICsxMTQ0LDIwIEBAIEhhc2hTZXQ8
UmVmUHRyPFdlYlByb2Nlc3NQb29sPj4gV2Vic2l0ZURhdGFTdG9yZTo6cHJvY2Vzc1Bvb2xzKCkg
Y29uc3QKICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc1Bvb2xzLmFkZChwcm9jZXNzUG9vbCk7
CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIH0gZWxzZSBpZiAoJkFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZSgp
LT53ZWJzaXRlRGF0YVN0b3JlKCkgPT0gdGhpcykgeworICAgICAgICAgICAgICAgIC8vIElmIGEg
cHJvY2VzcyBwb29sIGRvZXNuJ3QgaGF2ZSBhbiBleHBsaWNpdCBkYXRhIHN0b3JlIGFuZCB0aGlz
IGlzIHRoZSBkZWZhdWx0IFdlYnNpdGVEYXRhU3RvcmUsCisgICAgICAgICAgICAgICAgLy8gYWRk
IHRoYXQgcHJvY2VzcyBwb29sIHRvIHRoZSBzZXQuCisgICAgICAgICAgICAgICAgLy8gRklYTUU6
IFRoaXMgYmVoYXZpb3IgaXMgd2VpcmQgYW5kIG5lY2Vzc2l0YXRlZCBieSB0aGUgZmFjdCB0aGF0
IHByb2Nlc3MgcG9vbHMgZG9uJ3QgYWx3YXlzCisgICAgICAgICAgICAgICAgLy8gaGF2ZSBhIGRh
dGEgc3RvcmU7IFRoZXkgc2hvdWxkLgorICAgICAgICAgICAgICAgIHByb2Nlc3NQb29scy5hZGQo
cHJvY2Vzc1Bvb2wpOwogICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAocHJvY2Vzc1Bv
b2xzLnNpemUoKSA9PSBjb3VudCkKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQog
ICAgIH0KIAotICAgIGlmIChwcm9jZXNzUG9vbHMuaXNFbXB0eSgpKSB7CisgICAgaWYgKHByb2Nl
c3NQb29scy5pc0VtcHR5KCkgJiYgY291bnQpIHsKICAgICAgICAgYXV0byBwcm9jZXNzUG9vbCA9
IFdlYlByb2Nlc3NQb29sOjpjcmVhdGUoQVBJOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OmNy
ZWF0ZVdpdGhXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbihtX2NvbmZpZ3VyYXRpb24pKTsK
ICAgICAgICAgcHJvY2Vzc1Bvb2xzLmFkZChwcm9jZXNzUG9vbC5wdHIoKSk7CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRh
U3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0
YVN0b3JlLmgKaW5kZXggOTc1YmFjOGQ4OWIuLjhkMTNiY2U0OTgyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgK
QEAgLTEwMyw2ICsxMDMsOCBAQCBwdWJsaWM6CiAKICAgICBTdG9yYWdlTWFuYWdlciogc3RvcmFn
ZU1hbmFnZXIoKSB7IHJldHVybiBtX3N0b3JhZ2VNYW5hZ2VyLmdldCgpOyB9CiAKKyAgICBSZWY8
V2ViUHJvY2Vzc1Bvb2w+IHByb2Nlc3NQb29sRm9yQ29va2llU3RvcmFnZU9wZXJhdGlvbnMoKTsK
KwogcHJpdmF0ZToKICAgICBleHBsaWNpdCBXZWJzaXRlRGF0YVN0b3JlKFdlYkNvcmU6OlNlc3Np
b25JRCk7CiAgICAgZXhwbGljaXQgV2Vic2l0ZURhdGFTdG9yZShDb25maWd1cmF0aW9uKTsKQEAg
LTExOSw3ICsxMjEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcGxhdGZvcm1EZXN0cm95KCk7CiAg
ICAgc3RhdGljIHZvaWQgcGxhdGZvcm1SZW1vdmVSZWNlbnRTZWFyY2hlcyhzdGQ6OmNocm9ubzo6
c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50KTsKIAotICAgIEhhc2hTZXQ8UmVmUHRyPFdlYlByb2Nl
c3NQb29sPj4gcHJvY2Vzc1Bvb2xzKCkgY29uc3Q7CisgICAgSGFzaFNldDxSZWZQdHI8V2ViUHJv
Y2Vzc1Bvb2w+PiBwcm9jZXNzUG9vbHMoc2l6ZV90IGNvdW50ID0gc3RkOjpudW1lcmljX2xpbWl0
czxzaXplX3Q+OjptYXgoKSkgY29uc3Q7CiAKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQ
SSkKICAgICBWZWN0b3I8UGx1Z2luTW9kdWxlSW5mbz4gcGx1Z2lucygpIGNvbnN0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDdl
MTg4MjJmMDRkLi45YzYzZjY4MzJmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViS2l0
Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTA2Myw2ICsxMDYzLDkgQEAKIAkJNTFEMTI0
MzUxRTZERjY1MjAwMkIyODIwIC8qIFdLVVJMU2NoZW1lSGFuZGxlclRhc2suaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRDEyNDJGMUU2RERERDcwMDJC
MjgyMCAvKiBXS1VSTFNjaGVtZUhhbmRsZXJUYXNrLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHVibGljLCApOyB9OyB9OwogCQk1MUQxMjQzNjFFNkRGQjM5MDAyQjI4MjAgLyogV0tV
UkxTY2hlbWVIYW5kbGVyVGFzay5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUxRDEyNDMwMUU2RERERDcwMDJCMjgyMCAvKiBXS1VSTFNjaGVtZUhhbmRs
ZXJUYXNrLm1tICovOyB9OwogCQk1MUQxMjQzQTFFNkUwQUFCMDAyQjI4MjAgLyogQVBJVVJMU2No
ZW1lSGFuZGxlclRhc2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTFEMTI0MzgxRTZERkRCOTAwMkIyODIwIC8qIEFQSVVSTFNjaGVtZUhhbmRsZXJU
YXNrLmNwcCAqLzsgfTsKKwkJNTFEMTI0OTExRTc0QkYzQzAwMkIyODIwIC8qIEFQSUhUVFBDb29r
aWVTdG9yYWdlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxRDEyNDgyMUU3MzRBQzgwMDJCMjgyMCAvKiBBUElIVFRQQ29va2llU3RvcmFnZS5jcHAg
Ki87IH07CisJCTUxRDEyNDkyMUU3NEJGNDgwMDJCMjgyMCAvKiBfV0tIVFRQQ29va2llU3RvcmFn
ZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRDEy
NDg1MUU3MzRBRTMwMDJCMjgyMCAvKiBfV0tIVFRQQ29va2llU3RvcmFnZS5tbSAqLzsgfTsKKwkJ
NTFEMTI0OTkxRTc2M0MwMTAwMkIyODIwIC8qIF9XS0hUVFBDb29raWVTdG9yYWdlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUQxMjQ4NDFFNzM0QUUz
MDAyQjI4MjAgLyogX1dLSFRUUENvb2tpZVN0b3JhZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MUQxMzA1MzEzODJFQUMwMDAzNTFFREQgLyog
U2VjSXRlbVJlcXVlc3REYXRhLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUxRDEzMDRGMTM4MkVBQzAwMDM1MUVERCAvKiBTZWNJdGVtUmVxdWVzdERh
dGEuY3BwICovOyB9OwogCQk1MUQxMzA1NDEzODJFQUMwMDAzNTFFREQgLyogU2VjSXRlbVJlcXVl
c3REYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MUQxMzA1MDEzODJFQUMwMDAzNTFFREQgLyogU2VjSXRlbVJlcXVlc3REYXRhLmggKi87IH07CiAJ
CTUxRDEzMDU1MTM4MkVBQzAwMDM1MUVERCAvKiBTZWNJdGVtUmVzcG9uc2VEYXRhLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRDEzMDUxMTM4MkVB
QzAwMDM1MUVERCAvKiBTZWNJdGVtUmVzcG9uc2VEYXRhLmNwcCAqLzsgfTsKQEAgLTMyODUsNiAr
MzI4OCwxMSBAQAogCQk1MUQxMjQzNzFFNkRGRDJBMDAyQjI4MjAgLyogV0tVUkxTY2hlbWVIYW5k
bGVyVGFza0ludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLVVJM
U2NoZW1lSGFuZGxlclRhc2tJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1MUQxMjQzODFFNkRGREI5MDAyQjI4MjAgLyogQVBJVVJMU2NoZW1lSGFuZGxlclRhc2suY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQVBJVVJMU2NoZW1lSGFuZGxl
clRhc2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUQxMjQzOTFFNkRGREI5
MDAyQjI4MjAgLyogQVBJVVJMU2NoZW1lSGFuZGxlclRhc2suaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQVBJVVJMU2NoZW1lSGFuZGxlclRhc2suaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNTFEMTI0ODIxRTczNEFDODAwMkIyODIwIC8qIEFQSUhUVFBDb29raWVT
dG9yYWdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFQSUhUVFBD
b29raWVTdG9yYWdlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFEMTI0ODMx
RTczNEFDODAwMkIyODIwIC8qIEFQSUhUVFBDb29raWVTdG9yYWdlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEFQSUhUVFBDb29raWVTdG9yYWdlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTUxRDEyNDg0MUU3MzRBRTMwMDJCMjgyMCAvKiBfV0tIVFRQQ29va2ll
U3RvcmFnZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tIVFRQQ29va2ll
U3RvcmFnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MUQxMjQ4NTFFNzM0QUUz
MDAyQjI4MjAgLyogX1dLSFRUUENvb2tpZVN0b3JhZ2UubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBfV0tIVFRQQ29va2llU3RvcmFnZS5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNTFEMTI0ODYxRTczNEFFMzAwMkIyODIwIC8qIF9XS0hUVFBDb29r
aWVTdG9yYWdlSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dL
SFRUUENvb2tpZVN0b3JhZ2VJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1MUQxMzA0RjEzODJFQUMwMDAzNTFFREQgLyogU2VjSXRlbVJlcXVlc3REYXRhLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNlY0l0ZW1SZXF1ZXN0RGF0YS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxRDEzMDUwMTM4MkVBQzAwMDM1MUVERCAv
KiBTZWNJdGVtUmVxdWVzdERhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U2VjSXRlbVJlcXVlc3REYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxRDEz
MDUxMTM4MkVBQzAwMDM1MUVERCAvKiBTZWNJdGVtUmVzcG9uc2VEYXRhLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNlY0l0ZW1SZXNwb25zZURhdGEuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTQ3OCw2ICs1NDg2LDkgQEAKIAkJCQkyRTdBOTQ0
OTFCQkQ5NUM2MDA5NDU1NDcgLyogX1dLRm9jdXNlZEVsZW1lbnRJbmZvLmggKi8sCiAJCQkJMzdB
NjRFNTYxOEYzOEY0NjAwRUIzMEYxIC8qIF9XS0Zvcm1JbnB1dFNlc3Npb24uaCAqLywKIAkJCQlD
RDc4RTExODFEQjdFNUFEMDAxNEEyREUgLyogX1dLRnVsbHNjcmVlbkRlbGVnYXRlLmggKi8sCisJ
CQkJNTFEMTI0ODQxRTczNEFFMzAwMkIyODIwIC8qIF9XS0hUVFBDb29raWVTdG9yYWdlLmggKi8s
CisJCQkJNTFEMTI0ODUxRTczNEFFMzAwMkIyODIwIC8qIF9XS0hUVFBDb29raWVTdG9yYWdlLm1t
ICovLAorCQkJCTUxRDEyNDg2MUU3MzRBRTMwMDJCMjgyMCAvKiBfV0tIVFRQQ29va2llU3RvcmFn
ZUludGVybmFsLmggKi8sCiAJCQkJNTE0M0IyNUUxRERDREZEMTAwMTRGQUM2IC8qIF9XS0ljb25M
b2FkaW5nRGVsZWdhdGUuaCAqLywKIAkJCQkzN0E2NEU1NDE4RjM4RTNDMDBFQjMwRjEgLyogX1dL
SW5wdXREZWxlZ2F0ZS5oICovLAogCQkJCTJENzkwQTlDMUFENzA1MEQwMEFCOTBCMyAvKiBfV0tM
YXlvdXRNb2RlLmggKi8sCkBAIC02NzMyLDYgKzY3NDMsOCBAQAogCQkJCTJEQUJBNzc1MUE4MkI0
MjEwMEVGMEYxQSAvKiBBUElIaXN0b3J5Q2xpZW50LmggKi8sCiAJCQkJOTNBODhCNDIxQkM4ODI4
QzAwQUJBNUMyIC8qIEFQSUhpdFRlc3RSZXN1bHQuY3BwICovLAogCQkJCTkzQTg4QjQzMUJDODgy
OEMwMEFCQTVDMiAvKiBBUElIaXRUZXN0UmVzdWx0LmggKi8sCisJCQkJNTFEMTI0ODIxRTczNEFD
ODAwMkIyODIwIC8qIEFQSUhUVFBDb29raWVTdG9yYWdlLmNwcCAqLywKKwkJCQk1MUQxMjQ4MzFF
NzM0QUM4MDAyQjI4MjAgLyogQVBJSFRUUENvb2tpZVN0b3JhZ2UuaCAqLywKIAkJCQk1MTQzQjI2
MTFEREQwREEwMDAxNEZBQzYgLyogQVBJSWNvbkxvYWRpbmdDbGllbnQuaCAqLywKIAkJCQk3Q0U0
RDIwNjFBNDY3NzU3MDBDN0YxNTIgLyogQVBJTGVnYWN5Q29udGV4dEhpc3RvcnlDbGllbnQuaCAq
LywKIAkJCQkxQTI0NjRGMjE4OTFFNDUxMDAyMzRDNUIgLyogQVBJTG9hZGVyQ2xpZW50LmggKi8s
CkBAIC04NTE1LDYgKzg1MjgsNyBAQAogCQkJCTUxNDEyOTk0MUM2NDI4QkIwMDU5RTcxNCAvKiBX
ZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMDUyMzc0MUM3
M0QzOEIwMDc5OTNDQiAvKiBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXJNZXNzYWdlcy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQkNDRjZBQkQxMkM5MUVGOTAwOEY5QzM1IC8qIFdlYkltYWdlLmggaW4g
SGVhZGVycyAqLywKKwkJCQk1MUQxMjQ5OTFFNzYzQzAxMDAyQjI4MjAgLyogX1dLSFRUUENvb2tp
ZVN0b3JhZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTFDOEUyODIwMTI3NUQxNTQwMEJDN0JEMCAv
KiBXZWJJbnNwZWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMDMyRDgyMTBGNDM3OEQwMDU4
QzE1QSAvKiBXZWJJbnNwZWN0b3JDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1NUJBODM1
MUJBM0U3MEEwMDdDRDMzRCAvKiBXZWJJbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXIuaCBp
biBIZWFkZXJzICovLApAQCAtOTc2Nyw2ICs5NzgxLDcgQEAKIAkJCQkxQTZGQkEyQjExRTY4NjI3
MDBEQjEzNzEgLyogTmV0c2NhcGVCcm93c2VyRnVuY3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MUE2RkJEMjkxMUU2OUJDMjAwREIxMzcxIC8qIE5ldHNjYXBlUGx1Z2luLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTFBRTVCN0ZCMTFFN0FFRDIwMEJBNjc2NyAvKiBOZXRzY2FwZVBsdWdpbk1hYy5t
bSBpbiBTb3VyY2VzICovLAorCQkJCTUxRDEyNDkyMUU3NEJGNDgwMDJCMjgyMCAvKiBfV0tIVFRQ
Q29va2llU3RvcmFnZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFBNEE5QzU1MTJCODE2Q0YwMDhG
RTk4NCAvKiBOZXRzY2FwZVBsdWdpbk1vZHVsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4MzlB
MkYzMTFFMjA2NzQ1MDAzOTA1N0UgLyogSGlnaFBlcmZvcm1hbmNlR3JhcGhpY3NVc2FnZVNhbXBs
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE0QTlDOUExMkI4MjFDRDAwOEZFOTg0IC8qIE5l
dHNjYXBlUGx1Z2luTW9kdWxlTWFjLm1tIGluIFNvdXJjZXMgKi8sCkBAIC05Nzg1LDYgKzk4MDAs
NyBAQAogCQkJCTgzMUVFQkJFMUJEODVDNDMwMEJCNjRDMyAvKiBOZXR3b3JrQ2FjaGVTcGVjdWxh
dGl2ZUxvYWQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODMyQUUyNTMxQkUyRThDRDAwRkFBRTEw
IC8qIE5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZE1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJODNCRENDQjkxQUM1RkRCNjAwM0Y2NDQxIC8qIE5ldHdvcmtDYWNoZVN0YXRpc3RpY3Mu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTFEMTI0OTExRTc0QkYzQzAwMkIyODIwIC8qIEFQSUhU
VFBDb29raWVTdG9yYWdlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUU0NDM2RUQwMUEwRDA0MEIw
MEVBRDIwNCAvKiBOZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTgz
MTA0MjhDMUJENkI2NkYwMEE3MTVFNCAvKiBOZXR3b3JrQ2FjaGVTdWJyZXNvdXJjZXNFbnRyeS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk1MzAyNTgzRDFEQ0JCRDIyMDBEQTg5QzIgLyogTmV0d29y
a0NhcHR1cmVFdmVudC5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmNwcAppbmRleCA5ZTIxZjc4
Y2NkYi4uNzU0M2EyOWQ4YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
Q29va2llcy9XZWJDb29raWVNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5jcHAKQEAgLTcyLDIyICs3Miw2NCBAQCB2b2lk
IFdlYkNvb2tpZU1hbmFnZXI6OmRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZShTZXNzaW9uSUQgc2Vz
c2lvbklELCBjb25zdCBTdHJpbgogICAgICAgICBXZWJDb3JlOjpkZWxldGVDb29raWVzRm9ySG9z
dG5hbWVzKCpzdG9yYWdlU2Vzc2lvbiwgeyBob3N0bmFtZSB9KTsKIH0KIAorCiB2b2lkIFdlYkNv
b2tpZU1hbmFnZXI6OmRlbGV0ZUFsbENvb2tpZXMoU2Vzc2lvbklEIHNlc3Npb25JRCkKIHsKICAg
ICBpZiAoYXV0byogc3RvcmFnZVNlc3Npb24gPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3Jh
Z2VTZXNzaW9uKHNlc3Npb25JRCkpCiAgICAgICAgIFdlYkNvcmU6OmRlbGV0ZUFsbENvb2tpZXMo
KnN0b3JhZ2VTZXNzaW9uKTsKIH0KIAotdm9pZCBXZWJDb29raWVNYW5hZ2VyOjpkZWxldGVBbGxD
b29raWVzTW9kaWZpZWRTaW5jZShTZXNzaW9uSUQgc2Vzc2lvbklELCBzdGQ6OmNocm9ubzo6c3lz
dGVtX2Nsb2NrOjp0aW1lX3BvaW50IHRpbWUpCit2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmRlbGV0
ZUNvb2tpZShTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBDb29raWUmIGNvb2tpZSwgdWludDY0
X3QgY2FsbGJhY2tJRCkKK3sKKyAgICBpZiAoYXV0byogc3RvcmFnZVNlc3Npb24gPSBOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCisgICAgICAgIHN0b3Jh
Z2VTZXNzaW9uLT5kZWxldGVDb29raWUoY29va2llKTsKKworICAgIG1fcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViQ29va2llTWFuYWdlclByb3h5OjpEaWREZWxldGVDb29raWVzKGNhbGxiYWNr
SUQpLCAwKTsKK30KKwordm9pZCBXZWJDb29raWVNYW5hZ2VyOjpkZWxldGVBbGxDb29raWVzTW9k
aWZpZWRTaW5jZShTZXNzaW9uSUQgc2Vzc2lvbklELCBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2Nr
Ojp0aW1lX3BvaW50IHRpbWUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiB7CiAgICAgaWYgKGF1dG8q
IHN0b3JhZ2VTZXNzaW9uID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihz
ZXNzaW9uSUQpKQogICAgICAgICBXZWJDb3JlOjpkZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5j
ZSgqc3RvcmFnZVNlc3Npb24sIHRpbWUpOworCisgICAgaWYgKGNhbGxiYWNrSUQpCisgICAgICAg
IG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlclByb3h5OjpEaWREZWxl
dGVDb29raWVzKGNhbGxiYWNrSUQpLCAwKTsKK30KKwordm9pZCBXZWJDb29raWVNYW5hZ2VyOjpn
ZXRBbGxDb29raWVzKFNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit7
CisgICAgVmVjdG9yPENvb2tpZT4gY29va2llczsKKyAgICBpZiAoYXV0byogc3RvcmFnZVNlc3Np
b24gPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCisg
ICAgICAgIGNvb2tpZXMgPSBzdG9yYWdlU2Vzc2lvbi0+Z2V0QWxsQ29va2llcygpOworCisgICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OkRpZEdldENv
b2tpZXMoY29va2llcywgY2FsbGJhY2tJRCksIDApOwogfQogCi12b2lkIFdlYkNvb2tpZU1hbmFn
ZXI6OnNldENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVmVjdG9y
PENvb2tpZT4mIGNvb2tpZXMsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBVUkwmIG1haW5Eb2N1bWVu
dFVSTCkKK3ZvaWQgV2ViQ29va2llTWFuYWdlcjo6Z2V0Q29va2llcyhTZXNzaW9uSUQgc2Vzc2lv
bklELCBjb25zdCBVUkwmIHVybCwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3sKKyAgICBWZWN0b3I8
Q29va2llPiBjb29raWVzOworICAgIGlmIChhdXRvKiBzdG9yYWdlU2Vzc2lvbiA9IE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKKyAgICAgICAgY29va2ll
cyA9IHN0b3JhZ2VTZXNzaW9uLT5nZXRDb29raWVzKHVybCk7CisKKyAgICBtX3Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6RGlkR2V0Q29va2llcyhjb29raWVz
LCBjYWxsYmFja0lEKSwgMCk7Cit9CisKK3ZvaWQgV2ViQ29va2llTWFuYWdlcjo6c2V0Q29va2ll
KFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IENvb2tpZSYgY29va2llLCB1aW50
NjRfdCBjYWxsYmFja0lEKQoreworICAgIGlmIChhdXRvKiBzdG9yYWdlU2Vzc2lvbiA9IE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKKyAgICAgICAgc3Rv
cmFnZVNlc3Npb24tPnNldENvb2tpZShjb29raWUpOworCisgICAgaWYgKGNhbGxiYWNrSUQpCisg
ICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlclByb3h5OjpE
aWRTZXRDb29raWVzKGNhbGxiYWNrSUQpLCAwKTsKK30KKwordm9pZCBXZWJDb29raWVNYW5hZ2Vy
OjpzZXRDb29raWVzKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxD
b29raWU+JiBjb29raWVzLCBjb25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBtYWluRG9jdW1lbnRV
UkwsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiB7CiAgICAgaWYgKGF1dG8qIHN0b3JhZ2VTZXNzaW9u
ID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQogICAg
ICAgICBzdG9yYWdlU2Vzc2lvbi0+c2V0Q29va2llcyhjb29raWVzLCB1cmwsIG1haW5Eb2N1bWVu
dFVSTCk7CisKKyAgICBpZiAoY2FsbGJhY2tJRCkKKyAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OkRpZFNldENvb2tpZXMoY2FsbGJhY2tJRCks
IDApOwogfQogCiB2b2lkIFdlYkNvb2tpZU1hbmFnZXI6Om5vdGlmeUNvb2tpZXNEaWRDaGFuZ2Uo
U2Vzc2lvbklEIHNlc3Npb25JRCkKQEAgLTExMSw5ICsxNTMsMTIgQEAgdm9pZCBXZWJDb29raWVN
YW5hZ2VyOjpzdG9wT2JzZXJ2aW5nQ29va2llQ2hhbmdlcyhTZXNzaW9uSUQgc2Vzc2lvbklEKQog
ICAgICAgICBXZWJDb3JlOjpzdG9wT2JzZXJ2aW5nQ29va2llQ2hhbmdlcygqc3RvcmFnZVNlc3Np
b24pOwogfQogCi12b2lkIFdlYkNvb2tpZU1hbmFnZXI6OnNldEhUVFBDb29raWVBY2NlcHRQb2xp
Y3koSFRUUENvb2tpZUFjY2VwdFBvbGljeSBwb2xpY3kpCit2b2lkIFdlYkNvb2tpZU1hbmFnZXI6
OnNldEhUVFBDb29raWVBY2NlcHRQb2xpY3koSFRUUENvb2tpZUFjY2VwdFBvbGljeSBwb2xpY3ks
IHVpbnQ2NF90IGNhbGxiYWNrSUQpCiB7CiAgICAgcGxhdGZvcm1TZXRIVFRQQ29va2llQWNjZXB0
UG9saWN5KHBvbGljeSk7CisKKyAgICBpZiAoY2FsbGJhY2tJRCkKKyAgICAgICAgbV9wcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OkRpZFNldEhUVFBDb29raWVB
Y2NlcHRQb2xpY3koY2FsbGJhY2tJRCksIDApOwogfQogCiB2b2lkIFdlYkNvb2tpZU1hbmFnZXI6
OmdldEhUVFBDb29raWVBY2NlcHRQb2xpY3kodWludDY0X3QgY2FsbGJhY2tJRCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5oCmlu
ZGV4IGRiMjdkMjBhYWRkLi44MTg3NWRhZmI3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5oCkBAIC01Niw3ICs1Niw4IEBA
IHB1YmxpYzoKIAogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzdXBwbGVtZW50TmFtZSgpOwogCi0g
ICAgdm9pZCBzZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KEhUVFBDb29raWVBY2NlcHRQb2xpY3kp
OworICAgIHZvaWQgc2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShIVFRQQ29va2llQWNjZXB0UG9s
aWN5LCB1aW50NjRfdCBjYWxsYmFja0lEKTsKKwogI2lmIFVTRShTT1VQKQogICAgIHZvaWQgc2V0
Q29va2llUGVyc2lzdGVudFN0b3JhZ2UoY29uc3QgU3RyaW5nJiBzdG9yYWdlUGF0aCwgdWludDMy
X3Qgc3RvcmFnZVR5cGUpOwogI2VuZGlmCkBAIC02OCwxMSArNjksMTYgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYp
IG92ZXJyaWRlOwogCiAgICAgdm9pZCBnZXRIb3N0bmFtZXNXaXRoQ29va2llcyhXZWJDb3JlOjpT
ZXNzaW9uSUQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOworCisgICAgdm9pZCBkZWxldGVDb29raWUo
V2ViQ29yZTo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpDb29raWUmLCB1aW50NjRfdCBjYWxs
YmFja0lEKTsKICAgICB2b2lkIGRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZShXZWJDb3JlOjpTZXNz
aW9uSUQsIGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgZGVsZXRlQWxsQ29va2llcyhXZWJDb3Jl
OjpTZXNzaW9uSUQpOwotICAgIHZvaWQgZGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2UoV2Vi
Q29yZTo6U2Vzc2lvbklELCBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50KTsK
KyAgICB2b2lkIGRlbGV0ZUFsbENvb2tpZXNNb2RpZmllZFNpbmNlKFdlYkNvcmU6OlNlc3Npb25J
RCwgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCwgdWludDY0X3QgY2FsbGJh
Y2tJRCk7CiAKLSAgICB2b2lkIHNldENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklELCBjb25zdCBW
ZWN0b3I8V2ViQ29yZTo6Q29va2llPiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFdlYkNv
cmU6OlVSTCYgbWFpbkRvY3VtZW50VVJMKTsKKyAgICB2b2lkIHNldENvb2tpZShXZWJDb3JlOjpT
ZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OkNvb2tpZSYsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwor
ICAgIHZvaWQgc2V0Q29va2llcyhXZWJDb3JlOjpTZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxXZWJD
b3JlOjpDb29raWU+JiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBt
YWluRG9jdW1lbnRVUkwsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAgIHZvaWQgZ2V0QWxsQ29v
a2llcyhXZWJDb3JlOjpTZXNzaW9uSUQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAgIHZvaWQg
Z2V0Q29va2llcyhXZWJDb3JlOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIHVpbnQ2
NF90IGNhbGxiYWNrSUQpOwogCiAgICAgdm9pZCBwbGF0Zm9ybVNldEhUVFBDb29raWVBY2NlcHRQ
b2xpY3koSFRUUENvb2tpZUFjY2VwdFBvbGljeSk7CiAgICAgdm9pZCBnZXRIVFRQQ29va2llQWNj
ZXB0UG9saWN5KHVpbnQ2NF90IGNhbGxiYWNrSUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIubWVzc2FnZXMuaW4gYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5tZXNzYWdlcy5p
bgppbmRleCAwMGU3YjY1Yjc0OS4uMGE1ODU1NWVjNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLm1lc3NhZ2VzLmluCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLm1lc3Nh
Z2VzLmluCkBAIC0yNywxMSArMjcsMTUgQEAKICAgICB2b2lkIEdldEhvc3RuYW1lc1dpdGhDb29r
aWVzKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAg
ICAgdm9pZCBEZWxldGVDb29raWVzRm9ySG9zdG5hbWUoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgU3RyaW5nIGhvc3RuYW1lKQogICAgIHZvaWQgRGVsZXRlQWxsQ29va2llcyhXZWJDb3Jl
OjpTZXNzaW9uSUQgc2Vzc2lvbklEKQotICAgIHZvaWQgRGVsZXRlQWxsQ29va2llc01vZGlmaWVk
U2luY2UoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgc3RkOjpjaHJvbm86OnN5c3RlbV9j
bG9jazo6dGltZV9wb2ludCB0aW1lKQogCi0gICAgdm9pZCBTZXRDb29raWVzKFdlYkNvcmU6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+IGNvb2tpZXMsIFdlYkNv
cmU6OlVSTCB1cmwsIFdlYkNvcmU6OlVSTCBtYWluRG9jdW1lbnRVUkwpOworICAgIHZvaWQgU2V0
Q29va2llKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHN0cnVjdCBXZWJDb3JlOjpDb29r
aWUgY29va2llLCB1aW50NjRfdCBjYWxsYmFja0lEKQorICAgIHZvaWQgU2V0Q29va2llcyhXZWJD
b3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiBjb29raWVz
LCBXZWJDb3JlOjpVUkwgdXJsLCBXZWJDb3JlOjpVUkwgbWFpbkRvY3VtZW50VVJMLCB1aW50NjRf
dCBjYWxsYmFja0lEKQorICAgIHZvaWQgR2V0QWxsQ29va2llcyhXZWJDb3JlOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCB1aW50NjRfdCBjYWxsYmFja0lEKQorICAgIHZvaWQgR2V0Q29va2llcyhXZWJD
b3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpVUkwgdXJsLCB1aW50NjRfdCBjYWxs
YmFja0lEKQorICAgIHZvaWQgRGVsZXRlQ29va2llKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIHN0cnVjdCBXZWJDb3JlOjpDb29raWUgY29va2llLCB1aW50NjRfdCBjYWxsYmFja0lEKQor
ICAgIHZvaWQgRGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2UoV2ViQ29yZTo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCB0aW1lLCB1
aW50NjRfdCBjYWxsYmFja0lEKQogCi0gICAgdm9pZCBTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5
KHVpbnQzMl90IHBvbGljeSkKKyAgICB2b2lkIFNldEhUVFBDb29raWVBY2NlcHRQb2xpY3kodWlu
dDMyX3QgcG9saWN5LCB1aW50NjRfdCBjYWxsYmFja0lEKQogICAgIHZvaWQgR2V0SFRUUENvb2tp
ZUFjY2VwdFBvbGljeSh1aW50NjRfdCBjYWxsYmFja0lEKQogICAgIAogICAgIHZvaWQgU3RhcnRP
YnNlcnZpbmdDb29raWVDaGFuZ2VzKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQpCmRpZmYg
LS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggODBkYTgyMjhk
Y2EuLjRjYWRlNmIzMDA4IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTctMDMtMTMgIEJyYWR5IEVpZHNvbiAgPGJl
aWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIFdLV2ViVmlldyBwcm92aWRlcyBubyBhY2Nlc3Mg
dG8gY29va2llcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE0MDE5MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisKIDIwMTctMDMtMTEgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxl
LmNvbT4KIAogICAgICAgICBFbmFibGUgYXN5bmMgaW1hZ2UgZGVjb2RpbmcgZm9yIGxhcmdlIGlt
YWdlcwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEku
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA3NjAxZGJlMDY5Mi4uMmRmMzQ1NjJiNDkg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNTIsNiArMTUyLDcgQEAKIAkJNTFCQ0VFNEYx
Qzg0RjUzQjAwNDJDODJFIC8qIEluZGV4ZWREQk11bHRpUHJvY2Vzcy0yLmh0bWwgaW4gQ29weSBS
ZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFCQ0VFNEQxQzg0
RjUyQzAwNDJDODJFIC8qIEluZGV4ZWREQk11bHRpUHJvY2Vzcy0yLmh0bWwgKi87IH07CiAJCTUx
Q0QxQzZDMUIzOENFNDMwMDE0MkNBNSAvKiBNb2RhbEFsZXJ0cy5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQ0QxQzZBMUIzOENFMzYwMDE0MkNBNSAv
KiBNb2RhbEFsZXJ0cy5tbSAqLzsgfTsKIAkJNTFDRDFDNzIxQjM4RDQ4NDAwMTQyQ0E1IC8qIG1v
ZGFsLWFsZXJ0cy1pbi1uZXctYWJvdXQtYmxhbmstd2luZG93Lmh0bWwgaW4gQ29weSBSZXNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFDRDFDNzExQjM4RDQ4NDAw
MTQyQ0E1IC8qIG1vZGFsLWFsZXJ0cy1pbi1uZXctYWJvdXQtYmxhbmstd2luZG93Lmh0bWwgKi87
IH07CisJCTUxRDEyNDk4MUU3NjNCMDIwMDJCMjgyMCAvKiBXS0hUVFBDb29raWVTdG9yYWdlLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFEMTI0OTcx
RTc2M0FGODAwMkIyODIwIC8qIFdLSFRUUENvb2tpZVN0b3JhZ2UubW0gKi87IH07CiAJCTUxRTVD
NzAyMTkxOUMzQjIwMEQ4QjNFMSAvKiBzaW1wbGUyLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFFNzgwMzYxOTE5QUZGODAwMTgyOUEy
IC8qIHNpbXBsZTIuaHRtbCAqLzsgfTsKIAkJNTFFNUM3MDMxOTE5QzNCMjAwRDhCM0UxIC8qIHNp
bXBsZTMuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MUU3ODAzNzE5MTlBRkY4MDAxODI5QTIgLyogc2ltcGxlMy5odG1sICovOyB9Owog
CQk1MUU2QTg5NDFEMkYxQzBBMDBDMDA0QjYgLyogTG9jYWxTdG9yYWdlQ2xlYXIubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUU2QTg5MjFEMkYxQkVD
MDBDMDA0QjYgLyogTG9jYWxTdG9yYWdlQ2xlYXIubW0gKi87IH07CkBAIC0xMDQ4LDYgKzEwNDks
NyBAQAogCQk1MUNCNEFENzFCM0EwNzlDMDBDMUIxQzYgLyogTW9kYWxBbGVydHNTUEkuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTW9kYWxBbGVydHNTUEkuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUNEMUM2QTFCMzhDRTM2MDAxNDJDQTUgLyog
TW9kYWxBbGVydHMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBN
b2RhbEFsZXJ0cy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFDRDFDNzExQjM4
RDQ4NDAwMTQyQ0E1IC8qIG1vZGFsLWFsZXJ0cy1pbi1uZXctYWJvdXQtYmxhbmstd2luZG93Lmh0
bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
Lmh0bWw7IHBhdGggPSAibW9kYWwtYWxlcnRzLWluLW5ldy1hYm91dC1ibGFuay13aW5kb3cuaHRt
bCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxRDEyNDk3MUU3NjNBRjgwMDJCMjgy
MCAvKiBXS0hUVFBDb29raWVTdG9yYWdlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gV0tIVFRQQ29va2llU3RvcmFnZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNTFFNUM3MDQxOTE5RUE1RjAwRDhCM0UxIC8qIFNob3VsZEtlZXBDdXJyZW50QmFj
a0ZvcndhcmRMaXN0SXRlbUluTGlzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBTaG91bGRLZWVwQ3VycmVudEJhY2tGb3J3YXJkTGlzdEl0ZW1Jbkxpc3QuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUU2QTg5MjFEMkYxQkVDMDBDMDA0QjYgLyog
TG9jYWxTdG9yYWdlQ2xlYXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBMb2NhbFN0b3JhZ2VDbGVhci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NTFFNkE4OTUxRDJGMUM3NzAwQzAwNEI2IC8qIExvY2FsU3RvcmFnZUNsZWFyLmh0bWwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSBMb2NhbFN0b3JhZ2VDbGVhci5odG1sOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMTY0OSw2ICsxNjUxLDcgQEAKIAkJCQk1MTIwQzgzQzFFNjc1
MDc5MDAyNUIyNTAgLyogV2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhzLm1tICovLAogCQkJCTVD
OUU1Njg0MURGOTE0M0QwMEM5RUUzMyAvKiBXZWJzaXRlUG9saWNpZXMubW0gKi8sCiAJCQkJMUY4
MzU3MUExRDNGRkIwRTAwRTM5NjdCIC8qIFdLQmFja0ZvcndhcmRMaXN0Lm1tICovLAorCQkJCTUx
RDEyNDk3MUU3NjNBRjgwMDJCMjgyMCAvKiBXS0hUVFBDb29raWVTdG9yYWdlLm1tICovLAogCQkJ
CTM3NUUwRTE1MUQ2NjY3NDQwMEVGRUMyQyAvKiBXS05TTnVtYmVyLm1tICovLAogCQkJCTM3QjQ3
RTJFMUQ2NEU3Q0EwMDVGNEVGRiAvKiBXS09iamVjdC5tbSAqLywKIAkJCQkyRDAwMDY1RDFDMUY1
ODk0MDA4OEU2QTcgLyogV0tQREZWaWV3UmVzaXplQ3Jhc2gubW0gKi8sCkBAIC0yNzI5LDYgKzI3
MzIsNyBAQAogCQkJCTdDQ0U3RUY0MUE0MTFBRTYwMDQ0N0M0QyAvKiBGaW5kTWF0Y2hlcy5tbSBp
biBTb3VyY2VzICovLAogCQkJCTdDODNFMDQwMUQwQTYzRTMwMEZFQkNGMyAvKiBGaXJzdFJlc3Bv
bmRlclNjcm9sbGluZ1Bvc2l0aW9uLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0UwQkMxRDBB
NjUwNzAwRkVCQ0YzIC8qIEZpeGVkTGF5b3V0U2l6ZS5tbSBpbiBTb3VyY2VzICovLAorCQkJCTUx
RDEyNDk4MUU3NjNCMDIwMDJCMjgyMCAvKiBXS0hUVFBDb29raWVTdG9yYWdlLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJN0NDRTdFRjUxQTQxMUFFNjAwNDQ3QzRDIC8qIEZvcmNlUmVwYWludC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkzN0I0N0UzMDFENjRFN0NBMDA1RjRFRkYgLyogV0tPYmplY3Qu
bW0gaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0VDMDFBNDExQTdFMDA0NDdDNEMgLyogRnJhZ21l
bnROYXZpZ2F0aW9uLm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9XS0hUVFBDb29raWVTdG9yYWdlLm1tIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvV0tIVFRQQ29va2llU3RvcmFnZS5tbQpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYWNhOTZmM2Y4ZWMKLS0tIC9k
ZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9XS0hU
VFBDb29raWVTdG9yYWdlLm1tCkBAIC0wLDAgKzEsMTE3IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorCisjaW1wb3J0IDxXZWJLaXQvV0tGb3VuZGF0aW9uLmg+CisKKyNpZiBQ
TEFURk9STShNQUMpCisKKyNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCisjaW1wb3J0IDxX
ZWJLaXQvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L19XS0hU
VFBDb29raWVTdG9yYWdlLmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisKKyNpZiBXS19B
UElfRU5BQkxFRAorCitzdGF0aWMgYm9vbCBnb3RGbGFnOworCitURVNUKFdlYktpdDIsIFdLSFRU
UENvb2tpZVN0b3JhZ2UpCit7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmll
dyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKV0pOworCisg
ICAgYXV0byB3aW5kb3cgPSBhZG9wdE5TKFtbTlNXaW5kb3cgYWxsb2NdIGluaXRXaXRoQ29udGVu
dFJlY3Q6W3dlYlZpZXcgZnJhbWVdIHN0eWxlTWFzazpOU0JvcmRlcmxlc3NXaW5kb3dNYXNrIGJh
Y2tpbmc6TlNCYWNraW5nU3RvcmVCdWZmZXJlZCBkZWZlcjpZRVNdKTsKKyAgICBbW3dpbmRvdyBj
b250ZW50Vmlld10gYWRkU3Vidmlldzp3ZWJWaWV3LmdldCgpXTsKKworICAgIFt3ZWJWaWV3IGxv
YWRIVE1MU3RyaW5nOkAiT2ggaGVsbG8iIGJhc2VVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJo
dHRwOi8vd2Via2l0Lm9yZyJdXTsKKworICAgIFJldGFpblB0cjxfV0tIVFRQQ29va2llU3RvcmFn
ZT4gY29va2llU3RvcmFnZSA9IFtXS1dlYnNpdGVEYXRhU3RvcmUgZGVmYXVsdERhdGFTdG9yZV0u
X2h0dHBDb29raWVTdG9yYWdlOworCisgICAgTlNBcnJheTxOU0hUVFBDb29raWUgKj4gKmNvb2tp
ZXMgPSBuaWw7CisgICAgW2Nvb2tpZVN0b3JhZ2UgZmV0Y2hDb29raWVzOltjb29raWVzUHRyID0g
JmNvb2tpZXNdKE5TQXJyYXk8TlNIVFRQQ29va2llICo+ICpuc0Nvb2tpZXMpIHsKKyAgICAgICAg
KmNvb2tpZXNQdHIgPSBbbnNDb29raWVzIHJldGFpbl07CisgICAgICAgIGdvdEZsYWcgPSB0cnVl
OworICAgIH1dOworCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZnb3RGbGFnKTsKKwor
ICAgIEFTU0VSVF9FUShjb29raWVzLmNvdW50LCAwdSk7CisgICAgW2Nvb2tpZXMgcmVsZWFzZV07
CisKKyAgICBnb3RGbGFnID0gZmFsc2U7CisKKyAgICBSZXRhaW5QdHI8TlNIVFRQQ29va2llPiBj
b29raWUxID0gW05TSFRUUENvb2tpZSBjb29raWVXaXRoUHJvcGVydGllczpAeworICAgICAgICBO
U0hUVFBDb29raWVQYXRoOiBAIi8iLAorICAgICAgICBOU0hUVFBDb29raWVOYW1lOiBAIkNvb2tp
ZU5hbWUiLAorICAgICAgICBOU0hUVFBDb29raWVWYWx1ZTogQCJDb29raWVWYWx1ZSIsCisgICAg
ICAgIE5TSFRUUENvb2tpZURvbWFpbjogQCIud3d3LndlYmtpdC5vcmciLAorICAgICAgICBOU0hU
VFBDb29raWVTZWN1cmU6IEAiVFJVRSIsCisgICAgICAgIE5TSFRUUENvb2tpZURpc2NhcmQ6IEAi
VFJVRSIsCisgICAgICAgIE5TSFRUUENvb2tpZU1heGltdW1BZ2U6IEAiMTAwMDAiLAorICAgIH1d
OworCisgICAgUmV0YWluUHRyPE5TSFRUUENvb2tpZT4gY29va2llMiA9IFtOU0hUVFBDb29raWUg
Y29va2llV2l0aFByb3BlcnRpZXM6QHsKKyAgICAgICAgTlNIVFRQQ29va2llUGF0aDogQCIvcGF0
aCIsCisgICAgICAgIE5TSFRUUENvb2tpZU5hbWU6IEAiT3RoZXJDb29raWVOYW1lIiwKKyAgICAg
ICAgTlNIVFRQQ29va2llVmFsdWU6IEAiT3RoZXJDb29raWVWYWx1ZSIsCisgICAgICAgIE5TSFRU
UENvb2tpZURvbWFpbjogQCIud3d3LnczYy5vcmciLAorICAgICAgICBOU0hUVFBDb29raWVNYXhp
bXVtQWdlOiBAIjEwMDAwIiwKKyAgICB9XTsKKworICAgIFtjb29raWVTdG9yYWdlIHNldENvb2tp
ZTpjb29raWUxLmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOm5pbF07CisgICAgW2Nvb2tpZVN0b3Jh
Z2Ugc2V0Q29va2llOmNvb2tpZTIuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6bmlsXTsKKworICAg
IFtjb29raWVTdG9yYWdlIGZldGNoQ29va2llczpbY29va2llc1B0ciA9ICZjb29raWVzXShOU0Fy
cmF5PE5TSFRUUENvb2tpZSAqPiAqbnNDb29raWVzKSB7CisgICAgICAgICpjb29raWVzUHRyID0g
W25zQ29va2llcyByZXRhaW5dOworICAgICAgICBnb3RGbGFnID0gdHJ1ZTsKKyAgICB9XTsKKwor
ICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZ290RmxhZyk7CisKKyAgICBBU1NFUlRfRVEo
Y29va2llcy5jb3VudCwgMnUpOworCisgICAgZm9yIChOU0hUVFBDb29raWUgKmNvb2tpZSA6IGNv
b2tpZXMpIHsKKyAgICAgICAgaWYgKFtjb29raWUubmFtZSBpc0VxdWFsOkAiQ29va2llTmFtZSJd
KSB7CisgICAgICAgICAgICBBU1NFUlRfVFJVRShbY29va2llMS5nZXQoKS5wYXRoIGlzRXF1YWxU
b1N0cmluZzpjb29raWUucGF0aF0pOworICAgICAgICAgICAgQVNTRVJUX1RSVUUoW2Nvb2tpZTEu
Z2V0KCkudmFsdWUgaXNFcXVhbFRvU3RyaW5nOmNvb2tpZS52YWx1ZV0pOworICAgICAgICAgICAg
QVNTRVJUX1RSVUUoW2Nvb2tpZTEuZ2V0KCkuZG9tYWluIGlzRXF1YWxUb1N0cmluZzpjb29raWUu
ZG9tYWluXSk7CisgICAgICAgICAgICBBU1NFUlRfVFJVRShjb29raWUxLmdldCgpLnNlY3VyZSk7
CisgICAgICAgICAgICBBU1NFUlRfVFJVRShjb29raWUxLmdldCgpLnNlc3Npb25Pbmx5KTsKKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIEFTU0VSVF9UUlVFKFtjb29raWUyLmdldCgpLnBh
dGggaXNFcXVhbFRvU3RyaW5nOmNvb2tpZS5wYXRoXSk7CisgICAgICAgICAgICBBU1NFUlRfVFJV
RShbY29va2llMi5nZXQoKS52YWx1ZSBpc0VxdWFsVG9TdHJpbmc6Y29va2llLnZhbHVlXSk7Cisg
ICAgICAgICAgICBBU1NFUlRfVFJVRShbY29va2llMi5nZXQoKS5uYW1lIGlzRXF1YWxUb1N0cmlu
Zzpjb29raWUubmFtZV0pOworICAgICAgICAgICAgQVNTRVJUX1RSVUUoW2Nvb2tpZTIuZ2V0KCku
ZG9tYWluIGlzRXF1YWxUb1N0cmluZzpjb29raWUuZG9tYWluXSk7CisgICAgICAgICAgICBBU1NF
UlRfRkFMU0UoY29va2llMi5nZXQoKS5zZWN1cmUpOworICAgICAgICAgICAgQVNTRVJUX0ZBTFNF
KGNvb2tpZTIuZ2V0KCkuc2Vzc2lvbk9ubHkpOworICAgICAgICB9CisgICAgfQorCisgICAgW2Nv
b2tpZXMgcmVsZWFzZV07Cit9CisKKyNlbmRpZgorCisjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>304261</attachid>
            <date>2017-03-13 09:07:13 -0700</date>
            <delta_ts>2017-03-13 10:24:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-140191-20170313090718.patch</filename>
            <type>text/plain</type>
            <size>89093</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEzNzc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmU3MGVhY2ZjNWQwZmY4
NzI0MGFjN2QwMzg5MmQ1MTJkZjA5YzIyOC4uZTFmMmE3Yzc2OWE0YmNmNjA5NTljZDczNGZmZjg4
ZDRmMDRkYjZmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDE3LTAzLTEzICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBXS1dlYlZpZXcgcHJvdmlk
ZXMgbm8gYWNjZXNzIHRvIGNvb2tpZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNDAxOTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBDb3ZlcmVkIGJ5IEFQSSB0ZXN0cy4KKworICAgICAgICAqIHBsYXRm
b3JtL0Nvb2tpZS5oOgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFn
ZVNlc3Npb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtTdG9y
YWdlU2Vzc2lvbkNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpzZXRDb29raWUpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9u
OjpkZWxldGVDb29raWUpOgorICAgICAgICAoV2ViQ29yZTo6bnNDb29raWVzVG9Db29raWVWZWN0
b3IpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpnZXRBbGxDb29r
aWVzKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0Q29va2ll
cyk6CisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvTmV0d29ya1N0b3JhZ2VTZXNz
aW9uU291cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRl
bGV0ZUNvb2tpZSk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246Omdl
dEFsbENvb2tpZXMpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpn
ZXRDb29raWVzKToKKwogMjAxNy0wMy0xMiAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5j
b20+CiAKICAgICAgICAgQWRkIGZ1bGwgTlNIVFRQQ29va2llIGZpZGVsaXR5IHRvIFdlYkNvcmU6
OkNvb2tpZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZwppbmRleCAxMTA3YzgzYjQ0OTE3OTdjOWJkZTA3OTQyZjg2MzM0MzU2
ODAyOTliLi45NmI2ZjBlOGI4Nzg3MmU1MDZhYjkyNjViMGM3ZjVkODVmNzdjZGNiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTE5IEBACisyMDE3LTAzLTEzICBCcmFkeSBFaWRzb24gIDxiZWlkc29u
QGFwcGxlLmNvbT4KKworICAgICAgICBXS1dlYlZpZXcgcHJvdmlkZXMgbm8gYWNjZXNzIHRvIGNv
b2tpZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NDAxOTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
aGlzIGFkZHMgYSBuZXcgX1dLSFRUUENvb2tpZU1hbmFnZXIgU1BJLgorICAgICAgICBJdCBmb2xs
b3dzIHRoZSBOU0hUVFBDb29raWVTdG9yYWdlIEFQSSBidXQgYXN5bmNocm9ub3VzICh3aXRoIGNv
bXBsZXRpb24gaGFuZGxlcnMpLgorICAgICAgICBBZnRlciB0aGUgaW1wbGVtZW50YXRpb24gaXMg
bGFuZGVkIGFuZCB3ZSByZXZpZXcgaW50ZXJuYWxseSB3ZSdsbCBjb25zaWRlciBwcm9tb3Rpbmcg
dG8gQVBJLgorICAgICAgICAKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBX
ZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKKyAgICAgICAgKiBTaGFyZWQvQVBJ
L0FQSU9iamVjdC5oOgorICAgICAgICAqIFNoYXJlZC9Db2NvYS9BUElPYmplY3QubW06CisgICAg
ICAgIChBUEk6Ok9iamVjdDo6bmV3T2JqZWN0KToKKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
QVBJSFRUUENvb2tpZVN0b3JhZ2UuY3BwOiBBZGRlZC4KKyAgICAgICAgKEFQSTo6SFRUUENvb2tp
ZVN0b3JhZ2U6OkhUVFBDb29raWVTdG9yYWdlKToKKyAgICAgICAgKEFQSTo6SFRUUENvb2tpZVN0
b3JhZ2U6On5IVFRQQ29va2llU3RvcmFnZSk6CisgICAgICAgIChBUEk6OkhUVFBDb29raWVTdG9y
YWdlOjpjb29raWVzKToKKyAgICAgICAgKEFQSTo6SFRUUENvb2tpZVN0b3JhZ2U6OnNldENvb2tp
ZSk6CisgICAgICAgIChBUEk6OkhUVFBDb29raWVTdG9yYWdlOjpzZXRDb29raWVzKToKKyAgICAg
ICAgKEFQSTo6SFRUUENvb2tpZVN0b3JhZ2U6OmRlbGV0ZUNvb2tpZSk6CisgICAgICAgIChBUEk6
OkhUVFBDb29raWVTdG9yYWdlOjpyZW1vdmVDb29raWVzU2luY2VEYXRlKToKKyAgICAgICAgKEFQ
STo6SFRUUENvb2tpZVN0b3JhZ2U6OnNldEhUVFBDb29raWVBY2NlcHRQb2xpY3kpOgorICAgICAg
ICAoQVBJOjpIVFRQQ29va2llU3RvcmFnZTo6Z2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElIVFRQQ29va2llU3RvcmFnZS5oOiBBZGRlZC4KKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5jcHA6CisgICAgICAg
IChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmUpOgorICAgICAgICAoQVBJ
OjpXZWJzaXRlRGF0YVN0b3JlOjpodHRwQ29va2llU3RvcmFnZSk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmg6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0MvV0tDb29raWVNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdLQ29va2llTWFuYWdlckRlbGV0ZUFs
bENvb2tpZXNNb2RpZmllZEFmdGVyRGF0ZSk6CisgICAgICAgIChXS0Nvb2tpZU1hbmFnZXJTZXRI
VFRQQ29va2llQWNjZXB0UG9saWN5KToKKyAgICAgICAgKFdLQ29va2llTWFuYWdlckdldEhUVFBD
b29raWVBY2NlcHRQb2xpY3kpOgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0
ZURhdGFTdG9yZVJlZi5jcHA6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVHZXREZWZhdWx0
RGF0YVN0b3JlKToKKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9v
bC5tbToKKyAgICAgICAgKC1bV0tQcm9jZXNzUG9vbCBfc2V0Q29va2llQWNjZXB0UG9saWN5Ol0p
OgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW06
CisgICAgICAgICgrW1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0RGF0YVN0b3JlXSk6CisgICAg
ICAgICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBfaHR0cENvb2tpZVN0b3JhZ2VdKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaDoKKyAgICAg
ICAgCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tIVFRQQ29va2llU3RvcmFnZS5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSFRUUENvb2tpZVN0b3JhZ2UubW06
IEFkZGVkLgorICAgICAgICAoY29yZUNvb2tpZXNUb05TQ29va2llcyk6CisgICAgICAgICgtW19X
S0hUVFBDb29raWVTdG9yYWdlIGRlYWxsb2NdKToKKyAgICAgICAgKC1bX1dLSFRUUENvb2tpZVN0
b3JhZ2UgZmV0Y2hDb29raWVzOl0pOgorICAgICAgICAoLVtfV0tIVFRQQ29va2llU3RvcmFnZSBm
ZXRjaENvb2tpZXNGb3JVUkw6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW19XS0hU
VFBDb29raWVTdG9yYWdlIHNldENvb2tpZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAg
KC1bX1dLSFRUUENvb2tpZVN0b3JhZ2UgZGVsZXRlQ29va2llOmNvbXBsZXRpb25IYW5kbGVyOl0p
OgorICAgICAgICAoLVtfV0tIVFRQQ29va2llU3RvcmFnZSBzZXRDb29raWVzOmZvclVSTDptYWlu
RG9jdW1lbnRVUkw6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW19XS0hUVFBDb29r
aWVTdG9yYWdlIHJlbW92ZUNvb2tpZXNTaW5jZURhdGU6Y29tcGxldGlvbkhhbmRsZXI6XSk6Cisg
ICAgICAgICgtW19XS0hUVFBDb29raWVTdG9yYWdlIHNldENvb2tpZUFjY2VwdFBvbGljeTpjb21w
bGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKGtpdENvb2tpZVBvbGljeVRvTlNDb29raWVQb2xp
Y3kpOgorICAgICAgICAoLVtfV0tIVFRQQ29va2llU3RvcmFnZSBmZXRjaENvb2tpZUFjY2VwdFBv
bGljeTpdKToKKyAgICAgICAgKC1bX1dLSFRUUENvb2tpZVN0b3JhZ2UgX2FwaU9iamVjdF0pOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSFRUUENvb2tpZVN0b3JhZ2VJbnRlcm5h
bC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
c2l0ZURhdGFTdG9yZVByaXZhdGUuaC4KKyAgICAgICAgKFdlYktpdDo6d3JhcHBlcik6CisKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjphZGRTaW5nbGVDb29raWUpOgor
CisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6Z2V0SG9zdG5hbWVzV2l0aENvb2tpZXMp
OgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRlbGV0ZUNvb2tpZXNG
b3JIb3N0bmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGVs
ZXRlQWxsQ29va2llcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6
ZGVsZXRlQ29va2llKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlclByb3h5Ojpk
ZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tp
ZU1hbmFnZXJQcm94eTo6c2V0Q29va2llKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFu
YWdlclByb3h5OjpzZXRDb29raWVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdl
clByb3h5OjpnZXRBbGxDb29raWVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdl
clByb3h5OjpnZXRDb29raWVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlclBy
b3h5OjpkaWRTZXRDb29raWVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlclBy
b3h5OjpkaWRHZXRDb29raWVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlclBy
b3h5OjpkaWREZWxldGVDb29raWVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdl
clByb3h5OjpzdGFydE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJDb29raWVNYW5hZ2VyUHJveHk6OnN0b3BPYnNlcnZpbmdDb29raWVDaGFuZ2VzKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlclByb3h5OjpzZXRDb29raWVPYnNlcnZlckNhbGxi
YWNrKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlclByb3h5Ojpjb29raWVzRGlk
Q2hhbmdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlclByb3h5OjpzZXRIVFRQ
Q29va2llQWNjZXB0UG9saWN5KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlclBy
b3h5OjpnZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29v
a2llTWFuYWdlclByb3h5OjpkaWRHZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KToKKyAgICAgICAg
KFdlYktpdDo6V2ViQ29va2llTWFuYWdlclByb3h5OjpkaWRTZXRIVFRQQ29va2llQWNjZXB0UG9s
aWN5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5Lmg6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbjoKKworICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJGcmFtZVByb3h5Lmg6CisgICAgICAgIAorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmg6CisgICAgICAgIAorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJz
aXRlRGF0YVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6cHJv
Y2Vzc1Bvb2xGb3JDb29raWVTdG9yYWdlT3BlcmF0aW9ucyk6CisgICAgICAgIChXZWJLaXQ6Oldl
YnNpdGVEYXRhU3RvcmU6OnByb2Nlc3NQb29scyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNp
dGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaDoKKyAgICAgICAgCisgICAgICAgICogV2ViUHJvY2Vz
cy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29r
aWVNYW5hZ2VyOjpkZWxldGVDb29raWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5h
Z2VyOjpkZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YkNvb2tpZU1hbmFnZXI6OmdldEFsbENvb2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29r
aWVNYW5hZ2VyOjpnZXRDb29raWVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdl
cjo6c2V0Q29va2llKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlcjo6c2V0Q29v
a2llcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXI6OnNldEhUVFBDb29raWVB
Y2NlcHRQb2xpY3kpOgorICAgICAgICAqIFdlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5h
Z2VyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIubWVz
c2FnZXMuaW46CisKIDIwMTctMDMtMTIgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29t
PgogCiAgICAgICAgIFRyYW5zaXRpb24gR2VuZXJpY0NhbGxiYWNrIGZyb20gc3RkOjpmdW5jdGlv
biB0byBXVEY6OkZ1bmN0aW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Q29va2llLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db29raWUuaAppbmRleCBlNDdlN2Ji
ZmY1YmIzYWJjNjNhYjNmOTI4ZmMyNzQxNTVlMTA0ZmE3Li41ZGRiOTM1NGNlOGQxOWU3YTc1NGI5
N2NlM2EwMzgxNTNmMzY0Njk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9D
b29raWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db29raWUuaApAQCAtNTgsNyAr
NTgsNyBAQCBzdHJ1Y3QgQ29va2llIHsKIAogI2lmZGVmIF9fT0JKQ19fCiAgICAgV0VCQ09SRV9F
WFBPUlQgQ29va2llKE5TSFRUUENvb2tpZSAqKTsKLSAgICBvcGVyYXRvciBOU0hUVFBDb29raWUg
KigpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIG9wZXJhdG9yIE5TSFRUUENvb2tpZSAqKCkg
Y29uc3Q7CiAjZW5kaWYKIAogICAgIFN0cmluZyBuYW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgKaW5kZXggZjE0
ODljNmI0MmExZDQ1YWY5Y2FhNjJjYTI2ZDE3MDViNDZiMzc0OC4uMjEyYmUyNjRlYTVjYzc2NThh
OGRmMmVmM2UzNTk2ODE4NTE0OWVjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oCkBAIC0xMDAsNyArMTAwLDEx
IEBAIHB1YmxpYzoKICAgICBOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCgpIGNvbnN0OwogI2Vu
ZGlmCiAKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENvb2tpZShjb25zdCBDb29raWUmKTsK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENvb2tpZXMoY29uc3QgVmVjdG9yPENvb2tpZT4m
LCBjb25zdCBVUkwmLCBjb25zdCBVUkwmIG1haW5Eb2N1bWVudFVSTCk7CisgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBkZWxldGVDb29raWUoY29uc3QgQ29va2llJik7CisgICAgV0VCQ09SRV9FWFBP
UlQgVmVjdG9yPENvb2tpZT4gZ2V0QWxsQ29va2llcygpOworICAgIFdFQkNPUkVfRVhQT1JUIFZl
Y3RvcjxDb29raWU+IGdldENvb2tpZXMoY29uc3QgVVJMJik7CiAKIHByaXZhdGU6CiAgICAgc3Rh
dGljIEhhc2hNYXA8U2Vzc2lvbklELCBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya1N0b3JhZ2VTZXNz
aW9uPj4mIGdsb2JhbFNlc3Npb25NYXAoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2EubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNv
Y29hLm1tCmluZGV4IDQ0YWVhYjcwZTk5YjVmYTBhODRlY2ZkMzU3ZTM0NTgzZGVmYzAxZTAuLjRj
OTU2N2U5YzY3YTBhNDc2NzZhOGZjN2Y4ZWQ0YWY0ZGUxNTUyOWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29j
b2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3Jr
U3RvcmFnZVNlc3Npb25Db2NvYS5tbQpAQCAtMzIsNiArMzIsMTMgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCit2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0Q29va2llKGNvbnN0IENv
b2tpZSYgY29va2llKQoreworICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKKyAgICBb
bnNDb29raWVTdG9yYWdlKCkgc2V0Q29va2llOihOU0hUVFBDb29raWUgKiljb29raWVdOworICAg
IEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7Cit9CisKIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpzZXRDb29raWVzKGNvbnN0IFZlY3RvcjxDb29raWU+JiBjb29raWVzLCBjb25zdCBVUkwm
IHVybCwgY29uc3QgVVJMJiBtYWluRG9jdW1lbnRVUkwpCiB7CiAgICAgUmV0YWluUHRyPE5TTXV0
YWJsZUFycmF5PiBuc0Nvb2tpZXMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGlu
aXRXaXRoQ2FwYWNpdHk6Y29va2llcy5zaXplKCldKTsKQEAgLTQzLDYgKzUwLDMxIEBAIHZvaWQg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRDb29raWVzKGNvbnN0IFZlY3RvcjxDb29raWU+JiBj
b29raWVzLCBjb25zdCBVUkwmCiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIH0KIAor
dm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlbGV0ZUNvb2tpZShjb25zdCBDb29raWUmIGNv
b2tpZSkKK3sKKyAgICBbbnNDb29raWVTdG9yYWdlKCkgZGVsZXRlQ29va2llOihOU0hUVFBDb29r
aWUgKiljb29raWVdOworfQorCitzdGF0aWMgVmVjdG9yPENvb2tpZT4gbnNDb29raWVzVG9Db29r
aWVWZWN0b3IoTlNBcnJheTxOU0hUVFBDb29raWUgKj4gKm5zQ29va2llcykKK3sKKyAgICBWZWN0
b3I8Q29va2llPiBjb29raWVzOworICAgIGNvb2tpZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShu
c0Nvb2tpZXMuY291bnQpOworICAgIGZvciAoTlNIVFRQQ29va2llICpuc0Nvb2tpZSBpbiBuc0Nv
b2tpZXMpCisgICAgICAgIGNvb2tpZXMudW5jaGVja2VkQXBwZW5kKG5zQ29va2llKTsKKworICAg
IHJldHVybiBjb29raWVzOworfQorCitWZWN0b3I8Q29va2llPiBOZXR3b3JrU3RvcmFnZVNlc3Np
b246OmdldEFsbENvb2tpZXMoKQoreworICAgIHJldHVybiBuc0Nvb2tpZXNUb0Nvb2tpZVZlY3Rv
cihuc0Nvb2tpZVN0b3JhZ2UoKS5jb29raWVzKTsKK30KKworVmVjdG9yPENvb2tpZT4gTmV0d29y
a1N0b3JhZ2VTZXNzaW9uOjpnZXRDb29raWVzKGNvbnN0IFVSTCYgdXJsKQoreworICAgIHJldHVy
biBuc0Nvb2tpZXNUb0Nvb2tpZVZlY3RvcihbbnNDb29raWVTdG9yYWdlKCkgY29va2llc0ZvclVS
TDooTlNVUkwgKil1cmxdKTsKK30KKwogTlNIVFRQQ29va2llU3RvcmFnZSAqTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpuc0Nvb2tpZVN0b3JhZ2UoKSBjb25zdAogewogICAgIGF1dG8gY2ZDb29raWVT
dG9yYWdlID0gY29va2llU3RvcmFnZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lvblNvdXAuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lvblNvdXAu
Y3BwCmluZGV4IDI0OWJkODJiZDc0ZThjNjJhOWMzNTcwMzdmOTgzODUwNGZhNTdhY2QuLjM2ZWY5
ZmVjYjNhN2M3MDYyZDdiNThmMTNiM2NjN2QwMjgzNTJiOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uU291cC5jcHAKQEAgLTMwNCw2ICszMDQsMjAgQEAgdm9pZCBOZXR3b3JrU3RvcmFn
ZVNlc3Npb246OnNldENvb2tpZXMoY29uc3QgVmVjdG9yPENvb2tpZT4mIGNvb2tpZXMsIGNvbnN0
IFVSTCYKICAgICAgICAgc291cF9jb29raWVfamFyX2FkZF9jb29raWUoY29va2llU3RvcmFnZSgp
LCB0b1NvdXBDb29raWUoY29va2llKSk7CiB9CiAKK3ZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
OjpkZWxldGVDb29raWUoY29uc3QgQ29va2llJikKK3sKKwkvLyBGSVhNRTogSW1wbGVtZW50IGZv
ciBXSzIgdG8gdXNlLgorfQorCitWZWN0b3I8Q29va2llPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246
OmdldEFsbENvb2tpZXMoKQoreworCS8vIEZJWE1FOiBJbXBsZW1lbnQgZm9yIFdLMiB0byB1c2Uu
Cit9CisKK1ZlY3RvcjxDb29raWU+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0Q29va2llcyhj
b25zdCBVUkwmKQoreworCS8vIEZJWE1FOiBJbXBsZW1lbnQgZm9yIFdLMiB0byB1c2UuCit9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ01h
a2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dAppbmRleCA4MWZmOGRh
ODExMjQzZTU0MWEzYzY5ODRjOWZhNzhiMDk3YzlkYmU2Li5hOGZkY2QxMWIzYTYyMzY2NjM3MTdk
YTM0OTYxZWUxNjA0NjhlNjk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3Rz
LnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dApAQCAtMzM2LDYgKzMzNiw3
IEBAIHNldChXZWJLaXQyX1NPVVJDRVMKICAgICBVSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRFeHRl
bnNpb25TdG9yZS5jcHAKICAgICBVSVByb2Nlc3MvQVBJL0FQSUV4cGVyaW1lbnRhbEZlYXR1cmUu
Y3BwCiAgICAgVUlQcm9jZXNzL0FQSS9BUElGcmFtZUluZm8uY3BwCisgICAgVUlQcm9jZXNzL0FQ
SS9BUElIVFRQQ29va2llU3RvcmFnZS5jcHAKICAgICBVSVByb2Nlc3MvQVBJL0FQSUhpdFRlc3RS
ZXN1bHQuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uLmNwcAogICAgIFVJUHJv
Y2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkRhdGEuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHAKaW5kZXggZDhk
Y2RlMzMwOGQ0YmY3NTM1NzJhNDc3YjE3Y2ExZjAxYjgyYTNjMC4uMjYwNzBmMDExNGUxNzI2NzIx
MTBkYjAyNzFkYTQ5N2ExZDJhMTkzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3Mvc291cC9OZXR3b3JrUHJvY2Vzc1NvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcApAQCAtMTI0LDcgKzEy
NCw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9j
ZXNzKGNvbnN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRpCiAgICAgICAgIHN1cHBsZW1lbnQ8V2ViQ29v
a2llTWFuYWdlcj4oKS0+c2V0Q29va2llUGVyc2lzdGVudFN0b3JhZ2UocGFyYW1ldGVycy5jb29r
aWVQZXJzaXN0ZW50U3RvcmFnZVBhdGgsCiAgICAgICAgICAgICBwYXJhbWV0ZXJzLmNvb2tpZVBl
cnNpc3RlbnRTdG9yYWdlVHlwZSk7CiAgICAgfQotICAgIHN1cHBsZW1lbnQ8V2ViQ29va2llTWFu
YWdlcj4oKS0+c2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShwYXJhbWV0ZXJzLmNvb2tpZUFjY2Vw
dFBvbGljeSk7CisgICAgc3VwcGxlbWVudDxXZWJDb29raWVNYW5hZ2VyPigpLT5zZXRIVFRQQ29v
a2llQWNjZXB0UG9saWN5KHBhcmFtZXRlcnMuY29va2llQWNjZXB0UG9saWN5LCAwKTsKIAogICAg
IGlmICghcGFyYW1ldGVycy5sYW5ndWFnZXMuaXNFbXB0eSgpKQogICAgICAgICB1c2VyUHJlZmVy
cmVkTGFuZ3VhZ2VzQ2hhbmdlZChwYXJhbWV0ZXJzLmxhbmd1YWdlcyk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0FQSU9iamVjdC5oIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL0FQSS9BUElPYmplY3QuaAppbmRleCBhZTBmYzk5ODViZDI3NjQ3NjgyNzg5ZmY0YzRmNDY2
YTFlYzM0NjBhLi40NmYyNzkxZGRmYzQ1MjQyYmEzNTE0YjA1Zjk2MzMxOGUyZmU1MWI3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0FQSU9iamVjdC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9BUEkvQVBJT2JqZWN0LmgKQEAgLTExNiw2ICsxMTYsNyBAQCBwdWJs
aWM6CiAgICAgICAgIEZ1bGxTY3JlZW5NYW5hZ2VyLAogICAgICAgICBHZW9sb2NhdGlvbk1hbmFn
ZXIsCiAgICAgICAgIEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QsCisgICAgICAgIEhUVFBD
b29raWVTdG9yYWdlLAogICAgICAgICBIaXRUZXN0UmVzdWx0LAogICAgICAgICBHZW9sb2NhdGlv
blBvc2l0aW9uLAogICAgICAgICBHcmFtbWFyRGV0YWlsLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvU2hhcmVkL0NvY29hL0FQSU9iamVjdC5tbSBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9D
b2NvYS9BUElPYmplY3QubW0KaW5kZXggMTE2MzI0NTQyMGNkMjc3MzgwNGIyMjUzNGNiOTljMGZh
ZDQxNzIyMi4uYzcyMTc2MjkzY2VjZmFlYmI1OTg1NjYzNjUwMWIyNDRmMzZkNmVmZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0NvY29hL0FQSU9iamVjdC5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvQ29jb2EvQVBJT2JqZWN0Lm1tCkBAIC03MSw2ICs3MSw3IEBACiAj
aW1wb3J0ICJfV0tEb3dubG9hZEludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tFeHBlcmltZW50YWxG
ZWF0dXJlSW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS0ZyYW1lSGFuZGxlSW50ZXJuYWwuaCIKKyNp
bXBvcnQgIl9XS0hUVFBDb29raWVTdG9yYWdlSW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS0hpdFRl
c3RSZXN1bHRJbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
SW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS1VzZXJDb250ZW50V29ybGRJbnRlcm5hbC5oIgpAQCAt
MTc4LDYgKzE3OSwxMCBAQCB2b2lkKiBPYmplY3Q6Om5ld09iamVjdChzaXplX3Qgc2l6ZSwgVHlw
ZSB0eXBlKQogICAgICAgICB3cmFwcGVyID0gW1dLRnJhbWVJbmZvIGFsbG9jXTsKICAgICAgICAg
YnJlYWs7CiAKKyAgICBjYXNlIFR5cGU6OkhUVFBDb29raWVTdG9yYWdlOgorICAgICAgICB3cmFw
cGVyID0gW19XS0hUVFBDb29raWVTdG9yYWdlIGFsbG9jXTsKKyAgICAgICAgYnJlYWs7CisKICNp
ZiBQTEFURk9STShNQUMpCiAgICAgY2FzZSBUeXBlOjpIaXRUZXN0UmVzdWx0OgogICAgICAgICB3
cmFwcGVyID0gW19XS0hpdFRlc3RSZXN1bHQgYWxsb2NdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9BUElIVFRQQ29va2llU3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0FQSUhUVFBDb29raWVTdG9yYWdlLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4z
MzhiODUyNGI5ZmM4OWYxNGFjODQ2MjM1YzE3Y2I1MTFiNDhiOGUzCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElIVFRQQ29va2llU3RvcmFnZS5jcHAK
QEAgLTAsMCArMSwxMzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiQVBJSFRUUENvb2tpZVN0b3JhZ2UuaCIKKworI2luY2x1ZGUgIkFQSVdlYnNpdGVEYXRh
U3RvcmUuaCIKKyNpbmNsdWRlICJXZWJDb29raWVNYW5hZ2VyUHJveHkuaCIKKyNpbmNsdWRlICJX
ZWJQcm9jZXNzUG9vbC5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ29va2llLmg+CisKK3VzaW5nIG5h
bWVzcGFjZSBXZWJLaXQ7CisKK25hbWVzcGFjZSBBUEkgeworCitIVFRQQ29va2llU3RvcmFnZTo6
SFRUUENvb2tpZVN0b3JhZ2UoV2Vic2l0ZURhdGFTdG9yZSYgd2Vic2l0ZURhdGFTdG9yZSkKKyAg
ICA6IG1fb3duaW5nRGF0YVN0b3JlKHdlYnNpdGVEYXRhU3RvcmUpCit7Cit9CisKK0hUVFBDb29r
aWVTdG9yYWdlOjp+SFRUUENvb2tpZVN0b3JhZ2UoKQoreworfQorCit2b2lkIEhUVFBDb29raWVT
dG9yYWdlOjpjb29raWVzKEZ1bmN0aW9uPHZvaWQgKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29r
aWU+Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgYXV0byYgZGF0YVN0b3JlID0gbV9v
d25pbmdEYXRhU3RvcmUud2Vic2l0ZURhdGFTdG9yZSgpOworICAgIGF1dG8gcG9vbCA9IGRhdGFT
dG9yZS5wcm9jZXNzUG9vbEZvckNvb2tpZVN0b3JhZ2VPcGVyYXRpb25zKCk7CisgICAgYXV0byog
Y29va2llTWFuYWdlciA9IHBvb2wtPnN1cHBsZW1lbnQ8V2ViS2l0OjpXZWJDb29raWVNYW5hZ2Vy
UHJveHk+KCk7CisKKyAgICBjb29raWVNYW5hZ2VyLT5nZXRBbGxDb29raWVzKGRhdGFTdG9yZS5z
ZXNzaW9uSUQoKSwgW3Bvb2wgPSBXVEZNb3ZlKHBvb2wpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYg
Y29va2llcywgQ2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcikgeworICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihjb29raWVzKTsKKyAgICB9KTsKK30KKwordm9pZCBIVFRQQ29va2llU3RvcmFnZTo6
Y29va2llcyhjb25zdCBXZWJDb3JlOjpVUkwmIHVybCwgRnVuY3Rpb248dm9pZCAoY29uc3QgVmVj
dG9yPFdlYkNvcmU6OkNvb2tpZT4mKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBhdXRv
JiBkYXRhU3RvcmUgPSBtX293bmluZ0RhdGFTdG9yZS53ZWJzaXRlRGF0YVN0b3JlKCk7CisgICAg
YXV0byBwb29sID0gZGF0YVN0b3JlLnByb2Nlc3NQb29sRm9yQ29va2llU3RvcmFnZU9wZXJhdGlv
bnMoKTsKKyAgICBhdXRvKiBjb29raWVNYW5hZ2VyID0gcG9vbC0+c3VwcGxlbWVudDxXZWJLaXQ6
OldlYkNvb2tpZU1hbmFnZXJQcm94eT4oKTsKKworICAgIGNvb2tpZU1hbmFnZXItPmdldENvb2tp
ZXMoZGF0YVN0b3JlLnNlc3Npb25JRCgpLCB1cmwsIFtwb29sID0gV1RGTW92ZShwb29sKSwgY29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oY29uc3QgVmVjdG9y
PFdlYkNvcmU6OkNvb2tpZT4mIGNvb2tpZXMsIENhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsK
KyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoY29va2llcyk7CisgICAgfSk7Cit9CisKK3ZvaWQg
SFRUUENvb2tpZVN0b3JhZ2U6OnNldENvb2tpZShjb25zdCBXZWJDb3JlOjpDb29raWUmIGNvb2tp
ZSwgRnVuY3Rpb248dm9pZCAoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBhdXRvJiBk
YXRhU3RvcmUgPSBtX293bmluZ0RhdGFTdG9yZS53ZWJzaXRlRGF0YVN0b3JlKCk7CisgICAgYXV0
byBwb29sID0gZGF0YVN0b3JlLnByb2Nlc3NQb29sRm9yQ29va2llU3RvcmFnZU9wZXJhdGlvbnMo
KTsKKyAgICBhdXRvKiBjb29raWVNYW5hZ2VyID0gcG9vbC0+c3VwcGxlbWVudDxXZWJLaXQ6Oldl
YkNvb2tpZU1hbmFnZXJQcm94eT4oKTsKKworICAgIGNvb2tpZU1hbmFnZXItPnNldENvb2tpZShk
YXRhU3RvcmUuc2Vzc2lvbklEKCksIGNvb2tpZSwgW3Bvb2wgPSBXVEZNb3ZlKHBvb2wpLCBjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShDYWxsYmFja0Jhc2U6
OkVycm9yIGVycm9yKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgfSk7Cit9
CisKK3ZvaWQgSFRUUENvb2tpZVN0b3JhZ2U6OnNldENvb2tpZXMoY29uc3QgVmVjdG9yPFdlYkNv
cmU6OkNvb2tpZT4mIGNvb2tpZXMsIGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsLCBjb25zdCBXZWJD
b3JlOjpVUkwmIG1haW5Eb2N1bWVudFVSTCwgRnVuY3Rpb248dm9pZCAoKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKK3sKKyAgICBhdXRvJiBkYXRhU3RvcmUgPSBtX293bmluZ0RhdGFTdG9yZS53ZWJz
aXRlRGF0YVN0b3JlKCk7CisgICAgYXV0byBwb29sID0gZGF0YVN0b3JlLnByb2Nlc3NQb29sRm9y
Q29va2llU3RvcmFnZU9wZXJhdGlvbnMoKTsKKyAgICBhdXRvKiBjb29raWVNYW5hZ2VyID0gcG9v
bC0+c3VwcGxlbWVudDxXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eT4oKTsKKworICAgIGNv
b2tpZU1hbmFnZXItPnNldENvb2tpZXMoZGF0YVN0b3JlLnNlc3Npb25JRCgpLCBjb29raWVzLCB1
cmwsIG1haW5Eb2N1bWVudFVSTCwgW3Bvb2wgPSBXVEZNb3ZlKHBvb2wpLCBjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShDYWxsYmFja0Jhc2U6OkVycm9yIGVy
cm9yKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgfSk7Cit9CisKK3ZvaWQg
SFRUUENvb2tpZVN0b3JhZ2U6OmRlbGV0ZUNvb2tpZShjb25zdCBXZWJDb3JlOjpDb29raWUmIGNv
b2tpZSwgRnVuY3Rpb248dm9pZCAoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBhdXRv
JiBkYXRhU3RvcmUgPSBtX293bmluZ0RhdGFTdG9yZS53ZWJzaXRlRGF0YVN0b3JlKCk7CisgICAg
YXV0byBwb29sID0gZGF0YVN0b3JlLnByb2Nlc3NQb29sRm9yQ29va2llU3RvcmFnZU9wZXJhdGlv
bnMoKTsKKyAgICBhdXRvKiBjb29raWVNYW5hZ2VyID0gcG9vbC0+c3VwcGxlbWVudDxXZWJLaXQ6
OldlYkNvb2tpZU1hbmFnZXJQcm94eT4oKTsKKworICAgIGNvb2tpZU1hbmFnZXItPmRlbGV0ZUNv
b2tpZShkYXRhU3RvcmUuc2Vzc2lvbklEKCksIGNvb2tpZSwgW3Bvb2wgPSBXVEZNb3ZlKHBvb2wp
LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShDYWxsYmFj
a0Jhc2U6OkVycm9yIGVycm9yKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAg
fSk7Cit9CisKK3ZvaWQgSFRUUENvb2tpZVN0b3JhZ2U6OnJlbW92ZUNvb2tpZXNTaW5jZURhdGUo
c3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCBkYXRlLCBGdW5jdGlvbjx2b2lk
ICgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGF1dG8mIGRhdGFTdG9yZSA9IG1fb3du
aW5nRGF0YVN0b3JlLndlYnNpdGVEYXRhU3RvcmUoKTsKKyAgICBhdXRvIHBvb2wgPSBkYXRhU3Rv
cmUucHJvY2Vzc1Bvb2xGb3JDb29raWVTdG9yYWdlT3BlcmF0aW9ucygpOworICAgIGF1dG8qIGNv
b2tpZU1hbmFnZXIgPSBwb29sLT5zdXBwbGVtZW50PFdlYktpdDo6V2ViQ29va2llTWFuYWdlclBy
b3h5PigpOworCisgICAgY29va2llTWFuYWdlci0+ZGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2lu
Y2UoZGF0YVN0b3JlLnNlc3Npb25JRCgpLCBkYXRlLCBbcG9vbCA9IFdURk1vdmUocG9vbCksIGNv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKENhbGxiYWNrQmFz
ZTo6RXJyb3IgZXJyb3IpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICB9KTsK
K30KKwordm9pZCBIVFRQQ29va2llU3RvcmFnZTo6c2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShI
VFRQQ29va2llQWNjZXB0UG9saWN5IHBvbGljeSwgRnVuY3Rpb248dm9pZCAoKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3sKKyAgICBhdXRvJiBkYXRhU3RvcmUgPSBtX293bmluZ0RhdGFTdG9yZS53
ZWJzaXRlRGF0YVN0b3JlKCk7CisgICAgYXV0byBwb29sID0gZGF0YVN0b3JlLnByb2Nlc3NQb29s
Rm9yQ29va2llU3RvcmFnZU9wZXJhdGlvbnMoKTsKKyAgICBhdXRvKiBjb29raWVNYW5hZ2VyID0g
cG9vbC0+c3VwcGxlbWVudDxXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eT4oKTsKKworICAg
IGNvb2tpZU1hbmFnZXItPnNldEhUVFBDb29raWVBY2NlcHRQb2xpY3koZGF0YVN0b3JlLnNlc3Np
b25JRCgpLCBwb2xpY3ksIFtwb29sID0gV1RGTW92ZShwb29sKSwgY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oQ2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcikg
eworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAgIH0pOworfQorCit2b2lkIEhUVFBD
b29raWVTdG9yYWdlOjpnZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KEZ1bmN0aW9uPHZvaWQgKEhU
VFBDb29raWVBY2NlcHRQb2xpY3kpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGF1dG8m
IGRhdGFTdG9yZSA9IG1fb3duaW5nRGF0YVN0b3JlLndlYnNpdGVEYXRhU3RvcmUoKTsKKyAgICBh
dXRvIHBvb2wgPSBkYXRhU3RvcmUucHJvY2Vzc1Bvb2xGb3JDb29raWVTdG9yYWdlT3BlcmF0aW9u
cygpOworICAgIGF1dG8qIGNvb2tpZU1hbmFnZXIgPSBwb29sLT5zdXBwbGVtZW50PFdlYktpdDo6
V2ViQ29va2llTWFuYWdlclByb3h5PigpOworCisgICAgY29va2llTWFuYWdlci0+Z2V0SFRUUENv
b2tpZUFjY2VwdFBvbGljeShkYXRhU3RvcmUuc2Vzc2lvbklEKCksIFtwb29sID0gV1RGTW92ZShw
b29sKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oSFRU
UENvb2tpZUFjY2VwdFBvbGljeSBwb2xpY3ksIENhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsK
KyAgICAgICAgaWYgKGVycm9yICE9IENhbGxiYWNrQmFzZTo6RXJyb3I6Ok5vbmUpCisgICAgICAg
ICAgICBwb2xpY3kgPSBIVFRQQ29va2llQWNjZXB0UG9saWN5TmV2ZXI7CisKKyAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIocG9saWN5KTsKKyAgICB9KTsKK30KKworfSAvLyBuYW1lc3BhY2UgQVBJ
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSUhUVFBDb29raWVT
dG9yYWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSUhUVFBDb29raWVTdG9y
YWdlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZDNiOTM4ZWU0MmZlOWQxNzQ1NGIwODEzYjNmNWIwMzMyYWQxYmUz
NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJSFRU
UENvb2tpZVN0b3JhZ2UuaApAQCAtMCwwICsxLDY5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpbmNsdWRlICJBUElPYmplY3QuaCIKKyNpbmNsdWRlICJIVFRQQ29va2llQWNjZXB0
UG9saWN5LmgiCisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBVUkw7CitzdHJ1Y3QgQ29va2llOwor
fQorCituYW1lc3BhY2UgQVBJIHsKKworY2xhc3MgV2Vic2l0ZURhdGFTdG9yZTsKKworY2xhc3Mg
SFRUUENvb2tpZVN0b3JhZ2UgZmluYWwgOiBwdWJsaWMgT2JqZWN0SW1wbDxPYmplY3Q6OlR5cGU6
OkhUVFBDb29raWVTdG9yYWdlPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxIVFRQQ29va2ll
U3RvcmFnZT4gY3JlYXRlKFdlYnNpdGVEYXRhU3RvcmUmIHdlYnNpdGVEYXRhU3RvcmUpCisgICAg
eworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBIVFRQQ29va2llU3RvcmFnZSh3ZWJzaXRl
RGF0YVN0b3JlKSk7CisgICAgfQorCisgICAgdmlydHVhbCB+SFRUUENvb2tpZVN0b3JhZ2UoKTsK
KworICAgIHZvaWQgY29va2llcyhGdW5jdGlvbjx2b2lkIChjb25zdCBWZWN0b3I8V2ViQ29yZTo6
Q29va2llPiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICB2b2lkIGNvb2tpZXMoY29uc3Qg
V2ViQ29yZTo6VVJMJiwgRnVuY3Rpb248dm9pZCAoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tp
ZT4mKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7CisKKyAgICB2b2lkIHNldENvb2tpZShjb25zdCBX
ZWJDb3JlOjpDb29raWUmLCBGdW5jdGlvbjx2b2lkICgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsK
KyAgICB2b2lkIHNldENvb2tpZXMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mLCBjb25z
dCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXZWJDb3JlOjpVUkwmIG1haW5Eb2N1bWVudFVSTCwgRnVu
Y3Rpb248dm9pZCAoKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7CisgICAgdm9pZCBkZWxldGVDb29r
aWUoY29uc3QgV2ViQ29yZTo6Q29va2llJiwgRnVuY3Rpb248dm9pZCAoKT4mJiBjb21wbGV0aW9u
SGFuZGxlcik7CisKKyAgICB2b2lkIHJlbW92ZUNvb2tpZXNTaW5jZURhdGUoc3RkOjpjaHJvbm86
OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCwgRnVuY3Rpb248dm9pZCAoKT4mJiBjb21wbGV0aW9u
SGFuZGxlcik7CisKKyAgICB2b2lkIHNldEhUVFBDb29raWVBY2NlcHRQb2xpY3koV2ViS2l0OjpI
VFRQQ29va2llQWNjZXB0UG9saWN5LCBGdW5jdGlvbjx2b2lkICgpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKTsKKyAgICB2b2lkIGdldEhUVFBDb29raWVBY2NlcHRQb2xpY3koRnVuY3Rpb248dm9pZCAo
V2ViS2l0OjpIVFRQQ29va2llQWNjZXB0UG9saWN5KT4mJiBjb21wbGV0aW9uSGFuZGxlcik7Cisg
ICAgCitwcml2YXRlOgorICAgIEhUVFBDb29raWVTdG9yYWdlKFdlYnNpdGVEYXRhU3RvcmUmIHdl
YnNpdGVEYXRhU3RvcmUpOworCisgICAgV2Vic2l0ZURhdGFTdG9yZSYgbV9vd25pbmdEYXRhU3Rv
cmU7Cit9OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQ
SVdlYnNpdGVEYXRhU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElX
ZWJzaXRlRGF0YVN0b3JlLmNwcAppbmRleCA1Yzc4Y2NkN2FlMjkwZTQ1ZTcwZjQ4M2Y1MDIwYmRh
YTc5MDRmNzVhLi5jYTFkZjc1NzEwZDkyNTdhMmE5YjBkMmQzMDJmMDNiMWVlYjM3OTJhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9y
ZS5jcHAKQEAgLTMxLDEzICszMSwxMyBAQAogCiBuYW1lc3BhY2UgQVBJIHsKIAotUmVmUHRyPFdl
YnNpdGVEYXRhU3RvcmU+IFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmUoKQorUmVm
PFdlYnNpdGVEYXRhU3RvcmU+IFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmUoKQog
ewogICAgIFdlYktpdDo6SW5pdGlhbGl6ZVdlYktpdDIoKTsKIAogICAgIHN0YXRpYyBXZWJzaXRl
RGF0YVN0b3JlKiBkZWZhdWx0RGF0YVN0b3JlID0gYWRvcHRSZWYobmV3IFdlYnNpdGVEYXRhU3Rv
cmUoZGVmYXVsdERhdGFTdG9yZUNvbmZpZ3VyYXRpb24oKSkpLmxlYWtSZWYoKTsKIAotICAgIHJl
dHVybiBkZWZhdWx0RGF0YVN0b3JlOworICAgIHJldHVybiAqZGVmYXVsdERhdGFTdG9yZTsKIH0K
IAogUmVmPFdlYnNpdGVEYXRhU3RvcmU+IFdlYnNpdGVEYXRhU3RvcmU6OmNyZWF0ZU5vblBlcnNp
c3RlbnREYXRhU3RvcmUoKQpAQCAtNjQsNiArNjQsMTQgQEAgV2Vic2l0ZURhdGFTdG9yZTo6fldl
YnNpdGVEYXRhU3RvcmUoKQogewogfQogCitIVFRQQ29va2llU3RvcmFnZSYgV2Vic2l0ZURhdGFT
dG9yZTo6aHR0cENvb2tpZVN0b3JhZ2UoKQoreworICAgIGlmICghbV9hcGlIVFRQQ29va2llU3Rv
cmFnZSkKKyAgICAgICAgbV9hcGlIVFRQQ29va2llU3RvcmFnZSA9IEhUVFBDb29raWVTdG9yYWdl
OjpjcmVhdGUoKnRoaXMpOworCisgICAgcmV0dXJuICptX2FwaUhUVFBDb29raWVTdG9yYWdlOwor
fQorCiBib29sIFdlYnNpdGVEYXRhU3RvcmU6OmlzUGVyc2lzdGVudCgpCiB7CiAgICAgcmV0dXJu
IG1fd2Vic2l0ZURhdGFTdG9yZS0+aXNQZXJzaXN0ZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUuaCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5oCmluZGV4IDI2N2Q2OWMzMzg0
OWEwOGY4MjI4ODcxZTAxZWQ4NjFhZDgzYjhhN2UuLmNhNzRkYmNjNDY3ZTY1NjUyZDM3NTNmZDNi
Y2QyNDMyOTgyZjg3NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
QVBJV2Vic2l0ZURhdGFTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
QVBJV2Vic2l0ZURhdGFTdG9yZS5oCkBAIC0yNiw3ICsyNiw3IEBACiAjaWZuZGVmIEFQSVdlYnNp
dGVEYXRhU3RvcmVfaAogI2RlZmluZSBBUElXZWJzaXRlRGF0YVN0b3JlX2gKIAotI2luY2x1ZGUg
IkFQSU9iamVjdC5oIgorI2luY2x1ZGUgIkFQSUhUVFBDb29raWVTdG9yYWdlLmgiCiAjaW5jbHVk
ZSAiV2Vic2l0ZURhdGFTdG9yZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvU2Vzc2lvbklELmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFj
ZSBBUEkgewogCiBjbGFzcyBXZWJzaXRlRGF0YVN0b3JlIGZpbmFsIDogcHVibGljIE9iamVjdElt
cGw8T2JqZWN0OjpUeXBlOjpXZWJzaXRlRGF0YVN0b3JlPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFJlZlB0cjxXZWJzaXRlRGF0YVN0b3JlPiBkZWZhdWx0RGF0YVN0b3JlKCk7CisgICAgc3RhdGlj
IFJlZjxXZWJzaXRlRGF0YVN0b3JlPiBkZWZhdWx0RGF0YVN0b3JlKCk7CiAgICAgc3RhdGljIFJl
ZjxXZWJzaXRlRGF0YVN0b3JlPiBjcmVhdGVOb25QZXJzaXN0ZW50RGF0YVN0b3JlKCk7CiAgICAg
c3RhdGljIFJlZjxXZWJzaXRlRGF0YVN0b3JlPiBjcmVhdGUoV2ViS2l0OjpXZWJzaXRlRGF0YVN0
b3JlOjpDb25maWd1cmF0aW9uKTsKIApAQCAtNDksNiArNDksNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCByZWdpc3RlclNoYXJlZFJlc291cmNlTG9hZE9ic2VydmVyKCk7CiAKICAgICBXZWJLaXQ6Oldl
YnNpdGVEYXRhU3RvcmUmIHdlYnNpdGVEYXRhU3RvcmUoKSB7IHJldHVybiAqbV93ZWJzaXRlRGF0
YVN0b3JlOyB9CisgICAgSFRUUENvb2tpZVN0b3JhZ2UmIGh0dHBDb29raWVTdG9yYWdlKCk7CiAK
ICAgICBzdGF0aWMgU3RyaW5nIGRlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCk7CiAg
ICAgc3RhdGljIFN0cmluZyBkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCk7CkBAIC03MCw2
ICs3MSw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIFN0cmluZyB3ZWJzaXRlRGF0YURpcmVjdG9y
eUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmIGRpcmVjdG9yeU5hbWUpOwog
CiAgICAgUmVmUHRyPFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZT4gbV93ZWJzaXRlRGF0YVN0b3Jl
OworICAgIFJlZlB0cjxIVFRQQ29va2llU3RvcmFnZT4gbV9hcGlIVFRQQ29va2llU3RvcmFnZTsK
IH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0Nv
b2tpZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29va2ll
TWFuYWdlci5jcHAKaW5kZXggMjc4ZTgzYzUxZTA0MDhhM2NkYmNjMTU4ZDUzZTNhNGIxZjc2NDlm
Ny4uODBhYzhhODYyNDA5MTRmYThhZTA4ZjM4YWY5OGFjY2E1ZGE5NTRlYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29va2llTWFuYWdlci5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29va2llTWFuYWdlci5jcHAKQEAgLTYx
LDE3ICs2MSwxNyBAQCB2b2lkIFdLQ29va2llTWFuYWdlckRlbGV0ZUFsbENvb2tpZXNNb2RpZmll
ZEFmdGVyRGF0ZShXS0Nvb2tpZU1hbmFnZXJSZWYgY29va2llTQogICAgIHVzaW5nIG5hbWVzcGFj
ZSBzdGQ6OmNocm9ubzsKIAogICAgIGF1dG8gdGltZSA9IHN5c3RlbV9jbG9jazo6dGltZV9wb2lu
dChkdXJhdGlvbl9jYXN0PHN5c3RlbV9jbG9jazo6ZHVyYXRpb24+KGR1cmF0aW9uPGRvdWJsZT4o
ZGF0ZSkpKTsKLSAgICB0b0ltcGwoY29va2llTWFuYWdlclJlZiktPmRlbGV0ZUFsbENvb2tpZXNN
b2RpZmllZFNpbmNlKFdlYkNvcmU6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpLCB0aW1l
KTsKKyAgICB0b0ltcGwoY29va2llTWFuYWdlclJlZiktPmRlbGV0ZUFsbENvb2tpZXNNb2RpZmll
ZFNpbmNlKFdlYkNvcmU6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpLCB0aW1lLCBbXShD
YWxsYmFja0Jhc2U6OkVycm9yKXt9KTsKIH0KIAogdm9pZCBXS0Nvb2tpZU1hbmFnZXJTZXRIVFRQ
Q29va2llQWNjZXB0UG9saWN5KFdLQ29va2llTWFuYWdlclJlZiBjb29raWVNYW5hZ2VyLCBXS0hU
VFBDb29raWVBY2NlcHRQb2xpY3kgcG9saWN5KQogewotICAgIHRvSW1wbChjb29raWVNYW5hZ2Vy
KS0+c2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSh0b0hUVFBDb29raWVBY2NlcHRQb2xpY3kocG9s
aWN5KSk7CisgICAgdG9JbXBsKGNvb2tpZU1hbmFnZXIpLT5zZXRIVFRQQ29va2llQWNjZXB0UG9s
aWN5KFdlYkNvcmU6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpLCB0b0hUVFBDb29raWVB
Y2NlcHRQb2xpY3kocG9saWN5KSwgW10oQ2FsbGJhY2tCYXNlOjpFcnJvcil7fSk7CiB9CiAKIHZv
aWQgV0tDb29raWVNYW5hZ2VyR2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShXS0Nvb2tpZU1hbmFn
ZXJSZWYgY29va2llTWFuYWdlciwgdm9pZCogY29udGV4dCwgV0tDb29raWVNYW5hZ2VyR2V0SFRU
UENvb2tpZUFjY2VwdFBvbGljeUZ1bmN0aW9uIGNhbGxiYWNrKQogewotICAgIHRvSW1wbChjb29r
aWVNYW5hZ2VyKS0+Z2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSh0b0dlbmVyaWNDYWxsYmFja0Z1
bmN0aW9uPFdLSFRUUENvb2tpZUFjY2VwdFBvbGljeSwgSFRUUENvb2tpZUFjY2VwdFBvbGljeT4o
Y29udGV4dCwgY2FsbGJhY2spKTsKKyAgICB0b0ltcGwoY29va2llTWFuYWdlciktPmdldEhUVFBD
b29raWVBY2NlcHRQb2xpY3koV2ViQ29yZTo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCks
IHRvR2VuZXJpY0NhbGxiYWNrRnVuY3Rpb248V0tIVFRQQ29va2llQWNjZXB0UG9saWN5LCBIVFRQ
Q29va2llQWNjZXB0UG9saWN5Pihjb250ZXh0LCBjYWxsYmFjaykpOwogfQogCiB2b2lkIFdLQ29v
a2llTWFuYWdlclNldENvb2tpZVN0b3JhZ2VQYXJ0aXRpb25pbmdFbmFibGVkKFdLQ29va2llTWFu
YWdlclJlZiBjb29raWVNYW5hZ2VyLCBib29sIGVuYWJsZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwCmluZGV4
IGE3N2MxYTg5ZDVjZGU1ZWI5MmZmODE5NjZmZjgyMzc5MjdjNmU0OTguLjZjYTY5YzZkMmZkNzZl
NGEwNGQwZWMxNTc0YzJjMTBlMzBlNzVhY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwCkBAIC0zNyw3ICsz
Nyw3IEBAIFdLVHlwZUlEIFdLV2Vic2l0ZURhdGFTdG9yZUdldFR5cGVJRCgpCiAKIFdLV2Vic2l0
ZURhdGFTdG9yZVJlZiBXS1dlYnNpdGVEYXRhU3RvcmVHZXREZWZhdWx0RGF0YVN0b3JlKCkKIHsK
LSAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSShBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRE
YXRhU3RvcmUoKS5nZXQoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoQVBJOjpXZWJzaXRl
RGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlKCkucHRyKCkpOwogfQogCiBXS1dlYnNpdGVEYXRh
U3RvcmVSZWYgV0tXZWJzaXRlRGF0YVN0b3JlQ3JlYXRlTm9uUGVyc2lzdGVudERhdGFTdG9yZSgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vz
c1Bvb2wubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bv
b2wubW0KaW5kZXggM2Y0M2JmYzY1ZGQ3NDBiOTYwYzhhMDFhZTM2NDk3NDgxNDNkZjdkNC4uOGY4
N2RhY2U4MjcyZGViM2MyMjdmYTA1MzI1ODAzNDU2Y2ZiNDIxZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQpAQCAtMTk2LDcg
KzE5Niw3IEBAIHN0YXRpYyBXZWJLaXQ6OkhUVFBDb29raWVBY2NlcHRQb2xpY3kgdG9IVFRQQ29v
a2llQWNjZXB0UG9saWN5KE5TSFRUUENvb2tpZUFjY2VwCiAKIC0gKHZvaWQpX3NldENvb2tpZUFj
Y2VwdFBvbGljeTooTlNIVFRQQ29va2llQWNjZXB0UG9saWN5KXBvbGljeQogewotICAgIF9wcm9j
ZXNzUG9vbC0+c3VwcGxlbWVudDxXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eT4oKS0+c2V0
SFRUUENvb2tpZUFjY2VwdFBvbGljeSh0b0hUVFBDb29raWVBY2NlcHRQb2xpY3kocG9saWN5KSk7
CisgICAgX3Byb2Nlc3NQb29sLT5zdXBwbGVtZW50PFdlYktpdDo6V2ViQ29va2llTWFuYWdlclBy
b3h5PigpLT5zZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KFdlYkNvcmU6OlNlc3Npb25JRDo6ZGVm
YXVsdFNlc3Npb25JRCgpLCB0b0hUVFBDb29raWVBY2NlcHRQb2xpY3kocG9saWN5KSwgW10oV2Vi
S2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yKXt9KTsKIH0KIAogLSAoaWQpX29iamVjdEZvckJ1bmRs
ZVBhcmFtZXRlcjooTlNTdHJpbmcgKilwYXJhbWV0ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KaW5kZXggNzEz
ODE5ZTQ3NDBhZDM0ZDkwMThkYzg5MDM3MjE5MDQ5ZmRmMWJjNy4uYmU4YmVkZDJmMjE3NTgwZjU3
N2U3MDM5MTdjNjI3YjAwOTg2OWY0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KQEAgLTMxLDYgKzMxLDcg
QEAKICNpbXBvcnQgIldLTlNBcnJheS5oIgogI2ltcG9ydCAiV0tXZWJzaXRlRGF0YVJlY29yZElu
dGVybmFsLmgiCiAjaW1wb3J0ICJXZWJzaXRlRGF0YUZldGNoT3B0aW9uLmgiCisjaW1wb3J0ICJf
V0tIVFRQQ29va2llU3RvcmFnZUludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tXZWJzaXRlRGF0YVN0
b3JlQ29uZmlndXJhdGlvbi5oIgogI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CiAKQEAgLTM4LDcg
KzM5LDcgQEAgQGltcGxlbWVudGF0aW9uIFdLV2Vic2l0ZURhdGFTdG9yZQogCiArIChXS1dlYnNp
dGVEYXRhU3RvcmUgKilkZWZhdWx0RGF0YVN0b3JlCiB7Ci0gICAgcmV0dXJuIFdlYktpdDo6d3Jh
cHBlcigqQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlKCkuZ2V0KCkpOwor
ICAgIHJldHVybiBXZWJLaXQ6OndyYXBwZXIoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0
RGF0YVN0b3JlKCkuZ2V0KCkpOwogfQogCiArIChXS1dlYnNpdGVEYXRhU3RvcmUgKilub25QZXJz
aXN0ZW50RGF0YVN0b3JlCkBAIC0xOTQsNiArMTk1LDExIEBAIC0gKHZvaWQpX3NldFJlc291cmNl
TG9hZFN0YXRpc3RpY3NFbmFibGVkOihCT09MKWVuYWJsZWQKICAgICBfd2Vic2l0ZURhdGFTdG9y
ZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKGVu
YWJsZWQpOwogfQogCistIChfV0tIVFRQQ29va2llU3RvcmFnZSAqKV9odHRwQ29va2llU3RvcmFn
ZQoreworICAgIHJldHVybiBXZWJLaXQ6OndyYXBwZXIoX3dlYnNpdGVEYXRhU3RvcmUtPmh0dHBD
b29raWVTdG9yYWdlKCkpOworfQorCiBAZW5kCiAKICNlbmRpZiAvLyBXS19BUElfRU5BQkxFRApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVE
YXRhU3RvcmVQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaAppbmRleCA0OWQ5YmU2YWQxMTliM2ExMTIxNTJiNmJh
ZmUzOGFkZTI2NjJlNmViLi5mYzE4YmUyODM5YWJkYWU1ZDg2MTMwYjEyOTYxODczNTNhNjk1MWFl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0
ZURhdGFTdG9yZVByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaApAQCAtMjksNiArMjksNyBAQAogCiBOU19B
U1NVTUVfTk9OTlVMTF9CRUdJTgogCitAY2xhc3MgX1dLSFRUUENvb2tpZVN0b3JhZ2U7CiBAY2xh
c3MgX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb247CiAKIHR5cGVkZWYgTlNfT1BUSU9O
UyhOU1VJbnRlZ2VyLCBfV0tXZWJzaXRlRGF0YVN0b3JlRmV0Y2hPcHRpb25zKSB7CkBAIC00Myw2
ICs0NCw4IEBAIHR5cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRlZ2VyLCBfV0tXZWJzaXRlRGF0YVN0
b3JlRmV0Y2hPcHRpb25zKSB7CiAKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldFJl
c291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkOikgQk9PTCBfcmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0VuYWJsZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTIpLCBpb3MoMTAuMCkpOwogCitA
cHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIF9XS0hUVFBDb29raWVTdG9yYWdlICpfaHR0
cENvb2tpZVN0b3JhZ2UgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhX
S19JT1NfVEJBKSk7CisKIEBlbmQKIAogTlNfQVNTVU1FX05PTk5VTExfRU5ECmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0hUVFBDb29raWVTdG9yYWdl
LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0hUVFBDb29raWVTdG9y
YWdlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMGVhMjI1NWY5NWE3MTQzNzM1NzkzZTZlNWM4NjEyNjA5MWJlNjQ1
YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLSFRUUENvb2tpZVN0b3JhZ2UuaApAQCAtMCwwICsxLDQ5IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lt
cG9ydCA8V2ViS2l0L1dLRm91bmRhdGlvbi5oPgorCisjaWYgV0tfQVBJX0VOQUJMRUQKKworI2lt
cG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CisKK1dLX0NMQVNTX0FWQUlMQUJMRShtYWNv
c3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSkKK0BpbnRlcmZhY2UgX1dLSFRUUENvb2tp
ZVN0b3JhZ2UgOiBOU09iamVjdAorCistICh2b2lkKWZldGNoQ29va2llczoobm9ubnVsbCB2b2lk
ICheKShOU0FycmF5PE5TSFRUUENvb2tpZSAqPiAqX051bGxhYmxlKSljb21wbGV0aW9uSGFuZGxl
cjsKKy0gKHZvaWQpZmV0Y2hDb29raWVzRm9yVVJMOihub25udWxsIE5TVVJMICopdXJsIGNvbXBs
ZXRpb25IYW5kbGVyOihub25udWxsIHZvaWQgKF4pKE5TQXJyYXk8TlNIVFRQQ29va2llICo+ICpf
TnVsbGFibGUpKWNvbXBsZXRpb25IYW5kbGVyOworCistICh2b2lkKXNldENvb2tpZToobm9ubnVs
bCBOU0hUVFBDb29raWUgKiljb29raWUgY29tcGxldGlvbkhhbmRsZXI6KG51bGxhYmxlIHZvaWQg
KF4pKCkpY29tcGxldGlvbkhhbmRsZXI7CistICh2b2lkKXNldENvb2tpZXM6KG5vbm51bGwgTlNB
cnJheTxOU0hUVFBDb29raWUgKj4gKiljb29raWVzIGZvclVSTDoobnVsbGFibGUgTlNVUkwgKil1
cmwgbWFpbkRvY3VtZW50VVJMOihudWxsYWJsZSBOU1VSTCAqKW1haW5Eb2N1bWVudFVSTCBjb21w
bGV0aW9uSGFuZGxlcjoobnVsbGFibGUgdm9pZCAoXikoKSljb21wbGV0aW9uSGFuZGxlcjsKKwor
LSAodm9pZClkZWxldGVDb29raWU6KG5vbm51bGwgTlNIVFRQQ29va2llICopY29va2llIGNvbXBs
ZXRpb25IYW5kbGVyOihudWxsYWJsZSB2b2lkICheKSgpKWNvbXBsZXRpb25IYW5kbGVyOworLSAo
dm9pZClyZW1vdmVDb29raWVzU2luY2VEYXRlOihub25udWxsIE5TRGF0ZSAqKWRhdGUgY29tcGxl
dGlvbkhhbmRsZXI6KG51bGxhYmxlIHZvaWQgKF4pKCkpY29tcGxldGlvbkhhbmRsZXI7CisKKy0g
KHZvaWQpc2V0Q29va2llQWNjZXB0UG9saWN5OihOU0hUVFBDb29raWVBY2NlcHRQb2xpY3kpcG9s
aWN5IGNvbXBsZXRpb25IYW5kbGVyOihudWxsYWJsZSB2b2lkICheKSgpKWNvbXBsZXRpb25IYW5k
bGVyOworLSAodm9pZClmZXRjaENvb2tpZUFjY2VwdFBvbGljeToobm9ubnVsbCB2b2lkICheKShO
U0hUVFBDb29raWVBY2NlcHRQb2xpY3kpKWNvbXBsZXRpb25IYW5kbGVyOworCitAZW5kCisKKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tI
VFRQQ29va2llU3RvcmFnZS5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLSFRUUENvb2tpZVN0b3JhZ2UubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTJjZGEzM2RkOGYwYmY5NDhlODFl
NjRkZmIxZDIzYTRjMjcwNjA2OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLSFRUUENvb2tpZVN0b3JhZ2UubW0KQEAgLTAsMCArMSwxNjEg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIl9XS0hUVFBDb29r
aWVTdG9yYWdlSW50ZXJuYWwuaCIKKworI2lmIFdLX0FQSV9FTkFCTEVECisKKyNpbmNsdWRlICJI
VFRQQ29va2llQWNjZXB0UG9saWN5LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9DRk5ldHdvcmtTUEku
aD4KKyNpbmNsdWRlIDxXZWJDb3JlL0Nvb2tpZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+
CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorCitzdGF0aWMgTlNBcnJheTxOU0hUVFBDb29r
aWUgKj4gKmNvcmVDb29raWVzVG9OU0Nvb2tpZXMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tp
ZT4mIGNvcmVDb29raWVzKQoreworICAgIE5TTXV0YWJsZUFycmF5PE5TSFRUUENvb2tpZSAqPiAq
bnNDb29raWVzID0gW05TTXV0YWJsZUFycmF5IGFycmF5V2l0aENhcGFjaXR5OmNvcmVDb29raWVz
LnNpemUoKV07CisKKyAgICBmb3IgKGF1dG8mIGNvb2tpZSA6IGNvcmVDb29raWVzKQorICAgICAg
ICBbbnNDb29raWVzIGFkZE9iamVjdDooTlNIVFRQQ29va2llKiljb29raWVdOworCisgICAgcmV0
dXJuIG5zQ29va2llczsKK30KKworQGltcGxlbWVudGF0aW9uIF9XS0hUVFBDb29raWVTdG9yYWdl
CisKKy0gKHZvaWQpZGVhbGxvYworeworICAgIF9jb29raWVTdG9yYWdlLT5BUEk6OkhUVFBDb29r
aWVTdG9yYWdlOjp+SFRUUENvb2tpZVN0b3JhZ2UoKTsKKworICAgIFtzdXBlciBkZWFsbG9jXTsK
K30KKworLSAodm9pZClmZXRjaENvb2tpZXM6KHZvaWQgKF4pKE5TQXJyYXk8TlNIVFRQQ29va2ll
ICo+ICopKWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAgX2Nvb2tpZVN0b3JhZ2UtPmNvb2tpZXMo
W2hhbmRsZXIgPSBhZG9wdE5TKFtjb21wbGV0aW9uSGFuZGxlciBjb3B5XSldKGNvbnN0IFZlY3Rv
cjxXZWJDb3JlOjpDb29raWU+JiBjb29raWVzKSB7CisgICAgICAgIGF1dG8gcmF3SGFuZGxlciA9
ICh2b2lkICheKShOU0FycmF5PE5TSFRUUENvb2tpZSAqPiAqKSloYW5kbGVyLmdldCgpOworICAg
ICAgICByYXdIYW5kbGVyKGNvcmVDb29raWVzVG9OU0Nvb2tpZXMoY29va2llcykpOworICAgIH0p
OworfQorCistICh2b2lkKWZldGNoQ29va2llc0ZvclVSTDooTlNVUkwgKil1cmwgY29tcGxldGlv
bkhhbmRsZXI6KHZvaWQgKF4pKE5TQXJyYXk8TlNIVFRQQ29va2llICo+ICopKWNvbXBsZXRpb25I
YW5kbGVyCit7CisgICAgX2Nvb2tpZVN0b3JhZ2UtPmNvb2tpZXModXJsLCBbaGFuZGxlciA9IGFk
b3B0TlMoW2NvbXBsZXRpb25IYW5kbGVyIGNvcHldKV0oY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNv
b2tpZT4mIGNvb2tpZXMpIHsKKyAgICAgICAgYXV0byByYXdIYW5kbGVyID0gKHZvaWQgKF4pKE5T
QXJyYXk8TlNIVFRQQ29va2llICo+ICopKWhhbmRsZXIuZ2V0KCk7CisgICAgICAgIHJhd0hhbmRs
ZXIoY29yZUNvb2tpZXNUb05TQ29va2llcyhjb29raWVzKSk7CisgICAgfSk7Cit9CisKKy0gKHZv
aWQpc2V0Q29va2llOihOU0hUVFBDb29raWUgKiljb29raWUgY29tcGxldGlvbkhhbmRsZXI6KHZv
aWQgKF4pKCkpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICBfY29va2llU3RvcmFnZS0+c2V0Q29v
a2llKGNvb2tpZSwgW2hhbmRsZXIgPSBhZG9wdE5TKFtjb21wbGV0aW9uSGFuZGxlciBjb3B5XSld
KCkgeworICAgICAgICBhdXRvIHJhd0hhbmRsZXIgPSAodm9pZCAoXikoKSloYW5kbGVyLmdldCgp
OworICAgICAgICBpZiAocmF3SGFuZGxlcikKKyAgICAgICAgICAgIHJhd0hhbmRsZXIoKTsKKyAg
ICB9KTsKKworfQorCistICh2b2lkKWRlbGV0ZUNvb2tpZTooTlNIVFRQQ29va2llICopY29va2ll
IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKSgpKWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAg
X2Nvb2tpZVN0b3JhZ2UtPmRlbGV0ZUNvb2tpZShjb29raWUsIFtoYW5kbGVyID0gYWRvcHROUyhb
Y29tcGxldGlvbkhhbmRsZXIgY29weV0pXSgpIHsKKyAgICAgICAgYXV0byByYXdIYW5kbGVyID0g
KHZvaWQgKF4pKCkpaGFuZGxlci5nZXQoKTsKKyAgICAgICAgaWYgKHJhd0hhbmRsZXIpCisgICAg
ICAgICAgICByYXdIYW5kbGVyKCk7CisgICAgfSk7Cit9CisKKy0gKHZvaWQpc2V0Q29va2llczoo
TlNBcnJheTxOU0hUVFBDb29raWUgKj4gKiljb29raWVzIGZvclVSTDooTlNVUkwgKilVUkwgbWFp
bkRvY3VtZW50VVJMOihOU1VSTCAqKW1haW5Eb2N1bWVudFVSTCBjb21wbGV0aW9uSGFuZGxlcjoo
dm9pZCAoXikoKSljb21wbGV0aW9uSGFuZGxlcgoreworICAgIFZlY3RvcjxXZWJDb3JlOjpDb29r
aWU+IGNvcmVDb29raWVzOworICAgIGNvcmVDb29raWVzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHko
Y29va2llcy5jb3VudCk7CisgICAgZm9yIChOU0hUVFBDb29raWUgKmNvb2tpZSA6IGNvb2tpZXMp
CisgICAgICAgIGNvcmVDb29raWVzLnVuY2hlY2tlZEFwcGVuZChjb29raWUpOworCisgICAgX2Nv
b2tpZVN0b3JhZ2UtPnNldENvb2tpZXMoY29yZUNvb2tpZXMsIFVSTCwgbWFpbkRvY3VtZW50VVJM
LCBbaGFuZGxlciA9IGFkb3B0TlMoW2NvbXBsZXRpb25IYW5kbGVyIGNvcHldKV0oKSB7CisgICAg
ICAgIGF1dG8gcmF3SGFuZGxlciA9ICh2b2lkICheKSgpKWhhbmRsZXIuZ2V0KCk7CisgICAgICAg
IGlmIChyYXdIYW5kbGVyKQorICAgICAgICAgICAgcmF3SGFuZGxlcigpOworICAgIH0pOworfQor
CistICh2b2lkKXJlbW92ZUNvb2tpZXNTaW5jZURhdGU6KE5TRGF0ZSAqKWRhdGUgY29tcGxldGlv
bkhhbmRsZXI6KHZvaWQgKF4pKCkpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICBhdXRvIHN5c3Rl
bUNsb2NrVGltZSA9IHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQoc3RkOjpj
aHJvbm86OmR1cmF0aW9uX2Nhc3Q8c3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6ZHVyYXRpb24+
KHN0ZDo6Y2hyb25vOjpkdXJhdGlvbjxkb3VibGU+KGRhdGUudGltZUludGVydmFsU2luY2UxOTcw
KSkpOworCisgICAgX2Nvb2tpZVN0b3JhZ2UtPnJlbW92ZUNvb2tpZXNTaW5jZURhdGUoc3lzdGVt
Q2xvY2tUaW1lLCBbaGFuZGxlciA9IGFkb3B0TlMoW2NvbXBsZXRpb25IYW5kbGVyIGNvcHldKV0o
KSB7CisgICAgICAgIGF1dG8gcmF3SGFuZGxlciA9ICh2b2lkICheKSgpKWhhbmRsZXIuZ2V0KCk7
CisgICAgICAgIGlmIChyYXdIYW5kbGVyKQorICAgICAgICAgICAgcmF3SGFuZGxlcigpOworICAg
IH0pOworfQorCistICh2b2lkKXNldENvb2tpZUFjY2VwdFBvbGljeTooTlNIVFRQQ29va2llQWNj
ZXB0UG9saWN5KXBvbGljeSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoKSljb21wbGV0aW9u
SGFuZGxlcgoreworICAgIF9jb29raWVTdG9yYWdlLT5zZXRIVFRQQ29va2llQWNjZXB0UG9saWN5
KHBvbGljeSwgW2hhbmRsZXIgPSBhZG9wdE5TKFtjb21wbGV0aW9uSGFuZGxlciBjb3B5XSldKCkg
eworICAgICAgICBhdXRvIHJhd0hhbmRsZXIgPSAodm9pZCAoXikoKSloYW5kbGVyLmdldCgpOwor
ICAgICAgICBpZiAocmF3SGFuZGxlcikKKyAgICAgICAgICAgIHJhd0hhbmRsZXIoKTsKKyAgICB9
KTsKK30KKworc3RhdGljIE5TSFRUUENvb2tpZUFjY2VwdFBvbGljeSBraXRDb29raWVQb2xpY3lU
b05TQ29va2llUG9saWN5KFdlYktpdDo6SFRUUENvb2tpZUFjY2VwdFBvbGljeSBraXRQb2xpY3kp
Cit7CisgICAgc3dpdGNoIChraXRQb2xpY3kpIHsKKyAgICBjYXNlIFdlYktpdDo6SFRUUENvb2tp
ZUFjY2VwdFBvbGljeUFsd2F5czoKKyAgICAgICAgcmV0dXJuIE5TSFRUUENvb2tpZUFjY2VwdFBv
bGljeUFsd2F5czsKKyAgICBjYXNlIFdlYktpdDo6SFRUUENvb2tpZUFjY2VwdFBvbGljeU5ldmVy
OgorICAgICAgICByZXR1cm4gTlNIVFRQQ29va2llQWNjZXB0UG9saWN5TmV2ZXI7CisgICAgY2Fz
ZSBXZWJLaXQ6OkhUVFBDb29raWVBY2NlcHRQb2xpY3lPbmx5RnJvbU1haW5Eb2N1bWVudERvbWFp
bjoKKyAgICAgICAgcmV0dXJuIE5TSFRUUENvb2tpZUFjY2VwdFBvbGljeU9ubHlGcm9tTWFpbkRv
Y3VtZW50RG9tYWluOworICAgIGNhc2UgV2ViS2l0OjpIVFRQQ29va2llQWNjZXB0UG9saWN5RXhj
bHVzaXZlbHlGcm9tTWFpbkRvY3VtZW50RG9tYWluOgorICAgICAgICAvLyBDYXN0IHJlcXVpcmVk
IGJlY2F1c2Ugb2YgQ0ZOZXR3b3JrU1BJLgorICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8TlNI
VFRQQ29va2llQWNjZXB0UG9saWN5PihOU0hUVFBDb29raWVBY2NlcHRQb2xpY3lFeGNsdXNpdmVs
eUZyb21NYWluRG9jdW1lbnREb21haW4pOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgIH0KKworICAgIHJldHVybiBOU0hUVFBDb29raWVBY2NlcHRQb2xp
Y3lOZXZlcjsKK30KKworLSAodm9pZClmZXRjaENvb2tpZUFjY2VwdFBvbGljeToodm9pZCAoXiko
TlNIVFRQQ29va2llQWNjZXB0UG9saWN5KSljb21wbGV0aW9uSGFuZGxlcgoreworICAgIF9jb29r
aWVTdG9yYWdlLT5nZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KFtoYW5kbGVyID0gYWRvcHROUyhb
Y29tcGxldGlvbkhhbmRsZXIgY29weV0pXShXZWJLaXQ6OkhUVFBDb29raWVBY2NlcHRQb2xpY3kg
cG9saWN5KSB7CisgICAgICAgIGF1dG8gcmF3SGFuZGxlciA9ICh2b2lkICheKShOU0hUVFBDb29r
aWVBY2NlcHRQb2xpY3kpKWhhbmRsZXIuZ2V0KCk7CisgICAgICAgIHJhd0hhbmRsZXIoa2l0Q29v
a2llUG9saWN5VG9OU0Nvb2tpZVBvbGljeShwb2xpY3kpKTsKKyAgICB9KTsKK30KKworI3ByYWdt
YSBtYXJrIFdLT2JqZWN0IHByb3RvY29sIGltcGxlbWVudGF0aW9uCisKKy0gKEFQSTo6T2JqZWN0
JilfYXBpT2JqZWN0Cit7CisgICAgcmV0dXJuICpfY29va2llU3RvcmFnZTsKK30KKworQGVuZAor
CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLSFRUUENvb2tpZVN0b3JhZ2VJbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tIVFRQQ29va2llU3RvcmFnZUludGVybmFsLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2Rl
MDFiYTViZjEwNDI0YzlmMzMyMmRhNDA0NjAxMjY1YjM4YWY2YgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSFRUUENvb2tpZVN0b3JhZ2VJ
bnRlcm5hbC5oCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJfV0tIVFRQ
Q29va2llU3RvcmFnZS5oIgorCisjaWYgV0tfQVBJX0VOQUJMRUQKKworI2ltcG9ydCAiQVBJSFRU
UENvb2tpZVN0b3JhZ2UuaCIKKyNpbXBvcnQgIldLT2JqZWN0LmgiCisKK25hbWVzcGFjZSBXZWJL
aXQgeworCitpbmxpbmUgX1dLSFRUUENvb2tpZVN0b3JhZ2UgKndyYXBwZXIoQVBJOjpIVFRQQ29v
a2llU3RvcmFnZSYgY29va2llU3RvcmFnZSkKK3sKKyAgICBBU1NFUlQoW2Nvb2tpZVN0b3JhZ2Uu
d3JhcHBlcigpIGlzS2luZE9mQ2xhc3M6W19XS0hUVFBDb29raWVTdG9yYWdlIGNsYXNzXV0pOwor
ICAgIHJldHVybiAoX1dLSFRUUENvb2tpZVN0b3JhZ2UgKiljb29raWVTdG9yYWdlLndyYXBwZXIo
KTsKK30KKworfQorCitAaW50ZXJmYWNlIF9XS0hUVFBDb29raWVTdG9yYWdlICgpIDxXS09iamVj
dD4geworQHBhY2thZ2UKKyAgICBBUEk6Ok9iamVjdFN0b3JhZ2U8QVBJOjpIVFRQQ29va2llU3Rv
cmFnZT4gX2Nvb2tpZVN0b3JhZ2U7Cit9CitAZW5kCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3Bw
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Np
b24uY3BwCmluZGV4IDQ4Y2FkYzcxMjRmOWRiZTY4NWJiZGU0OGNiM2ZlZTNkMTgzOTE2ZDguLmE4
MzE4NGFmOTAyYjQ3NWM0OGU4ZDBhY2Y3ODA2MTcxY2I0ZmJlZjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vz
c2lvbi5jcHAKQEAgLTczMCw3ICs3MzAsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjph
ZGRTaW5nbGVDb29raWUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbgogCiAg
ICAgLy8gRklYTUU6IFVzaW5nIGFjdGl2ZVVSTCBoZXJlIHR3aWNlIGlzIGJhc2ljYWxseSBzYXlp
bmcgInRoaXMgaXMgYWx3YXlzIGluIHRoZSBjb250ZXh0IG9mIHRoZSBtYWluIGRvY3VtZW50Igog
ICAgIC8vIHdoaWNoIHByb2JhYmx5IGlzbid0IGFjY3VyYXRlLgotICAgIGNvb2tpZU1hbmFnZXIt
PnNldENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCksIHsgY29v
a2llIH0sIGFjdGl2ZVVSTCwgYWN0aXZlVVJMKTsKKyAgICBjb29raWVNYW5hZ2VyLT5zZXRDb29r
aWVzKFdlYkNvcmU6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpLCB7IGNvb2tpZSB9LCBh
Y3RpdmVVUkwsIGFjdGl2ZVVSTCwgW10oQ2FsbGJhY2tCYXNlOjpFcnJvcil7fSk7CiAKICAgICBj
YWxsYmFjay0+c2VuZFN1Y2Nlc3MoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5jcHAKaW5kZXggMmVhYTVjZTNiZmE1MzU5ODRkZjNl
MGU2Yzc1ZGE1YjIxOTI0NjcxOS4uZTAyM2I4MjVlZTlmNDkwZDIwN2RlYTI5YTdmN2Y1MzE3Yjgy
YTNlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFn
ZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFn
ZXJQcm94eS5jcHAKQEAgLTMyLDggKzMyLDExIEBACiAjaW5jbHVkZSAiV2ViQ29va2llTWFuYWdl
ck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViQ29va2llTWFuYWdlclByb3h5TWVzc2FnZXMuaCIK
ICNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ29va2llLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbkRhdGEuaD4KIAordXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjb25zdCBjaGFyKiBXZWJDb29r
aWVNYW5hZ2VyUHJveHk6OnN1cHBsZW1lbnROYW1lKCkKQEAgLTk0LDcgKzk3LDcgQEAgdm9pZCBX
ZWJDb29raWVNYW5hZ2VyUHJveHk6OmRlcmVmV2ViQ29udGV4dFN1cHBsZW1lbnQoKQogICAgIEFQ
STo6T2JqZWN0OjpkZXJlZigpOwogfQogCi12b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6Z2V0
SG9zdG5hbWVzV2l0aENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgRnVuY3Rp
b248dm9pZCAoQVBJOjpBcnJheSosIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVu
Y3Rpb24pCit2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6Z2V0SG9zdG5hbWVzV2l0aENvb2tp
ZXMoU2Vzc2lvbklEIHNlc3Npb25JRCwgRnVuY3Rpb248dm9pZCAoQVBJOjpBcnJheSosIENhbGxi
YWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7CiAgICAgYXV0byBjYWxsYmFj
ayA9IEFycmF5Q2FsbGJhY2s6OmNyZWF0ZShXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pKTsKICAg
ICB1aW50NjRfdCBjYWxsYmFja0lEID0gY2FsbGJhY2stPmNhbGxiYWNrSUQoKTsKQEAgLTExNCwz
NyArMTE3LDk2IEBAIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpkaWRHZXRIb3N0bmFtZXNX
aXRoQ29va2llcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgaG9zCiAgICAgY2FsbGJhY2stPnBlcmZv
cm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZShBUEk6OkFycmF5OjpjcmVhdGVTdHJpbmdBcnJheSho
b3N0bmFtZXMpLnB0cigpKTsKIH0KIAotdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRlbGV0
ZUNvb2tpZXNGb3JIb3N0bmFtZShXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBT
dHJpbmcmIGhvc3RuYW1lKQordm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRlbGV0ZUNvb2tp
ZXNGb3JIb3N0bmFtZShTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGhvc3RuYW1l
KQogewogICAgIHByb2Nlc3NQb29sKCktPnNlbmRUb05ldHdvcmtpbmdQcm9jZXNzUmVsYXVuY2hp
bmdJZk5lY2Vzc2FyeShNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6RGVsZXRlQ29va2llc0Zv
ckhvc3RuYW1lKHNlc3Npb25JRCwgaG9zdG5hbWUpKTsKIH0KIAotdm9pZCBXZWJDb29raWVNYW5h
Z2VyUHJveHk6OmRlbGV0ZUFsbENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCkK
K3ZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpkZWxldGVBbGxDb29raWVzKFNlc3Npb25JRCBz
ZXNzaW9uSUQpCiB7CiAgICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvTmV0d29ya2luZ1Byb2Nlc3NS
ZWxhdW5jaGluZ0lmTmVjZXNzYXJ5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpEZWxldGVB
bGxDb29raWVzKHNlc3Npb25JRCkpOwogfQogCi12b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6
ZGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2UoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCB0aW1lKQordm9pZCBXZWJD
b29raWVNYW5hZ2VyUHJveHk6OmRlbGV0ZUNvb2tpZShTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25z
dCBDb29raWUmIGNvb2tpZSwgRnVuY3Rpb248dm9pZCAoQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYg
Y2FsbGJhY2tGdW5jdGlvbikKK3sKKyAgICBhdXRvIGNhbGxiYWNrID0gVm9pZENhbGxiYWNrOjpj
cmVhdGUoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSk7CisgICAgdWludDY0X3QgY2FsbGJhY2tJ
RCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7CisgICAgbV92b2lkQ2FsbGJhY2tzLnNldChjYWxs
YmFja0lELCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisKKyAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9O
ZXR3b3JraW5nUHJvY2Vzc1JlbGF1bmNoaW5nSWZOZWNlc3NhcnkoTWVzc2FnZXM6OldlYkNvb2tp
ZU1hbmFnZXI6OkRlbGV0ZUNvb2tpZShzZXNzaW9uSUQsIGNvb2tpZSwgY2FsbGJhY2tJRCkpOwor
fQorCit2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGVsZXRlQWxsQ29va2llc01vZGlmaWVk
U2luY2UoU2Vzc2lvbklEIHNlc3Npb25JRCwgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGlt
ZV9wb2ludCB0aW1lLCBGdW5jdGlvbjx2b2lkIChDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxs
YmFja0Z1bmN0aW9uKQoreworICAgIGF1dG8gY2FsbGJhY2sgPSBWb2lkQ2FsbGJhY2s6OmNyZWF0
ZShXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pKTsKKyAgICB1aW50NjRfdCBjYWxsYmFja0lEID0g
Y2FsbGJhY2stPmNhbGxiYWNrSUQoKTsKKyAgICBtX3ZvaWRDYWxsYmFja3Muc2V0KGNhbGxiYWNr
SUQsIFdURk1vdmUoY2FsbGJhY2spKTsKKworICAgIHByb2Nlc3NQb29sKCktPnNlbmRUb05ldHdv
cmtpbmdQcm9jZXNzUmVsYXVuY2hpbmdJZk5lY2Vzc2FyeShNZXNzYWdlczo6V2ViQ29va2llTWFu
YWdlcjo6RGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2Uoc2Vzc2lvbklELCB0aW1lLCBjYWxs
YmFja0lEKSk7Cit9CisKK3ZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpzZXRDb29raWUoU2Vz
c2lvbklEIHNlc3Npb25JRCwgY29uc3QgQ29va2llJiBjb29raWUsIEZ1bmN0aW9uPHZvaWQgKENh
bGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7Ci0gICAgcHJvY2Vzc1Bv
b2woKS0+c2VuZFRvTmV0d29ya2luZ1Byb2Nlc3NSZWxhdW5jaGluZ0lmTmVjZXNzYXJ5KE1lc3Nh
Z2VzOjpXZWJDb29raWVNYW5hZ2VyOjpEZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZShzZXNz
aW9uSUQsIHRpbWUpKTsKKyAgICBhdXRvIGNhbGxiYWNrID0gVm9pZENhbGxiYWNrOjpjcmVhdGUo
V1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSk7CisgICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IGNh
bGxiYWNrLT5jYWxsYmFja0lEKCk7CisgICAgbV92b2lkQ2FsbGJhY2tzLnNldChjYWxsYmFja0lE
LCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisKKyAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9OZXR3b3Jr
aW5nUHJvY2Vzc1JlbGF1bmNoaW5nSWZOZWNlc3NhcnkoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFn
ZXI6OlNldENvb2tpZShzZXNzaW9uSUQsIGNvb2tpZSwgY2FsbGJhY2tJRCkpOwogfQogCi12b2lk
IFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6c2V0Q29va2llcyhXZWJDb3JlOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYgY29va2llcywgY29uc3QgV2Vi
Q29yZTo6VVJMJiB1cmwsIGNvbnN0IFdlYkNvcmU6OlVSTCYgbWFpbkRvY3VtZW50VVJMKQordm9p
ZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OnNldENvb2tpZXMoU2Vzc2lvbklEIHNlc3Npb25JRCwg
Y29uc3QgVmVjdG9yPENvb2tpZT4mIGNvb2tpZXMsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBVUkwm
IG1haW5Eb2N1bWVudFVSTCwgRnVuY3Rpb248dm9pZCAoQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYg
Y2FsbGJhY2tGdW5jdGlvbikKIHsKLSAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9OZXR3b3JraW5n
UHJvY2Vzc1JlbGF1bmNoaW5nSWZOZWNlc3NhcnkoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6
OlNldENvb2tpZXMoc2Vzc2lvbklELCBjb29raWVzLCB1cmwsIG1haW5Eb2N1bWVudFVSTCkpOwor
ICAgIGF1dG8gY2FsbGJhY2sgPSBWb2lkQ2FsbGJhY2s6OmNyZWF0ZShXVEZNb3ZlKGNhbGxiYWNr
RnVuY3Rpb24pKTsKKyAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gY2FsbGJhY2stPmNhbGxiYWNr
SUQoKTsKKyAgICBtX3ZvaWRDYWxsYmFja3Muc2V0KGNhbGxiYWNrSUQsIFdURk1vdmUoY2FsbGJh
Y2spKTsKKworICAgIHByb2Nlc3NQb29sKCktPnNlbmRUb05ldHdvcmtpbmdQcm9jZXNzUmVsYXVu
Y2hpbmdJZk5lY2Vzc2FyeShNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6U2V0Q29va2llcyhz
ZXNzaW9uSUQsIGNvb2tpZXMsIHVybCwgbWFpbkRvY3VtZW50VVJMLCBjYWxsYmFja0lEKSk7CiB9
CiAKLXZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpzdGFydE9ic2VydmluZ0Nvb2tpZUNoYW5n
ZXMoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCkKK3ZvaWQgV2ViQ29va2llTWFuYWdlclBy
b3h5OjpnZXRBbGxDb29raWVzKFNlc3Npb25JRCBzZXNzaW9uSUQsIEZ1bmN0aW9uPHZvaWQgKGNv
bnN0IFZlY3RvcjxDb29raWU+JiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5j
dGlvbikKK3sKKyAgICBhdXRvIGNhbGxiYWNrID0gR2V0Q29va2llc0NhbGxiYWNrOjpjcmVhdGUo
V1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSk7CisgICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IGNh
bGxiYWNrLT5jYWxsYmFja0lEKCk7CisgICAgbV9nZXRDb29raWVzQ2FsbGJhY2tzLnNldChjYWxs
YmFja0lELCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisKKyAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9O
ZXR3b3JraW5nUHJvY2Vzc1JlbGF1bmNoaW5nSWZOZWNlc3NhcnkoTWVzc2FnZXM6OldlYkNvb2tp
ZU1hbmFnZXI6OkdldEFsbENvb2tpZXMoc2Vzc2lvbklELCBjYWxsYmFja0lEKSk7Cit9CisKK3Zv
aWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpnZXRDb29raWVzKFNlc3Npb25JRCBzZXNzaW9uSUQs
IGNvbnN0IFVSTCYgdXJsLCBGdW5jdGlvbjx2b2lkIChjb25zdCBWZWN0b3I8Q29va2llPiYsIENh
bGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCit7CisgICAgYXV0byBjYWxs
YmFjayA9IEdldENvb2tpZXNDYWxsYmFjazo6Y3JlYXRlKFdURk1vdmUoY2FsbGJhY2tGdW5jdGlv
bikpOworICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgpOwor
ICAgIG1fZ2V0Q29va2llc0NhbGxiYWNrcy5zZXQoY2FsbGJhY2tJRCwgV1RGTW92ZShjYWxsYmFj
aykpOworCisgICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvTmV0d29ya2luZ1Byb2Nlc3NSZWxhdW5j
aGluZ0lmTmVjZXNzYXJ5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpHZXRDb29raWVzKHNl
c3Npb25JRCwgdXJsLCBjYWxsYmFja0lEKSk7Cit9CisKK3ZvaWQgV2ViQ29va2llTWFuYWdlclBy
b3h5OjpkaWRTZXRDb29raWVzKHVpbnQ2NF90IGNhbGxiYWNrSUQpCit7CisgICAgbV92b2lkQ2Fs
bGJhY2tzLnRha2UoY2FsbGJhY2tJRCktPnBlcmZvcm1DYWxsYmFjaygpOworfQorCit2b2lkIFdl
YkNvb2tpZU1hbmFnZXJQcm94eTo6ZGlkR2V0Q29va2llcyhjb25zdCBWZWN0b3I8Q29va2llPiYg
Y29va2llcywgdWludDY0X3QgY2FsbGJhY2tJRCkKK3sKKyAgICBtX2dldENvb2tpZXNDYWxsYmFj
a3MudGFrZShjYWxsYmFja0lEKS0+cGVyZm9ybUNhbGxiYWNrV2l0aFJldHVyblZhbHVlKGNvb2tp
ZXMpOworfQorCit2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGlkRGVsZXRlQ29va2llcyh1
aW50NjRfdCBjYWxsYmFja0lEKQoreworICAgIG1fdm9pZENhbGxiYWNrcy50YWtlKGNhbGxiYWNr
SUQpLT5wZXJmb3JtQ2FsbGJhY2soKTsKK30KKwordm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6
OnN0YXJ0T2JzZXJ2aW5nQ29va2llQ2hhbmdlcyhTZXNzaW9uSUQgc2Vzc2lvbklEKQogewogICAg
IHByb2Nlc3NQb29sKCktPnNlbmRUb05ldHdvcmtpbmdQcm9jZXNzUmVsYXVuY2hpbmdJZk5lY2Vz
c2FyeShNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6U3RhcnRPYnNlcnZpbmdDb29raWVDaGFu
Z2VzKHNlc3Npb25JRCkpOwogfQogCi12b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6c3RvcE9i
c2VydmluZ0Nvb2tpZUNoYW5nZXMoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCkKK3ZvaWQg
V2ViQ29va2llTWFuYWdlclByb3h5OjpzdG9wT2JzZXJ2aW5nQ29va2llQ2hhbmdlcyhTZXNzaW9u
SUQgc2Vzc2lvbklEKQogewogICAgIHByb2Nlc3NQb29sKCktPnNlbmRUb05ldHdvcmtpbmdQcm9j
ZXNzUmVsYXVuY2hpbmdJZk5lY2Vzc2FyeShNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6U3Rv
cE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMoc2Vzc2lvbklEKSk7CiB9CiAKLXZvaWQgV2ViQ29va2ll
TWFuYWdlclByb3h5OjpzZXRDb29raWVPYnNlcnZlckNhbGxiYWNrKFdlYkNvcmU6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4mJiBjYWxsYmFjaykKK3ZvaWQgV2Vi
Q29va2llTWFuYWdlclByb3h5OjpzZXRDb29raWVPYnNlcnZlckNhbGxiYWNrKFNlc3Npb25JRCBz
ZXNzaW9uSUQsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4mJiBjYWxsYmFjaykKIHsKICAgICBpZiAo
Y2FsbGJhY2spCiAgICAgICAgIG1fY29va2llT2JzZXJ2ZXJzLnNldChzZXNzaW9uSUQsIFdURk1v
dmUoY2FsbGJhY2spKTsKQEAgLTE1MiwxNCArMjE0LDE0IEBAIHZvaWQgV2ViQ29va2llTWFuYWdl
clByb3h5OjpzZXRDb29raWVPYnNlcnZlckNhbGxiYWNrKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNz
aW9uCiAgICAgICAgIG1fY29va2llT2JzZXJ2ZXJzLnJlbW92ZShzZXNzaW9uSUQpOwogfQogCi12
b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6Y29va2llc0RpZENoYW5nZShXZWJDb3JlOjpTZXNz
aW9uSUQgc2Vzc2lvbklEKQordm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmNvb2tpZXNEaWRD
aGFuZ2UoU2Vzc2lvbklEIHNlc3Npb25JRCkKIHsKICAgICBtX2NsaWVudC5jb29raWVzRGlkQ2hh
bmdlKHRoaXMpOwogICAgIGlmIChhdXRvIGNhbGxiYWNrID0gbV9jb29raWVPYnNlcnZlcnMuZ2V0
KHNlc3Npb25JRCkpCiAgICAgICAgIGNhbGxiYWNrKCk7CiB9CiAKLXZvaWQgV2ViQ29va2llTWFu
YWdlclByb3h5OjpzZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KEhUVFBDb29raWVBY2NlcHRQb2xp
Y3kgcG9saWN5KQordm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OnNldEhUVFBDb29raWVBY2Nl
cHRQb2xpY3koU2Vzc2lvbklELCBIVFRQQ29va2llQWNjZXB0UG9saWN5IHBvbGljeSwgRnVuY3Rp
b248dm9pZCAoQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKICNp
ZiBQTEFURk9STShDT0NPQSkKICAgICBpZiAoIXByb2Nlc3NQb29sKCktPmlzVXNpbmdUZXN0aW5n
TmV0d29ya1Nlc3Npb24oKSkKQEAgLTE3MiwxMSArMjM0LDE2IEBAIHZvaWQgV2ViQ29va2llTWFu
YWdlclByb3h5OjpzZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KEhUVFBDb29raWVBY2NlcHRQb2xp
Y3kgcG9sCiAgICAgLy8gVGhlIHBvbGljeSBpcyBub3Qgc2VudCB0byBuZXdseSBjcmVhdGVkIHBy
b2Nlc3NlcyAob25seSBTb3VwIGRvZXMgdGhhdCB2aWEgc2V0SW5pdGlhbEhUVFBDb29raWVBY2Nl
cHRQb2xpY3koKSkuIFRoaXMgaXMgbm90IGEgc2VyaW91cyBwcm9ibGVtLCBiZWNhdXNlOgogICAg
IC8vIC0gV2hlbiB0ZXN0aW5nLCB3ZSBvbmx5IGhhdmUgb25lIFdlYlByb2Nlc3MgYW5kIG9uZSBO
ZXR3b3JrUHJvY2VzcywgYW5kIFdlYktpdFRlc3RSdW5uZXIgbmV2ZXIgcmVzdGFydHMgdGhlbTsK
ICAgICAvLyAtIFdoZW4gbm90IHRlc3RpbmcsIENvY29hIGhhcyB0aGUgcG9saWN5IHBlcnNpc3Rl
ZCwgYW5kIHRodXMgbmV3IHByb2Nlc3NlcyB1c2UgaXQgKGV2ZW4gZm9yIGVwaGVtZXJhbCBzZXNz
aW9ucykuCi0gICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpX
ZWJDb29raWVNYW5hZ2VyOjpTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHBvbGljeSkpOwotICAg
IHByb2Nlc3NQb29sKCktPnNlbmRUb05ldHdvcmtpbmdQcm9jZXNzKE1lc3NhZ2VzOjpXZWJDb29r
aWVNYW5hZ2VyOjpTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHBvbGljeSkpOworICAgIHByb2Nl
c3NQb29sKCktPnNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6
U2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShwb2xpY3ksIDApKTsKKworICAgIGF1dG8gY2FsbGJh
Y2sgPSBWb2lkQ2FsbGJhY2s6OmNyZWF0ZShXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pKTsKKyAg
ICB1aW50NjRfdCBjYWxsYmFja0lEID0gY2FsbGJhY2stPmNhbGxiYWNrSUQoKTsKKyAgICBtX3Zv
aWRDYWxsYmFja3Muc2V0KGNhbGxiYWNrSUQsIFdURk1vdmUoY2FsbGJhY2spKTsKKworICAgIHBy
b2Nlc3NQb29sKCktPnNlbmRUb05ldHdvcmtpbmdQcm9jZXNzKE1lc3NhZ2VzOjpXZWJDb29raWVN
YW5hZ2VyOjpTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHBvbGljeSwgY2FsbGJhY2tJRCkpOwog
fQogCi12b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6Z2V0SFRUUENvb2tpZUFjY2VwdFBvbGlj
eShGdW5jdGlvbjx2b2lkIChIVFRQQ29va2llQWNjZXB0UG9saWN5LCBDYWxsYmFja0Jhc2U6OkVy
cm9yKT4gY2FsbGJhY2tGdW5jdGlvbikKK3ZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpnZXRI
VFRQQ29va2llQWNjZXB0UG9saWN5KFNlc3Npb25JRCwgRnVuY3Rpb248dm9pZCAoSFRUUENvb2tp
ZUFjY2VwdFBvbGljeSwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikK
IHsKICAgICBhdXRvIGNhbGxiYWNrID0gSFRUUENvb2tpZUFjY2VwdFBvbGljeUNhbGxiYWNrOjpj
cmVhdGUoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSk7CiAKQEAgLTE4OCwxMyArMjU1LDEyIEBA
IHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpnZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KEZ1
bmN0aW9uPHZvaWQgKEhUVFBDb29raWVBCiAKIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5Ojpk
aWRHZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHVpbnQzMl90IHBvbGljeSwgdWludDY0X3QgY2Fs
bGJhY2tJRCkKIHsKLSAgICBSZWZQdHI8SFRUUENvb2tpZUFjY2VwdFBvbGljeUNhbGxiYWNrPiBj
YWxsYmFjayA9IG1faHR0cENvb2tpZUFjY2VwdFBvbGljeUNhbGxiYWNrcy50YWtlKGNhbGxiYWNr
SUQpOwotICAgIGlmICghY2FsbGJhY2spIHsKLSAgICAgICAgLy8gRklYTUU6IExvZyBlcnJvciBv
ciBhc3NlcnQuCi0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgbV9odHRwQ29va2llQWNjZXB0
UG9saWN5Q2FsbGJhY2tzLnRha2UoY2FsbGJhY2tJRCktPnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1
cm5WYWx1ZShwb2xpY3kpOworfQogCi0gICAgY2FsbGJhY2stPnBlcmZvcm1DYWxsYmFja1dpdGhS
ZXR1cm5WYWx1ZShwb2xpY3kpOwordm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRpZFNldEhU
VFBDb29raWVBY2NlcHRQb2xpY3kodWludDY0X3QgY2FsbGJhY2tJRCkKK3sKKyAgICBtX3ZvaWRD
YWxsYmFja3MudGFrZShjYWxsYmFja0lEKS0+cGVyZm9ybUNhbGxiYWNrKCk7CiB9CiAKIHZvaWQg
V2ViQ29va2llTWFuYWdlclByb3h5OjpzZXRDb29raWVTdG9yYWdlUGFydGl0aW9uaW5nRW5hYmxl
ZChib29sIGVuYWJsZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
Q29va2llTWFuYWdlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29va2ll
TWFuYWdlclByb3h5LmgKaW5kZXggY2Y3OThkN2NjY2M3MTU0MTU5YjlkNjEyZGZmZGJiODZhZWQx
ZmU3MS4uZmRmODkxZTE1ODlhYzBkZDcyOTZmOTNhN2Y0ZjdmYzc1ZmUyOTFmMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkuaApAQCAtNTUs
NiArNTUsNyBAQCBjbGFzcyBXZWJQcm9jZXNzUHJveHk7CiAKIHR5cGVkZWYgR2VuZXJpY0NhbGxi
YWNrPEFQSTo6QXJyYXkqPiBBcnJheUNhbGxiYWNrOwogdHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8
SFRUUENvb2tpZUFjY2VwdFBvbGljeT4gSFRUUENvb2tpZUFjY2VwdFBvbGljeUNhbGxiYWNrOwor
dHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8Y29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mPiBH
ZXRDb29raWVzQ2FsbGJhY2s7CiAKIGNsYXNzIFdlYkNvb2tpZU1hbmFnZXJQcm94eSA6IHB1Ymxp
YyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OkNvb2tpZU1hbmFnZXI+LCBwdWJs
aWMgV2ViQ29udGV4dFN1cHBsZW1lbnQsIHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgewog
cHVibGljOgpAQCAtNjYsMTQgKzY3LDIwIEBAIHB1YmxpYzoKICAgICB2b2lkIGluaXRpYWxpemVD
bGllbnQoY29uc3QgV0tDb29raWVNYW5hZ2VyQ2xpZW50QmFzZSopOwogICAgIAogICAgIHZvaWQg
Z2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklELCBGdW5jdGlvbjx2b2lk
IChBUEk6OkFycmF5KiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOworICAgIHZvaWQgZGVsZXRl
Q29va2llKFdlYkNvcmU6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6Q29va2llJiwgRnVuY3Rp
b248dm9pZCAoQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwogICAgIHZvaWQgZGVsZXRlQ29va2ll
c0Zvckhvc3RuYW1lKFdlYkNvcmU6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBob3N0bmFtZSk7
CiAgICAgdm9pZCBkZWxldGVBbGxDb29raWVzKFdlYkNvcmU6OlNlc3Npb25JRCk7Ci0gICAgdm9p
ZCBkZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZShXZWJDb3JlOjpTZXNzaW9uSUQsIHN0ZDo6
Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQpOworICAgIHZvaWQgZGVsZXRlQWxsQ29v
a2llc01vZGlmaWVkU2luY2UoV2ViQ29yZTo6U2Vzc2lvbklELCBzdGQ6OmNocm9ubzo6c3lzdGVt
X2Nsb2NrOjp0aW1lX3BvaW50LCBGdW5jdGlvbjx2b2lkIChDYWxsYmFja0Jhc2U6OkVycm9yKT4m
Jik7CiAKLSAgICB2b2lkIHNldENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklELCBjb25zdCBWZWN0
b3I8V2ViQ29yZTo6Q29va2llPiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFdlYkNvcmU6
OlVSTCYgbWFpbkRvY3VtZW50VVJMKTsKKyAgICB2b2lkIHNldENvb2tpZShXZWJDb3JlOjpTZXNz
aW9uSUQsIGNvbnN0IFdlYkNvcmU6OkNvb2tpZSYsIEZ1bmN0aW9uPHZvaWQgKENhbGxiYWNrQmFz
ZTo6RXJyb3IpPiYmKTsKKyAgICB2b2lkIHNldENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklELCBj
b25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0
IFdlYkNvcmU6OlVSTCYgbWFpbkRvY3VtZW50VVJMLCBGdW5jdGlvbjx2b2lkIChDYWxsYmFja0Jh
c2U6OkVycm9yKT4mJik7CisKKyAgICB2b2lkIGdldEFsbENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lv
bklELCBGdW5jdGlvbjx2b2lkIChjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYsIENhbGxi
YWNrQmFzZTo6RXJyb3IpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICB2b2lkIGdldENvb2tp
ZXMoV2ViQ29yZTo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpVUkwmLCBGdW5jdGlvbjx2b2lk
IChjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKTsKKworICAgIHZvaWQgc2V0SFRUUENvb2tpZUFjY2VwdFBvbGlj
eShXZWJDb3JlOjpTZXNzaW9uSUQsIEhUVFBDb29raWVBY2NlcHRQb2xpY3ksIEZ1bmN0aW9uPHZv
aWQgKENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKKyAgICB2b2lkIGdldEhUVFBDb29raWVBY2Nl
cHRQb2xpY3koV2ViQ29yZTo6U2Vzc2lvbklELCBGdW5jdGlvbjx2b2lkIChIVFRQQ29va2llQWNj
ZXB0UG9saWN5LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CiAKLSAgICB2b2lkIHNldEhUVFBD
b29raWVBY2NlcHRQb2xpY3koSFRUUENvb2tpZUFjY2VwdFBvbGljeSk7Ci0gICAgdm9pZCBnZXRI
VFRQQ29va2llQWNjZXB0UG9saWN5KEZ1bmN0aW9uPHZvaWQgKEhUVFBDb29raWVBY2NlcHRQb2xp
Y3ksIENhbGxiYWNrQmFzZTo6RXJyb3IpPik7CiAgICAgdm9pZCBzZXRDb29raWVTdG9yYWdlUGFy
dGl0aW9uaW5nRW5hYmxlZChib29sKTsKIAogICAgIHZvaWQgc3RhcnRPYnNlcnZpbmdDb29raWVD
aGFuZ2VzKFdlYkNvcmU6OlNlc3Npb25JRCk7CkBAIC05NSw2ICsxMDIsMTEgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGRpZEdldEhvc3RuYW1lc1dpdGhDb29raWVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiwgdWludDY0X3QgY2FsbGJhY2tJRCk7CiAgICAgdm9pZCBkaWRHZXRIVFRQQ29va2llQWNjZXB0
UG9saWN5KHVpbnQzMl90IHBvbGljeSwgdWludDY0X3QgY2FsbGJhY2tJRCk7CiAKKyAgICB2b2lk
IGRpZFNldEhUVFBDb29raWVBY2NlcHRQb2xpY3kodWludDY0X3QgY2FsbGJhY2tJRCk7CisgICAg
dm9pZCBkaWRTZXRDb29raWVzKHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAgIHZvaWQgZGlkR2V0
Q29va2llcyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYsIHVpbnQ2NF90IGNhbGxiYWNr
SUQpOworICAgIHZvaWQgZGlkRGVsZXRlQ29va2llcyh1aW50NjRfdCBjYWxsYmFja0lEKTsKKwog
ICAgIHZvaWQgY29va2llc0RpZENoYW5nZShXZWJDb3JlOjpTZXNzaW9uSUQpOwogCiAgICAgLy8g
V2ViQ29udGV4dFN1cHBsZW1lbnQKQEAgLTExMyw2ICsxMjUsOCBAQCBwcml2YXRlOgogCiAgICAg
SGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPEFycmF5Q2FsbGJhY2s+PiBtX2FycmF5Q2FsbGJhY2tz
OwogICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxIVFRQQ29va2llQWNjZXB0UG9saWN5Q2Fs
bGJhY2s+PiBtX2h0dHBDb29raWVBY2NlcHRQb2xpY3lDYWxsYmFja3M7CisgICAgSGFzaE1hcDx1
aW50NjRfdCwgUmVmUHRyPFZvaWRDYWxsYmFjaz4+IG1fdm9pZENhbGxiYWNrczsKKyAgICBIYXNo
TWFwPHVpbnQ2NF90LCBSZWZQdHI8R2V0Q29va2llc0NhbGxiYWNrPj4gbV9nZXRDb29raWVzQ2Fs
bGJhY2tzOwogCiAgICAgSGFzaE1hcDxXZWJDb3JlOjpTZXNzaW9uSUQsIHN0ZDo6ZnVuY3Rpb248
dm9pZCAoKT4+IG1fY29va2llT2JzZXJ2ZXJzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgppbmRleCAx
MmUwMDkwMThiNzRkYzVlOWE2ZDYwZGI2OGQyYWI0NGUyZjFhNDNmLi5kY2NiY2YyOWUwNzY2OTc0
Yjc0MzU4NzIxMmIxMmMzYmY0Y2JjMWUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KQEAgLTIzLDYg
KzIzLDExIEBACiBtZXNzYWdlcyAtPiBXZWJDb29raWVNYW5hZ2VyUHJveHkgewogICAgIERpZEdl
dEhvc3RuYW1lc1dpdGhDb29raWVzKFZlY3RvcjxTdHJpbmc+IGhvc3RuYW1lcywgdWludDY0X3Qg
Y2FsbGJhY2tJRCk7CiAgICAgRGlkR2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSh1aW50MzJfdCBw
b2xpY3ksIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwotICAgIAorCisgICAgRGlkU2V0SFRUUENvb2tp
ZUFjY2VwdFBvbGljeSh1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICBEaWREZWxldGVDb29raWVz
KHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAgIERpZFNldENvb2tpZXModWludDY0X3QgY2FsbGJh
Y2tJRCk7CisgICAgRGlkR2V0Q29va2llcyhWZWN0b3I8V2ViQ29yZTo6Q29va2llPiBjb29raWVz
LCB1aW50NjRfdCBjYWxsYmFja0lEKTsKKwogICAgIENvb2tpZXNEaWRDaGFuZ2UoV2ViQ29yZTo6
U2Vzc2lvbklEIHNlc3Npb25JRCkKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJGcmFtZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRnJhbWVQ
cm94eS5oCmluZGV4IDZiZjk5Mzg2MmI3ZWFjYTUxYTc1YjU5MDBmYTNmNzQxNjc5YmQ1ZmUuLjU1
YjViNjdlMGIyZjk1Yjk3MjI0NWRlNWM4ZGNjYTc4YjhkNzE2ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIldl
YkZyYW1lTGlzdGVuZXJQcm94eS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVMb2FkZXJUeXBl
cy5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+
CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
b29sLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5k
ZXggZjY5NjIzMWJhMDU5ODYxZTE4ZmVmYzRhYjZmYmY4MjMxMzY5MWU3Ny4uYWFjNmJhNWIzYzE1
MjE4Mjg3YjlkMzU4MDY4NTdmNWQ5ZDA1OWJlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiQVBJQXV0
b21hdGlvbkNsaWVudC5oIgogI2luY2x1ZGUgIkFQSUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVu
dC5oIgogI2luY2x1ZGUgIkFQSURvd25sb2FkQ2xpZW50LmgiCisjaW5jbHVkZSAiQVBJSFRUUENv
b2tpZVN0b3JhZ2UuaCIKICNpbmNsdWRlICJBUElMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudC5o
IgogI2luY2x1ZGUgIkFQSVBhZ2VDb25maWd1cmF0aW9uLmgiCiAjaW5jbHVkZSAiQVBJUHJvY2Vz
c1Bvb2xDb25maWd1cmF0aW9uLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Bvb2wuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5oCmluZGV4IDg4NWFkM2NlYmIzNjE3OWQxZDZkY2I2NzVlYzViODEzOWRiNjVmNjkuLmUw
ZTE5MjZkNTNlNDE4MjgyYzJlYjFjYmIwZDUxYzUxY2UwYmU1NTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCkBAIC03Niw2ICs3Niw3IEBAIG5hbWVzcGFjZSBB
UEkgewogY2xhc3MgQXV0b21hdGlvbkNsaWVudDsKIGNsYXNzIEN1c3RvbVByb3RvY29sTWFuYWdl
ckNsaWVudDsKIGNsYXNzIERvd25sb2FkQ2xpZW50OworY2xhc3MgSFRUUENvb2tpZVN0b3JhZ2U7
CiBjbGFzcyBMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudDsKIGNsYXNzIFBhZ2VDb25maWd1cmF0
aW9uOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRh
L1dlYnNpdGVEYXRhU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYnNpdGVE
YXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCmluZGV4IDdiYWFmODU0NTQyZDY3OGFlZmVhZjRmMjU4
YWQ3ZjE0Y2EyMDUxZWMuLmNmNzdlZWMxNDRkMmE2YTI1YTY3NGRiOGY5MDZhMzFlY2QzYWMxMmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRl
RGF0YVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEv
V2Vic2l0ZURhdGFTdG9yZS5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJBUElXZWJz
aXRlRGF0YVJlY29yZC5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzTWVzc2FnZXMuaCIKICNp
bmNsdWRlICJTdG9yYWdlTWFuYWdlci5oIgorI2luY2x1ZGUgIldlYkNvb2tpZU1hbmFnZXJQcm94
eS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nl
c3NQb29sLmgiCiAjaW5jbHVkZSAiV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgiCkBA
IC0xMDUsNiArMTA2LDI3IEBAIFdlYnNpdGVEYXRhU3RvcmU6On5XZWJzaXRlRGF0YVN0b3JlKCkK
ICAgICB9CiB9CiAKK1JlZjxXZWJQcm9jZXNzUG9vbD4gV2Vic2l0ZURhdGFTdG9yZTo6cHJvY2Vz
c1Bvb2xGb3JDb29raWVTdG9yYWdlT3BlcmF0aW9ucygpCit7CisgICAgLy8gT3VyIGNvbmNlcHRz
IG9mIFdlYlByb2Nlc3MsIFdlYlByb2Nlc3NQb29sLCBXZWJzaXRlRGF0YVN0b3JlLCBhbmQgU2Vz
c2lvbklEcyBoYXZlIGFsbCBzdGFydGVkIHRvIG92ZXJsYXAKKyAgICAvLyB3aXRob3V0IGNsZWFy
IGRpdmlzaW9ucyBvZiByZXNwb25zaWJpbGl0aWVzLgorICAgIC8vIEluIHByYWN0aWNlLCBtdWx0
aXBsZSBXZWJQcm9jZXNzUG9vbHMgY2FuIGNvbnRhaW4gInRoZSBzYW1lIHNlc3Npb24iLCBlc3Bl
Y2lhbGx5IHNpbmNlIHRoZXJlIGlzIGN1cnJlbnRseQorICAgIC8vIG9ubHkgYSBzaW5nbGUgZGVm
YXVsdCBnbG9iYWwgU2Vzc2lvbklELgorICAgIC8vCisgICAgLy8gVGhpcyBtZWFucyB0aGF0IG11
bHRpcGxlIE5ldHdvcmtQcm9jZXNzZXMgY2FuIGJlIHVzaW5nIHRoZSBzYW1lIHNlc3Npb24sIHdo
aWNoIG1lYW5zIHRoYXQgbXVsdGlwbGUKKyAgICAvLyBOZXR3b3JrUHJvY2Vzc2VzIGNhbiBiZSBy
ZWZlcnJpbmcgdG8gdGhlIHNhbWUgcGxhdGZvcm0gY29va2llIHN0b3JhZ2UuCisgICAgLy8KKyAg
ICAvLyBXaGlsZSB0aGlzIG1heSBjYXVzZSBjb21wbGljYXRpb25zIHdpdGggZnV0dXJlIEFQSXMg
aXQgaXMgYWN0dWFsbHkgZmluZSBmb3IgaW1wbGVtZW50aW5nIHRoZSBXS0hUVFBDb29raWVTdG9y
YWdlIEFQSQorICAgIC8vIGJlY2F1c2Ugd2Ugb25seSBuZWVkIG9uZSBOZXR3b3JrUHJvY2VzcyB0
byBzdWNjZXNzZnVsbHkgbWFrZSBhIHJlcXVlc3RlZCBwbGF0Zm9ybSBjb29raWUgc3RvcmFnZSBj
aGFuZ2UuCisgICAgLy8KKyAgICAvLyBGSVhNRTogV2UgbmVlZCB0byBzdGFydCB0byB1bnJhdmVs
IHRoaXMgbWVzcyBnb2luZyBmb3J3YXJkLgorCisgICAgYXV0byBwb29scyA9IHByb2Nlc3NQb29s
cygxKTsKKyAgICBBU1NFUlQoIXBvb2xzLmlzRW1wdHkoKSk7CisKKyAgICByZXR1cm4gKipwb29s
cy5iZWdpbigpOworfQorCiB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnJlc29sdmVEaXJlY3Rvcmll
c0lmTmVjZXNzYXJ5KCkKIHsKICAgICBpZiAobV9oYXNSZXNvbHZlZERpcmVjdG9yaWVzKQpAQCAt
MTEwOCw3ICsxMTMwLDcgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjp3ZWJQcm9jZXNzRGlkQ2xv
c2VDb25uZWN0aW9uKFdlYlByb2Nlc3NQcm94eSYgd2ViUHJvY2Vzc1AKICAgICAgICAgbV9zdG9y
YWdlTWFuYWdlci0+cHJvY2Vzc0RpZENsb3NlQ29ubmVjdGlvbih3ZWJQcm9jZXNzUHJveHksIGNv
bm5lY3Rpb24pOwogfQogCi1IYXNoU2V0PFJlZlB0cjxXZWJQcm9jZXNzUG9vbD4+IFdlYnNpdGVE
YXRhU3RvcmU6OnByb2Nlc3NQb29scygpIGNvbnN0CitIYXNoU2V0PFJlZlB0cjxXZWJQcm9jZXNz
UG9vbD4+IFdlYnNpdGVEYXRhU3RvcmU6OnByb2Nlc3NQb29scyhzaXplX3QgY291bnQpIGNvbnN0
CiB7CiAgICAgSGFzaFNldDxSZWZQdHI8V2ViUHJvY2Vzc1Bvb2w+PiBwcm9jZXNzUG9vbHM7CiAg
ICAgZm9yIChhdXRvJiBwcm9jZXNzIDogcHJvY2Vzc2VzKCkpCkBAIC0xMTIyLDExICsxMTQ0LDIw
IEBAIEhhc2hTZXQ8UmVmUHRyPFdlYlByb2Nlc3NQb29sPj4gV2Vic2l0ZURhdGFTdG9yZTo6cHJv
Y2Vzc1Bvb2xzKCkgY29uc3QKICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc1Bvb2xzLmFkZChw
cm9jZXNzUG9vbCk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIH0gZWxzZSBpZiAoJkFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVs
dERhdGFTdG9yZSgpLT53ZWJzaXRlRGF0YVN0b3JlKCkgPT0gdGhpcykgeworICAgICAgICAgICAg
ICAgIC8vIElmIGEgcHJvY2VzcyBwb29sIGRvZXNuJ3QgaGF2ZSBhbiBleHBsaWNpdCBkYXRhIHN0
b3JlIGFuZCB0aGlzIGlzIHRoZSBkZWZhdWx0IFdlYnNpdGVEYXRhU3RvcmUsCisgICAgICAgICAg
ICAgICAgLy8gYWRkIHRoYXQgcHJvY2VzcyBwb29sIHRvIHRoZSBzZXQuCisgICAgICAgICAgICAg
ICAgLy8gRklYTUU6IFRoaXMgYmVoYXZpb3IgaXMgd2VpcmQgYW5kIG5lY2Vzc2l0YXRlZCBieSB0
aGUgZmFjdCB0aGF0IHByb2Nlc3MgcG9vbHMgZG9uJ3QgYWx3YXlzCisgICAgICAgICAgICAgICAg
Ly8gaGF2ZSBhIGRhdGEgc3RvcmU7IFRoZXkgc2hvdWxkLgorICAgICAgICAgICAgICAgIHByb2Nl
c3NQb29scy5hZGQocHJvY2Vzc1Bvb2wpOwogICAgICAgICAgICAgfQorCisgICAgICAgICAgICBp
ZiAocHJvY2Vzc1Bvb2xzLnNpemUoKSA9PSBjb3VudCkKKyAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogICAgIH0KIAotICAgIGlmIChwcm9jZXNzUG9vbHMuaXNFbXB0eSgpKSB7Cisg
ICAgaWYgKHByb2Nlc3NQb29scy5pc0VtcHR5KCkgJiYgY291bnQpIHsKICAgICAgICAgYXV0byBw
cm9jZXNzUG9vbCA9IFdlYlByb2Nlc3NQb29sOjpjcmVhdGUoQVBJOjpQcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb246OmNyZWF0ZVdpdGhXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbihtX2NvbmZp
Z3VyYXRpb24pKTsKICAgICAgICAgcHJvY2Vzc1Bvb2xzLmFkZChwcm9jZXNzUG9vbC5wdHIoKSk7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRh
L1dlYnNpdGVEYXRhU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0
YS9XZWJzaXRlRGF0YVN0b3JlLmgKaW5kZXggOTc1YmFjOGQ4OWJiMWVjYzY1NjI2ZGQ0MDc0YWY5
Yzc2YWY4MzQ1Ny4uOGQxM2JjZTQ5ODI5YjNjYWRhYjA3Zjg0NWFiMjRiYmM5Mzg1ODQ3ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRh
U3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0
ZURhdGFTdG9yZS5oCkBAIC0xMDMsNiArMTAzLDggQEAgcHVibGljOgogCiAgICAgU3RvcmFnZU1h
bmFnZXIqIHN0b3JhZ2VNYW5hZ2VyKCkgeyByZXR1cm4gbV9zdG9yYWdlTWFuYWdlci5nZXQoKTsg
fQogCisgICAgUmVmPFdlYlByb2Nlc3NQb29sPiBwcm9jZXNzUG9vbEZvckNvb2tpZVN0b3JhZ2VP
cGVyYXRpb25zKCk7CisKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgV2Vic2l0ZURhdGFTdG9yZShX
ZWJDb3JlOjpTZXNzaW9uSUQpOwogICAgIGV4cGxpY2l0IFdlYnNpdGVEYXRhU3RvcmUoQ29uZmln
dXJhdGlvbik7CkBAIC0xMTksNyArMTIxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBsYXRmb3Jt
RGVzdHJveSgpOwogICAgIHN0YXRpYyB2b2lkIHBsYXRmb3JtUmVtb3ZlUmVjZW50U2VhcmNoZXMo
c3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCk7CiAKLSAgICBIYXNoU2V0PFJl
ZlB0cjxXZWJQcm9jZXNzUG9vbD4+IHByb2Nlc3NQb29scygpIGNvbnN0OworICAgIEhhc2hTZXQ8
UmVmUHRyPFdlYlByb2Nlc3NQb29sPj4gcHJvY2Vzc1Bvb2xzKHNpemVfdCBjb3VudCA9IHN0ZDo6
bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCkpIGNvbnN0OwogCiAjaWYgRU5BQkxFKE5FVFND
QVBFX1BMVUdJTl9BUEkpCiAgICAgVmVjdG9yPFBsdWdpbk1vZHVsZUluZm8+IHBsdWdpbnMoKSBj
b25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagppbmRleCA3ZTE4ODIyZjA0ZDE3NmFhODk5NGI0NjZhODA1NjY5YWRjYTkwMjkwLi45YzYz
ZjY4MzJmOTFhNTEzZDhjYjNhMzNlZjU3Y2FlYTUwODMxMWRjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMDYzLDYgKzEwNjMs
OSBAQAogCQk1MUQxMjQzNTFFNkRGNjUyMDAyQjI4MjAgLyogV0tVUkxTY2hlbWVIYW5kbGVyVGFz
ay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFEMTI0
MkYxRTZERERENzAwMkIyODIwIC8qIFdLVVJMU2NoZW1lSGFuZGxlclRhc2suaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CiAJCTUxRDEyNDM2MUU2REZCMzkw
MDJCMjgyMCAvKiBXS1VSTFNjaGVtZUhhbmRsZXJUYXNrLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFEMTI0MzAxRTZERERENzAwMkIyODIwIC8qIFdL
VVJMU2NoZW1lSGFuZGxlclRhc2subW0gKi87IH07CiAJCTUxRDEyNDNBMUU2RTBBQUIwMDJCMjgy
MCAvKiBBUElVUkxTY2hlbWVIYW5kbGVyVGFzay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUQxMjQzODFFNkRGREI5MDAyQjI4MjAgLyogQVBJVVJM
U2NoZW1lSGFuZGxlclRhc2suY3BwICovOyB9OworCQk1MUQxMjQ5MTFFNzRCRjNDMDAyQjI4MjAg
LyogQVBJSFRUUENvb2tpZVN0b3JhZ2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTFEMTI0ODIxRTczNEFDODAwMkIyODIwIC8qIEFQSUhUVFBDb29r
aWVTdG9yYWdlLmNwcCAqLzsgfTsKKwkJNTFEMTI0OTIxRTc0QkY0ODAwMkIyODIwIC8qIF9XS0hU
VFBDb29raWVTdG9yYWdlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTFEMTI0ODUxRTczNEFFMzAwMkIyODIwIC8qIF9XS0hUVFBDb29raWVTdG9yYWdl
Lm1tICovOyB9OworCQk1MUQxMjQ5OTFFNzYzQzAxMDAyQjI4MjAgLyogX1dLSFRUUENvb2tpZVN0
b3JhZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUx
RDEyNDg0MUU3MzRBRTMwMDJCMjgyMCAvKiBfV0tIVFRQQ29va2llU3RvcmFnZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxRDEzMDUzMTM4MkVB
QzAwMDM1MUVERCAvKiBTZWNJdGVtUmVxdWVzdERhdGEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFEMTMwNEYxMzgyRUFDMDAwMzUxRUREIC8qIFNl
Y0l0ZW1SZXF1ZXN0RGF0YS5jcHAgKi87IH07CiAJCTUxRDEzMDU0MTM4MkVBQzAwMDM1MUVERCAv
KiBTZWNJdGVtUmVxdWVzdERhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUxRDEzMDUwMTM4MkVBQzAwMDM1MUVERCAvKiBTZWNJdGVtUmVxdWVzdERh
dGEuaCAqLzsgfTsKIAkJNTFEMTMwNTUxMzgyRUFDMDAwMzUxRUREIC8qIFNlY0l0ZW1SZXNwb25z
ZURhdGEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTFEMTMwNTExMzgyRUFDMDAwMzUxRUREIC8qIFNlY0l0ZW1SZXNwb25zZURhdGEuY3BwICovOyB9
OwpAQCAtMzI4NSw2ICszMjg4LDExIEBACiAJCTUxRDEyNDM3MUU2REZEMkEwMDJCMjgyMCAvKiBX
S1VSTFNjaGVtZUhhbmRsZXJUYXNrSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV0tVUkxTY2hlbWVIYW5kbGVyVGFza0ludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTUxRDEyNDM4MUU2REZEQjkwMDJCMjgyMCAvKiBBUElVUkxTY2hlbWVI
YW5kbGVyVGFzay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBUElV
UkxTY2hlbWVIYW5kbGVyVGFzay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUx
RDEyNDM5MUU2REZEQjkwMDJCMjgyMCAvKiBBUElVUkxTY2hlbWVIYW5kbGVyVGFzay5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBUElVUkxTY2hlbWVIYW5kbGVyVGFzay5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MUQxMjQ4MjFFNzM0QUM4MDAyQjI4MjAgLyog
QVBJSFRUUENvb2tpZVN0b3JhZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gQVBJSFRUUENvb2tpZVN0b3JhZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk1MUQxMjQ4MzFFNzM0QUM4MDAyQjI4MjAgLyogQVBJSFRUUENvb2tpZVN0b3JhZ2UuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJSFRUUENvb2tpZVN0b3JhZ2UuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFEMTI0ODQxRTczNEFFMzAwMkIyODIwIC8q
IF9XS0hUVFBDb29raWVTdG9yYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IF9XS0hUVFBDb29raWVTdG9yYWdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUx
RDEyNDg1MUU3MzRBRTMwMDJCMjgyMCAvKiBfV0tIVFRQQ29va2llU3RvcmFnZS5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IF9XS0hUVFBDb29raWVTdG9yYWdlLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MUQxMjQ4NjFFNzM0QUUzMDAyQjI4MjAg
LyogX1dLSFRUUENvb2tpZVN0b3JhZ2VJbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBfV0tIVFRQQ29va2llU3RvcmFnZUludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTUxRDEzMDRGMTM4MkVBQzAwMDM1MUVERCAvKiBTZWNJdGVtUmVxdWVz
dERhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2VjSXRlbVJl
cXVlc3REYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFEMTMwNTAxMzgy
RUFDMDAwMzUxRUREIC8qIFNlY0l0ZW1SZXF1ZXN0RGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTZWNJdGVtUmVxdWVzdERhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNTFEMTMwNTExMzgyRUFDMDAwMzUxRUREIC8qIFNlY0l0ZW1SZXNwb25zZURhdGEu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2VjSXRlbVJlc3BvbnNl
RGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01NDc4LDYgKzU0ODYsOSBA
QAogCQkJCTJFN0E5NDQ5MUJCRDk1QzYwMDk0NTU0NyAvKiBfV0tGb2N1c2VkRWxlbWVudEluZm8u
aCAqLywKIAkJCQkzN0E2NEU1NjE4RjM4RjQ2MDBFQjMwRjEgLyogX1dLRm9ybUlucHV0U2Vzc2lv
bi5oICovLAogCQkJCUNENzhFMTE4MURCN0U1QUQwMDE0QTJERSAvKiBfV0tGdWxsc2NyZWVuRGVs
ZWdhdGUuaCAqLywKKwkJCQk1MUQxMjQ4NDFFNzM0QUUzMDAyQjI4MjAgLyogX1dLSFRUUENvb2tp
ZVN0b3JhZ2UuaCAqLywKKwkJCQk1MUQxMjQ4NTFFNzM0QUUzMDAyQjI4MjAgLyogX1dLSFRUUENv
b2tpZVN0b3JhZ2UubW0gKi8sCisJCQkJNTFEMTI0ODYxRTczNEFFMzAwMkIyODIwIC8qIF9XS0hU
VFBDb29raWVTdG9yYWdlSW50ZXJuYWwuaCAqLywKIAkJCQk1MTQzQjI1RTFERENERkQxMDAxNEZB
QzYgLyogX1dLSWNvbkxvYWRpbmdEZWxlZ2F0ZS5oICovLAogCQkJCTM3QTY0RTU0MThGMzhFM0Mw
MEVCMzBGMSAvKiBfV0tJbnB1dERlbGVnYXRlLmggKi8sCiAJCQkJMkQ3OTBBOUMxQUQ3MDUwRDAw
QUI5MEIzIC8qIF9XS0xheW91dE1vZGUuaCAqLywKQEAgLTY3MzIsNiArNjc0Myw4IEBACiAJCQkJ
MkRBQkE3NzUxQTgyQjQyMTAwRUYwRjFBIC8qIEFQSUhpc3RvcnlDbGllbnQuaCAqLywKIAkJCQk5
M0E4OEI0MjFCQzg4MjhDMDBBQkE1QzIgLyogQVBJSGl0VGVzdFJlc3VsdC5jcHAgKi8sCiAJCQkJ
OTNBODhCNDMxQkM4ODI4QzAwQUJBNUMyIC8qIEFQSUhpdFRlc3RSZXN1bHQuaCAqLywKKwkJCQk1
MUQxMjQ4MjFFNzM0QUM4MDAyQjI4MjAgLyogQVBJSFRUUENvb2tpZVN0b3JhZ2UuY3BwICovLAor
CQkJCTUxRDEyNDgzMUU3MzRBQzgwMDJCMjgyMCAvKiBBUElIVFRQQ29va2llU3RvcmFnZS5oICov
LAogCQkJCTUxNDNCMjYxMURERDBEQTAwMDE0RkFDNiAvKiBBUElJY29uTG9hZGluZ0NsaWVudC5o
ICovLAogCQkJCTdDRTREMjA2MUE0Njc3NTcwMEM3RjE1MiAvKiBBUElMZWdhY3lDb250ZXh0SGlz
dG9yeUNsaWVudC5oICovLAogCQkJCTFBMjQ2NEYyMTg5MUU0NTEwMDIzNEM1QiAvKiBBUElMb2Fk
ZXJDbGllbnQuaCAqLywKQEAgLTg1MTUsNiArODUyOCw3IEBACiAJCQkJNTE0MTI5OTQxQzY0MjhC
QjAwNTlFNzE0IC8qIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNTEwNTIzNzQxQzczRDM4QjAwNzk5M0NCIC8qIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlck1l
c3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0NGNkFCRDEyQzkxRUY5MDA4RjlDMzUgLyog
V2ViSW1hZ2UuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxRDEyNDk5MUU3NjNDMDEwMDJCMjgyMCAv
KiBfV0tIVFRQQ29va2llU3RvcmFnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUM4RTI4MjAxMjc1
RDE1NDAwQkM3QkQwIC8qIFdlYkluc3BlY3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMwMzJE
ODIxMEY0Mzc4RDAwNThDMTVBIC8qIFdlYkluc3BlY3RvckNsaWVudC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQTU1QkE4MzUxQkEzRTcwQTAwN0NEMzNEIC8qIFdlYkluc3BlY3RvckZyb250ZW5kQVBJ
RGlzcGF0Y2hlci5oIGluIEhlYWRlcnMgKi8sCkBAIC05NzY3LDYgKzk3ODEsNyBAQAogCQkJCTFB
NkZCQTJCMTFFNjg2MjcwMERCMTM3MSAvKiBOZXRzY2FwZUJyb3dzZXJGdW5jcy5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkxQTZGQkQyOTExRTY5QkMyMDBEQjEzNzEgLyogTmV0c2NhcGVQbHVnaW4u
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFFNUI3RkIxMUU3QUVEMjAwQkE2NzY3IC8qIE5ldHNj
YXBlUGx1Z2luTWFjLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJNTFEMTI0OTIxRTc0QkY0ODAwMkIy
ODIwIC8qIF9XS0hUVFBDb29raWVTdG9yYWdlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE0QTlD
NTUxMkI4MTZDRjAwOEZFOTg0IC8qIE5ldHNjYXBlUGx1Z2luTW9kdWxlLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTgzOUEyRjMxMUUyMDY3NDUwMDM5MDU3RSAvKiBIaWdoUGVyZm9ybWFuY2VHcmFw
aGljc1VzYWdlU2FtcGxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTRBOUM5QTEyQjgyMUNE
MDA4RkU5ODQgLyogTmV0c2NhcGVQbHVnaW5Nb2R1bGVNYWMubW0gaW4gU291cmNlcyAqLywKQEAg
LTk3ODUsNiArOTgwMCw3IEBACiAJCQkJODMxRUVCQkUxQkQ4NUM0MzAwQkI2NEMzIC8qIE5ldHdv
cmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4MzJBRTI1MzFC
RTJFOENEMDBGQUFFMTAgLyogTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdlci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk4M0JEQ0NCOTFBQzVGREI2MDAzRjY0NDEgLyogTmV0d29ya0Nh
Y2hlU3RhdGlzdGljcy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MUQxMjQ5MTFFNzRCRjNDMDAy
QjI4MjAgLyogQVBJSFRUUENvb2tpZVN0b3JhZ2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTQ0
MzZFRDAxQTBEMDQwQjAwRUFEMjA0IC8qIE5ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJODMxMDQyOEMxQkQ2QjY2RjAwQTcxNUU0IC8qIE5ldHdvcmtDYWNoZVN1YnJl
c291cmNlc0VudHJ5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUzMDI1ODNEMURDQkJEMjIwMERB
ODlDMiAvKiBOZXR3b3JrQ2FwdHVyZUV2ZW50LmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIuY3Bw
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIuY3Bw
CmluZGV4IDllMjFmNzhjY2RiYjE4MjE3OTQyNTUzZjlmZTBmMWRkNzA0MTMzODQuLjc1NDNhMjlk
OGJlYjhjZWEzOTI2NjIxNmE2MDA4YzU4NjIzNGVmMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5jcHAKQEAgLTcyLDIy
ICs3Miw2NCBAQCB2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFt
ZShTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbgogICAgICAgICBXZWJDb3JlOjpkZWxl
dGVDb29raWVzRm9ySG9zdG5hbWVzKCpzdG9yYWdlU2Vzc2lvbiwgeyBob3N0bmFtZSB9KTsKIH0K
IAorCiB2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmRlbGV0ZUFsbENvb2tpZXMoU2Vzc2lvbklEIHNl
c3Npb25JRCkKIHsKICAgICBpZiAoYXV0byogc3RvcmFnZVNlc3Npb24gPSBOZXR3b3JrU3RvcmFn
ZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCiAgICAgICAgIFdlYkNvcmU6OmRl
bGV0ZUFsbENvb2tpZXMoKnN0b3JhZ2VTZXNzaW9uKTsKIH0KIAotdm9pZCBXZWJDb29raWVNYW5h
Z2VyOjpkZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZShTZXNzaW9uSUQgc2Vzc2lvbklELCBz
dGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IHRpbWUpCit2b2lkIFdlYkNvb2tp
ZU1hbmFnZXI6OmRlbGV0ZUNvb2tpZShTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBDb29raWUm
IGNvb2tpZSwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3sKKyAgICBpZiAoYXV0byogc3RvcmFnZVNl
c3Npb24gPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkp
CisgICAgICAgIHN0b3JhZ2VTZXNzaW9uLT5kZWxldGVDb29raWUoY29va2llKTsKKworICAgIG1f
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlclByb3h5OjpEaWREZWxldGVD
b29raWVzKGNhbGxiYWNrSUQpLCAwKTsKK30KKwordm9pZCBXZWJDb29raWVNYW5hZ2VyOjpkZWxl
dGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZShTZXNzaW9uSUQgc2Vzc2lvbklELCBzdGQ6OmNocm9u
bzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IHRpbWUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiB7
CiAgICAgaWYgKGF1dG8qIHN0b3JhZ2VTZXNzaW9uID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpz
dG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQogICAgICAgICBXZWJDb3JlOjpkZWxldGVBbGxDb29r
aWVzTW9kaWZpZWRTaW5jZSgqc3RvcmFnZVNlc3Npb24sIHRpbWUpOworCisgICAgaWYgKGNhbGxi
YWNrSUQpCisgICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViQ29va2llTWFuYWdl
clByb3h5OjpEaWREZWxldGVDb29raWVzKGNhbGxiYWNrSUQpLCAwKTsKK30KKwordm9pZCBXZWJD
b29raWVNYW5hZ2VyOjpnZXRBbGxDb29raWVzKFNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90
IGNhbGxiYWNrSUQpCit7CisgICAgVmVjdG9yPENvb2tpZT4gY29va2llczsKKyAgICBpZiAoYXV0
byogc3RvcmFnZVNlc3Npb24gPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9u
KHNlc3Npb25JRCkpCisgICAgICAgIGNvb2tpZXMgPSBzdG9yYWdlU2Vzc2lvbi0+Z2V0QWxsQ29v
a2llcygpOworCisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2Vy
UHJveHk6OkRpZEdldENvb2tpZXMoY29va2llcywgY2FsbGJhY2tJRCksIDApOwogfQogCi12b2lk
IFdlYkNvb2tpZU1hbmFnZXI6OnNldENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgY29uc3QgVmVjdG9yPENvb2tpZT4mIGNvb2tpZXMsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBV
UkwmIG1haW5Eb2N1bWVudFVSTCkKK3ZvaWQgV2ViQ29va2llTWFuYWdlcjo6Z2V0Q29va2llcyhT
ZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIHVybCwgdWludDY0X3QgY2FsbGJhY2tJRCkK
K3sKKyAgICBWZWN0b3I8Q29va2llPiBjb29raWVzOworICAgIGlmIChhdXRvKiBzdG9yYWdlU2Vz
c2lvbiA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkK
KyAgICAgICAgY29va2llcyA9IHN0b3JhZ2VTZXNzaW9uLT5nZXRDb29raWVzKHVybCk7CisKKyAg
ICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6RGlkR2V0
Q29va2llcyhjb29raWVzLCBjYWxsYmFja0lEKSwgMCk7Cit9CisKK3ZvaWQgV2ViQ29va2llTWFu
YWdlcjo6c2V0Q29va2llKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IENvb2tp
ZSYgY29va2llLCB1aW50NjRfdCBjYWxsYmFja0lEKQoreworICAgIGlmIChhdXRvKiBzdG9yYWdl
U2Vzc2lvbiA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vzc2lvbklE
KSkKKyAgICAgICAgc3RvcmFnZVNlc3Npb24tPnNldENvb2tpZShjb29raWUpOworCisgICAgaWYg
KGNhbGxiYWNrSUQpCisgICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViQ29va2ll
TWFuYWdlclByb3h5OjpEaWRTZXRDb29raWVzKGNhbGxiYWNrSUQpLCAwKTsKK30KKwordm9pZCBX
ZWJDb29raWVNYW5hZ2VyOjpzZXRDb29raWVzKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IGNvbnN0IFZlY3RvcjxDb29raWU+JiBjb29raWVzLCBjb25zdCBVUkwmIHVybCwgY29uc3QgVVJM
JiBtYWluRG9jdW1lbnRVUkwsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiB7CiAgICAgaWYgKGF1dG8q
IHN0b3JhZ2VTZXNzaW9uID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihz
ZXNzaW9uSUQpKQogICAgICAgICBzdG9yYWdlU2Vzc2lvbi0+c2V0Q29va2llcyhjb29raWVzLCB1
cmwsIG1haW5Eb2N1bWVudFVSTCk7CisKKyAgICBpZiAoY2FsbGJhY2tJRCkKKyAgICAgICAgbV9w
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OkRpZFNldENvb2tp
ZXMoY2FsbGJhY2tJRCksIDApOwogfQogCiB2b2lkIFdlYkNvb2tpZU1hbmFnZXI6Om5vdGlmeUNv
b2tpZXNEaWRDaGFuZ2UoU2Vzc2lvbklEIHNlc3Npb25JRCkKQEAgLTExMSw5ICsxNTMsMTIgQEAg
dm9pZCBXZWJDb29raWVNYW5hZ2VyOjpzdG9wT2JzZXJ2aW5nQ29va2llQ2hhbmdlcyhTZXNzaW9u
SUQgc2Vzc2lvbklEKQogICAgICAgICBXZWJDb3JlOjpzdG9wT2JzZXJ2aW5nQ29va2llQ2hhbmdl
cygqc3RvcmFnZVNlc3Npb24pOwogfQogCi12b2lkIFdlYkNvb2tpZU1hbmFnZXI6OnNldEhUVFBD
b29raWVBY2NlcHRQb2xpY3koSFRUUENvb2tpZUFjY2VwdFBvbGljeSBwb2xpY3kpCit2b2lkIFdl
YkNvb2tpZU1hbmFnZXI6OnNldEhUVFBDb29raWVBY2NlcHRQb2xpY3koSFRUUENvb2tpZUFjY2Vw
dFBvbGljeSBwb2xpY3ksIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiB7CiAgICAgcGxhdGZvcm1TZXRI
VFRQQ29va2llQWNjZXB0UG9saWN5KHBvbGljeSk7CisKKyAgICBpZiAoY2FsbGJhY2tJRCkKKyAg
ICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OkRp
ZFNldEhUVFBDb29raWVBY2NlcHRQb2xpY3koY2FsbGJhY2tJRCksIDApOwogfQogCiB2b2lkIFdl
YkNvb2tpZU1hbmFnZXI6OmdldEhUVFBDb29raWVBY2NlcHRQb2xpY3kodWludDY0X3QgY2FsbGJh
Y2tJRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2llcy9XZWJD
b29raWVNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29v
a2llTWFuYWdlci5oCmluZGV4IGRiMjdkMjBhYWRkODdkODg1MzZkYTUwNzFlNTlmMzI4OTExNTE4
MDIuLjgxODc1ZGFmYjc1OGZjZDYzOTkwODUxZGJjZDM1MmVlNjQwNTU2MWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmgKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIuaApA
QCAtNTYsNyArNTYsOCBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgY29uc3QgY2hhciogc3VwcGxl
bWVudE5hbWUoKTsKIAotICAgIHZvaWQgc2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShIVFRQQ29v
a2llQWNjZXB0UG9saWN5KTsKKyAgICB2b2lkIHNldEhUVFBDb29raWVBY2NlcHRQb2xpY3koSFRU
UENvb2tpZUFjY2VwdFBvbGljeSwgdWludDY0X3QgY2FsbGJhY2tJRCk7CisKICNpZiBVU0UoU09V
UCkKICAgICB2b2lkIHNldENvb2tpZVBlcnNpc3RlbnRTdG9yYWdlKGNvbnN0IFN0cmluZyYgc3Rv
cmFnZVBhdGgsIHVpbnQzMl90IHN0b3JhZ2VUeXBlKTsKICNlbmRpZgpAQCAtNjgsMTEgKzY5LDE2
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24m
LCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZ2V0SG9zdG5hbWVzV2l0aENv
b2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklELCB1aW50NjRfdCBjYWxsYmFja0lEKTsKKworICAgIHZv
aWQgZGVsZXRlQ29va2llKFdlYkNvcmU6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6Q29va2ll
JiwgdWludDY0X3QgY2FsbGJhY2tJRCk7CiAgICAgdm9pZCBkZWxldGVDb29raWVzRm9ySG9zdG5h
bWUoV2ViQ29yZTo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIGRlbGV0ZUFs
bENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklEKTsKLSAgICB2b2lkIGRlbGV0ZUFsbENvb2tpZXNN
b2RpZmllZFNpbmNlKFdlYkNvcmU6OlNlc3Npb25JRCwgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9j
azo6dGltZV9wb2ludCk7CisgICAgdm9pZCBkZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZShX
ZWJDb3JlOjpTZXNzaW9uSUQsIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQs
IHVpbnQ2NF90IGNhbGxiYWNrSUQpOwogCi0gICAgdm9pZCBzZXRDb29raWVzKFdlYkNvcmU6OlNl
c3Npb25JRCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mLCBjb25zdCBXZWJDb3JlOjpV
UkwmLCBjb25zdCBXZWJDb3JlOjpVUkwmIG1haW5Eb2N1bWVudFVSTCk7CisgICAgdm9pZCBzZXRD
b29raWUoV2ViQ29yZTo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpDb29raWUmLCB1aW50NjRf
dCBjYWxsYmFja0lEKTsKKyAgICB2b2lkIHNldENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklELCBj
b25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0
IFdlYkNvcmU6OlVSTCYgbWFpbkRvY3VtZW50VVJMLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAg
ICB2b2lkIGdldEFsbENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklELCB1aW50NjRfdCBjYWxsYmFj
a0lEKTsKKyAgICB2b2lkIGdldENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklELCBjb25zdCBXZWJD
b3JlOjpVUkwmLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKIAogICAgIHZvaWQgcGxhdGZvcm1TZXRI
VFRQQ29va2llQWNjZXB0UG9saWN5KEhUVFBDb29raWVBY2NlcHRQb2xpY3kpOwogICAgIHZvaWQg
Z2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSh1aW50NjRfdCBjYWxsYmFja0lEKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLm1l
c3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1h
bmFnZXIubWVzc2FnZXMuaW4KaW5kZXggMDBlN2I2NWI3NDkwODI2YzViYjM5YmQ3MjZlOWMyZDNi
YTUzZjA1Ni4uMGE1ODU1NWVjNmE5Y2M0OGY5ZDhhOTQ3NWNhNjI0OGMzZWQ1YjM0NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIu
bWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNv
b2tpZU1hbmFnZXIubWVzc2FnZXMuaW4KQEAgLTI3LDExICsyNywxNSBAQAogICAgIHZvaWQgR2V0
SG9zdG5hbWVzV2l0aENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0
X3QgY2FsbGJhY2tJRCkKICAgICB2b2lkIERlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZShXZWJDb3Jl
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTdHJpbmcgaG9zdG5hbWUpCiAgICAgdm9pZCBEZWxldGVB
bGxDb29raWVzKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQpCi0gICAgdm9pZCBEZWxldGVB
bGxDb29raWVzTW9kaWZpZWRTaW5jZShXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBzdGQ6
OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IHRpbWUpCiAKLSAgICB2b2lkIFNldENv
b2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVmVjdG9yPFdlYkNvcmU6OkNvb2tp
ZT4gY29va2llcywgV2ViQ29yZTo6VVJMIHVybCwgV2ViQ29yZTo6VVJMIG1haW5Eb2N1bWVudFVS
TCk7CisgICAgdm9pZCBTZXRDb29raWUoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgc3Ry
dWN0IFdlYkNvcmU6OkNvb2tpZSBjb29raWUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCisgICAgdm9p
ZCBTZXRDb29raWVzKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFZlY3RvcjxXZWJDb3Jl
OjpDb29raWU+IGNvb2tpZXMsIFdlYkNvcmU6OlVSTCB1cmwsIFdlYkNvcmU6OlVSTCBtYWluRG9j
dW1lbnRVUkwsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCisgICAgdm9pZCBHZXRBbGxDb29raWVzKFdl
YkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCisgICAgdm9p
ZCBHZXRDb29raWVzKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlVSTCB1
cmwsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCisgICAgdm9pZCBEZWxldGVDb29raWUoV2ViQ29yZTo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgc3RydWN0IFdlYkNvcmU6OkNvb2tpZSBjb29raWUsIHVpbnQ2
NF90IGNhbGxiYWNrSUQpCisgICAgdm9pZCBEZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZShX
ZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0
aW1lX3BvaW50IHRpbWUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAKLSAgICB2b2lkIFNldEhUVFBD
b29raWVBY2NlcHRQb2xpY3kodWludDMyX3QgcG9saWN5KQorICAgIHZvaWQgU2V0SFRUUENvb2tp
ZUFjY2VwdFBvbGljeSh1aW50MzJfdCBwb2xpY3ksIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAgICAg
dm9pZCBHZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAgICAg
CiAgICAgdm9pZCBTdGFydE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMoV2ViQ29yZTo6U2Vzc2lvbklE
IHNlc3Npb25JRCkKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxv
ZwppbmRleCA4MGRhODIyOGRjYTc3ZTliOTM4NmQzOWViZTVjOGY1NDJjZjNjYjlkLi40Y2FkZTZi
MzAwODkxODZhYjFlMzk4NTMyMTAxNTJiYTJhNWJhMTUyIDEwMDY0NAotLS0gYS9Ub29scy9DaGFu
Z2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTctMDMtMTMg
IEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIFdLV2ViVmlldyBw
cm92aWRlcyBubyBhY2Nlc3MgdG8gY29va2llcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MDE5MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMTctMDMtMTEgIFNhaWQgQWJvdS1IYWxsYXdhICA8
c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KIAogICAgICAgICBFbmFibGUgYXN5bmMgaW1hZ2UgZGVj
b2RpbmcgZm9yIGxhcmdlIGltYWdlcwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA3NjAxZGJl
MDY5MmMwMDA4ZTZiN2RiYWEzZmEwMDE2MzQ1ZDIxMmY3Li4yZGYzNDU2MmI0OWJhNzJkMzgwMWJl
MWM2MDdkMDRhYzgzNmE1MGEyIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RX
ZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTUyLDYgKzE1
Miw3IEBACiAJCTUxQkNFRTRGMUM4NEY1M0IwMDQyQzgyRSAvKiBJbmRleGVkREJNdWx0aVByb2Nl
c3MtMi5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxQkNFRTREMUM4NEY1MkMwMDQyQzgyRSAvKiBJbmRleGVkREJNdWx0aVByb2Nlc3Mt
Mi5odG1sICovOyB9OwogCQk1MUNEMUM2QzFCMzhDRTQzMDAxNDJDQTUgLyogTW9kYWxBbGVydHMu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUNEMUM2
QTFCMzhDRTM2MDAxNDJDQTUgLyogTW9kYWxBbGVydHMubW0gKi87IH07CiAJCTUxQ0QxQzcyMUIz
OEQ0ODQwMDE0MkNBNSAvKiBtb2RhbC1hbGVydHMtaW4tbmV3LWFib3V0LWJsYW5rLXdpbmRvdy5o
dG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxQ0QxQzcxMUIzOEQ0ODQwMDE0MkNBNSAvKiBtb2RhbC1hbGVydHMtaW4tbmV3LWFib3V0LWJs
YW5rLXdpbmRvdy5odG1sICovOyB9OworCQk1MUQxMjQ5ODFFNzYzQjAyMDAyQjI4MjAgLyogV0tI
VFRQQ29va2llU3RvcmFnZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUxRDEyNDk3MUU3NjNBRjgwMDJCMjgyMCAvKiBXS0hUVFBDb29raWVTdG9yYWdl
Lm1tICovOyB9OwogCQk1MUU1QzcwMjE5MTlDM0IyMDBEOEIzRTEgLyogc2ltcGxlMi5odG1sIGlu
IENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRTc4
MDM2MTkxOUFGRjgwMDE4MjlBMiAvKiBzaW1wbGUyLmh0bWwgKi87IH07CiAJCTUxRTVDNzAzMTkx
OUMzQjIwMEQ4QjNFMSAvKiBzaW1wbGUzLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFFNzgwMzcxOTE5QUZGODAwMTgyOUEyIC8qIHNp
bXBsZTMuaHRtbCAqLzsgfTsKIAkJNTFFNkE4OTQxRDJGMUMwQTAwQzAwNEI2IC8qIExvY2FsU3Rv
cmFnZUNsZWFyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTFFNkE4OTIxRDJGMUJFQzAwQzAwNEI2IC8qIExvY2FsU3RvcmFnZUNsZWFyLm1tICovOyB9
OwpAQCAtMTA0OCw2ICsxMDQ5LDcgQEAKIAkJNTFDQjRBRDcxQjNBMDc5QzAwQzFCMUM2IC8qIE1v
ZGFsQWxlcnRzU1BJLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1v
ZGFsQWxlcnRzU1BJLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFDRDFDNkEx
QjM4Q0UzNjAwMTQyQ0E1IC8qIE1vZGFsQWxlcnRzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gTW9kYWxBbGVydHMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTUxQ0QxQzcxMUIzOEQ0ODQwMDE0MkNBNSAvKiBtb2RhbC1hbGVydHMtaW4tbmV3LWFi
b3V0LWJsYW5rLXdpbmRvdy5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gIm1vZGFsLWFsZXJ0cy1pbi1uZXctYWJv
dXQtYmxhbmstd2luZG93Lmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MUQx
MjQ5NzFFNzYzQUY4MDAyQjI4MjAgLyogV0tIVFRQQ29va2llU3RvcmFnZS5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLSFRUUENvb2tpZVN0b3JhZ2UubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxRTVDNzA0MTkxOUVBNUYwMEQ4QjNFMSAvKiBT
aG91bGRLZWVwQ3VycmVudEJhY2tGb3J3YXJkTGlzdEl0ZW1Jbkxpc3QuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2hvdWxkS2VlcEN1cnJlbnRCYWNrRm9yd2FyZExp
c3RJdGVtSW5MaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFFNkE4OTIx
RDJGMUJFQzAwQzAwNEI2IC8qIExvY2FsU3RvcmFnZUNsZWFyLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gTG9jYWxTdG9yYWdlQ2xlYXIubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTUxRTZBODk1MUQyRjFDNzcwMEMwMDRCNiAvKiBMb2NhbFN0b3Jh
Z2VDbGVhci5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gTG9jYWxTdG9yYWdlQ2xl
YXIuaHRtbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE2NDksNiArMTY1MSw3IEBA
CiAJCQkJNTEyMEM4M0MxRTY3NTA3OTAwMjVCMjUwIC8qIFdlYnNpdGVEYXRhU3RvcmVDdXN0b21Q
YXRocy5tbSAqLywKIAkJCQk1QzlFNTY4NDFERjkxNDNEMDBDOUVFMzMgLyogV2Vic2l0ZVBvbGlj
aWVzLm1tICovLAogCQkJCTFGODM1NzFBMUQzRkZCMEUwMEUzOTY3QiAvKiBXS0JhY2tGb3J3YXJk
TGlzdC5tbSAqLywKKwkJCQk1MUQxMjQ5NzFFNzYzQUY4MDAyQjI4MjAgLyogV0tIVFRQQ29va2ll
U3RvcmFnZS5tbSAqLywKIAkJCQkzNzVFMEUxNTFENjY2NzQ0MDBFRkVDMkMgLyogV0tOU051bWJl
ci5tbSAqLywKIAkJCQkzN0I0N0UyRTFENjRFN0NBMDA1RjRFRkYgLyogV0tPYmplY3QubW0gKi8s
CiAJCQkJMkQwMDA2NUQxQzFGNTg5NDAwODhFNkE3IC8qIFdLUERGVmlld1Jlc2l6ZUNyYXNoLm1t
ICovLApAQCAtMjcyOSw2ICsyNzMyLDcgQEAKIAkJCQk3Q0NFN0VGNDFBNDExQUU2MDA0NDdDNEMg
LyogRmluZE1hdGNoZXMubW0gaW4gU291cmNlcyAqLywKIAkJCQk3QzgzRTA0MDFEMEE2M0UzMDBG
RUJDRjMgLyogRmlyc3RSZXNwb25kZXJTY3JvbGxpbmdQb3NpdGlvbi5tbSBpbiBTb3VyY2VzICov
LAogCQkJCTdDODNFMEJDMUQwQTY1MDcwMEZFQkNGMyAvKiBGaXhlZExheW91dFNpemUubW0gaW4g
U291cmNlcyAqLywKKwkJCQk1MUQxMjQ5ODFFNzYzQjAyMDAyQjI4MjAgLyogV0tIVFRQQ29va2ll
U3RvcmFnZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RUY1MUE0MTFBRTYwMDQ0N0M0QyAv
KiBGb3JjZVJlcGFpbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzdCNDdFMzAxRDY0RTdDQTAw
NUY0RUZGIC8qIFdLT2JqZWN0Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFQzAxQTQxMUE3
RTAwNDQ3QzRDIC8qIEZyYWdtZW50TmF2aWdhdGlvbi5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvV0tIVFRQQ29va2ll
U3RvcmFnZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL1dLSFRU
UENvb2tpZVN0b3JhZ2UubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDI4YzM0MmJhYWYwZGE4NWNkNmRkOTkzMzEx
NjRlMjFkNmRhZDE4NgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0MkNvY29hL1dLSFRUUENvb2tpZVN0b3JhZ2UubW0KQEAgLTAsMCArMSwxMTcgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbXBvcnQgPFdlYktpdC9XS0Zv
dW5kYXRpb24uaD4KKworI2lmIFBMQVRGT1JNKE1BQykKKworI2ltcG9ydCAiUGxhdGZvcm1VdGls
aXRpZXMuaCIKKyNpbXBvcnQgPFdlYktpdC9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmg+Cisj
aW1wb3J0IDxXZWJLaXQvX1dLSFRUUENvb2tpZVN0b3JhZ2UuaD4KKyNpbXBvcnQgPHd0Zi9SZXRh
aW5QdHIuaD4KKworI2lmIFdLX0FQSV9FTkFCTEVECisKK3N0YXRpYyBib29sIGdvdEZsYWc7CisK
K1RFU1QoV2ViS2l0MiwgV0tIVFRQQ29va2llU3RvcmFnZSkKK3sKKyAgICBhdXRvIHdlYlZpZXcg
PSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwg
MCwgODAwLCA2MDApXSk7CisKKyAgICBhdXRvIHdpbmRvdyA9IGFkb3B0TlMoW1tOU1dpbmRvdyBh
bGxvY10gaW5pdFdpdGhDb250ZW50UmVjdDpbd2ViVmlldyBmcmFtZV0gc3R5bGVNYXNrOk5TQm9y
ZGVybGVzc1dpbmRvd01hc2sgYmFja2luZzpOU0JhY2tpbmdTdG9yZUJ1ZmZlcmVkIGRlZmVyOllF
U10pOworICAgIFtbd2luZG93IGNvbnRlbnRWaWV3XSBhZGRTdWJ2aWV3OndlYlZpZXcuZ2V0KCld
OworCisgICAgW3dlYlZpZXcgbG9hZEhUTUxTdHJpbmc6QCJPaCBoZWxsbyIgYmFzZVVSTDpbTlNV
UkwgVVJMV2l0aFN0cmluZzpAImh0dHA6Ly93ZWJraXQub3JnIl1dOworCisgICAgUmV0YWluUHRy
PF9XS0hUVFBDb29raWVTdG9yYWdlPiBjb29raWVTdG9yYWdlID0gW1dLV2Vic2l0ZURhdGFTdG9y
ZSBkZWZhdWx0RGF0YVN0b3JlXS5faHR0cENvb2tpZVN0b3JhZ2U7CisKKyAgICBOU0FycmF5PE5T
SFRUUENvb2tpZSAqPiAqY29va2llcyA9IG5pbDsKKyAgICBbY29va2llU3RvcmFnZSBmZXRjaENv
b2tpZXM6W2Nvb2tpZXNQdHIgPSAmY29va2llc10oTlNBcnJheTxOU0hUVFBDb29raWUgKj4gKm5z
Q29va2llcykgeworICAgICAgICAqY29va2llc1B0ciA9IFtuc0Nvb2tpZXMgcmV0YWluXTsKKyAg
ICAgICAgZ290RmxhZyA9IHRydWU7CisgICAgfV07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGls
OjpydW4oJmdvdEZsYWcpOworCisgICAgQVNTRVJUX0VRKGNvb2tpZXMuY291bnQsIDB1KTsKKyAg
ICBbY29va2llcyByZWxlYXNlXTsKKworICAgIGdvdEZsYWcgPSBmYWxzZTsKKworICAgIFJldGFp
blB0cjxOU0hUVFBDb29raWU+IGNvb2tpZTEgPSBbTlNIVFRQQ29va2llIGNvb2tpZVdpdGhQcm9w
ZXJ0aWVzOkB7CisgICAgICAgIE5TSFRUUENvb2tpZVBhdGg6IEAiLyIsCisgICAgICAgIE5TSFRU
UENvb2tpZU5hbWU6IEAiQ29va2llTmFtZSIsCisgICAgICAgIE5TSFRUUENvb2tpZVZhbHVlOiBA
IkNvb2tpZVZhbHVlIiwKKyAgICAgICAgTlNIVFRQQ29va2llRG9tYWluOiBAIi53d3cud2Via2l0
Lm9yZyIsCisgICAgICAgIE5TSFRUUENvb2tpZVNlY3VyZTogQCJUUlVFIiwKKyAgICAgICAgTlNI
VFRQQ29va2llRGlzY2FyZDogQCJUUlVFIiwKKyAgICAgICAgTlNIVFRQQ29va2llTWF4aW11bUFn
ZTogQCIxMDAwMCIsCisgICAgfV07CisKKyAgICBSZXRhaW5QdHI8TlNIVFRQQ29va2llPiBjb29r
aWUyID0gW05TSFRUUENvb2tpZSBjb29raWVXaXRoUHJvcGVydGllczpAeworICAgICAgICBOU0hU
VFBDb29raWVQYXRoOiBAIi9wYXRoIiwKKyAgICAgICAgTlNIVFRQQ29va2llTmFtZTogQCJPdGhl
ckNvb2tpZU5hbWUiLAorICAgICAgICBOU0hUVFBDb29raWVWYWx1ZTogQCJPdGhlckNvb2tpZVZh
bHVlIiwKKyAgICAgICAgTlNIVFRQQ29va2llRG9tYWluOiBAIi53d3cudzNjLm9yZyIsCisgICAg
ICAgIE5TSFRUUENvb2tpZU1heGltdW1BZ2U6IEAiMTAwMDAiLAorICAgIH1dOworCisgICAgW2Nv
b2tpZVN0b3JhZ2Ugc2V0Q29va2llOmNvb2tpZTEuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6bmls
XTsKKyAgICBbY29va2llU3RvcmFnZSBzZXRDb29raWU6Y29va2llMi5nZXQoKSBjb21wbGV0aW9u
SGFuZGxlcjpuaWxdOworCisgICAgW2Nvb2tpZVN0b3JhZ2UgZmV0Y2hDb29raWVzOltjb29raWVz
UHRyID0gJmNvb2tpZXNdKE5TQXJyYXk8TlNIVFRQQ29va2llICo+ICpuc0Nvb2tpZXMpIHsKKyAg
ICAgICAgKmNvb2tpZXNQdHIgPSBbbnNDb29raWVzIHJldGFpbl07CisgICAgICAgIGdvdEZsYWcg
PSB0cnVlOworICAgIH1dOworCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZnb3RGbGFn
KTsKKworICAgIEFTU0VSVF9FUShjb29raWVzLmNvdW50LCAydSk7CisKKyAgICBmb3IgKE5TSFRU
UENvb2tpZSAqY29va2llIDogY29va2llcykgeworICAgICAgICBpZiAoW2Nvb2tpZS5uYW1lIGlz
RXF1YWw6QCJDb29raWVOYW1lIl0pIHsKKyAgICAgICAgICAgIEFTU0VSVF9UUlVFKFtjb29raWUx
LmdldCgpLnBhdGggaXNFcXVhbFRvU3RyaW5nOmNvb2tpZS5wYXRoXSk7CisgICAgICAgICAgICBB
U1NFUlRfVFJVRShbY29va2llMS5nZXQoKS52YWx1ZSBpc0VxdWFsVG9TdHJpbmc6Y29va2llLnZh
bHVlXSk7CisgICAgICAgICAgICBBU1NFUlRfVFJVRShbY29va2llMS5nZXQoKS5kb21haW4gaXNF
cXVhbFRvU3RyaW5nOmNvb2tpZS5kb21haW5dKTsKKyAgICAgICAgICAgIEFTU0VSVF9UUlVFKGNv
b2tpZTEuZ2V0KCkuc2VjdXJlKTsKKyAgICAgICAgICAgIEFTU0VSVF9UUlVFKGNvb2tpZTEuZ2V0
KCkuc2Vzc2lvbk9ubHkpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgQVNTRVJUX1RS
VUUoW2Nvb2tpZTIuZ2V0KCkucGF0aCBpc0VxdWFsVG9TdHJpbmc6Y29va2llLnBhdGhdKTsKKyAg
ICAgICAgICAgIEFTU0VSVF9UUlVFKFtjb29raWUyLmdldCgpLnZhbHVlIGlzRXF1YWxUb1N0cmlu
Zzpjb29raWUudmFsdWVdKTsKKyAgICAgICAgICAgIEFTU0VSVF9UUlVFKFtjb29raWUyLmdldCgp
Lm5hbWUgaXNFcXVhbFRvU3RyaW5nOmNvb2tpZS5uYW1lXSk7CisgICAgICAgICAgICBBU1NFUlRf
VFJVRShbY29va2llMi5nZXQoKS5kb21haW4gaXNFcXVhbFRvU3RyaW5nOmNvb2tpZS5kb21haW5d
KTsKKyAgICAgICAgICAgIEFTU0VSVF9GQUxTRShjb29raWUyLmdldCgpLnNlY3VyZSk7CisgICAg
ICAgICAgICBBU1NFUlRfRkFMU0UoY29va2llMi5nZXQoKS5zZXNzaW9uT25seSk7CisgICAgICAg
IH0KKyAgICB9CisKKyAgICBbY29va2llcyByZWxlYXNlXTsKK30KKworI2VuZGlmCisKKyNlbmRp
Zgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>304269</attachid>
            <date>2017-03-13 10:24:07 -0700</date>
            <delta_ts>2017-03-13 11:25:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-140191-20170313102412.patch</filename>
            <type>text/plain</type>
            <size>89072</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEzNzc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmU3MGVhY2ZjNWQwZmY4
NzI0MGFjN2QwMzg5MmQ1MTJkZjA5YzIyOC4uZTFmMmE3Yzc2OWE0YmNmNjA5NTljZDczNGZmZjg4
ZDRmMDRkYjZmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDE3LTAzLTEzICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBXS1dlYlZpZXcgcHJvdmlk
ZXMgbm8gYWNjZXNzIHRvIGNvb2tpZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNDAxOTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBDb3ZlcmVkIGJ5IEFQSSB0ZXN0cy4KKworICAgICAgICAqIHBsYXRm
b3JtL0Nvb2tpZS5oOgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFn
ZVNlc3Npb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtTdG9y
YWdlU2Vzc2lvbkNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpzZXRDb29raWUpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9u
OjpkZWxldGVDb29raWUpOgorICAgICAgICAoV2ViQ29yZTo6bnNDb29raWVzVG9Db29raWVWZWN0
b3IpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpnZXRBbGxDb29r
aWVzKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0Q29va2ll
cyk6CisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvTmV0d29ya1N0b3JhZ2VTZXNz
aW9uU291cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRl
bGV0ZUNvb2tpZSk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246Omdl
dEFsbENvb2tpZXMpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpn
ZXRDb29raWVzKToKKwogMjAxNy0wMy0xMiAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5j
b20+CiAKICAgICAgICAgQWRkIGZ1bGwgTlNIVFRQQ29va2llIGZpZGVsaXR5IHRvIFdlYkNvcmU6
OkNvb2tpZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZwppbmRleCAxMTA3YzgzYjQ0OTE3OTdjOWJkZTA3OTQyZjg2MzM0MzU2
ODAyOTliLi45NmI2ZjBlOGI4Nzg3MmU1MDZhYjkyNjViMGM3ZjVkODVmNzdjZGNiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTE5IEBACisyMDE3LTAzLTEzICBCcmFkeSBFaWRzb24gIDxiZWlkc29u
QGFwcGxlLmNvbT4KKworICAgICAgICBXS1dlYlZpZXcgcHJvdmlkZXMgbm8gYWNjZXNzIHRvIGNv
b2tpZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NDAxOTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
aGlzIGFkZHMgYSBuZXcgX1dLSFRUUENvb2tpZU1hbmFnZXIgU1BJLgorICAgICAgICBJdCBmb2xs
b3dzIHRoZSBOU0hUVFBDb29raWVTdG9yYWdlIEFQSSBidXQgYXN5bmNocm9ub3VzICh3aXRoIGNv
bXBsZXRpb24gaGFuZGxlcnMpLgorICAgICAgICBBZnRlciB0aGUgaW1wbGVtZW50YXRpb24gaXMg
bGFuZGVkIGFuZCB3ZSByZXZpZXcgaW50ZXJuYWxseSB3ZSdsbCBjb25zaWRlciBwcm9tb3Rpbmcg
dG8gQVBJLgorICAgICAgICAKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBX
ZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKKyAgICAgICAgKiBTaGFyZWQvQVBJ
L0FQSU9iamVjdC5oOgorICAgICAgICAqIFNoYXJlZC9Db2NvYS9BUElPYmplY3QubW06CisgICAg
ICAgIChBUEk6Ok9iamVjdDo6bmV3T2JqZWN0KToKKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
QVBJSFRUUENvb2tpZVN0b3JhZ2UuY3BwOiBBZGRlZC4KKyAgICAgICAgKEFQSTo6SFRUUENvb2tp
ZVN0b3JhZ2U6OkhUVFBDb29raWVTdG9yYWdlKToKKyAgICAgICAgKEFQSTo6SFRUUENvb2tpZVN0
b3JhZ2U6On5IVFRQQ29va2llU3RvcmFnZSk6CisgICAgICAgIChBUEk6OkhUVFBDb29raWVTdG9y
YWdlOjpjb29raWVzKToKKyAgICAgICAgKEFQSTo6SFRUUENvb2tpZVN0b3JhZ2U6OnNldENvb2tp
ZSk6CisgICAgICAgIChBUEk6OkhUVFBDb29raWVTdG9yYWdlOjpzZXRDb29raWVzKToKKyAgICAg
ICAgKEFQSTo6SFRUUENvb2tpZVN0b3JhZ2U6OmRlbGV0ZUNvb2tpZSk6CisgICAgICAgIChBUEk6
OkhUVFBDb29raWVTdG9yYWdlOjpyZW1vdmVDb29raWVzU2luY2VEYXRlKToKKyAgICAgICAgKEFQ
STo6SFRUUENvb2tpZVN0b3JhZ2U6OnNldEhUVFBDb29raWVBY2NlcHRQb2xpY3kpOgorICAgICAg
ICAoQVBJOjpIVFRQQ29va2llU3RvcmFnZTo6Z2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElIVFRQQ29va2llU3RvcmFnZS5oOiBBZGRlZC4KKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5jcHA6CisgICAgICAg
IChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmUpOgorICAgICAgICAoQVBJ
OjpXZWJzaXRlRGF0YVN0b3JlOjpodHRwQ29va2llU3RvcmFnZSk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmg6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0MvV0tDb29raWVNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdLQ29va2llTWFuYWdlckRlbGV0ZUFs
bENvb2tpZXNNb2RpZmllZEFmdGVyRGF0ZSk6CisgICAgICAgIChXS0Nvb2tpZU1hbmFnZXJTZXRI
VFRQQ29va2llQWNjZXB0UG9saWN5KToKKyAgICAgICAgKFdLQ29va2llTWFuYWdlckdldEhUVFBD
b29raWVBY2NlcHRQb2xpY3kpOgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0
ZURhdGFTdG9yZVJlZi5jcHA6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVHZXREZWZhdWx0
RGF0YVN0b3JlKToKKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9v
bC5tbToKKyAgICAgICAgKC1bV0tQcm9jZXNzUG9vbCBfc2V0Q29va2llQWNjZXB0UG9saWN5Ol0p
OgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW06
CisgICAgICAgICgrW1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0RGF0YVN0b3JlXSk6CisgICAg
ICAgICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBfaHR0cENvb2tpZVN0b3JhZ2VdKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaDoKKyAgICAg
ICAgCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tIVFRQQ29va2llU3RvcmFnZS5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSFRUUENvb2tpZVN0b3JhZ2UubW06
IEFkZGVkLgorICAgICAgICAoY29yZUNvb2tpZXNUb05TQ29va2llcyk6CisgICAgICAgICgtW19X
S0hUVFBDb29raWVTdG9yYWdlIGRlYWxsb2NdKToKKyAgICAgICAgKC1bX1dLSFRUUENvb2tpZVN0
b3JhZ2UgZmV0Y2hDb29raWVzOl0pOgorICAgICAgICAoLVtfV0tIVFRQQ29va2llU3RvcmFnZSBm
ZXRjaENvb2tpZXNGb3JVUkw6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW19XS0hU
VFBDb29raWVTdG9yYWdlIHNldENvb2tpZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAg
KC1bX1dLSFRUUENvb2tpZVN0b3JhZ2UgZGVsZXRlQ29va2llOmNvbXBsZXRpb25IYW5kbGVyOl0p
OgorICAgICAgICAoLVtfV0tIVFRQQ29va2llU3RvcmFnZSBzZXRDb29raWVzOmZvclVSTDptYWlu
RG9jdW1lbnRVUkw6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW19XS0hUVFBDb29r
aWVTdG9yYWdlIHJlbW92ZUNvb2tpZXNTaW5jZURhdGU6Y29tcGxldGlvbkhhbmRsZXI6XSk6Cisg
ICAgICAgICgtW19XS0hUVFBDb29raWVTdG9yYWdlIHNldENvb2tpZUFjY2VwdFBvbGljeTpjb21w
bGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKGtpdENvb2tpZVBvbGljeVRvTlNDb29raWVQb2xp
Y3kpOgorICAgICAgICAoLVtfV0tIVFRQQ29va2llU3RvcmFnZSBmZXRjaENvb2tpZUFjY2VwdFBv
bGljeTpdKToKKyAgICAgICAgKC1bX1dLSFRUUENvb2tpZVN0b3JhZ2UgX2FwaU9iamVjdF0pOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSFRUUENvb2tpZVN0b3JhZ2VJbnRlcm5h
bC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
c2l0ZURhdGFTdG9yZVByaXZhdGUuaC4KKyAgICAgICAgKFdlYktpdDo6d3JhcHBlcik6CisKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjphZGRTaW5nbGVDb29raWUpOgor
CisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6Z2V0SG9zdG5hbWVzV2l0aENvb2tpZXMp
OgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRlbGV0ZUNvb2tpZXNG
b3JIb3N0bmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGVs
ZXRlQWxsQ29va2llcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6
ZGVsZXRlQ29va2llKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlclByb3h5Ojpk
ZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tp
ZU1hbmFnZXJQcm94eTo6c2V0Q29va2llKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFu
YWdlclByb3h5OjpzZXRDb29raWVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdl
clByb3h5OjpnZXRBbGxDb29raWVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdl
clByb3h5OjpnZXRDb29raWVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlclBy
b3h5OjpkaWRTZXRDb29raWVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlclBy
b3h5OjpkaWRHZXRDb29raWVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlclBy
b3h5OjpkaWREZWxldGVDb29raWVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdl
clByb3h5OjpzdGFydE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJDb29raWVNYW5hZ2VyUHJveHk6OnN0b3BPYnNlcnZpbmdDb29raWVDaGFuZ2VzKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlclByb3h5OjpzZXRDb29raWVPYnNlcnZlckNhbGxi
YWNrKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlclByb3h5Ojpjb29raWVzRGlk
Q2hhbmdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlclByb3h5OjpzZXRIVFRQ
Q29va2llQWNjZXB0UG9saWN5KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlclBy
b3h5OjpnZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29v
a2llTWFuYWdlclByb3h5OjpkaWRHZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KToKKyAgICAgICAg
KFdlYktpdDo6V2ViQ29va2llTWFuYWdlclByb3h5OjpkaWRTZXRIVFRQQ29va2llQWNjZXB0UG9s
aWN5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5Lmg6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbjoKKworICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJGcmFtZVByb3h5Lmg6CisgICAgICAgIAorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmg6CisgICAgICAgIAorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJz
aXRlRGF0YVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6cHJv
Y2Vzc1Bvb2xGb3JDb29raWVTdG9yYWdlT3BlcmF0aW9ucyk6CisgICAgICAgIChXZWJLaXQ6Oldl
YnNpdGVEYXRhU3RvcmU6OnByb2Nlc3NQb29scyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNp
dGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaDoKKyAgICAgICAgCisgICAgICAgICogV2ViUHJvY2Vz
cy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29r
aWVNYW5hZ2VyOjpkZWxldGVDb29raWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5h
Z2VyOjpkZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YkNvb2tpZU1hbmFnZXI6OmdldEFsbENvb2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29r
aWVNYW5hZ2VyOjpnZXRDb29raWVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdl
cjo6c2V0Q29va2llKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlcjo6c2V0Q29v
a2llcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXI6OnNldEhUVFBDb29raWVB
Y2NlcHRQb2xpY3kpOgorICAgICAgICAqIFdlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5h
Z2VyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIubWVz
c2FnZXMuaW46CisKIDIwMTctMDMtMTIgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29t
PgogCiAgICAgICAgIFRyYW5zaXRpb24gR2VuZXJpY0NhbGxiYWNrIGZyb20gc3RkOjpmdW5jdGlv
biB0byBXVEY6OkZ1bmN0aW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Q29va2llLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db29raWUuaAppbmRleCBlNDdlN2Ji
ZmY1YmIzYWJjNjNhYjNmOTI4ZmMyNzQxNTVlMTA0ZmE3Li41ZGRiOTM1NGNlOGQxOWU3YTc1NGI5
N2NlM2EwMzgxNTNmMzY0Njk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9D
b29raWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db29raWUuaApAQCAtNTgsNyAr
NTgsNyBAQCBzdHJ1Y3QgQ29va2llIHsKIAogI2lmZGVmIF9fT0JKQ19fCiAgICAgV0VCQ09SRV9F
WFBPUlQgQ29va2llKE5TSFRUUENvb2tpZSAqKTsKLSAgICBvcGVyYXRvciBOU0hUVFBDb29raWUg
KigpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIG9wZXJhdG9yIE5TSFRUUENvb2tpZSAqKCkg
Y29uc3Q7CiAjZW5kaWYKIAogICAgIFN0cmluZyBuYW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgKaW5kZXggZjE0
ODljNmI0MmExZDQ1YWY5Y2FhNjJjYTI2ZDE3MDViNDZiMzc0OC4uMjEyYmUyNjRlYTVjYzc2NThh
OGRmMmVmM2UzNTk2ODE4NTE0OWVjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oCkBAIC0xMDAsNyArMTAwLDEx
IEBAIHB1YmxpYzoKICAgICBOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCgpIGNvbnN0OwogI2Vu
ZGlmCiAKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENvb2tpZShjb25zdCBDb29raWUmKTsK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENvb2tpZXMoY29uc3QgVmVjdG9yPENvb2tpZT4m
LCBjb25zdCBVUkwmLCBjb25zdCBVUkwmIG1haW5Eb2N1bWVudFVSTCk7CisgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBkZWxldGVDb29raWUoY29uc3QgQ29va2llJik7CisgICAgV0VCQ09SRV9FWFBP
UlQgVmVjdG9yPENvb2tpZT4gZ2V0QWxsQ29va2llcygpOworICAgIFdFQkNPUkVfRVhQT1JUIFZl
Y3RvcjxDb29raWU+IGdldENvb2tpZXMoY29uc3QgVVJMJik7CiAKIHByaXZhdGU6CiAgICAgc3Rh
dGljIEhhc2hNYXA8U2Vzc2lvbklELCBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya1N0b3JhZ2VTZXNz
aW9uPj4mIGdsb2JhbFNlc3Npb25NYXAoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2EubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNv
Y29hLm1tCmluZGV4IDQ0YWVhYjcwZTk5YjVmYTBhODRlY2ZkMzU3ZTM0NTgzZGVmYzAxZTAuLjRj
OTU2N2U5YzY3YTBhNDc2NzZhOGZjN2Y4ZWQ0YWY0ZGUxNTUyOWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29j
b2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3Jr
U3RvcmFnZVNlc3Npb25Db2NvYS5tbQpAQCAtMzIsNiArMzIsMTMgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCit2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0Q29va2llKGNvbnN0IENv
b2tpZSYgY29va2llKQoreworICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKKyAgICBb
bnNDb29raWVTdG9yYWdlKCkgc2V0Q29va2llOihOU0hUVFBDb29raWUgKiljb29raWVdOworICAg
IEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7Cit9CisKIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpzZXRDb29raWVzKGNvbnN0IFZlY3RvcjxDb29raWU+JiBjb29raWVzLCBjb25zdCBVUkwm
IHVybCwgY29uc3QgVVJMJiBtYWluRG9jdW1lbnRVUkwpCiB7CiAgICAgUmV0YWluUHRyPE5TTXV0
YWJsZUFycmF5PiBuc0Nvb2tpZXMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGlu
aXRXaXRoQ2FwYWNpdHk6Y29va2llcy5zaXplKCldKTsKQEAgLTQzLDYgKzUwLDMxIEBAIHZvaWQg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRDb29raWVzKGNvbnN0IFZlY3RvcjxDb29raWU+JiBj
b29raWVzLCBjb25zdCBVUkwmCiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIH0KIAor
dm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlbGV0ZUNvb2tpZShjb25zdCBDb29raWUmIGNv
b2tpZSkKK3sKKyAgICBbbnNDb29raWVTdG9yYWdlKCkgZGVsZXRlQ29va2llOihOU0hUVFBDb29r
aWUgKiljb29raWVdOworfQorCitzdGF0aWMgVmVjdG9yPENvb2tpZT4gbnNDb29raWVzVG9Db29r
aWVWZWN0b3IoTlNBcnJheTxOU0hUVFBDb29raWUgKj4gKm5zQ29va2llcykKK3sKKyAgICBWZWN0
b3I8Q29va2llPiBjb29raWVzOworICAgIGNvb2tpZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShu
c0Nvb2tpZXMuY291bnQpOworICAgIGZvciAoTlNIVFRQQ29va2llICpuc0Nvb2tpZSBpbiBuc0Nv
b2tpZXMpCisgICAgICAgIGNvb2tpZXMudW5jaGVja2VkQXBwZW5kKG5zQ29va2llKTsKKworICAg
IHJldHVybiBjb29raWVzOworfQorCitWZWN0b3I8Q29va2llPiBOZXR3b3JrU3RvcmFnZVNlc3Np
b246OmdldEFsbENvb2tpZXMoKQoreworICAgIHJldHVybiBuc0Nvb2tpZXNUb0Nvb2tpZVZlY3Rv
cihuc0Nvb2tpZVN0b3JhZ2UoKS5jb29raWVzKTsKK30KKworVmVjdG9yPENvb2tpZT4gTmV0d29y
a1N0b3JhZ2VTZXNzaW9uOjpnZXRDb29raWVzKGNvbnN0IFVSTCYgdXJsKQoreworICAgIHJldHVy
biBuc0Nvb2tpZXNUb0Nvb2tpZVZlY3RvcihbbnNDb29raWVTdG9yYWdlKCkgY29va2llc0ZvclVS
TDooTlNVUkwgKil1cmxdKTsKK30KKwogTlNIVFRQQ29va2llU3RvcmFnZSAqTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpuc0Nvb2tpZVN0b3JhZ2UoKSBjb25zdAogewogICAgIGF1dG8gY2ZDb29raWVT
dG9yYWdlID0gY29va2llU3RvcmFnZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lvblNvdXAuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lvblNvdXAu
Y3BwCmluZGV4IDI0OWJkODJiZDc0ZThjNjJhOWMzNTcwMzdmOTgzODUwNGZhNTdhY2QuLjM2ZWY5
ZmVjYjNhN2M3MDYyZDdiNThmMTNiM2NjN2QwMjgzNTJiOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uU291cC5jcHAKQEAgLTMwNCw2ICszMDQsMjAgQEAgdm9pZCBOZXR3b3JrU3RvcmFn
ZVNlc3Npb246OnNldENvb2tpZXMoY29uc3QgVmVjdG9yPENvb2tpZT4mIGNvb2tpZXMsIGNvbnN0
IFVSTCYKICAgICAgICAgc291cF9jb29raWVfamFyX2FkZF9jb29raWUoY29va2llU3RvcmFnZSgp
LCB0b1NvdXBDb29raWUoY29va2llKSk7CiB9CiAKK3ZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
OjpkZWxldGVDb29raWUoY29uc3QgQ29va2llJikKK3sKKwkvLyBGSVhNRTogSW1wbGVtZW50IGZv
ciBXSzIgdG8gdXNlLgorfQorCitWZWN0b3I8Q29va2llPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246
OmdldEFsbENvb2tpZXMoKQoreworCS8vIEZJWE1FOiBJbXBsZW1lbnQgZm9yIFdLMiB0byB1c2Uu
Cit9CisKK1ZlY3RvcjxDb29raWU+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0Q29va2llcyhj
b25zdCBVUkwmKQoreworCS8vIEZJWE1FOiBJbXBsZW1lbnQgZm9yIFdLMiB0byB1c2UuCit9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ01h
a2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dAppbmRleCA4MWZmOGRh
ODExMjQzZTU0MWEzYzY5ODRjOWZhNzhiMDk3YzlkYmU2Li5hOGZkY2QxMWIzYTYyMzY2NjM3MTdk
YTM0OTYxZWUxNjA0NjhlNjk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3Rz
LnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dApAQCAtMzM2LDYgKzMzNiw3
IEBAIHNldChXZWJLaXQyX1NPVVJDRVMKICAgICBVSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRFeHRl
bnNpb25TdG9yZS5jcHAKICAgICBVSVByb2Nlc3MvQVBJL0FQSUV4cGVyaW1lbnRhbEZlYXR1cmUu
Y3BwCiAgICAgVUlQcm9jZXNzL0FQSS9BUElGcmFtZUluZm8uY3BwCisgICAgVUlQcm9jZXNzL0FQ
SS9BUElIVFRQQ29va2llU3RvcmFnZS5jcHAKICAgICBVSVByb2Nlc3MvQVBJL0FQSUhpdFRlc3RS
ZXN1bHQuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uLmNwcAogICAgIFVJUHJv
Y2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkRhdGEuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHAKaW5kZXggZDhk
Y2RlMzMwOGQ0YmY3NTM1NzJhNDc3YjE3Y2ExZjAxYjgyYTNjMC4uMjYwNzBmMDExNGUxNzI2NzIx
MTBkYjAyNzFkYTQ5N2ExZDJhMTkzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3Mvc291cC9OZXR3b3JrUHJvY2Vzc1NvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcApAQCAtMTI0LDcgKzEy
NCw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9j
ZXNzKGNvbnN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRpCiAgICAgICAgIHN1cHBsZW1lbnQ8V2ViQ29v
a2llTWFuYWdlcj4oKS0+c2V0Q29va2llUGVyc2lzdGVudFN0b3JhZ2UocGFyYW1ldGVycy5jb29r
aWVQZXJzaXN0ZW50U3RvcmFnZVBhdGgsCiAgICAgICAgICAgICBwYXJhbWV0ZXJzLmNvb2tpZVBl
cnNpc3RlbnRTdG9yYWdlVHlwZSk7CiAgICAgfQotICAgIHN1cHBsZW1lbnQ8V2ViQ29va2llTWFu
YWdlcj4oKS0+c2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShwYXJhbWV0ZXJzLmNvb2tpZUFjY2Vw
dFBvbGljeSk7CisgICAgc3VwcGxlbWVudDxXZWJDb29raWVNYW5hZ2VyPigpLT5zZXRIVFRQQ29v
a2llQWNjZXB0UG9saWN5KHBhcmFtZXRlcnMuY29va2llQWNjZXB0UG9saWN5LCAwKTsKIAogICAg
IGlmICghcGFyYW1ldGVycy5sYW5ndWFnZXMuaXNFbXB0eSgpKQogICAgICAgICB1c2VyUHJlZmVy
cmVkTGFuZ3VhZ2VzQ2hhbmdlZChwYXJhbWV0ZXJzLmxhbmd1YWdlcyk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0FQSU9iamVjdC5oIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL0FQSS9BUElPYmplY3QuaAppbmRleCBhZTBmYzk5ODViZDI3NjQ3NjgyNzg5ZmY0YzRmNDY2
YTFlYzM0NjBhLi40NmYyNzkxZGRmYzQ1MjQyYmEzNTE0YjA1Zjk2MzMxOGUyZmU1MWI3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0FQSU9iamVjdC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9BUEkvQVBJT2JqZWN0LmgKQEAgLTExNiw2ICsxMTYsNyBAQCBwdWJs
aWM6CiAgICAgICAgIEZ1bGxTY3JlZW5NYW5hZ2VyLAogICAgICAgICBHZW9sb2NhdGlvbk1hbmFn
ZXIsCiAgICAgICAgIEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QsCisgICAgICAgIEhUVFBD
b29raWVTdG9yYWdlLAogICAgICAgICBIaXRUZXN0UmVzdWx0LAogICAgICAgICBHZW9sb2NhdGlv
blBvc2l0aW9uLAogICAgICAgICBHcmFtbWFyRGV0YWlsLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvU2hhcmVkL0NvY29hL0FQSU9iamVjdC5tbSBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9D
b2NvYS9BUElPYmplY3QubW0KaW5kZXggMTE2MzI0NTQyMGNkMjc3MzgwNGIyMjUzNGNiOTljMGZh
ZDQxNzIyMi4uYzcyMTc2MjkzY2VjZmFlYmI1OTg1NjYzNjUwMWIyNDRmMzZkNmVmZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0NvY29hL0FQSU9iamVjdC5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvQ29jb2EvQVBJT2JqZWN0Lm1tCkBAIC03MSw2ICs3MSw3IEBACiAj
aW1wb3J0ICJfV0tEb3dubG9hZEludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tFeHBlcmltZW50YWxG
ZWF0dXJlSW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS0ZyYW1lSGFuZGxlSW50ZXJuYWwuaCIKKyNp
bXBvcnQgIl9XS0hUVFBDb29raWVTdG9yYWdlSW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS0hpdFRl
c3RSZXN1bHRJbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
SW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS1VzZXJDb250ZW50V29ybGRJbnRlcm5hbC5oIgpAQCAt
MTc4LDYgKzE3OSwxMCBAQCB2b2lkKiBPYmplY3Q6Om5ld09iamVjdChzaXplX3Qgc2l6ZSwgVHlw
ZSB0eXBlKQogICAgICAgICB3cmFwcGVyID0gW1dLRnJhbWVJbmZvIGFsbG9jXTsKICAgICAgICAg
YnJlYWs7CiAKKyAgICBjYXNlIFR5cGU6OkhUVFBDb29raWVTdG9yYWdlOgorICAgICAgICB3cmFw
cGVyID0gW19XS0hUVFBDb29raWVTdG9yYWdlIGFsbG9jXTsKKyAgICAgICAgYnJlYWs7CisKICNp
ZiBQTEFURk9STShNQUMpCiAgICAgY2FzZSBUeXBlOjpIaXRUZXN0UmVzdWx0OgogICAgICAgICB3
cmFwcGVyID0gW19XS0hpdFRlc3RSZXN1bHQgYWxsb2NdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9BUElIVFRQQ29va2llU3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0FQSUhUVFBDb29raWVTdG9yYWdlLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4z
MzhiODUyNGI5ZmM4OWYxNGFjODQ2MjM1YzE3Y2I1MTFiNDhiOGUzCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElIVFRQQ29va2llU3RvcmFnZS5jcHAK
QEAgLTAsMCArMSwxMzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiQVBJSFRUUENvb2tpZVN0b3JhZ2UuaCIKKworI2luY2x1ZGUgIkFQSVdlYnNpdGVEYXRh
U3RvcmUuaCIKKyNpbmNsdWRlICJXZWJDb29raWVNYW5hZ2VyUHJveHkuaCIKKyNpbmNsdWRlICJX
ZWJQcm9jZXNzUG9vbC5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ29va2llLmg+CisKK3VzaW5nIG5h
bWVzcGFjZSBXZWJLaXQ7CisKK25hbWVzcGFjZSBBUEkgeworCitIVFRQQ29va2llU3RvcmFnZTo6
SFRUUENvb2tpZVN0b3JhZ2UoV2Vic2l0ZURhdGFTdG9yZSYgd2Vic2l0ZURhdGFTdG9yZSkKKyAg
ICA6IG1fb3duaW5nRGF0YVN0b3JlKHdlYnNpdGVEYXRhU3RvcmUpCit7Cit9CisKK0hUVFBDb29r
aWVTdG9yYWdlOjp+SFRUUENvb2tpZVN0b3JhZ2UoKQoreworfQorCit2b2lkIEhUVFBDb29raWVT
dG9yYWdlOjpjb29raWVzKEZ1bmN0aW9uPHZvaWQgKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29r
aWU+Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgYXV0byYgZGF0YVN0b3JlID0gbV9v
d25pbmdEYXRhU3RvcmUud2Vic2l0ZURhdGFTdG9yZSgpOworICAgIGF1dG8gcG9vbCA9IGRhdGFT
dG9yZS5wcm9jZXNzUG9vbEZvckNvb2tpZVN0b3JhZ2VPcGVyYXRpb25zKCk7CisgICAgYXV0byog
Y29va2llTWFuYWdlciA9IHBvb2wtPnN1cHBsZW1lbnQ8V2ViS2l0OjpXZWJDb29raWVNYW5hZ2Vy
UHJveHk+KCk7CisKKyAgICBjb29raWVNYW5hZ2VyLT5nZXRBbGxDb29raWVzKGRhdGFTdG9yZS5z
ZXNzaW9uSUQoKSwgW3Bvb2wgPSBXVEZNb3ZlKHBvb2wpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYg
Y29va2llcywgQ2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcikgeworICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihjb29raWVzKTsKKyAgICB9KTsKK30KKwordm9pZCBIVFRQQ29va2llU3RvcmFnZTo6
Y29va2llcyhjb25zdCBXZWJDb3JlOjpVUkwmIHVybCwgRnVuY3Rpb248dm9pZCAoY29uc3QgVmVj
dG9yPFdlYkNvcmU6OkNvb2tpZT4mKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBhdXRv
JiBkYXRhU3RvcmUgPSBtX293bmluZ0RhdGFTdG9yZS53ZWJzaXRlRGF0YVN0b3JlKCk7CisgICAg
YXV0byBwb29sID0gZGF0YVN0b3JlLnByb2Nlc3NQb29sRm9yQ29va2llU3RvcmFnZU9wZXJhdGlv
bnMoKTsKKyAgICBhdXRvKiBjb29raWVNYW5hZ2VyID0gcG9vbC0+c3VwcGxlbWVudDxXZWJLaXQ6
OldlYkNvb2tpZU1hbmFnZXJQcm94eT4oKTsKKworICAgIGNvb2tpZU1hbmFnZXItPmdldENvb2tp
ZXMoZGF0YVN0b3JlLnNlc3Npb25JRCgpLCB1cmwsIFtwb29sID0gV1RGTW92ZShwb29sKSwgY29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oY29uc3QgVmVjdG9y
PFdlYkNvcmU6OkNvb2tpZT4mIGNvb2tpZXMsIENhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsK
KyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoY29va2llcyk7CisgICAgfSk7Cit9CisKK3ZvaWQg
SFRUUENvb2tpZVN0b3JhZ2U6OnNldENvb2tpZShjb25zdCBXZWJDb3JlOjpDb29raWUmIGNvb2tp
ZSwgRnVuY3Rpb248dm9pZCAoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBhdXRvJiBk
YXRhU3RvcmUgPSBtX293bmluZ0RhdGFTdG9yZS53ZWJzaXRlRGF0YVN0b3JlKCk7CisgICAgYXV0
byBwb29sID0gZGF0YVN0b3JlLnByb2Nlc3NQb29sRm9yQ29va2llU3RvcmFnZU9wZXJhdGlvbnMo
KTsKKyAgICBhdXRvKiBjb29raWVNYW5hZ2VyID0gcG9vbC0+c3VwcGxlbWVudDxXZWJLaXQ6Oldl
YkNvb2tpZU1hbmFnZXJQcm94eT4oKTsKKworICAgIGNvb2tpZU1hbmFnZXItPnNldENvb2tpZShk
YXRhU3RvcmUuc2Vzc2lvbklEKCksIGNvb2tpZSwgW3Bvb2wgPSBXVEZNb3ZlKHBvb2wpLCBjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShDYWxsYmFja0Jhc2U6
OkVycm9yIGVycm9yKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgfSk7Cit9
CisKK3ZvaWQgSFRUUENvb2tpZVN0b3JhZ2U6OnNldENvb2tpZXMoY29uc3QgVmVjdG9yPFdlYkNv
cmU6OkNvb2tpZT4mIGNvb2tpZXMsIGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsLCBjb25zdCBXZWJD
b3JlOjpVUkwmIG1haW5Eb2N1bWVudFVSTCwgRnVuY3Rpb248dm9pZCAoKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKK3sKKyAgICBhdXRvJiBkYXRhU3RvcmUgPSBtX293bmluZ0RhdGFTdG9yZS53ZWJz
aXRlRGF0YVN0b3JlKCk7CisgICAgYXV0byBwb29sID0gZGF0YVN0b3JlLnByb2Nlc3NQb29sRm9y
Q29va2llU3RvcmFnZU9wZXJhdGlvbnMoKTsKKyAgICBhdXRvKiBjb29raWVNYW5hZ2VyID0gcG9v
bC0+c3VwcGxlbWVudDxXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eT4oKTsKKworICAgIGNv
b2tpZU1hbmFnZXItPnNldENvb2tpZXMoZGF0YVN0b3JlLnNlc3Npb25JRCgpLCBjb29raWVzLCB1
cmwsIG1haW5Eb2N1bWVudFVSTCwgW3Bvb2wgPSBXVEZNb3ZlKHBvb2wpLCBjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShDYWxsYmFja0Jhc2U6OkVycm9yIGVy
cm9yKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgfSk7Cit9CisKK3ZvaWQg
SFRUUENvb2tpZVN0b3JhZ2U6OmRlbGV0ZUNvb2tpZShjb25zdCBXZWJDb3JlOjpDb29raWUmIGNv
b2tpZSwgRnVuY3Rpb248dm9pZCAoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBhdXRv
JiBkYXRhU3RvcmUgPSBtX293bmluZ0RhdGFTdG9yZS53ZWJzaXRlRGF0YVN0b3JlKCk7CisgICAg
YXV0byBwb29sID0gZGF0YVN0b3JlLnByb2Nlc3NQb29sRm9yQ29va2llU3RvcmFnZU9wZXJhdGlv
bnMoKTsKKyAgICBhdXRvKiBjb29raWVNYW5hZ2VyID0gcG9vbC0+c3VwcGxlbWVudDxXZWJLaXQ6
OldlYkNvb2tpZU1hbmFnZXJQcm94eT4oKTsKKworICAgIGNvb2tpZU1hbmFnZXItPmRlbGV0ZUNv
b2tpZShkYXRhU3RvcmUuc2Vzc2lvbklEKCksIGNvb2tpZSwgW3Bvb2wgPSBXVEZNb3ZlKHBvb2wp
LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShDYWxsYmFj
a0Jhc2U6OkVycm9yIGVycm9yKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAg
fSk7Cit9CisKK3ZvaWQgSFRUUENvb2tpZVN0b3JhZ2U6OnJlbW92ZUNvb2tpZXNTaW5jZURhdGUo
c3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCBkYXRlLCBGdW5jdGlvbjx2b2lk
ICgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGF1dG8mIGRhdGFTdG9yZSA9IG1fb3du
aW5nRGF0YVN0b3JlLndlYnNpdGVEYXRhU3RvcmUoKTsKKyAgICBhdXRvIHBvb2wgPSBkYXRhU3Rv
cmUucHJvY2Vzc1Bvb2xGb3JDb29raWVTdG9yYWdlT3BlcmF0aW9ucygpOworICAgIGF1dG8qIGNv
b2tpZU1hbmFnZXIgPSBwb29sLT5zdXBwbGVtZW50PFdlYktpdDo6V2ViQ29va2llTWFuYWdlclBy
b3h5PigpOworCisgICAgY29va2llTWFuYWdlci0+ZGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2lu
Y2UoZGF0YVN0b3JlLnNlc3Npb25JRCgpLCBkYXRlLCBbcG9vbCA9IFdURk1vdmUocG9vbCksIGNv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKENhbGxiYWNrQmFz
ZTo6RXJyb3IgZXJyb3IpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICB9KTsK
K30KKwordm9pZCBIVFRQQ29va2llU3RvcmFnZTo6c2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShI
VFRQQ29va2llQWNjZXB0UG9saWN5IHBvbGljeSwgRnVuY3Rpb248dm9pZCAoKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3sKKyAgICBhdXRvJiBkYXRhU3RvcmUgPSBtX293bmluZ0RhdGFTdG9yZS53
ZWJzaXRlRGF0YVN0b3JlKCk7CisgICAgYXV0byBwb29sID0gZGF0YVN0b3JlLnByb2Nlc3NQb29s
Rm9yQ29va2llU3RvcmFnZU9wZXJhdGlvbnMoKTsKKyAgICBhdXRvKiBjb29raWVNYW5hZ2VyID0g
cG9vbC0+c3VwcGxlbWVudDxXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eT4oKTsKKworICAg
IGNvb2tpZU1hbmFnZXItPnNldEhUVFBDb29raWVBY2NlcHRQb2xpY3koZGF0YVN0b3JlLnNlc3Np
b25JRCgpLCBwb2xpY3ksIFtwb29sID0gV1RGTW92ZShwb29sKSwgY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oQ2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcikg
eworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAgIH0pOworfQorCit2b2lkIEhUVFBD
b29raWVTdG9yYWdlOjpnZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KEZ1bmN0aW9uPHZvaWQgKEhU
VFBDb29raWVBY2NlcHRQb2xpY3kpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGF1dG8m
IGRhdGFTdG9yZSA9IG1fb3duaW5nRGF0YVN0b3JlLndlYnNpdGVEYXRhU3RvcmUoKTsKKyAgICBh
dXRvIHBvb2wgPSBkYXRhU3RvcmUucHJvY2Vzc1Bvb2xGb3JDb29raWVTdG9yYWdlT3BlcmF0aW9u
cygpOworICAgIGF1dG8qIGNvb2tpZU1hbmFnZXIgPSBwb29sLT5zdXBwbGVtZW50PFdlYktpdDo6
V2ViQ29va2llTWFuYWdlclByb3h5PigpOworCisgICAgY29va2llTWFuYWdlci0+Z2V0SFRUUENv
b2tpZUFjY2VwdFBvbGljeShkYXRhU3RvcmUuc2Vzc2lvbklEKCksIFtwb29sID0gV1RGTW92ZShw
b29sKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oSFRU
UENvb2tpZUFjY2VwdFBvbGljeSBwb2xpY3ksIENhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsK
KyAgICAgICAgaWYgKGVycm9yICE9IENhbGxiYWNrQmFzZTo6RXJyb3I6Ok5vbmUpCisgICAgICAg
ICAgICBwb2xpY3kgPSBIVFRQQ29va2llQWNjZXB0UG9saWN5TmV2ZXI7CisKKyAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIocG9saWN5KTsKKyAgICB9KTsKK30KKworfSAvLyBuYW1lc3BhY2UgQVBJ
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSUhUVFBDb29raWVT
dG9yYWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSUhUVFBDb29raWVTdG9y
YWdlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZDNiOTM4ZWU0MmZlOWQxNzQ1NGIwODEzYjNmNWIwMzMyYWQxYmUz
NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJSFRU
UENvb2tpZVN0b3JhZ2UuaApAQCAtMCwwICsxLDY5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpbmNsdWRlICJBUElPYmplY3QuaCIKKyNpbmNsdWRlICJIVFRQQ29va2llQWNjZXB0
UG9saWN5LmgiCisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBVUkw7CitzdHJ1Y3QgQ29va2llOwor
fQorCituYW1lc3BhY2UgQVBJIHsKKworY2xhc3MgV2Vic2l0ZURhdGFTdG9yZTsKKworY2xhc3Mg
SFRUUENvb2tpZVN0b3JhZ2UgZmluYWwgOiBwdWJsaWMgT2JqZWN0SW1wbDxPYmplY3Q6OlR5cGU6
OkhUVFBDb29raWVTdG9yYWdlPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxIVFRQQ29va2ll
U3RvcmFnZT4gY3JlYXRlKFdlYnNpdGVEYXRhU3RvcmUmIHdlYnNpdGVEYXRhU3RvcmUpCisgICAg
eworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBIVFRQQ29va2llU3RvcmFnZSh3ZWJzaXRl
RGF0YVN0b3JlKSk7CisgICAgfQorCisgICAgdmlydHVhbCB+SFRUUENvb2tpZVN0b3JhZ2UoKTsK
KworICAgIHZvaWQgY29va2llcyhGdW5jdGlvbjx2b2lkIChjb25zdCBWZWN0b3I8V2ViQ29yZTo6
Q29va2llPiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICB2b2lkIGNvb2tpZXMoY29uc3Qg
V2ViQ29yZTo6VVJMJiwgRnVuY3Rpb248dm9pZCAoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tp
ZT4mKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7CisKKyAgICB2b2lkIHNldENvb2tpZShjb25zdCBX
ZWJDb3JlOjpDb29raWUmLCBGdW5jdGlvbjx2b2lkICgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsK
KyAgICB2b2lkIHNldENvb2tpZXMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mLCBjb25z
dCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXZWJDb3JlOjpVUkwmIG1haW5Eb2N1bWVudFVSTCwgRnVu
Y3Rpb248dm9pZCAoKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7CisgICAgdm9pZCBkZWxldGVDb29r
aWUoY29uc3QgV2ViQ29yZTo6Q29va2llJiwgRnVuY3Rpb248dm9pZCAoKT4mJiBjb21wbGV0aW9u
SGFuZGxlcik7CisKKyAgICB2b2lkIHJlbW92ZUNvb2tpZXNTaW5jZURhdGUoc3RkOjpjaHJvbm86
OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCwgRnVuY3Rpb248dm9pZCAoKT4mJiBjb21wbGV0aW9u
SGFuZGxlcik7CisKKyAgICB2b2lkIHNldEhUVFBDb29raWVBY2NlcHRQb2xpY3koV2ViS2l0OjpI
VFRQQ29va2llQWNjZXB0UG9saWN5LCBGdW5jdGlvbjx2b2lkICgpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKTsKKyAgICB2b2lkIGdldEhUVFBDb29raWVBY2NlcHRQb2xpY3koRnVuY3Rpb248dm9pZCAo
V2ViS2l0OjpIVFRQQ29va2llQWNjZXB0UG9saWN5KT4mJiBjb21wbGV0aW9uSGFuZGxlcik7Cisg
ICAgCitwcml2YXRlOgorICAgIEhUVFBDb29raWVTdG9yYWdlKFdlYnNpdGVEYXRhU3RvcmUmIHdl
YnNpdGVEYXRhU3RvcmUpOworCisgICAgV2Vic2l0ZURhdGFTdG9yZSYgbV9vd25pbmdEYXRhU3Rv
cmU7Cit9OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQ
SVdlYnNpdGVEYXRhU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElX
ZWJzaXRlRGF0YVN0b3JlLmNwcAppbmRleCA1Yzc4Y2NkN2FlMjkwZTQ1ZTcwZjQ4M2Y1MDIwYmRh
YTc5MDRmNzVhLi5jYTFkZjc1NzEwZDkyNTdhMmE5YjBkMmQzMDJmMDNiMWVlYjM3OTJhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9y
ZS5jcHAKQEAgLTMxLDEzICszMSwxMyBAQAogCiBuYW1lc3BhY2UgQVBJIHsKIAotUmVmUHRyPFdl
YnNpdGVEYXRhU3RvcmU+IFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmUoKQorUmVm
PFdlYnNpdGVEYXRhU3RvcmU+IFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmUoKQog
ewogICAgIFdlYktpdDo6SW5pdGlhbGl6ZVdlYktpdDIoKTsKIAogICAgIHN0YXRpYyBXZWJzaXRl
RGF0YVN0b3JlKiBkZWZhdWx0RGF0YVN0b3JlID0gYWRvcHRSZWYobmV3IFdlYnNpdGVEYXRhU3Rv
cmUoZGVmYXVsdERhdGFTdG9yZUNvbmZpZ3VyYXRpb24oKSkpLmxlYWtSZWYoKTsKIAotICAgIHJl
dHVybiBkZWZhdWx0RGF0YVN0b3JlOworICAgIHJldHVybiAqZGVmYXVsdERhdGFTdG9yZTsKIH0K
IAogUmVmPFdlYnNpdGVEYXRhU3RvcmU+IFdlYnNpdGVEYXRhU3RvcmU6OmNyZWF0ZU5vblBlcnNp
c3RlbnREYXRhU3RvcmUoKQpAQCAtNjQsNiArNjQsMTQgQEAgV2Vic2l0ZURhdGFTdG9yZTo6fldl
YnNpdGVEYXRhU3RvcmUoKQogewogfQogCitIVFRQQ29va2llU3RvcmFnZSYgV2Vic2l0ZURhdGFT
dG9yZTo6aHR0cENvb2tpZVN0b3JhZ2UoKQoreworICAgIGlmICghbV9hcGlIVFRQQ29va2llU3Rv
cmFnZSkKKyAgICAgICAgbV9hcGlIVFRQQ29va2llU3RvcmFnZSA9IEhUVFBDb29raWVTdG9yYWdl
OjpjcmVhdGUoKnRoaXMpOworCisgICAgcmV0dXJuICptX2FwaUhUVFBDb29raWVTdG9yYWdlOwor
fQorCiBib29sIFdlYnNpdGVEYXRhU3RvcmU6OmlzUGVyc2lzdGVudCgpCiB7CiAgICAgcmV0dXJu
IG1fd2Vic2l0ZURhdGFTdG9yZS0+aXNQZXJzaXN0ZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUuaCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5oCmluZGV4IDI2N2Q2OWMzMzg0
OWEwOGY4MjI4ODcxZTAxZWQ4NjFhZDgzYjhhN2UuLmNhNzRkYmNjNDY3ZTY1NjUyZDM3NTNmZDNi
Y2QyNDMyOTgyZjg3NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
QVBJV2Vic2l0ZURhdGFTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
QVBJV2Vic2l0ZURhdGFTdG9yZS5oCkBAIC0yNiw3ICsyNiw3IEBACiAjaWZuZGVmIEFQSVdlYnNp
dGVEYXRhU3RvcmVfaAogI2RlZmluZSBBUElXZWJzaXRlRGF0YVN0b3JlX2gKIAotI2luY2x1ZGUg
IkFQSU9iamVjdC5oIgorI2luY2x1ZGUgIkFQSUhUVFBDb29raWVTdG9yYWdlLmgiCiAjaW5jbHVk
ZSAiV2Vic2l0ZURhdGFTdG9yZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvU2Vzc2lvbklELmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFj
ZSBBUEkgewogCiBjbGFzcyBXZWJzaXRlRGF0YVN0b3JlIGZpbmFsIDogcHVibGljIE9iamVjdElt
cGw8T2JqZWN0OjpUeXBlOjpXZWJzaXRlRGF0YVN0b3JlPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFJlZlB0cjxXZWJzaXRlRGF0YVN0b3JlPiBkZWZhdWx0RGF0YVN0b3JlKCk7CisgICAgc3RhdGlj
IFJlZjxXZWJzaXRlRGF0YVN0b3JlPiBkZWZhdWx0RGF0YVN0b3JlKCk7CiAgICAgc3RhdGljIFJl
ZjxXZWJzaXRlRGF0YVN0b3JlPiBjcmVhdGVOb25QZXJzaXN0ZW50RGF0YVN0b3JlKCk7CiAgICAg
c3RhdGljIFJlZjxXZWJzaXRlRGF0YVN0b3JlPiBjcmVhdGUoV2ViS2l0OjpXZWJzaXRlRGF0YVN0
b3JlOjpDb25maWd1cmF0aW9uKTsKIApAQCAtNDksNiArNDksNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCByZWdpc3RlclNoYXJlZFJlc291cmNlTG9hZE9ic2VydmVyKCk7CiAKICAgICBXZWJLaXQ6Oldl
YnNpdGVEYXRhU3RvcmUmIHdlYnNpdGVEYXRhU3RvcmUoKSB7IHJldHVybiAqbV93ZWJzaXRlRGF0
YVN0b3JlOyB9CisgICAgSFRUUENvb2tpZVN0b3JhZ2UmIGh0dHBDb29raWVTdG9yYWdlKCk7CiAK
ICAgICBzdGF0aWMgU3RyaW5nIGRlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCk7CiAg
ICAgc3RhdGljIFN0cmluZyBkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCk7CkBAIC03MCw2
ICs3MSw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIFN0cmluZyB3ZWJzaXRlRGF0YURpcmVjdG9y
eUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmIGRpcmVjdG9yeU5hbWUpOwog
CiAgICAgUmVmUHRyPFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZT4gbV93ZWJzaXRlRGF0YVN0b3Jl
OworICAgIFJlZlB0cjxIVFRQQ29va2llU3RvcmFnZT4gbV9hcGlIVFRQQ29va2llU3RvcmFnZTsK
IH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0Nv
b2tpZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29va2ll
TWFuYWdlci5jcHAKaW5kZXggMjc4ZTgzYzUxZTA0MDhhM2NkYmNjMTU4ZDUzZTNhNGIxZjc2NDlm
Ny4uODBhYzhhODYyNDA5MTRmYThhZTA4ZjM4YWY5OGFjY2E1ZGE5NTRlYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29va2llTWFuYWdlci5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29va2llTWFuYWdlci5jcHAKQEAgLTYx
LDE3ICs2MSwxNyBAQCB2b2lkIFdLQ29va2llTWFuYWdlckRlbGV0ZUFsbENvb2tpZXNNb2RpZmll
ZEFmdGVyRGF0ZShXS0Nvb2tpZU1hbmFnZXJSZWYgY29va2llTQogICAgIHVzaW5nIG5hbWVzcGFj
ZSBzdGQ6OmNocm9ubzsKIAogICAgIGF1dG8gdGltZSA9IHN5c3RlbV9jbG9jazo6dGltZV9wb2lu
dChkdXJhdGlvbl9jYXN0PHN5c3RlbV9jbG9jazo6ZHVyYXRpb24+KGR1cmF0aW9uPGRvdWJsZT4o
ZGF0ZSkpKTsKLSAgICB0b0ltcGwoY29va2llTWFuYWdlclJlZiktPmRlbGV0ZUFsbENvb2tpZXNN
b2RpZmllZFNpbmNlKFdlYkNvcmU6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpLCB0aW1l
KTsKKyAgICB0b0ltcGwoY29va2llTWFuYWdlclJlZiktPmRlbGV0ZUFsbENvb2tpZXNNb2RpZmll
ZFNpbmNlKFdlYkNvcmU6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpLCB0aW1lLCBbXShD
YWxsYmFja0Jhc2U6OkVycm9yKXt9KTsKIH0KIAogdm9pZCBXS0Nvb2tpZU1hbmFnZXJTZXRIVFRQ
Q29va2llQWNjZXB0UG9saWN5KFdLQ29va2llTWFuYWdlclJlZiBjb29raWVNYW5hZ2VyLCBXS0hU
VFBDb29raWVBY2NlcHRQb2xpY3kgcG9saWN5KQogewotICAgIHRvSW1wbChjb29raWVNYW5hZ2Vy
KS0+c2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSh0b0hUVFBDb29raWVBY2NlcHRQb2xpY3kocG9s
aWN5KSk7CisgICAgdG9JbXBsKGNvb2tpZU1hbmFnZXIpLT5zZXRIVFRQQ29va2llQWNjZXB0UG9s
aWN5KFdlYkNvcmU6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpLCB0b0hUVFBDb29raWVB
Y2NlcHRQb2xpY3kocG9saWN5KSwgW10oQ2FsbGJhY2tCYXNlOjpFcnJvcil7fSk7CiB9CiAKIHZv
aWQgV0tDb29raWVNYW5hZ2VyR2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShXS0Nvb2tpZU1hbmFn
ZXJSZWYgY29va2llTWFuYWdlciwgdm9pZCogY29udGV4dCwgV0tDb29raWVNYW5hZ2VyR2V0SFRU
UENvb2tpZUFjY2VwdFBvbGljeUZ1bmN0aW9uIGNhbGxiYWNrKQogewotICAgIHRvSW1wbChjb29r
aWVNYW5hZ2VyKS0+Z2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSh0b0dlbmVyaWNDYWxsYmFja0Z1
bmN0aW9uPFdLSFRUUENvb2tpZUFjY2VwdFBvbGljeSwgSFRUUENvb2tpZUFjY2VwdFBvbGljeT4o
Y29udGV4dCwgY2FsbGJhY2spKTsKKyAgICB0b0ltcGwoY29va2llTWFuYWdlciktPmdldEhUVFBD
b29raWVBY2NlcHRQb2xpY3koV2ViQ29yZTo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCks
IHRvR2VuZXJpY0NhbGxiYWNrRnVuY3Rpb248V0tIVFRQQ29va2llQWNjZXB0UG9saWN5LCBIVFRQ
Q29va2llQWNjZXB0UG9saWN5Pihjb250ZXh0LCBjYWxsYmFjaykpOwogfQogCiB2b2lkIFdLQ29v
a2llTWFuYWdlclNldENvb2tpZVN0b3JhZ2VQYXJ0aXRpb25pbmdFbmFibGVkKFdLQ29va2llTWFu
YWdlclJlZiBjb29raWVNYW5hZ2VyLCBib29sIGVuYWJsZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwCmluZGV4
IGE3N2MxYTg5ZDVjZGU1ZWI5MmZmODE5NjZmZjgyMzc5MjdjNmU0OTguLjZjYTY5YzZkMmZkNzZl
NGEwNGQwZWMxNTc0YzJjMTBlMzBlNzVhY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwCkBAIC0zNyw3ICsz
Nyw3IEBAIFdLVHlwZUlEIFdLV2Vic2l0ZURhdGFTdG9yZUdldFR5cGVJRCgpCiAKIFdLV2Vic2l0
ZURhdGFTdG9yZVJlZiBXS1dlYnNpdGVEYXRhU3RvcmVHZXREZWZhdWx0RGF0YVN0b3JlKCkKIHsK
LSAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSShBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRE
YXRhU3RvcmUoKS5nZXQoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoQVBJOjpXZWJzaXRl
RGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlKCkucHRyKCkpOwogfQogCiBXS1dlYnNpdGVEYXRh
U3RvcmVSZWYgV0tXZWJzaXRlRGF0YVN0b3JlQ3JlYXRlTm9uUGVyc2lzdGVudERhdGFTdG9yZSgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vz
c1Bvb2wubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bv
b2wubW0KaW5kZXggM2Y0M2JmYzY1ZGQ3NDBiOTYwYzhhMDFhZTM2NDk3NDgxNDNkZjdkNC4uOGY4
N2RhY2U4MjcyZGViM2MyMjdmYTA1MzI1ODAzNDU2Y2ZiNDIxZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQpAQCAtMTk2LDcg
KzE5Niw3IEBAIHN0YXRpYyBXZWJLaXQ6OkhUVFBDb29raWVBY2NlcHRQb2xpY3kgdG9IVFRQQ29v
a2llQWNjZXB0UG9saWN5KE5TSFRUUENvb2tpZUFjY2VwCiAKIC0gKHZvaWQpX3NldENvb2tpZUFj
Y2VwdFBvbGljeTooTlNIVFRQQ29va2llQWNjZXB0UG9saWN5KXBvbGljeQogewotICAgIF9wcm9j
ZXNzUG9vbC0+c3VwcGxlbWVudDxXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eT4oKS0+c2V0
SFRUUENvb2tpZUFjY2VwdFBvbGljeSh0b0hUVFBDb29raWVBY2NlcHRQb2xpY3kocG9saWN5KSk7
CisgICAgX3Byb2Nlc3NQb29sLT5zdXBwbGVtZW50PFdlYktpdDo6V2ViQ29va2llTWFuYWdlclBy
b3h5PigpLT5zZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KFdlYkNvcmU6OlNlc3Npb25JRDo6ZGVm
YXVsdFNlc3Npb25JRCgpLCB0b0hUVFBDb29raWVBY2NlcHRQb2xpY3kocG9saWN5KSwgW10oV2Vi
S2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yKXt9KTsKIH0KIAogLSAoaWQpX29iamVjdEZvckJ1bmRs
ZVBhcmFtZXRlcjooTlNTdHJpbmcgKilwYXJhbWV0ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KaW5kZXggNzEz
ODE5ZTQ3NDBhZDM0ZDkwMThkYzg5MDM3MjE5MDQ5ZmRmMWJjNy4uYmU4YmVkZDJmMjE3NTgwZjU3
N2U3MDM5MTdjNjI3YjAwOTg2OWY0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KQEAgLTMxLDYgKzMxLDcg
QEAKICNpbXBvcnQgIldLTlNBcnJheS5oIgogI2ltcG9ydCAiV0tXZWJzaXRlRGF0YVJlY29yZElu
dGVybmFsLmgiCiAjaW1wb3J0ICJXZWJzaXRlRGF0YUZldGNoT3B0aW9uLmgiCisjaW1wb3J0ICJf
V0tIVFRQQ29va2llU3RvcmFnZUludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tXZWJzaXRlRGF0YVN0
b3JlQ29uZmlndXJhdGlvbi5oIgogI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CiAKQEAgLTM4LDcg
KzM5LDcgQEAgQGltcGxlbWVudGF0aW9uIFdLV2Vic2l0ZURhdGFTdG9yZQogCiArIChXS1dlYnNp
dGVEYXRhU3RvcmUgKilkZWZhdWx0RGF0YVN0b3JlCiB7Ci0gICAgcmV0dXJuIFdlYktpdDo6d3Jh
cHBlcigqQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlKCkuZ2V0KCkpOwor
ICAgIHJldHVybiBXZWJLaXQ6OndyYXBwZXIoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0
RGF0YVN0b3JlKCkuZ2V0KCkpOwogfQogCiArIChXS1dlYnNpdGVEYXRhU3RvcmUgKilub25QZXJz
aXN0ZW50RGF0YVN0b3JlCkBAIC0xOTQsNiArMTk1LDExIEBAIC0gKHZvaWQpX3NldFJlc291cmNl
TG9hZFN0YXRpc3RpY3NFbmFibGVkOihCT09MKWVuYWJsZWQKICAgICBfd2Vic2l0ZURhdGFTdG9y
ZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKGVu
YWJsZWQpOwogfQogCistIChfV0tIVFRQQ29va2llU3RvcmFnZSAqKV9odHRwQ29va2llU3RvcmFn
ZQoreworICAgIHJldHVybiBXZWJLaXQ6OndyYXBwZXIoX3dlYnNpdGVEYXRhU3RvcmUtPmh0dHBD
b29raWVTdG9yYWdlKCkpOworfQorCiBAZW5kCiAKICNlbmRpZiAvLyBXS19BUElfRU5BQkxFRApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVE
YXRhU3RvcmVQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaAppbmRleCA0OWQ5YmU2YWQxMTliM2ExMTIxNTJiNmJh
ZmUzOGFkZTI2NjJlNmViLi5mYzE4YmUyODM5YWJkYWU1ZDg2MTMwYjEyOTYxODczNTNhNjk1MWFl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0
ZURhdGFTdG9yZVByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaApAQCAtMjksNiArMjksNyBAQAogCiBOU19B
U1NVTUVfTk9OTlVMTF9CRUdJTgogCitAY2xhc3MgX1dLSFRUUENvb2tpZVN0b3JhZ2U7CiBAY2xh
c3MgX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb247CiAKIHR5cGVkZWYgTlNfT1BUSU9O
UyhOU1VJbnRlZ2VyLCBfV0tXZWJzaXRlRGF0YVN0b3JlRmV0Y2hPcHRpb25zKSB7CkBAIC00Myw2
ICs0NCw4IEBAIHR5cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRlZ2VyLCBfV0tXZWJzaXRlRGF0YVN0
b3JlRmV0Y2hPcHRpb25zKSB7CiAKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldFJl
c291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkOikgQk9PTCBfcmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0VuYWJsZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTIpLCBpb3MoMTAuMCkpOwogCitA
cHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIF9XS0hUVFBDb29raWVTdG9yYWdlICpfaHR0
cENvb2tpZVN0b3JhZ2UgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhX
S19JT1NfVEJBKSk7CisKIEBlbmQKIAogTlNfQVNTVU1FX05PTk5VTExfRU5ECmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0hUVFBDb29raWVTdG9yYWdl
LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0hUVFBDb29raWVTdG9y
YWdlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNzNkY2E4YmQwZWFlZGU4NDU4NzJiMzA3NjdkYjNiZmQ3N2Y3MmQ4
NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLSFRUUENvb2tpZVN0b3JhZ2UuaApAQCAtMCwwICsxLDUzIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lt
cG9ydCA8V2ViS2l0L1dLRm91bmRhdGlvbi5oPgorCisjaWYgV0tfQVBJX0VOQUJMRUQKKworI2lt
cG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CisKK05TX0FTU1VNRV9OT05OVUxMX0JFR0lO
CisKK1dLX0NMQVNTX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJB
KSkKK0BpbnRlcmZhY2UgX1dLSFRUUENvb2tpZVN0b3JhZ2UgOiBOU09iamVjdAorCistICh2b2lk
KWZldGNoQ29va2llczoodm9pZCAoXikoTlNBcnJheTxOU0hUVFBDb29raWUgKj4gKl9OdWxsYWJs
ZSkpY29tcGxldGlvbkhhbmRsZXI7CistICh2b2lkKWZldGNoQ29va2llc0ZvclVSTDooTlNVUkwg
Kil1cmwgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TQXJyYXk8TlNIVFRQQ29va2llICo+
ICpfTnVsbGFibGUpKWNvbXBsZXRpb25IYW5kbGVyOworCistICh2b2lkKXNldENvb2tpZTooTlNI
VFRQQ29va2llICopY29va2llIGNvbXBsZXRpb25IYW5kbGVyOihudWxsYWJsZSB2b2lkICheKSgp
KWNvbXBsZXRpb25IYW5kbGVyOworLSAodm9pZClzZXRDb29raWVzOihOU0FycmF5PE5TSFRUUENv
b2tpZSAqPiAqKWNvb2tpZXMgZm9yVVJMOihOU1VSTCAqKXVybCBtYWluRG9jdW1lbnRVUkw6KG51
bGxhYmxlIE5TVVJMICopbWFpbkRvY3VtZW50VVJMIGNvbXBsZXRpb25IYW5kbGVyOihudWxsYWJs
ZSB2b2lkICheKSgpKWNvbXBsZXRpb25IYW5kbGVyOworCistICh2b2lkKWRlbGV0ZUNvb2tpZToo
TlNIVFRQQ29va2llICopY29va2llIGNvbXBsZXRpb25IYW5kbGVyOihudWxsYWJsZSB2b2lkIChe
KSgpKWNvbXBsZXRpb25IYW5kbGVyOworLSAodm9pZClyZW1vdmVDb29raWVzU2luY2VEYXRlOihO
U0RhdGUgKilkYXRlIGNvbXBsZXRpb25IYW5kbGVyOihudWxsYWJsZSB2b2lkICheKSgpKWNvbXBs
ZXRpb25IYW5kbGVyOworCistICh2b2lkKXNldENvb2tpZUFjY2VwdFBvbGljeTooTlNIVFRQQ29v
a2llQWNjZXB0UG9saWN5KXBvbGljeSBjb21wbGV0aW9uSGFuZGxlcjoobnVsbGFibGUgdm9pZCAo
XikoKSljb21wbGV0aW9uSGFuZGxlcjsKKy0gKHZvaWQpZmV0Y2hDb29raWVBY2NlcHRQb2xpY3k6
KHZvaWQgKF4pKE5TSFRUUENvb2tpZUFjY2VwdFBvbGljeSkpY29tcGxldGlvbkhhbmRsZXI7CisK
K0BlbmQKKworTlNfQVNTVU1FX05PTk5VTExfRU5ECisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tIVFRQQ29va2llU3RvcmFnZS5tbSBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSFRUUENvb2tpZVN0b3JhZ2Uu
bW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMTJjZGEzM2RkOGYwYmY5NDhlODFlNjRkZmIxZDIzYTRjMjcwNjA2OAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dL
SFRUUENvb2tpZVN0b3JhZ2UubW0KQEAgLTAsMCArMSwxNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1w
b3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIl9XS0hUVFBDb29raWVTdG9yYWdlSW50ZXJuYWwuaCIK
KworI2lmIFdLX0FQSV9FTkFCTEVECisKKyNpbmNsdWRlICJIVFRQQ29va2llQWNjZXB0UG9saWN5
LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9DRk5ldHdvcmtTUEkuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L0Nvb2tpZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CisjaW5jbHVkZSA8d3RmL1JldGFp
blB0ci5oPgorCitzdGF0aWMgTlNBcnJheTxOU0hUVFBDb29raWUgKj4gKmNvcmVDb29raWVzVG9O
U0Nvb2tpZXMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mIGNvcmVDb29raWVzKQorewor
ICAgIE5TTXV0YWJsZUFycmF5PE5TSFRUUENvb2tpZSAqPiAqbnNDb29raWVzID0gW05TTXV0YWJs
ZUFycmF5IGFycmF5V2l0aENhcGFjaXR5OmNvcmVDb29raWVzLnNpemUoKV07CisKKyAgICBmb3Ig
KGF1dG8mIGNvb2tpZSA6IGNvcmVDb29raWVzKQorICAgICAgICBbbnNDb29raWVzIGFkZE9iamVj
dDooTlNIVFRQQ29va2llKiljb29raWVdOworCisgICAgcmV0dXJuIG5zQ29va2llczsKK30KKwor
QGltcGxlbWVudGF0aW9uIF9XS0hUVFBDb29raWVTdG9yYWdlCisKKy0gKHZvaWQpZGVhbGxvYwor
eworICAgIF9jb29raWVTdG9yYWdlLT5BUEk6OkhUVFBDb29raWVTdG9yYWdlOjp+SFRUUENvb2tp
ZVN0b3JhZ2UoKTsKKworICAgIFtzdXBlciBkZWFsbG9jXTsKK30KKworLSAodm9pZClmZXRjaENv
b2tpZXM6KHZvaWQgKF4pKE5TQXJyYXk8TlNIVFRQQ29va2llICo+ICopKWNvbXBsZXRpb25IYW5k
bGVyCit7CisgICAgX2Nvb2tpZVN0b3JhZ2UtPmNvb2tpZXMoW2hhbmRsZXIgPSBhZG9wdE5TKFtj
b21wbGV0aW9uSGFuZGxlciBjb3B5XSldKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiBj
b29raWVzKSB7CisgICAgICAgIGF1dG8gcmF3SGFuZGxlciA9ICh2b2lkICheKShOU0FycmF5PE5T
SFRUUENvb2tpZSAqPiAqKSloYW5kbGVyLmdldCgpOworICAgICAgICByYXdIYW5kbGVyKGNvcmVD
b29raWVzVG9OU0Nvb2tpZXMoY29va2llcykpOworICAgIH0pOworfQorCistICh2b2lkKWZldGNo
Q29va2llc0ZvclVSTDooTlNVUkwgKil1cmwgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5T
QXJyYXk8TlNIVFRQQ29va2llICo+ICopKWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAgX2Nvb2tp
ZVN0b3JhZ2UtPmNvb2tpZXModXJsLCBbaGFuZGxlciA9IGFkb3B0TlMoW2NvbXBsZXRpb25IYW5k
bGVyIGNvcHldKV0oY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mIGNvb2tpZXMpIHsKKyAg
ICAgICAgYXV0byByYXdIYW5kbGVyID0gKHZvaWQgKF4pKE5TQXJyYXk8TlNIVFRQQ29va2llICo+
ICopKWhhbmRsZXIuZ2V0KCk7CisgICAgICAgIHJhd0hhbmRsZXIoY29yZUNvb2tpZXNUb05TQ29v
a2llcyhjb29raWVzKSk7CisgICAgfSk7Cit9CisKKy0gKHZvaWQpc2V0Q29va2llOihOU0hUVFBD
b29raWUgKiljb29raWUgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKCkpY29tcGxldGlvbkhh
bmRsZXIKK3sKKyAgICBfY29va2llU3RvcmFnZS0+c2V0Q29va2llKGNvb2tpZSwgW2hhbmRsZXIg
PSBhZG9wdE5TKFtjb21wbGV0aW9uSGFuZGxlciBjb3B5XSldKCkgeworICAgICAgICBhdXRvIHJh
d0hhbmRsZXIgPSAodm9pZCAoXikoKSloYW5kbGVyLmdldCgpOworICAgICAgICBpZiAocmF3SGFu
ZGxlcikKKyAgICAgICAgICAgIHJhd0hhbmRsZXIoKTsKKyAgICB9KTsKKworfQorCistICh2b2lk
KWRlbGV0ZUNvb2tpZTooTlNIVFRQQ29va2llICopY29va2llIGNvbXBsZXRpb25IYW5kbGVyOih2
b2lkICheKSgpKWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAgX2Nvb2tpZVN0b3JhZ2UtPmRlbGV0
ZUNvb2tpZShjb29raWUsIFtoYW5kbGVyID0gYWRvcHROUyhbY29tcGxldGlvbkhhbmRsZXIgY29w
eV0pXSgpIHsKKyAgICAgICAgYXV0byByYXdIYW5kbGVyID0gKHZvaWQgKF4pKCkpaGFuZGxlci5n
ZXQoKTsKKyAgICAgICAgaWYgKHJhd0hhbmRsZXIpCisgICAgICAgICAgICByYXdIYW5kbGVyKCk7
CisgICAgfSk7Cit9CisKKy0gKHZvaWQpc2V0Q29va2llczooTlNBcnJheTxOU0hUVFBDb29raWUg
Kj4gKiljb29raWVzIGZvclVSTDooTlNVUkwgKilVUkwgbWFpbkRvY3VtZW50VVJMOihOU1VSTCAq
KW1haW5Eb2N1bWVudFVSTCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoKSljb21wbGV0aW9u
SGFuZGxlcgoreworICAgIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+IGNvcmVDb29raWVzOworICAg
IGNvcmVDb29raWVzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoY29va2llcy5jb3VudCk7CisgICAg
Zm9yIChOU0hUVFBDb29raWUgKmNvb2tpZSA6IGNvb2tpZXMpCisgICAgICAgIGNvcmVDb29raWVz
LnVuY2hlY2tlZEFwcGVuZChjb29raWUpOworCisgICAgX2Nvb2tpZVN0b3JhZ2UtPnNldENvb2tp
ZXMoY29yZUNvb2tpZXMsIFVSTCwgbWFpbkRvY3VtZW50VVJMLCBbaGFuZGxlciA9IGFkb3B0TlMo
W2NvbXBsZXRpb25IYW5kbGVyIGNvcHldKV0oKSB7CisgICAgICAgIGF1dG8gcmF3SGFuZGxlciA9
ICh2b2lkICheKSgpKWhhbmRsZXIuZ2V0KCk7CisgICAgICAgIGlmIChyYXdIYW5kbGVyKQorICAg
ICAgICAgICAgcmF3SGFuZGxlcigpOworICAgIH0pOworfQorCistICh2b2lkKXJlbW92ZUNvb2tp
ZXNTaW5jZURhdGU6KE5TRGF0ZSAqKWRhdGUgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKCkp
Y29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICBhdXRvIHN5c3RlbUNsb2NrVGltZSA9IHN0ZDo6Y2hy
b25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQoc3RkOjpjaHJvbm86OmR1cmF0aW9uX2Nhc3Q8
c3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6ZHVyYXRpb24+KHN0ZDo6Y2hyb25vOjpkdXJhdGlv
bjxkb3VibGU+KGRhdGUudGltZUludGVydmFsU2luY2UxOTcwKSkpOworCisgICAgX2Nvb2tpZVN0
b3JhZ2UtPnJlbW92ZUNvb2tpZXNTaW5jZURhdGUoc3lzdGVtQ2xvY2tUaW1lLCBbaGFuZGxlciA9
IGFkb3B0TlMoW2NvbXBsZXRpb25IYW5kbGVyIGNvcHldKV0oKSB7CisgICAgICAgIGF1dG8gcmF3
SGFuZGxlciA9ICh2b2lkICheKSgpKWhhbmRsZXIuZ2V0KCk7CisgICAgICAgIGlmIChyYXdIYW5k
bGVyKQorICAgICAgICAgICAgcmF3SGFuZGxlcigpOworICAgIH0pOworfQorCistICh2b2lkKXNl
dENvb2tpZUFjY2VwdFBvbGljeTooTlNIVFRQQ29va2llQWNjZXB0UG9saWN5KXBvbGljeSBjb21w
bGV0aW9uSGFuZGxlcjoodm9pZCAoXikoKSljb21wbGV0aW9uSGFuZGxlcgoreworICAgIF9jb29r
aWVTdG9yYWdlLT5zZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHBvbGljeSwgW2hhbmRsZXIgPSBh
ZG9wdE5TKFtjb21wbGV0aW9uSGFuZGxlciBjb3B5XSldKCkgeworICAgICAgICBhdXRvIHJhd0hh
bmRsZXIgPSAodm9pZCAoXikoKSloYW5kbGVyLmdldCgpOworICAgICAgICBpZiAocmF3SGFuZGxl
cikKKyAgICAgICAgICAgIHJhd0hhbmRsZXIoKTsKKyAgICB9KTsKK30KKworc3RhdGljIE5TSFRU
UENvb2tpZUFjY2VwdFBvbGljeSBraXRDb29raWVQb2xpY3lUb05TQ29va2llUG9saWN5KFdlYktp
dDo6SFRUUENvb2tpZUFjY2VwdFBvbGljeSBraXRQb2xpY3kpCit7CisgICAgc3dpdGNoIChraXRQ
b2xpY3kpIHsKKyAgICBjYXNlIFdlYktpdDo6SFRUUENvb2tpZUFjY2VwdFBvbGljeUFsd2F5czoK
KyAgICAgICAgcmV0dXJuIE5TSFRUUENvb2tpZUFjY2VwdFBvbGljeUFsd2F5czsKKyAgICBjYXNl
IFdlYktpdDo6SFRUUENvb2tpZUFjY2VwdFBvbGljeU5ldmVyOgorICAgICAgICByZXR1cm4gTlNI
VFRQQ29va2llQWNjZXB0UG9saWN5TmV2ZXI7CisgICAgY2FzZSBXZWJLaXQ6OkhUVFBDb29raWVB
Y2NlcHRQb2xpY3lPbmx5RnJvbU1haW5Eb2N1bWVudERvbWFpbjoKKyAgICAgICAgcmV0dXJuIE5T
SFRUUENvb2tpZUFjY2VwdFBvbGljeU9ubHlGcm9tTWFpbkRvY3VtZW50RG9tYWluOworICAgIGNh
c2UgV2ViS2l0OjpIVFRQQ29va2llQWNjZXB0UG9saWN5RXhjbHVzaXZlbHlGcm9tTWFpbkRvY3Vt
ZW50RG9tYWluOgorICAgICAgICAvLyBDYXN0IHJlcXVpcmVkIGJlY2F1c2Ugb2YgQ0ZOZXR3b3Jr
U1BJLgorICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8TlNIVFRQQ29va2llQWNjZXB0UG9saWN5
PihOU0hUVFBDb29raWVBY2NlcHRQb2xpY3lFeGNsdXNpdmVseUZyb21NYWluRG9jdW1lbnREb21h
aW4pOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0K
KworICAgIHJldHVybiBOU0hUVFBDb29raWVBY2NlcHRQb2xpY3lOZXZlcjsKK30KKworLSAodm9p
ZClmZXRjaENvb2tpZUFjY2VwdFBvbGljeToodm9pZCAoXikoTlNIVFRQQ29va2llQWNjZXB0UG9s
aWN5KSljb21wbGV0aW9uSGFuZGxlcgoreworICAgIF9jb29raWVTdG9yYWdlLT5nZXRIVFRQQ29v
a2llQWNjZXB0UG9saWN5KFtoYW5kbGVyID0gYWRvcHROUyhbY29tcGxldGlvbkhhbmRsZXIgY29w
eV0pXShXZWJLaXQ6OkhUVFBDb29raWVBY2NlcHRQb2xpY3kgcG9saWN5KSB7CisgICAgICAgIGF1
dG8gcmF3SGFuZGxlciA9ICh2b2lkICheKShOU0hUVFBDb29raWVBY2NlcHRQb2xpY3kpKWhhbmRs
ZXIuZ2V0KCk7CisgICAgICAgIHJhd0hhbmRsZXIoa2l0Q29va2llUG9saWN5VG9OU0Nvb2tpZVBv
bGljeShwb2xpY3kpKTsKKyAgICB9KTsKK30KKworI3ByYWdtYSBtYXJrIFdLT2JqZWN0IHByb3Rv
Y29sIGltcGxlbWVudGF0aW9uCisKKy0gKEFQSTo6T2JqZWN0JilfYXBpT2JqZWN0Cit7CisgICAg
cmV0dXJuICpfY29va2llU3RvcmFnZTsKK30KKworQGVuZAorCisjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSFRUUENvb2tpZVN0b3JhZ2VJ
bnRlcm5hbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tIVFRQQ29v
a2llU3RvcmFnZUludGVybmFsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2RlMDFiYTViZjEwNDI0YzlmMzMyMmRh
NDA0NjAxMjY1YjM4YWY2YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLSFRUUENvb2tpZVN0b3JhZ2VJbnRlcm5hbC5oCkBAIC0wLDAgKzEs
NDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJfV0tIVFRQQ29va2llU3RvcmFnZS5oIgorCisj
aWYgV0tfQVBJX0VOQUJMRUQKKworI2ltcG9ydCAiQVBJSFRUUENvb2tpZVN0b3JhZ2UuaCIKKyNp
bXBvcnQgIldLT2JqZWN0LmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitpbmxpbmUgX1dLSFRU
UENvb2tpZVN0b3JhZ2UgKndyYXBwZXIoQVBJOjpIVFRQQ29va2llU3RvcmFnZSYgY29va2llU3Rv
cmFnZSkKK3sKKyAgICBBU1NFUlQoW2Nvb2tpZVN0b3JhZ2Uud3JhcHBlcigpIGlzS2luZE9mQ2xh
c3M6W19XS0hUVFBDb29raWVTdG9yYWdlIGNsYXNzXV0pOworICAgIHJldHVybiAoX1dLSFRUUENv
b2tpZVN0b3JhZ2UgKiljb29raWVTdG9yYWdlLndyYXBwZXIoKTsKK30KKworfQorCitAaW50ZXJm
YWNlIF9XS0hUVFBDb29raWVTdG9yYWdlICgpIDxXS09iamVjdD4geworQHBhY2thZ2UKKyAgICBB
UEk6Ok9iamVjdFN0b3JhZ2U8QVBJOjpIVFRQQ29va2llU3RvcmFnZT4gX2Nvb2tpZVN0b3JhZ2U7
Cit9CitAZW5kCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwCmluZGV4IDQ4Y2FkYzcx
MjRmOWRiZTY4NWJiZGU0OGNiM2ZlZTNkMTgzOTE2ZDguLmE4MzE4NGFmOTAyYjQ3NWM0OGU4ZDBh
Y2Y3ODA2MTcxY2I0ZmJlZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
dXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKQEAgLTczMCw3ICs3
MzAsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjphZGRTaW5nbGVDb29raWUoRXJyb3JT
dHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbgogCiAgICAgLy8gRklYTUU6IFVzaW5nIGFj
dGl2ZVVSTCBoZXJlIHR3aWNlIGlzIGJhc2ljYWxseSBzYXlpbmcgInRoaXMgaXMgYWx3YXlzIGlu
IHRoZSBjb250ZXh0IG9mIHRoZSBtYWluIGRvY3VtZW50IgogICAgIC8vIHdoaWNoIHByb2JhYmx5
IGlzbid0IGFjY3VyYXRlLgotICAgIGNvb2tpZU1hbmFnZXItPnNldENvb2tpZXMoV2ViQ29yZTo6
U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCksIHsgY29va2llIH0sIGFjdGl2ZVVSTCwgYWN0
aXZlVVJMKTsKKyAgICBjb29raWVNYW5hZ2VyLT5zZXRDb29raWVzKFdlYkNvcmU6OlNlc3Npb25J
RDo6ZGVmYXVsdFNlc3Npb25JRCgpLCB7IGNvb2tpZSB9LCBhY3RpdmVVUkwsIGFjdGl2ZVVSTCwg
W10oQ2FsbGJhY2tCYXNlOjpFcnJvcil7fSk7CiAKICAgICBjYWxsYmFjay0+c2VuZFN1Y2Nlc3Mo
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVNYW5h
Z2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQ
cm94eS5jcHAKaW5kZXggMmVhYTVjZTNiZmE1MzU5ODRkZjNlMGU2Yzc1ZGE1YjIxOTI0NjcxOS4u
ZTAyM2I4MjVlZTlmNDkwZDIwN2RlYTI5YTdmN2Y1MzE3YjgyYTNlZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5jcHAKQEAgLTMyLDgg
KzMyLDExIEBACiAjaW5jbHVkZSAiV2ViQ29va2llTWFuYWdlck1lc3NhZ2VzLmgiCiAjaW5jbHVk
ZSAiV2ViQ29va2llTWFuYWdlclByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNz
UG9vbC5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ29va2llLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9T
ZWN1cml0eU9yaWdpbkRhdGEuaD4KIAordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKIG5hbWVz
cGFjZSBXZWJLaXQgewogCiBjb25zdCBjaGFyKiBXZWJDb29raWVNYW5hZ2VyUHJveHk6OnN1cHBs
ZW1lbnROYW1lKCkKQEAgLTk0LDcgKzk3LDcgQEAgdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6
OmRlcmVmV2ViQ29udGV4dFN1cHBsZW1lbnQoKQogICAgIEFQSTo6T2JqZWN0OjpkZXJlZigpOwog
fQogCi12b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6Z2V0SG9zdG5hbWVzV2l0aENvb2tpZXMo
V2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgRnVuY3Rpb248dm9pZCAoQVBJOjpBcnJheSos
IENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCit2b2lkIFdlYkNvb2tp
ZU1hbmFnZXJQcm94eTo6Z2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoU2Vzc2lvbklEIHNlc3Npb25J
RCwgRnVuY3Rpb248dm9pZCAoQVBJOjpBcnJheSosIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNh
bGxiYWNrRnVuY3Rpb24pCiB7CiAgICAgYXV0byBjYWxsYmFjayA9IEFycmF5Q2FsbGJhY2s6OmNy
ZWF0ZShXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pKTsKICAgICB1aW50NjRfdCBjYWxsYmFja0lE
ID0gY2FsbGJhY2stPmNhbGxiYWNrSUQoKTsKQEAgLTExNCwzNyArMTE3LDk2IEBAIHZvaWQgV2Vi
Q29va2llTWFuYWdlclByb3h5OjpkaWRHZXRIb3N0bmFtZXNXaXRoQ29va2llcyhjb25zdCBWZWN0
b3I8U3RyaW5nPiYgaG9zCiAgICAgY2FsbGJhY2stPnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1cm5W
YWx1ZShBUEk6OkFycmF5OjpjcmVhdGVTdHJpbmdBcnJheShob3N0bmFtZXMpLnB0cigpKTsKIH0K
IAotdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZShX
ZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQordm9p
ZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZShTZXNzaW9u
SUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQogewogICAgIHByb2Nlc3NQb29s
KCktPnNlbmRUb05ldHdvcmtpbmdQcm9jZXNzUmVsYXVuY2hpbmdJZk5lY2Vzc2FyeShNZXNzYWdl
czo6V2ViQ29va2llTWFuYWdlcjo6RGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKHNlc3Npb25JRCwg
aG9zdG5hbWUpKTsKIH0KIAotdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRlbGV0ZUFsbENv
b2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCkKK3ZvaWQgV2ViQ29va2llTWFuYWdl
clByb3h5OjpkZWxldGVBbGxDb29raWVzKFNlc3Npb25JRCBzZXNzaW9uSUQpCiB7CiAgICAgcHJv
Y2Vzc1Bvb2woKS0+c2VuZFRvTmV0d29ya2luZ1Byb2Nlc3NSZWxhdW5jaGluZ0lmTmVjZXNzYXJ5
KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpEZWxldGVBbGxDb29raWVzKHNlc3Npb25JRCkp
OwogfQogCi12b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGVsZXRlQWxsQ29va2llc01vZGlm
aWVkU2luY2UoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgc3RkOjpjaHJvbm86OnN5c3Rl
bV9jbG9jazo6dGltZV9wb2ludCB0aW1lKQordm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRl
bGV0ZUNvb2tpZShTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBDb29raWUmIGNvb2tpZSwgRnVu
Y3Rpb248dm9pZCAoQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKK3sK
KyAgICBhdXRvIGNhbGxiYWNrID0gVm9pZENhbGxiYWNrOjpjcmVhdGUoV1RGTW92ZShjYWxsYmFj
a0Z1bmN0aW9uKSk7CisgICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFj
a0lEKCk7CisgICAgbV92b2lkQ2FsbGJhY2tzLnNldChjYWxsYmFja0lELCBXVEZNb3ZlKGNhbGxi
YWNrKSk7CisKKyAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9OZXR3b3JraW5nUHJvY2Vzc1JlbGF1
bmNoaW5nSWZOZWNlc3NhcnkoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OkRlbGV0ZUNvb2tp
ZShzZXNzaW9uSUQsIGNvb2tpZSwgY2FsbGJhY2tJRCkpOworfQorCit2b2lkIFdlYkNvb2tpZU1h
bmFnZXJQcm94eTo6ZGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2UoU2Vzc2lvbklEIHNlc3Np
b25JRCwgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCB0aW1lLCBGdW5jdGlv
bjx2b2lkIChDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQoreworICAg
IGF1dG8gY2FsbGJhY2sgPSBWb2lkQ2FsbGJhY2s6OmNyZWF0ZShXVEZNb3ZlKGNhbGxiYWNrRnVu
Y3Rpb24pKTsKKyAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gY2FsbGJhY2stPmNhbGxiYWNrSUQo
KTsKKyAgICBtX3ZvaWRDYWxsYmFja3Muc2V0KGNhbGxiYWNrSUQsIFdURk1vdmUoY2FsbGJhY2sp
KTsKKworICAgIHByb2Nlc3NQb29sKCktPnNlbmRUb05ldHdvcmtpbmdQcm9jZXNzUmVsYXVuY2hp
bmdJZk5lY2Vzc2FyeShNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6RGVsZXRlQWxsQ29va2ll
c01vZGlmaWVkU2luY2Uoc2Vzc2lvbklELCB0aW1lLCBjYWxsYmFja0lEKSk7Cit9CisKK3ZvaWQg
V2ViQ29va2llTWFuYWdlclByb3h5OjpzZXRDb29raWUoU2Vzc2lvbklEIHNlc3Npb25JRCwgY29u
c3QgQ29va2llJiBjb29raWUsIEZ1bmN0aW9uPHZvaWQgKENhbGxiYWNrQmFzZTo6RXJyb3IpPiYm
IGNhbGxiYWNrRnVuY3Rpb24pCiB7Ci0gICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvTmV0d29ya2lu
Z1Byb2Nlc3NSZWxhdW5jaGluZ0lmTmVjZXNzYXJ5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2Vy
OjpEZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZShzZXNzaW9uSUQsIHRpbWUpKTsKKyAgICBh
dXRvIGNhbGxiYWNrID0gVm9pZENhbGxiYWNrOjpjcmVhdGUoV1RGTW92ZShjYWxsYmFja0Z1bmN0
aW9uKSk7CisgICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7
CisgICAgbV92b2lkQ2FsbGJhY2tzLnNldChjYWxsYmFja0lELCBXVEZNb3ZlKGNhbGxiYWNrKSk7
CisKKyAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9OZXR3b3JraW5nUHJvY2Vzc1JlbGF1bmNoaW5n
SWZOZWNlc3NhcnkoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OlNldENvb2tpZShzZXNzaW9u
SUQsIGNvb2tpZSwgY2FsbGJhY2tJRCkpOwogfQogCi12b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94
eTo6c2V0Q29va2llcyhXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBWZWN0b3I8
V2ViQ29yZTo6Q29va2llPiYgY29va2llcywgY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwsIGNvbnN0
IFdlYkNvcmU6OlVSTCYgbWFpbkRvY3VtZW50VVJMKQordm9pZCBXZWJDb29raWVNYW5hZ2VyUHJv
eHk6OnNldENvb2tpZXMoU2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVmVjdG9yPENvb2tpZT4m
IGNvb2tpZXMsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBVUkwmIG1haW5Eb2N1bWVudFVSTCwgRnVu
Y3Rpb248dm9pZCAoQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsK
LSAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9OZXR3b3JraW5nUHJvY2Vzc1JlbGF1bmNoaW5nSWZO
ZWNlc3NhcnkoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OlNldENvb2tpZXMoc2Vzc2lvbklE
LCBjb29raWVzLCB1cmwsIG1haW5Eb2N1bWVudFVSTCkpOworICAgIGF1dG8gY2FsbGJhY2sgPSBW
b2lkQ2FsbGJhY2s6OmNyZWF0ZShXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pKTsKKyAgICB1aW50
NjRfdCBjYWxsYmFja0lEID0gY2FsbGJhY2stPmNhbGxiYWNrSUQoKTsKKyAgICBtX3ZvaWRDYWxs
YmFja3Muc2V0KGNhbGxiYWNrSUQsIFdURk1vdmUoY2FsbGJhY2spKTsKKworICAgIHByb2Nlc3NQ
b29sKCktPnNlbmRUb05ldHdvcmtpbmdQcm9jZXNzUmVsYXVuY2hpbmdJZk5lY2Vzc2FyeShNZXNz
YWdlczo6V2ViQ29va2llTWFuYWdlcjo6U2V0Q29va2llcyhzZXNzaW9uSUQsIGNvb2tpZXMsIHVy
bCwgbWFpbkRvY3VtZW50VVJMLCBjYWxsYmFja0lEKSk7CiB9CiAKLXZvaWQgV2ViQ29va2llTWFu
YWdlclByb3h5OjpzdGFydE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMoV2ViQ29yZTo6U2Vzc2lvbklE
IHNlc3Npb25JRCkKK3ZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpnZXRBbGxDb29raWVzKFNl
c3Npb25JRCBzZXNzaW9uSUQsIEZ1bmN0aW9uPHZvaWQgKGNvbnN0IFZlY3RvcjxDb29raWU+Jiwg
Q2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKK3sKKyAgICBhdXRvIGNh
bGxiYWNrID0gR2V0Q29va2llc0NhbGxiYWNrOjpjcmVhdGUoV1RGTW92ZShjYWxsYmFja0Z1bmN0
aW9uKSk7CisgICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7
CisgICAgbV9nZXRDb29raWVzQ2FsbGJhY2tzLnNldChjYWxsYmFja0lELCBXVEZNb3ZlKGNhbGxi
YWNrKSk7CisKKyAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9OZXR3b3JraW5nUHJvY2Vzc1JlbGF1
bmNoaW5nSWZOZWNlc3NhcnkoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OkdldEFsbENvb2tp
ZXMoc2Vzc2lvbklELCBjYWxsYmFja0lEKSk7Cit9CisKK3ZvaWQgV2ViQ29va2llTWFuYWdlclBy
b3h5OjpnZXRDb29raWVzKFNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgdXJsLCBGdW5j
dGlvbjx2b2lkIChjb25zdCBWZWN0b3I8Q29va2llPiYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYm
IGNhbGxiYWNrRnVuY3Rpb24pCit7CisgICAgYXV0byBjYWxsYmFjayA9IEdldENvb2tpZXNDYWxs
YmFjazo6Y3JlYXRlKFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbikpOworICAgIHVpbnQ2NF90IGNh
bGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgpOworICAgIG1fZ2V0Q29va2llc0NhbGxi
YWNrcy5zZXQoY2FsbGJhY2tJRCwgV1RGTW92ZShjYWxsYmFjaykpOworCisgICAgcHJvY2Vzc1Bv
b2woKS0+c2VuZFRvTmV0d29ya2luZ1Byb2Nlc3NSZWxhdW5jaGluZ0lmTmVjZXNzYXJ5KE1lc3Nh
Z2VzOjpXZWJDb29raWVNYW5hZ2VyOjpHZXRDb29raWVzKHNlc3Npb25JRCwgdXJsLCBjYWxsYmFj
a0lEKSk7Cit9CisKK3ZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpkaWRTZXRDb29raWVzKHVp
bnQ2NF90IGNhbGxiYWNrSUQpCit7CisgICAgbV92b2lkQ2FsbGJhY2tzLnRha2UoY2FsbGJhY2tJ
RCktPnBlcmZvcm1DYWxsYmFjaygpOworfQorCit2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6
ZGlkR2V0Q29va2llcyhjb25zdCBWZWN0b3I8Q29va2llPiYgY29va2llcywgdWludDY0X3QgY2Fs
bGJhY2tJRCkKK3sKKyAgICBtX2dldENvb2tpZXNDYWxsYmFja3MudGFrZShjYWxsYmFja0lEKS0+
cGVyZm9ybUNhbGxiYWNrV2l0aFJldHVyblZhbHVlKGNvb2tpZXMpOworfQorCit2b2lkIFdlYkNv
b2tpZU1hbmFnZXJQcm94eTo6ZGlkRGVsZXRlQ29va2llcyh1aW50NjRfdCBjYWxsYmFja0lEKQor
eworICAgIG1fdm9pZENhbGxiYWNrcy50YWtlKGNhbGxiYWNrSUQpLT5wZXJmb3JtQ2FsbGJhY2so
KTsKK30KKwordm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OnN0YXJ0T2JzZXJ2aW5nQ29va2ll
Q2hhbmdlcyhTZXNzaW9uSUQgc2Vzc2lvbklEKQogewogICAgIHByb2Nlc3NQb29sKCktPnNlbmRU
b05ldHdvcmtpbmdQcm9jZXNzUmVsYXVuY2hpbmdJZk5lY2Vzc2FyeShNZXNzYWdlczo6V2ViQ29v
a2llTWFuYWdlcjo6U3RhcnRPYnNlcnZpbmdDb29raWVDaGFuZ2VzKHNlc3Npb25JRCkpOwogfQog
Ci12b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6c3RvcE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMo
V2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCkKK3ZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5
OjpzdG9wT2JzZXJ2aW5nQ29va2llQ2hhbmdlcyhTZXNzaW9uSUQgc2Vzc2lvbklEKQogewogICAg
IHByb2Nlc3NQb29sKCktPnNlbmRUb05ldHdvcmtpbmdQcm9jZXNzUmVsYXVuY2hpbmdJZk5lY2Vz
c2FyeShNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6U3RvcE9ic2VydmluZ0Nvb2tpZUNoYW5n
ZXMoc2Vzc2lvbklEKSk7CiB9CiAKLXZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpzZXRDb29r
aWVPYnNlcnZlckNhbGxiYWNrKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHN0ZDo6ZnVu
Y3Rpb248dm9pZCAoKT4mJiBjYWxsYmFjaykKK3ZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5Ojpz
ZXRDb29raWVPYnNlcnZlckNhbGxiYWNrKFNlc3Npb25JRCBzZXNzaW9uSUQsIHN0ZDo6ZnVuY3Rp
b248dm9pZCAoKT4mJiBjYWxsYmFjaykKIHsKICAgICBpZiAoY2FsbGJhY2spCiAgICAgICAgIG1f
Y29va2llT2JzZXJ2ZXJzLnNldChzZXNzaW9uSUQsIFdURk1vdmUoY2FsbGJhY2spKTsKQEAgLTE1
MiwxNCArMjE0LDE0IEBAIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpzZXRDb29raWVPYnNl
cnZlckNhbGxiYWNrKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uCiAgICAgICAgIG1fY29va2ll
T2JzZXJ2ZXJzLnJlbW92ZShzZXNzaW9uSUQpOwogfQogCi12b2lkIFdlYkNvb2tpZU1hbmFnZXJQ
cm94eTo6Y29va2llc0RpZENoYW5nZShXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQordm9p
ZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmNvb2tpZXNEaWRDaGFuZ2UoU2Vzc2lvbklEIHNlc3Np
b25JRCkKIHsKICAgICBtX2NsaWVudC5jb29raWVzRGlkQ2hhbmdlKHRoaXMpOwogICAgIGlmIChh
dXRvIGNhbGxiYWNrID0gbV9jb29raWVPYnNlcnZlcnMuZ2V0KHNlc3Npb25JRCkpCiAgICAgICAg
IGNhbGxiYWNrKCk7CiB9CiAKLXZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpzZXRIVFRQQ29v
a2llQWNjZXB0UG9saWN5KEhUVFBDb29raWVBY2NlcHRQb2xpY3kgcG9saWN5KQordm9pZCBXZWJD
b29raWVNYW5hZ2VyUHJveHk6OnNldEhUVFBDb29raWVBY2NlcHRQb2xpY3koU2Vzc2lvbklELCBI
VFRQQ29va2llQWNjZXB0UG9saWN5IHBvbGljeSwgRnVuY3Rpb248dm9pZCAoQ2FsbGJhY2tCYXNl
OjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKICNpZiBQTEFURk9STShDT0NPQSkKICAg
ICBpZiAoIXByb2Nlc3NQb29sKCktPmlzVXNpbmdUZXN0aW5nTmV0d29ya1Nlc3Npb24oKSkKQEAg
LTE3MiwxMSArMjM0LDE2IEBAIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpzZXRIVFRQQ29v
a2llQWNjZXB0UG9saWN5KEhUVFBDb29raWVBY2NlcHRQb2xpY3kgcG9sCiAgICAgLy8gVGhlIHBv
bGljeSBpcyBub3Qgc2VudCB0byBuZXdseSBjcmVhdGVkIHByb2Nlc3NlcyAob25seSBTb3VwIGRv
ZXMgdGhhdCB2aWEgc2V0SW5pdGlhbEhUVFBDb29raWVBY2NlcHRQb2xpY3koKSkuIFRoaXMgaXMg
bm90IGEgc2VyaW91cyBwcm9ibGVtLCBiZWNhdXNlOgogICAgIC8vIC0gV2hlbiB0ZXN0aW5nLCB3
ZSBvbmx5IGhhdmUgb25lIFdlYlByb2Nlc3MgYW5kIG9uZSBOZXR3b3JrUHJvY2VzcywgYW5kIFdl
YktpdFRlc3RSdW5uZXIgbmV2ZXIgcmVzdGFydHMgdGhlbTsKICAgICAvLyAtIFdoZW4gbm90IHRl
c3RpbmcsIENvY29hIGhhcyB0aGUgcG9saWN5IHBlcnNpc3RlZCwgYW5kIHRodXMgbmV3IHByb2Nl
c3NlcyB1c2UgaXQgKGV2ZW4gZm9yIGVwaGVtZXJhbCBzZXNzaW9ucykuCi0gICAgcHJvY2Vzc1Bv
b2woKS0+c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpTZXRI
VFRQQ29va2llQWNjZXB0UG9saWN5KHBvbGljeSkpOwotICAgIHByb2Nlc3NQb29sKCktPnNlbmRU
b05ldHdvcmtpbmdQcm9jZXNzKE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpTZXRIVFRQQ29v
a2llQWNjZXB0UG9saWN5KHBvbGljeSkpOworICAgIHByb2Nlc3NQb29sKCktPnNlbmRUb0FsbFBy
b2Nlc3NlcyhNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6U2V0SFRUUENvb2tpZUFjY2VwdFBv
bGljeShwb2xpY3ksIDApKTsKKworICAgIGF1dG8gY2FsbGJhY2sgPSBWb2lkQ2FsbGJhY2s6OmNy
ZWF0ZShXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pKTsKKyAgICB1aW50NjRfdCBjYWxsYmFja0lE
ID0gY2FsbGJhY2stPmNhbGxiYWNrSUQoKTsKKyAgICBtX3ZvaWRDYWxsYmFja3Muc2V0KGNhbGxi
YWNrSUQsIFdURk1vdmUoY2FsbGJhY2spKTsKKworICAgIHByb2Nlc3NQb29sKCktPnNlbmRUb05l
dHdvcmtpbmdQcm9jZXNzKE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpTZXRIVFRQQ29va2ll
QWNjZXB0UG9saWN5KHBvbGljeSwgY2FsbGJhY2tJRCkpOwogfQogCi12b2lkIFdlYkNvb2tpZU1h
bmFnZXJQcm94eTo6Z2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShGdW5jdGlvbjx2b2lkIChIVFRQ
Q29va2llQWNjZXB0UG9saWN5LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4gY2FsbGJhY2tGdW5jdGlv
bikKK3ZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpnZXRIVFRQQ29va2llQWNjZXB0UG9saWN5
KFNlc3Npb25JRCwgRnVuY3Rpb248dm9pZCAoSFRUUENvb2tpZUFjY2VwdFBvbGljeSwgQ2FsbGJh
Y2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKICAgICBhdXRvIGNhbGxiYWNr
ID0gSFRUUENvb2tpZUFjY2VwdFBvbGljeUNhbGxiYWNrOjpjcmVhdGUoV1RGTW92ZShjYWxsYmFj
a0Z1bmN0aW9uKSk7CiAKQEAgLTE4OCwxMyArMjU1LDEyIEBAIHZvaWQgV2ViQ29va2llTWFuYWdl
clByb3h5OjpnZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KEZ1bmN0aW9uPHZvaWQgKEhUVFBDb29r
aWVBCiAKIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpkaWRHZXRIVFRQQ29va2llQWNjZXB0
UG9saWN5KHVpbnQzMl90IHBvbGljeSwgdWludDY0X3QgY2FsbGJhY2tJRCkKIHsKLSAgICBSZWZQ
dHI8SFRUUENvb2tpZUFjY2VwdFBvbGljeUNhbGxiYWNrPiBjYWxsYmFjayA9IG1faHR0cENvb2tp
ZUFjY2VwdFBvbGljeUNhbGxiYWNrcy50YWtlKGNhbGxiYWNrSUQpOwotICAgIGlmICghY2FsbGJh
Y2spIHsKLSAgICAgICAgLy8gRklYTUU6IExvZyBlcnJvciBvciBhc3NlcnQuCi0gICAgICAgIHJl
dHVybjsKLSAgICB9CisgICAgbV9odHRwQ29va2llQWNjZXB0UG9saWN5Q2FsbGJhY2tzLnRha2Uo
Y2FsbGJhY2tJRCktPnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZShwb2xpY3kpOworfQog
Ci0gICAgY2FsbGJhY2stPnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZShwb2xpY3kpOwor
dm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRpZFNldEhUVFBDb29raWVBY2NlcHRQb2xpY3ko
dWludDY0X3QgY2FsbGJhY2tJRCkKK3sKKyAgICBtX3ZvaWRDYWxsYmFja3MudGFrZShjYWxsYmFj
a0lEKS0+cGVyZm9ybUNhbGxiYWNrKCk7CiB9CiAKIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5
OjpzZXRDb29raWVTdG9yYWdlUGFydGl0aW9uaW5nRW5hYmxlZChib29sIGVuYWJsZWQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5Lmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmgKaW5kZXgg
Y2Y3OThkN2NjY2M3MTU0MTU5YjlkNjEyZGZmZGJiODZhZWQxZmU3MS4uZmRmODkxZTE1ODlhYzBk
ZDcyOTZmOTNhN2Y0ZjdmYzc1ZmUyOTFmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkuaApAQCAtNTUsNiArNTUsNyBAQCBjbGFzcyBXZWJQ
cm9jZXNzUHJveHk7CiAKIHR5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPEFQSTo6QXJyYXkqPiBBcnJh
eUNhbGxiYWNrOwogdHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8SFRUUENvb2tpZUFjY2VwdFBvbGlj
eT4gSFRUUENvb2tpZUFjY2VwdFBvbGljeUNhbGxiYWNrOwordHlwZWRlZiBHZW5lcmljQ2FsbGJh
Y2s8Y29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mPiBHZXRDb29raWVzQ2FsbGJhY2s7CiAK
IGNsYXNzIFdlYkNvb2tpZU1hbmFnZXJQcm94eSA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJ
OjpPYmplY3Q6OlR5cGU6OkNvb2tpZU1hbmFnZXI+LCBwdWJsaWMgV2ViQ29udGV4dFN1cHBsZW1l
bnQsIHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgewogcHVibGljOgpAQCAtNjYsMTQgKzY3
LDIwIEBAIHB1YmxpYzoKICAgICB2b2lkIGluaXRpYWxpemVDbGllbnQoY29uc3QgV0tDb29raWVN
YW5hZ2VyQ2xpZW50QmFzZSopOwogICAgIAogICAgIHZvaWQgZ2V0SG9zdG5hbWVzV2l0aENvb2tp
ZXMoV2ViQ29yZTo6U2Vzc2lvbklELCBGdW5jdGlvbjx2b2lkIChBUEk6OkFycmF5KiwgQ2FsbGJh
Y2tCYXNlOjpFcnJvcik+JiYpOworICAgIHZvaWQgZGVsZXRlQ29va2llKFdlYkNvcmU6OlNlc3Np
b25JRCwgY29uc3QgV2ViQ29yZTo6Q29va2llJiwgRnVuY3Rpb248dm9pZCAoQ2FsbGJhY2tCYXNl
OjpFcnJvcik+JiYpOwogICAgIHZvaWQgZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKFdlYkNvcmU6
OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBob3N0bmFtZSk7CiAgICAgdm9pZCBkZWxldGVBbGxD
b29raWVzKFdlYkNvcmU6OlNlc3Npb25JRCk7Ci0gICAgdm9pZCBkZWxldGVBbGxDb29raWVzTW9k
aWZpZWRTaW5jZShXZWJDb3JlOjpTZXNzaW9uSUQsIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6
OnRpbWVfcG9pbnQpOworICAgIHZvaWQgZGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2UoV2Vi
Q29yZTo6U2Vzc2lvbklELCBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50LCBG
dW5jdGlvbjx2b2lkIChDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CiAKLSAgICB2b2lkIHNldENv
b2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklELCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYs
IGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgbWFpbkRvY3VtZW50VVJM
KTsKKyAgICB2b2lkIHNldENvb2tpZShXZWJDb3JlOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6
OkNvb2tpZSYsIEZ1bmN0aW9uPHZvaWQgKENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKKyAgICB2
b2lkIHNldENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklELCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6
Q29va2llPiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgbWFpbkRv
Y3VtZW50VVJMLCBGdW5jdGlvbjx2b2lkIChDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CisKKyAg
ICB2b2lkIGdldEFsbENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklELCBGdW5jdGlvbjx2b2lkIChj
b25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKTsKKyAgICB2b2lkIGdldENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklE
LCBjb25zdCBXZWJDb3JlOjpVUkwmLCBGdW5jdGlvbjx2b2lkIChjb25zdCBWZWN0b3I8V2ViQ29y
ZTo6Q29va2llPiYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsK
KworICAgIHZvaWQgc2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShXZWJDb3JlOjpTZXNzaW9uSUQs
IEhUVFBDb29raWVBY2NlcHRQb2xpY3ksIEZ1bmN0aW9uPHZvaWQgKENhbGxiYWNrQmFzZTo6RXJy
b3IpPiYmKTsKKyAgICB2b2lkIGdldEhUVFBDb29raWVBY2NlcHRQb2xpY3koV2ViQ29yZTo6U2Vz
c2lvbklELCBGdW5jdGlvbjx2b2lkIChIVFRQQ29va2llQWNjZXB0UG9saWN5LCBDYWxsYmFja0Jh
c2U6OkVycm9yKT4mJik7CiAKLSAgICB2b2lkIHNldEhUVFBDb29raWVBY2NlcHRQb2xpY3koSFRU
UENvb2tpZUFjY2VwdFBvbGljeSk7Ci0gICAgdm9pZCBnZXRIVFRQQ29va2llQWNjZXB0UG9saWN5
KEZ1bmN0aW9uPHZvaWQgKEhUVFBDb29raWVBY2NlcHRQb2xpY3ksIENhbGxiYWNrQmFzZTo6RXJy
b3IpPik7CiAgICAgdm9pZCBzZXRDb29raWVTdG9yYWdlUGFydGl0aW9uaW5nRW5hYmxlZChib29s
KTsKIAogICAgIHZvaWQgc3RhcnRPYnNlcnZpbmdDb29raWVDaGFuZ2VzKFdlYkNvcmU6OlNlc3Np
b25JRCk7CkBAIC05NSw2ICsxMDIsMTEgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZEdldEhvc3Ru
YW1lc1dpdGhDb29raWVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgdWludDY0X3QgY2FsbGJhY2tJ
RCk7CiAgICAgdm9pZCBkaWRHZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHVpbnQzMl90IHBvbGlj
eSwgdWludDY0X3QgY2FsbGJhY2tJRCk7CiAKKyAgICB2b2lkIGRpZFNldEhUVFBDb29raWVBY2Nl
cHRQb2xpY3kodWludDY0X3QgY2FsbGJhY2tJRCk7CisgICAgdm9pZCBkaWRTZXRDb29raWVzKHVp
bnQ2NF90IGNhbGxiYWNrSUQpOworICAgIHZvaWQgZGlkR2V0Q29va2llcyhjb25zdCBWZWN0b3I8
V2ViQ29yZTo6Q29va2llPiYsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAgIHZvaWQgZGlkRGVs
ZXRlQ29va2llcyh1aW50NjRfdCBjYWxsYmFja0lEKTsKKwogICAgIHZvaWQgY29va2llc0RpZENo
YW5nZShXZWJDb3JlOjpTZXNzaW9uSUQpOwogCiAgICAgLy8gV2ViQ29udGV4dFN1cHBsZW1lbnQK
QEAgLTExMyw2ICsxMjUsOCBAQCBwcml2YXRlOgogCiAgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVm
UHRyPEFycmF5Q2FsbGJhY2s+PiBtX2FycmF5Q2FsbGJhY2tzOwogICAgIEhhc2hNYXA8dWludDY0
X3QsIFJlZlB0cjxIVFRQQ29va2llQWNjZXB0UG9saWN5Q2FsbGJhY2s+PiBtX2h0dHBDb29raWVB
Y2NlcHRQb2xpY3lDYWxsYmFja3M7CisgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPFZvaWRD
YWxsYmFjaz4+IG1fdm9pZENhbGxiYWNrczsKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8
R2V0Q29va2llc0NhbGxiYWNrPj4gbV9nZXRDb29raWVzQ2FsbGJhY2tzOwogCiAgICAgSGFzaE1h
cDxXZWJDb3JlOjpTZXNzaW9uSUQsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4+IG1fY29va2llT2Jz
ZXJ2ZXJzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29va2ll
TWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNv
b2tpZU1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgppbmRleCAxMmUwMDkwMThiNzRkYzVlOWE2ZDYw
ZGI2OGQyYWI0NGUyZjFhNDNmLi5kY2NiY2YyOWUwNzY2OTc0Yjc0MzU4NzIxMmIxMmMzYmY0Y2Jj
MWUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdl
clByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29r
aWVNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KQEAgLTIzLDYgKzIzLDExIEBACiBtZXNzYWdlcyAt
PiBXZWJDb29raWVNYW5hZ2VyUHJveHkgewogICAgIERpZEdldEhvc3RuYW1lc1dpdGhDb29raWVz
KFZlY3RvcjxTdHJpbmc+IGhvc3RuYW1lcywgdWludDY0X3QgY2FsbGJhY2tJRCk7CiAgICAgRGlk
R2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSh1aW50MzJfdCBwb2xpY3ksIHVpbnQ2NF90IGNhbGxi
YWNrSUQpOwotICAgIAorCisgICAgRGlkU2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSh1aW50NjRf
dCBjYWxsYmFja0lEKTsKKyAgICBEaWREZWxldGVDb29raWVzKHVpbnQ2NF90IGNhbGxiYWNrSUQp
OworICAgIERpZFNldENvb2tpZXModWludDY0X3QgY2FsbGJhY2tJRCk7CisgICAgRGlkR2V0Q29v
a2llcyhWZWN0b3I8V2ViQ29yZTo6Q29va2llPiBjb29raWVzLCB1aW50NjRfdCBjYWxsYmFja0lE
KTsKKwogICAgIENvb2tpZXNEaWRDaGFuZ2UoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCkK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5Lmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5oCmluZGV4IDZiZjk5Mzg2
MmI3ZWFjYTUxYTc1YjU5MDBmYTNmNzQxNjc5YmQ1ZmUuLjU1YjViNjdlMGIyZjk1Yjk3MjI0NWRl
NWM4ZGNjYTc4YjhkNzE2ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJGcmFtZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkZyYW1lUHJv
eHkuaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIldlYkZyYW1lTGlzdGVuZXJQcm94eS5o
IgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVMb2FkZXJUeXBlcy5oPgogI2luY2x1ZGUgPHd0Zi9G
b3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NS
ZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggZjY5NjIzMWJhMDU5ODYxZTE4
ZmVmYzRhYjZmYmY4MjMxMzY5MWU3Ny4uYWFjNmJhNWIzYzE1MjE4Mjg3YjlkMzU4MDY4NTdmNWQ5
ZDA1OWJlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
b29sLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3Bw
CkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiQVBJQXV0b21hdGlvbkNsaWVudC5oIgogI2lu
Y2x1ZGUgIkFQSUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5oIgogI2luY2x1ZGUgIkFQSURv
d25sb2FkQ2xpZW50LmgiCisjaW5jbHVkZSAiQVBJSFRUUENvb2tpZVN0b3JhZ2UuaCIKICNpbmNs
dWRlICJBUElMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudC5oIgogI2luY2x1ZGUgIkFQSVBhZ2VD
b25maWd1cmF0aW9uLmgiCiAjaW5jbHVkZSAiQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgi
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCmluZGV4IDg4NWFkM2Nl
YmIzNjE3OWQxZDZkY2I2NzVlYzViODEzOWRiNjVmNjkuLmUwZTE5MjZkNTNlNDE4MjgyYzJlYjFj
YmIwZDUxYzUxY2UwYmU1NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5oCkBAIC03Niw2ICs3Niw3IEBAIG5hbWVzcGFjZSBBUEkgewogY2xhc3MgQXV0b21hdGlv
bkNsaWVudDsKIGNsYXNzIEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudDsKIGNsYXNzIERvd25s
b2FkQ2xpZW50OworY2xhc3MgSFRUUENvb2tpZVN0b3JhZ2U7CiBjbGFzcyBMZWdhY3lDb250ZXh0
SGlzdG9yeUNsaWVudDsKIGNsYXNzIFBhZ2VDb25maWd1cmF0aW9uOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3Bw
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUu
Y3BwCmluZGV4IDdiYWFmODU0NTQyZDY3OGFlZmVhZjRmMjU4YWQ3ZjE0Y2EyMDUxZWMuLmNmNzdl
ZWMxNDRkMmE2YTI1YTY3NGRiOGY5MDZhMzFlY2QzYWMxMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAK
QEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJBUElXZWJzaXRlRGF0YVJlY29yZC5oIgogI2lu
Y2x1ZGUgIk5ldHdvcmtQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJTdG9yYWdlTWFuYWdl
ci5oIgorI2luY2x1ZGUgIldlYkNvb2tpZU1hbmFnZXJQcm94eS5oIgogI2luY2x1ZGUgIldlYlBy
b2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sLmgiCiAjaW5jbHVkZSAi
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgiCkBAIC0xMDUsNiArMTA2LDI3IEBAIFdl
YnNpdGVEYXRhU3RvcmU6On5XZWJzaXRlRGF0YVN0b3JlKCkKICAgICB9CiB9CiAKK1JlZjxXZWJQ
cm9jZXNzUG9vbD4gV2Vic2l0ZURhdGFTdG9yZTo6cHJvY2Vzc1Bvb2xGb3JDb29raWVTdG9yYWdl
T3BlcmF0aW9ucygpCit7CisgICAgLy8gT3VyIGNvbmNlcHRzIG9mIFdlYlByb2Nlc3MsIFdlYlBy
b2Nlc3NQb29sLCBXZWJzaXRlRGF0YVN0b3JlLCBhbmQgU2Vzc2lvbklEcyBoYXZlIGFsbCBzdGFy
dGVkIHRvIG92ZXJsYXAKKyAgICAvLyB3aXRob3V0IGNsZWFyIGRpdmlzaW9ucyBvZiByZXNwb25z
aWJpbGl0aWVzLgorICAgIC8vIEluIHByYWN0aWNlLCBtdWx0aXBsZSBXZWJQcm9jZXNzUG9vbHMg
Y2FuIGNvbnRhaW4gInRoZSBzYW1lIHNlc3Npb24iLCBlc3BlY2lhbGx5IHNpbmNlIHRoZXJlIGlz
IGN1cnJlbnRseQorICAgIC8vIG9ubHkgYSBzaW5nbGUgZGVmYXVsdCBnbG9iYWwgU2Vzc2lvbklE
LgorICAgIC8vCisgICAgLy8gVGhpcyBtZWFucyB0aGF0IG11bHRpcGxlIE5ldHdvcmtQcm9jZXNz
ZXMgY2FuIGJlIHVzaW5nIHRoZSBzYW1lIHNlc3Npb24sIHdoaWNoIG1lYW5zIHRoYXQgbXVsdGlw
bGUKKyAgICAvLyBOZXR3b3JrUHJvY2Vzc2VzIGNhbiBiZSByZWZlcnJpbmcgdG8gdGhlIHNhbWUg
cGxhdGZvcm0gY29va2llIHN0b3JhZ2UuCisgICAgLy8KKyAgICAvLyBXaGlsZSB0aGlzIG1heSBj
YXVzZSBjb21wbGljYXRpb25zIHdpdGggZnV0dXJlIEFQSXMgaXQgaXMgYWN0dWFsbHkgZmluZSBm
b3IgaW1wbGVtZW50aW5nIHRoZSBXS0hUVFBDb29raWVTdG9yYWdlIEFQSQorICAgIC8vIGJlY2F1
c2Ugd2Ugb25seSBuZWVkIG9uZSBOZXR3b3JrUHJvY2VzcyB0byBzdWNjZXNzZnVsbHkgbWFrZSBh
IHJlcXVlc3RlZCBwbGF0Zm9ybSBjb29raWUgc3RvcmFnZSBjaGFuZ2UuCisgICAgLy8KKyAgICAv
LyBGSVhNRTogV2UgbmVlZCB0byBzdGFydCB0byB1bnJhdmVsIHRoaXMgbWVzcyBnb2luZyBmb3J3
YXJkLgorCisgICAgYXV0byBwb29scyA9IHByb2Nlc3NQb29scygxKTsKKyAgICBBU1NFUlQoIXBv
b2xzLmlzRW1wdHkoKSk7CisKKyAgICByZXR1cm4gKipwb29scy5iZWdpbigpOworfQorCiB2b2lk
IFdlYnNpdGVEYXRhU3RvcmU6OnJlc29sdmVEaXJlY3Rvcmllc0lmTmVjZXNzYXJ5KCkKIHsKICAg
ICBpZiAobV9oYXNSZXNvbHZlZERpcmVjdG9yaWVzKQpAQCAtMTEwOCw3ICsxMTMwLDcgQEAgdm9p
ZCBXZWJzaXRlRGF0YVN0b3JlOjp3ZWJQcm9jZXNzRGlkQ2xvc2VDb25uZWN0aW9uKFdlYlByb2Nl
c3NQcm94eSYgd2ViUHJvY2Vzc1AKICAgICAgICAgbV9zdG9yYWdlTWFuYWdlci0+cHJvY2Vzc0Rp
ZENsb3NlQ29ubmVjdGlvbih3ZWJQcm9jZXNzUHJveHksIGNvbm5lY3Rpb24pOwogfQogCi1IYXNo
U2V0PFJlZlB0cjxXZWJQcm9jZXNzUG9vbD4+IFdlYnNpdGVEYXRhU3RvcmU6OnByb2Nlc3NQb29s
cygpIGNvbnN0CitIYXNoU2V0PFJlZlB0cjxXZWJQcm9jZXNzUG9vbD4+IFdlYnNpdGVEYXRhU3Rv
cmU6OnByb2Nlc3NQb29scyhzaXplX3QgY291bnQpIGNvbnN0CiB7CiAgICAgSGFzaFNldDxSZWZQ
dHI8V2ViUHJvY2Vzc1Bvb2w+PiBwcm9jZXNzUG9vbHM7CiAgICAgZm9yIChhdXRvJiBwcm9jZXNz
IDogcHJvY2Vzc2VzKCkpCkBAIC0xMTIyLDExICsxMTQ0LDIwIEBAIEhhc2hTZXQ8UmVmUHRyPFdl
YlByb2Nlc3NQb29sPj4gV2Vic2l0ZURhdGFTdG9yZTo6cHJvY2Vzc1Bvb2xzKCkgY29uc3QKICAg
ICAgICAgICAgICAgICAgICAgcHJvY2Vzc1Bvb2xzLmFkZChwcm9jZXNzUG9vbCk7CiAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxz
ZSBpZiAoJkFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZSgpLT53ZWJzaXRl
RGF0YVN0b3JlKCkgPT0gdGhpcykgeworICAgICAgICAgICAgICAgIC8vIElmIGEgcHJvY2VzcyBw
b29sIGRvZXNuJ3QgaGF2ZSBhbiBleHBsaWNpdCBkYXRhIHN0b3JlIGFuZCB0aGlzIGlzIHRoZSBk
ZWZhdWx0IFdlYnNpdGVEYXRhU3RvcmUsCisgICAgICAgICAgICAgICAgLy8gYWRkIHRoYXQgcHJv
Y2VzcyBwb29sIHRvIHRoZSBzZXQuCisgICAgICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgYmVo
YXZpb3IgaXMgd2VpcmQgYW5kIG5lY2Vzc2l0YXRlZCBieSB0aGUgZmFjdCB0aGF0IHByb2Nlc3Mg
cG9vbHMgZG9uJ3QgYWx3YXlzCisgICAgICAgICAgICAgICAgLy8gaGF2ZSBhIGRhdGEgc3RvcmU7
IFRoZXkgc2hvdWxkLgorICAgICAgICAgICAgICAgIHByb2Nlc3NQb29scy5hZGQocHJvY2Vzc1Bv
b2wpOwogICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAocHJvY2Vzc1Bvb2xzLnNpemUo
KSA9PSBjb3VudCkKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KIAot
ICAgIGlmIChwcm9jZXNzUG9vbHMuaXNFbXB0eSgpKSB7CisgICAgaWYgKHByb2Nlc3NQb29scy5p
c0VtcHR5KCkgJiYgY291bnQpIHsKICAgICAgICAgYXV0byBwcm9jZXNzUG9vbCA9IFdlYlByb2Nl
c3NQb29sOjpjcmVhdGUoQVBJOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OmNyZWF0ZVdpdGhX
ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbihtX2NvbmZpZ3VyYXRpb24pKTsKICAgICAgICAg
cHJvY2Vzc1Bvb2xzLmFkZChwcm9jZXNzUG9vbC5wdHIoKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgK
aW5kZXggOTc1YmFjOGQ4OWJiMWVjYzY1NjI2ZGQ0MDc0YWY5Yzc2YWY4MzQ1Ny4uOGQxM2JjZTQ5
ODI5YjNjYWRhYjA3Zjg0NWFiMjRiYmM5Mzg1ODQ3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCkBAIC0xMDMs
NiArMTAzLDggQEAgcHVibGljOgogCiAgICAgU3RvcmFnZU1hbmFnZXIqIHN0b3JhZ2VNYW5hZ2Vy
KCkgeyByZXR1cm4gbV9zdG9yYWdlTWFuYWdlci5nZXQoKTsgfQogCisgICAgUmVmPFdlYlByb2Nl
c3NQb29sPiBwcm9jZXNzUG9vbEZvckNvb2tpZVN0b3JhZ2VPcGVyYXRpb25zKCk7CisKIHByaXZh
dGU6CiAgICAgZXhwbGljaXQgV2Vic2l0ZURhdGFTdG9yZShXZWJDb3JlOjpTZXNzaW9uSUQpOwog
ICAgIGV4cGxpY2l0IFdlYnNpdGVEYXRhU3RvcmUoQ29uZmlndXJhdGlvbik7CkBAIC0xMTksNyAr
MTIxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBsYXRmb3JtRGVzdHJveSgpOwogICAgIHN0YXRp
YyB2b2lkIHBsYXRmb3JtUmVtb3ZlUmVjZW50U2VhcmNoZXMoc3RkOjpjaHJvbm86OnN5c3RlbV9j
bG9jazo6dGltZV9wb2ludCk7CiAKLSAgICBIYXNoU2V0PFJlZlB0cjxXZWJQcm9jZXNzUG9vbD4+
IHByb2Nlc3NQb29scygpIGNvbnN0OworICAgIEhhc2hTZXQ8UmVmUHRyPFdlYlByb2Nlc3NQb29s
Pj4gcHJvY2Vzc1Bvb2xzKHNpemVfdCBjb3VudCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90
Pjo6bWF4KCkpIGNvbnN0OwogCiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAgICAg
VmVjdG9yPFBsdWdpbk1vZHVsZUluZm8+IHBsdWdpbnMoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9X
ZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA3ZTE4ODIyZjA0
ZDE3NmFhODk5NGI0NjZhODA1NjY5YWRjYTkwMjkwLi45YzYzZjY4MzJmOTFhNTEzZDhjYjNhMzNl
ZjU3Y2FlYTUwODMxMWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMDYzLDYgKzEwNjMsOSBAQAogCQk1MUQxMjQzNTFFNkRG
NjUyMDAyQjI4MjAgLyogV0tVUkxTY2hlbWVIYW5kbGVyVGFzay5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFEMTI0MkYxRTZERERENzAwMkIyODIwIC8q
IFdLVVJMU2NoZW1lSGFuZGxlclRhc2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
dWJsaWMsICk7IH07IH07CiAJCTUxRDEyNDM2MUU2REZCMzkwMDJCMjgyMCAvKiBXS1VSTFNjaGVt
ZUhhbmRsZXJUYXNrLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTFEMTI0MzAxRTZERERENzAwMkIyODIwIC8qIFdLVVJMU2NoZW1lSGFuZGxlclRhc2su
bW0gKi87IH07CiAJCTUxRDEyNDNBMUU2RTBBQUIwMDJCMjgyMCAvKiBBUElVUkxTY2hlbWVIYW5k
bGVyVGFzay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MUQxMjQzODFFNkRGREI5MDAyQjI4MjAgLyogQVBJVVJMU2NoZW1lSGFuZGxlclRhc2suY3Bw
ICovOyB9OworCQk1MUQxMjQ5MTFFNzRCRjNDMDAyQjI4MjAgLyogQVBJSFRUUENvb2tpZVN0b3Jh
Z2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFE
MTI0ODIxRTczNEFDODAwMkIyODIwIC8qIEFQSUhUVFBDb29raWVTdG9yYWdlLmNwcCAqLzsgfTsK
KwkJNTFEMTI0OTIxRTc0QkY0ODAwMkIyODIwIC8qIF9XS0hUVFBDb29raWVTdG9yYWdlLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFEMTI0ODUxRTcz
NEFFMzAwMkIyODIwIC8qIF9XS0hUVFBDb29raWVTdG9yYWdlLm1tICovOyB9OworCQk1MUQxMjQ5
OTFFNzYzQzAxMDAyQjI4MjAgLyogX1dLSFRUUENvb2tpZVN0b3JhZ2UuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRDEyNDg0MUU3MzRBRTMwMDJCMjgy
MCAvKiBfV0tIVFRQQ29va2llU3RvcmFnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTUxRDEzMDUzMTM4MkVBQzAwMDM1MUVERCAvKiBTZWNJdGVt
UmVxdWVzdERhdGEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTFEMTMwNEYxMzgyRUFDMDAwMzUxRUREIC8qIFNlY0l0ZW1SZXF1ZXN0RGF0YS5jcHAg
Ki87IH07CiAJCTUxRDEzMDU0MTM4MkVBQzAwMDM1MUVERCAvKiBTZWNJdGVtUmVxdWVzdERhdGEu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRDEzMDUw
MTM4MkVBQzAwMDM1MUVERCAvKiBTZWNJdGVtUmVxdWVzdERhdGEuaCAqLzsgfTsKIAkJNTFEMTMw
NTUxMzgyRUFDMDAwMzUxRUREIC8qIFNlY0l0ZW1SZXNwb25zZURhdGEuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFEMTMwNTExMzgyRUFDMDAwMzUx
RUREIC8qIFNlY0l0ZW1SZXNwb25zZURhdGEuY3BwICovOyB9OwpAQCAtMzI4NSw2ICszMjg4LDEx
IEBACiAJCTUxRDEyNDM3MUU2REZEMkEwMDJCMjgyMCAvKiBXS1VSTFNjaGVtZUhhbmRsZXJUYXNr
SW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tVUkxTY2hlbWVI
YW5kbGVyVGFza0ludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxRDEy
NDM4MUU2REZEQjkwMDJCMjgyMCAvKiBBUElVUkxTY2hlbWVIYW5kbGVyVGFzay5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBUElVUkxTY2hlbWVIYW5kbGVyVGFzay5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxRDEyNDM5MUU2REZEQjkwMDJCMjgy
MCAvKiBBUElVUkxTY2hlbWVIYW5kbGVyVGFzay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBBUElVUkxTY2hlbWVIYW5kbGVyVGFzay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk1MUQxMjQ4MjFFNzM0QUM4MDAyQjI4MjAgLyogQVBJSFRUUENvb2tpZVN0b3JhZ2Uu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQVBJSFRUUENvb2tpZVN0
b3JhZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MUQxMjQ4MzFFNzM0QUM4
MDAyQjI4MjAgLyogQVBJSFRUUENvb2tpZVN0b3JhZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQVBJSFRUUENvb2tpZVN0b3JhZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNTFEMTI0ODQxRTczNEFFMzAwMkIyODIwIC8qIF9XS0hUVFBDb29raWVTdG9yYWdl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS0hUVFBDb29raWVTdG9yYWdl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxRDEyNDg1MUU3MzRBRTMwMDJCMjgy
MCAvKiBfV0tIVFRQQ29va2llU3RvcmFnZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IF9XS0hUVFBDb29raWVTdG9yYWdlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk1MUQxMjQ4NjFFNzM0QUUzMDAyQjI4MjAgLyogX1dLSFRUUENvb2tpZVN0b3Jh
Z2VJbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tIVFRQQ29v
a2llU3RvcmFnZUludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxRDEz
MDRGMTM4MkVBQzAwMDM1MUVERCAvKiBTZWNJdGVtUmVxdWVzdERhdGEuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2VjSXRlbVJlcXVlc3REYXRhLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFEMTMwNTAxMzgyRUFDMDAwMzUxRUREIC8qIFNlY0l0
ZW1SZXF1ZXN0RGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZWNJdGVt
UmVxdWVzdERhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFEMTMwNTExMzgy
RUFDMDAwMzUxRUREIC8qIFNlY0l0ZW1SZXNwb25zZURhdGEuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gU2VjSXRlbVJlc3BvbnNlRGF0YS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC01NDc4LDYgKzU0ODYsOSBAQAogCQkJCTJFN0E5NDQ5MUJCRDk1
QzYwMDk0NTU0NyAvKiBfV0tGb2N1c2VkRWxlbWVudEluZm8uaCAqLywKIAkJCQkzN0E2NEU1NjE4
RjM4RjQ2MDBFQjMwRjEgLyogX1dLRm9ybUlucHV0U2Vzc2lvbi5oICovLAogCQkJCUNENzhFMTE4
MURCN0U1QUQwMDE0QTJERSAvKiBfV0tGdWxsc2NyZWVuRGVsZWdhdGUuaCAqLywKKwkJCQk1MUQx
MjQ4NDFFNzM0QUUzMDAyQjI4MjAgLyogX1dLSFRUUENvb2tpZVN0b3JhZ2UuaCAqLywKKwkJCQk1
MUQxMjQ4NTFFNzM0QUUzMDAyQjI4MjAgLyogX1dLSFRUUENvb2tpZVN0b3JhZ2UubW0gKi8sCisJ
CQkJNTFEMTI0ODYxRTczNEFFMzAwMkIyODIwIC8qIF9XS0hUVFBDb29raWVTdG9yYWdlSW50ZXJu
YWwuaCAqLywKIAkJCQk1MTQzQjI1RTFERENERkQxMDAxNEZBQzYgLyogX1dLSWNvbkxvYWRpbmdE
ZWxlZ2F0ZS5oICovLAogCQkJCTM3QTY0RTU0MThGMzhFM0MwMEVCMzBGMSAvKiBfV0tJbnB1dERl
bGVnYXRlLmggKi8sCiAJCQkJMkQ3OTBBOUMxQUQ3MDUwRDAwQUI5MEIzIC8qIF9XS0xheW91dE1v
ZGUuaCAqLywKQEAgLTY3MzIsNiArNjc0Myw4IEBACiAJCQkJMkRBQkE3NzUxQTgyQjQyMTAwRUYw
RjFBIC8qIEFQSUhpc3RvcnlDbGllbnQuaCAqLywKIAkJCQk5M0E4OEI0MjFCQzg4MjhDMDBBQkE1
QzIgLyogQVBJSGl0VGVzdFJlc3VsdC5jcHAgKi8sCiAJCQkJOTNBODhCNDMxQkM4ODI4QzAwQUJB
NUMyIC8qIEFQSUhpdFRlc3RSZXN1bHQuaCAqLywKKwkJCQk1MUQxMjQ4MjFFNzM0QUM4MDAyQjI4
MjAgLyogQVBJSFRUUENvb2tpZVN0b3JhZ2UuY3BwICovLAorCQkJCTUxRDEyNDgzMUU3MzRBQzgw
MDJCMjgyMCAvKiBBUElIVFRQQ29va2llU3RvcmFnZS5oICovLAogCQkJCTUxNDNCMjYxMURERDBE
QTAwMDE0RkFDNiAvKiBBUElJY29uTG9hZGluZ0NsaWVudC5oICovLAogCQkJCTdDRTREMjA2MUE0
Njc3NTcwMEM3RjE1MiAvKiBBUElMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudC5oICovLAogCQkJ
CTFBMjQ2NEYyMTg5MUU0NTEwMDIzNEM1QiAvKiBBUElMb2FkZXJDbGllbnQuaCAqLywKQEAgLTg1
MTUsNiArODUyOCw3IEBACiAJCQkJNTE0MTI5OTQxQzY0MjhCQjAwNTlFNzE0IC8qIFdlYklEQkNv
bm5lY3Rpb25Ub1NlcnZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEwNTIzNzQxQzczRDM4QjAw
Nzk5M0NCIC8qIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlck1lc3NhZ2VzLmggaW4gSGVhZGVycyAq
LywKIAkJCQlCQ0NGNkFCRDEyQzkxRUY5MDA4RjlDMzUgLyogV2ViSW1hZ2UuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTUxRDEyNDk5MUU3NjNDMDEwMDJCMjgyMCAvKiBfV0tIVFRQQ29va2llU3RvcmFn
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUM4RTI4MjAxMjc1RDE1NDAwQkM3QkQwIC8qIFdlYklu
c3BlY3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMwMzJEODIxMEY0Mzc4RDAwNThDMTVBIC8q
IFdlYkluc3BlY3RvckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU1QkE4MzUxQkEzRTcw
QTAwN0NEMzNEIC8qIFdlYkluc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlci5oIGluIEhlYWRl
cnMgKi8sCkBAIC05NzY3LDYgKzk3ODEsNyBAQAogCQkJCTFBNkZCQTJCMTFFNjg2MjcwMERCMTM3
MSAvKiBOZXRzY2FwZUJyb3dzZXJGdW5jcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTZGQkQy
OTExRTY5QkMyMDBEQjEzNzEgLyogTmV0c2NhcGVQbHVnaW4uY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMUFFNUI3RkIxMUU3QUVEMjAwQkE2NzY3IC8qIE5ldHNjYXBlUGx1Z2luTWFjLm1tIGluIFNv
dXJjZXMgKi8sCisJCQkJNTFEMTI0OTIxRTc0QkY0ODAwMkIyODIwIC8qIF9XS0hUVFBDb29raWVT
dG9yYWdlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE0QTlDNTUxMkI4MTZDRjAwOEZFOTg0IC8q
IE5ldHNjYXBlUGx1Z2luTW9kdWxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTgzOUEyRjMxMUUy
MDY3NDUwMDM5MDU3RSAvKiBIaWdoUGVyZm9ybWFuY2VHcmFwaGljc1VzYWdlU2FtcGxlci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkxQTRBOUM5QTEyQjgyMUNEMDA4RkU5ODQgLyogTmV0c2NhcGVQ
bHVnaW5Nb2R1bGVNYWMubW0gaW4gU291cmNlcyAqLywKQEAgLTk3ODUsNiArOTgwMCw3IEBACiAJ
CQkJODMxRUVCQkUxQkQ4NUM0MzAwQkI2NEMzIC8qIE5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9h
ZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4MzJBRTI1MzFCRTJFOENEMDBGQUFFMTAgLyogTmV0
d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4
M0JEQ0NCOTFBQzVGREI2MDAzRjY0NDEgLyogTmV0d29ya0NhY2hlU3RhdGlzdGljcy5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQk1MUQxMjQ5MTFFNzRCRjNDMDAyQjI4MjAgLyogQVBJSFRUUENvb2tp
ZVN0b3JhZ2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTQ0MzZFRDAxQTBEMDQwQjAwRUFEMjA0
IC8qIE5ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODMxMDQyOEMx
QkQ2QjY2RjAwQTcxNUU0IC8qIE5ldHdvcmtDYWNoZVN1YnJlc291cmNlc0VudHJ5LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTUzMDI1ODNEMURDQkJEMjIwMERBODlDMiAvKiBOZXR3b3JrQ2FwdHVy
ZUV2ZW50LmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIuY3BwCmluZGV4IDllMjFmNzhjY2RiYjE4
MjE3OTQyNTUzZjlmZTBmMWRkNzA0MTMzODQuLjc1NDNhMjlkOGJlYjhjZWEzOTI2NjIxNmE2MDA4
YzU4NjIzNGVmMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2ll
cy9XZWJDb29raWVNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Nv
b2tpZXMvV2ViQ29va2llTWFuYWdlci5jcHAKQEAgLTcyLDIyICs3Miw2NCBAQCB2b2lkIFdlYkNv
b2tpZU1hbmFnZXI6OmRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZShTZXNzaW9uSUQgc2Vzc2lvbklE
LCBjb25zdCBTdHJpbgogICAgICAgICBXZWJDb3JlOjpkZWxldGVDb29raWVzRm9ySG9zdG5hbWVz
KCpzdG9yYWdlU2Vzc2lvbiwgeyBob3N0bmFtZSB9KTsKIH0KIAorCiB2b2lkIFdlYkNvb2tpZU1h
bmFnZXI6OmRlbGV0ZUFsbENvb2tpZXMoU2Vzc2lvbklEIHNlc3Npb25JRCkKIHsKICAgICBpZiAo
YXV0byogc3RvcmFnZVNlc3Npb24gPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNz
aW9uKHNlc3Npb25JRCkpCiAgICAgICAgIFdlYkNvcmU6OmRlbGV0ZUFsbENvb2tpZXMoKnN0b3Jh
Z2VTZXNzaW9uKTsKIH0KIAotdm9pZCBXZWJDb29raWVNYW5hZ2VyOjpkZWxldGVBbGxDb29raWVz
TW9kaWZpZWRTaW5jZShTZXNzaW9uSUQgc2Vzc2lvbklELCBzdGQ6OmNocm9ubzo6c3lzdGVtX2Ns
b2NrOjp0aW1lX3BvaW50IHRpbWUpCit2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmRlbGV0ZUNvb2tp
ZShTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBDb29raWUmIGNvb2tpZSwgdWludDY0X3QgY2Fs
bGJhY2tJRCkKK3sKKyAgICBpZiAoYXV0byogc3RvcmFnZVNlc3Npb24gPSBOZXR3b3JrU3RvcmFn
ZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCisgICAgICAgIHN0b3JhZ2VTZXNz
aW9uLT5kZWxldGVDb29raWUoY29va2llKTsKKworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6V2ViQ29va2llTWFuYWdlclByb3h5OjpEaWREZWxldGVDb29raWVzKGNhbGxiYWNrSUQpLCAw
KTsKK30KKwordm9pZCBXZWJDb29raWVNYW5hZ2VyOjpkZWxldGVBbGxDb29raWVzTW9kaWZpZWRT
aW5jZShTZXNzaW9uSUQgc2Vzc2lvbklELCBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1l
X3BvaW50IHRpbWUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiB7CiAgICAgaWYgKGF1dG8qIHN0b3Jh
Z2VTZXNzaW9uID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9u
SUQpKQogICAgICAgICBXZWJDb3JlOjpkZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZSgqc3Rv
cmFnZVNlc3Npb24sIHRpbWUpOworCisgICAgaWYgKGNhbGxiYWNrSUQpCisgICAgICAgIG1fcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlclByb3h5OjpEaWREZWxldGVDb29r
aWVzKGNhbGxiYWNrSUQpLCAwKTsKK30KKwordm9pZCBXZWJDb29raWVNYW5hZ2VyOjpnZXRBbGxD
b29raWVzKFNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit7CisgICAg
VmVjdG9yPENvb2tpZT4gY29va2llczsKKyAgICBpZiAoYXV0byogc3RvcmFnZVNlc3Npb24gPSBO
ZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCisgICAgICAg
IGNvb2tpZXMgPSBzdG9yYWdlU2Vzc2lvbi0+Z2V0QWxsQ29va2llcygpOworCisgICAgbV9wcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OkRpZEdldENvb2tpZXMo
Y29va2llcywgY2FsbGJhY2tJRCksIDApOwogfQogCi12b2lkIFdlYkNvb2tpZU1hbmFnZXI6OnNl
dENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVmVjdG9yPENvb2tp
ZT4mIGNvb2tpZXMsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBVUkwmIG1haW5Eb2N1bWVudFVSTCkK
K3ZvaWQgV2ViQ29va2llTWFuYWdlcjo6Z2V0Q29va2llcyhTZXNzaW9uSUQgc2Vzc2lvbklELCBj
b25zdCBVUkwmIHVybCwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3sKKyAgICBWZWN0b3I8Q29va2ll
PiBjb29raWVzOworICAgIGlmIChhdXRvKiBzdG9yYWdlU2Vzc2lvbiA9IE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKKyAgICAgICAgY29va2llcyA9IHN0
b3JhZ2VTZXNzaW9uLT5nZXRDb29raWVzKHVybCk7CisKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6RGlkR2V0Q29va2llcyhjb29raWVzLCBjYWxs
YmFja0lEKSwgMCk7Cit9CisKK3ZvaWQgV2ViQ29va2llTWFuYWdlcjo6c2V0Q29va2llKFdlYkNv
cmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IENvb2tpZSYgY29va2llLCB1aW50NjRfdCBj
YWxsYmFja0lEKQoreworICAgIGlmIChhdXRvKiBzdG9yYWdlU2Vzc2lvbiA9IE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKKyAgICAgICAgc3RvcmFnZVNl
c3Npb24tPnNldENvb2tpZShjb29raWUpOworCisgICAgaWYgKGNhbGxiYWNrSUQpCisgICAgICAg
IG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlclByb3h5OjpEaWRTZXRD
b29raWVzKGNhbGxiYWNrSUQpLCAwKTsKK30KKwordm9pZCBXZWJDb29raWVNYW5hZ2VyOjpzZXRD
b29raWVzKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxDb29raWU+
JiBjb29raWVzLCBjb25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBtYWluRG9jdW1lbnRVUkwsIHVp
bnQ2NF90IGNhbGxiYWNrSUQpCiB7CiAgICAgaWYgKGF1dG8qIHN0b3JhZ2VTZXNzaW9uID0gTmV0
d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQogICAgICAgICBz
dG9yYWdlU2Vzc2lvbi0+c2V0Q29va2llcyhjb29raWVzLCB1cmwsIG1haW5Eb2N1bWVudFVSTCk7
CisKKyAgICBpZiAoY2FsbGJhY2tJRCkKKyAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OkRpZFNldENvb2tpZXMoY2FsbGJhY2tJRCksIDApOwog
fQogCiB2b2lkIFdlYkNvb2tpZU1hbmFnZXI6Om5vdGlmeUNvb2tpZXNEaWRDaGFuZ2UoU2Vzc2lv
bklEIHNlc3Npb25JRCkKQEAgLTExMSw5ICsxNTMsMTIgQEAgdm9pZCBXZWJDb29raWVNYW5hZ2Vy
OjpzdG9wT2JzZXJ2aW5nQ29va2llQ2hhbmdlcyhTZXNzaW9uSUQgc2Vzc2lvbklEKQogICAgICAg
ICBXZWJDb3JlOjpzdG9wT2JzZXJ2aW5nQ29va2llQ2hhbmdlcygqc3RvcmFnZVNlc3Npb24pOwog
fQogCi12b2lkIFdlYkNvb2tpZU1hbmFnZXI6OnNldEhUVFBDb29raWVBY2NlcHRQb2xpY3koSFRU
UENvb2tpZUFjY2VwdFBvbGljeSBwb2xpY3kpCit2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OnNldEhU
VFBDb29raWVBY2NlcHRQb2xpY3koSFRUUENvb2tpZUFjY2VwdFBvbGljeSBwb2xpY3ksIHVpbnQ2
NF90IGNhbGxiYWNrSUQpCiB7CiAgICAgcGxhdGZvcm1TZXRIVFRQQ29va2llQWNjZXB0UG9saWN5
KHBvbGljeSk7CisKKyAgICBpZiAoY2FsbGJhY2tJRCkKKyAgICAgICAgbV9wcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OkRpZFNldEhUVFBDb29raWVBY2NlcHRQ
b2xpY3koY2FsbGJhY2tJRCksIDApOwogfQogCiB2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmdldEhU
VFBDb29raWVBY2NlcHRQb2xpY3kodWludDY0X3QgY2FsbGJhY2tJRCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5oCmluZGV4IGRi
MjdkMjBhYWRkODdkODg1MzZkYTUwNzFlNTlmMzI4OTExNTE4MDIuLjgxODc1ZGFmYjc1OGZjZDYz
OTkwODUxZGJjZDM1MmVlNjQwNTU2MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIuaApAQCAtNTYsNyArNTYsOCBAQCBwdWJs
aWM6CiAKICAgICBzdGF0aWMgY29uc3QgY2hhciogc3VwcGxlbWVudE5hbWUoKTsKIAotICAgIHZv
aWQgc2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShIVFRQQ29va2llQWNjZXB0UG9saWN5KTsKKyAg
ICB2b2lkIHNldEhUVFBDb29raWVBY2NlcHRQb2xpY3koSFRUUENvb2tpZUFjY2VwdFBvbGljeSwg
dWludDY0X3QgY2FsbGJhY2tJRCk7CisKICNpZiBVU0UoU09VUCkKICAgICB2b2lkIHNldENvb2tp
ZVBlcnNpc3RlbnRTdG9yYWdlKGNvbnN0IFN0cmluZyYgc3RvcmFnZVBhdGgsIHVpbnQzMl90IHN0
b3JhZ2VUeXBlKTsKICNlbmRpZgpAQCAtNjgsMTEgKzY5LDE2IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVy
cmlkZTsKIAogICAgIHZvaWQgZ2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lv
bklELCB1aW50NjRfdCBjYWxsYmFja0lEKTsKKworICAgIHZvaWQgZGVsZXRlQ29va2llKFdlYkNv
cmU6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6Q29va2llJiwgdWludDY0X3QgY2FsbGJhY2tJ
RCk7CiAgICAgdm9pZCBkZWxldGVDb29raWVzRm9ySG9zdG5hbWUoV2ViQ29yZTo6U2Vzc2lvbklE
LCBjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIGRlbGV0ZUFsbENvb2tpZXMoV2ViQ29yZTo6U2Vz
c2lvbklEKTsKLSAgICB2b2lkIGRlbGV0ZUFsbENvb2tpZXNNb2RpZmllZFNpbmNlKFdlYkNvcmU6
OlNlc3Npb25JRCwgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCk7CisgICAg
dm9pZCBkZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZShXZWJDb3JlOjpTZXNzaW9uSUQsIHN0
ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQsIHVpbnQ2NF90IGNhbGxiYWNrSUQp
OwogCi0gICAgdm9pZCBzZXRDb29raWVzKFdlYkNvcmU6OlNlc3Npb25JRCwgY29uc3QgVmVjdG9y
PFdlYkNvcmU6OkNvb2tpZT4mLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXZWJDb3JlOjpV
UkwmIG1haW5Eb2N1bWVudFVSTCk7CisgICAgdm9pZCBzZXRDb29raWUoV2ViQ29yZTo6U2Vzc2lv
bklELCBjb25zdCBXZWJDb3JlOjpDb29raWUmLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICB2
b2lkIHNldENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklELCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6
Q29va2llPiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgbWFpbkRv
Y3VtZW50VVJMLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICB2b2lkIGdldEFsbENvb2tpZXMo
V2ViQ29yZTo6U2Vzc2lvbklELCB1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICB2b2lkIGdldENv
b2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpVUkwmLCB1aW50NjRfdCBj
YWxsYmFja0lEKTsKIAogICAgIHZvaWQgcGxhdGZvcm1TZXRIVFRQQ29va2llQWNjZXB0UG9saWN5
KEhUVFBDb29raWVBY2NlcHRQb2xpY3kpOwogICAgIHZvaWQgZ2V0SFRUUENvb2tpZUFjY2VwdFBv
bGljeSh1aW50NjRfdCBjYWxsYmFja0lEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIubWVzc2FnZXMuaW4KaW5k
ZXggMDBlN2I2NWI3NDkwODI2YzViYjM5YmQ3MjZlOWMyZDNiYTUzZjA1Ni4uMGE1ODU1NWVjNmE5
Y2M0OGY5ZDhhOTQ3NWNhNjI0OGMzZWQ1YjM0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIubWVzc2FnZXMuaW4KKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIubWVzc2FnZXMu
aW4KQEAgLTI3LDExICsyNywxNSBAQAogICAgIHZvaWQgR2V0SG9zdG5hbWVzV2l0aENvb2tpZXMo
V2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgY2FsbGJhY2tJRCkKICAgICB2
b2lkIERlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZShXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBTdHJpbmcgaG9zdG5hbWUpCiAgICAgdm9pZCBEZWxldGVBbGxDb29raWVzKFdlYkNvcmU6OlNl
c3Npb25JRCBzZXNzaW9uSUQpCi0gICAgdm9pZCBEZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5j
ZShXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2Nr
Ojp0aW1lX3BvaW50IHRpbWUpCiAKLSAgICB2b2lkIFNldENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4gY29va2llcywgV2ViQ29yZTo6
VVJMIHVybCwgV2ViQ29yZTo6VVJMIG1haW5Eb2N1bWVudFVSTCk7CisgICAgdm9pZCBTZXRDb29r
aWUoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgc3RydWN0IFdlYkNvcmU6OkNvb2tpZSBj
b29raWUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCisgICAgdm9pZCBTZXRDb29raWVzKFdlYkNvcmU6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+IGNvb2tpZXMsIFdl
YkNvcmU6OlVSTCB1cmwsIFdlYkNvcmU6OlVSTCBtYWluRG9jdW1lbnRVUkwsIHVpbnQ2NF90IGNh
bGxiYWNrSUQpCisgICAgdm9pZCBHZXRBbGxDb29raWVzKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCisgICAgdm9pZCBHZXRDb29raWVzKFdlYkNvcmU6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlVSTCB1cmwsIHVpbnQ2NF90IGNhbGxiYWNr
SUQpCisgICAgdm9pZCBEZWxldGVDb29raWUoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
c3RydWN0IFdlYkNvcmU6OkNvb2tpZSBjb29raWUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCisgICAg
dm9pZCBEZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZShXZWJDb3JlOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IHRpbWUsIHVpbnQ2
NF90IGNhbGxiYWNrSUQpCiAKLSAgICB2b2lkIFNldEhUVFBDb29raWVBY2NlcHRQb2xpY3kodWlu
dDMyX3QgcG9saWN5KQorICAgIHZvaWQgU2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSh1aW50MzJf
dCBwb2xpY3ksIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAgICAgdm9pZCBHZXRIVFRQQ29va2llQWNj
ZXB0UG9saWN5KHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAgICAgCiAgICAgdm9pZCBTdGFydE9ic2Vy
dmluZ0Nvb2tpZUNoYW5nZXMoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCkKZGlmZiAtLWdp
dCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA4MGRhODIyOGRjYTc3
ZTliOTM4NmQzOWViZTVjOGY1NDJjZjNjYjlkLi40Y2FkZTZiMzAwODkxODZhYjFlMzk4NTMyMTAx
NTJiYTJhNWJhMTUyIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTctMDMtMTMgIEJyYWR5IEVpZHNvbiAgPGJlaWRz
b25AYXBwbGUuY29tPgorCisgICAgICAgIFdLV2ViVmlldyBwcm92aWRlcyBubyBhY2Nlc3MgdG8g
Y29va2llcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE0MDE5MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisKIDIwMTctMDMtMTEgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNv
bT4KIAogICAgICAgICBFbmFibGUgYXN5bmMgaW1hZ2UgZGVjb2RpbmcgZm9yIGxhcmdlIGltYWdl
cwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA3NjAxZGJlMDY5MmMwMDA4ZTZiN2RiYWEzZmEw
MDE2MzQ1ZDIxMmY3Li4yZGYzNDU2MmI0OWJhNzJkMzgwMWJlMWM2MDdkMDRhYzgzNmE1MGEyIDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTUyLDYgKzE1Miw3IEBACiAJCTUxQkNFRTRGMUM4
NEY1M0IwMDQyQzgyRSAvKiBJbmRleGVkREJNdWx0aVByb2Nlc3MtMi5odG1sIGluIENvcHkgUmVz
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQkNFRTREMUM4NEY1
MkMwMDQyQzgyRSAvKiBJbmRleGVkREJNdWx0aVByb2Nlc3MtMi5odG1sICovOyB9OwogCQk1MUNE
MUM2QzFCMzhDRTQzMDAxNDJDQTUgLyogTW9kYWxBbGVydHMubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUNEMUM2QTFCMzhDRTM2MDAxNDJDQTUgLyog
TW9kYWxBbGVydHMubW0gKi87IH07CiAJCTUxQ0QxQzcyMUIzOEQ0ODQwMDE0MkNBNSAvKiBtb2Rh
bC1hbGVydHMtaW4tbmV3LWFib3V0LWJsYW5rLXdpbmRvdy5odG1sIGluIENvcHkgUmVzb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQ0QxQzcxMUIzOEQ0ODQwMDE0
MkNBNSAvKiBtb2RhbC1hbGVydHMtaW4tbmV3LWFib3V0LWJsYW5rLXdpbmRvdy5odG1sICovOyB9
OworCQk1MUQxMjQ5ODFFNzYzQjAyMDAyQjI4MjAgLyogV0tIVFRQQ29va2llU3RvcmFnZS5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRDEyNDk3MUU3
NjNBRjgwMDJCMjgyMCAvKiBXS0hUVFBDb29raWVTdG9yYWdlLm1tICovOyB9OwogCQk1MUU1Qzcw
MjE5MTlDM0IyMDBEOEIzRTEgLyogc2ltcGxlMi5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRTc4MDM2MTkxOUFGRjgwMDE4MjlBMiAv
KiBzaW1wbGUyLmh0bWwgKi87IH07CiAJCTUxRTVDNzAzMTkxOUMzQjIwMEQ4QjNFMSAvKiBzaW1w
bGUzLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTFFNzgwMzcxOTE5QUZGODAwMTgyOUEyIC8qIHNpbXBsZTMuaHRtbCAqLzsgfTsKIAkJ
NTFFNkE4OTQxRDJGMUMwQTAwQzAwNEI2IC8qIExvY2FsU3RvcmFnZUNsZWFyLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFFNkE4OTIxRDJGMUJFQzAw
QzAwNEI2IC8qIExvY2FsU3RvcmFnZUNsZWFyLm1tICovOyB9OwpAQCAtMTA0OCw2ICsxMDQ5LDcg
QEAKIAkJNTFDQjRBRDcxQjNBMDc5QzAwQzFCMUM2IC8qIE1vZGFsQWxlcnRzU1BJLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1vZGFsQWxlcnRzU1BJLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFDRDFDNkExQjM4Q0UzNjAwMTQyQ0E1IC8qIE1v
ZGFsQWxlcnRzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTW9k
YWxBbGVydHMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxQ0QxQzcxMUIzOEQ0
ODQwMDE0MkNBNSAvKiBtb2RhbC1hbGVydHMtaW4tbmV3LWFib3V0LWJsYW5rLXdpbmRvdy5odG1s
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5o
dG1sOyBwYXRoID0gIm1vZGFsLWFsZXJ0cy1pbi1uZXctYWJvdXQtYmxhbmstd2luZG93Lmh0bWwi
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MUQxMjQ5NzFFNzYzQUY4MDAyQjI4MjAg
LyogV0tIVFRQQ29va2llU3RvcmFnZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IFdLSFRUUENvb2tpZVN0b3JhZ2UubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTUxRTVDNzA0MTkxOUVBNUYwMEQ4QjNFMSAvKiBTaG91bGRLZWVwQ3VycmVudEJhY2tG
b3J3YXJkTGlzdEl0ZW1Jbkxpc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gU2hvdWxkS2VlcEN1cnJlbnRCYWNrRm9yd2FyZExpc3RJdGVtSW5MaXN0LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFFNkE4OTIxRDJGMUJFQzAwQzAwNEI2IC8qIExv
Y2FsU3RvcmFnZUNsZWFyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gTG9jYWxTdG9yYWdlQ2xlYXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUx
RTZBODk1MUQyRjFDNzcwMEMwMDRCNiAvKiBMb2NhbFN0b3JhZ2VDbGVhci5odG1sICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dC5odG1sOyBwYXRoID0gTG9jYWxTdG9yYWdlQ2xlYXIuaHRtbDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTE2NDksNiArMTY1MSw3IEBACiAJCQkJNTEyMEM4M0MxRTY3NTA3
OTAwMjVCMjUwIC8qIFdlYnNpdGVEYXRhU3RvcmVDdXN0b21QYXRocy5tbSAqLywKIAkJCQk1QzlF
NTY4NDFERjkxNDNEMDBDOUVFMzMgLyogV2Vic2l0ZVBvbGljaWVzLm1tICovLAogCQkJCTFGODM1
NzFBMUQzRkZCMEUwMEUzOTY3QiAvKiBXS0JhY2tGb3J3YXJkTGlzdC5tbSAqLywKKwkJCQk1MUQx
MjQ5NzFFNzYzQUY4MDAyQjI4MjAgLyogV0tIVFRQQ29va2llU3RvcmFnZS5tbSAqLywKIAkJCQkz
NzVFMEUxNTFENjY2NzQ0MDBFRkVDMkMgLyogV0tOU051bWJlci5tbSAqLywKIAkJCQkzN0I0N0Uy
RTFENjRFN0NBMDA1RjRFRkYgLyogV0tPYmplY3QubW0gKi8sCiAJCQkJMkQwMDA2NUQxQzFGNTg5
NDAwODhFNkE3IC8qIFdLUERGVmlld1Jlc2l6ZUNyYXNoLm1tICovLApAQCAtMjcyOSw2ICsyNzMy
LDcgQEAKIAkJCQk3Q0NFN0VGNDFBNDExQUU2MDA0NDdDNEMgLyogRmluZE1hdGNoZXMubW0gaW4g
U291cmNlcyAqLywKIAkJCQk3QzgzRTA0MDFEMEE2M0UzMDBGRUJDRjMgLyogRmlyc3RSZXNwb25k
ZXJTY3JvbGxpbmdQb3NpdGlvbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDODNFMEJDMUQwQTY1
MDcwMEZFQkNGMyAvKiBGaXhlZExheW91dFNpemUubW0gaW4gU291cmNlcyAqLywKKwkJCQk1MUQx
MjQ5ODFFNzYzQjAyMDAyQjI4MjAgLyogV0tIVFRQQ29va2llU3RvcmFnZS5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTdDQ0U3RUY1MUE0MTFBRTYwMDQ0N0M0QyAvKiBGb3JjZVJlcGFpbnQuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMzdCNDdFMzAxRDY0RTdDQTAwNUY0RUZGIC8qIFdLT2JqZWN0Lm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFQzAxQTQxMUE3RTAwNDQ3QzRDIC8qIEZyYWdtZW50
TmF2aWdhdGlvbi5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvV0tIVFRQQ29va2llU3RvcmFnZS5tbSBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL1dLSFRUUENvb2tpZVN0b3JhZ2UubW0KbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZDI4YzM0MmJhYWYwZGE4NWNkNmRkOTkzMzExNjRlMjFkNmRhZDE4NgotLS0gL2Rl
di9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL1dLSFRU
UENvb2tpZVN0b3JhZ2UubW0KQEAgLTAsMCArMSwxMTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisKKyNpbXBvcnQgPFdlYktpdC9XS0ZvdW5kYXRpb24uaD4KKworI2lmIFBM
QVRGT1JNKE1BQykKKworI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKKyNpbXBvcnQgPFdl
YktpdC9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvX1dLSFRU
UENvb2tpZVN0b3JhZ2UuaD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKworI2lmIFdLX0FQ
SV9FTkFCTEVECisKK3N0YXRpYyBib29sIGdvdEZsYWc7CisKK1RFU1QoV2ViS2l0MiwgV0tIVFRQ
Q29va2llU3RvcmFnZSkKK3sKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3
IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApXSk7CisKKyAg
ICBhdXRvIHdpbmRvdyA9IGFkb3B0TlMoW1tOU1dpbmRvdyBhbGxvY10gaW5pdFdpdGhDb250ZW50
UmVjdDpbd2ViVmlldyBmcmFtZV0gc3R5bGVNYXNrOk5TQm9yZGVybGVzc1dpbmRvd01hc2sgYmFj
a2luZzpOU0JhY2tpbmdTdG9yZUJ1ZmZlcmVkIGRlZmVyOllFU10pOworICAgIFtbd2luZG93IGNv
bnRlbnRWaWV3XSBhZGRTdWJ2aWV3OndlYlZpZXcuZ2V0KCldOworCisgICAgW3dlYlZpZXcgbG9h
ZEhUTUxTdHJpbmc6QCJPaCBoZWxsbyIgYmFzZVVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0
dHA6Ly93ZWJraXQub3JnIl1dOworCisgICAgUmV0YWluUHRyPF9XS0hUVFBDb29raWVTdG9yYWdl
PiBjb29raWVTdG9yYWdlID0gW1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0RGF0YVN0b3JlXS5f
aHR0cENvb2tpZVN0b3JhZ2U7CisKKyAgICBOU0FycmF5PE5TSFRUUENvb2tpZSAqPiAqY29va2ll
cyA9IG5pbDsKKyAgICBbY29va2llU3RvcmFnZSBmZXRjaENvb2tpZXM6W2Nvb2tpZXNQdHIgPSAm
Y29va2llc10oTlNBcnJheTxOU0hUVFBDb29raWUgKj4gKm5zQ29va2llcykgeworICAgICAgICAq
Y29va2llc1B0ciA9IFtuc0Nvb2tpZXMgcmV0YWluXTsKKyAgICAgICAgZ290RmxhZyA9IHRydWU7
CisgICAgfV07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmdvdEZsYWcpOworCisg
ICAgQVNTRVJUX0VRKGNvb2tpZXMuY291bnQsIDB1KTsKKyAgICBbY29va2llcyByZWxlYXNlXTsK
KworICAgIGdvdEZsYWcgPSBmYWxzZTsKKworICAgIFJldGFpblB0cjxOU0hUVFBDb29raWU+IGNv
b2tpZTEgPSBbTlNIVFRQQ29va2llIGNvb2tpZVdpdGhQcm9wZXJ0aWVzOkB7CisgICAgICAgIE5T
SFRUUENvb2tpZVBhdGg6IEAiLyIsCisgICAgICAgIE5TSFRUUENvb2tpZU5hbWU6IEAiQ29va2ll
TmFtZSIsCisgICAgICAgIE5TSFRUUENvb2tpZVZhbHVlOiBAIkNvb2tpZVZhbHVlIiwKKyAgICAg
ICAgTlNIVFRQQ29va2llRG9tYWluOiBAIi53d3cud2Via2l0Lm9yZyIsCisgICAgICAgIE5TSFRU
UENvb2tpZVNlY3VyZTogQCJUUlVFIiwKKyAgICAgICAgTlNIVFRQQ29va2llRGlzY2FyZDogQCJU
UlVFIiwKKyAgICAgICAgTlNIVFRQQ29va2llTWF4aW11bUFnZTogQCIxMDAwMCIsCisgICAgfV07
CisKKyAgICBSZXRhaW5QdHI8TlNIVFRQQ29va2llPiBjb29raWUyID0gW05TSFRUUENvb2tpZSBj
b29raWVXaXRoUHJvcGVydGllczpAeworICAgICAgICBOU0hUVFBDb29raWVQYXRoOiBAIi9wYXRo
IiwKKyAgICAgICAgTlNIVFRQQ29va2llTmFtZTogQCJPdGhlckNvb2tpZU5hbWUiLAorICAgICAg
ICBOU0hUVFBDb29raWVWYWx1ZTogQCJPdGhlckNvb2tpZVZhbHVlIiwKKyAgICAgICAgTlNIVFRQ
Q29va2llRG9tYWluOiBAIi53d3cudzNjLm9yZyIsCisgICAgICAgIE5TSFRUUENvb2tpZU1heGlt
dW1BZ2U6IEAiMTAwMDAiLAorICAgIH1dOworCisgICAgW2Nvb2tpZVN0b3JhZ2Ugc2V0Q29va2ll
OmNvb2tpZTEuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6bmlsXTsKKyAgICBbY29va2llU3RvcmFn
ZSBzZXRDb29raWU6Y29va2llMi5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpuaWxdOworCisgICAg
W2Nvb2tpZVN0b3JhZ2UgZmV0Y2hDb29raWVzOltjb29raWVzUHRyID0gJmNvb2tpZXNdKE5TQXJy
YXk8TlNIVFRQQ29va2llICo+ICpuc0Nvb2tpZXMpIHsKKyAgICAgICAgKmNvb2tpZXNQdHIgPSBb
bnNDb29raWVzIHJldGFpbl07CisgICAgICAgIGdvdEZsYWcgPSB0cnVlOworICAgIH1dOworCisg
ICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZnb3RGbGFnKTsKKworICAgIEFTU0VSVF9FUShj
b29raWVzLmNvdW50LCAydSk7CisKKyAgICBmb3IgKE5TSFRUUENvb2tpZSAqY29va2llIDogY29v
a2llcykgeworICAgICAgICBpZiAoW2Nvb2tpZS5uYW1lIGlzRXF1YWw6QCJDb29raWVOYW1lIl0p
IHsKKyAgICAgICAgICAgIEFTU0VSVF9UUlVFKFtjb29raWUxLmdldCgpLnBhdGggaXNFcXVhbFRv
U3RyaW5nOmNvb2tpZS5wYXRoXSk7CisgICAgICAgICAgICBBU1NFUlRfVFJVRShbY29va2llMS5n
ZXQoKS52YWx1ZSBpc0VxdWFsVG9TdHJpbmc6Y29va2llLnZhbHVlXSk7CisgICAgICAgICAgICBB
U1NFUlRfVFJVRShbY29va2llMS5nZXQoKS5kb21haW4gaXNFcXVhbFRvU3RyaW5nOmNvb2tpZS5k
b21haW5dKTsKKyAgICAgICAgICAgIEFTU0VSVF9UUlVFKGNvb2tpZTEuZ2V0KCkuc2VjdXJlKTsK
KyAgICAgICAgICAgIEFTU0VSVF9UUlVFKGNvb2tpZTEuZ2V0KCkuc2Vzc2lvbk9ubHkpOworICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgQVNTRVJUX1RSVUUoW2Nvb2tpZTIuZ2V0KCkucGF0
aCBpc0VxdWFsVG9TdHJpbmc6Y29va2llLnBhdGhdKTsKKyAgICAgICAgICAgIEFTU0VSVF9UUlVF
KFtjb29raWUyLmdldCgpLnZhbHVlIGlzRXF1YWxUb1N0cmluZzpjb29raWUudmFsdWVdKTsKKyAg
ICAgICAgICAgIEFTU0VSVF9UUlVFKFtjb29raWUyLmdldCgpLm5hbWUgaXNFcXVhbFRvU3RyaW5n
OmNvb2tpZS5uYW1lXSk7CisgICAgICAgICAgICBBU1NFUlRfVFJVRShbY29va2llMi5nZXQoKS5k
b21haW4gaXNFcXVhbFRvU3RyaW5nOmNvb2tpZS5kb21haW5dKTsKKyAgICAgICAgICAgIEFTU0VS
VF9GQUxTRShjb29raWUyLmdldCgpLnNlY3VyZSk7CisgICAgICAgICAgICBBU1NFUlRfRkFMU0Uo
Y29va2llMi5nZXQoKS5zZXNzaW9uT25seSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBbY29v
a2llcyByZWxlYXNlXTsKK30KKworI2VuZGlmCisKKyNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>304276</attachid>
            <date>2017-03-13 11:25:36 -0700</date>
            <delta_ts>2017-03-13 12:14:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-140191-20170313112541.patch</filename>
            <type>text/plain</type>
            <size>90318</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEzNzc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmU3MGVhY2ZjNWQwZmY4
NzI0MGFjN2QwMzg5MmQ1MTJkZjA5YzIyOC4uZTFmMmE3Yzc2OWE0YmNmNjA5NTljZDczNGZmZjg4
ZDRmMDRkYjZmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDE3LTAzLTEzICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBXS1dlYlZpZXcgcHJvdmlk
ZXMgbm8gYWNjZXNzIHRvIGNvb2tpZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNDAxOTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBDb3ZlcmVkIGJ5IEFQSSB0ZXN0cy4KKworICAgICAgICAqIHBsYXRm
b3JtL0Nvb2tpZS5oOgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFn
ZVNlc3Npb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtTdG9y
YWdlU2Vzc2lvbkNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpzZXRDb29raWUpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9u
OjpkZWxldGVDb29raWUpOgorICAgICAgICAoV2ViQ29yZTo6bnNDb29raWVzVG9Db29raWVWZWN0
b3IpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpnZXRBbGxDb29r
aWVzKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0Q29va2ll
cyk6CisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvTmV0d29ya1N0b3JhZ2VTZXNz
aW9uU291cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRl
bGV0ZUNvb2tpZSk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246Omdl
dEFsbENvb2tpZXMpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpn
ZXRDb29raWVzKToKKwogMjAxNy0wMy0xMiAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5j
b20+CiAKICAgICAgICAgQWRkIGZ1bGwgTlNIVFRQQ29va2llIGZpZGVsaXR5IHRvIFdlYkNvcmU6
OkNvb2tpZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZwppbmRleCAxMTA3YzgzYjQ0OTE3OTdjOWJkZTA3OTQyZjg2MzM0MzU2
ODAyOTliLi40NTJhOWZjZjhlYzgzOTkwNzM0MjlhMTk4YTA1MWQ0YjhmOGE4ZGMyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTE5IEBACisyMDE3LTAzLTEzICBCcmFkeSBFaWRzb24gIDxiZWlkc29u
QGFwcGxlLmNvbT4KKworICAgICAgICBXS1dlYlZpZXcgcHJvdmlkZXMgbm8gYWNjZXNzIHRvIGNv
b2tpZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NDAxOTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
aGlzIGFkZHMgYSBuZXcgX1dLSFRUUENvb2tpZU1hbmFnZXIgU1BJLgorICAgICAgICBJdCBmb2xs
b3dzIHRoZSBOU0hUVFBDb29raWVTdG9yYWdlIEFQSSBidXQgYXN5bmNocm9ub3VzICh3aXRoIGNv
bXBsZXRpb24gaGFuZGxlcnMpLgorICAgICAgICBBZnRlciB0aGUgaW1wbGVtZW50YXRpb24gaXMg
bGFuZGVkIGFuZCB3ZSByZXZpZXcgaW50ZXJuYWxseSB3ZSdsbCBjb25zaWRlciBwcm9tb3Rpbmcg
dG8gQVBJLgorICAgICAgICAKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBX
ZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKKyAgICAgICAgKiBTaGFyZWQvQVBJ
L0FQSU9iamVjdC5oOgorICAgICAgICAqIFNoYXJlZC9Db2NvYS9BUElPYmplY3QubW06CisgICAg
ICAgIChBUEk6Ok9iamVjdDo6bmV3T2JqZWN0KToKKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
QVBJSFRUUENvb2tpZVN0b3JhZ2UuY3BwOiBBZGRlZC4KKyAgICAgICAgKEFQSTo6SFRUUENvb2tp
ZVN0b3JhZ2U6OkhUVFBDb29raWVTdG9yYWdlKToKKyAgICAgICAgKEFQSTo6SFRUUENvb2tpZVN0
b3JhZ2U6On5IVFRQQ29va2llU3RvcmFnZSk6CisgICAgICAgIChBUEk6OkhUVFBDb29raWVTdG9y
YWdlOjpjb29raWVzKToKKyAgICAgICAgKEFQSTo6SFRUUENvb2tpZVN0b3JhZ2U6OnNldENvb2tp
ZSk6CisgICAgICAgIChBUEk6OkhUVFBDb29raWVTdG9yYWdlOjpzZXRDb29raWVzKToKKyAgICAg
ICAgKEFQSTo6SFRUUENvb2tpZVN0b3JhZ2U6OmRlbGV0ZUNvb2tpZSk6CisgICAgICAgIChBUEk6
OkhUVFBDb29raWVTdG9yYWdlOjpyZW1vdmVDb29raWVzU2luY2VEYXRlKToKKyAgICAgICAgKEFQ
STo6SFRUUENvb2tpZVN0b3JhZ2U6OnNldEhUVFBDb29raWVBY2NlcHRQb2xpY3kpOgorICAgICAg
ICAoQVBJOjpIVFRQQ29va2llU3RvcmFnZTo6Z2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElIVFRQQ29va2llU3RvcmFnZS5oOiBBZGRlZC4KKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5jcHA6CisgICAgICAg
IChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmUpOgorICAgICAgICAoQVBJ
OjpXZWJzaXRlRGF0YVN0b3JlOjpodHRwQ29va2llU3RvcmFnZSk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmg6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0MvV0tDb29raWVNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdLQ29va2llTWFuYWdlckRlbGV0ZUFs
bENvb2tpZXNNb2RpZmllZEFmdGVyRGF0ZSk6CisgICAgICAgIChXS0Nvb2tpZU1hbmFnZXJTZXRI
VFRQQ29va2llQWNjZXB0UG9saWN5KToKKyAgICAgICAgKFdLQ29va2llTWFuYWdlckdldEhUVFBD
b29raWVBY2NlcHRQb2xpY3kpOgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0
ZURhdGFTdG9yZVJlZi5jcHA6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVHZXREZWZhdWx0
RGF0YVN0b3JlKToKKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9v
bC5tbToKKyAgICAgICAgKC1bV0tQcm9jZXNzUG9vbCBfc2V0Q29va2llQWNjZXB0UG9saWN5Ol0p
OgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW06
CisgICAgICAgICgrW1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0RGF0YVN0b3JlXSk6CisgICAg
ICAgICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBfaHR0cENvb2tpZVN0b3JhZ2VdKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaDoKKyAgICAg
ICAgCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0hUVFBDb29raWVTdG9yYWdlLmg6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0hUVFBDb29raWVTdG9yYWdlLm1tOiBB
ZGRlZC4KKyAgICAgICAgKGNvcmVDb29raWVzVG9OU0Nvb2tpZXMpOgorICAgICAgICAoLVtXS0hU
VFBDb29raWVTdG9yYWdlIGRlYWxsb2NdKToKKyAgICAgICAgKC1bV0tIVFRQQ29va2llU3RvcmFn
ZSBmZXRjaENvb2tpZXM6XSk6CisgICAgICAgICgtW1dLSFRUUENvb2tpZVN0b3JhZ2UgZmV0Y2hD
b29raWVzRm9yVVJMOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS0hUVFBDb29r
aWVTdG9yYWdlIHNldENvb2tpZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tI
VFRQQ29va2llU3RvcmFnZSBkZWxldGVDb29raWU6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAg
ICAgICgtW1dLSFRUUENvb2tpZVN0b3JhZ2Ugc2V0Q29va2llczpmb3JVUkw6bWFpbkRvY3VtZW50
VVJMOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS0hUVFBDb29raWVTdG9yYWdl
IHJlbW92ZUNvb2tpZXNTaW5jZURhdGU6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgt
W1dLSFRUUENvb2tpZVN0b3JhZ2Ugc2V0Q29va2llQWNjZXB0UG9saWN5OmNvbXBsZXRpb25IYW5k
bGVyOl0pOgorICAgICAgICAoa2l0Q29va2llUG9saWN5VG9OU0Nvb2tpZVBvbGljeSk6CisgICAg
ICAgICgtW1dLSFRUUENvb2tpZVN0b3JhZ2UgZmV0Y2hDb29raWVBY2NlcHRQb2xpY3k6XSk6Cisg
ICAgICAgICgtW1dLSFRUUENvb2tpZVN0b3JhZ2UgX2FwaU9iamVjdF0pOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tIVFRQQ29va2llU3RvcmFnZUludGVybmFsLmg6IENvcGllZCBm
cm9tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3Jl
UHJpdmF0ZS5oLgorICAgICAgICAoV2ViS2l0Ojp3cmFwcGVyKToKKworICAgICAgICAqIFVJUHJv
Y2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViQXV0b21hdGlvblNlc3Npb246OmFkZFNpbmdsZUNvb2tpZSk6CisKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
Q29va2llTWFuYWdlclByb3h5OjpnZXRIb3N0bmFtZXNXaXRoQ29va2llcyk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKToK
KyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlclByb3h5OjpkZWxldGVBbGxDb29raWVz
KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlclByb3h5OjpkZWxldGVDb29raWUp
OgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRlbGV0ZUFsbENvb2tp
ZXNNb2RpZmllZFNpbmNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlclByb3h5
OjpzZXRDb29raWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OnNl
dENvb2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OmdldEFs
bENvb2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OmdldENv
b2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRpZFNldENv
b2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRpZEdldENv
b2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRpZERlbGV0
ZUNvb2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OnN0YXJ0
T2JzZXJ2aW5nQ29va2llQ2hhbmdlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFn
ZXJQcm94eTo6c3RvcE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJDb29raWVNYW5hZ2VyUHJveHk6OnNldENvb2tpZU9ic2VydmVyQ2FsbGJhY2spOgorICAgICAg
ICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OmNvb2tpZXNEaWRDaGFuZ2UpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OnNldEhUVFBDb29raWVBY2NlcHRQ
b2xpY3kpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OmdldEhUVFBD
b29raWVBY2NlcHRQb2xpY3kpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJv
eHk6OmRpZEdldEhUVFBDb29raWVBY2NlcHRQb2xpY3kpOgorICAgICAgICAoV2ViS2l0OjpXZWJD
b29raWVNYW5hZ2VyUHJveHk6OmRpZFNldEhUVFBDb29raWVBY2NlcHRQb2xpY3kpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViQ29va2llTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluOgorCisgICAgICAgICogVUlQcm9j
ZXNzL1dlYkZyYW1lUHJveHkuaDoKKyAgICAgICAgCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKyAg
ICAgICAgCisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpwcm9jZXNzUG9vbEZvckNv
b2tpZVN0b3JhZ2VPcGVyYXRpb25zKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9y
ZTo6cHJvY2Vzc1Bvb2xzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0
ZURhdGFTdG9yZS5oOgorICAgICAgICAKKyAgICAgICAgKiBXZWJQcm9jZXNzL0Nvb2tpZXMvV2Vi
Q29va2llTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXI6OmRl
bGV0ZUNvb2tpZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXI6OmRlbGV0ZUFs
bENvb2tpZXNNb2RpZmllZFNpbmNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdl
cjo6Z2V0QWxsQ29va2llcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXI6Omdl
dENvb2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyOjpzZXRDb29raWUp
OgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyOjpzZXRDb29raWVzKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlcjo6c2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5tZXNzYWdlcy5pbjoKKwog
MjAxNy0wMy0xMiAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAg
VHJhbnNpdGlvbiBHZW5lcmljQ2FsbGJhY2sgZnJvbSBzdGQ6OmZ1bmN0aW9uIHRvIFdURjo6RnVu
Y3Rpb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db29raWUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nvb2tpZS5oCmluZGV4IGU0N2U3YmJmZjViYjNhYmM2M2Fi
M2Y5MjhmYzI3NDE1NWUxMDRmYTcuLjVkZGI5MzU0Y2U4ZDE5ZTdhNzU0Yjk3Y2UzYTAzODE1M2Yz
NjQ2OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nvb2tpZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nvb2tpZS5oCkBAIC01OCw3ICs1OCw3IEBAIHN0cnVj
dCBDb29raWUgewogCiAjaWZkZWYgX19PQkpDX18KICAgICBXRUJDT1JFX0VYUE9SVCBDb29raWUo
TlNIVFRQQ29va2llICopOwotICAgIG9wZXJhdG9yIE5TSFRUUENvb2tpZSAqKCkgY29uc3Q7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgb3BlcmF0b3IgTlNIVFRQQ29va2llICooKSBjb25zdDsKICNlbmRp
ZgogCiAgICAgU3RyaW5nIG5hbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaAppbmRleCBmMTQ4OWM2YjQyYTFkNDVh
ZjljYWE2MmNhMjZkMTcwNWI0NmIzNzQ4Li4yMTJiZTI2NGVhNWNjNzY1OGE4ZGYyZWYzZTM1OTY4
MTg1MTQ5ZWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05l
dHdvcmtTdG9yYWdlU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgKQEAgLTEwMCw3ICsxMDAsMTEgQEAgcHVibGljOgog
ICAgIE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0KCkgY29uc3Q7CiAjZW5kaWYKIAorICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgc2V0Q29va2llKGNvbnN0IENvb2tpZSYpOwogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgc2V0Q29va2llcyhjb25zdCBWZWN0b3I8Q29va2llPiYsIGNvbnN0IFVSTCYs
IGNvbnN0IFVSTCYgbWFpbkRvY3VtZW50VVJMKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRl
bGV0ZUNvb2tpZShjb25zdCBDb29raWUmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8Q29v
a2llPiBnZXRBbGxDb29raWVzKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPENvb2tpZT4g
Z2V0Q29va2llcyhjb25zdCBVUkwmKTsKIAogcHJpdmF0ZToKICAgICBzdGF0aWMgSGFzaE1hcDxT
ZXNzaW9uSUQsIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrU3RvcmFnZVNlc3Npb24+PiYgZ2xvYmFs
U2Vzc2lvbk1hcCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jb2NvYS9OZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2EubW0KaW5kZXgg
NDRhZWFiNzBlOTliNWZhMGE4NGVjZmQzNTdlMzQ1ODNkZWZjMDFlMC4uNGM5NTY3ZTljNjdhMGE0
NzY3NmE4ZmM3ZjhlZDRhZjRkZTE1NTI5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtTdG9yYWdlU2Vzc2lv
bkNvY29hLm1tCkBAIC0zMiw2ICszMiwxMyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3Zv
aWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRDb29raWUoY29uc3QgQ29va2llJiBjb29raWUp
Cit7CisgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOworICAgIFtuc0Nvb2tpZVN0b3Jh
Z2UoKSBzZXRDb29raWU6KE5TSFRUUENvb2tpZSAqKWNvb2tpZV07CisgICAgRU5EX0JMT0NLX09C
SkNfRVhDRVBUSU9OUzsKK30KKwogdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldENvb2tp
ZXMoY29uc3QgVmVjdG9yPENvb2tpZT4mIGNvb2tpZXMsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBV
UkwmIG1haW5Eb2N1bWVudFVSTCkKIHsKICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IG5z
Q29va2llcyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0
eTpjb29raWVzLnNpemUoKV0pOwpAQCAtNDMsNiArNTAsMzEgQEAgdm9pZCBOZXR3b3JrU3RvcmFn
ZVNlc3Npb246OnNldENvb2tpZXMoY29uc3QgVmVjdG9yPENvb2tpZT4mIGNvb2tpZXMsIGNvbnN0
IFVSTCYKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogfQogCit2b2lkIE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbjo6ZGVsZXRlQ29va2llKGNvbnN0IENvb2tpZSYgY29va2llKQoreworICAg
IFtuc0Nvb2tpZVN0b3JhZ2UoKSBkZWxldGVDb29raWU6KE5TSFRUUENvb2tpZSAqKWNvb2tpZV07
Cit9CisKK3N0YXRpYyBWZWN0b3I8Q29va2llPiBuc0Nvb2tpZXNUb0Nvb2tpZVZlY3RvcihOU0Fy
cmF5PE5TSFRUUENvb2tpZSAqPiAqbnNDb29raWVzKQoreworICAgIFZlY3RvcjxDb29raWU+IGNv
b2tpZXM7CisgICAgY29va2llcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG5zQ29va2llcy5jb3Vu
dCk7CisgICAgZm9yIChOU0hUVFBDb29raWUgKm5zQ29va2llIGluIG5zQ29va2llcykKKyAgICAg
ICAgY29va2llcy51bmNoZWNrZWRBcHBlbmQobnNDb29raWUpOworCisgICAgcmV0dXJuIGNvb2tp
ZXM7Cit9CisKK1ZlY3RvcjxDb29raWU+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0QWxsQ29v
a2llcygpCit7CisgICAgcmV0dXJuIG5zQ29va2llc1RvQ29va2llVmVjdG9yKG5zQ29va2llU3Rv
cmFnZSgpLmNvb2tpZXMpOworfQorCitWZWN0b3I8Q29va2llPiBOZXR3b3JrU3RvcmFnZVNlc3Np
b246OmdldENvb2tpZXMoY29uc3QgVVJMJiB1cmwpCit7CisgICAgcmV0dXJuIG5zQ29va2llc1Rv
Q29va2llVmVjdG9yKFtuc0Nvb2tpZVN0b3JhZ2UoKSBjb29raWVzRm9yVVJMOihOU1VSTCAqKXVy
bF0pOworfQorCiBOU0hUVFBDb29raWVTdG9yYWdlICpOZXR3b3JrU3RvcmFnZVNlc3Npb246Om5z
Q29va2llU3RvcmFnZSgpIGNvbnN0CiB7CiAgICAgYXV0byBjZkNvb2tpZVN0b3JhZ2UgPSBjb29r
aWVTdG9yYWdlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L3NvdXAvTmV0d29ya1N0b3JhZ2VTZXNzaW9uU291cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL3NvdXAvTmV0d29ya1N0b3JhZ2VTZXNzaW9uU291cC5jcHAKaW5kZXggMjQ5
YmQ4MmJkNzRlOGM2MmE5YzM1NzAzN2Y5ODM4NTA0ZmE1N2FjZC4uYTM3YWE3ZGQxMGVmODliYmY2
ZjAwNTYzOWNiYWFjOGM4YjhjNWIxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lvblNvdXAuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3Vw
LmNwcApAQCAtMzA0LDYgKzMwNCwyMCBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0
Q29va2llcyhjb25zdCBWZWN0b3I8Q29va2llPiYgY29va2llcywgY29uc3QgVVJMJgogICAgICAg
ICBzb3VwX2Nvb2tpZV9qYXJfYWRkX2Nvb2tpZShjb29raWVTdG9yYWdlKCksIHRvU291cENvb2tp
ZShjb29raWUpKTsKIH0KIAordm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlbGV0ZUNvb2tp
ZShjb25zdCBDb29raWUmKQoreworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgZm9yIFdLMiB0byB1
c2UuCit9CisKK1ZlY3RvcjxDb29raWU+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0QWxsQ29v
a2llcygpCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudCBmb3IgV0syIHRvIHVzZS4KK30KKwor
VmVjdG9yPENvb2tpZT4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpnZXRDb29raWVzKGNvbnN0IFVS
TCYpCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudCBmb3IgV0syIHRvIHVzZS4KK30KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxp
c3RzLnR4dCBiL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0CmluZGV4IDgxZmY4ZGE4MTEy
NDNlNTQxYTNjNjk4NGM5ZmE3OGIwOTdjOWRiZTYuLmE4ZmRjZDExYjNhNjIzNjY2MzcxN2RhMzQ5
NjFlZTE2MDQ2OGU2OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0
CisrKyBiL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0CkBAIC0zMzYsNiArMzM2LDcgQEAg
c2V0KFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9BUEkvQVBJQ29udGVudEV4dGVuc2lv
blN0b3JlLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvQVBJRXhwZXJpbWVudGFsRmVhdHVyZS5jcHAK
ICAgICBVSVByb2Nlc3MvQVBJL0FQSUZyYW1lSW5mby5jcHAKKyAgICBVSVByb2Nlc3MvQVBJL0FQ
SUhUVFBDb29raWVTdG9yYWdlLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvQVBJSGl0VGVzdFJlc3Vs
dC5jcHAKICAgICBVSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb24uY3BwCiAgICAgVUlQcm9jZXNz
L0FQSS9BUElOYXZpZ2F0aW9uRGF0YS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcAppbmRleCBkOGRjZGUz
MzA4ZDRiZjc1MzU3MmE0NzdiMTdjYTFmMDFiODJhM2MwLi4yNjA3MGYwMTE0ZTE3MjY3MjExMGRi
MDI3MWRhNDk3YTFkMmExOTM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrUHJvY2Vzc1NvdXAuY3BwCkBAIC0xMjQsNyArMTI0LDcg
QEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3Mo
Y29uc3QgTmV0d29ya1Byb2Nlc3NDcmVhdGkKICAgICAgICAgc3VwcGxlbWVudDxXZWJDb29raWVN
YW5hZ2VyPigpLT5zZXRDb29raWVQZXJzaXN0ZW50U3RvcmFnZShwYXJhbWV0ZXJzLmNvb2tpZVBl
cnNpc3RlbnRTdG9yYWdlUGF0aCwKICAgICAgICAgICAgIHBhcmFtZXRlcnMuY29va2llUGVyc2lz
dGVudFN0b3JhZ2VUeXBlKTsKICAgICB9Ci0gICAgc3VwcGxlbWVudDxXZWJDb29raWVNYW5hZ2Vy
PigpLT5zZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHBhcmFtZXRlcnMuY29va2llQWNjZXB0UG9s
aWN5KTsKKyAgICBzdXBwbGVtZW50PFdlYkNvb2tpZU1hbmFnZXI+KCktPnNldEhUVFBDb29raWVB
Y2NlcHRQb2xpY3kocGFyYW1ldGVycy5jb29raWVBY2NlcHRQb2xpY3ksIDApOwogCiAgICAgaWYg
KCFwYXJhbWV0ZXJzLmxhbmd1YWdlcy5pc0VtcHR5KCkpCiAgICAgICAgIHVzZXJQcmVmZXJyZWRM
YW5ndWFnZXNDaGFuZ2VkKHBhcmFtZXRlcnMubGFuZ3VhZ2VzKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9BUEkvQVBJT2JqZWN0LmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
QVBJL0FQSU9iamVjdC5oCmluZGV4IGFlMGZjOTk4NWJkMjc2NDc2ODI3ODlmZjRjNGY0NjZhMWVj
MzQ2MGEuLjQ2ZjI3OTFkZGZjNDUyNDJiYTM1MTRiMDVmOTYzMzE4ZTJmZTUxYjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvQVBJT2JqZWN0LmgKKysrIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL0FQSS9BUElPYmplY3QuaApAQCAtMTE2LDYgKzExNiw3IEBAIHB1YmxpYzoK
ICAgICAgICAgRnVsbFNjcmVlbk1hbmFnZXIsCiAgICAgICAgIEdlb2xvY2F0aW9uTWFuYWdlciwK
ICAgICAgICAgR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdCwKKyAgICAgICAgSFRUUENvb2tp
ZVN0b3JhZ2UsCiAgICAgICAgIEhpdFRlc3RSZXN1bHQsCiAgICAgICAgIEdlb2xvY2F0aW9uUG9z
aXRpb24sCiAgICAgICAgIEdyYW1tYXJEZXRhaWwsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQ29jb2EvQVBJT2JqZWN0Lm1tIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0NvY29h
L0FQSU9iamVjdC5tbQppbmRleCAxMTYzMjQ1NDIwY2QyNzczODA0YjIyNTM0Y2I5OWMwZmFkNDE3
MjIyLi5kYzY5YWQ3OTM5YzVmNGNkMGYwMTFlN2E2ZTdkNDdhMjc4ZDZmOTRjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29jb2EvQVBJT2JqZWN0Lm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9Db2NvYS9BUElPYmplY3QubW0KQEAgLTM2LDYgKzM2LDcgQEAKICNpbXBv
cnQgIldLQ29udGVudEV4dGVuc2lvbkludGVybmFsLmgiCiAjaW1wb3J0ICJXS0NvbnRlbnRFeHRl
bnNpb25TdG9yZUludGVybmFsLmgiCiAjaW1wb3J0ICJXS0ZyYW1lSW5mb0ludGVybmFsLmgiCisj
aW1wb3J0ICJXS0hUVFBDb29raWVTdG9yYWdlSW50ZXJuYWwuaCIKICNpbXBvcnQgIldLTlNBcnJh
eS5oIgogI2ltcG9ydCAiV0tOU0RhdGEuaCIKICNpbXBvcnQgIldLTlNEaWN0aW9uYXJ5LmgiCkBA
IC0xNzgsNiArMTc5LDEwIEBAIHZvaWQqIE9iamVjdDo6bmV3T2JqZWN0KHNpemVfdCBzaXplLCBU
eXBlIHR5cGUpCiAgICAgICAgIHdyYXBwZXIgPSBbV0tGcmFtZUluZm8gYWxsb2NdOwogICAgICAg
ICBicmVhazsKIAorICAgIGNhc2UgVHlwZTo6SFRUUENvb2tpZVN0b3JhZ2U6CisgICAgICAgIHdy
YXBwZXIgPSBbV0tIVFRQQ29va2llU3RvcmFnZSBhbGxvY107CisgICAgICAgIGJyZWFrOworCiAj
aWYgUExBVEZPUk0oTUFDKQogICAgIGNhc2UgVHlwZTo6SGl0VGVzdFJlc3VsdDoKICAgICAgICAg
d3JhcHBlciA9IFtfV0tIaXRUZXN0UmVzdWx0IGFsbG9jXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3JhZ2UuY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9BUElIVFRQQ29va2llU3RvcmFnZS5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MzM4Yjg1MjRiOWZjODlmMTRhYzg0NjIzNWMxN2NiNTExYjQ4YjhlMwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3JhZ2UuY3Bw
CkBAIC0wLDAgKzEsMTM4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIkFQSUhUVFBDb29raWVTdG9yYWdlLmgiCisKKyNpbmNsdWRlICJBUElXZWJzaXRlRGF0
YVN0b3JlLmgiCisjaW5jbHVkZSAiV2ViQ29va2llTWFuYWdlclByb3h5LmgiCisjaW5jbHVkZSAi
V2ViUHJvY2Vzc1Bvb2wuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0Nvb2tpZS5oPgorCit1c2luZyBu
YW1lc3BhY2UgV2ViS2l0OworCituYW1lc3BhY2UgQVBJIHsKKworSFRUUENvb2tpZVN0b3JhZ2U6
OkhUVFBDb29raWVTdG9yYWdlKFdlYnNpdGVEYXRhU3RvcmUmIHdlYnNpdGVEYXRhU3RvcmUpCisg
ICAgOiBtX293bmluZ0RhdGFTdG9yZSh3ZWJzaXRlRGF0YVN0b3JlKQoreworfQorCitIVFRQQ29v
a2llU3RvcmFnZTo6fkhUVFBDb29raWVTdG9yYWdlKCkKK3sKK30KKwordm9pZCBIVFRQQ29va2ll
U3RvcmFnZTo6Y29va2llcyhGdW5jdGlvbjx2b2lkIChjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29v
a2llPiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGF1dG8mIGRhdGFTdG9yZSA9IG1f
b3duaW5nRGF0YVN0b3JlLndlYnNpdGVEYXRhU3RvcmUoKTsKKyAgICBhdXRvIHBvb2wgPSBkYXRh
U3RvcmUucHJvY2Vzc1Bvb2xGb3JDb29raWVTdG9yYWdlT3BlcmF0aW9ucygpOworICAgIGF1dG8q
IGNvb2tpZU1hbmFnZXIgPSBwb29sLT5zdXBwbGVtZW50PFdlYktpdDo6V2ViQ29va2llTWFuYWdl
clByb3h5PigpOworCisgICAgY29va2llTWFuYWdlci0+Z2V0QWxsQ29va2llcyhkYXRhU3RvcmUu
c2Vzc2lvbklEKCksIFtwb29sID0gV1RGTW92ZShwb29sKSwgY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4m
IGNvb2tpZXMsIENhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKKyAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoY29va2llcyk7CisgICAgfSk7Cit9CisKK3ZvaWQgSFRUUENvb2tpZVN0b3JhZ2U6
OmNvb2tpZXMoY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwsIEZ1bmN0aW9uPHZvaWQgKGNvbnN0IFZl
Y3RvcjxXZWJDb3JlOjpDb29raWU+Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgYXV0
byYgZGF0YVN0b3JlID0gbV9vd25pbmdEYXRhU3RvcmUud2Vic2l0ZURhdGFTdG9yZSgpOworICAg
IGF1dG8gcG9vbCA9IGRhdGFTdG9yZS5wcm9jZXNzUG9vbEZvckNvb2tpZVN0b3JhZ2VPcGVyYXRp
b25zKCk7CisgICAgYXV0byogY29va2llTWFuYWdlciA9IHBvb2wtPnN1cHBsZW1lbnQ8V2ViS2l0
OjpXZWJDb29raWVNYW5hZ2VyUHJveHk+KCk7CisKKyAgICBjb29raWVNYW5hZ2VyLT5nZXRDb29r
aWVzKGRhdGFTdG9yZS5zZXNzaW9uSUQoKSwgdXJsLCBbcG9vbCA9IFdURk1vdmUocG9vbCksIGNv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKGNvbnN0IFZlY3Rv
cjxXZWJDb3JlOjpDb29raWU+JiBjb29raWVzLCBDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7
CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGNvb2tpZXMpOworICAgIH0pOworfQorCit2b2lk
IEhUVFBDb29raWVTdG9yYWdlOjpzZXRDb29raWUoY29uc3QgV2ViQ29yZTo6Q29va2llJiBjb29r
aWUsIEZ1bmN0aW9uPHZvaWQgKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgYXV0byYg
ZGF0YVN0b3JlID0gbV9vd25pbmdEYXRhU3RvcmUud2Vic2l0ZURhdGFTdG9yZSgpOworICAgIGF1
dG8gcG9vbCA9IGRhdGFTdG9yZS5wcm9jZXNzUG9vbEZvckNvb2tpZVN0b3JhZ2VPcGVyYXRpb25z
KCk7CisgICAgYXV0byogY29va2llTWFuYWdlciA9IHBvb2wtPnN1cHBsZW1lbnQ8V2ViS2l0OjpX
ZWJDb29raWVNYW5hZ2VyUHJveHk+KCk7CisKKyAgICBjb29raWVNYW5hZ2VyLT5zZXRDb29raWUo
ZGF0YVN0b3JlLnNlc3Npb25JRCgpLCBjb29raWUsIFtwb29sID0gV1RGTW92ZShwb29sKSwgY29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oQ2FsbGJhY2tCYXNl
OjpFcnJvciBlcnJvcikgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAgIH0pOwor
fQorCit2b2lkIEhUVFBDb29raWVTdG9yYWdlOjpzZXRDb29raWVzKGNvbnN0IFZlY3RvcjxXZWJD
b3JlOjpDb29raWU+JiBjb29raWVzLCBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCwgY29uc3QgV2Vi
Q29yZTo6VVJMJiBtYWluRG9jdW1lbnRVUkwsIEZ1bmN0aW9uPHZvaWQgKCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCit7CisgICAgYXV0byYgZGF0YVN0b3JlID0gbV9vd25pbmdEYXRhU3RvcmUud2Vi
c2l0ZURhdGFTdG9yZSgpOworICAgIGF1dG8gcG9vbCA9IGRhdGFTdG9yZS5wcm9jZXNzUG9vbEZv
ckNvb2tpZVN0b3JhZ2VPcGVyYXRpb25zKCk7CisgICAgYXV0byogY29va2llTWFuYWdlciA9IHBv
b2wtPnN1cHBsZW1lbnQ8V2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk+KCk7CisKKyAgICBj
b29raWVNYW5hZ2VyLT5zZXRDb29raWVzKGRhdGFTdG9yZS5zZXNzaW9uSUQoKSwgY29va2llcywg
dXJsLCBtYWluRG9jdW1lbnRVUkwsIFtwb29sID0gV1RGTW92ZShwb29sKSwgY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oQ2FsbGJhY2tCYXNlOjpFcnJvciBl
cnJvcikgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAgIH0pOworfQorCit2b2lk
IEhUVFBDb29raWVTdG9yYWdlOjpkZWxldGVDb29raWUoY29uc3QgV2ViQ29yZTo6Q29va2llJiBj
b29raWUsIEZ1bmN0aW9uPHZvaWQgKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgYXV0
byYgZGF0YVN0b3JlID0gbV9vd25pbmdEYXRhU3RvcmUud2Vic2l0ZURhdGFTdG9yZSgpOworICAg
IGF1dG8gcG9vbCA9IGRhdGFTdG9yZS5wcm9jZXNzUG9vbEZvckNvb2tpZVN0b3JhZ2VPcGVyYXRp
b25zKCk7CisgICAgYXV0byogY29va2llTWFuYWdlciA9IHBvb2wtPnN1cHBsZW1lbnQ8V2ViS2l0
OjpXZWJDb29raWVNYW5hZ2VyUHJveHk+KCk7CisKKyAgICBjb29raWVNYW5hZ2VyLT5kZWxldGVD
b29raWUoZGF0YVN0b3JlLnNlc3Npb25JRCgpLCBjb29raWUsIFtwb29sID0gV1RGTW92ZShwb29s
KSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oQ2FsbGJh
Y2tCYXNlOjpFcnJvciBlcnJvcikgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAg
IH0pOworfQorCit2b2lkIEhUVFBDb29raWVTdG9yYWdlOjpyZW1vdmVDb29raWVzU2luY2VEYXRl
KHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgZGF0ZSwgRnVuY3Rpb248dm9p
ZCAoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBhdXRvJiBkYXRhU3RvcmUgPSBtX293
bmluZ0RhdGFTdG9yZS53ZWJzaXRlRGF0YVN0b3JlKCk7CisgICAgYXV0byBwb29sID0gZGF0YVN0
b3JlLnByb2Nlc3NQb29sRm9yQ29va2llU3RvcmFnZU9wZXJhdGlvbnMoKTsKKyAgICBhdXRvKiBj
b29raWVNYW5hZ2VyID0gcG9vbC0+c3VwcGxlbWVudDxXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQ
cm94eT4oKTsKKworICAgIGNvb2tpZU1hbmFnZXItPmRlbGV0ZUFsbENvb2tpZXNNb2RpZmllZFNp
bmNlKGRhdGFTdG9yZS5zZXNzaW9uSUQoKSwgZGF0ZSwgW3Bvb2wgPSBXVEZNb3ZlKHBvb2wpLCBj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShDYWxsYmFja0Jh
c2U6OkVycm9yIGVycm9yKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgfSk7
Cit9CisKK3ZvaWQgSFRUUENvb2tpZVN0b3JhZ2U6OnNldEhUVFBDb29raWVBY2NlcHRQb2xpY3ko
SFRUUENvb2tpZUFjY2VwdFBvbGljeSBwb2xpY3ksIEZ1bmN0aW9uPHZvaWQgKCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCit7CisgICAgYXV0byYgZGF0YVN0b3JlID0gbV9vd25pbmdEYXRhU3RvcmUu
d2Vic2l0ZURhdGFTdG9yZSgpOworICAgIGF1dG8gcG9vbCA9IGRhdGFTdG9yZS5wcm9jZXNzUG9v
bEZvckNvb2tpZVN0b3JhZ2VPcGVyYXRpb25zKCk7CisgICAgYXV0byogY29va2llTWFuYWdlciA9
IHBvb2wtPnN1cHBsZW1lbnQ8V2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk+KCk7CisKKyAg
ICBjb29raWVNYW5hZ2VyLT5zZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KGRhdGFTdG9yZS5zZXNz
aW9uSUQoKSwgcG9saWN5LCBbcG9vbCA9IFdURk1vdmUocG9vbCksIGNvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKENhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3Ip
IHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICB9KTsKK30KKwordm9pZCBIVFRQ
Q29va2llU3RvcmFnZTo6Z2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShGdW5jdGlvbjx2b2lkIChI
VFRQQ29va2llQWNjZXB0UG9saWN5KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBhdXRv
JiBkYXRhU3RvcmUgPSBtX293bmluZ0RhdGFTdG9yZS53ZWJzaXRlRGF0YVN0b3JlKCk7CisgICAg
YXV0byBwb29sID0gZGF0YVN0b3JlLnByb2Nlc3NQb29sRm9yQ29va2llU3RvcmFnZU9wZXJhdGlv
bnMoKTsKKyAgICBhdXRvKiBjb29raWVNYW5hZ2VyID0gcG9vbC0+c3VwcGxlbWVudDxXZWJLaXQ6
OldlYkNvb2tpZU1hbmFnZXJQcm94eT4oKTsKKworICAgIGNvb2tpZU1hbmFnZXItPmdldEhUVFBD
b29raWVBY2NlcHRQb2xpY3koZGF0YVN0b3JlLnNlc3Npb25JRCgpLCBbcG9vbCA9IFdURk1vdmUo
cG9vbCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKEhU
VFBDb29raWVBY2NlcHRQb2xpY3kgcG9saWN5LCBDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7
CisgICAgICAgIGlmIChlcnJvciAhPSBDYWxsYmFja0Jhc2U6OkVycm9yOjpOb25lKQorICAgICAg
ICAgICAgcG9saWN5ID0gSFRUUENvb2tpZUFjY2VwdFBvbGljeU5ldmVyOworCisgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKHBvbGljeSk7CisgICAgfSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEFQ
SQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElIVFRQQ29va2ll
U3RvcmFnZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElIVFRQQ29va2llU3Rv
cmFnZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmFkZjdiYTI1NmI2ODMwZTQzMDVkOTlkNjBkNzE1MzRhYzg2Zjlk
MzAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSUhU
VFBDb29raWVTdG9yYWdlLmgKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCisjaW5jbHVkZSAiSFRUUENvb2tpZUFjY2Vw
dFBvbGljeS5oIgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgVVJMOworc3RydWN0IENvb2tpZTsK
K30KKworbmFtZXNwYWNlIEFQSSB7CisKK2NsYXNzIFdlYnNpdGVEYXRhU3RvcmU7CisKK2NsYXNz
IEhUVFBDb29raWVTdG9yYWdlIGZpbmFsIDogcHVibGljIE9iamVjdEltcGw8T2JqZWN0OjpUeXBl
OjpIVFRQQ29va2llU3RvcmFnZT4geworcHVibGljOgorICAgIHN0YXRpYyBSZWY8SFRUUENvb2tp
ZVN0b3JhZ2U+IGNyZWF0ZShXZWJzaXRlRGF0YVN0b3JlJiB3ZWJzaXRlRGF0YVN0b3JlKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSFRUUENvb2tpZVN0b3JhZ2Uod2Vic2l0
ZURhdGFTdG9yZSkpOworICAgIH0KKworICAgIHZpcnR1YWwgfkhUVFBDb29raWVTdG9yYWdlKCk7
CisKKyAgICB2b2lkIGNvb2tpZXMoRnVuY3Rpb248dm9pZCAoY29uc3QgVmVjdG9yPFdlYkNvcmU6
OkNvb2tpZT4mKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7CisgICAgdm9pZCBjb29raWVzKGNvbnN0
IFdlYkNvcmU6OlVSTCYsIEZ1bmN0aW9uPHZvaWQgKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29r
aWU+Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpOworCisgICAgdm9pZCBzZXRDb29raWUoY29uc3Qg
V2ViQ29yZTo6Q29va2llJiwgRnVuY3Rpb248dm9pZCAoKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7
CisgICAgdm9pZCBzZXRDb29raWVzKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiwgY29u
c3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBtYWluRG9jdW1lbnRVUkwsIEZ1
bmN0aW9uPHZvaWQgKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpOworICAgIHZvaWQgZGVsZXRlQ29v
a2llKGNvbnN0IFdlYkNvcmU6OkNvb2tpZSYsIEZ1bmN0aW9uPHZvaWQgKCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpOworCisgICAgdm9pZCByZW1vdmVDb29raWVzU2luY2VEYXRlKHN0ZDo6Y2hyb25v
OjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQsIEZ1bmN0aW9uPHZvaWQgKCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpOworCisgICAgdm9pZCBzZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KFdlYktpdDo6
SFRUUENvb2tpZUFjY2VwdFBvbGljeSwgRnVuY3Rpb248dm9pZCAoKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcik7CisgICAgdm9pZCBnZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KEZ1bmN0aW9uPHZvaWQg
KFdlYktpdDo6SFRUUENvb2tpZUFjY2VwdFBvbGljeSk+JiYgY29tcGxldGlvbkhhbmRsZXIpOwor
ICAgIAorcHJpdmF0ZToKKyAgICBIVFRQQ29va2llU3RvcmFnZShXZWJzaXRlRGF0YVN0b3JlJik7
CisKKyAgICBXZWJzaXRlRGF0YVN0b3JlJiBtX293bmluZ0RhdGFTdG9yZTsKK307CisKK30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9y
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUu
Y3BwCmluZGV4IDVjNzhjY2Q3YWUyOTBlNDVlNzBmNDgzZjUwMjBiZGFhNzkwNGY3NWEuLmNhMWRm
NzU3MTBkOTI1N2EyYTliMGQyZDMwMmYwM2IxZWViMzc5MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmNwcApAQCAtMzEsMTMg
KzMxLDEzIEBACiAKIG5hbWVzcGFjZSBBUEkgewogCi1SZWZQdHI8V2Vic2l0ZURhdGFTdG9yZT4g
V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZSgpCitSZWY8V2Vic2l0ZURhdGFTdG9y
ZT4gV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZSgpCiB7CiAgICAgV2ViS2l0OjpJ
bml0aWFsaXplV2ViS2l0MigpOwogCiAgICAgc3RhdGljIFdlYnNpdGVEYXRhU3RvcmUqIGRlZmF1
bHREYXRhU3RvcmUgPSBhZG9wdFJlZihuZXcgV2Vic2l0ZURhdGFTdG9yZShkZWZhdWx0RGF0YVN0
b3JlQ29uZmlndXJhdGlvbigpKSkubGVha1JlZigpOwogCi0gICAgcmV0dXJuIGRlZmF1bHREYXRh
U3RvcmU7CisgICAgcmV0dXJuICpkZWZhdWx0RGF0YVN0b3JlOwogfQogCiBSZWY8V2Vic2l0ZURh
dGFTdG9yZT4gV2Vic2l0ZURhdGFTdG9yZTo6Y3JlYXRlTm9uUGVyc2lzdGVudERhdGFTdG9yZSgp
CkBAIC02NCw2ICs2NCwxNCBAQCBXZWJzaXRlRGF0YVN0b3JlOjp+V2Vic2l0ZURhdGFTdG9yZSgp
CiB7CiB9CiAKK0hUVFBDb29raWVTdG9yYWdlJiBXZWJzaXRlRGF0YVN0b3JlOjpodHRwQ29va2ll
U3RvcmFnZSgpCit7CisgICAgaWYgKCFtX2FwaUhUVFBDb29raWVTdG9yYWdlKQorICAgICAgICBt
X2FwaUhUVFBDb29raWVTdG9yYWdlID0gSFRUUENvb2tpZVN0b3JhZ2U6OmNyZWF0ZSgqdGhpcyk7
CisKKyAgICByZXR1cm4gKm1fYXBpSFRUUENvb2tpZVN0b3JhZ2U7Cit9CisKIGJvb2wgV2Vic2l0
ZURhdGFTdG9yZTo6aXNQZXJzaXN0ZW50KCkKIHsKICAgICByZXR1cm4gbV93ZWJzaXRlRGF0YVN0
b3JlLT5pc1BlcnNpc3RlbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9BUElXZWJzaXRlRGF0YVN0b3JlLmgKaW5kZXggMjY3ZDY5YzMzODQ5YTA4ZjgyMjg4NzFlMDFl
ZDg2MWFkODNiOGE3ZS4uY2E3NGRiY2M0NjdlNjU2NTJkMzc1M2ZkM2JjZDI0MzI5ODJmODc3OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0
b3JlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0
b3JlLmgKQEAgLTI2LDcgKzI2LDcgQEAKICNpZm5kZWYgQVBJV2Vic2l0ZURhdGFTdG9yZV9oCiAj
ZGVmaW5lIEFQSVdlYnNpdGVEYXRhU3RvcmVfaAogCi0jaW5jbHVkZSAiQVBJT2JqZWN0LmgiCisj
aW5jbHVkZSAiQVBJSFRUUENvb2tpZVN0b3JhZ2UuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YVN0
b3JlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KQEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNlIEFQSSB7CiAKIGNsYXNz
IFdlYnNpdGVEYXRhU3RvcmUgZmluYWwgOiBwdWJsaWMgT2JqZWN0SW1wbDxPYmplY3Q6OlR5cGU6
OldlYnNpdGVEYXRhU3RvcmU+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPFdlYnNpdGVE
YXRhU3RvcmU+IGRlZmF1bHREYXRhU3RvcmUoKTsKKyAgICBzdGF0aWMgUmVmPFdlYnNpdGVEYXRh
U3RvcmU+IGRlZmF1bHREYXRhU3RvcmUoKTsKICAgICBzdGF0aWMgUmVmPFdlYnNpdGVEYXRhU3Rv
cmU+IGNyZWF0ZU5vblBlcnNpc3RlbnREYXRhU3RvcmUoKTsKICAgICBzdGF0aWMgUmVmPFdlYnNp
dGVEYXRhU3RvcmU+IGNyZWF0ZShXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OkNvbmZpZ3VyYXRp
b24pOwogCkBAIC00OSw2ICs0OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlZ2lzdGVyU2hhcmVk
UmVzb3VyY2VMb2FkT2JzZXJ2ZXIoKTsKIAogICAgIFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZSYg
d2Vic2l0ZURhdGFTdG9yZSgpIHsgcmV0dXJuICptX3dlYnNpdGVEYXRhU3RvcmU7IH0KKyAgICBI
VFRQQ29va2llU3RvcmFnZSYgaHR0cENvb2tpZVN0b3JhZ2UoKTsKIAogICAgIHN0YXRpYyBTdHJp
bmcgZGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKTsKICAgICBzdGF0aWMgU3RyaW5n
IGRlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKTsKQEAgLTcwLDYgKzcxLDcgQEAgcHJpdmF0
ZToKICAgICBzdGF0aWMgU3RyaW5nIHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5TmFtZSk7CiAKICAgICBSZWZQdHI8V2Vi
S2l0OjpXZWJzaXRlRGF0YVN0b3JlPiBtX3dlYnNpdGVEYXRhU3RvcmU7CisgICAgUmVmUHRyPEhU
VFBDb29raWVTdG9yYWdlPiBtX2FwaUhUVFBDb29raWVTdG9yYWdlOwogfTsKIAogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29va2llTWFuYWdlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb29raWVNYW5hZ2VyLmNwcAppbmRl
eCAyNzhlODNjNTFlMDQwOGEzY2RiY2MxNThkNTNlM2E0YjFmNzY0OWY3Li44MGFjOGE4NjI0MDkx
NGZhOGFlMDhmMzhhZjk4YWNjYTVkYTk1NGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvV0tDb29raWVNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvV0tDb29raWVNYW5hZ2VyLmNwcApAQCAtNjEsMTcgKzYxLDE3IEBAIHZv
aWQgV0tDb29raWVNYW5hZ2VyRGVsZXRlQWxsQ29va2llc01vZGlmaWVkQWZ0ZXJEYXRlKFdLQ29v
a2llTWFuYWdlclJlZiBjb29raWVNCiAgICAgdXNpbmcgbmFtZXNwYWNlIHN0ZDo6Y2hyb25vOwog
CiAgICAgYXV0byB0aW1lID0gc3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50KGR1cmF0aW9uX2Nhc3Q8
c3lzdGVtX2Nsb2NrOjpkdXJhdGlvbj4oZHVyYXRpb248ZG91YmxlPihkYXRlKSkpOwotICAgIHRv
SW1wbChjb29raWVNYW5hZ2VyUmVmKS0+ZGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2UoV2Vi
Q29yZTo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCksIHRpbWUpOworICAgIHRvSW1wbChj
b29raWVNYW5hZ2VyUmVmKS0+ZGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2UoV2ViQ29yZTo6
U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCksIHRpbWUsIFtdKENhbGxiYWNrQmFzZTo6RXJy
b3Ipe30pOwogfQogCiB2b2lkIFdLQ29va2llTWFuYWdlclNldEhUVFBDb29raWVBY2NlcHRQb2xp
Y3koV0tDb29raWVNYW5hZ2VyUmVmIGNvb2tpZU1hbmFnZXIsIFdLSFRUUENvb2tpZUFjY2VwdFBv
bGljeSBwb2xpY3kpCiB7Ci0gICAgdG9JbXBsKGNvb2tpZU1hbmFnZXIpLT5zZXRIVFRQQ29va2ll
QWNjZXB0UG9saWN5KHRvSFRUUENvb2tpZUFjY2VwdFBvbGljeShwb2xpY3kpKTsKKyAgICB0b0lt
cGwoY29va2llTWFuYWdlciktPnNldEhUVFBDb29raWVBY2NlcHRQb2xpY3koV2ViQ29yZTo6U2Vz
c2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCksIHRvSFRUUENvb2tpZUFjY2VwdFBvbGljeShwb2xp
Y3kpLCBbXShDYWxsYmFja0Jhc2U6OkVycm9yKXt9KTsKIH0KIAogdm9pZCBXS0Nvb2tpZU1hbmFn
ZXJHZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KFdLQ29va2llTWFuYWdlclJlZiBjb29raWVNYW5h
Z2VyLCB2b2lkKiBjb250ZXh0LCBXS0Nvb2tpZU1hbmFnZXJHZXRIVFRQQ29va2llQWNjZXB0UG9s
aWN5RnVuY3Rpb24gY2FsbGJhY2spCiB7Ci0gICAgdG9JbXBsKGNvb2tpZU1hbmFnZXIpLT5nZXRI
VFRQQ29va2llQWNjZXB0UG9saWN5KHRvR2VuZXJpY0NhbGxiYWNrRnVuY3Rpb248V0tIVFRQQ29v
a2llQWNjZXB0UG9saWN5LCBIVFRQQ29va2llQWNjZXB0UG9saWN5Pihjb250ZXh0LCBjYWxsYmFj
aykpOworICAgIHRvSW1wbChjb29raWVNYW5hZ2VyKS0+Z2V0SFRUUENvb2tpZUFjY2VwdFBvbGlj
eShXZWJDb3JlOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSwgdG9HZW5lcmljQ2FsbGJh
Y2tGdW5jdGlvbjxXS0hUVFBDb29raWVBY2NlcHRQb2xpY3ksIEhUVFBDb29raWVBY2NlcHRQb2xp
Y3k+KGNvbnRleHQsIGNhbGxiYWNrKSk7CiB9CiAKIHZvaWQgV0tDb29raWVNYW5hZ2VyU2V0Q29v
a2llU3RvcmFnZVBhcnRpdGlvbmluZ0VuYWJsZWQoV0tDb29raWVNYW5hZ2VyUmVmIGNvb2tpZU1h
bmFnZXIsIGJvb2wgZW5hYmxlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAKaW5kZXggYTc3YzFhODlkNWNkZTVl
YjkyZmY4MTk2NmZmODIzNzkyN2M2ZTQ5OC4uNmNhNjljNmQyZmQ3NmU0YTA0ZDBlYzE1NzRjMmMx
MGUzMGU3NWFjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dL
V2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgV0tUeXBlSUQg
V0tXZWJzaXRlRGF0YVN0b3JlR2V0VHlwZUlEKCkKIAogV0tXZWJzaXRlRGF0YVN0b3JlUmVmIFdL
V2Vic2l0ZURhdGFTdG9yZUdldERlZmF1bHREYXRhU3RvcmUoKQogewotICAgIHJldHVybiBXZWJL
aXQ6OnRvQVBJKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZSgpLmdldCgp
KTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSShBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1
bHREYXRhU3RvcmUoKS5wdHIoKSk7CiB9CiAKIFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBXS1dlYnNp
dGVEYXRhU3RvcmVDcmVhdGVOb25QZXJzaXN0ZW50RGF0YVN0b3JlKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tIVFRQQ29va2llU3RvcmFnZS5oIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0hUVFBDb29raWVTdG9yYWdlLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNjEwNGY3ODY1NGI5MGE1OWJjNGJmMTA3Y2U0MmE3MzExNjc1ZWI3NwotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tIVFRQ
Q29va2llU3RvcmFnZS5oCkBAIC0wLDAgKzEsOTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0IDxX
ZWJLaXQvV0tGb3VuZGF0aW9uLmg+CisKKyNpZiBXS19BUElfRU5BQkxFRAorCisjaW1wb3J0IDxG
b3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KKworTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KKworLyoh
CisgQSBXS0hUVFBDb29raWVTdG9yYWdlIG9iamVjdCBhbGxvd3MgbWFuYWdpbmcgdGhlIEhUVFAg
Y29va2llcyBhc3NvY2lhdGVkIHdpdGggYSBwYXJ0aWN1bGFyIFdLV2Vic2l0ZURhdGFTdG9yZS4K
KyAqLworV0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19U
QkEpKQorQGludGVyZmFjZSBXS0hUVFBDb29raWVTdG9yYWdlIDogTlNPYmplY3QKKworLyohIEBh
YnN0cmFjdCBGZXRjaGVzIGFsbCBzdG9yZWQgY29va2llcy4KKyBAcGFyYW0gY29tcGxldGlvbkhh
bmRsZXIgQSBibG9jayB0byBpbnZva2Ugd2l0aCB0aGUgZmV0Y2hlZCBjb29raWVzLgorICovCist
ICh2b2lkKWZldGNoQ29va2llczoodm9pZCAoXikoTlNBcnJheTxOU0hUVFBDb29raWUgKj4gKl9O
dWxsYWJsZSkpY29tcGxldGlvbkhhbmRsZXI7CisKKy8qISBAYWJzdHJhY3QgRmV0Y2hlcyBhbGwg
b2YgdGhlIHN0b3JlZCBjb29raWVzIGZvciB0aGUgZ2l2ZW4gVVJMLgorIEBwYXJhbSBjb21wbGV0
aW9uSGFuZGxlciBBIGJsb2NrIHRvIGludm9rZSB3aXRoIHRoZSBmZXRjaGVkIGNvb2tpZXMuCisg
Ki8KKy0gKHZvaWQpZmV0Y2hDb29raWVzRm9yVVJMOihOU1VSTCAqKXVybCBjb21wbGV0aW9uSGFu
ZGxlcjoodm9pZCAoXikoTlNBcnJheTxOU0hUVFBDb29raWUgKj4gKl9OdWxsYWJsZSkpY29tcGxl
dGlvbkhhbmRsZXI7CisKKy8qISBAYWJzdHJhY3QgU2V0IGEgY29va2llLgorIEBwYXJhbSBjb29r
aWVzIFRoZSBjb29raWUgdG8gc2V0LgorIEBwYXJhbSBjb21wbGV0aW9uSGFuZGxlciBBIGJsb2Nr
IHRvIGludm9rZSBvbmNlIHRoZSBjb29raWUgaGFzIGJlZW4gc3RvcmVkLgorICovCistICh2b2lk
KXNldENvb2tpZTooTlNIVFRQQ29va2llICopY29va2llIGNvbXBsZXRpb25IYW5kbGVyOihudWxs
YWJsZSB2b2lkICheKSgpKWNvbXBsZXRpb25IYW5kbGVyOworCisvKiEgQGFic3RyYWN0IEFkZHMg
YW4gYXJyYXkgY29va2llcyB0byB0aGUgY29va2llIHN0b3JlLCBmb2xsb3dpbmcgdGhlIGNvb2tp
ZSBhY2NlcHQgcG9saWN5LgorIEBwYXJhbSBjb29raWVzIFRoZSBjb29raWVzIHRvIHNldC4KKyBA
cGFyYW0gVVJMIFRoZSBVUkwgZnJvbSB3aGljaCB0aGUgY29va2llcyB3ZXJlIHNlbnQuCisgQHBh
cmFtIG1haW5Eb2N1bWVudFVSTCBUaGUgbWFpbiBkb2N1bWVudCBVUkwgdG8gYmUgdXNlZCBhcyBh
IGJhc2UgZm9yIHRoZSAic2FtZSBkb21haW4gYXMgbWFpbiBkb2N1bWVudCIgcG9saWN5LgorIEBw
YXJhbSBjb21wbGV0aW9uSGFuZGxlciBBIGJsb2NrIHRvIGludm9rZSBvbmNlIHRoZSBjb29raWVz
IGhhdmUgYmVlbiBzdG9yZWQuCisgKi8KKy0gKHZvaWQpc2V0Q29va2llczooTlNBcnJheTxOU0hU
VFBDb29raWUgKj4gKiljb29raWVzIGZvclVSTDooTlNVUkwgKil1cmwgbWFpbkRvY3VtZW50VVJM
OihudWxsYWJsZSBOU1VSTCAqKW1haW5Eb2N1bWVudFVSTCBjb21wbGV0aW9uSGFuZGxlcjoobnVs
bGFibGUgdm9pZCAoXikoKSljb21wbGV0aW9uSGFuZGxlcjsKKworLyohIEBhYnN0cmFjdCBEZWxl
dGUgdGhlIHNwZWNpZmllZCBjb29raWUuCisgQHBhcmFtIGNvbXBsZXRpb25IYW5kbGVyIEEgYmxv
Y2sgdG8gaW52b2tlIG9uY2UgdGhlIGNvb2tpZSBoYXMgYmVlbiBkZWxldGVkLgorICovCistICh2
b2lkKWRlbGV0ZUNvb2tpZTooTlNIVFRQQ29va2llICopY29va2llIGNvbXBsZXRpb25IYW5kbGVy
OihudWxsYWJsZSB2b2lkICheKSgpKWNvbXBsZXRpb25IYW5kbGVyOworCisvKiEgQGFic3RyYWN0
IERlbGV0ZSBhbGwgY29va2llcyBmcm9tIHRoZSBjb29raWUgc3RvcmFnZSBzaW5jZSB0aGUgcHJv
dmlkZWQgZGF0ZS4KKyBAcGFyYW0gZGF0ZSBUaGUgZGF0ZSBhZnRlciB3aGljaCBzZXQgY29va2ll
cyBzaG91bGQgYmUgcmVtb3ZlZC4KKyBAcGFyYW0gY29tcGxldGlvbkhhbmRsZXIgQSBibG9jayB0
byBpbnZva2Ugb25jZSB0aGUgY29va2llcyBoYXZlIGJlZW4gZGVsZXRlZC4KKyAqLworLSAodm9p
ZClyZW1vdmVDb29raWVzU2luY2VEYXRlOihOU0RhdGUgKilkYXRlIGNvbXBsZXRpb25IYW5kbGVy
OihudWxsYWJsZSB2b2lkICheKSgpKWNvbXBsZXRpb25IYW5kbGVyOworCisvKiEgQGFic3RyYWN0
IFNldHMgdGhlIGNvb2tpZSBhY2NlcHQgcG9saWN5IHByZWZlcmVuY2Ugb2YgdGhlIHJlY2VpdmVy
LgorIEBwYXJhbSBwb2xpY3kgVGhlIGNvb2tpZSBhY2NlcHQgcG9saWN5IHRvIHNldC4KKyBAcGFy
YW0gY29tcGxldGlvbkhhbmRsZXIgQSBibG9jayB0byBpbnZva2Ugb25jZSB0aGUgcG9saWN5IGhh
cyBiZWVuIHNldC4KKyAqLworLSAodm9pZClzZXRDb29raWVBY2NlcHRQb2xpY3k6KE5TSFRUUENv
b2tpZUFjY2VwdFBvbGljeSlwb2xpY3kgY29tcGxldGlvbkhhbmRsZXI6KG51bGxhYmxlIHZvaWQg
KF4pKCkpY29tcGxldGlvbkhhbmRsZXI7CisKKy8qISBAYWJzdHJhY3QgRmV0Y2hlcyB0aGUgY29v
a2llIGFjY2VwdCBwb2xpY3kgcHJlZmVyZW5jZSBvZiB0aGUgcmVjZWl2ZXIuCisgQHBhcmFtIGNv
bXBsZXRpb25IYW5kbGVyIEEgYmxvY2sgdG8gaW52b2tlIHdpdGggdGhlIGZldGNoZWQgcG9saWN5
LgorICovCistICh2b2lkKWZldGNoQ29va2llQWNjZXB0UG9saWN5Oih2b2lkICheKShOU0hUVFBD
b29raWVBY2NlcHRQb2xpY3kpKWNvbXBsZXRpb25IYW5kbGVyOworCitAZW5kCisKK05TX0FTU1VN
RV9OT05OVUxMX0VORAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tIVFRQQ29va2llU3RvcmFnZS5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tIVFRQQ29va2llU3RvcmFnZS5tbQpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41M2M3
MzRhNmYyNmE3ZjAzYzg0MmZhNzQ0Yzg1MGYyNjA1MzIzZWVmCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0hUVFBDb29raWVTdG9yYWdlLm1t
CkBAIC0wLDAgKzEsMTYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1w
b3J0ICJXS0hUVFBDb29raWVTdG9yYWdlSW50ZXJuYWwuaCIKKworI2lmIFdLX0FQSV9FTkFCTEVE
CisKKyNpbmNsdWRlICJIVFRQQ29va2llQWNjZXB0UG9saWN5LmgiCisjaW5jbHVkZSA8V2ViQ29y
ZS9DRk5ldHdvcmtTUEkuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0Nvb2tpZS5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvVVJMLmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorCitzdGF0aWMgTlNB
cnJheTxOU0hUVFBDb29raWUgKj4gKmNvcmVDb29raWVzVG9OU0Nvb2tpZXMoY29uc3QgVmVjdG9y
PFdlYkNvcmU6OkNvb2tpZT4mIGNvcmVDb29raWVzKQoreworICAgIE5TTXV0YWJsZUFycmF5PE5T
SFRUUENvb2tpZSAqPiAqbnNDb29raWVzID0gW05TTXV0YWJsZUFycmF5IGFycmF5V2l0aENhcGFj
aXR5OmNvcmVDb29raWVzLnNpemUoKV07CisKKyAgICBmb3IgKGF1dG8mIGNvb2tpZSA6IGNvcmVD
b29raWVzKQorICAgICAgICBbbnNDb29raWVzIGFkZE9iamVjdDooTlNIVFRQQ29va2llICopY29v
a2llXTsKKworICAgIHJldHVybiBuc0Nvb2tpZXM7Cit9CisKK0BpbXBsZW1lbnRhdGlvbiBXS0hU
VFBDb29raWVTdG9yYWdlCisKKy0gKHZvaWQpZGVhbGxvYworeworICAgIF9jb29raWVTdG9yYWdl
LT5BUEk6OkhUVFBDb29raWVTdG9yYWdlOjp+SFRUUENvb2tpZVN0b3JhZ2UoKTsKKworICAgIFtz
dXBlciBkZWFsbG9jXTsKK30KKworLSAodm9pZClmZXRjaENvb2tpZXM6KHZvaWQgKF4pKE5TQXJy
YXk8TlNIVFRQQ29va2llICo+ICopKWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAgX2Nvb2tpZVN0
b3JhZ2UtPmNvb2tpZXMoW2hhbmRsZXIgPSBhZG9wdE5TKFtjb21wbGV0aW9uSGFuZGxlciBjb3B5
XSldKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiBjb29raWVzKSB7CisgICAgICAgIGF1
dG8gcmF3SGFuZGxlciA9ICh2b2lkICheKShOU0FycmF5PE5TSFRUUENvb2tpZSAqPiAqKSloYW5k
bGVyLmdldCgpOworICAgICAgICByYXdIYW5kbGVyKGNvcmVDb29raWVzVG9OU0Nvb2tpZXMoY29v
a2llcykpOworICAgIH0pOworfQorCistICh2b2lkKWZldGNoQ29va2llc0ZvclVSTDooTlNVUkwg
Kil1cmwgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TQXJyYXk8TlNIVFRQQ29va2llICo+
ICopKWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAgX2Nvb2tpZVN0b3JhZ2UtPmNvb2tpZXModXJs
LCBbaGFuZGxlciA9IGFkb3B0TlMoW2NvbXBsZXRpb25IYW5kbGVyIGNvcHldKV0oY29uc3QgVmVj
dG9yPFdlYkNvcmU6OkNvb2tpZT4mIGNvb2tpZXMpIHsKKyAgICAgICAgYXV0byByYXdIYW5kbGVy
ID0gKHZvaWQgKF4pKE5TQXJyYXk8TlNIVFRQQ29va2llICo+ICopKWhhbmRsZXIuZ2V0KCk7Cisg
ICAgICAgIHJhd0hhbmRsZXIoY29yZUNvb2tpZXNUb05TQ29va2llcyhjb29raWVzKSk7CisgICAg
fSk7Cit9CisKKy0gKHZvaWQpc2V0Q29va2llOihOU0hUVFBDb29raWUgKiljb29raWUgY29tcGxl
dGlvbkhhbmRsZXI6KHZvaWQgKF4pKCkpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICBfY29va2ll
U3RvcmFnZS0+c2V0Q29va2llKGNvb2tpZSwgW2hhbmRsZXIgPSBhZG9wdE5TKFtjb21wbGV0aW9u
SGFuZGxlciBjb3B5XSldKCkgeworICAgICAgICBhdXRvIHJhd0hhbmRsZXIgPSAodm9pZCAoXiko
KSloYW5kbGVyLmdldCgpOworICAgICAgICBpZiAocmF3SGFuZGxlcikKKyAgICAgICAgICAgIHJh
d0hhbmRsZXIoKTsKKyAgICB9KTsKKworfQorCistICh2b2lkKWRlbGV0ZUNvb2tpZTooTlNIVFRQ
Q29va2llICopY29va2llIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKSgpKWNvbXBsZXRpb25I
YW5kbGVyCit7CisgICAgX2Nvb2tpZVN0b3JhZ2UtPmRlbGV0ZUNvb2tpZShjb29raWUsIFtoYW5k
bGVyID0gYWRvcHROUyhbY29tcGxldGlvbkhhbmRsZXIgY29weV0pXSgpIHsKKyAgICAgICAgYXV0
byByYXdIYW5kbGVyID0gKHZvaWQgKF4pKCkpaGFuZGxlci5nZXQoKTsKKyAgICAgICAgaWYgKHJh
d0hhbmRsZXIpCisgICAgICAgICAgICByYXdIYW5kbGVyKCk7CisgICAgfSk7Cit9CisKKy0gKHZv
aWQpc2V0Q29va2llczooTlNBcnJheTxOU0hUVFBDb29raWUgKj4gKiljb29raWVzIGZvclVSTDoo
TlNVUkwgKilVUkwgbWFpbkRvY3VtZW50VVJMOihOU1VSTCAqKW1haW5Eb2N1bWVudFVSTCBjb21w
bGV0aW9uSGFuZGxlcjoodm9pZCAoXikoKSljb21wbGV0aW9uSGFuZGxlcgoreworICAgIFZlY3Rv
cjxXZWJDb3JlOjpDb29raWU+IGNvcmVDb29raWVzOworICAgIGNvcmVDb29raWVzLnJlc2VydmVJ
bml0aWFsQ2FwYWNpdHkoY29va2llcy5jb3VudCk7CisgICAgZm9yIChOU0hUVFBDb29raWUgKmNv
b2tpZSA6IGNvb2tpZXMpCisgICAgICAgIGNvcmVDb29raWVzLnVuY2hlY2tlZEFwcGVuZChjb29r
aWUpOworCisgICAgX2Nvb2tpZVN0b3JhZ2UtPnNldENvb2tpZXMoY29yZUNvb2tpZXMsIFVSTCwg
bWFpbkRvY3VtZW50VVJMLCBbaGFuZGxlciA9IGFkb3B0TlMoW2NvbXBsZXRpb25IYW5kbGVyIGNv
cHldKV0oKSB7CisgICAgICAgIGF1dG8gcmF3SGFuZGxlciA9ICh2b2lkICheKSgpKWhhbmRsZXIu
Z2V0KCk7CisgICAgICAgIGlmIChyYXdIYW5kbGVyKQorICAgICAgICAgICAgcmF3SGFuZGxlcigp
OworICAgIH0pOworfQorCistICh2b2lkKXJlbW92ZUNvb2tpZXNTaW5jZURhdGU6KE5TRGF0ZSAq
KWRhdGUgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKCkpY29tcGxldGlvbkhhbmRsZXIKK3sK
KyAgICBhdXRvIHN5c3RlbUNsb2NrVGltZSA9IHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRp
bWVfcG9pbnQoc3RkOjpjaHJvbm86OmR1cmF0aW9uX2Nhc3Q8c3RkOjpjaHJvbm86OnN5c3RlbV9j
bG9jazo6ZHVyYXRpb24+KHN0ZDo6Y2hyb25vOjpkdXJhdGlvbjxkb3VibGU+KGRhdGUudGltZUlu
dGVydmFsU2luY2UxOTcwKSkpOworCisgICAgX2Nvb2tpZVN0b3JhZ2UtPnJlbW92ZUNvb2tpZXNT
aW5jZURhdGUoc3lzdGVtQ2xvY2tUaW1lLCBbaGFuZGxlciA9IGFkb3B0TlMoW2NvbXBsZXRpb25I
YW5kbGVyIGNvcHldKV0oKSB7CisgICAgICAgIGF1dG8gcmF3SGFuZGxlciA9ICh2b2lkICheKSgp
KWhhbmRsZXIuZ2V0KCk7CisgICAgICAgIGlmIChyYXdIYW5kbGVyKQorICAgICAgICAgICAgcmF3
SGFuZGxlcigpOworICAgIH0pOworfQorCistICh2b2lkKXNldENvb2tpZUFjY2VwdFBvbGljeToo
TlNIVFRQQ29va2llQWNjZXB0UG9saWN5KXBvbGljeSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAo
XikoKSljb21wbGV0aW9uSGFuZGxlcgoreworICAgIF9jb29raWVTdG9yYWdlLT5zZXRIVFRQQ29v
a2llQWNjZXB0UG9saWN5KHBvbGljeSwgW2hhbmRsZXIgPSBhZG9wdE5TKFtjb21wbGV0aW9uSGFu
ZGxlciBjb3B5XSldKCkgeworICAgICAgICBhdXRvIHJhd0hhbmRsZXIgPSAodm9pZCAoXikoKSlo
YW5kbGVyLmdldCgpOworICAgICAgICBpZiAocmF3SGFuZGxlcikKKyAgICAgICAgICAgIHJhd0hh
bmRsZXIoKTsKKyAgICB9KTsKK30KKworc3RhdGljIE5TSFRUUENvb2tpZUFjY2VwdFBvbGljeSBr
aXRDb29raWVQb2xpY3lUb05TQ29va2llUG9saWN5KFdlYktpdDo6SFRUUENvb2tpZUFjY2VwdFBv
bGljeSBraXRQb2xpY3kpCit7CisgICAgc3dpdGNoIChraXRQb2xpY3kpIHsKKyAgICBjYXNlIFdl
YktpdDo6SFRUUENvb2tpZUFjY2VwdFBvbGljeUFsd2F5czoKKyAgICAgICAgcmV0dXJuIE5TSFRU
UENvb2tpZUFjY2VwdFBvbGljeUFsd2F5czsKKyAgICBjYXNlIFdlYktpdDo6SFRUUENvb2tpZUFj
Y2VwdFBvbGljeU5ldmVyOgorICAgICAgICByZXR1cm4gTlNIVFRQQ29va2llQWNjZXB0UG9saWN5
TmV2ZXI7CisgICAgY2FzZSBXZWJLaXQ6OkhUVFBDb29raWVBY2NlcHRQb2xpY3lPbmx5RnJvbU1h
aW5Eb2N1bWVudERvbWFpbjoKKyAgICAgICAgcmV0dXJuIE5TSFRUUENvb2tpZUFjY2VwdFBvbGlj
eU9ubHlGcm9tTWFpbkRvY3VtZW50RG9tYWluOworICAgIGNhc2UgV2ViS2l0OjpIVFRQQ29va2ll
QWNjZXB0UG9saWN5RXhjbHVzaXZlbHlGcm9tTWFpbkRvY3VtZW50RG9tYWluOgorICAgICAgICAv
LyBDYXN0IHJlcXVpcmVkIGJlY2F1c2Ugb2YgQ0ZOZXR3b3JrU1BJLgorICAgICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8TlNIVFRQQ29va2llQWNjZXB0UG9saWN5PihOU0hUVFBDb29raWVBY2NlcHRQ
b2xpY3lFeGNsdXNpdmVseUZyb21NYWluRG9jdW1lbnREb21haW4pOworICAgIGRlZmF1bHQ6Cisg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKworICAgIHJldHVybiBOU0hUVFBD
b29raWVBY2NlcHRQb2xpY3lOZXZlcjsKK30KKworLSAodm9pZClmZXRjaENvb2tpZUFjY2VwdFBv
bGljeToodm9pZCAoXikoTlNIVFRQQ29va2llQWNjZXB0UG9saWN5KSljb21wbGV0aW9uSGFuZGxl
cgoreworICAgIF9jb29raWVTdG9yYWdlLT5nZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KFtoYW5k
bGVyID0gYWRvcHROUyhbY29tcGxldGlvbkhhbmRsZXIgY29weV0pXShXZWJLaXQ6OkhUVFBDb29r
aWVBY2NlcHRQb2xpY3kgcG9saWN5KSB7CisgICAgICAgIGF1dG8gcmF3SGFuZGxlciA9ICh2b2lk
ICheKShOU0hUVFBDb29raWVBY2NlcHRQb2xpY3kpKWhhbmRsZXIuZ2V0KCk7CisgICAgICAgIHJh
d0hhbmRsZXIoa2l0Q29va2llUG9saWN5VG9OU0Nvb2tpZVBvbGljeShwb2xpY3kpKTsKKyAgICB9
KTsKK30KKworI3ByYWdtYSBtYXJrIFdLT2JqZWN0IHByb3RvY29sIGltcGxlbWVudGF0aW9uCisK
Ky0gKEFQSTo6T2JqZWN0JilfYXBpT2JqZWN0Cit7CisgICAgcmV0dXJuICpfY29va2llU3RvcmFn
ZTsKK30KKworQGVuZAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tIVFRQQ29va2llU3RvcmFnZUludGVybmFsLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLSFRUUENvb2tpZVN0b3JhZ2VJbnRlcm5hbC5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmU4YTMwYmFkMjhlYjFhMDI0NmMyNDFlZTc2NmZmYmYzNDE4MTBiYmEKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLSFRUUENv
b2tpZVN0b3JhZ2VJbnRlcm5hbC5oCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1w
b3J0ICJXS0hUVFBDb29raWVTdG9yYWdlLmgiCisKKyNpZiBXS19BUElfRU5BQkxFRAorCisjaW1w
b3J0ICJBUElIVFRQQ29va2llU3RvcmFnZS5oIgorI2ltcG9ydCAiV0tPYmplY3QuaCIKKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK2lubGluZSBXS0hUVFBDb29raWVTdG9yYWdlICp3cmFwcGVyKEFQ
STo6SFRUUENvb2tpZVN0b3JhZ2UmIGNvb2tpZVN0b3JhZ2UpCit7CisgICAgQVNTRVJUKFtjb29r
aWVTdG9yYWdlLndyYXBwZXIoKSBpc0tpbmRPZkNsYXNzOltXS0hUVFBDb29raWVTdG9yYWdlIGNs
YXNzXV0pOworICAgIHJldHVybiAoV0tIVFRQQ29va2llU3RvcmFnZSAqKWNvb2tpZVN0b3JhZ2Uu
d3JhcHBlcigpOworfQorCit9CisKK0BpbnRlcmZhY2UgV0tIVFRQQ29va2llU3RvcmFnZSAoKSA8
V0tPYmplY3Q+IHsKK0BwYWNrYWdlCisgICAgQVBJOjpPYmplY3RTdG9yYWdlPEFQSTo6SFRUUENv
b2tpZVN0b3JhZ2U+IF9jb29raWVTdG9yYWdlOworfQorQGVuZAorCisjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbSBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQppbmRl
eCAzZjQzYmZjNjVkZDc0MGI5NjBjOGEwMWFlMzY0OTc0ODE0M2RmN2Q0Li44Zjg3ZGFjZTgyNzJk
ZWIzYzIyN2ZhMDUzMjU4MDM0NTZjZmI0MjFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0KKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCkBAIC0xOTYsNyArMTk2LDcgQEAg
c3RhdGljIFdlYktpdDo6SFRUUENvb2tpZUFjY2VwdFBvbGljeSB0b0hUVFBDb29raWVBY2NlcHRQ
b2xpY3koTlNIVFRQQ29va2llQWNjZXAKIAogLSAodm9pZClfc2V0Q29va2llQWNjZXB0UG9saWN5
OihOU0hUVFBDb29raWVBY2NlcHRQb2xpY3kpcG9saWN5CiB7Ci0gICAgX3Byb2Nlc3NQb29sLT5z
dXBwbGVtZW50PFdlYktpdDo6V2ViQ29va2llTWFuYWdlclByb3h5PigpLT5zZXRIVFRQQ29va2ll
QWNjZXB0UG9saWN5KHRvSFRUUENvb2tpZUFjY2VwdFBvbGljeShwb2xpY3kpKTsKKyAgICBfcHJv
Y2Vzc1Bvb2wtPnN1cHBsZW1lbnQ8V2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk+KCktPnNl
dEhUVFBDb29raWVBY2NlcHRQb2xpY3koV2ViQ29yZTo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lv
bklEKCksIHRvSFRUUENvb2tpZUFjY2VwdFBvbGljeShwb2xpY3kpLCBbXShXZWJLaXQ6OkNhbGxi
YWNrQmFzZTo6RXJyb3Ipe30pOwogfQogCiAtIChpZClfb2JqZWN0Rm9yQnVuZGxlUGFyYW1ldGVy
OihOU1N0cmluZyAqKXBhcmFtZXRlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQppbmRleCA3MTM4MTllNDc0MGFk
MzRkOTAxOGRjODkwMzcyMTkwNDlmZGYxYmM3Li4yMzRmODBlYmZlNTg0Y2M4NjIzNTE1ZTkzN2Zm
ZjMzMzBiOWJhMjAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQpAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYg
V0tfQVBJX0VOQUJMRUQKIAorI2ltcG9ydCAiV0tIVFRQQ29va2llU3RvcmFnZUludGVybmFsLmgi
CiAjaW1wb3J0ICJXS05TQXJyYXkuaCIKICNpbXBvcnQgIldLV2Vic2l0ZURhdGFSZWNvcmRJbnRl
cm5hbC5oIgogI2ltcG9ydCAiV2Vic2l0ZURhdGFGZXRjaE9wdGlvbi5oIgpAQCAtMzgsNyArMzks
NyBAQCBAaW1wbGVtZW50YXRpb24gV0tXZWJzaXRlRGF0YVN0b3JlCiAKICsgKFdLV2Vic2l0ZURh
dGFTdG9yZSAqKWRlZmF1bHREYXRhU3RvcmUKIHsKLSAgICByZXR1cm4gV2ViS2l0Ojp3cmFwcGVy
KCpBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmUoKS5nZXQoKSk7CisgICAg
cmV0dXJuIFdlYktpdDo6d3JhcHBlcihBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRh
U3RvcmUoKS5nZXQoKSk7CiB9CiAKICsgKFdLV2Vic2l0ZURhdGFTdG9yZSAqKW5vblBlcnNpc3Rl
bnREYXRhU3RvcmUKQEAgLTE5NCw2ICsxOTUsMTEgQEAgLSAodm9pZClfc2V0UmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0VuYWJsZWQ6KEJPT0wpZW5hYmxlZAogICAgIF93ZWJzaXRlRGF0YVN0b3JlLT53
ZWJzaXRlRGF0YVN0b3JlKCkuc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoZW5hYmxl
ZCk7CiB9CiAKKy0gKFdLSFRUUENvb2tpZVN0b3JhZ2UgKilfaHR0cENvb2tpZVN0b3JhZ2UKK3sK
KyAgICByZXR1cm4gV2ViS2l0Ojp3cmFwcGVyKF93ZWJzaXRlRGF0YVN0b3JlLT5odHRwQ29va2ll
U3RvcmFnZSgpKTsKK30KKwogQGVuZAogCiAjZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0
b3JlUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNp
dGVEYXRhU3RvcmVQcml2YXRlLmgKaW5kZXggNDlkOWJlNmFkMTE5YjNhMTEyMTUyYjZiYWZlMzhh
ZGUyNjYyZTZlYi4uZDkzNDU3ZjAyZGNlYzRkYzc3ZWFhNmFiOGEyMmNkZjBlYjA4NDI1NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRh
U3RvcmVQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmgKQEAgLTI5LDYgKzI5LDcgQEAKIAogTlNfQVNTVU1F
X05PTk5VTExfQkVHSU4KIAorQGNsYXNzIFdLSFRUUENvb2tpZVN0b3JhZ2U7CiBAY2xhc3MgX1dL
V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb247CiAKIHR5cGVkZWYgTlNfT1BUSU9OUyhOU1VJ
bnRlZ2VyLCBfV0tXZWJzaXRlRGF0YVN0b3JlRmV0Y2hPcHRpb25zKSB7CkBAIC00Myw2ICs0NCw4
IEBAIHR5cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRlZ2VyLCBfV0tXZWJzaXRlRGF0YVN0b3JlRmV0
Y2hPcHRpb25zKSB7CiAKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldFJlc291cmNl
TG9hZFN0YXRpc3RpY3NFbmFibGVkOikgQk9PTCBfcmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJs
ZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTIpLCBpb3MoMTAuMCkpOwogCitAcHJvcGVy
dHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIFdLSFRUUENvb2tpZVN0b3JhZ2UgKl9odHRwQ29va2ll
U3RvcmFnZSBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19U
QkEpKTsKKwogQGVuZAogCiBOU19BU1NVTUVfTk9OTlVMTF9FTkQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9u
LmNwcAppbmRleCA0OGNhZGM3MTI0ZjlkYmU2ODViYmRlNDhjYjNmZWUzZDE4MzkxNmQ4Li5hODMx
ODRhZjkwMmI0NzVjNDhlOGQwYWNmNzgwNjE3MWNiNGZiZWYxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Np
b24uY3BwCkBAIC03MzAsNyArNzMwLDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6YWRk
U2luZ2xlQ29va2llKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW4KIAogICAg
IC8vIEZJWE1FOiBVc2luZyBhY3RpdmVVUkwgaGVyZSB0d2ljZSBpcyBiYXNpY2FsbHkgc2F5aW5n
ICJ0aGlzIGlzIGFsd2F5cyBpbiB0aGUgY29udGV4dCBvZiB0aGUgbWFpbiBkb2N1bWVudCIKICAg
ICAvLyB3aGljaCBwcm9iYWJseSBpc24ndCBhY2N1cmF0ZS4KLSAgICBjb29raWVNYW5hZ2VyLT5z
ZXRDb29raWVzKFdlYkNvcmU6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpLCB7IGNvb2tp
ZSB9LCBhY3RpdmVVUkwsIGFjdGl2ZVVSTCk7CisgICAgY29va2llTWFuYWdlci0+c2V0Q29va2ll
cyhXZWJDb3JlOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSwgeyBjb29raWUgfSwgYWN0
aXZlVVJMLCBhY3RpdmVVUkwsIFtdKENhbGxiYWNrQmFzZTo6RXJyb3Ipe30pOwogCiAgICAgY2Fs
bGJhY2stPnNlbmRTdWNjZXNzKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJDb29raWVNYW5hZ2VyUHJveHkuY3BwCmluZGV4IDJlYWE1Y2UzYmZhNTM1OTg0ZGYzZTBl
NmM3NWRhNWIyMTkyNDY3MTkuLmUwMjNiODI1ZWU5ZjQ5MGQyMDdkZWEyOWE3ZjdmNTMxN2I4MmEz
ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2Vy
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2Vy
UHJveHkuY3BwCkBAIC0zMiw4ICszMiwxMSBAQAogI2luY2x1ZGUgIldlYkNvb2tpZU1hbmFnZXJN
ZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYkNvb2tpZU1hbmFnZXJQcm94eU1lc3NhZ2VzLmgiCiAj
aW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0Nvb2tpZS5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW5EYXRhLmg+CiAKK3VzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOworCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY29uc3QgY2hhciogV2ViQ29va2ll
TWFuYWdlclByb3h5OjpzdXBwbGVtZW50TmFtZSgpCkBAIC05NCw3ICs5Nyw3IEBAIHZvaWQgV2Vi
Q29va2llTWFuYWdlclByb3h5OjpkZXJlZldlYkNvbnRleHRTdXBwbGVtZW50KCkKICAgICBBUEk6
Ok9iamVjdDo6ZGVyZWYoKTsKIH0KIAotdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmdldEhv
c3RuYW1lc1dpdGhDb29raWVzKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIEZ1bmN0aW9u
PHZvaWQgKEFQSTo6QXJyYXkqLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0
aW9uKQordm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmdldEhvc3RuYW1lc1dpdGhDb29raWVz
KFNlc3Npb25JRCBzZXNzaW9uSUQsIEZ1bmN0aW9uPHZvaWQgKEFQSTo6QXJyYXkqLCBDYWxsYmFj
a0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQogewogICAgIGF1dG8gY2FsbGJhY2sg
PSBBcnJheUNhbGxiYWNrOjpjcmVhdGUoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSk7CiAgICAg
dWludDY0X3QgY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7CkBAIC0xMTQsMzcg
KzExNyw5NiBAQCB2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGlkR2V0SG9zdG5hbWVzV2l0
aENvb2tpZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGhvcwogICAgIGNhbGxiYWNrLT5wZXJmb3Jt
Q2FsbGJhY2tXaXRoUmV0dXJuVmFsdWUoQVBJOjpBcnJheTo6Y3JlYXRlU3RyaW5nQXJyYXkoaG9z
dG5hbWVzKS5wdHIoKSk7CiB9CiAKLXZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpkZWxldGVD
b29raWVzRm9ySG9zdG5hbWUoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3Ry
aW5nJiBob3N0bmFtZSkKK3ZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpkZWxldGVDb29raWVz
Rm9ySG9zdG5hbWUoU2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBob3N0bmFtZSkK
IHsKICAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9OZXR3b3JraW5nUHJvY2Vzc1JlbGF1bmNoaW5n
SWZOZWNlc3NhcnkoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OkRlbGV0ZUNvb2tpZXNGb3JI
b3N0bmFtZShzZXNzaW9uSUQsIGhvc3RuYW1lKSk7CiB9CiAKLXZvaWQgV2ViQ29va2llTWFuYWdl
clByb3h5OjpkZWxldGVBbGxDb29raWVzKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQpCit2
b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGVsZXRlQWxsQ29va2llcyhTZXNzaW9uSUQgc2Vz
c2lvbklEKQogewogICAgIHByb2Nlc3NQb29sKCktPnNlbmRUb05ldHdvcmtpbmdQcm9jZXNzUmVs
YXVuY2hpbmdJZk5lY2Vzc2FyeShNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6RGVsZXRlQWxs
Q29va2llcyhzZXNzaW9uSUQpKTsKIH0KIAotdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRl
bGV0ZUFsbENvb2tpZXNNb2RpZmllZFNpbmNlKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgdGltZSkKK3ZvaWQgV2ViQ29v
a2llTWFuYWdlclByb3h5OjpkZWxldGVDb29raWUoU2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3Qg
Q29va2llJiBjb29raWUsIEZ1bmN0aW9uPHZvaWQgKENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNh
bGxiYWNrRnVuY3Rpb24pCit7CisgICAgYXV0byBjYWxsYmFjayA9IFZvaWRDYWxsYmFjazo6Y3Jl
YXRlKFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbikpOworICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQg
PSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgpOworICAgIG1fdm9pZENhbGxiYWNrcy5zZXQoY2FsbGJh
Y2tJRCwgV1RGTW92ZShjYWxsYmFjaykpOworCisgICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvTmV0
d29ya2luZ1Byb2Nlc3NSZWxhdW5jaGluZ0lmTmVjZXNzYXJ5KE1lc3NhZ2VzOjpXZWJDb29raWVN
YW5hZ2VyOjpEZWxldGVDb29raWUoc2Vzc2lvbklELCBjb29raWUsIGNhbGxiYWNrSUQpKTsKK30K
Kwordm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRlbGV0ZUFsbENvb2tpZXNNb2RpZmllZFNp
bmNlKFNlc3Npb25JRCBzZXNzaW9uSUQsIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVf
cG9pbnQgdGltZSwgRnVuY3Rpb248dm9pZCAoQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJh
Y2tGdW5jdGlvbikKK3sKKyAgICBhdXRvIGNhbGxiYWNrID0gVm9pZENhbGxiYWNrOjpjcmVhdGUo
V1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSk7CisgICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IGNh
bGxiYWNrLT5jYWxsYmFja0lEKCk7CisgICAgbV92b2lkQ2FsbGJhY2tzLnNldChjYWxsYmFja0lE
LCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisKKyAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9OZXR3b3Jr
aW5nUHJvY2Vzc1JlbGF1bmNoaW5nSWZOZWNlc3NhcnkoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFn
ZXI6OkRlbGV0ZUFsbENvb2tpZXNNb2RpZmllZFNpbmNlKHNlc3Npb25JRCwgdGltZSwgY2FsbGJh
Y2tJRCkpOworfQorCit2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6c2V0Q29va2llKFNlc3Np
b25JRCBzZXNzaW9uSUQsIGNvbnN0IENvb2tpZSYgY29va2llLCBGdW5jdGlvbjx2b2lkIChDYWxs
YmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQogewotICAgIHByb2Nlc3NQb29s
KCktPnNlbmRUb05ldHdvcmtpbmdQcm9jZXNzUmVsYXVuY2hpbmdJZk5lY2Vzc2FyeShNZXNzYWdl
czo6V2ViQ29va2llTWFuYWdlcjo6RGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2Uoc2Vzc2lv
bklELCB0aW1lKSk7CisgICAgYXV0byBjYWxsYmFjayA9IFZvaWRDYWxsYmFjazo6Y3JlYXRlKFdU
Rk1vdmUoY2FsbGJhY2tGdW5jdGlvbikpOworICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBjYWxs
YmFjay0+Y2FsbGJhY2tJRCgpOworICAgIG1fdm9pZENhbGxiYWNrcy5zZXQoY2FsbGJhY2tJRCwg
V1RGTW92ZShjYWxsYmFjaykpOworCisgICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvTmV0d29ya2lu
Z1Byb2Nlc3NSZWxhdW5jaGluZ0lmTmVjZXNzYXJ5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2Vy
OjpTZXRDb29raWUoc2Vzc2lvbklELCBjb29raWUsIGNhbGxiYWNrSUQpKTsKIH0KIAotdm9pZCBX
ZWJDb29raWVNYW5hZ2VyUHJveHk6OnNldENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mIGNvb2tpZXMsIGNvbnN0IFdlYkNv
cmU6OlVSTCYgdXJsLCBjb25zdCBXZWJDb3JlOjpVUkwmIG1haW5Eb2N1bWVudFVSTCkKK3ZvaWQg
V2ViQ29va2llTWFuYWdlclByb3h5OjpzZXRDb29raWVzKFNlc3Npb25JRCBzZXNzaW9uSUQsIGNv
bnN0IFZlY3RvcjxDb29raWU+JiBjb29raWVzLCBjb25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBt
YWluRG9jdW1lbnRVUkwsIEZ1bmN0aW9uPHZvaWQgKENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNh
bGxiYWNrRnVuY3Rpb24pCiB7Ci0gICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvTmV0d29ya2luZ1By
b2Nlc3NSZWxhdW5jaGluZ0lmTmVjZXNzYXJ5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpT
ZXRDb29raWVzKHNlc3Npb25JRCwgY29va2llcywgdXJsLCBtYWluRG9jdW1lbnRVUkwpKTsKKyAg
ICBhdXRvIGNhbGxiYWNrID0gVm9pZENhbGxiYWNrOjpjcmVhdGUoV1RGTW92ZShjYWxsYmFja0Z1
bmN0aW9uKSk7CisgICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lE
KCk7CisgICAgbV92b2lkQ2FsbGJhY2tzLnNldChjYWxsYmFja0lELCBXVEZNb3ZlKGNhbGxiYWNr
KSk7CisKKyAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9OZXR3b3JraW5nUHJvY2Vzc1JlbGF1bmNo
aW5nSWZOZWNlc3NhcnkoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OlNldENvb2tpZXMoc2Vz
c2lvbklELCBjb29raWVzLCB1cmwsIG1haW5Eb2N1bWVudFVSTCwgY2FsbGJhY2tJRCkpOwogfQog
Ci12b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6c3RhcnRPYnNlcnZpbmdDb29raWVDaGFuZ2Vz
KFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQpCit2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94
eTo6Z2V0QWxsQ29va2llcyhTZXNzaW9uSUQgc2Vzc2lvbklELCBGdW5jdGlvbjx2b2lkIChjb25z
dCBWZWN0b3I8Q29va2llPiYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rp
b24pCit7CisgICAgYXV0byBjYWxsYmFjayA9IEdldENvb2tpZXNDYWxsYmFjazo6Y3JlYXRlKFdU
Rk1vdmUoY2FsbGJhY2tGdW5jdGlvbikpOworICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBjYWxs
YmFjay0+Y2FsbGJhY2tJRCgpOworICAgIG1fZ2V0Q29va2llc0NhbGxiYWNrcy5zZXQoY2FsbGJh
Y2tJRCwgV1RGTW92ZShjYWxsYmFjaykpOworCisgICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvTmV0
d29ya2luZ1Byb2Nlc3NSZWxhdW5jaGluZ0lmTmVjZXNzYXJ5KE1lc3NhZ2VzOjpXZWJDb29raWVN
YW5hZ2VyOjpHZXRBbGxDb29raWVzKHNlc3Npb25JRCwgY2FsbGJhY2tJRCkpOworfQorCit2b2lk
IFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6Z2V0Q29va2llcyhTZXNzaW9uSUQgc2Vzc2lvbklELCBj
b25zdCBVUkwmIHVybCwgRnVuY3Rpb248dm9pZCAoY29uc3QgVmVjdG9yPENvb2tpZT4mLCBDYWxs
YmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQoreworICAgIGF1dG8gY2FsbGJh
Y2sgPSBHZXRDb29raWVzQ2FsbGJhY2s6OmNyZWF0ZShXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24p
KTsKKyAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gY2FsbGJhY2stPmNhbGxiYWNrSUQoKTsKKyAg
ICBtX2dldENvb2tpZXNDYWxsYmFja3Muc2V0KGNhbGxiYWNrSUQsIFdURk1vdmUoY2FsbGJhY2sp
KTsKKworICAgIHByb2Nlc3NQb29sKCktPnNlbmRUb05ldHdvcmtpbmdQcm9jZXNzUmVsYXVuY2hp
bmdJZk5lY2Vzc2FyeShNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6R2V0Q29va2llcyhzZXNz
aW9uSUQsIHVybCwgY2FsbGJhY2tJRCkpOworfQorCit2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94
eTo6ZGlkU2V0Q29va2llcyh1aW50NjRfdCBjYWxsYmFja0lEKQoreworICAgIG1fdm9pZENhbGxi
YWNrcy50YWtlKGNhbGxiYWNrSUQpLT5wZXJmb3JtQ2FsbGJhY2soKTsKK30KKwordm9pZCBXZWJD
b29raWVNYW5hZ2VyUHJveHk6OmRpZEdldENvb2tpZXMoY29uc3QgVmVjdG9yPENvb2tpZT4mIGNv
b2tpZXMsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit7CisgICAgbV9nZXRDb29raWVzQ2FsbGJhY2tz
LnRha2UoY2FsbGJhY2tJRCktPnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZShjb29raWVz
KTsKK30KKwordm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRpZERlbGV0ZUNvb2tpZXModWlu
dDY0X3QgY2FsbGJhY2tJRCkKK3sKKyAgICBtX3ZvaWRDYWxsYmFja3MudGFrZShjYWxsYmFja0lE
KS0+cGVyZm9ybUNhbGxiYWNrKCk7Cit9CisKK3ZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5Ojpz
dGFydE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMoU2Vzc2lvbklEIHNlc3Npb25JRCkKIHsKICAgICBw
cm9jZXNzUG9vbCgpLT5zZW5kVG9OZXR3b3JraW5nUHJvY2Vzc1JlbGF1bmNoaW5nSWZOZWNlc3Nh
cnkoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OlN0YXJ0T2JzZXJ2aW5nQ29va2llQ2hhbmdl
cyhzZXNzaW9uSUQpKTsKIH0KIAotdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OnN0b3BPYnNl
cnZpbmdDb29raWVDaGFuZ2VzKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQpCit2b2lkIFdl
YkNvb2tpZU1hbmFnZXJQcm94eTo6c3RvcE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMoU2Vzc2lvbklE
IHNlc3Npb25JRCkKIHsKICAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9OZXR3b3JraW5nUHJvY2Vz
c1JlbGF1bmNoaW5nSWZOZWNlc3NhcnkoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OlN0b3BP
YnNlcnZpbmdDb29raWVDaGFuZ2VzKHNlc3Npb25JRCkpOwogfQogCi12b2lkIFdlYkNvb2tpZU1h
bmFnZXJQcm94eTo6c2V0Q29va2llT2JzZXJ2ZXJDYWxsYmFjayhXZWJDb3JlOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+JiYgY2FsbGJhY2spCit2b2lkIFdlYkNv
b2tpZU1hbmFnZXJQcm94eTo6c2V0Q29va2llT2JzZXJ2ZXJDYWxsYmFjayhTZXNzaW9uSUQgc2Vz
c2lvbklELCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+JiYgY2FsbGJhY2spCiB7CiAgICAgaWYgKGNh
bGxiYWNrKQogICAgICAgICBtX2Nvb2tpZU9ic2VydmVycy5zZXQoc2Vzc2lvbklELCBXVEZNb3Zl
KGNhbGxiYWNrKSk7CkBAIC0xNTIsMTQgKzIxNCwxNCBAQCB2b2lkIFdlYkNvb2tpZU1hbmFnZXJQ
cm94eTo6c2V0Q29va2llT2JzZXJ2ZXJDYWxsYmFjayhXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lv
bgogICAgICAgICBtX2Nvb2tpZU9ic2VydmVycy5yZW1vdmUoc2Vzc2lvbklEKTsKIH0KIAotdm9p
ZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmNvb2tpZXNEaWRDaGFuZ2UoV2ViQ29yZTo6U2Vzc2lv
bklEIHNlc3Npb25JRCkKK3ZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5Ojpjb29raWVzRGlkQ2hh
bmdlKFNlc3Npb25JRCBzZXNzaW9uSUQpCiB7CiAgICAgbV9jbGllbnQuY29va2llc0RpZENoYW5n
ZSh0aGlzKTsKICAgICBpZiAoYXV0byBjYWxsYmFjayA9IG1fY29va2llT2JzZXJ2ZXJzLmdldChz
ZXNzaW9uSUQpKQogICAgICAgICBjYWxsYmFjaygpOwogfQogCi12b2lkIFdlYkNvb2tpZU1hbmFn
ZXJQcm94eTo6c2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShIVFRQQ29va2llQWNjZXB0UG9saWN5
IHBvbGljeSkKK3ZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpzZXRIVFRQQ29va2llQWNjZXB0
UG9saWN5KFNlc3Npb25JRCwgSFRUUENvb2tpZUFjY2VwdFBvbGljeSBwb2xpY3ksIEZ1bmN0aW9u
PHZvaWQgKENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7CiAjaWYg
UExBVEZPUk0oQ09DT0EpCiAgICAgaWYgKCFwcm9jZXNzUG9vbCgpLT5pc1VzaW5nVGVzdGluZ05l
dHdvcmtTZXNzaW9uKCkpCkBAIC0xNzIsMTEgKzIzNCwxNiBAQCB2b2lkIFdlYkNvb2tpZU1hbmFn
ZXJQcm94eTo6c2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShIVFRQQ29va2llQWNjZXB0UG9saWN5
IHBvbAogICAgIC8vIFRoZSBwb2xpY3kgaXMgbm90IHNlbnQgdG8gbmV3bHkgY3JlYXRlZCBwcm9j
ZXNzZXMgKG9ubHkgU291cCBkb2VzIHRoYXQgdmlhIHNldEluaXRpYWxIVFRQQ29va2llQWNjZXB0
UG9saWN5KCkpLiBUaGlzIGlzIG5vdCBhIHNlcmlvdXMgcHJvYmxlbSwgYmVjYXVzZToKICAgICAv
LyAtIFdoZW4gdGVzdGluZywgd2Ugb25seSBoYXZlIG9uZSBXZWJQcm9jZXNzIGFuZCBvbmUgTmV0
d29ya1Byb2Nlc3MsIGFuZCBXZWJLaXRUZXN0UnVubmVyIG5ldmVyIHJlc3RhcnRzIHRoZW07CiAg
ICAgLy8gLSBXaGVuIG5vdCB0ZXN0aW5nLCBDb2NvYSBoYXMgdGhlIHBvbGljeSBwZXJzaXN0ZWQs
IGFuZCB0aHVzIG5ldyBwcm9jZXNzZXMgdXNlIGl0IChldmVuIGZvciBlcGhlbWVyYWwgc2Vzc2lv
bnMpLgotICAgIHByb2Nlc3NQb29sKCktPnNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2Vi
Q29va2llTWFuYWdlcjo6U2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShwb2xpY3kpKTsKLSAgICBw
cm9jZXNzUG9vbCgpLT5zZW5kVG9OZXR3b3JraW5nUHJvY2VzcyhNZXNzYWdlczo6V2ViQ29va2ll
TWFuYWdlcjo6U2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShwb2xpY3kpKTsKKyAgICBwcm9jZXNz
UG9vbCgpLT5zZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OlNl
dEhUVFBDb29raWVBY2NlcHRQb2xpY3kocG9saWN5LCAwKSk7CisKKyAgICBhdXRvIGNhbGxiYWNr
ID0gVm9pZENhbGxiYWNrOjpjcmVhdGUoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSk7CisgICAg
dWludDY0X3QgY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7CisgICAgbV92b2lk
Q2FsbGJhY2tzLnNldChjYWxsYmFja0lELCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisKKyAgICBwcm9j
ZXNzUG9vbCgpLT5zZW5kVG9OZXR3b3JraW5nUHJvY2VzcyhNZXNzYWdlczo6V2ViQ29va2llTWFu
YWdlcjo6U2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShwb2xpY3ksIGNhbGxiYWNrSUQpKTsKIH0K
IAotdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmdldEhUVFBDb29raWVBY2NlcHRQb2xpY3ko
RnVuY3Rpb248dm9pZCAoSFRUUENvb2tpZUFjY2VwdFBvbGljeSwgQ2FsbGJhY2tCYXNlOjpFcnJv
cik+IGNhbGxiYWNrRnVuY3Rpb24pCit2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6Z2V0SFRU
UENvb2tpZUFjY2VwdFBvbGljeShTZXNzaW9uSUQsIEZ1bmN0aW9uPHZvaWQgKEhUVFBDb29raWVB
Y2NlcHRQb2xpY3ksIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7
CiAgICAgYXV0byBjYWxsYmFjayA9IEhUVFBDb29raWVBY2NlcHRQb2xpY3lDYWxsYmFjazo6Y3Jl
YXRlKFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbikpOwogCkBAIC0xODgsMTMgKzI1NSwxMiBAQCB2
b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6Z2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShGdW5j
dGlvbjx2b2lkIChIVFRQQ29va2llQQogCiB2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGlk
R2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSh1aW50MzJfdCBwb2xpY3ksIHVpbnQ2NF90IGNhbGxi
YWNrSUQpCiB7Ci0gICAgUmVmUHRyPEhUVFBDb29raWVBY2NlcHRQb2xpY3lDYWxsYmFjaz4gY2Fs
bGJhY2sgPSBtX2h0dHBDb29raWVBY2NlcHRQb2xpY3lDYWxsYmFja3MudGFrZShjYWxsYmFja0lE
KTsKLSAgICBpZiAoIWNhbGxiYWNrKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBMb2cgZXJyb3Igb3Ig
YXNzZXJ0LgotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIG1faHR0cENvb2tpZUFjY2VwdFBv
bGljeUNhbGxiYWNrcy50YWtlKGNhbGxiYWNrSUQpLT5wZXJmb3JtQ2FsbGJhY2tXaXRoUmV0dXJu
VmFsdWUocG9saWN5KTsKK30KIAotICAgIGNhbGxiYWNrLT5wZXJmb3JtQ2FsbGJhY2tXaXRoUmV0
dXJuVmFsdWUocG9saWN5KTsKK3ZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpkaWRTZXRIVFRQ
Q29va2llQWNjZXB0UG9saWN5KHVpbnQ2NF90IGNhbGxiYWNrSUQpCit7CisgICAgbV92b2lkQ2Fs
bGJhY2tzLnRha2UoY2FsbGJhY2tJRCktPnBlcmZvcm1DYWxsYmFjaygpOwogfQogCiB2b2lkIFdl
YkNvb2tpZU1hbmFnZXJQcm94eTo6c2V0Q29va2llU3RvcmFnZVBhcnRpdGlvbmluZ0VuYWJsZWQo
Ym9vbCBlbmFibGVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNv
b2tpZU1hbmFnZXJQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1h
bmFnZXJQcm94eS5oCmluZGV4IGNmNzk4ZDdjY2NjNzE1NDE1OWI5ZDYxMmRmZmRiYjg2YWVkMWZl
NzEuLmZkZjg5MWUxNTg5YWMwZGQ3Mjk2ZjkzYTdmNGY3ZmM3NWZlMjkxZjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmgKQEAgLTU1LDYg
KzU1LDcgQEAgY2xhc3MgV2ViUHJvY2Vzc1Byb3h5OwogCiB0eXBlZGVmIEdlbmVyaWNDYWxsYmFj
azxBUEk6OkFycmF5Kj4gQXJyYXlDYWxsYmFjazsKIHR5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPEhU
VFBDb29raWVBY2NlcHRQb2xpY3k+IEhUVFBDb29raWVBY2NlcHRQb2xpY3lDYWxsYmFjazsKK3R5
cGVkZWYgR2VuZXJpY0NhbGxiYWNrPGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jj4gR2V0
Q29va2llc0NhbGxiYWNrOwogCiBjbGFzcyBXZWJDb29raWVNYW5hZ2VyUHJveHkgOiBwdWJsaWMg
QVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpDb29raWVNYW5hZ2VyPiwgcHVibGlj
IFdlYkNvbnRleHRTdXBwbGVtZW50LCBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKIHB1
YmxpYzoKQEAgLTY2LDE0ICs2NywyMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBpbml0aWFsaXplQ2xp
ZW50KGNvbnN0IFdLQ29va2llTWFuYWdlckNsaWVudEJhc2UqKTsKICAgICAKICAgICB2b2lkIGdl
dEhvc3RuYW1lc1dpdGhDb29raWVzKFdlYkNvcmU6OlNlc3Npb25JRCwgRnVuY3Rpb248dm9pZCAo
QVBJOjpBcnJheSosIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKKyAgICB2b2lkIGRlbGV0ZUNv
b2tpZShXZWJDb3JlOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OkNvb2tpZSYsIEZ1bmN0aW9u
PHZvaWQgKENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKICAgICB2b2lkIGRlbGV0ZUNvb2tpZXNG
b3JIb3N0bmFtZShXZWJDb3JlOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpOwog
ICAgIHZvaWQgZGVsZXRlQWxsQ29va2llcyhXZWJDb3JlOjpTZXNzaW9uSUQpOwotICAgIHZvaWQg
ZGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2UoV2ViQ29yZTo6U2Vzc2lvbklELCBzdGQ6OmNo
cm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50KTsKKyAgICB2b2lkIGRlbGV0ZUFsbENvb2tp
ZXNNb2RpZmllZFNpbmNlKFdlYkNvcmU6OlNlc3Npb25JRCwgc3RkOjpjaHJvbm86OnN5c3RlbV9j
bG9jazo6dGltZV9wb2ludCwgRnVuY3Rpb248dm9pZCAoQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYp
OwogCi0gICAgdm9pZCBzZXRDb29raWVzKFdlYkNvcmU6OlNlc3Npb25JRCwgY29uc3QgVmVjdG9y
PFdlYkNvcmU6OkNvb2tpZT4mLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXZWJDb3JlOjpV
UkwmIG1haW5Eb2N1bWVudFVSTCk7CisgICAgdm9pZCBzZXRDb29raWUoV2ViQ29yZTo6U2Vzc2lv
bklELCBjb25zdCBXZWJDb3JlOjpDb29raWUmLCBGdW5jdGlvbjx2b2lkIChDYWxsYmFja0Jhc2U6
OkVycm9yKT4mJik7CisgICAgdm9pZCBzZXRDb29raWVzKFdlYkNvcmU6OlNlc3Npb25JRCwgY29u
c3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBX
ZWJDb3JlOjpVUkwmIG1haW5Eb2N1bWVudFVSTCwgRnVuY3Rpb248dm9pZCAoQ2FsbGJhY2tCYXNl
OjpFcnJvcik+JiYpOworCisgICAgdm9pZCBnZXRBbGxDb29raWVzKFdlYkNvcmU6OlNlc3Npb25J
RCwgRnVuY3Rpb248dm9pZCAoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mLCBDYWxsYmFj
a0Jhc2U6OkVycm9yKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7CisgICAgdm9pZCBnZXRDb29raWVz
KFdlYkNvcmU6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6VVJMJiwgRnVuY3Rpb248dm9pZCAo
Y29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBj
b21wbGV0aW9uSGFuZGxlcik7CisKKyAgICB2b2lkIHNldEhUVFBDb29raWVBY2NlcHRQb2xpY3ko
V2ViQ29yZTo6U2Vzc2lvbklELCBIVFRQQ29va2llQWNjZXB0UG9saWN5LCBGdW5jdGlvbjx2b2lk
IChDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CisgICAgdm9pZCBnZXRIVFRQQ29va2llQWNjZXB0
UG9saWN5KFdlYkNvcmU6OlNlc3Npb25JRCwgRnVuY3Rpb248dm9pZCAoSFRUUENvb2tpZUFjY2Vw
dFBvbGljeSwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwogCi0gICAgdm9pZCBzZXRIVFRQQ29v
a2llQWNjZXB0UG9saWN5KEhUVFBDb29raWVBY2NlcHRQb2xpY3kpOwotICAgIHZvaWQgZ2V0SFRU
UENvb2tpZUFjY2VwdFBvbGljeShGdW5jdGlvbjx2b2lkIChIVFRQQ29va2llQWNjZXB0UG9saWN5
LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4pOwogICAgIHZvaWQgc2V0Q29va2llU3RvcmFnZVBhcnRp
dGlvbmluZ0VuYWJsZWQoYm9vbCk7CiAKICAgICB2b2lkIHN0YXJ0T2JzZXJ2aW5nQ29va2llQ2hh
bmdlcyhXZWJDb3JlOjpTZXNzaW9uSUQpOwpAQCAtOTUsNiArMTAyLDExIEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBkaWRHZXRIb3N0bmFtZXNXaXRoQ29va2llcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYs
IHVpbnQ2NF90IGNhbGxiYWNrSUQpOwogICAgIHZvaWQgZGlkR2V0SFRUUENvb2tpZUFjY2VwdFBv
bGljeSh1aW50MzJfdCBwb2xpY3ksIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwogCisgICAgdm9pZCBk
aWRTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAgIHZv
aWQgZGlkU2V0Q29va2llcyh1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICB2b2lkIGRpZEdldENv
b2tpZXMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mLCB1aW50NjRfdCBjYWxsYmFja0lE
KTsKKyAgICB2b2lkIGRpZERlbGV0ZUNvb2tpZXModWludDY0X3QgY2FsbGJhY2tJRCk7CisKICAg
ICB2b2lkIGNvb2tpZXNEaWRDaGFuZ2UoV2ViQ29yZTo6U2Vzc2lvbklEKTsKIAogICAgIC8vIFdl
YkNvbnRleHRTdXBwbGVtZW50CkBAIC0xMTMsNiArMTI1LDggQEAgcHJpdmF0ZToKIAogICAgIEhh
c2hNYXA8dWludDY0X3QsIFJlZlB0cjxBcnJheUNhbGxiYWNrPj4gbV9hcnJheUNhbGxiYWNrczsK
ICAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8SFRUUENvb2tpZUFjY2VwdFBvbGljeUNhbGxi
YWNrPj4gbV9odHRwQ29va2llQWNjZXB0UG9saWN5Q2FsbGJhY2tzOworICAgIEhhc2hNYXA8dWlu
dDY0X3QsIFJlZlB0cjxWb2lkQ2FsbGJhY2s+PiBtX3ZvaWRDYWxsYmFja3M7CisgICAgSGFzaE1h
cDx1aW50NjRfdCwgUmVmUHRyPEdldENvb2tpZXNDYWxsYmFjaz4+IG1fZ2V0Q29va2llc0NhbGxi
YWNrczsKIAogICAgIEhhc2hNYXA8V2ViQ29yZTo6U2Vzc2lvbklELCBzdGQ6OmZ1bmN0aW9uPHZv
aWQgKCk+PiBtX2Nvb2tpZU9ic2VydmVyczsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KaW5kZXggMTJl
MDA5MDE4Yjc0ZGM1ZTlhNmQ2MGRiNjhkMmFiNDRlMmYxYTQzZi4uZGNjYmNmMjllMDc2Njk3NGI3
NDM1ODcyMTJiMTJjM2JmNGNiYzFlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCkBAIC0yMyw2ICsy
MywxMSBAQAogbWVzc2FnZXMgLT4gV2ViQ29va2llTWFuYWdlclByb3h5IHsKICAgICBEaWRHZXRI
b3N0bmFtZXNXaXRoQ29va2llcyhWZWN0b3I8U3RyaW5nPiBob3N0bmFtZXMsIHVpbnQ2NF90IGNh
bGxiYWNrSUQpOwogICAgIERpZEdldEhUVFBDb29raWVBY2NlcHRQb2xpY3kodWludDMyX3QgcG9s
aWN5LCB1aW50NjRfdCBjYWxsYmFja0lEKTsKLSAgICAKKworICAgIERpZFNldEhUVFBDb29raWVB
Y2NlcHRQb2xpY3kodWludDY0X3QgY2FsbGJhY2tJRCk7CisgICAgRGlkRGVsZXRlQ29va2llcyh1
aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICBEaWRTZXRDb29raWVzKHVpbnQ2NF90IGNhbGxiYWNr
SUQpOworICAgIERpZEdldENvb2tpZXMoVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4gY29va2llcywg
dWludDY0X3QgY2FsbGJhY2tJRCk7CisKICAgICBDb29raWVzRGlkQ2hhbmdlKFdlYkNvcmU6OlNl
c3Npb25JRCBzZXNzaW9uSUQpCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViRnJhbWVQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkZyYW1lUHJv
eHkuaAppbmRleCA2YmY5OTM4NjJiN2VhY2E1MWE3NWI1OTAwZmEzZjc0MTY3OWJkNWZlLi41NWI1
YjY3ZTBiMmY5NWI5NzIyNDVkZTVjOGRjY2E3OGI4ZDcxNmZiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJGcmFtZVByb3h5LmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJXZWJG
cmFtZUxpc3RlbmVyUHJveHkuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lTG9hZGVyVHlwZXMu
aD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgog
I2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9v
bC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4
IGY2OTYyMzFiYTA1OTg2MWUxOGZlZmM0YWI2ZmJmODIzMTM2OTFlNzcuLmFhYzZiYTViM2MxNTIx
ODI4N2I5ZDM1ODA2ODU3ZjVkOWQwNTliZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQb29sLmNwcApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkFQSUF1dG9t
YXRpb25DbGllbnQuaCIKICNpbmNsdWRlICJBUElDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQu
aCIKICNpbmNsdWRlICJBUElEb3dubG9hZENsaWVudC5oIgorI2luY2x1ZGUgIkFQSUhUVFBDb29r
aWVTdG9yYWdlLmgiCiAjaW5jbHVkZSAiQVBJTGVnYWN5Q29udGV4dEhpc3RvcnlDbGllbnQuaCIK
ICNpbmNsdWRlICJBUElQYWdlQ29uZmlndXJhdGlvbi5oIgogI2luY2x1ZGUgIkFQSVByb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbi5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQb29sLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bv
b2wuaAppbmRleCA4ODVhZDNjZWJiMzYxNzlkMWQ2ZGNiNjc1ZWM1YjgxMzlkYjY1ZjY5Li5lMGUx
OTI2ZDUzZTQxODI4MmMyZWIxY2JiMGQ1MWM1MWNlMGJlNTU5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaApAQCAtNzYsNiArNzYsNyBAQCBuYW1lc3BhY2UgQVBJ
IHsKIGNsYXNzIEF1dG9tYXRpb25DbGllbnQ7CiBjbGFzcyBDdXN0b21Qcm90b2NvbE1hbmFnZXJD
bGllbnQ7CiBjbGFzcyBEb3dubG9hZENsaWVudDsKK2NsYXNzIEhUVFBDb29raWVTdG9yYWdlOwog
Y2xhc3MgTGVnYWN5Q29udGV4dEhpc3RvcnlDbGllbnQ7CiBjbGFzcyBQYWdlQ29uZmlndXJhdGlv
bjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9X
ZWJzaXRlRGF0YVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0
YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAppbmRleCA3YmFhZjg1NDU0MmQ2NzhhZWZlYWY0ZjI1OGFk
N2YxNGNhMjA1MWVjLi42MzMyZjdkYjg2MGJiMzNkNTAwOWM0ZTU3YzA1ZWRkMmExZDMyMTBlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURh
dGFTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dl
YnNpdGVEYXRhU3RvcmUuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiQVBJV2Vic2l0
ZURhdGFSZWNvcmQuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5j
bHVkZSAiU3RvcmFnZU1hbmFnZXIuaCIKKyNpbmNsdWRlICJXZWJDb29raWVNYW5hZ2VyUHJveHku
aCIKICNpbmNsdWRlICJXZWJQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNz
UG9vbC5oIgogI2luY2x1ZGUgIldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIgpAQCAt
MTA1LDYgKzEwNiwyNyBAQCBXZWJzaXRlRGF0YVN0b3JlOjp+V2Vic2l0ZURhdGFTdG9yZSgpCiAg
ICAgfQogfQogCitSZWY8V2ViUHJvY2Vzc1Bvb2w+IFdlYnNpdGVEYXRhU3RvcmU6OnByb2Nlc3NQ
b29sRm9yQ29va2llU3RvcmFnZU9wZXJhdGlvbnMoKQoreworICAgIC8vIE91ciBjb25jZXB0cyBv
ZiBXZWJQcm9jZXNzLCBXZWJQcm9jZXNzUG9vbCwgV2Vic2l0ZURhdGFTdG9yZSwgYW5kIFNlc3Np
b25JRHMgaGF2ZSBhbGwgc3RhcnRlZCB0byBvdmVybGFwCisgICAgLy8gd2l0aG91dCBjbGVhciBk
aXZpc2lvbnMgb2YgcmVzcG9uc2liaWxpdGllcy4KKyAgICAvLyBJbiBwcmFjdGljZSwgbXVsdGlw
bGUgV2ViUHJvY2Vzc1Bvb2xzIGNhbiBjb250YWluICJ0aGUgc2FtZSBzZXNzaW9uIiwgZXNwZWNp
YWxseSBzaW5jZSB0aGVyZSBpcyBjdXJyZW50bHkKKyAgICAvLyBvbmx5IGEgc2luZ2xlIGRlZmF1
bHQgZ2xvYmFsIFNlc3Npb25JRC4KKyAgICAvLworICAgIC8vIFRoaXMgbWVhbnMgdGhhdCBtdWx0
aXBsZSBOZXR3b3JrUHJvY2Vzc2VzIGNhbiBiZSB1c2luZyB0aGUgc2FtZSBzZXNzaW9uLCB3aGlj
aCBtZWFucyB0aGF0IG11bHRpcGxlCisgICAgLy8gTmV0d29ya1Byb2Nlc3NlcyBjYW4gYmUgcmVm
ZXJyaW5nIHRvIHRoZSBzYW1lIHBsYXRmb3JtIGNvb2tpZSBzdG9yYWdlLgorICAgIC8vCisgICAg
Ly8gV2hpbGUgdGhpcyBtYXkgY2F1c2UgY29tcGxpY2F0aW9ucyB3aXRoIGZ1dHVyZSBBUElzIGl0
IGlzIGFjdHVhbGx5IGZpbmUgZm9yIGltcGxlbWVudGluZyB0aGUgV0tIVFRQQ29va2llU3RvcmFn
ZSBBUEkKKyAgICAvLyBiZWNhdXNlIHdlIG9ubHkgbmVlZCBvbmUgTmV0d29ya1Byb2Nlc3MgdG8g
c3VjY2Vzc2Z1bGx5IG1ha2UgYSByZXF1ZXN0ZWQgcGxhdGZvcm0gY29va2llIHN0b3JhZ2UgY2hh
bmdlLgorICAgIC8vCisgICAgLy8gRklYTUU6IFdlIG5lZWQgdG8gc3RhcnQgdG8gdW5yYXZlbCB0
aGlzIG1lc3MgZ29pbmcgZm9yd2FyZC4KKworICAgIGF1dG8gcG9vbHMgPSBwcm9jZXNzUG9vbHMo
MSk7CisgICAgQVNTRVJUKCFwb29scy5pc0VtcHR5KCkpOworCisgICAgcmV0dXJuICoqcG9vbHMu
YmVnaW4oKTsKK30KKwogdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpyZXNvbHZlRGlyZWN0b3JpZXNJ
Zk5lY2Vzc2FyeSgpCiB7CiAgICAgaWYgKG1faGFzUmVzb2x2ZWREaXJlY3RvcmllcykKQEAgLTEx
MDgsNyArMTEzMCw3IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6d2ViUHJvY2Vzc0RpZENsb3Nl
Q29ubmVjdGlvbihXZWJQcm9jZXNzUHJveHkmIHdlYlByb2Nlc3NQCiAgICAgICAgIG1fc3RvcmFn
ZU1hbmFnZXItPnByb2Nlc3NEaWRDbG9zZUNvbm5lY3Rpb24od2ViUHJvY2Vzc1Byb3h5LCBjb25u
ZWN0aW9uKTsKIH0KIAotSGFzaFNldDxSZWZQdHI8V2ViUHJvY2Vzc1Bvb2w+PiBXZWJzaXRlRGF0
YVN0b3JlOjpwcm9jZXNzUG9vbHMoKSBjb25zdAorSGFzaFNldDxSZWZQdHI8V2ViUHJvY2Vzc1Bv
b2w+PiBXZWJzaXRlRGF0YVN0b3JlOjpwcm9jZXNzUG9vbHMoc2l6ZV90IGNvdW50KSBjb25zdAog
ewogICAgIEhhc2hTZXQ8UmVmUHRyPFdlYlByb2Nlc3NQb29sPj4gcHJvY2Vzc1Bvb2xzOwogICAg
IGZvciAoYXV0byYgcHJvY2VzcyA6IHByb2Nlc3NlcygpKQpAQCAtMTEyMiwxMSArMTE0NCwyMCBA
QCBIYXNoU2V0PFJlZlB0cjxXZWJQcm9jZXNzUG9vbD4+IFdlYnNpdGVEYXRhU3RvcmU6OnByb2Nl
c3NQb29scygpIGNvbnN0CiAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NQb29scy5hZGQocHJv
Y2Vzc1Bvb2wpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICB9IGVsc2UgaWYgKCZBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRE
YXRhU3RvcmUoKS0+d2Vic2l0ZURhdGFTdG9yZSgpID09IHRoaXMpIHsKKyAgICAgICAgICAgICAg
ICAvLyBJZiBhIHByb2Nlc3MgcG9vbCBkb2Vzbid0IGhhdmUgYW4gZXhwbGljaXQgZGF0YSBzdG9y
ZSBhbmQgdGhpcyBpcyB0aGUgZGVmYXVsdCBXZWJzaXRlRGF0YVN0b3JlLAorICAgICAgICAgICAg
ICAgIC8vIGFkZCB0aGF0IHByb2Nlc3MgcG9vbCB0byB0aGUgc2V0LgorICAgICAgICAgICAgICAg
IC8vIEZJWE1FOiBUaGlzIGJlaGF2aW9yIGlzIHdlaXJkIGFuZCBuZWNlc3NpdGF0ZWQgYnkgdGhl
IGZhY3QgdGhhdCBwcm9jZXNzIHBvb2xzIGRvbid0IGFsd2F5cworICAgICAgICAgICAgICAgIC8v
IGhhdmUgYSBkYXRhIHN0b3JlOyB0aGV5IHNob3VsZC4KKyAgICAgICAgICAgICAgICBwcm9jZXNz
UG9vbHMuYWRkKHByb2Nlc3NQb29sKTsKICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYg
KHByb2Nlc3NQb29scy5zaXplKCkgPT0gY291bnQpCisgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAocHJvY2Vzc1Bvb2xzLmlzRW1wdHkoKSkgeworICAg
IGlmIChwcm9jZXNzUG9vbHMuaXNFbXB0eSgpICYmIGNvdW50KSB7CiAgICAgICAgIGF1dG8gcHJv
Y2Vzc1Bvb2wgPSBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlKEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uOjpjcmVhdGVXaXRoV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24obV9jb25maWd1
cmF0aW9uKSk7CiAgICAgICAgIHByb2Nlc3NQb29scy5hZGQocHJvY2Vzc1Bvb2wucHRyKCkpOwog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9X
ZWJzaXRlRGF0YVN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEv
V2Vic2l0ZURhdGFTdG9yZS5oCmluZGV4IDk3NWJhYzhkODliYjFlY2M2NTYyNmRkNDA3NGFmOWM3
NmFmODM0NTcuLjhkMTNiY2U0OTgyOWIzY2FkYWIwN2Y4NDVhYjI0YmJjOTM4NTg0N2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0
b3JlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVE
YXRhU3RvcmUuaApAQCAtMTAzLDYgKzEwMyw4IEBAIHB1YmxpYzoKIAogICAgIFN0b3JhZ2VNYW5h
Z2VyKiBzdG9yYWdlTWFuYWdlcigpIHsgcmV0dXJuIG1fc3RvcmFnZU1hbmFnZXIuZ2V0KCk7IH0K
IAorICAgIFJlZjxXZWJQcm9jZXNzUG9vbD4gcHJvY2Vzc1Bvb2xGb3JDb29raWVTdG9yYWdlT3Bl
cmF0aW9ucygpOworCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFdlYnNpdGVEYXRhU3RvcmUoV2Vi
Q29yZTo6U2Vzc2lvbklEKTsKICAgICBleHBsaWNpdCBXZWJzaXRlRGF0YVN0b3JlKENvbmZpZ3Vy
YXRpb24pOwpAQCAtMTE5LDcgKzEyMSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwbGF0Zm9ybURl
c3Ryb3koKTsKICAgICBzdGF0aWMgdm9pZCBwbGF0Zm9ybVJlbW92ZVJlY2VudFNlYXJjaGVzKHN0
ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQpOwogCi0gICAgSGFzaFNldDxSZWZQ
dHI8V2ViUHJvY2Vzc1Bvb2w+PiBwcm9jZXNzUG9vbHMoKSBjb25zdDsKKyAgICBIYXNoU2V0PFJl
ZlB0cjxXZWJQcm9jZXNzUG9vbD4+IHByb2Nlc3NQb29scyhzaXplX3QgY291bnQgPSBzdGQ6Om51
bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpKSBjb25zdDsKIAogI2lmIEVOQUJMRShORVRTQ0FQ
RV9QTFVHSU5fQVBJKQogICAgIFZlY3RvcjxQbHVnaW5Nb2R1bGVJbmZvPiBwbHVnaW5zKCkgY29u
c3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggN2UxODgyMmYwNGQxNzZhYTg5OTRiNDY2YTgwNTY2OWFkY2E5MDI5MC4uZTM5YmU5
YWVlMDk1OGFhMGI4MzhmMmNkYThmNGEzNjA5ODU5OTY5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTA2Myw2ICsxMDYzLDkg
QEAKIAkJNTFEMTI0MzUxRTZERjY1MjAwMkIyODIwIC8qIFdLVVJMU2NoZW1lSGFuZGxlclRhc2su
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRDEyNDJG
MUU2RERERDcwMDJCMjgyMCAvKiBXS1VSTFNjaGVtZUhhbmRsZXJUYXNrLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OwogCQk1MUQxMjQzNjFFNkRGQjM5MDAy
QjI4MjAgLyogV0tVUkxTY2hlbWVIYW5kbGVyVGFzay5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRDEyNDMwMUU2RERERDcwMDJCMjgyMCAvKiBXS1VS
TFNjaGVtZUhhbmRsZXJUYXNrLm1tICovOyB9OwogCQk1MUQxMjQzQTFFNkUwQUFCMDAyQjI4MjAg
LyogQVBJVVJMU2NoZW1lSGFuZGxlclRhc2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTFEMTI0MzgxRTZERkRCOTAwMkIyODIwIC8qIEFQSVVSTFNj
aGVtZUhhbmRsZXJUYXNrLmNwcCAqLzsgfTsKKwkJNTFEMTI0OTExRTc0QkYzQzAwMkIyODIwIC8q
IEFQSUhUVFBDb29raWVTdG9yYWdlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxRDEyNDgyMUU3MzRBQzgwMDJCMjgyMCAvKiBBUElIVFRQQ29va2ll
U3RvcmFnZS5jcHAgKi87IH07CisJCTUxRDEyNDkyMUU3NEJGNDgwMDJCMjgyMCAvKiBXS0hUVFBD
b29raWVTdG9yYWdlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTFEMTI0ODUxRTczNEFFMzAwMkIyODIwIC8qIFdLSFRUUENvb2tpZVN0b3JhZ2UubW0g
Ki87IH07CisJCTUxRDEyNDk5MUU3NjNDMDEwMDJCMjgyMCAvKiBXS0hUVFBDb29raWVTdG9yYWdl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUQxMjQ4
NDFFNzM0QUUzMDAyQjI4MjAgLyogV0tIVFRQQ29va2llU3RvcmFnZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxRDEzMDUzMTM4MkVBQzAwMDM1
MUVERCAvKiBTZWNJdGVtUmVxdWVzdERhdGEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTFEMTMwNEYxMzgyRUFDMDAwMzUxRUREIC8qIFNlY0l0ZW1S
ZXF1ZXN0RGF0YS5jcHAgKi87IH07CiAJCTUxRDEzMDU0MTM4MkVBQzAwMDM1MUVERCAvKiBTZWNJ
dGVtUmVxdWVzdERhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxRDEzMDUwMTM4MkVBQzAwMDM1MUVERCAvKiBTZWNJdGVtUmVxdWVzdERhdGEuaCAq
LzsgfTsKIAkJNTFEMTMwNTUxMzgyRUFDMDAwMzUxRUREIC8qIFNlY0l0ZW1SZXNwb25zZURhdGEu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFEMTMw
NTExMzgyRUFDMDAwMzUxRUREIC8qIFNlY0l0ZW1SZXNwb25zZURhdGEuY3BwICovOyB9OwpAQCAt
MzI4NSw2ICszMjg4LDExIEBACiAJCTUxRDEyNDM3MUU2REZEMkEwMDJCMjgyMCAvKiBXS1VSTFNj
aGVtZUhhbmRsZXJUYXNrSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV0tVUkxTY2hlbWVIYW5kbGVyVGFza0ludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTUxRDEyNDM4MUU2REZEQjkwMDJCMjgyMCAvKiBBUElVUkxTY2hlbWVIYW5kbGVy
VGFzay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBUElVUkxTY2hl
bWVIYW5kbGVyVGFzay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxRDEyNDM5
MUU2REZEQjkwMDJCMjgyMCAvKiBBUElVUkxTY2hlbWVIYW5kbGVyVGFzay5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBBUElVUkxTY2hlbWVIYW5kbGVyVGFzay5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk1MUQxMjQ4MjFFNzM0QUM4MDAyQjI4MjAgLyogQVBJSFRU
UENvb2tpZVN0b3JhZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
QVBJSFRUUENvb2tpZVN0b3JhZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1
MUQxMjQ4MzFFNzM0QUM4MDAyQjI4MjAgLyogQVBJSFRUUENvb2tpZVN0b3JhZ2UuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJSFRUUENvb2tpZVN0b3JhZ2UuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFEMTI0ODQxRTczNEFFMzAwMkIyODIwIC8qIFdLSFRU
UENvb2tpZVN0b3JhZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tIVFRQ
Q29va2llU3RvcmFnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MUQxMjQ4NTFF
NzM0QUUzMDAyQjI4MjAgLyogV0tIVFRQQ29va2llU3RvcmFnZS5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLSFRUUENvb2tpZVN0b3JhZ2UubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxRDEyNDg2MUU3MzRBRTMwMDJCMjgyMCAvKiBXS0hUVFBD
b29raWVTdG9yYWdlSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V0tIVFRQQ29va2llU3RvcmFnZUludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTUxRDEzMDRGMTM4MkVBQzAwMDM1MUVERCAvKiBTZWNJdGVtUmVxdWVzdERhdGEuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2VjSXRlbVJlcXVlc3REYXRhLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFEMTMwNTAxMzgyRUFDMDAwMzUxRURE
IC8qIFNlY0l0ZW1SZXF1ZXN0RGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTZWNJdGVtUmVxdWVzdERhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFE
MTMwNTExMzgyRUFDMDAwMzUxRUREIC8qIFNlY0l0ZW1SZXNwb25zZURhdGEuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2VjSXRlbVJlc3BvbnNlRGF0YS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01NTQ0LDYgKzU1NTIsOSBAQAogCQkJCTFBNEQ2
NjQ5MThBMzAzMEUwMEQ4MkUyMSAvKiBXS0ZyYW1lSW5mby5tbSAqLywKIAkJCQkyREY5RUVFNzFB
NzgyNDU1MDBCNkNGQkUgLyogV0tGcmFtZUluZm9JbnRlcm5hbC5oICovLAogCQkJCTFBNkZBMjFE
MUJEMDQzNUIwMEFBQTY1MCAvKiBXS0ZyYW1lSW5mb1ByaXZhdGUuaCAqLywKKwkJCQk1MUQxMjQ4
NDFFNzM0QUUzMDAyQjI4MjAgLyogV0tIVFRQQ29va2llU3RvcmFnZS5oICovLAorCQkJCTUxRDEy
NDg1MUU3MzRBRTMwMDJCMjgyMCAvKiBXS0hUVFBDb29raWVTdG9yYWdlLm1tICovLAorCQkJCTUx
RDEyNDg2MUU3MzRBRTMwMDJCMjgyMCAvKiBXS0hUVFBDb29raWVTdG9yYWdlSW50ZXJuYWwuaCAq
LywKIAkJCQkxQTQyMkY4QTE4QjI5QjU0MDBEOENEOTYgLyogV0tIaXN0b3J5RGVsZWdhdGVQcml2
YXRlLmggKi8sCiAJCQkJMUFCNDBFRTMxQkY2NzdFMzAwQkE4MUJFIC8qIFdLTWVudUl0ZW1JZGVu
dGlmaWVycy5tbSAqLywKIAkJCQkxQUI0MEVFNDFCRjY3N0UzMDBCQTgxQkUgLyogV0tNZW51SXRl
bUlkZW50aWZpZXJzUHJpdmF0ZS5oICovLApAQCAtNjczMiw2ICs2NzQzLDggQEAKIAkJCQkyREFC
QTc3NTFBODJCNDIxMDBFRjBGMUEgLyogQVBJSGlzdG9yeUNsaWVudC5oICovLAogCQkJCTkzQTg4
QjQyMUJDODgyOEMwMEFCQTVDMiAvKiBBUElIaXRUZXN0UmVzdWx0LmNwcCAqLywKIAkJCQk5M0E4
OEI0MzFCQzg4MjhDMDBBQkE1QzIgLyogQVBJSGl0VGVzdFJlc3VsdC5oICovLAorCQkJCTUxRDEy
NDgyMUU3MzRBQzgwMDJCMjgyMCAvKiBBUElIVFRQQ29va2llU3RvcmFnZS5jcHAgKi8sCisJCQkJ
NTFEMTI0ODMxRTczNEFDODAwMkIyODIwIC8qIEFQSUhUVFBDb29raWVTdG9yYWdlLmggKi8sCiAJ
CQkJNTE0M0IyNjExREREMERBMDAwMTRGQUM2IC8qIEFQSUljb25Mb2FkaW5nQ2xpZW50LmggKi8s
CiAJCQkJN0NFNEQyMDYxQTQ2Nzc1NzAwQzdGMTUyIC8qIEFQSUxlZ2FjeUNvbnRleHRIaXN0b3J5
Q2xpZW50LmggKi8sCiAJCQkJMUEyNDY0RjIxODkxRTQ1MTAwMjM0QzVCIC8qIEFQSUxvYWRlckNs
aWVudC5oICovLApAQCAtODUxNSw2ICs4NTI4LDcgQEAKIAkJCQk1MTQxMjk5NDFDNjQyOEJCMDA1
OUU3MTQgLyogV2ViSURCQ29ubmVjdGlvblRvU2VydmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1
MTA1MjM3NDFDNzNEMzhCMDA3OTkzQ0IgLyogV2ViSURCQ29ubmVjdGlvblRvU2VydmVyTWVzc2Fn
ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDQ0Y2QUJEMTJDOTFFRjkwMDhGOUMzNSAvKiBXZWJJ
bWFnZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTFEMTI0OTkxRTc2M0MwMTAwMkIyODIwIC8qIFdL
SFRUUENvb2tpZVN0b3JhZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTFDOEUyODIwMTI3NUQxNTQw
MEJDN0JEMCAvKiBXZWJJbnNwZWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMDMyRDgyMTBG
NDM3OEQwMDU4QzE1QSAvKiBXZWJJbnNwZWN0b3JDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUE1NUJBODM1MUJBM0U3MEEwMDdDRDMzRCAvKiBXZWJJbnNwZWN0b3JGcm9udGVuZEFQSURpc3Bh
dGNoZXIuaCBpbiBIZWFkZXJzICovLApAQCAtOTc2Nyw2ICs5NzgxLDcgQEAKIAkJCQkxQTZGQkEy
QjExRTY4NjI3MDBEQjEzNzEgLyogTmV0c2NhcGVCcm93c2VyRnVuY3MuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMUE2RkJEMjkxMUU2OUJDMjAwREIxMzcxIC8qIE5ldHNjYXBlUGx1Z2luLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTFBRTVCN0ZCMTFFN0FFRDIwMEJBNjc2NyAvKiBOZXRzY2FwZVBs
dWdpbk1hYy5tbSBpbiBTb3VyY2VzICovLAorCQkJCTUxRDEyNDkyMUU3NEJGNDgwMDJCMjgyMCAv
KiBXS0hUVFBDb29raWVTdG9yYWdlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE0QTlDNTUxMkI4
MTZDRjAwOEZFOTg0IC8qIE5ldHNjYXBlUGx1Z2luTW9kdWxlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTgzOUEyRjMxMUUyMDY3NDUwMDM5MDU3RSAvKiBIaWdoUGVyZm9ybWFuY2VHcmFwaGljc1Vz
YWdlU2FtcGxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTRBOUM5QTEyQjgyMUNEMDA4RkU5
ODQgLyogTmV0c2NhcGVQbHVnaW5Nb2R1bGVNYWMubW0gaW4gU291cmNlcyAqLywKQEAgLTk3ODUs
NiArOTgwMCw3IEBACiAJCQkJODMxRUVCQkUxQkQ4NUM0MzAwQkI2NEMzIC8qIE5ldHdvcmtDYWNo
ZVNwZWN1bGF0aXZlTG9hZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4MzJBRTI1MzFCRTJFOENE
MDBGQUFFMTAgLyogTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdlci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk4M0JEQ0NCOTFBQzVGREI2MDAzRjY0NDEgLyogTmV0d29ya0NhY2hlU3Rh
dGlzdGljcy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MUQxMjQ5MTFFNzRCRjNDMDAyQjI4MjAg
LyogQVBJSFRUUENvb2tpZVN0b3JhZ2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTQ0MzZFRDAx
QTBEMDQwQjAwRUFEMjA0IC8qIE5ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJODMxMDQyOEMxQkQ2QjY2RjAwQTcxNUU0IC8qIE5ldHdvcmtDYWNoZVN1YnJlc291cmNl
c0VudHJ5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUzMDI1ODNEMURDQkJEMjIwMERBODlDMiAv
KiBOZXR3b3JrQ2FwdHVyZUV2ZW50LmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIuY3BwIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIuY3BwCmluZGV4
IDllMjFmNzhjY2RiYjE4MjE3OTQyNTUzZjlmZTBmMWRkNzA0MTMzODQuLjc1NDNhMjlkOGJlYjhj
ZWEzOTI2NjIxNmE2MDA4YzU4NjIzNGVmMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5jcHAKQEAgLTcyLDIyICs3Miw2
NCBAQCB2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZShTZXNz
aW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbgogICAgICAgICBXZWJDb3JlOjpkZWxldGVDb29r
aWVzRm9ySG9zdG5hbWVzKCpzdG9yYWdlU2Vzc2lvbiwgeyBob3N0bmFtZSB9KTsKIH0KIAorCiB2
b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmRlbGV0ZUFsbENvb2tpZXMoU2Vzc2lvbklEIHNlc3Npb25J
RCkKIHsKICAgICBpZiAoYXV0byogc3RvcmFnZVNlc3Npb24gPSBOZXR3b3JrU3RvcmFnZVNlc3Np
b246OnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCiAgICAgICAgIFdlYkNvcmU6OmRlbGV0ZUFs
bENvb2tpZXMoKnN0b3JhZ2VTZXNzaW9uKTsKIH0KIAotdm9pZCBXZWJDb29raWVNYW5hZ2VyOjpk
ZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZShTZXNzaW9uSUQgc2Vzc2lvbklELCBzdGQ6OmNo
cm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IHRpbWUpCit2b2lkIFdlYkNvb2tpZU1hbmFn
ZXI6OmRlbGV0ZUNvb2tpZShTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBDb29raWUmIGNvb2tp
ZSwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3sKKyAgICBpZiAoYXV0byogc3RvcmFnZVNlc3Npb24g
PSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCisgICAg
ICAgIHN0b3JhZ2VTZXNzaW9uLT5kZWxldGVDb29raWUoY29va2llKTsKKworICAgIG1fcHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlclByb3h5OjpEaWREZWxldGVDb29raWVz
KGNhbGxiYWNrSUQpLCAwKTsKK30KKwordm9pZCBXZWJDb29raWVNYW5hZ2VyOjpkZWxldGVBbGxD
b29raWVzTW9kaWZpZWRTaW5jZShTZXNzaW9uSUQgc2Vzc2lvbklELCBzdGQ6OmNocm9ubzo6c3lz
dGVtX2Nsb2NrOjp0aW1lX3BvaW50IHRpbWUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiB7CiAgICAg
aWYgKGF1dG8qIHN0b3JhZ2VTZXNzaW9uID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdl
U2Vzc2lvbihzZXNzaW9uSUQpKQogICAgICAgICBXZWJDb3JlOjpkZWxldGVBbGxDb29raWVzTW9k
aWZpZWRTaW5jZSgqc3RvcmFnZVNlc3Npb24sIHRpbWUpOworCisgICAgaWYgKGNhbGxiYWNrSUQp
CisgICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlclByb3h5
OjpEaWREZWxldGVDb29raWVzKGNhbGxiYWNrSUQpLCAwKTsKK30KKwordm9pZCBXZWJDb29raWVN
YW5hZ2VyOjpnZXRBbGxDb29raWVzKFNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IGNhbGxi
YWNrSUQpCit7CisgICAgVmVjdG9yPENvb2tpZT4gY29va2llczsKKyAgICBpZiAoYXV0byogc3Rv
cmFnZVNlc3Npb24gPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKHNlc3Np
b25JRCkpCisgICAgICAgIGNvb2tpZXMgPSBzdG9yYWdlU2Vzc2lvbi0+Z2V0QWxsQ29va2llcygp
OworCisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyUHJveHk6
OkRpZEdldENvb2tpZXMoY29va2llcywgY2FsbGJhY2tJRCksIDApOwogfQogCi12b2lkIFdlYkNv
b2tpZU1hbmFnZXI6OnNldENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29u
c3QgVmVjdG9yPENvb2tpZT4mIGNvb2tpZXMsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBVUkwmIG1h
aW5Eb2N1bWVudFVSTCkKK3ZvaWQgV2ViQ29va2llTWFuYWdlcjo6Z2V0Q29va2llcyhTZXNzaW9u
SUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIHVybCwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3sKKyAg
ICBWZWN0b3I8Q29va2llPiBjb29raWVzOworICAgIGlmIChhdXRvKiBzdG9yYWdlU2Vzc2lvbiA9
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKKyAgICAg
ICAgY29va2llcyA9IHN0b3JhZ2VTZXNzaW9uLT5nZXRDb29raWVzKHVybCk7CisKKyAgICBtX3By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6RGlkR2V0Q29va2ll
cyhjb29raWVzLCBjYWxsYmFja0lEKSwgMCk7Cit9CisKK3ZvaWQgV2ViQ29va2llTWFuYWdlcjo6
c2V0Q29va2llKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IENvb2tpZSYgY29v
a2llLCB1aW50NjRfdCBjYWxsYmFja0lEKQoreworICAgIGlmIChhdXRvKiBzdG9yYWdlU2Vzc2lv
biA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKKyAg
ICAgICAgc3RvcmFnZVNlc3Npb24tPnNldENvb2tpZShjb29raWUpOworCisgICAgaWYgKGNhbGxi
YWNrSUQpCisgICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViQ29va2llTWFuYWdl
clByb3h5OjpEaWRTZXRDb29raWVzKGNhbGxiYWNrSUQpLCAwKTsKK30KKwordm9pZCBXZWJDb29r
aWVNYW5hZ2VyOjpzZXRDb29raWVzKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0
IFZlY3RvcjxDb29raWU+JiBjb29raWVzLCBjb25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBtYWlu
RG9jdW1lbnRVUkwsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiB7CiAgICAgaWYgKGF1dG8qIHN0b3Jh
Z2VTZXNzaW9uID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9u
SUQpKQogICAgICAgICBzdG9yYWdlU2Vzc2lvbi0+c2V0Q29va2llcyhjb29raWVzLCB1cmwsIG1h
aW5Eb2N1bWVudFVSTCk7CisKKyAgICBpZiAoY2FsbGJhY2tJRCkKKyAgICAgICAgbV9wcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OkRpZFNldENvb2tpZXMoY2Fs
bGJhY2tJRCksIDApOwogfQogCiB2b2lkIFdlYkNvb2tpZU1hbmFnZXI6Om5vdGlmeUNvb2tpZXNE
aWRDaGFuZ2UoU2Vzc2lvbklEIHNlc3Npb25JRCkKQEAgLTExMSw5ICsxNTMsMTIgQEAgdm9pZCBX
ZWJDb29raWVNYW5hZ2VyOjpzdG9wT2JzZXJ2aW5nQ29va2llQ2hhbmdlcyhTZXNzaW9uSUQgc2Vz
c2lvbklEKQogICAgICAgICBXZWJDb3JlOjpzdG9wT2JzZXJ2aW5nQ29va2llQ2hhbmdlcygqc3Rv
cmFnZVNlc3Npb24pOwogfQogCi12b2lkIFdlYkNvb2tpZU1hbmFnZXI6OnNldEhUVFBDb29raWVB
Y2NlcHRQb2xpY3koSFRUUENvb2tpZUFjY2VwdFBvbGljeSBwb2xpY3kpCit2b2lkIFdlYkNvb2tp
ZU1hbmFnZXI6OnNldEhUVFBDb29raWVBY2NlcHRQb2xpY3koSFRUUENvb2tpZUFjY2VwdFBvbGlj
eSBwb2xpY3ksIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiB7CiAgICAgcGxhdGZvcm1TZXRIVFRQQ29v
a2llQWNjZXB0UG9saWN5KHBvbGljeSk7CisKKyAgICBpZiAoY2FsbGJhY2tJRCkKKyAgICAgICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OkRpZFNldEhU
VFBDb29raWVBY2NlcHRQb2xpY3koY2FsbGJhY2tJRCksIDApOwogfQogCiB2b2lkIFdlYkNvb2tp
ZU1hbmFnZXI6OmdldEhUVFBDb29raWVBY2NlcHRQb2xpY3kodWludDY0X3QgY2FsbGJhY2tJRCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVN
YW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFu
YWdlci5oCmluZGV4IGRiMjdkMjBhYWRkODdkODg1MzZkYTUwNzFlNTlmMzI4OTExNTE4MDIuLjgx
ODc1ZGFmYjc1OGZjZDYzOTkwODUxZGJjZDM1MmVlNjQwNTU2MWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmgKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIuaApAQCAtNTYs
NyArNTYsOCBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgY29uc3QgY2hhciogc3VwcGxlbWVudE5h
bWUoKTsKIAotICAgIHZvaWQgc2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShIVFRQQ29va2llQWNj
ZXB0UG9saWN5KTsKKyAgICB2b2lkIHNldEhUVFBDb29raWVBY2NlcHRQb2xpY3koSFRUUENvb2tp
ZUFjY2VwdFBvbGljeSwgdWludDY0X3QgY2FsbGJhY2tJRCk7CisKICNpZiBVU0UoU09VUCkKICAg
ICB2b2lkIHNldENvb2tpZVBlcnNpc3RlbnRTdG9yYWdlKGNvbnN0IFN0cmluZyYgc3RvcmFnZVBh
dGgsIHVpbnQzMl90IHN0b3JhZ2VUeXBlKTsKICNlbmRpZgpAQCAtNjgsMTEgKzY5LDE2IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6
OkRlY29kZXImKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZ2V0SG9zdG5hbWVzV2l0aENvb2tpZXMo
V2ViQ29yZTo6U2Vzc2lvbklELCB1aW50NjRfdCBjYWxsYmFja0lEKTsKKworICAgIHZvaWQgZGVs
ZXRlQ29va2llKFdlYkNvcmU6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6Q29va2llJiwgdWlu
dDY0X3QgY2FsbGJhY2tJRCk7CiAgICAgdm9pZCBkZWxldGVDb29raWVzRm9ySG9zdG5hbWUoV2Vi
Q29yZTo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIGRlbGV0ZUFsbENvb2tp
ZXMoV2ViQ29yZTo6U2Vzc2lvbklEKTsKLSAgICB2b2lkIGRlbGV0ZUFsbENvb2tpZXNNb2RpZmll
ZFNpbmNlKFdlYkNvcmU6OlNlc3Npb25JRCwgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGlt
ZV9wb2ludCk7CisgICAgdm9pZCBkZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZShXZWJDb3Jl
OjpTZXNzaW9uSUQsIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQsIHVpbnQ2
NF90IGNhbGxiYWNrSUQpOwogCi0gICAgdm9pZCBzZXRDb29raWVzKFdlYkNvcmU6OlNlc3Npb25J
RCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBj
b25zdCBXZWJDb3JlOjpVUkwmIG1haW5Eb2N1bWVudFVSTCk7CisgICAgdm9pZCBzZXRDb29raWUo
V2ViQ29yZTo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpDb29raWUmLCB1aW50NjRfdCBjYWxs
YmFja0lEKTsKKyAgICB2b2lkIHNldENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklELCBjb25zdCBW
ZWN0b3I8V2ViQ29yZTo6Q29va2llPiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFdlYkNv
cmU6OlVSTCYgbWFpbkRvY3VtZW50VVJMLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICB2b2lk
IGdldEFsbENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklELCB1aW50NjRfdCBjYWxsYmFja0lEKTsK
KyAgICB2b2lkIGdldENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpV
UkwmLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKIAogICAgIHZvaWQgcGxhdGZvcm1TZXRIVFRQQ29v
a2llQWNjZXB0UG9saWN5KEhUVFBDb29raWVBY2NlcHRQb2xpY3kpOwogICAgIHZvaWQgZ2V0SFRU
UENvb2tpZUFjY2VwdFBvbGljeSh1aW50NjRfdCBjYWxsYmFja0lEKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLm1lc3NhZ2Vz
LmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIu
bWVzc2FnZXMuaW4KaW5kZXggMDBlN2I2NWI3NDkwODI2YzViYjM5YmQ3MjZlOWMyZDNiYTUzZjA1
Ni4uMGE1ODU1NWVjNmE5Y2M0OGY5ZDhhOTQ3NWNhNjI0OGMzZWQ1YjM0NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIubWVzc2Fn
ZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1h
bmFnZXIubWVzc2FnZXMuaW4KQEAgLTI3LDExICsyNywxNSBAQAogICAgIHZvaWQgR2V0SG9zdG5h
bWVzV2l0aENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgY2Fs
bGJhY2tJRCkKICAgICB2b2lkIERlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZShXZWJDb3JlOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBTdHJpbmcgaG9zdG5hbWUpCiAgICAgdm9pZCBEZWxldGVBbGxDb29r
aWVzKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQpCi0gICAgdm9pZCBEZWxldGVBbGxDb29r
aWVzTW9kaWZpZWRTaW5jZShXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBzdGQ6OmNocm9u
bzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IHRpbWUpCiAKLSAgICB2b2lkIFNldENvb2tpZXMo
V2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4gY29v
a2llcywgV2ViQ29yZTo6VVJMIHVybCwgV2ViQ29yZTo6VVJMIG1haW5Eb2N1bWVudFVSTCk7Cisg
ICAgdm9pZCBTZXRDb29raWUoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgc3RydWN0IFdl
YkNvcmU6OkNvb2tpZSBjb29raWUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCisgICAgdm9pZCBTZXRD
b29raWVzKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFZlY3RvcjxXZWJDb3JlOjpDb29r
aWU+IGNvb2tpZXMsIFdlYkNvcmU6OlVSTCB1cmwsIFdlYkNvcmU6OlVSTCBtYWluRG9jdW1lbnRV
UkwsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCisgICAgdm9pZCBHZXRBbGxDb29raWVzKFdlYkNvcmU6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCisgICAgdm9pZCBHZXRD
b29raWVzKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlVSTCB1cmwsIHVp
bnQ2NF90IGNhbGxiYWNrSUQpCisgICAgdm9pZCBEZWxldGVDb29raWUoV2ViQ29yZTo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgc3RydWN0IFdlYkNvcmU6OkNvb2tpZSBjb29raWUsIHVpbnQ2NF90IGNh
bGxiYWNrSUQpCisgICAgdm9pZCBEZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZShXZWJDb3Jl
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3Bv
aW50IHRpbWUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAKLSAgICB2b2lkIFNldEhUVFBDb29raWVB
Y2NlcHRQb2xpY3kodWludDMyX3QgcG9saWN5KQorICAgIHZvaWQgU2V0SFRUUENvb2tpZUFjY2Vw
dFBvbGljeSh1aW50MzJfdCBwb2xpY3ksIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAgICAgdm9pZCBH
ZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAgICAgCiAgICAg
dm9pZCBTdGFydE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Np
b25JRCkKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRl
eCA4MGRhODIyOGRjYTc3ZTliOTM4NmQzOWViZTVjOGY1NDJjZjNjYjlkLi40Y2FkZTZiMzAwODkx
ODZhYjFlMzk4NTMyMTAxNTJiYTJhNWJhMTUyIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cK
KysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTctMDMtMTMgIEJyYWR5
IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIFdLV2ViVmlldyBwcm92aWRl
cyBubyBhY2Nlc3MgdG8gY29va2llcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE0MDE5MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisKIDIwMTctMDMtMTEgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3Vo
YWxsYXdhQGFwcGxlLmNvbT4KIAogICAgICAgICBFbmFibGUgYXN5bmMgaW1hZ2UgZGVjb2Rpbmcg
Zm9yIGxhcmdlIGltYWdlcwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2Vi
S2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA3NjAxZGJlMDY5MmMw
MDA4ZTZiN2RiYWEzZmEwMDE2MzQ1ZDIxMmY3Li4yZGYzNDU2MmI0OWJhNzJkMzgwMWJlMWM2MDdk
MDRhYzgzNmE1MGEyIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRB
UEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTUyLDYgKzE1Miw3IEBA
CiAJCTUxQkNFRTRGMUM4NEY1M0IwMDQyQzgyRSAvKiBJbmRleGVkREJNdWx0aVByb2Nlc3MtMi5o
dG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxQkNFRTREMUM4NEY1MkMwMDQyQzgyRSAvKiBJbmRleGVkREJNdWx0aVByb2Nlc3MtMi5odG1s
ICovOyB9OwogCQk1MUNEMUM2QzFCMzhDRTQzMDAxNDJDQTUgLyogTW9kYWxBbGVydHMubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUNEMUM2QTFCMzhD
RTM2MDAxNDJDQTUgLyogTW9kYWxBbGVydHMubW0gKi87IH07CiAJCTUxQ0QxQzcyMUIzOEQ0ODQw
MDE0MkNBNSAvKiBtb2RhbC1hbGVydHMtaW4tbmV3LWFib3V0LWJsYW5rLXdpbmRvdy5odG1sIGlu
IENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQ0Qx
QzcxMUIzOEQ0ODQwMDE0MkNBNSAvKiBtb2RhbC1hbGVydHMtaW4tbmV3LWFib3V0LWJsYW5rLXdp
bmRvdy5odG1sICovOyB9OworCQk1MUQxMjQ5ODFFNzYzQjAyMDAyQjI4MjAgLyogV0tIVFRQQ29v
a2llU3RvcmFnZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxRDEyNDk3MUU3NjNBRjgwMDJCMjgyMCAvKiBXS0hUVFBDb29raWVTdG9yYWdlLm1tICov
OyB9OwogCQk1MUU1QzcwMjE5MTlDM0IyMDBEOEIzRTEgLyogc2ltcGxlMi5odG1sIGluIENvcHkg
UmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRTc4MDM2MTkx
OUFGRjgwMDE4MjlBMiAvKiBzaW1wbGUyLmh0bWwgKi87IH07CiAJCTUxRTVDNzAzMTkxOUMzQjIw
MEQ4QjNFMSAvKiBzaW1wbGUzLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTFFNzgwMzcxOTE5QUZGODAwMTgyOUEyIC8qIHNpbXBsZTMu
aHRtbCAqLzsgfTsKIAkJNTFFNkE4OTQxRDJGMUMwQTAwQzAwNEI2IC8qIExvY2FsU3RvcmFnZUNs
ZWFyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFF
NkE4OTIxRDJGMUJFQzAwQzAwNEI2IC8qIExvY2FsU3RvcmFnZUNsZWFyLm1tICovOyB9OwpAQCAt
MTA0OCw2ICsxMDQ5LDcgQEAKIAkJNTFDQjRBRDcxQjNBMDc5QzAwQzFCMUM2IC8qIE1vZGFsQWxl
cnRzU1BJLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1vZGFsQWxl
cnRzU1BJLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFDRDFDNkExQjM4Q0Uz
NjAwMTQyQ0E1IC8qIE1vZGFsQWxlcnRzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gTW9kYWxBbGVydHMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTUxQ0QxQzcxMUIzOEQ0ODQwMDE0MkNBNSAvKiBtb2RhbC1hbGVydHMtaW4tbmV3LWFib3V0LWJs
YW5rLXdpbmRvdy5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gIm1vZGFsLWFsZXJ0cy1pbi1uZXctYWJvdXQtYmxh
bmstd2luZG93Lmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MUQxMjQ5NzFF
NzYzQUY4MDAyQjI4MjAgLyogV0tIVFRQQ29va2llU3RvcmFnZS5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLSFRUUENvb2tpZVN0b3JhZ2UubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxRTVDNzA0MTkxOUVBNUYwMEQ4QjNFMSAvKiBTaG91bGRL
ZWVwQ3VycmVudEJhY2tGb3J3YXJkTGlzdEl0ZW1Jbkxpc3QuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gU2hvdWxkS2VlcEN1cnJlbnRCYWNrRm9yd2FyZExpc3RJdGVt
SW5MaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFFNkE4OTIxRDJGMUJF
QzAwQzAwNEI2IC8qIExvY2FsU3RvcmFnZUNsZWFyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gTG9jYWxTdG9yYWdlQ2xlYXIubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTUxRTZBODk1MUQyRjFDNzcwMEMwMDRCNiAvKiBMb2NhbFN0b3JhZ2VDbGVh
ci5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gTG9jYWxTdG9yYWdlQ2xlYXIuaHRt
bDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE2NDksNiArMTY1MSw3IEBACiAJCQkJ
NTEyMEM4M0MxRTY3NTA3OTAwMjVCMjUwIC8qIFdlYnNpdGVEYXRhU3RvcmVDdXN0b21QYXRocy5t
bSAqLywKIAkJCQk1QzlFNTY4NDFERjkxNDNEMDBDOUVFMzMgLyogV2Vic2l0ZVBvbGljaWVzLm1t
ICovLAogCQkJCTFGODM1NzFBMUQzRkZCMEUwMEUzOTY3QiAvKiBXS0JhY2tGb3J3YXJkTGlzdC5t
bSAqLywKKwkJCQk1MUQxMjQ5NzFFNzYzQUY4MDAyQjI4MjAgLyogV0tIVFRQQ29va2llU3RvcmFn
ZS5tbSAqLywKIAkJCQkzNzVFMEUxNTFENjY2NzQ0MDBFRkVDMkMgLyogV0tOU051bWJlci5tbSAq
LywKIAkJCQkzN0I0N0UyRTFENjRFN0NBMDA1RjRFRkYgLyogV0tPYmplY3QubW0gKi8sCiAJCQkJ
MkQwMDA2NUQxQzFGNTg5NDAwODhFNkE3IC8qIFdLUERGVmlld1Jlc2l6ZUNyYXNoLm1tICovLApA
QCAtMjcyOSw2ICsyNzMyLDcgQEAKIAkJCQk3Q0NFN0VGNDFBNDExQUU2MDA0NDdDNEMgLyogRmlu
ZE1hdGNoZXMubW0gaW4gU291cmNlcyAqLywKIAkJCQk3QzgzRTA0MDFEMEE2M0UzMDBGRUJDRjMg
LyogRmlyc3RSZXNwb25kZXJTY3JvbGxpbmdQb3NpdGlvbi5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTdDODNFMEJDMUQwQTY1MDcwMEZFQkNGMyAvKiBGaXhlZExheW91dFNpemUubW0gaW4gU291cmNl
cyAqLywKKwkJCQk1MUQxMjQ5ODFFNzYzQjAyMDAyQjI4MjAgLyogV0tIVFRQQ29va2llU3RvcmFn
ZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RUY1MUE0MTFBRTYwMDQ0N0M0QyAvKiBGb3Jj
ZVJlcGFpbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzdCNDdFMzAxRDY0RTdDQTAwNUY0RUZG
IC8qIFdLT2JqZWN0Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFQzAxQTQxMUE3RTAwNDQ3
QzRDIC8qIEZyYWdtZW50TmF2aWdhdGlvbi5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvV0tIVFRQQ29va2llU3RvcmFn
ZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL1dLSFRUUENvb2tp
ZVN0b3JhZ2UubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmNlMjg5MDczNjc0ZWEwZjJlMGQ2OTYzOTM1NjY1Yjk5
Y2E2YmRmZQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0MkNvY29hL1dLSFRUUENvb2tpZVN0b3JhZ2UubW0KQEAgLTAsMCArMSwxMDggQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVz
LmgiCisjaW1wb3J0IDxXZWJLaXQvV0tGb3VuZGF0aW9uLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tI
VFRQQ29va2llU3RvcmFnZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dLV2Vic2l0ZURhdGFTdG9yZVBy
aXZhdGUuaD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKworI2lmIFdLX0FQSV9FTkFCTEVE
CisKK3N0YXRpYyBib29sIGdvdEZsYWc7CisKK1RFU1QoV2ViS2l0MiwgV0tIVFRQQ29va2llU3Rv
cmFnZSkKK3sKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBp
bml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApXSk7CisgICAgW3dlYlZpZXcg
bG9hZEhUTUxTdHJpbmc6QCJPaCBoZWxsbyIgYmFzZVVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpA
Imh0dHA6Ly93ZWJraXQub3JnIl1dOworCisgICAgUmV0YWluUHRyPFdLSFRUUENvb2tpZVN0b3Jh
Z2U+IGNvb2tpZVN0b3JhZ2UgPSBbV0tXZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHREYXRhU3RvcmVd
Ll9odHRwQ29va2llU3RvcmFnZTsKKworICAgIE5TQXJyYXk8TlNIVFRQQ29va2llICo+ICpjb29r
aWVzID0gbmlsOworICAgIFtjb29raWVTdG9yYWdlIGZldGNoQ29va2llczpbY29va2llc1B0ciA9
ICZjb29raWVzXShOU0FycmF5PE5TSFRUUENvb2tpZSAqPiAqbnNDb29raWVzKSB7CisgICAgICAg
ICpjb29raWVzUHRyID0gW25zQ29va2llcyByZXRhaW5dOworICAgICAgICBnb3RGbGFnID0gdHJ1
ZTsKKyAgICB9XTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZ290RmxhZyk7CisK
KyAgICBBU1NFUlRfRVEoY29va2llcy5jb3VudCwgMHUpOworICAgIFtjb29raWVzIHJlbGVhc2Vd
OworCisgICAgZ290RmxhZyA9IGZhbHNlOworCisgICAgUmV0YWluUHRyPE5TSFRUUENvb2tpZT4g
Y29va2llMSA9IFtOU0hUVFBDb29raWUgY29va2llV2l0aFByb3BlcnRpZXM6QHsKKyAgICAgICAg
TlNIVFRQQ29va2llUGF0aDogQCIvIiwKKyAgICAgICAgTlNIVFRQQ29va2llTmFtZTogQCJDb29r
aWVOYW1lIiwKKyAgICAgICAgTlNIVFRQQ29va2llVmFsdWU6IEAiQ29va2llVmFsdWUiLAorICAg
ICAgICBOU0hUVFBDb29raWVEb21haW46IEAiLnd3dy53ZWJraXQub3JnIiwKKyAgICAgICAgTlNI
VFRQQ29va2llU2VjdXJlOiBAIlRSVUUiLAorICAgICAgICBOU0hUVFBDb29raWVEaXNjYXJkOiBA
IlRSVUUiLAorICAgICAgICBOU0hUVFBDb29raWVNYXhpbXVtQWdlOiBAIjEwMDAwIiwKKyAgICB9
XTsKKworICAgIFJldGFpblB0cjxOU0hUVFBDb29raWU+IGNvb2tpZTIgPSBbTlNIVFRQQ29va2ll
IGNvb2tpZVdpdGhQcm9wZXJ0aWVzOkB7CisgICAgICAgIE5TSFRUUENvb2tpZVBhdGg6IEAiL3Bh
dGgiLAorICAgICAgICBOU0hUVFBDb29raWVOYW1lOiBAIk90aGVyQ29va2llTmFtZSIsCisgICAg
ICAgIE5TSFRUUENvb2tpZVZhbHVlOiBAIk90aGVyQ29va2llVmFsdWUiLAorICAgICAgICBOU0hU
VFBDb29raWVEb21haW46IEAiLnd3dy53M2Mub3JnIiwKKyAgICAgICAgTlNIVFRQQ29va2llTWF4
aW11bUFnZTogQCIxMDAwMCIsCisgICAgfV07CisKKyAgICBbY29va2llU3RvcmFnZSBzZXRDb29r
aWU6Y29va2llMS5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpuaWxdOworICAgIFtjb29raWVTdG9y
YWdlIHNldENvb2tpZTpjb29raWUyLmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOm5pbF07CisKKyAg
ICBbY29va2llU3RvcmFnZSBmZXRjaENvb2tpZXM6W2Nvb2tpZXNQdHIgPSAmY29va2llc10oTlNB
cnJheTxOU0hUVFBDb29raWUgKj4gKm5zQ29va2llcykgeworICAgICAgICAqY29va2llc1B0ciA9
IFtuc0Nvb2tpZXMgcmV0YWluXTsKKyAgICAgICAgZ290RmxhZyA9IHRydWU7CisgICAgfV07CisK
KyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmdvdEZsYWcpOworCisgICAgQVNTRVJUX0VR
KGNvb2tpZXMuY291bnQsIDJ1KTsKKworICAgIGZvciAoTlNIVFRQQ29va2llICpjb29raWUgOiBj
b29raWVzKSB7CisgICAgICAgIGlmIChbY29va2llLm5hbWUgaXNFcXVhbDpAIkNvb2tpZU5hbWUi
XSkgeworICAgICAgICAgICAgQVNTRVJUX1RSVUUoW2Nvb2tpZTEuZ2V0KCkucGF0aCBpc0VxdWFs
VG9TdHJpbmc6Y29va2llLnBhdGhdKTsKKyAgICAgICAgICAgIEFTU0VSVF9UUlVFKFtjb29raWUx
LmdldCgpLnZhbHVlIGlzRXF1YWxUb1N0cmluZzpjb29raWUudmFsdWVdKTsKKyAgICAgICAgICAg
IEFTU0VSVF9UUlVFKFtjb29raWUxLmdldCgpLmRvbWFpbiBpc0VxdWFsVG9TdHJpbmc6Y29va2ll
LmRvbWFpbl0pOworICAgICAgICAgICAgQVNTRVJUX1RSVUUoY29va2llMS5nZXQoKS5zZWN1cmUp
OworICAgICAgICAgICAgQVNTRVJUX1RSVUUoY29va2llMS5nZXQoKS5zZXNzaW9uT25seSk7Cisg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBBU1NFUlRfVFJVRShbY29va2llMi5nZXQoKS5w
YXRoIGlzRXF1YWxUb1N0cmluZzpjb29raWUucGF0aF0pOworICAgICAgICAgICAgQVNTRVJUX1RS
VUUoW2Nvb2tpZTIuZ2V0KCkudmFsdWUgaXNFcXVhbFRvU3RyaW5nOmNvb2tpZS52YWx1ZV0pOwor
ICAgICAgICAgICAgQVNTRVJUX1RSVUUoW2Nvb2tpZTIuZ2V0KCkubmFtZSBpc0VxdWFsVG9TdHJp
bmc6Y29va2llLm5hbWVdKTsKKyAgICAgICAgICAgIEFTU0VSVF9UUlVFKFtjb29raWUyLmdldCgp
LmRvbWFpbiBpc0VxdWFsVG9TdHJpbmc6Y29va2llLmRvbWFpbl0pOworICAgICAgICAgICAgQVNT
RVJUX0ZBTFNFKGNvb2tpZTIuZ2V0KCkuc2VjdXJlKTsKKyAgICAgICAgICAgIEFTU0VSVF9GQUxT
RShjb29raWUyLmdldCgpLnNlc3Npb25Pbmx5KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIFtj
b29raWVzIHJlbGVhc2VdOworfQorCisjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>304285</attachid>
            <date>2017-03-13 12:14:54 -0700</date>
            <delta_ts>2017-03-13 12:57:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-140191-20170313121500.patch</filename>
            <type>text/plain</type>
            <size>91275</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEzNzc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmU3MGVhY2ZjNWQwZmY4
NzI0MGFjN2QwMzg5MmQ1MTJkZjA5YzIyOC4uZTFmMmE3Yzc2OWE0YmNmNjA5NTljZDczNGZmZjg4
ZDRmMDRkYjZmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDE3LTAzLTEzICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBXS1dlYlZpZXcgcHJvdmlk
ZXMgbm8gYWNjZXNzIHRvIGNvb2tpZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNDAxOTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBDb3ZlcmVkIGJ5IEFQSSB0ZXN0cy4KKworICAgICAgICAqIHBsYXRm
b3JtL0Nvb2tpZS5oOgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFn
ZVNlc3Npb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtTdG9y
YWdlU2Vzc2lvbkNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpzZXRDb29raWUpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9u
OjpkZWxldGVDb29raWUpOgorICAgICAgICAoV2ViQ29yZTo6bnNDb29raWVzVG9Db29raWVWZWN0
b3IpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpnZXRBbGxDb29r
aWVzKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0Q29va2ll
cyk6CisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvTmV0d29ya1N0b3JhZ2VTZXNz
aW9uU291cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRl
bGV0ZUNvb2tpZSk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246Omdl
dEFsbENvb2tpZXMpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpn
ZXRDb29raWVzKToKKwogMjAxNy0wMy0xMiAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5j
b20+CiAKICAgICAgICAgQWRkIGZ1bGwgTlNIVFRQQ29va2llIGZpZGVsaXR5IHRvIFdlYkNvcmU6
OkNvb2tpZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZwppbmRleCAxMTA3YzgzYjQ0OTE3OTdjOWJkZTA3OTQyZjg2MzM0MzU2
ODAyOTliLi40NTJhOWZjZjhlYzgzOTkwNzM0MjlhMTk4YTA1MWQ0YjhmOGE4ZGMyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTE5IEBACisyMDE3LTAzLTEzICBCcmFkeSBFaWRzb24gIDxiZWlkc29u
QGFwcGxlLmNvbT4KKworICAgICAgICBXS1dlYlZpZXcgcHJvdmlkZXMgbm8gYWNjZXNzIHRvIGNv
b2tpZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NDAxOTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
aGlzIGFkZHMgYSBuZXcgX1dLSFRUUENvb2tpZU1hbmFnZXIgU1BJLgorICAgICAgICBJdCBmb2xs
b3dzIHRoZSBOU0hUVFBDb29raWVTdG9yYWdlIEFQSSBidXQgYXN5bmNocm9ub3VzICh3aXRoIGNv
bXBsZXRpb24gaGFuZGxlcnMpLgorICAgICAgICBBZnRlciB0aGUgaW1wbGVtZW50YXRpb24gaXMg
bGFuZGVkIGFuZCB3ZSByZXZpZXcgaW50ZXJuYWxseSB3ZSdsbCBjb25zaWRlciBwcm9tb3Rpbmcg
dG8gQVBJLgorICAgICAgICAKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBX
ZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKKyAgICAgICAgKiBTaGFyZWQvQVBJ
L0FQSU9iamVjdC5oOgorICAgICAgICAqIFNoYXJlZC9Db2NvYS9BUElPYmplY3QubW06CisgICAg
ICAgIChBUEk6Ok9iamVjdDo6bmV3T2JqZWN0KToKKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
QVBJSFRUUENvb2tpZVN0b3JhZ2UuY3BwOiBBZGRlZC4KKyAgICAgICAgKEFQSTo6SFRUUENvb2tp
ZVN0b3JhZ2U6OkhUVFBDb29raWVTdG9yYWdlKToKKyAgICAgICAgKEFQSTo6SFRUUENvb2tpZVN0
b3JhZ2U6On5IVFRQQ29va2llU3RvcmFnZSk6CisgICAgICAgIChBUEk6OkhUVFBDb29raWVTdG9y
YWdlOjpjb29raWVzKToKKyAgICAgICAgKEFQSTo6SFRUUENvb2tpZVN0b3JhZ2U6OnNldENvb2tp
ZSk6CisgICAgICAgIChBUEk6OkhUVFBDb29raWVTdG9yYWdlOjpzZXRDb29raWVzKToKKyAgICAg
ICAgKEFQSTo6SFRUUENvb2tpZVN0b3JhZ2U6OmRlbGV0ZUNvb2tpZSk6CisgICAgICAgIChBUEk6
OkhUVFBDb29raWVTdG9yYWdlOjpyZW1vdmVDb29raWVzU2luY2VEYXRlKToKKyAgICAgICAgKEFQ
STo6SFRUUENvb2tpZVN0b3JhZ2U6OnNldEhUVFBDb29raWVBY2NlcHRQb2xpY3kpOgorICAgICAg
ICAoQVBJOjpIVFRQQ29va2llU3RvcmFnZTo6Z2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElIVFRQQ29va2llU3RvcmFnZS5oOiBBZGRlZC4KKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5jcHA6CisgICAgICAg
IChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmUpOgorICAgICAgICAoQVBJ
OjpXZWJzaXRlRGF0YVN0b3JlOjpodHRwQ29va2llU3RvcmFnZSk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmg6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0MvV0tDb29raWVNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdLQ29va2llTWFuYWdlckRlbGV0ZUFs
bENvb2tpZXNNb2RpZmllZEFmdGVyRGF0ZSk6CisgICAgICAgIChXS0Nvb2tpZU1hbmFnZXJTZXRI
VFRQQ29va2llQWNjZXB0UG9saWN5KToKKyAgICAgICAgKFdLQ29va2llTWFuYWdlckdldEhUVFBD
b29raWVBY2NlcHRQb2xpY3kpOgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0
ZURhdGFTdG9yZVJlZi5jcHA6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVHZXREZWZhdWx0
RGF0YVN0b3JlKToKKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9v
bC5tbToKKyAgICAgICAgKC1bV0tQcm9jZXNzUG9vbCBfc2V0Q29va2llQWNjZXB0UG9saWN5Ol0p
OgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW06
CisgICAgICAgICgrW1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0RGF0YVN0b3JlXSk6CisgICAg
ICAgICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBfaHR0cENvb2tpZVN0b3JhZ2VdKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaDoKKyAgICAg
ICAgCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0hUVFBDb29raWVTdG9yYWdlLmg6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0hUVFBDb29raWVTdG9yYWdlLm1tOiBB
ZGRlZC4KKyAgICAgICAgKGNvcmVDb29raWVzVG9OU0Nvb2tpZXMpOgorICAgICAgICAoLVtXS0hU
VFBDb29raWVTdG9yYWdlIGRlYWxsb2NdKToKKyAgICAgICAgKC1bV0tIVFRQQ29va2llU3RvcmFn
ZSBmZXRjaENvb2tpZXM6XSk6CisgICAgICAgICgtW1dLSFRUUENvb2tpZVN0b3JhZ2UgZmV0Y2hD
b29raWVzRm9yVVJMOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS0hUVFBDb29r
aWVTdG9yYWdlIHNldENvb2tpZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tI
VFRQQ29va2llU3RvcmFnZSBkZWxldGVDb29raWU6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAg
ICAgICgtW1dLSFRUUENvb2tpZVN0b3JhZ2Ugc2V0Q29va2llczpmb3JVUkw6bWFpbkRvY3VtZW50
VVJMOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS0hUVFBDb29raWVTdG9yYWdl
IHJlbW92ZUNvb2tpZXNTaW5jZURhdGU6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgt
W1dLSFRUUENvb2tpZVN0b3JhZ2Ugc2V0Q29va2llQWNjZXB0UG9saWN5OmNvbXBsZXRpb25IYW5k
bGVyOl0pOgorICAgICAgICAoa2l0Q29va2llUG9saWN5VG9OU0Nvb2tpZVBvbGljeSk6CisgICAg
ICAgICgtW1dLSFRUUENvb2tpZVN0b3JhZ2UgZmV0Y2hDb29raWVBY2NlcHRQb2xpY3k6XSk6Cisg
ICAgICAgICgtW1dLSFRUUENvb2tpZVN0b3JhZ2UgX2FwaU9iamVjdF0pOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tIVFRQQ29va2llU3RvcmFnZUludGVybmFsLmg6IENvcGllZCBm
cm9tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3Jl
UHJpdmF0ZS5oLgorICAgICAgICAoV2ViS2l0Ojp3cmFwcGVyKToKKworICAgICAgICAqIFVJUHJv
Y2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViQXV0b21hdGlvblNlc3Npb246OmFkZFNpbmdsZUNvb2tpZSk6CisKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
Q29va2llTWFuYWdlclByb3h5OjpnZXRIb3N0bmFtZXNXaXRoQ29va2llcyk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKToK
KyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlclByb3h5OjpkZWxldGVBbGxDb29raWVz
KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlclByb3h5OjpkZWxldGVDb29raWUp
OgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRlbGV0ZUFsbENvb2tp
ZXNNb2RpZmllZFNpbmNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlclByb3h5
OjpzZXRDb29raWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OnNl
dENvb2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OmdldEFs
bENvb2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OmdldENv
b2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRpZFNldENv
b2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRpZEdldENv
b2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRpZERlbGV0
ZUNvb2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OnN0YXJ0
T2JzZXJ2aW5nQ29va2llQ2hhbmdlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFn
ZXJQcm94eTo6c3RvcE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJDb29raWVNYW5hZ2VyUHJveHk6OnNldENvb2tpZU9ic2VydmVyQ2FsbGJhY2spOgorICAgICAg
ICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OmNvb2tpZXNEaWRDaGFuZ2UpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OnNldEhUVFBDb29raWVBY2NlcHRQ
b2xpY3kpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OmdldEhUVFBD
b29raWVBY2NlcHRQb2xpY3kpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJv
eHk6OmRpZEdldEhUVFBDb29raWVBY2NlcHRQb2xpY3kpOgorICAgICAgICAoV2ViS2l0OjpXZWJD
b29raWVNYW5hZ2VyUHJveHk6OmRpZFNldEhUVFBDb29raWVBY2NlcHRQb2xpY3kpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViQ29va2llTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluOgorCisgICAgICAgICogVUlQcm9j
ZXNzL1dlYkZyYW1lUHJveHkuaDoKKyAgICAgICAgCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKyAg
ICAgICAgCisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpwcm9jZXNzUG9vbEZvckNv
b2tpZVN0b3JhZ2VPcGVyYXRpb25zKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9y
ZTo6cHJvY2Vzc1Bvb2xzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0
ZURhdGFTdG9yZS5oOgorICAgICAgICAKKyAgICAgICAgKiBXZWJQcm9jZXNzL0Nvb2tpZXMvV2Vi
Q29va2llTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXI6OmRl
bGV0ZUNvb2tpZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXI6OmRlbGV0ZUFs
bENvb2tpZXNNb2RpZmllZFNpbmNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdl
cjo6Z2V0QWxsQ29va2llcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXI6Omdl
dENvb2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyOjpzZXRDb29raWUp
OgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyOjpzZXRDb29raWVzKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlcjo6c2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5tZXNzYWdlcy5pbjoKKwog
MjAxNy0wMy0xMiAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAg
VHJhbnNpdGlvbiBHZW5lcmljQ2FsbGJhY2sgZnJvbSBzdGQ6OmZ1bmN0aW9uIHRvIFdURjo6RnVu
Y3Rpb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db29raWUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nvb2tpZS5oCmluZGV4IGU0N2U3YmJmZjViYjNhYmM2M2Fi
M2Y5MjhmYzI3NDE1NWUxMDRmYTcuLjVkZGI5MzU0Y2U4ZDE5ZTdhNzU0Yjk3Y2UzYTAzODE1M2Yz
NjQ2OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nvb2tpZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nvb2tpZS5oCkBAIC01OCw3ICs1OCw3IEBAIHN0cnVj
dCBDb29raWUgewogCiAjaWZkZWYgX19PQkpDX18KICAgICBXRUJDT1JFX0VYUE9SVCBDb29raWUo
TlNIVFRQQ29va2llICopOwotICAgIG9wZXJhdG9yIE5TSFRUUENvb2tpZSAqKCkgY29uc3Q7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgb3BlcmF0b3IgTlNIVFRQQ29va2llICooKSBjb25zdDsKICNlbmRp
ZgogCiAgICAgU3RyaW5nIG5hbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaAppbmRleCBmMTQ4OWM2YjQyYTFkNDVh
ZjljYWE2MmNhMjZkMTcwNWI0NmIzNzQ4Li4yMTJiZTI2NGVhNWNjNzY1OGE4ZGYyZWYzZTM1OTY4
MTg1MTQ5ZWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05l
dHdvcmtTdG9yYWdlU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgKQEAgLTEwMCw3ICsxMDAsMTEgQEAgcHVibGljOgog
ICAgIE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0KCkgY29uc3Q7CiAjZW5kaWYKIAorICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgc2V0Q29va2llKGNvbnN0IENvb2tpZSYpOwogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgc2V0Q29va2llcyhjb25zdCBWZWN0b3I8Q29va2llPiYsIGNvbnN0IFVSTCYs
IGNvbnN0IFVSTCYgbWFpbkRvY3VtZW50VVJMKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRl
bGV0ZUNvb2tpZShjb25zdCBDb29raWUmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8Q29v
a2llPiBnZXRBbGxDb29raWVzKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPENvb2tpZT4g
Z2V0Q29va2llcyhjb25zdCBVUkwmKTsKIAogcHJpdmF0ZToKICAgICBzdGF0aWMgSGFzaE1hcDxT
ZXNzaW9uSUQsIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrU3RvcmFnZVNlc3Npb24+PiYgZ2xvYmFs
U2Vzc2lvbk1hcCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jb2NvYS9OZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2EubW0KaW5kZXgg
NDRhZWFiNzBlOTliNWZhMGE4NGVjZmQzNTdlMzQ1ODNkZWZjMDFlMC4uNGM5NTY3ZTljNjdhMGE0
NzY3NmE4ZmM3ZjhlZDRhZjRkZTE1NTI5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtTdG9yYWdlU2Vzc2lv
bkNvY29hLm1tCkBAIC0zMiw2ICszMiwxMyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3Zv
aWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRDb29raWUoY29uc3QgQ29va2llJiBjb29raWUp
Cit7CisgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOworICAgIFtuc0Nvb2tpZVN0b3Jh
Z2UoKSBzZXRDb29raWU6KE5TSFRUUENvb2tpZSAqKWNvb2tpZV07CisgICAgRU5EX0JMT0NLX09C
SkNfRVhDRVBUSU9OUzsKK30KKwogdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldENvb2tp
ZXMoY29uc3QgVmVjdG9yPENvb2tpZT4mIGNvb2tpZXMsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBV
UkwmIG1haW5Eb2N1bWVudFVSTCkKIHsKICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IG5z
Q29va2llcyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0
eTpjb29raWVzLnNpemUoKV0pOwpAQCAtNDMsNiArNTAsMzEgQEAgdm9pZCBOZXR3b3JrU3RvcmFn
ZVNlc3Npb246OnNldENvb2tpZXMoY29uc3QgVmVjdG9yPENvb2tpZT4mIGNvb2tpZXMsIGNvbnN0
IFVSTCYKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogfQogCit2b2lkIE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbjo6ZGVsZXRlQ29va2llKGNvbnN0IENvb2tpZSYgY29va2llKQoreworICAg
IFtuc0Nvb2tpZVN0b3JhZ2UoKSBkZWxldGVDb29raWU6KE5TSFRUUENvb2tpZSAqKWNvb2tpZV07
Cit9CisKK3N0YXRpYyBWZWN0b3I8Q29va2llPiBuc0Nvb2tpZXNUb0Nvb2tpZVZlY3RvcihOU0Fy
cmF5PE5TSFRUUENvb2tpZSAqPiAqbnNDb29raWVzKQoreworICAgIFZlY3RvcjxDb29raWU+IGNv
b2tpZXM7CisgICAgY29va2llcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG5zQ29va2llcy5jb3Vu
dCk7CisgICAgZm9yIChOU0hUVFBDb29raWUgKm5zQ29va2llIGluIG5zQ29va2llcykKKyAgICAg
ICAgY29va2llcy51bmNoZWNrZWRBcHBlbmQobnNDb29raWUpOworCisgICAgcmV0dXJuIGNvb2tp
ZXM7Cit9CisKK1ZlY3RvcjxDb29raWU+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0QWxsQ29v
a2llcygpCit7CisgICAgcmV0dXJuIG5zQ29va2llc1RvQ29va2llVmVjdG9yKG5zQ29va2llU3Rv
cmFnZSgpLmNvb2tpZXMpOworfQorCitWZWN0b3I8Q29va2llPiBOZXR3b3JrU3RvcmFnZVNlc3Np
b246OmdldENvb2tpZXMoY29uc3QgVVJMJiB1cmwpCit7CisgICAgcmV0dXJuIG5zQ29va2llc1Rv
Q29va2llVmVjdG9yKFtuc0Nvb2tpZVN0b3JhZ2UoKSBjb29raWVzRm9yVVJMOihOU1VSTCAqKXVy
bF0pOworfQorCiBOU0hUVFBDb29raWVTdG9yYWdlICpOZXR3b3JrU3RvcmFnZVNlc3Npb246Om5z
Q29va2llU3RvcmFnZSgpIGNvbnN0CiB7CiAgICAgYXV0byBjZkNvb2tpZVN0b3JhZ2UgPSBjb29r
aWVTdG9yYWdlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L3NvdXAvTmV0d29ya1N0b3JhZ2VTZXNzaW9uU291cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL3NvdXAvTmV0d29ya1N0b3JhZ2VTZXNzaW9uU291cC5jcHAKaW5kZXggMjQ5
YmQ4MmJkNzRlOGM2MmE5YzM1NzAzN2Y5ODM4NTA0ZmE1N2FjZC4uYTM3YWE3ZGQxMGVmODliYmY2
ZjAwNTYzOWNiYWFjOGM4YjhjNWIxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lvblNvdXAuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3Vw
LmNwcApAQCAtMzA0LDYgKzMwNCwyMCBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0
Q29va2llcyhjb25zdCBWZWN0b3I8Q29va2llPiYgY29va2llcywgY29uc3QgVVJMJgogICAgICAg
ICBzb3VwX2Nvb2tpZV9qYXJfYWRkX2Nvb2tpZShjb29raWVTdG9yYWdlKCksIHRvU291cENvb2tp
ZShjb29raWUpKTsKIH0KIAordm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlbGV0ZUNvb2tp
ZShjb25zdCBDb29raWUmKQoreworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgZm9yIFdLMiB0byB1
c2UuCit9CisKK1ZlY3RvcjxDb29raWU+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0QWxsQ29v
a2llcygpCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudCBmb3IgV0syIHRvIHVzZS4KK30KKwor
VmVjdG9yPENvb2tpZT4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpnZXRDb29raWVzKGNvbnN0IFVS
TCYpCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudCBmb3IgV0syIHRvIHVzZS4KK30KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxp
c3RzLnR4dCBiL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0CmluZGV4IDgxZmY4ZGE4MTEy
NDNlNTQxYTNjNjk4NGM5ZmE3OGIwOTdjOWRiZTYuLmE4ZmRjZDExYjNhNjIzNjY2MzcxN2RhMzQ5
NjFlZTE2MDQ2OGU2OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0
CisrKyBiL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0CkBAIC0zMzYsNiArMzM2LDcgQEAg
c2V0KFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9BUEkvQVBJQ29udGVudEV4dGVuc2lv
blN0b3JlLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvQVBJRXhwZXJpbWVudGFsRmVhdHVyZS5jcHAK
ICAgICBVSVByb2Nlc3MvQVBJL0FQSUZyYW1lSW5mby5jcHAKKyAgICBVSVByb2Nlc3MvQVBJL0FQ
SUhUVFBDb29raWVTdG9yYWdlLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvQVBJSGl0VGVzdFJlc3Vs
dC5jcHAKICAgICBVSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb24uY3BwCiAgICAgVUlQcm9jZXNz
L0FQSS9BUElOYXZpZ2F0aW9uRGF0YS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcAppbmRleCBkOGRjZGUz
MzA4ZDRiZjc1MzU3MmE0NzdiMTdjYTFmMDFiODJhM2MwLi4yNjA3MGYwMTE0ZTE3MjY3MjExMGRi
MDI3MWRhNDk3YTFkMmExOTM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrUHJvY2Vzc1NvdXAuY3BwCkBAIC0xMjQsNyArMTI0LDcg
QEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3Mo
Y29uc3QgTmV0d29ya1Byb2Nlc3NDcmVhdGkKICAgICAgICAgc3VwcGxlbWVudDxXZWJDb29raWVN
YW5hZ2VyPigpLT5zZXRDb29raWVQZXJzaXN0ZW50U3RvcmFnZShwYXJhbWV0ZXJzLmNvb2tpZVBl
cnNpc3RlbnRTdG9yYWdlUGF0aCwKICAgICAgICAgICAgIHBhcmFtZXRlcnMuY29va2llUGVyc2lz
dGVudFN0b3JhZ2VUeXBlKTsKICAgICB9Ci0gICAgc3VwcGxlbWVudDxXZWJDb29raWVNYW5hZ2Vy
PigpLT5zZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHBhcmFtZXRlcnMuY29va2llQWNjZXB0UG9s
aWN5KTsKKyAgICBzdXBwbGVtZW50PFdlYkNvb2tpZU1hbmFnZXI+KCktPnNldEhUVFBDb29raWVB
Y2NlcHRQb2xpY3kocGFyYW1ldGVycy5jb29raWVBY2NlcHRQb2xpY3ksIDApOwogCiAgICAgaWYg
KCFwYXJhbWV0ZXJzLmxhbmd1YWdlcy5pc0VtcHR5KCkpCiAgICAgICAgIHVzZXJQcmVmZXJyZWRM
YW5ndWFnZXNDaGFuZ2VkKHBhcmFtZXRlcnMubGFuZ3VhZ2VzKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9BUEkvQVBJT2JqZWN0LmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
QVBJL0FQSU9iamVjdC5oCmluZGV4IGFlMGZjOTk4NWJkMjc2NDc2ODI3ODlmZjRjNGY0NjZhMWVj
MzQ2MGEuLjQ2ZjI3OTFkZGZjNDUyNDJiYTM1MTRiMDVmOTYzMzE4ZTJmZTUxYjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvQVBJT2JqZWN0LmgKKysrIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL0FQSS9BUElPYmplY3QuaApAQCAtMTE2LDYgKzExNiw3IEBAIHB1YmxpYzoK
ICAgICAgICAgRnVsbFNjcmVlbk1hbmFnZXIsCiAgICAgICAgIEdlb2xvY2F0aW9uTWFuYWdlciwK
ICAgICAgICAgR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdCwKKyAgICAgICAgSFRUUENvb2tp
ZVN0b3JhZ2UsCiAgICAgICAgIEhpdFRlc3RSZXN1bHQsCiAgICAgICAgIEdlb2xvY2F0aW9uUG9z
aXRpb24sCiAgICAgICAgIEdyYW1tYXJEZXRhaWwsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQ29jb2EvQVBJT2JqZWN0Lm1tIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0NvY29h
L0FQSU9iamVjdC5tbQppbmRleCAxMTYzMjQ1NDIwY2QyNzczODA0YjIyNTM0Y2I5OWMwZmFkNDE3
MjIyLi5kYzY5YWQ3OTM5YzVmNGNkMGYwMTFlN2E2ZTdkNDdhMjc4ZDZmOTRjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29jb2EvQVBJT2JqZWN0Lm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9Db2NvYS9BUElPYmplY3QubW0KQEAgLTM2LDYgKzM2LDcgQEAKICNpbXBv
cnQgIldLQ29udGVudEV4dGVuc2lvbkludGVybmFsLmgiCiAjaW1wb3J0ICJXS0NvbnRlbnRFeHRl
bnNpb25TdG9yZUludGVybmFsLmgiCiAjaW1wb3J0ICJXS0ZyYW1lSW5mb0ludGVybmFsLmgiCisj
aW1wb3J0ICJXS0hUVFBDb29raWVTdG9yYWdlSW50ZXJuYWwuaCIKICNpbXBvcnQgIldLTlNBcnJh
eS5oIgogI2ltcG9ydCAiV0tOU0RhdGEuaCIKICNpbXBvcnQgIldLTlNEaWN0aW9uYXJ5LmgiCkBA
IC0xNzgsNiArMTc5LDEwIEBAIHZvaWQqIE9iamVjdDo6bmV3T2JqZWN0KHNpemVfdCBzaXplLCBU
eXBlIHR5cGUpCiAgICAgICAgIHdyYXBwZXIgPSBbV0tGcmFtZUluZm8gYWxsb2NdOwogICAgICAg
ICBicmVhazsKIAorICAgIGNhc2UgVHlwZTo6SFRUUENvb2tpZVN0b3JhZ2U6CisgICAgICAgIHdy
YXBwZXIgPSBbV0tIVFRQQ29va2llU3RvcmFnZSBhbGxvY107CisgICAgICAgIGJyZWFrOworCiAj
aWYgUExBVEZPUk0oTUFDKQogICAgIGNhc2UgVHlwZTo6SGl0VGVzdFJlc3VsdDoKICAgICAgICAg
d3JhcHBlciA9IFtfV0tIaXRUZXN0UmVzdWx0IGFsbG9jXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3JhZ2UuY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9BUElIVFRQQ29va2llU3RvcmFnZS5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MzM4Yjg1MjRiOWZjODlmMTRhYzg0NjIzNWMxN2NiNTExYjQ4YjhlMwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3JhZ2UuY3Bw
CkBAIC0wLDAgKzEsMTM4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIkFQSUhUVFBDb29raWVTdG9yYWdlLmgiCisKKyNpbmNsdWRlICJBUElXZWJzaXRlRGF0
YVN0b3JlLmgiCisjaW5jbHVkZSAiV2ViQ29va2llTWFuYWdlclByb3h5LmgiCisjaW5jbHVkZSAi
V2ViUHJvY2Vzc1Bvb2wuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0Nvb2tpZS5oPgorCit1c2luZyBu
YW1lc3BhY2UgV2ViS2l0OworCituYW1lc3BhY2UgQVBJIHsKKworSFRUUENvb2tpZVN0b3JhZ2U6
OkhUVFBDb29raWVTdG9yYWdlKFdlYnNpdGVEYXRhU3RvcmUmIHdlYnNpdGVEYXRhU3RvcmUpCisg
ICAgOiBtX293bmluZ0RhdGFTdG9yZSh3ZWJzaXRlRGF0YVN0b3JlKQoreworfQorCitIVFRQQ29v
a2llU3RvcmFnZTo6fkhUVFBDb29raWVTdG9yYWdlKCkKK3sKK30KKwordm9pZCBIVFRQQ29va2ll
U3RvcmFnZTo6Y29va2llcyhGdW5jdGlvbjx2b2lkIChjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29v
a2llPiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGF1dG8mIGRhdGFTdG9yZSA9IG1f
b3duaW5nRGF0YVN0b3JlLndlYnNpdGVEYXRhU3RvcmUoKTsKKyAgICBhdXRvIHBvb2wgPSBkYXRh
U3RvcmUucHJvY2Vzc1Bvb2xGb3JDb29raWVTdG9yYWdlT3BlcmF0aW9ucygpOworICAgIGF1dG8q
IGNvb2tpZU1hbmFnZXIgPSBwb29sLT5zdXBwbGVtZW50PFdlYktpdDo6V2ViQ29va2llTWFuYWdl
clByb3h5PigpOworCisgICAgY29va2llTWFuYWdlci0+Z2V0QWxsQ29va2llcyhkYXRhU3RvcmUu
c2Vzc2lvbklEKCksIFtwb29sID0gV1RGTW92ZShwb29sKSwgY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4m
IGNvb2tpZXMsIENhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKKyAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoY29va2llcyk7CisgICAgfSk7Cit9CisKK3ZvaWQgSFRUUENvb2tpZVN0b3JhZ2U6
OmNvb2tpZXMoY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwsIEZ1bmN0aW9uPHZvaWQgKGNvbnN0IFZl
Y3RvcjxXZWJDb3JlOjpDb29raWU+Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgYXV0
byYgZGF0YVN0b3JlID0gbV9vd25pbmdEYXRhU3RvcmUud2Vic2l0ZURhdGFTdG9yZSgpOworICAg
IGF1dG8gcG9vbCA9IGRhdGFTdG9yZS5wcm9jZXNzUG9vbEZvckNvb2tpZVN0b3JhZ2VPcGVyYXRp
b25zKCk7CisgICAgYXV0byogY29va2llTWFuYWdlciA9IHBvb2wtPnN1cHBsZW1lbnQ8V2ViS2l0
OjpXZWJDb29raWVNYW5hZ2VyUHJveHk+KCk7CisKKyAgICBjb29raWVNYW5hZ2VyLT5nZXRDb29r
aWVzKGRhdGFTdG9yZS5zZXNzaW9uSUQoKSwgdXJsLCBbcG9vbCA9IFdURk1vdmUocG9vbCksIGNv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKGNvbnN0IFZlY3Rv
cjxXZWJDb3JlOjpDb29raWU+JiBjb29raWVzLCBDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7
CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGNvb2tpZXMpOworICAgIH0pOworfQorCit2b2lk
IEhUVFBDb29raWVTdG9yYWdlOjpzZXRDb29raWUoY29uc3QgV2ViQ29yZTo6Q29va2llJiBjb29r
aWUsIEZ1bmN0aW9uPHZvaWQgKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgYXV0byYg
ZGF0YVN0b3JlID0gbV9vd25pbmdEYXRhU3RvcmUud2Vic2l0ZURhdGFTdG9yZSgpOworICAgIGF1
dG8gcG9vbCA9IGRhdGFTdG9yZS5wcm9jZXNzUG9vbEZvckNvb2tpZVN0b3JhZ2VPcGVyYXRpb25z
KCk7CisgICAgYXV0byogY29va2llTWFuYWdlciA9IHBvb2wtPnN1cHBsZW1lbnQ8V2ViS2l0OjpX
ZWJDb29raWVNYW5hZ2VyUHJveHk+KCk7CisKKyAgICBjb29raWVNYW5hZ2VyLT5zZXRDb29raWUo
ZGF0YVN0b3JlLnNlc3Npb25JRCgpLCBjb29raWUsIFtwb29sID0gV1RGTW92ZShwb29sKSwgY29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oQ2FsbGJhY2tCYXNl
OjpFcnJvciBlcnJvcikgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAgIH0pOwor
fQorCit2b2lkIEhUVFBDb29raWVTdG9yYWdlOjpzZXRDb29raWVzKGNvbnN0IFZlY3RvcjxXZWJD
b3JlOjpDb29raWU+JiBjb29raWVzLCBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCwgY29uc3QgV2Vi
Q29yZTo6VVJMJiBtYWluRG9jdW1lbnRVUkwsIEZ1bmN0aW9uPHZvaWQgKCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCit7CisgICAgYXV0byYgZGF0YVN0b3JlID0gbV9vd25pbmdEYXRhU3RvcmUud2Vi
c2l0ZURhdGFTdG9yZSgpOworICAgIGF1dG8gcG9vbCA9IGRhdGFTdG9yZS5wcm9jZXNzUG9vbEZv
ckNvb2tpZVN0b3JhZ2VPcGVyYXRpb25zKCk7CisgICAgYXV0byogY29va2llTWFuYWdlciA9IHBv
b2wtPnN1cHBsZW1lbnQ8V2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk+KCk7CisKKyAgICBj
b29raWVNYW5hZ2VyLT5zZXRDb29raWVzKGRhdGFTdG9yZS5zZXNzaW9uSUQoKSwgY29va2llcywg
dXJsLCBtYWluRG9jdW1lbnRVUkwsIFtwb29sID0gV1RGTW92ZShwb29sKSwgY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oQ2FsbGJhY2tCYXNlOjpFcnJvciBl
cnJvcikgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAgIH0pOworfQorCit2b2lk
IEhUVFBDb29raWVTdG9yYWdlOjpkZWxldGVDb29raWUoY29uc3QgV2ViQ29yZTo6Q29va2llJiBj
b29raWUsIEZ1bmN0aW9uPHZvaWQgKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgYXV0
byYgZGF0YVN0b3JlID0gbV9vd25pbmdEYXRhU3RvcmUud2Vic2l0ZURhdGFTdG9yZSgpOworICAg
IGF1dG8gcG9vbCA9IGRhdGFTdG9yZS5wcm9jZXNzUG9vbEZvckNvb2tpZVN0b3JhZ2VPcGVyYXRp
b25zKCk7CisgICAgYXV0byogY29va2llTWFuYWdlciA9IHBvb2wtPnN1cHBsZW1lbnQ8V2ViS2l0
OjpXZWJDb29raWVNYW5hZ2VyUHJveHk+KCk7CisKKyAgICBjb29raWVNYW5hZ2VyLT5kZWxldGVD
b29raWUoZGF0YVN0b3JlLnNlc3Npb25JRCgpLCBjb29raWUsIFtwb29sID0gV1RGTW92ZShwb29s
KSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oQ2FsbGJh
Y2tCYXNlOjpFcnJvciBlcnJvcikgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAg
IH0pOworfQorCit2b2lkIEhUVFBDb29raWVTdG9yYWdlOjpyZW1vdmVDb29raWVzU2luY2VEYXRl
KHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgZGF0ZSwgRnVuY3Rpb248dm9p
ZCAoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBhdXRvJiBkYXRhU3RvcmUgPSBtX293
bmluZ0RhdGFTdG9yZS53ZWJzaXRlRGF0YVN0b3JlKCk7CisgICAgYXV0byBwb29sID0gZGF0YVN0
b3JlLnByb2Nlc3NQb29sRm9yQ29va2llU3RvcmFnZU9wZXJhdGlvbnMoKTsKKyAgICBhdXRvKiBj
b29raWVNYW5hZ2VyID0gcG9vbC0+c3VwcGxlbWVudDxXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQ
cm94eT4oKTsKKworICAgIGNvb2tpZU1hbmFnZXItPmRlbGV0ZUFsbENvb2tpZXNNb2RpZmllZFNp
bmNlKGRhdGFTdG9yZS5zZXNzaW9uSUQoKSwgZGF0ZSwgW3Bvb2wgPSBXVEZNb3ZlKHBvb2wpLCBj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShDYWxsYmFja0Jh
c2U6OkVycm9yIGVycm9yKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgfSk7
Cit9CisKK3ZvaWQgSFRUUENvb2tpZVN0b3JhZ2U6OnNldEhUVFBDb29raWVBY2NlcHRQb2xpY3ko
SFRUUENvb2tpZUFjY2VwdFBvbGljeSBwb2xpY3ksIEZ1bmN0aW9uPHZvaWQgKCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCit7CisgICAgYXV0byYgZGF0YVN0b3JlID0gbV9vd25pbmdEYXRhU3RvcmUu
d2Vic2l0ZURhdGFTdG9yZSgpOworICAgIGF1dG8gcG9vbCA9IGRhdGFTdG9yZS5wcm9jZXNzUG9v
bEZvckNvb2tpZVN0b3JhZ2VPcGVyYXRpb25zKCk7CisgICAgYXV0byogY29va2llTWFuYWdlciA9
IHBvb2wtPnN1cHBsZW1lbnQ8V2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk+KCk7CisKKyAg
ICBjb29raWVNYW5hZ2VyLT5zZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KGRhdGFTdG9yZS5zZXNz
aW9uSUQoKSwgcG9saWN5LCBbcG9vbCA9IFdURk1vdmUocG9vbCksIGNvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKENhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3Ip
IHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICB9KTsKK30KKwordm9pZCBIVFRQ
Q29va2llU3RvcmFnZTo6Z2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShGdW5jdGlvbjx2b2lkIChI
VFRQQ29va2llQWNjZXB0UG9saWN5KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBhdXRv
JiBkYXRhU3RvcmUgPSBtX293bmluZ0RhdGFTdG9yZS53ZWJzaXRlRGF0YVN0b3JlKCk7CisgICAg
YXV0byBwb29sID0gZGF0YVN0b3JlLnByb2Nlc3NQb29sRm9yQ29va2llU3RvcmFnZU9wZXJhdGlv
bnMoKTsKKyAgICBhdXRvKiBjb29raWVNYW5hZ2VyID0gcG9vbC0+c3VwcGxlbWVudDxXZWJLaXQ6
OldlYkNvb2tpZU1hbmFnZXJQcm94eT4oKTsKKworICAgIGNvb2tpZU1hbmFnZXItPmdldEhUVFBD
b29raWVBY2NlcHRQb2xpY3koZGF0YVN0b3JlLnNlc3Npb25JRCgpLCBbcG9vbCA9IFdURk1vdmUo
cG9vbCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKEhU
VFBDb29raWVBY2NlcHRQb2xpY3kgcG9saWN5LCBDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7
CisgICAgICAgIGlmIChlcnJvciAhPSBDYWxsYmFja0Jhc2U6OkVycm9yOjpOb25lKQorICAgICAg
ICAgICAgcG9saWN5ID0gSFRUUENvb2tpZUFjY2VwdFBvbGljeU5ldmVyOworCisgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKHBvbGljeSk7CisgICAgfSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEFQ
SQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElIVFRQQ29va2ll
U3RvcmFnZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElIVFRQQ29va2llU3Rv
cmFnZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmFkZjdiYTI1NmI2ODMwZTQzMDVkOTlkNjBkNzE1MzRhYzg2Zjlk
MzAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSUhU
VFBDb29raWVTdG9yYWdlLmgKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCisjaW5jbHVkZSAiSFRUUENvb2tpZUFjY2Vw
dFBvbGljeS5oIgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgVVJMOworc3RydWN0IENvb2tpZTsK
K30KKworbmFtZXNwYWNlIEFQSSB7CisKK2NsYXNzIFdlYnNpdGVEYXRhU3RvcmU7CisKK2NsYXNz
IEhUVFBDb29raWVTdG9yYWdlIGZpbmFsIDogcHVibGljIE9iamVjdEltcGw8T2JqZWN0OjpUeXBl
OjpIVFRQQ29va2llU3RvcmFnZT4geworcHVibGljOgorICAgIHN0YXRpYyBSZWY8SFRUUENvb2tp
ZVN0b3JhZ2U+IGNyZWF0ZShXZWJzaXRlRGF0YVN0b3JlJiB3ZWJzaXRlRGF0YVN0b3JlKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSFRUUENvb2tpZVN0b3JhZ2Uod2Vic2l0
ZURhdGFTdG9yZSkpOworICAgIH0KKworICAgIHZpcnR1YWwgfkhUVFBDb29raWVTdG9yYWdlKCk7
CisKKyAgICB2b2lkIGNvb2tpZXMoRnVuY3Rpb248dm9pZCAoY29uc3QgVmVjdG9yPFdlYkNvcmU6
OkNvb2tpZT4mKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7CisgICAgdm9pZCBjb29raWVzKGNvbnN0
IFdlYkNvcmU6OlVSTCYsIEZ1bmN0aW9uPHZvaWQgKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29r
aWU+Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpOworCisgICAgdm9pZCBzZXRDb29raWUoY29uc3Qg
V2ViQ29yZTo6Q29va2llJiwgRnVuY3Rpb248dm9pZCAoKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7
CisgICAgdm9pZCBzZXRDb29raWVzKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiwgY29u
c3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBtYWluRG9jdW1lbnRVUkwsIEZ1
bmN0aW9uPHZvaWQgKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpOworICAgIHZvaWQgZGVsZXRlQ29v
a2llKGNvbnN0IFdlYkNvcmU6OkNvb2tpZSYsIEZ1bmN0aW9uPHZvaWQgKCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpOworCisgICAgdm9pZCByZW1vdmVDb29raWVzU2luY2VEYXRlKHN0ZDo6Y2hyb25v
OjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQsIEZ1bmN0aW9uPHZvaWQgKCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpOworCisgICAgdm9pZCBzZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KFdlYktpdDo6
SFRUUENvb2tpZUFjY2VwdFBvbGljeSwgRnVuY3Rpb248dm9pZCAoKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcik7CisgICAgdm9pZCBnZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KEZ1bmN0aW9uPHZvaWQg
KFdlYktpdDo6SFRUUENvb2tpZUFjY2VwdFBvbGljeSk+JiYgY29tcGxldGlvbkhhbmRsZXIpOwor
ICAgIAorcHJpdmF0ZToKKyAgICBIVFRQQ29va2llU3RvcmFnZShXZWJzaXRlRGF0YVN0b3JlJik7
CisKKyAgICBXZWJzaXRlRGF0YVN0b3JlJiBtX293bmluZ0RhdGFTdG9yZTsKK307CisKK30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9y
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUu
Y3BwCmluZGV4IDVjNzhjY2Q3YWUyOTBlNDVlNzBmNDgzZjUwMjBiZGFhNzkwNGY3NWEuLmNhMWRm
NzU3MTBkOTI1N2EyYTliMGQyZDMwMmYwM2IxZWViMzc5MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmNwcApAQCAtMzEsMTMg
KzMxLDEzIEBACiAKIG5hbWVzcGFjZSBBUEkgewogCi1SZWZQdHI8V2Vic2l0ZURhdGFTdG9yZT4g
V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZSgpCitSZWY8V2Vic2l0ZURhdGFTdG9y
ZT4gV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZSgpCiB7CiAgICAgV2ViS2l0OjpJ
bml0aWFsaXplV2ViS2l0MigpOwogCiAgICAgc3RhdGljIFdlYnNpdGVEYXRhU3RvcmUqIGRlZmF1
bHREYXRhU3RvcmUgPSBhZG9wdFJlZihuZXcgV2Vic2l0ZURhdGFTdG9yZShkZWZhdWx0RGF0YVN0
b3JlQ29uZmlndXJhdGlvbigpKSkubGVha1JlZigpOwogCi0gICAgcmV0dXJuIGRlZmF1bHREYXRh
U3RvcmU7CisgICAgcmV0dXJuICpkZWZhdWx0RGF0YVN0b3JlOwogfQogCiBSZWY8V2Vic2l0ZURh
dGFTdG9yZT4gV2Vic2l0ZURhdGFTdG9yZTo6Y3JlYXRlTm9uUGVyc2lzdGVudERhdGFTdG9yZSgp
CkBAIC02NCw2ICs2NCwxNCBAQCBXZWJzaXRlRGF0YVN0b3JlOjp+V2Vic2l0ZURhdGFTdG9yZSgp
CiB7CiB9CiAKK0hUVFBDb29raWVTdG9yYWdlJiBXZWJzaXRlRGF0YVN0b3JlOjpodHRwQ29va2ll
U3RvcmFnZSgpCit7CisgICAgaWYgKCFtX2FwaUhUVFBDb29raWVTdG9yYWdlKQorICAgICAgICBt
X2FwaUhUVFBDb29raWVTdG9yYWdlID0gSFRUUENvb2tpZVN0b3JhZ2U6OmNyZWF0ZSgqdGhpcyk7
CisKKyAgICByZXR1cm4gKm1fYXBpSFRUUENvb2tpZVN0b3JhZ2U7Cit9CisKIGJvb2wgV2Vic2l0
ZURhdGFTdG9yZTo6aXNQZXJzaXN0ZW50KCkKIHsKICAgICByZXR1cm4gbV93ZWJzaXRlRGF0YVN0
b3JlLT5pc1BlcnNpc3RlbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9BUElXZWJzaXRlRGF0YVN0b3JlLmgKaW5kZXggMjY3ZDY5YzMzODQ5YTA4ZjgyMjg4NzFlMDFl
ZDg2MWFkODNiOGE3ZS4uY2E3NGRiY2M0NjdlNjU2NTJkMzc1M2ZkM2JjZDI0MzI5ODJmODc3OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0
b3JlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0
b3JlLmgKQEAgLTI2LDcgKzI2LDcgQEAKICNpZm5kZWYgQVBJV2Vic2l0ZURhdGFTdG9yZV9oCiAj
ZGVmaW5lIEFQSVdlYnNpdGVEYXRhU3RvcmVfaAogCi0jaW5jbHVkZSAiQVBJT2JqZWN0LmgiCisj
aW5jbHVkZSAiQVBJSFRUUENvb2tpZVN0b3JhZ2UuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YVN0
b3JlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KQEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNlIEFQSSB7CiAKIGNsYXNz
IFdlYnNpdGVEYXRhU3RvcmUgZmluYWwgOiBwdWJsaWMgT2JqZWN0SW1wbDxPYmplY3Q6OlR5cGU6
OldlYnNpdGVEYXRhU3RvcmU+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPFdlYnNpdGVE
YXRhU3RvcmU+IGRlZmF1bHREYXRhU3RvcmUoKTsKKyAgICBzdGF0aWMgUmVmPFdlYnNpdGVEYXRh
U3RvcmU+IGRlZmF1bHREYXRhU3RvcmUoKTsKICAgICBzdGF0aWMgUmVmPFdlYnNpdGVEYXRhU3Rv
cmU+IGNyZWF0ZU5vblBlcnNpc3RlbnREYXRhU3RvcmUoKTsKICAgICBzdGF0aWMgUmVmPFdlYnNp
dGVEYXRhU3RvcmU+IGNyZWF0ZShXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OkNvbmZpZ3VyYXRp
b24pOwogCkBAIC00OSw2ICs0OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlZ2lzdGVyU2hhcmVk
UmVzb3VyY2VMb2FkT2JzZXJ2ZXIoKTsKIAogICAgIFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZSYg
d2Vic2l0ZURhdGFTdG9yZSgpIHsgcmV0dXJuICptX3dlYnNpdGVEYXRhU3RvcmU7IH0KKyAgICBI
VFRQQ29va2llU3RvcmFnZSYgaHR0cENvb2tpZVN0b3JhZ2UoKTsKIAogICAgIHN0YXRpYyBTdHJp
bmcgZGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKTsKICAgICBzdGF0aWMgU3RyaW5n
IGRlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKTsKQEAgLTcwLDYgKzcxLDcgQEAgcHJpdmF0
ZToKICAgICBzdGF0aWMgU3RyaW5nIHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5TmFtZSk7CiAKICAgICBSZWZQdHI8V2Vi
S2l0OjpXZWJzaXRlRGF0YVN0b3JlPiBtX3dlYnNpdGVEYXRhU3RvcmU7CisgICAgUmVmUHRyPEhU
VFBDb29raWVTdG9yYWdlPiBtX2FwaUhUVFBDb29raWVTdG9yYWdlOwogfTsKIAogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29va2llTWFuYWdlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb29raWVNYW5hZ2VyLmNwcAppbmRl
eCAyNzhlODNjNTFlMDQwOGEzY2RiY2MxNThkNTNlM2E0YjFmNzY0OWY3Li44MGFjOGE4NjI0MDkx
NGZhOGFlMDhmMzhhZjk4YWNjYTVkYTk1NGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvV0tDb29raWVNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvV0tDb29raWVNYW5hZ2VyLmNwcApAQCAtNjEsMTcgKzYxLDE3IEBAIHZv
aWQgV0tDb29raWVNYW5hZ2VyRGVsZXRlQWxsQ29va2llc01vZGlmaWVkQWZ0ZXJEYXRlKFdLQ29v
a2llTWFuYWdlclJlZiBjb29raWVNCiAgICAgdXNpbmcgbmFtZXNwYWNlIHN0ZDo6Y2hyb25vOwog
CiAgICAgYXV0byB0aW1lID0gc3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50KGR1cmF0aW9uX2Nhc3Q8
c3lzdGVtX2Nsb2NrOjpkdXJhdGlvbj4oZHVyYXRpb248ZG91YmxlPihkYXRlKSkpOwotICAgIHRv
SW1wbChjb29raWVNYW5hZ2VyUmVmKS0+ZGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2UoV2Vi
Q29yZTo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCksIHRpbWUpOworICAgIHRvSW1wbChj
b29raWVNYW5hZ2VyUmVmKS0+ZGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2UoV2ViQ29yZTo6
U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCksIHRpbWUsIFtdKENhbGxiYWNrQmFzZTo6RXJy
b3Ipe30pOwogfQogCiB2b2lkIFdLQ29va2llTWFuYWdlclNldEhUVFBDb29raWVBY2NlcHRQb2xp
Y3koV0tDb29raWVNYW5hZ2VyUmVmIGNvb2tpZU1hbmFnZXIsIFdLSFRUUENvb2tpZUFjY2VwdFBv
bGljeSBwb2xpY3kpCiB7Ci0gICAgdG9JbXBsKGNvb2tpZU1hbmFnZXIpLT5zZXRIVFRQQ29va2ll
QWNjZXB0UG9saWN5KHRvSFRUUENvb2tpZUFjY2VwdFBvbGljeShwb2xpY3kpKTsKKyAgICB0b0lt
cGwoY29va2llTWFuYWdlciktPnNldEhUVFBDb29raWVBY2NlcHRQb2xpY3koV2ViQ29yZTo6U2Vz
c2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCksIHRvSFRUUENvb2tpZUFjY2VwdFBvbGljeShwb2xp
Y3kpLCBbXShDYWxsYmFja0Jhc2U6OkVycm9yKXt9KTsKIH0KIAogdm9pZCBXS0Nvb2tpZU1hbmFn
ZXJHZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KFdLQ29va2llTWFuYWdlclJlZiBjb29raWVNYW5h
Z2VyLCB2b2lkKiBjb250ZXh0LCBXS0Nvb2tpZU1hbmFnZXJHZXRIVFRQQ29va2llQWNjZXB0UG9s
aWN5RnVuY3Rpb24gY2FsbGJhY2spCiB7Ci0gICAgdG9JbXBsKGNvb2tpZU1hbmFnZXIpLT5nZXRI
VFRQQ29va2llQWNjZXB0UG9saWN5KHRvR2VuZXJpY0NhbGxiYWNrRnVuY3Rpb248V0tIVFRQQ29v
a2llQWNjZXB0UG9saWN5LCBIVFRQQ29va2llQWNjZXB0UG9saWN5Pihjb250ZXh0LCBjYWxsYmFj
aykpOworICAgIHRvSW1wbChjb29raWVNYW5hZ2VyKS0+Z2V0SFRUUENvb2tpZUFjY2VwdFBvbGlj
eShXZWJDb3JlOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSwgdG9HZW5lcmljQ2FsbGJh
Y2tGdW5jdGlvbjxXS0hUVFBDb29raWVBY2NlcHRQb2xpY3ksIEhUVFBDb29raWVBY2NlcHRQb2xp
Y3k+KGNvbnRleHQsIGNhbGxiYWNrKSk7CiB9CiAKIHZvaWQgV0tDb29raWVNYW5hZ2VyU2V0Q29v
a2llU3RvcmFnZVBhcnRpdGlvbmluZ0VuYWJsZWQoV0tDb29raWVNYW5hZ2VyUmVmIGNvb2tpZU1h
bmFnZXIsIGJvb2wgZW5hYmxlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAKaW5kZXggYTc3YzFhODlkNWNkZTVl
YjkyZmY4MTk2NmZmODIzNzkyN2M2ZTQ5OC4uNmNhNjljNmQyZmQ3NmU0YTA0ZDBlYzE1NzRjMmMx
MGUzMGU3NWFjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dL
V2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgV0tUeXBlSUQg
V0tXZWJzaXRlRGF0YVN0b3JlR2V0VHlwZUlEKCkKIAogV0tXZWJzaXRlRGF0YVN0b3JlUmVmIFdL
V2Vic2l0ZURhdGFTdG9yZUdldERlZmF1bHREYXRhU3RvcmUoKQogewotICAgIHJldHVybiBXZWJL
aXQ6OnRvQVBJKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZSgpLmdldCgp
KTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSShBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1
bHREYXRhU3RvcmUoKS5wdHIoKSk7CiB9CiAKIFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBXS1dlYnNp
dGVEYXRhU3RvcmVDcmVhdGVOb25QZXJzaXN0ZW50RGF0YVN0b3JlKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tIVFRQQ29va2llU3RvcmFnZS5oIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0hUVFBDb29raWVTdG9yYWdlLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMTA0MmU5M2JjN2M3MjQwODUyYTExY2I2MDM3OWE0MDJkNjc3MDUwMAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tIVFRQ
Q29va2llU3RvcmFnZS5oCkBAIC0wLDAgKzEsOTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0IDxX
ZWJLaXQvV0tGb3VuZGF0aW9uLmg+CisKKyNpZiBXS19BUElfRU5BQkxFRAorCisjaW1wb3J0IDxG
b3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KKworTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KKworLyoh
CisgQSBXS0hUVFBDb29raWVTdG9yYWdlIG9iamVjdCBhbGxvd3MgbWFuYWdpbmcgdGhlIEhUVFAg
Y29va2llcyBhc3NvY2lhdGVkIHdpdGggYSBwYXJ0aWN1bGFyIFdLV2Vic2l0ZURhdGFTdG9yZS4K
KyAqLworV0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19U
QkEpKQorQGludGVyZmFjZSBXS0hUVFBDb29raWVTdG9yYWdlIDogTlNPYmplY3QKKworLyohIEBh
YnN0cmFjdCBGZXRjaGVzIGFsbCBzdG9yZWQgY29va2llcy4KKyBAcGFyYW0gY29tcGxldGlvbkhh
bmRsZXIgQSBibG9jayB0byBpbnZva2Ugd2l0aCB0aGUgZmV0Y2hlZCBjb29raWVzLgorICovCist
ICh2b2lkKWZldGNoQ29va2llczoodm9pZCAoXikoTlNBcnJheTxOU0hUVFBDb29raWUgKj4gKikp
Y29tcGxldGlvbkhhbmRsZXI7CisKKy8qISBAYWJzdHJhY3QgRmV0Y2hlcyBhbGwgb2YgdGhlIHN0
b3JlZCBjb29raWVzIGZvciB0aGUgZ2l2ZW4gVVJMLgorIEBwYXJhbSBjb21wbGV0aW9uSGFuZGxl
ciBBIGJsb2NrIHRvIGludm9rZSB3aXRoIHRoZSBmZXRjaGVkIGNvb2tpZXMuCisgKi8KKy0gKHZv
aWQpZmV0Y2hDb29raWVzRm9yVVJMOihOU1VSTCAqKXVybCBjb21wbGV0aW9uSGFuZGxlcjoodm9p
ZCAoXikoTlNBcnJheTxOU0hUVFBDb29raWUgKj4gKikpY29tcGxldGlvbkhhbmRsZXI7CisKKy8q
ISBAYWJzdHJhY3QgU2V0IGEgY29va2llLgorIEBwYXJhbSBjb29raWVzIFRoZSBjb29raWUgdG8g
c2V0LgorIEBwYXJhbSBjb21wbGV0aW9uSGFuZGxlciBBIGJsb2NrIHRvIGludm9rZSBvbmNlIHRo
ZSBjb29raWUgaGFzIGJlZW4gc3RvcmVkLgorICovCistICh2b2lkKXNldENvb2tpZTooTlNIVFRQ
Q29va2llICopY29va2llIGNvbXBsZXRpb25IYW5kbGVyOihudWxsYWJsZSB2b2lkICheKSgpKWNv
bXBsZXRpb25IYW5kbGVyOworCisvKiEgQGFic3RyYWN0IEFkZHMgYW4gYXJyYXkgY29va2llcyB0
byB0aGUgY29va2llIHN0b3JlLCBmb2xsb3dpbmcgdGhlIGNvb2tpZSBhY2NlcHQgcG9saWN5Lgor
IEBwYXJhbSBjb29raWVzIFRoZSBjb29raWVzIHRvIHNldC4KKyBAcGFyYW0gVVJMIFRoZSBVUkwg
ZnJvbSB3aGljaCB0aGUgY29va2llcyB3ZXJlIHNlbnQuCisgQHBhcmFtIG1haW5Eb2N1bWVudFVS
TCBUaGUgbWFpbiBkb2N1bWVudCBVUkwgdG8gYmUgdXNlZCBhcyBhIGJhc2UgZm9yIHRoZSAic2Ft
ZSBkb21haW4gYXMgbWFpbiBkb2N1bWVudCIgcG9saWN5LgorIEBwYXJhbSBjb21wbGV0aW9uSGFu
ZGxlciBBIGJsb2NrIHRvIGludm9rZSBvbmNlIHRoZSBjb29raWVzIGhhdmUgYmVlbiBzdG9yZWQu
CisgKi8KKy0gKHZvaWQpc2V0Q29va2llczooTlNBcnJheTxOU0hUVFBDb29raWUgKj4gKiljb29r
aWVzIGZvclVSTDooTlNVUkwgKil1cmwgbWFpbkRvY3VtZW50VVJMOihudWxsYWJsZSBOU1VSTCAq
KW1haW5Eb2N1bWVudFVSTCBjb21wbGV0aW9uSGFuZGxlcjoobnVsbGFibGUgdm9pZCAoXikoKSlj
b21wbGV0aW9uSGFuZGxlcjsKKworLyohIEBhYnN0cmFjdCBEZWxldGUgdGhlIHNwZWNpZmllZCBj
b29raWUuCisgQHBhcmFtIGNvbXBsZXRpb25IYW5kbGVyIEEgYmxvY2sgdG8gaW52b2tlIG9uY2Ug
dGhlIGNvb2tpZSBoYXMgYmVlbiBkZWxldGVkLgorICovCistICh2b2lkKWRlbGV0ZUNvb2tpZToo
TlNIVFRQQ29va2llICopY29va2llIGNvbXBsZXRpb25IYW5kbGVyOihudWxsYWJsZSB2b2lkIChe
KSgpKWNvbXBsZXRpb25IYW5kbGVyOworCisvKiEgQGFic3RyYWN0IERlbGV0ZSBhbGwgY29va2ll
cyBmcm9tIHRoZSBjb29raWUgc3RvcmFnZSBzaW5jZSB0aGUgcHJvdmlkZWQgZGF0ZS4KKyBAcGFy
YW0gZGF0ZSBUaGUgZGF0ZSBhZnRlciB3aGljaCBzZXQgY29va2llcyBzaG91bGQgYmUgcmVtb3Zl
ZC4KKyBAcGFyYW0gY29tcGxldGlvbkhhbmRsZXIgQSBibG9jayB0byBpbnZva2Ugb25jZSB0aGUg
Y29va2llcyBoYXZlIGJlZW4gZGVsZXRlZC4KKyAqLworLSAodm9pZClyZW1vdmVDb29raWVzU2lu
Y2VEYXRlOihOU0RhdGUgKilkYXRlIGNvbXBsZXRpb25IYW5kbGVyOihudWxsYWJsZSB2b2lkIChe
KSgpKWNvbXBsZXRpb25IYW5kbGVyOworCisvKiEgQGFic3RyYWN0IFNldHMgdGhlIGNvb2tpZSBh
Y2NlcHQgcG9saWN5IHByZWZlcmVuY2Ugb2YgdGhlIHJlY2VpdmVyLgorIEBwYXJhbSBwb2xpY3kg
VGhlIGNvb2tpZSBhY2NlcHQgcG9saWN5IHRvIHNldC4KKyBAcGFyYW0gY29tcGxldGlvbkhhbmRs
ZXIgQSBibG9jayB0byBpbnZva2Ugb25jZSB0aGUgcG9saWN5IGhhcyBiZWVuIHNldC4KKyAqLwor
LSAodm9pZClzZXRDb29raWVBY2NlcHRQb2xpY3k6KE5TSFRUUENvb2tpZUFjY2VwdFBvbGljeSlw
b2xpY3kgY29tcGxldGlvbkhhbmRsZXI6KG51bGxhYmxlIHZvaWQgKF4pKCkpY29tcGxldGlvbkhh
bmRsZXI7CisKKy8qISBAYWJzdHJhY3QgRmV0Y2hlcyB0aGUgY29va2llIGFjY2VwdCBwb2xpY3kg
cHJlZmVyZW5jZSBvZiB0aGUgcmVjZWl2ZXIuCisgQHBhcmFtIGNvbXBsZXRpb25IYW5kbGVyIEEg
YmxvY2sgdG8gaW52b2tlIHdpdGggdGhlIGZldGNoZWQgcG9saWN5LgorICovCistICh2b2lkKWZl
dGNoQ29va2llQWNjZXB0UG9saWN5Oih2b2lkICheKShOU0hUVFBDb29raWVBY2NlcHRQb2xpY3kp
KWNvbXBsZXRpb25IYW5kbGVyOworCitAZW5kCisKK05TX0FTU1VNRV9OT05OVUxMX0VORAorCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tI
VFRQQ29va2llU3RvcmFnZS5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tIVFRQQ29va2llU3RvcmFnZS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41M2M3MzRhNmYyNmE3ZjAzYzg0MmZh
NzQ0Yzg1MGYyNjA1MzIzZWVmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS0hUVFBDb29raWVTdG9yYWdlLm1tCkBAIC0wLDAgKzEsMTYxIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJXS0hUVFBDb29raWVT
dG9yYWdlSW50ZXJuYWwuaCIKKworI2lmIFdLX0FQSV9FTkFCTEVECisKKyNpbmNsdWRlICJIVFRQ
Q29va2llQWNjZXB0UG9saWN5LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9DRk5ldHdvcmtTUEkuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL0Nvb2tpZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+Cisj
aW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorCitzdGF0aWMgTlNBcnJheTxOU0hUVFBDb29raWUg
Kj4gKmNvcmVDb29raWVzVG9OU0Nvb2tpZXMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4m
IGNvcmVDb29raWVzKQoreworICAgIE5TTXV0YWJsZUFycmF5PE5TSFRUUENvb2tpZSAqPiAqbnND
b29raWVzID0gW05TTXV0YWJsZUFycmF5IGFycmF5V2l0aENhcGFjaXR5OmNvcmVDb29raWVzLnNp
emUoKV07CisKKyAgICBmb3IgKGF1dG8mIGNvb2tpZSA6IGNvcmVDb29raWVzKQorICAgICAgICBb
bnNDb29raWVzIGFkZE9iamVjdDooTlNIVFRQQ29va2llICopY29va2llXTsKKworICAgIHJldHVy
biBuc0Nvb2tpZXM7Cit9CisKK0BpbXBsZW1lbnRhdGlvbiBXS0hUVFBDb29raWVTdG9yYWdlCisK
Ky0gKHZvaWQpZGVhbGxvYworeworICAgIF9jb29raWVTdG9yYWdlLT5BUEk6OkhUVFBDb29raWVT
dG9yYWdlOjp+SFRUUENvb2tpZVN0b3JhZ2UoKTsKKworICAgIFtzdXBlciBkZWFsbG9jXTsKK30K
KworLSAodm9pZClmZXRjaENvb2tpZXM6KHZvaWQgKF4pKE5TQXJyYXk8TlNIVFRQQ29va2llICo+
ICopKWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAgX2Nvb2tpZVN0b3JhZ2UtPmNvb2tpZXMoW2hh
bmRsZXIgPSBhZG9wdE5TKFtjb21wbGV0aW9uSGFuZGxlciBjb3B5XSldKGNvbnN0IFZlY3RvcjxX
ZWJDb3JlOjpDb29raWU+JiBjb29raWVzKSB7CisgICAgICAgIGF1dG8gcmF3SGFuZGxlciA9ICh2
b2lkICheKShOU0FycmF5PE5TSFRUUENvb2tpZSAqPiAqKSloYW5kbGVyLmdldCgpOworICAgICAg
ICByYXdIYW5kbGVyKGNvcmVDb29raWVzVG9OU0Nvb2tpZXMoY29va2llcykpOworICAgIH0pOwor
fQorCistICh2b2lkKWZldGNoQ29va2llc0ZvclVSTDooTlNVUkwgKil1cmwgY29tcGxldGlvbkhh
bmRsZXI6KHZvaWQgKF4pKE5TQXJyYXk8TlNIVFRQQ29va2llICo+ICopKWNvbXBsZXRpb25IYW5k
bGVyCit7CisgICAgX2Nvb2tpZVN0b3JhZ2UtPmNvb2tpZXModXJsLCBbaGFuZGxlciA9IGFkb3B0
TlMoW2NvbXBsZXRpb25IYW5kbGVyIGNvcHldKV0oY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tp
ZT4mIGNvb2tpZXMpIHsKKyAgICAgICAgYXV0byByYXdIYW5kbGVyID0gKHZvaWQgKF4pKE5TQXJy
YXk8TlNIVFRQQ29va2llICo+ICopKWhhbmRsZXIuZ2V0KCk7CisgICAgICAgIHJhd0hhbmRsZXIo
Y29yZUNvb2tpZXNUb05TQ29va2llcyhjb29raWVzKSk7CisgICAgfSk7Cit9CisKKy0gKHZvaWQp
c2V0Q29va2llOihOU0hUVFBDb29raWUgKiljb29raWUgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQg
KF4pKCkpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICBfY29va2llU3RvcmFnZS0+c2V0Q29va2ll
KGNvb2tpZSwgW2hhbmRsZXIgPSBhZG9wdE5TKFtjb21wbGV0aW9uSGFuZGxlciBjb3B5XSldKCkg
eworICAgICAgICBhdXRvIHJhd0hhbmRsZXIgPSAodm9pZCAoXikoKSloYW5kbGVyLmdldCgpOwor
ICAgICAgICBpZiAocmF3SGFuZGxlcikKKyAgICAgICAgICAgIHJhd0hhbmRsZXIoKTsKKyAgICB9
KTsKKworfQorCistICh2b2lkKWRlbGV0ZUNvb2tpZTooTlNIVFRQQ29va2llICopY29va2llIGNv
bXBsZXRpb25IYW5kbGVyOih2b2lkICheKSgpKWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAgX2Nv
b2tpZVN0b3JhZ2UtPmRlbGV0ZUNvb2tpZShjb29raWUsIFtoYW5kbGVyID0gYWRvcHROUyhbY29t
cGxldGlvbkhhbmRsZXIgY29weV0pXSgpIHsKKyAgICAgICAgYXV0byByYXdIYW5kbGVyID0gKHZv
aWQgKF4pKCkpaGFuZGxlci5nZXQoKTsKKyAgICAgICAgaWYgKHJhd0hhbmRsZXIpCisgICAgICAg
ICAgICByYXdIYW5kbGVyKCk7CisgICAgfSk7Cit9CisKKy0gKHZvaWQpc2V0Q29va2llczooTlNB
cnJheTxOU0hUVFBDb29raWUgKj4gKiljb29raWVzIGZvclVSTDooTlNVUkwgKilVUkwgbWFpbkRv
Y3VtZW50VVJMOihOU1VSTCAqKW1haW5Eb2N1bWVudFVSTCBjb21wbGV0aW9uSGFuZGxlcjoodm9p
ZCAoXikoKSljb21wbGV0aW9uSGFuZGxlcgoreworICAgIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+
IGNvcmVDb29raWVzOworICAgIGNvcmVDb29raWVzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoY29v
a2llcy5jb3VudCk7CisgICAgZm9yIChOU0hUVFBDb29raWUgKmNvb2tpZSA6IGNvb2tpZXMpCisg
ICAgICAgIGNvcmVDb29raWVzLnVuY2hlY2tlZEFwcGVuZChjb29raWUpOworCisgICAgX2Nvb2tp
ZVN0b3JhZ2UtPnNldENvb2tpZXMoY29yZUNvb2tpZXMsIFVSTCwgbWFpbkRvY3VtZW50VVJMLCBb
aGFuZGxlciA9IGFkb3B0TlMoW2NvbXBsZXRpb25IYW5kbGVyIGNvcHldKV0oKSB7CisgICAgICAg
IGF1dG8gcmF3SGFuZGxlciA9ICh2b2lkICheKSgpKWhhbmRsZXIuZ2V0KCk7CisgICAgICAgIGlm
IChyYXdIYW5kbGVyKQorICAgICAgICAgICAgcmF3SGFuZGxlcigpOworICAgIH0pOworfQorCist
ICh2b2lkKXJlbW92ZUNvb2tpZXNTaW5jZURhdGU6KE5TRGF0ZSAqKWRhdGUgY29tcGxldGlvbkhh
bmRsZXI6KHZvaWQgKF4pKCkpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICBhdXRvIHN5c3RlbUNs
b2NrVGltZSA9IHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQoc3RkOjpjaHJv
bm86OmR1cmF0aW9uX2Nhc3Q8c3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6ZHVyYXRpb24+KHN0
ZDo6Y2hyb25vOjpkdXJhdGlvbjxkb3VibGU+KGRhdGUudGltZUludGVydmFsU2luY2UxOTcwKSkp
OworCisgICAgX2Nvb2tpZVN0b3JhZ2UtPnJlbW92ZUNvb2tpZXNTaW5jZURhdGUoc3lzdGVtQ2xv
Y2tUaW1lLCBbaGFuZGxlciA9IGFkb3B0TlMoW2NvbXBsZXRpb25IYW5kbGVyIGNvcHldKV0oKSB7
CisgICAgICAgIGF1dG8gcmF3SGFuZGxlciA9ICh2b2lkICheKSgpKWhhbmRsZXIuZ2V0KCk7Cisg
ICAgICAgIGlmIChyYXdIYW5kbGVyKQorICAgICAgICAgICAgcmF3SGFuZGxlcigpOworICAgIH0p
OworfQorCistICh2b2lkKXNldENvb2tpZUFjY2VwdFBvbGljeTooTlNIVFRQQ29va2llQWNjZXB0
UG9saWN5KXBvbGljeSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoKSljb21wbGV0aW9uSGFu
ZGxlcgoreworICAgIF9jb29raWVTdG9yYWdlLT5zZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHBv
bGljeSwgW2hhbmRsZXIgPSBhZG9wdE5TKFtjb21wbGV0aW9uSGFuZGxlciBjb3B5XSldKCkgewor
ICAgICAgICBhdXRvIHJhd0hhbmRsZXIgPSAodm9pZCAoXikoKSloYW5kbGVyLmdldCgpOworICAg
ICAgICBpZiAocmF3SGFuZGxlcikKKyAgICAgICAgICAgIHJhd0hhbmRsZXIoKTsKKyAgICB9KTsK
K30KKworc3RhdGljIE5TSFRUUENvb2tpZUFjY2VwdFBvbGljeSBraXRDb29raWVQb2xpY3lUb05T
Q29va2llUG9saWN5KFdlYktpdDo6SFRUUENvb2tpZUFjY2VwdFBvbGljeSBraXRQb2xpY3kpCit7
CisgICAgc3dpdGNoIChraXRQb2xpY3kpIHsKKyAgICBjYXNlIFdlYktpdDo6SFRUUENvb2tpZUFj
Y2VwdFBvbGljeUFsd2F5czoKKyAgICAgICAgcmV0dXJuIE5TSFRUUENvb2tpZUFjY2VwdFBvbGlj
eUFsd2F5czsKKyAgICBjYXNlIFdlYktpdDo6SFRUUENvb2tpZUFjY2VwdFBvbGljeU5ldmVyOgor
ICAgICAgICByZXR1cm4gTlNIVFRQQ29va2llQWNjZXB0UG9saWN5TmV2ZXI7CisgICAgY2FzZSBX
ZWJLaXQ6OkhUVFBDb29raWVBY2NlcHRQb2xpY3lPbmx5RnJvbU1haW5Eb2N1bWVudERvbWFpbjoK
KyAgICAgICAgcmV0dXJuIE5TSFRUUENvb2tpZUFjY2VwdFBvbGljeU9ubHlGcm9tTWFpbkRvY3Vt
ZW50RG9tYWluOworICAgIGNhc2UgV2ViS2l0OjpIVFRQQ29va2llQWNjZXB0UG9saWN5RXhjbHVz
aXZlbHlGcm9tTWFpbkRvY3VtZW50RG9tYWluOgorICAgICAgICAvLyBDYXN0IHJlcXVpcmVkIGJl
Y2F1c2Ugb2YgQ0ZOZXR3b3JrU1BJLgorICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8TlNIVFRQ
Q29va2llQWNjZXB0UG9saWN5PihOU0hUVFBDb29raWVBY2NlcHRQb2xpY3lFeGNsdXNpdmVseUZy
b21NYWluRG9jdW1lbnREb21haW4pOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgIH0KKworICAgIHJldHVybiBOU0hUVFBDb29raWVBY2NlcHRQb2xpY3lO
ZXZlcjsKK30KKworLSAodm9pZClmZXRjaENvb2tpZUFjY2VwdFBvbGljeToodm9pZCAoXikoTlNI
VFRQQ29va2llQWNjZXB0UG9saWN5KSljb21wbGV0aW9uSGFuZGxlcgoreworICAgIF9jb29raWVT
dG9yYWdlLT5nZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KFtoYW5kbGVyID0gYWRvcHROUyhbY29t
cGxldGlvbkhhbmRsZXIgY29weV0pXShXZWJLaXQ6OkhUVFBDb29raWVBY2NlcHRQb2xpY3kgcG9s
aWN5KSB7CisgICAgICAgIGF1dG8gcmF3SGFuZGxlciA9ICh2b2lkICheKShOU0hUVFBDb29raWVB
Y2NlcHRQb2xpY3kpKWhhbmRsZXIuZ2V0KCk7CisgICAgICAgIHJhd0hhbmRsZXIoa2l0Q29va2ll
UG9saWN5VG9OU0Nvb2tpZVBvbGljeShwb2xpY3kpKTsKKyAgICB9KTsKK30KKworI3ByYWdtYSBt
YXJrIFdLT2JqZWN0IHByb3RvY29sIGltcGxlbWVudGF0aW9uCisKKy0gKEFQSTo6T2JqZWN0Jilf
YXBpT2JqZWN0Cit7CisgICAgcmV0dXJuICpfY29va2llU3RvcmFnZTsKK30KKworQGVuZAorCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tI
VFRQQ29va2llU3RvcmFnZUludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLSFRUUENvb2tpZVN0b3JhZ2VJbnRlcm5hbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU4YTMwYmFk
MjhlYjFhMDI0NmMyNDFlZTc2NmZmYmYzNDE4MTBiYmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLSFRUUENvb2tpZVN0b3JhZ2VJbnRlcm5h
bC5oCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJXS0hUVFBDb29raWVT
dG9yYWdlLmgiCisKKyNpZiBXS19BUElfRU5BQkxFRAorCisjaW1wb3J0ICJBUElIVFRQQ29va2ll
U3RvcmFnZS5oIgorI2ltcG9ydCAiV0tPYmplY3QuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K2lubGluZSBXS0hUVFBDb29raWVTdG9yYWdlICp3cmFwcGVyKEFQSTo6SFRUUENvb2tpZVN0b3Jh
Z2UmIGNvb2tpZVN0b3JhZ2UpCit7CisgICAgQVNTRVJUKFtjb29raWVTdG9yYWdlLndyYXBwZXIo
KSBpc0tpbmRPZkNsYXNzOltXS0hUVFBDb29raWVTdG9yYWdlIGNsYXNzXV0pOworICAgIHJldHVy
biAoV0tIVFRQQ29va2llU3RvcmFnZSAqKWNvb2tpZVN0b3JhZ2Uud3JhcHBlcigpOworfQorCit9
CisKK0BpbnRlcmZhY2UgV0tIVFRQQ29va2llU3RvcmFnZSAoKSA8V0tPYmplY3Q+IHsKK0BwYWNr
YWdlCisgICAgQVBJOjpPYmplY3RTdG9yYWdlPEFQSTo6SFRUUENvb2tpZVN0b3JhZ2U+IF9jb29r
aWVTdG9yYWdlOworfQorQGVuZAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQppbmRleCAzZjQzYmZjNjVkZDc0MGI5
NjBjOGEwMWFlMzY0OTc0ODE0M2RmN2Q0Li44Zjg3ZGFjZTgyNzJkZWIzYzIyN2ZhMDUzMjU4MDM0
NTZjZmI0MjFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLUHJvY2Vzc1Bvb2wubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1Byb2Nlc3NQb29sLm1tCkBAIC0xOTYsNyArMTk2LDcgQEAgc3RhdGljIFdlYktpdDo6SFRU
UENvb2tpZUFjY2VwdFBvbGljeSB0b0hUVFBDb29raWVBY2NlcHRQb2xpY3koTlNIVFRQQ29va2ll
QWNjZXAKIAogLSAodm9pZClfc2V0Q29va2llQWNjZXB0UG9saWN5OihOU0hUVFBDb29raWVBY2Nl
cHRQb2xpY3kpcG9saWN5CiB7Ci0gICAgX3Byb2Nlc3NQb29sLT5zdXBwbGVtZW50PFdlYktpdDo6
V2ViQ29va2llTWFuYWdlclByb3h5PigpLT5zZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHRvSFRU
UENvb2tpZUFjY2VwdFBvbGljeShwb2xpY3kpKTsKKyAgICBfcHJvY2Vzc1Bvb2wtPnN1cHBsZW1l
bnQ8V2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk+KCktPnNldEhUVFBDb29raWVBY2NlcHRQ
b2xpY3koV2ViQ29yZTo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCksIHRvSFRUUENvb2tp
ZUFjY2VwdFBvbGljeShwb2xpY3kpLCBbXShXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3Ipe30p
OwogfQogCiAtIChpZClfb2JqZWN0Rm9yQnVuZGxlUGFyYW1ldGVyOihOU1N0cmluZyAqKXBhcmFt
ZXRlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YnNpdGVEYXRhU3RvcmUubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2Vic2l0ZURhdGFTdG9yZS5tbQppbmRleCA3MTM4MTllNDc0MGFkMzRkOTAxOGRjODkwMzcyMTkw
NDlmZGYxYmM3Li4yMzRmODBlYmZlNTg0Y2M4NjIzNTE1ZTkzN2ZmZjMzMzBiOWJhMjAyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFT
dG9yZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0
ZURhdGFTdG9yZS5tbQpAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgV0tfQVBJX0VOQUJMRUQKIAor
I2ltcG9ydCAiV0tIVFRQQ29va2llU3RvcmFnZUludGVybmFsLmgiCiAjaW1wb3J0ICJXS05TQXJy
YXkuaCIKICNpbXBvcnQgIldLV2Vic2l0ZURhdGFSZWNvcmRJbnRlcm5hbC5oIgogI2ltcG9ydCAi
V2Vic2l0ZURhdGFGZXRjaE9wdGlvbi5oIgpAQCAtMzgsNyArMzksNyBAQCBAaW1wbGVtZW50YXRp
b24gV0tXZWJzaXRlRGF0YVN0b3JlCiAKICsgKFdLV2Vic2l0ZURhdGFTdG9yZSAqKWRlZmF1bHRE
YXRhU3RvcmUKIHsKLSAgICByZXR1cm4gV2ViS2l0Ojp3cmFwcGVyKCpBUEk6OldlYnNpdGVEYXRh
U3RvcmU6OmRlZmF1bHREYXRhU3RvcmUoKS5nZXQoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6d3Jh
cHBlcihBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmUoKS5nZXQoKSk7CiB9
CiAKICsgKFdLV2Vic2l0ZURhdGFTdG9yZSAqKW5vblBlcnNpc3RlbnREYXRhU3RvcmUKQEAgLTE5
NCw2ICsxOTUsMTEgQEAgLSAodm9pZClfc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQ6
KEJPT0wpZW5hYmxlZAogICAgIF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCku
c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoZW5hYmxlZCk7CiB9CiAKKy0gKFdLSFRU
UENvb2tpZVN0b3JhZ2UgKilfaHR0cENvb2tpZVN0b3JhZ2UKK3sKKyAgICByZXR1cm4gV2ViS2l0
Ojp3cmFwcGVyKF93ZWJzaXRlRGF0YVN0b3JlLT5odHRwQ29va2llU3RvcmFnZSgpKTsKK30KKwog
QGVuZAogCiAjZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRl
LmgKaW5kZXggNDlkOWJlNmFkMTE5YjNhMTEyMTUyYjZiYWZlMzhhZGUyNjYyZTZlYi4uZDkzNDU3
ZjAyZGNlYzRkYzc3ZWFhNmFiOGEyMmNkZjBlYjA4NDI1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmgKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQ
cml2YXRlLmgKQEAgLTI5LDYgKzI5LDcgQEAKIAogTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KIAor
QGNsYXNzIFdLSFRUUENvb2tpZVN0b3JhZ2U7CiBAY2xhc3MgX1dLV2Vic2l0ZURhdGFTdG9yZUNv
bmZpZ3VyYXRpb247CiAKIHR5cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRlZ2VyLCBfV0tXZWJzaXRl
RGF0YVN0b3JlRmV0Y2hPcHRpb25zKSB7CkBAIC00Myw2ICs0NCw4IEBAIHR5cGVkZWYgTlNfT1BU
SU9OUyhOU1VJbnRlZ2VyLCBfV0tXZWJzaXRlRGF0YVN0b3JlRmV0Y2hPcHRpb25zKSB7CiAKIEBw
cm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFi
bGVkOikgQk9PTCBfcmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQgV0tfQVBJX0FWQUlMQUJM
RShtYWNvc3goMTAuMTIpLCBpb3MoMTAuMCkpOwogCitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVh
ZG9ubHkpIFdLSFRUUENvb2tpZVN0b3JhZ2UgKl9odHRwQ29va2llU3RvcmFnZSBXS19BUElfQVZB
SUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKwogQGVuZAogCiBO
U19BU1NVTUVfTk9OTlVMTF9FTkQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdENvb2tpZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0Q29va2llTWFuYWdlci5jcHAKaW5kZXggNzVhNjZlYzYxOGYwNWM4
MWJlODMxN2IyZmYyZDBkOTM0N2U5NTFhMy4uMjQ2YmRkODYzOTIzNzY4MTU1YmE0ZmM4YWE2YjRj
ZDgwNjcwNmIyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0Q29va2llTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0Q29va2llTWFuYWdlci5jcHAKQEAgLTE3OCw3ICsxNzgsNyBAQCB2b2lkIHdl
YmtpdF9jb29raWVfbWFuYWdlcl9zZXRfYWNjZXB0X3BvbGljeShXZWJLaXRDb29raWVNYW5hZ2Vy
KiBtYW5hZ2VyLCBXZWJLaQogICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX0NPT0tJRV9N
QU5BR0VSKG1hbmFnZXIpKTsKIAogICAgIGZvciAoYXV0byogcHJvY2Vzc1Bvb2wgOiB3ZWJraXRX
ZWJzaXRlRGF0YU1hbmFnZXJHZXRQcm9jZXNzUG9vbHMobWFuYWdlci0+cHJpdi0+ZGF0YU1hbmFn
ZXIpKQotICAgICAgICBwcm9jZXNzUG9vbC0+c3VwcGxlbWVudDxXZWJDb29raWVNYW5hZ2VyUHJv
eHk+KCktPnNldEhUVFBDb29raWVBY2NlcHRQb2xpY3kodG9IVFRQQ29va2llQWNjZXB0UG9saWN5
KHBvbGljeSkpOworICAgICAgICBwcm9jZXNzUG9vbC0+c3VwcGxlbWVudDxXZWJDb29raWVNYW5h
Z2VyUHJveHk+KCktPnNldEhUVFBDb29raWVBY2NlcHRQb2xpY3kodG9IVFRQQ29va2llQWNjZXB0
UG9saWN5KHBvbGljeSksIDApOwogfQogCiBzdGF0aWMgdm9pZCB3ZWJraXRDb29raWVNYW5hZ2Vy
R2V0QWNjZXB0UG9saWN5Q2FsbGJhY2soV0tIVFRQQ29va2llQWNjZXB0UG9saWN5IHBvbGljeSwg
V0tFcnJvclJlZiwgdm9pZCogY29udGV4dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcAppbmRleCA0
OGNhZGM3MTI0ZjlkYmU2ODViYmRlNDhjYjNmZWUzZDE4MzkxNmQ4Li5hODMxODRhZjkwMmI0NzVj
NDhlOGQwYWNmNzgwNjE3MWNiNGZiZWYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwCkBAIC03
MzAsNyArNzMwLDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6YWRkU2luZ2xlQ29va2ll
KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW4KIAogICAgIC8vIEZJWE1FOiBV
c2luZyBhY3RpdmVVUkwgaGVyZSB0d2ljZSBpcyBiYXNpY2FsbHkgc2F5aW5nICJ0aGlzIGlzIGFs
d2F5cyBpbiB0aGUgY29udGV4dCBvZiB0aGUgbWFpbiBkb2N1bWVudCIKICAgICAvLyB3aGljaCBw
cm9iYWJseSBpc24ndCBhY2N1cmF0ZS4KLSAgICBjb29raWVNYW5hZ2VyLT5zZXRDb29raWVzKFdl
YkNvcmU6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpLCB7IGNvb2tpZSB9LCBhY3RpdmVV
UkwsIGFjdGl2ZVVSTCk7CisgICAgY29va2llTWFuYWdlci0+c2V0Q29va2llcyhXZWJDb3JlOjpT
ZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSwgeyBjb29raWUgfSwgYWN0aXZlVVJMLCBhY3Rp
dmVVUkwsIFtdKENhbGxiYWNrQmFzZTo6RXJyb3Ipe30pOwogCiAgICAgY2FsbGJhY2stPnNlbmRT
dWNjZXNzKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29v
a2llTWFuYWdlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVN
YW5hZ2VyUHJveHkuY3BwCmluZGV4IDJlYWE1Y2UzYmZhNTM1OTg0ZGYzZTBlNmM3NWRhNWIyMTky
NDY3MTkuLmUwMjNiODI1ZWU5ZjQ5MGQyMDdkZWEyOWE3ZjdmNTMxN2I4MmEzZWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkuY3BwCkBA
IC0zMiw4ICszMiwxMSBAQAogI2luY2x1ZGUgIldlYkNvb2tpZU1hbmFnZXJNZXNzYWdlcy5oIgog
I2luY2x1ZGUgIldlYkNvb2tpZU1hbmFnZXJQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2Vi
UHJvY2Vzc1Bvb2wuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0Nvb2tpZS5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvU2VjdXJpdHlPcmlnaW5EYXRhLmg+CiAKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwor
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY29uc3QgY2hhciogV2ViQ29va2llTWFuYWdlclByb3h5
OjpzdXBwbGVtZW50TmFtZSgpCkBAIC05NCw3ICs5Nyw3IEBAIHZvaWQgV2ViQ29va2llTWFuYWdl
clByb3h5OjpkZXJlZldlYkNvbnRleHRTdXBwbGVtZW50KCkKICAgICBBUEk6Ok9iamVjdDo6ZGVy
ZWYoKTsKIH0KIAotdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmdldEhvc3RuYW1lc1dpdGhD
b29raWVzKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIEZ1bmN0aW9uPHZvaWQgKEFQSTo6
QXJyYXkqLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQordm9pZCBX
ZWJDb29raWVNYW5hZ2VyUHJveHk6OmdldEhvc3RuYW1lc1dpdGhDb29raWVzKFNlc3Npb25JRCBz
ZXNzaW9uSUQsIEZ1bmN0aW9uPHZvaWQgKEFQSTo6QXJyYXkqLCBDYWxsYmFja0Jhc2U6OkVycm9y
KT4mJiBjYWxsYmFja0Z1bmN0aW9uKQogewogICAgIGF1dG8gY2FsbGJhY2sgPSBBcnJheUNhbGxi
YWNrOjpjcmVhdGUoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSk7CiAgICAgdWludDY0X3QgY2Fs
bGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7CkBAIC0xMTQsMzcgKzExNyw5NiBAQCB2
b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGlkR2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoY29u
c3QgVmVjdG9yPFN0cmluZz4mIGhvcwogICAgIGNhbGxiYWNrLT5wZXJmb3JtQ2FsbGJhY2tXaXRo
UmV0dXJuVmFsdWUoQVBJOjpBcnJheTo6Y3JlYXRlU3RyaW5nQXJyYXkoaG9zdG5hbWVzKS5wdHIo
KSk7CiB9CiAKLXZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpkZWxldGVDb29raWVzRm9ySG9z
dG5hbWUoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBob3N0bmFt
ZSkKK3ZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpkZWxldGVDb29raWVzRm9ySG9zdG5hbWUo
U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBob3N0bmFtZSkKIHsKICAgICBwcm9j
ZXNzUG9vbCgpLT5zZW5kVG9OZXR3b3JraW5nUHJvY2Vzc1JlbGF1bmNoaW5nSWZOZWNlc3Nhcnko
TWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OkRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZShzZXNz
aW9uSUQsIGhvc3RuYW1lKSk7CiB9CiAKLXZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpkZWxl
dGVBbGxDb29raWVzKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQpCit2b2lkIFdlYkNvb2tp
ZU1hbmFnZXJQcm94eTo6ZGVsZXRlQWxsQ29va2llcyhTZXNzaW9uSUQgc2Vzc2lvbklEKQogewog
ICAgIHByb2Nlc3NQb29sKCktPnNlbmRUb05ldHdvcmtpbmdQcm9jZXNzUmVsYXVuY2hpbmdJZk5l
Y2Vzc2FyeShNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6RGVsZXRlQWxsQ29va2llcyhzZXNz
aW9uSUQpKTsKIH0KIAotdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRlbGV0ZUFsbENvb2tp
ZXNNb2RpZmllZFNpbmNlKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHN0ZDo6Y2hyb25v
OjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgdGltZSkKK3ZvaWQgV2ViQ29va2llTWFuYWdlclBy
b3h5OjpkZWxldGVDb29raWUoU2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgQ29va2llJiBjb29r
aWUsIEZ1bmN0aW9uPHZvaWQgKENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rp
b24pCit7CisgICAgYXV0byBjYWxsYmFjayA9IFZvaWRDYWxsYmFjazo6Y3JlYXRlKFdURk1vdmUo
Y2FsbGJhY2tGdW5jdGlvbikpOworICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+
Y2FsbGJhY2tJRCgpOworICAgIG1fdm9pZENhbGxiYWNrcy5zZXQoY2FsbGJhY2tJRCwgV1RGTW92
ZShjYWxsYmFjaykpOworCisgICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvTmV0d29ya2luZ1Byb2Nl
c3NSZWxhdW5jaGluZ0lmTmVjZXNzYXJ5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpEZWxl
dGVDb29raWUoc2Vzc2lvbklELCBjb29raWUsIGNhbGxiYWNrSUQpKTsKK30KKwordm9pZCBXZWJD
b29raWVNYW5hZ2VyUHJveHk6OmRlbGV0ZUFsbENvb2tpZXNNb2RpZmllZFNpbmNlKFNlc3Npb25J
RCBzZXNzaW9uSUQsIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgdGltZSwg
RnVuY3Rpb248dm9pZCAoQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikK
K3sKKyAgICBhdXRvIGNhbGxiYWNrID0gVm9pZENhbGxiYWNrOjpjcmVhdGUoV1RGTW92ZShjYWxs
YmFja0Z1bmN0aW9uKSk7CisgICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxs
YmFja0lEKCk7CisgICAgbV92b2lkQ2FsbGJhY2tzLnNldChjYWxsYmFja0lELCBXVEZNb3ZlKGNh
bGxiYWNrKSk7CisKKyAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9OZXR3b3JraW5nUHJvY2Vzc1Jl
bGF1bmNoaW5nSWZOZWNlc3NhcnkoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OkRlbGV0ZUFs
bENvb2tpZXNNb2RpZmllZFNpbmNlKHNlc3Npb25JRCwgdGltZSwgY2FsbGJhY2tJRCkpOworfQor
Cit2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6c2V0Q29va2llKFNlc3Npb25JRCBzZXNzaW9u
SUQsIGNvbnN0IENvb2tpZSYgY29va2llLCBGdW5jdGlvbjx2b2lkIChDYWxsYmFja0Jhc2U6OkVy
cm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQogewotICAgIHByb2Nlc3NQb29sKCktPnNlbmRUb05l
dHdvcmtpbmdQcm9jZXNzUmVsYXVuY2hpbmdJZk5lY2Vzc2FyeShNZXNzYWdlczo6V2ViQ29va2ll
TWFuYWdlcjo6RGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2Uoc2Vzc2lvbklELCB0aW1lKSk7
CisgICAgYXV0byBjYWxsYmFjayA9IFZvaWRDYWxsYmFjazo6Y3JlYXRlKFdURk1vdmUoY2FsbGJh
Y2tGdW5jdGlvbikpOworICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJh
Y2tJRCgpOworICAgIG1fdm9pZENhbGxiYWNrcy5zZXQoY2FsbGJhY2tJRCwgV1RGTW92ZShjYWxs
YmFjaykpOworCisgICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvTmV0d29ya2luZ1Byb2Nlc3NSZWxh
dW5jaGluZ0lmTmVjZXNzYXJ5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpTZXRDb29raWUo
c2Vzc2lvbklELCBjb29raWUsIGNhbGxiYWNrSUQpKTsKIH0KIAotdm9pZCBXZWJDb29raWVNYW5h
Z2VyUHJveHk6OnNldENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3Qg
VmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mIGNvb2tpZXMsIGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJs
LCBjb25zdCBXZWJDb3JlOjpVUkwmIG1haW5Eb2N1bWVudFVSTCkKK3ZvaWQgV2ViQ29va2llTWFu
YWdlclByb3h5OjpzZXRDb29raWVzKFNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxD
b29raWU+JiBjb29raWVzLCBjb25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBtYWluRG9jdW1lbnRV
UkwsIEZ1bmN0aW9uPHZvaWQgKENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rp
b24pCiB7Ci0gICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvTmV0d29ya2luZ1Byb2Nlc3NSZWxhdW5j
aGluZ0lmTmVjZXNzYXJ5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpTZXRDb29raWVzKHNl
c3Npb25JRCwgY29va2llcywgdXJsLCBtYWluRG9jdW1lbnRVUkwpKTsKKyAgICBhdXRvIGNhbGxi
YWNrID0gVm9pZENhbGxiYWNrOjpjcmVhdGUoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSk7Cisg
ICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7CisgICAgbV92
b2lkQ2FsbGJhY2tzLnNldChjYWxsYmFja0lELCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisKKyAgICBw
cm9jZXNzUG9vbCgpLT5zZW5kVG9OZXR3b3JraW5nUHJvY2Vzc1JlbGF1bmNoaW5nSWZOZWNlc3Nh
cnkoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OlNldENvb2tpZXMoc2Vzc2lvbklELCBjb29r
aWVzLCB1cmwsIG1haW5Eb2N1bWVudFVSTCwgY2FsbGJhY2tJRCkpOwogfQogCi12b2lkIFdlYkNv
b2tpZU1hbmFnZXJQcm94eTo6c3RhcnRPYnNlcnZpbmdDb29raWVDaGFuZ2VzKFdlYkNvcmU6OlNl
c3Npb25JRCBzZXNzaW9uSUQpCit2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6Z2V0QWxsQ29v
a2llcyhTZXNzaW9uSUQgc2Vzc2lvbklELCBGdW5jdGlvbjx2b2lkIChjb25zdCBWZWN0b3I8Q29v
a2llPiYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCit7CisgICAg
YXV0byBjYWxsYmFjayA9IEdldENvb2tpZXNDYWxsYmFjazo6Y3JlYXRlKFdURk1vdmUoY2FsbGJh
Y2tGdW5jdGlvbikpOworICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJh
Y2tJRCgpOworICAgIG1fZ2V0Q29va2llc0NhbGxiYWNrcy5zZXQoY2FsbGJhY2tJRCwgV1RGTW92
ZShjYWxsYmFjaykpOworCisgICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvTmV0d29ya2luZ1Byb2Nl
c3NSZWxhdW5jaGluZ0lmTmVjZXNzYXJ5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpHZXRB
bGxDb29raWVzKHNlc3Npb25JRCwgY2FsbGJhY2tJRCkpOworfQorCit2b2lkIFdlYkNvb2tpZU1h
bmFnZXJQcm94eTo6Z2V0Q29va2llcyhTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIHVy
bCwgRnVuY3Rpb248dm9pZCAoY29uc3QgVmVjdG9yPENvb2tpZT4mLCBDYWxsYmFja0Jhc2U6OkVy
cm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQoreworICAgIGF1dG8gY2FsbGJhY2sgPSBHZXRDb29r
aWVzQ2FsbGJhY2s6OmNyZWF0ZShXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pKTsKKyAgICB1aW50
NjRfdCBjYWxsYmFja0lEID0gY2FsbGJhY2stPmNhbGxiYWNrSUQoKTsKKyAgICBtX2dldENvb2tp
ZXNDYWxsYmFja3Muc2V0KGNhbGxiYWNrSUQsIFdURk1vdmUoY2FsbGJhY2spKTsKKworICAgIHBy
b2Nlc3NQb29sKCktPnNlbmRUb05ldHdvcmtpbmdQcm9jZXNzUmVsYXVuY2hpbmdJZk5lY2Vzc2Fy
eShNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6R2V0Q29va2llcyhzZXNzaW9uSUQsIHVybCwg
Y2FsbGJhY2tJRCkpOworfQorCit2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGlkU2V0Q29v
a2llcyh1aW50NjRfdCBjYWxsYmFja0lEKQoreworICAgIG1fdm9pZENhbGxiYWNrcy50YWtlKGNh
bGxiYWNrSUQpLT5wZXJmb3JtQ2FsbGJhY2soKTsKK30KKwordm9pZCBXZWJDb29raWVNYW5hZ2Vy
UHJveHk6OmRpZEdldENvb2tpZXMoY29uc3QgVmVjdG9yPENvb2tpZT4mIGNvb2tpZXMsIHVpbnQ2
NF90IGNhbGxiYWNrSUQpCit7CisgICAgbV9nZXRDb29raWVzQ2FsbGJhY2tzLnRha2UoY2FsbGJh
Y2tJRCktPnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZShjb29raWVzKTsKK30KKwordm9p
ZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRpZERlbGV0ZUNvb2tpZXModWludDY0X3QgY2FsbGJh
Y2tJRCkKK3sKKyAgICBtX3ZvaWRDYWxsYmFja3MudGFrZShjYWxsYmFja0lEKS0+cGVyZm9ybUNh
bGxiYWNrKCk7Cit9CisKK3ZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpzdGFydE9ic2Vydmlu
Z0Nvb2tpZUNoYW5nZXMoU2Vzc2lvbklEIHNlc3Npb25JRCkKIHsKICAgICBwcm9jZXNzUG9vbCgp
LT5zZW5kVG9OZXR3b3JraW5nUHJvY2Vzc1JlbGF1bmNoaW5nSWZOZWNlc3NhcnkoTWVzc2FnZXM6
OldlYkNvb2tpZU1hbmFnZXI6OlN0YXJ0T2JzZXJ2aW5nQ29va2llQ2hhbmdlcyhzZXNzaW9uSUQp
KTsKIH0KIAotdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OnN0b3BPYnNlcnZpbmdDb29raWVD
aGFuZ2VzKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQpCit2b2lkIFdlYkNvb2tpZU1hbmFn
ZXJQcm94eTo6c3RvcE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMoU2Vzc2lvbklEIHNlc3Npb25JRCkK
IHsKICAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9OZXR3b3JraW5nUHJvY2Vzc1JlbGF1bmNoaW5n
SWZOZWNlc3NhcnkoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OlN0b3BPYnNlcnZpbmdDb29r
aWVDaGFuZ2VzKHNlc3Npb25JRCkpOwogfQogCi12b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6
c2V0Q29va2llT2JzZXJ2ZXJDYWxsYmFjayhXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBz
dGQ6OmZ1bmN0aW9uPHZvaWQgKCk+JiYgY2FsbGJhY2spCit2b2lkIFdlYkNvb2tpZU1hbmFnZXJQ
cm94eTo6c2V0Q29va2llT2JzZXJ2ZXJDYWxsYmFjayhTZXNzaW9uSUQgc2Vzc2lvbklELCBzdGQ6
OmZ1bmN0aW9uPHZvaWQgKCk+JiYgY2FsbGJhY2spCiB7CiAgICAgaWYgKGNhbGxiYWNrKQogICAg
ICAgICBtX2Nvb2tpZU9ic2VydmVycy5zZXQoc2Vzc2lvbklELCBXVEZNb3ZlKGNhbGxiYWNrKSk7
CkBAIC0xNTIsMTQgKzIxNCwxNCBAQCB2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6c2V0Q29v
a2llT2JzZXJ2ZXJDYWxsYmFjayhXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbgogICAgICAgICBt
X2Nvb2tpZU9ic2VydmVycy5yZW1vdmUoc2Vzc2lvbklEKTsKIH0KIAotdm9pZCBXZWJDb29raWVN
YW5hZ2VyUHJveHk6OmNvb2tpZXNEaWRDaGFuZ2UoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25J
RCkKK3ZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5Ojpjb29raWVzRGlkQ2hhbmdlKFNlc3Npb25J
RCBzZXNzaW9uSUQpCiB7CiAgICAgbV9jbGllbnQuY29va2llc0RpZENoYW5nZSh0aGlzKTsKICAg
ICBpZiAoYXV0byBjYWxsYmFjayA9IG1fY29va2llT2JzZXJ2ZXJzLmdldChzZXNzaW9uSUQpKQog
ICAgICAgICBjYWxsYmFjaygpOwogfQogCi12b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6c2V0
SFRUUENvb2tpZUFjY2VwdFBvbGljeShIVFRQQ29va2llQWNjZXB0UG9saWN5IHBvbGljeSkKK3Zv
aWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpzZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KFNlc3Np
b25JRCwgSFRUUENvb2tpZUFjY2VwdFBvbGljeSBwb2xpY3ksIEZ1bmN0aW9uPHZvaWQgKENhbGxi
YWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7CiAjaWYgUExBVEZPUk0oQ09D
T0EpCiAgICAgaWYgKCFwcm9jZXNzUG9vbCgpLT5pc1VzaW5nVGVzdGluZ05ldHdvcmtTZXNzaW9u
KCkpCkBAIC0xNzIsMTEgKzIzNCwxNiBAQCB2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6c2V0
SFRUUENvb2tpZUFjY2VwdFBvbGljeShIVFRQQ29va2llQWNjZXB0UG9saWN5IHBvbAogICAgIC8v
IFRoZSBwb2xpY3kgaXMgbm90IHNlbnQgdG8gbmV3bHkgY3JlYXRlZCBwcm9jZXNzZXMgKG9ubHkg
U291cCBkb2VzIHRoYXQgdmlhIHNldEluaXRpYWxIVFRQQ29va2llQWNjZXB0UG9saWN5KCkpLiBU
aGlzIGlzIG5vdCBhIHNlcmlvdXMgcHJvYmxlbSwgYmVjYXVzZToKICAgICAvLyAtIFdoZW4gdGVz
dGluZywgd2Ugb25seSBoYXZlIG9uZSBXZWJQcm9jZXNzIGFuZCBvbmUgTmV0d29ya1Byb2Nlc3Ms
IGFuZCBXZWJLaXRUZXN0UnVubmVyIG5ldmVyIHJlc3RhcnRzIHRoZW07CiAgICAgLy8gLSBXaGVu
IG5vdCB0ZXN0aW5nLCBDb2NvYSBoYXMgdGhlIHBvbGljeSBwZXJzaXN0ZWQsIGFuZCB0aHVzIG5l
dyBwcm9jZXNzZXMgdXNlIGl0IChldmVuIGZvciBlcGhlbWVyYWwgc2Vzc2lvbnMpLgotICAgIHBy
b2Nlc3NQb29sKCktPnNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViQ29va2llTWFuYWdl
cjo6U2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShwb2xpY3kpKTsKLSAgICBwcm9jZXNzUG9vbCgp
LT5zZW5kVG9OZXR3b3JraW5nUHJvY2VzcyhNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6U2V0
SFRUUENvb2tpZUFjY2VwdFBvbGljeShwb2xpY3kpKTsKKyAgICBwcm9jZXNzUG9vbCgpLT5zZW5k
VG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OlNldEhUVFBDb29raWVB
Y2NlcHRQb2xpY3kocG9saWN5LCAwKSk7CisKKyAgICBhdXRvIGNhbGxiYWNrID0gVm9pZENhbGxi
YWNrOjpjcmVhdGUoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSk7CisgICAgdWludDY0X3QgY2Fs
bGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7CisgICAgbV92b2lkQ2FsbGJhY2tzLnNl
dChjYWxsYmFja0lELCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisKKyAgICBwcm9jZXNzUG9vbCgpLT5z
ZW5kVG9OZXR3b3JraW5nUHJvY2VzcyhNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6U2V0SFRU
UENvb2tpZUFjY2VwdFBvbGljeShwb2xpY3ksIGNhbGxiYWNrSUQpKTsKIH0KIAotdm9pZCBXZWJD
b29raWVNYW5hZ2VyUHJveHk6OmdldEhUVFBDb29raWVBY2NlcHRQb2xpY3koRnVuY3Rpb248dm9p
ZCAoSFRUUENvb2tpZUFjY2VwdFBvbGljeSwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+IGNhbGxiYWNr
RnVuY3Rpb24pCit2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6Z2V0SFRUUENvb2tpZUFjY2Vw
dFBvbGljeShTZXNzaW9uSUQsIEZ1bmN0aW9uPHZvaWQgKEhUVFBDb29raWVBY2NlcHRQb2xpY3ks
IENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7CiAgICAgYXV0byBj
YWxsYmFjayA9IEhUVFBDb29raWVBY2NlcHRQb2xpY3lDYWxsYmFjazo6Y3JlYXRlKFdURk1vdmUo
Y2FsbGJhY2tGdW5jdGlvbikpOwogCkBAIC0xODgsMTMgKzI1NSwxMiBAQCB2b2lkIFdlYkNvb2tp
ZU1hbmFnZXJQcm94eTo6Z2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShGdW5jdGlvbjx2b2lkIChI
VFRQQ29va2llQQogCiB2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGlkR2V0SFRUUENvb2tp
ZUFjY2VwdFBvbGljeSh1aW50MzJfdCBwb2xpY3ksIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiB7Ci0g
ICAgUmVmUHRyPEhUVFBDb29raWVBY2NlcHRQb2xpY3lDYWxsYmFjaz4gY2FsbGJhY2sgPSBtX2h0
dHBDb29raWVBY2NlcHRQb2xpY3lDYWxsYmFja3MudGFrZShjYWxsYmFja0lEKTsKLSAgICBpZiAo
IWNhbGxiYWNrKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBMb2cgZXJyb3Igb3IgYXNzZXJ0LgotICAg
ICAgICByZXR1cm47Ci0gICAgfQorICAgIG1faHR0cENvb2tpZUFjY2VwdFBvbGljeUNhbGxiYWNr
cy50YWtlKGNhbGxiYWNrSUQpLT5wZXJmb3JtQ2FsbGJhY2tXaXRoUmV0dXJuVmFsdWUocG9saWN5
KTsKK30KIAotICAgIGNhbGxiYWNrLT5wZXJmb3JtQ2FsbGJhY2tXaXRoUmV0dXJuVmFsdWUocG9s
aWN5KTsKK3ZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpkaWRTZXRIVFRQQ29va2llQWNjZXB0
UG9saWN5KHVpbnQ2NF90IGNhbGxiYWNrSUQpCit7CisgICAgbV92b2lkQ2FsbGJhY2tzLnRha2Uo
Y2FsbGJhY2tJRCktPnBlcmZvcm1DYWxsYmFjaygpOwogfQogCiB2b2lkIFdlYkNvb2tpZU1hbmFn
ZXJQcm94eTo6c2V0Q29va2llU3RvcmFnZVBhcnRpdGlvbmluZ0VuYWJsZWQoYm9vbCBlbmFibGVk
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQ
cm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5o
CmluZGV4IGNmNzk4ZDdjY2NjNzE1NDE1OWI5ZDYxMmRmZmRiYjg2YWVkMWZlNzEuLmZkZjg5MWUx
NTg5YWMwZGQ3Mjk2ZjkzYTdmNGY3ZmM3NWZlMjkxZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmgKQEAgLTU1LDYgKzU1LDcgQEAgY2xh
c3MgV2ViUHJvY2Vzc1Byb3h5OwogCiB0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxBUEk6OkFycmF5
Kj4gQXJyYXlDYWxsYmFjazsKIHR5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPEhUVFBDb29raWVBY2Nl
cHRQb2xpY3k+IEhUVFBDb29raWVBY2NlcHRQb2xpY3lDYWxsYmFjazsKK3R5cGVkZWYgR2VuZXJp
Y0NhbGxiYWNrPGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jj4gR2V0Q29va2llc0NhbGxi
YWNrOwogCiBjbGFzcyBXZWJDb29raWVNYW5hZ2VyUHJveHkgOiBwdWJsaWMgQVBJOjpPYmplY3RJ
bXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpDb29raWVNYW5hZ2VyPiwgcHVibGljIFdlYkNvbnRleHRT
dXBwbGVtZW50LCBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKIHB1YmxpYzoKQEAgLTY2
LDE0ICs2NywyMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBpbml0aWFsaXplQ2xpZW50KGNvbnN0IFdL
Q29va2llTWFuYWdlckNsaWVudEJhc2UqKTsKICAgICAKICAgICB2b2lkIGdldEhvc3RuYW1lc1dp
dGhDb29raWVzKFdlYkNvcmU6OlNlc3Npb25JRCwgRnVuY3Rpb248dm9pZCAoQVBJOjpBcnJheSos
IENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKKyAgICB2b2lkIGRlbGV0ZUNvb2tpZShXZWJDb3Jl
OjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OkNvb2tpZSYsIEZ1bmN0aW9uPHZvaWQgKENhbGxi
YWNrQmFzZTo6RXJyb3IpPiYmKTsKICAgICB2b2lkIGRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZShX
ZWJDb3JlOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpOwogICAgIHZvaWQgZGVs
ZXRlQWxsQ29va2llcyhXZWJDb3JlOjpTZXNzaW9uSUQpOwotICAgIHZvaWQgZGVsZXRlQWxsQ29v
a2llc01vZGlmaWVkU2luY2UoV2ViQ29yZTo6U2Vzc2lvbklELCBzdGQ6OmNocm9ubzo6c3lzdGVt
X2Nsb2NrOjp0aW1lX3BvaW50KTsKKyAgICB2b2lkIGRlbGV0ZUFsbENvb2tpZXNNb2RpZmllZFNp
bmNlKFdlYkNvcmU6OlNlc3Npb25JRCwgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9w
b2ludCwgRnVuY3Rpb248dm9pZCAoQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwogCi0gICAgdm9p
ZCBzZXRDb29raWVzKFdlYkNvcmU6OlNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNv
b2tpZT4mLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXZWJDb3JlOjpVUkwmIG1haW5Eb2N1
bWVudFVSTCk7CisgICAgdm9pZCBzZXRDb29raWUoV2ViQ29yZTo6U2Vzc2lvbklELCBjb25zdCBX
ZWJDb3JlOjpDb29raWUmLCBGdW5jdGlvbjx2b2lkIChDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7
CisgICAgdm9pZCBzZXRDb29raWVzKFdlYkNvcmU6OlNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFdl
YkNvcmU6OkNvb2tpZT4mLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXZWJDb3JlOjpVUkwm
IG1haW5Eb2N1bWVudFVSTCwgRnVuY3Rpb248dm9pZCAoQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYp
OworCisgICAgdm9pZCBnZXRBbGxDb29raWVzKFdlYkNvcmU6OlNlc3Npb25JRCwgRnVuY3Rpb248
dm9pZCAoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mLCBDYWxsYmFja0Jhc2U6OkVycm9y
KT4mJiBjb21wbGV0aW9uSGFuZGxlcik7CisgICAgdm9pZCBnZXRDb29raWVzKFdlYkNvcmU6OlNl
c3Npb25JRCwgY29uc3QgV2ViQ29yZTo6VVJMJiwgRnVuY3Rpb248dm9pZCAoY29uc3QgVmVjdG9y
PFdlYkNvcmU6OkNvb2tpZT4mLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcik7CisKKyAgICB2b2lkIHNldEhUVFBDb29raWVBY2NlcHRQb2xpY3koV2ViQ29yZTo6U2Vz
c2lvbklELCBIVFRQQ29va2llQWNjZXB0UG9saWN5LCBGdW5jdGlvbjx2b2lkIChDYWxsYmFja0Jh
c2U6OkVycm9yKT4mJik7CisgICAgdm9pZCBnZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KFdlYkNv
cmU6OlNlc3Npb25JRCwgRnVuY3Rpb248dm9pZCAoSFRUUENvb2tpZUFjY2VwdFBvbGljeSwgQ2Fs
bGJhY2tCYXNlOjpFcnJvcik+JiYpOwogCi0gICAgdm9pZCBzZXRIVFRQQ29va2llQWNjZXB0UG9s
aWN5KEhUVFBDb29raWVBY2NlcHRQb2xpY3kpOwotICAgIHZvaWQgZ2V0SFRUUENvb2tpZUFjY2Vw
dFBvbGljeShGdW5jdGlvbjx2b2lkIChIVFRQQ29va2llQWNjZXB0UG9saWN5LCBDYWxsYmFja0Jh
c2U6OkVycm9yKT4pOwogICAgIHZvaWQgc2V0Q29va2llU3RvcmFnZVBhcnRpdGlvbmluZ0VuYWJs
ZWQoYm9vbCk7CiAKICAgICB2b2lkIHN0YXJ0T2JzZXJ2aW5nQ29va2llQ2hhbmdlcyhXZWJDb3Jl
OjpTZXNzaW9uSUQpOwpAQCAtOTUsNiArMTAyLDExIEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRH
ZXRIb3N0bmFtZXNXaXRoQ29va2llcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYsIHVpbnQ2NF90IGNh
bGxiYWNrSUQpOwogICAgIHZvaWQgZGlkR2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSh1aW50MzJf
dCBwb2xpY3ksIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwogCisgICAgdm9pZCBkaWRTZXRIVFRQQ29v
a2llQWNjZXB0UG9saWN5KHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAgIHZvaWQgZGlkU2V0Q29v
a2llcyh1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICB2b2lkIGRpZEdldENvb2tpZXMoY29uc3Qg
VmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICB2b2lk
IGRpZERlbGV0ZUNvb2tpZXModWludDY0X3QgY2FsbGJhY2tJRCk7CisKICAgICB2b2lkIGNvb2tp
ZXNEaWRDaGFuZ2UoV2ViQ29yZTo6U2Vzc2lvbklEKTsKIAogICAgIC8vIFdlYkNvbnRleHRTdXBw
bGVtZW50CkBAIC0xMTMsNiArMTI1LDggQEAgcHJpdmF0ZToKIAogICAgIEhhc2hNYXA8dWludDY0
X3QsIFJlZlB0cjxBcnJheUNhbGxiYWNrPj4gbV9hcnJheUNhbGxiYWNrczsKICAgICBIYXNoTWFw
PHVpbnQ2NF90LCBSZWZQdHI8SFRUUENvb2tpZUFjY2VwdFBvbGljeUNhbGxiYWNrPj4gbV9odHRw
Q29va2llQWNjZXB0UG9saWN5Q2FsbGJhY2tzOworICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0
cjxWb2lkQ2FsbGJhY2s+PiBtX3ZvaWRDYWxsYmFja3M7CisgICAgSGFzaE1hcDx1aW50NjRfdCwg
UmVmUHRyPEdldENvb2tpZXNDYWxsYmFjaz4+IG1fZ2V0Q29va2llc0NhbGxiYWNrczsKIAogICAg
IEhhc2hNYXA8V2ViQ29yZTo6U2Vzc2lvbklELCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+PiBtX2Nv
b2tpZU9ic2VydmVyczsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YkNvb2tpZU1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJDb29raWVNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KaW5kZXggMTJlMDA5MDE4Yjc0ZGM1
ZTlhNmQ2MGRiNjhkMmFiNDRlMmYxYTQzZi4uZGNjYmNmMjllMDc2Njk3NGI3NDM1ODcyMTJiMTJj
M2JmNGNiYzFlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tp
ZU1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViQ29va2llTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCkBAIC0yMyw2ICsyMywxMSBAQAogbWVz
c2FnZXMgLT4gV2ViQ29va2llTWFuYWdlclByb3h5IHsKICAgICBEaWRHZXRIb3N0bmFtZXNXaXRo
Q29va2llcyhWZWN0b3I8U3RyaW5nPiBob3N0bmFtZXMsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwog
ICAgIERpZEdldEhUVFBDb29raWVBY2NlcHRQb2xpY3kodWludDMyX3QgcG9saWN5LCB1aW50NjRf
dCBjYWxsYmFja0lEKTsKLSAgICAKKworICAgIERpZFNldEhUVFBDb29raWVBY2NlcHRQb2xpY3ko
dWludDY0X3QgY2FsbGJhY2tJRCk7CisgICAgRGlkRGVsZXRlQ29va2llcyh1aW50NjRfdCBjYWxs
YmFja0lEKTsKKyAgICBEaWRTZXRDb29raWVzKHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAgIERp
ZEdldENvb2tpZXMoVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4gY29va2llcywgdWludDY0X3QgY2Fs
bGJhY2tJRCk7CisKICAgICBDb29raWVzRGlkQ2hhbmdlKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNz
aW9uSUQpCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRnJhbWVQ
cm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuaAppbmRleCA2
YmY5OTM4NjJiN2VhY2E1MWE3NWI1OTAwZmEzZjc0MTY3OWJkNWZlLi41NWI1YjY3ZTBiMmY5NWI5
NzIyNDVkZTVjOGRjY2E3OGI4ZDcxNmZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViRnJhbWVQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJG
cmFtZVByb3h5LmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJXZWJGcmFtZUxpc3RlbmVy
UHJveHkuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lTG9hZGVyVHlwZXMuaD4KICNpbmNsdWRl
IDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0
Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4IGY2OTYyMzFiYTA1
OTg2MWUxOGZlZmM0YWI2ZmJmODIzMTM2OTFlNzcuLmFhYzZiYTViM2MxNTIxODI4N2I5ZDM1ODA2
ODU3ZjVkOWQwNTliZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
b29sLmNwcApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkFQSUF1dG9tYXRpb25DbGllbnQu
aCIKICNpbmNsdWRlICJBUElDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQuaCIKICNpbmNsdWRl
ICJBUElEb3dubG9hZENsaWVudC5oIgorI2luY2x1ZGUgIkFQSUhUVFBDb29raWVTdG9yYWdlLmgi
CiAjaW5jbHVkZSAiQVBJTGVnYWN5Q29udGV4dEhpc3RvcnlDbGllbnQuaCIKICNpbmNsdWRlICJB
UElQYWdlQ29uZmlndXJhdGlvbi5oIgogI2luY2x1ZGUgIkFQSVByb2Nlc3NQb29sQ29uZmlndXJh
dGlvbi5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
b29sLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAppbmRleCA4
ODVhZDNjZWJiMzYxNzlkMWQ2ZGNiNjc1ZWM1YjgxMzlkYjY1ZjY5Li5lMGUxOTI2ZDUzZTQxODI4
MmMyZWIxY2JiMGQ1MWM1MWNlMGJlNTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Bvb2wuaApAQCAtNzYsNiArNzYsNyBAQCBuYW1lc3BhY2UgQVBJIHsKIGNsYXNzIEF1
dG9tYXRpb25DbGllbnQ7CiBjbGFzcyBDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQ7CiBjbGFz
cyBEb3dubG9hZENsaWVudDsKK2NsYXNzIEhUVFBDb29raWVTdG9yYWdlOwogY2xhc3MgTGVnYWN5
Q29udGV4dEhpc3RvcnlDbGllbnQ7CiBjbGFzcyBQYWdlQ29uZmlndXJhdGlvbjsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0
b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0
YVN0b3JlLmNwcAppbmRleCA3YmFhZjg1NDU0MmQ2NzhhZWZlYWY0ZjI1OGFkN2YxNGNhMjA1MWVj
Li42MzMyZjdkYjg2MGJiMzNkNTAwOWM0ZTU3YzA1ZWRkMmExZDMyMTBlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3Rv
cmUuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiQVBJV2Vic2l0ZURhdGFSZWNvcmQu
aCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiU3RvcmFn
ZU1hbmFnZXIuaCIKKyNpbmNsdWRlICJXZWJDb29raWVNYW5hZ2VyUHJveHkuaCIKICNpbmNsdWRl
ICJXZWJQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgogI2lu
Y2x1ZGUgIldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIgpAQCAtMTA1LDYgKzEwNiwy
NyBAQCBXZWJzaXRlRGF0YVN0b3JlOjp+V2Vic2l0ZURhdGFTdG9yZSgpCiAgICAgfQogfQogCitS
ZWY8V2ViUHJvY2Vzc1Bvb2w+IFdlYnNpdGVEYXRhU3RvcmU6OnByb2Nlc3NQb29sRm9yQ29va2ll
U3RvcmFnZU9wZXJhdGlvbnMoKQoreworICAgIC8vIE91ciBjb25jZXB0cyBvZiBXZWJQcm9jZXNz
LCBXZWJQcm9jZXNzUG9vbCwgV2Vic2l0ZURhdGFTdG9yZSwgYW5kIFNlc3Npb25JRHMgaGF2ZSBh
bGwgc3RhcnRlZCB0byBvdmVybGFwCisgICAgLy8gd2l0aG91dCBjbGVhciBkaXZpc2lvbnMgb2Yg
cmVzcG9uc2liaWxpdGllcy4KKyAgICAvLyBJbiBwcmFjdGljZSwgbXVsdGlwbGUgV2ViUHJvY2Vz
c1Bvb2xzIGNhbiBjb250YWluICJ0aGUgc2FtZSBzZXNzaW9uIiwgZXNwZWNpYWxseSBzaW5jZSB0
aGVyZSBpcyBjdXJyZW50bHkKKyAgICAvLyBvbmx5IGEgc2luZ2xlIGRlZmF1bHQgZ2xvYmFsIFNl
c3Npb25JRC4KKyAgICAvLworICAgIC8vIFRoaXMgbWVhbnMgdGhhdCBtdWx0aXBsZSBOZXR3b3Jr
UHJvY2Vzc2VzIGNhbiBiZSB1c2luZyB0aGUgc2FtZSBzZXNzaW9uLCB3aGljaCBtZWFucyB0aGF0
IG11bHRpcGxlCisgICAgLy8gTmV0d29ya1Byb2Nlc3NlcyBjYW4gYmUgcmVmZXJyaW5nIHRvIHRo
ZSBzYW1lIHBsYXRmb3JtIGNvb2tpZSBzdG9yYWdlLgorICAgIC8vCisgICAgLy8gV2hpbGUgdGhp
cyBtYXkgY2F1c2UgY29tcGxpY2F0aW9ucyB3aXRoIGZ1dHVyZSBBUElzIGl0IGlzIGFjdHVhbGx5
IGZpbmUgZm9yIGltcGxlbWVudGluZyB0aGUgV0tIVFRQQ29va2llU3RvcmFnZSBBUEkKKyAgICAv
LyBiZWNhdXNlIHdlIG9ubHkgbmVlZCBvbmUgTmV0d29ya1Byb2Nlc3MgdG8gc3VjY2Vzc2Z1bGx5
IG1ha2UgYSByZXF1ZXN0ZWQgcGxhdGZvcm0gY29va2llIHN0b3JhZ2UgY2hhbmdlLgorICAgIC8v
CisgICAgLy8gRklYTUU6IFdlIG5lZWQgdG8gc3RhcnQgdG8gdW5yYXZlbCB0aGlzIG1lc3MgZ29p
bmcgZm9yd2FyZC4KKworICAgIGF1dG8gcG9vbHMgPSBwcm9jZXNzUG9vbHMoMSk7CisgICAgQVNT
RVJUKCFwb29scy5pc0VtcHR5KCkpOworCisgICAgcmV0dXJuICoqcG9vbHMuYmVnaW4oKTsKK30K
Kwogdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpyZXNvbHZlRGlyZWN0b3JpZXNJZk5lY2Vzc2FyeSgp
CiB7CiAgICAgaWYgKG1faGFzUmVzb2x2ZWREaXJlY3RvcmllcykKQEAgLTExMDgsNyArMTEzMCw3
IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6d2ViUHJvY2Vzc0RpZENsb3NlQ29ubmVjdGlvbihX
ZWJQcm9jZXNzUHJveHkmIHdlYlByb2Nlc3NQCiAgICAgICAgIG1fc3RvcmFnZU1hbmFnZXItPnBy
b2Nlc3NEaWRDbG9zZUNvbm5lY3Rpb24od2ViUHJvY2Vzc1Byb3h5LCBjb25uZWN0aW9uKTsKIH0K
IAotSGFzaFNldDxSZWZQdHI8V2ViUHJvY2Vzc1Bvb2w+PiBXZWJzaXRlRGF0YVN0b3JlOjpwcm9j
ZXNzUG9vbHMoKSBjb25zdAorSGFzaFNldDxSZWZQdHI8V2ViUHJvY2Vzc1Bvb2w+PiBXZWJzaXRl
RGF0YVN0b3JlOjpwcm9jZXNzUG9vbHMoc2l6ZV90IGNvdW50KSBjb25zdAogewogICAgIEhhc2hT
ZXQ8UmVmUHRyPFdlYlByb2Nlc3NQb29sPj4gcHJvY2Vzc1Bvb2xzOwogICAgIGZvciAoYXV0byYg
cHJvY2VzcyA6IHByb2Nlc3NlcygpKQpAQCAtMTEyMiwxMSArMTE0NCwyMCBAQCBIYXNoU2V0PFJl
ZlB0cjxXZWJQcm9jZXNzUG9vbD4+IFdlYnNpdGVEYXRhU3RvcmU6OnByb2Nlc3NQb29scygpIGNv
bnN0CiAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NQb29scy5hZGQocHJvY2Vzc1Bvb2wpOwog
ICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICB9IGVsc2UgaWYgKCZBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmUoKS0+
d2Vic2l0ZURhdGFTdG9yZSgpID09IHRoaXMpIHsKKyAgICAgICAgICAgICAgICAvLyBJZiBhIHBy
b2Nlc3MgcG9vbCBkb2Vzbid0IGhhdmUgYW4gZXhwbGljaXQgZGF0YSBzdG9yZSBhbmQgdGhpcyBp
cyB0aGUgZGVmYXVsdCBXZWJzaXRlRGF0YVN0b3JlLAorICAgICAgICAgICAgICAgIC8vIGFkZCB0
aGF0IHByb2Nlc3MgcG9vbCB0byB0aGUgc2V0LgorICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBU
aGlzIGJlaGF2aW9yIGlzIHdlaXJkIGFuZCBuZWNlc3NpdGF0ZWQgYnkgdGhlIGZhY3QgdGhhdCBw
cm9jZXNzIHBvb2xzIGRvbid0IGFsd2F5cworICAgICAgICAgICAgICAgIC8vIGhhdmUgYSBkYXRh
IHN0b3JlOyB0aGV5IHNob3VsZC4KKyAgICAgICAgICAgICAgICBwcm9jZXNzUG9vbHMuYWRkKHBy
b2Nlc3NQb29sKTsKICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKHByb2Nlc3NQb29s
cy5zaXplKCkgPT0gY291bnQpCisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAg
ICB9CiAKLSAgICBpZiAocHJvY2Vzc1Bvb2xzLmlzRW1wdHkoKSkgeworICAgIGlmIChwcm9jZXNz
UG9vbHMuaXNFbXB0eSgpICYmIGNvdW50KSB7CiAgICAgICAgIGF1dG8gcHJvY2Vzc1Bvb2wgPSBX
ZWJQcm9jZXNzUG9vbDo6Y3JlYXRlKEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjcmVh
dGVXaXRoV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24obV9jb25maWd1cmF0aW9uKSk7CiAg
ICAgICAgIHByb2Nlc3NQb29scy5hZGQocHJvY2Vzc1Bvb2wucHRyKCkpOwogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0
b3JlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFT
dG9yZS5oCmluZGV4IDk3NWJhYzhkODliYjFlY2M2NTYyNmRkNDA3NGFmOWM3NmFmODM0NTcuLjhk
MTNiY2U0OTgyOWIzY2FkYWIwN2Y4NDVhYjI0YmJjOTM4NTg0N2YgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaApA
QCAtMTAzLDYgKzEwMyw4IEBAIHB1YmxpYzoKIAogICAgIFN0b3JhZ2VNYW5hZ2VyKiBzdG9yYWdl
TWFuYWdlcigpIHsgcmV0dXJuIG1fc3RvcmFnZU1hbmFnZXIuZ2V0KCk7IH0KIAorICAgIFJlZjxX
ZWJQcm9jZXNzUG9vbD4gcHJvY2Vzc1Bvb2xGb3JDb29raWVTdG9yYWdlT3BlcmF0aW9ucygpOwor
CiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFdlYnNpdGVEYXRhU3RvcmUoV2ViQ29yZTo6U2Vzc2lv
bklEKTsKICAgICBleHBsaWNpdCBXZWJzaXRlRGF0YVN0b3JlKENvbmZpZ3VyYXRpb24pOwpAQCAt
MTE5LDcgKzEyMSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwbGF0Zm9ybURlc3Ryb3koKTsKICAg
ICBzdGF0aWMgdm9pZCBwbGF0Zm9ybVJlbW92ZVJlY2VudFNlYXJjaGVzKHN0ZDo6Y2hyb25vOjpz
eXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQpOwogCi0gICAgSGFzaFNldDxSZWZQdHI8V2ViUHJvY2Vz
c1Bvb2w+PiBwcm9jZXNzUG9vbHMoKSBjb25zdDsKKyAgICBIYXNoU2V0PFJlZlB0cjxXZWJQcm9j
ZXNzUG9vbD4+IHByb2Nlc3NQb29scyhzaXplX3QgY291bnQgPSBzdGQ6Om51bWVyaWNfbGltaXRz
PHNpemVfdD46Om1heCgpKSBjb25zdDsKIAogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJ
KQogICAgIFZlY3RvcjxQbHVnaW5Nb2R1bGVJbmZvPiBwbHVnaW5zKCkgY29uc3Q7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9T
b3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggN2Ux
ODgyMmYwNGQxNzZhYTg5OTRiNDY2YTgwNTY2OWFkY2E5MDI5MC4uZTM5YmU5YWVlMDk1OGFhMGI4
MzhmMmNkYThmNGEzNjA5ODU5OTY5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViS2l0
Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTA2Myw2ICsxMDYzLDkgQEAKIAkJNTFEMTI0
MzUxRTZERjY1MjAwMkIyODIwIC8qIFdLVVJMU2NoZW1lSGFuZGxlclRhc2suaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRDEyNDJGMUU2RERERDcwMDJC
MjgyMCAvKiBXS1VSTFNjaGVtZUhhbmRsZXJUYXNrLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHVibGljLCApOyB9OyB9OwogCQk1MUQxMjQzNjFFNkRGQjM5MDAyQjI4MjAgLyogV0tV
UkxTY2hlbWVIYW5kbGVyVGFzay5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUxRDEyNDMwMUU2RERERDcwMDJCMjgyMCAvKiBXS1VSTFNjaGVtZUhhbmRs
ZXJUYXNrLm1tICovOyB9OwogCQk1MUQxMjQzQTFFNkUwQUFCMDAyQjI4MjAgLyogQVBJVVJMU2No
ZW1lSGFuZGxlclRhc2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTFEMTI0MzgxRTZERkRCOTAwMkIyODIwIC8qIEFQSVVSTFNjaGVtZUhhbmRsZXJU
YXNrLmNwcCAqLzsgfTsKKwkJNTFEMTI0OTExRTc0QkYzQzAwMkIyODIwIC8qIEFQSUhUVFBDb29r
aWVTdG9yYWdlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxRDEyNDgyMUU3MzRBQzgwMDJCMjgyMCAvKiBBUElIVFRQQ29va2llU3RvcmFnZS5jcHAg
Ki87IH07CisJCTUxRDEyNDkyMUU3NEJGNDgwMDJCMjgyMCAvKiBXS0hUVFBDb29raWVTdG9yYWdl
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFEMTI0
ODUxRTczNEFFMzAwMkIyODIwIC8qIFdLSFRUUENvb2tpZVN0b3JhZ2UubW0gKi87IH07CisJCTUx
RDEyNDk5MUU3NjNDMDEwMDJCMjgyMCAvKiBXS0hUVFBDb29raWVTdG9yYWdlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUQxMjQ4NDFFNzM0QUUzMDAy
QjI4MjAgLyogV0tIVFRQQ29va2llU3RvcmFnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxRDEzMDUzMTM4MkVBQzAwMDM1MUVERCAvKiBTZWNJ
dGVtUmVxdWVzdERhdGEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTFEMTMwNEYxMzgyRUFDMDAwMzUxRUREIC8qIFNlY0l0ZW1SZXF1ZXN0RGF0YS5j
cHAgKi87IH07CiAJCTUxRDEzMDU0MTM4MkVBQzAwMDM1MUVERCAvKiBTZWNJdGVtUmVxdWVzdERh
dGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRDEz
MDUwMTM4MkVBQzAwMDM1MUVERCAvKiBTZWNJdGVtUmVxdWVzdERhdGEuaCAqLzsgfTsKIAkJNTFE
MTMwNTUxMzgyRUFDMDAwMzUxRUREIC8qIFNlY0l0ZW1SZXNwb25zZURhdGEuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFEMTMwNTExMzgyRUFDMDAw
MzUxRUREIC8qIFNlY0l0ZW1SZXNwb25zZURhdGEuY3BwICovOyB9OwpAQCAtMzI4NSw2ICszMjg4
LDExIEBACiAJCTUxRDEyNDM3MUU2REZEMkEwMDJCMjgyMCAvKiBXS1VSTFNjaGVtZUhhbmRsZXJU
YXNrSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tVUkxTY2hl
bWVIYW5kbGVyVGFza0ludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUx
RDEyNDM4MUU2REZEQjkwMDJCMjgyMCAvKiBBUElVUkxTY2hlbWVIYW5kbGVyVGFzay5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBUElVUkxTY2hlbWVIYW5kbGVyVGFz
ay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxRDEyNDM5MUU2REZEQjkwMDJC
MjgyMCAvKiBBUElVUkxTY2hlbWVIYW5kbGVyVGFzay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBBUElVUkxTY2hlbWVIYW5kbGVyVGFzay5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk1MUQxMjQ4MjFFNzM0QUM4MDAyQjI4MjAgLyogQVBJSFRUUENvb2tpZVN0b3Jh
Z2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQVBJSFRUUENvb2tp
ZVN0b3JhZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MUQxMjQ4MzFFNzM0
QUM4MDAyQjI4MjAgLyogQVBJSFRUUENvb2tpZVN0b3JhZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQVBJSFRUUENvb2tpZVN0b3JhZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNTFEMTI0ODQxRTczNEFFMzAwMkIyODIwIC8qIFdLSFRUUENvb2tpZVN0b3Jh
Z2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tIVFRQQ29va2llU3RvcmFn
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MUQxMjQ4NTFFNzM0QUUzMDAyQjI4
MjAgLyogV0tIVFRQQ29va2llU3RvcmFnZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IFdLSFRUUENvb2tpZVN0b3JhZ2UubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTUxRDEyNDg2MUU3MzRBRTMwMDJCMjgyMCAvKiBXS0hUVFBDb29raWVTdG9yYWdl
SW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tIVFRQQ29va2ll
U3RvcmFnZUludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxRDEzMDRG
MTM4MkVBQzAwMDM1MUVERCAvKiBTZWNJdGVtUmVxdWVzdERhdGEuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2VjSXRlbVJlcXVlc3REYXRhLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFEMTMwNTAxMzgyRUFDMDAwMzUxRUREIC8qIFNlY0l0ZW1S
ZXF1ZXN0RGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZWNJdGVtUmVx
dWVzdERhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFEMTMwNTExMzgyRUFD
MDAwMzUxRUREIC8qIFNlY0l0ZW1SZXNwb25zZURhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gU2VjSXRlbVJlc3BvbnNlRGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC01NTQ0LDYgKzU1NTIsOSBAQAogCQkJCTFBNEQ2NjQ5MThBMzAzMEUw
MEQ4MkUyMSAvKiBXS0ZyYW1lSW5mby5tbSAqLywKIAkJCQkyREY5RUVFNzFBNzgyNDU1MDBCNkNG
QkUgLyogV0tGcmFtZUluZm9JbnRlcm5hbC5oICovLAogCQkJCTFBNkZBMjFEMUJEMDQzNUIwMEFB
QTY1MCAvKiBXS0ZyYW1lSW5mb1ByaXZhdGUuaCAqLywKKwkJCQk1MUQxMjQ4NDFFNzM0QUUzMDAy
QjI4MjAgLyogV0tIVFRQQ29va2llU3RvcmFnZS5oICovLAorCQkJCTUxRDEyNDg1MUU3MzRBRTMw
MDJCMjgyMCAvKiBXS0hUVFBDb29raWVTdG9yYWdlLm1tICovLAorCQkJCTUxRDEyNDg2MUU3MzRB
RTMwMDJCMjgyMCAvKiBXS0hUVFBDb29raWVTdG9yYWdlSW50ZXJuYWwuaCAqLywKIAkJCQkxQTQy
MkY4QTE4QjI5QjU0MDBEOENEOTYgLyogV0tIaXN0b3J5RGVsZWdhdGVQcml2YXRlLmggKi8sCiAJ
CQkJMUFCNDBFRTMxQkY2NzdFMzAwQkE4MUJFIC8qIFdLTWVudUl0ZW1JZGVudGlmaWVycy5tbSAq
LywKIAkJCQkxQUI0MEVFNDFCRjY3N0UzMDBCQTgxQkUgLyogV0tNZW51SXRlbUlkZW50aWZpZXJz
UHJpdmF0ZS5oICovLApAQCAtNjczMiw2ICs2NzQzLDggQEAKIAkJCQkyREFCQTc3NTFBODJCNDIx
MDBFRjBGMUEgLyogQVBJSGlzdG9yeUNsaWVudC5oICovLAogCQkJCTkzQTg4QjQyMUJDODgyOEMw
MEFCQTVDMiAvKiBBUElIaXRUZXN0UmVzdWx0LmNwcCAqLywKIAkJCQk5M0E4OEI0MzFCQzg4MjhD
MDBBQkE1QzIgLyogQVBJSGl0VGVzdFJlc3VsdC5oICovLAorCQkJCTUxRDEyNDgyMUU3MzRBQzgw
MDJCMjgyMCAvKiBBUElIVFRQQ29va2llU3RvcmFnZS5jcHAgKi8sCisJCQkJNTFEMTI0ODMxRTcz
NEFDODAwMkIyODIwIC8qIEFQSUhUVFBDb29raWVTdG9yYWdlLmggKi8sCiAJCQkJNTE0M0IyNjEx
REREMERBMDAwMTRGQUM2IC8qIEFQSUljb25Mb2FkaW5nQ2xpZW50LmggKi8sCiAJCQkJN0NFNEQy
MDYxQTQ2Nzc1NzAwQzdGMTUyIC8qIEFQSUxlZ2FjeUNvbnRleHRIaXN0b3J5Q2xpZW50LmggKi8s
CiAJCQkJMUEyNDY0RjIxODkxRTQ1MTAwMjM0QzVCIC8qIEFQSUxvYWRlckNsaWVudC5oICovLApA
QCAtODUxNSw2ICs4NTI4LDcgQEAKIAkJCQk1MTQxMjk5NDFDNjQyOEJCMDA1OUU3MTQgLyogV2Vi
SURCQ29ubmVjdGlvblRvU2VydmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTA1MjM3NDFDNzNE
MzhCMDA3OTkzQ0IgLyogV2ViSURCQ29ubmVjdGlvblRvU2VydmVyTWVzc2FnZXMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUJDQ0Y2QUJEMTJDOTFFRjkwMDhGOUMzNSAvKiBXZWJJbWFnZS5oIGluIEhl
YWRlcnMgKi8sCisJCQkJNTFEMTI0OTkxRTc2M0MwMTAwMkIyODIwIC8qIFdLSFRUUENvb2tpZVN0
b3JhZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTFDOEUyODIwMTI3NUQxNTQwMEJDN0JEMCAvKiBX
ZWJJbnNwZWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMDMyRDgyMTBGNDM3OEQwMDU4QzE1
QSAvKiBXZWJJbnNwZWN0b3JDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1NUJBODM1MUJB
M0U3MEEwMDdDRDMzRCAvKiBXZWJJbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXIuaCBpbiBI
ZWFkZXJzICovLApAQCAtOTc2Nyw2ICs5NzgxLDcgQEAKIAkJCQkxQTZGQkEyQjExRTY4NjI3MDBE
QjEzNzEgLyogTmV0c2NhcGVCcm93c2VyRnVuY3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE2
RkJEMjkxMUU2OUJDMjAwREIxMzcxIC8qIE5ldHNjYXBlUGx1Z2luLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTFBRTVCN0ZCMTFFN0FFRDIwMEJBNjc2NyAvKiBOZXRzY2FwZVBsdWdpbk1hYy5tbSBp
biBTb3VyY2VzICovLAorCQkJCTUxRDEyNDkyMUU3NEJGNDgwMDJCMjgyMCAvKiBXS0hUVFBDb29r
aWVTdG9yYWdlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE0QTlDNTUxMkI4MTZDRjAwOEZFOTg0
IC8qIE5ldHNjYXBlUGx1Z2luTW9kdWxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTgzOUEyRjMx
MUUyMDY3NDUwMDM5MDU3RSAvKiBIaWdoUGVyZm9ybWFuY2VHcmFwaGljc1VzYWdlU2FtcGxlci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTRBOUM5QTEyQjgyMUNEMDA4RkU5ODQgLyogTmV0c2Nh
cGVQbHVnaW5Nb2R1bGVNYWMubW0gaW4gU291cmNlcyAqLywKQEAgLTk3ODUsNiArOTgwMCw3IEBA
CiAJCQkJODMxRUVCQkUxQkQ4NUM0MzAwQkI2NEMzIC8qIE5ldHdvcmtDYWNoZVNwZWN1bGF0aXZl
TG9hZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4MzJBRTI1MzFCRTJFOENEMDBGQUFFMTAgLyog
TmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk4M0JEQ0NCOTFBQzVGREI2MDAzRjY0NDEgLyogTmV0d29ya0NhY2hlU3RhdGlzdGljcy5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQk1MUQxMjQ5MTFFNzRCRjNDMDAyQjI4MjAgLyogQVBJSFRUUENv
b2tpZVN0b3JhZ2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTQ0MzZFRDAxQTBEMDQwQjAwRUFE
MjA0IC8qIE5ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODMxMDQy
OEMxQkQ2QjY2RjAwQTcxNUU0IC8qIE5ldHdvcmtDYWNoZVN1YnJlc291cmNlc0VudHJ5LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTUzMDI1ODNEMURDQkJEMjIwMERBODlDMiAvKiBOZXR3b3JrQ2Fw
dHVyZUV2ZW50LmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIuY3BwCmluZGV4IDllMjFmNzhjY2Ri
YjE4MjE3OTQyNTUzZjlmZTBmMWRkNzA0MTMzODQuLjc1NDNhMjlkOGJlYjhjZWEzOTI2NjIxNmE2
MDA4YzU4NjIzNGVmMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29v
a2llcy9XZWJDb29raWVNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5jcHAKQEAgLTcyLDIyICs3Miw2NCBAQCB2b2lkIFdl
YkNvb2tpZU1hbmFnZXI6OmRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZShTZXNzaW9uSUQgc2Vzc2lv
bklELCBjb25zdCBTdHJpbgogICAgICAgICBXZWJDb3JlOjpkZWxldGVDb29raWVzRm9ySG9zdG5h
bWVzKCpzdG9yYWdlU2Vzc2lvbiwgeyBob3N0bmFtZSB9KTsKIH0KIAorCiB2b2lkIFdlYkNvb2tp
ZU1hbmFnZXI6OmRlbGV0ZUFsbENvb2tpZXMoU2Vzc2lvbklEIHNlc3Npb25JRCkKIHsKICAgICBp
ZiAoYXV0byogc3RvcmFnZVNlc3Npb24gPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VT
ZXNzaW9uKHNlc3Npb25JRCkpCiAgICAgICAgIFdlYkNvcmU6OmRlbGV0ZUFsbENvb2tpZXMoKnN0
b3JhZ2VTZXNzaW9uKTsKIH0KIAotdm9pZCBXZWJDb29raWVNYW5hZ2VyOjpkZWxldGVBbGxDb29r
aWVzTW9kaWZpZWRTaW5jZShTZXNzaW9uSUQgc2Vzc2lvbklELCBzdGQ6OmNocm9ubzo6c3lzdGVt
X2Nsb2NrOjp0aW1lX3BvaW50IHRpbWUpCit2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmRlbGV0ZUNv
b2tpZShTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBDb29raWUmIGNvb2tpZSwgdWludDY0X3Qg
Y2FsbGJhY2tJRCkKK3sKKyAgICBpZiAoYXV0byogc3RvcmFnZVNlc3Npb24gPSBOZXR3b3JrU3Rv
cmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCisgICAgICAgIHN0b3JhZ2VT
ZXNzaW9uLT5kZWxldGVDb29raWUoY29va2llKTsKKworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViQ29va2llTWFuYWdlclByb3h5OjpEaWREZWxldGVDb29raWVzKGNhbGxiYWNrSUQp
LCAwKTsKK30KKwordm9pZCBXZWJDb29raWVNYW5hZ2VyOjpkZWxldGVBbGxDb29raWVzTW9kaWZp
ZWRTaW5jZShTZXNzaW9uSUQgc2Vzc2lvbklELCBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0
aW1lX3BvaW50IHRpbWUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiB7CiAgICAgaWYgKGF1dG8qIHN0
b3JhZ2VTZXNzaW9uID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNz
aW9uSUQpKQogICAgICAgICBXZWJDb3JlOjpkZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZSgq
c3RvcmFnZVNlc3Npb24sIHRpbWUpOworCisgICAgaWYgKGNhbGxiYWNrSUQpCisgICAgICAgIG1f
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlclByb3h5OjpEaWREZWxldGVD
b29raWVzKGNhbGxiYWNrSUQpLCAwKTsKK30KKwordm9pZCBXZWJDb29raWVNYW5hZ2VyOjpnZXRB
bGxDb29raWVzKFNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit7Cisg
ICAgVmVjdG9yPENvb2tpZT4gY29va2llczsKKyAgICBpZiAoYXV0byogc3RvcmFnZVNlc3Npb24g
PSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCisgICAg
ICAgIGNvb2tpZXMgPSBzdG9yYWdlU2Vzc2lvbi0+Z2V0QWxsQ29va2llcygpOworCisgICAgbV9w
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OkRpZEdldENvb2tp
ZXMoY29va2llcywgY2FsbGJhY2tJRCksIDApOwogfQogCi12b2lkIFdlYkNvb2tpZU1hbmFnZXI6
OnNldENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVmVjdG9yPENv
b2tpZT4mIGNvb2tpZXMsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBVUkwmIG1haW5Eb2N1bWVudFVS
TCkKK3ZvaWQgV2ViQ29va2llTWFuYWdlcjo6Z2V0Q29va2llcyhTZXNzaW9uSUQgc2Vzc2lvbklE
LCBjb25zdCBVUkwmIHVybCwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3sKKyAgICBWZWN0b3I8Q29v
a2llPiBjb29raWVzOworICAgIGlmIChhdXRvKiBzdG9yYWdlU2Vzc2lvbiA9IE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKKyAgICAgICAgY29va2llcyA9
IHN0b3JhZ2VTZXNzaW9uLT5nZXRDb29raWVzKHVybCk7CisKKyAgICBtX3Byb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6RGlkR2V0Q29va2llcyhjb29raWVzLCBj
YWxsYmFja0lEKSwgMCk7Cit9CisKK3ZvaWQgV2ViQ29va2llTWFuYWdlcjo6c2V0Q29va2llKFdl
YkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IENvb2tpZSYgY29va2llLCB1aW50NjRf
dCBjYWxsYmFja0lEKQoreworICAgIGlmIChhdXRvKiBzdG9yYWdlU2Vzc2lvbiA9IE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKKyAgICAgICAgc3RvcmFn
ZVNlc3Npb24tPnNldENvb2tpZShjb29raWUpOworCisgICAgaWYgKGNhbGxiYWNrSUQpCisgICAg
ICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlclByb3h5OjpEaWRT
ZXRDb29raWVzKGNhbGxiYWNrSUQpLCAwKTsKK30KKwordm9pZCBXZWJDb29raWVNYW5hZ2VyOjpz
ZXRDb29raWVzKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxDb29r
aWU+JiBjb29raWVzLCBjb25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBtYWluRG9jdW1lbnRVUkws
IHVpbnQ2NF90IGNhbGxiYWNrSUQpCiB7CiAgICAgaWYgKGF1dG8qIHN0b3JhZ2VTZXNzaW9uID0g
TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQogICAgICAg
ICBzdG9yYWdlU2Vzc2lvbi0+c2V0Q29va2llcyhjb29raWVzLCB1cmwsIG1haW5Eb2N1bWVudFVS
TCk7CisKKyAgICBpZiAoY2FsbGJhY2tJRCkKKyAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OkRpZFNldENvb2tpZXMoY2FsbGJhY2tJRCksIDAp
OwogfQogCiB2b2lkIFdlYkNvb2tpZU1hbmFnZXI6Om5vdGlmeUNvb2tpZXNEaWRDaGFuZ2UoU2Vz
c2lvbklEIHNlc3Npb25JRCkKQEAgLTExMSw5ICsxNTMsMTIgQEAgdm9pZCBXZWJDb29raWVNYW5h
Z2VyOjpzdG9wT2JzZXJ2aW5nQ29va2llQ2hhbmdlcyhTZXNzaW9uSUQgc2Vzc2lvbklEKQogICAg
ICAgICBXZWJDb3JlOjpzdG9wT2JzZXJ2aW5nQ29va2llQ2hhbmdlcygqc3RvcmFnZVNlc3Npb24p
OwogfQogCi12b2lkIFdlYkNvb2tpZU1hbmFnZXI6OnNldEhUVFBDb29raWVBY2NlcHRQb2xpY3ko
SFRUUENvb2tpZUFjY2VwdFBvbGljeSBwb2xpY3kpCit2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OnNl
dEhUVFBDb29raWVBY2NlcHRQb2xpY3koSFRUUENvb2tpZUFjY2VwdFBvbGljeSBwb2xpY3ksIHVp
bnQ2NF90IGNhbGxiYWNrSUQpCiB7CiAgICAgcGxhdGZvcm1TZXRIVFRQQ29va2llQWNjZXB0UG9s
aWN5KHBvbGljeSk7CisKKyAgICBpZiAoY2FsbGJhY2tJRCkKKyAgICAgICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OkRpZFNldEhUVFBDb29raWVBY2Nl
cHRQb2xpY3koY2FsbGJhY2tJRCksIDApOwogfQogCiB2b2lkIFdlYkNvb2tpZU1hbmFnZXI6Omdl
dEhUVFBDb29raWVBY2NlcHRQb2xpY3kodWludDY0X3QgY2FsbGJhY2tJRCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmggYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5oCmluZGV4
IGRiMjdkMjBhYWRkODdkODg1MzZkYTUwNzFlNTlmMzI4OTExNTE4MDIuLjgxODc1ZGFmYjc1OGZj
ZDYzOTkwODUxZGJjZDM1MmVlNjQwNTU2MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIuaApAQCAtNTYsNyArNTYsOCBAQCBw
dWJsaWM6CiAKICAgICBzdGF0aWMgY29uc3QgY2hhciogc3VwcGxlbWVudE5hbWUoKTsKIAotICAg
IHZvaWQgc2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShIVFRQQ29va2llQWNjZXB0UG9saWN5KTsK
KyAgICB2b2lkIHNldEhUVFBDb29raWVBY2NlcHRQb2xpY3koSFRUUENvb2tpZUFjY2VwdFBvbGlj
eSwgdWludDY0X3QgY2FsbGJhY2tJRCk7CisKICNpZiBVU0UoU09VUCkKICAgICB2b2lkIHNldENv
b2tpZVBlcnNpc3RlbnRTdG9yYWdlKGNvbnN0IFN0cmluZyYgc3RvcmFnZVBhdGgsIHVpbnQzMl90
IHN0b3JhZ2VUeXBlKTsKICNlbmRpZgpAQCAtNjgsMTEgKzY5LDE2IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBv
dmVycmlkZTsKIAogICAgIHZvaWQgZ2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoV2ViQ29yZTo6U2Vz
c2lvbklELCB1aW50NjRfdCBjYWxsYmFja0lEKTsKKworICAgIHZvaWQgZGVsZXRlQ29va2llKFdl
YkNvcmU6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6Q29va2llJiwgdWludDY0X3QgY2FsbGJh
Y2tJRCk7CiAgICAgdm9pZCBkZWxldGVDb29raWVzRm9ySG9zdG5hbWUoV2ViQ29yZTo6U2Vzc2lv
bklELCBjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIGRlbGV0ZUFsbENvb2tpZXMoV2ViQ29yZTo6
U2Vzc2lvbklEKTsKLSAgICB2b2lkIGRlbGV0ZUFsbENvb2tpZXNNb2RpZmllZFNpbmNlKFdlYkNv
cmU6OlNlc3Npb25JRCwgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCk7Cisg
ICAgdm9pZCBkZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZShXZWJDb3JlOjpTZXNzaW9uSUQs
IHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQsIHVpbnQ2NF90IGNhbGxiYWNr
SUQpOwogCi0gICAgdm9pZCBzZXRDb29raWVzKFdlYkNvcmU6OlNlc3Npb25JRCwgY29uc3QgVmVj
dG9yPFdlYkNvcmU6OkNvb2tpZT4mLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXZWJDb3Jl
OjpVUkwmIG1haW5Eb2N1bWVudFVSTCk7CisgICAgdm9pZCBzZXRDb29raWUoV2ViQ29yZTo6U2Vz
c2lvbklELCBjb25zdCBXZWJDb3JlOjpDb29raWUmLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAg
ICB2b2lkIHNldENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklELCBjb25zdCBWZWN0b3I8V2ViQ29y
ZTo6Q29va2llPiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgbWFp
bkRvY3VtZW50VVJMLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICB2b2lkIGdldEFsbENvb2tp
ZXMoV2ViQ29yZTo6U2Vzc2lvbklELCB1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICB2b2lkIGdl
dENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpVUkwmLCB1aW50NjRf
dCBjYWxsYmFja0lEKTsKIAogICAgIHZvaWQgcGxhdGZvcm1TZXRIVFRQQ29va2llQWNjZXB0UG9s
aWN5KEhUVFBDb29raWVBY2NlcHRQb2xpY3kpOwogICAgIHZvaWQgZ2V0SFRUUENvb2tpZUFjY2Vw
dFBvbGljeSh1aW50NjRfdCBjYWxsYmFja0lEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLm1lc3NhZ2VzLmluIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIubWVzc2FnZXMuaW4K
aW5kZXggMDBlN2I2NWI3NDkwODI2YzViYjM5YmQ3MjZlOWMyZDNiYTUzZjA1Ni4uMGE1ODU1NWVj
NmE5Y2M0OGY5ZDhhOTQ3NWNhNjI0OGMzZWQ1YjM0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIubWVzc2FnZXMuaW4KKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIubWVzc2Fn
ZXMuaW4KQEAgLTI3LDExICsyNywxNSBAQAogICAgIHZvaWQgR2V0SG9zdG5hbWVzV2l0aENvb2tp
ZXMoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgY2FsbGJhY2tJRCkKICAg
ICB2b2lkIERlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZShXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBTdHJpbmcgaG9zdG5hbWUpCiAgICAgdm9pZCBEZWxldGVBbGxDb29raWVzKFdlYkNvcmU6
OlNlc3Npb25JRCBzZXNzaW9uSUQpCi0gICAgdm9pZCBEZWxldGVBbGxDb29raWVzTW9kaWZpZWRT
aW5jZShXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBzdGQ6OmNocm9ubzo6c3lzdGVtX2Ns
b2NrOjp0aW1lX3BvaW50IHRpbWUpCiAKLSAgICB2b2lkIFNldENvb2tpZXMoV2ViQ29yZTo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4gY29va2llcywgV2ViQ29y
ZTo6VVJMIHVybCwgV2ViQ29yZTo6VVJMIG1haW5Eb2N1bWVudFVSTCk7CisgICAgdm9pZCBTZXRD
b29raWUoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgc3RydWN0IFdlYkNvcmU6OkNvb2tp
ZSBjb29raWUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCisgICAgdm9pZCBTZXRDb29raWVzKFdlYkNv
cmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+IGNvb2tpZXMs
IFdlYkNvcmU6OlVSTCB1cmwsIFdlYkNvcmU6OlVSTCBtYWluRG9jdW1lbnRVUkwsIHVpbnQ2NF90
IGNhbGxiYWNrSUQpCisgICAgdm9pZCBHZXRBbGxDb29raWVzKFdlYkNvcmU6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCisgICAgdm9pZCBHZXRDb29raWVzKFdlYkNv
cmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlVSTCB1cmwsIHVpbnQ2NF90IGNhbGxi
YWNrSUQpCisgICAgdm9pZCBEZWxldGVDb29raWUoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgc3RydWN0IFdlYkNvcmU6OkNvb2tpZSBjb29raWUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCisg
ICAgdm9pZCBEZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZShXZWJDb3JlOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IHRpbWUsIHVp
bnQ2NF90IGNhbGxiYWNrSUQpCiAKLSAgICB2b2lkIFNldEhUVFBDb29raWVBY2NlcHRQb2xpY3ko
dWludDMyX3QgcG9saWN5KQorICAgIHZvaWQgU2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSh1aW50
MzJfdCBwb2xpY3ksIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAgICAgdm9pZCBHZXRIVFRQQ29va2ll
QWNjZXB0UG9saWN5KHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAgICAgCiAgICAgdm9pZCBTdGFydE9i
c2VydmluZ0Nvb2tpZUNoYW5nZXMoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCkKZGlmZiAt
LWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA4MGRhODIyOGRj
YTc3ZTliOTM4NmQzOWViZTVjOGY1NDJjZjNjYjlkLi40Y2FkZTZiMzAwODkxODZhYjFlMzk4NTMy
MTAxNTJiYTJhNWJhMTUyIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTctMDMtMTMgIEJyYWR5IEVpZHNvbiAgPGJl
aWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIFdLV2ViVmlldyBwcm92aWRlcyBubyBhY2Nlc3Mg
dG8gY29va2llcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE0MDE5MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisKIDIwMTctMDMtMTEgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxl
LmNvbT4KIAogICAgICAgICBFbmFibGUgYXN5bmMgaW1hZ2UgZGVjb2RpbmcgZm9yIGxhcmdlIGlt
YWdlcwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEku
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA3NjAxZGJlMDY5MmMwMDA4ZTZiN2RiYWEz
ZmEwMDE2MzQ1ZDIxMmY3Li4yZGYzNDU2MmI0OWJhNzJkMzgwMWJlMWM2MDdkMDRhYzgzNmE1MGEy
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEku
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTUyLDYgKzE1Miw3IEBACiAJCTUxQkNFRTRG
MUM4NEY1M0IwMDQyQzgyRSAvKiBJbmRleGVkREJNdWx0aVByb2Nlc3MtMi5odG1sIGluIENvcHkg
UmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQkNFRTREMUM4
NEY1MkMwMDQyQzgyRSAvKiBJbmRleGVkREJNdWx0aVByb2Nlc3MtMi5odG1sICovOyB9OwogCQk1
MUNEMUM2QzFCMzhDRTQzMDAxNDJDQTUgLyogTW9kYWxBbGVydHMubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUNEMUM2QTFCMzhDRTM2MDAxNDJDQTUg
LyogTW9kYWxBbGVydHMubW0gKi87IH07CiAJCTUxQ0QxQzcyMUIzOEQ0ODQwMDE0MkNBNSAvKiBt
b2RhbC1hbGVydHMtaW4tbmV3LWFib3V0LWJsYW5rLXdpbmRvdy5odG1sIGluIENvcHkgUmVzb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQ0QxQzcxMUIzOEQ0ODQw
MDE0MkNBNSAvKiBtb2RhbC1hbGVydHMtaW4tbmV3LWFib3V0LWJsYW5rLXdpbmRvdy5odG1sICov
OyB9OworCQk1MUQxMjQ5ODFFNzYzQjAyMDAyQjI4MjAgLyogV0tIVFRQQ29va2llU3RvcmFnZS5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRDEyNDk3
MUU3NjNBRjgwMDJCMjgyMCAvKiBXS0hUVFBDb29raWVTdG9yYWdlLm1tICovOyB9OwogCQk1MUU1
QzcwMjE5MTlDM0IyMDBEOEIzRTEgLyogc2ltcGxlMi5odG1sIGluIENvcHkgUmVzb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRTc4MDM2MTkxOUFGRjgwMDE4MjlB
MiAvKiBzaW1wbGUyLmh0bWwgKi87IH07CiAJCTUxRTVDNzAzMTkxOUMzQjIwMEQ4QjNFMSAvKiBz
aW1wbGUzLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTFFNzgwMzcxOTE5QUZGODAwMTgyOUEyIC8qIHNpbXBsZTMuaHRtbCAqLzsgfTsK
IAkJNTFFNkE4OTQxRDJGMUMwQTAwQzAwNEI2IC8qIExvY2FsU3RvcmFnZUNsZWFyLm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFFNkE4OTIxRDJGMUJF
QzAwQzAwNEI2IC8qIExvY2FsU3RvcmFnZUNsZWFyLm1tICovOyB9OwpAQCAtMTA0OCw2ICsxMDQ5
LDcgQEAKIAkJNTFDQjRBRDcxQjNBMDc5QzAwQzFCMUM2IC8qIE1vZGFsQWxlcnRzU1BJLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1vZGFsQWxlcnRzU1BJLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFDRDFDNkExQjM4Q0UzNjAwMTQyQ0E1IC8q
IE1vZGFsQWxlcnRzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
TW9kYWxBbGVydHMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxQ0QxQzcxMUIz
OEQ0ODQwMDE0MkNBNSAvKiBtb2RhbC1hbGVydHMtaW4tbmV3LWFib3V0LWJsYW5rLXdpbmRvdy5o
dG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dC5odG1sOyBwYXRoID0gIm1vZGFsLWFsZXJ0cy1pbi1uZXctYWJvdXQtYmxhbmstd2luZG93Lmh0
bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MUQxMjQ5NzFFNzYzQUY4MDAyQjI4
MjAgLyogV0tIVFRQQ29va2llU3RvcmFnZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IFdLSFRUUENvb2tpZVN0b3JhZ2UubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTUxRTVDNzA0MTkxOUVBNUYwMEQ4QjNFMSAvKiBTaG91bGRLZWVwQ3VycmVudEJh
Y2tGb3J3YXJkTGlzdEl0ZW1Jbkxpc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gU2hvdWxkS2VlcEN1cnJlbnRCYWNrRm9yd2FyZExpc3RJdGVtSW5MaXN0LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFFNkE4OTIxRDJGMUJFQzAwQzAwNEI2IC8q
IExvY2FsU3RvcmFnZUNsZWFyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gTG9jYWxTdG9yYWdlQ2xlYXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTUxRTZBODk1MUQyRjFDNzcwMEMwMDRCNiAvKiBMb2NhbFN0b3JhZ2VDbGVhci5odG1sICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dC5odG1sOyBwYXRoID0gTG9jYWxTdG9yYWdlQ2xlYXIuaHRtbDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE2NDksNiArMTY1MSw3IEBACiAJCQkJNTEyMEM4M0MxRTY3
NTA3OTAwMjVCMjUwIC8qIFdlYnNpdGVEYXRhU3RvcmVDdXN0b21QYXRocy5tbSAqLywKIAkJCQk1
QzlFNTY4NDFERjkxNDNEMDBDOUVFMzMgLyogV2Vic2l0ZVBvbGljaWVzLm1tICovLAogCQkJCTFG
ODM1NzFBMUQzRkZCMEUwMEUzOTY3QiAvKiBXS0JhY2tGb3J3YXJkTGlzdC5tbSAqLywKKwkJCQk1
MUQxMjQ5NzFFNzYzQUY4MDAyQjI4MjAgLyogV0tIVFRQQ29va2llU3RvcmFnZS5tbSAqLywKIAkJ
CQkzNzVFMEUxNTFENjY2NzQ0MDBFRkVDMkMgLyogV0tOU051bWJlci5tbSAqLywKIAkJCQkzN0I0
N0UyRTFENjRFN0NBMDA1RjRFRkYgLyogV0tPYmplY3QubW0gKi8sCiAJCQkJMkQwMDA2NUQxQzFG
NTg5NDAwODhFNkE3IC8qIFdLUERGVmlld1Jlc2l6ZUNyYXNoLm1tICovLApAQCAtMjcyOSw2ICsy
NzMyLDcgQEAKIAkJCQk3Q0NFN0VGNDFBNDExQUU2MDA0NDdDNEMgLyogRmluZE1hdGNoZXMubW0g
aW4gU291cmNlcyAqLywKIAkJCQk3QzgzRTA0MDFEMEE2M0UzMDBGRUJDRjMgLyogRmlyc3RSZXNw
b25kZXJTY3JvbGxpbmdQb3NpdGlvbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDODNFMEJDMUQw
QTY1MDcwMEZFQkNGMyAvKiBGaXhlZExheW91dFNpemUubW0gaW4gU291cmNlcyAqLywKKwkJCQk1
MUQxMjQ5ODFFNzYzQjAyMDAyQjI4MjAgLyogV0tIVFRQQ29va2llU3RvcmFnZS5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCTdDQ0U3RUY1MUE0MTFBRTYwMDQ0N0M0QyAvKiBGb3JjZVJlcGFpbnQuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMzdCNDdFMzAxRDY0RTdDQTAwNUY0RUZGIC8qIFdLT2JqZWN0
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFQzAxQTQxMUE3RTAwNDQ3QzRDIC8qIEZyYWdt
ZW50TmF2aWdhdGlvbi5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvV0tIVFRQQ29va2llU3RvcmFnZS5tbSBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL1dLSFRUUENvb2tpZVN0b3JhZ2UubW0K
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYmNlMjg5MDczNjc0ZWEwZjJlMGQ2OTYzOTM1NjY1Yjk5Y2E2YmRmZQotLS0g
L2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL1dL
SFRUUENvb2tpZVN0b3JhZ2UubW0KQEAgLTAsMCArMSwxMDggQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisKKyNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCisjaW1wb3J0
IDxXZWJLaXQvV0tGb3VuZGF0aW9uLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tIVFRQQ29va2llU3Rv
cmFnZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaD4KKyNp
bXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKworI2lmIFdLX0FQSV9FTkFCTEVECisKK3N0YXRpYyBi
b29sIGdvdEZsYWc7CisKK1RFU1QoV2ViS2l0MiwgV0tIVFRQQ29va2llU3RvcmFnZSkKK3sKKyAg
ICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1l
Ok5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApXSk7CisgICAgW3dlYlZpZXcgbG9hZEhUTUxTdHJp
bmc6QCJPaCBoZWxsbyIgYmFzZVVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHA6Ly93ZWJr
aXQub3JnIl1dOworCisgICAgUmV0YWluUHRyPFdLSFRUUENvb2tpZVN0b3JhZ2U+IGNvb2tpZVN0
b3JhZ2UgPSBbV0tXZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHREYXRhU3RvcmVdLl9odHRwQ29va2ll
U3RvcmFnZTsKKworICAgIE5TQXJyYXk8TlNIVFRQQ29va2llICo+ICpjb29raWVzID0gbmlsOwor
ICAgIFtjb29raWVTdG9yYWdlIGZldGNoQ29va2llczpbY29va2llc1B0ciA9ICZjb29raWVzXShO
U0FycmF5PE5TSFRUUENvb2tpZSAqPiAqbnNDb29raWVzKSB7CisgICAgICAgICpjb29raWVzUHRy
ID0gW25zQ29va2llcyByZXRhaW5dOworICAgICAgICBnb3RGbGFnID0gdHJ1ZTsKKyAgICB9XTsK
KworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZ290RmxhZyk7CisKKyAgICBBU1NFUlRf
RVEoY29va2llcy5jb3VudCwgMHUpOworICAgIFtjb29raWVzIHJlbGVhc2VdOworCisgICAgZ290
RmxhZyA9IGZhbHNlOworCisgICAgUmV0YWluUHRyPE5TSFRUUENvb2tpZT4gY29va2llMSA9IFtO
U0hUVFBDb29raWUgY29va2llV2l0aFByb3BlcnRpZXM6QHsKKyAgICAgICAgTlNIVFRQQ29va2ll
UGF0aDogQCIvIiwKKyAgICAgICAgTlNIVFRQQ29va2llTmFtZTogQCJDb29raWVOYW1lIiwKKyAg
ICAgICAgTlNIVFRQQ29va2llVmFsdWU6IEAiQ29va2llVmFsdWUiLAorICAgICAgICBOU0hUVFBD
b29raWVEb21haW46IEAiLnd3dy53ZWJraXQub3JnIiwKKyAgICAgICAgTlNIVFRQQ29va2llU2Vj
dXJlOiBAIlRSVUUiLAorICAgICAgICBOU0hUVFBDb29raWVEaXNjYXJkOiBAIlRSVUUiLAorICAg
ICAgICBOU0hUVFBDb29raWVNYXhpbXVtQWdlOiBAIjEwMDAwIiwKKyAgICB9XTsKKworICAgIFJl
dGFpblB0cjxOU0hUVFBDb29raWU+IGNvb2tpZTIgPSBbTlNIVFRQQ29va2llIGNvb2tpZVdpdGhQ
cm9wZXJ0aWVzOkB7CisgICAgICAgIE5TSFRUUENvb2tpZVBhdGg6IEAiL3BhdGgiLAorICAgICAg
ICBOU0hUVFBDb29raWVOYW1lOiBAIk90aGVyQ29va2llTmFtZSIsCisgICAgICAgIE5TSFRUUENv
b2tpZVZhbHVlOiBAIk90aGVyQ29va2llVmFsdWUiLAorICAgICAgICBOU0hUVFBDb29raWVEb21h
aW46IEAiLnd3dy53M2Mub3JnIiwKKyAgICAgICAgTlNIVFRQQ29va2llTWF4aW11bUFnZTogQCIx
MDAwMCIsCisgICAgfV07CisKKyAgICBbY29va2llU3RvcmFnZSBzZXRDb29raWU6Y29va2llMS5n
ZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpuaWxdOworICAgIFtjb29raWVTdG9yYWdlIHNldENvb2tp
ZTpjb29raWUyLmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOm5pbF07CisKKyAgICBbY29va2llU3Rv
cmFnZSBmZXRjaENvb2tpZXM6W2Nvb2tpZXNQdHIgPSAmY29va2llc10oTlNBcnJheTxOU0hUVFBD
b29raWUgKj4gKm5zQ29va2llcykgeworICAgICAgICAqY29va2llc1B0ciA9IFtuc0Nvb2tpZXMg
cmV0YWluXTsKKyAgICAgICAgZ290RmxhZyA9IHRydWU7CisgICAgfV07CisKKyAgICBUZXN0V2Vi
S2l0QVBJOjpVdGlsOjpydW4oJmdvdEZsYWcpOworCisgICAgQVNTRVJUX0VRKGNvb2tpZXMuY291
bnQsIDJ1KTsKKworICAgIGZvciAoTlNIVFRQQ29va2llICpjb29raWUgOiBjb29raWVzKSB7Cisg
ICAgICAgIGlmIChbY29va2llLm5hbWUgaXNFcXVhbDpAIkNvb2tpZU5hbWUiXSkgeworICAgICAg
ICAgICAgQVNTRVJUX1RSVUUoW2Nvb2tpZTEuZ2V0KCkucGF0aCBpc0VxdWFsVG9TdHJpbmc6Y29v
a2llLnBhdGhdKTsKKyAgICAgICAgICAgIEFTU0VSVF9UUlVFKFtjb29raWUxLmdldCgpLnZhbHVl
IGlzRXF1YWxUb1N0cmluZzpjb29raWUudmFsdWVdKTsKKyAgICAgICAgICAgIEFTU0VSVF9UUlVF
KFtjb29raWUxLmdldCgpLmRvbWFpbiBpc0VxdWFsVG9TdHJpbmc6Y29va2llLmRvbWFpbl0pOwor
ICAgICAgICAgICAgQVNTRVJUX1RSVUUoY29va2llMS5nZXQoKS5zZWN1cmUpOworICAgICAgICAg
ICAgQVNTRVJUX1RSVUUoY29va2llMS5nZXQoKS5zZXNzaW9uT25seSk7CisgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICBBU1NFUlRfVFJVRShbY29va2llMi5nZXQoKS5wYXRoIGlzRXF1YWxU
b1N0cmluZzpjb29raWUucGF0aF0pOworICAgICAgICAgICAgQVNTRVJUX1RSVUUoW2Nvb2tpZTIu
Z2V0KCkudmFsdWUgaXNFcXVhbFRvU3RyaW5nOmNvb2tpZS52YWx1ZV0pOworICAgICAgICAgICAg
QVNTRVJUX1RSVUUoW2Nvb2tpZTIuZ2V0KCkubmFtZSBpc0VxdWFsVG9TdHJpbmc6Y29va2llLm5h
bWVdKTsKKyAgICAgICAgICAgIEFTU0VSVF9UUlVFKFtjb29raWUyLmdldCgpLmRvbWFpbiBpc0Vx
dWFsVG9TdHJpbmc6Y29va2llLmRvbWFpbl0pOworICAgICAgICAgICAgQVNTRVJUX0ZBTFNFKGNv
b2tpZTIuZ2V0KCkuc2VjdXJlKTsKKyAgICAgICAgICAgIEFTU0VSVF9GQUxTRShjb29raWUyLmdl
dCgpLnNlc3Npb25Pbmx5KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIFtjb29raWVzIHJlbGVh
c2VdOworfQorCisjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>304288</attachid>
            <date>2017-03-13 12:57:34 -0700</date>
            <delta_ts>2017-03-13 13:20:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-140191-20170313125739.patch</filename>
            <type>text/plain</type>
            <size>91997</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEzNzc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmU3MGVhY2ZjNWQwZmY4
NzI0MGFjN2QwMzg5MmQ1MTJkZjA5YzIyOC4uZTFmMmE3Yzc2OWE0YmNmNjA5NTljZDczNGZmZjg4
ZDRmMDRkYjZmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDE3LTAzLTEzICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBXS1dlYlZpZXcgcHJvdmlk
ZXMgbm8gYWNjZXNzIHRvIGNvb2tpZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNDAxOTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBDb3ZlcmVkIGJ5IEFQSSB0ZXN0cy4KKworICAgICAgICAqIHBsYXRm
b3JtL0Nvb2tpZS5oOgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFn
ZVNlc3Npb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtTdG9y
YWdlU2Vzc2lvbkNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpzZXRDb29raWUpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9u
OjpkZWxldGVDb29raWUpOgorICAgICAgICAoV2ViQ29yZTo6bnNDb29raWVzVG9Db29raWVWZWN0
b3IpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpnZXRBbGxDb29r
aWVzKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0Q29va2ll
cyk6CisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvTmV0d29ya1N0b3JhZ2VTZXNz
aW9uU291cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRl
bGV0ZUNvb2tpZSk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246Omdl
dEFsbENvb2tpZXMpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpn
ZXRDb29raWVzKToKKwogMjAxNy0wMy0xMiAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5j
b20+CiAKICAgICAgICAgQWRkIGZ1bGwgTlNIVFRQQ29va2llIGZpZGVsaXR5IHRvIFdlYkNvcmU6
OkNvb2tpZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZwppbmRleCAxMTA3YzgzYjQ0OTE3OTdjOWJkZTA3OTQyZjg2MzM0MzU2
ODAyOTliLi40NTJhOWZjZjhlYzgzOTkwNzM0MjlhMTk4YTA1MWQ0YjhmOGE4ZGMyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTE5IEBACisyMDE3LTAzLTEzICBCcmFkeSBFaWRzb24gIDxiZWlkc29u
QGFwcGxlLmNvbT4KKworICAgICAgICBXS1dlYlZpZXcgcHJvdmlkZXMgbm8gYWNjZXNzIHRvIGNv
b2tpZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NDAxOTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
aGlzIGFkZHMgYSBuZXcgX1dLSFRUUENvb2tpZU1hbmFnZXIgU1BJLgorICAgICAgICBJdCBmb2xs
b3dzIHRoZSBOU0hUVFBDb29raWVTdG9yYWdlIEFQSSBidXQgYXN5bmNocm9ub3VzICh3aXRoIGNv
bXBsZXRpb24gaGFuZGxlcnMpLgorICAgICAgICBBZnRlciB0aGUgaW1wbGVtZW50YXRpb24gaXMg
bGFuZGVkIGFuZCB3ZSByZXZpZXcgaW50ZXJuYWxseSB3ZSdsbCBjb25zaWRlciBwcm9tb3Rpbmcg
dG8gQVBJLgorICAgICAgICAKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBX
ZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKKyAgICAgICAgKiBTaGFyZWQvQVBJ
L0FQSU9iamVjdC5oOgorICAgICAgICAqIFNoYXJlZC9Db2NvYS9BUElPYmplY3QubW06CisgICAg
ICAgIChBUEk6Ok9iamVjdDo6bmV3T2JqZWN0KToKKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
QVBJSFRUUENvb2tpZVN0b3JhZ2UuY3BwOiBBZGRlZC4KKyAgICAgICAgKEFQSTo6SFRUUENvb2tp
ZVN0b3JhZ2U6OkhUVFBDb29raWVTdG9yYWdlKToKKyAgICAgICAgKEFQSTo6SFRUUENvb2tpZVN0
b3JhZ2U6On5IVFRQQ29va2llU3RvcmFnZSk6CisgICAgICAgIChBUEk6OkhUVFBDb29raWVTdG9y
YWdlOjpjb29raWVzKToKKyAgICAgICAgKEFQSTo6SFRUUENvb2tpZVN0b3JhZ2U6OnNldENvb2tp
ZSk6CisgICAgICAgIChBUEk6OkhUVFBDb29raWVTdG9yYWdlOjpzZXRDb29raWVzKToKKyAgICAg
ICAgKEFQSTo6SFRUUENvb2tpZVN0b3JhZ2U6OmRlbGV0ZUNvb2tpZSk6CisgICAgICAgIChBUEk6
OkhUVFBDb29raWVTdG9yYWdlOjpyZW1vdmVDb29raWVzU2luY2VEYXRlKToKKyAgICAgICAgKEFQ
STo6SFRUUENvb2tpZVN0b3JhZ2U6OnNldEhUVFBDb29raWVBY2NlcHRQb2xpY3kpOgorICAgICAg
ICAoQVBJOjpIVFRQQ29va2llU3RvcmFnZTo6Z2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElIVFRQQ29va2llU3RvcmFnZS5oOiBBZGRlZC4KKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5jcHA6CisgICAgICAg
IChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmUpOgorICAgICAgICAoQVBJ
OjpXZWJzaXRlRGF0YVN0b3JlOjpodHRwQ29va2llU3RvcmFnZSk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmg6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0MvV0tDb29raWVNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdLQ29va2llTWFuYWdlckRlbGV0ZUFs
bENvb2tpZXNNb2RpZmllZEFmdGVyRGF0ZSk6CisgICAgICAgIChXS0Nvb2tpZU1hbmFnZXJTZXRI
VFRQQ29va2llQWNjZXB0UG9saWN5KToKKyAgICAgICAgKFdLQ29va2llTWFuYWdlckdldEhUVFBD
b29raWVBY2NlcHRQb2xpY3kpOgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0
ZURhdGFTdG9yZVJlZi5jcHA6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVHZXREZWZhdWx0
RGF0YVN0b3JlKToKKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9v
bC5tbToKKyAgICAgICAgKC1bV0tQcm9jZXNzUG9vbCBfc2V0Q29va2llQWNjZXB0UG9saWN5Ol0p
OgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW06
CisgICAgICAgICgrW1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0RGF0YVN0b3JlXSk6CisgICAg
ICAgICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBfaHR0cENvb2tpZVN0b3JhZ2VdKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaDoKKyAgICAg
ICAgCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0hUVFBDb29raWVTdG9yYWdlLmg6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0hUVFBDb29raWVTdG9yYWdlLm1tOiBB
ZGRlZC4KKyAgICAgICAgKGNvcmVDb29raWVzVG9OU0Nvb2tpZXMpOgorICAgICAgICAoLVtXS0hU
VFBDb29raWVTdG9yYWdlIGRlYWxsb2NdKToKKyAgICAgICAgKC1bV0tIVFRQQ29va2llU3RvcmFn
ZSBmZXRjaENvb2tpZXM6XSk6CisgICAgICAgICgtW1dLSFRUUENvb2tpZVN0b3JhZ2UgZmV0Y2hD
b29raWVzRm9yVVJMOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS0hUVFBDb29r
aWVTdG9yYWdlIHNldENvb2tpZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tI
VFRQQ29va2llU3RvcmFnZSBkZWxldGVDb29raWU6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAg
ICAgICgtW1dLSFRUUENvb2tpZVN0b3JhZ2Ugc2V0Q29va2llczpmb3JVUkw6bWFpbkRvY3VtZW50
VVJMOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS0hUVFBDb29raWVTdG9yYWdl
IHJlbW92ZUNvb2tpZXNTaW5jZURhdGU6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgt
W1dLSFRUUENvb2tpZVN0b3JhZ2Ugc2V0Q29va2llQWNjZXB0UG9saWN5OmNvbXBsZXRpb25IYW5k
bGVyOl0pOgorICAgICAgICAoa2l0Q29va2llUG9saWN5VG9OU0Nvb2tpZVBvbGljeSk6CisgICAg
ICAgICgtW1dLSFRUUENvb2tpZVN0b3JhZ2UgZmV0Y2hDb29raWVBY2NlcHRQb2xpY3k6XSk6Cisg
ICAgICAgICgtW1dLSFRUUENvb2tpZVN0b3JhZ2UgX2FwaU9iamVjdF0pOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tIVFRQQ29va2llU3RvcmFnZUludGVybmFsLmg6IENvcGllZCBm
cm9tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3Jl
UHJpdmF0ZS5oLgorICAgICAgICAoV2ViS2l0Ojp3cmFwcGVyKToKKworICAgICAgICAqIFVJUHJv
Y2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViQXV0b21hdGlvblNlc3Npb246OmFkZFNpbmdsZUNvb2tpZSk6CisKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
Q29va2llTWFuYWdlclByb3h5OjpnZXRIb3N0bmFtZXNXaXRoQ29va2llcyk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKToK
KyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlclByb3h5OjpkZWxldGVBbGxDb29raWVz
KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlclByb3h5OjpkZWxldGVDb29raWUp
OgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRlbGV0ZUFsbENvb2tp
ZXNNb2RpZmllZFNpbmNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlclByb3h5
OjpzZXRDb29raWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OnNl
dENvb2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OmdldEFs
bENvb2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OmdldENv
b2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRpZFNldENv
b2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRpZEdldENv
b2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRpZERlbGV0
ZUNvb2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OnN0YXJ0
T2JzZXJ2aW5nQ29va2llQ2hhbmdlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFn
ZXJQcm94eTo6c3RvcE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJDb29raWVNYW5hZ2VyUHJveHk6OnNldENvb2tpZU9ic2VydmVyQ2FsbGJhY2spOgorICAgICAg
ICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OmNvb2tpZXNEaWRDaGFuZ2UpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OnNldEhUVFBDb29raWVBY2NlcHRQ
b2xpY3kpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OmdldEhUVFBD
b29raWVBY2NlcHRQb2xpY3kpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJv
eHk6OmRpZEdldEhUVFBDb29raWVBY2NlcHRQb2xpY3kpOgorICAgICAgICAoV2ViS2l0OjpXZWJD
b29raWVNYW5hZ2VyUHJveHk6OmRpZFNldEhUVFBDb29raWVBY2NlcHRQb2xpY3kpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViQ29va2llTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluOgorCisgICAgICAgICogVUlQcm9j
ZXNzL1dlYkZyYW1lUHJveHkuaDoKKyAgICAgICAgCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKyAg
ICAgICAgCisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpwcm9jZXNzUG9vbEZvckNv
b2tpZVN0b3JhZ2VPcGVyYXRpb25zKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9y
ZTo6cHJvY2Vzc1Bvb2xzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0
ZURhdGFTdG9yZS5oOgorICAgICAgICAKKyAgICAgICAgKiBXZWJQcm9jZXNzL0Nvb2tpZXMvV2Vi
Q29va2llTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXI6OmRl
bGV0ZUNvb2tpZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXI6OmRlbGV0ZUFs
bENvb2tpZXNNb2RpZmllZFNpbmNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdl
cjo6Z2V0QWxsQ29va2llcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXI6Omdl
dENvb2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyOjpzZXRDb29raWUp
OgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyOjpzZXRDb29raWVzKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlcjo6c2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5tZXNzYWdlcy5pbjoKKwog
MjAxNy0wMy0xMiAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAg
VHJhbnNpdGlvbiBHZW5lcmljQ2FsbGJhY2sgZnJvbSBzdGQ6OmZ1bmN0aW9uIHRvIFdURjo6RnVu
Y3Rpb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db29raWUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nvb2tpZS5oCmluZGV4IGU0N2U3YmJmZjViYjNhYmM2M2Fi
M2Y5MjhmYzI3NDE1NWUxMDRmYTcuLjVkZGI5MzU0Y2U4ZDE5ZTdhNzU0Yjk3Y2UzYTAzODE1M2Yz
NjQ2OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nvb2tpZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nvb2tpZS5oCkBAIC01OCw3ICs1OCw3IEBAIHN0cnVj
dCBDb29raWUgewogCiAjaWZkZWYgX19PQkpDX18KICAgICBXRUJDT1JFX0VYUE9SVCBDb29raWUo
TlNIVFRQQ29va2llICopOwotICAgIG9wZXJhdG9yIE5TSFRUUENvb2tpZSAqKCkgY29uc3Q7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgb3BlcmF0b3IgTlNIVFRQQ29va2llICooKSBjb25zdDsKICNlbmRp
ZgogCiAgICAgU3RyaW5nIG5hbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaAppbmRleCBmMTQ4OWM2YjQyYTFkNDVh
ZjljYWE2MmNhMjZkMTcwNWI0NmIzNzQ4Li4yMTJiZTI2NGVhNWNjNzY1OGE4ZGYyZWYzZTM1OTY4
MTg1MTQ5ZWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05l
dHdvcmtTdG9yYWdlU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgKQEAgLTEwMCw3ICsxMDAsMTEgQEAgcHVibGljOgog
ICAgIE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0KCkgY29uc3Q7CiAjZW5kaWYKIAorICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgc2V0Q29va2llKGNvbnN0IENvb2tpZSYpOwogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgc2V0Q29va2llcyhjb25zdCBWZWN0b3I8Q29va2llPiYsIGNvbnN0IFVSTCYs
IGNvbnN0IFVSTCYgbWFpbkRvY3VtZW50VVJMKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRl
bGV0ZUNvb2tpZShjb25zdCBDb29raWUmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8Q29v
a2llPiBnZXRBbGxDb29raWVzKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPENvb2tpZT4g
Z2V0Q29va2llcyhjb25zdCBVUkwmKTsKIAogcHJpdmF0ZToKICAgICBzdGF0aWMgSGFzaE1hcDxT
ZXNzaW9uSUQsIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrU3RvcmFnZVNlc3Npb24+PiYgZ2xvYmFs
U2Vzc2lvbk1hcCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jb2NvYS9OZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2EubW0KaW5kZXgg
NDRhZWFiNzBlOTliNWZhMGE4NGVjZmQzNTdlMzQ1ODNkZWZjMDFlMC4uNGM5NTY3ZTljNjdhMGE0
NzY3NmE4ZmM3ZjhlZDRhZjRkZTE1NTI5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtTdG9yYWdlU2Vzc2lv
bkNvY29hLm1tCkBAIC0zMiw2ICszMiwxMyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3Zv
aWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRDb29raWUoY29uc3QgQ29va2llJiBjb29raWUp
Cit7CisgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOworICAgIFtuc0Nvb2tpZVN0b3Jh
Z2UoKSBzZXRDb29raWU6KE5TSFRUUENvb2tpZSAqKWNvb2tpZV07CisgICAgRU5EX0JMT0NLX09C
SkNfRVhDRVBUSU9OUzsKK30KKwogdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldENvb2tp
ZXMoY29uc3QgVmVjdG9yPENvb2tpZT4mIGNvb2tpZXMsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBV
UkwmIG1haW5Eb2N1bWVudFVSTCkKIHsKICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IG5z
Q29va2llcyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0
eTpjb29raWVzLnNpemUoKV0pOwpAQCAtNDMsNiArNTAsMzEgQEAgdm9pZCBOZXR3b3JrU3RvcmFn
ZVNlc3Npb246OnNldENvb2tpZXMoY29uc3QgVmVjdG9yPENvb2tpZT4mIGNvb2tpZXMsIGNvbnN0
IFVSTCYKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogfQogCit2b2lkIE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbjo6ZGVsZXRlQ29va2llKGNvbnN0IENvb2tpZSYgY29va2llKQoreworICAg
IFtuc0Nvb2tpZVN0b3JhZ2UoKSBkZWxldGVDb29raWU6KE5TSFRUUENvb2tpZSAqKWNvb2tpZV07
Cit9CisKK3N0YXRpYyBWZWN0b3I8Q29va2llPiBuc0Nvb2tpZXNUb0Nvb2tpZVZlY3RvcihOU0Fy
cmF5PE5TSFRUUENvb2tpZSAqPiAqbnNDb29raWVzKQoreworICAgIFZlY3RvcjxDb29raWU+IGNv
b2tpZXM7CisgICAgY29va2llcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG5zQ29va2llcy5jb3Vu
dCk7CisgICAgZm9yIChOU0hUVFBDb29raWUgKm5zQ29va2llIGluIG5zQ29va2llcykKKyAgICAg
ICAgY29va2llcy51bmNoZWNrZWRBcHBlbmQobnNDb29raWUpOworCisgICAgcmV0dXJuIGNvb2tp
ZXM7Cit9CisKK1ZlY3RvcjxDb29raWU+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0QWxsQ29v
a2llcygpCit7CisgICAgcmV0dXJuIG5zQ29va2llc1RvQ29va2llVmVjdG9yKG5zQ29va2llU3Rv
cmFnZSgpLmNvb2tpZXMpOworfQorCitWZWN0b3I8Q29va2llPiBOZXR3b3JrU3RvcmFnZVNlc3Np
b246OmdldENvb2tpZXMoY29uc3QgVVJMJiB1cmwpCit7CisgICAgcmV0dXJuIG5zQ29va2llc1Rv
Q29va2llVmVjdG9yKFtuc0Nvb2tpZVN0b3JhZ2UoKSBjb29raWVzRm9yVVJMOihOU1VSTCAqKXVy
bF0pOworfQorCiBOU0hUVFBDb29raWVTdG9yYWdlICpOZXR3b3JrU3RvcmFnZVNlc3Npb246Om5z
Q29va2llU3RvcmFnZSgpIGNvbnN0CiB7CiAgICAgYXV0byBjZkNvb2tpZVN0b3JhZ2UgPSBjb29r
aWVTdG9yYWdlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L3NvdXAvTmV0d29ya1N0b3JhZ2VTZXNzaW9uU291cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL3NvdXAvTmV0d29ya1N0b3JhZ2VTZXNzaW9uU291cC5jcHAKaW5kZXggMjQ5
YmQ4MmJkNzRlOGM2MmE5YzM1NzAzN2Y5ODM4NTA0ZmE1N2FjZC4uYTM3YWE3ZGQxMGVmODliYmY2
ZjAwNTYzOWNiYWFjOGM4YjhjNWIxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lvblNvdXAuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3Vw
LmNwcApAQCAtMzA0LDYgKzMwNCwyMCBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0
Q29va2llcyhjb25zdCBWZWN0b3I8Q29va2llPiYgY29va2llcywgY29uc3QgVVJMJgogICAgICAg
ICBzb3VwX2Nvb2tpZV9qYXJfYWRkX2Nvb2tpZShjb29raWVTdG9yYWdlKCksIHRvU291cENvb2tp
ZShjb29raWUpKTsKIH0KIAordm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlbGV0ZUNvb2tp
ZShjb25zdCBDb29raWUmKQoreworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgZm9yIFdLMiB0byB1
c2UuCit9CisKK1ZlY3RvcjxDb29raWU+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0QWxsQ29v
a2llcygpCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudCBmb3IgV0syIHRvIHVzZS4KK30KKwor
VmVjdG9yPENvb2tpZT4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpnZXRDb29raWVzKGNvbnN0IFVS
TCYpCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudCBmb3IgV0syIHRvIHVzZS4KK30KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxp
c3RzLnR4dCBiL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0CmluZGV4IDgxZmY4ZGE4MTEy
NDNlNTQxYTNjNjk4NGM5ZmE3OGIwOTdjOWRiZTYuLmE4ZmRjZDExYjNhNjIzNjY2MzcxN2RhMzQ5
NjFlZTE2MDQ2OGU2OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0
CisrKyBiL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0CkBAIC0zMzYsNiArMzM2LDcgQEAg
c2V0KFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9BUEkvQVBJQ29udGVudEV4dGVuc2lv
blN0b3JlLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvQVBJRXhwZXJpbWVudGFsRmVhdHVyZS5jcHAK
ICAgICBVSVByb2Nlc3MvQVBJL0FQSUZyYW1lSW5mby5jcHAKKyAgICBVSVByb2Nlc3MvQVBJL0FQ
SUhUVFBDb29raWVTdG9yYWdlLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvQVBJSGl0VGVzdFJlc3Vs
dC5jcHAKICAgICBVSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb24uY3BwCiAgICAgVUlQcm9jZXNz
L0FQSS9BUElOYXZpZ2F0aW9uRGF0YS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcAppbmRleCBkOGRjZGUz
MzA4ZDRiZjc1MzU3MmE0NzdiMTdjYTFmMDFiODJhM2MwLi4yNjA3MGYwMTE0ZTE3MjY3MjExMGRi
MDI3MWRhNDk3YTFkMmExOTM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrUHJvY2Vzc1NvdXAuY3BwCkBAIC0xMjQsNyArMTI0LDcg
QEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3Mo
Y29uc3QgTmV0d29ya1Byb2Nlc3NDcmVhdGkKICAgICAgICAgc3VwcGxlbWVudDxXZWJDb29raWVN
YW5hZ2VyPigpLT5zZXRDb29raWVQZXJzaXN0ZW50U3RvcmFnZShwYXJhbWV0ZXJzLmNvb2tpZVBl
cnNpc3RlbnRTdG9yYWdlUGF0aCwKICAgICAgICAgICAgIHBhcmFtZXRlcnMuY29va2llUGVyc2lz
dGVudFN0b3JhZ2VUeXBlKTsKICAgICB9Ci0gICAgc3VwcGxlbWVudDxXZWJDb29raWVNYW5hZ2Vy
PigpLT5zZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHBhcmFtZXRlcnMuY29va2llQWNjZXB0UG9s
aWN5KTsKKyAgICBzdXBwbGVtZW50PFdlYkNvb2tpZU1hbmFnZXI+KCktPnNldEhUVFBDb29raWVB
Y2NlcHRQb2xpY3kocGFyYW1ldGVycy5jb29raWVBY2NlcHRQb2xpY3ksIDApOwogCiAgICAgaWYg
KCFwYXJhbWV0ZXJzLmxhbmd1YWdlcy5pc0VtcHR5KCkpCiAgICAgICAgIHVzZXJQcmVmZXJyZWRM
YW5ndWFnZXNDaGFuZ2VkKHBhcmFtZXRlcnMubGFuZ3VhZ2VzKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9BUEkvQVBJT2JqZWN0LmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
QVBJL0FQSU9iamVjdC5oCmluZGV4IGFlMGZjOTk4NWJkMjc2NDc2ODI3ODlmZjRjNGY0NjZhMWVj
MzQ2MGEuLjQ2ZjI3OTFkZGZjNDUyNDJiYTM1MTRiMDVmOTYzMzE4ZTJmZTUxYjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvQVBJT2JqZWN0LmgKKysrIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL0FQSS9BUElPYmplY3QuaApAQCAtMTE2LDYgKzExNiw3IEBAIHB1YmxpYzoK
ICAgICAgICAgRnVsbFNjcmVlbk1hbmFnZXIsCiAgICAgICAgIEdlb2xvY2F0aW9uTWFuYWdlciwK
ICAgICAgICAgR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdCwKKyAgICAgICAgSFRUUENvb2tp
ZVN0b3JhZ2UsCiAgICAgICAgIEhpdFRlc3RSZXN1bHQsCiAgICAgICAgIEdlb2xvY2F0aW9uUG9z
aXRpb24sCiAgICAgICAgIEdyYW1tYXJEZXRhaWwsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQ29jb2EvQVBJT2JqZWN0Lm1tIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0NvY29h
L0FQSU9iamVjdC5tbQppbmRleCAxMTYzMjQ1NDIwY2QyNzczODA0YjIyNTM0Y2I5OWMwZmFkNDE3
MjIyLi5kYzY5YWQ3OTM5YzVmNGNkMGYwMTFlN2E2ZTdkNDdhMjc4ZDZmOTRjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29jb2EvQVBJT2JqZWN0Lm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9Db2NvYS9BUElPYmplY3QubW0KQEAgLTM2LDYgKzM2LDcgQEAKICNpbXBv
cnQgIldLQ29udGVudEV4dGVuc2lvbkludGVybmFsLmgiCiAjaW1wb3J0ICJXS0NvbnRlbnRFeHRl
bnNpb25TdG9yZUludGVybmFsLmgiCiAjaW1wb3J0ICJXS0ZyYW1lSW5mb0ludGVybmFsLmgiCisj
aW1wb3J0ICJXS0hUVFBDb29raWVTdG9yYWdlSW50ZXJuYWwuaCIKICNpbXBvcnQgIldLTlNBcnJh
eS5oIgogI2ltcG9ydCAiV0tOU0RhdGEuaCIKICNpbXBvcnQgIldLTlNEaWN0aW9uYXJ5LmgiCkBA
IC0xNzgsNiArMTc5LDEwIEBAIHZvaWQqIE9iamVjdDo6bmV3T2JqZWN0KHNpemVfdCBzaXplLCBU
eXBlIHR5cGUpCiAgICAgICAgIHdyYXBwZXIgPSBbV0tGcmFtZUluZm8gYWxsb2NdOwogICAgICAg
ICBicmVhazsKIAorICAgIGNhc2UgVHlwZTo6SFRUUENvb2tpZVN0b3JhZ2U6CisgICAgICAgIHdy
YXBwZXIgPSBbV0tIVFRQQ29va2llU3RvcmFnZSBhbGxvY107CisgICAgICAgIGJyZWFrOworCiAj
aWYgUExBVEZPUk0oTUFDKQogICAgIGNhc2UgVHlwZTo6SGl0VGVzdFJlc3VsdDoKICAgICAgICAg
d3JhcHBlciA9IFtfV0tIaXRUZXN0UmVzdWx0IGFsbG9jXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3JhZ2UuY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9BUElIVFRQQ29va2llU3RvcmFnZS5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MzM4Yjg1MjRiOWZjODlmMTRhYzg0NjIzNWMxN2NiNTExYjQ4YjhlMwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3JhZ2UuY3Bw
CkBAIC0wLDAgKzEsMTM4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIkFQSUhUVFBDb29raWVTdG9yYWdlLmgiCisKKyNpbmNsdWRlICJBUElXZWJzaXRlRGF0
YVN0b3JlLmgiCisjaW5jbHVkZSAiV2ViQ29va2llTWFuYWdlclByb3h5LmgiCisjaW5jbHVkZSAi
V2ViUHJvY2Vzc1Bvb2wuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0Nvb2tpZS5oPgorCit1c2luZyBu
YW1lc3BhY2UgV2ViS2l0OworCituYW1lc3BhY2UgQVBJIHsKKworSFRUUENvb2tpZVN0b3JhZ2U6
OkhUVFBDb29raWVTdG9yYWdlKFdlYnNpdGVEYXRhU3RvcmUmIHdlYnNpdGVEYXRhU3RvcmUpCisg
ICAgOiBtX293bmluZ0RhdGFTdG9yZSh3ZWJzaXRlRGF0YVN0b3JlKQoreworfQorCitIVFRQQ29v
a2llU3RvcmFnZTo6fkhUVFBDb29raWVTdG9yYWdlKCkKK3sKK30KKwordm9pZCBIVFRQQ29va2ll
U3RvcmFnZTo6Y29va2llcyhGdW5jdGlvbjx2b2lkIChjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29v
a2llPiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGF1dG8mIGRhdGFTdG9yZSA9IG1f
b3duaW5nRGF0YVN0b3JlLndlYnNpdGVEYXRhU3RvcmUoKTsKKyAgICBhdXRvIHBvb2wgPSBkYXRh
U3RvcmUucHJvY2Vzc1Bvb2xGb3JDb29raWVTdG9yYWdlT3BlcmF0aW9ucygpOworICAgIGF1dG8q
IGNvb2tpZU1hbmFnZXIgPSBwb29sLT5zdXBwbGVtZW50PFdlYktpdDo6V2ViQ29va2llTWFuYWdl
clByb3h5PigpOworCisgICAgY29va2llTWFuYWdlci0+Z2V0QWxsQ29va2llcyhkYXRhU3RvcmUu
c2Vzc2lvbklEKCksIFtwb29sID0gV1RGTW92ZShwb29sKSwgY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4m
IGNvb2tpZXMsIENhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKKyAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoY29va2llcyk7CisgICAgfSk7Cit9CisKK3ZvaWQgSFRUUENvb2tpZVN0b3JhZ2U6
OmNvb2tpZXMoY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwsIEZ1bmN0aW9uPHZvaWQgKGNvbnN0IFZl
Y3RvcjxXZWJDb3JlOjpDb29raWU+Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgYXV0
byYgZGF0YVN0b3JlID0gbV9vd25pbmdEYXRhU3RvcmUud2Vic2l0ZURhdGFTdG9yZSgpOworICAg
IGF1dG8gcG9vbCA9IGRhdGFTdG9yZS5wcm9jZXNzUG9vbEZvckNvb2tpZVN0b3JhZ2VPcGVyYXRp
b25zKCk7CisgICAgYXV0byogY29va2llTWFuYWdlciA9IHBvb2wtPnN1cHBsZW1lbnQ8V2ViS2l0
OjpXZWJDb29raWVNYW5hZ2VyUHJveHk+KCk7CisKKyAgICBjb29raWVNYW5hZ2VyLT5nZXRDb29r
aWVzKGRhdGFTdG9yZS5zZXNzaW9uSUQoKSwgdXJsLCBbcG9vbCA9IFdURk1vdmUocG9vbCksIGNv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKGNvbnN0IFZlY3Rv
cjxXZWJDb3JlOjpDb29raWU+JiBjb29raWVzLCBDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7
CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGNvb2tpZXMpOworICAgIH0pOworfQorCit2b2lk
IEhUVFBDb29raWVTdG9yYWdlOjpzZXRDb29raWUoY29uc3QgV2ViQ29yZTo6Q29va2llJiBjb29r
aWUsIEZ1bmN0aW9uPHZvaWQgKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgYXV0byYg
ZGF0YVN0b3JlID0gbV9vd25pbmdEYXRhU3RvcmUud2Vic2l0ZURhdGFTdG9yZSgpOworICAgIGF1
dG8gcG9vbCA9IGRhdGFTdG9yZS5wcm9jZXNzUG9vbEZvckNvb2tpZVN0b3JhZ2VPcGVyYXRpb25z
KCk7CisgICAgYXV0byogY29va2llTWFuYWdlciA9IHBvb2wtPnN1cHBsZW1lbnQ8V2ViS2l0OjpX
ZWJDb29raWVNYW5hZ2VyUHJveHk+KCk7CisKKyAgICBjb29raWVNYW5hZ2VyLT5zZXRDb29raWUo
ZGF0YVN0b3JlLnNlc3Npb25JRCgpLCBjb29raWUsIFtwb29sID0gV1RGTW92ZShwb29sKSwgY29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oQ2FsbGJhY2tCYXNl
OjpFcnJvciBlcnJvcikgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAgIH0pOwor
fQorCit2b2lkIEhUVFBDb29raWVTdG9yYWdlOjpzZXRDb29raWVzKGNvbnN0IFZlY3RvcjxXZWJD
b3JlOjpDb29raWU+JiBjb29raWVzLCBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCwgY29uc3QgV2Vi
Q29yZTo6VVJMJiBtYWluRG9jdW1lbnRVUkwsIEZ1bmN0aW9uPHZvaWQgKCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCit7CisgICAgYXV0byYgZGF0YVN0b3JlID0gbV9vd25pbmdEYXRhU3RvcmUud2Vi
c2l0ZURhdGFTdG9yZSgpOworICAgIGF1dG8gcG9vbCA9IGRhdGFTdG9yZS5wcm9jZXNzUG9vbEZv
ckNvb2tpZVN0b3JhZ2VPcGVyYXRpb25zKCk7CisgICAgYXV0byogY29va2llTWFuYWdlciA9IHBv
b2wtPnN1cHBsZW1lbnQ8V2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk+KCk7CisKKyAgICBj
b29raWVNYW5hZ2VyLT5zZXRDb29raWVzKGRhdGFTdG9yZS5zZXNzaW9uSUQoKSwgY29va2llcywg
dXJsLCBtYWluRG9jdW1lbnRVUkwsIFtwb29sID0gV1RGTW92ZShwb29sKSwgY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oQ2FsbGJhY2tCYXNlOjpFcnJvciBl
cnJvcikgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAgIH0pOworfQorCit2b2lk
IEhUVFBDb29raWVTdG9yYWdlOjpkZWxldGVDb29raWUoY29uc3QgV2ViQ29yZTo6Q29va2llJiBj
b29raWUsIEZ1bmN0aW9uPHZvaWQgKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgYXV0
byYgZGF0YVN0b3JlID0gbV9vd25pbmdEYXRhU3RvcmUud2Vic2l0ZURhdGFTdG9yZSgpOworICAg
IGF1dG8gcG9vbCA9IGRhdGFTdG9yZS5wcm9jZXNzUG9vbEZvckNvb2tpZVN0b3JhZ2VPcGVyYXRp
b25zKCk7CisgICAgYXV0byogY29va2llTWFuYWdlciA9IHBvb2wtPnN1cHBsZW1lbnQ8V2ViS2l0
OjpXZWJDb29raWVNYW5hZ2VyUHJveHk+KCk7CisKKyAgICBjb29raWVNYW5hZ2VyLT5kZWxldGVD
b29raWUoZGF0YVN0b3JlLnNlc3Npb25JRCgpLCBjb29raWUsIFtwb29sID0gV1RGTW92ZShwb29s
KSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oQ2FsbGJh
Y2tCYXNlOjpFcnJvciBlcnJvcikgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAg
IH0pOworfQorCit2b2lkIEhUVFBDb29raWVTdG9yYWdlOjpyZW1vdmVDb29raWVzU2luY2VEYXRl
KHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgZGF0ZSwgRnVuY3Rpb248dm9p
ZCAoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBhdXRvJiBkYXRhU3RvcmUgPSBtX293
bmluZ0RhdGFTdG9yZS53ZWJzaXRlRGF0YVN0b3JlKCk7CisgICAgYXV0byBwb29sID0gZGF0YVN0
b3JlLnByb2Nlc3NQb29sRm9yQ29va2llU3RvcmFnZU9wZXJhdGlvbnMoKTsKKyAgICBhdXRvKiBj
b29raWVNYW5hZ2VyID0gcG9vbC0+c3VwcGxlbWVudDxXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQ
cm94eT4oKTsKKworICAgIGNvb2tpZU1hbmFnZXItPmRlbGV0ZUFsbENvb2tpZXNNb2RpZmllZFNp
bmNlKGRhdGFTdG9yZS5zZXNzaW9uSUQoKSwgZGF0ZSwgW3Bvb2wgPSBXVEZNb3ZlKHBvb2wpLCBj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShDYWxsYmFja0Jh
c2U6OkVycm9yIGVycm9yKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgfSk7
Cit9CisKK3ZvaWQgSFRUUENvb2tpZVN0b3JhZ2U6OnNldEhUVFBDb29raWVBY2NlcHRQb2xpY3ko
SFRUUENvb2tpZUFjY2VwdFBvbGljeSBwb2xpY3ksIEZ1bmN0aW9uPHZvaWQgKCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCit7CisgICAgYXV0byYgZGF0YVN0b3JlID0gbV9vd25pbmdEYXRhU3RvcmUu
d2Vic2l0ZURhdGFTdG9yZSgpOworICAgIGF1dG8gcG9vbCA9IGRhdGFTdG9yZS5wcm9jZXNzUG9v
bEZvckNvb2tpZVN0b3JhZ2VPcGVyYXRpb25zKCk7CisgICAgYXV0byogY29va2llTWFuYWdlciA9
IHBvb2wtPnN1cHBsZW1lbnQ8V2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk+KCk7CisKKyAg
ICBjb29raWVNYW5hZ2VyLT5zZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KGRhdGFTdG9yZS5zZXNz
aW9uSUQoKSwgcG9saWN5LCBbcG9vbCA9IFdURk1vdmUocG9vbCksIGNvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKENhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3Ip
IHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICB9KTsKK30KKwordm9pZCBIVFRQ
Q29va2llU3RvcmFnZTo6Z2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShGdW5jdGlvbjx2b2lkIChI
VFRQQ29va2llQWNjZXB0UG9saWN5KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBhdXRv
JiBkYXRhU3RvcmUgPSBtX293bmluZ0RhdGFTdG9yZS53ZWJzaXRlRGF0YVN0b3JlKCk7CisgICAg
YXV0byBwb29sID0gZGF0YVN0b3JlLnByb2Nlc3NQb29sRm9yQ29va2llU3RvcmFnZU9wZXJhdGlv
bnMoKTsKKyAgICBhdXRvKiBjb29raWVNYW5hZ2VyID0gcG9vbC0+c3VwcGxlbWVudDxXZWJLaXQ6
OldlYkNvb2tpZU1hbmFnZXJQcm94eT4oKTsKKworICAgIGNvb2tpZU1hbmFnZXItPmdldEhUVFBD
b29raWVBY2NlcHRQb2xpY3koZGF0YVN0b3JlLnNlc3Npb25JRCgpLCBbcG9vbCA9IFdURk1vdmUo
cG9vbCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKEhU
VFBDb29raWVBY2NlcHRQb2xpY3kgcG9saWN5LCBDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7
CisgICAgICAgIGlmIChlcnJvciAhPSBDYWxsYmFja0Jhc2U6OkVycm9yOjpOb25lKQorICAgICAg
ICAgICAgcG9saWN5ID0gSFRUUENvb2tpZUFjY2VwdFBvbGljeU5ldmVyOworCisgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKHBvbGljeSk7CisgICAgfSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEFQ
SQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElIVFRQQ29va2ll
U3RvcmFnZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElIVFRQQ29va2llU3Rv
cmFnZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmFkZjdiYTI1NmI2ODMwZTQzMDVkOTlkNjBkNzE1MzRhYzg2Zjlk
MzAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSUhU
VFBDb29raWVTdG9yYWdlLmgKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCisjaW5jbHVkZSAiSFRUUENvb2tpZUFjY2Vw
dFBvbGljeS5oIgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgVVJMOworc3RydWN0IENvb2tpZTsK
K30KKworbmFtZXNwYWNlIEFQSSB7CisKK2NsYXNzIFdlYnNpdGVEYXRhU3RvcmU7CisKK2NsYXNz
IEhUVFBDb29raWVTdG9yYWdlIGZpbmFsIDogcHVibGljIE9iamVjdEltcGw8T2JqZWN0OjpUeXBl
OjpIVFRQQ29va2llU3RvcmFnZT4geworcHVibGljOgorICAgIHN0YXRpYyBSZWY8SFRUUENvb2tp
ZVN0b3JhZ2U+IGNyZWF0ZShXZWJzaXRlRGF0YVN0b3JlJiB3ZWJzaXRlRGF0YVN0b3JlKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSFRUUENvb2tpZVN0b3JhZ2Uod2Vic2l0
ZURhdGFTdG9yZSkpOworICAgIH0KKworICAgIHZpcnR1YWwgfkhUVFBDb29raWVTdG9yYWdlKCk7
CisKKyAgICB2b2lkIGNvb2tpZXMoRnVuY3Rpb248dm9pZCAoY29uc3QgVmVjdG9yPFdlYkNvcmU6
OkNvb2tpZT4mKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7CisgICAgdm9pZCBjb29raWVzKGNvbnN0
IFdlYkNvcmU6OlVSTCYsIEZ1bmN0aW9uPHZvaWQgKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29r
aWU+Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpOworCisgICAgdm9pZCBzZXRDb29raWUoY29uc3Qg
V2ViQ29yZTo6Q29va2llJiwgRnVuY3Rpb248dm9pZCAoKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7
CisgICAgdm9pZCBzZXRDb29raWVzKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiwgY29u
c3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBtYWluRG9jdW1lbnRVUkwsIEZ1
bmN0aW9uPHZvaWQgKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpOworICAgIHZvaWQgZGVsZXRlQ29v
a2llKGNvbnN0IFdlYkNvcmU6OkNvb2tpZSYsIEZ1bmN0aW9uPHZvaWQgKCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpOworCisgICAgdm9pZCByZW1vdmVDb29raWVzU2luY2VEYXRlKHN0ZDo6Y2hyb25v
OjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQsIEZ1bmN0aW9uPHZvaWQgKCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpOworCisgICAgdm9pZCBzZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KFdlYktpdDo6
SFRUUENvb2tpZUFjY2VwdFBvbGljeSwgRnVuY3Rpb248dm9pZCAoKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcik7CisgICAgdm9pZCBnZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KEZ1bmN0aW9uPHZvaWQg
KFdlYktpdDo6SFRUUENvb2tpZUFjY2VwdFBvbGljeSk+JiYgY29tcGxldGlvbkhhbmRsZXIpOwor
ICAgIAorcHJpdmF0ZToKKyAgICBIVFRQQ29va2llU3RvcmFnZShXZWJzaXRlRGF0YVN0b3JlJik7
CisKKyAgICBXZWJzaXRlRGF0YVN0b3JlJiBtX293bmluZ0RhdGFTdG9yZTsKK307CisKK30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9y
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUu
Y3BwCmluZGV4IDVjNzhjY2Q3YWUyOTBlNDVlNzBmNDgzZjUwMjBiZGFhNzkwNGY3NWEuLmNhMWRm
NzU3MTBkOTI1N2EyYTliMGQyZDMwMmYwM2IxZWViMzc5MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmNwcApAQCAtMzEsMTMg
KzMxLDEzIEBACiAKIG5hbWVzcGFjZSBBUEkgewogCi1SZWZQdHI8V2Vic2l0ZURhdGFTdG9yZT4g
V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZSgpCitSZWY8V2Vic2l0ZURhdGFTdG9y
ZT4gV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZSgpCiB7CiAgICAgV2ViS2l0OjpJ
bml0aWFsaXplV2ViS2l0MigpOwogCiAgICAgc3RhdGljIFdlYnNpdGVEYXRhU3RvcmUqIGRlZmF1
bHREYXRhU3RvcmUgPSBhZG9wdFJlZihuZXcgV2Vic2l0ZURhdGFTdG9yZShkZWZhdWx0RGF0YVN0
b3JlQ29uZmlndXJhdGlvbigpKSkubGVha1JlZigpOwogCi0gICAgcmV0dXJuIGRlZmF1bHREYXRh
U3RvcmU7CisgICAgcmV0dXJuICpkZWZhdWx0RGF0YVN0b3JlOwogfQogCiBSZWY8V2Vic2l0ZURh
dGFTdG9yZT4gV2Vic2l0ZURhdGFTdG9yZTo6Y3JlYXRlTm9uUGVyc2lzdGVudERhdGFTdG9yZSgp
CkBAIC02NCw2ICs2NCwxNCBAQCBXZWJzaXRlRGF0YVN0b3JlOjp+V2Vic2l0ZURhdGFTdG9yZSgp
CiB7CiB9CiAKK0hUVFBDb29raWVTdG9yYWdlJiBXZWJzaXRlRGF0YVN0b3JlOjpodHRwQ29va2ll
U3RvcmFnZSgpCit7CisgICAgaWYgKCFtX2FwaUhUVFBDb29raWVTdG9yYWdlKQorICAgICAgICBt
X2FwaUhUVFBDb29raWVTdG9yYWdlID0gSFRUUENvb2tpZVN0b3JhZ2U6OmNyZWF0ZSgqdGhpcyk7
CisKKyAgICByZXR1cm4gKm1fYXBpSFRUUENvb2tpZVN0b3JhZ2U7Cit9CisKIGJvb2wgV2Vic2l0
ZURhdGFTdG9yZTo6aXNQZXJzaXN0ZW50KCkKIHsKICAgICByZXR1cm4gbV93ZWJzaXRlRGF0YVN0
b3JlLT5pc1BlcnNpc3RlbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9BUElXZWJzaXRlRGF0YVN0b3JlLmgKaW5kZXggMjY3ZDY5YzMzODQ5YTA4ZjgyMjg4NzFlMDFl
ZDg2MWFkODNiOGE3ZS4uY2E3NGRiY2M0NjdlNjU2NTJkMzc1M2ZkM2JjZDI0MzI5ODJmODc3OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0
b3JlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0
b3JlLmgKQEAgLTI2LDcgKzI2LDcgQEAKICNpZm5kZWYgQVBJV2Vic2l0ZURhdGFTdG9yZV9oCiAj
ZGVmaW5lIEFQSVdlYnNpdGVEYXRhU3RvcmVfaAogCi0jaW5jbHVkZSAiQVBJT2JqZWN0LmgiCisj
aW5jbHVkZSAiQVBJSFRUUENvb2tpZVN0b3JhZ2UuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YVN0
b3JlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KQEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNlIEFQSSB7CiAKIGNsYXNz
IFdlYnNpdGVEYXRhU3RvcmUgZmluYWwgOiBwdWJsaWMgT2JqZWN0SW1wbDxPYmplY3Q6OlR5cGU6
OldlYnNpdGVEYXRhU3RvcmU+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPFdlYnNpdGVE
YXRhU3RvcmU+IGRlZmF1bHREYXRhU3RvcmUoKTsKKyAgICBzdGF0aWMgUmVmPFdlYnNpdGVEYXRh
U3RvcmU+IGRlZmF1bHREYXRhU3RvcmUoKTsKICAgICBzdGF0aWMgUmVmPFdlYnNpdGVEYXRhU3Rv
cmU+IGNyZWF0ZU5vblBlcnNpc3RlbnREYXRhU3RvcmUoKTsKICAgICBzdGF0aWMgUmVmPFdlYnNp
dGVEYXRhU3RvcmU+IGNyZWF0ZShXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OkNvbmZpZ3VyYXRp
b24pOwogCkBAIC00OSw2ICs0OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlZ2lzdGVyU2hhcmVk
UmVzb3VyY2VMb2FkT2JzZXJ2ZXIoKTsKIAogICAgIFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZSYg
d2Vic2l0ZURhdGFTdG9yZSgpIHsgcmV0dXJuICptX3dlYnNpdGVEYXRhU3RvcmU7IH0KKyAgICBI
VFRQQ29va2llU3RvcmFnZSYgaHR0cENvb2tpZVN0b3JhZ2UoKTsKIAogICAgIHN0YXRpYyBTdHJp
bmcgZGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKTsKICAgICBzdGF0aWMgU3RyaW5n
IGRlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKTsKQEAgLTcwLDYgKzcxLDcgQEAgcHJpdmF0
ZToKICAgICBzdGF0aWMgU3RyaW5nIHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5TmFtZSk7CiAKICAgICBSZWZQdHI8V2Vi
S2l0OjpXZWJzaXRlRGF0YVN0b3JlPiBtX3dlYnNpdGVEYXRhU3RvcmU7CisgICAgUmVmUHRyPEhU
VFBDb29raWVTdG9yYWdlPiBtX2FwaUhUVFBDb29raWVTdG9yYWdlOwogfTsKIAogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29va2llTWFuYWdlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb29raWVNYW5hZ2VyLmNwcAppbmRl
eCAyNzhlODNjNTFlMDQwOGEzY2RiY2MxNThkNTNlM2E0YjFmNzY0OWY3Li44MGFjOGE4NjI0MDkx
NGZhOGFlMDhmMzhhZjk4YWNjYTVkYTk1NGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvV0tDb29raWVNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvV0tDb29raWVNYW5hZ2VyLmNwcApAQCAtNjEsMTcgKzYxLDE3IEBAIHZv
aWQgV0tDb29raWVNYW5hZ2VyRGVsZXRlQWxsQ29va2llc01vZGlmaWVkQWZ0ZXJEYXRlKFdLQ29v
a2llTWFuYWdlclJlZiBjb29raWVNCiAgICAgdXNpbmcgbmFtZXNwYWNlIHN0ZDo6Y2hyb25vOwog
CiAgICAgYXV0byB0aW1lID0gc3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50KGR1cmF0aW9uX2Nhc3Q8
c3lzdGVtX2Nsb2NrOjpkdXJhdGlvbj4oZHVyYXRpb248ZG91YmxlPihkYXRlKSkpOwotICAgIHRv
SW1wbChjb29raWVNYW5hZ2VyUmVmKS0+ZGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2UoV2Vi
Q29yZTo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCksIHRpbWUpOworICAgIHRvSW1wbChj
b29raWVNYW5hZ2VyUmVmKS0+ZGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2UoV2ViQ29yZTo6
U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCksIHRpbWUsIFtdKENhbGxiYWNrQmFzZTo6RXJy
b3Ipe30pOwogfQogCiB2b2lkIFdLQ29va2llTWFuYWdlclNldEhUVFBDb29raWVBY2NlcHRQb2xp
Y3koV0tDb29raWVNYW5hZ2VyUmVmIGNvb2tpZU1hbmFnZXIsIFdLSFRUUENvb2tpZUFjY2VwdFBv
bGljeSBwb2xpY3kpCiB7Ci0gICAgdG9JbXBsKGNvb2tpZU1hbmFnZXIpLT5zZXRIVFRQQ29va2ll
QWNjZXB0UG9saWN5KHRvSFRUUENvb2tpZUFjY2VwdFBvbGljeShwb2xpY3kpKTsKKyAgICB0b0lt
cGwoY29va2llTWFuYWdlciktPnNldEhUVFBDb29raWVBY2NlcHRQb2xpY3koV2ViQ29yZTo6U2Vz
c2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCksIHRvSFRUUENvb2tpZUFjY2VwdFBvbGljeShwb2xp
Y3kpLCBbXShDYWxsYmFja0Jhc2U6OkVycm9yKXt9KTsKIH0KIAogdm9pZCBXS0Nvb2tpZU1hbmFn
ZXJHZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KFdLQ29va2llTWFuYWdlclJlZiBjb29raWVNYW5h
Z2VyLCB2b2lkKiBjb250ZXh0LCBXS0Nvb2tpZU1hbmFnZXJHZXRIVFRQQ29va2llQWNjZXB0UG9s
aWN5RnVuY3Rpb24gY2FsbGJhY2spCiB7Ci0gICAgdG9JbXBsKGNvb2tpZU1hbmFnZXIpLT5nZXRI
VFRQQ29va2llQWNjZXB0UG9saWN5KHRvR2VuZXJpY0NhbGxiYWNrRnVuY3Rpb248V0tIVFRQQ29v
a2llQWNjZXB0UG9saWN5LCBIVFRQQ29va2llQWNjZXB0UG9saWN5Pihjb250ZXh0LCBjYWxsYmFj
aykpOworICAgIHRvSW1wbChjb29raWVNYW5hZ2VyKS0+Z2V0SFRUUENvb2tpZUFjY2VwdFBvbGlj
eShXZWJDb3JlOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSwgdG9HZW5lcmljQ2FsbGJh
Y2tGdW5jdGlvbjxXS0hUVFBDb29raWVBY2NlcHRQb2xpY3ksIEhUVFBDb29raWVBY2NlcHRQb2xp
Y3k+KGNvbnRleHQsIGNhbGxiYWNrKSk7CiB9CiAKIHZvaWQgV0tDb29raWVNYW5hZ2VyU2V0Q29v
a2llU3RvcmFnZVBhcnRpdGlvbmluZ0VuYWJsZWQoV0tDb29raWVNYW5hZ2VyUmVmIGNvb2tpZU1h
bmFnZXIsIGJvb2wgZW5hYmxlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAKaW5kZXggYTc3YzFhODlkNWNkZTVl
YjkyZmY4MTk2NmZmODIzNzkyN2M2ZTQ5OC4uNmNhNjljNmQyZmQ3NmU0YTA0ZDBlYzE1NzRjMmMx
MGUzMGU3NWFjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dL
V2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgV0tUeXBlSUQg
V0tXZWJzaXRlRGF0YVN0b3JlR2V0VHlwZUlEKCkKIAogV0tXZWJzaXRlRGF0YVN0b3JlUmVmIFdL
V2Vic2l0ZURhdGFTdG9yZUdldERlZmF1bHREYXRhU3RvcmUoKQogewotICAgIHJldHVybiBXZWJL
aXQ6OnRvQVBJKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZSgpLmdldCgp
KTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSShBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1
bHREYXRhU3RvcmUoKS5wdHIoKSk7CiB9CiAKIFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBXS1dlYnNp
dGVEYXRhU3RvcmVDcmVhdGVOb25QZXJzaXN0ZW50RGF0YVN0b3JlKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tIVFRQQ29va2llU3RvcmFnZS5oIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0hUVFBDb29raWVTdG9yYWdlLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMTA0MmU5M2JjN2M3MjQwODUyYTExY2I2MDM3OWE0MDJkNjc3MDUwMAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tIVFRQ
Q29va2llU3RvcmFnZS5oCkBAIC0wLDAgKzEsOTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0IDxX
ZWJLaXQvV0tGb3VuZGF0aW9uLmg+CisKKyNpZiBXS19BUElfRU5BQkxFRAorCisjaW1wb3J0IDxG
b3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KKworTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KKworLyoh
CisgQSBXS0hUVFBDb29raWVTdG9yYWdlIG9iamVjdCBhbGxvd3MgbWFuYWdpbmcgdGhlIEhUVFAg
Y29va2llcyBhc3NvY2lhdGVkIHdpdGggYSBwYXJ0aWN1bGFyIFdLV2Vic2l0ZURhdGFTdG9yZS4K
KyAqLworV0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19U
QkEpKQorQGludGVyZmFjZSBXS0hUVFBDb29raWVTdG9yYWdlIDogTlNPYmplY3QKKworLyohIEBh
YnN0cmFjdCBGZXRjaGVzIGFsbCBzdG9yZWQgY29va2llcy4KKyBAcGFyYW0gY29tcGxldGlvbkhh
bmRsZXIgQSBibG9jayB0byBpbnZva2Ugd2l0aCB0aGUgZmV0Y2hlZCBjb29raWVzLgorICovCist
ICh2b2lkKWZldGNoQ29va2llczoodm9pZCAoXikoTlNBcnJheTxOU0hUVFBDb29raWUgKj4gKikp
Y29tcGxldGlvbkhhbmRsZXI7CisKKy8qISBAYWJzdHJhY3QgRmV0Y2hlcyBhbGwgb2YgdGhlIHN0
b3JlZCBjb29raWVzIGZvciB0aGUgZ2l2ZW4gVVJMLgorIEBwYXJhbSBjb21wbGV0aW9uSGFuZGxl
ciBBIGJsb2NrIHRvIGludm9rZSB3aXRoIHRoZSBmZXRjaGVkIGNvb2tpZXMuCisgKi8KKy0gKHZv
aWQpZmV0Y2hDb29raWVzRm9yVVJMOihOU1VSTCAqKXVybCBjb21wbGV0aW9uSGFuZGxlcjoodm9p
ZCAoXikoTlNBcnJheTxOU0hUVFBDb29raWUgKj4gKikpY29tcGxldGlvbkhhbmRsZXI7CisKKy8q
ISBAYWJzdHJhY3QgU2V0IGEgY29va2llLgorIEBwYXJhbSBjb29raWVzIFRoZSBjb29raWUgdG8g
c2V0LgorIEBwYXJhbSBjb21wbGV0aW9uSGFuZGxlciBBIGJsb2NrIHRvIGludm9rZSBvbmNlIHRo
ZSBjb29raWUgaGFzIGJlZW4gc3RvcmVkLgorICovCistICh2b2lkKXNldENvb2tpZTooTlNIVFRQ
Q29va2llICopY29va2llIGNvbXBsZXRpb25IYW5kbGVyOihudWxsYWJsZSB2b2lkICheKSgpKWNv
bXBsZXRpb25IYW5kbGVyOworCisvKiEgQGFic3RyYWN0IEFkZHMgYW4gYXJyYXkgY29va2llcyB0
byB0aGUgY29va2llIHN0b3JlLCBmb2xsb3dpbmcgdGhlIGNvb2tpZSBhY2NlcHQgcG9saWN5Lgor
IEBwYXJhbSBjb29raWVzIFRoZSBjb29raWVzIHRvIHNldC4KKyBAcGFyYW0gVVJMIFRoZSBVUkwg
ZnJvbSB3aGljaCB0aGUgY29va2llcyB3ZXJlIHNlbnQuCisgQHBhcmFtIG1haW5Eb2N1bWVudFVS
TCBUaGUgbWFpbiBkb2N1bWVudCBVUkwgdG8gYmUgdXNlZCBhcyBhIGJhc2UgZm9yIHRoZSAic2Ft
ZSBkb21haW4gYXMgbWFpbiBkb2N1bWVudCIgcG9saWN5LgorIEBwYXJhbSBjb21wbGV0aW9uSGFu
ZGxlciBBIGJsb2NrIHRvIGludm9rZSBvbmNlIHRoZSBjb29raWVzIGhhdmUgYmVlbiBzdG9yZWQu
CisgKi8KKy0gKHZvaWQpc2V0Q29va2llczooTlNBcnJheTxOU0hUVFBDb29raWUgKj4gKiljb29r
aWVzIGZvclVSTDooTlNVUkwgKil1cmwgbWFpbkRvY3VtZW50VVJMOihudWxsYWJsZSBOU1VSTCAq
KW1haW5Eb2N1bWVudFVSTCBjb21wbGV0aW9uSGFuZGxlcjoobnVsbGFibGUgdm9pZCAoXikoKSlj
b21wbGV0aW9uSGFuZGxlcjsKKworLyohIEBhYnN0cmFjdCBEZWxldGUgdGhlIHNwZWNpZmllZCBj
b29raWUuCisgQHBhcmFtIGNvbXBsZXRpb25IYW5kbGVyIEEgYmxvY2sgdG8gaW52b2tlIG9uY2Ug
dGhlIGNvb2tpZSBoYXMgYmVlbiBkZWxldGVkLgorICovCistICh2b2lkKWRlbGV0ZUNvb2tpZToo
TlNIVFRQQ29va2llICopY29va2llIGNvbXBsZXRpb25IYW5kbGVyOihudWxsYWJsZSB2b2lkIChe
KSgpKWNvbXBsZXRpb25IYW5kbGVyOworCisvKiEgQGFic3RyYWN0IERlbGV0ZSBhbGwgY29va2ll
cyBmcm9tIHRoZSBjb29raWUgc3RvcmFnZSBzaW5jZSB0aGUgcHJvdmlkZWQgZGF0ZS4KKyBAcGFy
YW0gZGF0ZSBUaGUgZGF0ZSBhZnRlciB3aGljaCBzZXQgY29va2llcyBzaG91bGQgYmUgcmVtb3Zl
ZC4KKyBAcGFyYW0gY29tcGxldGlvbkhhbmRsZXIgQSBibG9jayB0byBpbnZva2Ugb25jZSB0aGUg
Y29va2llcyBoYXZlIGJlZW4gZGVsZXRlZC4KKyAqLworLSAodm9pZClyZW1vdmVDb29raWVzU2lu
Y2VEYXRlOihOU0RhdGUgKilkYXRlIGNvbXBsZXRpb25IYW5kbGVyOihudWxsYWJsZSB2b2lkIChe
KSgpKWNvbXBsZXRpb25IYW5kbGVyOworCisvKiEgQGFic3RyYWN0IFNldHMgdGhlIGNvb2tpZSBh
Y2NlcHQgcG9saWN5IHByZWZlcmVuY2Ugb2YgdGhlIHJlY2VpdmVyLgorIEBwYXJhbSBwb2xpY3kg
VGhlIGNvb2tpZSBhY2NlcHQgcG9saWN5IHRvIHNldC4KKyBAcGFyYW0gY29tcGxldGlvbkhhbmRs
ZXIgQSBibG9jayB0byBpbnZva2Ugb25jZSB0aGUgcG9saWN5IGhhcyBiZWVuIHNldC4KKyAqLwor
LSAodm9pZClzZXRDb29raWVBY2NlcHRQb2xpY3k6KE5TSFRUUENvb2tpZUFjY2VwdFBvbGljeSlw
b2xpY3kgY29tcGxldGlvbkhhbmRsZXI6KG51bGxhYmxlIHZvaWQgKF4pKCkpY29tcGxldGlvbkhh
bmRsZXI7CisKKy8qISBAYWJzdHJhY3QgRmV0Y2hlcyB0aGUgY29va2llIGFjY2VwdCBwb2xpY3kg
cHJlZmVyZW5jZSBvZiB0aGUgcmVjZWl2ZXIuCisgQHBhcmFtIGNvbXBsZXRpb25IYW5kbGVyIEEg
YmxvY2sgdG8gaW52b2tlIHdpdGggdGhlIGZldGNoZWQgcG9saWN5LgorICovCistICh2b2lkKWZl
dGNoQ29va2llQWNjZXB0UG9saWN5Oih2b2lkICheKShOU0hUVFBDb29raWVBY2NlcHRQb2xpY3kp
KWNvbXBsZXRpb25IYW5kbGVyOworCitAZW5kCisKK05TX0FTU1VNRV9OT05OVUxMX0VORAorCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tI
VFRQQ29va2llU3RvcmFnZS5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tIVFRQQ29va2llU3RvcmFnZS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41M2M3MzRhNmYyNmE3ZjAzYzg0MmZh
NzQ0Yzg1MGYyNjA1MzIzZWVmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS0hUVFBDb29raWVTdG9yYWdlLm1tCkBAIC0wLDAgKzEsMTYxIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJXS0hUVFBDb29raWVT
dG9yYWdlSW50ZXJuYWwuaCIKKworI2lmIFdLX0FQSV9FTkFCTEVECisKKyNpbmNsdWRlICJIVFRQ
Q29va2llQWNjZXB0UG9saWN5LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9DRk5ldHdvcmtTUEkuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL0Nvb2tpZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+Cisj
aW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorCitzdGF0aWMgTlNBcnJheTxOU0hUVFBDb29raWUg
Kj4gKmNvcmVDb29raWVzVG9OU0Nvb2tpZXMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4m
IGNvcmVDb29raWVzKQoreworICAgIE5TTXV0YWJsZUFycmF5PE5TSFRUUENvb2tpZSAqPiAqbnND
b29raWVzID0gW05TTXV0YWJsZUFycmF5IGFycmF5V2l0aENhcGFjaXR5OmNvcmVDb29raWVzLnNp
emUoKV07CisKKyAgICBmb3IgKGF1dG8mIGNvb2tpZSA6IGNvcmVDb29raWVzKQorICAgICAgICBb
bnNDb29raWVzIGFkZE9iamVjdDooTlNIVFRQQ29va2llICopY29va2llXTsKKworICAgIHJldHVy
biBuc0Nvb2tpZXM7Cit9CisKK0BpbXBsZW1lbnRhdGlvbiBXS0hUVFBDb29raWVTdG9yYWdlCisK
Ky0gKHZvaWQpZGVhbGxvYworeworICAgIF9jb29raWVTdG9yYWdlLT5BUEk6OkhUVFBDb29raWVT
dG9yYWdlOjp+SFRUUENvb2tpZVN0b3JhZ2UoKTsKKworICAgIFtzdXBlciBkZWFsbG9jXTsKK30K
KworLSAodm9pZClmZXRjaENvb2tpZXM6KHZvaWQgKF4pKE5TQXJyYXk8TlNIVFRQQ29va2llICo+
ICopKWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAgX2Nvb2tpZVN0b3JhZ2UtPmNvb2tpZXMoW2hh
bmRsZXIgPSBhZG9wdE5TKFtjb21wbGV0aW9uSGFuZGxlciBjb3B5XSldKGNvbnN0IFZlY3RvcjxX
ZWJDb3JlOjpDb29raWU+JiBjb29raWVzKSB7CisgICAgICAgIGF1dG8gcmF3SGFuZGxlciA9ICh2
b2lkICheKShOU0FycmF5PE5TSFRUUENvb2tpZSAqPiAqKSloYW5kbGVyLmdldCgpOworICAgICAg
ICByYXdIYW5kbGVyKGNvcmVDb29raWVzVG9OU0Nvb2tpZXMoY29va2llcykpOworICAgIH0pOwor
fQorCistICh2b2lkKWZldGNoQ29va2llc0ZvclVSTDooTlNVUkwgKil1cmwgY29tcGxldGlvbkhh
bmRsZXI6KHZvaWQgKF4pKE5TQXJyYXk8TlNIVFRQQ29va2llICo+ICopKWNvbXBsZXRpb25IYW5k
bGVyCit7CisgICAgX2Nvb2tpZVN0b3JhZ2UtPmNvb2tpZXModXJsLCBbaGFuZGxlciA9IGFkb3B0
TlMoW2NvbXBsZXRpb25IYW5kbGVyIGNvcHldKV0oY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tp
ZT4mIGNvb2tpZXMpIHsKKyAgICAgICAgYXV0byByYXdIYW5kbGVyID0gKHZvaWQgKF4pKE5TQXJy
YXk8TlNIVFRQQ29va2llICo+ICopKWhhbmRsZXIuZ2V0KCk7CisgICAgICAgIHJhd0hhbmRsZXIo
Y29yZUNvb2tpZXNUb05TQ29va2llcyhjb29raWVzKSk7CisgICAgfSk7Cit9CisKKy0gKHZvaWQp
c2V0Q29va2llOihOU0hUVFBDb29raWUgKiljb29raWUgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQg
KF4pKCkpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICBfY29va2llU3RvcmFnZS0+c2V0Q29va2ll
KGNvb2tpZSwgW2hhbmRsZXIgPSBhZG9wdE5TKFtjb21wbGV0aW9uSGFuZGxlciBjb3B5XSldKCkg
eworICAgICAgICBhdXRvIHJhd0hhbmRsZXIgPSAodm9pZCAoXikoKSloYW5kbGVyLmdldCgpOwor
ICAgICAgICBpZiAocmF3SGFuZGxlcikKKyAgICAgICAgICAgIHJhd0hhbmRsZXIoKTsKKyAgICB9
KTsKKworfQorCistICh2b2lkKWRlbGV0ZUNvb2tpZTooTlNIVFRQQ29va2llICopY29va2llIGNv
bXBsZXRpb25IYW5kbGVyOih2b2lkICheKSgpKWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAgX2Nv
b2tpZVN0b3JhZ2UtPmRlbGV0ZUNvb2tpZShjb29raWUsIFtoYW5kbGVyID0gYWRvcHROUyhbY29t
cGxldGlvbkhhbmRsZXIgY29weV0pXSgpIHsKKyAgICAgICAgYXV0byByYXdIYW5kbGVyID0gKHZv
aWQgKF4pKCkpaGFuZGxlci5nZXQoKTsKKyAgICAgICAgaWYgKHJhd0hhbmRsZXIpCisgICAgICAg
ICAgICByYXdIYW5kbGVyKCk7CisgICAgfSk7Cit9CisKKy0gKHZvaWQpc2V0Q29va2llczooTlNB
cnJheTxOU0hUVFBDb29raWUgKj4gKiljb29raWVzIGZvclVSTDooTlNVUkwgKilVUkwgbWFpbkRv
Y3VtZW50VVJMOihOU1VSTCAqKW1haW5Eb2N1bWVudFVSTCBjb21wbGV0aW9uSGFuZGxlcjoodm9p
ZCAoXikoKSljb21wbGV0aW9uSGFuZGxlcgoreworICAgIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+
IGNvcmVDb29raWVzOworICAgIGNvcmVDb29raWVzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoY29v
a2llcy5jb3VudCk7CisgICAgZm9yIChOU0hUVFBDb29raWUgKmNvb2tpZSA6IGNvb2tpZXMpCisg
ICAgICAgIGNvcmVDb29raWVzLnVuY2hlY2tlZEFwcGVuZChjb29raWUpOworCisgICAgX2Nvb2tp
ZVN0b3JhZ2UtPnNldENvb2tpZXMoY29yZUNvb2tpZXMsIFVSTCwgbWFpbkRvY3VtZW50VVJMLCBb
aGFuZGxlciA9IGFkb3B0TlMoW2NvbXBsZXRpb25IYW5kbGVyIGNvcHldKV0oKSB7CisgICAgICAg
IGF1dG8gcmF3SGFuZGxlciA9ICh2b2lkICheKSgpKWhhbmRsZXIuZ2V0KCk7CisgICAgICAgIGlm
IChyYXdIYW5kbGVyKQorICAgICAgICAgICAgcmF3SGFuZGxlcigpOworICAgIH0pOworfQorCist
ICh2b2lkKXJlbW92ZUNvb2tpZXNTaW5jZURhdGU6KE5TRGF0ZSAqKWRhdGUgY29tcGxldGlvbkhh
bmRsZXI6KHZvaWQgKF4pKCkpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICBhdXRvIHN5c3RlbUNs
b2NrVGltZSA9IHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQoc3RkOjpjaHJv
bm86OmR1cmF0aW9uX2Nhc3Q8c3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6ZHVyYXRpb24+KHN0
ZDo6Y2hyb25vOjpkdXJhdGlvbjxkb3VibGU+KGRhdGUudGltZUludGVydmFsU2luY2UxOTcwKSkp
OworCisgICAgX2Nvb2tpZVN0b3JhZ2UtPnJlbW92ZUNvb2tpZXNTaW5jZURhdGUoc3lzdGVtQ2xv
Y2tUaW1lLCBbaGFuZGxlciA9IGFkb3B0TlMoW2NvbXBsZXRpb25IYW5kbGVyIGNvcHldKV0oKSB7
CisgICAgICAgIGF1dG8gcmF3SGFuZGxlciA9ICh2b2lkICheKSgpKWhhbmRsZXIuZ2V0KCk7Cisg
ICAgICAgIGlmIChyYXdIYW5kbGVyKQorICAgICAgICAgICAgcmF3SGFuZGxlcigpOworICAgIH0p
OworfQorCistICh2b2lkKXNldENvb2tpZUFjY2VwdFBvbGljeTooTlNIVFRQQ29va2llQWNjZXB0
UG9saWN5KXBvbGljeSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoKSljb21wbGV0aW9uSGFu
ZGxlcgoreworICAgIF9jb29raWVTdG9yYWdlLT5zZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHBv
bGljeSwgW2hhbmRsZXIgPSBhZG9wdE5TKFtjb21wbGV0aW9uSGFuZGxlciBjb3B5XSldKCkgewor
ICAgICAgICBhdXRvIHJhd0hhbmRsZXIgPSAodm9pZCAoXikoKSloYW5kbGVyLmdldCgpOworICAg
ICAgICBpZiAocmF3SGFuZGxlcikKKyAgICAgICAgICAgIHJhd0hhbmRsZXIoKTsKKyAgICB9KTsK
K30KKworc3RhdGljIE5TSFRUUENvb2tpZUFjY2VwdFBvbGljeSBraXRDb29raWVQb2xpY3lUb05T
Q29va2llUG9saWN5KFdlYktpdDo6SFRUUENvb2tpZUFjY2VwdFBvbGljeSBraXRQb2xpY3kpCit7
CisgICAgc3dpdGNoIChraXRQb2xpY3kpIHsKKyAgICBjYXNlIFdlYktpdDo6SFRUUENvb2tpZUFj
Y2VwdFBvbGljeUFsd2F5czoKKyAgICAgICAgcmV0dXJuIE5TSFRUUENvb2tpZUFjY2VwdFBvbGlj
eUFsd2F5czsKKyAgICBjYXNlIFdlYktpdDo6SFRUUENvb2tpZUFjY2VwdFBvbGljeU5ldmVyOgor
ICAgICAgICByZXR1cm4gTlNIVFRQQ29va2llQWNjZXB0UG9saWN5TmV2ZXI7CisgICAgY2FzZSBX
ZWJLaXQ6OkhUVFBDb29raWVBY2NlcHRQb2xpY3lPbmx5RnJvbU1haW5Eb2N1bWVudERvbWFpbjoK
KyAgICAgICAgcmV0dXJuIE5TSFRUUENvb2tpZUFjY2VwdFBvbGljeU9ubHlGcm9tTWFpbkRvY3Vt
ZW50RG9tYWluOworICAgIGNhc2UgV2ViS2l0OjpIVFRQQ29va2llQWNjZXB0UG9saWN5RXhjbHVz
aXZlbHlGcm9tTWFpbkRvY3VtZW50RG9tYWluOgorICAgICAgICAvLyBDYXN0IHJlcXVpcmVkIGJl
Y2F1c2Ugb2YgQ0ZOZXR3b3JrU1BJLgorICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8TlNIVFRQ
Q29va2llQWNjZXB0UG9saWN5PihOU0hUVFBDb29raWVBY2NlcHRQb2xpY3lFeGNsdXNpdmVseUZy
b21NYWluRG9jdW1lbnREb21haW4pOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgIH0KKworICAgIHJldHVybiBOU0hUVFBDb29raWVBY2NlcHRQb2xpY3lO
ZXZlcjsKK30KKworLSAodm9pZClmZXRjaENvb2tpZUFjY2VwdFBvbGljeToodm9pZCAoXikoTlNI
VFRQQ29va2llQWNjZXB0UG9saWN5KSljb21wbGV0aW9uSGFuZGxlcgoreworICAgIF9jb29raWVT
dG9yYWdlLT5nZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KFtoYW5kbGVyID0gYWRvcHROUyhbY29t
cGxldGlvbkhhbmRsZXIgY29weV0pXShXZWJLaXQ6OkhUVFBDb29raWVBY2NlcHRQb2xpY3kgcG9s
aWN5KSB7CisgICAgICAgIGF1dG8gcmF3SGFuZGxlciA9ICh2b2lkICheKShOU0hUVFBDb29raWVB
Y2NlcHRQb2xpY3kpKWhhbmRsZXIuZ2V0KCk7CisgICAgICAgIHJhd0hhbmRsZXIoa2l0Q29va2ll
UG9saWN5VG9OU0Nvb2tpZVBvbGljeShwb2xpY3kpKTsKKyAgICB9KTsKK30KKworI3ByYWdtYSBt
YXJrIFdLT2JqZWN0IHByb3RvY29sIGltcGxlbWVudGF0aW9uCisKKy0gKEFQSTo6T2JqZWN0Jilf
YXBpT2JqZWN0Cit7CisgICAgcmV0dXJuICpfY29va2llU3RvcmFnZTsKK30KKworQGVuZAorCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tI
VFRQQ29va2llU3RvcmFnZUludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLSFRUUENvb2tpZVN0b3JhZ2VJbnRlcm5hbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU4YTMwYmFk
MjhlYjFhMDI0NmMyNDFlZTc2NmZmYmYzNDE4MTBiYmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLSFRUUENvb2tpZVN0b3JhZ2VJbnRlcm5h
bC5oCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJXS0hUVFBDb29raWVT
dG9yYWdlLmgiCisKKyNpZiBXS19BUElfRU5BQkxFRAorCisjaW1wb3J0ICJBUElIVFRQQ29va2ll
U3RvcmFnZS5oIgorI2ltcG9ydCAiV0tPYmplY3QuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K2lubGluZSBXS0hUVFBDb29raWVTdG9yYWdlICp3cmFwcGVyKEFQSTo6SFRUUENvb2tpZVN0b3Jh
Z2UmIGNvb2tpZVN0b3JhZ2UpCit7CisgICAgQVNTRVJUKFtjb29raWVTdG9yYWdlLndyYXBwZXIo
KSBpc0tpbmRPZkNsYXNzOltXS0hUVFBDb29raWVTdG9yYWdlIGNsYXNzXV0pOworICAgIHJldHVy
biAoV0tIVFRQQ29va2llU3RvcmFnZSAqKWNvb2tpZVN0b3JhZ2Uud3JhcHBlcigpOworfQorCit9
CisKK0BpbnRlcmZhY2UgV0tIVFRQQ29va2llU3RvcmFnZSAoKSA8V0tPYmplY3Q+IHsKK0BwYWNr
YWdlCisgICAgQVBJOjpPYmplY3RTdG9yYWdlPEFQSTo6SFRUUENvb2tpZVN0b3JhZ2U+IF9jb29r
aWVTdG9yYWdlOworfQorQGVuZAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQppbmRleCAzZjQzYmZjNjVkZDc0MGI5
NjBjOGEwMWFlMzY0OTc0ODE0M2RmN2Q0Li44Zjg3ZGFjZTgyNzJkZWIzYzIyN2ZhMDUzMjU4MDM0
NTZjZmI0MjFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLUHJvY2Vzc1Bvb2wubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1Byb2Nlc3NQb29sLm1tCkBAIC0xOTYsNyArMTk2LDcgQEAgc3RhdGljIFdlYktpdDo6SFRU
UENvb2tpZUFjY2VwdFBvbGljeSB0b0hUVFBDb29raWVBY2NlcHRQb2xpY3koTlNIVFRQQ29va2ll
QWNjZXAKIAogLSAodm9pZClfc2V0Q29va2llQWNjZXB0UG9saWN5OihOU0hUVFBDb29raWVBY2Nl
cHRQb2xpY3kpcG9saWN5CiB7Ci0gICAgX3Byb2Nlc3NQb29sLT5zdXBwbGVtZW50PFdlYktpdDo6
V2ViQ29va2llTWFuYWdlclByb3h5PigpLT5zZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHRvSFRU
UENvb2tpZUFjY2VwdFBvbGljeShwb2xpY3kpKTsKKyAgICBfcHJvY2Vzc1Bvb2wtPnN1cHBsZW1l
bnQ8V2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk+KCktPnNldEhUVFBDb29raWVBY2NlcHRQ
b2xpY3koV2ViQ29yZTo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCksIHRvSFRUUENvb2tp
ZUFjY2VwdFBvbGljeShwb2xpY3kpLCBbXShXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3Ipe30p
OwogfQogCiAtIChpZClfb2JqZWN0Rm9yQnVuZGxlUGFyYW1ldGVyOihOU1N0cmluZyAqKXBhcmFt
ZXRlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YnNpdGVEYXRhU3RvcmUubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2Vic2l0ZURhdGFTdG9yZS5tbQppbmRleCA3MTM4MTllNDc0MGFkMzRkOTAxOGRjODkwMzcyMTkw
NDlmZGYxYmM3Li4yMzRmODBlYmZlNTg0Y2M4NjIzNTE1ZTkzN2ZmZjMzMzBiOWJhMjAyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFT
dG9yZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0
ZURhdGFTdG9yZS5tbQpAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgV0tfQVBJX0VOQUJMRUQKIAor
I2ltcG9ydCAiV0tIVFRQQ29va2llU3RvcmFnZUludGVybmFsLmgiCiAjaW1wb3J0ICJXS05TQXJy
YXkuaCIKICNpbXBvcnQgIldLV2Vic2l0ZURhdGFSZWNvcmRJbnRlcm5hbC5oIgogI2ltcG9ydCAi
V2Vic2l0ZURhdGFGZXRjaE9wdGlvbi5oIgpAQCAtMzgsNyArMzksNyBAQCBAaW1wbGVtZW50YXRp
b24gV0tXZWJzaXRlRGF0YVN0b3JlCiAKICsgKFdLV2Vic2l0ZURhdGFTdG9yZSAqKWRlZmF1bHRE
YXRhU3RvcmUKIHsKLSAgICByZXR1cm4gV2ViS2l0Ojp3cmFwcGVyKCpBUEk6OldlYnNpdGVEYXRh
U3RvcmU6OmRlZmF1bHREYXRhU3RvcmUoKS5nZXQoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6d3Jh
cHBlcihBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmUoKS5nZXQoKSk7CiB9
CiAKICsgKFdLV2Vic2l0ZURhdGFTdG9yZSAqKW5vblBlcnNpc3RlbnREYXRhU3RvcmUKQEAgLTE5
NCw2ICsxOTUsMTEgQEAgLSAodm9pZClfc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQ6
KEJPT0wpZW5hYmxlZAogICAgIF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCku
c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoZW5hYmxlZCk7CiB9CiAKKy0gKFdLSFRU
UENvb2tpZVN0b3JhZ2UgKilfaHR0cENvb2tpZVN0b3JhZ2UKK3sKKyAgICByZXR1cm4gV2ViS2l0
Ojp3cmFwcGVyKF93ZWJzaXRlRGF0YVN0b3JlLT5odHRwQ29va2llU3RvcmFnZSgpKTsKK30KKwog
QGVuZAogCiAjZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRl
LmgKaW5kZXggNDlkOWJlNmFkMTE5YjNhMTEyMTUyYjZiYWZlMzhhZGUyNjYyZTZlYi4uZDkzNDU3
ZjAyZGNlYzRkYzc3ZWFhNmFiOGEyMmNkZjBlYjA4NDI1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmgKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQ
cml2YXRlLmgKQEAgLTI5LDYgKzI5LDcgQEAKIAogTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KIAor
QGNsYXNzIFdLSFRUUENvb2tpZVN0b3JhZ2U7CiBAY2xhc3MgX1dLV2Vic2l0ZURhdGFTdG9yZUNv
bmZpZ3VyYXRpb247CiAKIHR5cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRlZ2VyLCBfV0tXZWJzaXRl
RGF0YVN0b3JlRmV0Y2hPcHRpb25zKSB7CkBAIC00Myw2ICs0NCw4IEBAIHR5cGVkZWYgTlNfT1BU
SU9OUyhOU1VJbnRlZ2VyLCBfV0tXZWJzaXRlRGF0YVN0b3JlRmV0Y2hPcHRpb25zKSB7CiAKIEBw
cm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFi
bGVkOikgQk9PTCBfcmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQgV0tfQVBJX0FWQUlMQUJM
RShtYWNvc3goMTAuMTIpLCBpb3MoMTAuMCkpOwogCitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVh
ZG9ubHkpIFdLSFRUUENvb2tpZVN0b3JhZ2UgKl9odHRwQ29va2llU3RvcmFnZSBXS19BUElfQVZB
SUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKwogQGVuZAogCiBO
U19BU1NVTUVfTk9OTlVMTF9FTkQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdENvb2tpZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0Q29va2llTWFuYWdlci5jcHAKaW5kZXggNzVhNjZlYzYxOGYwNWM4
MWJlODMxN2IyZmYyZDBkOTM0N2U5NTFhMy4uN2UxMmY2ZmM2ZDFlYjI5N2ZiMjMxMDljOWI4MzY0
YjNjNTZhZTkzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0Q29va2llTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0Q29va2llTWFuYWdlci5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRl
ICJXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXJQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0V2Vi
c2l0ZURhdGFQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFSZWNvcmQuaCIKKyNpbmNs
dWRlIDxXZWJDb3JlL1Nlc3Npb25JRC5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKQEAgLTE3OCw3ICsxNzksNyBAQCB2b2lk
IHdlYmtpdF9jb29raWVfbWFuYWdlcl9zZXRfYWNjZXB0X3BvbGljeShXZWJLaXRDb29raWVNYW5h
Z2VyKiBtYW5hZ2VyLCBXZWJLaQogICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX0NPT0tJ
RV9NQU5BR0VSKG1hbmFnZXIpKTsKIAogICAgIGZvciAoYXV0byogcHJvY2Vzc1Bvb2wgOiB3ZWJr
aXRXZWJzaXRlRGF0YU1hbmFnZXJHZXRQcm9jZXNzUG9vbHMobWFuYWdlci0+cHJpdi0+ZGF0YU1h
bmFnZXIpKQotICAgICAgICBwcm9jZXNzUG9vbC0+c3VwcGxlbWVudDxXZWJDb29raWVNYW5hZ2Vy
UHJveHk+KCktPnNldEhUVFBDb29raWVBY2NlcHRQb2xpY3kodG9IVFRQQ29va2llQWNjZXB0UG9s
aWN5KHBvbGljeSkpOworICAgICAgICBwcm9jZXNzUG9vbC0+c3VwcGxlbWVudDxXZWJDb29raWVN
YW5hZ2VyUHJveHk+KCktPnNldEhUVFBDb29raWVBY2NlcHRQb2xpY3kodG9IVFRQQ29va2llQWNj
ZXB0UG9saWN5KHBvbGljeSksIDApOwogfQogCiBzdGF0aWMgdm9pZCB3ZWJraXRDb29raWVNYW5h
Z2VyR2V0QWNjZXB0UG9saWN5Q2FsbGJhY2soV0tIVFRQQ29va2llQWNjZXB0UG9saWN5IHBvbGlj
eSwgV0tFcnJvclJlZiwgdm9pZCogY29udGV4dCkKQEAgLTIxMiw3ICsyMTMsNyBAQCB2b2lkIHdl
YmtpdF9jb29raWVfbWFuYWdlcl9nZXRfYWNjZXB0X3BvbGljeShXZWJLaXRDb29raWVNYW5hZ2Vy
KiBtYW5hZ2VyLCBHQ2FuYwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgcHJvY2Vzc1Bv
b2xzWzBdLT5zdXBwbGVtZW50PFdlYkNvb2tpZU1hbmFnZXJQcm94eT4oKS0+Z2V0SFRUUENvb2tp
ZUFjY2VwdFBvbGljeSgKKyAgICBwcm9jZXNzUG9vbHNbMF0tPnN1cHBsZW1lbnQ8V2ViQ29va2ll
TWFuYWdlclByb3h5PigpLT5nZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KFdlYkNvcmU6OlNlc3Np
b25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpLCAKICAgICAgICAgdG9HZW5lcmljQ2FsbGJhY2tGdW5j
dGlvbjxXS0hUVFBDb29raWVBY2NlcHRQb2xpY3ksIEhUVFBDb29raWVBY2NlcHRQb2xpY3k+KHRh
c2subGVha1JlZigpLCB3ZWJraXRDb29raWVNYW5hZ2VyR2V0QWNjZXB0UG9saWN5Q2FsbGJhY2sp
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1dG9tYXRpb24v
V2ViQXV0b21hdGlvblNlc3Npb24uY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1dG9t
YXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwCmluZGV4IDQ4Y2FkYzcxMjRmOWRiZTY4NWJi
ZGU0OGNiM2ZlZTNkMTgzOTE2ZDguLmE4MzE4NGFmOTAyYjQ3NWM0OGU4ZDBhY2Y3ODA2MTcxY2I0
ZmJlZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dl
YkF1dG9tYXRpb25TZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0
b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKQEAgLTczMCw3ICs3MzAsNyBAQCB2b2lk
IFdlYkF1dG9tYXRpb25TZXNzaW9uOjphZGRTaW5nbGVDb29raWUoRXJyb3JTdHJpbmcmIGVycm9y
U3RyaW5nLCBjb25zdCBTdHJpbgogCiAgICAgLy8gRklYTUU6IFVzaW5nIGFjdGl2ZVVSTCBoZXJl
IHR3aWNlIGlzIGJhc2ljYWxseSBzYXlpbmcgInRoaXMgaXMgYWx3YXlzIGluIHRoZSBjb250ZXh0
IG9mIHRoZSBtYWluIGRvY3VtZW50IgogICAgIC8vIHdoaWNoIHByb2JhYmx5IGlzbid0IGFjY3Vy
YXRlLgotICAgIGNvb2tpZU1hbmFnZXItPnNldENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklEOjpk
ZWZhdWx0U2Vzc2lvbklEKCksIHsgY29va2llIH0sIGFjdGl2ZVVSTCwgYWN0aXZlVVJMKTsKKyAg
ICBjb29raWVNYW5hZ2VyLT5zZXRDb29raWVzKFdlYkNvcmU6OlNlc3Npb25JRDo6ZGVmYXVsdFNl
c3Npb25JRCgpLCB7IGNvb2tpZSB9LCBhY3RpdmVVUkwsIGFjdGl2ZVVSTCwgW10oQ2FsbGJhY2tC
YXNlOjpFcnJvcil7fSk7CiAKICAgICBjYWxsYmFjay0+c2VuZFN1Y2Nlc3MoKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5jcHAKaW5k
ZXggMmVhYTVjZTNiZmE1MzU5ODRkZjNlMGU2Yzc1ZGE1YjIxOTI0NjcxOS4uZTAyM2I4MjVlZTlm
NDkwZDIwN2RlYTI5YTdmN2Y1MzE3YjgyYTNlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5jcHAKQEAgLTMyLDggKzMyLDExIEBACiAj
aW5jbHVkZSAiV2ViQ29va2llTWFuYWdlck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViQ29va2ll
TWFuYWdlclByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgorI2lu
Y2x1ZGUgPFdlYkNvcmUvQ29va2llLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdp
bkRhdGEuaD4KIAordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKIG5hbWVzcGFjZSBXZWJLaXQg
ewogCiBjb25zdCBjaGFyKiBXZWJDb29raWVNYW5hZ2VyUHJveHk6OnN1cHBsZW1lbnROYW1lKCkK
QEAgLTk0LDcgKzk3LDcgQEAgdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRlcmVmV2ViQ29u
dGV4dFN1cHBsZW1lbnQoKQogICAgIEFQSTo6T2JqZWN0OjpkZXJlZigpOwogfQogCi12b2lkIFdl
YkNvb2tpZU1hbmFnZXJQcm94eTo6Z2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoV2ViQ29yZTo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgRnVuY3Rpb248dm9pZCAoQVBJOjpBcnJheSosIENhbGxiYWNrQmFz
ZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCit2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94
eTo6Z2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoU2Vzc2lvbklEIHNlc3Npb25JRCwgRnVuY3Rpb248
dm9pZCAoQVBJOjpBcnJheSosIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rp
b24pCiB7CiAgICAgYXV0byBjYWxsYmFjayA9IEFycmF5Q2FsbGJhY2s6OmNyZWF0ZShXVEZNb3Zl
KGNhbGxiYWNrRnVuY3Rpb24pKTsKICAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gY2FsbGJhY2st
PmNhbGxiYWNrSUQoKTsKQEAgLTExNCwzNyArMTE3LDk2IEBAIHZvaWQgV2ViQ29va2llTWFuYWdl
clByb3h5OjpkaWRHZXRIb3N0bmFtZXNXaXRoQ29va2llcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYg
aG9zCiAgICAgY2FsbGJhY2stPnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZShBUEk6OkFy
cmF5OjpjcmVhdGVTdHJpbmdBcnJheShob3N0bmFtZXMpLnB0cigpKTsKIH0KIAotdm9pZCBXZWJD
b29raWVNYW5hZ2VyUHJveHk6OmRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZShXZWJDb3JlOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQordm9pZCBXZWJDb29raWVN
YW5hZ2VyUHJveHk6OmRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZShTZXNzaW9uSUQgc2Vzc2lvbklE
LCBjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQogewogICAgIHByb2Nlc3NQb29sKCktPnNlbmRUb05l
dHdvcmtpbmdQcm9jZXNzUmVsYXVuY2hpbmdJZk5lY2Vzc2FyeShNZXNzYWdlczo6V2ViQ29va2ll
TWFuYWdlcjo6RGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKHNlc3Npb25JRCwgaG9zdG5hbWUpKTsK
IH0KIAotdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRlbGV0ZUFsbENvb2tpZXMoV2ViQ29y
ZTo6U2Vzc2lvbklEIHNlc3Npb25JRCkKK3ZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpkZWxl
dGVBbGxDb29raWVzKFNlc3Npb25JRCBzZXNzaW9uSUQpCiB7CiAgICAgcHJvY2Vzc1Bvb2woKS0+
c2VuZFRvTmV0d29ya2luZ1Byb2Nlc3NSZWxhdW5jaGluZ0lmTmVjZXNzYXJ5KE1lc3NhZ2VzOjpX
ZWJDb29raWVNYW5hZ2VyOjpEZWxldGVBbGxDb29raWVzKHNlc3Npb25JRCkpOwogfQogCi12b2lk
IFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2UoV2Vi
Q29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGlt
ZV9wb2ludCB0aW1lKQordm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRlbGV0ZUNvb2tpZShT
ZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBDb29raWUmIGNvb2tpZSwgRnVuY3Rpb248dm9pZCAo
Q2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKK3sKKyAgICBhdXRvIGNh
bGxiYWNrID0gVm9pZENhbGxiYWNrOjpjcmVhdGUoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSk7
CisgICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7CisgICAg
bV92b2lkQ2FsbGJhY2tzLnNldChjYWxsYmFja0lELCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisKKyAg
ICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9OZXR3b3JraW5nUHJvY2Vzc1JlbGF1bmNoaW5nSWZOZWNl
c3NhcnkoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OkRlbGV0ZUNvb2tpZShzZXNzaW9uSUQs
IGNvb2tpZSwgY2FsbGJhY2tJRCkpOworfQorCit2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6
ZGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2UoU2Vzc2lvbklEIHNlc3Npb25JRCwgc3RkOjpj
aHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCB0aW1lLCBGdW5jdGlvbjx2b2lkIChDYWxs
YmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQoreworICAgIGF1dG8gY2FsbGJh
Y2sgPSBWb2lkQ2FsbGJhY2s6OmNyZWF0ZShXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pKTsKKyAg
ICB1aW50NjRfdCBjYWxsYmFja0lEID0gY2FsbGJhY2stPmNhbGxiYWNrSUQoKTsKKyAgICBtX3Zv
aWRDYWxsYmFja3Muc2V0KGNhbGxiYWNrSUQsIFdURk1vdmUoY2FsbGJhY2spKTsKKworICAgIHBy
b2Nlc3NQb29sKCktPnNlbmRUb05ldHdvcmtpbmdQcm9jZXNzUmVsYXVuY2hpbmdJZk5lY2Vzc2Fy
eShNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6RGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2lu
Y2Uoc2Vzc2lvbklELCB0aW1lLCBjYWxsYmFja0lEKSk7Cit9CisKK3ZvaWQgV2ViQ29va2llTWFu
YWdlclByb3h5OjpzZXRDb29raWUoU2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgQ29va2llJiBj
b29raWUsIEZ1bmN0aW9uPHZvaWQgKENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVu
Y3Rpb24pCiB7Ci0gICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvTmV0d29ya2luZ1Byb2Nlc3NSZWxh
dW5jaGluZ0lmTmVjZXNzYXJ5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpEZWxldGVBbGxD
b29raWVzTW9kaWZpZWRTaW5jZShzZXNzaW9uSUQsIHRpbWUpKTsKKyAgICBhdXRvIGNhbGxiYWNr
ID0gVm9pZENhbGxiYWNrOjpjcmVhdGUoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSk7CisgICAg
dWludDY0X3QgY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7CisgICAgbV92b2lk
Q2FsbGJhY2tzLnNldChjYWxsYmFja0lELCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisKKyAgICBwcm9j
ZXNzUG9vbCgpLT5zZW5kVG9OZXR3b3JraW5nUHJvY2Vzc1JlbGF1bmNoaW5nSWZOZWNlc3Nhcnko
TWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OlNldENvb2tpZShzZXNzaW9uSUQsIGNvb2tpZSwg
Y2FsbGJhY2tJRCkpOwogfQogCi12b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6c2V0Q29va2ll
cyhXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29v
a2llPiYgY29va2llcywgY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwsIGNvbnN0IFdlYkNvcmU6OlVS
TCYgbWFpbkRvY3VtZW50VVJMKQordm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OnNldENvb2tp
ZXMoU2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVmVjdG9yPENvb2tpZT4mIGNvb2tpZXMsIGNv
bnN0IFVSTCYgdXJsLCBjb25zdCBVUkwmIG1haW5Eb2N1bWVudFVSTCwgRnVuY3Rpb248dm9pZCAo
Q2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKLSAgICBwcm9jZXNz
UG9vbCgpLT5zZW5kVG9OZXR3b3JraW5nUHJvY2Vzc1JlbGF1bmNoaW5nSWZOZWNlc3NhcnkoTWVz
c2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OlNldENvb2tpZXMoc2Vzc2lvbklELCBjb29raWVzLCB1
cmwsIG1haW5Eb2N1bWVudFVSTCkpOworICAgIGF1dG8gY2FsbGJhY2sgPSBWb2lkQ2FsbGJhY2s6
OmNyZWF0ZShXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pKTsKKyAgICB1aW50NjRfdCBjYWxsYmFj
a0lEID0gY2FsbGJhY2stPmNhbGxiYWNrSUQoKTsKKyAgICBtX3ZvaWRDYWxsYmFja3Muc2V0KGNh
bGxiYWNrSUQsIFdURk1vdmUoY2FsbGJhY2spKTsKKworICAgIHByb2Nlc3NQb29sKCktPnNlbmRU
b05ldHdvcmtpbmdQcm9jZXNzUmVsYXVuY2hpbmdJZk5lY2Vzc2FyeShNZXNzYWdlczo6V2ViQ29v
a2llTWFuYWdlcjo6U2V0Q29va2llcyhzZXNzaW9uSUQsIGNvb2tpZXMsIHVybCwgbWFpbkRvY3Vt
ZW50VVJMLCBjYWxsYmFja0lEKSk7CiB9CiAKLXZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5Ojpz
dGFydE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCkK
K3ZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpnZXRBbGxDb29raWVzKFNlc3Npb25JRCBzZXNz
aW9uSUQsIEZ1bmN0aW9uPHZvaWQgKGNvbnN0IFZlY3RvcjxDb29raWU+JiwgQ2FsbGJhY2tCYXNl
OjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKK3sKKyAgICBhdXRvIGNhbGxiYWNrID0gR2V0
Q29va2llc0NhbGxiYWNrOjpjcmVhdGUoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSk7CisgICAg
dWludDY0X3QgY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7CisgICAgbV9nZXRD
b29raWVzQ2FsbGJhY2tzLnNldChjYWxsYmFja0lELCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisKKyAg
ICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9OZXR3b3JraW5nUHJvY2Vzc1JlbGF1bmNoaW5nSWZOZWNl
c3NhcnkoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OkdldEFsbENvb2tpZXMoc2Vzc2lvbklE
LCBjYWxsYmFja0lEKSk7Cit9CisKK3ZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpnZXRDb29r
aWVzKFNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgdXJsLCBGdW5jdGlvbjx2b2lkIChj
b25zdCBWZWN0b3I8Q29va2llPiYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVu
Y3Rpb24pCit7CisgICAgYXV0byBjYWxsYmFjayA9IEdldENvb2tpZXNDYWxsYmFjazo6Y3JlYXRl
KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbikpOworICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBj
YWxsYmFjay0+Y2FsbGJhY2tJRCgpOworICAgIG1fZ2V0Q29va2llc0NhbGxiYWNrcy5zZXQoY2Fs
bGJhY2tJRCwgV1RGTW92ZShjYWxsYmFjaykpOworCisgICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRv
TmV0d29ya2luZ1Byb2Nlc3NSZWxhdW5jaGluZ0lmTmVjZXNzYXJ5KE1lc3NhZ2VzOjpXZWJDb29r
aWVNYW5hZ2VyOjpHZXRDb29raWVzKHNlc3Npb25JRCwgdXJsLCBjYWxsYmFja0lEKSk7Cit9CisK
K3ZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpkaWRTZXRDb29raWVzKHVpbnQ2NF90IGNhbGxi
YWNrSUQpCit7CisgICAgbV92b2lkQ2FsbGJhY2tzLnRha2UoY2FsbGJhY2tJRCktPnBlcmZvcm1D
YWxsYmFjaygpOworfQorCit2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGlkR2V0Q29va2ll
cyhjb25zdCBWZWN0b3I8Q29va2llPiYgY29va2llcywgdWludDY0X3QgY2FsbGJhY2tJRCkKK3sK
KyAgICBtX2dldENvb2tpZXNDYWxsYmFja3MudGFrZShjYWxsYmFja0lEKS0+cGVyZm9ybUNhbGxi
YWNrV2l0aFJldHVyblZhbHVlKGNvb2tpZXMpOworfQorCit2b2lkIFdlYkNvb2tpZU1hbmFnZXJQ
cm94eTo6ZGlkRGVsZXRlQ29va2llcyh1aW50NjRfdCBjYWxsYmFja0lEKQoreworICAgIG1fdm9p
ZENhbGxiYWNrcy50YWtlKGNhbGxiYWNrSUQpLT5wZXJmb3JtQ2FsbGJhY2soKTsKK30KKwordm9p
ZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OnN0YXJ0T2JzZXJ2aW5nQ29va2llQ2hhbmdlcyhTZXNz
aW9uSUQgc2Vzc2lvbklEKQogewogICAgIHByb2Nlc3NQb29sKCktPnNlbmRUb05ldHdvcmtpbmdQ
cm9jZXNzUmVsYXVuY2hpbmdJZk5lY2Vzc2FyeShNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6
U3RhcnRPYnNlcnZpbmdDb29raWVDaGFuZ2VzKHNlc3Npb25JRCkpOwogfQogCi12b2lkIFdlYkNv
b2tpZU1hbmFnZXJQcm94eTo6c3RvcE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMoV2ViQ29yZTo6U2Vz
c2lvbklEIHNlc3Npb25JRCkKK3ZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpzdG9wT2JzZXJ2
aW5nQ29va2llQ2hhbmdlcyhTZXNzaW9uSUQgc2Vzc2lvbklEKQogewogICAgIHByb2Nlc3NQb29s
KCktPnNlbmRUb05ldHdvcmtpbmdQcm9jZXNzUmVsYXVuY2hpbmdJZk5lY2Vzc2FyeShNZXNzYWdl
czo6V2ViQ29va2llTWFuYWdlcjo6U3RvcE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMoc2Vzc2lvbklE
KSk7CiB9CiAKLXZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpzZXRDb29raWVPYnNlcnZlckNh
bGxiYWNrKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHN0ZDo6ZnVuY3Rpb248dm9pZCAo
KT4mJiBjYWxsYmFjaykKK3ZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpzZXRDb29raWVPYnNl
cnZlckNhbGxiYWNrKFNlc3Npb25JRCBzZXNzaW9uSUQsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4m
JiBjYWxsYmFjaykKIHsKICAgICBpZiAoY2FsbGJhY2spCiAgICAgICAgIG1fY29va2llT2JzZXJ2
ZXJzLnNldChzZXNzaW9uSUQsIFdURk1vdmUoY2FsbGJhY2spKTsKQEAgLTE1MiwxNCArMjE0LDE0
IEBAIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpzZXRDb29raWVPYnNlcnZlckNhbGxiYWNr
KFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uCiAgICAgICAgIG1fY29va2llT2JzZXJ2ZXJzLnJl
bW92ZShzZXNzaW9uSUQpOwogfQogCi12b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6Y29va2ll
c0RpZENoYW5nZShXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQordm9pZCBXZWJDb29raWVN
YW5hZ2VyUHJveHk6OmNvb2tpZXNEaWRDaGFuZ2UoU2Vzc2lvbklEIHNlc3Npb25JRCkKIHsKICAg
ICBtX2NsaWVudC5jb29raWVzRGlkQ2hhbmdlKHRoaXMpOwogICAgIGlmIChhdXRvIGNhbGxiYWNr
ID0gbV9jb29raWVPYnNlcnZlcnMuZ2V0KHNlc3Npb25JRCkpCiAgICAgICAgIGNhbGxiYWNrKCk7
CiB9CiAKLXZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpzZXRIVFRQQ29va2llQWNjZXB0UG9s
aWN5KEhUVFBDb29raWVBY2NlcHRQb2xpY3kgcG9saWN5KQordm9pZCBXZWJDb29raWVNYW5hZ2Vy
UHJveHk6OnNldEhUVFBDb29raWVBY2NlcHRQb2xpY3koU2Vzc2lvbklELCBIVFRQQ29va2llQWNj
ZXB0UG9saWN5IHBvbGljeSwgRnVuY3Rpb248dm9pZCAoQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYg
Y2FsbGJhY2tGdW5jdGlvbikKIHsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBpZiAoIXByb2Nl
c3NQb29sKCktPmlzVXNpbmdUZXN0aW5nTmV0d29ya1Nlc3Npb24oKSkKQEAgLTE3MiwxMSArMjM0
LDE2IEBAIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpzZXRIVFRQQ29va2llQWNjZXB0UG9s
aWN5KEhUVFBDb29raWVBY2NlcHRQb2xpY3kgcG9sCiAgICAgLy8gVGhlIHBvbGljeSBpcyBub3Qg
c2VudCB0byBuZXdseSBjcmVhdGVkIHByb2Nlc3NlcyAob25seSBTb3VwIGRvZXMgdGhhdCB2aWEg
c2V0SW5pdGlhbEhUVFBDb29raWVBY2NlcHRQb2xpY3koKSkuIFRoaXMgaXMgbm90IGEgc2VyaW91
cyBwcm9ibGVtLCBiZWNhdXNlOgogICAgIC8vIC0gV2hlbiB0ZXN0aW5nLCB3ZSBvbmx5IGhhdmUg
b25lIFdlYlByb2Nlc3MgYW5kIG9uZSBOZXR3b3JrUHJvY2VzcywgYW5kIFdlYktpdFRlc3RSdW5u
ZXIgbmV2ZXIgcmVzdGFydHMgdGhlbTsKICAgICAvLyAtIFdoZW4gbm90IHRlc3RpbmcsIENvY29h
IGhhcyB0aGUgcG9saWN5IHBlcnNpc3RlZCwgYW5kIHRodXMgbmV3IHByb2Nlc3NlcyB1c2UgaXQg
KGV2ZW4gZm9yIGVwaGVtZXJhbCBzZXNzaW9ucykuCi0gICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRv
QWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpTZXRIVFRQQ29va2llQWNj
ZXB0UG9saWN5KHBvbGljeSkpOwotICAgIHByb2Nlc3NQb29sKCktPnNlbmRUb05ldHdvcmtpbmdQ
cm9jZXNzKE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpTZXRIVFRQQ29va2llQWNjZXB0UG9s
aWN5KHBvbGljeSkpOworICAgIHByb2Nlc3NQb29sKCktPnNlbmRUb0FsbFByb2Nlc3NlcyhNZXNz
YWdlczo6V2ViQ29va2llTWFuYWdlcjo6U2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShwb2xpY3ks
IDApKTsKKworICAgIGF1dG8gY2FsbGJhY2sgPSBWb2lkQ2FsbGJhY2s6OmNyZWF0ZShXVEZNb3Zl
KGNhbGxiYWNrRnVuY3Rpb24pKTsKKyAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gY2FsbGJhY2st
PmNhbGxiYWNrSUQoKTsKKyAgICBtX3ZvaWRDYWxsYmFja3Muc2V0KGNhbGxiYWNrSUQsIFdURk1v
dmUoY2FsbGJhY2spKTsKKworICAgIHByb2Nlc3NQb29sKCktPnNlbmRUb05ldHdvcmtpbmdQcm9j
ZXNzKE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5
KHBvbGljeSwgY2FsbGJhY2tJRCkpOwogfQogCi12b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6
Z2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShGdW5jdGlvbjx2b2lkIChIVFRQQ29va2llQWNjZXB0
UG9saWN5LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4gY2FsbGJhY2tGdW5jdGlvbikKK3ZvaWQgV2Vi
Q29va2llTWFuYWdlclByb3h5OjpnZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KFNlc3Npb25JRCwg
RnVuY3Rpb248dm9pZCAoSFRUUENvb2tpZUFjY2VwdFBvbGljeSwgQ2FsbGJhY2tCYXNlOjpFcnJv
cik+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKICAgICBhdXRvIGNhbGxiYWNrID0gSFRUUENvb2tp
ZUFjY2VwdFBvbGljeUNhbGxiYWNrOjpjcmVhdGUoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSk7
CiAKQEAgLTE4OCwxMyArMjU1LDEyIEBAIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpnZXRI
VFRQQ29va2llQWNjZXB0UG9saWN5KEZ1bmN0aW9uPHZvaWQgKEhUVFBDb29raWVBCiAKIHZvaWQg
V2ViQ29va2llTWFuYWdlclByb3h5OjpkaWRHZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHVpbnQz
Ml90IHBvbGljeSwgdWludDY0X3QgY2FsbGJhY2tJRCkKIHsKLSAgICBSZWZQdHI8SFRUUENvb2tp
ZUFjY2VwdFBvbGljeUNhbGxiYWNrPiBjYWxsYmFjayA9IG1faHR0cENvb2tpZUFjY2VwdFBvbGlj
eUNhbGxiYWNrcy50YWtlKGNhbGxiYWNrSUQpOwotICAgIGlmICghY2FsbGJhY2spIHsKLSAgICAg
ICAgLy8gRklYTUU6IExvZyBlcnJvciBvciBhc3NlcnQuCi0gICAgICAgIHJldHVybjsKLSAgICB9
CisgICAgbV9odHRwQ29va2llQWNjZXB0UG9saWN5Q2FsbGJhY2tzLnRha2UoY2FsbGJhY2tJRCkt
PnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZShwb2xpY3kpOworfQogCi0gICAgY2FsbGJh
Y2stPnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZShwb2xpY3kpOwordm9pZCBXZWJDb29r
aWVNYW5hZ2VyUHJveHk6OmRpZFNldEhUVFBDb29raWVBY2NlcHRQb2xpY3kodWludDY0X3QgY2Fs
bGJhY2tJRCkKK3sKKyAgICBtX3ZvaWRDYWxsYmFja3MudGFrZShjYWxsYmFja0lEKS0+cGVyZm9y
bUNhbGxiYWNrKCk7CiB9CiAKIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpzZXRDb29raWVT
dG9yYWdlUGFydGl0aW9uaW5nRW5hYmxlZChib29sIGVuYWJsZWQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmgKaW5kZXggY2Y3OThkN2NjY2M3
MTU0MTU5YjlkNjEyZGZmZGJiODZhZWQxZmU3MS4uZmRmODkxZTE1ODlhYzBkZDcyOTZmOTNhN2Y0
ZjdmYzc1ZmUyOTFmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNv
b2tpZU1hbmFnZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29r
aWVNYW5hZ2VyUHJveHkuaApAQCAtNTUsNiArNTUsNyBAQCBjbGFzcyBXZWJQcm9jZXNzUHJveHk7
CiAKIHR5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPEFQSTo6QXJyYXkqPiBBcnJheUNhbGxiYWNrOwog
dHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8SFRUUENvb2tpZUFjY2VwdFBvbGljeT4gSFRUUENvb2tp
ZUFjY2VwdFBvbGljeUNhbGxiYWNrOwordHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8Y29uc3QgVmVj
dG9yPFdlYkNvcmU6OkNvb2tpZT4mPiBHZXRDb29raWVzQ2FsbGJhY2s7CiAKIGNsYXNzIFdlYkNv
b2tpZU1hbmFnZXJQcm94eSA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5
cGU6OkNvb2tpZU1hbmFnZXI+LCBwdWJsaWMgV2ViQ29udGV4dFN1cHBsZW1lbnQsIHByaXZhdGUg
SVBDOjpNZXNzYWdlUmVjZWl2ZXIgewogcHVibGljOgpAQCAtNjYsMTQgKzY3LDIwIEBAIHB1Ymxp
YzoKICAgICB2b2lkIGluaXRpYWxpemVDbGllbnQoY29uc3QgV0tDb29raWVNYW5hZ2VyQ2xpZW50
QmFzZSopOwogICAgIAogICAgIHZvaWQgZ2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoV2ViQ29yZTo6
U2Vzc2lvbklELCBGdW5jdGlvbjx2b2lkIChBUEk6OkFycmF5KiwgQ2FsbGJhY2tCYXNlOjpFcnJv
cik+JiYpOworICAgIHZvaWQgZGVsZXRlQ29va2llKFdlYkNvcmU6OlNlc3Npb25JRCwgY29uc3Qg
V2ViQ29yZTo6Q29va2llJiwgRnVuY3Rpb248dm9pZCAoQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYp
OwogICAgIHZvaWQgZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKFdlYkNvcmU6OlNlc3Npb25JRCwg
Y29uc3QgU3RyaW5nJiBob3N0bmFtZSk7CiAgICAgdm9pZCBkZWxldGVBbGxDb29raWVzKFdlYkNv
cmU6OlNlc3Npb25JRCk7Ci0gICAgdm9pZCBkZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZShX
ZWJDb3JlOjpTZXNzaW9uSUQsIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQp
OworICAgIHZvaWQgZGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2UoV2ViQ29yZTo6U2Vzc2lv
bklELCBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50LCBGdW5jdGlvbjx2b2lk
IChDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CiAKLSAgICB2b2lkIHNldENvb2tpZXMoV2ViQ29y
ZTo6U2Vzc2lvbklELCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYsIGNvbnN0IFdlYkNv
cmU6OlVSTCYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgbWFpbkRvY3VtZW50VVJMKTsKKyAgICB2b2lk
IHNldENvb2tpZShXZWJDb3JlOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OkNvb2tpZSYsIEZ1
bmN0aW9uPHZvaWQgKENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKKyAgICB2b2lkIHNldENvb2tp
ZXMoV2ViQ29yZTo6U2Vzc2lvbklELCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYsIGNv
bnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgbWFpbkRvY3VtZW50VVJMLCBG
dW5jdGlvbjx2b2lkIChDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CisKKyAgICB2b2lkIGdldEFs
bENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklELCBGdW5jdGlvbjx2b2lkIChjb25zdCBWZWN0b3I8
V2ViQ29yZTo6Q29va2llPiYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKTsKKyAgICB2b2lkIGdldENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklELCBjb25zdCBXZWJD
b3JlOjpVUkwmLCBGdW5jdGlvbjx2b2lkIChjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYs
IENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKKworICAgIHZvaWQg
c2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShXZWJDb3JlOjpTZXNzaW9uSUQsIEhUVFBDb29raWVB
Y2NlcHRQb2xpY3ksIEZ1bmN0aW9uPHZvaWQgKENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKKyAg
ICB2b2lkIGdldEhUVFBDb29raWVBY2NlcHRQb2xpY3koV2ViQ29yZTo6U2Vzc2lvbklELCBGdW5j
dGlvbjx2b2lkIChIVFRQQ29va2llQWNjZXB0UG9saWN5LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4m
Jik7CiAKLSAgICB2b2lkIHNldEhUVFBDb29raWVBY2NlcHRQb2xpY3koSFRUUENvb2tpZUFjY2Vw
dFBvbGljeSk7Ci0gICAgdm9pZCBnZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KEZ1bmN0aW9uPHZv
aWQgKEhUVFBDb29raWVBY2NlcHRQb2xpY3ksIENhbGxiYWNrQmFzZTo6RXJyb3IpPik7CiAgICAg
dm9pZCBzZXRDb29raWVTdG9yYWdlUGFydGl0aW9uaW5nRW5hYmxlZChib29sKTsKIAogICAgIHZv
aWQgc3RhcnRPYnNlcnZpbmdDb29raWVDaGFuZ2VzKFdlYkNvcmU6OlNlc3Npb25JRCk7CkBAIC05
NSw2ICsxMDIsMTEgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZEdldEhvc3RuYW1lc1dpdGhDb29r
aWVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgdWludDY0X3QgY2FsbGJhY2tJRCk7CiAgICAgdm9p
ZCBkaWRHZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHVpbnQzMl90IHBvbGljeSwgdWludDY0X3Qg
Y2FsbGJhY2tJRCk7CiAKKyAgICB2b2lkIGRpZFNldEhUVFBDb29raWVBY2NlcHRQb2xpY3kodWlu
dDY0X3QgY2FsbGJhY2tJRCk7CisgICAgdm9pZCBkaWRTZXRDb29raWVzKHVpbnQ2NF90IGNhbGxi
YWNrSUQpOworICAgIHZvaWQgZGlkR2V0Q29va2llcyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29v
a2llPiYsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAgIHZvaWQgZGlkRGVsZXRlQ29va2llcyh1
aW50NjRfdCBjYWxsYmFja0lEKTsKKwogICAgIHZvaWQgY29va2llc0RpZENoYW5nZShXZWJDb3Jl
OjpTZXNzaW9uSUQpOwogCiAgICAgLy8gV2ViQ29udGV4dFN1cHBsZW1lbnQKQEAgLTExMyw2ICsx
MjUsOCBAQCBwcml2YXRlOgogCiAgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPEFycmF5Q2Fs
bGJhY2s+PiBtX2FycmF5Q2FsbGJhY2tzOwogICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxI
VFRQQ29va2llQWNjZXB0UG9saWN5Q2FsbGJhY2s+PiBtX2h0dHBDb29raWVBY2NlcHRQb2xpY3lD
YWxsYmFja3M7CisgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPFZvaWRDYWxsYmFjaz4+IG1f
dm9pZENhbGxiYWNrczsKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8R2V0Q29va2llc0Nh
bGxiYWNrPj4gbV9nZXRDb29raWVzQ2FsbGJhY2tzOwogCiAgICAgSGFzaE1hcDxXZWJDb3JlOjpT
ZXNzaW9uSUQsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4+IG1fY29va2llT2JzZXJ2ZXJzOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5
Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQ
cm94eS5tZXNzYWdlcy5pbgppbmRleCAxMmUwMDkwMThiNzRkYzVlOWE2ZDYwZGI2OGQyYWI0NGUy
ZjFhNDNmLi5kY2NiY2YyOWUwNzY2OTc0Yjc0MzU4NzIxMmIxMmMzYmY0Y2JjMWUxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5Lm1lc3Nh
Z2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJv
eHkubWVzc2FnZXMuaW4KQEAgLTIzLDYgKzIzLDExIEBACiBtZXNzYWdlcyAtPiBXZWJDb29raWVN
YW5hZ2VyUHJveHkgewogICAgIERpZEdldEhvc3RuYW1lc1dpdGhDb29raWVzKFZlY3RvcjxTdHJp
bmc+IGhvc3RuYW1lcywgdWludDY0X3QgY2FsbGJhY2tJRCk7CiAgICAgRGlkR2V0SFRUUENvb2tp
ZUFjY2VwdFBvbGljeSh1aW50MzJfdCBwb2xpY3ksIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwotICAg
IAorCisgICAgRGlkU2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSh1aW50NjRfdCBjYWxsYmFja0lE
KTsKKyAgICBEaWREZWxldGVDb29raWVzKHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAgIERpZFNl
dENvb2tpZXModWludDY0X3QgY2FsbGJhY2tJRCk7CisgICAgRGlkR2V0Q29va2llcyhWZWN0b3I8
V2ViQ29yZTo6Q29va2llPiBjb29raWVzLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKKwogICAgIENv
b2tpZXNEaWRDaGFuZ2UoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCkKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5oCmluZGV4IDZiZjk5Mzg2MmI3ZWFjYTUxYTc1
YjU5MDBmYTNmNzQxNjc5YmQ1ZmUuLjU1YjViNjdlMGIyZjk1Yjk3MjI0NWRlNWM4ZGNjYTc4Yjhk
NzE2ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuaApAQCAtMzEs
NiArMzEsNyBAQAogI2luY2x1ZGUgIldlYkZyYW1lTGlzdGVuZXJQcm94eS5oIgogI2luY2x1ZGUg
PFdlYkNvcmUvRnJhbWVMb2FkZXJUeXBlcy5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Cisj
aW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggZjY5NjIzMWJhMDU5ODYxZTE4ZmVmYzRhYjZmYmY4
MjMxMzY5MWU3Ny4uYWFjNmJhNWIzYzE1MjE4Mjg3YjlkMzU4MDY4NTdmNWQ5ZDA1OWJlMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCkBAIC0zMCw2ICsz
MCw3IEBACiAjaW5jbHVkZSAiQVBJQXV0b21hdGlvbkNsaWVudC5oIgogI2luY2x1ZGUgIkFQSUN1
c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5oIgogI2luY2x1ZGUgIkFQSURvd25sb2FkQ2xpZW50
LmgiCisjaW5jbHVkZSAiQVBJSFRUUENvb2tpZVN0b3JhZ2UuaCIKICNpbmNsdWRlICJBUElMZWdh
Y3lDb250ZXh0SGlzdG9yeUNsaWVudC5oIgogI2luY2x1ZGUgIkFQSVBhZ2VDb25maWd1cmF0aW9u
LmgiCiAjaW5jbHVkZSAiQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgiCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCmluZGV4IDg4NWFkM2NlYmIzNjE3OWQxZDZk
Y2I2NzVlYzViODEzOWRiNjVmNjkuLmUwZTE5MjZkNTNlNDE4MjgyYzJlYjFjYmIwZDUxYzUxY2Uw
YmU1NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9v
bC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCkBAIC03
Niw2ICs3Niw3IEBAIG5hbWVzcGFjZSBBUEkgewogY2xhc3MgQXV0b21hdGlvbkNsaWVudDsKIGNs
YXNzIEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudDsKIGNsYXNzIERvd25sb2FkQ2xpZW50Owor
Y2xhc3MgSFRUUENvb2tpZVN0b3JhZ2U7CiBjbGFzcyBMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVu
dDsKIGNsYXNzIFBhZ2VDb25maWd1cmF0aW9uOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCmluZGV4IDdi
YWFmODU0NTQyZDY3OGFlZmVhZjRmMjU4YWQ3ZjE0Y2EyMDUxZWMuLjYzMzJmN2RiODYwYmIzM2Q1
MDA5YzRlNTdjMDVlZGQyYTFkMzIxMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKQEAgLTMwLDYgKzMw
LDcgQEAKICNpbmNsdWRlICJBUElXZWJzaXRlRGF0YVJlY29yZC5oIgogI2luY2x1ZGUgIk5ldHdv
cmtQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJTdG9yYWdlTWFuYWdlci5oIgorI2luY2x1
ZGUgIldlYkNvb2tpZU1hbmFnZXJQcm94eS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NNZXNzYWdl
cy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sLmgiCiAjaW5jbHVkZSAiV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlLmgiCkBAIC0xMDUsNiArMTA2LDI3IEBAIFdlYnNpdGVEYXRhU3Rv
cmU6On5XZWJzaXRlRGF0YVN0b3JlKCkKICAgICB9CiB9CiAKK1JlZjxXZWJQcm9jZXNzUG9vbD4g
V2Vic2l0ZURhdGFTdG9yZTo6cHJvY2Vzc1Bvb2xGb3JDb29raWVTdG9yYWdlT3BlcmF0aW9ucygp
Cit7CisgICAgLy8gT3VyIGNvbmNlcHRzIG9mIFdlYlByb2Nlc3MsIFdlYlByb2Nlc3NQb29sLCBX
ZWJzaXRlRGF0YVN0b3JlLCBhbmQgU2Vzc2lvbklEcyBoYXZlIGFsbCBzdGFydGVkIHRvIG92ZXJs
YXAKKyAgICAvLyB3aXRob3V0IGNsZWFyIGRpdmlzaW9ucyBvZiByZXNwb25zaWJpbGl0aWVzLgor
ICAgIC8vIEluIHByYWN0aWNlLCBtdWx0aXBsZSBXZWJQcm9jZXNzUG9vbHMgY2FuIGNvbnRhaW4g
InRoZSBzYW1lIHNlc3Npb24iLCBlc3BlY2lhbGx5IHNpbmNlIHRoZXJlIGlzIGN1cnJlbnRseQor
ICAgIC8vIG9ubHkgYSBzaW5nbGUgZGVmYXVsdCBnbG9iYWwgU2Vzc2lvbklELgorICAgIC8vCisg
ICAgLy8gVGhpcyBtZWFucyB0aGF0IG11bHRpcGxlIE5ldHdvcmtQcm9jZXNzZXMgY2FuIGJlIHVz
aW5nIHRoZSBzYW1lIHNlc3Npb24sIHdoaWNoIG1lYW5zIHRoYXQgbXVsdGlwbGUKKyAgICAvLyBO
ZXR3b3JrUHJvY2Vzc2VzIGNhbiBiZSByZWZlcnJpbmcgdG8gdGhlIHNhbWUgcGxhdGZvcm0gY29v
a2llIHN0b3JhZ2UuCisgICAgLy8KKyAgICAvLyBXaGlsZSB0aGlzIG1heSBjYXVzZSBjb21wbGlj
YXRpb25zIHdpdGggZnV0dXJlIEFQSXMgaXQgaXMgYWN0dWFsbHkgZmluZSBmb3IgaW1wbGVtZW50
aW5nIHRoZSBXS0hUVFBDb29raWVTdG9yYWdlIEFQSQorICAgIC8vIGJlY2F1c2Ugd2Ugb25seSBu
ZWVkIG9uZSBOZXR3b3JrUHJvY2VzcyB0byBzdWNjZXNzZnVsbHkgbWFrZSBhIHJlcXVlc3RlZCBw
bGF0Zm9ybSBjb29raWUgc3RvcmFnZSBjaGFuZ2UuCisgICAgLy8KKyAgICAvLyBGSVhNRTogV2Ug
bmVlZCB0byBzdGFydCB0byB1bnJhdmVsIHRoaXMgbWVzcyBnb2luZyBmb3J3YXJkLgorCisgICAg
YXV0byBwb29scyA9IHByb2Nlc3NQb29scygxKTsKKyAgICBBU1NFUlQoIXBvb2xzLmlzRW1wdHko
KSk7CisKKyAgICByZXR1cm4gKipwb29scy5iZWdpbigpOworfQorCiB2b2lkIFdlYnNpdGVEYXRh
U3RvcmU6OnJlc29sdmVEaXJlY3Rvcmllc0lmTmVjZXNzYXJ5KCkKIHsKICAgICBpZiAobV9oYXNS
ZXNvbHZlZERpcmVjdG9yaWVzKQpAQCAtMTEwOCw3ICsxMTMwLDcgQEAgdm9pZCBXZWJzaXRlRGF0
YVN0b3JlOjp3ZWJQcm9jZXNzRGlkQ2xvc2VDb25uZWN0aW9uKFdlYlByb2Nlc3NQcm94eSYgd2Vi
UHJvY2Vzc1AKICAgICAgICAgbV9zdG9yYWdlTWFuYWdlci0+cHJvY2Vzc0RpZENsb3NlQ29ubmVj
dGlvbih3ZWJQcm9jZXNzUHJveHksIGNvbm5lY3Rpb24pOwogfQogCi1IYXNoU2V0PFJlZlB0cjxX
ZWJQcm9jZXNzUG9vbD4+IFdlYnNpdGVEYXRhU3RvcmU6OnByb2Nlc3NQb29scygpIGNvbnN0CitI
YXNoU2V0PFJlZlB0cjxXZWJQcm9jZXNzUG9vbD4+IFdlYnNpdGVEYXRhU3RvcmU6OnByb2Nlc3NQ
b29scyhzaXplX3QgY291bnQpIGNvbnN0CiB7CiAgICAgSGFzaFNldDxSZWZQdHI8V2ViUHJvY2Vz
c1Bvb2w+PiBwcm9jZXNzUG9vbHM7CiAgICAgZm9yIChhdXRvJiBwcm9jZXNzIDogcHJvY2Vzc2Vz
KCkpCkBAIC0xMTIyLDExICsxMTQ0LDIwIEBAIEhhc2hTZXQ8UmVmUHRyPFdlYlByb2Nlc3NQb29s
Pj4gV2Vic2l0ZURhdGFTdG9yZTo6cHJvY2Vzc1Bvb2xzKCkgY29uc3QKICAgICAgICAgICAgICAg
ICAgICAgcHJvY2Vzc1Bvb2xzLmFkZChwcm9jZXNzUG9vbCk7CiAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSBpZiAoJkFQSTo6
V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZSgpLT53ZWJzaXRlRGF0YVN0b3JlKCkg
PT0gdGhpcykgeworICAgICAgICAgICAgICAgIC8vIElmIGEgcHJvY2VzcyBwb29sIGRvZXNuJ3Qg
aGF2ZSBhbiBleHBsaWNpdCBkYXRhIHN0b3JlIGFuZCB0aGlzIGlzIHRoZSBkZWZhdWx0IFdlYnNp
dGVEYXRhU3RvcmUsCisgICAgICAgICAgICAgICAgLy8gYWRkIHRoYXQgcHJvY2VzcyBwb29sIHRv
IHRoZSBzZXQuCisgICAgICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgYmVoYXZpb3IgaXMgd2Vp
cmQgYW5kIG5lY2Vzc2l0YXRlZCBieSB0aGUgZmFjdCB0aGF0IHByb2Nlc3MgcG9vbHMgZG9uJ3Qg
YWx3YXlzCisgICAgICAgICAgICAgICAgLy8gaGF2ZSBhIGRhdGEgc3RvcmU7IHRoZXkgc2hvdWxk
LgorICAgICAgICAgICAgICAgIHByb2Nlc3NQb29scy5hZGQocHJvY2Vzc1Bvb2wpOwogICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICBpZiAocHJvY2Vzc1Bvb2xzLnNpemUoKSA9PSBjb3VudCkK
KyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmIChwcm9j
ZXNzUG9vbHMuaXNFbXB0eSgpKSB7CisgICAgaWYgKHByb2Nlc3NQb29scy5pc0VtcHR5KCkgJiYg
Y291bnQpIHsKICAgICAgICAgYXV0byBwcm9jZXNzUG9vbCA9IFdlYlByb2Nlc3NQb29sOjpjcmVh
dGUoQVBJOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OmNyZWF0ZVdpdGhXZWJzaXRlRGF0YVN0
b3JlQ29uZmlndXJhdGlvbihtX2NvbmZpZ3VyYXRpb24pKTsKICAgICAgICAgcHJvY2Vzc1Bvb2xz
LmFkZChwcm9jZXNzUG9vbC5wdHIoKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKaW5kZXggOTc1YmFj
OGQ4OWJiMWVjYzY1NjI2ZGQ0MDc0YWY5Yzc2YWY4MzQ1Ny4uOGQxM2JjZTQ5ODI5YjNjYWRhYjA3
Zjg0NWFiMjRiYmM5Mzg1ODQ3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCkBAIC0xMDMsNiArMTAzLDggQEAg
cHVibGljOgogCiAgICAgU3RvcmFnZU1hbmFnZXIqIHN0b3JhZ2VNYW5hZ2VyKCkgeyByZXR1cm4g
bV9zdG9yYWdlTWFuYWdlci5nZXQoKTsgfQogCisgICAgUmVmPFdlYlByb2Nlc3NQb29sPiBwcm9j
ZXNzUG9vbEZvckNvb2tpZVN0b3JhZ2VPcGVyYXRpb25zKCk7CisKIHByaXZhdGU6CiAgICAgZXhw
bGljaXQgV2Vic2l0ZURhdGFTdG9yZShXZWJDb3JlOjpTZXNzaW9uSUQpOwogICAgIGV4cGxpY2l0
IFdlYnNpdGVEYXRhU3RvcmUoQ29uZmlndXJhdGlvbik7CkBAIC0xMTksNyArMTIxLDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIHBsYXRmb3JtRGVzdHJveSgpOwogICAgIHN0YXRpYyB2b2lkIHBsYXRm
b3JtUmVtb3ZlUmVjZW50U2VhcmNoZXMoc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9w
b2ludCk7CiAKLSAgICBIYXNoU2V0PFJlZlB0cjxXZWJQcm9jZXNzUG9vbD4+IHByb2Nlc3NQb29s
cygpIGNvbnN0OworICAgIEhhc2hTZXQ8UmVmUHRyPFdlYlByb2Nlc3NQb29sPj4gcHJvY2Vzc1Bv
b2xzKHNpemVfdCBjb3VudCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCkpIGNv
bnN0OwogCiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAgICAgVmVjdG9yPFBsdWdp
bk1vZHVsZUluZm8+IHBsdWdpbnMoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQyL1dlYktp
dDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA3ZTE4ODIyZjA0ZDE3NmFhODk5NGI0
NjZhODA1NjY5YWRjYTkwMjkwLi5lMzliZTlhZWUwOTU4YWEwYjgzOGYyY2RhOGY0YTM2MDk4NTk5
NjkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC0xMDYzLDYgKzEwNjMsOSBAQAogCQk1MUQxMjQzNTFFNkRGNjUyMDAyQjI4MjAg
LyogV0tVUkxTY2hlbWVIYW5kbGVyVGFzay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTFEMTI0MkYxRTZERERENzAwMkIyODIwIC8qIFdLVVJMU2NoZW1l
SGFuZGxlclRhc2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07
IH07CiAJCTUxRDEyNDM2MUU2REZCMzkwMDJCMjgyMCAvKiBXS1VSTFNjaGVtZUhhbmRsZXJUYXNr
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFEMTI0
MzAxRTZERERENzAwMkIyODIwIC8qIFdLVVJMU2NoZW1lSGFuZGxlclRhc2subW0gKi87IH07CiAJ
CTUxRDEyNDNBMUU2RTBBQUIwMDJCMjgyMCAvKiBBUElVUkxTY2hlbWVIYW5kbGVyVGFzay5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUQxMjQzODFF
NkRGREI5MDAyQjI4MjAgLyogQVBJVVJMU2NoZW1lSGFuZGxlclRhc2suY3BwICovOyB9OworCQk1
MUQxMjQ5MTFFNzRCRjNDMDAyQjI4MjAgLyogQVBJSFRUUENvb2tpZVN0b3JhZ2UuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFEMTI0ODIxRTczNEFD
ODAwMkIyODIwIC8qIEFQSUhUVFBDb29raWVTdG9yYWdlLmNwcCAqLzsgfTsKKwkJNTFEMTI0OTIx
RTc0QkY0ODAwMkIyODIwIC8qIFdLSFRUUENvb2tpZVN0b3JhZ2UubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUQxMjQ4NTFFNzM0QUUzMDAyQjI4MjAg
LyogV0tIVFRQQ29va2llU3RvcmFnZS5tbSAqLzsgfTsKKwkJNTFEMTI0OTkxRTc2M0MwMTAwMkIy
ODIwIC8qIFdLSFRUUENvb2tpZVN0b3JhZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxRDEyNDg0MUU3MzRBRTMwMDJCMjgyMCAvKiBXS0hUVFBDb29r
aWVTdG9yYWdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJNTFEMTMwNTMxMzgyRUFDMDAwMzUxRUREIC8qIFNlY0l0ZW1SZXF1ZXN0RGF0YS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUQxMzA0RjEz
ODJFQUMwMDAzNTFFREQgLyogU2VjSXRlbVJlcXVlc3REYXRhLmNwcCAqLzsgfTsKIAkJNTFEMTMw
NTQxMzgyRUFDMDAwMzUxRUREIC8qIFNlY0l0ZW1SZXF1ZXN0RGF0YS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFEMTMwNTAxMzgyRUFDMDAwMzUxRURE
IC8qIFNlY0l0ZW1SZXF1ZXN0RGF0YS5oICovOyB9OwogCQk1MUQxMzA1NTEzODJFQUMwMDAzNTFF
REQgLyogU2VjSXRlbVJlc3BvbnNlRGF0YS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MUQxMzA1MTEzODJFQUMwMDAzNTFFREQgLyogU2VjSXRlbVJl
c3BvbnNlRGF0YS5jcHAgKi87IH07CkBAIC0zMjg1LDYgKzMyODgsMTEgQEAKIAkJNTFEMTI0Mzcx
RTZERkQyQTAwMkIyODIwIC8qIFdLVVJMU2NoZW1lSGFuZGxlclRhc2tJbnRlcm5hbC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1VSTFNjaGVtZUhhbmRsZXJUYXNrSW50ZXJu
YWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFEMTI0MzgxRTZERkRCOTAwMkIy
ODIwIC8qIEFQSVVSTFNjaGVtZUhhbmRsZXJUYXNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEFQSVVSTFNjaGVtZUhhbmRsZXJUYXNrLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNTFEMTI0MzkxRTZERkRCOTAwMkIyODIwIC8qIEFQSVVSTFNjaGVt
ZUhhbmRsZXJUYXNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFQSVVSTFNj
aGVtZUhhbmRsZXJUYXNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxRDEyNDgy
MUU3MzRBQzgwMDJCMjgyMCAvKiBBUElIVFRQQ29va2llU3RvcmFnZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBUElIVFRQQ29va2llU3RvcmFnZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxRDEyNDgzMUU3MzRBQzgwMDJCMjgyMCAvKiBBUElI
VFRQQ29va2llU3RvcmFnZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBUElI
VFRQQ29va2llU3RvcmFnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MUQxMjQ4
NDFFNzM0QUUzMDAyQjI4MjAgLyogV0tIVFRQQ29va2llU3RvcmFnZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXS0hUVFBDb29raWVTdG9yYWdlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTUxRDEyNDg1MUU3MzRBRTMwMDJCMjgyMCAvKiBXS0hUVFBDb29raWVT
dG9yYWdlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tIVFRQ
Q29va2llU3RvcmFnZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFEMTI0ODYx
RTczNEFFMzAwMkIyODIwIC8qIFdLSFRUUENvb2tpZVN0b3JhZ2VJbnRlcm5hbC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0hUVFBDb29raWVTdG9yYWdlSW50ZXJuYWwuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFEMTMwNEYxMzgyRUFDMDAwMzUxRUREIC8q
IFNlY0l0ZW1SZXF1ZXN0RGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBTZWNJdGVtUmVxdWVzdERhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1MUQxMzA1MDEzODJFQUMwMDAzNTFFREQgLyogU2VjSXRlbVJlcXVlc3REYXRhLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNlY0l0ZW1SZXF1ZXN0RGF0YS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1MUQxMzA1MTEzODJFQUMwMDAzNTFFREQgLyogU2VjSXRl
bVJlc3BvbnNlRGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBT
ZWNJdGVtUmVzcG9uc2VEYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTU1
NDQsNiArNTU1Miw5IEBACiAJCQkJMUE0RDY2NDkxOEEzMDMwRTAwRDgyRTIxIC8qIFdLRnJhbWVJ
bmZvLm1tICovLAogCQkJCTJERjlFRUU3MUE3ODI0NTUwMEI2Q0ZCRSAvKiBXS0ZyYW1lSW5mb0lu
dGVybmFsLmggKi8sCiAJCQkJMUE2RkEyMUQxQkQwNDM1QjAwQUFBNjUwIC8qIFdLRnJhbWVJbmZv
UHJpdmF0ZS5oICovLAorCQkJCTUxRDEyNDg0MUU3MzRBRTMwMDJCMjgyMCAvKiBXS0hUVFBDb29r
aWVTdG9yYWdlLmggKi8sCisJCQkJNTFEMTI0ODUxRTczNEFFMzAwMkIyODIwIC8qIFdLSFRUUENv
b2tpZVN0b3JhZ2UubW0gKi8sCisJCQkJNTFEMTI0ODYxRTczNEFFMzAwMkIyODIwIC8qIFdLSFRU
UENvb2tpZVN0b3JhZ2VJbnRlcm5hbC5oICovLAogCQkJCTFBNDIyRjhBMThCMjlCNTQwMEQ4Q0Q5
NiAvKiBXS0hpc3RvcnlEZWxlZ2F0ZVByaXZhdGUuaCAqLywKIAkJCQkxQUI0MEVFMzFCRjY3N0Uz
MDBCQTgxQkUgLyogV0tNZW51SXRlbUlkZW50aWZpZXJzLm1tICovLAogCQkJCTFBQjQwRUU0MUJG
Njc3RTMwMEJBODFCRSAvKiBXS01lbnVJdGVtSWRlbnRpZmllcnNQcml2YXRlLmggKi8sCkBAIC02
NzMyLDYgKzY3NDMsOCBAQAogCQkJCTJEQUJBNzc1MUE4MkI0MjEwMEVGMEYxQSAvKiBBUElIaXN0
b3J5Q2xpZW50LmggKi8sCiAJCQkJOTNBODhCNDIxQkM4ODI4QzAwQUJBNUMyIC8qIEFQSUhpdFRl
c3RSZXN1bHQuY3BwICovLAogCQkJCTkzQTg4QjQzMUJDODgyOEMwMEFCQTVDMiAvKiBBUElIaXRU
ZXN0UmVzdWx0LmggKi8sCisJCQkJNTFEMTI0ODIxRTczNEFDODAwMkIyODIwIC8qIEFQSUhUVFBD
b29raWVTdG9yYWdlLmNwcCAqLywKKwkJCQk1MUQxMjQ4MzFFNzM0QUM4MDAyQjI4MjAgLyogQVBJ
SFRUUENvb2tpZVN0b3JhZ2UuaCAqLywKIAkJCQk1MTQzQjI2MTFEREQwREEwMDAxNEZBQzYgLyog
QVBJSWNvbkxvYWRpbmdDbGllbnQuaCAqLywKIAkJCQk3Q0U0RDIwNjFBNDY3NzU3MDBDN0YxNTIg
LyogQVBJTGVnYWN5Q29udGV4dEhpc3RvcnlDbGllbnQuaCAqLywKIAkJCQkxQTI0NjRGMjE4OTFF
NDUxMDAyMzRDNUIgLyogQVBJTG9hZGVyQ2xpZW50LmggKi8sCkBAIC04NTE1LDYgKzg1MjgsNyBA
QAogCQkJCTUxNDEyOTk0MUM2NDI4QkIwMDU5RTcxNCAvKiBXZWJJREJDb25uZWN0aW9uVG9TZXJ2
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMDUyMzc0MUM3M0QzOEIwMDc5OTNDQiAvKiBXZWJJ
REJDb25uZWN0aW9uVG9TZXJ2ZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNDRjZB
QkQxMkM5MUVGOTAwOEY5QzM1IC8qIFdlYkltYWdlLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MUQx
MjQ5OTFFNzYzQzAxMDAyQjI4MjAgLyogV0tIVFRQQ29va2llU3RvcmFnZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMUM4RTI4MjAxMjc1RDE1NDAwQkM3QkQwIC8qIFdlYkluc3BlY3Rvci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQkMwMzJEODIxMEY0Mzc4RDAwNThDMTVBIC8qIFdlYkluc3BlY3RvckNs
aWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU1QkE4MzUxQkEzRTcwQTAwN0NEMzNEIC8qIFdl
Ykluc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlci5oIGluIEhlYWRlcnMgKi8sCkBAIC05NzY3
LDYgKzk3ODEsNyBAQAogCQkJCTFBNkZCQTJCMTFFNjg2MjcwMERCMTM3MSAvKiBOZXRzY2FwZUJy
b3dzZXJGdW5jcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTZGQkQyOTExRTY5QkMyMDBEQjEz
NzEgLyogTmV0c2NhcGVQbHVnaW4uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFFNUI3RkIxMUU3
QUVEMjAwQkE2NzY3IC8qIE5ldHNjYXBlUGx1Z2luTWFjLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJ
NTFEMTI0OTIxRTc0QkY0ODAwMkIyODIwIC8qIFdLSFRUUENvb2tpZVN0b3JhZ2UubW0gaW4gU291
cmNlcyAqLywKIAkJCQkxQTRBOUM1NTEyQjgxNkNGMDA4RkU5ODQgLyogTmV0c2NhcGVQbHVnaW5N
b2R1bGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODM5QTJGMzExRTIwNjc0NTAwMzkwNTdFIC8q
IEhpZ2hQZXJmb3JtYW5jZUdyYXBoaWNzVXNhZ2VTYW1wbGVyLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTFBNEE5QzlBMTJCODIxQ0QwMDhGRTk4NCAvKiBOZXRzY2FwZVBsdWdpbk1vZHVsZU1hYy5t
bSBpbiBTb3VyY2VzICovLApAQCAtOTc4NSw2ICs5ODAwLDcgQEAKIAkJCQk4MzFFRUJCRTFCRDg1
QzQzMDBCQjY0QzMgLyogTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTgzMkFFMjUzMUJFMkU4Q0QwMEZBQUUxMCAvKiBOZXR3b3JrQ2FjaGVTcGVjdWxh
dGl2ZUxvYWRNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTgzQkRDQ0I5MUFDNUZEQjYw
MDNGNjQ0MSAvKiBOZXR3b3JrQ2FjaGVTdGF0aXN0aWNzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CTUxRDEyNDkxMUU3NEJGM0MwMDJCMjgyMCAvKiBBUElIVFRQQ29va2llU3RvcmFnZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlFNDQzNkVEMDFBMEQwNDBCMDBFQUQyMDQgLyogTmV0d29ya0NhY2hl
U3RvcmFnZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4MzEwNDI4QzFCRDZCNjZGMDBBNzE1RTQg
LyogTmV0d29ya0NhY2hlU3VicmVzb3VyY2VzRW50cnkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NTMwMjU4M0QxRENCQkQyMjAwREE4OUMyIC8qIE5ldHdvcmtDYXB0dXJlRXZlbnQuY3BwIGluIFNv
dXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Nvb2tpZXMv
V2ViQ29va2llTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Nvb2tpZXMv
V2ViQ29va2llTWFuYWdlci5jcHAKaW5kZXggOWUyMWY3OGNjZGJiMTgyMTc5NDI1NTNmOWZlMGYx
ZGQ3MDQxMzM4NC4uNzU0M2EyOWQ4YmViOGNlYTM5MjY2MjE2YTYwMDhjNTg2MjM0ZWYzNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFn
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVN
YW5hZ2VyLmNwcApAQCAtNzIsMjIgKzcyLDY0IEBAIHZvaWQgV2ViQ29va2llTWFuYWdlcjo6ZGVs
ZXRlQ29va2llc0Zvckhvc3RuYW1lKFNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluCiAg
ICAgICAgIFdlYkNvcmU6OmRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZXMoKnN0b3JhZ2VTZXNzaW9u
LCB7IGhvc3RuYW1lIH0pOwogfQogCisKIHZvaWQgV2ViQ29va2llTWFuYWdlcjo6ZGVsZXRlQWxs
Q29va2llcyhTZXNzaW9uSUQgc2Vzc2lvbklEKQogewogICAgIGlmIChhdXRvKiBzdG9yYWdlU2Vz
c2lvbiA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkK
ICAgICAgICAgV2ViQ29yZTo6ZGVsZXRlQWxsQ29va2llcygqc3RvcmFnZVNlc3Npb24pOwogfQog
Ci12b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmRlbGV0ZUFsbENvb2tpZXNNb2RpZmllZFNpbmNlKFNl
c3Npb25JRCBzZXNzaW9uSUQsIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQg
dGltZSkKK3ZvaWQgV2ViQ29va2llTWFuYWdlcjo6ZGVsZXRlQ29va2llKFNlc3Npb25JRCBzZXNz
aW9uSUQsIGNvbnN0IENvb2tpZSYgY29va2llLCB1aW50NjRfdCBjYWxsYmFja0lEKQoreworICAg
IGlmIChhdXRvKiBzdG9yYWdlU2Vzc2lvbiA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFn
ZVNlc3Npb24oc2Vzc2lvbklEKSkKKyAgICAgICAgc3RvcmFnZVNlc3Npb24tPmRlbGV0ZUNvb2tp
ZShjb29raWUpOworCisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJDb29raWVNYW5h
Z2VyUHJveHk6OkRpZERlbGV0ZUNvb2tpZXMoY2FsbGJhY2tJRCksIDApOworfQorCit2b2lkIFdl
YkNvb2tpZU1hbmFnZXI6OmRlbGV0ZUFsbENvb2tpZXNNb2RpZmllZFNpbmNlKFNlc3Npb25JRCBz
ZXNzaW9uSUQsIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgdGltZSwgdWlu
dDY0X3QgY2FsbGJhY2tJRCkKIHsKICAgICBpZiAoYXV0byogc3RvcmFnZVNlc3Npb24gPSBOZXR3
b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCiAgICAgICAgIFdl
YkNvcmU6OmRlbGV0ZUFsbENvb2tpZXNNb2RpZmllZFNpbmNlKCpzdG9yYWdlU2Vzc2lvbiwgdGlt
ZSk7CisKKyAgICBpZiAoY2FsbGJhY2tJRCkKKyAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OkRpZERlbGV0ZUNvb2tpZXMoY2FsbGJhY2tJRCks
IDApOworfQorCit2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmdldEFsbENvb2tpZXMoU2Vzc2lvbklE
IHNlc3Npb25JRCwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3sKKyAgICBWZWN0b3I8Q29va2llPiBj
b29raWVzOworICAgIGlmIChhdXRvKiBzdG9yYWdlU2Vzc2lvbiA9IE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKKyAgICAgICAgY29va2llcyA9IHN0b3Jh
Z2VTZXNzaW9uLT5nZXRBbGxDb29raWVzKCk7CisKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6RGlkR2V0Q29va2llcyhjb29raWVzLCBjYWxsYmFj
a0lEKSwgMCk7CiB9CiAKLXZvaWQgV2ViQ29va2llTWFuYWdlcjo6c2V0Q29va2llcyhXZWJDb3Jl
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBWZWN0b3I8Q29va2llPiYgY29va2llcywgY29u
c3QgVVJMJiB1cmwsIGNvbnN0IFVSTCYgbWFpbkRvY3VtZW50VVJMKQordm9pZCBXZWJDb29raWVN
YW5hZ2VyOjpnZXRDb29raWVzKFNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgdXJsLCB1
aW50NjRfdCBjYWxsYmFja0lEKQoreworICAgIFZlY3RvcjxDb29raWU+IGNvb2tpZXM7CisgICAg
aWYgKGF1dG8qIHN0b3JhZ2VTZXNzaW9uID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdl
U2Vzc2lvbihzZXNzaW9uSUQpKQorICAgICAgICBjb29raWVzID0gc3RvcmFnZVNlc3Npb24tPmdl
dENvb2tpZXModXJsKTsKKworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViQ29va2ll
TWFuYWdlclByb3h5OjpEaWRHZXRDb29raWVzKGNvb2tpZXMsIGNhbGxiYWNrSUQpLCAwKTsKK30K
Kwordm9pZCBXZWJDb29raWVNYW5hZ2VyOjpzZXRDb29raWUoV2ViQ29yZTo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgY29uc3QgQ29va2llJiBjb29raWUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit7Cisg
ICAgaWYgKGF1dG8qIHN0b3JhZ2VTZXNzaW9uID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9y
YWdlU2Vzc2lvbihzZXNzaW9uSUQpKQorICAgICAgICBzdG9yYWdlU2Vzc2lvbi0+c2V0Q29va2ll
KGNvb2tpZSk7CisKKyAgICBpZiAoY2FsbGJhY2tJRCkKKyAgICAgICAgbV9wcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OkRpZFNldENvb2tpZXMoY2FsbGJhY2tJ
RCksIDApOworfQorCit2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OnNldENvb2tpZXMoV2ViQ29yZTo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVmVjdG9yPENvb2tpZT4mIGNvb2tpZXMsIGNvbnN0
IFVSTCYgdXJsLCBjb25zdCBVUkwmIG1haW5Eb2N1bWVudFVSTCwgdWludDY0X3QgY2FsbGJhY2tJ
RCkKIHsKICAgICBpZiAoYXV0byogc3RvcmFnZVNlc3Npb24gPSBOZXR3b3JrU3RvcmFnZVNlc3Np
b246OnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCiAgICAgICAgIHN0b3JhZ2VTZXNzaW9uLT5z
ZXRDb29raWVzKGNvb2tpZXMsIHVybCwgbWFpbkRvY3VtZW50VVJMKTsKKworICAgIGlmIChjYWxs
YmFja0lEKQorICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFn
ZXJQcm94eTo6RGlkU2V0Q29va2llcyhjYWxsYmFja0lEKSwgMCk7CiB9CiAKIHZvaWQgV2ViQ29v
a2llTWFuYWdlcjo6bm90aWZ5Q29va2llc0RpZENoYW5nZShTZXNzaW9uSUQgc2Vzc2lvbklEKQpA
QCAtMTExLDkgKzE1MywxMiBAQCB2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OnN0b3BPYnNlcnZpbmdD
b29raWVDaGFuZ2VzKFNlc3Npb25JRCBzZXNzaW9uSUQpCiAgICAgICAgIFdlYkNvcmU6OnN0b3BP
YnNlcnZpbmdDb29raWVDaGFuZ2VzKCpzdG9yYWdlU2Vzc2lvbik7CiB9CiAKLXZvaWQgV2ViQ29v
a2llTWFuYWdlcjo6c2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShIVFRQQ29va2llQWNjZXB0UG9s
aWN5IHBvbGljeSkKK3ZvaWQgV2ViQ29va2llTWFuYWdlcjo6c2V0SFRUUENvb2tpZUFjY2VwdFBv
bGljeShIVFRQQ29va2llQWNjZXB0UG9saWN5IHBvbGljeSwgdWludDY0X3QgY2FsbGJhY2tJRCkK
IHsKICAgICBwbGF0Zm9ybVNldEhUVFBDb29raWVBY2NlcHRQb2xpY3kocG9saWN5KTsKKworICAg
IGlmIChjYWxsYmFja0lEKQorICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYkNv
b2tpZU1hbmFnZXJQcm94eTo6RGlkU2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShjYWxsYmFja0lE
KSwgMCk7CiB9CiAKIHZvaWQgV2ViQ29va2llTWFuYWdlcjo6Z2V0SFRUUENvb2tpZUFjY2VwdFBv
bGljeSh1aW50NjRfdCBjYWxsYmFja0lEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmgKaW5kZXggZGIyN2QyMGFhZGQ4N2Q4ODUz
NmRhNTA3MWU1OWYzMjg5MTE1MTgwMi4uODE4NzVkYWZiNzU4ZmNkNjM5OTA4NTFkYmNkMzUyZWU2
NDA1NTYxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Db29raWVzL1dl
YkNvb2tpZU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Nvb2tpZXMv
V2ViQ29va2llTWFuYWdlci5oCkBAIC01Niw3ICs1Niw4IEBAIHB1YmxpYzoKIAogICAgIHN0YXRp
YyBjb25zdCBjaGFyKiBzdXBwbGVtZW50TmFtZSgpOwogCi0gICAgdm9pZCBzZXRIVFRQQ29va2ll
QWNjZXB0UG9saWN5KEhUVFBDb29raWVBY2NlcHRQb2xpY3kpOworICAgIHZvaWQgc2V0SFRUUENv
b2tpZUFjY2VwdFBvbGljeShIVFRQQ29va2llQWNjZXB0UG9saWN5LCB1aW50NjRfdCBjYWxsYmFj
a0lEKTsKKwogI2lmIFVTRShTT1VQKQogICAgIHZvaWQgc2V0Q29va2llUGVyc2lzdGVudFN0b3Jh
Z2UoY29uc3QgU3RyaW5nJiBzdG9yYWdlUGF0aCwgdWludDMyX3Qgc3RvcmFnZVR5cGUpOwogI2Vu
ZGlmCkBAIC02OCwxMSArNjksMTYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNz
YWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwogCiAgICAgdm9p
ZCBnZXRIb3N0bmFtZXNXaXRoQ29va2llcyhXZWJDb3JlOjpTZXNzaW9uSUQsIHVpbnQ2NF90IGNh
bGxiYWNrSUQpOworCisgICAgdm9pZCBkZWxldGVDb29raWUoV2ViQ29yZTo6U2Vzc2lvbklELCBj
b25zdCBXZWJDb3JlOjpDb29raWUmLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKICAgICB2b2lkIGRl
bGV0ZUNvb2tpZXNGb3JIb3N0bmFtZShXZWJDb3JlOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYp
OwogICAgIHZvaWQgZGVsZXRlQWxsQ29va2llcyhXZWJDb3JlOjpTZXNzaW9uSUQpOwotICAgIHZv
aWQgZGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2UoV2ViQ29yZTo6U2Vzc2lvbklELCBzdGQ6
OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50KTsKKyAgICB2b2lkIGRlbGV0ZUFsbENv
b2tpZXNNb2RpZmllZFNpbmNlKFdlYkNvcmU6OlNlc3Npb25JRCwgc3RkOjpjaHJvbm86OnN5c3Rl
bV9jbG9jazo6dGltZV9wb2ludCwgdWludDY0X3QgY2FsbGJhY2tJRCk7CiAKLSAgICB2b2lkIHNl
dENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklELCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2ll
PiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgbWFpbkRvY3VtZW50
VVJMKTsKKyAgICB2b2lkIHNldENvb2tpZShXZWJDb3JlOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNv
cmU6OkNvb2tpZSYsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAgIHZvaWQgc2V0Q29va2llcyhX
ZWJDb3JlOjpTZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiwgY29uc3Qg
V2ViQ29yZTo6VVJMJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBtYWluRG9jdW1lbnRVUkwsIHVpbnQ2
NF90IGNhbGxiYWNrSUQpOworICAgIHZvaWQgZ2V0QWxsQ29va2llcyhXZWJDb3JlOjpTZXNzaW9u
SUQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAgIHZvaWQgZ2V0Q29va2llcyhXZWJDb3JlOjpT
ZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwogCiAg
ICAgdm9pZCBwbGF0Zm9ybVNldEhUVFBDb29raWVBY2NlcHRQb2xpY3koSFRUUENvb2tpZUFjY2Vw
dFBvbGljeSk7CiAgICAgdm9pZCBnZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHVpbnQ2NF90IGNh
bGxiYWNrSUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Db29raWVz
L1dlYkNvb2tpZU1hbmFnZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5tZXNzYWdlcy5pbgppbmRleCAwMGU3YjY1Yjc0OTA4
MjZjNWJiMzliZDcyNmU5YzJkM2JhNTNmMDU2Li4wYTU4NTU1ZWM2YTljYzQ4ZjlkOGE5NDc1Y2E2
MjQ4YzNlZDViMzQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Nvb2tp
ZXMvV2ViQ29va2llTWFuYWdlci5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5tZXNzYWdlcy5pbgpAQCAtMjcsMTEgKzI3
LDE1IEBACiAgICAgdm9pZCBHZXRIb3N0bmFtZXNXaXRoQ29va2llcyhXZWJDb3JlOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCB1aW50NjRfdCBjYWxsYmFja0lEKQogICAgIHZvaWQgRGVsZXRlQ29va2ll
c0Zvckhvc3RuYW1lKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFN0cmluZyBob3N0bmFt
ZSkKICAgICB2b2lkIERlbGV0ZUFsbENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25J
RCkKLSAgICB2b2lkIERlbGV0ZUFsbENvb2tpZXNNb2RpZmllZFNpbmNlKFdlYkNvcmU6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgdGlt
ZSkKIAotICAgIHZvaWQgU2V0Q29va2llcyhXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBW
ZWN0b3I8V2ViQ29yZTo6Q29va2llPiBjb29raWVzLCBXZWJDb3JlOjpVUkwgdXJsLCBXZWJDb3Jl
OjpVUkwgbWFpbkRvY3VtZW50VVJMKTsKKyAgICB2b2lkIFNldENvb2tpZShXZWJDb3JlOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBzdHJ1Y3QgV2ViQ29yZTo6Q29va2llIGNvb2tpZSwgdWludDY0X3Qg
Y2FsbGJhY2tJRCkKKyAgICB2b2lkIFNldENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4gY29va2llcywgV2ViQ29yZTo6VVJMIHVybCwg
V2ViQ29yZTo6VVJMIG1haW5Eb2N1bWVudFVSTCwgdWludDY0X3QgY2FsbGJhY2tJRCkKKyAgICB2
b2lkIEdldEFsbENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3Qg
Y2FsbGJhY2tJRCkKKyAgICB2b2lkIEdldENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgV2ViQ29yZTo6VVJMIHVybCwgdWludDY0X3QgY2FsbGJhY2tJRCkKKyAgICB2b2lkIERl
bGV0ZUNvb2tpZShXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBzdHJ1Y3QgV2ViQ29yZTo6
Q29va2llIGNvb2tpZSwgdWludDY0X3QgY2FsbGJhY2tJRCkKKyAgICB2b2lkIERlbGV0ZUFsbENv
b2tpZXNNb2RpZmllZFNpbmNlKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHN0ZDo6Y2hy
b25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgdGltZSwgdWludDY0X3QgY2FsbGJhY2tJRCkK
IAotICAgIHZvaWQgU2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSh1aW50MzJfdCBwb2xpY3kpCisg
ICAgdm9pZCBTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHVpbnQzMl90IHBvbGljeSwgdWludDY0
X3QgY2FsbGJhY2tJRCkKICAgICB2b2lkIEdldEhUVFBDb29raWVBY2NlcHRQb2xpY3kodWludDY0
X3QgY2FsbGJhY2tJRCkKICAgICAKICAgICB2b2lkIFN0YXJ0T2JzZXJ2aW5nQ29va2llQ2hhbmdl
cyhXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdl
TG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDgwZGE4MjI4ZGNhNzdlOWI5Mzg2ZDM5ZWJlNWM4
ZjU0MmNmM2NiOWQuLjRjYWRlNmIzMDA4OTE4NmFiMWUzOTg1MzIxMDE1MmJhMmE1YmExNTIgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxMiBAQAorMjAxNy0wMy0xMyAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgV0tXZWJWaWV3IHByb3ZpZGVzIG5vIGFjY2VzcyB0byBjb29raWVzLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQwMTkxCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAxNy0wMy0xMSAg
U2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgogCiAgICAgICAgIEVu
YWJsZSBhc3luYyBpbWFnZSBkZWNvZGluZyBmb3IgbGFyZ2UgaW1hZ2VzCmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IDc2MDFkYmUwNjkyYzAwMDhlNmI3ZGJhYTNmYTAwMTYzNDVkMjEyZjcuLjJk
ZjM0NTYyYjQ5YmE3MmQzODAxYmUxYzYwN2QwNGFjODM2YTUwYTIgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC0xNTIsNiArMTUyLDcgQEAKIAkJNTFCQ0VFNEYxQzg0RjUzQjAwNDJDODJFIC8q
IEluZGV4ZWREQk11bHRpUHJvY2Vzcy0yLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFCQ0VFNEQxQzg0RjUyQzAwNDJDODJFIC8qIElu
ZGV4ZWREQk11bHRpUHJvY2Vzcy0yLmh0bWwgKi87IH07CiAJCTUxQ0QxQzZDMUIzOENFNDMwMDE0
MkNBNSAvKiBNb2RhbEFsZXJ0cy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUxQ0QxQzZBMUIzOENFMzYwMDE0MkNBNSAvKiBNb2RhbEFsZXJ0cy5tbSAq
LzsgfTsKIAkJNTFDRDFDNzIxQjM4RDQ4NDAwMTQyQ0E1IC8qIG1vZGFsLWFsZXJ0cy1pbi1uZXct
YWJvdXQtYmxhbmstd2luZG93Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTFDRDFDNzExQjM4RDQ4NDAwMTQyQ0E1IC8qIG1vZGFsLWFs
ZXJ0cy1pbi1uZXctYWJvdXQtYmxhbmstd2luZG93Lmh0bWwgKi87IH07CisJCTUxRDEyNDk4MUU3
NjNCMDIwMDJCMjgyMCAvKiBXS0hUVFBDb29raWVTdG9yYWdlLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFEMTI0OTcxRTc2M0FGODAwMkIyODIwIC8q
IFdLSFRUUENvb2tpZVN0b3JhZ2UubW0gKi87IH07CiAJCTUxRTVDNzAyMTkxOUMzQjIwMEQ4QjNF
MSAvKiBzaW1wbGUyLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTFFNzgwMzYxOTE5QUZGODAwMTgyOUEyIC8qIHNpbXBsZTIuaHRtbCAq
LzsgfTsKIAkJNTFFNUM3MDMxOTE5QzNCMjAwRDhCM0UxIC8qIHNpbXBsZTMuaHRtbCBpbiBDb3B5
IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUU3ODAzNzE5
MTlBRkY4MDAxODI5QTIgLyogc2ltcGxlMy5odG1sICovOyB9OwogCQk1MUU2QTg5NDFEMkYxQzBB
MDBDMDA0QjYgLyogTG9jYWxTdG9yYWdlQ2xlYXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUU2QTg5MjFEMkYxQkVDMDBDMDA0QjYgLyogTG9jYWxT
dG9yYWdlQ2xlYXIubW0gKi87IH07CkBAIC0xMDQ4LDYgKzEwNDksNyBAQAogCQk1MUNCNEFENzFC
M0EwNzlDMDBDMUIxQzYgLyogTW9kYWxBbGVydHNTUEkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gTW9kYWxBbGVydHNTUEkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1MUNEMUM2QTFCMzhDRTM2MDAxNDJDQTUgLyogTW9kYWxBbGVydHMubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBNb2RhbEFsZXJ0cy5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFDRDFDNzExQjM4RDQ4NDAwMTQyQ0E1IC8qIG1v
ZGFsLWFsZXJ0cy1pbi1uZXctYWJvdXQtYmxhbmstd2luZG93Lmh0bWwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAibW9k
YWwtYWxlcnRzLWluLW5ldy1hYm91dC1ibGFuay13aW5kb3cuaHRtbCI7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTUxRDEyNDk3MUU3NjNBRjgwMDJCMjgyMCAvKiBXS0hUVFBDb29raWVT
dG9yYWdlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tIVFRQ
Q29va2llU3RvcmFnZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFFNUM3MDQx
OTE5RUE1RjAwRDhCM0UxIC8qIFNob3VsZEtlZXBDdXJyZW50QmFja0ZvcndhcmRMaXN0SXRlbUlu
TGlzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaG91bGRLZWVw
Q3VycmVudEJhY2tGb3J3YXJkTGlzdEl0ZW1Jbkxpc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1MUU2QTg5MjFEMkYxQkVDMDBDMDA0QjYgLyogTG9jYWxTdG9yYWdlQ2xlYXIu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBMb2NhbFN0b3JhZ2VD
bGVhci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFFNkE4OTUxRDJGMUM3NzAw
QzAwNEI2IC8qIExvY2FsU3RvcmFnZUNsZWFyLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBh
dGggPSBMb2NhbFN0b3JhZ2VDbGVhci5odG1sOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMTY0OSw2ICsxNjUxLDcgQEAKIAkJCQk1MTIwQzgzQzFFNjc1MDc5MDAyNUIyNTAgLyogV2Vi
c2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhzLm1tICovLAogCQkJCTVDOUU1Njg0MURGOTE0M0QwMEM5
RUUzMyAvKiBXZWJzaXRlUG9saWNpZXMubW0gKi8sCiAJCQkJMUY4MzU3MUExRDNGRkIwRTAwRTM5
NjdCIC8qIFdLQmFja0ZvcndhcmRMaXN0Lm1tICovLAorCQkJCTUxRDEyNDk3MUU3NjNBRjgwMDJC
MjgyMCAvKiBXS0hUVFBDb29raWVTdG9yYWdlLm1tICovLAogCQkJCTM3NUUwRTE1MUQ2NjY3NDQw
MEVGRUMyQyAvKiBXS05TTnVtYmVyLm1tICovLAogCQkJCTM3QjQ3RTJFMUQ2NEU3Q0EwMDVGNEVG
RiAvKiBXS09iamVjdC5tbSAqLywKIAkJCQkyRDAwMDY1RDFDMUY1ODk0MDA4OEU2QTcgLyogV0tQ
REZWaWV3UmVzaXplQ3Jhc2gubW0gKi8sCkBAIC0yNzI5LDYgKzI3MzIsNyBAQAogCQkJCTdDQ0U3
RUY0MUE0MTFBRTYwMDQ0N0M0QyAvKiBGaW5kTWF0Y2hlcy5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTdDODNFMDQwMUQwQTYzRTMwMEZFQkNGMyAvKiBGaXJzdFJlc3BvbmRlclNjcm9sbGluZ1Bvc2l0
aW9uLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0UwQkMxRDBBNjUwNzAwRkVCQ0YzIC8qIEZp
eGVkTGF5b3V0U2l6ZS5tbSBpbiBTb3VyY2VzICovLAorCQkJCTUxRDEyNDk4MUU3NjNCMDIwMDJC
MjgyMCAvKiBXS0hUVFBDb29raWVTdG9yYWdlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdF
RjUxQTQxMUFFNjAwNDQ3QzRDIC8qIEZvcmNlUmVwYWludC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkzN0I0N0UzMDFENjRFN0NBMDA1RjRFRkYgLyogV0tPYmplY3QubW0gaW4gU291cmNlcyAqLywK
IAkJCQk3Q0NFN0VDMDFBNDExQTdFMDA0NDdDNEMgLyogRnJhZ21lbnROYXZpZ2F0aW9uLm1tIGlu
IFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dDJDb2NvYS9XS0hUVFBDb29raWVTdG9yYWdlLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXQyQ29jb2EvV0tIVFRQQ29va2llU3RvcmFnZS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iY2UyODkw
NzM2NzRlYTBmMmUwZDY5NjM5MzU2NjViOTljYTZiZGZlCi0tLSAvZGV2L251bGwKKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvV0tIVFRQQ29va2llU3RvcmFnZS5t
bQpAQCAtMCwwICsxLDEwOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKwor
I2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKKyNpbXBvcnQgPFdlYktpdC9XS0ZvdW5kYXRp
b24uaD4KKyNpbXBvcnQgPFdlYktpdC9XS0hUVFBDb29raWVTdG9yYWdlLmg+CisjaW1wb3J0IDxX
ZWJLaXQvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oPgorI2ltcG9ydCA8d3RmL1JldGFpblB0
ci5oPgorCisjaWYgV0tfQVBJX0VOQUJMRUQKKworc3RhdGljIGJvb2wgZ290RmxhZzsKKworVEVT
VChXZWJLaXQyLCBXS0hUVFBDb29raWVTdG9yYWdlKQoreworICAgIGF1dG8gd2ViVmlldyA9IGFk
b3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4
MDAsIDYwMCldKTsKKyAgICBbd2ViVmlldyBsb2FkSFRNTFN0cmluZzpAIk9oIGhlbGxvIiBiYXNl
VVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDovL3dlYmtpdC5vcmciXV07CisKKyAgICBS
ZXRhaW5QdHI8V0tIVFRQQ29va2llU3RvcmFnZT4gY29va2llU3RvcmFnZSA9IFtXS1dlYnNpdGVE
YXRhU3RvcmUgZGVmYXVsdERhdGFTdG9yZV0uX2h0dHBDb29raWVTdG9yYWdlOworCisgICAgTlNB
cnJheTxOU0hUVFBDb29raWUgKj4gKmNvb2tpZXMgPSBuaWw7CisgICAgW2Nvb2tpZVN0b3JhZ2Ug
ZmV0Y2hDb29raWVzOltjb29raWVzUHRyID0gJmNvb2tpZXNdKE5TQXJyYXk8TlNIVFRQQ29va2ll
ICo+ICpuc0Nvb2tpZXMpIHsKKyAgICAgICAgKmNvb2tpZXNQdHIgPSBbbnNDb29raWVzIHJldGFp
bl07CisgICAgICAgIGdvdEZsYWcgPSB0cnVlOworICAgIH1dOworCisgICAgVGVzdFdlYktpdEFQ
STo6VXRpbDo6cnVuKCZnb3RGbGFnKTsKKworICAgIEFTU0VSVF9FUShjb29raWVzLmNvdW50LCAw
dSk7CisgICAgW2Nvb2tpZXMgcmVsZWFzZV07CisKKyAgICBnb3RGbGFnID0gZmFsc2U7CisKKyAg
ICBSZXRhaW5QdHI8TlNIVFRQQ29va2llPiBjb29raWUxID0gW05TSFRUUENvb2tpZSBjb29raWVX
aXRoUHJvcGVydGllczpAeworICAgICAgICBOU0hUVFBDb29raWVQYXRoOiBAIi8iLAorICAgICAg
ICBOU0hUVFBDb29raWVOYW1lOiBAIkNvb2tpZU5hbWUiLAorICAgICAgICBOU0hUVFBDb29raWVW
YWx1ZTogQCJDb29raWVWYWx1ZSIsCisgICAgICAgIE5TSFRUUENvb2tpZURvbWFpbjogQCIud3d3
LndlYmtpdC5vcmciLAorICAgICAgICBOU0hUVFBDb29raWVTZWN1cmU6IEAiVFJVRSIsCisgICAg
ICAgIE5TSFRUUENvb2tpZURpc2NhcmQ6IEAiVFJVRSIsCisgICAgICAgIE5TSFRUUENvb2tpZU1h
eGltdW1BZ2U6IEAiMTAwMDAiLAorICAgIH1dOworCisgICAgUmV0YWluUHRyPE5TSFRUUENvb2tp
ZT4gY29va2llMiA9IFtOU0hUVFBDb29raWUgY29va2llV2l0aFByb3BlcnRpZXM6QHsKKyAgICAg
ICAgTlNIVFRQQ29va2llUGF0aDogQCIvcGF0aCIsCisgICAgICAgIE5TSFRUUENvb2tpZU5hbWU6
IEAiT3RoZXJDb29raWVOYW1lIiwKKyAgICAgICAgTlNIVFRQQ29va2llVmFsdWU6IEAiT3RoZXJD
b29raWVWYWx1ZSIsCisgICAgICAgIE5TSFRUUENvb2tpZURvbWFpbjogQCIud3d3LnczYy5vcmci
LAorICAgICAgICBOU0hUVFBDb29raWVNYXhpbXVtQWdlOiBAIjEwMDAwIiwKKyAgICB9XTsKKwor
ICAgIFtjb29raWVTdG9yYWdlIHNldENvb2tpZTpjb29raWUxLmdldCgpIGNvbXBsZXRpb25IYW5k
bGVyOm5pbF07CisgICAgW2Nvb2tpZVN0b3JhZ2Ugc2V0Q29va2llOmNvb2tpZTIuZ2V0KCkgY29t
cGxldGlvbkhhbmRsZXI6bmlsXTsKKworICAgIFtjb29raWVTdG9yYWdlIGZldGNoQ29va2llczpb
Y29va2llc1B0ciA9ICZjb29raWVzXShOU0FycmF5PE5TSFRUUENvb2tpZSAqPiAqbnNDb29raWVz
KSB7CisgICAgICAgICpjb29raWVzUHRyID0gW25zQ29va2llcyByZXRhaW5dOworICAgICAgICBn
b3RGbGFnID0gdHJ1ZTsKKyAgICB9XTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigm
Z290RmxhZyk7CisKKyAgICBBU1NFUlRfRVEoY29va2llcy5jb3VudCwgMnUpOworCisgICAgZm9y
IChOU0hUVFBDb29raWUgKmNvb2tpZSA6IGNvb2tpZXMpIHsKKyAgICAgICAgaWYgKFtjb29raWUu
bmFtZSBpc0VxdWFsOkAiQ29va2llTmFtZSJdKSB7CisgICAgICAgICAgICBBU1NFUlRfVFJVRShb
Y29va2llMS5nZXQoKS5wYXRoIGlzRXF1YWxUb1N0cmluZzpjb29raWUucGF0aF0pOworICAgICAg
ICAgICAgQVNTRVJUX1RSVUUoW2Nvb2tpZTEuZ2V0KCkudmFsdWUgaXNFcXVhbFRvU3RyaW5nOmNv
b2tpZS52YWx1ZV0pOworICAgICAgICAgICAgQVNTRVJUX1RSVUUoW2Nvb2tpZTEuZ2V0KCkuZG9t
YWluIGlzRXF1YWxUb1N0cmluZzpjb29raWUuZG9tYWluXSk7CisgICAgICAgICAgICBBU1NFUlRf
VFJVRShjb29raWUxLmdldCgpLnNlY3VyZSk7CisgICAgICAgICAgICBBU1NFUlRfVFJVRShjb29r
aWUxLmdldCgpLnNlc3Npb25Pbmx5KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIEFT
U0VSVF9UUlVFKFtjb29raWUyLmdldCgpLnBhdGggaXNFcXVhbFRvU3RyaW5nOmNvb2tpZS5wYXRo
XSk7CisgICAgICAgICAgICBBU1NFUlRfVFJVRShbY29va2llMi5nZXQoKS52YWx1ZSBpc0VxdWFs
VG9TdHJpbmc6Y29va2llLnZhbHVlXSk7CisgICAgICAgICAgICBBU1NFUlRfVFJVRShbY29va2ll
Mi5nZXQoKS5uYW1lIGlzRXF1YWxUb1N0cmluZzpjb29raWUubmFtZV0pOworICAgICAgICAgICAg
QVNTRVJUX1RSVUUoW2Nvb2tpZTIuZ2V0KCkuZG9tYWluIGlzRXF1YWxUb1N0cmluZzpjb29raWUu
ZG9tYWluXSk7CisgICAgICAgICAgICBBU1NFUlRfRkFMU0UoY29va2llMi5nZXQoKS5zZWN1cmUp
OworICAgICAgICAgICAgQVNTRVJUX0ZBTFNFKGNvb2tpZTIuZ2V0KCkuc2Vzc2lvbk9ubHkpOwor
ICAgICAgICB9CisgICAgfQorCisgICAgW2Nvb2tpZXMgcmVsZWFzZV07Cit9CisKKyNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>304290</attachid>
            <date>2017-03-13 13:20:50 -0700</date>
            <delta_ts>2017-03-13 14:15:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-140191-20170313132056.patch</filename>
            <type>text/plain</type>
            <size>92160</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEzNzc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmU3MGVhY2ZjNWQwZmY4
NzI0MGFjN2QwMzg5MmQ1MTJkZjA5YzIyOC4uZTFmMmE3Yzc2OWE0YmNmNjA5NTljZDczNGZmZjg4
ZDRmMDRkYjZmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDE3LTAzLTEzICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBXS1dlYlZpZXcgcHJvdmlk
ZXMgbm8gYWNjZXNzIHRvIGNvb2tpZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNDAxOTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBDb3ZlcmVkIGJ5IEFQSSB0ZXN0cy4KKworICAgICAgICAqIHBsYXRm
b3JtL0Nvb2tpZS5oOgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFn
ZVNlc3Npb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtTdG9y
YWdlU2Vzc2lvbkNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpzZXRDb29raWUpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9u
OjpkZWxldGVDb29raWUpOgorICAgICAgICAoV2ViQ29yZTo6bnNDb29raWVzVG9Db29raWVWZWN0
b3IpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpnZXRBbGxDb29r
aWVzKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0Q29va2ll
cyk6CisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvTmV0d29ya1N0b3JhZ2VTZXNz
aW9uU291cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRl
bGV0ZUNvb2tpZSk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246Omdl
dEFsbENvb2tpZXMpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpn
ZXRDb29raWVzKToKKwogMjAxNy0wMy0xMiAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5j
b20+CiAKICAgICAgICAgQWRkIGZ1bGwgTlNIVFRQQ29va2llIGZpZGVsaXR5IHRvIFdlYkNvcmU6
OkNvb2tpZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZwppbmRleCAxMTA3YzgzYjQ0OTE3OTdjOWJkZTA3OTQyZjg2MzM0MzU2
ODAyOTliLi40NTJhOWZjZjhlYzgzOTkwNzM0MjlhMTk4YTA1MWQ0YjhmOGE4ZGMyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTE5IEBACisyMDE3LTAzLTEzICBCcmFkeSBFaWRzb24gIDxiZWlkc29u
QGFwcGxlLmNvbT4KKworICAgICAgICBXS1dlYlZpZXcgcHJvdmlkZXMgbm8gYWNjZXNzIHRvIGNv
b2tpZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NDAxOTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
aGlzIGFkZHMgYSBuZXcgX1dLSFRUUENvb2tpZU1hbmFnZXIgU1BJLgorICAgICAgICBJdCBmb2xs
b3dzIHRoZSBOU0hUVFBDb29raWVTdG9yYWdlIEFQSSBidXQgYXN5bmNocm9ub3VzICh3aXRoIGNv
bXBsZXRpb24gaGFuZGxlcnMpLgorICAgICAgICBBZnRlciB0aGUgaW1wbGVtZW50YXRpb24gaXMg
bGFuZGVkIGFuZCB3ZSByZXZpZXcgaW50ZXJuYWxseSB3ZSdsbCBjb25zaWRlciBwcm9tb3Rpbmcg
dG8gQVBJLgorICAgICAgICAKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBX
ZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKKyAgICAgICAgKiBTaGFyZWQvQVBJ
L0FQSU9iamVjdC5oOgorICAgICAgICAqIFNoYXJlZC9Db2NvYS9BUElPYmplY3QubW06CisgICAg
ICAgIChBUEk6Ok9iamVjdDo6bmV3T2JqZWN0KToKKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
QVBJSFRUUENvb2tpZVN0b3JhZ2UuY3BwOiBBZGRlZC4KKyAgICAgICAgKEFQSTo6SFRUUENvb2tp
ZVN0b3JhZ2U6OkhUVFBDb29raWVTdG9yYWdlKToKKyAgICAgICAgKEFQSTo6SFRUUENvb2tpZVN0
b3JhZ2U6On5IVFRQQ29va2llU3RvcmFnZSk6CisgICAgICAgIChBUEk6OkhUVFBDb29raWVTdG9y
YWdlOjpjb29raWVzKToKKyAgICAgICAgKEFQSTo6SFRUUENvb2tpZVN0b3JhZ2U6OnNldENvb2tp
ZSk6CisgICAgICAgIChBUEk6OkhUVFBDb29raWVTdG9yYWdlOjpzZXRDb29raWVzKToKKyAgICAg
ICAgKEFQSTo6SFRUUENvb2tpZVN0b3JhZ2U6OmRlbGV0ZUNvb2tpZSk6CisgICAgICAgIChBUEk6
OkhUVFBDb29raWVTdG9yYWdlOjpyZW1vdmVDb29raWVzU2luY2VEYXRlKToKKyAgICAgICAgKEFQ
STo6SFRUUENvb2tpZVN0b3JhZ2U6OnNldEhUVFBDb29raWVBY2NlcHRQb2xpY3kpOgorICAgICAg
ICAoQVBJOjpIVFRQQ29va2llU3RvcmFnZTo6Z2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElIVFRQQ29va2llU3RvcmFnZS5oOiBBZGRlZC4KKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5jcHA6CisgICAgICAg
IChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmUpOgorICAgICAgICAoQVBJ
OjpXZWJzaXRlRGF0YVN0b3JlOjpodHRwQ29va2llU3RvcmFnZSk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmg6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0MvV0tDb29raWVNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdLQ29va2llTWFuYWdlckRlbGV0ZUFs
bENvb2tpZXNNb2RpZmllZEFmdGVyRGF0ZSk6CisgICAgICAgIChXS0Nvb2tpZU1hbmFnZXJTZXRI
VFRQQ29va2llQWNjZXB0UG9saWN5KToKKyAgICAgICAgKFdLQ29va2llTWFuYWdlckdldEhUVFBD
b29raWVBY2NlcHRQb2xpY3kpOgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0
ZURhdGFTdG9yZVJlZi5jcHA6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVHZXREZWZhdWx0
RGF0YVN0b3JlKToKKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9v
bC5tbToKKyAgICAgICAgKC1bV0tQcm9jZXNzUG9vbCBfc2V0Q29va2llQWNjZXB0UG9saWN5Ol0p
OgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW06
CisgICAgICAgICgrW1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0RGF0YVN0b3JlXSk6CisgICAg
ICAgICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBfaHR0cENvb2tpZVN0b3JhZ2VdKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaDoKKyAgICAg
ICAgCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0hUVFBDb29raWVTdG9yYWdlLmg6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0hUVFBDb29raWVTdG9yYWdlLm1tOiBB
ZGRlZC4KKyAgICAgICAgKGNvcmVDb29raWVzVG9OU0Nvb2tpZXMpOgorICAgICAgICAoLVtXS0hU
VFBDb29raWVTdG9yYWdlIGRlYWxsb2NdKToKKyAgICAgICAgKC1bV0tIVFRQQ29va2llU3RvcmFn
ZSBmZXRjaENvb2tpZXM6XSk6CisgICAgICAgICgtW1dLSFRUUENvb2tpZVN0b3JhZ2UgZmV0Y2hD
b29raWVzRm9yVVJMOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS0hUVFBDb29r
aWVTdG9yYWdlIHNldENvb2tpZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tI
VFRQQ29va2llU3RvcmFnZSBkZWxldGVDb29raWU6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAg
ICAgICgtW1dLSFRUUENvb2tpZVN0b3JhZ2Ugc2V0Q29va2llczpmb3JVUkw6bWFpbkRvY3VtZW50
VVJMOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS0hUVFBDb29raWVTdG9yYWdl
IHJlbW92ZUNvb2tpZXNTaW5jZURhdGU6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgt
W1dLSFRUUENvb2tpZVN0b3JhZ2Ugc2V0Q29va2llQWNjZXB0UG9saWN5OmNvbXBsZXRpb25IYW5k
bGVyOl0pOgorICAgICAgICAoa2l0Q29va2llUG9saWN5VG9OU0Nvb2tpZVBvbGljeSk6CisgICAg
ICAgICgtW1dLSFRUUENvb2tpZVN0b3JhZ2UgZmV0Y2hDb29raWVBY2NlcHRQb2xpY3k6XSk6Cisg
ICAgICAgICgtW1dLSFRUUENvb2tpZVN0b3JhZ2UgX2FwaU9iamVjdF0pOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tIVFRQQ29va2llU3RvcmFnZUludGVybmFsLmg6IENvcGllZCBm
cm9tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3Jl
UHJpdmF0ZS5oLgorICAgICAgICAoV2ViS2l0Ojp3cmFwcGVyKToKKworICAgICAgICAqIFVJUHJv
Y2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViQXV0b21hdGlvblNlc3Npb246OmFkZFNpbmdsZUNvb2tpZSk6CisKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
Q29va2llTWFuYWdlclByb3h5OjpnZXRIb3N0bmFtZXNXaXRoQ29va2llcyk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKToK
KyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlclByb3h5OjpkZWxldGVBbGxDb29raWVz
KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlclByb3h5OjpkZWxldGVDb29raWUp
OgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRlbGV0ZUFsbENvb2tp
ZXNNb2RpZmllZFNpbmNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlclByb3h5
OjpzZXRDb29raWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OnNl
dENvb2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OmdldEFs
bENvb2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OmdldENv
b2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRpZFNldENv
b2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRpZEdldENv
b2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRpZERlbGV0
ZUNvb2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OnN0YXJ0
T2JzZXJ2aW5nQ29va2llQ2hhbmdlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFn
ZXJQcm94eTo6c3RvcE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJDb29raWVNYW5hZ2VyUHJveHk6OnNldENvb2tpZU9ic2VydmVyQ2FsbGJhY2spOgorICAgICAg
ICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OmNvb2tpZXNEaWRDaGFuZ2UpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OnNldEhUVFBDb29raWVBY2NlcHRQ
b2xpY3kpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OmdldEhUVFBD
b29raWVBY2NlcHRQb2xpY3kpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJv
eHk6OmRpZEdldEhUVFBDb29raWVBY2NlcHRQb2xpY3kpOgorICAgICAgICAoV2ViS2l0OjpXZWJD
b29raWVNYW5hZ2VyUHJveHk6OmRpZFNldEhUVFBDb29raWVBY2NlcHRQb2xpY3kpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViQ29va2llTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluOgorCisgICAgICAgICogVUlQcm9j
ZXNzL1dlYkZyYW1lUHJveHkuaDoKKyAgICAgICAgCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKyAg
ICAgICAgCisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpwcm9jZXNzUG9vbEZvckNv
b2tpZVN0b3JhZ2VPcGVyYXRpb25zKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9y
ZTo6cHJvY2Vzc1Bvb2xzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0
ZURhdGFTdG9yZS5oOgorICAgICAgICAKKyAgICAgICAgKiBXZWJQcm9jZXNzL0Nvb2tpZXMvV2Vi
Q29va2llTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXI6OmRl
bGV0ZUNvb2tpZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXI6OmRlbGV0ZUFs
bENvb2tpZXNNb2RpZmllZFNpbmNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdl
cjo6Z2V0QWxsQ29va2llcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXI6Omdl
dENvb2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyOjpzZXRDb29raWUp
OgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyOjpzZXRDb29raWVzKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlcjo6c2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5tZXNzYWdlcy5pbjoKKwog
MjAxNy0wMy0xMiAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAg
VHJhbnNpdGlvbiBHZW5lcmljQ2FsbGJhY2sgZnJvbSBzdGQ6OmZ1bmN0aW9uIHRvIFdURjo6RnVu
Y3Rpb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db29raWUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nvb2tpZS5oCmluZGV4IGU0N2U3YmJmZjViYjNhYmM2M2Fi
M2Y5MjhmYzI3NDE1NWUxMDRmYTcuLjVkZGI5MzU0Y2U4ZDE5ZTdhNzU0Yjk3Y2UzYTAzODE1M2Yz
NjQ2OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nvb2tpZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nvb2tpZS5oCkBAIC01OCw3ICs1OCw3IEBAIHN0cnVj
dCBDb29raWUgewogCiAjaWZkZWYgX19PQkpDX18KICAgICBXRUJDT1JFX0VYUE9SVCBDb29raWUo
TlNIVFRQQ29va2llICopOwotICAgIG9wZXJhdG9yIE5TSFRUUENvb2tpZSAqKCkgY29uc3Q7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgb3BlcmF0b3IgTlNIVFRQQ29va2llICooKSBjb25zdDsKICNlbmRp
ZgogCiAgICAgU3RyaW5nIG5hbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaAppbmRleCBmMTQ4OWM2YjQyYTFkNDVh
ZjljYWE2MmNhMjZkMTcwNWI0NmIzNzQ4Li4yMTJiZTI2NGVhNWNjNzY1OGE4ZGYyZWYzZTM1OTY4
MTg1MTQ5ZWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05l
dHdvcmtTdG9yYWdlU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgKQEAgLTEwMCw3ICsxMDAsMTEgQEAgcHVibGljOgog
ICAgIE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0KCkgY29uc3Q7CiAjZW5kaWYKIAorICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgc2V0Q29va2llKGNvbnN0IENvb2tpZSYpOwogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgc2V0Q29va2llcyhjb25zdCBWZWN0b3I8Q29va2llPiYsIGNvbnN0IFVSTCYs
IGNvbnN0IFVSTCYgbWFpbkRvY3VtZW50VVJMKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRl
bGV0ZUNvb2tpZShjb25zdCBDb29raWUmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8Q29v
a2llPiBnZXRBbGxDb29raWVzKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPENvb2tpZT4g
Z2V0Q29va2llcyhjb25zdCBVUkwmKTsKIAogcHJpdmF0ZToKICAgICBzdGF0aWMgSGFzaE1hcDxT
ZXNzaW9uSUQsIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrU3RvcmFnZVNlc3Npb24+PiYgZ2xvYmFs
U2Vzc2lvbk1hcCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jb2NvYS9OZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2EubW0KaW5kZXgg
NDRhZWFiNzBlOTliNWZhMGE4NGVjZmQzNTdlMzQ1ODNkZWZjMDFlMC4uNGM5NTY3ZTljNjdhMGE0
NzY3NmE4ZmM3ZjhlZDRhZjRkZTE1NTI5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtTdG9yYWdlU2Vzc2lv
bkNvY29hLm1tCkBAIC0zMiw2ICszMiwxMyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3Zv
aWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRDb29raWUoY29uc3QgQ29va2llJiBjb29raWUp
Cit7CisgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOworICAgIFtuc0Nvb2tpZVN0b3Jh
Z2UoKSBzZXRDb29raWU6KE5TSFRUUENvb2tpZSAqKWNvb2tpZV07CisgICAgRU5EX0JMT0NLX09C
SkNfRVhDRVBUSU9OUzsKK30KKwogdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldENvb2tp
ZXMoY29uc3QgVmVjdG9yPENvb2tpZT4mIGNvb2tpZXMsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBV
UkwmIG1haW5Eb2N1bWVudFVSTCkKIHsKICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IG5z
Q29va2llcyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0
eTpjb29raWVzLnNpemUoKV0pOwpAQCAtNDMsNiArNTAsMzEgQEAgdm9pZCBOZXR3b3JrU3RvcmFn
ZVNlc3Npb246OnNldENvb2tpZXMoY29uc3QgVmVjdG9yPENvb2tpZT4mIGNvb2tpZXMsIGNvbnN0
IFVSTCYKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogfQogCit2b2lkIE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbjo6ZGVsZXRlQ29va2llKGNvbnN0IENvb2tpZSYgY29va2llKQoreworICAg
IFtuc0Nvb2tpZVN0b3JhZ2UoKSBkZWxldGVDb29raWU6KE5TSFRUUENvb2tpZSAqKWNvb2tpZV07
Cit9CisKK3N0YXRpYyBWZWN0b3I8Q29va2llPiBuc0Nvb2tpZXNUb0Nvb2tpZVZlY3RvcihOU0Fy
cmF5PE5TSFRUUENvb2tpZSAqPiAqbnNDb29raWVzKQoreworICAgIFZlY3RvcjxDb29raWU+IGNv
b2tpZXM7CisgICAgY29va2llcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG5zQ29va2llcy5jb3Vu
dCk7CisgICAgZm9yIChOU0hUVFBDb29raWUgKm5zQ29va2llIGluIG5zQ29va2llcykKKyAgICAg
ICAgY29va2llcy51bmNoZWNrZWRBcHBlbmQobnNDb29raWUpOworCisgICAgcmV0dXJuIGNvb2tp
ZXM7Cit9CisKK1ZlY3RvcjxDb29raWU+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0QWxsQ29v
a2llcygpCit7CisgICAgcmV0dXJuIG5zQ29va2llc1RvQ29va2llVmVjdG9yKG5zQ29va2llU3Rv
cmFnZSgpLmNvb2tpZXMpOworfQorCitWZWN0b3I8Q29va2llPiBOZXR3b3JrU3RvcmFnZVNlc3Np
b246OmdldENvb2tpZXMoY29uc3QgVVJMJiB1cmwpCit7CisgICAgcmV0dXJuIG5zQ29va2llc1Rv
Q29va2llVmVjdG9yKFtuc0Nvb2tpZVN0b3JhZ2UoKSBjb29raWVzRm9yVVJMOihOU1VSTCAqKXVy
bF0pOworfQorCiBOU0hUVFBDb29raWVTdG9yYWdlICpOZXR3b3JrU3RvcmFnZVNlc3Npb246Om5z
Q29va2llU3RvcmFnZSgpIGNvbnN0CiB7CiAgICAgYXV0byBjZkNvb2tpZVN0b3JhZ2UgPSBjb29r
aWVTdG9yYWdlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L3NvdXAvTmV0d29ya1N0b3JhZ2VTZXNzaW9uU291cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL3NvdXAvTmV0d29ya1N0b3JhZ2VTZXNzaW9uU291cC5jcHAKaW5kZXggMjQ5
YmQ4MmJkNzRlOGM2MmE5YzM1NzAzN2Y5ODM4NTA0ZmE1N2FjZC4uYTM3YWE3ZGQxMGVmODliYmY2
ZjAwNTYzOWNiYWFjOGM4YjhjNWIxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lvblNvdXAuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3Vw
LmNwcApAQCAtMzA0LDYgKzMwNCwyMCBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0
Q29va2llcyhjb25zdCBWZWN0b3I8Q29va2llPiYgY29va2llcywgY29uc3QgVVJMJgogICAgICAg
ICBzb3VwX2Nvb2tpZV9qYXJfYWRkX2Nvb2tpZShjb29raWVTdG9yYWdlKCksIHRvU291cENvb2tp
ZShjb29raWUpKTsKIH0KIAordm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlbGV0ZUNvb2tp
ZShjb25zdCBDb29raWUmKQoreworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgZm9yIFdLMiB0byB1
c2UuCit9CisKK1ZlY3RvcjxDb29raWU+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0QWxsQ29v
a2llcygpCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudCBmb3IgV0syIHRvIHVzZS4KK30KKwor
VmVjdG9yPENvb2tpZT4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpnZXRDb29raWVzKGNvbnN0IFVS
TCYpCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudCBmb3IgV0syIHRvIHVzZS4KK30KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxp
c3RzLnR4dCBiL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0CmluZGV4IDgxZmY4ZGE4MTEy
NDNlNTQxYTNjNjk4NGM5ZmE3OGIwOTdjOWRiZTYuLmE4ZmRjZDExYjNhNjIzNjY2MzcxN2RhMzQ5
NjFlZTE2MDQ2OGU2OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0
CisrKyBiL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0CkBAIC0zMzYsNiArMzM2LDcgQEAg
c2V0KFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9BUEkvQVBJQ29udGVudEV4dGVuc2lv
blN0b3JlLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvQVBJRXhwZXJpbWVudGFsRmVhdHVyZS5jcHAK
ICAgICBVSVByb2Nlc3MvQVBJL0FQSUZyYW1lSW5mby5jcHAKKyAgICBVSVByb2Nlc3MvQVBJL0FQ
SUhUVFBDb29raWVTdG9yYWdlLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvQVBJSGl0VGVzdFJlc3Vs
dC5jcHAKICAgICBVSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb24uY3BwCiAgICAgVUlQcm9jZXNz
L0FQSS9BUElOYXZpZ2F0aW9uRGF0YS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcAppbmRleCBkOGRjZGUz
MzA4ZDRiZjc1MzU3MmE0NzdiMTdjYTFmMDFiODJhM2MwLi4yNjA3MGYwMTE0ZTE3MjY3MjExMGRi
MDI3MWRhNDk3YTFkMmExOTM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrUHJvY2Vzc1NvdXAuY3BwCkBAIC0xMjQsNyArMTI0LDcg
QEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3Mo
Y29uc3QgTmV0d29ya1Byb2Nlc3NDcmVhdGkKICAgICAgICAgc3VwcGxlbWVudDxXZWJDb29raWVN
YW5hZ2VyPigpLT5zZXRDb29raWVQZXJzaXN0ZW50U3RvcmFnZShwYXJhbWV0ZXJzLmNvb2tpZVBl
cnNpc3RlbnRTdG9yYWdlUGF0aCwKICAgICAgICAgICAgIHBhcmFtZXRlcnMuY29va2llUGVyc2lz
dGVudFN0b3JhZ2VUeXBlKTsKICAgICB9Ci0gICAgc3VwcGxlbWVudDxXZWJDb29raWVNYW5hZ2Vy
PigpLT5zZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHBhcmFtZXRlcnMuY29va2llQWNjZXB0UG9s
aWN5KTsKKyAgICBzdXBwbGVtZW50PFdlYkNvb2tpZU1hbmFnZXI+KCktPnNldEhUVFBDb29raWVB
Y2NlcHRQb2xpY3kocGFyYW1ldGVycy5jb29raWVBY2NlcHRQb2xpY3ksIDApOwogCiAgICAgaWYg
KCFwYXJhbWV0ZXJzLmxhbmd1YWdlcy5pc0VtcHR5KCkpCiAgICAgICAgIHVzZXJQcmVmZXJyZWRM
YW5ndWFnZXNDaGFuZ2VkKHBhcmFtZXRlcnMubGFuZ3VhZ2VzKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9BUEkvQVBJT2JqZWN0LmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
QVBJL0FQSU9iamVjdC5oCmluZGV4IGFlMGZjOTk4NWJkMjc2NDc2ODI3ODlmZjRjNGY0NjZhMWVj
MzQ2MGEuLjQ2ZjI3OTFkZGZjNDUyNDJiYTM1MTRiMDVmOTYzMzE4ZTJmZTUxYjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvQVBJT2JqZWN0LmgKKysrIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL0FQSS9BUElPYmplY3QuaApAQCAtMTE2LDYgKzExNiw3IEBAIHB1YmxpYzoK
ICAgICAgICAgRnVsbFNjcmVlbk1hbmFnZXIsCiAgICAgICAgIEdlb2xvY2F0aW9uTWFuYWdlciwK
ICAgICAgICAgR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdCwKKyAgICAgICAgSFRUUENvb2tp
ZVN0b3JhZ2UsCiAgICAgICAgIEhpdFRlc3RSZXN1bHQsCiAgICAgICAgIEdlb2xvY2F0aW9uUG9z
aXRpb24sCiAgICAgICAgIEdyYW1tYXJEZXRhaWwsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQ29jb2EvQVBJT2JqZWN0Lm1tIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0NvY29h
L0FQSU9iamVjdC5tbQppbmRleCAxMTYzMjQ1NDIwY2QyNzczODA0YjIyNTM0Y2I5OWMwZmFkNDE3
MjIyLi5kYzY5YWQ3OTM5YzVmNGNkMGYwMTFlN2E2ZTdkNDdhMjc4ZDZmOTRjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29jb2EvQVBJT2JqZWN0Lm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9Db2NvYS9BUElPYmplY3QubW0KQEAgLTM2LDYgKzM2LDcgQEAKICNpbXBv
cnQgIldLQ29udGVudEV4dGVuc2lvbkludGVybmFsLmgiCiAjaW1wb3J0ICJXS0NvbnRlbnRFeHRl
bnNpb25TdG9yZUludGVybmFsLmgiCiAjaW1wb3J0ICJXS0ZyYW1lSW5mb0ludGVybmFsLmgiCisj
aW1wb3J0ICJXS0hUVFBDb29raWVTdG9yYWdlSW50ZXJuYWwuaCIKICNpbXBvcnQgIldLTlNBcnJh
eS5oIgogI2ltcG9ydCAiV0tOU0RhdGEuaCIKICNpbXBvcnQgIldLTlNEaWN0aW9uYXJ5LmgiCkBA
IC0xNzgsNiArMTc5LDEwIEBAIHZvaWQqIE9iamVjdDo6bmV3T2JqZWN0KHNpemVfdCBzaXplLCBU
eXBlIHR5cGUpCiAgICAgICAgIHdyYXBwZXIgPSBbV0tGcmFtZUluZm8gYWxsb2NdOwogICAgICAg
ICBicmVhazsKIAorICAgIGNhc2UgVHlwZTo6SFRUUENvb2tpZVN0b3JhZ2U6CisgICAgICAgIHdy
YXBwZXIgPSBbV0tIVFRQQ29va2llU3RvcmFnZSBhbGxvY107CisgICAgICAgIGJyZWFrOworCiAj
aWYgUExBVEZPUk0oTUFDKQogICAgIGNhc2UgVHlwZTo6SGl0VGVzdFJlc3VsdDoKICAgICAgICAg
d3JhcHBlciA9IFtfV0tIaXRUZXN0UmVzdWx0IGFsbG9jXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3JhZ2UuY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9BUElIVFRQQ29va2llU3RvcmFnZS5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MzM4Yjg1MjRiOWZjODlmMTRhYzg0NjIzNWMxN2NiNTExYjQ4YjhlMwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3JhZ2UuY3Bw
CkBAIC0wLDAgKzEsMTM4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIkFQSUhUVFBDb29raWVTdG9yYWdlLmgiCisKKyNpbmNsdWRlICJBUElXZWJzaXRlRGF0
YVN0b3JlLmgiCisjaW5jbHVkZSAiV2ViQ29va2llTWFuYWdlclByb3h5LmgiCisjaW5jbHVkZSAi
V2ViUHJvY2Vzc1Bvb2wuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0Nvb2tpZS5oPgorCit1c2luZyBu
YW1lc3BhY2UgV2ViS2l0OworCituYW1lc3BhY2UgQVBJIHsKKworSFRUUENvb2tpZVN0b3JhZ2U6
OkhUVFBDb29raWVTdG9yYWdlKFdlYnNpdGVEYXRhU3RvcmUmIHdlYnNpdGVEYXRhU3RvcmUpCisg
ICAgOiBtX293bmluZ0RhdGFTdG9yZSh3ZWJzaXRlRGF0YVN0b3JlKQoreworfQorCitIVFRQQ29v
a2llU3RvcmFnZTo6fkhUVFBDb29raWVTdG9yYWdlKCkKK3sKK30KKwordm9pZCBIVFRQQ29va2ll
U3RvcmFnZTo6Y29va2llcyhGdW5jdGlvbjx2b2lkIChjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29v
a2llPiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGF1dG8mIGRhdGFTdG9yZSA9IG1f
b3duaW5nRGF0YVN0b3JlLndlYnNpdGVEYXRhU3RvcmUoKTsKKyAgICBhdXRvIHBvb2wgPSBkYXRh
U3RvcmUucHJvY2Vzc1Bvb2xGb3JDb29raWVTdG9yYWdlT3BlcmF0aW9ucygpOworICAgIGF1dG8q
IGNvb2tpZU1hbmFnZXIgPSBwb29sLT5zdXBwbGVtZW50PFdlYktpdDo6V2ViQ29va2llTWFuYWdl
clByb3h5PigpOworCisgICAgY29va2llTWFuYWdlci0+Z2V0QWxsQ29va2llcyhkYXRhU3RvcmUu
c2Vzc2lvbklEKCksIFtwb29sID0gV1RGTW92ZShwb29sKSwgY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4m
IGNvb2tpZXMsIENhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKKyAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoY29va2llcyk7CisgICAgfSk7Cit9CisKK3ZvaWQgSFRUUENvb2tpZVN0b3JhZ2U6
OmNvb2tpZXMoY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwsIEZ1bmN0aW9uPHZvaWQgKGNvbnN0IFZl
Y3RvcjxXZWJDb3JlOjpDb29raWU+Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgYXV0
byYgZGF0YVN0b3JlID0gbV9vd25pbmdEYXRhU3RvcmUud2Vic2l0ZURhdGFTdG9yZSgpOworICAg
IGF1dG8gcG9vbCA9IGRhdGFTdG9yZS5wcm9jZXNzUG9vbEZvckNvb2tpZVN0b3JhZ2VPcGVyYXRp
b25zKCk7CisgICAgYXV0byogY29va2llTWFuYWdlciA9IHBvb2wtPnN1cHBsZW1lbnQ8V2ViS2l0
OjpXZWJDb29raWVNYW5hZ2VyUHJveHk+KCk7CisKKyAgICBjb29raWVNYW5hZ2VyLT5nZXRDb29r
aWVzKGRhdGFTdG9yZS5zZXNzaW9uSUQoKSwgdXJsLCBbcG9vbCA9IFdURk1vdmUocG9vbCksIGNv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKGNvbnN0IFZlY3Rv
cjxXZWJDb3JlOjpDb29raWU+JiBjb29raWVzLCBDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7
CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGNvb2tpZXMpOworICAgIH0pOworfQorCit2b2lk
IEhUVFBDb29raWVTdG9yYWdlOjpzZXRDb29raWUoY29uc3QgV2ViQ29yZTo6Q29va2llJiBjb29r
aWUsIEZ1bmN0aW9uPHZvaWQgKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgYXV0byYg
ZGF0YVN0b3JlID0gbV9vd25pbmdEYXRhU3RvcmUud2Vic2l0ZURhdGFTdG9yZSgpOworICAgIGF1
dG8gcG9vbCA9IGRhdGFTdG9yZS5wcm9jZXNzUG9vbEZvckNvb2tpZVN0b3JhZ2VPcGVyYXRpb25z
KCk7CisgICAgYXV0byogY29va2llTWFuYWdlciA9IHBvb2wtPnN1cHBsZW1lbnQ8V2ViS2l0OjpX
ZWJDb29raWVNYW5hZ2VyUHJveHk+KCk7CisKKyAgICBjb29raWVNYW5hZ2VyLT5zZXRDb29raWUo
ZGF0YVN0b3JlLnNlc3Npb25JRCgpLCBjb29raWUsIFtwb29sID0gV1RGTW92ZShwb29sKSwgY29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oQ2FsbGJhY2tCYXNl
OjpFcnJvciBlcnJvcikgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAgIH0pOwor
fQorCit2b2lkIEhUVFBDb29raWVTdG9yYWdlOjpzZXRDb29raWVzKGNvbnN0IFZlY3RvcjxXZWJD
b3JlOjpDb29raWU+JiBjb29raWVzLCBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCwgY29uc3QgV2Vi
Q29yZTo6VVJMJiBtYWluRG9jdW1lbnRVUkwsIEZ1bmN0aW9uPHZvaWQgKCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCit7CisgICAgYXV0byYgZGF0YVN0b3JlID0gbV9vd25pbmdEYXRhU3RvcmUud2Vi
c2l0ZURhdGFTdG9yZSgpOworICAgIGF1dG8gcG9vbCA9IGRhdGFTdG9yZS5wcm9jZXNzUG9vbEZv
ckNvb2tpZVN0b3JhZ2VPcGVyYXRpb25zKCk7CisgICAgYXV0byogY29va2llTWFuYWdlciA9IHBv
b2wtPnN1cHBsZW1lbnQ8V2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk+KCk7CisKKyAgICBj
b29raWVNYW5hZ2VyLT5zZXRDb29raWVzKGRhdGFTdG9yZS5zZXNzaW9uSUQoKSwgY29va2llcywg
dXJsLCBtYWluRG9jdW1lbnRVUkwsIFtwb29sID0gV1RGTW92ZShwb29sKSwgY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oQ2FsbGJhY2tCYXNlOjpFcnJvciBl
cnJvcikgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAgIH0pOworfQorCit2b2lk
IEhUVFBDb29raWVTdG9yYWdlOjpkZWxldGVDb29raWUoY29uc3QgV2ViQ29yZTo6Q29va2llJiBj
b29raWUsIEZ1bmN0aW9uPHZvaWQgKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgYXV0
byYgZGF0YVN0b3JlID0gbV9vd25pbmdEYXRhU3RvcmUud2Vic2l0ZURhdGFTdG9yZSgpOworICAg
IGF1dG8gcG9vbCA9IGRhdGFTdG9yZS5wcm9jZXNzUG9vbEZvckNvb2tpZVN0b3JhZ2VPcGVyYXRp
b25zKCk7CisgICAgYXV0byogY29va2llTWFuYWdlciA9IHBvb2wtPnN1cHBsZW1lbnQ8V2ViS2l0
OjpXZWJDb29raWVNYW5hZ2VyUHJveHk+KCk7CisKKyAgICBjb29raWVNYW5hZ2VyLT5kZWxldGVD
b29raWUoZGF0YVN0b3JlLnNlc3Npb25JRCgpLCBjb29raWUsIFtwb29sID0gV1RGTW92ZShwb29s
KSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oQ2FsbGJh
Y2tCYXNlOjpFcnJvciBlcnJvcikgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAg
IH0pOworfQorCit2b2lkIEhUVFBDb29raWVTdG9yYWdlOjpyZW1vdmVDb29raWVzU2luY2VEYXRl
KHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgZGF0ZSwgRnVuY3Rpb248dm9p
ZCAoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBhdXRvJiBkYXRhU3RvcmUgPSBtX293
bmluZ0RhdGFTdG9yZS53ZWJzaXRlRGF0YVN0b3JlKCk7CisgICAgYXV0byBwb29sID0gZGF0YVN0
b3JlLnByb2Nlc3NQb29sRm9yQ29va2llU3RvcmFnZU9wZXJhdGlvbnMoKTsKKyAgICBhdXRvKiBj
b29raWVNYW5hZ2VyID0gcG9vbC0+c3VwcGxlbWVudDxXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQ
cm94eT4oKTsKKworICAgIGNvb2tpZU1hbmFnZXItPmRlbGV0ZUFsbENvb2tpZXNNb2RpZmllZFNp
bmNlKGRhdGFTdG9yZS5zZXNzaW9uSUQoKSwgZGF0ZSwgW3Bvb2wgPSBXVEZNb3ZlKHBvb2wpLCBj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShDYWxsYmFja0Jh
c2U6OkVycm9yIGVycm9yKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgfSk7
Cit9CisKK3ZvaWQgSFRUUENvb2tpZVN0b3JhZ2U6OnNldEhUVFBDb29raWVBY2NlcHRQb2xpY3ko
SFRUUENvb2tpZUFjY2VwdFBvbGljeSBwb2xpY3ksIEZ1bmN0aW9uPHZvaWQgKCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCit7CisgICAgYXV0byYgZGF0YVN0b3JlID0gbV9vd25pbmdEYXRhU3RvcmUu
d2Vic2l0ZURhdGFTdG9yZSgpOworICAgIGF1dG8gcG9vbCA9IGRhdGFTdG9yZS5wcm9jZXNzUG9v
bEZvckNvb2tpZVN0b3JhZ2VPcGVyYXRpb25zKCk7CisgICAgYXV0byogY29va2llTWFuYWdlciA9
IHBvb2wtPnN1cHBsZW1lbnQ8V2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk+KCk7CisKKyAg
ICBjb29raWVNYW5hZ2VyLT5zZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KGRhdGFTdG9yZS5zZXNz
aW9uSUQoKSwgcG9saWN5LCBbcG9vbCA9IFdURk1vdmUocG9vbCksIGNvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKENhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3Ip
IHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICB9KTsKK30KKwordm9pZCBIVFRQ
Q29va2llU3RvcmFnZTo6Z2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShGdW5jdGlvbjx2b2lkIChI
VFRQQ29va2llQWNjZXB0UG9saWN5KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBhdXRv
JiBkYXRhU3RvcmUgPSBtX293bmluZ0RhdGFTdG9yZS53ZWJzaXRlRGF0YVN0b3JlKCk7CisgICAg
YXV0byBwb29sID0gZGF0YVN0b3JlLnByb2Nlc3NQb29sRm9yQ29va2llU3RvcmFnZU9wZXJhdGlv
bnMoKTsKKyAgICBhdXRvKiBjb29raWVNYW5hZ2VyID0gcG9vbC0+c3VwcGxlbWVudDxXZWJLaXQ6
OldlYkNvb2tpZU1hbmFnZXJQcm94eT4oKTsKKworICAgIGNvb2tpZU1hbmFnZXItPmdldEhUVFBD
b29raWVBY2NlcHRQb2xpY3koZGF0YVN0b3JlLnNlc3Npb25JRCgpLCBbcG9vbCA9IFdURk1vdmUo
cG9vbCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKEhU
VFBDb29raWVBY2NlcHRQb2xpY3kgcG9saWN5LCBDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7
CisgICAgICAgIGlmIChlcnJvciAhPSBDYWxsYmFja0Jhc2U6OkVycm9yOjpOb25lKQorICAgICAg
ICAgICAgcG9saWN5ID0gSFRUUENvb2tpZUFjY2VwdFBvbGljeU5ldmVyOworCisgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKHBvbGljeSk7CisgICAgfSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEFQ
SQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElIVFRQQ29va2ll
U3RvcmFnZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElIVFRQQ29va2llU3Rv
cmFnZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmFkZjdiYTI1NmI2ODMwZTQzMDVkOTlkNjBkNzE1MzRhYzg2Zjlk
MzAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSUhU
VFBDb29raWVTdG9yYWdlLmgKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCisjaW5jbHVkZSAiSFRUUENvb2tpZUFjY2Vw
dFBvbGljeS5oIgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgVVJMOworc3RydWN0IENvb2tpZTsK
K30KKworbmFtZXNwYWNlIEFQSSB7CisKK2NsYXNzIFdlYnNpdGVEYXRhU3RvcmU7CisKK2NsYXNz
IEhUVFBDb29raWVTdG9yYWdlIGZpbmFsIDogcHVibGljIE9iamVjdEltcGw8T2JqZWN0OjpUeXBl
OjpIVFRQQ29va2llU3RvcmFnZT4geworcHVibGljOgorICAgIHN0YXRpYyBSZWY8SFRUUENvb2tp
ZVN0b3JhZ2U+IGNyZWF0ZShXZWJzaXRlRGF0YVN0b3JlJiB3ZWJzaXRlRGF0YVN0b3JlKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSFRUUENvb2tpZVN0b3JhZ2Uod2Vic2l0
ZURhdGFTdG9yZSkpOworICAgIH0KKworICAgIHZpcnR1YWwgfkhUVFBDb29raWVTdG9yYWdlKCk7
CisKKyAgICB2b2lkIGNvb2tpZXMoRnVuY3Rpb248dm9pZCAoY29uc3QgVmVjdG9yPFdlYkNvcmU6
OkNvb2tpZT4mKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7CisgICAgdm9pZCBjb29raWVzKGNvbnN0
IFdlYkNvcmU6OlVSTCYsIEZ1bmN0aW9uPHZvaWQgKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29r
aWU+Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpOworCisgICAgdm9pZCBzZXRDb29raWUoY29uc3Qg
V2ViQ29yZTo6Q29va2llJiwgRnVuY3Rpb248dm9pZCAoKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7
CisgICAgdm9pZCBzZXRDb29raWVzKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiwgY29u
c3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBtYWluRG9jdW1lbnRVUkwsIEZ1
bmN0aW9uPHZvaWQgKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpOworICAgIHZvaWQgZGVsZXRlQ29v
a2llKGNvbnN0IFdlYkNvcmU6OkNvb2tpZSYsIEZ1bmN0aW9uPHZvaWQgKCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpOworCisgICAgdm9pZCByZW1vdmVDb29raWVzU2luY2VEYXRlKHN0ZDo6Y2hyb25v
OjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQsIEZ1bmN0aW9uPHZvaWQgKCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpOworCisgICAgdm9pZCBzZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KFdlYktpdDo6
SFRUUENvb2tpZUFjY2VwdFBvbGljeSwgRnVuY3Rpb248dm9pZCAoKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcik7CisgICAgdm9pZCBnZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KEZ1bmN0aW9uPHZvaWQg
KFdlYktpdDo6SFRUUENvb2tpZUFjY2VwdFBvbGljeSk+JiYgY29tcGxldGlvbkhhbmRsZXIpOwor
ICAgIAorcHJpdmF0ZToKKyAgICBIVFRQQ29va2llU3RvcmFnZShXZWJzaXRlRGF0YVN0b3JlJik7
CisKKyAgICBXZWJzaXRlRGF0YVN0b3JlJiBtX293bmluZ0RhdGFTdG9yZTsKK307CisKK30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9y
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUu
Y3BwCmluZGV4IDVjNzhjY2Q3YWUyOTBlNDVlNzBmNDgzZjUwMjBiZGFhNzkwNGY3NWEuLmNhMWRm
NzU3MTBkOTI1N2EyYTliMGQyZDMwMmYwM2IxZWViMzc5MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmNwcApAQCAtMzEsMTMg
KzMxLDEzIEBACiAKIG5hbWVzcGFjZSBBUEkgewogCi1SZWZQdHI8V2Vic2l0ZURhdGFTdG9yZT4g
V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZSgpCitSZWY8V2Vic2l0ZURhdGFTdG9y
ZT4gV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZSgpCiB7CiAgICAgV2ViS2l0OjpJ
bml0aWFsaXplV2ViS2l0MigpOwogCiAgICAgc3RhdGljIFdlYnNpdGVEYXRhU3RvcmUqIGRlZmF1
bHREYXRhU3RvcmUgPSBhZG9wdFJlZihuZXcgV2Vic2l0ZURhdGFTdG9yZShkZWZhdWx0RGF0YVN0
b3JlQ29uZmlndXJhdGlvbigpKSkubGVha1JlZigpOwogCi0gICAgcmV0dXJuIGRlZmF1bHREYXRh
U3RvcmU7CisgICAgcmV0dXJuICpkZWZhdWx0RGF0YVN0b3JlOwogfQogCiBSZWY8V2Vic2l0ZURh
dGFTdG9yZT4gV2Vic2l0ZURhdGFTdG9yZTo6Y3JlYXRlTm9uUGVyc2lzdGVudERhdGFTdG9yZSgp
CkBAIC02NCw2ICs2NCwxNCBAQCBXZWJzaXRlRGF0YVN0b3JlOjp+V2Vic2l0ZURhdGFTdG9yZSgp
CiB7CiB9CiAKK0hUVFBDb29raWVTdG9yYWdlJiBXZWJzaXRlRGF0YVN0b3JlOjpodHRwQ29va2ll
U3RvcmFnZSgpCit7CisgICAgaWYgKCFtX2FwaUhUVFBDb29raWVTdG9yYWdlKQorICAgICAgICBt
X2FwaUhUVFBDb29raWVTdG9yYWdlID0gSFRUUENvb2tpZVN0b3JhZ2U6OmNyZWF0ZSgqdGhpcyk7
CisKKyAgICByZXR1cm4gKm1fYXBpSFRUUENvb2tpZVN0b3JhZ2U7Cit9CisKIGJvb2wgV2Vic2l0
ZURhdGFTdG9yZTo6aXNQZXJzaXN0ZW50KCkKIHsKICAgICByZXR1cm4gbV93ZWJzaXRlRGF0YVN0
b3JlLT5pc1BlcnNpc3RlbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9BUElXZWJzaXRlRGF0YVN0b3JlLmgKaW5kZXggMjY3ZDY5YzMzODQ5YTA4ZjgyMjg4NzFlMDFl
ZDg2MWFkODNiOGE3ZS4uY2E3NGRiY2M0NjdlNjU2NTJkMzc1M2ZkM2JjZDI0MzI5ODJmODc3OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0
b3JlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0
b3JlLmgKQEAgLTI2LDcgKzI2LDcgQEAKICNpZm5kZWYgQVBJV2Vic2l0ZURhdGFTdG9yZV9oCiAj
ZGVmaW5lIEFQSVdlYnNpdGVEYXRhU3RvcmVfaAogCi0jaW5jbHVkZSAiQVBJT2JqZWN0LmgiCisj
aW5jbHVkZSAiQVBJSFRUUENvb2tpZVN0b3JhZ2UuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YVN0
b3JlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KQEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNlIEFQSSB7CiAKIGNsYXNz
IFdlYnNpdGVEYXRhU3RvcmUgZmluYWwgOiBwdWJsaWMgT2JqZWN0SW1wbDxPYmplY3Q6OlR5cGU6
OldlYnNpdGVEYXRhU3RvcmU+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPFdlYnNpdGVE
YXRhU3RvcmU+IGRlZmF1bHREYXRhU3RvcmUoKTsKKyAgICBzdGF0aWMgUmVmPFdlYnNpdGVEYXRh
U3RvcmU+IGRlZmF1bHREYXRhU3RvcmUoKTsKICAgICBzdGF0aWMgUmVmPFdlYnNpdGVEYXRhU3Rv
cmU+IGNyZWF0ZU5vblBlcnNpc3RlbnREYXRhU3RvcmUoKTsKICAgICBzdGF0aWMgUmVmPFdlYnNp
dGVEYXRhU3RvcmU+IGNyZWF0ZShXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OkNvbmZpZ3VyYXRp
b24pOwogCkBAIC00OSw2ICs0OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlZ2lzdGVyU2hhcmVk
UmVzb3VyY2VMb2FkT2JzZXJ2ZXIoKTsKIAogICAgIFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZSYg
d2Vic2l0ZURhdGFTdG9yZSgpIHsgcmV0dXJuICptX3dlYnNpdGVEYXRhU3RvcmU7IH0KKyAgICBI
VFRQQ29va2llU3RvcmFnZSYgaHR0cENvb2tpZVN0b3JhZ2UoKTsKIAogICAgIHN0YXRpYyBTdHJp
bmcgZGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKTsKICAgICBzdGF0aWMgU3RyaW5n
IGRlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKTsKQEAgLTcwLDYgKzcxLDcgQEAgcHJpdmF0
ZToKICAgICBzdGF0aWMgU3RyaW5nIHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5TmFtZSk7CiAKICAgICBSZWZQdHI8V2Vi
S2l0OjpXZWJzaXRlRGF0YVN0b3JlPiBtX3dlYnNpdGVEYXRhU3RvcmU7CisgICAgUmVmUHRyPEhU
VFBDb29raWVTdG9yYWdlPiBtX2FwaUhUVFBDb29raWVTdG9yYWdlOwogfTsKIAogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29va2llTWFuYWdlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb29raWVNYW5hZ2VyLmNwcAppbmRl
eCAyNzhlODNjNTFlMDQwOGEzY2RiY2MxNThkNTNlM2E0YjFmNzY0OWY3Li44MGFjOGE4NjI0MDkx
NGZhOGFlMDhmMzhhZjk4YWNjYTVkYTk1NGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvV0tDb29raWVNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvV0tDb29raWVNYW5hZ2VyLmNwcApAQCAtNjEsMTcgKzYxLDE3IEBAIHZv
aWQgV0tDb29raWVNYW5hZ2VyRGVsZXRlQWxsQ29va2llc01vZGlmaWVkQWZ0ZXJEYXRlKFdLQ29v
a2llTWFuYWdlclJlZiBjb29raWVNCiAgICAgdXNpbmcgbmFtZXNwYWNlIHN0ZDo6Y2hyb25vOwog
CiAgICAgYXV0byB0aW1lID0gc3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50KGR1cmF0aW9uX2Nhc3Q8
c3lzdGVtX2Nsb2NrOjpkdXJhdGlvbj4oZHVyYXRpb248ZG91YmxlPihkYXRlKSkpOwotICAgIHRv
SW1wbChjb29raWVNYW5hZ2VyUmVmKS0+ZGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2UoV2Vi
Q29yZTo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCksIHRpbWUpOworICAgIHRvSW1wbChj
b29raWVNYW5hZ2VyUmVmKS0+ZGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2UoV2ViQ29yZTo6
U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCksIHRpbWUsIFtdKENhbGxiYWNrQmFzZTo6RXJy
b3Ipe30pOwogfQogCiB2b2lkIFdLQ29va2llTWFuYWdlclNldEhUVFBDb29raWVBY2NlcHRQb2xp
Y3koV0tDb29raWVNYW5hZ2VyUmVmIGNvb2tpZU1hbmFnZXIsIFdLSFRUUENvb2tpZUFjY2VwdFBv
bGljeSBwb2xpY3kpCiB7Ci0gICAgdG9JbXBsKGNvb2tpZU1hbmFnZXIpLT5zZXRIVFRQQ29va2ll
QWNjZXB0UG9saWN5KHRvSFRUUENvb2tpZUFjY2VwdFBvbGljeShwb2xpY3kpKTsKKyAgICB0b0lt
cGwoY29va2llTWFuYWdlciktPnNldEhUVFBDb29raWVBY2NlcHRQb2xpY3koV2ViQ29yZTo6U2Vz
c2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCksIHRvSFRUUENvb2tpZUFjY2VwdFBvbGljeShwb2xp
Y3kpLCBbXShDYWxsYmFja0Jhc2U6OkVycm9yKXt9KTsKIH0KIAogdm9pZCBXS0Nvb2tpZU1hbmFn
ZXJHZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KFdLQ29va2llTWFuYWdlclJlZiBjb29raWVNYW5h
Z2VyLCB2b2lkKiBjb250ZXh0LCBXS0Nvb2tpZU1hbmFnZXJHZXRIVFRQQ29va2llQWNjZXB0UG9s
aWN5RnVuY3Rpb24gY2FsbGJhY2spCiB7Ci0gICAgdG9JbXBsKGNvb2tpZU1hbmFnZXIpLT5nZXRI
VFRQQ29va2llQWNjZXB0UG9saWN5KHRvR2VuZXJpY0NhbGxiYWNrRnVuY3Rpb248V0tIVFRQQ29v
a2llQWNjZXB0UG9saWN5LCBIVFRQQ29va2llQWNjZXB0UG9saWN5Pihjb250ZXh0LCBjYWxsYmFj
aykpOworICAgIHRvSW1wbChjb29raWVNYW5hZ2VyKS0+Z2V0SFRUUENvb2tpZUFjY2VwdFBvbGlj
eShXZWJDb3JlOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSwgdG9HZW5lcmljQ2FsbGJh
Y2tGdW5jdGlvbjxXS0hUVFBDb29raWVBY2NlcHRQb2xpY3ksIEhUVFBDb29raWVBY2NlcHRQb2xp
Y3k+KGNvbnRleHQsIGNhbGxiYWNrKSk7CiB9CiAKIHZvaWQgV0tDb29raWVNYW5hZ2VyU2V0Q29v
a2llU3RvcmFnZVBhcnRpdGlvbmluZ0VuYWJsZWQoV0tDb29raWVNYW5hZ2VyUmVmIGNvb2tpZU1h
bmFnZXIsIGJvb2wgZW5hYmxlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAKaW5kZXggYTc3YzFhODlkNWNkZTVl
YjkyZmY4MTk2NmZmODIzNzkyN2M2ZTQ5OC4uNmNhNjljNmQyZmQ3NmU0YTA0ZDBlYzE1NzRjMmMx
MGUzMGU3NWFjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dL
V2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgV0tUeXBlSUQg
V0tXZWJzaXRlRGF0YVN0b3JlR2V0VHlwZUlEKCkKIAogV0tXZWJzaXRlRGF0YVN0b3JlUmVmIFdL
V2Vic2l0ZURhdGFTdG9yZUdldERlZmF1bHREYXRhU3RvcmUoKQogewotICAgIHJldHVybiBXZWJL
aXQ6OnRvQVBJKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZSgpLmdldCgp
KTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSShBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1
bHREYXRhU3RvcmUoKS5wdHIoKSk7CiB9CiAKIFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBXS1dlYnNp
dGVEYXRhU3RvcmVDcmVhdGVOb25QZXJzaXN0ZW50RGF0YVN0b3JlKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tIVFRQQ29va2llU3RvcmFnZS5oIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0hUVFBDb29raWVTdG9yYWdlLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNWY5MWY4ZGJlZThjMDdhYTZiOTVjYmM4MGNjZDY4Yzg2MTQ3YTYzZgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tIVFRQ
Q29va2llU3RvcmFnZS5oCkBAIC0wLDAgKzEsOTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0IDxX
ZWJLaXQvV0tGb3VuZGF0aW9uLmg+CisKKyNpZiBXS19BUElfRU5BQkxFRAorCisjaW1wb3J0IDxG
b3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KKworTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KKworLyoh
CisgQSBXS0hUVFBDb29raWVTdG9yYWdlIG9iamVjdCBhbGxvd3MgbWFuYWdpbmcgdGhlIEhUVFAg
Y29va2llcyBhc3NvY2lhdGVkIHdpdGggYSBwYXJ0aWN1bGFyIFdLV2Vic2l0ZURhdGFTdG9yZS4K
KyAqLworV0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19U
QkEpKQorQGludGVyZmFjZSBXS0hUVFBDb29raWVTdG9yYWdlIDogTlNPYmplY3QKKworLSAoaW5z
dGFuY2V0eXBlKWluaXQgTlNfVU5BVkFJTEFCTEU7CisKKy8qISBAYWJzdHJhY3QgRmV0Y2hlcyBh
bGwgc3RvcmVkIGNvb2tpZXMuCisgQHBhcmFtIGNvbXBsZXRpb25IYW5kbGVyIEEgYmxvY2sgdG8g
aW52b2tlIHdpdGggdGhlIGZldGNoZWQgY29va2llcy4KKyAqLworLSAodm9pZClmZXRjaENvb2tp
ZXM6KHZvaWQgKF4pKE5TQXJyYXk8TlNIVFRQQ29va2llICo+ICopKWNvbXBsZXRpb25IYW5kbGVy
OworCisvKiEgQGFic3RyYWN0IEZldGNoZXMgYWxsIG9mIHRoZSBzdG9yZWQgY29va2llcyBmb3Ig
dGhlIGdpdmVuIFVSTC4KKyBAcGFyYW0gY29tcGxldGlvbkhhbmRsZXIgQSBibG9jayB0byBpbnZv
a2Ugd2l0aCB0aGUgZmV0Y2hlZCBjb29raWVzLgorICovCistICh2b2lkKWZldGNoQ29va2llc0Zv
clVSTDooTlNVUkwgKil1cmwgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TQXJyYXk8TlNI
VFRQQ29va2llICo+ICopKWNvbXBsZXRpb25IYW5kbGVyOworCisvKiEgQGFic3RyYWN0IFNldCBh
IGNvb2tpZS4KKyBAcGFyYW0gY29va2llcyBUaGUgY29va2llIHRvIHNldC4KKyBAcGFyYW0gY29t
cGxldGlvbkhhbmRsZXIgQSBibG9jayB0byBpbnZva2Ugb25jZSB0aGUgY29va2llIGhhcyBiZWVu
IHN0b3JlZC4KKyAqLworLSAodm9pZClzZXRDb29raWU6KE5TSFRUUENvb2tpZSAqKWNvb2tpZSBj
b21wbGV0aW9uSGFuZGxlcjoobnVsbGFibGUgdm9pZCAoXikoKSljb21wbGV0aW9uSGFuZGxlcjsK
KworLyohIEBhYnN0cmFjdCBBZGRzIGFuIGFycmF5IGNvb2tpZXMgdG8gdGhlIGNvb2tpZSBzdG9y
ZSwgZm9sbG93aW5nIHRoZSBjb29raWUgYWNjZXB0IHBvbGljeS4KKyBAcGFyYW0gY29va2llcyBU
aGUgY29va2llcyB0byBzZXQuCisgQHBhcmFtIFVSTCBUaGUgVVJMIGZyb20gd2hpY2ggdGhlIGNv
b2tpZXMgd2VyZSBzZW50LgorIEBwYXJhbSBtYWluRG9jdW1lbnRVUkwgVGhlIG1haW4gZG9jdW1l
bnQgVVJMIHRvIGJlIHVzZWQgYXMgYSBiYXNlIGZvciB0aGUgInNhbWUgZG9tYWluIGFzIG1haW4g
ZG9jdW1lbnQiIHBvbGljeS4KKyBAcGFyYW0gY29tcGxldGlvbkhhbmRsZXIgQSBibG9jayB0byBp
bnZva2Ugb25jZSB0aGUgY29va2llcyBoYXZlIGJlZW4gc3RvcmVkLgorICovCistICh2b2lkKXNl
dENvb2tpZXM6KE5TQXJyYXk8TlNIVFRQQ29va2llICo+ICopY29va2llcyBmb3JVUkw6KE5TVVJM
ICopdXJsIG1haW5Eb2N1bWVudFVSTDoobnVsbGFibGUgTlNVUkwgKiltYWluRG9jdW1lbnRVUkwg
Y29tcGxldGlvbkhhbmRsZXI6KG51bGxhYmxlIHZvaWQgKF4pKCkpY29tcGxldGlvbkhhbmRsZXI7
CisKKy8qISBAYWJzdHJhY3QgRGVsZXRlIHRoZSBzcGVjaWZpZWQgY29va2llLgorIEBwYXJhbSBj
b21wbGV0aW9uSGFuZGxlciBBIGJsb2NrIHRvIGludm9rZSBvbmNlIHRoZSBjb29raWUgaGFzIGJl
ZW4gZGVsZXRlZC4KKyAqLworLSAodm9pZClkZWxldGVDb29raWU6KE5TSFRUUENvb2tpZSAqKWNv
b2tpZSBjb21wbGV0aW9uSGFuZGxlcjoobnVsbGFibGUgdm9pZCAoXikoKSljb21wbGV0aW9uSGFu
ZGxlcjsKKworLyohIEBhYnN0cmFjdCBEZWxldGUgYWxsIGNvb2tpZXMgZnJvbSB0aGUgY29va2ll
IHN0b3JhZ2Ugc2luY2UgdGhlIHByb3ZpZGVkIGRhdGUuCisgQHBhcmFtIGRhdGUgVGhlIGRhdGUg
YWZ0ZXIgd2hpY2ggc2V0IGNvb2tpZXMgc2hvdWxkIGJlIHJlbW92ZWQuCisgQHBhcmFtIGNvbXBs
ZXRpb25IYW5kbGVyIEEgYmxvY2sgdG8gaW52b2tlIG9uY2UgdGhlIGNvb2tpZXMgaGF2ZSBiZWVu
IGRlbGV0ZWQuCisgKi8KKy0gKHZvaWQpcmVtb3ZlQ29va2llc1NpbmNlRGF0ZTooTlNEYXRlICop
ZGF0ZSBjb21wbGV0aW9uSGFuZGxlcjoobnVsbGFibGUgdm9pZCAoXikoKSljb21wbGV0aW9uSGFu
ZGxlcjsKKworLyohIEBhYnN0cmFjdCBTZXRzIHRoZSBjb29raWUgYWNjZXB0IHBvbGljeSBwcmVm
ZXJlbmNlIG9mIHRoZSByZWNlaXZlci4KKyBAcGFyYW0gcG9saWN5IFRoZSBjb29raWUgYWNjZXB0
IHBvbGljeSB0byBzZXQuCisgQHBhcmFtIGNvbXBsZXRpb25IYW5kbGVyIEEgYmxvY2sgdG8gaW52
b2tlIG9uY2UgdGhlIHBvbGljeSBoYXMgYmVlbiBzZXQuCisgKi8KKy0gKHZvaWQpc2V0Q29va2ll
QWNjZXB0UG9saWN5OihOU0hUVFBDb29raWVBY2NlcHRQb2xpY3kpcG9saWN5IGNvbXBsZXRpb25I
YW5kbGVyOihudWxsYWJsZSB2b2lkICheKSgpKWNvbXBsZXRpb25IYW5kbGVyOworCisvKiEgQGFi
c3RyYWN0IEZldGNoZXMgdGhlIGNvb2tpZSBhY2NlcHQgcG9saWN5IHByZWZlcmVuY2Ugb2YgdGhl
IHJlY2VpdmVyLgorIEBwYXJhbSBjb21wbGV0aW9uSGFuZGxlciBBIGJsb2NrIHRvIGludm9rZSB3
aXRoIHRoZSBmZXRjaGVkIHBvbGljeS4KKyAqLworLSAodm9pZClmZXRjaENvb2tpZUFjY2VwdFBv
bGljeToodm9pZCAoXikoTlNIVFRQQ29va2llQWNjZXB0UG9saWN5KSljb21wbGV0aW9uSGFuZGxl
cjsKKworQGVuZAorCitOU19BU1NVTUVfTk9OTlVMTF9FTkQKKworI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLSFRUUENvb2tpZVN0b3JhZ2Uu
bW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLSFRUUENvb2tpZVN0b3Jh
Z2UubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNTNjNzM0YTZmMjZhN2YwM2M4NDJmYTc0NGM4NTBmMjYwNTMyM2Vl
ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tIVFRQQ29va2llU3RvcmFnZS5tbQpAQCAtMCwwICsxLDE2MSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiV0tIVFRQQ29va2llU3RvcmFnZUludGVybmFsLmgi
CisKKyNpZiBXS19BUElfRU5BQkxFRAorCisjaW5jbHVkZSAiSFRUUENvb2tpZUFjY2VwdFBvbGlj
eS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ0ZOZXR3b3JrU1BJLmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9Db29raWUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgorI2luY2x1ZGUgPHd0Zi9SZXRh
aW5QdHIuaD4KKworc3RhdGljIE5TQXJyYXk8TlNIVFRQQ29va2llICo+ICpjb3JlQ29va2llc1Rv
TlNDb29raWVzKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiBjb3JlQ29va2llcykKK3sK
KyAgICBOU011dGFibGVBcnJheTxOU0hUVFBDb29raWUgKj4gKm5zQ29va2llcyA9IFtOU011dGFi
bGVBcnJheSBhcnJheVdpdGhDYXBhY2l0eTpjb3JlQ29va2llcy5zaXplKCldOworCisgICAgZm9y
IChhdXRvJiBjb29raWUgOiBjb3JlQ29va2llcykKKyAgICAgICAgW25zQ29va2llcyBhZGRPYmpl
Y3Q6KE5TSFRUUENvb2tpZSAqKWNvb2tpZV07CisKKyAgICByZXR1cm4gbnNDb29raWVzOworfQor
CitAaW1wbGVtZW50YXRpb24gV0tIVFRQQ29va2llU3RvcmFnZQorCistICh2b2lkKWRlYWxsb2MK
K3sKKyAgICBfY29va2llU3RvcmFnZS0+QVBJOjpIVFRQQ29va2llU3RvcmFnZTo6fkhUVFBDb29r
aWVTdG9yYWdlKCk7CisKKyAgICBbc3VwZXIgZGVhbGxvY107Cit9CisKKy0gKHZvaWQpZmV0Y2hD
b29raWVzOih2b2lkICheKShOU0FycmF5PE5TSFRUUENvb2tpZSAqPiAqKSljb21wbGV0aW9uSGFu
ZGxlcgoreworICAgIF9jb29raWVTdG9yYWdlLT5jb29raWVzKFtoYW5kbGVyID0gYWRvcHROUyhb
Y29tcGxldGlvbkhhbmRsZXIgY29weV0pXShjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYg
Y29va2llcykgeworICAgICAgICBhdXRvIHJhd0hhbmRsZXIgPSAodm9pZCAoXikoTlNBcnJheTxO
U0hUVFBDb29raWUgKj4gKikpaGFuZGxlci5nZXQoKTsKKyAgICAgICAgcmF3SGFuZGxlcihjb3Jl
Q29va2llc1RvTlNDb29raWVzKGNvb2tpZXMpKTsKKyAgICB9KTsKK30KKworLSAodm9pZClmZXRj
aENvb2tpZXNGb3JVUkw6KE5TVVJMICopdXJsIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShO
U0FycmF5PE5TSFRUUENvb2tpZSAqPiAqKSljb21wbGV0aW9uSGFuZGxlcgoreworICAgIF9jb29r
aWVTdG9yYWdlLT5jb29raWVzKHVybCwgW2hhbmRsZXIgPSBhZG9wdE5TKFtjb21wbGV0aW9uSGFu
ZGxlciBjb3B5XSldKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiBjb29raWVzKSB7Cisg
ICAgICAgIGF1dG8gcmF3SGFuZGxlciA9ICh2b2lkICheKShOU0FycmF5PE5TSFRUUENvb2tpZSAq
PiAqKSloYW5kbGVyLmdldCgpOworICAgICAgICByYXdIYW5kbGVyKGNvcmVDb29raWVzVG9OU0Nv
b2tpZXMoY29va2llcykpOworICAgIH0pOworfQorCistICh2b2lkKXNldENvb2tpZTooTlNIVFRQ
Q29va2llICopY29va2llIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKSgpKWNvbXBsZXRpb25I
YW5kbGVyCit7CisgICAgX2Nvb2tpZVN0b3JhZ2UtPnNldENvb2tpZShjb29raWUsIFtoYW5kbGVy
ID0gYWRvcHROUyhbY29tcGxldGlvbkhhbmRsZXIgY29weV0pXSgpIHsKKyAgICAgICAgYXV0byBy
YXdIYW5kbGVyID0gKHZvaWQgKF4pKCkpaGFuZGxlci5nZXQoKTsKKyAgICAgICAgaWYgKHJhd0hh
bmRsZXIpCisgICAgICAgICAgICByYXdIYW5kbGVyKCk7CisgICAgfSk7CisKK30KKworLSAodm9p
ZClkZWxldGVDb29raWU6KE5TSFRUUENvb2tpZSAqKWNvb2tpZSBjb21wbGV0aW9uSGFuZGxlcjoo
dm9pZCAoXikoKSljb21wbGV0aW9uSGFuZGxlcgoreworICAgIF9jb29raWVTdG9yYWdlLT5kZWxl
dGVDb29raWUoY29va2llLCBbaGFuZGxlciA9IGFkb3B0TlMoW2NvbXBsZXRpb25IYW5kbGVyIGNv
cHldKV0oKSB7CisgICAgICAgIGF1dG8gcmF3SGFuZGxlciA9ICh2b2lkICheKSgpKWhhbmRsZXIu
Z2V0KCk7CisgICAgICAgIGlmIChyYXdIYW5kbGVyKQorICAgICAgICAgICAgcmF3SGFuZGxlcigp
OworICAgIH0pOworfQorCistICh2b2lkKXNldENvb2tpZXM6KE5TQXJyYXk8TlNIVFRQQ29va2ll
ICo+ICopY29va2llcyBmb3JVUkw6KE5TVVJMICopVVJMIG1haW5Eb2N1bWVudFVSTDooTlNVUkwg
KiltYWluRG9jdW1lbnRVUkwgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKCkpY29tcGxldGlv
bkhhbmRsZXIKK3sKKyAgICBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiBjb3JlQ29va2llczsKKyAg
ICBjb3JlQ29va2llcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGNvb2tpZXMuY291bnQpOworICAg
IGZvciAoTlNIVFRQQ29va2llICpjb29raWUgOiBjb29raWVzKQorICAgICAgICBjb3JlQ29va2ll
cy51bmNoZWNrZWRBcHBlbmQoY29va2llKTsKKworICAgIF9jb29raWVTdG9yYWdlLT5zZXRDb29r
aWVzKGNvcmVDb29raWVzLCBVUkwsIG1haW5Eb2N1bWVudFVSTCwgW2hhbmRsZXIgPSBhZG9wdE5T
KFtjb21wbGV0aW9uSGFuZGxlciBjb3B5XSldKCkgeworICAgICAgICBhdXRvIHJhd0hhbmRsZXIg
PSAodm9pZCAoXikoKSloYW5kbGVyLmdldCgpOworICAgICAgICBpZiAocmF3SGFuZGxlcikKKyAg
ICAgICAgICAgIHJhd0hhbmRsZXIoKTsKKyAgICB9KTsKK30KKworLSAodm9pZClyZW1vdmVDb29r
aWVzU2luY2VEYXRlOihOU0RhdGUgKilkYXRlIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKSgp
KWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAgYXV0byBzeXN0ZW1DbG9ja1RpbWUgPSBzdGQ6OmNo
cm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50KHN0ZDo6Y2hyb25vOjpkdXJhdGlvbl9jYXN0
PHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OmR1cmF0aW9uPihzdGQ6OmNocm9ubzo6ZHVyYXRp
b248ZG91YmxlPihkYXRlLnRpbWVJbnRlcnZhbFNpbmNlMTk3MCkpKTsKKworICAgIF9jb29raWVT
dG9yYWdlLT5yZW1vdmVDb29raWVzU2luY2VEYXRlKHN5c3RlbUNsb2NrVGltZSwgW2hhbmRsZXIg
PSBhZG9wdE5TKFtjb21wbGV0aW9uSGFuZGxlciBjb3B5XSldKCkgeworICAgICAgICBhdXRvIHJh
d0hhbmRsZXIgPSAodm9pZCAoXikoKSloYW5kbGVyLmdldCgpOworICAgICAgICBpZiAocmF3SGFu
ZGxlcikKKyAgICAgICAgICAgIHJhd0hhbmRsZXIoKTsKKyAgICB9KTsKK30KKworLSAodm9pZClz
ZXRDb29raWVBY2NlcHRQb2xpY3k6KE5TSFRUUENvb2tpZUFjY2VwdFBvbGljeSlwb2xpY3kgY29t
cGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKCkpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICBfY29v
a2llU3RvcmFnZS0+c2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShwb2xpY3ksIFtoYW5kbGVyID0g
YWRvcHROUyhbY29tcGxldGlvbkhhbmRsZXIgY29weV0pXSgpIHsKKyAgICAgICAgYXV0byByYXdI
YW5kbGVyID0gKHZvaWQgKF4pKCkpaGFuZGxlci5nZXQoKTsKKyAgICAgICAgaWYgKHJhd0hhbmRs
ZXIpCisgICAgICAgICAgICByYXdIYW5kbGVyKCk7CisgICAgfSk7Cit9CisKK3N0YXRpYyBOU0hU
VFBDb29raWVBY2NlcHRQb2xpY3kga2l0Q29va2llUG9saWN5VG9OU0Nvb2tpZVBvbGljeShXZWJL
aXQ6OkhUVFBDb29raWVBY2NlcHRQb2xpY3kga2l0UG9saWN5KQoreworICAgIHN3aXRjaCAoa2l0
UG9saWN5KSB7CisgICAgY2FzZSBXZWJLaXQ6OkhUVFBDb29raWVBY2NlcHRQb2xpY3lBbHdheXM6
CisgICAgICAgIHJldHVybiBOU0hUVFBDb29raWVBY2NlcHRQb2xpY3lBbHdheXM7CisgICAgY2Fz
ZSBXZWJLaXQ6OkhUVFBDb29raWVBY2NlcHRQb2xpY3lOZXZlcjoKKyAgICAgICAgcmV0dXJuIE5T
SFRUUENvb2tpZUFjY2VwdFBvbGljeU5ldmVyOworICAgIGNhc2UgV2ViS2l0OjpIVFRQQ29va2ll
QWNjZXB0UG9saWN5T25seUZyb21NYWluRG9jdW1lbnREb21haW46CisgICAgICAgIHJldHVybiBO
U0hUVFBDb29raWVBY2NlcHRQb2xpY3lPbmx5RnJvbU1haW5Eb2N1bWVudERvbWFpbjsKKyAgICBj
YXNlIFdlYktpdDo6SFRUUENvb2tpZUFjY2VwdFBvbGljeUV4Y2x1c2l2ZWx5RnJvbU1haW5Eb2N1
bWVudERvbWFpbjoKKyAgICAgICAgLy8gQ2FzdCByZXF1aXJlZCBiZWNhdXNlIG9mIENGTmV0d29y
a1NQSS4KKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PE5TSFRUUENvb2tpZUFjY2VwdFBvbGlj
eT4oTlNIVFRQQ29va2llQWNjZXB0UG9saWN5RXhjbHVzaXZlbHlGcm9tTWFpbkRvY3VtZW50RG9t
YWluKTsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9
CisKKyAgICByZXR1cm4gTlNIVFRQQ29va2llQWNjZXB0UG9saWN5TmV2ZXI7Cit9CisKKy0gKHZv
aWQpZmV0Y2hDb29raWVBY2NlcHRQb2xpY3k6KHZvaWQgKF4pKE5TSFRUUENvb2tpZUFjY2VwdFBv
bGljeSkpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICBfY29va2llU3RvcmFnZS0+Z2V0SFRUUENv
b2tpZUFjY2VwdFBvbGljeShbaGFuZGxlciA9IGFkb3B0TlMoW2NvbXBsZXRpb25IYW5kbGVyIGNv
cHldKV0oV2ViS2l0OjpIVFRQQ29va2llQWNjZXB0UG9saWN5IHBvbGljeSkgeworICAgICAgICBh
dXRvIHJhd0hhbmRsZXIgPSAodm9pZCAoXikoTlNIVFRQQ29va2llQWNjZXB0UG9saWN5KSloYW5k
bGVyLmdldCgpOworICAgICAgICByYXdIYW5kbGVyKGtpdENvb2tpZVBvbGljeVRvTlNDb29raWVQ
b2xpY3kocG9saWN5KSk7CisgICAgfSk7Cit9CisKKyNwcmFnbWEgbWFyayBXS09iamVjdCBwcm90
b2NvbCBpbXBsZW1lbnRhdGlvbgorCistIChBUEk6Ok9iamVjdCYpX2FwaU9iamVjdAoreworICAg
IHJldHVybiAqX2Nvb2tpZVN0b3JhZ2U7Cit9CisKK0BlbmQKKworI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLSFRUUENvb2tpZVN0b3JhZ2VJ
bnRlcm5hbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0hUVFBDb29r
aWVTdG9yYWdlSW50ZXJuYWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lOGEzMGJhZDI4ZWIxYTAyNDZjMjQxZWU3
NjZmZmJmMzQxODEwYmJhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS0hUVFBDb29raWVTdG9yYWdlSW50ZXJuYWwuaApAQCAtMCwwICsxLDQ5
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiV0tIVFRQQ29va2llU3RvcmFnZS5oIgorCisjaWYg
V0tfQVBJX0VOQUJMRUQKKworI2ltcG9ydCAiQVBJSFRUUENvb2tpZVN0b3JhZ2UuaCIKKyNpbXBv
cnQgIldLT2JqZWN0LmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitpbmxpbmUgV0tIVFRQQ29v
a2llU3RvcmFnZSAqd3JhcHBlcihBUEk6OkhUVFBDb29raWVTdG9yYWdlJiBjb29raWVTdG9yYWdl
KQoreworICAgIEFTU0VSVChbY29va2llU3RvcmFnZS53cmFwcGVyKCkgaXNLaW5kT2ZDbGFzczpb
V0tIVFRQQ29va2llU3RvcmFnZSBjbGFzc11dKTsKKyAgICByZXR1cm4gKFdLSFRUUENvb2tpZVN0
b3JhZ2UgKiljb29raWVTdG9yYWdlLndyYXBwZXIoKTsKK30KKworfQorCitAaW50ZXJmYWNlIFdL
SFRUUENvb2tpZVN0b3JhZ2UgKCkgPFdLT2JqZWN0PiB7CitAcGFja2FnZQorICAgIEFQSTo6T2Jq
ZWN0U3RvcmFnZTxBUEk6OkhUVFBDb29raWVTdG9yYWdlPiBfY29va2llU3RvcmFnZTsKK30KK0Bl
bmQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLUHJvY2Vzc1Bvb2wubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLUHJvY2Vzc1Bvb2wubW0KaW5kZXggM2Y0M2JmYzY1ZGQ3NDBiOTYwYzhhMDFhZTM2NDk3NDgx
NDNkZjdkNC4uOGY4N2RhY2U4MjcyZGViM2MyMjdmYTA1MzI1ODAzNDU2Y2ZiNDIxZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5t
bQpAQCAtMTk2LDcgKzE5Niw3IEBAIHN0YXRpYyBXZWJLaXQ6OkhUVFBDb29raWVBY2NlcHRQb2xp
Y3kgdG9IVFRQQ29va2llQWNjZXB0UG9saWN5KE5TSFRUUENvb2tpZUFjY2VwCiAKIC0gKHZvaWQp
X3NldENvb2tpZUFjY2VwdFBvbGljeTooTlNIVFRQQ29va2llQWNjZXB0UG9saWN5KXBvbGljeQog
ewotICAgIF9wcm9jZXNzUG9vbC0+c3VwcGxlbWVudDxXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQ
cm94eT4oKS0+c2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSh0b0hUVFBDb29raWVBY2NlcHRQb2xp
Y3kocG9saWN5KSk7CisgICAgX3Byb2Nlc3NQb29sLT5zdXBwbGVtZW50PFdlYktpdDo6V2ViQ29v
a2llTWFuYWdlclByb3h5PigpLT5zZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KFdlYkNvcmU6OlNl
c3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpLCB0b0hUVFBDb29raWVBY2NlcHRQb2xpY3kocG9s
aWN5KSwgW10oV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yKXt9KTsKIH0KIAogLSAoaWQpX29i
amVjdEZvckJ1bmRsZVBhcmFtZXRlcjooTlNTdHJpbmcgKilwYXJhbWV0ZXIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1t
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUu
bW0KaW5kZXggNzEzODE5ZTQ3NDBhZDM0ZDkwMThkYzg5MDM3MjE5MDQ5ZmRmMWJjNy4uMjM0Zjgw
ZWJmZTU4NGNjODYyMzUxNWU5MzdmZmYzMzMwYjliYTIwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KQEAg
LTI4LDYgKzI4LDcgQEAKIAogI2lmIFdLX0FQSV9FTkFCTEVECiAKKyNpbXBvcnQgIldLSFRUUENv
b2tpZVN0b3JhZ2VJbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tOU0FycmF5LmgiCiAjaW1wb3J0ICJX
S1dlYnNpdGVEYXRhUmVjb3JkSW50ZXJuYWwuaCIKICNpbXBvcnQgIldlYnNpdGVEYXRhRmV0Y2hP
cHRpb24uaCIKQEAgLTM4LDcgKzM5LDcgQEAgQGltcGxlbWVudGF0aW9uIFdLV2Vic2l0ZURhdGFT
dG9yZQogCiArIChXS1dlYnNpdGVEYXRhU3RvcmUgKilkZWZhdWx0RGF0YVN0b3JlCiB7Ci0gICAg
cmV0dXJuIFdlYktpdDo6d3JhcHBlcigqQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0
YVN0b3JlKCkuZ2V0KCkpOworICAgIHJldHVybiBXZWJLaXQ6OndyYXBwZXIoQVBJOjpXZWJzaXRl
RGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlKCkuZ2V0KCkpOwogfQogCiArIChXS1dlYnNpdGVE
YXRhU3RvcmUgKilub25QZXJzaXN0ZW50RGF0YVN0b3JlCkBAIC0xOTQsNiArMTk1LDExIEBAIC0g
KHZvaWQpX3NldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkOihCT09MKWVuYWJsZWQKICAg
ICBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldFJlc291cmNlTG9hZFN0
YXRpc3RpY3NFbmFibGVkKGVuYWJsZWQpOwogfQogCistIChXS0hUVFBDb29raWVTdG9yYWdlICop
X2h0dHBDb29raWVTdG9yYWdlCit7CisgICAgcmV0dXJuIFdlYktpdDo6d3JhcHBlcihfd2Vic2l0
ZURhdGFTdG9yZS0+aHR0cENvb2tpZVN0b3JhZ2UoKSk7Cit9CisKIEBlbmQKIAogI2VuZGlmIC8v
IFdLX0FQSV9FTkFCTEVECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oCmluZGV4IDQ5ZDliZTZh
ZDExOWIzYTExMjE1MmI2YmFmZTM4YWRlMjY2MmU2ZWIuLjA5OWIwNDU5ZWU2ZWEyZTZjZmY2Zjdk
NDFlMDAyMzA0NGI2ZTdlOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oCkBAIC0yOSw2
ICsyOSw3IEBACiAKIE5TX0FTU1VNRV9OT05OVUxMX0JFR0lOCiAKK0BjbGFzcyBXS0hUVFBDb29r
aWVTdG9yYWdlOwogQGNsYXNzIF9XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOwogCiB0
eXBlZGVmIE5TX09QVElPTlMoTlNVSW50ZWdlciwgX1dLV2Vic2l0ZURhdGFTdG9yZUZldGNoT3B0
aW9ucykgewpAQCAtNDMsNiArNDQsOSBAQCB0eXBlZGVmIE5TX09QVElPTlMoTlNVSW50ZWdlciwg
X1dLV2Vic2l0ZURhdGFTdG9yZUZldGNoT3B0aW9ucykgewogCiBAcHJvcGVydHkgKG5vbmF0b21p
Yywgc2V0dGVyPV9zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZDopIEJPT0wgX3Jlc291
cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjEyKSwg
aW9zKDEwLjApKTsKIAorLyohIEBhYnN0cmFjdCBSZXR1cm5zIHRoZSBjb29raWUgc3RvcmFnZSBy
ZXByZXNlbnRpbmcgSFRUUCBjb29raWVzIGluIHRoaXMgd2Vic2l0ZSBkYXRhIHN0b3JlLiAqLwor
QHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBXS0hUVFBDb29raWVTdG9yYWdlICpfaHR0
cENvb2tpZVN0b3JhZ2UgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhX
S19JT1NfVEJBKSk7CisKIEBlbmQKIAogTlNfQVNTVU1FX05PTk5VTExfRU5ECmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb29raWVNYW5hZ2VyLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvb2tpZU1hbmFnZXIu
Y3BwCmluZGV4IDc1YTY2ZWM2MThmMDVjODFiZTgzMTdiMmZmMmQwZDkzNDdlOTUxYTMuLmRkM2Uy
MTdjODI2ODYzMmZmZTA3MzM0ODBkZWZlYmVmMTgwYTI0NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvb2tpZU1hbmFnZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvb2tpZU1hbmFnZXIuY3BwCkBA
IC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyUHJpdmF0
ZS5oIgogI2luY2x1ZGUgIldlYktpdFdlYnNpdGVEYXRhUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldl
YnNpdGVEYXRhUmVjb3JkLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9TZXNzaW9uSUQuaD4KICNpbmNs
dWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgog
CkBAIC0xNzgsNyArMTc5LDcgQEAgdm9pZCB3ZWJraXRfY29va2llX21hbmFnZXJfc2V0X2FjY2Vw
dF9wb2xpY3koV2ViS2l0Q29va2llTWFuYWdlciogbWFuYWdlciwgV2ViS2kKICAgICBnX3JldHVy
bl9pZl9mYWlsKFdFQktJVF9JU19DT09LSUVfTUFOQUdFUihtYW5hZ2VyKSk7CiAKICAgICBmb3Ig
KGF1dG8qIHByb2Nlc3NQb29sIDogd2Via2l0V2Vic2l0ZURhdGFNYW5hZ2VyR2V0UHJvY2Vzc1Bv
b2xzKG1hbmFnZXItPnByaXYtPmRhdGFNYW5hZ2VyKSkKLSAgICAgICAgcHJvY2Vzc1Bvb2wtPnN1
cHBsZW1lbnQ8V2ViQ29va2llTWFuYWdlclByb3h5PigpLT5zZXRIVFRQQ29va2llQWNjZXB0UG9s
aWN5KHRvSFRUUENvb2tpZUFjY2VwdFBvbGljeShwb2xpY3kpKTsKKyAgICAgICAgcHJvY2Vzc1Bv
b2wtPnN1cHBsZW1lbnQ8V2ViQ29va2llTWFuYWdlclByb3h5PigpLT5zZXRIVFRQQ29va2llQWNj
ZXB0UG9saWN5KHRvSFRUUENvb2tpZUFjY2VwdFBvbGljeShwb2xpY3kpLCBbXShDYWxsYmFja0Jh
c2U6OkVycm9yKXt9KTsKIH0KIAogc3RhdGljIHZvaWQgd2Via2l0Q29va2llTWFuYWdlckdldEFj
Y2VwdFBvbGljeUNhbGxiYWNrKFdLSFRUUENvb2tpZUFjY2VwdFBvbGljeSBwb2xpY3ksIFdLRXJy
b3JSZWYsIHZvaWQqIGNvbnRleHQpCkBAIC0yMTIsNyArMjEzLDcgQEAgdm9pZCB3ZWJraXRfY29v
a2llX21hbmFnZXJfZ2V0X2FjY2VwdF9wb2xpY3koV2ViS2l0Q29va2llTWFuYWdlciogbWFuYWdl
ciwgR0NhbmMKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHByb2Nlc3NQb29sc1swXS0+
c3VwcGxlbWVudDxXZWJDb29raWVNYW5hZ2VyUHJveHk+KCktPmdldEhUVFBDb29raWVBY2NlcHRQ
b2xpY3koCisgICAgcHJvY2Vzc1Bvb2xzWzBdLT5zdXBwbGVtZW50PFdlYkNvb2tpZU1hbmFnZXJQ
cm94eT4oKS0+Z2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShXZWJDb3JlOjpTZXNzaW9uSUQ6OmRl
ZmF1bHRTZXNzaW9uSUQoKSwgCiAgICAgICAgIHRvR2VuZXJpY0NhbGxiYWNrRnVuY3Rpb248V0tI
VFRQQ29va2llQWNjZXB0UG9saWN5LCBIVFRQQ29va2llQWNjZXB0UG9saWN5Pih0YXNrLmxlYWtS
ZWYoKSwgd2Via2l0Q29va2llTWFuYWdlckdldEFjY2VwdFBvbGljeUNhbGxiYWNrKSk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9t
YXRpb25TZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dl
YkF1dG9tYXRpb25TZXNzaW9uLmNwcAppbmRleCA0OGNhZGM3MTI0ZjlkYmU2ODViYmRlNDhjYjNm
ZWUzZDE4MzkxNmQ4Li5hODMxODRhZjkwMmI0NzVjNDhlOGQwYWNmNzgwNjE3MWNiNGZiZWYxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0
aW9uU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1dG9tYXRpb24v
V2ViQXV0b21hdGlvblNlc3Npb24uY3BwCkBAIC03MzAsNyArNzMwLDcgQEAgdm9pZCBXZWJBdXRv
bWF0aW9uU2Vzc2lvbjo6YWRkU2luZ2xlQ29va2llKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywg
Y29uc3QgU3RyaW4KIAogICAgIC8vIEZJWE1FOiBVc2luZyBhY3RpdmVVUkwgaGVyZSB0d2ljZSBp
cyBiYXNpY2FsbHkgc2F5aW5nICJ0aGlzIGlzIGFsd2F5cyBpbiB0aGUgY29udGV4dCBvZiB0aGUg
bWFpbiBkb2N1bWVudCIKICAgICAvLyB3aGljaCBwcm9iYWJseSBpc24ndCBhY2N1cmF0ZS4KLSAg
ICBjb29raWVNYW5hZ2VyLT5zZXRDb29raWVzKFdlYkNvcmU6OlNlc3Npb25JRDo6ZGVmYXVsdFNl
c3Npb25JRCgpLCB7IGNvb2tpZSB9LCBhY3RpdmVVUkwsIGFjdGl2ZVVSTCk7CisgICAgY29va2ll
TWFuYWdlci0+c2V0Q29va2llcyhXZWJDb3JlOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQo
KSwgeyBjb29raWUgfSwgYWN0aXZlVVJMLCBhY3RpdmVVUkwsIFtdKENhbGxiYWNrQmFzZTo6RXJy
b3Ipe30pOwogCiAgICAgY2FsbGJhY2stPnNlbmRTdWNjZXNzKCk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkuY3BwCmluZGV4IDJlYWE1
Y2UzYmZhNTM1OTg0ZGYzZTBlNmM3NWRhNWIyMTkyNDY3MTkuLmUwMjNiODI1ZWU5ZjQ5MGQyMDdk
ZWEyOWE3ZjdmNTMxN2I4MmEzZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJDb29raWVNYW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJDb29raWVNYW5hZ2VyUHJveHkuY3BwCkBAIC0zMiw4ICszMiwxMSBAQAogI2luY2x1ZGUg
IldlYkNvb2tpZU1hbmFnZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYkNvb2tpZU1hbmFnZXJQ
cm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKKyNpbmNsdWRlIDxX
ZWJDb3JlL0Nvb2tpZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW5EYXRhLmg+
CiAKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY29u
c3QgY2hhciogV2ViQ29va2llTWFuYWdlclByb3h5OjpzdXBwbGVtZW50TmFtZSgpCkBAIC05NCw3
ICs5Nyw3IEBAIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpkZXJlZldlYkNvbnRleHRTdXBw
bGVtZW50KCkKICAgICBBUEk6Ok9iamVjdDo6ZGVyZWYoKTsKIH0KIAotdm9pZCBXZWJDb29raWVN
YW5hZ2VyUHJveHk6OmdldEhvc3RuYW1lc1dpdGhDb29raWVzKFdlYkNvcmU6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIEZ1bmN0aW9uPHZvaWQgKEFQSTo6QXJyYXkqLCBDYWxsYmFja0Jhc2U6OkVycm9y
KT4mJiBjYWxsYmFja0Z1bmN0aW9uKQordm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmdldEhv
c3RuYW1lc1dpdGhDb29raWVzKFNlc3Npb25JRCBzZXNzaW9uSUQsIEZ1bmN0aW9uPHZvaWQgKEFQ
STo6QXJyYXkqLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQogewog
ICAgIGF1dG8gY2FsbGJhY2sgPSBBcnJheUNhbGxiYWNrOjpjcmVhdGUoV1RGTW92ZShjYWxsYmFj
a0Z1bmN0aW9uKSk7CiAgICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFj
a0lEKCk7CkBAIC0xMTQsMzcgKzExNyw5NiBAQCB2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6
ZGlkR2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGhvcwogICAg
IGNhbGxiYWNrLT5wZXJmb3JtQ2FsbGJhY2tXaXRoUmV0dXJuVmFsdWUoQVBJOjpBcnJheTo6Y3Jl
YXRlU3RyaW5nQXJyYXkoaG9zdG5hbWVzKS5wdHIoKSk7CiB9CiAKLXZvaWQgV2ViQ29va2llTWFu
YWdlclByb3h5OjpkZWxldGVDb29raWVzRm9ySG9zdG5hbWUoV2ViQ29yZTo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgY29uc3QgU3RyaW5nJiBob3N0bmFtZSkKK3ZvaWQgV2ViQ29va2llTWFuYWdlclBy
b3h5OjpkZWxldGVDb29raWVzRm9ySG9zdG5hbWUoU2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3Qg
U3RyaW5nJiBob3N0bmFtZSkKIHsKICAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9OZXR3b3JraW5n
UHJvY2Vzc1JlbGF1bmNoaW5nSWZOZWNlc3NhcnkoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6
OkRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZShzZXNzaW9uSUQsIGhvc3RuYW1lKSk7CiB9CiAKLXZv
aWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpkZWxldGVBbGxDb29raWVzKFdlYkNvcmU6OlNlc3Np
b25JRCBzZXNzaW9uSUQpCit2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGVsZXRlQWxsQ29v
a2llcyhTZXNzaW9uSUQgc2Vzc2lvbklEKQogewogICAgIHByb2Nlc3NQb29sKCktPnNlbmRUb05l
dHdvcmtpbmdQcm9jZXNzUmVsYXVuY2hpbmdJZk5lY2Vzc2FyeShNZXNzYWdlczo6V2ViQ29va2ll
TWFuYWdlcjo6RGVsZXRlQWxsQ29va2llcyhzZXNzaW9uSUQpKTsKIH0KIAotdm9pZCBXZWJDb29r
aWVNYW5hZ2VyUHJveHk6OmRlbGV0ZUFsbENvb2tpZXNNb2RpZmllZFNpbmNlKFdlYkNvcmU6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQg
dGltZSkKK3ZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpkZWxldGVDb29raWUoU2Vzc2lvbklE
IHNlc3Npb25JRCwgY29uc3QgQ29va2llJiBjb29raWUsIEZ1bmN0aW9uPHZvaWQgKENhbGxiYWNr
QmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCit7CisgICAgYXV0byBjYWxsYmFjayA9
IFZvaWRDYWxsYmFjazo6Y3JlYXRlKFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbikpOworICAgIHVp
bnQ2NF90IGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgpOworICAgIG1fdm9pZENh
bGxiYWNrcy5zZXQoY2FsbGJhY2tJRCwgV1RGTW92ZShjYWxsYmFjaykpOworCisgICAgcHJvY2Vz
c1Bvb2woKS0+c2VuZFRvTmV0d29ya2luZ1Byb2Nlc3NSZWxhdW5jaGluZ0lmTmVjZXNzYXJ5KE1l
c3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpEZWxldGVDb29raWUoc2Vzc2lvbklELCBjb29raWUs
IGNhbGxiYWNrSUQpKTsKK30KKwordm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRlbGV0ZUFs
bENvb2tpZXNNb2RpZmllZFNpbmNlKFNlc3Npb25JRCBzZXNzaW9uSUQsIHN0ZDo6Y2hyb25vOjpz
eXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgdGltZSwgRnVuY3Rpb248dm9pZCAoQ2FsbGJhY2tCYXNl
OjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKK3sKKyAgICBhdXRvIGNhbGxiYWNrID0gVm9p
ZENhbGxiYWNrOjpjcmVhdGUoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSk7CisgICAgdWludDY0
X3QgY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7CisgICAgbV92b2lkQ2FsbGJh
Y2tzLnNldChjYWxsYmFja0lELCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisKKyAgICBwcm9jZXNzUG9v
bCgpLT5zZW5kVG9OZXR3b3JraW5nUHJvY2Vzc1JlbGF1bmNoaW5nSWZOZWNlc3NhcnkoTWVzc2Fn
ZXM6OldlYkNvb2tpZU1hbmFnZXI6OkRlbGV0ZUFsbENvb2tpZXNNb2RpZmllZFNpbmNlKHNlc3Np
b25JRCwgdGltZSwgY2FsbGJhY2tJRCkpOworfQorCit2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94
eTo6c2V0Q29va2llKFNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IENvb2tpZSYgY29va2llLCBG
dW5jdGlvbjx2b2lkIChDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQog
ewotICAgIHByb2Nlc3NQb29sKCktPnNlbmRUb05ldHdvcmtpbmdQcm9jZXNzUmVsYXVuY2hpbmdJ
Zk5lY2Vzc2FyeShNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6RGVsZXRlQWxsQ29va2llc01v
ZGlmaWVkU2luY2Uoc2Vzc2lvbklELCB0aW1lKSk7CisgICAgYXV0byBjYWxsYmFjayA9IFZvaWRD
YWxsYmFjazo6Y3JlYXRlKFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbikpOworICAgIHVpbnQ2NF90
IGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgpOworICAgIG1fdm9pZENhbGxiYWNr
cy5zZXQoY2FsbGJhY2tJRCwgV1RGTW92ZShjYWxsYmFjaykpOworCisgICAgcHJvY2Vzc1Bvb2wo
KS0+c2VuZFRvTmV0d29ya2luZ1Byb2Nlc3NSZWxhdW5jaGluZ0lmTmVjZXNzYXJ5KE1lc3NhZ2Vz
OjpXZWJDb29raWVNYW5hZ2VyOjpTZXRDb29raWUoc2Vzc2lvbklELCBjb29raWUsIGNhbGxiYWNr
SUQpKTsKIH0KIAotdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OnNldENvb2tpZXMoV2ViQ29y
ZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mIGNv
b2tpZXMsIGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsLCBjb25zdCBXZWJDb3JlOjpVUkwmIG1haW5E
b2N1bWVudFVSTCkKK3ZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpzZXRDb29raWVzKFNlc3Np
b25JRCBzZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxDb29raWU+JiBjb29raWVzLCBjb25zdCBVUkwm
IHVybCwgY29uc3QgVVJMJiBtYWluRG9jdW1lbnRVUkwsIEZ1bmN0aW9uPHZvaWQgKENhbGxiYWNr
QmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7Ci0gICAgcHJvY2Vzc1Bvb2woKS0+
c2VuZFRvTmV0d29ya2luZ1Byb2Nlc3NSZWxhdW5jaGluZ0lmTmVjZXNzYXJ5KE1lc3NhZ2VzOjpX
ZWJDb29raWVNYW5hZ2VyOjpTZXRDb29raWVzKHNlc3Npb25JRCwgY29va2llcywgdXJsLCBtYWlu
RG9jdW1lbnRVUkwpKTsKKyAgICBhdXRvIGNhbGxiYWNrID0gVm9pZENhbGxiYWNrOjpjcmVhdGUo
V1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSk7CisgICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IGNh
bGxiYWNrLT5jYWxsYmFja0lEKCk7CisgICAgbV92b2lkQ2FsbGJhY2tzLnNldChjYWxsYmFja0lE
LCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisKKyAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9OZXR3b3Jr
aW5nUHJvY2Vzc1JlbGF1bmNoaW5nSWZOZWNlc3NhcnkoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFn
ZXI6OlNldENvb2tpZXMoc2Vzc2lvbklELCBjb29raWVzLCB1cmwsIG1haW5Eb2N1bWVudFVSTCwg
Y2FsbGJhY2tJRCkpOwogfQogCi12b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6c3RhcnRPYnNl
cnZpbmdDb29raWVDaGFuZ2VzKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQpCit2b2lkIFdl
YkNvb2tpZU1hbmFnZXJQcm94eTo6Z2V0QWxsQ29va2llcyhTZXNzaW9uSUQgc2Vzc2lvbklELCBG
dW5jdGlvbjx2b2lkIChjb25zdCBWZWN0b3I8Q29va2llPiYsIENhbGxiYWNrQmFzZTo6RXJyb3Ip
PiYmIGNhbGxiYWNrRnVuY3Rpb24pCit7CisgICAgYXV0byBjYWxsYmFjayA9IEdldENvb2tpZXND
YWxsYmFjazo6Y3JlYXRlKFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbikpOworICAgIHVpbnQ2NF90
IGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgpOworICAgIG1fZ2V0Q29va2llc0Nh
bGxiYWNrcy5zZXQoY2FsbGJhY2tJRCwgV1RGTW92ZShjYWxsYmFjaykpOworCisgICAgcHJvY2Vz
c1Bvb2woKS0+c2VuZFRvTmV0d29ya2luZ1Byb2Nlc3NSZWxhdW5jaGluZ0lmTmVjZXNzYXJ5KE1l
c3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpHZXRBbGxDb29raWVzKHNlc3Npb25JRCwgY2FsbGJh
Y2tJRCkpOworfQorCit2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6Z2V0Q29va2llcyhTZXNz
aW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIHVybCwgRnVuY3Rpb248dm9pZCAoY29uc3QgVmVj
dG9yPENvb2tpZT4mLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQor
eworICAgIGF1dG8gY2FsbGJhY2sgPSBHZXRDb29raWVzQ2FsbGJhY2s6OmNyZWF0ZShXVEZNb3Zl
KGNhbGxiYWNrRnVuY3Rpb24pKTsKKyAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gY2FsbGJhY2st
PmNhbGxiYWNrSUQoKTsKKyAgICBtX2dldENvb2tpZXNDYWxsYmFja3Muc2V0KGNhbGxiYWNrSUQs
IFdURk1vdmUoY2FsbGJhY2spKTsKKworICAgIHByb2Nlc3NQb29sKCktPnNlbmRUb05ldHdvcmtp
bmdQcm9jZXNzUmVsYXVuY2hpbmdJZk5lY2Vzc2FyeShNZXNzYWdlczo6V2ViQ29va2llTWFuYWdl
cjo6R2V0Q29va2llcyhzZXNzaW9uSUQsIHVybCwgY2FsbGJhY2tJRCkpOworfQorCit2b2lkIFdl
YkNvb2tpZU1hbmFnZXJQcm94eTo6ZGlkU2V0Q29va2llcyh1aW50NjRfdCBjYWxsYmFja0lEKQor
eworICAgIG1fdm9pZENhbGxiYWNrcy50YWtlKGNhbGxiYWNrSUQpLT5wZXJmb3JtQ2FsbGJhY2so
KTsKK30KKwordm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRpZEdldENvb2tpZXMoY29uc3Qg
VmVjdG9yPENvb2tpZT4mIGNvb2tpZXMsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit7CisgICAgbV9n
ZXRDb29raWVzQ2FsbGJhY2tzLnRha2UoY2FsbGJhY2tJRCktPnBlcmZvcm1DYWxsYmFja1dpdGhS
ZXR1cm5WYWx1ZShjb29raWVzKTsKK30KKwordm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRp
ZERlbGV0ZUNvb2tpZXModWludDY0X3QgY2FsbGJhY2tJRCkKK3sKKyAgICBtX3ZvaWRDYWxsYmFj
a3MudGFrZShjYWxsYmFja0lEKS0+cGVyZm9ybUNhbGxiYWNrKCk7Cit9CisKK3ZvaWQgV2ViQ29v
a2llTWFuYWdlclByb3h5OjpzdGFydE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMoU2Vzc2lvbklEIHNl
c3Npb25JRCkKIHsKICAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9OZXR3b3JraW5nUHJvY2Vzc1Jl
bGF1bmNoaW5nSWZOZWNlc3NhcnkoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OlN0YXJ0T2Jz
ZXJ2aW5nQ29va2llQ2hhbmdlcyhzZXNzaW9uSUQpKTsKIH0KIAotdm9pZCBXZWJDb29raWVNYW5h
Z2VyUHJveHk6OnN0b3BPYnNlcnZpbmdDb29raWVDaGFuZ2VzKFdlYkNvcmU6OlNlc3Npb25JRCBz
ZXNzaW9uSUQpCit2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6c3RvcE9ic2VydmluZ0Nvb2tp
ZUNoYW5nZXMoU2Vzc2lvbklEIHNlc3Npb25JRCkKIHsKICAgICBwcm9jZXNzUG9vbCgpLT5zZW5k
VG9OZXR3b3JraW5nUHJvY2Vzc1JlbGF1bmNoaW5nSWZOZWNlc3NhcnkoTWVzc2FnZXM6OldlYkNv
b2tpZU1hbmFnZXI6OlN0b3BPYnNlcnZpbmdDb29raWVDaGFuZ2VzKHNlc3Npb25JRCkpOwogfQog
Ci12b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6c2V0Q29va2llT2JzZXJ2ZXJDYWxsYmFjayhX
ZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+JiYgY2Fs
bGJhY2spCit2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6c2V0Q29va2llT2JzZXJ2ZXJDYWxs
YmFjayhTZXNzaW9uSUQgc2Vzc2lvbklELCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+JiYgY2FsbGJh
Y2spCiB7CiAgICAgaWYgKGNhbGxiYWNrKQogICAgICAgICBtX2Nvb2tpZU9ic2VydmVycy5zZXQo
c2Vzc2lvbklELCBXVEZNb3ZlKGNhbGxiYWNrKSk7CkBAIC0xNTIsMTQgKzIxNCwxNCBAQCB2b2lk
IFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6c2V0Q29va2llT2JzZXJ2ZXJDYWxsYmFjayhXZWJDb3Jl
OjpTZXNzaW9uSUQgc2Vzc2lvbgogICAgICAgICBtX2Nvb2tpZU9ic2VydmVycy5yZW1vdmUoc2Vz
c2lvbklEKTsKIH0KIAotdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmNvb2tpZXNEaWRDaGFu
Z2UoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCkKK3ZvaWQgV2ViQ29va2llTWFuYWdlclBy
b3h5Ojpjb29raWVzRGlkQ2hhbmdlKFNlc3Npb25JRCBzZXNzaW9uSUQpCiB7CiAgICAgbV9jbGll
bnQuY29va2llc0RpZENoYW5nZSh0aGlzKTsKICAgICBpZiAoYXV0byBjYWxsYmFjayA9IG1fY29v
a2llT2JzZXJ2ZXJzLmdldChzZXNzaW9uSUQpKQogICAgICAgICBjYWxsYmFjaygpOwogfQogCi12
b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6c2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShIVFRQ
Q29va2llQWNjZXB0UG9saWN5IHBvbGljeSkKK3ZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5Ojpz
ZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KFNlc3Npb25JRCwgSFRUUENvb2tpZUFjY2VwdFBvbGlj
eSBwb2xpY3ksIEZ1bmN0aW9uPHZvaWQgKENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNr
RnVuY3Rpb24pCiB7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgaWYgKCFwcm9jZXNzUG9vbCgp
LT5pc1VzaW5nVGVzdGluZ05ldHdvcmtTZXNzaW9uKCkpCkBAIC0xNzIsMTEgKzIzNCwxNiBAQCB2
b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6c2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShIVFRQ
Q29va2llQWNjZXB0UG9saWN5IHBvbAogICAgIC8vIFRoZSBwb2xpY3kgaXMgbm90IHNlbnQgdG8g
bmV3bHkgY3JlYXRlZCBwcm9jZXNzZXMgKG9ubHkgU291cCBkb2VzIHRoYXQgdmlhIHNldEluaXRp
YWxIVFRQQ29va2llQWNjZXB0UG9saWN5KCkpLiBUaGlzIGlzIG5vdCBhIHNlcmlvdXMgcHJvYmxl
bSwgYmVjYXVzZToKICAgICAvLyAtIFdoZW4gdGVzdGluZywgd2Ugb25seSBoYXZlIG9uZSBXZWJQ
cm9jZXNzIGFuZCBvbmUgTmV0d29ya1Byb2Nlc3MsIGFuZCBXZWJLaXRUZXN0UnVubmVyIG5ldmVy
IHJlc3RhcnRzIHRoZW07CiAgICAgLy8gLSBXaGVuIG5vdCB0ZXN0aW5nLCBDb2NvYSBoYXMgdGhl
IHBvbGljeSBwZXJzaXN0ZWQsIGFuZCB0aHVzIG5ldyBwcm9jZXNzZXMgdXNlIGl0IChldmVuIGZv
ciBlcGhlbWVyYWwgc2Vzc2lvbnMpLgotICAgIHByb2Nlc3NQb29sKCktPnNlbmRUb0FsbFByb2Nl
c3NlcyhNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6U2V0SFRUUENvb2tpZUFjY2VwdFBvbGlj
eShwb2xpY3kpKTsKLSAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9OZXR3b3JraW5nUHJvY2VzcyhN
ZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6U2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShwb2xp
Y3kpKTsKKyAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6Oldl
YkNvb2tpZU1hbmFnZXI6OlNldEhUVFBDb29raWVBY2NlcHRQb2xpY3kocG9saWN5LCAwKSk7CisK
KyAgICBhdXRvIGNhbGxiYWNrID0gVm9pZENhbGxiYWNrOjpjcmVhdGUoV1RGTW92ZShjYWxsYmFj
a0Z1bmN0aW9uKSk7CisgICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFj
a0lEKCk7CisgICAgbV92b2lkQ2FsbGJhY2tzLnNldChjYWxsYmFja0lELCBXVEZNb3ZlKGNhbGxi
YWNrKSk7CisKKyAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9OZXR3b3JraW5nUHJvY2VzcyhNZXNz
YWdlczo6V2ViQ29va2llTWFuYWdlcjo6U2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShwb2xpY3ks
IGNhbGxiYWNrSUQpKTsKIH0KIAotdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmdldEhUVFBD
b29raWVBY2NlcHRQb2xpY3koRnVuY3Rpb248dm9pZCAoSFRUUENvb2tpZUFjY2VwdFBvbGljeSwg
Q2FsbGJhY2tCYXNlOjpFcnJvcik+IGNhbGxiYWNrRnVuY3Rpb24pCit2b2lkIFdlYkNvb2tpZU1h
bmFnZXJQcm94eTo6Z2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShTZXNzaW9uSUQsIEZ1bmN0aW9u
PHZvaWQgKEhUVFBDb29raWVBY2NlcHRQb2xpY3ksIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNh
bGxiYWNrRnVuY3Rpb24pCiB7CiAgICAgYXV0byBjYWxsYmFjayA9IEhUVFBDb29raWVBY2NlcHRQ
b2xpY3lDYWxsYmFjazo6Y3JlYXRlKFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbikpOwogCkBAIC0x
ODgsMTMgKzI1NSwxMiBAQCB2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6Z2V0SFRUUENvb2tp
ZUFjY2VwdFBvbGljeShGdW5jdGlvbjx2b2lkIChIVFRQQ29va2llQQogCiB2b2lkIFdlYkNvb2tp
ZU1hbmFnZXJQcm94eTo6ZGlkR2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSh1aW50MzJfdCBwb2xp
Y3ksIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiB7Ci0gICAgUmVmUHRyPEhUVFBDb29raWVBY2NlcHRQ
b2xpY3lDYWxsYmFjaz4gY2FsbGJhY2sgPSBtX2h0dHBDb29raWVBY2NlcHRQb2xpY3lDYWxsYmFj
a3MudGFrZShjYWxsYmFja0lEKTsKLSAgICBpZiAoIWNhbGxiYWNrKSB7Ci0gICAgICAgIC8vIEZJ
WE1FOiBMb2cgZXJyb3Igb3IgYXNzZXJ0LgotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIG1f
aHR0cENvb2tpZUFjY2VwdFBvbGljeUNhbGxiYWNrcy50YWtlKGNhbGxiYWNrSUQpLT5wZXJmb3Jt
Q2FsbGJhY2tXaXRoUmV0dXJuVmFsdWUocG9saWN5KTsKK30KIAotICAgIGNhbGxiYWNrLT5wZXJm
b3JtQ2FsbGJhY2tXaXRoUmV0dXJuVmFsdWUocG9saWN5KTsKK3ZvaWQgV2ViQ29va2llTWFuYWdl
clByb3h5OjpkaWRTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHVpbnQ2NF90IGNhbGxiYWNrSUQp
Cit7CisgICAgbV92b2lkQ2FsbGJhY2tzLnRha2UoY2FsbGJhY2tJRCktPnBlcmZvcm1DYWxsYmFj
aygpOwogfQogCiB2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6c2V0Q29va2llU3RvcmFnZVBh
cnRpdGlvbmluZ0VuYWJsZWQoYm9vbCBlbmFibGVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5oCmluZGV4IGNmNzk4ZDdjY2NjNzE1NDE1OWI5
ZDYxMmRmZmRiYjg2YWVkMWZlNzEuLmZkZjg5MWUxNTg5YWMwZGQ3Mjk2ZjkzYTdmNGY3ZmM3NWZl
MjkxZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVNYW5h
Z2VyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdl
clByb3h5LmgKQEAgLTU1LDYgKzU1LDcgQEAgY2xhc3MgV2ViUHJvY2Vzc1Byb3h5OwogCiB0eXBl
ZGVmIEdlbmVyaWNDYWxsYmFjazxBUEk6OkFycmF5Kj4gQXJyYXlDYWxsYmFjazsKIHR5cGVkZWYg
R2VuZXJpY0NhbGxiYWNrPEhUVFBDb29raWVBY2NlcHRQb2xpY3k+IEhUVFBDb29raWVBY2NlcHRQ
b2xpY3lDYWxsYmFjazsKK3R5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPGNvbnN0IFZlY3RvcjxXZWJD
b3JlOjpDb29raWU+Jj4gR2V0Q29va2llc0NhbGxiYWNrOwogCiBjbGFzcyBXZWJDb29raWVNYW5h
Z2VyUHJveHkgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpDb29r
aWVNYW5hZ2VyPiwgcHVibGljIFdlYkNvbnRleHRTdXBwbGVtZW50LCBwcml2YXRlIElQQzo6TWVz
c2FnZVJlY2VpdmVyIHsKIHB1YmxpYzoKQEAgLTY2LDE0ICs2NywyMCBAQCBwdWJsaWM6CiAgICAg
dm9pZCBpbml0aWFsaXplQ2xpZW50KGNvbnN0IFdLQ29va2llTWFuYWdlckNsaWVudEJhc2UqKTsK
ICAgICAKICAgICB2b2lkIGdldEhvc3RuYW1lc1dpdGhDb29raWVzKFdlYkNvcmU6OlNlc3Npb25J
RCwgRnVuY3Rpb248dm9pZCAoQVBJOjpBcnJheSosIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsK
KyAgICB2b2lkIGRlbGV0ZUNvb2tpZShXZWJDb3JlOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6
OkNvb2tpZSYsIEZ1bmN0aW9uPHZvaWQgKENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKICAgICB2
b2lkIGRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZShXZWJDb3JlOjpTZXNzaW9uSUQsIGNvbnN0IFN0
cmluZyYgaG9zdG5hbWUpOwogICAgIHZvaWQgZGVsZXRlQWxsQ29va2llcyhXZWJDb3JlOjpTZXNz
aW9uSUQpOwotICAgIHZvaWQgZGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2UoV2ViQ29yZTo6
U2Vzc2lvbklELCBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50KTsKKyAgICB2
b2lkIGRlbGV0ZUFsbENvb2tpZXNNb2RpZmllZFNpbmNlKFdlYkNvcmU6OlNlc3Npb25JRCwgc3Rk
OjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCwgRnVuY3Rpb248dm9pZCAoQ2FsbGJh
Y2tCYXNlOjpFcnJvcik+JiYpOwogCi0gICAgdm9pZCBzZXRDb29raWVzKFdlYkNvcmU6OlNlc3Np
b25JRCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mLCBjb25zdCBXZWJDb3JlOjpVUkwm
LCBjb25zdCBXZWJDb3JlOjpVUkwmIG1haW5Eb2N1bWVudFVSTCk7CisgICAgdm9pZCBzZXRDb29r
aWUoV2ViQ29yZTo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpDb29raWUmLCBGdW5jdGlvbjx2
b2lkIChDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CisgICAgdm9pZCBzZXRDb29raWVzKFdlYkNv
cmU6OlNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mLCBjb25zdCBXZWJD
b3JlOjpVUkwmLCBjb25zdCBXZWJDb3JlOjpVUkwmIG1haW5Eb2N1bWVudFVSTCwgRnVuY3Rpb248
dm9pZCAoQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOworCisgICAgdm9pZCBnZXRBbGxDb29raWVz
KFdlYkNvcmU6OlNlc3Npb25JRCwgRnVuY3Rpb248dm9pZCAoY29uc3QgVmVjdG9yPFdlYkNvcmU6
OkNvb2tpZT4mLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7Cisg
ICAgdm9pZCBnZXRDb29raWVzKFdlYkNvcmU6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6VVJM
JiwgRnVuY3Rpb248dm9pZCAoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mLCBDYWxsYmFj
a0Jhc2U6OkVycm9yKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7CisKKyAgICB2b2lkIHNldEhUVFBD
b29raWVBY2NlcHRQb2xpY3koV2ViQ29yZTo6U2Vzc2lvbklELCBIVFRQQ29va2llQWNjZXB0UG9s
aWN5LCBGdW5jdGlvbjx2b2lkIChDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CisgICAgdm9pZCBn
ZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KFdlYkNvcmU6OlNlc3Npb25JRCwgRnVuY3Rpb248dm9p
ZCAoSFRUUENvb2tpZUFjY2VwdFBvbGljeSwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwogCi0g
ICAgdm9pZCBzZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KEhUVFBDb29raWVBY2NlcHRQb2xpY3kp
OwotICAgIHZvaWQgZ2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShGdW5jdGlvbjx2b2lkIChIVFRQ
Q29va2llQWNjZXB0UG9saWN5LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4pOwogICAgIHZvaWQgc2V0
Q29va2llU3RvcmFnZVBhcnRpdGlvbmluZ0VuYWJsZWQoYm9vbCk7CiAKICAgICB2b2lkIHN0YXJ0
T2JzZXJ2aW5nQ29va2llQ2hhbmdlcyhXZWJDb3JlOjpTZXNzaW9uSUQpOwpAQCAtOTUsNiArMTAy
LDExIEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRHZXRIb3N0bmFtZXNXaXRoQ29va2llcyhjb25z
dCBWZWN0b3I8U3RyaW5nPiYsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwogICAgIHZvaWQgZGlkR2V0
SFRUUENvb2tpZUFjY2VwdFBvbGljeSh1aW50MzJfdCBwb2xpY3ksIHVpbnQ2NF90IGNhbGxiYWNr
SUQpOwogCisgICAgdm9pZCBkaWRTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHVpbnQ2NF90IGNh
bGxiYWNrSUQpOworICAgIHZvaWQgZGlkU2V0Q29va2llcyh1aW50NjRfdCBjYWxsYmFja0lEKTsK
KyAgICB2b2lkIGRpZEdldENvb2tpZXMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mLCB1
aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICB2b2lkIGRpZERlbGV0ZUNvb2tpZXModWludDY0X3Qg
Y2FsbGJhY2tJRCk7CisKICAgICB2b2lkIGNvb2tpZXNEaWRDaGFuZ2UoV2ViQ29yZTo6U2Vzc2lv
bklEKTsKIAogICAgIC8vIFdlYkNvbnRleHRTdXBwbGVtZW50CkBAIC0xMTMsNiArMTI1LDggQEAg
cHJpdmF0ZToKIAogICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxBcnJheUNhbGxiYWNrPj4g
bV9hcnJheUNhbGxiYWNrczsKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8SFRUUENvb2tp
ZUFjY2VwdFBvbGljeUNhbGxiYWNrPj4gbV9odHRwQ29va2llQWNjZXB0UG9saWN5Q2FsbGJhY2tz
OworICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxWb2lkQ2FsbGJhY2s+PiBtX3ZvaWRDYWxs
YmFja3M7CisgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPEdldENvb2tpZXNDYWxsYmFjaz4+
IG1fZ2V0Q29va2llc0NhbGxiYWNrczsKIAogICAgIEhhc2hNYXA8V2ViQ29yZTo6U2Vzc2lvbklE
LCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+PiBtX2Nvb2tpZU9ic2VydmVyczsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5tZXNzYWdl
cy5pbiBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkubWVz
c2FnZXMuaW4KaW5kZXggMTJlMDA5MDE4Yjc0ZGM1ZTlhNmQ2MGRiNjhkMmFiNDRlMmYxYTQzZi4u
ZGNjYmNmMjllMDc2Njk3NGI3NDM1ODcyMTJiMTJjM2JmNGNiYzFlMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5Lm1lc3Nh
Z2VzLmluCkBAIC0yMyw2ICsyMywxMSBAQAogbWVzc2FnZXMgLT4gV2ViQ29va2llTWFuYWdlclBy
b3h5IHsKICAgICBEaWRHZXRIb3N0bmFtZXNXaXRoQ29va2llcyhWZWN0b3I8U3RyaW5nPiBob3N0
bmFtZXMsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwogICAgIERpZEdldEhUVFBDb29raWVBY2NlcHRQ
b2xpY3kodWludDMyX3QgcG9saWN5LCB1aW50NjRfdCBjYWxsYmFja0lEKTsKLSAgICAKKworICAg
IERpZFNldEhUVFBDb29raWVBY2NlcHRQb2xpY3kodWludDY0X3QgY2FsbGJhY2tJRCk7CisgICAg
RGlkRGVsZXRlQ29va2llcyh1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICBEaWRTZXRDb29raWVz
KHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAgIERpZEdldENvb2tpZXMoVmVjdG9yPFdlYkNvcmU6
OkNvb2tpZT4gY29va2llcywgdWludDY0X3QgY2FsbGJhY2tJRCk7CisKICAgICBDb29raWVzRGlk
Q2hhbmdlKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYkZyYW1lUHJveHkuaAppbmRleCA2YmY5OTM4NjJiN2VhY2E1MWE3NWI1OTAwZmEz
Zjc0MTY3OWJkNWZlLi41NWI1YjY3ZTBiMmY5NWI5NzIyNDVkZTVjOGRjY2E3OGI4ZDcxNmZiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmgKQEAgLTMxLDYgKzMxLDcg
QEAKICNpbmNsdWRlICJXZWJGcmFtZUxpc3RlbmVyUHJveHkuaCIKICNpbmNsdWRlIDxXZWJDb3Jl
L0ZyYW1lTG9hZGVyVHlwZXMuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUg
PHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Bvb2wuY3BwCmluZGV4IGY2OTYyMzFiYTA1OTg2MWUxOGZlZmM0YWI2ZmJmODIzMTM2OTFl
NzcuLmFhYzZiYTViM2MxNTIxODI4N2I5ZDM1ODA2ODU3ZjVkOWQwNTliZTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAtMzAsNiArMzAsNyBAQAog
I2luY2x1ZGUgIkFQSUF1dG9tYXRpb25DbGllbnQuaCIKICNpbmNsdWRlICJBUElDdXN0b21Qcm90
b2NvbE1hbmFnZXJDbGllbnQuaCIKICNpbmNsdWRlICJBUElEb3dubG9hZENsaWVudC5oIgorI2lu
Y2x1ZGUgIkFQSUhUVFBDb29raWVTdG9yYWdlLmgiCiAjaW5jbHVkZSAiQVBJTGVnYWN5Q29udGV4
dEhpc3RvcnlDbGllbnQuaCIKICNpbmNsdWRlICJBUElQYWdlQ29uZmlndXJhdGlvbi5oIgogI2lu
Y2x1ZGUgIkFQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oIgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAppbmRleCA4ODVhZDNjZWJiMzYxNzlkMWQ2ZGNiNjc1ZWM1
YjgxMzlkYjY1ZjY5Li5lMGUxOTI2ZDUzZTQxODI4MmMyZWIxY2JiMGQ1MWM1MWNlMGJlNTU5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaApAQCAtNzYsNiArNzYs
NyBAQCBuYW1lc3BhY2UgQVBJIHsKIGNsYXNzIEF1dG9tYXRpb25DbGllbnQ7CiBjbGFzcyBDdXN0
b21Qcm90b2NvbE1hbmFnZXJDbGllbnQ7CiBjbGFzcyBEb3dubG9hZENsaWVudDsKK2NsYXNzIEhU
VFBDb29raWVTdG9yYWdlOwogY2xhc3MgTGVnYWN5Q29udGV4dEhpc3RvcnlDbGllbnQ7CiBjbGFz
cyBQYWdlQ29uZmlndXJhdGlvbjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAppbmRleCA3YmFhZjg1NDU0
MmQ2NzhhZWZlYWY0ZjI1OGFkN2YxNGNhMjA1MWVjLi42MzMyZjdkYjg2MGJiMzNkNTAwOWM0ZTU3
YzA1ZWRkMmExZDMyMTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
c2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAj
aW5jbHVkZSAiQVBJV2Vic2l0ZURhdGFSZWNvcmQuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vz
c01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiU3RvcmFnZU1hbmFnZXIuaCIKKyNpbmNsdWRlICJXZWJD
b29raWVNYW5hZ2VyUHJveHkuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzTWVzc2FnZXMuaCIKICNp
bmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgogI2luY2x1ZGUgIldlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZS5oIgpAQCAtMTA1LDYgKzEwNiwyNyBAQCBXZWJzaXRlRGF0YVN0b3JlOjp+V2Vi
c2l0ZURhdGFTdG9yZSgpCiAgICAgfQogfQogCitSZWY8V2ViUHJvY2Vzc1Bvb2w+IFdlYnNpdGVE
YXRhU3RvcmU6OnByb2Nlc3NQb29sRm9yQ29va2llU3RvcmFnZU9wZXJhdGlvbnMoKQoreworICAg
IC8vIE91ciBjb25jZXB0cyBvZiBXZWJQcm9jZXNzLCBXZWJQcm9jZXNzUG9vbCwgV2Vic2l0ZURh
dGFTdG9yZSwgYW5kIFNlc3Npb25JRHMgaGF2ZSBhbGwgc3RhcnRlZCB0byBvdmVybGFwCisgICAg
Ly8gd2l0aG91dCBjbGVhciBkaXZpc2lvbnMgb2YgcmVzcG9uc2liaWxpdGllcy4KKyAgICAvLyBJ
biBwcmFjdGljZSwgbXVsdGlwbGUgV2ViUHJvY2Vzc1Bvb2xzIGNhbiBjb250YWluICJ0aGUgc2Ft
ZSBzZXNzaW9uIiwgZXNwZWNpYWxseSBzaW5jZSB0aGVyZSBpcyBjdXJyZW50bHkKKyAgICAvLyBv
bmx5IGEgc2luZ2xlIGRlZmF1bHQgZ2xvYmFsIFNlc3Npb25JRC4KKyAgICAvLworICAgIC8vIFRo
aXMgbWVhbnMgdGhhdCBtdWx0aXBsZSBOZXR3b3JrUHJvY2Vzc2VzIGNhbiBiZSB1c2luZyB0aGUg
c2FtZSBzZXNzaW9uLCB3aGljaCBtZWFucyB0aGF0IG11bHRpcGxlCisgICAgLy8gTmV0d29ya1By
b2Nlc3NlcyBjYW4gYmUgcmVmZXJyaW5nIHRvIHRoZSBzYW1lIHBsYXRmb3JtIGNvb2tpZSBzdG9y
YWdlLgorICAgIC8vCisgICAgLy8gV2hpbGUgdGhpcyBtYXkgY2F1c2UgY29tcGxpY2F0aW9ucyB3
aXRoIGZ1dHVyZSBBUElzIGl0IGlzIGFjdHVhbGx5IGZpbmUgZm9yIGltcGxlbWVudGluZyB0aGUg
V0tIVFRQQ29va2llU3RvcmFnZSBBUEkKKyAgICAvLyBiZWNhdXNlIHdlIG9ubHkgbmVlZCBvbmUg
TmV0d29ya1Byb2Nlc3MgdG8gc3VjY2Vzc2Z1bGx5IG1ha2UgYSByZXF1ZXN0ZWQgcGxhdGZvcm0g
Y29va2llIHN0b3JhZ2UgY2hhbmdlLgorICAgIC8vCisgICAgLy8gRklYTUU6IFdlIG5lZWQgdG8g
c3RhcnQgdG8gdW5yYXZlbCB0aGlzIG1lc3MgZ29pbmcgZm9yd2FyZC4KKworICAgIGF1dG8gcG9v
bHMgPSBwcm9jZXNzUG9vbHMoMSk7CisgICAgQVNTRVJUKCFwb29scy5pc0VtcHR5KCkpOworCisg
ICAgcmV0dXJuICoqcG9vbHMuYmVnaW4oKTsKK30KKwogdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpy
ZXNvbHZlRGlyZWN0b3JpZXNJZk5lY2Vzc2FyeSgpCiB7CiAgICAgaWYgKG1faGFzUmVzb2x2ZWRE
aXJlY3RvcmllcykKQEAgLTExMDgsNyArMTEzMCw3IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6
d2ViUHJvY2Vzc0RpZENsb3NlQ29ubmVjdGlvbihXZWJQcm9jZXNzUHJveHkmIHdlYlByb2Nlc3NQ
CiAgICAgICAgIG1fc3RvcmFnZU1hbmFnZXItPnByb2Nlc3NEaWRDbG9zZUNvbm5lY3Rpb24od2Vi
UHJvY2Vzc1Byb3h5LCBjb25uZWN0aW9uKTsKIH0KIAotSGFzaFNldDxSZWZQdHI8V2ViUHJvY2Vz
c1Bvb2w+PiBXZWJzaXRlRGF0YVN0b3JlOjpwcm9jZXNzUG9vbHMoKSBjb25zdAorSGFzaFNldDxS
ZWZQdHI8V2ViUHJvY2Vzc1Bvb2w+PiBXZWJzaXRlRGF0YVN0b3JlOjpwcm9jZXNzUG9vbHMoc2l6
ZV90IGNvdW50KSBjb25zdAogewogICAgIEhhc2hTZXQ8UmVmUHRyPFdlYlByb2Nlc3NQb29sPj4g
cHJvY2Vzc1Bvb2xzOwogICAgIGZvciAoYXV0byYgcHJvY2VzcyA6IHByb2Nlc3NlcygpKQpAQCAt
MTEyMiwxMSArMTE0NCwyMCBAQCBIYXNoU2V0PFJlZlB0cjxXZWJQcm9jZXNzUG9vbD4+IFdlYnNp
dGVEYXRhU3RvcmU6OnByb2Nlc3NQb29scygpIGNvbnN0CiAgICAgICAgICAgICAgICAgICAgIHBy
b2Nlc3NQb29scy5hZGQocHJvY2Vzc1Bvb2wpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgaWYgKCZBUEk6OldlYnNpdGVE
YXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmUoKS0+d2Vic2l0ZURhdGFTdG9yZSgpID09IHRoaXMp
IHsKKyAgICAgICAgICAgICAgICAvLyBJZiBhIHByb2Nlc3MgcG9vbCBkb2Vzbid0IGhhdmUgYW4g
ZXhwbGljaXQgZGF0YSBzdG9yZSBhbmQgdGhpcyBpcyB0aGUgZGVmYXVsdCBXZWJzaXRlRGF0YVN0
b3JlLAorICAgICAgICAgICAgICAgIC8vIGFkZCB0aGF0IHByb2Nlc3MgcG9vbCB0byB0aGUgc2V0
LgorICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGJlaGF2aW9yIGlzIHdlaXJkIGFuZCBu
ZWNlc3NpdGF0ZWQgYnkgdGhlIGZhY3QgdGhhdCBwcm9jZXNzIHBvb2xzIGRvbid0IGFsd2F5cwor
ICAgICAgICAgICAgICAgIC8vIGhhdmUgYSBkYXRhIHN0b3JlOyB0aGV5IHNob3VsZC4KKyAgICAg
ICAgICAgICAgICBwcm9jZXNzUG9vbHMuYWRkKHByb2Nlc3NQb29sKTsKICAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgaWYgKHByb2Nlc3NQb29scy5zaXplKCkgPT0gY291bnQpCisgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAocHJvY2Vzc1Bvb2xz
LmlzRW1wdHkoKSkgeworICAgIGlmIChwcm9jZXNzUG9vbHMuaXNFbXB0eSgpICYmIGNvdW50KSB7
CiAgICAgICAgIGF1dG8gcHJvY2Vzc1Bvb2wgPSBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlKEFQSTo6
UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjcmVhdGVXaXRoV2Vic2l0ZURhdGFTdG9yZUNvbmZp
Z3VyYXRpb24obV9jb25maWd1cmF0aW9uKSk7CiAgICAgICAgIHByb2Nlc3NQb29scy5hZGQocHJv
Y2Vzc1Bvb2wucHRyKCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCmluZGV4IDk3NWJhYzhkODliYjFl
Y2M2NTYyNmRkNDA3NGFmOWM3NmFmODM0NTcuLjhkMTNiY2U0OTgyOWIzY2FkYWIwN2Y4NDVhYjI0
YmJjOTM4NTg0N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRl
RGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaApAQCAtMTAzLDYgKzEwMyw4IEBAIHB1YmxpYzoK
IAogICAgIFN0b3JhZ2VNYW5hZ2VyKiBzdG9yYWdlTWFuYWdlcigpIHsgcmV0dXJuIG1fc3RvcmFn
ZU1hbmFnZXIuZ2V0KCk7IH0KIAorICAgIFJlZjxXZWJQcm9jZXNzUG9vbD4gcHJvY2Vzc1Bvb2xG
b3JDb29raWVTdG9yYWdlT3BlcmF0aW9ucygpOworCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFdl
YnNpdGVEYXRhU3RvcmUoV2ViQ29yZTo6U2Vzc2lvbklEKTsKICAgICBleHBsaWNpdCBXZWJzaXRl
RGF0YVN0b3JlKENvbmZpZ3VyYXRpb24pOwpAQCAtMTE5LDcgKzEyMSw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBwbGF0Zm9ybURlc3Ryb3koKTsKICAgICBzdGF0aWMgdm9pZCBwbGF0Zm9ybVJlbW92
ZVJlY2VudFNlYXJjaGVzKHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQpOwog
Ci0gICAgSGFzaFNldDxSZWZQdHI8V2ViUHJvY2Vzc1Bvb2w+PiBwcm9jZXNzUG9vbHMoKSBjb25z
dDsKKyAgICBIYXNoU2V0PFJlZlB0cjxXZWJQcm9jZXNzUG9vbD4+IHByb2Nlc3NQb29scyhzaXpl
X3QgY291bnQgPSBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpKSBjb25zdDsKIAog
I2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogICAgIFZlY3RvcjxQbHVnaW5Nb2R1bGVJ
bmZvPiBwbHVnaW5zKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQy
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggN2UxODgyMmYwNGQxNzZhYTg5OTRiNDY2YTgwNTY2
OWFkY2E5MDI5MC4uZTM5YmU5YWVlMDk1OGFhMGI4MzhmMmNkYThmNGEzNjA5ODU5OTY5MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtMTA2Myw2ICsxMDYzLDkgQEAKIAkJNTFEMTI0MzUxRTZERjY1MjAwMkIyODIwIC8qIFdLVVJM
U2NoZW1lSGFuZGxlclRhc2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUxRDEyNDJGMUU2RERERDcwMDJCMjgyMCAvKiBXS1VSTFNjaGVtZUhhbmRsZXJU
YXNrLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OwogCQk1
MUQxMjQzNjFFNkRGQjM5MDAyQjI4MjAgLyogV0tVUkxTY2hlbWVIYW5kbGVyVGFzay5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRDEyNDMwMUU2RERE
RDcwMDJCMjgyMCAvKiBXS1VSTFNjaGVtZUhhbmRsZXJUYXNrLm1tICovOyB9OwogCQk1MUQxMjQz
QTFFNkUwQUFCMDAyQjI4MjAgLyogQVBJVVJMU2NoZW1lSGFuZGxlclRhc2suY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFEMTI0MzgxRTZERkRCOTAw
MkIyODIwIC8qIEFQSVVSTFNjaGVtZUhhbmRsZXJUYXNrLmNwcCAqLzsgfTsKKwkJNTFEMTI0OTEx
RTc0QkYzQzAwMkIyODIwIC8qIEFQSUhUVFBDb29raWVTdG9yYWdlLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRDEyNDgyMUU3MzRBQzgwMDJCMjgy
MCAvKiBBUElIVFRQQ29va2llU3RvcmFnZS5jcHAgKi87IH07CisJCTUxRDEyNDkyMUU3NEJGNDgw
MDJCMjgyMCAvKiBXS0hUVFBDb29raWVTdG9yYWdlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFEMTI0ODUxRTczNEFFMzAwMkIyODIwIC8qIFdLSFRU
UENvb2tpZVN0b3JhZ2UubW0gKi87IH07CisJCTUxRDEyNDk5MUU3NjNDMDEwMDJCMjgyMCAvKiBX
S0hUVFBDb29raWVTdG9yYWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MUQxMjQ4NDFFNzM0QUUzMDAyQjI4MjAgLyogV0tIVFRQQ29va2llU3RvcmFn
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUx
RDEzMDUzMTM4MkVBQzAwMDM1MUVERCAvKiBTZWNJdGVtUmVxdWVzdERhdGEuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFEMTMwNEYxMzgyRUFDMDAw
MzUxRUREIC8qIFNlY0l0ZW1SZXF1ZXN0RGF0YS5jcHAgKi87IH07CiAJCTUxRDEzMDU0MTM4MkVB
QzAwMDM1MUVERCAvKiBTZWNJdGVtUmVxdWVzdERhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRDEzMDUwMTM4MkVBQzAwMDM1MUVERCAvKiBTZWNJ
dGVtUmVxdWVzdERhdGEuaCAqLzsgfTsKIAkJNTFEMTMwNTUxMzgyRUFDMDAwMzUxRUREIC8qIFNl
Y0l0ZW1SZXNwb25zZURhdGEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTFEMTMwNTExMzgyRUFDMDAwMzUxRUREIC8qIFNlY0l0ZW1SZXNwb25zZURh
dGEuY3BwICovOyB9OwpAQCAtMzI4NSw2ICszMjg4LDExIEBACiAJCTUxRDEyNDM3MUU2REZEMkEw
MDJCMjgyMCAvKiBXS1VSTFNjaGVtZUhhbmRsZXJUYXNrSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV0tVUkxTY2hlbWVIYW5kbGVyVGFza0ludGVybmFsLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxRDEyNDM4MUU2REZEQjkwMDJCMjgyMCAvKiBB
UElVUkxTY2hlbWVIYW5kbGVyVGFzay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBBUElVUkxTY2hlbWVIYW5kbGVyVGFzay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTUxRDEyNDM5MUU2REZEQjkwMDJCMjgyMCAvKiBBUElVUkxTY2hlbWVIYW5kbGVy
VGFzay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBUElVUkxTY2hlbWVIYW5k
bGVyVGFzay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MUQxMjQ4MjFFNzM0QUM4
MDAyQjI4MjAgLyogQVBJSFRUUENvb2tpZVN0b3JhZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gQVBJSFRUUENvb2tpZVN0b3JhZ2UuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk1MUQxMjQ4MzFFNzM0QUM4MDAyQjI4MjAgLyogQVBJSFRUUENvb2tp
ZVN0b3JhZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJSFRUUENvb2tp
ZVN0b3JhZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFEMTI0ODQxRTczNEFF
MzAwMkIyODIwIC8qIFdLSFRUUENvb2tpZVN0b3JhZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV0tIVFRQQ29va2llU3RvcmFnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk1MUQxMjQ4NTFFNzM0QUUzMDAyQjI4MjAgLyogV0tIVFRQQ29va2llU3RvcmFnZS5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLSFRUUENvb2tpZVN0
b3JhZ2UubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxRDEyNDg2MUU3MzRBRTMw
MDJCMjgyMCAvKiBXS0hUVFBDb29raWVTdG9yYWdlSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV0tIVFRQQ29va2llU3RvcmFnZUludGVybmFsLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxRDEzMDRGMTM4MkVBQzAwMDM1MUVERCAvKiBTZWNJdGVt
UmVxdWVzdERhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2Vj
SXRlbVJlcXVlc3REYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFEMTMw
NTAxMzgyRUFDMDAwMzUxRUREIC8qIFNlY0l0ZW1SZXF1ZXN0RGF0YS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTZWNJdGVtUmVxdWVzdERhdGEuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNTFEMTMwNTExMzgyRUFDMDAwMzUxRUREIC8qIFNlY0l0ZW1SZXNwb25z
ZURhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2VjSXRlbVJl
c3BvbnNlRGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01NTQ0LDYgKzU1
NTIsOSBAQAogCQkJCTFBNEQ2NjQ5MThBMzAzMEUwMEQ4MkUyMSAvKiBXS0ZyYW1lSW5mby5tbSAq
LywKIAkJCQkyREY5RUVFNzFBNzgyNDU1MDBCNkNGQkUgLyogV0tGcmFtZUluZm9JbnRlcm5hbC5o
ICovLAogCQkJCTFBNkZBMjFEMUJEMDQzNUIwMEFBQTY1MCAvKiBXS0ZyYW1lSW5mb1ByaXZhdGUu
aCAqLywKKwkJCQk1MUQxMjQ4NDFFNzM0QUUzMDAyQjI4MjAgLyogV0tIVFRQQ29va2llU3RvcmFn
ZS5oICovLAorCQkJCTUxRDEyNDg1MUU3MzRBRTMwMDJCMjgyMCAvKiBXS0hUVFBDb29raWVTdG9y
YWdlLm1tICovLAorCQkJCTUxRDEyNDg2MUU3MzRBRTMwMDJCMjgyMCAvKiBXS0hUVFBDb29raWVT
dG9yYWdlSW50ZXJuYWwuaCAqLywKIAkJCQkxQTQyMkY4QTE4QjI5QjU0MDBEOENEOTYgLyogV0tI
aXN0b3J5RGVsZWdhdGVQcml2YXRlLmggKi8sCiAJCQkJMUFCNDBFRTMxQkY2NzdFMzAwQkE4MUJF
IC8qIFdLTWVudUl0ZW1JZGVudGlmaWVycy5tbSAqLywKIAkJCQkxQUI0MEVFNDFCRjY3N0UzMDBC
QTgxQkUgLyogV0tNZW51SXRlbUlkZW50aWZpZXJzUHJpdmF0ZS5oICovLApAQCAtNjczMiw2ICs2
NzQzLDggQEAKIAkJCQkyREFCQTc3NTFBODJCNDIxMDBFRjBGMUEgLyogQVBJSGlzdG9yeUNsaWVu
dC5oICovLAogCQkJCTkzQTg4QjQyMUJDODgyOEMwMEFCQTVDMiAvKiBBUElIaXRUZXN0UmVzdWx0
LmNwcCAqLywKIAkJCQk5M0E4OEI0MzFCQzg4MjhDMDBBQkE1QzIgLyogQVBJSGl0VGVzdFJlc3Vs
dC5oICovLAorCQkJCTUxRDEyNDgyMUU3MzRBQzgwMDJCMjgyMCAvKiBBUElIVFRQQ29va2llU3Rv
cmFnZS5jcHAgKi8sCisJCQkJNTFEMTI0ODMxRTczNEFDODAwMkIyODIwIC8qIEFQSUhUVFBDb29r
aWVTdG9yYWdlLmggKi8sCiAJCQkJNTE0M0IyNjExREREMERBMDAwMTRGQUM2IC8qIEFQSUljb25M
b2FkaW5nQ2xpZW50LmggKi8sCiAJCQkJN0NFNEQyMDYxQTQ2Nzc1NzAwQzdGMTUyIC8qIEFQSUxl
Z2FjeUNvbnRleHRIaXN0b3J5Q2xpZW50LmggKi8sCiAJCQkJMUEyNDY0RjIxODkxRTQ1MTAwMjM0
QzVCIC8qIEFQSUxvYWRlckNsaWVudC5oICovLApAQCAtODUxNSw2ICs4NTI4LDcgQEAKIAkJCQk1
MTQxMjk5NDFDNjQyOEJCMDA1OUU3MTQgLyogV2ViSURCQ29ubmVjdGlvblRvU2VydmVyLmggaW4g
SGVhZGVycyAqLywKIAkJCQk1MTA1MjM3NDFDNzNEMzhCMDA3OTkzQ0IgLyogV2ViSURCQ29ubmVj
dGlvblRvU2VydmVyTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDQ0Y2QUJEMTJDOTFF
RjkwMDhGOUMzNSAvKiBXZWJJbWFnZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTFEMTI0OTkxRTc2
M0MwMTAwMkIyODIwIC8qIFdLSFRUUENvb2tpZVN0b3JhZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTFDOEUyODIwMTI3NUQxNTQwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3IuaCBpbiBIZWFkZXJzICov
LAogCQkJCUJDMDMyRDgyMTBGNDM3OEQwMDU4QzE1QSAvKiBXZWJJbnNwZWN0b3JDbGllbnQuaCBp
biBIZWFkZXJzICovLAogCQkJCUE1NUJBODM1MUJBM0U3MEEwMDdDRDMzRCAvKiBXZWJJbnNwZWN0
b3JGcm9udGVuZEFQSURpc3BhdGNoZXIuaCBpbiBIZWFkZXJzICovLApAQCAtOTc2Nyw2ICs5Nzgx
LDcgQEAKIAkJCQkxQTZGQkEyQjExRTY4NjI3MDBEQjEzNzEgLyogTmV0c2NhcGVCcm93c2VyRnVu
Y3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE2RkJEMjkxMUU2OUJDMjAwREIxMzcxIC8qIE5l
dHNjYXBlUGx1Z2luLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBRTVCN0ZCMTFFN0FFRDIwMEJB
Njc2NyAvKiBOZXRzY2FwZVBsdWdpbk1hYy5tbSBpbiBTb3VyY2VzICovLAorCQkJCTUxRDEyNDky
MUU3NEJGNDgwMDJCMjgyMCAvKiBXS0hUVFBDb29raWVTdG9yYWdlLm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJMUE0QTlDNTUxMkI4MTZDRjAwOEZFOTg0IC8qIE5ldHNjYXBlUGx1Z2luTW9kdWxlLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTgzOUEyRjMxMUUyMDY3NDUwMDM5MDU3RSAvKiBIaWdoUGVy
Zm9ybWFuY2VHcmFwaGljc1VzYWdlU2FtcGxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTRB
OUM5QTEyQjgyMUNEMDA4RkU5ODQgLyogTmV0c2NhcGVQbHVnaW5Nb2R1bGVNYWMubW0gaW4gU291
cmNlcyAqLywKQEAgLTk3ODUsNiArOTgwMCw3IEBACiAJCQkJODMxRUVCQkUxQkQ4NUM0MzAwQkI2
NEMzIC8qIE5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk4MzJBRTI1MzFCRTJFOENEMDBGQUFFMTAgLyogTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2Fk
TWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4M0JEQ0NCOTFBQzVGREI2MDAzRjY0NDEg
LyogTmV0d29ya0NhY2hlU3RhdGlzdGljcy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MUQxMjQ5
MTFFNzRCRjNDMDAyQjI4MjAgLyogQVBJSFRUUENvb2tpZVN0b3JhZ2UuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJRTQ0MzZFRDAxQTBEMDQwQjAwRUFEMjA0IC8qIE5ldHdvcmtDYWNoZVN0b3JhZ2Uu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODMxMDQyOEMxQkQ2QjY2RjAwQTcxNUU0IC8qIE5ldHdv
cmtDYWNoZVN1YnJlc291cmNlc0VudHJ5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUzMDI1ODNE
MURDQkJEMjIwMERBODlDMiAvKiBOZXR3b3JrQ2FwdHVyZUV2ZW50LmNwcCBpbiBTb3VyY2VzICov
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tp
ZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tp
ZU1hbmFnZXIuY3BwCmluZGV4IDllMjFmNzhjY2RiYjE4MjE3OTQyNTUzZjlmZTBmMWRkNzA0MTMz
ODQuLjc1NDNhMjlkOGJlYjhjZWEzOTI2NjIxNmE2MDA4YzU4NjIzNGVmMzUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5j
cHAKQEAgLTcyLDIyICs3Miw2NCBAQCB2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmRlbGV0ZUNvb2tp
ZXNGb3JIb3N0bmFtZShTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbgogICAgICAgICBX
ZWJDb3JlOjpkZWxldGVDb29raWVzRm9ySG9zdG5hbWVzKCpzdG9yYWdlU2Vzc2lvbiwgeyBob3N0
bmFtZSB9KTsKIH0KIAorCiB2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmRlbGV0ZUFsbENvb2tpZXMo
U2Vzc2lvbklEIHNlc3Npb25JRCkKIHsKICAgICBpZiAoYXV0byogc3RvcmFnZVNlc3Npb24gPSBO
ZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCiAgICAgICAg
IFdlYkNvcmU6OmRlbGV0ZUFsbENvb2tpZXMoKnN0b3JhZ2VTZXNzaW9uKTsKIH0KIAotdm9pZCBX
ZWJDb29raWVNYW5hZ2VyOjpkZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZShTZXNzaW9uSUQg
c2Vzc2lvbklELCBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IHRpbWUpCit2
b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmRlbGV0ZUNvb2tpZShTZXNzaW9uSUQgc2Vzc2lvbklELCBj
b25zdCBDb29raWUmIGNvb2tpZSwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3sKKyAgICBpZiAoYXV0
byogc3RvcmFnZVNlc3Npb24gPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9u
KHNlc3Npb25JRCkpCisgICAgICAgIHN0b3JhZ2VTZXNzaW9uLT5kZWxldGVDb29raWUoY29va2ll
KTsKKworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlclByb3h5
OjpEaWREZWxldGVDb29raWVzKGNhbGxiYWNrSUQpLCAwKTsKK30KKwordm9pZCBXZWJDb29raWVN
YW5hZ2VyOjpkZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZShTZXNzaW9uSUQgc2Vzc2lvbklE
LCBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IHRpbWUsIHVpbnQ2NF90IGNh
bGxiYWNrSUQpCiB7CiAgICAgaWYgKGF1dG8qIHN0b3JhZ2VTZXNzaW9uID0gTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQogICAgICAgICBXZWJDb3JlOjpk
ZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZSgqc3RvcmFnZVNlc3Npb24sIHRpbWUpOworCisg
ICAgaWYgKGNhbGxiYWNrSUQpCisgICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
Q29va2llTWFuYWdlclByb3h5OjpEaWREZWxldGVDb29raWVzKGNhbGxiYWNrSUQpLCAwKTsKK30K
Kwordm9pZCBXZWJDb29raWVNYW5hZ2VyOjpnZXRBbGxDb29raWVzKFNlc3Npb25JRCBzZXNzaW9u
SUQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit7CisgICAgVmVjdG9yPENvb2tpZT4gY29va2llczsK
KyAgICBpZiAoYXV0byogc3RvcmFnZVNlc3Npb24gPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0
b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCisgICAgICAgIGNvb2tpZXMgPSBzdG9yYWdlU2Vzc2lv
bi0+Z2V0QWxsQ29va2llcygpOworCisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJD
b29raWVNYW5hZ2VyUHJveHk6OkRpZEdldENvb2tpZXMoY29va2llcywgY2FsbGJhY2tJRCksIDAp
OwogfQogCi12b2lkIFdlYkNvb2tpZU1hbmFnZXI6OnNldENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgY29uc3QgVmVjdG9yPENvb2tpZT4mIGNvb2tpZXMsIGNvbnN0IFVSTCYg
dXJsLCBjb25zdCBVUkwmIG1haW5Eb2N1bWVudFVSTCkKK3ZvaWQgV2ViQ29va2llTWFuYWdlcjo6
Z2V0Q29va2llcyhTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIHVybCwgdWludDY0X3Qg
Y2FsbGJhY2tJRCkKK3sKKyAgICBWZWN0b3I8Q29va2llPiBjb29raWVzOworICAgIGlmIChhdXRv
KiBzdG9yYWdlU2Vzc2lvbiA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24o
c2Vzc2lvbklEKSkKKyAgICAgICAgY29va2llcyA9IHN0b3JhZ2VTZXNzaW9uLT5nZXRDb29raWVz
KHVybCk7CisKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXJQ
cm94eTo6RGlkR2V0Q29va2llcyhjb29raWVzLCBjYWxsYmFja0lEKSwgMCk7Cit9CisKK3ZvaWQg
V2ViQ29va2llTWFuYWdlcjo6c2V0Q29va2llKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IGNvbnN0IENvb2tpZSYgY29va2llLCB1aW50NjRfdCBjYWxsYmFja0lEKQoreworICAgIGlmIChh
dXRvKiBzdG9yYWdlU2Vzc2lvbiA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Np
b24oc2Vzc2lvbklEKSkKKyAgICAgICAgc3RvcmFnZVNlc3Npb24tPnNldENvb2tpZShjb29raWUp
OworCisgICAgaWYgKGNhbGxiYWNrSUQpCisgICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6V2ViQ29va2llTWFuYWdlclByb3h5OjpEaWRTZXRDb29raWVzKGNhbGxiYWNrSUQpLCAwKTsK
K30KKwordm9pZCBXZWJDb29raWVNYW5hZ2VyOjpzZXRDb29raWVzKFdlYkNvcmU6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxDb29raWU+JiBjb29raWVzLCBjb25zdCBVUkwmIHVy
bCwgY29uc3QgVVJMJiBtYWluRG9jdW1lbnRVUkwsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiB7CiAg
ICAgaWYgKGF1dG8qIHN0b3JhZ2VTZXNzaW9uID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9y
YWdlU2Vzc2lvbihzZXNzaW9uSUQpKQogICAgICAgICBzdG9yYWdlU2Vzc2lvbi0+c2V0Q29va2ll
cyhjb29raWVzLCB1cmwsIG1haW5Eb2N1bWVudFVSTCk7CisKKyAgICBpZiAoY2FsbGJhY2tJRCkK
KyAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyUHJveHk6
OkRpZFNldENvb2tpZXMoY2FsbGJhY2tJRCksIDApOwogfQogCiB2b2lkIFdlYkNvb2tpZU1hbmFn
ZXI6Om5vdGlmeUNvb2tpZXNEaWRDaGFuZ2UoU2Vzc2lvbklEIHNlc3Npb25JRCkKQEAgLTExMSw5
ICsxNTMsMTIgQEAgdm9pZCBXZWJDb29raWVNYW5hZ2VyOjpzdG9wT2JzZXJ2aW5nQ29va2llQ2hh
bmdlcyhTZXNzaW9uSUQgc2Vzc2lvbklEKQogICAgICAgICBXZWJDb3JlOjpzdG9wT2JzZXJ2aW5n
Q29va2llQ2hhbmdlcygqc3RvcmFnZVNlc3Npb24pOwogfQogCi12b2lkIFdlYkNvb2tpZU1hbmFn
ZXI6OnNldEhUVFBDb29raWVBY2NlcHRQb2xpY3koSFRUUENvb2tpZUFjY2VwdFBvbGljeSBwb2xp
Y3kpCit2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OnNldEhUVFBDb29raWVBY2NlcHRQb2xpY3koSFRU
UENvb2tpZUFjY2VwdFBvbGljeSBwb2xpY3ksIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiB7CiAgICAg
cGxhdGZvcm1TZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHBvbGljeSk7CisKKyAgICBpZiAoY2Fs
bGJhY2tJRCkKKyAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJDb29raWVNYW5h
Z2VyUHJveHk6OkRpZFNldEhUVFBDb29raWVBY2NlcHRQb2xpY3koY2FsbGJhY2tJRCksIDApOwog
fQogCiB2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmdldEhUVFBDb29raWVBY2NlcHRQb2xpY3kodWlu
dDY0X3QgY2FsbGJhY2tJRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
Q29va2llcy9XZWJDb29raWVNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Nv
b2tpZXMvV2ViQ29va2llTWFuYWdlci5oCmluZGV4IGRiMjdkMjBhYWRkODdkODg1MzZkYTUwNzFl
NTlmMzI4OTExNTE4MDIuLjgxODc1ZGFmYjc1OGZjZDYzOTkwODUxZGJjZDM1MmVlNjQwNTU2MWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVN
YW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tp
ZU1hbmFnZXIuaApAQCAtNTYsNyArNTYsOCBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgY29uc3Qg
Y2hhciogc3VwcGxlbWVudE5hbWUoKTsKIAotICAgIHZvaWQgc2V0SFRUUENvb2tpZUFjY2VwdFBv
bGljeShIVFRQQ29va2llQWNjZXB0UG9saWN5KTsKKyAgICB2b2lkIHNldEhUVFBDb29raWVBY2Nl
cHRQb2xpY3koSFRUUENvb2tpZUFjY2VwdFBvbGljeSwgdWludDY0X3QgY2FsbGJhY2tJRCk7CisK
ICNpZiBVU0UoU09VUCkKICAgICB2b2lkIHNldENvb2tpZVBlcnNpc3RlbnRTdG9yYWdlKGNvbnN0
IFN0cmluZyYgc3RvcmFnZVBhdGgsIHVpbnQzMl90IHN0b3JhZ2VUeXBlKTsKICNlbmRpZgpAQCAt
NjgsMTEgKzY5LDE2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZ2V0SG9z
dG5hbWVzV2l0aENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklELCB1aW50NjRfdCBjYWxsYmFja0lE
KTsKKworICAgIHZvaWQgZGVsZXRlQ29va2llKFdlYkNvcmU6OlNlc3Npb25JRCwgY29uc3QgV2Vi
Q29yZTo6Q29va2llJiwgdWludDY0X3QgY2FsbGJhY2tJRCk7CiAgICAgdm9pZCBkZWxldGVDb29r
aWVzRm9ySG9zdG5hbWUoV2ViQ29yZTo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmKTsKICAgICB2
b2lkIGRlbGV0ZUFsbENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklEKTsKLSAgICB2b2lkIGRlbGV0
ZUFsbENvb2tpZXNNb2RpZmllZFNpbmNlKFdlYkNvcmU6OlNlc3Npb25JRCwgc3RkOjpjaHJvbm86
OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCk7CisgICAgdm9pZCBkZWxldGVBbGxDb29raWVzTW9k
aWZpZWRTaW5jZShXZWJDb3JlOjpTZXNzaW9uSUQsIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6
OnRpbWVfcG9pbnQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwogCi0gICAgdm9pZCBzZXRDb29raWVz
KFdlYkNvcmU6OlNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mLCBjb25z
dCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXZWJDb3JlOjpVUkwmIG1haW5Eb2N1bWVudFVSTCk7Cisg
ICAgdm9pZCBzZXRDb29raWUoV2ViQ29yZTo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpDb29r
aWUmLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICB2b2lkIHNldENvb2tpZXMoV2ViQ29yZTo6
U2Vzc2lvbklELCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYsIGNvbnN0IFdlYkNvcmU6
OlVSTCYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgbWFpbkRvY3VtZW50VVJMLCB1aW50NjRfdCBjYWxs
YmFja0lEKTsKKyAgICB2b2lkIGdldEFsbENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklELCB1aW50
NjRfdCBjYWxsYmFja0lEKTsKKyAgICB2b2lkIGdldENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklE
LCBjb25zdCBXZWJDb3JlOjpVUkwmLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKIAogICAgIHZvaWQg
cGxhdGZvcm1TZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KEhUVFBDb29raWVBY2NlcHRQb2xpY3kp
OwogICAgIHZvaWQgZ2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSh1aW50NjRfdCBjYWxsYmFja0lE
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2llcy9XZWJDb29r
aWVNYW5hZ2VyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Db29raWVz
L1dlYkNvb2tpZU1hbmFnZXIubWVzc2FnZXMuaW4KaW5kZXggMDBlN2I2NWI3NDkwODI2YzViYjM5
YmQ3MjZlOWMyZDNiYTUzZjA1Ni4uMGE1ODU1NWVjNmE5Y2M0OGY5ZDhhOTQ3NWNhNjI0OGMzZWQ1
YjM0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNv
b2tpZU1hbmFnZXIubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9D
b29raWVzL1dlYkNvb2tpZU1hbmFnZXIubWVzc2FnZXMuaW4KQEAgLTI3LDExICsyNywxNSBAQAog
ICAgIHZvaWQgR2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgdWludDY0X3QgY2FsbGJhY2tJRCkKICAgICB2b2lkIERlbGV0ZUNvb2tpZXNGb3JIb3N0
bmFtZShXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTdHJpbmcgaG9zdG5hbWUpCiAgICAg
dm9pZCBEZWxldGVBbGxDb29raWVzKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQpCi0gICAg
dm9pZCBEZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZShXZWJDb3JlOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IHRpbWUpCiAKLSAg
ICB2b2lkIFNldENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVmVjdG9yPFdl
YkNvcmU6OkNvb2tpZT4gY29va2llcywgV2ViQ29yZTo6VVJMIHVybCwgV2ViQ29yZTo6VVJMIG1h
aW5Eb2N1bWVudFVSTCk7CisgICAgdm9pZCBTZXRDb29raWUoV2ViQ29yZTo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgc3RydWN0IFdlYkNvcmU6OkNvb2tpZSBjb29raWUsIHVpbnQ2NF90IGNhbGxiYWNr
SUQpCisgICAgdm9pZCBTZXRDb29raWVzKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFZl
Y3RvcjxXZWJDb3JlOjpDb29raWU+IGNvb2tpZXMsIFdlYkNvcmU6OlVSTCB1cmwsIFdlYkNvcmU6
OlVSTCBtYWluRG9jdW1lbnRVUkwsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCisgICAgdm9pZCBHZXRB
bGxDb29raWVzKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IGNhbGxiYWNr
SUQpCisgICAgdm9pZCBHZXRDb29raWVzKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdl
YkNvcmU6OlVSTCB1cmwsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCisgICAgdm9pZCBEZWxldGVDb29r
aWUoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgc3RydWN0IFdlYkNvcmU6OkNvb2tpZSBj
b29raWUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCisgICAgdm9pZCBEZWxldGVBbGxDb29raWVzTW9k
aWZpZWRTaW5jZShXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBzdGQ6OmNocm9ubzo6c3lz
dGVtX2Nsb2NrOjp0aW1lX3BvaW50IHRpbWUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAKLSAgICB2
b2lkIFNldEhUVFBDb29raWVBY2NlcHRQb2xpY3kodWludDMyX3QgcG9saWN5KQorICAgIHZvaWQg
U2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSh1aW50MzJfdCBwb2xpY3ksIHVpbnQ2NF90IGNhbGxi
YWNrSUQpCiAgICAgdm9pZCBHZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHVpbnQ2NF90IGNhbGxi
YWNrSUQpCiAgICAgCiAgICAgdm9pZCBTdGFydE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMoV2ViQ29y
ZTo6U2Vzc2lvbklEIHNlc3Npb25JRCkKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rv
b2xzL0NoYW5nZUxvZwppbmRleCA4MGRhODIyOGRjYTc3ZTliOTM4NmQzOWViZTVjOGY1NDJjZjNj
YjlkLi40Y2FkZTZiMzAwODkxODZhYjFlMzk4NTMyMTAxNTJiYTJhNWJhMTUyIDEwMDY0NAotLS0g
YS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAK
KzIwMTctMDMtMTMgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAg
IFdLV2ViVmlldyBwcm92aWRlcyBubyBhY2Nlc3MgdG8gY29va2llcy4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MDE5MQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2Vi
S2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMTctMDMtMTEgIFNhaWQgQWJv
dS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KIAogICAgICAgICBFbmFibGUgYXN5
bmMgaW1hZ2UgZGVjb2RpbmcgZm9yIGxhcmdlIGltYWdlcwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCA3NjAxZGJlMDY5MmMwMDA4ZTZiN2RiYWEzZmEwMDE2MzQ1ZDIxMmY3Li4yZGYzNDU2MmI0
OWJhNzJkMzgwMWJlMWM2MDdkMDRhYzgzNmE1MGEyIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtMTUyLDYgKzE1Miw3IEBACiAJCTUxQkNFRTRGMUM4NEY1M0IwMDQyQzgyRSAvKiBJbmRleGVk
REJNdWx0aVByb2Nlc3MtMi5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxQkNFRTREMUM4NEY1MkMwMDQyQzgyRSAvKiBJbmRleGVkREJN
dWx0aVByb2Nlc3MtMi5odG1sICovOyB9OwogCQk1MUNEMUM2QzFCMzhDRTQzMDAxNDJDQTUgLyog
TW9kYWxBbGVydHMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MUNEMUM2QTFCMzhDRTM2MDAxNDJDQTUgLyogTW9kYWxBbGVydHMubW0gKi87IH07CiAJ
CTUxQ0QxQzcyMUIzOEQ0ODQwMDE0MkNBNSAvKiBtb2RhbC1hbGVydHMtaW4tbmV3LWFib3V0LWJs
YW5rLXdpbmRvdy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUxQ0QxQzcxMUIzOEQ0ODQwMDE0MkNBNSAvKiBtb2RhbC1hbGVydHMtaW4t
bmV3LWFib3V0LWJsYW5rLXdpbmRvdy5odG1sICovOyB9OworCQk1MUQxMjQ5ODFFNzYzQjAyMDAy
QjI4MjAgLyogV0tIVFRQQ29va2llU3RvcmFnZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRDEyNDk3MUU3NjNBRjgwMDJCMjgyMCAvKiBXS0hUVFBD
b29raWVTdG9yYWdlLm1tICovOyB9OwogCQk1MUU1QzcwMjE5MTlDM0IyMDBEOEIzRTEgLyogc2lt
cGxlMi5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxRTc4MDM2MTkxOUFGRjgwMDE4MjlBMiAvKiBzaW1wbGUyLmh0bWwgKi87IH07CiAJ
CTUxRTVDNzAzMTkxOUMzQjIwMEQ4QjNFMSAvKiBzaW1wbGUzLmh0bWwgaW4gQ29weSBSZXNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFFNzgwMzcxOTE5QUZGODAw
MTgyOUEyIC8qIHNpbXBsZTMuaHRtbCAqLzsgfTsKIAkJNTFFNkE4OTQxRDJGMUMwQTAwQzAwNEI2
IC8qIExvY2FsU3RvcmFnZUNsZWFyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTFFNkE4OTIxRDJGMUJFQzAwQzAwNEI2IC8qIExvY2FsU3RvcmFnZUNs
ZWFyLm1tICovOyB9OwpAQCAtMTA0OCw2ICsxMDQ5LDcgQEAKIAkJNTFDQjRBRDcxQjNBMDc5QzAw
QzFCMUM2IC8qIE1vZGFsQWxlcnRzU1BJLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IE1vZGFsQWxlcnRzU1BJLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTFDRDFDNkExQjM4Q0UzNjAwMTQyQ0E1IC8qIE1vZGFsQWxlcnRzLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTW9kYWxBbGVydHMubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTUxQ0QxQzcxMUIzOEQ0ODQwMDE0MkNBNSAvKiBtb2RhbC1hbGVy
dHMtaW4tbmV3LWFib3V0LWJsYW5rLXdpbmRvdy5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gIm1vZGFsLWFsZXJ0
cy1pbi1uZXctYWJvdXQtYmxhbmstd2luZG93Lmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk1MUQxMjQ5NzFFNzYzQUY4MDAyQjI4MjAgLyogV0tIVFRQQ29va2llU3RvcmFnZS5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLSFRUUENvb2tpZVN0
b3JhZ2UubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxRTVDNzA0MTkxOUVBNUYw
MEQ4QjNFMSAvKiBTaG91bGRLZWVwQ3VycmVudEJhY2tGb3J3YXJkTGlzdEl0ZW1Jbkxpc3QuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2hvdWxkS2VlcEN1cnJlbnRC
YWNrRm9yd2FyZExpc3RJdGVtSW5MaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTFFNkE4OTIxRDJGMUJFQzAwQzAwNEI2IC8qIExvY2FsU3RvcmFnZUNsZWFyLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTG9jYWxTdG9yYWdlQ2xlYXIubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxRTZBODk1MUQyRjFDNzcwMEMwMDRCNiAv
KiBMb2NhbFN0b3JhZ2VDbGVhci5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gTG9j
YWxTdG9yYWdlQ2xlYXIuaHRtbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE2NDks
NiArMTY1MSw3IEBACiAJCQkJNTEyMEM4M0MxRTY3NTA3OTAwMjVCMjUwIC8qIFdlYnNpdGVEYXRh
U3RvcmVDdXN0b21QYXRocy5tbSAqLywKIAkJCQk1QzlFNTY4NDFERjkxNDNEMDBDOUVFMzMgLyog
V2Vic2l0ZVBvbGljaWVzLm1tICovLAogCQkJCTFGODM1NzFBMUQzRkZCMEUwMEUzOTY3QiAvKiBX
S0JhY2tGb3J3YXJkTGlzdC5tbSAqLywKKwkJCQk1MUQxMjQ5NzFFNzYzQUY4MDAyQjI4MjAgLyog
V0tIVFRQQ29va2llU3RvcmFnZS5tbSAqLywKIAkJCQkzNzVFMEUxNTFENjY2NzQ0MDBFRkVDMkMg
LyogV0tOU051bWJlci5tbSAqLywKIAkJCQkzN0I0N0UyRTFENjRFN0NBMDA1RjRFRkYgLyogV0tP
YmplY3QubW0gKi8sCiAJCQkJMkQwMDA2NUQxQzFGNTg5NDAwODhFNkE3IC8qIFdLUERGVmlld1Jl
c2l6ZUNyYXNoLm1tICovLApAQCAtMjcyOSw2ICsyNzMyLDcgQEAKIAkJCQk3Q0NFN0VGNDFBNDEx
QUU2MDA0NDdDNEMgLyogRmluZE1hdGNoZXMubW0gaW4gU291cmNlcyAqLywKIAkJCQk3QzgzRTA0
MDFEMEE2M0UzMDBGRUJDRjMgLyogRmlyc3RSZXNwb25kZXJTY3JvbGxpbmdQb3NpdGlvbi5tbSBp
biBTb3VyY2VzICovLAogCQkJCTdDODNFMEJDMUQwQTY1MDcwMEZFQkNGMyAvKiBGaXhlZExheW91
dFNpemUubW0gaW4gU291cmNlcyAqLywKKwkJCQk1MUQxMjQ5ODFFNzYzQjAyMDAyQjI4MjAgLyog
V0tIVFRQQ29va2llU3RvcmFnZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RUY1MUE0MTFB
RTYwMDQ0N0M0QyAvKiBGb3JjZVJlcGFpbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzdCNDdF
MzAxRDY0RTdDQTAwNUY0RUZGIC8qIFdLT2JqZWN0Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0ND
RTdFQzAxQTQxMUE3RTAwNDQ3QzRDIC8qIEZyYWdtZW50TmF2aWdhdGlvbi5tbSBpbiBTb3VyY2Vz
ICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2Ev
V0tIVFRQQ29va2llU3RvcmFnZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
MkNvY29hL1dLSFRUUENvb2tpZVN0b3JhZ2UubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmNlMjg5MDczNjc0ZWEw
ZjJlMGQ2OTYzOTM1NjY1Yjk5Y2E2YmRmZQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL1dLSFRUUENvb2tpZVN0b3JhZ2UubW0KQEAgLTAs
MCArMSwxMDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbXBvcnQg
IlBsYXRmb3JtVXRpbGl0aWVzLmgiCisjaW1wb3J0IDxXZWJLaXQvV0tGb3VuZGF0aW9uLmg+Cisj
aW1wb3J0IDxXZWJLaXQvV0tIVFRQQ29va2llU3RvcmFnZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dL
V2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKwor
I2lmIFdLX0FQSV9FTkFCTEVECisKK3N0YXRpYyBib29sIGdvdEZsYWc7CisKK1RFU1QoV2ViS2l0
MiwgV0tIVFRQQ29va2llU3RvcmFnZSkKK3sKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtb
V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDAp
XSk7CisgICAgW3dlYlZpZXcgbG9hZEhUTUxTdHJpbmc6QCJPaCBoZWxsbyIgYmFzZVVSTDpbTlNV
UkwgVVJMV2l0aFN0cmluZzpAImh0dHA6Ly93ZWJraXQub3JnIl1dOworCisgICAgUmV0YWluUHRy
PFdLSFRUUENvb2tpZVN0b3JhZ2U+IGNvb2tpZVN0b3JhZ2UgPSBbV0tXZWJzaXRlRGF0YVN0b3Jl
IGRlZmF1bHREYXRhU3RvcmVdLl9odHRwQ29va2llU3RvcmFnZTsKKworICAgIE5TQXJyYXk8TlNI
VFRQQ29va2llICo+ICpjb29raWVzID0gbmlsOworICAgIFtjb29raWVTdG9yYWdlIGZldGNoQ29v
a2llczpbY29va2llc1B0ciA9ICZjb29raWVzXShOU0FycmF5PE5TSFRUUENvb2tpZSAqPiAqbnND
b29raWVzKSB7CisgICAgICAgICpjb29raWVzUHRyID0gW25zQ29va2llcyByZXRhaW5dOworICAg
ICAgICBnb3RGbGFnID0gdHJ1ZTsKKyAgICB9XTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6
OnJ1bigmZ290RmxhZyk7CisKKyAgICBBU1NFUlRfRVEoY29va2llcy5jb3VudCwgMHUpOworICAg
IFtjb29raWVzIHJlbGVhc2VdOworCisgICAgZ290RmxhZyA9IGZhbHNlOworCisgICAgUmV0YWlu
UHRyPE5TSFRUUENvb2tpZT4gY29va2llMSA9IFtOU0hUVFBDb29raWUgY29va2llV2l0aFByb3Bl
cnRpZXM6QHsKKyAgICAgICAgTlNIVFRQQ29va2llUGF0aDogQCIvIiwKKyAgICAgICAgTlNIVFRQ
Q29va2llTmFtZTogQCJDb29raWVOYW1lIiwKKyAgICAgICAgTlNIVFRQQ29va2llVmFsdWU6IEAi
Q29va2llVmFsdWUiLAorICAgICAgICBOU0hUVFBDb29raWVEb21haW46IEAiLnd3dy53ZWJraXQu
b3JnIiwKKyAgICAgICAgTlNIVFRQQ29va2llU2VjdXJlOiBAIlRSVUUiLAorICAgICAgICBOU0hU
VFBDb29raWVEaXNjYXJkOiBAIlRSVUUiLAorICAgICAgICBOU0hUVFBDb29raWVNYXhpbXVtQWdl
OiBAIjEwMDAwIiwKKyAgICB9XTsKKworICAgIFJldGFpblB0cjxOU0hUVFBDb29raWU+IGNvb2tp
ZTIgPSBbTlNIVFRQQ29va2llIGNvb2tpZVdpdGhQcm9wZXJ0aWVzOkB7CisgICAgICAgIE5TSFRU
UENvb2tpZVBhdGg6IEAiL3BhdGgiLAorICAgICAgICBOU0hUVFBDb29raWVOYW1lOiBAIk90aGVy
Q29va2llTmFtZSIsCisgICAgICAgIE5TSFRUUENvb2tpZVZhbHVlOiBAIk90aGVyQ29va2llVmFs
dWUiLAorICAgICAgICBOU0hUVFBDb29raWVEb21haW46IEAiLnd3dy53M2Mub3JnIiwKKyAgICAg
ICAgTlNIVFRQQ29va2llTWF4aW11bUFnZTogQCIxMDAwMCIsCisgICAgfV07CisKKyAgICBbY29v
a2llU3RvcmFnZSBzZXRDb29raWU6Y29va2llMS5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpuaWxd
OworICAgIFtjb29raWVTdG9yYWdlIHNldENvb2tpZTpjb29raWUyLmdldCgpIGNvbXBsZXRpb25I
YW5kbGVyOm5pbF07CisKKyAgICBbY29va2llU3RvcmFnZSBmZXRjaENvb2tpZXM6W2Nvb2tpZXNQ
dHIgPSAmY29va2llc10oTlNBcnJheTxOU0hUVFBDb29raWUgKj4gKm5zQ29va2llcykgeworICAg
ICAgICAqY29va2llc1B0ciA9IFtuc0Nvb2tpZXMgcmV0YWluXTsKKyAgICAgICAgZ290RmxhZyA9
IHRydWU7CisgICAgfV07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmdvdEZsYWcp
OworCisgICAgQVNTRVJUX0VRKGNvb2tpZXMuY291bnQsIDJ1KTsKKworICAgIGZvciAoTlNIVFRQ
Q29va2llICpjb29raWUgOiBjb29raWVzKSB7CisgICAgICAgIGlmIChbY29va2llLm5hbWUgaXNF
cXVhbDpAIkNvb2tpZU5hbWUiXSkgeworICAgICAgICAgICAgQVNTRVJUX1RSVUUoW2Nvb2tpZTEu
Z2V0KCkucGF0aCBpc0VxdWFsVG9TdHJpbmc6Y29va2llLnBhdGhdKTsKKyAgICAgICAgICAgIEFT
U0VSVF9UUlVFKFtjb29raWUxLmdldCgpLnZhbHVlIGlzRXF1YWxUb1N0cmluZzpjb29raWUudmFs
dWVdKTsKKyAgICAgICAgICAgIEFTU0VSVF9UUlVFKFtjb29raWUxLmdldCgpLmRvbWFpbiBpc0Vx
dWFsVG9TdHJpbmc6Y29va2llLmRvbWFpbl0pOworICAgICAgICAgICAgQVNTRVJUX1RSVUUoY29v
a2llMS5nZXQoKS5zZWN1cmUpOworICAgICAgICAgICAgQVNTRVJUX1RSVUUoY29va2llMS5nZXQo
KS5zZXNzaW9uT25seSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBBU1NFUlRfVFJV
RShbY29va2llMi5nZXQoKS5wYXRoIGlzRXF1YWxUb1N0cmluZzpjb29raWUucGF0aF0pOworICAg
ICAgICAgICAgQVNTRVJUX1RSVUUoW2Nvb2tpZTIuZ2V0KCkudmFsdWUgaXNFcXVhbFRvU3RyaW5n
OmNvb2tpZS52YWx1ZV0pOworICAgICAgICAgICAgQVNTRVJUX1RSVUUoW2Nvb2tpZTIuZ2V0KCku
bmFtZSBpc0VxdWFsVG9TdHJpbmc6Y29va2llLm5hbWVdKTsKKyAgICAgICAgICAgIEFTU0VSVF9U
UlVFKFtjb29raWUyLmdldCgpLmRvbWFpbiBpc0VxdWFsVG9TdHJpbmc6Y29va2llLmRvbWFpbl0p
OworICAgICAgICAgICAgQVNTRVJUX0ZBTFNFKGNvb2tpZTIuZ2V0KCkuc2VjdXJlKTsKKyAgICAg
ICAgICAgIEFTU0VSVF9GQUxTRShjb29raWUyLmdldCgpLnNlc3Npb25Pbmx5KTsKKyAgICAgICAg
fQorICAgIH0KKworICAgIFtjb29raWVzIHJlbGVhc2VdOworfQorCisjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>304299</attachid>
            <date>2017-03-13 14:15:15 -0700</date>
            <delta_ts>2017-03-13 15:41:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-140191-20170313141520.patch</filename>
            <type>text/plain</type>
            <size>92200</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEzNzc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmU3MGVhY2ZjNWQwZmY4
NzI0MGFjN2QwMzg5MmQ1MTJkZjA5YzIyOC4uZTFmMmE3Yzc2OWE0YmNmNjA5NTljZDczNGZmZjg4
ZDRmMDRkYjZmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDE3LTAzLTEzICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBXS1dlYlZpZXcgcHJvdmlk
ZXMgbm8gYWNjZXNzIHRvIGNvb2tpZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNDAxOTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBDb3ZlcmVkIGJ5IEFQSSB0ZXN0cy4KKworICAgICAgICAqIHBsYXRm
b3JtL0Nvb2tpZS5oOgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFn
ZVNlc3Npb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtTdG9y
YWdlU2Vzc2lvbkNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpzZXRDb29raWUpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9u
OjpkZWxldGVDb29raWUpOgorICAgICAgICAoV2ViQ29yZTo6bnNDb29raWVzVG9Db29raWVWZWN0
b3IpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpnZXRBbGxDb29r
aWVzKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0Q29va2ll
cyk6CisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvTmV0d29ya1N0b3JhZ2VTZXNz
aW9uU291cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRl
bGV0ZUNvb2tpZSk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246Omdl
dEFsbENvb2tpZXMpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpn
ZXRDb29raWVzKToKKwogMjAxNy0wMy0xMiAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5j
b20+CiAKICAgICAgICAgQWRkIGZ1bGwgTlNIVFRQQ29va2llIGZpZGVsaXR5IHRvIFdlYkNvcmU6
OkNvb2tpZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZwppbmRleCAxMTA3YzgzYjQ0OTE3OTdjOWJkZTA3OTQyZjg2MzM0MzU2
ODAyOTliLi40NTJhOWZjZjhlYzgzOTkwNzM0MjlhMTk4YTA1MWQ0YjhmOGE4ZGMyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTE5IEBACisyMDE3LTAzLTEzICBCcmFkeSBFaWRzb24gIDxiZWlkc29u
QGFwcGxlLmNvbT4KKworICAgICAgICBXS1dlYlZpZXcgcHJvdmlkZXMgbm8gYWNjZXNzIHRvIGNv
b2tpZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NDAxOTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
aGlzIGFkZHMgYSBuZXcgX1dLSFRUUENvb2tpZU1hbmFnZXIgU1BJLgorICAgICAgICBJdCBmb2xs
b3dzIHRoZSBOU0hUVFBDb29raWVTdG9yYWdlIEFQSSBidXQgYXN5bmNocm9ub3VzICh3aXRoIGNv
bXBsZXRpb24gaGFuZGxlcnMpLgorICAgICAgICBBZnRlciB0aGUgaW1wbGVtZW50YXRpb24gaXMg
bGFuZGVkIGFuZCB3ZSByZXZpZXcgaW50ZXJuYWxseSB3ZSdsbCBjb25zaWRlciBwcm9tb3Rpbmcg
dG8gQVBJLgorICAgICAgICAKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBX
ZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKKyAgICAgICAgKiBTaGFyZWQvQVBJ
L0FQSU9iamVjdC5oOgorICAgICAgICAqIFNoYXJlZC9Db2NvYS9BUElPYmplY3QubW06CisgICAg
ICAgIChBUEk6Ok9iamVjdDo6bmV3T2JqZWN0KToKKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
QVBJSFRUUENvb2tpZVN0b3JhZ2UuY3BwOiBBZGRlZC4KKyAgICAgICAgKEFQSTo6SFRUUENvb2tp
ZVN0b3JhZ2U6OkhUVFBDb29raWVTdG9yYWdlKToKKyAgICAgICAgKEFQSTo6SFRUUENvb2tpZVN0
b3JhZ2U6On5IVFRQQ29va2llU3RvcmFnZSk6CisgICAgICAgIChBUEk6OkhUVFBDb29raWVTdG9y
YWdlOjpjb29raWVzKToKKyAgICAgICAgKEFQSTo6SFRUUENvb2tpZVN0b3JhZ2U6OnNldENvb2tp
ZSk6CisgICAgICAgIChBUEk6OkhUVFBDb29raWVTdG9yYWdlOjpzZXRDb29raWVzKToKKyAgICAg
ICAgKEFQSTo6SFRUUENvb2tpZVN0b3JhZ2U6OmRlbGV0ZUNvb2tpZSk6CisgICAgICAgIChBUEk6
OkhUVFBDb29raWVTdG9yYWdlOjpyZW1vdmVDb29raWVzU2luY2VEYXRlKToKKyAgICAgICAgKEFQ
STo6SFRUUENvb2tpZVN0b3JhZ2U6OnNldEhUVFBDb29raWVBY2NlcHRQb2xpY3kpOgorICAgICAg
ICAoQVBJOjpIVFRQQ29va2llU3RvcmFnZTo6Z2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElIVFRQQ29va2llU3RvcmFnZS5oOiBBZGRlZC4KKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5jcHA6CisgICAgICAg
IChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmUpOgorICAgICAgICAoQVBJ
OjpXZWJzaXRlRGF0YVN0b3JlOjpodHRwQ29va2llU3RvcmFnZSk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmg6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0MvV0tDb29raWVNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdLQ29va2llTWFuYWdlckRlbGV0ZUFs
bENvb2tpZXNNb2RpZmllZEFmdGVyRGF0ZSk6CisgICAgICAgIChXS0Nvb2tpZU1hbmFnZXJTZXRI
VFRQQ29va2llQWNjZXB0UG9saWN5KToKKyAgICAgICAgKFdLQ29va2llTWFuYWdlckdldEhUVFBD
b29raWVBY2NlcHRQb2xpY3kpOgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0
ZURhdGFTdG9yZVJlZi5jcHA6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVHZXREZWZhdWx0
RGF0YVN0b3JlKToKKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9v
bC5tbToKKyAgICAgICAgKC1bV0tQcm9jZXNzUG9vbCBfc2V0Q29va2llQWNjZXB0UG9saWN5Ol0p
OgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW06
CisgICAgICAgICgrW1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0RGF0YVN0b3JlXSk6CisgICAg
ICAgICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBfaHR0cENvb2tpZVN0b3JhZ2VdKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaDoKKyAgICAg
ICAgCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0hUVFBDb29raWVTdG9yYWdlLmg6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0hUVFBDb29raWVTdG9yYWdlLm1tOiBB
ZGRlZC4KKyAgICAgICAgKGNvcmVDb29raWVzVG9OU0Nvb2tpZXMpOgorICAgICAgICAoLVtXS0hU
VFBDb29raWVTdG9yYWdlIGRlYWxsb2NdKToKKyAgICAgICAgKC1bV0tIVFRQQ29va2llU3RvcmFn
ZSBmZXRjaENvb2tpZXM6XSk6CisgICAgICAgICgtW1dLSFRUUENvb2tpZVN0b3JhZ2UgZmV0Y2hD
b29raWVzRm9yVVJMOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS0hUVFBDb29r
aWVTdG9yYWdlIHNldENvb2tpZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tI
VFRQQ29va2llU3RvcmFnZSBkZWxldGVDb29raWU6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAg
ICAgICgtW1dLSFRUUENvb2tpZVN0b3JhZ2Ugc2V0Q29va2llczpmb3JVUkw6bWFpbkRvY3VtZW50
VVJMOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS0hUVFBDb29raWVTdG9yYWdl
IHJlbW92ZUNvb2tpZXNTaW5jZURhdGU6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgt
W1dLSFRUUENvb2tpZVN0b3JhZ2Ugc2V0Q29va2llQWNjZXB0UG9saWN5OmNvbXBsZXRpb25IYW5k
bGVyOl0pOgorICAgICAgICAoa2l0Q29va2llUG9saWN5VG9OU0Nvb2tpZVBvbGljeSk6CisgICAg
ICAgICgtW1dLSFRUUENvb2tpZVN0b3JhZ2UgZmV0Y2hDb29raWVBY2NlcHRQb2xpY3k6XSk6Cisg
ICAgICAgICgtW1dLSFRUUENvb2tpZVN0b3JhZ2UgX2FwaU9iamVjdF0pOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tIVFRQQ29va2llU3RvcmFnZUludGVybmFsLmg6IENvcGllZCBm
cm9tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3Jl
UHJpdmF0ZS5oLgorICAgICAgICAoV2ViS2l0Ojp3cmFwcGVyKToKKworICAgICAgICAqIFVJUHJv
Y2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViQXV0b21hdGlvblNlc3Npb246OmFkZFNpbmdsZUNvb2tpZSk6CisKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
Q29va2llTWFuYWdlclByb3h5OjpnZXRIb3N0bmFtZXNXaXRoQ29va2llcyk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKToK
KyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlclByb3h5OjpkZWxldGVBbGxDb29raWVz
KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlclByb3h5OjpkZWxldGVDb29raWUp
OgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRlbGV0ZUFsbENvb2tp
ZXNNb2RpZmllZFNpbmNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlclByb3h5
OjpzZXRDb29raWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OnNl
dENvb2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OmdldEFs
bENvb2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OmdldENv
b2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRpZFNldENv
b2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRpZEdldENv
b2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRpZERlbGV0
ZUNvb2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OnN0YXJ0
T2JzZXJ2aW5nQ29va2llQ2hhbmdlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFn
ZXJQcm94eTo6c3RvcE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJDb29raWVNYW5hZ2VyUHJveHk6OnNldENvb2tpZU9ic2VydmVyQ2FsbGJhY2spOgorICAgICAg
ICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OmNvb2tpZXNEaWRDaGFuZ2UpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OnNldEhUVFBDb29raWVBY2NlcHRQ
b2xpY3kpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OmdldEhUVFBD
b29raWVBY2NlcHRQb2xpY3kpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJv
eHk6OmRpZEdldEhUVFBDb29raWVBY2NlcHRQb2xpY3kpOgorICAgICAgICAoV2ViS2l0OjpXZWJD
b29raWVNYW5hZ2VyUHJveHk6OmRpZFNldEhUVFBDb29raWVBY2NlcHRQb2xpY3kpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViQ29va2llTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluOgorCisgICAgICAgICogVUlQcm9j
ZXNzL1dlYkZyYW1lUHJveHkuaDoKKyAgICAgICAgCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKyAg
ICAgICAgCisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpwcm9jZXNzUG9vbEZvckNv
b2tpZVN0b3JhZ2VPcGVyYXRpb25zKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9y
ZTo6cHJvY2Vzc1Bvb2xzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0
ZURhdGFTdG9yZS5oOgorICAgICAgICAKKyAgICAgICAgKiBXZWJQcm9jZXNzL0Nvb2tpZXMvV2Vi
Q29va2llTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXI6OmRl
bGV0ZUNvb2tpZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXI6OmRlbGV0ZUFs
bENvb2tpZXNNb2RpZmllZFNpbmNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdl
cjo6Z2V0QWxsQ29va2llcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXI6Omdl
dENvb2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyOjpzZXRDb29raWUp
OgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyOjpzZXRDb29raWVzKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlcjo6c2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5tZXNzYWdlcy5pbjoKKwog
MjAxNy0wMy0xMiAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAg
VHJhbnNpdGlvbiBHZW5lcmljQ2FsbGJhY2sgZnJvbSBzdGQ6OmZ1bmN0aW9uIHRvIFdURjo6RnVu
Y3Rpb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db29raWUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nvb2tpZS5oCmluZGV4IGU0N2U3YmJmZjViYjNhYmM2M2Fi
M2Y5MjhmYzI3NDE1NWUxMDRmYTcuLjVkZGI5MzU0Y2U4ZDE5ZTdhNzU0Yjk3Y2UzYTAzODE1M2Yz
NjQ2OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nvb2tpZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nvb2tpZS5oCkBAIC01OCw3ICs1OCw3IEBAIHN0cnVj
dCBDb29raWUgewogCiAjaWZkZWYgX19PQkpDX18KICAgICBXRUJDT1JFX0VYUE9SVCBDb29raWUo
TlNIVFRQQ29va2llICopOwotICAgIG9wZXJhdG9yIE5TSFRUUENvb2tpZSAqKCkgY29uc3Q7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgb3BlcmF0b3IgTlNIVFRQQ29va2llICooKSBjb25zdDsKICNlbmRp
ZgogCiAgICAgU3RyaW5nIG5hbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaAppbmRleCBmMTQ4OWM2YjQyYTFkNDVh
ZjljYWE2MmNhMjZkMTcwNWI0NmIzNzQ4Li4yMTJiZTI2NGVhNWNjNzY1OGE4ZGYyZWYzZTM1OTY4
MTg1MTQ5ZWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05l
dHdvcmtTdG9yYWdlU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgKQEAgLTEwMCw3ICsxMDAsMTEgQEAgcHVibGljOgog
ICAgIE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0KCkgY29uc3Q7CiAjZW5kaWYKIAorICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgc2V0Q29va2llKGNvbnN0IENvb2tpZSYpOwogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgc2V0Q29va2llcyhjb25zdCBWZWN0b3I8Q29va2llPiYsIGNvbnN0IFVSTCYs
IGNvbnN0IFVSTCYgbWFpbkRvY3VtZW50VVJMKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRl
bGV0ZUNvb2tpZShjb25zdCBDb29raWUmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8Q29v
a2llPiBnZXRBbGxDb29raWVzKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPENvb2tpZT4g
Z2V0Q29va2llcyhjb25zdCBVUkwmKTsKIAogcHJpdmF0ZToKICAgICBzdGF0aWMgSGFzaE1hcDxT
ZXNzaW9uSUQsIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrU3RvcmFnZVNlc3Npb24+PiYgZ2xvYmFs
U2Vzc2lvbk1hcCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jb2NvYS9OZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2EubW0KaW5kZXgg
NDRhZWFiNzBlOTliNWZhMGE4NGVjZmQzNTdlMzQ1ODNkZWZjMDFlMC4uNGM5NTY3ZTljNjdhMGE0
NzY3NmE4ZmM3ZjhlZDRhZjRkZTE1NTI5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtTdG9yYWdlU2Vzc2lv
bkNvY29hLm1tCkBAIC0zMiw2ICszMiwxMyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3Zv
aWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRDb29raWUoY29uc3QgQ29va2llJiBjb29raWUp
Cit7CisgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOworICAgIFtuc0Nvb2tpZVN0b3Jh
Z2UoKSBzZXRDb29raWU6KE5TSFRUUENvb2tpZSAqKWNvb2tpZV07CisgICAgRU5EX0JMT0NLX09C
SkNfRVhDRVBUSU9OUzsKK30KKwogdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldENvb2tp
ZXMoY29uc3QgVmVjdG9yPENvb2tpZT4mIGNvb2tpZXMsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBV
UkwmIG1haW5Eb2N1bWVudFVSTCkKIHsKICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IG5z
Q29va2llcyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0
eTpjb29raWVzLnNpemUoKV0pOwpAQCAtNDMsNiArNTAsMzEgQEAgdm9pZCBOZXR3b3JrU3RvcmFn
ZVNlc3Npb246OnNldENvb2tpZXMoY29uc3QgVmVjdG9yPENvb2tpZT4mIGNvb2tpZXMsIGNvbnN0
IFVSTCYKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogfQogCit2b2lkIE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbjo6ZGVsZXRlQ29va2llKGNvbnN0IENvb2tpZSYgY29va2llKQoreworICAg
IFtuc0Nvb2tpZVN0b3JhZ2UoKSBkZWxldGVDb29raWU6KE5TSFRUUENvb2tpZSAqKWNvb2tpZV07
Cit9CisKK3N0YXRpYyBWZWN0b3I8Q29va2llPiBuc0Nvb2tpZXNUb0Nvb2tpZVZlY3RvcihOU0Fy
cmF5PE5TSFRUUENvb2tpZSAqPiAqbnNDb29raWVzKQoreworICAgIFZlY3RvcjxDb29raWU+IGNv
b2tpZXM7CisgICAgY29va2llcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG5zQ29va2llcy5jb3Vu
dCk7CisgICAgZm9yIChOU0hUVFBDb29raWUgKm5zQ29va2llIGluIG5zQ29va2llcykKKyAgICAg
ICAgY29va2llcy51bmNoZWNrZWRBcHBlbmQobnNDb29raWUpOworCisgICAgcmV0dXJuIGNvb2tp
ZXM7Cit9CisKK1ZlY3RvcjxDb29raWU+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0QWxsQ29v
a2llcygpCit7CisgICAgcmV0dXJuIG5zQ29va2llc1RvQ29va2llVmVjdG9yKG5zQ29va2llU3Rv
cmFnZSgpLmNvb2tpZXMpOworfQorCitWZWN0b3I8Q29va2llPiBOZXR3b3JrU3RvcmFnZVNlc3Np
b246OmdldENvb2tpZXMoY29uc3QgVVJMJiB1cmwpCit7CisgICAgcmV0dXJuIG5zQ29va2llc1Rv
Q29va2llVmVjdG9yKFtuc0Nvb2tpZVN0b3JhZ2UoKSBjb29raWVzRm9yVVJMOihOU1VSTCAqKXVy
bF0pOworfQorCiBOU0hUVFBDb29raWVTdG9yYWdlICpOZXR3b3JrU3RvcmFnZVNlc3Npb246Om5z
Q29va2llU3RvcmFnZSgpIGNvbnN0CiB7CiAgICAgYXV0byBjZkNvb2tpZVN0b3JhZ2UgPSBjb29r
aWVTdG9yYWdlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L3NvdXAvTmV0d29ya1N0b3JhZ2VTZXNzaW9uU291cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL3NvdXAvTmV0d29ya1N0b3JhZ2VTZXNzaW9uU291cC5jcHAKaW5kZXggMjQ5
YmQ4MmJkNzRlOGM2MmE5YzM1NzAzN2Y5ODM4NTA0ZmE1N2FjZC4uYTM3YWE3ZGQxMGVmODliYmY2
ZjAwNTYzOWNiYWFjOGM4YjhjNWIxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lvblNvdXAuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3Vw
LmNwcApAQCAtMzA0LDYgKzMwNCwyMCBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0
Q29va2llcyhjb25zdCBWZWN0b3I8Q29va2llPiYgY29va2llcywgY29uc3QgVVJMJgogICAgICAg
ICBzb3VwX2Nvb2tpZV9qYXJfYWRkX2Nvb2tpZShjb29raWVTdG9yYWdlKCksIHRvU291cENvb2tp
ZShjb29raWUpKTsKIH0KIAordm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlbGV0ZUNvb2tp
ZShjb25zdCBDb29raWUmKQoreworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgZm9yIFdLMiB0byB1
c2UuCit9CisKK1ZlY3RvcjxDb29raWU+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0QWxsQ29v
a2llcygpCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudCBmb3IgV0syIHRvIHVzZS4KK30KKwor
VmVjdG9yPENvb2tpZT4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpnZXRDb29raWVzKGNvbnN0IFVS
TCYpCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudCBmb3IgV0syIHRvIHVzZS4KK30KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxp
c3RzLnR4dCBiL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0CmluZGV4IDgxZmY4ZGE4MTEy
NDNlNTQxYTNjNjk4NGM5ZmE3OGIwOTdjOWRiZTYuLmE4ZmRjZDExYjNhNjIzNjY2MzcxN2RhMzQ5
NjFlZTE2MDQ2OGU2OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0
CisrKyBiL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0CkBAIC0zMzYsNiArMzM2LDcgQEAg
c2V0KFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9BUEkvQVBJQ29udGVudEV4dGVuc2lv
blN0b3JlLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvQVBJRXhwZXJpbWVudGFsRmVhdHVyZS5jcHAK
ICAgICBVSVByb2Nlc3MvQVBJL0FQSUZyYW1lSW5mby5jcHAKKyAgICBVSVByb2Nlc3MvQVBJL0FQ
SUhUVFBDb29raWVTdG9yYWdlLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvQVBJSGl0VGVzdFJlc3Vs
dC5jcHAKICAgICBVSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb24uY3BwCiAgICAgVUlQcm9jZXNz
L0FQSS9BUElOYXZpZ2F0aW9uRGF0YS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcAppbmRleCBkOGRjZGUz
MzA4ZDRiZjc1MzU3MmE0NzdiMTdjYTFmMDFiODJhM2MwLi4yNjA3MGYwMTE0ZTE3MjY3MjExMGRi
MDI3MWRhNDk3YTFkMmExOTM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrUHJvY2Vzc1NvdXAuY3BwCkBAIC0xMjQsNyArMTI0LDcg
QEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3Mo
Y29uc3QgTmV0d29ya1Byb2Nlc3NDcmVhdGkKICAgICAgICAgc3VwcGxlbWVudDxXZWJDb29raWVN
YW5hZ2VyPigpLT5zZXRDb29raWVQZXJzaXN0ZW50U3RvcmFnZShwYXJhbWV0ZXJzLmNvb2tpZVBl
cnNpc3RlbnRTdG9yYWdlUGF0aCwKICAgICAgICAgICAgIHBhcmFtZXRlcnMuY29va2llUGVyc2lz
dGVudFN0b3JhZ2VUeXBlKTsKICAgICB9Ci0gICAgc3VwcGxlbWVudDxXZWJDb29raWVNYW5hZ2Vy
PigpLT5zZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHBhcmFtZXRlcnMuY29va2llQWNjZXB0UG9s
aWN5KTsKKyAgICBzdXBwbGVtZW50PFdlYkNvb2tpZU1hbmFnZXI+KCktPnNldEhUVFBDb29raWVB
Y2NlcHRQb2xpY3kocGFyYW1ldGVycy5jb29raWVBY2NlcHRQb2xpY3ksIDApOwogCiAgICAgaWYg
KCFwYXJhbWV0ZXJzLmxhbmd1YWdlcy5pc0VtcHR5KCkpCiAgICAgICAgIHVzZXJQcmVmZXJyZWRM
YW5ndWFnZXNDaGFuZ2VkKHBhcmFtZXRlcnMubGFuZ3VhZ2VzKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9BUEkvQVBJT2JqZWN0LmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
QVBJL0FQSU9iamVjdC5oCmluZGV4IGFlMGZjOTk4NWJkMjc2NDc2ODI3ODlmZjRjNGY0NjZhMWVj
MzQ2MGEuLjQ2ZjI3OTFkZGZjNDUyNDJiYTM1MTRiMDVmOTYzMzE4ZTJmZTUxYjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvQVBJT2JqZWN0LmgKKysrIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL0FQSS9BUElPYmplY3QuaApAQCAtMTE2LDYgKzExNiw3IEBAIHB1YmxpYzoK
ICAgICAgICAgRnVsbFNjcmVlbk1hbmFnZXIsCiAgICAgICAgIEdlb2xvY2F0aW9uTWFuYWdlciwK
ICAgICAgICAgR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdCwKKyAgICAgICAgSFRUUENvb2tp
ZVN0b3JhZ2UsCiAgICAgICAgIEhpdFRlc3RSZXN1bHQsCiAgICAgICAgIEdlb2xvY2F0aW9uUG9z
aXRpb24sCiAgICAgICAgIEdyYW1tYXJEZXRhaWwsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQ29jb2EvQVBJT2JqZWN0Lm1tIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0NvY29h
L0FQSU9iamVjdC5tbQppbmRleCAxMTYzMjQ1NDIwY2QyNzczODA0YjIyNTM0Y2I5OWMwZmFkNDE3
MjIyLi5kYzY5YWQ3OTM5YzVmNGNkMGYwMTFlN2E2ZTdkNDdhMjc4ZDZmOTRjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29jb2EvQVBJT2JqZWN0Lm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9Db2NvYS9BUElPYmplY3QubW0KQEAgLTM2LDYgKzM2LDcgQEAKICNpbXBv
cnQgIldLQ29udGVudEV4dGVuc2lvbkludGVybmFsLmgiCiAjaW1wb3J0ICJXS0NvbnRlbnRFeHRl
bnNpb25TdG9yZUludGVybmFsLmgiCiAjaW1wb3J0ICJXS0ZyYW1lSW5mb0ludGVybmFsLmgiCisj
aW1wb3J0ICJXS0hUVFBDb29raWVTdG9yYWdlSW50ZXJuYWwuaCIKICNpbXBvcnQgIldLTlNBcnJh
eS5oIgogI2ltcG9ydCAiV0tOU0RhdGEuaCIKICNpbXBvcnQgIldLTlNEaWN0aW9uYXJ5LmgiCkBA
IC0xNzgsNiArMTc5LDEwIEBAIHZvaWQqIE9iamVjdDo6bmV3T2JqZWN0KHNpemVfdCBzaXplLCBU
eXBlIHR5cGUpCiAgICAgICAgIHdyYXBwZXIgPSBbV0tGcmFtZUluZm8gYWxsb2NdOwogICAgICAg
ICBicmVhazsKIAorICAgIGNhc2UgVHlwZTo6SFRUUENvb2tpZVN0b3JhZ2U6CisgICAgICAgIHdy
YXBwZXIgPSBbV0tIVFRQQ29va2llU3RvcmFnZSBhbGxvY107CisgICAgICAgIGJyZWFrOworCiAj
aWYgUExBVEZPUk0oTUFDKQogICAgIGNhc2UgVHlwZTo6SGl0VGVzdFJlc3VsdDoKICAgICAgICAg
d3JhcHBlciA9IFtfV0tIaXRUZXN0UmVzdWx0IGFsbG9jXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3JhZ2UuY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9BUElIVFRQQ29va2llU3RvcmFnZS5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MzM4Yjg1MjRiOWZjODlmMTRhYzg0NjIzNWMxN2NiNTExYjQ4YjhlMwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3JhZ2UuY3Bw
CkBAIC0wLDAgKzEsMTM4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIkFQSUhUVFBDb29raWVTdG9yYWdlLmgiCisKKyNpbmNsdWRlICJBUElXZWJzaXRlRGF0
YVN0b3JlLmgiCisjaW5jbHVkZSAiV2ViQ29va2llTWFuYWdlclByb3h5LmgiCisjaW5jbHVkZSAi
V2ViUHJvY2Vzc1Bvb2wuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0Nvb2tpZS5oPgorCit1c2luZyBu
YW1lc3BhY2UgV2ViS2l0OworCituYW1lc3BhY2UgQVBJIHsKKworSFRUUENvb2tpZVN0b3JhZ2U6
OkhUVFBDb29raWVTdG9yYWdlKFdlYnNpdGVEYXRhU3RvcmUmIHdlYnNpdGVEYXRhU3RvcmUpCisg
ICAgOiBtX293bmluZ0RhdGFTdG9yZSh3ZWJzaXRlRGF0YVN0b3JlKQoreworfQorCitIVFRQQ29v
a2llU3RvcmFnZTo6fkhUVFBDb29raWVTdG9yYWdlKCkKK3sKK30KKwordm9pZCBIVFRQQ29va2ll
U3RvcmFnZTo6Y29va2llcyhGdW5jdGlvbjx2b2lkIChjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29v
a2llPiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGF1dG8mIGRhdGFTdG9yZSA9IG1f
b3duaW5nRGF0YVN0b3JlLndlYnNpdGVEYXRhU3RvcmUoKTsKKyAgICBhdXRvIHBvb2wgPSBkYXRh
U3RvcmUucHJvY2Vzc1Bvb2xGb3JDb29raWVTdG9yYWdlT3BlcmF0aW9ucygpOworICAgIGF1dG8q
IGNvb2tpZU1hbmFnZXIgPSBwb29sLT5zdXBwbGVtZW50PFdlYktpdDo6V2ViQ29va2llTWFuYWdl
clByb3h5PigpOworCisgICAgY29va2llTWFuYWdlci0+Z2V0QWxsQ29va2llcyhkYXRhU3RvcmUu
c2Vzc2lvbklEKCksIFtwb29sID0gV1RGTW92ZShwb29sKSwgY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4m
IGNvb2tpZXMsIENhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKKyAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoY29va2llcyk7CisgICAgfSk7Cit9CisKK3ZvaWQgSFRUUENvb2tpZVN0b3JhZ2U6
OmNvb2tpZXMoY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwsIEZ1bmN0aW9uPHZvaWQgKGNvbnN0IFZl
Y3RvcjxXZWJDb3JlOjpDb29raWU+Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgYXV0
byYgZGF0YVN0b3JlID0gbV9vd25pbmdEYXRhU3RvcmUud2Vic2l0ZURhdGFTdG9yZSgpOworICAg
IGF1dG8gcG9vbCA9IGRhdGFTdG9yZS5wcm9jZXNzUG9vbEZvckNvb2tpZVN0b3JhZ2VPcGVyYXRp
b25zKCk7CisgICAgYXV0byogY29va2llTWFuYWdlciA9IHBvb2wtPnN1cHBsZW1lbnQ8V2ViS2l0
OjpXZWJDb29raWVNYW5hZ2VyUHJveHk+KCk7CisKKyAgICBjb29raWVNYW5hZ2VyLT5nZXRDb29r
aWVzKGRhdGFTdG9yZS5zZXNzaW9uSUQoKSwgdXJsLCBbcG9vbCA9IFdURk1vdmUocG9vbCksIGNv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKGNvbnN0IFZlY3Rv
cjxXZWJDb3JlOjpDb29raWU+JiBjb29raWVzLCBDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7
CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGNvb2tpZXMpOworICAgIH0pOworfQorCit2b2lk
IEhUVFBDb29raWVTdG9yYWdlOjpzZXRDb29raWUoY29uc3QgV2ViQ29yZTo6Q29va2llJiBjb29r
aWUsIEZ1bmN0aW9uPHZvaWQgKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgYXV0byYg
ZGF0YVN0b3JlID0gbV9vd25pbmdEYXRhU3RvcmUud2Vic2l0ZURhdGFTdG9yZSgpOworICAgIGF1
dG8gcG9vbCA9IGRhdGFTdG9yZS5wcm9jZXNzUG9vbEZvckNvb2tpZVN0b3JhZ2VPcGVyYXRpb25z
KCk7CisgICAgYXV0byogY29va2llTWFuYWdlciA9IHBvb2wtPnN1cHBsZW1lbnQ8V2ViS2l0OjpX
ZWJDb29raWVNYW5hZ2VyUHJveHk+KCk7CisKKyAgICBjb29raWVNYW5hZ2VyLT5zZXRDb29raWUo
ZGF0YVN0b3JlLnNlc3Npb25JRCgpLCBjb29raWUsIFtwb29sID0gV1RGTW92ZShwb29sKSwgY29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oQ2FsbGJhY2tCYXNl
OjpFcnJvciBlcnJvcikgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAgIH0pOwor
fQorCit2b2lkIEhUVFBDb29raWVTdG9yYWdlOjpzZXRDb29raWVzKGNvbnN0IFZlY3RvcjxXZWJD
b3JlOjpDb29raWU+JiBjb29raWVzLCBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCwgY29uc3QgV2Vi
Q29yZTo6VVJMJiBtYWluRG9jdW1lbnRVUkwsIEZ1bmN0aW9uPHZvaWQgKCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCit7CisgICAgYXV0byYgZGF0YVN0b3JlID0gbV9vd25pbmdEYXRhU3RvcmUud2Vi
c2l0ZURhdGFTdG9yZSgpOworICAgIGF1dG8gcG9vbCA9IGRhdGFTdG9yZS5wcm9jZXNzUG9vbEZv
ckNvb2tpZVN0b3JhZ2VPcGVyYXRpb25zKCk7CisgICAgYXV0byogY29va2llTWFuYWdlciA9IHBv
b2wtPnN1cHBsZW1lbnQ8V2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk+KCk7CisKKyAgICBj
b29raWVNYW5hZ2VyLT5zZXRDb29raWVzKGRhdGFTdG9yZS5zZXNzaW9uSUQoKSwgY29va2llcywg
dXJsLCBtYWluRG9jdW1lbnRVUkwsIFtwb29sID0gV1RGTW92ZShwb29sKSwgY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oQ2FsbGJhY2tCYXNlOjpFcnJvciBl
cnJvcikgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAgIH0pOworfQorCit2b2lk
IEhUVFBDb29raWVTdG9yYWdlOjpkZWxldGVDb29raWUoY29uc3QgV2ViQ29yZTo6Q29va2llJiBj
b29raWUsIEZ1bmN0aW9uPHZvaWQgKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgYXV0
byYgZGF0YVN0b3JlID0gbV9vd25pbmdEYXRhU3RvcmUud2Vic2l0ZURhdGFTdG9yZSgpOworICAg
IGF1dG8gcG9vbCA9IGRhdGFTdG9yZS5wcm9jZXNzUG9vbEZvckNvb2tpZVN0b3JhZ2VPcGVyYXRp
b25zKCk7CisgICAgYXV0byogY29va2llTWFuYWdlciA9IHBvb2wtPnN1cHBsZW1lbnQ8V2ViS2l0
OjpXZWJDb29raWVNYW5hZ2VyUHJveHk+KCk7CisKKyAgICBjb29raWVNYW5hZ2VyLT5kZWxldGVD
b29raWUoZGF0YVN0b3JlLnNlc3Npb25JRCgpLCBjb29raWUsIFtwb29sID0gV1RGTW92ZShwb29s
KSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oQ2FsbGJh
Y2tCYXNlOjpFcnJvciBlcnJvcikgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAg
IH0pOworfQorCit2b2lkIEhUVFBDb29raWVTdG9yYWdlOjpyZW1vdmVDb29raWVzU2luY2VEYXRl
KHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgZGF0ZSwgRnVuY3Rpb248dm9p
ZCAoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBhdXRvJiBkYXRhU3RvcmUgPSBtX293
bmluZ0RhdGFTdG9yZS53ZWJzaXRlRGF0YVN0b3JlKCk7CisgICAgYXV0byBwb29sID0gZGF0YVN0
b3JlLnByb2Nlc3NQb29sRm9yQ29va2llU3RvcmFnZU9wZXJhdGlvbnMoKTsKKyAgICBhdXRvKiBj
b29raWVNYW5hZ2VyID0gcG9vbC0+c3VwcGxlbWVudDxXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQ
cm94eT4oKTsKKworICAgIGNvb2tpZU1hbmFnZXItPmRlbGV0ZUFsbENvb2tpZXNNb2RpZmllZFNp
bmNlKGRhdGFTdG9yZS5zZXNzaW9uSUQoKSwgZGF0ZSwgW3Bvb2wgPSBXVEZNb3ZlKHBvb2wpLCBj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShDYWxsYmFja0Jh
c2U6OkVycm9yIGVycm9yKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgfSk7
Cit9CisKK3ZvaWQgSFRUUENvb2tpZVN0b3JhZ2U6OnNldEhUVFBDb29raWVBY2NlcHRQb2xpY3ko
SFRUUENvb2tpZUFjY2VwdFBvbGljeSBwb2xpY3ksIEZ1bmN0aW9uPHZvaWQgKCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCit7CisgICAgYXV0byYgZGF0YVN0b3JlID0gbV9vd25pbmdEYXRhU3RvcmUu
d2Vic2l0ZURhdGFTdG9yZSgpOworICAgIGF1dG8gcG9vbCA9IGRhdGFTdG9yZS5wcm9jZXNzUG9v
bEZvckNvb2tpZVN0b3JhZ2VPcGVyYXRpb25zKCk7CisgICAgYXV0byogY29va2llTWFuYWdlciA9
IHBvb2wtPnN1cHBsZW1lbnQ8V2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk+KCk7CisKKyAg
ICBjb29raWVNYW5hZ2VyLT5zZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KGRhdGFTdG9yZS5zZXNz
aW9uSUQoKSwgcG9saWN5LCBbcG9vbCA9IFdURk1vdmUocG9vbCksIGNvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKENhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3Ip
IHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICB9KTsKK30KKwordm9pZCBIVFRQ
Q29va2llU3RvcmFnZTo6Z2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShGdW5jdGlvbjx2b2lkIChI
VFRQQ29va2llQWNjZXB0UG9saWN5KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBhdXRv
JiBkYXRhU3RvcmUgPSBtX293bmluZ0RhdGFTdG9yZS53ZWJzaXRlRGF0YVN0b3JlKCk7CisgICAg
YXV0byBwb29sID0gZGF0YVN0b3JlLnByb2Nlc3NQb29sRm9yQ29va2llU3RvcmFnZU9wZXJhdGlv
bnMoKTsKKyAgICBhdXRvKiBjb29raWVNYW5hZ2VyID0gcG9vbC0+c3VwcGxlbWVudDxXZWJLaXQ6
OldlYkNvb2tpZU1hbmFnZXJQcm94eT4oKTsKKworICAgIGNvb2tpZU1hbmFnZXItPmdldEhUVFBD
b29raWVBY2NlcHRQb2xpY3koZGF0YVN0b3JlLnNlc3Npb25JRCgpLCBbcG9vbCA9IFdURk1vdmUo
cG9vbCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKEhU
VFBDb29raWVBY2NlcHRQb2xpY3kgcG9saWN5LCBDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7
CisgICAgICAgIGlmIChlcnJvciAhPSBDYWxsYmFja0Jhc2U6OkVycm9yOjpOb25lKQorICAgICAg
ICAgICAgcG9saWN5ID0gSFRUUENvb2tpZUFjY2VwdFBvbGljeU5ldmVyOworCisgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKHBvbGljeSk7CisgICAgfSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEFQ
SQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElIVFRQQ29va2ll
U3RvcmFnZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElIVFRQQ29va2llU3Rv
cmFnZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmFkZjdiYTI1NmI2ODMwZTQzMDVkOTlkNjBkNzE1MzRhYzg2Zjlk
MzAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSUhU
VFBDb29raWVTdG9yYWdlLmgKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCisjaW5jbHVkZSAiSFRUUENvb2tpZUFjY2Vw
dFBvbGljeS5oIgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgVVJMOworc3RydWN0IENvb2tpZTsK
K30KKworbmFtZXNwYWNlIEFQSSB7CisKK2NsYXNzIFdlYnNpdGVEYXRhU3RvcmU7CisKK2NsYXNz
IEhUVFBDb29raWVTdG9yYWdlIGZpbmFsIDogcHVibGljIE9iamVjdEltcGw8T2JqZWN0OjpUeXBl
OjpIVFRQQ29va2llU3RvcmFnZT4geworcHVibGljOgorICAgIHN0YXRpYyBSZWY8SFRUUENvb2tp
ZVN0b3JhZ2U+IGNyZWF0ZShXZWJzaXRlRGF0YVN0b3JlJiB3ZWJzaXRlRGF0YVN0b3JlKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSFRUUENvb2tpZVN0b3JhZ2Uod2Vic2l0
ZURhdGFTdG9yZSkpOworICAgIH0KKworICAgIHZpcnR1YWwgfkhUVFBDb29raWVTdG9yYWdlKCk7
CisKKyAgICB2b2lkIGNvb2tpZXMoRnVuY3Rpb248dm9pZCAoY29uc3QgVmVjdG9yPFdlYkNvcmU6
OkNvb2tpZT4mKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7CisgICAgdm9pZCBjb29raWVzKGNvbnN0
IFdlYkNvcmU6OlVSTCYsIEZ1bmN0aW9uPHZvaWQgKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29r
aWU+Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpOworCisgICAgdm9pZCBzZXRDb29raWUoY29uc3Qg
V2ViQ29yZTo6Q29va2llJiwgRnVuY3Rpb248dm9pZCAoKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7
CisgICAgdm9pZCBzZXRDb29raWVzKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiwgY29u
c3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBtYWluRG9jdW1lbnRVUkwsIEZ1
bmN0aW9uPHZvaWQgKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpOworICAgIHZvaWQgZGVsZXRlQ29v
a2llKGNvbnN0IFdlYkNvcmU6OkNvb2tpZSYsIEZ1bmN0aW9uPHZvaWQgKCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpOworCisgICAgdm9pZCByZW1vdmVDb29raWVzU2luY2VEYXRlKHN0ZDo6Y2hyb25v
OjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQsIEZ1bmN0aW9uPHZvaWQgKCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpOworCisgICAgdm9pZCBzZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KFdlYktpdDo6
SFRUUENvb2tpZUFjY2VwdFBvbGljeSwgRnVuY3Rpb248dm9pZCAoKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcik7CisgICAgdm9pZCBnZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KEZ1bmN0aW9uPHZvaWQg
KFdlYktpdDo6SFRUUENvb2tpZUFjY2VwdFBvbGljeSk+JiYgY29tcGxldGlvbkhhbmRsZXIpOwor
ICAgIAorcHJpdmF0ZToKKyAgICBIVFRQQ29va2llU3RvcmFnZShXZWJzaXRlRGF0YVN0b3JlJik7
CisKKyAgICBXZWJzaXRlRGF0YVN0b3JlJiBtX293bmluZ0RhdGFTdG9yZTsKK307CisKK30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9y
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUu
Y3BwCmluZGV4IDVjNzhjY2Q3YWUyOTBlNDVlNzBmNDgzZjUwMjBiZGFhNzkwNGY3NWEuLmNhMWRm
NzU3MTBkOTI1N2EyYTliMGQyZDMwMmYwM2IxZWViMzc5MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmNwcApAQCAtMzEsMTMg
KzMxLDEzIEBACiAKIG5hbWVzcGFjZSBBUEkgewogCi1SZWZQdHI8V2Vic2l0ZURhdGFTdG9yZT4g
V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZSgpCitSZWY8V2Vic2l0ZURhdGFTdG9y
ZT4gV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZSgpCiB7CiAgICAgV2ViS2l0OjpJ
bml0aWFsaXplV2ViS2l0MigpOwogCiAgICAgc3RhdGljIFdlYnNpdGVEYXRhU3RvcmUqIGRlZmF1
bHREYXRhU3RvcmUgPSBhZG9wdFJlZihuZXcgV2Vic2l0ZURhdGFTdG9yZShkZWZhdWx0RGF0YVN0
b3JlQ29uZmlndXJhdGlvbigpKSkubGVha1JlZigpOwogCi0gICAgcmV0dXJuIGRlZmF1bHREYXRh
U3RvcmU7CisgICAgcmV0dXJuICpkZWZhdWx0RGF0YVN0b3JlOwogfQogCiBSZWY8V2Vic2l0ZURh
dGFTdG9yZT4gV2Vic2l0ZURhdGFTdG9yZTo6Y3JlYXRlTm9uUGVyc2lzdGVudERhdGFTdG9yZSgp
CkBAIC02NCw2ICs2NCwxNCBAQCBXZWJzaXRlRGF0YVN0b3JlOjp+V2Vic2l0ZURhdGFTdG9yZSgp
CiB7CiB9CiAKK0hUVFBDb29raWVTdG9yYWdlJiBXZWJzaXRlRGF0YVN0b3JlOjpodHRwQ29va2ll
U3RvcmFnZSgpCit7CisgICAgaWYgKCFtX2FwaUhUVFBDb29raWVTdG9yYWdlKQorICAgICAgICBt
X2FwaUhUVFBDb29raWVTdG9yYWdlID0gSFRUUENvb2tpZVN0b3JhZ2U6OmNyZWF0ZSgqdGhpcyk7
CisKKyAgICByZXR1cm4gKm1fYXBpSFRUUENvb2tpZVN0b3JhZ2U7Cit9CisKIGJvb2wgV2Vic2l0
ZURhdGFTdG9yZTo6aXNQZXJzaXN0ZW50KCkKIHsKICAgICByZXR1cm4gbV93ZWJzaXRlRGF0YVN0
b3JlLT5pc1BlcnNpc3RlbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9BUElXZWJzaXRlRGF0YVN0b3JlLmgKaW5kZXggMjY3ZDY5YzMzODQ5YTA4ZjgyMjg4NzFlMDFl
ZDg2MWFkODNiOGE3ZS4uY2E3NGRiY2M0NjdlNjU2NTJkMzc1M2ZkM2JjZDI0MzI5ODJmODc3OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0
b3JlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0
b3JlLmgKQEAgLTI2LDcgKzI2LDcgQEAKICNpZm5kZWYgQVBJV2Vic2l0ZURhdGFTdG9yZV9oCiAj
ZGVmaW5lIEFQSVdlYnNpdGVEYXRhU3RvcmVfaAogCi0jaW5jbHVkZSAiQVBJT2JqZWN0LmgiCisj
aW5jbHVkZSAiQVBJSFRUUENvb2tpZVN0b3JhZ2UuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YVN0
b3JlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KQEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNlIEFQSSB7CiAKIGNsYXNz
IFdlYnNpdGVEYXRhU3RvcmUgZmluYWwgOiBwdWJsaWMgT2JqZWN0SW1wbDxPYmplY3Q6OlR5cGU6
OldlYnNpdGVEYXRhU3RvcmU+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPFdlYnNpdGVE
YXRhU3RvcmU+IGRlZmF1bHREYXRhU3RvcmUoKTsKKyAgICBzdGF0aWMgUmVmPFdlYnNpdGVEYXRh
U3RvcmU+IGRlZmF1bHREYXRhU3RvcmUoKTsKICAgICBzdGF0aWMgUmVmPFdlYnNpdGVEYXRhU3Rv
cmU+IGNyZWF0ZU5vblBlcnNpc3RlbnREYXRhU3RvcmUoKTsKICAgICBzdGF0aWMgUmVmPFdlYnNp
dGVEYXRhU3RvcmU+IGNyZWF0ZShXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OkNvbmZpZ3VyYXRp
b24pOwogCkBAIC00OSw2ICs0OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlZ2lzdGVyU2hhcmVk
UmVzb3VyY2VMb2FkT2JzZXJ2ZXIoKTsKIAogICAgIFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZSYg
d2Vic2l0ZURhdGFTdG9yZSgpIHsgcmV0dXJuICptX3dlYnNpdGVEYXRhU3RvcmU7IH0KKyAgICBI
VFRQQ29va2llU3RvcmFnZSYgaHR0cENvb2tpZVN0b3JhZ2UoKTsKIAogICAgIHN0YXRpYyBTdHJp
bmcgZGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKTsKICAgICBzdGF0aWMgU3RyaW5n
IGRlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKTsKQEAgLTcwLDYgKzcxLDcgQEAgcHJpdmF0
ZToKICAgICBzdGF0aWMgU3RyaW5nIHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5TmFtZSk7CiAKICAgICBSZWZQdHI8V2Vi
S2l0OjpXZWJzaXRlRGF0YVN0b3JlPiBtX3dlYnNpdGVEYXRhU3RvcmU7CisgICAgUmVmUHRyPEhU
VFBDb29raWVTdG9yYWdlPiBtX2FwaUhUVFBDb29raWVTdG9yYWdlOwogfTsKIAogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29va2llTWFuYWdlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb29raWVNYW5hZ2VyLmNwcAppbmRl
eCAyNzhlODNjNTFlMDQwOGEzY2RiY2MxNThkNTNlM2E0YjFmNzY0OWY3Li44MGFjOGE4NjI0MDkx
NGZhOGFlMDhmMzhhZjk4YWNjYTVkYTk1NGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvV0tDb29raWVNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvV0tDb29raWVNYW5hZ2VyLmNwcApAQCAtNjEsMTcgKzYxLDE3IEBAIHZv
aWQgV0tDb29raWVNYW5hZ2VyRGVsZXRlQWxsQ29va2llc01vZGlmaWVkQWZ0ZXJEYXRlKFdLQ29v
a2llTWFuYWdlclJlZiBjb29raWVNCiAgICAgdXNpbmcgbmFtZXNwYWNlIHN0ZDo6Y2hyb25vOwog
CiAgICAgYXV0byB0aW1lID0gc3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50KGR1cmF0aW9uX2Nhc3Q8
c3lzdGVtX2Nsb2NrOjpkdXJhdGlvbj4oZHVyYXRpb248ZG91YmxlPihkYXRlKSkpOwotICAgIHRv
SW1wbChjb29raWVNYW5hZ2VyUmVmKS0+ZGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2UoV2Vi
Q29yZTo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCksIHRpbWUpOworICAgIHRvSW1wbChj
b29raWVNYW5hZ2VyUmVmKS0+ZGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2UoV2ViQ29yZTo6
U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCksIHRpbWUsIFtdKENhbGxiYWNrQmFzZTo6RXJy
b3Ipe30pOwogfQogCiB2b2lkIFdLQ29va2llTWFuYWdlclNldEhUVFBDb29raWVBY2NlcHRQb2xp
Y3koV0tDb29raWVNYW5hZ2VyUmVmIGNvb2tpZU1hbmFnZXIsIFdLSFRUUENvb2tpZUFjY2VwdFBv
bGljeSBwb2xpY3kpCiB7Ci0gICAgdG9JbXBsKGNvb2tpZU1hbmFnZXIpLT5zZXRIVFRQQ29va2ll
QWNjZXB0UG9saWN5KHRvSFRUUENvb2tpZUFjY2VwdFBvbGljeShwb2xpY3kpKTsKKyAgICB0b0lt
cGwoY29va2llTWFuYWdlciktPnNldEhUVFBDb29raWVBY2NlcHRQb2xpY3koV2ViQ29yZTo6U2Vz
c2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCksIHRvSFRUUENvb2tpZUFjY2VwdFBvbGljeShwb2xp
Y3kpLCBbXShDYWxsYmFja0Jhc2U6OkVycm9yKXt9KTsKIH0KIAogdm9pZCBXS0Nvb2tpZU1hbmFn
ZXJHZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KFdLQ29va2llTWFuYWdlclJlZiBjb29raWVNYW5h
Z2VyLCB2b2lkKiBjb250ZXh0LCBXS0Nvb2tpZU1hbmFnZXJHZXRIVFRQQ29va2llQWNjZXB0UG9s
aWN5RnVuY3Rpb24gY2FsbGJhY2spCiB7Ci0gICAgdG9JbXBsKGNvb2tpZU1hbmFnZXIpLT5nZXRI
VFRQQ29va2llQWNjZXB0UG9saWN5KHRvR2VuZXJpY0NhbGxiYWNrRnVuY3Rpb248V0tIVFRQQ29v
a2llQWNjZXB0UG9saWN5LCBIVFRQQ29va2llQWNjZXB0UG9saWN5Pihjb250ZXh0LCBjYWxsYmFj
aykpOworICAgIHRvSW1wbChjb29raWVNYW5hZ2VyKS0+Z2V0SFRUUENvb2tpZUFjY2VwdFBvbGlj
eShXZWJDb3JlOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSwgdG9HZW5lcmljQ2FsbGJh
Y2tGdW5jdGlvbjxXS0hUVFBDb29raWVBY2NlcHRQb2xpY3ksIEhUVFBDb29raWVBY2NlcHRQb2xp
Y3k+KGNvbnRleHQsIGNhbGxiYWNrKSk7CiB9CiAKIHZvaWQgV0tDb29raWVNYW5hZ2VyU2V0Q29v
a2llU3RvcmFnZVBhcnRpdGlvbmluZ0VuYWJsZWQoV0tDb29raWVNYW5hZ2VyUmVmIGNvb2tpZU1h
bmFnZXIsIGJvb2wgZW5hYmxlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAKaW5kZXggYTc3YzFhODlkNWNkZTVl
YjkyZmY4MTk2NmZmODIzNzkyN2M2ZTQ5OC4uNmNhNjljNmQyZmQ3NmU0YTA0ZDBlYzE1NzRjMmMx
MGUzMGU3NWFjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dL
V2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgV0tUeXBlSUQg
V0tXZWJzaXRlRGF0YVN0b3JlR2V0VHlwZUlEKCkKIAogV0tXZWJzaXRlRGF0YVN0b3JlUmVmIFdL
V2Vic2l0ZURhdGFTdG9yZUdldERlZmF1bHREYXRhU3RvcmUoKQogewotICAgIHJldHVybiBXZWJL
aXQ6OnRvQVBJKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZSgpLmdldCgp
KTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSShBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1
bHREYXRhU3RvcmUoKS5wdHIoKSk7CiB9CiAKIFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBXS1dlYnNp
dGVEYXRhU3RvcmVDcmVhdGVOb25QZXJzaXN0ZW50RGF0YVN0b3JlKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tIVFRQQ29va2llU3RvcmFnZS5oIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0hUVFBDb29raWVTdG9yYWdlLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNWY5MWY4ZGJlZThjMDdhYTZiOTVjYmM4MGNjZDY4Yzg2MTQ3YTYzZgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tIVFRQ
Q29va2llU3RvcmFnZS5oCkBAIC0wLDAgKzEsOTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0IDxX
ZWJLaXQvV0tGb3VuZGF0aW9uLmg+CisKKyNpZiBXS19BUElfRU5BQkxFRAorCisjaW1wb3J0IDxG
b3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KKworTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KKworLyoh
CisgQSBXS0hUVFBDb29raWVTdG9yYWdlIG9iamVjdCBhbGxvd3MgbWFuYWdpbmcgdGhlIEhUVFAg
Y29va2llcyBhc3NvY2lhdGVkIHdpdGggYSBwYXJ0aWN1bGFyIFdLV2Vic2l0ZURhdGFTdG9yZS4K
KyAqLworV0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19U
QkEpKQorQGludGVyZmFjZSBXS0hUVFBDb29raWVTdG9yYWdlIDogTlNPYmplY3QKKworLSAoaW5z
dGFuY2V0eXBlKWluaXQgTlNfVU5BVkFJTEFCTEU7CisKKy8qISBAYWJzdHJhY3QgRmV0Y2hlcyBh
bGwgc3RvcmVkIGNvb2tpZXMuCisgQHBhcmFtIGNvbXBsZXRpb25IYW5kbGVyIEEgYmxvY2sgdG8g
aW52b2tlIHdpdGggdGhlIGZldGNoZWQgY29va2llcy4KKyAqLworLSAodm9pZClmZXRjaENvb2tp
ZXM6KHZvaWQgKF4pKE5TQXJyYXk8TlNIVFRQQ29va2llICo+ICopKWNvbXBsZXRpb25IYW5kbGVy
OworCisvKiEgQGFic3RyYWN0IEZldGNoZXMgYWxsIG9mIHRoZSBzdG9yZWQgY29va2llcyBmb3Ig
dGhlIGdpdmVuIFVSTC4KKyBAcGFyYW0gY29tcGxldGlvbkhhbmRsZXIgQSBibG9jayB0byBpbnZv
a2Ugd2l0aCB0aGUgZmV0Y2hlZCBjb29raWVzLgorICovCistICh2b2lkKWZldGNoQ29va2llc0Zv
clVSTDooTlNVUkwgKil1cmwgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TQXJyYXk8TlNI
VFRQQ29va2llICo+ICopKWNvbXBsZXRpb25IYW5kbGVyOworCisvKiEgQGFic3RyYWN0IFNldCBh
IGNvb2tpZS4KKyBAcGFyYW0gY29va2llcyBUaGUgY29va2llIHRvIHNldC4KKyBAcGFyYW0gY29t
cGxldGlvbkhhbmRsZXIgQSBibG9jayB0byBpbnZva2Ugb25jZSB0aGUgY29va2llIGhhcyBiZWVu
IHN0b3JlZC4KKyAqLworLSAodm9pZClzZXRDb29raWU6KE5TSFRUUENvb2tpZSAqKWNvb2tpZSBj
b21wbGV0aW9uSGFuZGxlcjoobnVsbGFibGUgdm9pZCAoXikoKSljb21wbGV0aW9uSGFuZGxlcjsK
KworLyohIEBhYnN0cmFjdCBBZGRzIGFuIGFycmF5IGNvb2tpZXMgdG8gdGhlIGNvb2tpZSBzdG9y
ZSwgZm9sbG93aW5nIHRoZSBjb29raWUgYWNjZXB0IHBvbGljeS4KKyBAcGFyYW0gY29va2llcyBU
aGUgY29va2llcyB0byBzZXQuCisgQHBhcmFtIFVSTCBUaGUgVVJMIGZyb20gd2hpY2ggdGhlIGNv
b2tpZXMgd2VyZSBzZW50LgorIEBwYXJhbSBtYWluRG9jdW1lbnRVUkwgVGhlIG1haW4gZG9jdW1l
bnQgVVJMIHRvIGJlIHVzZWQgYXMgYSBiYXNlIGZvciB0aGUgInNhbWUgZG9tYWluIGFzIG1haW4g
ZG9jdW1lbnQiIHBvbGljeS4KKyBAcGFyYW0gY29tcGxldGlvbkhhbmRsZXIgQSBibG9jayB0byBp
bnZva2Ugb25jZSB0aGUgY29va2llcyBoYXZlIGJlZW4gc3RvcmVkLgorICovCistICh2b2lkKXNl
dENvb2tpZXM6KE5TQXJyYXk8TlNIVFRQQ29va2llICo+ICopY29va2llcyBmb3JVUkw6KE5TVVJM
ICopdXJsIG1haW5Eb2N1bWVudFVSTDoobnVsbGFibGUgTlNVUkwgKiltYWluRG9jdW1lbnRVUkwg
Y29tcGxldGlvbkhhbmRsZXI6KG51bGxhYmxlIHZvaWQgKF4pKCkpY29tcGxldGlvbkhhbmRsZXI7
CisKKy8qISBAYWJzdHJhY3QgRGVsZXRlIHRoZSBzcGVjaWZpZWQgY29va2llLgorIEBwYXJhbSBj
b21wbGV0aW9uSGFuZGxlciBBIGJsb2NrIHRvIGludm9rZSBvbmNlIHRoZSBjb29raWUgaGFzIGJl
ZW4gZGVsZXRlZC4KKyAqLworLSAodm9pZClkZWxldGVDb29raWU6KE5TSFRUUENvb2tpZSAqKWNv
b2tpZSBjb21wbGV0aW9uSGFuZGxlcjoobnVsbGFibGUgdm9pZCAoXikoKSljb21wbGV0aW9uSGFu
ZGxlcjsKKworLyohIEBhYnN0cmFjdCBEZWxldGUgYWxsIGNvb2tpZXMgZnJvbSB0aGUgY29va2ll
IHN0b3JhZ2Ugc2luY2UgdGhlIHByb3ZpZGVkIGRhdGUuCisgQHBhcmFtIGRhdGUgVGhlIGRhdGUg
YWZ0ZXIgd2hpY2ggc2V0IGNvb2tpZXMgc2hvdWxkIGJlIHJlbW92ZWQuCisgQHBhcmFtIGNvbXBs
ZXRpb25IYW5kbGVyIEEgYmxvY2sgdG8gaW52b2tlIG9uY2UgdGhlIGNvb2tpZXMgaGF2ZSBiZWVu
IGRlbGV0ZWQuCisgKi8KKy0gKHZvaWQpcmVtb3ZlQ29va2llc1NpbmNlRGF0ZTooTlNEYXRlICop
ZGF0ZSBjb21wbGV0aW9uSGFuZGxlcjoobnVsbGFibGUgdm9pZCAoXikoKSljb21wbGV0aW9uSGFu
ZGxlcjsKKworLyohIEBhYnN0cmFjdCBTZXRzIHRoZSBjb29raWUgYWNjZXB0IHBvbGljeSBwcmVm
ZXJlbmNlIG9mIHRoZSByZWNlaXZlci4KKyBAcGFyYW0gcG9saWN5IFRoZSBjb29raWUgYWNjZXB0
IHBvbGljeSB0byBzZXQuCisgQHBhcmFtIGNvbXBsZXRpb25IYW5kbGVyIEEgYmxvY2sgdG8gaW52
b2tlIG9uY2UgdGhlIHBvbGljeSBoYXMgYmVlbiBzZXQuCisgKi8KKy0gKHZvaWQpc2V0Q29va2ll
QWNjZXB0UG9saWN5OihOU0hUVFBDb29raWVBY2NlcHRQb2xpY3kpcG9saWN5IGNvbXBsZXRpb25I
YW5kbGVyOihudWxsYWJsZSB2b2lkICheKSgpKWNvbXBsZXRpb25IYW5kbGVyOworCisvKiEgQGFi
c3RyYWN0IEZldGNoZXMgdGhlIGNvb2tpZSBhY2NlcHQgcG9saWN5IHByZWZlcmVuY2Ugb2YgdGhl
IHJlY2VpdmVyLgorIEBwYXJhbSBjb21wbGV0aW9uSGFuZGxlciBBIGJsb2NrIHRvIGludm9rZSB3
aXRoIHRoZSBmZXRjaGVkIHBvbGljeS4KKyAqLworLSAodm9pZClmZXRjaENvb2tpZUFjY2VwdFBv
bGljeToodm9pZCAoXikoTlNIVFRQQ29va2llQWNjZXB0UG9saWN5KSljb21wbGV0aW9uSGFuZGxl
cjsKKworQGVuZAorCitOU19BU1NVTUVfTk9OTlVMTF9FTkQKKworI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLSFRUUENvb2tpZVN0b3JhZ2Uu
bW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLSFRUUENvb2tpZVN0b3Jh
Z2UubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNTNjNzM0YTZmMjZhN2YwM2M4NDJmYTc0NGM4NTBmMjYwNTMyM2Vl
ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tIVFRQQ29va2llU3RvcmFnZS5tbQpAQCAtMCwwICsxLDE2MSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiV0tIVFRQQ29va2llU3RvcmFnZUludGVybmFsLmgi
CisKKyNpZiBXS19BUElfRU5BQkxFRAorCisjaW5jbHVkZSAiSFRUUENvb2tpZUFjY2VwdFBvbGlj
eS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ0ZOZXR3b3JrU1BJLmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9Db29raWUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgorI2luY2x1ZGUgPHd0Zi9SZXRh
aW5QdHIuaD4KKworc3RhdGljIE5TQXJyYXk8TlNIVFRQQ29va2llICo+ICpjb3JlQ29va2llc1Rv
TlNDb29raWVzKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiBjb3JlQ29va2llcykKK3sK
KyAgICBOU011dGFibGVBcnJheTxOU0hUVFBDb29raWUgKj4gKm5zQ29va2llcyA9IFtOU011dGFi
bGVBcnJheSBhcnJheVdpdGhDYXBhY2l0eTpjb3JlQ29va2llcy5zaXplKCldOworCisgICAgZm9y
IChhdXRvJiBjb29raWUgOiBjb3JlQ29va2llcykKKyAgICAgICAgW25zQ29va2llcyBhZGRPYmpl
Y3Q6KE5TSFRUUENvb2tpZSAqKWNvb2tpZV07CisKKyAgICByZXR1cm4gbnNDb29raWVzOworfQor
CitAaW1wbGVtZW50YXRpb24gV0tIVFRQQ29va2llU3RvcmFnZQorCistICh2b2lkKWRlYWxsb2MK
K3sKKyAgICBfY29va2llU3RvcmFnZS0+QVBJOjpIVFRQQ29va2llU3RvcmFnZTo6fkhUVFBDb29r
aWVTdG9yYWdlKCk7CisKKyAgICBbc3VwZXIgZGVhbGxvY107Cit9CisKKy0gKHZvaWQpZmV0Y2hD
b29raWVzOih2b2lkICheKShOU0FycmF5PE5TSFRUUENvb2tpZSAqPiAqKSljb21wbGV0aW9uSGFu
ZGxlcgoreworICAgIF9jb29raWVTdG9yYWdlLT5jb29raWVzKFtoYW5kbGVyID0gYWRvcHROUyhb
Y29tcGxldGlvbkhhbmRsZXIgY29weV0pXShjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYg
Y29va2llcykgeworICAgICAgICBhdXRvIHJhd0hhbmRsZXIgPSAodm9pZCAoXikoTlNBcnJheTxO
U0hUVFBDb29raWUgKj4gKikpaGFuZGxlci5nZXQoKTsKKyAgICAgICAgcmF3SGFuZGxlcihjb3Jl
Q29va2llc1RvTlNDb29raWVzKGNvb2tpZXMpKTsKKyAgICB9KTsKK30KKworLSAodm9pZClmZXRj
aENvb2tpZXNGb3JVUkw6KE5TVVJMICopdXJsIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShO
U0FycmF5PE5TSFRUUENvb2tpZSAqPiAqKSljb21wbGV0aW9uSGFuZGxlcgoreworICAgIF9jb29r
aWVTdG9yYWdlLT5jb29raWVzKHVybCwgW2hhbmRsZXIgPSBhZG9wdE5TKFtjb21wbGV0aW9uSGFu
ZGxlciBjb3B5XSldKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiBjb29raWVzKSB7Cisg
ICAgICAgIGF1dG8gcmF3SGFuZGxlciA9ICh2b2lkICheKShOU0FycmF5PE5TSFRUUENvb2tpZSAq
PiAqKSloYW5kbGVyLmdldCgpOworICAgICAgICByYXdIYW5kbGVyKGNvcmVDb29raWVzVG9OU0Nv
b2tpZXMoY29va2llcykpOworICAgIH0pOworfQorCistICh2b2lkKXNldENvb2tpZTooTlNIVFRQ
Q29va2llICopY29va2llIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKSgpKWNvbXBsZXRpb25I
YW5kbGVyCit7CisgICAgX2Nvb2tpZVN0b3JhZ2UtPnNldENvb2tpZShjb29raWUsIFtoYW5kbGVy
ID0gYWRvcHROUyhbY29tcGxldGlvbkhhbmRsZXIgY29weV0pXSgpIHsKKyAgICAgICAgYXV0byBy
YXdIYW5kbGVyID0gKHZvaWQgKF4pKCkpaGFuZGxlci5nZXQoKTsKKyAgICAgICAgaWYgKHJhd0hh
bmRsZXIpCisgICAgICAgICAgICByYXdIYW5kbGVyKCk7CisgICAgfSk7CisKK30KKworLSAodm9p
ZClkZWxldGVDb29raWU6KE5TSFRUUENvb2tpZSAqKWNvb2tpZSBjb21wbGV0aW9uSGFuZGxlcjoo
dm9pZCAoXikoKSljb21wbGV0aW9uSGFuZGxlcgoreworICAgIF9jb29raWVTdG9yYWdlLT5kZWxl
dGVDb29raWUoY29va2llLCBbaGFuZGxlciA9IGFkb3B0TlMoW2NvbXBsZXRpb25IYW5kbGVyIGNv
cHldKV0oKSB7CisgICAgICAgIGF1dG8gcmF3SGFuZGxlciA9ICh2b2lkICheKSgpKWhhbmRsZXIu
Z2V0KCk7CisgICAgICAgIGlmIChyYXdIYW5kbGVyKQorICAgICAgICAgICAgcmF3SGFuZGxlcigp
OworICAgIH0pOworfQorCistICh2b2lkKXNldENvb2tpZXM6KE5TQXJyYXk8TlNIVFRQQ29va2ll
ICo+ICopY29va2llcyBmb3JVUkw6KE5TVVJMICopVVJMIG1haW5Eb2N1bWVudFVSTDooTlNVUkwg
KiltYWluRG9jdW1lbnRVUkwgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKCkpY29tcGxldGlv
bkhhbmRsZXIKK3sKKyAgICBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiBjb3JlQ29va2llczsKKyAg
ICBjb3JlQ29va2llcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGNvb2tpZXMuY291bnQpOworICAg
IGZvciAoTlNIVFRQQ29va2llICpjb29raWUgOiBjb29raWVzKQorICAgICAgICBjb3JlQ29va2ll
cy51bmNoZWNrZWRBcHBlbmQoY29va2llKTsKKworICAgIF9jb29raWVTdG9yYWdlLT5zZXRDb29r
aWVzKGNvcmVDb29raWVzLCBVUkwsIG1haW5Eb2N1bWVudFVSTCwgW2hhbmRsZXIgPSBhZG9wdE5T
KFtjb21wbGV0aW9uSGFuZGxlciBjb3B5XSldKCkgeworICAgICAgICBhdXRvIHJhd0hhbmRsZXIg
PSAodm9pZCAoXikoKSloYW5kbGVyLmdldCgpOworICAgICAgICBpZiAocmF3SGFuZGxlcikKKyAg
ICAgICAgICAgIHJhd0hhbmRsZXIoKTsKKyAgICB9KTsKK30KKworLSAodm9pZClyZW1vdmVDb29r
aWVzU2luY2VEYXRlOihOU0RhdGUgKilkYXRlIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKSgp
KWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAgYXV0byBzeXN0ZW1DbG9ja1RpbWUgPSBzdGQ6OmNo
cm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50KHN0ZDo6Y2hyb25vOjpkdXJhdGlvbl9jYXN0
PHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OmR1cmF0aW9uPihzdGQ6OmNocm9ubzo6ZHVyYXRp
b248ZG91YmxlPihkYXRlLnRpbWVJbnRlcnZhbFNpbmNlMTk3MCkpKTsKKworICAgIF9jb29raWVT
dG9yYWdlLT5yZW1vdmVDb29raWVzU2luY2VEYXRlKHN5c3RlbUNsb2NrVGltZSwgW2hhbmRsZXIg
PSBhZG9wdE5TKFtjb21wbGV0aW9uSGFuZGxlciBjb3B5XSldKCkgeworICAgICAgICBhdXRvIHJh
d0hhbmRsZXIgPSAodm9pZCAoXikoKSloYW5kbGVyLmdldCgpOworICAgICAgICBpZiAocmF3SGFu
ZGxlcikKKyAgICAgICAgICAgIHJhd0hhbmRsZXIoKTsKKyAgICB9KTsKK30KKworLSAodm9pZClz
ZXRDb29raWVBY2NlcHRQb2xpY3k6KE5TSFRUUENvb2tpZUFjY2VwdFBvbGljeSlwb2xpY3kgY29t
cGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKCkpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICBfY29v
a2llU3RvcmFnZS0+c2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShwb2xpY3ksIFtoYW5kbGVyID0g
YWRvcHROUyhbY29tcGxldGlvbkhhbmRsZXIgY29weV0pXSgpIHsKKyAgICAgICAgYXV0byByYXdI
YW5kbGVyID0gKHZvaWQgKF4pKCkpaGFuZGxlci5nZXQoKTsKKyAgICAgICAgaWYgKHJhd0hhbmRs
ZXIpCisgICAgICAgICAgICByYXdIYW5kbGVyKCk7CisgICAgfSk7Cit9CisKK3N0YXRpYyBOU0hU
VFBDb29raWVBY2NlcHRQb2xpY3kga2l0Q29va2llUG9saWN5VG9OU0Nvb2tpZVBvbGljeShXZWJL
aXQ6OkhUVFBDb29raWVBY2NlcHRQb2xpY3kga2l0UG9saWN5KQoreworICAgIHN3aXRjaCAoa2l0
UG9saWN5KSB7CisgICAgY2FzZSBXZWJLaXQ6OkhUVFBDb29raWVBY2NlcHRQb2xpY3lBbHdheXM6
CisgICAgICAgIHJldHVybiBOU0hUVFBDb29raWVBY2NlcHRQb2xpY3lBbHdheXM7CisgICAgY2Fz
ZSBXZWJLaXQ6OkhUVFBDb29raWVBY2NlcHRQb2xpY3lOZXZlcjoKKyAgICAgICAgcmV0dXJuIE5T
SFRUUENvb2tpZUFjY2VwdFBvbGljeU5ldmVyOworICAgIGNhc2UgV2ViS2l0OjpIVFRQQ29va2ll
QWNjZXB0UG9saWN5T25seUZyb21NYWluRG9jdW1lbnREb21haW46CisgICAgICAgIHJldHVybiBO
U0hUVFBDb29raWVBY2NlcHRQb2xpY3lPbmx5RnJvbU1haW5Eb2N1bWVudERvbWFpbjsKKyAgICBj
YXNlIFdlYktpdDo6SFRUUENvb2tpZUFjY2VwdFBvbGljeUV4Y2x1c2l2ZWx5RnJvbU1haW5Eb2N1
bWVudERvbWFpbjoKKyAgICAgICAgLy8gQ2FzdCByZXF1aXJlZCBiZWNhdXNlIG9mIENGTmV0d29y
a1NQSS4KKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PE5TSFRUUENvb2tpZUFjY2VwdFBvbGlj
eT4oTlNIVFRQQ29va2llQWNjZXB0UG9saWN5RXhjbHVzaXZlbHlGcm9tTWFpbkRvY3VtZW50RG9t
YWluKTsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9
CisKKyAgICByZXR1cm4gTlNIVFRQQ29va2llQWNjZXB0UG9saWN5TmV2ZXI7Cit9CisKKy0gKHZv
aWQpZmV0Y2hDb29raWVBY2NlcHRQb2xpY3k6KHZvaWQgKF4pKE5TSFRUUENvb2tpZUFjY2VwdFBv
bGljeSkpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICBfY29va2llU3RvcmFnZS0+Z2V0SFRUUENv
b2tpZUFjY2VwdFBvbGljeShbaGFuZGxlciA9IGFkb3B0TlMoW2NvbXBsZXRpb25IYW5kbGVyIGNv
cHldKV0oV2ViS2l0OjpIVFRQQ29va2llQWNjZXB0UG9saWN5IHBvbGljeSkgeworICAgICAgICBh
dXRvIHJhd0hhbmRsZXIgPSAodm9pZCAoXikoTlNIVFRQQ29va2llQWNjZXB0UG9saWN5KSloYW5k
bGVyLmdldCgpOworICAgICAgICByYXdIYW5kbGVyKGtpdENvb2tpZVBvbGljeVRvTlNDb29raWVQ
b2xpY3kocG9saWN5KSk7CisgICAgfSk7Cit9CisKKyNwcmFnbWEgbWFyayBXS09iamVjdCBwcm90
b2NvbCBpbXBsZW1lbnRhdGlvbgorCistIChBUEk6Ok9iamVjdCYpX2FwaU9iamVjdAoreworICAg
IHJldHVybiAqX2Nvb2tpZVN0b3JhZ2U7Cit9CisKK0BlbmQKKworI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLSFRUUENvb2tpZVN0b3JhZ2VJ
bnRlcm5hbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0hUVFBDb29r
aWVTdG9yYWdlSW50ZXJuYWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lOGEzMGJhZDI4ZWIxYTAyNDZjMjQxZWU3
NjZmZmJmMzQxODEwYmJhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS0hUVFBDb29raWVTdG9yYWdlSW50ZXJuYWwuaApAQCAtMCwwICsxLDQ5
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiV0tIVFRQQ29va2llU3RvcmFnZS5oIgorCisjaWYg
V0tfQVBJX0VOQUJMRUQKKworI2ltcG9ydCAiQVBJSFRUUENvb2tpZVN0b3JhZ2UuaCIKKyNpbXBv
cnQgIldLT2JqZWN0LmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitpbmxpbmUgV0tIVFRQQ29v
a2llU3RvcmFnZSAqd3JhcHBlcihBUEk6OkhUVFBDb29raWVTdG9yYWdlJiBjb29raWVTdG9yYWdl
KQoreworICAgIEFTU0VSVChbY29va2llU3RvcmFnZS53cmFwcGVyKCkgaXNLaW5kT2ZDbGFzczpb
V0tIVFRQQ29va2llU3RvcmFnZSBjbGFzc11dKTsKKyAgICByZXR1cm4gKFdLSFRUUENvb2tpZVN0
b3JhZ2UgKiljb29raWVTdG9yYWdlLndyYXBwZXIoKTsKK30KKworfQorCitAaW50ZXJmYWNlIFdL
SFRUUENvb2tpZVN0b3JhZ2UgKCkgPFdLT2JqZWN0PiB7CitAcGFja2FnZQorICAgIEFQSTo6T2Jq
ZWN0U3RvcmFnZTxBUEk6OkhUVFBDb29raWVTdG9yYWdlPiBfY29va2llU3RvcmFnZTsKK30KK0Bl
bmQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLUHJvY2Vzc1Bvb2wubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLUHJvY2Vzc1Bvb2wubW0KaW5kZXggM2Y0M2JmYzY1ZGQ3NDBiOTYwYzhhMDFhZTM2NDk3NDgx
NDNkZjdkNC4uOGY4N2RhY2U4MjcyZGViM2MyMjdmYTA1MzI1ODAzNDU2Y2ZiNDIxZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5t
bQpAQCAtMTk2LDcgKzE5Niw3IEBAIHN0YXRpYyBXZWJLaXQ6OkhUVFBDb29raWVBY2NlcHRQb2xp
Y3kgdG9IVFRQQ29va2llQWNjZXB0UG9saWN5KE5TSFRUUENvb2tpZUFjY2VwCiAKIC0gKHZvaWQp
X3NldENvb2tpZUFjY2VwdFBvbGljeTooTlNIVFRQQ29va2llQWNjZXB0UG9saWN5KXBvbGljeQog
ewotICAgIF9wcm9jZXNzUG9vbC0+c3VwcGxlbWVudDxXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQ
cm94eT4oKS0+c2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSh0b0hUVFBDb29raWVBY2NlcHRQb2xp
Y3kocG9saWN5KSk7CisgICAgX3Byb2Nlc3NQb29sLT5zdXBwbGVtZW50PFdlYktpdDo6V2ViQ29v
a2llTWFuYWdlclByb3h5PigpLT5zZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KFdlYkNvcmU6OlNl
c3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpLCB0b0hUVFBDb29raWVBY2NlcHRQb2xpY3kocG9s
aWN5KSwgW10oV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yKXt9KTsKIH0KIAogLSAoaWQpX29i
amVjdEZvckJ1bmRsZVBhcmFtZXRlcjooTlNTdHJpbmcgKilwYXJhbWV0ZXIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1t
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUu
bW0KaW5kZXggNzEzODE5ZTQ3NDBhZDM0ZDkwMThkYzg5MDM3MjE5MDQ5ZmRmMWJjNy4uMjM0Zjgw
ZWJmZTU4NGNjODYyMzUxNWU5MzdmZmYzMzMwYjliYTIwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KQEAg
LTI4LDYgKzI4LDcgQEAKIAogI2lmIFdLX0FQSV9FTkFCTEVECiAKKyNpbXBvcnQgIldLSFRUUENv
b2tpZVN0b3JhZ2VJbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tOU0FycmF5LmgiCiAjaW1wb3J0ICJX
S1dlYnNpdGVEYXRhUmVjb3JkSW50ZXJuYWwuaCIKICNpbXBvcnQgIldlYnNpdGVEYXRhRmV0Y2hP
cHRpb24uaCIKQEAgLTM4LDcgKzM5LDcgQEAgQGltcGxlbWVudGF0aW9uIFdLV2Vic2l0ZURhdGFT
dG9yZQogCiArIChXS1dlYnNpdGVEYXRhU3RvcmUgKilkZWZhdWx0RGF0YVN0b3JlCiB7Ci0gICAg
cmV0dXJuIFdlYktpdDo6d3JhcHBlcigqQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0
YVN0b3JlKCkuZ2V0KCkpOworICAgIHJldHVybiBXZWJLaXQ6OndyYXBwZXIoQVBJOjpXZWJzaXRl
RGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlKCkuZ2V0KCkpOwogfQogCiArIChXS1dlYnNpdGVE
YXRhU3RvcmUgKilub25QZXJzaXN0ZW50RGF0YVN0b3JlCkBAIC0xOTQsNiArMTk1LDExIEBAIC0g
KHZvaWQpX3NldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkOihCT09MKWVuYWJsZWQKICAg
ICBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldFJlc291cmNlTG9hZFN0
YXRpc3RpY3NFbmFibGVkKGVuYWJsZWQpOwogfQogCistIChXS0hUVFBDb29raWVTdG9yYWdlICop
X2h0dHBDb29raWVTdG9yYWdlCit7CisgICAgcmV0dXJuIFdlYktpdDo6d3JhcHBlcihfd2Vic2l0
ZURhdGFTdG9yZS0+aHR0cENvb2tpZVN0b3JhZ2UoKSk7Cit9CisKIEBlbmQKIAogI2VuZGlmIC8v
IFdLX0FQSV9FTkFCTEVECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oCmluZGV4IDQ5ZDliZTZh
ZDExOWIzYTExMjE1MmI2YmFmZTM4YWRlMjY2MmU2ZWIuLjA5OWIwNDU5ZWU2ZWEyZTZjZmY2Zjdk
NDFlMDAyMzA0NGI2ZTdlOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oCkBAIC0yOSw2
ICsyOSw3IEBACiAKIE5TX0FTU1VNRV9OT05OVUxMX0JFR0lOCiAKK0BjbGFzcyBXS0hUVFBDb29r
aWVTdG9yYWdlOwogQGNsYXNzIF9XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOwogCiB0
eXBlZGVmIE5TX09QVElPTlMoTlNVSW50ZWdlciwgX1dLV2Vic2l0ZURhdGFTdG9yZUZldGNoT3B0
aW9ucykgewpAQCAtNDMsNiArNDQsOSBAQCB0eXBlZGVmIE5TX09QVElPTlMoTlNVSW50ZWdlciwg
X1dLV2Vic2l0ZURhdGFTdG9yZUZldGNoT3B0aW9ucykgewogCiBAcHJvcGVydHkgKG5vbmF0b21p
Yywgc2V0dGVyPV9zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZDopIEJPT0wgX3Jlc291
cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjEyKSwg
aW9zKDEwLjApKTsKIAorLyohIEBhYnN0cmFjdCBSZXR1cm5zIHRoZSBjb29raWUgc3RvcmFnZSBy
ZXByZXNlbnRpbmcgSFRUUCBjb29raWVzIGluIHRoaXMgd2Vic2l0ZSBkYXRhIHN0b3JlLiAqLwor
QHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBXS0hUVFBDb29raWVTdG9yYWdlICpfaHR0
cENvb2tpZVN0b3JhZ2UgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhX
S19JT1NfVEJBKSk7CisKIEBlbmQKIAogTlNfQVNTVU1FX05PTk5VTExfRU5ECmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb29raWVNYW5hZ2VyLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvb2tpZU1hbmFnZXIu
Y3BwCmluZGV4IDc1YTY2ZWM2MThmMDVjODFiZTgzMTdiMmZmMmQwZDkzNDdlOTUxYTMuLmE3ZThi
MzQ3N2ZiMjI5ZTMxYWNiNjJlM2E2NGZiNDgzYjE5YjYwYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvb2tpZU1hbmFnZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvb2tpZU1hbmFnZXIuY3BwCkBA
IC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyUHJpdmF0
ZS5oIgogI2luY2x1ZGUgIldlYktpdFdlYnNpdGVEYXRhUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldl
YnNpdGVEYXRhUmVjb3JkLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9TZXNzaW9uSUQuaD4KICNpbmNs
dWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgog
CkBAIC0xNzgsNyArMTc5LDcgQEAgdm9pZCB3ZWJraXRfY29va2llX21hbmFnZXJfc2V0X2FjY2Vw
dF9wb2xpY3koV2ViS2l0Q29va2llTWFuYWdlciogbWFuYWdlciwgV2ViS2kKICAgICBnX3JldHVy
bl9pZl9mYWlsKFdFQktJVF9JU19DT09LSUVfTUFOQUdFUihtYW5hZ2VyKSk7CiAKICAgICBmb3Ig
KGF1dG8qIHByb2Nlc3NQb29sIDogd2Via2l0V2Vic2l0ZURhdGFNYW5hZ2VyR2V0UHJvY2Vzc1Bv
b2xzKG1hbmFnZXItPnByaXYtPmRhdGFNYW5hZ2VyKSkKLSAgICAgICAgcHJvY2Vzc1Bvb2wtPnN1
cHBsZW1lbnQ8V2ViQ29va2llTWFuYWdlclByb3h5PigpLT5zZXRIVFRQQ29va2llQWNjZXB0UG9s
aWN5KHRvSFRUUENvb2tpZUFjY2VwdFBvbGljeShwb2xpY3kpKTsKKyAgICAgICAgcHJvY2Vzc1Bv
b2wtPnN1cHBsZW1lbnQ8V2ViQ29va2llTWFuYWdlclByb3h5PigpLT5zZXRIVFRQQ29va2llQWNj
ZXB0UG9saWN5KFdlYkNvcmU6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpLCB0b0hUVFBD
b29raWVBY2NlcHRQb2xpY3kocG9saWN5KSwgW10oQ2FsbGJhY2tCYXNlOjpFcnJvcil7fSk7CiB9
CiAKIHN0YXRpYyB2b2lkIHdlYmtpdENvb2tpZU1hbmFnZXJHZXRBY2NlcHRQb2xpY3lDYWxsYmFj
ayhXS0hUVFBDb29raWVBY2NlcHRQb2xpY3kgcG9saWN5LCBXS0Vycm9yUmVmLCB2b2lkKiBjb250
ZXh0KQpAQCAtMjEyLDcgKzIxMyw3IEBAIHZvaWQgd2Via2l0X2Nvb2tpZV9tYW5hZ2VyX2dldF9h
Y2NlcHRfcG9saWN5KFdlYktpdENvb2tpZU1hbmFnZXIqIG1hbmFnZXIsIEdDYW5jCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICBwcm9jZXNzUG9vbHNbMF0tPnN1cHBsZW1lbnQ8V2ViQ29v
a2llTWFuYWdlclByb3h5PigpLT5nZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KAorICAgIHByb2Nl
c3NQb29sc1swXS0+c3VwcGxlbWVudDxXZWJDb29raWVNYW5hZ2VyUHJveHk+KCktPmdldEhUVFBD
b29raWVBY2NlcHRQb2xpY3koV2ViQ29yZTo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCks
IAogICAgICAgICB0b0dlbmVyaWNDYWxsYmFja0Z1bmN0aW9uPFdLSFRUUENvb2tpZUFjY2VwdFBv
bGljeSwgSFRUUENvb2tpZUFjY2VwdFBvbGljeT4odGFzay5sZWFrUmVmKCksIHdlYmtpdENvb2tp
ZU1hbmFnZXJHZXRBY2NlcHRQb2xpY3lDYWxsYmFjaykpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lv
bi5jcHAKaW5kZXggNDhjYWRjNzEyNGY5ZGJlNjg1YmJkZTQ4Y2IzZmVlM2QxODM5MTZkOC4uYTgz
MTg0YWY5MDJiNDc1YzQ4ZThkMGFjZjc4MDYxNzFjYjRmYmVmMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNz
aW9uLmNwcApAQCAtNzMwLDcgKzczMCw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OmFk
ZFNpbmdsZUNvb2tpZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluCiAKICAg
ICAvLyBGSVhNRTogVXNpbmcgYWN0aXZlVVJMIGhlcmUgdHdpY2UgaXMgYmFzaWNhbGx5IHNheWlu
ZyAidGhpcyBpcyBhbHdheXMgaW4gdGhlIGNvbnRleHQgb2YgdGhlIG1haW4gZG9jdW1lbnQiCiAg
ICAgLy8gd2hpY2ggcHJvYmFibHkgaXNuJ3QgYWNjdXJhdGUuCi0gICAgY29va2llTWFuYWdlci0+
c2V0Q29va2llcyhXZWJDb3JlOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSwgeyBjb29r
aWUgfSwgYWN0aXZlVVJMLCBhY3RpdmVVUkwpOworICAgIGNvb2tpZU1hbmFnZXItPnNldENvb2tp
ZXMoV2ViQ29yZTo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCksIHsgY29va2llIH0sIGFj
dGl2ZVVSTCwgYWN0aXZlVVJMLCBbXShDYWxsYmFja0Jhc2U6OkVycm9yKXt9KTsKIAogICAgIGNh
bGxiYWNrLT5zZW5kU3VjY2VzcygpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViQ29va2llTWFuYWdlclByb3h5LmNwcAppbmRleCAyZWFhNWNlM2JmYTUzNTk4NGRmM2Uw
ZTZjNzVkYTViMjE5MjQ2NzE5Li5lMDIzYjgyNWVlOWY0OTBkMjA3ZGVhMjlhN2Y3ZjUzMTdiODJh
M2VkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdl
clByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdl
clByb3h5LmNwcApAQCAtMzIsOCArMzIsMTEgQEAKICNpbmNsdWRlICJXZWJDb29raWVNYW5hZ2Vy
TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJDb29raWVNYW5hZ2VyUHJveHlNZXNzYWdlcy5oIgog
I2luY2x1ZGUgIldlYlByb2Nlc3NQb29sLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Db29raWUuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luRGF0YS5oPgogCit1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNvbnN0IGNoYXIqIFdlYkNvb2tp
ZU1hbmFnZXJQcm94eTo6c3VwcGxlbWVudE5hbWUoKQpAQCAtOTQsNyArOTcsNyBAQCB2b2lkIFdl
YkNvb2tpZU1hbmFnZXJQcm94eTo6ZGVyZWZXZWJDb250ZXh0U3VwcGxlbWVudCgpCiAgICAgQVBJ
OjpPYmplY3Q6OmRlcmVmKCk7CiB9CiAKLXZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpnZXRI
b3N0bmFtZXNXaXRoQ29va2llcyhXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBGdW5jdGlv
bjx2b2lkIChBUEk6OkFycmF5KiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5j
dGlvbikKK3ZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpnZXRIb3N0bmFtZXNXaXRoQ29va2ll
cyhTZXNzaW9uSUQgc2Vzc2lvbklELCBGdW5jdGlvbjx2b2lkIChBUEk6OkFycmF5KiwgQ2FsbGJh
Y2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKICAgICBhdXRvIGNhbGxiYWNr
ID0gQXJyYXlDYWxsYmFjazo6Y3JlYXRlKFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbikpOwogICAg
IHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgpOwpAQCAtMTE0LDM3
ICsxMTcsOTYgQEAgdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRpZEdldEhvc3RuYW1lc1dp
dGhDb29raWVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBob3MKICAgICBjYWxsYmFjay0+cGVyZm9y
bUNhbGxiYWNrV2l0aFJldHVyblZhbHVlKEFQSTo6QXJyYXk6OmNyZWF0ZVN0cmluZ0FycmF5KGhv
c3RuYW1lcykucHRyKCkpOwogfQogCi12b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGVsZXRl
Q29va2llc0Zvckhvc3RuYW1lKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0
cmluZyYgaG9zdG5hbWUpCit2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGVsZXRlQ29va2ll
c0Zvckhvc3RuYW1lKFNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgaG9zdG5hbWUp
CiB7CiAgICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvTmV0d29ya2luZ1Byb2Nlc3NSZWxhdW5jaGlu
Z0lmTmVjZXNzYXJ5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpEZWxldGVDb29raWVzRm9y
SG9zdG5hbWUoc2Vzc2lvbklELCBob3N0bmFtZSkpOwogfQogCi12b2lkIFdlYkNvb2tpZU1hbmFn
ZXJQcm94eTo6ZGVsZXRlQWxsQ29va2llcyhXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQor
dm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRlbGV0ZUFsbENvb2tpZXMoU2Vzc2lvbklEIHNl
c3Npb25JRCkKIHsKICAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9OZXR3b3JraW5nUHJvY2Vzc1Jl
bGF1bmNoaW5nSWZOZWNlc3NhcnkoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OkRlbGV0ZUFs
bENvb2tpZXMoc2Vzc2lvbklEKSk7CiB9CiAKLXZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5Ojpk
ZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZShXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IHRpbWUpCit2b2lkIFdlYkNv
b2tpZU1hbmFnZXJQcm94eTo6ZGVsZXRlQ29va2llKFNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0
IENvb2tpZSYgY29va2llLCBGdW5jdGlvbjx2b2lkIChDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBj
YWxsYmFja0Z1bmN0aW9uKQoreworICAgIGF1dG8gY2FsbGJhY2sgPSBWb2lkQ2FsbGJhY2s6OmNy
ZWF0ZShXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pKTsKKyAgICB1aW50NjRfdCBjYWxsYmFja0lE
ID0gY2FsbGJhY2stPmNhbGxiYWNrSUQoKTsKKyAgICBtX3ZvaWRDYWxsYmFja3Muc2V0KGNhbGxi
YWNrSUQsIFdURk1vdmUoY2FsbGJhY2spKTsKKworICAgIHByb2Nlc3NQb29sKCktPnNlbmRUb05l
dHdvcmtpbmdQcm9jZXNzUmVsYXVuY2hpbmdJZk5lY2Vzc2FyeShNZXNzYWdlczo6V2ViQ29va2ll
TWFuYWdlcjo6RGVsZXRlQ29va2llKHNlc3Npb25JRCwgY29va2llLCBjYWxsYmFja0lEKSk7Cit9
CisKK3ZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpkZWxldGVBbGxDb29raWVzTW9kaWZpZWRT
aW5jZShTZXNzaW9uSUQgc2Vzc2lvbklELCBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1l
X3BvaW50IHRpbWUsIEZ1bmN0aW9uPHZvaWQgKENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxi
YWNrRnVuY3Rpb24pCit7CisgICAgYXV0byBjYWxsYmFjayA9IFZvaWRDYWxsYmFjazo6Y3JlYXRl
KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbikpOworICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBj
YWxsYmFjay0+Y2FsbGJhY2tJRCgpOworICAgIG1fdm9pZENhbGxiYWNrcy5zZXQoY2FsbGJhY2tJ
RCwgV1RGTW92ZShjYWxsYmFjaykpOworCisgICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvTmV0d29y
a2luZ1Byb2Nlc3NSZWxhdW5jaGluZ0lmTmVjZXNzYXJ5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5h
Z2VyOjpEZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZShzZXNzaW9uSUQsIHRpbWUsIGNhbGxi
YWNrSUQpKTsKK30KKwordm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OnNldENvb2tpZShTZXNz
aW9uSUQgc2Vzc2lvbklELCBjb25zdCBDb29raWUmIGNvb2tpZSwgRnVuY3Rpb248dm9pZCAoQ2Fs
bGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKLSAgICBwcm9jZXNzUG9v
bCgpLT5zZW5kVG9OZXR3b3JraW5nUHJvY2Vzc1JlbGF1bmNoaW5nSWZOZWNlc3NhcnkoTWVzc2Fn
ZXM6OldlYkNvb2tpZU1hbmFnZXI6OkRlbGV0ZUFsbENvb2tpZXNNb2RpZmllZFNpbmNlKHNlc3Np
b25JRCwgdGltZSkpOworICAgIGF1dG8gY2FsbGJhY2sgPSBWb2lkQ2FsbGJhY2s6OmNyZWF0ZShX
VEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pKTsKKyAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gY2Fs
bGJhY2stPmNhbGxiYWNrSUQoKTsKKyAgICBtX3ZvaWRDYWxsYmFja3Muc2V0KGNhbGxiYWNrSUQs
IFdURk1vdmUoY2FsbGJhY2spKTsKKworICAgIHByb2Nlc3NQb29sKCktPnNlbmRUb05ldHdvcmtp
bmdQcm9jZXNzUmVsYXVuY2hpbmdJZk5lY2Vzc2FyeShNZXNzYWdlczo6V2ViQ29va2llTWFuYWdl
cjo6U2V0Q29va2llKHNlc3Npb25JRCwgY29va2llLCBjYWxsYmFja0lEKSk7CiB9CiAKLXZvaWQg
V2ViQ29va2llTWFuYWdlclByb3h5OjpzZXRDb29raWVzKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiBjb29raWVzLCBjb25zdCBXZWJD
b3JlOjpVUkwmIHVybCwgY29uc3QgV2ViQ29yZTo6VVJMJiBtYWluRG9jdW1lbnRVUkwpCit2b2lk
IFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6c2V0Q29va2llcyhTZXNzaW9uSUQgc2Vzc2lvbklELCBj
b25zdCBWZWN0b3I8Q29va2llPiYgY29va2llcywgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFVSTCYg
bWFpbkRvY3VtZW50VVJMLCBGdW5jdGlvbjx2b2lkIChDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBj
YWxsYmFja0Z1bmN0aW9uKQogewotICAgIHByb2Nlc3NQb29sKCktPnNlbmRUb05ldHdvcmtpbmdQ
cm9jZXNzUmVsYXVuY2hpbmdJZk5lY2Vzc2FyeShNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6
U2V0Q29va2llcyhzZXNzaW9uSUQsIGNvb2tpZXMsIHVybCwgbWFpbkRvY3VtZW50VVJMKSk7Cisg
ICAgYXV0byBjYWxsYmFjayA9IFZvaWRDYWxsYmFjazo6Y3JlYXRlKFdURk1vdmUoY2FsbGJhY2tG
dW5jdGlvbikpOworICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJ
RCgpOworICAgIG1fdm9pZENhbGxiYWNrcy5zZXQoY2FsbGJhY2tJRCwgV1RGTW92ZShjYWxsYmFj
aykpOworCisgICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvTmV0d29ya2luZ1Byb2Nlc3NSZWxhdW5j
aGluZ0lmTmVjZXNzYXJ5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpTZXRDb29raWVzKHNl
c3Npb25JRCwgY29va2llcywgdXJsLCBtYWluRG9jdW1lbnRVUkwsIGNhbGxiYWNrSUQpKTsKIH0K
IAotdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OnN0YXJ0T2JzZXJ2aW5nQ29va2llQ2hhbmdl
cyhXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQordm9pZCBXZWJDb29raWVNYW5hZ2VyUHJv
eHk6OmdldEFsbENvb2tpZXMoU2Vzc2lvbklEIHNlc3Npb25JRCwgRnVuY3Rpb248dm9pZCAoY29u
c3QgVmVjdG9yPENvb2tpZT4mLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0
aW9uKQoreworICAgIGF1dG8gY2FsbGJhY2sgPSBHZXRDb29raWVzQ2FsbGJhY2s6OmNyZWF0ZShX
VEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pKTsKKyAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gY2Fs
bGJhY2stPmNhbGxiYWNrSUQoKTsKKyAgICBtX2dldENvb2tpZXNDYWxsYmFja3Muc2V0KGNhbGxi
YWNrSUQsIFdURk1vdmUoY2FsbGJhY2spKTsKKworICAgIHByb2Nlc3NQb29sKCktPnNlbmRUb05l
dHdvcmtpbmdQcm9jZXNzUmVsYXVuY2hpbmdJZk5lY2Vzc2FyeShNZXNzYWdlczo6V2ViQ29va2ll
TWFuYWdlcjo6R2V0QWxsQ29va2llcyhzZXNzaW9uSUQsIGNhbGxiYWNrSUQpKTsKK30KKwordm9p
ZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmdldENvb2tpZXMoU2Vzc2lvbklEIHNlc3Npb25JRCwg
Y29uc3QgVVJMJiB1cmwsIEZ1bmN0aW9uPHZvaWQgKGNvbnN0IFZlY3RvcjxDb29raWU+JiwgQ2Fs
bGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKK3sKKyAgICBhdXRvIGNhbGxi
YWNrID0gR2V0Q29va2llc0NhbGxiYWNrOjpjcmVhdGUoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9u
KSk7CisgICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7Cisg
ICAgbV9nZXRDb29raWVzQ2FsbGJhY2tzLnNldChjYWxsYmFja0lELCBXVEZNb3ZlKGNhbGxiYWNr
KSk7CisKKyAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9OZXR3b3JraW5nUHJvY2Vzc1JlbGF1bmNo
aW5nSWZOZWNlc3NhcnkoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OkdldENvb2tpZXMoc2Vz
c2lvbklELCB1cmwsIGNhbGxiYWNrSUQpKTsKK30KKwordm9pZCBXZWJDb29raWVNYW5hZ2VyUHJv
eHk6OmRpZFNldENvb2tpZXModWludDY0X3QgY2FsbGJhY2tJRCkKK3sKKyAgICBtX3ZvaWRDYWxs
YmFja3MudGFrZShjYWxsYmFja0lEKS0+cGVyZm9ybUNhbGxiYWNrKCk7Cit9CisKK3ZvaWQgV2Vi
Q29va2llTWFuYWdlclByb3h5OjpkaWRHZXRDb29raWVzKGNvbnN0IFZlY3RvcjxDb29raWU+JiBj
b29raWVzLCB1aW50NjRfdCBjYWxsYmFja0lEKQoreworICAgIG1fZ2V0Q29va2llc0NhbGxiYWNr
cy50YWtlKGNhbGxiYWNrSUQpLT5wZXJmb3JtQ2FsbGJhY2tXaXRoUmV0dXJuVmFsdWUoY29va2ll
cyk7Cit9CisKK3ZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpkaWREZWxldGVDb29raWVzKHVp
bnQ2NF90IGNhbGxiYWNrSUQpCit7CisgICAgbV92b2lkQ2FsbGJhY2tzLnRha2UoY2FsbGJhY2tJ
RCktPnBlcmZvcm1DYWxsYmFjaygpOworfQorCit2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6
c3RhcnRPYnNlcnZpbmdDb29raWVDaGFuZ2VzKFNlc3Npb25JRCBzZXNzaW9uSUQpCiB7CiAgICAg
cHJvY2Vzc1Bvb2woKS0+c2VuZFRvTmV0d29ya2luZ1Byb2Nlc3NSZWxhdW5jaGluZ0lmTmVjZXNz
YXJ5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpTdGFydE9ic2VydmluZ0Nvb2tpZUNoYW5n
ZXMoc2Vzc2lvbklEKSk7CiB9CiAKLXZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpzdG9wT2Jz
ZXJ2aW5nQ29va2llQ2hhbmdlcyhXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQordm9pZCBX
ZWJDb29raWVNYW5hZ2VyUHJveHk6OnN0b3BPYnNlcnZpbmdDb29raWVDaGFuZ2VzKFNlc3Npb25J
RCBzZXNzaW9uSUQpCiB7CiAgICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvTmV0d29ya2luZ1Byb2Nl
c3NSZWxhdW5jaGluZ0lmTmVjZXNzYXJ5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpTdG9w
T2JzZXJ2aW5nQ29va2llQ2hhbmdlcyhzZXNzaW9uSUQpKTsKIH0KIAotdm9pZCBXZWJDb29raWVN
YW5hZ2VyUHJveHk6OnNldENvb2tpZU9ic2VydmVyQ2FsbGJhY2soV2ViQ29yZTo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgc3RkOjpmdW5jdGlvbjx2b2lkICgpPiYmIGNhbGxiYWNrKQordm9pZCBXZWJD
b29raWVNYW5hZ2VyUHJveHk6OnNldENvb2tpZU9ic2VydmVyQ2FsbGJhY2soU2Vzc2lvbklEIHNl
c3Npb25JRCwgc3RkOjpmdW5jdGlvbjx2b2lkICgpPiYmIGNhbGxiYWNrKQogewogICAgIGlmIChj
YWxsYmFjaykKICAgICAgICAgbV9jb29raWVPYnNlcnZlcnMuc2V0KHNlc3Npb25JRCwgV1RGTW92
ZShjYWxsYmFjaykpOwpAQCAtMTUyLDE0ICsyMTQsMTQgQEAgdm9pZCBXZWJDb29raWVNYW5hZ2Vy
UHJveHk6OnNldENvb2tpZU9ic2VydmVyQ2FsbGJhY2soV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Np
b24KICAgICAgICAgbV9jb29raWVPYnNlcnZlcnMucmVtb3ZlKHNlc3Npb25JRCk7CiB9CiAKLXZv
aWQgV2ViQ29va2llTWFuYWdlclByb3h5Ojpjb29raWVzRGlkQ2hhbmdlKFdlYkNvcmU6OlNlc3Np
b25JRCBzZXNzaW9uSUQpCit2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6Y29va2llc0RpZENo
YW5nZShTZXNzaW9uSUQgc2Vzc2lvbklEKQogewogICAgIG1fY2xpZW50LmNvb2tpZXNEaWRDaGFu
Z2UodGhpcyk7CiAgICAgaWYgKGF1dG8gY2FsbGJhY2sgPSBtX2Nvb2tpZU9ic2VydmVycy5nZXQo
c2Vzc2lvbklEKSkKICAgICAgICAgY2FsbGJhY2soKTsKIH0KIAotdm9pZCBXZWJDb29raWVNYW5h
Z2VyUHJveHk6OnNldEhUVFBDb29raWVBY2NlcHRQb2xpY3koSFRUUENvb2tpZUFjY2VwdFBvbGlj
eSBwb2xpY3kpCit2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6c2V0SFRUUENvb2tpZUFjY2Vw
dFBvbGljeShTZXNzaW9uSUQsIEhUVFBDb29raWVBY2NlcHRQb2xpY3kgcG9saWN5LCBGdW5jdGlv
bjx2b2lkIChDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQogewogI2lm
IFBMQVRGT1JNKENPQ09BKQogICAgIGlmICghcHJvY2Vzc1Bvb2woKS0+aXNVc2luZ1Rlc3RpbmdO
ZXR3b3JrU2Vzc2lvbigpKQpAQCAtMTcyLDExICsyMzQsMTYgQEAgdm9pZCBXZWJDb29raWVNYW5h
Z2VyUHJveHk6OnNldEhUVFBDb29raWVBY2NlcHRQb2xpY3koSFRUUENvb2tpZUFjY2VwdFBvbGlj
eSBwb2wKICAgICAvLyBUaGUgcG9saWN5IGlzIG5vdCBzZW50IHRvIG5ld2x5IGNyZWF0ZWQgcHJv
Y2Vzc2VzIChvbmx5IFNvdXAgZG9lcyB0aGF0IHZpYSBzZXRJbml0aWFsSFRUUENvb2tpZUFjY2Vw
dFBvbGljeSgpKS4gVGhpcyBpcyBub3QgYSBzZXJpb3VzIHByb2JsZW0sIGJlY2F1c2U6CiAgICAg
Ly8gLSBXaGVuIHRlc3RpbmcsIHdlIG9ubHkgaGF2ZSBvbmUgV2ViUHJvY2VzcyBhbmQgb25lIE5l
dHdvcmtQcm9jZXNzLCBhbmQgV2ViS2l0VGVzdFJ1bm5lciBuZXZlciByZXN0YXJ0cyB0aGVtOwog
ICAgIC8vIC0gV2hlbiBub3QgdGVzdGluZywgQ29jb2EgaGFzIHRoZSBwb2xpY3kgcGVyc2lzdGVk
LCBhbmQgdGh1cyBuZXcgcHJvY2Vzc2VzIHVzZSBpdCAoZXZlbiBmb3IgZXBoZW1lcmFsIHNlc3Np
b25zKS4KLSAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6Oldl
YkNvb2tpZU1hbmFnZXI6OlNldEhUVFBDb29raWVBY2NlcHRQb2xpY3kocG9saWN5KSk7Ci0gICAg
cHJvY2Vzc1Bvb2woKS0+c2VuZFRvTmV0d29ya2luZ1Byb2Nlc3MoTWVzc2FnZXM6OldlYkNvb2tp
ZU1hbmFnZXI6OlNldEhUVFBDb29raWVBY2NlcHRQb2xpY3kocG9saWN5KSk7CisgICAgcHJvY2Vz
c1Bvb2woKS0+c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpT
ZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHBvbGljeSwgMCkpOworCisgICAgYXV0byBjYWxsYmFj
ayA9IFZvaWRDYWxsYmFjazo6Y3JlYXRlKFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbikpOworICAg
IHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgpOworICAgIG1fdm9p
ZENhbGxiYWNrcy5zZXQoY2FsbGJhY2tJRCwgV1RGTW92ZShjYWxsYmFjaykpOworCisgICAgcHJv
Y2Vzc1Bvb2woKS0+c2VuZFRvTmV0d29ya2luZ1Byb2Nlc3MoTWVzc2FnZXM6OldlYkNvb2tpZU1h
bmFnZXI6OlNldEhUVFBDb29raWVBY2NlcHRQb2xpY3kocG9saWN5LCBjYWxsYmFja0lEKSk7CiB9
CiAKLXZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpnZXRIVFRQQ29va2llQWNjZXB0UG9saWN5
KEZ1bmN0aW9uPHZvaWQgKEhUVFBDb29raWVBY2NlcHRQb2xpY3ksIENhbGxiYWNrQmFzZTo6RXJy
b3IpPiBjYWxsYmFja0Z1bmN0aW9uKQordm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmdldEhU
VFBDb29raWVBY2NlcHRQb2xpY3koU2Vzc2lvbklELCBGdW5jdGlvbjx2b2lkIChIVFRQQ29va2ll
QWNjZXB0UG9saWN5LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQog
ewogICAgIGF1dG8gY2FsbGJhY2sgPSBIVFRQQ29va2llQWNjZXB0UG9saWN5Q2FsbGJhY2s6OmNy
ZWF0ZShXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pKTsKIApAQCAtMTg4LDEzICsyNTUsMTIgQEAg
dm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmdldEhUVFBDb29raWVBY2NlcHRQb2xpY3koRnVu
Y3Rpb248dm9pZCAoSFRUUENvb2tpZUEKIAogdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRp
ZEdldEhUVFBDb29raWVBY2NlcHRQb2xpY3kodWludDMyX3QgcG9saWN5LCB1aW50NjRfdCBjYWxs
YmFja0lEKQogewotICAgIFJlZlB0cjxIVFRQQ29va2llQWNjZXB0UG9saWN5Q2FsbGJhY2s+IGNh
bGxiYWNrID0gbV9odHRwQ29va2llQWNjZXB0UG9saWN5Q2FsbGJhY2tzLnRha2UoY2FsbGJhY2tJ
RCk7Ci0gICAgaWYgKCFjYWxsYmFjaykgewotICAgICAgICAvLyBGSVhNRTogTG9nIGVycm9yIG9y
IGFzc2VydC4KLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBtX2h0dHBDb29raWVBY2NlcHRQ
b2xpY3lDYWxsYmFja3MudGFrZShjYWxsYmFja0lEKS0+cGVyZm9ybUNhbGxiYWNrV2l0aFJldHVy
blZhbHVlKHBvbGljeSk7Cit9CiAKLSAgICBjYWxsYmFjay0+cGVyZm9ybUNhbGxiYWNrV2l0aFJl
dHVyblZhbHVlKHBvbGljeSk7Cit2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGlkU2V0SFRU
UENvb2tpZUFjY2VwdFBvbGljeSh1aW50NjRfdCBjYWxsYmFja0lEKQoreworICAgIG1fdm9pZENh
bGxiYWNrcy50YWtlKGNhbGxiYWNrSUQpLT5wZXJmb3JtQ2FsbGJhY2soKTsKIH0KIAogdm9pZCBX
ZWJDb29raWVNYW5hZ2VyUHJveHk6OnNldENvb2tpZVN0b3JhZ2VQYXJ0aXRpb25pbmdFbmFibGVk
KGJvb2wgZW5hYmxlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJD
b29raWVNYW5hZ2VyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVN
YW5hZ2VyUHJveHkuaAppbmRleCBjZjc5OGQ3Y2NjYzcxNTQxNTliOWQ2MTJkZmZkYmI4NmFlZDFm
ZTcxLi5mZGY4OTFlMTU4OWFjMGRkNzI5NmY5M2E3ZjRmN2ZjNzVmZTI5MWYxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmgKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5oCkBAIC01NSw2
ICs1NSw3IEBAIGNsYXNzIFdlYlByb2Nlc3NQcm94eTsKIAogdHlwZWRlZiBHZW5lcmljQ2FsbGJh
Y2s8QVBJOjpBcnJheSo+IEFycmF5Q2FsbGJhY2s7CiB0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxI
VFRQQ29va2llQWNjZXB0UG9saWN5PiBIVFRQQ29va2llQWNjZXB0UG9saWN5Q2FsbGJhY2s7Cit0
eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiY+IEdl
dENvb2tpZXNDYWxsYmFjazsKIAogY2xhc3MgV2ViQ29va2llTWFuYWdlclByb3h5IDogcHVibGlj
IEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6Q29va2llTWFuYWdlcj4sIHB1Ymxp
YyBXZWJDb250ZXh0U3VwcGxlbWVudCwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CiBw
dWJsaWM6CkBAIC02NiwxNCArNjcsMjAgQEAgcHVibGljOgogICAgIHZvaWQgaW5pdGlhbGl6ZUNs
aWVudChjb25zdCBXS0Nvb2tpZU1hbmFnZXJDbGllbnRCYXNlKik7CiAgICAgCiAgICAgdm9pZCBn
ZXRIb3N0bmFtZXNXaXRoQ29va2llcyhXZWJDb3JlOjpTZXNzaW9uSUQsIEZ1bmN0aW9uPHZvaWQg
KEFQSTo6QXJyYXkqLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CisgICAgdm9pZCBkZWxldGVD
b29raWUoV2ViQ29yZTo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpDb29raWUmLCBGdW5jdGlv
bjx2b2lkIChDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CiAgICAgdm9pZCBkZWxldGVDb29raWVz
Rm9ySG9zdG5hbWUoV2ViQ29yZTo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGhvc3RuYW1lKTsK
ICAgICB2b2lkIGRlbGV0ZUFsbENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklEKTsKLSAgICB2b2lk
IGRlbGV0ZUFsbENvb2tpZXNNb2RpZmllZFNpbmNlKFdlYkNvcmU6OlNlc3Npb25JRCwgc3RkOjpj
aHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCk7CisgICAgdm9pZCBkZWxldGVBbGxDb29r
aWVzTW9kaWZpZWRTaW5jZShXZWJDb3JlOjpTZXNzaW9uSUQsIHN0ZDo6Y2hyb25vOjpzeXN0ZW1f
Y2xvY2s6OnRpbWVfcG9pbnQsIEZ1bmN0aW9uPHZvaWQgKENhbGxiYWNrQmFzZTo6RXJyb3IpPiYm
KTsKIAotICAgIHZvaWQgc2V0Q29va2llcyhXZWJDb3JlOjpTZXNzaW9uSUQsIGNvbnN0IFZlY3Rv
cjxXZWJDb3JlOjpDb29raWU+JiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgV2ViQ29yZTo6
VVJMJiBtYWluRG9jdW1lbnRVUkwpOworICAgIHZvaWQgc2V0Q29va2llKFdlYkNvcmU6OlNlc3Np
b25JRCwgY29uc3QgV2ViQ29yZTo6Q29va2llJiwgRnVuY3Rpb248dm9pZCAoQ2FsbGJhY2tCYXNl
OjpFcnJvcik+JiYpOworICAgIHZvaWQgc2V0Q29va2llcyhXZWJDb3JlOjpTZXNzaW9uSUQsIGNv
bnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3Qg
V2ViQ29yZTo6VVJMJiBtYWluRG9jdW1lbnRVUkwsIEZ1bmN0aW9uPHZvaWQgKENhbGxiYWNrQmFz
ZTo6RXJyb3IpPiYmKTsKKworICAgIHZvaWQgZ2V0QWxsQ29va2llcyhXZWJDb3JlOjpTZXNzaW9u
SUQsIEZ1bmN0aW9uPHZvaWQgKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiwgQ2FsbGJh
Y2tCYXNlOjpFcnJvcik+JiYgY29tcGxldGlvbkhhbmRsZXIpOworICAgIHZvaWQgZ2V0Q29va2ll
cyhXZWJDb3JlOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIEZ1bmN0aW9uPHZvaWQg
KGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpOworCisgICAgdm9pZCBzZXRIVFRQQ29va2llQWNjZXB0UG9saWN5
KFdlYkNvcmU6OlNlc3Npb25JRCwgSFRUUENvb2tpZUFjY2VwdFBvbGljeSwgRnVuY3Rpb248dm9p
ZCAoQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOworICAgIHZvaWQgZ2V0SFRUUENvb2tpZUFjY2Vw
dFBvbGljeShXZWJDb3JlOjpTZXNzaW9uSUQsIEZ1bmN0aW9uPHZvaWQgKEhUVFBDb29raWVBY2Nl
cHRQb2xpY3ksIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKIAotICAgIHZvaWQgc2V0SFRUUENv
b2tpZUFjY2VwdFBvbGljeShIVFRQQ29va2llQWNjZXB0UG9saWN5KTsKLSAgICB2b2lkIGdldEhU
VFBDb29raWVBY2NlcHRQb2xpY3koRnVuY3Rpb248dm9pZCAoSFRUUENvb2tpZUFjY2VwdFBvbGlj
eSwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+KTsKICAgICB2b2lkIHNldENvb2tpZVN0b3JhZ2VQYXJ0
aXRpb25pbmdFbmFibGVkKGJvb2wpOwogCiAgICAgdm9pZCBzdGFydE9ic2VydmluZ0Nvb2tpZUNo
YW5nZXMoV2ViQ29yZTo6U2Vzc2lvbklEKTsKQEAgLTk1LDYgKzEwMiwxMSBAQCBwcml2YXRlOgog
ICAgIHZvaWQgZGlkR2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoY29uc3QgVmVjdG9yPFN0cmluZz4m
LCB1aW50NjRfdCBjYWxsYmFja0lEKTsKICAgICB2b2lkIGRpZEdldEhUVFBDb29raWVBY2NlcHRQ
b2xpY3kodWludDMyX3QgcG9saWN5LCB1aW50NjRfdCBjYWxsYmFja0lEKTsKIAorICAgIHZvaWQg
ZGlkU2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSh1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICB2
b2lkIGRpZFNldENvb2tpZXModWludDY0X3QgY2FsbGJhY2tJRCk7CisgICAgdm9pZCBkaWRHZXRD
b29raWVzKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiwgdWludDY0X3QgY2FsbGJhY2tJ
RCk7CisgICAgdm9pZCBkaWREZWxldGVDb29raWVzKHVpbnQ2NF90IGNhbGxiYWNrSUQpOworCiAg
ICAgdm9pZCBjb29raWVzRGlkQ2hhbmdlKFdlYkNvcmU6OlNlc3Npb25JRCk7CiAKICAgICAvLyBX
ZWJDb250ZXh0U3VwcGxlbWVudApAQCAtMTEzLDYgKzEyNSw4IEBAIHByaXZhdGU6CiAKICAgICBI
YXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8QXJyYXlDYWxsYmFjaz4+IG1fYXJyYXlDYWxsYmFja3M7
CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPEhUVFBDb29raWVBY2NlcHRQb2xpY3lDYWxs
YmFjaz4+IG1faHR0cENvb2tpZUFjY2VwdFBvbGljeUNhbGxiYWNrczsKKyAgICBIYXNoTWFwPHVp
bnQ2NF90LCBSZWZQdHI8Vm9pZENhbGxiYWNrPj4gbV92b2lkQ2FsbGJhY2tzOworICAgIEhhc2hN
YXA8dWludDY0X3QsIFJlZlB0cjxHZXRDb29raWVzQ2FsbGJhY2s+PiBtX2dldENvb2tpZXNDYWxs
YmFja3M7CiAKICAgICBIYXNoTWFwPFdlYkNvcmU6OlNlc3Npb25JRCwgc3RkOjpmdW5jdGlvbjx2
b2lkICgpPj4gbV9jb29raWVPYnNlcnZlcnM7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDEy
ZTAwOTAxOGI3NGRjNWU5YTZkNjBkYjY4ZDJhYjQ0ZTJmMWE0M2YuLmRjY2JjZjI5ZTA3NjY5NzRi
NzQzNTg3MjEyYjEyYzNiZjRjYmMxZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgpAQCAtMjMsNiAr
MjMsMTEgQEAKIG1lc3NhZ2VzIC0+IFdlYkNvb2tpZU1hbmFnZXJQcm94eSB7CiAgICAgRGlkR2V0
SG9zdG5hbWVzV2l0aENvb2tpZXMoVmVjdG9yPFN0cmluZz4gaG9zdG5hbWVzLCB1aW50NjRfdCBj
YWxsYmFja0lEKTsKICAgICBEaWRHZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHVpbnQzMl90IHBv
bGljeSwgdWludDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAgCisKKyAgICBEaWRTZXRIVFRQQ29va2ll
QWNjZXB0UG9saWN5KHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAgIERpZERlbGV0ZUNvb2tpZXMo
dWludDY0X3QgY2FsbGJhY2tJRCk7CisgICAgRGlkU2V0Q29va2llcyh1aW50NjRfdCBjYWxsYmFj
a0lEKTsKKyAgICBEaWRHZXRDb29raWVzKFZlY3RvcjxXZWJDb3JlOjpDb29raWU+IGNvb2tpZXMs
IHVpbnQ2NF90IGNhbGxiYWNrSUQpOworCiAgICAgQ29va2llc0RpZENoYW5nZShXZWJDb3JlOjpT
ZXNzaW9uSUQgc2Vzc2lvbklEKQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYkZyYW1lUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJGcmFtZVBy
b3h5LmgKaW5kZXggNmJmOTkzODYyYjdlYWNhNTFhNzViNTkwMGZhM2Y3NDE2NzliZDVmZS4uNTVi
NWI2N2UwYjJmOTViOTcyMjQ1ZGU1YzhkY2NhNzhiOGQ3MTZmYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViRnJhbWVQcm94eS5oCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiV2Vi
RnJhbWVMaXN0ZW5lclByb3h5LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZUxvYWRlclR5cGVz
Lmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4K
ICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bv
b2wuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAppbmRl
eCBmNjk2MjMxYmEwNTk4NjFlMThmZWZjNGFiNmZiZjgyMzEzNjkxZTc3Li5hYWM2YmE1YjNjMTUy
MTgyODdiOWQzNTgwNjg1N2Y1ZDlkMDU5YmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJBUElBdXRv
bWF0aW9uQ2xpZW50LmgiCiAjaW5jbHVkZSAiQVBJQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50
LmgiCiAjaW5jbHVkZSAiQVBJRG93bmxvYWRDbGllbnQuaCIKKyNpbmNsdWRlICJBUElIVFRQQ29v
a2llU3RvcmFnZS5oIgogI2luY2x1ZGUgIkFQSUxlZ2FjeUNvbnRleHRIaXN0b3J5Q2xpZW50Lmgi
CiAjaW5jbHVkZSAiQVBJUGFnZUNvbmZpZ3VyYXRpb24uaCIKICNpbmNsdWRlICJBUElQcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24uaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
b29sLmgKaW5kZXggODg1YWQzY2ViYjM2MTc5ZDFkNmRjYjY3NWVjNWI4MTM5ZGI2NWY2OS4uZTBl
MTkyNmQ1M2U0MTgyODJjMmViMWNiYjBkNTFjNTFjZTBiZTU1OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKQEAgLTc2LDYgKzc2LDcgQEAgbmFtZXNwYWNlIEFQ
SSB7CiBjbGFzcyBBdXRvbWF0aW9uQ2xpZW50OwogY2xhc3MgQ3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
Q2xpZW50OwogY2xhc3MgRG93bmxvYWRDbGllbnQ7CitjbGFzcyBIVFRQQ29va2llU3RvcmFnZTsK
IGNsYXNzIExlZ2FjeUNvbnRleHRIaXN0b3J5Q2xpZW50OwogY2xhc3MgUGFnZUNvbmZpZ3VyYXRp
b247CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEv
V2Vic2l0ZURhdGFTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURh
dGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKaW5kZXggN2JhYWY4NTQ1NDJkNjc4YWVmZWFmNGYyNThh
ZDdmMTRjYTIwNTFlYy4uNjMzMmY3ZGI4NjBiYjMzZDUwMDljNGU1N2MwNWVkZDJhMWQzMjEwZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVE
YXRhU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9X
ZWJzaXRlRGF0YVN0b3JlLmNwcApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkFQSVdlYnNp
dGVEYXRhUmVjb3JkLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NNZXNzYWdlcy5oIgogI2lu
Y2x1ZGUgIlN0b3JhZ2VNYW5hZ2VyLmgiCisjaW5jbHVkZSAiV2ViQ29va2llTWFuYWdlclByb3h5
LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vz
c1Bvb2wuaCIKICNpbmNsdWRlICJXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCIKQEAg
LTEwNSw2ICsxMDYsMjcgQEAgV2Vic2l0ZURhdGFTdG9yZTo6fldlYnNpdGVEYXRhU3RvcmUoKQog
ICAgIH0KIH0KIAorUmVmPFdlYlByb2Nlc3NQb29sPiBXZWJzaXRlRGF0YVN0b3JlOjpwcm9jZXNz
UG9vbEZvckNvb2tpZVN0b3JhZ2VPcGVyYXRpb25zKCkKK3sKKyAgICAvLyBPdXIgY29uY2VwdHMg
b2YgV2ViUHJvY2VzcywgV2ViUHJvY2Vzc1Bvb2wsIFdlYnNpdGVEYXRhU3RvcmUsIGFuZCBTZXNz
aW9uSURzIGhhdmUgYWxsIHN0YXJ0ZWQgdG8gb3ZlcmxhcAorICAgIC8vIHdpdGhvdXQgY2xlYXIg
ZGl2aXNpb25zIG9mIHJlc3BvbnNpYmlsaXRpZXMuCisgICAgLy8gSW4gcHJhY3RpY2UsIG11bHRp
cGxlIFdlYlByb2Nlc3NQb29scyBjYW4gY29udGFpbiAidGhlIHNhbWUgc2Vzc2lvbiIsIGVzcGVj
aWFsbHkgc2luY2UgdGhlcmUgaXMgY3VycmVudGx5CisgICAgLy8gb25seSBhIHNpbmdsZSBkZWZh
dWx0IGdsb2JhbCBTZXNzaW9uSUQuCisgICAgLy8KKyAgICAvLyBUaGlzIG1lYW5zIHRoYXQgbXVs
dGlwbGUgTmV0d29ya1Byb2Nlc3NlcyBjYW4gYmUgdXNpbmcgdGhlIHNhbWUgc2Vzc2lvbiwgd2hp
Y2ggbWVhbnMgdGhhdCBtdWx0aXBsZQorICAgIC8vIE5ldHdvcmtQcm9jZXNzZXMgY2FuIGJlIHJl
ZmVycmluZyB0byB0aGUgc2FtZSBwbGF0Zm9ybSBjb29raWUgc3RvcmFnZS4KKyAgICAvLworICAg
IC8vIFdoaWxlIHRoaXMgbWF5IGNhdXNlIGNvbXBsaWNhdGlvbnMgd2l0aCBmdXR1cmUgQVBJcyBp
dCBpcyBhY3R1YWxseSBmaW5lIGZvciBpbXBsZW1lbnRpbmcgdGhlIFdLSFRUUENvb2tpZVN0b3Jh
Z2UgQVBJCisgICAgLy8gYmVjYXVzZSB3ZSBvbmx5IG5lZWQgb25lIE5ldHdvcmtQcm9jZXNzIHRv
IHN1Y2Nlc3NmdWxseSBtYWtlIGEgcmVxdWVzdGVkIHBsYXRmb3JtIGNvb2tpZSBzdG9yYWdlIGNo
YW5nZS4KKyAgICAvLworICAgIC8vIEZJWE1FOiBXZSBuZWVkIHRvIHN0YXJ0IHRvIHVucmF2ZWwg
dGhpcyBtZXNzIGdvaW5nIGZvcndhcmQuCisKKyAgICBhdXRvIHBvb2xzID0gcHJvY2Vzc1Bvb2xz
KDEpOworICAgIEFTU0VSVCghcG9vbHMuaXNFbXB0eSgpKTsKKworICAgIHJldHVybiAqKnBvb2xz
LmJlZ2luKCk7Cit9CisKIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6cmVzb2x2ZURpcmVjdG9yaWVz
SWZOZWNlc3NhcnkoKQogewogICAgIGlmIChtX2hhc1Jlc29sdmVkRGlyZWN0b3JpZXMpCkBAIC0x
MTA4LDcgKzExMzAsNyBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OndlYlByb2Nlc3NEaWRDbG9z
ZUNvbm5lY3Rpb24oV2ViUHJvY2Vzc1Byb3h5JiB3ZWJQcm9jZXNzUAogICAgICAgICBtX3N0b3Jh
Z2VNYW5hZ2VyLT5wcm9jZXNzRGlkQ2xvc2VDb25uZWN0aW9uKHdlYlByb2Nlc3NQcm94eSwgY29u
bmVjdGlvbik7CiB9CiAKLUhhc2hTZXQ8UmVmUHRyPFdlYlByb2Nlc3NQb29sPj4gV2Vic2l0ZURh
dGFTdG9yZTo6cHJvY2Vzc1Bvb2xzKCkgY29uc3QKK0hhc2hTZXQ8UmVmUHRyPFdlYlByb2Nlc3NQ
b29sPj4gV2Vic2l0ZURhdGFTdG9yZTo6cHJvY2Vzc1Bvb2xzKHNpemVfdCBjb3VudCkgY29uc3QK
IHsKICAgICBIYXNoU2V0PFJlZlB0cjxXZWJQcm9jZXNzUG9vbD4+IHByb2Nlc3NQb29sczsKICAg
ICBmb3IgKGF1dG8mIHByb2Nlc3MgOiBwcm9jZXNzZXMoKSkKQEAgLTExMjIsMTEgKzExNDQsMjAg
QEAgSGFzaFNldDxSZWZQdHI8V2ViUHJvY2Vzc1Bvb2w+PiBXZWJzaXRlRGF0YVN0b3JlOjpwcm9j
ZXNzUG9vbHMoKSBjb25zdAogICAgICAgICAgICAgICAgICAgICBwcm9jZXNzUG9vbHMuYWRkKHBy
b2Nlc3NQb29sKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgfSBlbHNlIGlmICgmQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0
RGF0YVN0b3JlKCktPndlYnNpdGVEYXRhU3RvcmUoKSA9PSB0aGlzKSB7CisgICAgICAgICAgICAg
ICAgLy8gSWYgYSBwcm9jZXNzIHBvb2wgZG9lc24ndCBoYXZlIGFuIGV4cGxpY2l0IGRhdGEgc3Rv
cmUgYW5kIHRoaXMgaXMgdGhlIGRlZmF1bHQgV2Vic2l0ZURhdGFTdG9yZSwKKyAgICAgICAgICAg
ICAgICAvLyBhZGQgdGhhdCBwcm9jZXNzIHBvb2wgdG8gdGhlIHNldC4KKyAgICAgICAgICAgICAg
ICAvLyBGSVhNRTogVGhpcyBiZWhhdmlvciBpcyB3ZWlyZCBhbmQgbmVjZXNzaXRhdGVkIGJ5IHRo
ZSBmYWN0IHRoYXQgcHJvY2VzcyBwb29scyBkb24ndCBhbHdheXMKKyAgICAgICAgICAgICAgICAv
LyBoYXZlIGEgZGF0YSBzdG9yZTsgdGhleSBzaG91bGQuCisgICAgICAgICAgICAgICAgcHJvY2Vz
c1Bvb2xzLmFkZChwcm9jZXNzUG9vbCk7CiAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlm
IChwcm9jZXNzUG9vbHMuc2l6ZSgpID09IGNvdW50KQorICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKHByb2Nlc3NQb29scy5pc0VtcHR5KCkpIHsKKyAg
ICBpZiAocHJvY2Vzc1Bvb2xzLmlzRW1wdHkoKSAmJiBjb3VudCkgewogICAgICAgICBhdXRvIHBy
b2Nlc3NQb29sID0gV2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZShBUEk6OlByb2Nlc3NQb29sQ29uZmln
dXJhdGlvbjo6Y3JlYXRlV2l0aFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uKG1fY29uZmln
dXJhdGlvbikpOwogICAgICAgICBwcm9jZXNzUG9vbHMuYWRkKHByb2Nlc3NQb29sLnB0cigpKTsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEv
V2Vic2l0ZURhdGFTdG9yZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRh
L1dlYnNpdGVEYXRhU3RvcmUuaAppbmRleCA5NzViYWM4ZDg5YmIxZWNjNjU2MjZkZDQwNzRhZjlj
NzZhZjgzNDU3Li44ZDEzYmNlNDk4MjliM2NhZGFiMDdmODQ1YWIyNGJiYzkzODU4NDdmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFT
dG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRl
RGF0YVN0b3JlLmgKQEAgLTEwMyw2ICsxMDMsOCBAQCBwdWJsaWM6CiAKICAgICBTdG9yYWdlTWFu
YWdlciogc3RvcmFnZU1hbmFnZXIoKSB7IHJldHVybiBtX3N0b3JhZ2VNYW5hZ2VyLmdldCgpOyB9
CiAKKyAgICBSZWY8V2ViUHJvY2Vzc1Bvb2w+IHByb2Nlc3NQb29sRm9yQ29va2llU3RvcmFnZU9w
ZXJhdGlvbnMoKTsKKwogcHJpdmF0ZToKICAgICBleHBsaWNpdCBXZWJzaXRlRGF0YVN0b3JlKFdl
YkNvcmU6OlNlc3Npb25JRCk7CiAgICAgZXhwbGljaXQgV2Vic2l0ZURhdGFTdG9yZShDb25maWd1
cmF0aW9uKTsKQEAgLTExOSw3ICsxMjEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcGxhdGZvcm1E
ZXN0cm95KCk7CiAgICAgc3RhdGljIHZvaWQgcGxhdGZvcm1SZW1vdmVSZWNlbnRTZWFyY2hlcyhz
dGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50KTsKIAotICAgIEhhc2hTZXQ8UmVm
UHRyPFdlYlByb2Nlc3NQb29sPj4gcHJvY2Vzc1Bvb2xzKCkgY29uc3Q7CisgICAgSGFzaFNldDxS
ZWZQdHI8V2ViUHJvY2Vzc1Bvb2w+PiBwcm9jZXNzUG9vbHMoc2l6ZV90IGNvdW50ID0gc3RkOjpu
dW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSkgY29uc3Q7CiAKICNpZiBFTkFCTEUoTkVUU0NB
UEVfUExVR0lOX0FQSSkKICAgICBWZWN0b3I8UGx1Z2luTW9kdWxlSW5mbz4gcGx1Z2lucygpIGNv
bnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IDdlMTg4MjJmMDRkMTc2YWE4OTk0YjQ2NmE4MDU2NjlhZGNhOTAyOTAuLmUzOWJl
OWFlZTA5NThhYTBiODM4ZjJjZGE4ZjRhMzYwOTg1OTk2OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEwNjMsNiArMTA2Myw5
IEBACiAJCTUxRDEyNDM1MUU2REY2NTIwMDJCMjgyMCAvKiBXS1VSTFNjaGVtZUhhbmRsZXJUYXNr
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUQxMjQy
RjFFNkREREQ3MDAyQjI4MjAgLyogV0tVUkxTY2hlbWVIYW5kbGVyVGFzay5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKIAkJNTFEMTI0MzYxRTZERkIzOTAw
MkIyODIwIC8qIFdLVVJMU2NoZW1lSGFuZGxlclRhc2subW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUQxMjQzMDFFNkREREQ3MDAyQjI4MjAgLyogV0tV
UkxTY2hlbWVIYW5kbGVyVGFzay5tbSAqLzsgfTsKIAkJNTFEMTI0M0ExRTZFMEFBQjAwMkIyODIw
IC8qIEFQSVVSTFNjaGVtZUhhbmRsZXJUYXNrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRDEyNDM4MUU2REZEQjkwMDJCMjgyMCAvKiBBUElVUkxT
Y2hlbWVIYW5kbGVyVGFzay5jcHAgKi87IH07CisJCTUxRDEyNDkxMUU3NEJGM0MwMDJCMjgyMCAv
KiBBUElIVFRQQ29va2llU3RvcmFnZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MUQxMjQ4MjFFNzM0QUM4MDAyQjI4MjAgLyogQVBJSFRUUENvb2tp
ZVN0b3JhZ2UuY3BwICovOyB9OworCQk1MUQxMjQ5MjFFNzRCRjQ4MDAyQjI4MjAgLyogV0tIVFRQ
Q29va2llU3RvcmFnZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxRDEyNDg1MUU3MzRBRTMwMDJCMjgyMCAvKiBXS0hUVFBDb29raWVTdG9yYWdlLm1t
ICovOyB9OworCQk1MUQxMjQ5OTFFNzYzQzAxMDAyQjI4MjAgLyogV0tIVFRQQ29va2llU3RvcmFn
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFEMTI0
ODQxRTczNEFFMzAwMkIyODIwIC8qIFdLSFRUUENvb2tpZVN0b3JhZ2UuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MUQxMzA1MzEzODJFQUMwMDAz
NTFFREQgLyogU2VjSXRlbVJlcXVlc3REYXRhLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRDEzMDRGMTM4MkVBQzAwMDM1MUVERCAvKiBTZWNJdGVt
UmVxdWVzdERhdGEuY3BwICovOyB9OwogCQk1MUQxMzA1NDEzODJFQUMwMDAzNTFFREQgLyogU2Vj
SXRlbVJlcXVlc3REYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MUQxMzA1MDEzODJFQUMwMDAzNTFFREQgLyogU2VjSXRlbVJlcXVlc3REYXRhLmgg
Ki87IH07CiAJCTUxRDEzMDU1MTM4MkVBQzAwMDM1MUVERCAvKiBTZWNJdGVtUmVzcG9uc2VEYXRh
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRDEz
MDUxMTM4MkVBQzAwMDM1MUVERCAvKiBTZWNJdGVtUmVzcG9uc2VEYXRhLmNwcCAqLzsgfTsKQEAg
LTMyODUsNiArMzI4OCwxMSBAQAogCQk1MUQxMjQzNzFFNkRGRDJBMDAyQjI4MjAgLyogV0tVUkxT
Y2hlbWVIYW5kbGVyVGFza0ludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdLVVJMU2NoZW1lSGFuZGxlclRhc2tJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1MUQxMjQzODFFNkRGREI5MDAyQjI4MjAgLyogQVBJVVJMU2NoZW1lSGFuZGxl
clRhc2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQVBJVVJMU2No
ZW1lSGFuZGxlclRhc2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUQxMjQz
OTFFNkRGREI5MDAyQjI4MjAgLyogQVBJVVJMU2NoZW1lSGFuZGxlclRhc2suaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJVVJMU2NoZW1lSGFuZGxlclRhc2suaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFEMTI0ODIxRTczNEFDODAwMkIyODIwIC8qIEFQSUhU
VFBDb29raWVTdG9yYWdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEFQSUhUVFBDb29raWVTdG9yYWdlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NTFEMTI0ODMxRTczNEFDODAwMkIyODIwIC8qIEFQSUhUVFBDb29raWVTdG9yYWdlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFQSUhUVFBDb29raWVTdG9yYWdlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxRDEyNDg0MUU3MzRBRTMwMDJCMjgyMCAvKiBXS0hU
VFBDb29raWVTdG9yYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLSFRU
UENvb2tpZVN0b3JhZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFEMTI0ODUx
RTczNEFFMzAwMkIyODIwIC8qIFdLSFRUUENvb2tpZVN0b3JhZ2UubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS0hUVFBDb29raWVTdG9yYWdlLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk1MUQxMjQ4NjFFNzM0QUUzMDAyQjI4MjAgLyogV0tIVFRQ
Q29va2llU3RvcmFnZUludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdLSFRUUENvb2tpZVN0b3JhZ2VJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1MUQxMzA0RjEzODJFQUMwMDAzNTFFREQgLyogU2VjSXRlbVJlcXVlc3REYXRhLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNlY0l0ZW1SZXF1ZXN0RGF0YS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxRDEzMDUwMTM4MkVBQzAwMDM1MUVE
RCAvKiBTZWNJdGVtUmVxdWVzdERhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU2VjSXRlbVJlcXVlc3REYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUx
RDEzMDUxMTM4MkVBQzAwMDM1MUVERCAvKiBTZWNJdGVtUmVzcG9uc2VEYXRhLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNlY0l0ZW1SZXNwb25zZURhdGEuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTU0NCw2ICs1NTUyLDkgQEAKIAkJCQkxQTRE
NjY0OTE4QTMwMzBFMDBEODJFMjEgLyogV0tGcmFtZUluZm8ubW0gKi8sCiAJCQkJMkRGOUVFRTcx
QTc4MjQ1NTAwQjZDRkJFIC8qIFdLRnJhbWVJbmZvSW50ZXJuYWwuaCAqLywKIAkJCQkxQTZGQTIx
RDFCRDA0MzVCMDBBQUE2NTAgLyogV0tGcmFtZUluZm9Qcml2YXRlLmggKi8sCisJCQkJNTFEMTI0
ODQxRTczNEFFMzAwMkIyODIwIC8qIFdLSFRUUENvb2tpZVN0b3JhZ2UuaCAqLywKKwkJCQk1MUQx
MjQ4NTFFNzM0QUUzMDAyQjI4MjAgLyogV0tIVFRQQ29va2llU3RvcmFnZS5tbSAqLywKKwkJCQk1
MUQxMjQ4NjFFNzM0QUUzMDAyQjI4MjAgLyogV0tIVFRQQ29va2llU3RvcmFnZUludGVybmFsLmgg
Ki8sCiAJCQkJMUE0MjJGOEExOEIyOUI1NDAwRDhDRDk2IC8qIFdLSGlzdG9yeURlbGVnYXRlUHJp
dmF0ZS5oICovLAogCQkJCTFBQjQwRUUzMUJGNjc3RTMwMEJBODFCRSAvKiBXS01lbnVJdGVtSWRl
bnRpZmllcnMubW0gKi8sCiAJCQkJMUFCNDBFRTQxQkY2NzdFMzAwQkE4MUJFIC8qIFdLTWVudUl0
ZW1JZGVudGlmaWVyc1ByaXZhdGUuaCAqLywKQEAgLTY3MzIsNiArNjc0Myw4IEBACiAJCQkJMkRB
QkE3NzUxQTgyQjQyMTAwRUYwRjFBIC8qIEFQSUhpc3RvcnlDbGllbnQuaCAqLywKIAkJCQk5M0E4
OEI0MjFCQzg4MjhDMDBBQkE1QzIgLyogQVBJSGl0VGVzdFJlc3VsdC5jcHAgKi8sCiAJCQkJOTNB
ODhCNDMxQkM4ODI4QzAwQUJBNUMyIC8qIEFQSUhpdFRlc3RSZXN1bHQuaCAqLywKKwkJCQk1MUQx
MjQ4MjFFNzM0QUM4MDAyQjI4MjAgLyogQVBJSFRUUENvb2tpZVN0b3JhZ2UuY3BwICovLAorCQkJ
CTUxRDEyNDgzMUU3MzRBQzgwMDJCMjgyMCAvKiBBUElIVFRQQ29va2llU3RvcmFnZS5oICovLAog
CQkJCTUxNDNCMjYxMURERDBEQTAwMDE0RkFDNiAvKiBBUElJY29uTG9hZGluZ0NsaWVudC5oICov
LAogCQkJCTdDRTREMjA2MUE0Njc3NTcwMEM3RjE1MiAvKiBBUElMZWdhY3lDb250ZXh0SGlzdG9y
eUNsaWVudC5oICovLAogCQkJCTFBMjQ2NEYyMTg5MUU0NTEwMDIzNEM1QiAvKiBBUElMb2FkZXJD
bGllbnQuaCAqLywKQEAgLTg1MTUsNiArODUyOCw3IEBACiAJCQkJNTE0MTI5OTQxQzY0MjhCQjAw
NTlFNzE0IC8qIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NTEwNTIzNzQxQzczRDM4QjAwNzk5M0NCIC8qIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlck1lc3Nh
Z2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0NGNkFCRDEyQzkxRUY5MDA4RjlDMzUgLyogV2Vi
SW1hZ2UuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxRDEyNDk5MUU3NjNDMDEwMDJCMjgyMCAvKiBX
S0hUVFBDb29raWVTdG9yYWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQzhFMjgyMDEyNzVEMTU0
MDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzAzMkQ4MjEw
RjQzNzhEMDA1OEMxNUEgLyogV2ViSW5zcGVjdG9yQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBNTVCQTgzNTFCQTNFNzBBMDA3Q0QzM0QgLyogV2ViSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNw
YXRjaGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTk3NjcsNiArOTc4MSw3IEBACiAJCQkJMUE2RkJB
MkIxMUU2ODYyNzAwREIxMzcxIC8qIE5ldHNjYXBlQnJvd3NlckZ1bmNzLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTFBNkZCRDI5MTFFNjlCQzIwMERCMTM3MSAvKiBOZXRzY2FwZVBsdWdpbi5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkxQUU1QjdGQjExRTdBRUQyMDBCQTY3NjcgLyogTmV0c2NhcGVQ
bHVnaW5NYWMubW0gaW4gU291cmNlcyAqLywKKwkJCQk1MUQxMjQ5MjFFNzRCRjQ4MDAyQjI4MjAg
LyogV0tIVFRQQ29va2llU3RvcmFnZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFBNEE5QzU1MTJC
ODE2Q0YwMDhGRTk4NCAvKiBOZXRzY2FwZVBsdWdpbk1vZHVsZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk4MzlBMkYzMTFFMjA2NzQ1MDAzOTA1N0UgLyogSGlnaFBlcmZvcm1hbmNlR3JhcGhpY3NV
c2FnZVNhbXBsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE0QTlDOUExMkI4MjFDRDAwOEZF
OTg0IC8qIE5ldHNjYXBlUGx1Z2luTW9kdWxlTWFjLm1tIGluIFNvdXJjZXMgKi8sCkBAIC05Nzg1
LDYgKzk4MDAsNyBAQAogCQkJCTgzMUVFQkJFMUJEODVDNDMwMEJCNjRDMyAvKiBOZXR3b3JrQ2Fj
aGVTcGVjdWxhdGl2ZUxvYWQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODMyQUUyNTMxQkUyRThD
RDAwRkFBRTEwIC8qIE5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZE1hbmFnZXIuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJODNCRENDQjkxQUM1RkRCNjAwM0Y2NDQxIC8qIE5ldHdvcmtDYWNoZVN0
YXRpc3RpY3MuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTFEMTI0OTExRTc0QkYzQzAwMkIyODIw
IC8qIEFQSUhUVFBDb29raWVTdG9yYWdlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUU0NDM2RUQw
MUEwRDA0MEIwMEVBRDIwNCAvKiBOZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTgzMTA0MjhDMUJENkI2NkYwMEE3MTVFNCAvKiBOZXR3b3JrQ2FjaGVTdWJyZXNvdXJj
ZXNFbnRyeS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MzAyNTgzRDFEQ0JCRDIyMDBEQTg5QzIg
LyogTmV0d29ya0NhcHR1cmVFdmVudC5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmNwcAppbmRl
eCA5ZTIxZjc4Y2NkYmIxODIxNzk0MjU1M2Y5ZmUwZjFkZDcwNDEzMzg0Li43NTQzYTI5ZDhiZWI4
Y2VhMzkyNjYyMTZhNjAwOGM1ODYyMzRlZjM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIuY3BwCkBAIC03MiwyMiArNzIs
NjQgQEAgdm9pZCBXZWJDb29raWVNYW5hZ2VyOjpkZWxldGVDb29raWVzRm9ySG9zdG5hbWUoU2Vz
c2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW4KICAgICAgICAgV2ViQ29yZTo6ZGVsZXRlQ29v
a2llc0Zvckhvc3RuYW1lcygqc3RvcmFnZVNlc3Npb24sIHsgaG9zdG5hbWUgfSk7CiB9CiAKKwog
dm9pZCBXZWJDb29raWVNYW5hZ2VyOjpkZWxldGVBbGxDb29raWVzKFNlc3Npb25JRCBzZXNzaW9u
SUQpCiB7CiAgICAgaWYgKGF1dG8qIHN0b3JhZ2VTZXNzaW9uID0gTmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQogICAgICAgICBXZWJDb3JlOjpkZWxldGVB
bGxDb29raWVzKCpzdG9yYWdlU2Vzc2lvbik7CiB9CiAKLXZvaWQgV2ViQ29va2llTWFuYWdlcjo6
ZGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2UoU2Vzc2lvbklEIHNlc3Npb25JRCwgc3RkOjpj
aHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCB0aW1lKQordm9pZCBXZWJDb29raWVNYW5h
Z2VyOjpkZWxldGVDb29raWUoU2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgQ29va2llJiBjb29r
aWUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit7CisgICAgaWYgKGF1dG8qIHN0b3JhZ2VTZXNzaW9u
ID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQorICAg
ICAgICBzdG9yYWdlU2Vzc2lvbi0+ZGVsZXRlQ29va2llKGNvb2tpZSk7CisKKyAgICBtX3Byb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6RGlkRGVsZXRlQ29va2ll
cyhjYWxsYmFja0lEKSwgMCk7Cit9CisKK3ZvaWQgV2ViQ29va2llTWFuYWdlcjo6ZGVsZXRlQWxs
Q29va2llc01vZGlmaWVkU2luY2UoU2Vzc2lvbklEIHNlc3Npb25JRCwgc3RkOjpjaHJvbm86OnN5
c3RlbV9jbG9jazo6dGltZV9wb2ludCB0aW1lLCB1aW50NjRfdCBjYWxsYmFja0lEKQogewogICAg
IGlmIChhdXRvKiBzdG9yYWdlU2Vzc2lvbiA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFn
ZVNlc3Npb24oc2Vzc2lvbklEKSkKICAgICAgICAgV2ViQ29yZTo6ZGVsZXRlQWxsQ29va2llc01v
ZGlmaWVkU2luY2UoKnN0b3JhZ2VTZXNzaW9uLCB0aW1lKTsKKworICAgIGlmIChjYWxsYmFja0lE
KQorICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXJQcm94
eTo6RGlkRGVsZXRlQ29va2llcyhjYWxsYmFja0lEKSwgMCk7Cit9CisKK3ZvaWQgV2ViQ29va2ll
TWFuYWdlcjo6Z2V0QWxsQ29va2llcyhTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBjYWxs
YmFja0lEKQoreworICAgIFZlY3RvcjxDb29raWU+IGNvb2tpZXM7CisgICAgaWYgKGF1dG8qIHN0
b3JhZ2VTZXNzaW9uID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNz
aW9uSUQpKQorICAgICAgICBjb29raWVzID0gc3RvcmFnZVNlc3Npb24tPmdldEFsbENvb2tpZXMo
KTsKKworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlclByb3h5
OjpEaWRHZXRDb29raWVzKGNvb2tpZXMsIGNhbGxiYWNrSUQpLCAwKTsKIH0KIAotdm9pZCBXZWJD
b29raWVNYW5hZ2VyOjpzZXRDb29raWVzKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNv
bnN0IFZlY3RvcjxDb29raWU+JiBjb29raWVzLCBjb25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBt
YWluRG9jdW1lbnRVUkwpCit2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmdldENvb2tpZXMoU2Vzc2lv
bklEIHNlc3Npb25JRCwgY29uc3QgVVJMJiB1cmwsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit7Cisg
ICAgVmVjdG9yPENvb2tpZT4gY29va2llczsKKyAgICBpZiAoYXV0byogc3RvcmFnZVNlc3Npb24g
PSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCisgICAg
ICAgIGNvb2tpZXMgPSBzdG9yYWdlU2Vzc2lvbi0+Z2V0Q29va2llcyh1cmwpOworCisgICAgbV9w
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OkRpZEdldENvb2tp
ZXMoY29va2llcywgY2FsbGJhY2tJRCksIDApOworfQorCit2b2lkIFdlYkNvb2tpZU1hbmFnZXI6
OnNldENvb2tpZShXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBDb29raWUmIGNv
b2tpZSwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3sKKyAgICBpZiAoYXV0byogc3RvcmFnZVNlc3Np
b24gPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCisg
ICAgICAgIHN0b3JhZ2VTZXNzaW9uLT5zZXRDb29raWUoY29va2llKTsKKworICAgIGlmIChjYWxs
YmFja0lEKQorICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFn
ZXJQcm94eTo6RGlkU2V0Q29va2llcyhjYWxsYmFja0lEKSwgMCk7Cit9CisKK3ZvaWQgV2ViQ29v
a2llTWFuYWdlcjo6c2V0Q29va2llcyhXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25z
dCBWZWN0b3I8Q29va2llPiYgY29va2llcywgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFVSTCYgbWFp
bkRvY3VtZW50VVJMLCB1aW50NjRfdCBjYWxsYmFja0lEKQogewogICAgIGlmIChhdXRvKiBzdG9y
YWdlU2Vzc2lvbiA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vzc2lv
bklEKSkKICAgICAgICAgc3RvcmFnZVNlc3Npb24tPnNldENvb2tpZXMoY29va2llcywgdXJsLCBt
YWluRG9jdW1lbnRVUkwpOworCisgICAgaWYgKGNhbGxiYWNrSUQpCisgICAgICAgIG1fcHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlclByb3h5OjpEaWRTZXRDb29raWVzKGNh
bGxiYWNrSUQpLCAwKTsKIH0KIAogdm9pZCBXZWJDb29raWVNYW5hZ2VyOjpub3RpZnlDb29raWVz
RGlkQ2hhbmdlKFNlc3Npb25JRCBzZXNzaW9uSUQpCkBAIC0xMTEsOSArMTUzLDEyIEBAIHZvaWQg
V2ViQ29va2llTWFuYWdlcjo6c3RvcE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMoU2Vzc2lvbklEIHNl
c3Npb25JRCkKICAgICAgICAgV2ViQ29yZTo6c3RvcE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMoKnN0
b3JhZ2VTZXNzaW9uKTsKIH0KIAotdm9pZCBXZWJDb29raWVNYW5hZ2VyOjpzZXRIVFRQQ29va2ll
QWNjZXB0UG9saWN5KEhUVFBDb29raWVBY2NlcHRQb2xpY3kgcG9saWN5KQordm9pZCBXZWJDb29r
aWVNYW5hZ2VyOjpzZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KEhUVFBDb29raWVBY2NlcHRQb2xp
Y3kgcG9saWN5LCB1aW50NjRfdCBjYWxsYmFja0lEKQogewogICAgIHBsYXRmb3JtU2V0SFRUUENv
b2tpZUFjY2VwdFBvbGljeShwb2xpY3kpOworCisgICAgaWYgKGNhbGxiYWNrSUQpCisgICAgICAg
IG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlclByb3h5OjpEaWRTZXRI
VFRQQ29va2llQWNjZXB0UG9saWN5KGNhbGxiYWNrSUQpLCAwKTsKIH0KIAogdm9pZCBXZWJDb29r
aWVNYW5hZ2VyOjpnZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHVpbnQ2NF90IGNhbGxiYWNrSUQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2ll
TWFuYWdlci5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1h
bmFnZXIuaAppbmRleCBkYjI3ZDIwYWFkZDg3ZDg4NTM2ZGE1MDcxZTU5ZjMyODkxMTUxODAyLi44
MTg3NWRhZmI3NThmY2Q2Mzk5MDg1MWRiY2QzNTJlZTY0MDU1NjFkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmgKQEAgLTU2
LDcgKzU2LDggQEAgcHVibGljOgogCiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIHN1cHBsZW1lbnRO
YW1lKCk7CiAKLSAgICB2b2lkIHNldEhUVFBDb29raWVBY2NlcHRQb2xpY3koSFRUUENvb2tpZUFj
Y2VwdFBvbGljeSk7CisgICAgdm9pZCBzZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KEhUVFBDb29r
aWVBY2NlcHRQb2xpY3ksIHVpbnQ2NF90IGNhbGxiYWNrSUQpOworCiAjaWYgVVNFKFNPVVApCiAg
ICAgdm9pZCBzZXRDb29raWVQZXJzaXN0ZW50U3RvcmFnZShjb25zdCBTdHJpbmcmIHN0b3JhZ2VQ
YXRoLCB1aW50MzJfdCBzdG9yYWdlVHlwZSk7CiAjZW5kaWYKQEAgLTY4LDExICs2OSwxNiBAQCBw
cml2YXRlOgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBD
OjpEZWNvZGVyJikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGdldEhvc3RuYW1lc1dpdGhDb29raWVz
KFdlYkNvcmU6OlNlc3Npb25JRCwgdWludDY0X3QgY2FsbGJhY2tJRCk7CisKKyAgICB2b2lkIGRl
bGV0ZUNvb2tpZShXZWJDb3JlOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OkNvb2tpZSYsIHVp
bnQ2NF90IGNhbGxiYWNrSUQpOwogICAgIHZvaWQgZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKFdl
YkNvcmU6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBkZWxldGVBbGxDb29r
aWVzKFdlYkNvcmU6OlNlc3Npb25JRCk7Ci0gICAgdm9pZCBkZWxldGVBbGxDb29raWVzTW9kaWZp
ZWRTaW5jZShXZWJDb3JlOjpTZXNzaW9uSUQsIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRp
bWVfcG9pbnQpOworICAgIHZvaWQgZGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2UoV2ViQ29y
ZTo6U2Vzc2lvbklELCBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50LCB1aW50
NjRfdCBjYWxsYmFja0lEKTsKIAotICAgIHZvaWQgc2V0Q29va2llcyhXZWJDb3JlOjpTZXNzaW9u
SUQsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiwgY29uc3QgV2ViQ29yZTo6VVJMJiwg
Y29uc3QgV2ViQ29yZTo6VVJMJiBtYWluRG9jdW1lbnRVUkwpOworICAgIHZvaWQgc2V0Q29va2ll
KFdlYkNvcmU6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6Q29va2llJiwgdWludDY0X3QgY2Fs
bGJhY2tJRCk7CisgICAgdm9pZCBzZXRDb29raWVzKFdlYkNvcmU6OlNlc3Npb25JRCwgY29uc3Qg
VmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXZWJD
b3JlOjpVUkwmIG1haW5Eb2N1bWVudFVSTCwgdWludDY0X3QgY2FsbGJhY2tJRCk7CisgICAgdm9p
ZCBnZXRBbGxDb29raWVzKFdlYkNvcmU6OlNlc3Npb25JRCwgdWludDY0X3QgY2FsbGJhY2tJRCk7
CisgICAgdm9pZCBnZXRDb29raWVzKFdlYkNvcmU6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6
VVJMJiwgdWludDY0X3QgY2FsbGJhY2tJRCk7CiAKICAgICB2b2lkIHBsYXRmb3JtU2V0SFRUUENv
b2tpZUFjY2VwdFBvbGljeShIVFRQQ29va2llQWNjZXB0UG9saWN5KTsKICAgICB2b2lkIGdldEhU
VFBDb29raWVBY2NlcHRQb2xpY3kodWludDY0X3QgY2FsbGJhY2tJRCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5tZXNzYWdl
cy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2Vy
Lm1lc3NhZ2VzLmluCmluZGV4IDAwZTdiNjViNzQ5MDgyNmM1YmIzOWJkNzI2ZTljMmQzYmE1M2Yw
NTYuLjBhNTg1NTVlYzZhOWNjNDhmOWQ4YTk0NzVjYTYyNDhjM2VkNWIzNDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLm1lc3Nh
Z2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVN
YW5hZ2VyLm1lc3NhZ2VzLmluCkBAIC0yNywxMSArMjcsMTUgQEAKICAgICB2b2lkIEdldEhvc3Ru
YW1lc1dpdGhDb29raWVzKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IGNh
bGxiYWNrSUQpCiAgICAgdm9pZCBEZWxldGVDb29raWVzRm9ySG9zdG5hbWUoV2ViQ29yZTo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgU3RyaW5nIGhvc3RuYW1lKQogICAgIHZvaWQgRGVsZXRlQWxsQ29v
a2llcyhXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQotICAgIHZvaWQgRGVsZXRlQWxsQ29v
a2llc01vZGlmaWVkU2luY2UoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgc3RkOjpjaHJv
bm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCB0aW1lKQogCi0gICAgdm9pZCBTZXRDb29raWVz
KFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+IGNv
b2tpZXMsIFdlYkNvcmU6OlVSTCB1cmwsIFdlYkNvcmU6OlVSTCBtYWluRG9jdW1lbnRVUkwpOwor
ICAgIHZvaWQgU2V0Q29va2llKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHN0cnVjdCBX
ZWJDb3JlOjpDb29raWUgY29va2llLCB1aW50NjRfdCBjYWxsYmFja0lEKQorICAgIHZvaWQgU2V0
Q29va2llcyhXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBWZWN0b3I8V2ViQ29yZTo6Q29v
a2llPiBjb29raWVzLCBXZWJDb3JlOjpVUkwgdXJsLCBXZWJDb3JlOjpVUkwgbWFpbkRvY3VtZW50
VVJMLCB1aW50NjRfdCBjYWxsYmFja0lEKQorICAgIHZvaWQgR2V0QWxsQ29va2llcyhXZWJDb3Jl
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBjYWxsYmFja0lEKQorICAgIHZvaWQgR2V0
Q29va2llcyhXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpVUkwgdXJsLCB1
aW50NjRfdCBjYWxsYmFja0lEKQorICAgIHZvaWQgRGVsZXRlQ29va2llKFdlYkNvcmU6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIHN0cnVjdCBXZWJDb3JlOjpDb29raWUgY29va2llLCB1aW50NjRfdCBj
YWxsYmFja0lEKQorICAgIHZvaWQgRGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2UoV2ViQ29y
ZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9w
b2ludCB0aW1lLCB1aW50NjRfdCBjYWxsYmFja0lEKQogCi0gICAgdm9pZCBTZXRIVFRQQ29va2ll
QWNjZXB0UG9saWN5KHVpbnQzMl90IHBvbGljeSkKKyAgICB2b2lkIFNldEhUVFBDb29raWVBY2Nl
cHRQb2xpY3kodWludDMyX3QgcG9saWN5LCB1aW50NjRfdCBjYWxsYmFja0lEKQogICAgIHZvaWQg
R2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSh1aW50NjRfdCBjYWxsYmFja0lEKQogICAgIAogICAg
IHZvaWQgU3RhcnRPYnNlcnZpbmdDb29raWVDaGFuZ2VzKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNz
aW9uSUQpCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5k
ZXggODBkYTgyMjhkY2E3N2U5YjkzODZkMzllYmU1YzhmNTQyY2YzY2I5ZC4uNGNhZGU2YjMwMDg5
MTg2YWIxZTM5ODUzMjEwMTUyYmEyYTViYTE1MiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9n
CisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDE3LTAzLTEzICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBXS1dlYlZpZXcgcHJvdmlk
ZXMgbm8gYWNjZXNzIHRvIGNvb2tpZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNDAxOTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorCiAyMDE3LTAzLTExICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91
aGFsbGF3YUBhcHBsZS5jb20+CiAKICAgICAgICAgRW5hYmxlIGFzeW5jIGltYWdlIGRlY29kaW5n
IGZvciBsYXJnZSBpbWFnZXMKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdl
YktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNzYwMWRiZTA2OTJj
MDAwOGU2YjdkYmFhM2ZhMDAxNjM0NWQyMTJmNy4uMmRmMzQ1NjJiNDliYTcyZDM4MDFiZTFjNjA3
ZDA0YWM4MzZhNTBhMiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0
QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE1Miw2ICsxNTIsNyBA
QAogCQk1MUJDRUU0RjFDODRGNTNCMDA0MkM4MkUgLyogSW5kZXhlZERCTXVsdGlQcm9jZXNzLTIu
aHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MUJDRUU0RDFDODRGNTJDMDA0MkM4MkUgLyogSW5kZXhlZERCTXVsdGlQcm9jZXNzLTIuaHRt
bCAqLzsgfTsKIAkJNTFDRDFDNkMxQjM4Q0U0MzAwMTQyQ0E1IC8qIE1vZGFsQWxlcnRzLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFDRDFDNkExQjM4
Q0UzNjAwMTQyQ0E1IC8qIE1vZGFsQWxlcnRzLm1tICovOyB9OwogCQk1MUNEMUM3MjFCMzhENDg0
MDAxNDJDQTUgLyogbW9kYWwtYWxlcnRzLWluLW5ldy1hYm91dC1ibGFuay13aW5kb3cuaHRtbCBp
biBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUNE
MUM3MTFCMzhENDg0MDAxNDJDQTUgLyogbW9kYWwtYWxlcnRzLWluLW5ldy1hYm91dC1ibGFuay13
aW5kb3cuaHRtbCAqLzsgfTsKKwkJNTFEMTI0OTgxRTc2M0IwMjAwMkIyODIwIC8qIFdLSFRUUENv
b2tpZVN0b3JhZ2UubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MUQxMjQ5NzFFNzYzQUY4MDAyQjI4MjAgLyogV0tIVFRQQ29va2llU3RvcmFnZS5tbSAq
LzsgfTsKIAkJNTFFNUM3MDIxOTE5QzNCMjAwRDhCM0UxIC8qIHNpbXBsZTIuaHRtbCBpbiBDb3B5
IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUU3ODAzNjE5
MTlBRkY4MDAxODI5QTIgLyogc2ltcGxlMi5odG1sICovOyB9OwogCQk1MUU1QzcwMzE5MTlDM0Iy
MDBEOEIzRTEgLyogc2ltcGxlMy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRTc4MDM3MTkxOUFGRjgwMDE4MjlBMiAvKiBzaW1wbGUz
Lmh0bWwgKi87IH07CiAJCTUxRTZBODk0MUQyRjFDMEEwMEMwMDRCNiAvKiBMb2NhbFN0b3JhZ2VD
bGVhci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUx
RTZBODkyMUQyRjFCRUMwMEMwMDRCNiAvKiBMb2NhbFN0b3JhZ2VDbGVhci5tbSAqLzsgfTsKQEAg
LTEwNDgsNiArMTA0OSw3IEBACiAJCTUxQ0I0QUQ3MUIzQTA3OUMwMEMxQjFDNiAvKiBNb2RhbEFs
ZXJ0c1NQSS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNb2RhbEFs
ZXJ0c1NQSS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxQ0QxQzZBMUIzOENF
MzYwMDE0MkNBNSAvKiBNb2RhbEFsZXJ0cy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IE1vZGFsQWxlcnRzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1MUNEMUM3MTFCMzhENDg0MDAxNDJDQTUgLyogbW9kYWwtYWxlcnRzLWluLW5ldy1hYm91dC1i
bGFuay13aW5kb3cuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJtb2RhbC1hbGVydHMtaW4tbmV3LWFib3V0LWJs
YW5rLXdpbmRvdy5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFEMTI0OTcx
RTc2M0FGODAwMkIyODIwIC8qIFdLSFRUUENvb2tpZVN0b3JhZ2UubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS0hUVFBDb29raWVTdG9yYWdlLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1MUU1QzcwNDE5MTlFQTVGMDBEOEIzRTEgLyogU2hvdWxk
S2VlcEN1cnJlbnRCYWNrRm9yd2FyZExpc3RJdGVtSW5MaXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNob3VsZEtlZXBDdXJyZW50QmFja0ZvcndhcmRMaXN0SXRl
bUluTGlzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxRTZBODkyMUQyRjFC
RUMwMEMwMDRCNiAvKiBMb2NhbFN0b3JhZ2VDbGVhci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IExvY2FsU3RvcmFnZUNsZWFyLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1MUU2QTg5NTFEMkYxQzc3MDBDMDA0QjYgLyogTG9jYWxTdG9yYWdlQ2xl
YXIuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9IExvY2FsU3RvcmFnZUNsZWFyLmh0
bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNjQ5LDYgKzE2NTEsNyBAQAogCQkJ
CTUxMjBDODNDMUU2NzUwNzkwMDI1QjI1MCAvKiBXZWJzaXRlRGF0YVN0b3JlQ3VzdG9tUGF0aHMu
bW0gKi8sCiAJCQkJNUM5RTU2ODQxREY5MTQzRDAwQzlFRTMzIC8qIFdlYnNpdGVQb2xpY2llcy5t
bSAqLywKIAkJCQkxRjgzNTcxQTFEM0ZGQjBFMDBFMzk2N0IgLyogV0tCYWNrRm9yd2FyZExpc3Qu
bW0gKi8sCisJCQkJNTFEMTI0OTcxRTc2M0FGODAwMkIyODIwIC8qIFdLSFRUUENvb2tpZVN0b3Jh
Z2UubW0gKi8sCiAJCQkJMzc1RTBFMTUxRDY2Njc0NDAwRUZFQzJDIC8qIFdLTlNOdW1iZXIubW0g
Ki8sCiAJCQkJMzdCNDdFMkUxRDY0RTdDQTAwNUY0RUZGIC8qIFdLT2JqZWN0Lm1tICovLAogCQkJ
CTJEMDAwNjVEMUMxRjU4OTQwMDg4RTZBNyAvKiBXS1BERlZpZXdSZXNpemVDcmFzaC5tbSAqLywK
QEAgLTI3MjksNiArMjczMiw3IEBACiAJCQkJN0NDRTdFRjQxQTQxMUFFNjAwNDQ3QzRDIC8qIEZp
bmRNYXRjaGVzLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0UwNDAxRDBBNjNFMzAwRkVCQ0Yz
IC8qIEZpcnN0UmVzcG9uZGVyU2Nyb2xsaW5nUG9zaXRpb24ubW0gaW4gU291cmNlcyAqLywKIAkJ
CQk3QzgzRTBCQzFEMEE2NTA3MDBGRUJDRjMgLyogRml4ZWRMYXlvdXRTaXplLm1tIGluIFNvdXJj
ZXMgKi8sCisJCQkJNTFEMTI0OTgxRTc2M0IwMjAwMkIyODIwIC8qIFdLSFRUUENvb2tpZVN0b3Jh
Z2UubW0gaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0VGNTFBNDExQUU2MDA0NDdDNEMgLyogRm9y
Y2VSZXBhaW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTM3QjQ3RTMwMUQ2NEU3Q0EwMDVGNEVG
RiAvKiBXS09iamVjdC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RUMwMUE0MTFBN0UwMDQ0
N0M0QyAvKiBGcmFnbWVudE5hdmlnYXRpb24ubW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL1dLSFRUUENvb2tpZVN0b3Jh
Z2UubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9XS0hUVFBDb29r
aWVTdG9yYWdlLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJjZTI4OTA3MzY3NGVhMGYyZTBkNjk2MzkzNTY2NWI5
OWNhNmJkZmUKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdDJDb2NvYS9XS0hUVFBDb29raWVTdG9yYWdlLm1tCkBAIC0wLDAgKzEsMTA4IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGll
cy5oIgorI2ltcG9ydCA8V2ViS2l0L1dLRm91bmRhdGlvbi5oPgorI2ltcG9ydCA8V2ViS2l0L1dL
SFRUUENvb2tpZVN0b3JhZ2UuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1dlYnNpdGVEYXRhU3RvcmVQ
cml2YXRlLmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisKKyNpZiBXS19BUElfRU5BQkxF
RAorCitzdGF0aWMgYm9vbCBnb3RGbGFnOworCitURVNUKFdlYktpdDIsIFdLSFRUUENvb2tpZVN0
b3JhZ2UpCit7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10g
aW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKV0pOworICAgIFt3ZWJWaWV3
IGxvYWRIVE1MU3RyaW5nOkAiT2ggaGVsbG8iIGJhc2VVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6
QCJodHRwOi8vd2Via2l0Lm9yZyJdXTsKKworICAgIFJldGFpblB0cjxXS0hUVFBDb29raWVTdG9y
YWdlPiBjb29raWVTdG9yYWdlID0gW1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0RGF0YVN0b3Jl
XS5faHR0cENvb2tpZVN0b3JhZ2U7CisKKyAgICBOU0FycmF5PE5TSFRUUENvb2tpZSAqPiAqY29v
a2llcyA9IG5pbDsKKyAgICBbY29va2llU3RvcmFnZSBmZXRjaENvb2tpZXM6W2Nvb2tpZXNQdHIg
PSAmY29va2llc10oTlNBcnJheTxOU0hUVFBDb29raWUgKj4gKm5zQ29va2llcykgeworICAgICAg
ICAqY29va2llc1B0ciA9IFtuc0Nvb2tpZXMgcmV0YWluXTsKKyAgICAgICAgZ290RmxhZyA9IHRy
dWU7CisgICAgfV07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmdvdEZsYWcpOwor
CisgICAgQVNTRVJUX0VRKGNvb2tpZXMuY291bnQsIDB1KTsKKyAgICBbY29va2llcyByZWxlYXNl
XTsKKworICAgIGdvdEZsYWcgPSBmYWxzZTsKKworICAgIFJldGFpblB0cjxOU0hUVFBDb29raWU+
IGNvb2tpZTEgPSBbTlNIVFRQQ29va2llIGNvb2tpZVdpdGhQcm9wZXJ0aWVzOkB7CisgICAgICAg
IE5TSFRUUENvb2tpZVBhdGg6IEAiLyIsCisgICAgICAgIE5TSFRUUENvb2tpZU5hbWU6IEAiQ29v
a2llTmFtZSIsCisgICAgICAgIE5TSFRUUENvb2tpZVZhbHVlOiBAIkNvb2tpZVZhbHVlIiwKKyAg
ICAgICAgTlNIVFRQQ29va2llRG9tYWluOiBAIi53d3cud2Via2l0Lm9yZyIsCisgICAgICAgIE5T
SFRUUENvb2tpZVNlY3VyZTogQCJUUlVFIiwKKyAgICAgICAgTlNIVFRQQ29va2llRGlzY2FyZDog
QCJUUlVFIiwKKyAgICAgICAgTlNIVFRQQ29va2llTWF4aW11bUFnZTogQCIxMDAwMCIsCisgICAg
fV07CisKKyAgICBSZXRhaW5QdHI8TlNIVFRQQ29va2llPiBjb29raWUyID0gW05TSFRUUENvb2tp
ZSBjb29raWVXaXRoUHJvcGVydGllczpAeworICAgICAgICBOU0hUVFBDb29raWVQYXRoOiBAIi9w
YXRoIiwKKyAgICAgICAgTlNIVFRQQ29va2llTmFtZTogQCJPdGhlckNvb2tpZU5hbWUiLAorICAg
ICAgICBOU0hUVFBDb29raWVWYWx1ZTogQCJPdGhlckNvb2tpZVZhbHVlIiwKKyAgICAgICAgTlNI
VFRQQ29va2llRG9tYWluOiBAIi53d3cudzNjLm9yZyIsCisgICAgICAgIE5TSFRUUENvb2tpZU1h
eGltdW1BZ2U6IEAiMTAwMDAiLAorICAgIH1dOworCisgICAgW2Nvb2tpZVN0b3JhZ2Ugc2V0Q29v
a2llOmNvb2tpZTEuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6bmlsXTsKKyAgICBbY29va2llU3Rv
cmFnZSBzZXRDb29raWU6Y29va2llMi5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpuaWxdOworCisg
ICAgW2Nvb2tpZVN0b3JhZ2UgZmV0Y2hDb29raWVzOltjb29raWVzUHRyID0gJmNvb2tpZXNdKE5T
QXJyYXk8TlNIVFRQQ29va2llICo+ICpuc0Nvb2tpZXMpIHsKKyAgICAgICAgKmNvb2tpZXNQdHIg
PSBbbnNDb29raWVzIHJldGFpbl07CisgICAgICAgIGdvdEZsYWcgPSB0cnVlOworICAgIH1dOwor
CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZnb3RGbGFnKTsKKworICAgIEFTU0VSVF9F
UShjb29raWVzLmNvdW50LCAydSk7CisKKyAgICBmb3IgKE5TSFRUUENvb2tpZSAqY29va2llIDog
Y29va2llcykgeworICAgICAgICBpZiAoW2Nvb2tpZS5uYW1lIGlzRXF1YWw6QCJDb29raWVOYW1l
Il0pIHsKKyAgICAgICAgICAgIEFTU0VSVF9UUlVFKFtjb29raWUxLmdldCgpLnBhdGggaXNFcXVh
bFRvU3RyaW5nOmNvb2tpZS5wYXRoXSk7CisgICAgICAgICAgICBBU1NFUlRfVFJVRShbY29va2ll
MS5nZXQoKS52YWx1ZSBpc0VxdWFsVG9TdHJpbmc6Y29va2llLnZhbHVlXSk7CisgICAgICAgICAg
ICBBU1NFUlRfVFJVRShbY29va2llMS5nZXQoKS5kb21haW4gaXNFcXVhbFRvU3RyaW5nOmNvb2tp
ZS5kb21haW5dKTsKKyAgICAgICAgICAgIEFTU0VSVF9UUlVFKGNvb2tpZTEuZ2V0KCkuc2VjdXJl
KTsKKyAgICAgICAgICAgIEFTU0VSVF9UUlVFKGNvb2tpZTEuZ2V0KCkuc2Vzc2lvbk9ubHkpOwor
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgQVNTRVJUX1RSVUUoW2Nvb2tpZTIuZ2V0KCku
cGF0aCBpc0VxdWFsVG9TdHJpbmc6Y29va2llLnBhdGhdKTsKKyAgICAgICAgICAgIEFTU0VSVF9U
UlVFKFtjb29raWUyLmdldCgpLnZhbHVlIGlzRXF1YWxUb1N0cmluZzpjb29raWUudmFsdWVdKTsK
KyAgICAgICAgICAgIEFTU0VSVF9UUlVFKFtjb29raWUyLmdldCgpLm5hbWUgaXNFcXVhbFRvU3Ry
aW5nOmNvb2tpZS5uYW1lXSk7CisgICAgICAgICAgICBBU1NFUlRfVFJVRShbY29va2llMi5nZXQo
KS5kb21haW4gaXNFcXVhbFRvU3RyaW5nOmNvb2tpZS5kb21haW5dKTsKKyAgICAgICAgICAgIEFT
U0VSVF9GQUxTRShjb29raWUyLmdldCgpLnNlY3VyZSk7CisgICAgICAgICAgICBBU1NFUlRfRkFM
U0UoY29va2llMi5nZXQoKS5zZXNzaW9uT25seSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBb
Y29va2llcyByZWxlYXNlXTsKK30KKworI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>304314</attachid>
            <date>2017-03-13 15:41:40 -0700</date>
            <delta_ts>2017-03-13 16:00:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-140191-20170313154146.patch</filename>
            <type>text/plain</type>
            <size>92284</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEzNzc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmU3MGVhY2ZjNWQwZmY4
NzI0MGFjN2QwMzg5MmQ1MTJkZjA5YzIyOC4uOGU1MDFhZDk2MWRmZWVjZTRhMGFlOTU2NzVjNzdl
YTQ0Njk5ZTI4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDE3LTAzLTEzICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBXS1dlYlZpZXcgcHJvdmlk
ZXMgbm8gYWNjZXNzIHRvIGNvb2tpZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNDAxOTEKKworICAgICAgICBSZXZpZXdlZCBieSBUaW0gSG9ydG9u
LgorCisgICAgICAgIENvdmVyZWQgYnkgQVBJIHRlc3RzLgorCisgICAgICAgICogcGxhdGZvcm0v
Q29va2llLmg6CisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vz
c2lvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246
OnNldENvb2tpZSk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRl
bGV0ZUNvb2tpZSk6CisgICAgICAgIChXZWJDb3JlOjpuc0Nvb2tpZXNUb0Nvb2tpZVZlY3Rvcik6
CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OmdldEFsbENvb2tpZXMp
OgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpnZXRDb29raWVzKToK
KworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25T
b3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVsZXRl
Q29va2llKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0QWxs
Q29va2llcyk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OmdldENv
b2tpZXMpOgorCiAyMDE3LTAzLTEyICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4K
IAogICAgICAgICBBZGQgZnVsbCBOU0hUVFBDb29raWUgZmlkZWxpdHkgdG8gV2ViQ29yZTo6Q29v
a2llLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCmluZGV4IDExMDdjODNiNDQ5MTc5N2M5YmRlMDc5NDJmODYzMzQzNTY4MDI5
OWIuLjM5MjhjNTgzOTRkNmJlYjg3MjgzODM1M2M4ZTEzMzNlYzJmNzM5NWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxMTggQEAKKzIwMTctMDMtMTMgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBw
bGUuY29tPgorCisgICAgICAgIFdLV2ViVmlldyBwcm92aWRlcyBubyBhY2Nlc3MgdG8gY29va2ll
cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MDE5
MQorCisgICAgICAgIFJldmlld2VkIGJ5IFRpbSBIb3J0b24uCisKKyAgICAgICAgVGhpcyBhZGRz
IGEgbmV3IFdLSFRUUENvb2tpZU1hbmFnZXIgU1BJLgorICAgICAgICBJdCBmb2xsb3dzIHRoZSBO
U0hUVFBDb29raWVTdG9yYWdlIEFQSSBidXQgYXN5bmNocm9ub3VzICh3aXRoIGNvbXBsZXRpb24g
aGFuZGxlcnMpLgorICAgICAgICAKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAg
KiBXZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKKyAgICAgICAgKiBTaGFyZWQv
QVBJL0FQSU9iamVjdC5oOgorICAgICAgICAqIFNoYXJlZC9Db2NvYS9BUElPYmplY3QubW06Cisg
ICAgICAgIChBUEk6Ok9iamVjdDo6bmV3T2JqZWN0KToKKworICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQVBJSFRUUENvb2tpZVN0b3JhZ2UuY3BwOiBBZGRlZC4KKyAgICAgICAgKEFQSTo6SFRUUENv
b2tpZVN0b3JhZ2U6OkhUVFBDb29raWVTdG9yYWdlKToKKyAgICAgICAgKEFQSTo6SFRUUENvb2tp
ZVN0b3JhZ2U6On5IVFRQQ29va2llU3RvcmFnZSk6CisgICAgICAgIChBUEk6OkhUVFBDb29raWVT
dG9yYWdlOjpjb29raWVzKToKKyAgICAgICAgKEFQSTo6SFRUUENvb2tpZVN0b3JhZ2U6OnNldENv
b2tpZSk6CisgICAgICAgIChBUEk6OkhUVFBDb29raWVTdG9yYWdlOjpzZXRDb29raWVzKToKKyAg
ICAgICAgKEFQSTo6SFRUUENvb2tpZVN0b3JhZ2U6OmRlbGV0ZUNvb2tpZSk6CisgICAgICAgIChB
UEk6OkhUVFBDb29raWVTdG9yYWdlOjpyZW1vdmVDb29raWVzU2luY2VEYXRlKToKKyAgICAgICAg
KEFQSTo6SFRUUENvb2tpZVN0b3JhZ2U6OnNldEhUVFBDb29raWVBY2NlcHRQb2xpY3kpOgorICAg
ICAgICAoQVBJOjpIVFRQQ29va2llU3RvcmFnZTo6Z2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSk6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElIVFRQQ29va2llU3RvcmFnZS5oOiBBZGRlZC4K
KworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5jcHA6CisgICAg
ICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmUpOgorICAgICAgICAo
QVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpodHRwQ29va2llU3RvcmFnZSk6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmg6CisKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0MvV0tDb29raWVNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdLQ29va2llTWFuYWdlckRlbGV0
ZUFsbENvb2tpZXNNb2RpZmllZEFmdGVyRGF0ZSk6CisgICAgICAgIChXS0Nvb2tpZU1hbmFnZXJT
ZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KToKKyAgICAgICAgKFdLQ29va2llTWFuYWdlckdldEhU
VFBDb29raWVBY2NlcHRQb2xpY3kpOgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLV2Vi
c2l0ZURhdGFTdG9yZVJlZi5jcHA6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVHZXREZWZh
dWx0RGF0YVN0b3JlKToKKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNz
UG9vbC5tbToKKyAgICAgICAgKC1bV0tQcm9jZXNzUG9vbCBfc2V0Q29va2llQWNjZXB0UG9saWN5
Ol0pOgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUu
bW06CisgICAgICAgICgrW1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0RGF0YVN0b3JlXSk6Cisg
ICAgICAgICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBfaHR0cENvb2tpZVN0b3JhZ2VdKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaDoKKyAg
ICAgICAgCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0hUVFBDb29raWVTdG9yYWdl
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0hUVFBDb29raWVTdG9yYWdlLm1t
OiBBZGRlZC4KKyAgICAgICAgKGNvcmVDb29raWVzVG9OU0Nvb2tpZXMpOgorICAgICAgICAoLVtX
S0hUVFBDb29raWVTdG9yYWdlIGRlYWxsb2NdKToKKyAgICAgICAgKC1bV0tIVFRQQ29va2llU3Rv
cmFnZSBmZXRjaENvb2tpZXM6XSk6CisgICAgICAgICgtW1dLSFRUUENvb2tpZVN0b3JhZ2UgZmV0
Y2hDb29raWVzRm9yVVJMOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS0hUVFBD
b29raWVTdG9yYWdlIHNldENvb2tpZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1b
V0tIVFRQQ29va2llU3RvcmFnZSBkZWxldGVDb29raWU6Y29tcGxldGlvbkhhbmRsZXI6XSk6Cisg
ICAgICAgICgtW1dLSFRUUENvb2tpZVN0b3JhZ2Ugc2V0Q29va2llczpmb3JVUkw6bWFpbkRvY3Vt
ZW50VVJMOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS0hUVFBDb29raWVTdG9y
YWdlIHJlbW92ZUNvb2tpZXNTaW5jZURhdGU6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAg
ICgtW1dLSFRUUENvb2tpZVN0b3JhZ2Ugc2V0Q29va2llQWNjZXB0UG9saWN5OmNvbXBsZXRpb25I
YW5kbGVyOl0pOgorICAgICAgICAoa2l0Q29va2llUG9saWN5VG9OU0Nvb2tpZVBvbGljeSk6Cisg
ICAgICAgICgtW1dLSFRUUENvb2tpZVN0b3JhZ2UgZmV0Y2hDb29raWVBY2NlcHRQb2xpY3k6XSk6
CisgICAgICAgICgtW1dLSFRUUENvb2tpZVN0b3JhZ2UgX2FwaU9iamVjdF0pOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tIVFRQQ29va2llU3RvcmFnZUludGVybmFsLmg6IENvcGll
ZCBmcm9tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0
b3JlUHJpdmF0ZS5oLgorICAgICAgICAoV2ViS2l0Ojp3cmFwcGVyKToKKworICAgICAgICAqIFVJ
UHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246OmFkZFNpbmdsZUNvb2tpZSk6CisKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViQ29va2llTWFuYWdlclByb3h5OjpnZXRIb3N0bmFtZXNXaXRoQ29va2llcyk6CisgICAgICAg
IChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGVsZXRlQ29va2llc0Zvckhvc3RuYW1l
KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlclByb3h5OjpkZWxldGVBbGxDb29r
aWVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlclByb3h5OjpkZWxldGVDb29r
aWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRlbGV0ZUFsbENv
b2tpZXNNb2RpZmllZFNpbmNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlclBy
b3h5OjpzZXRDb29raWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6
OnNldENvb2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6Omdl
dEFsbENvb2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6Omdl
dENvb2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRpZFNl
dENvb2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRpZEdl
dENvb2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRpZERl
bGV0ZUNvb2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OnN0
YXJ0T2JzZXJ2aW5nQ29va2llQ2hhbmdlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1h
bmFnZXJQcm94eTo6c3RvcE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMpOgorICAgICAgICAoV2ViS2l0
OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OnNldENvb2tpZU9ic2VydmVyQ2FsbGJhY2spOgorICAg
ICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OmNvb2tpZXNEaWRDaGFuZ2UpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OnNldEhUVFBDb29raWVBY2Nl
cHRQb2xpY3kpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OmdldEhU
VFBDb29raWVBY2NlcHRQb2xpY3kpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2Vy
UHJveHk6OmRpZEdldEhUVFBDb29raWVBY2NlcHRQb2xpY3kpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJDb29raWVNYW5hZ2VyUHJveHk6OmRpZFNldEhUVFBDb29raWVBY2NlcHRQb2xpY3kpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluOgorCisgICAgICAgICogVUlQ
cm9jZXNzL1dlYkZyYW1lUHJveHkuaDoKKyAgICAgICAgCisgICAgICAgICogVUlQcm9jZXNzL1dl
YlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaDoK
KyAgICAgICAgCisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3Rv
cmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpwcm9jZXNzUG9vbEZv
ckNvb2tpZVN0b3JhZ2VPcGVyYXRpb25zKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFT
dG9yZTo6cHJvY2Vzc1Bvb2xzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vi
c2l0ZURhdGFTdG9yZS5oOgorICAgICAgICAKKyAgICAgICAgKiBXZWJQcm9jZXNzL0Nvb2tpZXMv
V2ViQ29va2llTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXI6
OmRlbGV0ZUNvb2tpZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXI6OmRlbGV0
ZUFsbENvb2tpZXNNb2RpZmllZFNpbmNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFu
YWdlcjo6Z2V0QWxsQ29va2llcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXI6
OmdldENvb2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyOjpzZXRDb29r
aWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyOjpzZXRDb29raWVzKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlcjo6c2V0SFRUUENvb2tpZUFjY2VwdFBvbGlj
eSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIuaDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5tZXNzYWdlcy5pbjoK
KwogMjAxNy0wMy0xMiAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgVHJhbnNpdGlvbiBHZW5lcmljQ2FsbGJhY2sgZnJvbSBzdGQ6OmZ1bmN0aW9uIHRvIFdURjo6
RnVuY3Rpb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db29raWUuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nvb2tpZS5oCmluZGV4IGU0N2U3YmJmZjViYjNhYmM2
M2FiM2Y5MjhmYzI3NDE1NWUxMDRmYTcuLjVkZGI5MzU0Y2U4ZDE5ZTdhNzU0Yjk3Y2UzYTAzODE1
M2YzNjQ2OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nvb2tpZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nvb2tpZS5oCkBAIC01OCw3ICs1OCw3IEBAIHN0
cnVjdCBDb29raWUgewogCiAjaWZkZWYgX19PQkpDX18KICAgICBXRUJDT1JFX0VYUE9SVCBDb29r
aWUoTlNIVFRQQ29va2llICopOwotICAgIG9wZXJhdG9yIE5TSFRUUENvb2tpZSAqKCkgY29uc3Q7
CisgICAgV0VCQ09SRV9FWFBPUlQgb3BlcmF0b3IgTlNIVFRQQ29va2llICooKSBjb25zdDsKICNl
bmRpZgogCiAgICAgU3RyaW5nIG5hbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaAppbmRleCBmMTQ4OWM2YjQyYTFk
NDVhZjljYWE2MmNhMjZkMTcwNWI0NmIzNzQ4Li4yMTJiZTI2NGVhNWNjNzY1OGE4ZGYyZWYzZTM1
OTY4MTg1MTQ5ZWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgKQEAgLTEwMCw3ICsxMDAsMTEgQEAgcHVibGlj
OgogICAgIE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0KCkgY29uc3Q7CiAjZW5kaWYKIAorICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q29va2llKGNvbnN0IENvb2tpZSYpOwogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgc2V0Q29va2llcyhjb25zdCBWZWN0b3I8Q29va2llPiYsIGNvbnN0IFVS
TCYsIGNvbnN0IFVSTCYgbWFpbkRvY3VtZW50VVJMKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGRlbGV0ZUNvb2tpZShjb25zdCBDb29raWUmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8
Q29va2llPiBnZXRBbGxDb29raWVzKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPENvb2tp
ZT4gZ2V0Q29va2llcyhjb25zdCBVUkwmKTsKIAogcHJpdmF0ZToKICAgICBzdGF0aWMgSGFzaE1h
cDxTZXNzaW9uSUQsIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrU3RvcmFnZVNlc3Npb24+PiYgZ2xv
YmFsU2Vzc2lvbk1hcCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jb2NvYS9OZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2EubW0KaW5k
ZXggNDRhZWFiNzBlOTliNWZhMGE4NGVjZmQzNTdlMzQ1ODNkZWZjMDFlMC4uNGM5NTY3ZTljNjdh
MGE0NzY3NmE4ZmM3ZjhlZDRhZjRkZTE1NTI5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtTdG9yYWdlU2Vz
c2lvbkNvY29hLm1tCkBAIC0zMiw2ICszMiwxMyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
K3ZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRDb29raWUoY29uc3QgQ29va2llJiBjb29r
aWUpCit7CisgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOworICAgIFtuc0Nvb2tpZVN0
b3JhZ2UoKSBzZXRDb29raWU6KE5TSFRUUENvb2tpZSAqKWNvb2tpZV07CisgICAgRU5EX0JMT0NL
X09CSkNfRVhDRVBUSU9OUzsKK30KKwogdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldENv
b2tpZXMoY29uc3QgVmVjdG9yPENvb2tpZT4mIGNvb2tpZXMsIGNvbnN0IFVSTCYgdXJsLCBjb25z
dCBVUkwmIG1haW5Eb2N1bWVudFVSTCkKIHsKICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+
IG5zQ29va2llcyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhDYXBh
Y2l0eTpjb29raWVzLnNpemUoKV0pOwpAQCAtNDMsNiArNTAsMzEgQEAgdm9pZCBOZXR3b3JrU3Rv
cmFnZVNlc3Npb246OnNldENvb2tpZXMoY29uc3QgVmVjdG9yPENvb2tpZT4mIGNvb2tpZXMsIGNv
bnN0IFVSTCYKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogfQogCit2b2lkIE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbjo6ZGVsZXRlQ29va2llKGNvbnN0IENvb2tpZSYgY29va2llKQorewor
ICAgIFtuc0Nvb2tpZVN0b3JhZ2UoKSBkZWxldGVDb29raWU6KE5TSFRUUENvb2tpZSAqKWNvb2tp
ZV07Cit9CisKK3N0YXRpYyBWZWN0b3I8Q29va2llPiBuc0Nvb2tpZXNUb0Nvb2tpZVZlY3RvcihO
U0FycmF5PE5TSFRUUENvb2tpZSAqPiAqbnNDb29raWVzKQoreworICAgIFZlY3RvcjxDb29raWU+
IGNvb2tpZXM7CisgICAgY29va2llcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG5zQ29va2llcy5j
b3VudCk7CisgICAgZm9yIChOU0hUVFBDb29raWUgKm5zQ29va2llIGluIG5zQ29va2llcykKKyAg
ICAgICAgY29va2llcy51bmNoZWNrZWRBcHBlbmQobnNDb29raWUpOworCisgICAgcmV0dXJuIGNv
b2tpZXM7Cit9CisKK1ZlY3RvcjxDb29raWU+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0QWxs
Q29va2llcygpCit7CisgICAgcmV0dXJuIG5zQ29va2llc1RvQ29va2llVmVjdG9yKG5zQ29va2ll
U3RvcmFnZSgpLmNvb2tpZXMpOworfQorCitWZWN0b3I8Q29va2llPiBOZXR3b3JrU3RvcmFnZVNl
c3Npb246OmdldENvb2tpZXMoY29uc3QgVVJMJiB1cmwpCit7CisgICAgcmV0dXJuIG5zQ29va2ll
c1RvQ29va2llVmVjdG9yKFtuc0Nvb2tpZVN0b3JhZ2UoKSBjb29raWVzRm9yVVJMOihOU1VSTCAq
KXVybF0pOworfQorCiBOU0hUVFBDb29raWVTdG9yYWdlICpOZXR3b3JrU3RvcmFnZVNlc3Npb246
Om5zQ29va2llU3RvcmFnZSgpIGNvbnN0CiB7CiAgICAgYXV0byBjZkNvb2tpZVN0b3JhZ2UgPSBj
b29raWVTdG9yYWdlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL3NvdXAvTmV0d29ya1N0b3JhZ2VTZXNzaW9uU291cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL3NvdXAvTmV0d29ya1N0b3JhZ2VTZXNzaW9uU291cC5jcHAKaW5kZXgg
MjQ5YmQ4MmJkNzRlOGM2MmE5YzM1NzAzN2Y5ODM4NTA0ZmE1N2FjZC4uYTM3YWE3ZGQxMGVmODli
YmY2ZjAwNTYzOWNiYWFjOGM4YjhjNWIxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lvblNvdXAuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25T
b3VwLmNwcApAQCAtMzA0LDYgKzMwNCwyMCBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6
c2V0Q29va2llcyhjb25zdCBWZWN0b3I8Q29va2llPiYgY29va2llcywgY29uc3QgVVJMJgogICAg
ICAgICBzb3VwX2Nvb2tpZV9qYXJfYWRkX2Nvb2tpZShjb29raWVTdG9yYWdlKCksIHRvU291cENv
b2tpZShjb29raWUpKTsKIH0KIAordm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlbGV0ZUNv
b2tpZShjb25zdCBDb29raWUmKQoreworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgZm9yIFdLMiB0
byB1c2UuCit9CisKK1ZlY3RvcjxDb29raWU+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0QWxs
Q29va2llcygpCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudCBmb3IgV0syIHRvIHVzZS4KK30K
KworVmVjdG9yPENvb2tpZT4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpnZXRDb29raWVzKGNvbnN0
IFVSTCYpCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudCBmb3IgV0syIHRvIHVzZS4KK30KIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DTWFr
ZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0CmluZGV4IDgxZmY4ZGE4
MTEyNDNlNTQxYTNjNjk4NGM5ZmE3OGIwOTdjOWRiZTYuLmE4ZmRjZDExYjNhNjIzNjY2MzcxN2Rh
MzQ5NjFlZTE2MDQ2OGU2OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMu
dHh0CisrKyBiL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0CkBAIC0zMzYsNiArMzM2LDcg
QEAgc2V0KFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9BUEkvQVBJQ29udGVudEV4dGVu
c2lvblN0b3JlLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvQVBJRXhwZXJpbWVudGFsRmVhdHVyZS5j
cHAKICAgICBVSVByb2Nlc3MvQVBJL0FQSUZyYW1lSW5mby5jcHAKKyAgICBVSVByb2Nlc3MvQVBJ
L0FQSUhUVFBDb29raWVTdG9yYWdlLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvQVBJSGl0VGVzdFJl
c3VsdC5jcHAKICAgICBVSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb24uY3BwCiAgICAgVUlQcm9j
ZXNzL0FQSS9BUElOYXZpZ2F0aW9uRGF0YS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcAppbmRleCBkOGRj
ZGUzMzA4ZDRiZjc1MzU3MmE0NzdiMTdjYTFmMDFiODJhM2MwLi4yNjA3MGYwMTE0ZTE3MjY3MjEx
MGRiMDI3MWRhNDk3YTFkMmExOTM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrUHJvY2Vzc1NvdXAuY3BwCkBAIC0xMjQsNyArMTI0
LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nl
c3MoY29uc3QgTmV0d29ya1Byb2Nlc3NDcmVhdGkKICAgICAgICAgc3VwcGxlbWVudDxXZWJDb29r
aWVNYW5hZ2VyPigpLT5zZXRDb29raWVQZXJzaXN0ZW50U3RvcmFnZShwYXJhbWV0ZXJzLmNvb2tp
ZVBlcnNpc3RlbnRTdG9yYWdlUGF0aCwKICAgICAgICAgICAgIHBhcmFtZXRlcnMuY29va2llUGVy
c2lzdGVudFN0b3JhZ2VUeXBlKTsKICAgICB9Ci0gICAgc3VwcGxlbWVudDxXZWJDb29raWVNYW5h
Z2VyPigpLT5zZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHBhcmFtZXRlcnMuY29va2llQWNjZXB0
UG9saWN5KTsKKyAgICBzdXBwbGVtZW50PFdlYkNvb2tpZU1hbmFnZXI+KCktPnNldEhUVFBDb29r
aWVBY2NlcHRQb2xpY3kocGFyYW1ldGVycy5jb29raWVBY2NlcHRQb2xpY3ksIDApOwogCiAgICAg
aWYgKCFwYXJhbWV0ZXJzLmxhbmd1YWdlcy5pc0VtcHR5KCkpCiAgICAgICAgIHVzZXJQcmVmZXJy
ZWRMYW5ndWFnZXNDaGFuZ2VkKHBhcmFtZXRlcnMubGFuZ3VhZ2VzKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvQVBJT2JqZWN0LmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvQVBJL0FQSU9iamVjdC5oCmluZGV4IGFlMGZjOTk4NWJkMjc2NDc2ODI3ODlmZjRjNGY0NjZh
MWVjMzQ2MGEuLjQ2ZjI3OTFkZGZjNDUyNDJiYTM1MTRiMDVmOTYzMzE4ZTJmZTUxYjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvQVBJT2JqZWN0LmgKKysrIGIvU291cmNl
L1dlYktpdDIvU2hhcmVkL0FQSS9BUElPYmplY3QuaApAQCAtMTE2LDYgKzExNiw3IEBAIHB1Ymxp
YzoKICAgICAgICAgRnVsbFNjcmVlbk1hbmFnZXIsCiAgICAgICAgIEdlb2xvY2F0aW9uTWFuYWdl
ciwKICAgICAgICAgR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdCwKKyAgICAgICAgSFRUUENv
b2tpZVN0b3JhZ2UsCiAgICAgICAgIEhpdFRlc3RSZXN1bHQsCiAgICAgICAgIEdlb2xvY2F0aW9u
UG9zaXRpb24sCiAgICAgICAgIEdyYW1tYXJEZXRhaWwsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvQ29jb2EvQVBJT2JqZWN0Lm1tIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nv
Y29hL0FQSU9iamVjdC5tbQppbmRleCAxMTYzMjQ1NDIwY2QyNzczODA0YjIyNTM0Y2I5OWMwZmFk
NDE3MjIyLi5kYzY5YWQ3OTM5YzVmNGNkMGYwMTFlN2E2ZTdkNDdhMjc4ZDZmOTRjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29jb2EvQVBJT2JqZWN0Lm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9Db2NvYS9BUElPYmplY3QubW0KQEAgLTM2LDYgKzM2LDcgQEAKICNp
bXBvcnQgIldLQ29udGVudEV4dGVuc2lvbkludGVybmFsLmgiCiAjaW1wb3J0ICJXS0NvbnRlbnRF
eHRlbnNpb25TdG9yZUludGVybmFsLmgiCiAjaW1wb3J0ICJXS0ZyYW1lSW5mb0ludGVybmFsLmgi
CisjaW1wb3J0ICJXS0hUVFBDb29raWVTdG9yYWdlSW50ZXJuYWwuaCIKICNpbXBvcnQgIldLTlNB
cnJheS5oIgogI2ltcG9ydCAiV0tOU0RhdGEuaCIKICNpbXBvcnQgIldLTlNEaWN0aW9uYXJ5Lmgi
CkBAIC0xNzgsNiArMTc5LDEwIEBAIHZvaWQqIE9iamVjdDo6bmV3T2JqZWN0KHNpemVfdCBzaXpl
LCBUeXBlIHR5cGUpCiAgICAgICAgIHdyYXBwZXIgPSBbV0tGcmFtZUluZm8gYWxsb2NdOwogICAg
ICAgICBicmVhazsKIAorICAgIGNhc2UgVHlwZTo6SFRUUENvb2tpZVN0b3JhZ2U6CisgICAgICAg
IHdyYXBwZXIgPSBbV0tIVFRQQ29va2llU3RvcmFnZSBhbGxvY107CisgICAgICAgIGJyZWFrOwor
CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIGNhc2UgVHlwZTo6SGl0VGVzdFJlc3VsdDoKICAgICAg
ICAgd3JhcHBlciA9IFtfV0tIaXRUZXN0UmVzdWx0IGFsbG9jXTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3JhZ2UuY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElIVFRQQ29va2llU3RvcmFnZS5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMzM4Yjg1MjRiOWZjODlmMTRhYzg0NjIzNWMxN2NiNTExYjQ4YjhlMwotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3JhZ2Uu
Y3BwCkBAIC0wLDAgKzEsMTM4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIkFQSUhUVFBDb29raWVTdG9yYWdlLmgiCisKKyNpbmNsdWRlICJBUElXZWJzaXRl
RGF0YVN0b3JlLmgiCisjaW5jbHVkZSAiV2ViQ29va2llTWFuYWdlclByb3h5LmgiCisjaW5jbHVk
ZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0Nvb2tpZS5oPgorCit1c2lu
ZyBuYW1lc3BhY2UgV2ViS2l0OworCituYW1lc3BhY2UgQVBJIHsKKworSFRUUENvb2tpZVN0b3Jh
Z2U6OkhUVFBDb29raWVTdG9yYWdlKFdlYnNpdGVEYXRhU3RvcmUmIHdlYnNpdGVEYXRhU3RvcmUp
CisgICAgOiBtX293bmluZ0RhdGFTdG9yZSh3ZWJzaXRlRGF0YVN0b3JlKQoreworfQorCitIVFRQ
Q29va2llU3RvcmFnZTo6fkhUVFBDb29raWVTdG9yYWdlKCkKK3sKK30KKwordm9pZCBIVFRQQ29v
a2llU3RvcmFnZTo6Y29va2llcyhGdW5jdGlvbjx2b2lkIChjb25zdCBWZWN0b3I8V2ViQ29yZTo6
Q29va2llPiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGF1dG8mIGRhdGFTdG9yZSA9
IG1fb3duaW5nRGF0YVN0b3JlLndlYnNpdGVEYXRhU3RvcmUoKTsKKyAgICBhdXRvIHBvb2wgPSBk
YXRhU3RvcmUucHJvY2Vzc1Bvb2xGb3JDb29raWVTdG9yYWdlT3BlcmF0aW9ucygpOworICAgIGF1
dG8qIGNvb2tpZU1hbmFnZXIgPSBwb29sLT5zdXBwbGVtZW50PFdlYktpdDo6V2ViQ29va2llTWFu
YWdlclByb3h5PigpOworCisgICAgY29va2llTWFuYWdlci0+Z2V0QWxsQ29va2llcyhkYXRhU3Rv
cmUuc2Vzc2lvbklEKCksIFtwb29sID0gV1RGTW92ZShwb29sKSwgY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tp
ZT4mIGNvb2tpZXMsIENhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKKyAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoY29va2llcyk7CisgICAgfSk7Cit9CisKK3ZvaWQgSFRUUENvb2tpZVN0b3Jh
Z2U6OmNvb2tpZXMoY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwsIEZ1bmN0aW9uPHZvaWQgKGNvbnN0
IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAg
YXV0byYgZGF0YVN0b3JlID0gbV9vd25pbmdEYXRhU3RvcmUud2Vic2l0ZURhdGFTdG9yZSgpOwor
ICAgIGF1dG8gcG9vbCA9IGRhdGFTdG9yZS5wcm9jZXNzUG9vbEZvckNvb2tpZVN0b3JhZ2VPcGVy
YXRpb25zKCk7CisgICAgYXV0byogY29va2llTWFuYWdlciA9IHBvb2wtPnN1cHBsZW1lbnQ8V2Vi
S2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk+KCk7CisKKyAgICBjb29raWVNYW5hZ2VyLT5nZXRD
b29raWVzKGRhdGFTdG9yZS5zZXNzaW9uSUQoKSwgdXJsLCBbcG9vbCA9IFdURk1vdmUocG9vbCks
IGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKGNvbnN0IFZl
Y3RvcjxXZWJDb3JlOjpDb29raWU+JiBjb29raWVzLCBDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9y
KSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGNvb2tpZXMpOworICAgIH0pOworfQorCit2
b2lkIEhUVFBDb29raWVTdG9yYWdlOjpzZXRDb29raWUoY29uc3QgV2ViQ29yZTo6Q29va2llJiBj
b29raWUsIEZ1bmN0aW9uPHZvaWQgKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgYXV0
byYgZGF0YVN0b3JlID0gbV9vd25pbmdEYXRhU3RvcmUud2Vic2l0ZURhdGFTdG9yZSgpOworICAg
IGF1dG8gcG9vbCA9IGRhdGFTdG9yZS5wcm9jZXNzUG9vbEZvckNvb2tpZVN0b3JhZ2VPcGVyYXRp
b25zKCk7CisgICAgYXV0byogY29va2llTWFuYWdlciA9IHBvb2wtPnN1cHBsZW1lbnQ8V2ViS2l0
OjpXZWJDb29raWVNYW5hZ2VyUHJveHk+KCk7CisKKyAgICBjb29raWVNYW5hZ2VyLT5zZXRDb29r
aWUoZGF0YVN0b3JlLnNlc3Npb25JRCgpLCBjb29raWUsIFtwb29sID0gV1RGTW92ZShwb29sKSwg
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oQ2FsbGJhY2tC
YXNlOjpFcnJvciBlcnJvcikgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAgIH0p
OworfQorCit2b2lkIEhUVFBDb29raWVTdG9yYWdlOjpzZXRDb29raWVzKGNvbnN0IFZlY3RvcjxX
ZWJDb3JlOjpDb29raWU+JiBjb29raWVzLCBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCwgY29uc3Qg
V2ViQ29yZTo6VVJMJiBtYWluRG9jdW1lbnRVUkwsIEZ1bmN0aW9uPHZvaWQgKCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCit7CisgICAgYXV0byYgZGF0YVN0b3JlID0gbV9vd25pbmdEYXRhU3RvcmUu
d2Vic2l0ZURhdGFTdG9yZSgpOworICAgIGF1dG8gcG9vbCA9IGRhdGFTdG9yZS5wcm9jZXNzUG9v
bEZvckNvb2tpZVN0b3JhZ2VPcGVyYXRpb25zKCk7CisgICAgYXV0byogY29va2llTWFuYWdlciA9
IHBvb2wtPnN1cHBsZW1lbnQ8V2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk+KCk7CisKKyAg
ICBjb29raWVNYW5hZ2VyLT5zZXRDb29raWVzKGRhdGFTdG9yZS5zZXNzaW9uSUQoKSwgY29va2ll
cywgdXJsLCBtYWluRG9jdW1lbnRVUkwsIFtwb29sID0gV1RGTW92ZShwb29sKSwgY29tcGxldGlv
bkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oQ2FsbGJhY2tCYXNlOjpFcnJv
ciBlcnJvcikgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAgIH0pOworfQorCit2
b2lkIEhUVFBDb29raWVTdG9yYWdlOjpkZWxldGVDb29raWUoY29uc3QgV2ViQ29yZTo6Q29va2ll
JiBjb29raWUsIEZ1bmN0aW9uPHZvaWQgKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAg
YXV0byYgZGF0YVN0b3JlID0gbV9vd25pbmdEYXRhU3RvcmUud2Vic2l0ZURhdGFTdG9yZSgpOwor
ICAgIGF1dG8gcG9vbCA9IGRhdGFTdG9yZS5wcm9jZXNzUG9vbEZvckNvb2tpZVN0b3JhZ2VPcGVy
YXRpb25zKCk7CisgICAgYXV0byogY29va2llTWFuYWdlciA9IHBvb2wtPnN1cHBsZW1lbnQ8V2Vi
S2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk+KCk7CisKKyAgICBjb29raWVNYW5hZ2VyLT5kZWxl
dGVDb29raWUoZGF0YVN0b3JlLnNlc3Npb25JRCgpLCBjb29raWUsIFtwb29sID0gV1RGTW92ZShw
b29sKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oQ2Fs
bGJhY2tCYXNlOjpFcnJvciBlcnJvcikgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwor
ICAgIH0pOworfQorCit2b2lkIEhUVFBDb29raWVTdG9yYWdlOjpyZW1vdmVDb29raWVzU2luY2VE
YXRlKHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgZGF0ZSwgRnVuY3Rpb248
dm9pZCAoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBhdXRvJiBkYXRhU3RvcmUgPSBt
X293bmluZ0RhdGFTdG9yZS53ZWJzaXRlRGF0YVN0b3JlKCk7CisgICAgYXV0byBwb29sID0gZGF0
YVN0b3JlLnByb2Nlc3NQb29sRm9yQ29va2llU3RvcmFnZU9wZXJhdGlvbnMoKTsKKyAgICBhdXRv
KiBjb29raWVNYW5hZ2VyID0gcG9vbC0+c3VwcGxlbWVudDxXZWJLaXQ6OldlYkNvb2tpZU1hbmFn
ZXJQcm94eT4oKTsKKworICAgIGNvb2tpZU1hbmFnZXItPmRlbGV0ZUFsbENvb2tpZXNNb2RpZmll
ZFNpbmNlKGRhdGFTdG9yZS5zZXNzaW9uSUQoKSwgZGF0ZSwgW3Bvb2wgPSBXVEZNb3ZlKHBvb2wp
LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShDYWxsYmFj
a0Jhc2U6OkVycm9yIGVycm9yKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAg
fSk7Cit9CisKK3ZvaWQgSFRUUENvb2tpZVN0b3JhZ2U6OnNldEhUVFBDb29raWVBY2NlcHRQb2xp
Y3koSFRUUENvb2tpZUFjY2VwdFBvbGljeSBwb2xpY3ksIEZ1bmN0aW9uPHZvaWQgKCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCit7CisgICAgYXV0byYgZGF0YVN0b3JlID0gbV9vd25pbmdEYXRhU3Rv
cmUud2Vic2l0ZURhdGFTdG9yZSgpOworICAgIGF1dG8gcG9vbCA9IGRhdGFTdG9yZS5wcm9jZXNz
UG9vbEZvckNvb2tpZVN0b3JhZ2VPcGVyYXRpb25zKCk7CisgICAgYXV0byogY29va2llTWFuYWdl
ciA9IHBvb2wtPnN1cHBsZW1lbnQ8V2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk+KCk7CisK
KyAgICBjb29raWVNYW5hZ2VyLT5zZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KGRhdGFTdG9yZS5z
ZXNzaW9uSUQoKSwgcG9saWN5LCBbcG9vbCA9IFdURk1vdmUocG9vbCksIGNvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKENhbGxiYWNrQmFzZTo6RXJyb3IgZXJy
b3IpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICB9KTsKK30KKwordm9pZCBI
VFRQQ29va2llU3RvcmFnZTo6Z2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShGdW5jdGlvbjx2b2lk
IChIVFRQQ29va2llQWNjZXB0UG9saWN5KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBh
dXRvJiBkYXRhU3RvcmUgPSBtX293bmluZ0RhdGFTdG9yZS53ZWJzaXRlRGF0YVN0b3JlKCk7Cisg
ICAgYXV0byBwb29sID0gZGF0YVN0b3JlLnByb2Nlc3NQb29sRm9yQ29va2llU3RvcmFnZU9wZXJh
dGlvbnMoKTsKKyAgICBhdXRvKiBjb29raWVNYW5hZ2VyID0gcG9vbC0+c3VwcGxlbWVudDxXZWJL
aXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eT4oKTsKKworICAgIGNvb2tpZU1hbmFnZXItPmdldEhU
VFBDb29raWVBY2NlcHRQb2xpY3koZGF0YVN0b3JlLnNlc3Npb25JRCgpLCBbcG9vbCA9IFdURk1v
dmUocG9vbCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcild
KEhUVFBDb29raWVBY2NlcHRQb2xpY3kgcG9saWN5LCBDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9y
KSB7CisgICAgICAgIGlmIChlcnJvciAhPSBDYWxsYmFja0Jhc2U6OkVycm9yOjpOb25lKQorICAg
ICAgICAgICAgcG9saWN5ID0gSFRUUENvb2tpZUFjY2VwdFBvbGljeU5ldmVyOworCisgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKHBvbGljeSk7CisgICAgfSk7Cit9CisKK30gLy8gbmFtZXNwYWNl
IEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElIVFRQQ29v
a2llU3RvcmFnZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElIVFRQQ29va2ll
U3RvcmFnZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFkZjdiYTI1NmI2ODMwZTQzMDVkOTlkNjBkNzE1MzRhYzg2
ZjlkMzAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQ
SUhUVFBDb29raWVTdG9yYWdlLmgKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCisjaW5jbHVkZSAiSFRUUENvb2tpZUFj
Y2VwdFBvbGljeS5oIgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgVVJMOworc3RydWN0IENvb2tp
ZTsKK30KKworbmFtZXNwYWNlIEFQSSB7CisKK2NsYXNzIFdlYnNpdGVEYXRhU3RvcmU7CisKK2Ns
YXNzIEhUVFBDb29raWVTdG9yYWdlIGZpbmFsIDogcHVibGljIE9iamVjdEltcGw8T2JqZWN0OjpU
eXBlOjpIVFRQQ29va2llU3RvcmFnZT4geworcHVibGljOgorICAgIHN0YXRpYyBSZWY8SFRUUENv
b2tpZVN0b3JhZ2U+IGNyZWF0ZShXZWJzaXRlRGF0YVN0b3JlJiB3ZWJzaXRlRGF0YVN0b3JlKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSFRUUENvb2tpZVN0b3JhZ2Uod2Vi
c2l0ZURhdGFTdG9yZSkpOworICAgIH0KKworICAgIHZpcnR1YWwgfkhUVFBDb29raWVTdG9yYWdl
KCk7CisKKyAgICB2b2lkIGNvb2tpZXMoRnVuY3Rpb248dm9pZCAoY29uc3QgVmVjdG9yPFdlYkNv
cmU6OkNvb2tpZT4mKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7CisgICAgdm9pZCBjb29raWVzKGNv
bnN0IFdlYkNvcmU6OlVSTCYsIEZ1bmN0aW9uPHZvaWQgKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpD
b29raWU+Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpOworCisgICAgdm9pZCBzZXRDb29raWUoY29u
c3QgV2ViQ29yZTo6Q29va2llJiwgRnVuY3Rpb248dm9pZCAoKT4mJiBjb21wbGV0aW9uSGFuZGxl
cik7CisgICAgdm9pZCBzZXRDb29raWVzKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jiwg
Y29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBtYWluRG9jdW1lbnRVUkws
IEZ1bmN0aW9uPHZvaWQgKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpOworICAgIHZvaWQgZGVsZXRl
Q29va2llKGNvbnN0IFdlYkNvcmU6OkNvb2tpZSYsIEZ1bmN0aW9uPHZvaWQgKCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpOworCisgICAgdm9pZCByZW1vdmVDb29raWVzU2luY2VEYXRlKHN0ZDo6Y2hy
b25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQsIEZ1bmN0aW9uPHZvaWQgKCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpOworCisgICAgdm9pZCBzZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KFdlYktp
dDo6SFRUUENvb2tpZUFjY2VwdFBvbGljeSwgRnVuY3Rpb248dm9pZCAoKT4mJiBjb21wbGV0aW9u
SGFuZGxlcik7CisgICAgdm9pZCBnZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KEZ1bmN0aW9uPHZv
aWQgKFdlYktpdDo6SFRUUENvb2tpZUFjY2VwdFBvbGljeSk+JiYgY29tcGxldGlvbkhhbmRsZXIp
OworICAgIAorcHJpdmF0ZToKKyAgICBIVFRQQ29va2llU3RvcmFnZShXZWJzaXRlRGF0YVN0b3Jl
Jik7CisKKyAgICBXZWJzaXRlRGF0YVN0b3JlJiBtX293bmluZ0RhdGFTdG9yZTsKK307CisKK30K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFT
dG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRhU3Rv
cmUuY3BwCmluZGV4IDVjNzhjY2Q3YWUyOTBlNDVlNzBmNDgzZjUwMjBiZGFhNzkwNGY3NWEuLmNh
MWRmNzU3MTBkOTI1N2EyYTliMGQyZDMwMmYwM2IxZWViMzc5MmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmNwcApAQCAtMzEs
MTMgKzMxLDEzIEBACiAKIG5hbWVzcGFjZSBBUEkgewogCi1SZWZQdHI8V2Vic2l0ZURhdGFTdG9y
ZT4gV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZSgpCitSZWY8V2Vic2l0ZURhdGFT
dG9yZT4gV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZSgpCiB7CiAgICAgV2ViS2l0
OjpJbml0aWFsaXplV2ViS2l0MigpOwogCiAgICAgc3RhdGljIFdlYnNpdGVEYXRhU3RvcmUqIGRl
ZmF1bHREYXRhU3RvcmUgPSBhZG9wdFJlZihuZXcgV2Vic2l0ZURhdGFTdG9yZShkZWZhdWx0RGF0
YVN0b3JlQ29uZmlndXJhdGlvbigpKSkubGVha1JlZigpOwogCi0gICAgcmV0dXJuIGRlZmF1bHRE
YXRhU3RvcmU7CisgICAgcmV0dXJuICpkZWZhdWx0RGF0YVN0b3JlOwogfQogCiBSZWY8V2Vic2l0
ZURhdGFTdG9yZT4gV2Vic2l0ZURhdGFTdG9yZTo6Y3JlYXRlTm9uUGVyc2lzdGVudERhdGFTdG9y
ZSgpCkBAIC02NCw2ICs2NCwxNCBAQCBXZWJzaXRlRGF0YVN0b3JlOjp+V2Vic2l0ZURhdGFTdG9y
ZSgpCiB7CiB9CiAKK0hUVFBDb29raWVTdG9yYWdlJiBXZWJzaXRlRGF0YVN0b3JlOjpodHRwQ29v
a2llU3RvcmFnZSgpCit7CisgICAgaWYgKCFtX2FwaUhUVFBDb29raWVTdG9yYWdlKQorICAgICAg
ICBtX2FwaUhUVFBDb29raWVTdG9yYWdlID0gSFRUUENvb2tpZVN0b3JhZ2U6OmNyZWF0ZSgqdGhp
cyk7CisKKyAgICByZXR1cm4gKm1fYXBpSFRUUENvb2tpZVN0b3JhZ2U7Cit9CisKIGJvb2wgV2Vi
c2l0ZURhdGFTdG9yZTo6aXNQZXJzaXN0ZW50KCkKIHsKICAgICByZXR1cm4gbV93ZWJzaXRlRGF0
YVN0b3JlLT5pc1BlcnNpc3RlbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmgKaW5kZXggMjY3ZDY5YzMzODQ5YTA4ZjgyMjg4NzFl
MDFlZDg2MWFkODNiOGE3ZS4uY2E3NGRiY2M0NjdlNjU2NTJkMzc1M2ZkM2JjZDI0MzI5ODJmODc3
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0
YVN0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0
YVN0b3JlLmgKQEAgLTI2LDcgKzI2LDcgQEAKICNpZm5kZWYgQVBJV2Vic2l0ZURhdGFTdG9yZV9o
CiAjZGVmaW5lIEFQSVdlYnNpdGVEYXRhU3RvcmVfaAogCi0jaW5jbHVkZSAiQVBJT2JqZWN0Lmgi
CisjaW5jbHVkZSAiQVBJSFRUUENvb2tpZVN0b3JhZ2UuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0
YVN0b3JlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KQEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNlIEFQSSB7CiAKIGNs
YXNzIFdlYnNpdGVEYXRhU3RvcmUgZmluYWwgOiBwdWJsaWMgT2JqZWN0SW1wbDxPYmplY3Q6OlR5
cGU6OldlYnNpdGVEYXRhU3RvcmU+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPFdlYnNp
dGVEYXRhU3RvcmU+IGRlZmF1bHREYXRhU3RvcmUoKTsKKyAgICBzdGF0aWMgUmVmPFdlYnNpdGVE
YXRhU3RvcmU+IGRlZmF1bHREYXRhU3RvcmUoKTsKICAgICBzdGF0aWMgUmVmPFdlYnNpdGVEYXRh
U3RvcmU+IGNyZWF0ZU5vblBlcnNpc3RlbnREYXRhU3RvcmUoKTsKICAgICBzdGF0aWMgUmVmPFdl
YnNpdGVEYXRhU3RvcmU+IGNyZWF0ZShXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OkNvbmZpZ3Vy
YXRpb24pOwogCkBAIC00OSw2ICs0OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlZ2lzdGVyU2hh
cmVkUmVzb3VyY2VMb2FkT2JzZXJ2ZXIoKTsKIAogICAgIFdlYktpdDo6V2Vic2l0ZURhdGFTdG9y
ZSYgd2Vic2l0ZURhdGFTdG9yZSgpIHsgcmV0dXJuICptX3dlYnNpdGVEYXRhU3RvcmU7IH0KKyAg
ICBIVFRQQ29va2llU3RvcmFnZSYgaHR0cENvb2tpZVN0b3JhZ2UoKTsKIAogICAgIHN0YXRpYyBT
dHJpbmcgZGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKTsKICAgICBzdGF0aWMgU3Ry
aW5nIGRlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKTsKQEAgLTcwLDYgKzcxLDcgQEAgcHJp
dmF0ZToKICAgICBzdGF0aWMgU3RyaW5nIHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5TmFtZSk7CiAKICAgICBSZWZQdHI8
V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlPiBtX3dlYnNpdGVEYXRhU3RvcmU7CisgICAgUmVmUHRy
PEhUVFBDb29raWVTdG9yYWdlPiBtX2FwaUhUVFBDb29raWVTdG9yYWdlOwogfTsKIAogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29va2llTWFuYWdlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb29raWVNYW5hZ2VyLmNwcApp
bmRleCAyNzhlODNjNTFlMDQwOGEzY2RiY2MxNThkNTNlM2E0YjFmNzY0OWY3Li44MGFjOGE4NjI0
MDkxNGZhOGFlMDhmMzhhZjk4YWNjYTVkYTk1NGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb29raWVNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb29raWVNYW5hZ2VyLmNwcApAQCAtNjEsMTcgKzYxLDE3IEBA
IHZvaWQgV0tDb29raWVNYW5hZ2VyRGVsZXRlQWxsQ29va2llc01vZGlmaWVkQWZ0ZXJEYXRlKFdL
Q29va2llTWFuYWdlclJlZiBjb29raWVNCiAgICAgdXNpbmcgbmFtZXNwYWNlIHN0ZDo6Y2hyb25v
OwogCiAgICAgYXV0byB0aW1lID0gc3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50KGR1cmF0aW9uX2Nh
c3Q8c3lzdGVtX2Nsb2NrOjpkdXJhdGlvbj4oZHVyYXRpb248ZG91YmxlPihkYXRlKSkpOwotICAg
IHRvSW1wbChjb29raWVNYW5hZ2VyUmVmKS0+ZGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2Uo
V2ViQ29yZTo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCksIHRpbWUpOworICAgIHRvSW1w
bChjb29raWVNYW5hZ2VyUmVmKS0+ZGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2UoV2ViQ29y
ZTo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCksIHRpbWUsIFtdKENhbGxiYWNrQmFzZTo6
RXJyb3Ipe30pOwogfQogCiB2b2lkIFdLQ29va2llTWFuYWdlclNldEhUVFBDb29raWVBY2NlcHRQ
b2xpY3koV0tDb29raWVNYW5hZ2VyUmVmIGNvb2tpZU1hbmFnZXIsIFdLSFRUUENvb2tpZUFjY2Vw
dFBvbGljeSBwb2xpY3kpCiB7Ci0gICAgdG9JbXBsKGNvb2tpZU1hbmFnZXIpLT5zZXRIVFRQQ29v
a2llQWNjZXB0UG9saWN5KHRvSFRUUENvb2tpZUFjY2VwdFBvbGljeShwb2xpY3kpKTsKKyAgICB0
b0ltcGwoY29va2llTWFuYWdlciktPnNldEhUVFBDb29raWVBY2NlcHRQb2xpY3koV2ViQ29yZTo6
U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCksIHRvSFRUUENvb2tpZUFjY2VwdFBvbGljeShw
b2xpY3kpLCBbXShDYWxsYmFja0Jhc2U6OkVycm9yKXt9KTsKIH0KIAogdm9pZCBXS0Nvb2tpZU1h
bmFnZXJHZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KFdLQ29va2llTWFuYWdlclJlZiBjb29raWVN
YW5hZ2VyLCB2b2lkKiBjb250ZXh0LCBXS0Nvb2tpZU1hbmFnZXJHZXRIVFRQQ29va2llQWNjZXB0
UG9saWN5RnVuY3Rpb24gY2FsbGJhY2spCiB7Ci0gICAgdG9JbXBsKGNvb2tpZU1hbmFnZXIpLT5n
ZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHRvR2VuZXJpY0NhbGxiYWNrRnVuY3Rpb248V0tIVFRQ
Q29va2llQWNjZXB0UG9saWN5LCBIVFRQQ29va2llQWNjZXB0UG9saWN5Pihjb250ZXh0LCBjYWxs
YmFjaykpOworICAgIHRvSW1wbChjb29raWVNYW5hZ2VyKS0+Z2V0SFRUUENvb2tpZUFjY2VwdFBv
bGljeShXZWJDb3JlOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSwgdG9HZW5lcmljQ2Fs
bGJhY2tGdW5jdGlvbjxXS0hUVFBDb29raWVBY2NlcHRQb2xpY3ksIEhUVFBDb29raWVBY2NlcHRQ
b2xpY3k+KGNvbnRleHQsIGNhbGxiYWNrKSk7CiB9CiAKIHZvaWQgV0tDb29raWVNYW5hZ2VyU2V0
Q29va2llU3RvcmFnZVBhcnRpdGlvbmluZ0VuYWJsZWQoV0tDb29raWVNYW5hZ2VyUmVmIGNvb2tp
ZU1hbmFnZXIsIGJvb2wgZW5hYmxlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAKaW5kZXggYTc3YzFhODlkNWNk
ZTVlYjkyZmY4MTk2NmZmODIzNzkyN2M2ZTQ5OC4uNmNhNjljNmQyZmQ3NmU0YTA0ZDBlYzE1NzRj
MmMxMGUzMGU3NWFjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgV0tUeXBl
SUQgV0tXZWJzaXRlRGF0YVN0b3JlR2V0VHlwZUlEKCkKIAogV0tXZWJzaXRlRGF0YVN0b3JlUmVm
IFdLV2Vic2l0ZURhdGFTdG9yZUdldERlZmF1bHREYXRhU3RvcmUoKQogewotICAgIHJldHVybiBX
ZWJLaXQ6OnRvQVBJKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZSgpLmdl
dCgpKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSShBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRl
ZmF1bHREYXRhU3RvcmUoKS5wdHIoKSk7CiB9CiAKIFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBXS1dl
YnNpdGVEYXRhU3RvcmVDcmVhdGVOb25QZXJzaXN0ZW50RGF0YVN0b3JlKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tIVFRQQ29va2llU3RvcmFnZS5o
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0hUVFBDb29raWVTdG9yYWdl
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uY2VhOTJlYzIwYzk5ZDY2NjEwZDFjYmE4ZjY2MjhjNjJlMTI1N2EyNwot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tI
VFRQQ29va2llU3RvcmFnZS5oCkBAIC0wLDAgKzEsOTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0
IDxXZWJLaXQvV0tGb3VuZGF0aW9uLmg+CisKKyNpZiBXS19BUElfRU5BQkxFRAorCisjaW1wb3J0
IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KKworTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KKwor
LyohCisgQSBXS0hUVFBDb29raWVTdG9yYWdlIG9iamVjdCBhbGxvd3MgbWFuYWdpbmcgdGhlIEhU
VFAgY29va2llcyBhc3NvY2lhdGVkIHdpdGggYSBwYXJ0aWN1bGFyIFdLV2Vic2l0ZURhdGFTdG9y
ZS4KKyAqLworV0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lP
U19UQkEpKQorQGludGVyZmFjZSBXS0hUVFBDb29raWVTdG9yYWdlIDogTlNPYmplY3QKKworLSAo
aW5zdGFuY2V0eXBlKWluaXQgTlNfVU5BVkFJTEFCTEU7CisKKy8qISBAYWJzdHJhY3QgRmV0Y2hl
cyBhbGwgc3RvcmVkIGNvb2tpZXMuCisgQHBhcmFtIGNvbXBsZXRpb25IYW5kbGVyIEEgYmxvY2sg
dG8gaW52b2tlIHdpdGggdGhlIGZldGNoZWQgY29va2llcy4KKyAqLworLSAodm9pZClmZXRjaENv
b2tpZXM6KHZvaWQgKF4pKE5TQXJyYXk8TlNIVFRQQ29va2llICo+ICopKWNvbXBsZXRpb25IYW5k
bGVyOworCisvKiEgQGFic3RyYWN0IEZldGNoZXMgYWxsIG9mIHRoZSBzdG9yZWQgY29va2llcyBm
b3IgdGhlIGdpdmVuIFVSTC4KKyBAcGFyYW0gY29tcGxldGlvbkhhbmRsZXIgQSBibG9jayB0byBp
bnZva2Ugd2l0aCB0aGUgZmV0Y2hlZCBjb29raWVzLgorICovCistICh2b2lkKWZldGNoQ29va2ll
c0ZvclVSTDooTlNVUkwgKil1cmwgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TQXJyYXk8
TlNIVFRQQ29va2llICo+ICopKWNvbXBsZXRpb25IYW5kbGVyOworCisvKiEgQGFic3RyYWN0IFNl
dCBhIGNvb2tpZS4KKyBAcGFyYW0gY29va2llIFRoZSBjb29raWUgdG8gc2V0LgorIEBwYXJhbSBj
b21wbGV0aW9uSGFuZGxlciBBIGJsb2NrIHRvIGludm9rZSBvbmNlIHRoZSBjb29raWUgaGFzIGJl
ZW4gc3RvcmVkLgorICovCistICh2b2lkKXNldENvb2tpZTooTlNIVFRQQ29va2llICopY29va2ll
IGNvbXBsZXRpb25IYW5kbGVyOihudWxsYWJsZSB2b2lkICheKSgpKWNvbXBsZXRpb25IYW5kbGVy
OworCisvKiEgQGFic3RyYWN0IEFkZHMgYW4gYXJyYXkgY29va2llcyB0byB0aGUgY29va2llIHN0
b3JlLCBmb2xsb3dpbmcgdGhlIGNvb2tpZSBhY2NlcHQgcG9saWN5LgorIEBwYXJhbSBjb29raWVz
IFRoZSBjb29raWVzIHRvIHNldC4KKyBAcGFyYW0gVVJMIFRoZSBVUkwgZnJvbSB3aGljaCB0aGUg
Y29va2llcyB3ZXJlIHNlbnQuCisgQHBhcmFtIG1haW5Eb2N1bWVudFVSTCBUaGUgbWFpbiBkb2N1
bWVudCBVUkwgdG8gYmUgdXNlZCBhcyBhIGJhc2UgZm9yIHRoZSAic2FtZSBkb21haW4gYXMgbWFp
biBkb2N1bWVudCIgcG9saWN5LgorIEBwYXJhbSBjb21wbGV0aW9uSGFuZGxlciBBIGJsb2NrIHRv
IGludm9rZSBvbmNlIHRoZSBjb29raWVzIGhhdmUgYmVlbiBzdG9yZWQuCisgKi8KKy0gKHZvaWQp
c2V0Q29va2llczooTlNBcnJheTxOU0hUVFBDb29raWUgKj4gKiljb29raWVzIGZvclVSTDooTlNV
UkwgKil1cmwgbWFpbkRvY3VtZW50VVJMOihudWxsYWJsZSBOU1VSTCAqKW1haW5Eb2N1bWVudFVS
TCBjb21wbGV0aW9uSGFuZGxlcjoobnVsbGFibGUgdm9pZCAoXikoKSljb21wbGV0aW9uSGFuZGxl
cjsKKworLyohIEBhYnN0cmFjdCBEZWxldGUgdGhlIHNwZWNpZmllZCBjb29raWUuCisgQHBhcmFt
IGNvbXBsZXRpb25IYW5kbGVyIEEgYmxvY2sgdG8gaW52b2tlIG9uY2UgdGhlIGNvb2tpZSBoYXMg
YmVlbiBkZWxldGVkLgorICovCistICh2b2lkKWRlbGV0ZUNvb2tpZTooTlNIVFRQQ29va2llICop
Y29va2llIGNvbXBsZXRpb25IYW5kbGVyOihudWxsYWJsZSB2b2lkICheKSgpKWNvbXBsZXRpb25I
YW5kbGVyOworCisvKiEgQGFic3RyYWN0IERlbGV0ZSBhbGwgY29va2llcyBmcm9tIHRoZSBjb29r
aWUgc3RvcmFnZSBzaW5jZSB0aGUgcHJvdmlkZWQgZGF0ZS4KKyBAcGFyYW0gZGF0ZSBUaGUgZGF0
ZSBhZnRlciB3aGljaCBzZXQgY29va2llcyBzaG91bGQgYmUgcmVtb3ZlZC4KKyBAcGFyYW0gY29t
cGxldGlvbkhhbmRsZXIgQSBibG9jayB0byBpbnZva2Ugb25jZSB0aGUgY29va2llcyBoYXZlIGJl
ZW4gZGVsZXRlZC4KKyAqLworLSAodm9pZClyZW1vdmVDb29raWVzU2luY2VEYXRlOihOU0RhdGUg
KilkYXRlIGNvbXBsZXRpb25IYW5kbGVyOihudWxsYWJsZSB2b2lkICheKSgpKWNvbXBsZXRpb25I
YW5kbGVyOworCisvKiEgQGFic3RyYWN0IFNldHMgdGhlIGNvb2tpZSBhY2NlcHQgcG9saWN5IHBy
ZWZlcmVuY2Ugb2YgdGhlIHJlY2VpdmVyLgorIEBwYXJhbSBwb2xpY3kgVGhlIGNvb2tpZSBhY2Nl
cHQgcG9saWN5IHRvIHNldC4KKyBAcGFyYW0gY29tcGxldGlvbkhhbmRsZXIgQSBibG9jayB0byBp
bnZva2Ugb25jZSB0aGUgcG9saWN5IGhhcyBiZWVuIHNldC4KKyAqLworLSAodm9pZClzZXRDb29r
aWVBY2NlcHRQb2xpY3k6KE5TSFRUUENvb2tpZUFjY2VwdFBvbGljeSlwb2xpY3kgY29tcGxldGlv
bkhhbmRsZXI6KG51bGxhYmxlIHZvaWQgKF4pKCkpY29tcGxldGlvbkhhbmRsZXI7CisKKy8qISBA
YWJzdHJhY3QgRmV0Y2hlcyB0aGUgY29va2llIGFjY2VwdCBwb2xpY3kgcHJlZmVyZW5jZSBvZiB0
aGUgcmVjZWl2ZXIuCisgQHBhcmFtIGNvbXBsZXRpb25IYW5kbGVyIEEgYmxvY2sgdG8gaW52b2tl
IHdpdGggdGhlIGZldGNoZWQgcG9saWN5LgorICovCistICh2b2lkKWZldGNoQ29va2llQWNjZXB0
UG9saWN5Oih2b2lkICheKShOU0hUVFBDb29raWVBY2NlcHRQb2xpY3kpKWNvbXBsZXRpb25IYW5k
bGVyOworCitAZW5kCisKK05TX0FTU1VNRV9OT05OVUxMX0VORAorCisjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tIVFRQQ29va2llU3RvcmFn
ZS5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tIVFRQQ29va2llU3Rv
cmFnZS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi41M2M3MzRhNmYyNmE3ZjAzYzg0MmZhNzQ0Yzg1MGYyNjA1MzIz
ZWVmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS0hUVFBDb29raWVTdG9yYWdlLm1tCkBAIC0wLDAgKzEsMTYxIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJXS0hUVFBDb29raWVTdG9yYWdlSW50ZXJuYWwu
aCIKKworI2lmIFdLX0FQSV9FTkFCTEVECisKKyNpbmNsdWRlICJIVFRQQ29va2llQWNjZXB0UG9s
aWN5LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9DRk5ldHdvcmtTUEkuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL0Nvb2tpZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CisjaW5jbHVkZSA8d3RmL1Jl
dGFpblB0ci5oPgorCitzdGF0aWMgTlNBcnJheTxOU0hUVFBDb29raWUgKj4gKmNvcmVDb29raWVz
VG9OU0Nvb2tpZXMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mIGNvcmVDb29raWVzKQor
eworICAgIE5TTXV0YWJsZUFycmF5PE5TSFRUUENvb2tpZSAqPiAqbnNDb29raWVzID0gW05TTXV0
YWJsZUFycmF5IGFycmF5V2l0aENhcGFjaXR5OmNvcmVDb29raWVzLnNpemUoKV07CisKKyAgICBm
b3IgKGF1dG8mIGNvb2tpZSA6IGNvcmVDb29raWVzKQorICAgICAgICBbbnNDb29raWVzIGFkZE9i
amVjdDooTlNIVFRQQ29va2llICopY29va2llXTsKKworICAgIHJldHVybiBuc0Nvb2tpZXM7Cit9
CisKK0BpbXBsZW1lbnRhdGlvbiBXS0hUVFBDb29raWVTdG9yYWdlCisKKy0gKHZvaWQpZGVhbGxv
YworeworICAgIF9jb29raWVTdG9yYWdlLT5BUEk6OkhUVFBDb29raWVTdG9yYWdlOjp+SFRUUENv
b2tpZVN0b3JhZ2UoKTsKKworICAgIFtzdXBlciBkZWFsbG9jXTsKK30KKworLSAodm9pZClmZXRj
aENvb2tpZXM6KHZvaWQgKF4pKE5TQXJyYXk8TlNIVFRQQ29va2llICo+ICopKWNvbXBsZXRpb25I
YW5kbGVyCit7CisgICAgX2Nvb2tpZVN0b3JhZ2UtPmNvb2tpZXMoW2hhbmRsZXIgPSBhZG9wdE5T
KFtjb21wbGV0aW9uSGFuZGxlciBjb3B5XSldKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+
JiBjb29raWVzKSB7CisgICAgICAgIGF1dG8gcmF3SGFuZGxlciA9ICh2b2lkICheKShOU0FycmF5
PE5TSFRUUENvb2tpZSAqPiAqKSloYW5kbGVyLmdldCgpOworICAgICAgICByYXdIYW5kbGVyKGNv
cmVDb29raWVzVG9OU0Nvb2tpZXMoY29va2llcykpOworICAgIH0pOworfQorCistICh2b2lkKWZl
dGNoQ29va2llc0ZvclVSTDooTlNVUkwgKil1cmwgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4p
KE5TQXJyYXk8TlNIVFRQQ29va2llICo+ICopKWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAgX2Nv
b2tpZVN0b3JhZ2UtPmNvb2tpZXModXJsLCBbaGFuZGxlciA9IGFkb3B0TlMoW2NvbXBsZXRpb25I
YW5kbGVyIGNvcHldKV0oY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mIGNvb2tpZXMpIHsK
KyAgICAgICAgYXV0byByYXdIYW5kbGVyID0gKHZvaWQgKF4pKE5TQXJyYXk8TlNIVFRQQ29va2ll
ICo+ICopKWhhbmRsZXIuZ2V0KCk7CisgICAgICAgIHJhd0hhbmRsZXIoY29yZUNvb2tpZXNUb05T
Q29va2llcyhjb29raWVzKSk7CisgICAgfSk7Cit9CisKKy0gKHZvaWQpc2V0Q29va2llOihOU0hU
VFBDb29raWUgKiljb29raWUgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKCkpY29tcGxldGlv
bkhhbmRsZXIKK3sKKyAgICBfY29va2llU3RvcmFnZS0+c2V0Q29va2llKGNvb2tpZSwgW2hhbmRs
ZXIgPSBhZG9wdE5TKFtjb21wbGV0aW9uSGFuZGxlciBjb3B5XSldKCkgeworICAgICAgICBhdXRv
IHJhd0hhbmRsZXIgPSAodm9pZCAoXikoKSloYW5kbGVyLmdldCgpOworICAgICAgICBpZiAocmF3
SGFuZGxlcikKKyAgICAgICAgICAgIHJhd0hhbmRsZXIoKTsKKyAgICB9KTsKKworfQorCistICh2
b2lkKWRlbGV0ZUNvb2tpZTooTlNIVFRQQ29va2llICopY29va2llIGNvbXBsZXRpb25IYW5kbGVy
Oih2b2lkICheKSgpKWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAgX2Nvb2tpZVN0b3JhZ2UtPmRl
bGV0ZUNvb2tpZShjb29raWUsIFtoYW5kbGVyID0gYWRvcHROUyhbY29tcGxldGlvbkhhbmRsZXIg
Y29weV0pXSgpIHsKKyAgICAgICAgYXV0byByYXdIYW5kbGVyID0gKHZvaWQgKF4pKCkpaGFuZGxl
ci5nZXQoKTsKKyAgICAgICAgaWYgKHJhd0hhbmRsZXIpCisgICAgICAgICAgICByYXdIYW5kbGVy
KCk7CisgICAgfSk7Cit9CisKKy0gKHZvaWQpc2V0Q29va2llczooTlNBcnJheTxOU0hUVFBDb29r
aWUgKj4gKiljb29raWVzIGZvclVSTDooTlNVUkwgKilVUkwgbWFpbkRvY3VtZW50VVJMOihOU1VS
TCAqKW1haW5Eb2N1bWVudFVSTCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoKSljb21wbGV0
aW9uSGFuZGxlcgoreworICAgIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+IGNvcmVDb29raWVzOwor
ICAgIGNvcmVDb29raWVzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoY29va2llcy5jb3VudCk7Cisg
ICAgZm9yIChOU0hUVFBDb29raWUgKmNvb2tpZSA6IGNvb2tpZXMpCisgICAgICAgIGNvcmVDb29r
aWVzLnVuY2hlY2tlZEFwcGVuZChjb29raWUpOworCisgICAgX2Nvb2tpZVN0b3JhZ2UtPnNldENv
b2tpZXMoY29yZUNvb2tpZXMsIFVSTCwgbWFpbkRvY3VtZW50VVJMLCBbaGFuZGxlciA9IGFkb3B0
TlMoW2NvbXBsZXRpb25IYW5kbGVyIGNvcHldKV0oKSB7CisgICAgICAgIGF1dG8gcmF3SGFuZGxl
ciA9ICh2b2lkICheKSgpKWhhbmRsZXIuZ2V0KCk7CisgICAgICAgIGlmIChyYXdIYW5kbGVyKQor
ICAgICAgICAgICAgcmF3SGFuZGxlcigpOworICAgIH0pOworfQorCistICh2b2lkKXJlbW92ZUNv
b2tpZXNTaW5jZURhdGU6KE5TRGF0ZSAqKWRhdGUgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4p
KCkpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICBhdXRvIHN5c3RlbUNsb2NrVGltZSA9IHN0ZDo6
Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQoc3RkOjpjaHJvbm86OmR1cmF0aW9uX2Nh
c3Q8c3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6ZHVyYXRpb24+KHN0ZDo6Y2hyb25vOjpkdXJh
dGlvbjxkb3VibGU+KGRhdGUudGltZUludGVydmFsU2luY2UxOTcwKSkpOworCisgICAgX2Nvb2tp
ZVN0b3JhZ2UtPnJlbW92ZUNvb2tpZXNTaW5jZURhdGUoc3lzdGVtQ2xvY2tUaW1lLCBbaGFuZGxl
ciA9IGFkb3B0TlMoW2NvbXBsZXRpb25IYW5kbGVyIGNvcHldKV0oKSB7CisgICAgICAgIGF1dG8g
cmF3SGFuZGxlciA9ICh2b2lkICheKSgpKWhhbmRsZXIuZ2V0KCk7CisgICAgICAgIGlmIChyYXdI
YW5kbGVyKQorICAgICAgICAgICAgcmF3SGFuZGxlcigpOworICAgIH0pOworfQorCistICh2b2lk
KXNldENvb2tpZUFjY2VwdFBvbGljeTooTlNIVFRQQ29va2llQWNjZXB0UG9saWN5KXBvbGljeSBj
b21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoKSljb21wbGV0aW9uSGFuZGxlcgoreworICAgIF9j
b29raWVTdG9yYWdlLT5zZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHBvbGljeSwgW2hhbmRsZXIg
PSBhZG9wdE5TKFtjb21wbGV0aW9uSGFuZGxlciBjb3B5XSldKCkgeworICAgICAgICBhdXRvIHJh
d0hhbmRsZXIgPSAodm9pZCAoXikoKSloYW5kbGVyLmdldCgpOworICAgICAgICBpZiAocmF3SGFu
ZGxlcikKKyAgICAgICAgICAgIHJhd0hhbmRsZXIoKTsKKyAgICB9KTsKK30KKworc3RhdGljIE5T
SFRUUENvb2tpZUFjY2VwdFBvbGljeSBraXRDb29raWVQb2xpY3lUb05TQ29va2llUG9saWN5KFdl
YktpdDo6SFRUUENvb2tpZUFjY2VwdFBvbGljeSBraXRQb2xpY3kpCit7CisgICAgc3dpdGNoIChr
aXRQb2xpY3kpIHsKKyAgICBjYXNlIFdlYktpdDo6SFRUUENvb2tpZUFjY2VwdFBvbGljeUFsd2F5
czoKKyAgICAgICAgcmV0dXJuIE5TSFRUUENvb2tpZUFjY2VwdFBvbGljeUFsd2F5czsKKyAgICBj
YXNlIFdlYktpdDo6SFRUUENvb2tpZUFjY2VwdFBvbGljeU5ldmVyOgorICAgICAgICByZXR1cm4g
TlNIVFRQQ29va2llQWNjZXB0UG9saWN5TmV2ZXI7CisgICAgY2FzZSBXZWJLaXQ6OkhUVFBDb29r
aWVBY2NlcHRQb2xpY3lPbmx5RnJvbU1haW5Eb2N1bWVudERvbWFpbjoKKyAgICAgICAgcmV0dXJu
IE5TSFRUUENvb2tpZUFjY2VwdFBvbGljeU9ubHlGcm9tTWFpbkRvY3VtZW50RG9tYWluOworICAg
IGNhc2UgV2ViS2l0OjpIVFRQQ29va2llQWNjZXB0UG9saWN5RXhjbHVzaXZlbHlGcm9tTWFpbkRv
Y3VtZW50RG9tYWluOgorICAgICAgICAvLyBDYXN0IHJlcXVpcmVkIGJlY2F1c2Ugb2YgQ0ZOZXR3
b3JrU1BJLgorICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8TlNIVFRQQ29va2llQWNjZXB0UG9s
aWN5PihOU0hUVFBDb29raWVBY2NlcHRQb2xpY3lFeGNsdXNpdmVseUZyb21NYWluRG9jdW1lbnRE
b21haW4pOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
IH0KKworICAgIHJldHVybiBOU0hUVFBDb29raWVBY2NlcHRQb2xpY3lOZXZlcjsKK30KKworLSAo
dm9pZClmZXRjaENvb2tpZUFjY2VwdFBvbGljeToodm9pZCAoXikoTlNIVFRQQ29va2llQWNjZXB0
UG9saWN5KSljb21wbGV0aW9uSGFuZGxlcgoreworICAgIF9jb29raWVTdG9yYWdlLT5nZXRIVFRQ
Q29va2llQWNjZXB0UG9saWN5KFtoYW5kbGVyID0gYWRvcHROUyhbY29tcGxldGlvbkhhbmRsZXIg
Y29weV0pXShXZWJLaXQ6OkhUVFBDb29raWVBY2NlcHRQb2xpY3kgcG9saWN5KSB7CisgICAgICAg
IGF1dG8gcmF3SGFuZGxlciA9ICh2b2lkICheKShOU0hUVFBDb29raWVBY2NlcHRQb2xpY3kpKWhh
bmRsZXIuZ2V0KCk7CisgICAgICAgIHJhd0hhbmRsZXIoa2l0Q29va2llUG9saWN5VG9OU0Nvb2tp
ZVBvbGljeShwb2xpY3kpKTsKKyAgICB9KTsKK30KKworI3ByYWdtYSBtYXJrIFdLT2JqZWN0IHBy
b3RvY29sIGltcGxlbWVudGF0aW9uCisKKy0gKEFQSTo6T2JqZWN0JilfYXBpT2JqZWN0Cit7Cisg
ICAgcmV0dXJuICpfY29va2llU3RvcmFnZTsKK30KKworQGVuZAorCisjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tIVFRQQ29va2llU3RvcmFn
ZUludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLSFRUUENv
b2tpZVN0b3JhZ2VJbnRlcm5hbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU4YTMwYmFkMjhlYjFhMDI0NmMyNDFl
ZTc2NmZmYmYzNDE4MTBiYmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLSFRUUENvb2tpZVN0b3JhZ2VJbnRlcm5hbC5oCkBAIC0wLDAgKzEs
NDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJXS0hUVFBDb29raWVTdG9yYWdlLmgiCisKKyNp
ZiBXS19BUElfRU5BQkxFRAorCisjaW1wb3J0ICJBUElIVFRQQ29va2llU3RvcmFnZS5oIgorI2lt
cG9ydCAiV0tPYmplY3QuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2lubGluZSBXS0hUVFBD
b29raWVTdG9yYWdlICp3cmFwcGVyKEFQSTo6SFRUUENvb2tpZVN0b3JhZ2UmIGNvb2tpZVN0b3Jh
Z2UpCit7CisgICAgQVNTRVJUKFtjb29raWVTdG9yYWdlLndyYXBwZXIoKSBpc0tpbmRPZkNsYXNz
OltXS0hUVFBDb29raWVTdG9yYWdlIGNsYXNzXV0pOworICAgIHJldHVybiAoV0tIVFRQQ29va2ll
U3RvcmFnZSAqKWNvb2tpZVN0b3JhZ2Uud3JhcHBlcigpOworfQorCit9CisKK0BpbnRlcmZhY2Ug
V0tIVFRQQ29va2llU3RvcmFnZSAoKSA8V0tPYmplY3Q+IHsKK0BwYWNrYWdlCisgICAgQVBJOjpP
YmplY3RTdG9yYWdlPEFQSTo6SFRUUENvb2tpZVN0b3JhZ2U+IF9jb29raWVTdG9yYWdlOworfQor
QGVuZAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tQcm9jZXNzUG9vbC5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tQcm9jZXNzUG9vbC5tbQppbmRleCAzZjQzYmZjNjVkZDc0MGI5NjBjOGEwMWFlMzY0OTc0
ODE0M2RmN2Q0Li44Zjg3ZGFjZTgyNzJkZWIzYzIyN2ZhMDUzMjU4MDM0NTZjZmI0MjFkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wu
bW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29s
Lm1tCkBAIC0xOTYsNyArMTk2LDcgQEAgc3RhdGljIFdlYktpdDo6SFRUUENvb2tpZUFjY2VwdFBv
bGljeSB0b0hUVFBDb29raWVBY2NlcHRQb2xpY3koTlNIVFRQQ29va2llQWNjZXAKIAogLSAodm9p
ZClfc2V0Q29va2llQWNjZXB0UG9saWN5OihOU0hUVFBDb29raWVBY2NlcHRQb2xpY3kpcG9saWN5
CiB7Ci0gICAgX3Byb2Nlc3NQb29sLT5zdXBwbGVtZW50PFdlYktpdDo6V2ViQ29va2llTWFuYWdl
clByb3h5PigpLT5zZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHRvSFRUUENvb2tpZUFjY2VwdFBv
bGljeShwb2xpY3kpKTsKKyAgICBfcHJvY2Vzc1Bvb2wtPnN1cHBsZW1lbnQ8V2ViS2l0OjpXZWJD
b29raWVNYW5hZ2VyUHJveHk+KCktPnNldEhUVFBDb29raWVBY2NlcHRQb2xpY3koV2ViQ29yZTo6
U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCksIHRvSFRUUENvb2tpZUFjY2VwdFBvbGljeShw
b2xpY3kpLCBbXShXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3Ipe30pOwogfQogCiAtIChpZClf
b2JqZWN0Rm9yQnVuZGxlUGFyYW1ldGVyOihOU1N0cmluZyAqKXBhcmFtZXRlcgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUu
bW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9y
ZS5tbQppbmRleCA3MTM4MTllNDc0MGFkMzRkOTAxOGRjODkwMzcyMTkwNDlmZGYxYmM3Li4yMzRm
ODBlYmZlNTg0Y2M4NjIzNTE1ZTkzN2ZmZjMzMzBiOWJhMjAyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQpA
QCAtMjgsNiArMjgsNyBAQAogCiAjaWYgV0tfQVBJX0VOQUJMRUQKIAorI2ltcG9ydCAiV0tIVFRQ
Q29va2llU3RvcmFnZUludGVybmFsLmgiCiAjaW1wb3J0ICJXS05TQXJyYXkuaCIKICNpbXBvcnQg
IldLV2Vic2l0ZURhdGFSZWNvcmRJbnRlcm5hbC5oIgogI2ltcG9ydCAiV2Vic2l0ZURhdGFGZXRj
aE9wdGlvbi5oIgpAQCAtMzgsNyArMzksNyBAQCBAaW1wbGVtZW50YXRpb24gV0tXZWJzaXRlRGF0
YVN0b3JlCiAKICsgKFdLV2Vic2l0ZURhdGFTdG9yZSAqKWRlZmF1bHREYXRhU3RvcmUKIHsKLSAg
ICByZXR1cm4gV2ViS2l0Ojp3cmFwcGVyKCpBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRE
YXRhU3RvcmUoKS5nZXQoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6d3JhcHBlcihBUEk6OldlYnNp
dGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmUoKS5nZXQoKSk7CiB9CiAKICsgKFdLV2Vic2l0
ZURhdGFTdG9yZSAqKW5vblBlcnNpc3RlbnREYXRhU3RvcmUKQEAgLTE5NCw2ICsxOTUsMTEgQEAg
LSAodm9pZClfc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQ6KEJPT0wpZW5hYmxlZAog
ICAgIF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2V0UmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0VuYWJsZWQoZW5hYmxlZCk7CiB9CiAKKy0gKFdLSFRUUENvb2tpZVN0b3JhZ2Ug
KilfaHR0cENvb2tpZVN0b3JhZ2UKK3sKKyAgICByZXR1cm4gV2ViS2l0Ojp3cmFwcGVyKF93ZWJz
aXRlRGF0YVN0b3JlLT5odHRwQ29va2llU3RvcmFnZSgpKTsKK30KKwogQGVuZAogCiAjZW5kaWYg
Ly8gV0tfQVBJX0VOQUJMRUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmgKaW5kZXggNDlkOWJl
NmFkMTE5YjNhMTEyMTUyYjZiYWZlMzhhZGUyNjYyZTZlYi4uMDk5YjA0NTllZTZlYTJlNmNmZjZm
N2Q0MWUwMDIzMDQ0YjZlN2U5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmgKQEAgLTI5
LDYgKzI5LDcgQEAKIAogTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KIAorQGNsYXNzIFdLSFRUUENv
b2tpZVN0b3JhZ2U7CiBAY2xhc3MgX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb247CiAK
IHR5cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRlZ2VyLCBfV0tXZWJzaXRlRGF0YVN0b3JlRmV0Y2hP
cHRpb25zKSB7CkBAIC00Myw2ICs0NCw5IEBAIHR5cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRlZ2Vy
LCBfV0tXZWJzaXRlRGF0YVN0b3JlRmV0Y2hPcHRpb25zKSB7CiAKIEBwcm9wZXJ0eSAobm9uYXRv
bWljLCBzZXR0ZXI9X3NldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkOikgQk9PTCBfcmVz
b3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTIp
LCBpb3MoMTAuMCkpOwogCisvKiEgQGFic3RyYWN0IFJldHVybnMgdGhlIGNvb2tpZSBzdG9yYWdl
IHJlcHJlc2VudGluZyBIVFRQIGNvb2tpZXMgaW4gdGhpcyB3ZWJzaXRlIGRhdGEgc3RvcmUuICov
CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIFdLSFRUUENvb2tpZVN0b3JhZ2UgKl9o
dHRwQ29va2llU3RvcmFnZSBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9z
KFdLX0lPU19UQkEpKTsKKwogQGVuZAogCiBOU19BU1NVTUVfTk9OTlVMTF9FTkQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvb2tpZU1hbmFnZXIu
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29va2llTWFuYWdl
ci5jcHAKaW5kZXggNzVhNjZlYzYxOGYwNWM4MWJlODMxN2IyZmYyZDBkOTM0N2U5NTFhMy4uYTdl
OGIzNDc3ZmIyMjllMzFhY2I2MmUzYTY0ZmI0ODNiMTliNjBhZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29va2llTWFuYWdlci5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29va2llTWFuYWdlci5jcHAK
QEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXJQcml2
YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0V2Vic2l0ZURhdGFQcml2YXRlLmgiCiAjaW5jbHVkZSAi
V2Vic2l0ZURhdGFSZWNvcmQuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1Nlc3Npb25JRC5oPgogI2lu
Y2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+
CiAKQEAgLTE3OCw3ICsxNzksNyBAQCB2b2lkIHdlYmtpdF9jb29raWVfbWFuYWdlcl9zZXRfYWNj
ZXB0X3BvbGljeShXZWJLaXRDb29raWVNYW5hZ2VyKiBtYW5hZ2VyLCBXZWJLaQogICAgIGdfcmV0
dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX0NPT0tJRV9NQU5BR0VSKG1hbmFnZXIpKTsKIAogICAgIGZv
ciAoYXV0byogcHJvY2Vzc1Bvb2wgOiB3ZWJraXRXZWJzaXRlRGF0YU1hbmFnZXJHZXRQcm9jZXNz
UG9vbHMobWFuYWdlci0+cHJpdi0+ZGF0YU1hbmFnZXIpKQotICAgICAgICBwcm9jZXNzUG9vbC0+
c3VwcGxlbWVudDxXZWJDb29raWVNYW5hZ2VyUHJveHk+KCktPnNldEhUVFBDb29raWVBY2NlcHRQ
b2xpY3kodG9IVFRQQ29va2llQWNjZXB0UG9saWN5KHBvbGljeSkpOworICAgICAgICBwcm9jZXNz
UG9vbC0+c3VwcGxlbWVudDxXZWJDb29raWVNYW5hZ2VyUHJveHk+KCktPnNldEhUVFBDb29raWVB
Y2NlcHRQb2xpY3koV2ViQ29yZTo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCksIHRvSFRU
UENvb2tpZUFjY2VwdFBvbGljeShwb2xpY3kpLCBbXShDYWxsYmFja0Jhc2U6OkVycm9yKXt9KTsK
IH0KIAogc3RhdGljIHZvaWQgd2Via2l0Q29va2llTWFuYWdlckdldEFjY2VwdFBvbGljeUNhbGxi
YWNrKFdLSFRUUENvb2tpZUFjY2VwdFBvbGljeSBwb2xpY3ksIFdLRXJyb3JSZWYsIHZvaWQqIGNv
bnRleHQpCkBAIC0yMTIsNyArMjEzLDcgQEAgdm9pZCB3ZWJraXRfY29va2llX21hbmFnZXJfZ2V0
X2FjY2VwdF9wb2xpY3koV2ViS2l0Q29va2llTWFuYWdlciogbWFuYWdlciwgR0NhbmMKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIHByb2Nlc3NQb29sc1swXS0+c3VwcGxlbWVudDxXZWJD
b29raWVNYW5hZ2VyUHJveHk+KCktPmdldEhUVFBDb29raWVBY2NlcHRQb2xpY3koCisgICAgcHJv
Y2Vzc1Bvb2xzWzBdLT5zdXBwbGVtZW50PFdlYkNvb2tpZU1hbmFnZXJQcm94eT4oKS0+Z2V0SFRU
UENvb2tpZUFjY2VwdFBvbGljeShXZWJDb3JlOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQo
KSwgCiAgICAgICAgIHRvR2VuZXJpY0NhbGxiYWNrRnVuY3Rpb248V0tIVFRQQ29va2llQWNjZXB0
UG9saWN5LCBIVFRQQ29va2llQWNjZXB0UG9saWN5Pih0YXNrLmxlYWtSZWYoKSwgd2Via2l0Q29v
a2llTWFuYWdlckdldEFjY2VwdFBvbGljeUNhbGxiYWNrKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNz
aW9uLmNwcAppbmRleCA0OGNhZGM3MTI0ZjlkYmU2ODViYmRlNDhjYjNmZWUzZDE4MzkxNmQ4Li5h
ODMxODRhZjkwMmI0NzVjNDhlOGQwYWNmNzgwNjE3MWNiNGZiZWYxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNl
c3Npb24uY3BwCkBAIC03MzAsNyArNzMwLDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6
YWRkU2luZ2xlQ29va2llKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW4KIAog
ICAgIC8vIEZJWE1FOiBVc2luZyBhY3RpdmVVUkwgaGVyZSB0d2ljZSBpcyBiYXNpY2FsbHkgc2F5
aW5nICJ0aGlzIGlzIGFsd2F5cyBpbiB0aGUgY29udGV4dCBvZiB0aGUgbWFpbiBkb2N1bWVudCIK
ICAgICAvLyB3aGljaCBwcm9iYWJseSBpc24ndCBhY2N1cmF0ZS4KLSAgICBjb29raWVNYW5hZ2Vy
LT5zZXRDb29raWVzKFdlYkNvcmU6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpLCB7IGNv
b2tpZSB9LCBhY3RpdmVVUkwsIGFjdGl2ZVVSTCk7CisgICAgY29va2llTWFuYWdlci0+c2V0Q29v
a2llcyhXZWJDb3JlOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSwgeyBjb29raWUgfSwg
YWN0aXZlVVJMLCBhY3RpdmVVUkwsIFtdKENhbGxiYWNrQmFzZTo6RXJyb3Ipe30pOwogCiAgICAg
Y2FsbGJhY2stPnNlbmRTdWNjZXNzKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkuY3BwCmluZGV4IDJlYWE1Y2UzYmZhNTM1OTg0ZGYz
ZTBlNmM3NWRhNWIyMTkyNDY3MTkuLmUwMjNiODI1ZWU5ZjQ5MGQyMDdkZWEyOWE3ZjdmNTMxN2I4
MmEzZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVNYW5h
Z2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVNYW5h
Z2VyUHJveHkuY3BwCkBAIC0zMiw4ICszMiwxMSBAQAogI2luY2x1ZGUgIldlYkNvb2tpZU1hbmFn
ZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYkNvb2tpZU1hbmFnZXJQcm94eU1lc3NhZ2VzLmgi
CiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0Nvb2tpZS5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW5EYXRhLmg+CiAKK3VzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOworCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY29uc3QgY2hhciogV2ViQ29v
a2llTWFuYWdlclByb3h5OjpzdXBwbGVtZW50TmFtZSgpCkBAIC05NCw3ICs5Nyw3IEBAIHZvaWQg
V2ViQ29va2llTWFuYWdlclByb3h5OjpkZXJlZldlYkNvbnRleHRTdXBwbGVtZW50KCkKICAgICBB
UEk6Ok9iamVjdDo6ZGVyZWYoKTsKIH0KIAotdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6Omdl
dEhvc3RuYW1lc1dpdGhDb29raWVzKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIEZ1bmN0
aW9uPHZvaWQgKEFQSTo6QXJyYXkqLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1
bmN0aW9uKQordm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmdldEhvc3RuYW1lc1dpdGhDb29r
aWVzKFNlc3Npb25JRCBzZXNzaW9uSUQsIEZ1bmN0aW9uPHZvaWQgKEFQSTo6QXJyYXkqLCBDYWxs
YmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQogewogICAgIGF1dG8gY2FsbGJh
Y2sgPSBBcnJheUNhbGxiYWNrOjpjcmVhdGUoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSk7CiAg
ICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7CkBAIC0xMTQs
MzcgKzExNyw5NiBAQCB2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGlkR2V0SG9zdG5hbWVz
V2l0aENvb2tpZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGhvcwogICAgIGNhbGxiYWNrLT5wZXJm
b3JtQ2FsbGJhY2tXaXRoUmV0dXJuVmFsdWUoQVBJOjpBcnJheTo6Y3JlYXRlU3RyaW5nQXJyYXko
aG9zdG5hbWVzKS5wdHIoKSk7CiB9CiAKLXZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpkZWxl
dGVDb29raWVzRm9ySG9zdG5hbWUoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3Qg
U3RyaW5nJiBob3N0bmFtZSkKK3ZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpkZWxldGVDb29r
aWVzRm9ySG9zdG5hbWUoU2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBob3N0bmFt
ZSkKIHsKICAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9OZXR3b3JraW5nUHJvY2Vzc1JlbGF1bmNo
aW5nSWZOZWNlc3NhcnkoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OkRlbGV0ZUNvb2tpZXNG
b3JIb3N0bmFtZShzZXNzaW9uSUQsIGhvc3RuYW1lKSk7CiB9CiAKLXZvaWQgV2ViQ29va2llTWFu
YWdlclByb3h5OjpkZWxldGVBbGxDb29raWVzKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQp
Cit2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGVsZXRlQWxsQ29va2llcyhTZXNzaW9uSUQg
c2Vzc2lvbklEKQogewogICAgIHByb2Nlc3NQb29sKCktPnNlbmRUb05ldHdvcmtpbmdQcm9jZXNz
UmVsYXVuY2hpbmdJZk5lY2Vzc2FyeShNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6RGVsZXRl
QWxsQ29va2llcyhzZXNzaW9uSUQpKTsKIH0KIAotdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6
OmRlbGV0ZUFsbENvb2tpZXNNb2RpZmllZFNpbmNlKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgdGltZSkKK3ZvaWQgV2Vi
Q29va2llTWFuYWdlclByb3h5OjpkZWxldGVDb29raWUoU2Vzc2lvbklEIHNlc3Npb25JRCwgY29u
c3QgQ29va2llJiBjb29raWUsIEZ1bmN0aW9uPHZvaWQgKENhbGxiYWNrQmFzZTo6RXJyb3IpPiYm
IGNhbGxiYWNrRnVuY3Rpb24pCit7CisgICAgYXV0byBjYWxsYmFjayA9IFZvaWRDYWxsYmFjazo6
Y3JlYXRlKFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbikpOworICAgIHVpbnQ2NF90IGNhbGxiYWNr
SUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgpOworICAgIG1fdm9pZENhbGxiYWNrcy5zZXQoY2Fs
bGJhY2tJRCwgV1RGTW92ZShjYWxsYmFjaykpOworCisgICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRv
TmV0d29ya2luZ1Byb2Nlc3NSZWxhdW5jaGluZ0lmTmVjZXNzYXJ5KE1lc3NhZ2VzOjpXZWJDb29r
aWVNYW5hZ2VyOjpEZWxldGVDb29raWUoc2Vzc2lvbklELCBjb29raWUsIGNhbGxiYWNrSUQpKTsK
K30KKwordm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRlbGV0ZUFsbENvb2tpZXNNb2RpZmll
ZFNpbmNlKFNlc3Npb25JRCBzZXNzaW9uSUQsIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRp
bWVfcG9pbnQgdGltZSwgRnVuY3Rpb248dm9pZCAoQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2Fs
bGJhY2tGdW5jdGlvbikKK3sKKyAgICBhdXRvIGNhbGxiYWNrID0gVm9pZENhbGxiYWNrOjpjcmVh
dGUoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSk7CisgICAgdWludDY0X3QgY2FsbGJhY2tJRCA9
IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7CisgICAgbV92b2lkQ2FsbGJhY2tzLnNldChjYWxsYmFj
a0lELCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisKKyAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9OZXR3
b3JraW5nUHJvY2Vzc1JlbGF1bmNoaW5nSWZOZWNlc3NhcnkoTWVzc2FnZXM6OldlYkNvb2tpZU1h
bmFnZXI6OkRlbGV0ZUFsbENvb2tpZXNNb2RpZmllZFNpbmNlKHNlc3Npb25JRCwgdGltZSwgY2Fs
bGJhY2tJRCkpOworfQorCit2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6c2V0Q29va2llKFNl
c3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IENvb2tpZSYgY29va2llLCBGdW5jdGlvbjx2b2lkIChD
YWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQogewotICAgIHByb2Nlc3NQ
b29sKCktPnNlbmRUb05ldHdvcmtpbmdQcm9jZXNzUmVsYXVuY2hpbmdJZk5lY2Vzc2FyeShNZXNz
YWdlczo6V2ViQ29va2llTWFuYWdlcjo6RGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2Uoc2Vz
c2lvbklELCB0aW1lKSk7CisgICAgYXV0byBjYWxsYmFjayA9IFZvaWRDYWxsYmFjazo6Y3JlYXRl
KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbikpOworICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBj
YWxsYmFjay0+Y2FsbGJhY2tJRCgpOworICAgIG1fdm9pZENhbGxiYWNrcy5zZXQoY2FsbGJhY2tJ
RCwgV1RGTW92ZShjYWxsYmFjaykpOworCisgICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvTmV0d29y
a2luZ1Byb2Nlc3NSZWxhdW5jaGluZ0lmTmVjZXNzYXJ5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5h
Z2VyOjpTZXRDb29raWUoc2Vzc2lvbklELCBjb29raWUsIGNhbGxiYWNrSUQpKTsKIH0KIAotdm9p
ZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OnNldENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mIGNvb2tpZXMsIGNvbnN0IFdl
YkNvcmU6OlVSTCYgdXJsLCBjb25zdCBXZWJDb3JlOjpVUkwmIG1haW5Eb2N1bWVudFVSTCkKK3Zv
aWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpzZXRDb29raWVzKFNlc3Npb25JRCBzZXNzaW9uSUQs
IGNvbnN0IFZlY3RvcjxDb29raWU+JiBjb29raWVzLCBjb25zdCBVUkwmIHVybCwgY29uc3QgVVJM
JiBtYWluRG9jdW1lbnRVUkwsIEZ1bmN0aW9uPHZvaWQgKENhbGxiYWNrQmFzZTo6RXJyb3IpPiYm
IGNhbGxiYWNrRnVuY3Rpb24pCiB7Ci0gICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvTmV0d29ya2lu
Z1Byb2Nlc3NSZWxhdW5jaGluZ0lmTmVjZXNzYXJ5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2Vy
OjpTZXRDb29raWVzKHNlc3Npb25JRCwgY29va2llcywgdXJsLCBtYWluRG9jdW1lbnRVUkwpKTsK
KyAgICBhdXRvIGNhbGxiYWNrID0gVm9pZENhbGxiYWNrOjpjcmVhdGUoV1RGTW92ZShjYWxsYmFj
a0Z1bmN0aW9uKSk7CisgICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFj
a0lEKCk7CisgICAgbV92b2lkQ2FsbGJhY2tzLnNldChjYWxsYmFja0lELCBXVEZNb3ZlKGNhbGxi
YWNrKSk7CisKKyAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9OZXR3b3JraW5nUHJvY2Vzc1JlbGF1
bmNoaW5nSWZOZWNlc3NhcnkoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OlNldENvb2tpZXMo
c2Vzc2lvbklELCBjb29raWVzLCB1cmwsIG1haW5Eb2N1bWVudFVSTCwgY2FsbGJhY2tJRCkpOwog
fQogCi12b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6c3RhcnRPYnNlcnZpbmdDb29raWVDaGFu
Z2VzKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQpCit2b2lkIFdlYkNvb2tpZU1hbmFnZXJQ
cm94eTo6Z2V0QWxsQ29va2llcyhTZXNzaW9uSUQgc2Vzc2lvbklELCBGdW5jdGlvbjx2b2lkIChj
b25zdCBWZWN0b3I8Q29va2llPiYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVu
Y3Rpb24pCit7CisgICAgYXV0byBjYWxsYmFjayA9IEdldENvb2tpZXNDYWxsYmFjazo6Y3JlYXRl
KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbikpOworICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBj
YWxsYmFjay0+Y2FsbGJhY2tJRCgpOworICAgIG1fZ2V0Q29va2llc0NhbGxiYWNrcy5zZXQoY2Fs
bGJhY2tJRCwgV1RGTW92ZShjYWxsYmFjaykpOworCisgICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRv
TmV0d29ya2luZ1Byb2Nlc3NSZWxhdW5jaGluZ0lmTmVjZXNzYXJ5KE1lc3NhZ2VzOjpXZWJDb29r
aWVNYW5hZ2VyOjpHZXRBbGxDb29raWVzKHNlc3Npb25JRCwgY2FsbGJhY2tJRCkpOworfQorCit2
b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6Z2V0Q29va2llcyhTZXNzaW9uSUQgc2Vzc2lvbklE
LCBjb25zdCBVUkwmIHVybCwgRnVuY3Rpb248dm9pZCAoY29uc3QgVmVjdG9yPENvb2tpZT4mLCBD
YWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQoreworICAgIGF1dG8gY2Fs
bGJhY2sgPSBHZXRDb29raWVzQ2FsbGJhY2s6OmNyZWF0ZShXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rp
b24pKTsKKyAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gY2FsbGJhY2stPmNhbGxiYWNrSUQoKTsK
KyAgICBtX2dldENvb2tpZXNDYWxsYmFja3Muc2V0KGNhbGxiYWNrSUQsIFdURk1vdmUoY2FsbGJh
Y2spKTsKKworICAgIHByb2Nlc3NQb29sKCktPnNlbmRUb05ldHdvcmtpbmdQcm9jZXNzUmVsYXVu
Y2hpbmdJZk5lY2Vzc2FyeShNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6R2V0Q29va2llcyhz
ZXNzaW9uSUQsIHVybCwgY2FsbGJhY2tJRCkpOworfQorCit2b2lkIFdlYkNvb2tpZU1hbmFnZXJQ
cm94eTo6ZGlkU2V0Q29va2llcyh1aW50NjRfdCBjYWxsYmFja0lEKQoreworICAgIG1fdm9pZENh
bGxiYWNrcy50YWtlKGNhbGxiYWNrSUQpLT5wZXJmb3JtQ2FsbGJhY2soKTsKK30KKwordm9pZCBX
ZWJDb29raWVNYW5hZ2VyUHJveHk6OmRpZEdldENvb2tpZXMoY29uc3QgVmVjdG9yPENvb2tpZT4m
IGNvb2tpZXMsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit7CisgICAgbV9nZXRDb29raWVzQ2FsbGJh
Y2tzLnRha2UoY2FsbGJhY2tJRCktPnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZShjb29r
aWVzKTsKK30KKwordm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRpZERlbGV0ZUNvb2tpZXMo
dWludDY0X3QgY2FsbGJhY2tJRCkKK3sKKyAgICBtX3ZvaWRDYWxsYmFja3MudGFrZShjYWxsYmFj
a0lEKS0+cGVyZm9ybUNhbGxiYWNrKCk7Cit9CisKK3ZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5
OjpzdGFydE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMoU2Vzc2lvbklEIHNlc3Npb25JRCkKIHsKICAg
ICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9OZXR3b3JraW5nUHJvY2Vzc1JlbGF1bmNoaW5nSWZOZWNl
c3NhcnkoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OlN0YXJ0T2JzZXJ2aW5nQ29va2llQ2hh
bmdlcyhzZXNzaW9uSUQpKTsKIH0KIAotdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OnN0b3BP
YnNlcnZpbmdDb29raWVDaGFuZ2VzKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQpCit2b2lk
IFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6c3RvcE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMoU2Vzc2lv
bklEIHNlc3Npb25JRCkKIHsKICAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9OZXR3b3JraW5nUHJv
Y2Vzc1JlbGF1bmNoaW5nSWZOZWNlc3NhcnkoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OlN0
b3BPYnNlcnZpbmdDb29raWVDaGFuZ2VzKHNlc3Npb25JRCkpOwogfQogCi12b2lkIFdlYkNvb2tp
ZU1hbmFnZXJQcm94eTo6c2V0Q29va2llT2JzZXJ2ZXJDYWxsYmFjayhXZWJDb3JlOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+JiYgY2FsbGJhY2spCit2b2lkIFdl
YkNvb2tpZU1hbmFnZXJQcm94eTo6c2V0Q29va2llT2JzZXJ2ZXJDYWxsYmFjayhTZXNzaW9uSUQg
c2Vzc2lvbklELCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+JiYgY2FsbGJhY2spCiB7CiAgICAgaWYg
KGNhbGxiYWNrKQogICAgICAgICBtX2Nvb2tpZU9ic2VydmVycy5zZXQoc2Vzc2lvbklELCBXVEZN
b3ZlKGNhbGxiYWNrKSk7CkBAIC0xNTIsMTQgKzIxNCwxNCBAQCB2b2lkIFdlYkNvb2tpZU1hbmFn
ZXJQcm94eTo6c2V0Q29va2llT2JzZXJ2ZXJDYWxsYmFjayhXZWJDb3JlOjpTZXNzaW9uSUQgc2Vz
c2lvbgogICAgICAgICBtX2Nvb2tpZU9ic2VydmVycy5yZW1vdmUoc2Vzc2lvbklEKTsKIH0KIAot
dm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmNvb2tpZXNEaWRDaGFuZ2UoV2ViQ29yZTo6U2Vz
c2lvbklEIHNlc3Npb25JRCkKK3ZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5Ojpjb29raWVzRGlk
Q2hhbmdlKFNlc3Npb25JRCBzZXNzaW9uSUQpCiB7CiAgICAgbV9jbGllbnQuY29va2llc0RpZENo
YW5nZSh0aGlzKTsKICAgICBpZiAoYXV0byBjYWxsYmFjayA9IG1fY29va2llT2JzZXJ2ZXJzLmdl
dChzZXNzaW9uSUQpKQogICAgICAgICBjYWxsYmFjaygpOwogfQogCi12b2lkIFdlYkNvb2tpZU1h
bmFnZXJQcm94eTo6c2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShIVFRQQ29va2llQWNjZXB0UG9s
aWN5IHBvbGljeSkKK3ZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpzZXRIVFRQQ29va2llQWNj
ZXB0UG9saWN5KFNlc3Npb25JRCwgSFRUUENvb2tpZUFjY2VwdFBvbGljeSBwb2xpY3ksIEZ1bmN0
aW9uPHZvaWQgKENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7CiAj
aWYgUExBVEZPUk0oQ09DT0EpCiAgICAgaWYgKCFwcm9jZXNzUG9vbCgpLT5pc1VzaW5nVGVzdGlu
Z05ldHdvcmtTZXNzaW9uKCkpCkBAIC0xNzIsMTEgKzIzNCwxNiBAQCB2b2lkIFdlYkNvb2tpZU1h
bmFnZXJQcm94eTo6c2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShIVFRQQ29va2llQWNjZXB0UG9s
aWN5IHBvbAogICAgIC8vIFRoZSBwb2xpY3kgaXMgbm90IHNlbnQgdG8gbmV3bHkgY3JlYXRlZCBw
cm9jZXNzZXMgKG9ubHkgU291cCBkb2VzIHRoYXQgdmlhIHNldEluaXRpYWxIVFRQQ29va2llQWNj
ZXB0UG9saWN5KCkpLiBUaGlzIGlzIG5vdCBhIHNlcmlvdXMgcHJvYmxlbSwgYmVjYXVzZToKICAg
ICAvLyAtIFdoZW4gdGVzdGluZywgd2Ugb25seSBoYXZlIG9uZSBXZWJQcm9jZXNzIGFuZCBvbmUg
TmV0d29ya1Byb2Nlc3MsIGFuZCBXZWJLaXRUZXN0UnVubmVyIG5ldmVyIHJlc3RhcnRzIHRoZW07
CiAgICAgLy8gLSBXaGVuIG5vdCB0ZXN0aW5nLCBDb2NvYSBoYXMgdGhlIHBvbGljeSBwZXJzaXN0
ZWQsIGFuZCB0aHVzIG5ldyBwcm9jZXNzZXMgdXNlIGl0IChldmVuIGZvciBlcGhlbWVyYWwgc2Vz
c2lvbnMpLgotICAgIHByb2Nlc3NQb29sKCktPnNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6
V2ViQ29va2llTWFuYWdlcjo6U2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShwb2xpY3kpKTsKLSAg
ICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9OZXR3b3JraW5nUHJvY2VzcyhNZXNzYWdlczo6V2ViQ29v
a2llTWFuYWdlcjo6U2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShwb2xpY3kpKTsKKyAgICBwcm9j
ZXNzUG9vbCgpLT5zZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6
OlNldEhUVFBDb29raWVBY2NlcHRQb2xpY3kocG9saWN5LCAwKSk7CisKKyAgICBhdXRvIGNhbGxi
YWNrID0gVm9pZENhbGxiYWNrOjpjcmVhdGUoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSk7Cisg
ICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7CisgICAgbV92
b2lkQ2FsbGJhY2tzLnNldChjYWxsYmFja0lELCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisKKyAgICBw
cm9jZXNzUG9vbCgpLT5zZW5kVG9OZXR3b3JraW5nUHJvY2VzcyhNZXNzYWdlczo6V2ViQ29va2ll
TWFuYWdlcjo6U2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShwb2xpY3ksIGNhbGxiYWNrSUQpKTsK
IH0KIAotdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmdldEhUVFBDb29raWVBY2NlcHRQb2xp
Y3koRnVuY3Rpb248dm9pZCAoSFRUUENvb2tpZUFjY2VwdFBvbGljeSwgQ2FsbGJhY2tCYXNlOjpF
cnJvcik+IGNhbGxiYWNrRnVuY3Rpb24pCit2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6Z2V0
SFRUUENvb2tpZUFjY2VwdFBvbGljeShTZXNzaW9uSUQsIEZ1bmN0aW9uPHZvaWQgKEhUVFBDb29r
aWVBY2NlcHRQb2xpY3ksIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24p
CiB7CiAgICAgYXV0byBjYWxsYmFjayA9IEhUVFBDb29raWVBY2NlcHRQb2xpY3lDYWxsYmFjazo6
Y3JlYXRlKFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbikpOwogCkBAIC0xODgsMTMgKzI1NSwxMiBA
QCB2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6Z2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShG
dW5jdGlvbjx2b2lkIChIVFRQQ29va2llQQogCiB2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6
ZGlkR2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSh1aW50MzJfdCBwb2xpY3ksIHVpbnQ2NF90IGNh
bGxiYWNrSUQpCiB7Ci0gICAgUmVmUHRyPEhUVFBDb29raWVBY2NlcHRQb2xpY3lDYWxsYmFjaz4g
Y2FsbGJhY2sgPSBtX2h0dHBDb29raWVBY2NlcHRQb2xpY3lDYWxsYmFja3MudGFrZShjYWxsYmFj
a0lEKTsKLSAgICBpZiAoIWNhbGxiYWNrKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBMb2cgZXJyb3Ig
b3IgYXNzZXJ0LgotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIG1faHR0cENvb2tpZUFjY2Vw
dFBvbGljeUNhbGxiYWNrcy50YWtlKGNhbGxiYWNrSUQpLT5wZXJmb3JtQ2FsbGJhY2tXaXRoUmV0
dXJuVmFsdWUocG9saWN5KTsKK30KIAotICAgIGNhbGxiYWNrLT5wZXJmb3JtQ2FsbGJhY2tXaXRo
UmV0dXJuVmFsdWUocG9saWN5KTsKK3ZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpkaWRTZXRI
VFRQQ29va2llQWNjZXB0UG9saWN5KHVpbnQ2NF90IGNhbGxiYWNrSUQpCit7CisgICAgbV92b2lk
Q2FsbGJhY2tzLnRha2UoY2FsbGJhY2tJRCktPnBlcmZvcm1DYWxsYmFjaygpOwogfQogCiB2b2lk
IFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6c2V0Q29va2llU3RvcmFnZVBhcnRpdGlvbmluZ0VuYWJs
ZWQoYm9vbCBlbmFibGVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YkNvb2tpZU1hbmFnZXJQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tp
ZU1hbmFnZXJQcm94eS5oCmluZGV4IGNmNzk4ZDdjY2NjNzE1NDE1OWI5ZDYxMmRmZmRiYjg2YWVk
MWZlNzEuLmZkZjg5MWUxNTg5YWMwZGQ3Mjk2ZjkzYTdmNGY3ZmM3NWZlMjkxZjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmgKQEAgLTU1
LDYgKzU1LDcgQEAgY2xhc3MgV2ViUHJvY2Vzc1Byb3h5OwogCiB0eXBlZGVmIEdlbmVyaWNDYWxs
YmFjazxBUEk6OkFycmF5Kj4gQXJyYXlDYWxsYmFjazsKIHR5cGVkZWYgR2VuZXJpY0NhbGxiYWNr
PEhUVFBDb29raWVBY2NlcHRQb2xpY3k+IEhUVFBDb29raWVBY2NlcHRQb2xpY3lDYWxsYmFjazsK
K3R5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jj4g
R2V0Q29va2llc0NhbGxiYWNrOwogCiBjbGFzcyBXZWJDb29raWVNYW5hZ2VyUHJveHkgOiBwdWJs
aWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpDb29raWVNYW5hZ2VyPiwgcHVi
bGljIFdlYkNvbnRleHRTdXBwbGVtZW50LCBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsK
IHB1YmxpYzoKQEAgLTY2LDE0ICs2NywyMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBpbml0aWFsaXpl
Q2xpZW50KGNvbnN0IFdLQ29va2llTWFuYWdlckNsaWVudEJhc2UqKTsKICAgICAKICAgICB2b2lk
IGdldEhvc3RuYW1lc1dpdGhDb29raWVzKFdlYkNvcmU6OlNlc3Npb25JRCwgRnVuY3Rpb248dm9p
ZCAoQVBJOjpBcnJheSosIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKKyAgICB2b2lkIGRlbGV0
ZUNvb2tpZShXZWJDb3JlOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OkNvb2tpZSYsIEZ1bmN0
aW9uPHZvaWQgKENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKICAgICB2b2lkIGRlbGV0ZUNvb2tp
ZXNGb3JIb3N0bmFtZShXZWJDb3JlOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgaG9zdG5hbWUp
OwogICAgIHZvaWQgZGVsZXRlQWxsQ29va2llcyhXZWJDb3JlOjpTZXNzaW9uSUQpOwotICAgIHZv
aWQgZGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2UoV2ViQ29yZTo6U2Vzc2lvbklELCBzdGQ6
OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50KTsKKyAgICB2b2lkIGRlbGV0ZUFsbENv
b2tpZXNNb2RpZmllZFNpbmNlKFdlYkNvcmU6OlNlc3Npb25JRCwgc3RkOjpjaHJvbm86OnN5c3Rl
bV9jbG9jazo6dGltZV9wb2ludCwgRnVuY3Rpb248dm9pZCAoQ2FsbGJhY2tCYXNlOjpFcnJvcik+
JiYpOwogCi0gICAgdm9pZCBzZXRDb29raWVzKFdlYkNvcmU6OlNlc3Npb25JRCwgY29uc3QgVmVj
dG9yPFdlYkNvcmU6OkNvb2tpZT4mLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXZWJDb3Jl
OjpVUkwmIG1haW5Eb2N1bWVudFVSTCk7CisgICAgdm9pZCBzZXRDb29raWUoV2ViQ29yZTo6U2Vz
c2lvbklELCBjb25zdCBXZWJDb3JlOjpDb29raWUmLCBGdW5jdGlvbjx2b2lkIChDYWxsYmFja0Jh
c2U6OkVycm9yKT4mJik7CisgICAgdm9pZCBzZXRDb29raWVzKFdlYkNvcmU6OlNlc3Npb25JRCwg
Y29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25z
dCBXZWJDb3JlOjpVUkwmIG1haW5Eb2N1bWVudFVSTCwgRnVuY3Rpb248dm9pZCAoQ2FsbGJhY2tC
YXNlOjpFcnJvcik+JiYpOworCisgICAgdm9pZCBnZXRBbGxDb29raWVzKFdlYkNvcmU6OlNlc3Np
b25JRCwgRnVuY3Rpb248dm9pZCAoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mLCBDYWxs
YmFja0Jhc2U6OkVycm9yKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7CisgICAgdm9pZCBnZXRDb29r
aWVzKFdlYkNvcmU6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6VVJMJiwgRnVuY3Rpb248dm9p
ZCAoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4m
JiBjb21wbGV0aW9uSGFuZGxlcik7CisKKyAgICB2b2lkIHNldEhUVFBDb29raWVBY2NlcHRQb2xp
Y3koV2ViQ29yZTo6U2Vzc2lvbklELCBIVFRQQ29va2llQWNjZXB0UG9saWN5LCBGdW5jdGlvbjx2
b2lkIChDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CisgICAgdm9pZCBnZXRIVFRQQ29va2llQWNj
ZXB0UG9saWN5KFdlYkNvcmU6OlNlc3Npb25JRCwgRnVuY3Rpb248dm9pZCAoSFRUUENvb2tpZUFj
Y2VwdFBvbGljeSwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwogCi0gICAgdm9pZCBzZXRIVFRQ
Q29va2llQWNjZXB0UG9saWN5KEhUVFBDb29raWVBY2NlcHRQb2xpY3kpOwotICAgIHZvaWQgZ2V0
SFRUUENvb2tpZUFjY2VwdFBvbGljeShGdW5jdGlvbjx2b2lkIChIVFRQQ29va2llQWNjZXB0UG9s
aWN5LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4pOwogICAgIHZvaWQgc2V0Q29va2llU3RvcmFnZVBh
cnRpdGlvbmluZ0VuYWJsZWQoYm9vbCk7CiAKICAgICB2b2lkIHN0YXJ0T2JzZXJ2aW5nQ29va2ll
Q2hhbmdlcyhXZWJDb3JlOjpTZXNzaW9uSUQpOwpAQCAtOTUsNiArMTAyLDExIEBAIHByaXZhdGU6
CiAgICAgdm9pZCBkaWRHZXRIb3N0bmFtZXNXaXRoQ29va2llcyhjb25zdCBWZWN0b3I8U3RyaW5n
PiYsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwogICAgIHZvaWQgZGlkR2V0SFRUUENvb2tpZUFjY2Vw
dFBvbGljeSh1aW50MzJfdCBwb2xpY3ksIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwogCisgICAgdm9p
ZCBkaWRTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAg
IHZvaWQgZGlkU2V0Q29va2llcyh1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICB2b2lkIGRpZEdl
dENvb2tpZXMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mLCB1aW50NjRfdCBjYWxsYmFj
a0lEKTsKKyAgICB2b2lkIGRpZERlbGV0ZUNvb2tpZXModWludDY0X3QgY2FsbGJhY2tJRCk7CisK
ICAgICB2b2lkIGNvb2tpZXNEaWRDaGFuZ2UoV2ViQ29yZTo6U2Vzc2lvbklEKTsKIAogICAgIC8v
IFdlYkNvbnRleHRTdXBwbGVtZW50CkBAIC0xMTMsNiArMTI1LDggQEAgcHJpdmF0ZToKIAogICAg
IEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxBcnJheUNhbGxiYWNrPj4gbV9hcnJheUNhbGxiYWNr
czsKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8SFRUUENvb2tpZUFjY2VwdFBvbGljeUNh
bGxiYWNrPj4gbV9odHRwQ29va2llQWNjZXB0UG9saWN5Q2FsbGJhY2tzOworICAgIEhhc2hNYXA8
dWludDY0X3QsIFJlZlB0cjxWb2lkQ2FsbGJhY2s+PiBtX3ZvaWRDYWxsYmFja3M7CisgICAgSGFz
aE1hcDx1aW50NjRfdCwgUmVmUHRyPEdldENvb2tpZXNDYWxsYmFjaz4+IG1fZ2V0Q29va2llc0Nh
bGxiYWNrczsKIAogICAgIEhhc2hNYXA8V2ViQ29yZTo6U2Vzc2lvbklELCBzdGQ6OmZ1bmN0aW9u
PHZvaWQgKCk+PiBtX2Nvb2tpZU9ic2VydmVyczsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KaW5kZXgg
MTJlMDA5MDE4Yjc0ZGM1ZTlhNmQ2MGRiNjhkMmFiNDRlMmYxYTQzZi4uZGNjYmNmMjllMDc2Njk3
NGI3NDM1ODcyMTJiMTJjM2JmNGNiYzFlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCkBAIC0yMyw2
ICsyMywxMSBAQAogbWVzc2FnZXMgLT4gV2ViQ29va2llTWFuYWdlclByb3h5IHsKICAgICBEaWRH
ZXRIb3N0bmFtZXNXaXRoQ29va2llcyhWZWN0b3I8U3RyaW5nPiBob3N0bmFtZXMsIHVpbnQ2NF90
IGNhbGxiYWNrSUQpOwogICAgIERpZEdldEhUVFBDb29raWVBY2NlcHRQb2xpY3kodWludDMyX3Qg
cG9saWN5LCB1aW50NjRfdCBjYWxsYmFja0lEKTsKLSAgICAKKworICAgIERpZFNldEhUVFBDb29r
aWVBY2NlcHRQb2xpY3kodWludDY0X3QgY2FsbGJhY2tJRCk7CisgICAgRGlkRGVsZXRlQ29va2ll
cyh1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICBEaWRTZXRDb29raWVzKHVpbnQ2NF90IGNhbGxi
YWNrSUQpOworICAgIERpZEdldENvb2tpZXMoVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4gY29va2ll
cywgdWludDY0X3QgY2FsbGJhY2tJRCk7CisKICAgICBDb29raWVzRGlkQ2hhbmdlKFdlYkNvcmU6
OlNlc3Npb25JRCBzZXNzaW9uSUQpCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViRnJhbWVQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkZyYW1l
UHJveHkuaAppbmRleCA2YmY5OTM4NjJiN2VhY2E1MWE3NWI1OTAwZmEzZjc0MTY3OWJkNWZlLi41
NWI1YjY3ZTBiMmY5NWI5NzIyNDVkZTVjOGRjY2E3OGI4ZDcxNmZiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJX
ZWJGcmFtZUxpc3RlbmVyUHJveHkuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lTG9hZGVyVHlw
ZXMuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5o
PgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmlu
ZGV4IGY2OTYyMzFiYTA1OTg2MWUxOGZlZmM0YWI2ZmJmODIzMTM2OTFlNzcuLmFhYzZiYTViM2Mx
NTIxODI4N2I5ZDM1ODA2ODU3ZjVkOWQwNTliZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkFQSUF1
dG9tYXRpb25DbGllbnQuaCIKICNpbmNsdWRlICJBUElDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGll
bnQuaCIKICNpbmNsdWRlICJBUElEb3dubG9hZENsaWVudC5oIgorI2luY2x1ZGUgIkFQSUhUVFBD
b29raWVTdG9yYWdlLmgiCiAjaW5jbHVkZSAiQVBJTGVnYWN5Q29udGV4dEhpc3RvcnlDbGllbnQu
aCIKICNpbmNsdWRlICJBUElQYWdlQ29uZmlndXJhdGlvbi5oIgogI2luY2x1ZGUgIkFQSVByb2Nl
c3NQb29sQ29uZmlndXJhdGlvbi5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQb29sLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Bvb2wuaAppbmRleCA4ODVhZDNjZWJiMzYxNzlkMWQ2ZGNiNjc1ZWM1YjgxMzlkYjY1ZjY5Li5l
MGUxOTI2ZDUzZTQxODI4MmMyZWIxY2JiMGQ1MWM1MWNlMGJlNTU5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaApAQCAtNzYsNiArNzYsNyBAQCBuYW1lc3BhY2Ug
QVBJIHsKIGNsYXNzIEF1dG9tYXRpb25DbGllbnQ7CiBjbGFzcyBDdXN0b21Qcm90b2NvbE1hbmFn
ZXJDbGllbnQ7CiBjbGFzcyBEb3dubG9hZENsaWVudDsKK2NsYXNzIEhUVFBDb29raWVTdG9yYWdl
OwogY2xhc3MgTGVnYWN5Q29udGV4dEhpc3RvcnlDbGllbnQ7CiBjbGFzcyBQYWdlQ29uZmlndXJh
dGlvbjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0
YS9XZWJzaXRlRGF0YVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRl
RGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAppbmRleCA3YmFhZjg1NDU0MmQ2NzhhZWZlYWY0ZjI1
OGFkN2YxNGNhMjA1MWVjLi42MzMyZjdkYjg2MGJiMzNkNTAwOWM0ZTU3YzA1ZWRkMmExZDMyMTBl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0
ZURhdGFTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRh
L1dlYnNpdGVEYXRhU3RvcmUuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiQVBJV2Vi
c2l0ZURhdGFSZWNvcmQuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc01lc3NhZ2VzLmgiCiAj
aW5jbHVkZSAiU3RvcmFnZU1hbmFnZXIuaCIKKyNpbmNsdWRlICJXZWJDb29raWVNYW5hZ2VyUHJv
eHkuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQcm9j
ZXNzUG9vbC5oIgogI2luY2x1ZGUgIldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIgpA
QCAtMTA1LDYgKzEwNiwyNyBAQCBXZWJzaXRlRGF0YVN0b3JlOjp+V2Vic2l0ZURhdGFTdG9yZSgp
CiAgICAgfQogfQogCitSZWY8V2ViUHJvY2Vzc1Bvb2w+IFdlYnNpdGVEYXRhU3RvcmU6OnByb2Nl
c3NQb29sRm9yQ29va2llU3RvcmFnZU9wZXJhdGlvbnMoKQoreworICAgIC8vIE91ciBjb25jZXB0
cyBvZiBXZWJQcm9jZXNzLCBXZWJQcm9jZXNzUG9vbCwgV2Vic2l0ZURhdGFTdG9yZSwgYW5kIFNl
c3Npb25JRHMgaGF2ZSBhbGwgc3RhcnRlZCB0byBvdmVybGFwCisgICAgLy8gd2l0aG91dCBjbGVh
ciBkaXZpc2lvbnMgb2YgcmVzcG9uc2liaWxpdGllcy4KKyAgICAvLyBJbiBwcmFjdGljZSwgbXVs
dGlwbGUgV2ViUHJvY2Vzc1Bvb2xzIGNhbiBjb250YWluICJ0aGUgc2FtZSBzZXNzaW9uIiwgZXNw
ZWNpYWxseSBzaW5jZSB0aGVyZSBpcyBjdXJyZW50bHkKKyAgICAvLyBvbmx5IGEgc2luZ2xlIGRl
ZmF1bHQgZ2xvYmFsIFNlc3Npb25JRC4KKyAgICAvLworICAgIC8vIFRoaXMgbWVhbnMgdGhhdCBt
dWx0aXBsZSBOZXR3b3JrUHJvY2Vzc2VzIGNhbiBiZSB1c2luZyB0aGUgc2FtZSBzZXNzaW9uLCB3
aGljaCBtZWFucyB0aGF0IG11bHRpcGxlCisgICAgLy8gTmV0d29ya1Byb2Nlc3NlcyBjYW4gYmUg
cmVmZXJyaW5nIHRvIHRoZSBzYW1lIHBsYXRmb3JtIGNvb2tpZSBzdG9yYWdlLgorICAgIC8vCisg
ICAgLy8gV2hpbGUgdGhpcyBtYXkgY2F1c2UgY29tcGxpY2F0aW9ucyB3aXRoIGZ1dHVyZSBBUElz
IGl0IGlzIGFjdHVhbGx5IGZpbmUgZm9yIGltcGxlbWVudGluZyB0aGUgV0tIVFRQQ29va2llU3Rv
cmFnZSBBUEkKKyAgICAvLyBiZWNhdXNlIHdlIG9ubHkgbmVlZCBvbmUgTmV0d29ya1Byb2Nlc3Mg
dG8gc3VjY2Vzc2Z1bGx5IG1ha2UgYSByZXF1ZXN0ZWQgcGxhdGZvcm0gY29va2llIHN0b3JhZ2Ug
Y2hhbmdlLgorICAgIC8vCisgICAgLy8gRklYTUU6IFdlIG5lZWQgdG8gc3RhcnQgdG8gdW5yYXZl
bCB0aGlzIG1lc3MgZ29pbmcgZm9yd2FyZC4KKworICAgIGF1dG8gcG9vbHMgPSBwcm9jZXNzUG9v
bHMoMSk7CisgICAgQVNTRVJUKCFwb29scy5pc0VtcHR5KCkpOworCisgICAgcmV0dXJuICoqcG9v
bHMuYmVnaW4oKTsKK30KKwogdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpyZXNvbHZlRGlyZWN0b3Jp
ZXNJZk5lY2Vzc2FyeSgpCiB7CiAgICAgaWYgKG1faGFzUmVzb2x2ZWREaXJlY3RvcmllcykKQEAg
LTExMDgsNyArMTEzMCw3IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6d2ViUHJvY2Vzc0RpZENs
b3NlQ29ubmVjdGlvbihXZWJQcm9jZXNzUHJveHkmIHdlYlByb2Nlc3NQCiAgICAgICAgIG1fc3Rv
cmFnZU1hbmFnZXItPnByb2Nlc3NEaWRDbG9zZUNvbm5lY3Rpb24od2ViUHJvY2Vzc1Byb3h5LCBj
b25uZWN0aW9uKTsKIH0KIAotSGFzaFNldDxSZWZQdHI8V2ViUHJvY2Vzc1Bvb2w+PiBXZWJzaXRl
RGF0YVN0b3JlOjpwcm9jZXNzUG9vbHMoKSBjb25zdAorSGFzaFNldDxSZWZQdHI8V2ViUHJvY2Vz
c1Bvb2w+PiBXZWJzaXRlRGF0YVN0b3JlOjpwcm9jZXNzUG9vbHMoc2l6ZV90IGNvdW50KSBjb25z
dAogewogICAgIEhhc2hTZXQ8UmVmUHRyPFdlYlByb2Nlc3NQb29sPj4gcHJvY2Vzc1Bvb2xzOwog
ICAgIGZvciAoYXV0byYgcHJvY2VzcyA6IHByb2Nlc3NlcygpKQpAQCAtMTEyMiwxMSArMTE0NCwy
MCBAQCBIYXNoU2V0PFJlZlB0cjxXZWJQcm9jZXNzUG9vbD4+IFdlYnNpdGVEYXRhU3RvcmU6OnBy
b2Nlc3NQb29scygpIGNvbnN0CiAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NQb29scy5hZGQo
cHJvY2Vzc1Bvb2wpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICB9IGVsc2UgaWYgKCZBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1
bHREYXRhU3RvcmUoKS0+d2Vic2l0ZURhdGFTdG9yZSgpID09IHRoaXMpIHsKKyAgICAgICAgICAg
ICAgICAvLyBJZiBhIHByb2Nlc3MgcG9vbCBkb2Vzbid0IGhhdmUgYW4gZXhwbGljaXQgZGF0YSBz
dG9yZSBhbmQgdGhpcyBpcyB0aGUgZGVmYXVsdCBXZWJzaXRlRGF0YVN0b3JlLAorICAgICAgICAg
ICAgICAgIC8vIGFkZCB0aGF0IHByb2Nlc3MgcG9vbCB0byB0aGUgc2V0LgorICAgICAgICAgICAg
ICAgIC8vIEZJWE1FOiBUaGlzIGJlaGF2aW9yIGlzIHdlaXJkIGFuZCBuZWNlc3NpdGF0ZWQgYnkg
dGhlIGZhY3QgdGhhdCBwcm9jZXNzIHBvb2xzIGRvbid0IGFsd2F5cworICAgICAgICAgICAgICAg
IC8vIGhhdmUgYSBkYXRhIHN0b3JlOyB0aGV5IHNob3VsZC4KKyAgICAgICAgICAgICAgICBwcm9j
ZXNzUG9vbHMuYWRkKHByb2Nlc3NQb29sKTsKICAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
aWYgKHByb2Nlc3NQb29scy5zaXplKCkgPT0gY291bnQpCisgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAocHJvY2Vzc1Bvb2xzLmlzRW1wdHkoKSkgewor
ICAgIGlmIChwcm9jZXNzUG9vbHMuaXNFbXB0eSgpICYmIGNvdW50KSB7CiAgICAgICAgIGF1dG8g
cHJvY2Vzc1Bvb2wgPSBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlKEFQSTo6UHJvY2Vzc1Bvb2xDb25m
aWd1cmF0aW9uOjpjcmVhdGVXaXRoV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24obV9jb25m
aWd1cmF0aW9uKSk7CiAgICAgICAgIHByb2Nlc3NQb29scy5hZGQocHJvY2Vzc1Bvb2wucHRyKCkp
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0
YS9XZWJzaXRlRGF0YVN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURh
dGEvV2Vic2l0ZURhdGFTdG9yZS5oCmluZGV4IDk3NWJhYzhkODliYjFlY2M2NTYyNmRkNDA3NGFm
OWM3NmFmODM0NTcuLjhkMTNiY2U0OTgyOWIzY2FkYWIwN2Y4NDVhYjI0YmJjOTM4NTg0N2YgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0
YVN0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNp
dGVEYXRhU3RvcmUuaApAQCAtMTAzLDYgKzEwMyw4IEBAIHB1YmxpYzoKIAogICAgIFN0b3JhZ2VN
YW5hZ2VyKiBzdG9yYWdlTWFuYWdlcigpIHsgcmV0dXJuIG1fc3RvcmFnZU1hbmFnZXIuZ2V0KCk7
IH0KIAorICAgIFJlZjxXZWJQcm9jZXNzUG9vbD4gcHJvY2Vzc1Bvb2xGb3JDb29raWVTdG9yYWdl
T3BlcmF0aW9ucygpOworCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFdlYnNpdGVEYXRhU3RvcmUo
V2ViQ29yZTo6U2Vzc2lvbklEKTsKICAgICBleHBsaWNpdCBXZWJzaXRlRGF0YVN0b3JlKENvbmZp
Z3VyYXRpb24pOwpAQCAtMTE5LDcgKzEyMSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwbGF0Zm9y
bURlc3Ryb3koKTsKICAgICBzdGF0aWMgdm9pZCBwbGF0Zm9ybVJlbW92ZVJlY2VudFNlYXJjaGVz
KHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQpOwogCi0gICAgSGFzaFNldDxS
ZWZQdHI8V2ViUHJvY2Vzc1Bvb2w+PiBwcm9jZXNzUG9vbHMoKSBjb25zdDsKKyAgICBIYXNoU2V0
PFJlZlB0cjxXZWJQcm9jZXNzUG9vbD4+IHByb2Nlc3NQb29scyhzaXplX3QgY291bnQgPSBzdGQ6
Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpKSBjb25zdDsKIAogI2lmIEVOQUJMRShORVRT
Q0FQRV9QTFVHSU5fQVBJKQogICAgIFZlY3RvcjxQbHVnaW5Nb2R1bGVJbmZvPiBwbHVnaW5zKCkg
Y29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggN2UxODgyMmYwNGQxNzZhYTg5OTRiNDY2YTgwNTY2OWFkY2E5MDI5MC4uZTM5
YmU5YWVlMDk1OGFhMGI4MzhmMmNkYThmNGEzNjA5ODU5OTY5MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTA2Myw2ICsxMDYz
LDkgQEAKIAkJNTFEMTI0MzUxRTZERjY1MjAwMkIyODIwIC8qIFdLVVJMU2NoZW1lSGFuZGxlclRh
c2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRDEy
NDJGMUU2RERERDcwMDJCMjgyMCAvKiBXS1VSTFNjaGVtZUhhbmRsZXJUYXNrLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OwogCQk1MUQxMjQzNjFFNkRGQjM5
MDAyQjI4MjAgLyogV0tVUkxTY2hlbWVIYW5kbGVyVGFzay5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRDEyNDMwMUU2RERERDcwMDJCMjgyMCAvKiBX
S1VSTFNjaGVtZUhhbmRsZXJUYXNrLm1tICovOyB9OwogCQk1MUQxMjQzQTFFNkUwQUFCMDAyQjI4
MjAgLyogQVBJVVJMU2NoZW1lSGFuZGxlclRhc2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFEMTI0MzgxRTZERkRCOTAwMkIyODIwIC8qIEFQSVVS
TFNjaGVtZUhhbmRsZXJUYXNrLmNwcCAqLzsgfTsKKwkJNTFEMTI0OTExRTc0QkYzQzAwMkIyODIw
IC8qIEFQSUhUVFBDb29raWVTdG9yYWdlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxRDEyNDgyMUU3MzRBQzgwMDJCMjgyMCAvKiBBUElIVFRQQ29v
a2llU3RvcmFnZS5jcHAgKi87IH07CisJCTUxRDEyNDkyMUU3NEJGNDgwMDJCMjgyMCAvKiBXS0hU
VFBDb29raWVTdG9yYWdlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTFEMTI0ODUxRTczNEFFMzAwMkIyODIwIC8qIFdLSFRUUENvb2tpZVN0b3JhZ2Uu
bW0gKi87IH07CisJCTUxRDEyNDk5MUU3NjNDMDEwMDJCMjgyMCAvKiBXS0hUVFBDb29raWVTdG9y
YWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUQx
MjQ4NDFFNzM0QUUzMDAyQjI4MjAgLyogV0tIVFRQQ29va2llU3RvcmFnZS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxRDEzMDUzMTM4MkVBQzAw
MDM1MUVERCAvKiBTZWNJdGVtUmVxdWVzdERhdGEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFEMTMwNEYxMzgyRUFDMDAwMzUxRUREIC8qIFNlY0l0
ZW1SZXF1ZXN0RGF0YS5jcHAgKi87IH07CiAJCTUxRDEzMDU0MTM4MkVBQzAwMDM1MUVERCAvKiBT
ZWNJdGVtUmVxdWVzdERhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUxRDEzMDUwMTM4MkVBQzAwMDM1MUVERCAvKiBTZWNJdGVtUmVxdWVzdERhdGEu
aCAqLzsgfTsKIAkJNTFEMTMwNTUxMzgyRUFDMDAwMzUxRUREIC8qIFNlY0l0ZW1SZXNwb25zZURh
dGEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFE
MTMwNTExMzgyRUFDMDAwMzUxRUREIC8qIFNlY0l0ZW1SZXNwb25zZURhdGEuY3BwICovOyB9OwpA
QCAtMzI4NSw2ICszMjg4LDExIEBACiAJCTUxRDEyNDM3MUU2REZEMkEwMDJCMjgyMCAvKiBXS1VS
TFNjaGVtZUhhbmRsZXJUYXNrSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV0tVUkxTY2hlbWVIYW5kbGVyVGFza0ludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTUxRDEyNDM4MUU2REZEQjkwMDJCMjgyMCAvKiBBUElVUkxTY2hlbWVIYW5k
bGVyVGFzay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBUElVUkxT
Y2hlbWVIYW5kbGVyVGFzay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxRDEy
NDM5MUU2REZEQjkwMDJCMjgyMCAvKiBBUElVUkxTY2hlbWVIYW5kbGVyVGFzay5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBUElVUkxTY2hlbWVIYW5kbGVyVGFzay5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MUQxMjQ4MjFFNzM0QUM4MDAyQjI4MjAgLyogQVBJ
SFRUUENvb2tpZVN0b3JhZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQVBJSFRUUENvb2tpZVN0b3JhZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk1MUQxMjQ4MzFFNzM0QUM4MDAyQjI4MjAgLyogQVBJSFRUUENvb2tpZVN0b3JhZ2UuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJSFRUUENvb2tpZVN0b3JhZ2UuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFEMTI0ODQxRTczNEFFMzAwMkIyODIwIC8qIFdL
SFRUUENvb2tpZVN0b3JhZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tI
VFRQQ29va2llU3RvcmFnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MUQxMjQ4
NTFFNzM0QUUzMDAyQjI4MjAgLyogV0tIVFRQQ29va2llU3RvcmFnZS5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLSFRUUENvb2tpZVN0b3JhZ2UubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxRDEyNDg2MUU3MzRBRTMwMDJCMjgyMCAvKiBXS0hU
VFBDb29raWVTdG9yYWdlSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV0tIVFRQQ29va2llU3RvcmFnZUludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTUxRDEzMDRGMTM4MkVBQzAwMDM1MUVERCAvKiBTZWNJdGVtUmVxdWVzdERhdGEuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2VjSXRlbVJlcXVlc3REYXRh
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFEMTMwNTAxMzgyRUFDMDAwMzUx
RUREIC8qIFNlY0l0ZW1SZXF1ZXN0RGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTZWNJdGVtUmVxdWVzdERhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NTFEMTMwNTExMzgyRUFDMDAwMzUxRUREIC8qIFNlY0l0ZW1SZXNwb25zZURhdGEuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2VjSXRlbVJlc3BvbnNlRGF0YS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01NTQ0LDYgKzU1NTIsOSBAQAogCQkJCTFB
NEQ2NjQ5MThBMzAzMEUwMEQ4MkUyMSAvKiBXS0ZyYW1lSW5mby5tbSAqLywKIAkJCQkyREY5RUVF
NzFBNzgyNDU1MDBCNkNGQkUgLyogV0tGcmFtZUluZm9JbnRlcm5hbC5oICovLAogCQkJCTFBNkZB
MjFEMUJEMDQzNUIwMEFBQTY1MCAvKiBXS0ZyYW1lSW5mb1ByaXZhdGUuaCAqLywKKwkJCQk1MUQx
MjQ4NDFFNzM0QUUzMDAyQjI4MjAgLyogV0tIVFRQQ29va2llU3RvcmFnZS5oICovLAorCQkJCTUx
RDEyNDg1MUU3MzRBRTMwMDJCMjgyMCAvKiBXS0hUVFBDb29raWVTdG9yYWdlLm1tICovLAorCQkJ
CTUxRDEyNDg2MUU3MzRBRTMwMDJCMjgyMCAvKiBXS0hUVFBDb29raWVTdG9yYWdlSW50ZXJuYWwu
aCAqLywKIAkJCQkxQTQyMkY4QTE4QjI5QjU0MDBEOENEOTYgLyogV0tIaXN0b3J5RGVsZWdhdGVQ
cml2YXRlLmggKi8sCiAJCQkJMUFCNDBFRTMxQkY2NzdFMzAwQkE4MUJFIC8qIFdLTWVudUl0ZW1J
ZGVudGlmaWVycy5tbSAqLywKIAkJCQkxQUI0MEVFNDFCRjY3N0UzMDBCQTgxQkUgLyogV0tNZW51
SXRlbUlkZW50aWZpZXJzUHJpdmF0ZS5oICovLApAQCAtNjczMiw2ICs2NzQzLDggQEAKIAkJCQky
REFCQTc3NTFBODJCNDIxMDBFRjBGMUEgLyogQVBJSGlzdG9yeUNsaWVudC5oICovLAogCQkJCTkz
QTg4QjQyMUJDODgyOEMwMEFCQTVDMiAvKiBBUElIaXRUZXN0UmVzdWx0LmNwcCAqLywKIAkJCQk5
M0E4OEI0MzFCQzg4MjhDMDBBQkE1QzIgLyogQVBJSGl0VGVzdFJlc3VsdC5oICovLAorCQkJCTUx
RDEyNDgyMUU3MzRBQzgwMDJCMjgyMCAvKiBBUElIVFRQQ29va2llU3RvcmFnZS5jcHAgKi8sCisJ
CQkJNTFEMTI0ODMxRTczNEFDODAwMkIyODIwIC8qIEFQSUhUVFBDb29raWVTdG9yYWdlLmggKi8s
CiAJCQkJNTE0M0IyNjExREREMERBMDAwMTRGQUM2IC8qIEFQSUljb25Mb2FkaW5nQ2xpZW50Lmgg
Ki8sCiAJCQkJN0NFNEQyMDYxQTQ2Nzc1NzAwQzdGMTUyIC8qIEFQSUxlZ2FjeUNvbnRleHRIaXN0
b3J5Q2xpZW50LmggKi8sCiAJCQkJMUEyNDY0RjIxODkxRTQ1MTAwMjM0QzVCIC8qIEFQSUxvYWRl
ckNsaWVudC5oICovLApAQCAtODUxNSw2ICs4NTI4LDcgQEAKIAkJCQk1MTQxMjk5NDFDNjQyOEJC
MDA1OUU3MTQgLyogV2ViSURCQ29ubmVjdGlvblRvU2VydmVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk1MTA1MjM3NDFDNzNEMzhCMDA3OTkzQ0IgLyogV2ViSURCQ29ubmVjdGlvblRvU2VydmVyTWVz
c2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDQ0Y2QUJEMTJDOTFFRjkwMDhGOUMzNSAvKiBX
ZWJJbWFnZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTFEMTI0OTkxRTc2M0MwMTAwMkIyODIwIC8q
IFdLSFRUUENvb2tpZVN0b3JhZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTFDOEUyODIwMTI3NUQx
NTQwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMDMyRDgy
MTBGNDM3OEQwMDU4QzE1QSAvKiBXZWJJbnNwZWN0b3JDbGllbnQuaCBpbiBIZWFkZXJzICovLAog
CQkJCUE1NUJBODM1MUJBM0U3MEEwMDdDRDMzRCAvKiBXZWJJbnNwZWN0b3JGcm9udGVuZEFQSURp
c3BhdGNoZXIuaCBpbiBIZWFkZXJzICovLApAQCAtOTc2Nyw2ICs5NzgxLDcgQEAKIAkJCQkxQTZG
QkEyQjExRTY4NjI3MDBEQjEzNzEgLyogTmV0c2NhcGVCcm93c2VyRnVuY3MuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMUE2RkJEMjkxMUU2OUJDMjAwREIxMzcxIC8qIE5ldHNjYXBlUGx1Z2luLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTFBRTVCN0ZCMTFFN0FFRDIwMEJBNjc2NyAvKiBOZXRzY2Fw
ZVBsdWdpbk1hYy5tbSBpbiBTb3VyY2VzICovLAorCQkJCTUxRDEyNDkyMUU3NEJGNDgwMDJCMjgy
MCAvKiBXS0hUVFBDb29raWVTdG9yYWdlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE0QTlDNTUx
MkI4MTZDRjAwOEZFOTg0IC8qIE5ldHNjYXBlUGx1Z2luTW9kdWxlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTgzOUEyRjMxMUUyMDY3NDUwMDM5MDU3RSAvKiBIaWdoUGVyZm9ybWFuY2VHcmFwaGlj
c1VzYWdlU2FtcGxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTRBOUM5QTEyQjgyMUNEMDA4
RkU5ODQgLyogTmV0c2NhcGVQbHVnaW5Nb2R1bGVNYWMubW0gaW4gU291cmNlcyAqLywKQEAgLTk3
ODUsNiArOTgwMCw3IEBACiAJCQkJODMxRUVCQkUxQkQ4NUM0MzAwQkI2NEMzIC8qIE5ldHdvcmtD
YWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4MzJBRTI1MzFCRTJF
OENEMDBGQUFFMTAgLyogTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdlci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk4M0JEQ0NCOTFBQzVGREI2MDAzRjY0NDEgLyogTmV0d29ya0NhY2hl
U3RhdGlzdGljcy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MUQxMjQ5MTFFNzRCRjNDMDAyQjI4
MjAgLyogQVBJSFRUUENvb2tpZVN0b3JhZ2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTQ0MzZF
RDAxQTBEMDQwQjAwRUFEMjA0IC8qIE5ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJODMxMDQyOEMxQkQ2QjY2RjAwQTcxNUU0IC8qIE5ldHdvcmtDYWNoZVN1YnJlc291
cmNlc0VudHJ5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUzMDI1ODNEMURDQkJEMjIwMERBODlD
MiAvKiBOZXR3b3JrQ2FwdHVyZUV2ZW50LmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIuY3BwIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIuY3BwCmlu
ZGV4IDllMjFmNzhjY2RiYjE4MjE3OTQyNTUzZjlmZTBmMWRkNzA0MTMzODQuLjc1NDNhMjlkOGJl
YjhjZWEzOTI2NjIxNmE2MDA4YzU4NjIzNGVmMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5jcHAKQEAgLTcyLDIyICs3
Miw2NCBAQCB2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZShT
ZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbgogICAgICAgICBXZWJDb3JlOjpkZWxldGVD
b29raWVzRm9ySG9zdG5hbWVzKCpzdG9yYWdlU2Vzc2lvbiwgeyBob3N0bmFtZSB9KTsKIH0KIAor
CiB2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmRlbGV0ZUFsbENvb2tpZXMoU2Vzc2lvbklEIHNlc3Np
b25JRCkKIHsKICAgICBpZiAoYXV0byogc3RvcmFnZVNlc3Npb24gPSBOZXR3b3JrU3RvcmFnZVNl
c3Npb246OnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCiAgICAgICAgIFdlYkNvcmU6OmRlbGV0
ZUFsbENvb2tpZXMoKnN0b3JhZ2VTZXNzaW9uKTsKIH0KIAotdm9pZCBXZWJDb29raWVNYW5hZ2Vy
OjpkZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZShTZXNzaW9uSUQgc2Vzc2lvbklELCBzdGQ6
OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IHRpbWUpCit2b2lkIFdlYkNvb2tpZU1h
bmFnZXI6OmRlbGV0ZUNvb2tpZShTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBDb29raWUmIGNv
b2tpZSwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3sKKyAgICBpZiAoYXV0byogc3RvcmFnZVNlc3Np
b24gPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCisg
ICAgICAgIHN0b3JhZ2VTZXNzaW9uLT5kZWxldGVDb29raWUoY29va2llKTsKKworICAgIG1fcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlclByb3h5OjpEaWREZWxldGVDb29r
aWVzKGNhbGxiYWNrSUQpLCAwKTsKK30KKwordm9pZCBXZWJDb29raWVNYW5hZ2VyOjpkZWxldGVB
bGxDb29raWVzTW9kaWZpZWRTaW5jZShTZXNzaW9uSUQgc2Vzc2lvbklELCBzdGQ6OmNocm9ubzo6
c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IHRpbWUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiB7CiAg
ICAgaWYgKGF1dG8qIHN0b3JhZ2VTZXNzaW9uID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9y
YWdlU2Vzc2lvbihzZXNzaW9uSUQpKQogICAgICAgICBXZWJDb3JlOjpkZWxldGVBbGxDb29raWVz
TW9kaWZpZWRTaW5jZSgqc3RvcmFnZVNlc3Npb24sIHRpbWUpOworCisgICAgaWYgKGNhbGxiYWNr
SUQpCisgICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlclBy
b3h5OjpEaWREZWxldGVDb29raWVzKGNhbGxiYWNrSUQpLCAwKTsKK30KKwordm9pZCBXZWJDb29r
aWVNYW5hZ2VyOjpnZXRBbGxDb29raWVzKFNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IGNh
bGxiYWNrSUQpCit7CisgICAgVmVjdG9yPENvb2tpZT4gY29va2llczsKKyAgICBpZiAoYXV0byog
c3RvcmFnZVNlc3Npb24gPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKHNl
c3Npb25JRCkpCisgICAgICAgIGNvb2tpZXMgPSBzdG9yYWdlU2Vzc2lvbi0+Z2V0QWxsQ29va2ll
cygpOworCisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyUHJv
eHk6OkRpZEdldENvb2tpZXMoY29va2llcywgY2FsbGJhY2tJRCksIDApOwogfQogCi12b2lkIFdl
YkNvb2tpZU1hbmFnZXI6OnNldENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
Y29uc3QgVmVjdG9yPENvb2tpZT4mIGNvb2tpZXMsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBVUkwm
IG1haW5Eb2N1bWVudFVSTCkKK3ZvaWQgV2ViQ29va2llTWFuYWdlcjo6Z2V0Q29va2llcyhTZXNz
aW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIHVybCwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3sK
KyAgICBWZWN0b3I8Q29va2llPiBjb29raWVzOworICAgIGlmIChhdXRvKiBzdG9yYWdlU2Vzc2lv
biA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKKyAg
ICAgICAgY29va2llcyA9IHN0b3JhZ2VTZXNzaW9uLT5nZXRDb29raWVzKHVybCk7CisKKyAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6RGlkR2V0Q29v
a2llcyhjb29raWVzLCBjYWxsYmFja0lEKSwgMCk7Cit9CisKK3ZvaWQgV2ViQ29va2llTWFuYWdl
cjo6c2V0Q29va2llKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IENvb2tpZSYg
Y29va2llLCB1aW50NjRfdCBjYWxsYmFja0lEKQoreworICAgIGlmIChhdXRvKiBzdG9yYWdlU2Vz
c2lvbiA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkK
KyAgICAgICAgc3RvcmFnZVNlc3Npb24tPnNldENvb2tpZShjb29raWUpOworCisgICAgaWYgKGNh
bGxiYWNrSUQpCisgICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViQ29va2llTWFu
YWdlclByb3h5OjpEaWRTZXRDb29raWVzKGNhbGxiYWNrSUQpLCAwKTsKK30KKwordm9pZCBXZWJD
b29raWVNYW5hZ2VyOjpzZXRDb29raWVzKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNv
bnN0IFZlY3RvcjxDb29raWU+JiBjb29raWVzLCBjb25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBt
YWluRG9jdW1lbnRVUkwsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiB7CiAgICAgaWYgKGF1dG8qIHN0
b3JhZ2VTZXNzaW9uID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNz
aW9uSUQpKQogICAgICAgICBzdG9yYWdlU2Vzc2lvbi0+c2V0Q29va2llcyhjb29raWVzLCB1cmws
IG1haW5Eb2N1bWVudFVSTCk7CisKKyAgICBpZiAoY2FsbGJhY2tJRCkKKyAgICAgICAgbV9wcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OkRpZFNldENvb2tpZXMo
Y2FsbGJhY2tJRCksIDApOwogfQogCiB2b2lkIFdlYkNvb2tpZU1hbmFnZXI6Om5vdGlmeUNvb2tp
ZXNEaWRDaGFuZ2UoU2Vzc2lvbklEIHNlc3Npb25JRCkKQEAgLTExMSw5ICsxNTMsMTIgQEAgdm9p
ZCBXZWJDb29raWVNYW5hZ2VyOjpzdG9wT2JzZXJ2aW5nQ29va2llQ2hhbmdlcyhTZXNzaW9uSUQg
c2Vzc2lvbklEKQogICAgICAgICBXZWJDb3JlOjpzdG9wT2JzZXJ2aW5nQ29va2llQ2hhbmdlcygq
c3RvcmFnZVNlc3Npb24pOwogfQogCi12b2lkIFdlYkNvb2tpZU1hbmFnZXI6OnNldEhUVFBDb29r
aWVBY2NlcHRQb2xpY3koSFRUUENvb2tpZUFjY2VwdFBvbGljeSBwb2xpY3kpCit2b2lkIFdlYkNv
b2tpZU1hbmFnZXI6OnNldEhUVFBDb29raWVBY2NlcHRQb2xpY3koSFRUUENvb2tpZUFjY2VwdFBv
bGljeSBwb2xpY3ksIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiB7CiAgICAgcGxhdGZvcm1TZXRIVFRQ
Q29va2llQWNjZXB0UG9saWN5KHBvbGljeSk7CisKKyAgICBpZiAoY2FsbGJhY2tJRCkKKyAgICAg
ICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OkRpZFNl
dEhUVFBDb29raWVBY2NlcHRQb2xpY3koY2FsbGJhY2tJRCksIDApOwogfQogCiB2b2lkIFdlYkNv
b2tpZU1hbmFnZXI6OmdldEhUVFBDb29raWVBY2NlcHRQb2xpY3kodWludDY0X3QgY2FsbGJhY2tJ
RCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2llcy9XZWJDb29r
aWVNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2ll
TWFuYWdlci5oCmluZGV4IGRiMjdkMjBhYWRkODdkODg1MzZkYTUwNzFlNTlmMzI4OTExNTE4MDIu
LjgxODc1ZGFmYjc1OGZjZDYzOTkwODUxZGJjZDM1MmVlNjQwNTU2MWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmgKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIuaApAQCAt
NTYsNyArNTYsOCBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgY29uc3QgY2hhciogc3VwcGxlbWVu
dE5hbWUoKTsKIAotICAgIHZvaWQgc2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShIVFRQQ29va2ll
QWNjZXB0UG9saWN5KTsKKyAgICB2b2lkIHNldEhUVFBDb29raWVBY2NlcHRQb2xpY3koSFRUUENv
b2tpZUFjY2VwdFBvbGljeSwgdWludDY0X3QgY2FsbGJhY2tJRCk7CisKICNpZiBVU0UoU09VUCkK
ICAgICB2b2lkIHNldENvb2tpZVBlcnNpc3RlbnRTdG9yYWdlKGNvbnN0IFN0cmluZyYgc3RvcmFn
ZVBhdGgsIHVpbnQzMl90IHN0b3JhZ2VUeXBlKTsKICNlbmRpZgpAQCAtNjgsMTEgKzY5LDE2IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJ
UEM6OkRlY29kZXImKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZ2V0SG9zdG5hbWVzV2l0aENvb2tp
ZXMoV2ViQ29yZTo6U2Vzc2lvbklELCB1aW50NjRfdCBjYWxsYmFja0lEKTsKKworICAgIHZvaWQg
ZGVsZXRlQ29va2llKFdlYkNvcmU6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6Q29va2llJiwg
dWludDY0X3QgY2FsbGJhY2tJRCk7CiAgICAgdm9pZCBkZWxldGVDb29raWVzRm9ySG9zdG5hbWUo
V2ViQ29yZTo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIGRlbGV0ZUFsbENv
b2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklEKTsKLSAgICB2b2lkIGRlbGV0ZUFsbENvb2tpZXNNb2Rp
ZmllZFNpbmNlKFdlYkNvcmU6OlNlc3Npb25JRCwgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6
dGltZV9wb2ludCk7CisgICAgdm9pZCBkZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZShXZWJD
b3JlOjpTZXNzaW9uSUQsIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQsIHVp
bnQ2NF90IGNhbGxiYWNrSUQpOwogCi0gICAgdm9pZCBzZXRDb29raWVzKFdlYkNvcmU6OlNlc3Np
b25JRCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mLCBjb25zdCBXZWJDb3JlOjpVUkwm
LCBjb25zdCBXZWJDb3JlOjpVUkwmIG1haW5Eb2N1bWVudFVSTCk7CisgICAgdm9pZCBzZXRDb29r
aWUoV2ViQ29yZTo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpDb29raWUmLCB1aW50NjRfdCBj
YWxsYmFja0lEKTsKKyAgICB2b2lkIHNldENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklELCBjb25z
dCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFdl
YkNvcmU6OlVSTCYgbWFpbkRvY3VtZW50VVJMLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICB2
b2lkIGdldEFsbENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklELCB1aW50NjRfdCBjYWxsYmFja0lE
KTsKKyAgICB2b2lkIGdldENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3Jl
OjpVUkwmLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKIAogICAgIHZvaWQgcGxhdGZvcm1TZXRIVFRQ
Q29va2llQWNjZXB0UG9saWN5KEhUVFBDb29raWVBY2NlcHRQb2xpY3kpOwogICAgIHZvaWQgZ2V0
SFRUUENvb2tpZUFjY2VwdFBvbGljeSh1aW50NjRfdCBjYWxsYmFja0lEKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLm1lc3Nh
Z2VzLmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFn
ZXIubWVzc2FnZXMuaW4KaW5kZXggMDBlN2I2NWI3NDkwODI2YzViYjM5YmQ3MjZlOWMyZDNiYTUz
ZjA1Ni4uMGE1ODU1NWVjNmE5Y2M0OGY5ZDhhOTQ3NWNhNjI0OGMzZWQ1YjM0NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIubWVz
c2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tp
ZU1hbmFnZXIubWVzc2FnZXMuaW4KQEAgLTI3LDExICsyNywxNSBAQAogICAgIHZvaWQgR2V0SG9z
dG5hbWVzV2l0aENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3Qg
Y2FsbGJhY2tJRCkKICAgICB2b2lkIERlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZShXZWJDb3JlOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBTdHJpbmcgaG9zdG5hbWUpCiAgICAgdm9pZCBEZWxldGVBbGxD
b29raWVzKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQpCi0gICAgdm9pZCBEZWxldGVBbGxD
b29raWVzTW9kaWZpZWRTaW5jZShXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBzdGQ6OmNo
cm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IHRpbWUpCiAKLSAgICB2b2lkIFNldENvb2tp
ZXMoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4g
Y29va2llcywgV2ViQ29yZTo6VVJMIHVybCwgV2ViQ29yZTo6VVJMIG1haW5Eb2N1bWVudFVSTCk7
CisgICAgdm9pZCBTZXRDb29raWUoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgc3RydWN0
IFdlYkNvcmU6OkNvb2tpZSBjb29raWUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCisgICAgdm9pZCBT
ZXRDb29raWVzKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFZlY3RvcjxXZWJDb3JlOjpD
b29raWU+IGNvb2tpZXMsIFdlYkNvcmU6OlVSTCB1cmwsIFdlYkNvcmU6OlVSTCBtYWluRG9jdW1l
bnRVUkwsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCisgICAgdm9pZCBHZXRBbGxDb29raWVzKFdlYkNv
cmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCisgICAgdm9pZCBH
ZXRDb29raWVzKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlVSTCB1cmws
IHVpbnQ2NF90IGNhbGxiYWNrSUQpCisgICAgdm9pZCBEZWxldGVDb29raWUoV2ViQ29yZTo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgc3RydWN0IFdlYkNvcmU6OkNvb2tpZSBjb29raWUsIHVpbnQ2NF90
IGNhbGxiYWNrSUQpCisgICAgdm9pZCBEZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZShXZWJD
b3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1l
X3BvaW50IHRpbWUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAKLSAgICB2b2lkIFNldEhUVFBDb29r
aWVBY2NlcHRQb2xpY3kodWludDMyX3QgcG9saWN5KQorICAgIHZvaWQgU2V0SFRUUENvb2tpZUFj
Y2VwdFBvbGljeSh1aW50MzJfdCBwb2xpY3ksIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAgICAgdm9p
ZCBHZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAgICAgCiAg
ICAgdm9pZCBTdGFydE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMoV2ViQ29yZTo6U2Vzc2lvbklEIHNl
c3Npb25JRCkKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwpp
bmRleCA4MGRhODIyOGRjYTc3ZTliOTM4NmQzOWViZTVjOGY1NDJjZjNjYjlkLi5mZmM0YTlmMGMw
ZjM4NDE3ZmM2NDZhMWZkMWJmY2Y1MjY0OGU2OWY3IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VM
b2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTctMDMtMTMgIEJy
YWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIFdLV2ViVmlldyBwcm92
aWRlcyBubyBhY2Nlc3MgdG8gY29va2llcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE0MDE5MQorCisgICAgICAgIFJldmlld2VkIGJ5IFRpbSBIb3J0
b24uCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKwogMjAxNy0wMy0xMSAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhh
bGxhd2FAYXBwbGUuY29tPgogCiAgICAgICAgIEVuYWJsZSBhc3luYyBpbWFnZSBkZWNvZGluZyBm
b3IgbGFyZ2UgaW1hZ2VzCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJL
aXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDc2MDFkYmUwNjkyYzAw
MDhlNmI3ZGJhYTNmYTAwMTYzNDVkMjEyZjcuLjJkZjM0NTYyYjQ5YmE3MmQzODAxYmUxYzYwN2Qw
NGFjODM2YTUwYTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQ
SS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNTIsNiArMTUyLDcgQEAK
IAkJNTFCQ0VFNEYxQzg0RjUzQjAwNDJDODJFIC8qIEluZGV4ZWREQk11bHRpUHJvY2Vzcy0yLmh0
bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTFCQ0VFNEQxQzg0RjUyQzAwNDJDODJFIC8qIEluZGV4ZWREQk11bHRpUHJvY2Vzcy0yLmh0bWwg
Ki87IH07CiAJCTUxQ0QxQzZDMUIzOENFNDMwMDE0MkNBNSAvKiBNb2RhbEFsZXJ0cy5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQ0QxQzZBMUIzOENF
MzYwMDE0MkNBNSAvKiBNb2RhbEFsZXJ0cy5tbSAqLzsgfTsKIAkJNTFDRDFDNzIxQjM4RDQ4NDAw
MTQyQ0E1IC8qIG1vZGFsLWFsZXJ0cy1pbi1uZXctYWJvdXQtYmxhbmstd2luZG93Lmh0bWwgaW4g
Q29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFDRDFD
NzExQjM4RDQ4NDAwMTQyQ0E1IC8qIG1vZGFsLWFsZXJ0cy1pbi1uZXctYWJvdXQtYmxhbmstd2lu
ZG93Lmh0bWwgKi87IH07CisJCTUxRDEyNDk4MUU3NjNCMDIwMDJCMjgyMCAvKiBXS0hUVFBDb29r
aWVTdG9yYWdlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTFEMTI0OTcxRTc2M0FGODAwMkIyODIwIC8qIFdLSFRUUENvb2tpZVN0b3JhZ2UubW0gKi87
IH07CiAJCTUxRTVDNzAyMTkxOUMzQjIwMEQ4QjNFMSAvKiBzaW1wbGUyLmh0bWwgaW4gQ29weSBS
ZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFFNzgwMzYxOTE5
QUZGODAwMTgyOUEyIC8qIHNpbXBsZTIuaHRtbCAqLzsgfTsKIAkJNTFFNUM3MDMxOTE5QzNCMjAw
RDhCM0UxIC8qIHNpbXBsZTMuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MUU3ODAzNzE5MTlBRkY4MDAxODI5QTIgLyogc2ltcGxlMy5o
dG1sICovOyB9OwogCQk1MUU2QTg5NDFEMkYxQzBBMDBDMDA0QjYgLyogTG9jYWxTdG9yYWdlQ2xl
YXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUU2
QTg5MjFEMkYxQkVDMDBDMDA0QjYgLyogTG9jYWxTdG9yYWdlQ2xlYXIubW0gKi87IH07CkBAIC0x
MDQ4LDYgKzEwNDksNyBAQAogCQk1MUNCNEFENzFCM0EwNzlDMDBDMUIxQzYgLyogTW9kYWxBbGVy
dHNTUEkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTW9kYWxBbGVy
dHNTUEkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUNEMUM2QTFCMzhDRTM2
MDAxNDJDQTUgLyogTW9kYWxBbGVydHMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBNb2RhbEFsZXJ0cy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NTFDRDFDNzExQjM4RDQ4NDAwMTQyQ0E1IC8qIG1vZGFsLWFsZXJ0cy1pbi1uZXctYWJvdXQtYmxh
bmstd2luZG93Lmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAibW9kYWwtYWxlcnRzLWluLW5ldy1hYm91dC1ibGFu
ay13aW5kb3cuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxRDEyNDk3MUU3
NjNBRjgwMDJCMjgyMCAvKiBXS0hUVFBDb29raWVTdG9yYWdlLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tIVFRQQ29va2llU3RvcmFnZS5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFFNUM3MDQxOTE5RUE1RjAwRDhCM0UxIC8qIFNob3VsZEtl
ZXBDdXJyZW50QmFja0ZvcndhcmRMaXN0SXRlbUluTGlzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBTaG91bGRLZWVwQ3VycmVudEJhY2tGb3J3YXJkTGlzdEl0ZW1J
bkxpc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUU2QTg5MjFEMkYxQkVD
MDBDMDA0QjYgLyogTG9jYWxTdG9yYWdlQ2xlYXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBMb2NhbFN0b3JhZ2VDbGVhci5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTFFNkE4OTUxRDJGMUM3NzAwQzAwNEI2IC8qIExvY2FsU3RvcmFnZUNsZWFy
Lmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSBMb2NhbFN0b3JhZ2VDbGVhci5odG1s
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTY0OSw2ICsxNjUxLDcgQEAKIAkJCQk1
MTIwQzgzQzFFNjc1MDc5MDAyNUIyNTAgLyogV2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhzLm1t
ICovLAogCQkJCTVDOUU1Njg0MURGOTE0M0QwMEM5RUUzMyAvKiBXZWJzaXRlUG9saWNpZXMubW0g
Ki8sCiAJCQkJMUY4MzU3MUExRDNGRkIwRTAwRTM5NjdCIC8qIFdLQmFja0ZvcndhcmRMaXN0Lm1t
ICovLAorCQkJCTUxRDEyNDk3MUU3NjNBRjgwMDJCMjgyMCAvKiBXS0hUVFBDb29raWVTdG9yYWdl
Lm1tICovLAogCQkJCTM3NUUwRTE1MUQ2NjY3NDQwMEVGRUMyQyAvKiBXS05TTnVtYmVyLm1tICov
LAogCQkJCTM3QjQ3RTJFMUQ2NEU3Q0EwMDVGNEVGRiAvKiBXS09iamVjdC5tbSAqLywKIAkJCQky
RDAwMDY1RDFDMUY1ODk0MDA4OEU2QTcgLyogV0tQREZWaWV3UmVzaXplQ3Jhc2gubW0gKi8sCkBA
IC0yNzI5LDYgKzI3MzIsNyBAQAogCQkJCTdDQ0U3RUY0MUE0MTFBRTYwMDQ0N0M0QyAvKiBGaW5k
TWF0Y2hlcy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDODNFMDQwMUQwQTYzRTMwMEZFQkNGMyAv
KiBGaXJzdFJlc3BvbmRlclNjcm9sbGluZ1Bvc2l0aW9uLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
N0M4M0UwQkMxRDBBNjUwNzAwRkVCQ0YzIC8qIEZpeGVkTGF5b3V0U2l6ZS5tbSBpbiBTb3VyY2Vz
ICovLAorCQkJCTUxRDEyNDk4MUU3NjNCMDIwMDJCMjgyMCAvKiBXS0hUVFBDb29raWVTdG9yYWdl
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFRjUxQTQxMUFFNjAwNDQ3QzRDIC8qIEZvcmNl
UmVwYWludC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzN0I0N0UzMDFENjRFN0NBMDA1RjRFRkYg
LyogV0tPYmplY3QubW0gaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0VDMDFBNDExQTdFMDA0NDdD
NEMgLyogRnJhZ21lbnROYXZpZ2F0aW9uLm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9XS0hUVFBDb29raWVTdG9yYWdl
Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvV0tIVFRQQ29va2ll
U3RvcmFnZS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNWFlNDdmZDViNGYyZmQ2NDU3NzhjYTc1MzYyOTI0NWNm
ZDcyZGRmCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXQyQ29jb2EvV0tIVFRQQ29va2llU3RvcmFnZS5tbQpAQCAtMCwwICsxLDExOSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMu
aCIKKyNpbXBvcnQgPFdlYktpdC9XS0ZvdW5kYXRpb24uaD4KKyNpbXBvcnQgPFdlYktpdC9XS0hU
VFBDb29raWVTdG9yYWdlLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tXZWJzaXRlRGF0YVN0b3JlUHJp
dmF0ZS5oPgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorCisjaWYgV0tfQVBJX0VOQUJMRUQK
Kworc3RhdGljIGJvb2wgZ290RmxhZzsKKworVEVTVChXZWJLaXQyLCBXS0hUVFBDb29raWVTdG9y
YWdlKQoreworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGlu
aXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCldKTsKKyAgICBbd2ViVmlldyBs
b2FkSFRNTFN0cmluZzpAIk9oIGhlbGxvIiBiYXNlVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAi
aHR0cDovL3dlYmtpdC5vcmciXV07CisKKyAgICBSZXRhaW5QdHI8V0tIVFRQQ29va2llU3RvcmFn
ZT4gY29va2llU3RvcmFnZSA9IFtXS1dlYnNpdGVEYXRhU3RvcmUgZGVmYXVsdERhdGFTdG9yZV0u
X2h0dHBDb29raWVTdG9yYWdlOworCisgICAgTlNBcnJheTxOU0hUVFBDb29raWUgKj4gKmNvb2tp
ZXMgPSBuaWw7CisgICAgW2Nvb2tpZVN0b3JhZ2UgZmV0Y2hDb29raWVzOltjb29raWVzUHRyID0g
JmNvb2tpZXNdKE5TQXJyYXk8TlNIVFRQQ29va2llICo+ICpuc0Nvb2tpZXMpIHsKKyAgICAgICAg
KmNvb2tpZXNQdHIgPSBbbnNDb29raWVzIHJldGFpbl07CisgICAgICAgIGdvdEZsYWcgPSB0cnVl
OworICAgIH1dOworCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZnb3RGbGFnKTsKKwor
ICAgIEFTU0VSVF9FUShjb29raWVzLmNvdW50LCAwdSk7CisgICAgW2Nvb2tpZXMgcmVsZWFzZV07
CisKKyAgICBnb3RGbGFnID0gZmFsc2U7CisKKyAgICBSZXRhaW5QdHI8TlNIVFRQQ29va2llPiBj
b29raWUxID0gW05TSFRUUENvb2tpZSBjb29raWVXaXRoUHJvcGVydGllczpAeworICAgICAgICBO
U0hUVFBDb29raWVQYXRoOiBAIi8iLAorICAgICAgICBOU0hUVFBDb29raWVOYW1lOiBAIkNvb2tp
ZU5hbWUiLAorICAgICAgICBOU0hUVFBDb29raWVWYWx1ZTogQCJDb29raWVWYWx1ZSIsCisgICAg
ICAgIE5TSFRUUENvb2tpZURvbWFpbjogQCIud3d3LndlYmtpdC5vcmciLAorICAgICAgICBOU0hU
VFBDb29raWVTZWN1cmU6IEAiVFJVRSIsCisgICAgICAgIE5TSFRUUENvb2tpZURpc2NhcmQ6IEAi
VFJVRSIsCisgICAgICAgIE5TSFRUUENvb2tpZU1heGltdW1BZ2U6IEAiMTAwMDAiLAorICAgIH1d
OworCisgICAgUmV0YWluUHRyPE5TSFRUUENvb2tpZT4gY29va2llMiA9IFtOU0hUVFBDb29raWUg
Y29va2llV2l0aFByb3BlcnRpZXM6QHsKKyAgICAgICAgTlNIVFRQQ29va2llUGF0aDogQCIvcGF0
aCIsCisgICAgICAgIE5TSFRUUENvb2tpZU5hbWU6IEAiT3RoZXJDb29raWVOYW1lIiwKKyAgICAg
ICAgTlNIVFRQQ29va2llVmFsdWU6IEAiT3RoZXJDb29raWVWYWx1ZSIsCisgICAgICAgIE5TSFRU
UENvb2tpZURvbWFpbjogQCIud3d3LnczYy5vcmciLAorICAgICAgICBOU0hUVFBDb29raWVNYXhp
bXVtQWdlOiBAIjEwMDAwIiwKKyAgICB9XTsKKworICAgIFtjb29raWVTdG9yYWdlIHNldENvb2tp
ZTpjb29raWUxLmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOltdKCl7CisgICAgICAgIGdvdEZsYWcg
PSB0cnVlOworICAgIH1dOworCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZnb3RGbGFn
KTsKKyAgICBnb3RGbGFnID0gZmFsc2U7CisKKyAgICBbY29va2llU3RvcmFnZSBzZXRDb29raWU6
Y29va2llMi5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpbXSgpeworICAgICAgICBnb3RGbGFnID0g
dHJ1ZTsKKyAgICB9XTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZ290RmxhZyk7
CisgICAgZ290RmxhZyA9IGZhbHNlOworCisgICAgW2Nvb2tpZVN0b3JhZ2UgZmV0Y2hDb29raWVz
Oltjb29raWVzUHRyID0gJmNvb2tpZXNdKE5TQXJyYXk8TlNIVFRQQ29va2llICo+ICpuc0Nvb2tp
ZXMpIHsKKyAgICAgICAgKmNvb2tpZXNQdHIgPSBbbnNDb29raWVzIHJldGFpbl07CisgICAgICAg
IGdvdEZsYWcgPSB0cnVlOworICAgIH1dOworCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVu
KCZnb3RGbGFnKTsKKworICAgIEFTU0VSVF9FUShjb29raWVzLmNvdW50LCAydSk7CisKKyAgICBm
b3IgKE5TSFRUUENvb2tpZSAqY29va2llIDogY29va2llcykgeworICAgICAgICBpZiAoW2Nvb2tp
ZS5uYW1lIGlzRXF1YWw6QCJDb29raWVOYW1lIl0pIHsKKyAgICAgICAgICAgIEFTU0VSVF9UUlVF
KFtjb29raWUxLmdldCgpLnBhdGggaXNFcXVhbFRvU3RyaW5nOmNvb2tpZS5wYXRoXSk7CisgICAg
ICAgICAgICBBU1NFUlRfVFJVRShbY29va2llMS5nZXQoKS52YWx1ZSBpc0VxdWFsVG9TdHJpbmc6
Y29va2llLnZhbHVlXSk7CisgICAgICAgICAgICBBU1NFUlRfVFJVRShbY29va2llMS5nZXQoKS5k
b21haW4gaXNFcXVhbFRvU3RyaW5nOmNvb2tpZS5kb21haW5dKTsKKyAgICAgICAgICAgIEFTU0VS
VF9UUlVFKGNvb2tpZTEuZ2V0KCkuc2VjdXJlKTsKKyAgICAgICAgICAgIEFTU0VSVF9UUlVFKGNv
b2tpZTEuZ2V0KCkuc2Vzc2lvbk9ubHkpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
QVNTRVJUX1RSVUUoW2Nvb2tpZTIuZ2V0KCkucGF0aCBpc0VxdWFsVG9TdHJpbmc6Y29va2llLnBh
dGhdKTsKKyAgICAgICAgICAgIEFTU0VSVF9UUlVFKFtjb29raWUyLmdldCgpLnZhbHVlIGlzRXF1
YWxUb1N0cmluZzpjb29raWUudmFsdWVdKTsKKyAgICAgICAgICAgIEFTU0VSVF9UUlVFKFtjb29r
aWUyLmdldCgpLm5hbWUgaXNFcXVhbFRvU3RyaW5nOmNvb2tpZS5uYW1lXSk7CisgICAgICAgICAg
ICBBU1NFUlRfVFJVRShbY29va2llMi5nZXQoKS5kb21haW4gaXNFcXVhbFRvU3RyaW5nOmNvb2tp
ZS5kb21haW5dKTsKKyAgICAgICAgICAgIEFTU0VSVF9GQUxTRShjb29raWUyLmdldCgpLnNlY3Vy
ZSk7CisgICAgICAgICAgICBBU1NFUlRfRkFMU0UoY29va2llMi5nZXQoKS5zZXNzaW9uT25seSk7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICBbY29va2llcyByZWxlYXNlXTsKK30KKworI2VuZGlm
Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>