<?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>191918</bug_id>
          
          <creation_ts>2018-11-22 19:09:21 -0800</creation_ts>
          <short_desc>[Cocoa] Add WKWebView SPI to trigger and remove data detection</short_desc>
          <delta_ts>2018-11-24 13:13:44 -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>WebKit Misc.</component>
          <version>Other</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>aestes</cc>
    
    <cc>bdakin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1481051</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-11-22 19:09:21 -0800</bug_when>
    <thetext>&lt;rdar://problem/36185051&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1481178</commentid>
    <comment_count>1</comment_count>
      <attachid>355532</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-11-23 11:56:37 -0800</bug_when>
    <thetext>Created attachment 355532
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1481180</commentid>
    <comment_count>2</comment_count>
      <attachid>355533</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-11-23 12:05:47 -0800</bug_when>
    <thetext>Created attachment 355533
Fix the GTK build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1481188</commentid>
    <comment_count>3</comment_count>
      <attachid>355533</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2018-11-23 13:13:56 -0800</bug_when>
    <thetext>Comment on attachment 355533
Fix the GTK build

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

&gt; Source/WebKit/ChangeLog:10
&gt; +        `-_removeAllDataDetectedContent:`, to allow internal WebKit clients to run data detection and add links to data

Does it actually remove the data detected *content*? or just the links?

Also, should this just be a side effect of turning Data Detectors off via the existing API??</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1481246</commentid>
    <comment_count>4</comment_count>
      <attachid>355533</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-11-23 21:27:51 -0800</bug_when>
    <thetext>Comment on attachment 355533
Fix the GTK build

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

&gt;&gt; Source/WebKit/ChangeLog:10
&gt;&gt; +        `-_removeAllDataDetectedContent:`, to allow internal WebKit clients to run data detection and add links to data
&gt; 
&gt; Does it actually remove the data detected *content*? or just the links?
&gt; 
&gt; Also, should this just be a side effect of turning Data Detectors off via the existing API??

This just removes links added by data detectors, and resets Frame&apos;s m_dataDetectionResults.

I had considered making this a side effect of turning data detectors on or off, but it seems that this is only exposed on the web view configuration via dataDetectorTypes. IIUC, changes to the configuration aren&apos;t normally propagated to the web view after the web view is already initialized with the configuration.

An alternative is adding an SPI property on either WKWebView or WKPreferences that&apos;s something like _dataDetectorTypes, and we would add or remove data detectors in web content when this property is modified. WDYT?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1481249</commentid>
    <comment_count>5</comment_count>
      <attachid>355533</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2018-11-23 21:45:20 -0800</bug_when>
    <thetext>Comment on attachment 355533
Fix the GTK build

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

&gt;&gt;&gt; Source/WebKit/ChangeLog:10
&gt;&gt;&gt; +        `-_removeAllDataDetectedContent:`, to allow internal WebKit clients to run data detection and add links to data
&gt;&gt; 
&gt;&gt; Does it actually remove the data detected *content*? or just the links?
&gt;&gt; 
&gt;&gt; Also, should this just be a side effect of turning Data Detectors off via the existing API??
&gt; 
&gt; This just removes links added by data detectors, and resets Frame&apos;s m_dataDetectionResults.
&gt; 
&gt; I had considered making this a side effect of turning data detectors on or off, but it seems that this is only exposed on the web view configuration via dataDetectorTypes. IIUC, changes to the configuration aren&apos;t normally propagated to the web view after the web view is already initialized with the configuration.
&gt; 
&gt; An alternative is adding an SPI property on either WKWebView or WKPreferences that&apos;s something like _dataDetectorTypes, and we would add or remove data detectors in web content when this property is modified. WDYT?

Aha, I see. I didn&apos;t realize it was a Configuration thing. No, I don&apos;t think you need to add more dataDetectorTypes equivalents. The API one is good.

In that case the only thing I object to is the word &quot;content&quot; in the method name.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1481251</commentid>
    <comment_count>6</comment_count>
      <attachid>355533</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-11-23 22:06:47 -0800</bug_when>
    <thetext>Comment on attachment 355533
Fix the GTK build

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

&gt;&gt;&gt;&gt; Source/WebKit/ChangeLog:10
&gt;&gt;&gt;&gt; +        `-_removeAllDataDetectedContent:`, to allow internal WebKit clients to run data detection and add links to data
&gt;&gt;&gt; 
&gt;&gt;&gt; Does it actually remove the data detected *content*? or just the links?
&gt;&gt;&gt; 
&gt;&gt;&gt; Also, should this just be a side effect of turning Data Detectors off via the existing API??
&gt;&gt; 
&gt;&gt; This just removes links added by data detectors, and resets Frame&apos;s m_dataDetectionResults.
&gt;&gt; 
&gt;&gt; I had considered making this a side effect of turning data detectors on or off, but it seems that this is only exposed on the web view configuration via dataDetectorTypes. IIUC, changes to the configuration aren&apos;t normally propagated to the web view after the web view is already initialized with the configuration.
&gt;&gt; 
&gt;&gt; An alternative is adding an SPI property on either WKWebView or WKPreferences that&apos;s something like _dataDetectorTypes, and we would add or remove data detectors in web content when this property is modified. WDYT?
&gt; 
&gt; Aha, I see. I didn&apos;t realize it was a Configuration thing. No, I don&apos;t think you need to add more dataDetectorTypes equivalents. The API one is good.
&gt; 
&gt; In that case the only thing I object to is the word &quot;content&quot; in the method name.

Sound good. How about one of: -_removeDataDetectedLinks: or -_removeDataDetectionResults:? Or...perhaps something more general, such as -_resetDataDetection:?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1481252</commentid>
    <comment_count>7</comment_count>
      <attachid>355533</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2018-11-23 22:06:52 -0800</bug_when>
    <thetext>Comment on attachment 355533
Fix the GTK build

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

&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebViewPrivate.h:197
&gt; +- (void)_removeAllDataDetectedContent:(dispatch_block_t)completion WK_API_AVAILABLE(macosx(WK_MAC_TBA), ios(WK_IOS_TBA));

Also, why is one available on both platforms and the other only on iOS?

&gt; Source/WebKit/WebProcess/WebPage/WebPage.cpp:3396
&gt; +void WebPage::removeAllDataDetectedContent(CallbackID callbackID)

Didn&apos;t Alex invent some new thing to replace CallbackID? See https://trac.webkit.org/changeset/237294/webkit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1481255</commentid>
    <comment_count>8</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-11-23 22:08:56 -0800</bug_when>
    <thetext>(In reply to Tim Horton from comment #7)
&gt; Comment on attachment 355533 [details]
&gt; Fix the GTK build
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=355533&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/Cocoa/WKWebViewPrivate.h:197
&gt; &gt; +- (void)_removeAllDataDetectedContent:(dispatch_block_t)completion WK_API_AVAILABLE(macosx(WK_MAC_TBA), ios(WK_IOS_TBA));
&gt; 
&gt; Also, why is one available on both platforms and the other only on iOS?

I first tried to make both available on macOS/iOS, but realized that WKDataDetectorTypes is iOS-only :/

&gt; 
&gt; &gt; Source/WebKit/WebProcess/WebPage/WebPage.cpp:3396
&gt; &gt; +void WebPage::removeAllDataDetectedContent(CallbackID callbackID)
&gt; 
&gt; Didn&apos;t Alex invent some new thing to replace CallbackID? See
&gt; https://trac.webkit.org/changeset/237294/webkit

Nice, I&apos;ll give this a shot!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1481256</commentid>
    <comment_count>9</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2018-11-23 22:09:17 -0800</bug_when>
    <thetext>(In reply to Wenson Hsieh from comment #6)
&gt; Comment on attachment 355533 [details]
&gt; Fix the GTK build
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=355533&amp;action=review
&gt; 
&gt; &gt;&gt;&gt;&gt; Source/WebKit/ChangeLog:10
&gt; &gt;&gt;&gt;&gt; +        `-_removeAllDataDetectedContent:`, to allow internal WebKit clients to run data detection and add links to data
&gt; &gt;&gt;&gt; 
&gt; &gt;&gt;&gt; Does it actually remove the data detected *content*? or just the links?
&gt; &gt;&gt;&gt; 
&gt; &gt;&gt;&gt; Also, should this just be a side effect of turning Data Detectors off via the existing API??
&gt; &gt;&gt; 
&gt; &gt;&gt; This just removes links added by data detectors, and resets Frame&apos;s m_dataDetectionResults.
&gt; &gt;&gt; 
&gt; &gt;&gt; I had considered making this a side effect of turning data detectors on or off, but it seems that this is only exposed on the web view configuration via dataDetectorTypes. IIUC, changes to the configuration aren&apos;t normally propagated to the web view after the web view is already initialized with the configuration.
&gt; &gt;&gt; 
&gt; &gt;&gt; An alternative is adding an SPI property on either WKWebView or WKPreferences that&apos;s something like _dataDetectorTypes, and we would add or remove data detectors in web content when this property is modified. WDYT?
&gt; &gt; 
&gt; &gt; Aha, I see. I didn&apos;t realize it was a Configuration thing. No, I don&apos;t think you need to add more dataDetectorTypes equivalents. The API one is good.
&gt; &gt; 
&gt; &gt; In that case the only thing I object to is the word &quot;content&quot; in the method name.
&gt; 
&gt; Sound good. How about one of: -_removeDataDetectedLinks: or

Probably that one ^^ (slightly humorous because one of the subtypes is WKDataDetectorTypeLink but I don&apos;t think that matters, and the API doc does say &quot;add links around...&quot;.

&gt; -_removeDataDetectionResults:? Or...perhaps something more general, such as
&gt; -_resetDataDetection:?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1481265</commentid>
    <comment_count>10</comment_count>
      <attachid>355554</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-11-23 23:27:32 -0800</bug_when>
    <thetext>Created attachment 355554
Patch for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1481266</commentid>
    <comment_count>11</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-11-23 23:29:51 -0800</bug_when>
    <thetext>(In reply to Wenson Hsieh from comment #8)
&gt; (In reply to Tim Horton from comment #7)
&gt; &gt; Comment on attachment 355533 [details]
&gt; &gt; Fix the GTK build
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=355533&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit/UIProcess/API/Cocoa/WKWebViewPrivate.h:197
&gt; &gt; &gt; +- (void)_removeAllDataDetectedContent:(dispatch_block_t)completion WK_API_AVAILABLE(macosx(WK_MAC_TBA), ios(WK_IOS_TBA));
&gt; &gt; 
&gt; &gt; Also, why is one available on both platforms and the other only on iOS?
&gt; 
&gt; I first tried to make both available on macOS/iOS, but realized that
&gt; WKDataDetectorTypes is iOS-only :/
&gt; 
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit/WebProcess/WebPage/WebPage.cpp:3396
&gt; &gt; &gt; +void WebPage::removeAllDataDetectedContent(CallbackID callbackID)
&gt; &gt; 
&gt; &gt; Didn&apos;t Alex invent some new thing to replace CallbackID? See
&gt; &gt; https://trac.webkit.org/changeset/237294/webkit
&gt; 
&gt; Nice, I&apos;ll give this a shot!

This mostly just worked, but needs a small tweak in WebKit/scripts/webkit/messages.py to support declaring async completion handlers with no arguments, like so:

    DetectDataInAllFrames(uint64_t types) -&gt; () Async
    RemoveDataDetectedLinks() -&gt; () Async</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1481268</commentid>
    <comment_count>12</comment_count>
      <attachid>355555</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-11-24 00:05:06 -0800</bug_when>
    <thetext>Created attachment 355555
Patch for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1481303</commentid>
    <comment_count>13</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-11-24 09:51:48 -0800</bug_when>
    <thetext>(In reply to Wenson Hsieh from comment #11)
&gt; (In reply to Wenson Hsieh from comment #8)
&gt; &gt; (In reply to Tim Horton from comment #7)
&gt; &gt; &gt; Comment on attachment 355533 [details]
&gt; &gt; &gt; Fix the GTK build
&gt; &gt; &gt; 
&gt; &gt; &gt; View in context:
&gt; &gt; &gt; https://bugs.webkit.org/attachment.cgi?id=355533&amp;action=review
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Source/WebKit/UIProcess/API/Cocoa/WKWebViewPrivate.h:197
&gt; &gt; &gt; &gt; +- (void)_removeAllDataDetectedContent:(dispatch_block_t)completion WK_API_AVAILABLE(macosx(WK_MAC_TBA), ios(WK_IOS_TBA));
&gt; &gt; &gt; 
&gt; &gt; &gt; Also, why is one available on both platforms and the other only on iOS?
&gt; &gt; 
&gt; &gt; I first tried to make both available on macOS/iOS, but realized that
&gt; &gt; WKDataDetectorTypes is iOS-only :/
&gt; &gt; 
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Source/WebKit/WebProcess/WebPage/WebPage.cpp:3396
&gt; &gt; &gt; &gt; +void WebPage::removeAllDataDetectedContent(CallbackID callbackID)
&gt; &gt; &gt; 
&gt; &gt; &gt; Didn&apos;t Alex invent some new thing to replace CallbackID? See
&gt; &gt; &gt; https://trac.webkit.org/changeset/237294/webkit
&gt; &gt; 
&gt; &gt; Nice, I&apos;ll give this a shot!
&gt; 
&gt; This mostly just worked, but needs a small tweak in
&gt; WebKit/scripts/webkit/messages.py to support declaring async completion
&gt; handlers with no arguments, like so:
&gt; 
&gt;     DetectDataInAllFrames(uint64_t types) -&gt; () Async
&gt;     RemoveDataDetectedLinks() -&gt; () Async

I realized that I actually don&apos;t need this messages.py adjustment if I use this async CompletionHandler as an opportunity to just send back a DataDetectionResult, instead of propagating the DataDetectionResult as a separate IPC message. This has the added bonus of eliminating the need for an extra IPC message, but does require a small tweak in DataDetectionResult to make DataDetectionResult use the new decoding format:

    static std::optional&lt;DataDetectionResult&gt; decode(IPC::Decoder&amp;);

instead of:

    static bool decode(IPC::Decoder&amp;, DataDetectionResult&amp;);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1481304</commentid>
    <comment_count>14</comment_count>
      <attachid>355564</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-11-24 09:57:26 -0800</bug_when>
    <thetext>Created attachment 355564
Patch for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1481316</commentid>
    <comment_count>15</comment_count>
      <attachid>355564</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-11-24 13:06:16 -0800</bug_when>
    <thetext>Comment on attachment 355564
Patch for EWS

Clearing flags on attachment: 355564

Committed r238471: &lt;https://trac.webkit.org/changeset/238471&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>355532</attachid>
            <date>2018-11-23 11:56:37 -0800</date>
            <delta_ts>2018-11-23 12:05:45 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191918-20181123115633.patch</filename>
            <type>text/plain</type>
            <size>42764</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4NDU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDljYzEyMzFlYWVmZGQ4
ZDJiMjcxYmQ1M2I0ZTEzZTk5NjA1ZTgxMC4uODFkMDY3MmEwNWFjN2FjYjY0MDNjNjU4MTk3NDVi
ZWM3NmQyMmVhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE4LTExLTIzICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gQWRk
IFdLV2ViVmlldyBTUEkgdG8gdHJpZ2dlciBhbmQgcmVtb3ZlIGRhdGEgZGV0ZWN0aW9uCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTE5MTgKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzM2MTg1MDUxPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIGhlbHBlciBtZXRob2Qgb24gRGF0YURldGVjdGlv
biB0byByZW1vdmUgYWxsIGRhdGEgZGV0ZWN0ZWQgY29udGVudCBpbiB0aGUgZ2l2ZW4gZG9jdW1l
bnQuIFNlZSBXZWJLaXQKKyAgICAgICAgY2hhbmdlcyBmb3IgbW9yZSBkZXRhaWwuCisKKyAgICAg
ICAgKiBlZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24uaDoKKyAgICAgICAgKiBlZGl0aW5nL2Nv
Y29hL0RhdGFEZXRlY3Rpb24ubW06CisgICAgICAgIChXZWJDb3JlOjpEYXRhRGV0ZWN0aW9uOjpy
ZW1vdmVEYXRhRGV0ZWN0ZWRDb250ZW50SW5Eb2N1bWVudCk6CisKIDIwMTgtMTEtMjIgIFdlbnNv
biBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkcmVzcyBwb3N0
LXJldmlldyBmZWVkYmFjayBhZnRlciByMjM4NDM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDVjYTRlMjkxYjdmODJk
ODcyMzg2ZGIyYmE0NmYyZGFlN2FlMTY3ZWEuLmZjODNjZDVmZTJlZDhlMjZlZjViOGQ2ODhhNjI1
N2FkZDc1N2QzYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYgQEAKKzIwMTgtMTEtMjMgIFdlbnNv
biBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBBZGQg
V0tXZWJWaWV3IFNQSSB0byB0cmlnZ2VyIGFuZCByZW1vdmUgZGF0YSBkZXRlY3Rpb24KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MTkxOAorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vMzYxODUwNTE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQWRkcyBzdXBwb3J0IGZvciB0d28gbmV3IFdLV2ViVmlldyBT
UEkgbWV0aG9kcywgYC1fZGV0ZWN0RGF0YVdpdGhUeXBlczpjb21wbGV0aW9uSGFuZGxlcjpgIGFu
ZAorICAgICAgICBgLV9yZW1vdmVBbGxEYXRhRGV0ZWN0ZWRDb250ZW50OmAsIHRvIGFsbG93IGlu
dGVybmFsIFdlYktpdCBjbGllbnRzIHRvIHJ1biBkYXRhIGRldGVjdGlvbiBhbmQgYWRkIGxpbmtz
IHRvIGRhdGEKKyAgICAgICAgZGV0ZWN0ZWQgY29udGVudCwgb3IgcmVtb3ZlIGFsbCBkYXRhIGRl
dGVjdGVkIGxpbmtzIGZyb20gdGhlIGRvY3VtZW50LgorCisgICAgICAgIFRlc3Q6IFdlYktpdC5B
ZGRBbmRSZW1vdmVEYXRhRGV0ZWN0b3JzCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9yZW1vdmVBbGxEYXRhRGV0ZWN0
b3JzOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2RldGVjdERhdGFXaXRoVHlwZXM6Y29tcGxl
dGlvbkhhbmRsZXI6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQ
cml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGV0ZWN0RGF0YUluQWxsRnJhbWVzKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZW1vdmVBbGxEYXRhRGV0ZWN0b3JzKToKKworICAgICAg
ICBBZGQgb3IgcmVtb3ZlIGRhdGEgZGV0ZWN0ZWQgY29udGVudCBmcm9tIGVhY2ggZnJhbWUgaW4g
dGhlIHBhZ2UsIGFuZCB0aGVuIHByb3BhZ2F0ZSB0aGUgbmV3IGRhdGEgZGV0ZWN0b3IKKyAgICAg
ICAgcmVzdWx0cyBvZiB0aGUgbWFpbiBmcmFtZSB0byB0aGUgVUkgcHJvY2VzcyAodGhpcyBtYXRj
aGVzIGN1cnJlbnQgYmVoYXZpb3IsIHdoZXJlIHRoZSByZXN1bHRzIG9mIC1bV0tXZWJWaWV3Cisg
ICAgICAgIF9kYXRhRGV0ZWN0aW9uUmVzdWx0c10gb25seSByZWZsZWN0cyBkYXRhIGRldGVjdGlv
biByZXN1bHRzIGluIHRoZSBtYWluIGZyYW1lIG9mIHRoZSBwYWdlKS4KKworICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJlbW92ZUFsbERhdGFEZXRlY3Rv
cnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkZXRlY3REYXRhSW5BbGxGcmFtZXMpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisKIDIwMTgtMTEtMjIgIFdlbnNvbiBI
c2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgW0NvY29hXSBjbGFuZyBl
bWl0cyBhIHdhcm5pbmcgd2hlbiBidWlsZGluZyBXZWJLaXQgYWZ0ZXIgcjIzODI5MwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EYXRhRGV0ZWN0aW9uLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24uaAppbmRleCBkYmU1NGJkY2Yx
OTBjMTViZDRkMDhlNjgwOWM2Mzk3ODkwNmJmZGJlLi4wNTljNjM0ODAwZmYwMTY2ODdjNGU4OTUz
OWFhMzQ0ODQ1YjA1ZDc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29h
L0RhdGFEZXRlY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RhdGFE
ZXRlY3Rpb24uaApAQCAtMzcsNiArMzcsNyBAQCBPQkpDX0NMQVNTIE5TRGljdGlvbmFyeTsKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBEb2N1bWVudDsKIGNsYXNzIEVsZW1lbnQ7CiBj
bGFzcyBGbG9hdFJlY3Q7CiBjbGFzcyBIaXRUZXN0UmVzdWx0OwpAQCAtNjEsNiArNjIsNyBAQCBw
dWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJldGFpblB0cjxEREFjdGlvbkNvbnRl
eHQ+IGRldGVjdEl0ZW1Bcm91bmRIaXRUZXN0UmVzdWx0KGNvbnN0IEhpdFRlc3RSZXN1bHQmLCBG
bG9hdFJlY3QmIGRldGVjdGVkRGF0YUJvdW5kaW5nQm94LCBSZWZQdHI8UmFuZ2U+JiBkZXRlY3Rl
ZERhdGFSYW5nZSk7CiAjZW5kaWYKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgTlNBcnJheSAq
ZGV0ZWN0Q29udGVudEluUmFuZ2UoUmVmUHRyPFJhbmdlPiYgY29udGV4dFJhbmdlLCBEYXRhRGV0
ZWN0b3JUeXBlcywgTlNEaWN0aW9uYXJ5ICpjb250ZXh0KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgdm9pZCByZW1vdmVEYXRhRGV0ZWN0ZWRDb250ZW50SW5Eb2N1bWVudChEb2N1bWVudCYp
OwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJv
b2wgY2FuQmVQcmVzZW50ZWRCeURhdGFEZXRlY3RvcnMoY29uc3QgVVJMJik7CiAgICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIGJvb2wgaXNEYXRhRGV0ZWN0b3JMaW5rKEVsZW1lbnQmKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5tbSBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5tbQppbmRleCBjOTk5ZGQ3
MTY3OTY0ZTMxYTY3YmE0ZTY4MDk5ZmJhYzUwYzU3YmJjLi5lYTNiM2I0NTM4YzM3YmMxYTEzOWNl
M2M4MjNkNjE2MDA5ZTVhZWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2Nv
Y29hL0RhdGFEZXRlY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9E
YXRhRGV0ZWN0aW9uLm1tCkBAIC00MjksNiArNDI5LDE2IEBAIHN0YXRpYyBpbmxpbmUgQ0ZDb21w
YXJpc29uUmVzdWx0IHF1ZXJ5T2Zmc2V0Q29tcGFyZShERFF1ZXJ5T2Zmc2V0IG8xLCBERFF1ZXJ5
T2ZmCiAgICAgcmV0dXJuIGtDRkNvbXBhcmVFcXVhbFRvOwogfQogCit2b2lkIERhdGFEZXRlY3Rp
b246OnJlbW92ZURhdGFEZXRlY3RlZENvbnRlbnRJbkRvY3VtZW50KERvY3VtZW50JiBkb2N1bWVu
dCkKK3sKKyAgICBWZWN0b3I8UmVmPEhUTUxBbmNob3JFbGVtZW50Pj4gYWxsQW5jaG9yRWxlbWVu
dHM7CisgICAgZm9yIChhdXRvJiBhbmNob3IgOiBkZXNjZW5kYW50c09mVHlwZTxIVE1MQW5jaG9y
RWxlbWVudD4oZG9jdW1lbnQpKQorICAgICAgICBhbGxBbmNob3JFbGVtZW50cy5hcHBlbmQoYW5j
aG9yKTsKKworICAgIGZvciAoYXV0byYgYW5jaG9yIDogYWxsQW5jaG9yRWxlbWVudHMpCisgICAg
ICAgIHJlbW92ZVJlc3VsdExpbmtzRnJvbUFuY2hvcihhbmNob3IuZ2V0KCkpOworfQorCiBOU0Fy
cmF5ICpEYXRhRGV0ZWN0aW9uOjpkZXRlY3RDb250ZW50SW5SYW5nZShSZWZQdHI8UmFuZ2U+JiBj
b250ZXh0UmFuZ2UsIERhdGFEZXRlY3RvclR5cGVzIHR5cGVzLCBOU0RpY3Rpb25hcnkgKmNvbnRl
eHQpCiB7CiAgICAgUmV0YWluUHRyPEREU2Nhbm5lclJlZj4gc2Nhbm5lciA9IGFkb3B0Q0Yoc29m
dExpbmtfRGF0YURldGVjdG9yc0NvcmVfRERTY2FubmVyQ3JlYXRlKEREU2Nhbm5lclR5cGVTdGFu
ZGFyZCwgMCwgbnVsbHB0cikpOwpAQCAtNjQ3LDEwICs2NTcsMTYgQEAgTlNBcnJheSAqRGF0YURl
dGVjdGlvbjo6ZGV0ZWN0Q29udGVudEluUmFuZ2UoUmVmUHRyPFJhbmdlPiYgY29udGV4dFJhbmdl
LCBEYXRhRGUKIH0KIAogI2Vsc2UKKwogTlNBcnJheSAqRGF0YURldGVjdGlvbjo6ZGV0ZWN0Q29u
dGVudEluUmFuZ2UoUmVmUHRyPFJhbmdlPiYsIERhdGFEZXRlY3RvclR5cGVzLCBOU0RpY3Rpb25h
cnkgKikKIHsKICAgICByZXR1cm4gbmlsOwogfQorCit2b2lkIERhdGFEZXRlY3Rpb246OnJlbW92
ZURhdGFEZXRlY3RlZENvbnRlbnRJbkRvY3VtZW50KERvY3VtZW50JikKK3sKK30KKwogI2VuZGlm
CiAKIGNvbnN0IFN0cmluZyYgRGF0YURldGVjdGlvbjo6ZGF0YURldGVjdG9yVVJMUHJvdG9jb2wo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
dy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5k
ZXggODM2OWUzMzljMjg1YzI1ODMyMTFhMjZiYzRkMWEzNGJhMWE1Mjk3MS4uMWRiYWQ3MDM3NDRl
YmMxODYxNmUwZjQ2NjMxZjFlOGJkYzQ0YjJlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBAIC01NDIzLDEwICs1NDIzLDM1IEBAIC0gKHZv
aWQpX3NldFBhZ2VNdXRlZDooX1dLTWVkaWFNdXRlZFN0YXRlKW11dGVkU3RhdGUKICAgICBfcGFn
ZS0+c2V0TXV0ZWQoY29yZVN0YXRlKTsKIH0KIAorLSAodm9pZClfcmVtb3ZlQWxsRGF0YURldGVj
dGVkQ29udGVudDooZGlzcGF0Y2hfYmxvY2tfdCljb21wbGV0aW9uCit7CisjaWYgRU5BQkxFKERB
VEFfREVURUNUSU9OKQorICAgIF9wYWdlLT5yZW1vdmVBbGxEYXRhRGV0ZWN0ZWRDb250ZW50KFtj
b21wbGV0aW9uID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb24pXSAoYXV0bykgeworICAgICAgICBp
ZiAoY29tcGxldGlvbikKKyAgICAgICAgICAgIGNvbXBsZXRpb24oKTsKKyAgICB9KTsKKyNlbHNl
CisgICAgVU5VU0VEX1BBUkFNKGNvbXBsZXRpb24pOworI2VuZGlmCit9CisKICNwcmFnbWEgbWFy
ayBpT1Mtc3BlY2lmaWMgbWV0aG9kcwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAorLSAo
dm9pZClfZGV0ZWN0RGF0YVdpdGhUeXBlczooV0tEYXRhRGV0ZWN0b3JUeXBlcyl0eXBlcyBjb21w
bGV0aW9uSGFuZGxlcjooZGlzcGF0Y2hfYmxvY2tfdCljb21wbGV0aW9uCit7CisjaWYgRU5BQkxF
KERBVEFfREVURUNUSU9OKQorICAgIF9wYWdlLT5kZXRlY3REYXRhSW5BbGxGcmFtZXMoZnJvbVdL
RGF0YURldGVjdG9yVHlwZXModHlwZXMpLCBbY29tcGxldGlvbiA9IG1ha2VCbG9ja1B0cihjb21w
bGV0aW9uKV0gKGF1dG8pIHsKKyAgICAgICAgaWYgKGNvbXBsZXRpb24pCisgICAgICAgICAgICBj
b21wbGV0aW9uKCk7CisgICAgfSk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTSh0eXBlcyk7Cisg
ICAgVU5VU0VEX1BBUkFNKGNvbXBsZXRpb24pOworI2VuZGlmCit9CisKICNpZiBFTkFCTEUoRlVM
TFNDUkVFTl9BUEkpCiAtICh2b2lkKXJlbW92ZUZyb21TdXBlcnZpZXcKIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCmluZGV4
IDEzM2EzZTcyYWZmMzM0ZTVmNjNiOTJmNzFhOWEwYTYwODgxNTk3OTYuLmM3ZTVmNTBjMjRlN2E4
NWJiZmFjNGJkNDA4MTZjYzVjNDdmYWQxY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaApAQCAtMjcsNiArMjcsNyBAQAog
CiAjaWYgV0tfQVBJX0VOQUJMRUQKIAorI2ltcG9ydCA8V2ViS2l0L1dLRGF0YURldGVjdG9yVHlw
ZXMuaD4KICNpbXBvcnQgPFdlYktpdC9fV0tBY3RpdmF0ZWRFbGVtZW50SW5mby5oPgogI2ltcG9y
dCA8V2ViS2l0L19XS0F0dGFjaG1lbnQuaD4KICNpbXBvcnQgPFdlYktpdC9fV0tGaW5kT3B0aW9u
cy5oPgpAQCAtMTkzLDYgKzE5NCw4IEBAIHR5cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRlZ2VyLCBf
V0tSZWN0RWRnZSkgewogLSAodm9pZClfc2hvd1NhZmVCcm93c2luZ1dhcm5pbmdXaXRoVGl0bGU6
KE5TU3RyaW5nICopdGl0bGUgd2FybmluZzooTlNTdHJpbmcgKil3YXJuaW5nIGRldGFpbHM6KE5T
QXR0cmlidXRlZFN0cmluZyAqKWRldGFpbHMgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXikoQk9P
TCkpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSks
IGlvcyhXS19JT1NfVEJBKSk7CiAKIC0gKHZvaWQpX2lzSklURW5hYmxlZDoodm9pZCheKShCT09M
KSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwg
aW9zKFdLX0lPU19UQkEpKTsKKy0gKHZvaWQpX3JlbW92ZUFsbERhdGFEZXRlY3RlZENvbnRlbnQ6
KGRpc3BhdGNoX2Jsb2NrX3QpY29tcGxldGlvbiBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19N
QUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKwogLSAoSUJBY3Rpb24pX2FsaWduQ2VudGVyOihp
ZClzZW5kZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1Nf
VEJBKSk7CiAtIChJQkFjdGlvbilfYWxpZ25KdXN0aWZpZWQ6KGlkKXNlbmRlciBXS19BUElfQVZB
SUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIC0gKElCQWN0aW9u
KV9hbGlnbkxlZnQ6KGlkKXNlbmRlciBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJB
KSwgaW9zKFdLX0lPU19UQkEpKTsKQEAgLTIxNiw2ICsyMTksOCBAQCB0eXBlZGVmIE5TX09QVElP
TlMoTlNVSW50ZWdlciwgX1dLUmVjdEVkZ2UpIHsKIC0gKHZvaWQpX3NldEZvbnRTaXplOihDR0Zs
b2F0KWZvbnRTaXplIHNlbmRlcjooaWQpc2VuZGVyIFdLX0FQSV9BVkFJTEFCTEUoaW9zKFdLX0lP
U19UQkEpKTsKIC0gKHZvaWQpX3NldFRleHRDb2xvcjooVUlDb2xvciAqKWNvbG9yIHNlbmRlcjoo
aWQpc2VuZGVyIFdLX0FQSV9BVkFJTEFCTEUoaW9zKFdLX0lPU19UQkEpKTsKIAorLSAodm9pZClf
ZGV0ZWN0RGF0YVdpdGhUeXBlczooV0tEYXRhRGV0ZWN0b3JUeXBlcyl0eXBlcyBjb21wbGV0aW9u
SGFuZGxlcjooZGlzcGF0Y2hfYmxvY2tfdCljb21wbGV0aW9uIFdLX0FQSV9BVkFJTEFCTEUoaW9z
KFdLX0lPU19UQkEpKTsKKwogLy8gREVSRUNBVEVEOiBUaGUgc2V0dGVycyBvZiB0aGUgdGhyZWUg
Zm9sbG93aW5nIGZ1bmN0aW9uIGFyZSBkZXByZWNhdGVkLCBwbGVhc2UgdXNlIG92ZXJyaWRlTGF5
b3V0UGFyYW1ldGVycy4KIC8vIERlZmluZSB0aGUgc21hbGxlc3Qgc2l6ZSBhIHBhZ2UgdGFrZSB3
aXRoIGEgcmVndWxhciB2aWV3cG9ydC4KIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkg
Q0dTaXplIF9taW5pbXVtTGF5b3V0U2l6ZU92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggMTExMDlkZDUxNmQ3ODljMzg1YzkxZmY4MTY2NmM5MjZk
OTVkZmZkNi4uZGZhNzdjNGU3ZDY3OTc1Y2U3MWZjYjRmOWE5NDEwMWU5ZDEzYmNjNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC04MjQzLDYgKzgyNDMsMjIg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OnVwZGF0ZUN1cnJlbnRNb2RpZmllclN0YXRlKCkKICNlbmRp
ZgogfQogCisjaWYgRU5BQkxFKERBVEFfREVURUNUSU9OKQorCit2b2lkIFdlYlBhZ2VQcm94eTo6
ZGV0ZWN0RGF0YUluQWxsRnJhbWVzKFdlYkNvcmU6OkRhdGFEZXRlY3RvclR5cGVzIHR5cGVzLCBG
dW5jdGlvbjx2b2lkKENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrKQoreworICAgIGF1
dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrKSwgbV9wcm9j
ZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICBtX3Byb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRldGVjdERhdGFJbkFsbEZyYW1lcyhzdGF0aWNf
Y2FzdDx1aW50NjRfdD4odHlwZXMpLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOworfQorCit2b2lk
IFdlYlBhZ2VQcm94eTo6cmVtb3ZlQWxsRGF0YURldGVjdGVkQ29udGVudChGdW5jdGlvbjx2b2lk
KENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrKQoreworICAgIGF1dG8gY2FsbGJhY2tJ
RCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrKSwgbV9wcm9jZXNzLT50aHJvdHRs
ZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OlJlbW92ZUFsbERhdGFEZXRlY3RlZENvbnRlbnQoY2FsbGJhY2tJRCks
IG1fcGFnZUlEKTsKK30KKworI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjdW5k
ZWYgTUVSR0VfV0hFRUxfRVZFTlRTCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
CmluZGV4IDA3MTc3MmM4ZDdjNTBmNWIwZWNjZjA1NWE5YmUxOGU2YmVkYTE3NzYuLmE2MmYzNWIy
ZTdiZmI4NzIxODJmYjM4NTAyZmVkZTJkMDA2ODJiZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oCkBAIC0zNjIsNiArMzYyLDggQEAgcHVibGljOgogCiAjaWYgRU5BQkxF
KERBVEFfREVURUNUSU9OKQogICAgIE5TQXJyYXkgKmRhdGFEZXRlY3Rpb25SZXN1bHRzKCkgeyBy
ZXR1cm4gbV9kYXRhRGV0ZWN0aW9uUmVzdWx0cy5nZXQoKTsgfQorICAgIHZvaWQgZGV0ZWN0RGF0
YUluQWxsRnJhbWVzKFdlYkNvcmU6OkRhdGFEZXRlY3RvclR5cGVzLCBGdW5jdGlvbjx2b2lkKENh
bGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKKyAgICB2b2lkIHJlbW92ZUFsbERhdGFEZXRlY3RlZENv
bnRlbnQoRnVuY3Rpb248dm9pZChDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CiAjZW5kaWYKICAg
ICAgICAgCiAjaWYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykgJiYgUExBVEZPUk0oQ09DT0EpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDRhYWUx
NGYxNzM4NzAwMzBhMjczNDNiOTBiZDMxYTA4MzFhMTIxYmMuLjZlYTgxNjQyNmU4YzczMzU3OTBj
ZWVkOWIwMDExZGJkZjljM2Q2YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCkBAIC0zMzg1LDEzICszMzg1LDQ0IEBAIHZvaWQgV2ViUGFnZTo6dXBk
YXRlUHJlZmVyZW5jZXMoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUpCiB9CiAKICNp
ZiBFTkFCTEUoREFUQV9ERVRFQ1RJT04pCisKIHZvaWQgV2ViUGFnZTo6c2V0RGF0YURldGVjdGlv
blJlc3VsdHMoTlNBcnJheSAqZGV0ZWN0aW9uUmVzdWx0cykKIHsKICAgICBEYXRhRGV0ZWN0aW9u
UmVzdWx0IGRhdGFEZXRlY3Rpb25SZXN1bHQ7CiAgICAgZGF0YURldGVjdGlvblJlc3VsdC5yZXN1
bHRzID0gZGV0ZWN0aW9uUmVzdWx0czsKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OlNldERhdGFEZXRlY3Rpb25SZXN1bHQoZGF0YURldGVjdGlvblJlc3VsdCkpOwogfQotI2VuZGlm
CisKK3ZvaWQgV2ViUGFnZTo6cmVtb3ZlQWxsRGF0YURldGVjdGVkQ29udGVudChDYWxsYmFja0lE
IGNhbGxiYWNrSUQpCit7CisgICAgZm9yIChhdXRvIGZyYW1lID0gbWFrZVJlZlB0cigmbV9wYWdl
LT5tYWluRnJhbWUoKSk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0
KCkpIHsKKyAgICAgICAgYXV0byBkb2N1bWVudCA9IG1ha2VSZWZQdHIoZnJhbWUtPmRvY3VtZW50
KCkpOworICAgICAgICBpZiAoIWRvY3VtZW50KQorICAgICAgICAgICAgY29udGludWU7CisKKyAg
ICAgICAgRGF0YURldGVjdGlvbjo6cmVtb3ZlRGF0YURldGVjdGVkQ29udGVudEluRG9jdW1lbnQo
KmRvY3VtZW50KTsKKyAgICAgICAgZnJhbWUtPnNldERhdGFEZXRlY3Rpb25SZXN1bHRzKG51bGxw
dHIpOworICAgIH0KKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNldERhdGFEZXRl
Y3Rpb25SZXN1bHQoeyB9KSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpWb2lk
Q2FsbGJhY2soY2FsbGJhY2tJRCkpOworfQorCit2b2lkIFdlYlBhZ2U6OmRldGVjdERhdGFJbkFs
bEZyYW1lcyh1aW50NjRfdCB0eXBlcywgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQoreworICAgIGF1
dG8gZGF0YURldGVjdG9yVHlwZXMgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpEYXRhRGV0ZWN0b3JU
eXBlcz4odHlwZXMpOworICAgIGZvciAoYXV0byBmcmFtZSA9IG1ha2VSZWZQdHIoJm1fcGFnZS0+
bWFpbkZyYW1lKCkpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgp
KSB7CisgICAgICAgIGF1dG8gZG9jdW1lbnQgPSBtYWtlUmVmUHRyKGZyYW1lLT5kb2N1bWVudCgp
KTsKKyAgICAgICAgaWYgKCFkb2N1bWVudCkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAg
ICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKCpkb2N1bWVudCwgUG9zaXRp
b24geyBkb2N1bWVudC5nZXQoKSwgUG9zaXRpb246OlBvc2l0aW9uSXNCZWZvcmVDaGlsZHJlbiB9
LCBQb3NpdGlvbiB7IGRvY3VtZW50LmdldCgpLCBQb3NpdGlvbjo6UG9zaXRpb25Jc0FmdGVyQ2hp
bGRyZW4gfSk7CisgICAgICAgIGZyYW1lLT5zZXREYXRhRGV0ZWN0aW9uUmVzdWx0cyhEYXRhRGV0
ZWN0aW9uOjpkZXRlY3RDb250ZW50SW5SYW5nZShyYW5nZSwgZGF0YURldGVjdG9yVHlwZXMsIG1f
ZGF0YURldGVjdGlvbkNvbnRleHQuZ2V0KCkpKTsKKyAgICB9CisgICAgc2VuZChNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpTZXREYXRhRGV0ZWN0aW9uUmVzdWx0KHsgbV9wYWdlLT5tYWluRnJhbWUo
KS5kYXRhRGV0ZWN0aW9uUmVzdWx0cygpIH0pKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OlZvaWRDYWxsYmFjayhjYWxsYmFja0lEKSk7Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUo
REFUQV9ERVRFQ1RJT04pCiAKICNpZiBQTEFURk9STShDT0NPQSkKIHZvaWQgV2ViUGFnZTo6d2ls
bENvbW1pdExheWVyVHJlZShSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbiYgbGF5ZXJUcmFuc2Fj
dGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCA1
NzUzMjk4NDg5NTkwMzk0NDBmYTFhYjE3ZmI3MTA2NTU4M2U4N2E4Li4xNjRkYWY5Njk0MjYwNGJj
Yzc0NjNmYTIwZmQ4Zjg1M2IyODdiOTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5oCkBAIC01Miw2ICs1Miw3IEBACiAjaW5jbHVkZSAiV2ViVXNlckNvbnRl
bnRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yRnJvbnRl
bmRDaGFubmVsLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9BY3Rpdml0eVN0YXRlLmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9EYXRhRGV0ZWN0aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EaWN0aW9uYXJ5
UG9wdXBJbmZvLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EaXNhYmxlZEFkYXB0YXRpb25zLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9GcmFtZUxvYWRlclR5cGVzLmg+CkBAIC05OTIsNiArOTkzLDggQEAg
cHVibGljOgogCiAjaWYgRU5BQkxFKERBVEFfREVURUNUSU9OKQogICAgIHZvaWQgc2V0RGF0YURl
dGVjdGlvblJlc3VsdHMoTlNBcnJheSAqKTsKKyAgICB2b2lkIGRldGVjdERhdGFJbkFsbEZyYW1l
cyh1aW50NjRfdCwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCByZW1vdmVBbGxEYXRhRGV0ZWN0ZWRD
b250ZW50KENhbGxiYWNrSUQpOwogI2VuZGlmCiAKICAgICB1bnNpZ25lZCBleHRlbmRJbmNyZW1l
bnRhbFJlbmRlcmluZ1N1cHByZXNzaW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCA4YjI5NmNlMDBkNDQyNTlk
NGU1YjdhZGI5Y2I0MTUyMjNmOWRkOThmLi43NTYwZWQ3ODU3ODRhMWNiM2RkYWI3YjljYjIxZDAx
ZmU4MDA5YWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAgLTE5Myw2ICsxOTMsMTEgQEAgbWVzc2FnZXMgLT4gV2Vi
UGFnZSBMZWdhY3lSZWNlaXZlciB7CiAgICAgUGVyZm9ybURpY3Rpb25hcnlMb29rdXBBdExvY2F0
aW9uKFdlYkNvcmU6OkZsb2F0UG9pbnQgcG9pbnQpCiAjZW5kaWYKIAorI2lmIEVOQUJMRShEQVRB
X0RFVEVDVElPTikKKyAgICBEZXRlY3REYXRhSW5BbGxGcmFtZXModWludDY0X3QgdHlwZXMsIFdl
YktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIFJlbW92ZUFsbERhdGFEZXRlY3RlZENv
bnRlbnQoV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisjZW5kaWYKKwogI2lmIFBMQVRG
T1JNKE1BQykKICAgICBQZXJmb3JtRGljdGlvbmFyeUxvb2t1cE9mQ3VycmVudFNlbGVjdGlvbigp
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwpp
bmRleCA5ZWUxNWM0ZTAyZmEwOTMxNzYzNjVjMTIzODY4NGI5YmZkYTIxZWMyLi43OTg0ZGRlYWNi
NTlmNzQ0MTdiMjQyZWE1N2Y4NWVjNGEzM2I2ZWE1IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VM
b2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTIgQEAKKzIwMTgtMTEtMjMgIFdl
bnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBB
ZGQgV0tXZWJWaWV3IFNQSSB0byB0cmlnZ2VyIGFuZCByZW1vdmUgZGF0YSBkZXRlY3Rpb24KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MTkxOAorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vMzYxODUwNTE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGFuIEFQSSB0ZXN0IHRvIGV4ZXJjaXNlIHRoZSBu
ZXcgV2ViS2l0IFNQSS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvRGF0YURldGVjdG9yc0Nv
cmVTUEkuaDogQWRkZWQuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9EYXRhRGV0ZWN0aW9uLm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgc3luY2hy
b25vdXNseURldGVjdERhdGFXaXRoVHlwZXM6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBzeW5j
aHJvbm91c2x5UmVtb3ZlQWxsRGF0YURldGVjdG9yc10pOgorICAgICAgICAoVEVTVCk6CisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0F0dGFjaG1lbnRUZXN0cy5t
bToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAoLVtUZXN0V0tXZWJW
aWV3IHRhZ3NJbkJvZHldKTogRGVsZXRlZC4KKyAgICAgICAgKC1bVGVzdFdLV2ViVmlldyBleHBl
Y3RFbGVtZW50VGFnc0luT3JkZXI6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1Rlc3RXS1dlYlZp
ZXcgZXhwZWN0RWxlbWVudENvdW50OnRhZ05hbWU6XSk6IERlbGV0ZWQuCisKKyAgICAgICAgUmVu
YW1lIHRoaXMgZnJvbSBgLWV4cGVjdEVsZW1lbnRDb3VudDp0YWdOYW1lOmAgdG8gYC1leHBlY3RF
bGVtZW50Q291bnQ6cXVlcnlTZWxlY3RvcjpgLgorCisgICAgICAgICgtW1Rlc3RXS1dlYlZpZXcg
ZXhwZWN0RWxlbWVudFRhZzp0b0NvbWVCZWZvcmU6XSk6IERlbGV0ZWQuCisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9kYXRhLWRldGVjdG9ycy5odG1sOiBBZGRlZC4K
KworICAgICAgICBBZGQgYSBuZXcgdGVzdCBwYWdlIGNvbnRhaW5pbmcgc29tZSBjb250ZW50IHRo
YXQgY2FuIGJlIGRhdGEgZGV0ZWN0ZWQuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29h
L1Rlc3RXS1dlYlZpZXcuaDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dl
YlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmlldyB0YWdzSW5Cb2R5XSk6CisgICAgICAgICgt
W1dLV2ViVmlldyBleHBlY3RFbGVtZW50VGFnc0luT3JkZXI6XSk6CisgICAgICAgICgtW1dLV2Vi
VmlldyBleHBlY3RFbGVtZW50Q291bnQ6cXVlcnlTZWxlY3RvcjpdKToKKyAgICAgICAgKC1bV0tX
ZWJWaWV3IGV4cGVjdEVsZW1lbnRUYWc6dG9Db21lQmVmb3JlOl0pOgorCisgICAgICAgIE1vdmUg
c29tZSB0ZXN0aW5nIGhlbHBlciBmdW5jdGlvbnMgZnJvbSBXS0F0dGFjaG1lbnRUZXN0cyB0byBh
IHRlc3RpbmcgY2F0ZWdvcnkgb24gV0tXZWJWaWV3LiBUaGlzIGFsbG93cyB1cyB0bworICAgICAg
ICB1c2UgYC1leHBlY3RFbGVtZW50Q291bnQ6cXVlcnlTZWxlY3RvcjpgIGluIHRlc3RzIG91dHNp
ZGUgb2YgV0tBdHRhY2htZW50VGVzdHMuCisKKyAgICAgICAgKC1bV0tXZWJWaWV3IG9iamVjdEJ5
RXZhbHVhdGluZ0phdmFTY3JpcHQ6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBvYmplY3RCeUV2
YWx1YXRpbmdKYXZhU2NyaXB0V2l0aFVzZXJHZXN0dXJlOl0pOgorICAgICAgICAoLVtXS1dlYlZp
ZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpdKToKKworICAgICAgICBNb3ZlIHNvbWUg
Y29tbW9uIGhlbHBlciBmdW5jdGlvbnMgZnJvbSBUZXN0V0tXZWJWaWV3IHRvIGEgdGVzdGluZyBj
YXRlZ29yeSBvbiBXS1dlYlZpZXcuCisKKyAgICAgICAgKC1bVGVzdFdLV2ViVmlldyBvYmplY3RC
eUV2YWx1YXRpbmdKYXZhU2NyaXB0Ol0pOiBEZWxldGVkLgorICAgICAgICAoLVtUZXN0V0tXZWJW
aWV3IG9iamVjdEJ5RXZhbHVhdGluZ0phdmFTY3JpcHRXaXRoVXNlckdlc3R1cmU6XSk6IERlbGV0
ZWQuCisgICAgICAgICgtW1Rlc3RXS1dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlw
dDpdKTogRGVsZXRlZC4KKwogMjAxOC0xMS0yMiAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUu
Y29tPgogCiAgICAgICAgIFtMRkNdW0lGQ10gT2Zmc2V0IGZvcm1hdHRpbmcgY29udGV4dCByb290
IHJ1bnMgd2l0aCBob3Jpem9udGFsIG1hcmdpbnMuCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL0RhdGFEZXRlY3RvcnNDb3JlU1BJLmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL0RhdGFE
ZXRlY3RvcnNDb3JlU1BJLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjI5YjQzNjVmZTJhZGYzNzk4OGY3MDJhZGQ0
NGUzN2RiNWUxYTE3YwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvRGF0
YURldGVjdG9yc0NvcmVTUEkuaApAQCAtMCwwICsxLDQyIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpZiBFTkFCTEUoREFUQV9ERVRFQ1RJT04pCisKKyNpbXBvcnQgPHBhbC9zcGkv
Y29jb2EvRGF0YURldGVjdG9yc0NvcmVTUEkuaD4KKworI2lmICFVU0UoQVBQTEVfSU5URVJOQUxf
U0RLKQorCitAaW50ZXJmYWNlIEREU2Nhbm5lclJlc3VsdCAoUHJpdmF0ZSkKK0Bwcm9wZXJ0eSAo
cmVhZG9ubHksIG5vbmF0b21pYykgTlNTdHJpbmcgKnZhbHVlOworQHByb3BlcnR5IChyZWFkb25s
eSwgbm9uYXRvbWljKSBOU1N0cmluZyAqdHlwZTsKK0Bwcm9wZXJ0eSAocmVhZG9ubHksIG5vbmF0
b21pYykgRERSZXN1bHRDYXRlZ29yeSBjYXRlZ29yeTsKK0BlbmQKKworI2VuZGlmIC8vICFVU0Uo
QVBQTEVfSU5URVJOQUxfU0RLKQorCisjZW5kaWYgLy8gRU5BQkxFKERBVEFfREVURUNUSU9OKQpk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBlZjBiZDAwNWEyODdlZjZjNmQ5OTQ5MzE5Y2JmNTQx
NDU0MjQxNTYzLi5kZTYyZGYwM2QwZDU2MDhkOTg4ZDFkNTBmYjdiMGFkMGI5N2Y4MGJkIDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtODUyLDYgKzg1Miw3IEBACiAJCUY0NkEwOTVBMUVEOEE2
RTYwMEQ0QUE1NSAvKiBhcHBsZS5naWYgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ3RDMwRUIxRUQyODYxOTAwMDQ4MkUxIC8qIGFwcGxlLmdp
ZiAqLzsgfTsKIAkJRjQ2QTA5NUIxRUQ4QTZFNjAwRDRBQTU1IC8qIGdpZi1hbmQtZmlsZS1pbnB1
dC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEY0N0QzMEVEMUVEMjhBNkMwMDA0ODJFMSAvKiBnaWYtYW5kLWZpbGUtaW5wdXQuaHRtbCAq
LzsgfTsKIAkJRjQ3NzI4OTkxRTRBRTNDMTAwN0FCRjZBIC8qIGZ1bGwtcGFnZS1jb250ZW50ZWRp
dGFibGUuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGNDc3Mjg5ODFFNEFFM0FEMDA3QUJGNkEgLyogZnVsbC1wYWdlLWNvbnRlbnRlZGl0
YWJsZS5odG1sICovOyB9OworCQlGNDdERkIyNjIxQTg3OERGMDAwMjFGQjYgLyogZGF0YS1kZXRl
Y3RvcnMuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGNDdERkIyNDIxQTg3MDRBMDAwMjFGQjYgLyogZGF0YS1kZXRlY3RvcnMuaHRtbCAq
LzsgfTsKIAkJRjQ4MTFFNTkyMTk0MEJERTAwQTVFMEZEIC8qIFdLV2ViVmlld0VkaXRBY3Rpb25z
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ4MTFF
NTgyMTk0MEI0NDAwQTVFMEZEIC8qIFdLV2ViVmlld0VkaXRBY3Rpb25zLm1tICovOyB9OwogCQlG
NDg1NkNBMzFFNjQ5RUE4MDA5RDdFRTcgLyogYXR0YWNobWVudC1lbGVtZW50Lmh0bWwgaW4gQ29w
eSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ4NTZDQTIx
RTY0OThBODAwOUQ3RUU3IC8qIGF0dGFjaG1lbnQtZWxlbWVudC5odG1sICovOyB9OwogCQlGNDg2
QjFEMDFGNjc5NTIzMDBGMzRCREQgLyogRGF0YVRyYW5zZmVyLXNldERyYWdJbWFnZS5odG1sIGlu
IENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0ODZC
MUNGMUY2Nzk0RkYwMEYzNEJERCAvKiBEYXRhVHJhbnNmZXItc2V0RHJhZ0ltYWdlLmh0bWwgKi87
IH07CkBAIC0xMDE5LDYgKzEwMjAsNyBAQAogCQkJCTdBRUFENDgxMUUyMDEyMjcwMDQxNkVGRSAv
KiBDcm9zc1BhcnRpdGlvbkZpbGVTY2hlbWVBY2Nlc3MuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAq
LywKIAkJCQlGNEFCNTc4QTFGNjUxNjU0MDBEQjBEQTEgLyogY3VzdG9tLWRyYWdnYWJsZS1kaXYu
aHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQkyOTBGNDI3NTE3MkEyMjFDMDA5MzlGRjAg
LyogY3VzdG9tLXByb3RvY29sLXN5bmMteGhyLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCisJ
CQkJRjQ3REZCMjYyMUE4NzhERjAwMDIxRkI2IC8qIGRhdGEtZGV0ZWN0b3JzLmh0bWwgaW4gQ29w
eSBSZXNvdXJjZXMgKi8sCiAJCQkJRjQ4NkIxRDAxRjY3OTUyMzAwRjM0QkREIC8qIERhdGFUcmFu
c2Zlci1zZXREcmFnSW1hZ2UuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQlGNDU3QTlE
NjIwMkQ2OEFGMDBGN0U5RDUgLyogRGF0YVRyYW5zZmVyLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMg
Ki8sCiAJCQkJRjQ1MTJFMTMxRjYwQzQ0NjAwQkIzNjlFIC8qIERhdGFUcmFuc2Zlckl0ZW0tZ2V0
QXNFbnRyeS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLApAQCAtMjE0Nyw2ICsyMTQ5LDggQEAK
IAkJRjQ3NzI4OTgxRTRBRTNBRDAwN0FCRjZBIC8qIGZ1bGwtcGFnZS1jb250ZW50ZWRpdGFibGUu
aHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJmdWxsLXBhZ2UtY29udGVudGVkaXRh
YmxlLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDdEMzBFQjFFRDI4NjE5
MDAwNDgyRTEgLyogYXBwbGUuZ2lmICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gaW1hZ2UuZ2lmOyBwYXRoID0gYXBwbGUuZ2lmOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlGNDdEMzBFRDFFRDI4QTZDMDAwNDgyRTEgLyogZ2lmLWFuZC1maWxl
LWlucHV0Lmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAiZ2lmLWFuZC1maWxlLWlucHV0Lmh0bWwiOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlGNDdERkIyNDIxQTg3MDRBMDAwMjFGQjYgLyogZGF0YS1k
ZXRlY3RvcnMuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJkYXRhLWRldGVjdG9y
cy5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjQ3REZCMjcyMUE4ODVFNzAw
MDIxRkI2IC8qIERhdGFEZXRlY3RvcnNDb3JlU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERhdGFEZXRl
Y3RvcnNDb3JlU1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0ODExRTU4MjE5
NDBCNDQwMEE1RTBGRCAvKiBXS1dlYlZpZXdFZGl0QWN0aW9ucy5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLV2ViVmlld0VkaXRBY3Rpb25zLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlGNDg1NkNBMjFFNjQ5OEE4MDA5RDdFRTcgLyogYXR0YWNo
bWVudC1lbGVtZW50Lmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAiYXR0YWNobWVu
dC1lbGVtZW50Lmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDg2QjFDRjFG
Njc5NEZGMDBGMzRCREQgLyogRGF0YVRyYW5zZmVyLXNldERyYWdJbWFnZS5odG1sICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dC5odG1sOyBwYXRoID0gIkRhdGFUcmFuc2Zlci1zZXREcmFnSW1hZ2UuaHRtbCI7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMzExLDYgKzIzMTUsNyBAQAogCQkJCUExM0VC
QjQ0MUI4NzMzMkIwMDA5NzExMCAvKiBXZWJQcm9jZXNzUGx1Z0luICovLAogCQkJCUY0NTE3QjY4
MjA1NEUwQUMwMEMyNjcyMSAvKiBDbGFzc01ldGhvZFN3aXp6bGVyLmggKi8sCiAJCQkJRjQ1MTdC
NjkyMDU0RTBBQzAwQzI2NzIxIC8qIENsYXNzTWV0aG9kU3dpenpsZXIubW0gKi8sCisJCQkJRjQ3
REZCMjcyMUE4ODVFNzAwMDIxRkI2IC8qIERhdGFEZXRlY3RvcnNDb3JlU1BJLmggKi8sCiAJCQkJ
RjQ2MTI4QjQyMTFDODYxQTAwRDlGQURCIC8qIERyYWdBbmREcm9wU2ltdWxhdG9yLmggKi8sCiAJ
CQkJRjQ0RDA2NDgxRjM5NjJFMzAwMUEwRTI5IC8qIEVkaXRpbmdUZXN0SGFybmVzcy5oICovLAog
CQkJCUY0NEQwNjQ5MUYzOTYyRTMwMDFBMEUyOSAvKiBFZGl0aW5nVGVzdEhhcm5lc3MubW0gKi8s
CkBAIC0yNzQwLDYgKzI3NDUsNyBAQAogCQkJCTlCMTA1NjQyMUY5MDQ3Q0MwMEQ1NTgzRiAvKiBj
b3B5LWh0bWwuaHRtbCAqLywKIAkJCQk5QjYyNjMwQjFGOEMyNTEwMDA3RUUyOUIgLyogY29weS11
cmwuaHRtbCAqLywKIAkJCQlGNEFCNTc4OTFGNjUxNjRCMDBEQjBEQTEgLyogY3VzdG9tLWRyYWdn
YWJsZS1kaXYuaHRtbCAqLywKKwkJCQlGNDdERkIyNDIxQTg3MDRBMDAwMjFGQjYgLyogZGF0YS1k
ZXRlY3RvcnMuaHRtbCAqLywKIAkJCQlGNDg2QjFDRjFGNjc5NEZGMDBGMzRCREQgLyogRGF0YVRy
YW5zZmVyLXNldERyYWdJbWFnZS5odG1sICovLAogCQkJCUY0NTdBOUIzMjAyRDUzNTMwMEY3RTlE
NSAvKiBEYXRhVHJhbnNmZXIuaHRtbCAqLywKIAkJCQlGNDUxMkUxMjFGNjBDNDM0MDBCQjM2OUUg
LyogRGF0YVRyYW5zZmVySXRlbS1nZXRBc0VudHJ5Lmh0bWwgKi8sCmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0RhdGFEZXRlY3Rpb24ubW0gYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0RhdGFEZXRlY3Rpb24ubW0KaW5kZXgg
YmYzYzk2NmU4NDcyMDVjYjBmZmJhN2FjYzYyN2VkMDQyZTkyY2JlMy4uODI3ODUxMzA5ODg4OGJh
NTM3ZDRiNWJjNzE1YzM3NWQzMTk0YjBjOCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9EYXRhRGV0ZWN0aW9uLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRGF0YURldGVjdGlvbi5tbQpAQCAtMjUsMTQgKzI1LDQz
IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKIAorI2ltcG9ydCAiRGF0YURldGVjdG9yc0NvcmVT
UEkuaCIKICNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJUZXN0LmgiCiAj
aW1wb3J0ICJUZXN0TmF2aWdhdGlvbkRlbGVnYXRlLmgiCisjaW1wb3J0ICJUZXN0V0tXZWJWaWV3
LmgiCiAjaW1wb3J0IDxXZWJLaXQvV2ViS2l0Lmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+
CiAKICNpZiBXS19BUElfRU5BQkxFRCAmJiBQTEFURk9STShJT1NfRkFNSUxZKQogCitAaW50ZXJm
YWNlIFdLV2ViVmlldyAoRGF0YURldGVjdGlvbikKKy0gKHZvaWQpc3luY2hyb25vdXNseURldGVj
dERhdGFXaXRoVHlwZXM6KFdLRGF0YURldGVjdG9yVHlwZXMpdHlwZXM7CistICh2b2lkKXN5bmNo
cm9ub3VzbHlSZW1vdmVBbGxEYXRhRGV0ZWN0ZWRDb250ZW50OworQGVuZAorCitAaW1wbGVtZW50
YXRpb24gV0tXZWJWaWV3IChEYXRhRGV0ZWN0aW9uKQorCistICh2b2lkKXN5bmNocm9ub3VzbHlE
ZXRlY3REYXRhV2l0aFR5cGVzOihXS0RhdGFEZXRlY3RvclR5cGVzKXR5cGVzCit7CisgICAgX19i
bG9jayBib29sIGRvbmUgPSBmYWxzZTsKKyAgICBbc2VsZiBfZGV0ZWN0RGF0YVdpdGhUeXBlczp0
eXBlcyBjb21wbGV0aW9uSGFuZGxlcjpeeworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsK
KyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworfQorCistICh2b2lkKXN5bmNo
cm9ub3VzbHlSZW1vdmVBbGxEYXRhRGV0ZWN0ZWRDb250ZW50Cit7CisgICAgX19ibG9jayBib29s
IGRvbmUgPSBmYWxzZTsKKyAgICBbc2VsZiBfcmVtb3ZlQWxsRGF0YURldGVjdGVkQ29udGVudDpe
eworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGls
OjpydW4oJmRvbmUpOworfQorCitAZW5kCisKIHN0YXRpYyBib29sIHJhblNjcmlwdDsKIAogQGlu
dGVyZmFjZSBEYXRhRGV0ZWN0aW9uVUlEZWxlZ2F0ZSA6IE5TT2JqZWN0IDxXS1VJRGVsZWdhdGU+
CkBAIC05Nyw0ICsxMjYsMzkgQEAgVEVTVChXZWJLaXQsIERJU0FCTEVEX0RhdGFEZXRlY3Rpb25S
ZWZlcmVuY2VEYXRlKQogICAgIGV4cGVjdExpbmtDb3VudCh3ZWJWaWV3LmdldCgpLCBAInllc3Rl
cmRheSBhdCA2UE0iLCAxKTsKIH0KIAorVEVTVChXZWJLaXQsIEFkZEFuZFJlbW92ZURhdGFEZXRl
Y3RvcnMpCit7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxs
b2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAzMjAsIDUwMCldKTsKKyAgICBbd2Vi
VmlldyBzeW5jaHJvbm91c2x5TG9hZFRlc3RQYWdlTmFtZWQ6QCJkYXRhLWRldGVjdG9ycyJdOwor
ICAgIFt3ZWJWaWV3IGV4cGVjdEVsZW1lbnRDb3VudDowIHF1ZXJ5U2VsZWN0b3I6QCJhW3gtYXBw
bGUtZGF0YS1kZXRlY3RvcnM9dHJ1ZV0iXTsKKyAgICBFWFBFQ1RfRVEoMFUsIFt3ZWJWaWV3IF9k
YXRhRGV0ZWN0aW9uUmVzdWx0c10uY291bnQpOworCisgICAgYXV0byBjaGVja0RhdGFEZXRlY3Rp
b25SZXN1bHRzID0gW10gKE5TQXJyYXk8RERTY2FubmVyUmVzdWx0ICo+ICpyZXN1bHRzKSB7Cisg
ICAgICAgIEVYUEVDVF9FUSgzVSwgcmVzdWx0cy5jb3VudCk7CisgICAgICAgIEVYUEVDVF9FUShE
RFJlc3VsdENhdGVnb3J5VW5rbm93biwgcmVzdWx0c1swXS5jYXRlZ29yeSk7CisgICAgICAgIEVY
UEVDVF9UUlVFKFtyZXN1bHRzWzBdLnZhbHVlIGNvbnRhaW5zU3RyaW5nOkAiKzEtMjM0LTU2Ny04
OTAwIl0pOworICAgICAgICBFWFBFQ1RfVFJVRShbcmVzdWx0c1swXS52YWx1ZSBjb250YWluc1N0
cmluZzpAImh0dHBzOi8vd3d3LmFwcGxlLmNvbSJdKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoW3Jl
c3VsdHNbMF0udmFsdWUgY29udGFpbnNTdHJpbmc6QCIyIEFwcGxlIFBhcmsgV2F5LCBDdXBlcnRp
bm8gOTUwMTQiXSk7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUSgiU2lnbmF0dXJlQmxvY2siLCBy
ZXN1bHRzWzBdLnR5cGUpOworICAgICAgICBFWFBFQ1RfRVEoRERSZXN1bHRDYXRlZ29yeUNhbGVu
ZGFyRXZlbnQsIHJlc3VsdHNbMV0uY2F0ZWdvcnkpOworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEo
IkRhdGUiLCByZXN1bHRzWzFdLnR5cGUpOworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoIkRlY2Vt
YmVyIDIxLCAyMDIxIiwgcmVzdWx0c1sxXS52YWx1ZSk7CisgICAgICAgIEVYUEVDVF9FUShERFJl
c3VsdENhdGVnb3J5TWlzYywgcmVzdWx0c1syXS5jYXRlZ29yeSk7CisgICAgICAgIEVYUEVDVF9X
S19TVFJFUSgiRmxpZ2h0SW5mb3JtYXRpb24iLCByZXN1bHRzWzJdLnR5cGUpOworICAgICAgICBF
WFBFQ1RfV0tfU1RSRVEoIkFDNzgwIiwgcmVzdWx0c1syXS52YWx1ZSk7CisgICAgfTsKKworICAg
IFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlEZXRlY3REYXRhV2l0aFR5cGVzOldLRGF0YURldGVjdG9y
VHlwZUFsbF07CisgICAgW3dlYlZpZXcgZXhwZWN0RWxlbWVudENvdW50OjUgcXVlcnlTZWxlY3Rv
cjpAImFbeC1hcHBsZS1kYXRhLWRldGVjdG9ycz10cnVlXSJdOworICAgIGNoZWNrRGF0YURldGVj
dGlvblJlc3VsdHMoW3dlYlZpZXcgX2RhdGFEZXRlY3Rpb25SZXN1bHRzXSk7CisKKyAgICBbd2Vi
VmlldyBzeW5jaHJvbm91c2x5UmVtb3ZlQWxsRGF0YURldGVjdGVkQ29udGVudF07CisgICAgW3dl
YlZpZXcgZXhwZWN0RWxlbWVudENvdW50OjAgcXVlcnlTZWxlY3RvcjpAImFbeC1hcHBsZS1kYXRh
LWRldGVjdG9ycz10cnVlXSJdOworICAgIEVYUEVDVF9FUSgwVSwgW3dlYlZpZXcgX2RhdGFEZXRl
Y3Rpb25SZXN1bHRzXS5jb3VudCk7CisKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5RGV0ZWN0
RGF0YVdpdGhUeXBlczpXS0RhdGFEZXRlY3RvclR5cGVBZGRyZXNzIHwgV0tEYXRhRGV0ZWN0b3JU
eXBlUGhvbmVOdW1iZXJdOworICAgIFt3ZWJWaWV3IGV4cGVjdEVsZW1lbnRDb3VudDoyIHF1ZXJ5
U2VsZWN0b3I6QCJhW3gtYXBwbGUtZGF0YS1kZXRlY3RvcnM9dHJ1ZV0iXTsKKyAgICBjaGVja0Rh
dGFEZXRlY3Rpb25SZXN1bHRzKFt3ZWJWaWV3IF9kYXRhRGV0ZWN0aW9uUmVzdWx0c10pOworfQor
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvV0tBdHRhY2htZW50VGVzdHMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL1dLQXR0YWNobWVudFRlc3RzLm1tCmluZGV4IGUyY2U3MmE0MzUzMzNmZGUwNzEwMmVh
ZjdkOGMwMDJkYTA5NGQ3YzUuLmQ0OGY0M2VmNzIxMjFlMmI1OTdhODc1NzgwMzlmNzc4ZTk0N2Y1
NzAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tB
dHRhY2htZW50VGVzdHMubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9XS0F0dGFjaG1lbnRUZXN0cy5tbQpAQCAtMjE1LDM3ICsyMTUsNiBAQCBzdGF0aWMgTlNE
YXRhICp0ZXN0UERGRGF0YSgpCiAKIEBpbXBsZW1lbnRhdGlvbiBUZXN0V0tXZWJWaWV3IChBdHRh
Y2htZW50VGVzdGluZykKIAotLSAoTlNBcnJheTxOU1N0cmluZyAqPiAqKXRhZ3NJbkJvZHkKLXsK
LSAgICByZXR1cm4gW3NlbGYgb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAIkFycmF5LmZy
b20oZG9jdW1lbnQuYm9keS5nZXRFbGVtZW50c0J5VGFnTmFtZSgnKicpKS5tYXAoZSA9PiBlLnRh
Z05hbWUpIl07Ci19Ci0KLS0gKHZvaWQpZXhwZWN0RWxlbWVudFRhZ3NJbk9yZGVyOihOU0FycmF5
PE5TU3RyaW5nICo+ICopdGFnTmFtZXMKLXsKLSAgICBhdXRvIHJlbWFpbmluZ1RhZ3MgPSBhZG9w
dE5TKFt0YWdOYW1lcyBtdXRhYmxlQ29weV0pOwotICAgIE5TQXJyYXk8TlNTdHJpbmcgKj4gKnRh
Z3NJbkJvZHkgPSBzZWxmLnRhZ3NJbkJvZHk7Ci0gICAgZm9yIChOU1N0cmluZyAqdGFnIGluIHRh
Z3NJbkJvZHkucmV2ZXJzZU9iamVjdEVudW1lcmF0b3IpIHsKLSAgICAgICAgaWYgKFt0YWcgaXNF
cXVhbFRvU3RyaW5nOltyZW1haW5pbmdUYWdzIGxhc3RPYmplY3RdXSkKLSAgICAgICAgICAgIFty
ZW1haW5pbmdUYWdzIHJlbW92ZUxhc3RPYmplY3RdOwotICAgICAgICBpZiAoIVtyZW1haW5pbmdU
YWdzIGNvdW50XSkKLSAgICAgICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBFWFBFQ1RfRVEoW3Jl
bWFpbmluZ1RhZ3MgY291bnRdLCAwVSk7Ci0gICAgaWYgKFtyZW1haW5pbmdUYWdzIGNvdW50XSkK
LSAgICAgICAgTlNMb2coQCJFeHBlY3RlZCB0byBmaW5kIG9yZGVyZWQgdGFnczogJUAgaW46ICVA
IiwgdGFnTmFtZXMsIHRhZ3NJbkJvZHkpOwotfQotCi0tICh2b2lkKWV4cGVjdEVsZW1lbnRDb3Vu
dDooTlNJbnRlZ2VyKWNvdW50IHRhZ05hbWU6KE5TU3RyaW5nICopdGFnTmFtZQotewotICAgIE5T
U3RyaW5nICpzY3JpcHQgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAImRvY3VtZW50LnF1
ZXJ5U2VsZWN0b3JBbGwoJyVAJykubGVuZ3RoIiwgdGFnTmFtZV07Ci0gICAgRVhQRUNUX0VRKGNv
dW50LCBbc2VsZiBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OnNjcmlwdF0uaW50ZWdlclZh
bHVlKTsKLX0KLQotLSAodm9pZClleHBlY3RFbGVtZW50VGFnOihOU1N0cmluZyAqKXRhZ05hbWUg
dG9Db21lQmVmb3JlOihOU1N0cmluZyAqKW90aGVyVGFnTmFtZQotewotICAgIFtzZWxmIGV4cGVj
dEVsZW1lbnRUYWdzSW5PcmRlcjpAW3RhZ05hbWUsIG90aGVyVGFnTmFtZV1dOwotfQotCiAtIChf
V0tBdHRhY2htZW50ICopc3luY2hyb25vdXNseUluc2VydEF0dGFjaG1lbnRXaXRoRmlsZVdyYXBw
ZXI6KE5TRmlsZVdyYXBwZXIgKilmaWxlV3JhcHBlciBjb250ZW50VHlwZTooTlNTdHJpbmcgKilj
b250ZW50VHlwZQogewogICAgIF9fYmxvY2sgYm9vbCBkb25lID0gZmFsc2U7CkBAIC04MzEsNyAr
ODAwLDcgQEAgVEVTVChXS0F0dGFjaG1lbnRUZXN0cywgSW5zZXJ0Rm9sZGVyQW5kRmlsZVdpdGhV
bmtub3duRXh0ZW5zaW9uKQogICAgIH0KIAogICAgIGF1dG8gY2hlY2tBdHRhY2htZW50Q29uc2lz
dGVuY3kgPSBbd2ViVmlldywgZmlsZSwgZm9sZGVyXSAoX1dLQXR0YWNobWVudCAqZXhwZWN0ZWRG
aWxlQXR0YWNobWVudCwgX1dLQXR0YWNobWVudCAqZXhwZWN0ZWRGb2xkZXJBdHRhY2htZW50KSB7
Ci0gICAgICAgIFt3ZWJWaWV3IGV4cGVjdEVsZW1lbnRDb3VudDoyIHRhZ05hbWU6QCJBVFRBQ0hN
RU5UIl07CisgICAgICAgIFt3ZWJWaWV3IGV4cGVjdEVsZW1lbnRDb3VudDoyIHF1ZXJ5U2VsZWN0
b3I6QCJBVFRBQ0hNRU5UIl07CiAgICAgICAgIEVYUEVDVF9UUlVFKFVUVHlwZUNvbmZvcm1zVG8o
KF9fYnJpZGdlIENGU3RyaW5nUmVmKVt3ZWJWaWV3IHZhbHVlT2ZBdHRyaWJ1dGU6QCJ0eXBlIiBm
b3JRdWVyeVNlbGVjdG9yOkAiYXR0YWNobWVudFt0aXRsZT1mb2xkZXJdIl0sIGtVVFR5cGVEaXJl
Y3RvcnkpKTsKICAgICAgICAgRVhQRUNUX1RSVUUoVVRUeXBlQ29uZm9ybXNUbygoX19icmlkZ2Ug
Q0ZTdHJpbmdSZWYpW3dlYlZpZXcgdmFsdWVPZkF0dHJpYnV0ZTpAInR5cGUiIGZvclF1ZXJ5U2Vs
ZWN0b3I6QCJhdHRhY2htZW50W3RpdGxlXj10ZXN0XSJdLCBrVVRUeXBlRGF0YSkpOwogICAgICAg
ICBFWFBFQ1RfV0tfU1RSRVEoZXhwZWN0ZWRGaWxlQXR0YWNobWVudC51bmlxdWVJZGVudGlmaWVy
LCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQucXVlcnlT
ZWxlY3RvcignYXR0YWNobWVudFt0aXRsZV49dGVzdF0nKS51bmlxdWVJZGVudGlmaWVyIl0pOwpA
QCAtOTI4LDcgKzg5Nyw3IEBAIFRFU1QoV0tBdHRhY2htZW50VGVzdHMsIFJlbW92ZU5ld2xpbmVz
QmVmb3JlUGFzdGVkSW1hZ2UpCiAgICAgICAgIFt3ZWJWaWV3IF9zeW5jaHJvbm91c2x5RXhlY3V0
ZUVkaXRDb21tYW5kOkAiRGVsZXRlQmFja3dhcmQiIGFyZ3VtZW50Om5pbF07CiAgICAgICAgIFt3
ZWJWaWV3IF9zeW5jaHJvbm91c2x5RXhlY3V0ZUVkaXRDb21tYW5kOkAiRGVsZXRlQmFja3dhcmQi
IGFyZ3VtZW50Om5pbF07CiAgICAgICAgIG9ic2VydmVyLmV4cGVjdEF0dGFjaG1lbnRVcGRhdGVz
KEBbIF0sIEBbIF0pOwotICAgICAgICBbd2ViVmlldyBleHBlY3RFbGVtZW50Q291bnQ6MCB0YWdO
YW1lOkAiQlIiXTsKKyAgICAgICAgW3dlYlZpZXcgZXhwZWN0RWxlbWVudENvdW50OjAgcXVlcnlT
ZWxlY3RvcjpAIkJSIl07CiAgICAgfQogfQogCkBAIC05NzEsMTMgKzk0MCwxMyBAQCBURVNUKFdL
QXR0YWNobWVudFRlc3RzLCBNb3ZlUGFzdGVkSW1hZ2VCeURyYWdnaW5nKQogICAgIFt3ZWJWaWV3
IF9leGVjdXRlRWRpdENvbW1hbmQ6QCJJbnNlcnRIVE1MIiBhcmd1bWVudDpAIjxzdHJvbmc+dGV4
dDwvc3Ryb25nPiIgY29tcGxldGlvbjpuaWxdOwogICAgIFt3ZWJWaWV3IF9zeW5jaHJvbm91c2x5
RXhlY3V0ZUVkaXRDb21tYW5kOkAiSW5zZXJ0UGFyYWdyYXBoIiBhcmd1bWVudDpuaWxdOwogICAg
IFt3ZWJWaWV3IGV4cGVjdEVsZW1lbnRUYWc6QCJJTUciIHRvQ29tZUJlZm9yZTpAIlNUUk9ORyJd
OwotICAgIFt3ZWJWaWV3IGV4cGVjdEVsZW1lbnRDb3VudDoxIHRhZ05hbWU6QCJJTUciXTsKKyAg
ICBbd2ViVmlldyBleHBlY3RFbGVtZW50Q291bnQ6MSBxdWVyeVNlbGVjdG9yOkAiSU1HIl07CiAK
ICAgICAvLyBEcmFnIHRoZSBhdHRhY2htZW50IGVsZW1lbnQgdG8gc29tZXdoZXJlIGJlbG93IHRo
ZSBzdHJvbmcgdGV4dC4KICAgICBbc2ltdWxhdG9yIHJ1bkZyb206Q0dQb2ludE1ha2UoNTAsIDUw
KSB0bzpDR1BvaW50TWFrZSg1MCwgMzUwKV07CiAKICAgICBbd2ViVmlldyBleHBlY3RFbGVtZW50
VGFnOkAiU1RST05HIiB0b0NvbWVCZWZvcmU6QCJJTUciXTsKLSAgICBbd2ViVmlldyBleHBlY3RF
bGVtZW50Q291bnQ6MSB0YWdOYW1lOkAiSU1HIl07CisgICAgW3dlYlZpZXcgZXhwZWN0RWxlbWVu
dENvdW50OjEgcXVlcnlTZWxlY3RvcjpAIklNRyJdOwogICAgIEVYUEVDVF9FUShbc2ltdWxhdG9y
IGluc2VydGVkQXR0YWNobWVudHNdLmNvdW50LCBbc2ltdWxhdG9yIHJlbW92ZWRBdHRhY2htZW50
c10uY291bnQpOwogCiAgICAgW3NpbXVsYXRvciBlbmREYXRhVHJhbnNmZXJdOwpAQCAtMTAzNCw4
ICsxMDAzLDggQEAgVEVTVChXS0F0dGFjaG1lbnRUZXN0cywgSW5zZXJ0UGFzdGVkQXR0cmlidXRl
ZFN0cmluZ0NvbnRhaW5pbmdNdWx0aXBsZUF0dGFjaG1lbnQKICAgICB9CiAKICAgICBFWFBFQ1Rf
VFJVRSh6aXBBdHRhY2htZW50ICYmIGltYWdlQXR0YWNobWVudCAmJiBwZGZBdHRhY2htZW50KTsK
LSAgICBbd2ViVmlldyBleHBlY3RFbGVtZW50Q291bnQ6MiB0YWdOYW1lOkAiQVRUQUNITUVOVCJd
OwotICAgIFt3ZWJWaWV3IGV4cGVjdEVsZW1lbnRDb3VudDoxIHRhZ05hbWU6QCJJTUciXTsKKyAg
ICBbd2ViVmlldyBleHBlY3RFbGVtZW50Q291bnQ6MiBxdWVyeVNlbGVjdG9yOkAiQVRUQUNITUVO
VCJdOworICAgIFt3ZWJWaWV3IGV4cGVjdEVsZW1lbnRDb3VudDoxIHF1ZXJ5U2VsZWN0b3I6QCJJ
TUciXTsKICAgICBFWFBFQ1RfV0tfU1RSRVEoImFwcGxpY2F0aW9uL3BkZiIsIFt3ZWJWaWV3IHN0
cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdh
dHRhY2htZW50JylbMF0uZ2V0QXR0cmlidXRlKCd0eXBlJykiXSk7CiAKICAgICBOU1N0cmluZyAq
emlwQXR0YWNobWVudFR5cGUgPSBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0
OkAiZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnYXR0YWNobWVudCcpWzFdLmdldEF0dHJpYnV0
ZSgndHlwZScpIl07CkBAIC0xMzM4LDcgKzEzMDcsNyBAQCBURVNUKFdLQXR0YWNobWVudFRlc3Rz
LCBQYXN0ZVdlYkFyY2hpdmVDb250YWluaW5nSW1hZ2VzKQogCiAgICAgT2JzZXJ2ZUF0dGFjaG1l
bnRVcGRhdGVzRm9yU2NvcGUgb2JzZXJ2ZXIod2ViVmlldy5nZXQoKSk7CiAgICAgW3dlYlZpZXcg
X3N5bmNocm9ub3VzbHlFeGVjdXRlRWRpdENvbW1hbmQ6QCJQYXN0ZSIgYXJndW1lbnQ6bmlsXTsK
LSAgICBbd2ViVmlldyBleHBlY3RFbGVtZW50Q291bnQ6MiB0YWdOYW1lOkAiSU1HIl07CisgICAg
W3dlYlZpZXcgZXhwZWN0RWxlbWVudENvdW50OjIgcXVlcnlTZWxlY3RvcjpAIklNRyJdOwogCiAg
ICAgZm9yIChfV0tBdHRhY2htZW50ICphdHRhY2htZW50IGluIG9ic2VydmVyLm9ic2VydmVyKCku
aW5zZXJ0ZWQpIHsKICAgICAgICAgaWYgKFthdHRhY2htZW50LmluZm8uY29udGVudFR5cGUgaXNF
cXVhbFRvU3RyaW5nOkAiaW1hZ2UvcG5nIl0pCkBAIC0xNDczLDcgKzE0NDIsNyBAQCBURVNUKFdL
QXR0YWNobWVudFRlc3RzLCBDb3B5QW5kUGFzdGVCZXR3ZWVuV2ViVmlld3MpCiAgICAgYXV0byBz
ZWNvbmRXZWJWaWV3ID0gd2ViVmlld0ZvclRlc3RpbmdBdHRhY2htZW50cygpOwogICAgIE9ic2Vy
dmVBdHRhY2htZW50VXBkYXRlc0ZvclNjb3BlIG9ic2VydmVyKHNlY29uZFdlYlZpZXcuZ2V0KCkp
OwogICAgIFtzZWNvbmRXZWJWaWV3IHBhc3RlOm5pbF07Ci0gICAgW3NlY29uZFdlYlZpZXcgZXhw
ZWN0RWxlbWVudENvdW50OjMgdGFnTmFtZTpAImF0dGFjaG1lbnQiXTsKKyAgICBbc2Vjb25kV2Vi
VmlldyBleHBlY3RFbGVtZW50Q291bnQ6MyBxdWVyeVNlbGVjdG9yOkAiYXR0YWNobWVudCJdOwog
ICAgIEVYUEVDVF9FUSgzVSwgb2JzZXJ2ZXIub2JzZXJ2ZXIoKS5pbnNlcnRlZC5jb3VudCk7CiAK
ICAgICBOU1N0cmluZyAqcGxhaW5GaWxlSWRlbnRpZmllciA9IFtzZWNvbmRXZWJWaWV3IHN0cmlu
Z0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdhdHRhY2ht
ZW50W3RpdGxlXj10ZXN0XScpLnVuaXF1ZUlkZW50aWZpZXIiXTsKQEAgLTE1MTYsOCArMTQ4NSw4
IEBAIFRFU1QoV0tBdHRhY2htZW50VGVzdHNNYWMsIEluc2VydFBhc3RlZEZpbGVVUkxzQXNBdHRh
Y2htZW50cykKICAgICAgICAgRVhQRUNUX0VRKDJVLCBbaW5zZXJ0ZWRBdHRhY2htZW50cyBjb3Vu
dF0pOwogICAgIH0KIAotICAgIFt3ZWJWaWV3IGV4cGVjdEVsZW1lbnRDb3VudDoxIHRhZ05hbWU6
QCJBVFRBQ0hNRU5UIl07Ci0gICAgW3dlYlZpZXcgZXhwZWN0RWxlbWVudENvdW50OjEgdGFnTmFt
ZTpAIklNRyJdOworICAgIFt3ZWJWaWV3IGV4cGVjdEVsZW1lbnRDb3VudDoxIHF1ZXJ5U2VsZWN0
b3I6QCJBVFRBQ0hNRU5UIl07CisgICAgW3dlYlZpZXcgZXhwZWN0RWxlbWVudENvdW50OjEgcXVl
cnlTZWxlY3RvcjpAIklNRyJdOwogICAgIEVYUEVDVF9XS19TVFJFUSgiYXBwbGljYXRpb24vcGRm
IiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LnF1ZXJ5
U2VsZWN0b3IoJ2F0dGFjaG1lbnQnKS5nZXRBdHRyaWJ1dGUoJ3R5cGUnKSJdKTsKICAgICBFWFBF
Q1RfV0tfU1RSRVEoInRlc3QucGRmIiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNj
cmlwdDpAImRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2F0dGFjaG1lbnQnKS5nZXRBdHRyaWJ1dGUo
J3RpdGxlJykiXSk7CiAKQEAgLTE1NTIsOCArMTUyMSw4IEBAIFRFU1QoV0tBdHRhY2htZW50VGVz
dHNNYWMsIEluc2VydERyb3BwZWRGaWxlUHJvbWlzZXNBc0F0dGFjaG1lbnRzKQogCiAgICAgW3Np
bXVsYXRvciBydW5Gcm9tOkNHUG9pbnRNYWtlKDAsIDApIHRvOkNHUG9pbnRNYWtlKDUwLCA1MCld
OwogCi0gICAgW3dlYlZpZXcgZXhwZWN0RWxlbWVudENvdW50OjEgdGFnTmFtZTpAIkFUVEFDSE1F
TlQiXTsKLSAgICBbd2ViVmlldyBleHBlY3RFbGVtZW50Q291bnQ6MSB0YWdOYW1lOkAiSU1HIl07
CisgICAgW3dlYlZpZXcgZXhwZWN0RWxlbWVudENvdW50OjEgcXVlcnlTZWxlY3RvcjpAIkFUVEFD
SE1FTlQiXTsKKyAgICBbd2ViVmlldyBleHBlY3RFbGVtZW50Q291bnQ6MSBxdWVyeVNlbGVjdG9y
OkAiSU1HIl07CiAgICAgRVhQRUNUX0VRKDJVLCBbc2ltdWxhdG9yIGluc2VydGVkQXR0YWNobWVu
dHNdLmNvdW50KTsKIAogICAgIGF1dG8gaW5zZXJ0ZWRBdHRhY2htZW50cyA9IHJldGFpblB0cihb
c2ltdWxhdG9yIGluc2VydGVkQXR0YWNobWVudHNdKTsKQEAgLTE1NzMsOCArMTU0Miw4IEBAIFRF
U1QoV0tBdHRhY2htZW50VGVzdHNNYWMsIEluc2VydERyb3BwZWRGaWxlUHJvbWlzZXNBc0F0dGFj
aG1lbnRzKQogICAgIFt3ZWJWaWV3IF9zeW5jaHJvbm91c2x5RXhlY3V0ZUVkaXRDb21tYW5kOkAi
RGVsZXRlQmFja3dhcmQiIGFyZ3VtZW50Om5pbF07CiAgICAgYXV0byByZW1vdmVkQXR0YWNobWVu
dHMgPSByZXRhaW5QdHIoW3NpbXVsYXRvciByZW1vdmVkQXR0YWNobWVudHNdKTsKICAgICBFWFBF
Q1RfRVEoMlUsIFtyZW1vdmVkQXR0YWNobWVudHMgY291bnRdKTsKLSAgICBbd2ViVmlldyBleHBl
Y3RFbGVtZW50Q291bnQ6MCB0YWdOYW1lOkAiQVRUQUNITUVOVCJdOwotICAgIFt3ZWJWaWV3IGV4
cGVjdEVsZW1lbnRDb3VudDowIHRhZ05hbWU6QCJJTUciXTsKKyAgICBbd2ViVmlldyBleHBlY3RF
bGVtZW50Q291bnQ6MCBxdWVyeVNlbGVjdG9yOkAiQVRUQUNITUVOVCJdOworICAgIFt3ZWJWaWV3
IGV4cGVjdEVsZW1lbnRDb3VudDowIHF1ZXJ5U2VsZWN0b3I6QCJJTUciXTsKICAgICBFWFBFQ1Rf
VFJVRShbcmVtb3ZlZEF0dGFjaG1lbnRzIGNvbnRhaW5zT2JqZWN0OltpbnNlcnRlZEF0dGFjaG1l
bnRzIGZpcnN0T2JqZWN0XV0pOwogICAgIEVYUEVDVF9UUlVFKFtyZW1vdmVkQXR0YWNobWVudHMg
Y29udGFpbnNPYmplY3Q6W2luc2VydGVkQXR0YWNobWVudHMgbGFzdE9iamVjdF1dKTsKIH0KQEAg
LTE2ODEsNyArMTY1MCw3IEBAIFRFU1QoV0tBdHRhY2htZW50VGVzdHNJT1MsIEluc2VydERyb3Bw
ZWRSaWNoQW5kUGxhaW5UZXh0RmlsZXNBc0F0dGFjaG1lbnRzKQogICAgIGZvciAoX1dLQXR0YWNo
bWVudCAqYXR0YWNobWVudCBpbiBbZHJhZ0FuZERyb3BTaW11bGF0b3IgaW5zZXJ0ZWRBdHRhY2ht
ZW50c10pCiAgICAgICAgIEVYUEVDVF9HVChbYXR0YWNobWVudCBpbmZvXS5kYXRhLmxlbmd0aCwg
MFUpOwogCi0gICAgW3dlYlZpZXcgZXhwZWN0RWxlbWVudENvdW50OjIgdGFnTmFtZTpAIkFUVEFD
SE1FTlQiXTsKKyAgICBbd2ViVmlldyBleHBlY3RFbGVtZW50Q291bnQ6MiBxdWVyeVNlbGVjdG9y
OkAiQVRUQUNITUVOVCJdOwogICAgIEVYUEVDVF9XS19TVFJFUSgiaGVsbG8ucnRmIiwgW3dlYlZp
ZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JB
bGwoJ2F0dGFjaG1lbnQnKVswXS5nZXRBdHRyaWJ1dGUoJ3RpdGxlJykiXSk7CiAgICAgRVhQRUNU
X1dLX1NUUkVRKCJ0ZXh0L3J0ZiIsIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3Jp
cHQ6QCJkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdhdHRhY2htZW50JylbMF0uZ2V0QXR0cmli
dXRlKCd0eXBlJykiXSk7CiAgICAgRVhQRUNUX1dLX1NUUkVRKCJ3b3JsZC50eHQiLCBbd2ViVmll
dyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQucXVlcnlTZWxlY3RvckFs
bCgnYXR0YWNobWVudCcpWzFdLmdldEF0dHJpYnV0ZSgndGl0bGUnKSJdKTsKQEAgLTE3MDYsNyAr
MTY3NSw3IEBAIFRFU1QoV0tBdHRhY2htZW50VGVzdHNJT1MsIEluc2VydERyb3BwZWRaaXBBcmNo
aXZlQXNBdHRhY2htZW50KQogICAgIEVYUEVDVF9FUSgxVSwgW2RyYWdBbmREcm9wU2ltdWxhdG9y
IGluc2VydGVkQXR0YWNobWVudHNdLmNvdW50KTsKICAgICBFWFBFQ1RfRVEoMFUsIFtkcmFnQW5k
RHJvcFNpbXVsYXRvciByZW1vdmVkQXR0YWNobWVudHNdLmNvdW50KTsKICAgICBbW2RyYWdBbmRE
cm9wU2ltdWxhdG9yIGluc2VydGVkQXR0YWNobWVudHNdLmZpcnN0T2JqZWN0IGV4cGVjdFJlcXVl
c3RlZERhdGFUb0JlOmRhdGFdOwotICAgIFt3ZWJWaWV3IGV4cGVjdEVsZW1lbnRDb3VudDoxIHRh
Z05hbWU6QCJBVFRBQ0hNRU5UIl07CisgICAgW3dlYlZpZXcgZXhwZWN0RWxlbWVudENvdW50OjEg
cXVlcnlTZWxlY3RvcjpAIkFUVEFDSE1FTlQiXTsKICAgICBFWFBFQ1RfV0tfU1RSRVEoImFyY2hp
dmUuemlwIiwgW3dlYlZpZXcgdmFsdWVPZkF0dHJpYnV0ZTpAInRpdGxlIiBmb3JRdWVyeVNlbGVj
dG9yOkAiYXR0YWNobWVudCJdKTsKICAgICBFWFBFQ1RfV0tfU1RSRVEoImFwcGxpY2F0aW9uL3pp
cCIsIFt3ZWJWaWV3IHZhbHVlT2ZBdHRyaWJ1dGU6QCJ0eXBlIiBmb3JRdWVyeVNlbGVjdG9yOkAi
YXR0YWNobWVudCJdKTsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvZGF0YS1kZXRlY3RvcnMuaHRtbCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvZGF0YS1kZXRlY3RvcnMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mOWY4N2FmNGY4
ODg5ZWI3NDQ0NGI1OTAwZTYwYTE5ZmU3MWU4NWQ1Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9kYXRhLWRldGVjdG9ycy5odG1sCkBAIC0w
LDAgKzEsMzAgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8bWV0YSBuYW1lPSJ2aWV3cG9y
dCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEiPgorPGJvZHk+
Cis8dGFibGU+Cis8dGJvZHk+Cis8dHI+CisgICAgPHRkPlRlbGVwaG9uZSBudW1iZXI8L3RkPgor
ICAgIDx0ZD4rMS0yMzQtNTY3LTg5MDA8L3RkPgorPC90cj4KKzx0cj4KKyAgICA8dGQ+TGluazwv
dGQ+CisgICAgPHRkPmh0dHBzOi8vd3d3LmFwcGxlLmNvbTwvdGQ+Cis8L3RyPgorPHRyPgorICAg
IDx0ZD5BZGRyZXNzPC90ZD4KKyAgICA8dGQ+MiBBcHBsZSBQYXJrIFdheSwgQ3VwZXJ0aW5vIDk1
MDE0PC90ZD4KKzwvdHI+Cis8dHI+CisgICAgPHRkPkNhbGVuZGFyIGV2ZW50PC90ZD4KKyAgICA8
dGQ+RGVjZW1iZXIgMjEsIDIwMjE8L3RkPgorPC90cj4KKzx0cj4KKyAgICA8dGQ+RmxpZ2h0IG51
bWJlcjwvdGQ+CisgICAgPHRkPkFDNzgwPC90ZD4KKzwvdHI+Cis8L3Rib2R5PgorPC90YWJsZT4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2Ev
VGVzdFdLV2ViVmlldy5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3
LmgKaW5kZXggNTQ4ODM2OTc1NjQ2MGRjMWM3ZDVjOTdlMzcyMTBmYmNkODMxMDE4Yi4uODgzYWJk
MWNhY2E5ZDc1ZTk1ZTQ1MDE5Y2FlMGJkNDJlZjUwNWRlMCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3LmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9jb2NvYS9UZXN0V0tXZWJWaWV3LmgKQEAgLTQ4LDcgKzQ4LDE0IEBACiBAZW5kCiAKIEBpbnRl
cmZhY2UgV0tXZWJWaWV3IChUZXN0V2ViS2l0QVBJKQorQHByb3BlcnR5IChub25hdG9taWMsIHJl
YWRvbmx5KSBOU0FycmF5PE5TU3RyaW5nICo+ICp0YWdzSW5Cb2R5OwogLSAoQk9PTClfc3luY2hy
b25vdXNseUV4ZWN1dGVFZGl0Q29tbWFuZDooTlNTdHJpbmcgKiljb21tYW5kIGFyZ3VtZW50OihO
U1N0cmluZyAqKWFyZ3VtZW50OworLSAodm9pZClleHBlY3RFbGVtZW50VGFnc0luT3JkZXI6KE5T
QXJyYXk8TlNTdHJpbmcgKj4gKil0YWdOYW1lczsKKy0gKHZvaWQpZXhwZWN0RWxlbWVudENvdW50
OihOU0ludGVnZXIpY291bnQgcXVlcnlTZWxlY3RvcjooTlNTdHJpbmcgKilxdWVyeVNlbGVjdG9y
OworLSAodm9pZClleHBlY3RFbGVtZW50VGFnOihOU1N0cmluZyAqKXRhZ05hbWUgdG9Db21lQmVm
b3JlOihOU1N0cmluZyAqKW90aGVyVGFnTmFtZTsKKy0gKE5TU3RyaW5nICopc3RyaW5nQnlFdmFs
dWF0aW5nSmF2YVNjcmlwdDooTlNTdHJpbmcgKilzY3JpcHQ7CistIChpZClvYmplY3RCeUV2YWx1
YXRpbmdKYXZhU2NyaXB0V2l0aFVzZXJHZXN0dXJlOihOU1N0cmluZyAqKXNjcmlwdDsKKy0gKGlk
KW9iamVjdEJ5RXZhbHVhdGluZ0phdmFTY3JpcHQ6KE5TU3RyaW5nICopc2NyaXB0OwogQGVuZAog
CiBAaW50ZXJmYWNlIFRlc3RNZXNzYWdlSGFuZGxlciA6IE5TT2JqZWN0IDxXS1NjcmlwdE1lc3Nh
Z2VIYW5kbGVyPgpAQCAtNjQsOSArNzEsNiBAQAogLSAodm9pZClzeW5jaHJvbm91c2x5TG9hZEhU
TUxTdHJpbmc6KE5TU3RyaW5nICopaHRtbDsKIC0gKHZvaWQpc3luY2hyb25vdXNseUxvYWRIVE1M
U3RyaW5nOihOU1N0cmluZyAqKWh0bWwgYmFzZVVSTDooTlNVUkwgKil1cmw7CiAtICh2b2lkKXN5
bmNocm9ub3VzbHlMb2FkVGVzdFBhZ2VOYW1lZDooTlNTdHJpbmcgKilwYWdlTmFtZTsKLS0gKGlk
KW9iamVjdEJ5RXZhbHVhdGluZ0phdmFTY3JpcHQ6KE5TU3RyaW5nICopc2NyaXB0OwotLSAoaWQp
b2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdFdpdGhVc2VyR2VzdHVyZTooTlNTdHJpbmcgKilz
Y3JpcHQ7Ci0tIChOU1N0cmluZyAqKXN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6KE5TU3Ry
aW5nICopc2NyaXB0OwogLSAodm9pZCl3YWl0Rm9yTWVzc2FnZTooTlNTdHJpbmcgKiltZXNzYWdl
OwogLSAodm9pZClwZXJmb3JtQWZ0ZXJMb2FkaW5nOihkaXNwYXRjaF9ibG9ja190KWFjdGlvbnM7
CiAtICh2b2lkKXdhaXRGb3JOZXh0UHJlc2VudGF0aW9uVXBkYXRlOwpkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tCmluZGV4IGNjYmVmZjgyNGQ2NTVjMTQzZmIwYzAz
MWExMTRlZTZmN2Q0ODNlZGYuLmU4ZWFkZjg2ZDNlODNjZmU4NDQxZjIwN2JmZjQ0M2IxOWRiOTUx
NmUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5t
bQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcubW0KQEAgLTc4
LDYgKzc4LDcyIEBAIC0gKEJPT0wpX3N5bmNocm9ub3VzbHlFeGVjdXRlRWRpdENvbW1hbmQ6KE5T
U3RyaW5nICopY29tbWFuZCBhcmd1bWVudDooTlNTdHJpbmcKICAgICByZXR1cm4gc3VjY2VzczsK
IH0KIAorLSAoTlNBcnJheTxOU1N0cmluZyAqPiAqKXRhZ3NJbkJvZHkKK3sKKyAgICByZXR1cm4g
W3NlbGYgb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAIkFycmF5LmZyb20oZG9jdW1lbnQu
Ym9keS5nZXRFbGVtZW50c0J5VGFnTmFtZSgnKicpKS5tYXAoZSA9PiBlLnRhZ05hbWUpIl07Cit9
CisKKy0gKHZvaWQpZXhwZWN0RWxlbWVudFRhZ3NJbk9yZGVyOihOU0FycmF5PE5TU3RyaW5nICo+
ICopdGFnTmFtZXMKK3sKKyAgICBhdXRvIHJlbWFpbmluZ1RhZ3MgPSBhZG9wdE5TKFt0YWdOYW1l
cyBtdXRhYmxlQ29weV0pOworICAgIE5TQXJyYXk8TlNTdHJpbmcgKj4gKnRhZ3NJbkJvZHkgPSBz
ZWxmLnRhZ3NJbkJvZHk7CisgICAgZm9yIChOU1N0cmluZyAqdGFnIGluIHRhZ3NJbkJvZHkucmV2
ZXJzZU9iamVjdEVudW1lcmF0b3IpIHsKKyAgICAgICAgaWYgKFt0YWcgaXNFcXVhbFRvU3RyaW5n
OltyZW1haW5pbmdUYWdzIGxhc3RPYmplY3RdXSkKKyAgICAgICAgICAgIFtyZW1haW5pbmdUYWdz
IHJlbW92ZUxhc3RPYmplY3RdOworICAgICAgICBpZiAoIVtyZW1haW5pbmdUYWdzIGNvdW50XSkK
KyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBFWFBFQ1RfRVEoW3JlbWFpbmluZ1RhZ3Mg
Y291bnRdLCAwVSk7CisgICAgaWYgKFtyZW1haW5pbmdUYWdzIGNvdW50XSkKKyAgICAgICAgTlNM
b2coQCJFeHBlY3RlZCB0byBmaW5kIG9yZGVyZWQgdGFnczogJUAgaW46ICVAIiwgdGFnTmFtZXMs
IHRhZ3NJbkJvZHkpOworfQorCistICh2b2lkKWV4cGVjdEVsZW1lbnRDb3VudDooTlNJbnRlZ2Vy
KWNvdW50IHF1ZXJ5U2VsZWN0b3I6KE5TU3RyaW5nICopcXVlcnlTZWxlY3RvcgoreworICAgIE5T
U3RyaW5nICpzY3JpcHQgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAImRvY3VtZW50LnF1
ZXJ5U2VsZWN0b3JBbGwoJyVAJykubGVuZ3RoIiwgcXVlcnlTZWxlY3Rvcl07CisgICAgRVhQRUNU
X0VRKGNvdW50LCBbc2VsZiBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OnNjcmlwdF0uaW50
ZWdlclZhbHVlKTsKK30KKworLSAodm9pZClleHBlY3RFbGVtZW50VGFnOihOU1N0cmluZyAqKXRh
Z05hbWUgdG9Db21lQmVmb3JlOihOU1N0cmluZyAqKW90aGVyVGFnTmFtZQoreworICAgIFtzZWxm
IGV4cGVjdEVsZW1lbnRUYWdzSW5PcmRlcjpAW3RhZ05hbWUsIG90aGVyVGFnTmFtZV1dOworfQor
CistIChpZClvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OihOU1N0cmluZyAqKXNjcmlwdAor
eworICAgIGJvb2wgaXNXYWl0aW5nRm9ySmF2YVNjcmlwdCA9IGZhbHNlOworICAgIFJldGFpblB0
cjxpZD4gZXZhbFJlc3VsdDsKKyAgICBbc2VsZiBfZXZhbHVhdGVKYXZhU2NyaXB0V2l0aG91dFVz
ZXJHZXN0dXJlOnNjcmlwdCBjb21wbGV0aW9uSGFuZGxlcjpbJl0gKGlkIHJlc3VsdCwgTlNFcnJv
ciAqZXJyb3IpIHsKKyAgICAgICAgZXZhbFJlc3VsdCA9IHJlc3VsdDsKKyAgICAgICAgaXNXYWl0
aW5nRm9ySmF2YVNjcmlwdCA9IHRydWU7CisgICAgICAgIEVYUEVDVF9UUlVFKCFlcnJvcik7Cisg
ICAgICAgIGlmIChlcnJvcikKKyAgICAgICAgICAgIE5TTG9nKEAiRW5jb3VudGVyZWQgZXJyb3I6
ICVAIHdoaWxlIGV2YWx1YXRpbmcgc2NyaXB0OiAlQCIsIGVycm9yLCBzY3JpcHQpOworICAgIH1d
OworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNXYWl0aW5nRm9ySmF2YVNjcmlwdCk7
CisgICAgcmV0dXJuIGV2YWxSZXN1bHQuYXV0b3JlbGVhc2UoKTsKK30KKworLSAoaWQpb2JqZWN0
QnlFdmFsdWF0aW5nSmF2YVNjcmlwdFdpdGhVc2VyR2VzdHVyZTooTlNTdHJpbmcgKilzY3JpcHQK
K3sKKyAgICBib29sIGlzV2FpdGluZ0ZvckphdmFTY3JpcHQgPSBmYWxzZTsKKyAgICBSZXRhaW5Q
dHI8aWQ+IGV2YWxSZXN1bHQ7CisgICAgW3NlbGYgZXZhbHVhdGVKYXZhU2NyaXB0OnNjcmlwdCBj
b21wbGV0aW9uSGFuZGxlcjpbJl0gKGlkIHJlc3VsdCwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICAg
ICAgZXZhbFJlc3VsdCA9IHJlc3VsdDsKKyAgICAgICAgaXNXYWl0aW5nRm9ySmF2YVNjcmlwdCA9
IHRydWU7CisgICAgICAgIEVYUEVDVF9UUlVFKCFlcnJvcik7CisgICAgICAgIGlmIChlcnJvcikK
KyAgICAgICAgICAgIE5TTG9nKEAiRW5jb3VudGVyZWQgZXJyb3I6ICVAIHdoaWxlIGV2YWx1YXRp
bmcgc2NyaXB0OiAlQCIsIGVycm9yLCBzY3JpcHQpOworICAgIH1dOworICAgIFRlc3RXZWJLaXRB
UEk6OlV0aWw6OnJ1bigmaXNXYWl0aW5nRm9ySmF2YVNjcmlwdCk7CisgICAgcmV0dXJuIGV2YWxS
ZXN1bHQuYXV0b3JlbGVhc2UoKTsKK30KKworLSAoTlNTdHJpbmcgKilzdHJpbmdCeUV2YWx1YXRp
bmdKYXZhU2NyaXB0OihOU1N0cmluZyAqKXNjcmlwdAoreworICAgIHJldHVybiBbTlNTdHJpbmcg
c3RyaW5nV2l0aEZvcm1hdDpAIiVAIiwgW3NlbGYgb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlw
dDpzY3JpcHRdXTsKK30KKwogQGVuZAogCiBAaW1wbGVtZW50YXRpb24gVGVzdE1lc3NhZ2VIYW5k
bGVyIHsKQEAgLTI4OSw0MSArMzU1LDYgQEAgLSAodm9pZClzeW5jaHJvbm91c2x5TG9hZFRlc3RQ
YWdlTmFtZWQ6KE5TU3RyaW5nICopcGFnZU5hbWUKICAgICBbc2VsZiBfdGVzdF93YWl0Rm9yRGlk
RmluaXNoTmF2aWdhdGlvbl07CiB9CiAKLS0gKGlkKW9iamVjdEJ5RXZhbHVhdGluZ0phdmFTY3Jp
cHQ6KE5TU3RyaW5nICopc2NyaXB0Ci17Ci0gICAgYm9vbCBpc1dhaXRpbmdGb3JKYXZhU2NyaXB0
ID0gZmFsc2U7Ci0gICAgUmV0YWluUHRyPGlkPiBldmFsUmVzdWx0OwotICAgIFtzZWxmIF9ldmFs
dWF0ZUphdmFTY3JpcHRXaXRob3V0VXNlckdlc3R1cmU6c2NyaXB0IGNvbXBsZXRpb25IYW5kbGVy
OlsmXSAoaWQgcmVzdWx0LCBOU0Vycm9yICplcnJvcikgewotICAgICAgICBldmFsUmVzdWx0ID0g
cmVzdWx0OwotICAgICAgICBpc1dhaXRpbmdGb3JKYXZhU2NyaXB0ID0gdHJ1ZTsKLSAgICAgICAg
RVhQRUNUX1RSVUUoIWVycm9yKTsKLSAgICAgICAgaWYgKGVycm9yKQotICAgICAgICAgICAgTlNM
b2coQCJFbmNvdW50ZXJlZCBlcnJvcjogJUAgd2hpbGUgZXZhbHVhdGluZyBzY3JpcHQ6ICVAIiwg
ZXJyb3IsIHNjcmlwdCk7Ci0gICAgfV07Ci0gICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZp
c1dhaXRpbmdGb3JKYXZhU2NyaXB0KTsKLSAgICByZXR1cm4gZXZhbFJlc3VsdC5hdXRvcmVsZWFz
ZSgpOwotfQotCi0tIChpZClvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0V2l0aFVzZXJHZXN0
dXJlOihOU1N0cmluZyAqKXNjcmlwdAotewotICAgIGJvb2wgaXNXYWl0aW5nRm9ySmF2YVNjcmlw
dCA9IGZhbHNlOwotICAgIFJldGFpblB0cjxpZD4gZXZhbFJlc3VsdDsKLSAgICBbc2VsZiBldmFs
dWF0ZUphdmFTY3JpcHQ6c2NyaXB0IGNvbXBsZXRpb25IYW5kbGVyOlsmXSAoaWQgcmVzdWx0LCBO
U0Vycm9yICplcnJvcikgewotICAgICAgICBldmFsUmVzdWx0ID0gcmVzdWx0OwotICAgICAgICBp
c1dhaXRpbmdGb3JKYXZhU2NyaXB0ID0gdHJ1ZTsKLSAgICAgICAgRVhQRUNUX1RSVUUoIWVycm9y
KTsKLSAgICAgICAgaWYgKGVycm9yKQotICAgICAgICAgICAgTlNMb2coQCJFbmNvdW50ZXJlZCBl
cnJvcjogJUAgd2hpbGUgZXZhbHVhdGluZyBzY3JpcHQ6ICVAIiwgZXJyb3IsIHNjcmlwdCk7Ci0g
ICAgfV07Ci0gICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc1dhaXRpbmdGb3JKYXZhU2Ny
aXB0KTsKLSAgICByZXR1cm4gZXZhbFJlc3VsdC5hdXRvcmVsZWFzZSgpOwotfQotCi0tIChOU1N0
cmluZyAqKXN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6KE5TU3RyaW5nICopc2NyaXB0Ci17
Ci0gICAgcmV0dXJuIFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUAiLCBbc2VsZiBvYmpl
Y3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OnNjcmlwdF1dOwotfQotCiAtICh2b2lkKXdhaXRGb3JN
ZXNzYWdlOihOU1N0cmluZyAqKW1lc3NhZ2UKIHsKICAgICBfX2Jsb2NrIGJvb2wgaXNEb25lV2Fp
dGluZyA9IGZhbHNlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>355533</attachid>
            <date>2018-11-23 12:05:47 -0800</date>
            <delta_ts>2018-11-23 22:06:52 -0800</delta_ts>
            <desc>Fix the GTK build</desc>
            <filename>bug-191918-20181123120543.patch</filename>
            <type>text/plain</type>
            <size>42710</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4NDU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDljYzEyMzFlYWVmZGQ4
ZDJiMjcxYmQ1M2I0ZTEzZTk5NjA1ZTgxMC4uODFkMDY3MmEwNWFjN2FjYjY0MDNjNjU4MTk3NDVi
ZWM3NmQyMmVhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE4LTExLTIzICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gQWRk
IFdLV2ViVmlldyBTUEkgdG8gdHJpZ2dlciBhbmQgcmVtb3ZlIGRhdGEgZGV0ZWN0aW9uCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTE5MTgKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzM2MTg1MDUxPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIGhlbHBlciBtZXRob2Qgb24gRGF0YURldGVjdGlv
biB0byByZW1vdmUgYWxsIGRhdGEgZGV0ZWN0ZWQgY29udGVudCBpbiB0aGUgZ2l2ZW4gZG9jdW1l
bnQuIFNlZSBXZWJLaXQKKyAgICAgICAgY2hhbmdlcyBmb3IgbW9yZSBkZXRhaWwuCisKKyAgICAg
ICAgKiBlZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24uaDoKKyAgICAgICAgKiBlZGl0aW5nL2Nv
Y29hL0RhdGFEZXRlY3Rpb24ubW06CisgICAgICAgIChXZWJDb3JlOjpEYXRhRGV0ZWN0aW9uOjpy
ZW1vdmVEYXRhRGV0ZWN0ZWRDb250ZW50SW5Eb2N1bWVudCk6CisKIDIwMTgtMTEtMjIgIFdlbnNv
biBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkcmVzcyBwb3N0
LXJldmlldyBmZWVkYmFjayBhZnRlciByMjM4NDM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDVjYTRlMjkxYjdmODJk
ODcyMzg2ZGIyYmE0NmYyZGFlN2FlMTY3ZWEuLmQzMmYzODI0NmI2ZDcxMTgzNzM1ZWIxMmY1NzI1
MDE3NDJiOTVlZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYgQEAKKzIwMTgtMTEtMjMgIFdlbnNv
biBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBBZGQg
V0tXZWJWaWV3IFNQSSB0byB0cmlnZ2VyIGFuZCByZW1vdmUgZGF0YSBkZXRlY3Rpb24KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MTkxOAorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vMzYxODUwNTE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQWRkcyBzdXBwb3J0IGZvciB0d28gbmV3IFdLV2ViVmlldyBT
UEkgbWV0aG9kcywgYC1fZGV0ZWN0RGF0YVdpdGhUeXBlczpjb21wbGV0aW9uSGFuZGxlcjpgIGFu
ZAorICAgICAgICBgLV9yZW1vdmVBbGxEYXRhRGV0ZWN0ZWRDb250ZW50OmAsIHRvIGFsbG93IGlu
dGVybmFsIFdlYktpdCBjbGllbnRzIHRvIHJ1biBkYXRhIGRldGVjdGlvbiBhbmQgYWRkIGxpbmtz
IHRvIGRhdGEKKyAgICAgICAgZGV0ZWN0ZWQgY29udGVudCwgb3IgcmVtb3ZlIGFsbCBkYXRhIGRl
dGVjdGVkIGxpbmtzIGZyb20gdGhlIGRvY3VtZW50LgorCisgICAgICAgIFRlc3Q6IFdlYktpdC5B
ZGRBbmRSZW1vdmVEYXRhRGV0ZWN0b3JzCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9yZW1vdmVBbGxEYXRhRGV0ZWN0
b3JzOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2RldGVjdERhdGFXaXRoVHlwZXM6Y29tcGxl
dGlvbkhhbmRsZXI6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQ
cml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGV0ZWN0RGF0YUluQWxsRnJhbWVzKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZW1vdmVBbGxEYXRhRGV0ZWN0ZWRDb250ZW50KToKKwor
ICAgICAgICBBZGQgb3IgcmVtb3ZlIGRhdGEgZGV0ZWN0ZWQgY29udGVudCBmcm9tIGVhY2ggZnJh
bWUgaW4gdGhlIHBhZ2UsIGFuZCB0aGVuIHByb3BhZ2F0ZSB0aGUgbmV3IGRhdGEgZGV0ZWN0b3IK
KyAgICAgICAgcmVzdWx0cyBvZiB0aGUgbWFpbiBmcmFtZSB0byB0aGUgVUkgcHJvY2VzcyAodGhp
cyBtYXRjaGVzIGN1cnJlbnQgYmVoYXZpb3IsIHdoZXJlIHRoZSByZXN1bHRzIG9mIC1bV0tXZWJW
aWV3CisgICAgICAgIF9kYXRhRGV0ZWN0aW9uUmVzdWx0c10gb25seSByZWZsZWN0cyBkYXRhIGRl
dGVjdGlvbiByZXN1bHRzIGluIHRoZSBtYWluIGZyYW1lIG9mIHRoZSBwYWdlKS4KKworICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJlbW92ZUFsbERhdGFE
ZXRlY3RlZENvbnRlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkZXRlY3REYXRhSW5B
bGxGcmFtZXMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisKIDIwMTgtMTEt
MjIgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgW0Nv
Y29hXSBjbGFuZyBlbWl0cyBhIHdhcm5pbmcgd2hlbiBidWlsZGluZyBXZWJLaXQgYWZ0ZXIgcjIz
ODI5MwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EYXRhRGV0ZWN0
aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24uaAppbmRl
eCBkYmU1NGJkY2YxOTBjMTViZDRkMDhlNjgwOWM2Mzk3ODkwNmJmZGJlLi4wNTljNjM0ODAwZmYw
MTY2ODdjNGU4OTUzOWFhMzQ0ODQ1YjA1ZDc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2NvY29hL0RhdGFEZXRlY3Rpb24uaApAQCAtMzcsNiArMzcsNyBAQCBPQkpDX0NMQVNTIE5TRGlj
dGlvbmFyeTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBEb2N1bWVudDsKIGNsYXNz
IEVsZW1lbnQ7CiBjbGFzcyBGbG9hdFJlY3Q7CiBjbGFzcyBIaXRUZXN0UmVzdWx0OwpAQCAtNjEs
NiArNjIsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJldGFpblB0cjxE
REFjdGlvbkNvbnRleHQ+IGRldGVjdEl0ZW1Bcm91bmRIaXRUZXN0UmVzdWx0KGNvbnN0IEhpdFRl
c3RSZXN1bHQmLCBGbG9hdFJlY3QmIGRldGVjdGVkRGF0YUJvdW5kaW5nQm94LCBSZWZQdHI8UmFu
Z2U+JiBkZXRlY3RlZERhdGFSYW5nZSk7CiAjZW5kaWYKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgTlNBcnJheSAqZGV0ZWN0Q29udGVudEluUmFuZ2UoUmVmUHRyPFJhbmdlPiYgY29udGV4dFJh
bmdlLCBEYXRhRGV0ZWN0b3JUeXBlcywgTlNEaWN0aW9uYXJ5ICpjb250ZXh0KTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgdm9pZCByZW1vdmVEYXRhRGV0ZWN0ZWRDb250ZW50SW5Eb2N1bWVu
dChEb2N1bWVudCYpOwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIGJvb2wgY2FuQmVQcmVzZW50ZWRCeURhdGFEZXRlY3RvcnMoY29uc3QgVVJMJik7
CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgaXNEYXRhRGV0ZWN0b3JMaW5rKEVsZW1l
bnQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVj
dGlvbi5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5tbQpp
bmRleCBjOTk5ZGQ3MTY3OTY0ZTMxYTY3YmE0ZTY4MDk5ZmJhYzUwYzU3YmJjLi5lYTNiM2I0NTM4
YzM3YmMxYTEzOWNlM2M4MjNkNjE2MDA5ZTVhZWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9jb2NvYS9EYXRhRGV0ZWN0aW9uLm1tCkBAIC00MjksNiArNDI5LDE2IEBAIHN0YXRpYyBp
bmxpbmUgQ0ZDb21wYXJpc29uUmVzdWx0IHF1ZXJ5T2Zmc2V0Q29tcGFyZShERFF1ZXJ5T2Zmc2V0
IG8xLCBERFF1ZXJ5T2ZmCiAgICAgcmV0dXJuIGtDRkNvbXBhcmVFcXVhbFRvOwogfQogCit2b2lk
IERhdGFEZXRlY3Rpb246OnJlbW92ZURhdGFEZXRlY3RlZENvbnRlbnRJbkRvY3VtZW50KERvY3Vt
ZW50JiBkb2N1bWVudCkKK3sKKyAgICBWZWN0b3I8UmVmPEhUTUxBbmNob3JFbGVtZW50Pj4gYWxs
QW5jaG9yRWxlbWVudHM7CisgICAgZm9yIChhdXRvJiBhbmNob3IgOiBkZXNjZW5kYW50c09mVHlw
ZTxIVE1MQW5jaG9yRWxlbWVudD4oZG9jdW1lbnQpKQorICAgICAgICBhbGxBbmNob3JFbGVtZW50
cy5hcHBlbmQoYW5jaG9yKTsKKworICAgIGZvciAoYXV0byYgYW5jaG9yIDogYWxsQW5jaG9yRWxl
bWVudHMpCisgICAgICAgIHJlbW92ZVJlc3VsdExpbmtzRnJvbUFuY2hvcihhbmNob3IuZ2V0KCkp
OworfQorCiBOU0FycmF5ICpEYXRhRGV0ZWN0aW9uOjpkZXRlY3RDb250ZW50SW5SYW5nZShSZWZQ
dHI8UmFuZ2U+JiBjb250ZXh0UmFuZ2UsIERhdGFEZXRlY3RvclR5cGVzIHR5cGVzLCBOU0RpY3Rp
b25hcnkgKmNvbnRleHQpCiB7CiAgICAgUmV0YWluUHRyPEREU2Nhbm5lclJlZj4gc2Nhbm5lciA9
IGFkb3B0Q0Yoc29mdExpbmtfRGF0YURldGVjdG9yc0NvcmVfRERTY2FubmVyQ3JlYXRlKEREU2Nh
bm5lclR5cGVTdGFuZGFyZCwgMCwgbnVsbHB0cikpOwpAQCAtNjQ3LDEwICs2NTcsMTYgQEAgTlNB
cnJheSAqRGF0YURldGVjdGlvbjo6ZGV0ZWN0Q29udGVudEluUmFuZ2UoUmVmUHRyPFJhbmdlPiYg
Y29udGV4dFJhbmdlLCBEYXRhRGUKIH0KIAogI2Vsc2UKKwogTlNBcnJheSAqRGF0YURldGVjdGlv
bjo6ZGV0ZWN0Q29udGVudEluUmFuZ2UoUmVmUHRyPFJhbmdlPiYsIERhdGFEZXRlY3RvclR5cGVz
LCBOU0RpY3Rpb25hcnkgKikKIHsKICAgICByZXR1cm4gbmlsOwogfQorCit2b2lkIERhdGFEZXRl
Y3Rpb246OnJlbW92ZURhdGFEZXRlY3RlZENvbnRlbnRJbkRvY3VtZW50KERvY3VtZW50JikKK3sK
K30KKwogI2VuZGlmCiAKIGNvbnN0IFN0cmluZyYgRGF0YURldGVjdGlvbjo6ZGF0YURldGVjdG9y
VVJMUHJvdG9jb2woKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXcubW0KaW5kZXggODM2OWUzMzljMjg1YzI1ODMyMTFhMjZiYzRkMWEzNGJhMWE1Mjk3MS4u
MWRiYWQ3MDM3NDRlYmMxODYxNmUwZjQ2NjMxZjFlOGJkYzQ0YjJlYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBAIC01NDIzLDEwICs1NDIz
LDM1IEBAIC0gKHZvaWQpX3NldFBhZ2VNdXRlZDooX1dLTWVkaWFNdXRlZFN0YXRlKW11dGVkU3Rh
dGUKICAgICBfcGFnZS0+c2V0TXV0ZWQoY29yZVN0YXRlKTsKIH0KIAorLSAodm9pZClfcmVtb3Zl
QWxsRGF0YURldGVjdGVkQ29udGVudDooZGlzcGF0Y2hfYmxvY2tfdCljb21wbGV0aW9uCit7Cisj
aWYgRU5BQkxFKERBVEFfREVURUNUSU9OKQorICAgIF9wYWdlLT5yZW1vdmVBbGxEYXRhRGV0ZWN0
ZWRDb250ZW50KFtjb21wbGV0aW9uID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb24pXSAoYXV0bykg
eworICAgICAgICBpZiAoY29tcGxldGlvbikKKyAgICAgICAgICAgIGNvbXBsZXRpb24oKTsKKyAg
ICB9KTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGNvbXBsZXRpb24pOworI2VuZGlmCit9CisK
ICNwcmFnbWEgbWFyayBpT1Mtc3BlY2lmaWMgbWV0aG9kcwogCiAjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKIAorLSAodm9pZClfZGV0ZWN0RGF0YVdpdGhUeXBlczooV0tEYXRhRGV0ZWN0b3JUeXBl
cyl0eXBlcyBjb21wbGV0aW9uSGFuZGxlcjooZGlzcGF0Y2hfYmxvY2tfdCljb21wbGV0aW9uCit7
CisjaWYgRU5BQkxFKERBVEFfREVURUNUSU9OKQorICAgIF9wYWdlLT5kZXRlY3REYXRhSW5BbGxG
cmFtZXMoZnJvbVdLRGF0YURldGVjdG9yVHlwZXModHlwZXMpLCBbY29tcGxldGlvbiA9IG1ha2VC
bG9ja1B0cihjb21wbGV0aW9uKV0gKGF1dG8pIHsKKyAgICAgICAgaWYgKGNvbXBsZXRpb24pCisg
ICAgICAgICAgICBjb21wbGV0aW9uKCk7CisgICAgfSk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJB
TSh0eXBlcyk7CisgICAgVU5VU0VEX1BBUkFNKGNvbXBsZXRpb24pOworI2VuZGlmCit9CisKICNp
ZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCiAtICh2b2lkKXJlbW92ZUZyb21TdXBlcnZpZXcKIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQ
cml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJp
dmF0ZS5oCmluZGV4IDEzM2EzZTcyYWZmMzM0ZTVmNjNiOTJmNzFhOWEwYTYwODgxNTk3OTYuLmM3
ZTVmNTBjMjRlN2E4NWJiZmFjNGJkNDA4MTZjYzVjNDdmYWQxY2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaApAQCAtMjcs
NiArMjcsNyBAQAogCiAjaWYgV0tfQVBJX0VOQUJMRUQKIAorI2ltcG9ydCA8V2ViS2l0L1dLRGF0
YURldGVjdG9yVHlwZXMuaD4KICNpbXBvcnQgPFdlYktpdC9fV0tBY3RpdmF0ZWRFbGVtZW50SW5m
by5oPgogI2ltcG9ydCA8V2ViS2l0L19XS0F0dGFjaG1lbnQuaD4KICNpbXBvcnQgPFdlYktpdC9f
V0tGaW5kT3B0aW9ucy5oPgpAQCAtMTkzLDYgKzE5NCw4IEBAIHR5cGVkZWYgTlNfT1BUSU9OUyhO
U1VJbnRlZ2VyLCBfV0tSZWN0RWRnZSkgewogLSAodm9pZClfc2hvd1NhZmVCcm93c2luZ1dhcm5p
bmdXaXRoVGl0bGU6KE5TU3RyaW5nICopdGl0bGUgd2FybmluZzooTlNTdHJpbmcgKil3YXJuaW5n
IGRldGFpbHM6KE5TQXR0cmlidXRlZFN0cmluZyAqKWRldGFpbHMgY29tcGxldGlvbkhhbmRsZXI6
KHZvaWQoXikoQk9PTCkpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3go
V0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAKIC0gKHZvaWQpX2lzSklURW5hYmxlZDoo
dm9pZCheKShCT09MKSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zeChX
S19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKy0gKHZvaWQpX3JlbW92ZUFsbERhdGFEZXRl
Y3RlZENvbnRlbnQ6KGRpc3BhdGNoX2Jsb2NrX3QpY29tcGxldGlvbiBXS19BUElfQVZBSUxBQkxF
KG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKwogLSAoSUJBY3Rpb24pX2Fs
aWduQ2VudGVyOihpZClzZW5kZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSks
IGlvcyhXS19JT1NfVEJBKSk7CiAtIChJQkFjdGlvbilfYWxpZ25KdXN0aWZpZWQ6KGlkKXNlbmRl
ciBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsK
IC0gKElCQWN0aW9uKV9hbGlnbkxlZnQ6KGlkKXNlbmRlciBXS19BUElfQVZBSUxBQkxFKG1hY29z
eChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKQEAgLTIxNiw2ICsyMTksOCBAQCB0eXBl
ZGVmIE5TX09QVElPTlMoTlNVSW50ZWdlciwgX1dLUmVjdEVkZ2UpIHsKIC0gKHZvaWQpX3NldEZv
bnRTaXplOihDR0Zsb2F0KWZvbnRTaXplIHNlbmRlcjooaWQpc2VuZGVyIFdLX0FQSV9BVkFJTEFC
TEUoaW9zKFdLX0lPU19UQkEpKTsKIC0gKHZvaWQpX3NldFRleHRDb2xvcjooVUlDb2xvciAqKWNv
bG9yIHNlbmRlcjooaWQpc2VuZGVyIFdLX0FQSV9BVkFJTEFCTEUoaW9zKFdLX0lPU19UQkEpKTsK
IAorLSAodm9pZClfZGV0ZWN0RGF0YVdpdGhUeXBlczooV0tEYXRhRGV0ZWN0b3JUeXBlcyl0eXBl
cyBjb21wbGV0aW9uSGFuZGxlcjooZGlzcGF0Y2hfYmxvY2tfdCljb21wbGV0aW9uIFdLX0FQSV9B
VkFJTEFCTEUoaW9zKFdLX0lPU19UQkEpKTsKKwogLy8gREVSRUNBVEVEOiBUaGUgc2V0dGVycyBv
ZiB0aGUgdGhyZWUgZm9sbG93aW5nIGZ1bmN0aW9uIGFyZSBkZXByZWNhdGVkLCBwbGVhc2UgdXNl
IG92ZXJyaWRlTGF5b3V0UGFyYW1ldGVycy4KIC8vIERlZmluZSB0aGUgc21hbGxlc3Qgc2l6ZSBh
IHBhZ2UgdGFrZSB3aXRoIGEgcmVndWxhciB2aWV3cG9ydC4KIEBwcm9wZXJ0eSAobm9uYXRvbWlj
LCByZWFkb25seSkgQ0dTaXplIF9taW5pbXVtTGF5b3V0U2l6ZU92ZXJyaWRlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggMTExMDlkZDUxNmQ3ODljMzg1Yzkx
ZmY4MTY2NmM5MjZkOTVkZmZkNi4uZGZhNzdjNGU3ZDY3OTc1Y2U3MWZjYjRmOWE5NDEwMWU5ZDEz
YmNjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC04MjQz
LDYgKzgyNDMsMjIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnVwZGF0ZUN1cnJlbnRNb2RpZmllclN0
YXRlKCkKICNlbmRpZgogfQogCisjaWYgRU5BQkxFKERBVEFfREVURUNUSU9OKQorCit2b2lkIFdl
YlBhZ2VQcm94eTo6ZGV0ZWN0RGF0YUluQWxsRnJhbWVzKFdlYkNvcmU6OkRhdGFEZXRlY3RvclR5
cGVzIHR5cGVzLCBGdW5jdGlvbjx2b2lkKENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNr
KQoreworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxi
YWNrKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsK
KyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRldGVjdERhdGFJbkFsbEZy
YW1lcyhzdGF0aWNfY2FzdDx1aW50NjRfdD4odHlwZXMpLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQp
OworfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6cmVtb3ZlQWxsRGF0YURldGVjdGVkQ29udGVudChG
dW5jdGlvbjx2b2lkKENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrKQoreworICAgIGF1
dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrKSwgbV9wcm9j
ZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICBtX3Byb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlbW92ZUFsbERhdGFEZXRlY3RlZENvbnRlbnQo
Y2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKK30KKworI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdAogCiAjdW5kZWYgTUVSR0VfV0hFRUxfRVZFTlRTCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oCmluZGV4IDA3MTc3MmM4ZDdjNTBmNWIwZWNjZjA1NWE5YmUxOGU2YmVkYTE3
NzYuLmE2MmYzNWIyZTdiZmI4NzIxODJmYjM4NTAyZmVkZTJkMDA2ODJiZjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0zNjIsNiArMzYyLDggQEAgcHVibGljOgog
CiAjaWYgRU5BQkxFKERBVEFfREVURUNUSU9OKQogICAgIE5TQXJyYXkgKmRhdGFEZXRlY3Rpb25S
ZXN1bHRzKCkgeyByZXR1cm4gbV9kYXRhRGV0ZWN0aW9uUmVzdWx0cy5nZXQoKTsgfQorICAgIHZv
aWQgZGV0ZWN0RGF0YUluQWxsRnJhbWVzKFdlYkNvcmU6OkRhdGFEZXRlY3RvclR5cGVzLCBGdW5j
dGlvbjx2b2lkKENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKKyAgICB2b2lkIHJlbW92ZUFsbERh
dGFEZXRlY3RlZENvbnRlbnQoRnVuY3Rpb248dm9pZChDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7
CiAjZW5kaWYKICAgICAgICAgCiAjaWYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykgJiYgUExBVEZP
Uk0oQ09DT0EpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
CmluZGV4IDRhYWUxNGYxNzM4NzAwMzBhMjczNDNiOTBiZDMxYTA4MzFhMTIxYmMuLjZlYTgxNjQy
NmU4YzczMzU3OTBjZWVkOWIwMDExZGJkZjljM2Q2YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0zMzg1LDEzICszMzg1LDQ0IEBAIHZvaWQg
V2ViUGFnZTo6dXBkYXRlUHJlZmVyZW5jZXMoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgc3Rv
cmUpCiB9CiAKICNpZiBFTkFCTEUoREFUQV9ERVRFQ1RJT04pCisKIHZvaWQgV2ViUGFnZTo6c2V0
RGF0YURldGVjdGlvblJlc3VsdHMoTlNBcnJheSAqZGV0ZWN0aW9uUmVzdWx0cykKIHsKICAgICBE
YXRhRGV0ZWN0aW9uUmVzdWx0IGRhdGFEZXRlY3Rpb25SZXN1bHQ7CiAgICAgZGF0YURldGVjdGlv
blJlc3VsdC5yZXN1bHRzID0gZGV0ZWN0aW9uUmVzdWx0czsKICAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OlNldERhdGFEZXRlY3Rpb25SZXN1bHQoZGF0YURldGVjdGlvblJlc3VsdCkp
OwogfQotI2VuZGlmCisKK3ZvaWQgV2ViUGFnZTo6cmVtb3ZlQWxsRGF0YURldGVjdGVkQ29udGVu
dChDYWxsYmFja0lEIGNhbGxiYWNrSUQpCit7CisgICAgZm9yIChhdXRvIGZyYW1lID0gbWFrZVJl
ZlB0cigmbV9wYWdlLT5tYWluRnJhbWUoKSk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCku
dHJhdmVyc2VOZXh0KCkpIHsKKyAgICAgICAgYXV0byBkb2N1bWVudCA9IG1ha2VSZWZQdHIoZnJh
bWUtPmRvY3VtZW50KCkpOworICAgICAgICBpZiAoIWRvY3VtZW50KQorICAgICAgICAgICAgY29u
dGludWU7CisKKyAgICAgICAgRGF0YURldGVjdGlvbjo6cmVtb3ZlRGF0YURldGVjdGVkQ29udGVu
dEluRG9jdW1lbnQoKmRvY3VtZW50KTsKKyAgICAgICAgZnJhbWUtPnNldERhdGFEZXRlY3Rpb25S
ZXN1bHRzKG51bGxwdHIpOworICAgIH0KKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OlNldERhdGFEZXRlY3Rpb25SZXN1bHQoeyB9KSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpWb2lkQ2FsbGJhY2soY2FsbGJhY2tJRCkpOworfQorCit2b2lkIFdlYlBhZ2U6OmRl
dGVjdERhdGFJbkFsbEZyYW1lcyh1aW50NjRfdCB0eXBlcywgQ2FsbGJhY2tJRCBjYWxsYmFja0lE
KQoreworICAgIGF1dG8gZGF0YURldGVjdG9yVHlwZXMgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpE
YXRhRGV0ZWN0b3JUeXBlcz4odHlwZXMpOworICAgIGZvciAoYXV0byBmcmFtZSA9IG1ha2VSZWZQ
dHIoJm1fcGFnZS0+bWFpbkZyYW1lKCkpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRy
YXZlcnNlTmV4dCgpKSB7CisgICAgICAgIGF1dG8gZG9jdW1lbnQgPSBtYWtlUmVmUHRyKGZyYW1l
LT5kb2N1bWVudCgpKTsKKyAgICAgICAgaWYgKCFkb2N1bWVudCkKKyAgICAgICAgICAgIGNvbnRp
bnVlOworCisgICAgICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKCpkb2N1
bWVudCwgUG9zaXRpb24geyBkb2N1bWVudC5nZXQoKSwgUG9zaXRpb246OlBvc2l0aW9uSXNCZWZv
cmVDaGlsZHJlbiB9LCBQb3NpdGlvbiB7IGRvY3VtZW50LmdldCgpLCBQb3NpdGlvbjo6UG9zaXRp
b25Jc0FmdGVyQ2hpbGRyZW4gfSk7CisgICAgICAgIGZyYW1lLT5zZXREYXRhRGV0ZWN0aW9uUmVz
dWx0cyhEYXRhRGV0ZWN0aW9uOjpkZXRlY3RDb250ZW50SW5SYW5nZShyYW5nZSwgZGF0YURldGVj
dG9yVHlwZXMsIG1fZGF0YURldGVjdGlvbkNvbnRleHQuZ2V0KCkpKTsKKyAgICB9CisgICAgc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTZXREYXRhRGV0ZWN0aW9uUmVzdWx0KHsgbV9wYWdl
LT5tYWluRnJhbWUoKS5kYXRhRGV0ZWN0aW9uUmVzdWx0cygpIH0pKTsKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OlZvaWRDYWxsYmFjayhjYWxsYmFja0lEKSk7Cit9CisKKyNlbmRp
ZiAvLyBFTkFCTEUoREFUQV9ERVRFQ1RJT04pCiAKICNpZiBQTEFURk9STShDT0NPQSkKIHZvaWQg
V2ViUGFnZTo6d2lsbENvbW1pdExheWVyVHJlZShSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbiYg
bGF5ZXJUcmFuc2FjdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuaAppbmRleCA1NzUzMjk4NDg5NTkwMzk0NDBmYTFhYjE3ZmI3MTA2NTU4M2U4N2E4Li4zOTAx
MzdhYTJiOWIzMmViYjYyMjIxZDA4ZmE3YjhiNDJjYWZlOTA2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0xMDcsNiArMTA3LDEwIEBACiAjaW5jbHVk
ZSA8V2ViQ29yZS9QbGF0Zm9ybVRvdWNoRXZlbnQuaD4KICNlbmRpZgogCisjaWYgRU5BQkxFKERB
VEFfREVURUNUSU9OKQorI2luY2x1ZGUgPFdlYkNvcmUvRGF0YURldGVjdGlvbi5oPgorI2VuZGlm
CisKICNpZiBFTkFCTEUoTUFDX0dFU1RVUkVfRVZFTlRTKQogI2luY2x1ZGUgPFdlYktpdEFkZGl0
aW9ucy9QbGF0Zm9ybUdlc3R1cmVFdmVudE1hYy5oPgogI2VuZGlmCkBAIC05OTIsNiArOTk2LDgg
QEAgcHVibGljOgogCiAjaWYgRU5BQkxFKERBVEFfREVURUNUSU9OKQogICAgIHZvaWQgc2V0RGF0
YURldGVjdGlvblJlc3VsdHMoTlNBcnJheSAqKTsKKyAgICB2b2lkIGRldGVjdERhdGFJbkFsbEZy
YW1lcyh1aW50NjRfdCwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCByZW1vdmVBbGxEYXRhRGV0ZWN0
ZWRDb250ZW50KENhbGxiYWNrSUQpOwogI2VuZGlmCiAKICAgICB1bnNpZ25lZCBleHRlbmRJbmNy
ZW1lbnRhbFJlbmRlcmluZ1N1cHByZXNzaW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCA4YjI5NmNlMDBkNDQy
NTlkNGU1YjdhZGI5Y2I0MTUyMjNmOWRkOThmLi43NTYwZWQ3ODU3ODRhMWNiM2RkYWI3YjljYjIx
ZDAxZmU4MDA5YWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAgLTE5Myw2ICsxOTMsMTEgQEAgbWVzc2FnZXMgLT4g
V2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7CiAgICAgUGVyZm9ybURpY3Rpb25hcnlMb29rdXBBdExv
Y2F0aW9uKFdlYkNvcmU6OkZsb2F0UG9pbnQgcG9pbnQpCiAjZW5kaWYKIAorI2lmIEVOQUJMRShE
QVRBX0RFVEVDVElPTikKKyAgICBEZXRlY3REYXRhSW5BbGxGcmFtZXModWludDY0X3QgdHlwZXMs
IFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIFJlbW92ZUFsbERhdGFEZXRlY3Rl
ZENvbnRlbnQoV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisjZW5kaWYKKwogI2lmIFBM
QVRGT1JNKE1BQykKICAgICBQZXJmb3JtRGljdGlvbmFyeUxvb2t1cE9mQ3VycmVudFNlbGVjdGlv
bigpCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxv
ZwppbmRleCA5ZWUxNWM0ZTAyZmEwOTMxNzYzNjVjMTIzODY4NGI5YmZkYTIxZWMyLi43OTg0ZGRl
YWNiNTlmNzQ0MTdiMjQyZWE1N2Y4NWVjNGEzM2I2ZWE1IDEwMDY0NAotLS0gYS9Ub29scy9DaGFu
Z2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTIgQEAKKzIwMTgtMTEtMjMg
IFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29h
XSBBZGQgV0tXZWJWaWV3IFNQSSB0byB0cmlnZ2VyIGFuZCByZW1vdmUgZGF0YSBkZXRlY3Rpb24K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MTkxOAor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzYxODUwNTE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGFuIEFQSSB0ZXN0IHRvIGV4ZXJjaXNlIHRo
ZSBuZXcgV2ViS2l0IFNQSS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvRGF0YURldGVjdG9y
c0NvcmVTUEkuaDogQWRkZWQuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJ
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9EYXRhRGV0ZWN0aW9uLm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgc3lu
Y2hyb25vdXNseURldGVjdERhdGFXaXRoVHlwZXM6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBz
eW5jaHJvbm91c2x5UmVtb3ZlQWxsRGF0YURldGVjdG9yc10pOgorICAgICAgICAoVEVTVCk6Cisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0F0dGFjaG1lbnRUZXN0
cy5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAoLVtUZXN0V0tX
ZWJWaWV3IHRhZ3NJbkJvZHldKTogRGVsZXRlZC4KKyAgICAgICAgKC1bVGVzdFdLV2ViVmlldyBl
eHBlY3RFbGVtZW50VGFnc0luT3JkZXI6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1Rlc3RXS1dl
YlZpZXcgZXhwZWN0RWxlbWVudENvdW50OnRhZ05hbWU6XSk6IERlbGV0ZWQuCisKKyAgICAgICAg
UmVuYW1lIHRoaXMgZnJvbSBgLWV4cGVjdEVsZW1lbnRDb3VudDp0YWdOYW1lOmAgdG8gYC1leHBl
Y3RFbGVtZW50Q291bnQ6cXVlcnlTZWxlY3RvcjpgLgorCisgICAgICAgICgtW1Rlc3RXS1dlYlZp
ZXcgZXhwZWN0RWxlbWVudFRhZzp0b0NvbWVCZWZvcmU6XSk6IERlbGV0ZWQuCisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9kYXRhLWRldGVjdG9ycy5odG1sOiBBZGRl
ZC4KKworICAgICAgICBBZGQgYSBuZXcgdGVzdCBwYWdlIGNvbnRhaW5pbmcgc29tZSBjb250ZW50
IHRoYXQgY2FuIGJlIGRhdGEgZGV0ZWN0ZWQuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2Nv
Y29hL1Rlc3RXS1dlYlZpZXcuaDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RX
S1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmlldyB0YWdzSW5Cb2R5XSk6CisgICAgICAg
ICgtW1dLV2ViVmlldyBleHBlY3RFbGVtZW50VGFnc0luT3JkZXI6XSk6CisgICAgICAgICgtW1dL
V2ViVmlldyBleHBlY3RFbGVtZW50Q291bnQ6cXVlcnlTZWxlY3RvcjpdKToKKyAgICAgICAgKC1b
V0tXZWJWaWV3IGV4cGVjdEVsZW1lbnRUYWc6dG9Db21lQmVmb3JlOl0pOgorCisgICAgICAgIE1v
dmUgc29tZSB0ZXN0aW5nIGhlbHBlciBmdW5jdGlvbnMgZnJvbSBXS0F0dGFjaG1lbnRUZXN0cyB0
byBhIHRlc3RpbmcgY2F0ZWdvcnkgb24gV0tXZWJWaWV3LiBUaGlzIGFsbG93cyB1cyB0bworICAg
ICAgICB1c2UgYC1leHBlY3RFbGVtZW50Q291bnQ6cXVlcnlTZWxlY3RvcjpgIGluIHRlc3RzIG91
dHNpZGUgb2YgV0tBdHRhY2htZW50VGVzdHMuCisKKyAgICAgICAgKC1bV0tXZWJWaWV3IG9iamVj
dEJ5RXZhbHVhdGluZ0phdmFTY3JpcHQ6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBvYmplY3RC
eUV2YWx1YXRpbmdKYXZhU2NyaXB0V2l0aFVzZXJHZXN0dXJlOl0pOgorICAgICAgICAoLVtXS1dl
YlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpdKToKKworICAgICAgICBNb3ZlIHNv
bWUgY29tbW9uIGhlbHBlciBmdW5jdGlvbnMgZnJvbSBUZXN0V0tXZWJWaWV3IHRvIGEgdGVzdGlu
ZyBjYXRlZ29yeSBvbiBXS1dlYlZpZXcuCisKKyAgICAgICAgKC1bVGVzdFdLV2ViVmlldyBvYmpl
Y3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0Ol0pOiBEZWxldGVkLgorICAgICAgICAoLVtUZXN0V0tX
ZWJWaWV3IG9iamVjdEJ5RXZhbHVhdGluZ0phdmFTY3JpcHRXaXRoVXNlckdlc3R1cmU6XSk6IERl
bGV0ZWQuCisgICAgICAgICgtW1Rlc3RXS1dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNj
cmlwdDpdKTogRGVsZXRlZC4KKwogMjAxOC0xMS0yMiAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBw
bGUuY29tPgogCiAgICAgICAgIFtMRkNdW0lGQ10gT2Zmc2V0IGZvcm1hdHRpbmcgY29udGV4dCBy
b290IHJ1bnMgd2l0aCBob3Jpem9udGFsIG1hcmdpbnMuCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL0RhdGFEZXRlY3RvcnNDb3JlU1BJLmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL0Rh
dGFEZXRlY3RvcnNDb3JlU1BJLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjI5YjQzNjVmZTJhZGYzNzk4OGY3MDJh
ZGQ0NGUzN2RiNWUxYTE3YwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
RGF0YURldGVjdG9yc0NvcmVTUEkuaApAQCAtMCwwICsxLDQyIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoREFUQV9ERVRFQ1RJT04pCisKKyNpbXBvcnQgPHBhbC9z
cGkvY29jb2EvRGF0YURldGVjdG9yc0NvcmVTUEkuaD4KKworI2lmICFVU0UoQVBQTEVfSU5URVJO
QUxfU0RLKQorCitAaW50ZXJmYWNlIEREU2Nhbm5lclJlc3VsdCAoUHJpdmF0ZSkKK0Bwcm9wZXJ0
eSAocmVhZG9ubHksIG5vbmF0b21pYykgTlNTdHJpbmcgKnZhbHVlOworQHByb3BlcnR5IChyZWFk
b25seSwgbm9uYXRvbWljKSBOU1N0cmluZyAqdHlwZTsKK0Bwcm9wZXJ0eSAocmVhZG9ubHksIG5v
bmF0b21pYykgRERSZXN1bHRDYXRlZ29yeSBjYXRlZ29yeTsKK0BlbmQKKworI2VuZGlmIC8vICFV
U0UoQVBQTEVfSU5URVJOQUxfU0RLKQorCisjZW5kaWYgLy8gRU5BQkxFKERBVEFfREVURUNUSU9O
KQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBlZjBiZDAwNWEyODdlZjZjNmQ5OTQ5MzE5Y2Jm
NTQxNDU0MjQxNTYzLi5kZTYyZGYwM2QwZDU2MDhkOTg4ZDFkNTBmYjdiMGFkMGI5N2Y4MGJkIDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtODUyLDYgKzg1Miw3IEBACiAJCUY0NkEwOTVBMUVE
OEE2RTYwMEQ0QUE1NSAvKiBhcHBsZS5naWYgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ3RDMwRUIxRUQyODYxOTAwMDQ4MkUxIC8qIGFwcGxl
LmdpZiAqLzsgfTsKIAkJRjQ2QTA5NUIxRUQ4QTZFNjAwRDRBQTU1IC8qIGdpZi1hbmQtZmlsZS1p
bnB1dC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEY0N0QzMEVEMUVEMjhBNkMwMDA0ODJFMSAvKiBnaWYtYW5kLWZpbGUtaW5wdXQuaHRt
bCAqLzsgfTsKIAkJRjQ3NzI4OTkxRTRBRTNDMTAwN0FCRjZBIC8qIGZ1bGwtcGFnZS1jb250ZW50
ZWRpdGFibGUuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGNDc3Mjg5ODFFNEFFM0FEMDA3QUJGNkEgLyogZnVsbC1wYWdlLWNvbnRlbnRl
ZGl0YWJsZS5odG1sICovOyB9OworCQlGNDdERkIyNjIxQTg3OERGMDAwMjFGQjYgLyogZGF0YS1k
ZXRlY3RvcnMuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGNDdERkIyNDIxQTg3MDRBMDAwMjFGQjYgLyogZGF0YS1kZXRlY3RvcnMuaHRt
bCAqLzsgfTsKIAkJRjQ4MTFFNTkyMTk0MEJERTAwQTVFMEZEIC8qIFdLV2ViVmlld0VkaXRBY3Rp
b25zLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ4
MTFFNTgyMTk0MEI0NDAwQTVFMEZEIC8qIFdLV2ViVmlld0VkaXRBY3Rpb25zLm1tICovOyB9Owog
CQlGNDg1NkNBMzFFNjQ5RUE4MDA5RDdFRTcgLyogYXR0YWNobWVudC1lbGVtZW50Lmh0bWwgaW4g
Q29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ4NTZD
QTIxRTY0OThBODAwOUQ3RUU3IC8qIGF0dGFjaG1lbnQtZWxlbWVudC5odG1sICovOyB9OwogCQlG
NDg2QjFEMDFGNjc5NTIzMDBGMzRCREQgLyogRGF0YVRyYW5zZmVyLXNldERyYWdJbWFnZS5odG1s
IGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0
ODZCMUNGMUY2Nzk0RkYwMEYzNEJERCAvKiBEYXRhVHJhbnNmZXItc2V0RHJhZ0ltYWdlLmh0bWwg
Ki87IH07CkBAIC0xMDE5LDYgKzEwMjAsNyBAQAogCQkJCTdBRUFENDgxMUUyMDEyMjcwMDQxNkVG
RSAvKiBDcm9zc1BhcnRpdGlvbkZpbGVTY2hlbWVBY2Nlc3MuaHRtbCBpbiBDb3B5IFJlc291cmNl
cyAqLywKIAkJCQlGNEFCNTc4QTFGNjUxNjU0MDBEQjBEQTEgLyogY3VzdG9tLWRyYWdnYWJsZS1k
aXYuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQkyOTBGNDI3NTE3MkEyMjFDMDA5MzlG
RjAgLyogY3VzdG9tLXByb3RvY29sLXN5bmMteGhyLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8s
CisJCQkJRjQ3REZCMjYyMUE4NzhERjAwMDIxRkI2IC8qIGRhdGEtZGV0ZWN0b3JzLmh0bWwgaW4g
Q29weSBSZXNvdXJjZXMgKi8sCiAJCQkJRjQ4NkIxRDAxRjY3OTUyMzAwRjM0QkREIC8qIERhdGFU
cmFuc2Zlci1zZXREcmFnSW1hZ2UuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQlGNDU3
QTlENjIwMkQ2OEFGMDBGN0U5RDUgLyogRGF0YVRyYW5zZmVyLmh0bWwgaW4gQ29weSBSZXNvdXJj
ZXMgKi8sCiAJCQkJRjQ1MTJFMTMxRjYwQzQ0NjAwQkIzNjlFIC8qIERhdGFUcmFuc2Zlckl0ZW0t
Z2V0QXNFbnRyeS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLApAQCAtMjE0Nyw2ICsyMTQ5LDgg
QEAKIAkJRjQ3NzI4OTgxRTRBRTNBRDAwN0FCRjZBIC8qIGZ1bGwtcGFnZS1jb250ZW50ZWRpdGFi
bGUuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJmdWxsLXBhZ2UtY29udGVudGVk
aXRhYmxlLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDdEMzBFQjFFRDI4
NjE5MDAwNDgyRTEgLyogYXBwbGUuZ2lmICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gaW1hZ2UuZ2lmOyBwYXRoID0gYXBwbGUuZ2lmOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlGNDdEMzBFRDFFRDI4QTZDMDAwNDgyRTEgLyogZ2lmLWFuZC1m
aWxlLWlucHV0Lmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAiZ2lmLWFuZC1maWxlLWlucHV0Lmh0bWwiOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNDdERkIyNDIxQTg3MDRBMDAwMjFGQjYgLyogZGF0
YS1kZXRlY3RvcnMuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJkYXRhLWRldGVj
dG9ycy5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjQ3REZCMjcyMUE4ODVF
NzAwMDIxRkI2IC8qIERhdGFEZXRlY3RvcnNDb3JlU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERhdGFE
ZXRlY3RvcnNDb3JlU1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0ODExRTU4
MjE5NDBCNDQwMEE1RTBGRCAvKiBXS1dlYlZpZXdFZGl0QWN0aW9ucy5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLV2ViVmlld0VkaXRBY3Rpb25zLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDg1NkNBMjFFNjQ5OEE4MDA5RDdFRTcgLyogYXR0
YWNobWVudC1lbGVtZW50Lmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAiYXR0YWNo
bWVudC1lbGVtZW50Lmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDg2QjFD
RjFGNjc5NEZGMDBGMzRCREQgLyogRGF0YVRyYW5zZmVyLXNldERyYWdJbWFnZS5odG1sICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dC5odG1sOyBwYXRoID0gIkRhdGFUcmFuc2Zlci1zZXREcmFnSW1hZ2UuaHRtbCI7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMzExLDYgKzIzMTUsNyBAQAogCQkJCUEx
M0VCQjQ0MUI4NzMzMkIwMDA5NzExMCAvKiBXZWJQcm9jZXNzUGx1Z0luICovLAogCQkJCUY0NTE3
QjY4MjA1NEUwQUMwMEMyNjcyMSAvKiBDbGFzc01ldGhvZFN3aXp6bGVyLmggKi8sCiAJCQkJRjQ1
MTdCNjkyMDU0RTBBQzAwQzI2NzIxIC8qIENsYXNzTWV0aG9kU3dpenpsZXIubW0gKi8sCisJCQkJ
RjQ3REZCMjcyMUE4ODVFNzAwMDIxRkI2IC8qIERhdGFEZXRlY3RvcnNDb3JlU1BJLmggKi8sCiAJ
CQkJRjQ2MTI4QjQyMTFDODYxQTAwRDlGQURCIC8qIERyYWdBbmREcm9wU2ltdWxhdG9yLmggKi8s
CiAJCQkJRjQ0RDA2NDgxRjM5NjJFMzAwMUEwRTI5IC8qIEVkaXRpbmdUZXN0SGFybmVzcy5oICov
LAogCQkJCUY0NEQwNjQ5MUYzOTYyRTMwMDFBMEUyOSAvKiBFZGl0aW5nVGVzdEhhcm5lc3MubW0g
Ki8sCkBAIC0yNzQwLDYgKzI3NDUsNyBAQAogCQkJCTlCMTA1NjQyMUY5MDQ3Q0MwMEQ1NTgzRiAv
KiBjb3B5LWh0bWwuaHRtbCAqLywKIAkJCQk5QjYyNjMwQjFGOEMyNTEwMDA3RUUyOUIgLyogY29w
eS11cmwuaHRtbCAqLywKIAkJCQlGNEFCNTc4OTFGNjUxNjRCMDBEQjBEQTEgLyogY3VzdG9tLWRy
YWdnYWJsZS1kaXYuaHRtbCAqLywKKwkJCQlGNDdERkIyNDIxQTg3MDRBMDAwMjFGQjYgLyogZGF0
YS1kZXRlY3RvcnMuaHRtbCAqLywKIAkJCQlGNDg2QjFDRjFGNjc5NEZGMDBGMzRCREQgLyogRGF0
YVRyYW5zZmVyLXNldERyYWdJbWFnZS5odG1sICovLAogCQkJCUY0NTdBOUIzMjAyRDUzNTMwMEY3
RTlENSAvKiBEYXRhVHJhbnNmZXIuaHRtbCAqLywKIAkJCQlGNDUxMkUxMjFGNjBDNDM0MDBCQjM2
OUUgLyogRGF0YVRyYW5zZmVySXRlbS1nZXRBc0VudHJ5Lmh0bWwgKi8sCmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0RhdGFEZXRlY3Rpb24ubW0gYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0RhdGFEZXRlY3Rpb24ubW0KaW5k
ZXggYmYzYzk2NmU4NDcyMDVjYjBmZmJhN2FjYzYyN2VkMDQyZTkyY2JlMy4uODI3ODUxMzA5ODg4
OGJhNTM3ZDRiNWJjNzE1YzM3NWQzMTk0YjBjOCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9EYXRhRGV0ZWN0aW9uLm1tCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRGF0YURldGVjdGlvbi5tbQpAQCAtMjUsMTQgKzI1
LDQzIEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKIAorI2ltcG9ydCAiRGF0YURldGVjdG9yc0Nv
cmVTUEkuaCIKICNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJUZXN0Lmgi
CiAjaW1wb3J0ICJUZXN0TmF2aWdhdGlvbkRlbGVnYXRlLmgiCisjaW1wb3J0ICJUZXN0V0tXZWJW
aWV3LmgiCiAjaW1wb3J0IDxXZWJLaXQvV2ViS2l0Lmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRy
Lmg+CiAKICNpZiBXS19BUElfRU5BQkxFRCAmJiBQTEFURk9STShJT1NfRkFNSUxZKQogCitAaW50
ZXJmYWNlIFdLV2ViVmlldyAoRGF0YURldGVjdGlvbikKKy0gKHZvaWQpc3luY2hyb25vdXNseURl
dGVjdERhdGFXaXRoVHlwZXM6KFdLRGF0YURldGVjdG9yVHlwZXMpdHlwZXM7CistICh2b2lkKXN5
bmNocm9ub3VzbHlSZW1vdmVBbGxEYXRhRGV0ZWN0ZWRDb250ZW50OworQGVuZAorCitAaW1wbGVt
ZW50YXRpb24gV0tXZWJWaWV3IChEYXRhRGV0ZWN0aW9uKQorCistICh2b2lkKXN5bmNocm9ub3Vz
bHlEZXRlY3REYXRhV2l0aFR5cGVzOihXS0RhdGFEZXRlY3RvclR5cGVzKXR5cGVzCit7CisgICAg
X19ibG9jayBib29sIGRvbmUgPSBmYWxzZTsKKyAgICBbc2VsZiBfZGV0ZWN0RGF0YVdpdGhUeXBl
czp0eXBlcyBjb21wbGV0aW9uSGFuZGxlcjpeeworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9
XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworfQorCistICh2b2lkKXN5
bmNocm9ub3VzbHlSZW1vdmVBbGxEYXRhRGV0ZWN0ZWRDb250ZW50Cit7CisgICAgX19ibG9jayBi
b29sIGRvbmUgPSBmYWxzZTsKKyAgICBbc2VsZiBfcmVtb3ZlQWxsRGF0YURldGVjdGVkQ29udGVu
dDpeeworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpV
dGlsOjpydW4oJmRvbmUpOworfQorCitAZW5kCisKIHN0YXRpYyBib29sIHJhblNjcmlwdDsKIAog
QGludGVyZmFjZSBEYXRhRGV0ZWN0aW9uVUlEZWxlZ2F0ZSA6IE5TT2JqZWN0IDxXS1VJRGVsZWdh
dGU+CkBAIC05Nyw0ICsxMjYsMzkgQEAgVEVTVChXZWJLaXQsIERJU0FCTEVEX0RhdGFEZXRlY3Rp
b25SZWZlcmVuY2VEYXRlKQogICAgIGV4cGVjdExpbmtDb3VudCh3ZWJWaWV3LmdldCgpLCBAInll
c3RlcmRheSBhdCA2UE0iLCAxKTsKIH0KIAorVEVTVChXZWJLaXQsIEFkZEFuZFJlbW92ZURhdGFE
ZXRlY3RvcnMpCit7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcg
YWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAzMjAsIDUwMCldKTsKKyAgICBb
d2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZFRlc3RQYWdlTmFtZWQ6QCJkYXRhLWRldGVjdG9ycyJd
OworICAgIFt3ZWJWaWV3IGV4cGVjdEVsZW1lbnRDb3VudDowIHF1ZXJ5U2VsZWN0b3I6QCJhW3gt
YXBwbGUtZGF0YS1kZXRlY3RvcnM9dHJ1ZV0iXTsKKyAgICBFWFBFQ1RfRVEoMFUsIFt3ZWJWaWV3
IF9kYXRhRGV0ZWN0aW9uUmVzdWx0c10uY291bnQpOworCisgICAgYXV0byBjaGVja0RhdGFEZXRl
Y3Rpb25SZXN1bHRzID0gW10gKE5TQXJyYXk8RERTY2FubmVyUmVzdWx0ICo+ICpyZXN1bHRzKSB7
CisgICAgICAgIEVYUEVDVF9FUSgzVSwgcmVzdWx0cy5jb3VudCk7CisgICAgICAgIEVYUEVDVF9F
UShERFJlc3VsdENhdGVnb3J5VW5rbm93biwgcmVzdWx0c1swXS5jYXRlZ29yeSk7CisgICAgICAg
IEVYUEVDVF9UUlVFKFtyZXN1bHRzWzBdLnZhbHVlIGNvbnRhaW5zU3RyaW5nOkAiKzEtMjM0LTU2
Ny04OTAwIl0pOworICAgICAgICBFWFBFQ1RfVFJVRShbcmVzdWx0c1swXS52YWx1ZSBjb250YWlu
c1N0cmluZzpAImh0dHBzOi8vd3d3LmFwcGxlLmNvbSJdKTsKKyAgICAgICAgRVhQRUNUX1RSVUUo
W3Jlc3VsdHNbMF0udmFsdWUgY29udGFpbnNTdHJpbmc6QCIyIEFwcGxlIFBhcmsgV2F5LCBDdXBl
cnRpbm8gOTUwMTQiXSk7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUSgiU2lnbmF0dXJlQmxvY2si
LCByZXN1bHRzWzBdLnR5cGUpOworICAgICAgICBFWFBFQ1RfRVEoRERSZXN1bHRDYXRlZ29yeUNh
bGVuZGFyRXZlbnQsIHJlc3VsdHNbMV0uY2F0ZWdvcnkpOworICAgICAgICBFWFBFQ1RfV0tfU1RS
RVEoIkRhdGUiLCByZXN1bHRzWzFdLnR5cGUpOworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoIkRl
Y2VtYmVyIDIxLCAyMDIxIiwgcmVzdWx0c1sxXS52YWx1ZSk7CisgICAgICAgIEVYUEVDVF9FUShE
RFJlc3VsdENhdGVnb3J5TWlzYywgcmVzdWx0c1syXS5jYXRlZ29yeSk7CisgICAgICAgIEVYUEVD
VF9XS19TVFJFUSgiRmxpZ2h0SW5mb3JtYXRpb24iLCByZXN1bHRzWzJdLnR5cGUpOworICAgICAg
ICBFWFBFQ1RfV0tfU1RSRVEoIkFDNzgwIiwgcmVzdWx0c1syXS52YWx1ZSk7CisgICAgfTsKKwor
ICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlEZXRlY3REYXRhV2l0aFR5cGVzOldLRGF0YURldGVj
dG9yVHlwZUFsbF07CisgICAgW3dlYlZpZXcgZXhwZWN0RWxlbWVudENvdW50OjUgcXVlcnlTZWxl
Y3RvcjpAImFbeC1hcHBsZS1kYXRhLWRldGVjdG9ycz10cnVlXSJdOworICAgIGNoZWNrRGF0YURl
dGVjdGlvblJlc3VsdHMoW3dlYlZpZXcgX2RhdGFEZXRlY3Rpb25SZXN1bHRzXSk7CisKKyAgICBb
d2ViVmlldyBzeW5jaHJvbm91c2x5UmVtb3ZlQWxsRGF0YURldGVjdGVkQ29udGVudF07CisgICAg
W3dlYlZpZXcgZXhwZWN0RWxlbWVudENvdW50OjAgcXVlcnlTZWxlY3RvcjpAImFbeC1hcHBsZS1k
YXRhLWRldGVjdG9ycz10cnVlXSJdOworICAgIEVYUEVDVF9FUSgwVSwgW3dlYlZpZXcgX2RhdGFE
ZXRlY3Rpb25SZXN1bHRzXS5jb3VudCk7CisKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5RGV0
ZWN0RGF0YVdpdGhUeXBlczpXS0RhdGFEZXRlY3RvclR5cGVBZGRyZXNzIHwgV0tEYXRhRGV0ZWN0
b3JUeXBlUGhvbmVOdW1iZXJdOworICAgIFt3ZWJWaWV3IGV4cGVjdEVsZW1lbnRDb3VudDoyIHF1
ZXJ5U2VsZWN0b3I6QCJhW3gtYXBwbGUtZGF0YS1kZXRlY3RvcnM9dHJ1ZV0iXTsKKyAgICBjaGVj
a0RhdGFEZXRlY3Rpb25SZXN1bHRzKFt3ZWJWaWV3IF9kYXRhRGV0ZWN0aW9uUmVzdWx0c10pOwor
fQorCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvV0tBdHRhY2htZW50VGVzdHMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL1dLQXR0YWNobWVudFRlc3RzLm1tCmluZGV4IGUyY2U3MmE0MzUzMzNmZGUwNzEw
MmVhZjdkOGMwMDJkYTA5NGQ3YzUuLmQ0OGY0M2VmNzIxMjFlMmI1OTdhODc1NzgwMzlmNzc4ZTk0
N2Y1NzAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
V0tBdHRhY2htZW50VGVzdHMubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9XS0F0dGFjaG1lbnRUZXN0cy5tbQpAQCAtMjE1LDM3ICsyMTUsNiBAQCBzdGF0aWMg
TlNEYXRhICp0ZXN0UERGRGF0YSgpCiAKIEBpbXBsZW1lbnRhdGlvbiBUZXN0V0tXZWJWaWV3IChB
dHRhY2htZW50VGVzdGluZykKIAotLSAoTlNBcnJheTxOU1N0cmluZyAqPiAqKXRhZ3NJbkJvZHkK
LXsKLSAgICByZXR1cm4gW3NlbGYgb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAIkFycmF5
LmZyb20oZG9jdW1lbnQuYm9keS5nZXRFbGVtZW50c0J5VGFnTmFtZSgnKicpKS5tYXAoZSA9PiBl
LnRhZ05hbWUpIl07Ci19Ci0KLS0gKHZvaWQpZXhwZWN0RWxlbWVudFRhZ3NJbk9yZGVyOihOU0Fy
cmF5PE5TU3RyaW5nICo+ICopdGFnTmFtZXMKLXsKLSAgICBhdXRvIHJlbWFpbmluZ1RhZ3MgPSBh
ZG9wdE5TKFt0YWdOYW1lcyBtdXRhYmxlQ29weV0pOwotICAgIE5TQXJyYXk8TlNTdHJpbmcgKj4g
KnRhZ3NJbkJvZHkgPSBzZWxmLnRhZ3NJbkJvZHk7Ci0gICAgZm9yIChOU1N0cmluZyAqdGFnIGlu
IHRhZ3NJbkJvZHkucmV2ZXJzZU9iamVjdEVudW1lcmF0b3IpIHsKLSAgICAgICAgaWYgKFt0YWcg
aXNFcXVhbFRvU3RyaW5nOltyZW1haW5pbmdUYWdzIGxhc3RPYmplY3RdXSkKLSAgICAgICAgICAg
IFtyZW1haW5pbmdUYWdzIHJlbW92ZUxhc3RPYmplY3RdOwotICAgICAgICBpZiAoIVtyZW1haW5p
bmdUYWdzIGNvdW50XSkKLSAgICAgICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBFWFBFQ1RfRVEo
W3JlbWFpbmluZ1RhZ3MgY291bnRdLCAwVSk7Ci0gICAgaWYgKFtyZW1haW5pbmdUYWdzIGNvdW50
XSkKLSAgICAgICAgTlNMb2coQCJFeHBlY3RlZCB0byBmaW5kIG9yZGVyZWQgdGFnczogJUAgaW46
ICVAIiwgdGFnTmFtZXMsIHRhZ3NJbkJvZHkpOwotfQotCi0tICh2b2lkKWV4cGVjdEVsZW1lbnRD
b3VudDooTlNJbnRlZ2VyKWNvdW50IHRhZ05hbWU6KE5TU3RyaW5nICopdGFnTmFtZQotewotICAg
IE5TU3RyaW5nICpzY3JpcHQgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAImRvY3VtZW50
LnF1ZXJ5U2VsZWN0b3JBbGwoJyVAJykubGVuZ3RoIiwgdGFnTmFtZV07Ci0gICAgRVhQRUNUX0VR
KGNvdW50LCBbc2VsZiBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OnNjcmlwdF0uaW50ZWdl
clZhbHVlKTsKLX0KLQotLSAodm9pZClleHBlY3RFbGVtZW50VGFnOihOU1N0cmluZyAqKXRhZ05h
bWUgdG9Db21lQmVmb3JlOihOU1N0cmluZyAqKW90aGVyVGFnTmFtZQotewotICAgIFtzZWxmIGV4
cGVjdEVsZW1lbnRUYWdzSW5PcmRlcjpAW3RhZ05hbWUsIG90aGVyVGFnTmFtZV1dOwotfQotCiAt
IChfV0tBdHRhY2htZW50ICopc3luY2hyb25vdXNseUluc2VydEF0dGFjaG1lbnRXaXRoRmlsZVdy
YXBwZXI6KE5TRmlsZVdyYXBwZXIgKilmaWxlV3JhcHBlciBjb250ZW50VHlwZTooTlNTdHJpbmcg
Kiljb250ZW50VHlwZQogewogICAgIF9fYmxvY2sgYm9vbCBkb25lID0gZmFsc2U7CkBAIC04MzEs
NyArODAwLDcgQEAgVEVTVChXS0F0dGFjaG1lbnRUZXN0cywgSW5zZXJ0Rm9sZGVyQW5kRmlsZVdp
dGhVbmtub3duRXh0ZW5zaW9uKQogICAgIH0KIAogICAgIGF1dG8gY2hlY2tBdHRhY2htZW50Q29u
c2lzdGVuY3kgPSBbd2ViVmlldywgZmlsZSwgZm9sZGVyXSAoX1dLQXR0YWNobWVudCAqZXhwZWN0
ZWRGaWxlQXR0YWNobWVudCwgX1dLQXR0YWNobWVudCAqZXhwZWN0ZWRGb2xkZXJBdHRhY2htZW50
KSB7Ci0gICAgICAgIFt3ZWJWaWV3IGV4cGVjdEVsZW1lbnRDb3VudDoyIHRhZ05hbWU6QCJBVFRB
Q0hNRU5UIl07CisgICAgICAgIFt3ZWJWaWV3IGV4cGVjdEVsZW1lbnRDb3VudDoyIHF1ZXJ5U2Vs
ZWN0b3I6QCJBVFRBQ0hNRU5UIl07CiAgICAgICAgIEVYUEVDVF9UUlVFKFVUVHlwZUNvbmZvcm1z
VG8oKF9fYnJpZGdlIENGU3RyaW5nUmVmKVt3ZWJWaWV3IHZhbHVlT2ZBdHRyaWJ1dGU6QCJ0eXBl
IiBmb3JRdWVyeVNlbGVjdG9yOkAiYXR0YWNobWVudFt0aXRsZT1mb2xkZXJdIl0sIGtVVFR5cGVE
aXJlY3RvcnkpKTsKICAgICAgICAgRVhQRUNUX1RSVUUoVVRUeXBlQ29uZm9ybXNUbygoX19icmlk
Z2UgQ0ZTdHJpbmdSZWYpW3dlYlZpZXcgdmFsdWVPZkF0dHJpYnV0ZTpAInR5cGUiIGZvclF1ZXJ5
U2VsZWN0b3I6QCJhdHRhY2htZW50W3RpdGxlXj10ZXN0XSJdLCBrVVRUeXBlRGF0YSkpOwogICAg
ICAgICBFWFBFQ1RfV0tfU1RSRVEoZXhwZWN0ZWRGaWxlQXR0YWNobWVudC51bmlxdWVJZGVudGlm
aWVyLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQucXVl
cnlTZWxlY3RvcignYXR0YWNobWVudFt0aXRsZV49dGVzdF0nKS51bmlxdWVJZGVudGlmaWVyIl0p
OwpAQCAtOTI4LDcgKzg5Nyw3IEBAIFRFU1QoV0tBdHRhY2htZW50VGVzdHMsIFJlbW92ZU5ld2xp
bmVzQmVmb3JlUGFzdGVkSW1hZ2UpCiAgICAgICAgIFt3ZWJWaWV3IF9zeW5jaHJvbm91c2x5RXhl
Y3V0ZUVkaXRDb21tYW5kOkAiRGVsZXRlQmFja3dhcmQiIGFyZ3VtZW50Om5pbF07CiAgICAgICAg
IFt3ZWJWaWV3IF9zeW5jaHJvbm91c2x5RXhlY3V0ZUVkaXRDb21tYW5kOkAiRGVsZXRlQmFja3dh
cmQiIGFyZ3VtZW50Om5pbF07CiAgICAgICAgIG9ic2VydmVyLmV4cGVjdEF0dGFjaG1lbnRVcGRh
dGVzKEBbIF0sIEBbIF0pOwotICAgICAgICBbd2ViVmlldyBleHBlY3RFbGVtZW50Q291bnQ6MCB0
YWdOYW1lOkAiQlIiXTsKKyAgICAgICAgW3dlYlZpZXcgZXhwZWN0RWxlbWVudENvdW50OjAgcXVl
cnlTZWxlY3RvcjpAIkJSIl07CiAgICAgfQogfQogCkBAIC05NzEsMTMgKzk0MCwxMyBAQCBURVNU
KFdLQXR0YWNobWVudFRlc3RzLCBNb3ZlUGFzdGVkSW1hZ2VCeURyYWdnaW5nKQogICAgIFt3ZWJW
aWV3IF9leGVjdXRlRWRpdENvbW1hbmQ6QCJJbnNlcnRIVE1MIiBhcmd1bWVudDpAIjxzdHJvbmc+
dGV4dDwvc3Ryb25nPiIgY29tcGxldGlvbjpuaWxdOwogICAgIFt3ZWJWaWV3IF9zeW5jaHJvbm91
c2x5RXhlY3V0ZUVkaXRDb21tYW5kOkAiSW5zZXJ0UGFyYWdyYXBoIiBhcmd1bWVudDpuaWxdOwog
ICAgIFt3ZWJWaWV3IGV4cGVjdEVsZW1lbnRUYWc6QCJJTUciIHRvQ29tZUJlZm9yZTpAIlNUUk9O
RyJdOwotICAgIFt3ZWJWaWV3IGV4cGVjdEVsZW1lbnRDb3VudDoxIHRhZ05hbWU6QCJJTUciXTsK
KyAgICBbd2ViVmlldyBleHBlY3RFbGVtZW50Q291bnQ6MSBxdWVyeVNlbGVjdG9yOkAiSU1HIl07
CiAKICAgICAvLyBEcmFnIHRoZSBhdHRhY2htZW50IGVsZW1lbnQgdG8gc29tZXdoZXJlIGJlbG93
IHRoZSBzdHJvbmcgdGV4dC4KICAgICBbc2ltdWxhdG9yIHJ1bkZyb206Q0dQb2ludE1ha2UoNTAs
IDUwKSB0bzpDR1BvaW50TWFrZSg1MCwgMzUwKV07CiAKICAgICBbd2ViVmlldyBleHBlY3RFbGVt
ZW50VGFnOkAiU1RST05HIiB0b0NvbWVCZWZvcmU6QCJJTUciXTsKLSAgICBbd2ViVmlldyBleHBl
Y3RFbGVtZW50Q291bnQ6MSB0YWdOYW1lOkAiSU1HIl07CisgICAgW3dlYlZpZXcgZXhwZWN0RWxl
bWVudENvdW50OjEgcXVlcnlTZWxlY3RvcjpAIklNRyJdOwogICAgIEVYUEVDVF9FUShbc2ltdWxh
dG9yIGluc2VydGVkQXR0YWNobWVudHNdLmNvdW50LCBbc2ltdWxhdG9yIHJlbW92ZWRBdHRhY2ht
ZW50c10uY291bnQpOwogCiAgICAgW3NpbXVsYXRvciBlbmREYXRhVHJhbnNmZXJdOwpAQCAtMTAz
NCw4ICsxMDAzLDggQEAgVEVTVChXS0F0dGFjaG1lbnRUZXN0cywgSW5zZXJ0UGFzdGVkQXR0cmli
dXRlZFN0cmluZ0NvbnRhaW5pbmdNdWx0aXBsZUF0dGFjaG1lbnQKICAgICB9CiAKICAgICBFWFBF
Q1RfVFJVRSh6aXBBdHRhY2htZW50ICYmIGltYWdlQXR0YWNobWVudCAmJiBwZGZBdHRhY2htZW50
KTsKLSAgICBbd2ViVmlldyBleHBlY3RFbGVtZW50Q291bnQ6MiB0YWdOYW1lOkAiQVRUQUNITUVO
VCJdOwotICAgIFt3ZWJWaWV3IGV4cGVjdEVsZW1lbnRDb3VudDoxIHRhZ05hbWU6QCJJTUciXTsK
KyAgICBbd2ViVmlldyBleHBlY3RFbGVtZW50Q291bnQ6MiBxdWVyeVNlbGVjdG9yOkAiQVRUQUNI
TUVOVCJdOworICAgIFt3ZWJWaWV3IGV4cGVjdEVsZW1lbnRDb3VudDoxIHF1ZXJ5U2VsZWN0b3I6
QCJJTUciXTsKICAgICBFWFBFQ1RfV0tfU1RSRVEoImFwcGxpY2F0aW9uL3BkZiIsIFt3ZWJWaWV3
IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxs
KCdhdHRhY2htZW50JylbMF0uZ2V0QXR0cmlidXRlKCd0eXBlJykiXSk7CiAKICAgICBOU1N0cmlu
ZyAqemlwQXR0YWNobWVudFR5cGUgPSBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2Ny
aXB0OkAiZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnYXR0YWNobWVudCcpWzFdLmdldEF0dHJp
YnV0ZSgndHlwZScpIl07CkBAIC0xMzM4LDcgKzEzMDcsNyBAQCBURVNUKFdLQXR0YWNobWVudFRl
c3RzLCBQYXN0ZVdlYkFyY2hpdmVDb250YWluaW5nSW1hZ2VzKQogCiAgICAgT2JzZXJ2ZUF0dGFj
aG1lbnRVcGRhdGVzRm9yU2NvcGUgb2JzZXJ2ZXIod2ViVmlldy5nZXQoKSk7CiAgICAgW3dlYlZp
ZXcgX3N5bmNocm9ub3VzbHlFeGVjdXRlRWRpdENvbW1hbmQ6QCJQYXN0ZSIgYXJndW1lbnQ6bmls
XTsKLSAgICBbd2ViVmlldyBleHBlY3RFbGVtZW50Q291bnQ6MiB0YWdOYW1lOkAiSU1HIl07Cisg
ICAgW3dlYlZpZXcgZXhwZWN0RWxlbWVudENvdW50OjIgcXVlcnlTZWxlY3RvcjpAIklNRyJdOwog
CiAgICAgZm9yIChfV0tBdHRhY2htZW50ICphdHRhY2htZW50IGluIG9ic2VydmVyLm9ic2VydmVy
KCkuaW5zZXJ0ZWQpIHsKICAgICAgICAgaWYgKFthdHRhY2htZW50LmluZm8uY29udGVudFR5cGUg
aXNFcXVhbFRvU3RyaW5nOkAiaW1hZ2UvcG5nIl0pCkBAIC0xNDczLDcgKzE0NDIsNyBAQCBURVNU
KFdLQXR0YWNobWVudFRlc3RzLCBDb3B5QW5kUGFzdGVCZXR3ZWVuV2ViVmlld3MpCiAgICAgYXV0
byBzZWNvbmRXZWJWaWV3ID0gd2ViVmlld0ZvclRlc3RpbmdBdHRhY2htZW50cygpOwogICAgIE9i
c2VydmVBdHRhY2htZW50VXBkYXRlc0ZvclNjb3BlIG9ic2VydmVyKHNlY29uZFdlYlZpZXcuZ2V0
KCkpOwogICAgIFtzZWNvbmRXZWJWaWV3IHBhc3RlOm5pbF07Ci0gICAgW3NlY29uZFdlYlZpZXcg
ZXhwZWN0RWxlbWVudENvdW50OjMgdGFnTmFtZTpAImF0dGFjaG1lbnQiXTsKKyAgICBbc2Vjb25k
V2ViVmlldyBleHBlY3RFbGVtZW50Q291bnQ6MyBxdWVyeVNlbGVjdG9yOkAiYXR0YWNobWVudCJd
OwogICAgIEVYUEVDVF9FUSgzVSwgb2JzZXJ2ZXIub2JzZXJ2ZXIoKS5pbnNlcnRlZC5jb3VudCk7
CiAKICAgICBOU1N0cmluZyAqcGxhaW5GaWxlSWRlbnRpZmllciA9IFtzZWNvbmRXZWJWaWV3IHN0
cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdhdHRh
Y2htZW50W3RpdGxlXj10ZXN0XScpLnVuaXF1ZUlkZW50aWZpZXIiXTsKQEAgLTE1MTYsOCArMTQ4
NSw4IEBAIFRFU1QoV0tBdHRhY2htZW50VGVzdHNNYWMsIEluc2VydFBhc3RlZEZpbGVVUkxzQXNB
dHRhY2htZW50cykKICAgICAgICAgRVhQRUNUX0VRKDJVLCBbaW5zZXJ0ZWRBdHRhY2htZW50cyBj
b3VudF0pOwogICAgIH0KIAotICAgIFt3ZWJWaWV3IGV4cGVjdEVsZW1lbnRDb3VudDoxIHRhZ05h
bWU6QCJBVFRBQ0hNRU5UIl07Ci0gICAgW3dlYlZpZXcgZXhwZWN0RWxlbWVudENvdW50OjEgdGFn
TmFtZTpAIklNRyJdOworICAgIFt3ZWJWaWV3IGV4cGVjdEVsZW1lbnRDb3VudDoxIHF1ZXJ5U2Vs
ZWN0b3I6QCJBVFRBQ0hNRU5UIl07CisgICAgW3dlYlZpZXcgZXhwZWN0RWxlbWVudENvdW50OjEg
cXVlcnlTZWxlY3RvcjpAIklNRyJdOwogICAgIEVYUEVDVF9XS19TVFJFUSgiYXBwbGljYXRpb24v
cGRmIiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LnF1
ZXJ5U2VsZWN0b3IoJ2F0dGFjaG1lbnQnKS5nZXRBdHRyaWJ1dGUoJ3R5cGUnKSJdKTsKICAgICBF
WFBFQ1RfV0tfU1RSRVEoInRlc3QucGRmIiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2
YVNjcmlwdDpAImRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2F0dGFjaG1lbnQnKS5nZXRBdHRyaWJ1
dGUoJ3RpdGxlJykiXSk7CiAKQEAgLTE1NTIsOCArMTUyMSw4IEBAIFRFU1QoV0tBdHRhY2htZW50
VGVzdHNNYWMsIEluc2VydERyb3BwZWRGaWxlUHJvbWlzZXNBc0F0dGFjaG1lbnRzKQogCiAgICAg
W3NpbXVsYXRvciBydW5Gcm9tOkNHUG9pbnRNYWtlKDAsIDApIHRvOkNHUG9pbnRNYWtlKDUwLCA1
MCldOwogCi0gICAgW3dlYlZpZXcgZXhwZWN0RWxlbWVudENvdW50OjEgdGFnTmFtZTpAIkFUVEFD
SE1FTlQiXTsKLSAgICBbd2ViVmlldyBleHBlY3RFbGVtZW50Q291bnQ6MSB0YWdOYW1lOkAiSU1H
Il07CisgICAgW3dlYlZpZXcgZXhwZWN0RWxlbWVudENvdW50OjEgcXVlcnlTZWxlY3RvcjpAIkFU
VEFDSE1FTlQiXTsKKyAgICBbd2ViVmlldyBleHBlY3RFbGVtZW50Q291bnQ6MSBxdWVyeVNlbGVj
dG9yOkAiSU1HIl07CiAgICAgRVhQRUNUX0VRKDJVLCBbc2ltdWxhdG9yIGluc2VydGVkQXR0YWNo
bWVudHNdLmNvdW50KTsKIAogICAgIGF1dG8gaW5zZXJ0ZWRBdHRhY2htZW50cyA9IHJldGFpblB0
cihbc2ltdWxhdG9yIGluc2VydGVkQXR0YWNobWVudHNdKTsKQEAgLTE1NzMsOCArMTU0Miw4IEBA
IFRFU1QoV0tBdHRhY2htZW50VGVzdHNNYWMsIEluc2VydERyb3BwZWRGaWxlUHJvbWlzZXNBc0F0
dGFjaG1lbnRzKQogICAgIFt3ZWJWaWV3IF9zeW5jaHJvbm91c2x5RXhlY3V0ZUVkaXRDb21tYW5k
OkAiRGVsZXRlQmFja3dhcmQiIGFyZ3VtZW50Om5pbF07CiAgICAgYXV0byByZW1vdmVkQXR0YWNo
bWVudHMgPSByZXRhaW5QdHIoW3NpbXVsYXRvciByZW1vdmVkQXR0YWNobWVudHNdKTsKICAgICBF
WFBFQ1RfRVEoMlUsIFtyZW1vdmVkQXR0YWNobWVudHMgY291bnRdKTsKLSAgICBbd2ViVmlldyBl
eHBlY3RFbGVtZW50Q291bnQ6MCB0YWdOYW1lOkAiQVRUQUNITUVOVCJdOwotICAgIFt3ZWJWaWV3
IGV4cGVjdEVsZW1lbnRDb3VudDowIHRhZ05hbWU6QCJJTUciXTsKKyAgICBbd2ViVmlldyBleHBl
Y3RFbGVtZW50Q291bnQ6MCBxdWVyeVNlbGVjdG9yOkAiQVRUQUNITUVOVCJdOworICAgIFt3ZWJW
aWV3IGV4cGVjdEVsZW1lbnRDb3VudDowIHF1ZXJ5U2VsZWN0b3I6QCJJTUciXTsKICAgICBFWFBF
Q1RfVFJVRShbcmVtb3ZlZEF0dGFjaG1lbnRzIGNvbnRhaW5zT2JqZWN0OltpbnNlcnRlZEF0dGFj
aG1lbnRzIGZpcnN0T2JqZWN0XV0pOwogICAgIEVYUEVDVF9UUlVFKFtyZW1vdmVkQXR0YWNobWVu
dHMgY29udGFpbnNPYmplY3Q6W2luc2VydGVkQXR0YWNobWVudHMgbGFzdE9iamVjdF1dKTsKIH0K
QEAgLTE2ODEsNyArMTY1MCw3IEBAIFRFU1QoV0tBdHRhY2htZW50VGVzdHNJT1MsIEluc2VydERy
b3BwZWRSaWNoQW5kUGxhaW5UZXh0RmlsZXNBc0F0dGFjaG1lbnRzKQogICAgIGZvciAoX1dLQXR0
YWNobWVudCAqYXR0YWNobWVudCBpbiBbZHJhZ0FuZERyb3BTaW11bGF0b3IgaW5zZXJ0ZWRBdHRh
Y2htZW50c10pCiAgICAgICAgIEVYUEVDVF9HVChbYXR0YWNobWVudCBpbmZvXS5kYXRhLmxlbmd0
aCwgMFUpOwogCi0gICAgW3dlYlZpZXcgZXhwZWN0RWxlbWVudENvdW50OjIgdGFnTmFtZTpAIkFU
VEFDSE1FTlQiXTsKKyAgICBbd2ViVmlldyBleHBlY3RFbGVtZW50Q291bnQ6MiBxdWVyeVNlbGVj
dG9yOkAiQVRUQUNITUVOVCJdOwogICAgIEVYUEVDVF9XS19TVFJFUSgiaGVsbG8ucnRmIiwgW3dl
YlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LnF1ZXJ5U2VsZWN0
b3JBbGwoJ2F0dGFjaG1lbnQnKVswXS5nZXRBdHRyaWJ1dGUoJ3RpdGxlJykiXSk7CiAgICAgRVhQ
RUNUX1dLX1NUUkVRKCJ0ZXh0L3J0ZiIsIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFT
Y3JpcHQ6QCJkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdhdHRhY2htZW50JylbMF0uZ2V0QXR0
cmlidXRlKCd0eXBlJykiXSk7CiAgICAgRVhQRUNUX1dLX1NUUkVRKCJ3b3JsZC50eHQiLCBbd2Vi
VmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQucXVlcnlTZWxlY3Rv
ckFsbCgnYXR0YWNobWVudCcpWzFdLmdldEF0dHJpYnV0ZSgndGl0bGUnKSJdKTsKQEAgLTE3MDYs
NyArMTY3NSw3IEBAIFRFU1QoV0tBdHRhY2htZW50VGVzdHNJT1MsIEluc2VydERyb3BwZWRaaXBB
cmNoaXZlQXNBdHRhY2htZW50KQogICAgIEVYUEVDVF9FUSgxVSwgW2RyYWdBbmREcm9wU2ltdWxh
dG9yIGluc2VydGVkQXR0YWNobWVudHNdLmNvdW50KTsKICAgICBFWFBFQ1RfRVEoMFUsIFtkcmFn
QW5kRHJvcFNpbXVsYXRvciByZW1vdmVkQXR0YWNobWVudHNdLmNvdW50KTsKICAgICBbW2RyYWdB
bmREcm9wU2ltdWxhdG9yIGluc2VydGVkQXR0YWNobWVudHNdLmZpcnN0T2JqZWN0IGV4cGVjdFJl
cXVlc3RlZERhdGFUb0JlOmRhdGFdOwotICAgIFt3ZWJWaWV3IGV4cGVjdEVsZW1lbnRDb3VudDox
IHRhZ05hbWU6QCJBVFRBQ0hNRU5UIl07CisgICAgW3dlYlZpZXcgZXhwZWN0RWxlbWVudENvdW50
OjEgcXVlcnlTZWxlY3RvcjpAIkFUVEFDSE1FTlQiXTsKICAgICBFWFBFQ1RfV0tfU1RSRVEoImFy
Y2hpdmUuemlwIiwgW3dlYlZpZXcgdmFsdWVPZkF0dHJpYnV0ZTpAInRpdGxlIiBmb3JRdWVyeVNl
bGVjdG9yOkAiYXR0YWNobWVudCJdKTsKICAgICBFWFBFQ1RfV0tfU1RSRVEoImFwcGxpY2F0aW9u
L3ppcCIsIFt3ZWJWaWV3IHZhbHVlT2ZBdHRyaWJ1dGU6QCJ0eXBlIiBmb3JRdWVyeVNlbGVjdG9y
OkAiYXR0YWNobWVudCJdKTsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvZGF0YS1kZXRlY3RvcnMuaHRtbCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvZGF0YS1kZXRlY3RvcnMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mOWY4N2Fm
NGY4ODg5ZWI3NDQ0NGI1OTAwZTYwYTE5ZmU3MWU4NWQ1Ci0tLSAvZGV2L251bGwKKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9kYXRhLWRldGVjdG9ycy5odG1sCkBA
IC0wLDAgKzEsMzAgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8bWV0YSBuYW1lPSJ2aWV3
cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEiPgorPGJv
ZHk+Cis8dGFibGU+Cis8dGJvZHk+Cis8dHI+CisgICAgPHRkPlRlbGVwaG9uZSBudW1iZXI8L3Rk
PgorICAgIDx0ZD4rMS0yMzQtNTY3LTg5MDA8L3RkPgorPC90cj4KKzx0cj4KKyAgICA8dGQ+TGlu
azwvdGQ+CisgICAgPHRkPmh0dHBzOi8vd3d3LmFwcGxlLmNvbTwvdGQ+Cis8L3RyPgorPHRyPgor
ICAgIDx0ZD5BZGRyZXNzPC90ZD4KKyAgICA8dGQ+MiBBcHBsZSBQYXJrIFdheSwgQ3VwZXJ0aW5v
IDk1MDE0PC90ZD4KKzwvdHI+Cis8dHI+CisgICAgPHRkPkNhbGVuZGFyIGV2ZW50PC90ZD4KKyAg
ICA8dGQ+RGVjZW1iZXIgMjEsIDIwMjE8L3RkPgorPC90cj4KKzx0cj4KKyAgICA8dGQ+RmxpZ2h0
IG51bWJlcjwvdGQ+CisgICAgPHRkPkFDNzgwPC90ZD4KKzwvdHI+Cis8L3Rib2R5PgorPC90YWJs
ZT4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29j
b2EvVGVzdFdLV2ViVmlldy5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJW
aWV3LmgKaW5kZXggNTQ4ODM2OTc1NjQ2MGRjMWM3ZDVjOTdlMzcyMTBmYmNkODMxMDE4Yi4uODgz
YWJkMWNhY2E5ZDc1ZTk1ZTQ1MDE5Y2FlMGJkNDJlZjUwNWRlMCAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3LmgKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3LmgKQEAgLTQ4LDcgKzQ4LDE0IEBACiBAZW5kCiAKIEBp
bnRlcmZhY2UgV0tXZWJWaWV3IChUZXN0V2ViS2l0QVBJKQorQHByb3BlcnR5IChub25hdG9taWMs
IHJlYWRvbmx5KSBOU0FycmF5PE5TU3RyaW5nICo+ICp0YWdzSW5Cb2R5OwogLSAoQk9PTClfc3lu
Y2hyb25vdXNseUV4ZWN1dGVFZGl0Q29tbWFuZDooTlNTdHJpbmcgKiljb21tYW5kIGFyZ3VtZW50
OihOU1N0cmluZyAqKWFyZ3VtZW50OworLSAodm9pZClleHBlY3RFbGVtZW50VGFnc0luT3JkZXI6
KE5TQXJyYXk8TlNTdHJpbmcgKj4gKil0YWdOYW1lczsKKy0gKHZvaWQpZXhwZWN0RWxlbWVudENv
dW50OihOU0ludGVnZXIpY291bnQgcXVlcnlTZWxlY3RvcjooTlNTdHJpbmcgKilxdWVyeVNlbGVj
dG9yOworLSAodm9pZClleHBlY3RFbGVtZW50VGFnOihOU1N0cmluZyAqKXRhZ05hbWUgdG9Db21l
QmVmb3JlOihOU1N0cmluZyAqKW90aGVyVGFnTmFtZTsKKy0gKE5TU3RyaW5nICopc3RyaW5nQnlF
dmFsdWF0aW5nSmF2YVNjcmlwdDooTlNTdHJpbmcgKilzY3JpcHQ7CistIChpZClvYmplY3RCeUV2
YWx1YXRpbmdKYXZhU2NyaXB0V2l0aFVzZXJHZXN0dXJlOihOU1N0cmluZyAqKXNjcmlwdDsKKy0g
KGlkKW9iamVjdEJ5RXZhbHVhdGluZ0phdmFTY3JpcHQ6KE5TU3RyaW5nICopc2NyaXB0OwogQGVu
ZAogCiBAaW50ZXJmYWNlIFRlc3RNZXNzYWdlSGFuZGxlciA6IE5TT2JqZWN0IDxXS1NjcmlwdE1l
c3NhZ2VIYW5kbGVyPgpAQCAtNjQsOSArNzEsNiBAQAogLSAodm9pZClzeW5jaHJvbm91c2x5TG9h
ZEhUTUxTdHJpbmc6KE5TU3RyaW5nICopaHRtbDsKIC0gKHZvaWQpc3luY2hyb25vdXNseUxvYWRI
VE1MU3RyaW5nOihOU1N0cmluZyAqKWh0bWwgYmFzZVVSTDooTlNVUkwgKil1cmw7CiAtICh2b2lk
KXN5bmNocm9ub3VzbHlMb2FkVGVzdFBhZ2VOYW1lZDooTlNTdHJpbmcgKilwYWdlTmFtZTsKLS0g
KGlkKW9iamVjdEJ5RXZhbHVhdGluZ0phdmFTY3JpcHQ6KE5TU3RyaW5nICopc2NyaXB0OwotLSAo
aWQpb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdFdpdGhVc2VyR2VzdHVyZTooTlNTdHJpbmcg
KilzY3JpcHQ7Ci0tIChOU1N0cmluZyAqKXN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6KE5T
U3RyaW5nICopc2NyaXB0OwogLSAodm9pZCl3YWl0Rm9yTWVzc2FnZTooTlNTdHJpbmcgKiltZXNz
YWdlOwogLSAodm9pZClwZXJmb3JtQWZ0ZXJMb2FkaW5nOihkaXNwYXRjaF9ibG9ja190KWFjdGlv
bnM7CiAtICh2b2lkKXdhaXRGb3JOZXh0UHJlc2VudGF0aW9uVXBkYXRlOwpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tCmluZGV4IGNjYmVmZjgyNGQ2NTVjMTQzZmIw
YzAzMWExMTRlZTZmN2Q0ODNlZGYuLmU4ZWFkZjg2ZDNlODNjZmU4NDQxZjIwN2JmZjQ0M2IxOWRi
OTUxNmUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmll
dy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcubW0KQEAg
LTc4LDYgKzc4LDcyIEBAIC0gKEJPT0wpX3N5bmNocm9ub3VzbHlFeGVjdXRlRWRpdENvbW1hbmQ6
KE5TU3RyaW5nICopY29tbWFuZCBhcmd1bWVudDooTlNTdHJpbmcKICAgICByZXR1cm4gc3VjY2Vz
czsKIH0KIAorLSAoTlNBcnJheTxOU1N0cmluZyAqPiAqKXRhZ3NJbkJvZHkKK3sKKyAgICByZXR1
cm4gW3NlbGYgb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAIkFycmF5LmZyb20oZG9jdW1l
bnQuYm9keS5nZXRFbGVtZW50c0J5VGFnTmFtZSgnKicpKS5tYXAoZSA9PiBlLnRhZ05hbWUpIl07
Cit9CisKKy0gKHZvaWQpZXhwZWN0RWxlbWVudFRhZ3NJbk9yZGVyOihOU0FycmF5PE5TU3RyaW5n
ICo+ICopdGFnTmFtZXMKK3sKKyAgICBhdXRvIHJlbWFpbmluZ1RhZ3MgPSBhZG9wdE5TKFt0YWdO
YW1lcyBtdXRhYmxlQ29weV0pOworICAgIE5TQXJyYXk8TlNTdHJpbmcgKj4gKnRhZ3NJbkJvZHkg
PSBzZWxmLnRhZ3NJbkJvZHk7CisgICAgZm9yIChOU1N0cmluZyAqdGFnIGluIHRhZ3NJbkJvZHku
cmV2ZXJzZU9iamVjdEVudW1lcmF0b3IpIHsKKyAgICAgICAgaWYgKFt0YWcgaXNFcXVhbFRvU3Ry
aW5nOltyZW1haW5pbmdUYWdzIGxhc3RPYmplY3RdXSkKKyAgICAgICAgICAgIFtyZW1haW5pbmdU
YWdzIHJlbW92ZUxhc3RPYmplY3RdOworICAgICAgICBpZiAoIVtyZW1haW5pbmdUYWdzIGNvdW50
XSkKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBFWFBFQ1RfRVEoW3JlbWFpbmluZ1Rh
Z3MgY291bnRdLCAwVSk7CisgICAgaWYgKFtyZW1haW5pbmdUYWdzIGNvdW50XSkKKyAgICAgICAg
TlNMb2coQCJFeHBlY3RlZCB0byBmaW5kIG9yZGVyZWQgdGFnczogJUAgaW46ICVAIiwgdGFnTmFt
ZXMsIHRhZ3NJbkJvZHkpOworfQorCistICh2b2lkKWV4cGVjdEVsZW1lbnRDb3VudDooTlNJbnRl
Z2VyKWNvdW50IHF1ZXJ5U2VsZWN0b3I6KE5TU3RyaW5nICopcXVlcnlTZWxlY3RvcgoreworICAg
IE5TU3RyaW5nICpzY3JpcHQgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAImRvY3VtZW50
LnF1ZXJ5U2VsZWN0b3JBbGwoJyVAJykubGVuZ3RoIiwgcXVlcnlTZWxlY3Rvcl07CisgICAgRVhQ
RUNUX0VRKGNvdW50LCBbc2VsZiBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OnNjcmlwdF0u
aW50ZWdlclZhbHVlKTsKK30KKworLSAodm9pZClleHBlY3RFbGVtZW50VGFnOihOU1N0cmluZyAq
KXRhZ05hbWUgdG9Db21lQmVmb3JlOihOU1N0cmluZyAqKW90aGVyVGFnTmFtZQoreworICAgIFtz
ZWxmIGV4cGVjdEVsZW1lbnRUYWdzSW5PcmRlcjpAW3RhZ05hbWUsIG90aGVyVGFnTmFtZV1dOwor
fQorCistIChpZClvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OihOU1N0cmluZyAqKXNjcmlw
dAoreworICAgIGJvb2wgaXNXYWl0aW5nRm9ySmF2YVNjcmlwdCA9IGZhbHNlOworICAgIFJldGFp
blB0cjxpZD4gZXZhbFJlc3VsdDsKKyAgICBbc2VsZiBfZXZhbHVhdGVKYXZhU2NyaXB0V2l0aG91
dFVzZXJHZXN0dXJlOnNjcmlwdCBjb21wbGV0aW9uSGFuZGxlcjpbJl0gKGlkIHJlc3VsdCwgTlNF
cnJvciAqZXJyb3IpIHsKKyAgICAgICAgZXZhbFJlc3VsdCA9IHJlc3VsdDsKKyAgICAgICAgaXNX
YWl0aW5nRm9ySmF2YVNjcmlwdCA9IHRydWU7CisgICAgICAgIEVYUEVDVF9UUlVFKCFlcnJvcik7
CisgICAgICAgIGlmIChlcnJvcikKKyAgICAgICAgICAgIE5TTG9nKEAiRW5jb3VudGVyZWQgZXJy
b3I6ICVAIHdoaWxlIGV2YWx1YXRpbmcgc2NyaXB0OiAlQCIsIGVycm9yLCBzY3JpcHQpOworICAg
IH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNXYWl0aW5nRm9ySmF2YVNjcmlw
dCk7CisgICAgcmV0dXJuIGV2YWxSZXN1bHQuYXV0b3JlbGVhc2UoKTsKK30KKworLSAoaWQpb2Jq
ZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdFdpdGhVc2VyR2VzdHVyZTooTlNTdHJpbmcgKilzY3Jp
cHQKK3sKKyAgICBib29sIGlzV2FpdGluZ0ZvckphdmFTY3JpcHQgPSBmYWxzZTsKKyAgICBSZXRh
aW5QdHI8aWQ+IGV2YWxSZXN1bHQ7CisgICAgW3NlbGYgZXZhbHVhdGVKYXZhU2NyaXB0OnNjcmlw
dCBjb21wbGV0aW9uSGFuZGxlcjpbJl0gKGlkIHJlc3VsdCwgTlNFcnJvciAqZXJyb3IpIHsKKyAg
ICAgICAgZXZhbFJlc3VsdCA9IHJlc3VsdDsKKyAgICAgICAgaXNXYWl0aW5nRm9ySmF2YVNjcmlw
dCA9IHRydWU7CisgICAgICAgIEVYUEVDVF9UUlVFKCFlcnJvcik7CisgICAgICAgIGlmIChlcnJv
cikKKyAgICAgICAgICAgIE5TTG9nKEAiRW5jb3VudGVyZWQgZXJyb3I6ICVAIHdoaWxlIGV2YWx1
YXRpbmcgc2NyaXB0OiAlQCIsIGVycm9yLCBzY3JpcHQpOworICAgIH1dOworICAgIFRlc3RXZWJL
aXRBUEk6OlV0aWw6OnJ1bigmaXNXYWl0aW5nRm9ySmF2YVNjcmlwdCk7CisgICAgcmV0dXJuIGV2
YWxSZXN1bHQuYXV0b3JlbGVhc2UoKTsKK30KKworLSAoTlNTdHJpbmcgKilzdHJpbmdCeUV2YWx1
YXRpbmdKYXZhU2NyaXB0OihOU1N0cmluZyAqKXNjcmlwdAoreworICAgIHJldHVybiBbTlNTdHJp
bmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVAIiwgW3NlbGYgb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNj
cmlwdDpzY3JpcHRdXTsKK30KKwogQGVuZAogCiBAaW1wbGVtZW50YXRpb24gVGVzdE1lc3NhZ2VI
YW5kbGVyIHsKQEAgLTI4OSw0MSArMzU1LDYgQEAgLSAodm9pZClzeW5jaHJvbm91c2x5TG9hZFRl
c3RQYWdlTmFtZWQ6KE5TU3RyaW5nICopcGFnZU5hbWUKICAgICBbc2VsZiBfdGVzdF93YWl0Rm9y
RGlkRmluaXNoTmF2aWdhdGlvbl07CiB9CiAKLS0gKGlkKW9iamVjdEJ5RXZhbHVhdGluZ0phdmFT
Y3JpcHQ6KE5TU3RyaW5nICopc2NyaXB0Ci17Ci0gICAgYm9vbCBpc1dhaXRpbmdGb3JKYXZhU2Ny
aXB0ID0gZmFsc2U7Ci0gICAgUmV0YWluUHRyPGlkPiBldmFsUmVzdWx0OwotICAgIFtzZWxmIF9l
dmFsdWF0ZUphdmFTY3JpcHRXaXRob3V0VXNlckdlc3R1cmU6c2NyaXB0IGNvbXBsZXRpb25IYW5k
bGVyOlsmXSAoaWQgcmVzdWx0LCBOU0Vycm9yICplcnJvcikgewotICAgICAgICBldmFsUmVzdWx0
ID0gcmVzdWx0OwotICAgICAgICBpc1dhaXRpbmdGb3JKYXZhU2NyaXB0ID0gdHJ1ZTsKLSAgICAg
ICAgRVhQRUNUX1RSVUUoIWVycm9yKTsKLSAgICAgICAgaWYgKGVycm9yKQotICAgICAgICAgICAg
TlNMb2coQCJFbmNvdW50ZXJlZCBlcnJvcjogJUAgd2hpbGUgZXZhbHVhdGluZyBzY3JpcHQ6ICVA
IiwgZXJyb3IsIHNjcmlwdCk7Ci0gICAgfV07Ci0gICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVu
KCZpc1dhaXRpbmdGb3JKYXZhU2NyaXB0KTsKLSAgICByZXR1cm4gZXZhbFJlc3VsdC5hdXRvcmVs
ZWFzZSgpOwotfQotCi0tIChpZClvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0V2l0aFVzZXJH
ZXN0dXJlOihOU1N0cmluZyAqKXNjcmlwdAotewotICAgIGJvb2wgaXNXYWl0aW5nRm9ySmF2YVNj
cmlwdCA9IGZhbHNlOwotICAgIFJldGFpblB0cjxpZD4gZXZhbFJlc3VsdDsKLSAgICBbc2VsZiBl
dmFsdWF0ZUphdmFTY3JpcHQ6c2NyaXB0IGNvbXBsZXRpb25IYW5kbGVyOlsmXSAoaWQgcmVzdWx0
LCBOU0Vycm9yICplcnJvcikgewotICAgICAgICBldmFsUmVzdWx0ID0gcmVzdWx0OwotICAgICAg
ICBpc1dhaXRpbmdGb3JKYXZhU2NyaXB0ID0gdHJ1ZTsKLSAgICAgICAgRVhQRUNUX1RSVUUoIWVy
cm9yKTsKLSAgICAgICAgaWYgKGVycm9yKQotICAgICAgICAgICAgTlNMb2coQCJFbmNvdW50ZXJl
ZCBlcnJvcjogJUAgd2hpbGUgZXZhbHVhdGluZyBzY3JpcHQ6ICVAIiwgZXJyb3IsIHNjcmlwdCk7
Ci0gICAgfV07Ci0gICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc1dhaXRpbmdGb3JKYXZh
U2NyaXB0KTsKLSAgICByZXR1cm4gZXZhbFJlc3VsdC5hdXRvcmVsZWFzZSgpOwotfQotCi0tIChO
U1N0cmluZyAqKXN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6KE5TU3RyaW5nICopc2NyaXB0
Ci17Ci0gICAgcmV0dXJuIFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUAiLCBbc2VsZiBv
YmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OnNjcmlwdF1dOwotfQotCiAtICh2b2lkKXdhaXRG
b3JNZXNzYWdlOihOU1N0cmluZyAqKW1lc3NhZ2UKIHsKICAgICBfX2Jsb2NrIGJvb2wgaXNEb25l
V2FpdGluZyA9IGZhbHNlOwo=
</data>
<flag name="review"
          id="372616"
          type_id="1"
          status="+"
          setter="thorton"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>355554</attachid>
            <date>2018-11-23 23:27:32 -0800</date>
            <delta_ts>2018-11-23 23:57:10 -0800</delta_ts>
            <desc>Patch for EWS</desc>
            <filename>bug-191918-20181123232731.patch</filename>
            <type>text/plain</type>
            <size>44011</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4NDU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDljYzEyMzFlYWVmZGQ4
ZDJiMjcxYmQ1M2I0ZTEzZTk5NjA1ZTgxMC4uODQ3NGJkZWU4ZWE5NTAzY2Y2N2MwYmU4YmFhMDJk
ZWY1MDJhNmUxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE4LTExLTIzICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gQWRk
IFdLV2ViVmlldyBTUEkgdG8gdHJpZ2dlciBhbmQgcmVtb3ZlIGRhdGEgZGV0ZWN0aW9uCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTE5MTgKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzM2MTg1MDUxPgorCisgICAgICAgIFJldmlld2VkIGJ5IFRpbSBI
b3J0b24uCisKKyAgICAgICAgQWRkIGEgaGVscGVyIG1ldGhvZCBvbiBEYXRhRGV0ZWN0aW9uIHRv
IHJlbW92ZSBhbGwgZGF0YSBkZXRlY3RlZCBsaW5rcyBpbiB0aGUgZ2l2ZW4gZG9jdW1lbnQuIFNl
ZSBXZWJLaXQgY2hhbmdlcworICAgICAgICBmb3IgbW9yZSBkZXRhaWwuCisKKyAgICAgICAgKiBl
ZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24uaDoKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0Rh
dGFEZXRlY3Rpb24ubW06CisgICAgICAgIChXZWJDb3JlOjpEYXRhRGV0ZWN0aW9uOjpyZW1vdmVE
YXRhRGV0ZWN0ZWRMaW5rc0luRG9jdW1lbnQpOgorCiAyMDE4LTExLTIyICBXZW5zb24gSHNpZWgg
IDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZHJlc3MgcG9zdC1yZXZpZXcg
ZmVlZGJhY2sgYWZ0ZXIgcjIzODQzOApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA1Y2E0ZTI5MWI3ZjgyZDg3MjM4NmRi
MmJhNDZmMmRhZTdhZTE2N2VhLi43MjY0YTM1M2JmMjcyNTFmMjkyYzgxZTIyN2QyMmY4ZGVkMmRm
YjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDE4LTExLTIzICBXZW5zb24gSHNpZWgg
IDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gQWRkIFdLV2ViVmll
dyBTUEkgdG8gdHJpZ2dlciBhbmQgcmVtb3ZlIGRhdGEgZGV0ZWN0aW9uCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTE5MTgKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzM2MTg1MDUxPgorCisgICAgICAgIFJldmlld2VkIGJ5IFRpbSBIb3J0b24uCisK
KyAgICAgICAgQWRkcyBzdXBwb3J0IGZvciB0d28gbmV3IFdLV2ViVmlldyBTUEkgbWV0aG9kcywg
YC1fZGV0ZWN0RGF0YVdpdGhUeXBlczpjb21wbGV0aW9uSGFuZGxlcjpgIGFuZAorICAgICAgICBg
LV9yZW1vdmVBbGxEYXRhRGV0ZWN0ZWRMaW5rczpgLCB0byBhbGxvdyBpbnRlcm5hbCBXZWJLaXQg
Y2xpZW50cyB0byBydW4gZGF0YSBkZXRlY3Rpb24gYW5kIGFkZCBsaW5rcyB0byBkYXRhCisgICAg
ICAgIGRldGVjdGVkIGNvbnRlbnQsIG9yIHJlbW92ZSBhbGwgZGF0YSBkZXRlY3RlZCBsaW5rcyBm
cm9tIHRoZSBkb2N1bWVudC4KKworICAgICAgICBUZXN0OiBXZWJLaXQuQWRkQW5kUmVtb3ZlRGF0
YURldGVjdG9ycworCisgICAgICAgICogU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHk6CisKKyAg
ICAgICAgVHdlYWsgSVBDIGNvZGUgZ2VuZXJhdGlvbiwgdG8gYWxsb3cgYG1lc3NhZ2VzLmluYCBm
aWxlcyB0aGF0IHVzZSBBc3luYyBDb21wbGV0aW9uSGFuZGxlciBub3RhdGlvbiB0byBzcGVjaWZ5
CisgICAgICAgIGNvbXBsZXRpb24gaGFuZGxlcnMgdGhhdCB0YWtlIG5vIGFyZ3VtZW50cy4KKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtX
S1dlYlZpZXcgX3JlbW92ZURhdGFEZXRlY3RlZExpbmtzOl0pOgorICAgICAgICAoLVtXS1dlYlZp
ZXcgX2RldGVjdERhdGFXaXRoVHlwZXM6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGV0
ZWN0RGF0YUluQWxsRnJhbWVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZW1v
dmVEYXRhRGV0ZWN0ZWRMaW5rcyk6CisKKyAgICAgICAgQWRkIG9yIHJlbW92ZSBkYXRhIGRldGVj
dGVkIGxpbmtzIGZyb20gZWFjaCBmcmFtZSBpbiB0aGUgcGFnZSwgYW5kIHRoZW4gcHJvcGFnYXRl
IHRoZSBuZXcgZGF0YSBkZXRlY3RvcgorICAgICAgICByZXN1bHRzIG9mIHRoZSBtYWluIGZyYW1l
IHRvIHRoZSBVSSBwcm9jZXNzICh0aGlzIG1hdGNoZXMgY3VycmVudCBiZWhhdmlvciwgd2hlcmUg
dGhlIHJlc3VsdHMgb2YgLVtXS1dlYlZpZXcKKyAgICAgICAgX2RhdGFEZXRlY3Rpb25SZXN1bHRz
XSBvbmx5IHJlZmxlY3RzIGRhdGEgZGV0ZWN0aW9uIHJlc3VsdHMgaW4gdGhlIG1haW4gZnJhbWUg
b2YgdGhlIHBhZ2UpLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6cmVtb3ZlRGF0YURldGVjdGVkTGlua3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjpkZXRlY3REYXRhSW5BbGxGcmFtZXMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2Fn
ZXMuaW46CisKIDIwMTgtMTEtMjIgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5j
b20+CiAKICAgICAgICAgW0NvY29hXSBjbGFuZyBlbWl0cyBhIHdhcm5pbmcgd2hlbiBidWlsZGlu
ZyBXZWJLaXQgYWZ0ZXIgcjIzODI5MwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9jb2NvYS9EYXRhRGV0ZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0Rh
dGFEZXRlY3Rpb24uaAppbmRleCBkYmU1NGJkY2YxOTBjMTViZDRkMDhlNjgwOWM2Mzk3ODkwNmJm
ZGJlLi4zYTM0YTA5YTVmYmNkOTIzYWFlM2M4ZGI4OGY1YTY2OGE3NmM5MTQwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24uaApAQCAtMzcsNiArMzcsNyBA
QCBPQkpDX0NMQVNTIE5TRGljdGlvbmFyeTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFz
cyBEb2N1bWVudDsKIGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBGbG9hdFJlY3Q7CiBjbGFzcyBIaXRU
ZXN0UmVzdWx0OwpAQCAtNjEsNiArNjIsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIFJldGFpblB0cjxEREFjdGlvbkNvbnRleHQ+IGRldGVjdEl0ZW1Bcm91bmRIaXRUZXN0
UmVzdWx0KGNvbnN0IEhpdFRlc3RSZXN1bHQmLCBGbG9hdFJlY3QmIGRldGVjdGVkRGF0YUJvdW5k
aW5nQm94LCBSZWZQdHI8UmFuZ2U+JiBkZXRlY3RlZERhdGFSYW5nZSk7CiAjZW5kaWYKICAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgTlNBcnJheSAqZGV0ZWN0Q29udGVudEluUmFuZ2UoUmVmUHRy
PFJhbmdlPiYgY29udGV4dFJhbmdlLCBEYXRhRGV0ZWN0b3JUeXBlcywgTlNEaWN0aW9uYXJ5ICpj
b250ZXh0KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCByZW1vdmVEYXRhRGV0ZWN0
ZWRMaW5rc0luRG9jdW1lbnQoRG9jdW1lbnQmKTsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQog
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIGNhbkJlUHJlc2VudGVkQnlEYXRhRGV0ZWN0
b3JzKGNvbnN0IFVSTCYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIGlzRGF0YURl
dGVjdG9yTGluayhFbGVtZW50Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2NvY29hL0RhdGFEZXRlY3Rpb24ubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0Rh
dGFEZXRlY3Rpb24ubW0KaW5kZXggYzk5OWRkNzE2Nzk2NGUzMWE2N2JhNGU2ODA5OWZiYWM1MGM1
N2JiYy4uNzhlZWE5MTg2YTY2YTI3NjlhMmM5YTFhOWE5MmJjNGE4M2QyOTQ1MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EYXRhRGV0ZWN0aW9uLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5tbQpAQCAtNDI5LDYgKzQy
OSwxNiBAQCBzdGF0aWMgaW5saW5lIENGQ29tcGFyaXNvblJlc3VsdCBxdWVyeU9mZnNldENvbXBh
cmUoRERRdWVyeU9mZnNldCBvMSwgRERRdWVyeU9mZgogICAgIHJldHVybiBrQ0ZDb21wYXJlRXF1
YWxUbzsKIH0KIAordm9pZCBEYXRhRGV0ZWN0aW9uOjpyZW1vdmVEYXRhRGV0ZWN0ZWRMaW5rc0lu
RG9jdW1lbnQoRG9jdW1lbnQmIGRvY3VtZW50KQoreworICAgIFZlY3RvcjxSZWY8SFRNTEFuY2hv
ckVsZW1lbnQ+PiBhbGxBbmNob3JFbGVtZW50czsKKyAgICBmb3IgKGF1dG8mIGFuY2hvciA6IGRl
c2NlbmRhbnRzT2ZUeXBlPEhUTUxBbmNob3JFbGVtZW50Pihkb2N1bWVudCkpCisgICAgICAgIGFs
bEFuY2hvckVsZW1lbnRzLmFwcGVuZChhbmNob3IpOworCisgICAgZm9yIChhdXRvJiBhbmNob3Ig
OiBhbGxBbmNob3JFbGVtZW50cykKKyAgICAgICAgcmVtb3ZlUmVzdWx0TGlua3NGcm9tQW5jaG9y
KGFuY2hvci5nZXQoKSk7Cit9CisKIE5TQXJyYXkgKkRhdGFEZXRlY3Rpb246OmRldGVjdENvbnRl
bnRJblJhbmdlKFJlZlB0cjxSYW5nZT4mIGNvbnRleHRSYW5nZSwgRGF0YURldGVjdG9yVHlwZXMg
dHlwZXMsIE5TRGljdGlvbmFyeSAqY29udGV4dCkKIHsKICAgICBSZXRhaW5QdHI8RERTY2FubmVy
UmVmPiBzY2FubmVyID0gYWRvcHRDRihzb2Z0TGlua19EYXRhRGV0ZWN0b3JzQ29yZV9ERFNjYW5u
ZXJDcmVhdGUoRERTY2FubmVyVHlwZVN0YW5kYXJkLCAwLCBudWxscHRyKSk7CkBAIC02NDcsMTAg
KzY1NywxNiBAQCBOU0FycmF5ICpEYXRhRGV0ZWN0aW9uOjpkZXRlY3RDb250ZW50SW5SYW5nZShS
ZWZQdHI8UmFuZ2U+JiBjb250ZXh0UmFuZ2UsIERhdGFEZQogfQogCiAjZWxzZQorCiBOU0FycmF5
ICpEYXRhRGV0ZWN0aW9uOjpkZXRlY3RDb250ZW50SW5SYW5nZShSZWZQdHI8UmFuZ2U+JiwgRGF0
YURldGVjdG9yVHlwZXMsIE5TRGljdGlvbmFyeSAqKQogewogICAgIHJldHVybiBuaWw7CiB9CisK
K3ZvaWQgRGF0YURldGVjdGlvbjo6cmVtb3ZlRGF0YURldGVjdGVkTGlua3NJbkRvY3VtZW50KERv
Y3VtZW50JikKK3sKK30KKwogI2VuZGlmCiAKIGNvbnN0IFN0cmluZyYgRGF0YURldGVjdGlvbjo6
ZGF0YURldGVjdG9yVVJMUHJvdG9jb2woKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3Jp
cHRzL3dlYmtpdC9tZXNzYWdlcy5weSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVz
c2FnZXMucHkKaW5kZXggMDBjOGYxNzNmMTdlNDJhMjAyMjFhYzRmYTYyMjAzYTZkOThhZGIzZS4u
Zjg2ZDhjZTk2ZDMwYmNiNTk2Yzg0MTRhNzU0YTJiMjdmNDE1YWNhZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQorKysgYi9Tb3VyY2UvV2ViS2l0
L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CkBAIC01NjYsNyArNTY2LDEwIEBAIGRlZiBnZW5l
cmF0ZV9tZXNzYWdlX2hhbmRsZXIoZmlsZSk6CiAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5h
cHBlbmQoJyAgICBzdGQ6Om9wdGlvbmFsPCVzPiAlcztcbicgJSAoeC50eXBlLCB4Lm5hbWUpKQog
ICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgZGVjb2RlciA+PiAlcztcbicg
JSB4Lm5hbWUpCiAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBpZiAoISVz
KSB7XG4gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpO1xuICAgICAgICByZXR1cm47XG4gICAg
fVxuJyAlIHgubmFtZSkKLSAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgY29tcGxl
dGlvbkhhbmRsZXIoV1RGTW92ZSgqJXMpKTtcbn1cblxuJyAlICgnLCAqJy5qb2luKHgubmFtZSBm
b3IgeCBpbiBtZXNzYWdlLnJlcGx5X3BhcmFtZXRlcnMpKSkKKyAgICAgICAgICAgICAgICBpZiBs
ZW4obWVzc2FnZS5yZXBseV9wYXJhbWV0ZXJzKToKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0
LmFwcGVuZCgnICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoKiVzKSk7XG59XG5cbicgJSAo
JywgKicuam9pbih4Lm5hbWUgZm9yIHggaW4gbWVzc2FnZS5yZXBseV9wYXJhbWV0ZXJzKSkpCisg
ICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgn
ICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7XG59XG5cbicpCiAgICAgICAgICAgICAgICAgcmVzdWx0
LmFwcGVuZCgndm9pZCAlczo6Y2FuY2VsUmVwbHkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCglcyk+
JiYgY29tcGxldGlvbkhhbmRsZXIpXG57XG4gICAgY29tcGxldGlvbkhhbmRsZXIoJyAlIG1vdmVf
cGFyYW1ldGVycykKICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcsICcuam9pbihbJ3sg
fScgZm9yIHggaW4gbWVzc2FnZS5yZXBseV9wYXJhbWV0ZXJzXSkpCiAgICAgICAgICAgICAgICAg
cmVzdWx0LmFwcGVuZCgnKTtcbn1cblxuJykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IDgzNjllMzM5YzI4NWMyNTgzMjExYTI2YmM0ZDFh
MzRiYTFhNTI5NzEuLjViMjc3YjI4MTg2MDZhZTJiNTAxZTM5ZmY0ZGM0NjZjZjRmZTYwMmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAt
NTQyMywxMCArNTQyMywzNSBAQCAtICh2b2lkKV9zZXRQYWdlTXV0ZWQ6KF9XS01lZGlhTXV0ZWRT
dGF0ZSltdXRlZFN0YXRlCiAgICAgX3BhZ2UtPnNldE11dGVkKGNvcmVTdGF0ZSk7CiB9CiAKKy0g
KHZvaWQpX3JlbW92ZURhdGFEZXRlY3RlZExpbmtzOihkaXNwYXRjaF9ibG9ja190KWNvbXBsZXRp
b24KK3sKKyNpZiBFTkFCTEUoREFUQV9ERVRFQ1RJT04pCisgICAgX3BhZ2UtPnJlbW92ZURhdGFE
ZXRlY3RlZExpbmtzKFtjb21wbGV0aW9uID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb24pXSB7Cisg
ICAgICAgIGlmIChjb21wbGV0aW9uKQorICAgICAgICAgICAgY29tcGxldGlvbigpOworICAgIH0p
OworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oY29tcGxldGlvbik7CisjZW5kaWYKK30KKwogI3By
YWdtYSBtYXJrIGlPUy1zcGVjaWZpYyBtZXRob2RzCiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQogCistICh2b2lkKV9kZXRlY3REYXRhV2l0aFR5cGVzOihXS0RhdGFEZXRlY3RvclR5cGVzKXR5
cGVzIGNvbXBsZXRpb25IYW5kbGVyOihkaXNwYXRjaF9ibG9ja190KWNvbXBsZXRpb24KK3sKKyNp
ZiBFTkFCTEUoREFUQV9ERVRFQ1RJT04pCisgICAgX3BhZ2UtPmRldGVjdERhdGFJbkFsbEZyYW1l
cyhmcm9tV0tEYXRhRGV0ZWN0b3JUeXBlcyh0eXBlcyksIFtjb21wbGV0aW9uID0gbWFrZUJsb2Nr
UHRyKGNvbXBsZXRpb24pXSB7CisgICAgICAgIGlmIChjb21wbGV0aW9uKQorICAgICAgICAgICAg
Y29tcGxldGlvbigpOworICAgIH0pOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0odHlwZXMpOwor
ICAgIFVOVVNFRF9QQVJBTShjb21wbGV0aW9uKTsKKyNlbmRpZgorfQorCiAjaWYgRU5BQkxFKEZV
TExTQ1JFRU5fQVBJKQogLSAodm9pZClyZW1vdmVGcm9tU3VwZXJ2aWV3CiB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaAppbmRl
eCAxMzNhM2U3MmFmZjMzNGU1ZjYzYjkyZjcxYTlhMGE2MDg4MTU5Nzk2Li41OTY1MDIzMGUxZGRl
MzdkYWVjYzNlY2JjOTE0ZDQ4ZWY5YjMxMjZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKQEAgLTI3LDYgKzI3LDcgQEAK
IAogI2lmIFdLX0FQSV9FTkFCTEVECiAKKyNpbXBvcnQgPFdlYktpdC9XS0RhdGFEZXRlY3RvclR5
cGVzLmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLQWN0aXZhdGVkRWxlbWVudEluZm8uaD4KICNpbXBv
cnQgPFdlYktpdC9fV0tBdHRhY2htZW50Lmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLRmluZE9wdGlv
bnMuaD4KQEAgLTE5Myw2ICsxOTQsOCBAQCB0eXBlZGVmIE5TX09QVElPTlMoTlNVSW50ZWdlciwg
X1dLUmVjdEVkZ2UpIHsKIC0gKHZvaWQpX3Nob3dTYWZlQnJvd3NpbmdXYXJuaW5nV2l0aFRpdGxl
OihOU1N0cmluZyAqKXRpdGxlIHdhcm5pbmc6KE5TU3RyaW5nICopd2FybmluZyBkZXRhaWxzOihO
U0F0dHJpYnV0ZWRTdHJpbmcgKilkZXRhaWxzIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKEJP
T0wpKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEp
LCBpb3MoV0tfSU9TX1RCQSkpOwogCiAtICh2b2lkKV9pc0pJVEVuYWJsZWQ6KHZvaWQoXikoQk9P
TCkpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSks
IGlvcyhXS19JT1NfVEJBKSk7CistICh2b2lkKV9yZW1vdmVEYXRhRGV0ZWN0ZWRMaW5rczooZGlz
cGF0Y2hfYmxvY2tfdCljb21wbGV0aW9uIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19U
QkEpLCBpb3MoV0tfSU9TX1RCQSkpOworCiAtIChJQkFjdGlvbilfYWxpZ25DZW50ZXI6KGlkKXNl
bmRlciBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEp
KTsKIC0gKElCQWN0aW9uKV9hbGlnbkp1c3RpZmllZDooaWQpc2VuZGVyIFdLX0FQSV9BVkFJTEFC
TEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogLSAoSUJBY3Rpb24pX2Fs
aWduTGVmdDooaWQpc2VuZGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBp
b3MoV0tfSU9TX1RCQSkpOwpAQCAtMjE2LDYgKzIxOSw4IEBAIHR5cGVkZWYgTlNfT1BUSU9OUyhO
U1VJbnRlZ2VyLCBfV0tSZWN0RWRnZSkgewogLSAodm9pZClfc2V0Rm9udFNpemU6KENHRmxvYXQp
Zm9udFNpemUgc2VuZGVyOihpZClzZW5kZXIgV0tfQVBJX0FWQUlMQUJMRShpb3MoV0tfSU9TX1RC
QSkpOwogLSAodm9pZClfc2V0VGV4dENvbG9yOihVSUNvbG9yICopY29sb3Igc2VuZGVyOihpZClz
ZW5kZXIgV0tfQVBJX0FWQUlMQUJMRShpb3MoV0tfSU9TX1RCQSkpOwogCistICh2b2lkKV9kZXRl
Y3REYXRhV2l0aFR5cGVzOihXS0RhdGFEZXRlY3RvclR5cGVzKXR5cGVzIGNvbXBsZXRpb25IYW5k
bGVyOihkaXNwYXRjaF9ibG9ja190KWNvbXBsZXRpb24gV0tfQVBJX0FWQUlMQUJMRShpb3MoV0tf
SU9TX1RCQSkpOworCiAvLyBERVJFQ0FURUQ6IFRoZSBzZXR0ZXJzIG9mIHRoZSB0aHJlZSBmb2xs
b3dpbmcgZnVuY3Rpb24gYXJlIGRlcHJlY2F0ZWQsIHBsZWFzZSB1c2Ugb3ZlcnJpZGVMYXlvdXRQ
YXJhbWV0ZXJzLgogLy8gRGVmaW5lIHRoZSBzbWFsbGVzdCBzaXplIGEgcGFnZSB0YWtlIHdpdGgg
YSByZWd1bGFyIHZpZXdwb3J0LgogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBDR1Np
emUgX21pbmltdW1MYXlvdXRTaXplT3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcAppbmRleCAxMTEwOWRkNTE2ZDc4OWMzODVjOTFmZjgxNjY2YzkyNmQ5NWRm
ZmQ2Li45ZmUzMTdkMmVlMDgwYmY0MmUyYjk1NmZhZjFlOWI3MjA3NDYyNTVjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTgyNDMsNiArODI0MywyMCBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6dXBkYXRlQ3VycmVudE1vZGlmaWVyU3RhdGUoKQogI2VuZGlmCiB9
CiAKKyNpZiBFTkFCTEUoREFUQV9ERVRFQ1RJT04pCisKK3ZvaWQgV2ViUGFnZVByb3h5OjpkZXRl
Y3REYXRhSW5BbGxGcmFtZXMoV2ViQ29yZTo6RGF0YURldGVjdG9yVHlwZXMgdHlwZXMsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBtX3Byb2Nl
c3MtPmNvbm5lY3Rpb24oKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpE
ZXRlY3REYXRhSW5BbGxGcmFtZXMoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHR5cGVzKSksIFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpLCBtX3BhZ2VJRCk7Cit9CisKK3ZvaWQgV2ViUGFnZVByb3h5
OjpyZW1vdmVEYXRhRGV0ZWN0ZWRMaW5rcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCit7CisgICAgbV9wcm9jZXNzLT5jb25uZWN0aW9uKCktPnNlbmRXaXRo
QXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6UmVtb3ZlRGF0YURldGVjdGVkTGlua3MoKSwg
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIG1fcGFnZUlEKTsKK30KKworI2VuZGlmCisKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdAogCiAjdW5kZWYgTUVSR0VfV0hFRUxfRVZFTlRTCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDA3MTc3MmM4ZDdjNTBmNWIwZWNjZjA1
NWE5YmUxOGU2YmVkYTE3NzYuLjUyMjUzOTU0N2JiY2JlYmQ2NWZjY2M3ZTIwZDc5NjhmYzBkZTcx
NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0zNjIsNiArMzYy
LDggQEAgcHVibGljOgogCiAjaWYgRU5BQkxFKERBVEFfREVURUNUSU9OKQogICAgIE5TQXJyYXkg
KmRhdGFEZXRlY3Rpb25SZXN1bHRzKCkgeyByZXR1cm4gbV9kYXRhRGV0ZWN0aW9uUmVzdWx0cy5n
ZXQoKTsgfQorICAgIHZvaWQgZGV0ZWN0RGF0YUluQWxsRnJhbWVzKFdlYkNvcmU6OkRhdGFEZXRl
Y3RvclR5cGVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgcmVtb3Zl
RGF0YURldGVjdGVkTGlua3MoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICNlbmRpZgog
ICAgICAgICAKICNpZiBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKSAmJiBQTEFURk9STShDT0NPQSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggNGFh
ZTE0ZjE3Mzg3MDAzMGEyNzM0M2I5MGJkMzFhMDgzMWExMjFiYy4uNzU5YTJkM2UzMmMxNjMwNzZh
YTQzNDk0YzY4MWZkMDI0YjQxYTIwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTMzODUsMTMgKzMzODUsNDQgQEAgdm9pZCBXZWJQYWdlOjp1
cGRhdGVQcmVmZXJlbmNlcyhjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9yZSkKIH0KIAog
I2lmIEVOQUJMRShEQVRBX0RFVEVDVElPTikKKwogdm9pZCBXZWJQYWdlOjpzZXREYXRhRGV0ZWN0
aW9uUmVzdWx0cyhOU0FycmF5ICpkZXRlY3Rpb25SZXN1bHRzKQogewogICAgIERhdGFEZXRlY3Rp
b25SZXN1bHQgZGF0YURldGVjdGlvblJlc3VsdDsKICAgICBkYXRhRGV0ZWN0aW9uUmVzdWx0LnJl
c3VsdHMgPSBkZXRlY3Rpb25SZXN1bHRzOwogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6U2V0RGF0YURldGVjdGlvblJlc3VsdChkYXRhRGV0ZWN0aW9uUmVzdWx0KSk7CiB9Ci0jZW5k
aWYKKwordm9pZCBXZWJQYWdlOjpyZW1vdmVEYXRhRGV0ZWN0ZWRMaW5rcyhNZXNzYWdlczo6V2Vi
UGFnZTo6UmVtb3ZlRGF0YURldGVjdGVkTGlua3M6OkFzeW5jUmVwbHkmJiByZXBseSkKK3sKKyAg
ICBmb3IgKGF1dG8gZnJhbWUgPSBtYWtlUmVmUHRyKCZtX3BhZ2UtPm1haW5GcmFtZSgpKTsgZnJh
bWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoKSkgeworICAgICAgICBhdXRv
IGRvY3VtZW50ID0gbWFrZVJlZlB0cihmcmFtZS0+ZG9jdW1lbnQoKSk7CisgICAgICAgIGlmICgh
ZG9jdW1lbnQpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBEYXRhRGV0ZWN0aW9u
OjpyZW1vdmVEYXRhRGV0ZWN0ZWRMaW5rc0luRG9jdW1lbnQoKmRvY3VtZW50KTsKKyAgICAgICAg
ZnJhbWUtPnNldERhdGFEZXRlY3Rpb25SZXN1bHRzKG51bGxwdHIpOworICAgIH0KKyAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNldERhdGFEZXRlY3Rpb25SZXN1bHQoeyB9KSk7Cisg
ICAgcmVwbHkoKTsKK30KKwordm9pZCBXZWJQYWdlOjpkZXRlY3REYXRhSW5BbGxGcmFtZXModWlu
dDY0X3QgdHlwZXMsIE1lc3NhZ2VzOjpXZWJQYWdlOjpEZXRlY3REYXRhSW5BbGxGcmFtZXM6OkFz
eW5jUmVwbHkmJiByZXBseSkKK3sKKyAgICBhdXRvIGRhdGFEZXRlY3RvclR5cGVzID0gc3RhdGlj
X2Nhc3Q8V2ViQ29yZTo6RGF0YURldGVjdG9yVHlwZXM+KHR5cGVzKTsKKyAgICBmb3IgKGF1dG8g
ZnJhbWUgPSBtYWtlUmVmUHRyKCZtX3BhZ2UtPm1haW5GcmFtZSgpKTsgZnJhbWU7IGZyYW1lID0g
ZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoKSkgeworICAgICAgICBhdXRvIGRvY3VtZW50ID0g
bWFrZVJlZlB0cihmcmFtZS0+ZG9jdW1lbnQoKSk7CisgICAgICAgIGlmICghZG9jdW1lbnQpCisg
ICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gUmFu
Z2U6OmNyZWF0ZSgqZG9jdW1lbnQsIFBvc2l0aW9uIHsgZG9jdW1lbnQuZ2V0KCksIFBvc2l0aW9u
OjpQb3NpdGlvbklzQmVmb3JlQ2hpbGRyZW4gfSwgUG9zaXRpb24geyBkb2N1bWVudC5nZXQoKSwg
UG9zaXRpb246OlBvc2l0aW9uSXNBZnRlckNoaWxkcmVuIH0pOworICAgICAgICBmcmFtZS0+c2V0
RGF0YURldGVjdGlvblJlc3VsdHMoRGF0YURldGVjdGlvbjo6ZGV0ZWN0Q29udGVudEluUmFuZ2Uo
cmFuZ2UsIGRhdGFEZXRlY3RvclR5cGVzLCBtX2RhdGFEZXRlY3Rpb25Db250ZXh0LmdldCgpKSk7
CisgICAgfQorICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2V0RGF0YURldGVjdGlv
blJlc3VsdCh7IG1fcGFnZS0+bWFpbkZyYW1lKCkuZGF0YURldGVjdGlvblJlc3VsdHMoKSB9KSk7
CisgICAgcmVwbHkoKTsKK30KKworI2VuZGlmIC8vIEVOQUJMRShEQVRBX0RFVEVDVElPTikKIAog
I2lmIFBMQVRGT1JNKENPQ09BKQogdm9pZCBXZWJQYWdlOjp3aWxsQ29tbWl0TGF5ZXJUcmVlKFJl
bW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uJiBsYXllclRyYW5zYWN0aW9uKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IDU3NTMyOTg0ODk1OTAzOTQ0MGZh
MWFiMTdmYjcxMDY1NTgzZTg3YTguLmI2MGRkYWU0OGM0OTViNjQ0MmNjNGJiMTQ5NzMxYjg2ZDk3
OGEwM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAg
LTEwNyw2ICsxMDcsMTAgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtVG91Y2hFdmVudC5o
PgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoREFUQV9ERVRFQ1RJT04pCisjaW5jbHVkZSA8V2ViQ29y
ZS9EYXRhRGV0ZWN0aW9uLmg+CisjZW5kaWYKKwogI2lmIEVOQUJMRShNQUNfR0VTVFVSRV9FVkVO
VFMpCiAjaW5jbHVkZSA8V2ViS2l0QWRkaXRpb25zL1BsYXRmb3JtR2VzdHVyZUV2ZW50TWFjLmg+
CiAjZW5kaWYKQEAgLTk5Miw2ICs5OTYsOCBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoREFUQV9E
RVRFQ1RJT04pCiAgICAgdm9pZCBzZXREYXRhRGV0ZWN0aW9uUmVzdWx0cyhOU0FycmF5ICopOwor
ICAgIHZvaWQgZGV0ZWN0RGF0YUluQWxsRnJhbWVzKHVpbnQ2NF90LCBNZXNzYWdlczo6V2ViUGFn
ZTo6RGV0ZWN0RGF0YUluQWxsRnJhbWVzOjpBc3luY1JlcGx5JiYpOworICAgIHZvaWQgcmVtb3Zl
RGF0YURldGVjdGVkTGlua3MoTWVzc2FnZXM6OldlYlBhZ2U6OlJlbW92ZURhdGFEZXRlY3RlZExp
bmtzOjpBc3luY1JlcGx5JiYpOwogI2VuZGlmCiAKICAgICB1bnNpZ25lZCBleHRlbmRJbmNyZW1l
bnRhbFJlbmRlcmluZ1N1cHByZXNzaW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCA4YjI5NmNlMDBkNDQyNTlk
NGU1YjdhZGI5Y2I0MTUyMjNmOWRkOThmLi4xNDNkNzA4ZDAxYTViNTM5ZDdmZmRiM2MzODllZDAz
NjNiM2UwYjJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAgLTE5Myw2ICsxOTMsMTEgQEAgbWVzc2FnZXMgLT4gV2Vi
UGFnZSBMZWdhY3lSZWNlaXZlciB7CiAgICAgUGVyZm9ybURpY3Rpb25hcnlMb29rdXBBdExvY2F0
aW9uKFdlYkNvcmU6OkZsb2F0UG9pbnQgcG9pbnQpCiAjZW5kaWYKIAorI2lmIEVOQUJMRShEQVRB
X0RFVEVDVElPTikKKyAgICBEZXRlY3REYXRhSW5BbGxGcmFtZXModWludDY0X3QgdHlwZXMpIC0+
ICgpIEFzeW5jCisgICAgUmVtb3ZlRGF0YURldGVjdGVkTGlua3MoKSAtPiAoKSBBc3luYworI2Vu
ZGlmCisKICNpZiBQTEFURk9STShNQUMpCiAgICAgUGVyZm9ybURpY3Rpb25hcnlMb29rdXBPZkN1
cnJlbnRTZWxlY3Rpb24oKQogI2VuZGlmCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9U
b29scy9DaGFuZ2VMb2cKaW5kZXggOWVlMTVjNGUwMmZhMDkzMTc2MzY1YzEyMzg2ODRiOWJmZGEy
MWVjMi4uNGFkNTM1MWZmNDQ5NDlhN2E1OTBmMDdhMjBhMzg4NzY0OGU4ZDc2OCAxMDA2NDQKLS0t
IGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBA
CisyMDE4LTExLTIzICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisg
ICAgICAgIFtDb2NvYV0gQWRkIFdLV2ViVmlldyBTUEkgdG8gdHJpZ2dlciBhbmQgcmVtb3ZlIGRh
dGEgZGV0ZWN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xOTE5MTgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM2MTg1MDUxPgorCisgICAgICAg
IFJldmlld2VkIGJ5IFRpbSBIb3J0b24uCisKKyAgICAgICAgQWRkIGFuIEFQSSB0ZXN0IHRvIGV4
ZXJjaXNlIHRoZSBuZXcgV2ViS2l0IFNQSS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvRGF0
YURldGVjdG9yc0NvcmVTUEkuaDogQWRkZWQuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9EYXRhRGV0ZWN0aW9uLm1tOgorICAgICAgICAoLVtXS1dl
YlZpZXcgc3luY2hyb25vdXNseURldGVjdERhdGFXaXRoVHlwZXM6XSk6CisgICAgICAgICgtW1dL
V2ViVmlldyBzeW5jaHJvbm91c2x5UmVtb3ZlRGF0YURldGVjdGVkTGlua3NdKToKKyAgICAgICAg
KFRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tBdHRh
Y2htZW50VGVzdHMubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAg
KC1bVGVzdFdLV2ViVmlldyB0YWdzSW5Cb2R5XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1Rlc3RX
S1dlYlZpZXcgZXhwZWN0RWxlbWVudFRhZ3NJbk9yZGVyOl0pOiBEZWxldGVkLgorICAgICAgICAo
LVtUZXN0V0tXZWJWaWV3IGV4cGVjdEVsZW1lbnRDb3VudDp0YWdOYW1lOl0pOiBEZWxldGVkLgor
ICAgICAgICAoLVtUZXN0V0tXZWJWaWV3IGV4cGVjdEVsZW1lbnRUYWc6dG9Db21lQmVmb3JlOl0p
OiBEZWxldGVkLgorCisgICAgICAgIFJlbmFtZSB0aGlzIGZyb20gYC1leHBlY3RFbGVtZW50Q291
bnQ6dGFnTmFtZTpgIHRvIGAtZXhwZWN0RWxlbWVudENvdW50OnF1ZXJ5U2VsZWN0b3I6YC4KKwor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvZGF0YS1kZXRlY3RvcnMu
aHRtbDogQWRkZWQuCisKKyAgICAgICAgQWRkIGEgbmV3IHRlc3QgcGFnZSBjb250YWluaW5nIHNv
bWUgY29udGVudCB0aGF0IGNhbiBiZSBkYXRhIGRldGVjdGVkLgorCisgICAgICAgICogVGVzdFdl
YktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lmg6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9j
b2NvYS9UZXN0V0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgdGFnc0luQm9keV0p
OgorICAgICAgICAoLVtXS1dlYlZpZXcgZXhwZWN0RWxlbWVudFRhZ3NJbk9yZGVyOl0pOgorICAg
ICAgICAoLVtXS1dlYlZpZXcgZXhwZWN0RWxlbWVudENvdW50OnF1ZXJ5U2VsZWN0b3I6XSk6Cisg
ICAgICAgICgtW1dLV2ViVmlldyBleHBlY3RFbGVtZW50VGFnOnRvQ29tZUJlZm9yZTpdKToKKwor
ICAgICAgICBNb3ZlIHNvbWUgdGVzdGluZyBoZWxwZXIgZnVuY3Rpb25zIGZyb20gV0tBdHRhY2ht
ZW50VGVzdHMgdG8gYSB0ZXN0aW5nIGNhdGVnb3J5IG9uIFdLV2ViVmlldy4gVGhpcyBhbGxvd3Mg
dXMgdG8KKyAgICAgICAgdXNlIGAtZXhwZWN0RWxlbWVudENvdW50OnF1ZXJ5U2VsZWN0b3I6YCBp
biB0ZXN0cyBvdXRzaWRlIG9mIFdLQXR0YWNobWVudFRlc3RzLgorCisgICAgICAgICgtW1dLV2Vi
VmlldyBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0Ol0pOgorICAgICAgICAoLVtXS1dlYlZp
ZXcgb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdFdpdGhVc2VyR2VzdHVyZTpdKToKKyAgICAg
ICAgKC1bV0tXZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6XSk6CisKKyAgICAg
ICAgTW92ZSBzb21lIGNvbW1vbiBoZWxwZXIgZnVuY3Rpb25zIGZyb20gVGVzdFdLV2ViVmlldyB0
byBhIHRlc3RpbmcgY2F0ZWdvcnkgb24gV0tXZWJWaWV3LgorCisgICAgICAgICgtW1Rlc3RXS1dl
YlZpZXcgb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpdKTogRGVsZXRlZC4KKyAgICAgICAg
KC1bVGVzdFdLV2ViVmlldyBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0V2l0aFVzZXJHZXN0
dXJlOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtUZXN0V0tXZWJWaWV3IHN0cmluZ0J5RXZhbHVh
dGluZ0phdmFTY3JpcHQ6XSk6IERlbGV0ZWQuCisKIDIwMTgtMTEtMjIgIFphbGFuIEJ1anRhcyAg
PHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtJRkNdIE9mZnNldCBmb3JtYXR0aW5n
IGNvbnRleHQgcm9vdCBydW5zIHdpdGggaG9yaXpvbnRhbCBtYXJnaW5zLgpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9EYXRhRGV0ZWN0b3JzQ29yZVNQSS5oIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9EYXRhRGV0ZWN0b3JzQ29yZVNQSS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYyOWI0MzY1ZmUyYWRm
Mzc5ODhmNzAyYWRkNDRlMzdkYjVlMWExN2MKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL0RhdGFEZXRlY3RvcnNDb3JlU1BJLmgKQEAgLTAsMCArMSw0MiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKERBVEFfREVURUNUSU9OKQorCisjaW1w
b3J0IDxwYWwvc3BpL2NvY29hL0RhdGFEZXRlY3RvcnNDb3JlU1BJLmg+CisKKyNpZiAhVVNFKEFQ
UExFX0lOVEVSTkFMX1NESykKKworQGludGVyZmFjZSBERFNjYW5uZXJSZXN1bHQgKFByaXZhdGUp
CitAcHJvcGVydHkgKHJlYWRvbmx5LCBub25hdG9taWMpIE5TU3RyaW5nICp2YWx1ZTsKK0Bwcm9w
ZXJ0eSAocmVhZG9ubHksIG5vbmF0b21pYykgTlNTdHJpbmcgKnR5cGU7CitAcHJvcGVydHkgKHJl
YWRvbmx5LCBub25hdG9taWMpIEREUmVzdWx0Q2F0ZWdvcnkgY2F0ZWdvcnk7CitAZW5kCisKKyNl
bmRpZiAvLyAhVVNFKEFQUExFX0lOVEVSTkFMX1NESykKKworI2VuZGlmIC8vIEVOQUJMRShEQVRB
X0RFVEVDVElPTikKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQ
SS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2Vi
S2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZWYwYmQwMDVhMjg3ZWY2YzZk
OTk0OTMxOWNiZjU0MTQ1NDI0MTU2My4uZGU2MmRmMDNkMGQ1NjA4ZDk4OGQxZDUwZmI3YjBhZDBi
OTdmODBiZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2Vi
S2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTg1Miw2ICs4NTIsNyBAQAogCQlG
NDZBMDk1QTFFRDhBNkU2MDBENEFBNTUgLyogYXBwbGUuZ2lmIGluIENvcHkgUmVzb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0N0QzMEVCMUVEMjg2MTkwMDA0ODJF
MSAvKiBhcHBsZS5naWYgKi87IH07CiAJCUY0NkEwOTVCMUVEOEE2RTYwMEQ0QUE1NSAvKiBnaWYt
YW5kLWZpbGUtaW5wdXQuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGNDdEMzBFRDFFRDI4QTZDMDAwNDgyRTEgLyogZ2lmLWFuZC1maWxl
LWlucHV0Lmh0bWwgKi87IH07CiAJCUY0NzcyODk5MUU0QUUzQzEwMDdBQkY2QSAvKiBmdWxsLXBh
Z2UtY29udGVudGVkaXRhYmxlLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ3NzI4OTgxRTRBRTNBRDAwN0FCRjZBIC8qIGZ1bGwtcGFn
ZS1jb250ZW50ZWRpdGFibGUuaHRtbCAqLzsgfTsKKwkJRjQ3REZCMjYyMUE4NzhERjAwMDIxRkI2
IC8qIGRhdGEtZGV0ZWN0b3JzLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ3REZCMjQyMUE4NzA0QTAwMDIxRkI2IC8qIGRhdGEtZGV0
ZWN0b3JzLmh0bWwgKi87IH07CiAJCUY0ODExRTU5MjE5NDBCREUwMEE1RTBGRCAvKiBXS1dlYlZp
ZXdFZGl0QWN0aW9ucy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEY0ODExRTU4MjE5NDBCNDQwMEE1RTBGRCAvKiBXS1dlYlZpZXdFZGl0QWN0aW9ucy5t
bSAqLzsgfTsKIAkJRjQ4NTZDQTMxRTY0OUVBODAwOUQ3RUU3IC8qIGF0dGFjaG1lbnQtZWxlbWVu
dC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEY0ODU2Q0EyMUU2NDk4QTgwMDlEN0VFNyAvKiBhdHRhY2htZW50LWVsZW1lbnQuaHRtbCAq
LzsgfTsKIAkJRjQ4NkIxRDAxRjY3OTUyMzAwRjM0QkREIC8qIERhdGFUcmFuc2Zlci1zZXREcmFn
SW1hZ2UuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGNDg2QjFDRjFGNjc5NEZGMDBGMzRCREQgLyogRGF0YVRyYW5zZmVyLXNldERyYWdJ
bWFnZS5odG1sICovOyB9OwpAQCAtMTAxOSw2ICsxMDIwLDcgQEAKIAkJCQk3QUVBRDQ4MTFFMjAx
MjI3MDA0MTZFRkUgLyogQ3Jvc3NQYXJ0aXRpb25GaWxlU2NoZW1lQWNjZXNzLmh0bWwgaW4gQ29w
eSBSZXNvdXJjZXMgKi8sCiAJCQkJRjRBQjU3OEExRjY1MTY1NDAwREIwREExIC8qIGN1c3RvbS1k
cmFnZ2FibGUtZGl2Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJMjkwRjQyNzUxNzJB
MjIxQzAwOTM5RkYwIC8qIGN1c3RvbS1wcm90b2NvbC1zeW5jLXhoci5odG1sIGluIENvcHkgUmVz
b3VyY2VzICovLAorCQkJCUY0N0RGQjI2MjFBODc4REYwMDAyMUZCNiAvKiBkYXRhLWRldGVjdG9y
cy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCUY0ODZCMUQwMUY2Nzk1MjMwMEYzNEJE
RCAvKiBEYXRhVHJhbnNmZXItc2V0RHJhZ0ltYWdlLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8s
CiAJCQkJRjQ1N0E5RDYyMDJENjhBRjAwRjdFOUQ1IC8qIERhdGFUcmFuc2Zlci5odG1sIGluIENv
cHkgUmVzb3VyY2VzICovLAogCQkJCUY0NTEyRTEzMUY2MEM0NDYwMEJCMzY5RSAvKiBEYXRhVHJh
bnNmZXJJdGVtLWdldEFzRW50cnkuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKQEAgLTIxNDcs
NiArMjE0OSw4IEBACiAJCUY0NzcyODk4MUU0QUUzQUQwMDdBQkY2QSAvKiBmdWxsLXBhZ2UtY29u
dGVudGVkaXRhYmxlLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAiZnVsbC1wYWdl
LWNvbnRlbnRlZGl0YWJsZS5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQ3
RDMwRUIxRUQyODYxOTAwMDQ4MkUxIC8qIGFwcGxlLmdpZiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGltYWdlLmdpZjsgcGF0aCA9IGFwcGxlLmdpZjsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQ3RDMwRUQxRUQyOEE2QzAwMDQ4MkUxIC8q
IGdpZi1hbmQtZmlsZS1pbnB1dC5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gImdpZi1hbmQtZmlsZS1pbnB1dC5o
dG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjQ3REZCMjQyMUE4NzA0QTAwMDIx
RkI2IC8qIGRhdGEtZGV0ZWN0b3JzLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAi
ZGF0YS1kZXRlY3RvcnMuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0N0RG
QjI3MjFBODg1RTcwMDAyMUZCNiAvKiBEYXRhRGV0ZWN0b3JzQ29yZVNQSS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBEYXRhRGV0ZWN0b3JzQ29yZVNQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlGNDgxMUU1ODIxOTQwQjQ0MDBBNUUwRkQgLyogV0tXZWJWaWV3RWRpdEFjdGlvbnMubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS1dlYlZpZXdFZGl0QWN0aW9u
cy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQ4NTZDQTIxRTY0OThBODAwOUQ3
RUU3IC8qIGF0dGFjaG1lbnQtZWxlbWVudC5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRo
ID0gImF0dGFjaG1lbnQtZWxlbWVudC5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRjQ4NkIxQ0YxRjY3OTRGRjAwRjM0QkREIC8qIERhdGFUcmFuc2Zlci1zZXREcmFnSW1hZ2Uu
aHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJEYXRhVHJhbnNmZXItc2V0RHJhZ0lt
YWdlLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjMxMSw2ICsyMzE1LDcg
QEAKIAkJCQlBMTNFQkI0NDFCODczMzJCMDAwOTcxMTAgLyogV2ViUHJvY2Vzc1BsdWdJbiAqLywK
IAkJCQlGNDUxN0I2ODIwNTRFMEFDMDBDMjY3MjEgLyogQ2xhc3NNZXRob2RTd2l6emxlci5oICov
LAogCQkJCUY0NTE3QjY5MjA1NEUwQUMwMEMyNjcyMSAvKiBDbGFzc01ldGhvZFN3aXp6bGVyLm1t
ICovLAorCQkJCUY0N0RGQjI3MjFBODg1RTcwMDAyMUZCNiAvKiBEYXRhRGV0ZWN0b3JzQ29yZVNQ
SS5oICovLAogCQkJCUY0NjEyOEI0MjExQzg2MUEwMEQ5RkFEQiAvKiBEcmFnQW5kRHJvcFNpbXVs
YXRvci5oICovLAogCQkJCUY0NEQwNjQ4MUYzOTYyRTMwMDFBMEUyOSAvKiBFZGl0aW5nVGVzdEhh
cm5lc3MuaCAqLywKIAkJCQlGNDREMDY0OTFGMzk2MkUzMDAxQTBFMjkgLyogRWRpdGluZ1Rlc3RI
YXJuZXNzLm1tICovLApAQCAtMjc0MCw2ICsyNzQ1LDcgQEAKIAkJCQk5QjEwNTY0MjFGOTA0N0ND
MDBENTU4M0YgLyogY29weS1odG1sLmh0bWwgKi8sCiAJCQkJOUI2MjYzMEIxRjhDMjUxMDAwN0VF
MjlCIC8qIGNvcHktdXJsLmh0bWwgKi8sCiAJCQkJRjRBQjU3ODkxRjY1MTY0QjAwREIwREExIC8q
IGN1c3RvbS1kcmFnZ2FibGUtZGl2Lmh0bWwgKi8sCisJCQkJRjQ3REZCMjQyMUE4NzA0QTAwMDIx
RkI2IC8qIGRhdGEtZGV0ZWN0b3JzLmh0bWwgKi8sCiAJCQkJRjQ4NkIxQ0YxRjY3OTRGRjAwRjM0
QkREIC8qIERhdGFUcmFuc2Zlci1zZXREcmFnSW1hZ2UuaHRtbCAqLywKIAkJCQlGNDU3QTlCMzIw
MkQ1MzUzMDBGN0U5RDUgLyogRGF0YVRyYW5zZmVyLmh0bWwgKi8sCiAJCQkJRjQ1MTJFMTIxRjYw
QzQzNDAwQkIzNjlFIC8qIERhdGFUcmFuc2Zlckl0ZW0tZ2V0QXNFbnRyeS5odG1sICovLApkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9EYXRhRGV0ZWN0
aW9uLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9EYXRhRGV0ZWN0
aW9uLm1tCmluZGV4IGJmM2M5NjZlODQ3MjA1Y2IwZmZiYTdhY2M2MjdlZDA0MmU5MmNiZTMuLjkz
NTllZDAzNzMyZTYwODg0NjVkMjU5NWQxMjBmMzIyZjc0MDZiNjEgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRGF0YURldGVjdGlvbi5tbQorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0RhdGFEZXRlY3Rpb24ubW0KQEAg
LTI1LDE0ICsyNSw0MyBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKKyNpbXBvcnQgIkRhdGFE
ZXRlY3RvcnNDb3JlU1BJLmgiCiAjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgogI2ltcG9y
dCAiVGVzdC5oIgogI2ltcG9ydCAiVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5oIgorI2ltcG9ydCAi
VGVzdFdLV2ViVmlldy5oIgogI2ltcG9ydCA8V2ViS2l0L1dlYktpdC5oPgogI2ltcG9ydCA8d3Rm
L1JldGFpblB0ci5oPgogCiAjaWYgV0tfQVBJX0VOQUJMRUQgJiYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKIAorQGludGVyZmFjZSBXS1dlYlZpZXcgKERhdGFEZXRlY3Rpb24pCistICh2b2lkKXN5bmNo
cm9ub3VzbHlEZXRlY3REYXRhV2l0aFR5cGVzOihXS0RhdGFEZXRlY3RvclR5cGVzKXR5cGVzOwor
LSAodm9pZClzeW5jaHJvbm91c2x5UmVtb3ZlRGF0YURldGVjdGVkTGlua3M7CitAZW5kCisKK0Bp
bXBsZW1lbnRhdGlvbiBXS1dlYlZpZXcgKERhdGFEZXRlY3Rpb24pCisKKy0gKHZvaWQpc3luY2hy
b25vdXNseURldGVjdERhdGFXaXRoVHlwZXM6KFdLRGF0YURldGVjdG9yVHlwZXMpdHlwZXMKK3sK
KyAgICBfX2Jsb2NrIGJvb2wgZG9uZSA9IGZhbHNlOworICAgIFtzZWxmIF9kZXRlY3REYXRhV2l0
aFR5cGVzOnR5cGVzIGNvbXBsZXRpb25IYW5kbGVyOl57CisgICAgICAgIGRvbmUgPSB0cnVlOwor
ICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7Cit9CisKKy0gKHZv
aWQpc3luY2hyb25vdXNseVJlbW92ZURhdGFEZXRlY3RlZExpbmtzCit7CisgICAgX19ibG9jayBi
b29sIGRvbmUgPSBmYWxzZTsKKyAgICBbc2VsZiBfcmVtb3ZlRGF0YURldGVjdGVkTGlua3M6XnsK
KyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6
cnVuKCZkb25lKTsKK30KKworQGVuZAorCiBzdGF0aWMgYm9vbCByYW5TY3JpcHQ7CiAKIEBpbnRl
cmZhY2UgRGF0YURldGVjdGlvblVJRGVsZWdhdGUgOiBOU09iamVjdCA8V0tVSURlbGVnYXRlPgpA
QCAtOTcsNCArMTI2LDM5IEBAIFRFU1QoV2ViS2l0LCBESVNBQkxFRF9EYXRhRGV0ZWN0aW9uUmVm
ZXJlbmNlRGF0ZSkKICAgICBleHBlY3RMaW5rQ291bnQod2ViVmlldy5nZXQoKSwgQCJ5ZXN0ZXJk
YXkgYXQgNlBNIiwgMSk7CiB9CiAKK1RFU1QoV2ViS2l0LCBBZGRBbmRSZW1vdmVEYXRhRGV0ZWN0
b3JzKQoreworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9j
XSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1MDApXSk7CisgICAgW3dlYlZp
ZXcgc3luY2hyb25vdXNseUxvYWRUZXN0UGFnZU5hbWVkOkAiZGF0YS1kZXRlY3RvcnMiXTsKKyAg
ICBbd2ViVmlldyBleHBlY3RFbGVtZW50Q291bnQ6MCBxdWVyeVNlbGVjdG9yOkAiYVt4LWFwcGxl
LWRhdGEtZGV0ZWN0b3JzPXRydWVdIl07CisgICAgRVhQRUNUX0VRKDBVLCBbd2ViVmlldyBfZGF0
YURldGVjdGlvblJlc3VsdHNdLmNvdW50KTsKKworICAgIGF1dG8gY2hlY2tEYXRhRGV0ZWN0aW9u
UmVzdWx0cyA9IFtdIChOU0FycmF5PEREU2Nhbm5lclJlc3VsdCAqPiAqcmVzdWx0cykgeworICAg
ICAgICBFWFBFQ1RfRVEoM1UsIHJlc3VsdHMuY291bnQpOworICAgICAgICBFWFBFQ1RfRVEoRERS
ZXN1bHRDYXRlZ29yeVVua25vd24sIHJlc3VsdHNbMF0uY2F0ZWdvcnkpOworICAgICAgICBFWFBF
Q1RfVFJVRShbcmVzdWx0c1swXS52YWx1ZSBjb250YWluc1N0cmluZzpAIisxLTIzNC01NjctODkw
MCJdKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoW3Jlc3VsdHNbMF0udmFsdWUgY29udGFpbnNTdHJp
bmc6QCJodHRwczovL3d3dy5hcHBsZS5jb20iXSk7CisgICAgICAgIEVYUEVDVF9UUlVFKFtyZXN1
bHRzWzBdLnZhbHVlIGNvbnRhaW5zU3RyaW5nOkAiMiBBcHBsZSBQYXJrIFdheSwgQ3VwZXJ0aW5v
IDk1MDE0Il0pOworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoIlNpZ25hdHVyZUJsb2NrIiwgcmVz
dWx0c1swXS50eXBlKTsKKyAgICAgICAgRVhQRUNUX0VRKEREUmVzdWx0Q2F0ZWdvcnlDYWxlbmRh
ckV2ZW50LCByZXN1bHRzWzFdLmNhdGVnb3J5KTsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKCJE
YXRlIiwgcmVzdWx0c1sxXS50eXBlKTsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKCJEZWNlbWJl
ciAyMSwgMjAyMSIsIHJlc3VsdHNbMV0udmFsdWUpOworICAgICAgICBFWFBFQ1RfRVEoRERSZXN1
bHRDYXRlZ29yeU1pc2MsIHJlc3VsdHNbMl0uY2F0ZWdvcnkpOworICAgICAgICBFWFBFQ1RfV0tf
U1RSRVEoIkZsaWdodEluZm9ybWF0aW9uIiwgcmVzdWx0c1syXS50eXBlKTsKKyAgICAgICAgRVhQ
RUNUX1dLX1NUUkVRKCJBQzc4MCIsIHJlc3VsdHNbMl0udmFsdWUpOworICAgIH07CisKKyAgICBb
d2ViVmlldyBzeW5jaHJvbm91c2x5RGV0ZWN0RGF0YVdpdGhUeXBlczpXS0RhdGFEZXRlY3RvclR5
cGVBbGxdOworICAgIFt3ZWJWaWV3IGV4cGVjdEVsZW1lbnRDb3VudDo1IHF1ZXJ5U2VsZWN0b3I6
QCJhW3gtYXBwbGUtZGF0YS1kZXRlY3RvcnM9dHJ1ZV0iXTsKKyAgICBjaGVja0RhdGFEZXRlY3Rp
b25SZXN1bHRzKFt3ZWJWaWV3IF9kYXRhRGV0ZWN0aW9uUmVzdWx0c10pOworCisgICAgW3dlYlZp
ZXcgc3luY2hyb25vdXNseVJlbW92ZURhdGFEZXRlY3RlZExpbmtzXTsKKyAgICBbd2ViVmlldyBl
eHBlY3RFbGVtZW50Q291bnQ6MCBxdWVyeVNlbGVjdG9yOkAiYVt4LWFwcGxlLWRhdGEtZGV0ZWN0
b3JzPXRydWVdIl07CisgICAgRVhQRUNUX0VRKDBVLCBbd2ViVmlldyBfZGF0YURldGVjdGlvblJl
c3VsdHNdLmNvdW50KTsKKworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlEZXRlY3REYXRhV2l0
aFR5cGVzOldLRGF0YURldGVjdG9yVHlwZUFkZHJlc3MgfCBXS0RhdGFEZXRlY3RvclR5cGVQaG9u
ZU51bWJlcl07CisgICAgW3dlYlZpZXcgZXhwZWN0RWxlbWVudENvdW50OjIgcXVlcnlTZWxlY3Rv
cjpAImFbeC1hcHBsZS1kYXRhLWRldGVjdG9ycz10cnVlXSJdOworICAgIGNoZWNrRGF0YURldGVj
dGlvblJlc3VsdHMoW3dlYlZpZXcgX2RhdGFEZXRlY3Rpb25SZXN1bHRzXSk7Cit9CisKICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0F0
dGFjaG1lbnRUZXN0cy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
V0tBdHRhY2htZW50VGVzdHMubW0KaW5kZXggZTJjZTcyYTQzNTMzM2ZkZTA3MTAyZWFmN2Q4YzAw
MmRhMDk0ZDdjNS4uZDQ4ZjQzZWY3MjEyMWUyYjU5N2E4NzU3ODAzOWY3NzhlOTQ3ZjU3MCAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0F0dGFjaG1l
bnRUZXN0cy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dL
QXR0YWNobWVudFRlc3RzLm1tCkBAIC0yMTUsMzcgKzIxNSw2IEBAIHN0YXRpYyBOU0RhdGEgKnRl
c3RQREZEYXRhKCkKIAogQGltcGxlbWVudGF0aW9uIFRlc3RXS1dlYlZpZXcgKEF0dGFjaG1lbnRU
ZXN0aW5nKQogCi0tIChOU0FycmF5PE5TU3RyaW5nICo+ICopdGFnc0luQm9keQotewotICAgIHJl
dHVybiBbc2VsZiBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiQXJyYXkuZnJvbShkb2N1
bWVudC5ib2R5LmdldEVsZW1lbnRzQnlUYWdOYW1lKCcqJykpLm1hcChlID0+IGUudGFnTmFtZSki
XTsKLX0KLQotLSAodm9pZClleHBlY3RFbGVtZW50VGFnc0luT3JkZXI6KE5TQXJyYXk8TlNTdHJp
bmcgKj4gKil0YWdOYW1lcwotewotICAgIGF1dG8gcmVtYWluaW5nVGFncyA9IGFkb3B0TlMoW3Rh
Z05hbWVzIG11dGFibGVDb3B5XSk7Ci0gICAgTlNBcnJheTxOU1N0cmluZyAqPiAqdGFnc0luQm9k
eSA9IHNlbGYudGFnc0luQm9keTsKLSAgICBmb3IgKE5TU3RyaW5nICp0YWcgaW4gdGFnc0luQm9k
eS5yZXZlcnNlT2JqZWN0RW51bWVyYXRvcikgewotICAgICAgICBpZiAoW3RhZyBpc0VxdWFsVG9T
dHJpbmc6W3JlbWFpbmluZ1RhZ3MgbGFzdE9iamVjdF1dKQotICAgICAgICAgICAgW3JlbWFpbmlu
Z1RhZ3MgcmVtb3ZlTGFzdE9iamVjdF07Ci0gICAgICAgIGlmICghW3JlbWFpbmluZ1RhZ3MgY291
bnRdKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIEVYUEVDVF9FUShbcmVtYWluaW5n
VGFncyBjb3VudF0sIDBVKTsKLSAgICBpZiAoW3JlbWFpbmluZ1RhZ3MgY291bnRdKQotICAgICAg
ICBOU0xvZyhAIkV4cGVjdGVkIHRvIGZpbmQgb3JkZXJlZCB0YWdzOiAlQCBpbjogJUAiLCB0YWdO
YW1lcywgdGFnc0luQm9keSk7Ci19Ci0KLS0gKHZvaWQpZXhwZWN0RWxlbWVudENvdW50OihOU0lu
dGVnZXIpY291bnQgdGFnTmFtZTooTlNTdHJpbmcgKil0YWdOYW1lCi17Ci0gICAgTlNTdHJpbmcg
KnNjcmlwdCA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiZG9jdW1lbnQucXVlcnlTZWxl
Y3RvckFsbCgnJUAnKS5sZW5ndGgiLCB0YWdOYW1lXTsKLSAgICBFWFBFQ1RfRVEoY291bnQsIFtz
ZWxmIHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6c2NyaXB0XS5pbnRlZ2VyVmFsdWUpOwot
fQotCi0tICh2b2lkKWV4cGVjdEVsZW1lbnRUYWc6KE5TU3RyaW5nICopdGFnTmFtZSB0b0NvbWVC
ZWZvcmU6KE5TU3RyaW5nICopb3RoZXJUYWdOYW1lCi17Ci0gICAgW3NlbGYgZXhwZWN0RWxlbWVu
dFRhZ3NJbk9yZGVyOkBbdGFnTmFtZSwgb3RoZXJUYWdOYW1lXV07Ci19Ci0KIC0gKF9XS0F0dGFj
aG1lbnQgKilzeW5jaHJvbm91c2x5SW5zZXJ0QXR0YWNobWVudFdpdGhGaWxlV3JhcHBlcjooTlNG
aWxlV3JhcHBlciAqKWZpbGVXcmFwcGVyIGNvbnRlbnRUeXBlOihOU1N0cmluZyAqKWNvbnRlbnRU
eXBlCiB7CiAgICAgX19ibG9jayBib29sIGRvbmUgPSBmYWxzZTsKQEAgLTgzMSw3ICs4MDAsNyBA
QCBURVNUKFdLQXR0YWNobWVudFRlc3RzLCBJbnNlcnRGb2xkZXJBbmRGaWxlV2l0aFVua25vd25F
eHRlbnNpb24pCiAgICAgfQogCiAgICAgYXV0byBjaGVja0F0dGFjaG1lbnRDb25zaXN0ZW5jeSA9
IFt3ZWJWaWV3LCBmaWxlLCBmb2xkZXJdIChfV0tBdHRhY2htZW50ICpleHBlY3RlZEZpbGVBdHRh
Y2htZW50LCBfV0tBdHRhY2htZW50ICpleHBlY3RlZEZvbGRlckF0dGFjaG1lbnQpIHsKLSAgICAg
ICAgW3dlYlZpZXcgZXhwZWN0RWxlbWVudENvdW50OjIgdGFnTmFtZTpAIkFUVEFDSE1FTlQiXTsK
KyAgICAgICAgW3dlYlZpZXcgZXhwZWN0RWxlbWVudENvdW50OjIgcXVlcnlTZWxlY3RvcjpAIkFU
VEFDSE1FTlQiXTsKICAgICAgICAgRVhQRUNUX1RSVUUoVVRUeXBlQ29uZm9ybXNUbygoX19icmlk
Z2UgQ0ZTdHJpbmdSZWYpW3dlYlZpZXcgdmFsdWVPZkF0dHJpYnV0ZTpAInR5cGUiIGZvclF1ZXJ5
U2VsZWN0b3I6QCJhdHRhY2htZW50W3RpdGxlPWZvbGRlcl0iXSwga1VUVHlwZURpcmVjdG9yeSkp
OwogICAgICAgICBFWFBFQ1RfVFJVRShVVFR5cGVDb25mb3Jtc1RvKChfX2JyaWRnZSBDRlN0cmlu
Z1JlZilbd2ViVmlldyB2YWx1ZU9mQXR0cmlidXRlOkAidHlwZSIgZm9yUXVlcnlTZWxlY3RvcjpA
ImF0dGFjaG1lbnRbdGl0bGVePXRlc3RdIl0sIGtVVFR5cGVEYXRhKSk7CiAgICAgICAgIEVYUEVD
VF9XS19TVFJFUShleHBlY3RlZEZpbGVBdHRhY2htZW50LnVuaXF1ZUlkZW50aWZpZXIsIFt3ZWJW
aWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC5xdWVyeVNlbGVjdG9y
KCdhdHRhY2htZW50W3RpdGxlXj10ZXN0XScpLnVuaXF1ZUlkZW50aWZpZXIiXSk7CkBAIC05Mjgs
NyArODk3LDcgQEAgVEVTVChXS0F0dGFjaG1lbnRUZXN0cywgUmVtb3ZlTmV3bGluZXNCZWZvcmVQ
YXN0ZWRJbWFnZSkKICAgICAgICAgW3dlYlZpZXcgX3N5bmNocm9ub3VzbHlFeGVjdXRlRWRpdENv
bW1hbmQ6QCJEZWxldGVCYWNrd2FyZCIgYXJndW1lbnQ6bmlsXTsKICAgICAgICAgW3dlYlZpZXcg
X3N5bmNocm9ub3VzbHlFeGVjdXRlRWRpdENvbW1hbmQ6QCJEZWxldGVCYWNrd2FyZCIgYXJndW1l
bnQ6bmlsXTsKICAgICAgICAgb2JzZXJ2ZXIuZXhwZWN0QXR0YWNobWVudFVwZGF0ZXMoQFsgXSwg
QFsgXSk7Ci0gICAgICAgIFt3ZWJWaWV3IGV4cGVjdEVsZW1lbnRDb3VudDowIHRhZ05hbWU6QCJC
UiJdOworICAgICAgICBbd2ViVmlldyBleHBlY3RFbGVtZW50Q291bnQ6MCBxdWVyeVNlbGVjdG9y
OkAiQlIiXTsKICAgICB9CiB9CiAKQEAgLTk3MSwxMyArOTQwLDEzIEBAIFRFU1QoV0tBdHRhY2ht
ZW50VGVzdHMsIE1vdmVQYXN0ZWRJbWFnZUJ5RHJhZ2dpbmcpCiAgICAgW3dlYlZpZXcgX2V4ZWN1
dGVFZGl0Q29tbWFuZDpAIkluc2VydEhUTUwiIGFyZ3VtZW50OkAiPHN0cm9uZz50ZXh0PC9zdHJv
bmc+IiBjb21wbGV0aW9uOm5pbF07CiAgICAgW3dlYlZpZXcgX3N5bmNocm9ub3VzbHlFeGVjdXRl
RWRpdENvbW1hbmQ6QCJJbnNlcnRQYXJhZ3JhcGgiIGFyZ3VtZW50Om5pbF07CiAgICAgW3dlYlZp
ZXcgZXhwZWN0RWxlbWVudFRhZzpAIklNRyIgdG9Db21lQmVmb3JlOkAiU1RST05HIl07Ci0gICAg
W3dlYlZpZXcgZXhwZWN0RWxlbWVudENvdW50OjEgdGFnTmFtZTpAIklNRyJdOworICAgIFt3ZWJW
aWV3IGV4cGVjdEVsZW1lbnRDb3VudDoxIHF1ZXJ5U2VsZWN0b3I6QCJJTUciXTsKIAogICAgIC8v
IERyYWcgdGhlIGF0dGFjaG1lbnQgZWxlbWVudCB0byBzb21ld2hlcmUgYmVsb3cgdGhlIHN0cm9u
ZyB0ZXh0LgogICAgIFtzaW11bGF0b3IgcnVuRnJvbTpDR1BvaW50TWFrZSg1MCwgNTApIHRvOkNH
UG9pbnRNYWtlKDUwLCAzNTApXTsKIAogICAgIFt3ZWJWaWV3IGV4cGVjdEVsZW1lbnRUYWc6QCJT
VFJPTkciIHRvQ29tZUJlZm9yZTpAIklNRyJdOwotICAgIFt3ZWJWaWV3IGV4cGVjdEVsZW1lbnRD
b3VudDoxIHRhZ05hbWU6QCJJTUciXTsKKyAgICBbd2ViVmlldyBleHBlY3RFbGVtZW50Q291bnQ6
MSBxdWVyeVNlbGVjdG9yOkAiSU1HIl07CiAgICAgRVhQRUNUX0VRKFtzaW11bGF0b3IgaW5zZXJ0
ZWRBdHRhY2htZW50c10uY291bnQsIFtzaW11bGF0b3IgcmVtb3ZlZEF0dGFjaG1lbnRzXS5jb3Vu
dCk7CiAKICAgICBbc2ltdWxhdG9yIGVuZERhdGFUcmFuc2Zlcl07CkBAIC0xMDM0LDggKzEwMDMs
OCBAQCBURVNUKFdLQXR0YWNobWVudFRlc3RzLCBJbnNlcnRQYXN0ZWRBdHRyaWJ1dGVkU3RyaW5n
Q29udGFpbmluZ011bHRpcGxlQXR0YWNobWVudAogICAgIH0KIAogICAgIEVYUEVDVF9UUlVFKHpp
cEF0dGFjaG1lbnQgJiYgaW1hZ2VBdHRhY2htZW50ICYmIHBkZkF0dGFjaG1lbnQpOwotICAgIFt3
ZWJWaWV3IGV4cGVjdEVsZW1lbnRDb3VudDoyIHRhZ05hbWU6QCJBVFRBQ0hNRU5UIl07Ci0gICAg
W3dlYlZpZXcgZXhwZWN0RWxlbWVudENvdW50OjEgdGFnTmFtZTpAIklNRyJdOworICAgIFt3ZWJW
aWV3IGV4cGVjdEVsZW1lbnRDb3VudDoyIHF1ZXJ5U2VsZWN0b3I6QCJBVFRBQ0hNRU5UIl07Cisg
ICAgW3dlYlZpZXcgZXhwZWN0RWxlbWVudENvdW50OjEgcXVlcnlTZWxlY3RvcjpAIklNRyJdOwog
ICAgIEVYUEVDVF9XS19TVFJFUSgiYXBwbGljYXRpb24vcGRmIiwgW3dlYlZpZXcgc3RyaW5nQnlF
dmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2F0dGFjaG1l
bnQnKVswXS5nZXRBdHRyaWJ1dGUoJ3R5cGUnKSJdKTsKIAogICAgIE5TU3RyaW5nICp6aXBBdHRh
Y2htZW50VHlwZSA9IFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1
bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdhdHRhY2htZW50JylbMV0uZ2V0QXR0cmlidXRlKCd0eXBl
JykiXTsKQEAgLTEzMzgsNyArMTMwNyw3IEBAIFRFU1QoV0tBdHRhY2htZW50VGVzdHMsIFBhc3Rl
V2ViQXJjaGl2ZUNvbnRhaW5pbmdJbWFnZXMpCiAKICAgICBPYnNlcnZlQXR0YWNobWVudFVwZGF0
ZXNGb3JTY29wZSBvYnNlcnZlcih3ZWJWaWV3LmdldCgpKTsKICAgICBbd2ViVmlldyBfc3luY2hy
b25vdXNseUV4ZWN1dGVFZGl0Q29tbWFuZDpAIlBhc3RlIiBhcmd1bWVudDpuaWxdOwotICAgIFt3
ZWJWaWV3IGV4cGVjdEVsZW1lbnRDb3VudDoyIHRhZ05hbWU6QCJJTUciXTsKKyAgICBbd2ViVmll
dyBleHBlY3RFbGVtZW50Q291bnQ6MiBxdWVyeVNlbGVjdG9yOkAiSU1HIl07CiAKICAgICBmb3Ig
KF9XS0F0dGFjaG1lbnQgKmF0dGFjaG1lbnQgaW4gb2JzZXJ2ZXIub2JzZXJ2ZXIoKS5pbnNlcnRl
ZCkgewogICAgICAgICBpZiAoW2F0dGFjaG1lbnQuaW5mby5jb250ZW50VHlwZSBpc0VxdWFsVG9T
dHJpbmc6QCJpbWFnZS9wbmciXSkKQEAgLTE0NzMsNyArMTQ0Miw3IEBAIFRFU1QoV0tBdHRhY2ht
ZW50VGVzdHMsIENvcHlBbmRQYXN0ZUJldHdlZW5XZWJWaWV3cykKICAgICBhdXRvIHNlY29uZFdl
YlZpZXcgPSB3ZWJWaWV3Rm9yVGVzdGluZ0F0dGFjaG1lbnRzKCk7CiAgICAgT2JzZXJ2ZUF0dGFj
aG1lbnRVcGRhdGVzRm9yU2NvcGUgb2JzZXJ2ZXIoc2Vjb25kV2ViVmlldy5nZXQoKSk7CiAgICAg
W3NlY29uZFdlYlZpZXcgcGFzdGU6bmlsXTsKLSAgICBbc2Vjb25kV2ViVmlldyBleHBlY3RFbGVt
ZW50Q291bnQ6MyB0YWdOYW1lOkAiYXR0YWNobWVudCJdOworICAgIFtzZWNvbmRXZWJWaWV3IGV4
cGVjdEVsZW1lbnRDb3VudDozIHF1ZXJ5U2VsZWN0b3I6QCJhdHRhY2htZW50Il07CiAgICAgRVhQ
RUNUX0VRKDNVLCBvYnNlcnZlci5vYnNlcnZlcigpLmluc2VydGVkLmNvdW50KTsKIAogICAgIE5T
U3RyaW5nICpwbGFpbkZpbGVJZGVudGlmaWVyID0gW3NlY29uZFdlYlZpZXcgc3RyaW5nQnlFdmFs
dWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2F0dGFjaG1lbnRbdGl0
bGVePXRlc3RdJykudW5pcXVlSWRlbnRpZmllciJdOwpAQCAtMTUxNiw4ICsxNDg1LDggQEAgVEVT
VChXS0F0dGFjaG1lbnRUZXN0c01hYywgSW5zZXJ0UGFzdGVkRmlsZVVSTHNBc0F0dGFjaG1lbnRz
KQogICAgICAgICBFWFBFQ1RfRVEoMlUsIFtpbnNlcnRlZEF0dGFjaG1lbnRzIGNvdW50XSk7CiAg
ICAgfQogCi0gICAgW3dlYlZpZXcgZXhwZWN0RWxlbWVudENvdW50OjEgdGFnTmFtZTpAIkFUVEFD
SE1FTlQiXTsKLSAgICBbd2ViVmlldyBleHBlY3RFbGVtZW50Q291bnQ6MSB0YWdOYW1lOkAiSU1H
Il07CisgICAgW3dlYlZpZXcgZXhwZWN0RWxlbWVudENvdW50OjEgcXVlcnlTZWxlY3RvcjpAIkFU
VEFDSE1FTlQiXTsKKyAgICBbd2ViVmlldyBleHBlY3RFbGVtZW50Q291bnQ6MSBxdWVyeVNlbGVj
dG9yOkAiSU1HIl07CiAgICAgRVhQRUNUX1dLX1NUUkVRKCJhcHBsaWNhdGlvbi9wZGYiLCBbd2Vi
VmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQucXVlcnlTZWxlY3Rv
cignYXR0YWNobWVudCcpLmdldEF0dHJpYnV0ZSgndHlwZScpIl0pOwogICAgIEVYUEVDVF9XS19T
VFJFUSgidGVzdC5wZGYiLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAi
ZG9jdW1lbnQucXVlcnlTZWxlY3RvcignYXR0YWNobWVudCcpLmdldEF0dHJpYnV0ZSgndGl0bGUn
KSJdKTsKIApAQCAtMTU1Miw4ICsxNTIxLDggQEAgVEVTVChXS0F0dGFjaG1lbnRUZXN0c01hYywg
SW5zZXJ0RHJvcHBlZEZpbGVQcm9taXNlc0FzQXR0YWNobWVudHMpCiAKICAgICBbc2ltdWxhdG9y
IHJ1bkZyb206Q0dQb2ludE1ha2UoMCwgMCkgdG86Q0dQb2ludE1ha2UoNTAsIDUwKV07CiAKLSAg
ICBbd2ViVmlldyBleHBlY3RFbGVtZW50Q291bnQ6MSB0YWdOYW1lOkAiQVRUQUNITUVOVCJdOwot
ICAgIFt3ZWJWaWV3IGV4cGVjdEVsZW1lbnRDb3VudDoxIHRhZ05hbWU6QCJJTUciXTsKKyAgICBb
d2ViVmlldyBleHBlY3RFbGVtZW50Q291bnQ6MSBxdWVyeVNlbGVjdG9yOkAiQVRUQUNITUVOVCJd
OworICAgIFt3ZWJWaWV3IGV4cGVjdEVsZW1lbnRDb3VudDoxIHF1ZXJ5U2VsZWN0b3I6QCJJTUci
XTsKICAgICBFWFBFQ1RfRVEoMlUsIFtzaW11bGF0b3IgaW5zZXJ0ZWRBdHRhY2htZW50c10uY291
bnQpOwogCiAgICAgYXV0byBpbnNlcnRlZEF0dGFjaG1lbnRzID0gcmV0YWluUHRyKFtzaW11bGF0
b3IgaW5zZXJ0ZWRBdHRhY2htZW50c10pOwpAQCAtMTU3Myw4ICsxNTQyLDggQEAgVEVTVChXS0F0
dGFjaG1lbnRUZXN0c01hYywgSW5zZXJ0RHJvcHBlZEZpbGVQcm9taXNlc0FzQXR0YWNobWVudHMp
CiAgICAgW3dlYlZpZXcgX3N5bmNocm9ub3VzbHlFeGVjdXRlRWRpdENvbW1hbmQ6QCJEZWxldGVC
YWNrd2FyZCIgYXJndW1lbnQ6bmlsXTsKICAgICBhdXRvIHJlbW92ZWRBdHRhY2htZW50cyA9IHJl
dGFpblB0cihbc2ltdWxhdG9yIHJlbW92ZWRBdHRhY2htZW50c10pOwogICAgIEVYUEVDVF9FUSgy
VSwgW3JlbW92ZWRBdHRhY2htZW50cyBjb3VudF0pOwotICAgIFt3ZWJWaWV3IGV4cGVjdEVsZW1l
bnRDb3VudDowIHRhZ05hbWU6QCJBVFRBQ0hNRU5UIl07Ci0gICAgW3dlYlZpZXcgZXhwZWN0RWxl
bWVudENvdW50OjAgdGFnTmFtZTpAIklNRyJdOworICAgIFt3ZWJWaWV3IGV4cGVjdEVsZW1lbnRD
b3VudDowIHF1ZXJ5U2VsZWN0b3I6QCJBVFRBQ0hNRU5UIl07CisgICAgW3dlYlZpZXcgZXhwZWN0
RWxlbWVudENvdW50OjAgcXVlcnlTZWxlY3RvcjpAIklNRyJdOwogICAgIEVYUEVDVF9UUlVFKFty
ZW1vdmVkQXR0YWNobWVudHMgY29udGFpbnNPYmplY3Q6W2luc2VydGVkQXR0YWNobWVudHMgZmly
c3RPYmplY3RdXSk7CiAgICAgRVhQRUNUX1RSVUUoW3JlbW92ZWRBdHRhY2htZW50cyBjb250YWlu
c09iamVjdDpbaW5zZXJ0ZWRBdHRhY2htZW50cyBsYXN0T2JqZWN0XV0pOwogfQpAQCAtMTY4MSw3
ICsxNjUwLDcgQEAgVEVTVChXS0F0dGFjaG1lbnRUZXN0c0lPUywgSW5zZXJ0RHJvcHBlZFJpY2hB
bmRQbGFpblRleHRGaWxlc0FzQXR0YWNobWVudHMpCiAgICAgZm9yIChfV0tBdHRhY2htZW50ICph
dHRhY2htZW50IGluIFtkcmFnQW5kRHJvcFNpbXVsYXRvciBpbnNlcnRlZEF0dGFjaG1lbnRzXSkK
ICAgICAgICAgRVhQRUNUX0dUKFthdHRhY2htZW50IGluZm9dLmRhdGEubGVuZ3RoLCAwVSk7CiAK
LSAgICBbd2ViVmlldyBleHBlY3RFbGVtZW50Q291bnQ6MiB0YWdOYW1lOkAiQVRUQUNITUVOVCJd
OworICAgIFt3ZWJWaWV3IGV4cGVjdEVsZW1lbnRDb3VudDoyIHF1ZXJ5U2VsZWN0b3I6QCJBVFRB
Q0hNRU5UIl07CiAgICAgRVhQRUNUX1dLX1NUUkVRKCJoZWxsby5ydGYiLCBbd2ViVmlldyBzdHJp
bmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnYXR0
YWNobWVudCcpWzBdLmdldEF0dHJpYnV0ZSgndGl0bGUnKSJdKTsKICAgICBFWFBFQ1RfV0tfU1RS
RVEoInRleHQvcnRmIiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRv
Y3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2F0dGFjaG1lbnQnKVswXS5nZXRBdHRyaWJ1dGUoJ3R5
cGUnKSJdKTsKICAgICBFWFBFQ1RfV0tfU1RSRVEoIndvcmxkLnR4dCIsIFt3ZWJWaWV3IHN0cmlu
Z0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdhdHRh
Y2htZW50JylbMV0uZ2V0QXR0cmlidXRlKCd0aXRsZScpIl0pOwpAQCAtMTcwNiw3ICsxNjc1LDcg
QEAgVEVTVChXS0F0dGFjaG1lbnRUZXN0c0lPUywgSW5zZXJ0RHJvcHBlZFppcEFyY2hpdmVBc0F0
dGFjaG1lbnQpCiAgICAgRVhQRUNUX0VRKDFVLCBbZHJhZ0FuZERyb3BTaW11bGF0b3IgaW5zZXJ0
ZWRBdHRhY2htZW50c10uY291bnQpOwogICAgIEVYUEVDVF9FUSgwVSwgW2RyYWdBbmREcm9wU2lt
dWxhdG9yIHJlbW92ZWRBdHRhY2htZW50c10uY291bnQpOwogICAgIFtbZHJhZ0FuZERyb3BTaW11
bGF0b3IgaW5zZXJ0ZWRBdHRhY2htZW50c10uZmlyc3RPYmplY3QgZXhwZWN0UmVxdWVzdGVkRGF0
YVRvQmU6ZGF0YV07Ci0gICAgW3dlYlZpZXcgZXhwZWN0RWxlbWVudENvdW50OjEgdGFnTmFtZTpA
IkFUVEFDSE1FTlQiXTsKKyAgICBbd2ViVmlldyBleHBlY3RFbGVtZW50Q291bnQ6MSBxdWVyeVNl
bGVjdG9yOkAiQVRUQUNITUVOVCJdOwogICAgIEVYUEVDVF9XS19TVFJFUSgiYXJjaGl2ZS56aXAi
LCBbd2ViVmlldyB2YWx1ZU9mQXR0cmlidXRlOkAidGl0bGUiIGZvclF1ZXJ5U2VsZWN0b3I6QCJh
dHRhY2htZW50Il0pOwogICAgIEVYUEVDVF9XS19TVFJFUSgiYXBwbGljYXRpb24vemlwIiwgW3dl
YlZpZXcgdmFsdWVPZkF0dHJpYnV0ZTpAInR5cGUiIGZvclF1ZXJ5U2VsZWN0b3I6QCJhdHRhY2ht
ZW50Il0pOwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9kYXRhLWRldGVjdG9ycy5odG1sIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9kYXRhLWRldGVjdG9ycy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY5Zjg3YWY0Zjg4ODllYjc0
NDQ0YjU5MDBlNjBhMTlmZTcxZTg1ZDUKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL2RhdGEtZGV0ZWN0b3JzLmh0bWwKQEAgLTAsMCArMSwz
MCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250
ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MSI+Cis8Ym9keT4KKzx0YWJs
ZT4KKzx0Ym9keT4KKzx0cj4KKyAgICA8dGQ+VGVsZXBob25lIG51bWJlcjwvdGQ+CisgICAgPHRk
PisxLTIzNC01NjctODkwMDwvdGQ+Cis8L3RyPgorPHRyPgorICAgIDx0ZD5MaW5rPC90ZD4KKyAg
ICA8dGQ+aHR0cHM6Ly93d3cuYXBwbGUuY29tPC90ZD4KKzwvdHI+Cis8dHI+CisgICAgPHRkPkFk
ZHJlc3M8L3RkPgorICAgIDx0ZD4yIEFwcGxlIFBhcmsgV2F5LCBDdXBlcnRpbm8gOTUwMTQ8L3Rk
PgorPC90cj4KKzx0cj4KKyAgICA8dGQ+Q2FsZW5kYXIgZXZlbnQ8L3RkPgorICAgIDx0ZD5EZWNl
bWJlciAyMSwgMjAyMTwvdGQ+Cis8L3RyPgorPHRyPgorICAgIDx0ZD5GbGlnaHQgbnVtYmVyPC90
ZD4KKyAgICA8dGQ+QUM3ODA8L3RkPgorPC90cj4KKzwvdGJvZHk+Cis8L3RhYmxlPgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tX
ZWJWaWV3LmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcuaAppbmRl
eCA1NDg4MzY5NzU2NDYwZGMxYzdkNWM5N2UzNzIxMGZiY2Q4MzEwMThiLi44ODNhYmQxY2FjYTlk
NzVlOTVlNDUwMTljYWUwYmQ0MmVmNTA1ZGUwIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcuaAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29h
L1Rlc3RXS1dlYlZpZXcuaApAQCAtNDgsNyArNDgsMTQgQEAKIEBlbmQKIAogQGludGVyZmFjZSBX
S1dlYlZpZXcgKFRlc3RXZWJLaXRBUEkpCitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkp
IE5TQXJyYXk8TlNTdHJpbmcgKj4gKnRhZ3NJbkJvZHk7CiAtIChCT09MKV9zeW5jaHJvbm91c2x5
RXhlY3V0ZUVkaXRDb21tYW5kOihOU1N0cmluZyAqKWNvbW1hbmQgYXJndW1lbnQ6KE5TU3RyaW5n
ICopYXJndW1lbnQ7CistICh2b2lkKWV4cGVjdEVsZW1lbnRUYWdzSW5PcmRlcjooTlNBcnJheTxO
U1N0cmluZyAqPiAqKXRhZ05hbWVzOworLSAodm9pZClleHBlY3RFbGVtZW50Q291bnQ6KE5TSW50
ZWdlciljb3VudCBxdWVyeVNlbGVjdG9yOihOU1N0cmluZyAqKXF1ZXJ5U2VsZWN0b3I7CistICh2
b2lkKWV4cGVjdEVsZW1lbnRUYWc6KE5TU3RyaW5nICopdGFnTmFtZSB0b0NvbWVCZWZvcmU6KE5T
U3RyaW5nICopb3RoZXJUYWdOYW1lOworLSAoTlNTdHJpbmcgKilzdHJpbmdCeUV2YWx1YXRpbmdK
YXZhU2NyaXB0OihOU1N0cmluZyAqKXNjcmlwdDsKKy0gKGlkKW9iamVjdEJ5RXZhbHVhdGluZ0ph
dmFTY3JpcHRXaXRoVXNlckdlc3R1cmU6KE5TU3RyaW5nICopc2NyaXB0OworLSAoaWQpb2JqZWN0
QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDooTlNTdHJpbmcgKilzY3JpcHQ7CiBAZW5kCiAKIEBpbnRl
cmZhY2UgVGVzdE1lc3NhZ2VIYW5kbGVyIDogTlNPYmplY3QgPFdLU2NyaXB0TWVzc2FnZUhhbmRs
ZXI+CkBAIC02NCw5ICs3MSw2IEBACiAtICh2b2lkKXN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmlu
ZzooTlNTdHJpbmcgKilodG1sOwogLSAodm9pZClzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6
KE5TU3RyaW5nICopaHRtbCBiYXNlVVJMOihOU1VSTCAqKXVybDsKIC0gKHZvaWQpc3luY2hyb25v
dXNseUxvYWRUZXN0UGFnZU5hbWVkOihOU1N0cmluZyAqKXBhZ2VOYW1lOwotLSAoaWQpb2JqZWN0
QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDooTlNTdHJpbmcgKilzY3JpcHQ7Ci0tIChpZClvYmplY3RC
eUV2YWx1YXRpbmdKYXZhU2NyaXB0V2l0aFVzZXJHZXN0dXJlOihOU1N0cmluZyAqKXNjcmlwdDsK
LS0gKE5TU3RyaW5nICopc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDooTlNTdHJpbmcgKilz
Y3JpcHQ7CiAtICh2b2lkKXdhaXRGb3JNZXNzYWdlOihOU1N0cmluZyAqKW1lc3NhZ2U7CiAtICh2
b2lkKXBlcmZvcm1BZnRlckxvYWRpbmc6KGRpc3BhdGNoX2Jsb2NrX3QpYWN0aW9uczsKIC0gKHZv
aWQpd2FpdEZvck5leHRQcmVzZW50YXRpb25VcGRhdGU7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL2Nv
Y29hL1Rlc3RXS1dlYlZpZXcubW0KaW5kZXggY2NiZWZmODI0ZDY1NWMxNDNmYjBjMDMxYTExNGVl
NmY3ZDQ4M2VkZi4uZThlYWRmODZkM2U4M2NmZTg0NDFmMjA3YmZmNDQzYjE5ZGI5NTE2ZSAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5tbQpAQCAtNzgsNiArNzgs
NzIgQEAgLSAoQk9PTClfc3luY2hyb25vdXNseUV4ZWN1dGVFZGl0Q29tbWFuZDooTlNTdHJpbmcg
Kiljb21tYW5kIGFyZ3VtZW50OihOU1N0cmluZwogICAgIHJldHVybiBzdWNjZXNzOwogfQogCist
IChOU0FycmF5PE5TU3RyaW5nICo+ICopdGFnc0luQm9keQoreworICAgIHJldHVybiBbc2VsZiBv
YmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiQXJyYXkuZnJvbShkb2N1bWVudC5ib2R5Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCcqJykpLm1hcChlID0+IGUudGFnTmFtZSkiXTsKK30KKworLSAo
dm9pZClleHBlY3RFbGVtZW50VGFnc0luT3JkZXI6KE5TQXJyYXk8TlNTdHJpbmcgKj4gKil0YWdO
YW1lcworeworICAgIGF1dG8gcmVtYWluaW5nVGFncyA9IGFkb3B0TlMoW3RhZ05hbWVzIG11dGFi
bGVDb3B5XSk7CisgICAgTlNBcnJheTxOU1N0cmluZyAqPiAqdGFnc0luQm9keSA9IHNlbGYudGFn
c0luQm9keTsKKyAgICBmb3IgKE5TU3RyaW5nICp0YWcgaW4gdGFnc0luQm9keS5yZXZlcnNlT2Jq
ZWN0RW51bWVyYXRvcikgeworICAgICAgICBpZiAoW3RhZyBpc0VxdWFsVG9TdHJpbmc6W3JlbWFp
bmluZ1RhZ3MgbGFzdE9iamVjdF1dKQorICAgICAgICAgICAgW3JlbWFpbmluZ1RhZ3MgcmVtb3Zl
TGFzdE9iamVjdF07CisgICAgICAgIGlmICghW3JlbWFpbmluZ1RhZ3MgY291bnRdKQorICAgICAg
ICAgICAgYnJlYWs7CisgICAgfQorICAgIEVYUEVDVF9FUShbcmVtYWluaW5nVGFncyBjb3VudF0s
IDBVKTsKKyAgICBpZiAoW3JlbWFpbmluZ1RhZ3MgY291bnRdKQorICAgICAgICBOU0xvZyhAIkV4
cGVjdGVkIHRvIGZpbmQgb3JkZXJlZCB0YWdzOiAlQCBpbjogJUAiLCB0YWdOYW1lcywgdGFnc0lu
Qm9keSk7Cit9CisKKy0gKHZvaWQpZXhwZWN0RWxlbWVudENvdW50OihOU0ludGVnZXIpY291bnQg
cXVlcnlTZWxlY3RvcjooTlNTdHJpbmcgKilxdWVyeVNlbGVjdG9yCit7CisgICAgTlNTdHJpbmcg
KnNjcmlwdCA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiZG9jdW1lbnQucXVlcnlTZWxl
Y3RvckFsbCgnJUAnKS5sZW5ndGgiLCBxdWVyeVNlbGVjdG9yXTsKKyAgICBFWFBFQ1RfRVEoY291
bnQsIFtzZWxmIHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6c2NyaXB0XS5pbnRlZ2VyVmFs
dWUpOworfQorCistICh2b2lkKWV4cGVjdEVsZW1lbnRUYWc6KE5TU3RyaW5nICopdGFnTmFtZSB0
b0NvbWVCZWZvcmU6KE5TU3RyaW5nICopb3RoZXJUYWdOYW1lCit7CisgICAgW3NlbGYgZXhwZWN0
RWxlbWVudFRhZ3NJbk9yZGVyOkBbdGFnTmFtZSwgb3RoZXJUYWdOYW1lXV07Cit9CisKKy0gKGlk
KW9iamVjdEJ5RXZhbHVhdGluZ0phdmFTY3JpcHQ6KE5TU3RyaW5nICopc2NyaXB0Cit7CisgICAg
Ym9vbCBpc1dhaXRpbmdGb3JKYXZhU2NyaXB0ID0gZmFsc2U7CisgICAgUmV0YWluUHRyPGlkPiBl
dmFsUmVzdWx0OworICAgIFtzZWxmIF9ldmFsdWF0ZUphdmFTY3JpcHRXaXRob3V0VXNlckdlc3R1
cmU6c2NyaXB0IGNvbXBsZXRpb25IYW5kbGVyOlsmXSAoaWQgcmVzdWx0LCBOU0Vycm9yICplcnJv
cikgeworICAgICAgICBldmFsUmVzdWx0ID0gcmVzdWx0OworICAgICAgICBpc1dhaXRpbmdGb3JK
YXZhU2NyaXB0ID0gdHJ1ZTsKKyAgICAgICAgRVhQRUNUX1RSVUUoIWVycm9yKTsKKyAgICAgICAg
aWYgKGVycm9yKQorICAgICAgICAgICAgTlNMb2coQCJFbmNvdW50ZXJlZCBlcnJvcjogJUAgd2hp
bGUgZXZhbHVhdGluZyBzY3JpcHQ6ICVAIiwgZXJyb3IsIHNjcmlwdCk7CisgICAgfV07CisgICAg
VGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc1dhaXRpbmdGb3JKYXZhU2NyaXB0KTsKKyAgICBy
ZXR1cm4gZXZhbFJlc3VsdC5hdXRvcmVsZWFzZSgpOworfQorCistIChpZClvYmplY3RCeUV2YWx1
YXRpbmdKYXZhU2NyaXB0V2l0aFVzZXJHZXN0dXJlOihOU1N0cmluZyAqKXNjcmlwdAoreworICAg
IGJvb2wgaXNXYWl0aW5nRm9ySmF2YVNjcmlwdCA9IGZhbHNlOworICAgIFJldGFpblB0cjxpZD4g
ZXZhbFJlc3VsdDsKKyAgICBbc2VsZiBldmFsdWF0ZUphdmFTY3JpcHQ6c2NyaXB0IGNvbXBsZXRp
b25IYW5kbGVyOlsmXSAoaWQgcmVzdWx0LCBOU0Vycm9yICplcnJvcikgeworICAgICAgICBldmFs
UmVzdWx0ID0gcmVzdWx0OworICAgICAgICBpc1dhaXRpbmdGb3JKYXZhU2NyaXB0ID0gdHJ1ZTsK
KyAgICAgICAgRVhQRUNUX1RSVUUoIWVycm9yKTsKKyAgICAgICAgaWYgKGVycm9yKQorICAgICAg
ICAgICAgTlNMb2coQCJFbmNvdW50ZXJlZCBlcnJvcjogJUAgd2hpbGUgZXZhbHVhdGluZyBzY3Jp
cHQ6ICVAIiwgZXJyb3IsIHNjcmlwdCk7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRp
bDo6cnVuKCZpc1dhaXRpbmdGb3JKYXZhU2NyaXB0KTsKKyAgICByZXR1cm4gZXZhbFJlc3VsdC5h
dXRvcmVsZWFzZSgpOworfQorCistIChOU1N0cmluZyAqKXN0cmluZ0J5RXZhbHVhdGluZ0phdmFT
Y3JpcHQ6KE5TU3RyaW5nICopc2NyaXB0Cit7CisgICAgcmV0dXJuIFtOU1N0cmluZyBzdHJpbmdX
aXRoRm9ybWF0OkAiJUAiLCBbc2VsZiBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OnNjcmlw
dF1dOworfQorCiBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBUZXN0TWVzc2FnZUhhbmRsZXIgewpA
QCAtMjg5LDQxICszNTUsNiBAQCAtICh2b2lkKXN5bmNocm9ub3VzbHlMb2FkVGVzdFBhZ2VOYW1l
ZDooTlNTdHJpbmcgKilwYWdlTmFtZQogICAgIFtzZWxmIF90ZXN0X3dhaXRGb3JEaWRGaW5pc2hO
YXZpZ2F0aW9uXTsKIH0KIAotLSAoaWQpb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDooTlNT
dHJpbmcgKilzY3JpcHQKLXsKLSAgICBib29sIGlzV2FpdGluZ0ZvckphdmFTY3JpcHQgPSBmYWxz
ZTsKLSAgICBSZXRhaW5QdHI8aWQ+IGV2YWxSZXN1bHQ7Ci0gICAgW3NlbGYgX2V2YWx1YXRlSmF2
YVNjcmlwdFdpdGhvdXRVc2VyR2VzdHVyZTpzY3JpcHQgY29tcGxldGlvbkhhbmRsZXI6WyZdIChp
ZCByZXN1bHQsIE5TRXJyb3IgKmVycm9yKSB7Ci0gICAgICAgIGV2YWxSZXN1bHQgPSByZXN1bHQ7
Ci0gICAgICAgIGlzV2FpdGluZ0ZvckphdmFTY3JpcHQgPSB0cnVlOwotICAgICAgICBFWFBFQ1Rf
VFJVRSghZXJyb3IpOwotICAgICAgICBpZiAoZXJyb3IpCi0gICAgICAgICAgICBOU0xvZyhAIkVu
Y291bnRlcmVkIGVycm9yOiAlQCB3aGlsZSBldmFsdWF0aW5nIHNjcmlwdDogJUAiLCBlcnJvciwg
c2NyaXB0KTsKLSAgICB9XTsKLSAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzV2FpdGlu
Z0ZvckphdmFTY3JpcHQpOwotICAgIHJldHVybiBldmFsUmVzdWx0LmF1dG9yZWxlYXNlKCk7Ci19
Ci0KLS0gKGlkKW9iamVjdEJ5RXZhbHVhdGluZ0phdmFTY3JpcHRXaXRoVXNlckdlc3R1cmU6KE5T
U3RyaW5nICopc2NyaXB0Ci17Ci0gICAgYm9vbCBpc1dhaXRpbmdGb3JKYXZhU2NyaXB0ID0gZmFs
c2U7Ci0gICAgUmV0YWluUHRyPGlkPiBldmFsUmVzdWx0OwotICAgIFtzZWxmIGV2YWx1YXRlSmF2
YVNjcmlwdDpzY3JpcHQgY29tcGxldGlvbkhhbmRsZXI6WyZdIChpZCByZXN1bHQsIE5TRXJyb3Ig
KmVycm9yKSB7Ci0gICAgICAgIGV2YWxSZXN1bHQgPSByZXN1bHQ7Ci0gICAgICAgIGlzV2FpdGlu
Z0ZvckphdmFTY3JpcHQgPSB0cnVlOwotICAgICAgICBFWFBFQ1RfVFJVRSghZXJyb3IpOwotICAg
ICAgICBpZiAoZXJyb3IpCi0gICAgICAgICAgICBOU0xvZyhAIkVuY291bnRlcmVkIGVycm9yOiAl
QCB3aGlsZSBldmFsdWF0aW5nIHNjcmlwdDogJUAiLCBlcnJvciwgc2NyaXB0KTsKLSAgICB9XTsK
LSAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzV2FpdGluZ0ZvckphdmFTY3JpcHQpOwot
ICAgIHJldHVybiBldmFsUmVzdWx0LmF1dG9yZWxlYXNlKCk7Ci19Ci0KLS0gKE5TU3RyaW5nICop
c3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDooTlNTdHJpbmcgKilzY3JpcHQKLXsKLSAgICBy
ZXR1cm4gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlQCIsIFtzZWxmIG9iamVjdEJ5RXZh
bHVhdGluZ0phdmFTY3JpcHQ6c2NyaXB0XV07Ci19Ci0KIC0gKHZvaWQpd2FpdEZvck1lc3NhZ2U6
KE5TU3RyaW5nICopbWVzc2FnZQogewogICAgIF9fYmxvY2sgYm9vbCBpc0RvbmVXYWl0aW5nID0g
ZmFsc2U7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>355555</attachid>
            <date>2018-11-24 00:05:06 -0800</date>
            <delta_ts>2018-11-24 08:51:48 -0800</delta_ts>
            <desc>Patch for EWS</desc>
            <filename>bug-191918-20181124000506.patch</filename>
            <type>text/plain</type>
            <size>44464</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4NDU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDljYzEyMzFlYWVmZGQ4
ZDJiMjcxYmQ1M2I0ZTEzZTk5NjA1ZTgxMC4uODQ3NGJkZWU4ZWE5NTAzY2Y2N2MwYmU4YmFhMDJk
ZWY1MDJhNmUxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE4LTExLTIzICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gQWRk
IFdLV2ViVmlldyBTUEkgdG8gdHJpZ2dlciBhbmQgcmVtb3ZlIGRhdGEgZGV0ZWN0aW9uCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTE5MTgKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzM2MTg1MDUxPgorCisgICAgICAgIFJldmlld2VkIGJ5IFRpbSBI
b3J0b24uCisKKyAgICAgICAgQWRkIGEgaGVscGVyIG1ldGhvZCBvbiBEYXRhRGV0ZWN0aW9uIHRv
IHJlbW92ZSBhbGwgZGF0YSBkZXRlY3RlZCBsaW5rcyBpbiB0aGUgZ2l2ZW4gZG9jdW1lbnQuIFNl
ZSBXZWJLaXQgY2hhbmdlcworICAgICAgICBmb3IgbW9yZSBkZXRhaWwuCisKKyAgICAgICAgKiBl
ZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24uaDoKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0Rh
dGFEZXRlY3Rpb24ubW06CisgICAgICAgIChXZWJDb3JlOjpEYXRhRGV0ZWN0aW9uOjpyZW1vdmVE
YXRhRGV0ZWN0ZWRMaW5rc0luRG9jdW1lbnQpOgorCiAyMDE4LTExLTIyICBXZW5zb24gSHNpZWgg
IDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZHJlc3MgcG9zdC1yZXZpZXcg
ZmVlZGJhY2sgYWZ0ZXIgcjIzODQzOApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA1Y2E0ZTI5MWI3ZjgyZDg3MjM4NmRi
MmJhNDZmMmRhZTdhZTE2N2VhLi43MjY0YTM1M2JmMjcyNTFmMjkyYzgxZTIyN2QyMmY4ZGVkMmRm
YjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDE4LTExLTIzICBXZW5zb24gSHNpZWgg
IDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gQWRkIFdLV2ViVmll
dyBTUEkgdG8gdHJpZ2dlciBhbmQgcmVtb3ZlIGRhdGEgZGV0ZWN0aW9uCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTE5MTgKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzM2MTg1MDUxPgorCisgICAgICAgIFJldmlld2VkIGJ5IFRpbSBIb3J0b24uCisK
KyAgICAgICAgQWRkcyBzdXBwb3J0IGZvciB0d28gbmV3IFdLV2ViVmlldyBTUEkgbWV0aG9kcywg
YC1fZGV0ZWN0RGF0YVdpdGhUeXBlczpjb21wbGV0aW9uSGFuZGxlcjpgIGFuZAorICAgICAgICBg
LV9yZW1vdmVBbGxEYXRhRGV0ZWN0ZWRMaW5rczpgLCB0byBhbGxvdyBpbnRlcm5hbCBXZWJLaXQg
Y2xpZW50cyB0byBydW4gZGF0YSBkZXRlY3Rpb24gYW5kIGFkZCBsaW5rcyB0byBkYXRhCisgICAg
ICAgIGRldGVjdGVkIGNvbnRlbnQsIG9yIHJlbW92ZSBhbGwgZGF0YSBkZXRlY3RlZCBsaW5rcyBm
cm9tIHRoZSBkb2N1bWVudC4KKworICAgICAgICBUZXN0OiBXZWJLaXQuQWRkQW5kUmVtb3ZlRGF0
YURldGVjdG9ycworCisgICAgICAgICogU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHk6CisKKyAg
ICAgICAgVHdlYWsgSVBDIGNvZGUgZ2VuZXJhdGlvbiwgdG8gYWxsb3cgYG1lc3NhZ2VzLmluYCBm
aWxlcyB0aGF0IHVzZSBBc3luYyBDb21wbGV0aW9uSGFuZGxlciBub3RhdGlvbiB0byBzcGVjaWZ5
CisgICAgICAgIGNvbXBsZXRpb24gaGFuZGxlcnMgdGhhdCB0YWtlIG5vIGFyZ3VtZW50cy4KKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtX
S1dlYlZpZXcgX3JlbW92ZURhdGFEZXRlY3RlZExpbmtzOl0pOgorICAgICAgICAoLVtXS1dlYlZp
ZXcgX2RldGVjdERhdGFXaXRoVHlwZXM6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGV0
ZWN0RGF0YUluQWxsRnJhbWVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZW1v
dmVEYXRhRGV0ZWN0ZWRMaW5rcyk6CisKKyAgICAgICAgQWRkIG9yIHJlbW92ZSBkYXRhIGRldGVj
dGVkIGxpbmtzIGZyb20gZWFjaCBmcmFtZSBpbiB0aGUgcGFnZSwgYW5kIHRoZW4gcHJvcGFnYXRl
IHRoZSBuZXcgZGF0YSBkZXRlY3RvcgorICAgICAgICByZXN1bHRzIG9mIHRoZSBtYWluIGZyYW1l
IHRvIHRoZSBVSSBwcm9jZXNzICh0aGlzIG1hdGNoZXMgY3VycmVudCBiZWhhdmlvciwgd2hlcmUg
dGhlIHJlc3VsdHMgb2YgLVtXS1dlYlZpZXcKKyAgICAgICAgX2RhdGFEZXRlY3Rpb25SZXN1bHRz
XSBvbmx5IHJlZmxlY3RzIGRhdGEgZGV0ZWN0aW9uIHJlc3VsdHMgaW4gdGhlIG1haW4gZnJhbWUg
b2YgdGhlIHBhZ2UpLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6cmVtb3ZlRGF0YURldGVjdGVkTGlua3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjpkZXRlY3REYXRhSW5BbGxGcmFtZXMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2Fn
ZXMuaW46CisKIDIwMTgtMTEtMjIgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5j
b20+CiAKICAgICAgICAgW0NvY29hXSBjbGFuZyBlbWl0cyBhIHdhcm5pbmcgd2hlbiBidWlsZGlu
ZyBXZWJLaXQgYWZ0ZXIgcjIzODI5MwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9jb2NvYS9EYXRhRGV0ZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0Rh
dGFEZXRlY3Rpb24uaAppbmRleCBkYmU1NGJkY2YxOTBjMTViZDRkMDhlNjgwOWM2Mzk3ODkwNmJm
ZGJlLi4zYTM0YTA5YTVmYmNkOTIzYWFlM2M4ZGI4OGY1YTY2OGE3NmM5MTQwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24uaApAQCAtMzcsNiArMzcsNyBA
QCBPQkpDX0NMQVNTIE5TRGljdGlvbmFyeTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFz
cyBEb2N1bWVudDsKIGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBGbG9hdFJlY3Q7CiBjbGFzcyBIaXRU
ZXN0UmVzdWx0OwpAQCAtNjEsNiArNjIsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIFJldGFpblB0cjxEREFjdGlvbkNvbnRleHQ+IGRldGVjdEl0ZW1Bcm91bmRIaXRUZXN0
UmVzdWx0KGNvbnN0IEhpdFRlc3RSZXN1bHQmLCBGbG9hdFJlY3QmIGRldGVjdGVkRGF0YUJvdW5k
aW5nQm94LCBSZWZQdHI8UmFuZ2U+JiBkZXRlY3RlZERhdGFSYW5nZSk7CiAjZW5kaWYKICAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgTlNBcnJheSAqZGV0ZWN0Q29udGVudEluUmFuZ2UoUmVmUHRy
PFJhbmdlPiYgY29udGV4dFJhbmdlLCBEYXRhRGV0ZWN0b3JUeXBlcywgTlNEaWN0aW9uYXJ5ICpj
b250ZXh0KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCByZW1vdmVEYXRhRGV0ZWN0
ZWRMaW5rc0luRG9jdW1lbnQoRG9jdW1lbnQmKTsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQog
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIGNhbkJlUHJlc2VudGVkQnlEYXRhRGV0ZWN0
b3JzKGNvbnN0IFVSTCYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIGlzRGF0YURl
dGVjdG9yTGluayhFbGVtZW50Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2NvY29hL0RhdGFEZXRlY3Rpb24ubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0Rh
dGFEZXRlY3Rpb24ubW0KaW5kZXggYzk5OWRkNzE2Nzk2NGUzMWE2N2JhNGU2ODA5OWZiYWM1MGM1
N2JiYy4uNzhlZWE5MTg2YTY2YTI3NjlhMmM5YTFhOWE5MmJjNGE4M2QyOTQ1MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EYXRhRGV0ZWN0aW9uLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5tbQpAQCAtNDI5LDYgKzQy
OSwxNiBAQCBzdGF0aWMgaW5saW5lIENGQ29tcGFyaXNvblJlc3VsdCBxdWVyeU9mZnNldENvbXBh
cmUoRERRdWVyeU9mZnNldCBvMSwgRERRdWVyeU9mZgogICAgIHJldHVybiBrQ0ZDb21wYXJlRXF1
YWxUbzsKIH0KIAordm9pZCBEYXRhRGV0ZWN0aW9uOjpyZW1vdmVEYXRhRGV0ZWN0ZWRMaW5rc0lu
RG9jdW1lbnQoRG9jdW1lbnQmIGRvY3VtZW50KQoreworICAgIFZlY3RvcjxSZWY8SFRNTEFuY2hv
ckVsZW1lbnQ+PiBhbGxBbmNob3JFbGVtZW50czsKKyAgICBmb3IgKGF1dG8mIGFuY2hvciA6IGRl
c2NlbmRhbnRzT2ZUeXBlPEhUTUxBbmNob3JFbGVtZW50Pihkb2N1bWVudCkpCisgICAgICAgIGFs
bEFuY2hvckVsZW1lbnRzLmFwcGVuZChhbmNob3IpOworCisgICAgZm9yIChhdXRvJiBhbmNob3Ig
OiBhbGxBbmNob3JFbGVtZW50cykKKyAgICAgICAgcmVtb3ZlUmVzdWx0TGlua3NGcm9tQW5jaG9y
KGFuY2hvci5nZXQoKSk7Cit9CisKIE5TQXJyYXkgKkRhdGFEZXRlY3Rpb246OmRldGVjdENvbnRl
bnRJblJhbmdlKFJlZlB0cjxSYW5nZT4mIGNvbnRleHRSYW5nZSwgRGF0YURldGVjdG9yVHlwZXMg
dHlwZXMsIE5TRGljdGlvbmFyeSAqY29udGV4dCkKIHsKICAgICBSZXRhaW5QdHI8RERTY2FubmVy
UmVmPiBzY2FubmVyID0gYWRvcHRDRihzb2Z0TGlua19EYXRhRGV0ZWN0b3JzQ29yZV9ERFNjYW5u
ZXJDcmVhdGUoRERTY2FubmVyVHlwZVN0YW5kYXJkLCAwLCBudWxscHRyKSk7CkBAIC02NDcsMTAg
KzY1NywxNiBAQCBOU0FycmF5ICpEYXRhRGV0ZWN0aW9uOjpkZXRlY3RDb250ZW50SW5SYW5nZShS
ZWZQdHI8UmFuZ2U+JiBjb250ZXh0UmFuZ2UsIERhdGFEZQogfQogCiAjZWxzZQorCiBOU0FycmF5
ICpEYXRhRGV0ZWN0aW9uOjpkZXRlY3RDb250ZW50SW5SYW5nZShSZWZQdHI8UmFuZ2U+JiwgRGF0
YURldGVjdG9yVHlwZXMsIE5TRGljdGlvbmFyeSAqKQogewogICAgIHJldHVybiBuaWw7CiB9CisK
K3ZvaWQgRGF0YURldGVjdGlvbjo6cmVtb3ZlRGF0YURldGVjdGVkTGlua3NJbkRvY3VtZW50KERv
Y3VtZW50JikKK3sKK30KKwogI2VuZGlmCiAKIGNvbnN0IFN0cmluZyYgRGF0YURldGVjdGlvbjo6
ZGF0YURldGVjdG9yVVJMUHJvdG9jb2woKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3Jp
cHRzL3dlYmtpdC9tZXNzYWdlcy5weSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVz
c2FnZXMucHkKaW5kZXggMDBjOGYxNzNmMTdlNDJhMjAyMjFhYzRmYTYyMjAzYTZkOThhZGIzZS4u
Zjg2ZDhjZTk2ZDMwYmNiNTk2Yzg0MTRhNzU0YTJiMjdmNDE1YWNhZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQorKysgYi9Tb3VyY2UvV2ViS2l0
L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CkBAIC01NjYsNyArNTY2LDEwIEBAIGRlZiBnZW5l
cmF0ZV9tZXNzYWdlX2hhbmRsZXIoZmlsZSk6CiAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5h
cHBlbmQoJyAgICBzdGQ6Om9wdGlvbmFsPCVzPiAlcztcbicgJSAoeC50eXBlLCB4Lm5hbWUpKQog
ICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgZGVjb2RlciA+PiAlcztcbicg
JSB4Lm5hbWUpCiAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBpZiAoISVz
KSB7XG4gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpO1xuICAgICAgICByZXR1cm47XG4gICAg
fVxuJyAlIHgubmFtZSkKLSAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgY29tcGxl
dGlvbkhhbmRsZXIoV1RGTW92ZSgqJXMpKTtcbn1cblxuJyAlICgnLCAqJy5qb2luKHgubmFtZSBm
b3IgeCBpbiBtZXNzYWdlLnJlcGx5X3BhcmFtZXRlcnMpKSkKKyAgICAgICAgICAgICAgICBpZiBs
ZW4obWVzc2FnZS5yZXBseV9wYXJhbWV0ZXJzKToKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0
LmFwcGVuZCgnICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoKiVzKSk7XG59XG5cbicgJSAo
JywgKicuam9pbih4Lm5hbWUgZm9yIHggaW4gbWVzc2FnZS5yZXBseV9wYXJhbWV0ZXJzKSkpCisg
ICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgn
ICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7XG59XG5cbicpCiAgICAgICAgICAgICAgICAgcmVzdWx0
LmFwcGVuZCgndm9pZCAlczo6Y2FuY2VsUmVwbHkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCglcyk+
JiYgY29tcGxldGlvbkhhbmRsZXIpXG57XG4gICAgY29tcGxldGlvbkhhbmRsZXIoJyAlIG1vdmVf
cGFyYW1ldGVycykKICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcsICcuam9pbihbJ3sg
fScgZm9yIHggaW4gbWVzc2FnZS5yZXBseV9wYXJhbWV0ZXJzXSkpCiAgICAgICAgICAgICAgICAg
cmVzdWx0LmFwcGVuZCgnKTtcbn1cblxuJykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IDgzNjllMzM5YzI4NWMyNTgzMjExYTI2YmM0ZDFh
MzRiYTFhNTI5NzEuLjViMjc3YjI4MTg2MDZhZTJiNTAxZTM5ZmY0ZGM0NjZjZjRmZTYwMmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAt
NTQyMywxMCArNTQyMywzNSBAQCAtICh2b2lkKV9zZXRQYWdlTXV0ZWQ6KF9XS01lZGlhTXV0ZWRT
dGF0ZSltdXRlZFN0YXRlCiAgICAgX3BhZ2UtPnNldE11dGVkKGNvcmVTdGF0ZSk7CiB9CiAKKy0g
KHZvaWQpX3JlbW92ZURhdGFEZXRlY3RlZExpbmtzOihkaXNwYXRjaF9ibG9ja190KWNvbXBsZXRp
b24KK3sKKyNpZiBFTkFCTEUoREFUQV9ERVRFQ1RJT04pCisgICAgX3BhZ2UtPnJlbW92ZURhdGFE
ZXRlY3RlZExpbmtzKFtjb21wbGV0aW9uID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb24pXSB7Cisg
ICAgICAgIGlmIChjb21wbGV0aW9uKQorICAgICAgICAgICAgY29tcGxldGlvbigpOworICAgIH0p
OworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oY29tcGxldGlvbik7CisjZW5kaWYKK30KKwogI3By
YWdtYSBtYXJrIGlPUy1zcGVjaWZpYyBtZXRob2RzCiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQogCistICh2b2lkKV9kZXRlY3REYXRhV2l0aFR5cGVzOihXS0RhdGFEZXRlY3RvclR5cGVzKXR5
cGVzIGNvbXBsZXRpb25IYW5kbGVyOihkaXNwYXRjaF9ibG9ja190KWNvbXBsZXRpb24KK3sKKyNp
ZiBFTkFCTEUoREFUQV9ERVRFQ1RJT04pCisgICAgX3BhZ2UtPmRldGVjdERhdGFJbkFsbEZyYW1l
cyhmcm9tV0tEYXRhRGV0ZWN0b3JUeXBlcyh0eXBlcyksIFtjb21wbGV0aW9uID0gbWFrZUJsb2Nr
UHRyKGNvbXBsZXRpb24pXSB7CisgICAgICAgIGlmIChjb21wbGV0aW9uKQorICAgICAgICAgICAg
Y29tcGxldGlvbigpOworICAgIH0pOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0odHlwZXMpOwor
ICAgIFVOVVNFRF9QQVJBTShjb21wbGV0aW9uKTsKKyNlbmRpZgorfQorCiAjaWYgRU5BQkxFKEZV
TExTQ1JFRU5fQVBJKQogLSAodm9pZClyZW1vdmVGcm9tU3VwZXJ2aWV3CiB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaAppbmRl
eCAxMzNhM2U3MmFmZjMzNGU1ZjYzYjkyZjcxYTlhMGE2MDg4MTU5Nzk2Li41OTY1MDIzMGUxZGRl
MzdkYWVjYzNlY2JjOTE0ZDQ4ZWY5YjMxMjZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKQEAgLTI3LDYgKzI3LDcgQEAK
IAogI2lmIFdLX0FQSV9FTkFCTEVECiAKKyNpbXBvcnQgPFdlYktpdC9XS0RhdGFEZXRlY3RvclR5
cGVzLmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLQWN0aXZhdGVkRWxlbWVudEluZm8uaD4KICNpbXBv
cnQgPFdlYktpdC9fV0tBdHRhY2htZW50Lmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLRmluZE9wdGlv
bnMuaD4KQEAgLTE5Myw2ICsxOTQsOCBAQCB0eXBlZGVmIE5TX09QVElPTlMoTlNVSW50ZWdlciwg
X1dLUmVjdEVkZ2UpIHsKIC0gKHZvaWQpX3Nob3dTYWZlQnJvd3NpbmdXYXJuaW5nV2l0aFRpdGxl
OihOU1N0cmluZyAqKXRpdGxlIHdhcm5pbmc6KE5TU3RyaW5nICopd2FybmluZyBkZXRhaWxzOihO
U0F0dHJpYnV0ZWRTdHJpbmcgKilkZXRhaWxzIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKEJP
T0wpKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEp
LCBpb3MoV0tfSU9TX1RCQSkpOwogCiAtICh2b2lkKV9pc0pJVEVuYWJsZWQ6KHZvaWQoXikoQk9P
TCkpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSks
IGlvcyhXS19JT1NfVEJBKSk7CistICh2b2lkKV9yZW1vdmVEYXRhRGV0ZWN0ZWRMaW5rczooZGlz
cGF0Y2hfYmxvY2tfdCljb21wbGV0aW9uIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19U
QkEpLCBpb3MoV0tfSU9TX1RCQSkpOworCiAtIChJQkFjdGlvbilfYWxpZ25DZW50ZXI6KGlkKXNl
bmRlciBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEp
KTsKIC0gKElCQWN0aW9uKV9hbGlnbkp1c3RpZmllZDooaWQpc2VuZGVyIFdLX0FQSV9BVkFJTEFC
TEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogLSAoSUJBY3Rpb24pX2Fs
aWduTGVmdDooaWQpc2VuZGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBp
b3MoV0tfSU9TX1RCQSkpOwpAQCAtMjE2LDYgKzIxOSw4IEBAIHR5cGVkZWYgTlNfT1BUSU9OUyhO
U1VJbnRlZ2VyLCBfV0tSZWN0RWRnZSkgewogLSAodm9pZClfc2V0Rm9udFNpemU6KENHRmxvYXQp
Zm9udFNpemUgc2VuZGVyOihpZClzZW5kZXIgV0tfQVBJX0FWQUlMQUJMRShpb3MoV0tfSU9TX1RC
QSkpOwogLSAodm9pZClfc2V0VGV4dENvbG9yOihVSUNvbG9yICopY29sb3Igc2VuZGVyOihpZClz
ZW5kZXIgV0tfQVBJX0FWQUlMQUJMRShpb3MoV0tfSU9TX1RCQSkpOwogCistICh2b2lkKV9kZXRl
Y3REYXRhV2l0aFR5cGVzOihXS0RhdGFEZXRlY3RvclR5cGVzKXR5cGVzIGNvbXBsZXRpb25IYW5k
bGVyOihkaXNwYXRjaF9ibG9ja190KWNvbXBsZXRpb24gV0tfQVBJX0FWQUlMQUJMRShpb3MoV0tf
SU9TX1RCQSkpOworCiAvLyBERVJFQ0FURUQ6IFRoZSBzZXR0ZXJzIG9mIHRoZSB0aHJlZSBmb2xs
b3dpbmcgZnVuY3Rpb24gYXJlIGRlcHJlY2F0ZWQsIHBsZWFzZSB1c2Ugb3ZlcnJpZGVMYXlvdXRQ
YXJhbWV0ZXJzLgogLy8gRGVmaW5lIHRoZSBzbWFsbGVzdCBzaXplIGEgcGFnZSB0YWtlIHdpdGgg
YSByZWd1bGFyIHZpZXdwb3J0LgogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBDR1Np
emUgX21pbmltdW1MYXlvdXRTaXplT3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcAppbmRleCAxMTEwOWRkNTE2ZDc4OWMzODVjOTFmZjgxNjY2YzkyNmQ5NWRm
ZmQ2Li45ZmUzMTdkMmVlMDgwYmY0MmUyYjk1NmZhZjFlOWI3MjA3NDYyNTVjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTgyNDMsNiArODI0MywyMCBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6dXBkYXRlQ3VycmVudE1vZGlmaWVyU3RhdGUoKQogI2VuZGlmCiB9
CiAKKyNpZiBFTkFCTEUoREFUQV9ERVRFQ1RJT04pCisKK3ZvaWQgV2ViUGFnZVByb3h5OjpkZXRl
Y3REYXRhSW5BbGxGcmFtZXMoV2ViQ29yZTo6RGF0YURldGVjdG9yVHlwZXMgdHlwZXMsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBtX3Byb2Nl
c3MtPmNvbm5lY3Rpb24oKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpE
ZXRlY3REYXRhSW5BbGxGcmFtZXMoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHR5cGVzKSksIFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpLCBtX3BhZ2VJRCk7Cit9CisKK3ZvaWQgV2ViUGFnZVByb3h5
OjpyZW1vdmVEYXRhRGV0ZWN0ZWRMaW5rcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCit7CisgICAgbV9wcm9jZXNzLT5jb25uZWN0aW9uKCktPnNlbmRXaXRo
QXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6UmVtb3ZlRGF0YURldGVjdGVkTGlua3MoKSwg
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIG1fcGFnZUlEKTsKK30KKworI2VuZGlmCisKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdAogCiAjdW5kZWYgTUVSR0VfV0hFRUxfRVZFTlRTCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDA3MTc3MmM4ZDdjNTBmNWIwZWNjZjA1
NWE5YmUxOGU2YmVkYTE3NzYuLjUyMjUzOTU0N2JiY2JlYmQ2NWZjY2M3ZTIwZDc5NjhmYzBkZTcx
NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0zNjIsNiArMzYy
LDggQEAgcHVibGljOgogCiAjaWYgRU5BQkxFKERBVEFfREVURUNUSU9OKQogICAgIE5TQXJyYXkg
KmRhdGFEZXRlY3Rpb25SZXN1bHRzKCkgeyByZXR1cm4gbV9kYXRhRGV0ZWN0aW9uUmVzdWx0cy5n
ZXQoKTsgfQorICAgIHZvaWQgZGV0ZWN0RGF0YUluQWxsRnJhbWVzKFdlYkNvcmU6OkRhdGFEZXRl
Y3RvclR5cGVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgcmVtb3Zl
RGF0YURldGVjdGVkTGlua3MoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICNlbmRpZgog
ICAgICAgICAKICNpZiBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKSAmJiBQTEFURk9STShDT0NPQSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggNGFh
ZTE0ZjE3Mzg3MDAzMGEyNzM0M2I5MGJkMzFhMDgzMWExMjFiYy4uNzU5YTJkM2UzMmMxNjMwNzZh
YTQzNDk0YzY4MWZkMDI0YjQxYTIwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTMzODUsMTMgKzMzODUsNDQgQEAgdm9pZCBXZWJQYWdlOjp1
cGRhdGVQcmVmZXJlbmNlcyhjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9yZSkKIH0KIAog
I2lmIEVOQUJMRShEQVRBX0RFVEVDVElPTikKKwogdm9pZCBXZWJQYWdlOjpzZXREYXRhRGV0ZWN0
aW9uUmVzdWx0cyhOU0FycmF5ICpkZXRlY3Rpb25SZXN1bHRzKQogewogICAgIERhdGFEZXRlY3Rp
b25SZXN1bHQgZGF0YURldGVjdGlvblJlc3VsdDsKICAgICBkYXRhRGV0ZWN0aW9uUmVzdWx0LnJl
c3VsdHMgPSBkZXRlY3Rpb25SZXN1bHRzOwogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6U2V0RGF0YURldGVjdGlvblJlc3VsdChkYXRhRGV0ZWN0aW9uUmVzdWx0KSk7CiB9Ci0jZW5k
aWYKKwordm9pZCBXZWJQYWdlOjpyZW1vdmVEYXRhRGV0ZWN0ZWRMaW5rcyhNZXNzYWdlczo6V2Vi
UGFnZTo6UmVtb3ZlRGF0YURldGVjdGVkTGlua3M6OkFzeW5jUmVwbHkmJiByZXBseSkKK3sKKyAg
ICBmb3IgKGF1dG8gZnJhbWUgPSBtYWtlUmVmUHRyKCZtX3BhZ2UtPm1haW5GcmFtZSgpKTsgZnJh
bWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoKSkgeworICAgICAgICBhdXRv
IGRvY3VtZW50ID0gbWFrZVJlZlB0cihmcmFtZS0+ZG9jdW1lbnQoKSk7CisgICAgICAgIGlmICgh
ZG9jdW1lbnQpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBEYXRhRGV0ZWN0aW9u
OjpyZW1vdmVEYXRhRGV0ZWN0ZWRMaW5rc0luRG9jdW1lbnQoKmRvY3VtZW50KTsKKyAgICAgICAg
ZnJhbWUtPnNldERhdGFEZXRlY3Rpb25SZXN1bHRzKG51bGxwdHIpOworICAgIH0KKyAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNldERhdGFEZXRlY3Rpb25SZXN1bHQoeyB9KSk7Cisg
ICAgcmVwbHkoKTsKK30KKwordm9pZCBXZWJQYWdlOjpkZXRlY3REYXRhSW5BbGxGcmFtZXModWlu
dDY0X3QgdHlwZXMsIE1lc3NhZ2VzOjpXZWJQYWdlOjpEZXRlY3REYXRhSW5BbGxGcmFtZXM6OkFz
eW5jUmVwbHkmJiByZXBseSkKK3sKKyAgICBhdXRvIGRhdGFEZXRlY3RvclR5cGVzID0gc3RhdGlj
X2Nhc3Q8V2ViQ29yZTo6RGF0YURldGVjdG9yVHlwZXM+KHR5cGVzKTsKKyAgICBmb3IgKGF1dG8g
ZnJhbWUgPSBtYWtlUmVmUHRyKCZtX3BhZ2UtPm1haW5GcmFtZSgpKTsgZnJhbWU7IGZyYW1lID0g
ZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoKSkgeworICAgICAgICBhdXRvIGRvY3VtZW50ID0g
bWFrZVJlZlB0cihmcmFtZS0+ZG9jdW1lbnQoKSk7CisgICAgICAgIGlmICghZG9jdW1lbnQpCisg
ICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gUmFu
Z2U6OmNyZWF0ZSgqZG9jdW1lbnQsIFBvc2l0aW9uIHsgZG9jdW1lbnQuZ2V0KCksIFBvc2l0aW9u
OjpQb3NpdGlvbklzQmVmb3JlQ2hpbGRyZW4gfSwgUG9zaXRpb24geyBkb2N1bWVudC5nZXQoKSwg
UG9zaXRpb246OlBvc2l0aW9uSXNBZnRlckNoaWxkcmVuIH0pOworICAgICAgICBmcmFtZS0+c2V0
RGF0YURldGVjdGlvblJlc3VsdHMoRGF0YURldGVjdGlvbjo6ZGV0ZWN0Q29udGVudEluUmFuZ2Uo
cmFuZ2UsIGRhdGFEZXRlY3RvclR5cGVzLCBtX2RhdGFEZXRlY3Rpb25Db250ZXh0LmdldCgpKSk7
CisgICAgfQorICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2V0RGF0YURldGVjdGlv
blJlc3VsdCh7IG1fcGFnZS0+bWFpbkZyYW1lKCkuZGF0YURldGVjdGlvblJlc3VsdHMoKSB9KSk7
CisgICAgcmVwbHkoKTsKK30KKworI2VuZGlmIC8vIEVOQUJMRShEQVRBX0RFVEVDVElPTikKIAog
I2lmIFBMQVRGT1JNKENPQ09BKQogdm9pZCBXZWJQYWdlOjp3aWxsQ29tbWl0TGF5ZXJUcmVlKFJl
bW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uJiBsYXllclRyYW5zYWN0aW9uKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IDU3NTMyOTg0ODk1OTAzOTQ0MGZh
MWFiMTdmYjcxMDY1NTgzZTg3YTguLjM4MmQxZjRhYTMxZjdkMjgyZDJlODcwZDY5ODViZWE5YmNk
N2NjNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAg
LTQ4LDYgKzQ4LDcgQEAKICNpbmNsdWRlICJTaGFyZWRNZW1vcnkuaCIKICNpbmNsdWRlICJVc2Vy
RGF0YS5oIgogI2luY2x1ZGUgIldlYkJhY2tGb3J3YXJkTGlzdFByb3h5LmgiCisjaW5jbHVkZSAi
V2ViUGFnZU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViVVJMU2NoZW1lSGFuZGxlci5oIgogI2lu
Y2x1ZGUgIldlYlVzZXJDb250ZW50Q29udHJvbGxlci5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0luc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oPgpAQCAtOTIsNyArOTMsNiBAQAogCiAjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbmNsdWRlICJHZXN0dXJlVHlwZXMuaCIKLSNpbmNsdWRl
ICJXZWJQYWdlTWVzc2FnZXMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0ludFBvaW50SGFzaC5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvVmlld3BvcnRDb25maWd1cmF0aW9uLmg+CiAjZW5kaWYKQEAgLTEw
Nyw2ICsxMDcsMTAgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtVG91Y2hFdmVudC5oPgog
I2VuZGlmCiAKKyNpZiBFTkFCTEUoREFUQV9ERVRFQ1RJT04pCisjaW5jbHVkZSA8V2ViQ29yZS9E
YXRhRGV0ZWN0aW9uLmg+CisjZW5kaWYKKwogI2lmIEVOQUJMRShNQUNfR0VTVFVSRV9FVkVOVFMp
CiAjaW5jbHVkZSA8V2ViS2l0QWRkaXRpb25zL1BsYXRmb3JtR2VzdHVyZUV2ZW50TWFjLmg+CiAj
ZW5kaWYKQEAgLTk5Miw2ICs5OTYsOCBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoREFUQV9ERVRF
Q1RJT04pCiAgICAgdm9pZCBzZXREYXRhRGV0ZWN0aW9uUmVzdWx0cyhOU0FycmF5ICopOworICAg
IHZvaWQgZGV0ZWN0RGF0YUluQWxsRnJhbWVzKHVpbnQ2NF90LCBNZXNzYWdlczo6V2ViUGFnZTo6
RGV0ZWN0RGF0YUluQWxsRnJhbWVzOjpBc3luY1JlcGx5JiYpOworICAgIHZvaWQgcmVtb3ZlRGF0
YURldGVjdGVkTGlua3MoTWVzc2FnZXM6OldlYlBhZ2U6OlJlbW92ZURhdGFEZXRlY3RlZExpbmtz
OjpBc3luY1JlcGx5JiYpOwogI2VuZGlmCiAKICAgICB1bnNpZ25lZCBleHRlbmRJbmNyZW1lbnRh
bFJlbmRlcmluZ1N1cHByZXNzaW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCA4YjI5NmNlMDBkNDQyNTlkNGU1
YjdhZGI5Y2I0MTUyMjNmOWRkOThmLi4xNDNkNzA4ZDAxYTViNTM5ZDdmZmRiM2MzODllZDAzNjNi
M2UwYjJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UubWVzc2FnZXMuaW4KQEAgLTE5Myw2ICsxOTMsMTEgQEAgbWVzc2FnZXMgLT4gV2ViUGFn
ZSBMZWdhY3lSZWNlaXZlciB7CiAgICAgUGVyZm9ybURpY3Rpb25hcnlMb29rdXBBdExvY2F0aW9u
KFdlYkNvcmU6OkZsb2F0UG9pbnQgcG9pbnQpCiAjZW5kaWYKIAorI2lmIEVOQUJMRShEQVRBX0RF
VEVDVElPTikKKyAgICBEZXRlY3REYXRhSW5BbGxGcmFtZXModWludDY0X3QgdHlwZXMpIC0+ICgp
IEFzeW5jCisgICAgUmVtb3ZlRGF0YURldGVjdGVkTGlua3MoKSAtPiAoKSBBc3luYworI2VuZGlm
CisKICNpZiBQTEFURk9STShNQUMpCiAgICAgUGVyZm9ybURpY3Rpb25hcnlMb29rdXBPZkN1cnJl
bnRTZWxlY3Rpb24oKQogI2VuZGlmCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29s
cy9DaGFuZ2VMb2cKaW5kZXggOWVlMTVjNGUwMmZhMDkzMTc2MzY1YzEyMzg2ODRiOWJmZGEyMWVj
Mi4uNGFkNTM1MWZmNDQ5NDlhN2E1OTBmMDdhMjBhMzg4NzY0OGU4ZDc2OCAxMDA2NDQKLS0tIGEv
VG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisy
MDE4LTExLTIzICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAg
ICAgIFtDb2NvYV0gQWRkIFdLV2ViVmlldyBTUEkgdG8gdHJpZ2dlciBhbmQgcmVtb3ZlIGRhdGEg
ZGV0ZWN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xOTE5MTgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM2MTg1MDUxPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IFRpbSBIb3J0b24uCisKKyAgICAgICAgQWRkIGFuIEFQSSB0ZXN0IHRvIGV4ZXJj
aXNlIHRoZSBuZXcgV2ViS2l0IFNQSS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvRGF0YURl
dGVjdG9yc0NvcmVTUEkuaDogQWRkZWQuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2Vi
S2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9EYXRhRGV0ZWN0aW9uLm1tOgorICAgICAgICAoLVtXS1dlYlZp
ZXcgc3luY2hyb25vdXNseURldGVjdERhdGFXaXRoVHlwZXM6XSk6CisgICAgICAgICgtW1dLV2Vi
VmlldyBzeW5jaHJvbm91c2x5UmVtb3ZlRGF0YURldGVjdGVkTGlua3NdKToKKyAgICAgICAgKFRF
U1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tBdHRhY2ht
ZW50VGVzdHMubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKC1b
VGVzdFdLV2ViVmlldyB0YWdzSW5Cb2R5XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1Rlc3RXS1dl
YlZpZXcgZXhwZWN0RWxlbWVudFRhZ3NJbk9yZGVyOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtU
ZXN0V0tXZWJWaWV3IGV4cGVjdEVsZW1lbnRDb3VudDp0YWdOYW1lOl0pOiBEZWxldGVkLgorICAg
ICAgICAoLVtUZXN0V0tXZWJWaWV3IGV4cGVjdEVsZW1lbnRUYWc6dG9Db21lQmVmb3JlOl0pOiBE
ZWxldGVkLgorCisgICAgICAgIFJlbmFtZSB0aGlzIGZyb20gYC1leHBlY3RFbGVtZW50Q291bnQ6
dGFnTmFtZTpgIHRvIGAtZXhwZWN0RWxlbWVudENvdW50OnF1ZXJ5U2VsZWN0b3I6YC4KKworICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvZGF0YS1kZXRlY3RvcnMuaHRt
bDogQWRkZWQuCisKKyAgICAgICAgQWRkIGEgbmV3IHRlc3QgcGFnZSBjb250YWluaW5nIHNvbWUg
Y29udGVudCB0aGF0IGNhbiBiZSBkYXRhIGRldGVjdGVkLgorCisgICAgICAgICogVGVzdFdlYktp
dEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lmg6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9jb2Nv
YS9UZXN0V0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgdGFnc0luQm9keV0pOgor
ICAgICAgICAoLVtXS1dlYlZpZXcgZXhwZWN0RWxlbWVudFRhZ3NJbk9yZGVyOl0pOgorICAgICAg
ICAoLVtXS1dlYlZpZXcgZXhwZWN0RWxlbWVudENvdW50OnF1ZXJ5U2VsZWN0b3I6XSk6CisgICAg
ICAgICgtW1dLV2ViVmlldyBleHBlY3RFbGVtZW50VGFnOnRvQ29tZUJlZm9yZTpdKToKKworICAg
ICAgICBNb3ZlIHNvbWUgdGVzdGluZyBoZWxwZXIgZnVuY3Rpb25zIGZyb20gV0tBdHRhY2htZW50
VGVzdHMgdG8gYSB0ZXN0aW5nIGNhdGVnb3J5IG9uIFdLV2ViVmlldy4gVGhpcyBhbGxvd3MgdXMg
dG8KKyAgICAgICAgdXNlIGAtZXhwZWN0RWxlbWVudENvdW50OnF1ZXJ5U2VsZWN0b3I6YCBpbiB0
ZXN0cyBvdXRzaWRlIG9mIFdLQXR0YWNobWVudFRlc3RzLgorCisgICAgICAgICgtW1dLV2ViVmll
dyBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0Ol0pOgorICAgICAgICAoLVtXS1dlYlZpZXcg
b2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdFdpdGhVc2VyR2VzdHVyZTpdKToKKyAgICAgICAg
KC1bV0tXZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6XSk6CisKKyAgICAgICAg
TW92ZSBzb21lIGNvbW1vbiBoZWxwZXIgZnVuY3Rpb25zIGZyb20gVGVzdFdLV2ViVmlldyB0byBh
IHRlc3RpbmcgY2F0ZWdvcnkgb24gV0tXZWJWaWV3LgorCisgICAgICAgICgtW1Rlc3RXS1dlYlZp
ZXcgb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1b
VGVzdFdLV2ViVmlldyBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0V2l0aFVzZXJHZXN0dXJl
Ol0pOiBEZWxldGVkLgorICAgICAgICAoLVtUZXN0V0tXZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGlu
Z0phdmFTY3JpcHQ6XSk6IERlbGV0ZWQuCisKIDIwMTgtMTEtMjIgIFphbGFuIEJ1anRhcyAgPHph
bGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtJRkNdIE9mZnNldCBmb3JtYXR0aW5nIGNv
bnRleHQgcm9vdCBydW5zIHdpdGggaG9yaXpvbnRhbCBtYXJnaW5zLgpkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9EYXRhRGV0ZWN0b3JzQ29yZVNQSS5oIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9EYXRhRGV0ZWN0b3JzQ29yZVNQSS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYyOWI0MzY1ZmUyYWRmMzc5
ODhmNzAyYWRkNDRlMzdkYjVlMWExN2MKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL0RhdGFEZXRlY3RvcnNDb3JlU1BJLmgKQEAgLTAsMCArMSw0MiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKERBVEFfREVURUNUSU9OKQorCisjaW1wb3J0
IDxwYWwvc3BpL2NvY29hL0RhdGFEZXRlY3RvcnNDb3JlU1BJLmg+CisKKyNpZiAhVVNFKEFQUExF
X0lOVEVSTkFMX1NESykKKworQGludGVyZmFjZSBERFNjYW5uZXJSZXN1bHQgKFByaXZhdGUpCitA
cHJvcGVydHkgKHJlYWRvbmx5LCBub25hdG9taWMpIE5TU3RyaW5nICp2YWx1ZTsKK0Bwcm9wZXJ0
eSAocmVhZG9ubHksIG5vbmF0b21pYykgTlNTdHJpbmcgKnR5cGU7CitAcHJvcGVydHkgKHJlYWRv
bmx5LCBub25hdG9taWMpIEREUmVzdWx0Q2F0ZWdvcnkgY2F0ZWdvcnk7CitAZW5kCisKKyNlbmRp
ZiAvLyAhVVNFKEFQUExFX0lOVEVSTkFMX1NESykKKworI2VuZGlmIC8vIEVOQUJMRShEQVRBX0RF
VEVDVElPTikKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0
QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZWYwYmQwMDVhMjg3ZWY2YzZkOTk0
OTMxOWNiZjU0MTQ1NDI0MTU2My4uZGU2MmRmMDNkMGQ1NjA4ZDk4OGQxZDUwZmI3YjBhZDBiOTdm
ODBiZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0
QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTg1Miw2ICs4NTIsNyBAQAogCQlGNDZB
MDk1QTFFRDhBNkU2MDBENEFBNTUgLyogYXBwbGUuZ2lmIGluIENvcHkgUmVzb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0N0QzMEVCMUVEMjg2MTkwMDA0ODJFMSAv
KiBhcHBsZS5naWYgKi87IH07CiAJCUY0NkEwOTVCMUVEOEE2RTYwMEQ0QUE1NSAvKiBnaWYtYW5k
LWZpbGUtaW5wdXQuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGNDdEMzBFRDFFRDI4QTZDMDAwNDgyRTEgLyogZ2lmLWFuZC1maWxlLWlu
cHV0Lmh0bWwgKi87IH07CiAJCUY0NzcyODk5MUU0QUUzQzEwMDdBQkY2QSAvKiBmdWxsLXBhZ2Ut
Y29udGVudGVkaXRhYmxlLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRjQ3NzI4OTgxRTRBRTNBRDAwN0FCRjZBIC8qIGZ1bGwtcGFnZS1j
b250ZW50ZWRpdGFibGUuaHRtbCAqLzsgfTsKKwkJRjQ3REZCMjYyMUE4NzhERjAwMDIxRkI2IC8q
IGRhdGEtZGV0ZWN0b3JzLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRjQ3REZCMjQyMUE4NzA0QTAwMDIxRkI2IC8qIGRhdGEtZGV0ZWN0
b3JzLmh0bWwgKi87IH07CiAJCUY0ODExRTU5MjE5NDBCREUwMEE1RTBGRCAvKiBXS1dlYlZpZXdF
ZGl0QWN0aW9ucy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEY0ODExRTU4MjE5NDBCNDQwMEE1RTBGRCAvKiBXS1dlYlZpZXdFZGl0QWN0aW9ucy5tbSAq
LzsgfTsKIAkJRjQ4NTZDQTMxRTY0OUVBODAwOUQ3RUU3IC8qIGF0dGFjaG1lbnQtZWxlbWVudC5o
dG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEY0ODU2Q0EyMUU2NDk4QTgwMDlEN0VFNyAvKiBhdHRhY2htZW50LWVsZW1lbnQuaHRtbCAqLzsg
fTsKIAkJRjQ4NkIxRDAxRjY3OTUyMzAwRjM0QkREIC8qIERhdGFUcmFuc2Zlci1zZXREcmFnSW1h
Z2UuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGNDg2QjFDRjFGNjc5NEZGMDBGMzRCREQgLyogRGF0YVRyYW5zZmVyLXNldERyYWdJbWFn
ZS5odG1sICovOyB9OwpAQCAtMTAxOSw2ICsxMDIwLDcgQEAKIAkJCQk3QUVBRDQ4MTFFMjAxMjI3
MDA0MTZFRkUgLyogQ3Jvc3NQYXJ0aXRpb25GaWxlU2NoZW1lQWNjZXNzLmh0bWwgaW4gQ29weSBS
ZXNvdXJjZXMgKi8sCiAJCQkJRjRBQjU3OEExRjY1MTY1NDAwREIwREExIC8qIGN1c3RvbS1kcmFn
Z2FibGUtZGl2Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJMjkwRjQyNzUxNzJBMjIx
QzAwOTM5RkYwIC8qIGN1c3RvbS1wcm90b2NvbC1zeW5jLXhoci5odG1sIGluIENvcHkgUmVzb3Vy
Y2VzICovLAorCQkJCUY0N0RGQjI2MjFBODc4REYwMDAyMUZCNiAvKiBkYXRhLWRldGVjdG9ycy5o
dG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCUY0ODZCMUQwMUY2Nzk1MjMwMEYzNEJERCAv
KiBEYXRhVHJhbnNmZXItc2V0RHJhZ0ltYWdlLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJ
CQkJRjQ1N0E5RDYyMDJENjhBRjAwRjdFOUQ1IC8qIERhdGFUcmFuc2Zlci5odG1sIGluIENvcHkg
UmVzb3VyY2VzICovLAogCQkJCUY0NTEyRTEzMUY2MEM0NDYwMEJCMzY5RSAvKiBEYXRhVHJhbnNm
ZXJJdGVtLWdldEFzRW50cnkuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKQEAgLTIxNDcsNiAr
MjE0OSw4IEBACiAJCUY0NzcyODk4MUU0QUUzQUQwMDdBQkY2QSAvKiBmdWxsLXBhZ2UtY29udGVu
dGVkaXRhYmxlLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAiZnVsbC1wYWdlLWNv
bnRlbnRlZGl0YWJsZS5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQ3RDMw
RUIxRUQyODYxOTAwMDQ4MkUxIC8qIGFwcGxlLmdpZiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGltYWdlLmdpZjsgcGF0aCA9IGFwcGxlLmdpZjsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQ3RDMwRUQxRUQyOEE2QzAwMDQ4MkUxIC8qIGdp
Zi1hbmQtZmlsZS1pbnB1dC5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gImdpZi1hbmQtZmlsZS1pbnB1dC5odG1s
Ijsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjQ3REZCMjQyMUE4NzA0QTAwMDIxRkI2
IC8qIGRhdGEtZGV0ZWN0b3JzLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAiZGF0
YS1kZXRlY3RvcnMuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0N0RGQjI3
MjFBODg1RTcwMDAyMUZCNiAvKiBEYXRhRGV0ZWN0b3JzQ29yZVNQSS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBEYXRhRGV0ZWN0b3JzQ29yZVNQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlG
NDgxMUU1ODIxOTQwQjQ0MDBBNUUwRkQgLyogV0tXZWJWaWV3RWRpdEFjdGlvbnMubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS1dlYlZpZXdFZGl0QWN0aW9ucy5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQ4NTZDQTIxRTY0OThBODAwOUQ3RUU3
IC8qIGF0dGFjaG1lbnQtZWxlbWVudC5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0g
ImF0dGFjaG1lbnQtZWxlbWVudC5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RjQ4NkIxQ0YxRjY3OTRGRjAwRjM0QkREIC8qIERhdGFUcmFuc2Zlci1zZXREcmFnSW1hZ2UuaHRt
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJEYXRhVHJhbnNmZXItc2V0RHJhZ0ltYWdl
Lmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjMxMSw2ICsyMzE1LDcgQEAK
IAkJCQlBMTNFQkI0NDFCODczMzJCMDAwOTcxMTAgLyogV2ViUHJvY2Vzc1BsdWdJbiAqLywKIAkJ
CQlGNDUxN0I2ODIwNTRFMEFDMDBDMjY3MjEgLyogQ2xhc3NNZXRob2RTd2l6emxlci5oICovLAog
CQkJCUY0NTE3QjY5MjA1NEUwQUMwMEMyNjcyMSAvKiBDbGFzc01ldGhvZFN3aXp6bGVyLm1tICov
LAorCQkJCUY0N0RGQjI3MjFBODg1RTcwMDAyMUZCNiAvKiBEYXRhRGV0ZWN0b3JzQ29yZVNQSS5o
ICovLAogCQkJCUY0NjEyOEI0MjExQzg2MUEwMEQ5RkFEQiAvKiBEcmFnQW5kRHJvcFNpbXVsYXRv
ci5oICovLAogCQkJCUY0NEQwNjQ4MUYzOTYyRTMwMDFBMEUyOSAvKiBFZGl0aW5nVGVzdEhhcm5l
c3MuaCAqLywKIAkJCQlGNDREMDY0OTFGMzk2MkUzMDAxQTBFMjkgLyogRWRpdGluZ1Rlc3RIYXJu
ZXNzLm1tICovLApAQCAtMjc0MCw2ICsyNzQ1LDcgQEAKIAkJCQk5QjEwNTY0MjFGOTA0N0NDMDBE
NTU4M0YgLyogY29weS1odG1sLmh0bWwgKi8sCiAJCQkJOUI2MjYzMEIxRjhDMjUxMDAwN0VFMjlC
IC8qIGNvcHktdXJsLmh0bWwgKi8sCiAJCQkJRjRBQjU3ODkxRjY1MTY0QjAwREIwREExIC8qIGN1
c3RvbS1kcmFnZ2FibGUtZGl2Lmh0bWwgKi8sCisJCQkJRjQ3REZCMjQyMUE4NzA0QTAwMDIxRkI2
IC8qIGRhdGEtZGV0ZWN0b3JzLmh0bWwgKi8sCiAJCQkJRjQ4NkIxQ0YxRjY3OTRGRjAwRjM0QkRE
IC8qIERhdGFUcmFuc2Zlci1zZXREcmFnSW1hZ2UuaHRtbCAqLywKIAkJCQlGNDU3QTlCMzIwMkQ1
MzUzMDBGN0U5RDUgLyogRGF0YVRyYW5zZmVyLmh0bWwgKi8sCiAJCQkJRjQ1MTJFMTIxRjYwQzQz
NDAwQkIzNjlFIC8qIERhdGFUcmFuc2Zlckl0ZW0tZ2V0QXNFbnRyeS5odG1sICovLApkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9EYXRhRGV0ZWN0aW9u
Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9EYXRhRGV0ZWN0aW9u
Lm1tCmluZGV4IGJmM2M5NjZlODQ3MjA1Y2IwZmZiYTdhY2M2MjdlZDA0MmU5MmNiZTMuLjkzNTll
ZDAzNzMyZTYwODg0NjVkMjU5NWQxMjBmMzIyZjc0MDZiNjEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRGF0YURldGVjdGlvbi5tbQorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0RhdGFEZXRlY3Rpb24ubW0KQEAgLTI1
LDE0ICsyNSw0MyBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKKyNpbXBvcnQgIkRhdGFEZXRl
Y3RvcnNDb3JlU1BJLmgiCiAjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgogI2ltcG9ydCAi
VGVzdC5oIgogI2ltcG9ydCAiVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5oIgorI2ltcG9ydCAiVGVz
dFdLV2ViVmlldy5oIgogI2ltcG9ydCA8V2ViS2l0L1dlYktpdC5oPgogI2ltcG9ydCA8d3RmL1Jl
dGFpblB0ci5oPgogCiAjaWYgV0tfQVBJX0VOQUJMRUQgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
IAorQGludGVyZmFjZSBXS1dlYlZpZXcgKERhdGFEZXRlY3Rpb24pCistICh2b2lkKXN5bmNocm9u
b3VzbHlEZXRlY3REYXRhV2l0aFR5cGVzOihXS0RhdGFEZXRlY3RvclR5cGVzKXR5cGVzOworLSAo
dm9pZClzeW5jaHJvbm91c2x5UmVtb3ZlRGF0YURldGVjdGVkTGlua3M7CitAZW5kCisKK0BpbXBs
ZW1lbnRhdGlvbiBXS1dlYlZpZXcgKERhdGFEZXRlY3Rpb24pCisKKy0gKHZvaWQpc3luY2hyb25v
dXNseURldGVjdERhdGFXaXRoVHlwZXM6KFdLRGF0YURldGVjdG9yVHlwZXMpdHlwZXMKK3sKKyAg
ICBfX2Jsb2NrIGJvb2wgZG9uZSA9IGZhbHNlOworICAgIFtzZWxmIF9kZXRlY3REYXRhV2l0aFR5
cGVzOnR5cGVzIGNvbXBsZXRpb25IYW5kbGVyOl57CisgICAgICAgIGRvbmUgPSB0cnVlOworICAg
IH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7Cit9CisKKy0gKHZvaWQp
c3luY2hyb25vdXNseVJlbW92ZURhdGFEZXRlY3RlZExpbmtzCit7CisgICAgX19ibG9jayBib29s
IGRvbmUgPSBmYWxzZTsKKyAgICBbc2VsZiBfcmVtb3ZlRGF0YURldGVjdGVkTGlua3M6XnsKKyAg
ICAgICAgZG9uZSA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVu
KCZkb25lKTsKK30KKworQGVuZAorCiBzdGF0aWMgYm9vbCByYW5TY3JpcHQ7CiAKIEBpbnRlcmZh
Y2UgRGF0YURldGVjdGlvblVJRGVsZWdhdGUgOiBOU09iamVjdCA8V0tVSURlbGVnYXRlPgpAQCAt
OTcsNCArMTI2LDM5IEBAIFRFU1QoV2ViS2l0LCBESVNBQkxFRF9EYXRhRGV0ZWN0aW9uUmVmZXJl
bmNlRGF0ZSkKICAgICBleHBlY3RMaW5rQ291bnQod2ViVmlldy5nZXQoKSwgQCJ5ZXN0ZXJkYXkg
YXQgNlBNIiwgMSk7CiB9CiAKK1RFU1QoV2ViS2l0LCBBZGRBbmRSZW1vdmVEYXRhRGV0ZWN0b3Jz
KQoreworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBp
bml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1MDApXSk7CisgICAgW3dlYlZpZXcg
c3luY2hyb25vdXNseUxvYWRUZXN0UGFnZU5hbWVkOkAiZGF0YS1kZXRlY3RvcnMiXTsKKyAgICBb
d2ViVmlldyBleHBlY3RFbGVtZW50Q291bnQ6MCBxdWVyeVNlbGVjdG9yOkAiYVt4LWFwcGxlLWRh
dGEtZGV0ZWN0b3JzPXRydWVdIl07CisgICAgRVhQRUNUX0VRKDBVLCBbd2ViVmlldyBfZGF0YURl
dGVjdGlvblJlc3VsdHNdLmNvdW50KTsKKworICAgIGF1dG8gY2hlY2tEYXRhRGV0ZWN0aW9uUmVz
dWx0cyA9IFtdIChOU0FycmF5PEREU2Nhbm5lclJlc3VsdCAqPiAqcmVzdWx0cykgeworICAgICAg
ICBFWFBFQ1RfRVEoM1UsIHJlc3VsdHMuY291bnQpOworICAgICAgICBFWFBFQ1RfRVEoRERSZXN1
bHRDYXRlZ29yeVVua25vd24sIHJlc3VsdHNbMF0uY2F0ZWdvcnkpOworICAgICAgICBFWFBFQ1Rf
VFJVRShbcmVzdWx0c1swXS52YWx1ZSBjb250YWluc1N0cmluZzpAIisxLTIzNC01NjctODkwMCJd
KTsKKyAgICAgICAgRVhQRUNUX1RSVUUoW3Jlc3VsdHNbMF0udmFsdWUgY29udGFpbnNTdHJpbmc6
QCJodHRwczovL3d3dy5hcHBsZS5jb20iXSk7CisgICAgICAgIEVYUEVDVF9UUlVFKFtyZXN1bHRz
WzBdLnZhbHVlIGNvbnRhaW5zU3RyaW5nOkAiMiBBcHBsZSBQYXJrIFdheSwgQ3VwZXJ0aW5vIDk1
MDE0Il0pOworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoIlNpZ25hdHVyZUJsb2NrIiwgcmVzdWx0
c1swXS50eXBlKTsKKyAgICAgICAgRVhQRUNUX0VRKEREUmVzdWx0Q2F0ZWdvcnlDYWxlbmRhckV2
ZW50LCByZXN1bHRzWzFdLmNhdGVnb3J5KTsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKCJEYXRl
IiwgcmVzdWx0c1sxXS50eXBlKTsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKCJEZWNlbWJlciAy
MSwgMjAyMSIsIHJlc3VsdHNbMV0udmFsdWUpOworICAgICAgICBFWFBFQ1RfRVEoRERSZXN1bHRD
YXRlZ29yeU1pc2MsIHJlc3VsdHNbMl0uY2F0ZWdvcnkpOworICAgICAgICBFWFBFQ1RfV0tfU1RS
RVEoIkZsaWdodEluZm9ybWF0aW9uIiwgcmVzdWx0c1syXS50eXBlKTsKKyAgICAgICAgRVhQRUNU
X1dLX1NUUkVRKCJBQzc4MCIsIHJlc3VsdHNbMl0udmFsdWUpOworICAgIH07CisKKyAgICBbd2Vi
VmlldyBzeW5jaHJvbm91c2x5RGV0ZWN0RGF0YVdpdGhUeXBlczpXS0RhdGFEZXRlY3RvclR5cGVB
bGxdOworICAgIFt3ZWJWaWV3IGV4cGVjdEVsZW1lbnRDb3VudDo1IHF1ZXJ5U2VsZWN0b3I6QCJh
W3gtYXBwbGUtZGF0YS1kZXRlY3RvcnM9dHJ1ZV0iXTsKKyAgICBjaGVja0RhdGFEZXRlY3Rpb25S
ZXN1bHRzKFt3ZWJWaWV3IF9kYXRhRGV0ZWN0aW9uUmVzdWx0c10pOworCisgICAgW3dlYlZpZXcg
c3luY2hyb25vdXNseVJlbW92ZURhdGFEZXRlY3RlZExpbmtzXTsKKyAgICBbd2ViVmlldyBleHBl
Y3RFbGVtZW50Q291bnQ6MCBxdWVyeVNlbGVjdG9yOkAiYVt4LWFwcGxlLWRhdGEtZGV0ZWN0b3Jz
PXRydWVdIl07CisgICAgRVhQRUNUX0VRKDBVLCBbd2ViVmlldyBfZGF0YURldGVjdGlvblJlc3Vs
dHNdLmNvdW50KTsKKworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlEZXRlY3REYXRhV2l0aFR5
cGVzOldLRGF0YURldGVjdG9yVHlwZUFkZHJlc3MgfCBXS0RhdGFEZXRlY3RvclR5cGVQaG9uZU51
bWJlcl07CisgICAgW3dlYlZpZXcgZXhwZWN0RWxlbWVudENvdW50OjIgcXVlcnlTZWxlY3RvcjpA
ImFbeC1hcHBsZS1kYXRhLWRldGVjdG9ycz10cnVlXSJdOworICAgIGNoZWNrRGF0YURldGVjdGlv
blJlc3VsdHMoW3dlYlZpZXcgX2RhdGFEZXRlY3Rpb25SZXN1bHRzXSk7Cit9CisKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0F0dGFj
aG1lbnRUZXN0cy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tB
dHRhY2htZW50VGVzdHMubW0KaW5kZXggZTJjZTcyYTQzNTMzM2ZkZTA3MTAyZWFmN2Q4YzAwMmRh
MDk0ZDdjNS4uZDQ4ZjQzZWY3MjEyMWUyYjU5N2E4NzU3ODAzOWY3NzhlOTQ3ZjU3MCAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0F0dGFjaG1lbnRU
ZXN0cy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLQXR0
YWNobWVudFRlc3RzLm1tCkBAIC0yMTUsMzcgKzIxNSw2IEBAIHN0YXRpYyBOU0RhdGEgKnRlc3RQ
REZEYXRhKCkKIAogQGltcGxlbWVudGF0aW9uIFRlc3RXS1dlYlZpZXcgKEF0dGFjaG1lbnRUZXN0
aW5nKQogCi0tIChOU0FycmF5PE5TU3RyaW5nICo+ICopdGFnc0luQm9keQotewotICAgIHJldHVy
biBbc2VsZiBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiQXJyYXkuZnJvbShkb2N1bWVu
dC5ib2R5LmdldEVsZW1lbnRzQnlUYWdOYW1lKCcqJykpLm1hcChlID0+IGUudGFnTmFtZSkiXTsK
LX0KLQotLSAodm9pZClleHBlY3RFbGVtZW50VGFnc0luT3JkZXI6KE5TQXJyYXk8TlNTdHJpbmcg
Kj4gKil0YWdOYW1lcwotewotICAgIGF1dG8gcmVtYWluaW5nVGFncyA9IGFkb3B0TlMoW3RhZ05h
bWVzIG11dGFibGVDb3B5XSk7Ci0gICAgTlNBcnJheTxOU1N0cmluZyAqPiAqdGFnc0luQm9keSA9
IHNlbGYudGFnc0luQm9keTsKLSAgICBmb3IgKE5TU3RyaW5nICp0YWcgaW4gdGFnc0luQm9keS5y
ZXZlcnNlT2JqZWN0RW51bWVyYXRvcikgewotICAgICAgICBpZiAoW3RhZyBpc0VxdWFsVG9TdHJp
bmc6W3JlbWFpbmluZ1RhZ3MgbGFzdE9iamVjdF1dKQotICAgICAgICAgICAgW3JlbWFpbmluZ1Rh
Z3MgcmVtb3ZlTGFzdE9iamVjdF07Ci0gICAgICAgIGlmICghW3JlbWFpbmluZ1RhZ3MgY291bnRd
KQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIEVYUEVDVF9FUShbcmVtYWluaW5nVGFn
cyBjb3VudF0sIDBVKTsKLSAgICBpZiAoW3JlbWFpbmluZ1RhZ3MgY291bnRdKQotICAgICAgICBO
U0xvZyhAIkV4cGVjdGVkIHRvIGZpbmQgb3JkZXJlZCB0YWdzOiAlQCBpbjogJUAiLCB0YWdOYW1l
cywgdGFnc0luQm9keSk7Ci19Ci0KLS0gKHZvaWQpZXhwZWN0RWxlbWVudENvdW50OihOU0ludGVn
ZXIpY291bnQgdGFnTmFtZTooTlNTdHJpbmcgKil0YWdOYW1lCi17Ci0gICAgTlNTdHJpbmcgKnNj
cmlwdCA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiZG9jdW1lbnQucXVlcnlTZWxlY3Rv
ckFsbCgnJUAnKS5sZW5ndGgiLCB0YWdOYW1lXTsKLSAgICBFWFBFQ1RfRVEoY291bnQsIFtzZWxm
IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6c2NyaXB0XS5pbnRlZ2VyVmFsdWUpOwotfQot
Ci0tICh2b2lkKWV4cGVjdEVsZW1lbnRUYWc6KE5TU3RyaW5nICopdGFnTmFtZSB0b0NvbWVCZWZv
cmU6KE5TU3RyaW5nICopb3RoZXJUYWdOYW1lCi17Ci0gICAgW3NlbGYgZXhwZWN0RWxlbWVudFRh
Z3NJbk9yZGVyOkBbdGFnTmFtZSwgb3RoZXJUYWdOYW1lXV07Ci19Ci0KIC0gKF9XS0F0dGFjaG1l
bnQgKilzeW5jaHJvbm91c2x5SW5zZXJ0QXR0YWNobWVudFdpdGhGaWxlV3JhcHBlcjooTlNGaWxl
V3JhcHBlciAqKWZpbGVXcmFwcGVyIGNvbnRlbnRUeXBlOihOU1N0cmluZyAqKWNvbnRlbnRUeXBl
CiB7CiAgICAgX19ibG9jayBib29sIGRvbmUgPSBmYWxzZTsKQEAgLTgzMSw3ICs4MDAsNyBAQCBU
RVNUKFdLQXR0YWNobWVudFRlc3RzLCBJbnNlcnRGb2xkZXJBbmRGaWxlV2l0aFVua25vd25FeHRl
bnNpb24pCiAgICAgfQogCiAgICAgYXV0byBjaGVja0F0dGFjaG1lbnRDb25zaXN0ZW5jeSA9IFt3
ZWJWaWV3LCBmaWxlLCBmb2xkZXJdIChfV0tBdHRhY2htZW50ICpleHBlY3RlZEZpbGVBdHRhY2ht
ZW50LCBfV0tBdHRhY2htZW50ICpleHBlY3RlZEZvbGRlckF0dGFjaG1lbnQpIHsKLSAgICAgICAg
W3dlYlZpZXcgZXhwZWN0RWxlbWVudENvdW50OjIgdGFnTmFtZTpAIkFUVEFDSE1FTlQiXTsKKyAg
ICAgICAgW3dlYlZpZXcgZXhwZWN0RWxlbWVudENvdW50OjIgcXVlcnlTZWxlY3RvcjpAIkFUVEFD
SE1FTlQiXTsKICAgICAgICAgRVhQRUNUX1RSVUUoVVRUeXBlQ29uZm9ybXNUbygoX19icmlkZ2Ug
Q0ZTdHJpbmdSZWYpW3dlYlZpZXcgdmFsdWVPZkF0dHJpYnV0ZTpAInR5cGUiIGZvclF1ZXJ5U2Vs
ZWN0b3I6QCJhdHRhY2htZW50W3RpdGxlPWZvbGRlcl0iXSwga1VUVHlwZURpcmVjdG9yeSkpOwog
ICAgICAgICBFWFBFQ1RfVFJVRShVVFR5cGVDb25mb3Jtc1RvKChfX2JyaWRnZSBDRlN0cmluZ1Jl
Zilbd2ViVmlldyB2YWx1ZU9mQXR0cmlidXRlOkAidHlwZSIgZm9yUXVlcnlTZWxlY3RvcjpAImF0
dGFjaG1lbnRbdGl0bGVePXRlc3RdIl0sIGtVVFR5cGVEYXRhKSk7CiAgICAgICAgIEVYUEVDVF9X
S19TVFJFUShleHBlY3RlZEZpbGVBdHRhY2htZW50LnVuaXF1ZUlkZW50aWZpZXIsIFt3ZWJWaWV3
IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdh
dHRhY2htZW50W3RpdGxlXj10ZXN0XScpLnVuaXF1ZUlkZW50aWZpZXIiXSk7CkBAIC05MjgsNyAr
ODk3LDcgQEAgVEVTVChXS0F0dGFjaG1lbnRUZXN0cywgUmVtb3ZlTmV3bGluZXNCZWZvcmVQYXN0
ZWRJbWFnZSkKICAgICAgICAgW3dlYlZpZXcgX3N5bmNocm9ub3VzbHlFeGVjdXRlRWRpdENvbW1h
bmQ6QCJEZWxldGVCYWNrd2FyZCIgYXJndW1lbnQ6bmlsXTsKICAgICAgICAgW3dlYlZpZXcgX3N5
bmNocm9ub3VzbHlFeGVjdXRlRWRpdENvbW1hbmQ6QCJEZWxldGVCYWNrd2FyZCIgYXJndW1lbnQ6
bmlsXTsKICAgICAgICAgb2JzZXJ2ZXIuZXhwZWN0QXR0YWNobWVudFVwZGF0ZXMoQFsgXSwgQFsg
XSk7Ci0gICAgICAgIFt3ZWJWaWV3IGV4cGVjdEVsZW1lbnRDb3VudDowIHRhZ05hbWU6QCJCUiJd
OworICAgICAgICBbd2ViVmlldyBleHBlY3RFbGVtZW50Q291bnQ6MCBxdWVyeVNlbGVjdG9yOkAi
QlIiXTsKICAgICB9CiB9CiAKQEAgLTk3MSwxMyArOTQwLDEzIEBAIFRFU1QoV0tBdHRhY2htZW50
VGVzdHMsIE1vdmVQYXN0ZWRJbWFnZUJ5RHJhZ2dpbmcpCiAgICAgW3dlYlZpZXcgX2V4ZWN1dGVF
ZGl0Q29tbWFuZDpAIkluc2VydEhUTUwiIGFyZ3VtZW50OkAiPHN0cm9uZz50ZXh0PC9zdHJvbmc+
IiBjb21wbGV0aW9uOm5pbF07CiAgICAgW3dlYlZpZXcgX3N5bmNocm9ub3VzbHlFeGVjdXRlRWRp
dENvbW1hbmQ6QCJJbnNlcnRQYXJhZ3JhcGgiIGFyZ3VtZW50Om5pbF07CiAgICAgW3dlYlZpZXcg
ZXhwZWN0RWxlbWVudFRhZzpAIklNRyIgdG9Db21lQmVmb3JlOkAiU1RST05HIl07Ci0gICAgW3dl
YlZpZXcgZXhwZWN0RWxlbWVudENvdW50OjEgdGFnTmFtZTpAIklNRyJdOworICAgIFt3ZWJWaWV3
IGV4cGVjdEVsZW1lbnRDb3VudDoxIHF1ZXJ5U2VsZWN0b3I6QCJJTUciXTsKIAogICAgIC8vIERy
YWcgdGhlIGF0dGFjaG1lbnQgZWxlbWVudCB0byBzb21ld2hlcmUgYmVsb3cgdGhlIHN0cm9uZyB0
ZXh0LgogICAgIFtzaW11bGF0b3IgcnVuRnJvbTpDR1BvaW50TWFrZSg1MCwgNTApIHRvOkNHUG9p
bnRNYWtlKDUwLCAzNTApXTsKIAogICAgIFt3ZWJWaWV3IGV4cGVjdEVsZW1lbnRUYWc6QCJTVFJP
TkciIHRvQ29tZUJlZm9yZTpAIklNRyJdOwotICAgIFt3ZWJWaWV3IGV4cGVjdEVsZW1lbnRDb3Vu
dDoxIHRhZ05hbWU6QCJJTUciXTsKKyAgICBbd2ViVmlldyBleHBlY3RFbGVtZW50Q291bnQ6MSBx
dWVyeVNlbGVjdG9yOkAiSU1HIl07CiAgICAgRVhQRUNUX0VRKFtzaW11bGF0b3IgaW5zZXJ0ZWRB
dHRhY2htZW50c10uY291bnQsIFtzaW11bGF0b3IgcmVtb3ZlZEF0dGFjaG1lbnRzXS5jb3VudCk7
CiAKICAgICBbc2ltdWxhdG9yIGVuZERhdGFUcmFuc2Zlcl07CkBAIC0xMDM0LDggKzEwMDMsOCBA
QCBURVNUKFdLQXR0YWNobWVudFRlc3RzLCBJbnNlcnRQYXN0ZWRBdHRyaWJ1dGVkU3RyaW5nQ29u
dGFpbmluZ011bHRpcGxlQXR0YWNobWVudAogICAgIH0KIAogICAgIEVYUEVDVF9UUlVFKHppcEF0
dGFjaG1lbnQgJiYgaW1hZ2VBdHRhY2htZW50ICYmIHBkZkF0dGFjaG1lbnQpOwotICAgIFt3ZWJW
aWV3IGV4cGVjdEVsZW1lbnRDb3VudDoyIHRhZ05hbWU6QCJBVFRBQ0hNRU5UIl07Ci0gICAgW3dl
YlZpZXcgZXhwZWN0RWxlbWVudENvdW50OjEgdGFnTmFtZTpAIklNRyJdOworICAgIFt3ZWJWaWV3
IGV4cGVjdEVsZW1lbnRDb3VudDoyIHF1ZXJ5U2VsZWN0b3I6QCJBVFRBQ0hNRU5UIl07CisgICAg
W3dlYlZpZXcgZXhwZWN0RWxlbWVudENvdW50OjEgcXVlcnlTZWxlY3RvcjpAIklNRyJdOwogICAg
IEVYUEVDVF9XS19TVFJFUSgiYXBwbGljYXRpb24vcGRmIiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFs
dWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2F0dGFjaG1lbnQn
KVswXS5nZXRBdHRyaWJ1dGUoJ3R5cGUnKSJdKTsKIAogICAgIE5TU3RyaW5nICp6aXBBdHRhY2ht
ZW50VHlwZSA9IFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVu
dC5xdWVyeVNlbGVjdG9yQWxsKCdhdHRhY2htZW50JylbMV0uZ2V0QXR0cmlidXRlKCd0eXBlJyki
XTsKQEAgLTEzMzgsNyArMTMwNyw3IEBAIFRFU1QoV0tBdHRhY2htZW50VGVzdHMsIFBhc3RlV2Vi
QXJjaGl2ZUNvbnRhaW5pbmdJbWFnZXMpCiAKICAgICBPYnNlcnZlQXR0YWNobWVudFVwZGF0ZXNG
b3JTY29wZSBvYnNlcnZlcih3ZWJWaWV3LmdldCgpKTsKICAgICBbd2ViVmlldyBfc3luY2hyb25v
dXNseUV4ZWN1dGVFZGl0Q29tbWFuZDpAIlBhc3RlIiBhcmd1bWVudDpuaWxdOwotICAgIFt3ZWJW
aWV3IGV4cGVjdEVsZW1lbnRDb3VudDoyIHRhZ05hbWU6QCJJTUciXTsKKyAgICBbd2ViVmlldyBl
eHBlY3RFbGVtZW50Q291bnQ6MiBxdWVyeVNlbGVjdG9yOkAiSU1HIl07CiAKICAgICBmb3IgKF9X
S0F0dGFjaG1lbnQgKmF0dGFjaG1lbnQgaW4gb2JzZXJ2ZXIub2JzZXJ2ZXIoKS5pbnNlcnRlZCkg
ewogICAgICAgICBpZiAoW2F0dGFjaG1lbnQuaW5mby5jb250ZW50VHlwZSBpc0VxdWFsVG9TdHJp
bmc6QCJpbWFnZS9wbmciXSkKQEAgLTE0NzMsNyArMTQ0Miw3IEBAIFRFU1QoV0tBdHRhY2htZW50
VGVzdHMsIENvcHlBbmRQYXN0ZUJldHdlZW5XZWJWaWV3cykKICAgICBhdXRvIHNlY29uZFdlYlZp
ZXcgPSB3ZWJWaWV3Rm9yVGVzdGluZ0F0dGFjaG1lbnRzKCk7CiAgICAgT2JzZXJ2ZUF0dGFjaG1l
bnRVcGRhdGVzRm9yU2NvcGUgb2JzZXJ2ZXIoc2Vjb25kV2ViVmlldy5nZXQoKSk7CiAgICAgW3Nl
Y29uZFdlYlZpZXcgcGFzdGU6bmlsXTsKLSAgICBbc2Vjb25kV2ViVmlldyBleHBlY3RFbGVtZW50
Q291bnQ6MyB0YWdOYW1lOkAiYXR0YWNobWVudCJdOworICAgIFtzZWNvbmRXZWJWaWV3IGV4cGVj
dEVsZW1lbnRDb3VudDozIHF1ZXJ5U2VsZWN0b3I6QCJhdHRhY2htZW50Il07CiAgICAgRVhQRUNU
X0VRKDNVLCBvYnNlcnZlci5vYnNlcnZlcigpLmluc2VydGVkLmNvdW50KTsKIAogICAgIE5TU3Ry
aW5nICpwbGFpbkZpbGVJZGVudGlmaWVyID0gW3NlY29uZFdlYlZpZXcgc3RyaW5nQnlFdmFsdWF0
aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2F0dGFjaG1lbnRbdGl0bGVe
PXRlc3RdJykudW5pcXVlSWRlbnRpZmllciJdOwpAQCAtMTUxNiw4ICsxNDg1LDggQEAgVEVTVChX
S0F0dGFjaG1lbnRUZXN0c01hYywgSW5zZXJ0UGFzdGVkRmlsZVVSTHNBc0F0dGFjaG1lbnRzKQog
ICAgICAgICBFWFBFQ1RfRVEoMlUsIFtpbnNlcnRlZEF0dGFjaG1lbnRzIGNvdW50XSk7CiAgICAg
fQogCi0gICAgW3dlYlZpZXcgZXhwZWN0RWxlbWVudENvdW50OjEgdGFnTmFtZTpAIkFUVEFDSE1F
TlQiXTsKLSAgICBbd2ViVmlldyBleHBlY3RFbGVtZW50Q291bnQ6MSB0YWdOYW1lOkAiSU1HIl07
CisgICAgW3dlYlZpZXcgZXhwZWN0RWxlbWVudENvdW50OjEgcXVlcnlTZWxlY3RvcjpAIkFUVEFD
SE1FTlQiXTsKKyAgICBbd2ViVmlldyBleHBlY3RFbGVtZW50Q291bnQ6MSBxdWVyeVNlbGVjdG9y
OkAiSU1HIl07CiAgICAgRVhQRUNUX1dLX1NUUkVRKCJhcHBsaWNhdGlvbi9wZGYiLCBbd2ViVmll
dyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQucXVlcnlTZWxlY3Rvcign
YXR0YWNobWVudCcpLmdldEF0dHJpYnV0ZSgndHlwZScpIl0pOwogICAgIEVYUEVDVF9XS19TVFJF
USgidGVzdC5wZGYiLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9j
dW1lbnQucXVlcnlTZWxlY3RvcignYXR0YWNobWVudCcpLmdldEF0dHJpYnV0ZSgndGl0bGUnKSJd
KTsKIApAQCAtMTU1Miw4ICsxNTIxLDggQEAgVEVTVChXS0F0dGFjaG1lbnRUZXN0c01hYywgSW5z
ZXJ0RHJvcHBlZEZpbGVQcm9taXNlc0FzQXR0YWNobWVudHMpCiAKICAgICBbc2ltdWxhdG9yIHJ1
bkZyb206Q0dQb2ludE1ha2UoMCwgMCkgdG86Q0dQb2ludE1ha2UoNTAsIDUwKV07CiAKLSAgICBb
d2ViVmlldyBleHBlY3RFbGVtZW50Q291bnQ6MSB0YWdOYW1lOkAiQVRUQUNITUVOVCJdOwotICAg
IFt3ZWJWaWV3IGV4cGVjdEVsZW1lbnRDb3VudDoxIHRhZ05hbWU6QCJJTUciXTsKKyAgICBbd2Vi
VmlldyBleHBlY3RFbGVtZW50Q291bnQ6MSBxdWVyeVNlbGVjdG9yOkAiQVRUQUNITUVOVCJdOwor
ICAgIFt3ZWJWaWV3IGV4cGVjdEVsZW1lbnRDb3VudDoxIHF1ZXJ5U2VsZWN0b3I6QCJJTUciXTsK
ICAgICBFWFBFQ1RfRVEoMlUsIFtzaW11bGF0b3IgaW5zZXJ0ZWRBdHRhY2htZW50c10uY291bnQp
OwogCiAgICAgYXV0byBpbnNlcnRlZEF0dGFjaG1lbnRzID0gcmV0YWluUHRyKFtzaW11bGF0b3Ig
aW5zZXJ0ZWRBdHRhY2htZW50c10pOwpAQCAtMTU3Myw4ICsxNTQyLDggQEAgVEVTVChXS0F0dGFj
aG1lbnRUZXN0c01hYywgSW5zZXJ0RHJvcHBlZEZpbGVQcm9taXNlc0FzQXR0YWNobWVudHMpCiAg
ICAgW3dlYlZpZXcgX3N5bmNocm9ub3VzbHlFeGVjdXRlRWRpdENvbW1hbmQ6QCJEZWxldGVCYWNr
d2FyZCIgYXJndW1lbnQ6bmlsXTsKICAgICBhdXRvIHJlbW92ZWRBdHRhY2htZW50cyA9IHJldGFp
blB0cihbc2ltdWxhdG9yIHJlbW92ZWRBdHRhY2htZW50c10pOwogICAgIEVYUEVDVF9FUSgyVSwg
W3JlbW92ZWRBdHRhY2htZW50cyBjb3VudF0pOwotICAgIFt3ZWJWaWV3IGV4cGVjdEVsZW1lbnRD
b3VudDowIHRhZ05hbWU6QCJBVFRBQ0hNRU5UIl07Ci0gICAgW3dlYlZpZXcgZXhwZWN0RWxlbWVu
dENvdW50OjAgdGFnTmFtZTpAIklNRyJdOworICAgIFt3ZWJWaWV3IGV4cGVjdEVsZW1lbnRDb3Vu
dDowIHF1ZXJ5U2VsZWN0b3I6QCJBVFRBQ0hNRU5UIl07CisgICAgW3dlYlZpZXcgZXhwZWN0RWxl
bWVudENvdW50OjAgcXVlcnlTZWxlY3RvcjpAIklNRyJdOwogICAgIEVYUEVDVF9UUlVFKFtyZW1v
dmVkQXR0YWNobWVudHMgY29udGFpbnNPYmplY3Q6W2luc2VydGVkQXR0YWNobWVudHMgZmlyc3RP
YmplY3RdXSk7CiAgICAgRVhQRUNUX1RSVUUoW3JlbW92ZWRBdHRhY2htZW50cyBjb250YWluc09i
amVjdDpbaW5zZXJ0ZWRBdHRhY2htZW50cyBsYXN0T2JqZWN0XV0pOwogfQpAQCAtMTY4MSw3ICsx
NjUwLDcgQEAgVEVTVChXS0F0dGFjaG1lbnRUZXN0c0lPUywgSW5zZXJ0RHJvcHBlZFJpY2hBbmRQ
bGFpblRleHRGaWxlc0FzQXR0YWNobWVudHMpCiAgICAgZm9yIChfV0tBdHRhY2htZW50ICphdHRh
Y2htZW50IGluIFtkcmFnQW5kRHJvcFNpbXVsYXRvciBpbnNlcnRlZEF0dGFjaG1lbnRzXSkKICAg
ICAgICAgRVhQRUNUX0dUKFthdHRhY2htZW50IGluZm9dLmRhdGEubGVuZ3RoLCAwVSk7CiAKLSAg
ICBbd2ViVmlldyBleHBlY3RFbGVtZW50Q291bnQ6MiB0YWdOYW1lOkAiQVRUQUNITUVOVCJdOwor
ICAgIFt3ZWJWaWV3IGV4cGVjdEVsZW1lbnRDb3VudDoyIHF1ZXJ5U2VsZWN0b3I6QCJBVFRBQ0hN
RU5UIl07CiAgICAgRVhQRUNUX1dLX1NUUkVRKCJoZWxsby5ydGYiLCBbd2ViVmlldyBzdHJpbmdC
eUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnYXR0YWNo
bWVudCcpWzBdLmdldEF0dHJpYnV0ZSgndGl0bGUnKSJdKTsKICAgICBFWFBFQ1RfV0tfU1RSRVEo
InRleHQvcnRmIiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3Vt
ZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2F0dGFjaG1lbnQnKVswXS5nZXRBdHRyaWJ1dGUoJ3R5cGUn
KSJdKTsKICAgICBFWFBFQ1RfV0tfU1RSRVEoIndvcmxkLnR4dCIsIFt3ZWJWaWV3IHN0cmluZ0J5
RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdhdHRhY2ht
ZW50JylbMV0uZ2V0QXR0cmlidXRlKCd0aXRsZScpIl0pOwpAQCAtMTcwNiw3ICsxNjc1LDcgQEAg
VEVTVChXS0F0dGFjaG1lbnRUZXN0c0lPUywgSW5zZXJ0RHJvcHBlZFppcEFyY2hpdmVBc0F0dGFj
aG1lbnQpCiAgICAgRVhQRUNUX0VRKDFVLCBbZHJhZ0FuZERyb3BTaW11bGF0b3IgaW5zZXJ0ZWRB
dHRhY2htZW50c10uY291bnQpOwogICAgIEVYUEVDVF9FUSgwVSwgW2RyYWdBbmREcm9wU2ltdWxh
dG9yIHJlbW92ZWRBdHRhY2htZW50c10uY291bnQpOwogICAgIFtbZHJhZ0FuZERyb3BTaW11bGF0
b3IgaW5zZXJ0ZWRBdHRhY2htZW50c10uZmlyc3RPYmplY3QgZXhwZWN0UmVxdWVzdGVkRGF0YVRv
QmU6ZGF0YV07Ci0gICAgW3dlYlZpZXcgZXhwZWN0RWxlbWVudENvdW50OjEgdGFnTmFtZTpAIkFU
VEFDSE1FTlQiXTsKKyAgICBbd2ViVmlldyBleHBlY3RFbGVtZW50Q291bnQ6MSBxdWVyeVNlbGVj
dG9yOkAiQVRUQUNITUVOVCJdOwogICAgIEVYUEVDVF9XS19TVFJFUSgiYXJjaGl2ZS56aXAiLCBb
d2ViVmlldyB2YWx1ZU9mQXR0cmlidXRlOkAidGl0bGUiIGZvclF1ZXJ5U2VsZWN0b3I6QCJhdHRh
Y2htZW50Il0pOwogICAgIEVYUEVDVF9XS19TVFJFUSgiYXBwbGljYXRpb24vemlwIiwgW3dlYlZp
ZXcgdmFsdWVPZkF0dHJpYnV0ZTpAInR5cGUiIGZvclF1ZXJ5U2VsZWN0b3I6QCJhdHRhY2htZW50
Il0pOwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9kYXRhLWRldGVjdG9ycy5odG1sIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9kYXRhLWRldGVjdG9ycy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY5Zjg3YWY0Zjg4ODllYjc0NDQ0
YjU5MDBlNjBhMTlmZTcxZTg1ZDUKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL2RhdGEtZGV0ZWN0b3JzLmh0bWwKQEAgLTAsMCArMSwzMCBA
QAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50
PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MSI+Cis8Ym9keT4KKzx0YWJsZT4K
Kzx0Ym9keT4KKzx0cj4KKyAgICA8dGQ+VGVsZXBob25lIG51bWJlcjwvdGQ+CisgICAgPHRkPisx
LTIzNC01NjctODkwMDwvdGQ+Cis8L3RyPgorPHRyPgorICAgIDx0ZD5MaW5rPC90ZD4KKyAgICA8
dGQ+aHR0cHM6Ly93d3cuYXBwbGUuY29tPC90ZD4KKzwvdHI+Cis8dHI+CisgICAgPHRkPkFkZHJl
c3M8L3RkPgorICAgIDx0ZD4yIEFwcGxlIFBhcmsgV2F5LCBDdXBlcnRpbm8gOTUwMTQ8L3RkPgor
PC90cj4KKzx0cj4KKyAgICA8dGQ+Q2FsZW5kYXIgZXZlbnQ8L3RkPgorICAgIDx0ZD5EZWNlbWJl
ciAyMSwgMjAyMTwvdGQ+Cis8L3RyPgorPHRyPgorICAgIDx0ZD5GbGlnaHQgbnVtYmVyPC90ZD4K
KyAgICA8dGQ+QUM3ODA8L3RkPgorPC90cj4KKzwvdGJvZHk+Cis8L3RhYmxlPgorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJW
aWV3LmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcuaAppbmRleCA1
NDg4MzY5NzU2NDYwZGMxYzdkNWM5N2UzNzIxMGZiY2Q4MzEwMThiLi44ODNhYmQxY2FjYTlkNzVl
OTVlNDUwMTljYWUwYmQ0MmVmNTA1ZGUwIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L2NvY29hL1Rlc3RXS1dlYlZpZXcuaAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rl
c3RXS1dlYlZpZXcuaApAQCAtNDgsNyArNDgsMTQgQEAKIEBlbmQKIAogQGludGVyZmFjZSBXS1dl
YlZpZXcgKFRlc3RXZWJLaXRBUEkpCitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIE5T
QXJyYXk8TlNTdHJpbmcgKj4gKnRhZ3NJbkJvZHk7CiAtIChCT09MKV9zeW5jaHJvbm91c2x5RXhl
Y3V0ZUVkaXRDb21tYW5kOihOU1N0cmluZyAqKWNvbW1hbmQgYXJndW1lbnQ6KE5TU3RyaW5nICop
YXJndW1lbnQ7CistICh2b2lkKWV4cGVjdEVsZW1lbnRUYWdzSW5PcmRlcjooTlNBcnJheTxOU1N0
cmluZyAqPiAqKXRhZ05hbWVzOworLSAodm9pZClleHBlY3RFbGVtZW50Q291bnQ6KE5TSW50ZWdl
ciljb3VudCBxdWVyeVNlbGVjdG9yOihOU1N0cmluZyAqKXF1ZXJ5U2VsZWN0b3I7CistICh2b2lk
KWV4cGVjdEVsZW1lbnRUYWc6KE5TU3RyaW5nICopdGFnTmFtZSB0b0NvbWVCZWZvcmU6KE5TU3Ry
aW5nICopb3RoZXJUYWdOYW1lOworLSAoTlNTdHJpbmcgKilzdHJpbmdCeUV2YWx1YXRpbmdKYXZh
U2NyaXB0OihOU1N0cmluZyAqKXNjcmlwdDsKKy0gKGlkKW9iamVjdEJ5RXZhbHVhdGluZ0phdmFT
Y3JpcHRXaXRoVXNlckdlc3R1cmU6KE5TU3RyaW5nICopc2NyaXB0OworLSAoaWQpb2JqZWN0QnlF
dmFsdWF0aW5nSmF2YVNjcmlwdDooTlNTdHJpbmcgKilzY3JpcHQ7CiBAZW5kCiAKIEBpbnRlcmZh
Y2UgVGVzdE1lc3NhZ2VIYW5kbGVyIDogTlNPYmplY3QgPFdLU2NyaXB0TWVzc2FnZUhhbmRsZXI+
CkBAIC02NCw5ICs3MSw2IEBACiAtICh2b2lkKXN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzoo
TlNTdHJpbmcgKilodG1sOwogLSAodm9pZClzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6KE5T
U3RyaW5nICopaHRtbCBiYXNlVVJMOihOU1VSTCAqKXVybDsKIC0gKHZvaWQpc3luY2hyb25vdXNs
eUxvYWRUZXN0UGFnZU5hbWVkOihOU1N0cmluZyAqKXBhZ2VOYW1lOwotLSAoaWQpb2JqZWN0QnlF
dmFsdWF0aW5nSmF2YVNjcmlwdDooTlNTdHJpbmcgKilzY3JpcHQ7Ci0tIChpZClvYmplY3RCeUV2
YWx1YXRpbmdKYXZhU2NyaXB0V2l0aFVzZXJHZXN0dXJlOihOU1N0cmluZyAqKXNjcmlwdDsKLS0g
KE5TU3RyaW5nICopc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDooTlNTdHJpbmcgKilzY3Jp
cHQ7CiAtICh2b2lkKXdhaXRGb3JNZXNzYWdlOihOU1N0cmluZyAqKW1lc3NhZ2U7CiAtICh2b2lk
KXBlcmZvcm1BZnRlckxvYWRpbmc6KGRpc3BhdGNoX2Jsb2NrX3QpYWN0aW9uczsKIC0gKHZvaWQp
d2FpdEZvck5leHRQcmVzZW50YXRpb25VcGRhdGU7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29h
L1Rlc3RXS1dlYlZpZXcubW0KaW5kZXggY2NiZWZmODI0ZDY1NWMxNDNmYjBjMDMxYTExNGVlNmY3
ZDQ4M2VkZi4uZThlYWRmODZkM2U4M2NmZTg0NDFmMjA3YmZmNDQzYjE5ZGI5NTE2ZSAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5tbQpAQCAtNzgsNiArNzgsNzIg
QEAgLSAoQk9PTClfc3luY2hyb25vdXNseUV4ZWN1dGVFZGl0Q29tbWFuZDooTlNTdHJpbmcgKilj
b21tYW5kIGFyZ3VtZW50OihOU1N0cmluZwogICAgIHJldHVybiBzdWNjZXNzOwogfQogCistIChO
U0FycmF5PE5TU3RyaW5nICo+ICopdGFnc0luQm9keQoreworICAgIHJldHVybiBbc2VsZiBvYmpl
Y3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiQXJyYXkuZnJvbShkb2N1bWVudC5ib2R5LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCcqJykpLm1hcChlID0+IGUudGFnTmFtZSkiXTsKK30KKworLSAodm9p
ZClleHBlY3RFbGVtZW50VGFnc0luT3JkZXI6KE5TQXJyYXk8TlNTdHJpbmcgKj4gKil0YWdOYW1l
cworeworICAgIGF1dG8gcmVtYWluaW5nVGFncyA9IGFkb3B0TlMoW3RhZ05hbWVzIG11dGFibGVD
b3B5XSk7CisgICAgTlNBcnJheTxOU1N0cmluZyAqPiAqdGFnc0luQm9keSA9IHNlbGYudGFnc0lu
Qm9keTsKKyAgICBmb3IgKE5TU3RyaW5nICp0YWcgaW4gdGFnc0luQm9keS5yZXZlcnNlT2JqZWN0
RW51bWVyYXRvcikgeworICAgICAgICBpZiAoW3RhZyBpc0VxdWFsVG9TdHJpbmc6W3JlbWFpbmlu
Z1RhZ3MgbGFzdE9iamVjdF1dKQorICAgICAgICAgICAgW3JlbWFpbmluZ1RhZ3MgcmVtb3ZlTGFz
dE9iamVjdF07CisgICAgICAgIGlmICghW3JlbWFpbmluZ1RhZ3MgY291bnRdKQorICAgICAgICAg
ICAgYnJlYWs7CisgICAgfQorICAgIEVYUEVDVF9FUShbcmVtYWluaW5nVGFncyBjb3VudF0sIDBV
KTsKKyAgICBpZiAoW3JlbWFpbmluZ1RhZ3MgY291bnRdKQorICAgICAgICBOU0xvZyhAIkV4cGVj
dGVkIHRvIGZpbmQgb3JkZXJlZCB0YWdzOiAlQCBpbjogJUAiLCB0YWdOYW1lcywgdGFnc0luQm9k
eSk7Cit9CisKKy0gKHZvaWQpZXhwZWN0RWxlbWVudENvdW50OihOU0ludGVnZXIpY291bnQgcXVl
cnlTZWxlY3RvcjooTlNTdHJpbmcgKilxdWVyeVNlbGVjdG9yCit7CisgICAgTlNTdHJpbmcgKnNj
cmlwdCA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiZG9jdW1lbnQucXVlcnlTZWxlY3Rv
ckFsbCgnJUAnKS5sZW5ndGgiLCBxdWVyeVNlbGVjdG9yXTsKKyAgICBFWFBFQ1RfRVEoY291bnQs
IFtzZWxmIHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6c2NyaXB0XS5pbnRlZ2VyVmFsdWUp
OworfQorCistICh2b2lkKWV4cGVjdEVsZW1lbnRUYWc6KE5TU3RyaW5nICopdGFnTmFtZSB0b0Nv
bWVCZWZvcmU6KE5TU3RyaW5nICopb3RoZXJUYWdOYW1lCit7CisgICAgW3NlbGYgZXhwZWN0RWxl
bWVudFRhZ3NJbk9yZGVyOkBbdGFnTmFtZSwgb3RoZXJUYWdOYW1lXV07Cit9CisKKy0gKGlkKW9i
amVjdEJ5RXZhbHVhdGluZ0phdmFTY3JpcHQ6KE5TU3RyaW5nICopc2NyaXB0Cit7CisgICAgYm9v
bCBpc1dhaXRpbmdGb3JKYXZhU2NyaXB0ID0gZmFsc2U7CisgICAgUmV0YWluUHRyPGlkPiBldmFs
UmVzdWx0OworICAgIFtzZWxmIF9ldmFsdWF0ZUphdmFTY3JpcHRXaXRob3V0VXNlckdlc3R1cmU6
c2NyaXB0IGNvbXBsZXRpb25IYW5kbGVyOlsmXSAoaWQgcmVzdWx0LCBOU0Vycm9yICplcnJvcikg
eworICAgICAgICBldmFsUmVzdWx0ID0gcmVzdWx0OworICAgICAgICBpc1dhaXRpbmdGb3JKYXZh
U2NyaXB0ID0gdHJ1ZTsKKyAgICAgICAgRVhQRUNUX1RSVUUoIWVycm9yKTsKKyAgICAgICAgaWYg
KGVycm9yKQorICAgICAgICAgICAgTlNMb2coQCJFbmNvdW50ZXJlZCBlcnJvcjogJUAgd2hpbGUg
ZXZhbHVhdGluZyBzY3JpcHQ6ICVAIiwgZXJyb3IsIHNjcmlwdCk7CisgICAgfV07CisgICAgVGVz
dFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc1dhaXRpbmdGb3JKYXZhU2NyaXB0KTsKKyAgICByZXR1
cm4gZXZhbFJlc3VsdC5hdXRvcmVsZWFzZSgpOworfQorCistIChpZClvYmplY3RCeUV2YWx1YXRp
bmdKYXZhU2NyaXB0V2l0aFVzZXJHZXN0dXJlOihOU1N0cmluZyAqKXNjcmlwdAoreworICAgIGJv
b2wgaXNXYWl0aW5nRm9ySmF2YVNjcmlwdCA9IGZhbHNlOworICAgIFJldGFpblB0cjxpZD4gZXZh
bFJlc3VsdDsKKyAgICBbc2VsZiBldmFsdWF0ZUphdmFTY3JpcHQ6c2NyaXB0IGNvbXBsZXRpb25I
YW5kbGVyOlsmXSAoaWQgcmVzdWx0LCBOU0Vycm9yICplcnJvcikgeworICAgICAgICBldmFsUmVz
dWx0ID0gcmVzdWx0OworICAgICAgICBpc1dhaXRpbmdGb3JKYXZhU2NyaXB0ID0gdHJ1ZTsKKyAg
ICAgICAgRVhQRUNUX1RSVUUoIWVycm9yKTsKKyAgICAgICAgaWYgKGVycm9yKQorICAgICAgICAg
ICAgTlNMb2coQCJFbmNvdW50ZXJlZCBlcnJvcjogJUAgd2hpbGUgZXZhbHVhdGluZyBzY3JpcHQ6
ICVAIiwgZXJyb3IsIHNjcmlwdCk7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6
cnVuKCZpc1dhaXRpbmdGb3JKYXZhU2NyaXB0KTsKKyAgICByZXR1cm4gZXZhbFJlc3VsdC5hdXRv
cmVsZWFzZSgpOworfQorCistIChOU1N0cmluZyAqKXN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3Jp
cHQ6KE5TU3RyaW5nICopc2NyaXB0Cit7CisgICAgcmV0dXJuIFtOU1N0cmluZyBzdHJpbmdXaXRo
Rm9ybWF0OkAiJUAiLCBbc2VsZiBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OnNjcmlwdF1d
OworfQorCiBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBUZXN0TWVzc2FnZUhhbmRsZXIgewpAQCAt
Mjg5LDQxICszNTUsNiBAQCAtICh2b2lkKXN5bmNocm9ub3VzbHlMb2FkVGVzdFBhZ2VOYW1lZDoo
TlNTdHJpbmcgKilwYWdlTmFtZQogICAgIFtzZWxmIF90ZXN0X3dhaXRGb3JEaWRGaW5pc2hOYXZp
Z2F0aW9uXTsKIH0KIAotLSAoaWQpb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDooTlNTdHJp
bmcgKilzY3JpcHQKLXsKLSAgICBib29sIGlzV2FpdGluZ0ZvckphdmFTY3JpcHQgPSBmYWxzZTsK
LSAgICBSZXRhaW5QdHI8aWQ+IGV2YWxSZXN1bHQ7Ci0gICAgW3NlbGYgX2V2YWx1YXRlSmF2YVNj
cmlwdFdpdGhvdXRVc2VyR2VzdHVyZTpzY3JpcHQgY29tcGxldGlvbkhhbmRsZXI6WyZdIChpZCBy
ZXN1bHQsIE5TRXJyb3IgKmVycm9yKSB7Ci0gICAgICAgIGV2YWxSZXN1bHQgPSByZXN1bHQ7Ci0g
ICAgICAgIGlzV2FpdGluZ0ZvckphdmFTY3JpcHQgPSB0cnVlOwotICAgICAgICBFWFBFQ1RfVFJV
RSghZXJyb3IpOwotICAgICAgICBpZiAoZXJyb3IpCi0gICAgICAgICAgICBOU0xvZyhAIkVuY291
bnRlcmVkIGVycm9yOiAlQCB3aGlsZSBldmFsdWF0aW5nIHNjcmlwdDogJUAiLCBlcnJvciwgc2Ny
aXB0KTsKLSAgICB9XTsKLSAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzV2FpdGluZ0Zv
ckphdmFTY3JpcHQpOwotICAgIHJldHVybiBldmFsUmVzdWx0LmF1dG9yZWxlYXNlKCk7Ci19Ci0K
LS0gKGlkKW9iamVjdEJ5RXZhbHVhdGluZ0phdmFTY3JpcHRXaXRoVXNlckdlc3R1cmU6KE5TU3Ry
aW5nICopc2NyaXB0Ci17Ci0gICAgYm9vbCBpc1dhaXRpbmdGb3JKYXZhU2NyaXB0ID0gZmFsc2U7
Ci0gICAgUmV0YWluUHRyPGlkPiBldmFsUmVzdWx0OwotICAgIFtzZWxmIGV2YWx1YXRlSmF2YVNj
cmlwdDpzY3JpcHQgY29tcGxldGlvbkhhbmRsZXI6WyZdIChpZCByZXN1bHQsIE5TRXJyb3IgKmVy
cm9yKSB7Ci0gICAgICAgIGV2YWxSZXN1bHQgPSByZXN1bHQ7Ci0gICAgICAgIGlzV2FpdGluZ0Zv
ckphdmFTY3JpcHQgPSB0cnVlOwotICAgICAgICBFWFBFQ1RfVFJVRSghZXJyb3IpOwotICAgICAg
ICBpZiAoZXJyb3IpCi0gICAgICAgICAgICBOU0xvZyhAIkVuY291bnRlcmVkIGVycm9yOiAlQCB3
aGlsZSBldmFsdWF0aW5nIHNjcmlwdDogJUAiLCBlcnJvciwgc2NyaXB0KTsKLSAgICB9XTsKLSAg
ICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzV2FpdGluZ0ZvckphdmFTY3JpcHQpOwotICAg
IHJldHVybiBldmFsUmVzdWx0LmF1dG9yZWxlYXNlKCk7Ci19Ci0KLS0gKE5TU3RyaW5nICopc3Ry
aW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDooTlNTdHJpbmcgKilzY3JpcHQKLXsKLSAgICByZXR1
cm4gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlQCIsIFtzZWxmIG9iamVjdEJ5RXZhbHVh
dGluZ0phdmFTY3JpcHQ6c2NyaXB0XV07Ci19Ci0KIC0gKHZvaWQpd2FpdEZvck1lc3NhZ2U6KE5T
U3RyaW5nICopbWVzc2FnZQogewogICAgIF9fYmxvY2sgYm9vbCBpc0RvbmVXYWl0aW5nID0gZmFs
c2U7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>355564</attachid>
            <date>2018-11-24 09:57:26 -0800</date>
            <delta_ts>2018-11-24 13:06:16 -0800</delta_ts>
            <desc>Patch for EWS</desc>
            <filename>bug-191918-20181124095723.patch</filename>
            <type>text/plain</type>
            <size>45471</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4NDU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDljYzEyMzFlYWVmZGQ4
ZDJiMjcxYmQ1M2I0ZTEzZTk5NjA1ZTgxMC4uODQ3NGJkZWU4ZWE5NTAzY2Y2N2MwYmU4YmFhMDJk
ZWY1MDJhNmUxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE4LTExLTIzICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gQWRk
IFdLV2ViVmlldyBTUEkgdG8gdHJpZ2dlciBhbmQgcmVtb3ZlIGRhdGEgZGV0ZWN0aW9uCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTE5MTgKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzM2MTg1MDUxPgorCisgICAgICAgIFJldmlld2VkIGJ5IFRpbSBI
b3J0b24uCisKKyAgICAgICAgQWRkIGEgaGVscGVyIG1ldGhvZCBvbiBEYXRhRGV0ZWN0aW9uIHRv
IHJlbW92ZSBhbGwgZGF0YSBkZXRlY3RlZCBsaW5rcyBpbiB0aGUgZ2l2ZW4gZG9jdW1lbnQuIFNl
ZSBXZWJLaXQgY2hhbmdlcworICAgICAgICBmb3IgbW9yZSBkZXRhaWwuCisKKyAgICAgICAgKiBl
ZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24uaDoKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0Rh
dGFEZXRlY3Rpb24ubW06CisgICAgICAgIChXZWJDb3JlOjpEYXRhRGV0ZWN0aW9uOjpyZW1vdmVE
YXRhRGV0ZWN0ZWRMaW5rc0luRG9jdW1lbnQpOgorCiAyMDE4LTExLTIyICBXZW5zb24gSHNpZWgg
IDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZHJlc3MgcG9zdC1yZXZpZXcg
ZmVlZGJhY2sgYWZ0ZXIgcjIzODQzOApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA1Y2E0ZTI5MWI3ZjgyZDg3MjM4NmRi
MmJhNDZmMmRhZTdhZTE2N2VhLi42ZjdjMWM5NTgxYmFjMjk5Y2M1ODA5NmZiY2Q0ZDQwZDk0MDY3
ODMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDE4LTExLTIzICBXZW5zb24gSHNpZWgg
IDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gQWRkIFdLV2ViVmll
dyBTUEkgdG8gdHJpZ2dlciBhbmQgcmVtb3ZlIGRhdGEgZGV0ZWN0aW9uCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTE5MTgKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzM2MTg1MDUxPgorCisgICAgICAgIFJldmlld2VkIGJ5IFRpbSBIb3J0b24uCisK
KyAgICAgICAgQWRkcyBzdXBwb3J0IGZvciB0d28gbmV3IFdLV2ViVmlldyBTUEkgbWV0aG9kcywg
YC1fZGV0ZWN0RGF0YVdpdGhUeXBlczpjb21wbGV0aW9uSGFuZGxlcjpgIGFuZAorICAgICAgICBg
LV9yZW1vdmVBbGxEYXRhRGV0ZWN0ZWRMaW5rczpgLCB0byBhbGxvdyBpbnRlcm5hbCBXZWJLaXQg
Y2xpZW50cyB0byBydW4gZGF0YSBkZXRlY3Rpb24gYW5kIGFkZCBsaW5rcyB0byBkYXRhCisgICAg
ICAgIGRldGVjdGVkIGNvbnRlbnQsIG9yIHJlbW92ZSBhbGwgZGF0YSBkZXRlY3RlZCBsaW5rcyBm
cm9tIHRoZSBkb2N1bWVudC4KKworICAgICAgICBUZXN0OiBXZWJLaXQuQWRkQW5kUmVtb3ZlRGF0
YURldGVjdG9ycworCisgICAgICAgICogU2hhcmVkL0NvY29hL0RhdGFEZXRlY3Rpb25SZXN1bHQu
aDoKKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvRGF0YURldGVjdGlvblJlc3VsdC5tbToKKyAgICAg
ICAgKFdlYktpdDo6RGF0YURldGVjdGlvblJlc3VsdDo6ZGVjb2RlKToKKworICAgICAgICBNb2Rl
cm5pemUgRGF0YURldGVjdGlvblJlc3VsdCdzIElQQyBkZWNvZGluZywgc28gdGhhdCBpdCBjYW4g
YmUgdXNlZCB3aXRoIHJlcGx5LWJhc2VkIGFzeW5jIElQQy4KKworICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3JlbW92ZURh
dGFEZXRlY3RlZExpbmtzOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2RldGVjdERhdGFXaXRo
VHlwZXM6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXdQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGV0ZWN0RGF0YUluQWxsRnJhbWVz
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZW1vdmVEYXRhRGV0ZWN0ZWRMaW5r
cyk6CisKKyAgICAgICAgQWRkIG9yIHJlbW92ZSBkYXRhIGRldGVjdGVkIGxpbmtzIGZyb20gZWFj
aCBmcmFtZSBpbiB0aGUgcGFnZSwgYW5kIHRoZW4gcHJvcGFnYXRlIHRoZSBuZXcgZGF0YSBkZXRl
Y3RvcgorICAgICAgICByZXN1bHRzIG9mIHRoZSBtYWluIGZyYW1lIHRvIHRoZSBVSSBwcm9jZXNz
ICh0aGlzIG1hdGNoZXMgY3VycmVudCBiZWhhdmlvciwgd2hlcmUgdGhlIHJlc3VsdHMgb2YgLVtX
S1dlYlZpZXcKKyAgICAgICAgX2RhdGFEZXRlY3Rpb25SZXN1bHRzXSBvbmx5IHJlZmxlY3RzIGRh
dGEgZGV0ZWN0aW9uIHJlc3VsdHMgaW4gdGhlIG1haW4gZnJhbWUgb2YgdGhlIHBhZ2UpLgorCisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cmVtb3ZlRGF0
YURldGVjdGVkTGlua3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkZXRlY3REYXRhSW5B
bGxGcmFtZXMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisKIDIwMTgtMTEt
MjIgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgW0Nv
Y29hXSBjbGFuZyBlbWl0cyBhIHdhcm5pbmcgd2hlbiBidWlsZGluZyBXZWJLaXQgYWZ0ZXIgcjIz
ODI5MwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EYXRhRGV0ZWN0
aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24uaAppbmRl
eCBkYmU1NGJkY2YxOTBjMTViZDRkMDhlNjgwOWM2Mzk3ODkwNmJmZGJlLi4zYTM0YTA5YTVmYmNk
OTIzYWFlM2M4ZGI4OGY1YTY2OGE3NmM5MTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2NvY29hL0RhdGFEZXRlY3Rpb24uaApAQCAtMzcsNiArMzcsNyBAQCBPQkpDX0NMQVNTIE5TRGlj
dGlvbmFyeTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBEb2N1bWVudDsKIGNsYXNz
IEVsZW1lbnQ7CiBjbGFzcyBGbG9hdFJlY3Q7CiBjbGFzcyBIaXRUZXN0UmVzdWx0OwpAQCAtNjEs
NiArNjIsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJldGFpblB0cjxE
REFjdGlvbkNvbnRleHQ+IGRldGVjdEl0ZW1Bcm91bmRIaXRUZXN0UmVzdWx0KGNvbnN0IEhpdFRl
c3RSZXN1bHQmLCBGbG9hdFJlY3QmIGRldGVjdGVkRGF0YUJvdW5kaW5nQm94LCBSZWZQdHI8UmFu
Z2U+JiBkZXRlY3RlZERhdGFSYW5nZSk7CiAjZW5kaWYKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgTlNBcnJheSAqZGV0ZWN0Q29udGVudEluUmFuZ2UoUmVmUHRyPFJhbmdlPiYgY29udGV4dFJh
bmdlLCBEYXRhRGV0ZWN0b3JUeXBlcywgTlNEaWN0aW9uYXJ5ICpjb250ZXh0KTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgdm9pZCByZW1vdmVEYXRhRGV0ZWN0ZWRMaW5rc0luRG9jdW1lbnQo
RG9jdW1lbnQmKTsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyBib29sIGNhbkJlUHJlc2VudGVkQnlEYXRhRGV0ZWN0b3JzKGNvbnN0IFVSTCYpOwog
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIGlzRGF0YURldGVjdG9yTGluayhFbGVtZW50
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rp
b24ubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24ubW0KaW5k
ZXggYzk5OWRkNzE2Nzk2NGUzMWE2N2JhNGU2ODA5OWZiYWM1MGM1N2JiYy4uNzhlZWE5MTg2YTY2
YTI3NjlhMmM5YTFhOWE5MmJjNGE4M2QyOTQ1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9jb2NvYS9EYXRhRGV0ZWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvY29jb2EvRGF0YURldGVjdGlvbi5tbQpAQCAtNDI5LDYgKzQyOSwxNiBAQCBzdGF0aWMgaW5s
aW5lIENGQ29tcGFyaXNvblJlc3VsdCBxdWVyeU9mZnNldENvbXBhcmUoRERRdWVyeU9mZnNldCBv
MSwgRERRdWVyeU9mZgogICAgIHJldHVybiBrQ0ZDb21wYXJlRXF1YWxUbzsKIH0KIAordm9pZCBE
YXRhRGV0ZWN0aW9uOjpyZW1vdmVEYXRhRGV0ZWN0ZWRMaW5rc0luRG9jdW1lbnQoRG9jdW1lbnQm
IGRvY3VtZW50KQoreworICAgIFZlY3RvcjxSZWY8SFRNTEFuY2hvckVsZW1lbnQ+PiBhbGxBbmNo
b3JFbGVtZW50czsKKyAgICBmb3IgKGF1dG8mIGFuY2hvciA6IGRlc2NlbmRhbnRzT2ZUeXBlPEhU
TUxBbmNob3JFbGVtZW50Pihkb2N1bWVudCkpCisgICAgICAgIGFsbEFuY2hvckVsZW1lbnRzLmFw
cGVuZChhbmNob3IpOworCisgICAgZm9yIChhdXRvJiBhbmNob3IgOiBhbGxBbmNob3JFbGVtZW50
cykKKyAgICAgICAgcmVtb3ZlUmVzdWx0TGlua3NGcm9tQW5jaG9yKGFuY2hvci5nZXQoKSk7Cit9
CisKIE5TQXJyYXkgKkRhdGFEZXRlY3Rpb246OmRldGVjdENvbnRlbnRJblJhbmdlKFJlZlB0cjxS
YW5nZT4mIGNvbnRleHRSYW5nZSwgRGF0YURldGVjdG9yVHlwZXMgdHlwZXMsIE5TRGljdGlvbmFy
eSAqY29udGV4dCkKIHsKICAgICBSZXRhaW5QdHI8RERTY2FubmVyUmVmPiBzY2FubmVyID0gYWRv
cHRDRihzb2Z0TGlua19EYXRhRGV0ZWN0b3JzQ29yZV9ERFNjYW5uZXJDcmVhdGUoRERTY2FubmVy
VHlwZVN0YW5kYXJkLCAwLCBudWxscHRyKSk7CkBAIC02NDcsMTAgKzY1NywxNiBAQCBOU0FycmF5
ICpEYXRhRGV0ZWN0aW9uOjpkZXRlY3RDb250ZW50SW5SYW5nZShSZWZQdHI8UmFuZ2U+JiBjb250
ZXh0UmFuZ2UsIERhdGFEZQogfQogCiAjZWxzZQorCiBOU0FycmF5ICpEYXRhRGV0ZWN0aW9uOjpk
ZXRlY3RDb250ZW50SW5SYW5nZShSZWZQdHI8UmFuZ2U+JiwgRGF0YURldGVjdG9yVHlwZXMsIE5T
RGljdGlvbmFyeSAqKQogewogICAgIHJldHVybiBuaWw7CiB9CisKK3ZvaWQgRGF0YURldGVjdGlv
bjo6cmVtb3ZlRGF0YURldGVjdGVkTGlua3NJbkRvY3VtZW50KERvY3VtZW50JikKK3sKK30KKwog
I2VuZGlmCiAKIGNvbnN0IFN0cmluZyYgRGF0YURldGVjdGlvbjo6ZGF0YURldGVjdG9yVVJMUHJv
dG9jb2woKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvRGF0YURldGVj
dGlvblJlc3VsdC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvRGF0YURldGVjdGlvblJl
c3VsdC5oCmluZGV4IDI3NDQzY2UzZjNiMjdiZGE3NDBkZGI2MTM0OWE3ODZkMDBkZGY2YWEuLmEw
ODg4ZjkxODk2YjQ5NWRhODJmOTcwYjg2YWQ1MTBjZjVhZDNjZWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0NvY29hL0RhdGFEZXRlY3Rpb25SZXN1bHQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9Db2NvYS9EYXRhRGV0ZWN0aW9uUmVzdWx0LmgKQEAgLTM4LDcgKzM4LDcg
QEAgc3RydWN0IERhdGFEZXRlY3Rpb25SZXN1bHQgewogICAgIFJldGFpblB0cjxOU0FycmF5PiBy
ZXN1bHRzOwogCiAgICAgdm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVyJikgY29uc3Q7Ci0gICAgc3Rh
dGljIGJvb2wgZGVjb2RlKElQQzo6RGVjb2RlciYsIERhdGFEZXRlY3Rpb25SZXN1bHQmKTsKKyAg
ICBzdGF0aWMgc3RkOjpvcHRpb25hbDxEYXRhRGV0ZWN0aW9uUmVzdWx0PiBkZWNvZGUoSVBDOjpE
ZWNvZGVyJik7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2Nv
YS9EYXRhRGV0ZWN0aW9uUmVzdWx0Lm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvRGF0
YURldGVjdGlvblJlc3VsdC5tbQppbmRleCBhZjQyMTQ2MDhjMDQyNjg2ZGY1ZTNiYmI3YTBlMTRm
YzdhM2ZhMmUxLi5kYWZlZDlmMDViN2NiYTM1MWYxN2NmZDhlZjMwN2EzNTkwOTFmNjdmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9EYXRhRGV0ZWN0aW9uUmVzdWx0Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0RhdGFEZXRlY3Rpb25SZXN1bHQubW0K
QEAgLTQ2LDIyICs0NiwyMyBAQCB2b2lkIERhdGFEZXRlY3Rpb25SZXN1bHQ6OmVuY29kZShJUEM6
OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgSVBDOjplbmNvZGUoZW5jb2RlciwgKF9fYnJp
ZGdlIENGRGF0YVJlZilhcmNoaXZlci5nZXQoKS5lbmNvZGVkRGF0YSk7CiB9CiAKLWJvb2wgRGF0
YURldGVjdGlvblJlc3VsdDo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgRGF0YURldGVj
dGlvblJlc3VsdCYgcmVzdWx0KQorc3RkOjpvcHRpb25hbDxEYXRhRGV0ZWN0aW9uUmVzdWx0PiBE
YXRhRGV0ZWN0aW9uUmVzdWx0OjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQogewogICAg
IFJldGFpblB0cjxDRkRhdGFSZWY+IGRhdGE7CiAgICAgaWYgKCFJUEM6OmRlY29kZShkZWNvZGVy
LCBkYXRhKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCisgICAgRGF0YURldGVjdGlvblJlc3VsdCByZXN1bHQ7CiAgICAgYXV0byB1bmFyY2hp
dmVyID0gc2VjdXJlVW5hcmNoaXZlckZyb21EYXRhKChfX2JyaWRnZSBOU0RhdGEgKilkYXRhLmdl
dCgpKTsKICAgICBAdHJ5IHsKICAgICAgICAgcmVzdWx0LnJlc3VsdHMgPSBbdW5hcmNoaXZlciBk
ZWNvZGVPYmplY3RPZkNsYXNzZXM6W05TU2V0IHNldFdpdGhBcnJheTpAWyBbTlNBcnJheSBjbGFz
c10sIGdldEREU2Nhbm5lclJlc3VsdENsYXNzKCldIF0gZm9yS2V5OkAiZGF0YURldGVjdG9yUmVz
dWx0cyJdOwogICAgIH0gQGNhdGNoIChOU0V4Y2VwdGlvbiAqZXhjZXB0aW9uKSB7CiAgICAgICAg
IExPR19FUlJPUigiRmFpbGVkIHRvIGRlY29kZSBOU0FycmF5IG9mIEREU2NhblJlc3VsdDogJUAi
LCBleGNlcHRpb24pOwotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgfQogICAgIAogICAgIFt1bmFyY2hpdmVyIGZpbmlzaERlY29kaW5nXTsK
LSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4geyBXVEZNb3ZlKHJlc3VsdCkgfTsKIH0KICNl
bmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5t
bQppbmRleCA4MzY5ZTMzOWMyODVjMjU4MzIxMWEyNmJjNGQxYTM0YmExYTUyOTcxLi4zNWYxNzdj
OTc1OTUxNjJkZjM3ODNlODgyNjA4M2ViMWE3NjZjNWVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTU0MjMsMTAgKzU0MjMsMzkgQEAg
LSAodm9pZClfc2V0UGFnZU11dGVkOihfV0tNZWRpYU11dGVkU3RhdGUpbXV0ZWRTdGF0ZQogICAg
IF9wYWdlLT5zZXRNdXRlZChjb3JlU3RhdGUpOwogfQogCistICh2b2lkKV9yZW1vdmVEYXRhRGV0
ZWN0ZWRMaW5rczooZGlzcGF0Y2hfYmxvY2tfdCljb21wbGV0aW9uCit7CisjaWYgRU5BQkxFKERB
VEFfREVURUNUSU9OKQorICAgIF9wYWdlLT5yZW1vdmVEYXRhRGV0ZWN0ZWRMaW5rcyhbY29tcGxl
dGlvbiA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uKSwgcGFnZSA9IG1ha2VXZWFrUHRyKF9wYWdl
LmdldCgpKV0gKGF1dG8mIHJlc3VsdCkgeworICAgICAgICBpZiAocGFnZSkKKyAgICAgICAgICAg
IHBhZ2UtPnNldERhdGFEZXRlY3Rpb25SZXN1bHQocmVzdWx0KTsKKyAgICAgICAgaWYgKGNvbXBs
ZXRpb24pCisgICAgICAgICAgICBjb21wbGV0aW9uKCk7CisgICAgfSk7CisjZWxzZQorICAgIFVO
VVNFRF9QQVJBTShjb21wbGV0aW9uKTsKKyNlbmRpZgorfQorCiAjcHJhZ21hIG1hcmsgaU9TLXNw
ZWNpZmljIG1ldGhvZHMKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKKy0gKHZvaWQpX2Rl
dGVjdERhdGFXaXRoVHlwZXM6KFdLRGF0YURldGVjdG9yVHlwZXMpdHlwZXMgY29tcGxldGlvbkhh
bmRsZXI6KGRpc3BhdGNoX2Jsb2NrX3QpY29tcGxldGlvbgoreworI2lmIEVOQUJMRShEQVRBX0RF
VEVDVElPTikKKyAgICBfcGFnZS0+ZGV0ZWN0RGF0YUluQWxsRnJhbWVzKGZyb21XS0RhdGFEZXRl
Y3RvclR5cGVzKHR5cGVzKSwgW2NvbXBsZXRpb24gPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbiks
IHBhZ2UgPSBtYWtlV2Vha1B0cihfcGFnZS5nZXQoKSldIChhdXRvJiByZXN1bHQpIHsKKyAgICAg
ICAgaWYgKHBhZ2UpCisgICAgICAgICAgICBwYWdlLT5zZXREYXRhRGV0ZWN0aW9uUmVzdWx0KHJl
c3VsdCk7CisgICAgICAgIGlmIChjb21wbGV0aW9uKQorICAgICAgICAgICAgY29tcGxldGlvbigp
OworICAgIH0pOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0odHlwZXMpOworICAgIFVOVVNFRF9Q
QVJBTShjb21wbGV0aW9uKTsKKyNlbmRpZgorfQorCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJ
KQogLSAodm9pZClyZW1vdmVGcm9tU3VwZXJ2aWV3CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaAppbmRleCAxMzNhM2U3MmFm
ZjMzNGU1ZjYzYjkyZjcxYTlhMGE2MDg4MTU5Nzk2Li41OTY1MDIzMGUxZGRlMzdkYWVjYzNlY2Jj
OTE0ZDQ4ZWY5YjMxMjZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2lmIFdLX0FQ
SV9FTkFCTEVECiAKKyNpbXBvcnQgPFdlYktpdC9XS0RhdGFEZXRlY3RvclR5cGVzLmg+CiAjaW1w
b3J0IDxXZWJLaXQvX1dLQWN0aXZhdGVkRWxlbWVudEluZm8uaD4KICNpbXBvcnQgPFdlYktpdC9f
V0tBdHRhY2htZW50Lmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLRmluZE9wdGlvbnMuaD4KQEAgLTE5
Myw2ICsxOTQsOCBAQCB0eXBlZGVmIE5TX09QVElPTlMoTlNVSW50ZWdlciwgX1dLUmVjdEVkZ2Up
IHsKIC0gKHZvaWQpX3Nob3dTYWZlQnJvd3NpbmdXYXJuaW5nV2l0aFRpdGxlOihOU1N0cmluZyAq
KXRpdGxlIHdhcm5pbmc6KE5TU3RyaW5nICopd2FybmluZyBkZXRhaWxzOihOU0F0dHJpYnV0ZWRT
dHJpbmcgKilkZXRhaWxzIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKEJPT0wpKWNvbXBsZXRp
b25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9T
X1RCQSkpOwogCiAtICh2b2lkKV9pc0pJVEVuYWJsZWQ6KHZvaWQoXikoQk9PTCkpY29tcGxldGlv
bkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1Nf
VEJBKSk7CistICh2b2lkKV9yZW1vdmVEYXRhRGV0ZWN0ZWRMaW5rczooZGlzcGF0Y2hfYmxvY2tf
dCljb21wbGV0aW9uIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tf
SU9TX1RCQSkpOworCiAtIChJQkFjdGlvbilfYWxpZ25DZW50ZXI6KGlkKXNlbmRlciBXS19BUElf
QVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIC0gKElCQWN0
aW9uKV9hbGlnbkp1c3RpZmllZDooaWQpc2VuZGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdL
X01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogLSAoSUJBY3Rpb24pX2FsaWduTGVmdDooaWQp
c2VuZGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RC
QSkpOwpAQCAtMjE2LDYgKzIxOSw4IEBAIHR5cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRlZ2VyLCBf
V0tSZWN0RWRnZSkgewogLSAodm9pZClfc2V0Rm9udFNpemU6KENHRmxvYXQpZm9udFNpemUgc2Vu
ZGVyOihpZClzZW5kZXIgV0tfQVBJX0FWQUlMQUJMRShpb3MoV0tfSU9TX1RCQSkpOwogLSAodm9p
ZClfc2V0VGV4dENvbG9yOihVSUNvbG9yICopY29sb3Igc2VuZGVyOihpZClzZW5kZXIgV0tfQVBJ
X0FWQUlMQUJMRShpb3MoV0tfSU9TX1RCQSkpOwogCistICh2b2lkKV9kZXRlY3REYXRhV2l0aFR5
cGVzOihXS0RhdGFEZXRlY3RvclR5cGVzKXR5cGVzIGNvbXBsZXRpb25IYW5kbGVyOihkaXNwYXRj
aF9ibG9ja190KWNvbXBsZXRpb24gV0tfQVBJX0FWQUlMQUJMRShpb3MoV0tfSU9TX1RCQSkpOwor
CiAvLyBERVJFQ0FURUQ6IFRoZSBzZXR0ZXJzIG9mIHRoZSB0aHJlZSBmb2xsb3dpbmcgZnVuY3Rp
b24gYXJlIGRlcHJlY2F0ZWQsIHBsZWFzZSB1c2Ugb3ZlcnJpZGVMYXlvdXRQYXJhbWV0ZXJzLgog
Ly8gRGVmaW5lIHRoZSBzbWFsbGVzdCBzaXplIGEgcGFnZSB0YWtlIHdpdGggYSByZWd1bGFyIHZp
ZXdwb3J0LgogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBDR1NpemUgX21pbmltdW1M
YXlvdXRTaXplT3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cAppbmRleCAxMTEwOWRkNTE2ZDc4OWMzODVjOTFmZjgxNjY2YzkyNmQ5NWRmZmQ2Li4zMDJiNGUx
MTMyZTE5YzVhMDI4MmNmMTMxNTA0ZGI4YjYyOTEwZGUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTgyNDMsNiArODI0MywyMCBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6dXBkYXRlQ3VycmVudE1vZGlmaWVyU3RhdGUoKQogI2VuZGlmCiB9CiAKKyNpZiBFTkFC
TEUoREFUQV9ERVRFQ1RJT04pCisKK3ZvaWQgV2ViUGFnZVByb3h5OjpkZXRlY3REYXRhSW5BbGxG
cmFtZXMoV2ViQ29yZTo6RGF0YURldGVjdG9yVHlwZXMgdHlwZXMsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoY29uc3QgRGF0YURldGVjdGlvblJlc3VsdCYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
eworICAgIG1fcHJvY2Vzcy0+Y29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2Fn
ZXM6OldlYlBhZ2U6OkRldGVjdERhdGFJbkFsbEZyYW1lcyhzdGF0aWNfY2FzdDx1aW50NjRfdD4o
dHlwZXMpKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIG1fcGFnZUlEKTsKK30KKwordm9p
ZCBXZWJQYWdlUHJveHk6OnJlbW92ZURhdGFEZXRlY3RlZExpbmtzKENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoY29uc3QgRGF0YURldGVjdGlvblJlc3VsdCYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
eworICAgIG1fcHJvY2Vzcy0+Y29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2Fn
ZXM6OldlYlBhZ2U6OlJlbW92ZURhdGFEZXRlY3RlZExpbmtzKCksIFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpLCBtX3BhZ2VJRCk7Cit9CisKKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKIAogI3VuZGVmIE1FUkdFX1dIRUVMX0VWRU5UUwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaAppbmRleCAwNzE3NzJjOGQ3YzUwZjViMGVjY2YwNTVhOWJlMThlNmJlZGExNzc2
Li4yNTQ1NGJlZWIxZWVjNjhjMDFmODQ3MjcwNjEzNjc0YzE5MTE2NjcwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMzYyLDYgKzM2Miw4IEBAIHB1YmxpYzoKIAog
I2lmIEVOQUJMRShEQVRBX0RFVEVDVElPTikKICAgICBOU0FycmF5ICpkYXRhRGV0ZWN0aW9uUmVz
dWx0cygpIHsgcmV0dXJuIG1fZGF0YURldGVjdGlvblJlc3VsdHMuZ2V0KCk7IH0KKyAgICB2b2lk
IGRldGVjdERhdGFJbkFsbEZyYW1lcyhXZWJDb3JlOjpEYXRhRGV0ZWN0b3JUeXBlcywgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChjb25zdCBEYXRhRGV0ZWN0aW9uUmVzdWx0Jik+JiYpOworICAgIHZv
aWQgcmVtb3ZlRGF0YURldGVjdGVkTGlua3MoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBE
YXRhRGV0ZWN0aW9uUmVzdWx0Jik+JiYpOwogI2VuZGlmCiAgICAgICAgIAogI2lmIEVOQUJMRShB
U1lOQ19TQ1JPTExJTkcpICYmIFBMQVRGT1JNKENPQ09BKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCA0YWFlMTRmMTczODcwMDMwYTI3MzQzYjkw
YmQzMWEwODMxYTEyMWJjLi4xMGE3Yzk0MWZlOTAzM2FmMTM2ZDNjMWI5MDllYjFhNjllMzBhMjRk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAt
MzM4NSwxMyArMzM4NSw0MiBAQCB2b2lkIFdlYlBhZ2U6OnVwZGF0ZVByZWZlcmVuY2VzKGNvbnN0
IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlKQogfQogCiAjaWYgRU5BQkxFKERBVEFfREVURUNU
SU9OKQorCiB2b2lkIFdlYlBhZ2U6OnNldERhdGFEZXRlY3Rpb25SZXN1bHRzKE5TQXJyYXkgKmRl
dGVjdGlvblJlc3VsdHMpCiB7CiAgICAgRGF0YURldGVjdGlvblJlc3VsdCBkYXRhRGV0ZWN0aW9u
UmVzdWx0OwogICAgIGRhdGFEZXRlY3Rpb25SZXN1bHQucmVzdWx0cyA9IGRldGVjdGlvblJlc3Vs
dHM7CiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTZXREYXRhRGV0ZWN0aW9uUmVz
dWx0KGRhdGFEZXRlY3Rpb25SZXN1bHQpKTsKIH0KLSNlbmRpZgorCit2b2lkIFdlYlBhZ2U6OnJl
bW92ZURhdGFEZXRlY3RlZExpbmtzKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZW1vdmVEYXRhRGV0ZWN0
ZWRMaW5rczo6QXN5bmNSZXBseSYmIHJlcGx5KQoreworICAgIGZvciAoYXV0byBmcmFtZSA9IG1h
a2VSZWZQdHIoJm1fcGFnZS0+bWFpbkZyYW1lKCkpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJl
ZSgpLnRyYXZlcnNlTmV4dCgpKSB7CisgICAgICAgIGF1dG8gZG9jdW1lbnQgPSBtYWtlUmVmUHRy
KGZyYW1lLT5kb2N1bWVudCgpKTsKKyAgICAgICAgaWYgKCFkb2N1bWVudCkKKyAgICAgICAgICAg
IGNvbnRpbnVlOworCisgICAgICAgIERhdGFEZXRlY3Rpb246OnJlbW92ZURhdGFEZXRlY3RlZExp
bmtzSW5Eb2N1bWVudCgqZG9jdW1lbnQpOworICAgICAgICBmcmFtZS0+c2V0RGF0YURldGVjdGlv
blJlc3VsdHMobnVsbHB0cik7CisgICAgfQorICAgIHJlcGx5KHsgbV9wYWdlLT5tYWluRnJhbWUo
KS5kYXRhRGV0ZWN0aW9uUmVzdWx0cygpIH0pOworfQorCit2b2lkIFdlYlBhZ2U6OmRldGVjdERh
dGFJbkFsbEZyYW1lcyh1aW50NjRfdCB0eXBlcywgTWVzc2FnZXM6OldlYlBhZ2U6OkRldGVjdERh
dGFJbkFsbEZyYW1lczo6QXN5bmNSZXBseSYmIHJlcGx5KQoreworICAgIGF1dG8gZGF0YURldGVj
dG9yVHlwZXMgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpEYXRhRGV0ZWN0b3JUeXBlcz4odHlwZXMp
OworICAgIGZvciAoYXV0byBmcmFtZSA9IG1ha2VSZWZQdHIoJm1fcGFnZS0+bWFpbkZyYW1lKCkp
OyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgpKSB7CisgICAgICAg
IGF1dG8gZG9jdW1lbnQgPSBtYWtlUmVmUHRyKGZyYW1lLT5kb2N1bWVudCgpKTsKKyAgICAgICAg
aWYgKCFkb2N1bWVudCkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIFJlZlB0cjxS
YW5nZT4gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKCpkb2N1bWVudCwgUG9zaXRpb24geyBkb2N1bWVu
dC5nZXQoKSwgUG9zaXRpb246OlBvc2l0aW9uSXNCZWZvcmVDaGlsZHJlbiB9LCBQb3NpdGlvbiB7
IGRvY3VtZW50LmdldCgpLCBQb3NpdGlvbjo6UG9zaXRpb25Jc0FmdGVyQ2hpbGRyZW4gfSk7Cisg
ICAgICAgIGZyYW1lLT5zZXREYXRhRGV0ZWN0aW9uUmVzdWx0cyhEYXRhRGV0ZWN0aW9uOjpkZXRl
Y3RDb250ZW50SW5SYW5nZShyYW5nZSwgZGF0YURldGVjdG9yVHlwZXMsIG1fZGF0YURldGVjdGlv
bkNvbnRleHQuZ2V0KCkpKTsKKyAgICB9CisgICAgcmVwbHkoeyBtX3BhZ2UtPm1haW5GcmFtZSgp
LmRhdGFEZXRlY3Rpb25SZXN1bHRzKCkgfSk7Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoREFUQV9E
RVRFQ1RJT04pCiAKICNpZiBQTEFURk9STShDT0NPQSkKIHZvaWQgV2ViUGFnZTo6d2lsbENvbW1p
dExheWVyVHJlZShSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbiYgbGF5ZXJUcmFuc2FjdGlvbikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCA1NzUzMjk4
NDg5NTkwMzk0NDBmYTFhYjE3ZmI3MTA2NTU4M2U4N2E4Li4zODJkMWY0YWEzMWY3ZDI4MmQyZTg3
MGQ2OTg1YmVhOWJjZDdjYzc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oCkBAIC00OCw2ICs0OCw3IEBACiAjaW5jbHVkZSAiU2hhcmVkTWVtb3J5LmgiCiAj
aW5jbHVkZSAiVXNlckRhdGEuaCIKICNpbmNsdWRlICJXZWJCYWNrRm9yd2FyZExpc3RQcm94eS5o
IgorI2luY2x1ZGUgIldlYlBhZ2VNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlVSTFNjaGVtZUhh
bmRsZXIuaCIKICNpbmNsdWRlICJXZWJVc2VyQ29udGVudENvbnRyb2xsZXIuaCIKICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaD4KQEAgLTkyLDcgKzkz
LDYgQEAKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW5jbHVkZSAiR2VzdHVyZVR5cGVz
LmgiCi0jaW5jbHVkZSAiV2ViUGFnZU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRQ
b2ludEhhc2guaD4KICNpbmNsdWRlIDxXZWJDb3JlL1ZpZXdwb3J0Q29uZmlndXJhdGlvbi5oPgog
I2VuZGlmCkBAIC0xMDcsNiArMTA3LDEwIEBACiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybVRv
dWNoRXZlbnQuaD4KICNlbmRpZgogCisjaWYgRU5BQkxFKERBVEFfREVURUNUSU9OKQorI2luY2x1
ZGUgPFdlYkNvcmUvRGF0YURldGVjdGlvbi5oPgorI2VuZGlmCisKICNpZiBFTkFCTEUoTUFDX0dF
U1RVUkVfRVZFTlRTKQogI2luY2x1ZGUgPFdlYktpdEFkZGl0aW9ucy9QbGF0Zm9ybUdlc3R1cmVF
dmVudE1hYy5oPgogI2VuZGlmCkBAIC05OTIsNiArOTk2LDggQEAgcHVibGljOgogCiAjaWYgRU5B
QkxFKERBVEFfREVURUNUSU9OKQogICAgIHZvaWQgc2V0RGF0YURldGVjdGlvblJlc3VsdHMoTlNB
cnJheSAqKTsKKyAgICB2b2lkIGRldGVjdERhdGFJbkFsbEZyYW1lcyh1aW50NjRfdCwgTWVzc2Fn
ZXM6OldlYlBhZ2U6OkRldGVjdERhdGFJbkFsbEZyYW1lczo6QXN5bmNSZXBseSYmKTsKKyAgICB2
b2lkIHJlbW92ZURhdGFEZXRlY3RlZExpbmtzKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZW1vdmVEYXRh
RGV0ZWN0ZWRMaW5rczo6QXN5bmNSZXBseSYmKTsKICNlbmRpZgogCiAgICAgdW5zaWduZWQgZXh0
ZW5kSW5jcmVtZW50YWxSZW5kZXJpbmdTdXBwcmVzc2lvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggOGIyOTZj
ZTAwZDQ0MjU5ZDRlNWI3YWRiOWNiNDE1MjIzZjlkZDk4Zi4uMThiMDUxMGMxODA3NTY4OWFiZDQ3
YWFiZTQyOTc2YjdjNDAwZjQ3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC0xOTMsNiArMTkzLDExIEBAIG1lc3Nh
Z2VzIC0+IFdlYlBhZ2UgTGVnYWN5UmVjZWl2ZXIgewogICAgIFBlcmZvcm1EaWN0aW9uYXJ5TG9v
a3VwQXRMb2NhdGlvbihXZWJDb3JlOjpGbG9hdFBvaW50IHBvaW50KQogI2VuZGlmCiAKKyNpZiBF
TkFCTEUoREFUQV9ERVRFQ1RJT04pCisgICAgRGV0ZWN0RGF0YUluQWxsRnJhbWVzKHVpbnQ2NF90
IHR5cGVzKSAtPiAoc3RydWN0IFdlYktpdDo6RGF0YURldGVjdGlvblJlc3VsdCByZXN1bHQpIEFz
eW5jCisgICAgUmVtb3ZlRGF0YURldGVjdGVkTGlua3MoKSAtPiAoc3RydWN0IFdlYktpdDo6RGF0
YURldGVjdGlvblJlc3VsdCByZXN1bHQpIEFzeW5jCisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKE1B
QykKICAgICBQZXJmb3JtRGljdGlvbmFyeUxvb2t1cE9mQ3VycmVudFNlbGVjdGlvbigpCiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA5
ZWUxNWM0ZTAyZmEwOTMxNzYzNjVjMTIzODY4NGI5YmZkYTIxZWMyLi40YWQ1MzUxZmY0NDk0OWE3
YTU5MGYwN2EyMGEzODg3NjQ4ZThkNzY4IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysr
IGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTIgQEAKKzIwMTgtMTEtMjMgIFdlbnNvbiBI
c2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBBZGQgV0tX
ZWJWaWV3IFNQSSB0byB0cmlnZ2VyIGFuZCByZW1vdmUgZGF0YSBkZXRlY3Rpb24KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MTkxOAorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vMzYxODUwNTE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVGltIEhvcnRv
bi4KKworICAgICAgICBBZGQgYW4gQVBJIHRlc3QgdG8gZXhlcmNpc2UgdGhlIG5ldyBXZWJLaXQg
U1BJLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9EYXRhRGV0ZWN0b3JzQ29yZVNQSS5oOiBB
ZGRlZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L0RhdGFEZXRlY3Rpb24ubW06CisgICAgICAgICgtW1dLV2ViVmlldyBzeW5jaHJvbm91c2x5RGV0
ZWN0RGF0YVdpdGhUeXBlczpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IHN5bmNocm9ub3VzbHlS
ZW1vdmVEYXRhRGV0ZWN0ZWRMaW5rc10pOgorICAgICAgICAoVEVTVCk6CisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0F0dGFjaG1lbnRUZXN0cy5tbToKKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAoLVtUZXN0V0tXZWJWaWV3IHRhZ3NJ
bkJvZHldKTogRGVsZXRlZC4KKyAgICAgICAgKC1bVGVzdFdLV2ViVmlldyBleHBlY3RFbGVtZW50
VGFnc0luT3JkZXI6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1Rlc3RXS1dlYlZpZXcgZXhwZWN0
RWxlbWVudENvdW50OnRhZ05hbWU6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1Rlc3RXS1dlYlZp
ZXcgZXhwZWN0RWxlbWVudFRhZzp0b0NvbWVCZWZvcmU6XSk6IERlbGV0ZWQuCisKKyAgICAgICAg
UmVuYW1lIHRoaXMgZnJvbSBgLWV4cGVjdEVsZW1lbnRDb3VudDp0YWdOYW1lOmAgdG8gYC1leHBl
Y3RFbGVtZW50Q291bnQ6cXVlcnlTZWxlY3RvcjpgLgorCisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9kYXRhLWRldGVjdG9ycy5odG1sOiBBZGRlZC4KKworICAgICAg
ICBBZGQgYSBuZXcgdGVzdCBwYWdlIGNvbnRhaW5pbmcgc29tZSBjb250ZW50IHRoYXQgY2FuIGJl
IGRhdGEgZGV0ZWN0ZWQuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dl
YlZpZXcuaDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcubW06
CisgICAgICAgICgtW1dLV2ViVmlldyB0YWdzSW5Cb2R5XSk6CisgICAgICAgICgtW1dLV2ViVmll
dyBleHBlY3RFbGVtZW50VGFnc0luT3JkZXI6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBleHBl
Y3RFbGVtZW50Q291bnQ6cXVlcnlTZWxlY3RvcjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IGV4
cGVjdEVsZW1lbnRUYWc6dG9Db21lQmVmb3JlOl0pOgorCisgICAgICAgIE1vdmUgc29tZSB0ZXN0
aW5nIGhlbHBlciBmdW5jdGlvbnMgZnJvbSBXS0F0dGFjaG1lbnRUZXN0cyB0byBhIHRlc3Rpbmcg
Y2F0ZWdvcnkgb24gV0tXZWJWaWV3LiBUaGlzIGFsbG93cyB1cyB0bworICAgICAgICB1c2UgYC1l
eHBlY3RFbGVtZW50Q291bnQ6cXVlcnlTZWxlY3RvcjpgIGluIHRlc3RzIG91dHNpZGUgb2YgV0tB
dHRhY2htZW50VGVzdHMuCisKKyAgICAgICAgKC1bV0tXZWJWaWV3IG9iamVjdEJ5RXZhbHVhdGlu
Z0phdmFTY3JpcHQ6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBvYmplY3RCeUV2YWx1YXRpbmdK
YXZhU2NyaXB0V2l0aFVzZXJHZXN0dXJlOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgc3RyaW5n
QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpdKToKKworICAgICAgICBNb3ZlIHNvbWUgY29tbW9uIGhl
bHBlciBmdW5jdGlvbnMgZnJvbSBUZXN0V0tXZWJWaWV3IHRvIGEgdGVzdGluZyBjYXRlZ29yeSBv
biBXS1dlYlZpZXcuCisKKyAgICAgICAgKC1bVGVzdFdLV2ViVmlldyBvYmplY3RCeUV2YWx1YXRp
bmdKYXZhU2NyaXB0Ol0pOiBEZWxldGVkLgorICAgICAgICAoLVtUZXN0V0tXZWJWaWV3IG9iamVj
dEJ5RXZhbHVhdGluZ0phdmFTY3JpcHRXaXRoVXNlckdlc3R1cmU6XSk6IERlbGV0ZWQuCisgICAg
ICAgICgtW1Rlc3RXS1dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpdKTogRGVs
ZXRlZC4KKwogMjAxOC0xMS0yMiAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAg
ICAgICAgIFtMRkNdW0lGQ10gT2Zmc2V0IGZvcm1hdHRpbmcgY29udGV4dCByb290IHJ1bnMgd2l0
aCBob3Jpem9udGFsIG1hcmdpbnMuCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL0Rh
dGFEZXRlY3RvcnNDb3JlU1BJLmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL0RhdGFEZXRlY3RvcnND
b3JlU1BJLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZjI5YjQzNjVmZTJhZGYzNzk4OGY3MDJhZGQ0NGUzN2RiNWUx
YTE3YwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvRGF0YURldGVjdG9y
c0NvcmVTUEkuaApAQCAtMCwwICsxLDQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpZiBFTkFCTEUoREFUQV9ERVRFQ1RJT04pCisKKyNpbXBvcnQgPHBhbC9zcGkvY29jb2EvRGF0
YURldGVjdG9yc0NvcmVTUEkuaD4KKworI2lmICFVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQorCitA
aW50ZXJmYWNlIEREU2Nhbm5lclJlc3VsdCAoUHJpdmF0ZSkKK0Bwcm9wZXJ0eSAocmVhZG9ubHks
IG5vbmF0b21pYykgTlNTdHJpbmcgKnZhbHVlOworQHByb3BlcnR5IChyZWFkb25seSwgbm9uYXRv
bWljKSBOU1N0cmluZyAqdHlwZTsKK0Bwcm9wZXJ0eSAocmVhZG9ubHksIG5vbmF0b21pYykgRERS
ZXN1bHRDYXRlZ29yeSBjYXRlZ29yeTsKK0BlbmQKKworI2VuZGlmIC8vICFVU0UoQVBQTEVfSU5U
RVJOQUxfU0RLKQorCisjZW5kaWYgLy8gRU5BQkxFKERBVEFfREVURUNUSU9OKQpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCBlZjBiZDAwNWEyODdlZjZjNmQ5OTQ5MzE5Y2JmNTQxNDU0MjQxNTYz
Li5kZTYyZGYwM2QwZDU2MDhkOTg4ZDFkNTBmYjdiMGFkMGI5N2Y4MGJkIDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtODUyLDYgKzg1Miw3IEBACiAJCUY0NkEwOTVBMUVEOEE2RTYwMEQ0QUE1
NSAvKiBhcHBsZS5naWYgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRjQ3RDMwRUIxRUQyODYxOTAwMDQ4MkUxIC8qIGFwcGxlLmdpZiAqLzsgfTsK
IAkJRjQ2QTA5NUIxRUQ4QTZFNjAwRDRBQTU1IC8qIGdpZi1hbmQtZmlsZS1pbnB1dC5odG1sIGlu
IENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0N0Qz
MEVEMUVEMjhBNkMwMDA0ODJFMSAvKiBnaWYtYW5kLWZpbGUtaW5wdXQuaHRtbCAqLzsgfTsKIAkJ
RjQ3NzI4OTkxRTRBRTNDMTAwN0FCRjZBIC8qIGZ1bGwtcGFnZS1jb250ZW50ZWRpdGFibGUuaHRt
bCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
NDc3Mjg5ODFFNEFFM0FEMDA3QUJGNkEgLyogZnVsbC1wYWdlLWNvbnRlbnRlZGl0YWJsZS5odG1s
ICovOyB9OworCQlGNDdERkIyNjIxQTg3OERGMDAwMjFGQjYgLyogZGF0YS1kZXRlY3RvcnMuaHRt
bCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
NDdERkIyNDIxQTg3MDRBMDAwMjFGQjYgLyogZGF0YS1kZXRlY3RvcnMuaHRtbCAqLzsgfTsKIAkJ
RjQ4MTFFNTkyMTk0MEJERTAwQTVFMEZEIC8qIFdLV2ViVmlld0VkaXRBY3Rpb25zLm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ4MTFFNTgyMTk0MEI0
NDAwQTVFMEZEIC8qIFdLV2ViVmlld0VkaXRBY3Rpb25zLm1tICovOyB9OwogCQlGNDg1NkNBMzFF
NjQ5RUE4MDA5RDdFRTcgLyogYXR0YWNobWVudC1lbGVtZW50Lmh0bWwgaW4gQ29weSBSZXNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ4NTZDQTIxRTY0OThBODAw
OUQ3RUU3IC8qIGF0dGFjaG1lbnQtZWxlbWVudC5odG1sICovOyB9OwogCQlGNDg2QjFEMDFGNjc5
NTIzMDBGMzRCREQgLyogRGF0YVRyYW5zZmVyLXNldERyYWdJbWFnZS5odG1sIGluIENvcHkgUmVz
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0ODZCMUNGMUY2Nzk0
RkYwMEYzNEJERCAvKiBEYXRhVHJhbnNmZXItc2V0RHJhZ0ltYWdlLmh0bWwgKi87IH07CkBAIC0x
MDE5LDYgKzEwMjAsNyBAQAogCQkJCTdBRUFENDgxMUUyMDEyMjcwMDQxNkVGRSAvKiBDcm9zc1Bh
cnRpdGlvbkZpbGVTY2hlbWVBY2Nlc3MuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQlG
NEFCNTc4QTFGNjUxNjU0MDBEQjBEQTEgLyogY3VzdG9tLWRyYWdnYWJsZS1kaXYuaHRtbCBpbiBD
b3B5IFJlc291cmNlcyAqLywKIAkJCQkyOTBGNDI3NTE3MkEyMjFDMDA5MzlGRjAgLyogY3VzdG9t
LXByb3RvY29sLXN5bmMteGhyLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCisJCQkJRjQ3REZC
MjYyMUE4NzhERjAwMDIxRkI2IC8qIGRhdGEtZGV0ZWN0b3JzLmh0bWwgaW4gQ29weSBSZXNvdXJj
ZXMgKi8sCiAJCQkJRjQ4NkIxRDAxRjY3OTUyMzAwRjM0QkREIC8qIERhdGFUcmFuc2Zlci1zZXRE
cmFnSW1hZ2UuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQlGNDU3QTlENjIwMkQ2OEFG
MDBGN0U5RDUgLyogRGF0YVRyYW5zZmVyLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJ
RjQ1MTJFMTMxRjYwQzQ0NjAwQkIzNjlFIC8qIERhdGFUcmFuc2Zlckl0ZW0tZ2V0QXNFbnRyeS5o
dG1sIGluIENvcHkgUmVzb3VyY2VzICovLApAQCAtMjE0Nyw2ICsyMTQ5LDggQEAKIAkJRjQ3NzI4
OTgxRTRBRTNBRDAwN0FCRjZBIC8qIGZ1bGwtcGFnZS1jb250ZW50ZWRpdGFibGUuaHRtbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJmdWxsLXBhZ2UtY29udGVudGVkaXRhYmxlLmh0bWwi
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDdEMzBFQjFFRDI4NjE5MDAwNDgyRTEg
LyogYXBwbGUuZ2lmICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gaW1hZ2UuZ2lmOyBwYXRoID0gYXBwbGUuZ2lmOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlGNDdEMzBFRDFFRDI4QTZDMDAwNDgyRTEgLyogZ2lmLWFuZC1maWxlLWlucHV0Lmh0
bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
Lmh0bWw7IHBhdGggPSAiZ2lmLWFuZC1maWxlLWlucHV0Lmh0bWwiOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlGNDdERkIyNDIxQTg3MDRBMDAwMjFGQjYgLyogZGF0YS1kZXRlY3RvcnMu
aHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJkYXRhLWRldGVjdG9ycy5odG1sIjsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjQ3REZCMjcyMUE4ODVFNzAwMDIxRkI2IC8q
IERhdGFEZXRlY3RvcnNDb3JlU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERhdGFEZXRlY3RvcnNDb3Jl
U1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0ODExRTU4MjE5NDBCNDQwMEE1
RTBGRCAvKiBXS1dlYlZpZXdFZGl0QWN0aW9ucy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IFdLV2ViVmlld0VkaXRBY3Rpb25zLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlGNDg1NkNBMjFFNjQ5OEE4MDA5RDdFRTcgLyogYXR0YWNobWVudC1lbGVt
ZW50Lmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAiYXR0YWNobWVudC1lbGVtZW50
Lmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDg2QjFDRjFGNjc5NEZGMDBG
MzRCREQgLyogRGF0YVRyYW5zZmVyLXNldERyYWdJbWFnZS5odG1sICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5o
dG1sOyBwYXRoID0gIkRhdGFUcmFuc2Zlci1zZXREcmFnSW1hZ2UuaHRtbCI7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0yMzExLDYgKzIzMTUsNyBAQAogCQkJCUExM0VCQjQ0MUI4NzMz
MkIwMDA5NzExMCAvKiBXZWJQcm9jZXNzUGx1Z0luICovLAogCQkJCUY0NTE3QjY4MjA1NEUwQUMw
MEMyNjcyMSAvKiBDbGFzc01ldGhvZFN3aXp6bGVyLmggKi8sCiAJCQkJRjQ1MTdCNjkyMDU0RTBB
QzAwQzI2NzIxIC8qIENsYXNzTWV0aG9kU3dpenpsZXIubW0gKi8sCisJCQkJRjQ3REZCMjcyMUE4
ODVFNzAwMDIxRkI2IC8qIERhdGFEZXRlY3RvcnNDb3JlU1BJLmggKi8sCiAJCQkJRjQ2MTI4QjQy
MTFDODYxQTAwRDlGQURCIC8qIERyYWdBbmREcm9wU2ltdWxhdG9yLmggKi8sCiAJCQkJRjQ0RDA2
NDgxRjM5NjJFMzAwMUEwRTI5IC8qIEVkaXRpbmdUZXN0SGFybmVzcy5oICovLAogCQkJCUY0NEQw
NjQ5MUYzOTYyRTMwMDFBMEUyOSAvKiBFZGl0aW5nVGVzdEhhcm5lc3MubW0gKi8sCkBAIC0yNzQw
LDYgKzI3NDUsNyBAQAogCQkJCTlCMTA1NjQyMUY5MDQ3Q0MwMEQ1NTgzRiAvKiBjb3B5LWh0bWwu
aHRtbCAqLywKIAkJCQk5QjYyNjMwQjFGOEMyNTEwMDA3RUUyOUIgLyogY29weS11cmwuaHRtbCAq
LywKIAkJCQlGNEFCNTc4OTFGNjUxNjRCMDBEQjBEQTEgLyogY3VzdG9tLWRyYWdnYWJsZS1kaXYu
aHRtbCAqLywKKwkJCQlGNDdERkIyNDIxQTg3MDRBMDAwMjFGQjYgLyogZGF0YS1kZXRlY3RvcnMu
aHRtbCAqLywKIAkJCQlGNDg2QjFDRjFGNjc5NEZGMDBGMzRCREQgLyogRGF0YVRyYW5zZmVyLXNl
dERyYWdJbWFnZS5odG1sICovLAogCQkJCUY0NTdBOUIzMjAyRDUzNTMwMEY3RTlENSAvKiBEYXRh
VHJhbnNmZXIuaHRtbCAqLywKIAkJCQlGNDUxMkUxMjFGNjBDNDM0MDBCQjM2OUUgLyogRGF0YVRy
YW5zZmVySXRlbS1nZXRBc0VudHJ5Lmh0bWwgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0RhdGFEZXRlY3Rpb24ubW0gYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0RhdGFEZXRlY3Rpb24ubW0KaW5kZXggYmYzYzk2NmU4
NDcyMDVjYjBmZmJhN2FjYzYyN2VkMDQyZTkyY2JlMy4uOTM1OWVkMDM3MzJlNjA4ODQ2NWQyNTk1
ZDEyMGYzMjJmNzQwNmI2MSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9EYXRhRGV0ZWN0aW9uLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvRGF0YURldGVjdGlvbi5tbQpAQCAtMjUsMTQgKzI1LDQzIEBACiAKICNp
bmNsdWRlICJjb25maWcuaCIKIAorI2ltcG9ydCAiRGF0YURldGVjdG9yc0NvcmVTUEkuaCIKICNp
bXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJUZXN0LmgiCiAjaW1wb3J0ICJU
ZXN0TmF2aWdhdGlvbkRlbGVnYXRlLmgiCisjaW1wb3J0ICJUZXN0V0tXZWJWaWV3LmgiCiAjaW1w
b3J0IDxXZWJLaXQvV2ViS2l0Lmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKICNpZiBX
S19BUElfRU5BQkxFRCAmJiBQTEFURk9STShJT1NfRkFNSUxZKQogCitAaW50ZXJmYWNlIFdLV2Vi
VmlldyAoRGF0YURldGVjdGlvbikKKy0gKHZvaWQpc3luY2hyb25vdXNseURldGVjdERhdGFXaXRo
VHlwZXM6KFdLRGF0YURldGVjdG9yVHlwZXMpdHlwZXM7CistICh2b2lkKXN5bmNocm9ub3VzbHlS
ZW1vdmVEYXRhRGV0ZWN0ZWRMaW5rczsKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFdLV2ViVmll
dyAoRGF0YURldGVjdGlvbikKKworLSAodm9pZClzeW5jaHJvbm91c2x5RGV0ZWN0RGF0YVdpdGhU
eXBlczooV0tEYXRhRGV0ZWN0b3JUeXBlcyl0eXBlcworeworICAgIF9fYmxvY2sgYm9vbCBkb25l
ID0gZmFsc2U7CisgICAgW3NlbGYgX2RldGVjdERhdGFXaXRoVHlwZXM6dHlwZXMgY29tcGxldGlv
bkhhbmRsZXI6XnsKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktp
dEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKK30KKworLSAodm9pZClzeW5jaHJvbm91c2x5UmVtb3Zl
RGF0YURldGVjdGVkTGlua3MKK3sKKyAgICBfX2Jsb2NrIGJvb2wgZG9uZSA9IGZhbHNlOworICAg
IFtzZWxmIF9yZW1vdmVEYXRhRGV0ZWN0ZWRMaW5rczpeeworICAgICAgICBkb25lID0gdHJ1ZTsK
KyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworfQorCitAZW5k
CisKIHN0YXRpYyBib29sIHJhblNjcmlwdDsKIAogQGludGVyZmFjZSBEYXRhRGV0ZWN0aW9uVUlE
ZWxlZ2F0ZSA6IE5TT2JqZWN0IDxXS1VJRGVsZWdhdGU+CkBAIC05Nyw0ICsxMjYsMzkgQEAgVEVT
VChXZWJLaXQsIERJU0FCTEVEX0RhdGFEZXRlY3Rpb25SZWZlcmVuY2VEYXRlKQogICAgIGV4cGVj
dExpbmtDb3VudCh3ZWJWaWV3LmdldCgpLCBAInllc3RlcmRheSBhdCA2UE0iLCAxKTsKIH0KIAor
VEVTVChXZWJLaXQsIEFkZEFuZFJlbW92ZURhdGFEZXRlY3RvcnMpCit7CisgICAgYXV0byB3ZWJW
aWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0
TWFrZSgwLCAwLCAzMjAsIDUwMCldKTsKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZFRl
c3RQYWdlTmFtZWQ6QCJkYXRhLWRldGVjdG9ycyJdOworICAgIFt3ZWJWaWV3IGV4cGVjdEVsZW1l
bnRDb3VudDowIHF1ZXJ5U2VsZWN0b3I6QCJhW3gtYXBwbGUtZGF0YS1kZXRlY3RvcnM9dHJ1ZV0i
XTsKKyAgICBFWFBFQ1RfRVEoMFUsIFt3ZWJWaWV3IF9kYXRhRGV0ZWN0aW9uUmVzdWx0c10uY291
bnQpOworCisgICAgYXV0byBjaGVja0RhdGFEZXRlY3Rpb25SZXN1bHRzID0gW10gKE5TQXJyYXk8
RERTY2FubmVyUmVzdWx0ICo+ICpyZXN1bHRzKSB7CisgICAgICAgIEVYUEVDVF9FUSgzVSwgcmVz
dWx0cy5jb3VudCk7CisgICAgICAgIEVYUEVDVF9FUShERFJlc3VsdENhdGVnb3J5VW5rbm93biwg
cmVzdWx0c1swXS5jYXRlZ29yeSk7CisgICAgICAgIEVYUEVDVF9UUlVFKFtyZXN1bHRzWzBdLnZh
bHVlIGNvbnRhaW5zU3RyaW5nOkAiKzEtMjM0LTU2Ny04OTAwIl0pOworICAgICAgICBFWFBFQ1Rf
VFJVRShbcmVzdWx0c1swXS52YWx1ZSBjb250YWluc1N0cmluZzpAImh0dHBzOi8vd3d3LmFwcGxl
LmNvbSJdKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoW3Jlc3VsdHNbMF0udmFsdWUgY29udGFpbnNT
dHJpbmc6QCIyIEFwcGxlIFBhcmsgV2F5LCBDdXBlcnRpbm8gOTUwMTQiXSk7CisgICAgICAgIEVY
UEVDVF9XS19TVFJFUSgiU2lnbmF0dXJlQmxvY2siLCByZXN1bHRzWzBdLnR5cGUpOworICAgICAg
ICBFWFBFQ1RfRVEoRERSZXN1bHRDYXRlZ29yeUNhbGVuZGFyRXZlbnQsIHJlc3VsdHNbMV0uY2F0
ZWdvcnkpOworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoIkRhdGUiLCByZXN1bHRzWzFdLnR5cGUp
OworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoIkRlY2VtYmVyIDIxLCAyMDIxIiwgcmVzdWx0c1sx
XS52YWx1ZSk7CisgICAgICAgIEVYUEVDVF9FUShERFJlc3VsdENhdGVnb3J5TWlzYywgcmVzdWx0
c1syXS5jYXRlZ29yeSk7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUSgiRmxpZ2h0SW5mb3JtYXRp
b24iLCByZXN1bHRzWzJdLnR5cGUpOworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoIkFDNzgwIiwg
cmVzdWx0c1syXS52YWx1ZSk7CisgICAgfTsKKworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlE
ZXRlY3REYXRhV2l0aFR5cGVzOldLRGF0YURldGVjdG9yVHlwZUFsbF07CisgICAgW3dlYlZpZXcg
ZXhwZWN0RWxlbWVudENvdW50OjUgcXVlcnlTZWxlY3RvcjpAImFbeC1hcHBsZS1kYXRhLWRldGVj
dG9ycz10cnVlXSJdOworICAgIGNoZWNrRGF0YURldGVjdGlvblJlc3VsdHMoW3dlYlZpZXcgX2Rh
dGFEZXRlY3Rpb25SZXN1bHRzXSk7CisKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5UmVtb3Zl
RGF0YURldGVjdGVkTGlua3NdOworICAgIFt3ZWJWaWV3IGV4cGVjdEVsZW1lbnRDb3VudDowIHF1
ZXJ5U2VsZWN0b3I6QCJhW3gtYXBwbGUtZGF0YS1kZXRlY3RvcnM9dHJ1ZV0iXTsKKyAgICBFWFBF
Q1RfRVEoMFUsIFt3ZWJWaWV3IF9kYXRhRGV0ZWN0aW9uUmVzdWx0c10uY291bnQpOworCisgICAg
W3dlYlZpZXcgc3luY2hyb25vdXNseURldGVjdERhdGFXaXRoVHlwZXM6V0tEYXRhRGV0ZWN0b3JU
eXBlQWRkcmVzcyB8IFdLRGF0YURldGVjdG9yVHlwZVBob25lTnVtYmVyXTsKKyAgICBbd2ViVmll
dyBleHBlY3RFbGVtZW50Q291bnQ6MiBxdWVyeVNlbGVjdG9yOkAiYVt4LWFwcGxlLWRhdGEtZGV0
ZWN0b3JzPXRydWVdIl07CisgICAgY2hlY2tEYXRhRGV0ZWN0aW9uUmVzdWx0cyhbd2ViVmlldyBf
ZGF0YURldGVjdGlvblJlc3VsdHNdKTsKK30KKwogI2VuZGlmCmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLQXR0YWNobWVudFRlc3RzLm1tIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0F0dGFjaG1lbnRUZXN0cy5tbQpp
bmRleCBlMmNlNzJhNDM1MzMzZmRlMDcxMDJlYWY3ZDhjMDAyZGEwOTRkN2M1Li5kNDhmNDNlZjcy
MTIxZTJiNTk3YTg3NTc4MDM5Zjc3OGU5NDdmNTcwIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLQXR0YWNobWVudFRlc3RzLm1tCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tBdHRhY2htZW50VGVzdHMubW0KQEAg
LTIxNSwzNyArMjE1LDYgQEAgc3RhdGljIE5TRGF0YSAqdGVzdFBERkRhdGEoKQogCiBAaW1wbGVt
ZW50YXRpb24gVGVzdFdLV2ViVmlldyAoQXR0YWNobWVudFRlc3RpbmcpCiAKLS0gKE5TQXJyYXk8
TlNTdHJpbmcgKj4gKil0YWdzSW5Cb2R5Ci17Ci0gICAgcmV0dXJuIFtzZWxmIG9iamVjdEJ5RXZh
bHVhdGluZ0phdmFTY3JpcHQ6QCJBcnJheS5mcm9tKGRvY3VtZW50LmJvZHkuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoJyonKSkubWFwKGUgPT4gZS50YWdOYW1lKSJdOwotfQotCi0tICh2b2lkKWV4cGVj
dEVsZW1lbnRUYWdzSW5PcmRlcjooTlNBcnJheTxOU1N0cmluZyAqPiAqKXRhZ05hbWVzCi17Ci0g
ICAgYXV0byByZW1haW5pbmdUYWdzID0gYWRvcHROUyhbdGFnTmFtZXMgbXV0YWJsZUNvcHldKTsK
LSAgICBOU0FycmF5PE5TU3RyaW5nICo+ICp0YWdzSW5Cb2R5ID0gc2VsZi50YWdzSW5Cb2R5Owot
ICAgIGZvciAoTlNTdHJpbmcgKnRhZyBpbiB0YWdzSW5Cb2R5LnJldmVyc2VPYmplY3RFbnVtZXJh
dG9yKSB7Ci0gICAgICAgIGlmIChbdGFnIGlzRXF1YWxUb1N0cmluZzpbcmVtYWluaW5nVGFncyBs
YXN0T2JqZWN0XV0pCi0gICAgICAgICAgICBbcmVtYWluaW5nVGFncyByZW1vdmVMYXN0T2JqZWN0
XTsKLSAgICAgICAgaWYgKCFbcmVtYWluaW5nVGFncyBjb3VudF0pCi0gICAgICAgICAgICBicmVh
azsKLSAgICB9Ci0gICAgRVhQRUNUX0VRKFtyZW1haW5pbmdUYWdzIGNvdW50XSwgMFUpOwotICAg
IGlmIChbcmVtYWluaW5nVGFncyBjb3VudF0pCi0gICAgICAgIE5TTG9nKEAiRXhwZWN0ZWQgdG8g
ZmluZCBvcmRlcmVkIHRhZ3M6ICVAIGluOiAlQCIsIHRhZ05hbWVzLCB0YWdzSW5Cb2R5KTsKLX0K
LQotLSAodm9pZClleHBlY3RFbGVtZW50Q291bnQ6KE5TSW50ZWdlciljb3VudCB0YWdOYW1lOihO
U1N0cmluZyAqKXRhZ05hbWUKLXsKLSAgICBOU1N0cmluZyAqc2NyaXB0ID0gW05TU3RyaW5nIHN0
cmluZ1dpdGhGb3JtYXQ6QCJkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCclQCcpLmxlbmd0aCIs
IHRhZ05hbWVdOwotICAgIEVYUEVDVF9FUShjb3VudCwgW3NlbGYgc3RyaW5nQnlFdmFsdWF0aW5n
SmF2YVNjcmlwdDpzY3JpcHRdLmludGVnZXJWYWx1ZSk7Ci19Ci0KLS0gKHZvaWQpZXhwZWN0RWxl
bWVudFRhZzooTlNTdHJpbmcgKil0YWdOYW1lIHRvQ29tZUJlZm9yZTooTlNTdHJpbmcgKilvdGhl
clRhZ05hbWUKLXsKLSAgICBbc2VsZiBleHBlY3RFbGVtZW50VGFnc0luT3JkZXI6QFt0YWdOYW1l
LCBvdGhlclRhZ05hbWVdXTsKLX0KLQogLSAoX1dLQXR0YWNobWVudCAqKXN5bmNocm9ub3VzbHlJ
bnNlcnRBdHRhY2htZW50V2l0aEZpbGVXcmFwcGVyOihOU0ZpbGVXcmFwcGVyICopZmlsZVdyYXBw
ZXIgY29udGVudFR5cGU6KE5TU3RyaW5nICopY29udGVudFR5cGUKIHsKICAgICBfX2Jsb2NrIGJv
b2wgZG9uZSA9IGZhbHNlOwpAQCAtODMxLDcgKzgwMCw3IEBAIFRFU1QoV0tBdHRhY2htZW50VGVz
dHMsIEluc2VydEZvbGRlckFuZEZpbGVXaXRoVW5rbm93bkV4dGVuc2lvbikKICAgICB9CiAKICAg
ICBhdXRvIGNoZWNrQXR0YWNobWVudENvbnNpc3RlbmN5ID0gW3dlYlZpZXcsIGZpbGUsIGZvbGRl
cl0gKF9XS0F0dGFjaG1lbnQgKmV4cGVjdGVkRmlsZUF0dGFjaG1lbnQsIF9XS0F0dGFjaG1lbnQg
KmV4cGVjdGVkRm9sZGVyQXR0YWNobWVudCkgewotICAgICAgICBbd2ViVmlldyBleHBlY3RFbGVt
ZW50Q291bnQ6MiB0YWdOYW1lOkAiQVRUQUNITUVOVCJdOworICAgICAgICBbd2ViVmlldyBleHBl
Y3RFbGVtZW50Q291bnQ6MiBxdWVyeVNlbGVjdG9yOkAiQVRUQUNITUVOVCJdOwogICAgICAgICBF
WFBFQ1RfVFJVRShVVFR5cGVDb25mb3Jtc1RvKChfX2JyaWRnZSBDRlN0cmluZ1JlZilbd2ViVmll
dyB2YWx1ZU9mQXR0cmlidXRlOkAidHlwZSIgZm9yUXVlcnlTZWxlY3RvcjpAImF0dGFjaG1lbnRb
dGl0bGU9Zm9sZGVyXSJdLCBrVVRUeXBlRGlyZWN0b3J5KSk7CiAgICAgICAgIEVYUEVDVF9UUlVF
KFVUVHlwZUNvbmZvcm1zVG8oKF9fYnJpZGdlIENGU3RyaW5nUmVmKVt3ZWJWaWV3IHZhbHVlT2ZB
dHRyaWJ1dGU6QCJ0eXBlIiBmb3JRdWVyeVNlbGVjdG9yOkAiYXR0YWNobWVudFt0aXRsZV49dGVz
dF0iXSwga1VUVHlwZURhdGEpKTsKICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGV4cGVjdGVkRmls
ZUF0dGFjaG1lbnQudW5pcXVlSWRlbnRpZmllciwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5n
SmF2YVNjcmlwdDpAImRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2F0dGFjaG1lbnRbdGl0bGVePXRl
c3RdJykudW5pcXVlSWRlbnRpZmllciJdKTsKQEAgLTkyOCw3ICs4OTcsNyBAQCBURVNUKFdLQXR0
YWNobWVudFRlc3RzLCBSZW1vdmVOZXdsaW5lc0JlZm9yZVBhc3RlZEltYWdlKQogICAgICAgICBb
d2ViVmlldyBfc3luY2hyb25vdXNseUV4ZWN1dGVFZGl0Q29tbWFuZDpAIkRlbGV0ZUJhY2t3YXJk
IiBhcmd1bWVudDpuaWxdOwogICAgICAgICBbd2ViVmlldyBfc3luY2hyb25vdXNseUV4ZWN1dGVF
ZGl0Q29tbWFuZDpAIkRlbGV0ZUJhY2t3YXJkIiBhcmd1bWVudDpuaWxdOwogICAgICAgICBvYnNl
cnZlci5leHBlY3RBdHRhY2htZW50VXBkYXRlcyhAWyBdLCBAWyBdKTsKLSAgICAgICAgW3dlYlZp
ZXcgZXhwZWN0RWxlbWVudENvdW50OjAgdGFnTmFtZTpAIkJSIl07CisgICAgICAgIFt3ZWJWaWV3
IGV4cGVjdEVsZW1lbnRDb3VudDowIHF1ZXJ5U2VsZWN0b3I6QCJCUiJdOwogICAgIH0KIH0KIApA
QCAtOTcxLDEzICs5NDAsMTMgQEAgVEVTVChXS0F0dGFjaG1lbnRUZXN0cywgTW92ZVBhc3RlZElt
YWdlQnlEcmFnZ2luZykKICAgICBbd2ViVmlldyBfZXhlY3V0ZUVkaXRDb21tYW5kOkAiSW5zZXJ0
SFRNTCIgYXJndW1lbnQ6QCI8c3Ryb25nPnRleHQ8L3N0cm9uZz4iIGNvbXBsZXRpb246bmlsXTsK
ICAgICBbd2ViVmlldyBfc3luY2hyb25vdXNseUV4ZWN1dGVFZGl0Q29tbWFuZDpAIkluc2VydFBh
cmFncmFwaCIgYXJndW1lbnQ6bmlsXTsKICAgICBbd2ViVmlldyBleHBlY3RFbGVtZW50VGFnOkAi
SU1HIiB0b0NvbWVCZWZvcmU6QCJTVFJPTkciXTsKLSAgICBbd2ViVmlldyBleHBlY3RFbGVtZW50
Q291bnQ6MSB0YWdOYW1lOkAiSU1HIl07CisgICAgW3dlYlZpZXcgZXhwZWN0RWxlbWVudENvdW50
OjEgcXVlcnlTZWxlY3RvcjpAIklNRyJdOwogCiAgICAgLy8gRHJhZyB0aGUgYXR0YWNobWVudCBl
bGVtZW50IHRvIHNvbWV3aGVyZSBiZWxvdyB0aGUgc3Ryb25nIHRleHQuCiAgICAgW3NpbXVsYXRv
ciBydW5Gcm9tOkNHUG9pbnRNYWtlKDUwLCA1MCkgdG86Q0dQb2ludE1ha2UoNTAsIDM1MCldOwog
CiAgICAgW3dlYlZpZXcgZXhwZWN0RWxlbWVudFRhZzpAIlNUUk9ORyIgdG9Db21lQmVmb3JlOkAi
SU1HIl07Ci0gICAgW3dlYlZpZXcgZXhwZWN0RWxlbWVudENvdW50OjEgdGFnTmFtZTpAIklNRyJd
OworICAgIFt3ZWJWaWV3IGV4cGVjdEVsZW1lbnRDb3VudDoxIHF1ZXJ5U2VsZWN0b3I6QCJJTUci
XTsKICAgICBFWFBFQ1RfRVEoW3NpbXVsYXRvciBpbnNlcnRlZEF0dGFjaG1lbnRzXS5jb3VudCwg
W3NpbXVsYXRvciByZW1vdmVkQXR0YWNobWVudHNdLmNvdW50KTsKIAogICAgIFtzaW11bGF0b3Ig
ZW5kRGF0YVRyYW5zZmVyXTsKQEAgLTEwMzQsOCArMTAwMyw4IEBAIFRFU1QoV0tBdHRhY2htZW50
VGVzdHMsIEluc2VydFBhc3RlZEF0dHJpYnV0ZWRTdHJpbmdDb250YWluaW5nTXVsdGlwbGVBdHRh
Y2htZW50CiAgICAgfQogCiAgICAgRVhQRUNUX1RSVUUoemlwQXR0YWNobWVudCAmJiBpbWFnZUF0
dGFjaG1lbnQgJiYgcGRmQXR0YWNobWVudCk7Ci0gICAgW3dlYlZpZXcgZXhwZWN0RWxlbWVudENv
dW50OjIgdGFnTmFtZTpAIkFUVEFDSE1FTlQiXTsKLSAgICBbd2ViVmlldyBleHBlY3RFbGVtZW50
Q291bnQ6MSB0YWdOYW1lOkAiSU1HIl07CisgICAgW3dlYlZpZXcgZXhwZWN0RWxlbWVudENvdW50
OjIgcXVlcnlTZWxlY3RvcjpAIkFUVEFDSE1FTlQiXTsKKyAgICBbd2ViVmlldyBleHBlY3RFbGVt
ZW50Q291bnQ6MSBxdWVyeVNlbGVjdG9yOkAiSU1HIl07CiAgICAgRVhQRUNUX1dLX1NUUkVRKCJh
cHBsaWNhdGlvbi9wZGYiLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAi
ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnYXR0YWNobWVudCcpWzBdLmdldEF0dHJpYnV0ZSgn
dHlwZScpIl0pOwogCiAgICAgTlNTdHJpbmcgKnppcEF0dGFjaG1lbnRUeXBlID0gW3dlYlZpZXcg
c3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwo
J2F0dGFjaG1lbnQnKVsxXS5nZXRBdHRyaWJ1dGUoJ3R5cGUnKSJdOwpAQCAtMTMzOCw3ICsxMzA3
LDcgQEAgVEVTVChXS0F0dGFjaG1lbnRUZXN0cywgUGFzdGVXZWJBcmNoaXZlQ29udGFpbmluZ0lt
YWdlcykKIAogICAgIE9ic2VydmVBdHRhY2htZW50VXBkYXRlc0ZvclNjb3BlIG9ic2VydmVyKHdl
YlZpZXcuZ2V0KCkpOwogICAgIFt3ZWJWaWV3IF9zeW5jaHJvbm91c2x5RXhlY3V0ZUVkaXRDb21t
YW5kOkAiUGFzdGUiIGFyZ3VtZW50Om5pbF07Ci0gICAgW3dlYlZpZXcgZXhwZWN0RWxlbWVudENv
dW50OjIgdGFnTmFtZTpAIklNRyJdOworICAgIFt3ZWJWaWV3IGV4cGVjdEVsZW1lbnRDb3VudDoy
IHF1ZXJ5U2VsZWN0b3I6QCJJTUciXTsKIAogICAgIGZvciAoX1dLQXR0YWNobWVudCAqYXR0YWNo
bWVudCBpbiBvYnNlcnZlci5vYnNlcnZlcigpLmluc2VydGVkKSB7CiAgICAgICAgIGlmIChbYXR0
YWNobWVudC5pbmZvLmNvbnRlbnRUeXBlIGlzRXF1YWxUb1N0cmluZzpAImltYWdlL3BuZyJdKQpA
QCAtMTQ3Myw3ICsxNDQyLDcgQEAgVEVTVChXS0F0dGFjaG1lbnRUZXN0cywgQ29weUFuZFBhc3Rl
QmV0d2VlbldlYlZpZXdzKQogICAgIGF1dG8gc2Vjb25kV2ViVmlldyA9IHdlYlZpZXdGb3JUZXN0
aW5nQXR0YWNobWVudHMoKTsKICAgICBPYnNlcnZlQXR0YWNobWVudFVwZGF0ZXNGb3JTY29wZSBv
YnNlcnZlcihzZWNvbmRXZWJWaWV3LmdldCgpKTsKICAgICBbc2Vjb25kV2ViVmlldyBwYXN0ZTpu
aWxdOwotICAgIFtzZWNvbmRXZWJWaWV3IGV4cGVjdEVsZW1lbnRDb3VudDozIHRhZ05hbWU6QCJh
dHRhY2htZW50Il07CisgICAgW3NlY29uZFdlYlZpZXcgZXhwZWN0RWxlbWVudENvdW50OjMgcXVl
cnlTZWxlY3RvcjpAImF0dGFjaG1lbnQiXTsKICAgICBFWFBFQ1RfRVEoM1UsIG9ic2VydmVyLm9i
c2VydmVyKCkuaW5zZXJ0ZWQuY291bnQpOwogCiAgICAgTlNTdHJpbmcgKnBsYWluRmlsZUlkZW50
aWZpZXIgPSBbc2Vjb25kV2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9j
dW1lbnQucXVlcnlTZWxlY3RvcignYXR0YWNobWVudFt0aXRsZV49dGVzdF0nKS51bmlxdWVJZGVu
dGlmaWVyIl07CkBAIC0xNTE2LDggKzE0ODUsOCBAQCBURVNUKFdLQXR0YWNobWVudFRlc3RzTWFj
LCBJbnNlcnRQYXN0ZWRGaWxlVVJMc0FzQXR0YWNobWVudHMpCiAgICAgICAgIEVYUEVDVF9FUSgy
VSwgW2luc2VydGVkQXR0YWNobWVudHMgY291bnRdKTsKICAgICB9CiAKLSAgICBbd2ViVmlldyBl
eHBlY3RFbGVtZW50Q291bnQ6MSB0YWdOYW1lOkAiQVRUQUNITUVOVCJdOwotICAgIFt3ZWJWaWV3
IGV4cGVjdEVsZW1lbnRDb3VudDoxIHRhZ05hbWU6QCJJTUciXTsKKyAgICBbd2ViVmlldyBleHBl
Y3RFbGVtZW50Q291bnQ6MSBxdWVyeVNlbGVjdG9yOkAiQVRUQUNITUVOVCJdOworICAgIFt3ZWJW
aWV3IGV4cGVjdEVsZW1lbnRDb3VudDoxIHF1ZXJ5U2VsZWN0b3I6QCJJTUciXTsKICAgICBFWFBF
Q1RfV0tfU1RSRVEoImFwcGxpY2F0aW9uL3BkZiIsIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGlu
Z0phdmFTY3JpcHQ6QCJkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdhdHRhY2htZW50JykuZ2V0QXR0
cmlidXRlKCd0eXBlJykiXSk7CiAgICAgRVhQRUNUX1dLX1NUUkVRKCJ0ZXN0LnBkZiIsIFt3ZWJW
aWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC5xdWVyeVNlbGVjdG9y
KCdhdHRhY2htZW50JykuZ2V0QXR0cmlidXRlKCd0aXRsZScpIl0pOwogCkBAIC0xNTUyLDggKzE1
MjEsOCBAQCBURVNUKFdLQXR0YWNobWVudFRlc3RzTWFjLCBJbnNlcnREcm9wcGVkRmlsZVByb21p
c2VzQXNBdHRhY2htZW50cykKIAogICAgIFtzaW11bGF0b3IgcnVuRnJvbTpDR1BvaW50TWFrZSgw
LCAwKSB0bzpDR1BvaW50TWFrZSg1MCwgNTApXTsKIAotICAgIFt3ZWJWaWV3IGV4cGVjdEVsZW1l
bnRDb3VudDoxIHRhZ05hbWU6QCJBVFRBQ0hNRU5UIl07Ci0gICAgW3dlYlZpZXcgZXhwZWN0RWxl
bWVudENvdW50OjEgdGFnTmFtZTpAIklNRyJdOworICAgIFt3ZWJWaWV3IGV4cGVjdEVsZW1lbnRD
b3VudDoxIHF1ZXJ5U2VsZWN0b3I6QCJBVFRBQ0hNRU5UIl07CisgICAgW3dlYlZpZXcgZXhwZWN0
RWxlbWVudENvdW50OjEgcXVlcnlTZWxlY3RvcjpAIklNRyJdOwogICAgIEVYUEVDVF9FUSgyVSwg
W3NpbXVsYXRvciBpbnNlcnRlZEF0dGFjaG1lbnRzXS5jb3VudCk7CiAKICAgICBhdXRvIGluc2Vy
dGVkQXR0YWNobWVudHMgPSByZXRhaW5QdHIoW3NpbXVsYXRvciBpbnNlcnRlZEF0dGFjaG1lbnRz
XSk7CkBAIC0xNTczLDggKzE1NDIsOCBAQCBURVNUKFdLQXR0YWNobWVudFRlc3RzTWFjLCBJbnNl
cnREcm9wcGVkRmlsZVByb21pc2VzQXNBdHRhY2htZW50cykKICAgICBbd2ViVmlldyBfc3luY2hy
b25vdXNseUV4ZWN1dGVFZGl0Q29tbWFuZDpAIkRlbGV0ZUJhY2t3YXJkIiBhcmd1bWVudDpuaWxd
OwogICAgIGF1dG8gcmVtb3ZlZEF0dGFjaG1lbnRzID0gcmV0YWluUHRyKFtzaW11bGF0b3IgcmVt
b3ZlZEF0dGFjaG1lbnRzXSk7CiAgICAgRVhQRUNUX0VRKDJVLCBbcmVtb3ZlZEF0dGFjaG1lbnRz
IGNvdW50XSk7Ci0gICAgW3dlYlZpZXcgZXhwZWN0RWxlbWVudENvdW50OjAgdGFnTmFtZTpAIkFU
VEFDSE1FTlQiXTsKLSAgICBbd2ViVmlldyBleHBlY3RFbGVtZW50Q291bnQ6MCB0YWdOYW1lOkAi
SU1HIl07CisgICAgW3dlYlZpZXcgZXhwZWN0RWxlbWVudENvdW50OjAgcXVlcnlTZWxlY3RvcjpA
IkFUVEFDSE1FTlQiXTsKKyAgICBbd2ViVmlldyBleHBlY3RFbGVtZW50Q291bnQ6MCBxdWVyeVNl
bGVjdG9yOkAiSU1HIl07CiAgICAgRVhQRUNUX1RSVUUoW3JlbW92ZWRBdHRhY2htZW50cyBjb250
YWluc09iamVjdDpbaW5zZXJ0ZWRBdHRhY2htZW50cyBmaXJzdE9iamVjdF1dKTsKICAgICBFWFBF
Q1RfVFJVRShbcmVtb3ZlZEF0dGFjaG1lbnRzIGNvbnRhaW5zT2JqZWN0OltpbnNlcnRlZEF0dGFj
aG1lbnRzIGxhc3RPYmplY3RdXSk7CiB9CkBAIC0xNjgxLDcgKzE2NTAsNyBAQCBURVNUKFdLQXR0
YWNobWVudFRlc3RzSU9TLCBJbnNlcnREcm9wcGVkUmljaEFuZFBsYWluVGV4dEZpbGVzQXNBdHRh
Y2htZW50cykKICAgICBmb3IgKF9XS0F0dGFjaG1lbnQgKmF0dGFjaG1lbnQgaW4gW2RyYWdBbmRE
cm9wU2ltdWxhdG9yIGluc2VydGVkQXR0YWNobWVudHNdKQogICAgICAgICBFWFBFQ1RfR1QoW2F0
dGFjaG1lbnQgaW5mb10uZGF0YS5sZW5ndGgsIDBVKTsKIAotICAgIFt3ZWJWaWV3IGV4cGVjdEVs
ZW1lbnRDb3VudDoyIHRhZ05hbWU6QCJBVFRBQ0hNRU5UIl07CisgICAgW3dlYlZpZXcgZXhwZWN0
RWxlbWVudENvdW50OjIgcXVlcnlTZWxlY3RvcjpAIkFUVEFDSE1FTlQiXTsKICAgICBFWFBFQ1Rf
V0tfU1RSRVEoImhlbGxvLnJ0ZiIsIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3Jp
cHQ6QCJkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdhdHRhY2htZW50JylbMF0uZ2V0QXR0cmli
dXRlKCd0aXRsZScpIl0pOwogICAgIEVYUEVDVF9XS19TVFJFUSgidGV4dC9ydGYiLCBbd2ViVmll
dyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQucXVlcnlTZWxlY3RvckFs
bCgnYXR0YWNobWVudCcpWzBdLmdldEF0dHJpYnV0ZSgndHlwZScpIl0pOwogICAgIEVYUEVDVF9X
S19TVFJFUSgid29ybGQudHh0IiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlw
dDpAImRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2F0dGFjaG1lbnQnKVsxXS5nZXRBdHRyaWJ1
dGUoJ3RpdGxlJykiXSk7CkBAIC0xNzA2LDcgKzE2NzUsNyBAQCBURVNUKFdLQXR0YWNobWVudFRl
c3RzSU9TLCBJbnNlcnREcm9wcGVkWmlwQXJjaGl2ZUFzQXR0YWNobWVudCkKICAgICBFWFBFQ1Rf
RVEoMVUsIFtkcmFnQW5kRHJvcFNpbXVsYXRvciBpbnNlcnRlZEF0dGFjaG1lbnRzXS5jb3VudCk7
CiAgICAgRVhQRUNUX0VRKDBVLCBbZHJhZ0FuZERyb3BTaW11bGF0b3IgcmVtb3ZlZEF0dGFjaG1l
bnRzXS5jb3VudCk7CiAgICAgW1tkcmFnQW5kRHJvcFNpbXVsYXRvciBpbnNlcnRlZEF0dGFjaG1l
bnRzXS5maXJzdE9iamVjdCBleHBlY3RSZXF1ZXN0ZWREYXRhVG9CZTpkYXRhXTsKLSAgICBbd2Vi
VmlldyBleHBlY3RFbGVtZW50Q291bnQ6MSB0YWdOYW1lOkAiQVRUQUNITUVOVCJdOworICAgIFt3
ZWJWaWV3IGV4cGVjdEVsZW1lbnRDb3VudDoxIHF1ZXJ5U2VsZWN0b3I6QCJBVFRBQ0hNRU5UIl07
CiAgICAgRVhQRUNUX1dLX1NUUkVRKCJhcmNoaXZlLnppcCIsIFt3ZWJWaWV3IHZhbHVlT2ZBdHRy
aWJ1dGU6QCJ0aXRsZSIgZm9yUXVlcnlTZWxlY3RvcjpAImF0dGFjaG1lbnQiXSk7CiAgICAgRVhQ
RUNUX1dLX1NUUkVRKCJhcHBsaWNhdGlvbi96aXAiLCBbd2ViVmlldyB2YWx1ZU9mQXR0cmlidXRl
OkAidHlwZSIgZm9yUXVlcnlTZWxlY3RvcjpAImF0dGFjaG1lbnQiXSk7CiB9CmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL2RhdGEtZGV0ZWN0b3JzLmh0
bWwgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL2RhdGEtZGV0ZWN0b3Jz
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZjlmODdhZjRmODg4OWViNzQ0NDRiNTkwMGU2MGExOWZlNzFlODVk
NQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvZGF0YS1kZXRlY3RvcnMuaHRtbApAQCAtMCwwICsxLDMwIEBACis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0
aCwgaW5pdGlhbC1zY2FsZT0xIj4KKzxib2R5PgorPHRhYmxlPgorPHRib2R5PgorPHRyPgorICAg
IDx0ZD5UZWxlcGhvbmUgbnVtYmVyPC90ZD4KKyAgICA8dGQ+KzEtMjM0LTU2Ny04OTAwPC90ZD4K
KzwvdHI+Cis8dHI+CisgICAgPHRkPkxpbms8L3RkPgorICAgIDx0ZD5odHRwczovL3d3dy5hcHBs
ZS5jb208L3RkPgorPC90cj4KKzx0cj4KKyAgICA8dGQ+QWRkcmVzczwvdGQ+CisgICAgPHRkPjIg
QXBwbGUgUGFyayBXYXksIEN1cGVydGlubyA5NTAxNDwvdGQ+Cis8L3RyPgorPHRyPgorICAgIDx0
ZD5DYWxlbmRhciBldmVudDwvdGQ+CisgICAgPHRkPkRlY2VtYmVyIDIxLCAyMDIxPC90ZD4KKzwv
dHI+Cis8dHI+CisgICAgPHRkPkZsaWdodCBudW1iZXI8L3RkPgorICAgIDx0ZD5BQzc4MDwvdGQ+
Cis8L3RyPgorPC90Ym9keT4KKzwvdGFibGU+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcuaCBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5oCmluZGV4IDU0ODgzNjk3NTY0NjBkYzFjN2Q1
Yzk3ZTM3MjEwZmJjZDgzMTAxOGIuLjg4M2FiZDFjYWNhOWQ3NWU5NWU0NTAxOWNhZTBiZDQyZWY1
MDVkZTAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmll
dy5oCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5oCkBAIC00
OCw3ICs0OCwxNCBAQAogQGVuZAogCiBAaW50ZXJmYWNlIFdLV2ViVmlldyAoVGVzdFdlYktpdEFQ
SSkKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgTlNBcnJheTxOU1N0cmluZyAqPiAq
dGFnc0luQm9keTsKIC0gKEJPT0wpX3N5bmNocm9ub3VzbHlFeGVjdXRlRWRpdENvbW1hbmQ6KE5T
U3RyaW5nICopY29tbWFuZCBhcmd1bWVudDooTlNTdHJpbmcgKilhcmd1bWVudDsKKy0gKHZvaWQp
ZXhwZWN0RWxlbWVudFRhZ3NJbk9yZGVyOihOU0FycmF5PE5TU3RyaW5nICo+ICopdGFnTmFtZXM7
CistICh2b2lkKWV4cGVjdEVsZW1lbnRDb3VudDooTlNJbnRlZ2VyKWNvdW50IHF1ZXJ5U2VsZWN0
b3I6KE5TU3RyaW5nICopcXVlcnlTZWxlY3RvcjsKKy0gKHZvaWQpZXhwZWN0RWxlbWVudFRhZzoo
TlNTdHJpbmcgKil0YWdOYW1lIHRvQ29tZUJlZm9yZTooTlNTdHJpbmcgKilvdGhlclRhZ05hbWU7
CistIChOU1N0cmluZyAqKXN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6KE5TU3RyaW5nICop
c2NyaXB0OworLSAoaWQpb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdFdpdGhVc2VyR2VzdHVy
ZTooTlNTdHJpbmcgKilzY3JpcHQ7CistIChpZClvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0
OihOU1N0cmluZyAqKXNjcmlwdDsKIEBlbmQKIAogQGludGVyZmFjZSBUZXN0TWVzc2FnZUhhbmRs
ZXIgOiBOU09iamVjdCA8V0tTY3JpcHRNZXNzYWdlSGFuZGxlcj4KQEAgLTY0LDkgKzcxLDYgQEAK
IC0gKHZvaWQpc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOihOU1N0cmluZyAqKWh0bWw7CiAt
ICh2b2lkKXN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzooTlNTdHJpbmcgKilodG1sIGJhc2VV
Ukw6KE5TVVJMICopdXJsOwogLSAodm9pZClzeW5jaHJvbm91c2x5TG9hZFRlc3RQYWdlTmFtZWQ6
KE5TU3RyaW5nICopcGFnZU5hbWU7Ci0tIChpZClvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0
OihOU1N0cmluZyAqKXNjcmlwdDsKLS0gKGlkKW9iamVjdEJ5RXZhbHVhdGluZ0phdmFTY3JpcHRX
aXRoVXNlckdlc3R1cmU6KE5TU3RyaW5nICopc2NyaXB0OwotLSAoTlNTdHJpbmcgKilzdHJpbmdC
eUV2YWx1YXRpbmdKYXZhU2NyaXB0OihOU1N0cmluZyAqKXNjcmlwdDsKIC0gKHZvaWQpd2FpdEZv
ck1lc3NhZ2U6KE5TU3RyaW5nICopbWVzc2FnZTsKIC0gKHZvaWQpcGVyZm9ybUFmdGVyTG9hZGlu
ZzooZGlzcGF0Y2hfYmxvY2tfdClhY3Rpb25zOwogLSAodm9pZCl3YWl0Rm9yTmV4dFByZXNlbnRh
dGlvblVwZGF0ZTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdL
V2ViVmlldy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5tbQpp
bmRleCBjY2JlZmY4MjRkNjU1YzE0M2ZiMGMwMzFhMTE0ZWU2ZjdkNDgzZWRmLi5lOGVhZGY4NmQz
ZTgzY2ZlODQ0MWYyMDdiZmY0NDNiMTlkYjk1MTZlIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9j
b2NvYS9UZXN0V0tXZWJWaWV3Lm1tCkBAIC03OCw2ICs3OCw3MiBAQCAtIChCT09MKV9zeW5jaHJv
bm91c2x5RXhlY3V0ZUVkaXRDb21tYW5kOihOU1N0cmluZyAqKWNvbW1hbmQgYXJndW1lbnQ6KE5T
U3RyaW5nCiAgICAgcmV0dXJuIHN1Y2Nlc3M7CiB9CiAKKy0gKE5TQXJyYXk8TlNTdHJpbmcgKj4g
Kil0YWdzSW5Cb2R5Cit7CisgICAgcmV0dXJuIFtzZWxmIG9iamVjdEJ5RXZhbHVhdGluZ0phdmFT
Y3JpcHQ6QCJBcnJheS5mcm9tKGRvY3VtZW50LmJvZHkuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJyon
KSkubWFwKGUgPT4gZS50YWdOYW1lKSJdOworfQorCistICh2b2lkKWV4cGVjdEVsZW1lbnRUYWdz
SW5PcmRlcjooTlNBcnJheTxOU1N0cmluZyAqPiAqKXRhZ05hbWVzCit7CisgICAgYXV0byByZW1h
aW5pbmdUYWdzID0gYWRvcHROUyhbdGFnTmFtZXMgbXV0YWJsZUNvcHldKTsKKyAgICBOU0FycmF5
PE5TU3RyaW5nICo+ICp0YWdzSW5Cb2R5ID0gc2VsZi50YWdzSW5Cb2R5OworICAgIGZvciAoTlNT
dHJpbmcgKnRhZyBpbiB0YWdzSW5Cb2R5LnJldmVyc2VPYmplY3RFbnVtZXJhdG9yKSB7CisgICAg
ICAgIGlmIChbdGFnIGlzRXF1YWxUb1N0cmluZzpbcmVtYWluaW5nVGFncyBsYXN0T2JqZWN0XV0p
CisgICAgICAgICAgICBbcmVtYWluaW5nVGFncyByZW1vdmVMYXN0T2JqZWN0XTsKKyAgICAgICAg
aWYgKCFbcmVtYWluaW5nVGFncyBjb3VudF0pCisgICAgICAgICAgICBicmVhazsKKyAgICB9Cisg
ICAgRVhQRUNUX0VRKFtyZW1haW5pbmdUYWdzIGNvdW50XSwgMFUpOworICAgIGlmIChbcmVtYWlu
aW5nVGFncyBjb3VudF0pCisgICAgICAgIE5TTG9nKEAiRXhwZWN0ZWQgdG8gZmluZCBvcmRlcmVk
IHRhZ3M6ICVAIGluOiAlQCIsIHRhZ05hbWVzLCB0YWdzSW5Cb2R5KTsKK30KKworLSAodm9pZCll
eHBlY3RFbGVtZW50Q291bnQ6KE5TSW50ZWdlciljb3VudCBxdWVyeVNlbGVjdG9yOihOU1N0cmlu
ZyAqKXF1ZXJ5U2VsZWN0b3IKK3sKKyAgICBOU1N0cmluZyAqc2NyaXB0ID0gW05TU3RyaW5nIHN0
cmluZ1dpdGhGb3JtYXQ6QCJkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCclQCcpLmxlbmd0aCIs
IHF1ZXJ5U2VsZWN0b3JdOworICAgIEVYUEVDVF9FUShjb3VudCwgW3NlbGYgc3RyaW5nQnlFdmFs
dWF0aW5nSmF2YVNjcmlwdDpzY3JpcHRdLmludGVnZXJWYWx1ZSk7Cit9CisKKy0gKHZvaWQpZXhw
ZWN0RWxlbWVudFRhZzooTlNTdHJpbmcgKil0YWdOYW1lIHRvQ29tZUJlZm9yZTooTlNTdHJpbmcg
KilvdGhlclRhZ05hbWUKK3sKKyAgICBbc2VsZiBleHBlY3RFbGVtZW50VGFnc0luT3JkZXI6QFt0
YWdOYW1lLCBvdGhlclRhZ05hbWVdXTsKK30KKworLSAoaWQpb2JqZWN0QnlFdmFsdWF0aW5nSmF2
YVNjcmlwdDooTlNTdHJpbmcgKilzY3JpcHQKK3sKKyAgICBib29sIGlzV2FpdGluZ0ZvckphdmFT
Y3JpcHQgPSBmYWxzZTsKKyAgICBSZXRhaW5QdHI8aWQ+IGV2YWxSZXN1bHQ7CisgICAgW3NlbGYg
X2V2YWx1YXRlSmF2YVNjcmlwdFdpdGhvdXRVc2VyR2VzdHVyZTpzY3JpcHQgY29tcGxldGlvbkhh
bmRsZXI6WyZdIChpZCByZXN1bHQsIE5TRXJyb3IgKmVycm9yKSB7CisgICAgICAgIGV2YWxSZXN1
bHQgPSByZXN1bHQ7CisgICAgICAgIGlzV2FpdGluZ0ZvckphdmFTY3JpcHQgPSB0cnVlOworICAg
ICAgICBFWFBFQ1RfVFJVRSghZXJyb3IpOworICAgICAgICBpZiAoZXJyb3IpCisgICAgICAgICAg
ICBOU0xvZyhAIkVuY291bnRlcmVkIGVycm9yOiAlQCB3aGlsZSBldmFsdWF0aW5nIHNjcmlwdDog
JUAiLCBlcnJvciwgc2NyaXB0KTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpy
dW4oJmlzV2FpdGluZ0ZvckphdmFTY3JpcHQpOworICAgIHJldHVybiBldmFsUmVzdWx0LmF1dG9y
ZWxlYXNlKCk7Cit9CisKKy0gKGlkKW9iamVjdEJ5RXZhbHVhdGluZ0phdmFTY3JpcHRXaXRoVXNl
ckdlc3R1cmU6KE5TU3RyaW5nICopc2NyaXB0Cit7CisgICAgYm9vbCBpc1dhaXRpbmdGb3JKYXZh
U2NyaXB0ID0gZmFsc2U7CisgICAgUmV0YWluUHRyPGlkPiBldmFsUmVzdWx0OworICAgIFtzZWxm
IGV2YWx1YXRlSmF2YVNjcmlwdDpzY3JpcHQgY29tcGxldGlvbkhhbmRsZXI6WyZdIChpZCByZXN1
bHQsIE5TRXJyb3IgKmVycm9yKSB7CisgICAgICAgIGV2YWxSZXN1bHQgPSByZXN1bHQ7CisgICAg
ICAgIGlzV2FpdGluZ0ZvckphdmFTY3JpcHQgPSB0cnVlOworICAgICAgICBFWFBFQ1RfVFJVRSgh
ZXJyb3IpOworICAgICAgICBpZiAoZXJyb3IpCisgICAgICAgICAgICBOU0xvZyhAIkVuY291bnRl
cmVkIGVycm9yOiAlQCB3aGlsZSBldmFsdWF0aW5nIHNjcmlwdDogJUAiLCBlcnJvciwgc2NyaXB0
KTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzV2FpdGluZ0Zvckph
dmFTY3JpcHQpOworICAgIHJldHVybiBldmFsUmVzdWx0LmF1dG9yZWxlYXNlKCk7Cit9CisKKy0g
KE5TU3RyaW5nICopc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDooTlNTdHJpbmcgKilzY3Jp
cHQKK3sKKyAgICByZXR1cm4gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlQCIsIFtzZWxm
IG9iamVjdEJ5RXZhbHVhdGluZ0phdmFTY3JpcHQ6c2NyaXB0XV07Cit9CisKIEBlbmQKIAogQGlt
cGxlbWVudGF0aW9uIFRlc3RNZXNzYWdlSGFuZGxlciB7CkBAIC0yODksNDEgKzM1NSw2IEBAIC0g
KHZvaWQpc3luY2hyb25vdXNseUxvYWRUZXN0UGFnZU5hbWVkOihOU1N0cmluZyAqKXBhZ2VOYW1l
CiAgICAgW3NlbGYgX3Rlc3Rfd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb25dOwogfQogCi0tIChp
ZClvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OihOU1N0cmluZyAqKXNjcmlwdAotewotICAg
IGJvb2wgaXNXYWl0aW5nRm9ySmF2YVNjcmlwdCA9IGZhbHNlOwotICAgIFJldGFpblB0cjxpZD4g
ZXZhbFJlc3VsdDsKLSAgICBbc2VsZiBfZXZhbHVhdGVKYXZhU2NyaXB0V2l0aG91dFVzZXJHZXN0
dXJlOnNjcmlwdCBjb21wbGV0aW9uSGFuZGxlcjpbJl0gKGlkIHJlc3VsdCwgTlNFcnJvciAqZXJy
b3IpIHsKLSAgICAgICAgZXZhbFJlc3VsdCA9IHJlc3VsdDsKLSAgICAgICAgaXNXYWl0aW5nRm9y
SmF2YVNjcmlwdCA9IHRydWU7Ci0gICAgICAgIEVYUEVDVF9UUlVFKCFlcnJvcik7Ci0gICAgICAg
IGlmIChlcnJvcikKLSAgICAgICAgICAgIE5TTG9nKEAiRW5jb3VudGVyZWQgZXJyb3I6ICVAIHdo
aWxlIGV2YWx1YXRpbmcgc2NyaXB0OiAlQCIsIGVycm9yLCBzY3JpcHQpOwotICAgIH1dOwotICAg
IFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNXYWl0aW5nRm9ySmF2YVNjcmlwdCk7Ci0gICAg
cmV0dXJuIGV2YWxSZXN1bHQuYXV0b3JlbGVhc2UoKTsKLX0KLQotLSAoaWQpb2JqZWN0QnlFdmFs
dWF0aW5nSmF2YVNjcmlwdFdpdGhVc2VyR2VzdHVyZTooTlNTdHJpbmcgKilzY3JpcHQKLXsKLSAg
ICBib29sIGlzV2FpdGluZ0ZvckphdmFTY3JpcHQgPSBmYWxzZTsKLSAgICBSZXRhaW5QdHI8aWQ+
IGV2YWxSZXN1bHQ7Ci0gICAgW3NlbGYgZXZhbHVhdGVKYXZhU2NyaXB0OnNjcmlwdCBjb21wbGV0
aW9uSGFuZGxlcjpbJl0gKGlkIHJlc3VsdCwgTlNFcnJvciAqZXJyb3IpIHsKLSAgICAgICAgZXZh
bFJlc3VsdCA9IHJlc3VsdDsKLSAgICAgICAgaXNXYWl0aW5nRm9ySmF2YVNjcmlwdCA9IHRydWU7
Ci0gICAgICAgIEVYUEVDVF9UUlVFKCFlcnJvcik7Ci0gICAgICAgIGlmIChlcnJvcikKLSAgICAg
ICAgICAgIE5TTG9nKEAiRW5jb3VudGVyZWQgZXJyb3I6ICVAIHdoaWxlIGV2YWx1YXRpbmcgc2Ny
aXB0OiAlQCIsIGVycm9yLCBzY3JpcHQpOwotICAgIH1dOwotICAgIFRlc3RXZWJLaXRBUEk6OlV0
aWw6OnJ1bigmaXNXYWl0aW5nRm9ySmF2YVNjcmlwdCk7Ci0gICAgcmV0dXJuIGV2YWxSZXN1bHQu
YXV0b3JlbGVhc2UoKTsKLX0KLQotLSAoTlNTdHJpbmcgKilzdHJpbmdCeUV2YWx1YXRpbmdKYXZh
U2NyaXB0OihOU1N0cmluZyAqKXNjcmlwdAotewotICAgIHJldHVybiBbTlNTdHJpbmcgc3RyaW5n
V2l0aEZvcm1hdDpAIiVAIiwgW3NlbGYgb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpzY3Jp
cHRdXTsKLX0KLQogLSAodm9pZCl3YWl0Rm9yTWVzc2FnZTooTlNTdHJpbmcgKiltZXNzYWdlCiB7
CiAgICAgX19ibG9jayBib29sIGlzRG9uZVdhaXRpbmcgPSBmYWxzZTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>