<?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>190454</bug_id>
          
          <creation_ts>2018-10-10 18:20:22 -0700</creation_ts>
          <short_desc>Add an SPI to allow WebView clients to add additional supported image formats</short_desc>
          <delta_ts>2018-11-08 19:23:27 -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>Images</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=178758</see_also>
          <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>
          <dependson>190838</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Said Abou-Hallawa">sabouhallawa</reporter>
          <assigned_to name="Said Abou-Hallawa">sabouhallawa</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>graouts</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>japhet</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mitz</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1467904</commentid>
    <comment_count>0</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2018-10-10 18:20:22 -0700</bug_when>
    <thetext>Currently WebKit supports a fixed set of image formats. WebKit cancels loading the image, if its formats is not in the whitelist, and marks it as a broken image. The rationale for having a fixed small list is WebKit wants to support only standardized and well tested image formats.

But some WebView clients had requested to render still-none-standardized image formats, like HEIF for example, if the system supports decoding and rendering them. This SPI will allow reading the image format whitelist and setting it to a new value.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1467910</commentid>
    <comment_count>1</comment_count>
      <attachid>352007</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2018-10-10 18:26:52 -0700</bug_when>
    <thetext>Created attachment 352007
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1467912</commentid>
    <comment_count>2</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2018-10-10 18:29:17 -0700</bug_when>
    <thetext>*** Bug 178821 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1467913</commentid>
    <comment_count>3</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2018-10-10 18:30:41 -0700</bug_when>
    <thetext>&lt;rdar://problem/32840877&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1467916</commentid>
    <comment_count>4</comment_count>
      <attachid>352007</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2018-10-10 18:39:52 -0700</bug_when>
    <thetext>Comment on attachment 352007
Patch

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

This doesn&apos;t seem like the right approach.

&gt; Source/WebCore/page/Settings.yaml:587
&gt; +imageFormatWhitelist:
&gt; +    type: String
&gt; +    defaultValue: defaultImageFormatWhitelist()

It&apos;s not clear to me that the whitelist should be a setting.

&gt; Source/WebCore/platform/graphics/Image.h:203
&gt; +    String m_imageFormatWhitelist;

Why does every image have to store the whitelist? The whitelist should live in some object that gets consulted (next to MimeTypeRegistery or something).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1467922</commentid>
    <comment_count>5</comment_count>
      <attachid>352007</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-10-10 19:06:41 -0700</bug_when>
    <thetext>Comment on attachment 352007
Patch

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

&gt; Source/WebKit/UIProcess/API/Cocoa/WKPreferencesPrivate.h:81
&gt; +@property (nonatomic, setter=_setImageFormatWhitelist:) NSString *_imageFormatWhitelist WK_API_AVAILABLE(macosx(10.14), ios(12.0));

Nit - TBA?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1468758</commentid>
    <comment_count>6</comment_count>
      <attachid>352252</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2018-10-12 22:17:25 -0700</bug_when>
    <thetext>Created attachment 352252
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1468759</commentid>
    <comment_count>7</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2018-10-12 22:28:26 -0700</bug_when>
    <thetext>I have these open questions:

1. Is the SPI name AdditionalAllowedImageUTIs() appropriate?
2. Should the allowed formats be passed as UTIs or mime types?
3. It is okay to pass the image formats as one string? Or do we really have to have the allowed formats be passed as an array of strings? 

In WebPreferencesStore, the value of the preference is stored as this variant.

using Value = Variant&lt;String, bool, uint32_t, double&gt;;

If we need to pass it as an array on strings, I will need to add a new type to this Variant and add the necessary encoding and decoding. But this can be done in a separate patch before or after landing this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1468761</commentid>
    <comment_count>8</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2018-10-12 23:21:49 -0700</bug_when>
    <thetext>(In reply to Said Abou-Hallawa from comment #7)
&gt; I have these open questions:
&gt; 
&gt; 1. Is the SPI name AdditionalAllowedImageUTIs() appropriate?

Doesn&apos;t seem crazy. Not sure about the &quot;UTIs&quot; part.

&gt; 2. Should the allowed formats be passed as UTIs or mime types?

This is Cocoa-y API so probably UTIs. Also didn&apos;t you say that we can&apos;t represent all of the desired types as MIME types?

&gt; 3. It is okay to pass the image formats as one string? Or do we really have
&gt; to have the allowed formats be passed as an array of strings? 

Definitely think the SPI should take `NSArray &lt;NSString *&gt; *`. Weird delimited strings are bad API design.

&gt; In WebPreferencesStore, the value of the preference is stored as this
&gt; variant.
&gt; 
&gt; using Value = Variant&lt;String, bool, uint32_t, double&gt;;
&gt; 
&gt; If we need to pass it as an array on strings, I will need to add a new type
&gt; to this Variant and add the necessary encoding and decoding. But this can be
&gt; done in a separate patch before or after landing this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1468762</commentid>
    <comment_count>9</comment_count>
      <attachid>352252</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2018-10-12 23:24:07 -0700</bug_when>
    <thetext>Comment on attachment 352252
Patch

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

&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h:104
&gt; +@property (nonatomic, setter=_setAdditionalAllowedImageUTIs:) NSString *_additionalAllowedImageUTIs;

Missing availability macros. Also strings need to be `copy` because they can be secretly mutable. And actually you do copy, you just don&apos;t say it here.

&gt; Source/WebKit/WebProcess/WebPage/WebPage.cpp:214
&gt; +#include &lt;WebCore/UTIRegistry.h&gt;

Why?

&gt; Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:1203
&gt; +				5558482521718CDA00FB7FFF /* tga-image.png in Copy Resources */,

Why&apos;s the TGA a .png?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1469029</commentid>
    <comment_count>10</comment_count>
      <attachid>352252</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-10-13 22:33:26 -0700</bug_when>
    <thetext>Comment on attachment 352252
Patch

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

&gt; Source/WebCore/platform/graphics/cg/UTIRegistry.cpp:73
&gt; +static String&amp; additionalAllowedImageUTIs()

The name of this function reads like it returns a collection because you use the pluralized acronym form of Uniform Type Identifier, UTIs. But this function only returns a single String and the rest of the patch talks in pluralities though is singular in nature. I would prefer that the solution we come up with is to allow more than one UTI to added to the list of UTIs to recognize rather than making all name singular.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1469079</commentid>
    <comment_count>11</comment_count>
      <attachid>352281</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2018-10-14 15:38:39 -0700</bug_when>
    <thetext>Created attachment 352281
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1469080</commentid>
    <comment_count>12</comment_count>
      <attachid>352252</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2018-10-14 15:49:03 -0700</bug_when>
    <thetext>Comment on attachment 352252
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/cg/UTIRegistry.cpp:73
&gt;&gt; +static String&amp; additionalAllowedImageUTIs()
&gt; 
&gt; The name of this function reads like it returns a collection because you use the pluralized acronym form of Uniform Type Identifier, UTIs. But this function only returns a single String and the rest of the patch talks in pluralities though is singular in nature. I would prefer that the solution we come up with is to allow more than one UTI to added to the list of UTIs to recognize rather than making all name singular.

I changed the return type to be Vector&lt;String&gt; which contains the UTIs of the additional allowed image formats.

&gt;&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h:104
&gt;&gt; +@property (nonatomic, setter=_setAdditionalAllowedImageUTIs:) NSString *_additionalAllowedImageUTIs;
&gt; 
&gt; Missing availability macros. Also strings need to be `copy` because they can be secretly mutable. And actually you do copy, you just don&apos;t say it here.

I added the (copy) attribute to the definition of the property. I added also availability macros: WK_API_AVAILABLE(macosx(WK_MAC_TBA), ios(WK_IOS_TBA);

&gt;&gt; Source/WebKit/WebProcess/WebPage/WebPage.cpp:214
&gt;&gt; +#include &lt;WebCore/UTIRegistry.h&gt;
&gt; 
&gt; Why?

Because I need to call WebCore::setAdditionalAllowedImageFormats.

&gt;&gt; Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:1203
&gt;&gt; +				5558482521718CDA00FB7FFF /* tga-image.png in Copy Resources */,
&gt; 
&gt; Why&apos;s the TGA a .png?

I did this trick to make WebKit open the image file as an ImageDocument. WebKit does not open files with TGA extension as ImageDocument. So I changed the file extension to &quot;png&quot; with keeping the data file as is.  The alternative solution is to open the image through an html file which contains the markup &quot;&lt;img src=&apos;tga-image.tga&apos;&gt;&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1469081</commentid>
    <comment_count>13</comment_count>
      <attachid>352282</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2018-10-14 16:02:35 -0700</bug_when>
    <thetext>Created attachment 352282
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1469144</commentid>
    <comment_count>14</comment_count>
      <attachid>352301</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2018-10-14 23:29:05 -0700</bug_when>
    <thetext>Created attachment 352301
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1469146</commentid>
    <comment_count>15</comment_count>
      <attachid>352302</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2018-10-15 00:06:36 -0700</bug_when>
    <thetext>Created attachment 352302
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1469382</commentid>
    <comment_count>16</comment_count>
      <attachid>352302</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2018-10-15 12:29:26 -0700</bug_when>
    <thetext>Comment on attachment 352302
Patch

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

We talked about how to get rid of all the preference code.

&gt; Source/WebKit/Platform/mac/StringUtilities.mm:90
&gt; +    [nsStringArray enumerateObjectsUsingBlock:[&amp;] (NSString *nsString, NSUInteger, BOOL *) {
&gt; +        stringList.append(String(nsString));
&gt; +    }];

Why not just:

for (NSString *string in nsStringArray)
    strings.append(string);

And get rid of StringList.

You probably also want uncheckedAppend/reserveInitialCapacity.

You might even be able to find one of these somewhere already.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1469384</commentid>
    <comment_count>17</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2018-10-15 12:30:01 -0700</bug_when>
    <thetext>(In reply to Said Abou-Hallawa from comment #12)
&gt; Comment on attachment 352252 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=352252&amp;action=review

&gt; &gt;&gt; Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:1203
&gt; &gt;&gt; +				5558482521718CDA00FB7FFF /* tga-image.png in Copy Resources */,
&gt; &gt; 
&gt; &gt; Why&apos;s the TGA a .png?
&gt; 
&gt; I did this trick to make WebKit open the image file as an ImageDocument.
&gt; WebKit does not open files with TGA extension as ImageDocument. So I changed
&gt; the file extension to &quot;png&quot; with keeping the data file as is.  The
&gt; alternative solution is to open the image through an html file which
&gt; contains the markup &quot;&lt;img src=&apos;tga-image.tga&apos;&gt;&quot;

This is weird. If I&apos;m allowing TGA, why aren&apos;t I allowed to ImageDocument it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1469498</commentid>
    <comment_count>18</comment_count>
      <attachid>352392</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2018-10-15 15:34:12 -0700</bug_when>
    <thetext>Created attachment 352392
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1470963</commentid>
    <comment_count>19</comment_count>
      <attachid>352818</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2018-10-19 13:01:51 -0700</bug_when>
    <thetext>Created attachment 352818
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1470976</commentid>
    <comment_count>20</comment_count>
      <attachid>352818</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2018-10-19 13:38:05 -0700</bug_when>
    <thetext>Comment on attachment 352818
Patch

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

&gt; Source/WebCore/platform/MIMETypeRegistry.cpp:96
&gt; +    for (auto&amp; uti : additionalAllowedImageFormats()) {

Are you just getting lucky that this isn&apos;t called before you initialize additionalAllowedImageFormats()? Otherwise they&apos;ll be missing here, right?

Can you add some assertions that that&apos;s the case (maybe in the setter assert that we haven&apos;t already done initializeSupportedImageMIMETypes)?

Or make it invalidate the lists. Or dynamically add things.

&gt; Source/WebKit/Platform/mac/StringUtilities.mm:85
&gt; +Vector&lt;String&gt; webCoreStringListFromNsStringArray(NSArray&lt;NSString *&gt; *nsStringArray)

NS should be capitalized. Also I swear we have a version of this somewhere already.

Also Why &quot;list&quot; instead of &quot;vector&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1471026</commentid>
    <comment_count>21</comment_count>
      <attachid>352835</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2018-10-19 16:57:03 -0700</bug_when>
    <thetext>Created attachment 352835
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1471028</commentid>
    <comment_count>22</comment_count>
      <attachid>352818</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2018-10-19 17:01:49 -0700</bug_when>
    <thetext>Comment on attachment 352818
Patch

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

&gt;&gt; Source/WebCore/platform/MIMETypeRegistry.cpp:96
&gt;&gt; +    for (auto&amp; uti : additionalAllowedImageFormats()) {
&gt; 
&gt; Are you just getting lucky that this isn&apos;t called before you initialize additionalAllowedImageFormats()? Otherwise they&apos;ll be missing here, right?
&gt; 
&gt; Can you add some assertions that that&apos;s the case (maybe in the setter assert that we haven&apos;t already done initializeSupportedImageMIMETypes)?
&gt; 
&gt; Or make it invalidate the lists. Or dynamically add things.

I dynamically add the mime types of the additionalAllowedImageFormats once they are set. But I assume they won&apos;t change even if multiple WebPages are created.

&gt;&gt; Source/WebKit/Platform/mac/StringUtilities.mm:85
&gt;&gt; +Vector&lt;String&gt; webCoreStringListFromNsStringArray(NSArray&lt;NSString *&gt; *nsStringArray)
&gt; 
&gt; NS should be capitalized. Also I swear we have a version of this somewhere already.
&gt; 
&gt; Also Why &quot;list&quot; instead of &quot;vector&quot;.

Done.

I could not find an implementation for this conversions. And I found this code in TestControllerCocoa.mm

    [globalWebViewConfiguration.websiteDataStore _getAllStorageAccessEntriesFor:parentView-&gt;platformView() completionHandler:^(NSArray&lt;NSString *&gt; *nsDomains) {
        Vector&lt;String&gt; domains;
        domains.reserveInitialCapacity(nsDomains.count);
        for (NSString *domain : nsDomains)
            domains.uncheckedAppend(domain);
        m_currentInvocation-&gt;didReceiveAllStorageAccessEntries(domains);
    }];</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1471044</commentid>
    <comment_count>23</comment_count>
      <attachid>352840</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2018-10-19 17:39:46 -0700</bug_when>
    <thetext>Created attachment 352840
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1471052</commentid>
    <comment_count>24</comment_count>
      <attachid>352845</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2018-10-19 18:19:23 -0700</bug_when>
    <thetext>Created attachment 352845
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1471067</commentid>
    <comment_count>25</comment_count>
      <attachid>352845</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2018-10-19 21:56:43 -0700</bug_when>
    <thetext>Comment on attachment 352845
Patch

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

Seems mostly OK but let&apos;s see one more version.

&gt; Source/WebCore/platform/MIMETypeRegistry.cpp:61
&gt; +static HashSet&lt;String, ASCIICaseInsensitiveHash&gt;* supportedImageAdditionalMIMETypes;

This doesn&apos;t read well. Maybe supportedAdditionalImageMIMETypes (though the &quot;supported&quot; is then confusing).

&gt; Source/WebCore/platform/MIMETypeRegistry.cpp:194
&gt; +        supportedImageAdditionalMIMETypes = new HashSet&lt;String, ASCIICaseInsensitiveHash&gt;;

The modern way to do all of these would be with a static NeverDestroyed&lt;&gt; and a std::once in the caller.

&gt; Source/WebCore/platform/MIMETypeRegistry.cpp:683
&gt; +    // Reinitialize the supportedImageAdditionalMIMETypes if they have not been set or were set to an empty list.
&gt; +    if (!supportedImageAdditionalMIMETypes || !supportedImageAdditionalMIMETypes-&gt;isEmpty())
&gt; +        return;
&gt; +    initializeSupportedImageAdditionalMIMETypes();

Why doesn&apos;t this just null out supportedImageAdditionalMIMETypes so that the next call triggers a rebuild? The function can be called supportedImageAdditionalMIMETypesChanged().

&gt; Source/WebCore/platform/graphics/cg/UTIRegistry.cpp:88
&gt; +    // We are suppoed to set the additionalAllowedImageFormats only once even
&gt; +    // if multiple WebPages are created.

It&apos;s not clear if this comment is describing a bug (in which case it should be a FIXME) or explaining the code.

&gt; Source/WebCore/platform/graphics/cg/UTIRegistry.h:36
&gt; +const HashSet&lt;String&gt;&amp; defaultAllowedImageFormats();
&gt; +const HashSet&lt;String&gt;&amp; additionalAllowedImageFormats();
&gt; +WEBCORE_EXPORT void setAdditionalAllowedImageFormats(const Vector&lt;String&gt;&amp;);
&gt; +bool isAllowedImageFormat(const String&amp;);

The rename from &quot;UTI&quot; to &quot;format&quot; makes it less clear that these return UTIs.

&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h:104
&gt; +@property (nonatomic, copy, setter=_setAdditionalAllowedImageFormats:) NSArray&lt;NSString *&gt; *_additionalAllowedImageFormats WK_API_AVAILABLE(macosx(WK_MAC_TBA), ios(WK_IOS_TBA));

We might want to think about this naming. Does the caller of the API understand the &quot;additional&quot; part?

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/AdditionalAllowedImageFormats.mm:40
&gt; +    [configuration _setAdditionalAllowedImageFormats:@[@&quot;com.truevision.tga-image&quot;]];

Tests should also cover
* adding a format that is already supported
* adding a format that webkit can&apos;t render
* passing an array with the same format listed twice</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1471340</commentid>
    <comment_count>26</comment_count>
      <attachid>352908</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2018-10-22 14:14:19 -0700</bug_when>
    <thetext>Created attachment 352908
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1471407</commentid>
    <comment_count>27</comment_count>
      <attachid>352924</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2018-10-22 16:42:37 -0700</bug_when>
    <thetext>Created attachment 352924
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1471495</commentid>
    <comment_count>28</comment_count>
      <attachid>352924</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2018-10-22 22:50:51 -0700</bug_when>
    <thetext>Comment on attachment 352924
Patch

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

&gt; Source/WebCore/platform/MIMETypeRegistry.cpp:62
&gt; +    static NeverDestroyed&lt;HashSet&lt;String, ASCIICaseInsensitiveHash&gt;&gt; supportedImageMIMETypes;
&gt; +    static std::once_flag onceFlag;
&gt; +    std::call_once(onceFlag, [] {

This should be done in a separate patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1471936</commentid>
    <comment_count>29</comment_count>
      <attachid>353054</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2018-10-24 14:33:07 -0700</bug_when>
    <thetext>Created attachment 353054
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1476589</commentid>
    <comment_count>30</comment_count>
      <attachid>353054</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2018-11-08 11:36:01 -0800</bug_when>
    <thetext>Comment on attachment 353054
Patch

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

&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h:104
&gt; +@property (nonatomic, copy, setter=_setSupportedAdditionalImageSourceTypes:) NSArray&lt;NSString *&gt; *_supportedAdditionalImageSourceTypes WK_API_AVAILABLE(macosx(WK_MAC_TBA), ios(WK_IOS_TBA));

This name is cumbersome and doesn&apos;t make it clear that the arguments are UTIs. Maybe better as _additionalSupportedImageTypes: with a comment saying that the argument is an array of UTIs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1476668</commentid>
    <comment_count>31</comment_count>
      <attachid>354278</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2018-11-08 14:54:49 -0800</bug_when>
    <thetext>Created attachment 354278
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1476670</commentid>
    <comment_count>32</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-11-08 14:56:38 -0800</bug_when>
    <thetext>Attachment 354278 did not pass style-queue:


ERROR: Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:3621:  developmentRegion is not en.  [xcodeproj/settings] [5]
Total errors found: 1 in 23 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1476671</commentid>
    <comment_count>33</comment_count>
      <attachid>353054</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2018-11-08 14:59:27 -0800</bug_when>
    <thetext>Comment on attachment 353054
Patch

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

&gt;&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h:104
&gt;&gt; +@property (nonatomic, copy, setter=_setSupportedAdditionalImageSourceTypes:) NSArray&lt;NSString *&gt; *_supportedAdditionalImageSourceTypes WK_API_AVAILABLE(macosx(WK_MAC_TBA), ios(WK_IOS_TBA));
&gt; 
&gt; This name is cumbersome and doesn&apos;t make it clear that the arguments are UTIs. Maybe better as _additionalSupportedImageTypes: with a comment saying that the argument is an array of UTIs.

I changed all the names from ImageSourceTypes to ImageTypes all the way up till the mime registry, the UTI registry and the ImageDecoderCG. And I flipped SupportedAdditional to AdditionalSupported in the names as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1476717</commentid>
    <comment_count>34</comment_count>
      <attachid>354288</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2018-11-08 16:21:23 -0800</bug_when>
    <thetext>Created attachment 354288
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1476773</commentid>
    <comment_count>35</comment_count>
      <attachid>354288</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-11-08 19:23:25 -0800</bug_when>
    <thetext>Comment on attachment 354288
Patch

Clearing flags on attachment: 354288

Committed r238015: &lt;https://trac.webkit.org/changeset/238015&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1476774</commentid>
    <comment_count>36</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-11-08 19:23:27 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>352007</attachid>
            <date>2018-10-10 18:26:52 -0700</date>
            <delta_ts>2018-10-12 22:17:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190454-20181010182651.patch</filename>
            <type>text/plain</type>
            <size>35336</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzNzAyMCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU2IEBACisyMDE4LTEwLTEwICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGFuIFNQ
SSBmb3IgV2ViVmlldyBjbGllbnRzIHRvIGNvbnRyb2wgdGhlIFdlYktpdCBpbWFnZSBmb3JtYXQg
d2hpdGVsaXN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xOTA0NTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZGQgYW4gU1BJIHRvIGdldC9zZXQgdGhlIGltYWdlIFdlYktpdCBpbWFnZSBmb3JtYXQgd2hp
dGVsaXN0LiBUaGUgd2hpdGUKKyAgICAgICAgbGlzdCB3aWxsIGJlIHJlcHJlc2VudGVkIGFzIG9u
ZSBzdHJpbmcgd2hpY2ggY29udGFpbnMgYWxsIHRoZSBVVEkgb2YgdGhlCisgICAgICAgIHN1cHBv
cnRlZCBmb3JtYXRzIHNlcGFyYXRlZCBieSBzZW1pY29sb25zLgorCisgICAgICAgICogaHRtbC9J
bWFnZUJpdG1hcC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJpdG1hcDo6Y3JlYXRlRnJv
bUJ1ZmZlcik6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjpkaWRBZGRDbGllbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkSW1hZ2U6OnVwZGF0ZUltYWdlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRJbWFnZTo6aW1hZ2VGb3JtYXRXaGl0ZWxpc3QgY29uc3QpOgorICAgICAgICAqIGxvYWRlci9j
YWNoZS9DYWNoZWRJbWFnZS5oOgorICAgICAgICAqIHBhZ2UvU2V0dGluZ3MueWFtbDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Omlu
aXRpYWxpemVTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvQml0bWFwSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRl
c3Ryb3lEZWNvZGVkRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZGF0YUNo
YW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmludGVybmFsU3RhcnRBbmlt
YXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlOjpzZXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6OmltYWdlRm9ybWF0V2hpdGVsaXN0IGNv
bnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjplbnN1cmVEZWNv
ZGVyQXZhaWxhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpzZXREYXRhKToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpyZXNldERhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VTb3VyY2U6OmRhdGFDaGFuZ2VkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZVNvdXJjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBo
aWNzQ29udGV4dDNEQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6
OkltYWdlRXh0cmFjdG9yOjpleHRyYWN0SW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rl
ckNHOjpJbWFnZURlY29kZXJDRyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJDRzo6
ZW5jb2RlZERhdGFTdGF0dXMgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlRGVjb2RlckNHLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvVVRJUmVn
aXN0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZGVmYXVsdEFsbG93ZWRJbWFnZVVUSXMpOgor
ICAgICAgICAoV2ViQ29yZTo6ZGVmYXVsdEltYWdlRm9ybWF0V2hpdGVsaXN0KToKKyAgICAgICAg
KFdlYkNvcmU6OmFsbG93ZWRJbWFnZVVUSXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
aXNBbGxvd2VkSW1hZ2VVVEkpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NnL1VUSVJlZ2lzdHJ5Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ltYWdl
TWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKToK
KwogMjAxOC0xMC0xMCAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAg
ICAgICBPbmx5IHJlcG9ydCB0aGUgc3VwcG9ydGVkIFdlYkdMIHZlcnNpb24KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2h0bWwvSW1hZ2VCaXRtYXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2h0bWwvSW1hZ2VCaXRtYXAuY3BwCShyZXZpc2lvbiAyMzcwMjApCisrKyBTb3VyY2UvV2Vi
Q29yZS9odG1sL0ltYWdlQml0bWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQsNiArNDQsNyBA
QAogI2luY2x1ZGUgIkxheW91dFNpemUuaCIKICNpbmNsdWRlICJSZW5kZXJFbGVtZW50LmgiCiAj
aW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCisjaW5jbHVkZSAiVVRJUmVnaXN0cnkuaCIKICNpbmNs
dWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTYxOCw3
ICs2MTksNyBAQCB2b2lkIEltYWdlQml0bWFwOjpjcmVhdGVGcm9tQnVmZmVyKAogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgYXV0byByZXN1bHQgPSBpbWFnZS0+c2V0RGF0YShzaGFyZWRC
dWZmZXIuY29weVJlZigpLCB0cnVlKTsKKyAgICBhdXRvIHJlc3VsdCA9IGltYWdlLT5zZXREYXRh
KHNoYXJlZEJ1ZmZlci5jb3B5UmVmKCksIHRydWUsIGRlZmF1bHRJbWFnZUZvcm1hdFdoaXRlbGlz
dCgpKTsKICAgICBpZiAocmVzdWx0ICE9IEVuY29kZWREYXRhU3RhdHVzOjpDb21wbGV0ZSkgewog
ICAgICAgICBwcm9taXNlLnJlamVjdChJbnZhbGlkU3RhdGVFcnJvciwgIkNhbm5vdCBkZWNvZGUg
dGhlIGRhdGEgaW4gdGhlIGFyZ3VtZW50IHRvIGNyZWF0ZUltYWdlQml0bWFwIik7CiAgICAgICAg
IHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdl
LmNwcAkocmV2aXNpb24gMjM3MDIwKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZEltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUg
IlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSAiU3VicmVz
b3VyY2VMb2FkZXIuaCIKKyNpbmNsdWRlICJVVElSZWdpc3RyeS5oIgogI2luY2x1ZGUgPHd0Zi9O
ZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIApAQCAtMTEy
LDcgKzExMyw3IEBAIHZvaWQgQ2FjaGVkSW1hZ2U6OmRpZEFkZENsaWVudChDYWNoZWRSZXMKIHsK
ICAgICBpZiAobV9kYXRhICYmICFtX2ltYWdlICYmICFlcnJvck9jY3VycmVkKCkpIHsKICAgICAg
ICAgY3JlYXRlSW1hZ2UoKTsKLSAgICAgICAgbV9pbWFnZS0+c2V0RGF0YShtX2RhdGEuY29weVJl
ZigpLCB0cnVlKTsKKyAgICAgICAgbV9pbWFnZS0+c2V0RGF0YShtX2RhdGEuY29weVJlZigpLCB0
cnVlLCBpbWFnZUZvcm1hdFdoaXRlbGlzdCgpKTsKICAgICB9CiAKICAgICBBU1NFUlQoY2xpZW50
LnJlc291cmNlQ2xpZW50VHlwZSgpID09IENhY2hlZEltYWdlQ2xpZW50OjpleHBlY3RlZFR5cGUo
KSk7CkBAIC01MDYsNyArNTA3LDcgQEAgRW5jb2RlZERhdGFTdGF0dXMgQ2FjaGVkSW1hZ2U6OnVw
ZGF0ZUltYQogewogICAgIGlmICghbV9pbWFnZSB8fCAhbV9kYXRhKQogICAgICAgICByZXR1cm4g
RW5jb2RlZERhdGFTdGF0dXM6OkVycm9yOwotICAgIEVuY29kZWREYXRhU3RhdHVzIHJlc3VsdCA9
IG1faW1hZ2UtPnNldERhdGEobV9kYXRhLmdldCgpLCBhbGxEYXRhUmVjZWl2ZWQpOworICAgIEVu
Y29kZWREYXRhU3RhdHVzIHJlc3VsdCA9IG1faW1hZ2UtPnNldERhdGEobV9kYXRhLmdldCgpLCBh
bGxEYXRhUmVjZWl2ZWQsIGltYWdlRm9ybWF0V2hpdGVsaXN0KCkpOwogICAgIGRpZFVwZGF0ZUlt
YWdlRGF0YSgpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC02NDcsNiArNjQ4LDExIEBAIHZv
aWQgQ2FjaGVkSW1hZ2U6OmNoYW5nZWRJblJlY3QoY29uc3QgSW0KICAgICBub3RpZnlPYnNlcnZl
cnMocmVjdCk7CiB9CiAKK1N0cmluZyBDYWNoZWRJbWFnZTo6aW1hZ2VGb3JtYXRXaGl0ZWxpc3Qo
KSBjb25zdAoreworICAgIHJldHVybiBtX2xvYWRlcj8gbV9sb2FkZXItPmZyYW1lKCktPmRvY3Vt
ZW50KCktPnNldHRpbmdzKCkuaW1hZ2VGb3JtYXRXaGl0ZWxpc3QoKSA6IGRlZmF1bHRJbWFnZUZv
cm1hdFdoaXRlbGlzdCgpOworfQorCiBib29sIENhY2hlZEltYWdlOjpjdXJyZW50RnJhbWVLbm93
blRvQmVPcGFxdWUoY29uc3QgUmVuZGVyRWxlbWVudCogcmVuZGVyZXIpCiB7CiAgICAgSW1hZ2Uq
IGltYWdlID0gaW1hZ2VGb3JSZW5kZXJlcihyZW5kZXJlcik7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaAkocmV2aXNpb24gMjM3MDIwKQorKysgU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE1
OCw2ICsxNTgsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgY2FuRGVzdHJveURlY29kZWREYXRhKGNv
bnN0IEltYWdlJik7CiAgICAgdm9pZCBpbWFnZUZyYW1lQXZhaWxhYmxlKGNvbnN0IEltYWdlJiwg
SW1hZ2VBbmltYXRpbmdTdGF0ZSwgY29uc3QgSW50UmVjdCogY2hhbmdlUmVjdCA9IG51bGxwdHIs
IERlY29kaW5nU3RhdHVzID0gRGVjb2RpbmdTdGF0dXM6OkludmFsaWQpOwogICAgIHZvaWQgY2hh
bmdlZEluUmVjdChjb25zdCBJbWFnZSYsIGNvbnN0IEludFJlY3QqKTsKKyAgICBTdHJpbmcgaW1h
Z2VGb3JtYXRXaGl0ZWxpc3QoKSBjb25zdDsKIAogICAgIHZvaWQgdXBkYXRlQnVmZmVySW50ZXJu
YWwoU2hhcmVkQnVmZmVyJik7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3Mu
eWFtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLnlhbWwJKHJl
dmlzaW9uIDIzNzAyMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MueWFtbAkod29y
a2luZyBjb3B5KQpAQCAtNTgyLDYgKzU4MiwxMCBAQCBhbmltYXRlZEltYWdlQXN5bmNEZWNvZGlu
Z0VuYWJsZWQ6CiB3ZWJraXRJbWFnZVJlYWR5RXZlbnRFbmFibGVkOgogICBpbml0aWFsOiBmYWxz
ZQogCitpbWFnZUZvcm1hdFdoaXRlbGlzdDoKKyAgICB0eXBlOiBTdHJpbmcKKyAgICBkZWZhdWx0
VmFsdWU6IGRlZmF1bHRJbWFnZUZvcm1hdFdoaXRlbGlzdCgpCisKIHNob3VsZFN1cHByZXNzVGV4
dElucHV0RnJvbUVkaXRpbmdEdXJpbmdQcm92aXNpb25hbE5hdmlnYXRpb246CiAgIGluaXRpYWw6
IGZhbHNlCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnku
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0
cnkuY3BwCShyZXZpc2lvbiAyMzcwMjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1F
VHlwZVJlZ2lzdHJ5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzgsNyArNzgsNyBAQCBzdGF0aWMg
dm9pZCBpbml0aWFsaXplU3VwcG9ydGVkSW1hZ2VNSU1FCiAgICAgfQogCiAjaWZuZGVmIE5ERUJV
RwotICAgIGZvciAoYXV0byYgdXRpIDogYWxsb3dlZEltYWdlVVRJcygpKSB7CisgICAgZm9yIChh
dXRvJiB1dGkgOiBkZWZhdWx0QWxsb3dlZEltYWdlVVRJcygpKSB7CiAgICAgICAgIGF1dG8gbWlt
ZVR5cGUgPSBNSU1FVHlwZUZvckltYWdlU291cmNlVHlwZSh1dGkpOwogICAgICAgICBpZiAoIW1p
bWVUeXBlLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgQVNTRVJUKHN1cHBvcnRlZEltYWdlTUlN
RVR5cGVzLT5jb250YWlucyhtaW1lVHlwZSkpOwpAQCAtODgsNyArODgsNyBAQCBzdGF0aWMgdm9p
ZCBpbml0aWFsaXplU3VwcG9ydGVkSW1hZ2VNSU1FCiAKICNpZiBQTEFURk9STShDT0NPQSkKICAg
ICBmb3IgKGF1dG8mIG1pbWUgOiAqc3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXMpCi0gICAgICAgIEFT
U0VSVF9VTlVTRUQobWltZSwgYWxsb3dlZEltYWdlVVRJcygpLmNvbnRhaW5zKFVUSUZyb21NSU1F
VHlwZShtaW1lKSkpOworICAgICAgICBBU1NFUlRfVU5VU0VEKG1pbWUsIGRlZmF1bHRBbGxvd2Vk
SW1hZ2VVVElzKCkuY29udGFpbnMoVVRJRnJvbU1JTUVUeXBlKG1pbWUpKSk7CiAjZW5kaWYKICNl
bmRpZgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFn
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0
bWFwSW1hZ2UuY3BwCShyZXZpc2lvbiAyMzcwMjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg5LDcgKzg5LDcg
QEAgdm9pZCBCaXRtYXBJbWFnZTo6ZGVzdHJveURlY29kZWREYXRhKGJvbwogICAgIGlmICghZGVz
dHJveUFsbCB8fCBtX3NvdXJjZS0+aGFzQXN5bmNEZWNvZGluZ1F1ZXVlKCkpCiAgICAgICAgIG1f
c291cmNlLT5jbGVhckZyYW1lQnVmZmVyQ2FjaGUobV9jdXJyZW50RnJhbWUpOwogICAgIGVsc2UK
LSAgICAgICAgbV9zb3VyY2UtPnJlc2V0RGF0YShkYXRhKCkpOworICAgICAgICBtX3NvdXJjZS0+
cmVzZXREYXRhKGRhdGEoKSwgaW1hZ2VGb3JtYXRXaGl0ZWxpc3QoKSk7CiAKICAgICBpbnZhbGlk
YXRlUGxhdGZvcm1EYXRhKCk7CiB9CkBAIC0xMTMsNyArMTEzLDcgQEAgRW5jb2RlZERhdGFTdGF0
dXMgQml0bWFwSW1hZ2U6OmRhdGFDaGFuZwogICAgICAgICBtX3NvdXJjZS0+ZGVzdHJveUluY29t
cGxldGVEZWNvZGVkRGF0YSgpOwogCiAgICAgbV9jdXJyZW50RnJhbWVEZWNvZGluZ1N0YXR1cyA9
IERlY29kaW5nU3RhdHVzOjpJbnZhbGlkOwotICAgIHJldHVybiBtX3NvdXJjZS0+ZGF0YUNoYW5n
ZWQoZGF0YSgpLCBhbGxEYXRhUmVjZWl2ZWQpOworICAgIHJldHVybiBtX3NvdXJjZS0+ZGF0YUNo
YW5nZWQoZGF0YSgpLCBhbGxEYXRhUmVjZWl2ZWQsIGltYWdlRm9ybWF0V2hpdGVsaXN0KCkpOwog
fQogICAgIAogdm9pZCBCaXRtYXBJbWFnZTo6c2V0Q3VycmVudEZyYW1lRGVjb2RpbmdTdGF0dXNJ
Zk5lY2Vzc2FyeShEZWNvZGluZ1N0YXR1cyBkZWNvZGluZ1N0YXR1cykKQEAgLTQ1Miw3ICs0NTIs
NyBAQCBCaXRtYXBJbWFnZTo6U3RhcnRBbmltYXRpb25TdGF0dXMgQml0bWFwCiAgICAgICAgIH0K
IAogICAgICAgICBpZiAobV9jbGVhckRlY29kZXJBZnRlckFzeW5jRnJhbWVSZXF1ZXN0Rm9yVGVz
dGluZykKLSAgICAgICAgICAgIG1fc291cmNlLT5yZXNldERhdGEoZGF0YSgpKTsKKyAgICAgICAg
ICAgIG1fc291cmNlLT5yZXNldERhdGEoZGF0YSgpLCBpbWFnZUZvcm1hdFdoaXRlbGlzdCgpKTsK
ICAgICB9CiAKICAgICBBU1NFUlQoIW1fZnJhbWVUaW1lcik7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwCShyZXZpc2lvbiAyMzcwMjApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEwMCw5ICsxMDAsMTAgQEAgYm9vbCBJbWFnZTo6aXNQb3N0U2NyaXB0UmVzb3VyY2UoY29uc3Qg
UwogfQogCiAKLUVuY29kZWREYXRhU3RhdHVzIEltYWdlOjpzZXREYXRhKFJlZlB0cjxTaGFyZWRC
dWZmZXI+JiYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCitFbmNvZGVkRGF0YVN0YXR1cyBJ
bWFnZTo6c2V0RGF0YShSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGRhdGEsIGJvb2wgYWxsRGF0YVJl
Y2VpdmVkLCBjb25zdCBTdHJpbmcmIGltYWdlRm9ybWF0V2hpdGVsaXN0KQogewogICAgIG1fZW5j
b2RlZEltYWdlRGF0YSA9IFdURk1vdmUoZGF0YSk7CisgICAgbV9pbWFnZUZvcm1hdFdoaXRlbGlz
dCA9IGltYWdlRm9ybWF0V2hpdGVsaXN0OwogCiAgICAgLy8gRG9uJ3QgZG8gYW55dGhpbmc7IGl0
IGlzIGFuIGVtcHR5IGltYWdlLgogICAgIGlmICghbV9lbmNvZGVkSW1hZ2VEYXRhLmdldCgpIHx8
ICFtX2VuY29kZWRJbWFnZURhdGEtPnNpemUoKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2UuaAkocmV2aXNpb24gMjM3MDIwKQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMTIwLDcgKzEyMCw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEZsb2F0U2l6ZSBvcmlnaW5hbFNpemUoKSBjb25zdCB7
IHJldHVybiBzaXplKCk7IH0KICNlbmRpZgogCi0gICAgV0VCQ09SRV9FWFBPUlQgRW5jb2RlZERh
dGFTdGF0dXMgc2V0RGF0YShSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGRhdGEsIGJvb2wgYWxsRGF0
YVJlY2VpdmVkKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBFbmNvZGVkRGF0YVN0YXR1cyBzZXREYXRh
KFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQsIGNvbnN0
IFN0cmluZyYgaW1hZ2VGb3JtYXRXaGl0ZWxpc3QpOwogICAgIHZpcnR1YWwgRW5jb2RlZERhdGFT
dGF0dXMgZGF0YUNoYW5nZWQoYm9vbCAvKmFsbERhdGFSZWNlaXZlZCovKSB7IHJldHVybiBFbmNv
ZGVkRGF0YVN0YXR1czo6VW5rbm93bjsgfQogCiAgICAgdmlydHVhbCBTdHJpbmcgdXRpKCkgY29u
c3QgeyByZXR1cm4gU3RyaW5nKCk7IH0gLy8gbnVsbCBzdHJpbmcgaWYgdW5rbm93bgpAQCAtMTMw
LDYgKzEzMCw3IEBAIHB1YmxpYzoKIAogICAgIFNoYXJlZEJ1ZmZlciogZGF0YSgpIHsgcmV0dXJu
IG1fZW5jb2RlZEltYWdlRGF0YS5nZXQoKTsgfQogICAgIGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0
YSgpIGNvbnN0IHsgcmV0dXJuIG1fZW5jb2RlZEltYWdlRGF0YS5nZXQoKTsgfQorICAgIGNvbnN0
IFN0cmluZyYgaW1hZ2VGb3JtYXRXaGl0ZWxpc3QoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlRm9y
bWF0V2hpdGVsaXN0OyB9CiAKICAgICAvLyBBbmltYXRpb24gYmVnaW5zIHdoZW5ldmVyIHNvbWVv
bmUgZHJhd3MgdGhlIGltYWdlLCBzbyBzdGFydEFuaW1hdGlvbigpIGlzIG5vdCBub3JtYWxseSBj
YWxsZWQuCiAgICAgLy8gSXQgd2lsbCBhdXRvbWF0aWNhbGx5IHBhdXNlIG9uY2UgYWxsIG9ic2Vy
dmVycyBubyBsb25nZXIgd2FudCB0byByZW5kZXIgdGhlIGltYWdlIGFueXdoZXJlLgpAQCAtMTk5
LDYgKzIwMCw3IEBAIHByb3RlY3RlZDoKIAogcHJpdmF0ZToKICAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBtX2VuY29kZWRJbWFnZURhdGE7CisgICAgU3RyaW5nIG1faW1hZ2VGb3JtYXRXaGl0ZWxp
c3Q7CiAgICAgSW1hZ2VPYnNlcnZlciogbV9pbWFnZU9ic2VydmVyOwogICAgIHN0ZDo6dW5pcXVl
X3B0cjxUaW1lcj4gbV9hbmltYXRpb25TdGFydFRpbWVyOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmNwcAkocmV2aXNpb24g
MjM3MDIwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsOSArNDAsMTAgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1SZWZQdHI8SW1hZ2VEZWNvZGVyPiBJbWFnZURlY29kZXI6OmNyZWF0ZShTaGFyZWRC
dWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uIGFscGhhT3B0
aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlv
bikKK1JlZlB0cjxJbWFnZURlY29kZXI+IEltYWdlRGVjb2Rlcjo6Y3JlYXRlKFNoYXJlZEJ1ZmZl
ciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiBpbWFnZVdoaXRl
bGlzdCwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9u
IGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQogewogICAgIFVOVVNFRF9QQVJBTShtaW1lVHlw
ZSk7CisgICAgVU5VU0VEX1BBUkFNKGltYWdlV2hpdGVsaXN0KTsKIAogI2lmIEhBVkUoQVZBU1NF
VFJFQURFUikKICAgICBpZiAoIUltYWdlRGVjb2RlckNHOjpjYW5EZWNvZGVUeXBlKG1pbWVUeXBl
KSAmJiBJbWFnZURlY29kZXJBVkZPYmpDOjpjYW5EZWNvZGVUeXBlKG1pbWVUeXBlKSkKQEAgLTUw
LDcgKzUxLDcgQEAgUmVmUHRyPEltYWdlRGVjb2Rlcj4gSW1hZ2VEZWNvZGVyOjpjcmVhdAogI2Vu
ZGlmCiAKICNpZiBVU0UoQ0cpCi0gICAgcmV0dXJuIEltYWdlRGVjb2RlckNHOjpjcmVhdGUoZGF0
YSwgYWxwaGFPcHRpb24sIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKKyAgICByZXR1cm4g
SW1hZ2VEZWNvZGVyQ0c6OmNyZWF0ZShkYXRhLCBpbWFnZVdoaXRlbGlzdCwgYWxwaGFPcHRpb24s
IGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKICNlbGlmIFVTRShESVJFQ1QyRCkKICAgICBy
ZXR1cm4gSW1hZ2VEZWNvZGVyRGlyZWN0MkQ6OmNyZWF0ZShkYXRhLCBhbHBoYU9wdGlvbiwgZ2Ft
bWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwogI2Vsc2UKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5oCShyZXZpc2lvbiAyMzcwMjApCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDMsNyArNDMsNyBAQCBjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBJbWFn
ZURlY29kZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8SW1hZ2VEZWNvZGVyPiB7CiAg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxJ
bWFnZURlY29kZXI+IGNyZWF0ZShTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBl
LCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOworICAgIHN0YXRpYyBS
ZWZQdHI8SW1hZ2VEZWNvZGVyPiBjcmVhdGUoU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwgY29uc3QgU3RyaW5nJiBpbWFnZUZvcm1hdFdoaXRlbGlzdCwgQWxwaGFPcHRpb24s
IEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKICAgICB2aXJ0dWFsIH5JbWFnZURlY29kZXIo
KSA9IGRlZmF1bHQ7CiAKICAgICBlbnVtIGNsYXNzIE1lZGlhVHlwZSB7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCShyZXZpc2lv
biAyMzcwMjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJj
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY2LDEyICs2NiwxMiBAQCBJbWFnZVNvdXJjZTo6fklt
YWdlU291cmNlKCkKICAgICBBU1NFUlQoIWhhc0FzeW5jRGVjb2RpbmdRdWV1ZSgpKTsKIH0KIAot
Ym9vbCBJbWFnZVNvdXJjZTo6ZW5zdXJlRGVjb2RlckF2YWlsYWJsZShTaGFyZWRCdWZmZXIqIGRh
dGEpCitib29sIEltYWdlU291cmNlOjplbnN1cmVEZWNvZGVyQXZhaWxhYmxlKFNoYXJlZEJ1ZmZl
ciogZGF0YSwgY29uc3QgU3RyaW5nJiBpbWFnZUZvcm1hdFdoaXRlbGlzdCkKIHsKICAgICBpZiAo
IWRhdGEgfHwgaXNEZWNvZGVyQXZhaWxhYmxlKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0g
ICAgbV9kZWNvZGVyID0gSW1hZ2VEZWNvZGVyOjpjcmVhdGUoKmRhdGEsIG1pbWVUeXBlKCksIG1f
YWxwaGFPcHRpb24sIG1fZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOworICAgIG1fZGVjb2Rl
ciA9IEltYWdlRGVjb2Rlcjo6Y3JlYXRlKCpkYXRhLCBtaW1lVHlwZSgpLCBpbWFnZUZvcm1hdFdo
aXRlbGlzdCwgbV9hbHBoYU9wdGlvbiwgbV9nYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CiAg
ICAgaWYgKCFpc0RlY29kZXJBdmFpbGFibGUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBA
IC04NSwyMyArODUsMjMgQEAgYm9vbCBJbWFnZVNvdXJjZTo6ZW5zdXJlRGVjb2RlckF2YWlsYWJs
ZQogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIEltYWdlU291cmNlOjpzZXREYXRhKFNoYXJl
ZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit2b2lkIEltYWdlU291cmNlOjpz
ZXREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQsIGNvbnN0IFN0
cmluZyYgaW1hZ2VGb3JtYXRXaGl0ZWxpc3QpCiB7Ci0gICAgaWYgKCFkYXRhIHx8ICFlbnN1cmVE
ZWNvZGVyQXZhaWxhYmxlKGRhdGEpKQorICAgIGlmICghZGF0YSB8fCAhZW5zdXJlRGVjb2RlckF2
YWlsYWJsZShkYXRhLCBpbWFnZUZvcm1hdFdoaXRlbGlzdCkpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIG1fZGVjb2Rlci0+c2V0RGF0YSgqZGF0YSwgYWxsRGF0YVJlY2VpdmVkKTsKIH0KIAotdm9p
ZCBJbWFnZVNvdXJjZTo6cmVzZXREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSkKK3ZvaWQgSW1hZ2VT
b3VyY2U6OnJlc2V0RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IFN0cmluZyYgaW1hZ2VG
b3JtYXRXaGl0ZWxpc3QpCiB7CiAgICAgbV9kZWNvZGVyID0gbnVsbHB0cjsKLSAgICBzZXREYXRh
KGRhdGEsIGlzQWxsRGF0YVJlY2VpdmVkKCkpOworICAgIHNldERhdGEoZGF0YSwgaXNBbGxEYXRh
UmVjZWl2ZWQoKSwgaW1hZ2VGb3JtYXRXaGl0ZWxpc3QpOwogfQogCi1FbmNvZGVkRGF0YVN0YXR1
cyBJbWFnZVNvdXJjZTo6ZGF0YUNoYW5nZWQoU2hhcmVkQnVmZmVyKiBkYXRhLCBib29sIGFsbERh
dGFSZWNlaXZlZCkKK0VuY29kZWREYXRhU3RhdHVzIEltYWdlU291cmNlOjpkYXRhQ2hhbmdlZChT
aGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkLCBjb25zdCBTdHJpbmcmIGlt
YWdlRm9ybWF0V2hpdGVsaXN0KQogewotICAgIHNldERhdGEoZGF0YSwgYWxsRGF0YVJlY2VpdmVk
KTsKKyAgICBzZXREYXRhKGRhdGEsIGFsbERhdGFSZWNlaXZlZCwgaW1hZ2VGb3JtYXRXaGl0ZWxp
c3QpOwogICAgIGNsZWFyTWV0YWRhdGEoKTsKICAgICBFbmNvZGVkRGF0YVN0YXR1cyBzdGF0dXMg
PSBlbmNvZGVkRGF0YVN0YXR1cygpOwogICAgIGlmIChzdGF0dXMgPj0gRW5jb2RlZERhdGFTdGF0
dXM6OlNpemVBdmFpbGFibGUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZVNvdXJjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlU291cmNlLmgJKHJldmlzaW9uIDIzNzAyMCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU1LDkg
KzU1LDkgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbWFnZVNvdXJj
ZShXVEZNb3ZlKG5hdGl2ZUltYWdlKSkpOwogICAgIH0KIAotICAgIHZvaWQgc2V0RGF0YShTaGFy
ZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKLSAgICB2b2lkIHJlc2V0RGF0
YShTaGFyZWRCdWZmZXIqIGRhdGEpOwotICAgIEVuY29kZWREYXRhU3RhdHVzIGRhdGFDaGFuZ2Vk
KFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOworICAgIHZvaWQgc2V0
RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkLCBjb25zdCBTdHJp
bmcmIGltYWdlRm9ybWF0V2hpdGVsaXN0KTsKKyAgICB2b2lkIHJlc2V0RGF0YShTaGFyZWRCdWZm
ZXIqIGRhdGEsIGNvbnN0IFN0cmluZyYgaW1hZ2VGb3JtYXRXaGl0ZWxpc3QpOworICAgIEVuY29k
ZWREYXRhU3RhdHVzIGRhdGFDaGFuZ2VkKFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRh
UmVjZWl2ZWQsIGNvbnN0IFN0cmluZyYgaW1hZ2VGb3JtYXRXaGl0ZWxpc3QpOwogICAgIGJvb2wg
aXNBbGxEYXRhUmVjZWl2ZWQoKTsKIAogICAgIHVuc2lnbmVkIGRlY29kZWRTaXplKCkgY29uc3Qg
eyByZXR1cm4gbV9kZWNvZGVkU2l6ZTsgfQpAQCAtMTM1LDcgKzEzNSw3IEBAIHByaXZhdGU6CiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUuLi4gQXJncz4KICAgICBUIGZyYW1lTWV0
YWRhdGFBdEluZGV4Q2FjaGVJZk5lZWRlZChzaXplX3QsIFQgKEltYWdlRnJhbWU6OipmdW5jdG9y
KSgpIGNvbnN0LCAgc3RkOjpvcHRpb25hbDxUPiogY2FjaGVkVmFsdWUsIEFyZ3MmJi4uLik7CiAK
LSAgICBib29sIGVuc3VyZURlY29kZXJBdmFpbGFibGUoU2hhcmVkQnVmZmVyKiBkYXRhKTsKKyAg
ICBib29sIGVuc3VyZURlY29kZXJBdmFpbGFibGUoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBT
dHJpbmcmIGltYWdlRm9ybWF0V2hpdGVsaXN0KTsKICAgICBib29sIGlzRGVjb2RlckF2YWlsYWJs
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVjb2RlcjsgfQogICAgIHZvaWQgZGVzdHJveURlY29kZWRE
YXRhKHNpemVfdCBmcmFtZUNvdW50LCBzaXplX3QgZXhjbHVkZUZyYW1lKTsKICAgICB2b2lkIGRl
Y29kZWRTaXplQ2hhbmdlZChsb25nIGxvbmcgZGVjb2RlZFNpemUpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0M0RDRy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250
ZXh0M0RDRy5jcHAJKHJldmlzaW9uIDIzNzAyMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
Myw2ICszMyw3IEBACiAjaW5jbHVkZSAiQml0bWFwSW1hZ2UuaCIKICNpbmNsdWRlICJHcmFwaGlj
c0NvbnRleHRDRy5oIgogI2luY2x1ZGUgIkltYWdlLmgiCisjaW5jbHVkZSAiVVRJUmVnaXN0cnku
aCIKIAogI2lmIEhBVkUoQVJNX05FT05fSU5UUklOU0lDUykKICNpbmNsdWRlICJHcmFwaGljc0Nv
bnRleHQzRE5FT04uaCIKQEAgLTMyNiw3ICszMjcsNyBAQCBib29sIEdyYXBoaWNzQ29udGV4dDNE
OjpJbWFnZUV4dHJhY3Rvcjo6CiAgICAgYm9vbCBoYXNBbHBoYSA9ICFtX2ltYWdlLT5jdXJyZW50
RnJhbWVLbm93blRvQmVPcGFxdWUoKTsKICAgICBpZiAoKGlnbm9yZUdhbW1hQW5kQ29sb3JQcm9m
aWxlIHx8IChoYXNBbHBoYSAmJiAhcHJlbXVsdGlwbHlBbHBoYSkpICYmIG1faW1hZ2UtPmRhdGEo
KSkgewogICAgICAgICBhdXRvIHNvdXJjZSA9IEltYWdlU291cmNlOjpjcmVhdGUobnVsbHB0ciwg
QWxwaGFPcHRpb246Ok5vdFByZW11bHRpcGxpZWQsIGlnbm9yZUdhbW1hQW5kQ29sb3JQcm9maWxl
ID8gR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb246Oklnbm9yZWQgOiBHYW1tYUFuZENvbG9yUHJv
ZmlsZU9wdGlvbjo6QXBwbGllZCk7Ci0gICAgICAgIHNvdXJjZS0+c2V0RGF0YShtX2ltYWdlLT5k
YXRhKCksIHRydWUpOworICAgICAgICBzb3VyY2UtPnNldERhdGEobV9pbWFnZS0+ZGF0YSgpLCB0
cnVlLCBkZWZhdWx0SW1hZ2VGb3JtYXRXaGl0ZWxpc3QoKSk7CiAgICAgICAgIGlmICghc291cmNl
LT5mcmFtZUNvdW50KCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJD
Ry5jcHAJKHJldmlzaW9uIDIzNzAyMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQzLDcgKzE0Myw4
IEBAIHZvaWQgc2hhcmVkQnVmZmVyUmVsZWFzZSh2b2lkKiBpbmZvKQogfQogI2VuZGlmCiAKLUlt
YWdlRGVjb2RlckNHOjpJbWFnZURlY29kZXJDRyhTaGFyZWRCdWZmZXImIGRhdGEsIEFscGhhT3B0
aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKK0ltYWdlRGVjb2RlckNHOjpJbWFnZURl
Y29kZXJDRyhTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgaW1hZ2VGb3JtYXRXaGl0
ZWxpc3QsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKKyAgICA6IG1f
aW1hZ2VGb3JtYXRXaGl0ZWxpc3QoaW1hZ2VGb3JtYXRXaGl0ZWxpc3QpCiB7CiAgICAgUmV0YWlu
UHRyPENGU3RyaW5nUmVmPiB1dGlIaW50OwogICAgIGlmIChkYXRhLnNpemUoKSA+PSAzMikKQEAg
LTE5OSw3ICsyMDAsNyBAQCBFbmNvZGVkRGF0YVN0YXR1cyBJbWFnZURlY29kZXJDRzo6ZW5jb2Rl
CiAgICAgICAgIHJldHVybiBFbmNvZGVkRGF0YVN0YXR1czo6RXJyb3I7CiAKICAgICBjYXNlIGtD
R0ltYWdlU3RhdHVzSW5jb21wbGV0ZTogewotICAgICAgICBpZiAoIWlzQWxsb3dlZEltYWdlVVRJ
KHV0aSkpCisgICAgICAgIGlmICghbV9pbWFnZUZvcm1hdFdoaXRlbGlzdC5jb250YWlucyh1dGkp
KQogICAgICAgICAgICAgcmV0dXJuIEVuY29kZWREYXRhU3RhdHVzOjpFcnJvcjsKIAogICAgICAg
ICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBpbWFnZTBQcm9wZXJ0aWVzID0gYWRvcHRDRihD
R0ltYWdlU291cmNlQ29weVByb3BlcnRpZXNBdEluZGV4KG1fbmF0aXZlRGVjb2Rlci5nZXQoKSwg
MCwgaW1hZ2VTb3VyY2VPcHRpb25zKCkuZ2V0KCkpKTsKQEAgLTIxMyw3ICsyMTQsNyBAQCBFbmNv
ZGVkRGF0YVN0YXR1cyBJbWFnZURlY29kZXJDRzo6ZW5jb2RlCiAgICAgfQogCiAgICAgY2FzZSBr
Q0dJbWFnZVN0YXR1c0NvbXBsZXRlOgotICAgICAgICBpZiAoIWlzQWxsb3dlZEltYWdlVVRJKHV0
aSkpCisgICAgICAgIGlmICghbV9pbWFnZUZvcm1hdFdoaXRlbGlzdC5jb250YWlucyh1dGkpKQog
ICAgICAgICAgICAgcmV0dXJuIEVuY29kZWREYXRhU3RhdHVzOjpFcnJvcjsKIAogICAgICAgICBy
ZXR1cm4gRW5jb2RlZERhdGFTdGF0dXM6OkNvbXBsZXRlOwpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5oCShyZXZpc2lv
biAyMzcwMjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURl
Y29kZXJDRy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiwxMSArMzIsMTEgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogY2xhc3MgSW1hZ2VEZWNvZGVyQ0cgZmluYWwgOiBwdWJsaWMgSW1hZ2VEZWNvZGVy
IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBJbWFnZURlY29k
ZXJDRyhTaGFyZWRCdWZmZXImIGRhdGEsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmls
ZU9wdGlvbik7CisgICAgSW1hZ2VEZWNvZGVyQ0coU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBT
dHJpbmcmIGltYWdlRm9ybWF0V2hpdGVsaXN0LCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclBy
b2ZpbGVPcHRpb24pOwogCi0gICAgc3RhdGljIFJlZjxJbWFnZURlY29kZXJDRz4gY3JlYXRlKFNo
YXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQ
cm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQorICAgIHN0YXRpYyBSZWY8
SW1hZ2VEZWNvZGVyQ0c+IGNyZWF0ZShTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYg
aW1hZ2VGb3JtYXRXaGl0ZWxpc3QsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENv
bG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKICAgICB7Ci0gICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEltYWdlRGVjb2RlckNHKGRhdGEsIGFscGhhT3B0aW9u
LCBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBJbWFnZURlY29kZXJDRyhkYXRhLCBpbWFnZUZvcm1hdFdoaXRlbGlzdCwgYWxwaGFPcHRp
b24sIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKSk7CiAgICAgfQogCiAgICAgc3RhdGljIGJv
b2wgc3VwcG9ydHNNZWRpYVR5cGUoTWVkaWFUeXBlIHR5cGUpIHsgcmV0dXJuIHR5cGUgPT0gTWVk
aWFUeXBlOjpJbWFnZTsgfQpAQCAtNjksNiArNjksNyBAQCBwdWJsaWM6CiAKIHByb3RlY3RlZDoK
ICAgICBib29sIG1faXNBbGxEYXRhUmVjZWl2ZWQgeyBmYWxzZSB9OworICAgIFN0cmluZyBtX2lt
YWdlRm9ybWF0V2hpdGVsaXN0OwogICAgIFJldGFpblB0cjxDR0ltYWdlU291cmNlUmVmPiBtX25h
dGl2ZURlY29kZXI7CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9VVElSZWdpc3RyeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvVVRJUmVnaXN0cnkuY3BwCShyZXZpc2lvbiAyMzcwMjApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9VVElSZWdpc3RyeS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM4LDEwICszOCwxMCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUhhc2hT
ZXQ8U3RyaW5nPiYgYWxsb3dlZEltYWdlVVRJcygpCitIYXNoU2V0PFN0cmluZz4mIGRlZmF1bHRB
bGxvd2VkSW1hZ2VVVElzKCkKIHsKICAgICAvLyBDRyBhdCBsZWFzdCBzdXBwb3J0cyB0aGUgZm9s
bG93aW5nIHN0YW5kYXJkIGltYWdlIHR5cGVzOgotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxI
YXNoU2V0PFN0cmluZz4+IHNfYWxsb3dlZEltYWdlVVRJcyA9IHN0ZDo6aW5pdGlhbGl6ZXJfbGlz
dDxTdHJpbmc+IHsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxTdHJpbmc+PiBk
ZWZhdWx0QWxsb3dlZEltYWdlVVRJcyA9IHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxTdHJpbmc+IHsK
ICAgICAgICAgImNvbS5jb21wdXNlcnZlLmdpZiIsCiAgICAgICAgICJjb20ubWljcm9zb2Z0LmJt
cCIsCiAgICAgICAgICJjb20ubWljcm9zb2Z0LmN1ciIsCkBAIC01OSw3ICs1OSw3IEBAIEhhc2hT
ZXQ8U3RyaW5nPiYgYWxsb3dlZEltYWdlVVRJcygpCiAgICAgaWYgKCFjaGVja2VkKSB7CiAgICAg
ICAgIFJldGFpblB0cjxDRkFycmF5UmVmPiBzeXN0ZW1JbWFnZVVUSXMgPSBhZG9wdENGKENHSW1h
Z2VTb3VyY2VDb3B5VHlwZUlkZW50aWZpZXJzKCkpOwogICAgICAgICBDRkluZGV4IGNvdW50ID0g
Q0ZBcnJheUdldENvdW50KHN5c3RlbUltYWdlVVRJcy5nZXQoKSk7Ci0gICAgICAgIGZvciAoYXV0
byYgaW1hZ2VVVEkgOiBzX2FsbG93ZWRJbWFnZVVUSXMuZ2V0KCkpIHsKKyAgICAgICAgZm9yIChh
dXRvJiBpbWFnZVVUSSA6IGRlZmF1bHRBbGxvd2VkSW1hZ2VVVElzLmdldCgpKSB7CiAgICAgICAg
ICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHN0cmluZyA9IGltYWdlVVRJLmNyZWF0ZUNGU3Ry
aW5nKCk7CiAgICAgICAgICAgICBBU1NFUlQoQ0ZBcnJheUNvbnRhaW5zVmFsdWUoc3lzdGVtSW1h
Z2VVVElzLmdldCgpLCBDRlJhbmdlTWFrZSgwLCBjb3VudCksIHN0cmluZy5nZXQoKSkpOwogICAg
ICAgICB9CkBAIC02NywxMiArNjcsMTcgQEAgSGFzaFNldDxTdHJpbmc+JiBhbGxvd2VkSW1hZ2VV
VElzKCkKICAgICB9CiAjZW5kaWYKIAotICAgIHJldHVybiBzX2FsbG93ZWRJbWFnZVVUSXMuZ2V0
KCk7CisgICAgcmV0dXJuIGRlZmF1bHRBbGxvd2VkSW1hZ2VVVElzOwogfQogCi1ib29sIGlzQWxs
b3dlZEltYWdlVVRJKGNvbnN0IFN0cmluZyYgaW1hZ2VVVEkpCitTdHJpbmcgZGVmYXVsdEltYWdl
Rm9ybWF0V2hpdGVsaXN0KCkKIHsKLSAgICByZXR1cm4gIWltYWdlVVRJLmlzRW1wdHkoKSAmJiBh
bGxvd2VkSW1hZ2VVVElzKCkuY29udGFpbnMoaW1hZ2VVVEkpOworICAgIFN0cmluZ0J1aWxkZXIg
d2hpdGVsaXN0OworICAgIGZvciAoU3RyaW5nIGltYWdlVVRJIDogZGVmYXVsdEFsbG93ZWRJbWFn
ZVVUSXMoKSkgeworICAgICAgICB3aGl0ZWxpc3QuYXBwZW5kKGltYWdlVVRJKTsKKyAgICAgICAg
d2hpdGVsaXN0LmFwcGVuZCgiOyIpOworICAgIH0KKyAgICByZXR1cm4gd2hpdGVsaXN0LnRvU3Ry
aW5nKCk7CiB9CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L1VUSVJlZ2lzdHJ5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvVVRJUmVnaXN0cnkuaAkocmV2aXNpb24gMjM3MDIwKQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvVVRJUmVnaXN0cnkuaAkod29ya2luZyBjb3B5KQpAQCAt
MzAsNyArMzAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUhhc2hTZXQ8U3RyaW5nPiYg
YWxsb3dlZEltYWdlVVRJcygpOwotYm9vbCBpc0FsbG93ZWRJbWFnZVVUSShjb25zdCBTdHJpbmcm
KTsKK0hhc2hTZXQ8U3RyaW5nPiYgZGVmYXVsdEFsbG93ZWRJbWFnZVVUSXMoKTsKK1dFQkNPUkVf
RVhQT1JUIFN0cmluZyBkZWZhdWx0SW1hZ2VGb3JtYXRXaGl0ZWxpc3QoKTsKIAogfQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ltYWdlTWFjLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9JbWFnZU1hYy5tbQko
cmV2aXNpb24gMjM3MDIwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFj
L0ltYWdlTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAjaW1wb3J0ICJG
bG9hdFJlY3QuaCIKICNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dC5oIgogI2ltcG9ydCAiU2hhcmVk
QnVmZmVyLmgiCisjaW1wb3J0ICJVVElSZWdpc3RyeS5oIgogI2ltcG9ydCA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CiAKICNpZiBQTEFURk9STShJT1MpCkBAIC02Myw3ICs2NCw3IEBAIFJlZjxJbWFn
ZT4gSW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKGMKICAgICBOU0RhdGEgKm5hbWVkSW1hZ2VE
YXRhID0gW05TRGF0YSBkYXRhV2l0aENvbnRlbnRzT2ZGaWxlOmltYWdlUGF0aF07CiAgICAgaWYg
KG5hbWVkSW1hZ2VEYXRhKSB7CiAgICAgICAgIGF1dG8gaW1hZ2UgPSBCaXRtYXBJbWFnZTo6Y3Jl
YXRlKCk7Ci0gICAgICAgIGltYWdlLT5zZXREYXRhKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG5hbWVk
SW1hZ2VEYXRhKSwgdHJ1ZSk7CisgICAgICAgIGltYWdlLT5zZXREYXRhKFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKG5hbWVkSW1hZ2VEYXRhKSwgdHJ1ZSwgZGVmYXVsdEltYWdlRm9ybWF0V2hpdGVsaXN0
KCkpOwogICAgICAgICByZXR1cm4gV1RGTW92ZShpbWFnZSk7CiAgICAgfQogCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwkocmV2aXNpb24gMjM3MDIyKQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwyOCBAQAorMjAxOC0xMC0xMCAgU2FpZCBBYm91LUhhbGxhd2EgIDxz
YWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBhbiBTUEkgZm9yIFdlYlZpZXcg
Y2xpZW50cyB0byBjb250cm9sIHRoZSBXZWJLaXQgaW1hZ2UgZm9ybWF0IHdoaXRlbGlzdAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwNDU0CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTY3JpcHRzL1By
ZWZlcmVuY2VzVGVtcGxhdGVzL1dlYlByZWZlcmVuY2VzU3RvcmVEZWZhdWx0c01hcC5jcHAuZXJi
OgorICAgICAgICAqIFNoYXJlZC9XZWJQcmVmZXJlbmNlcy55YW1sOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcDoKKyAgICAgICAgKFdLUHJlZmVyZW5jZXNTZXRJ
bWFnZUZvcm1hdFdoaXRlbGlzdCk6CisgICAgICAgIChXS1ByZWZlcmVuY2VzR2V0SW1hZ2VGb3Jt
YXRXaGl0ZWxpc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzUmVm
UHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlcy5t
bToKKyAgICAgICAgKC1bV0tQcmVmZXJlbmNlcyBfc2V0SW1hZ2VGb3JtYXRXaGl0ZWxpc3Q6XSk6
CisgICAgICAgICgtW1dLUHJlZmVyZW5jZXMgX2ltYWdlRm9ybWF0V2hpdGVsaXN0XSk6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbToKKyAgICAg
ICAgKC1bV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBjb3B5V2l0aFpvbmU6XSk6CisgICAgICAgICgt
W1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX2ltYWdlRm9ybWF0V2hpdGVsaXN0XSk6CisgICAgICAg
ICgtW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX3NldEltYWdlRm9ybWF0V2hpdGVsaXN0Ol0pOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvblByaXZh
dGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tOgorICAg
ICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6c2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UpOgor
CiAyMDE4LTEwLTEwICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAg
ICAgICAgIFJFR1JFU1NJT04gKHIyMzY5MzUpOiBMYXlvdXQgdGVzdCBmYXN0L2V2ZW50cy9pb3Mv
a2V5Ym9hcmQtc2Nyb2xsaW5nLWRpc3RhbmNlLmh0bWwgaXMgdGltaW5nIG91dApJbmRleDogU291
cmNlL1dlYktpdC9TY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1dlYlByZWZlcmVuY2VzU3Rv
cmVEZWZhdWx0c01hcC5jcHAuZXJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2NyaXB0
cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9XZWJQcmVmZXJlbmNlc1N0b3JlRGVmYXVsdHNNYXAuY3Bw
LmVyYgkocmV2aXNpb24gMjM3MDIwKQorKysgU291cmNlL1dlYktpdC9TY3JpcHRzL1ByZWZlcmVu
Y2VzVGVtcGxhdGVzL1dlYlByZWZlcmVuY2VzU3RvcmVEZWZhdWx0c01hcC5jcHAuZXJiCSh3b3Jr
aW5nIGNvcHkpCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9y
aWdpbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2V0dGluZ3MuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1RleHRFbmNvZGluZ1JlZ2lzdHJ5Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9VVElSZWdpc3RyeS5o
PgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApJbmRleDogU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViUHJlZmVyZW5jZXMueWFtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJQcmVmZXJlbmNlcy55YW1sCShyZXZpc2lvbiAyMzcwMjApCisrKyBTb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJQcmVmZXJlbmNlcy55YW1sCSh3b3JraW5nIGNvcHkpCkBAIC02NTYsNiArNjU2
LDEwIEBAIEFuaW1hdGVkSW1hZ2VBc3luY0RlY29kaW5nRW5hYmxlZDoKICAgdHlwZTogYm9vbAog
ICBkZWZhdWx0VmFsdWU6IHRydWUKIAorSW1hZ2VGb3JtYXRXaGl0ZWxpc3Q6CisgICAgdHlwZTog
U3RyaW5nCisgICAgZGVmYXVsdFZhbHVlOiBXZWJDb3JlOjpkZWZhdWx0SW1hZ2VGb3JtYXRXaGl0
ZWxpc3QoKQorCiBDdXN0b21FbGVtZW50c0VuYWJsZWQ6CiAgIHR5cGU6IGJvb2wKICAgZGVmYXVs
dFZhbHVlOiB0cnVlCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZl
cmVuY2VzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9X
S1ByZWZlcmVuY2VzLmNwcAkocmV2aXNpb24gMjM3MDIwKQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4ODAsNiAr
MTg4MCwxNiBAQCBib29sIFdLUHJlZmVyZW5jZXNHZXRBbmltYXRlZEltYWdlQXN5bmNECiAgICAg
cmV0dXJuIHRvSW1wbChwcmVmZXJlbmNlc1JlZiktPmFuaW1hdGVkSW1hZ2VBc3luY0RlY29kaW5n
RW5hYmxlZCgpOwogfQogCit2b2lkIFdLUHJlZmVyZW5jZXNTZXRJbWFnZUZvcm1hdFdoaXRlbGlz
dChXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCBXS1N0cmluZ1JlZiB3aGl0ZWxpc3Qp
Cit7CisgICAgdG9JbXBsKHByZWZlcmVuY2VzUmVmKS0+c2V0SW1hZ2VGb3JtYXRXaGl0ZWxpc3Qo
dG9XVEZTdHJpbmcod2hpdGVsaXN0KSk7Cit9CisKK1dLU3RyaW5nUmVmIFdLUHJlZmVyZW5jZXNH
ZXRJbWFnZUZvcm1hdFdoaXRlbGlzdChXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmKQor
eworICAgIHJldHVybiB0b0NvcGllZEFQSSh0b0ltcGwocHJlZmVyZW5jZXNSZWYpLT5pbWFnZUZv
cm1hdFdoaXRlbGlzdCgpKTsKK30KKwogdm9pZCBXS1ByZWZlcmVuY2VzU2V0U2hvdWxkU3VwcHJl
c3NLZXlib2FyZElucHV0RHVyaW5nUHJvdmlzaW9uYWxOYXZpZ2F0aW9uKFdLUHJlZmVyZW5jZXNS
ZWYgcHJlZmVyZW5jZXNSZWYsIGJvb2wgZmxhZykKIHsKICAgICB0b0ltcGwocHJlZmVyZW5jZXNS
ZWYpLT5zZXRTaG91bGRTdXBwcmVzc1RleHRJbnB1dEZyb21FZGl0aW5nRHVyaW5nUHJvdmlzaW9u
YWxOYXZpZ2F0aW9uKGZsYWcpOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Mv
V0tQcmVmZXJlbmNlc1JlZlByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzUmVmUHJpdmF0ZS5oCShyZXZpc2lvbiAyMzcwMjAp
CisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzUmVmUHJpdmF0
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01MTYsNiArNTE2LDkgQEAgV0tfRVhQT1JUIGJvb2wgV0tQ
cmVmZXJlbmNlc0dldExhcmdlSW1hZwogV0tfRVhQT1JUIHZvaWQgV0tQcmVmZXJlbmNlc1NldEFu
aW1hdGVkSW1hZ2VBc3luY0RlY29kaW5nRW5hYmxlZChXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVu
Y2VzUmVmLCBib29sIGZsYWcpOwogV0tfRVhQT1JUIGJvb2wgV0tQcmVmZXJlbmNlc0dldEFuaW1h
dGVkSW1hZ2VBc3luY0RlY29kaW5nRW5hYmxlZChXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2Vz
UmVmKTsKIAorV0tfRVhQT1JUIHZvaWQgV0tQcmVmZXJlbmNlc1NldEltYWdlRm9ybWF0V2hpdGVs
aXN0KFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYsIFdLU3RyaW5nUmVmIHdoaXRlbGlz
dCk7CitXS19FWFBPUlQgV0tTdHJpbmdSZWYgV0tQcmVmZXJlbmNlc0dldEltYWdlRm9ybWF0V2hp
dGVsaXN0KFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYpOworCiAvLyBEZWZhdWx0cyB0
byBmYWxzZQogV0tfRVhQT1JUIHZvaWQgV0tQcmVmZXJlbmNlc1NldFNob3VsZFN1cHByZXNzS2V5
Ym9hcmRJbnB1dER1cmluZ1Byb3Zpc2lvbmFsTmF2aWdhdGlvbihXS1ByZWZlcmVuY2VzUmVmLCBi
b29sIGZsYWcpOwogV0tfRVhQT1JUIGJvb2wgV0tQcmVmZXJlbmNlc0dldFNob3VsZFN1cHByZXNz
S2V5Ym9hcmRJbnB1dER1cmluZ1Byb3Zpc2lvbmFsTmF2aWdhdGlvbihXS1ByZWZlcmVuY2VzUmVm
KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2Vz
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1By
ZWZlcmVuY2VzLm1tCShyZXZpc2lvbiAyMzcwMjApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlcy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzg3LDYgKzM4
NywxNiBAQCAtICh2b2lkKV9zZXRBbmltYXRlZEltYWdlQXN5bmNEZWNvZGluZ0VuCiAgICAgX3By
ZWZlcmVuY2VzLT5zZXRBbmltYXRlZEltYWdlQXN5bmNEZWNvZGluZ0VuYWJsZWQoX2FuaW1hdGVk
SW1hZ2VBc3luY0RlY29kaW5nRW5hYmxlZCk7CiB9CiAKKy0gKHZvaWQpX3NldEltYWdlRm9ybWF0
V2hpdGVsaXN0OihOU1N0cmluZyAqKXdoaXRlbGlzdAoreworICAgIF9wcmVmZXJlbmNlcy0+c2V0
SW1hZ2VGb3JtYXRXaGl0ZWxpc3Qod2hpdGVsaXN0KTsKK30KKworLSAoTlNTdHJpbmcgKilfaW1h
Z2VGb3JtYXRXaGl0ZWxpc3QKK3sKKyAgICByZXR1cm4gX3ByZWZlcmVuY2VzLT5pbWFnZUZvcm1h
dFdoaXRlbGlzdCgpOworfQorCiAtIChCT09MKV90ZXh0QXV0b3NpemluZ0VuYWJsZWQKIHsKICAg
ICByZXR1cm4gX3ByZWZlcmVuY2VzLT50ZXh0QXV0b3NpemluZ0VuYWJsZWQoKTsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVu
Y2VzUHJpdmF0ZS5oCShyZXZpc2lvbiAyMzcwMjApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtNzgs
NiArNzgsNyBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBfV0tFZGl0YWJsZUxpCiBAcHJv
cGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRWaXN1YWxWaWV3cG9ydEVuYWJsZWQ6KSBCT09M
IF92aXN1YWxWaWV3cG9ydEVuYWJsZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTIuMyks
IGlvcygxMC4zKSk7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRMYXJnZUltYWdl
QXN5bmNEZWNvZGluZ0VuYWJsZWQ6KSBCT09MIF9sYXJnZUltYWdlQXN5bmNEZWNvZGluZ0VuYWJs
ZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTIuMyksIGlvcygxMC4zKSk7CiBAcHJvcGVy
dHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRBbmltYXRlZEltYWdlQXN5bmNEZWNvZGluZ0VuYWJs
ZWQ6KSBCT09MIF9hbmltYXRlZEltYWdlQXN5bmNEZWNvZGluZ0VuYWJsZWQgV0tfQVBJX0FWQUlM
QUJMRShtYWNvc3goMTAuMTIuMyksIGlvcygxMC4zKSk7CitAcHJvcGVydHkgKG5vbmF0b21pYywg
c2V0dGVyPV9zZXRJbWFnZUZvcm1hdFdoaXRlbGlzdDopIE5TU3RyaW5nICpfaW1hZ2VGb3JtYXRX
aGl0ZWxpc3QgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTQpLCBpb3MoMTIuMCkpOwogQHBy
b3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0VGV4dEF1dG9zaXppbmdFbmFibGVkOikgQk9P
TCBfdGV4dEF1dG9zaXppbmdFbmFibGVkIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjEyKSwg
aW9zKDEwLjApKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldFN1YnBpeGVsQW50
aWFsaWFzZWRMYXllclRleHRFbmFibGVkOikgQk9PTCBfc3VicGl4ZWxBbnRpYWxpYXNlZExheWVy
VGV4dEVuYWJsZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTIpLCBpb3MoMTAuMCkpOwog
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmln
dXJhdGlvbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbQkocmV2aXNpb24gMjM3MDIwKQorKysgU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW0JKHdv
cmtpbmcgY29weSkKQEAgLTE2MSw2ICsxNjEsNyBAQCBzdGF0aWMgX1dLRHJhZ0xpZnREZWxheSB0
b0RyYWdMaWZ0RGVsYXkoCiAgICAgQk9PTCBfZHJhd3NCYWNrZ3JvdW5kOwogCiAgICAgUmV0YWlu
UHRyPE5TU3RyaW5nPiBfbWVkaWFDb250ZW50VHlwZXNSZXF1aXJpbmdIYXJkd2FyZVN1cHBvcnQ7
CisgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBfaW1hZ2VGb3JtYXRXaGl0ZWxpc3Q7CiB9CiAKIC0g
KGluc3RhbmNldHlwZSlpbml0CkBAIC0zOTQsNiArMzk1LDcgQEAgLSAoaWQpY29weVdpdGhab25l
OihOU1pvbmUgKil6b25lCiAgICAgY29uZmlndXJhdGlvbi0+X25lZWRzU3RvcmFnZUFjY2Vzc0Zy
b21GaWxlVVJMc1F1aXJrID0gc2VsZi0+X25lZWRzU3RvcmFnZUFjY2Vzc0Zyb21GaWxlVVJMc1F1
aXJrOwogCiAgICAgY29uZmlndXJhdGlvbi0+X21lZGlhQ29udGVudFR5cGVzUmVxdWlyaW5nSGFy
ZHdhcmVTdXBwb3J0ID0gYWRvcHROUyhbc2VsZi5fbWVkaWFDb250ZW50VHlwZXNSZXF1aXJpbmdI
YXJkd2FyZVN1cHBvcnQgY29weVdpdGhab25lOnpvbmVdKTsKKyAgICBjb25maWd1cmF0aW9uLT5f
aW1hZ2VGb3JtYXRXaGl0ZWxpc3QgPSBhZG9wdE5TKFtzZWxmLT5faW1hZ2VGb3JtYXRXaGl0ZWxp
c3QgY29weVdpdGhab25lOnpvbmVdKTsKICAgICBjb25maWd1cmF0aW9uLT5fbGVnYWN5RW5jcnlw
dGVkTWVkaWFBUElFbmFibGVkID0gc2VsZi0+X2xlZ2FjeUVuY3J5cHRlZE1lZGlhQVBJRW5hYmxl
ZDsKICAgICBjb25maWd1cmF0aW9uLT5fYWxsb3dNZWRpYUNvbnRlbnRUeXBlc1JlcXVpcmluZ0hh
cmR3YXJlU3VwcG9ydEFzRmFsbGJhY2sgPSBzZWxmLT5fYWxsb3dNZWRpYUNvbnRlbnRUeXBlc1Jl
cXVpcmluZ0hhcmR3YXJlU3VwcG9ydEFzRmFsbGJhY2s7CiAKQEAgLTk5MCw2ICs5OTIsMTYgQEAg
LSAodm9pZClfc2V0TWVkaWFDb250ZW50VHlwZXNSZXF1aXJpbmdIYQogICAgIF9tZWRpYUNvbnRl
bnRUeXBlc1JlcXVpcmluZ0hhcmR3YXJlU3VwcG9ydCA9IGFkb3B0TlMoW21lZGlhQ29udGVudFR5
cGVzUmVxdWlyaW5nSGFyZHdhcmVTdXBwb3J0IGNvcHldKTsKIH0KIAorLSAoTlNTdHJpbmcgKilf
aW1hZ2VGb3JtYXRXaGl0ZWxpc3QKK3sKKyAgICByZXR1cm4gX2ltYWdlRm9ybWF0V2hpdGVsaXN0
LmdldCgpOworfQorCistICh2b2lkKV9zZXRJbWFnZUZvcm1hdFdoaXRlbGlzdDooTlNTdHJpbmcg
KilpbWFnZUZvcm1hdFdoaXRlbGlzdAoreworICAgIF9pbWFnZUZvcm1hdFdoaXRlbGlzdCA9IGFk
b3B0TlMoW2ltYWdlRm9ybWF0V2hpdGVsaXN0IGNvcHldKTsKK30KKwogLSAodm9pZClfc2V0TGVn
YWN5RW5jcnlwdGVkTWVkaWFBUElFbmFibGVkOihCT09MKWVuYWJsZWQKIHsKICAgICBfbGVnYWN5
RW5jcnlwdGVkTWVkaWFBUElFbmFibGVkID0gZW5hYmxlZDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25m
aWd1cmF0aW9uUHJpdmF0ZS5oCShyZXZpc2lvbiAyMzcwMjApCisrKyBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvblByaXZhdGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNzUsNiArNzUsNyBAQCB0eXBlZGVmIE5TX0VOVU0oTlNVSW50ZWdlciwgX1dL
RHJhZ0xpZnRECiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRJbmNvbXBsZXRlSW1h
Z2VCb3JkZXJFbmFibGVkOikgQk9PTCBfaW5jb21wbGV0ZUltYWdlQm9yZGVyRW5hYmxlZCBXS19B
UElfQVZBSUxBQkxFKG1hY29zeCgxMC4xNCksIGlvcygxMi4wKSk7CiBAcHJvcGVydHkgKG5vbmF0
b21pYywgc2V0dGVyPV9zZXREcmF3c0JhY2tncm91bmQ6KSBCT09MIF9kcmF3c0JhY2tncm91bmQg
V0tfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTQpLCBpb3MoMTIuMCkpOwogQHByb3BlcnR5IChu
b25hdG9taWMsIHNldHRlcj1fc2V0U2hvdWxkRGVmZXJBc3luY2hyb25vdXNTY3JpcHRzVW50aWxB
ZnRlckRvY3VtZW50TG9hZDopIEJPT0wgX3Nob3VsZERlZmVyQXN5bmNocm9ub3VzU2NyaXB0c1Vu
dGlsQWZ0ZXJEb2N1bWVudExvYWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTQpLCBpb3Mo
MTIuMCkpOworQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0SW1hZ2VGb3JtYXRXaGl0
ZWxpc3Q6KSBOU1N0cmluZyAqX2ltYWdlRm9ybWF0V2hpdGVsaXN0IFdLX0FQSV9BVkFJTEFCTEUo
bWFjb3N4KDEwLjE0KSwgaW9zKDEyLjApKTsKIAogI2lmIFRBUkdFVF9PU19JUEhPTkUKIEBwcm9w
ZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldEFsd2F5c1J1bnNBdEZvcmVncm91bmRQcmlvcml0
eTopIEJPT0wgX2Fsd2F5c1J1bnNBdEZvcmVncm91bmRQcmlvcml0eSBXS19BUElfQVZBSUxBQkxF
KGlvcyg5XzApKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50
SW1wbE1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFn
ZUNsaWVudEltcGxNYWMubW0JKHJldmlzaW9uIDIzNzAyMCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtNzUsNiAr
NzUsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9UZXh0SW5kaWNhdG9yLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL1RleHRJbmRpY2F0b3JXaW5kb3cuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGV4dFVuZG9JbnNl
cnRpb25NYXJrdXBNYWMuaD4KKyNpbXBvcnQgPFdlYkNvcmUvVVRJUmVnaXN0cnkuaD4KICNpbXBv
cnQgPFdlYkNvcmUvVmFsaWRhdGlvbkJ1YmJsZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3Jl
Q0FMYXllckV4dHJhcy5oPgogI2ltcG9ydCA8d3RmL1Byb2Nlc3NQcml2aWxlZ2UuaD4KQEAgLTM4
MSw3ICszODIsNyBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpzdGFydERyYWcoY29uc3QgV2ViCiB2
b2lkIFBhZ2VDbGllbnRJbXBsOjpzZXRQcm9taXNlZERhdGFGb3JJbWFnZShjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGltYWdlQnVmZmVyLCBjb25zdCBT
dHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGV4dGVuc2lvbiwgY29uc3QgU3RyaW5nJiB0
aXRsZSwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgdmlzaWJsZVVSTCwgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4mJiBhcmNoaXZlQnVmZmVyKQogewogICAgIFJlZlB0cjxJbWFnZT4gaW1h
Z2UgPSBCaXRtYXBJbWFnZTo6Y3JlYXRlKCk7Ci0gICAgaW1hZ2UtPnNldERhdGEoV1RGTW92ZShp
bWFnZUJ1ZmZlciksIHRydWUpOworICAgIGltYWdlLT5zZXREYXRhKFdURk1vdmUoaW1hZ2VCdWZm
ZXIpLCB0cnVlLCBkZWZhdWx0SW1hZ2VGb3JtYXRXaGl0ZWxpc3QoKSk7CiAgICAgbV9pbXBsLT5z
ZXRQcm9taXNlZERhdGFGb3JJbWFnZShpbWFnZS5nZXQoKSwgZmlsZW5hbWUsIGV4dGVuc2lvbiwg
dGl0bGUsIHVybCwgdmlzaWJsZVVSTCwgYXJjaGl2ZUJ1ZmZlci5nZXQoKSwgcGFzdGVib2FyZE5h
bWUpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzcw
MjApCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxMyBAQAorMjAxOC0xMC0xMCAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhh
bGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBhbiBTUEkgZm9yIFdlYlZpZXcgY2xpZW50
cyB0byBjb250cm9sIHRoZSBXZWJLaXQgaW1hZ2UgZm9ybWF0IHdoaXRlbGlzdAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwNDU0CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5tbToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpm
aW5pc2hlZExvYWRpbmdJY29uKToKKwogMjAxOC0xMC0xMCAgWXVzdWtlIFN1enVraSAgPHl1c3Vr
ZXN1enVraUBzbG93c3RhcnQub3JnPgogCiAgICAgICAgIFtKU0NdIFJlbmFtZSBjcmVhdGVYWFgg
dG8gdHJ5Q3JlYXRlWFhYIGlmIGl0IGNhbiByZXR1cm4gUmVmUHRyCkluZGV4OiBTb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5tbQkocmV2aXNpb24gMjM3MDIwKQorKysgU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTExOCw2ICsxMTgsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9TY3JpcHRDb250cm9sbGVy
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9T
dWJyZXNvdXJjZUxvYWRlci5oPgorI2ltcG9ydCA8V2ViQ29yZS9VVElSZWdpc3RyeS5oPgogI2lt
cG9ydCA8V2ViQ29yZS9XZWJDb3JlT2JqQ0V4dHJhcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJH
TEJsYWNrbGlzdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+
CkBAIC0yMzcxLDcgKzIzNzIsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpmaW5pc2hl
ZExvYWRpCiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8gaW1hZ2UgPSBCaXRtYXBJbWFnZTo6
Y3JlYXRlKCk7Ci0gICAgaWYgKGltYWdlLT5zZXREYXRhKGljb25EYXRhLCB0cnVlKSA8IEVuY29k
ZWREYXRhU3RhdHVzOjpTaXplQXZhaWxhYmxlKQorICAgIGlmIChpbWFnZS0+c2V0RGF0YShpY29u
RGF0YSwgdHJ1ZSwgZGVmYXVsdEltYWdlRm9ybWF0V2hpdGVsaXN0KCkpIDwgRW5jb2RlZERhdGFT
dGF0dXM6OlNpemVBdmFpbGFibGUpCiAgICAgICAgIHJldHVybjsKIAogICAgIE5TSW1hZ2UgKmlj
b24gPSB3ZWJHZXROU0ltYWdlKGltYWdlLnB0cigpLCBOU01ha2VTaXplKDE2LCAxNikpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>352252</attachid>
            <date>2018-10-12 22:17:25 -0700</date>
            <delta_ts>2018-10-14 15:38:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190454-20181012221724.patch</filename>
            <type>text/plain</type>
            <size>24725</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3MDY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjlkY2FiMDkxMzA1OTE1
MDVmYjg5OTEyZmY4ZDE2YTZjMDg5NzZjOS4uMjljNzAxZTBmZDQ5YmYxNTdlZDY5Nzg2ZjcxZGRh
YTUzNmY3NGQzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDE4LTEwLTEyICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGFu
IFNQSSB0byBhbGxvdyBXZWJWaWV3IGNsaWVudHMgdG8gYWRkIGFkZGl0aW9uYWwgc3VwcG9ydGVk
IGltYWdlIGZvcm1hdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE5MDQ1NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFkZCBhbiBTUEkgdG8gYWxsb3cgYWRkaXRpb25hbCBzdXBwb3J0ZWQgaW1hZ2UgZm9y
bWF0cyBpbiBXZWJWaWV3LiBUaGVzZQorICAgICAgICBhZGRpdGlvbmFsIGZvcm1hdHMgY2FuIGJl
IHNldCBpbiB0aGUgV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhcyBvbmUgc3RyaW5nIAorICAgICAg
ICB3aGljaCBjb250YWlucyBhbGwgdGhlIFVUSSBvZiB0aGVzZSBmb3JtYXRzLgorCisgICAgICAg
ICogcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjppbml0
aWFsaXplU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NnL1VUSVJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRlZmF1bHRBbGxvd2Vk
SW1hZ2VVVElzKTogVGhpcyBpcyB0aGUgV2ViS2l0IGRlZmF1bHQgbGlzdCBvZgorICAgICAgICBz
dXBwb3J0ZWQgaW1hZ2UgZm9ybWF0cy4KKyAgICAgICAgKFdlYkNvcmU6OmFkZGl0aW9uYWxBbGxv
d2VkSW1hZ2VVVElzKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEFkZGl0aW9uYWxBbGxvd2VkSW1h
Z2VVVElzKToKKyAgICAgICAgKFdlYkNvcmU6OmlzQWxsb3dlZEltYWdlVVRJKTogVGhpcyBmdW5j
dGlvbiBjaGVja3MgdGhlIGRlZmF1bHQgbGlzdCBhbmQKKyAgICAgICAgdGhlIGFkZGl0aW9uYWwg
bGlzdCB0byBkZWNpZGUgd2hldGhlciB0aGUgaW1hZ2UgZm9ybWF0IGlzIHN1cHBvcnRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OmFsbG93ZWRJbWFnZVVUSXMpOiBEZWxldGVkLgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2NnL1VUSVJlZ2lzdHJ5Lmg6CisKIDIwMTgtMTAtMTEgIERvbiBPbG1z
dGVhZCAgPGRvbi5vbG1zdGVhZEBzb255LmNvbT4KIAogICAgICAgICBBZGQgSG91ZGluaSBzcGVj
cyB0byBmZWF0dXJlcy5qc29uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDU2NjEyMTRiZTMwMDUyMmM4NmRlZDhiNTFk
YWFjZTI4NzZmYTNjNWQuLjUyYjk3ZTY2OTZlMmIwNzZlMjk1MmYzMjFjNDMzNDk1NWFlMjZkMDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTgtMTAtMTIgIFNhaWQgQWJvdS1IYWxsYXdh
ICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgYW4gU1BJIHRvIGFsbG93
IFdlYlZpZXcgY2xpZW50cyB0byBhZGQgYWRkaXRpb25hbCBzdXBwb3J0ZWQgaW1hZ2UgZm9ybWF0
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwNDU0
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTaGFy
ZWQvV2ViUHJlZmVyZW5jZXMueWFtbDogQWRkIHRoZSBrZXkgQWRkaXRpb25hbEFsbG93ZWRJbWFn
ZVVUSXMgd2l0aAorICAgICAgICB0eXBlIG9mIFN0cmluZyB0byB0aGUgV2ViUHJlZmVyZW5jZXMu
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgt
W1dLV2ViVmlldyBfaW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uOl0pOiBTZXQgdGhlIHZhbHVl
IG9mIEFkZGl0aW9uYWxBbGxvd2VkSW1hZ2VVVElzCisgICAgICAgIGZyb20gV0tXZWJWaWV3Q29u
ZmlndXJhdGlvbiB0byB0aGUgV2ViUHJlZmVyZW5jZXMuCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1tOgorICAgICAgICAoLVtXS1dlYlZpZXdD
b25maWd1cmF0aW9uIGNvcHlXaXRoWm9uZTpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3Q29uZmln
dXJhdGlvbiBfYWRkaXRpb25hbEFsbG93ZWRJbWFnZVVUSXNdKTogQWRkIGEgZ2V0dGVyLgorICAg
ICAgICAoLVtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF9zZXRBZGRpdGlvbmFsQWxsb3dlZEltYWdl
VVRJczpdKTogQWRkIGEgc2V0dGVyLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3Q29uZmlndXJhdGlvblByaXZhdGUuaDogRGVmaW5lIGEgcHJpdmF0ZSBwcm9wZXJ0eS4K
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6OnVwZGF0ZVByZWZlcmVuY2VzKTogQ29weSB0aGUgdmFsdWUgb2YgQWRkaXRp
b25hbEFsbG93ZWRJbWFnZVVUSXMKKyAgICAgICAgZnJvbSBXZWJQcmVmZXJlbmNlcyB0byB0aGUg
V2ViQ29yZSBmdW5jdGlvbiBzZXRBZGRpdGlvbmFsQWxsb3dlZEltYWdlVVRJcygpLgorCiAyMDE4
LTEwLTExICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBJT1Mg
MTIgLSBTZXJ2aWNlIHdvcmtlciBjYWNoZSBub3Qgc2hhcmVkIHdoZW4gYWRkZWQgdG8gaG9tZXNj
cmVlbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3Ry
eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcAppbmRl
eCBmM2RkMTRmMDU1MDA4YTZjMzQyZTczYTJjZGNjN2YxMmM2MTMzMDg2Li42NzVjMjFiMjE1MDNm
NzVmMmM3MDUzN2YzZDY2MjYwNGIxNWQ2ZmU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcApAQCAtNzgsNyArNzgsNyBAQCBzdGF0aWMgdm9pZCBpbml0
aWFsaXplU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXMoKQogICAgIH0KIAogI2lmbmRlZiBOREVCVUcK
LSAgICBmb3IgKGF1dG8mIHV0aSA6IGFsbG93ZWRJbWFnZVVUSXMoKSkgeworICAgIGZvciAoYXV0
byYgdXRpIDogZGVmYXVsdEFsbG93ZWRJbWFnZVVUSXMoKSkgewogICAgICAgICBhdXRvIG1pbWVU
eXBlID0gTUlNRVR5cGVGb3JJbWFnZVNvdXJjZVR5cGUodXRpKTsKICAgICAgICAgaWYgKCFtaW1l
VHlwZS5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIEFTU0VSVChzdXBwb3J0ZWRJbWFnZU1JTUVU
eXBlcy0+Y29udGFpbnMobWltZVR5cGUpKTsKQEAgLTg4LDcgKzg4LDcgQEAgc3RhdGljIHZvaWQg
aW5pdGlhbGl6ZVN1cHBvcnRlZEltYWdlTUlNRVR5cGVzKCkKIAogI2lmIFBMQVRGT1JNKENPQ09B
KQogICAgIGZvciAoYXV0byYgbWltZSA6ICpzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlcykKLSAgICAg
ICAgQVNTRVJUX1VOVVNFRChtaW1lLCBhbGxvd2VkSW1hZ2VVVElzKCkuY29udGFpbnMoVVRJRnJv
bU1JTUVUeXBlKG1pbWUpKSk7CisgICAgICAgIEFTU0VSVF9VTlVTRUQobWltZSwgZGVmYXVsdEFs
bG93ZWRJbWFnZVVUSXMoKS5jb250YWlucyhVVElGcm9tTUlNRVR5cGUobWltZSkpKTsKICNlbmRp
ZgogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL1VUSVJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L1VUSVJlZ2lzdHJ5LmNwcAppbmRleCBkMzQyMjQzM2U1MjllZTEzNzhmYmNiNDgyMjAxNTJmNzQz
ZTg5YTU5Li4xMGJhNDZhNzgxM2E1ZmM4MmNmMGU4YWNmNzY2Yjc3ZmM2NTAwODdkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9VVElSZWdpc3RyeS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvVVRJUmVnaXN0cnkuY3Bw
CkBAIC0zOCwxMCArMzgsMTAgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1IYXNoU2V0PFN0
cmluZz4mIGFsbG93ZWRJbWFnZVVUSXMoKQorSGFzaFNldDxTdHJpbmc+JiBkZWZhdWx0QWxsb3dl
ZEltYWdlVVRJcygpCiB7CiAgICAgLy8gQ0cgYXQgbGVhc3Qgc3VwcG9ydHMgdGhlIGZvbGxvd2lu
ZyBzdGFuZGFyZCBpbWFnZSB0eXBlczoKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNl
dDxTdHJpbmc+PiBzX2FsbG93ZWRJbWFnZVVUSXMgPSBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8U3Ry
aW5nPiB7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hTZXQ8U3RyaW5nPj4gZGVmYXVs
dEFsbG93ZWRJbWFnZVVUSXMgPSBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8U3RyaW5nPiB7CiAgICAg
ICAgICJjb20uY29tcHVzZXJ2ZS5naWYiLAogICAgICAgICAiY29tLm1pY3Jvc29mdC5ibXAiLAog
ICAgICAgICAiY29tLm1pY3Jvc29mdC5jdXIiLApAQCAtNTksNyArNTksNyBAQCBIYXNoU2V0PFN0
cmluZz4mIGFsbG93ZWRJbWFnZVVUSXMoKQogICAgIGlmICghY2hlY2tlZCkgewogICAgICAgICBS
ZXRhaW5QdHI8Q0ZBcnJheVJlZj4gc3lzdGVtSW1hZ2VVVElzID0gYWRvcHRDRihDR0ltYWdlU291
cmNlQ29weVR5cGVJZGVudGlmaWVycygpKTsKICAgICAgICAgQ0ZJbmRleCBjb3VudCA9IENGQXJy
YXlHZXRDb3VudChzeXN0ZW1JbWFnZVVUSXMuZ2V0KCkpOwotICAgICAgICBmb3IgKGF1dG8mIGlt
YWdlVVRJIDogc19hbGxvd2VkSW1hZ2VVVElzLmdldCgpKSB7CisgICAgICAgIGZvciAoYXV0byYg
aW1hZ2VVVEkgOiBkZWZhdWx0QWxsb3dlZEltYWdlVVRJcy5nZXQoKSkgewogICAgICAgICAgICAg
UmV0YWluUHRyPENGU3RyaW5nUmVmPiBzdHJpbmcgPSBpbWFnZVVUSS5jcmVhdGVDRlN0cmluZygp
OwogICAgICAgICAgICAgQVNTRVJUKENGQXJyYXlDb250YWluc1ZhbHVlKHN5c3RlbUltYWdlVVRJ
cy5nZXQoKSwgQ0ZSYW5nZU1ha2UoMCwgY291bnQpLCBzdHJpbmcuZ2V0KCkpKTsKICAgICAgICAg
fQpAQCAtNjcsMTIgKzY3LDIzIEBAIEhhc2hTZXQ8U3RyaW5nPiYgYWxsb3dlZEltYWdlVVRJcygp
CiAgICAgfQogI2VuZGlmCiAKLSAgICByZXR1cm4gc19hbGxvd2VkSW1hZ2VVVElzLmdldCgpOwor
ICAgIHJldHVybiBkZWZhdWx0QWxsb3dlZEltYWdlVVRJczsKK30KKworc3RhdGljIFN0cmluZyYg
YWRkaXRpb25hbEFsbG93ZWRJbWFnZVVUSXMoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxTdHJpbmc+IGFkZGl0aW9uYWxBbGxvd2VkSW1hZ2VVVElzOworICAgIHJldHVybiBhZGRpdGlv
bmFsQWxsb3dlZEltYWdlVVRJczsKK30KKwordm9pZCBzZXRBZGRpdGlvbmFsQWxsb3dlZEltYWdl
VVRJcyhjb25zdCBTdHJpbmcmIHZhbHVlKQoreworICAgIGFkZGl0aW9uYWxBbGxvd2VkSW1hZ2VV
VElzKCkgPSB2YWx1ZTsKIH0KIAogYm9vbCBpc0FsbG93ZWRJbWFnZVVUSShjb25zdCBTdHJpbmcm
IGltYWdlVVRJKQogewotICAgIHJldHVybiAhaW1hZ2VVVEkuaXNFbXB0eSgpICYmIGFsbG93ZWRJ
bWFnZVVUSXMoKS5jb250YWlucyhpbWFnZVVUSSk7CisgICAgcmV0dXJuICFpbWFnZVVUSS5pc0Vt
cHR5KCkgJiYgKGRlZmF1bHRBbGxvd2VkSW1hZ2VVVElzKCkuY29udGFpbnMoaW1hZ2VVVEkpIHx8
IGFkZGl0aW9uYWxBbGxvd2VkSW1hZ2VVVElzKCkuY29udGFpbnMoaW1hZ2VVVEkpKTsKIH0KIAog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvVVRJUmVn
aXN0cnkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1VUSVJlZ2lzdHJ5
LmgKaW5kZXggMjJmMjZhZGI1MGM5ZmU4NjNlMDI3MmViZmZiMTM1M2ZjZjM1NGM0NS4uZjJmNjE5
MTNhYWVkMzRmOTRhYWI5ZDA0ZDhjOWVmNTk5MzE3NjNiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvVVRJUmVnaXN0cnkuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9VVElSZWdpc3RyeS5oCkBAIC0zMCw3ICszMCw4IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotSGFzaFNldDxTdHJpbmc+JiBhbGxvd2VkSW1hZ2VV
VElzKCk7CitIYXNoU2V0PFN0cmluZz4mIGRlZmF1bHRBbGxvd2VkSW1hZ2VVVElzKCk7CiBib29s
IGlzQWxsb3dlZEltYWdlVVRJKGNvbnN0IFN0cmluZyYpOworV0VCQ09SRV9FWFBPUlQgdm9pZCBz
ZXRBZGRpdGlvbmFsQWxsb3dlZEltYWdlVVRJcyhjb25zdCBTdHJpbmcmKTsKIAogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXMueWFtbCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzLnlhbWwKaW5kZXggNzU2NDk4YjMxYjRjNGE2YzA5
NTMwZjdkNmY3NTdlZjFmMTBkZTUzOS4uNjE0Yjg4OTM3OTFkNTlkNzI3OWI1MDYxMWQ0MmZjMGZm
NmE5YzBlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXMu
eWFtbAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlcy55YW1sCkBAIC02
NTYsNiArNjU2LDExIEBAIEFuaW1hdGVkSW1hZ2VBc3luY0RlY29kaW5nRW5hYmxlZDoKICAgdHlw
ZTogYm9vbAogICBkZWZhdWx0VmFsdWU6IHRydWUKIAorQWRkaXRpb25hbEFsbG93ZWRJbWFnZVVU
SXM6CisgICAgdHlwZTogU3RyaW5nCisgICAgZGVmYXVsdFZhbHVlOiAnIiInCisgICAgd2ViY29y
ZUJpbmRpbmc6IG5vbmUKKwogQ3VzdG9tRWxlbWVudHNFbmFibGVkOgogICB0eXBlOiBib29sCiAg
IGRlZmF1bHRWYWx1ZTogdHJ1ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXcubW0KaW5kZXggZTY1MzJkNDc5MTk0YjlkYjRmMWIxNjQwOWZiM2NjMTUxOTNi
NzgwZS4uNWMwMmI4ZGU1YmEzOGE3ODBkZTg2ODFkYWJkZjhiNjcyNTNiMjNiZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBAIC01NzEsNiAr
NTcxLDcgQEAgc3RhdGljIHZvaWQgdmFsaWRhdGUoV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqY29u
ZmlndXJhdGlvbikKICAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZVZhbHVlcygpLnNl
dChXZWJLaXQ6OldlYlByZWZlcmVuY2VzS2V5OjpzdXBwcmVzc2VzSW5jcmVtZW50YWxSZW5kZXJp
bmdLZXkoKSwgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1ZSghIVtfY29uZmlndXJh
dGlvbiBzdXBwcmVzc2VzSW5jcmVtZW50YWxSZW5kZXJpbmddKSk7CiAKICAgICBwYWdlQ29uZmln
dXJhdGlvbi0+cHJlZmVyZW5jZVZhbHVlcygpLnNldChXZWJLaXQ6OldlYlByZWZlcmVuY2VzS2V5
OjpzaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbktleSgpLCBXZWJLaXQ6OldlYlByZWZlcmVu
Y2VzU3RvcmU6OlZhbHVlKCEhW19jb25maWd1cmF0aW9uIF9yZXNwZWN0c0ltYWdlT3JpZW50YXRp
b25dKSk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VWYWx1ZXMoKS5zZXQoV2Vi
S2l0OjpXZWJQcmVmZXJlbmNlc0tleTo6YWRkaXRpb25hbEFsbG93ZWRJbWFnZVVUSXNLZXkoKSwg
V2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1ZShTdHJpbmcoW19jb25maWd1cmF0aW9u
IF9hZGRpdGlvbmFsQWxsb3dlZEltYWdlVVRJc10pKSk7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24t
PnByZWZlcmVuY2VWYWx1ZXMoKS5zZXQoV2ViS2l0OjpXZWJQcmVmZXJlbmNlc0tleTo6c2hvdWxk
UHJpbnRCYWNrZ3JvdW5kc0tleSgpLCBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmU6OlZhbHVl
KCEhW19jb25maWd1cmF0aW9uIF9wcmludHNCYWNrZ3JvdW5kc10pKTsKICAgICBwYWdlQ29uZmln
dXJhdGlvbi0+cHJlZmVyZW5jZVZhbHVlcygpLnNldChXZWJLaXQ6OldlYlByZWZlcmVuY2VzS2V5
OjppbmNyZW1lbnRhbFJlbmRlcmluZ1N1cHByZXNzaW9uVGltZW91dEtleSgpLCBXZWJLaXQ6Oldl
YlByZWZlcmVuY2VzU3RvcmU6OlZhbHVlKFtfY29uZmlndXJhdGlvbiBfaW5jcmVtZW50YWxSZW5k
ZXJpbmdTdXBwcmVzc2lvblRpbWVvdXRdKSk7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnByZWZl
cmVuY2VWYWx1ZXMoKS5zZXQoV2ViS2l0OjpXZWJQcmVmZXJlbmNlc0tleTo6amF2YVNjcmlwdE1h
cmt1cEVuYWJsZWRLZXkoKSwgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1ZSghIVtf
Y29uZmlndXJhdGlvbiBfYWxsb3dzSmF2YVNjcmlwdE1hcmt1cF0pKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRp
b24ubW0KaW5kZXggNDNhNTEzNDI1YmZjOWQ3NzNjOGJhYTkxOGM1YmY2MmRiZDk0MTE2MS4uNTg3
ZTgzYzMxYjYwOTU3NmUyNDc3MzIzMzI5YjcwN2NmMTZlZmY5NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRp
b24ubW0KQEAgLTE2MSw2ICsxNjEsNyBAQCBzdGF0aWMgX1dLRHJhZ0xpZnREZWxheSB0b0RyYWdM
aWZ0RGVsYXkoTlNVSW50ZWdlciB2YWx1ZSkKICAgICBCT09MIF9kcmF3c0JhY2tncm91bmQ7CiAK
ICAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IF9tZWRpYUNvbnRlbnRUeXBlc1JlcXVpcmluZ0hhcmR3
YXJlU3VwcG9ydDsKKyAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IF9hZGRpdGlvbmFsQWxsb3dlZElt
YWdlVVRJczsKIH0KIAogLSAoaW5zdGFuY2V0eXBlKWluaXQKQEAgLTM5NCw2ICszOTUsNyBAQCBz
dGF0aWMgX1dLRHJhZ0xpZnREZWxheSB0b0RyYWdMaWZ0RGVsYXkoTlNVSW50ZWdlciB2YWx1ZSkK
ICAgICBjb25maWd1cmF0aW9uLT5fbmVlZHNTdG9yYWdlQWNjZXNzRnJvbUZpbGVVUkxzUXVpcmsg
PSBzZWxmLT5fbmVlZHNTdG9yYWdlQWNjZXNzRnJvbUZpbGVVUkxzUXVpcms7CiAKICAgICBjb25m
aWd1cmF0aW9uLT5fbWVkaWFDb250ZW50VHlwZXNSZXF1aXJpbmdIYXJkd2FyZVN1cHBvcnQgPSBh
ZG9wdE5TKFtzZWxmLl9tZWRpYUNvbnRlbnRUeXBlc1JlcXVpcmluZ0hhcmR3YXJlU3VwcG9ydCBj
b3B5V2l0aFpvbmU6em9uZV0pOworICAgIGNvbmZpZ3VyYXRpb24tPl9hZGRpdGlvbmFsQWxsb3dl
ZEltYWdlVVRJcyA9IGFkb3B0TlMoW3NlbGYtPl9hZGRpdGlvbmFsQWxsb3dlZEltYWdlVVRJcyBj
b3B5V2l0aFpvbmU6em9uZV0pOwogICAgIGNvbmZpZ3VyYXRpb24tPl9sZWdhY3lFbmNyeXB0ZWRN
ZWRpYUFQSUVuYWJsZWQgPSBzZWxmLT5fbGVnYWN5RW5jcnlwdGVkTWVkaWFBUElFbmFibGVkOwog
ICAgIGNvbmZpZ3VyYXRpb24tPl9hbGxvd01lZGlhQ29udGVudFR5cGVzUmVxdWlyaW5nSGFyZHdh
cmVTdXBwb3J0QXNGYWxsYmFjayA9IHNlbGYtPl9hbGxvd01lZGlhQ29udGVudFR5cGVzUmVxdWly
aW5nSGFyZHdhcmVTdXBwb3J0QXNGYWxsYmFjazsKIApAQCAtOTkwLDYgKzk5MiwxNiBAQCBBTExP
V19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICBfbWVkaWFDb250ZW50VHlwZXNSZXF1
aXJpbmdIYXJkd2FyZVN1cHBvcnQgPSBhZG9wdE5TKFttZWRpYUNvbnRlbnRUeXBlc1JlcXVpcmlu
Z0hhcmR3YXJlU3VwcG9ydCBjb3B5XSk7CiB9CiAKKy0gKE5TU3RyaW5nICopX2FkZGl0aW9uYWxB
bGxvd2VkSW1hZ2VVVElzCit7CisgICAgcmV0dXJuIF9hZGRpdGlvbmFsQWxsb3dlZEltYWdlVVRJ
cy5nZXQoKTsKK30KKworLSAodm9pZClfc2V0QWRkaXRpb25hbEFsbG93ZWRJbWFnZVVUSXM6KE5T
U3RyaW5nICopYWRkaXRpb25hbEFsbG93ZWRJbWFnZVVUSXMKK3sKKyAgICBfYWRkaXRpb25hbEFs
bG93ZWRJbWFnZVVUSXMgPSBhZG9wdE5TKFthZGRpdGlvbmFsQWxsb3dlZEltYWdlVVRJcyBjb3B5
XSk7Cit9CisKIC0gKHZvaWQpX3NldExlZ2FjeUVuY3J5cHRlZE1lZGlhQVBJRW5hYmxlZDooQk9P
TCllbmFibGVkCiB7CiAgICAgX2xlZ2FjeUVuY3J5cHRlZE1lZGlhQVBJRW5hYmxlZCA9IGVuYWJs
ZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3Q29uZmlndXJhdGlvblByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oCmluZGV4IGYxMDVhMWFhMmMzYzNh
OWRhMTc2MTdmYWY3MWQ4YzU2MDNmN2Q4ODEuLjg2MWM2NjU2YTAzOTdjMDE0MGIxN2JjYWFhNTFk
NWYwZjRlNDM0NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oCkBAIC0xMDEs
NiArMTAxLDcgQEAgdHlwZWRlZiBOU19FTlVNKE5TVUludGVnZXIsIF9XS0RyYWdMaWZ0RGVsYXkp
IHsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldE1lZGlhQ29udGVudFR5cGVzUmVx
dWlyaW5nSGFyZHdhcmVTdXBwb3J0OikgTlNTdHJpbmcgKl9tZWRpYUNvbnRlbnRUeXBlc1JlcXVp
cmluZ0hhcmR3YXJlU3VwcG9ydCBXS19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMyksIGlvcygx
MS4wKSk7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRMZWdhY3lFbmNyeXB0ZWRN
ZWRpYUFQSUVuYWJsZWQ6KSBCT09MIF9sZWdhY3lFbmNyeXB0ZWRNZWRpYUFQSUVuYWJsZWQgV0tf
QVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTMpLCBpb3MoMTEuMCkpOwogQHByb3BlcnR5IChub25h
dG9taWMsIHNldHRlcj1fc2V0QWxsb3dNZWRpYUNvbnRlbnRUeXBlc1JlcXVpcmluZ0hhcmR3YXJl
U3VwcG9ydEFzRmFsbGJhY2s6KSBCT09MIF9hbGxvd01lZGlhQ29udGVudFR5cGVzUmVxdWlyaW5n
SGFyZHdhcmVTdXBwb3J0QXNGYWxsYmFjayBXS19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMyks
IGlvcygxMS4wKSk7CitAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRBZGRpdGlvbmFs
QWxsb3dlZEltYWdlVVRJczopIE5TU3RyaW5nICpfYWRkaXRpb25hbEFsbG93ZWRJbWFnZVVUSXM7
CiAKIEBlbmQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cAppbmRleCBhNGU0NmNiNjIwZTI4MWRlMGJkYTgwNGRkMjQ2Yjg5Y2NmMDE4MGZlLi43NjRjZGY2
OTcxMmMwMTA5ODVlNWQwMGFlMmY4MTFjYTM5YTA0NDI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMjExLDYgKzIxMSw3IEBACiAjaW5jbHVk
ZSA8V2ViQ29yZS9TdWJmcmFtZUxvYWRlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU3Vic3RpdHV0
ZURhdGEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RleHRJdGVyYXRvci5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvVVRJUmVnaXN0cnkuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1VzZXJHZXN0dXJlSW5kaWNh
dG9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Vc2VySW5wdXRCcmlkZ2UuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1VzZXJTY3JpcHQuaD4KQEAgLTMyNTIsNiArMzI1Myw4IEBAIHZvaWQgV2ViUGFnZTo6
dXBkYXRlUHJlZmVyZW5jZXMoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUpCiAjZW5k
aWYKIAogICAgIHNldHRpbmdzLnNldExheW91dFZpZXdwb3J0SGVpZ2h0RXhwYW5zaW9uRmFjdG9y
KHN0b3JlLmdldERvdWJsZVZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5OjpsYXlvdXRWaWV3
cG9ydEhlaWdodEV4cGFuc2lvbkZhY3RvcktleSgpKSk7CisgICAgCisgICAgV2ViQ29yZTo6c2V0
QWRkaXRpb25hbEFsbG93ZWRJbWFnZVVUSXMoc3RvcmUuZ2V0U3RyaW5nVmFsdWVGb3JLZXkoV2Vi
UHJlZmVyZW5jZXNLZXk6OmFkZGl0aW9uYWxBbGxvd2VkSW1hZ2VVVElzS2V5KCkpKTsKIAogICAg
IGlmIChtX2RyYXdpbmdBcmVhKQogICAgICAgICBtX2RyYXdpbmdBcmVhLT51cGRhdGVQcmVmZXJl
bmNlcyhzdG9yZSk7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VM
b2cKaW5kZXggYzM5MzU0NmI4MDVmNWExZTJkMjNhOWRkZDE1MzIzNDEzZjMzM2ZjOC4uZGM4NTJi
M2I0MDg1ZWFhNGU0ZmNjY2U5ZmUyZWJiNGJkZGYyYzUyNSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hh
bmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDE4LTEwLTEy
ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAg
QWRkIGFuIFNQSSB0byBhbGxvdyBXZWJWaWV3IGNsaWVudHMgdG8gYWRkIGFkZGl0aW9uYWwgc3Vw
cG9ydGVkIGltYWdlIGZvcm1hdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE5MDQ1NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFRlc3Qgb3BlbmluZyBhIFRHQSBpbWFnZSBpbiBXZWJWaWV3IHdoaWNoIGlz
IG5vdCBhbGxvd2VkIGJ5IGRlZmF1bHQuIFRoZQorICAgICAgICBUR0EgZm9ybWF0IHdpbGwgYmUg
YWxsb3dlZCB0aHJvdWdoIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24uCisKKyAgICAgICAgVGhlIFRH
QSBpbWFnZSBleHRlbnNpb24gd2FzIGNoYW5nZWQgdG8gUE5HIGJlY2F1c2UgV2ViS2l0IHdvbid0
IGFjY2VwY3QKKyAgICAgICAgYSBmaWxlIHdpdGggVEdBIGV4dGVuc2lvbiBhcyBhbiBJbWFnZURv
Y3VtZW50LgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9BZGRpdGlvbmFsQWxsb3dlZEltYWdlVVRJcy5tbTogQWRkZWQuCisgICAgICAgIChURVNU
KToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL3RnYS1pbWFnZS5w
bmc6IEFkZGVkLgorCiAyMDE4LTEwLTExICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNv
bT4KIAogICAgICAgICBJT1MgMTIgLSBTZXJ2aWNlIHdvcmtlciBjYWNoZSBub3Qgc2hhcmVkIHdo
ZW4gYWRkZWQgdG8gaG9tZXNjcmVlbgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBhNDQyMzJm
NTU0MzgwNjU0YWU2ZWM3MDU5MDkwNjlhZTQyNjU0ZTVjLi5hYWQ2ZTZlZjEzYzkyZDFmYmY2ZTMw
ODU3OGExNzYwNDc4OWU4MmZhIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RX
ZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjQwLDYgKzI0
MCw4IEBACiAJCTUzNjc3MDM2MUNDODFCNjEwMEQ0MjVCMSAvKiBXZWJTY3JpcHRPYmplY3REZXNj
cmlwdGlvbi5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUzNjc3MDM1MUNDODEyRjkwMEQ0MjVCMSAvKiBXZWJTY3JpcHRPYmplY3REZXNj
cmlwdGlvbi5odG1sICovOyB9OwogCQk1M0VDMjU0MTFFOTZGRDg3MDAwODMxQjkgLyogUHJpb3Jp
dHlRdWV1ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1M0VDMjUzRjFFOTZCQzgwMDAwODMxQjkgLyogUHJpb3JpdHlRdWV1ZS5jcHAgKi87IH07CiAJ
CTU1MjI2QTJGMUVCQTQ0QjkwMEMzNkFEMCAvKiBsYXJnZS1yZWQtc3F1YXJlLWltYWdlLmh0bWwg
aW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTUy
MjZBMkUxRUI5NjlCNjAwQzM2QUQwIC8qIGxhcmdlLXJlZC1zcXVhcmUtaW1hZ2UuaHRtbCAqLzsg
fTsKKwkJNTU1ODQ4MUMyMTcxMzE1NzAwRkI3RkZGIC8qIEFkZGl0aW9uYWxBbGxvd2VkSW1hZ2VV
VElzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTU1
ODQ4MUIyMTcxMzE1NjAwRkI3RkZGIC8qIEFkZGl0aW9uYWxBbGxvd2VkSW1hZ2VVVElzLm1tICov
OyB9OworCQk1NTU4NDgyNTIxNzE4Q0RBMDBGQjdGRkYgLyogdGdhLWltYWdlLnBuZyBpbiBDb3B5
IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NTU4NDgyMTIx
NzE1QTdFMDBGQjdGRkYgLyogdGdhLWltYWdlLnBuZyAqLzsgfTsKIAkJNTU5N0Y4MzYxRDk1OTZD
ODAwNjZCQzIxIC8qIFN5bmNocm9uaXplZEZpeGVkUXVldWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTU5N0Y4MzQxRDk1OTZDODAwNjZCQzIxIC8q
IFN5bmNocm9uaXplZEZpeGVkUXVldWUuY3BwICovOyB9OwogCQk1NzE0RUNCOTFDQThCNUIwMDAw
NTFBQzggLyogRG93bmxvYWRSZXF1ZXN0T3JpZ2luYWxVUkwuaHRtbCBpbiBDb3B5IFJlc291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzE0RUNCODFDQThCNTg4MDAw
NTFBQzggLyogRG93bmxvYWRSZXF1ZXN0T3JpZ2luYWxVUkwuaHRtbCAqLzsgfTsKIAkJNTcxNEVD
QkIxQ0E4QkZFNDAwMDUxQUM4IC8qIERvd25sb2FkUmVxdWVzdE9yaWdpbmFsVVJMRnJhbWUuaHRt
bCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
NzE0RUNCQTFDQThCRkQxMDAwNTFBQzggLyogRG93bmxvYWRSZXF1ZXN0T3JpZ2luYWxVUkxGcmFt
ZS5odG1sICovOyB9OwpAQCAtMTE5OCw2ICsxMjAwLDcgQEAKIAkJCQlGNENENzRDNjIwRkRBQ0ZB
MDBERTM3OTQgLyogdGV4dC13aXRoLWFzeW5jLXNjcmlwdC5odG1sIGluIENvcHkgUmVzb3VyY2Vz
ICovLAogCQkJCUY0NEM3QTA1MjBGQUFFM0MwMDE0NDc4QyAvKiB0ZXh0LXdpdGgtZGVmZXJyZWQt
c2NyaXB0Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJRjQxQUI5QUExRUY0Njk2QjAw
ODNGQTA4IC8qIHRleHRhcmVhLXRvLWlucHV0Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCisJ
CQkJNTU1ODQ4MjUyMTcxOENEQTAwRkI3RkZGIC8qIHRnYS1pbWFnZS5wbmcgaW4gQ29weSBSZXNv
dXJjZXMgKi8sCiAJCQkJRjQ0NTFDNzYxRUI4RkQ4OTAwMjBDNURBIC8qIHR3by1wYXJhZ3JhcGgt
Y29udGVudGVkaXRhYmxlLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJQzU0MEY3ODQx
NTJFNUE5QTAwQTQwQzhDIC8qIHZlcmJvc2VNYXJrdXAuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAq
LywKIAkJCQlDRDU3Nzc5RDIxMUNFOTFGMDAxQjM3MUUgLyogdmlkZW8td2l0aC1hdWRpby1hbmQt
d2ViLWF1ZGlvLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCkBAIC0xNDM0LDcgKzE0MzcsNiBA
QAogCQkzN0UxMDY0QjE2OTc2N0Y3MDBCNzhCRDAgLyogRE9NSFRNTFRhYmxlQ2VsbEVsZW1lbnRD
ZWxsQWJvdmUuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9IERPTUhUTUxUYWJsZUNl
bGxFbGVtZW50Q2VsbEFib3ZlLmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3
RTM4QzMzMTY5QjdEMDEwMDg0QzI4QyAvKiBXZWJWaWV3RGlkUmVtb3ZlRnJhbWVGcm9tSGllcmFy
Y2h5Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViVmlld0Rp
ZFJlbW92ZUZyYW1lRnJvbUhpZXJhcmNoeS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMzdFN0RENjMxRUEwNkZGMjAwOUIzOTZEIC8qIEFkZGl0aW9uYWxSZWFkQWNjZXNzQWxsb3dl
ZFVSTHMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBZGRpdGlv
bmFsUmVhZEFjY2Vzc0FsbG93ZWRVUkxzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQkzN0U3REQ2NTFFQTA3MTVCMDA5QjM5NkQgLyogQWRkaXRpb25hbFJlYWRBY2Nlc3NBbGxvd2Vk
VVJMc1Byb3RvY29sLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFkZGl0aW9u
YWxSZWFkQWNjZXNzQWxsb3dlZFVSTHNQcm90b2NvbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkzN0U3REQ2NjFFQTA3MUYzMDA5QjM5NkQgLyogQWRkaXRpb25hbFJlYWRBY2Nlc3NB
bGxvd2VkVVJMc1BsdWdpbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IEFkZGl0aW9uYWxSZWFkQWNjZXNzQWxsb3dlZFVSTHNQbHVnaW4ubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTM3RkI3Mjk1MURCMkU4MkYwMEU0MUJFNCAvKiBDb250ZXh0TWVu
dURlZmF1bHRJdGVtc0hhdmVUYWdzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gQ29udGV4dE1lbnVEZWZhdWx0SXRlbXNIYXZlVGFncy5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJM0YxQjUyNjgxRDNENzEyOTAwOEQ2MEM0IC8qIEZ1bGxzY3JlZW5M
YXlvdXRDb25zdHJhaW50cy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IEZ1bGxzY3JlZW5MYXlvdXRDb25zdHJhaW50cy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTE1NDYsNiArMTU0OCw5IEBACiAJCTUzNjc3MDM1MUNDODEyRjkwMEQ0MjVCMSAv
KiBXZWJTY3JpcHRPYmplY3REZXNjcmlwdGlvbi5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBw
YXRoID0gV2ViU2NyaXB0T2JqZWN0RGVzY3JpcHRpb24uaHRtbDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTNFQzI1M0YxRTk2QkM4MDAwMDgzMUI5IC8qIFByaW9yaXR5UXVldWUuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHJpb3JpdHlRdWV1ZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU1MjI2QTJFMUVCOTY5QjYwMEMzNkFEMCAv
KiBsYXJnZS1yZWQtc3F1YXJlLWltYWdlLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGgg
PSAibGFyZ2UtcmVkLXNxdWFyZS1pbWFnZS5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNTU1ODQ4MUIyMTcxMzE1NjAwRkI3RkZGIC8qIEFkZGl0aW9uYWxBbGxvd2VkSW1hZ2VV
VElzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQWRkaXRpb25h
bEFsbG93ZWRJbWFnZVVUSXMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU1NTg0
ODFGMjE3MTM1MDgwMEZCN0ZGRiAvKiBBZGRpdGlvbmFsUmVhZEFjY2Vzc0FsbG93ZWRVUkxzUHJv
dG9jb2wuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWRkaXRpb25hbFJlYWRB
Y2Nlc3NBbGxvd2VkVVJMc1Byb3RvY29sLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTU1NTg0ODIxMjE3MTVBN0UwMEZCN0ZGRiAvKiB0Z2EtaW1hZ2UucG5nICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gaW1hZ2UucG5nOyBwYXRoID0gInRn
YS1pbWFnZS5wbmciOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NTk3RjgzNDFEOTU5
NkM4MDA2NkJDMjEgLyogU3luY2hyb25pemVkRml4ZWRRdWV1ZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTeW5jaHJvbml6ZWRGaXhlZFF1ZXVlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTcxNEVDQjgxQ0E4QjU4ODAwMDUxQUM4IC8qIERvd25s
b2FkUmVxdWVzdE9yaWdpbmFsVVJMLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSBE
b3dubG9hZFJlcXVlc3RPcmlnaW5hbFVSTC5odG1sOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1NzE0RUNCQTFDQThCRkQxMDAwNTFBQzggLyogRG93bmxvYWRSZXF1ZXN0T3JpZ2luYWxV
UkxGcmFtZS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gRG93bmxvYWRSZXF1ZXN0
T3JpZ2luYWxVUkxGcmFtZS5odG1sOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjMx
MCw5ICsyMzE1LDEwIEBACiAJCQkJQTE2RjY2QjgxQzQwRTlFMTAwQkQ0RDI0IC8qIFJlc291cmNl
cyAqLywKIAkJCQk1Q0VBQjVERjFGQTkzN0NCMDBBNzdGQUEgLyogX1dLSW5wdXREZWxlZ2F0ZS5t
bSAqLywKIAkJCQk3Q0VGQTk2NDFBQzBCOUUyMDBCOTEwRkQgLyogX1dLVXNlckNvbnRlbnRFeHRl
bnNpb25TdG9yZS5tbSAqLywKKwkJCQk1NTU4NDgxQjIxNzEzMTU2MDBGQjdGRkYgLyogQWRkaXRp
b25hbEFsbG93ZWRJbWFnZVVUSXMubW0gKi8sCiAJCQkJMzdFN0RENjMxRUEwNkZGMjAwOUIzOTZE
IC8qIEFkZGl0aW9uYWxSZWFkQWNjZXNzQWxsb3dlZFVSTHMubW0gKi8sCiAJCQkJMzdFN0RENjYx
RUEwNzFGMzAwOUIzOTZEIC8qIEFkZGl0aW9uYWxSZWFkQWNjZXNzQWxsb3dlZFVSTHNQbHVnaW4u
bW0gKi8sCi0JCQkJMzdFN0RENjUxRUEwNzE1QjAwOUIzOTZEIC8qIEFkZGl0aW9uYWxSZWFkQWNj
ZXNzQWxsb3dlZFVSTHNQcm90b2NvbC5oICovLAorCQkJCTU1NTg0ODFGMjE3MTM1MDgwMEZCN0ZG
RiAvKiBBZGRpdGlvbmFsUmVhZEFjY2Vzc0FsbG93ZWRVUkxzUHJvdG9jb2wuaCAqLywKIAkJCQlB
MURGNzQzMDFDNDFCNjU4MDBBMkY0RDAgLyogQWx3YXlzUmV2YWxpZGF0ZWRVUkxTY2hlbWVzLm1t
ICovLAogCQkJCTJERTcxQUZEMUQ0OUMwQkQwMDkwNDA5NCAvKiBBbmltYXRlZFJlc2l6ZS5tbSAq
LywKIAkJCQk2M0Y2NjgyMDFGOTdDM0FBMDAzMkVFNTEgLyogQXBwbGljYXRpb25NYW5pZmVzdC5t
bSAqLywKQEAgLTI4MDQsNiArMjgxMCw3IEBACiAJCQkJRjRDRDc0QzUyMEZEQUNGNTAwREUzNzk0
IC8qIHRleHQtd2l0aC1hc3luYy1zY3JpcHQuaHRtbCAqLywKIAkJCQlGNDRDN0EwNDIwRkFBRTMy
MDAxNDQ3OEMgLyogdGV4dC13aXRoLWRlZmVycmVkLXNjcmlwdC5odG1sICovLAogCQkJCUY0MUFC
OTk1MUVGNDY5MkMwMDgzRkEwOCAvKiB0ZXh0YXJlYS10by1pbnB1dC5odG1sICovLAorCQkJCTU1
NTg0ODIxMjE3MTVBN0UwMEZCN0ZGRiAvKiB0Z2EtaW1hZ2UucG5nICovLAogCQkJCUY0NDUxQzc1
MUVCOEZEN0MwMDIwQzVEQSAvKiB0d28tcGFyYWdyYXBoLWNvbnRlbnRlZGl0YWJsZS5odG1sICov
LAogCQkJCUNENTc3NzlCMjExQ0U2Q0UwMDFCMzcxRSAvKiB2aWRlby13aXRoLWF1ZGlvLWFuZC13
ZWItYXVkaW8uaHRtbCAqLywKIAkJCQlDRDU3Nzc5ODIxMUNERThGMDAxQjM3MUUgLyogd2ViLWF1
ZGlvLW9ubHkuaHRtbCAqLywKQEAgLTM3MTMsNiArMzcyMCw3IEBACiAJCQkJMkUyMDVCQTQxRjUy
Nzc0NjAwNTk1MkREIC8qIEFjY2Vzc2liaWxpdHlUZXN0c0lPUy5tbSBpbiBTb3VyY2VzICovLAog
CQkJCTlCRDUxMTFDMUZFOEUxMTYwMEQyQjYzMCAvKiBBY2Nlc3NpbmdQYXN0ZWRJbWFnZS5tbSBp
biBTb3VyY2VzICovLAogCQkJCUY0NUI2M0ZFMUYxOUQ0MTAwMDlEMzhCOSAvKiBBY3Rpb25TaGVl
dFRlc3RzLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJNTU1ODQ4MUMyMTcxMzE1NzAwRkI3RkZGIC8q
IEFkZGl0aW9uYWxBbGxvd2VkSW1hZ2VVVElzLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMzdFN0RE
NjQxRUEwNkZGMjAwOUIzOTZEIC8qIEFkZGl0aW9uYWxSZWFkQWNjZXNzQWxsb3dlZFVSTHMubW0g
aW4gU291cmNlcyAqLywKIAkJCQk3QTkwOUE3RDFEODc3NDgwMDA3RTEwRjggLyogQWZmaW5lVHJh
bnNmb3JtLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUExREY3NDMyMUM0MUI2NTgwMEEyRjREMCAv
KiBBbHdheXNSZXZhbGlkYXRlZFVSTFNjaGVtZXMubW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQWRkaXRpb25hbEFsbG93
ZWRJbWFnZVVUSXMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Fk
ZGl0aW9uYWxBbGxvd2VkSW1hZ2VVVElzLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlZDk1NWFiNmY3MzI2Yzdm
ZTQ0ZDJhNTJhNjliZmI3ODM5YTRiNmYKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0FkZGl0aW9uYWxBbGxvd2VkSW1hZ2VVVElzLm1tCkBA
IC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQg
PFdlYktpdC9XS0ZvdW5kYXRpb24uaD4KKworI2lmIFdLX0FQSV9FTkFCTEVEICYmIFBMQVRGT1JN
KENPQ09BKQorCisjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorI2ltcG9ydCAiVGVzdE5h
dmlnYXRpb25EZWxlZ2F0ZS5oIgorI2ltcG9ydCAiV0tXZWJWaWV3Q29uZmlndXJhdGlvbkV4dHJh
cy5oIgorI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmg+Cisj
aW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisKK1RFU1QoV2ViS2l0LCBBZGRpdGlvbmFsQWxsb3dl
ZEltYWdlVVRJcykKK3sKKyAgICBSZXRhaW5QdHI8V0tXZWJWaWV3Q29uZmlndXJhdGlvbj4gY29u
ZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0
XSk7CisgICAgW2NvbmZpZ3VyYXRpb24gX3NldEFkZGl0aW9uYWxBbGxvd2VkSW1hZ2VVVElzOkAi
Y29tLnRydWV2aXNpb24udGdhLWltYWdlIl07CisKKyAgICBSZXRhaW5QdHI8V0tXZWJWaWV3PiB3
ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VS
ZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsK
KworICAgIFJldGFpblB0cjxOU1VSTD4gdGVzdFVSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0g
VVJMRm9yUmVzb3VyY2U6QCJ0Z2EtaW1hZ2UiIHdpdGhFeHRlbnNpb246QCJwbmciIHN1YmRpcmVj
dG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CisgICAgW3dlYlZpZXcgbG9hZFJlcXVl
c3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDp0ZXN0VVJMLmdldCgpXV07CisgICAgW3dl
YlZpZXcgX3Rlc3Rfd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb25dOworICAgIAorICAgIF9fYmxv
Y2sgYm9vbCBpc0RvbmUgPSBmYWxzZTsKKyAgICBbd2ViVmlldyBfZG9BZnRlck5leHRQcmVzZW50
YXRpb25VcGRhdGU6XnsKKyAgICAgICAgW3dlYlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0OkAiW2Rv
Y3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2ltZycpLndpZHRoXSIgY29tcGxldGlvbkhhbmRsZXI6Xihp
ZCB2YWx1ZSwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICAgICAgICAgIENHRmxvYXQgd2lkdGggPSBb
W3ZhbHVlIG9iamVjdEF0SW5kZXg6MF0gZmxvYXRWYWx1ZV07CisgICAgICAgICAgICBFWFBFQ1Rf
RVEod2lkdGgsIDEwMCk7CisgICAgICAgICAgICBpc0RvbmUgPSB0cnVlOworICAgICAgICB9XTsK
KyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7Cit9CisKKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS90
Z2EtaW1hZ2UucG5nIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS90Z2Et
aW1hZ2UucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA2OTU4YmEwYzQ0MTA2MDU4ODg0YTNmMjRhMjNlZWQxODI4
YjE3NGIKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDUxOApjY21aUXo7OWBKKjZvd1FBMSZ6bEg0
RkNVKzUrZj1NMEN7bUM0Z2RmRQoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>352281</attachid>
            <date>2018-10-14 15:38:39 -0700</date>
            <delta_ts>2018-10-14 16:02:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190454-20181014153838.patch</filename>
            <type>text/plain</type>
            <size>34927</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3MDY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjlkY2FiMDkxMzA1OTE1
MDVmYjg5OTEyZmY4ZDE2YTZjMDg5NzZjOS4uZDgxYjVmZTA4MDNlNThiZjgxYzQwNzNiODgzOWY5
MWIzNjEzNzc3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDE4LTEwLTE0ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGFu
IFNQSSB0byBhbGxvdyBXZWJWaWV3IGNsaWVudHMgdG8gYWRkIGFkZGl0aW9uYWwgc3VwcG9ydGVk
IGltYWdlIGZvcm1hdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE5MDQ1NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFkZCBhbiBTUEkgdG8gYWxsb3cgYWRkaXRpb25hbCBzdXBwb3J0ZWQgaW1hZ2UgZm9y
bWF0cyBpbiBXZWJWaWV3LiBUaGVzZQorICAgICAgICBhZGRpdGlvbmFsIGZvcm1hdHMgY2FuIGJl
IHNldCBpbiB0aGUgV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhcyBhbiBOU0FycmF5CisgICAgICAg
IG9mIE5TdHJpbmdzLiBFYWNoIHN0cmluZyByZXByZXNlbnRzIHRoZSBVVEkgb2YgdGhlIGFkZGl0
aW9uYWwgYWxsb3dlZCAKKyAgICAgICAgaW1hZ2UgZm9ybWF0LgorCisgICAgICAgICogcGxhdGZv
cm0vTUlNRVR5cGVSZWdpc3RyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjppbml0aWFsaXplU3Vw
cG9ydGVkSW1hZ2VNSU1FVHlwZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0lt
YWdlRGVjb2RlckNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckNHOjplbmNv
ZGVkRGF0YVN0YXR1cyBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvVVRJ
UmVnaXN0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZGVmYXVsdEFsbG93ZWRJbWFnZUZvcm1h
dHMpOiBUaGlzIGlzIHRoZSBXZWJLaXQgZGVmYXVsdCBsaXN0IG9mCisgICAgICAgIHN1cHBvcnRl
ZCBpbWFnZSBmb3JtYXRzLgorICAgICAgICAoV2ViQ29yZTo6YWRkaXRpb25hbEFsbG93ZWRJbWFn
ZUZvcm1hdHMpOgorICAgICAgICAoV2ViQ29yZTo6c2V0QWRkaXRpb25hbEFsbG93ZWRJbWFnZUZv
cm1hdHMpOgorICAgICAgICAoV2ViQ29yZTo6aXNBbGxvd2VkSW1hZ2VGb3JtYXQpOiBUaGlzIGZ1
bmN0aW9uIGNoZWNrcyB0aGUgZGVmYXVsdCBsaXN0IGFuZAorICAgICAgICB0aGUgYWRkaXRpb25h
bCBsaXN0IHRvIGRlY2lkZSB3aGV0aGVyIHRoZSBpbWFnZSBmb3JtYXQgaXMgc3VwcG9ydGVkLgor
ICAgICAgICAoV2ViQ29yZTo6YWxsb3dlZEltYWdlVVRJcyk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjppc0FsbG93ZWRJbWFnZVVUSSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvVVRJUmVnaXN0cnkuaDoKKwogMjAxOC0xMC0xMSAgRG9uIE9sbXN0ZWFkICA8
ZG9uLm9sbXN0ZWFkQHNvbnkuY29tPgogCiAgICAgICAgIEFkZCBIb3VkaW5pIHNwZWNzIHRvIGZl
YXR1cmVzLmpzb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNTY2MTIxNGJlMzAwNTIyYzg2ZGVkOGI1MWRhYWNlMjg3
NmZhM2M1ZC4uODNiMTNkYzhlNDZjNjY3ZjE1ZWRjMGI1ZTdhMTNlM2JjZGZmZWEzZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwzOSBAQAorMjAxOC0xMC0xNCAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJv
dWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBhbiBTUEkgdG8gYWxsb3cgV2ViVmll
dyBjbGllbnRzIHRvIGFkZCBhZGRpdGlvbmFsIHN1cHBvcnRlZCBpbWFnZSBmb3JtYXRzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTA0NTQKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFBsYXRmb3JtL21h
Yy9TdHJpbmdVdGlsaXRpZXMuaDoKKyAgICAgICAgKiBQbGF0Zm9ybS9tYWMvU3RyaW5nVXRpbGl0
aWVzLm1tOgorICAgICAgICAoV2ViS2l0Ojp3ZWJDb3JlU3RyaW5nTGlzdEZyb21Oc1N0cmluZ0Fy
cmF5KToKKyAgICAgICAgKiBTaGFyZWQvV2ViUHJlZmVyZW5jZXMueWFtbDoKKyAgICAgICAgKiBT
aGFyZWQvV2ViUHJlZmVyZW5jZXNTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByZWZl
cmVuY2VzU3RvcmU6OnNldFN0cmluZ2xpc3RWYWx1ZUZvcktleSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlByZWZlcmVuY2VzU3RvcmU6OmdldFN0cmluZ2xpc3RWYWx1ZUZvcktleSBjb25zdCk6IEFk
ZCBzdXBwb3J0CisgICAgICAgIGZvciBzdG9yaW5nIGEgbGlzdCBvZiBzdHJpbmdzIGluIHRoZSBX
ZWJQcmVmZXJlbmNlc1N0b3JlLgorICAgICAgICAqIFNoYXJlZC9XZWJQcmVmZXJlbmNlc1N0b3Jl
Lmg6CisgICAgICAgICogU2hhcmVkL1dlYlByZWZlcmVuY2VzU3RvcmUuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9p
bml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb246XSk6IFNldCB0aGUgdmFsdWUgb2YgQWRkaXRpb25h
bEFsbG93ZWRJbWFnZUZvcm1hdHMKKyAgICAgICAgZnJvbSBXS1dlYlZpZXdDb25maWd1cmF0aW9u
IHRvIHRoZSBXZWJQcmVmZXJlbmNlcy4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlld0NvbmZpZ3VyYXRpb24ubW06CisgICAgICAgICgtW1dLV2ViVmlld0NvbmZpZ3VyYXRp
b24gY29weVdpdGhab25lOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF9h
ZGRpdGlvbmFsQWxsb3dlZEltYWdlRm9ybWF0c10pOgorICAgICAgICAoLVtXS1dlYlZpZXdDb25m
aWd1cmF0aW9uIF9zZXRBZGRpdGlvbmFsQWxsb3dlZEltYWdlRm9ybWF0czpdKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlByZWZlcmVuY2VzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJlZmVyZW5jZXM6OnVwZGF0ZVN0cmluZ2xpc3RWYWx1ZUZvcktleSk6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYlByZWZlcmVuY2VzLmg6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJQ
cmVmZXJlbmNlc01hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJlZmVyZW5jZXM6OnBsYXRm
b3JtR2V0U3RyaW5nbGlzdFVzZXJWYWx1ZUZvcktleSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBy
ZWZlcmVuY2VzOjpwbGF0Zm9ybVVwZGF0ZVN0cmluZ1ZhbHVlRm9yS2V5KToKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJlZmVyZW5jZXM6OnBsYXRmb3JtVXBkYXRlU3RyaW5nbGlzdFZhbHVlRm9yS2V5
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2U6OnVwZGF0ZVByZWZlcmVuY2VzKTogQ29weSB0aGUgdmFsdWUgb2YgQWRk
aXRpb25hbEFsbG93ZWRJbWFnZUZvcm1hdHMKKyAgICAgICAgZnJvbSBXZWJQcmVmZXJlbmNlcyB0
byB0aGUgV2ViQ29yZSBmdW5jdGlvbiBzZXRBZGRpdGlvbmFsQWxsb3dlZEltYWdlRm9ybWF0cygp
LgorCiAyMDE4LTEwLTExICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAg
ICAgICBJT1MgMTIgLSBTZXJ2aWNlIHdvcmtlciBjYWNoZSBub3Qgc2hhcmVkIHdoZW4gYWRkZWQg
dG8gaG9tZXNjcmVlbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5
cGVSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5
LmNwcAppbmRleCBmM2RkMTRmMDU1MDA4YTZjMzQyZTczYTJjZGNjN2YxMmM2MTMzMDg2Li5iNmFj
YTFiOTJiMTk1MjBjMTExZjVkMjIyYTkyYzNhMTE2YWI1ZGJjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcApAQCAtNzgsNyArNzgsNyBAQCBzdGF0aWMg
dm9pZCBpbml0aWFsaXplU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXMoKQogICAgIH0KIAogI2lmbmRl
ZiBOREVCVUcKLSAgICBmb3IgKGF1dG8mIHV0aSA6IGFsbG93ZWRJbWFnZVVUSXMoKSkgeworICAg
IGZvciAoYXV0byYgdXRpIDogZGVmYXVsdEFsbG93ZWRJbWFnZUZvcm1hdHMoKSkgewogICAgICAg
ICBhdXRvIG1pbWVUeXBlID0gTUlNRVR5cGVGb3JJbWFnZVNvdXJjZVR5cGUodXRpKTsKICAgICAg
ICAgaWYgKCFtaW1lVHlwZS5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIEFTU0VSVChzdXBwb3J0
ZWRJbWFnZU1JTUVUeXBlcy0+Y29udGFpbnMobWltZVR5cGUpKTsKQEAgLTg4LDcgKzg4LDcgQEAg
c3RhdGljIHZvaWQgaW5pdGlhbGl6ZVN1cHBvcnRlZEltYWdlTUlNRVR5cGVzKCkKIAogI2lmIFBM
QVRGT1JNKENPQ09BKQogICAgIGZvciAoYXV0byYgbWltZSA6ICpzdXBwb3J0ZWRJbWFnZU1JTUVU
eXBlcykKLSAgICAgICAgQVNTRVJUX1VOVVNFRChtaW1lLCBhbGxvd2VkSW1hZ2VVVElzKCkuY29u
dGFpbnMoVVRJRnJvbU1JTUVUeXBlKG1pbWUpKSk7CisgICAgICAgIEFTU0VSVF9VTlVTRUQobWlt
ZSwgZGVmYXVsdEFsbG93ZWRJbWFnZUZvcm1hdHMoKS5jb250YWlucyhVVElGcm9tTUlNRVR5cGUo
bWltZSkpKTsKICNlbmRpZgogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcAppbmRleCA4YjYxZTZjNzZmOTlj
MzYxNGQ0YTMwYmU2YTBmY2MxZDBjYzQyODE3Li5iNzgwMjE5ODdiY2IyZmQ0ODNmZTNjMjBkNjcz
N2FhNTNiYjUxNDc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9JbWFnZURlY29kZXJDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCkBAIC0xOTksNyArMTk5LDcgQEAgRW5jb2RlZERh
dGFTdGF0dXMgSW1hZ2VEZWNvZGVyQ0c6OmVuY29kZWREYXRhU3RhdHVzKCkgY29uc3QKICAgICAg
ICAgcmV0dXJuIEVuY29kZWREYXRhU3RhdHVzOjpFcnJvcjsKIAogICAgIGNhc2Uga0NHSW1hZ2VT
dGF0dXNJbmNvbXBsZXRlOiB7Ci0gICAgICAgIGlmICghaXNBbGxvd2VkSW1hZ2VVVEkodXRpKSkK
KyAgICAgICAgaWYgKCFpc0FsbG93ZWRJbWFnZUZvcm1hdCh1dGkpKQogICAgICAgICAgICAgcmV0
dXJuIEVuY29kZWREYXRhU3RhdHVzOjpFcnJvcjsKIAogICAgICAgICBSZXRhaW5QdHI8Q0ZEaWN0
aW9uYXJ5UmVmPiBpbWFnZTBQcm9wZXJ0aWVzID0gYWRvcHRDRihDR0ltYWdlU291cmNlQ29weVBy
b3BlcnRpZXNBdEluZGV4KG1fbmF0aXZlRGVjb2Rlci5nZXQoKSwgMCwgaW1hZ2VTb3VyY2VPcHRp
b25zKCkuZ2V0KCkpKTsKQEAgLTIxMyw3ICsyMTMsNyBAQCBFbmNvZGVkRGF0YVN0YXR1cyBJbWFn
ZURlY29kZXJDRzo6ZW5jb2RlZERhdGFTdGF0dXMoKSBjb25zdAogICAgIH0KIAogICAgIGNhc2Ug
a0NHSW1hZ2VTdGF0dXNDb21wbGV0ZToKLSAgICAgICAgaWYgKCFpc0FsbG93ZWRJbWFnZVVUSSh1
dGkpKQorICAgICAgICBpZiAoIWlzQWxsb3dlZEltYWdlRm9ybWF0KHV0aSkpCiAgICAgICAgICAg
ICByZXR1cm4gRW5jb2RlZERhdGFTdGF0dXM6OkVycm9yOwogCiAgICAgICAgIHJldHVybiBFbmNv
ZGVkRGF0YVN0YXR1czo6Q29tcGxldGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9VVElSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9VVElSZWdpc3RyeS5jcHAKaW5kZXggZDM0MjI0MzNlNTI5ZWUxMzc4ZmJj
YjQ4MjIwMTUyZjc0M2U4OWE1OS4uODk0NmU2YWIzMDBmZmJjN2VkNDgyNmM3M2JjYTkzZjEzMGQx
ZDVhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvVVRJ
UmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1VU
SVJlZ2lzdHJ5LmNwcApAQCAtMzgsMTAgKzM4LDEwIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotSGFzaFNldDxTdHJpbmc+JiBhbGxvd2VkSW1hZ2VVVElzKCkKK0hhc2hTZXQ8U3RyaW5nPiYg
ZGVmYXVsdEFsbG93ZWRJbWFnZUZvcm1hdHMoKQogewogICAgIC8vIENHIGF0IGxlYXN0IHN1cHBv
cnRzIHRoZSBmb2xsb3dpbmcgc3RhbmRhcmQgaW1hZ2UgdHlwZXM6Ci0gICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPEhhc2hTZXQ8U3RyaW5nPj4gc19hbGxvd2VkSW1hZ2VVVElzID0gc3RkOjppbml0
aWFsaXplcl9saXN0PFN0cmluZz4geworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0
PFN0cmluZz4+IGRlZmF1bHRBbGxvd2VkSW1hZ2VGb3JtYXRzID0gc3RkOjppbml0aWFsaXplcl9s
aXN0PFN0cmluZz4gewogICAgICAgICAiY29tLmNvbXB1c2VydmUuZ2lmIiwKICAgICAgICAgImNv
bS5taWNyb3NvZnQuYm1wIiwKICAgICAgICAgImNvbS5taWNyb3NvZnQuY3VyIiwKQEAgLTU5LDcg
KzU5LDcgQEAgSGFzaFNldDxTdHJpbmc+JiBhbGxvd2VkSW1hZ2VVVElzKCkKICAgICBpZiAoIWNo
ZWNrZWQpIHsKICAgICAgICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IHN5c3RlbUltYWdlVVRJcyA9
IGFkb3B0Q0YoQ0dJbWFnZVNvdXJjZUNvcHlUeXBlSWRlbnRpZmllcnMoKSk7CiAgICAgICAgIENG
SW5kZXggY291bnQgPSBDRkFycmF5R2V0Q291bnQoc3lzdGVtSW1hZ2VVVElzLmdldCgpKTsKLSAg
ICAgICAgZm9yIChhdXRvJiBpbWFnZVVUSSA6IHNfYWxsb3dlZEltYWdlVVRJcy5nZXQoKSkgewor
ICAgICAgICBmb3IgKGF1dG8mIGltYWdlVVRJIDogZGVmYXVsdEFsbG93ZWRJbWFnZUZvcm1hdHMu
Z2V0KCkpIHsKICAgICAgICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gc3RyaW5nID0gaW1h
Z2VVVEkuY3JlYXRlQ0ZTdHJpbmcoKTsKICAgICAgICAgICAgIEFTU0VSVChDRkFycmF5Q29udGFp
bnNWYWx1ZShzeXN0ZW1JbWFnZVVUSXMuZ2V0KCksIENGUmFuZ2VNYWtlKDAsIGNvdW50KSwgc3Ry
aW5nLmdldCgpKSk7CiAgICAgICAgIH0KQEAgLTY3LDEyICs2NywyMyBAQCBIYXNoU2V0PFN0cmlu
Zz4mIGFsbG93ZWRJbWFnZVVUSXMoKQogICAgIH0KICNlbmRpZgogCi0gICAgcmV0dXJuIHNfYWxs
b3dlZEltYWdlVVRJcy5nZXQoKTsKKyAgICByZXR1cm4gZGVmYXVsdEFsbG93ZWRJbWFnZUZvcm1h
dHM7CiB9CiAKLWJvb2wgaXNBbGxvd2VkSW1hZ2VVVEkoY29uc3QgU3RyaW5nJiBpbWFnZVVUSSkK
K3N0YXRpYyBWZWN0b3I8U3RyaW5nPiYgYWRkaXRpb25hbEFsbG93ZWRJbWFnZUZvcm1hdHMoKQog
ewotICAgIHJldHVybiAhaW1hZ2VVVEkuaXNFbXB0eSgpICYmIGFsbG93ZWRJbWFnZVVUSXMoKS5j
b250YWlucyhpbWFnZVVUSSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFZlY3RvcjxTdHJp
bmc+PiBhZGRpdGlvbmFsQWxsb3dlZEltYWdlRm9ybWF0czsKKyAgICByZXR1cm4gYWRkaXRpb25h
bEFsbG93ZWRJbWFnZUZvcm1hdHM7Cit9CisKK3ZvaWQgc2V0QWRkaXRpb25hbEFsbG93ZWRJbWFn
ZUZvcm1hdHMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHZhbHVlKQoreworICAgIGFkZGl0aW9uYWxB
bGxvd2VkSW1hZ2VGb3JtYXRzKCkgPSB2YWx1ZTsKK30KKworYm9vbCBpc0FsbG93ZWRJbWFnZUZv
cm1hdChjb25zdCBTdHJpbmcmIGltYWdlVVRJKQoreworICAgIHJldHVybiAhaW1hZ2VVVEkuaXNF
bXB0eSgpICYmIChkZWZhdWx0QWxsb3dlZEltYWdlRm9ybWF0cygpLmNvbnRhaW5zKGltYWdlVVRJ
KSB8fCBhZGRpdGlvbmFsQWxsb3dlZEltYWdlRm9ybWF0cygpLmNvbnRhaW5zKGltYWdlVVRJKSk7
CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L1VUSVJlZ2lzdHJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9VVElS
ZWdpc3RyeS5oCmluZGV4IDIyZjI2YWRiNTBjOWZlODYzZTAyNzJlYmZmYjEzNTNmY2YzNTRjNDUu
LjE0NjNhOWQyNmQwYzlmNWZkZmFiNzYwNzM2ZjE4NTMxNzllNDJjNTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1VUSVJlZ2lzdHJ5LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvVVRJUmVnaXN0cnkuaApAQCAtMzAsNyAr
MzAsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUhhc2hTZXQ8U3RyaW5nPiYgYWxsb3dl
ZEltYWdlVVRJcygpOwotYm9vbCBpc0FsbG93ZWRJbWFnZVVUSShjb25zdCBTdHJpbmcmKTsKK0hh
c2hTZXQ8U3RyaW5nPiYgZGVmYXVsdEFsbG93ZWRJbWFnZUZvcm1hdHMoKTsKK2Jvb2wgaXNBbGxv
d2VkSW1hZ2VGb3JtYXQoY29uc3QgU3RyaW5nJik7CitXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEFk
ZGl0aW9uYWxBbGxvd2VkSW1hZ2VGb3JtYXRzKGNvbnN0IFZlY3RvcjxTdHJpbmc+Jik7CiAKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vbWFjL1N0cmluZ1V0aWxpdGllcy5o
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9tYWMvU3RyaW5nVXRpbGl0aWVzLmgKaW5kZXggMjlh
NzZjZDc1MzhjNWRmYzhlMWE4ZDI4OWVjYzllOGI2YzgwNWRmMC4uZWYyMjBlOGEzYWQ5MGJiYTEy
MTEwOGNkNjE3NTFlYjVjNGRhZTAwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9tYWMvU3RyaW5nVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9tYWMv
U3RyaW5nVXRpbGl0aWVzLmgKQEAgLTMwLDYgKzMwLDggQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7
CiAKK3R5cGVkZWYgVmVjdG9yPFN0cmluZz4gU3RyaW5nTGlzdDsKKwogI2lmZGVmIF9fT0JKQ19f
CiAKIC8vIE5PVEU6IFRoaXMgZG9lcyBub3QgdXNlIFN0cmluZzo6b3BlcmF0b3IgTlNTdHJpbmcq
KCkgc2luY2UgdGhhdCBmdW5jdGlvbgpAQCAtMzcsNiArMzksOSBAQCBuYW1lc3BhY2UgV2ViS2l0
IHsKIE5TU3RyaW5nICpuc1N0cmluZ0Zyb21XZWJDb3JlU3RyaW5nKGNvbnN0IFN0cmluZyYpOwog
TlNTdHJpbmcgKmZvcm1hdHRlZFBob25lTnVtYmVyU3RyaW5nKE5TU3RyaW5nICpvcmlnaW5hbFBo
b25lTnVtYmVyKTsKIAorU3RyaW5nTGlzdCB3ZWJDb3JlU3RyaW5nTGlzdEZyb21Oc1N0cmluZ0Fy
cmF5KE5TQXJyYXk8TlNTdHJpbmcgKj4gKik7CitOU0FycmF5PE5TU3RyaW5nICo+ICpuc1N0cmlu
Z0FycmF5RnJvbVdlYkNvcmVTdHJpbmdMaXN0KGNvbnN0IFN0cmluZ0xpc3QmKTsKKwogI2VuZGlm
IC8vIGRlZmluZWQoX19PQkpDX18pCiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vbWFjL1N0cmluZ1V0aWxpdGllcy5tbSBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vbWFj
L1N0cmluZ1V0aWxpdGllcy5tbQppbmRleCA1Yzk2NzkzN2NlNGY5YjE4MGQ4MDFkOWUyMjhiNjZj
OTA3N2E2YmVjLi4wZTA1NDlkN2RiMDkwNjU3MTJmMmY3MTFmYzQzZDljYTFjZWEwZjRjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL21hYy9TdHJpbmdVdGlsaXRpZXMubW0KKysr
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9tYWMvU3RyaW5nVXRpbGl0aWVzLm1tCkBAIC04Miw0
ICs4MiwyMSBAQCBOU1N0cmluZyAqZm9ybWF0dGVkUGhvbmVOdW1iZXJTdHJpbmcoTlNTdHJpbmcg
KikKIAogI2VuZGlmIC8vIEVOQUJMRShURUxFUEhPTkVfTlVNQkVSX0RFVEVDVElPTikgJiYgUExB
VEZPUk0oTUFDKQogCitTdHJpbmdMaXN0IHdlYkNvcmVTdHJpbmdMaXN0RnJvbU5zU3RyaW5nQXJy
YXkoTlNBcnJheTxOU1N0cmluZyAqPiAqbnNTdHJpbmdBcnJheSkKK3sKKyAgICBTdHJpbmdMaXN0
IHN0cmluZ0xpc3Q7CisgICAgW25zU3RyaW5nQXJyYXkgZW51bWVyYXRlT2JqZWN0c1VzaW5nQmxv
Y2s6WyZdIChOU1N0cmluZyAqbnNTdHJpbmcsIE5TVUludGVnZXIsIEJPT0wgKikgeworICAgICAg
ICBzdHJpbmdMaXN0LmFwcGVuZChTdHJpbmcobnNTdHJpbmcpKTsKKyAgICB9XTsKKyAgICByZXR1
cm4gc3RyaW5nTGlzdDsKK30KKworTlNBcnJheTxOU1N0cmluZyAqPiAqbnNTdHJpbmdBcnJheUZy
b21XZWJDb3JlU3RyaW5nTGlzdChjb25zdCBTdHJpbmdMaXN0JiBzdHJpbmdMaXN0KQoreworICAg
IE5TTXV0YWJsZUFycmF5ICpuc1N0cmluZ0FycmF5ID0gW05TTXV0YWJsZUFycmF5IGFycmF5XTsK
KyAgICBmb3IgKGF1dG8gc3RyaW5nIDogc3RyaW5nTGlzdCkKKyAgICAgICAgW25zU3RyaW5nQXJy
YXkgYWRkT2JqZWN0OltOU1N0cmluZyBzdHJpbmdXaXRoVVRGOFN0cmluZzpzdHJpbmcudXRmOCgp
LmRhdGEoKV1dOworICAgIHJldHVybiBuc1N0cmluZ0FycmF5OworfQorCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlcy55YW1sIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViUHJlZmVyZW5jZXMueWFtbAppbmRleCA3NTY0OThiMzFiNGM0YTZjMDk1MzBm
N2Q2Zjc1N2VmMWYxMGRlNTM5Li43NGJkMTY2ZDc3Y2EzMmM5NThhY2ViMTMwMTZmNWNlYTdhNGUx
ZTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlcy55YW1s
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzLnlhbWwKQEAgLTY1Niw2
ICs2NTYsMTEgQEAgQW5pbWF0ZWRJbWFnZUFzeW5jRGVjb2RpbmdFbmFibGVkOgogICB0eXBlOiBi
b29sCiAgIGRlZmF1bHRWYWx1ZTogdHJ1ZQogCitBZGRpdGlvbmFsQWxsb3dlZEltYWdlRm9ybWF0
czoKKyAgICB0eXBlOiBTdHJpbmdMaXN0CisgICAgZGVmYXVsdFZhbHVlOiAneyB9JworICAgIHdl
YmNvcmVCaW5kaW5nOiBub25lCisKIEN1c3RvbUVsZW1lbnRzRW5hYmxlZDoKICAgdHlwZTogYm9v
bAogICBkZWZhdWx0VmFsdWU6IHRydWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYlByZWZlcmVuY2VzU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVy
ZW5jZXNTdG9yZS5jcHAKaW5kZXggNjdhMDY4NzgyZjEzM2FjMTcwNjIyNmVjZWRjZGI1MTAwYzMy
Y2RhNC4uZGNlMjdiYzk1ZGU5ZjQ0MzdhZGYyY2U5ZTE1NzM4ZDE4ZWFlY2Y0OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXNTdG9yZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXNTdG9yZS5jcHAKQEAgLTExNiw2ICsxMTYs
MTYgQEAgU3RyaW5nIFdlYlByZWZlcmVuY2VzU3RvcmU6OmdldFN0cmluZ1ZhbHVlRm9yS2V5KGNv
bnN0IFN0cmluZyYga2V5KSBjb25zdAogICAgIHJldHVybiB2YWx1ZUZvcktleTxTdHJpbmc+KG1f
dmFsdWVzLCBtX292ZXJyaWRkZW5EZWZhdWx0cywga2V5KTsKIH0KIAorYm9vbCBXZWJQcmVmZXJl
bmNlc1N0b3JlOjpzZXRTdHJpbmdsaXN0VmFsdWVGb3JLZXkoY29uc3QgU3RyaW5nJiBrZXksIGNv
bnN0IFN0cmluZ0xpc3QmIHZhbHVlKQoreworICAgIHJldHVybiBzZXRWYWx1ZUZvcktleTxTdHJp
bmdMaXN0PihtX3ZhbHVlcywgbV9vdmVycmlkZGVuRGVmYXVsdHMsIGtleSwgdmFsdWUpOworfQor
ICAgIAorU3RyaW5nTGlzdCBXZWJQcmVmZXJlbmNlc1N0b3JlOjpnZXRTdHJpbmdsaXN0VmFsdWVG
b3JLZXkoY29uc3QgU3RyaW5nJiBrZXkpIGNvbnN0Cit7CisgICAgcmV0dXJuIHZhbHVlRm9yS2V5
PFN0cmluZ0xpc3Q+KG1fdmFsdWVzLCBtX292ZXJyaWRkZW5EZWZhdWx0cywga2V5KTsKK30KKwog
Ym9vbCBXZWJQcmVmZXJlbmNlc1N0b3JlOjpzZXRCb29sVmFsdWVGb3JLZXkoY29uc3QgU3RyaW5n
JiBrZXksIGJvb2wgdmFsdWUpCiB7CiAgICAgcmV0dXJuIHNldFZhbHVlRm9yS2V5PGJvb2w+KG1f
dmFsdWVzLCBtX292ZXJyaWRkZW5EZWZhdWx0cywga2V5LCB2YWx1ZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlc1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJQcmVmZXJlbmNlc1N0b3JlLmgKaW5kZXggNGIzOTY4NmRlZThkZjczZGJiNDlh
NmY3ZGNmNjhkOGZmYThiMzM5NS4uM2Y2ODFlZGE2MGVhMzIzN2FhMmM2NDU2YjQ4YzViN2FlMzgz
NTcwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXNTdG9y
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzU3RvcmUuaApAQCAt
MjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAiRGVjb2Rlci5oIgogI2luY2x1ZGUgIkVuY29kZXIu
aCIKKyNpbmNsdWRlIDxXZWJLaXQvU3RyaW5nVXRpbGl0aWVzLmg+CiAjaW5jbHVkZSA8d3RmL0hh
c2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CkBAIC00NCw2ICs0NSw5IEBAIHN0cnVjdCBXZWJQcmVmZXJlbmNl
c1N0b3JlIHsKICAgICBib29sIHNldFN0cmluZ1ZhbHVlRm9yS2V5KGNvbnN0IFN0cmluZyYga2V5
LCBjb25zdCBTdHJpbmcmIHZhbHVlKTsKICAgICBTdHJpbmcgZ2V0U3RyaW5nVmFsdWVGb3JLZXko
Y29uc3QgU3RyaW5nJiBrZXkpIGNvbnN0OwogCisgICAgYm9vbCBzZXRTdHJpbmdsaXN0VmFsdWVG
b3JLZXkoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZ0xpc3QmIHZhbHVlKTsKKyAgICBT
dHJpbmdMaXN0IGdldFN0cmluZ2xpc3RWYWx1ZUZvcktleShjb25zdCBTdHJpbmcmIGtleSkgY29u
c3Q7CisKICAgICBib29sIHNldEJvb2xWYWx1ZUZvcktleShjb25zdCBTdHJpbmcmIGtleSwgYm9v
bCB2YWx1ZSk7CiAgICAgYm9vbCBnZXRCb29sVmFsdWVGb3JLZXkoY29uc3QgU3RyaW5nJiBrZXkp
IGNvbnN0OwogCkBAIC02Miw3ICs2Niw3IEBAIHN0cnVjdCBXZWJQcmVmZXJlbmNlc1N0b3JlIHsK
ICAgICBzdGF0aWMgdm9pZCBvdmVycmlkZUJvb2xWYWx1ZUZvcktleShjb25zdCBTdHJpbmcmIGtl
eSwgYm9vbCB2YWx1ZSk7CiAgICAgc3RhdGljIHZvaWQgcmVtb3ZlVGVzdFJ1bm5lck92ZXJyaWRl
cygpOwogCi0gICAgdXNpbmcgVmFsdWUgPSBWYXJpYW50PFN0cmluZywgYm9vbCwgdWludDMyX3Qs
IGRvdWJsZT47CisgICAgdXNpbmcgVmFsdWUgPSBWYXJpYW50PFN0cmluZywgU3RyaW5nTGlzdCwg
Ym9vbCwgdWludDMyX3QsIGRvdWJsZT47CiAKICAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBW
YWx1ZT4gVmFsdWVNYXA7CiAgICAgVmFsdWVNYXAgbV92YWx1ZXM7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCBlNjUzMmQ0NzkxOTRiOWRi
NGYxYjE2NDA5ZmIzY2MxNTE5M2I3ODBlLi43N2Q5MjUzMjE5ZWExMWMzNTA0MTZkZTFlMmEyMDBk
MDBhMTYxMTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXcubW0KQEAgLTY0Myw2ICs2NDMsOCBAQCBzdGF0aWMgdm9pZCB2YWxpZGF0ZShXS1dlYlZp
ZXdDb25maWd1cmF0aW9uICpjb25maWd1cmF0aW9uKQogICAgICAgICBwYWdlQ29uZmlndXJhdGlv
bi0+cHJlZmVyZW5jZVZhbHVlcygpLnNldChXZWJLaXQ6OldlYlByZWZlcmVuY2VzS2V5OjpzZXJ2
aWNlV29ya2Vyc0VuYWJsZWRLZXkoKSwgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1
ZShmYWxzZSkpOwogI2VuZGlmCiAKKyAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZVZh
bHVlcygpLnNldChXZWJLaXQ6OldlYlByZWZlcmVuY2VzS2V5OjphZGRpdGlvbmFsQWxsb3dlZElt
YWdlRm9ybWF0c0tleSgpLCBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmU6OlZhbHVlKFdlYktp
dDo6d2ViQ29yZVN0cmluZ0xpc3RGcm9tTnNTdHJpbmdBcnJheShbX2NvbmZpZ3VyYXRpb24gX2Fk
ZGl0aW9uYWxBbGxvd2VkSW1hZ2VGb3JtYXRzXSkpKTsKKwogI2lmIFBMQVRGT1JNKElPUykKICAg
ICBDR1JlY3QgYm91bmRzID0gc2VsZi5ib3VuZHM7CiAgICAgX3Njcm9sbFZpZXcgPSBhZG9wdE5T
KFtbV0tTY3JvbGxWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOmJvdW5kc10pOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRp
b24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmln
dXJhdGlvbi5tbQppbmRleCA0M2E1MTM0MjViZmM5ZDc3M2M4YmFhOTE4YzViZjYyZGJkOTQxMTYx
Li5kNjZlZjFlMjA5ODgwNmI3ZDkyMWYzZjBjODY0OTIxNzBjYzVmNjEzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmln
dXJhdGlvbi5tbQpAQCAtMTYxLDYgKzE2MSw3IEBAIHN0YXRpYyBfV0tEcmFnTGlmdERlbGF5IHRv
RHJhZ0xpZnREZWxheShOU1VJbnRlZ2VyIHZhbHVlKQogICAgIEJPT0wgX2RyYXdzQmFja2dyb3Vu
ZDsKIAogICAgIFJldGFpblB0cjxOU1N0cmluZz4gX21lZGlhQ29udGVudFR5cGVzUmVxdWlyaW5n
SGFyZHdhcmVTdXBwb3J0OworICAgIFJldGFpblB0cjxOU0FycmF5PE5TU3RyaW5nICo+PiBfYWRk
aXRpb25hbEFsbG93ZWRJbWFnZUZvcm1hdHM7CiB9CiAKIC0gKGluc3RhbmNldHlwZSlpbml0CkBA
IC0zOTQsNiArMzk1LDcgQEAgc3RhdGljIF9XS0RyYWdMaWZ0RGVsYXkgdG9EcmFnTGlmdERlbGF5
KE5TVUludGVnZXIgdmFsdWUpCiAgICAgY29uZmlndXJhdGlvbi0+X25lZWRzU3RvcmFnZUFjY2Vz
c0Zyb21GaWxlVVJMc1F1aXJrID0gc2VsZi0+X25lZWRzU3RvcmFnZUFjY2Vzc0Zyb21GaWxlVVJM
c1F1aXJrOwogCiAgICAgY29uZmlndXJhdGlvbi0+X21lZGlhQ29udGVudFR5cGVzUmVxdWlyaW5n
SGFyZHdhcmVTdXBwb3J0ID0gYWRvcHROUyhbc2VsZi5fbWVkaWFDb250ZW50VHlwZXNSZXF1aXJp
bmdIYXJkd2FyZVN1cHBvcnQgY29weVdpdGhab25lOnpvbmVdKTsKKyAgICBjb25maWd1cmF0aW9u
LT5fYWRkaXRpb25hbEFsbG93ZWRJbWFnZUZvcm1hdHMgPSBhZG9wdE5TKFtzZWxmLT5fYWRkaXRp
b25hbEFsbG93ZWRJbWFnZUZvcm1hdHMgY29weVdpdGhab25lOnpvbmVdKTsKICAgICBjb25maWd1
cmF0aW9uLT5fbGVnYWN5RW5jcnlwdGVkTWVkaWFBUElFbmFibGVkID0gc2VsZi0+X2xlZ2FjeUVu
Y3J5cHRlZE1lZGlhQVBJRW5hYmxlZDsKICAgICBjb25maWd1cmF0aW9uLT5fYWxsb3dNZWRpYUNv
bnRlbnRUeXBlc1JlcXVpcmluZ0hhcmR3YXJlU3VwcG9ydEFzRmFsbGJhY2sgPSBzZWxmLT5fYWxs
b3dNZWRpYUNvbnRlbnRUeXBlc1JlcXVpcmluZ0hhcmR3YXJlU3VwcG9ydEFzRmFsbGJhY2s7CiAK
QEAgLTk5MCw2ICs5OTIsMTYgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAg
ICAgX21lZGlhQ29udGVudFR5cGVzUmVxdWlyaW5nSGFyZHdhcmVTdXBwb3J0ID0gYWRvcHROUyhb
bWVkaWFDb250ZW50VHlwZXNSZXF1aXJpbmdIYXJkd2FyZVN1cHBvcnQgY29weV0pOwogfQogCist
IChOU0FycmF5PE5TU3RyaW5nICo+ICopX2FkZGl0aW9uYWxBbGxvd2VkSW1hZ2VGb3JtYXRzCit7
CisgICAgcmV0dXJuIF9hZGRpdGlvbmFsQWxsb3dlZEltYWdlRm9ybWF0cy5nZXQoKTsKK30KKwor
LSAodm9pZClfc2V0QWRkaXRpb25hbEFsbG93ZWRJbWFnZUZvcm1hdHM6KE5TQXJyYXk8TlNTdHJp
bmcgKj4gKilhZGRpdGlvbmFsQWxsb3dlZEltYWdlRm9ybWF0cworeworICAgIF9hZGRpdGlvbmFs
QWxsb3dlZEltYWdlRm9ybWF0cyA9IGFkb3B0TlMoW2FkZGl0aW9uYWxBbGxvd2VkSW1hZ2VGb3Jt
YXRzIGNvcHldKTsKK30KKwogLSAodm9pZClfc2V0TGVnYWN5RW5jcnlwdGVkTWVkaWFBUElFbmFi
bGVkOihCT09MKWVuYWJsZWQKIHsKICAgICBfbGVnYWN5RW5jcnlwdGVkTWVkaWFBUElFbmFibGVk
ID0gZW5hYmxlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmgKaW5kZXggZjEwNWEx
YWEyYzNjM2E5ZGExNzYxN2ZhZjcxZDhjNTYwM2Y3ZDg4MS4uZGMwNGIxOTI0ZDJlNjVlMmQxMGNl
NTJlMzU4MjliNzdiYjgxZmYyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmgK
QEAgLTEwMSw2ICsxMDEsNyBAQCB0eXBlZGVmIE5TX0VOVU0oTlNVSW50ZWdlciwgX1dLRHJhZ0xp
ZnREZWxheSkgewogQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0TWVkaWFDb250ZW50
VHlwZXNSZXF1aXJpbmdIYXJkd2FyZVN1cHBvcnQ6KSBOU1N0cmluZyAqX21lZGlhQ29udGVudFR5
cGVzUmVxdWlyaW5nSGFyZHdhcmVTdXBwb3J0IFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjEz
KSwgaW9zKDExLjApKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldExlZ2FjeUVu
Y3J5cHRlZE1lZGlhQVBJRW5hYmxlZDopIEJPT0wgX2xlZ2FjeUVuY3J5cHRlZE1lZGlhQVBJRW5h
YmxlZCBXS19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMyksIGlvcygxMS4wKSk7CiBAcHJvcGVy
dHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRBbGxvd01lZGlhQ29udGVudFR5cGVzUmVxdWlyaW5n
SGFyZHdhcmVTdXBwb3J0QXNGYWxsYmFjazopIEJPT0wgX2FsbG93TWVkaWFDb250ZW50VHlwZXNS
ZXF1aXJpbmdIYXJkd2FyZVN1cHBvcnRBc0ZhbGxiYWNrIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4
KDEwLjEzKSwgaW9zKDExLjApKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5LCBzZXR0ZXI9
X3NldEFkZGl0aW9uYWxBbGxvd2VkSW1hZ2VGb3JtYXRzOikgTlNBcnJheTxOU1N0cmluZyAqPiAq
X2FkZGl0aW9uYWxBbGxvd2VkSW1hZ2VGb3JtYXRzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdL
X01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogCiBAZW5kCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByZWZlcmVuY2VzLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByZWZlcmVuY2VzLmNwcAppbmRleCA0NGEwYTAyYjk4YmM2Y2IxYjEzMTJkZDZl
M2E1YmIyNGNmMzJkMWQ5Li45YWE3N2VjODM5NjU4NWI3MjgxMzdlNTEyNTM2NDMwNDI5MzExNTYz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcmVmZXJlbmNlcy5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJlZmVyZW5jZXMuY3BwCkBAIC0xMjAs
NiArMTIwLDEyIEBAIHZvaWQgV2ViUHJlZmVyZW5jZXM6OnVwZGF0ZVN0cmluZ1ZhbHVlRm9yS2V5
KGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIHZhCiAgICAgdXBkYXRlKCk7IC8vIEZJ
WE1FOiBPbmx5IHNlbmQgb3ZlciB0aGUgY2hhbmdlZCBrZXkgYW5kIHZhbHVlLgogfQogCit2b2lk
IFdlYlByZWZlcmVuY2VzOjp1cGRhdGVTdHJpbmdsaXN0VmFsdWVGb3JLZXkoY29uc3QgU3RyaW5n
JiBrZXksIGNvbnN0IFN0cmluZ0xpc3QmIHZhbHVlKQoreworICAgIHBsYXRmb3JtVXBkYXRlU3Ry
aW5nbGlzdFZhbHVlRm9yS2V5KGtleSwgdmFsdWUpOworICAgIHVwZGF0ZSgpOyAvLyBGSVhNRTog
T25seSBzZW5kIG92ZXIgdGhlIGNoYW5nZWQga2V5IGFuZCB2YWx1ZS4KK30KKwogdm9pZCBXZWJQ
cmVmZXJlbmNlczo6dXBkYXRlQm9vbFZhbHVlRm9yS2V5KGNvbnN0IFN0cmluZyYga2V5LCBib29s
IHZhbHVlKQogewogICAgIGlmIChrZXkgPT0gV2ViUHJlZmVyZW5jZXNLZXk6OnByaXZhdGVCcm93
c2luZ0VuYWJsZWRLZXkoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJlZmVyZW5jZXMuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByZWZlcmVuY2Vz
LmgKaW5kZXggYzRhZDQ2ZWU5OTMwYjg1MzlhMjhiYWIwZTU4ZmQ4Y2UwOGQ1YmRiNi4uYmQ2OGIx
N2VhNjA5YzY3OTIzYjAyZjY4MmEwYWI0YTRhZDQ2NDI1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJlZmVyZW5jZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQcmVmZXJlbmNlcy5oCkBAIC04Nyw2ICs4Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCB1cGRhdGUoKTsKIAogICAgIHZvaWQgdXBkYXRlU3RyaW5nVmFsdWVGb3JLZXkoY29uc3QgU3Ry
aW5nJiBrZXksIGNvbnN0IFN0cmluZyYgdmFsdWUpOworICAgIHZvaWQgdXBkYXRlU3RyaW5nbGlz
dFZhbHVlRm9yS2V5KGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmdMaXN0JiB2YWx1ZSk7
CiAgICAgdm9pZCB1cGRhdGVCb29sVmFsdWVGb3JLZXkoY29uc3QgU3RyaW5nJiBrZXksIGJvb2wg
dmFsdWUpOwogICAgIHZvaWQgdXBkYXRlQm9vbFZhbHVlRm9ySW50ZXJuYWxEZWJ1Z0ZlYXR1cmVL
ZXkoY29uc3QgU3RyaW5nJiBrZXksIGJvb2wgdmFsdWUpOwogICAgIHZvaWQgdXBkYXRlQm9vbFZh
bHVlRm9yRXhwZXJpbWVudGFsRmVhdHVyZUtleShjb25zdCBTdHJpbmcmIGtleSwgYm9vbCB2YWx1
ZSk7CkBAIC05NCw2ICs5NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1cGRhdGVEb3VibGVWYWx1
ZUZvcktleShjb25zdCBTdHJpbmcmIGtleSwgZG91YmxlIHZhbHVlKTsKICAgICB2b2lkIHVwZGF0
ZUZsb2F0VmFsdWVGb3JLZXkoY29uc3QgU3RyaW5nJiBrZXksIGZsb2F0IHZhbHVlKTsKICAgICB2
b2lkIHBsYXRmb3JtVXBkYXRlU3RyaW5nVmFsdWVGb3JLZXkoY29uc3QgU3RyaW5nJiBrZXksIGNv
bnN0IFN0cmluZyYgdmFsdWUpOworICAgIHZvaWQgcGxhdGZvcm1VcGRhdGVTdHJpbmdsaXN0VmFs
dWVGb3JLZXkoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZ0xpc3QmIHZhbHVlKTsKICAg
ICB2b2lkIHBsYXRmb3JtVXBkYXRlQm9vbFZhbHVlRm9yS2V5KGNvbnN0IFN0cmluZyYga2V5LCBi
b29sIHZhbHVlKTsKICAgICB2b2lkIHBsYXRmb3JtVXBkYXRlVUludDMyVmFsdWVGb3JLZXkoY29u
c3QgU3RyaW5nJiBrZXksIHVpbnQzMl90IHZhbHVlKTsKICAgICB2b2lkIHBsYXRmb3JtVXBkYXRl
RG91YmxlVmFsdWVGb3JLZXkoY29uc3QgU3RyaW5nJiBrZXksIGRvdWJsZSB2YWx1ZSk7CkBAIC0x
MDUsNiArMTA3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlZ2lzdGVyRGVmYXVsdFVJbnQzMlZh
bHVlRm9yS2V5KGNvbnN0IFN0cmluZyYsIHVpbnQzMl90KTsKIAogICAgIGJvb2wgcGxhdGZvcm1H
ZXRTdHJpbmdVc2VyVmFsdWVGb3JLZXkoY29uc3QgU3RyaW5nJiBrZXksIFN0cmluZyYgdXNlclZh
bHVlKTsKKyAgICBib29sIHBsYXRmb3JtR2V0U3RyaW5nbGlzdFVzZXJWYWx1ZUZvcktleShjb25z
dCBTdHJpbmcmIGtleSwgU3RyaW5nTGlzdCYgdXNlclZhbHVlKTsKICAgICBib29sIHBsYXRmb3Jt
R2V0Qm9vbFVzZXJWYWx1ZUZvcktleShjb25zdCBTdHJpbmcmLCBib29sJik7CiAgICAgYm9vbCBw
bGF0Zm9ybUdldFVJbnQzMlVzZXJWYWx1ZUZvcktleShjb25zdCBTdHJpbmcmLCB1aW50MzJfdCYp
OwogICAgIGJvb2wgcGxhdGZvcm1HZXREb3VibGVVc2VyVmFsdWVGb3JLZXkoY29uc3QgU3RyaW5n
JiwgZG91YmxlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2Vi
UHJlZmVyZW5jZXNNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUHJlZmVy
ZW5jZXNNYWMubW0KaW5kZXggYWJlMjk1Y2MwYjRmZjdhZjk4NmMwMmU0MTI1YjIyNWU3M2M0Y2Fl
NC4uYjNhYzhlMWQ3MzI4YzUxZDVhZjZkYTllMGJkODA2ZjI1NWEzY2JlNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlByZWZlcmVuY2VzTWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQcmVmZXJlbmNlc01hYy5tbQpAQCAtNTMsNiAr
NTMsMjEgQEAgYm9vbCBXZWJQcmVmZXJlbmNlczo6cGxhdGZvcm1HZXRTdHJpbmdVc2VyVmFsdWVG
b3JLZXkoY29uc3QgU3RyaW5nJiBrZXksIFN0cmluZyYKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAor
Ym9vbCBXZWJQcmVmZXJlbmNlczo6cGxhdGZvcm1HZXRTdHJpbmdsaXN0VXNlclZhbHVlRm9yS2V5
KGNvbnN0IFN0cmluZyYga2V5LCBTdHJpbmdMaXN0JiB1c2VyVmFsdWUpCit7CisgICAgaWYgKCFt
X2lkZW50aWZpZXIpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBpZCBvYmplY3Qg
PSBbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSBvYmplY3RGb3JLZXk6bWFr
ZUtleShtX2lkZW50aWZpZXIsIG1fa2V5UHJlZml4LCBrZXkpXTsKKyAgICBpZiAoIW9iamVjdCkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghW29iamVjdCBpc0tpbmRPZkNsYXNzOltO
U0FycmF5PE5TU3RyaW5nICo+IGNsYXNzXV0pCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAK
KyAgICB1c2VyVmFsdWUgPSB3ZWJDb3JlU3RyaW5nTGlzdEZyb21Oc1N0cmluZ0FycmF5KChOU0Fy
cmF5PE5TU3RyaW5nICo+ICopb2JqZWN0KTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogYm9vbCBX
ZWJQcmVmZXJlbmNlczo6cGxhdGZvcm1HZXRCb29sVXNlclZhbHVlRm9yS2V5KGNvbnN0IFN0cmlu
ZyYga2V5LCBib29sJiB1c2VyVmFsdWUpCiB7CiAgICAgaWYgKCFtX2lkZW50aWZpZXIpCkBAIC0x
NjYsNiArMTgxLDE0IEBAIHZvaWQgV2ViUHJlZmVyZW5jZXM6OnBsYXRmb3JtVXBkYXRlU3RyaW5n
VmFsdWVGb3JLZXkoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0CiAgICAgW1tOU1VzZXJEZWZh
dWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gc2V0T2JqZWN0Om5zU3RyaW5nRnJvbVdlYkNvcmVT
dHJpbmcodmFsdWUpIGZvcktleTptYWtlS2V5KG1faWRlbnRpZmllciwgbV9rZXlQcmVmaXgsIGtl
eSldOwogfQogCit2b2lkIFdlYlByZWZlcmVuY2VzOjpwbGF0Zm9ybVVwZGF0ZVN0cmluZ2xpc3RW
YWx1ZUZvcktleShjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nTGlzdCYgdmFsdWUpCit7
CisgICAgaWYgKCFtX2lkZW50aWZpZXIpCisgICAgICAgIHJldHVybjsKKworICAgIFtbTlNVc2Vy
RGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIHNldE9iamVjdDpuc1N0cmluZ0FycmF5RnJv
bVdlYkNvcmVTdHJpbmdMaXN0KHZhbHVlKSBmb3JLZXk6bWFrZUtleShtX2lkZW50aWZpZXIsIG1f
a2V5UHJlZml4LCBrZXkpXTsKK30KKwogdm9pZCBXZWJQcmVmZXJlbmNlczo6cGxhdGZvcm1VcGRh
dGVCb29sVmFsdWVGb3JLZXkoY29uc3QgU3RyaW5nJiBrZXksIGJvb2wgdmFsdWUpCiB7CiAgICAg
aWYgKCFtX2lkZW50aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCmluZGV4IGE0ZTQ2Y2I2MjBlMjgxZGUwYmRhODA0ZGQyNDZiODljY2YwMTgwZmUu
LmJmNmZjZDNkMTM4MjFmYzAwMWNiNjdhOTU2YzJhNTFmNDM1MTQ5YTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0yNDcsNiArMjQ3LDcgQEAK
ICNpbmNsdWRlICJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLmgiCiAjaW5jbHVkZSAiV0tTdHJpbmdD
Ri5oIgogI2luY2x1ZGUgPFdlYkNvcmUvTGVnYWN5V2ViQXJjaGl2ZS5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvVVRJUmVnaXN0cnkuaD4KICNpbmNsdWRlIDx3dGYvTWFjaFNlbmRSaWdodC5oPgogI2Vu
ZGlmCiAKQEAgLTMyMjQsNiArMzIyNSw3IEBAIHZvaWQgV2ViUGFnZTo6dXBkYXRlUHJlZmVyZW5j
ZXMoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUpCiAKICNpZiBQTEFURk9STShDT0NP
QSkKICAgICBtX3BkZlBsdWdpbkVuYWJsZWQgPSBzdG9yZS5nZXRCb29sVmFsdWVGb3JLZXkoV2Vi
UHJlZmVyZW5jZXNLZXk6OnBkZlBsdWdpbkVuYWJsZWRLZXkoKSk7CisgICAgV2ViQ29yZTo6c2V0
QWRkaXRpb25hbEFsbG93ZWRJbWFnZUZvcm1hdHMoc3RvcmUuZ2V0U3RyaW5nbGlzdFZhbHVlRm9y
S2V5KFdlYlByZWZlcmVuY2VzS2V5OjphZGRpdGlvbmFsQWxsb3dlZEltYWdlRm9ybWF0c0tleSgp
KSk7CiAjZW5kaWYKICNpZiBFTkFCTEUoUEFZTUVOVF9SRVFVRVNUKQogICAgIHNldHRpbmdzLnNl
dFBheW1lbnRSZXF1ZXN0RW5hYmxlZChzdG9yZS5nZXRCb29sVmFsdWVGb3JLZXkoV2ViUHJlZmVy
ZW5jZXNLZXk6OmFwcGxlUGF5RW5hYmxlZEtleSgpKSk7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFu
Z2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYzM5MzU0NmI4MDVmNWExZTJkMjNhOWRkZDE1
MzIzNDEzZjMzM2ZjOC4uODIzMWVmZTI5YTdkMjEyZDg0ODQ0NDMzZTYyNjY3N2QxNmUzZmY0YSAx
MDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDIxIEBACisyMDE4LTEwLTE0ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBh
cHBsZS5jb20+CisKKyAgICAgICAgQWRkIGFuIFNQSSB0byBhbGxvdyBXZWJWaWV3IGNsaWVudHMg
dG8gYWRkIGFkZGl0aW9uYWwgc3VwcG9ydGVkIGltYWdlIGZvcm1hdHMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDQ1NAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Qgb3BlbmluZyBhIFRHQSBpbWFn
ZSBpbiBXZWJWaWV3IHdoaWNoIGlzIG5vdCBhbGxvd2VkIGJ5IGRlZmF1bHQuIFRoZQorICAgICAg
ICBUR0EgZm9ybWF0IHdpbGwgYmUgYWxsb3dlZCB0aHJvdWdoIFdLV2ViVmlld0NvbmZpZ3VyYXRp
b24uCisKKyAgICAgICAgVGhlIFRHQSBpbWFnZSBleHRlbnNpb24gd2FzIGNoYW5nZWQgdG8gUE5H
IGJlY2F1c2UgV2ViS2l0IHdvbid0IGFjY2VwY3QKKyAgICAgICAgYSBmaWxlIHdpdGggVEdBIGV4
dGVuc2lvbiBhcyBhbiBJbWFnZURvY3VtZW50LgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9BZGRpdGlvbmFsQWxsb3dlZEltYWdlRm9ybWF0cy5t
bTogQWRkZWQuCisgICAgICAgIChURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL3RnYS1pbWFnZS5wbmc6IEFkZGVkLgorCiAyMDE4LTEwLTExICBZb3Vlbm4g
RmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBJT1MgMTIgLSBTZXJ2aWNlIHdv
cmtlciBjYWNoZSBub3Qgc2hhcmVkIHdoZW4gYWRkZWQgdG8gaG9tZXNjcmVlbgpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCBhNDQyMzJmNTU0MzgwNjU0YWU2ZWM3MDU5MDkwNjlhZTQyNjU0ZTVj
Li41YzVjNWRhZjYwNTliZWQzN2M2ZTQwNzEyNjQyMDgxN2I4ODYxOGFmIDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtMjQwLDYgKzI0MCw4IEBACiAJCTUzNjc3MDM2MUNDODFCNjEwMEQ0MjVC
MSAvKiBXZWJTY3JpcHRPYmplY3REZXNjcmlwdGlvbi5odG1sIGluIENvcHkgUmVzb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzNjc3MDM1MUNDODEyRjkwMEQ0MjVC
MSAvKiBXZWJTY3JpcHRPYmplY3REZXNjcmlwdGlvbi5odG1sICovOyB9OwogCQk1M0VDMjU0MTFF
OTZGRDg3MDAwODMxQjkgLyogUHJpb3JpdHlRdWV1ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1M0VDMjUzRjFFOTZCQzgwMDAwODMxQjkgLyogUHJp
b3JpdHlRdWV1ZS5jcHAgKi87IH07CiAJCTU1MjI2QTJGMUVCQTQ0QjkwMEMzNkFEMCAvKiBsYXJn
ZS1yZWQtc3F1YXJlLWltYWdlLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTUyMjZBMkUxRUI5NjlCNjAwQzM2QUQwIC8qIGxhcmdlLXJl
ZC1zcXVhcmUtaW1hZ2UuaHRtbCAqLzsgfTsKKwkJNTU1ODQ4MUMyMTcxMzE1NzAwRkI3RkZGIC8q
IEFkZGl0aW9uYWxBbGxvd2VkSW1hZ2VGb3JtYXRzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTU1ODQ4MUIyMTcxMzE1NjAwRkI3RkZGIC8qIEFkZGl0
aW9uYWxBbGxvd2VkSW1hZ2VGb3JtYXRzLm1tICovOyB9OworCQk1NTU4NDgyNTIxNzE4Q0RBMDBG
QjdGRkYgLyogdGdhLWltYWdlLnBuZyBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1NTU4NDgyMTIxNzE1QTdFMDBGQjdGRkYgLyogdGdhLWltYWdl
LnBuZyAqLzsgfTsKIAkJNTU5N0Y4MzYxRDk1OTZDODAwNjZCQzIxIC8qIFN5bmNocm9uaXplZEZp
eGVkUXVldWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTU5N0Y4MzQxRDk1OTZDODAwNjZCQzIxIC8qIFN5bmNocm9uaXplZEZpeGVkUXVldWUuY3Bw
ICovOyB9OwogCQk1NzE0RUNCOTFDQThCNUIwMDAwNTFBQzggLyogRG93bmxvYWRSZXF1ZXN0T3Jp
Z2luYWxVUkwuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1NzE0RUNCODFDQThCNTg4MDAwNTFBQzggLyogRG93bmxvYWRSZXF1ZXN0T3Jp
Z2luYWxVUkwuaHRtbCAqLzsgfTsKIAkJNTcxNEVDQkIxQ0E4QkZFNDAwMDUxQUM4IC8qIERvd25s
b2FkUmVxdWVzdE9yaWdpbmFsVVJMRnJhbWUuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzE0RUNCQTFDQThCRkQxMDAwNTFBQzggLyog
RG93bmxvYWRSZXF1ZXN0T3JpZ2luYWxVUkxGcmFtZS5odG1sICovOyB9OwpAQCAtMTE5OCw2ICsx
MjAwLDcgQEAKIAkJCQlGNENENzRDNjIwRkRBQ0ZBMDBERTM3OTQgLyogdGV4dC13aXRoLWFzeW5j
LXNjcmlwdC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCUY0NEM3QTA1MjBGQUFFM0Mw
MDE0NDc4QyAvKiB0ZXh0LXdpdGgtZGVmZXJyZWQtc2NyaXB0Lmh0bWwgaW4gQ29weSBSZXNvdXJj
ZXMgKi8sCiAJCQkJRjQxQUI5QUExRUY0Njk2QjAwODNGQTA4IC8qIHRleHRhcmVhLXRvLWlucHV0
Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCisJCQkJNTU1ODQ4MjUyMTcxOENEQTAwRkI3RkZG
IC8qIHRnYS1pbWFnZS5wbmcgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJRjQ0NTFDNzYxRUI4
RkQ4OTAwMjBDNURBIC8qIHR3by1wYXJhZ3JhcGgtY29udGVudGVkaXRhYmxlLmh0bWwgaW4gQ29w
eSBSZXNvdXJjZXMgKi8sCiAJCQkJQzU0MEY3ODQxNTJFNUE5QTAwQTQwQzhDIC8qIHZlcmJvc2VN
YXJrdXAuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQlDRDU3Nzc5RDIxMUNFOTFGMDAx
QjM3MUUgLyogdmlkZW8td2l0aC1hdWRpby1hbmQtd2ViLWF1ZGlvLmh0bWwgaW4gQ29weSBSZXNv
dXJjZXMgKi8sCkBAIC0xNDM0LDcgKzE0MzcsNiBAQAogCQkzN0UxMDY0QjE2OTc2N0Y3MDBCNzhC
RDAgLyogRE9NSFRNTFRhYmxlQ2VsbEVsZW1lbnRDZWxsQWJvdmUuaHRtbCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQuaHRtbDsgcGF0aCA9IERPTUhUTUxUYWJsZUNlbGxFbGVtZW50Q2VsbEFib3ZlLmh0bWw7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3RTM4QzMzMTY5QjdEMDEwMDg0QzI4QyAvKiBX
ZWJWaWV3RGlkUmVtb3ZlRnJhbWVGcm9tSGllcmFyY2h5Lm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViVmlld0RpZFJlbW92ZUZyYW1lRnJvbUhpZXJhcmNoeS5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzdFN0RENjMxRUEwNkZGMjAwOUIzOTZE
IC8qIEFkZGl0aW9uYWxSZWFkQWNjZXNzQWxsb3dlZFVSTHMubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBZGRpdGlvbmFsUmVhZEFjY2Vzc0FsbG93ZWRVUkxzLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzN0U3REQ2NTFFQTA3MTVCMDA5QjM5NkQg
LyogQWRkaXRpb25hbFJlYWRBY2Nlc3NBbGxvd2VkVVJMc1Byb3RvY29sLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFkZGl0aW9uYWxSZWFkQWNjZXNzQWxsb3dlZFVSTHNQcm90
b2NvbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzN0U3REQ2NjFFQTA3MUYzMDA5
QjM5NkQgLyogQWRkaXRpb25hbFJlYWRBY2Nlc3NBbGxvd2VkVVJMc1BsdWdpbi5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEFkZGl0aW9uYWxSZWFkQWNjZXNzQWxs
b3dlZFVSTHNQbHVnaW4ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3RkI3Mjk1
MURCMkU4MkYwMEU0MUJFNCAvKiBDb250ZXh0TWVudURlZmF1bHRJdGVtc0hhdmVUYWdzLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQ29udGV4dE1lbnVEZWZhdWx0
SXRlbXNIYXZlVGFncy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJM0YxQjUyNjgx
RDNENzEyOTAwOEQ2MEM0IC8qIEZ1bGxzY3JlZW5MYXlvdXRDb25zdHJhaW50cy5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEZ1bGxzY3JlZW5MYXlvdXRDb25zdHJh
aW50cy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE1NDYsNiArMTU0OCw5IEBA
CiAJCTUzNjc3MDM1MUNDODEyRjkwMEQ0MjVCMSAvKiBXZWJTY3JpcHRPYmplY3REZXNjcmlwdGlv
bi5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gV2ViU2NyaXB0T2JqZWN0RGVzY3Jp
cHRpb24uaHRtbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTNFQzI1M0YxRTk2QkM4
MDAwMDgzMUI5IC8qIFByaW9yaXR5UXVldWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gUHJpb3JpdHlRdWV1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTU1MjI2QTJFMUVCOTY5QjYwMEMzNkFEMCAvKiBsYXJnZS1yZWQtc3F1YXJlLWltYWdlLmh0
bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAibGFyZ2UtcmVkLXNxdWFyZS1pbWFnZS5o
dG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTU1ODQ4MUIyMTcxMzE1NjAwRkI3
RkZGIC8qIEFkZGl0aW9uYWxBbGxvd2VkSW1hZ2VGb3JtYXRzLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gQWRkaXRpb25hbEFsbG93ZWRJbWFnZUZvcm1hdHMubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU1NTg0ODFGMjE3MTM1MDgwMEZCN0ZGRiAv
KiBBZGRpdGlvbmFsUmVhZEFjY2Vzc0FsbG93ZWRVUkxzUHJvdG9jb2wuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQWRkaXRpb25hbFJlYWRBY2Nlc3NBbGxvd2VkVVJMc1Byb3Rv
Y29sLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU1NTg0ODIxMjE3MTVBN0UwMEZC
N0ZGRiAvKiB0Z2EtaW1hZ2UucG5nICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gaW1hZ2UucG5nOyBwYXRoID0gInRnYS1pbWFnZS5wbmciOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1NTk3RjgzNDFEOTU5NkM4MDA2NkJDMjEgLyogU3luY2hy
b25pemVkRml4ZWRRdWV1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBTeW5jaHJvbml6ZWRGaXhlZFF1ZXVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTcxNEVDQjgxQ0E4QjU4ODAwMDUxQUM4IC8qIERvd25sb2FkUmVxdWVzdE9yaWdpbmFsVVJM
Lmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSBEb3dubG9hZFJlcXVlc3RPcmlnaW5h
bFVSTC5odG1sOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NzE0RUNCQTFDQThCRkQx
MDAwNTFBQzggLyogRG93bmxvYWRSZXF1ZXN0T3JpZ2luYWxVUkxGcmFtZS5odG1sICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dC5odG1sOyBwYXRoID0gRG93bmxvYWRSZXF1ZXN0T3JpZ2luYWxVUkxGcmFtZS5odG1s
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjMxMCw5ICsyMzE1LDEwIEBACiAJCQkJ
QTE2RjY2QjgxQzQwRTlFMTAwQkQ0RDI0IC8qIFJlc291cmNlcyAqLywKIAkJCQk1Q0VBQjVERjFG
QTkzN0NCMDBBNzdGQUEgLyogX1dLSW5wdXREZWxlZ2F0ZS5tbSAqLywKIAkJCQk3Q0VGQTk2NDFB
QzBCOUUyMDBCOTEwRkQgLyogX1dLVXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZS5tbSAqLywKKwkJ
CQk1NTU4NDgxQjIxNzEzMTU2MDBGQjdGRkYgLyogQWRkaXRpb25hbEFsbG93ZWRJbWFnZUZvcm1h
dHMubW0gKi8sCiAJCQkJMzdFN0RENjMxRUEwNkZGMjAwOUIzOTZEIC8qIEFkZGl0aW9uYWxSZWFk
QWNjZXNzQWxsb3dlZFVSTHMubW0gKi8sCiAJCQkJMzdFN0RENjYxRUEwNzFGMzAwOUIzOTZEIC8q
IEFkZGl0aW9uYWxSZWFkQWNjZXNzQWxsb3dlZFVSTHNQbHVnaW4ubW0gKi8sCi0JCQkJMzdFN0RE
NjUxRUEwNzE1QjAwOUIzOTZEIC8qIEFkZGl0aW9uYWxSZWFkQWNjZXNzQWxsb3dlZFVSTHNQcm90
b2NvbC5oICovLAorCQkJCTU1NTg0ODFGMjE3MTM1MDgwMEZCN0ZGRiAvKiBBZGRpdGlvbmFsUmVh
ZEFjY2Vzc0FsbG93ZWRVUkxzUHJvdG9jb2wuaCAqLywKIAkJCQlBMURGNzQzMDFDNDFCNjU4MDBB
MkY0RDAgLyogQWx3YXlzUmV2YWxpZGF0ZWRVUkxTY2hlbWVzLm1tICovLAogCQkJCTJERTcxQUZE
MUQ0OUMwQkQwMDkwNDA5NCAvKiBBbmltYXRlZFJlc2l6ZS5tbSAqLywKIAkJCQk2M0Y2NjgyMDFG
OTdDM0FBMDAzMkVFNTEgLyogQXBwbGljYXRpb25NYW5pZmVzdC5tbSAqLywKQEAgLTI4MDQsNiAr
MjgxMCw3IEBACiAJCQkJRjRDRDc0QzUyMEZEQUNGNTAwREUzNzk0IC8qIHRleHQtd2l0aC1hc3lu
Yy1zY3JpcHQuaHRtbCAqLywKIAkJCQlGNDRDN0EwNDIwRkFBRTMyMDAxNDQ3OEMgLyogdGV4dC13
aXRoLWRlZmVycmVkLXNjcmlwdC5odG1sICovLAogCQkJCUY0MUFCOTk1MUVGNDY5MkMwMDgzRkEw
OCAvKiB0ZXh0YXJlYS10by1pbnB1dC5odG1sICovLAorCQkJCTU1NTg0ODIxMjE3MTVBN0UwMEZC
N0ZGRiAvKiB0Z2EtaW1hZ2UucG5nICovLAogCQkJCUY0NDUxQzc1MUVCOEZEN0MwMDIwQzVEQSAv
KiB0d28tcGFyYWdyYXBoLWNvbnRlbnRlZGl0YWJsZS5odG1sICovLAogCQkJCUNENTc3NzlCMjEx
Q0U2Q0UwMDFCMzcxRSAvKiB2aWRlby13aXRoLWF1ZGlvLWFuZC13ZWItYXVkaW8uaHRtbCAqLywK
IAkJCQlDRDU3Nzc5ODIxMUNERThGMDAxQjM3MUUgLyogd2ViLWF1ZGlvLW9ubHkuaHRtbCAqLywK
QEAgLTM3MTMsNiArMzcyMCw3IEBACiAJCQkJMkUyMDVCQTQxRjUyNzc0NjAwNTk1MkREIC8qIEFj
Y2Vzc2liaWxpdHlUZXN0c0lPUy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTlCRDUxMTFDMUZFOEUx
MTYwMEQyQjYzMCAvKiBBY2Nlc3NpbmdQYXN0ZWRJbWFnZS5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CUY0NUI2M0ZFMUYxOUQ0MTAwMDlEMzhCOSAvKiBBY3Rpb25TaGVldFRlc3RzLm1tIGluIFNvdXJj
ZXMgKi8sCisJCQkJNTU1ODQ4MUMyMTcxMzE1NzAwRkI3RkZGIC8qIEFkZGl0aW9uYWxBbGxvd2Vk
SW1hZ2VGb3JtYXRzLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMzdFN0RENjQxRUEwNkZGMjAwOUIz
OTZEIC8qIEFkZGl0aW9uYWxSZWFkQWNjZXNzQWxsb3dlZFVSTHMubW0gaW4gU291cmNlcyAqLywK
IAkJCQk3QTkwOUE3RDFEODc3NDgwMDA3RTEwRjggLyogQWZmaW5lVHJhbnNmb3JtLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUExREY3NDMyMUM0MUI2NTgwMEEyRjREMCAvKiBBbHdheXNSZXZhbGlk
YXRlZFVSTFNjaGVtZXMubW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQWRkaXRpb25hbEFsbG93ZWRJbWFnZUZvcm1hdHMu
bW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0FkZGl0aW9uYWxBbGxv
d2VkSW1hZ2VGb3JtYXRzLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmViZGNiNzVhY2JhY2I5OTM2MjBmNjc5ZTgx
NDNjMzYxZjJkYzE5Y2IKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL0FkZGl0aW9uYWxBbGxvd2VkSW1hZ2VGb3JtYXRzLm1tCkBAIC0wLDAg
KzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgPFdlYktp
dC9XS0ZvdW5kYXRpb24uaD4KKworI2lmIFdLX0FQSV9FTkFCTEVEICYmIFBMQVRGT1JNKENPQ09B
KQorCisjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorI2ltcG9ydCAiVGVzdE5hdmlnYXRp
b25EZWxlZ2F0ZS5oIgorI2ltcG9ydCAiV0tXZWJWaWV3Q29uZmlndXJhdGlvbkV4dHJhcy5oIgor
I2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmg+CisjaW1wb3J0
IDx3dGYvUmV0YWluUHRyLmg+CisKK1RFU1QoV2ViS2l0LCBBZGRpdGlvbmFsQWxsb3dlZEltYWdl
Rm9ybWF0cykKK3sKKyAgICBSZXRhaW5QdHI8V0tXZWJWaWV3Q29uZmlndXJhdGlvbj4gY29uZmln
dXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7
CisgICAgW2NvbmZpZ3VyYXRpb24gX3NldEFkZGl0aW9uYWxBbGxvd2VkSW1hZ2VGb3JtYXRzOkBb
QCJjb20udHJ1ZXZpc2lvbi50Z2EtaW1hZ2UiXV07CisKKyAgICBSZXRhaW5QdHI8V0tXZWJWaWV3
PiB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01h
a2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCld
KTsKKworICAgIFJldGFpblB0cjxOU1VSTD4gdGVzdFVSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRs
ZV0gVVJMRm9yUmVzb3VyY2U6QCJ0Z2EtaW1hZ2UiIHdpdGhFeHRlbnNpb246QCJwbmciIHN1YmRp
cmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CisgICAgW3dlYlZpZXcgbG9hZFJl
cXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDp0ZXN0VVJMLmdldCgpXV07CisgICAg
W3dlYlZpZXcgX3Rlc3Rfd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb25dOworCisgICAgX19ibG9j
ayBib29sIGlzRG9uZSA9IGZhbHNlOworICAgIFt3ZWJWaWV3IF9kb0FmdGVyTmV4dFByZXNlbnRh
dGlvblVwZGF0ZTpeeworICAgICAgICBbd2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6QCJbZG9j
dW1lbnQucXVlcnlTZWxlY3RvcignaW1nJykud2lkdGhdIiBjb21wbGV0aW9uSGFuZGxlcjpeKGlk
IHZhbHVlLCBOU0Vycm9yICplcnJvcikgeworICAgICAgICAgICAgQ0dGbG9hdCB3aWR0aCA9IFtb
dmFsdWUgb2JqZWN0QXRJbmRleDowXSBmbG9hdFZhbHVlXTsKKyAgICAgICAgICAgIEVYUEVDVF9F
USh3aWR0aCwgMTAwKTsKKyAgICAgICAgICAgIGlzRG9uZSA9IHRydWU7CisgICAgICAgIH1dOwor
ICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKK30KKworI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL3Rn
YS1pbWFnZS5wbmcgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL3RnYS1p
bWFnZS5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMDY5NThiYTBjNDQxMDYwNTg4ODRhM2YyNGEyM2VlZDE4Mjhi
MTc0YgpHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgNTE4CmNjbVpRejs5YEoqNm93UUExJnpsSDRG
Q1UrNStmPU0wQ3ttQzRnZGZFCgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>352282</attachid>
            <date>2018-10-14 16:02:35 -0700</date>
            <delta_ts>2018-10-14 23:29:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190454-20181014160235.patch</filename>
            <type>text/plain</type>
            <size>35140</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3MDY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjlkY2FiMDkxMzA1OTE1
MDVmYjg5OTEyZmY4ZDE2YTZjMDg5NzZjOS4uZDgxYjVmZTA4MDNlNThiZjgxYzQwNzNiODgzOWY5
MWIzNjEzNzc3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDE4LTEwLTE0ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGFu
IFNQSSB0byBhbGxvdyBXZWJWaWV3IGNsaWVudHMgdG8gYWRkIGFkZGl0aW9uYWwgc3VwcG9ydGVk
IGltYWdlIGZvcm1hdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE5MDQ1NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFkZCBhbiBTUEkgdG8gYWxsb3cgYWRkaXRpb25hbCBzdXBwb3J0ZWQgaW1hZ2UgZm9y
bWF0cyBpbiBXZWJWaWV3LiBUaGVzZQorICAgICAgICBhZGRpdGlvbmFsIGZvcm1hdHMgY2FuIGJl
IHNldCBpbiB0aGUgV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhcyBhbiBOU0FycmF5CisgICAgICAg
IG9mIE5TdHJpbmdzLiBFYWNoIHN0cmluZyByZXByZXNlbnRzIHRoZSBVVEkgb2YgdGhlIGFkZGl0
aW9uYWwgYWxsb3dlZCAKKyAgICAgICAgaW1hZ2UgZm9ybWF0LgorCisgICAgICAgICogcGxhdGZv
cm0vTUlNRVR5cGVSZWdpc3RyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjppbml0aWFsaXplU3Vw
cG9ydGVkSW1hZ2VNSU1FVHlwZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0lt
YWdlRGVjb2RlckNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckNHOjplbmNv
ZGVkRGF0YVN0YXR1cyBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvVVRJ
UmVnaXN0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZGVmYXVsdEFsbG93ZWRJbWFnZUZvcm1h
dHMpOiBUaGlzIGlzIHRoZSBXZWJLaXQgZGVmYXVsdCBsaXN0IG9mCisgICAgICAgIHN1cHBvcnRl
ZCBpbWFnZSBmb3JtYXRzLgorICAgICAgICAoV2ViQ29yZTo6YWRkaXRpb25hbEFsbG93ZWRJbWFn
ZUZvcm1hdHMpOgorICAgICAgICAoV2ViQ29yZTo6c2V0QWRkaXRpb25hbEFsbG93ZWRJbWFnZUZv
cm1hdHMpOgorICAgICAgICAoV2ViQ29yZTo6aXNBbGxvd2VkSW1hZ2VGb3JtYXQpOiBUaGlzIGZ1
bmN0aW9uIGNoZWNrcyB0aGUgZGVmYXVsdCBsaXN0IGFuZAorICAgICAgICB0aGUgYWRkaXRpb25h
bCBsaXN0IHRvIGRlY2lkZSB3aGV0aGVyIHRoZSBpbWFnZSBmb3JtYXQgaXMgc3VwcG9ydGVkLgor
ICAgICAgICAoV2ViQ29yZTo6YWxsb3dlZEltYWdlVVRJcyk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjppc0FsbG93ZWRJbWFnZVVUSSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvVVRJUmVnaXN0cnkuaDoKKwogMjAxOC0xMC0xMSAgRG9uIE9sbXN0ZWFkICA8
ZG9uLm9sbXN0ZWFkQHNvbnkuY29tPgogCiAgICAgICAgIEFkZCBIb3VkaW5pIHNwZWNzIHRvIGZl
YXR1cmVzLmpzb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNTY2MTIxNGJlMzAwNTIyYzg2ZGVkOGI1MWRhYWNlMjg3
NmZhM2M1ZC4uODNiMTNkYzhlNDZjNjY3ZjE1ZWRjMGI1ZTdhMTNlM2JjZGZmZWEzZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwzOSBAQAorMjAxOC0xMC0xNCAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJv
dWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBhbiBTUEkgdG8gYWxsb3cgV2ViVmll
dyBjbGllbnRzIHRvIGFkZCBhZGRpdGlvbmFsIHN1cHBvcnRlZCBpbWFnZSBmb3JtYXRzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTA0NTQKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFBsYXRmb3JtL21h
Yy9TdHJpbmdVdGlsaXRpZXMuaDoKKyAgICAgICAgKiBQbGF0Zm9ybS9tYWMvU3RyaW5nVXRpbGl0
aWVzLm1tOgorICAgICAgICAoV2ViS2l0Ojp3ZWJDb3JlU3RyaW5nTGlzdEZyb21Oc1N0cmluZ0Fy
cmF5KToKKyAgICAgICAgKiBTaGFyZWQvV2ViUHJlZmVyZW5jZXMueWFtbDoKKyAgICAgICAgKiBT
aGFyZWQvV2ViUHJlZmVyZW5jZXNTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByZWZl
cmVuY2VzU3RvcmU6OnNldFN0cmluZ2xpc3RWYWx1ZUZvcktleSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlByZWZlcmVuY2VzU3RvcmU6OmdldFN0cmluZ2xpc3RWYWx1ZUZvcktleSBjb25zdCk6IEFk
ZCBzdXBwb3J0CisgICAgICAgIGZvciBzdG9yaW5nIGEgbGlzdCBvZiBzdHJpbmdzIGluIHRoZSBX
ZWJQcmVmZXJlbmNlc1N0b3JlLgorICAgICAgICAqIFNoYXJlZC9XZWJQcmVmZXJlbmNlc1N0b3Jl
Lmg6CisgICAgICAgICogU2hhcmVkL1dlYlByZWZlcmVuY2VzU3RvcmUuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9p
bml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb246XSk6IFNldCB0aGUgdmFsdWUgb2YgQWRkaXRpb25h
bEFsbG93ZWRJbWFnZUZvcm1hdHMKKyAgICAgICAgZnJvbSBXS1dlYlZpZXdDb25maWd1cmF0aW9u
IHRvIHRoZSBXZWJQcmVmZXJlbmNlcy4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlld0NvbmZpZ3VyYXRpb24ubW06CisgICAgICAgICgtW1dLV2ViVmlld0NvbmZpZ3VyYXRp
b24gY29weVdpdGhab25lOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF9h
ZGRpdGlvbmFsQWxsb3dlZEltYWdlRm9ybWF0c10pOgorICAgICAgICAoLVtXS1dlYlZpZXdDb25m
aWd1cmF0aW9uIF9zZXRBZGRpdGlvbmFsQWxsb3dlZEltYWdlRm9ybWF0czpdKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlByZWZlcmVuY2VzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJlZmVyZW5jZXM6OnVwZGF0ZVN0cmluZ2xpc3RWYWx1ZUZvcktleSk6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYlByZWZlcmVuY2VzLmg6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJQ
cmVmZXJlbmNlc01hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJlZmVyZW5jZXM6OnBsYXRm
b3JtR2V0U3RyaW5nbGlzdFVzZXJWYWx1ZUZvcktleSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBy
ZWZlcmVuY2VzOjpwbGF0Zm9ybVVwZGF0ZVN0cmluZ1ZhbHVlRm9yS2V5KToKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJlZmVyZW5jZXM6OnBsYXRmb3JtVXBkYXRlU3RyaW5nbGlzdFZhbHVlRm9yS2V5
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2U6OnVwZGF0ZVByZWZlcmVuY2VzKTogQ29weSB0aGUgdmFsdWUgb2YgQWRk
aXRpb25hbEFsbG93ZWRJbWFnZUZvcm1hdHMKKyAgICAgICAgZnJvbSBXZWJQcmVmZXJlbmNlcyB0
byB0aGUgV2ViQ29yZSBmdW5jdGlvbiBzZXRBZGRpdGlvbmFsQWxsb3dlZEltYWdlRm9ybWF0cygp
LgorCiAyMDE4LTEwLTExICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAg
ICAgICBJT1MgMTIgLSBTZXJ2aWNlIHdvcmtlciBjYWNoZSBub3Qgc2hhcmVkIHdoZW4gYWRkZWQg
dG8gaG9tZXNjcmVlbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5
cGVSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5
LmNwcAppbmRleCBmM2RkMTRmMDU1MDA4YTZjMzQyZTczYTJjZGNjN2YxMmM2MTMzMDg2Li5iNmFj
YTFiOTJiMTk1MjBjMTExZjVkMjIyYTkyYzNhMTE2YWI1ZGJjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcApAQCAtNzgsNyArNzgsNyBAQCBzdGF0aWMg
dm9pZCBpbml0aWFsaXplU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXMoKQogICAgIH0KIAogI2lmbmRl
ZiBOREVCVUcKLSAgICBmb3IgKGF1dG8mIHV0aSA6IGFsbG93ZWRJbWFnZVVUSXMoKSkgeworICAg
IGZvciAoYXV0byYgdXRpIDogZGVmYXVsdEFsbG93ZWRJbWFnZUZvcm1hdHMoKSkgewogICAgICAg
ICBhdXRvIG1pbWVUeXBlID0gTUlNRVR5cGVGb3JJbWFnZVNvdXJjZVR5cGUodXRpKTsKICAgICAg
ICAgaWYgKCFtaW1lVHlwZS5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIEFTU0VSVChzdXBwb3J0
ZWRJbWFnZU1JTUVUeXBlcy0+Y29udGFpbnMobWltZVR5cGUpKTsKQEAgLTg4LDcgKzg4LDcgQEAg
c3RhdGljIHZvaWQgaW5pdGlhbGl6ZVN1cHBvcnRlZEltYWdlTUlNRVR5cGVzKCkKIAogI2lmIFBM
QVRGT1JNKENPQ09BKQogICAgIGZvciAoYXV0byYgbWltZSA6ICpzdXBwb3J0ZWRJbWFnZU1JTUVU
eXBlcykKLSAgICAgICAgQVNTRVJUX1VOVVNFRChtaW1lLCBhbGxvd2VkSW1hZ2VVVElzKCkuY29u
dGFpbnMoVVRJRnJvbU1JTUVUeXBlKG1pbWUpKSk7CisgICAgICAgIEFTU0VSVF9VTlVTRUQobWlt
ZSwgZGVmYXVsdEFsbG93ZWRJbWFnZUZvcm1hdHMoKS5jb250YWlucyhVVElGcm9tTUlNRVR5cGUo
bWltZSkpKTsKICNlbmRpZgogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcAppbmRleCA4YjYxZTZjNzZmOTlj
MzYxNGQ0YTMwYmU2YTBmY2MxZDBjYzQyODE3Li5iNzgwMjE5ODdiY2IyZmQ0ODNmZTNjMjBkNjcz
N2FhNTNiYjUxNDc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9JbWFnZURlY29kZXJDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCkBAIC0xOTksNyArMTk5LDcgQEAgRW5jb2RlZERh
dGFTdGF0dXMgSW1hZ2VEZWNvZGVyQ0c6OmVuY29kZWREYXRhU3RhdHVzKCkgY29uc3QKICAgICAg
ICAgcmV0dXJuIEVuY29kZWREYXRhU3RhdHVzOjpFcnJvcjsKIAogICAgIGNhc2Uga0NHSW1hZ2VT
dGF0dXNJbmNvbXBsZXRlOiB7Ci0gICAgICAgIGlmICghaXNBbGxvd2VkSW1hZ2VVVEkodXRpKSkK
KyAgICAgICAgaWYgKCFpc0FsbG93ZWRJbWFnZUZvcm1hdCh1dGkpKQogICAgICAgICAgICAgcmV0
dXJuIEVuY29kZWREYXRhU3RhdHVzOjpFcnJvcjsKIAogICAgICAgICBSZXRhaW5QdHI8Q0ZEaWN0
aW9uYXJ5UmVmPiBpbWFnZTBQcm9wZXJ0aWVzID0gYWRvcHRDRihDR0ltYWdlU291cmNlQ29weVBy
b3BlcnRpZXNBdEluZGV4KG1fbmF0aXZlRGVjb2Rlci5nZXQoKSwgMCwgaW1hZ2VTb3VyY2VPcHRp
b25zKCkuZ2V0KCkpKTsKQEAgLTIxMyw3ICsyMTMsNyBAQCBFbmNvZGVkRGF0YVN0YXR1cyBJbWFn
ZURlY29kZXJDRzo6ZW5jb2RlZERhdGFTdGF0dXMoKSBjb25zdAogICAgIH0KIAogICAgIGNhc2Ug
a0NHSW1hZ2VTdGF0dXNDb21wbGV0ZToKLSAgICAgICAgaWYgKCFpc0FsbG93ZWRJbWFnZVVUSSh1
dGkpKQorICAgICAgICBpZiAoIWlzQWxsb3dlZEltYWdlRm9ybWF0KHV0aSkpCiAgICAgICAgICAg
ICByZXR1cm4gRW5jb2RlZERhdGFTdGF0dXM6OkVycm9yOwogCiAgICAgICAgIHJldHVybiBFbmNv
ZGVkRGF0YVN0YXR1czo6Q29tcGxldGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9VVElSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9VVElSZWdpc3RyeS5jcHAKaW5kZXggZDM0MjI0MzNlNTI5ZWUxMzc4ZmJj
YjQ4MjIwMTUyZjc0M2U4OWE1OS4uODk0NmU2YWIzMDBmZmJjN2VkNDgyNmM3M2JjYTkzZjEzMGQx
ZDVhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvVVRJ
UmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1VU
SVJlZ2lzdHJ5LmNwcApAQCAtMzgsMTAgKzM4LDEwIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotSGFzaFNldDxTdHJpbmc+JiBhbGxvd2VkSW1hZ2VVVElzKCkKK0hhc2hTZXQ8U3RyaW5nPiYg
ZGVmYXVsdEFsbG93ZWRJbWFnZUZvcm1hdHMoKQogewogICAgIC8vIENHIGF0IGxlYXN0IHN1cHBv
cnRzIHRoZSBmb2xsb3dpbmcgc3RhbmRhcmQgaW1hZ2UgdHlwZXM6Ci0gICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPEhhc2hTZXQ8U3RyaW5nPj4gc19hbGxvd2VkSW1hZ2VVVElzID0gc3RkOjppbml0
aWFsaXplcl9saXN0PFN0cmluZz4geworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0
PFN0cmluZz4+IGRlZmF1bHRBbGxvd2VkSW1hZ2VGb3JtYXRzID0gc3RkOjppbml0aWFsaXplcl9s
aXN0PFN0cmluZz4gewogICAgICAgICAiY29tLmNvbXB1c2VydmUuZ2lmIiwKICAgICAgICAgImNv
bS5taWNyb3NvZnQuYm1wIiwKICAgICAgICAgImNvbS5taWNyb3NvZnQuY3VyIiwKQEAgLTU5LDcg
KzU5LDcgQEAgSGFzaFNldDxTdHJpbmc+JiBhbGxvd2VkSW1hZ2VVVElzKCkKICAgICBpZiAoIWNo
ZWNrZWQpIHsKICAgICAgICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IHN5c3RlbUltYWdlVVRJcyA9
IGFkb3B0Q0YoQ0dJbWFnZVNvdXJjZUNvcHlUeXBlSWRlbnRpZmllcnMoKSk7CiAgICAgICAgIENG
SW5kZXggY291bnQgPSBDRkFycmF5R2V0Q291bnQoc3lzdGVtSW1hZ2VVVElzLmdldCgpKTsKLSAg
ICAgICAgZm9yIChhdXRvJiBpbWFnZVVUSSA6IHNfYWxsb3dlZEltYWdlVVRJcy5nZXQoKSkgewor
ICAgICAgICBmb3IgKGF1dG8mIGltYWdlVVRJIDogZGVmYXVsdEFsbG93ZWRJbWFnZUZvcm1hdHMu
Z2V0KCkpIHsKICAgICAgICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gc3RyaW5nID0gaW1h
Z2VVVEkuY3JlYXRlQ0ZTdHJpbmcoKTsKICAgICAgICAgICAgIEFTU0VSVChDRkFycmF5Q29udGFp
bnNWYWx1ZShzeXN0ZW1JbWFnZVVUSXMuZ2V0KCksIENGUmFuZ2VNYWtlKDAsIGNvdW50KSwgc3Ry
aW5nLmdldCgpKSk7CiAgICAgICAgIH0KQEAgLTY3LDEyICs2NywyMyBAQCBIYXNoU2V0PFN0cmlu
Zz4mIGFsbG93ZWRJbWFnZVVUSXMoKQogICAgIH0KICNlbmRpZgogCi0gICAgcmV0dXJuIHNfYWxs
b3dlZEltYWdlVVRJcy5nZXQoKTsKKyAgICByZXR1cm4gZGVmYXVsdEFsbG93ZWRJbWFnZUZvcm1h
dHM7CiB9CiAKLWJvb2wgaXNBbGxvd2VkSW1hZ2VVVEkoY29uc3QgU3RyaW5nJiBpbWFnZVVUSSkK
K3N0YXRpYyBWZWN0b3I8U3RyaW5nPiYgYWRkaXRpb25hbEFsbG93ZWRJbWFnZUZvcm1hdHMoKQog
ewotICAgIHJldHVybiAhaW1hZ2VVVEkuaXNFbXB0eSgpICYmIGFsbG93ZWRJbWFnZVVUSXMoKS5j
b250YWlucyhpbWFnZVVUSSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFZlY3RvcjxTdHJp
bmc+PiBhZGRpdGlvbmFsQWxsb3dlZEltYWdlRm9ybWF0czsKKyAgICByZXR1cm4gYWRkaXRpb25h
bEFsbG93ZWRJbWFnZUZvcm1hdHM7Cit9CisKK3ZvaWQgc2V0QWRkaXRpb25hbEFsbG93ZWRJbWFn
ZUZvcm1hdHMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHZhbHVlKQoreworICAgIGFkZGl0aW9uYWxB
bGxvd2VkSW1hZ2VGb3JtYXRzKCkgPSB2YWx1ZTsKK30KKworYm9vbCBpc0FsbG93ZWRJbWFnZUZv
cm1hdChjb25zdCBTdHJpbmcmIGltYWdlVVRJKQoreworICAgIHJldHVybiAhaW1hZ2VVVEkuaXNF
bXB0eSgpICYmIChkZWZhdWx0QWxsb3dlZEltYWdlRm9ybWF0cygpLmNvbnRhaW5zKGltYWdlVVRJ
KSB8fCBhZGRpdGlvbmFsQWxsb3dlZEltYWdlRm9ybWF0cygpLmNvbnRhaW5zKGltYWdlVVRJKSk7
CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L1VUSVJlZ2lzdHJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9VVElS
ZWdpc3RyeS5oCmluZGV4IDIyZjI2YWRiNTBjOWZlODYzZTAyNzJlYmZmYjEzNTNmY2YzNTRjNDUu
LjE0NjNhOWQyNmQwYzlmNWZkZmFiNzYwNzM2ZjE4NTMxNzllNDJjNTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1VUSVJlZ2lzdHJ5LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvVVRJUmVnaXN0cnkuaApAQCAtMzAsNyAr
MzAsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUhhc2hTZXQ8U3RyaW5nPiYgYWxsb3dl
ZEltYWdlVVRJcygpOwotYm9vbCBpc0FsbG93ZWRJbWFnZVVUSShjb25zdCBTdHJpbmcmKTsKK0hh
c2hTZXQ8U3RyaW5nPiYgZGVmYXVsdEFsbG93ZWRJbWFnZUZvcm1hdHMoKTsKK2Jvb2wgaXNBbGxv
d2VkSW1hZ2VGb3JtYXQoY29uc3QgU3RyaW5nJik7CitXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEFk
ZGl0aW9uYWxBbGxvd2VkSW1hZ2VGb3JtYXRzKGNvbnN0IFZlY3RvcjxTdHJpbmc+Jik7CiAKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vbWFjL1N0cmluZ1V0aWxpdGllcy5o
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9tYWMvU3RyaW5nVXRpbGl0aWVzLmgKaW5kZXggMjlh
NzZjZDc1MzhjNWRmYzhlMWE4ZDI4OWVjYzllOGI2YzgwNWRmMC4uZWYyMjBlOGEzYWQ5MGJiYTEy
MTEwOGNkNjE3NTFlYjVjNGRhZTAwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9tYWMvU3RyaW5nVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9tYWMv
U3RyaW5nVXRpbGl0aWVzLmgKQEAgLTMwLDYgKzMwLDggQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7
CiAKK3R5cGVkZWYgVmVjdG9yPFN0cmluZz4gU3RyaW5nTGlzdDsKKwogI2lmZGVmIF9fT0JKQ19f
CiAKIC8vIE5PVEU6IFRoaXMgZG9lcyBub3QgdXNlIFN0cmluZzo6b3BlcmF0b3IgTlNTdHJpbmcq
KCkgc2luY2UgdGhhdCBmdW5jdGlvbgpAQCAtMzcsNiArMzksOSBAQCBuYW1lc3BhY2UgV2ViS2l0
IHsKIE5TU3RyaW5nICpuc1N0cmluZ0Zyb21XZWJDb3JlU3RyaW5nKGNvbnN0IFN0cmluZyYpOwog
TlNTdHJpbmcgKmZvcm1hdHRlZFBob25lTnVtYmVyU3RyaW5nKE5TU3RyaW5nICpvcmlnaW5hbFBo
b25lTnVtYmVyKTsKIAorU3RyaW5nTGlzdCB3ZWJDb3JlU3RyaW5nTGlzdEZyb21Oc1N0cmluZ0Fy
cmF5KE5TQXJyYXk8TlNTdHJpbmcgKj4gKik7CitOU0FycmF5PE5TU3RyaW5nICo+ICpuc1N0cmlu
Z0FycmF5RnJvbVdlYkNvcmVTdHJpbmdMaXN0KGNvbnN0IFN0cmluZ0xpc3QmKTsKKwogI2VuZGlm
IC8vIGRlZmluZWQoX19PQkpDX18pCiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vbWFjL1N0cmluZ1V0aWxpdGllcy5tbSBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vbWFj
L1N0cmluZ1V0aWxpdGllcy5tbQppbmRleCA1Yzk2NzkzN2NlNGY5YjE4MGQ4MDFkOWUyMjhiNjZj
OTA3N2E2YmVjLi4wZTA1NDlkN2RiMDkwNjU3MTJmMmY3MTFmYzQzZDljYTFjZWEwZjRjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL21hYy9TdHJpbmdVdGlsaXRpZXMubW0KKysr
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9tYWMvU3RyaW5nVXRpbGl0aWVzLm1tCkBAIC04Miw0
ICs4MiwyMSBAQCBOU1N0cmluZyAqZm9ybWF0dGVkUGhvbmVOdW1iZXJTdHJpbmcoTlNTdHJpbmcg
KikKIAogI2VuZGlmIC8vIEVOQUJMRShURUxFUEhPTkVfTlVNQkVSX0RFVEVDVElPTikgJiYgUExB
VEZPUk0oTUFDKQogCitTdHJpbmdMaXN0IHdlYkNvcmVTdHJpbmdMaXN0RnJvbU5zU3RyaW5nQXJy
YXkoTlNBcnJheTxOU1N0cmluZyAqPiAqbnNTdHJpbmdBcnJheSkKK3sKKyAgICBTdHJpbmdMaXN0
IHN0cmluZ0xpc3Q7CisgICAgW25zU3RyaW5nQXJyYXkgZW51bWVyYXRlT2JqZWN0c1VzaW5nQmxv
Y2s6WyZdIChOU1N0cmluZyAqbnNTdHJpbmcsIE5TVUludGVnZXIsIEJPT0wgKikgeworICAgICAg
ICBzdHJpbmdMaXN0LmFwcGVuZChTdHJpbmcobnNTdHJpbmcpKTsKKyAgICB9XTsKKyAgICByZXR1
cm4gc3RyaW5nTGlzdDsKK30KKworTlNBcnJheTxOU1N0cmluZyAqPiAqbnNTdHJpbmdBcnJheUZy
b21XZWJDb3JlU3RyaW5nTGlzdChjb25zdCBTdHJpbmdMaXN0JiBzdHJpbmdMaXN0KQoreworICAg
IE5TTXV0YWJsZUFycmF5ICpuc1N0cmluZ0FycmF5ID0gW05TTXV0YWJsZUFycmF5IGFycmF5XTsK
KyAgICBmb3IgKGF1dG8gc3RyaW5nIDogc3RyaW5nTGlzdCkKKyAgICAgICAgW25zU3RyaW5nQXJy
YXkgYWRkT2JqZWN0OltOU1N0cmluZyBzdHJpbmdXaXRoVVRGOFN0cmluZzpzdHJpbmcudXRmOCgp
LmRhdGEoKV1dOworICAgIHJldHVybiBuc1N0cmluZ0FycmF5OworfQorCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlcy55YW1sIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViUHJlZmVyZW5jZXMueWFtbAppbmRleCA3NTY0OThiMzFiNGM0YTZjMDk1MzBm
N2Q2Zjc1N2VmMWYxMGRlNTM5Li43NGJkMTY2ZDc3Y2EzMmM5NThhY2ViMTMwMTZmNWNlYTdhNGUx
ZTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlcy55YW1s
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzLnlhbWwKQEAgLTY1Niw2
ICs2NTYsMTEgQEAgQW5pbWF0ZWRJbWFnZUFzeW5jRGVjb2RpbmdFbmFibGVkOgogICB0eXBlOiBi
b29sCiAgIGRlZmF1bHRWYWx1ZTogdHJ1ZQogCitBZGRpdGlvbmFsQWxsb3dlZEltYWdlRm9ybWF0
czoKKyAgICB0eXBlOiBTdHJpbmdMaXN0CisgICAgZGVmYXVsdFZhbHVlOiAneyB9JworICAgIHdl
YmNvcmVCaW5kaW5nOiBub25lCisKIEN1c3RvbUVsZW1lbnRzRW5hYmxlZDoKICAgdHlwZTogYm9v
bAogICBkZWZhdWx0VmFsdWU6IHRydWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYlByZWZlcmVuY2VzU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVy
ZW5jZXNTdG9yZS5jcHAKaW5kZXggNjdhMDY4NzgyZjEzM2FjMTcwNjIyNmVjZWRjZGI1MTAwYzMy
Y2RhNC4uOWFmNzBlNDMxZDBhNWY4M2VhN2VjNDc3YzczYWZkYmM4YzFiNDUxZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXNTdG9yZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXNTdG9yZS5jcHAKQEAgLTExNiw2ICsxMTYs
MTYgQEAgU3RyaW5nIFdlYlByZWZlcmVuY2VzU3RvcmU6OmdldFN0cmluZ1ZhbHVlRm9yS2V5KGNv
bnN0IFN0cmluZyYga2V5KSBjb25zdAogICAgIHJldHVybiB2YWx1ZUZvcktleTxTdHJpbmc+KG1f
dmFsdWVzLCBtX292ZXJyaWRkZW5EZWZhdWx0cywga2V5KTsKIH0KIAorYm9vbCBXZWJQcmVmZXJl
bmNlc1N0b3JlOjpzZXRTdHJpbmdsaXN0VmFsdWVGb3JLZXkoY29uc3QgU3RyaW5nJiBrZXksIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiB2YWx1ZSkKK3sKKyAgICByZXR1cm4gc2V0VmFsdWVGb3JLZXk8
VmVjdG9yPFN0cmluZz4+KG1fdmFsdWVzLCBtX292ZXJyaWRkZW5EZWZhdWx0cywga2V5LCB2YWx1
ZSk7Cit9CisgICAgCitWZWN0b3I8U3RyaW5nPiBXZWJQcmVmZXJlbmNlc1N0b3JlOjpnZXRTdHJp
bmdsaXN0VmFsdWVGb3JLZXkoY29uc3QgU3RyaW5nJiBrZXkpIGNvbnN0Cit7CisgICAgcmV0dXJu
IHZhbHVlRm9yS2V5PFZlY3RvcjxTdHJpbmc+PihtX3ZhbHVlcywgbV9vdmVycmlkZGVuRGVmYXVs
dHMsIGtleSk7Cit9CisKIGJvb2wgV2ViUHJlZmVyZW5jZXNTdG9yZTo6c2V0Qm9vbFZhbHVlRm9y
S2V5KGNvbnN0IFN0cmluZyYga2V5LCBib29sIHZhbHVlKQogewogICAgIHJldHVybiBzZXRWYWx1
ZUZvcktleTxib29sPihtX3ZhbHVlcywgbV9vdmVycmlkZGVuRGVmYXVsdHMsIGtleSwgdmFsdWUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXNTdG9yZS5o
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXNTdG9yZS5oCmluZGV4IDRiMzk2
ODZkZWU4ZGY3M2RiYjQ5YTZmN2RjZjY4ZDhmZmE4YjMzOTUuLmI1NDc0YTY1ZmMyZWMzN2NmZGU4
M2Y3Zjc2NzdmNmYxMzc3MTEwY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YlByZWZlcmVuY2VzU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJl
bmNlc1N0b3JlLmgKQEAgLTMzLDYgKzMzLDggQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK3R5
cGVkZWYgVmVjdG9yPFN0cmluZz4gU3RyaW5nTGlzdDsKKwogc3RydWN0IFdlYlByZWZlcmVuY2Vz
U3RvcmUgewogICAgIFdlYlByZWZlcmVuY2VzU3RvcmUoKTsKIApAQCAtNDQsNiArNDYsOSBAQCBz
dHJ1Y3QgV2ViUHJlZmVyZW5jZXNTdG9yZSB7CiAgICAgYm9vbCBzZXRTdHJpbmdWYWx1ZUZvcktl
eShjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7CiAgICAgU3RyaW5nIGdl
dFN0cmluZ1ZhbHVlRm9yS2V5KGNvbnN0IFN0cmluZyYga2V5KSBjb25zdDsKIAorICAgIGJvb2wg
c2V0U3RyaW5nbGlzdFZhbHVlRm9yS2V5KGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmdM
aXN0JiB2YWx1ZSk7CisgICAgU3RyaW5nTGlzdCBnZXRTdHJpbmdsaXN0VmFsdWVGb3JLZXkoY29u
c3QgU3RyaW5nJiBrZXkpIGNvbnN0OworCiAgICAgYm9vbCBzZXRCb29sVmFsdWVGb3JLZXkoY29u
c3QgU3RyaW5nJiBrZXksIGJvb2wgdmFsdWUpOwogICAgIGJvb2wgZ2V0Qm9vbFZhbHVlRm9yS2V5
KGNvbnN0IFN0cmluZyYga2V5KSBjb25zdDsKIApAQCAtNjIsNyArNjcsNyBAQCBzdHJ1Y3QgV2Vi
UHJlZmVyZW5jZXNTdG9yZSB7CiAgICAgc3RhdGljIHZvaWQgb3ZlcnJpZGVCb29sVmFsdWVGb3JL
ZXkoY29uc3QgU3RyaW5nJiBrZXksIGJvb2wgdmFsdWUpOwogICAgIHN0YXRpYyB2b2lkIHJlbW92
ZVRlc3RSdW5uZXJPdmVycmlkZXMoKTsKIAotICAgIHVzaW5nIFZhbHVlID0gVmFyaWFudDxTdHJp
bmcsIGJvb2wsIHVpbnQzMl90LCBkb3VibGU+OworICAgIHVzaW5nIFZhbHVlID0gVmFyaWFudDxT
dHJpbmcsIFN0cmluZ0xpc3QsIGJvb2wsIHVpbnQzMl90LCBkb3VibGU+OwogCiAgICAgdHlwZWRl
ZiBIYXNoTWFwPFN0cmluZywgVmFsdWU+IFZhbHVlTWFwOwogICAgIFZhbHVlTWFwIG1fdmFsdWVz
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
dy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5k
ZXggZTY1MzJkNDc5MTk0YjlkYjRmMWIxNjQwOWZiM2NjMTUxOTNiNzgwZS4uYjIxODE3ZTMwZDAw
YjVlYWY5M2JjYmJiODYwZTgzNzJlZThlY2Q2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBAIC00Niw2ICs0Niw3IEBACiAjaW1wb3J0ICJS
ZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5oIgogI2ltcG9ydCAiUmVtb3RlT2JqZWN0UmVnaXN0
cnkuaCIKICNpbXBvcnQgIlJlbW90ZU9iamVjdFJlZ2lzdHJ5TWVzc2FnZXMuaCIKKyNpbXBvcnQg
IlN0cmluZ1V0aWxpdGllcy5oIgogI2ltcG9ydCAiVUlEZWxlZ2F0ZS5oIgogI2ltcG9ydCAiVXNl
ck1lZGlhUHJvY2Vzc01hbmFnZXIuaCIKICNpbXBvcnQgIlZlcnNpb25DaGVja3MuaCIKQEAgLTY0
Myw2ICs2NDQsOCBAQCBzdGF0aWMgdm9pZCB2YWxpZGF0ZShXS1dlYlZpZXdDb25maWd1cmF0aW9u
ICpjb25maWd1cmF0aW9uKQogICAgICAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZVZh
bHVlcygpLnNldChXZWJLaXQ6OldlYlByZWZlcmVuY2VzS2V5OjpzZXJ2aWNlV29ya2Vyc0VuYWJs
ZWRLZXkoKSwgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1ZShmYWxzZSkpOwogI2Vu
ZGlmCiAKKyAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZVZhbHVlcygpLnNldChXZWJL
aXQ6OldlYlByZWZlcmVuY2VzS2V5OjphZGRpdGlvbmFsQWxsb3dlZEltYWdlRm9ybWF0c0tleSgp
LCBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmU6OlZhbHVlKFdlYktpdDo6d2ViQ29yZVN0cmlu
Z0xpc3RGcm9tTnNTdHJpbmdBcnJheShbX2NvbmZpZ3VyYXRpb24gX2FkZGl0aW9uYWxBbGxvd2Vk
SW1hZ2VGb3JtYXRzXSkpKTsKKwogI2lmIFBMQVRGT1JNKElPUykKICAgICBDR1JlY3QgYm91bmRz
ID0gc2VsZi5ib3VuZHM7CiAgICAgX3Njcm9sbFZpZXcgPSBhZG9wdE5TKFtbV0tTY3JvbGxWaWV3
IGFsbG9jXSBpbml0V2l0aEZyYW1lOmJvdW5kc10pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbQppbmRl
eCA0M2E1MTM0MjViZmM5ZDc3M2M4YmFhOTE4YzViZjYyZGJkOTQxMTYxLi5kNjZlZjFlMjA5ODgw
NmI3ZDkyMWYzZjBjODY0OTIxNzBjYzVmNjEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbQpAQCAt
MTYxLDYgKzE2MSw3IEBAIHN0YXRpYyBfV0tEcmFnTGlmdERlbGF5IHRvRHJhZ0xpZnREZWxheShO
U1VJbnRlZ2VyIHZhbHVlKQogICAgIEJPT0wgX2RyYXdzQmFja2dyb3VuZDsKIAogICAgIFJldGFp
blB0cjxOU1N0cmluZz4gX21lZGlhQ29udGVudFR5cGVzUmVxdWlyaW5nSGFyZHdhcmVTdXBwb3J0
OworICAgIFJldGFpblB0cjxOU0FycmF5PE5TU3RyaW5nICo+PiBfYWRkaXRpb25hbEFsbG93ZWRJ
bWFnZUZvcm1hdHM7CiB9CiAKIC0gKGluc3RhbmNldHlwZSlpbml0CkBAIC0zOTQsNiArMzk1LDcg
QEAgc3RhdGljIF9XS0RyYWdMaWZ0RGVsYXkgdG9EcmFnTGlmdERlbGF5KE5TVUludGVnZXIgdmFs
dWUpCiAgICAgY29uZmlndXJhdGlvbi0+X25lZWRzU3RvcmFnZUFjY2Vzc0Zyb21GaWxlVVJMc1F1
aXJrID0gc2VsZi0+X25lZWRzU3RvcmFnZUFjY2Vzc0Zyb21GaWxlVVJMc1F1aXJrOwogCiAgICAg
Y29uZmlndXJhdGlvbi0+X21lZGlhQ29udGVudFR5cGVzUmVxdWlyaW5nSGFyZHdhcmVTdXBwb3J0
ID0gYWRvcHROUyhbc2VsZi5fbWVkaWFDb250ZW50VHlwZXNSZXF1aXJpbmdIYXJkd2FyZVN1cHBv
cnQgY29weVdpdGhab25lOnpvbmVdKTsKKyAgICBjb25maWd1cmF0aW9uLT5fYWRkaXRpb25hbEFs
bG93ZWRJbWFnZUZvcm1hdHMgPSBhZG9wdE5TKFtzZWxmLT5fYWRkaXRpb25hbEFsbG93ZWRJbWFn
ZUZvcm1hdHMgY29weVdpdGhab25lOnpvbmVdKTsKICAgICBjb25maWd1cmF0aW9uLT5fbGVnYWN5
RW5jcnlwdGVkTWVkaWFBUElFbmFibGVkID0gc2VsZi0+X2xlZ2FjeUVuY3J5cHRlZE1lZGlhQVBJ
RW5hYmxlZDsKICAgICBjb25maWd1cmF0aW9uLT5fYWxsb3dNZWRpYUNvbnRlbnRUeXBlc1JlcXVp
cmluZ0hhcmR3YXJlU3VwcG9ydEFzRmFsbGJhY2sgPSBzZWxmLT5fYWxsb3dNZWRpYUNvbnRlbnRU
eXBlc1JlcXVpcmluZ0hhcmR3YXJlU3VwcG9ydEFzRmFsbGJhY2s7CiAKQEAgLTk5MCw2ICs5OTIs
MTYgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgX21lZGlhQ29udGVu
dFR5cGVzUmVxdWlyaW5nSGFyZHdhcmVTdXBwb3J0ID0gYWRvcHROUyhbbWVkaWFDb250ZW50VHlw
ZXNSZXF1aXJpbmdIYXJkd2FyZVN1cHBvcnQgY29weV0pOwogfQogCistIChOU0FycmF5PE5TU3Ry
aW5nICo+ICopX2FkZGl0aW9uYWxBbGxvd2VkSW1hZ2VGb3JtYXRzCit7CisgICAgcmV0dXJuIF9h
ZGRpdGlvbmFsQWxsb3dlZEltYWdlRm9ybWF0cy5nZXQoKTsKK30KKworLSAodm9pZClfc2V0QWRk
aXRpb25hbEFsbG93ZWRJbWFnZUZvcm1hdHM6KE5TQXJyYXk8TlNTdHJpbmcgKj4gKilhZGRpdGlv
bmFsQWxsb3dlZEltYWdlRm9ybWF0cworeworICAgIF9hZGRpdGlvbmFsQWxsb3dlZEltYWdlRm9y
bWF0cyA9IGFkb3B0TlMoW2FkZGl0aW9uYWxBbGxvd2VkSW1hZ2VGb3JtYXRzIGNvcHldKTsKK30K
KwogLSAodm9pZClfc2V0TGVnYWN5RW5jcnlwdGVkTWVkaWFBUElFbmFibGVkOihCT09MKWVuYWJs
ZWQKIHsKICAgICBfbGVnYWN5RW5jcnlwdGVkTWVkaWFBUElFbmFibGVkID0gZW5hYmxlZDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25m
aWd1cmF0aW9uUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmgKaW5kZXggZjEwNWExYWEyYzNjM2E5ZGExNzYx
N2ZhZjcxZDhjNTYwM2Y3ZDg4MS4uZGMwNGIxOTI0ZDJlNjVlMmQxMGNlNTJlMzU4MjliNzdiYjgx
ZmYyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmgKQEAgLTEwMSw2ICsxMDEs
NyBAQCB0eXBlZGVmIE5TX0VOVU0oTlNVSW50ZWdlciwgX1dLRHJhZ0xpZnREZWxheSkgewogQHBy
b3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0TWVkaWFDb250ZW50VHlwZXNSZXF1aXJpbmdI
YXJkd2FyZVN1cHBvcnQ6KSBOU1N0cmluZyAqX21lZGlhQ29udGVudFR5cGVzUmVxdWlyaW5nSGFy
ZHdhcmVTdXBwb3J0IFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjEzKSwgaW9zKDExLjApKTsK
IEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldExlZ2FjeUVuY3J5cHRlZE1lZGlhQVBJ
RW5hYmxlZDopIEJPT0wgX2xlZ2FjeUVuY3J5cHRlZE1lZGlhQVBJRW5hYmxlZCBXS19BUElfQVZB
SUxBQkxFKG1hY29zeCgxMC4xMyksIGlvcygxMS4wKSk7CiBAcHJvcGVydHkgKG5vbmF0b21pYywg
c2V0dGVyPV9zZXRBbGxvd01lZGlhQ29udGVudFR5cGVzUmVxdWlyaW5nSGFyZHdhcmVTdXBwb3J0
QXNGYWxsYmFjazopIEJPT0wgX2FsbG93TWVkaWFDb250ZW50VHlwZXNSZXF1aXJpbmdIYXJkd2Fy
ZVN1cHBvcnRBc0ZhbGxiYWNrIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjEzKSwgaW9zKDEx
LjApKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5LCBzZXR0ZXI9X3NldEFkZGl0aW9uYWxB
bGxvd2VkSW1hZ2VGb3JtYXRzOikgTlNBcnJheTxOU1N0cmluZyAqPiAqX2FkZGl0aW9uYWxBbGxv
d2VkSW1hZ2VGb3JtYXRzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3Mo
V0tfSU9TX1RCQSkpOwogCiBAZW5kCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByZWZlcmVuY2VzLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByZWZl
cmVuY2VzLmNwcAppbmRleCA0NGEwYTAyYjk4YmM2Y2IxYjEzMTJkZDZlM2E1YmIyNGNmMzJkMWQ5
Li45YWE3N2VjODM5NjU4NWI3MjgxMzdlNTEyNTM2NDMwNDI5MzExNTYzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcmVmZXJlbmNlcy5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJlZmVyZW5jZXMuY3BwCkBAIC0xMjAsNiArMTIwLDEyIEBAIHZv
aWQgV2ViUHJlZmVyZW5jZXM6OnVwZGF0ZVN0cmluZ1ZhbHVlRm9yS2V5KGNvbnN0IFN0cmluZyYg
a2V5LCBjb25zdCBTdHJpbmcmIHZhCiAgICAgdXBkYXRlKCk7IC8vIEZJWE1FOiBPbmx5IHNlbmQg
b3ZlciB0aGUgY2hhbmdlZCBrZXkgYW5kIHZhbHVlLgogfQogCit2b2lkIFdlYlByZWZlcmVuY2Vz
Ojp1cGRhdGVTdHJpbmdsaXN0VmFsdWVGb3JLZXkoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0
cmluZ0xpc3QmIHZhbHVlKQoreworICAgIHBsYXRmb3JtVXBkYXRlU3RyaW5nbGlzdFZhbHVlRm9y
S2V5KGtleSwgdmFsdWUpOworICAgIHVwZGF0ZSgpOyAvLyBGSVhNRTogT25seSBzZW5kIG92ZXIg
dGhlIGNoYW5nZWQga2V5IGFuZCB2YWx1ZS4KK30KKwogdm9pZCBXZWJQcmVmZXJlbmNlczo6dXBk
YXRlQm9vbFZhbHVlRm9yS2V5KGNvbnN0IFN0cmluZyYga2V5LCBib29sIHZhbHVlKQogewogICAg
IGlmIChrZXkgPT0gV2ViUHJlZmVyZW5jZXNLZXk6OnByaXZhdGVCcm93c2luZ0VuYWJsZWRLZXko
KSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJlZmVyZW5jZXMu
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByZWZlcmVuY2VzLmgKaW5kZXggYzRhZDQ2
ZWU5OTMwYjg1MzlhMjhiYWIwZTU4ZmQ4Y2UwOGQ1YmRiNi4uYmQ2OGIxN2VhNjA5YzY3OTIzYjAy
ZjY4MmEwYWI0YTRhZDQ2NDI1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJlZmVyZW5jZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcmVmZXJl
bmNlcy5oCkBAIC04Nyw2ICs4Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1cGRhdGUoKTsKIAog
ICAgIHZvaWQgdXBkYXRlU3RyaW5nVmFsdWVGb3JLZXkoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0
IFN0cmluZyYgdmFsdWUpOworICAgIHZvaWQgdXBkYXRlU3RyaW5nbGlzdFZhbHVlRm9yS2V5KGNv
bnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmdMaXN0JiB2YWx1ZSk7CiAgICAgdm9pZCB1cGRh
dGVCb29sVmFsdWVGb3JLZXkoY29uc3QgU3RyaW5nJiBrZXksIGJvb2wgdmFsdWUpOwogICAgIHZv
aWQgdXBkYXRlQm9vbFZhbHVlRm9ySW50ZXJuYWxEZWJ1Z0ZlYXR1cmVLZXkoY29uc3QgU3RyaW5n
JiBrZXksIGJvb2wgdmFsdWUpOwogICAgIHZvaWQgdXBkYXRlQm9vbFZhbHVlRm9yRXhwZXJpbWVu
dGFsRmVhdHVyZUtleShjb25zdCBTdHJpbmcmIGtleSwgYm9vbCB2YWx1ZSk7CkBAIC05NCw2ICs5
NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1cGRhdGVEb3VibGVWYWx1ZUZvcktleShjb25zdCBT
dHJpbmcmIGtleSwgZG91YmxlIHZhbHVlKTsKICAgICB2b2lkIHVwZGF0ZUZsb2F0VmFsdWVGb3JL
ZXkoY29uc3QgU3RyaW5nJiBrZXksIGZsb2F0IHZhbHVlKTsKICAgICB2b2lkIHBsYXRmb3JtVXBk
YXRlU3RyaW5nVmFsdWVGb3JLZXkoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgdmFs
dWUpOworICAgIHZvaWQgcGxhdGZvcm1VcGRhdGVTdHJpbmdsaXN0VmFsdWVGb3JLZXkoY29uc3Qg
U3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZ0xpc3QmIHZhbHVlKTsKICAgICB2b2lkIHBsYXRmb3Jt
VXBkYXRlQm9vbFZhbHVlRm9yS2V5KGNvbnN0IFN0cmluZyYga2V5LCBib29sIHZhbHVlKTsKICAg
ICB2b2lkIHBsYXRmb3JtVXBkYXRlVUludDMyVmFsdWVGb3JLZXkoY29uc3QgU3RyaW5nJiBrZXks
IHVpbnQzMl90IHZhbHVlKTsKICAgICB2b2lkIHBsYXRmb3JtVXBkYXRlRG91YmxlVmFsdWVGb3JL
ZXkoY29uc3QgU3RyaW5nJiBrZXksIGRvdWJsZSB2YWx1ZSk7CkBAIC0xMDUsNiArMTA3LDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIHJlZ2lzdGVyRGVmYXVsdFVJbnQzMlZhbHVlRm9yS2V5KGNvbnN0
IFN0cmluZyYsIHVpbnQzMl90KTsKIAogICAgIGJvb2wgcGxhdGZvcm1HZXRTdHJpbmdVc2VyVmFs
dWVGb3JLZXkoY29uc3QgU3RyaW5nJiBrZXksIFN0cmluZyYgdXNlclZhbHVlKTsKKyAgICBib29s
IHBsYXRmb3JtR2V0U3RyaW5nbGlzdFVzZXJWYWx1ZUZvcktleShjb25zdCBTdHJpbmcmIGtleSwg
U3RyaW5nTGlzdCYgdXNlclZhbHVlKTsKICAgICBib29sIHBsYXRmb3JtR2V0Qm9vbFVzZXJWYWx1
ZUZvcktleShjb25zdCBTdHJpbmcmLCBib29sJik7CiAgICAgYm9vbCBwbGF0Zm9ybUdldFVJbnQz
MlVzZXJWYWx1ZUZvcktleShjb25zdCBTdHJpbmcmLCB1aW50MzJfdCYpOwogICAgIGJvb2wgcGxh
dGZvcm1HZXREb3VibGVVc2VyVmFsdWVGb3JLZXkoY29uc3QgU3RyaW5nJiwgZG91YmxlJik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUHJlZmVyZW5jZXNNYWMu
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUHJlZmVyZW5jZXNNYWMubW0KaW5k
ZXggYWJlMjk1Y2MwYjRmZjdhZjk4NmMwMmU0MTI1YjIyNWU3M2M0Y2FlNC4uYjNhYzhlMWQ3MzI4
YzUxZDVhZjZkYTllMGJkODA2ZjI1NWEzY2JlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvbWFjL1dlYlByZWZlcmVuY2VzTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL21hYy9XZWJQcmVmZXJlbmNlc01hYy5tbQpAQCAtNTMsNiArNTMsMjEgQEAgYm9vbCBX
ZWJQcmVmZXJlbmNlczo6cGxhdGZvcm1HZXRTdHJpbmdVc2VyVmFsdWVGb3JLZXkoY29uc3QgU3Ry
aW5nJiBrZXksIFN0cmluZyYKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorYm9vbCBXZWJQcmVmZXJl
bmNlczo6cGxhdGZvcm1HZXRTdHJpbmdsaXN0VXNlclZhbHVlRm9yS2V5KGNvbnN0IFN0cmluZyYg
a2V5LCBTdHJpbmdMaXN0JiB1c2VyVmFsdWUpCit7CisgICAgaWYgKCFtX2lkZW50aWZpZXIpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBpZCBvYmplY3QgPSBbW05TVXNlckRlZmF1
bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSBvYmplY3RGb3JLZXk6bWFrZUtleShtX2lkZW50aWZp
ZXIsIG1fa2V5UHJlZml4LCBrZXkpXTsKKyAgICBpZiAoIW9iamVjdCkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIGlmICghW29iamVjdCBpc0tpbmRPZkNsYXNzOltOU0FycmF5PE5TU3RyaW5n
ICo+IGNsYXNzXV0pCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICB1c2VyVmFsdWUg
PSB3ZWJDb3JlU3RyaW5nTGlzdEZyb21Oc1N0cmluZ0FycmF5KChOU0FycmF5PE5TU3RyaW5nICo+
ICopb2JqZWN0KTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogYm9vbCBXZWJQcmVmZXJlbmNlczo6
cGxhdGZvcm1HZXRCb29sVXNlclZhbHVlRm9yS2V5KGNvbnN0IFN0cmluZyYga2V5LCBib29sJiB1
c2VyVmFsdWUpCiB7CiAgICAgaWYgKCFtX2lkZW50aWZpZXIpCkBAIC0xNjYsNiArMTgxLDE0IEBA
IHZvaWQgV2ViUHJlZmVyZW5jZXM6OnBsYXRmb3JtVXBkYXRlU3RyaW5nVmFsdWVGb3JLZXkoY29u
c3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0CiAgICAgW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVz
ZXJEZWZhdWx0c10gc2V0T2JqZWN0Om5zU3RyaW5nRnJvbVdlYkNvcmVTdHJpbmcodmFsdWUpIGZv
cktleTptYWtlS2V5KG1faWRlbnRpZmllciwgbV9rZXlQcmVmaXgsIGtleSldOwogfQogCit2b2lk
IFdlYlByZWZlcmVuY2VzOjpwbGF0Zm9ybVVwZGF0ZVN0cmluZ2xpc3RWYWx1ZUZvcktleShjb25z
dCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nTGlzdCYgdmFsdWUpCit7CisgICAgaWYgKCFtX2lk
ZW50aWZpZXIpCisgICAgICAgIHJldHVybjsKKworICAgIFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRh
cmRVc2VyRGVmYXVsdHNdIHNldE9iamVjdDpuc1N0cmluZ0FycmF5RnJvbVdlYkNvcmVTdHJpbmdM
aXN0KHZhbHVlKSBmb3JLZXk6bWFrZUtleShtX2lkZW50aWZpZXIsIG1fa2V5UHJlZml4LCBrZXkp
XTsKK30KKwogdm9pZCBXZWJQcmVmZXJlbmNlczo6cGxhdGZvcm1VcGRhdGVCb29sVmFsdWVGb3JL
ZXkoY29uc3QgU3RyaW5nJiBrZXksIGJvb2wgdmFsdWUpCiB7CiAgICAgaWYgKCFtX2lkZW50aWZp
ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4
IGE0ZTQ2Y2I2MjBlMjgxZGUwYmRhODA0ZGQyNDZiODljY2YwMTgwZmUuLmJmNmZjZDNkMTM4MjFm
YzAwMWNiNjdhOTU2YzJhNTFmNDM1MTQ5YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0yNDcsNiArMjQ3LDcgQEAKICNpbmNsdWRlICJWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyLmgiCiAjaW5jbHVkZSAiV0tTdHJpbmdDRi5oIgogI2luY2x1ZGUg
PFdlYkNvcmUvTGVnYWN5V2ViQXJjaGl2ZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVVRJUmVnaXN0
cnkuaD4KICNpbmNsdWRlIDx3dGYvTWFjaFNlbmRSaWdodC5oPgogI2VuZGlmCiAKQEAgLTMyMjQs
NiArMzIyNSw3IEBAIHZvaWQgV2ViUGFnZTo6dXBkYXRlUHJlZmVyZW5jZXMoY29uc3QgV2ViUHJl
ZmVyZW5jZXNTdG9yZSYgc3RvcmUpCiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBtX3BkZlBs
dWdpbkVuYWJsZWQgPSBzdG9yZS5nZXRCb29sVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6
OnBkZlBsdWdpbkVuYWJsZWRLZXkoKSk7CisgICAgV2ViQ29yZTo6c2V0QWRkaXRpb25hbEFsbG93
ZWRJbWFnZUZvcm1hdHMoc3RvcmUuZ2V0U3RyaW5nbGlzdFZhbHVlRm9yS2V5KFdlYlByZWZlcmVu
Y2VzS2V5OjphZGRpdGlvbmFsQWxsb3dlZEltYWdlRm9ybWF0c0tleSgpKSk7CiAjZW5kaWYKICNp
ZiBFTkFCTEUoUEFZTUVOVF9SRVFVRVNUKQogICAgIHNldHRpbmdzLnNldFBheW1lbnRSZXF1ZXN0
RW5hYmxlZChzdG9yZS5nZXRCb29sVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OmFwcGxl
UGF5RW5hYmxlZEtleSgpKSk7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9D
aGFuZ2VMb2cKaW5kZXggYzM5MzU0NmI4MDVmNWExZTJkMjNhOWRkZDE1MzIzNDEzZjMzM2ZjOC4u
ODIzMWVmZTI5YTdkMjEyZDg0ODQ0NDMzZTYyNjY3N2QxNmUzZmY0YSAxMDA2NDQKLS0tIGEvVG9v
bHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDE4
LTEwLTE0ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAg
ICAgICAgQWRkIGFuIFNQSSB0byBhbGxvdyBXZWJWaWV3IGNsaWVudHMgdG8gYWRkIGFkZGl0aW9u
YWwgc3VwcG9ydGVkIGltYWdlIGZvcm1hdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE5MDQ1NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRlc3Qgb3BlbmluZyBhIFRHQSBpbWFnZSBpbiBXZWJWaWV3IHdo
aWNoIGlzIG5vdCBhbGxvd2VkIGJ5IGRlZmF1bHQuIFRoZQorICAgICAgICBUR0EgZm9ybWF0IHdp
bGwgYmUgYWxsb3dlZCB0aHJvdWdoIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24uCisKKyAgICAgICAg
VGhlIFRHQSBpbWFnZSBleHRlbnNpb24gd2FzIGNoYW5nZWQgdG8gUE5HIGJlY2F1c2UgV2ViS2l0
IHdvbid0IGFjY2VwY3QKKyAgICAgICAgYSBmaWxlIHdpdGggVEdBIGV4dGVuc2lvbiBhcyBhbiBJ
bWFnZURvY3VtZW50LgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9BZGRpdGlvbmFsQWxsb3dlZEltYWdlRm9ybWF0cy5tbTogQWRkZWQuCisgICAg
ICAgIChURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL3Rn
YS1pbWFnZS5wbmc6IEFkZGVkLgorCiAyMDE4LTEwLTExICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5u
QGFwcGxlLmNvbT4KIAogICAgICAgICBJT1MgMTIgLSBTZXJ2aWNlIHdvcmtlciBjYWNoZSBub3Qg
c2hhcmVkIHdoZW4gYWRkZWQgdG8gaG9tZXNjcmVlbgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCBhNDQyMzJmNTU0MzgwNjU0YWU2ZWM3MDU5MDkwNjlhZTQyNjU0ZTVjLi41YzVjNWRhZjYwNTli
ZWQzN2M2ZTQwNzEyNjQyMDgxN2I4ODYxOGFmIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
MjQwLDYgKzI0MCw4IEBACiAJCTUzNjc3MDM2MUNDODFCNjEwMEQ0MjVCMSAvKiBXZWJTY3JpcHRP
YmplY3REZXNjcmlwdGlvbi5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUzNjc3MDM1MUNDODEyRjkwMEQ0MjVCMSAvKiBXZWJTY3JpcHRP
YmplY3REZXNjcmlwdGlvbi5odG1sICovOyB9OwogCQk1M0VDMjU0MTFFOTZGRDg3MDAwODMxQjkg
LyogUHJpb3JpdHlRdWV1ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1M0VDMjUzRjFFOTZCQzgwMDAwODMxQjkgLyogUHJpb3JpdHlRdWV1ZS5jcHAg
Ki87IH07CiAJCTU1MjI2QTJGMUVCQTQ0QjkwMEMzNkFEMCAvKiBsYXJnZS1yZWQtc3F1YXJlLWlt
YWdlLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTUyMjZBMkUxRUI5NjlCNjAwQzM2QUQwIC8qIGxhcmdlLXJlZC1zcXVhcmUtaW1hZ2Uu
aHRtbCAqLzsgfTsKKwkJNTU1ODQ4MUMyMTcxMzE1NzAwRkI3RkZGIC8qIEFkZGl0aW9uYWxBbGxv
d2VkSW1hZ2VGb3JtYXRzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTU1ODQ4MUIyMTcxMzE1NjAwRkI3RkZGIC8qIEFkZGl0aW9uYWxBbGxvd2VkSW1h
Z2VGb3JtYXRzLm1tICovOyB9OworCQk1NTU4NDgyNTIxNzE4Q0RBMDBGQjdGRkYgLyogdGdhLWlt
YWdlLnBuZyBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1NTU4NDgyMTIxNzE1QTdFMDBGQjdGRkYgLyogdGdhLWltYWdlLnBuZyAqLzsgfTsKIAkJ
NTU5N0Y4MzYxRDk1OTZDODAwNjZCQzIxIC8qIFN5bmNocm9uaXplZEZpeGVkUXVldWUuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTU5N0Y4MzQxRDk1
OTZDODAwNjZCQzIxIC8qIFN5bmNocm9uaXplZEZpeGVkUXVldWUuY3BwICovOyB9OwogCQk1NzE0
RUNCOTFDQThCNUIwMDAwNTFBQzggLyogRG93bmxvYWRSZXF1ZXN0T3JpZ2luYWxVUkwuaHRtbCBp
biBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzE0
RUNCODFDQThCNTg4MDAwNTFBQzggLyogRG93bmxvYWRSZXF1ZXN0T3JpZ2luYWxVUkwuaHRtbCAq
LzsgfTsKIAkJNTcxNEVDQkIxQ0E4QkZFNDAwMDUxQUM4IC8qIERvd25sb2FkUmVxdWVzdE9yaWdp
bmFsVVJMRnJhbWUuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1NzE0RUNCQTFDQThCRkQxMDAwNTFBQzggLyogRG93bmxvYWRSZXF1ZXN0
T3JpZ2luYWxVUkxGcmFtZS5odG1sICovOyB9OwpAQCAtMTE5OCw2ICsxMjAwLDcgQEAKIAkJCQlG
NENENzRDNjIwRkRBQ0ZBMDBERTM3OTQgLyogdGV4dC13aXRoLWFzeW5jLXNjcmlwdC5odG1sIGlu
IENvcHkgUmVzb3VyY2VzICovLAogCQkJCUY0NEM3QTA1MjBGQUFFM0MwMDE0NDc4QyAvKiB0ZXh0
LXdpdGgtZGVmZXJyZWQtc2NyaXB0Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJRjQx
QUI5QUExRUY0Njk2QjAwODNGQTA4IC8qIHRleHRhcmVhLXRvLWlucHV0Lmh0bWwgaW4gQ29weSBS
ZXNvdXJjZXMgKi8sCisJCQkJNTU1ODQ4MjUyMTcxOENEQTAwRkI3RkZGIC8qIHRnYS1pbWFnZS5w
bmcgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJRjQ0NTFDNzYxRUI4RkQ4OTAwMjBDNURBIC8q
IHR3by1wYXJhZ3JhcGgtY29udGVudGVkaXRhYmxlLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8s
CiAJCQkJQzU0MEY3ODQxNTJFNUE5QTAwQTQwQzhDIC8qIHZlcmJvc2VNYXJrdXAuaHRtbCBpbiBD
b3B5IFJlc291cmNlcyAqLywKIAkJCQlDRDU3Nzc5RDIxMUNFOTFGMDAxQjM3MUUgLyogdmlkZW8t
d2l0aC1hdWRpby1hbmQtd2ViLWF1ZGlvLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCkBAIC0x
NDM0LDcgKzE0MzcsNiBAQAogCQkzN0UxMDY0QjE2OTc2N0Y3MDBCNzhCRDAgLyogRE9NSFRNTFRh
YmxlQ2VsbEVsZW1lbnRDZWxsQWJvdmUuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9
IERPTUhUTUxUYWJsZUNlbGxFbGVtZW50Q2VsbEFib3ZlLmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTM3RTM4QzMzMTY5QjdEMDEwMDg0QzI4QyAvKiBXZWJWaWV3RGlkUmVtb3Zl
RnJhbWVGcm9tSGllcmFyY2h5Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gV2ViVmlld0RpZFJlbW92ZUZyYW1lRnJvbUhpZXJhcmNoeS5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMzdFN0RENjMxRUEwNkZGMjAwOUIzOTZEIC8qIEFkZGl0aW9uYWxS
ZWFkQWNjZXNzQWxsb3dlZFVSTHMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBBZGRpdGlvbmFsUmVhZEFjY2Vzc0FsbG93ZWRVUkxzLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQkzN0U3REQ2NTFFQTA3MTVCMDA5QjM5NkQgLyogQWRkaXRpb25hbFJl
YWRBY2Nlc3NBbGxvd2VkVVJMc1Byb3RvY29sLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEFkZGl0aW9uYWxSZWFkQWNjZXNzQWxsb3dlZFVSTHNQcm90b2NvbC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkzN0U3REQ2NjFFQTA3MUYzMDA5QjM5NkQgLyogQWRkaXRp
b25hbFJlYWRBY2Nlc3NBbGxvd2VkVVJMc1BsdWdpbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IEFkZGl0aW9uYWxSZWFkQWNjZXNzQWxsb3dlZFVSTHNQbHVnaW4u
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3RkI3Mjk1MURCMkU4MkYwMEU0MUJF
NCAvKiBDb250ZXh0TWVudURlZmF1bHRJdGVtc0hhdmVUYWdzLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gQ29udGV4dE1lbnVEZWZhdWx0SXRlbXNIYXZlVGFncy5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJM0YxQjUyNjgxRDNENzEyOTAwOEQ2MEM0
IC8qIEZ1bGxzY3JlZW5MYXlvdXRDb25zdHJhaW50cy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IEZ1bGxzY3JlZW5MYXlvdXRDb25zdHJhaW50cy5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE1NDYsNiArMTU0OCw5IEBACiAJCTUzNjc3MDM1MUND
ODEyRjkwMEQ0MjVCMSAvKiBXZWJTY3JpcHRPYmplY3REZXNjcmlwdGlvbi5odG1sICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dC5odG1sOyBwYXRoID0gV2ViU2NyaXB0T2JqZWN0RGVzY3JpcHRpb24uaHRtbDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTNFQzI1M0YxRTk2QkM4MDAwMDgzMUI5IC8qIFBy
aW9yaXR5UXVldWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHJp
b3JpdHlRdWV1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU1MjI2QTJFMUVC
OTY5QjYwMEMzNkFEMCAvKiBsYXJnZS1yZWQtc3F1YXJlLWltYWdlLmh0bWwgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0Lmh0bWw7IHBhdGggPSAibGFyZ2UtcmVkLXNxdWFyZS1pbWFnZS5odG1sIjsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTU1ODQ4MUIyMTcxMzE1NjAwRkI3RkZGIC8qIEFkZGl0aW9u
YWxBbGxvd2VkSW1hZ2VGb3JtYXRzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gQWRkaXRpb25hbEFsbG93ZWRJbWFnZUZvcm1hdHMubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTU1NTg0ODFGMjE3MTM1MDgwMEZCN0ZGRiAvKiBBZGRpdGlvbmFsUmVh
ZEFjY2Vzc0FsbG93ZWRVUkxzUHJvdG9jb2wuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQWRkaXRpb25hbFJlYWRBY2Nlc3NBbGxvd2VkVVJMc1Byb3RvY29sLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTU1NTg0ODIxMjE3MTVBN0UwMEZCN0ZGRiAvKiB0Z2EtaW1h
Z2UucG5nICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
aW1hZ2UucG5nOyBwYXRoID0gInRnYS1pbWFnZS5wbmciOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1NTk3RjgzNDFEOTU5NkM4MDA2NkJDMjEgLyogU3luY2hyb25pemVkRml4ZWRRdWV1
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTeW5jaHJvbml6ZWRG
aXhlZFF1ZXVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTcxNEVDQjgxQ0E4
QjU4ODAwMDUxQUM4IC8qIERvd25sb2FkUmVxdWVzdE9yaWdpbmFsVVJMLmh0bWwgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0Lmh0bWw7IHBhdGggPSBEb3dubG9hZFJlcXVlc3RPcmlnaW5hbFVSTC5odG1sOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NzE0RUNCQTFDQThCRkQxMDAwNTFBQzggLyogRG93
bmxvYWRSZXF1ZXN0T3JpZ2luYWxVUkxGcmFtZS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBw
YXRoID0gRG93bmxvYWRSZXF1ZXN0T3JpZ2luYWxVUkxGcmFtZS5odG1sOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMjMxMCw5ICsyMzE1LDEwIEBACiAJCQkJQTE2RjY2QjgxQzQwRTlF
MTAwQkQ0RDI0IC8qIFJlc291cmNlcyAqLywKIAkJCQk1Q0VBQjVERjFGQTkzN0NCMDBBNzdGQUEg
LyogX1dLSW5wdXREZWxlZ2F0ZS5tbSAqLywKIAkJCQk3Q0VGQTk2NDFBQzBCOUUyMDBCOTEwRkQg
LyogX1dLVXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZS5tbSAqLywKKwkJCQk1NTU4NDgxQjIxNzEz
MTU2MDBGQjdGRkYgLyogQWRkaXRpb25hbEFsbG93ZWRJbWFnZUZvcm1hdHMubW0gKi8sCiAJCQkJ
MzdFN0RENjMxRUEwNkZGMjAwOUIzOTZEIC8qIEFkZGl0aW9uYWxSZWFkQWNjZXNzQWxsb3dlZFVS
THMubW0gKi8sCiAJCQkJMzdFN0RENjYxRUEwNzFGMzAwOUIzOTZEIC8qIEFkZGl0aW9uYWxSZWFk
QWNjZXNzQWxsb3dlZFVSTHNQbHVnaW4ubW0gKi8sCi0JCQkJMzdFN0RENjUxRUEwNzE1QjAwOUIz
OTZEIC8qIEFkZGl0aW9uYWxSZWFkQWNjZXNzQWxsb3dlZFVSTHNQcm90b2NvbC5oICovLAorCQkJ
CTU1NTg0ODFGMjE3MTM1MDgwMEZCN0ZGRiAvKiBBZGRpdGlvbmFsUmVhZEFjY2Vzc0FsbG93ZWRV
UkxzUHJvdG9jb2wuaCAqLywKIAkJCQlBMURGNzQzMDFDNDFCNjU4MDBBMkY0RDAgLyogQWx3YXlz
UmV2YWxpZGF0ZWRVUkxTY2hlbWVzLm1tICovLAogCQkJCTJERTcxQUZEMUQ0OUMwQkQwMDkwNDA5
NCAvKiBBbmltYXRlZFJlc2l6ZS5tbSAqLywKIAkJCQk2M0Y2NjgyMDFGOTdDM0FBMDAzMkVFNTEg
LyogQXBwbGljYXRpb25NYW5pZmVzdC5tbSAqLywKQEAgLTI4MDQsNiArMjgxMCw3IEBACiAJCQkJ
RjRDRDc0QzUyMEZEQUNGNTAwREUzNzk0IC8qIHRleHQtd2l0aC1hc3luYy1zY3JpcHQuaHRtbCAq
LywKIAkJCQlGNDRDN0EwNDIwRkFBRTMyMDAxNDQ3OEMgLyogdGV4dC13aXRoLWRlZmVycmVkLXNj
cmlwdC5odG1sICovLAogCQkJCUY0MUFCOTk1MUVGNDY5MkMwMDgzRkEwOCAvKiB0ZXh0YXJlYS10
by1pbnB1dC5odG1sICovLAorCQkJCTU1NTg0ODIxMjE3MTVBN0UwMEZCN0ZGRiAvKiB0Z2EtaW1h
Z2UucG5nICovLAogCQkJCUY0NDUxQzc1MUVCOEZEN0MwMDIwQzVEQSAvKiB0d28tcGFyYWdyYXBo
LWNvbnRlbnRlZGl0YWJsZS5odG1sICovLAogCQkJCUNENTc3NzlCMjExQ0U2Q0UwMDFCMzcxRSAv
KiB2aWRlby13aXRoLWF1ZGlvLWFuZC13ZWItYXVkaW8uaHRtbCAqLywKIAkJCQlDRDU3Nzc5ODIx
MUNERThGMDAxQjM3MUUgLyogd2ViLWF1ZGlvLW9ubHkuaHRtbCAqLywKQEAgLTM3MTMsNiArMzcy
MCw3IEBACiAJCQkJMkUyMDVCQTQxRjUyNzc0NjAwNTk1MkREIC8qIEFjY2Vzc2liaWxpdHlUZXN0
c0lPUy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTlCRDUxMTFDMUZFOEUxMTYwMEQyQjYzMCAvKiBB
Y2Nlc3NpbmdQYXN0ZWRJbWFnZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCUY0NUI2M0ZFMUYxOUQ0
MTAwMDlEMzhCOSAvKiBBY3Rpb25TaGVldFRlc3RzLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJNTU1
ODQ4MUMyMTcxMzE1NzAwRkI3RkZGIC8qIEFkZGl0aW9uYWxBbGxvd2VkSW1hZ2VGb3JtYXRzLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJMzdFN0RENjQxRUEwNkZGMjAwOUIzOTZEIC8qIEFkZGl0aW9u
YWxSZWFkQWNjZXNzQWxsb3dlZFVSTHMubW0gaW4gU291cmNlcyAqLywKIAkJCQk3QTkwOUE3RDFE
ODc3NDgwMDA3RTEwRjggLyogQWZmaW5lVHJhbnNmb3JtLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUExREY3NDMyMUM0MUI2NTgwMEEyRjREMCAvKiBBbHdheXNSZXZhbGlkYXRlZFVSTFNjaGVtZXMu
bW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvQWRkaXRpb25hbEFsbG93ZWRJbWFnZUZvcm1hdHMubW0gYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0FkZGl0aW9uYWxBbGxvd2VkSW1hZ2VGb3JtYXRz
Lm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmViZGNiNzVhY2JhY2I5OTM2MjBmNjc5ZTgxNDNjMzYxZjJkYzE5Y2IK
LS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L0FkZGl0aW9uYWxBbGxvd2VkSW1hZ2VGb3JtYXRzLm1tCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgPFdlYktpdC9XS0ZvdW5kYXRpb24u
aD4KKworI2lmIFdLX0FQSV9FTkFCTEVEICYmIFBMQVRGT1JNKENPQ09BKQorCisjaW1wb3J0ICJQ
bGF0Zm9ybVV0aWxpdGllcy5oIgorI2ltcG9ydCAiVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5oIgor
I2ltcG9ydCAiV0tXZWJWaWV3Q29uZmlndXJhdGlvbkV4dHJhcy5oIgorI2ltcG9ydCA8V2ViS2l0
L1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRy
Lmg+CisKK1RFU1QoV2ViS2l0LCBBZGRpdGlvbmFsQWxsb3dlZEltYWdlRm9ybWF0cykKK3sKKyAg
ICBSZXRhaW5QdHI8V0tXZWJWaWV3Q29uZmlndXJhdGlvbj4gY29uZmlndXJhdGlvbiA9IGFkb3B0
TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgW2NvbmZpZ3Vy
YXRpb24gX3NldEFkZGl0aW9uYWxBbGxvd2VkSW1hZ2VGb3JtYXRzOkBbQCJjb20udHJ1ZXZpc2lv
bi50Z2EtaW1hZ2UiXV07CisKKyAgICBSZXRhaW5QdHI8V0tXZWJWaWV3PiB3ZWJWaWV3ID0gYWRv
cHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgw
MCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKworICAgIFJldGFp
blB0cjxOU1VSTD4gdGVzdFVSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3Vy
Y2U6QCJ0Z2EtaW1hZ2UiIHdpdGhFeHRlbnNpb246QCJwbmciIHN1YmRpcmVjdG9yeTpAIlRlc3RX
ZWJLaXRBUEkucmVzb3VyY2VzIl07CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVx
dWVzdCByZXF1ZXN0V2l0aFVSTDp0ZXN0VVJMLmdldCgpXV07CisgICAgW3dlYlZpZXcgX3Rlc3Rf
d2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb25dOworCisgICAgX19ibG9jayBib29sIGlzRG9uZSA9
IGZhbHNlOworICAgIFt3ZWJWaWV3IF9kb0FmdGVyTmV4dFByZXNlbnRhdGlvblVwZGF0ZTpeewor
ICAgICAgICBbd2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6QCJbZG9jdW1lbnQucXVlcnlTZWxl
Y3RvcignaW1nJykud2lkdGhdIiBjb21wbGV0aW9uSGFuZGxlcjpeKGlkIHZhbHVlLCBOU0Vycm9y
ICplcnJvcikgeworICAgICAgICAgICAgQ0dGbG9hdCB3aWR0aCA9IFtbdmFsdWUgb2JqZWN0QXRJ
bmRleDowXSBmbG9hdFZhbHVlXTsKKyAgICAgICAgICAgIEVYUEVDVF9FUSh3aWR0aCwgMTAwKTsK
KyAgICAgICAgICAgIGlzRG9uZSA9IHRydWU7CisgICAgICAgIH1dOworICAgIH1dOworICAgIFRl
c3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKK30KKworI2VuZGlmCmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL3RnYS1pbWFnZS5wbmcgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL3RnYS1pbWFnZS5wbmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMDY5NThiYTBjNDQxMDYwNTg4ODRhM2YyNGEyM2VlZDE4MjhiMTc0YgpHSVQgYmluYXJ5
IHBhdGNoCmxpdGVyYWwgNTE4CmNjbVpRejs5YEoqNm93UUExJnpsSDRGQ1UrNStmPU0wQ3ttQzRn
ZGZFCgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>352301</attachid>
            <date>2018-10-14 23:29:05 -0700</date>
            <delta_ts>2018-10-15 00:06:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190454-20181014232904.patch</filename>
            <type>text/plain</type>
            <size>36726</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3MDY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjlkY2FiMDkxMzA1OTE1
MDVmYjg5OTEyZmY4ZDE2YTZjMDg5NzZjOS4uZDgxYjVmZTA4MDNlNThiZjgxYzQwNzNiODgzOWY5
MWIzNjEzNzc3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDE4LTEwLTE0ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGFu
IFNQSSB0byBhbGxvdyBXZWJWaWV3IGNsaWVudHMgdG8gYWRkIGFkZGl0aW9uYWwgc3VwcG9ydGVk
IGltYWdlIGZvcm1hdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE5MDQ1NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFkZCBhbiBTUEkgdG8gYWxsb3cgYWRkaXRpb25hbCBzdXBwb3J0ZWQgaW1hZ2UgZm9y
bWF0cyBpbiBXZWJWaWV3LiBUaGVzZQorICAgICAgICBhZGRpdGlvbmFsIGZvcm1hdHMgY2FuIGJl
IHNldCBpbiB0aGUgV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhcyBhbiBOU0FycmF5CisgICAgICAg
IG9mIE5TdHJpbmdzLiBFYWNoIHN0cmluZyByZXByZXNlbnRzIHRoZSBVVEkgb2YgdGhlIGFkZGl0
aW9uYWwgYWxsb3dlZCAKKyAgICAgICAgaW1hZ2UgZm9ybWF0LgorCisgICAgICAgICogcGxhdGZv
cm0vTUlNRVR5cGVSZWdpc3RyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjppbml0aWFsaXplU3Vw
cG9ydGVkSW1hZ2VNSU1FVHlwZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0lt
YWdlRGVjb2RlckNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckNHOjplbmNv
ZGVkRGF0YVN0YXR1cyBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvVVRJ
UmVnaXN0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZGVmYXVsdEFsbG93ZWRJbWFnZUZvcm1h
dHMpOiBUaGlzIGlzIHRoZSBXZWJLaXQgZGVmYXVsdCBsaXN0IG9mCisgICAgICAgIHN1cHBvcnRl
ZCBpbWFnZSBmb3JtYXRzLgorICAgICAgICAoV2ViQ29yZTo6YWRkaXRpb25hbEFsbG93ZWRJbWFn
ZUZvcm1hdHMpOgorICAgICAgICAoV2ViQ29yZTo6c2V0QWRkaXRpb25hbEFsbG93ZWRJbWFnZUZv
cm1hdHMpOgorICAgICAgICAoV2ViQ29yZTo6aXNBbGxvd2VkSW1hZ2VGb3JtYXQpOiBUaGlzIGZ1
bmN0aW9uIGNoZWNrcyB0aGUgZGVmYXVsdCBsaXN0IGFuZAorICAgICAgICB0aGUgYWRkaXRpb25h
bCBsaXN0IHRvIGRlY2lkZSB3aGV0aGVyIHRoZSBpbWFnZSBmb3JtYXQgaXMgc3VwcG9ydGVkLgor
ICAgICAgICAoV2ViQ29yZTo6YWxsb3dlZEltYWdlVVRJcyk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjppc0FsbG93ZWRJbWFnZVVUSSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvVVRJUmVnaXN0cnkuaDoKKwogMjAxOC0xMC0xMSAgRG9uIE9sbXN0ZWFkICA8
ZG9uLm9sbXN0ZWFkQHNvbnkuY29tPgogCiAgICAgICAgIEFkZCBIb3VkaW5pIHNwZWNzIHRvIGZl
YXR1cmVzLmpzb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNTY2MTIxNGJlMzAwNTIyYzg2ZGVkOGI1MWRhYWNlMjg3
NmZhM2M1ZC4uZDE4OTk3YjE5ZDExMjExMzJmZmZiYjFjZGUyOWJmYTk0Zjg0Y2VhYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw0MyBAQAorMjAxOC0xMC0xNCAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJv
dWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBhbiBTUEkgdG8gYWxsb3cgV2ViVmll
dyBjbGllbnRzIHRvIGFkZCBhZGRpdGlvbmFsIHN1cHBvcnRlZCBpbWFnZSBmb3JtYXRzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTA0NTQKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFBsYXRmb3JtL21h
Yy9TdHJpbmdVdGlsaXRpZXMuaDoKKyAgICAgICAgKiBQbGF0Zm9ybS9tYWMvU3RyaW5nVXRpbGl0
aWVzLm1tOgorICAgICAgICAoV2ViS2l0Ojp3ZWJDb3JlU3RyaW5nTGlzdEZyb21Oc1N0cmluZ0Fy
cmF5KToKKyAgICAgICAgKiBTaGFyZWQvV2ViUHJlZmVyZW5jZXMueWFtbDoKKyAgICAgICAgKiBT
aGFyZWQvV2ViUHJlZmVyZW5jZXNTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByZWZl
cmVuY2VzU3RvcmU6OnNldFN0cmluZ2xpc3RWYWx1ZUZvcktleSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlByZWZlcmVuY2VzU3RvcmU6OmdldFN0cmluZ2xpc3RWYWx1ZUZvcktleSBjb25zdCk6IEFk
ZCBzdXBwb3J0CisgICAgICAgIGZvciBzdG9yaW5nIGEgbGlzdCBvZiBzdHJpbmdzIGluIHRoZSBX
ZWJQcmVmZXJlbmNlc1N0b3JlLgorICAgICAgICAqIFNoYXJlZC9XZWJQcmVmZXJlbmNlc1N0b3Jl
Lmg6CisgICAgICAgICogU2hhcmVkL1dlYlByZWZlcmVuY2VzU3RvcmUuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9p
bml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb246XSk6IFNldCB0aGUgdmFsdWUgb2YgQWRkaXRpb25h
bEFsbG93ZWRJbWFnZUZvcm1hdHMKKyAgICAgICAgZnJvbSBXS1dlYlZpZXdDb25maWd1cmF0aW9u
IHRvIHRoZSBXZWJQcmVmZXJlbmNlcy4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlld0NvbmZpZ3VyYXRpb24ubW06CisgICAgICAgICgtW1dLV2ViVmlld0NvbmZpZ3VyYXRp
b24gY29weVdpdGhab25lOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF9h
ZGRpdGlvbmFsQWxsb3dlZEltYWdlRm9ybWF0c10pOgorICAgICAgICAoLVtXS1dlYlZpZXdDb25m
aWd1cmF0aW9uIF9zZXRBZGRpdGlvbmFsQWxsb3dlZEltYWdlRm9ybWF0czpdKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlByZWZlcmVuY2VzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJlZmVyZW5jZXM6OnVwZGF0ZVN0cmluZ2xpc3RWYWx1ZUZvcktleSk6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYlByZWZlcmVuY2VzLmg6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJQ
cmVmZXJlbmNlc01hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJlZmVyZW5jZXM6OnBsYXRm
b3JtR2V0U3RyaW5nbGlzdFVzZXJWYWx1ZUZvcktleSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBy
ZWZlcmVuY2VzOjpwbGF0Zm9ybVVwZGF0ZVN0cmluZ1ZhbHVlRm9yS2V5KToKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJlZmVyZW5jZXM6OnBsYXRmb3JtVXBkYXRlU3RyaW5nbGlzdFZhbHVlRm9yS2V5
KToKKyAgICAgICAgKiBVSVByb2Nlc3Mvd2luL1dlYlByZWZlcmVuY2VzV2luLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJlZmVyZW5jZXM6OnBsYXRmb3JtVXBkYXRlU3RyaW5nbGlzdFZhbHVl
Rm9yS2V5KToKKyAgICAgICAgKiBVSVByb2Nlc3Mvd3BlL1dlYlByZWZlcmVuY2VzV1BFLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJlZmVyZW5jZXM6OnBsYXRmb3JtVXBkYXRlU3RyaW5nbGlz
dFZhbHVlRm9yS2V5KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnVwZGF0ZVByZWZlcmVuY2VzKTogQ29weSB0aGUg
dmFsdWUgb2YgQWRkaXRpb25hbEFsbG93ZWRJbWFnZUZvcm1hdHMKKyAgICAgICAgZnJvbSBXZWJQ
cmVmZXJlbmNlcyB0byB0aGUgV2ViQ29yZSBmdW5jdGlvbiBzZXRBZGRpdGlvbmFsQWxsb3dlZElt
YWdlRm9ybWF0cygpLgorCiAyMDE4LTEwLTExICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxl
LmNvbT4KIAogICAgICAgICBJT1MgMTIgLSBTZXJ2aWNlIHdvcmtlciBjYWNoZSBub3Qgc2hhcmVk
IHdoZW4gYWRkZWQgdG8gaG9tZXNjcmVlbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1F
VHlwZVJlZ2lzdHJ5LmNwcAppbmRleCBmM2RkMTRmMDU1MDA4YTZjMzQyZTczYTJjZGNjN2YxMmM2
MTMzMDg2Li5iNmFjYTFiOTJiMTk1MjBjMTExZjVkMjIyYTkyYzNhMTE2YWI1ZGJjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcApAQCAtNzgsNyArNzgs
NyBAQCBzdGF0aWMgdm9pZCBpbml0aWFsaXplU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXMoKQogICAg
IH0KIAogI2lmbmRlZiBOREVCVUcKLSAgICBmb3IgKGF1dG8mIHV0aSA6IGFsbG93ZWRJbWFnZVVU
SXMoKSkgeworICAgIGZvciAoYXV0byYgdXRpIDogZGVmYXVsdEFsbG93ZWRJbWFnZUZvcm1hdHMo
KSkgewogICAgICAgICBhdXRvIG1pbWVUeXBlID0gTUlNRVR5cGVGb3JJbWFnZVNvdXJjZVR5cGUo
dXRpKTsKICAgICAgICAgaWYgKCFtaW1lVHlwZS5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIEFT
U0VSVChzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlcy0+Y29udGFpbnMobWltZVR5cGUpKTsKQEAgLTg4
LDcgKzg4LDcgQEAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVN1cHBvcnRlZEltYWdlTUlNRVR5cGVz
KCkKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGZvciAoYXV0byYgbWltZSA6ICpzdXBwb3J0
ZWRJbWFnZU1JTUVUeXBlcykKLSAgICAgICAgQVNTRVJUX1VOVVNFRChtaW1lLCBhbGxvd2VkSW1h
Z2VVVElzKCkuY29udGFpbnMoVVRJRnJvbU1JTUVUeXBlKG1pbWUpKSk7CisgICAgICAgIEFTU0VS
VF9VTlVTRUQobWltZSwgZGVmYXVsdEFsbG93ZWRJbWFnZUZvcm1hdHMoKS5jb250YWlucyhVVElG
cm9tTUlNRVR5cGUobWltZSkpKTsKICNlbmRpZgogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcAppbmRleCA4
YjYxZTZjNzZmOTljMzYxNGQ0YTMwYmU2YTBmY2MxZDBjYzQyODE3Li5iNzgwMjE5ODdiY2IyZmQ0
ODNmZTNjMjBkNjczN2FhNTNiYjUxNDc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCkBAIC0xOTksNyArMTk5LDcg
QEAgRW5jb2RlZERhdGFTdGF0dXMgSW1hZ2VEZWNvZGVyQ0c6OmVuY29kZWREYXRhU3RhdHVzKCkg
Y29uc3QKICAgICAgICAgcmV0dXJuIEVuY29kZWREYXRhU3RhdHVzOjpFcnJvcjsKIAogICAgIGNh
c2Uga0NHSW1hZ2VTdGF0dXNJbmNvbXBsZXRlOiB7Ci0gICAgICAgIGlmICghaXNBbGxvd2VkSW1h
Z2VVVEkodXRpKSkKKyAgICAgICAgaWYgKCFpc0FsbG93ZWRJbWFnZUZvcm1hdCh1dGkpKQogICAg
ICAgICAgICAgcmV0dXJuIEVuY29kZWREYXRhU3RhdHVzOjpFcnJvcjsKIAogICAgICAgICBSZXRh
aW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBpbWFnZTBQcm9wZXJ0aWVzID0gYWRvcHRDRihDR0ltYWdl
U291cmNlQ29weVByb3BlcnRpZXNBdEluZGV4KG1fbmF0aXZlRGVjb2Rlci5nZXQoKSwgMCwgaW1h
Z2VTb3VyY2VPcHRpb25zKCkuZ2V0KCkpKTsKQEAgLTIxMyw3ICsyMTMsNyBAQCBFbmNvZGVkRGF0
YVN0YXR1cyBJbWFnZURlY29kZXJDRzo6ZW5jb2RlZERhdGFTdGF0dXMoKSBjb25zdAogICAgIH0K
IAogICAgIGNhc2Uga0NHSW1hZ2VTdGF0dXNDb21wbGV0ZToKLSAgICAgICAgaWYgKCFpc0FsbG93
ZWRJbWFnZVVUSSh1dGkpKQorICAgICAgICBpZiAoIWlzQWxsb3dlZEltYWdlRm9ybWF0KHV0aSkp
CiAgICAgICAgICAgICByZXR1cm4gRW5jb2RlZERhdGFTdGF0dXM6OkVycm9yOwogCiAgICAgICAg
IHJldHVybiBFbmNvZGVkRGF0YVN0YXR1czo6Q29tcGxldGU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9VVElSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9VVElSZWdpc3RyeS5jcHAKaW5kZXggZDM0MjI0MzNl
NTI5ZWUxMzc4ZmJjYjQ4MjIwMTUyZjc0M2U4OWE1OS4uODk0NmU2YWIzMDBmZmJjN2VkNDgyNmM3
M2JjYTkzZjEzMGQxZDVhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvVVRJUmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL1VUSVJlZ2lzdHJ5LmNwcApAQCAtMzgsMTAgKzM4LDEwIEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotSGFzaFNldDxTdHJpbmc+JiBhbGxvd2VkSW1hZ2VVVElzKCkKK0hhc2hT
ZXQ8U3RyaW5nPiYgZGVmYXVsdEFsbG93ZWRJbWFnZUZvcm1hdHMoKQogewogICAgIC8vIENHIGF0
IGxlYXN0IHN1cHBvcnRzIHRoZSBmb2xsb3dpbmcgc3RhbmRhcmQgaW1hZ2UgdHlwZXM6Ci0gICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hTZXQ8U3RyaW5nPj4gc19hbGxvd2VkSW1hZ2VVVElz
ID0gc3RkOjppbml0aWFsaXplcl9saXN0PFN0cmluZz4geworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxIYXNoU2V0PFN0cmluZz4+IGRlZmF1bHRBbGxvd2VkSW1hZ2VGb3JtYXRzID0gc3RkOjpp
bml0aWFsaXplcl9saXN0PFN0cmluZz4gewogICAgICAgICAiY29tLmNvbXB1c2VydmUuZ2lmIiwK
ICAgICAgICAgImNvbS5taWNyb3NvZnQuYm1wIiwKICAgICAgICAgImNvbS5taWNyb3NvZnQuY3Vy
IiwKQEAgLTU5LDcgKzU5LDcgQEAgSGFzaFNldDxTdHJpbmc+JiBhbGxvd2VkSW1hZ2VVVElzKCkK
ICAgICBpZiAoIWNoZWNrZWQpIHsKICAgICAgICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IHN5c3Rl
bUltYWdlVVRJcyA9IGFkb3B0Q0YoQ0dJbWFnZVNvdXJjZUNvcHlUeXBlSWRlbnRpZmllcnMoKSk7
CiAgICAgICAgIENGSW5kZXggY291bnQgPSBDRkFycmF5R2V0Q291bnQoc3lzdGVtSW1hZ2VVVElz
LmdldCgpKTsKLSAgICAgICAgZm9yIChhdXRvJiBpbWFnZVVUSSA6IHNfYWxsb3dlZEltYWdlVVRJ
cy5nZXQoKSkgeworICAgICAgICBmb3IgKGF1dG8mIGltYWdlVVRJIDogZGVmYXVsdEFsbG93ZWRJ
bWFnZUZvcm1hdHMuZ2V0KCkpIHsKICAgICAgICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4g
c3RyaW5nID0gaW1hZ2VVVEkuY3JlYXRlQ0ZTdHJpbmcoKTsKICAgICAgICAgICAgIEFTU0VSVChD
RkFycmF5Q29udGFpbnNWYWx1ZShzeXN0ZW1JbWFnZVVUSXMuZ2V0KCksIENGUmFuZ2VNYWtlKDAs
IGNvdW50KSwgc3RyaW5nLmdldCgpKSk7CiAgICAgICAgIH0KQEAgLTY3LDEyICs2NywyMyBAQCBI
YXNoU2V0PFN0cmluZz4mIGFsbG93ZWRJbWFnZVVUSXMoKQogICAgIH0KICNlbmRpZgogCi0gICAg
cmV0dXJuIHNfYWxsb3dlZEltYWdlVVRJcy5nZXQoKTsKKyAgICByZXR1cm4gZGVmYXVsdEFsbG93
ZWRJbWFnZUZvcm1hdHM7CiB9CiAKLWJvb2wgaXNBbGxvd2VkSW1hZ2VVVEkoY29uc3QgU3RyaW5n
JiBpbWFnZVVUSSkKK3N0YXRpYyBWZWN0b3I8U3RyaW5nPiYgYWRkaXRpb25hbEFsbG93ZWRJbWFn
ZUZvcm1hdHMoKQogewotICAgIHJldHVybiAhaW1hZ2VVVEkuaXNFbXB0eSgpICYmIGFsbG93ZWRJ
bWFnZVVUSXMoKS5jb250YWlucyhpbWFnZVVUSSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PFZlY3RvcjxTdHJpbmc+PiBhZGRpdGlvbmFsQWxsb3dlZEltYWdlRm9ybWF0czsKKyAgICByZXR1
cm4gYWRkaXRpb25hbEFsbG93ZWRJbWFnZUZvcm1hdHM7Cit9CisKK3ZvaWQgc2V0QWRkaXRpb25h
bEFsbG93ZWRJbWFnZUZvcm1hdHMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHZhbHVlKQoreworICAg
IGFkZGl0aW9uYWxBbGxvd2VkSW1hZ2VGb3JtYXRzKCkgPSB2YWx1ZTsKK30KKworYm9vbCBpc0Fs
bG93ZWRJbWFnZUZvcm1hdChjb25zdCBTdHJpbmcmIGltYWdlVVRJKQoreworICAgIHJldHVybiAh
aW1hZ2VVVEkuaXNFbXB0eSgpICYmIChkZWZhdWx0QWxsb3dlZEltYWdlRm9ybWF0cygpLmNvbnRh
aW5zKGltYWdlVVRJKSB8fCBhZGRpdGlvbmFsQWxsb3dlZEltYWdlRm9ybWF0cygpLmNvbnRhaW5z
KGltYWdlVVRJKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL1VUSVJlZ2lzdHJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9VVElSZWdpc3RyeS5oCmluZGV4IDIyZjI2YWRiNTBjOWZlODYzZTAyNzJlYmZmYjEz
NTNmY2YzNTRjNDUuLjE0NjNhOWQyNmQwYzlmNWZkZmFiNzYwNzM2ZjE4NTMxNzllNDJjNTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1VUSVJlZ2lzdHJ5
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvVVRJUmVnaXN0cnku
aApAQCAtMzAsNyArMzAsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUhhc2hTZXQ8U3Ry
aW5nPiYgYWxsb3dlZEltYWdlVVRJcygpOwotYm9vbCBpc0FsbG93ZWRJbWFnZVVUSShjb25zdCBT
dHJpbmcmKTsKK0hhc2hTZXQ8U3RyaW5nPiYgZGVmYXVsdEFsbG93ZWRJbWFnZUZvcm1hdHMoKTsK
K2Jvb2wgaXNBbGxvd2VkSW1hZ2VGb3JtYXQoY29uc3QgU3RyaW5nJik7CitXRUJDT1JFX0VYUE9S
VCB2b2lkIHNldEFkZGl0aW9uYWxBbGxvd2VkSW1hZ2VGb3JtYXRzKGNvbnN0IFZlY3RvcjxTdHJp
bmc+Jik7CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vbWFjL1N0cmlu
Z1V0aWxpdGllcy5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9tYWMvU3RyaW5nVXRpbGl0aWVz
LmgKaW5kZXggMjlhNzZjZDc1MzhjNWRmYzhlMWE4ZDI4OWVjYzllOGI2YzgwNWRmMC4uZWYyMjBl
OGEzYWQ5MGJiYTEyMTEwOGNkNjE3NTFlYjVjNGRhZTAwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9tYWMvU3RyaW5nVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9tYWMvU3RyaW5nVXRpbGl0aWVzLmgKQEAgLTMwLDYgKzMwLDggQEAKIAogbmFtZXNw
YWNlIFdlYktpdCB7CiAKK3R5cGVkZWYgVmVjdG9yPFN0cmluZz4gU3RyaW5nTGlzdDsKKwogI2lm
ZGVmIF9fT0JKQ19fCiAKIC8vIE5PVEU6IFRoaXMgZG9lcyBub3QgdXNlIFN0cmluZzo6b3BlcmF0
b3IgTlNTdHJpbmcqKCkgc2luY2UgdGhhdCBmdW5jdGlvbgpAQCAtMzcsNiArMzksOSBAQCBuYW1l
c3BhY2UgV2ViS2l0IHsKIE5TU3RyaW5nICpuc1N0cmluZ0Zyb21XZWJDb3JlU3RyaW5nKGNvbnN0
IFN0cmluZyYpOwogTlNTdHJpbmcgKmZvcm1hdHRlZFBob25lTnVtYmVyU3RyaW5nKE5TU3RyaW5n
ICpvcmlnaW5hbFBob25lTnVtYmVyKTsKIAorU3RyaW5nTGlzdCB3ZWJDb3JlU3RyaW5nTGlzdEZy
b21Oc1N0cmluZ0FycmF5KE5TQXJyYXk8TlNTdHJpbmcgKj4gKik7CitOU0FycmF5PE5TU3RyaW5n
ICo+ICpuc1N0cmluZ0FycmF5RnJvbVdlYkNvcmVTdHJpbmdMaXN0KGNvbnN0IFN0cmluZ0xpc3Qm
KTsKKwogI2VuZGlmIC8vIGRlZmluZWQoX19PQkpDX18pCiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vbWFjL1N0cmluZ1V0aWxpdGllcy5tbSBiL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vbWFjL1N0cmluZ1V0aWxpdGllcy5tbQppbmRleCA1Yzk2NzkzN2NlNGY5YjE4MGQ4
MDFkOWUyMjhiNjZjOTA3N2E2YmVjLi4wZTA1NDlkN2RiMDkwNjU3MTJmMmY3MTFmYzQzZDljYTFj
ZWEwZjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL21hYy9TdHJpbmdVdGls
aXRpZXMubW0KKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9tYWMvU3RyaW5nVXRpbGl0aWVz
Lm1tCkBAIC04Miw0ICs4MiwyMSBAQCBOU1N0cmluZyAqZm9ybWF0dGVkUGhvbmVOdW1iZXJTdHJp
bmcoTlNTdHJpbmcgKikKIAogI2VuZGlmIC8vIEVOQUJMRShURUxFUEhPTkVfTlVNQkVSX0RFVEVD
VElPTikgJiYgUExBVEZPUk0oTUFDKQogCitTdHJpbmdMaXN0IHdlYkNvcmVTdHJpbmdMaXN0RnJv
bU5zU3RyaW5nQXJyYXkoTlNBcnJheTxOU1N0cmluZyAqPiAqbnNTdHJpbmdBcnJheSkKK3sKKyAg
ICBTdHJpbmdMaXN0IHN0cmluZ0xpc3Q7CisgICAgW25zU3RyaW5nQXJyYXkgZW51bWVyYXRlT2Jq
ZWN0c1VzaW5nQmxvY2s6WyZdIChOU1N0cmluZyAqbnNTdHJpbmcsIE5TVUludGVnZXIsIEJPT0wg
KikgeworICAgICAgICBzdHJpbmdMaXN0LmFwcGVuZChTdHJpbmcobnNTdHJpbmcpKTsKKyAgICB9
XTsKKyAgICByZXR1cm4gc3RyaW5nTGlzdDsKK30KKworTlNBcnJheTxOU1N0cmluZyAqPiAqbnNT
dHJpbmdBcnJheUZyb21XZWJDb3JlU3RyaW5nTGlzdChjb25zdCBTdHJpbmdMaXN0JiBzdHJpbmdM
aXN0KQoreworICAgIE5TTXV0YWJsZUFycmF5ICpuc1N0cmluZ0FycmF5ID0gW05TTXV0YWJsZUFy
cmF5IGFycmF5XTsKKyAgICBmb3IgKGF1dG8gc3RyaW5nIDogc3RyaW5nTGlzdCkKKyAgICAgICAg
W25zU3RyaW5nQXJyYXkgYWRkT2JqZWN0OltOU1N0cmluZyBzdHJpbmdXaXRoVVRGOFN0cmluZzpz
dHJpbmcudXRmOCgpLmRhdGEoKV1dOworICAgIHJldHVybiBuc1N0cmluZ0FycmF5OworfQorCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlcy55YW1sIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXMueWFtbAppbmRleCA3NTY0OThiMzFi
NGM0YTZjMDk1MzBmN2Q2Zjc1N2VmMWYxMGRlNTM5Li43NGJkMTY2ZDc3Y2EzMmM5NThhY2ViMTMw
MTZmNWNlYTdhNGUxZTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVm
ZXJlbmNlcy55YW1sCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzLnlh
bWwKQEAgLTY1Niw2ICs2NTYsMTEgQEAgQW5pbWF0ZWRJbWFnZUFzeW5jRGVjb2RpbmdFbmFibGVk
OgogICB0eXBlOiBib29sCiAgIGRlZmF1bHRWYWx1ZTogdHJ1ZQogCitBZGRpdGlvbmFsQWxsb3dl
ZEltYWdlRm9ybWF0czoKKyAgICB0eXBlOiBTdHJpbmdMaXN0CisgICAgZGVmYXVsdFZhbHVlOiAn
eyB9JworICAgIHdlYmNvcmVCaW5kaW5nOiBub25lCisKIEN1c3RvbUVsZW1lbnRzRW5hYmxlZDoK
ICAgdHlwZTogYm9vbAogICBkZWZhdWx0VmFsdWU6IHRydWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViUHJlZmVyZW5jZXNTdG9yZS5jcHAKaW5kZXggNjdhMDY4NzgyZjEzM2FjMTcwNjIyNmVj
ZWRjZGI1MTAwYzMyY2RhNC4uOWFmNzBlNDMxZDBhNWY4M2VhN2VjNDc3YzczYWZkYmM4YzFiNDUx
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXNTdG9yZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXNTdG9yZS5jcHAKQEAg
LTExNiw2ICsxMTYsMTYgQEAgU3RyaW5nIFdlYlByZWZlcmVuY2VzU3RvcmU6OmdldFN0cmluZ1Zh
bHVlRm9yS2V5KGNvbnN0IFN0cmluZyYga2V5KSBjb25zdAogICAgIHJldHVybiB2YWx1ZUZvcktl
eTxTdHJpbmc+KG1fdmFsdWVzLCBtX292ZXJyaWRkZW5EZWZhdWx0cywga2V5KTsKIH0KIAorYm9v
bCBXZWJQcmVmZXJlbmNlc1N0b3JlOjpzZXRTdHJpbmdsaXN0VmFsdWVGb3JLZXkoY29uc3QgU3Ry
aW5nJiBrZXksIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB2YWx1ZSkKK3sKKyAgICByZXR1cm4gc2V0
VmFsdWVGb3JLZXk8VmVjdG9yPFN0cmluZz4+KG1fdmFsdWVzLCBtX292ZXJyaWRkZW5EZWZhdWx0
cywga2V5LCB2YWx1ZSk7Cit9CisgICAgCitWZWN0b3I8U3RyaW5nPiBXZWJQcmVmZXJlbmNlc1N0
b3JlOjpnZXRTdHJpbmdsaXN0VmFsdWVGb3JLZXkoY29uc3QgU3RyaW5nJiBrZXkpIGNvbnN0Cit7
CisgICAgcmV0dXJuIHZhbHVlRm9yS2V5PFZlY3RvcjxTdHJpbmc+PihtX3ZhbHVlcywgbV9vdmVy
cmlkZGVuRGVmYXVsdHMsIGtleSk7Cit9CisKIGJvb2wgV2ViUHJlZmVyZW5jZXNTdG9yZTo6c2V0
Qm9vbFZhbHVlRm9yS2V5KGNvbnN0IFN0cmluZyYga2V5LCBib29sIHZhbHVlKQogewogICAgIHJl
dHVybiBzZXRWYWx1ZUZvcktleTxib29sPihtX3ZhbHVlcywgbV9vdmVycmlkZGVuRGVmYXVsdHMs
IGtleSwgdmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVy
ZW5jZXNTdG9yZS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXNTdG9yZS5o
CmluZGV4IDRiMzk2ODZkZWU4ZGY3M2RiYjQ5YTZmN2RjZjY4ZDhmZmE4YjMzOTUuLmI1NDc0YTY1
ZmMyZWMzN2NmZGU4M2Y3Zjc2NzdmNmYxMzc3MTEwY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJQcmVmZXJlbmNlc1N0b3JlLmgKQEAgLTMzLDYgKzMzLDggQEAKIAogbmFtZXNwYWNlIFdl
YktpdCB7CiAKK3R5cGVkZWYgVmVjdG9yPFN0cmluZz4gU3RyaW5nTGlzdDsKKwogc3RydWN0IFdl
YlByZWZlcmVuY2VzU3RvcmUgewogICAgIFdlYlByZWZlcmVuY2VzU3RvcmUoKTsKIApAQCAtNDQs
NiArNDYsOSBAQCBzdHJ1Y3QgV2ViUHJlZmVyZW5jZXNTdG9yZSB7CiAgICAgYm9vbCBzZXRTdHJp
bmdWYWx1ZUZvcktleShjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7CiAg
ICAgU3RyaW5nIGdldFN0cmluZ1ZhbHVlRm9yS2V5KGNvbnN0IFN0cmluZyYga2V5KSBjb25zdDsK
IAorICAgIGJvb2wgc2V0U3RyaW5nbGlzdFZhbHVlRm9yS2V5KGNvbnN0IFN0cmluZyYga2V5LCBj
b25zdCBTdHJpbmdMaXN0JiB2YWx1ZSk7CisgICAgU3RyaW5nTGlzdCBnZXRTdHJpbmdsaXN0VmFs
dWVGb3JLZXkoY29uc3QgU3RyaW5nJiBrZXkpIGNvbnN0OworCiAgICAgYm9vbCBzZXRCb29sVmFs
dWVGb3JLZXkoY29uc3QgU3RyaW5nJiBrZXksIGJvb2wgdmFsdWUpOwogICAgIGJvb2wgZ2V0Qm9v
bFZhbHVlRm9yS2V5KGNvbnN0IFN0cmluZyYga2V5KSBjb25zdDsKIApAQCAtNjIsNyArNjcsNyBA
QCBzdHJ1Y3QgV2ViUHJlZmVyZW5jZXNTdG9yZSB7CiAgICAgc3RhdGljIHZvaWQgb3ZlcnJpZGVC
b29sVmFsdWVGb3JLZXkoY29uc3QgU3RyaW5nJiBrZXksIGJvb2wgdmFsdWUpOwogICAgIHN0YXRp
YyB2b2lkIHJlbW92ZVRlc3RSdW5uZXJPdmVycmlkZXMoKTsKIAotICAgIHVzaW5nIFZhbHVlID0g
VmFyaWFudDxTdHJpbmcsIGJvb2wsIHVpbnQzMl90LCBkb3VibGU+OworICAgIHVzaW5nIFZhbHVl
ID0gVmFyaWFudDxTdHJpbmcsIFN0cmluZ0xpc3QsIGJvb2wsIHVpbnQzMl90LCBkb3VibGU+Owog
CiAgICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgVmFsdWU+IFZhbHVlTWFwOwogICAgIFZhbHVl
TWFwIG1fdmFsdWVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXcubW0KaW5kZXggZTY1MzJkNDc5MTk0YjlkYjRmMWIxNjQwOWZiM2NjMTUxOTNiNzgwZS4u
YjIxODE3ZTMwZDAwYjVlYWY5M2JjYmJiODYwZTgzNzJlZThlY2Q2YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBAIC00Niw2ICs0Niw3IEBA
CiAjaW1wb3J0ICJSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5oIgogI2ltcG9ydCAiUmVtb3Rl
T2JqZWN0UmVnaXN0cnkuaCIKICNpbXBvcnQgIlJlbW90ZU9iamVjdFJlZ2lzdHJ5TWVzc2FnZXMu
aCIKKyNpbXBvcnQgIlN0cmluZ1V0aWxpdGllcy5oIgogI2ltcG9ydCAiVUlEZWxlZ2F0ZS5oIgog
I2ltcG9ydCAiVXNlck1lZGlhUHJvY2Vzc01hbmFnZXIuaCIKICNpbXBvcnQgIlZlcnNpb25DaGVj
a3MuaCIKQEAgLTY0Myw2ICs2NDQsOCBAQCBzdGF0aWMgdm9pZCB2YWxpZGF0ZShXS1dlYlZpZXdD
b25maWd1cmF0aW9uICpjb25maWd1cmF0aW9uKQogICAgICAgICBwYWdlQ29uZmlndXJhdGlvbi0+
cHJlZmVyZW5jZVZhbHVlcygpLnNldChXZWJLaXQ6OldlYlByZWZlcmVuY2VzS2V5OjpzZXJ2aWNl
V29ya2Vyc0VuYWJsZWRLZXkoKSwgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1ZShm
YWxzZSkpOwogI2VuZGlmCiAKKyAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZVZhbHVl
cygpLnNldChXZWJLaXQ6OldlYlByZWZlcmVuY2VzS2V5OjphZGRpdGlvbmFsQWxsb3dlZEltYWdl
Rm9ybWF0c0tleSgpLCBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmU6OlZhbHVlKFdlYktpdDo6
d2ViQ29yZVN0cmluZ0xpc3RGcm9tTnNTdHJpbmdBcnJheShbX2NvbmZpZ3VyYXRpb24gX2FkZGl0
aW9uYWxBbGxvd2VkSW1hZ2VGb3JtYXRzXSkpKTsKKwogI2lmIFBMQVRGT1JNKElPUykKICAgICBD
R1JlY3QgYm91bmRzID0gc2VsZi5ib3VuZHM7CiAgICAgX3Njcm9sbFZpZXcgPSBhZG9wdE5TKFtb
V0tTY3JvbGxWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOmJvdW5kc10pOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24u
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJh
dGlvbi5tbQppbmRleCA0M2E1MTM0MjViZmM5ZDc3M2M4YmFhOTE4YzViZjYyZGJkOTQxMTYxLi5k
NjZlZjFlMjA5ODgwNmI3ZDkyMWYzZjBjODY0OTIxNzBjYzVmNjEzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJh
dGlvbi5tbQpAQCAtMTYxLDYgKzE2MSw3IEBAIHN0YXRpYyBfV0tEcmFnTGlmdERlbGF5IHRvRHJh
Z0xpZnREZWxheShOU1VJbnRlZ2VyIHZhbHVlKQogICAgIEJPT0wgX2RyYXdzQmFja2dyb3VuZDsK
IAogICAgIFJldGFpblB0cjxOU1N0cmluZz4gX21lZGlhQ29udGVudFR5cGVzUmVxdWlyaW5nSGFy
ZHdhcmVTdXBwb3J0OworICAgIFJldGFpblB0cjxOU0FycmF5PE5TU3RyaW5nICo+PiBfYWRkaXRp
b25hbEFsbG93ZWRJbWFnZUZvcm1hdHM7CiB9CiAKIC0gKGluc3RhbmNldHlwZSlpbml0CkBAIC0z
OTQsNiArMzk1LDcgQEAgc3RhdGljIF9XS0RyYWdMaWZ0RGVsYXkgdG9EcmFnTGlmdERlbGF5KE5T
VUludGVnZXIgdmFsdWUpCiAgICAgY29uZmlndXJhdGlvbi0+X25lZWRzU3RvcmFnZUFjY2Vzc0Zy
b21GaWxlVVJMc1F1aXJrID0gc2VsZi0+X25lZWRzU3RvcmFnZUFjY2Vzc0Zyb21GaWxlVVJMc1F1
aXJrOwogCiAgICAgY29uZmlndXJhdGlvbi0+X21lZGlhQ29udGVudFR5cGVzUmVxdWlyaW5nSGFy
ZHdhcmVTdXBwb3J0ID0gYWRvcHROUyhbc2VsZi5fbWVkaWFDb250ZW50VHlwZXNSZXF1aXJpbmdI
YXJkd2FyZVN1cHBvcnQgY29weVdpdGhab25lOnpvbmVdKTsKKyAgICBjb25maWd1cmF0aW9uLT5f
YWRkaXRpb25hbEFsbG93ZWRJbWFnZUZvcm1hdHMgPSBhZG9wdE5TKFtzZWxmLT5fYWRkaXRpb25h
bEFsbG93ZWRJbWFnZUZvcm1hdHMgY29weVdpdGhab25lOnpvbmVdKTsKICAgICBjb25maWd1cmF0
aW9uLT5fbGVnYWN5RW5jcnlwdGVkTWVkaWFBUElFbmFibGVkID0gc2VsZi0+X2xlZ2FjeUVuY3J5
cHRlZE1lZGlhQVBJRW5hYmxlZDsKICAgICBjb25maWd1cmF0aW9uLT5fYWxsb3dNZWRpYUNvbnRl
bnRUeXBlc1JlcXVpcmluZ0hhcmR3YXJlU3VwcG9ydEFzRmFsbGJhY2sgPSBzZWxmLT5fYWxsb3dN
ZWRpYUNvbnRlbnRUeXBlc1JlcXVpcmluZ0hhcmR3YXJlU3VwcG9ydEFzRmFsbGJhY2s7CiAKQEAg
LTk5MCw2ICs5OTIsMTYgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAg
X21lZGlhQ29udGVudFR5cGVzUmVxdWlyaW5nSGFyZHdhcmVTdXBwb3J0ID0gYWRvcHROUyhbbWVk
aWFDb250ZW50VHlwZXNSZXF1aXJpbmdIYXJkd2FyZVN1cHBvcnQgY29weV0pOwogfQogCistIChO
U0FycmF5PE5TU3RyaW5nICo+ICopX2FkZGl0aW9uYWxBbGxvd2VkSW1hZ2VGb3JtYXRzCit7Cisg
ICAgcmV0dXJuIF9hZGRpdGlvbmFsQWxsb3dlZEltYWdlRm9ybWF0cy5nZXQoKTsKK30KKworLSAo
dm9pZClfc2V0QWRkaXRpb25hbEFsbG93ZWRJbWFnZUZvcm1hdHM6KE5TQXJyYXk8TlNTdHJpbmcg
Kj4gKilhZGRpdGlvbmFsQWxsb3dlZEltYWdlRm9ybWF0cworeworICAgIF9hZGRpdGlvbmFsQWxs
b3dlZEltYWdlRm9ybWF0cyA9IGFkb3B0TlMoW2FkZGl0aW9uYWxBbGxvd2VkSW1hZ2VGb3JtYXRz
IGNvcHldKTsKK30KKwogLSAodm9pZClfc2V0TGVnYWN5RW5jcnlwdGVkTWVkaWFBUElFbmFibGVk
OihCT09MKWVuYWJsZWQKIHsKICAgICBfbGVnYWN5RW5jcnlwdGVkTWVkaWFBUElFbmFibGVkID0g
ZW5hYmxlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmgKaW5kZXggZjEwNWExYWEy
YzNjM2E5ZGExNzYxN2ZhZjcxZDhjNTYwM2Y3ZDg4MS4uZGMwNGIxOTI0ZDJlNjVlMmQxMGNlNTJl
MzU4MjliNzdiYjgxZmYyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmgKQEAg
LTEwMSw2ICsxMDEsNyBAQCB0eXBlZGVmIE5TX0VOVU0oTlNVSW50ZWdlciwgX1dLRHJhZ0xpZnRE
ZWxheSkgewogQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0TWVkaWFDb250ZW50VHlw
ZXNSZXF1aXJpbmdIYXJkd2FyZVN1cHBvcnQ6KSBOU1N0cmluZyAqX21lZGlhQ29udGVudFR5cGVz
UmVxdWlyaW5nSGFyZHdhcmVTdXBwb3J0IFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjEzKSwg
aW9zKDExLjApKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldExlZ2FjeUVuY3J5
cHRlZE1lZGlhQVBJRW5hYmxlZDopIEJPT0wgX2xlZ2FjeUVuY3J5cHRlZE1lZGlhQVBJRW5hYmxl
ZCBXS19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMyksIGlvcygxMS4wKSk7CiBAcHJvcGVydHkg
KG5vbmF0b21pYywgc2V0dGVyPV9zZXRBbGxvd01lZGlhQ29udGVudFR5cGVzUmVxdWlyaW5nSGFy
ZHdhcmVTdXBwb3J0QXNGYWxsYmFjazopIEJPT0wgX2FsbG93TWVkaWFDb250ZW50VHlwZXNSZXF1
aXJpbmdIYXJkd2FyZVN1cHBvcnRBc0ZhbGxiYWNrIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEw
LjEzKSwgaW9zKDExLjApKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5LCBzZXR0ZXI9X3Nl
dEFkZGl0aW9uYWxBbGxvd2VkSW1hZ2VGb3JtYXRzOikgTlNBcnJheTxOU1N0cmluZyAqPiAqX2Fk
ZGl0aW9uYWxBbGxvd2VkSW1hZ2VGb3JtYXRzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01B
Q19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogCiBAZW5kCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlByZWZlcmVuY2VzLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByZWZlcmVuY2VzLmNwcAppbmRleCA0NGEwYTAyYjk4YmM2Y2IxYjEzMTJkZDZlM2E1
YmIyNGNmMzJkMWQ5Li45YWE3N2VjODM5NjU4NWI3MjgxMzdlNTEyNTM2NDMwNDI5MzExNTYzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcmVmZXJlbmNlcy5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJlZmVyZW5jZXMuY3BwCkBAIC0xMjAsNiAr
MTIwLDEyIEBAIHZvaWQgV2ViUHJlZmVyZW5jZXM6OnVwZGF0ZVN0cmluZ1ZhbHVlRm9yS2V5KGNv
bnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIHZhCiAgICAgdXBkYXRlKCk7IC8vIEZJWE1F
OiBPbmx5IHNlbmQgb3ZlciB0aGUgY2hhbmdlZCBrZXkgYW5kIHZhbHVlLgogfQogCit2b2lkIFdl
YlByZWZlcmVuY2VzOjp1cGRhdGVTdHJpbmdsaXN0VmFsdWVGb3JLZXkoY29uc3QgU3RyaW5nJiBr
ZXksIGNvbnN0IFN0cmluZ0xpc3QmIHZhbHVlKQoreworICAgIHBsYXRmb3JtVXBkYXRlU3RyaW5n
bGlzdFZhbHVlRm9yS2V5KGtleSwgdmFsdWUpOworICAgIHVwZGF0ZSgpOyAvLyBGSVhNRTogT25s
eSBzZW5kIG92ZXIgdGhlIGNoYW5nZWQga2V5IGFuZCB2YWx1ZS4KK30KKwogdm9pZCBXZWJQcmVm
ZXJlbmNlczo6dXBkYXRlQm9vbFZhbHVlRm9yS2V5KGNvbnN0IFN0cmluZyYga2V5LCBib29sIHZh
bHVlKQogewogICAgIGlmIChrZXkgPT0gV2ViUHJlZmVyZW5jZXNLZXk6OnByaXZhdGVCcm93c2lu
Z0VuYWJsZWRLZXkoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJlZmVyZW5jZXMuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByZWZlcmVuY2VzLmgK
aW5kZXggYzRhZDQ2ZWU5OTMwYjg1MzlhMjhiYWIwZTU4ZmQ4Y2UwOGQ1YmRiNi4uYmQ2OGIxN2Vh
NjA5YzY3OTIzYjAyZjY4MmEwYWI0YTRhZDQ2NDI1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUHJlZmVyZW5jZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcmVmZXJlbmNlcy5oCkBAIC04Nyw2ICs4Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1
cGRhdGUoKTsKIAogICAgIHZvaWQgdXBkYXRlU3RyaW5nVmFsdWVGb3JLZXkoY29uc3QgU3RyaW5n
JiBrZXksIGNvbnN0IFN0cmluZyYgdmFsdWUpOworICAgIHZvaWQgdXBkYXRlU3RyaW5nbGlzdFZh
bHVlRm9yS2V5KGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmdMaXN0JiB2YWx1ZSk7CiAg
ICAgdm9pZCB1cGRhdGVCb29sVmFsdWVGb3JLZXkoY29uc3QgU3RyaW5nJiBrZXksIGJvb2wgdmFs
dWUpOwogICAgIHZvaWQgdXBkYXRlQm9vbFZhbHVlRm9ySW50ZXJuYWxEZWJ1Z0ZlYXR1cmVLZXko
Y29uc3QgU3RyaW5nJiBrZXksIGJvb2wgdmFsdWUpOwogICAgIHZvaWQgdXBkYXRlQm9vbFZhbHVl
Rm9yRXhwZXJpbWVudGFsRmVhdHVyZUtleShjb25zdCBTdHJpbmcmIGtleSwgYm9vbCB2YWx1ZSk7
CkBAIC05NCw2ICs5NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1cGRhdGVEb3VibGVWYWx1ZUZv
cktleShjb25zdCBTdHJpbmcmIGtleSwgZG91YmxlIHZhbHVlKTsKICAgICB2b2lkIHVwZGF0ZUZs
b2F0VmFsdWVGb3JLZXkoY29uc3QgU3RyaW5nJiBrZXksIGZsb2F0IHZhbHVlKTsKICAgICB2b2lk
IHBsYXRmb3JtVXBkYXRlU3RyaW5nVmFsdWVGb3JLZXkoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0
IFN0cmluZyYgdmFsdWUpOworICAgIHZvaWQgcGxhdGZvcm1VcGRhdGVTdHJpbmdsaXN0VmFsdWVG
b3JLZXkoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZ0xpc3QmIHZhbHVlKTsKICAgICB2
b2lkIHBsYXRmb3JtVXBkYXRlQm9vbFZhbHVlRm9yS2V5KGNvbnN0IFN0cmluZyYga2V5LCBib29s
IHZhbHVlKTsKICAgICB2b2lkIHBsYXRmb3JtVXBkYXRlVUludDMyVmFsdWVGb3JLZXkoY29uc3Qg
U3RyaW5nJiBrZXksIHVpbnQzMl90IHZhbHVlKTsKICAgICB2b2lkIHBsYXRmb3JtVXBkYXRlRG91
YmxlVmFsdWVGb3JLZXkoY29uc3QgU3RyaW5nJiBrZXksIGRvdWJsZSB2YWx1ZSk7CkBAIC0xMDUs
NiArMTA3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlZ2lzdGVyRGVmYXVsdFVJbnQzMlZhbHVl
Rm9yS2V5KGNvbnN0IFN0cmluZyYsIHVpbnQzMl90KTsKIAogICAgIGJvb2wgcGxhdGZvcm1HZXRT
dHJpbmdVc2VyVmFsdWVGb3JLZXkoY29uc3QgU3RyaW5nJiBrZXksIFN0cmluZyYgdXNlclZhbHVl
KTsKKyAgICBib29sIHBsYXRmb3JtR2V0U3RyaW5nbGlzdFVzZXJWYWx1ZUZvcktleShjb25zdCBT
dHJpbmcmIGtleSwgU3RyaW5nTGlzdCYgdXNlclZhbHVlKTsKICAgICBib29sIHBsYXRmb3JtR2V0
Qm9vbFVzZXJWYWx1ZUZvcktleShjb25zdCBTdHJpbmcmLCBib29sJik7CiAgICAgYm9vbCBwbGF0
Zm9ybUdldFVJbnQzMlVzZXJWYWx1ZUZvcktleShjb25zdCBTdHJpbmcmLCB1aW50MzJfdCYpOwog
ICAgIGJvb2wgcGxhdGZvcm1HZXREb3VibGVVc2VyVmFsdWVGb3JLZXkoY29uc3QgU3RyaW5nJiwg
ZG91YmxlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUHJl
ZmVyZW5jZXNNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUHJlZmVyZW5j
ZXNNYWMubW0KaW5kZXggYWJlMjk1Y2MwYjRmZjdhZjk4NmMwMmU0MTI1YjIyNWU3M2M0Y2FlNC4u
YjNhYzhlMWQ3MzI4YzUxZDVhZjZkYTllMGJkODA2ZjI1NWEzY2JlNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlByZWZlcmVuY2VzTWFjLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQcmVmZXJlbmNlc01hYy5tbQpAQCAtNTMsNiArNTMs
MjEgQEAgYm9vbCBXZWJQcmVmZXJlbmNlczo6cGxhdGZvcm1HZXRTdHJpbmdVc2VyVmFsdWVGb3JL
ZXkoY29uc3QgU3RyaW5nJiBrZXksIFN0cmluZyYKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorYm9v
bCBXZWJQcmVmZXJlbmNlczo6cGxhdGZvcm1HZXRTdHJpbmdsaXN0VXNlclZhbHVlRm9yS2V5KGNv
bnN0IFN0cmluZyYga2V5LCBTdHJpbmdMaXN0JiB1c2VyVmFsdWUpCit7CisgICAgaWYgKCFtX2lk
ZW50aWZpZXIpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBpZCBvYmplY3QgPSBb
W05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSBvYmplY3RGb3JLZXk6bWFrZUtl
eShtX2lkZW50aWZpZXIsIG1fa2V5UHJlZml4LCBrZXkpXTsKKyAgICBpZiAoIW9iamVjdCkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghW29iamVjdCBpc0tpbmRPZkNsYXNzOltOU0Fy
cmF5PE5TU3RyaW5nICo+IGNsYXNzXV0pCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAg
ICB1c2VyVmFsdWUgPSB3ZWJDb3JlU3RyaW5nTGlzdEZyb21Oc1N0cmluZ0FycmF5KChOU0FycmF5
PE5TU3RyaW5nICo+ICopb2JqZWN0KTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogYm9vbCBXZWJQ
cmVmZXJlbmNlczo6cGxhdGZvcm1HZXRCb29sVXNlclZhbHVlRm9yS2V5KGNvbnN0IFN0cmluZyYg
a2V5LCBib29sJiB1c2VyVmFsdWUpCiB7CiAgICAgaWYgKCFtX2lkZW50aWZpZXIpCkBAIC0xNjYs
NiArMTgxLDE0IEBAIHZvaWQgV2ViUHJlZmVyZW5jZXM6OnBsYXRmb3JtVXBkYXRlU3RyaW5nVmFs
dWVGb3JLZXkoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0CiAgICAgW1tOU1VzZXJEZWZhdWx0
cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gc2V0T2JqZWN0Om5zU3RyaW5nRnJvbVdlYkNvcmVTdHJp
bmcodmFsdWUpIGZvcktleTptYWtlS2V5KG1faWRlbnRpZmllciwgbV9rZXlQcmVmaXgsIGtleSld
OwogfQogCit2b2lkIFdlYlByZWZlcmVuY2VzOjpwbGF0Zm9ybVVwZGF0ZVN0cmluZ2xpc3RWYWx1
ZUZvcktleShjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nTGlzdCYgdmFsdWUpCit7Cisg
ICAgaWYgKCFtX2lkZW50aWZpZXIpCisgICAgICAgIHJldHVybjsKKworICAgIFtbTlNVc2VyRGVm
YXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIHNldE9iamVjdDpuc1N0cmluZ0FycmF5RnJvbVdl
YkNvcmVTdHJpbmdMaXN0KHZhbHVlKSBmb3JLZXk6bWFrZUtleShtX2lkZW50aWZpZXIsIG1fa2V5
UHJlZml4LCBrZXkpXTsKK30KKwogdm9pZCBXZWJQcmVmZXJlbmNlczo6cGxhdGZvcm1VcGRhdGVC
b29sVmFsdWVGb3JLZXkoY29uc3QgU3RyaW5nJiBrZXksIGJvb2wgdmFsdWUpCiB7CiAgICAgaWYg
KCFtX2lkZW50aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4v
V2ViUHJlZmVyZW5jZXNXaW4uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYlBy
ZWZlcmVuY2VzV2luLmNwcAppbmRleCBhMjBjNGRiOWU3NGUyZjgzMmUxMTIwNzg4ODQyYTEyMjFh
ZTAzYWM5Li5jMjUzZGI5YzUzNjRjNjY5YTM1ZWVjMjQzN2M4M2ViZDQ1ODdhNDQ4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViUHJlZmVyZW5jZXNXaW4uY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJQcmVmZXJlbmNlc1dpbi5jcHAKQEAg
LTQxLDYgKzQxLDExIEBAIHZvaWQgV2ViUHJlZmVyZW5jZXM6OnBsYXRmb3JtVXBkYXRlU3RyaW5n
VmFsdWVGb3JLZXkoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nCiAgICAgbm90SW1wbGVtZW50
ZWQoKTsKIH0KIAordm9pZCBXZWJQcmVmZXJlbmNlczo6cGxhdGZvcm1VcGRhdGVTdHJpbmdsaXN0
VmFsdWVGb3JLZXkoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nTGlzdCYpCit7CisgICAgbm90
SW1wbGVtZW50ZWQoKTsKK30KKwogdm9pZCBXZWJQcmVmZXJlbmNlczo6cGxhdGZvcm1VcGRhdGVC
b29sVmFsdWVGb3JLZXkoY29uc3QgU3RyaW5nJiwgYm9vbCkKIHsKICAgICBub3RJbXBsZW1lbnRl
ZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd3BlL1dlYlByZWZlcmVu
Y2VzV1BFLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dwZS9XZWJQcmVmZXJlbmNlc1dQ
RS5jcHAKaW5kZXggZmY4MWZjZGExY2ZiZGUxZTA1Y2YzOGMxNmMyMTQ0ZGI5ZTBlMjc3Yi4uZGMx
M2M3ODMxMDNhNzc0YTQ0YWE3MDdlYWJmZjU3ZWZlZjlmNGFlYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3Mvd3BlL1dlYlByZWZlcmVuY2VzV1BFLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy93cGUvV2ViUHJlZmVyZW5jZXNXUEUuY3BwCkBAIC00MCw2ICs0MCwx
MSBAQCB2b2lkIFdlYlByZWZlcmVuY2VzOjpwbGF0Zm9ybVVwZGF0ZVN0cmluZ1ZhbHVlRm9yS2V5
KGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZwogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAK
K3ZvaWQgV2ViUHJlZmVyZW5jZXM6OnBsYXRmb3JtVXBkYXRlU3RyaW5nbGlzdFZhbHVlRm9yS2V5
KGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZ0xpc3QmKQoreworICAgIG5vdEltcGxlbWVudGVk
KCk7Cit9CisKIHZvaWQgV2ViUHJlZmVyZW5jZXM6OnBsYXRmb3JtVXBkYXRlQm9vbFZhbHVlRm9y
S2V5KGNvbnN0IFN0cmluZyYsIGJvb2wpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggYTRlNDZjYjYy
MGUyODFkZTBiZGE4MDRkZDI0NmI4OWNjZjAxODBmZS4uYmY2ZmNkM2QxMzgyMWZjMDAxY2I2N2E5
NTZjMmE1MWY0MzUxNDlhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHAKQEAgLTI0Nyw2ICsyNDcsNyBAQAogI2luY2x1ZGUgIlZpZGVvRnVsbHNjcmVl
bk1hbmFnZXIuaCIKICNpbmNsdWRlICJXS1N0cmluZ0NGLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9M
ZWdhY3lXZWJBcmNoaXZlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9VVElSZWdpc3RyeS5oPgogI2lu
Y2x1ZGUgPHd0Zi9NYWNoU2VuZFJpZ2h0Lmg+CiAjZW5kaWYKIApAQCAtMzIyNCw2ICszMjI1LDcg
QEAgdm9pZCBXZWJQYWdlOjp1cGRhdGVQcmVmZXJlbmNlcyhjb25zdCBXZWJQcmVmZXJlbmNlc1N0
b3JlJiBzdG9yZSkKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIG1fcGRmUGx1Z2luRW5hYmxl
ZCA9IHN0b3JlLmdldEJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6cGRmUGx1Z2lu
RW5hYmxlZEtleSgpKTsKKyAgICBXZWJDb3JlOjpzZXRBZGRpdGlvbmFsQWxsb3dlZEltYWdlRm9y
bWF0cyhzdG9yZS5nZXRTdHJpbmdsaXN0VmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OmFk
ZGl0aW9uYWxBbGxvd2VkSW1hZ2VGb3JtYXRzS2V5KCkpKTsKICNlbmRpZgogI2lmIEVOQUJMRShQ
QVlNRU5UX1JFUVVFU1QpCiAgICAgc2V0dGluZ3Muc2V0UGF5bWVudFJlcXVlc3RFbmFibGVkKHN0
b3JlLmdldEJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6YXBwbGVQYXlFbmFibGVk
S2V5KCkpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwpp
bmRleCBjMzkzNTQ2YjgwNWY1YTFlMmQyM2E5ZGRkMTUzMjM0MTNmMzMzZmM4Li44MjMxZWZlMjlh
N2QyMTJkODQ4NDQ0MzNlNjI2Njc3ZDE2ZTNmZjRhIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VM
b2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTgtMTAtMTQgIFNh
aWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQg
YW4gU1BJIHRvIGFsbG93IFdlYlZpZXcgY2xpZW50cyB0byBhZGQgYWRkaXRpb25hbCBzdXBwb3J0
ZWQgaW1hZ2UgZm9ybWF0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTkwNDU0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVGVzdCBvcGVuaW5nIGEgVEdBIGltYWdlIGluIFdlYlZpZXcgd2hpY2ggaXMgbm90
IGFsbG93ZWQgYnkgZGVmYXVsdC4gVGhlCisgICAgICAgIFRHQSBmb3JtYXQgd2lsbCBiZSBhbGxv
d2VkIHRocm91Z2ggV0tXZWJWaWV3Q29uZmlndXJhdGlvbi4KKworICAgICAgICBUaGUgVEdBIGlt
YWdlIGV4dGVuc2lvbiB3YXMgY2hhbmdlZCB0byBQTkcgYmVjYXVzZSBXZWJLaXQgd29uJ3QgYWNj
ZXBjdAorICAgICAgICBhIGZpbGUgd2l0aCBUR0EgZXh0ZW5zaW9uIGFzIGFuIEltYWdlRG9jdW1l
bnQuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L0FkZGl0aW9uYWxBbGxvd2VkSW1hZ2VGb3JtYXRzLm1tOiBBZGRlZC4KKyAgICAgICAgKFRFU1Qp
OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvdGdhLWltYWdlLnBu
ZzogQWRkZWQuCisKIDIwMTgtMTAtMTEgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29t
PgogCiAgICAgICAgIElPUyAxMiAtIFNlcnZpY2Ugd29ya2VyIGNhY2hlIG5vdCBzaGFyZWQgd2hl
biBhZGRlZCB0byBob21lc2NyZWVuCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGE0NDIzMmY1
NTQzODA2NTRhZTZlYzcwNTkwOTA2OWFlNDI2NTRlNWMuLjVjNWM1ZGFmNjA1OWJlZDM3YzZlNDA3
MTI2NDIwODE3Yjg4NjE4YWYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdl
YktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yNDAsNiArMjQw
LDggQEAKIAkJNTM2NzcwMzYxQ0M4MUI2MTAwRDQyNUIxIC8qIFdlYlNjcmlwdE9iamVjdERlc2Ny
aXB0aW9uLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTM2NzcwMzUxQ0M4MTJGOTAwRDQyNUIxIC8qIFdlYlNjcmlwdE9iamVjdERlc2Ny
aXB0aW9uLmh0bWwgKi87IH07CiAJCTUzRUMyNTQxMUU5NkZEODcwMDA4MzFCOSAvKiBQcmlvcml0
eVF1ZXVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUzRUMyNTNGMUU5NkJDODAwMDA4MzFCOSAvKiBQcmlvcml0eVF1ZXVlLmNwcCAqLzsgfTsKIAkJ
NTUyMjZBMkYxRUJBNDRCOTAwQzM2QUQwIC8qIGxhcmdlLXJlZC1zcXVhcmUtaW1hZ2UuaHRtbCBp
biBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NTIy
NkEyRTFFQjk2OUI2MDBDMzZBRDAgLyogbGFyZ2UtcmVkLXNxdWFyZS1pbWFnZS5odG1sICovOyB9
OworCQk1NTU4NDgxQzIxNzEzMTU3MDBGQjdGRkYgLyogQWRkaXRpb25hbEFsbG93ZWRJbWFnZUZv
cm1hdHMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
NTU4NDgxQjIxNzEzMTU2MDBGQjdGRkYgLyogQWRkaXRpb25hbEFsbG93ZWRJbWFnZUZvcm1hdHMu
bW0gKi87IH07CisJCTU1NTg0ODI1MjE3MThDREEwMEZCN0ZGRiAvKiB0Z2EtaW1hZ2UucG5nIGlu
IENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1NTg0
ODIxMjE3MTVBN0UwMEZCN0ZGRiAvKiB0Z2EtaW1hZ2UucG5nICovOyB9OwogCQk1NTk3RjgzNjFE
OTU5NkM4MDA2NkJDMjEgLyogU3luY2hyb25pemVkRml4ZWRRdWV1ZS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NTk3RjgzNDFEOTU5NkM4MDA2NkJD
MjEgLyogU3luY2hyb25pemVkRml4ZWRRdWV1ZS5jcHAgKi87IH07CiAJCTU3MTRFQ0I5MUNBOEI1
QjAwMDA1MUFDOCAvKiBEb3dubG9hZFJlcXVlc3RPcmlnaW5hbFVSTC5odG1sIGluIENvcHkgUmVz
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3MTRFQ0I4MUNBOEI1
ODgwMDA1MUFDOCAvKiBEb3dubG9hZFJlcXVlc3RPcmlnaW5hbFVSTC5odG1sICovOyB9OwogCQk1
NzE0RUNCQjFDQThCRkU0MDAwNTFBQzggLyogRG93bmxvYWRSZXF1ZXN0T3JpZ2luYWxVUkxGcmFt
ZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDU3MTRFQ0JBMUNBOEJGRDEwMDA1MUFDOCAvKiBEb3dubG9hZFJlcXVlc3RPcmlnaW5hbFVS
TEZyYW1lLmh0bWwgKi87IH07CkBAIC0xMTk4LDYgKzEyMDAsNyBAQAogCQkJCUY0Q0Q3NEM2MjBG
REFDRkEwMERFMzc5NCAvKiB0ZXh0LXdpdGgtYXN5bmMtc2NyaXB0Lmh0bWwgaW4gQ29weSBSZXNv
dXJjZXMgKi8sCiAJCQkJRjQ0QzdBMDUyMEZBQUUzQzAwMTQ0NzhDIC8qIHRleHQtd2l0aC1kZWZl
cnJlZC1zY3JpcHQuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQlGNDFBQjlBQTFFRjQ2
OTZCMDA4M0ZBMDggLyogdGV4dGFyZWEtdG8taW5wdXQuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAq
LywKKwkJCQk1NTU4NDgyNTIxNzE4Q0RBMDBGQjdGRkYgLyogdGdhLWltYWdlLnBuZyBpbiBDb3B5
IFJlc291cmNlcyAqLywKIAkJCQlGNDQ1MUM3NjFFQjhGRDg5MDAyMEM1REEgLyogdHdvLXBhcmFn
cmFwaC1jb250ZW50ZWRpdGFibGUuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQlDNTQw
Rjc4NDE1MkU1QTlBMDBBNDBDOEMgLyogdmVyYm9zZU1hcmt1cC5odG1sIGluIENvcHkgUmVzb3Vy
Y2VzICovLAogCQkJCUNENTc3NzlEMjExQ0U5MUYwMDFCMzcxRSAvKiB2aWRlby13aXRoLWF1ZGlv
LWFuZC13ZWItYXVkaW8uaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKQEAgLTE0MzQsNyArMTQz
Nyw2IEBACiAJCTM3RTEwNjRCMTY5NzY3RjcwMEI3OEJEMCAvKiBET01IVE1MVGFibGVDZWxsRWxl
bWVudENlbGxBYm92ZS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gRE9NSFRNTFRh
YmxlQ2VsbEVsZW1lbnRDZWxsQWJvdmUuaHRtbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMzdFMzhDMzMxNjlCN0QwMTAwODRDMjhDIC8qIFdlYlZpZXdEaWRSZW1vdmVGcmFtZUZyb21I
aWVyYXJjaHkubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJW
aWV3RGlkUmVtb3ZlRnJhbWVGcm9tSGllcmFyY2h5Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkzN0U3REQ2MzFFQTA2RkYyMDA5QjM5NkQgLyogQWRkaXRpb25hbFJlYWRBY2Nlc3NB
bGxvd2VkVVJMcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEFk
ZGl0aW9uYWxSZWFkQWNjZXNzQWxsb3dlZFVSTHMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCTM3RTdERDY1MUVBMDcxNUIwMDlCMzk2RCAvKiBBZGRpdGlvbmFsUmVhZEFjY2Vzc0Fs
bG93ZWRVUkxzUHJvdG9jb2wuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWRk
aXRpb25hbFJlYWRBY2Nlc3NBbGxvd2VkVVJMc1Byb3RvY29sLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTM3RTdERDY2MUVBMDcxRjMwMDlCMzk2RCAvKiBBZGRpdGlvbmFsUmVhZEFj
Y2Vzc0FsbG93ZWRVUkxzUGx1Z2luLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gQWRkaXRpb25hbFJlYWRBY2Nlc3NBbGxvd2VkVVJMc1BsdWdpbi5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzdGQjcyOTUxREIyRTgyRjAwRTQxQkU0IC8qIENvbnRl
eHRNZW51RGVmYXVsdEl0ZW1zSGF2ZVRhZ3MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBDb250ZXh0TWVudURlZmF1bHRJdGVtc0hhdmVUYWdzLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkzRjFCNTI2ODFEM0Q3MTI5MDA4RDYwQzQgLyogRnVsbHNj
cmVlbkxheW91dENvbnN0cmFpbnRzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gRnVsbHNjcmVlbkxheW91dENvbnN0cmFpbnRzLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMTU0Niw2ICsxNTQ4LDkgQEAKIAkJNTM2NzcwMzUxQ0M4MTJGOTAwRDQy
NUIxIC8qIFdlYlNjcmlwdE9iamVjdERlc2NyaXB0aW9uLmh0bWwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0
bWw7IHBhdGggPSBXZWJTY3JpcHRPYmplY3REZXNjcmlwdGlvbi5odG1sOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1M0VDMjUzRjFFOTZCQzgwMDAwODMxQjkgLyogUHJpb3JpdHlRdWV1
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQcmlvcml0eVF1ZXVl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTUyMjZBMkUxRUI5NjlCNjAwQzM2
QUQwIC8qIGxhcmdlLXJlZC1zcXVhcmUtaW1hZ2UuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsg
cGF0aCA9ICJsYXJnZS1yZWQtc3F1YXJlLWltYWdlLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk1NTU4NDgxQjIxNzEzMTU2MDBGQjdGRkYgLyogQWRkaXRpb25hbEFsbG93ZWRJ
bWFnZUZvcm1hdHMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBB
ZGRpdGlvbmFsQWxsb3dlZEltYWdlRm9ybWF0cy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNTU1ODQ4MUYyMTcxMzUwODAwRkI3RkZGIC8qIEFkZGl0aW9uYWxSZWFkQWNjZXNzQWxs
b3dlZFVSTHNQcm90b2NvbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBZGRp
dGlvbmFsUmVhZEFjY2Vzc0FsbG93ZWRVUkxzUHJvdG9jb2wuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNTU1ODQ4MjEyMTcxNUE3RTAwRkI3RkZGIC8qIHRnYS1pbWFnZS5wbmcgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBpbWFnZS5wbmc7
IHBhdGggPSAidGdhLWltYWdlLnBuZyI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU1
OTdGODM0MUQ5NTk2QzgwMDY2QkMyMSAvKiBTeW5jaHJvbml6ZWRGaXhlZFF1ZXVlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN5bmNocm9uaXplZEZpeGVkUXVldWUu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NzE0RUNCODFDQThCNTg4MDAwNTFB
QzggLyogRG93bmxvYWRSZXF1ZXN0T3JpZ2luYWxVUkwuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRt
bDsgcGF0aCA9IERvd25sb2FkUmVxdWVzdE9yaWdpbmFsVVJMLmh0bWw7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTU3MTRFQ0JBMUNBOEJGRDEwMDA1MUFDOCAvKiBEb3dubG9hZFJlcXVl
c3RPcmlnaW5hbFVSTEZyYW1lLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSBEb3du
bG9hZFJlcXVlc3RPcmlnaW5hbFVSTEZyYW1lLmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0yMzEwLDkgKzIzMTUsMTAgQEAKIAkJCQlBMTZGNjZCODFDNDBFOUUxMDBCRDREMjQg
LyogUmVzb3VyY2VzICovLAogCQkJCTVDRUFCNURGMUZBOTM3Q0IwMEE3N0ZBQSAvKiBfV0tJbnB1
dERlbGVnYXRlLm1tICovLAogCQkJCTdDRUZBOTY0MUFDMEI5RTIwMEI5MTBGRCAvKiBfV0tVc2Vy
Q29udGVudEV4dGVuc2lvblN0b3JlLm1tICovLAorCQkJCTU1NTg0ODFCMjE3MTMxNTYwMEZCN0ZG
RiAvKiBBZGRpdGlvbmFsQWxsb3dlZEltYWdlRm9ybWF0cy5tbSAqLywKIAkJCQkzN0U3REQ2MzFF
QTA2RkYyMDA5QjM5NkQgLyogQWRkaXRpb25hbFJlYWRBY2Nlc3NBbGxvd2VkVVJMcy5tbSAqLywK
IAkJCQkzN0U3REQ2NjFFQTA3MUYzMDA5QjM5NkQgLyogQWRkaXRpb25hbFJlYWRBY2Nlc3NBbGxv
d2VkVVJMc1BsdWdpbi5tbSAqLywKLQkJCQkzN0U3REQ2NTFFQTA3MTVCMDA5QjM5NkQgLyogQWRk
aXRpb25hbFJlYWRBY2Nlc3NBbGxvd2VkVVJMc1Byb3RvY29sLmggKi8sCisJCQkJNTU1ODQ4MUYy
MTcxMzUwODAwRkI3RkZGIC8qIEFkZGl0aW9uYWxSZWFkQWNjZXNzQWxsb3dlZFVSTHNQcm90b2Nv
bC5oICovLAogCQkJCUExREY3NDMwMUM0MUI2NTgwMEEyRjREMCAvKiBBbHdheXNSZXZhbGlkYXRl
ZFVSTFNjaGVtZXMubW0gKi8sCiAJCQkJMkRFNzFBRkQxRDQ5QzBCRDAwOTA0MDk0IC8qIEFuaW1h
dGVkUmVzaXplLm1tICovLAogCQkJCTYzRjY2ODIwMUY5N0MzQUEwMDMyRUU1MSAvKiBBcHBsaWNh
dGlvbk1hbmlmZXN0Lm1tICovLApAQCAtMjgwNCw2ICsyODEwLDcgQEAKIAkJCQlGNENENzRDNTIw
RkRBQ0Y1MDBERTM3OTQgLyogdGV4dC13aXRoLWFzeW5jLXNjcmlwdC5odG1sICovLAogCQkJCUY0
NEM3QTA0MjBGQUFFMzIwMDE0NDc4QyAvKiB0ZXh0LXdpdGgtZGVmZXJyZWQtc2NyaXB0Lmh0bWwg
Ki8sCiAJCQkJRjQxQUI5OTUxRUY0NjkyQzAwODNGQTA4IC8qIHRleHRhcmVhLXRvLWlucHV0Lmh0
bWwgKi8sCisJCQkJNTU1ODQ4MjEyMTcxNUE3RTAwRkI3RkZGIC8qIHRnYS1pbWFnZS5wbmcgKi8s
CiAJCQkJRjQ0NTFDNzUxRUI4RkQ3QzAwMjBDNURBIC8qIHR3by1wYXJhZ3JhcGgtY29udGVudGVk
aXRhYmxlLmh0bWwgKi8sCiAJCQkJQ0Q1Nzc3OUIyMTFDRTZDRTAwMUIzNzFFIC8qIHZpZGVvLXdp
dGgtYXVkaW8tYW5kLXdlYi1hdWRpby5odG1sICovLAogCQkJCUNENTc3Nzk4MjExQ0RFOEYwMDFC
MzcxRSAvKiB3ZWItYXVkaW8tb25seS5odG1sICovLApAQCAtMzcxMyw2ICszNzIwLDcgQEAKIAkJ
CQkyRTIwNUJBNDFGNTI3NzQ2MDA1OTUyREQgLyogQWNjZXNzaWJpbGl0eVRlc3RzSU9TLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJOUJENTExMUMxRkU4RTExNjAwRDJCNjMwIC8qIEFjY2Vzc2luZ1Bh
c3RlZEltYWdlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJRjQ1QjYzRkUxRjE5RDQxMDAwOUQzOEI5
IC8qIEFjdGlvblNoZWV0VGVzdHMubW0gaW4gU291cmNlcyAqLywKKwkJCQk1NTU4NDgxQzIxNzEz
MTU3MDBGQjdGRkYgLyogQWRkaXRpb25hbEFsbG93ZWRJbWFnZUZvcm1hdHMubW0gaW4gU291cmNl
cyAqLywKIAkJCQkzN0U3REQ2NDFFQTA2RkYyMDA5QjM5NkQgLyogQWRkaXRpb25hbFJlYWRBY2Nl
c3NBbGxvd2VkVVJMcy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdBOTA5QTdEMUQ4Nzc0ODAwMDdF
MTBGOCAvKiBBZmZpbmVUcmFuc2Zvcm0uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTFERjc0MzIx
QzQxQjY1ODAwQTJGNEQwIC8qIEFsd2F5c1JldmFsaWRhdGVkVVJMU2NoZW1lcy5tbSBpbiBTb3Vy
Y2VzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9BZGRpdGlvbmFsQWxsb3dlZEltYWdlRm9ybWF0cy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvQWRkaXRpb25hbEFsbG93ZWRJbWFnZUZvcm1hdHMubW0KbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZWJkY2I3NWFjYmFjYjk5MzYyMGY2NzllODE0M2MzNjFmMmRjMTljYgotLS0gL2Rldi9u
dWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQWRkaXRpb25h
bEFsbG93ZWRJbWFnZUZvcm1hdHMubW0KQEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCA8V2ViS2l0L1dLRm91bmRhdGlvbi5oPgorCisjaWYg
V0tfQVBJX0VOQUJMRUQgJiYgUExBVEZPUk0oQ09DT0EpCisKKyNpbXBvcnQgIlBsYXRmb3JtVXRp
bGl0aWVzLmgiCisjaW1wb3J0ICJUZXN0TmF2aWdhdGlvbkRlbGVnYXRlLmgiCisjaW1wb3J0ICJX
S1dlYlZpZXdDb25maWd1cmF0aW9uRXh0cmFzLmgiCisjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3
Q29uZmlndXJhdGlvblByaXZhdGUuaD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKworVEVT
VChXZWJLaXQsIEFkZGl0aW9uYWxBbGxvd2VkSW1hZ2VGb3JtYXRzKQoreworICAgIFJldGFpblB0
cjxXS1dlYlZpZXdDb25maWd1cmF0aW9uPiBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2Vi
Vmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBbY29uZmlndXJhdGlvbiBfc2V0
QWRkaXRpb25hbEFsbG93ZWRJbWFnZUZvcm1hdHM6QFtAImNvbS50cnVldmlzaW9uLnRnYS1pbWFn
ZSJdXTsKKworICAgIFJldGFpblB0cjxXS1dlYlZpZXc+IHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tX
ZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNv
bmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworCisgICAgUmV0YWluUHRyPE5TVVJM
PiB0ZXN0VVJMID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAInRnYS1p
bWFnZSIgd2l0aEV4dGVuc2lvbjpAInBuZyIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5y
ZXNvdXJjZXMiXTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVl
c3RXaXRoVVJMOnRlc3RVUkwuZ2V0KCldXTsKKyAgICBbd2ViVmlldyBfdGVzdF93YWl0Rm9yRGlk
RmluaXNoTmF2aWdhdGlvbl07CisKKyAgICBfX2Jsb2NrIGJvb2wgaXNEb25lID0gZmFsc2U7Cisg
ICAgW3dlYlZpZXcgX2RvQWZ0ZXJOZXh0UHJlc2VudGF0aW9uVXBkYXRlOl57CisgICAgICAgIFt3
ZWJWaWV3IGV2YWx1YXRlSmF2YVNjcmlwdDpAIltkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdpbWcn
KS53aWR0aF0iIGNvbXBsZXRpb25IYW5kbGVyOl4oaWQgdmFsdWUsIE5TRXJyb3IgKmVycm9yKSB7
CisgICAgICAgICAgICBDR0Zsb2F0IHdpZHRoID0gW1t2YWx1ZSBvYmplY3RBdEluZGV4OjBdIGZs
b2F0VmFsdWVdOworICAgICAgICAgICAgRVhQRUNUX0VRKHdpZHRoLCAxMDApOworICAgICAgICAg
ICAgaXNEb25lID0gdHJ1ZTsKKyAgICAgICAgfV07CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQ
STo6VXRpbDo6cnVuKCZpc0RvbmUpOworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvdGdhLWltYWdlLnBuZyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvdGdhLWltYWdlLnBuZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNjk1
OGJhMGM0NDEwNjA1ODg4NGEzZjI0YTIzZWVkMTgyOGIxNzRiCkdJVCBiaW5hcnkgcGF0Y2gKbGl0
ZXJhbCA1MTgKY2NtWlF6OzlgSio2b3dRQTEmemxINEZDVSs1K2Y9TTBDe21DNGdkZkUKCmxpdGVy
YWwgMApIY21WP2QwMDAwMQoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>352302</attachid>
            <date>2018-10-15 00:06:36 -0700</date>
            <delta_ts>2018-10-15 15:34:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190454-20181015000635.patch</filename>
            <type>text/plain</type>
            <size>37246</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3MDY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjlkY2FiMDkxMzA1OTE1
MDVmYjg5OTEyZmY4ZDE2YTZjMDg5NzZjOS4uY2Q2YWI1MmRlYzhjOThmNzJhYzI5MWZjM2U0NDI4
MDhiMDAzNzcwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDE4LTEwLTE1ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGFu
IFNQSSB0byBhbGxvdyBXZWJWaWV3IGNsaWVudHMgdG8gYWRkIGFkZGl0aW9uYWwgc3VwcG9ydGVk
IGltYWdlIGZvcm1hdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE5MDQ1NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFkZCBhbiBTUEkgdG8gYWxsb3cgYWRkaXRpb25hbCBzdXBwb3J0ZWQgaW1hZ2UgZm9y
bWF0cyBpbiBXZWJWaWV3LiBUaGVzZQorICAgICAgICBhZGRpdGlvbmFsIGZvcm1hdHMgY2FuIGJl
IHNldCBpbiB0aGUgV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhcyBhbiBOU0FycmF5CisgICAgICAg
IG9mIE5TdHJpbmdzLiBFYWNoIHN0cmluZyByZXByZXNlbnRzIHRoZSBVVEkgb2YgdGhlIGFkZGl0
aW9uYWwgYWxsb3dlZCAKKyAgICAgICAgaW1hZ2UgZm9ybWF0LgorCisgICAgICAgICogcGxhdGZv
cm0vTUlNRVR5cGVSZWdpc3RyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjppbml0aWFsaXplU3Vw
cG9ydGVkSW1hZ2VNSU1FVHlwZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0lt
YWdlRGVjb2RlckNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckNHOjplbmNv
ZGVkRGF0YVN0YXR1cyBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvVVRJ
UmVnaXN0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZGVmYXVsdEFsbG93ZWRJbWFnZUZvcm1h
dHMpOiBUaGlzIGlzIHRoZSBXZWJLaXQgZGVmYXVsdCBsaXN0IG9mCisgICAgICAgIHN1cHBvcnRl
ZCBpbWFnZSBmb3JtYXRzLgorICAgICAgICAoV2ViQ29yZTo6YWRkaXRpb25hbEFsbG93ZWRJbWFn
ZUZvcm1hdHMpOgorICAgICAgICAoV2ViQ29yZTo6c2V0QWRkaXRpb25hbEFsbG93ZWRJbWFnZUZv
cm1hdHMpOgorICAgICAgICAoV2ViQ29yZTo6aXNBbGxvd2VkSW1hZ2VGb3JtYXQpOiBUaGlzIGZ1
bmN0aW9uIGNoZWNrcyB0aGUgZGVmYXVsdCBsaXN0IGFuZAorICAgICAgICB0aGUgYWRkaXRpb25h
bCBsaXN0IHRvIGRlY2lkZSB3aGV0aGVyIHRoZSBpbWFnZSBmb3JtYXQgaXMgc3VwcG9ydGVkLgor
ICAgICAgICAoV2ViQ29yZTo6YWxsb3dlZEltYWdlVVRJcyk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjppc0FsbG93ZWRJbWFnZVVUSSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvVVRJUmVnaXN0cnkuaDoKKwogMjAxOC0xMC0xMSAgRG9uIE9sbXN0ZWFkICA8
ZG9uLm9sbXN0ZWFkQHNvbnkuY29tPgogCiAgICAgICAgIEFkZCBIb3VkaW5pIHNwZWNzIHRvIGZl
YXR1cmVzLmpzb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNTY2MTIxNGJlMzAwNTIyYzg2ZGVkOGI1MWRhYWNlMjg3
NmZhM2M1ZC4uYmZlYTViYWFkNDFkMzAyODFjMWRlNzE1MjdhZDZhYThmNTYxZjc0ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw0NSBAQAorMjAxOC0xMC0xNSAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJv
dWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBhbiBTUEkgdG8gYWxsb3cgV2ViVmll
dyBjbGllbnRzIHRvIGFkZCBhZGRpdGlvbmFsIHN1cHBvcnRlZCBpbWFnZSBmb3JtYXRzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTA0NTQKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFBsYXRmb3JtL21h
Yy9TdHJpbmdVdGlsaXRpZXMuaDoKKyAgICAgICAgKiBQbGF0Zm9ybS9tYWMvU3RyaW5nVXRpbGl0
aWVzLm1tOgorICAgICAgICAoV2ViS2l0Ojp3ZWJDb3JlU3RyaW5nTGlzdEZyb21Oc1N0cmluZ0Fy
cmF5KToKKyAgICAgICAgKiBTY3JpcHRzL0dlbmVyYXRlUHJlZmVyZW5jZXMucmI6CisgICAgICAg
ICogU2hhcmVkL1dlYlByZWZlcmVuY2VzLnlhbWw6CisgICAgICAgICogU2hhcmVkL1dlYlByZWZl
cmVuY2VzU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlOjpz
ZXRTdHJpbmdMaXN0VmFsdWVGb3JLZXkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcmVmZXJlbmNl
c1N0b3JlOjpnZXRTdHJpbmdMaXN0VmFsdWVGb3JLZXkgY29uc3QpOiBBZGQgc3VwcG9ydAorICAg
ICAgICBmb3Igc3RvcmluZyBhIGxpc3Qgb2Ygc3RyaW5ncyBpbiB0aGUgV2ViUHJlZmVyZW5jZXNT
dG9yZS4KKyAgICAgICAgKiBTaGFyZWQvV2ViUHJlZmVyZW5jZXNTdG9yZS5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcg
X2luaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbjpdKToKKyAgICAgICAgU2V0IHRoZSB2YWx1ZSBv
ZiBBZGRpdGlvbmFsQWxsb3dlZEltYWdlRm9ybWF0cyBmcm9tIFdLV2ViVmlld0NvbmZpZ3VyYXRp
b24KKyAgICAgICAgdG8gdGhlIFdlYlByZWZlcmVuY2VzLgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3
Q29uZmlndXJhdGlvbiBjb3B5V2l0aFpvbmU6XSk6CisgICAgICAgICgtW1dLV2ViVmlld0NvbmZp
Z3VyYXRpb24gX2FkZGl0aW9uYWxBbGxvd2VkSW1hZ2VGb3JtYXRzXSk6CisgICAgICAgICgtW1dL
V2ViVmlld0NvbmZpZ3VyYXRpb24gX3NldEFkZGl0aW9uYWxBbGxvd2VkSW1hZ2VGb3JtYXRzOl0p
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvblBy
aXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJlZmVyZW5jZXMuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcmVmZXJlbmNlczo6dXBkYXRlU3RyaW5nTGlzdFZhbHVlRm9yS2V5KToK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJlZmVyZW5jZXMuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvbWFjL1dlYlByZWZlcmVuY2VzTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQcmVmZXJl
bmNlczo6cGxhdGZvcm1HZXRTdHJpbmdMaXN0VXNlclZhbHVlRm9yS2V5KToKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJlZmVyZW5jZXM6OnBsYXRmb3JtVXBkYXRlU3RyaW5nVmFsdWVGb3JLZXkpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcmVmZXJlbmNlczo6cGxhdGZvcm1VcGRhdGVTdHJpbmdMaXN0
VmFsdWVGb3JLZXkpOgorICAgICAgICAqIFVJUHJvY2Vzcy93aW4vV2ViUHJlZmVyZW5jZXNXaW4u
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcmVmZXJlbmNlczo6cGxhdGZvcm1VcGRhdGVTdHJp
bmdMaXN0VmFsdWVGb3JLZXkpOgorICAgICAgICAqIFVJUHJvY2Vzcy93cGUvV2ViUHJlZmVyZW5j
ZXNXUEUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcmVmZXJlbmNlczo6cGxhdGZvcm1VcGRh
dGVTdHJpbmdMaXN0VmFsdWVGb3JLZXkpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6dXBkYXRlUHJlZmVyZW5jZXMp
OgorICAgICAgICBDb3B5IHRoZSB2YWx1ZSBvZiBBZGRpdGlvbmFsQWxsb3dlZEltYWdlRm9ybWF0
cyBmcm9tIFdlYlByZWZlcmVuY2VzIHRvIAorICAgICAgICB0aGUgV2ViQ29yZSBmdW5jdGlvbiBz
ZXRBZGRpdGlvbmFsQWxsb3dlZEltYWdlRm9ybWF0cygpLgorCiAyMDE4LTEwLTExICBZb3Vlbm4g
RmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBJT1MgMTIgLSBTZXJ2aWNlIHdv
cmtlciBjYWNoZSBub3Qgc2hhcmVkIHdoZW4gYWRkZWQgdG8gaG9tZXNjcmVlbgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcAppbmRleCBmM2RkMTRmMDU1MDA4
YTZjMzQyZTczYTJjZGNjN2YxMmM2MTMzMDg2Li5iNmFjYTFiOTJiMTk1MjBjMTExZjVkMjIyYTky
YzNhMTE2YWI1ZGJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlw
ZVJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lz
dHJ5LmNwcApAQCAtNzgsNyArNzgsNyBAQCBzdGF0aWMgdm9pZCBpbml0aWFsaXplU3VwcG9ydGVk
SW1hZ2VNSU1FVHlwZXMoKQogICAgIH0KIAogI2lmbmRlZiBOREVCVUcKLSAgICBmb3IgKGF1dG8m
IHV0aSA6IGFsbG93ZWRJbWFnZVVUSXMoKSkgeworICAgIGZvciAoYXV0byYgdXRpIDogZGVmYXVs
dEFsbG93ZWRJbWFnZUZvcm1hdHMoKSkgewogICAgICAgICBhdXRvIG1pbWVUeXBlID0gTUlNRVR5
cGVGb3JJbWFnZVNvdXJjZVR5cGUodXRpKTsKICAgICAgICAgaWYgKCFtaW1lVHlwZS5pc0VtcHR5
KCkpIHsKICAgICAgICAgICAgIEFTU0VSVChzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlcy0+Y29udGFp
bnMobWltZVR5cGUpKTsKQEAgLTg4LDcgKzg4LDcgQEAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVN1
cHBvcnRlZEltYWdlTUlNRVR5cGVzKCkKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGZvciAo
YXV0byYgbWltZSA6ICpzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlcykKLSAgICAgICAgQVNTRVJUX1VO
VVNFRChtaW1lLCBhbGxvd2VkSW1hZ2VVVElzKCkuY29udGFpbnMoVVRJRnJvbU1JTUVUeXBlKG1p
bWUpKSk7CisgICAgICAgIEFTU0VSVF9VTlVTRUQobWltZSwgZGVmYXVsdEFsbG93ZWRJbWFnZUZv
cm1hdHMoKS5jb250YWlucyhVVElGcm9tTUlNRVR5cGUobWltZSkpKTsKICNlbmRpZgogI2VuZGlm
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdl
RGVjb2RlckNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdl
RGVjb2RlckNHLmNwcAppbmRleCA4YjYxZTZjNzZmOTljMzYxNGQ0YTMwYmU2YTBmY2MxZDBjYzQy
ODE3Li5iNzgwMjE5ODdiY2IyZmQ0ODNmZTNjMjBkNjczN2FhNTNiYjUxNDc4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cu
Y3BwCkBAIC0xOTksNyArMTk5LDcgQEAgRW5jb2RlZERhdGFTdGF0dXMgSW1hZ2VEZWNvZGVyQ0c6
OmVuY29kZWREYXRhU3RhdHVzKCkgY29uc3QKICAgICAgICAgcmV0dXJuIEVuY29kZWREYXRhU3Rh
dHVzOjpFcnJvcjsKIAogICAgIGNhc2Uga0NHSW1hZ2VTdGF0dXNJbmNvbXBsZXRlOiB7Ci0gICAg
ICAgIGlmICghaXNBbGxvd2VkSW1hZ2VVVEkodXRpKSkKKyAgICAgICAgaWYgKCFpc0FsbG93ZWRJ
bWFnZUZvcm1hdCh1dGkpKQogICAgICAgICAgICAgcmV0dXJuIEVuY29kZWREYXRhU3RhdHVzOjpF
cnJvcjsKIAogICAgICAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBpbWFnZTBQcm9wZXJ0
aWVzID0gYWRvcHRDRihDR0ltYWdlU291cmNlQ29weVByb3BlcnRpZXNBdEluZGV4KG1fbmF0aXZl
RGVjb2Rlci5nZXQoKSwgMCwgaW1hZ2VTb3VyY2VPcHRpb25zKCkuZ2V0KCkpKTsKQEAgLTIxMyw3
ICsyMTMsNyBAQCBFbmNvZGVkRGF0YVN0YXR1cyBJbWFnZURlY29kZXJDRzo6ZW5jb2RlZERhdGFT
dGF0dXMoKSBjb25zdAogICAgIH0KIAogICAgIGNhc2Uga0NHSW1hZ2VTdGF0dXNDb21wbGV0ZToK
LSAgICAgICAgaWYgKCFpc0FsbG93ZWRJbWFnZVVUSSh1dGkpKQorICAgICAgICBpZiAoIWlzQWxs
b3dlZEltYWdlRm9ybWF0KHV0aSkpCiAgICAgICAgICAgICByZXR1cm4gRW5jb2RlZERhdGFTdGF0
dXM6OkVycm9yOwogCiAgICAgICAgIHJldHVybiBFbmNvZGVkRGF0YVN0YXR1czo6Q29tcGxldGU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9VVElSZWdp
c3RyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9VVElSZWdpc3Ry
eS5jcHAKaW5kZXggZDM0MjI0MzNlNTI5ZWUxMzc4ZmJjYjQ4MjIwMTUyZjc0M2U4OWE1OS4uODk0
NmU2YWIzMDBmZmJjN2VkNDgyNmM3M2JjYTkzZjEzMGQxZDVhMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvVVRJUmVnaXN0cnkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1VUSVJlZ2lzdHJ5LmNwcApAQCAtMzgsMTAg
KzM4LDEwIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotSGFzaFNldDxTdHJpbmc+JiBhbGxv
d2VkSW1hZ2VVVElzKCkKK0hhc2hTZXQ8U3RyaW5nPiYgZGVmYXVsdEFsbG93ZWRJbWFnZUZvcm1h
dHMoKQogewogICAgIC8vIENHIGF0IGxlYXN0IHN1cHBvcnRzIHRoZSBmb2xsb3dpbmcgc3RhbmRh
cmQgaW1hZ2UgdHlwZXM6Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hTZXQ8U3RyaW5n
Pj4gc19hbGxvd2VkSW1hZ2VVVElzID0gc3RkOjppbml0aWFsaXplcl9saXN0PFN0cmluZz4gewor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0PFN0cmluZz4+IGRlZmF1bHRBbGxvd2Vk
SW1hZ2VGb3JtYXRzID0gc3RkOjppbml0aWFsaXplcl9saXN0PFN0cmluZz4gewogICAgICAgICAi
Y29tLmNvbXB1c2VydmUuZ2lmIiwKICAgICAgICAgImNvbS5taWNyb3NvZnQuYm1wIiwKICAgICAg
ICAgImNvbS5taWNyb3NvZnQuY3VyIiwKQEAgLTU5LDcgKzU5LDcgQEAgSGFzaFNldDxTdHJpbmc+
JiBhbGxvd2VkSW1hZ2VVVElzKCkKICAgICBpZiAoIWNoZWNrZWQpIHsKICAgICAgICAgUmV0YWlu
UHRyPENGQXJyYXlSZWY+IHN5c3RlbUltYWdlVVRJcyA9IGFkb3B0Q0YoQ0dJbWFnZVNvdXJjZUNv
cHlUeXBlSWRlbnRpZmllcnMoKSk7CiAgICAgICAgIENGSW5kZXggY291bnQgPSBDRkFycmF5R2V0
Q291bnQoc3lzdGVtSW1hZ2VVVElzLmdldCgpKTsKLSAgICAgICAgZm9yIChhdXRvJiBpbWFnZVVU
SSA6IHNfYWxsb3dlZEltYWdlVVRJcy5nZXQoKSkgeworICAgICAgICBmb3IgKGF1dG8mIGltYWdl
VVRJIDogZGVmYXVsdEFsbG93ZWRJbWFnZUZvcm1hdHMuZ2V0KCkpIHsKICAgICAgICAgICAgIFJl
dGFpblB0cjxDRlN0cmluZ1JlZj4gc3RyaW5nID0gaW1hZ2VVVEkuY3JlYXRlQ0ZTdHJpbmcoKTsK
ICAgICAgICAgICAgIEFTU0VSVChDRkFycmF5Q29udGFpbnNWYWx1ZShzeXN0ZW1JbWFnZVVUSXMu
Z2V0KCksIENGUmFuZ2VNYWtlKDAsIGNvdW50KSwgc3RyaW5nLmdldCgpKSk7CiAgICAgICAgIH0K
QEAgLTY3LDEyICs2NywyMyBAQCBIYXNoU2V0PFN0cmluZz4mIGFsbG93ZWRJbWFnZVVUSXMoKQog
ICAgIH0KICNlbmRpZgogCi0gICAgcmV0dXJuIHNfYWxsb3dlZEltYWdlVVRJcy5nZXQoKTsKKyAg
ICByZXR1cm4gZGVmYXVsdEFsbG93ZWRJbWFnZUZvcm1hdHM7CiB9CiAKLWJvb2wgaXNBbGxvd2Vk
SW1hZ2VVVEkoY29uc3QgU3RyaW5nJiBpbWFnZVVUSSkKK3N0YXRpYyBWZWN0b3I8U3RyaW5nPiYg
YWRkaXRpb25hbEFsbG93ZWRJbWFnZUZvcm1hdHMoKQogewotICAgIHJldHVybiAhaW1hZ2VVVEku
aXNFbXB0eSgpICYmIGFsbG93ZWRJbWFnZVVUSXMoKS5jb250YWlucyhpbWFnZVVUSSk7CisgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPFZlY3RvcjxTdHJpbmc+PiBhZGRpdGlvbmFsQWxsb3dlZElt
YWdlRm9ybWF0czsKKyAgICByZXR1cm4gYWRkaXRpb25hbEFsbG93ZWRJbWFnZUZvcm1hdHM7Cit9
CisKK3ZvaWQgc2V0QWRkaXRpb25hbEFsbG93ZWRJbWFnZUZvcm1hdHMoY29uc3QgVmVjdG9yPFN0
cmluZz4mIHZhbHVlKQoreworICAgIGFkZGl0aW9uYWxBbGxvd2VkSW1hZ2VGb3JtYXRzKCkgPSB2
YWx1ZTsKK30KKworYm9vbCBpc0FsbG93ZWRJbWFnZUZvcm1hdChjb25zdCBTdHJpbmcmIGltYWdl
VVRJKQoreworICAgIHJldHVybiAhaW1hZ2VVVEkuaXNFbXB0eSgpICYmIChkZWZhdWx0QWxsb3dl
ZEltYWdlRm9ybWF0cygpLmNvbnRhaW5zKGltYWdlVVRJKSB8fCBhZGRpdGlvbmFsQWxsb3dlZElt
YWdlRm9ybWF0cygpLmNvbnRhaW5zKGltYWdlVVRJKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1VUSVJlZ2lzdHJ5LmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9VVElSZWdpc3RyeS5oCmluZGV4IDIyZjI2YWRi
NTBjOWZlODYzZTAyNzJlYmZmYjEzNTNmY2YzNTRjNDUuLjE0NjNhOWQyNmQwYzlmNWZkZmFiNzYw
NzM2ZjE4NTMxNzllNDJjNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL1VUSVJlZ2lzdHJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvVVRJUmVnaXN0cnkuaApAQCAtMzAsNyArMzAsOCBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLUhhc2hTZXQ8U3RyaW5nPiYgYWxsb3dlZEltYWdlVVRJcygpOwotYm9vbCBpc0Fs
bG93ZWRJbWFnZVVUSShjb25zdCBTdHJpbmcmKTsKK0hhc2hTZXQ8U3RyaW5nPiYgZGVmYXVsdEFs
bG93ZWRJbWFnZUZvcm1hdHMoKTsKK2Jvb2wgaXNBbGxvd2VkSW1hZ2VGb3JtYXQoY29uc3QgU3Ry
aW5nJik7CitXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEFkZGl0aW9uYWxBbGxvd2VkSW1hZ2VGb3Jt
YXRzKGNvbnN0IFZlY3RvcjxTdHJpbmc+Jik7CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vbWFjL1N0cmluZ1V0aWxpdGllcy5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9tYWMvU3RyaW5nVXRpbGl0aWVzLmgKaW5kZXggMjlhNzZjZDc1MzhjNWRmYzhlMWE4ZDI4OWVj
YzllOGI2YzgwNWRmMC4uZWYyMjBlOGEzYWQ5MGJiYTEyMTEwOGNkNjE3NTFlYjVjNGRhZTAwNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9tYWMvU3RyaW5nVXRpbGl0aWVzLmgK
KysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9tYWMvU3RyaW5nVXRpbGl0aWVzLmgKQEAgLTMw
LDYgKzMwLDggQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK3R5cGVkZWYgVmVjdG9yPFN0cmlu
Zz4gU3RyaW5nTGlzdDsKKwogI2lmZGVmIF9fT0JKQ19fCiAKIC8vIE5PVEU6IFRoaXMgZG9lcyBu
b3QgdXNlIFN0cmluZzo6b3BlcmF0b3IgTlNTdHJpbmcqKCkgc2luY2UgdGhhdCBmdW5jdGlvbgpA
QCAtMzcsNiArMzksOSBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIE5TU3RyaW5nICpuc1N0cmluZ0Zy
b21XZWJDb3JlU3RyaW5nKGNvbnN0IFN0cmluZyYpOwogTlNTdHJpbmcgKmZvcm1hdHRlZFBob25l
TnVtYmVyU3RyaW5nKE5TU3RyaW5nICpvcmlnaW5hbFBob25lTnVtYmVyKTsKIAorU3RyaW5nTGlz
dCB3ZWJDb3JlU3RyaW5nTGlzdEZyb21Oc1N0cmluZ0FycmF5KE5TQXJyYXk8TlNTdHJpbmcgKj4g
Kik7CitOU0FycmF5PE5TU3RyaW5nICo+ICpuc1N0cmluZ0FycmF5RnJvbVdlYkNvcmVTdHJpbmdM
aXN0KGNvbnN0IFN0cmluZ0xpc3QmKTsKKwogI2VuZGlmIC8vIGRlZmluZWQoX19PQkpDX18pCiAK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vbWFjL1N0cmluZ1V0aWxpdGll
cy5tbSBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vbWFjL1N0cmluZ1V0aWxpdGllcy5tbQppbmRl
eCA1Yzk2NzkzN2NlNGY5YjE4MGQ4MDFkOWUyMjhiNjZjOTA3N2E2YmVjLi4wZTA1NDlkN2RiMDkw
NjU3MTJmMmY3MTFmYzQzZDljYTFjZWEwZjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL21hYy9TdHJpbmdVdGlsaXRpZXMubW0KKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9tYWMvU3RyaW5nVXRpbGl0aWVzLm1tCkBAIC04Miw0ICs4MiwyMSBAQCBOU1N0cmluZyAqZm9y
bWF0dGVkUGhvbmVOdW1iZXJTdHJpbmcoTlNTdHJpbmcgKikKIAogI2VuZGlmIC8vIEVOQUJMRShU
RUxFUEhPTkVfTlVNQkVSX0RFVEVDVElPTikgJiYgUExBVEZPUk0oTUFDKQogCitTdHJpbmdMaXN0
IHdlYkNvcmVTdHJpbmdMaXN0RnJvbU5zU3RyaW5nQXJyYXkoTlNBcnJheTxOU1N0cmluZyAqPiAq
bnNTdHJpbmdBcnJheSkKK3sKKyAgICBTdHJpbmdMaXN0IHN0cmluZ0xpc3Q7CisgICAgW25zU3Ry
aW5nQXJyYXkgZW51bWVyYXRlT2JqZWN0c1VzaW5nQmxvY2s6WyZdIChOU1N0cmluZyAqbnNTdHJp
bmcsIE5TVUludGVnZXIsIEJPT0wgKikgeworICAgICAgICBzdHJpbmdMaXN0LmFwcGVuZChTdHJp
bmcobnNTdHJpbmcpKTsKKyAgICB9XTsKKyAgICByZXR1cm4gc3RyaW5nTGlzdDsKK30KKworTlNB
cnJheTxOU1N0cmluZyAqPiAqbnNTdHJpbmdBcnJheUZyb21XZWJDb3JlU3RyaW5nTGlzdChjb25z
dCBTdHJpbmdMaXN0JiBzdHJpbmdMaXN0KQoreworICAgIE5TTXV0YWJsZUFycmF5ICpuc1N0cmlu
Z0FycmF5ID0gW05TTXV0YWJsZUFycmF5IGFycmF5XTsKKyAgICBmb3IgKGF1dG8gc3RyaW5nIDog
c3RyaW5nTGlzdCkKKyAgICAgICAgW25zU3RyaW5nQXJyYXkgYWRkT2JqZWN0OltOU1N0cmluZyBz
dHJpbmdXaXRoVVRGOFN0cmluZzpzdHJpbmcudXRmOCgpLmRhdGEoKV1dOworICAgIHJldHVybiBu
c1N0cmluZ0FycmF5OworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMv
R2VuZXJhdGVQcmVmZXJlbmNlcy5yYiBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy9HZW5lcmF0ZVBy
ZWZlcmVuY2VzLnJiCmluZGV4IDlhN2E0MzhlZDExM2RmMzAzZGI4Yjk0NWM4OTExOGI4OGRmMjMx
YmYuLjc5NDhhODlmNjVmYzUxMzYxYWVlNTU2YTY2MWI2M2I2YTQyMzJiNzIgMTAwNzU1Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2NyaXB0cy9HZW5lcmF0ZVByZWZlcmVuY2VzLnJiCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2NyaXB0cy9HZW5lcmF0ZVByZWZlcmVuY2VzLnJiCkBAIC0xMDksNiArMTA5LDgg
QEAgY2xhc3MgUHJlZmVyZW5jZQogICBkZWYgdHlwZVVwcGVyCiAgICAgaWYgQHR5cGUgPT0gInVp
bnQzMl90IgogICAgICAgIlVJbnQzMiIKKyAgICBlbHNpZiBAdHlwZSA9PSAiU3RyaW5nTGlzdCIK
KyAgICAgICJTdHJpbmdMaXN0IgogICAgIGVsc2UKICAgICAgIEB0eXBlLmNhcGl0YWxpemUKICAg
ICBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzLnlh
bWwgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlcy55YW1sCmluZGV4IDc1NjQ5
OGIzMWI0YzRhNmMwOTUzMGY3ZDZmNzU3ZWYxZjEwZGU1MzkuLjc0YmQxNjZkNzdjYTMyYzk1OGFj
ZWIxMzAxNmY1Y2VhN2E0ZTFlNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YlByZWZlcmVuY2VzLnlhbWwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5j
ZXMueWFtbApAQCAtNjU2LDYgKzY1NiwxMSBAQCBBbmltYXRlZEltYWdlQXN5bmNEZWNvZGluZ0Vu
YWJsZWQ6CiAgIHR5cGU6IGJvb2wKICAgZGVmYXVsdFZhbHVlOiB0cnVlCiAKK0FkZGl0aW9uYWxB
bGxvd2VkSW1hZ2VGb3JtYXRzOgorICAgIHR5cGU6IFN0cmluZ0xpc3QKKyAgICBkZWZhdWx0VmFs
dWU6ICd7IH0nCisgICAgd2ViY29yZUJpbmRpbmc6IG5vbmUKKwogQ3VzdG9tRWxlbWVudHNFbmFi
bGVkOgogICB0eXBlOiBib29sCiAgIGRlZmF1bHRWYWx1ZTogdHJ1ZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXNTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJQcmVmZXJlbmNlc1N0b3JlLmNwcAppbmRleCA2N2EwNjg3ODJmMTMzYWMxNzA2
MjI2ZWNlZGNkYjUxMDBjMzJjZGE0Li44MDI4Y2QxNDk4MjZhYThjZThmZTdmZTZmODJiNmNmZWMz
NmM5NGViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlc1N0
b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlc1N0b3JlLmNw
cApAQCAtMTE2LDYgKzExNiwxNiBAQCBTdHJpbmcgV2ViUHJlZmVyZW5jZXNTdG9yZTo6Z2V0U3Ry
aW5nVmFsdWVGb3JLZXkoY29uc3QgU3RyaW5nJiBrZXkpIGNvbnN0CiAgICAgcmV0dXJuIHZhbHVl
Rm9yS2V5PFN0cmluZz4obV92YWx1ZXMsIG1fb3ZlcnJpZGRlbkRlZmF1bHRzLCBrZXkpOwogfQog
Citib29sIFdlYlByZWZlcmVuY2VzU3RvcmU6OnNldFN0cmluZ0xpc3RWYWx1ZUZvcktleShjb25z
dCBTdHJpbmcmIGtleSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHZhbHVlKQoreworICAgIHJldHVy
biBzZXRWYWx1ZUZvcktleTxWZWN0b3I8U3RyaW5nPj4obV92YWx1ZXMsIG1fb3ZlcnJpZGRlbkRl
ZmF1bHRzLCBrZXksIHZhbHVlKTsKK30KKyAgICAKK1ZlY3RvcjxTdHJpbmc+IFdlYlByZWZlcmVu
Y2VzU3RvcmU6OmdldFN0cmluZ0xpc3RWYWx1ZUZvcktleShjb25zdCBTdHJpbmcmIGtleSkgY29u
c3QKK3sKKyAgICByZXR1cm4gdmFsdWVGb3JLZXk8VmVjdG9yPFN0cmluZz4+KG1fdmFsdWVzLCBt
X292ZXJyaWRkZW5EZWZhdWx0cywga2V5KTsKK30KKwogYm9vbCBXZWJQcmVmZXJlbmNlc1N0b3Jl
OjpzZXRCb29sVmFsdWVGb3JLZXkoY29uc3QgU3RyaW5nJiBrZXksIGJvb2wgdmFsdWUpCiB7CiAg
ICAgcmV0dXJuIHNldFZhbHVlRm9yS2V5PGJvb2w+KG1fdmFsdWVzLCBtX292ZXJyaWRkZW5EZWZh
dWx0cywga2V5LCB2YWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQ
cmVmZXJlbmNlc1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlc1N0
b3JlLmgKaW5kZXggNGIzOTY4NmRlZThkZjczZGJiNDlhNmY3ZGNmNjhkOGZmYThiMzM5NS4uNjE0
OWYwZWRjMWY2YzdkZGM1Yzc2MTVmOTk5MGZhZTcxYzQ5ZDUyNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXNTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYlByZWZlcmVuY2VzU3RvcmUuaApAQCAtMzMsNiArMzMsOCBAQAogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAordHlwZWRlZiBWZWN0b3I8U3RyaW5nPiBTdHJpbmdMaXN0OworCiBzdHJ1
Y3QgV2ViUHJlZmVyZW5jZXNTdG9yZSB7CiAgICAgV2ViUHJlZmVyZW5jZXNTdG9yZSgpOwogCkBA
IC00NCw2ICs0Niw5IEBAIHN0cnVjdCBXZWJQcmVmZXJlbmNlc1N0b3JlIHsKICAgICBib29sIHNl
dFN0cmluZ1ZhbHVlRm9yS2V5KGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIHZhbHVl
KTsKICAgICBTdHJpbmcgZ2V0U3RyaW5nVmFsdWVGb3JLZXkoY29uc3QgU3RyaW5nJiBrZXkpIGNv
bnN0OwogCisgICAgYm9vbCBzZXRTdHJpbmdMaXN0VmFsdWVGb3JLZXkoY29uc3QgU3RyaW5nJiBr
ZXksIGNvbnN0IFN0cmluZ0xpc3QmIHZhbHVlKTsKKyAgICBTdHJpbmdMaXN0IGdldFN0cmluZ0xp
c3RWYWx1ZUZvcktleShjb25zdCBTdHJpbmcmIGtleSkgY29uc3Q7CisKICAgICBib29sIHNldEJv
b2xWYWx1ZUZvcktleShjb25zdCBTdHJpbmcmIGtleSwgYm9vbCB2YWx1ZSk7CiAgICAgYm9vbCBn
ZXRCb29sVmFsdWVGb3JLZXkoY29uc3QgU3RyaW5nJiBrZXkpIGNvbnN0OwogCkBAIC02Miw3ICs2
Nyw3IEBAIHN0cnVjdCBXZWJQcmVmZXJlbmNlc1N0b3JlIHsKICAgICBzdGF0aWMgdm9pZCBvdmVy
cmlkZUJvb2xWYWx1ZUZvcktleShjb25zdCBTdHJpbmcmIGtleSwgYm9vbCB2YWx1ZSk7CiAgICAg
c3RhdGljIHZvaWQgcmVtb3ZlVGVzdFJ1bm5lck92ZXJyaWRlcygpOwogCi0gICAgdXNpbmcgVmFs
dWUgPSBWYXJpYW50PFN0cmluZywgYm9vbCwgdWludDMyX3QsIGRvdWJsZT47CisgICAgdXNpbmcg
VmFsdWUgPSBWYXJpYW50PFN0cmluZywgU3RyaW5nTGlzdCwgYm9vbCwgdWludDMyX3QsIGRvdWJs
ZT47CiAKICAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBWYWx1ZT4gVmFsdWVNYXA7CiAgICAg
VmFsdWVNYXAgbV92YWx1ZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlldy5tbQppbmRleCBlNjUzMmQ0NzkxOTRiOWRiNGYxYjE2NDA5ZmIzY2MxNTE5M2I3
ODBlLi5iMjE4MTdlMzBkMDBiNWVhZjkzYmNiYmI4NjBlODM3MmVlOGVjZDZiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTQ2LDYgKzQ2
LDcgQEAKICNpbXBvcnQgIlJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLmgiCiAjaW1wb3J0ICJS
ZW1vdGVPYmplY3RSZWdpc3RyeS5oIgogI2ltcG9ydCAiUmVtb3RlT2JqZWN0UmVnaXN0cnlNZXNz
YWdlcy5oIgorI2ltcG9ydCAiU3RyaW5nVXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJVSURlbGVnYXRl
LmgiCiAjaW1wb3J0ICJVc2VyTWVkaWFQcm9jZXNzTWFuYWdlci5oIgogI2ltcG9ydCAiVmVyc2lv
bkNoZWNrcy5oIgpAQCAtNjQzLDYgKzY0NCw4IEBAIHN0YXRpYyB2b2lkIHZhbGlkYXRlKFdLV2Vi
Vmlld0NvbmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRpb24pCiAgICAgICAgIHBhZ2VDb25maWd1cmF0
aW9uLT5wcmVmZXJlbmNlVmFsdWVzKCkuc2V0KFdlYktpdDo6V2ViUHJlZmVyZW5jZXNLZXk6OnNl
cnZpY2VXb3JrZXJzRW5hYmxlZEtleSgpLCBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmU6OlZh
bHVlKGZhbHNlKSk7CiAjZW5kaWYKIAorICAgIHBhZ2VDb25maWd1cmF0aW9uLT5wcmVmZXJlbmNl
VmFsdWVzKCkuc2V0KFdlYktpdDo6V2ViUHJlZmVyZW5jZXNLZXk6OmFkZGl0aW9uYWxBbGxvd2Vk
SW1hZ2VGb3JtYXRzS2V5KCksIFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWUoV2Vi
S2l0Ojp3ZWJDb3JlU3RyaW5nTGlzdEZyb21Oc1N0cmluZ0FycmF5KFtfY29uZmlndXJhdGlvbiBf
YWRkaXRpb25hbEFsbG93ZWRJbWFnZUZvcm1hdHNdKSkpOworCiAjaWYgUExBVEZPUk0oSU9TKQog
ICAgIENHUmVjdCBib3VuZHMgPSBzZWxmLmJvdW5kczsKICAgICBfc2Nyb2xsVmlldyA9IGFkb3B0
TlMoW1tXS1Njcm9sbFZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Ym91bmRzXSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJh
dGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25m
aWd1cmF0aW9uLm1tCmluZGV4IDQzYTUxMzQyNWJmYzlkNzczYzhiYWE5MThjNWJmNjJkYmQ5NDEx
NjEuLmQ2NmVmMWUyMDk4ODA2YjdkOTIxZjNmMGM4NjQ5MjE3MGNjNWY2MTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9u
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25m
aWd1cmF0aW9uLm1tCkBAIC0xNjEsNiArMTYxLDcgQEAgc3RhdGljIF9XS0RyYWdMaWZ0RGVsYXkg
dG9EcmFnTGlmdERlbGF5KE5TVUludGVnZXIgdmFsdWUpCiAgICAgQk9PTCBfZHJhd3NCYWNrZ3Jv
dW5kOwogCiAgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBfbWVkaWFDb250ZW50VHlwZXNSZXF1aXJp
bmdIYXJkd2FyZVN1cHBvcnQ7CisgICAgUmV0YWluUHRyPE5TQXJyYXk8TlNTdHJpbmcgKj4+IF9h
ZGRpdGlvbmFsQWxsb3dlZEltYWdlRm9ybWF0czsKIH0KIAogLSAoaW5zdGFuY2V0eXBlKWluaXQK
QEAgLTM5NCw2ICszOTUsNyBAQCBzdGF0aWMgX1dLRHJhZ0xpZnREZWxheSB0b0RyYWdMaWZ0RGVs
YXkoTlNVSW50ZWdlciB2YWx1ZSkKICAgICBjb25maWd1cmF0aW9uLT5fbmVlZHNTdG9yYWdlQWNj
ZXNzRnJvbUZpbGVVUkxzUXVpcmsgPSBzZWxmLT5fbmVlZHNTdG9yYWdlQWNjZXNzRnJvbUZpbGVV
UkxzUXVpcms7CiAKICAgICBjb25maWd1cmF0aW9uLT5fbWVkaWFDb250ZW50VHlwZXNSZXF1aXJp
bmdIYXJkd2FyZVN1cHBvcnQgPSBhZG9wdE5TKFtzZWxmLl9tZWRpYUNvbnRlbnRUeXBlc1JlcXVp
cmluZ0hhcmR3YXJlU3VwcG9ydCBjb3B5V2l0aFpvbmU6em9uZV0pOworICAgIGNvbmZpZ3VyYXRp
b24tPl9hZGRpdGlvbmFsQWxsb3dlZEltYWdlRm9ybWF0cyA9IGFkb3B0TlMoW3NlbGYtPl9hZGRp
dGlvbmFsQWxsb3dlZEltYWdlRm9ybWF0cyBjb3B5V2l0aFpvbmU6em9uZV0pOwogICAgIGNvbmZp
Z3VyYXRpb24tPl9sZWdhY3lFbmNyeXB0ZWRNZWRpYUFQSUVuYWJsZWQgPSBzZWxmLT5fbGVnYWN5
RW5jcnlwdGVkTWVkaWFBUElFbmFibGVkOwogICAgIGNvbmZpZ3VyYXRpb24tPl9hbGxvd01lZGlh
Q29udGVudFR5cGVzUmVxdWlyaW5nSGFyZHdhcmVTdXBwb3J0QXNGYWxsYmFjayA9IHNlbGYtPl9h
bGxvd01lZGlhQ29udGVudFR5cGVzUmVxdWlyaW5nSGFyZHdhcmVTdXBwb3J0QXNGYWxsYmFjazsK
IApAQCAtOTkwLDYgKzk5MiwxNiBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQK
ICAgICBfbWVkaWFDb250ZW50VHlwZXNSZXF1aXJpbmdIYXJkd2FyZVN1cHBvcnQgPSBhZG9wdE5T
KFttZWRpYUNvbnRlbnRUeXBlc1JlcXVpcmluZ0hhcmR3YXJlU3VwcG9ydCBjb3B5XSk7CiB9CiAK
Ky0gKE5TQXJyYXk8TlNTdHJpbmcgKj4gKilfYWRkaXRpb25hbEFsbG93ZWRJbWFnZUZvcm1hdHMK
K3sKKyAgICByZXR1cm4gX2FkZGl0aW9uYWxBbGxvd2VkSW1hZ2VGb3JtYXRzLmdldCgpOworfQor
CistICh2b2lkKV9zZXRBZGRpdGlvbmFsQWxsb3dlZEltYWdlRm9ybWF0czooTlNBcnJheTxOU1N0
cmluZyAqPiAqKWFkZGl0aW9uYWxBbGxvd2VkSW1hZ2VGb3JtYXRzCit7CisgICAgX2FkZGl0aW9u
YWxBbGxvd2VkSW1hZ2VGb3JtYXRzID0gYWRvcHROUyhbYWRkaXRpb25hbEFsbG93ZWRJbWFnZUZv
cm1hdHMgY29weV0pOworfQorCiAtICh2b2lkKV9zZXRMZWdhY3lFbmNyeXB0ZWRNZWRpYUFQSUVu
YWJsZWQ6KEJPT0wpZW5hYmxlZAogewogICAgIF9sZWdhY3lFbmNyeXB0ZWRNZWRpYUFQSUVuYWJs
ZWQgPSBlbmFibGVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvblByaXZhdGUuaAppbmRleCBmMTA1
YTFhYTJjM2MzYTlkYTE3NjE3ZmFmNzFkOGM1NjAzZjdkODgxLi5kYzA0YjE5MjRkMmU2NWUyZDEw
Y2U1MmUzNTgyOWI3N2JiODFmZjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvblByaXZhdGUuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvblByaXZhdGUu
aApAQCAtMTAxLDYgKzEwMSw3IEBAIHR5cGVkZWYgTlNfRU5VTShOU1VJbnRlZ2VyLCBfV0tEcmFn
TGlmdERlbGF5KSB7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRNZWRpYUNvbnRl
bnRUeXBlc1JlcXVpcmluZ0hhcmR3YXJlU3VwcG9ydDopIE5TU3RyaW5nICpfbWVkaWFDb250ZW50
VHlwZXNSZXF1aXJpbmdIYXJkd2FyZVN1cHBvcnQgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAu
MTMpLCBpb3MoMTEuMCkpOwogQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0TGVnYWN5
RW5jcnlwdGVkTWVkaWFBUElFbmFibGVkOikgQk9PTCBfbGVnYWN5RW5jcnlwdGVkTWVkaWFBUElF
bmFibGVkIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjEzKSwgaW9zKDExLjApKTsKIEBwcm9w
ZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldEFsbG93TWVkaWFDb250ZW50VHlwZXNSZXF1aXJp
bmdIYXJkd2FyZVN1cHBvcnRBc0ZhbGxiYWNrOikgQk9PTCBfYWxsb3dNZWRpYUNvbnRlbnRUeXBl
c1JlcXVpcmluZ0hhcmR3YXJlU3VwcG9ydEFzRmFsbGJhY2sgV0tfQVBJX0FWQUlMQUJMRShtYWNv
c3goMTAuMTMpLCBpb3MoMTEuMCkpOworQHByb3BlcnR5IChub25hdG9taWMsIGNvcHksIHNldHRl
cj1fc2V0QWRkaXRpb25hbEFsbG93ZWRJbWFnZUZvcm1hdHM6KSBOU0FycmF5PE5TU3RyaW5nICo+
ICpfYWRkaXRpb25hbEFsbG93ZWRJbWFnZUZvcm1hdHMgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3go
V0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAKIEBlbmQKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJlZmVyZW5jZXMuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUHJlZmVyZW5jZXMuY3BwCmluZGV4IDQ0YTBhMDJiOThiYzZjYjFiMTMxMmRk
NmUzYTViYjI0Y2YzMmQxZDkuLjI4ZGFkNDNiMDExZDY1MTJiOGNlNDE5ZDQ1OGZjNzE0ZjViNGRl
ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByZWZlcmVuY2VzLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcmVmZXJlbmNlcy5jcHAKQEAgLTEy
MCw2ICsxMjAsMTIgQEAgdm9pZCBXZWJQcmVmZXJlbmNlczo6dXBkYXRlU3RyaW5nVmFsdWVGb3JL
ZXkoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgdmEKICAgICB1cGRhdGUoKTsgLy8g
RklYTUU6IE9ubHkgc2VuZCBvdmVyIHRoZSBjaGFuZ2VkIGtleSBhbmQgdmFsdWUuCiB9CiAKK3Zv
aWQgV2ViUHJlZmVyZW5jZXM6OnVwZGF0ZVN0cmluZ0xpc3RWYWx1ZUZvcktleShjb25zdCBTdHJp
bmcmIGtleSwgY29uc3QgU3RyaW5nTGlzdCYgdmFsdWUpCit7CisgICAgcGxhdGZvcm1VcGRhdGVT
dHJpbmdMaXN0VmFsdWVGb3JLZXkoa2V5LCB2YWx1ZSk7CisgICAgdXBkYXRlKCk7IC8vIEZJWE1F
OiBPbmx5IHNlbmQgb3ZlciB0aGUgY2hhbmdlZCBrZXkgYW5kIHZhbHVlLgorfQorCiB2b2lkIFdl
YlByZWZlcmVuY2VzOjp1cGRhdGVCb29sVmFsdWVGb3JLZXkoY29uc3QgU3RyaW5nJiBrZXksIGJv
b2wgdmFsdWUpCiB7CiAgICAgaWYgKGtleSA9PSBXZWJQcmVmZXJlbmNlc0tleTo6cHJpdmF0ZUJy
b3dzaW5nRW5hYmxlZEtleSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcmVmZXJlbmNlcy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJlZmVyZW5j
ZXMuaAppbmRleCBjNGFkNDZlZTk5MzBiODUzOWEyOGJhYjBlNThmZDhjZTA4ZDViZGI2Li5mZDQ5
MDRkMjkwOTUyMTg1NWNkOWNjMDc5YTE0NzA1NzEzMWQ0YmMzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQcmVmZXJlbmNlcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByZWZlcmVuY2VzLmgKQEAgLTg3LDYgKzg3LDcgQEAgcHJpdmF0ZToKICAgICB2
b2lkIHVwZGF0ZSgpOwogCiAgICAgdm9pZCB1cGRhdGVTdHJpbmdWYWx1ZUZvcktleShjb25zdCBT
dHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7CisgICAgdm9pZCB1cGRhdGVTdHJpbmdM
aXN0VmFsdWVGb3JLZXkoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZ0xpc3QmIHZhbHVl
KTsKICAgICB2b2lkIHVwZGF0ZUJvb2xWYWx1ZUZvcktleShjb25zdCBTdHJpbmcmIGtleSwgYm9v
bCB2YWx1ZSk7CiAgICAgdm9pZCB1cGRhdGVCb29sVmFsdWVGb3JJbnRlcm5hbERlYnVnRmVhdHVy
ZUtleShjb25zdCBTdHJpbmcmIGtleSwgYm9vbCB2YWx1ZSk7CiAgICAgdm9pZCB1cGRhdGVCb29s
VmFsdWVGb3JFeHBlcmltZW50YWxGZWF0dXJlS2V5KGNvbnN0IFN0cmluZyYga2V5LCBib29sIHZh
bHVlKTsKQEAgLTk0LDYgKzk1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZURvdWJsZVZh
bHVlRm9yS2V5KGNvbnN0IFN0cmluZyYga2V5LCBkb3VibGUgdmFsdWUpOwogICAgIHZvaWQgdXBk
YXRlRmxvYXRWYWx1ZUZvcktleShjb25zdCBTdHJpbmcmIGtleSwgZmxvYXQgdmFsdWUpOwogICAg
IHZvaWQgcGxhdGZvcm1VcGRhdGVTdHJpbmdWYWx1ZUZvcktleShjb25zdCBTdHJpbmcmIGtleSwg
Y29uc3QgU3RyaW5nJiB2YWx1ZSk7CisgICAgdm9pZCBwbGF0Zm9ybVVwZGF0ZVN0cmluZ0xpc3RW
YWx1ZUZvcktleShjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nTGlzdCYgdmFsdWUpOwog
ICAgIHZvaWQgcGxhdGZvcm1VcGRhdGVCb29sVmFsdWVGb3JLZXkoY29uc3QgU3RyaW5nJiBrZXks
IGJvb2wgdmFsdWUpOwogICAgIHZvaWQgcGxhdGZvcm1VcGRhdGVVSW50MzJWYWx1ZUZvcktleShj
b25zdCBTdHJpbmcmIGtleSwgdWludDMyX3QgdmFsdWUpOwogICAgIHZvaWQgcGxhdGZvcm1VcGRh
dGVEb3VibGVWYWx1ZUZvcktleShjb25zdCBTdHJpbmcmIGtleSwgZG91YmxlIHZhbHVlKTsKQEAg
LTEwNSw2ICsxMDcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVnaXN0ZXJEZWZhdWx0VUludDMy
VmFsdWVGb3JLZXkoY29uc3QgU3RyaW5nJiwgdWludDMyX3QpOwogCiAgICAgYm9vbCBwbGF0Zm9y
bUdldFN0cmluZ1VzZXJWYWx1ZUZvcktleShjb25zdCBTdHJpbmcmIGtleSwgU3RyaW5nJiB1c2Vy
VmFsdWUpOworICAgIGJvb2wgcGxhdGZvcm1HZXRTdHJpbmdMaXN0VXNlclZhbHVlRm9yS2V5KGNv
bnN0IFN0cmluZyYga2V5LCBTdHJpbmdMaXN0JiB1c2VyVmFsdWUpOwogICAgIGJvb2wgcGxhdGZv
cm1HZXRCb29sVXNlclZhbHVlRm9yS2V5KGNvbnN0IFN0cmluZyYsIGJvb2wmKTsKICAgICBib29s
IHBsYXRmb3JtR2V0VUludDMyVXNlclZhbHVlRm9yS2V5KGNvbnN0IFN0cmluZyYsIHVpbnQzMl90
Jik7CiAgICAgYm9vbCBwbGF0Zm9ybUdldERvdWJsZVVzZXJWYWx1ZUZvcktleShjb25zdCBTdHJp
bmcmLCBkb3VibGUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9X
ZWJQcmVmZXJlbmNlc01hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQcmVm
ZXJlbmNlc01hYy5tbQppbmRleCBhYmUyOTVjYzBiNGZmN2FmOTg2YzAyZTQxMjViMjI1ZTczYzRj
YWU0Li42NjI3ZTI0MDdjYmJjOGJiYWU1MzMwNTg5ZmFjYjZlY2I2N2UzYjQ4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUHJlZmVyZW5jZXNNYWMubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlByZWZlcmVuY2VzTWFjLm1tCkBAIC01Myw2
ICs1MywyMSBAQCBib29sIFdlYlByZWZlcmVuY2VzOjpwbGF0Zm9ybUdldFN0cmluZ1VzZXJWYWx1
ZUZvcktleShjb25zdCBTdHJpbmcmIGtleSwgU3RyaW5nJgogICAgIHJldHVybiB0cnVlOwogfQog
Citib29sIFdlYlByZWZlcmVuY2VzOjpwbGF0Zm9ybUdldFN0cmluZ0xpc3RVc2VyVmFsdWVGb3JL
ZXkoY29uc3QgU3RyaW5nJiBrZXksIFN0cmluZ0xpc3QmIHVzZXJWYWx1ZSkKK3sKKyAgICBpZiAo
IW1faWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIGlkIG9iamVj
dCA9IFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIG9iamVjdEZvcktleTpt
YWtlS2V5KG1faWRlbnRpZmllciwgbV9rZXlQcmVmaXgsIGtleSldOworICAgIGlmICghb2JqZWN0
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFbb2JqZWN0IGlzS2luZE9mQ2xhc3M6
W05TQXJyYXk8TlNTdHJpbmcgKj4gY2xhc3NdXSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IAorICAgIHVzZXJWYWx1ZSA9IHdlYkNvcmVTdHJpbmdMaXN0RnJvbU5zU3RyaW5nQXJyYXkoKE5T
QXJyYXk8TlNTdHJpbmcgKj4gKilvYmplY3QpOworICAgIHJldHVybiB0cnVlOworfQorCiBib29s
IFdlYlByZWZlcmVuY2VzOjpwbGF0Zm9ybUdldEJvb2xVc2VyVmFsdWVGb3JLZXkoY29uc3QgU3Ry
aW5nJiBrZXksIGJvb2wmIHVzZXJWYWx1ZSkKIHsKICAgICBpZiAoIW1faWRlbnRpZmllcikKQEAg
LTE2Niw2ICsxODEsMTQgQEAgdm9pZCBXZWJQcmVmZXJlbmNlczo6cGxhdGZvcm1VcGRhdGVTdHJp
bmdWYWx1ZUZvcktleShjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3QKICAgICBbW05TVXNlckRl
ZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSBzZXRPYmplY3Q6bnNTdHJpbmdGcm9tV2ViQ29y
ZVN0cmluZyh2YWx1ZSkgZm9yS2V5Om1ha2VLZXkobV9pZGVudGlmaWVyLCBtX2tleVByZWZpeCwg
a2V5KV07CiB9CiAKK3ZvaWQgV2ViUHJlZmVyZW5jZXM6OnBsYXRmb3JtVXBkYXRlU3RyaW5nTGlz
dFZhbHVlRm9yS2V5KGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmdMaXN0JiB2YWx1ZSkK
K3sKKyAgICBpZiAoIW1faWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuOworCisgICAgW1tOU1Vz
ZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gc2V0T2JqZWN0Om5zU3RyaW5nQXJyYXlG
cm9tV2ViQ29yZVN0cmluZ0xpc3QodmFsdWUpIGZvcktleTptYWtlS2V5KG1faWRlbnRpZmllciwg
bV9rZXlQcmVmaXgsIGtleSldOworfQorCiB2b2lkIFdlYlByZWZlcmVuY2VzOjpwbGF0Zm9ybVVw
ZGF0ZUJvb2xWYWx1ZUZvcktleShjb25zdCBTdHJpbmcmIGtleSwgYm9vbCB2YWx1ZSkKIHsKICAg
ICBpZiAoIW1faWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L3dpbi9XZWJQcmVmZXJlbmNlc1dpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4v
V2ViUHJlZmVyZW5jZXNXaW4uY3BwCmluZGV4IGEyMGM0ZGI5ZTc0ZTJmODMyZTExMjA3ODg4NDJh
MTIyMWFlMDNhYzkuLjIwYzRiYmVjMmQ3NzExNzRiZGQyZDBjOTQ2ZTZhNDZlNGExODBkYmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJQcmVmZXJlbmNlc1dpbi5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYlByZWZlcmVuY2VzV2luLmNw
cApAQCAtNDEsNiArNDEsMTEgQEAgdm9pZCBXZWJQcmVmZXJlbmNlczo6cGxhdGZvcm1VcGRhdGVT
dHJpbmdWYWx1ZUZvcktleShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcKICAgICBub3RJbXBs
ZW1lbnRlZCgpOwogfQogCit2b2lkIFdlYlByZWZlcmVuY2VzOjpwbGF0Zm9ybVVwZGF0ZVN0cmlu
Z0xpc3RWYWx1ZUZvcktleShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmdMaXN0JikKK3sKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworfQorCiB2b2lkIFdlYlByZWZlcmVuY2VzOjpwbGF0Zm9ybVVw
ZGF0ZUJvb2xWYWx1ZUZvcktleShjb25zdCBTdHJpbmcmLCBib29sKQogewogICAgIG5vdEltcGxl
bWVudGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93cGUvV2ViUHJl
ZmVyZW5jZXNXUEUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd3BlL1dlYlByZWZlcmVu
Y2VzV1BFLmNwcAppbmRleCBmZjgxZmNkYTFjZmJkZTFlMDVjZjM4YzE2YzIxNDRkYjllMGUyNzdi
Li4zZjYzZTc0MTI0ZmI4Yjg0ZTI1MThhZWY4OGI5MGRjNTVjMDc5MWI3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93cGUvV2ViUHJlZmVyZW5jZXNXUEUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dwZS9XZWJQcmVmZXJlbmNlc1dQRS5jcHAKQEAgLTQwLDYg
KzQwLDExIEBAIHZvaWQgV2ViUHJlZmVyZW5jZXM6OnBsYXRmb3JtVXBkYXRlU3RyaW5nVmFsdWVG
b3JLZXkoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nCiAgICAgbm90SW1wbGVtZW50ZWQoKTsK
IH0KIAordm9pZCBXZWJQcmVmZXJlbmNlczo6cGxhdGZvcm1VcGRhdGVTdHJpbmdMaXN0VmFsdWVG
b3JLZXkoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nTGlzdCYpCit7CisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKK30KKwogdm9pZCBXZWJQcmVmZXJlbmNlczo6cGxhdGZvcm1VcGRhdGVCb29sVmFs
dWVGb3JLZXkoY29uc3QgU3RyaW5nJiwgYm9vbCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCBhNGU0
NmNiNjIwZTI4MWRlMGJkYTgwNGRkMjQ2Yjg5Y2NmMDE4MGZlLi40OTkxODJhNTZlODAwMjIyMDU5
ZDJkYThiMjg0MGU0NmIxYzYxNmM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcApAQCAtMjQ3LDYgKzI0Nyw3IEBACiAjaW5jbHVkZSAiVmlkZW9GdWxs
c2NyZWVuTWFuYWdlci5oIgogI2luY2x1ZGUgIldLU3RyaW5nQ0YuaCIKICNpbmNsdWRlIDxXZWJD
b3JlL0xlZ2FjeVdlYkFyY2hpdmUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1VUSVJlZ2lzdHJ5Lmg+
CiAjaW5jbHVkZSA8d3RmL01hY2hTZW5kUmlnaHQuaD4KICNlbmRpZgogCkBAIC0zMjI0LDYgKzMy
MjUsNyBAQCB2b2lkIFdlYlBhZ2U6OnVwZGF0ZVByZWZlcmVuY2VzKGNvbnN0IFdlYlByZWZlcmVu
Y2VzU3RvcmUmIHN0b3JlKQogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgbV9wZGZQbHVnaW5F
bmFibGVkID0gc3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5OjpwZGZQ
bHVnaW5FbmFibGVkS2V5KCkpOworICAgIFdlYkNvcmU6OnNldEFkZGl0aW9uYWxBbGxvd2VkSW1h
Z2VGb3JtYXRzKHN0b3JlLmdldFN0cmluZ0xpc3RWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tl
eTo6YWRkaXRpb25hbEFsbG93ZWRJbWFnZUZvcm1hdHNLZXkoKSkpOwogI2VuZGlmCiAjaWYgRU5B
QkxFKFBBWU1FTlRfUkVRVUVTVCkKICAgICBzZXR0aW5ncy5zZXRQYXltZW50UmVxdWVzdEVuYWJs
ZWQoc3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5OjphcHBsZVBheUVu
YWJsZWRLZXkoKSkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdl
TG9nCmluZGV4IGMzOTM1NDZiODA1ZjVhMWUyZDIzYTlkZGQxNTMyMzQxM2YzMzNmYzguLjgyZDcx
NDZmYjUzMjE0MjE3ZTQwNjQyZDZkNjBjMGM1MzRlMTczZmUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0No
YW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAxOC0xMC0x
NSAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAg
IEFkZCBhbiBTUEkgdG8gYWxsb3cgV2ViVmlldyBjbGllbnRzIHRvIGFkZCBhZGRpdGlvbmFsIHN1
cHBvcnRlZCBpbWFnZSBmb3JtYXRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xOTA0NTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUZXN0IG9wZW5pbmcgYSBUR0EgaW1hZ2UgaW4gV2ViVmlldyB3aGljaCBp
cyBub3QgYWxsb3dlZCBieSBkZWZhdWx0LiBUaGUKKyAgICAgICAgVEdBIGZvcm1hdCB3aWxsIGJl
IGFsbG93ZWQgdGhyb3VnaCBXS1dlYlZpZXdDb25maWd1cmF0aW9uLgorCisgICAgICAgIFRoZSBU
R0EgaW1hZ2UgZXh0ZW5zaW9uIHdhcyBjaGFuZ2VkIHRvIFBORyBiZWNhdXNlIFdlYktpdCB3b24n
dCBhY2NlcGN0CisgICAgICAgIGEgZmlsZSB3aXRoIFRHQSBleHRlbnNpb24gYXMgYW4gSW1hZ2VE
b2N1bWVudC4KKworCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9BZGRpdGlvbmFsQWxsb3dlZEltYWdlRm9ybWF0cy5tbTogQWRkZWQuCisgICAgICAg
IChURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL3RnYS1p
bWFnZS5wbmc6IEFkZGVkLgorCiAyMDE4LTEwLTExICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFw
cGxlLmNvbT4KIAogICAgICAgICBJT1MgMTIgLSBTZXJ2aWNlIHdvcmtlciBjYWNoZSBub3Qgc2hh
cmVkIHdoZW4gYWRkZWQgdG8gaG9tZXNjcmVlbgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBh
NDQyMzJmNTU0MzgwNjU0YWU2ZWM3MDU5MDkwNjlhZTQyNjU0ZTVjLi41YzVjNWRhZjYwNTliZWQz
N2M2ZTQwNzEyNjQyMDgxN2I4ODYxOGFmIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjQw
LDYgKzI0MCw4IEBACiAJCTUzNjc3MDM2MUNDODFCNjEwMEQ0MjVCMSAvKiBXZWJTY3JpcHRPYmpl
Y3REZXNjcmlwdGlvbi5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUzNjc3MDM1MUNDODEyRjkwMEQ0MjVCMSAvKiBXZWJTY3JpcHRPYmpl
Y3REZXNjcmlwdGlvbi5odG1sICovOyB9OwogCQk1M0VDMjU0MTFFOTZGRDg3MDAwODMxQjkgLyog
UHJpb3JpdHlRdWV1ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1M0VDMjUzRjFFOTZCQzgwMDAwODMxQjkgLyogUHJpb3JpdHlRdWV1ZS5jcHAgKi87
IH07CiAJCTU1MjI2QTJGMUVCQTQ0QjkwMEMzNkFEMCAvKiBsYXJnZS1yZWQtc3F1YXJlLWltYWdl
Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTUyMjZBMkUxRUI5NjlCNjAwQzM2QUQwIC8qIGxhcmdlLXJlZC1zcXVhcmUtaW1hZ2UuaHRt
bCAqLzsgfTsKKwkJNTU1ODQ4MUMyMTcxMzE1NzAwRkI3RkZGIC8qIEFkZGl0aW9uYWxBbGxvd2Vk
SW1hZ2VGb3JtYXRzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTU1ODQ4MUIyMTcxMzE1NjAwRkI3RkZGIC8qIEFkZGl0aW9uYWxBbGxvd2VkSW1hZ2VG
b3JtYXRzLm1tICovOyB9OworCQk1NTU4NDgyNTIxNzE4Q0RBMDBGQjdGRkYgLyogdGdhLWltYWdl
LnBuZyBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1NTU4NDgyMTIxNzE1QTdFMDBGQjdGRkYgLyogdGdhLWltYWdlLnBuZyAqLzsgfTsKIAkJNTU5
N0Y4MzYxRDk1OTZDODAwNjZCQzIxIC8qIFN5bmNocm9uaXplZEZpeGVkUXVldWUuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTU5N0Y4MzQxRDk1OTZD
ODAwNjZCQzIxIC8qIFN5bmNocm9uaXplZEZpeGVkUXVldWUuY3BwICovOyB9OwogCQk1NzE0RUNC
OTFDQThCNUIwMDAwNTFBQzggLyogRG93bmxvYWRSZXF1ZXN0T3JpZ2luYWxVUkwuaHRtbCBpbiBD
b3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzE0RUNC
ODFDQThCNTg4MDAwNTFBQzggLyogRG93bmxvYWRSZXF1ZXN0T3JpZ2luYWxVUkwuaHRtbCAqLzsg
fTsKIAkJNTcxNEVDQkIxQ0E4QkZFNDAwMDUxQUM4IC8qIERvd25sb2FkUmVxdWVzdE9yaWdpbmFs
VVJMRnJhbWUuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1NzE0RUNCQTFDQThCRkQxMDAwNTFBQzggLyogRG93bmxvYWRSZXF1ZXN0T3Jp
Z2luYWxVUkxGcmFtZS5odG1sICovOyB9OwpAQCAtMTE5OCw2ICsxMjAwLDcgQEAKIAkJCQlGNENE
NzRDNjIwRkRBQ0ZBMDBERTM3OTQgLyogdGV4dC13aXRoLWFzeW5jLXNjcmlwdC5odG1sIGluIENv
cHkgUmVzb3VyY2VzICovLAogCQkJCUY0NEM3QTA1MjBGQUFFM0MwMDE0NDc4QyAvKiB0ZXh0LXdp
dGgtZGVmZXJyZWQtc2NyaXB0Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJRjQxQUI5
QUExRUY0Njk2QjAwODNGQTA4IC8qIHRleHRhcmVhLXRvLWlucHV0Lmh0bWwgaW4gQ29weSBSZXNv
dXJjZXMgKi8sCisJCQkJNTU1ODQ4MjUyMTcxOENEQTAwRkI3RkZGIC8qIHRnYS1pbWFnZS5wbmcg
aW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJRjQ0NTFDNzYxRUI4RkQ4OTAwMjBDNURBIC8qIHR3
by1wYXJhZ3JhcGgtY29udGVudGVkaXRhYmxlLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJ
CQkJQzU0MEY3ODQxNTJFNUE5QTAwQTQwQzhDIC8qIHZlcmJvc2VNYXJrdXAuaHRtbCBpbiBDb3B5
IFJlc291cmNlcyAqLywKIAkJCQlDRDU3Nzc5RDIxMUNFOTFGMDAxQjM3MUUgLyogdmlkZW8td2l0
aC1hdWRpby1hbmQtd2ViLWF1ZGlvLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCkBAIC0xNDM0
LDcgKzE0MzcsNiBAQAogCQkzN0UxMDY0QjE2OTc2N0Y3MDBCNzhCRDAgLyogRE9NSFRNTFRhYmxl
Q2VsbEVsZW1lbnRDZWxsQWJvdmUuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9IERP
TUhUTUxUYWJsZUNlbGxFbGVtZW50Q2VsbEFib3ZlLmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTM3RTM4QzMzMTY5QjdEMDEwMDg0QzI4QyAvKiBXZWJWaWV3RGlkUmVtb3ZlRnJh
bWVGcm9tSGllcmFyY2h5Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gV2ViVmlld0RpZFJlbW92ZUZyYW1lRnJvbUhpZXJhcmNoeS5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMzdFN0RENjMxRUEwNkZGMjAwOUIzOTZEIC8qIEFkZGl0aW9uYWxSZWFk
QWNjZXNzQWxsb3dlZFVSTHMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBBZGRpdGlvbmFsUmVhZEFjY2Vzc0FsbG93ZWRVUkxzLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQkzN0U3REQ2NTFFQTA3MTVCMDA5QjM5NkQgLyogQWRkaXRpb25hbFJlYWRB
Y2Nlc3NBbGxvd2VkVVJMc1Byb3RvY29sLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEFkZGl0aW9uYWxSZWFkQWNjZXNzQWxsb3dlZFVSTHNQcm90b2NvbC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkzN0U3REQ2NjFFQTA3MUYzMDA5QjM5NkQgLyogQWRkaXRpb25h
bFJlYWRBY2Nlc3NBbGxvd2VkVVJMc1BsdWdpbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IEFkZGl0aW9uYWxSZWFkQWNjZXNzQWxsb3dlZFVSTHNQbHVnaW4ubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3RkI3Mjk1MURCMkU4MkYwMEU0MUJFNCAv
KiBDb250ZXh0TWVudURlZmF1bHRJdGVtc0hhdmVUYWdzLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gQ29udGV4dE1lbnVEZWZhdWx0SXRlbXNIYXZlVGFncy5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJM0YxQjUyNjgxRDNENzEyOTAwOEQ2MEM0IC8q
IEZ1bGxzY3JlZW5MYXlvdXRDb25zdHJhaW50cy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IEZ1bGxzY3JlZW5MYXlvdXRDb25zdHJhaW50cy5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE1NDYsNiArMTU0OCw5IEBACiAJCTUzNjc3MDM1MUNDODEy
RjkwMEQ0MjVCMSAvKiBXZWJTY3JpcHRPYmplY3REZXNjcmlwdGlvbi5odG1sICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dC5odG1sOyBwYXRoID0gV2ViU2NyaXB0T2JqZWN0RGVzY3JpcHRpb24uaHRtbDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTNFQzI1M0YxRTk2QkM4MDAwMDgzMUI5IC8qIFByaW9y
aXR5UXVldWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHJpb3Jp
dHlRdWV1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU1MjI2QTJFMUVCOTY5
QjYwMEMzNkFEMCAvKiBsYXJnZS1yZWQtc3F1YXJlLWltYWdlLmh0bWwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
Lmh0bWw7IHBhdGggPSAibGFyZ2UtcmVkLXNxdWFyZS1pbWFnZS5odG1sIjsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNTU1ODQ4MUIyMTcxMzE1NjAwRkI3RkZGIC8qIEFkZGl0aW9uYWxB
bGxvd2VkSW1hZ2VGb3JtYXRzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gQWRkaXRpb25hbEFsbG93ZWRJbWFnZUZvcm1hdHMubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTU1NTg0ODFGMjE3MTM1MDgwMEZCN0ZGRiAvKiBBZGRpdGlvbmFsUmVhZEFj
Y2Vzc0FsbG93ZWRVUkxzUHJvdG9jb2wuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQWRkaXRpb25hbFJlYWRBY2Nlc3NBbGxvd2VkVVJMc1Byb3RvY29sLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTU1NTg0ODIxMjE3MTVBN0UwMEZCN0ZGRiAvKiB0Z2EtaW1hZ2Uu
cG5nICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gaW1h
Z2UucG5nOyBwYXRoID0gInRnYS1pbWFnZS5wbmciOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1NTk3RjgzNDFEOTU5NkM4MDA2NkJDMjEgLyogU3luY2hyb25pemVkRml4ZWRRdWV1ZS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTeW5jaHJvbml6ZWRGaXhl
ZFF1ZXVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTcxNEVDQjgxQ0E4QjU4
ODAwMDUxQUM4IC8qIERvd25sb2FkUmVxdWVzdE9yaWdpbmFsVVJMLmh0bWwgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0Lmh0bWw7IHBhdGggPSBEb3dubG9hZFJlcXVlc3RPcmlnaW5hbFVSTC5odG1sOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1NzE0RUNCQTFDQThCRkQxMDAwNTFBQzggLyogRG93bmxv
YWRSZXF1ZXN0T3JpZ2luYWxVUkxGcmFtZS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRo
ID0gRG93bmxvYWRSZXF1ZXN0T3JpZ2luYWxVUkxGcmFtZS5odG1sOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMjMxMCw5ICsyMzE1LDEwIEBACiAJCQkJQTE2RjY2QjgxQzQwRTlFMTAw
QkQ0RDI0IC8qIFJlc291cmNlcyAqLywKIAkJCQk1Q0VBQjVERjFGQTkzN0NCMDBBNzdGQUEgLyog
X1dLSW5wdXREZWxlZ2F0ZS5tbSAqLywKIAkJCQk3Q0VGQTk2NDFBQzBCOUUyMDBCOTEwRkQgLyog
X1dLVXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZS5tbSAqLywKKwkJCQk1NTU4NDgxQjIxNzEzMTU2
MDBGQjdGRkYgLyogQWRkaXRpb25hbEFsbG93ZWRJbWFnZUZvcm1hdHMubW0gKi8sCiAJCQkJMzdF
N0RENjMxRUEwNkZGMjAwOUIzOTZEIC8qIEFkZGl0aW9uYWxSZWFkQWNjZXNzQWxsb3dlZFVSTHMu
bW0gKi8sCiAJCQkJMzdFN0RENjYxRUEwNzFGMzAwOUIzOTZEIC8qIEFkZGl0aW9uYWxSZWFkQWNj
ZXNzQWxsb3dlZFVSTHNQbHVnaW4ubW0gKi8sCi0JCQkJMzdFN0RENjUxRUEwNzE1QjAwOUIzOTZE
IC8qIEFkZGl0aW9uYWxSZWFkQWNjZXNzQWxsb3dlZFVSTHNQcm90b2NvbC5oICovLAorCQkJCTU1
NTg0ODFGMjE3MTM1MDgwMEZCN0ZGRiAvKiBBZGRpdGlvbmFsUmVhZEFjY2Vzc0FsbG93ZWRVUkxz
UHJvdG9jb2wuaCAqLywKIAkJCQlBMURGNzQzMDFDNDFCNjU4MDBBMkY0RDAgLyogQWx3YXlzUmV2
YWxpZGF0ZWRVUkxTY2hlbWVzLm1tICovLAogCQkJCTJERTcxQUZEMUQ0OUMwQkQwMDkwNDA5NCAv
KiBBbmltYXRlZFJlc2l6ZS5tbSAqLywKIAkJCQk2M0Y2NjgyMDFGOTdDM0FBMDAzMkVFNTEgLyog
QXBwbGljYXRpb25NYW5pZmVzdC5tbSAqLywKQEAgLTI4MDQsNiArMjgxMCw3IEBACiAJCQkJRjRD
RDc0QzUyMEZEQUNGNTAwREUzNzk0IC8qIHRleHQtd2l0aC1hc3luYy1zY3JpcHQuaHRtbCAqLywK
IAkJCQlGNDRDN0EwNDIwRkFBRTMyMDAxNDQ3OEMgLyogdGV4dC13aXRoLWRlZmVycmVkLXNjcmlw
dC5odG1sICovLAogCQkJCUY0MUFCOTk1MUVGNDY5MkMwMDgzRkEwOCAvKiB0ZXh0YXJlYS10by1p
bnB1dC5odG1sICovLAorCQkJCTU1NTg0ODIxMjE3MTVBN0UwMEZCN0ZGRiAvKiB0Z2EtaW1hZ2Uu
cG5nICovLAogCQkJCUY0NDUxQzc1MUVCOEZEN0MwMDIwQzVEQSAvKiB0d28tcGFyYWdyYXBoLWNv
bnRlbnRlZGl0YWJsZS5odG1sICovLAogCQkJCUNENTc3NzlCMjExQ0U2Q0UwMDFCMzcxRSAvKiB2
aWRlby13aXRoLWF1ZGlvLWFuZC13ZWItYXVkaW8uaHRtbCAqLywKIAkJCQlDRDU3Nzc5ODIxMUNE
RThGMDAxQjM3MUUgLyogd2ViLWF1ZGlvLW9ubHkuaHRtbCAqLywKQEAgLTM3MTMsNiArMzcyMCw3
IEBACiAJCQkJMkUyMDVCQTQxRjUyNzc0NjAwNTk1MkREIC8qIEFjY2Vzc2liaWxpdHlUZXN0c0lP
Uy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTlCRDUxMTFDMUZFOEUxMTYwMEQyQjYzMCAvKiBBY2Nl
c3NpbmdQYXN0ZWRJbWFnZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCUY0NUI2M0ZFMUYxOUQ0MTAw
MDlEMzhCOSAvKiBBY3Rpb25TaGVldFRlc3RzLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJNTU1ODQ4
MUMyMTcxMzE1NzAwRkI3RkZGIC8qIEFkZGl0aW9uYWxBbGxvd2VkSW1hZ2VGb3JtYXRzLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMzdFN0RENjQxRUEwNkZGMjAwOUIzOTZEIC8qIEFkZGl0aW9uYWxS
ZWFkQWNjZXNzQWxsb3dlZFVSTHMubW0gaW4gU291cmNlcyAqLywKIAkJCQk3QTkwOUE3RDFEODc3
NDgwMDA3RTEwRjggLyogQWZmaW5lVHJhbnNmb3JtLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUEx
REY3NDMyMUM0MUI2NTgwMEEyRjREMCAvKiBBbHdheXNSZXZhbGlkYXRlZFVSTFNjaGVtZXMubW0g
aW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvQWRkaXRpb25hbEFsbG93ZWRJbWFnZUZvcm1hdHMubW0gYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0FkZGl0aW9uYWxBbGxvd2VkSW1hZ2VGb3JtYXRzLm1t
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmViZGNiNzVhY2JhY2I5OTM2MjBmNjc5ZTgxNDNjMzYxZjJkYzE5Y2IKLS0t
IC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Fk
ZGl0aW9uYWxBbGxvd2VkSW1hZ2VGb3JtYXRzLm1tCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgPFdlYktpdC9XS0ZvdW5kYXRpb24uaD4K
KworI2lmIFdLX0FQSV9FTkFCTEVEICYmIFBMQVRGT1JNKENPQ09BKQorCisjaW1wb3J0ICJQbGF0
Zm9ybVV0aWxpdGllcy5oIgorI2ltcG9ydCAiVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5oIgorI2lt
cG9ydCAiV0tXZWJWaWV3Q29uZmlndXJhdGlvbkV4dHJhcy5oIgorI2ltcG9ydCA8V2ViS2l0L1dL
V2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+
CisKK1RFU1QoV2ViS2l0LCBBZGRpdGlvbmFsQWxsb3dlZEltYWdlRm9ybWF0cykKK3sKKyAgICBS
ZXRhaW5QdHI8V0tXZWJWaWV3Q29uZmlndXJhdGlvbj4gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMo
W1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgW2NvbmZpZ3VyYXRp
b24gX3NldEFkZGl0aW9uYWxBbGxvd2VkSW1hZ2VGb3JtYXRzOkBbQCJjb20udHJ1ZXZpc2lvbi50
Z2EtaW1hZ2UiXV07CisKKyAgICBSZXRhaW5QdHI8V0tXZWJWaWV3PiB3ZWJWaWV3ID0gYWRvcHRO
UyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwg
NjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKworICAgIFJldGFpblB0
cjxOU1VSTD4gdGVzdFVSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6
QCJ0Z2EtaW1hZ2UiIHdpdGhFeHRlbnNpb246QCJwbmciIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJL
aXRBUEkucmVzb3VyY2VzIl07CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVz
dCByZXF1ZXN0V2l0aFVSTDp0ZXN0VVJMLmdldCgpXV07CisgICAgW3dlYlZpZXcgX3Rlc3Rfd2Fp
dEZvckRpZEZpbmlzaE5hdmlnYXRpb25dOworCisgICAgX19ibG9jayBib29sIGlzRG9uZSA9IGZh
bHNlOworICAgIFt3ZWJWaWV3IF9kb0FmdGVyTmV4dFByZXNlbnRhdGlvblVwZGF0ZTpeeworICAg
ICAgICBbd2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6QCJbZG9jdW1lbnQucXVlcnlTZWxlY3Rv
cignaW1nJykud2lkdGhdIiBjb21wbGV0aW9uSGFuZGxlcjpeKGlkIHZhbHVlLCBOU0Vycm9yICpl
cnJvcikgeworICAgICAgICAgICAgQ0dGbG9hdCB3aWR0aCA9IFtbdmFsdWUgb2JqZWN0QXRJbmRl
eDowXSBmbG9hdFZhbHVlXTsKKyAgICAgICAgICAgIEVYUEVDVF9FUSh3aWR0aCwgMTAwKTsKKyAg
ICAgICAgICAgIGlzRG9uZSA9IHRydWU7CisgICAgICAgIH1dOworICAgIH1dOworICAgIFRlc3RX
ZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL3RnYS1pbWFnZS5wbmcgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL3RnYS1pbWFnZS5wbmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMDY5NThiYTBjNDQxMDYwNTg4ODRhM2YyNGEyM2VlZDE4MjhiMTc0YgpHSVQgYmluYXJ5IHBh
dGNoCmxpdGVyYWwgNTE4CmNjbVpRejs5YEoqNm93UUExJnpsSDRGQ1UrNStmPU0wQ3ttQzRnZGZF
CgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>352392</attachid>
            <date>2018-10-15 15:34:12 -0700</date>
            <delta_ts>2018-10-19 13:01:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190454-20181015153411.patch</filename>
            <type>text/plain</type>
            <size>32054</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3MDY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjlkY2FiMDkxMzA1OTE1
MDVmYjg5OTEyZmY4ZDE2YTZjMDg5NzZjOS4uY2Q2YWI1MmRlYzhjOThmNzJhYzI5MWZjM2U0NDI4
MDhiMDAzNzcwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDE4LTEwLTE1ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGFu
IFNQSSB0byBhbGxvdyBXZWJWaWV3IGNsaWVudHMgdG8gYWRkIGFkZGl0aW9uYWwgc3VwcG9ydGVk
IGltYWdlIGZvcm1hdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE5MDQ1NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFkZCBhbiBTUEkgdG8gYWxsb3cgYWRkaXRpb25hbCBzdXBwb3J0ZWQgaW1hZ2UgZm9y
bWF0cyBpbiBXZWJWaWV3LiBUaGVzZQorICAgICAgICBhZGRpdGlvbmFsIGZvcm1hdHMgY2FuIGJl
IHNldCBpbiB0aGUgV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhcyBhbiBOU0FycmF5CisgICAgICAg
IG9mIE5TdHJpbmdzLiBFYWNoIHN0cmluZyByZXByZXNlbnRzIHRoZSBVVEkgb2YgdGhlIGFkZGl0
aW9uYWwgYWxsb3dlZCAKKyAgICAgICAgaW1hZ2UgZm9ybWF0LgorCisgICAgICAgICogcGxhdGZv
cm0vTUlNRVR5cGVSZWdpc3RyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjppbml0aWFsaXplU3Vw
cG9ydGVkSW1hZ2VNSU1FVHlwZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0lt
YWdlRGVjb2RlckNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckNHOjplbmNv
ZGVkRGF0YVN0YXR1cyBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvVVRJ
UmVnaXN0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZGVmYXVsdEFsbG93ZWRJbWFnZUZvcm1h
dHMpOiBUaGlzIGlzIHRoZSBXZWJLaXQgZGVmYXVsdCBsaXN0IG9mCisgICAgICAgIHN1cHBvcnRl
ZCBpbWFnZSBmb3JtYXRzLgorICAgICAgICAoV2ViQ29yZTo6YWRkaXRpb25hbEFsbG93ZWRJbWFn
ZUZvcm1hdHMpOgorICAgICAgICAoV2ViQ29yZTo6c2V0QWRkaXRpb25hbEFsbG93ZWRJbWFnZUZv
cm1hdHMpOgorICAgICAgICAoV2ViQ29yZTo6aXNBbGxvd2VkSW1hZ2VGb3JtYXQpOiBUaGlzIGZ1
bmN0aW9uIGNoZWNrcyB0aGUgZGVmYXVsdCBsaXN0IGFuZAorICAgICAgICB0aGUgYWRkaXRpb25h
bCBsaXN0IHRvIGRlY2lkZSB3aGV0aGVyIHRoZSBpbWFnZSBmb3JtYXQgaXMgc3VwcG9ydGVkLgor
ICAgICAgICAoV2ViQ29yZTo6YWxsb3dlZEltYWdlVVRJcyk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjppc0FsbG93ZWRJbWFnZVVUSSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvVVRJUmVnaXN0cnkuaDoKKwogMjAxOC0xMC0xMSAgRG9uIE9sbXN0ZWFkICA8
ZG9uLm9sbXN0ZWFkQHNvbnkuY29tPgogCiAgICAgICAgIEFkZCBIb3VkaW5pIHNwZWNzIHRvIGZl
YXR1cmVzLmpzb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNTY2MTIxNGJlMzAwNTIyYzg2ZGVkOGI1MWRhYWNlMjg3
NmZhM2M1ZC4uMWM2M2EwZGY5Njg4MzNjNzA1ZDY5MWFlMjQ1MjVlMGZjYjVmNDAzNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw1NCBAQAorMjAxOC0xMC0xNSAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJv
dWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBhbiBTUEkgdG8gYWxsb3cgV2ViVmll
dyBjbGllbnRzIHRvIGFkZCBhZGRpdGlvbmFsIHN1cHBvcnRlZCBpbWFnZSBmb3JtYXRzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTA0NTQKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFBsYXRmb3JtL21h
Yy9TdHJpbmdVdGlsaXRpZXMuaDoKKyAgICAgICAgKiBQbGF0Zm9ybS9tYWMvU3RyaW5nVXRpbGl0
aWVzLm1tOgorICAgICAgICAoV2ViS2l0Ojp3ZWJDb3JlU3RyaW5nTGlzdEZyb21Oc1N0cmluZ0Fy
cmF5KToKKyAgICAgICAgQSBoZWxwZXIgZnVuY3Rpb24gd2hpY2ggY29udmVydHMgYW4gTlNBcnJh
eSBvZiBOU1N0cmluZ3MgdG8gYSBWZWN0b3Igb2YKKyAgICAgICAgV1RGU3RyaW5nLgorCisgICAg
ICAgICogU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIFNo
YXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmg6CisgICAgICAgIEhhbmRsZSBlbmNvZGlu
ZyBhbmQgZGVjb2RpbmcgdGhlIEFkZGl0aW9uYWxBbGxvd2VkSW1hZ2VGb3JtYXRzIHdoaWNoIHdp
bGwKKyAgICAgICAgYWxsb3cgdHJhbnNmZXJyaW5nIGl0IGZyb20gdGhlIFVJIHByb2Nlc3MgdG8g
dGhlIHdlYiBwcm9jZXNzLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmln
dXJhdGlvbi5oOgorICAgICAgICAoQVBJOjpQYWdlQ29uZmlndXJhdGlvbjo6YWRkaXRpb25hbEFs
bG93ZWRJbWFnZUZvcm1hdHMgY29uc3QpOgorICAgICAgICAoQVBJOjpQYWdlQ29uZmlndXJhdGlv
bjo6c2V0QWRkaXRpb25hbEFsbG93ZWRJbWFnZUZvcm1hdHMpOgorICAgICAgICBTdG9yZSB0aGUg
QWRkaXRpb25hbEFsbG93ZWRJbWFnZUZvcm1hdHMgaW4gdGhlIEFQSVBhZ2VDb25maWd1cmF0aW9u
CisgICAgICAgIHdoaWNoIGlzIHVzZWQgd2hlbiBjcmVhdGluZyB0aGUgV2ViUGFnZVByb3h5IGlu
IHRoZSBVSVBvcmNlc3MuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
dy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9pbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb246
XSk6CisgICAgICAgIFNldCB0aGUgdmFsdWUgb2YgQWRkaXRpb25hbEFsbG93ZWRJbWFnZUZvcm1h
dHMgZnJvbSBXS1dlYlZpZXdDb25maWd1cmF0aW9uCisgICAgICAgIHRvIHRoZSBBUElQYWdlQ29u
ZmlndXJhdGlvbi4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29u
ZmlndXJhdGlvbi5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBjb3B5V2l0
aFpvbmU6XSk6CisgICAgICAgICgtW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX2FkZGl0aW9uYWxB
bGxvd2VkSW1hZ2VGb3JtYXRzXSk6CisgICAgICAgICgtW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24g
X3NldEFkZGl0aW9uYWxBbGxvd2VkSW1hZ2VGb3JtYXRzOl0pOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvblByaXZhdGUuaDoKKyAgICAgICAgU2V0
dGVyL0dldHRlciBmb3IgdGhlIGFkZGl0aW9uYWxBbGxvd2VkSW1hZ2VGb3JtYXRzLgorCisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6Y3JlYXRpb25QYXJhbWV0ZXJzKToKKyAgICAgICAgQ29weSB0aGUgYWRkaXRpb25h
bEFsbG93ZWRJbWFnZUZvcm1hdHMgZnJvbSBBUElQYWdlQ29uZmlndXJhdGlvbiB0byAKKyAgICAg
ICAgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaDoKKyAgICAgICAgRGVsZXRlIHVuaW1wbGVtZW50ZWQgZnVuY3Rpb24uCisKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OldlYlBhZ2UpOgorICAgICAgICBDb3B5IHRoZSBhZGRpdGlvbmFsQWxsb3dlZElt
YWdlRm9ybWF0cyBmcm9tIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgdG8KKyAgICAgICAgV2Vi
Q29yZS4KKwogMjAxOC0xMC0xMSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAK
ICAgICAgICAgSU9TIDEyIC0gU2VydmljZSB3b3JrZXIgY2FjaGUgbm90IHNoYXJlZCB3aGVuIGFk
ZGVkIHRvIGhvbWVzY3JlZW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01J
TUVUeXBlUmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdp
c3RyeS5jcHAKaW5kZXggZjNkZDE0ZjA1NTAwOGE2YzM0MmU3M2EyY2RjYzdmMTJjNjEzMzA4Ni4u
YjZhY2ExYjkyYjE5NTIwYzExMWY1ZDIyMmE5MmMzYTExNmFiNWRiYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHAKQEAgLTc4LDcgKzc4LDcgQEAgc3Rh
dGljIHZvaWQgaW5pdGlhbGl6ZVN1cHBvcnRlZEltYWdlTUlNRVR5cGVzKCkKICAgICB9CiAKICNp
Zm5kZWYgTkRFQlVHCi0gICAgZm9yIChhdXRvJiB1dGkgOiBhbGxvd2VkSW1hZ2VVVElzKCkpIHsK
KyAgICBmb3IgKGF1dG8mIHV0aSA6IGRlZmF1bHRBbGxvd2VkSW1hZ2VGb3JtYXRzKCkpIHsKICAg
ICAgICAgYXV0byBtaW1lVHlwZSA9IE1JTUVUeXBlRm9ySW1hZ2VTb3VyY2VUeXBlKHV0aSk7CiAg
ICAgICAgIGlmICghbWltZVR5cGUuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBBU1NFUlQoc3Vw
cG9ydGVkSW1hZ2VNSU1FVHlwZXMtPmNvbnRhaW5zKG1pbWVUeXBlKSk7CkBAIC04OCw3ICs4OCw3
IEBAIHN0YXRpYyB2b2lkIGluaXRpYWxpemVTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlcygpCiAKICNp
ZiBQTEFURk9STShDT0NPQSkKICAgICBmb3IgKGF1dG8mIG1pbWUgOiAqc3VwcG9ydGVkSW1hZ2VN
SU1FVHlwZXMpCi0gICAgICAgIEFTU0VSVF9VTlVTRUQobWltZSwgYWxsb3dlZEltYWdlVVRJcygp
LmNvbnRhaW5zKFVUSUZyb21NSU1FVHlwZShtaW1lKSkpOworICAgICAgICBBU1NFUlRfVU5VU0VE
KG1pbWUsIGRlZmF1bHRBbGxvd2VkSW1hZ2VGb3JtYXRzKCkuY29udGFpbnMoVVRJRnJvbU1JTUVU
eXBlKG1pbWUpKSk7CiAjZW5kaWYKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAKaW5kZXggOGI2MWU2Yzc2
Zjk5YzM2MTRkNGEzMGJlNmEwZmNjMWQwY2M0MjgxNy4uYjc4MDIxOTg3YmNiMmZkNDgzZmUzYzIw
ZDY3MzdhYTUzYmI1MTQ3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcApAQCAtMTk5LDcgKzE5OSw3IEBAIEVuY29k
ZWREYXRhU3RhdHVzIEltYWdlRGVjb2RlckNHOjplbmNvZGVkRGF0YVN0YXR1cygpIGNvbnN0CiAg
ICAgICAgIHJldHVybiBFbmNvZGVkRGF0YVN0YXR1czo6RXJyb3I7CiAKICAgICBjYXNlIGtDR0lt
YWdlU3RhdHVzSW5jb21wbGV0ZTogewotICAgICAgICBpZiAoIWlzQWxsb3dlZEltYWdlVVRJKHV0
aSkpCisgICAgICAgIGlmICghaXNBbGxvd2VkSW1hZ2VGb3JtYXQodXRpKSkKICAgICAgICAgICAg
IHJldHVybiBFbmNvZGVkRGF0YVN0YXR1czo6RXJyb3I7CiAKICAgICAgICAgUmV0YWluUHRyPENG
RGljdGlvbmFyeVJlZj4gaW1hZ2UwUHJvcGVydGllcyA9IGFkb3B0Q0YoQ0dJbWFnZVNvdXJjZUNv
cHlQcm9wZXJ0aWVzQXRJbmRleChtX25hdGl2ZURlY29kZXIuZ2V0KCksIDAsIGltYWdlU291cmNl
T3B0aW9ucygpLmdldCgpKSk7CkBAIC0yMTMsNyArMjEzLDcgQEAgRW5jb2RlZERhdGFTdGF0dXMg
SW1hZ2VEZWNvZGVyQ0c6OmVuY29kZWREYXRhU3RhdHVzKCkgY29uc3QKICAgICB9CiAKICAgICBj
YXNlIGtDR0ltYWdlU3RhdHVzQ29tcGxldGU6Ci0gICAgICAgIGlmICghaXNBbGxvd2VkSW1hZ2VV
VEkodXRpKSkKKyAgICAgICAgaWYgKCFpc0FsbG93ZWRJbWFnZUZvcm1hdCh1dGkpKQogICAgICAg
ICAgICAgcmV0dXJuIEVuY29kZWREYXRhU3RhdHVzOjpFcnJvcjsKIAogICAgICAgICByZXR1cm4g
RW5jb2RlZERhdGFTdGF0dXM6OkNvbXBsZXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvVVRJUmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvVVRJUmVnaXN0cnkuY3BwCmluZGV4IGQzNDIyNDMzZTUyOWVlMTM3
OGZiY2I0ODIyMDE1MmY3NDNlODlhNTkuLjg5NDZlNmFiMzAwZmZiYzdlZDQ4MjZjNzNiY2E5M2Yx
MzBkMWQ1YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L1VUSVJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9VVElSZWdpc3RyeS5jcHAKQEAgLTM4LDEwICszOCwxMCBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLUhhc2hTZXQ8U3RyaW5nPiYgYWxsb3dlZEltYWdlVVRJcygpCitIYXNoU2V0PFN0cmlu
Zz4mIGRlZmF1bHRBbGxvd2VkSW1hZ2VGb3JtYXRzKCkKIHsKICAgICAvLyBDRyBhdCBsZWFzdCBz
dXBwb3J0cyB0aGUgZm9sbG93aW5nIHN0YW5kYXJkIGltYWdlIHR5cGVzOgotICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxIYXNoU2V0PFN0cmluZz4+IHNfYWxsb3dlZEltYWdlVVRJcyA9IHN0ZDo6
aW5pdGlhbGl6ZXJfbGlzdDxTdHJpbmc+IHsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFz
aFNldDxTdHJpbmc+PiBkZWZhdWx0QWxsb3dlZEltYWdlRm9ybWF0cyA9IHN0ZDo6aW5pdGlhbGl6
ZXJfbGlzdDxTdHJpbmc+IHsKICAgICAgICAgImNvbS5jb21wdXNlcnZlLmdpZiIsCiAgICAgICAg
ICJjb20ubWljcm9zb2Z0LmJtcCIsCiAgICAgICAgICJjb20ubWljcm9zb2Z0LmN1ciIsCkBAIC01
OSw3ICs1OSw3IEBAIEhhc2hTZXQ8U3RyaW5nPiYgYWxsb3dlZEltYWdlVVRJcygpCiAgICAgaWYg
KCFjaGVja2VkKSB7CiAgICAgICAgIFJldGFpblB0cjxDRkFycmF5UmVmPiBzeXN0ZW1JbWFnZVVU
SXMgPSBhZG9wdENGKENHSW1hZ2VTb3VyY2VDb3B5VHlwZUlkZW50aWZpZXJzKCkpOwogICAgICAg
ICBDRkluZGV4IGNvdW50ID0gQ0ZBcnJheUdldENvdW50KHN5c3RlbUltYWdlVVRJcy5nZXQoKSk7
Ci0gICAgICAgIGZvciAoYXV0byYgaW1hZ2VVVEkgOiBzX2FsbG93ZWRJbWFnZVVUSXMuZ2V0KCkp
IHsKKyAgICAgICAgZm9yIChhdXRvJiBpbWFnZVVUSSA6IGRlZmF1bHRBbGxvd2VkSW1hZ2VGb3Jt
YXRzLmdldCgpKSB7CiAgICAgICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHN0cmluZyA9
IGltYWdlVVRJLmNyZWF0ZUNGU3RyaW5nKCk7CiAgICAgICAgICAgICBBU1NFUlQoQ0ZBcnJheUNv
bnRhaW5zVmFsdWUoc3lzdGVtSW1hZ2VVVElzLmdldCgpLCBDRlJhbmdlTWFrZSgwLCBjb3VudCks
IHN0cmluZy5nZXQoKSkpOwogICAgICAgICB9CkBAIC02NywxMiArNjcsMjMgQEAgSGFzaFNldDxT
dHJpbmc+JiBhbGxvd2VkSW1hZ2VVVElzKCkKICAgICB9CiAjZW5kaWYKIAotICAgIHJldHVybiBz
X2FsbG93ZWRJbWFnZVVUSXMuZ2V0KCk7CisgICAgcmV0dXJuIGRlZmF1bHRBbGxvd2VkSW1hZ2VG
b3JtYXRzOwogfQogCi1ib29sIGlzQWxsb3dlZEltYWdlVVRJKGNvbnN0IFN0cmluZyYgaW1hZ2VV
VEkpCitzdGF0aWMgVmVjdG9yPFN0cmluZz4mIGFkZGl0aW9uYWxBbGxvd2VkSW1hZ2VGb3JtYXRz
KCkKIHsKLSAgICByZXR1cm4gIWltYWdlVVRJLmlzRW1wdHkoKSAmJiBhbGxvd2VkSW1hZ2VVVElz
KCkuY29udGFpbnMoaW1hZ2VVVEkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxWZWN0b3I8
U3RyaW5nPj4gYWRkaXRpb25hbEFsbG93ZWRJbWFnZUZvcm1hdHM7CisgICAgcmV0dXJuIGFkZGl0
aW9uYWxBbGxvd2VkSW1hZ2VGb3JtYXRzOworfQorCit2b2lkIHNldEFkZGl0aW9uYWxBbGxvd2Vk
SW1hZ2VGb3JtYXRzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB2YWx1ZSkKK3sKKyAgICBhZGRpdGlv
bmFsQWxsb3dlZEltYWdlRm9ybWF0cygpID0gdmFsdWU7Cit9CisKK2Jvb2wgaXNBbGxvd2VkSW1h
Z2VGb3JtYXQoY29uc3QgU3RyaW5nJiBpbWFnZVVUSSkKK3sKKyAgICByZXR1cm4gIWltYWdlVVRJ
LmlzRW1wdHkoKSAmJiAoZGVmYXVsdEFsbG93ZWRJbWFnZUZvcm1hdHMoKS5jb250YWlucyhpbWFn
ZVVUSSkgfHwgYWRkaXRpb25hbEFsbG93ZWRJbWFnZUZvcm1hdHMoKS5jb250YWlucyhpbWFnZVVU
SSkpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9VVElSZWdpc3RyeS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
VVRJUmVnaXN0cnkuaAppbmRleCAyMmYyNmFkYjUwYzlmZTg2M2UwMjcyZWJmZmIxMzUzZmNmMzU0
YzQ1Li4xNDYzYTlkMjZkMGM5ZjVmZGZhYjc2MDczNmYxODUzMTc5ZTQyYzUxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9VVElSZWdpc3RyeS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1VUSVJlZ2lzdHJ5LmgKQEAgLTMw
LDcgKzMwLDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1IYXNoU2V0PFN0cmluZz4mIGFs
bG93ZWRJbWFnZVVUSXMoKTsKLWJvb2wgaXNBbGxvd2VkSW1hZ2VVVEkoY29uc3QgU3RyaW5nJik7
CitIYXNoU2V0PFN0cmluZz4mIGRlZmF1bHRBbGxvd2VkSW1hZ2VGb3JtYXRzKCk7Citib29sIGlz
QWxsb3dlZEltYWdlRm9ybWF0KGNvbnN0IFN0cmluZyYpOworV0VCQ09SRV9FWFBPUlQgdm9pZCBz
ZXRBZGRpdGlvbmFsQWxsb3dlZEltYWdlRm9ybWF0cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYpOwog
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL21hYy9TdHJpbmdVdGlsaXRp
ZXMuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vbWFjL1N0cmluZ1V0aWxpdGllcy5oCmluZGV4
IDI5YTc2Y2Q3NTM4YzVkZmM4ZTFhOGQyODllY2M5ZThiNmM4MDVkZjAuLmZhNzU4OThlNzg5Mzg3
ZjhiNTdkODlkOGFiMTQ0MjJhYzU3ZjU1OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vbWFjL1N0cmluZ1V0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
bWFjL1N0cmluZ1V0aWxpdGllcy5oCkBAIC0zNyw2ICszNyw4IEBAIG5hbWVzcGFjZSBXZWJLaXQg
ewogTlNTdHJpbmcgKm5zU3RyaW5nRnJvbVdlYkNvcmVTdHJpbmcoY29uc3QgU3RyaW5nJik7CiBO
U1N0cmluZyAqZm9ybWF0dGVkUGhvbmVOdW1iZXJTdHJpbmcoTlNTdHJpbmcgKm9yaWdpbmFsUGhv
bmVOdW1iZXIpOwogCitWZWN0b3I8U3RyaW5nPiB3ZWJDb3JlU3RyaW5nTGlzdEZyb21Oc1N0cmlu
Z0FycmF5KE5TQXJyYXk8TlNTdHJpbmcgKj4gKik7CisKICNlbmRpZiAvLyBkZWZpbmVkKF9fT0JK
Q19fKQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL21hYy9TdHJpbmdV
dGlsaXRpZXMubW0gYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL21hYy9TdHJpbmdVdGlsaXRpZXMu
bW0KaW5kZXggNWM5Njc5MzdjZTRmOWIxODBkODAxZDllMjI4YjY2YzkwNzdhNmJlYy4uNTBhYWYx
MWVlMThhMzUzYjk4NjkxYzFmMDg4ZTI1NjM3NWUwZTc4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9tYWMvU3RyaW5nVXRpbGl0aWVzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vbWFjL1N0cmluZ1V0aWxpdGllcy5tbQpAQCAtODIsNCArODIsMTUgQEAgTlNTdHJp
bmcgKmZvcm1hdHRlZFBob25lTnVtYmVyU3RyaW5nKE5TU3RyaW5nICopCiAKICNlbmRpZiAvLyBF
TkFCTEUoVEVMRVBIT05FX05VTUJFUl9ERVRFQ1RJT04pICYmIFBMQVRGT1JNKE1BQykKIAorVmVj
dG9yPFN0cmluZz4gd2ViQ29yZVN0cmluZ0xpc3RGcm9tTnNTdHJpbmdBcnJheShOU0FycmF5PE5T
U3RyaW5nICo+ICpuc1N0cmluZ0FycmF5KQoreworICAgIFZlY3RvcjxTdHJpbmc+IHN0cmluZ0xp
c3Q7CisgICAgc3RyaW5nTGlzdC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KFtuc1N0cmluZ0FycmF5
IGNvdW50XSk7CisKKyAgICBmb3IgKE5TU3RyaW5nICpuc1N0cmluZyBpbiBuc1N0cmluZ0FycmF5
KQorICAgICAgICBzdHJpbmdMaXN0LnVuY2hlY2tlZEFwcGVuZChuc1N0cmluZyk7CisKKyAgICBy
ZXR1cm4gc3RyaW5nTGlzdDsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAppbmRleCBiMWZiNGU1MTQ2ZjY5ZjU1ODg0YjJl
NDMwNzU1OWU3YTA3MzFmODFmLi5jNDY5MjNjOTI5MTdhYTk2MzYzMzYyMWQzMjU1YmU0NWYyZjYy
ZjIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJh
bWV0ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJh
bWV0ZXJzLmNwcApAQCAtOTUsNiArOTUsNyBAQCB2b2lkIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRl
cnM6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAjZW5kaWYKICNpZiBQTEFU
Rk9STShDT0NPQSkKICAgICBlbmNvZGVyIDw8IHNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZDsKKyAg
ICBlbmNvZGVyIDw8IGFkZGl0aW9uYWxBbGxvd2VkSW1hZ2VGb3JtYXRzOwogI2VuZGlmCiAgICAg
ZW5jb2RlciA8PCBhcHBsZU1haWxQYWdpbmF0aW9uUXVpcmtFbmFibGVkOwogICAgIGVuY29kZXIg
PDwgYXBwbGVNYWlsTGluZXNDbGFtcEVuYWJsZWQ7CkBAIC0yNjYsNiArMjY3LDggQEAgc3RkOjpv
cHRpb25hbDxXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzPiBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0
ZXJzOjpkZWNvZGUoSVBDOjoKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKHBhcmFtZXRlcnMuc21hcnRJbnNlcnREZWxldGVFbmFibGVkKSkKICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuYWRk
aXRpb25hbEFsbG93ZWRJbWFnZUZvcm1hdHMpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogI2VuZGlmCiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuYXBwbGVNYWls
UGFnaW5hdGlvblF1aXJrRW5hYmxlZCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQ
YWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKaW5kZXggZGI0YzA3ZjA3Yzg2NjQzYzY1ZjZhMDg4N2Zk
ODliMjM1YzA4OTcyNi4uMmNjYzQxZTIzYzVkMDQ3M2U3MDAyMGRkMmZiZWYwMGI5ZDM1ZmJiMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVy
cy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMu
aApAQCAtMTUyLDYgKzE1Miw3IEBAIHN0cnVjdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIHsK
ICNlbmRpZgogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGJvb2wgc21hcnRJbnNlcnREZWxldGVF
bmFibGVkOworICAgIFZlY3RvcjxTdHJpbmc+IGFkZGl0aW9uYWxBbGxvd2VkSW1hZ2VGb3JtYXRz
OwogI2VuZGlmCiAgICAgYm9vbCBhcHBsZU1haWxQYWdpbmF0aW9uUXVpcmtFbmFibGVkOwogICAg
IGJvb2wgYXBwbGVNYWlsTGluZXNDbGFtcEVuYWJsZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5oCmluZGV4IDZiNzI3MzM1MWYwYzFj
NDNiYmUyYzE3NWQwYzYxYzk0MzMxMWFiZTkuLjRmMmNkNzQ1ZWMxNDA1YTFiNTA3MDhkYzc0NjY0
Y2I1NmExMDRjMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQ
YWdlQ29uZmlndXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQ
YWdlQ29uZmlndXJhdGlvbi5oCkBAIC0xMTAsNiArMTEwLDExIEBAIHB1YmxpYzoKICAgICBjb25z
dCBXVEY6OlN0cmluZyYgb3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3koKSBjb25zdCB7IHJl
dHVybiBtX292ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5OyB9CiAgICAgdm9pZCBzZXRPdmVy
cmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeShjb25zdCBXVEY6OlN0cmluZyYgb3ZlcnJpZGVDb250
ZW50U2VjdXJpdHlQb2xpY3kpIHsgbV9vdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeSA9IG92
ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5OyB9CiAKKyNpZiBQTEFURk9STShDT0NPQSkKKyAg
ICBjb25zdCBXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4mIGFkZGl0aW9uYWxBbGxvd2VkSW1hZ2VG
b3JtYXRzKCkgY29uc3QgeyByZXR1cm4gbV9hZGRpdGlvbmFsQWxsb3dlZEltYWdlRm9ybWF0czsg
fQorICAgIHZvaWQgc2V0QWRkaXRpb25hbEFsbG93ZWRJbWFnZUZvcm1hdHMoV1RGOjpWZWN0b3I8
V1RGOjpTdHJpbmc+JiYgYWRkaXRpb25hbEFsbG93ZWRJbWFnZUZvcm1hdHMpIHsgbV9hZGRpdGlv
bmFsQWxsb3dlZEltYWdlRm9ybWF0cyA9IFdURk1vdmUoYWRkaXRpb25hbEFsbG93ZWRJbWFnZUZv
cm1hdHMpOyB9CisjZW5kaWYKKwogI2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKICAg
ICBBcHBsaWNhdGlvbk1hbmlmZXN0KiBhcHBsaWNhdGlvbk1hbmlmZXN0KCkgY29uc3Q7CiAgICAg
dm9pZCBzZXRBcHBsaWNhdGlvbk1hbmlmZXN0KEFwcGxpY2F0aW9uTWFuaWZlc3QqKTsKQEAgLTE0
Niw2ICsxNTEsMTAgQEAgcHJpdmF0ZToKIAogICAgIFdURjo6U3RyaW5nIG1fb3ZlcnJpZGVDb250
ZW50U2VjdXJpdHlQb2xpY3k7CiAKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBXVEY6OlZlY3Rv
cjxXVEY6OlN0cmluZz4gbV9hZGRpdGlvbmFsQWxsb3dlZEltYWdlRm9ybWF0czsKKyNlbmRpZgor
CiAjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQogICAgIFJlZlB0cjxBcHBsaWNhdGlv
bk1hbmlmZXN0PiBtX2FwcGxpY2F0aW9uTWFuaWZlc3Q7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IGU2NTMyZDQ3OTE5NGI5
ZGI0ZjFiMTY0MDlmYjNjYzE1MTkzYjc4MGUuLjhiMzMyOGY2ZWUxZDQxODg5MjAxMjg3ZGI3MzY1
NDZhM2UzZDA3MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlldy5tbQpAQCAtNDYsNiArNDYsNyBAQAogI2ltcG9ydCAiUmVtb3RlTGF5ZXJUcmVlVHJh
bnNhY3Rpb24uaCIKICNpbXBvcnQgIlJlbW90ZU9iamVjdFJlZ2lzdHJ5LmgiCiAjaW1wb3J0ICJS
ZW1vdGVPYmplY3RSZWdpc3RyeU1lc3NhZ2VzLmgiCisjaW1wb3J0ICJTdHJpbmdVdGlsaXRpZXMu
aCIKICNpbXBvcnQgIlVJRGVsZWdhdGUuaCIKICNpbXBvcnQgIlVzZXJNZWRpYVByb2Nlc3NNYW5h
Z2VyLmgiCiAjaW1wb3J0ICJWZXJzaW9uQ2hlY2tzLmgiCkBAIC01NjcsNiArNTY4LDggQEAgc3Rh
dGljIHZvaWQgdmFsaWRhdGUoV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqY29uZmlndXJhdGlvbikK
ICAgICAgICAgaWYgKGdyb3VwSWRlbnRpZmllci5sZW5ndGgpCiAgICAgICAgICAgICBwYWdlQ29u
ZmlndXJhdGlvbi0+c2V0UGFnZUdyb3VwKFdlYktpdDo6V2ViUGFnZUdyb3VwOjpjcmVhdGUoY29u
ZmlndXJhdGlvbi5fZ3JvdXBJZGVudGlmaWVyKS5wdHIoKSk7CiAgICAgfQorICAgIAorICAgIHBh
Z2VDb25maWd1cmF0aW9uLT5zZXRBZGRpdGlvbmFsQWxsb3dlZEltYWdlRm9ybWF0cyhXZWJLaXQ6
OndlYkNvcmVTdHJpbmdMaXN0RnJvbU5zU3RyaW5nQXJyYXkoW19jb25maWd1cmF0aW9uIF9hZGRp
dGlvbmFsQWxsb3dlZEltYWdlRm9ybWF0c10pKTsKIAogICAgIHBhZ2VDb25maWd1cmF0aW9uLT5w
cmVmZXJlbmNlVmFsdWVzKCkuc2V0KFdlYktpdDo6V2ViUHJlZmVyZW5jZXNLZXk6OnN1cHByZXNz
ZXNJbmNyZW1lbnRhbFJlbmRlcmluZ0tleSgpLCBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmU6
OlZhbHVlKCEhW19jb25maWd1cmF0aW9uIHN1cHByZXNzZXNJbmNyZW1lbnRhbFJlbmRlcmluZ10p
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlld0NvbmZpZ3VyYXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbQppbmRleCA0M2E1MTM0MjViZmM5ZDc3M2M4YmFhOTE4
YzViZjYyZGJkOTQxMTYxLi5kNjZlZjFlMjA5ODgwNmI3ZDkyMWYzZjBjODY0OTIxNzBjYzVmNjEz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
Q29uZmlndXJhdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbQpAQCAtMTYxLDYgKzE2MSw3IEBAIHN0YXRpYyBfV0tE
cmFnTGlmdERlbGF5IHRvRHJhZ0xpZnREZWxheShOU1VJbnRlZ2VyIHZhbHVlKQogICAgIEJPT0wg
X2RyYXdzQmFja2dyb3VuZDsKIAogICAgIFJldGFpblB0cjxOU1N0cmluZz4gX21lZGlhQ29udGVu
dFR5cGVzUmVxdWlyaW5nSGFyZHdhcmVTdXBwb3J0OworICAgIFJldGFpblB0cjxOU0FycmF5PE5T
U3RyaW5nICo+PiBfYWRkaXRpb25hbEFsbG93ZWRJbWFnZUZvcm1hdHM7CiB9CiAKIC0gKGluc3Rh
bmNldHlwZSlpbml0CkBAIC0zOTQsNiArMzk1LDcgQEAgc3RhdGljIF9XS0RyYWdMaWZ0RGVsYXkg
dG9EcmFnTGlmdERlbGF5KE5TVUludGVnZXIgdmFsdWUpCiAgICAgY29uZmlndXJhdGlvbi0+X25l
ZWRzU3RvcmFnZUFjY2Vzc0Zyb21GaWxlVVJMc1F1aXJrID0gc2VsZi0+X25lZWRzU3RvcmFnZUFj
Y2Vzc0Zyb21GaWxlVVJMc1F1aXJrOwogCiAgICAgY29uZmlndXJhdGlvbi0+X21lZGlhQ29udGVu
dFR5cGVzUmVxdWlyaW5nSGFyZHdhcmVTdXBwb3J0ID0gYWRvcHROUyhbc2VsZi5fbWVkaWFDb250
ZW50VHlwZXNSZXF1aXJpbmdIYXJkd2FyZVN1cHBvcnQgY29weVdpdGhab25lOnpvbmVdKTsKKyAg
ICBjb25maWd1cmF0aW9uLT5fYWRkaXRpb25hbEFsbG93ZWRJbWFnZUZvcm1hdHMgPSBhZG9wdE5T
KFtzZWxmLT5fYWRkaXRpb25hbEFsbG93ZWRJbWFnZUZvcm1hdHMgY29weVdpdGhab25lOnpvbmVd
KTsKICAgICBjb25maWd1cmF0aW9uLT5fbGVnYWN5RW5jcnlwdGVkTWVkaWFBUElFbmFibGVkID0g
c2VsZi0+X2xlZ2FjeUVuY3J5cHRlZE1lZGlhQVBJRW5hYmxlZDsKICAgICBjb25maWd1cmF0aW9u
LT5fYWxsb3dNZWRpYUNvbnRlbnRUeXBlc1JlcXVpcmluZ0hhcmR3YXJlU3VwcG9ydEFzRmFsbGJh
Y2sgPSBzZWxmLT5fYWxsb3dNZWRpYUNvbnRlbnRUeXBlc1JlcXVpcmluZ0hhcmR3YXJlU3VwcG9y
dEFzRmFsbGJhY2s7CiAKQEAgLTk5MCw2ICs5OTIsMTYgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNM
QVJBVElPTlNfRU5ECiAgICAgX21lZGlhQ29udGVudFR5cGVzUmVxdWlyaW5nSGFyZHdhcmVTdXBw
b3J0ID0gYWRvcHROUyhbbWVkaWFDb250ZW50VHlwZXNSZXF1aXJpbmdIYXJkd2FyZVN1cHBvcnQg
Y29weV0pOwogfQogCistIChOU0FycmF5PE5TU3RyaW5nICo+ICopX2FkZGl0aW9uYWxBbGxvd2Vk
SW1hZ2VGb3JtYXRzCit7CisgICAgcmV0dXJuIF9hZGRpdGlvbmFsQWxsb3dlZEltYWdlRm9ybWF0
cy5nZXQoKTsKK30KKworLSAodm9pZClfc2V0QWRkaXRpb25hbEFsbG93ZWRJbWFnZUZvcm1hdHM6
KE5TQXJyYXk8TlNTdHJpbmcgKj4gKilhZGRpdGlvbmFsQWxsb3dlZEltYWdlRm9ybWF0cworewor
ICAgIF9hZGRpdGlvbmFsQWxsb3dlZEltYWdlRm9ybWF0cyA9IGFkb3B0TlMoW2FkZGl0aW9uYWxB
bGxvd2VkSW1hZ2VGb3JtYXRzIGNvcHldKTsKK30KKwogLSAodm9pZClfc2V0TGVnYWN5RW5jcnlw
dGVkTWVkaWFBUElFbmFibGVkOihCT09MKWVuYWJsZWQKIHsKICAgICBfbGVnYWN5RW5jcnlwdGVk
TWVkaWFBUElFbmFibGVkID0gZW5hYmxlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRl
LmgKaW5kZXggZjEwNWExYWEyYzNjM2E5ZGExNzYxN2ZhZjcxZDhjNTYwM2Y3ZDg4MS4uZGMwNGIx
OTI0ZDJlNjVlMmQxMGNlNTJlMzU4MjliNzdiYjgxZmYyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3Vy
YXRpb25Qcml2YXRlLmgKQEAgLTEwMSw2ICsxMDEsNyBAQCB0eXBlZGVmIE5TX0VOVU0oTlNVSW50
ZWdlciwgX1dLRHJhZ0xpZnREZWxheSkgewogQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1f
c2V0TWVkaWFDb250ZW50VHlwZXNSZXF1aXJpbmdIYXJkd2FyZVN1cHBvcnQ6KSBOU1N0cmluZyAq
X21lZGlhQ29udGVudFR5cGVzUmVxdWlyaW5nSGFyZHdhcmVTdXBwb3J0IFdLX0FQSV9BVkFJTEFC
TEUobWFjb3N4KDEwLjEzKSwgaW9zKDExLjApKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0
ZXI9X3NldExlZ2FjeUVuY3J5cHRlZE1lZGlhQVBJRW5hYmxlZDopIEJPT0wgX2xlZ2FjeUVuY3J5
cHRlZE1lZGlhQVBJRW5hYmxlZCBXS19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMyksIGlvcygx
MS4wKSk7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRBbGxvd01lZGlhQ29udGVu
dFR5cGVzUmVxdWlyaW5nSGFyZHdhcmVTdXBwb3J0QXNGYWxsYmFjazopIEJPT0wgX2FsbG93TWVk
aWFDb250ZW50VHlwZXNSZXF1aXJpbmdIYXJkd2FyZVN1cHBvcnRBc0ZhbGxiYWNrIFdLX0FQSV9B
VkFJTEFCTEUobWFjb3N4KDEwLjEzKSwgaW9zKDExLjApKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWlj
LCBjb3B5LCBzZXR0ZXI9X3NldEFkZGl0aW9uYWxBbGxvd2VkSW1hZ2VGb3JtYXRzOikgTlNBcnJh
eTxOU1N0cmluZyAqPiAqX2FkZGl0aW9uYWxBbGxvd2VkSW1hZ2VGb3JtYXRzIFdLX0FQSV9BVkFJ
TEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogCiBAZW5kCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGVhY2FmNDhhNjllYjIx
YjgzMGVmNWRjNDY3NzY2ODhkNGMxOGU3MTMuLjdiMGU3ZGUzNzlmN2ZiNTk1ODMwY2ZmNWZjNDVk
MjcxNjFkN2I0ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApA
QCAtNjM1Nyw2ICs2MzU3LDcgQEAgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyBXZWJQYWdlUHJv
eHk6OmNyZWF0aW9uUGFyYW1ldGVycygpCiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBwYXJh
bWV0ZXJzLnNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCA9IG1faXNTbWFydEluc2VydERlbGV0ZUVu
YWJsZWQ7CisgICAgcGFyYW1ldGVycy5hZGRpdGlvbmFsQWxsb3dlZEltYWdlRm9ybWF0cyA9IG1f
Y29uZmlndXJhdGlvbi0+YWRkaXRpb25hbEFsbG93ZWRJbWFnZUZvcm1hdHMoKTsKICNlbmRpZgog
ICAgIHBhcmFtZXRlcnMuc2hvdWxkU2NhbGVWaWV3VG9GaXREb2N1bWVudCA9IG1fc2hvdWxkU2Nh
bGVWaWV3VG9GaXREb2N1bWVudDsKICAgICBwYXJhbWV0ZXJzLnVzZXJJbnRlcmZhY2VMYXlvdXRE
aXJlY3Rpb24gPSBwYWdlQ2xpZW50KCkudXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbigpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA5MmE0M2Q2MjRjNTU5ZGU2
NTA0MjRlZWJmYTA1ODk5MTlmMzljNjU4Li5mYWY0MDY0ZTllYzhhMTRiNDI4MzBmOTYxZGY4ODZm
NzYwMDljZmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTM2
MiwxMCArMTM2Miw2IEBAIHB1YmxpYzoKIAogICAgIFdlYkNvcmU6OkludFJlY3Qgc3luY1Jvb3RW
aWV3VG9TY3JlZW4oY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgdmlld1JlY3QpOwogCi0jaWYgUExB
VEZPUk0oQ09DT0EpCi0gICAgVmVjdG9yPFN0cmluZz4gbWVkaWFNSU1FVHlwZXMoKTsKLSNlbmRp
ZgotCiBwcml2YXRlOgogICAgIFdlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiwgV2ViUHJvY2Vzc1By
b3h5JiwgdWludDY0X3QgcGFnZUlELCBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJik7CiAg
ICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggYTRlNDZjYjYyMGUyODFkZTBiZGE4MDRkZDI0NmI4
OWNjZjAxODBmZS4uMDMyNjE5NjE1ZjYwNTA0NDU4NGNiM2NhMjllYjlmMTI2YjE2MzU4YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTI0Nyw2
ICsyNDcsNyBAQAogI2luY2x1ZGUgIlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIuaCIKICNpbmNsdWRl
ICJXS1N0cmluZ0NGLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9MZWdhY3lXZWJBcmNoaXZlLmg+Cisj
aW5jbHVkZSA8V2ViQ29yZS9VVElSZWdpc3RyeS5oPgogI2luY2x1ZGUgPHd0Zi9NYWNoU2VuZFJp
Z2h0Lmg+CiAjZW5kaWYKIApAQCAtNTkzLDYgKzU5NCw3IEBAIFdlYlBhZ2U6OldlYlBhZ2UodWlu
dDY0X3QgcGFnZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKICNp
ZiBQTEFURk9STShDT0NPQSkKICAgICBtX3BhZ2UtPnNldHRpbmdzKCkuc2V0Q29udGVudERpc3Bv
c2l0aW9uQXR0YWNobWVudFNhbmRib3hFbmFibGVkKHRydWUpOwogICAgIHNldFNtYXJ0SW5zZXJ0
RGVsZXRlRW5hYmxlZChwYXJhbWV0ZXJzLnNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCk7CisgICAg
V2ViQ29yZTo6c2V0QWRkaXRpb25hbEFsbG93ZWRJbWFnZUZvcm1hdHMocGFyYW1ldGVycy5hZGRp
dGlvbmFsQWxsb3dlZEltYWdlRm9ybWF0cyk7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShTRVJWSUNF
X1dPUktFUikKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwpp
bmRleCBjMzkzNTQ2YjgwNWY1YTFlMmQyM2E5ZGRkMTUzMjM0MTNmMzMzZmM4Li44MmQ3MTQ2ZmI1
MzIxNDIxN2U0MDY0MmQ2ZDYwYzBjNTM0ZTE3M2ZlIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VM
b2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTgtMTAtMTUgIFNh
aWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQg
YW4gU1BJIHRvIGFsbG93IFdlYlZpZXcgY2xpZW50cyB0byBhZGQgYWRkaXRpb25hbCBzdXBwb3J0
ZWQgaW1hZ2UgZm9ybWF0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTkwNDU0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVGVzdCBvcGVuaW5nIGEgVEdBIGltYWdlIGluIFdlYlZpZXcgd2hpY2ggaXMgbm90
IGFsbG93ZWQgYnkgZGVmYXVsdC4gVGhlCisgICAgICAgIFRHQSBmb3JtYXQgd2lsbCBiZSBhbGxv
d2VkIHRocm91Z2ggV0tXZWJWaWV3Q29uZmlndXJhdGlvbi4KKworICAgICAgICBUaGUgVEdBIGlt
YWdlIGV4dGVuc2lvbiB3YXMgY2hhbmdlZCB0byBQTkcgYmVjYXVzZSBXZWJLaXQgd29uJ3QgYWNj
ZXBjdAorICAgICAgICBhIGZpbGUgd2l0aCBUR0EgZXh0ZW5zaW9uIGFzIGFuIEltYWdlRG9jdW1l
bnQuCisKKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvQWRkaXRpb25hbEFsbG93ZWRJbWFnZUZvcm1hdHMubW06IEFkZGVkLgorICAgICAgICAoVEVT
VCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS90Z2EtaW1hZ2Uu
cG5nOiBBZGRlZC4KKwogMjAxOC0xMC0xMSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5j
b20+CiAKICAgICAgICAgSU9TIDEyIC0gU2VydmljZSB3b3JrZXIgY2FjaGUgbm90IHNoYXJlZCB3
aGVuIGFkZGVkIHRvIGhvbWVzY3JlZW4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYTQ0MjMy
ZjU1NDM4MDY1NGFlNmVjNzA1OTA5MDY5YWU0MjY1NGU1Yy4uNWM1YzVkYWY2MDU5YmVkMzdjNmU0
MDcxMjY0MjA4MTdiODg2MThhZiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTI0MCw2ICsy
NDAsOCBAQAogCQk1MzY3NzAzNjFDQzgxQjYxMDBENDI1QjEgLyogV2ViU2NyaXB0T2JqZWN0RGVz
Y3JpcHRpb24uaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MzY3NzAzNTFDQzgxMkY5MDBENDI1QjEgLyogV2ViU2NyaXB0T2JqZWN0RGVz
Y3JpcHRpb24uaHRtbCAqLzsgfTsKIAkJNTNFQzI1NDExRTk2RkQ4NzAwMDgzMUI5IC8qIFByaW9y
aXR5UXVldWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTNFQzI1M0YxRTk2QkM4MDAwMDgzMUI5IC8qIFByaW9yaXR5UXVldWUuY3BwICovOyB9Owog
CQk1NTIyNkEyRjFFQkE0NEI5MDBDMzZBRDAgLyogbGFyZ2UtcmVkLXNxdWFyZS1pbWFnZS5odG1s
IGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1
MjI2QTJFMUVCOTY5QjYwMEMzNkFEMCAvKiBsYXJnZS1yZWQtc3F1YXJlLWltYWdlLmh0bWwgKi87
IH07CisJCTU1NTg0ODFDMjE3MTMxNTcwMEZCN0ZGRiAvKiBBZGRpdGlvbmFsQWxsb3dlZEltYWdl
Rm9ybWF0cy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDU1NTg0ODFCMjE3MTMxNTYwMEZCN0ZGRiAvKiBBZGRpdGlvbmFsQWxsb3dlZEltYWdlRm9ybWF0
cy5tbSAqLzsgfTsKKwkJNTU1ODQ4MjUyMTcxOENEQTAwRkI3RkZGIC8qIHRnYS1pbWFnZS5wbmcg
aW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTU1
ODQ4MjEyMTcxNUE3RTAwRkI3RkZGIC8qIHRnYS1pbWFnZS5wbmcgKi87IH07CiAJCTU1OTdGODM2
MUQ5NTk2QzgwMDY2QkMyMSAvKiBTeW5jaHJvbml6ZWRGaXhlZFF1ZXVlLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1OTdGODM0MUQ5NTk2QzgwMDY2
QkMyMSAvKiBTeW5jaHJvbml6ZWRGaXhlZFF1ZXVlLmNwcCAqLzsgfTsKIAkJNTcxNEVDQjkxQ0E4
QjVCMDAwMDUxQUM4IC8qIERvd25sb2FkUmVxdWVzdE9yaWdpbmFsVVJMLmh0bWwgaW4gQ29weSBS
ZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTcxNEVDQjgxQ0E4
QjU4ODAwMDUxQUM4IC8qIERvd25sb2FkUmVxdWVzdE9yaWdpbmFsVVJMLmh0bWwgKi87IH07CiAJ
CTU3MTRFQ0JCMUNBOEJGRTQwMDA1MUFDOCAvKiBEb3dubG9hZFJlcXVlc3RPcmlnaW5hbFVSTEZy
YW1lLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTcxNEVDQkExQ0E4QkZEMTAwMDUxQUM4IC8qIERvd25sb2FkUmVxdWVzdE9yaWdpbmFs
VVJMRnJhbWUuaHRtbCAqLzsgfTsKQEAgLTExOTgsNiArMTIwMCw3IEBACiAJCQkJRjRDRDc0QzYy
MEZEQUNGQTAwREUzNzk0IC8qIHRleHQtd2l0aC1hc3luYy1zY3JpcHQuaHRtbCBpbiBDb3B5IFJl
c291cmNlcyAqLywKIAkJCQlGNDRDN0EwNTIwRkFBRTNDMDAxNDQ3OEMgLyogdGV4dC13aXRoLWRl
ZmVycmVkLXNjcmlwdC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCUY0MUFCOUFBMUVG
NDY5NkIwMDgzRkEwOCAvKiB0ZXh0YXJlYS10by1pbnB1dC5odG1sIGluIENvcHkgUmVzb3VyY2Vz
ICovLAorCQkJCTU1NTg0ODI1MjE3MThDREEwMEZCN0ZGRiAvKiB0Z2EtaW1hZ2UucG5nIGluIENv
cHkgUmVzb3VyY2VzICovLAogCQkJCUY0NDUxQzc2MUVCOEZEODkwMDIwQzVEQSAvKiB0d28tcGFy
YWdyYXBoLWNvbnRlbnRlZGl0YWJsZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCUM1
NDBGNzg0MTUyRTVBOUEwMEE0MEM4QyAvKiB2ZXJib3NlTWFya3VwLmh0bWwgaW4gQ29weSBSZXNv
dXJjZXMgKi8sCiAJCQkJQ0Q1Nzc3OUQyMTFDRTkxRjAwMUIzNzFFIC8qIHZpZGVvLXdpdGgtYXVk
aW8tYW5kLXdlYi1hdWRpby5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLApAQCAtMTQzNCw3ICsx
NDM3LDYgQEAKIAkJMzdFMTA2NEIxNjk3NjdGNzAwQjc4QkQwIC8qIERPTUhUTUxUYWJsZUNlbGxF
bGVtZW50Q2VsbEFib3ZlLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSBET01IVE1M
VGFibGVDZWxsRWxlbWVudENlbGxBYm92ZS5odG1sOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkzN0UzOEMzMzE2OUI3RDAxMDA4NEMyOEMgLyogV2ViVmlld0RpZFJlbW92ZUZyYW1lRnJv
bUhpZXJhcmNoeS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdl
YlZpZXdEaWRSZW1vdmVGcmFtZUZyb21IaWVyYXJjaHkubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTM3RTdERDYzMUVBMDZGRjIwMDlCMzk2RCAvKiBBZGRpdGlvbmFsUmVhZEFjY2Vz
c0FsbG93ZWRVUkxzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
QWRkaXRpb25hbFJlYWRBY2Nlc3NBbGxvd2VkVVJMcy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJMzdFN0RENjUxRUEwNzE1QjAwOUIzOTZEIC8qIEFkZGl0aW9uYWxSZWFkQWNjZXNz
QWxsb3dlZFVSTHNQcm90b2NvbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBB
ZGRpdGlvbmFsUmVhZEFjY2Vzc0FsbG93ZWRVUkxzUHJvdG9jb2wuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMzdFN0RENjYxRUEwNzFGMzAwOUIzOTZEIC8qIEFkZGl0aW9uYWxSZWFk
QWNjZXNzQWxsb3dlZFVSTHNQbHVnaW4ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBBZGRpdGlvbmFsUmVhZEFjY2Vzc0FsbG93ZWRVUkxzUGx1Z2luLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzN0ZCNzI5NTFEQjJFODJGMDBFNDFCRTQgLyogQ29u
dGV4dE1lbnVEZWZhdWx0SXRlbXNIYXZlVGFncy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IENvbnRleHRNZW51RGVmYXVsdEl0ZW1zSGF2ZVRhZ3MubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTNGMUI1MjY4MUQzRDcxMjkwMDhENjBDNCAvKiBGdWxs
c2NyZWVuTGF5b3V0Q29uc3RyYWludHMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBGdWxsc2NyZWVuTGF5b3V0Q29uc3RyYWludHMubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0xNTQ2LDYgKzE1NDgsOSBAQAogCQk1MzY3NzAzNTFDQzgxMkY5MDBE
NDI1QjEgLyogV2ViU2NyaXB0T2JqZWN0RGVzY3JpcHRpb24uaHRtbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQu
aHRtbDsgcGF0aCA9IFdlYlNjcmlwdE9iamVjdERlc2NyaXB0aW9uLmh0bWw7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTUzRUMyNTNGMUU5NkJDODAwMDA4MzFCOSAvKiBQcmlvcml0eVF1
ZXVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFByaW9yaXR5UXVl
dWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NTIyNkEyRTFFQjk2OUI2MDBD
MzZBRDAgLyogbGFyZ2UtcmVkLXNxdWFyZS1pbWFnZS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1s
OyBwYXRoID0gImxhcmdlLXJlZC1zcXVhcmUtaW1hZ2UuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTU1NTg0ODFCMjE3MTMxNTYwMEZCN0ZGRiAvKiBBZGRpdGlvbmFsQWxsb3dl
ZEltYWdlRm9ybWF0cy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IEFkZGl0aW9uYWxBbGxvd2VkSW1hZ2VGb3JtYXRzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk1NTU4NDgxRjIxNzEzNTA4MDBGQjdGRkYgLyogQWRkaXRpb25hbFJlYWRBY2Nlc3NB
bGxvd2VkVVJMc1Byb3RvY29sLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFk
ZGl0aW9uYWxSZWFkQWNjZXNzQWxsb3dlZFVSTHNQcm90b2NvbC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk1NTU4NDgyMTIxNzE1QTdFMDBGQjdGRkYgLyogdGdhLWltYWdlLnBuZyAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGltYWdlLnBu
ZzsgcGF0aCA9ICJ0Z2EtaW1hZ2UucG5nIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NTU5N0Y4MzQxRDk1OTZDODAwNjZCQzIxIC8qIFN5bmNocm9uaXplZEZpeGVkUXVldWUuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3luY2hyb25pemVkRml4ZWRRdWV1
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3MTRFQ0I4MUNBOEI1ODgwMDA1
MUFDOCAvKiBEb3dubG9hZFJlcXVlc3RPcmlnaW5hbFVSTC5odG1sICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5o
dG1sOyBwYXRoID0gRG93bmxvYWRSZXF1ZXN0T3JpZ2luYWxVUkwuaHRtbDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNTcxNEVDQkExQ0E4QkZEMTAwMDUxQUM4IC8qIERvd25sb2FkUmVx
dWVzdE9yaWdpbmFsVVJMRnJhbWUuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9IERv
d25sb2FkUmVxdWVzdE9yaWdpbmFsVVJMRnJhbWUuaHRtbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTIzMTAsOSArMjMxNSwxMCBAQAogCQkJCUExNkY2NkI4MUM0MEU5RTEwMEJENEQy
NCAvKiBSZXNvdXJjZXMgKi8sCiAJCQkJNUNFQUI1REYxRkE5MzdDQjAwQTc3RkFBIC8qIF9XS0lu
cHV0RGVsZWdhdGUubW0gKi8sCiAJCQkJN0NFRkE5NjQxQUMwQjlFMjAwQjkxMEZEIC8qIF9XS1Vz
ZXJDb250ZW50RXh0ZW5zaW9uU3RvcmUubW0gKi8sCisJCQkJNTU1ODQ4MUIyMTcxMzE1NjAwRkI3
RkZGIC8qIEFkZGl0aW9uYWxBbGxvd2VkSW1hZ2VGb3JtYXRzLm1tICovLAogCQkJCTM3RTdERDYz
MUVBMDZGRjIwMDlCMzk2RCAvKiBBZGRpdGlvbmFsUmVhZEFjY2Vzc0FsbG93ZWRVUkxzLm1tICov
LAogCQkJCTM3RTdERDY2MUVBMDcxRjMwMDlCMzk2RCAvKiBBZGRpdGlvbmFsUmVhZEFjY2Vzc0Fs
bG93ZWRVUkxzUGx1Z2luLm1tICovLAotCQkJCTM3RTdERDY1MUVBMDcxNUIwMDlCMzk2RCAvKiBB
ZGRpdGlvbmFsUmVhZEFjY2Vzc0FsbG93ZWRVUkxzUHJvdG9jb2wuaCAqLywKKwkJCQk1NTU4NDgx
RjIxNzEzNTA4MDBGQjdGRkYgLyogQWRkaXRpb25hbFJlYWRBY2Nlc3NBbGxvd2VkVVJMc1Byb3Rv
Y29sLmggKi8sCiAJCQkJQTFERjc0MzAxQzQxQjY1ODAwQTJGNEQwIC8qIEFsd2F5c1JldmFsaWRh
dGVkVVJMU2NoZW1lcy5tbSAqLywKIAkJCQkyREU3MUFGRDFENDlDMEJEMDA5MDQwOTQgLyogQW5p
bWF0ZWRSZXNpemUubW0gKi8sCiAJCQkJNjNGNjY4MjAxRjk3QzNBQTAwMzJFRTUxIC8qIEFwcGxp
Y2F0aW9uTWFuaWZlc3QubW0gKi8sCkBAIC0yODA0LDYgKzI4MTAsNyBAQAogCQkJCUY0Q0Q3NEM1
MjBGREFDRjUwMERFMzc5NCAvKiB0ZXh0LXdpdGgtYXN5bmMtc2NyaXB0Lmh0bWwgKi8sCiAJCQkJ
RjQ0QzdBMDQyMEZBQUUzMjAwMTQ0NzhDIC8qIHRleHQtd2l0aC1kZWZlcnJlZC1zY3JpcHQuaHRt
bCAqLywKIAkJCQlGNDFBQjk5NTFFRjQ2OTJDMDA4M0ZBMDggLyogdGV4dGFyZWEtdG8taW5wdXQu
aHRtbCAqLywKKwkJCQk1NTU4NDgyMTIxNzE1QTdFMDBGQjdGRkYgLyogdGdhLWltYWdlLnBuZyAq
LywKIAkJCQlGNDQ1MUM3NTFFQjhGRDdDMDAyMEM1REEgLyogdHdvLXBhcmFncmFwaC1jb250ZW50
ZWRpdGFibGUuaHRtbCAqLywKIAkJCQlDRDU3Nzc5QjIxMUNFNkNFMDAxQjM3MUUgLyogdmlkZW8t
d2l0aC1hdWRpby1hbmQtd2ViLWF1ZGlvLmh0bWwgKi8sCiAJCQkJQ0Q1Nzc3OTgyMTFDREU4RjAw
MUIzNzFFIC8qIHdlYi1hdWRpby1vbmx5Lmh0bWwgKi8sCkBAIC0zNzEzLDYgKzM3MjAsNyBAQAog
CQkJCTJFMjA1QkE0MUY1Mjc3NDYwMDU5NTJERCAvKiBBY2Nlc3NpYmlsaXR5VGVzdHNJT1MubW0g
aW4gU291cmNlcyAqLywKIAkJCQk5QkQ1MTExQzFGRThFMTE2MDBEMkI2MzAgLyogQWNjZXNzaW5n
UGFzdGVkSW1hZ2UubW0gaW4gU291cmNlcyAqLywKIAkJCQlGNDVCNjNGRTFGMTlENDEwMDA5RDM4
QjkgLyogQWN0aW9uU2hlZXRUZXN0cy5tbSBpbiBTb3VyY2VzICovLAorCQkJCTU1NTg0ODFDMjE3
MTMxNTcwMEZCN0ZGRiAvKiBBZGRpdGlvbmFsQWxsb3dlZEltYWdlRm9ybWF0cy5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCTM3RTdERDY0MUVBMDZGRjIwMDlCMzk2RCAvKiBBZGRpdGlvbmFsUmVhZEFj
Y2Vzc0FsbG93ZWRVUkxzLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0E5MDlBN0QxRDg3NzQ4MDAw
N0UxMEY4IC8qIEFmZmluZVRyYW5zZm9ybS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBMURGNzQz
MjFDNDFCNjU4MDBBMkY0RDAgLyogQWx3YXlzUmV2YWxpZGF0ZWRVUkxTY2hlbWVzLm1tIGluIFNv
dXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL0FkZGl0aW9uYWxBbGxvd2VkSW1hZ2VGb3JtYXRzLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9BZGRpdGlvbmFsQWxsb3dlZEltYWdlRm9ybWF0cy5tbQpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5lYmRjYjc1YWNiYWNiOTkzNjIwZjY3OWU4MTQzYzM2MWYyZGMxOWNiCi0tLSAvZGV2
L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9BZGRpdGlv
bmFsQWxsb3dlZEltYWdlRm9ybWF0cy5tbQpAQCAtMCwwICsxLDU5IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0IDxXZWJLaXQvV0tGb3VuZGF0aW9uLmg+CisKKyNp
ZiBXS19BUElfRU5BQkxFRCAmJiBQTEFURk9STShDT0NPQSkKKworI2ltcG9ydCAiUGxhdGZvcm1V
dGlsaXRpZXMuaCIKKyNpbXBvcnQgIlRlc3ROYXZpZ2F0aW9uRGVsZWdhdGUuaCIKKyNpbXBvcnQg
IldLV2ViVmlld0NvbmZpZ3VyYXRpb25FeHRyYXMuaCIKKyNpbXBvcnQgPFdlYktpdC9XS1dlYlZp
ZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oPgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorCitU
RVNUKFdlYktpdCwgQWRkaXRpb25hbEFsbG93ZWRJbWFnZUZvcm1hdHMpCit7CisgICAgUmV0YWlu
UHRyPFdLV2ViVmlld0NvbmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tX
ZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIFtjb25maWd1cmF0aW9uIF9z
ZXRBZGRpdGlvbmFsQWxsb3dlZEltYWdlRm9ybWF0czpAW0AiY29tLnRydWV2aXNpb24udGdhLWlt
YWdlIl1dOworCisgICAgUmV0YWluUHRyPFdLV2ViVmlldz4gd2ViVmlldyA9IGFkb3B0TlMoW1tX
S1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkg
Y29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CisKKyAgICBSZXRhaW5QdHI8TlNV
Ukw+IHRlc3RVUkwgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAidGdh
LWltYWdlIiB3aXRoRXh0ZW5zaW9uOkAicG5nIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJ
LnJlc291cmNlcyJdOworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVx
dWVzdFdpdGhVUkw6dGVzdFVSTC5nZXQoKV1dOworICAgIFt3ZWJWaWV3IF90ZXN0X3dhaXRGb3JE
aWRGaW5pc2hOYXZpZ2F0aW9uXTsKKworICAgIF9fYmxvY2sgYm9vbCBpc0RvbmUgPSBmYWxzZTsK
KyAgICBbd2ViVmlldyBfZG9BZnRlck5leHRQcmVzZW50YXRpb25VcGRhdGU6XnsKKyAgICAgICAg
W3dlYlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0OkAiW2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2lt
ZycpLndpZHRoXSIgY29tcGxldGlvbkhhbmRsZXI6XihpZCB2YWx1ZSwgTlNFcnJvciAqZXJyb3Ip
IHsKKyAgICAgICAgICAgIENHRmxvYXQgd2lkdGggPSBbW3ZhbHVlIG9iamVjdEF0SW5kZXg6MF0g
ZmxvYXRWYWx1ZV07CisgICAgICAgICAgICBFWFBFQ1RfRVEod2lkdGgsIDEwMCk7CisgICAgICAg
ICAgICBpc0RvbmUgPSB0cnVlOworICAgICAgICB9XTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0
QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7Cit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS90Z2EtaW1hZ2UucG5nIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS90Z2EtaW1hZ2UucG5nCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA2
OTU4YmEwYzQ0MTA2MDU4ODg0YTNmMjRhMjNlZWQxODI4YjE3NGIKR0lUIGJpbmFyeSBwYXRjaAps
aXRlcmFsIDUxOApjY21aUXo7OWBKKjZvd1FBMSZ6bEg0RkNVKzUrZj1NMEN7bUM0Z2RmRQoKbGl0
ZXJhbCAwCkhjbVY/ZDAwMDAxCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>352818</attachid>
            <date>2018-10-19 13:01:51 -0700</date>
            <delta_ts>2018-10-19 16:57:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190454-20181019130150.patch</filename>
            <type>text/plain</type>
            <size>32108</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzNzI5NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMyIEBACisyMDE4LTEwLTE5ICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGFuIFNQ
SSB0byBhbGxvdyBXZWJWaWV3IGNsaWVudHMgdG8gYWRkIGFkZGl0aW9uYWwgc3VwcG9ydGVkIGlt
YWdlIGZvcm1hdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE5MDQ1NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEFkZCBhbiBTUEkgdG8gYWxsb3cgYWRkaXRpb25hbCBzdXBwb3J0ZWQgaW1hZ2UgZm9ybWF0
cyBpbiBXZWJWaWV3LiBUaGVzZQorICAgICAgICBhZGRpdGlvbmFsIGZvcm1hdHMgY2FuIGJlIHNl
dCBpbiB0aGUgV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhcyBhbiBOU0FycmF5CisgICAgICAgIG9m
IE5TdHJpbmdzLiBFYWNoIHN0cmluZyByZXByZXNlbnRzIHRoZSBVVEkgb2YgdGhlIGFkZGl0aW9u
YWwgYWxsb3dlZCAKKyAgICAgICAgaW1hZ2UgZm9ybWF0LgorCisgICAgICAgICogcGxhdGZvcm0v
TUlNRVR5cGVSZWdpc3RyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjppbml0aWFsaXplU3VwcG9y
dGVkSW1hZ2VNSU1FVHlwZXMpOiBBZGQgdGhlIG1pbWUgdHlwZXMgb2YgdGhlCisgICAgICAgIGFk
ZGl0aW9uYWwgYWxsb3dlZCBpbWFnZSBmb3JtYXRzIGlmIHRoZXkgZXhpc3QuCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VEZWNvZGVyQ0c6OmVuY29kZWREYXRhU3RhdHVzIGNvbnN0KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jZy9VVElSZWdpc3RyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpk
ZWZhdWx0QWxsb3dlZEltYWdlRm9ybWF0cyk6IFRoaXMgaXMgdGhlIFdlYktpdCBkZWZhdWx0IGxp
c3Qgb2YKKyAgICAgICAgc3VwcG9ydGVkIGltYWdlIGZvcm1hdHMuCisgICAgICAgIChXZWJDb3Jl
OjppbnRlcm5hbEFkZGl0aW9uYWxBbGxvd2VkSW1hZ2VGb3JtYXRzKToKKyAgICAgICAgKFdlYkNv
cmU6OmFkZGl0aW9uYWxBbGxvd2VkSW1hZ2VGb3JtYXRzKToKKyAgICAgICAgKFdlYkNvcmU6OnNl
dEFkZGl0aW9uYWxBbGxvd2VkSW1hZ2VGb3JtYXRzKToKKyAgICAgICAgKFdlYkNvcmU6OmlzQWxs
b3dlZEltYWdlRm9ybWF0KTogVGhpcyBmdW5jdGlvbiBjaGVja3MgdGhlIGRlZmF1bHQgbGlzdCBh
bmQKKyAgICAgICAgdGhlIGFkZGl0aW9uYWwgbGlzdCB0byBkZWNpZGUgd2hldGhlciB0aGUgaW1h
Z2UgZm9ybWF0IGlzIHN1cHBvcnRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmFsbG93ZWRJbWFnZVVU
SXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6aXNBbGxvd2VkSW1hZ2VVVEkpOiBEZWxl
dGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL1VUSVJlZ2lzdHJ5Lmg6CisKIDIw
MTgtMTAtMTkgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZD
XVtJRkNdIFJlbmRlclJlcGxhY2VkIHJlbmRlcmVyIHNob3VsZCBjcmVhdGUgSW5saW5lQm94Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcAkocmV2
aXNpb24gMjM3Mjk1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3Ry
eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc4LDcgKzc4LDcgQEAgc3RhdGljIHZvaWQgaW5pdGlh
bGl6ZVN1cHBvcnRlZEltYWdlTUlNRQogICAgIH0KIAogI2lmbmRlZiBOREVCVUcKLSAgICBmb3Ig
KGF1dG8mIHV0aSA6IGFsbG93ZWRJbWFnZVVUSXMoKSkgeworICAgIGZvciAoYXV0byYgdXRpIDog
ZGVmYXVsdEFsbG93ZWRJbWFnZUZvcm1hdHMoKSkgewogICAgICAgICBhdXRvIG1pbWVUeXBlID0g
TUlNRVR5cGVGb3JJbWFnZVNvdXJjZVR5cGUodXRpKTsKICAgICAgICAgaWYgKCFtaW1lVHlwZS5p
c0VtcHR5KCkpIHsKICAgICAgICAgICAgIEFTU0VSVChzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlcy0+
Y29udGFpbnMobWltZVR5cGUpKTsKQEAgLTg4LDEwICs4OCwxOSBAQCBzdGF0aWMgdm9pZCBpbml0
aWFsaXplU3VwcG9ydGVkSW1hZ2VNSU1FCiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBmb3Ig
KGF1dG8mIG1pbWUgOiAqc3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXMpCi0gICAgICAgIEFTU0VSVF9V
TlVTRUQobWltZSwgYWxsb3dlZEltYWdlVVRJcygpLmNvbnRhaW5zKFVUSUZyb21NSU1FVHlwZSht
aW1lKSkpOworICAgICAgICBBU1NFUlRfVU5VU0VEKG1pbWUsIGRlZmF1bHRBbGxvd2VkSW1hZ2VG
b3JtYXRzKCkuY29udGFpbnMoVVRJRnJvbU1JTUVUeXBlKG1pbWUpKSk7CiAjZW5kaWYKICNlbmRp
ZgogCisgICAgLy8gQWRkIHRoZSBtaW1lIHR5cGVzIG9mIHRoZSBhZGRpdGlvbmFsIGFsbG93ZWQg
aW1hZ2UgZm9ybWF0cy4KKyAgICBmb3IgKGF1dG8mIHV0aSA6IGFkZGl0aW9uYWxBbGxvd2VkSW1h
Z2VGb3JtYXRzKCkpIHsKKyAgICAgICAgYXV0byBtaW1lVHlwZSA9IE1JTUVUeXBlRm9ySW1hZ2VT
b3VyY2VUeXBlKHV0aSk7CisgICAgICAgIGlmICghbWltZVR5cGUuaXNFbXB0eSgpKSB7CisgICAg
ICAgICAgICBzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlcy0+YWRkKG1pbWVUeXBlKTsKKyAgICAgICAg
ICAgIHN1cHBvcnRlZEltYWdlUmVzb3VyY2VNSU1FVHlwZXMtPmFkZChtaW1lVHlwZSk7CisgICAg
ICAgIH0KKyAgICB9CisKICAgICAvLyBGYXZpY29ucyBkb24ndCBoYXZlIGEgTUlNRSB0eXBlIGlu
IHRoZSByZWdpc3RyeSBlaXRoZXIuCiAgICAgc3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXMtPmFkZCgi
aW1hZ2UveC1pY29uIik7CiAgICAgc3VwcG9ydGVkSW1hZ2VSZXNvdXJjZU1JTUVUeXBlcy0+YWRk
KCJpbWFnZS94LWljb24iKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0ltYWdlRGVjb2RlckNHLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAJKHJldmlzaW9uIDIzNzI5NSkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTk5LDcgKzE5OSw3IEBAIEVuY29kZWREYXRhU3RhdHVzIEltYWdl
RGVjb2RlckNHOjplbmNvZGUKICAgICAgICAgcmV0dXJuIEVuY29kZWREYXRhU3RhdHVzOjpFcnJv
cjsKIAogICAgIGNhc2Uga0NHSW1hZ2VTdGF0dXNJbmNvbXBsZXRlOiB7Ci0gICAgICAgIGlmICgh
aXNBbGxvd2VkSW1hZ2VVVEkodXRpKSkKKyAgICAgICAgaWYgKCFpc0FsbG93ZWRJbWFnZUZvcm1h
dCh1dGkpKQogICAgICAgICAgICAgcmV0dXJuIEVuY29kZWREYXRhU3RhdHVzOjpFcnJvcjsKIAog
ICAgICAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBpbWFnZTBQcm9wZXJ0aWVzID0gYWRv
cHRDRihDR0ltYWdlU291cmNlQ29weVByb3BlcnRpZXNBdEluZGV4KG1fbmF0aXZlRGVjb2Rlci5n
ZXQoKSwgMCwgaW1hZ2VTb3VyY2VPcHRpb25zKCkuZ2V0KCkpKTsKQEAgLTIxMyw3ICsyMTMsNyBA
QCBFbmNvZGVkRGF0YVN0YXR1cyBJbWFnZURlY29kZXJDRzo6ZW5jb2RlCiAgICAgfQogCiAgICAg
Y2FzZSBrQ0dJbWFnZVN0YXR1c0NvbXBsZXRlOgotICAgICAgICBpZiAoIWlzQWxsb3dlZEltYWdl
VVRJKHV0aSkpCisgICAgICAgIGlmICghaXNBbGxvd2VkSW1hZ2VGb3JtYXQodXRpKSkKICAgICAg
ICAgICAgIHJldHVybiBFbmNvZGVkRGF0YVN0YXR1czo6RXJyb3I7CiAKICAgICAgICAgcmV0dXJu
IEVuY29kZWREYXRhU3RhdHVzOjpDb21wbGV0ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL1VUSVJlZ2lzdHJ5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9VVElSZWdpc3RyeS5jcHAJKHJldmlzaW9uIDIzNzI5
NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1VUSVJlZ2lzdHJ5LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzgsMTAgKzM4LDEwIEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotSGFzaFNldDxTdHJpbmc+JiBhbGxvd2VkSW1hZ2VVVElzKCkKK2NvbnN0IEhhc2hTZXQ8
U3RyaW5nPiYgZGVmYXVsdEFsbG93ZWRJbWFnZUZvcm1hdHMoKQogewogICAgIC8vIENHIGF0IGxl
YXN0IHN1cHBvcnRzIHRoZSBmb2xsb3dpbmcgc3RhbmRhcmQgaW1hZ2UgdHlwZXM6Ci0gICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPEhhc2hTZXQ8U3RyaW5nPj4gc19hbGxvd2VkSW1hZ2VVVElzID0g
c3RkOjppbml0aWFsaXplcl9saXN0PFN0cmluZz4geworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxIYXNoU2V0PFN0cmluZz4+IGRlZmF1bHRBbGxvd2VkSW1hZ2VGb3JtYXRzID0gc3RkOjppbml0
aWFsaXplcl9saXN0PFN0cmluZz4gewogICAgICAgICAiY29tLmNvbXB1c2VydmUuZ2lmIiwKICAg
ICAgICAgImNvbS5taWNyb3NvZnQuYm1wIiwKICAgICAgICAgImNvbS5taWNyb3NvZnQuY3VyIiwK
QEAgLTU5LDcgKzU5LDcgQEAgSGFzaFNldDxTdHJpbmc+JiBhbGxvd2VkSW1hZ2VVVElzKCkKICAg
ICBpZiAoIWNoZWNrZWQpIHsKICAgICAgICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IHN5c3RlbUlt
YWdlVVRJcyA9IGFkb3B0Q0YoQ0dJbWFnZVNvdXJjZUNvcHlUeXBlSWRlbnRpZmllcnMoKSk7CiAg
ICAgICAgIENGSW5kZXggY291bnQgPSBDRkFycmF5R2V0Q291bnQoc3lzdGVtSW1hZ2VVVElzLmdl
dCgpKTsKLSAgICAgICAgZm9yIChhdXRvJiBpbWFnZVVUSSA6IHNfYWxsb3dlZEltYWdlVVRJcy5n
ZXQoKSkgeworICAgICAgICBmb3IgKGF1dG8mIGltYWdlVVRJIDogZGVmYXVsdEFsbG93ZWRJbWFn
ZUZvcm1hdHMuZ2V0KCkpIHsKICAgICAgICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gc3Ry
aW5nID0gaW1hZ2VVVEkuY3JlYXRlQ0ZTdHJpbmcoKTsKICAgICAgICAgICAgIEFTU0VSVChDRkFy
cmF5Q29udGFpbnNWYWx1ZShzeXN0ZW1JbWFnZVVUSXMuZ2V0KCksIENGUmFuZ2VNYWtlKDAsIGNv
dW50KSwgc3RyaW5nLmdldCgpKSk7CiAgICAgICAgIH0KQEAgLTY3LDEyICs2NywzMCBAQCBIYXNo
U2V0PFN0cmluZz4mIGFsbG93ZWRJbWFnZVVUSXMoKQogICAgIH0KICNlbmRpZgogCi0gICAgcmV0
dXJuIHNfYWxsb3dlZEltYWdlVVRJcy5nZXQoKTsKKyAgICByZXR1cm4gZGVmYXVsdEFsbG93ZWRJ
bWFnZUZvcm1hdHM7CiB9CiAKLWJvb2wgaXNBbGxvd2VkSW1hZ2VVVEkoY29uc3QgU3RyaW5nJiBp
bWFnZVVUSSkKK3N0YXRpYyBIYXNoU2V0PFN0cmluZz4mIGludGVybmFsQWRkaXRpb25hbEFsbG93
ZWRJbWFnZUZvcm1hdHMoKQogewotICAgIHJldHVybiAhaW1hZ2VVVEkuaXNFbXB0eSgpICYmIGFs
bG93ZWRJbWFnZVVUSXMoKS5jb250YWlucyhpbWFnZVVUSSk7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPEhhc2hTZXQ8U3RyaW5nPj4gYWRkaXRpb25hbEFsbG93ZWRJbWFnZUZvcm1hdHM7Cisg
ICAgcmV0dXJuIGFkZGl0aW9uYWxBbGxvd2VkSW1hZ2VGb3JtYXRzOworfQorCitjb25zdCBIYXNo
U2V0PFN0cmluZz4mIGFkZGl0aW9uYWxBbGxvd2VkSW1hZ2VGb3JtYXRzKCkKK3sKKyAgICByZXR1
cm4gaW50ZXJuYWxBZGRpdGlvbmFsQWxsb3dlZEltYWdlRm9ybWF0cygpOworfQorCit2b2lkIHNl
dEFkZGl0aW9uYWxBbGxvd2VkSW1hZ2VGb3JtYXRzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB2YWx1
ZSkKK3sKKyAgICBpbnRlcm5hbEFkZGl0aW9uYWxBbGxvd2VkSW1hZ2VGb3JtYXRzKCkuY2xlYXIo
KTsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGltYWdlVVRJIDogdmFsdWUpCisgICAgICAgIGludGVy
bmFsQWRkaXRpb25hbEFsbG93ZWRJbWFnZUZvcm1hdHMoKS5hZGQoaW1hZ2VVVEkpOworfQorCiti
b29sIGlzQWxsb3dlZEltYWdlRm9ybWF0KGNvbnN0IFN0cmluZyYgaW1hZ2VVVEkpCit7CisgICAg
cmV0dXJuICFpbWFnZVVUSS5pc0VtcHR5KCkgJiYgKGRlZmF1bHRBbGxvd2VkSW1hZ2VGb3JtYXRz
KCkuY29udGFpbnMoaW1hZ2VVVEkpIHx8IGFkZGl0aW9uYWxBbGxvd2VkSW1hZ2VGb3JtYXRzKCku
Y29udGFpbnMoaW1hZ2VVVEkpKTsKIH0KIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvVVRJUmVnaXN0cnkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9VVElSZWdpc3RyeS5oCShyZXZpc2lvbiAyMzcyOTUpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9VVElSZWdpc3RyeS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMCw3ICszMCw5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotSGFz
aFNldDxTdHJpbmc+JiBhbGxvd2VkSW1hZ2VVVElzKCk7Ci1ib29sIGlzQWxsb3dlZEltYWdlVVRJ
KGNvbnN0IFN0cmluZyYpOworY29uc3QgSGFzaFNldDxTdHJpbmc+JiBkZWZhdWx0QWxsb3dlZElt
YWdlRm9ybWF0cygpOworY29uc3QgSGFzaFNldDxTdHJpbmc+JiBhZGRpdGlvbmFsQWxsb3dlZElt
YWdlRm9ybWF0cygpOworV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRBZGRpdGlvbmFsQWxsb3dlZElt
YWdlRm9ybWF0cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYpOworYm9vbCBpc0FsbG93ZWRJbWFnZUZv
cm1hdChjb25zdCBTdHJpbmcmKTsKIAogfQpJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzNzI5NSkK
KysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTQg
QEAKKzIwMTgtMTAtMTkgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNv
bT4KKworICAgICAgICBBZGQgYW4gU1BJIHRvIGFsbG93IFdlYlZpZXcgY2xpZW50cyB0byBhZGQg
YWRkaXRpb25hbCBzdXBwb3J0ZWQgaW1hZ2UgZm9ybWF0cworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwNDU0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBQbGF0Zm9ybS9tYWMvU3RyaW5nVXRpbGl0aWVz
Lmg6CisgICAgICAgICogUGxhdGZvcm0vbWFjL1N0cmluZ1V0aWxpdGllcy5tbToKKyAgICAgICAg
KFdlYktpdDo6d2ViQ29yZVN0cmluZ0xpc3RGcm9tTnNTdHJpbmdBcnJheSk6CisgICAgICAgIEEg
aGVscGVyIGZ1bmN0aW9uIHdoaWNoIGNvbnZlcnRzIGFuIE5TQXJyYXkgb2YgTlNTdHJpbmdzIHRv
IGEgVmVjdG9yIG9mCisgICAgICAgIFdURlN0cmluZy4KKworICAgICAgICAqIFNoYXJlZC9XZWJQ
YWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZUNyZWF0
aW9uUGFyYW1ldGVyczo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViUGFnZUNyZWF0
aW9uUGFyYW1ldGVycy5oOgorICAgICAgICBIYW5kbGUgZW5jb2RpbmcgYW5kIGRlY29kaW5nIHRo
ZSBBZGRpdGlvbmFsQWxsb3dlZEltYWdlRm9ybWF0cyB3aGljaCB3aWxsCisgICAgICAgIGFsbG93
IHRyYW5zZmVycmluZyBpdCBmcm9tIHRoZSBVSSBwcm9jZXNzIHRvIHRoZSB3ZWIgcHJvY2Vzcy4K
KworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uaDoKKyAgICAg
ICAgKEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246OmFkZGl0aW9uYWxBbGxvd2VkSW1hZ2VGb3JtYXRz
IGNvbnN0KToKKyAgICAgICAgKEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246OnNldEFkZGl0aW9uYWxB
bGxvd2VkSW1hZ2VGb3JtYXRzKToKKyAgICAgICAgU3RvcmUgdGhlIEFkZGl0aW9uYWxBbGxvd2Vk
SW1hZ2VGb3JtYXRzIGluIHRoZSBBUElQYWdlQ29uZmlndXJhdGlvbgorICAgICAgICB3aGljaCBp
cyB1c2VkIHdoZW4gY3JlYXRpbmcgdGhlIFdlYlBhZ2VQcm94eSBpbiB0aGUgVUlQb3JjZXNzLgor
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgt
W1dLV2ViVmlldyBfaW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uOl0pOgorICAgICAgICBTZXQg
dGhlIHZhbHVlIG9mIEFkZGl0aW9uYWxBbGxvd2VkSW1hZ2VGb3JtYXRzIGZyb20gV0tXZWJWaWV3
Q29uZmlndXJhdGlvbgorICAgICAgICB0byB0aGUgQVBJUGFnZUNvbmZpZ3VyYXRpb24uCisKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW06Cisg
ICAgICAgICgtW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gY29weVdpdGhab25lOl0pOgorICAgICAg
ICAoLVtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF9hZGRpdGlvbmFsQWxsb3dlZEltYWdlRm9ybWF0
c10pOgorICAgICAgICAoLVtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF9zZXRBZGRpdGlvbmFsQWxs
b3dlZEltYWdlRm9ybWF0czpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmg6CisgICAgICAgIFNldHRlci9HZXR0ZXIgZm9yIHRo
ZSBhZGRpdGlvbmFsQWxsb3dlZEltYWdlRm9ybWF0cy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNyZWF0aW9u
UGFyYW1ldGVycyk6CisgICAgICAgIENvcHkgdGhlIGFkZGl0aW9uYWxBbGxvd2VkSW1hZ2VGb3Jt
YXRzIGZyb20gQVBJUGFnZUNvbmZpZ3VyYXRpb24gdG8gCisgICAgICAgIFdlYlBhZ2VDcmVhdGlv
blBhcmFtZXRlcnMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAg
ICAgIERlbGV0ZSB1bmltcGxlbWVudGVkIGZ1bmN0aW9uLgorCisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpXZWJQYWdl
KToKKyAgICAgICAgQ29weSB0aGUgYWRkaXRpb25hbEFsbG93ZWRJbWFnZUZvcm1hdHMgZnJvbSBX
ZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIHRvCisgICAgICAgIFdlYkNvcmUuCisKIDIwMTgtMTAt
MTkgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAg
ICBJbnRyb2R1Y2UgQ29tcGxldGlvbkhhbmRsZXItYmFzZWQgQXN5bmMgSVBDIG1lc3NhZ2VzIHdp
dGggcmVwbGllcwpJbmRleDogU291cmNlL1dlYktpdC9QbGF0Zm9ybS9tYWMvU3RyaW5nVXRpbGl0
aWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9QbGF0Zm9ybS9tYWMvU3RyaW5nVXRp
bGl0aWVzLmgJKHJldmlzaW9uIDIzNzI5NSkKKysrIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vbWFj
L1N0cmluZ1V0aWxpdGllcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNyw4IEBAIG5hbWVz
cGFjZSBXZWJLaXQgewogTlNTdHJpbmcgKm5zU3RyaW5nRnJvbVdlYkNvcmVTdHJpbmcoY29uc3Qg
U3RyaW5nJik7CiBOU1N0cmluZyAqZm9ybWF0dGVkUGhvbmVOdW1iZXJTdHJpbmcoTlNTdHJpbmcg
Km9yaWdpbmFsUGhvbmVOdW1iZXIpOwogCitWZWN0b3I8U3RyaW5nPiB3ZWJDb3JlU3RyaW5nTGlz
dEZyb21Oc1N0cmluZ0FycmF5KE5TQXJyYXk8TlNTdHJpbmcgKj4gKik7CisKICNlbmRpZiAvLyBk
ZWZpbmVkKF9fT0JKQ19fKQogCiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL21hYy9T
dHJpbmdVdGlsaXRpZXMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9QbGF0Zm9ybS9t
YWMvU3RyaW5nVXRpbGl0aWVzLm1tCShyZXZpc2lvbiAyMzcyOTUpCisrKyBTb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL21hYy9TdHJpbmdVdGlsaXRpZXMubW0JKHdvcmtpbmcgY29weSkKQEAgLTgyLDQg
KzgyLDE1IEBAIE5TU3RyaW5nICpmb3JtYXR0ZWRQaG9uZU51bWJlclN0cmluZyhOU1MKIAogI2Vu
ZGlmIC8vIEVOQUJMRShURUxFUEhPTkVfTlVNQkVSX0RFVEVDVElPTikgJiYgUExBVEZPUk0oTUFD
KQogCitWZWN0b3I8U3RyaW5nPiB3ZWJDb3JlU3RyaW5nTGlzdEZyb21Oc1N0cmluZ0FycmF5KE5T
QXJyYXk8TlNTdHJpbmcgKj4gKm5zU3RyaW5nQXJyYXkpCit7CisgICAgVmVjdG9yPFN0cmluZz4g
c3RyaW5nTGlzdDsKKyAgICBzdHJpbmdMaXN0LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoW25zU3Ry
aW5nQXJyYXkgY291bnRdKTsKKworICAgIGZvciAoTlNTdHJpbmcgKm5zU3RyaW5nIGluIG5zU3Ry
aW5nQXJyYXkpCisgICAgICAgIHN0cmluZ0xpc3QudW5jaGVja2VkQXBwZW5kKG5zU3RyaW5nKTsK
KworICAgIHJldHVybiBzdHJpbmdMaXN0OworfQorCiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAkocmV2aXNpb24gMjM3
Mjk1KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTk2LDYgKzk2LDcgQEAgdm9pZCBXZWJQYWdlQ3JlYXRpb25Q
YXJhbWV0ZXJzOjplbmNvZGUoSQogI2VuZGlmCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgZW5j
b2RlciA8PCBzbWFydEluc2VydERlbGV0ZUVuYWJsZWQ7CisgICAgZW5jb2RlciA8PCBhZGRpdGlv
bmFsQWxsb3dlZEltYWdlRm9ybWF0czsKICNlbmRpZgogICAgIGVuY29kZXIgPDwgYXBwbGVNYWls
UGFnaW5hdGlvblF1aXJrRW5hYmxlZDsKICAgICBlbmNvZGVyIDw8IGFwcGxlTWFpbExpbmVzQ2xh
bXBFbmFibGVkOwpAQCAtMjY5LDYgKzI3MCw4IEBAIHN0ZDo6b3B0aW9uYWw8V2ViUGFnZUNyZWF0
aW9uUGFyYW1ldGVycz4KICNpZiBQTEFURk9STShDT0NPQSkKICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKHBhcmFtZXRlcnMuc21hcnRJbnNlcnREZWxldGVFbmFibGVkKSkKICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuYWRkaXRp
b25hbEFsbG93ZWRJbWFnZUZvcm1hdHMpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
I2VuZGlmCiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuYXBwbGVNYWlsUGFn
aW5hdGlvblF1aXJrRW5hYmxlZCkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdl
Q3JlYXRpb25QYXJhbWV0ZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCShyZXZpc2lvbiAyMzcyOTUpCisrKyBTb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgJKHdvcmtpbmcgY29weSkK
QEAgLTE1Myw2ICsxNTMsNyBAQCBzdHJ1Y3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyB7CiAj
ZW5kaWYKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBib29sIHNtYXJ0SW5zZXJ0RGVsZXRlRW5h
YmxlZDsKKyAgICBWZWN0b3I8U3RyaW5nPiBhZGRpdGlvbmFsQWxsb3dlZEltYWdlRm9ybWF0czsK
ICNlbmRpZgogICAgIGJvb2wgYXBwbGVNYWlsUGFnaW5hdGlvblF1aXJrRW5hYmxlZDsKICAgICBi
b29sIGFwcGxlTWFpbExpbmVzQ2xhbXBFbmFibGVkOwpJbmRleDogU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwCShyZXZpc2lvbiAyMzcyOTUpCisrKyBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MzcxLDYgKzYz
NzEsNyBAQCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIFdlYlBhZ2VQcm94eTo6CiAKICNpZiBQ
TEFURk9STShDT0NPQSkKICAgICBwYXJhbWV0ZXJzLnNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCA9
IG1faXNTbWFydEluc2VydERlbGV0ZUVuYWJsZWQ7CisgICAgcGFyYW1ldGVycy5hZGRpdGlvbmFs
QWxsb3dlZEltYWdlRm9ybWF0cyA9IG1fY29uZmlndXJhdGlvbi0+YWRkaXRpb25hbEFsbG93ZWRJ
bWFnZUZvcm1hdHMoKTsKICNlbmRpZgogICAgIHBhcmFtZXRlcnMuc2hvdWxkU2NhbGVWaWV3VG9G
aXREb2N1bWVudCA9IG1fc2hvdWxkU2NhbGVWaWV3VG9GaXREb2N1bWVudDsKICAgICBwYXJhbWV0
ZXJzLnVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24gPSBwYWdlQ2xpZW50KCkudXNlckludGVy
ZmFjZUxheW91dERpcmVjdGlvbigpOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmgJKHJldmlzaW9uIDIzNzI5NSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzYwLDEwICsxMzYwLDYgQEAgcHVibGlj
OgogCiAgICAgV2ViQ29yZTo6SW50UmVjdCBzeW5jUm9vdFZpZXdUb1NjcmVlbihjb25zdCBXZWJD
b3JlOjpJbnRSZWN0JiB2aWV3UmVjdCk7CiAKLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICBWZWN0
b3I8U3RyaW5nPiBtZWRpYU1JTUVUeXBlcygpOwotI2VuZGlmCi0KIHByaXZhdGU6CiAgICAgV2Vi
UGFnZVByb3h5KFBhZ2VDbGllbnQmLCBXZWJQcm9jZXNzUHJveHkmLCB1aW50NjRfdCBwYWdlSUQs
IFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiYmKTsKICAgICB2b2lkIHBsYXRmb3JtSW5pdGlh
bGl6ZSgpOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1
cmF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBh
Z2VDb25maWd1cmF0aW9uLmgJKHJldmlzaW9uIDIzNzI5NSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTAs
NiArMTEwLDExIEBAIHB1YmxpYzoKICAgICBjb25zdCBXVEY6OlN0cmluZyYgb3ZlcnJpZGVDb250
ZW50U2VjdXJpdHlQb2xpY3koKSBjb25zdCB7IHJldHVybiBtX292ZXJyaWRlQ29udGVudFNlY3Vy
aXR5UG9saWN5OyB9CiAgICAgdm9pZCBzZXRPdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeShj
b25zdCBXVEY6OlN0cmluZyYgb3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3kpIHsgbV9vdmVy
cmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeSA9IG92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5
OyB9CiAKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBjb25zdCBXVEY6OlZlY3RvcjxXVEY6OlN0
cmluZz4mIGFkZGl0aW9uYWxBbGxvd2VkSW1hZ2VGb3JtYXRzKCkgY29uc3QgeyByZXR1cm4gbV9h
ZGRpdGlvbmFsQWxsb3dlZEltYWdlRm9ybWF0czsgfQorICAgIHZvaWQgc2V0QWRkaXRpb25hbEFs
bG93ZWRJbWFnZUZvcm1hdHMoV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+JiYgYWRkaXRpb25hbEFs
bG93ZWRJbWFnZUZvcm1hdHMpIHsgbV9hZGRpdGlvbmFsQWxsb3dlZEltYWdlRm9ybWF0cyA9IFdU
Rk1vdmUoYWRkaXRpb25hbEFsbG93ZWRJbWFnZUZvcm1hdHMpOyB9CisjZW5kaWYKKwogI2lmIEVO
QUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKICAgICBBcHBsaWNhdGlvbk1hbmlmZXN0KiBhcHBs
aWNhdGlvbk1hbmlmZXN0KCkgY29uc3Q7CiAgICAgdm9pZCBzZXRBcHBsaWNhdGlvbk1hbmlmZXN0
KEFwcGxpY2F0aW9uTWFuaWZlc3QqKTsKQEAgLTE0Niw2ICsxNTEsMTAgQEAgcHJpdmF0ZToKIAog
ICAgIFdURjo6U3RyaW5nIG1fb3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3k7CiAKKyNpZiBQ
TEFURk9STShDT0NPQSkKKyAgICBXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4gbV9hZGRpdGlvbmFs
QWxsb3dlZEltYWdlRm9ybWF0czsKKyNlbmRpZgorCiAjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01B
TklGRVNUKQogICAgIFJlZlB0cjxBcHBsaWNhdGlvbk1hbmlmZXN0PiBtX2FwcGxpY2F0aW9uTWFu
aWZlc3Q7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYlZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlldy5tbQkocmV2aXNpb24gMjM3Mjk1KQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtNDYsNiArNDYs
NyBAQAogI2ltcG9ydCAiUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24uaCIKICNpbXBvcnQgIlJl
bW90ZU9iamVjdFJlZ2lzdHJ5LmgiCiAjaW1wb3J0ICJSZW1vdGVPYmplY3RSZWdpc3RyeU1lc3Nh
Z2VzLmgiCisjaW1wb3J0ICJTdHJpbmdVdGlsaXRpZXMuaCIKICNpbXBvcnQgIlVJRGVsZWdhdGUu
aCIKICNpbXBvcnQgIlVzZXJNZWRpYVByb2Nlc3NNYW5hZ2VyLmgiCiAjaW1wb3J0ICJWZXJzaW9u
Q2hlY2tzLmgiCkBAIC01NjcsNiArNTY4LDggQEAgLSAodm9pZClfaW5pdGlhbGl6ZVdpdGhDb25m
aWd1cmF0aW9uOihXSwogICAgICAgICBpZiAoZ3JvdXBJZGVudGlmaWVyLmxlbmd0aCkKICAgICAg
ICAgICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRQYWdlR3JvdXAoV2ViS2l0OjpXZWJQYWdlR3Jv
dXA6OmNyZWF0ZShjb25maWd1cmF0aW9uLl9ncm91cElkZW50aWZpZXIpLnB0cigpKTsKICAgICB9
CisgICAgCisgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldEFkZGl0aW9uYWxBbGxvd2VkSW1hZ2VG
b3JtYXRzKFdlYktpdDo6d2ViQ29yZVN0cmluZ0xpc3RGcm9tTnNTdHJpbmdBcnJheShbX2NvbmZp
Z3VyYXRpb24gX2FkZGl0aW9uYWxBbGxvd2VkSW1hZ2VGb3JtYXRzXSkpOwogCiAgICAgcGFnZUNv
bmZpZ3VyYXRpb24tPnByZWZlcmVuY2VWYWx1ZXMoKS5zZXQoV2ViS2l0OjpXZWJQcmVmZXJlbmNl
c0tleTo6c3VwcHJlc3Nlc0luY3JlbWVudGFsUmVuZGVyaW5nS2V5KCksIFdlYktpdDo6V2ViUHJl
ZmVyZW5jZXNTdG9yZTo6VmFsdWUoISFbX2NvbmZpZ3VyYXRpb24gc3VwcHJlc3Nlc0luY3JlbWVu
dGFsUmVuZGVyaW5nXSkpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbQkocmV2aXNpb24g
MjM3Mjk1KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0Nv
bmZpZ3VyYXRpb24ubW0JKHdvcmtpbmcgY29weSkKQEAgLTE2MSw2ICsxNjEsNyBAQCBzdGF0aWMg
X1dLRHJhZ0xpZnREZWxheSB0b0RyYWdMaWZ0RGVsYXkoCiAgICAgQk9PTCBfZHJhd3NCYWNrZ3Jv
dW5kOwogCiAgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBfbWVkaWFDb250ZW50VHlwZXNSZXF1aXJp
bmdIYXJkd2FyZVN1cHBvcnQ7CisgICAgUmV0YWluUHRyPE5TQXJyYXk8TlNTdHJpbmcgKj4+IF9h
ZGRpdGlvbmFsQWxsb3dlZEltYWdlRm9ybWF0czsKIH0KIAogLSAoaW5zdGFuY2V0eXBlKWluaXQK
QEAgLTM5NCw2ICszOTUsNyBAQCAtIChpZCljb3B5V2l0aFpvbmU6KE5TWm9uZSAqKXpvbmUKICAg
ICBjb25maWd1cmF0aW9uLT5fbmVlZHNTdG9yYWdlQWNjZXNzRnJvbUZpbGVVUkxzUXVpcmsgPSBz
ZWxmLT5fbmVlZHNTdG9yYWdlQWNjZXNzRnJvbUZpbGVVUkxzUXVpcms7CiAKICAgICBjb25maWd1
cmF0aW9uLT5fbWVkaWFDb250ZW50VHlwZXNSZXF1aXJpbmdIYXJkd2FyZVN1cHBvcnQgPSBhZG9w
dE5TKFtzZWxmLl9tZWRpYUNvbnRlbnRUeXBlc1JlcXVpcmluZ0hhcmR3YXJlU3VwcG9ydCBjb3B5
V2l0aFpvbmU6em9uZV0pOworICAgIGNvbmZpZ3VyYXRpb24tPl9hZGRpdGlvbmFsQWxsb3dlZElt
YWdlRm9ybWF0cyA9IGFkb3B0TlMoW3NlbGYtPl9hZGRpdGlvbmFsQWxsb3dlZEltYWdlRm9ybWF0
cyBjb3B5V2l0aFpvbmU6em9uZV0pOwogICAgIGNvbmZpZ3VyYXRpb24tPl9sZWdhY3lFbmNyeXB0
ZWRNZWRpYUFQSUVuYWJsZWQgPSBzZWxmLT5fbGVnYWN5RW5jcnlwdGVkTWVkaWFBUElFbmFibGVk
OwogICAgIGNvbmZpZ3VyYXRpb24tPl9hbGxvd01lZGlhQ29udGVudFR5cGVzUmVxdWlyaW5nSGFy
ZHdhcmVTdXBwb3J0QXNGYWxsYmFjayA9IHNlbGYtPl9hbGxvd01lZGlhQ29udGVudFR5cGVzUmVx
dWlyaW5nSGFyZHdhcmVTdXBwb3J0QXNGYWxsYmFjazsKIApAQCAtOTkwLDYgKzk5MiwxNiBAQCAt
ICh2b2lkKV9zZXRNZWRpYUNvbnRlbnRUeXBlc1JlcXVpcmluZ0hhCiAgICAgX21lZGlhQ29udGVu
dFR5cGVzUmVxdWlyaW5nSGFyZHdhcmVTdXBwb3J0ID0gYWRvcHROUyhbbWVkaWFDb250ZW50VHlw
ZXNSZXF1aXJpbmdIYXJkd2FyZVN1cHBvcnQgY29weV0pOwogfQogCistIChOU0FycmF5PE5TU3Ry
aW5nICo+ICopX2FkZGl0aW9uYWxBbGxvd2VkSW1hZ2VGb3JtYXRzCit7CisgICAgcmV0dXJuIF9h
ZGRpdGlvbmFsQWxsb3dlZEltYWdlRm9ybWF0cy5nZXQoKTsKK30KKworLSAodm9pZClfc2V0QWRk
aXRpb25hbEFsbG93ZWRJbWFnZUZvcm1hdHM6KE5TQXJyYXk8TlNTdHJpbmcgKj4gKilhZGRpdGlv
bmFsQWxsb3dlZEltYWdlRm9ybWF0cworeworICAgIF9hZGRpdGlvbmFsQWxsb3dlZEltYWdlRm9y
bWF0cyA9IGFkb3B0TlMoW2FkZGl0aW9uYWxBbGxvd2VkSW1hZ2VGb3JtYXRzIGNvcHldKTsKK30K
KwogLSAodm9pZClfc2V0TGVnYWN5RW5jcnlwdGVkTWVkaWFBUElFbmFibGVkOihCT09MKWVuYWJs
ZWQKIHsKICAgICBfbGVnYWN5RW5jcnlwdGVkTWVkaWFBUElFbmFibGVkID0gZW5hYmxlZDsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0
aW9uUHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oCShyZXZpc2lvbiAyMzcyOTUpCisr
KyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlv
blByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTAxLDYgKzEwMSw3IEBAIHR5cGVkZWYgTlNf
RU5VTShOU1VJbnRlZ2VyLCBfV0tEcmFnTGlmdEQKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0
ZXI9X3NldE1lZGlhQ29udGVudFR5cGVzUmVxdWlyaW5nSGFyZHdhcmVTdXBwb3J0OikgTlNTdHJp
bmcgKl9tZWRpYUNvbnRlbnRUeXBlc1JlcXVpcmluZ0hhcmR3YXJlU3VwcG9ydCBXS19BUElfQVZB
SUxBQkxFKG1hY29zeCgxMC4xMyksIGlvcygxMS4wKSk7CiBAcHJvcGVydHkgKG5vbmF0b21pYywg
c2V0dGVyPV9zZXRMZWdhY3lFbmNyeXB0ZWRNZWRpYUFQSUVuYWJsZWQ6KSBCT09MIF9sZWdhY3lF
bmNyeXB0ZWRNZWRpYUFQSUVuYWJsZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTMpLCBp
b3MoMTEuMCkpOwogQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0QWxsb3dNZWRpYUNv
bnRlbnRUeXBlc1JlcXVpcmluZ0hhcmR3YXJlU3VwcG9ydEFzRmFsbGJhY2s6KSBCT09MIF9hbGxv
d01lZGlhQ29udGVudFR5cGVzUmVxdWlyaW5nSGFyZHdhcmVTdXBwb3J0QXNGYWxsYmFjayBXS19B
UElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMyksIGlvcygxMS4wKSk7CitAcHJvcGVydHkgKG5vbmF0
b21pYywgY29weSwgc2V0dGVyPV9zZXRBZGRpdGlvbmFsQWxsb3dlZEltYWdlRm9ybWF0czopIE5T
QXJyYXk8TlNTdHJpbmcgKj4gKl9hZGRpdGlvbmFsQWxsb3dlZEltYWdlRm9ybWF0cyBXS19BUElf
QVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIAogQGVuZAog
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAko
cmV2aXNpb24gMjM3Mjk1KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0Niw2ICsyNDYsNyBAQAogI2luY2x1ZGUgIlZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXIuaCIKICNpbmNsdWRlICJXS1N0cmluZ0NGLmgiCiAjaW5jbHVk
ZSA8V2ViQ29yZS9MZWdhY3lXZWJBcmNoaXZlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9VVElSZWdp
c3RyeS5oPgogI2luY2x1ZGUgPHd0Zi9NYWNoU2VuZFJpZ2h0Lmg+CiAjZW5kaWYKIApAQCAtNTky
LDYgKzU5Myw3IEBAIFdlYlBhZ2U6OldlYlBhZ2UodWludDY0X3QgcGFnZUlELCBXZWJQYWcKICNp
ZiBQTEFURk9STShDT0NPQSkKICAgICBtX3BhZ2UtPnNldHRpbmdzKCkuc2V0Q29udGVudERpc3Bv
c2l0aW9uQXR0YWNobWVudFNhbmRib3hFbmFibGVkKHRydWUpOwogICAgIHNldFNtYXJ0SW5zZXJ0
RGVsZXRlRW5hYmxlZChwYXJhbWV0ZXJzLnNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCk7CisgICAg
V2ViQ29yZTo6c2V0QWRkaXRpb25hbEFsbG93ZWRJbWFnZUZvcm1hdHMocGFyYW1ldGVycy5hZGRp
dGlvbmFsQWxsb3dlZEltYWdlRm9ybWF0cyk7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShTRVJWSUNF
X1dPUktFUikKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFu
Z2VMb2cJKHJldmlzaW9uIDIzNzI5NikKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDE4IEBACisyMDE4LTEwLTE5ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91
aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGFuIFNQSSB0byBhbGxvdyBXZWJWaWV3
IGNsaWVudHMgdG8gYWRkIGFkZGl0aW9uYWwgc3VwcG9ydGVkIGltYWdlIGZvcm1hdHMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDQ1NAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Qgb3BlbmluZyBh
IFRHQSBpbWFnZSBpbiBXZWJWaWV3IHdoaWNoIGlzIG5vdCBhbGxvd2VkIGJ5IGRlZmF1bHQuIFRo
ZQorICAgICAgICBUR0EgZm9ybWF0IHdpbGwgYmUgYWxsb3dlZCB0aHJvdWdoIFdLV2ViVmlld0Nv
bmZpZ3VyYXRpb24uCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hLzEwMHgxMDAtcmVkLnRnYTogQWRkZWQuCisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9BZGRpdGlvbmFsQWxsb3dlZEltYWdlRm9ybWF0cy5tbTogQWRk
ZWQuCisgICAgICAgIChURVNUKToKKwogMjAxOC0xMC0xOSAgQ2hhcmxpZSBUdXJuZXIgIDxjdHVy
bmVyQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0VNRV0gRml4IGNyYXNoIGR1cmluZyB0cmFjaW5n
IGluICBnc3RfcXRkZW11eF9yZXF1ZXN0X3Byb3RlY3Rpb25fY29udGV4dApJbmRleDogVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDIzNzI5NSkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBA
IC0yNDEsNiArMjQxLDggQEAKIAkJNTM2NzcwMzYxQ0M4MUI2MTAwRDQyNUIxIC8qIFdlYlNjcmlw
dE9iamVjdERlc2NyaXB0aW9uLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTM2NzcwMzUxQ0M4MTJGOTAwRDQyNUIxIC8qIFdlYlNjcmlw
dE9iamVjdERlc2NyaXB0aW9uLmh0bWwgKi87IH07CiAJCTUzRUMyNTQxMUU5NkZEODcwMDA4MzFC
OSAvKiBQcmlvcml0eVF1ZXVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUzRUMyNTNGMUU5NkJDODAwMDA4MzFCOSAvKiBQcmlvcml0eVF1ZXVlLmNw
cCAqLzsgfTsKIAkJNTUyMjZBMkYxRUJBNDRCOTAwQzM2QUQwIC8qIGxhcmdlLXJlZC1zcXVhcmUt
aW1hZ2UuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1NTIyNkEyRTFFQjk2OUI2MDBDMzZBRDAgLyogbGFyZ2UtcmVkLXNxdWFyZS1pbWFn
ZS5odG1sICovOyB9OworCQk1NTU4NDgxQzIxNzEzMTU3MDBGQjdGRkYgLyogQWRkaXRpb25hbEFs
bG93ZWRJbWFnZUZvcm1hdHMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1NTU4NDgxQjIxNzEzMTU2MDBGQjdGRkYgLyogQWRkaXRpb25hbEFsbG93ZWRJ
bWFnZUZvcm1hdHMubW0gKi87IH07CisJCTU1NTg0ODI1MjE3MThDREEwMEZCN0ZGRiAvKiAxMDB4
MTAwLXJlZC50Z2EgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTU1ODQ4MjEyMTcxNUE3RTAwRkI3RkZGIC8qIDEwMHgxMDAtcmVkLnRnYSAqLzsg
fTsKIAkJNTU5N0Y4MzYxRDk1OTZDODAwNjZCQzIxIC8qIFN5bmNocm9uaXplZEZpeGVkUXVldWUu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTU5N0Y4
MzQxRDk1OTZDODAwNjZCQzIxIC8qIFN5bmNocm9uaXplZEZpeGVkUXVldWUuY3BwICovOyB9Owog
CQk1NzE0RUNCOTFDQThCNUIwMDAwNTFBQzggLyogRG93bmxvYWRSZXF1ZXN0T3JpZ2luYWxVUkwu
aHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1NzE0RUNCODFDQThCNTg4MDAwNTFBQzggLyogRG93bmxvYWRSZXF1ZXN0T3JpZ2luYWxVUkwu
aHRtbCAqLzsgfTsKIAkJNTcxNEVDQkIxQ0E4QkZFNDAwMDUxQUM4IC8qIERvd25sb2FkUmVxdWVz
dE9yaWdpbmFsVVJMRnJhbWUuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1NzE0RUNCQTFDQThCRkQxMDAwNTFBQzggLyogRG93bmxvYWRS
ZXF1ZXN0T3JpZ2luYWxVUkxGcmFtZS5odG1sICovOyB9OwpAQCAtOTQzLDYgKzk0NSw3IEBACiAJ
CQlkc3RQYXRoID0gVGVzdFdlYktpdEFQSS5yZXNvdXJjZXM7CiAJCQlkc3RTdWJmb2xkZXJTcGVj
ID0gNzsKIAkJCWZpbGVzID0gKAorCQkJCTU1NTg0ODI1MjE3MThDREEwMEZCN0ZGRiAvKiAxMDB4
MTAwLXJlZC50Z2EgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJMUE5RTUyQzkxM0U2NUVGNDAw
NjkxN0Y1IC8qIDE4LWNoYXJhY3RlcnMuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQkz
NzkwMjhCOTE0RkFDMjRDMDA3RTZCNDMgLyogYWNjZXB0c0ZpcnN0TW91c2UuaHRtbCBpbiBDb3B5
IFJlc291cmNlcyAqLywKIAkJCQkxQzJCODE4NzFDODkyNUEwMDBBNTUyOUYgLyogQWhlbS50dGYg
aW4gQ29weSBSZXNvdXJjZXMgKi8sCkBAIC0xNDM0LDcgKzE0MzcsNiBAQAogCQkzN0UxMDY0QjE2
OTc2N0Y3MDBCNzhCRDAgLyogRE9NSFRNTFRhYmxlQ2VsbEVsZW1lbnRDZWxsQWJvdmUuaHRtbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9IERPTUhUTUxUYWJsZUNlbGxFbGVtZW50Q2VsbEFi
b3ZlLmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3RTM4QzMzMTY5QjdEMDEw
MDg0QzI4QyAvKiBXZWJWaWV3RGlkUmVtb3ZlRnJhbWVGcm9tSGllcmFyY2h5Lm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViVmlld0RpZFJlbW92ZUZyYW1lRnJv
bUhpZXJhcmNoeS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzdFN0RENjMxRUEw
NkZGMjAwOUIzOTZEIC8qIEFkZGl0aW9uYWxSZWFkQWNjZXNzQWxsb3dlZFVSTHMubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBZGRpdGlvbmFsUmVhZEFjY2Vzc0Fs
bG93ZWRVUkxzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzN0U3REQ2NTFFQTA3
MTVCMDA5QjM5NkQgLyogQWRkaXRpb25hbFJlYWRBY2Nlc3NBbGxvd2VkVVJMc1Byb3RvY29sLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFkZGl0aW9uYWxSZWFkQWNjZXNzQWxs
b3dlZFVSTHNQcm90b2NvbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzN0U3REQ2
NjFFQTA3MUYzMDA5QjM5NkQgLyogQWRkaXRpb25hbFJlYWRBY2Nlc3NBbGxvd2VkVVJMc1BsdWdp
bi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEFkZGl0aW9uYWxS
ZWFkQWNjZXNzQWxsb3dlZFVSTHNQbHVnaW4ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTM3RkI3Mjk1MURCMkU4MkYwMEU0MUJFNCAvKiBDb250ZXh0TWVudURlZmF1bHRJdGVtc0hh
dmVUYWdzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQ29udGV4
dE1lbnVEZWZhdWx0SXRlbXNIYXZlVGFncy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJM0YxQjUyNjgxRDNENzEyOTAwOEQ2MEM0IC8qIEZ1bGxzY3JlZW5MYXlvdXRDb25zdHJhaW50
cy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEZ1bGxzY3JlZW5M
YXlvdXRDb25zdHJhaW50cy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE1NDYs
NiArMTU0OCw5IEBACiAJCTUzNjc3MDM1MUNDODEyRjkwMEQ0MjVCMSAvKiBXZWJTY3JpcHRPYmpl
Y3REZXNjcmlwdGlvbi5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gV2ViU2NyaXB0
T2JqZWN0RGVzY3JpcHRpb24uaHRtbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTNF
QzI1M0YxRTk2QkM4MDAwMDgzMUI5IC8qIFByaW9yaXR5UXVldWUuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHJpb3JpdHlRdWV1ZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTU1MjI2QTJFMUVCOTY5QjYwMEMzNkFEMCAvKiBsYXJnZS1yZWQtc3F1
YXJlLWltYWdlLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAibGFyZ2UtcmVkLXNx
dWFyZS1pbWFnZS5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTU1ODQ4MUIy
MTcxMzE1NjAwRkI3RkZGIC8qIEFkZGl0aW9uYWxBbGxvd2VkSW1hZ2VGb3JtYXRzLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQWRkaXRpb25hbEFsbG93ZWRJbWFn
ZUZvcm1hdHMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU1NTg0ODFGMjE3MTM1
MDgwMEZCN0ZGRiAvKiBBZGRpdGlvbmFsUmVhZEFjY2Vzc0FsbG93ZWRVUkxzUHJvdG9jb2wuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWRkaXRpb25hbFJlYWRBY2Nlc3NBbGxv
d2VkVVJMc1Byb3RvY29sLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU1NTg0ODIx
MjE3MTVBN0UwMEZCN0ZGRiAvKiAxMDB4MTAwLXJlZC50Z2EgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBmaWxlOyBwYXRoID0gIjEwMHgxMDAtcmVkLnRn
YSI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU1OTdGODM0MUQ5NTk2QzgwMDY2QkMy
MSAvKiBTeW5jaHJvbml6ZWRGaXhlZFF1ZXVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFN5bmNocm9uaXplZEZpeGVkUXVldWUuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1NzE0RUNCODFDQThCNTg4MDAwNTFBQzggLyogRG93bmxvYWRSZXF1ZXN0
T3JpZ2luYWxVUkwuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9IERvd25sb2FkUmVx
dWVzdE9yaWdpbmFsVVJMLmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3MTRF
Q0JBMUNBOEJGRDEwMDA1MUFDOCAvKiBEb3dubG9hZFJlcXVlc3RPcmlnaW5hbFVSTEZyYW1lLmh0
bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSBEb3dubG9hZFJlcXVlc3RPcmlnaW5hbFVS
TEZyYW1lLmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMzEwLDkgKzIzMTUs
MTAgQEAKIAkJCQlBMTZGNjZCODFDNDBFOUUxMDBCRDREMjQgLyogUmVzb3VyY2VzICovLAogCQkJ
CTVDRUFCNURGMUZBOTM3Q0IwMEE3N0ZBQSAvKiBfV0tJbnB1dERlbGVnYXRlLm1tICovLAogCQkJ
CTdDRUZBOTY0MUFDMEI5RTIwMEI5MTBGRCAvKiBfV0tVc2VyQ29udGVudEV4dGVuc2lvblN0b3Jl
Lm1tICovLAorCQkJCTU1NTg0ODFCMjE3MTMxNTYwMEZCN0ZGRiAvKiBBZGRpdGlvbmFsQWxsb3dl
ZEltYWdlRm9ybWF0cy5tbSAqLywKIAkJCQkzN0U3REQ2MzFFQTA2RkYyMDA5QjM5NkQgLyogQWRk
aXRpb25hbFJlYWRBY2Nlc3NBbGxvd2VkVVJMcy5tbSAqLywKIAkJCQkzN0U3REQ2NjFFQTA3MUYz
MDA5QjM5NkQgLyogQWRkaXRpb25hbFJlYWRBY2Nlc3NBbGxvd2VkVVJMc1BsdWdpbi5tbSAqLywK
LQkJCQkzN0U3REQ2NTFFQTA3MTVCMDA5QjM5NkQgLyogQWRkaXRpb25hbFJlYWRBY2Nlc3NBbGxv
d2VkVVJMc1Byb3RvY29sLmggKi8sCisJCQkJNTU1ODQ4MUYyMTcxMzUwODAwRkI3RkZGIC8qIEFk
ZGl0aW9uYWxSZWFkQWNjZXNzQWxsb3dlZFVSTHNQcm90b2NvbC5oICovLAogCQkJCUExREY3NDMw
MUM0MUI2NTgwMEEyRjREMCAvKiBBbHdheXNSZXZhbGlkYXRlZFVSTFNjaGVtZXMubW0gKi8sCiAJ
CQkJMkRFNzFBRkQxRDQ5QzBCRDAwOTA0MDk0IC8qIEFuaW1hdGVkUmVzaXplLm1tICovLAogCQkJ
CTYzRjY2ODIwMUY5N0MzQUEwMDMyRUU1MSAvKiBBcHBsaWNhdGlvbk1hbmlmZXN0Lm1tICovLApA
QCAtMjY1MSw2ICsyNjU3LDcgQEAKIAkJQTE2RjY2QjgxQzQwRTlFMTAwQkQ0RDI0IC8qIFJlc291
cmNlcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJNTU1
ODQ4MjEyMTcxNUE3RTAwRkI3RkZGIC8qIDEwMHgxMDAtcmVkLnRnYSAqLywKIAkJCQlDMjVDQ0Ew
QzFFNTE0MEU1MDAyNkNCOEEgLyogQWxsQWhlbS5zdmcgKi8sCiAJCQkJRjRBOTIwMkUxRkVFMzRD
ODAwRjU5NTkwIC8qIGFwcGxlLWRhdGEtdXJsLmh0bWwgKi8sCiAJCQkJRjQ3RDMwRUIxRUQyODYx
OTAwMDQ4MkUxIC8qIGFwcGxlLmdpZiAqLywKQEAgLTM3MTMsNiArMzcyMCw3IEBACiAJCQkJMkUy
MDVCQTQxRjUyNzc0NjAwNTk1MkREIC8qIEFjY2Vzc2liaWxpdHlUZXN0c0lPUy5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCTlCRDUxMTFDMUZFOEUxMTYwMEQyQjYzMCAvKiBBY2Nlc3NpbmdQYXN0ZWRJ
bWFnZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCUY0NUI2M0ZFMUYxOUQ0MTAwMDlEMzhCOSAvKiBB
Y3Rpb25TaGVldFRlc3RzLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJNTU1ODQ4MUMyMTcxMzE1NzAw
RkI3RkZGIC8qIEFkZGl0aW9uYWxBbGxvd2VkSW1hZ2VGb3JtYXRzLm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJMzdFN0RENjQxRUEwNkZGMjAwOUIzOTZEIC8qIEFkZGl0aW9uYWxSZWFkQWNjZXNzQWxs
b3dlZFVSTHMubW0gaW4gU291cmNlcyAqLywKIAkJCQk3QTkwOUE3RDFEODc3NDgwMDA3RTEwRjgg
LyogQWZmaW5lVHJhbnNmb3JtLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUExREY3NDMyMUM0MUI2
NTgwMEEyRjREMCAvKiBBbHdheXNSZXZhbGlkYXRlZFVSTFNjaGVtZXMubW0gaW4gU291cmNlcyAq
LywKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQWRkaXRpb25h
bEFsbG93ZWRJbWFnZUZvcm1hdHMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9BZGRpdGlvbmFsQWxsb3dlZEltYWdlRm9ybWF0cy5tbQkobm9u
ZXhpc3RlbnQpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0FkZGl0
aW9uYWxBbGxvd2VkSW1hZ2VGb3JtYXRzLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTkg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgPFdlYktpdC9XS0Zv
dW5kYXRpb24uaD4KKworI2lmIFdLX0FQSV9FTkFCTEVEICYmIFBMQVRGT1JNKENPQ09BKQorCisj
aW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorI2ltcG9ydCAiVGVzdE5hdmlnYXRpb25EZWxl
Z2F0ZS5oIgorI2ltcG9ydCAiV0tXZWJWaWV3Q29uZmlndXJhdGlvbkV4dHJhcy5oIgorI2ltcG9y
dCA8V2ViS2l0L1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmg+CisjaW1wb3J0IDx3dGYv
UmV0YWluUHRyLmg+CisKK1RFU1QoV2ViS2l0LCBBZGRpdGlvbmFsQWxsb3dlZEltYWdlRm9ybWF0
cykKK3sKKyAgICBSZXRhaW5QdHI8V0tXZWJWaWV3Q29uZmlndXJhdGlvbj4gY29uZmlndXJhdGlv
biA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAg
W2NvbmZpZ3VyYXRpb24gX3NldEFkZGl0aW9uYWxBbGxvd2VkSW1hZ2VGb3JtYXRzOkBbQCJjb20u
dHJ1ZXZpc2lvbi50Z2EtaW1hZ2UiXV07CisKKyAgICBSZXRhaW5QdHI8V0tXZWJWaWV3PiB3ZWJW
aWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0
KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKwor
ICAgIFJldGFpblB0cjxOU1VSTD4gdGVzdFVSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJM
Rm9yUmVzb3VyY2U6QCIxMDB4MTAwLXJlZCIgd2l0aEV4dGVuc2lvbjpAInRnYSIgc3ViZGlyZWN0
b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVz
dDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnRlc3RVUkwuZ2V0KCldXTsKKyAgICBbd2Vi
VmlldyBfdGVzdF93YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07CisKKyAgICBfX2Jsb2NrIGJv
b2wgaXNEb25lID0gZmFsc2U7CisgICAgW3dlYlZpZXcgX2RvQWZ0ZXJOZXh0UHJlc2VudGF0aW9u
VXBkYXRlOl57CisgICAgICAgIFt3ZWJWaWV3IGV2YWx1YXRlSmF2YVNjcmlwdDpAIltkb2N1bWVu
dC5xdWVyeVNlbGVjdG9yKCdpbWcnKS53aWR0aF0iIGNvbXBsZXRpb25IYW5kbGVyOl4oaWQgdmFs
dWUsIE5TRXJyb3IgKmVycm9yKSB7CisgICAgICAgICAgICBDR0Zsb2F0IHdpZHRoID0gW1t2YWx1
ZSBvYmplY3RBdEluZGV4OjBdIGZsb2F0VmFsdWVdOworICAgICAgICAgICAgRVhQRUNUX0VRKHdp
ZHRoLCAxMDApOworICAgICAgICAgICAgaXNEb25lID0gdHJ1ZTsKKyAgICAgICAgfV07CisgICAg
fV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOworfQorCisjZW5kaWYK
SW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvMTAweDEwMC1yZWQu
dGdhCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KQ2Fubm90IGRpc3BsYXk6IGZpbGUgbWFya2VkIGFzIGEgYmluYXJ5IHR5
cGUuCnN2bjptaW1lLXR5cGUgPSBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0KClByb3BlcnR5IGNo
YW5nZXMgb246IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvMTAweDEwMC1y
ZWQudGdhCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjptaW1lLXR5cGUKIyMgLTAsMCArMSAjIworYXBw
bGljYXRpb24vb2N0ZXQtc3RyZWFtClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKCkFB
QUtBQUFBQUFBQUFBQUFaQUJrQUNBbzR3QUEvLy9qQUFELy8rTUFBUC8vNHdBQS8vL2pBQUQvLytN
QUFQLy80d0FBLy8vakFBRC8KLytNQUFQLy80d0FBLy8vakFBRC8vK01BQVAvLzR3QUEvLy9qQUFE
Ly8rTUFBUC8vNHdBQS8vL2pBQUQvLytNQUFQLy80d0FBLy8vagpBQUQvLytNQUFQLy80d0FBLy8v
akFBRC8vK01BQVAvLzR3QUEvLy9qQUFELy8rTUFBUC8vNHdBQS8vL2pBQUQvLytNQUFQLy80d0FB
Ci8vL2pBQUQvLytNQUFQLy80d0FBLy8vakFBRC8vK01BQVAvLzR3QUEvLy9qQUFELy8rTUFBUC8v
NHdBQS8vL2pBQUQvLytNQUFQLy8KNHdBQS8vL2pBQUQvLytNQUFQLy80d0FBLy8vakFBRC8vK01B
QVAvLzR3QUEvLy9qQUFELy8rTUFBUC8vNHdBQS8vL2pBQUQvLytNQQpBUC8vNHdBQS8vL2pBQUQv
LytNQUFQLy80d0FBLy8vakFBRC8vK01BQVAvLzR3QUEvLy9qQUFELy8rTUFBUC8vNHdBQS8vL2pB
QUQvCi8rTUFBUC8vNHdBQS8vL2pBQUQvLytNQUFQLy80d0FBLy8vakFBRC8vK01BQVAvLzR3QUEv
Ly9qQUFELy8rTUFBUC8vNHdBQS8vL2oKQUFELy8rTUFBUC8vNHdBQS8vL2pBQUQvLytNQUFQLy80
d0FBLy8vakFBRC8vK01BQVAvLzR3QUEvLy9qQUFELy8rTUFBUC8vNHdBQQovLy9qQUFELy8rTUFB
UC8vNHdBQS8vL2pBQUQvLytNQUFQLy80d0FBLy8vakFBRC8vK01BQVAvLzR3QUEvLy9qQUFELy8r
TUFBUC8vCjR3QUEvLzg9Cgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>352835</attachid>
            <date>2018-10-19 16:57:03 -0700</date>
            <delta_ts>2018-10-19 17:39:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190454-20181019165702.patch</filename>
            <type>text/plain</type>
            <size>36546</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzNzI5NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM3IEBACisyMDE4LTEwLTE5ICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGFuIFNQ
SSB0byBhbGxvdyBXZWJWaWV3IGNsaWVudHMgdG8gYWRkIGFkZGl0aW9uYWwgc3VwcG9ydGVkIGlt
YWdlIGZvcm1hdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE5MDQ1NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEFkZCBhbiBTUEkgdG8gYWxsb3cgYWRkaXRpb25hbCBzdXBwb3J0ZWQgaW1hZ2UgZm9ybWF0
cyBpbiBXZWJWaWV3LiBUaGVzZQorICAgICAgICBhZGRpdGlvbmFsIGZvcm1hdHMgY2FuIGJlIHNl
dCBpbiB0aGUgV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhcyBhbiBOU0FycmF5CisgICAgICAgIG9m
IE5TdHJpbmdzLiBFYWNoIHN0cmluZyByZXByZXNlbnRzIHRoZSBVVEkgb2YgdGhlIGFkZGl0aW9u
YWwgYWxsb3dlZCAKKyAgICAgICAgaW1hZ2UgZm9ybWF0LgorCisgICAgICAgICogcGxhdGZvcm0v
TUlNRVR5cGVSZWdpc3RyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjppbml0aWFsaXplU3VwcG9y
dGVkSW1hZ2VNSU1FVHlwZXMpOgorICAgICAgICAoV2ViQ29yZTo6aW5pdGlhbGl6ZVN1cHBvcnRl
ZEltYWdlQWRkaXRpb25hbE1JTUVUeXBlcyk6IEFkZCB0aGUgbWltZSB0eXBlcworICAgICAgICBv
ZiB0aGUgYWRkaXRpb25hbCBhbGxvd2VkIGltYWdlIGZvcm1hdHMgaWYgdGhleSBleGlzdC4KKyAg
ICAgICAgKFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkSW1hZ2VNSU1FVHlw
ZSk6CisgICAgICAgIChXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZEltYWdl
UmVzb3VyY2VNSU1FVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5Ojpp
bml0aWFsaXplU3VwcG9ydGVkSW1hZ2VBZGRpdGlvbmFsTUlNRVR5cGVzSWZOZWVkZWQpOgorICAg
ICAgICAqIHBsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURl
Y29kZXJDRzo6ZW5jb2RlZERhdGFTdGF0dXMgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NnL1VUSVJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRlZmF1bHRBbGxv
d2VkSW1hZ2VGb3JtYXRzKTogVGhpcyBpcyB0aGUgV2ViS2l0IGRlZmF1bHQgbGlzdCBvZgorICAg
ICAgICBzdXBwb3J0ZWQgaW1hZ2UgZm9ybWF0cy4KKyAgICAgICAgKFdlYkNvcmU6OmludGVybmFs
QWRkaXRpb25hbEFsbG93ZWRJbWFnZUZvcm1hdHMpOgorICAgICAgICAoV2ViQ29yZTo6YWRkaXRp
b25hbEFsbG93ZWRJbWFnZUZvcm1hdHMpOgorICAgICAgICAoV2ViQ29yZTo6c2V0QWRkaXRpb25h
bEFsbG93ZWRJbWFnZUZvcm1hdHMpOgorICAgICAgICAoV2ViQ29yZTo6aXNBbGxvd2VkSW1hZ2VG
b3JtYXQpOiBUaGlzIGZ1bmN0aW9uIGNoZWNrcyB0aGUgZGVmYXVsdCBsaXN0IGFuZAorICAgICAg
ICB0aGUgYWRkaXRpb25hbCBsaXN0IHRvIGRlY2lkZSB3aGV0aGVyIHRoZSBpbWFnZSBmb3JtYXQg
aXMgc3VwcG9ydGVkLgorICAgICAgICAoV2ViQ29yZTo6YWxsb3dlZEltYWdlVVRJcyk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjppc0FsbG93ZWRJbWFnZVVUSSk6IERlbGV0ZWQuCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvVVRJUmVnaXN0cnkuaDoKKwogMjAxOC0xMC0xOSAg
WmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNdW0lGQ10gUmVu
ZGVyUmVwbGFjZWQgcmVuZGVyZXIgc2hvdWxkIGNyZWF0ZSBJbmxpbmVCb3gKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuY3BwCShyZXZpc2lvbiAyMzcy
OTUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNTgsNiArNTgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdGF0aWMg
SGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4qIHN1cHBvcnRlZEltYWdl
UmVzb3VyY2VNSU1FVHlwZXM7CiBzdGF0aWMgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vu
c2l0aXZlSGFzaD4qIHN1cHBvcnRlZEltYWdlTUlNRVR5cGVzOwogc3RhdGljIEhhc2hTZXQ8U3Ry
aW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+KiBzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlc0Zv
ckVuY29kaW5nOworc3RhdGljIEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhh
c2g+KiBzdXBwb3J0ZWRJbWFnZUFkZGl0aW9uYWxNSU1FVHlwZXM7CiBzdGF0aWMgSGFzaFNldDxT
dHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4qIHN1cHBvcnRlZEphdmFTY3JpcHRNSU1F
VHlwZXM7CiBzdGF0aWMgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4q
IHN1cHBvcnRlZE5vbkltYWdlTUlNRVR5cGVzOwogc3RhdGljIEhhc2hTZXQ8U3RyaW5nLCBBU0NJ
SUNhc2VJbnNlbnNpdGl2ZUhhc2g+KiBzdXBwb3J0ZWRNZWRpYU1JTUVUeXBlczsKQEAgLTc4LDcg
Kzc5LDcgQEAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVN1cHBvcnRlZEltYWdlTUlNRQogICAgIH0K
IAogI2lmbmRlZiBOREVCVUcKLSAgICBmb3IgKGF1dG8mIHV0aSA6IGFsbG93ZWRJbWFnZVVUSXMo
KSkgeworICAgIGZvciAoYXV0byYgdXRpIDogZGVmYXVsdEFsbG93ZWRJbWFnZUZvcm1hdHMoKSkg
ewogICAgICAgICBhdXRvIG1pbWVUeXBlID0gTUlNRVR5cGVGb3JJbWFnZVNvdXJjZVR5cGUodXRp
KTsKICAgICAgICAgaWYgKCFtaW1lVHlwZS5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIEFTU0VS
VChzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlcy0+Y29udGFpbnMobWltZVR5cGUpKTsKQEAgLTg4LDcg
Kzg5LDcgQEAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVN1cHBvcnRlZEltYWdlTUlNRQogCiAjaWYg
UExBVEZPUk0oQ09DT0EpCiAgICAgZm9yIChhdXRvJiBtaW1lIDogKnN1cHBvcnRlZEltYWdlTUlN
RVR5cGVzKQotICAgICAgICBBU1NFUlRfVU5VU0VEKG1pbWUsIGFsbG93ZWRJbWFnZVVUSXMoKS5j
b250YWlucyhVVElGcm9tTUlNRVR5cGUobWltZSkpKTsKKyAgICAgICAgQVNTRVJUX1VOVVNFRCht
aW1lLCBkZWZhdWx0QWxsb3dlZEltYWdlRm9ybWF0cygpLmNvbnRhaW5zKFVUSUZyb21NSU1FVHlw
ZShtaW1lKSkpOwogI2VuZGlmCiAjZW5kaWYKIApAQCAtMTg1LDYgKzE4NiwyMyBAQCBzdGF0aWMg
dm9pZCBpbml0aWFsaXplU3VwcG9ydGVkSW1hZ2VNSU1FCiAjZW5kaWYKIH0KIAorc3RhdGljIHZv
aWQgaW5pdGlhbGl6ZVN1cHBvcnRlZEltYWdlQWRkaXRpb25hbE1JTUVUeXBlcygpCit7CisgICAg
Ly8gU3VwcG9ydGVkSW1hZ2VBZGRpdGlvbmFsTUlNRVR5cGVzIGNhbiBiZSByZWluaXRpYWxpemVk
IGlmIGFkZGl0aW9uYWxBbGxvd2VkSW1hZ2VGb3JtYXRzCisgICAgLy8gd2FzIHVwZGF0ZWQgYWZ0
ZXIgdGhpcyBvbmUgaXMgaW5pdGlhbGl6ZWQuCisgICAgaWYgKCFzdXBwb3J0ZWRJbWFnZUFkZGl0
aW9uYWxNSU1FVHlwZXMpCisgICAgICAgIHN1cHBvcnRlZEltYWdlQWRkaXRpb25hbE1JTUVUeXBl
cyA9IG5ldyBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPjsKKworICAg
IEFTU0VSVChzdXBwb3J0ZWRJbWFnZUFkZGl0aW9uYWxNSU1FVHlwZXMtPmlzRW1wdHkoKSk7CisK
KyAgICAvLyBBZGQgdGhlIG1pbWUgdHlwZXMgb2YgdGhlIGFkZGl0aW9uYWxBbGxvd2VkSW1hZ2VG
b3JtYXRzLgorICAgIGZvciAoYXV0byYgdXRpIDogYWRkaXRpb25hbEFsbG93ZWRJbWFnZUZvcm1h
dHMoKSkgeworICAgICAgICBhdXRvIG1pbWVUeXBlID0gTUlNRVR5cGVGb3JJbWFnZVNvdXJjZVR5
cGUodXRpKTsKKyAgICAgICAgaWYgKCFtaW1lVHlwZS5pc0VtcHR5KCkpCisgICAgICAgICAgICBz
dXBwb3J0ZWRJbWFnZUFkZGl0aW9uYWxNSU1FVHlwZXMtPmFkZChtaW1lVHlwZSk7CisgICAgfQor
fQorCiBzdGF0aWMgdm9pZCBpbml0aWFsaXplU3VwcG9ydGVkSmF2YVNjcmlwdE1JTUVUeXBlcygp
CiB7CiAgICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvc2NyaXB0
aW5nLmh0bWwjamF2YXNjcmlwdC1taW1lLXR5cGUKQEAgLTQ0NSw3ICs0NjMsOSBAQCBib29sIE1J
TUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkSW1hZ2VNCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICBpZiAoIXN1cHBvcnRlZEltYWdlTUlNRVR5cGVzKQogICAgICAgICBpbml0aWFsaXplU3Vw
cG9ydGVkSW1hZ2VNSU1FVHlwZXMoKTsKLSAgICByZXR1cm4gc3VwcG9ydGVkSW1hZ2VNSU1FVHlw
ZXMtPmNvbnRhaW5zKGdldE5vcm1hbGl6ZWRNSU1FVHlwZShtaW1lVHlwZSkpOworICAgIGlmICgh
c3VwcG9ydGVkSW1hZ2VBZGRpdGlvbmFsTUlNRVR5cGVzKQorICAgICAgICBpbml0aWFsaXplU3Vw
cG9ydGVkSW1hZ2VBZGRpdGlvbmFsTUlNRVR5cGVzKCk7CisgICAgcmV0dXJuIHN1cHBvcnRlZElt
YWdlTUlNRVR5cGVzLT5jb250YWlucyhnZXROb3JtYWxpemVkTUlNRVR5cGUobWltZVR5cGUpKSB8
fCBzdXBwb3J0ZWRJbWFnZUFkZGl0aW9uYWxNSU1FVHlwZXMtPmNvbnRhaW5zKGdldE5vcm1hbGl6
ZWRNSU1FVHlwZShtaW1lVHlwZSkpOwogfQogCiBib29sIE1JTUVUeXBlUmVnaXN0cnk6OmlzU3Vw
cG9ydGVkSW1hZ2VWaWRlb09yU1ZHTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKQEAg
LTQ2Nyw3ICs0ODcsOSBAQCBib29sIE1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkSW1hZ2VS
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIXN1cHBvcnRlZEltYWdlUmVzb3VyY2VN
SU1FVHlwZXMpCiAgICAgICAgIGluaXRpYWxpemVTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlcygpOwot
ICAgIHJldHVybiBzdXBwb3J0ZWRJbWFnZVJlc291cmNlTUlNRVR5cGVzLT5jb250YWlucyhnZXRO
b3JtYWxpemVkTUlNRVR5cGUobWltZVR5cGUpKTsKKyAgICBpZiAoIXN1cHBvcnRlZEltYWdlQWRk
aXRpb25hbE1JTUVUeXBlcykKKyAgICAgICAgaW5pdGlhbGl6ZVN1cHBvcnRlZEltYWdlQWRkaXRp
b25hbE1JTUVUeXBlcygpOworICAgIHJldHVybiBzdXBwb3J0ZWRJbWFnZVJlc291cmNlTUlNRVR5
cGVzLT5jb250YWlucyhnZXROb3JtYWxpemVkTUlNRVR5cGUobWltZVR5cGUpKSB8fCBzdXBwb3J0
ZWRJbWFnZUFkZGl0aW9uYWxNSU1FVHlwZXMtPmNvbnRhaW5zKGdldE5vcm1hbGl6ZWRNSU1FVHlw
ZShtaW1lVHlwZSkpOwogfQogCiBib29sIE1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkSW1h
Z2VNSU1FVHlwZUZvckVuY29kaW5nKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCkBAIC02NTEsNiAr
NjczLDE0IEBAIGJvb2wgTUlNRVR5cGVSZWdpc3RyeTo6Y2FuU2hvd01JTUVUeXBlKGMKICAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAKK3ZvaWQgTUlNRVR5cGVSZWdpc3RyeTo6aW5pdGlhbGl6ZVN1cHBv
cnRlZEltYWdlQWRkaXRpb25hbE1JTUVUeXBlc0lmTmVlZGVkKCkKK3sKKyAgICAvLyBSZWluaXRp
YWxpemUgdGhlIHN1cHBvcnRlZEltYWdlQWRkaXRpb25hbE1JTUVUeXBlcyBpZiB0aGV5IGhhdmUg
bm90IGJlZW4gc2V0IG9yIHdlcmUgc2V0IHRvIGFuIGVtcHR5IGxpc3QuCisgICAgaWYgKCFzdXBw
b3J0ZWRJbWFnZUFkZGl0aW9uYWxNSU1FVHlwZXMgfHwgIXN1cHBvcnRlZEltYWdlQWRkaXRpb25h
bE1JTUVUeXBlcy0+aXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisgICAgaW5pdGlhbGl6ZVN1
cHBvcnRlZEltYWdlQWRkaXRpb25hbE1JTUVUeXBlcygpOworfQorCiBjb25zdCBIYXNoU2V0PFN0
cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgTUlNRVR5cGVSZWdpc3RyeTo6Z2V0U3Vw
cG9ydGVkSW1hZ2VNSU1FVHlwZXMoKQogewogICAgIGlmICghc3VwcG9ydGVkSW1hZ2VNSU1FVHlw
ZXMpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5oCShy
ZXZpc2lvbiAyMzcyOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lz
dHJ5LmgJKHdvcmtpbmcgY29weSkKQEAgLTEwOCw2ICsxMDgsOCBAQCBwdWJsaWM6CiAgICAgLy8g
bWFrZXMgdGhpcyB0ZXN0IGlzIGFmdGVyIG1hbnkgb3RoZXIgdGVzdHMgYXJlIGRvbmUgb24gdGhl
IE1JTUUgdHlwZS4KICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBpc1RleHRNSU1FVHlw
ZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKIAorICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemVT
dXBwb3J0ZWRJbWFnZUFkZGl0aW9uYWxNSU1FVHlwZXNJZk5lZWRlZCgpOworCiAgICAgLy8gRklY
TUU6IFdlYktpdCBjb2Rpbmcgc3R5bGUgc2F5cyB3ZSBzaG91bGQgbm90IGhhdmUgdGhlIHdvcmQg
ImdldCIgaW4gdGhlIG5hbWVzIG9mIHRoZXNlIGZ1bmN0aW9ucy4KICAgICAvLyBGSVhNRTogV291
bGQgYmUgbmljZSB0byBmaW5kIGEgd2F5IHRvIGF2b2lkIGV4cG9zaW5nIHRoZXNlIHNldHMsIGV2
ZW4gd29yc2UgZXhwb3Npbmcgbm9uLWNvbnN0IHJlZmVyZW5jZXMuCiAgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiBnZXRT
dXBwb3J0ZWROb25JbWFnZU1JTUVUeXBlcygpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcAkocmV2aXNpb24g
MjM3Mjk1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNv
ZGVyQ0cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTksNyArMTk5LDcgQEAgRW5jb2RlZERhdGFT
dGF0dXMgSW1hZ2VEZWNvZGVyQ0c6OmVuY29kZQogICAgICAgICByZXR1cm4gRW5jb2RlZERhdGFT
dGF0dXM6OkVycm9yOwogCiAgICAgY2FzZSBrQ0dJbWFnZVN0YXR1c0luY29tcGxldGU6IHsKLSAg
ICAgICAgaWYgKCFpc0FsbG93ZWRJbWFnZVVUSSh1dGkpKQorICAgICAgICBpZiAoIWlzQWxsb3dl
ZEltYWdlRm9ybWF0KHV0aSkpCiAgICAgICAgICAgICByZXR1cm4gRW5jb2RlZERhdGFTdGF0dXM6
OkVycm9yOwogCiAgICAgICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IGltYWdlMFByb3Bl
cnRpZXMgPSBhZG9wdENGKENHSW1hZ2VTb3VyY2VDb3B5UHJvcGVydGllc0F0SW5kZXgobV9uYXRp
dmVEZWNvZGVyLmdldCgpLCAwLCBpbWFnZVNvdXJjZU9wdGlvbnMoKS5nZXQoKSkpOwpAQCAtMjEz
LDcgKzIxMyw3IEBAIEVuY29kZWREYXRhU3RhdHVzIEltYWdlRGVjb2RlckNHOjplbmNvZGUKICAg
ICB9CiAKICAgICBjYXNlIGtDR0ltYWdlU3RhdHVzQ29tcGxldGU6Ci0gICAgICAgIGlmICghaXNB
bGxvd2VkSW1hZ2VVVEkodXRpKSkKKyAgICAgICAgaWYgKCFpc0FsbG93ZWRJbWFnZUZvcm1hdCh1
dGkpKQogICAgICAgICAgICAgcmV0dXJuIEVuY29kZWREYXRhU3RhdHVzOjpFcnJvcjsKIAogICAg
ICAgICByZXR1cm4gRW5jb2RlZERhdGFTdGF0dXM6OkNvbXBsZXRlOwpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvVVRJUmVnaXN0cnkuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1VUSVJlZ2lzdHJ5LmNwcAkocmV2
aXNpb24gMjM3Mjk1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvVVRJ
UmVnaXN0cnkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBVU0Uo
Q0cpCiAKKyNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hT
ZXQuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDxJbWFnZUlP
L0ltYWdlSU8uaD4KQEAgLTM4LDEwICszOSwxMCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LUhhc2hTZXQ8U3RyaW5nPiYgYWxsb3dlZEltYWdlVVRJcygpCitjb25zdCBIYXNoU2V0PFN0cmlu
Zz4mIGRlZmF1bHRBbGxvd2VkSW1hZ2VGb3JtYXRzKCkKIHsKICAgICAvLyBDRyBhdCBsZWFzdCBz
dXBwb3J0cyB0aGUgZm9sbG93aW5nIHN0YW5kYXJkIGltYWdlIHR5cGVzOgotICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxIYXNoU2V0PFN0cmluZz4+IHNfYWxsb3dlZEltYWdlVVRJcyA9IHN0ZDo6
aW5pdGlhbGl6ZXJfbGlzdDxTdHJpbmc+IHsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFz
aFNldDxTdHJpbmc+PiBkZWZhdWx0QWxsb3dlZEltYWdlRm9ybWF0cyA9IHN0ZDo6aW5pdGlhbGl6
ZXJfbGlzdDxTdHJpbmc+IHsKICAgICAgICAgImNvbS5jb21wdXNlcnZlLmdpZiIsCiAgICAgICAg
ICJjb20ubWljcm9zb2Z0LmJtcCIsCiAgICAgICAgICJjb20ubWljcm9zb2Z0LmN1ciIsCkBAIC01
OSw3ICs2MCw3IEBAIEhhc2hTZXQ8U3RyaW5nPiYgYWxsb3dlZEltYWdlVVRJcygpCiAgICAgaWYg
KCFjaGVja2VkKSB7CiAgICAgICAgIFJldGFpblB0cjxDRkFycmF5UmVmPiBzeXN0ZW1JbWFnZVVU
SXMgPSBhZG9wdENGKENHSW1hZ2VTb3VyY2VDb3B5VHlwZUlkZW50aWZpZXJzKCkpOwogICAgICAg
ICBDRkluZGV4IGNvdW50ID0gQ0ZBcnJheUdldENvdW50KHN5c3RlbUltYWdlVVRJcy5nZXQoKSk7
Ci0gICAgICAgIGZvciAoYXV0byYgaW1hZ2VVVEkgOiBzX2FsbG93ZWRJbWFnZVVUSXMuZ2V0KCkp
IHsKKyAgICAgICAgZm9yIChhdXRvJiBpbWFnZVVUSSA6IGRlZmF1bHRBbGxvd2VkSW1hZ2VGb3Jt
YXRzLmdldCgpKSB7CiAgICAgICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHN0cmluZyA9
IGltYWdlVVRJLmNyZWF0ZUNGU3RyaW5nKCk7CiAgICAgICAgICAgICBBU1NFUlQoQ0ZBcnJheUNv
bnRhaW5zVmFsdWUoc3lzdGVtSW1hZ2VVVElzLmdldCgpLCBDRlJhbmdlTWFrZSgwLCBjb3VudCks
IHN0cmluZy5nZXQoKSkpOwogICAgICAgICB9CkBAIC02NywxMiArNjgsMzcgQEAgSGFzaFNldDxT
dHJpbmc+JiBhbGxvd2VkSW1hZ2VVVElzKCkKICAgICB9CiAjZW5kaWYKIAotICAgIHJldHVybiBz
X2FsbG93ZWRJbWFnZVVUSXMuZ2V0KCk7CisgICAgcmV0dXJuIGRlZmF1bHRBbGxvd2VkSW1hZ2VG
b3JtYXRzOwogfQogCi1ib29sIGlzQWxsb3dlZEltYWdlVVRJKGNvbnN0IFN0cmluZyYgaW1hZ2VV
VEkpCitzdGF0aWMgSGFzaFNldDxTdHJpbmc+JiBpbnRlcm5hbEFkZGl0aW9uYWxBbGxvd2VkSW1h
Z2VGb3JtYXRzKCkKIHsKLSAgICByZXR1cm4gIWltYWdlVVRJLmlzRW1wdHkoKSAmJiBhbGxvd2Vk
SW1hZ2VVVElzKCkuY29udGFpbnMoaW1hZ2VVVEkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxIYXNoU2V0PFN0cmluZz4+IGFkZGl0aW9uYWxBbGxvd2VkSW1hZ2VGb3JtYXRzOworICAgIHJl
dHVybiBhZGRpdGlvbmFsQWxsb3dlZEltYWdlRm9ybWF0czsKK30KKworY29uc3QgSGFzaFNldDxT
dHJpbmc+JiBhZGRpdGlvbmFsQWxsb3dlZEltYWdlRm9ybWF0cygpCit7CisgICAgcmV0dXJuIGlu
dGVybmFsQWRkaXRpb25hbEFsbG93ZWRJbWFnZUZvcm1hdHMoKTsKK30KKwordm9pZCBzZXRBZGRp
dGlvbmFsQWxsb3dlZEltYWdlRm9ybWF0cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgaW1hZ2VVVElz
KQoreworICAgIC8vIFdlIGFyZSBzdXBwb2VkIHRvIHNldCB0aGUgYWRkaXRpb25hbEFsbG93ZWRJ
bWFnZUZvcm1hdHMgb25seSBvbmNlIGV2ZW4KKyAgICAvLyBpZiBtdWx0aXBsZSBXZWJQYWdlcyBh
cmUgY3JlYXRlZC4KKyAgICBpZiAoIWludGVybmFsQWRkaXRpb25hbEFsbG93ZWRJbWFnZUZvcm1h
dHMoKS5pc0VtcHR5KCkgfHwgaW1hZ2VVVElzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgZm9yIChjb25zdCBhdXRvJiBpbWFnZVVUSSA6IGltYWdlVVRJcykKKyAgICAgICAgaW50
ZXJuYWxBZGRpdGlvbmFsQWxsb3dlZEltYWdlRm9ybWF0cygpLmFkZChpbWFnZVVUSSk7CisKKyAg
ICAvLyBVcGRhdGUgdGhlIGFkZGl0aW9uYWwgTUlNRSB0eXBlcyBpZiB0aGV5IHdlcmUgYWxyZWFk
eSBzZXQuCisgICAgTUlNRVR5cGVSZWdpc3RyeTo6aW5pdGlhbGl6ZVN1cHBvcnRlZEltYWdlQWRk
aXRpb25hbE1JTUVUeXBlc0lmTmVlZGVkKCk7Cit9CisKK2Jvb2wgaXNBbGxvd2VkSW1hZ2VGb3Jt
YXQoY29uc3QgU3RyaW5nJiBpbWFnZVVUSSkKK3sKKyAgICByZXR1cm4gIWltYWdlVVRJLmlzRW1w
dHkoKSAmJiAoZGVmYXVsdEFsbG93ZWRJbWFnZUZvcm1hdHMoKS5jb250YWlucyhpbWFnZVVUSSkg
fHwgYWRkaXRpb25hbEFsbG93ZWRJbWFnZUZvcm1hdHMoKS5jb250YWlucyhpbWFnZVVUSSkpOwog
fQogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9VVElSZWdp
c3RyeS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L1VUSVJlZ2lzdHJ5LmgJKHJldmlzaW9uIDIzNzI5NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL1VUSVJlZ2lzdHJ5LmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMw
LDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1IYXNoU2V0PFN0cmluZz4mIGFsbG93ZWRJ
bWFnZVVUSXMoKTsKLWJvb2wgaXNBbGxvd2VkSW1hZ2VVVEkoY29uc3QgU3RyaW5nJik7Citjb25z
dCBIYXNoU2V0PFN0cmluZz4mIGRlZmF1bHRBbGxvd2VkSW1hZ2VGb3JtYXRzKCk7Citjb25zdCBI
YXNoU2V0PFN0cmluZz4mIGFkZGl0aW9uYWxBbGxvd2VkSW1hZ2VGb3JtYXRzKCk7CitXRUJDT1JF
X0VYUE9SVCB2b2lkIHNldEFkZGl0aW9uYWxBbGxvd2VkSW1hZ2VGb3JtYXRzKGNvbnN0IFZlY3Rv
cjxTdHJpbmc+Jik7Citib29sIGlzQWxsb3dlZEltYWdlRm9ybWF0KGNvbnN0IFN0cmluZyYpOwog
CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjM3Mjk1KQorKysgU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw1NCBAQAorMjAxOC0xMC0xOSAgU2FpZCBB
Ym91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBhbiBT
UEkgdG8gYWxsb3cgV2ViVmlldyBjbGllbnRzIHRvIGFkZCBhZGRpdGlvbmFsIHN1cHBvcnRlZCBp
bWFnZSBmb3JtYXRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xOTA0NTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFBsYXRmb3JtL21hYy9TdHJpbmdVdGlsaXRpZXMuaDoKKyAgICAgICAgKiBQbGF0Zm9y
bS9tYWMvU3RyaW5nVXRpbGl0aWVzLm1tOgorICAgICAgICAoV2ViS2l0Ojp3ZWJDb3JlU3RyaW5n
VmVjdG9yRnJvbU5TU3RyaW5nQXJyYXkpOgorICAgICAgICBBIGhlbHBlciBmdW5jdGlvbiB3aGlj
aCBjb252ZXJ0cyBhbiBOU0FycmF5IG9mIE5TU3RyaW5ncyB0byBhIFZlY3RvciBvZgorICAgICAg
ICBXVEZTdHJpbmcuCisKKyAgICAgICAgKiBTaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVy
cy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29k
ZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmRl
Y29kZSk6CisgICAgICAgICogU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaDoKKyAg
ICAgICAgSGFuZGxlIGVuY29kaW5nIGFuZCBkZWNvZGluZyB0aGUgQWRkaXRpb25hbEFsbG93ZWRJ
bWFnZUZvcm1hdHMgd2hpY2ggd2lsbAorICAgICAgICBhbGxvdyB0cmFuc2ZlcnJpbmcgaXQgZnJv
bSB0aGUgVUkgcHJvY2VzcyB0byB0aGUgd2ViIHByb2Nlc3MuCisKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmg6CisgICAgICAgIChBUEk6OlBhZ2VDb25maWd1
cmF0aW9uOjphZGRpdGlvbmFsQWxsb3dlZEltYWdlRm9ybWF0cyBjb25zdCk6CisgICAgICAgIChB
UEk6OlBhZ2VDb25maWd1cmF0aW9uOjpzZXRBZGRpdGlvbmFsQWxsb3dlZEltYWdlRm9ybWF0cyk6
CisgICAgICAgIFN0b3JlIHRoZSBBZGRpdGlvbmFsQWxsb3dlZEltYWdlRm9ybWF0cyBpbiB0aGUg
QVBJUGFnZUNvbmZpZ3VyYXRpb24KKyAgICAgICAgd2hpY2ggaXMgdXNlZCB3aGVuIGNyZWF0aW5n
IHRoZSBXZWJQYWdlUHJveHkgaW4gdGhlIFVJUG9yY2Vzcy4KKworICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2luaXRpYWxp
emVXaXRoQ29uZmlndXJhdGlvbjpdKToKKyAgICAgICAgU2V0IHRoZSB2YWx1ZSBvZiBBZGRpdGlv
bmFsQWxsb3dlZEltYWdlRm9ybWF0cyBmcm9tIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24KKyAgICAg
ICAgdG8gdGhlIEFQSVBhZ2VDb25maWd1cmF0aW9uLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1tOgorICAgICAgICAoLVtXS1dlYlZpZXdD
b25maWd1cmF0aW9uIGNvcHlXaXRoWm9uZTpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3Q29uZmln
dXJhdGlvbiBfYWRkaXRpb25hbEFsbG93ZWRJbWFnZUZvcm1hdHNdKToKKyAgICAgICAgKC1bV0tX
ZWJWaWV3Q29uZmlndXJhdGlvbiBfc2V0QWRkaXRpb25hbEFsbG93ZWRJbWFnZUZvcm1hdHM6XSk6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJp
dmF0ZS5oOgorICAgICAgICBTZXR0ZXIvR2V0dGVyIGZvciB0aGUgYWRkaXRpb25hbEFsbG93ZWRJ
bWFnZUZvcm1hdHMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjcmVhdGlvblBhcmFtZXRlcnMpOgorICAgICAg
ICBDb3B5IHRoZSBhZGRpdGlvbmFsQWxsb3dlZEltYWdlRm9ybWF0cyBmcm9tIEFQSVBhZ2VDb25m
aWd1cmF0aW9uIHRvIAorICAgICAgICBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLgorCisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICBEZWxldGUgdW5pbXBsZW1l
bnRlZCBmdW5jdGlvbi4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6V2ViUGFnZSk6CisgICAgICAgIENvcHkgdGhl
IGFkZGl0aW9uYWxBbGxvd2VkSW1hZ2VGb3JtYXRzIGZyb20gV2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVycyB0bworICAgICAgICBXZWJDb3JlLgorCiAyMDE4LTEwLTE5ICBBbGV4IENocmlzdGVuc2Vu
ICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgSW50cm9kdWNlIENvbXBsZXRp
b25IYW5kbGVyLWJhc2VkIEFzeW5jIElQQyBtZXNzYWdlcyB3aXRoIHJlcGxpZXMKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vbWFjL1N0cmluZ1V0aWxpdGllcy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vbWFjL1N0cmluZ1V0aWxpdGllcy5oCShyZXZpc2lvbiAy
MzcyOTUpCisrKyBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL21hYy9TdHJpbmdVdGlsaXRpZXMuaAko
d29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsOCBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIE5TU3Ry
aW5nICpuc1N0cmluZ0Zyb21XZWJDb3JlU3RyaW5nKGNvbnN0IFN0cmluZyYpOwogTlNTdHJpbmcg
KmZvcm1hdHRlZFBob25lTnVtYmVyU3RyaW5nKE5TU3RyaW5nICpvcmlnaW5hbFBob25lTnVtYmVy
KTsKIAorVmVjdG9yPFN0cmluZz4gd2ViQ29yZVN0cmluZ1ZlY3RvckZyb21OU1N0cmluZ0FycmF5
KE5TQXJyYXk8TlNTdHJpbmcgKj4gKik7CisKICNlbmRpZiAvLyBkZWZpbmVkKF9fT0JKQ19fKQog
CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL21hYy9TdHJpbmdVdGlsaXRpZXMubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9QbGF0Zm9ybS9tYWMvU3RyaW5nVXRpbGl0aWVz
Lm1tCShyZXZpc2lvbiAyMzcyOTUpCisrKyBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL21hYy9TdHJp
bmdVdGlsaXRpZXMubW0JKHdvcmtpbmcgY29weSkKQEAgLTgyLDQgKzgyLDE1IEBAIE5TU3RyaW5n
ICpmb3JtYXR0ZWRQaG9uZU51bWJlclN0cmluZyhOU1MKIAogI2VuZGlmIC8vIEVOQUJMRShURUxF
UEhPTkVfTlVNQkVSX0RFVEVDVElPTikgJiYgUExBVEZPUk0oTUFDKQogCitWZWN0b3I8U3RyaW5n
PiB3ZWJDb3JlU3RyaW5nVmVjdG9yRnJvbU5TU3RyaW5nQXJyYXkoTlNBcnJheTxOU1N0cmluZyAq
PiAqbnNTdHJpbmdBcnJheSkKK3sKKyAgICBWZWN0b3I8U3RyaW5nPiBzdHJpbmdWZWN0b3I7Cisg
ICAgc3RyaW5nVmVjdG9yLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoW25zU3RyaW5nQXJyYXkgY291
bnRdKTsKKworICAgIGZvciAoTlNTdHJpbmcgKm5zU3RyaW5nIGluIG5zU3RyaW5nQXJyYXkpCisg
ICAgICAgIHN0cmluZ1ZlY3Rvci51bmNoZWNrZWRBcHBlbmQobnNTdHJpbmcpOworCisgICAgcmV0
dXJuIHN0cmluZ1ZlY3RvcjsKK30KKwogfQpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
UGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAJKHJldmlzaW9uIDIzNzI5NSkKKysr
IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC05Niw2ICs5Niw3IEBAIHZvaWQgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVy
czo6ZW5jb2RlKEkKICNlbmRpZgogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGVuY29kZXIgPDwg
c21hcnRJbnNlcnREZWxldGVFbmFibGVkOworICAgIGVuY29kZXIgPDwgYWRkaXRpb25hbEFsbG93
ZWRJbWFnZUZvcm1hdHM7CiAjZW5kaWYKICAgICBlbmNvZGVyIDw8IGFwcGxlTWFpbFBhZ2luYXRp
b25RdWlya0VuYWJsZWQ7CiAgICAgZW5jb2RlciA8PCBhcHBsZU1haWxMaW5lc0NsYW1wRW5hYmxl
ZDsKQEAgLTI2OSw2ICsyNzAsOCBAQCBzdGQ6Om9wdGlvbmFsPFdlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnM+CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJh
bWV0ZXJzLnNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLmFkZGl0aW9uYWxBbGxv
d2VkSW1hZ2VGb3JtYXRzKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICNlbmRpZgog
CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLmFwcGxlTWFpbFBhZ2luYXRpb25R
dWlya0VuYWJsZWQpKQpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9u
UGFyYW1ldGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VD
cmVhdGlvblBhcmFtZXRlcnMuaAkocmV2aXNpb24gMjM3Mjk1KQorKysgU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTMs
NiArMTUzLDcgQEAgc3RydWN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgewogI2VuZGlmCiAj
aWYgUExBVEZPUk0oQ09DT0EpCiAgICAgYm9vbCBzbWFydEluc2VydERlbGV0ZUVuYWJsZWQ7Cisg
ICAgVmVjdG9yPFN0cmluZz4gYWRkaXRpb25hbEFsbG93ZWRJbWFnZUZvcm1hdHM7CiAjZW5kaWYK
ICAgICBib29sIGFwcGxlTWFpbFBhZ2luYXRpb25RdWlya0VuYWJsZWQ7CiAgICAgYm9vbCBhcHBs
ZU1haWxMaW5lc0NsYW1wRW5hYmxlZDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcAkocmV2aXNpb24gMjM3Mjk1KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjM3MSw2ICs2MzcxLDcgQEAg
V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyBXZWJQYWdlUHJveHk6OgogCiAjaWYgUExBVEZPUk0o
Q09DT0EpCiAgICAgcGFyYW1ldGVycy5zbWFydEluc2VydERlbGV0ZUVuYWJsZWQgPSBtX2lzU21h
cnRJbnNlcnREZWxldGVFbmFibGVkOworICAgIHBhcmFtZXRlcnMuYWRkaXRpb25hbEFsbG93ZWRJ
bWFnZUZvcm1hdHMgPSBtX2NvbmZpZ3VyYXRpb24tPmFkZGl0aW9uYWxBbGxvd2VkSW1hZ2VGb3Jt
YXRzKCk7CiAjZW5kaWYKICAgICBwYXJhbWV0ZXJzLnNob3VsZFNjYWxlVmlld1RvRml0RG9jdW1l
bnQgPSBtX3Nob3VsZFNjYWxlVmlld1RvRml0RG9jdW1lbnQ7CiAgICAgcGFyYW1ldGVycy51c2Vy
SW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uID0gcGFnZUNsaWVudCgpLnVzZXJJbnRlcmZhY2VMYXlv
dXREaXJlY3Rpb24oKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
CShyZXZpc2lvbiAyMzcyOTUpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaAkod29ya2luZyBjb3B5KQpAQCAtMTM2MCwxMCArMTM2MCw2IEBAIHB1YmxpYzoKIAogICAg
IFdlYkNvcmU6OkludFJlY3Qgc3luY1Jvb3RWaWV3VG9TY3JlZW4oY29uc3QgV2ViQ29yZTo6SW50
UmVjdCYgdmlld1JlY3QpOwogCi0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgVmVjdG9yPFN0cmlu
Zz4gbWVkaWFNSU1FVHlwZXMoKTsKLSNlbmRpZgotCiBwcml2YXRlOgogICAgIFdlYlBhZ2VQcm94
eShQYWdlQ2xpZW50JiwgV2ViUHJvY2Vzc1Byb3h5JiwgdWludDY0X3QgcGFnZUlELCBSZWY8QVBJ
OjpQYWdlQ29uZmlndXJhdGlvbj4mJik7CiAgICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemUoKTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmln
dXJhdGlvbi5oCShyZXZpc2lvbiAyMzcyOTUpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMTEwLDYgKzExMCwx
MSBAQCBwdWJsaWM6CiAgICAgY29uc3QgV1RGOjpTdHJpbmcmIG92ZXJyaWRlQ29udGVudFNlY3Vy
aXR5UG9saWN5KCkgY29uc3QgeyByZXR1cm4gbV9vdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGlj
eTsgfQogICAgIHZvaWQgc2V0T3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3koY29uc3QgV1RG
OjpTdHJpbmcmIG92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5KSB7IG1fb3ZlcnJpZGVDb250
ZW50U2VjdXJpdHlQb2xpY3kgPSBvdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeTsgfQogCisj
aWYgUExBVEZPUk0oQ09DT0EpCisgICAgY29uc3QgV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+JiBh
ZGRpdGlvbmFsQWxsb3dlZEltYWdlRm9ybWF0cygpIGNvbnN0IHsgcmV0dXJuIG1fYWRkaXRpb25h
bEFsbG93ZWRJbWFnZUZvcm1hdHM7IH0KKyAgICB2b2lkIHNldEFkZGl0aW9uYWxBbGxvd2VkSW1h
Z2VGb3JtYXRzKFdURjo6VmVjdG9yPFdURjo6U3RyaW5nPiYmIGFkZGl0aW9uYWxBbGxvd2VkSW1h
Z2VGb3JtYXRzKSB7IG1fYWRkaXRpb25hbEFsbG93ZWRJbWFnZUZvcm1hdHMgPSBXVEZNb3ZlKGFk
ZGl0aW9uYWxBbGxvd2VkSW1hZ2VGb3JtYXRzKTsgfQorI2VuZGlmCisKICNpZiBFTkFCTEUoQVBQ
TElDQVRJT05fTUFOSUZFU1QpCiAgICAgQXBwbGljYXRpb25NYW5pZmVzdCogYXBwbGljYXRpb25N
YW5pZmVzdCgpIGNvbnN0OwogICAgIHZvaWQgc2V0QXBwbGljYXRpb25NYW5pZmVzdChBcHBsaWNh
dGlvbk1hbmlmZXN0Kik7CkBAIC0xNDYsNiArMTUxLDEwIEBAIHByaXZhdGU6CiAKICAgICBXVEY6
OlN0cmluZyBtX292ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5OwogCisjaWYgUExBVEZPUk0o
Q09DT0EpCisgICAgV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+IG1fYWRkaXRpb25hbEFsbG93ZWRJ
bWFnZUZvcm1hdHM7CisjZW5kaWYKKwogI2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkK
ICAgICBSZWZQdHI8QXBwbGljYXRpb25NYW5pZmVzdD4gbV9hcHBsaWNhdGlvbk1hbmlmZXN0Owog
I2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXcubW0JKHJldmlzaW9uIDIzNzI5NSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTQ2LDYgKzQ2LDcgQEAKICNp
bXBvcnQgIlJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLmgiCiAjaW1wb3J0ICJSZW1vdGVPYmpl
Y3RSZWdpc3RyeS5oIgogI2ltcG9ydCAiUmVtb3RlT2JqZWN0UmVnaXN0cnlNZXNzYWdlcy5oIgor
I2ltcG9ydCAiU3RyaW5nVXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJVSURlbGVnYXRlLmgiCiAjaW1w
b3J0ICJVc2VyTWVkaWFQcm9jZXNzTWFuYWdlci5oIgogI2ltcG9ydCAiVmVyc2lvbkNoZWNrcy5o
IgpAQCAtNTY3LDYgKzU2OCw4IEBAIC0gKHZvaWQpX2luaXRpYWxpemVXaXRoQ29uZmlndXJhdGlv
bjooV0sKICAgICAgICAgaWYgKGdyb3VwSWRlbnRpZmllci5sZW5ndGgpCiAgICAgICAgICAgICBw
YWdlQ29uZmlndXJhdGlvbi0+c2V0UGFnZUdyb3VwKFdlYktpdDo6V2ViUGFnZUdyb3VwOjpjcmVh
dGUoY29uZmlndXJhdGlvbi5fZ3JvdXBJZGVudGlmaWVyKS5wdHIoKSk7CiAgICAgfQorICAgIAor
ICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRBZGRpdGlvbmFsQWxsb3dlZEltYWdlRm9ybWF0cyhX
ZWJLaXQ6OndlYkNvcmVTdHJpbmdWZWN0b3JGcm9tTlNTdHJpbmdBcnJheShbX2NvbmZpZ3VyYXRp
b24gX2FkZGl0aW9uYWxBbGxvd2VkSW1hZ2VGb3JtYXRzXSkpOwogCiAgICAgcGFnZUNvbmZpZ3Vy
YXRpb24tPnByZWZlcmVuY2VWYWx1ZXMoKS5zZXQoV2ViS2l0OjpXZWJQcmVmZXJlbmNlc0tleTo6
c3VwcHJlc3Nlc0luY3JlbWVudGFsUmVuZGVyaW5nS2V5KCksIFdlYktpdDo6V2ViUHJlZmVyZW5j
ZXNTdG9yZTo6VmFsdWUoISFbX2NvbmZpZ3VyYXRpb24gc3VwcHJlc3Nlc0luY3JlbWVudGFsUmVu
ZGVyaW5nXSkpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3Q29uZmlndXJhdGlvbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbQkocmV2aXNpb24gMjM3Mjk1
KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3Vy
YXRpb24ubW0JKHdvcmtpbmcgY29weSkKQEAgLTE2MSw2ICsxNjEsNyBAQCBzdGF0aWMgX1dLRHJh
Z0xpZnREZWxheSB0b0RyYWdMaWZ0RGVsYXkoCiAgICAgQk9PTCBfZHJhd3NCYWNrZ3JvdW5kOwog
CiAgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBfbWVkaWFDb250ZW50VHlwZXNSZXF1aXJpbmdIYXJk
d2FyZVN1cHBvcnQ7CisgICAgUmV0YWluUHRyPE5TQXJyYXk8TlNTdHJpbmcgKj4+IF9hZGRpdGlv
bmFsQWxsb3dlZEltYWdlRm9ybWF0czsKIH0KIAogLSAoaW5zdGFuY2V0eXBlKWluaXQKQEAgLTM5
NCw2ICszOTUsNyBAQCAtIChpZCljb3B5V2l0aFpvbmU6KE5TWm9uZSAqKXpvbmUKICAgICBjb25m
aWd1cmF0aW9uLT5fbmVlZHNTdG9yYWdlQWNjZXNzRnJvbUZpbGVVUkxzUXVpcmsgPSBzZWxmLT5f
bmVlZHNTdG9yYWdlQWNjZXNzRnJvbUZpbGVVUkxzUXVpcms7CiAKICAgICBjb25maWd1cmF0aW9u
LT5fbWVkaWFDb250ZW50VHlwZXNSZXF1aXJpbmdIYXJkd2FyZVN1cHBvcnQgPSBhZG9wdE5TKFtz
ZWxmLl9tZWRpYUNvbnRlbnRUeXBlc1JlcXVpcmluZ0hhcmR3YXJlU3VwcG9ydCBjb3B5V2l0aFpv
bmU6em9uZV0pOworICAgIGNvbmZpZ3VyYXRpb24tPl9hZGRpdGlvbmFsQWxsb3dlZEltYWdlRm9y
bWF0cyA9IGFkb3B0TlMoW3NlbGYtPl9hZGRpdGlvbmFsQWxsb3dlZEltYWdlRm9ybWF0cyBjb3B5
V2l0aFpvbmU6em9uZV0pOwogICAgIGNvbmZpZ3VyYXRpb24tPl9sZWdhY3lFbmNyeXB0ZWRNZWRp
YUFQSUVuYWJsZWQgPSBzZWxmLT5fbGVnYWN5RW5jcnlwdGVkTWVkaWFBUElFbmFibGVkOwogICAg
IGNvbmZpZ3VyYXRpb24tPl9hbGxvd01lZGlhQ29udGVudFR5cGVzUmVxdWlyaW5nSGFyZHdhcmVT
dXBwb3J0QXNGYWxsYmFjayA9IHNlbGYtPl9hbGxvd01lZGlhQ29udGVudFR5cGVzUmVxdWlyaW5n
SGFyZHdhcmVTdXBwb3J0QXNGYWxsYmFjazsKIApAQCAtOTkwLDYgKzk5MiwxNiBAQCAtICh2b2lk
KV9zZXRNZWRpYUNvbnRlbnRUeXBlc1JlcXVpcmluZ0hhCiAgICAgX21lZGlhQ29udGVudFR5cGVz
UmVxdWlyaW5nSGFyZHdhcmVTdXBwb3J0ID0gYWRvcHROUyhbbWVkaWFDb250ZW50VHlwZXNSZXF1
aXJpbmdIYXJkd2FyZVN1cHBvcnQgY29weV0pOwogfQogCistIChOU0FycmF5PE5TU3RyaW5nICo+
ICopX2FkZGl0aW9uYWxBbGxvd2VkSW1hZ2VGb3JtYXRzCit7CisgICAgcmV0dXJuIF9hZGRpdGlv
bmFsQWxsb3dlZEltYWdlRm9ybWF0cy5nZXQoKTsKK30KKworLSAodm9pZClfc2V0QWRkaXRpb25h
bEFsbG93ZWRJbWFnZUZvcm1hdHM6KE5TQXJyYXk8TlNTdHJpbmcgKj4gKilhZGRpdGlvbmFsQWxs
b3dlZEltYWdlRm9ybWF0cworeworICAgIF9hZGRpdGlvbmFsQWxsb3dlZEltYWdlRm9ybWF0cyA9
IGFkb3B0TlMoW2FkZGl0aW9uYWxBbGxvd2VkSW1hZ2VGb3JtYXRzIGNvcHldKTsKK30KKwogLSAo
dm9pZClfc2V0TGVnYWN5RW5jcnlwdGVkTWVkaWFBUElFbmFibGVkOihCT09MKWVuYWJsZWQKIHsK
ICAgICBfbGVnYWN5RW5jcnlwdGVkTWVkaWFBUElFbmFibGVkID0gZW5hYmxlZDsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJp
dmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oCShyZXZpc2lvbiAyMzcyOTUpCisrKyBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvblByaXZh
dGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTAxLDYgKzEwMSw3IEBAIHR5cGVkZWYgTlNfRU5VTShO
U1VJbnRlZ2VyLCBfV0tEcmFnTGlmdEQKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3Nl
dE1lZGlhQ29udGVudFR5cGVzUmVxdWlyaW5nSGFyZHdhcmVTdXBwb3J0OikgTlNTdHJpbmcgKl9t
ZWRpYUNvbnRlbnRUeXBlc1JlcXVpcmluZ0hhcmR3YXJlU3VwcG9ydCBXS19BUElfQVZBSUxBQkxF
KG1hY29zeCgxMC4xMyksIGlvcygxMS4wKSk7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVy
PV9zZXRMZWdhY3lFbmNyeXB0ZWRNZWRpYUFQSUVuYWJsZWQ6KSBCT09MIF9sZWdhY3lFbmNyeXB0
ZWRNZWRpYUFQSUVuYWJsZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTMpLCBpb3MoMTEu
MCkpOwogQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0QWxsb3dNZWRpYUNvbnRlbnRU
eXBlc1JlcXVpcmluZ0hhcmR3YXJlU3VwcG9ydEFzRmFsbGJhY2s6KSBCT09MIF9hbGxvd01lZGlh
Q29udGVudFR5cGVzUmVxdWlyaW5nSGFyZHdhcmVTdXBwb3J0QXNGYWxsYmFjayBXS19BUElfQVZB
SUxBQkxFKG1hY29zeCgxMC4xMyksIGlvcygxMS4wKSk7CitAcHJvcGVydHkgKG5vbmF0b21pYywg
Y29weSwgc2V0dGVyPV9zZXRBZGRpdGlvbmFsQWxsb3dlZEltYWdlRm9ybWF0czopIE5TQXJyYXk8
TlNTdHJpbmcgKj4gKl9hZGRpdGlvbmFsQWxsb3dlZEltYWdlRm9ybWF0cyBXS19BUElfQVZBSUxB
QkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIAogQGVuZAogCkluZGV4
OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkocmV2aXNp
b24gMjM3Mjk1KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI0Niw2ICsyNDYsNyBAQAogI2luY2x1ZGUgIlZpZGVvRnVs
bHNjcmVlbk1hbmFnZXIuaCIKICNpbmNsdWRlICJXS1N0cmluZ0NGLmgiCiAjaW5jbHVkZSA8V2Vi
Q29yZS9MZWdhY3lXZWJBcmNoaXZlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9VVElSZWdpc3RyeS5o
PgogI2luY2x1ZGUgPHd0Zi9NYWNoU2VuZFJpZ2h0Lmg+CiAjZW5kaWYKIApAQCAtNTkyLDYgKzU5
Myw3IEBAIFdlYlBhZ2U6OldlYlBhZ2UodWludDY0X3QgcGFnZUlELCBXZWJQYWcKICNpZiBQTEFU
Rk9STShDT0NPQSkKICAgICBtX3BhZ2UtPnNldHRpbmdzKCkuc2V0Q29udGVudERpc3Bvc2l0aW9u
QXR0YWNobWVudFNhbmRib3hFbmFibGVkKHRydWUpOwogICAgIHNldFNtYXJ0SW5zZXJ0RGVsZXRl
RW5hYmxlZChwYXJhbWV0ZXJzLnNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCk7CisgICAgV2ViQ29y
ZTo6c2V0QWRkaXRpb25hbEFsbG93ZWRJbWFnZUZvcm1hdHMocGFyYW1ldGVycy5hZGRpdGlvbmFs
QWxsb3dlZEltYWdlRm9ybWF0cyk7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktF
UikKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDIzNzMwNykKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDE4IEBACisyMDE4LTEwLTE5ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3
YUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGFuIFNQSSB0byBhbGxvdyBXZWJWaWV3IGNsaWVu
dHMgdG8gYWRkIGFkZGl0aW9uYWwgc3VwcG9ydGVkIGltYWdlIGZvcm1hdHMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDQ1NAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Qgb3BlbmluZyBhIFRHQSBp
bWFnZSBpbiBXZWJWaWV3IHdoaWNoIGlzIG5vdCBhbGxvd2VkIGJ5IGRlZmF1bHQuIFRoZQorICAg
ICAgICBUR0EgZm9ybWF0IHdpbGwgYmUgYWxsb3dlZCB0aHJvdWdoIFdLV2ViVmlld0NvbmZpZ3Vy
YXRpb24uCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hLzEwMHgxMDAtcmVkLnRnYTogQWRkZWQuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9BZGRpdGlvbmFsQWxsb3dlZEltYWdlRm9ybWF0cy5tbTogQWRkZWQuCisg
ICAgICAgIChURVNUKToKKwogMjAxOC0xMC0xOSAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVo
QGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBbRGF0YWxpc3RdIENhbid0IHBpY2sgZGF0YWxp
c3Qgc3VnZ2VzdGlvbnMgaW4gYSBzdG9jayBXS1dlYlZpZXcKSW5kZXg6IFRvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCShyZXZpc2lvbiAyMzcyOTUpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJL
aXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjQxLDYg
KzI0MSw4IEBACiAJCTUzNjc3MDM2MUNDODFCNjEwMEQ0MjVCMSAvKiBXZWJTY3JpcHRPYmplY3RE
ZXNjcmlwdGlvbi5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUzNjc3MDM1MUNDODEyRjkwMEQ0MjVCMSAvKiBXZWJTY3JpcHRPYmplY3RE
ZXNjcmlwdGlvbi5odG1sICovOyB9OwogCQk1M0VDMjU0MTFFOTZGRDg3MDAwODMxQjkgLyogUHJp
b3JpdHlRdWV1ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1M0VDMjUzRjFFOTZCQzgwMDAwODMxQjkgLyogUHJpb3JpdHlRdWV1ZS5jcHAgKi87IH07
CiAJCTU1MjI2QTJGMUVCQTQ0QjkwMEMzNkFEMCAvKiBsYXJnZS1yZWQtc3F1YXJlLWltYWdlLmh0
bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTUyMjZBMkUxRUI5NjlCNjAwQzM2QUQwIC8qIGxhcmdlLXJlZC1zcXVhcmUtaW1hZ2UuaHRtbCAq
LzsgfTsKKwkJNTU1ODQ4MUMyMTcxMzE1NzAwRkI3RkZGIC8qIEFkZGl0aW9uYWxBbGxvd2VkSW1h
Z2VGb3JtYXRzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTU1ODQ4MUIyMTcxMzE1NjAwRkI3RkZGIC8qIEFkZGl0aW9uYWxBbGxvd2VkSW1hZ2VGb3Jt
YXRzLm1tICovOyB9OworCQk1NTU4NDgyNTIxNzE4Q0RBMDBGQjdGRkYgLyogMTAweDEwMC1yZWQu
dGdhIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDU1NTg0ODIxMjE3MTVBN0UwMEZCN0ZGRiAvKiAxMDB4MTAwLXJlZC50Z2EgKi87IH07CiAJCTU1
OTdGODM2MUQ5NTk2QzgwMDY2QkMyMSAvKiBTeW5jaHJvbml6ZWRGaXhlZFF1ZXVlLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1OTdGODM0MUQ5NTk2
QzgwMDY2QkMyMSAvKiBTeW5jaHJvbml6ZWRGaXhlZFF1ZXVlLmNwcCAqLzsgfTsKIAkJNTcxNEVD
QjkxQ0E4QjVCMDAwMDUxQUM4IC8qIERvd25sb2FkUmVxdWVzdE9yaWdpbmFsVVJMLmh0bWwgaW4g
Q29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTcxNEVD
QjgxQ0E4QjU4ODAwMDUxQUM4IC8qIERvd25sb2FkUmVxdWVzdE9yaWdpbmFsVVJMLmh0bWwgKi87
IH07CiAJCTU3MTRFQ0JCMUNBOEJGRTQwMDA1MUFDOCAvKiBEb3dubG9hZFJlcXVlc3RPcmlnaW5h
bFVSTEZyYW1lLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTcxNEVDQkExQ0E4QkZEMTAwMDUxQUM4IC8qIERvd25sb2FkUmVxdWVzdE9y
aWdpbmFsVVJMRnJhbWUuaHRtbCAqLzsgfTsKQEAgLTk0Myw2ICs5NDUsNyBAQAogCQkJZHN0UGF0
aCA9IFRlc3RXZWJLaXRBUEkucmVzb3VyY2VzOwogCQkJZHN0U3ViZm9sZGVyU3BlYyA9IDc7CiAJ
CQlmaWxlcyA9ICgKKwkJCQk1NTU4NDgyNTIxNzE4Q0RBMDBGQjdGRkYgLyogMTAweDEwMC1yZWQu
dGdhIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCTFBOUU1MkM5MTNFNjVFRjQwMDY5MTdGNSAv
KiAxOC1jaGFyYWN0ZXJzLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJMzc5MDI4Qjkx
NEZBQzI0QzAwN0U2QjQzIC8qIGFjY2VwdHNGaXJzdE1vdXNlLmh0bWwgaW4gQ29weSBSZXNvdXJj
ZXMgKi8sCiAJCQkJMUMyQjgxODcxQzg5MjVBMDAwQTU1MjlGIC8qIEFoZW0udHRmIGluIENvcHkg
UmVzb3VyY2VzICovLApAQCAtMTQzNCw3ICsxNDM3LDYgQEAKIAkJMzdFMTA2NEIxNjk3NjdGNzAw
Qjc4QkQwIC8qIERPTUhUTUxUYWJsZUNlbGxFbGVtZW50Q2VsbEFib3ZlLmh0bWwgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0Lmh0bWw7IHBhdGggPSBET01IVE1MVGFibGVDZWxsRWxlbWVudENlbGxBYm92ZS5odG1s
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzN0UzOEMzMzE2OUI3RDAxMDA4NEMyOEMg
LyogV2ViVmlld0RpZFJlbW92ZUZyYW1lRnJvbUhpZXJhcmNoeS5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYlZpZXdEaWRSZW1vdmVGcmFtZUZyb21IaWVyYXJj
aHkubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3RTdERDYzMUVBMDZGRjIwMDlC
Mzk2RCAvKiBBZGRpdGlvbmFsUmVhZEFjY2Vzc0FsbG93ZWRVUkxzLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQWRkaXRpb25hbFJlYWRBY2Nlc3NBbGxvd2VkVVJM
cy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzdFN0RENjUxRUEwNzE1QjAwOUIz
OTZEIC8qIEFkZGl0aW9uYWxSZWFkQWNjZXNzQWxsb3dlZFVSTHNQcm90b2NvbC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBZGRpdGlvbmFsUmVhZEFjY2Vzc0FsbG93ZWRVUkxz
UHJvdG9jb2wuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzdFN0RENjYxRUEwNzFG
MzAwOUIzOTZEIC8qIEFkZGl0aW9uYWxSZWFkQWNjZXNzQWxsb3dlZFVSTHNQbHVnaW4ubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBZGRpdGlvbmFsUmVhZEFjY2Vz
c0FsbG93ZWRVUkxzUGx1Z2luLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzN0ZC
NzI5NTFEQjJFODJGMDBFNDFCRTQgLyogQ29udGV4dE1lbnVEZWZhdWx0SXRlbXNIYXZlVGFncy5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IENvbnRleHRNZW51RGVm
YXVsdEl0ZW1zSGF2ZVRhZ3MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTNGMUI1
MjY4MUQzRDcxMjkwMDhENjBDNCAvKiBGdWxsc2NyZWVuTGF5b3V0Q29uc3RyYWludHMubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBGdWxsc2NyZWVuTGF5b3V0Q29u
c3RyYWludHMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNTQ2LDYgKzE1NDgs
OSBAQAogCQk1MzY3NzAzNTFDQzgxMkY5MDBENDI1QjEgLyogV2ViU2NyaXB0T2JqZWN0RGVzY3Jp
cHRpb24uaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9IFdlYlNjcmlwdE9iamVjdERl
c2NyaXB0aW9uLmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzRUMyNTNGMUU5
NkJDODAwMDA4MzFCOSAvKiBQcmlvcml0eVF1ZXVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFByaW9yaXR5UXVldWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1NTIyNkEyRTFFQjk2OUI2MDBDMzZBRDAgLyogbGFyZ2UtcmVkLXNxdWFyZS1pbWFn
ZS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gImxhcmdlLXJlZC1zcXVhcmUtaW1h
Z2UuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU1NTg0ODFCMjE3MTMxNTYw
MEZCN0ZGRiAvKiBBZGRpdGlvbmFsQWxsb3dlZEltYWdlRm9ybWF0cy5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEFkZGl0aW9uYWxBbGxvd2VkSW1hZ2VGb3JtYXRz
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1NTU4NDgxRjIxNzEzNTA4MDBGQjdG
RkYgLyogQWRkaXRpb25hbFJlYWRBY2Nlc3NBbGxvd2VkVVJMc1Byb3RvY29sLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFkZGl0aW9uYWxSZWFkQWNjZXNzQWxsb3dlZFVSTHNQ
cm90b2NvbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1NTU4NDgyMTIxNzE1QTdF
MDBGQjdGRkYgLyogMTAweDEwMC1yZWQudGdhICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gZmlsZTsgcGF0aCA9ICIxMDB4MTAwLXJlZC50Z2EiOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NTk3RjgzNDFEOTU5NkM4MDA2NkJDMjEgLyogU3lu
Y2hyb25pemVkRml4ZWRRdWV1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBTeW5jaHJvbml6ZWRGaXhlZFF1ZXVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTcxNEVDQjgxQ0E4QjU4ODAwMDUxQUM4IC8qIERvd25sb2FkUmVxdWVzdE9yaWdpbmFs
VVJMLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSBEb3dubG9hZFJlcXVlc3RPcmln
aW5hbFVSTC5odG1sOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NzE0RUNCQTFDQThC
RkQxMDAwNTFBQzggLyogRG93bmxvYWRSZXF1ZXN0T3JpZ2luYWxVUkxGcmFtZS5odG1sICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dC5odG1sOyBwYXRoID0gRG93bmxvYWRSZXF1ZXN0T3JpZ2luYWxVUkxGcmFtZS5o
dG1sOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjMxMCw5ICsyMzE1LDEwIEBACiAJ
CQkJQTE2RjY2QjgxQzQwRTlFMTAwQkQ0RDI0IC8qIFJlc291cmNlcyAqLywKIAkJCQk1Q0VBQjVE
RjFGQTkzN0NCMDBBNzdGQUEgLyogX1dLSW5wdXREZWxlZ2F0ZS5tbSAqLywKIAkJCQk3Q0VGQTk2
NDFBQzBCOUUyMDBCOTEwRkQgLyogX1dLVXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZS5tbSAqLywK
KwkJCQk1NTU4NDgxQjIxNzEzMTU2MDBGQjdGRkYgLyogQWRkaXRpb25hbEFsbG93ZWRJbWFnZUZv
cm1hdHMubW0gKi8sCiAJCQkJMzdFN0RENjMxRUEwNkZGMjAwOUIzOTZEIC8qIEFkZGl0aW9uYWxS
ZWFkQWNjZXNzQWxsb3dlZFVSTHMubW0gKi8sCiAJCQkJMzdFN0RENjYxRUEwNzFGMzAwOUIzOTZE
IC8qIEFkZGl0aW9uYWxSZWFkQWNjZXNzQWxsb3dlZFVSTHNQbHVnaW4ubW0gKi8sCi0JCQkJMzdF
N0RENjUxRUEwNzE1QjAwOUIzOTZEIC8qIEFkZGl0aW9uYWxSZWFkQWNjZXNzQWxsb3dlZFVSTHNQ
cm90b2NvbC5oICovLAorCQkJCTU1NTg0ODFGMjE3MTM1MDgwMEZCN0ZGRiAvKiBBZGRpdGlvbmFs
UmVhZEFjY2Vzc0FsbG93ZWRVUkxzUHJvdG9jb2wuaCAqLywKIAkJCQlBMURGNzQzMDFDNDFCNjU4
MDBBMkY0RDAgLyogQWx3YXlzUmV2YWxpZGF0ZWRVUkxTY2hlbWVzLm1tICovLAogCQkJCTJERTcx
QUZEMUQ0OUMwQkQwMDkwNDA5NCAvKiBBbmltYXRlZFJlc2l6ZS5tbSAqLywKIAkJCQk2M0Y2Njgy
MDFGOTdDM0FBMDAzMkVFNTEgLyogQXBwbGljYXRpb25NYW5pZmVzdC5tbSAqLywKQEAgLTI2NTEs
NiArMjY1Nyw3IEBACiAJCUExNkY2NkI4MUM0MEU5RTEwMEJENEQyNCAvKiBSZXNvdXJjZXMgKi8g
PSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTU1NTg0ODIxMjE3
MTVBN0UwMEZCN0ZGRiAvKiAxMDB4MTAwLXJlZC50Z2EgKi8sCiAJCQkJQzI1Q0NBMEMxRTUxNDBF
NTAwMjZDQjhBIC8qIEFsbEFoZW0uc3ZnICovLAogCQkJCUY0QTkyMDJFMUZFRTM0QzgwMEY1OTU5
MCAvKiBhcHBsZS1kYXRhLXVybC5odG1sICovLAogCQkJCUY0N0QzMEVCMUVEMjg2MTkwMDA0ODJF
MSAvKiBhcHBsZS5naWYgKi8sCkBAIC0zNzEzLDYgKzM3MjAsNyBAQAogCQkJCTJFMjA1QkE0MUY1
Mjc3NDYwMDU5NTJERCAvKiBBY2Nlc3NpYmlsaXR5VGVzdHNJT1MubW0gaW4gU291cmNlcyAqLywK
IAkJCQk5QkQ1MTExQzFGRThFMTE2MDBEMkI2MzAgLyogQWNjZXNzaW5nUGFzdGVkSW1hZ2UubW0g
aW4gU291cmNlcyAqLywKIAkJCQlGNDVCNjNGRTFGMTlENDEwMDA5RDM4QjkgLyogQWN0aW9uU2hl
ZXRUZXN0cy5tbSBpbiBTb3VyY2VzICovLAorCQkJCTU1NTg0ODFDMjE3MTMxNTcwMEZCN0ZGRiAv
KiBBZGRpdGlvbmFsQWxsb3dlZEltYWdlRm9ybWF0cy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTM3
RTdERDY0MUVBMDZGRjIwMDlCMzk2RCAvKiBBZGRpdGlvbmFsUmVhZEFjY2Vzc0FsbG93ZWRVUkxz
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0E5MDlBN0QxRDg3NzQ4MDAwN0UxMEY4IC8qIEFmZmlu
ZVRyYW5zZm9ybS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBMURGNzQzMjFDNDFCNjU4MDBBMkY0
RDAgLyogQWx3YXlzUmV2YWxpZGF0ZWRVUkxTY2hlbWVzLm1tIGluIFNvdXJjZXMgKi8sCkluZGV4
OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0FkZGl0aW9uYWxBbGxvd2Vk
SW1hZ2VGb3JtYXRzLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvQWRkaXRpb25hbEFsbG93ZWRJbWFnZUZvcm1hdHMubW0JKG5vbmV4aXN0ZW50
KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9BZGRpdGlvbmFsQWxs
b3dlZEltYWdlRm9ybWF0cy5tbQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU5IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0IDxXZWJLaXQvV0tGb3VuZGF0aW9u
Lmg+CisKKyNpZiBXS19BUElfRU5BQkxFRCAmJiBQTEFURk9STShDT0NPQSkKKworI2ltcG9ydCAi
UGxhdGZvcm1VdGlsaXRpZXMuaCIKKyNpbXBvcnQgIlRlc3ROYXZpZ2F0aW9uRGVsZWdhdGUuaCIK
KyNpbXBvcnQgIldLV2ViVmlld0NvbmZpZ3VyYXRpb25FeHRyYXMuaCIKKyNpbXBvcnQgPFdlYktp
dC9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oPgorI2ltcG9ydCA8d3RmL1JldGFpblB0
ci5oPgorCitURVNUKFdlYktpdCwgQWRkaXRpb25hbEFsbG93ZWRJbWFnZUZvcm1hdHMpCit7Cisg
ICAgUmV0YWluUHRyPFdLV2ViVmlld0NvbmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRpb24gPSBhZG9w
dE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIFtjb25maWd1
cmF0aW9uIF9zZXRBZGRpdGlvbmFsQWxsb3dlZEltYWdlRm9ybWF0czpAW0AiY29tLnRydWV2aXNp
b24udGdhLWltYWdlIl1dOworCisgICAgUmV0YWluUHRyPFdLV2ViVmlldz4gd2ViVmlldyA9IGFk
b3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4
MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CisKKyAgICBSZXRh
aW5QdHI8TlNVUkw+IHRlc3RVUkwgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291
cmNlOkAiMTAweDEwMC1yZWQiIHdpdGhFeHRlbnNpb246QCJ0Z2EiIHN1YmRpcmVjdG9yeTpAIlRl
c3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJM
UmVxdWVzdCByZXF1ZXN0V2l0aFVSTDp0ZXN0VVJMLmdldCgpXV07CisgICAgW3dlYlZpZXcgX3Rl
c3Rfd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb25dOworCisgICAgX19ibG9jayBib29sIGlzRG9u
ZSA9IGZhbHNlOworICAgIFt3ZWJWaWV3IF9kb0FmdGVyTmV4dFByZXNlbnRhdGlvblVwZGF0ZTpe
eworICAgICAgICBbd2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6QCJbZG9jdW1lbnQucXVlcnlT
ZWxlY3RvcignaW1nJykud2lkdGhdIiBjb21wbGV0aW9uSGFuZGxlcjpeKGlkIHZhbHVlLCBOU0Vy
cm9yICplcnJvcikgeworICAgICAgICAgICAgQ0dGbG9hdCB3aWR0aCA9IFtbdmFsdWUgb2JqZWN0
QXRJbmRleDowXSBmbG9hdFZhbHVlXTsKKyAgICAgICAgICAgIEVYUEVDVF9FUSh3aWR0aCwgMTAw
KTsKKyAgICAgICAgICAgIGlzRG9uZSA9IHRydWU7CisgICAgICAgIH1dOworICAgIH1dOworICAg
IFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKK30KKworI2VuZGlmCkluZGV4OiBU
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hLzEwMHgxMDAtcmVkLnRnYQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09CkNhbm5vdCBkaXNwbGF5OiBmaWxlIG1hcmtlZCBhcyBhIGJpbmFyeSB0eXBlLgpzdm46
bWltZS10eXBlID0gYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtCgpQcm9wZXJ0eSBjaGFuZ2VzIG9u
OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hLzEwMHgxMDAtcmVkLnRnYQpf
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fCkFkZGVkOiBzdm46bWltZS10eXBlCiMjIC0wLDAgKzEgIyMKK2FwcGxpY2F0aW9u
L29jdGV0LXN0cmVhbQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CgpBQUFLQUFBQUFB
QUFBQUFBWkFCa0FDQW80d0FBLy8vakFBRC8vK01BQVAvLzR3QUEvLy9qQUFELy8rTUFBUC8vNHdB
QS8vL2pBQUQvCi8rTUFBUC8vNHdBQS8vL2pBQUQvLytNQUFQLy80d0FBLy8vakFBRC8vK01BQVAv
LzR3QUEvLy9qQUFELy8rTUFBUC8vNHdBQS8vL2oKQUFELy8rTUFBUC8vNHdBQS8vL2pBQUQvLytN
QUFQLy80d0FBLy8vakFBRC8vK01BQVAvLzR3QUEvLy9qQUFELy8rTUFBUC8vNHdBQQovLy9qQUFE
Ly8rTUFBUC8vNHdBQS8vL2pBQUQvLytNQUFQLy80d0FBLy8vakFBRC8vK01BQVAvLzR3QUEvLy9q
QUFELy8rTUFBUC8vCjR3QUEvLy9qQUFELy8rTUFBUC8vNHdBQS8vL2pBQUQvLytNQUFQLy80d0FB
Ly8vakFBRC8vK01BQVAvLzR3QUEvLy9qQUFELy8rTUEKQVAvLzR3QUEvLy9qQUFELy8rTUFBUC8v
NHdBQS8vL2pBQUQvLytNQUFQLy80d0FBLy8vakFBRC8vK01BQVAvLzR3QUEvLy9qQUFELwovK01B
QVAvLzR3QUEvLy9qQUFELy8rTUFBUC8vNHdBQS8vL2pBQUQvLytNQUFQLy80d0FBLy8vakFBRC8v
K01BQVAvLzR3QUEvLy9qCkFBRC8vK01BQVAvLzR3QUEvLy9qQUFELy8rTUFBUC8vNHdBQS8vL2pB
QUQvLytNQUFQLy80d0FBLy8vakFBRC8vK01BQVAvLzR3QUEKLy8vakFBRC8vK01BQVAvLzR3QUEv
Ly9qQUFELy8rTUFBUC8vNHdBQS8vL2pBQUQvLytNQUFQLy80d0FBLy8vakFBRC8vK01BQVAvLwo0
d0FBLy84PQoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>352840</attachid>
            <date>2018-10-19 17:39:46 -0700</date>
            <delta_ts>2018-10-19 18:19:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190454-20181019173945.patch</filename>
            <type>text/plain</type>
            <size>36518</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzNzMwOCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM3IEBACisyMDE4LTEwLTE5ICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGFuIFNQ
SSB0byBhbGxvdyBXZWJWaWV3IGNsaWVudHMgdG8gYWRkIGFkZGl0aW9uYWwgc3VwcG9ydGVkIGlt
YWdlIGZvcm1hdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE5MDQ1NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEFkZCBhbiBTUEkgdG8gYWxsb3cgYWRkaXRpb25hbCBzdXBwb3J0ZWQgaW1hZ2UgZm9ybWF0
cyBpbiBXZWJWaWV3LiBUaGVzZQorICAgICAgICBhZGRpdGlvbmFsIGZvcm1hdHMgY2FuIGJlIHNl
dCBpbiB0aGUgV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhcyBhbiBOU0FycmF5CisgICAgICAgIG9m
IE5TdHJpbmdzLiBFYWNoIHN0cmluZyByZXByZXNlbnRzIHRoZSBVVEkgb2YgdGhlIGFkZGl0aW9u
YWwgYWxsb3dlZCAKKyAgICAgICAgaW1hZ2UgZm9ybWF0LgorCisgICAgICAgICogcGxhdGZvcm0v
TUlNRVR5cGVSZWdpc3RyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjppbml0aWFsaXplU3VwcG9y
dGVkSW1hZ2VNSU1FVHlwZXMpOgorICAgICAgICAoV2ViQ29yZTo6aW5pdGlhbGl6ZVN1cHBvcnRl
ZEltYWdlQWRkaXRpb25hbE1JTUVUeXBlcyk6IEFkZCB0aGUgbWltZSB0eXBlcworICAgICAgICBv
ZiB0aGUgYWRkaXRpb25hbCBhbGxvd2VkIGltYWdlIGZvcm1hdHMgaWYgdGhleSBleGlzdC4KKyAg
ICAgICAgKFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkSW1hZ2VNSU1FVHlw
ZSk6CisgICAgICAgIChXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZEltYWdl
UmVzb3VyY2VNSU1FVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5Ojpp
bml0aWFsaXplU3VwcG9ydGVkSW1hZ2VBZGRpdGlvbmFsTUlNRVR5cGVzSWZOZWVkZWQpOgorICAg
ICAgICAqIHBsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURl
Y29kZXJDRzo6ZW5jb2RlZERhdGFTdGF0dXMgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NnL1VUSVJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRlZmF1bHRBbGxv
d2VkSW1hZ2VGb3JtYXRzKTogVGhpcyBpcyB0aGUgV2ViS2l0IGRlZmF1bHQgbGlzdCBvZgorICAg
ICAgICBzdXBwb3J0ZWQgaW1hZ2UgZm9ybWF0cy4KKyAgICAgICAgKFdlYkNvcmU6OmludGVybmFs
QWRkaXRpb25hbEFsbG93ZWRJbWFnZUZvcm1hdHMpOgorICAgICAgICAoV2ViQ29yZTo6YWRkaXRp
b25hbEFsbG93ZWRJbWFnZUZvcm1hdHMpOgorICAgICAgICAoV2ViQ29yZTo6c2V0QWRkaXRpb25h
bEFsbG93ZWRJbWFnZUZvcm1hdHMpOgorICAgICAgICAoV2ViQ29yZTo6aXNBbGxvd2VkSW1hZ2VG
b3JtYXQpOiBUaGlzIGZ1bmN0aW9uIGNoZWNrcyB0aGUgZGVmYXVsdCBsaXN0IGFuZAorICAgICAg
ICB0aGUgYWRkaXRpb25hbCBsaXN0IHRvIGRlY2lkZSB3aGV0aGVyIHRoZSBpbWFnZSBmb3JtYXQg
aXMgc3VwcG9ydGVkLgorICAgICAgICAoV2ViQ29yZTo6YWxsb3dlZEltYWdlVVRJcyk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjppc0FsbG93ZWRJbWFnZVVUSSk6IERlbGV0ZWQuCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvVVRJUmVnaXN0cnkuaDoKKwogMjAxOC0xMC0xOSAg
U3RlcGhhbiBTemFibyAgPHN0ZXBoYW4uc3phYm9Ac29ueS5jb20+CiAKICAgICAgICAgW1dpbkNh
aXJvXSBTZWFyY2ggdGVybXMgYXJlIG5vdCBzYXZlZCBmb3IgPGlucHV0IHR5cGU9InNlYXJjaCI+
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcAko
cmV2aXNpb24gMjM3MzA4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdp
c3RyeS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU4LDYgKzU4LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogc3RhdGljIEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+KiBz
dXBwb3J0ZWRJbWFnZVJlc291cmNlTUlNRVR5cGVzOwogc3RhdGljIEhhc2hTZXQ8U3RyaW5nLCBB
U0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+KiBzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlczsKIHN0YXRp
YyBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiogc3VwcG9ydGVkSW1h
Z2VNSU1FVHlwZXNGb3JFbmNvZGluZzsKK3N0YXRpYyBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNl
SW5zZW5zaXRpdmVIYXNoPiogc3VwcG9ydGVkSW1hZ2VBZGRpdGlvbmFsTUlNRVR5cGVzOwogc3Rh
dGljIEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+KiBzdXBwb3J0ZWRK
YXZhU2NyaXB0TUlNRVR5cGVzOwogc3RhdGljIEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNl
bnNpdGl2ZUhhc2g+KiBzdXBwb3J0ZWROb25JbWFnZU1JTUVUeXBlczsKIHN0YXRpYyBIYXNoU2V0
PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiogc3VwcG9ydGVkTWVkaWFNSU1FVHlw
ZXM7CkBAIC03OCw3ICs3OSw3IEBAIHN0YXRpYyB2b2lkIGluaXRpYWxpemVTdXBwb3J0ZWRJbWFn
ZU1JTUUKICAgICB9CiAKICNpZm5kZWYgTkRFQlVHCi0gICAgZm9yIChhdXRvJiB1dGkgOiBhbGxv
d2VkSW1hZ2VVVElzKCkpIHsKKyAgICBmb3IgKGF1dG8mIHV0aSA6IGRlZmF1bHRBbGxvd2VkSW1h
Z2VGb3JtYXRzKCkpIHsKICAgICAgICAgYXV0byBtaW1lVHlwZSA9IE1JTUVUeXBlRm9ySW1hZ2VT
b3VyY2VUeXBlKHV0aSk7CiAgICAgICAgIGlmICghbWltZVR5cGUuaXNFbXB0eSgpKSB7CiAgICAg
ICAgICAgICBBU1NFUlQoc3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXMtPmNvbnRhaW5zKG1pbWVUeXBl
KSk7CkBAIC04OCw3ICs4OSw3IEBAIHN0YXRpYyB2b2lkIGluaXRpYWxpemVTdXBwb3J0ZWRJbWFn
ZU1JTUUKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGZvciAoYXV0byYgbWltZSA6ICpzdXBw
b3J0ZWRJbWFnZU1JTUVUeXBlcykKLSAgICAgICAgQVNTRVJUX1VOVVNFRChtaW1lLCBhbGxvd2Vk
SW1hZ2VVVElzKCkuY29udGFpbnMoVVRJRnJvbU1JTUVUeXBlKG1pbWUpKSk7CisgICAgICAgIEFT
U0VSVF9VTlVTRUQobWltZSwgZGVmYXVsdEFsbG93ZWRJbWFnZUZvcm1hdHMoKS5jb250YWlucyhV
VElGcm9tTUlNRVR5cGUobWltZSkpKTsKICNlbmRpZgogI2VuZGlmCiAKQEAgLTE4NSw2ICsxODYs
MjMgQEAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVN1cHBvcnRlZEltYWdlTUlNRQogI2VuZGlmCiB9
CiAKK3N0YXRpYyB2b2lkIGluaXRpYWxpemVTdXBwb3J0ZWRJbWFnZUFkZGl0aW9uYWxNSU1FVHlw
ZXMoKQoreworICAgIC8vIFN1cHBvcnRlZEltYWdlQWRkaXRpb25hbE1JTUVUeXBlcyBjYW4gYmUg
cmVpbml0aWFsaXplZCBpZiBhZGRpdGlvbmFsQWxsb3dlZEltYWdlRm9ybWF0cworICAgIC8vIHdh
cyB1cGRhdGVkIGFmdGVyIHRoaXMgb25lIGlzIGluaXRpYWxpemVkLgorICAgIGlmICghc3VwcG9y
dGVkSW1hZ2VBZGRpdGlvbmFsTUlNRVR5cGVzKQorICAgICAgICBzdXBwb3J0ZWRJbWFnZUFkZGl0
aW9uYWxNSU1FVHlwZXMgPSBuZXcgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZl
SGFzaD47CisKKyAgICBBU1NFUlQoc3VwcG9ydGVkSW1hZ2VBZGRpdGlvbmFsTUlNRVR5cGVzLT5p
c0VtcHR5KCkpOworCisgICAgLy8gQWRkIHRoZSBtaW1lIHR5cGVzIG9mIHRoZSBhZGRpdGlvbmFs
QWxsb3dlZEltYWdlRm9ybWF0cy4KKyAgICBmb3IgKGF1dG8mIHV0aSA6IGFkZGl0aW9uYWxBbGxv
d2VkSW1hZ2VGb3JtYXRzKCkpIHsKKyAgICAgICAgYXV0byBtaW1lVHlwZSA9IE1JTUVUeXBlRm9y
SW1hZ2VTb3VyY2VUeXBlKHV0aSk7CisgICAgICAgIGlmICghbWltZVR5cGUuaXNFbXB0eSgpKQor
ICAgICAgICAgICAgc3VwcG9ydGVkSW1hZ2VBZGRpdGlvbmFsTUlNRVR5cGVzLT5hZGQobWltZVR5
cGUpOworICAgIH0KK30KKwogc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVN1cHBvcnRlZEphdmFTY3Jp
cHRNSU1FVHlwZXMoKQogewogICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVs
dGlwYWdlL3NjcmlwdGluZy5odG1sI2phdmFzY3JpcHQtbWltZS10eXBlCkBAIC00NDUsNyArNDYz
LDkgQEAgYm9vbCBNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZEltYWdlTQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlcykKICAgICAgICAg
aW5pdGlhbGl6ZVN1cHBvcnRlZEltYWdlTUlNRVR5cGVzKCk7Ci0gICAgcmV0dXJuIHN1cHBvcnRl
ZEltYWdlTUlNRVR5cGVzLT5jb250YWlucyhnZXROb3JtYWxpemVkTUlNRVR5cGUobWltZVR5cGUp
KTsKKyAgICBpZiAoIXN1cHBvcnRlZEltYWdlQWRkaXRpb25hbE1JTUVUeXBlcykKKyAgICAgICAg
aW5pdGlhbGl6ZVN1cHBvcnRlZEltYWdlQWRkaXRpb25hbE1JTUVUeXBlcygpOworICAgIHJldHVy
biBzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlcy0+Y29udGFpbnMoZ2V0Tm9ybWFsaXplZE1JTUVUeXBl
KG1pbWVUeXBlKSkgfHwgc3VwcG9ydGVkSW1hZ2VBZGRpdGlvbmFsTUlNRVR5cGVzLT5jb250YWlu
cyhnZXROb3JtYWxpemVkTUlNRVR5cGUobWltZVR5cGUpKTsKIH0KIAogYm9vbCBNSU1FVHlwZVJl
Z2lzdHJ5Ojppc1N1cHBvcnRlZEltYWdlVmlkZW9PclNWR01JTUVUeXBlKGNvbnN0IFN0cmluZyYg
bWltZVR5cGUpCkBAIC00NjcsNyArNDg3LDkgQEAgYm9vbCBNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1
cHBvcnRlZEltYWdlUgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFzdXBwb3J0ZWRJ
bWFnZVJlc291cmNlTUlNRVR5cGVzKQogICAgICAgICBpbml0aWFsaXplU3VwcG9ydGVkSW1hZ2VN
SU1FVHlwZXMoKTsKLSAgICByZXR1cm4gc3VwcG9ydGVkSW1hZ2VSZXNvdXJjZU1JTUVUeXBlcy0+
Y29udGFpbnMoZ2V0Tm9ybWFsaXplZE1JTUVUeXBlKG1pbWVUeXBlKSk7CisgICAgaWYgKCFzdXBw
b3J0ZWRJbWFnZUFkZGl0aW9uYWxNSU1FVHlwZXMpCisgICAgICAgIGluaXRpYWxpemVTdXBwb3J0
ZWRJbWFnZUFkZGl0aW9uYWxNSU1FVHlwZXMoKTsKKyAgICByZXR1cm4gc3VwcG9ydGVkSW1hZ2VS
ZXNvdXJjZU1JTUVUeXBlcy0+Y29udGFpbnMoZ2V0Tm9ybWFsaXplZE1JTUVUeXBlKG1pbWVUeXBl
KSkgfHwgc3VwcG9ydGVkSW1hZ2VBZGRpdGlvbmFsTUlNRVR5cGVzLT5jb250YWlucyhnZXROb3Jt
YWxpemVkTUlNRVR5cGUobWltZVR5cGUpKTsKIH0KIAogYm9vbCBNSU1FVHlwZVJlZ2lzdHJ5Ojpp
c1N1cHBvcnRlZEltYWdlTUlNRVR5cGVGb3JFbmNvZGluZyhjb25zdCBTdHJpbmcmIG1pbWVUeXBl
KQpAQCAtNjUxLDYgKzY3MywxNCBAQCBib29sIE1JTUVUeXBlUmVnaXN0cnk6OmNhblNob3dNSU1F
VHlwZShjCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCit2b2lkIE1JTUVUeXBlUmVnaXN0cnk6Omlu
aXRpYWxpemVTdXBwb3J0ZWRJbWFnZUFkZGl0aW9uYWxNSU1FVHlwZXNJZk5lZWRlZCgpCit7Cisg
ICAgLy8gUmVpbml0aWFsaXplIHRoZSBzdXBwb3J0ZWRJbWFnZUFkZGl0aW9uYWxNSU1FVHlwZXMg
aWYgdGhleSBoYXZlIG5vdCBiZWVuIHNldCBvciB3ZXJlIHNldCB0byBhbiBlbXB0eSBsaXN0Lgor
ICAgIGlmICghc3VwcG9ydGVkSW1hZ2VBZGRpdGlvbmFsTUlNRVR5cGVzIHx8ICFzdXBwb3J0ZWRJ
bWFnZUFkZGl0aW9uYWxNSU1FVHlwZXMtPmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworICAg
IGluaXRpYWxpemVTdXBwb3J0ZWRJbWFnZUFkZGl0aW9uYWxNSU1FVHlwZXMoKTsKK30KKwogY29u
c3QgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIE1JTUVUeXBlUmVn
aXN0cnk6OmdldFN1cHBvcnRlZEltYWdlTUlNRVR5cGVzKCkKIHsKICAgICBpZiAoIXN1cHBvcnRl
ZEltYWdlTUlNRVR5cGVzKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVS
ZWdpc3RyeS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBl
UmVnaXN0cnkuaAkocmV2aXNpb24gMjM3MzA4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
TUlNRVR5cGVSZWdpc3RyeS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDgsNiArMTA4LDggQEAgcHVi
bGljOgogICAgIC8vIG1ha2VzIHRoaXMgdGVzdCBpcyBhZnRlciBtYW55IG90aGVyIHRlc3RzIGFy
ZSBkb25lIG9uIHRoZSBNSU1FIHR5cGUuCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wg
aXNUZXh0TUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CiAKKyAgICBzdGF0aWMgdm9p
ZCBpbml0aWFsaXplU3VwcG9ydGVkSW1hZ2VBZGRpdGlvbmFsTUlNRVR5cGVzSWZOZWVkZWQoKTsK
KwogICAgIC8vIEZJWE1FOiBXZWJLaXQgY29kaW5nIHN0eWxlIHNheXMgd2Ugc2hvdWxkIG5vdCBo
YXZlIHRoZSB3b3JkICJnZXQiIGluIHRoZSBuYW1lcyBvZiB0aGVzZSBmdW5jdGlvbnMuCiAgICAg
Ly8gRklYTUU6IFdvdWxkIGJlIG5pY2UgdG8gZmluZCBhIHdheSB0byBhdm9pZCBleHBvc2luZyB0
aGVzZSBzZXRzLCBldmVuIHdvcnNlIGV4cG9zaW5nIG5vbi1jb25zdCByZWZlcmVuY2VzLgogICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRp
dmVIYXNoPiYgZ2V0U3VwcG9ydGVkTm9uSW1hZ2VNSU1FVHlwZXMoKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5j
cHAJKHJldmlzaW9uIDIzNzMwOCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0ltYWdlRGVjb2RlckNHLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk5LDcgKzE5OSw3IEBA
IEVuY29kZWREYXRhU3RhdHVzIEltYWdlRGVjb2RlckNHOjplbmNvZGUKICAgICAgICAgcmV0dXJu
IEVuY29kZWREYXRhU3RhdHVzOjpFcnJvcjsKIAogICAgIGNhc2Uga0NHSW1hZ2VTdGF0dXNJbmNv
bXBsZXRlOiB7Ci0gICAgICAgIGlmICghaXNBbGxvd2VkSW1hZ2VVVEkodXRpKSkKKyAgICAgICAg
aWYgKCFpc0FsbG93ZWRJbWFnZUZvcm1hdCh1dGkpKQogICAgICAgICAgICAgcmV0dXJuIEVuY29k
ZWREYXRhU3RhdHVzOjpFcnJvcjsKIAogICAgICAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVm
PiBpbWFnZTBQcm9wZXJ0aWVzID0gYWRvcHRDRihDR0ltYWdlU291cmNlQ29weVByb3BlcnRpZXNB
dEluZGV4KG1fbmF0aXZlRGVjb2Rlci5nZXQoKSwgMCwgaW1hZ2VTb3VyY2VPcHRpb25zKCkuZ2V0
KCkpKTsKQEAgLTIxMyw3ICsyMTMsNyBAQCBFbmNvZGVkRGF0YVN0YXR1cyBJbWFnZURlY29kZXJD
Rzo6ZW5jb2RlCiAgICAgfQogCiAgICAgY2FzZSBrQ0dJbWFnZVN0YXR1c0NvbXBsZXRlOgotICAg
ICAgICBpZiAoIWlzQWxsb3dlZEltYWdlVVRJKHV0aSkpCisgICAgICAgIGlmICghaXNBbGxvd2Vk
SW1hZ2VGb3JtYXQodXRpKSkKICAgICAgICAgICAgIHJldHVybiBFbmNvZGVkRGF0YVN0YXR1czo6
RXJyb3I7CiAKICAgICAgICAgcmV0dXJuIEVuY29kZWREYXRhU3RhdHVzOjpDb21wbGV0ZTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1VUSVJlZ2lzdHJ5LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9VVElSZWdp
c3RyeS5jcHAJKHJldmlzaW9uIDIzNzMwOCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL1VUSVJlZ2lzdHJ5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBA
QAogCiAjaWYgVVNFKENHKQogCisjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgogI2luY2x1
ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5j
bHVkZSA8SW1hZ2VJTy9JbWFnZUlPLmg+CkBAIC0zOCwxMCArMzksMTAgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1IYXNoU2V0PFN0cmluZz4mIGFsbG93ZWRJbWFnZVVUSXMoKQorY29uc3Qg
SGFzaFNldDxTdHJpbmc+JiBkZWZhdWx0QWxsb3dlZEltYWdlRm9ybWF0cygpCiB7CiAgICAgLy8g
Q0cgYXQgbGVhc3Qgc3VwcG9ydHMgdGhlIGZvbGxvd2luZyBzdGFuZGFyZCBpbWFnZSB0eXBlczoK
LSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxTdHJpbmc+PiBzX2FsbG93ZWRJbWFn
ZVVUSXMgPSBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8U3RyaW5nPiB7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPEhhc2hTZXQ8U3RyaW5nPj4gZGVmYXVsdEFsbG93ZWRJbWFnZUZvcm1hdHMgPSBz
dGQ6OmluaXRpYWxpemVyX2xpc3Q8U3RyaW5nPiB7CiAgICAgICAgICJjb20uY29tcHVzZXJ2ZS5n
aWYiLAogICAgICAgICAiY29tLm1pY3Jvc29mdC5ibXAiLAogICAgICAgICAiY29tLm1pY3Jvc29m
dC5jdXIiLApAQCAtNTksNyArNjAsNyBAQCBIYXNoU2V0PFN0cmluZz4mIGFsbG93ZWRJbWFnZVVU
SXMoKQogICAgIGlmICghY2hlY2tlZCkgewogICAgICAgICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4g
c3lzdGVtSW1hZ2VVVElzID0gYWRvcHRDRihDR0ltYWdlU291cmNlQ29weVR5cGVJZGVudGlmaWVy
cygpKTsKICAgICAgICAgQ0ZJbmRleCBjb3VudCA9IENGQXJyYXlHZXRDb3VudChzeXN0ZW1JbWFn
ZVVUSXMuZ2V0KCkpOwotICAgICAgICBmb3IgKGF1dG8mIGltYWdlVVRJIDogc19hbGxvd2VkSW1h
Z2VVVElzLmdldCgpKSB7CisgICAgICAgIGZvciAoYXV0byYgaW1hZ2VVVEkgOiBkZWZhdWx0QWxs
b3dlZEltYWdlRm9ybWF0cy5nZXQoKSkgewogICAgICAgICAgICAgUmV0YWluUHRyPENGU3RyaW5n
UmVmPiBzdHJpbmcgPSBpbWFnZVVUSS5jcmVhdGVDRlN0cmluZygpOwogICAgICAgICAgICAgQVNT
RVJUKENGQXJyYXlDb250YWluc1ZhbHVlKHN5c3RlbUltYWdlVVRJcy5nZXQoKSwgQ0ZSYW5nZU1h
a2UoMCwgY291bnQpLCBzdHJpbmcuZ2V0KCkpKTsKICAgICAgICAgfQpAQCAtNjcsMTIgKzY4LDM3
IEBAIEhhc2hTZXQ8U3RyaW5nPiYgYWxsb3dlZEltYWdlVVRJcygpCiAgICAgfQogI2VuZGlmCiAK
LSAgICByZXR1cm4gc19hbGxvd2VkSW1hZ2VVVElzLmdldCgpOworICAgIHJldHVybiBkZWZhdWx0
QWxsb3dlZEltYWdlRm9ybWF0czsKIH0KIAotYm9vbCBpc0FsbG93ZWRJbWFnZVVUSShjb25zdCBT
dHJpbmcmIGltYWdlVVRJKQorc3RhdGljIEhhc2hTZXQ8U3RyaW5nPiYgaW50ZXJuYWxBZGRpdGlv
bmFsQWxsb3dlZEltYWdlRm9ybWF0cygpCiB7Ci0gICAgcmV0dXJuICFpbWFnZVVUSS5pc0VtcHR5
KCkgJiYgYWxsb3dlZEltYWdlVVRJcygpLmNvbnRhaW5zKGltYWdlVVRJKTsKKyAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxTdHJpbmc+PiBhZGRpdGlvbmFsQWxsb3dlZEltYWdlRm9y
bWF0czsKKyAgICByZXR1cm4gYWRkaXRpb25hbEFsbG93ZWRJbWFnZUZvcm1hdHM7Cit9CisKK2Nv
bnN0IEhhc2hTZXQ8U3RyaW5nPiYgYWRkaXRpb25hbEFsbG93ZWRJbWFnZUZvcm1hdHMoKQorewor
ICAgIHJldHVybiBpbnRlcm5hbEFkZGl0aW9uYWxBbGxvd2VkSW1hZ2VGb3JtYXRzKCk7Cit9CisK
K3ZvaWQgc2V0QWRkaXRpb25hbEFsbG93ZWRJbWFnZUZvcm1hdHMoY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGltYWdlVVRJcykKK3sKKyAgICAvLyBXZSBhcmUgc3VwcG9lZCB0byBzZXQgdGhlIGFkZGl0
aW9uYWxBbGxvd2VkSW1hZ2VGb3JtYXRzIG9ubHkgb25jZSBldmVuCisgICAgLy8gaWYgbXVsdGlw
bGUgV2ViUGFnZXMgYXJlIGNyZWF0ZWQuCisgICAgaWYgKCFpbnRlcm5hbEFkZGl0aW9uYWxBbGxv
d2VkSW1hZ2VGb3JtYXRzKCkuaXNFbXB0eSgpIHx8IGltYWdlVVRJcy5pc0VtcHR5KCkpCisgICAg
ICAgIHJldHVybjsKKworICAgIGZvciAoY29uc3QgYXV0byYgaW1hZ2VVVEkgOiBpbWFnZVVUSXMp
CisgICAgICAgIGludGVybmFsQWRkaXRpb25hbEFsbG93ZWRJbWFnZUZvcm1hdHMoKS5hZGQoaW1h
Z2VVVEkpOworCisgICAgLy8gVXBkYXRlIHRoZSBhZGRpdGlvbmFsIE1JTUUgdHlwZXMgaWYgdGhl
eSB3ZXJlIGFscmVhZHkgc2V0LgorICAgIE1JTUVUeXBlUmVnaXN0cnk6OmluaXRpYWxpemVTdXBw
b3J0ZWRJbWFnZUFkZGl0aW9uYWxNSU1FVHlwZXNJZk5lZWRlZCgpOworfQorCitib29sIGlzQWxs
b3dlZEltYWdlRm9ybWF0KGNvbnN0IFN0cmluZyYgaW1hZ2VVVEkpCit7CisgICAgcmV0dXJuICFp
bWFnZVVUSS5pc0VtcHR5KCkgJiYgKGRlZmF1bHRBbGxvd2VkSW1hZ2VGb3JtYXRzKCkuY29udGFp
bnMoaW1hZ2VVVEkpIHx8IGFkZGl0aW9uYWxBbGxvd2VkSW1hZ2VGb3JtYXRzKCkuY29udGFpbnMo
aW1hZ2VVVEkpKTsKIH0KIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvVVRJUmVnaXN0cnkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9VVElSZWdpc3RyeS5oCShyZXZpc2lvbiAyMzczMDgpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9VVElSZWdpc3RyeS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zMCw3ICszMCw5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotSGFzaFNldDxTdHJp
bmc+JiBhbGxvd2VkSW1hZ2VVVElzKCk7Ci1ib29sIGlzQWxsb3dlZEltYWdlVVRJKGNvbnN0IFN0
cmluZyYpOworY29uc3QgSGFzaFNldDxTdHJpbmc+JiBkZWZhdWx0QWxsb3dlZEltYWdlRm9ybWF0
cygpOworY29uc3QgSGFzaFNldDxTdHJpbmc+JiBhZGRpdGlvbmFsQWxsb3dlZEltYWdlRm9ybWF0
cygpOworV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRBZGRpdGlvbmFsQWxsb3dlZEltYWdlRm9ybWF0
cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYpOworYm9vbCBpc0FsbG93ZWRJbWFnZUZvcm1hdChjb25z
dCBTdHJpbmcmKTsKIAogfQpJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzNzMwOCkKKysrIFNvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTQgQEAKKzIwMTgt
MTAtMTkgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KKworICAg
ICAgICBBZGQgYW4gU1BJIHRvIGFsbG93IFdlYlZpZXcgY2xpZW50cyB0byBhZGQgYWRkaXRpb25h
bCBzdXBwb3J0ZWQgaW1hZ2UgZm9ybWF0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTkwNDU0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBQbGF0Zm9ybS9tYWMvU3RyaW5nVXRpbGl0aWVzLmg6CisgICAg
ICAgICogUGxhdGZvcm0vbWFjL1N0cmluZ1V0aWxpdGllcy5tbToKKyAgICAgICAgKFdlYktpdDo6
d2ViQ29yZVN0cmluZ1ZlY3RvckZyb21OU1N0cmluZ0FycmF5KToKKyAgICAgICAgQSBoZWxwZXIg
ZnVuY3Rpb24gd2hpY2ggY29udmVydHMgYW4gTlNBcnJheSBvZiBOU1N0cmluZ3MgdG8gYSBWZWN0
b3Igb2YKKyAgICAgICAgV1RGU3RyaW5nLgorCisgICAgICAgICogU2hhcmVkL1dlYlBhZ2VDcmVh
dGlvblBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJh
bWV0ZXJzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlQ3JlYXRpb25Q
YXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJh
bWV0ZXJzLmg6CisgICAgICAgIEhhbmRsZSBlbmNvZGluZyBhbmQgZGVjb2RpbmcgdGhlIEFkZGl0
aW9uYWxBbGxvd2VkSW1hZ2VGb3JtYXRzIHdoaWNoIHdpbGwKKyAgICAgICAgYWxsb3cgdHJhbnNm
ZXJyaW5nIGl0IGZyb20gdGhlIFVJIHByb2Nlc3MgdG8gdGhlIHdlYiBwcm9jZXNzLgorCisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5oOgorICAgICAgICAoQVBJ
OjpQYWdlQ29uZmlndXJhdGlvbjo6YWRkaXRpb25hbEFsbG93ZWRJbWFnZUZvcm1hdHMgY29uc3Qp
OgorICAgICAgICAoQVBJOjpQYWdlQ29uZmlndXJhdGlvbjo6c2V0QWRkaXRpb25hbEFsbG93ZWRJ
bWFnZUZvcm1hdHMpOgorICAgICAgICBTdG9yZSB0aGUgQWRkaXRpb25hbEFsbG93ZWRJbWFnZUZv
cm1hdHMgaW4gdGhlIEFQSVBhZ2VDb25maWd1cmF0aW9uCisgICAgICAgIHdoaWNoIGlzIHVzZWQg
d2hlbiBjcmVhdGluZyB0aGUgV2ViUGFnZVByb3h5IGluIHRoZSBVSVBvcmNlc3MuCisKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJW
aWV3IF9pbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb246XSk6CisgICAgICAgIFNldCB0aGUgdmFs
dWUgb2YgQWRkaXRpb25hbEFsbG93ZWRJbWFnZUZvcm1hdHMgZnJvbSBXS1dlYlZpZXdDb25maWd1
cmF0aW9uCisgICAgICAgIHRvIHRoZSBBUElQYWdlQ29uZmlndXJhdGlvbi4KKworICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbToKKyAgICAgICAg
KC1bV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBjb3B5V2l0aFpvbmU6XSk6CisgICAgICAgICgtW1dL
V2ViVmlld0NvbmZpZ3VyYXRpb24gX2FkZGl0aW9uYWxBbGxvd2VkSW1hZ2VGb3JtYXRzXSk6Cisg
ICAgICAgICgtW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX3NldEFkZGl0aW9uYWxBbGxvd2VkSW1h
Z2VGb3JtYXRzOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29u
ZmlndXJhdGlvblByaXZhdGUuaDoKKyAgICAgICAgU2V0dGVyL0dldHRlciBmb3IgdGhlIGFkZGl0
aW9uYWxBbGxvd2VkSW1hZ2VGb3JtYXRzLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y3JlYXRpb25QYXJhbWV0
ZXJzKToKKyAgICAgICAgQ29weSB0aGUgYWRkaXRpb25hbEFsbG93ZWRJbWFnZUZvcm1hdHMgZnJv
bSBBUElQYWdlQ29uZmlndXJhdGlvbiB0byAKKyAgICAgICAgV2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVycy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgRGVs
ZXRlIHVuaW1wbGVtZW50ZWQgZnVuY3Rpb24uCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OldlYlBhZ2UpOgorICAg
ICAgICBDb3B5IHRoZSBhZGRpdGlvbmFsQWxsb3dlZEltYWdlRm9ybWF0cyBmcm9tIFdlYlBhZ2VD
cmVhdGlvblBhcmFtZXRlcnMgdG8KKyAgICAgICAgV2ViQ29yZS4KKwogMjAxOC0xMC0xOSAgU3Rl
cGhhbiBTemFibyAgPHN0ZXBoYW4uc3phYm9Ac29ueS5jb20+CiAKICAgICAgICAgW1dpbkNhaXJv
XSBTZWFyY2ggdGVybXMgYXJlIG5vdCBzYXZlZCBmb3IgPGlucHV0IHR5cGU9InNlYXJjaCI+Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL21hYy9TdHJpbmdVdGlsaXRpZXMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL21hYy9TdHJpbmdVdGlsaXRpZXMuaAkocmV2
aXNpb24gMjM3MzA4KQorKysgU291cmNlL1dlYktpdC9QbGF0Zm9ybS9tYWMvU3RyaW5nVXRpbGl0
aWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDggQEAgbmFtZXNwYWNlIFdlYktpdCB7
CiBOU1N0cmluZyAqbnNTdHJpbmdGcm9tV2ViQ29yZVN0cmluZyhjb25zdCBTdHJpbmcmKTsKIE5T
U3RyaW5nICpmb3JtYXR0ZWRQaG9uZU51bWJlclN0cmluZyhOU1N0cmluZyAqb3JpZ2luYWxQaG9u
ZU51bWJlcik7CiAKK1ZlY3RvcjxTdHJpbmc+IHdlYkNvcmVTdHJpbmdWZWN0b3JGcm9tTlNTdHJp
bmdBcnJheShOU0FycmF5PE5TU3RyaW5nICo+ICopOworCiAjZW5kaWYgLy8gZGVmaW5lZChfX09C
SkNfXykKIAogfQpJbmRleDogU291cmNlL1dlYktpdC9QbGF0Zm9ybS9tYWMvU3RyaW5nVXRpbGl0
aWVzLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vbWFjL1N0cmluZ1V0
aWxpdGllcy5tbQkocmV2aXNpb24gMjM3MzA4KQorKysgU291cmNlL1dlYktpdC9QbGF0Zm9ybS9t
YWMvU3RyaW5nVXRpbGl0aWVzLm1tCSh3b3JraW5nIGNvcHkpCkBAIC04Miw0ICs4MiwxNSBAQCBO
U1N0cmluZyAqZm9ybWF0dGVkUGhvbmVOdW1iZXJTdHJpbmcoTlNTCiAKICNlbmRpZiAvLyBFTkFC
TEUoVEVMRVBIT05FX05VTUJFUl9ERVRFQ1RJT04pICYmIFBMQVRGT1JNKE1BQykKIAorVmVjdG9y
PFN0cmluZz4gd2ViQ29yZVN0cmluZ1ZlY3RvckZyb21OU1N0cmluZ0FycmF5KE5TQXJyYXk8TlNT
dHJpbmcgKj4gKm5zU3RyaW5nQXJyYXkpCit7CisgICAgVmVjdG9yPFN0cmluZz4gc3RyaW5nVmVj
dG9yOworICAgIHN0cmluZ1ZlY3Rvci5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KFtuc1N0cmluZ0Fy
cmF5IGNvdW50XSk7CisKKyAgICBmb3IgKE5TU3RyaW5nICpuc1N0cmluZyBpbiBuc1N0cmluZ0Fy
cmF5KQorICAgICAgICBzdHJpbmdWZWN0b3IudW5jaGVja2VkQXBwZW5kKG5zU3RyaW5nKTsKKwor
ICAgIHJldHVybiBzdHJpbmdWZWN0b3I7Cit9CisKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCShyZXZpc2lvbiAyMzcz
MDgpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtOTYsNiArOTYsNyBAQCB2b2lkIFdlYlBhZ2VDcmVhdGlvblBh
cmFtZXRlcnM6OmVuY29kZShJCiAjZW5kaWYKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBlbmNv
ZGVyIDw8IHNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZDsKKyAgICBlbmNvZGVyIDw8IGFkZGl0aW9u
YWxBbGxvd2VkSW1hZ2VGb3JtYXRzOwogI2VuZGlmCiAgICAgZW5jb2RlciA8PCBhcHBsZU1haWxQ
YWdpbmF0aW9uUXVpcmtFbmFibGVkOwogICAgIGVuY29kZXIgPDwgYXBwbGVNYWlsTGluZXNDbGFt
cEVuYWJsZWQ7CkBAIC0yNjksNiArMjcwLDggQEAgc3RkOjpvcHRpb25hbDxXZWJQYWdlQ3JlYXRp
b25QYXJhbWV0ZXJzPgogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUocGFyYW1ldGVycy5zbWFydEluc2VydERlbGV0ZUVuYWJsZWQpKQogICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5hZGRpdGlv
bmFsQWxsb3dlZEltYWdlRm9ybWF0cykpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAj
ZW5kaWYKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5hcHBsZU1haWxQYWdp
bmF0aW9uUXVpcmtFbmFibGVkKSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VD
cmVhdGlvblBhcmFtZXRlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgJKHJldmlzaW9uIDIzNzMwOCkKKysrIFNvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaAkod29ya2luZyBjb3B5KQpA
QCAtMTUzLDYgKzE1Myw3IEBAIHN0cnVjdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIHsKICNl
bmRpZgogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGJvb2wgc21hcnRJbnNlcnREZWxldGVFbmFi
bGVkOworICAgIFZlY3RvcjxTdHJpbmc+IGFkZGl0aW9uYWxBbGxvd2VkSW1hZ2VGb3JtYXRzOwog
I2VuZGlmCiAgICAgYm9vbCBhcHBsZU1haWxQYWdpbmF0aW9uUXVpcmtFbmFibGVkOwogICAgIGJv
b2wgYXBwbGVNYWlsTGluZXNDbGFtcEVuYWJsZWQ7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDIzNzMwOCkKKysrIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYzNzEsNiArNjM3
MSw3IEBAIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgV2ViUGFnZVByb3h5OjoKIAogI2lmIFBM
QVRGT1JNKENPQ09BKQogICAgIHBhcmFtZXRlcnMuc21hcnRJbnNlcnREZWxldGVFbmFibGVkID0g
bV9pc1NtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZDsKKyAgICBwYXJhbWV0ZXJzLmFkZGl0aW9uYWxB
bGxvd2VkSW1hZ2VGb3JtYXRzID0gbV9jb25maWd1cmF0aW9uLT5hZGRpdGlvbmFsQWxsb3dlZElt
YWdlRm9ybWF0cygpOwogI2VuZGlmCiAgICAgcGFyYW1ldGVycy5zaG91bGRTY2FsZVZpZXdUb0Zp
dERvY3VtZW50ID0gbV9zaG91bGRTY2FsZVZpZXdUb0ZpdERvY3VtZW50OwogICAgIHBhcmFtZXRl
cnMudXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbiA9IHBhZ2VDbGllbnQoKS51c2VySW50ZXJm
YWNlTGF5b3V0RGlyZWN0aW9uKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaAkocmV2aXNpb24gMjM3MzA4KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTEzNTcsMTAgKzEzNTcsNiBAQCBwdWJsaWM6
CiAKICAgICBXZWJDb3JlOjpJbnRSZWN0IHN5bmNSb290Vmlld1RvU2NyZWVuKGNvbnN0IFdlYkNv
cmU6OkludFJlY3QmIHZpZXdSZWN0KTsKIAotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIFZlY3Rv
cjxTdHJpbmc+IG1lZGlhTUlNRVR5cGVzKCk7Ci0jZW5kaWYKLQogI2lmIEVOQUJMRShEQVRBTElT
VF9FTEVNRU5UKQogICAgIHZvaWQgZGlkU2VsZWN0T3B0aW9uKGNvbnN0IFN0cmluZyYpOwogICAg
IHZvaWQgZGlkQ2xvc2VTdWdnZXN0aW9ucygpOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmgJKHJldmlzaW9uIDIzNzMwOCkK
KysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xMTAsNiArMTEwLDExIEBAIHB1YmxpYzoKICAgICBjb25zdCBXVEY6
OlN0cmluZyYgb3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3koKSBjb25zdCB7IHJldHVybiBt
X292ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5OyB9CiAgICAgdm9pZCBzZXRPdmVycmlkZUNv
bnRlbnRTZWN1cml0eVBvbGljeShjb25zdCBXVEY6OlN0cmluZyYgb3ZlcnJpZGVDb250ZW50U2Vj
dXJpdHlQb2xpY3kpIHsgbV9vdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeSA9IG92ZXJyaWRl
Q29udGVudFNlY3VyaXR5UG9saWN5OyB9CiAKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBjb25z
dCBXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4mIGFkZGl0aW9uYWxBbGxvd2VkSW1hZ2VGb3JtYXRz
KCkgY29uc3QgeyByZXR1cm4gbV9hZGRpdGlvbmFsQWxsb3dlZEltYWdlRm9ybWF0czsgfQorICAg
IHZvaWQgc2V0QWRkaXRpb25hbEFsbG93ZWRJbWFnZUZvcm1hdHMoV1RGOjpWZWN0b3I8V1RGOjpT
dHJpbmc+JiYgYWRkaXRpb25hbEFsbG93ZWRJbWFnZUZvcm1hdHMpIHsgbV9hZGRpdGlvbmFsQWxs
b3dlZEltYWdlRm9ybWF0cyA9IFdURk1vdmUoYWRkaXRpb25hbEFsbG93ZWRJbWFnZUZvcm1hdHMp
OyB9CisjZW5kaWYKKwogI2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKICAgICBBcHBs
aWNhdGlvbk1hbmlmZXN0KiBhcHBsaWNhdGlvbk1hbmlmZXN0KCkgY29uc3Q7CiAgICAgdm9pZCBz
ZXRBcHBsaWNhdGlvbk1hbmlmZXN0KEFwcGxpY2F0aW9uTWFuaWZlc3QqKTsKQEAgLTE0Niw2ICsx
NTEsMTAgQEAgcHJpdmF0ZToKIAogICAgIFdURjo6U3RyaW5nIG1fb3ZlcnJpZGVDb250ZW50U2Vj
dXJpdHlQb2xpY3k7CiAKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBXVEY6OlZlY3RvcjxXVEY6
OlN0cmluZz4gbV9hZGRpdGlvbmFsQWxsb3dlZEltYWdlRm9ybWF0czsKKyNlbmRpZgorCiAjaWYg
RU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQogICAgIFJlZlB0cjxBcHBsaWNhdGlvbk1hbmlm
ZXN0PiBtX2FwcGxpY2F0aW9uTWFuaWZlc3Q7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQkocmV2aXNpb24gMjM3MzA4KQor
KysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtNDYsNiArNDYsNyBAQAogI2ltcG9ydCAiUmVtb3RlTGF5ZXJUcmVlVHJhbnNh
Y3Rpb24uaCIKICNpbXBvcnQgIlJlbW90ZU9iamVjdFJlZ2lzdHJ5LmgiCiAjaW1wb3J0ICJSZW1v
dGVPYmplY3RSZWdpc3RyeU1lc3NhZ2VzLmgiCisjaW1wb3J0ICJTdHJpbmdVdGlsaXRpZXMuaCIK
ICNpbXBvcnQgIlVJRGVsZWdhdGUuaCIKICNpbXBvcnQgIlVzZXJNZWRpYVByb2Nlc3NNYW5hZ2Vy
LmgiCiAjaW1wb3J0ICJWZXJzaW9uQ2hlY2tzLmgiCkBAIC01NjcsNiArNTY4LDggQEAgLSAodm9p
ZClfaW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uOihXSwogICAgICAgICBpZiAoZ3JvdXBJZGVu
dGlmaWVyLmxlbmd0aCkKICAgICAgICAgICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRQYWdlR3Jv
dXAoV2ViS2l0OjpXZWJQYWdlR3JvdXA6OmNyZWF0ZShjb25maWd1cmF0aW9uLl9ncm91cElkZW50
aWZpZXIpLnB0cigpKTsKICAgICB9CisgICAgCisgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldEFk
ZGl0aW9uYWxBbGxvd2VkSW1hZ2VGb3JtYXRzKFdlYktpdDo6d2ViQ29yZVN0cmluZ1ZlY3RvckZy
b21OU1N0cmluZ0FycmF5KFtfY29uZmlndXJhdGlvbiBfYWRkaXRpb25hbEFsbG93ZWRJbWFnZUZv
cm1hdHNdKSk7CiAKICAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZVZhbHVlcygpLnNl
dChXZWJLaXQ6OldlYlByZWZlcmVuY2VzS2V5OjpzdXBwcmVzc2VzSW5jcmVtZW50YWxSZW5kZXJp
bmdLZXkoKSwgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1ZSghIVtfY29uZmlndXJh
dGlvbiBzdXBwcmVzc2VzSW5jcmVtZW50YWxSZW5kZXJpbmddKSk7CiAKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25m
aWd1cmF0aW9uLm1tCShyZXZpc2lvbiAyMzczMDgpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbQkod29ya2luZyBjb3B5KQpAQCAt
MTYxLDYgKzE2MSw3IEBAIHN0YXRpYyBfV0tEcmFnTGlmdERlbGF5IHRvRHJhZ0xpZnREZWxheSgK
ICAgICBCT09MIF9kcmF3c0JhY2tncm91bmQ7CiAKICAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IF9t
ZWRpYUNvbnRlbnRUeXBlc1JlcXVpcmluZ0hhcmR3YXJlU3VwcG9ydDsKKyAgICBSZXRhaW5QdHI8
TlNBcnJheTxOU1N0cmluZyAqPj4gX2FkZGl0aW9uYWxBbGxvd2VkSW1hZ2VGb3JtYXRzOwogfQog
CiAtIChpbnN0YW5jZXR5cGUpaW5pdApAQCAtMzk0LDYgKzM5NSw3IEBAIC0gKGlkKWNvcHlXaXRo
Wm9uZTooTlNab25lICopem9uZQogICAgIGNvbmZpZ3VyYXRpb24tPl9uZWVkc1N0b3JhZ2VBY2Nl
c3NGcm9tRmlsZVVSTHNRdWlyayA9IHNlbGYtPl9uZWVkc1N0b3JhZ2VBY2Nlc3NGcm9tRmlsZVVS
THNRdWlyazsKIAogICAgIGNvbmZpZ3VyYXRpb24tPl9tZWRpYUNvbnRlbnRUeXBlc1JlcXVpcmlu
Z0hhcmR3YXJlU3VwcG9ydCA9IGFkb3B0TlMoW3NlbGYuX21lZGlhQ29udGVudFR5cGVzUmVxdWly
aW5nSGFyZHdhcmVTdXBwb3J0IGNvcHlXaXRoWm9uZTp6b25lXSk7CisgICAgY29uZmlndXJhdGlv
bi0+X2FkZGl0aW9uYWxBbGxvd2VkSW1hZ2VGb3JtYXRzID0gYWRvcHROUyhbc2VsZi0+X2FkZGl0
aW9uYWxBbGxvd2VkSW1hZ2VGb3JtYXRzIGNvcHlXaXRoWm9uZTp6b25lXSk7CiAgICAgY29uZmln
dXJhdGlvbi0+X2xlZ2FjeUVuY3J5cHRlZE1lZGlhQVBJRW5hYmxlZCA9IHNlbGYtPl9sZWdhY3lF
bmNyeXB0ZWRNZWRpYUFQSUVuYWJsZWQ7CiAgICAgY29uZmlndXJhdGlvbi0+X2FsbG93TWVkaWFD
b250ZW50VHlwZXNSZXF1aXJpbmdIYXJkd2FyZVN1cHBvcnRBc0ZhbGxiYWNrID0gc2VsZi0+X2Fs
bG93TWVkaWFDb250ZW50VHlwZXNSZXF1aXJpbmdIYXJkd2FyZVN1cHBvcnRBc0ZhbGxiYWNrOwog
CkBAIC05OTAsNiArOTkyLDE2IEBAIC0gKHZvaWQpX3NldE1lZGlhQ29udGVudFR5cGVzUmVxdWly
aW5nSGEKICAgICBfbWVkaWFDb250ZW50VHlwZXNSZXF1aXJpbmdIYXJkd2FyZVN1cHBvcnQgPSBh
ZG9wdE5TKFttZWRpYUNvbnRlbnRUeXBlc1JlcXVpcmluZ0hhcmR3YXJlU3VwcG9ydCBjb3B5XSk7
CiB9CiAKKy0gKE5TQXJyYXk8TlNTdHJpbmcgKj4gKilfYWRkaXRpb25hbEFsbG93ZWRJbWFnZUZv
cm1hdHMKK3sKKyAgICByZXR1cm4gX2FkZGl0aW9uYWxBbGxvd2VkSW1hZ2VGb3JtYXRzLmdldCgp
OworfQorCistICh2b2lkKV9zZXRBZGRpdGlvbmFsQWxsb3dlZEltYWdlRm9ybWF0czooTlNBcnJh
eTxOU1N0cmluZyAqPiAqKWFkZGl0aW9uYWxBbGxvd2VkSW1hZ2VGb3JtYXRzCit7CisgICAgX2Fk
ZGl0aW9uYWxBbGxvd2VkSW1hZ2VGb3JtYXRzID0gYWRvcHROUyhbYWRkaXRpb25hbEFsbG93ZWRJ
bWFnZUZvcm1hdHMgY29weV0pOworfQorCiAtICh2b2lkKV9zZXRMZWdhY3lFbmNyeXB0ZWRNZWRp
YUFQSUVuYWJsZWQ6KEJPT0wpZW5hYmxlZAogewogICAgIF9sZWdhY3lFbmNyeXB0ZWRNZWRpYUFQ
SUVuYWJsZWQgPSBlbmFibGVkOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRl
LmgJKHJldmlzaW9uIDIzNzMwOCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDEs
NiArMTAxLDcgQEAgdHlwZWRlZiBOU19FTlVNKE5TVUludGVnZXIsIF9XS0RyYWdMaWZ0RAogQHBy
b3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0TWVkaWFDb250ZW50VHlwZXNSZXF1aXJpbmdI
YXJkd2FyZVN1cHBvcnQ6KSBOU1N0cmluZyAqX21lZGlhQ29udGVudFR5cGVzUmVxdWlyaW5nSGFy
ZHdhcmVTdXBwb3J0IFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjEzKSwgaW9zKDExLjApKTsK
IEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldExlZ2FjeUVuY3J5cHRlZE1lZGlhQVBJ
RW5hYmxlZDopIEJPT0wgX2xlZ2FjeUVuY3J5cHRlZE1lZGlhQVBJRW5hYmxlZCBXS19BUElfQVZB
SUxBQkxFKG1hY29zeCgxMC4xMyksIGlvcygxMS4wKSk7CiBAcHJvcGVydHkgKG5vbmF0b21pYywg
c2V0dGVyPV9zZXRBbGxvd01lZGlhQ29udGVudFR5cGVzUmVxdWlyaW5nSGFyZHdhcmVTdXBwb3J0
QXNGYWxsYmFjazopIEJPT0wgX2FsbG93TWVkaWFDb250ZW50VHlwZXNSZXF1aXJpbmdIYXJkd2Fy
ZVN1cHBvcnRBc0ZhbGxiYWNrIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjEzKSwgaW9zKDEx
LjApKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5LCBzZXR0ZXI9X3NldEFkZGl0aW9uYWxB
bGxvd2VkSW1hZ2VGb3JtYXRzOikgTlNBcnJheTxOU1N0cmluZyAqPiAqX2FkZGl0aW9uYWxBbGxv
d2VkSW1hZ2VGb3JtYXRzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3Mo
V0tfSU9TX1RCQSkpOwogCiBAZW5kCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCShyZXZpc2lvbiAyMzczMDgpCisrKyBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQ2LDYg
KzI0Niw3IEBACiAjaW5jbHVkZSAiVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5oIgogI2luY2x1ZGUg
IldLU3RyaW5nQ0YuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0xlZ2FjeVdlYkFyY2hpdmUuaD4KKyNp
bmNsdWRlIDxXZWJDb3JlL1VUSVJlZ2lzdHJ5Lmg+CiAjaW5jbHVkZSA8d3RmL01hY2hTZW5kUmln
aHQuaD4KICNlbmRpZgogCkBAIC01OTIsNiArNTkzLDcgQEAgV2ViUGFnZTo6V2ViUGFnZSh1aW50
NjRfdCBwYWdlSUQsIFdlYlBhZwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIG1fcGFnZS0+c2V0
dGluZ3MoKS5zZXRDb250ZW50RGlzcG9zaXRpb25BdHRhY2htZW50U2FuZGJveEVuYWJsZWQodHJ1
ZSk7CiAgICAgc2V0U21hcnRJbnNlcnREZWxldGVFbmFibGVkKHBhcmFtZXRlcnMuc21hcnRJbnNl
cnREZWxldGVFbmFibGVkKTsKKyAgICBXZWJDb3JlOjpzZXRBZGRpdGlvbmFsQWxsb3dlZEltYWdl
Rm9ybWF0cyhwYXJhbWV0ZXJzLmFkZGl0aW9uYWxBbGxvd2VkSW1hZ2VGb3JtYXRzKTsKICNlbmRp
ZgogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjM3MzA4KQorKysgVG9vbHMv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTgtMTAtMTkgIFNh
aWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQg
YW4gU1BJIHRvIGFsbG93IFdlYlZpZXcgY2xpZW50cyB0byBhZGQgYWRkaXRpb25hbCBzdXBwb3J0
ZWQgaW1hZ2UgZm9ybWF0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTkwNDU0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVGVzdCBvcGVuaW5nIGEgVEdBIGltYWdlIGluIFdlYlZpZXcgd2hpY2ggaXMgbm90
IGFsbG93ZWQgYnkgZGVmYXVsdC4gVGhlCisgICAgICAgIFRHQSBmb3JtYXQgd2lsbCBiZSBhbGxv
d2VkIHRocm91Z2ggV0tXZWJWaWV3Q29uZmlndXJhdGlvbi4KKworICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvMTAweDEwMC1yZWQudGdhOiBBZGRlZC4K
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0FkZGl0aW9uYWxBbGxv
d2VkSW1hZ2VGb3JtYXRzLm1tOiBBZGRlZC4KKyAgICAgICAgKFRFU1QpOgorCiAyMDE4LTEwLTE5
ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1Nd
IFtEYXRhbGlzdF0gQ2FuJ3QgcGljayBkYXRhbGlzdCBzdWdnZXN0aW9ucyBpbiBhIHN0b2NrIFdL
V2ViVmlldwpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDIzNzMwOCkKKysr
IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yNDEsNiArMjQxLDggQEAKIAkJNTM2NzcwMzYxQ0M4MUI2
MTAwRDQyNUIxIC8qIFdlYlNjcmlwdE9iamVjdERlc2NyaXB0aW9uLmh0bWwgaW4gQ29weSBSZXNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM2NzcwMzUxQ0M4MTJG
OTAwRDQyNUIxIC8qIFdlYlNjcmlwdE9iamVjdERlc2NyaXB0aW9uLmh0bWwgKi87IH07CiAJCTUz
RUMyNTQxMUU5NkZEODcwMDA4MzFCOSAvKiBQcmlvcml0eVF1ZXVlLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzRUMyNTNGMUU5NkJDODAwMDA4MzFC
OSAvKiBQcmlvcml0eVF1ZXVlLmNwcCAqLzsgfTsKIAkJNTUyMjZBMkYxRUJBNDRCOTAwQzM2QUQw
IC8qIGxhcmdlLXJlZC1zcXVhcmUtaW1hZ2UuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NTIyNkEyRTFFQjk2OUI2MDBDMzZBRDAgLyog
bGFyZ2UtcmVkLXNxdWFyZS1pbWFnZS5odG1sICovOyB9OworCQk1NTU4NDgxQzIxNzEzMTU3MDBG
QjdGRkYgLyogQWRkaXRpb25hbEFsbG93ZWRJbWFnZUZvcm1hdHMubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NTU4NDgxQjIxNzEzMTU2MDBGQjdGRkYg
LyogQWRkaXRpb25hbEFsbG93ZWRJbWFnZUZvcm1hdHMubW0gKi87IH07CisJCTU1NTg0ODI1MjE3
MThDREEwMEZCN0ZGRiAvKiAxMDB4MTAwLXJlZC50Z2EgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTU1ODQ4MjEyMTcxNUE3RTAwRkI3RkZGIC8q
IDEwMHgxMDAtcmVkLnRnYSAqLzsgfTsKIAkJNTU5N0Y4MzYxRDk1OTZDODAwNjZCQzIxIC8qIFN5
bmNocm9uaXplZEZpeGVkUXVldWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTU5N0Y4MzQxRDk1OTZDODAwNjZCQzIxIC8qIFN5bmNocm9uaXplZEZp
eGVkUXVldWUuY3BwICovOyB9OwogCQk1NzE0RUNCOTFDQThCNUIwMDAwNTFBQzggLyogRG93bmxv
YWRSZXF1ZXN0T3JpZ2luYWxVUkwuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzE0RUNCODFDQThCNTg4MDAwNTFBQzggLyogRG93bmxv
YWRSZXF1ZXN0T3JpZ2luYWxVUkwuaHRtbCAqLzsgfTsKIAkJNTcxNEVDQkIxQ0E4QkZFNDAwMDUx
QUM4IC8qIERvd25sb2FkUmVxdWVzdE9yaWdpbmFsVVJMRnJhbWUuaHRtbCBpbiBDb3B5IFJlc291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzE0RUNCQTFDQThCRkQx
MDAwNTFBQzggLyogRG93bmxvYWRSZXF1ZXN0T3JpZ2luYWxVUkxGcmFtZS5odG1sICovOyB9OwpA
QCAtOTQzLDYgKzk0NSw3IEBACiAJCQlkc3RQYXRoID0gVGVzdFdlYktpdEFQSS5yZXNvdXJjZXM7
CiAJCQlkc3RTdWJmb2xkZXJTcGVjID0gNzsKIAkJCWZpbGVzID0gKAorCQkJCTU1NTg0ODI1MjE3
MThDREEwMEZCN0ZGRiAvKiAxMDB4MTAwLXJlZC50Z2EgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJ
CQkJMUE5RTUyQzkxM0U2NUVGNDAwNjkxN0Y1IC8qIDE4LWNoYXJhY3RlcnMuaHRtbCBpbiBDb3B5
IFJlc291cmNlcyAqLywKIAkJCQkzNzkwMjhCOTE0RkFDMjRDMDA3RTZCNDMgLyogYWNjZXB0c0Zp
cnN0TW91c2UuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQkxQzJCODE4NzFDODkyNUEw
MDBBNTUyOUYgLyogQWhlbS50dGYgaW4gQ29weSBSZXNvdXJjZXMgKi8sCkBAIC0xNDM0LDcgKzE0
MzcsNiBAQAogCQkzN0UxMDY0QjE2OTc2N0Y3MDBCNzhCRDAgLyogRE9NSFRNTFRhYmxlQ2VsbEVs
ZW1lbnRDZWxsQWJvdmUuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9IERPTUhUTUxU
YWJsZUNlbGxFbGVtZW50Q2VsbEFib3ZlLmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTM3RTM4QzMzMTY5QjdEMDEwMDg0QzI4QyAvKiBXZWJWaWV3RGlkUmVtb3ZlRnJhbWVGcm9t
SGllcmFyY2h5Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2Vi
Vmlld0RpZFJlbW92ZUZyYW1lRnJvbUhpZXJhcmNoeS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMzdFN0RENjMxRUEwNkZGMjAwOUIzOTZEIC8qIEFkZGl0aW9uYWxSZWFkQWNjZXNz
QWxsb3dlZFVSTHMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBB
ZGRpdGlvbmFsUmVhZEFjY2Vzc0FsbG93ZWRVUkxzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQkzN0U3REQ2NTFFQTA3MTVCMDA5QjM5NkQgLyogQWRkaXRpb25hbFJlYWRBY2Nlc3NB
bGxvd2VkVVJMc1Byb3RvY29sLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFk
ZGl0aW9uYWxSZWFkQWNjZXNzQWxsb3dlZFVSTHNQcm90b2NvbC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkzN0U3REQ2NjFFQTA3MUYzMDA5QjM5NkQgLyogQWRkaXRpb25hbFJlYWRB
Y2Nlc3NBbGxvd2VkVVJMc1BsdWdpbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IEFkZGl0aW9uYWxSZWFkQWNjZXNzQWxsb3dlZFVSTHNQbHVnaW4ubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3RkI3Mjk1MURCMkU4MkYwMEU0MUJFNCAvKiBDb250
ZXh0TWVudURlZmF1bHRJdGVtc0hhdmVUYWdzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gQ29udGV4dE1lbnVEZWZhdWx0SXRlbXNIYXZlVGFncy5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJM0YxQjUyNjgxRDNENzEyOTAwOEQ2MEM0IC8qIEZ1bGxz
Y3JlZW5MYXlvdXRDb25zdHJhaW50cy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IEZ1bGxzY3JlZW5MYXlvdXRDb25zdHJhaW50cy5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTE1NDYsNiArMTU0OCw5IEBACiAJCTUzNjc3MDM1MUNDODEyRjkwMEQ0
MjVCMSAvKiBXZWJTY3JpcHRPYmplY3REZXNjcmlwdGlvbi5odG1sICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5o
dG1sOyBwYXRoID0gV2ViU2NyaXB0T2JqZWN0RGVzY3JpcHRpb24uaHRtbDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNTNFQzI1M0YxRTk2QkM4MDAwMDgzMUI5IC8qIFByaW9yaXR5UXVl
dWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHJpb3JpdHlRdWV1
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU1MjI2QTJFMUVCOTY5QjYwMEMz
NkFEMCAvKiBsYXJnZS1yZWQtc3F1YXJlLWltYWdlLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7
IHBhdGggPSAibGFyZ2UtcmVkLXNxdWFyZS1pbWFnZS5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNTU1ODQ4MUIyMTcxMzE1NjAwRkI3RkZGIC8qIEFkZGl0aW9uYWxBbGxvd2Vk
SW1hZ2VGb3JtYXRzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
QWRkaXRpb25hbEFsbG93ZWRJbWFnZUZvcm1hdHMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTU1NTg0ODFGMjE3MTM1MDgwMEZCN0ZGRiAvKiBBZGRpdGlvbmFsUmVhZEFjY2Vzc0Fs
bG93ZWRVUkxzUHJvdG9jb2wuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWRk
aXRpb25hbFJlYWRBY2Nlc3NBbGxvd2VkVVJMc1Byb3RvY29sLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTU1NTg0ODIxMjE3MTVBN0UwMEZCN0ZGRiAvKiAxMDB4MTAwLXJlZC50Z2Eg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBmaWxlOyBw
YXRoID0gIjEwMHgxMDAtcmVkLnRnYSI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU1
OTdGODM0MUQ5NTk2QzgwMDY2QkMyMSAvKiBTeW5jaHJvbml6ZWRGaXhlZFF1ZXVlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN5bmNocm9uaXplZEZpeGVkUXVldWUu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NzE0RUNCODFDQThCNTg4MDAwNTFB
QzggLyogRG93bmxvYWRSZXF1ZXN0T3JpZ2luYWxVUkwuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRt
bDsgcGF0aCA9IERvd25sb2FkUmVxdWVzdE9yaWdpbmFsVVJMLmh0bWw7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTU3MTRFQ0JBMUNBOEJGRDEwMDA1MUFDOCAvKiBEb3dubG9hZFJlcXVl
c3RPcmlnaW5hbFVSTEZyYW1lLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSBEb3du
bG9hZFJlcXVlc3RPcmlnaW5hbFVSTEZyYW1lLmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0yMzEwLDkgKzIzMTUsMTAgQEAKIAkJCQlBMTZGNjZCODFDNDBFOUUxMDBCRDREMjQg
LyogUmVzb3VyY2VzICovLAogCQkJCTVDRUFCNURGMUZBOTM3Q0IwMEE3N0ZBQSAvKiBfV0tJbnB1
dERlbGVnYXRlLm1tICovLAogCQkJCTdDRUZBOTY0MUFDMEI5RTIwMEI5MTBGRCAvKiBfV0tVc2Vy
Q29udGVudEV4dGVuc2lvblN0b3JlLm1tICovLAorCQkJCTU1NTg0ODFCMjE3MTMxNTYwMEZCN0ZG
RiAvKiBBZGRpdGlvbmFsQWxsb3dlZEltYWdlRm9ybWF0cy5tbSAqLywKIAkJCQkzN0U3REQ2MzFF
QTA2RkYyMDA5QjM5NkQgLyogQWRkaXRpb25hbFJlYWRBY2Nlc3NBbGxvd2VkVVJMcy5tbSAqLywK
IAkJCQkzN0U3REQ2NjFFQTA3MUYzMDA5QjM5NkQgLyogQWRkaXRpb25hbFJlYWRBY2Nlc3NBbGxv
d2VkVVJMc1BsdWdpbi5tbSAqLywKLQkJCQkzN0U3REQ2NTFFQTA3MTVCMDA5QjM5NkQgLyogQWRk
aXRpb25hbFJlYWRBY2Nlc3NBbGxvd2VkVVJMc1Byb3RvY29sLmggKi8sCisJCQkJNTU1ODQ4MUYy
MTcxMzUwODAwRkI3RkZGIC8qIEFkZGl0aW9uYWxSZWFkQWNjZXNzQWxsb3dlZFVSTHNQcm90b2Nv
bC5oICovLAogCQkJCUExREY3NDMwMUM0MUI2NTgwMEEyRjREMCAvKiBBbHdheXNSZXZhbGlkYXRl
ZFVSTFNjaGVtZXMubW0gKi8sCiAJCQkJMkRFNzFBRkQxRDQ5QzBCRDAwOTA0MDk0IC8qIEFuaW1h
dGVkUmVzaXplLm1tICovLAogCQkJCTYzRjY2ODIwMUY5N0MzQUEwMDMyRUU1MSAvKiBBcHBsaWNh
dGlvbk1hbmlmZXN0Lm1tICovLApAQCAtMjY1MSw2ICsyNjU3LDcgQEAKIAkJQTE2RjY2QjgxQzQw
RTlFMTAwQkQ0RDI0IC8qIFJlc291cmNlcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJ
Y2hpbGRyZW4gPSAoCisJCQkJNTU1ODQ4MjEyMTcxNUE3RTAwRkI3RkZGIC8qIDEwMHgxMDAtcmVk
LnRnYSAqLywKIAkJCQlDMjVDQ0EwQzFFNTE0MEU1MDAyNkNCOEEgLyogQWxsQWhlbS5zdmcgKi8s
CiAJCQkJRjRBOTIwMkUxRkVFMzRDODAwRjU5NTkwIC8qIGFwcGxlLWRhdGEtdXJsLmh0bWwgKi8s
CiAJCQkJRjQ3RDMwRUIxRUQyODYxOTAwMDQ4MkUxIC8qIGFwcGxlLmdpZiAqLywKQEAgLTM3MTMs
NiArMzcyMCw3IEBACiAJCQkJMkUyMDVCQTQxRjUyNzc0NjAwNTk1MkREIC8qIEFjY2Vzc2liaWxp
dHlUZXN0c0lPUy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTlCRDUxMTFDMUZFOEUxMTYwMEQyQjYz
MCAvKiBBY2Nlc3NpbmdQYXN0ZWRJbWFnZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCUY0NUI2M0ZF
MUYxOUQ0MTAwMDlEMzhCOSAvKiBBY3Rpb25TaGVldFRlc3RzLm1tIGluIFNvdXJjZXMgKi8sCisJ
CQkJNTU1ODQ4MUMyMTcxMzE1NzAwRkI3RkZGIC8qIEFkZGl0aW9uYWxBbGxvd2VkSW1hZ2VGb3Jt
YXRzLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMzdFN0RENjQxRUEwNkZGMjAwOUIzOTZEIC8qIEFk
ZGl0aW9uYWxSZWFkQWNjZXNzQWxsb3dlZFVSTHMubW0gaW4gU291cmNlcyAqLywKIAkJCQk3QTkw
OUE3RDFEODc3NDgwMDA3RTEwRjggLyogQWZmaW5lVHJhbnNmb3JtLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUExREY3NDMyMUM0MUI2NTgwMEEyRjREMCAvKiBBbHdheXNSZXZhbGlkYXRlZFVSTFNj
aGVtZXMubW0gaW4gU291cmNlcyAqLywKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvQWRkaXRpb25hbEFsbG93ZWRJbWFnZUZvcm1hdHMubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9BZGRpdGlvbmFsQWxsb3dl
ZEltYWdlRm9ybWF0cy5tbQkobm9uZXhpc3RlbnQpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL0FkZGl0aW9uYWxBbGxvd2VkSW1hZ2VGb3JtYXRzLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIK
KyNpbXBvcnQgPFdlYktpdC9XS0ZvdW5kYXRpb24uaD4KKworI2lmIFdLX0FQSV9FTkFCTEVEICYm
IFBMQVRGT1JNKENPQ09BKQorCisjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorI2ltcG9y
dCAiVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5oIgorI2ltcG9ydCAiV0tXZWJWaWV3Q29uZmlndXJh
dGlvbkV4dHJhcy5oIgorI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2
YXRlLmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisKK1RFU1QoV2ViS2l0LCBBZGRpdGlv
bmFsQWxsb3dlZEltYWdlRm9ybWF0cykKK3sKKyAgICBSZXRhaW5QdHI8V0tXZWJWaWV3Q29uZmln
dXJhdGlvbj4gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9u
IGFsbG9jXSBpbml0XSk7CisgICAgW2NvbmZpZ3VyYXRpb24gX3NldEFkZGl0aW9uYWxBbGxvd2Vk
SW1hZ2VGb3JtYXRzOkBbQCJjb20udHJ1ZXZpc2lvbi50Z2EtaW1hZ2UiXV07CisKKyAgICBSZXRh
aW5QdHI8V0tXZWJWaWV3PiB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5p
dFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZp
Z3VyYXRpb24uZ2V0KCldKTsKKworICAgIFJldGFpblB0cjxOU1VSTD4gdGVzdFVSTCA9IFtbTlNC
dW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCIxMDB4MTAwLXJlZCIgd2l0aEV4dGVu
c2lvbjpAInRnYSIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKKyAg
ICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnRlc3RV
UkwuZ2V0KCldXTsKKyAgICBbd2ViVmlldyBfdGVzdF93YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlv
bl07CisKKyAgICBfX2Jsb2NrIGJvb2wgaXNEb25lID0gZmFsc2U7CisgICAgW3dlYlZpZXcgX2Rv
QWZ0ZXJOZXh0UHJlc2VudGF0aW9uVXBkYXRlOl57CisgICAgICAgIFt3ZWJWaWV3IGV2YWx1YXRl
SmF2YVNjcmlwdDpAIltkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdpbWcnKS53aWR0aF0iIGNvbXBs
ZXRpb25IYW5kbGVyOl4oaWQgdmFsdWUsIE5TRXJyb3IgKmVycm9yKSB7CisgICAgICAgICAgICBD
R0Zsb2F0IHdpZHRoID0gW1t2YWx1ZSBvYmplY3RBdEluZGV4OjBdIGZsb2F0VmFsdWVdOworICAg
ICAgICAgICAgRVhQRUNUX0VRKHdpZHRoLCAxMDApOworICAgICAgICAgICAgaXNEb25lID0gdHJ1
ZTsKKyAgICAgICAgfV07CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZp
c0RvbmUpOworfQorCisjZW5kaWYKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvMTAweDEwMC1yZWQudGdhCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2Fubm90IGRpc3BsYXk6IGZpbGUg
bWFya2VkIGFzIGEgYmluYXJ5IHR5cGUuCnN2bjptaW1lLXR5cGUgPSBhcHBsaWNhdGlvbi9vY3Rl
dC1zdHJlYW0KClByb3BlcnR5IGNoYW5nZXMgb246IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvMTAweDEwMC1yZWQudGdhCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjptaW1lLXR5
cGUKIyMgLTAsMCArMSAjIworYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgcHJvcGVydHkKCkFBQUtBQUFBQUFBQUFBQUFaQUJrQUNBbzR3QUEvLy9qQUFELy8r
TUFBUC8vNHdBQS8vL2pBQUQvLytNQUFQLy80d0FBLy8vakFBRC8KLytNQUFQLy80d0FBLy8vakFB
RC8vK01BQVAvLzR3QUEvLy9qQUFELy8rTUFBUC8vNHdBQS8vL2pBQUQvLytNQUFQLy80d0FBLy8v
agpBQUQvLytNQUFQLy80d0FBLy8vakFBRC8vK01BQVAvLzR3QUEvLy9qQUFELy8rTUFBUC8vNHdB
QS8vL2pBQUQvLytNQUFQLy80d0FBCi8vL2pBQUQvLytNQUFQLy80d0FBLy8vakFBRC8vK01BQVAv
LzR3QUEvLy9qQUFELy8rTUFBUC8vNHdBQS8vL2pBQUQvLytNQUFQLy8KNHdBQS8vL2pBQUQvLytN
QUFQLy80d0FBLy8vakFBRC8vK01BQVAvLzR3QUEvLy9qQUFELy8rTUFBUC8vNHdBQS8vL2pBQUQv
LytNQQpBUC8vNHdBQS8vL2pBQUQvLytNQUFQLy80d0FBLy8vakFBRC8vK01BQVAvLzR3QUEvLy9q
QUFELy8rTUFBUC8vNHdBQS8vL2pBQUQvCi8rTUFBUC8vNHdBQS8vL2pBQUQvLytNQUFQLy80d0FB
Ly8vakFBRC8vK01BQVAvLzR3QUEvLy9qQUFELy8rTUFBUC8vNHdBQS8vL2oKQUFELy8rTUFBUC8v
NHdBQS8vL2pBQUQvLytNQUFQLy80d0FBLy8vakFBRC8vK01BQVAvLzR3QUEvLy9qQUFELy8rTUFB
UC8vNHdBQQovLy9qQUFELy8rTUFBUC8vNHdBQS8vL2pBQUQvLytNQUFQLy80d0FBLy8vakFBRC8v
K01BQVAvLzR3QUEvLy9qQUFELy8rTUFBUC8vCjR3QUEvLzg9Cgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>352845</attachid>
            <date>2018-10-19 18:19:23 -0700</date>
            <delta_ts>2018-10-22 14:14:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190454-20181019181923.patch</filename>
            <type>text/plain</type>
            <size>36539</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzNzMwOCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM3IEBACisyMDE4LTEwLTE5ICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGFuIFNQ
SSB0byBhbGxvdyBXZWJWaWV3IGNsaWVudHMgdG8gYWRkIGFkZGl0aW9uYWwgc3VwcG9ydGVkIGlt
YWdlIGZvcm1hdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE5MDQ1NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEFkZCBhbiBTUEkgdG8gYWxsb3cgYWRkaXRpb25hbCBzdXBwb3J0ZWQgaW1hZ2UgZm9ybWF0
cyBpbiBXZWJWaWV3LiBUaGVzZQorICAgICAgICBhZGRpdGlvbmFsIGZvcm1hdHMgY2FuIGJlIHNl
dCBpbiB0aGUgV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhcyBhbiBOU0FycmF5CisgICAgICAgIG9m
IE5TdHJpbmdzLiBFYWNoIHN0cmluZyByZXByZXNlbnRzIHRoZSBVVEkgb2YgdGhlIGFkZGl0aW9u
YWwgYWxsb3dlZCAKKyAgICAgICAgaW1hZ2UgZm9ybWF0LgorCisgICAgICAgICogcGxhdGZvcm0v
TUlNRVR5cGVSZWdpc3RyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjppbml0aWFsaXplU3VwcG9y
dGVkSW1hZ2VNSU1FVHlwZXMpOgorICAgICAgICAoV2ViQ29yZTo6aW5pdGlhbGl6ZVN1cHBvcnRl
ZEltYWdlQWRkaXRpb25hbE1JTUVUeXBlcyk6IEFkZCB0aGUgbWltZSB0eXBlcworICAgICAgICBv
ZiB0aGUgYWRkaXRpb25hbCBhbGxvd2VkIGltYWdlIGZvcm1hdHMgaWYgdGhleSBleGlzdC4KKyAg
ICAgICAgKFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkSW1hZ2VNSU1FVHlw
ZSk6CisgICAgICAgIChXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZEltYWdl
UmVzb3VyY2VNSU1FVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5Ojpp
bml0aWFsaXplU3VwcG9ydGVkSW1hZ2VBZGRpdGlvbmFsTUlNRVR5cGVzSWZOZWVkZWQpOgorICAg
ICAgICAqIHBsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURl
Y29kZXJDRzo6ZW5jb2RlZERhdGFTdGF0dXMgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NnL1VUSVJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRlZmF1bHRBbGxv
d2VkSW1hZ2VGb3JtYXRzKTogVGhpcyBpcyB0aGUgV2ViS2l0IGRlZmF1bHQgbGlzdCBvZgorICAg
ICAgICBzdXBwb3J0ZWQgaW1hZ2UgZm9ybWF0cy4KKyAgICAgICAgKFdlYkNvcmU6OmludGVybmFs
QWRkaXRpb25hbEFsbG93ZWRJbWFnZUZvcm1hdHMpOgorICAgICAgICAoV2ViQ29yZTo6YWRkaXRp
b25hbEFsbG93ZWRJbWFnZUZvcm1hdHMpOgorICAgICAgICAoV2ViQ29yZTo6c2V0QWRkaXRpb25h
bEFsbG93ZWRJbWFnZUZvcm1hdHMpOgorICAgICAgICAoV2ViQ29yZTo6aXNBbGxvd2VkSW1hZ2VG
b3JtYXQpOiBUaGlzIGZ1bmN0aW9uIGNoZWNrcyB0aGUgZGVmYXVsdCBsaXN0IGFuZAorICAgICAg
ICB0aGUgYWRkaXRpb25hbCBsaXN0IHRvIGRlY2lkZSB3aGV0aGVyIHRoZSBpbWFnZSBmb3JtYXQg
aXMgc3VwcG9ydGVkLgorICAgICAgICAoV2ViQ29yZTo6YWxsb3dlZEltYWdlVVRJcyk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjppc0FsbG93ZWRJbWFnZVVUSSk6IERlbGV0ZWQuCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvVVRJUmVnaXN0cnkuaDoKKwogMjAxOC0xMC0xOSAg
U3RlcGhhbiBTemFibyAgPHN0ZXBoYW4uc3phYm9Ac29ueS5jb20+CiAKICAgICAgICAgW1dpbkNh
aXJvXSBTZWFyY2ggdGVybXMgYXJlIG5vdCBzYXZlZCBmb3IgPGlucHV0IHR5cGU9InNlYXJjaCI+
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcAko
cmV2aXNpb24gMjM3MzA4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdp
c3RyeS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU4LDYgKzU4LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogc3RhdGljIEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+KiBz
dXBwb3J0ZWRJbWFnZVJlc291cmNlTUlNRVR5cGVzOwogc3RhdGljIEhhc2hTZXQ8U3RyaW5nLCBB
U0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+KiBzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlczsKIHN0YXRp
YyBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiogc3VwcG9ydGVkSW1h
Z2VNSU1FVHlwZXNGb3JFbmNvZGluZzsKK3N0YXRpYyBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNl
SW5zZW5zaXRpdmVIYXNoPiogc3VwcG9ydGVkSW1hZ2VBZGRpdGlvbmFsTUlNRVR5cGVzOwogc3Rh
dGljIEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+KiBzdXBwb3J0ZWRK
YXZhU2NyaXB0TUlNRVR5cGVzOwogc3RhdGljIEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNl
bnNpdGl2ZUhhc2g+KiBzdXBwb3J0ZWROb25JbWFnZU1JTUVUeXBlczsKIHN0YXRpYyBIYXNoU2V0
PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiogc3VwcG9ydGVkTWVkaWFNSU1FVHlw
ZXM7CkBAIC03OCw3ICs3OSw3IEBAIHN0YXRpYyB2b2lkIGluaXRpYWxpemVTdXBwb3J0ZWRJbWFn
ZU1JTUUKICAgICB9CiAKICNpZm5kZWYgTkRFQlVHCi0gICAgZm9yIChhdXRvJiB1dGkgOiBhbGxv
d2VkSW1hZ2VVVElzKCkpIHsKKyAgICBmb3IgKGF1dG8mIHV0aSA6IGRlZmF1bHRBbGxvd2VkSW1h
Z2VGb3JtYXRzKCkpIHsKICAgICAgICAgYXV0byBtaW1lVHlwZSA9IE1JTUVUeXBlRm9ySW1hZ2VT
b3VyY2VUeXBlKHV0aSk7CiAgICAgICAgIGlmICghbWltZVR5cGUuaXNFbXB0eSgpKSB7CiAgICAg
ICAgICAgICBBU1NFUlQoc3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXMtPmNvbnRhaW5zKG1pbWVUeXBl
KSk7CkBAIC04OCw3ICs4OSw3IEBAIHN0YXRpYyB2b2lkIGluaXRpYWxpemVTdXBwb3J0ZWRJbWFn
ZU1JTUUKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGZvciAoYXV0byYgbWltZSA6ICpzdXBw
b3J0ZWRJbWFnZU1JTUVUeXBlcykKLSAgICAgICAgQVNTRVJUX1VOVVNFRChtaW1lLCBhbGxvd2Vk
SW1hZ2VVVElzKCkuY29udGFpbnMoVVRJRnJvbU1JTUVUeXBlKG1pbWUpKSk7CisgICAgICAgIEFT
U0VSVF9VTlVTRUQobWltZSwgZGVmYXVsdEFsbG93ZWRJbWFnZUZvcm1hdHMoKS5jb250YWlucyhV
VElGcm9tTUlNRVR5cGUobWltZSkpKTsKICNlbmRpZgogI2VuZGlmCiAKQEAgLTE4NSw2ICsxODYs
MjUgQEAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVN1cHBvcnRlZEltYWdlTUlNRQogI2VuZGlmCiB9
CiAKK3N0YXRpYyB2b2lkIGluaXRpYWxpemVTdXBwb3J0ZWRJbWFnZUFkZGl0aW9uYWxNSU1FVHlw
ZXMoKQoreworICAgIC8vIFN1cHBvcnRlZEltYWdlQWRkaXRpb25hbE1JTUVUeXBlcyBjYW4gYmUg
cmVpbml0aWFsaXplZCBpZiBhZGRpdGlvbmFsQWxsb3dlZEltYWdlRm9ybWF0cworICAgIC8vIHdh
cyB1cGRhdGVkIGFmdGVyIHRoaXMgb25lIGlzIGluaXRpYWxpemVkLgorICAgIGlmICghc3VwcG9y
dGVkSW1hZ2VBZGRpdGlvbmFsTUlNRVR5cGVzKQorICAgICAgICBzdXBwb3J0ZWRJbWFnZUFkZGl0
aW9uYWxNSU1FVHlwZXMgPSBuZXcgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZl
SGFzaD47CisKKyNpZiBVU0UoQ0cpCisgICAgQVNTRVJUKHN1cHBvcnRlZEltYWdlQWRkaXRpb25h
bE1JTUVUeXBlcy0+aXNFbXB0eSgpKTsKKworICAgIC8vIEFkZCB0aGUgbWltZSB0eXBlcyBvZiB0
aGUgYWRkaXRpb25hbEFsbG93ZWRJbWFnZUZvcm1hdHMuCisgICAgZm9yIChhdXRvJiB1dGkgOiBh
ZGRpdGlvbmFsQWxsb3dlZEltYWdlRm9ybWF0cygpKSB7CisgICAgICAgIGF1dG8gbWltZVR5cGUg
PSBNSU1FVHlwZUZvckltYWdlU291cmNlVHlwZSh1dGkpOworICAgICAgICBpZiAoIW1pbWVUeXBl
LmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHN1cHBvcnRlZEltYWdlQWRkaXRpb25hbE1JTUVUeXBl
cy0+YWRkKG1pbWVUeXBlKTsKKyAgICB9CisjZW5kaWYKK30KKwogc3RhdGljIHZvaWQgaW5pdGlh
bGl6ZVN1cHBvcnRlZEphdmFTY3JpcHRNSU1FVHlwZXMoKQogewogICAgIC8vIGh0dHBzOi8vaHRt
bC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3NjcmlwdGluZy5odG1sI2phdmFzY3JpcHQtbWlt
ZS10eXBlCkBAIC00NDUsNyArNDY1LDkgQEAgYm9vbCBNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBv
cnRlZEltYWdlTQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFzdXBwb3J0ZWRJbWFn
ZU1JTUVUeXBlcykKICAgICAgICAgaW5pdGlhbGl6ZVN1cHBvcnRlZEltYWdlTUlNRVR5cGVzKCk7
Ci0gICAgcmV0dXJuIHN1cHBvcnRlZEltYWdlTUlNRVR5cGVzLT5jb250YWlucyhnZXROb3JtYWxp
emVkTUlNRVR5cGUobWltZVR5cGUpKTsKKyAgICBpZiAoIXN1cHBvcnRlZEltYWdlQWRkaXRpb25h
bE1JTUVUeXBlcykKKyAgICAgICAgaW5pdGlhbGl6ZVN1cHBvcnRlZEltYWdlQWRkaXRpb25hbE1J
TUVUeXBlcygpOworICAgIHJldHVybiBzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlcy0+Y29udGFpbnMo
Z2V0Tm9ybWFsaXplZE1JTUVUeXBlKG1pbWVUeXBlKSkgfHwgc3VwcG9ydGVkSW1hZ2VBZGRpdGlv
bmFsTUlNRVR5cGVzLT5jb250YWlucyhnZXROb3JtYWxpemVkTUlNRVR5cGUobWltZVR5cGUpKTsK
IH0KIAogYm9vbCBNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZEltYWdlVmlkZW9PclNWR01J
TUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCkBAIC00NjcsNyArNDg5LDkgQEAgYm9vbCBN
SU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZEltYWdlUgogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgaWYgKCFzdXBwb3J0ZWRJbWFnZVJlc291cmNlTUlNRVR5cGVzKQogICAgICAgICBpbml0
aWFsaXplU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXMoKTsKLSAgICByZXR1cm4gc3VwcG9ydGVkSW1h
Z2VSZXNvdXJjZU1JTUVUeXBlcy0+Y29udGFpbnMoZ2V0Tm9ybWFsaXplZE1JTUVUeXBlKG1pbWVU
eXBlKSk7CisgICAgaWYgKCFzdXBwb3J0ZWRJbWFnZUFkZGl0aW9uYWxNSU1FVHlwZXMpCisgICAg
ICAgIGluaXRpYWxpemVTdXBwb3J0ZWRJbWFnZUFkZGl0aW9uYWxNSU1FVHlwZXMoKTsKKyAgICBy
ZXR1cm4gc3VwcG9ydGVkSW1hZ2VSZXNvdXJjZU1JTUVUeXBlcy0+Y29udGFpbnMoZ2V0Tm9ybWFs
aXplZE1JTUVUeXBlKG1pbWVUeXBlKSkgfHwgc3VwcG9ydGVkSW1hZ2VBZGRpdGlvbmFsTUlNRVR5
cGVzLT5jb250YWlucyhnZXROb3JtYWxpemVkTUlNRVR5cGUobWltZVR5cGUpKTsKIH0KIAogYm9v
bCBNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZEltYWdlTUlNRVR5cGVGb3JFbmNvZGluZyhj
b25zdCBTdHJpbmcmIG1pbWVUeXBlKQpAQCAtNjUxLDYgKzY3NSwxNCBAQCBib29sIE1JTUVUeXBl
UmVnaXN0cnk6OmNhblNob3dNSU1FVHlwZShjCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCit2b2lk
IE1JTUVUeXBlUmVnaXN0cnk6OmluaXRpYWxpemVTdXBwb3J0ZWRJbWFnZUFkZGl0aW9uYWxNSU1F
VHlwZXNJZk5lZWRlZCgpCit7CisgICAgLy8gUmVpbml0aWFsaXplIHRoZSBzdXBwb3J0ZWRJbWFn
ZUFkZGl0aW9uYWxNSU1FVHlwZXMgaWYgdGhleSBoYXZlIG5vdCBiZWVuIHNldCBvciB3ZXJlIHNl
dCB0byBhbiBlbXB0eSBsaXN0LgorICAgIGlmICghc3VwcG9ydGVkSW1hZ2VBZGRpdGlvbmFsTUlN
RVR5cGVzIHx8ICFzdXBwb3J0ZWRJbWFnZUFkZGl0aW9uYWxNSU1FVHlwZXMtPmlzRW1wdHkoKSkK
KyAgICAgICAgcmV0dXJuOworICAgIGluaXRpYWxpemVTdXBwb3J0ZWRJbWFnZUFkZGl0aW9uYWxN
SU1FVHlwZXMoKTsKK30KKwogY29uc3QgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0
aXZlSGFzaD4mIE1JTUVUeXBlUmVnaXN0cnk6OmdldFN1cHBvcnRlZEltYWdlTUlNRVR5cGVzKCkK
IHsKICAgICBpZiAoIXN1cHBvcnRlZEltYWdlTUlNRVR5cGVzKQpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuaAkocmV2aXNpb24gMjM3MzA4KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xMDgsNiArMTA4LDggQEAgcHVibGljOgogICAgIC8vIG1ha2VzIHRoaXMgdGVzdCBpcyBhZnRl
ciBtYW55IG90aGVyIHRlc3RzIGFyZSBkb25lIG9uIHRoZSBNSU1FIHR5cGUuCiAgICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIGJvb2wgaXNUZXh0TUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSk7CiAKKyAgICBzdGF0aWMgdm9pZCBpbml0aWFsaXplU3VwcG9ydGVkSW1hZ2VBZGRpdGlvbmFs
TUlNRVR5cGVzSWZOZWVkZWQoKTsKKwogICAgIC8vIEZJWE1FOiBXZWJLaXQgY29kaW5nIHN0eWxl
IHNheXMgd2Ugc2hvdWxkIG5vdCBoYXZlIHRoZSB3b3JkICJnZXQiIGluIHRoZSBuYW1lcyBvZiB0
aGVzZSBmdW5jdGlvbnMuCiAgICAgLy8gRklYTUU6IFdvdWxkIGJlIG5pY2UgdG8gZmluZCBhIHdh
eSB0byBhdm9pZCBleHBvc2luZyB0aGVzZSBzZXRzLCBldmVuIHdvcnNlIGV4cG9zaW5nIG5vbi1j
b25zdCByZWZlcmVuY2VzLgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBIYXNoU2V0PFN0cmlu
ZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgZ2V0U3VwcG9ydGVkTm9uSW1hZ2VNSU1FVHlw
ZXMoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVj
b2RlckNHLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9JbWFnZURlY29kZXJDRy5jcHAJKHJldmlzaW9uIDIzNzMwOCkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTk5LDcgKzE5OSw3IEBAIEVuY29kZWREYXRhU3RhdHVzIEltYWdlRGVjb2RlckNHOjpl
bmNvZGUKICAgICAgICAgcmV0dXJuIEVuY29kZWREYXRhU3RhdHVzOjpFcnJvcjsKIAogICAgIGNh
c2Uga0NHSW1hZ2VTdGF0dXNJbmNvbXBsZXRlOiB7Ci0gICAgICAgIGlmICghaXNBbGxvd2VkSW1h
Z2VVVEkodXRpKSkKKyAgICAgICAgaWYgKCFpc0FsbG93ZWRJbWFnZUZvcm1hdCh1dGkpKQogICAg
ICAgICAgICAgcmV0dXJuIEVuY29kZWREYXRhU3RhdHVzOjpFcnJvcjsKIAogICAgICAgICBSZXRh
aW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBpbWFnZTBQcm9wZXJ0aWVzID0gYWRvcHRDRihDR0ltYWdl
U291cmNlQ29weVByb3BlcnRpZXNBdEluZGV4KG1fbmF0aXZlRGVjb2Rlci5nZXQoKSwgMCwgaW1h
Z2VTb3VyY2VPcHRpb25zKCkuZ2V0KCkpKTsKQEAgLTIxMyw3ICsyMTMsNyBAQCBFbmNvZGVkRGF0
YVN0YXR1cyBJbWFnZURlY29kZXJDRzo6ZW5jb2RlCiAgICAgfQogCiAgICAgY2FzZSBrQ0dJbWFn
ZVN0YXR1c0NvbXBsZXRlOgotICAgICAgICBpZiAoIWlzQWxsb3dlZEltYWdlVVRJKHV0aSkpCisg
ICAgICAgIGlmICghaXNBbGxvd2VkSW1hZ2VGb3JtYXQodXRpKSkKICAgICAgICAgICAgIHJldHVy
biBFbmNvZGVkRGF0YVN0YXR1czo6RXJyb3I7CiAKICAgICAgICAgcmV0dXJuIEVuY29kZWREYXRh
U3RhdHVzOjpDb21wbGV0ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL1VUSVJlZ2lzdHJ5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9VVElSZWdpc3RyeS5jcHAJKHJldmlzaW9uIDIzNzMwOCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1VUSVJlZ2lzdHJ5LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgVVNFKENHKQogCisjaW5jbHVkZSAiTUlNRVR5
cGVSZWdpc3RyeS5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL05l
dmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8SW1hZ2VJTy9JbWFnZUlPLmg+CkBAIC0zOCwxMCAr
MzksMTAgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1IYXNoU2V0PFN0cmluZz4mIGFsbG93
ZWRJbWFnZVVUSXMoKQorY29uc3QgSGFzaFNldDxTdHJpbmc+JiBkZWZhdWx0QWxsb3dlZEltYWdl
Rm9ybWF0cygpCiB7CiAgICAgLy8gQ0cgYXQgbGVhc3Qgc3VwcG9ydHMgdGhlIGZvbGxvd2luZyBz
dGFuZGFyZCBpbWFnZSB0eXBlczoKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxT
dHJpbmc+PiBzX2FsbG93ZWRJbWFnZVVUSXMgPSBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8U3RyaW5n
PiB7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hTZXQ8U3RyaW5nPj4gZGVmYXVsdEFs
bG93ZWRJbWFnZUZvcm1hdHMgPSBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8U3RyaW5nPiB7CiAgICAg
ICAgICJjb20uY29tcHVzZXJ2ZS5naWYiLAogICAgICAgICAiY29tLm1pY3Jvc29mdC5ibXAiLAog
ICAgICAgICAiY29tLm1pY3Jvc29mdC5jdXIiLApAQCAtNTksNyArNjAsNyBAQCBIYXNoU2V0PFN0
cmluZz4mIGFsbG93ZWRJbWFnZVVUSXMoKQogICAgIGlmICghY2hlY2tlZCkgewogICAgICAgICBS
ZXRhaW5QdHI8Q0ZBcnJheVJlZj4gc3lzdGVtSW1hZ2VVVElzID0gYWRvcHRDRihDR0ltYWdlU291
cmNlQ29weVR5cGVJZGVudGlmaWVycygpKTsKICAgICAgICAgQ0ZJbmRleCBjb3VudCA9IENGQXJy
YXlHZXRDb3VudChzeXN0ZW1JbWFnZVVUSXMuZ2V0KCkpOwotICAgICAgICBmb3IgKGF1dG8mIGlt
YWdlVVRJIDogc19hbGxvd2VkSW1hZ2VVVElzLmdldCgpKSB7CisgICAgICAgIGZvciAoYXV0byYg
aW1hZ2VVVEkgOiBkZWZhdWx0QWxsb3dlZEltYWdlRm9ybWF0cy5nZXQoKSkgewogICAgICAgICAg
ICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBzdHJpbmcgPSBpbWFnZVVUSS5jcmVhdGVDRlN0cmlu
ZygpOwogICAgICAgICAgICAgQVNTRVJUKENGQXJyYXlDb250YWluc1ZhbHVlKHN5c3RlbUltYWdl
VVRJcy5nZXQoKSwgQ0ZSYW5nZU1ha2UoMCwgY291bnQpLCBzdHJpbmcuZ2V0KCkpKTsKICAgICAg
ICAgfQpAQCAtNjcsMTIgKzY4LDM3IEBAIEhhc2hTZXQ8U3RyaW5nPiYgYWxsb3dlZEltYWdlVVRJ
cygpCiAgICAgfQogI2VuZGlmCiAKLSAgICByZXR1cm4gc19hbGxvd2VkSW1hZ2VVVElzLmdldCgp
OworICAgIHJldHVybiBkZWZhdWx0QWxsb3dlZEltYWdlRm9ybWF0czsKIH0KIAotYm9vbCBpc0Fs
bG93ZWRJbWFnZVVUSShjb25zdCBTdHJpbmcmIGltYWdlVVRJKQorc3RhdGljIEhhc2hTZXQ8U3Ry
aW5nPiYgaW50ZXJuYWxBZGRpdGlvbmFsQWxsb3dlZEltYWdlRm9ybWF0cygpCiB7Ci0gICAgcmV0
dXJuICFpbWFnZVVUSS5pc0VtcHR5KCkgJiYgYWxsb3dlZEltYWdlVVRJcygpLmNvbnRhaW5zKGlt
YWdlVVRJKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxTdHJpbmc+PiBhZGRp
dGlvbmFsQWxsb3dlZEltYWdlRm9ybWF0czsKKyAgICByZXR1cm4gYWRkaXRpb25hbEFsbG93ZWRJ
bWFnZUZvcm1hdHM7Cit9CisKK2NvbnN0IEhhc2hTZXQ8U3RyaW5nPiYgYWRkaXRpb25hbEFsbG93
ZWRJbWFnZUZvcm1hdHMoKQoreworICAgIHJldHVybiBpbnRlcm5hbEFkZGl0aW9uYWxBbGxvd2Vk
SW1hZ2VGb3JtYXRzKCk7Cit9CisKK3ZvaWQgc2V0QWRkaXRpb25hbEFsbG93ZWRJbWFnZUZvcm1h
dHMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGltYWdlVVRJcykKK3sKKyAgICAvLyBXZSBhcmUgc3Vw
cG9lZCB0byBzZXQgdGhlIGFkZGl0aW9uYWxBbGxvd2VkSW1hZ2VGb3JtYXRzIG9ubHkgb25jZSBl
dmVuCisgICAgLy8gaWYgbXVsdGlwbGUgV2ViUGFnZXMgYXJlIGNyZWF0ZWQuCisgICAgaWYgKCFp
bnRlcm5hbEFkZGl0aW9uYWxBbGxvd2VkSW1hZ2VGb3JtYXRzKCkuaXNFbXB0eSgpIHx8IGltYWdl
VVRJcy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGZvciAoY29uc3QgYXV0byYg
aW1hZ2VVVEkgOiBpbWFnZVVUSXMpCisgICAgICAgIGludGVybmFsQWRkaXRpb25hbEFsbG93ZWRJ
bWFnZUZvcm1hdHMoKS5hZGQoaW1hZ2VVVEkpOworCisgICAgLy8gVXBkYXRlIHRoZSBhZGRpdGlv
bmFsIE1JTUUgdHlwZXMgaWYgdGhleSB3ZXJlIGFscmVhZHkgc2V0LgorICAgIE1JTUVUeXBlUmVn
aXN0cnk6OmluaXRpYWxpemVTdXBwb3J0ZWRJbWFnZUFkZGl0aW9uYWxNSU1FVHlwZXNJZk5lZWRl
ZCgpOworfQorCitib29sIGlzQWxsb3dlZEltYWdlRm9ybWF0KGNvbnN0IFN0cmluZyYgaW1hZ2VV
VEkpCit7CisgICAgcmV0dXJuICFpbWFnZVVUSS5pc0VtcHR5KCkgJiYgKGRlZmF1bHRBbGxvd2Vk
SW1hZ2VGb3JtYXRzKCkuY29udGFpbnMoaW1hZ2VVVEkpIHx8IGFkZGl0aW9uYWxBbGxvd2VkSW1h
Z2VGb3JtYXRzKCkuY29udGFpbnMoaW1hZ2VVVEkpKTsKIH0KIAogfQpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvVVRJUmVnaXN0cnkuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9VVElSZWdpc3RyeS5oCShyZXZpc2lv
biAyMzczMDgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9VVElSZWdp
c3RyeS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw5IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotSGFzaFNldDxTdHJpbmc+JiBhbGxvd2VkSW1hZ2VVVElzKCk7Ci1ib29sIGlzQWxs
b3dlZEltYWdlVVRJKGNvbnN0IFN0cmluZyYpOworY29uc3QgSGFzaFNldDxTdHJpbmc+JiBkZWZh
dWx0QWxsb3dlZEltYWdlRm9ybWF0cygpOworY29uc3QgSGFzaFNldDxTdHJpbmc+JiBhZGRpdGlv
bmFsQWxsb3dlZEltYWdlRm9ybWF0cygpOworV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRBZGRpdGlv
bmFsQWxsb3dlZEltYWdlRm9ybWF0cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYpOworYm9vbCBpc0Fs
bG93ZWRJbWFnZUZvcm1hdChjb25zdCBTdHJpbmcmKTsKIAogfQpJbmRleDogU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlz
aW9uIDIzNzMwOCkKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNTQgQEAKKzIwMTgtMTAtMTkgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxs
YXdhQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgYW4gU1BJIHRvIGFsbG93IFdlYlZpZXcgY2xp
ZW50cyB0byBhZGQgYWRkaXRpb25hbCBzdXBwb3J0ZWQgaW1hZ2UgZm9ybWF0cworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwNDU0CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBQbGF0Zm9ybS9tYWMvU3Ry
aW5nVXRpbGl0aWVzLmg6CisgICAgICAgICogUGxhdGZvcm0vbWFjL1N0cmluZ1V0aWxpdGllcy5t
bToKKyAgICAgICAgKFdlYktpdDo6d2ViQ29yZVN0cmluZ1ZlY3RvckZyb21OU1N0cmluZ0FycmF5
KToKKyAgICAgICAgQSBoZWxwZXIgZnVuY3Rpb24gd2hpY2ggY29udmVydHMgYW4gTlNBcnJheSBv
ZiBOU1N0cmluZ3MgdG8gYSBWZWN0b3Igb2YKKyAgICAgICAgV1RGU3RyaW5nLgorCisgICAgICAg
ICogU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJl
ZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmg6CisgICAgICAgIEhhbmRsZSBlbmNvZGluZyBh
bmQgZGVjb2RpbmcgdGhlIEFkZGl0aW9uYWxBbGxvd2VkSW1hZ2VGb3JtYXRzIHdoaWNoIHdpbGwK
KyAgICAgICAgYWxsb3cgdHJhbnNmZXJyaW5nIGl0IGZyb20gdGhlIFVJIHByb2Nlc3MgdG8gdGhl
IHdlYiBwcm9jZXNzLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJh
dGlvbi5oOgorICAgICAgICAoQVBJOjpQYWdlQ29uZmlndXJhdGlvbjo6YWRkaXRpb25hbEFsbG93
ZWRJbWFnZUZvcm1hdHMgY29uc3QpOgorICAgICAgICAoQVBJOjpQYWdlQ29uZmlndXJhdGlvbjo6
c2V0QWRkaXRpb25hbEFsbG93ZWRJbWFnZUZvcm1hdHMpOgorICAgICAgICBTdG9yZSB0aGUgQWRk
aXRpb25hbEFsbG93ZWRJbWFnZUZvcm1hdHMgaW4gdGhlIEFQSVBhZ2VDb25maWd1cmF0aW9uCisg
ICAgICAgIHdoaWNoIGlzIHVzZWQgd2hlbiBjcmVhdGluZyB0aGUgV2ViUGFnZVByb3h5IGluIHRo
ZSBVSVBvcmNlc3MuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5t
bToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9pbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb246XSk6
CisgICAgICAgIFNldCB0aGUgdmFsdWUgb2YgQWRkaXRpb25hbEFsbG93ZWRJbWFnZUZvcm1hdHMg
ZnJvbSBXS1dlYlZpZXdDb25maWd1cmF0aW9uCisgICAgICAgIHRvIHRoZSBBUElQYWdlQ29uZmln
dXJhdGlvbi4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmln
dXJhdGlvbi5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBjb3B5V2l0aFpv
bmU6XSk6CisgICAgICAgICgtW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX2FkZGl0aW9uYWxBbGxv
d2VkSW1hZ2VGb3JtYXRzXSk6CisgICAgICAgICgtW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX3Nl
dEFkZGl0aW9uYWxBbGxvd2VkSW1hZ2VGb3JtYXRzOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvblByaXZhdGUuaDoKKyAgICAgICAgU2V0dGVy
L0dldHRlciBmb3IgdGhlIGFkZGl0aW9uYWxBbGxvd2VkSW1hZ2VGb3JtYXRzLgorCisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6Y3JlYXRpb25QYXJhbWV0ZXJzKToKKyAgICAgICAgQ29weSB0aGUgYWRkaXRpb25hbEFs
bG93ZWRJbWFnZUZvcm1hdHMgZnJvbSBBUElQYWdlQ29uZmlndXJhdGlvbiB0byAKKyAgICAgICAg
V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaDoKKyAgICAgICAgRGVsZXRlIHVuaW1wbGVtZW50ZWQgZnVuY3Rpb24uCisKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OldlYlBhZ2UpOgorICAgICAgICBDb3B5IHRoZSBhZGRpdGlvbmFsQWxsb3dlZEltYWdl
Rm9ybWF0cyBmcm9tIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgdG8KKyAgICAgICAgV2ViQ29y
ZS4KKwogMjAxOC0xMC0xOSAgU3RlcGhhbiBTemFibyAgPHN0ZXBoYW4uc3phYm9Ac29ueS5jb20+
CiAKICAgICAgICAgW1dpbkNhaXJvXSBTZWFyY2ggdGVybXMgYXJlIG5vdCBzYXZlZCBmb3IgPGlu
cHV0IHR5cGU9InNlYXJjaCI+CkluZGV4OiBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL21hYy9TdHJp
bmdVdGlsaXRpZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL21hYy9T
dHJpbmdVdGlsaXRpZXMuaAkocmV2aXNpb24gMjM3MzA4KQorKysgU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9tYWMvU3RyaW5nVXRpbGl0aWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDgg
QEAgbmFtZXNwYWNlIFdlYktpdCB7CiBOU1N0cmluZyAqbnNTdHJpbmdGcm9tV2ViQ29yZVN0cmlu
Zyhjb25zdCBTdHJpbmcmKTsKIE5TU3RyaW5nICpmb3JtYXR0ZWRQaG9uZU51bWJlclN0cmluZyhO
U1N0cmluZyAqb3JpZ2luYWxQaG9uZU51bWJlcik7CiAKK1ZlY3RvcjxTdHJpbmc+IHdlYkNvcmVT
dHJpbmdWZWN0b3JGcm9tTlNTdHJpbmdBcnJheShOU0FycmF5PE5TU3RyaW5nICo+ICopOworCiAj
ZW5kaWYgLy8gZGVmaW5lZChfX09CSkNfXykKIAogfQpJbmRleDogU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9tYWMvU3RyaW5nVXRpbGl0aWVzLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vbWFjL1N0cmluZ1V0aWxpdGllcy5tbQkocmV2aXNpb24gMjM3MzA4KQorKysgU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9tYWMvU3RyaW5nVXRpbGl0aWVzLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC04Miw0ICs4MiwxNSBAQCBOU1N0cmluZyAqZm9ybWF0dGVkUGhvbmVOdW1iZXJTdHJpbmco
TlNTCiAKICNlbmRpZiAvLyBFTkFCTEUoVEVMRVBIT05FX05VTUJFUl9ERVRFQ1RJT04pICYmIFBM
QVRGT1JNKE1BQykKIAorVmVjdG9yPFN0cmluZz4gd2ViQ29yZVN0cmluZ1ZlY3RvckZyb21OU1N0
cmluZ0FycmF5KE5TQXJyYXk8TlNTdHJpbmcgKj4gKm5zU3RyaW5nQXJyYXkpCit7CisgICAgVmVj
dG9yPFN0cmluZz4gc3RyaW5nVmVjdG9yOworICAgIHN0cmluZ1ZlY3Rvci5yZXNlcnZlSW5pdGlh
bENhcGFjaXR5KFtuc1N0cmluZ0FycmF5IGNvdW50XSk7CisKKyAgICBmb3IgKE5TU3RyaW5nICpu
c1N0cmluZyBpbiBuc1N0cmluZ0FycmF5KQorICAgICAgICBzdHJpbmdWZWN0b3IudW5jaGVja2Vk
QXBwZW5kKG5zU3RyaW5nKTsKKworICAgIHJldHVybiBzdHJpbmdWZWN0b3I7Cit9CisKIH0KSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRl
cnMuY3BwCShyZXZpc2lvbiAyMzczMDgpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdl
Q3JlYXRpb25QYXJhbWV0ZXJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTYsNiArOTYsNyBAQCB2
b2lkIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZShJCiAjZW5kaWYKICNpZiBQTEFU
Rk9STShDT0NPQSkKICAgICBlbmNvZGVyIDw8IHNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZDsKKyAg
ICBlbmNvZGVyIDw8IGFkZGl0aW9uYWxBbGxvd2VkSW1hZ2VGb3JtYXRzOwogI2VuZGlmCiAgICAg
ZW5jb2RlciA8PCBhcHBsZU1haWxQYWdpbmF0aW9uUXVpcmtFbmFibGVkOwogICAgIGVuY29kZXIg
PDwgYXBwbGVNYWlsTGluZXNDbGFtcEVuYWJsZWQ7CkBAIC0yNjksNiArMjcwLDggQEAgc3RkOjpv
cHRpb25hbDxXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzPgogI2lmIFBMQVRGT1JNKENPQ09BKQog
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5zbWFydEluc2VydERlbGV0ZUVuYWJs
ZWQpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUocGFyYW1ldGVycy5hZGRpdGlvbmFsQWxsb3dlZEltYWdlRm9ybWF0cykpCisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAjZW5kaWYKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFy
YW1ldGVycy5hcHBsZU1haWxQYWdpbmF0aW9uUXVpcmtFbmFibGVkKSkKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgJKHJldmlzaW9u
IDIzNzMwOCkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRl
cnMuaAkod29ya2luZyBjb3B5KQpAQCAtMTUzLDYgKzE1Myw3IEBAIHN0cnVjdCBXZWJQYWdlQ3Jl
YXRpb25QYXJhbWV0ZXJzIHsKICNlbmRpZgogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGJvb2wg
c21hcnRJbnNlcnREZWxldGVFbmFibGVkOworICAgIFZlY3RvcjxTdHJpbmc+IGFkZGl0aW9uYWxB
bGxvd2VkSW1hZ2VGb3JtYXRzOwogI2VuZGlmCiAgICAgYm9vbCBhcHBsZU1haWxQYWdpbmF0aW9u
UXVpcmtFbmFibGVkOwogICAgIGJvb2wgYXBwbGVNYWlsTGluZXNDbGFtcEVuYWJsZWQ7CkluZGV4
OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDIzNzMw
OCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTYzNzEsNiArNjM3MSw3IEBAIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgV2Vi
UGFnZVByb3h5OjoKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHBhcmFtZXRlcnMuc21hcnRJ
bnNlcnREZWxldGVFbmFibGVkID0gbV9pc1NtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZDsKKyAgICBw
YXJhbWV0ZXJzLmFkZGl0aW9uYWxBbGxvd2VkSW1hZ2VGb3JtYXRzID0gbV9jb25maWd1cmF0aW9u
LT5hZGRpdGlvbmFsQWxsb3dlZEltYWdlRm9ybWF0cygpOwogI2VuZGlmCiAgICAgcGFyYW1ldGVy
cy5zaG91bGRTY2FsZVZpZXdUb0ZpdERvY3VtZW50ID0gbV9zaG91bGRTY2FsZVZpZXdUb0ZpdERv
Y3VtZW50OwogICAgIHBhcmFtZXRlcnMudXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbiA9IHBh
Z2VDbGllbnQoKS51c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKCk7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkocmV2aXNpb24gMjM3MzA4KQorKysgU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTEzNTcs
MTAgKzEzNTcsNiBAQCBwdWJsaWM6CiAKICAgICBXZWJDb3JlOjpJbnRSZWN0IHN5bmNSb290Vmll
d1RvU2NyZWVuKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHZpZXdSZWN0KTsKIAotI2lmIFBMQVRG
T1JNKENPQ09BKQotICAgIFZlY3RvcjxTdHJpbmc+IG1lZGlhTUlNRVR5cGVzKCk7Ci0jZW5kaWYK
LQogI2lmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQogICAgIHZvaWQgZGlkU2VsZWN0T3B0aW9u
KGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgZGlkQ2xvc2VTdWdnZXN0aW9ucygpOwpJbmRleDog
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9u
LmgJKHJldmlzaW9uIDIzNzMwOCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQ
YWdlQ29uZmlndXJhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTAsNiArMTEwLDExIEBAIHB1
YmxpYzoKICAgICBjb25zdCBXVEY6OlN0cmluZyYgb3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xp
Y3koKSBjb25zdCB7IHJldHVybiBtX292ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5OyB9CiAg
ICAgdm9pZCBzZXRPdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeShjb25zdCBXVEY6OlN0cmlu
ZyYgb3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3kpIHsgbV9vdmVycmlkZUNvbnRlbnRTZWN1
cml0eVBvbGljeSA9IG92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5OyB9CiAKKyNpZiBQTEFU
Rk9STShDT0NPQSkKKyAgICBjb25zdCBXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4mIGFkZGl0aW9u
YWxBbGxvd2VkSW1hZ2VGb3JtYXRzKCkgY29uc3QgeyByZXR1cm4gbV9hZGRpdGlvbmFsQWxsb3dl
ZEltYWdlRm9ybWF0czsgfQorICAgIHZvaWQgc2V0QWRkaXRpb25hbEFsbG93ZWRJbWFnZUZvcm1h
dHMoV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+JiYgYWRkaXRpb25hbEFsbG93ZWRJbWFnZUZvcm1h
dHMpIHsgbV9hZGRpdGlvbmFsQWxsb3dlZEltYWdlRm9ybWF0cyA9IFdURk1vdmUoYWRkaXRpb25h
bEFsbG93ZWRJbWFnZUZvcm1hdHMpOyB9CisjZW5kaWYKKwogI2lmIEVOQUJMRShBUFBMSUNBVElP
Tl9NQU5JRkVTVCkKICAgICBBcHBsaWNhdGlvbk1hbmlmZXN0KiBhcHBsaWNhdGlvbk1hbmlmZXN0
KCkgY29uc3Q7CiAgICAgdm9pZCBzZXRBcHBsaWNhdGlvbk1hbmlmZXN0KEFwcGxpY2F0aW9uTWFu
aWZlc3QqKTsKQEAgLTE0Niw2ICsxNTEsMTAgQEAgcHJpdmF0ZToKIAogICAgIFdURjo6U3RyaW5n
IG1fb3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3k7CiAKKyNpZiBQTEFURk9STShDT0NPQSkK
KyAgICBXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4gbV9hZGRpdGlvbmFsQWxsb3dlZEltYWdlRm9y
bWF0czsKKyNlbmRpZgorCiAjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQogICAgIFJl
ZlB0cjxBcHBsaWNhdGlvbk1hbmlmZXN0PiBtX2FwcGxpY2F0aW9uTWFuaWZlc3Q7CiAjZW5kaWYK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5t
bQkocmV2aXNpb24gMjM3MzA4KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtNDYsNiArNDYsNyBAQAogI2ltcG9ydCAi
UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24uaCIKICNpbXBvcnQgIlJlbW90ZU9iamVjdFJlZ2lz
dHJ5LmgiCiAjaW1wb3J0ICJSZW1vdGVPYmplY3RSZWdpc3RyeU1lc3NhZ2VzLmgiCisjaW1wb3J0
ICJTdHJpbmdVdGlsaXRpZXMuaCIKICNpbXBvcnQgIlVJRGVsZWdhdGUuaCIKICNpbXBvcnQgIlVz
ZXJNZWRpYVByb2Nlc3NNYW5hZ2VyLmgiCiAjaW1wb3J0ICJWZXJzaW9uQ2hlY2tzLmgiCkBAIC01
NjcsNiArNTY4LDggQEAgLSAodm9pZClfaW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uOihXSwog
ICAgICAgICBpZiAoZ3JvdXBJZGVudGlmaWVyLmxlbmd0aCkKICAgICAgICAgICAgIHBhZ2VDb25m
aWd1cmF0aW9uLT5zZXRQYWdlR3JvdXAoV2ViS2l0OjpXZWJQYWdlR3JvdXA6OmNyZWF0ZShjb25m
aWd1cmF0aW9uLl9ncm91cElkZW50aWZpZXIpLnB0cigpKTsKICAgICB9CisgICAgCisgICAgcGFn
ZUNvbmZpZ3VyYXRpb24tPnNldEFkZGl0aW9uYWxBbGxvd2VkSW1hZ2VGb3JtYXRzKFdlYktpdDo6
d2ViQ29yZVN0cmluZ1ZlY3RvckZyb21OU1N0cmluZ0FycmF5KFtfY29uZmlndXJhdGlvbiBfYWRk
aXRpb25hbEFsbG93ZWRJbWFnZUZvcm1hdHNdKSk7CiAKICAgICBwYWdlQ29uZmlndXJhdGlvbi0+
cHJlZmVyZW5jZVZhbHVlcygpLnNldChXZWJLaXQ6OldlYlByZWZlcmVuY2VzS2V5OjpzdXBwcmVz
c2VzSW5jcmVtZW50YWxSZW5kZXJpbmdLZXkoKSwgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3Jl
OjpWYWx1ZSghIVtfY29uZmlndXJhdGlvbiBzdXBwcmVzc2VzSW5jcmVtZW50YWxSZW5kZXJpbmdd
KSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdD
b25maWd1cmF0aW9uLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1tCShyZXZpc2lvbiAyMzczMDgpCisrKyBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5t
bQkod29ya2luZyBjb3B5KQpAQCAtMTYxLDYgKzE2MSw3IEBAIHN0YXRpYyBfV0tEcmFnTGlmdERl
bGF5IHRvRHJhZ0xpZnREZWxheSgKICAgICBCT09MIF9kcmF3c0JhY2tncm91bmQ7CiAKICAgICBS
ZXRhaW5QdHI8TlNTdHJpbmc+IF9tZWRpYUNvbnRlbnRUeXBlc1JlcXVpcmluZ0hhcmR3YXJlU3Vw
cG9ydDsKKyAgICBSZXRhaW5QdHI8TlNBcnJheTxOU1N0cmluZyAqPj4gX2FkZGl0aW9uYWxBbGxv
d2VkSW1hZ2VGb3JtYXRzOwogfQogCiAtIChpbnN0YW5jZXR5cGUpaW5pdApAQCAtMzk0LDYgKzM5
NSw3IEBAIC0gKGlkKWNvcHlXaXRoWm9uZTooTlNab25lICopem9uZQogICAgIGNvbmZpZ3VyYXRp
b24tPl9uZWVkc1N0b3JhZ2VBY2Nlc3NGcm9tRmlsZVVSTHNRdWlyayA9IHNlbGYtPl9uZWVkc1N0
b3JhZ2VBY2Nlc3NGcm9tRmlsZVVSTHNRdWlyazsKIAogICAgIGNvbmZpZ3VyYXRpb24tPl9tZWRp
YUNvbnRlbnRUeXBlc1JlcXVpcmluZ0hhcmR3YXJlU3VwcG9ydCA9IGFkb3B0TlMoW3NlbGYuX21l
ZGlhQ29udGVudFR5cGVzUmVxdWlyaW5nSGFyZHdhcmVTdXBwb3J0IGNvcHlXaXRoWm9uZTp6b25l
XSk7CisgICAgY29uZmlndXJhdGlvbi0+X2FkZGl0aW9uYWxBbGxvd2VkSW1hZ2VGb3JtYXRzID0g
YWRvcHROUyhbc2VsZi0+X2FkZGl0aW9uYWxBbGxvd2VkSW1hZ2VGb3JtYXRzIGNvcHlXaXRoWm9u
ZTp6b25lXSk7CiAgICAgY29uZmlndXJhdGlvbi0+X2xlZ2FjeUVuY3J5cHRlZE1lZGlhQVBJRW5h
YmxlZCA9IHNlbGYtPl9sZWdhY3lFbmNyeXB0ZWRNZWRpYUFQSUVuYWJsZWQ7CiAgICAgY29uZmln
dXJhdGlvbi0+X2FsbG93TWVkaWFDb250ZW50VHlwZXNSZXF1aXJpbmdIYXJkd2FyZVN1cHBvcnRB
c0ZhbGxiYWNrID0gc2VsZi0+X2FsbG93TWVkaWFDb250ZW50VHlwZXNSZXF1aXJpbmdIYXJkd2Fy
ZVN1cHBvcnRBc0ZhbGxiYWNrOwogCkBAIC05OTAsNiArOTkyLDE2IEBAIC0gKHZvaWQpX3NldE1l
ZGlhQ29udGVudFR5cGVzUmVxdWlyaW5nSGEKICAgICBfbWVkaWFDb250ZW50VHlwZXNSZXF1aXJp
bmdIYXJkd2FyZVN1cHBvcnQgPSBhZG9wdE5TKFttZWRpYUNvbnRlbnRUeXBlc1JlcXVpcmluZ0hh
cmR3YXJlU3VwcG9ydCBjb3B5XSk7CiB9CiAKKy0gKE5TQXJyYXk8TlNTdHJpbmcgKj4gKilfYWRk
aXRpb25hbEFsbG93ZWRJbWFnZUZvcm1hdHMKK3sKKyAgICByZXR1cm4gX2FkZGl0aW9uYWxBbGxv
d2VkSW1hZ2VGb3JtYXRzLmdldCgpOworfQorCistICh2b2lkKV9zZXRBZGRpdGlvbmFsQWxsb3dl
ZEltYWdlRm9ybWF0czooTlNBcnJheTxOU1N0cmluZyAqPiAqKWFkZGl0aW9uYWxBbGxvd2VkSW1h
Z2VGb3JtYXRzCit7CisgICAgX2FkZGl0aW9uYWxBbGxvd2VkSW1hZ2VGb3JtYXRzID0gYWRvcHRO
UyhbYWRkaXRpb25hbEFsbG93ZWRJbWFnZUZvcm1hdHMgY29weV0pOworfQorCiAtICh2b2lkKV9z
ZXRMZWdhY3lFbmNyeXB0ZWRNZWRpYUFQSUVuYWJsZWQ6KEJPT0wpZW5hYmxlZAogewogICAgIF9s
ZWdhY3lFbmNyeXB0ZWRNZWRpYUFQSUVuYWJsZWQgPSBlbmFibGVkOwpJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
d0NvbmZpZ3VyYXRpb25Qcml2YXRlLmgJKHJldmlzaW9uIDIzNzMwOCkKKysrIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xMDEsNiArMTAxLDcgQEAgdHlwZWRlZiBOU19FTlVNKE5TVUludGVn
ZXIsIF9XS0RyYWdMaWZ0RAogQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0TWVkaWFD
b250ZW50VHlwZXNSZXF1aXJpbmdIYXJkd2FyZVN1cHBvcnQ6KSBOU1N0cmluZyAqX21lZGlhQ29u
dGVudFR5cGVzUmVxdWlyaW5nSGFyZHdhcmVTdXBwb3J0IFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4
KDEwLjEzKSwgaW9zKDExLjApKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldExl
Z2FjeUVuY3J5cHRlZE1lZGlhQVBJRW5hYmxlZDopIEJPT0wgX2xlZ2FjeUVuY3J5cHRlZE1lZGlh
QVBJRW5hYmxlZCBXS19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMyksIGlvcygxMS4wKSk7CiBA
cHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRBbGxvd01lZGlhQ29udGVudFR5cGVzUmVx
dWlyaW5nSGFyZHdhcmVTdXBwb3J0QXNGYWxsYmFjazopIEJPT0wgX2FsbG93TWVkaWFDb250ZW50
VHlwZXNSZXF1aXJpbmdIYXJkd2FyZVN1cHBvcnRBc0ZhbGxiYWNrIFdLX0FQSV9BVkFJTEFCTEUo
bWFjb3N4KDEwLjEzKSwgaW9zKDExLjApKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5LCBz
ZXR0ZXI9X3NldEFkZGl0aW9uYWxBbGxvd2VkSW1hZ2VGb3JtYXRzOikgTlNBcnJheTxOU1N0cmlu
ZyAqPiAqX2FkZGl0aW9uYWxBbGxvd2VkSW1hZ2VGb3JtYXRzIFdLX0FQSV9BVkFJTEFCTEUobWFj
b3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogCiBAZW5kCiAKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCShyZXZpc2lvbiAyMzcz
MDgpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjQ2LDYgKzI0Niw3IEBACiAjaW5jbHVkZSAiVmlkZW9GdWxsc2NyZWVu
TWFuYWdlci5oIgogI2luY2x1ZGUgIldLU3RyaW5nQ0YuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0xl
Z2FjeVdlYkFyY2hpdmUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1VUSVJlZ2lzdHJ5Lmg+CiAjaW5j
bHVkZSA8d3RmL01hY2hTZW5kUmlnaHQuaD4KICNlbmRpZgogCkBAIC01OTIsNiArNTkzLDcgQEAg
V2ViUGFnZTo6V2ViUGFnZSh1aW50NjRfdCBwYWdlSUQsIFdlYlBhZwogI2lmIFBMQVRGT1JNKENP
Q09BKQogICAgIG1fcGFnZS0+c2V0dGluZ3MoKS5zZXRDb250ZW50RGlzcG9zaXRpb25BdHRhY2ht
ZW50U2FuZGJveEVuYWJsZWQodHJ1ZSk7CiAgICAgc2V0U21hcnRJbnNlcnREZWxldGVFbmFibGVk
KHBhcmFtZXRlcnMuc21hcnRJbnNlcnREZWxldGVFbmFibGVkKTsKKyAgICBXZWJDb3JlOjpzZXRB
ZGRpdGlvbmFsQWxsb3dlZEltYWdlRm9ybWF0cyhwYXJhbWV0ZXJzLmFkZGl0aW9uYWxBbGxvd2Vk
SW1hZ2VGb3JtYXRzKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpJbmRl
eDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNp
b24gMjM3MzA4KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MTggQEAKKzIwMTgtMTAtMTkgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxl
LmNvbT4KKworICAgICAgICBBZGQgYW4gU1BJIHRvIGFsbG93IFdlYlZpZXcgY2xpZW50cyB0byBh
ZGQgYWRkaXRpb25hbCBzdXBwb3J0ZWQgaW1hZ2UgZm9ybWF0cworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwNDU0CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdCBvcGVuaW5nIGEgVEdBIGltYWdlIGlu
IFdlYlZpZXcgd2hpY2ggaXMgbm90IGFsbG93ZWQgYnkgZGVmYXVsdC4gVGhlCisgICAgICAgIFRH
QSBmb3JtYXQgd2lsbCBiZSBhbGxvd2VkIHRocm91Z2ggV0tXZWJWaWV3Q29uZmlndXJhdGlvbi4K
KworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvMTAw
eDEwMC1yZWQudGdhOiBBZGRlZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL0FkZGl0aW9uYWxBbGxvd2VkSW1hZ2VGb3JtYXRzLm1tOiBBZGRlZC4KKyAgICAgICAg
KFRFU1QpOgorCiAyMDE4LTEwLTE5ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUu
Y29tPgogCiAgICAgICAgIFtpT1NdIFtEYXRhbGlzdF0gQ2FuJ3QgcGljayBkYXRhbGlzdCBzdWdn
ZXN0aW9ucyBpbiBhIHN0b2NrIFdLV2ViVmlldwpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJ
KHJldmlzaW9uIDIzNzMwOCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yNDEsNiArMjQxLDgg
QEAKIAkJNTM2NzcwMzYxQ0M4MUI2MTAwRDQyNUIxIC8qIFdlYlNjcmlwdE9iamVjdERlc2NyaXB0
aW9uLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTM2NzcwMzUxQ0M4MTJGOTAwRDQyNUIxIC8qIFdlYlNjcmlwdE9iamVjdERlc2NyaXB0
aW9uLmh0bWwgKi87IH07CiAJCTUzRUMyNTQxMUU5NkZEODcwMDA4MzFCOSAvKiBQcmlvcml0eVF1
ZXVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUz
RUMyNTNGMUU5NkJDODAwMDA4MzFCOSAvKiBQcmlvcml0eVF1ZXVlLmNwcCAqLzsgfTsKIAkJNTUy
MjZBMkYxRUJBNDRCOTAwQzM2QUQwIC8qIGxhcmdlLXJlZC1zcXVhcmUtaW1hZ2UuaHRtbCBpbiBD
b3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NTIyNkEy
RTFFQjk2OUI2MDBDMzZBRDAgLyogbGFyZ2UtcmVkLXNxdWFyZS1pbWFnZS5odG1sICovOyB9Owor
CQk1NTU4NDgxQzIxNzEzMTU3MDBGQjdGRkYgLyogQWRkaXRpb25hbEFsbG93ZWRJbWFnZUZvcm1h
dHMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NTU4
NDgxQjIxNzEzMTU2MDBGQjdGRkYgLyogQWRkaXRpb25hbEFsbG93ZWRJbWFnZUZvcm1hdHMubW0g
Ki87IH07CisJCTU1NTg0ODI1MjE3MThDREEwMEZCN0ZGRiAvKiAxMDB4MTAwLXJlZC50Z2EgaW4g
Q29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTU1ODQ4
MjEyMTcxNUE3RTAwRkI3RkZGIC8qIDEwMHgxMDAtcmVkLnRnYSAqLzsgfTsKIAkJNTU5N0Y4MzYx
RDk1OTZDODAwNjZCQzIxIC8qIFN5bmNocm9uaXplZEZpeGVkUXVldWUuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTU5N0Y4MzQxRDk1OTZDODAwNjZC
QzIxIC8qIFN5bmNocm9uaXplZEZpeGVkUXVldWUuY3BwICovOyB9OwogCQk1NzE0RUNCOTFDQThC
NUIwMDAwNTFBQzggLyogRG93bmxvYWRSZXF1ZXN0T3JpZ2luYWxVUkwuaHRtbCBpbiBDb3B5IFJl
c291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzE0RUNCODFDQThC
NTg4MDAwNTFBQzggLyogRG93bmxvYWRSZXF1ZXN0T3JpZ2luYWxVUkwuaHRtbCAqLzsgfTsKIAkJ
NTcxNEVDQkIxQ0E4QkZFNDAwMDUxQUM4IC8qIERvd25sb2FkUmVxdWVzdE9yaWdpbmFsVVJMRnJh
bWUuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1NzE0RUNCQTFDQThCRkQxMDAwNTFBQzggLyogRG93bmxvYWRSZXF1ZXN0T3JpZ2luYWxV
UkxGcmFtZS5odG1sICovOyB9OwpAQCAtOTQzLDYgKzk0NSw3IEBACiAJCQlkc3RQYXRoID0gVGVz
dFdlYktpdEFQSS5yZXNvdXJjZXM7CiAJCQlkc3RTdWJmb2xkZXJTcGVjID0gNzsKIAkJCWZpbGVz
ID0gKAorCQkJCTU1NTg0ODI1MjE3MThDREEwMEZCN0ZGRiAvKiAxMDB4MTAwLXJlZC50Z2EgaW4g
Q29weSBSZXNvdXJjZXMgKi8sCiAJCQkJMUE5RTUyQzkxM0U2NUVGNDAwNjkxN0Y1IC8qIDE4LWNo
YXJhY3RlcnMuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQkzNzkwMjhCOTE0RkFDMjRD
MDA3RTZCNDMgLyogYWNjZXB0c0ZpcnN0TW91c2UuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywK
IAkJCQkxQzJCODE4NzFDODkyNUEwMDBBNTUyOUYgLyogQWhlbS50dGYgaW4gQ29weSBSZXNvdXJj
ZXMgKi8sCkBAIC0xNDM0LDcgKzE0MzcsNiBAQAogCQkzN0UxMDY0QjE2OTc2N0Y3MDBCNzhCRDAg
LyogRE9NSFRNTFRhYmxlQ2VsbEVsZW1lbnRDZWxsQWJvdmUuaHRtbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQu
aHRtbDsgcGF0aCA9IERPTUhUTUxUYWJsZUNlbGxFbGVtZW50Q2VsbEFib3ZlLmh0bWw7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3RTM4QzMzMTY5QjdEMDEwMDg0QzI4QyAvKiBXZWJW
aWV3RGlkUmVtb3ZlRnJhbWVGcm9tSGllcmFyY2h5Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gV2ViVmlld0RpZFJlbW92ZUZyYW1lRnJvbUhpZXJhcmNoeS5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzdFN0RENjMxRUEwNkZGMjAwOUIzOTZEIC8q
IEFkZGl0aW9uYWxSZWFkQWNjZXNzQWxsb3dlZFVSTHMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBBZGRpdGlvbmFsUmVhZEFjY2Vzc0FsbG93ZWRVUkxzLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzN0U3REQ2NTFFQTA3MTVCMDA5QjM5NkQgLyog
QWRkaXRpb25hbFJlYWRBY2Nlc3NBbGxvd2VkVVJMc1Byb3RvY29sLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEFkZGl0aW9uYWxSZWFkQWNjZXNzQWxsb3dlZFVSTHNQcm90b2Nv
bC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzN0U3REQ2NjFFQTA3MUYzMDA5QjM5
NkQgLyogQWRkaXRpb25hbFJlYWRBY2Nlc3NBbGxvd2VkVVJMc1BsdWdpbi5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEFkZGl0aW9uYWxSZWFkQWNjZXNzQWxsb3dl
ZFVSTHNQbHVnaW4ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3RkI3Mjk1MURC
MkU4MkYwMEU0MUJFNCAvKiBDb250ZXh0TWVudURlZmF1bHRJdGVtc0hhdmVUYWdzLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQ29udGV4dE1lbnVEZWZhdWx0SXRl
bXNIYXZlVGFncy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJM0YxQjUyNjgxRDNE
NzEyOTAwOEQ2MEM0IC8qIEZ1bGxzY3JlZW5MYXlvdXRDb25zdHJhaW50cy5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEZ1bGxzY3JlZW5MYXlvdXRDb25zdHJhaW50
cy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE1NDYsNiArMTU0OCw5IEBACiAJ
CTUzNjc3MDM1MUNDODEyRjkwMEQ0MjVCMSAvKiBXZWJTY3JpcHRPYmplY3REZXNjcmlwdGlvbi5o
dG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gV2ViU2NyaXB0T2JqZWN0RGVzY3JpcHRp
b24uaHRtbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTNFQzI1M0YxRTk2QkM4MDAw
MDgzMUI5IC8qIFByaW9yaXR5UXVldWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gUHJpb3JpdHlRdWV1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTU1MjI2QTJFMUVCOTY5QjYwMEMzNkFEMCAvKiBsYXJnZS1yZWQtc3F1YXJlLWltYWdlLmh0bWwg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAibGFyZ2UtcmVkLXNxdWFyZS1pbWFnZS5odG1s
Ijsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTU1ODQ4MUIyMTcxMzE1NjAwRkI3RkZG
IC8qIEFkZGl0aW9uYWxBbGxvd2VkSW1hZ2VGb3JtYXRzLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gQWRkaXRpb25hbEFsbG93ZWRJbWFnZUZvcm1hdHMubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU1NTg0ODFGMjE3MTM1MDgwMEZCN0ZGRiAvKiBB
ZGRpdGlvbmFsUmVhZEFjY2Vzc0FsbG93ZWRVUkxzUHJvdG9jb2wuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQWRkaXRpb25hbFJlYWRBY2Nlc3NBbGxvd2VkVVJMc1Byb3RvY29s
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU1NTg0ODIxMjE3MTVBN0UwMEZCN0ZG
RiAvKiAxMDB4MTAwLXJlZC50Z2EgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBmaWxlOyBwYXRoID0gIjEwMHgxMDAtcmVkLnRnYSI7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTU1OTdGODM0MUQ5NTk2QzgwMDY2QkMyMSAvKiBTeW5jaHJvbml6
ZWRGaXhlZFF1ZXVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN5
bmNocm9uaXplZEZpeGVkUXVldWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
NzE0RUNCODFDQThCNTg4MDAwNTFBQzggLyogRG93bmxvYWRSZXF1ZXN0T3JpZ2luYWxVUkwuaHRt
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9IERvd25sb2FkUmVxdWVzdE9yaWdpbmFsVVJM
Lmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3MTRFQ0JBMUNBOEJGRDEwMDA1
MUFDOCAvKiBEb3dubG9hZFJlcXVlc3RPcmlnaW5hbFVSTEZyYW1lLmh0bWwgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0Lmh0bWw7IHBhdGggPSBEb3dubG9hZFJlcXVlc3RPcmlnaW5hbFVSTEZyYW1lLmh0bWw7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMzEwLDkgKzIzMTUsMTAgQEAKIAkJCQlBMTZG
NjZCODFDNDBFOUUxMDBCRDREMjQgLyogUmVzb3VyY2VzICovLAogCQkJCTVDRUFCNURGMUZBOTM3
Q0IwMEE3N0ZBQSAvKiBfV0tJbnB1dERlbGVnYXRlLm1tICovLAogCQkJCTdDRUZBOTY0MUFDMEI5
RTIwMEI5MTBGRCAvKiBfV0tVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlLm1tICovLAorCQkJCTU1
NTg0ODFCMjE3MTMxNTYwMEZCN0ZGRiAvKiBBZGRpdGlvbmFsQWxsb3dlZEltYWdlRm9ybWF0cy5t
bSAqLywKIAkJCQkzN0U3REQ2MzFFQTA2RkYyMDA5QjM5NkQgLyogQWRkaXRpb25hbFJlYWRBY2Nl
c3NBbGxvd2VkVVJMcy5tbSAqLywKIAkJCQkzN0U3REQ2NjFFQTA3MUYzMDA5QjM5NkQgLyogQWRk
aXRpb25hbFJlYWRBY2Nlc3NBbGxvd2VkVVJMc1BsdWdpbi5tbSAqLywKLQkJCQkzN0U3REQ2NTFF
QTA3MTVCMDA5QjM5NkQgLyogQWRkaXRpb25hbFJlYWRBY2Nlc3NBbGxvd2VkVVJMc1Byb3RvY29s
LmggKi8sCisJCQkJNTU1ODQ4MUYyMTcxMzUwODAwRkI3RkZGIC8qIEFkZGl0aW9uYWxSZWFkQWNj
ZXNzQWxsb3dlZFVSTHNQcm90b2NvbC5oICovLAogCQkJCUExREY3NDMwMUM0MUI2NTgwMEEyRjRE
MCAvKiBBbHdheXNSZXZhbGlkYXRlZFVSTFNjaGVtZXMubW0gKi8sCiAJCQkJMkRFNzFBRkQxRDQ5
QzBCRDAwOTA0MDk0IC8qIEFuaW1hdGVkUmVzaXplLm1tICovLAogCQkJCTYzRjY2ODIwMUY5N0Mz
QUEwMDMyRUU1MSAvKiBBcHBsaWNhdGlvbk1hbmlmZXN0Lm1tICovLApAQCAtMjY1MSw2ICsyNjU3
LDcgQEAKIAkJQTE2RjY2QjgxQzQwRTlFMTAwQkQ0RDI0IC8qIFJlc291cmNlcyAqLyA9IHsKIAkJ
CWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJNTU1ODQ4MjEyMTcxNUE3RTAw
RkI3RkZGIC8qIDEwMHgxMDAtcmVkLnRnYSAqLywKIAkJCQlDMjVDQ0EwQzFFNTE0MEU1MDAyNkNC
OEEgLyogQWxsQWhlbS5zdmcgKi8sCiAJCQkJRjRBOTIwMkUxRkVFMzRDODAwRjU5NTkwIC8qIGFw
cGxlLWRhdGEtdXJsLmh0bWwgKi8sCiAJCQkJRjQ3RDMwRUIxRUQyODYxOTAwMDQ4MkUxIC8qIGFw
cGxlLmdpZiAqLywKQEAgLTM3MTMsNiArMzcyMCw3IEBACiAJCQkJMkUyMDVCQTQxRjUyNzc0NjAw
NTk1MkREIC8qIEFjY2Vzc2liaWxpdHlUZXN0c0lPUy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTlC
RDUxMTFDMUZFOEUxMTYwMEQyQjYzMCAvKiBBY2Nlc3NpbmdQYXN0ZWRJbWFnZS5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCUY0NUI2M0ZFMUYxOUQ0MTAwMDlEMzhCOSAvKiBBY3Rpb25TaGVldFRlc3Rz
Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJNTU1ODQ4MUMyMTcxMzE1NzAwRkI3RkZGIC8qIEFkZGl0
aW9uYWxBbGxvd2VkSW1hZ2VGb3JtYXRzLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMzdFN0RENjQx
RUEwNkZGMjAwOUIzOTZEIC8qIEFkZGl0aW9uYWxSZWFkQWNjZXNzQWxsb3dlZFVSTHMubW0gaW4g
U291cmNlcyAqLywKIAkJCQk3QTkwOUE3RDFEODc3NDgwMDA3RTEwRjggLyogQWZmaW5lVHJhbnNm
b3JtLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUExREY3NDMyMUM0MUI2NTgwMEEyRjREMCAvKiBB
bHdheXNSZXZhbGlkYXRlZFVSTFNjaGVtZXMubW0gaW4gU291cmNlcyAqLywKSW5kZXg6IFRvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQWRkaXRpb25hbEFsbG93ZWRJbWFnZUZv
cm1hdHMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9BZGRpdGlvbmFsQWxsb3dlZEltYWdlRm9ybWF0cy5tbQkobm9uZXhpc3RlbnQpCisrKyBU
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0FkZGl0aW9uYWxBbGxvd2VkSW1h
Z2VGb3JtYXRzLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgPFdlYktpdC9XS0ZvdW5kYXRpb24uaD4KKwor
I2lmIFdLX0FQSV9FTkFCTEVEICYmIFBMQVRGT1JNKENPQ09BKQorCisjaW1wb3J0ICJQbGF0Zm9y
bVV0aWxpdGllcy5oIgorI2ltcG9ydCAiVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5oIgorI2ltcG9y
dCAiV0tXZWJWaWV3Q29uZmlndXJhdGlvbkV4dHJhcy5oIgorI2ltcG9ydCA8V2ViS2l0L1dLV2Vi
Vmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisK
K1RFU1QoV2ViS2l0LCBBZGRpdGlvbmFsQWxsb3dlZEltYWdlRm9ybWF0cykKK3sKKyAgICBSZXRh
aW5QdHI8V0tXZWJWaWV3Q29uZmlndXJhdGlvbj4gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tX
S1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgW2NvbmZpZ3VyYXRpb24g
X3NldEFkZGl0aW9uYWxBbGxvd2VkSW1hZ2VGb3JtYXRzOkBbQCJjb20udHJ1ZXZpc2lvbi50Z2Et
aW1hZ2UiXV07CisKKyAgICBSZXRhaW5QdHI8V0tXZWJWaWV3PiB3ZWJWaWV3ID0gYWRvcHROUyhb
W1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAw
KSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKworICAgIFJldGFpblB0cjxO
U1VSTD4gdGVzdFVSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCIx
MDB4MTAwLXJlZCIgd2l0aEV4dGVuc2lvbjpAInRnYSIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktp
dEFQSS5yZXNvdXJjZXMiXTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0
IHJlcXVlc3RXaXRoVVJMOnRlc3RVUkwuZ2V0KCldXTsKKyAgICBbd2ViVmlldyBfdGVzdF93YWl0
Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07CisKKyAgICBfX2Jsb2NrIGJvb2wgaXNEb25lID0gZmFs
c2U7CisgICAgW3dlYlZpZXcgX2RvQWZ0ZXJOZXh0UHJlc2VudGF0aW9uVXBkYXRlOl57CisgICAg
ICAgIFt3ZWJWaWV3IGV2YWx1YXRlSmF2YVNjcmlwdDpAIltkb2N1bWVudC5xdWVyeVNlbGVjdG9y
KCdpbWcnKS53aWR0aF0iIGNvbXBsZXRpb25IYW5kbGVyOl4oaWQgdmFsdWUsIE5TRXJyb3IgKmVy
cm9yKSB7CisgICAgICAgICAgICBDR0Zsb2F0IHdpZHRoID0gW1t2YWx1ZSBvYmplY3RBdEluZGV4
OjBdIGZsb2F0VmFsdWVdOworICAgICAgICAgICAgRVhQRUNUX0VRKHdpZHRoLCAxMDApOworICAg
ICAgICAgICAgaXNEb25lID0gdHJ1ZTsKKyAgICAgICAgfV07CisgICAgfV07CisgICAgVGVzdFdl
YktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOworfQorCisjZW5kaWYKSW5kZXg6IFRvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvMTAweDEwMC1yZWQudGdhCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
Q2Fubm90IGRpc3BsYXk6IGZpbGUgbWFya2VkIGFzIGEgYmluYXJ5IHR5cGUuCnN2bjptaW1lLXR5
cGUgPSBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0KClByb3BlcnR5IGNoYW5nZXMgb246IFRvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvMTAweDEwMC1yZWQudGdhCl9fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X18KQWRkZWQ6IHN2bjptaW1lLXR5cGUKIyMgLTAsMCArMSAjIworYXBwbGljYXRpb24vb2N0ZXQt
c3RyZWFtClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKCkFBQUtBQUFBQUFBQUFBQUFa
QUJrQUNBbzR3QUEvLy9qQUFELy8rTUFBUC8vNHdBQS8vL2pBQUQvLytNQUFQLy80d0FBLy8vakFB
RC8KLytNQUFQLy80d0FBLy8vakFBRC8vK01BQVAvLzR3QUEvLy9qQUFELy8rTUFBUC8vNHdBQS8v
L2pBQUQvLytNQUFQLy80d0FBLy8vagpBQUQvLytNQUFQLy80d0FBLy8vakFBRC8vK01BQVAvLzR3
QUEvLy9qQUFELy8rTUFBUC8vNHdBQS8vL2pBQUQvLytNQUFQLy80d0FBCi8vL2pBQUQvLytNQUFQ
Ly80d0FBLy8vakFBRC8vK01BQVAvLzR3QUEvLy9qQUFELy8rTUFBUC8vNHdBQS8vL2pBQUQvLytN
QUFQLy8KNHdBQS8vL2pBQUQvLytNQUFQLy80d0FBLy8vakFBRC8vK01BQVAvLzR3QUEvLy9qQUFE
Ly8rTUFBUC8vNHdBQS8vL2pBQUQvLytNQQpBUC8vNHdBQS8vL2pBQUQvLytNQUFQLy80d0FBLy8v
akFBRC8vK01BQVAvLzR3QUEvLy9qQUFELy8rTUFBUC8vNHdBQS8vL2pBQUQvCi8rTUFBUC8vNHdB
QS8vL2pBQUQvLytNQUFQLy80d0FBLy8vakFBRC8vK01BQVAvLzR3QUEvLy9qQUFELy8rTUFBUC8v
NHdBQS8vL2oKQUFELy8rTUFBUC8vNHdBQS8vL2pBQUQvLytNQUFQLy80d0FBLy8vakFBRC8vK01B
QVAvLzR3QUEvLy9qQUFELy8rTUFBUC8vNHdBQQovLy9qQUFELy8rTUFBUC8vNHdBQS8vL2pBQUQv
LytNQUFQLy80d0FBLy8vakFBRC8vK01BQVAvLzR3QUEvLy9qQUFELy8rTUFBUC8vCjR3QUEvLzg9
Cgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>352908</attachid>
            <date>2018-10-22 14:14:19 -0700</date>
            <delta_ts>2018-10-22 16:42:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190454-20181022141419.patch</filename>
            <type>text/plain</type>
            <size>69073</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzNzMwOCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc5IEBACisyMDE4LTEwLTIyICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGFuIFNQ
SSB0byBhbGxvdyBXZWJWaWV3IGNsaWVudHMgdG8gYWRkIGFkZGl0aW9uYWwgc3VwcG9ydGVkIGlt
YWdlIGZvcm1hdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE5MDQ1NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEFkZCBhbiBTUEkgdG8gYWxsb3cgYWRkaXRpb25hbCBzdXBwb3J0ZWQgaW1hZ2UgZm9ybWF0
cyBpbiBXZWJWaWV3LiBUaGVzZQorICAgICAgICBhZGRpdGlvbmFsIGZvcm1hdHMgY2FuIGJlIHNl
dCBpbiB0aGUgV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhcyBhbiBOU0FycmF5CisgICAgICAgIG9m
IE5TdHJpbmdzLiBFYWNoIHN0cmluZyByZXByZXNlbnRzIHRoZSBVVEkgb2YgdGhlIGFkZGl0aW9u
YWwgYWxsb3dlZCAKKyAgICAgICAgaW1hZ2UgZm9ybWF0LgorCisgICAgICAgIFRoaXMgcGF0Y2gg
ZG9lcyBhIGxpdHRsZSBvZiBjb2RlIHJlLWZhY3RvcmluZy4KKworICAgICAgICAtLSBUaGUgaW5p
dGlhbGl6YXRpb24gb2YgdGhlIGxpc3RzIGluIE1JTUVUeXBlUmVnaXN0cnkgYXJlIG5vdyBtb2Rl
cm5pemVkCisgICAgICAgIGFuZCBzZWxmLWNvbnRhaW5lZC4gTmV2ZXJEZXN0cm95PD4gYW5kIHN0
ZDo6Y2FsbF9vbmNlKCkgYXJlIHVzZWQgdG8gc3RvcmUKKyAgICAgICAgYW5kIHRvIGluaXRpYWxp
emUgdGhlc2UgbGlzdHMuCisKKyAgICAgICAgLS0gaXNTdXBwb3J0ZWRJbWFnZVJlc291cmNlTUlN
RVR5cGUoKSBpcyByZW1vdmVkIHNpbmNlIGl0IHdhcyBpZGVudGljYWwKKyAgICAgICAgdG8gaXNT
dXBwb3J0ZWRJbWFnZU1JTUVUeXBlKCkuCisKKyAgICAgICAgLS0gVGhlIG5hbWUgIkFsbG93ZWRJ
bWFnZVVUSSIgaXMgcmVwbGFjZWQgYnkgIlN1cHBvcnRJbWFnZVNvdXJjZVR5cGUiLgorCisgICAg
ICAgICogbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZUZhY3RvcnkuY3BwOgorICAgICAgICAqIGxvYWRl
ci9hcmNoaXZlL0FyY2hpdmVGYWN0b3J5Lmg6CisgICAgICAgIChXZWJDb3JlOjpBcmNoaXZlRmFj
dG9yeTo6cmVnaXN0ZXJLbm93bkFyY2hpdmVNSU1FVHlwZXMpOiBUaGlzIGZ1bmN0aW9uCisgICAg
ICAgIGlzIGNhbGxlZCB3aGlsZSBpbml0aWFsaXppbmcgdGhlIHN1cHBvcnRlZE5vbkltYWdlTUlN
RVR5cGVzKCkuIFNvIGl0CisgICAgICAgIHNob3VsZCBub3QgaGF2ZSBhIGRpcmVjdCBjYWxsIHRv
IGl0LiBJbnN0ZWFkLCBzdXBwb3J0ZWROb25JbWFnZU1JTUVUeXBlcworICAgICAgICBpcyBwYXNz
ZWQgdG8gaXQuCisgICAgICAgICogcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlc0ZvckVuY29kaW5nKToKKyAgICAgICAgKFdlYkNvcmU6
OnN1cHBvcnRlZEFkZGl0aW9uYWxJbWFnZU1JTUVUeXBlcyk6CisgICAgICAgIChXZWJDb3JlOjpz
dXBwb3J0ZWRKYXZhU2NyaXB0TUlNRVR5cGVzKToKKyAgICAgICAgKFdlYkNvcmU6OnN1cHBvcnRl
ZE5vbkltYWdlTUlNRVR5cGVzKToKKyAgICAgICAgKFdlYkNvcmU6OnN1cHBvcnRlZE1lZGlhTUlN
RVR5cGVzKToKKyAgICAgICAgKFdlYkNvcmU6OnBkZk1JTUVUeXBlcyk6CisgICAgICAgIChXZWJD
b3JlOjp1bnN1cHBvcnRlZFRleHRNSU1FVHlwZXMpOgorICAgICAgICAoV2ViQ29yZTo6TUlNRVR5
cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZUZvckVuY29kaW5nKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkSmF2YVNjcmlw
dE1JTUVUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9y
dGVkTm9uSW1hZ2VNSU1FVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5
Ojppc1N1cHBvcnRlZE1lZGlhTUlNRVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6TUlNRVR5cGVS
ZWdpc3RyeTo6aXNVbnN1cHBvcnRlZFRleHRNSU1FVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpN
SU1FVHlwZVJlZ2lzdHJ5Ojppc1BERk1JTUVUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1JTUVU
eXBlUmVnaXN0cnk6OmdldFN1cHBvcnRlZEltYWdlTUlNRVR5cGVzKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1JTUVUeXBlUmVnaXN0cnk6OmdldFN1cHBvcnRlZEltYWdlUmVzb3VyY2VNSU1FVHlwZXMp
OgorICAgICAgICAoV2ViQ29yZTo6TUlNRVR5cGVSZWdpc3RyeTo6Z2V0U3VwcG9ydGVkTm9uSW1h
Z2VNSU1FVHlwZXMpOgorICAgICAgICAoV2ViQ29yZTo6TUlNRVR5cGVSZWdpc3RyeTo6Z2V0U3Vw
cG9ydGVkTWVkaWFNSU1FVHlwZXMpOgorICAgICAgICAoV2ViQ29yZTo6TUlNRVR5cGVSZWdpc3Ry
eTo6Z2V0UERGTUlNRVR5cGVzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6
OmdldFVuc3VwcG9ydGVkVGV4dE1JTUVUeXBlcyk6CisgICAgICAgIChXZWJDb3JlOjppbml0aWFs
aXplU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
aW5pdGlhbGl6ZVN1cHBvcnRlZEltYWdlTUlNRVR5cGVzRm9yRW5jb2RpbmcpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6aW5pdGlhbGl6ZVN1cHBvcnRlZEphdmFTY3JpcHRNSU1FVHlwZXMp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6aW5pdGlhbGl6ZVBERk1JTUVUeXBlcyk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjppbml0aWFsaXplU3VwcG9ydGVkTm9uSW1hZ2VNaW1l
VHlwZXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6aW5pdGlhbGl6ZVN1cHBvcnRlZE1l
ZGlhTUlNRVR5cGVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmluaXRpYWxpemVVbnN1
cHBvcnRlZFRleHRNSU1FVHlwZXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TUlNRVR5
cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRJbWFnZVJlc291cmNlTUlNRVR5cGUpOiBEZWxldGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6c3VwcG9ydHNU
eXBlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJDRzo6ZW5jb2RlZERhdGFTdGF0dXMgY29u
c3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL1VUSVJlZ2lzdHJ5LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnN1cHBvcnRlZERlZmF1bHRJbWFnZVNvdXJjZVR5cGVzKToKKyAgICAg
ICAgKFdlYkNvcmU6OmludGVybmFsU3VwcG9ydGVkQWRkaXRpb25hbEltYWdlU291cmNlVHlwZXMp
OgorICAgICAgICAoV2ViQ29yZTo6c3VwcG9ydGVkQWRkaXRpb25hbEltYWdlU291cmNlVHlwZXMp
OgorICAgICAgICAoV2ViQ29yZTo6c2V0U3VwcG9ydGVkQWRkaXRpb25hbEltYWdlU291cmNlVHlw
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6aXNTdXBwb3J0SW1hZ2VTb3VyY2VUeXBlKToKKyAgICAg
ICAgKFdlYkNvcmU6OmFsbG93ZWRJbWFnZVVUSXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6aXNBbGxvd2VkSW1hZ2VVVEkpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NnL1VUSVJlZ2lzdHJ5Lmg6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRN
YWMubW06CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjp3cml0ZSk6CisKIDIwMTgtMTAt
MTkgIFN0ZXBoYW4gU3phYm8gIDxzdGVwaGFuLnN6YWJvQHNvbnkuY29tPgogCiAgICAgICAgIFtX
aW5DYWlyb10gU2VhcmNoIHRlcm1zIGFyZSBub3Qgc2F2ZWQgZm9yIDxpbnB1dCB0eXBlPSJzZWFy
Y2giPgpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZUZhY3Rvcnku
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVG
YWN0b3J5LmNwcAkocmV2aXNpb24gMjM3MzA4KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fy
Y2hpdmUvQXJjaGl2ZUZhY3RvcnkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NSw5ICs5NSw4IEBA
IFJlZlB0cjxBcmNoaXZlPiBBcmNoaXZlRmFjdG9yeTo6Y3JlYXRlKGMKICAgICByZXR1cm4gZnVu
Y3Rpb24odXJsLCAqZGF0YSk7CiB9CiAKLXZvaWQgQXJjaGl2ZUZhY3Rvcnk6OnJlZ2lzdGVyS25v
d25BcmNoaXZlTUlNRVR5cGVzKCkKK3ZvaWQgQXJjaGl2ZUZhY3Rvcnk6OnJlZ2lzdGVyS25vd25B
cmNoaXZlTUlNRVR5cGVzKEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+
JiBtaW1lVHlwZXMpCiB7Ci0gICAgYXV0byYgbWltZVR5cGVzID0gTUlNRVR5cGVSZWdpc3RyeTo6
Z2V0U3VwcG9ydGVkTm9uSW1hZ2VNSU1FVHlwZXMoKTsKICAgICBmb3IgKGF1dG8mIG1pbWVUeXBl
IDogYXJjaGl2ZU1JTUVUeXBlcygpLmtleXMoKSkKICAgICAgICAgbWltZVR5cGVzLmFkZChtaW1l
VHlwZSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFj
dG9yeS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hp
dmVGYWN0b3J5LmgJKHJldmlzaW9uIDIzNzMwOCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cmNoaXZlL0FyY2hpdmVGYWN0b3J5LmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDcgQEAg
Y2xhc3MgQXJjaGl2ZUZhY3RvcnkgewogcHVibGljOgogICAgIHN0YXRpYyBib29sIGlzQXJjaGl2
ZU1JTUVUeXBlKGNvbnN0IFN0cmluZyYpOwogICAgIHN0YXRpYyBSZWZQdHI8QXJjaGl2ZT4gY3Jl
YXRlKGNvbnN0IFVSTCYsIFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSk7Ci0gICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJLbm93bkFyY2hpdmVNSU1FVHlwZXMoKTsKKyAg
ICBzdGF0aWMgdm9pZCByZWdpc3Rlcktub3duQXJjaGl2ZU1JTUVUeXBlcyhIYXNoU2V0PFN0cmlu
ZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5j
cHAJKHJldmlzaW9uIDIzNzMwOCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBl
UmVnaXN0cnkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NSwyMTAgKzU1LDI2MiBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5z
aXRpdmVIYXNoPiogc3VwcG9ydGVkSW1hZ2VSZXNvdXJjZU1JTUVUeXBlczsKLXN0YXRpYyBIYXNo
U2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiogc3VwcG9ydGVkSW1hZ2VNSU1F
VHlwZXM7Ci1zdGF0aWMgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4q
IHN1cHBvcnRlZEltYWdlTUlNRVR5cGVzRm9yRW5jb2Rpbmc7Ci1zdGF0aWMgSGFzaFNldDxTdHJp
bmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4qIHN1cHBvcnRlZEphdmFTY3JpcHRNSU1FVHlw
ZXM7Ci1zdGF0aWMgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4qIHN1
cHBvcnRlZE5vbkltYWdlTUlNRVR5cGVzOwotc3RhdGljIEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNh
c2VJbnNlbnNpdGl2ZUhhc2g+KiBzdXBwb3J0ZWRNZWRpYU1JTUVUeXBlczsKLXN0YXRpYyBIYXNo
U2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiogcGRmTUlNRVR5cGVzOwotc3Rh
dGljIEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+KiB1bnN1cHBvcnRl
ZFRleHRNSU1FVHlwZXM7Ci0KLXN0YXRpYyB2b2lkIGluaXRpYWxpemVTdXBwb3J0ZWRJbWFnZU1J
TUVUeXBlcygpCitzdGF0aWMgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFz
aD4mIHN1cHBvcnRlZEltYWdlTUlNRVR5cGVzKCkKIHsKLSAgICBzdXBwb3J0ZWRJbWFnZVJlc291
cmNlTUlNRVR5cGVzID0gbmV3IEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhh
c2g+OwotICAgIHN1cHBvcnRlZEltYWdlTUlNRVR5cGVzID0gbmV3IEhhc2hTZXQ8U3RyaW5nLCBB
U0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+OwotCisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhh
c2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+PiBzdXBwb3J0ZWRJbWFnZU1J
TUVUeXBlczsKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7CisgICAgc3RkOjpj
YWxsX29uY2Uob25jZUZsYWcsIFtdIHsKICNpZiBVU0UoQ0cpCi0gICAgLy8gVGhpcyByZXByZXNl
bnRzIHRoZSBzdWJzZXQgb2YgYWxsb3dlZCBpbWFnZSBVVElzIGZvciB3aGljaCBDb3JlU2Vydmlj
ZXMgaGFzIGEgY29ycmVzcG9uZGluZyBNSU1FIHR5cGUuIEtlZXAgdGhpcyBpbiBzeW5jIHdpdGgg
YWxsb3dlZEltYWdlVVRJcygpLgotICAgIHN0YXRpYyBjb25zdCBBU0NJSUxpdGVyYWwgYWxsb3dl
ZEltYWdlTUlNRVR5cGVzW10gPSB7ICJpbWFnZS90aWZmIl9zLCAiaW1hZ2UvZ2lmIl9zLCAiaW1h
Z2UvanBlZyJfcywgImltYWdlL3ZuZC5taWNyb3NvZnQuaWNvbiJfcywgImltYWdlL2pwMiJfcywg
ImltYWdlL3BuZyJfcywgImltYWdlL2JtcCJfcyB9OwotICAgIGZvciAoYXV0byYgbWltZVR5cGUg
OiBhbGxvd2VkSW1hZ2VNSU1FVHlwZXMpIHsKLSAgICAgICAgc3VwcG9ydGVkSW1hZ2VNSU1FVHlw
ZXMtPmFkZChtaW1lVHlwZSk7Ci0gICAgICAgIHN1cHBvcnRlZEltYWdlUmVzb3VyY2VNSU1FVHlw
ZXMtPmFkZChtaW1lVHlwZSk7Ci0gICAgfQotCisgICAgICAgIC8vIFRoaXMgcmVwcmVzZW50cyB0
aGUgc3Vic2V0IG9mIGFsbG93ZWQgaW1hZ2UgVVRJcyBmb3Igd2hpY2ggQ29yZVNlcnZpY2VzIGhh
cyBhIGNvcnJlc3BvbmRpbmcgTUlNRSB0eXBlLiBLZWVwIHRoaXMgaW4gc3luYyB3aXRoIHN1cHBv
cnRlZERlZmF1bHRJbWFnZVNvdXJjZVR5cGVzKCkuCisgICAgICAgIHN0YXRpYyBjb25zdCBBU0NJ
SUxpdGVyYWwgYWxsb3dlZEltYWdlTUlNRVR5cGVzW10gPSB7ICJpbWFnZS90aWZmIl9zLCAiaW1h
Z2UvZ2lmIl9zLCAiaW1hZ2UvanBlZyJfcywgImltYWdlL3ZuZC5taWNyb3NvZnQuaWNvbiJfcywg
ImltYWdlL2pwMiJfcywgImltYWdlL3BuZyJfcywgImltYWdlL2JtcCJfcyB9OworICAgICAgICBm
b3IgKGF1dG8mIG1pbWVUeXBlIDogYWxsb3dlZEltYWdlTUlNRVR5cGVzKQorICAgICAgICAgICAg
c3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXMuZ2V0KCkuYWRkKG1pbWVUeXBlKTsKICNpZm5kZWYgTkRF
QlVHCi0gICAgZm9yIChhdXRvJiB1dGkgOiBhbGxvd2VkSW1hZ2VVVElzKCkpIHsKLSAgICAgICAg
YXV0byBtaW1lVHlwZSA9IE1JTUVUeXBlRm9ySW1hZ2VTb3VyY2VUeXBlKHV0aSk7Ci0gICAgICAg
IGlmICghbWltZVR5cGUuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBBU1NFUlQoc3VwcG9ydGVk
SW1hZ2VNSU1FVHlwZXMtPmNvbnRhaW5zKG1pbWVUeXBlKSk7Ci0gICAgICAgICAgICBBU1NFUlQo
c3VwcG9ydGVkSW1hZ2VSZXNvdXJjZU1JTUVUeXBlcy0+Y29udGFpbnMobWltZVR5cGUpKTsKKyAg
ICAgICAgZm9yIChhdXRvJiB1dGkgOiBzdXBwb3J0ZWREZWZhdWx0SW1hZ2VTb3VyY2VUeXBlcygp
KSB7CisgICAgICAgICAgICBhdXRvIG1pbWVUeXBlID0gTUlNRVR5cGVGb3JJbWFnZVNvdXJjZVR5
cGUodXRpKTsKKyAgICAgICAgICAgIGlmICghbWltZVR5cGUuaXNFbXB0eSgpKQorICAgICAgICAg
ICAgICAgIEFTU0VSVChzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlcy5nZXQoKS5jb250YWlucyhtaW1l
VHlwZSkpOwogICAgICAgICB9Ci0gICAgfQogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgZm9y
IChhdXRvJiBtaW1lIDogKnN1cHBvcnRlZEltYWdlTUlNRVR5cGVzKQotICAgICAgICBBU1NFUlRf
VU5VU0VEKG1pbWUsIGFsbG93ZWRJbWFnZVVUSXMoKS5jb250YWlucyhVVElGcm9tTUlNRVR5cGUo
bWltZSkpKTsKKyAgICAgICAgZm9yIChhdXRvJiBtaW1lIDogc3VwcG9ydGVkSW1hZ2VNSU1FVHlw
ZXMuZ2V0KCkpCisgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKG1pbWUsIHN1cHBvcnRlZERlZmF1
bHRJbWFnZVNvdXJjZVR5cGVzKCkuY29udGFpbnMoVVRJRnJvbU1JTUVUeXBlKG1pbWUpKSk7CiAj
ZW5kaWYKICNlbmRpZgorICAgICAgICAvLyBGYXZpY29ucyBkb24ndCBoYXZlIGEgTUlNRSB0eXBl
IGluIHRoZSByZWdpc3RyeSBlaXRoZXIuCisgICAgICAgIHN1cHBvcnRlZEltYWdlTUlNRVR5cGVz
LmdldCgpLmFkZCgiaW1hZ2UveC1pY29uIik7CiAKLSAgICAvLyBGYXZpY29ucyBkb24ndCBoYXZl
IGEgTUlNRSB0eXBlIGluIHRoZSByZWdpc3RyeSBlaXRoZXIuCi0gICAgc3VwcG9ydGVkSW1hZ2VN
SU1FVHlwZXMtPmFkZCgiaW1hZ2UveC1pY29uIik7Ci0gICAgc3VwcG9ydGVkSW1hZ2VSZXNvdXJj
ZU1JTUVUeXBlcy0+YWRkKCJpbWFnZS94LWljb24iKTsKLQotICAgIC8vICBXZSBvbmx5IGdldCBv
bmUgTUlNRSB0eXBlIHBlciBVVEksIGhlbmNlIG91ciBuZWVkIHRvIGFkZCB0aGVzZSBtYW51YWxs
eQotICAgIHN1cHBvcnRlZEltYWdlTUlNRVR5cGVzLT5hZGQoImltYWdlL3BqcGVnIik7Ci0gICAg
c3VwcG9ydGVkSW1hZ2VSZXNvdXJjZU1JTUVUeXBlcy0+YWRkKCJpbWFnZS9wanBlZyIpOworICAg
ICAgICAvLyAgV2Ugb25seSBnZXQgb25lIE1JTUUgdHlwZSBwZXIgVVRJLCBoZW5jZSBvdXIgbmVl
ZCB0byBhZGQgdGhlc2UgbWFudWFsbHkKKyAgICAgICAgc3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXMu
Z2V0KCkuYWRkKCJpbWFnZS9wanBlZyIpOwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAg
ICAvLyBBZGQgbWFsZm9ybWVkIGltYWdlIG1pbWV0eXBlIGZvciBjb21wYXRpYmlsaXR5IHdpdGgg
TWFpbCBhbmQgdG8gaGFuZGxlIG1hbGZvcm1lZCBtaW1ldHlwZXMgZnJvbSB0aGUgbmV0Ci0gICAg
Ly8gVGhlc2Ugd2VyZSByZW1vdmVkIGZvciA8cmRhcjovL3Byb2JsZW0vNjU2NDUzOD4gUmUtZW5h
YmxlIFVUSSBjb2RlIGluIFdlYkNvcmUgbm93IHRoYXQgTW9iaWxlQ29yZVNlcnZpY2VzIGV4aXN0
cwotICAgIC8vIEJ1dCBNYWlsIHJlbGllcyBvbiBhdCBsZWFzdCBpbWFnZS90aWYgcmVwb3J0ZWQg
YXMgYmVpbmcgc3VwcG9ydGVkIChzaG91bGQgYmUgaW1hZ2UvdGlmZikuCi0gICAgLy8gVGhpcyBj
YW4gYmUgcmVtb3ZlZCB3aGVuIE1haWwgYWRkcmVzc2VzOgotICAgIC8vIDxyZGFyOi8vcHJvYmxl
bS83ODc5NTEwPiBNYWlsIHNob3VsZCB1c2Ugc3RhbmRhcmQgaW1hZ2UgbWltZXR5cGVzCi0gICAg
Ly8gYW5kIHdlIGZpeCBzbmlmZmluZyBzbyB0aGF0IGl0IGNvcnJlY3RzIGl0ZW1zIHN1Y2ggYXMg
aW1hZ2UvanBnIC0+IGltYWdlL2pwZWcuCi0gICAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IG1h
bGZvcm1lZE1JTUVUeXBlc1tdID0gewotICAgICAgICAvLyBKUEVHIChpbWFnZS9qcGVnKQotICAg
ICAgICAiaW1hZ2UvanBnIiwgImltYWdlL2pwXyIsICJpbWFnZS9qcGVfIiwgImFwcGxpY2F0aW9u
L2pwZyIsICJhcHBsaWNhdGlvbi94LWpwZyIsICJpbWFnZS9waXBlZyIsCi0gICAgICAgICJpbWFn
ZS92bmQuc3dpdGZ2aWV3LWpwZWciLCAiaW1hZ2UveC14Yml0bWFwIiwKLSAgICAgICAgLy8gR0lG
IChpbWFnZS9naWYpCi0gICAgICAgICJpbWFnZS9naV8iLAotICAgICAgICAvLyBQTkcgKGltYWdl
L3BuZykKLSAgICAgICAgImFwcGxpY2F0aW9uL3BuZyIsICJhcHBsaWNhdGlvbi94LXBuZyIsCi0g
ICAgICAgIC8vIFRJRkYgKGltYWdlL3RpZmYpCi0gICAgICAgICJpbWFnZS94LXRpZiIsICJpbWFn
ZS90aWYiLCAiaW1hZ2UveC10aWZmIiwgImFwcGxpY2F0aW9uL3RpZiIsICJhcHBsaWNhdGlvbi94
LXRpZiIsICJhcHBsaWNhdGlvbi90aWZmIiwKLSAgICAgICAgImFwcGxpY2F0aW9uL3gtdGlmZiIs
Ci0gICAgICAgIC8vIEJNUCAoaW1hZ2UvYm1wLCBpbWFnZS94LWJpdG1hcCkKLSAgICAgICAgImlt
YWdlL3gtYm1wIiwgImltYWdlL3gtd2luLWJpdG1hcCIsICJpbWFnZS94LXdpbmRvd3MtYm1wIiwg
ImltYWdlL21zLWJtcCIsICJpbWFnZS94LW1zLWJtcCIsCi0gICAgICAgICJhcHBsaWNhdGlvbi9i
bXAiLCAiYXBwbGljYXRpb24veC1ibXAiLCAiYXBwbGljYXRpb24veC13aW4tYml0bWFwIiwKLSAg
ICB9OwotICAgIGZvciAoYXV0byYgdHlwZSA6IG1hbGZvcm1lZE1JTUVUeXBlcykgewotICAgICAg
ICBzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlcy0+YWRkKHR5cGUpOwotICAgICAgICBzdXBwb3J0ZWRJ
bWFnZVJlc291cmNlTUlNRVR5cGVzLT5hZGQodHlwZSk7Ci0gICAgfQorICAgICAgICAvLyBBZGQg
bWFsZm9ybWVkIGltYWdlIG1pbWV0eXBlIGZvciBjb21wYXRpYmlsaXR5IHdpdGggTWFpbCBhbmQg
dG8gaGFuZGxlIG1hbGZvcm1lZCBtaW1ldHlwZXMgZnJvbSB0aGUgbmV0CisgICAgICAgIC8vIFRo
ZXNlIHdlcmUgcmVtb3ZlZCBmb3IgPHJkYXI6Ly9wcm9ibGVtLzY1NjQ1Mzg+IFJlLWVuYWJsZSBV
VEkgY29kZSBpbiBXZWJDb3JlIG5vdyB0aGF0IE1vYmlsZUNvcmVTZXJ2aWNlcyBleGlzdHMKKyAg
ICAgICAgLy8gQnV0IE1haWwgcmVsaWVzIG9uIGF0IGxlYXN0IGltYWdlL3RpZiByZXBvcnRlZCBh
cyBiZWluZyBzdXBwb3J0ZWQgKHNob3VsZCBiZSBpbWFnZS90aWZmKS4KKyAgICAgICAgLy8gVGhp
cyBjYW4gYmUgcmVtb3ZlZCB3aGVuIE1haWwgYWRkcmVzc2VzOgorICAgICAgICAvLyA8cmRhcjov
L3Byb2JsZW0vNzg3OTUxMD4gTWFpbCBzaG91bGQgdXNlIHN0YW5kYXJkIGltYWdlIG1pbWV0eXBl
cworICAgICAgICAvLyBhbmQgd2UgZml4IHNuaWZmaW5nIHNvIHRoYXQgaXQgY29ycmVjdHMgaXRl
bXMgc3VjaCBhcyBpbWFnZS9qcGcgLT4gaW1hZ2UvanBlZy4KKyAgICAgICAgc3RhdGljIGNvbnN0
IGNoYXIqIGNvbnN0IG1hbGZvcm1lZE1JTUVUeXBlc1tdID0geworICAgICAgICAgICAgLy8gSlBF
RyAoaW1hZ2UvanBlZykKKyAgICAgICAgICAgICJpbWFnZS9qcGciLCAiaW1hZ2UvanBfIiwgImlt
YWdlL2pwZV8iLCAiYXBwbGljYXRpb24vanBnIiwgImFwcGxpY2F0aW9uL3gtanBnIiwgImltYWdl
L3BpcGVnIiwKKyAgICAgICAgICAgICJpbWFnZS92bmQuc3dpdGZ2aWV3LWpwZWciLCAiaW1hZ2Uv
eC14Yml0bWFwIiwKKyAgICAgICAgICAgIC8vIEdJRiAoaW1hZ2UvZ2lmKQorICAgICAgICAgICAg
ImltYWdlL2dpXyIsCisgICAgICAgICAgICAvLyBQTkcgKGltYWdlL3BuZykKKyAgICAgICAgICAg
ICJhcHBsaWNhdGlvbi9wbmciLCAiYXBwbGljYXRpb24veC1wbmciLAorICAgICAgICAgICAgLy8g
VElGRiAoaW1hZ2UvdGlmZikKKyAgICAgICAgICAgICJpbWFnZS94LXRpZiIsICJpbWFnZS90aWYi
LCAiaW1hZ2UveC10aWZmIiwgImFwcGxpY2F0aW9uL3RpZiIsICJhcHBsaWNhdGlvbi94LXRpZiIs
ICJhcHBsaWNhdGlvbi90aWZmIiwKKyAgICAgICAgICAgICJhcHBsaWNhdGlvbi94LXRpZmYiLAor
ICAgICAgICAgICAgLy8gQk1QIChpbWFnZS9ibXAsIGltYWdlL3gtYml0bWFwKQorICAgICAgICAg
ICAgImltYWdlL3gtYm1wIiwgImltYWdlL3gtd2luLWJpdG1hcCIsICJpbWFnZS94LXdpbmRvd3Mt
Ym1wIiwgImltYWdlL21zLWJtcCIsICJpbWFnZS94LW1zLWJtcCIsCisgICAgICAgICAgICAiYXBw
bGljYXRpb24vYm1wIiwgImFwcGxpY2F0aW9uL3gtYm1wIiwgImFwcGxpY2F0aW9uL3gtd2luLWJp
dG1hcCIsCisgICAgICAgIH07CisgICAgICAgIGZvciAoYXV0byYgdHlwZSA6IG1hbGZvcm1lZE1J
TUVUeXBlcykKKyAgICAgICAgICAgIHN1cHBvcnRlZEltYWdlTUlNRVR5cGVzLmdldCgpLmFkZCh0
eXBlKTsKICNlbmRpZgotCiAjZWxzZQotICAgIC8vIGFzc3VtZSB0aGF0IGFsbCBpbXBsZW1lbnRh
dGlvbnMgYXQgbGVhc3Qgc3VwcG9ydCB0aGUgZm9sbG93aW5nIHN0YW5kYXJkCi0gICAgLy8gaW1h
Z2UgdHlwZXM6Ci0gICAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IHR5cGVzW10gPSB7Ci0gICAg
ICAgICJpbWFnZS9qcGVnIiwKLSAgICAgICAgImltYWdlL3BuZyIsCi0gICAgICAgICJpbWFnZS9n
aWYiLAotICAgICAgICAiaW1hZ2UvYm1wIiwKLSAgICAgICAgImltYWdlL3ZuZC5taWNyb3NvZnQu
aWNvbiIsICAgIC8vIGljbwotICAgICAgICAiaW1hZ2UveC1pY29uIiwgICAgLy8gaWNvCi0gICAg
ICAgICJpbWFnZS94LXhiaXRtYXAiICAvLyB4Ym0KLSAgICB9OwotICAgIGZvciAoYXV0byYgdHlw
ZSA6IHR5cGVzKSB7Ci0gICAgICAgIHN1cHBvcnRlZEltYWdlTUlNRVR5cGVzLT5hZGQodHlwZSk7
Ci0gICAgICAgIHN1cHBvcnRlZEltYWdlUmVzb3VyY2VNSU1FVHlwZXMtPmFkZCh0eXBlKTsKLSAg
ICB9Ci0KKyAgICAgICAgLy8gYXNzdW1lIHRoYXQgYWxsIGltcGxlbWVudGF0aW9ucyBhdCBsZWFz
dCBzdXBwb3J0IHRoZSBmb2xsb3dpbmcgc3RhbmRhcmQKKyAgICAgICAgLy8gaW1hZ2UgdHlwZXM6
CisgICAgICAgIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCB0eXBlc1tdID0geworICAgICAgICAg
ICAgImltYWdlL2pwZWciLAorICAgICAgICAgICAgImltYWdlL3BuZyIsCisgICAgICAgICAgICAi
aW1hZ2UvZ2lmIiwKKyAgICAgICAgICAgICJpbWFnZS9ibXAiLAorICAgICAgICAgICAgImltYWdl
L3ZuZC5taWNyb3NvZnQuaWNvbiIsCisgICAgICAgICAgICAiaW1hZ2UveC1pY29uIiwKKyAgICAg
ICAgICAgICJpbWFnZS94LXhiaXRtYXAiCisgICAgICAgIH07CisgICAgICAgIGZvciAoYXV0byYg
dHlwZSA6IHR5cGVzKQorICAgICAgICAgICAgc3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXMuZ2V0KCku
YWRkKHR5cGUpOwogI2lmIFVTRShXRUJQKQotICAgIHN1cHBvcnRlZEltYWdlTUlNRVR5cGVzLT5h
ZGQoImltYWdlL3dlYnAiKTsKLSAgICBzdXBwb3J0ZWRJbWFnZVJlc291cmNlTUlNRVR5cGVzLT5h
ZGQoImltYWdlL3dlYnAiKTsKKyAgICAgICAgc3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXMuZ2V0KCku
YWRkKCJpbWFnZS93ZWJwIik7CiAjZW5kaWYKLQogI2VuZGlmIC8vIFVTRShDRykKKyAgICB9KTsK
KyAgICByZXR1cm4gc3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXM7CiB9CiAKLXN0YXRpYyB2b2lkIGlu
aXRpYWxpemVTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlc0ZvckVuY29kaW5nKCkKK3N0YXRpYyBIYXNo
U2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgc3VwcG9ydGVkSW1hZ2VNSU1F
VHlwZXNGb3JFbmNvZGluZygpCiB7Ci0gICAgc3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXNGb3JFbmNv
ZGluZyA9IG5ldyBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPjsKLQor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5z
aXRpdmVIYXNoPj4gc3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXNGb3JFbmNvZGluZzsKKyAgICBzdGF0
aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7CisgICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcs
IFtdIHsKICNpZiBVU0UoQ0cpCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgUmV0YWluUHRyPENG
QXJyYXlSZWY+IHN1cHBvcnRlZFR5cGVzID0gYWRvcHRDRihDR0ltYWdlRGVzdGluYXRpb25Db3B5
VHlwZUlkZW50aWZpZXJzKCkpOwotICAgIENGSW5kZXggY291bnQgPSBDRkFycmF5R2V0Q291bnQo
c3VwcG9ydGVkVHlwZXMuZ2V0KCkpOwotICAgIGZvciAoQ0ZJbmRleCBpID0gMDsgaSA8IGNvdW50
OyBpKyspIHsKLSAgICAgICAgQ0ZTdHJpbmdSZWYgc3VwcG9ydGVkVHlwZSA9IHJlaW50ZXJwcmV0
X2Nhc3Q8Q0ZTdHJpbmdSZWY+KENGQXJyYXlHZXRWYWx1ZUF0SW5kZXgoc3VwcG9ydGVkVHlwZXMu
Z2V0KCksIGkpKTsKLSAgICAgICAgU3RyaW5nIG1pbWVUeXBlID0gTUlNRVR5cGVGb3JJbWFnZVNv
dXJjZVR5cGUoc3VwcG9ydGVkVHlwZSk7Ci0gICAgICAgIGlmICghbWltZVR5cGUuaXNFbXB0eSgp
KQotICAgICAgICAgICAgc3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXNGb3JFbmNvZGluZy0+YWRkKG1p
bWVUeXBlKTsKLSAgICB9CisgICAgICAgIFJldGFpblB0cjxDRkFycmF5UmVmPiBzdXBwb3J0ZWRU
eXBlcyA9IGFkb3B0Q0YoQ0dJbWFnZURlc3RpbmF0aW9uQ29weVR5cGVJZGVudGlmaWVycygpKTsK
KyAgICAgICAgQ0ZJbmRleCBjb3VudCA9IENGQXJyYXlHZXRDb3VudChzdXBwb3J0ZWRUeXBlcy5n
ZXQoKSk7CisgICAgICAgIGZvciAoQ0ZJbmRleCBpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKKyAg
ICAgICAgICAgIENGU3RyaW5nUmVmIHN1cHBvcnRlZFR5cGUgPSByZWludGVycHJldF9jYXN0PENG
U3RyaW5nUmVmPihDRkFycmF5R2V0VmFsdWVBdEluZGV4KHN1cHBvcnRlZFR5cGVzLmdldCgpLCBp
KSk7CisgICAgICAgICAgICBTdHJpbmcgbWltZVR5cGUgPSBNSU1FVHlwZUZvckltYWdlU291cmNl
VHlwZShzdXBwb3J0ZWRUeXBlKTsKKyAgICAgICAgICAgIGlmICghbWltZVR5cGUuaXNFbXB0eSgp
KQorICAgICAgICAgICAgICAgIHN1cHBvcnRlZEltYWdlTUlNRVR5cGVzRm9yRW5jb2RpbmcuZ2V0
KCkuYWRkKG1pbWVUeXBlKTsKKyAgICAgICAgfQogI2Vsc2UKLSAgICAvLyBGSVhNRTogQWRkIFdp
bmRvd3Mgc3VwcG9ydCBmb3IgYWxsIHRoZSBzdXBwb3J0ZWQgVVRJJ3Mgd2hlbiBhIHdheSB0byBj
b252ZXJ0IGZyb20gTUlNRVR5cGUgdG8gVVRJIHJlbGlhYmx5IGlzIGZvdW5kLgotICAgIC8vIEZv
ciBub3csIG9ubHkgc3VwcG9ydCBQTkcsIEpQRUcgYW5kIEdJRi4gIFNlZSA8cmRhcjovL3Byb2Js
ZW0vNjA5NTI4Nj4uCi0gICAgc3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXNGb3JFbmNvZGluZy0+YWRk
KCJpbWFnZS9wbmciKTsKLSAgICBzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlc0ZvckVuY29kaW5nLT5h
ZGQoImltYWdlL2pwZWciKTsKLSAgICBzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlc0ZvckVuY29kaW5n
LT5hZGQoImltYWdlL2dpZiIpOworICAgICAgICAvLyBGSVhNRTogQWRkIFdpbmRvd3Mgc3VwcG9y
dCBmb3IgYWxsIHRoZSBzdXBwb3J0ZWQgVVRJJ3Mgd2hlbiBhIHdheSB0byBjb252ZXJ0IGZyb20g
TUlNRVR5cGUgdG8gVVRJIHJlbGlhYmx5IGlzIGZvdW5kLgorICAgICAgICAvLyBGb3Igbm93LCBv
bmx5IHN1cHBvcnQgUE5HLCBKUEVHIGFuZCBHSUYuIFNlZSA8cmRhcjovL3Byb2JsZW0vNjA5NTI4
Nj4uCisgICAgICAgIHN1cHBvcnRlZEltYWdlTUlNRVR5cGVzRm9yRW5jb2RpbmcuZ2V0KCkuYWRk
KCJpbWFnZS9wbmciKTsKKyAgICAgICAgc3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXNGb3JFbmNvZGlu
Zy5nZXQoKS5hZGQoImltYWdlL2pwZWciKTsKKyAgICAgICAgc3VwcG9ydGVkSW1hZ2VNSU1FVHlw
ZXNGb3JFbmNvZGluZy5nZXQoKS5hZGQoImltYWdlL2dpZiIpOwogI2VuZGlmCiAjZWxpZiBQTEFU
Rk9STShHVEspCi0gICAgc3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXNGb3JFbmNvZGluZy0+YWRkKCJp
bWFnZS9wbmciKTsKLSAgICBzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlc0ZvckVuY29kaW5nLT5hZGQo
ImltYWdlL2pwZWciKTsKLSAgICBzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlc0ZvckVuY29kaW5nLT5h
ZGQoImltYWdlL3RpZmYiKTsKLSAgICBzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlc0ZvckVuY29kaW5n
LT5hZGQoImltYWdlL2JtcCIpOwotICAgIHN1cHBvcnRlZEltYWdlTUlNRVR5cGVzRm9yRW5jb2Rp
bmctPmFkZCgiaW1hZ2UvaWNvIik7CisgICAgICAgIHN1cHBvcnRlZEltYWdlTUlNRVR5cGVzRm9y
RW5jb2RpbmcuZ2V0KCkuYWRkKCJpbWFnZS9wbmciKTsKKyAgICAgICAgc3VwcG9ydGVkSW1hZ2VN
SU1FVHlwZXNGb3JFbmNvZGluZy5nZXQoKS5hZGQoImltYWdlL2pwZWciKTsKKyAgICAgICAgc3Vw
cG9ydGVkSW1hZ2VNSU1FVHlwZXNGb3JFbmNvZGluZy5nZXQoKS5hZGQoImltYWdlL3RpZmYiKTsK
KyAgICAgICAgc3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXNGb3JFbmNvZGluZy5nZXQoKS5hZGQoImlt
YWdlL2JtcCIpOworICAgICAgICBzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlc0ZvckVuY29kaW5nLmdl
dCgpLmFkZCgiaW1hZ2UvaWNvIik7CiAjZWxpZiBVU0UoQ0FJUk8pCi0gICAgc3VwcG9ydGVkSW1h
Z2VNSU1FVHlwZXNGb3JFbmNvZGluZy0+YWRkKCJpbWFnZS9wbmciKTsKKyAgICAgICAgc3VwcG9y
dGVkSW1hZ2VNSU1FVHlwZXNGb3JFbmNvZGluZy5nZXQoKS5hZGQoImltYWdlL3BuZyIpOwogI2Vu
ZGlmCisgICAgfSk7CisgICAgcmV0dXJuIHN1cHBvcnRlZEltYWdlTUlNRVR5cGVzRm9yRW5jb2Rp
bmc7CiB9CiAKLXN0YXRpYyB2b2lkIGluaXRpYWxpemVTdXBwb3J0ZWRKYXZhU2NyaXB0TUlNRVR5
cGVzKCkKK3N0YXRpYyBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYg
c3VwcG9ydGVkQWRkaXRpb25hbEltYWdlTUlNRVR5cGVzKCkKIHsKLSAgICAvLyBodHRwczovL2h0
bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zY3JpcHRpbmcuaHRtbCNqYXZhc2NyaXB0LW1p
bWUtdHlwZQotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCB0eXBlc1tdID0gewotICAgICAg
ICAidGV4dC9qYXZhc2NyaXB0IiwKLSAgICAgICAgInRleHQvZWNtYXNjcmlwdCIsCi0gICAgICAg
ICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiwKLSAgICAgICAgImFwcGxpY2F0aW9uL2VjbWFzY3Jp
cHQiLAotICAgICAgICAiYXBwbGljYXRpb24veC1qYXZhc2NyaXB0IiwKLSAgICAgICAgImFwcGxp
Y2F0aW9uL3gtZWNtYXNjcmlwdCIsCi0gICAgICAgICJ0ZXh0L2phdmFzY3JpcHQxLjAiLAotICAg
ICAgICAidGV4dC9qYXZhc2NyaXB0MS4xIiwKLSAgICAgICAgInRleHQvamF2YXNjcmlwdDEuMiIs
Ci0gICAgICAgICJ0ZXh0L2phdmFzY3JpcHQxLjMiLAotICAgICAgICAidGV4dC9qYXZhc2NyaXB0
MS40IiwKLSAgICAgICAgInRleHQvamF2YXNjcmlwdDEuNSIsCi0gICAgICAgICJ0ZXh0L2pzY3Jp
cHQiLAotICAgICAgICAidGV4dC9saXZlc2NyaXB0IiwKLSAgICAgICAgInRleHQveC1qYXZhc2Ny
aXB0IiwKLSAgICAgICAgInRleHQveC1lY21hc2NyaXB0IgotICAgIH07Ci0KLSAgICBzdXBwb3J0
ZWRKYXZhU2NyaXB0TUlNRVR5cGVzID0gbmV3IEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNl
bnNpdGl2ZUhhc2g+OwotICAgIGZvciAoYXV0byogdHlwZSA6IHR5cGVzKQotICAgICAgICBzdXBw
b3J0ZWRKYXZhU2NyaXB0TUlNRVR5cGVzLT5hZGQodHlwZSk7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+PiBzdXBwb3J0
ZWRBZGRpdGlvbmFsSW1hZ2VNSU1FVHlwZXM7CisjaWYgVVNFKENHKQorICAgIGlmICghc3VwcG9y
dGVkQWRkaXRpb25hbEltYWdlU291cmNlVHlwZXMoKS5pc0VtcHR5KCkpIHsKKyAgICAgICAgc3Rh
dGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOworICAgICAgICBzdGQ6OmNhbGxfb25jZShvbmNl
RmxhZywgW10geworICAgICAgICAgICAgLy8gQWRkIHRoZSBtaW1lIHR5cGVzIG9mIHRoZSBzdXBw
b3J0ZWRBZGRpdGlvbmFsSW1hZ2VTb3VyY2VUeXBlcy4KKyAgICAgICAgICAgIGZvciAoYXV0byYg
dXRpIDogc3VwcG9ydGVkQWRkaXRpb25hbEltYWdlU291cmNlVHlwZXMoKSkgeworICAgICAgICAg
ICAgICAgIGF1dG8gbWltZVR5cGUgPSBNSU1FVHlwZUZvckltYWdlU291cmNlVHlwZSh1dGkpOwor
ICAgICAgICAgICAgICAgIGlmICghbWltZVR5cGUuaXNFbXB0eSgpKQorICAgICAgICAgICAgICAg
ICAgICBzdXBwb3J0ZWRBZGRpdGlvbmFsSW1hZ2VNSU1FVHlwZXMuZ2V0KCkuYWRkKG1pbWVUeXBl
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisgICAgfQorI2VuZGlmCisgICAgcmV0dXJu
IHN1cHBvcnRlZEFkZGl0aW9uYWxJbWFnZU1JTUVUeXBlczsKIH0KIAotc3RhdGljIHZvaWQgaW5p
dGlhbGl6ZVBERk1JTUVUeXBlcygpCitzdGF0aWMgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUlu
c2Vuc2l0aXZlSGFzaD4mIHN1cHBvcnRlZEphdmFTY3JpcHRNSU1FVHlwZXMoKQogewotICAgIGNv
bnN0IGNoYXIqIGNvbnN0IHR5cGVzW10gPSB7Ci0gICAgICAgICJhcHBsaWNhdGlvbi9wZGYiLAot
ICAgICAgICAidGV4dC9wZGYiCi0gICAgfTsKLQotICAgIHBkZk1JTUVUeXBlcyA9IG5ldyBIYXNo
U2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPjsKLSAgICBmb3IgKGF1dG8mIHR5
cGUgOiB0eXBlcykKLSAgICAgICAgcGRmTUlNRVR5cGVzLT5hZGQodHlwZSk7Ci19CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhh
c2g+PiBzdXBwb3J0ZWRKYXZhU2NyaXB0TUlNRVR5cGVzOworICAgIHN0YXRpYyBzdGQ6Om9uY2Vf
ZmxhZyBvbmNlRmxhZzsKKyAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywgW10geworICAgICAg
ICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zY3JpcHRpbmcuaHRt
bCNqYXZhc2NyaXB0LW1pbWUtdHlwZQorICAgICAgICBzdGF0aWMgY29uc3QgY2hhciogY29uc3Qg
dHlwZXNbXSA9IHsKKyAgICAgICAgICAgICJ0ZXh0L2phdmFzY3JpcHQiLAorICAgICAgICAgICAg
InRleHQvZWNtYXNjcmlwdCIsCisgICAgICAgICAgICAiYXBwbGljYXRpb24vamF2YXNjcmlwdCIs
CisgICAgICAgICAgICAiYXBwbGljYXRpb24vZWNtYXNjcmlwdCIsCisgICAgICAgICAgICAiYXBw
bGljYXRpb24veC1qYXZhc2NyaXB0IiwKKyAgICAgICAgICAgICJhcHBsaWNhdGlvbi94LWVjbWFz
Y3JpcHQiLAorICAgICAgICAgICAgInRleHQvamF2YXNjcmlwdDEuMCIsCisgICAgICAgICAgICAi
dGV4dC9qYXZhc2NyaXB0MS4xIiwKKyAgICAgICAgICAgICJ0ZXh0L2phdmFzY3JpcHQxLjIiLAor
ICAgICAgICAgICAgInRleHQvamF2YXNjcmlwdDEuMyIsCisgICAgICAgICAgICAidGV4dC9qYXZh
c2NyaXB0MS40IiwKKyAgICAgICAgICAgICJ0ZXh0L2phdmFzY3JpcHQxLjUiLAorICAgICAgICAg
ICAgInRleHQvanNjcmlwdCIsCisgICAgICAgICAgICAidGV4dC9saXZlc2NyaXB0IiwKKyAgICAg
ICAgICAgICJ0ZXh0L3gtamF2YXNjcmlwdCIsCisgICAgICAgICAgICAidGV4dC94LWVjbWFzY3Jp
cHQiCisgICAgICAgIH07CiAKLXN0YXRpYyB2b2lkIGluaXRpYWxpemVTdXBwb3J0ZWROb25JbWFn
ZU1pbWVUeXBlcygpCi17Ci0gICAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IHR5cGVzW10gPSB7
Ci0gICAgICAgICJ0ZXh0L2h0bWwiLAotICAgICAgICAidGV4dC94bWwiLAotICAgICAgICAidGV4
dC94c2wiLAotICAgICAgICAidGV4dC9wbGFpbiIsCi0gICAgICAgICJ0ZXh0LyIsCi0gICAgICAg
ICJhcHBsaWNhdGlvbi94bWwiLAotICAgICAgICAiYXBwbGljYXRpb24veGh0bWwreG1sIiwKKyAg
ICAgICAgZm9yIChhdXRvKiB0eXBlIDogdHlwZXMpCisgICAgICAgICAgICBzdXBwb3J0ZWRKYXZh
U2NyaXB0TUlNRVR5cGVzLmdldCgpLmFkZCh0eXBlKTsKKyAgICB9KTsKKyAgICByZXR1cm4gc3Vw
cG9ydGVkSmF2YVNjcmlwdE1JTUVUeXBlczsKK30KKworc3RhdGljIEhhc2hTZXQ8U3RyaW5nLCBB
U0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiBzdXBwb3J0ZWROb25JbWFnZU1JTUVUeXBlcygpCit7
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNl
bnNpdGl2ZUhhc2g+PiBzdXBwb3J0ZWROb25JbWFnZU1JTUVUeXBlczsKKyAgICBzdGF0aWMgc3Rk
OjpvbmNlX2ZsYWcgb25jZUZsYWc7CisgICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsK
KyAgICAgICAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IHR5cGVzW10gPSB7CisgICAgICAgICAg
ICAidGV4dC9odG1sIiwKKyAgICAgICAgICAgICJ0ZXh0L3htbCIsCisgICAgICAgICAgICAidGV4
dC94c2wiLAorICAgICAgICAgICAgInRleHQvcGxhaW4iLAorICAgICAgICAgICAgInRleHQvIiwK
KyAgICAgICAgICAgICJhcHBsaWNhdGlvbi94bWwiLAorICAgICAgICAgICAgImFwcGxpY2F0aW9u
L3hodG1sK3htbCIsCiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgICAgICJhcHBsaWNh
dGlvbi92bmQud2FwLnhodG1sK3htbCIsCi0gICAgICAgICJhcHBsaWNhdGlvbi9yc3MreG1sIiwK
LSAgICAgICAgImFwcGxpY2F0aW9uL2F0b20reG1sIiwKKyAgICAgICAgICAgICJhcHBsaWNhdGlv
bi92bmQud2FwLnhodG1sK3htbCIsCisgICAgICAgICAgICAiYXBwbGljYXRpb24vcnNzK3htbCIs
CisgICAgICAgICAgICAiYXBwbGljYXRpb24vYXRvbSt4bWwiLAogI2VuZGlmCi0gICAgICAgICJh
cHBsaWNhdGlvbi9qc29uIiwKLSAgICAgICAgImltYWdlL3N2Zyt4bWwiLAorICAgICAgICAgICAg
ImFwcGxpY2F0aW9uL2pzb24iLAorICAgICAgICAgICAgImltYWdlL3N2Zyt4bWwiLAogI2lmIEVO
QUJMRShGVFBESVIpCi0gICAgICAgICJhcHBsaWNhdGlvbi94LWZ0cC1kaXJlY3RvcnkiLAorICAg
ICAgICAgICAgImFwcGxpY2F0aW9uL3gtZnRwLWRpcmVjdG9yeSIsCiAjZW5kaWYKLSAgICAgICAg
Im11bHRpcGFydC94LW1peGVkLXJlcGxhY2UiCi0gICAgICAgIC8vIE5vdGU6IEFkZGluZyBhIG5l
dyB0eXBlIGhlcmUgd2lsbCBwcm9iYWJseSByZW5kZXIgaXQgYXMgSFRNTC4KLSAgICAgICAgLy8g
VGhpcyBjYW4gcmVzdWx0IGluIGNyb3NzLXNpdGUgc2NyaXB0aW5nIHZ1bG5lcmFiaWxpdGllcy4K
LSAgICB9OwotCi0gICAgaWYgKCFzdXBwb3J0ZWRKYXZhU2NyaXB0TUlNRVR5cGVzKQotICAgICAg
ICBpbml0aWFsaXplU3VwcG9ydGVkSmF2YVNjcmlwdE1JTUVUeXBlcygpOworICAgICAgICAgICAg
Im11bHRpcGFydC94LW1peGVkLXJlcGxhY2UiCisgICAgICAgICAgICAvLyBOb3RlOiBBZGRpbmcg
YSBuZXcgdHlwZSBoZXJlIHdpbGwgcHJvYmFibHkgcmVuZGVyIGl0IGFzIEhUTUwuCisgICAgICAg
ICAgICAvLyBUaGlzIGNhbiByZXN1bHQgaW4gY3Jvc3Mtc2l0ZSBzY3JpcHRpbmcgdnVsbmVyYWJp
bGl0aWVzLgorICAgICAgICB9OwogCi0gICAgc3VwcG9ydGVkTm9uSW1hZ2VNSU1FVHlwZXMgPSBu
ZXcgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4geyAqc3VwcG9ydGVk
SmF2YVNjcmlwdE1JTUVUeXBlcyB9OwotICAgIGZvciAoYXV0byYgdHlwZSA6IHR5cGVzKQotICAg
ICAgICBzdXBwb3J0ZWROb25JbWFnZU1JTUVUeXBlcy0+YWRkKHR5cGUpOworICAgICAgICBzdXBw
b3J0ZWROb25JbWFnZU1JTUVUeXBlcy5nZXQoKS5hZGQoc3VwcG9ydGVkSmF2YVNjcmlwdE1JTUVU
eXBlcygpLmJlZ2luKCksIHN1cHBvcnRlZEphdmFTY3JpcHRNSU1FVHlwZXMoKS5lbmQoKSk7Cisg
ICAgICAgIGZvciAoYXV0byYgdHlwZSA6IHR5cGVzKQorICAgICAgICAgICAgc3VwcG9ydGVkTm9u
SW1hZ2VNSU1FVHlwZXMuZ2V0KCkuYWRkKHR5cGUpOwogCiAjaWYgRU5BQkxFKFdFQl9BUkNISVZF
KSB8fCBFTkFCTEUoTUhUTUwpCi0gICAgQXJjaGl2ZUZhY3Rvcnk6OnJlZ2lzdGVyS25vd25BcmNo
aXZlTUlNRVR5cGVzKCk7CisgICAgICAgIEFyY2hpdmVGYWN0b3J5OjpyZWdpc3Rlcktub3duQXJj
aGl2ZU1JTUVUeXBlcyhzdXBwb3J0ZWROb25JbWFnZU1JTUVUeXBlcyk7CiAjZW5kaWYKKyAgICB9
KTsKKyAgICByZXR1cm4gc3VwcG9ydGVkTm9uSW1hZ2VNSU1FVHlwZXM7Cit9CisKK3N0YXRpYyBI
YXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgc3VwcG9ydGVkTWVkaWFN
SU1FVHlwZXMoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0PFN0cmluZywg
QVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPj4gc3VwcG9ydGVkTWVkaWFNSU1FVHlwZXM7CisjaWYg
RU5BQkxFKFZJREVPKQorICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKKyAgICBz
dGQ6OmNhbGxfb25jZShvbmNlRmxhZywgW10geworICAgICAgICBNZWRpYVBsYXllcjo6Z2V0U3Vw
cG9ydGVkVHlwZXMoc3VwcG9ydGVkTWVkaWFNSU1FVHlwZXMpOworICAgIH0pOworI2VuZGlmCisg
ICAgcmV0dXJuIHN1cHBvcnRlZE1lZGlhTUlNRVR5cGVzOworfQorCitzdGF0aWMgSGFzaFNldDxT
dHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIHBkZk1JTUVUeXBlcygpCit7CisgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2
ZUhhc2g+PiBwZGZNSU1FVHlwZXM7CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFn
OworICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbXSB7CisgICAgICAgIHN0YXRpYyBjb25z
dCBjaGFyKiBjb25zdCB0eXBlc1tdID0geworICAgICAgICAgICAgImFwcGxpY2F0aW9uL3BkZiIs
CisgICAgICAgICAgICAidGV4dC9wZGYiCisgICAgICAgIH07CisKKyAgICAgICAgZm9yIChhdXRv
JiB0eXBlIDogdHlwZXMpCisgICAgICAgICAgICBwZGZNSU1FVHlwZXMuZ2V0KCkuYWRkKHR5cGUp
OworICAgIH0pOworICAgIHJldHVybiBwZGZNSU1FVHlwZXM7Cit9CisKK3N0YXRpYyBIYXNoU2V0
PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgdW5zdXBwb3J0ZWRUZXh0TUlNRVR5
cGVzKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxTdHJpbmcsIEFTQ0lJ
Q2FzZUluc2Vuc2l0aXZlSGFzaD4+IHVuc3VwcG9ydGVkVGV4dE1JTUVUeXBlczsKKyAgICBzdGF0
aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7CisgICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcs
IFtdIHsKKyAgICAgICAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IHR5cGVzW10gPSB7CisgICAg
ICAgICAgICAidGV4dC9jYWxlbmRhciJfcywKKyAgICAgICAgICAgICJ0ZXh0L3gtY2FsZW5kYXIi
X3MsCisgICAgICAgICAgICAidGV4dC94LXZjYWxlbmRhciJfcywKKyAgICAgICAgICAgICJ0ZXh0
L3ZjYWxlbmRhciJfcywKKyAgICAgICAgICAgICJ0ZXh0L3ZjYXJkIl9zLAorICAgICAgICAgICAg
InRleHQveC12Y2FyZCJfcywKKyAgICAgICAgICAgICJ0ZXh0L2RpcmVjdG9yeSJfcywKKyAgICAg
ICAgICAgICJ0ZXh0L2xkaWYiX3MsCisgICAgICAgICAgICAidGV4dC9xaWYiX3MsCisgICAgICAg
ICAgICAidGV4dC94LXFpZiJfcywKKyAgICAgICAgICAgICJ0ZXh0L3gtY3N2Il9zLAorICAgICAg
ICAgICAgInRleHQveC12Y2YiX3MsCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgICAg
ICAgICAidGV4dC9ydGYiX3MsCisjZWxzZQorICAgICAgICAgICAgInRleHQvdm5kLnN1bi5qMm1l
LmFwcC1kZXNjcmlwdG9yIl9zLAorI2VuZGlmCisgICAgICAgIH07CisKKyAgICAgICAgZm9yIChh
dXRvJiB0eXBlIDogdHlwZXMpCisgICAgICAgICAgICB1bnN1cHBvcnRlZFRleHRNSU1FVHlwZXMu
Z2V0KCkuYWRkKHR5cGUpOworICAgIH0pOworICAgIHJldHVybiB1bnN1cHBvcnRlZFRleHRNSU1F
VHlwZXM7CiB9CiAKIHN0YXRpYyBjb25zdCBWZWN0b3I8U3RyaW5nPiogdHlwZXNGb3JDb21tb25F
eHRlbnNpb24oY29uc3QgU3RyaW5nJiBleHRlbnNpb24pCkBAIC0zOTIsNDEgKzQ0NCw2IEBAIFZl
Y3RvcjxTdHJpbmc+IE1JTUVUeXBlUmVnaXN0cnk6OmdldE1lZGkKICAgICByZXR1cm4geyB9Owog
fQogCi1zdGF0aWMgdm9pZCBpbml0aWFsaXplU3VwcG9ydGVkTWVkaWFNSU1FVHlwZXMoKQotewot
ICAgIHN1cHBvcnRlZE1lZGlhTUlNRVR5cGVzID0gbmV3IEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNh
c2VJbnNlbnNpdGl2ZUhhc2g+OwotI2lmIEVOQUJMRShWSURFTykKLSAgICBNZWRpYVBsYXllcjo6
Z2V0U3VwcG9ydGVkVHlwZXMoKnN1cHBvcnRlZE1lZGlhTUlNRVR5cGVzKTsKLSNlbmRpZgotfQot
Ci1zdGF0aWMgdm9pZCBpbml0aWFsaXplVW5zdXBwb3J0ZWRUZXh0TUlNRVR5cGVzKCkKLXsKLSAg
ICBzdGF0aWMgY29uc3QgY2hhciogY29uc3QgdHlwZXNbXSA9IHsKLSAgICAgICAgInRleHQvY2Fs
ZW5kYXIiX3MsCi0gICAgICAgICJ0ZXh0L3gtY2FsZW5kYXIiX3MsCi0gICAgICAgICJ0ZXh0L3gt
dmNhbGVuZGFyIl9zLAotICAgICAgICAidGV4dC92Y2FsZW5kYXIiX3MsCi0gICAgICAgICJ0ZXh0
L3ZjYXJkIl9zLAotICAgICAgICAidGV4dC94LXZjYXJkIl9zLAotICAgICAgICAidGV4dC9kaXJl
Y3RvcnkiX3MsCi0gICAgICAgICJ0ZXh0L2xkaWYiX3MsCi0gICAgICAgICJ0ZXh0L3FpZiJfcywK
LSAgICAgICAgInRleHQveC1xaWYiX3MsCi0gICAgICAgICJ0ZXh0L3gtY3N2Il9zLAotICAgICAg
ICAidGV4dC94LXZjZiJfcywKLSNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICAgICAgInRl
eHQvcnRmIl9zLAotI2Vsc2UKLSAgICAgICAgInRleHQvdm5kLnN1bi5qMm1lLmFwcC1kZXNjcmlw
dG9yIl9zLAotI2VuZGlmCi0gICAgfTsKLQotICAgIHVuc3VwcG9ydGVkVGV4dE1JTUVUeXBlcyA9
IG5ldyBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPjsKLSAgICBmb3Ig
KGF1dG8mIHR5cGUgOiB0eXBlcykKLSAgICAgICAgdW5zdXBwb3J0ZWRUZXh0TUlNRVR5cGVzLT5h
ZGQodHlwZSk7Ci19Ci0KIFN0cmluZyBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRNSU1FVHlwZUZvclBh
dGgoY29uc3QgU3RyaW5nJiBwYXRoKQogewogICAgIHNpemVfdCBwb3MgPSBwYXRoLnJldmVyc2VG
aW5kKCcuJyk7CkBAIC00NDMsOSArNDYwLDcgQEAgYm9vbCBNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1
cHBvcnRlZEltYWdlTQogewogICAgIGlmIChtaW1lVHlwZS5pc0VtcHR5KCkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICBpZiAoIXN1cHBvcnRlZEltYWdlTUlNRVR5cGVzKQotICAgICAgICBp
bml0aWFsaXplU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXMoKTsKLSAgICByZXR1cm4gc3VwcG9ydGVk
SW1hZ2VNSU1FVHlwZXMtPmNvbnRhaW5zKGdldE5vcm1hbGl6ZWRNSU1FVHlwZShtaW1lVHlwZSkp
OworICAgIHJldHVybiBzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlcygpLmNvbnRhaW5zKGdldE5vcm1h
bGl6ZWRNSU1FVHlwZShtaW1lVHlwZSkpIHx8IHN1cHBvcnRlZEFkZGl0aW9uYWxJbWFnZU1JTUVU
eXBlcygpLmNvbnRhaW5zKGdldE5vcm1hbGl6ZWRNSU1FVHlwZShtaW1lVHlwZSkpOwogfQogCiBi
b29sIE1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkSW1hZ2VWaWRlb09yU1ZHTUlNRVR5cGUo
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKQEAgLTQ2MSwyNCArNDc2LDEzIEBAIGJvb2wgTUlNRVR5
cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRJbWFnZVYKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJv
b2wgTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRJbWFnZVJlc291cmNlTUlNRVR5cGUoY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSkKLXsKLSAgICBpZiAobWltZVR5cGUuaXNFbXB0eSgpKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFzdXBwb3J0ZWRJbWFnZVJlc291cmNlTUlNRVR5
cGVzKQotICAgICAgICBpbml0aWFsaXplU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXMoKTsKLSAgICBy
ZXR1cm4gc3VwcG9ydGVkSW1hZ2VSZXNvdXJjZU1JTUVUeXBlcy0+Y29udGFpbnMoZ2V0Tm9ybWFs
aXplZE1JTUVUeXBlKG1pbWVUeXBlKSk7Ci19Ci0KIGJvb2wgTUlNRVR5cGVSZWdpc3RyeTo6aXNT
dXBwb3J0ZWRJbWFnZU1JTUVUeXBlRm9yRW5jb2RpbmcoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkK
IHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCiAgICAgaWYgKG1pbWVUeXBlLmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghc3VwcG9ydGVkSW1hZ2VNSU1F
VHlwZXNGb3JFbmNvZGluZykKLSAgICAgICAgaW5pdGlhbGl6ZVN1cHBvcnRlZEltYWdlTUlNRVR5
cGVzRm9yRW5jb2RpbmcoKTsKLSAgICByZXR1cm4gc3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXNGb3JF
bmNvZGluZy0+Y29udGFpbnMobWltZVR5cGUpOworICAgIHJldHVybiBzdXBwb3J0ZWRJbWFnZU1J
TUVUeXBlc0ZvckVuY29kaW5nKCkuY29udGFpbnMobWltZVR5cGUpOwogfQogCiBib29sIE1JTUVU
eXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkSmF2YVNjcmlwdE1JTUVUeXBlKGNvbnN0IFN0cmluZyYg
bWltZVR5cGUpCkBAIC00OTQsOSArNDk4LDcgQEAgYm9vbCBNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1
cHBvcnRlZEphdmFTYwogICAgICAgICByZXR1cm4gaXNTdXBwb3J0ZWQ7CiAgICAgfQogCi0gICAg
aWYgKCFzdXBwb3J0ZWRKYXZhU2NyaXB0TUlNRVR5cGVzKQotICAgICAgICBpbml0aWFsaXplU3Vw
cG9ydGVkTm9uSW1hZ2VNaW1lVHlwZXMoKTsKLSAgICByZXR1cm4gc3VwcG9ydGVkSmF2YVNjcmlw
dE1JTUVUeXBlcy0+Y29udGFpbnMobWltZVR5cGUpOworICAgIHJldHVybiBzdXBwb3J0ZWRKYXZh
U2NyaXB0TUlNRVR5cGVzKCkuY29udGFpbnMobWltZVR5cGUpOwogfQogCiBib29sIE1JTUVUeXBl
UmVnaXN0cnk6OmlzU3VwcG9ydGVkU3R5bGVTaGVldE1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUpCkBAIC01MzksMTggKzU0MSwxNCBAQCBib29sIE1JTUVUeXBlUmVnaXN0cnk6OmlzU3Vw
cG9ydGVkTm9uSW1hCiB7CiAgICAgaWYgKG1pbWVUeXBlLmlzRW1wdHkoKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIGlmICghc3VwcG9ydGVkTm9uSW1hZ2VNSU1FVHlwZXMpCi0gICAgICAg
IGluaXRpYWxpemVTdXBwb3J0ZWROb25JbWFnZU1pbWVUeXBlcygpOwotICAgIHJldHVybiBzdXBw
b3J0ZWROb25JbWFnZU1JTUVUeXBlcy0+Y29udGFpbnMobWltZVR5cGUpOworICAgIHJldHVybiBz
dXBwb3J0ZWROb25JbWFnZU1JTUVUeXBlcygpLmNvbnRhaW5zKG1pbWVUeXBlKTsKIH0KIAogYm9v
bCBNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZE1lZGlhTUlNRVR5cGUoY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSkKIHsKICAgICBpZiAobWltZVR5cGUuaXNFbXB0eSgpKQogICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgaWYgKCFzdXBwb3J0ZWRNZWRpYU1JTUVUeXBlcykKLSAgICAgICAgaW5p
dGlhbGl6ZVN1cHBvcnRlZE1lZGlhTUlNRVR5cGVzKCk7Ci0gICAgcmV0dXJuIHN1cHBvcnRlZE1l
ZGlhTUlNRVR5cGVzLT5jb250YWlucyhtaW1lVHlwZSk7CisgICAgcmV0dXJuIHN1cHBvcnRlZE1l
ZGlhTUlNRVR5cGVzKCkuY29udGFpbnMobWltZVR5cGUpOwogfQogCiBib29sIE1JTUVUeXBlUmVn
aXN0cnk6OmlzU3VwcG9ydGVkVGV4dFRyYWNrTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSkKQEAgLTU2Miw5ICs1NjAsNyBAQCBib29sIE1JTUVUeXBlUmVnaXN0cnk6OmlzVW5zdXBwb3J0
ZWRUZXh0CiB7CiAgICAgaWYgKG1pbWVUeXBlLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIGlmICghdW5zdXBwb3J0ZWRUZXh0TUlNRVR5cGVzKQotICAgICAgICBpbml0aWFs
aXplVW5zdXBwb3J0ZWRUZXh0TUlNRVR5cGVzKCk7Ci0gICAgcmV0dXJuIHVuc3VwcG9ydGVkVGV4
dE1JTUVUeXBlcy0+Y29udGFpbnMobWltZVR5cGUpOworICAgIHJldHVybiB1bnN1cHBvcnRlZFRl
eHRNSU1FVHlwZXMoKS5jb250YWlucyhtaW1lVHlwZSk7CiB9CiAKIGJvb2wgTUlNRVR5cGVSZWdp
c3RyeTo6aXNUZXh0TUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKQEAgLTYyMiw5ICs2
MTgsNyBAQCBib29sIE1JTUVUeXBlUmVnaXN0cnk6OmlzUERGTUlNRVR5cGUoY29uCiB7CiAgICAg
aWYgKG1pbWVUeXBlLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICgh
cGRmTUlNRVR5cGVzKQotICAgICAgICBpbml0aWFsaXplUERGTUlNRVR5cGVzKCk7Ci0gICAgcmV0
dXJuIHBkZk1JTUVUeXBlcy0+Y29udGFpbnMobWltZVR5cGUpOworICAgIHJldHVybiBwZGZNSU1F
VHlwZXMoKS5jb250YWlucyhtaW1lVHlwZSk7CiB9CiAKIGJvb2wgTUlNRVR5cGVSZWdpc3RyeTo6
aXNQb3N0U2NyaXB0TUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKQEAgLTY1Myw0NSAr
NjQ3LDMyIEBAIGJvb2wgTUlNRVR5cGVSZWdpc3RyeTo6Y2FuU2hvd01JTUVUeXBlKGMKIAogY29u
c3QgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIE1JTUVUeXBlUmVn
aXN0cnk6OmdldFN1cHBvcnRlZEltYWdlTUlNRVR5cGVzKCkKIHsKLSAgICBpZiAoIXN1cHBvcnRl
ZEltYWdlTUlNRVR5cGVzKQotICAgICAgICBpbml0aWFsaXplU3VwcG9ydGVkSW1hZ2VNSU1FVHlw
ZXMoKTsKLSAgICByZXR1cm4gKnN1cHBvcnRlZEltYWdlTUlNRVR5cGVzOworICAgIHJldHVybiBz
dXBwb3J0ZWRJbWFnZU1JTUVUeXBlcygpOwogfQogCiBjb25zdCBIYXNoU2V0PFN0cmluZywgQVND
SUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgTUlNRVR5cGVSZWdpc3RyeTo6Z2V0U3VwcG9ydGVkSW1h
Z2VSZXNvdXJjZU1JTUVUeXBlcygpCiB7Ci0gICAgaWYgKCFzdXBwb3J0ZWRJbWFnZVJlc291cmNl
TUlNRVR5cGVzKQotICAgICAgICBpbml0aWFsaXplU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXMoKTsK
LSAgICByZXR1cm4gKnN1cHBvcnRlZEltYWdlUmVzb3VyY2VNSU1FVHlwZXM7CisgICAgcmV0dXJu
IHN1cHBvcnRlZEltYWdlTUlNRVR5cGVzKCk7CiB9CiAKIEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNh
c2VJbnNlbnNpdGl2ZUhhc2g+JiBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRTdXBwb3J0ZWROb25JbWFn
ZU1JTUVUeXBlcygpCiB7Ci0gICAgaWYgKCFzdXBwb3J0ZWROb25JbWFnZU1JTUVUeXBlcykKLSAg
ICAgICAgaW5pdGlhbGl6ZVN1cHBvcnRlZE5vbkltYWdlTWltZVR5cGVzKCk7Ci0gICAgcmV0dXJu
ICpzdXBwb3J0ZWROb25JbWFnZU1JTUVUeXBlczsKKyAgICByZXR1cm4gc3VwcG9ydGVkTm9uSW1h
Z2VNSU1FVHlwZXMoKTsKIH0KIAogY29uc3QgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vu
c2l0aXZlSGFzaD4mIE1JTUVUeXBlUmVnaXN0cnk6OmdldFN1cHBvcnRlZE1lZGlhTUlNRVR5cGVz
KCkKIHsKLSAgICBpZiAoIXN1cHBvcnRlZE1lZGlhTUlNRVR5cGVzKQotICAgICAgICBpbml0aWFs
aXplU3VwcG9ydGVkTWVkaWFNSU1FVHlwZXMoKTsKLSAgICByZXR1cm4gKnN1cHBvcnRlZE1lZGlh
TUlNRVR5cGVzOworICAgIHJldHVybiBzdXBwb3J0ZWRNZWRpYU1JTUVUeXBlcygpOwogfQogCi0K
IGNvbnN0IEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiBNSU1FVHlw
ZVJlZ2lzdHJ5OjpnZXRQREZNSU1FVHlwZXMoKQogewotICAgIGlmICghcGRmTUlNRVR5cGVzKQot
ICAgICAgICBpbml0aWFsaXplUERGTUlNRVR5cGVzKCk7Ci0gICAgcmV0dXJuICpwZGZNSU1FVHlw
ZXM7CisgICAgcmV0dXJuIHBkZk1JTUVUeXBlcygpOwogfQogCiBjb25zdCBIYXNoU2V0PFN0cmlu
ZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgTUlNRVR5cGVSZWdpc3RyeTo6Z2V0VW5zdXBw
b3J0ZWRUZXh0TUlNRVR5cGVzKCkKIHsKLSAgICBpZiAoIXVuc3VwcG9ydGVkVGV4dE1JTUVUeXBl
cykKLSAgICAgICAgaW5pdGlhbGl6ZVVuc3VwcG9ydGVkVGV4dE1JTUVUeXBlcygpOwotICAgIHJl
dHVybiAqdW5zdXBwb3J0ZWRUZXh0TUlNRVR5cGVzOworICAgIHJldHVybiB1bnN1cHBvcnRlZFRl
eHRNSU1FVHlwZXMoKTsKIH0KIAogY29uc3QgU3RyaW5nJiBkZWZhdWx0TUlNRVR5cGUoKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuaAkocmV2aXNpb24g
MjM3MzA4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5oCSh3
b3JraW5nIGNvcHkpCkBAIC01MCwxMCArNTAsNiBAQCBwdWJsaWM6CiAgICAgLy8gQ2hlY2sgdG8g
c2VlIGlmIGEgTUlNRSB0eXBlIGlzIHN1aXRhYmxlIGZvciBiZWluZyBsb2FkZWQgYXMgYW4gaW1h
Z2UsIGluY2x1ZGluZyBTVkcgYW5kIFZpZGVvICh3aGVyZSBzdXBwb3J0ZWQpLgogICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBib29sIGlzU3VwcG9ydGVkSW1hZ2VWaWRlb09yU1ZHTUlNRVR5cGUo
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CiAKLSAgICAvLyBDaGVjayB0byBzZWUgaWYgYSBNSU1F
IHR5cGUgaXMgc3VpdGFibGUgZm9yIGJlaW5nIGxvYWRlZCBhcyBhbiBpbWFnZQotICAgIC8vIGRv
Y3VtZW50IGluIGEgZnJhbWUuCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgaXNTdXBw
b3J0ZWRJbWFnZVJlc291cmNlTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7Ci0KICAg
ICAvLyBDaGVjayB0byBzZWUgaWYgYSBNSU1FIHR5cGUgaXMgc3VpdGFibGUgZm9yIGJlaW5nIGVu
Y29kZWQuCiAgICAgc3RhdGljIGJvb2wgaXNTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlRm9yRW5jb2Rp
bmcoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAJKHJldmlzaW9uIDIzNzMwOCkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODIsNyAr
ODIsNyBAQCBSZWZQdHI8SW1hZ2U+IEltYWdlOjpjcmVhdGUoSW1hZ2VPYnNlcnZlCiAKIGJvb2wg
SW1hZ2U6OnN1cHBvcnRzVHlwZShjb25zdCBTdHJpbmcmIHR5cGUpCiB7Ci0gICAgcmV0dXJuIE1J
TUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkSW1hZ2VSZXNvdXJjZU1JTUVUeXBlKHR5cGUpOwor
ICAgIHJldHVybiBNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZEltYWdlTUlNRVR5cGUodHlw
ZSk7CiB9IAogCiBib29sIEltYWdlOjppc1BERlJlc291cmNlKGNvbnN0IFN0cmluZyYgbWltZVR5
cGUsIGNvbnN0IFVSTCYgdXJsKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcAkocmV2aXNpb24gMjM3MzA4KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xOTksNyArMTk5LDcgQEAgRW5jb2RlZERhdGFTdGF0dXMgSW1h
Z2VEZWNvZGVyQ0c6OmVuY29kZQogICAgICAgICByZXR1cm4gRW5jb2RlZERhdGFTdGF0dXM6OkVy
cm9yOwogCiAgICAgY2FzZSBrQ0dJbWFnZVN0YXR1c0luY29tcGxldGU6IHsKLSAgICAgICAgaWYg
KCFpc0FsbG93ZWRJbWFnZVVUSSh1dGkpKQorICAgICAgICBpZiAoIWlzU3VwcG9ydEltYWdlU291
cmNlVHlwZSh1dGkpKQogICAgICAgICAgICAgcmV0dXJuIEVuY29kZWREYXRhU3RhdHVzOjpFcnJv
cjsKIAogICAgICAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBpbWFnZTBQcm9wZXJ0aWVz
ID0gYWRvcHRDRihDR0ltYWdlU291cmNlQ29weVByb3BlcnRpZXNBdEluZGV4KG1fbmF0aXZlRGVj
b2Rlci5nZXQoKSwgMCwgaW1hZ2VTb3VyY2VPcHRpb25zKCkuZ2V0KCkpKTsKQEAgLTIxMyw3ICsy
MTMsNyBAQCBFbmNvZGVkRGF0YVN0YXR1cyBJbWFnZURlY29kZXJDRzo6ZW5jb2RlCiAgICAgfQog
CiAgICAgY2FzZSBrQ0dJbWFnZVN0YXR1c0NvbXBsZXRlOgotICAgICAgICBpZiAoIWlzQWxsb3dl
ZEltYWdlVVRJKHV0aSkpCisgICAgICAgIGlmICghaXNTdXBwb3J0SW1hZ2VTb3VyY2VUeXBlKHV0
aSkpCiAgICAgICAgICAgICByZXR1cm4gRW5jb2RlZERhdGFTdGF0dXM6OkVycm9yOwogCiAgICAg
ICAgIHJldHVybiBFbmNvZGVkRGF0YVN0YXR1czo6Q29tcGxldGU7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9VVElSZWdpc3RyeS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvVVRJUmVnaXN0cnkuY3BwCShyZXZp
c2lvbiAyMzczMDgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9VVElS
ZWdpc3RyeS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDEwICszOCwxMCBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLUhhc2hTZXQ8U3RyaW5nPiYgYWxsb3dlZEltYWdlVVRJcygpCitjb25z
dCBIYXNoU2V0PFN0cmluZz4mIHN1cHBvcnRlZERlZmF1bHRJbWFnZVNvdXJjZVR5cGVzKCkKIHsK
ICAgICAvLyBDRyBhdCBsZWFzdCBzdXBwb3J0cyB0aGUgZm9sbG93aW5nIHN0YW5kYXJkIGltYWdl
IHR5cGVzOgotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0PFN0cmluZz4+IHNfYWxs
b3dlZEltYWdlVVRJcyA9IHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxTdHJpbmc+IHsKKyAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxTdHJpbmc+PiBzdXBwb3J0ZWREZWZhdWx0SW1hZ2VT
b3VyY2VUeXBlcyA9IHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxTdHJpbmc+IHsKICAgICAgICAgImNv
bS5jb21wdXNlcnZlLmdpZiIsCiAgICAgICAgICJjb20ubWljcm9zb2Z0LmJtcCIsCiAgICAgICAg
ICJjb20ubWljcm9zb2Z0LmN1ciIsCkBAIC01MiwyNyArNTIsNDYgQEAgSGFzaFNldDxTdHJpbmc+
JiBhbGxvd2VkSW1hZ2VVVElzKCkKICAgICAgICAgInB1YmxpYy5wbmciLAogICAgICAgICAicHVi
bGljLnRpZmYiLAogICAgIH07Ci0KICNpZm5kZWYgTkRFQlVHCi0gICAgLy8gQnV0IG1ha2Ugc3Vy
ZSB0aGF0IGFsbCBvZiB0aGVtIGFyZSByZWFsbHkgc3VwcG9ydGVkLgotICAgIHN0YXRpYyBib29s
IGNoZWNrZWQgPSBmYWxzZTsKLSAgICBpZiAoIWNoZWNrZWQpIHsKLSAgICAgICAgUmV0YWluUHRy
PENGQXJyYXlSZWY+IHN5c3RlbUltYWdlVVRJcyA9IGFkb3B0Q0YoQ0dJbWFnZVNvdXJjZUNvcHlU
eXBlSWRlbnRpZmllcnMoKSk7Ci0gICAgICAgIENGSW5kZXggY291bnQgPSBDRkFycmF5R2V0Q291
bnQoc3lzdGVtSW1hZ2VVVElzLmdldCgpKTsKLSAgICAgICAgZm9yIChhdXRvJiBpbWFnZVVUSSA6
IHNfYWxsb3dlZEltYWdlVVRJcy5nZXQoKSkgewotICAgICAgICAgICAgUmV0YWluUHRyPENGU3Ry
aW5nUmVmPiBzdHJpbmcgPSBpbWFnZVVUSS5jcmVhdGVDRlN0cmluZygpOwotICAgICAgICAgICAg
QVNTRVJUKENGQXJyYXlDb250YWluc1ZhbHVlKHN5c3RlbUltYWdlVVRJcy5nZXQoKSwgQ0ZSYW5n
ZU1ha2UoMCwgY291bnQpLCBzdHJpbmcuZ2V0KCkpKTsKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2Zs
YWcgb25jZUZsYWc7CisgICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsKKyAgICAgICAg
Ly8gQnV0IG1ha2Ugc3VyZSB0aGF0IGFsbCBvZiB0aGVtIGFyZSByZWFsbHkgc3VwcG9ydGVkLgor
ICAgICAgICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gc3lzdGVtSW1hZ2VTb3VyY2VUeXBlcyA9IGFk
b3B0Q0YoQ0dJbWFnZVNvdXJjZUNvcHlUeXBlSWRlbnRpZmllcnMoKSk7CisgICAgICAgIENGSW5k
ZXggY291bnQgPSBDRkFycmF5R2V0Q291bnQoc3lzdGVtSW1hZ2VTb3VyY2VUeXBlcy5nZXQoKSk7
CisgICAgICAgIGZvciAoYXV0byYgaW1hZ2VTb3VyY2VUeXBlIDogc3VwcG9ydGVkRGVmYXVsdElt
YWdlU291cmNlVHlwZXMuZ2V0KCkpIHsKKyAgICAgICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1Jl
Zj4gc3RyaW5nID0gaW1hZ2VTb3VyY2VUeXBlLmNyZWF0ZUNGU3RyaW5nKCk7CisgICAgICAgICAg
ICBBU1NFUlQoQ0ZBcnJheUNvbnRhaW5zVmFsdWUoc3lzdGVtSW1hZ2VTb3VyY2VUeXBlcy5nZXQo
KSwgQ0ZSYW5nZU1ha2UoMCwgY291bnQpLCBzdHJpbmcuZ2V0KCkpKTsKICAgICAgICAgfQotICAg
ICAgICBjaGVja2VkID0gdHJ1ZTsKLSAgICB9CisgICAgfSk7CiAjZW5kaWYKKyAgICByZXR1cm4g
c3VwcG9ydGVkRGVmYXVsdEltYWdlU291cmNlVHlwZXM7Cit9CisKK3N0YXRpYyBIYXNoU2V0PFN0
cmluZz4mIGludGVybmFsU3VwcG9ydGVkQWRkaXRpb25hbEltYWdlU291cmNlVHlwZXMoKQorewor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0PFN0cmluZz4+IHN1cHBvcnRlZEFkZGl0
aW9uYWxJbWFnZVNvdXJjZVR5cGVzOworICAgIHJldHVybiBzdXBwb3J0ZWRBZGRpdGlvbmFsSW1h
Z2VTb3VyY2VUeXBlczsKK30KKworY29uc3QgSGFzaFNldDxTdHJpbmc+JiBzdXBwb3J0ZWRBZGRp
dGlvbmFsSW1hZ2VTb3VyY2VUeXBlcygpCit7CisgICAgcmV0dXJuIGludGVybmFsU3VwcG9ydGVk
QWRkaXRpb25hbEltYWdlU291cmNlVHlwZXMoKTsKK30KKwordm9pZCBzZXRTdXBwb3J0ZWRBZGRp
dGlvbmFsSW1hZ2VTb3VyY2VUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgaW1hZ2VTb3VyY2VU
eXBlcykKK3sKKyAgICAvLyBXZSBhcmUgc3VwcG9lZCB0byBzZXQgdGhlIHN1cHBvcnRlZEFkZGl0
aW9uYWxJbWFnZVNvdXJjZVR5cGVzIG9ubHkgb25jZSBldmVuCisgICAgLy8gaWYgbXVsdGlwbGUg
V2ViUGFnZXMgYXJlIGNyZWF0ZWQuCisgICAgaWYgKCFpbnRlcm5hbFN1cHBvcnRlZEFkZGl0aW9u
YWxJbWFnZVNvdXJjZVR5cGVzKCkuaXNFbXB0eSgpIHx8IGltYWdlU291cmNlVHlwZXMuaXNFbXB0
eSgpKQorICAgICAgICByZXR1cm47CiAKLSAgICByZXR1cm4gc19hbGxvd2VkSW1hZ2VVVElzLmdl
dCgpOworICAgIGZvciAoY29uc3QgYXV0byYgaW1hZ2VTb3VyY2VUeXBlIDogaW1hZ2VTb3VyY2VU
eXBlcykKKyAgICAgICAgaW50ZXJuYWxTdXBwb3J0ZWRBZGRpdGlvbmFsSW1hZ2VTb3VyY2VUeXBl
cygpLmFkZChpbWFnZVNvdXJjZVR5cGUpOwogfQogCi1ib29sIGlzQWxsb3dlZEltYWdlVVRJKGNv
bnN0IFN0cmluZyYgaW1hZ2VVVEkpCitib29sIGlzU3VwcG9ydEltYWdlU291cmNlVHlwZShjb25z
dCBTdHJpbmcmIGltYWdlU291cmNlVHlwZSkKIHsKLSAgICByZXR1cm4gIWltYWdlVVRJLmlzRW1w
dHkoKSAmJiBhbGxvd2VkSW1hZ2VVVElzKCkuY29udGFpbnMoaW1hZ2VVVEkpOworICAgIHJldHVy
biAhaW1hZ2VTb3VyY2VUeXBlLmlzRW1wdHkoKSAmJiAoc3VwcG9ydGVkRGVmYXVsdEltYWdlU291
cmNlVHlwZXMoKS5jb250YWlucyhpbWFnZVNvdXJjZVR5cGUpIHx8IHN1cHBvcnRlZEFkZGl0aW9u
YWxJbWFnZVNvdXJjZVR5cGVzKCkuY29udGFpbnMoaW1hZ2VTb3VyY2VUeXBlKSk7CiB9CiAKIH0K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1VUSVJlZ2lzdHJ5LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvVVRJUmVn
aXN0cnkuaAkocmV2aXNpb24gMjM3MzA4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvVVRJUmVnaXN0cnkuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsOSBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUhhc2hTZXQ8U3RyaW5nPiYgYWxsb3dlZEltYWdlVVRJ
cygpOwotYm9vbCBpc0FsbG93ZWRJbWFnZVVUSShjb25zdCBTdHJpbmcmKTsKK2NvbnN0IEhhc2hT
ZXQ8U3RyaW5nPiYgc3VwcG9ydGVkRGVmYXVsdEltYWdlU291cmNlVHlwZXMoKTsKK2NvbnN0IEhh
c2hTZXQ8U3RyaW5nPiYgc3VwcG9ydGVkQWRkaXRpb25hbEltYWdlU291cmNlVHlwZXMoKTsKK1dF
QkNPUkVfRVhQT1JUIHZvaWQgc2V0U3VwcG9ydGVkQWRkaXRpb25hbEltYWdlU291cmNlVHlwZXMo
Y29uc3QgVmVjdG9yPFN0cmluZz4mKTsKK2Jvb2wgaXNTdXBwb3J0SW1hZ2VTb3VyY2VUeXBlKGNv
bnN0IFN0cmluZyYpOwogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFz
dGVib2FyZE1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
UGFzdGVib2FyZE1hYy5tbQkocmV2aXNpb24gMjM3MzA4KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTI1NSw3ICsyNTUs
NyBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRJCiAgICAgICAgIHJl
dHVybjsKIAogICAgIC8vIEZJWE1FOiBXaHkgY2FuIHdlIGFzc2VydCB0aGlzPyBJdCBkb2Vzbid0
IHNlZW0gbGlrZSBpdCdzIGd1YXJhbnRlZWQuCi0gICAgQVNTRVJUKE1JTUVUeXBlUmVnaXN0cnk6
OmlzU3VwcG9ydGVkSW1hZ2VSZXNvdXJjZU1JTUVUeXBlKHBhc3RlYm9hcmRJbWFnZS5yZXNvdXJj
ZU1JTUVUeXBlKSk7CisgICAgQVNTRVJUKE1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkSW1h
Z2VNSU1FVHlwZShwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VNSU1FVHlwZSkpOwogCiAgICAgYXV0
byB0eXBlcyA9IHdyaXRhYmxlVHlwZXNGb3JJbWFnZSgpOwogICAgIGlmIChwYXN0ZWJvYXJkSW1h
Z2UuZGF0YUluV2ViQXJjaGl2ZUZvcm1hdCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzczMDgp
CisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUx
IEBACisyMDE4LTEwLTIyICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5j
b20+CisKKyAgICAgICAgQWRkIGFuIFNQSSB0byBhbGxvdyBXZWJWaWV3IGNsaWVudHMgdG8gYWRk
IGFkZGl0aW9uYWwgc3VwcG9ydGVkIGltYWdlIGZvcm1hdHMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDQ1NAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogUGxhdGZvcm0vbWFjL1N0cmluZ1V0aWxpdGll
cy5oOgorICAgICAgICAqIFBsYXRmb3JtL21hYy9TdHJpbmdVdGlsaXRpZXMubW06CisgICAgICAg
IChXZWJLaXQ6OndlYkNvcmVTdHJpbmdWZWN0b3JGcm9tTlNTdHJpbmdBcnJheSk6CisgICAgICAg
IEEgaGVscGVyIGZ1bmN0aW9uIHdoaWNoIGNvbnZlcnRzIGFuIE5TQXJyYXkgb2YgTlNTdHJpbmdz
IHRvIGEgVmVjdG9yIG9mCisgICAgICAgIFdURlN0cmluZy4KKworICAgICAgICAqIFNoYXJlZC9X
ZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZUNyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVycy5oOgorICAgICAgICBIYW5kbGUgZW5jb2RpbmcgYW5kIGRlY29kaW5n
IHRoZSBBZGRpdGlvbmFsQWxsb3dlZEltYWdlRm9ybWF0cyB3aGljaCB3aWxsCisgICAgICAgIGFs
bG93IHRyYW5zZmVycmluZyBpdCBmcm9tIHRoZSBVSSBwcm9jZXNzIHRvIHRoZSB3ZWIgcHJvY2Vz
cy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uaDoKKyAg
ICAgICAgKEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246OnN1cHBvcnRlZEFkZGl0aW9uYWxJbWFnZVNv
dXJjZVR5cGVzIGNvbnN0KToKKyAgICAgICAgKEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246OnNldFN1
cHBvcnRlZEFkZGl0aW9uYWxJbWFnZVNvdXJjZVR5cGVzKToKKyAgICAgICAgU3RvcmUgdGhlIEFk
ZGl0aW9uYWxBbGxvd2VkSW1hZ2VGb3JtYXRzIGluIHRoZSBBUElQYWdlQ29uZmlndXJhdGlvbgor
ICAgICAgICB3aGljaCBpcyB1c2VkIHdoZW4gY3JlYXRpbmcgdGhlIFdlYlBhZ2VQcm94eSBpbiB0
aGUgVUlQb3JjZXNzLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcu
bW06CisgICAgICAgICgtW1dLV2ViVmlldyBfaW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uOl0p
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5t
bToKKyAgICAgICAgKC1bV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBjb3B5V2l0aFpvbmU6XSk6Cisg
ICAgICAgICgtW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX3N1cHBvcnRlZEFkZGl0aW9uYWxJbWFn
ZVNvdXJjZVR5cGVzXSk6CisgICAgICAgICgtW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX3NldFN1
cHBvcnRlZEFkZGl0aW9uYWxJbWFnZVNvdXJjZVR5cGVzOl0pOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvblByaXZhdGUuaDoKKyAgICAgICAgU2V0
dGVyL0dldHRlciBmb3IgdGhlIGFkZGl0aW9uYWxBbGxvd2VkSW1hZ2VGb3JtYXRzLgorCisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6Y3JlYXRpb25QYXJhbWV0ZXJzKToKKyAgICAgICAgQ29weSB0aGUgYWRkaXRpb25h
bEFsbG93ZWRJbWFnZUZvcm1hdHMgZnJvbSBBUElQYWdlQ29uZmlndXJhdGlvbiB0byAKKyAgICAg
ICAgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaDoKKyAgICAgICAgRGVsZXRlIHVuaW1wbGVtZW50ZWQgZnVuY3Rpb24uCisKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OldlYlBhZ2UpOgorICAgICAgICBDb3B5IHRoZSBhZGRpdGlvbmFsQWxsb3dlZElt
YWdlRm9ybWF0cyBmcm9tIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgdG8KKyAgICAgICAgV2Vi
Q29yZS4KKwogMjAxOC0xMC0xOSAgU3RlcGhhbiBTemFibyAgPHN0ZXBoYW4uc3phYm9Ac29ueS5j
b20+CiAKICAgICAgICAgW1dpbkNhaXJvXSBTZWFyY2ggdGVybXMgYXJlIG5vdCBzYXZlZCBmb3Ig
PGlucHV0IHR5cGU9InNlYXJjaCI+CkluZGV4OiBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL21hYy9T
dHJpbmdVdGlsaXRpZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL21h
Yy9TdHJpbmdVdGlsaXRpZXMuaAkocmV2aXNpb24gMjM3MzA4KQorKysgU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9tYWMvU3RyaW5nVXRpbGl0aWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3
LDggQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBOU1N0cmluZyAqbnNTdHJpbmdGcm9tV2ViQ29yZVN0
cmluZyhjb25zdCBTdHJpbmcmKTsKIE5TU3RyaW5nICpmb3JtYXR0ZWRQaG9uZU51bWJlclN0cmlu
ZyhOU1N0cmluZyAqb3JpZ2luYWxQaG9uZU51bWJlcik7CiAKK1ZlY3RvcjxTdHJpbmc+IHdlYkNv
cmVTdHJpbmdWZWN0b3JGcm9tTlNTdHJpbmdBcnJheShOU0FycmF5PE5TU3RyaW5nICo+ICopOwor
CiAjZW5kaWYgLy8gZGVmaW5lZChfX09CSkNfXykKIAogfQpJbmRleDogU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9tYWMvU3RyaW5nVXRpbGl0aWVzLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vbWFjL1N0cmluZ1V0aWxpdGllcy5tbQkocmV2aXNpb24gMjM3MzA4KQorKysg
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9tYWMvU3RyaW5nVXRpbGl0aWVzLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC04Miw0ICs4MiwxNSBAQCBOU1N0cmluZyAqZm9ybWF0dGVkUGhvbmVOdW1iZXJTdHJp
bmcoTlNTCiAKICNlbmRpZiAvLyBFTkFCTEUoVEVMRVBIT05FX05VTUJFUl9ERVRFQ1RJT04pICYm
IFBMQVRGT1JNKE1BQykKIAorVmVjdG9yPFN0cmluZz4gd2ViQ29yZVN0cmluZ1ZlY3RvckZyb21O
U1N0cmluZ0FycmF5KE5TQXJyYXk8TlNTdHJpbmcgKj4gKm5zU3RyaW5nQXJyYXkpCit7CisgICAg
VmVjdG9yPFN0cmluZz4gc3RyaW5nVmVjdG9yOworICAgIHN0cmluZ1ZlY3Rvci5yZXNlcnZlSW5p
dGlhbENhcGFjaXR5KFtuc1N0cmluZ0FycmF5IGNvdW50XSk7CisKKyAgICBmb3IgKE5TU3RyaW5n
ICpuc1N0cmluZyBpbiBuc1N0cmluZ0FycmF5KQorICAgICAgICBzdHJpbmdWZWN0b3IudW5jaGVj
a2VkQXBwZW5kKG5zU3RyaW5nKTsKKworICAgIHJldHVybiBzdHJpbmdWZWN0b3I7Cit9CisKIH0K
SW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnMuY3BwCShyZXZpc2lvbiAyMzczMDgpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQ
YWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTYsNiArOTYsNyBA
QCB2b2lkIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZShJCiAjZW5kaWYKICNpZiBQ
TEFURk9STShDT0NPQSkKICAgICBlbmNvZGVyIDw8IHNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZDsK
KyAgICBlbmNvZGVyIDw8IHN1cHBvcnRlZEFkZGl0aW9uYWxJbWFnZVNvdXJjZVR5cGVzOwogI2Vu
ZGlmCiAgICAgZW5jb2RlciA8PCBhcHBsZU1haWxQYWdpbmF0aW9uUXVpcmtFbmFibGVkOwogICAg
IGVuY29kZXIgPDwgYXBwbGVNYWlsTGluZXNDbGFtcEVuYWJsZWQ7CkBAIC0yNjksNiArMjcwLDgg
QEAgc3RkOjpvcHRpb25hbDxXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzPgogI2lmIFBMQVRGT1JN
KENPQ09BKQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5zbWFydEluc2VydERl
bGV0ZUVuYWJsZWQpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIGlmICghZGVj
b2Rlci5kZWNvZGUocGFyYW1ldGVycy5zdXBwb3J0ZWRBZGRpdGlvbmFsSW1hZ2VTb3VyY2VUeXBl
cykpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAjZW5kaWYKIAogICAgIGlmICghZGVj
b2Rlci5kZWNvZGUocGFyYW1ldGVycy5hcHBsZU1haWxQYWdpbmF0aW9uUXVpcmtFbmFibGVkKSkK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0
ZXJzLmgJKHJldmlzaW9uIDIzNzMwOCkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VD
cmVhdGlvblBhcmFtZXRlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtMTUzLDYgKzE1Myw3IEBAIHN0
cnVjdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIHsKICNlbmRpZgogI2lmIFBMQVRGT1JNKENP
Q09BKQogICAgIGJvb2wgc21hcnRJbnNlcnREZWxldGVFbmFibGVkOworICAgIFZlY3RvcjxTdHJp
bmc+IHN1cHBvcnRlZEFkZGl0aW9uYWxJbWFnZVNvdXJjZVR5cGVzOwogI2VuZGlmCiAgICAgYm9v
bCBhcHBsZU1haWxQYWdpbmF0aW9uUXVpcmtFbmFibGVkOwogICAgIGJvb2wgYXBwbGVNYWlsTGlu
ZXNDbGFtcEVuYWJsZWQ7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAJKHJldmlzaW9uIDIzNzMwOCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYzNzEsNiArNjM3MSw3IEBAIFdlYlBhZ2VD
cmVhdGlvblBhcmFtZXRlcnMgV2ViUGFnZVByb3h5OjoKIAogI2lmIFBMQVRGT1JNKENPQ09BKQog
ICAgIHBhcmFtZXRlcnMuc21hcnRJbnNlcnREZWxldGVFbmFibGVkID0gbV9pc1NtYXJ0SW5zZXJ0
RGVsZXRlRW5hYmxlZDsKKyAgICBwYXJhbWV0ZXJzLnN1cHBvcnRlZEFkZGl0aW9uYWxJbWFnZVNv
dXJjZVR5cGVzID0gbV9jb25maWd1cmF0aW9uLT5zdXBwb3J0ZWRBZGRpdGlvbmFsSW1hZ2VTb3Vy
Y2VUeXBlcygpOwogI2VuZGlmCiAgICAgcGFyYW1ldGVycy5zaG91bGRTY2FsZVZpZXdUb0ZpdERv
Y3VtZW50ID0gbV9zaG91bGRTY2FsZVZpZXdUb0ZpdERvY3VtZW50OwogICAgIHBhcmFtZXRlcnMu
dXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbiA9IHBhZ2VDbGllbnQoKS51c2VySW50ZXJmYWNl
TGF5b3V0RGlyZWN0aW9uKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaAkocmV2aXNpb24gMjM3MzA4KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTEzNTcsMTAgKzEzNTcsNiBAQCBwdWJsaWM6CiAK
ICAgICBXZWJDb3JlOjpJbnRSZWN0IHN5bmNSb290Vmlld1RvU2NyZWVuKGNvbnN0IFdlYkNvcmU6
OkludFJlY3QmIHZpZXdSZWN0KTsKIAotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIFZlY3RvcjxT
dHJpbmc+IG1lZGlhTUlNRVR5cGVzKCk7Ci0jZW5kaWYKLQogI2lmIEVOQUJMRShEQVRBTElTVF9F
TEVNRU5UKQogICAgIHZvaWQgZGlkU2VsZWN0T3B0aW9uKGNvbnN0IFN0cmluZyYpOwogICAgIHZv
aWQgZGlkQ2xvc2VTdWdnZXN0aW9ucygpOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmgJKHJldmlzaW9uIDIzNzMwOCkKKysr
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMTAsNiArMTEwLDExIEBAIHB1YmxpYzoKICAgICBjb25zdCBXVEY6OlN0
cmluZyYgb3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3koKSBjb25zdCB7IHJldHVybiBtX292
ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5OyB9CiAgICAgdm9pZCBzZXRPdmVycmlkZUNvbnRl
bnRTZWN1cml0eVBvbGljeShjb25zdCBXVEY6OlN0cmluZyYgb3ZlcnJpZGVDb250ZW50U2VjdXJp
dHlQb2xpY3kpIHsgbV9vdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeSA9IG92ZXJyaWRlQ29u
dGVudFNlY3VyaXR5UG9saWN5OyB9CiAKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBjb25zdCBX
VEY6OlZlY3RvcjxXVEY6OlN0cmluZz4mIHN1cHBvcnRlZEFkZGl0aW9uYWxJbWFnZVNvdXJjZVR5
cGVzKCkgY29uc3QgeyByZXR1cm4gbV9zdXBwb3J0ZWRBZGRpdGlvbmFsSW1hZ2VTb3VyY2VUeXBl
czsgfQorICAgIHZvaWQgc2V0U3VwcG9ydGVkQWRkaXRpb25hbEltYWdlU291cmNlVHlwZXMoV1RG
OjpWZWN0b3I8V1RGOjpTdHJpbmc+JiYgc3VwcG9ydGVkQWRkaXRpb25hbEltYWdlU291cmNlVHlw
ZXMpIHsgbV9zdXBwb3J0ZWRBZGRpdGlvbmFsSW1hZ2VTb3VyY2VUeXBlcyA9IFdURk1vdmUoc3Vw
cG9ydGVkQWRkaXRpb25hbEltYWdlU291cmNlVHlwZXMpOyB9CisjZW5kaWYKKwogI2lmIEVOQUJM
RShBUFBMSUNBVElPTl9NQU5JRkVTVCkKICAgICBBcHBsaWNhdGlvbk1hbmlmZXN0KiBhcHBsaWNh
dGlvbk1hbmlmZXN0KCkgY29uc3Q7CiAgICAgdm9pZCBzZXRBcHBsaWNhdGlvbk1hbmlmZXN0KEFw
cGxpY2F0aW9uTWFuaWZlc3QqKTsKQEAgLTE0Niw2ICsxNTEsMTAgQEAgcHJpdmF0ZToKIAogICAg
IFdURjo6U3RyaW5nIG1fb3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3k7CiAKKyNpZiBQTEFU
Rk9STShDT0NPQSkKKyAgICBXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4gbV9zdXBwb3J0ZWRBZGRp
dGlvbmFsSW1hZ2VTb3VyY2VUeXBlczsKKyNlbmRpZgorCiAjaWYgRU5BQkxFKEFQUExJQ0FUSU9O
X01BTklGRVNUKQogICAgIFJlZlB0cjxBcHBsaWNhdGlvbk1hbmlmZXN0PiBtX2FwcGxpY2F0aW9u
TWFuaWZlc3Q7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlldy5tbQkocmV2aXNpb24gMjM3MzA4KQorKysgU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtNDYsNiAr
NDYsNyBAQAogI2ltcG9ydCAiUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24uaCIKICNpbXBvcnQg
IlJlbW90ZU9iamVjdFJlZ2lzdHJ5LmgiCiAjaW1wb3J0ICJSZW1vdGVPYmplY3RSZWdpc3RyeU1l
c3NhZ2VzLmgiCisjaW1wb3J0ICJTdHJpbmdVdGlsaXRpZXMuaCIKICNpbXBvcnQgIlVJRGVsZWdh
dGUuaCIKICNpbXBvcnQgIlVzZXJNZWRpYVByb2Nlc3NNYW5hZ2VyLmgiCiAjaW1wb3J0ICJWZXJz
aW9uQ2hlY2tzLmgiCkBAIC01NjcsNiArNTY4LDggQEAgLSAodm9pZClfaW5pdGlhbGl6ZVdpdGhD
b25maWd1cmF0aW9uOihXSwogICAgICAgICBpZiAoZ3JvdXBJZGVudGlmaWVyLmxlbmd0aCkKICAg
ICAgICAgICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRQYWdlR3JvdXAoV2ViS2l0OjpXZWJQYWdl
R3JvdXA6OmNyZWF0ZShjb25maWd1cmF0aW9uLl9ncm91cElkZW50aWZpZXIpLnB0cigpKTsKICAg
ICB9CisgICAgCisgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFN1cHBvcnRlZEFkZGl0aW9uYWxJ
bWFnZVNvdXJjZVR5cGVzKFdlYktpdDo6d2ViQ29yZVN0cmluZ1ZlY3RvckZyb21OU1N0cmluZ0Fy
cmF5KFtfY29uZmlndXJhdGlvbiBfc3VwcG9ydGVkQWRkaXRpb25hbEltYWdlU291cmNlVHlwZXNd
KSk7CiAKICAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZVZhbHVlcygpLnNldChXZWJL
aXQ6OldlYlByZWZlcmVuY2VzS2V5OjpzdXBwcmVzc2VzSW5jcmVtZW50YWxSZW5kZXJpbmdLZXko
KSwgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1ZSghIVtfY29uZmlndXJhdGlvbiBz
dXBwcmVzc2VzSW5jcmVtZW50YWxSZW5kZXJpbmddKSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0
aW9uLm1tCShyZXZpc2lvbiAyMzczMDgpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbQkod29ya2luZyBjb3B5KQpAQCAtMTYxLDYg
KzE2MSw3IEBAIHN0YXRpYyBfV0tEcmFnTGlmdERlbGF5IHRvRHJhZ0xpZnREZWxheSgKICAgICBC
T09MIF9kcmF3c0JhY2tncm91bmQ7CiAKICAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IF9tZWRpYUNv
bnRlbnRUeXBlc1JlcXVpcmluZ0hhcmR3YXJlU3VwcG9ydDsKKyAgICBSZXRhaW5QdHI8TlNBcnJh
eTxOU1N0cmluZyAqPj4gX3N1cHBvcnRlZEFkZGl0aW9uYWxJbWFnZVNvdXJjZVR5cGVzOwogfQog
CiAtIChpbnN0YW5jZXR5cGUpaW5pdApAQCAtMzk0LDYgKzM5NSw3IEBAIC0gKGlkKWNvcHlXaXRo
Wm9uZTooTlNab25lICopem9uZQogICAgIGNvbmZpZ3VyYXRpb24tPl9uZWVkc1N0b3JhZ2VBY2Nl
c3NGcm9tRmlsZVVSTHNRdWlyayA9IHNlbGYtPl9uZWVkc1N0b3JhZ2VBY2Nlc3NGcm9tRmlsZVVS
THNRdWlyazsKIAogICAgIGNvbmZpZ3VyYXRpb24tPl9tZWRpYUNvbnRlbnRUeXBlc1JlcXVpcmlu
Z0hhcmR3YXJlU3VwcG9ydCA9IGFkb3B0TlMoW3NlbGYuX21lZGlhQ29udGVudFR5cGVzUmVxdWly
aW5nSGFyZHdhcmVTdXBwb3J0IGNvcHlXaXRoWm9uZTp6b25lXSk7CisgICAgY29uZmlndXJhdGlv
bi0+X3N1cHBvcnRlZEFkZGl0aW9uYWxJbWFnZVNvdXJjZVR5cGVzID0gYWRvcHROUyhbc2VsZi0+
X3N1cHBvcnRlZEFkZGl0aW9uYWxJbWFnZVNvdXJjZVR5cGVzIGNvcHlXaXRoWm9uZTp6b25lXSk7
CiAgICAgY29uZmlndXJhdGlvbi0+X2xlZ2FjeUVuY3J5cHRlZE1lZGlhQVBJRW5hYmxlZCA9IHNl
bGYtPl9sZWdhY3lFbmNyeXB0ZWRNZWRpYUFQSUVuYWJsZWQ7CiAgICAgY29uZmlndXJhdGlvbi0+
X2FsbG93TWVkaWFDb250ZW50VHlwZXNSZXF1aXJpbmdIYXJkd2FyZVN1cHBvcnRBc0ZhbGxiYWNr
ID0gc2VsZi0+X2FsbG93TWVkaWFDb250ZW50VHlwZXNSZXF1aXJpbmdIYXJkd2FyZVN1cHBvcnRB
c0ZhbGxiYWNrOwogCkBAIC05OTAsNiArOTkyLDE2IEBAIC0gKHZvaWQpX3NldE1lZGlhQ29udGVu
dFR5cGVzUmVxdWlyaW5nSGEKICAgICBfbWVkaWFDb250ZW50VHlwZXNSZXF1aXJpbmdIYXJkd2Fy
ZVN1cHBvcnQgPSBhZG9wdE5TKFttZWRpYUNvbnRlbnRUeXBlc1JlcXVpcmluZ0hhcmR3YXJlU3Vw
cG9ydCBjb3B5XSk7CiB9CiAKKy0gKE5TQXJyYXk8TlNTdHJpbmcgKj4gKilfc3VwcG9ydGVkQWRk
aXRpb25hbEltYWdlU291cmNlVHlwZXMKK3sKKyAgICByZXR1cm4gX3N1cHBvcnRlZEFkZGl0aW9u
YWxJbWFnZVNvdXJjZVR5cGVzLmdldCgpOworfQorCistICh2b2lkKV9zZXRTdXBwb3J0ZWRBZGRp
dGlvbmFsSW1hZ2VTb3VyY2VUeXBlczooTlNBcnJheTxOU1N0cmluZyAqPiAqKXN1cHBvcnRlZEFk
ZGl0aW9uYWxJbWFnZVNvdXJjZVR5cGVzCit7CisgICAgX3N1cHBvcnRlZEFkZGl0aW9uYWxJbWFn
ZVNvdXJjZVR5cGVzID0gYWRvcHROUyhbc3VwcG9ydGVkQWRkaXRpb25hbEltYWdlU291cmNlVHlw
ZXMgY29weV0pOworfQorCiAtICh2b2lkKV9zZXRMZWdhY3lFbmNyeXB0ZWRNZWRpYUFQSUVuYWJs
ZWQ6KEJPT0wpZW5hYmxlZAogewogICAgIF9sZWdhY3lFbmNyeXB0ZWRNZWRpYUFQSUVuYWJsZWQg
PSBlbmFibGVkOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmgJKHJldmlz
aW9uIDIzNzMwOCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDEsNiArMTAxLDcg
QEAgdHlwZWRlZiBOU19FTlVNKE5TVUludGVnZXIsIF9XS0RyYWdMaWZ0RAogQHByb3BlcnR5IChu
b25hdG9taWMsIHNldHRlcj1fc2V0TWVkaWFDb250ZW50VHlwZXNSZXF1aXJpbmdIYXJkd2FyZVN1
cHBvcnQ6KSBOU1N0cmluZyAqX21lZGlhQ29udGVudFR5cGVzUmVxdWlyaW5nSGFyZHdhcmVTdXBw
b3J0IFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjEzKSwgaW9zKDExLjApKTsKIEBwcm9wZXJ0
eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldExlZ2FjeUVuY3J5cHRlZE1lZGlhQVBJRW5hYmxlZDop
IEJPT0wgX2xlZ2FjeUVuY3J5cHRlZE1lZGlhQVBJRW5hYmxlZCBXS19BUElfQVZBSUxBQkxFKG1h
Y29zeCgxMC4xMyksIGlvcygxMS4wKSk7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9z
ZXRBbGxvd01lZGlhQ29udGVudFR5cGVzUmVxdWlyaW5nSGFyZHdhcmVTdXBwb3J0QXNGYWxsYmFj
azopIEJPT0wgX2FsbG93TWVkaWFDb250ZW50VHlwZXNSZXF1aXJpbmdIYXJkd2FyZVN1cHBvcnRB
c0ZhbGxiYWNrIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjEzKSwgaW9zKDExLjApKTsKK0Bw
cm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5LCBzZXR0ZXI9X3NldFN1cHBvcnRlZEFkZGl0aW9uYWxJ
bWFnZVNvdXJjZVR5cGVzOikgTlNBcnJheTxOU1N0cmluZyAqPiAqX3N1cHBvcnRlZEFkZGl0aW9u
YWxJbWFnZVNvdXJjZVR5cGVzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBp
b3MoV0tfSU9TX1RCQSkpOwogCiBAZW5kCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCShyZXZpc2lvbiAyMzczMDgpCisrKyBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQ2
LDYgKzI0Niw3IEBACiAjaW5jbHVkZSAiVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5oIgogI2luY2x1
ZGUgIldLU3RyaW5nQ0YuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0xlZ2FjeVdlYkFyY2hpdmUuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL1VUSVJlZ2lzdHJ5Lmg+CiAjaW5jbHVkZSA8d3RmL01hY2hTZW5k
UmlnaHQuaD4KICNlbmRpZgogCkBAIC01OTIsNiArNTkzLDcgQEAgV2ViUGFnZTo6V2ViUGFnZSh1
aW50NjRfdCBwYWdlSUQsIFdlYlBhZwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIG1fcGFnZS0+
c2V0dGluZ3MoKS5zZXRDb250ZW50RGlzcG9zaXRpb25BdHRhY2htZW50U2FuZGJveEVuYWJsZWQo
dHJ1ZSk7CiAgICAgc2V0U21hcnRJbnNlcnREZWxldGVFbmFibGVkKHBhcmFtZXRlcnMuc21hcnRJ
bnNlcnREZWxldGVFbmFibGVkKTsKKyAgICBXZWJDb3JlOjpzZXRTdXBwb3J0ZWRBZGRpdGlvbmFs
SW1hZ2VTb3VyY2VUeXBlcyhwYXJhbWV0ZXJzLnN1cHBvcnRlZEFkZGl0aW9uYWxJbWFnZVNvdXJj
ZVR5cGVzKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpJbmRleDogU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gMjM3MzA4KQorKysgU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIw
MTgtMTAtMjIgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KKwor
ICAgICAgICBBZGQgYW4gU1BJIHRvIGFsbG93IFdlYlZpZXcgY2xpZW50cyB0byBhZGQgYWRkaXRp
b25hbCBzdXBwb3J0ZWQgaW1hZ2UgZm9ybWF0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwNDU0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgUmVwbGFjZSBpc1N1cHBvcnRlZEltYWdlUmVzb3VyY2VNSU1F
VHlwZSgpIGJ5IGlzU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZSgpCisgICAgICAgIGJlY2F1c2UgdGhl
eSB3ZXJlIGlkZW50aWNhbC4KKworICAgICAgICAqIE1pc2MvV2ViTlNQYXN0ZWJvYXJkRXh0cmFz
Lm1tOgorICAgICAgICAoLVtOU1Bhc3RlYm9hcmQgX3dlYl93cml0ZVByb21pc2VkUlRGREZyb21B
cmNoaXZlOmNvbnRhaW5zSW1hZ2U6XSk6CisKIDIwMTgtMTAtMTggIEFsZXhleSBQcm9za3VyeWFr
b3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAgU3dpdGNoIGZyb20gUExBVEZPUk0oSU9TKSB0
byBQTEFURk9STShJT1NfRkFNSUxZKQpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlz
Yy9XZWJOU1Bhc3RlYm9hcmRFeHRyYXMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvTWlzYy9XZWJOU1Bhc3RlYm9hcmRFeHRyYXMubW0JKHJldmlzaW9uIDIzNzMwOCkK
KysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViTlNQYXN0ZWJvYXJkRXh0cmFzLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC0yMTQsMTMgKzIxNCwxMyBAQCAtICh2b2lkKV93ZWJfd3JpdGVQ
cm9taXNlZFJURkRGcm9tQXJjaGl2CiAgICAgaWYgKGNvbnRhaW5zSW1hZ2UgJiYgW3N1YnJlc291
cmNlcyBjb3VudF0gPiAwKSB7CiAgICAgICAgIFdlYlJlc291cmNlICpzdWJyZXNvdXJjZSA9IFtz
dWJyZXNvdXJjZXMgb2JqZWN0QXRJbmRleDowXTsKICAgICAgICAgTlNTdHJpbmcgKnN1YnJlc291
cmNlTUlNRVR5cGUgPSBbc3VicmVzb3VyY2UgTUlNRVR5cGVdOwotICAgICAgICBpZiAoTUlNRVR5
cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRJbWFnZVJlc291cmNlTUlNRVR5cGUoc3VicmVzb3VyY2VN
SU1FVHlwZSkgfHwgTUlNRVR5cGVSZWdpc3RyeTo6aXNQREZPclBvc3RTY3JpcHRNSU1FVHlwZShz
dWJyZXNvdXJjZU1JTUVUeXBlKSkKKyAgICAgICAgaWYgKE1JTUVUeXBlUmVnaXN0cnk6OmlzU3Vw
cG9ydGVkSW1hZ2VNSU1FVHlwZShzdWJyZXNvdXJjZU1JTUVUeXBlKSB8fCBNSU1FVHlwZVJlZ2lz
dHJ5Ojppc1BERk9yUG9zdFNjcmlwdE1JTUVUeXBlKHN1YnJlc291cmNlTUlNRVR5cGUpKQogICAg
ICAgICAgICAgcmVzb3VyY2UgPSBzdWJyZXNvdXJjZTsKICAgICB9CiAgICAgQVNTRVJUKHJlc291
cmNlICE9IG5pbCk7CiAgICAgCi0gICAgQVNTRVJUKCFjb250YWluc0ltYWdlIHx8IE1JTUVUeXBl
UmVnaXN0cnk6OmlzU3VwcG9ydGVkSW1hZ2VSZXNvdXJjZU1JTUVUeXBlKFtyZXNvdXJjZSBNSU1F
VHlwZV0pIHx8IE1JTUVUeXBlUmVnaXN0cnk6OmlzUERGT3JQb3N0U2NyaXB0TUlNRVR5cGUoW3Jl
c291cmNlIE1JTUVUeXBlXSkpOwotICAgIGlmICghY29udGFpbnNJbWFnZSB8fCBNSU1FVHlwZVJl
Z2lzdHJ5Ojppc1N1cHBvcnRlZEltYWdlUmVzb3VyY2VNSU1FVHlwZShbcmVzb3VyY2UgTUlNRVR5
cGVdKSB8fCBNSU1FVHlwZVJlZ2lzdHJ5Ojppc1BERk9yUG9zdFNjcmlwdE1JTUVUeXBlKFtyZXNv
dXJjZSBNSU1FVHlwZV0pKQorICAgIEFTU0VSVCghY29udGFpbnNJbWFnZSB8fCBNSU1FVHlwZVJl
Z2lzdHJ5Ojppc1N1cHBvcnRlZEltYWdlTUlNRVR5cGUoW3Jlc291cmNlIE1JTUVUeXBlXSkgfHwg
TUlNRVR5cGVSZWdpc3RyeTo6aXNQREZPclBvc3RTY3JpcHRNSU1FVHlwZShbcmVzb3VyY2UgTUlN
RVR5cGVdKSk7CisgICAgaWYgKCFjb250YWluc0ltYWdlIHx8IE1JTUVUeXBlUmVnaXN0cnk6Omlz
U3VwcG9ydGVkSW1hZ2VNSU1FVHlwZShbcmVzb3VyY2UgTUlNRVR5cGVdKSB8fCBNSU1FVHlwZVJl
Z2lzdHJ5Ojppc1BERk9yUG9zdFNjcmlwdE1JTUVUeXBlKFtyZXNvdXJjZSBNSU1FVHlwZV0pKQog
ICAgICAgICBbc2VsZiBfd2ViX3dyaXRlRmlsZVdyYXBwZXJBc1JURkRBdHRhY2htZW50OltyZXNv
dXJjZSBfZmlsZVdyYXBwZXJSZXByZXNlbnRhdGlvbl1dOwogICAgIAogfQpJbmRleDogVG9vbHMv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjM3MzI4
KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjAgQEAKKzIw
MTgtMTAtMjIgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KKwor
ICAgICAgICBBZGQgYW4gU1BJIHRvIGFsbG93IFdlYlZpZXcgY2xpZW50cyB0byBhZGQgYWRkaXRp
b25hbCBzdXBwb3J0ZWQgaW1hZ2UgZm9ybWF0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwNDU0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVGVzdCBvcGVuaW5nIGEgVEdBIGltYWdlIGluIFdlYlZpZXcg
d2hpY2ggaXMgbm90IGFsbG93ZWQgYnkgZGVmYXVsdC4gVGhlCisgICAgICAgIFRHQSBmb3JtYXQg
d2lsbCBiZSBhbGxvd2VkIHRocm91Z2ggV0tXZWJWaWV3Q29uZmlndXJhdGlvbi4KKworICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvMTAweDEwMC1yZWQu
dGdhOiBBZGRlZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hLzQw
MHg0MDAtZ3JlZW4ucG5nOiBBZGRlZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL1N1cHBvcnRlZEFkZGl0aW9uYWxJbWFnZVNvdXJjZVR5cGVzLm1tOiBBZGRlZC4K
KyAgICAgICAgKHJ1blRlc3QpOgorICAgICAgICAoVEVTVCk6CisKIDIwMTgtMTAtMjIgIFdlbnNv
biBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10gW0RhdGFs
aXN0XSBmYXN0L2Zvcm1zL2RhdGFsaXN0L2RhdGFsaXN0LXNob3ctaGlkZS5odG1sIGZhaWxzCklu
ZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEku
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjM3MzA4KQorKysgVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtp
bmcgY29weSkKQEAgLTI0MSw3ICsyNDEsMTAgQEAKIAkJNTM2NzcwMzYxQ0M4MUI2MTAwRDQyNUIx
IC8qIFdlYlNjcmlwdE9iamVjdERlc2NyaXB0aW9uLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM2NzcwMzUxQ0M4MTJGOTAwRDQyNUIx
IC8qIFdlYlNjcmlwdE9iamVjdERlc2NyaXB0aW9uLmh0bWwgKi87IH07CiAJCTUzRUMyNTQxMUU5
NkZEODcwMDA4MzFCOSAvKiBQcmlvcml0eVF1ZXVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzRUMyNTNGMUU5NkJDODAwMDA4MzFCOSAvKiBQcmlv
cml0eVF1ZXVlLmNwcCAqLzsgfTsKIAkJNTUyMjZBMkYxRUJBNDRCOTAwQzM2QUQwIC8qIGxhcmdl
LXJlZC1zcXVhcmUtaW1hZ2UuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1NTIyNkEyRTFFQjk2OUI2MDBDMzZBRDAgLyogbGFyZ2UtcmVk
LXNxdWFyZS1pbWFnZS5odG1sICovOyB9OworCQk1NTU4NDgxQzIxNzEzMTU3MDBGQjdGRkYgLyog
U3VwcG9ydGVkQWRkaXRpb25hbEltYWdlU291cmNlVHlwZXMubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NTU4NDgxQjIxNzEzMTU2MDBGQjdGRkYgLyog
U3VwcG9ydGVkQWRkaXRpb25hbEltYWdlU291cmNlVHlwZXMubW0gKi87IH07CisJCTU1NTg0ODI1
MjE3MThDREEwMEZCN0ZGRiAvKiAxMDB4MTAwLXJlZC50Z2EgaW4gQ29weSBSZXNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTU1ODQ4MjEyMTcxNUE3RTAwRkI3RkZG
IC8qIDEwMHgxMDAtcmVkLnRnYSAqLzsgfTsKIAkJNTU5N0Y4MzYxRDk1OTZDODAwNjZCQzIxIC8q
IFN5bmNocm9uaXplZEZpeGVkUXVldWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTU5N0Y4MzQxRDk1OTZDODAwNjZCQzIxIC8qIFN5bmNocm9uaXpl
ZEZpeGVkUXVldWUuY3BwICovOyB9OworCQk1NUE4NjJFMzIxN0U2MzM0MDA4Rjc0OEEgLyogNDAw
eDQwMC1ncmVlbi5wbmcgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTVBODYyRTIyMTdFNjI4QjAwOEY3NDhBIC8qIDQwMHg0MDAtZ3JlZW4ucG5n
ICovOyB9OwogCQk1NzE0RUNCOTFDQThCNUIwMDAwNTFBQzggLyogRG93bmxvYWRSZXF1ZXN0T3Jp
Z2luYWxVUkwuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1NzE0RUNCODFDQThCNTg4MDAwNTFBQzggLyogRG93bmxvYWRSZXF1ZXN0T3Jp
Z2luYWxVUkwuaHRtbCAqLzsgfTsKIAkJNTcxNEVDQkIxQ0E4QkZFNDAwMDUxQUM4IC8qIERvd25s
b2FkUmVxdWVzdE9yaWdpbmFsVVJMRnJhbWUuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzE0RUNCQTFDQThCRkQxMDAwNTFBQzggLyog
RG93bmxvYWRSZXF1ZXN0T3JpZ2luYWxVUkxGcmFtZS5odG1sICovOyB9OwogCQk1NzE0RUNCRDFD
QThDMjJBMDAwNTFBQzggLyogRG93bmxvYWRSZXF1ZXN0T3JpZ2luYWxVUkwyLmh0bWwgaW4gQ29w
eSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTcxNEVDQkMx
Q0E4QzIxODAwMDUxQUM4IC8qIERvd25sb2FkUmVxdWVzdE9yaWdpbmFsVVJMMi5odG1sICovOyB9
OwpAQCAtOTQzLDcgKzk0Niw5IEBACiAJCQlkc3RQYXRoID0gVGVzdFdlYktpdEFQSS5yZXNvdXJj
ZXM7CiAJCQlkc3RTdWJmb2xkZXJTcGVjID0gNzsKIAkJCWZpbGVzID0gKAorCQkJCTU1NTg0ODI1
MjE3MThDREEwMEZCN0ZGRiAvKiAxMDB4MTAwLXJlZC50Z2EgaW4gQ29weSBSZXNvdXJjZXMgKi8s
CiAJCQkJMUE5RTUyQzkxM0U2NUVGNDAwNjkxN0Y1IC8qIDE4LWNoYXJhY3RlcnMuaHRtbCBpbiBD
b3B5IFJlc291cmNlcyAqLywKKwkJCQk1NUE4NjJFMzIxN0U2MzM0MDA4Rjc0OEEgLyogNDAweDQw
MC1ncmVlbi5wbmcgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJMzc5MDI4QjkxNEZBQzI0QzAw
N0U2QjQzIC8qIGFjY2VwdHNGaXJzdE1vdXNlLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJ
CQkJMUMyQjgxODcxQzg5MjVBMDAwQTU1MjlGIC8qIEFoZW0udHRmIGluIENvcHkgUmVzb3VyY2Vz
ICovLAogCQkJCTFBNjM0NzlGMTgzRDcyQTQwMDVCMTcwNyAvKiBhbGwtY29udGVudC1pbi1vbmUt
aWZyYW1lLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCkBAIC0xNDM0LDcgKzE0MzksNiBAQAog
CQkzN0UxMDY0QjE2OTc2N0Y3MDBCNzhCRDAgLyogRE9NSFRNTFRhYmxlQ2VsbEVsZW1lbnRDZWxs
QWJvdmUuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9IERPTUhUTUxUYWJsZUNlbGxF
bGVtZW50Q2VsbEFib3ZlLmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3RTM4
QzMzMTY5QjdEMDEwMDg0QzI4QyAvKiBXZWJWaWV3RGlkUmVtb3ZlRnJhbWVGcm9tSGllcmFyY2h5
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViVmlld0RpZFJl
bW92ZUZyYW1lRnJvbUhpZXJhcmNoeS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MzdFN0RENjMxRUEwNkZGMjAwOUIzOTZEIC8qIEFkZGl0aW9uYWxSZWFkQWNjZXNzQWxsb3dlZFVS
THMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBZGRpdGlvbmFs
UmVhZEFjY2Vzc0FsbG93ZWRVUkxzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkz
N0U3REQ2NTFFQTA3MTVCMDA5QjM5NkQgLyogQWRkaXRpb25hbFJlYWRBY2Nlc3NBbGxvd2VkVVJM
c1Byb3RvY29sLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFkZGl0aW9uYWxS
ZWFkQWNjZXNzQWxsb3dlZFVSTHNQcm90b2NvbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkzN0U3REQ2NjFFQTA3MUYzMDA5QjM5NkQgLyogQWRkaXRpb25hbFJlYWRBY2Nlc3NBbGxv
d2VkVVJMc1BsdWdpbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IEFkZGl0aW9uYWxSZWFkQWNjZXNzQWxsb3dlZFVSTHNQbHVnaW4ubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTM3RkI3Mjk1MURCMkU4MkYwMEU0MUJFNCAvKiBDb250ZXh0TWVudURl
ZmF1bHRJdGVtc0hhdmVUYWdzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gQ29udGV4dE1lbnVEZWZhdWx0SXRlbXNIYXZlVGFncy5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJM0YxQjUyNjgxRDNENzEyOTAwOEQ2MEM0IC8qIEZ1bGxzY3JlZW5MYXlv
dXRDb25zdHJhaW50cy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IEZ1bGxzY3JlZW5MYXlvdXRDb25zdHJhaW50cy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTE1NDYsNyArMTU1MCwxMSBAQAogCQk1MzY3NzAzNTFDQzgxMkY5MDBENDI1QjEgLyog
V2ViU2NyaXB0T2JqZWN0RGVzY3JpcHRpb24uaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0
aCA9IFdlYlNjcmlwdE9iamVjdERlc2NyaXB0aW9uLmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTUzRUMyNTNGMUU5NkJDODAwMDA4MzFCOSAvKiBQcmlvcml0eVF1ZXVlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFByaW9yaXR5UXVldWUuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NTIyNkEyRTFFQjk2OUI2MDBDMzZBRDAgLyog
bGFyZ2UtcmVkLXNxdWFyZS1pbWFnZS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0g
ImxhcmdlLXJlZC1zcXVhcmUtaW1hZ2UuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTU1NTg0ODFCMjE3MTMxNTYwMEZCN0ZGRiAvKiBTdXBwb3J0ZWRBZGRpdGlvbmFsSW1hZ2VT
b3VyY2VUeXBlcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFN1
cHBvcnRlZEFkZGl0aW9uYWxJbWFnZVNvdXJjZVR5cGVzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk1NTU4NDgxRjIxNzEzNTA4MDBGQjdGRkYgLyogQWRkaXRpb25hbFJlYWRBY2Nl
c3NBbGxvd2VkVVJMc1Byb3RvY29sLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEFkZGl0aW9uYWxSZWFkQWNjZXNzQWxsb3dlZFVSTHNQcm90b2NvbC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk1NTU4NDgyMTIxNzE1QTdFMDBGQjdGRkYgLyogMTAweDEwMC1yZWQu
dGdhICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gZmls
ZTsgcGF0aCA9ICIxMDB4MTAwLXJlZC50Z2EiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1NTk3RjgzNDFEOTU5NkM4MDA2NkJDMjEgLyogU3luY2hyb25pemVkRml4ZWRRdWV1ZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTeW5jaHJvbml6ZWRGaXhlZFF1
ZXVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTVBODYyRTIyMTdFNjI4QjAw
OEY3NDhBIC8qIDQwMHg0MDAtZ3JlZW4ucG5nICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gaW1hZ2UucG5nOyBwYXRoID0gIjQwMHg0MDAtZ3JlZW4ucG5n
Ijsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTcxNEVDQjgxQ0E4QjU4ODAwMDUxQUM4
IC8qIERvd25sb2FkUmVxdWVzdE9yaWdpbmFsVVJMLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7
IHBhdGggPSBEb3dubG9hZFJlcXVlc3RPcmlnaW5hbFVSTC5odG1sOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1NzE0RUNCQTFDQThCRkQxMDAwNTFBQzggLyogRG93bmxvYWRSZXF1ZXN0
T3JpZ2luYWxVUkxGcmFtZS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gRG93bmxv
YWRSZXF1ZXN0T3JpZ2luYWxVUkxGcmFtZS5odG1sOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1NzE0RUNCQzFDQThDMjE4MDAwNTFBQzggLyogRG93bmxvYWRSZXF1ZXN0T3JpZ2luYWxV
UkwyLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSBEb3dubG9hZFJlcXVlc3RPcmln
aW5hbFVSTDIuaHRtbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIzMTIsNyArMjMy
MCw3IEBACiAJCQkJN0NFRkE5NjQxQUMwQjlFMjAwQjkxMEZEIC8qIF9XS1VzZXJDb250ZW50RXh0
ZW5zaW9uU3RvcmUubW0gKi8sCiAJCQkJMzdFN0RENjMxRUEwNkZGMjAwOUIzOTZEIC8qIEFkZGl0
aW9uYWxSZWFkQWNjZXNzQWxsb3dlZFVSTHMubW0gKi8sCiAJCQkJMzdFN0RENjYxRUEwNzFGMzAw
OUIzOTZEIC8qIEFkZGl0aW9uYWxSZWFkQWNjZXNzQWxsb3dlZFVSTHNQbHVnaW4ubW0gKi8sCi0J
CQkJMzdFN0RENjUxRUEwNzE1QjAwOUIzOTZEIC8qIEFkZGl0aW9uYWxSZWFkQWNjZXNzQWxsb3dl
ZFVSTHNQcm90b2NvbC5oICovLAorCQkJCTU1NTg0ODFGMjE3MTM1MDgwMEZCN0ZGRiAvKiBBZGRp
dGlvbmFsUmVhZEFjY2Vzc0FsbG93ZWRVUkxzUHJvdG9jb2wuaCAqLywKIAkJCQlBMURGNzQzMDFD
NDFCNjU4MDBBMkY0RDAgLyogQWx3YXlzUmV2YWxpZGF0ZWRVUkxTY2hlbWVzLm1tICovLAogCQkJ
CTJERTcxQUZEMUQ0OUMwQkQwMDkwNDA5NCAvKiBBbmltYXRlZFJlc2l6ZS5tbSAqLywKIAkJCQk2
M0Y2NjgyMDFGOTdDM0FBMDAzMkVFNTEgLyogQXBwbGljYXRpb25NYW5pZmVzdC5tbSAqLywKQEAg
LTI0MzYsNiArMjQ0NCw3IEBACiAJCQkJMkQ5QTUzQUUxQjMxRkE4RDAwNzRENUFBIC8qIFNocmlu
a1RvRml0Lm1tICovLAogCQkJCTJERkY3QjZDMURBNDg3QUYwMDgxNDYxNCAvKiBTbmFwc2hvdFN0
b3JlLm1tICovLAogCQkJCTUxNUJFMTcwMUQ0MjhCRDEwMEREN0M2OCAvKiBTdG9yZUJsb2JUaGVu
RGVsZXRlLm1tICovLAorCQkJCTU1NTg0ODFCMjE3MTMxNTYwMEZCN0ZGRiAvKiBTdXBwb3J0ZWRB
ZGRpdGlvbmFsSW1hZ2VTb3VyY2VUeXBlcy5tbSAqLywKIAkJCQkxQzczNEI1MjIwNzg4QzQ4MDBG
NDMwRUEgLyogU3lzdGVtQ29sb3JzLm1tICovLAogCQkJCUY0Q0Q3NEM3MjBGREI0OTYwMERFMzc5
NCAvKiBUZXN0VVJMU2NoZW1lSGFuZGxlci5oICovLAogCQkJCUY0Q0Q3NEM4MjBGREI0OTYwMERF
Mzc5NCAvKiBUZXN0VVJMU2NoZW1lSGFuZGxlci5tbSAqLywKQEAgLTI2NTEsNiArMjY2MCw4IEBA
CiAJCUExNkY2NkI4MUM0MEU5RTEwMEJENEQyNCAvKiBSZXNvdXJjZXMgKi8gPSB7CiAJCQlpc2Eg
PSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTU1NTg0ODIxMjE3MTVBN0UwMEZCN0ZG
RiAvKiAxMDB4MTAwLXJlZC50Z2EgKi8sCisJCQkJNTVBODYyRTIyMTdFNjI4QjAwOEY3NDhBIC8q
IDQwMHg0MDAtZ3JlZW4ucG5nICovLAogCQkJCUMyNUNDQTBDMUU1MTQwRTUwMDI2Q0I4QSAvKiBB
bGxBaGVtLnN2ZyAqLywKIAkJCQlGNEE5MjAyRTFGRUUzNEM4MDBGNTk1OTAgLyogYXBwbGUtZGF0
YS11cmwuaHRtbCAqLywKIAkJCQlGNDdEMzBFQjFFRDI4NjE5MDAwNDgyRTEgLyogYXBwbGUuZ2lm
ICovLApAQCAtNDAyNCw2ICs0MDM1LDcgQEAKIAkJCQlFQ0E2ODBDRTFFNjhDQzA5MDA3MzFEMjAg
LyogU3RyaW5nVXRpbGl0aWVzLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0U0RDVERTcxRjY3NDNC
QTAwNzJDRkM2IC8qIFN0cmluZ1dpdGhEaXJlY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
N0NDRTdFRDIxQTQxMUE3RTAwNDQ3QzRDIC8qIFN1YnJlc291cmNlRXJyb3JDcmFzaC5tbSBpbiBT
b3VyY2VzICovLAorCQkJCTU1NTg0ODFDMjE3MTMxNTcwMEZCN0ZGRiAvKiBTdXBwb3J0ZWRBZGRp
dGlvbmFsSW1hZ2VTb3VyY2VUeXBlcy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTQ0MzNBMzk2MjA4
MDQ0MTQwMDkxRUQ1NyAvKiBTeW5jaHJvbm91c1RpbWVvdXRUZXN0cy5tbSBpbiBTb3VyY2VzICov
LAogCQkJCTdDQ0U3RUE4MUE0MTFBMTkwMDQ0N0M0QyAvKiBTeW50aGV0aWNCYWNraW5nU2NhbGVG
YWN0b3JXaW5kb3cubSBpbiBTb3VyY2VzICovLAogCQkJCTFDNzM0QjUzMjA3ODhDNDgwMEY0MzBF
QSAvKiBTeXN0ZW1Db2xvcnMubW0gaW4gU291cmNlcyAqLywKSW5kZXg6IFRvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU3VwcG9ydGVkQWRkaXRpb25hbEltYWdlU291cmNlVHlw
ZXMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9TdXBwb3J0ZWRBZGRpdGlvbmFsSW1hZ2VTb3VyY2VUeXBlcy5tbQkobm9uZXhpc3RlbnQpCisr
KyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1N1cHBvcnRlZEFkZGl0aW9u
YWxJbWFnZVNvdXJjZVR5cGVzLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsODkgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgPFdlYktpdC9XS0ZvdW5kYXRp
b24uaD4KKworI2lmIFdLX0FQSV9FTkFCTEVEICYmIFBMQVRGT1JNKENPQ09BKQorCisjaW1wb3J0
ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorI2ltcG9ydCAiVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5o
IgorI2ltcG9ydCAiV0tXZWJWaWV3Q29uZmlndXJhdGlvbkV4dHJhcy5oIgorI2ltcG9ydCA8V2Vi
S2l0L1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmg+CisjaW1wb3J0IDx3dGYvUmV0YWlu
UHRyLmg+CisKK3N0YXRpYyB2b2lkIHJ1blRlc3QoTlNBcnJheTxOU1N0cmluZyAqPiAqc3VwcG9y
dGVkQWRkaXRpb25hbEltYWdlU291cmNlVHlwZXMsIE5TU3RyaW5nICppbWFnZVVSTCwgTlNTdHJp
bmcgKmltYWdlRXh0ZW5zaW9uLCBDR0Zsb2F0IGltYWdlV2lkdGgpCit7CisgICAgUmV0YWluUHRy
PFdLV2ViVmlld0NvbmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJW
aWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIFtjb25maWd1cmF0aW9uIF9zZXRT
dXBwb3J0ZWRBZGRpdGlvbmFsSW1hZ2VTb3VyY2VUeXBlczpzdXBwb3J0ZWRBZGRpdGlvbmFsSW1h
Z2VTb3VyY2VUeXBlc107CisKKyAgICBSZXRhaW5QdHI8V0tXZWJWaWV3PiB3ZWJWaWV3ID0gYWRv
cHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgw
MCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKworICAgIFJldGFp
blB0cjxOU1VSTD4gdGVzdFVSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3Vy
Y2U6aW1hZ2VVUkwgd2l0aEV4dGVuc2lvbjppbWFnZUV4dGVuc2lvbiBzdWJkaXJlY3Rvcnk6QCJU
ZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VS
TFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6dGVzdFVSTC5nZXQoKV1dOworICAgIFt3ZWJWaWV3IF90
ZXN0X3dhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsKKworICAgIF9fYmxvY2sgYm9vbCBpc0Rv
bmUgPSBmYWxzZTsKKyAgICBbd2ViVmlldyBfZG9BZnRlck5leHRQcmVzZW50YXRpb25VcGRhdGU6
XnsKKyAgICAgICAgW3dlYlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0OkAiW2RvY3VtZW50LnF1ZXJ5
U2VsZWN0b3IoJ2ltZycpLndpZHRoXSIgY29tcGxldGlvbkhhbmRsZXI6XihpZCB2YWx1ZSwgTlNF
cnJvciAqZXJyb3IpIHsKKyAgICAgICAgICAgIENHRmxvYXQgd2lkdGggPSBbW3ZhbHVlIG9iamVj
dEF0SW5kZXg6MF0gZmxvYXRWYWx1ZV07CisgICAgICAgICAgICBFWFBFQ1RfRVEod2lkdGgsIGlt
YWdlV2lkdGgpOworICAgICAgICAgICAgaXNEb25lID0gdHJ1ZTsKKyAgICAgICAgfV07CisgICAg
fV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOworfQorCitURVNUKFdl
YktpdCwgQWRkU3VwcG9ydGVkSW1hZ2VTb3VyY2VUeXBlKQoreworICAgIHJ1blRlc3QoQFtAInB1
YmxpYy5wbmciXSwgQCI0MDB4NDAwLWdyZWVuIiwgQCJwbmciLCA0MDApOworfQorCitURVNUKFdl
YktpdCwgQWRkU3VwcG9ydGVkQW5kQm9ndXNJbWFnZVNvdXJjZVR5cGVzKQoreworICAgIHJ1blRl
c3QoQFtAInB1YmxpYy5wbmciLCBAInB1YmxpYy5ib2d1cyJdLCBAIjQwMHg0MDAtZ3JlZW4iLCBA
InBuZyIsIDQwMCk7Cit9CisKK1RFU1QoV2ViS2l0LCBBZGRTdXBwb3J0ZWRBbmRCb2d1c0ltYWdl
U291cmNlVHlwZXNUd2ljZSkKK3sKKyAgICBydW5UZXN0KEBbQCJwdWJsaWMucG5nIiwgQCJwdWJs
aWMuYm9ndXMiLCBAInB1YmxpYy5wbmciLCBAInB1YmxpYy5ib2d1cyJdLCBAIjQwMHg0MDAtZ3Jl
ZW4iLCBAInBuZyIsIDQwMCk7Cit9CisKK1RFU1QoV2ViS2l0LCBBZGRVbnN1cHBvcnRlZEltYWdl
U291cmNlVHlwZSkKK3sKKyAgICBydW5UZXN0KEBbQCJjb20udHJ1ZXZpc2lvbi50Z2EtaW1hZ2Ui
XSwgQCIxMDB4MTAwLXJlZCIsIEAidGdhIiwgMTAwKTsKK30KKworVEVTVChXZWJLaXQsIEFkZFVu
c3VwcG9ydGVkQW5kQm9ndXNJbWFnZVNvdXJjZVR5cGVzKQoreworICAgIHJ1blRlc3QoQFtAImNv
bS50cnVldmlzaW9uLnRnYS1pbWFnZSIsIEAicHVibGljLmJvZ3VzIl0sIEAiMTAweDEwMC1yZWQi
LCBAInRnYSIsIDEwMCk7Cit9CisKK1RFU1QoV2ViS2l0LCBBZGRVbnN1cHBvcnRlZEFuZEJvZ3Vz
SW1hZ2VTb3VyY2VUeXBlc1R3aWNlKQoreworICAgIHJ1blRlc3QoQFtAImNvbS50cnVldmlzaW9u
LnRnYS1pbWFnZSIsIEAicHVibGljLmJvZ3VzIiwgQCJjb20udHJ1ZXZpc2lvbi50Z2EtaW1hZ2Ui
LCBAInB1YmxpYy5ib2d1cyJdLCBAIjEwMHgxMDAtcmVkIiwgQCJ0Z2EiLCAxMDApOworfQorCisj
ZW5kaWYKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvMTAweDEw
MC1yZWQudGdhCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KQ2Fubm90IGRpc3BsYXk6IGZpbGUgbWFya2VkIGFzIGEgYmlu
YXJ5IHR5cGUuCnN2bjptaW1lLXR5cGUgPSBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0KClByb3Bl
cnR5IGNoYW5nZXMgb246IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvMTAw
eDEwMC1yZWQudGdhCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjptaW1lLXR5cGUKIyMgLTAsMCArMSAj
IworYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVy
dHkKCkFBQUtBQUFBQUFBQUFBQUFaQUJrQUNBbzR3QUEvLy9qQUFELy8rTUFBUC8vNHdBQS8vL2pB
QUQvLytNQUFQLy80d0FBLy8vakFBRC8KLytNQUFQLy80d0FBLy8vakFBRC8vK01BQVAvLzR3QUEv
Ly9qQUFELy8rTUFBUC8vNHdBQS8vL2pBQUQvLytNQUFQLy80d0FBLy8vagpBQUQvLytNQUFQLy80
d0FBLy8vakFBRC8vK01BQVAvLzR3QUEvLy9qQUFELy8rTUFBUC8vNHdBQS8vL2pBQUQvLytNQUFQ
Ly80d0FBCi8vL2pBQUQvLytNQUFQLy80d0FBLy8vakFBRC8vK01BQVAvLzR3QUEvLy9qQUFELy8r
TUFBUC8vNHdBQS8vL2pBQUQvLytNQUFQLy8KNHdBQS8vL2pBQUQvLytNQUFQLy80d0FBLy8vakFB
RC8vK01BQVAvLzR3QUEvLy9qQUFELy8rTUFBUC8vNHdBQS8vL2pBQUQvLytNQQpBUC8vNHdBQS8v
L2pBQUQvLytNQUFQLy80d0FBLy8vakFBRC8vK01BQVAvLzR3QUEvLy9qQUFELy8rTUFBUC8vNHdB
QS8vL2pBQUQvCi8rTUFBUC8vNHdBQS8vL2pBQUQvLytNQUFQLy80d0FBLy8vakFBRC8vK01BQVAv
LzR3QUEvLy9qQUFELy8rTUFBUC8vNHdBQS8vL2oKQUFELy8rTUFBUC8vNHdBQS8vL2pBQUQvLytN
QUFQLy80d0FBLy8vakFBRC8vK01BQVAvLzR3QUEvLy9qQUFELy8rTUFBUC8vNHdBQQovLy9qQUFE
Ly8rTUFBUC8vNHdBQS8vL2pBQUQvLytNQUFQLy80d0FBLy8vakFBRC8vK01BQVAvLzR3QUEvLy9q
QUFELy8rTUFBUC8vCjR3QUEvLzg9CgpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS80MDB4NDAwLWdyZWVuLnBuZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNhbm5vdCBkaXNwbGF5OiBm
aWxlIG1hcmtlZCBhcyBhIGJpbmFyeSB0eXBlLgpzdm46bWltZS10eXBlID0gaW1hZ2UvcG5nCgpQ
cm9wZXJ0eSBjaGFuZ2VzIG9uOiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
LzQwMHg0MDAtZ3JlZW4ucG5nCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjptaW1lLXR5cGUKIyMgLTAs
MCArMSAjIworaW1hZ2UvcG5nClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKCmlWQk9S
dzBLR2dvQUFBQU5TVWhFVWdBQUFaQUFBQUdRQ0FJQUFBQVAzYUdiQUFBQUNYQklXWE1BQUFzVEFB
QUxFd0VBbXB3WUFBQUEKQjNSSlRVVUg0UWNPRXlRNmFyZnNtUUFBQUIxcFZGaDBRMjl0YldWdWRB
QUFBQUFBUTNKbFlYUmxaQ0IzYVhSb0lFZEpUVkJrTG1VSApBQUFENUVsRVFWUjQydTNVTVEwQUFB
Z0VzUWZsU0VjRkEwa3I0WWFyVEFCZWFBa0F3d0l3TE1Dd0FBd0x3TEFBd3dJd0xBRERBZ3dMCndM
QUFEQXN3TEFEREFqQXN3TEFBREF2QXNBRERBakFzQU1NQ0RBdkFzQUFNQ3pBc0FNTUNNQ3pBc0FB
TUN6QXNBTU1DTUN6QXNBQU0KQzhDd0FNTUNNQ3dBd3dJTUM4Q3dBQXdMTUN3QXd3SXdMTUN3QUF3
THdMQUF3d0l3TEFEREFnd0x3TEFBREFzd0xBRERBakFzd0xBQQpEQXN3TEFEREFqQXN3TEFBREF2
QXNBRERBakFzQU1NQ0RBdkFzQUFNQ3pBc0FNTUNNQ3pBc0FBTUM4Q3dBTU1DTUN3QXd3SU1DOEN3
CkFBd0xNQ3dBd3dJd0xNQ3dBQXdMTUN3QXd3SXdMTUN3QUF3THdMQUF3d0l3TEFEREFnd0x3TEFB
REFzd0xBRERBakFzd0xBQURBdkEKc0FEREFqQXNBTU1DREF2QXNBQU1DekFzQU1NQ01DekFzQUFN
Q3pBc0FNTUNNQ3pBc0FBTUM4Q3dBTU1DTUN3QXd3SU1DOEN3QUF3TApNQ3dBd3dJd0xNQ3dBQXdM
d0xBQXd3SXdMQUREQWd3THdMQUFEQXN3TEFEREFqQXN3TEFBREFzd0xBRERBakFzd0xBQURBdkFz
QURECkFqQXNBTU1DREF2QXNBQU1DekFzQU1NQ01DekFzQUFNQzhDd0FNTUNNQ3dBd3dJTUM4Q3dB
QXdMTUN3QXd3SXdMTUN3QUF3TE1Dd0EKd3dJd0xNQ3dBQXdMd0xBQXd3SXdMQUREQWd3THdMQUFE
QXN3TEFEREFqQXN3TEFBREF2QXNBRERBakFzQU1NQ0RBdkFzQUFNQ3pBcwpBTU1DTUN6QXNBQU1D
ekFzQU1NQ01DekFzQUFNQzhDd0FNTUNNQ3dBd3dJTUM4Q3dBQXdMTUN3QXd3SXdMTUN3QUF3THdM
QUF3d0l3CkxBRERBZ3dMd0xBQURBc3dMQUREQWpBc3dMQUFEQXN3TEFEREFqQXN3TEFBREF2QXNB
RERBakFzQU1NQ0RBdkFzQUFNQ3pBc0FNTUMKTUN6QXNBQU1DOEN3QU1NQ01Dd0F3d0lNQzhDd0FB
d0xNQ3dBd3dJTVN3TEFzQUFNQ3pBc0FNTUNNQ3pBc0FBTUM4Q3dBTU1DTUN3QQp3d0lNQzhDd0FB
d0xNQ3dBd3dJd0xNQ3dBQXdMd0xBQXd3SXdMQUREQWd3THdMQUFEQXN3TEFEREFnd0x3TEFBREFz
d0xBRERBakFzCndMQUFEQXZBc0FEREFqQXNBTU1DREF2QXNBQU1DekFzQU1NQ01DekFzQUFNQzhD
d0FNTUNNQ3dBd3dJTUM4Q3dBQXdMTUN3QXd3SU0KQzhDd0FBd0xNQ3dBd3dJd0xNQ3dBQXdMd0xB
QXd3SXdMQUREQWd3THdMQUFEQXN3TEFEREFqQXN3TEFBREF2QXNBRERBakFzQU1NQwpEQXZBc0FB
TUN6QXNBTU1DREF2QXNBQU1DekFzQU1NQ01DekFzQUFNQzhDd0FNTUNNQ3dBd3dJTUM4Q3dBQXdM
TUN3QXd3SXdMTUN3CkFBd0x3TEFBd3dJd0xBRERBZ3dMd0xBQURBc3dMQUREQWd3THdMQUFEQXN3
TEFEREFqQXN3TEFBREF2QXNBRERBakFzQU1NQ0RBdkEKc0FBTUN6QXNBTU1DTUN6QXNBQU1DOEN3
QU1NQ01Dd0F3d0lNQytEU0FwL0tBNkFXbTUzeEFBQUFBRWxGVGtTdVFtQ0MKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>352924</attachid>
            <date>2018-10-22 16:42:37 -0700</date>
            <delta_ts>2018-10-24 14:33:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190454-20181022164237.patch</filename>
            <type>text/plain</type>
            <size>75278</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzNzMzOCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc5IEBACisyMDE4LTEwLTIyICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGFuIFNQ
SSB0byBhbGxvdyBXZWJWaWV3IGNsaWVudHMgdG8gYWRkIGFkZGl0aW9uYWwgc3VwcG9ydGVkIGlt
YWdlIGZvcm1hdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE5MDQ1NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEFkZCBhbiBTUEkgdG8gYWxsb3cgYWRkaXRpb25hbCBzdXBwb3J0ZWQgaW1hZ2UgZm9ybWF0
cyBpbiBXZWJWaWV3LiBUaGVzZQorICAgICAgICBhZGRpdGlvbmFsIGZvcm1hdHMgY2FuIGJlIHNl
dCBpbiB0aGUgV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhcyBhbiBOU0FycmF5CisgICAgICAgIG9m
IE5TdHJpbmdzLiBFYWNoIHN0cmluZyByZXByZXNlbnRzIHRoZSBVVEkgb2YgdGhlIGFkZGl0aW9u
YWwgYWxsb3dlZCAKKyAgICAgICAgaW1hZ2UgZm9ybWF0LgorCisgICAgICAgIFRoaXMgcGF0Y2gg
ZG9lcyBhIGxpdHRsZSBvZiBjb2RlIHJlLWZhY3RvcmluZy4KKworICAgICAgICAtLSBUaGUgaW5p
dGlhbGl6YXRpb24gb2YgdGhlIGxpc3RzIGluIE1JTUVUeXBlUmVnaXN0cnkgYXJlIG5vdyBtb2Rl
cm5pemVkCisgICAgICAgIGFuZCBzZWxmLWNvbnRhaW5lZC4gTmV2ZXJEZXN0cm95PD4gYW5kIHN0
ZDo6Y2FsbF9vbmNlKCkgYXJlIHVzZWQgdG8gc3RvcmUKKyAgICAgICAgYW5kIHRvIGluaXRpYWxp
emUgdGhlc2UgbGlzdHMuCisKKyAgICAgICAgLS0gaXNTdXBwb3J0ZWRJbWFnZVJlc291cmNlTUlN
RVR5cGUoKSBpcyByZW1vdmVkIHNpbmNlIGl0IHdhcyBpZGVudGljYWwKKyAgICAgICAgdG8gaXNT
dXBwb3J0ZWRJbWFnZU1JTUVUeXBlKCkuCisKKyAgICAgICAgLS0gVGhlIG5hbWUgIkFsbG93ZWRJ
bWFnZVVUSSIgaXMgcmVwbGFjZWQgYnkgIlN1cHBvcnRJbWFnZVNvdXJjZVR5cGUiLgorCisgICAg
ICAgICogbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZUZhY3RvcnkuY3BwOgorICAgICAgICAqIGxvYWRl
ci9hcmNoaXZlL0FyY2hpdmVGYWN0b3J5Lmg6CisgICAgICAgIChXZWJDb3JlOjpBcmNoaXZlRmFj
dG9yeTo6cmVnaXN0ZXJLbm93bkFyY2hpdmVNSU1FVHlwZXMpOiBUaGlzIGZ1bmN0aW9uCisgICAg
ICAgIGlzIGNhbGxlZCB3aGlsZSBpbml0aWFsaXppbmcgdGhlIHN1cHBvcnRlZE5vbkltYWdlTUlN
RVR5cGVzKCkuIFNvIGl0CisgICAgICAgIHNob3VsZCBub3QgaGF2ZSBhIGRpcmVjdCBjYWxsIHRv
IGl0LiBJbnN0ZWFkLCBzdXBwb3J0ZWROb25JbWFnZU1JTUVUeXBlcworICAgICAgICBpcyBwYXNz
ZWQgdG8gaXQuCisgICAgICAgICogcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5OjpzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlcyk6
CisgICAgICAgIChXZWJDb3JlOjpzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlc0ZvckVuY29kaW5nKToK
KyAgICAgICAgKFdlYkNvcmU6OnN1cHBvcnRlZEFkZGl0aW9uYWxJbWFnZU1JTUVUeXBlcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpzdXBwb3J0ZWRKYXZhU2NyaXB0TUlNRVR5cGVzKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OnN1cHBvcnRlZE5vbkltYWdlTUlNRVR5cGVzKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OnN1cHBvcnRlZE1lZGlhTUlNRVR5
cGVzKToKKyAgICAgICAgKFdlYkNvcmU6OnBkZk1JTUVUeXBlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpNSU1FVHlwZVJlZ2lzdHJ5Ojp1bnN1cHBvcnRlZFRleHRNSU1FVHlwZXMpOgorICAgICAgICAo
V2ViQ29yZTo6TUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkSW1hZ2VNSU1FVHlw
ZUZvckVuY29kaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OmlzU3Vw
cG9ydGVkSmF2YVNjcmlwdE1JTUVUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1JTUVUeXBlUmVn
aXN0cnk6OmlzU3VwcG9ydGVkTm9uSW1hZ2VNSU1FVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpN
SU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZE1lZGlhTUlNRVR5cGUpOgorICAgICAgICAoV2Vi
Q29yZTo6TUlNRVR5cGVSZWdpc3RyeTo6aXNVbnN1cHBvcnRlZFRleHRNSU1FVHlwZSk6CisgICAg
ICAgIChXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5Ojppc1BERk1JTUVUeXBlKToKKyAgICAgICAg
KFdlYkNvcmU6OmluaXRpYWxpemVTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlcyk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjppbml0aWFsaXplU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXNGb3JFbmNv
ZGluZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjppbml0aWFsaXplU3VwcG9ydGVkSmF2
YVNjcmlwdE1JTUVUeXBlcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjppbml0aWFsaXpl
UERGTUlNRVR5cGVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmluaXRpYWxpemVTdXBw
b3J0ZWROb25JbWFnZU1pbWVUeXBlcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjppbml0
aWFsaXplU3VwcG9ydGVkTWVkaWFNSU1FVHlwZXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6aW5pdGlhbGl6ZVVuc3VwcG9ydGVkVGV4dE1JTUVUeXBlcyk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZEltYWdlUmVzb3VyY2VNSU1F
VHlwZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRT
dXBwb3J0ZWRJbWFnZU1JTUVUeXBlcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNSU1F
VHlwZVJlZ2lzdHJ5OjpnZXRTdXBwb3J0ZWRJbWFnZVJlc291cmNlTUlNRVR5cGVzKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OmdldFN1cHBvcnRlZE5vbklt
YWdlTUlNRVR5cGVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0
cnk6OmdldFN1cHBvcnRlZE1lZGlhTUlNRVR5cGVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6Ok1JTUVUeXBlUmVnaXN0cnk6OmdldFBERk1JTUVUeXBlcyk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRVbnN1cHBvcnRlZFRleHRNSU1FVHlwZXMp
OiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZTo6c3VwcG9ydHNUeXBlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURl
Y29kZXJDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJDRzo6ZW5jb2RlZERh
dGFTdGF0dXMgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL1VUSVJlZ2lz
dHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnN1cHBvcnRlZERlZmF1bHRJbWFnZVNvdXJjZVR5
cGVzKToKKyAgICAgICAgKFdlYkNvcmU6OmludGVybmFsU3VwcG9ydGVkQWRkaXRpb25hbEltYWdl
U291cmNlVHlwZXMpOgorICAgICAgICAoV2ViQ29yZTo6c3VwcG9ydGVkQWRkaXRpb25hbEltYWdl
U291cmNlVHlwZXMpOgorICAgICAgICAoV2ViQ29yZTo6c2V0U3VwcG9ydGVkQWRkaXRpb25hbElt
YWdlU291cmNlVHlwZXMpOgorICAgICAgICAoV2ViQ29yZTo6aXNTdXBwb3J0SW1hZ2VTb3VyY2VU
eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OmFsbG93ZWRJbWFnZVVUSXMpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6aXNBbGxvd2VkSW1hZ2VVVEkpOiBEZWxldGVkLgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2NnL1VUSVJlZ2lzdHJ5Lmg6CisgICAgICAgICogcGxhdGZvcm0vbWFj
L1Bhc3RlYm9hcmRNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjp3cml0ZSk6
CisKIDIwMTgtMTAtMjIgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbTEZDXVtJRkNdIEFkZCBqdXN0aWZ5IHRleHQtYWxpZ24gc3VwcG9ydC4KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVGYWN0b3J5LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5jcHAJKHJldmlz
aW9uIDIzNzMwOCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVGYWN0
b3J5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTUsOSArOTUsOCBAQCBSZWZQdHI8QXJjaGl2ZT4g
QXJjaGl2ZUZhY3Rvcnk6OmNyZWF0ZShjCiAgICAgcmV0dXJuIGZ1bmN0aW9uKHVybCwgKmRhdGEp
OwogfQogCi12b2lkIEFyY2hpdmVGYWN0b3J5OjpyZWdpc3Rlcktub3duQXJjaGl2ZU1JTUVUeXBl
cygpCit2b2lkIEFyY2hpdmVGYWN0b3J5OjpyZWdpc3Rlcktub3duQXJjaGl2ZU1JTUVUeXBlcyhI
YXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgbWltZVR5cGVzKQogewot
ICAgIGF1dG8mIG1pbWVUeXBlcyA9IE1JTUVUeXBlUmVnaXN0cnk6OmdldFN1cHBvcnRlZE5vbklt
YWdlTUlNRVR5cGVzKCk7CiAgICAgZm9yIChhdXRvJiBtaW1lVHlwZSA6IGFyY2hpdmVNSU1FVHlw
ZXMoKS5rZXlzKCkpCiAgICAgICAgIG1pbWVUeXBlcy5hZGQobWltZVR5cGUpOwogfQpJbmRleDog
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZUZhY3RvcnkuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5oCShyZXZp
c2lvbiAyMzczMDgpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFj
dG9yeS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3IEBAIGNsYXNzIEFyY2hpdmVGYWN0
b3J5IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBpc0FyY2hpdmVNSU1FVHlwZShjb25zdCBT
dHJpbmcmKTsKICAgICBzdGF0aWMgUmVmUHRyPEFyY2hpdmU+IGNyZWF0ZShjb25zdCBVUkwmLCBT
aGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOwotICAgIHN0YXRpYyB2
b2lkIHJlZ2lzdGVyS25vd25BcmNoaXZlTUlNRVR5cGVzKCk7CisgICAgc3RhdGljIHZvaWQgcmVn
aXN0ZXJLbm93bkFyY2hpdmVNSU1FVHlwZXMoSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vu
c2l0aXZlSGFzaD4mKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuY3BwCShyZXZpc2lvbiAyMzcz
MDgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNTUsMjEwICs1NSwyNjIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1zdGF0aWMgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4qIHN1cHBv
cnRlZEltYWdlUmVzb3VyY2VNSU1FVHlwZXM7Ci1zdGF0aWMgSGFzaFNldDxTdHJpbmcsIEFTQ0lJ
Q2FzZUluc2Vuc2l0aXZlSGFzaD4qIHN1cHBvcnRlZEltYWdlTUlNRVR5cGVzOwotc3RhdGljIEhh
c2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+KiBzdXBwb3J0ZWRJbWFnZU1J
TUVUeXBlc0ZvckVuY29kaW5nOwotc3RhdGljIEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNl
bnNpdGl2ZUhhc2g+KiBzdXBwb3J0ZWRKYXZhU2NyaXB0TUlNRVR5cGVzOwotc3RhdGljIEhhc2hT
ZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+KiBzdXBwb3J0ZWROb25JbWFnZU1J
TUVUeXBlczsKLXN0YXRpYyBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNo
Piogc3VwcG9ydGVkTWVkaWFNSU1FVHlwZXM7Ci1zdGF0aWMgSGFzaFNldDxTdHJpbmcsIEFTQ0lJ
Q2FzZUluc2Vuc2l0aXZlSGFzaD4qIHBkZk1JTUVUeXBlczsKLXN0YXRpYyBIYXNoU2V0PFN0cmlu
ZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiogdW5zdXBwb3J0ZWRUZXh0TUlNRVR5cGVzOwot
Ci1zdGF0aWMgdm9pZCBpbml0aWFsaXplU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXMoKQorY29uc3Qg
SGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIE1JTUVUeXBlUmVnaXN0
cnk6OnN1cHBvcnRlZEltYWdlTUlNRVR5cGVzKCkKIHsKLSAgICBzdXBwb3J0ZWRJbWFnZVJlc291
cmNlTUlNRVR5cGVzID0gbmV3IEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhh
c2g+OwotICAgIHN1cHBvcnRlZEltYWdlTUlNRVR5cGVzID0gbmV3IEhhc2hTZXQ8U3RyaW5nLCBB
U0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+OwotCisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhh
c2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+PiBzdXBwb3J0ZWRJbWFnZU1J
TUVUeXBlczsKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7CisgICAgc3RkOjpj
YWxsX29uY2Uob25jZUZsYWcsIFtdIHsKICNpZiBVU0UoQ0cpCi0gICAgLy8gVGhpcyByZXByZXNl
bnRzIHRoZSBzdWJzZXQgb2YgYWxsb3dlZCBpbWFnZSBVVElzIGZvciB3aGljaCBDb3JlU2Vydmlj
ZXMgaGFzIGEgY29ycmVzcG9uZGluZyBNSU1FIHR5cGUuIEtlZXAgdGhpcyBpbiBzeW5jIHdpdGgg
YWxsb3dlZEltYWdlVVRJcygpLgotICAgIHN0YXRpYyBjb25zdCBBU0NJSUxpdGVyYWwgYWxsb3dl
ZEltYWdlTUlNRVR5cGVzW10gPSB7ICJpbWFnZS90aWZmIl9zLCAiaW1hZ2UvZ2lmIl9zLCAiaW1h
Z2UvanBlZyJfcywgImltYWdlL3ZuZC5taWNyb3NvZnQuaWNvbiJfcywgImltYWdlL2pwMiJfcywg
ImltYWdlL3BuZyJfcywgImltYWdlL2JtcCJfcyB9OwotICAgIGZvciAoYXV0byYgbWltZVR5cGUg
OiBhbGxvd2VkSW1hZ2VNSU1FVHlwZXMpIHsKLSAgICAgICAgc3VwcG9ydGVkSW1hZ2VNSU1FVHlw
ZXMtPmFkZChtaW1lVHlwZSk7Ci0gICAgICAgIHN1cHBvcnRlZEltYWdlUmVzb3VyY2VNSU1FVHlw
ZXMtPmFkZChtaW1lVHlwZSk7Ci0gICAgfQotCisgICAgICAgIC8vIFRoaXMgcmVwcmVzZW50cyB0
aGUgc3Vic2V0IG9mIGFsbG93ZWQgaW1hZ2UgVVRJcyBmb3Igd2hpY2ggQ29yZVNlcnZpY2VzIGhh
cyBhIGNvcnJlc3BvbmRpbmcgTUlNRSB0eXBlLiBLZWVwIHRoaXMgaW4gc3luYyB3aXRoIHN1cHBv
cnRlZERlZmF1bHRJbWFnZVNvdXJjZVR5cGVzKCkuCisgICAgICAgIHN0YXRpYyBjb25zdCBBU0NJ
SUxpdGVyYWwgYWxsb3dlZEltYWdlTUlNRVR5cGVzW10gPSB7ICJpbWFnZS90aWZmIl9zLCAiaW1h
Z2UvZ2lmIl9zLCAiaW1hZ2UvanBlZyJfcywgImltYWdlL3ZuZC5taWNyb3NvZnQuaWNvbiJfcywg
ImltYWdlL2pwMiJfcywgImltYWdlL3BuZyJfcywgImltYWdlL2JtcCJfcyB9OworICAgICAgICBm
b3IgKGF1dG8mIG1pbWVUeXBlIDogYWxsb3dlZEltYWdlTUlNRVR5cGVzKQorICAgICAgICAgICAg
c3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXMuZ2V0KCkuYWRkKG1pbWVUeXBlKTsKICNpZm5kZWYgTkRF
QlVHCi0gICAgZm9yIChhdXRvJiB1dGkgOiBhbGxvd2VkSW1hZ2VVVElzKCkpIHsKLSAgICAgICAg
YXV0byBtaW1lVHlwZSA9IE1JTUVUeXBlRm9ySW1hZ2VTb3VyY2VUeXBlKHV0aSk7Ci0gICAgICAg
IGlmICghbWltZVR5cGUuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBBU1NFUlQoc3VwcG9ydGVk
SW1hZ2VNSU1FVHlwZXMtPmNvbnRhaW5zKG1pbWVUeXBlKSk7Ci0gICAgICAgICAgICBBU1NFUlQo
c3VwcG9ydGVkSW1hZ2VSZXNvdXJjZU1JTUVUeXBlcy0+Y29udGFpbnMobWltZVR5cGUpKTsKKyAg
ICAgICAgZm9yIChhdXRvJiB1dGkgOiBzdXBwb3J0ZWREZWZhdWx0SW1hZ2VTb3VyY2VUeXBlcygp
KSB7CisgICAgICAgICAgICBhdXRvIG1pbWVUeXBlID0gTUlNRVR5cGVGb3JJbWFnZVNvdXJjZVR5
cGUodXRpKTsKKyAgICAgICAgICAgIGlmICghbWltZVR5cGUuaXNFbXB0eSgpKQorICAgICAgICAg
ICAgICAgIEFTU0VSVChzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlcy5nZXQoKS5jb250YWlucyhtaW1l
VHlwZSkpOwogICAgICAgICB9Ci0gICAgfQogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgZm9y
IChhdXRvJiBtaW1lIDogKnN1cHBvcnRlZEltYWdlTUlNRVR5cGVzKQotICAgICAgICBBU1NFUlRf
VU5VU0VEKG1pbWUsIGFsbG93ZWRJbWFnZVVUSXMoKS5jb250YWlucyhVVElGcm9tTUlNRVR5cGUo
bWltZSkpKTsKKyAgICAgICAgZm9yIChhdXRvJiBtaW1lIDogc3VwcG9ydGVkSW1hZ2VNSU1FVHlw
ZXMuZ2V0KCkpCisgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKG1pbWUsIHN1cHBvcnRlZERlZmF1
bHRJbWFnZVNvdXJjZVR5cGVzKCkuY29udGFpbnMoVVRJRnJvbU1JTUVUeXBlKG1pbWUpKSk7CiAj
ZW5kaWYKICNlbmRpZgorICAgICAgICAvLyBGYXZpY29ucyBkb24ndCBoYXZlIGEgTUlNRSB0eXBl
IGluIHRoZSByZWdpc3RyeSBlaXRoZXIuCisgICAgICAgIHN1cHBvcnRlZEltYWdlTUlNRVR5cGVz
LmdldCgpLmFkZCgiaW1hZ2UveC1pY29uIik7CiAKLSAgICAvLyBGYXZpY29ucyBkb24ndCBoYXZl
IGEgTUlNRSB0eXBlIGluIHRoZSByZWdpc3RyeSBlaXRoZXIuCi0gICAgc3VwcG9ydGVkSW1hZ2VN
SU1FVHlwZXMtPmFkZCgiaW1hZ2UveC1pY29uIik7Ci0gICAgc3VwcG9ydGVkSW1hZ2VSZXNvdXJj
ZU1JTUVUeXBlcy0+YWRkKCJpbWFnZS94LWljb24iKTsKLQotICAgIC8vICBXZSBvbmx5IGdldCBv
bmUgTUlNRSB0eXBlIHBlciBVVEksIGhlbmNlIG91ciBuZWVkIHRvIGFkZCB0aGVzZSBtYW51YWxs
eQotICAgIHN1cHBvcnRlZEltYWdlTUlNRVR5cGVzLT5hZGQoImltYWdlL3BqcGVnIik7Ci0gICAg
c3VwcG9ydGVkSW1hZ2VSZXNvdXJjZU1JTUVUeXBlcy0+YWRkKCJpbWFnZS9wanBlZyIpOworICAg
ICAgICAvLyAgV2Ugb25seSBnZXQgb25lIE1JTUUgdHlwZSBwZXIgVVRJLCBoZW5jZSBvdXIgbmVl
ZCB0byBhZGQgdGhlc2UgbWFudWFsbHkKKyAgICAgICAgc3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXMu
Z2V0KCkuYWRkKCJpbWFnZS9wanBlZyIpOwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAg
ICAvLyBBZGQgbWFsZm9ybWVkIGltYWdlIG1pbWV0eXBlIGZvciBjb21wYXRpYmlsaXR5IHdpdGgg
TWFpbCBhbmQgdG8gaGFuZGxlIG1hbGZvcm1lZCBtaW1ldHlwZXMgZnJvbSB0aGUgbmV0Ci0gICAg
Ly8gVGhlc2Ugd2VyZSByZW1vdmVkIGZvciA8cmRhcjovL3Byb2JsZW0vNjU2NDUzOD4gUmUtZW5h
YmxlIFVUSSBjb2RlIGluIFdlYkNvcmUgbm93IHRoYXQgTW9iaWxlQ29yZVNlcnZpY2VzIGV4aXN0
cwotICAgIC8vIEJ1dCBNYWlsIHJlbGllcyBvbiBhdCBsZWFzdCBpbWFnZS90aWYgcmVwb3J0ZWQg
YXMgYmVpbmcgc3VwcG9ydGVkIChzaG91bGQgYmUgaW1hZ2UvdGlmZikuCi0gICAgLy8gVGhpcyBj
YW4gYmUgcmVtb3ZlZCB3aGVuIE1haWwgYWRkcmVzc2VzOgotICAgIC8vIDxyZGFyOi8vcHJvYmxl
bS83ODc5NTEwPiBNYWlsIHNob3VsZCB1c2Ugc3RhbmRhcmQgaW1hZ2UgbWltZXR5cGVzCi0gICAg
Ly8gYW5kIHdlIGZpeCBzbmlmZmluZyBzbyB0aGF0IGl0IGNvcnJlY3RzIGl0ZW1zIHN1Y2ggYXMg
aW1hZ2UvanBnIC0+IGltYWdlL2pwZWcuCi0gICAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IG1h
bGZvcm1lZE1JTUVUeXBlc1tdID0gewotICAgICAgICAvLyBKUEVHIChpbWFnZS9qcGVnKQotICAg
ICAgICAiaW1hZ2UvanBnIiwgImltYWdlL2pwXyIsICJpbWFnZS9qcGVfIiwgImFwcGxpY2F0aW9u
L2pwZyIsICJhcHBsaWNhdGlvbi94LWpwZyIsICJpbWFnZS9waXBlZyIsCi0gICAgICAgICJpbWFn
ZS92bmQuc3dpdGZ2aWV3LWpwZWciLCAiaW1hZ2UveC14Yml0bWFwIiwKLSAgICAgICAgLy8gR0lG
IChpbWFnZS9naWYpCi0gICAgICAgICJpbWFnZS9naV8iLAotICAgICAgICAvLyBQTkcgKGltYWdl
L3BuZykKLSAgICAgICAgImFwcGxpY2F0aW9uL3BuZyIsICJhcHBsaWNhdGlvbi94LXBuZyIsCi0g
ICAgICAgIC8vIFRJRkYgKGltYWdlL3RpZmYpCi0gICAgICAgICJpbWFnZS94LXRpZiIsICJpbWFn
ZS90aWYiLCAiaW1hZ2UveC10aWZmIiwgImFwcGxpY2F0aW9uL3RpZiIsICJhcHBsaWNhdGlvbi94
LXRpZiIsICJhcHBsaWNhdGlvbi90aWZmIiwKLSAgICAgICAgImFwcGxpY2F0aW9uL3gtdGlmZiIs
Ci0gICAgICAgIC8vIEJNUCAoaW1hZ2UvYm1wLCBpbWFnZS94LWJpdG1hcCkKLSAgICAgICAgImlt
YWdlL3gtYm1wIiwgImltYWdlL3gtd2luLWJpdG1hcCIsICJpbWFnZS94LXdpbmRvd3MtYm1wIiwg
ImltYWdlL21zLWJtcCIsICJpbWFnZS94LW1zLWJtcCIsCi0gICAgICAgICJhcHBsaWNhdGlvbi9i
bXAiLCAiYXBwbGljYXRpb24veC1ibXAiLCAiYXBwbGljYXRpb24veC13aW4tYml0bWFwIiwKLSAg
ICB9OwotICAgIGZvciAoYXV0byYgdHlwZSA6IG1hbGZvcm1lZE1JTUVUeXBlcykgewotICAgICAg
ICBzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlcy0+YWRkKHR5cGUpOwotICAgICAgICBzdXBwb3J0ZWRJ
bWFnZVJlc291cmNlTUlNRVR5cGVzLT5hZGQodHlwZSk7Ci0gICAgfQorICAgICAgICAvLyBBZGQg
bWFsZm9ybWVkIGltYWdlIG1pbWV0eXBlIGZvciBjb21wYXRpYmlsaXR5IHdpdGggTWFpbCBhbmQg
dG8gaGFuZGxlIG1hbGZvcm1lZCBtaW1ldHlwZXMgZnJvbSB0aGUgbmV0CisgICAgICAgIC8vIFRo
ZXNlIHdlcmUgcmVtb3ZlZCBmb3IgPHJkYXI6Ly9wcm9ibGVtLzY1NjQ1Mzg+IFJlLWVuYWJsZSBV
VEkgY29kZSBpbiBXZWJDb3JlIG5vdyB0aGF0IE1vYmlsZUNvcmVTZXJ2aWNlcyBleGlzdHMKKyAg
ICAgICAgLy8gQnV0IE1haWwgcmVsaWVzIG9uIGF0IGxlYXN0IGltYWdlL3RpZiByZXBvcnRlZCBh
cyBiZWluZyBzdXBwb3J0ZWQgKHNob3VsZCBiZSBpbWFnZS90aWZmKS4KKyAgICAgICAgLy8gVGhp
cyBjYW4gYmUgcmVtb3ZlZCB3aGVuIE1haWwgYWRkcmVzc2VzOgorICAgICAgICAvLyA8cmRhcjov
L3Byb2JsZW0vNzg3OTUxMD4gTWFpbCBzaG91bGQgdXNlIHN0YW5kYXJkIGltYWdlIG1pbWV0eXBl
cworICAgICAgICAvLyBhbmQgd2UgZml4IHNuaWZmaW5nIHNvIHRoYXQgaXQgY29ycmVjdHMgaXRl
bXMgc3VjaCBhcyBpbWFnZS9qcGcgLT4gaW1hZ2UvanBlZy4KKyAgICAgICAgc3RhdGljIGNvbnN0
IGNoYXIqIGNvbnN0IG1hbGZvcm1lZE1JTUVUeXBlc1tdID0geworICAgICAgICAgICAgLy8gSlBF
RyAoaW1hZ2UvanBlZykKKyAgICAgICAgICAgICJpbWFnZS9qcGciLCAiaW1hZ2UvanBfIiwgImlt
YWdlL2pwZV8iLCAiYXBwbGljYXRpb24vanBnIiwgImFwcGxpY2F0aW9uL3gtanBnIiwgImltYWdl
L3BpcGVnIiwKKyAgICAgICAgICAgICJpbWFnZS92bmQuc3dpdGZ2aWV3LWpwZWciLCAiaW1hZ2Uv
eC14Yml0bWFwIiwKKyAgICAgICAgICAgIC8vIEdJRiAoaW1hZ2UvZ2lmKQorICAgICAgICAgICAg
ImltYWdlL2dpXyIsCisgICAgICAgICAgICAvLyBQTkcgKGltYWdlL3BuZykKKyAgICAgICAgICAg
ICJhcHBsaWNhdGlvbi9wbmciLCAiYXBwbGljYXRpb24veC1wbmciLAorICAgICAgICAgICAgLy8g
VElGRiAoaW1hZ2UvdGlmZikKKyAgICAgICAgICAgICJpbWFnZS94LXRpZiIsICJpbWFnZS90aWYi
LCAiaW1hZ2UveC10aWZmIiwgImFwcGxpY2F0aW9uL3RpZiIsICJhcHBsaWNhdGlvbi94LXRpZiIs
ICJhcHBsaWNhdGlvbi90aWZmIiwKKyAgICAgICAgICAgICJhcHBsaWNhdGlvbi94LXRpZmYiLAor
ICAgICAgICAgICAgLy8gQk1QIChpbWFnZS9ibXAsIGltYWdlL3gtYml0bWFwKQorICAgICAgICAg
ICAgImltYWdlL3gtYm1wIiwgImltYWdlL3gtd2luLWJpdG1hcCIsICJpbWFnZS94LXdpbmRvd3Mt
Ym1wIiwgImltYWdlL21zLWJtcCIsICJpbWFnZS94LW1zLWJtcCIsCisgICAgICAgICAgICAiYXBw
bGljYXRpb24vYm1wIiwgImFwcGxpY2F0aW9uL3gtYm1wIiwgImFwcGxpY2F0aW9uL3gtd2luLWJp
dG1hcCIsCisgICAgICAgIH07CisgICAgICAgIGZvciAoYXV0byYgdHlwZSA6IG1hbGZvcm1lZE1J
TUVUeXBlcykKKyAgICAgICAgICAgIHN1cHBvcnRlZEltYWdlTUlNRVR5cGVzLmdldCgpLmFkZCh0
eXBlKTsKICNlbmRpZgotCiAjZWxzZQotICAgIC8vIGFzc3VtZSB0aGF0IGFsbCBpbXBsZW1lbnRh
dGlvbnMgYXQgbGVhc3Qgc3VwcG9ydCB0aGUgZm9sbG93aW5nIHN0YW5kYXJkCi0gICAgLy8gaW1h
Z2UgdHlwZXM6Ci0gICAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IHR5cGVzW10gPSB7Ci0gICAg
ICAgICJpbWFnZS9qcGVnIiwKLSAgICAgICAgImltYWdlL3BuZyIsCi0gICAgICAgICJpbWFnZS9n
aWYiLAotICAgICAgICAiaW1hZ2UvYm1wIiwKLSAgICAgICAgImltYWdlL3ZuZC5taWNyb3NvZnQu
aWNvbiIsICAgIC8vIGljbwotICAgICAgICAiaW1hZ2UveC1pY29uIiwgICAgLy8gaWNvCi0gICAg
ICAgICJpbWFnZS94LXhiaXRtYXAiICAvLyB4Ym0KLSAgICB9OwotICAgIGZvciAoYXV0byYgdHlw
ZSA6IHR5cGVzKSB7Ci0gICAgICAgIHN1cHBvcnRlZEltYWdlTUlNRVR5cGVzLT5hZGQodHlwZSk7
Ci0gICAgICAgIHN1cHBvcnRlZEltYWdlUmVzb3VyY2VNSU1FVHlwZXMtPmFkZCh0eXBlKTsKLSAg
ICB9Ci0KKyAgICAgICAgLy8gYXNzdW1lIHRoYXQgYWxsIGltcGxlbWVudGF0aW9ucyBhdCBsZWFz
dCBzdXBwb3J0IHRoZSBmb2xsb3dpbmcgc3RhbmRhcmQKKyAgICAgICAgLy8gaW1hZ2UgdHlwZXM6
CisgICAgICAgIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCB0eXBlc1tdID0geworICAgICAgICAg
ICAgImltYWdlL2pwZWciLAorICAgICAgICAgICAgImltYWdlL3BuZyIsCisgICAgICAgICAgICAi
aW1hZ2UvZ2lmIiwKKyAgICAgICAgICAgICJpbWFnZS9ibXAiLAorICAgICAgICAgICAgImltYWdl
L3ZuZC5taWNyb3NvZnQuaWNvbiIsCisgICAgICAgICAgICAiaW1hZ2UveC1pY29uIiwKKyAgICAg
ICAgICAgICJpbWFnZS94LXhiaXRtYXAiCisgICAgICAgIH07CisgICAgICAgIGZvciAoYXV0byYg
dHlwZSA6IHR5cGVzKQorICAgICAgICAgICAgc3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXMuZ2V0KCku
YWRkKHR5cGUpOwogI2lmIFVTRShXRUJQKQotICAgIHN1cHBvcnRlZEltYWdlTUlNRVR5cGVzLT5h
ZGQoImltYWdlL3dlYnAiKTsKLSAgICBzdXBwb3J0ZWRJbWFnZVJlc291cmNlTUlNRVR5cGVzLT5h
ZGQoImltYWdlL3dlYnAiKTsKKyAgICAgICAgc3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXMuZ2V0KCku
YWRkKCJpbWFnZS93ZWJwIik7CiAjZW5kaWYKLQogI2VuZGlmIC8vIFVTRShDRykKKyAgICB9KTsK
KyAgICByZXR1cm4gc3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXM7CiB9CiAKLXN0YXRpYyB2b2lkIGlu
aXRpYWxpemVTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlc0ZvckVuY29kaW5nKCkKK3N0YXRpYyBIYXNo
U2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgc3VwcG9ydGVkSW1hZ2VNSU1F
VHlwZXNGb3JFbmNvZGluZygpCiB7Ci0gICAgc3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXNGb3JFbmNv
ZGluZyA9IG5ldyBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPjsKLQor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5z
aXRpdmVIYXNoPj4gc3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXNGb3JFbmNvZGluZzsKKyAgICBzdGF0
aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7CisgICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcs
IFtdIHsKICNpZiBVU0UoQ0cpCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgUmV0YWluUHRyPENG
QXJyYXlSZWY+IHN1cHBvcnRlZFR5cGVzID0gYWRvcHRDRihDR0ltYWdlRGVzdGluYXRpb25Db3B5
VHlwZUlkZW50aWZpZXJzKCkpOwotICAgIENGSW5kZXggY291bnQgPSBDRkFycmF5R2V0Q291bnQo
c3VwcG9ydGVkVHlwZXMuZ2V0KCkpOwotICAgIGZvciAoQ0ZJbmRleCBpID0gMDsgaSA8IGNvdW50
OyBpKyspIHsKLSAgICAgICAgQ0ZTdHJpbmdSZWYgc3VwcG9ydGVkVHlwZSA9IHJlaW50ZXJwcmV0
X2Nhc3Q8Q0ZTdHJpbmdSZWY+KENGQXJyYXlHZXRWYWx1ZUF0SW5kZXgoc3VwcG9ydGVkVHlwZXMu
Z2V0KCksIGkpKTsKLSAgICAgICAgU3RyaW5nIG1pbWVUeXBlID0gTUlNRVR5cGVGb3JJbWFnZVNv
dXJjZVR5cGUoc3VwcG9ydGVkVHlwZSk7Ci0gICAgICAgIGlmICghbWltZVR5cGUuaXNFbXB0eSgp
KQotICAgICAgICAgICAgc3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXNGb3JFbmNvZGluZy0+YWRkKG1p
bWVUeXBlKTsKLSAgICB9CisgICAgICAgIFJldGFpblB0cjxDRkFycmF5UmVmPiBzdXBwb3J0ZWRU
eXBlcyA9IGFkb3B0Q0YoQ0dJbWFnZURlc3RpbmF0aW9uQ29weVR5cGVJZGVudGlmaWVycygpKTsK
KyAgICAgICAgQ0ZJbmRleCBjb3VudCA9IENGQXJyYXlHZXRDb3VudChzdXBwb3J0ZWRUeXBlcy5n
ZXQoKSk7CisgICAgICAgIGZvciAoQ0ZJbmRleCBpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKKyAg
ICAgICAgICAgIENGU3RyaW5nUmVmIHN1cHBvcnRlZFR5cGUgPSByZWludGVycHJldF9jYXN0PENG
U3RyaW5nUmVmPihDRkFycmF5R2V0VmFsdWVBdEluZGV4KHN1cHBvcnRlZFR5cGVzLmdldCgpLCBp
KSk7CisgICAgICAgICAgICBTdHJpbmcgbWltZVR5cGUgPSBNSU1FVHlwZUZvckltYWdlU291cmNl
VHlwZShzdXBwb3J0ZWRUeXBlKTsKKyAgICAgICAgICAgIGlmICghbWltZVR5cGUuaXNFbXB0eSgp
KQorICAgICAgICAgICAgICAgIHN1cHBvcnRlZEltYWdlTUlNRVR5cGVzRm9yRW5jb2RpbmcuZ2V0
KCkuYWRkKG1pbWVUeXBlKTsKKyAgICAgICAgfQogI2Vsc2UKLSAgICAvLyBGSVhNRTogQWRkIFdp
bmRvd3Mgc3VwcG9ydCBmb3IgYWxsIHRoZSBzdXBwb3J0ZWQgVVRJJ3Mgd2hlbiBhIHdheSB0byBj
b252ZXJ0IGZyb20gTUlNRVR5cGUgdG8gVVRJIHJlbGlhYmx5IGlzIGZvdW5kLgotICAgIC8vIEZv
ciBub3csIG9ubHkgc3VwcG9ydCBQTkcsIEpQRUcgYW5kIEdJRi4gIFNlZSA8cmRhcjovL3Byb2Js
ZW0vNjA5NTI4Nj4uCi0gICAgc3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXNGb3JFbmNvZGluZy0+YWRk
KCJpbWFnZS9wbmciKTsKLSAgICBzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlc0ZvckVuY29kaW5nLT5h
ZGQoImltYWdlL2pwZWciKTsKLSAgICBzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlc0ZvckVuY29kaW5n
LT5hZGQoImltYWdlL2dpZiIpOworICAgICAgICAvLyBGSVhNRTogQWRkIFdpbmRvd3Mgc3VwcG9y
dCBmb3IgYWxsIHRoZSBzdXBwb3J0ZWQgVVRJJ3Mgd2hlbiBhIHdheSB0byBjb252ZXJ0IGZyb20g
TUlNRVR5cGUgdG8gVVRJIHJlbGlhYmx5IGlzIGZvdW5kLgorICAgICAgICAvLyBGb3Igbm93LCBv
bmx5IHN1cHBvcnQgUE5HLCBKUEVHIGFuZCBHSUYuIFNlZSA8cmRhcjovL3Byb2JsZW0vNjA5NTI4
Nj4uCisgICAgICAgIHN1cHBvcnRlZEltYWdlTUlNRVR5cGVzRm9yRW5jb2RpbmcuZ2V0KCkuYWRk
KCJpbWFnZS9wbmciKTsKKyAgICAgICAgc3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXNGb3JFbmNvZGlu
Zy5nZXQoKS5hZGQoImltYWdlL2pwZWciKTsKKyAgICAgICAgc3VwcG9ydGVkSW1hZ2VNSU1FVHlw
ZXNGb3JFbmNvZGluZy5nZXQoKS5hZGQoImltYWdlL2dpZiIpOwogI2VuZGlmCiAjZWxpZiBQTEFU
Rk9STShHVEspCi0gICAgc3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXNGb3JFbmNvZGluZy0+YWRkKCJp
bWFnZS9wbmciKTsKLSAgICBzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlc0ZvckVuY29kaW5nLT5hZGQo
ImltYWdlL2pwZWciKTsKLSAgICBzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlc0ZvckVuY29kaW5nLT5h
ZGQoImltYWdlL3RpZmYiKTsKLSAgICBzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlc0ZvckVuY29kaW5n
LT5hZGQoImltYWdlL2JtcCIpOwotICAgIHN1cHBvcnRlZEltYWdlTUlNRVR5cGVzRm9yRW5jb2Rp
bmctPmFkZCgiaW1hZ2UvaWNvIik7CisgICAgICAgIHN1cHBvcnRlZEltYWdlTUlNRVR5cGVzRm9y
RW5jb2RpbmcuZ2V0KCkuYWRkKCJpbWFnZS9wbmciKTsKKyAgICAgICAgc3VwcG9ydGVkSW1hZ2VN
SU1FVHlwZXNGb3JFbmNvZGluZy5nZXQoKS5hZGQoImltYWdlL2pwZWciKTsKKyAgICAgICAgc3Vw
cG9ydGVkSW1hZ2VNSU1FVHlwZXNGb3JFbmNvZGluZy5nZXQoKS5hZGQoImltYWdlL3RpZmYiKTsK
KyAgICAgICAgc3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXNGb3JFbmNvZGluZy5nZXQoKS5hZGQoImlt
YWdlL2JtcCIpOworICAgICAgICBzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlc0ZvckVuY29kaW5nLmdl
dCgpLmFkZCgiaW1hZ2UvaWNvIik7CiAjZWxpZiBVU0UoQ0FJUk8pCi0gICAgc3VwcG9ydGVkSW1h
Z2VNSU1FVHlwZXNGb3JFbmNvZGluZy0+YWRkKCJpbWFnZS9wbmciKTsKKyAgICAgICAgc3VwcG9y
dGVkSW1hZ2VNSU1FVHlwZXNGb3JFbmNvZGluZy5nZXQoKS5hZGQoImltYWdlL3BuZyIpOwogI2Vu
ZGlmCisgICAgfSk7CisgICAgcmV0dXJuIHN1cHBvcnRlZEltYWdlTUlNRVR5cGVzRm9yRW5jb2Rp
bmc7CiB9CiAKLXN0YXRpYyB2b2lkIGluaXRpYWxpemVTdXBwb3J0ZWRKYXZhU2NyaXB0TUlNRVR5
cGVzKCkKK3N0YXRpYyBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYg
c3VwcG9ydGVkQWRkaXRpb25hbEltYWdlTUlNRVR5cGVzKCkKIHsKLSAgICAvLyBodHRwczovL2h0
bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zY3JpcHRpbmcuaHRtbCNqYXZhc2NyaXB0LW1p
bWUtdHlwZQotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCB0eXBlc1tdID0gewotICAgICAg
ICAidGV4dC9qYXZhc2NyaXB0IiwKLSAgICAgICAgInRleHQvZWNtYXNjcmlwdCIsCi0gICAgICAg
ICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiwKLSAgICAgICAgImFwcGxpY2F0aW9uL2VjbWFzY3Jp
cHQiLAotICAgICAgICAiYXBwbGljYXRpb24veC1qYXZhc2NyaXB0IiwKLSAgICAgICAgImFwcGxp
Y2F0aW9uL3gtZWNtYXNjcmlwdCIsCi0gICAgICAgICJ0ZXh0L2phdmFzY3JpcHQxLjAiLAotICAg
ICAgICAidGV4dC9qYXZhc2NyaXB0MS4xIiwKLSAgICAgICAgInRleHQvamF2YXNjcmlwdDEuMiIs
Ci0gICAgICAgICJ0ZXh0L2phdmFzY3JpcHQxLjMiLAotICAgICAgICAidGV4dC9qYXZhc2NyaXB0
MS40IiwKLSAgICAgICAgInRleHQvamF2YXNjcmlwdDEuNSIsCi0gICAgICAgICJ0ZXh0L2pzY3Jp
cHQiLAotICAgICAgICAidGV4dC9saXZlc2NyaXB0IiwKLSAgICAgICAgInRleHQveC1qYXZhc2Ny
aXB0IiwKLSAgICAgICAgInRleHQveC1lY21hc2NyaXB0IgotICAgIH07Ci0KLSAgICBzdXBwb3J0
ZWRKYXZhU2NyaXB0TUlNRVR5cGVzID0gbmV3IEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNl
bnNpdGl2ZUhhc2g+OwotICAgIGZvciAoYXV0byogdHlwZSA6IHR5cGVzKQotICAgICAgICBzdXBw
b3J0ZWRKYXZhU2NyaXB0TUlNRVR5cGVzLT5hZGQodHlwZSk7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+PiBzdXBwb3J0
ZWRBZGRpdGlvbmFsSW1hZ2VNSU1FVHlwZXM7CisjaWYgVVNFKENHKQorICAgIGlmICghc3VwcG9y
dGVkQWRkaXRpb25hbEltYWdlU291cmNlVHlwZXMoKS5pc0VtcHR5KCkpIHsKKyAgICAgICAgc3Rh
dGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOworICAgICAgICBzdGQ6OmNhbGxfb25jZShvbmNl
RmxhZywgW10geworICAgICAgICAgICAgLy8gQWRkIHRoZSBtaW1lIHR5cGVzIG9mIHRoZSBzdXBw
b3J0ZWRBZGRpdGlvbmFsSW1hZ2VTb3VyY2VUeXBlcy4KKyAgICAgICAgICAgIGZvciAoYXV0byYg
dXRpIDogc3VwcG9ydGVkQWRkaXRpb25hbEltYWdlU291cmNlVHlwZXMoKSkgeworICAgICAgICAg
ICAgICAgIGF1dG8gbWltZVR5cGUgPSBNSU1FVHlwZUZvckltYWdlU291cmNlVHlwZSh1dGkpOwor
ICAgICAgICAgICAgICAgIGlmICghbWltZVR5cGUuaXNFbXB0eSgpKQorICAgICAgICAgICAgICAg
ICAgICBzdXBwb3J0ZWRBZGRpdGlvbmFsSW1hZ2VNSU1FVHlwZXMuZ2V0KCkuYWRkKG1pbWVUeXBl
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisgICAgfQorI2VuZGlmCisgICAgcmV0dXJu
IHN1cHBvcnRlZEFkZGl0aW9uYWxJbWFnZU1JTUVUeXBlczsKIH0KIAotc3RhdGljIHZvaWQgaW5p
dGlhbGl6ZVBERk1JTUVUeXBlcygpCitzdGF0aWMgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUlu
c2Vuc2l0aXZlSGFzaD4mIHN1cHBvcnRlZEphdmFTY3JpcHRNSU1FVHlwZXMoKQogewotICAgIGNv
bnN0IGNoYXIqIGNvbnN0IHR5cGVzW10gPSB7Ci0gICAgICAgICJhcHBsaWNhdGlvbi9wZGYiLAot
ICAgICAgICAidGV4dC9wZGYiCi0gICAgfTsKLQotICAgIHBkZk1JTUVUeXBlcyA9IG5ldyBIYXNo
U2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPjsKLSAgICBmb3IgKGF1dG8mIHR5
cGUgOiB0eXBlcykKLSAgICAgICAgcGRmTUlNRVR5cGVzLT5hZGQodHlwZSk7Ci19CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhh
c2g+PiBzdXBwb3J0ZWRKYXZhU2NyaXB0TUlNRVR5cGVzOworICAgIHN0YXRpYyBzdGQ6Om9uY2Vf
ZmxhZyBvbmNlRmxhZzsKKyAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywgW10geworICAgICAg
ICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zY3JpcHRpbmcuaHRt
bCNqYXZhc2NyaXB0LW1pbWUtdHlwZQorICAgICAgICBzdGF0aWMgY29uc3QgY2hhciogY29uc3Qg
dHlwZXNbXSA9IHsKKyAgICAgICAgICAgICJ0ZXh0L2phdmFzY3JpcHQiLAorICAgICAgICAgICAg
InRleHQvZWNtYXNjcmlwdCIsCisgICAgICAgICAgICAiYXBwbGljYXRpb24vamF2YXNjcmlwdCIs
CisgICAgICAgICAgICAiYXBwbGljYXRpb24vZWNtYXNjcmlwdCIsCisgICAgICAgICAgICAiYXBw
bGljYXRpb24veC1qYXZhc2NyaXB0IiwKKyAgICAgICAgICAgICJhcHBsaWNhdGlvbi94LWVjbWFz
Y3JpcHQiLAorICAgICAgICAgICAgInRleHQvamF2YXNjcmlwdDEuMCIsCisgICAgICAgICAgICAi
dGV4dC9qYXZhc2NyaXB0MS4xIiwKKyAgICAgICAgICAgICJ0ZXh0L2phdmFzY3JpcHQxLjIiLAor
ICAgICAgICAgICAgInRleHQvamF2YXNjcmlwdDEuMyIsCisgICAgICAgICAgICAidGV4dC9qYXZh
c2NyaXB0MS40IiwKKyAgICAgICAgICAgICJ0ZXh0L2phdmFzY3JpcHQxLjUiLAorICAgICAgICAg
ICAgInRleHQvanNjcmlwdCIsCisgICAgICAgICAgICAidGV4dC9saXZlc2NyaXB0IiwKKyAgICAg
ICAgICAgICJ0ZXh0L3gtamF2YXNjcmlwdCIsCisgICAgICAgICAgICAidGV4dC94LWVjbWFzY3Jp
cHQiCisgICAgICAgIH07CiAKLXN0YXRpYyB2b2lkIGluaXRpYWxpemVTdXBwb3J0ZWROb25JbWFn
ZU1pbWVUeXBlcygpCi17Ci0gICAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IHR5cGVzW10gPSB7
Ci0gICAgICAgICJ0ZXh0L2h0bWwiLAotICAgICAgICAidGV4dC94bWwiLAotICAgICAgICAidGV4
dC94c2wiLAotICAgICAgICAidGV4dC9wbGFpbiIsCi0gICAgICAgICJ0ZXh0LyIsCi0gICAgICAg
ICJhcHBsaWNhdGlvbi94bWwiLAotICAgICAgICAiYXBwbGljYXRpb24veGh0bWwreG1sIiwKKyAg
ICAgICAgZm9yIChhdXRvKiB0eXBlIDogdHlwZXMpCisgICAgICAgICAgICBzdXBwb3J0ZWRKYXZh
U2NyaXB0TUlNRVR5cGVzLmdldCgpLmFkZCh0eXBlKTsKKyAgICB9KTsKKyAgICByZXR1cm4gc3Vw
cG9ydGVkSmF2YVNjcmlwdE1JTUVUeXBlczsKK30KKworSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2Fz
ZUluc2Vuc2l0aXZlSGFzaD4mIE1JTUVUeXBlUmVnaXN0cnk6OnN1cHBvcnRlZE5vbkltYWdlTUlN
RVR5cGVzKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxTdHJpbmcsIEFT
Q0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4+IHN1cHBvcnRlZE5vbkltYWdlTUlNRVR5cGVzOworICAg
IHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKKyAgICBzdGQ6OmNhbGxfb25jZShvbmNl
RmxhZywgW10geworICAgICAgICBzdGF0aWMgY29uc3QgY2hhciogY29uc3QgdHlwZXNbXSA9IHsK
KyAgICAgICAgICAgICJ0ZXh0L2h0bWwiLAorICAgICAgICAgICAgInRleHQveG1sIiwKKyAgICAg
ICAgICAgICJ0ZXh0L3hzbCIsCisgICAgICAgICAgICAidGV4dC9wbGFpbiIsCisgICAgICAgICAg
ICAidGV4dC8iLAorICAgICAgICAgICAgImFwcGxpY2F0aW9uL3htbCIsCisgICAgICAgICAgICAi
YXBwbGljYXRpb24veGh0bWwreG1sIiwKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICAg
ICAgImFwcGxpY2F0aW9uL3ZuZC53YXAueGh0bWwreG1sIiwKLSAgICAgICAgImFwcGxpY2F0aW9u
L3Jzcyt4bWwiLAotICAgICAgICAiYXBwbGljYXRpb24vYXRvbSt4bWwiLAorICAgICAgICAgICAg
ImFwcGxpY2F0aW9uL3ZuZC53YXAueGh0bWwreG1sIiwKKyAgICAgICAgICAgICJhcHBsaWNhdGlv
bi9yc3MreG1sIiwKKyAgICAgICAgICAgICJhcHBsaWNhdGlvbi9hdG9tK3htbCIsCiAjZW5kaWYK
LSAgICAgICAgImFwcGxpY2F0aW9uL2pzb24iLAotICAgICAgICAiaW1hZ2Uvc3ZnK3htbCIsCisg
ICAgICAgICAgICAiYXBwbGljYXRpb24vanNvbiIsCisgICAgICAgICAgICAiaW1hZ2Uvc3ZnK3ht
bCIsCiAjaWYgRU5BQkxFKEZUUERJUikKLSAgICAgICAgImFwcGxpY2F0aW9uL3gtZnRwLWRpcmVj
dG9yeSIsCisgICAgICAgICAgICAiYXBwbGljYXRpb24veC1mdHAtZGlyZWN0b3J5IiwKICNlbmRp
ZgotICAgICAgICAibXVsdGlwYXJ0L3gtbWl4ZWQtcmVwbGFjZSIKLSAgICAgICAgLy8gTm90ZTog
QWRkaW5nIGEgbmV3IHR5cGUgaGVyZSB3aWxsIHByb2JhYmx5IHJlbmRlciBpdCBhcyBIVE1MLgot
ICAgICAgICAvLyBUaGlzIGNhbiByZXN1bHQgaW4gY3Jvc3Mtc2l0ZSBzY3JpcHRpbmcgdnVsbmVy
YWJpbGl0aWVzLgotICAgIH07Ci0KLSAgICBpZiAoIXN1cHBvcnRlZEphdmFTY3JpcHRNSU1FVHlw
ZXMpCi0gICAgICAgIGluaXRpYWxpemVTdXBwb3J0ZWRKYXZhU2NyaXB0TUlNRVR5cGVzKCk7Cisg
ICAgICAgICAgICAibXVsdGlwYXJ0L3gtbWl4ZWQtcmVwbGFjZSIKKyAgICAgICAgICAgIC8vIE5v
dGU6IEFkZGluZyBhIG5ldyB0eXBlIGhlcmUgd2lsbCBwcm9iYWJseSByZW5kZXIgaXQgYXMgSFRN
TC4KKyAgICAgICAgICAgIC8vIFRoaXMgY2FuIHJlc3VsdCBpbiBjcm9zcy1zaXRlIHNjcmlwdGlu
ZyB2dWxuZXJhYmlsaXRpZXMuCisgICAgICAgIH07CiAKLSAgICBzdXBwb3J0ZWROb25JbWFnZU1J
TUVUeXBlcyA9IG5ldyBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiB7
ICpzdXBwb3J0ZWRKYXZhU2NyaXB0TUlNRVR5cGVzIH07Ci0gICAgZm9yIChhdXRvJiB0eXBlIDog
dHlwZXMpCi0gICAgICAgIHN1cHBvcnRlZE5vbkltYWdlTUlNRVR5cGVzLT5hZGQodHlwZSk7Cisg
ICAgICAgIHN1cHBvcnRlZE5vbkltYWdlTUlNRVR5cGVzLmdldCgpLmFkZChzdXBwb3J0ZWRKYXZh
U2NyaXB0TUlNRVR5cGVzKCkuYmVnaW4oKSwgc3VwcG9ydGVkSmF2YVNjcmlwdE1JTUVUeXBlcygp
LmVuZCgpKTsKKyAgICAgICAgZm9yIChhdXRvJiB0eXBlIDogdHlwZXMpCisgICAgICAgICAgICBz
dXBwb3J0ZWROb25JbWFnZU1JTUVUeXBlcy5nZXQoKS5hZGQodHlwZSk7CiAKICNpZiBFTkFCTEUo
V0VCX0FSQ0hJVkUpIHx8IEVOQUJMRShNSFRNTCkKLSAgICBBcmNoaXZlRmFjdG9yeTo6cmVnaXN0
ZXJLbm93bkFyY2hpdmVNSU1FVHlwZXMoKTsKKyAgICAgICAgQXJjaGl2ZUZhY3Rvcnk6OnJlZ2lz
dGVyS25vd25BcmNoaXZlTUlNRVR5cGVzKHN1cHBvcnRlZE5vbkltYWdlTUlNRVR5cGVzKTsKICNl
bmRpZgorICAgIH0pOworICAgIHJldHVybiBzdXBwb3J0ZWROb25JbWFnZU1JTUVUeXBlczsKK30K
KworY29uc3QgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIE1JTUVU
eXBlUmVnaXN0cnk6OnN1cHBvcnRlZE1lZGlhTUlNRVR5cGVzKCkKK3sKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8SGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4+IHN1
cHBvcnRlZE1lZGlhTUlNRVR5cGVzOworI2lmIEVOQUJMRShWSURFTykKKyAgICBzdGF0aWMgc3Rk
OjpvbmNlX2ZsYWcgb25jZUZsYWc7CisgICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsK
KyAgICAgICAgTWVkaWFQbGF5ZXI6OmdldFN1cHBvcnRlZFR5cGVzKHN1cHBvcnRlZE1lZGlhTUlN
RVR5cGVzKTsKKyAgICB9KTsKKyNlbmRpZgorICAgIHJldHVybiBzdXBwb3J0ZWRNZWRpYU1JTUVU
eXBlczsKK30KKworc3RhdGljIEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhh
c2g+JiBwZGZNSU1FVHlwZXMoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0
PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPj4gcGRmTUlNRVR5cGVzOworICAgIHN0
YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKKyAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxh
ZywgW10geworICAgICAgICBzdGF0aWMgY29uc3QgY2hhciogY29uc3QgdHlwZXNbXSA9IHsKKyAg
ICAgICAgICAgICJhcHBsaWNhdGlvbi9wZGYiLAorICAgICAgICAgICAgInRleHQvcGRmIgorICAg
ICAgICB9OworCisgICAgICAgIGZvciAoYXV0byYgdHlwZSA6IHR5cGVzKQorICAgICAgICAgICAg
cGRmTUlNRVR5cGVzLmdldCgpLmFkZCh0eXBlKTsKKyAgICB9KTsKKyAgICByZXR1cm4gcGRmTUlN
RVR5cGVzOworfQorCitjb25zdCBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVI
YXNoPiYgTUlNRVR5cGVSZWdpc3RyeTo6dW5zdXBwb3J0ZWRUZXh0TUlNRVR5cGVzKCkKK3sKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0
aXZlSGFzaD4+IHVuc3VwcG9ydGVkVGV4dE1JTUVUeXBlczsKKyAgICBzdGF0aWMgc3RkOjpvbmNl
X2ZsYWcgb25jZUZsYWc7CisgICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsKKyAgICAg
ICAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IHR5cGVzW10gPSB7CisgICAgICAgICAgICAidGV4
dC9jYWxlbmRhciJfcywKKyAgICAgICAgICAgICJ0ZXh0L3gtY2FsZW5kYXIiX3MsCisgICAgICAg
ICAgICAidGV4dC94LXZjYWxlbmRhciJfcywKKyAgICAgICAgICAgICJ0ZXh0L3ZjYWxlbmRhciJf
cywKKyAgICAgICAgICAgICJ0ZXh0L3ZjYXJkIl9zLAorICAgICAgICAgICAgInRleHQveC12Y2Fy
ZCJfcywKKyAgICAgICAgICAgICJ0ZXh0L2RpcmVjdG9yeSJfcywKKyAgICAgICAgICAgICJ0ZXh0
L2xkaWYiX3MsCisgICAgICAgICAgICAidGV4dC9xaWYiX3MsCisgICAgICAgICAgICAidGV4dC94
LXFpZiJfcywKKyAgICAgICAgICAgICJ0ZXh0L3gtY3N2Il9zLAorICAgICAgICAgICAgInRleHQv
eC12Y2YiX3MsCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgICAgICAgICAidGV4dC9y
dGYiX3MsCisjZWxzZQorICAgICAgICAgICAgInRleHQvdm5kLnN1bi5qMm1lLmFwcC1kZXNjcmlw
dG9yIl9zLAorI2VuZGlmCisgICAgICAgIH07CisKKyAgICAgICAgZm9yIChhdXRvJiB0eXBlIDog
dHlwZXMpCisgICAgICAgICAgICB1bnN1cHBvcnRlZFRleHRNSU1FVHlwZXMuZ2V0KCkuYWRkKHR5
cGUpOworICAgIH0pOworICAgIHJldHVybiB1bnN1cHBvcnRlZFRleHRNSU1FVHlwZXM7CiB9CiAK
IHN0YXRpYyBjb25zdCBWZWN0b3I8U3RyaW5nPiogdHlwZXNGb3JDb21tb25FeHRlbnNpb24oY29u
c3QgU3RyaW5nJiBleHRlbnNpb24pCkBAIC0zOTIsNDEgKzQ0NCw2IEBAIFZlY3RvcjxTdHJpbmc+
IE1JTUVUeXBlUmVnaXN0cnk6OmdldE1lZGkKICAgICByZXR1cm4geyB9OwogfQogCi1zdGF0aWMg
dm9pZCBpbml0aWFsaXplU3VwcG9ydGVkTWVkaWFNSU1FVHlwZXMoKQotewotICAgIHN1cHBvcnRl
ZE1lZGlhTUlNRVR5cGVzID0gbmV3IEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2
ZUhhc2g+OwotI2lmIEVOQUJMRShWSURFTykKLSAgICBNZWRpYVBsYXllcjo6Z2V0U3VwcG9ydGVk
VHlwZXMoKnN1cHBvcnRlZE1lZGlhTUlNRVR5cGVzKTsKLSNlbmRpZgotfQotCi1zdGF0aWMgdm9p
ZCBpbml0aWFsaXplVW5zdXBwb3J0ZWRUZXh0TUlNRVR5cGVzKCkKLXsKLSAgICBzdGF0aWMgY29u
c3QgY2hhciogY29uc3QgdHlwZXNbXSA9IHsKLSAgICAgICAgInRleHQvY2FsZW5kYXIiX3MsCi0g
ICAgICAgICJ0ZXh0L3gtY2FsZW5kYXIiX3MsCi0gICAgICAgICJ0ZXh0L3gtdmNhbGVuZGFyIl9z
LAotICAgICAgICAidGV4dC92Y2FsZW5kYXIiX3MsCi0gICAgICAgICJ0ZXh0L3ZjYXJkIl9zLAot
ICAgICAgICAidGV4dC94LXZjYXJkIl9zLAotICAgICAgICAidGV4dC9kaXJlY3RvcnkiX3MsCi0g
ICAgICAgICJ0ZXh0L2xkaWYiX3MsCi0gICAgICAgICJ0ZXh0L3FpZiJfcywKLSAgICAgICAgInRl
eHQveC1xaWYiX3MsCi0gICAgICAgICJ0ZXh0L3gtY3N2Il9zLAotICAgICAgICAidGV4dC94LXZj
ZiJfcywKLSNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICAgICAgInRleHQvcnRmIl9zLAot
I2Vsc2UKLSAgICAgICAgInRleHQvdm5kLnN1bi5qMm1lLmFwcC1kZXNjcmlwdG9yIl9zLAotI2Vu
ZGlmCi0gICAgfTsKLQotICAgIHVuc3VwcG9ydGVkVGV4dE1JTUVUeXBlcyA9IG5ldyBIYXNoU2V0
PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPjsKLSAgICBmb3IgKGF1dG8mIHR5cGUg
OiB0eXBlcykKLSAgICAgICAgdW5zdXBwb3J0ZWRUZXh0TUlNRVR5cGVzLT5hZGQodHlwZSk7Ci19
Ci0KIFN0cmluZyBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRNSU1FVHlwZUZvclBhdGgoY29uc3QgU3Ry
aW5nJiBwYXRoKQogewogICAgIHNpemVfdCBwb3MgPSBwYXRoLnJldmVyc2VGaW5kKCcuJyk7CkBA
IC00NDMsOSArNDYwLDcgQEAgYm9vbCBNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZEltYWdl
TQogewogICAgIGlmIChtaW1lVHlwZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICBpZiAoIXN1cHBvcnRlZEltYWdlTUlNRVR5cGVzKQotICAgICAgICBpbml0aWFsaXplU3Vw
cG9ydGVkSW1hZ2VNSU1FVHlwZXMoKTsKLSAgICByZXR1cm4gc3VwcG9ydGVkSW1hZ2VNSU1FVHlw
ZXMtPmNvbnRhaW5zKGdldE5vcm1hbGl6ZWRNSU1FVHlwZShtaW1lVHlwZSkpOworICAgIHJldHVy
biBzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlcygpLmNvbnRhaW5zKGdldE5vcm1hbGl6ZWRNSU1FVHlw
ZShtaW1lVHlwZSkpIHx8IHN1cHBvcnRlZEFkZGl0aW9uYWxJbWFnZU1JTUVUeXBlcygpLmNvbnRh
aW5zKGdldE5vcm1hbGl6ZWRNSU1FVHlwZShtaW1lVHlwZSkpOwogfQogCiBib29sIE1JTUVUeXBl
UmVnaXN0cnk6OmlzU3VwcG9ydGVkSW1hZ2VWaWRlb09yU1ZHTUlNRVR5cGUoY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSkKQEAgLTQ2MSwyNCArNDc2LDEzIEBAIGJvb2wgTUlNRVR5cGVSZWdpc3RyeTo6
aXNTdXBwb3J0ZWRJbWFnZVYKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgTUlNRVR5cGVS
ZWdpc3RyeTo6aXNTdXBwb3J0ZWRJbWFnZVJlc291cmNlTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSkKLXsKLSAgICBpZiAobWltZVR5cGUuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgaWYgKCFzdXBwb3J0ZWRJbWFnZVJlc291cmNlTUlNRVR5cGVzKQotICAgICAg
ICBpbml0aWFsaXplU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXMoKTsKLSAgICByZXR1cm4gc3VwcG9y
dGVkSW1hZ2VSZXNvdXJjZU1JTUVUeXBlcy0+Y29udGFpbnMoZ2V0Tm9ybWFsaXplZE1JTUVUeXBl
KG1pbWVUeXBlKSk7Ci19Ci0KIGJvb2wgTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRJbWFn
ZU1JTUVUeXBlRm9yRW5jb2RpbmcoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKIHsKICAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOwogCiAgICAgaWYgKG1pbWVUeXBlLmlzRW1wdHkoKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghc3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXNGb3JFbmNv
ZGluZykKLSAgICAgICAgaW5pdGlhbGl6ZVN1cHBvcnRlZEltYWdlTUlNRVR5cGVzRm9yRW5jb2Rp
bmcoKTsKLSAgICByZXR1cm4gc3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXNGb3JFbmNvZGluZy0+Y29u
dGFpbnMobWltZVR5cGUpOworICAgIHJldHVybiBzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlc0ZvckVu
Y29kaW5nKCkuY29udGFpbnMobWltZVR5cGUpOwogfQogCiBib29sIE1JTUVUeXBlUmVnaXN0cnk6
OmlzU3VwcG9ydGVkSmF2YVNjcmlwdE1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCkBA
IC00OTQsOSArNDk4LDcgQEAgYm9vbCBNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZEphdmFT
YwogICAgICAgICByZXR1cm4gaXNTdXBwb3J0ZWQ7CiAgICAgfQogCi0gICAgaWYgKCFzdXBwb3J0
ZWRKYXZhU2NyaXB0TUlNRVR5cGVzKQotICAgICAgICBpbml0aWFsaXplU3VwcG9ydGVkTm9uSW1h
Z2VNaW1lVHlwZXMoKTsKLSAgICByZXR1cm4gc3VwcG9ydGVkSmF2YVNjcmlwdE1JTUVUeXBlcy0+
Y29udGFpbnMobWltZVR5cGUpOworICAgIHJldHVybiBzdXBwb3J0ZWRKYXZhU2NyaXB0TUlNRVR5
cGVzKCkuY29udGFpbnMobWltZVR5cGUpOwogfQogCiBib29sIE1JTUVUeXBlUmVnaXN0cnk6Omlz
U3VwcG9ydGVkU3R5bGVTaGVldE1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCkBAIC01
MzksMTggKzU0MSwxNCBAQCBib29sIE1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkTm9uSW1h
CiB7CiAgICAgaWYgKG1pbWVUeXBlLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIGlmICghc3VwcG9ydGVkTm9uSW1hZ2VNSU1FVHlwZXMpCi0gICAgICAgIGluaXRpYWxpemVT
dXBwb3J0ZWROb25JbWFnZU1pbWVUeXBlcygpOwotICAgIHJldHVybiBzdXBwb3J0ZWROb25JbWFn
ZU1JTUVUeXBlcy0+Y29udGFpbnMobWltZVR5cGUpOworICAgIHJldHVybiBzdXBwb3J0ZWROb25J
bWFnZU1JTUVUeXBlcygpLmNvbnRhaW5zKG1pbWVUeXBlKTsKIH0KIAogYm9vbCBNSU1FVHlwZVJl
Z2lzdHJ5Ojppc1N1cHBvcnRlZE1lZGlhTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkK
IHsKICAgICBpZiAobWltZVR5cGUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgaWYgKCFzdXBwb3J0ZWRNZWRpYU1JTUVUeXBlcykKLSAgICAgICAgaW5pdGlhbGl6ZVN1cHBv
cnRlZE1lZGlhTUlNRVR5cGVzKCk7Ci0gICAgcmV0dXJuIHN1cHBvcnRlZE1lZGlhTUlNRVR5cGVz
LT5jb250YWlucyhtaW1lVHlwZSk7CisgICAgcmV0dXJuIHN1cHBvcnRlZE1lZGlhTUlNRVR5cGVz
KCkuY29udGFpbnMobWltZVR5cGUpOwogfQogCiBib29sIE1JTUVUeXBlUmVnaXN0cnk6OmlzU3Vw
cG9ydGVkVGV4dFRyYWNrTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKQEAgLTU2Miw5
ICs1NjAsNyBAQCBib29sIE1JTUVUeXBlUmVnaXN0cnk6OmlzVW5zdXBwb3J0ZWRUZXh0CiB7CiAg
ICAgaWYgKG1pbWVUeXBlLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlm
ICghdW5zdXBwb3J0ZWRUZXh0TUlNRVR5cGVzKQotICAgICAgICBpbml0aWFsaXplVW5zdXBwb3J0
ZWRUZXh0TUlNRVR5cGVzKCk7Ci0gICAgcmV0dXJuIHVuc3VwcG9ydGVkVGV4dE1JTUVUeXBlcy0+
Y29udGFpbnMobWltZVR5cGUpOworICAgIHJldHVybiB1bnN1cHBvcnRlZFRleHRNSU1FVHlwZXMo
KS5jb250YWlucyhtaW1lVHlwZSk7CiB9CiAKIGJvb2wgTUlNRVR5cGVSZWdpc3RyeTo6aXNUZXh0
TUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKQEAgLTYyMiw5ICs2MTgsNyBAQCBib29s
IE1JTUVUeXBlUmVnaXN0cnk6OmlzUERGTUlNRVR5cGUoY29uCiB7CiAgICAgaWYgKG1pbWVUeXBl
LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghcGRmTUlNRVR5cGVz
KQotICAgICAgICBpbml0aWFsaXplUERGTUlNRVR5cGVzKCk7Ci0gICAgcmV0dXJuIHBkZk1JTUVU
eXBlcy0+Y29udGFpbnMobWltZVR5cGUpOworICAgIHJldHVybiBwZGZNSU1FVHlwZXMoKS5jb250
YWlucyhtaW1lVHlwZSk7CiB9CiAKIGJvb2wgTUlNRVR5cGVSZWdpc3RyeTo6aXNQb3N0U2NyaXB0
TUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKQEAgLTY1MSw0OSArNjQ1LDYgQEAgYm9v
bCBNSU1FVHlwZVJlZ2lzdHJ5OjpjYW5TaG93TUlNRVR5cGUoYwogICAgIHJldHVybiBmYWxzZTsK
IH0KIAotY29uc3QgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIE1J
TUVUeXBlUmVnaXN0cnk6OmdldFN1cHBvcnRlZEltYWdlTUlNRVR5cGVzKCkKLXsKLSAgICBpZiAo
IXN1cHBvcnRlZEltYWdlTUlNRVR5cGVzKQotICAgICAgICBpbml0aWFsaXplU3VwcG9ydGVkSW1h
Z2VNSU1FVHlwZXMoKTsKLSAgICByZXR1cm4gKnN1cHBvcnRlZEltYWdlTUlNRVR5cGVzOwotfQot
Ci1jb25zdCBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgTUlNRVR5
cGVSZWdpc3RyeTo6Z2V0U3VwcG9ydGVkSW1hZ2VSZXNvdXJjZU1JTUVUeXBlcygpCi17Ci0gICAg
aWYgKCFzdXBwb3J0ZWRJbWFnZVJlc291cmNlTUlNRVR5cGVzKQotICAgICAgICBpbml0aWFsaXpl
U3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXMoKTsKLSAgICByZXR1cm4gKnN1cHBvcnRlZEltYWdlUmVz
b3VyY2VNSU1FVHlwZXM7Ci19Ci0KLUhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2
ZUhhc2g+JiBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRTdXBwb3J0ZWROb25JbWFnZU1JTUVUeXBlcygp
Ci17Ci0gICAgaWYgKCFzdXBwb3J0ZWROb25JbWFnZU1JTUVUeXBlcykKLSAgICAgICAgaW5pdGlh
bGl6ZVN1cHBvcnRlZE5vbkltYWdlTWltZVR5cGVzKCk7Ci0gICAgcmV0dXJuICpzdXBwb3J0ZWRO
b25JbWFnZU1JTUVUeXBlczsKLX0KLQotY29uc3QgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUlu
c2Vuc2l0aXZlSGFzaD4mIE1JTUVUeXBlUmVnaXN0cnk6OmdldFN1cHBvcnRlZE1lZGlhTUlNRVR5
cGVzKCkKLXsKLSAgICBpZiAoIXN1cHBvcnRlZE1lZGlhTUlNRVR5cGVzKQotICAgICAgICBpbml0
aWFsaXplU3VwcG9ydGVkTWVkaWFNSU1FVHlwZXMoKTsKLSAgICByZXR1cm4gKnN1cHBvcnRlZE1l
ZGlhTUlNRVR5cGVzOwotfQotCi0KLWNvbnN0IEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNl
bnNpdGl2ZUhhc2g+JiBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRQREZNSU1FVHlwZXMoKQotewotICAg
IGlmICghcGRmTUlNRVR5cGVzKQotICAgICAgICBpbml0aWFsaXplUERGTUlNRVR5cGVzKCk7Ci0g
ICAgcmV0dXJuICpwZGZNSU1FVHlwZXM7Ci19Ci0KLWNvbnN0IEhhc2hTZXQ8U3RyaW5nLCBBU0NJ
SUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRVbnN1cHBvcnRlZFRl
eHRNSU1FVHlwZXMoKQotewotICAgIGlmICghdW5zdXBwb3J0ZWRUZXh0TUlNRVR5cGVzKQotICAg
ICAgICBpbml0aWFsaXplVW5zdXBwb3J0ZWRUZXh0TUlNRVR5cGVzKCk7Ci0gICAgcmV0dXJuICp1
bnN1cHBvcnRlZFRleHRNSU1FVHlwZXM7Ci19Ci0KIGNvbnN0IFN0cmluZyYgZGVmYXVsdE1JTUVU
eXBlKCkKIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU3RyaW5nPiBkZWZhdWx0
TUlNRVR5cGUoTUFLRV9TVEFUSUNfU1RSSU5HX0lNUEwoImFwcGxpY2F0aW9uL29jdGV0LXN0cmVh
bSIpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmgJ
KHJldmlzaW9uIDIzNzMwOCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVn
aXN0cnkuaAkod29ya2luZyBjb3B5KQpAQCAtNTAsMTAgKzUwLDYgQEAgcHVibGljOgogICAgIC8v
IENoZWNrIHRvIHNlZSBpZiBhIE1JTUUgdHlwZSBpcyBzdWl0YWJsZSBmb3IgYmVpbmcgbG9hZGVk
IGFzIGFuIGltYWdlLCBpbmNsdWRpbmcgU1ZHIGFuZCBWaWRlbyAod2hlcmUgc3VwcG9ydGVkKS4K
ICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBpc1N1cHBvcnRlZEltYWdlVmlkZW9PclNW
R01JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOwogCi0gICAgLy8gQ2hlY2sgdG8gc2Vl
IGlmIGEgTUlNRSB0eXBlIGlzIHN1aXRhYmxlIGZvciBiZWluZyBsb2FkZWQgYXMgYW4gaW1hZ2UK
LSAgICAvLyBkb2N1bWVudCBpbiBhIGZyYW1lLgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBi
b29sIGlzU3VwcG9ydGVkSW1hZ2VSZXNvdXJjZU1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5
cGUpOwotCiAgICAgLy8gQ2hlY2sgdG8gc2VlIGlmIGEgTUlNRSB0eXBlIGlzIHN1aXRhYmxlIGZv
ciBiZWluZyBlbmNvZGVkLgogICAgIHN0YXRpYyBib29sIGlzU3VwcG9ydGVkSW1hZ2VNSU1FVHlw
ZUZvckVuY29kaW5nKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOwogCkBAIC0xMDgsMTkgKzEwNCwx
MSBAQCBwdWJsaWM6CiAgICAgLy8gbWFrZXMgdGhpcyB0ZXN0IGlzIGFmdGVyIG1hbnkgb3RoZXIg
dGVzdHMgYXJlIGRvbmUgb24gdGhlIE1JTUUgdHlwZS4KICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgYm9vbCBpc1RleHRNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKIAotICAgIC8v
IEZJWE1FOiBXZWJLaXQgY29kaW5nIHN0eWxlIHNheXMgd2Ugc2hvdWxkIG5vdCBoYXZlIHRoZSB3
b3JkICJnZXQiIGluIHRoZSBuYW1lcyBvZiB0aGVzZSBmdW5jdGlvbnMuCiAgICAgLy8gRklYTUU6
IFdvdWxkIGJlIG5pY2UgdG8gZmluZCBhIHdheSB0byBhdm9pZCBleHBvc2luZyB0aGVzZSBzZXRz
LCBldmVuIHdvcnNlIGV4cG9zaW5nIG5vbi1jb25zdCByZWZlcmVuY2VzLgotICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYg
Z2V0U3VwcG9ydGVkTm9uSW1hZ2VNSU1FVHlwZXMoKTsKLQotICAgIFdFQkNPUkVfRVhQT1JUIGNv
bnN0IHN0YXRpYyBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgZ2V0
U3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXMoKTsKLSAgICBjb25zdCBzdGF0aWMgSGFzaFNldDxTdHJp
bmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIGdldFN1cHBvcnRlZEltYWdlUmVzb3VyY2VN
SU1FVHlwZXMoKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBzdGF0aWMgSGFzaFNldDxTdHJp
bmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIGdldFN1cHBvcnRlZE1lZGlhTUlNRVR5cGVz
KCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgY29uc3Qgc3RhdGljIEhhc2hTZXQ8U3RyaW5nLCBBU0NJ
SUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiBnZXRQREZNSU1FVHlwZXMoKTsKLSAgICBXRUJDT1JFX0VY
UE9SVCBjb25zdCBzdGF0aWMgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFz
aD4mIGdldFVuc3VwcG9ydGVkVGV4dE1JTUVUeXBlcygpOwotCi0jaWYgVVNFKFNZU1RFTV9QUkVW
SUVXKQotICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IHN0YXRpYyBIYXNoU2V0PFN0cmluZywgQVND
SUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgZ2V0U3lzdGVtUHJldmlld01JTUVUeXBlcygpOwotI2Vu
ZGlmCisgICAgV0VCQ09SRV9FWFBPUlQgY29uc3Qgc3RhdGljIEhhc2hTZXQ8U3RyaW5nLCBBU0NJ
SUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiBzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlcygpOworICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVI
YXNoPiYgc3VwcG9ydGVkTm9uSW1hZ2VNSU1FVHlwZXMoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBj
b25zdCBzdGF0aWMgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIHN1
cHBvcnRlZE1lZGlhTUlNRVR5cGVzKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgY29uc3Qgc3RhdGlj
IEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiB1bnN1cHBvcnRlZFRl
eHRNSU1FVHlwZXMoKTsKIAogICAgIC8vIEZJWE1FOiBXZWJLaXQgY29kaW5nIHN0eWxlIHNheXMg
d2Ugc2hvdWxkIG5vdCBoYXZlIHRoZSB3b3JkICJnZXQiIGluIHRoZSBuYW1lIG9mIHRoaXMgZnVu
Y3Rpb24uCiAgICAgLy8gRklYTUU6IFVuY2xlYXIgd2hhdCB0aGUgY29uY2VwdCBvZiBhIG5vcm1h
bGl6ZWQgTUlNRSB0eXBlIGlzOyBjdXJyZW50bHkgaXQncyBhIHBsYXRmb3JtLXNwZWNpZmljIG5v
dGlvbi4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAJ
KHJldmlzaW9uIDIzNzMwOCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODIsNyArODIsNyBAQCBSZWZQdHI8SW1hZ2U+IElt
YWdlOjpjcmVhdGUoSW1hZ2VPYnNlcnZlCiAKIGJvb2wgSW1hZ2U6OnN1cHBvcnRzVHlwZShjb25z
dCBTdHJpbmcmIHR5cGUpCiB7Ci0gICAgcmV0dXJuIE1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9y
dGVkSW1hZ2VSZXNvdXJjZU1JTUVUeXBlKHR5cGUpOworICAgIHJldHVybiBNSU1FVHlwZVJlZ2lz
dHJ5Ojppc1N1cHBvcnRlZEltYWdlTUlNRVR5cGUodHlwZSk7CiB9IAogCiBib29sIEltYWdlOjpp
c1BERlJlc291cmNlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFVSTCYgdXJsKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdl
RGVjb2RlckNHLmNwcAkocmV2aXNpb24gMjM3MzA4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTks
NyArMTk5LDcgQEAgRW5jb2RlZERhdGFTdGF0dXMgSW1hZ2VEZWNvZGVyQ0c6OmVuY29kZQogICAg
ICAgICByZXR1cm4gRW5jb2RlZERhdGFTdGF0dXM6OkVycm9yOwogCiAgICAgY2FzZSBrQ0dJbWFn
ZVN0YXR1c0luY29tcGxldGU6IHsKLSAgICAgICAgaWYgKCFpc0FsbG93ZWRJbWFnZVVUSSh1dGkp
KQorICAgICAgICBpZiAoIWlzU3VwcG9ydEltYWdlU291cmNlVHlwZSh1dGkpKQogICAgICAgICAg
ICAgcmV0dXJuIEVuY29kZWREYXRhU3RhdHVzOjpFcnJvcjsKIAogICAgICAgICBSZXRhaW5QdHI8
Q0ZEaWN0aW9uYXJ5UmVmPiBpbWFnZTBQcm9wZXJ0aWVzID0gYWRvcHRDRihDR0ltYWdlU291cmNl
Q29weVByb3BlcnRpZXNBdEluZGV4KG1fbmF0aXZlRGVjb2Rlci5nZXQoKSwgMCwgaW1hZ2VTb3Vy
Y2VPcHRpb25zKCkuZ2V0KCkpKTsKQEAgLTIxMyw3ICsyMTMsNyBAQCBFbmNvZGVkRGF0YVN0YXR1
cyBJbWFnZURlY29kZXJDRzo6ZW5jb2RlCiAgICAgfQogCiAgICAgY2FzZSBrQ0dJbWFnZVN0YXR1
c0NvbXBsZXRlOgotICAgICAgICBpZiAoIWlzQWxsb3dlZEltYWdlVVRJKHV0aSkpCisgICAgICAg
IGlmICghaXNTdXBwb3J0SW1hZ2VTb3VyY2VUeXBlKHV0aSkpCiAgICAgICAgICAgICByZXR1cm4g
RW5jb2RlZERhdGFTdGF0dXM6OkVycm9yOwogCiAgICAgICAgIHJldHVybiBFbmNvZGVkRGF0YVN0
YXR1czo6Q29tcGxldGU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9VVElSZWdpc3RyeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvVVRJUmVnaXN0cnkuY3BwCShyZXZpc2lvbiAyMzczMDgpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9VVElSZWdpc3RyeS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM4LDEwICszOCwxMCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUhhc2hTZXQ8
U3RyaW5nPiYgYWxsb3dlZEltYWdlVVRJcygpCitjb25zdCBIYXNoU2V0PFN0cmluZz4mIHN1cHBv
cnRlZERlZmF1bHRJbWFnZVNvdXJjZVR5cGVzKCkKIHsKICAgICAvLyBDRyBhdCBsZWFzdCBzdXBw
b3J0cyB0aGUgZm9sbG93aW5nIHN0YW5kYXJkIGltYWdlIHR5cGVzOgotICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxIYXNoU2V0PFN0cmluZz4+IHNfYWxsb3dlZEltYWdlVVRJcyA9IHN0ZDo6aW5p
dGlhbGl6ZXJfbGlzdDxTdHJpbmc+IHsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNl
dDxTdHJpbmc+PiBzdXBwb3J0ZWREZWZhdWx0SW1hZ2VTb3VyY2VUeXBlcyA9IHN0ZDo6aW5pdGlh
bGl6ZXJfbGlzdDxTdHJpbmc+IHsKICAgICAgICAgImNvbS5jb21wdXNlcnZlLmdpZiIsCiAgICAg
ICAgICJjb20ubWljcm9zb2Z0LmJtcCIsCiAgICAgICAgICJjb20ubWljcm9zb2Z0LmN1ciIsCkBA
IC01MiwyNyArNTIsNDYgQEAgSGFzaFNldDxTdHJpbmc+JiBhbGxvd2VkSW1hZ2VVVElzKCkKICAg
ICAgICAgInB1YmxpYy5wbmciLAogICAgICAgICAicHVibGljLnRpZmYiLAogICAgIH07Ci0KICNp
Zm5kZWYgTkRFQlVHCi0gICAgLy8gQnV0IG1ha2Ugc3VyZSB0aGF0IGFsbCBvZiB0aGVtIGFyZSBy
ZWFsbHkgc3VwcG9ydGVkLgotICAgIHN0YXRpYyBib29sIGNoZWNrZWQgPSBmYWxzZTsKLSAgICBp
ZiAoIWNoZWNrZWQpIHsKLSAgICAgICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IHN5c3RlbUltYWdl
VVRJcyA9IGFkb3B0Q0YoQ0dJbWFnZVNvdXJjZUNvcHlUeXBlSWRlbnRpZmllcnMoKSk7Ci0gICAg
ICAgIENGSW5kZXggY291bnQgPSBDRkFycmF5R2V0Q291bnQoc3lzdGVtSW1hZ2VVVElzLmdldCgp
KTsKLSAgICAgICAgZm9yIChhdXRvJiBpbWFnZVVUSSA6IHNfYWxsb3dlZEltYWdlVVRJcy5nZXQo
KSkgewotICAgICAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBzdHJpbmcgPSBpbWFnZVVU
SS5jcmVhdGVDRlN0cmluZygpOwotICAgICAgICAgICAgQVNTRVJUKENGQXJyYXlDb250YWluc1Zh
bHVlKHN5c3RlbUltYWdlVVRJcy5nZXQoKSwgQ0ZSYW5nZU1ha2UoMCwgY291bnQpLCBzdHJpbmcu
Z2V0KCkpKTsKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7CisgICAgc3RkOjpj
YWxsX29uY2Uob25jZUZsYWcsIFtdIHsKKyAgICAgICAgLy8gQnV0IG1ha2Ugc3VyZSB0aGF0IGFs
bCBvZiB0aGVtIGFyZSByZWFsbHkgc3VwcG9ydGVkLgorICAgICAgICBSZXRhaW5QdHI8Q0ZBcnJh
eVJlZj4gc3lzdGVtSW1hZ2VTb3VyY2VUeXBlcyA9IGFkb3B0Q0YoQ0dJbWFnZVNvdXJjZUNvcHlU
eXBlSWRlbnRpZmllcnMoKSk7CisgICAgICAgIENGSW5kZXggY291bnQgPSBDRkFycmF5R2V0Q291
bnQoc3lzdGVtSW1hZ2VTb3VyY2VUeXBlcy5nZXQoKSk7CisgICAgICAgIGZvciAoYXV0byYgaW1h
Z2VTb3VyY2VUeXBlIDogc3VwcG9ydGVkRGVmYXVsdEltYWdlU291cmNlVHlwZXMuZ2V0KCkpIHsK
KyAgICAgICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gc3RyaW5nID0gaW1hZ2VTb3VyY2VU
eXBlLmNyZWF0ZUNGU3RyaW5nKCk7CisgICAgICAgICAgICBBU1NFUlQoQ0ZBcnJheUNvbnRhaW5z
VmFsdWUoc3lzdGVtSW1hZ2VTb3VyY2VUeXBlcy5nZXQoKSwgQ0ZSYW5nZU1ha2UoMCwgY291bnQp
LCBzdHJpbmcuZ2V0KCkpKTsKICAgICAgICAgfQotICAgICAgICBjaGVja2VkID0gdHJ1ZTsKLSAg
ICB9CisgICAgfSk7CiAjZW5kaWYKKyAgICByZXR1cm4gc3VwcG9ydGVkRGVmYXVsdEltYWdlU291
cmNlVHlwZXM7Cit9CisKK3N0YXRpYyBIYXNoU2V0PFN0cmluZz4mIGludGVybmFsU3VwcG9ydGVk
QWRkaXRpb25hbEltYWdlU291cmNlVHlwZXMoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxIYXNoU2V0PFN0cmluZz4+IHN1cHBvcnRlZEFkZGl0aW9uYWxJbWFnZVNvdXJjZVR5cGVzOwor
ICAgIHJldHVybiBzdXBwb3J0ZWRBZGRpdGlvbmFsSW1hZ2VTb3VyY2VUeXBlczsKK30KKworY29u
c3QgSGFzaFNldDxTdHJpbmc+JiBzdXBwb3J0ZWRBZGRpdGlvbmFsSW1hZ2VTb3VyY2VUeXBlcygp
Cit7CisgICAgcmV0dXJuIGludGVybmFsU3VwcG9ydGVkQWRkaXRpb25hbEltYWdlU291cmNlVHlw
ZXMoKTsKK30KKwordm9pZCBzZXRTdXBwb3J0ZWRBZGRpdGlvbmFsSW1hZ2VTb3VyY2VUeXBlcyhj
b25zdCBWZWN0b3I8U3RyaW5nPiYgaW1hZ2VTb3VyY2VUeXBlcykKK3sKKyAgICAvLyBXZSBhcmUg
c3VwcG9lZCB0byBzZXQgdGhlIHN1cHBvcnRlZEFkZGl0aW9uYWxJbWFnZVNvdXJjZVR5cGVzIG9u
bHkgb25jZSBldmVuCisgICAgLy8gaWYgbXVsdGlwbGUgV2ViUGFnZXMgYXJlIGNyZWF0ZWQuCisg
ICAgaWYgKCFpbnRlcm5hbFN1cHBvcnRlZEFkZGl0aW9uYWxJbWFnZVNvdXJjZVR5cGVzKCkuaXNF
bXB0eSgpIHx8IGltYWdlU291cmNlVHlwZXMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CiAK
LSAgICByZXR1cm4gc19hbGxvd2VkSW1hZ2VVVElzLmdldCgpOworICAgIGZvciAoY29uc3QgYXV0
byYgaW1hZ2VTb3VyY2VUeXBlIDogaW1hZ2VTb3VyY2VUeXBlcykKKyAgICAgICAgaW50ZXJuYWxT
dXBwb3J0ZWRBZGRpdGlvbmFsSW1hZ2VTb3VyY2VUeXBlcygpLmFkZChpbWFnZVNvdXJjZVR5cGUp
OwogfQogCi1ib29sIGlzQWxsb3dlZEltYWdlVVRJKGNvbnN0IFN0cmluZyYgaW1hZ2VVVEkpCiti
b29sIGlzU3VwcG9ydEltYWdlU291cmNlVHlwZShjb25zdCBTdHJpbmcmIGltYWdlU291cmNlVHlw
ZSkKIHsKLSAgICByZXR1cm4gIWltYWdlVVRJLmlzRW1wdHkoKSAmJiBhbGxvd2VkSW1hZ2VVVElz
KCkuY29udGFpbnMoaW1hZ2VVVEkpOworICAgIHJldHVybiAhaW1hZ2VTb3VyY2VUeXBlLmlzRW1w
dHkoKSAmJiAoc3VwcG9ydGVkRGVmYXVsdEltYWdlU291cmNlVHlwZXMoKS5jb250YWlucyhpbWFn
ZVNvdXJjZVR5cGUpIHx8IHN1cHBvcnRlZEFkZGl0aW9uYWxJbWFnZVNvdXJjZVR5cGVzKCkuY29u
dGFpbnMoaW1hZ2VTb3VyY2VUeXBlKSk7CiB9CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL1VUSVJlZ2lzdHJ5LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvVVRJUmVnaXN0cnkuaAkocmV2aXNpb24gMjM3MzA4
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvVVRJUmVnaXN0cnkuaAko
d29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LUhhc2hTZXQ8U3RyaW5nPiYgYWxsb3dlZEltYWdlVVRJcygpOwotYm9vbCBpc0FsbG93ZWRJbWFn
ZVVUSShjb25zdCBTdHJpbmcmKTsKK2NvbnN0IEhhc2hTZXQ8U3RyaW5nPiYgc3VwcG9ydGVkRGVm
YXVsdEltYWdlU291cmNlVHlwZXMoKTsKK2NvbnN0IEhhc2hTZXQ8U3RyaW5nPiYgc3VwcG9ydGVk
QWRkaXRpb25hbEltYWdlU291cmNlVHlwZXMoKTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgc2V0U3Vw
cG9ydGVkQWRkaXRpb25hbEltYWdlU291cmNlVHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mKTsK
K2Jvb2wgaXNTdXBwb3J0SW1hZ2VTb3VyY2VUeXBlKGNvbnN0IFN0cmluZyYpOwogCiB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQkocmV2aXNp
b24gMjM3MzA4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTI1NSw3ICsyNTUsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6Ondy
aXRlKGNvbnN0IFBhc3RlYm9hcmRJCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIEZJWE1FOiBX
aHkgY2FuIHdlIGFzc2VydCB0aGlzPyBJdCBkb2Vzbid0IHNlZW0gbGlrZSBpdCdzIGd1YXJhbnRl
ZWQuCi0gICAgQVNTRVJUKE1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkSW1hZ2VSZXNvdXJj
ZU1JTUVUeXBlKHBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZU1JTUVUeXBlKSk7CisgICAgQVNTRVJU
KE1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZShwYXN0ZWJvYXJkSW1h
Z2UucmVzb3VyY2VNSU1FVHlwZSkpOwogCiAgICAgYXV0byB0eXBlcyA9IHdyaXRhYmxlVHlwZXNG
b3JJbWFnZSgpOwogICAgIGlmIChwYXN0ZWJvYXJkSW1hZ2UuZGF0YUluV2ViQXJjaGl2ZUZvcm1h
dCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzczMDgpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUxIEBACisyMDE4LTEwLTIyICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGFuIFNQ
SSB0byBhbGxvdyBXZWJWaWV3IGNsaWVudHMgdG8gYWRkIGFkZGl0aW9uYWwgc3VwcG9ydGVkIGlt
YWdlIGZvcm1hdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE5MDQ1NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogUGxhdGZvcm0vbWFjL1N0cmluZ1V0aWxpdGllcy5oOgorICAgICAgICAqIFBsYXRmb3Jt
L21hYy9TdHJpbmdVdGlsaXRpZXMubW06CisgICAgICAgIChXZWJLaXQ6OndlYkNvcmVTdHJpbmdW
ZWN0b3JGcm9tTlNTdHJpbmdBcnJheSk6CisgICAgICAgIEEgaGVscGVyIGZ1bmN0aW9uIHdoaWNo
IGNvbnZlcnRzIGFuIE5TQXJyYXkgb2YgTlNTdHJpbmdzIHRvIGEgVmVjdG9yIG9mCisgICAgICAg
IFdURlN0cmluZy4KKworICAgICAgICAqIFNoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJz
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2Rl
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZGVj
b2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oOgorICAg
ICAgICBIYW5kbGUgZW5jb2RpbmcgYW5kIGRlY29kaW5nIHRoZSBBZGRpdGlvbmFsQWxsb3dlZElt
YWdlRm9ybWF0cyB3aGljaCB3aWxsCisgICAgICAgIGFsbG93IHRyYW5zZmVycmluZyBpdCBmcm9t
IHRoZSBVSSBwcm9jZXNzIHRvIHRoZSB3ZWIgcHJvY2Vzcy4KKworICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uaDoKKyAgICAgICAgKEFQSTo6UGFnZUNvbmZpZ3Vy
YXRpb246OnN1cHBvcnRlZEFkZGl0aW9uYWxJbWFnZVNvdXJjZVR5cGVzIGNvbnN0KToKKyAgICAg
ICAgKEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246OnNldFN1cHBvcnRlZEFkZGl0aW9uYWxJbWFnZVNv
dXJjZVR5cGVzKToKKyAgICAgICAgU3RvcmUgdGhlIEFkZGl0aW9uYWxBbGxvd2VkSW1hZ2VGb3Jt
YXRzIGluIHRoZSBBUElQYWdlQ29uZmlndXJhdGlvbgorICAgICAgICB3aGljaCBpcyB1c2VkIHdo
ZW4gY3JlYXRpbmcgdGhlIFdlYlBhZ2VQcm94eSBpbiB0aGUgVUlQb3JjZXNzLgorCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmll
dyBfaW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3
Q29uZmlndXJhdGlvbiBjb3B5V2l0aFpvbmU6XSk6CisgICAgICAgICgtW1dLV2ViVmlld0NvbmZp
Z3VyYXRpb24gX3N1cHBvcnRlZEFkZGl0aW9uYWxJbWFnZVNvdXJjZVR5cGVzXSk6CisgICAgICAg
ICgtW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX3NldFN1cHBvcnRlZEFkZGl0aW9uYWxJbWFnZVNv
dXJjZVR5cGVzOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29u
ZmlndXJhdGlvblByaXZhdGUuaDoKKyAgICAgICAgU2V0dGVyL0dldHRlciBmb3IgdGhlIGFkZGl0
aW9uYWxBbGxvd2VkSW1hZ2VGb3JtYXRzLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y3JlYXRpb25QYXJhbWV0
ZXJzKToKKyAgICAgICAgQ29weSB0aGUgYWRkaXRpb25hbEFsbG93ZWRJbWFnZUZvcm1hdHMgZnJv
bSBBUElQYWdlQ29uZmlndXJhdGlvbiB0byAKKyAgICAgICAgV2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVycy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgRGVs
ZXRlIHVuaW1wbGVtZW50ZWQgZnVuY3Rpb24uCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OldlYlBhZ2UpOgorICAg
ICAgICBDb3B5IHRoZSBhZGRpdGlvbmFsQWxsb3dlZEltYWdlRm9ybWF0cyBmcm9tIFdlYlBhZ2VD
cmVhdGlvblBhcmFtZXRlcnMgdG8KKyAgICAgICAgV2ViQ29yZS4KKwogMjAxOC0xMC0xOSAgU3Rl
cGhhbiBTemFibyAgPHN0ZXBoYW4uc3phYm9Ac29ueS5jb20+CiAKICAgICAgICAgW1dpbkNhaXJv
XSBTZWFyY2ggdGVybXMgYXJlIG5vdCBzYXZlZCBmb3IgPGlucHV0IHR5cGU9InNlYXJjaCI+Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL21hYy9TdHJpbmdVdGlsaXRpZXMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL21hYy9TdHJpbmdVdGlsaXRpZXMuaAkocmV2
aXNpb24gMjM3MzA4KQorKysgU291cmNlL1dlYktpdC9QbGF0Zm9ybS9tYWMvU3RyaW5nVXRpbGl0
aWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDggQEAgbmFtZXNwYWNlIFdlYktpdCB7
CiBOU1N0cmluZyAqbnNTdHJpbmdGcm9tV2ViQ29yZVN0cmluZyhjb25zdCBTdHJpbmcmKTsKIE5T
U3RyaW5nICpmb3JtYXR0ZWRQaG9uZU51bWJlclN0cmluZyhOU1N0cmluZyAqb3JpZ2luYWxQaG9u
ZU51bWJlcik7CiAKK1ZlY3RvcjxTdHJpbmc+IHdlYkNvcmVTdHJpbmdWZWN0b3JGcm9tTlNTdHJp
bmdBcnJheShOU0FycmF5PE5TU3RyaW5nICo+ICopOworCiAjZW5kaWYgLy8gZGVmaW5lZChfX09C
SkNfXykKIAogfQpJbmRleDogU291cmNlL1dlYktpdC9QbGF0Zm9ybS9tYWMvU3RyaW5nVXRpbGl0
aWVzLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vbWFjL1N0cmluZ1V0
aWxpdGllcy5tbQkocmV2aXNpb24gMjM3MzA4KQorKysgU291cmNlL1dlYktpdC9QbGF0Zm9ybS9t
YWMvU3RyaW5nVXRpbGl0aWVzLm1tCSh3b3JraW5nIGNvcHkpCkBAIC04Miw0ICs4MiwxNSBAQCBO
U1N0cmluZyAqZm9ybWF0dGVkUGhvbmVOdW1iZXJTdHJpbmcoTlNTCiAKICNlbmRpZiAvLyBFTkFC
TEUoVEVMRVBIT05FX05VTUJFUl9ERVRFQ1RJT04pICYmIFBMQVRGT1JNKE1BQykKIAorVmVjdG9y
PFN0cmluZz4gd2ViQ29yZVN0cmluZ1ZlY3RvckZyb21OU1N0cmluZ0FycmF5KE5TQXJyYXk8TlNT
dHJpbmcgKj4gKm5zU3RyaW5nQXJyYXkpCit7CisgICAgVmVjdG9yPFN0cmluZz4gc3RyaW5nVmVj
dG9yOworICAgIHN0cmluZ1ZlY3Rvci5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KFtuc1N0cmluZ0Fy
cmF5IGNvdW50XSk7CisKKyAgICBmb3IgKE5TU3RyaW5nICpuc1N0cmluZyBpbiBuc1N0cmluZ0Fy
cmF5KQorICAgICAgICBzdHJpbmdWZWN0b3IudW5jaGVja2VkQXBwZW5kKG5zU3RyaW5nKTsKKwor
ICAgIHJldHVybiBzdHJpbmdWZWN0b3I7Cit9CisKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCShyZXZpc2lvbiAyMzcz
MDgpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtOTYsNiArOTYsNyBAQCB2b2lkIFdlYlBhZ2VDcmVhdGlvblBh
cmFtZXRlcnM6OmVuY29kZShJCiAjZW5kaWYKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBlbmNv
ZGVyIDw8IHNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZDsKKyAgICBlbmNvZGVyIDw8IHN1cHBvcnRl
ZEFkZGl0aW9uYWxJbWFnZVNvdXJjZVR5cGVzOwogI2VuZGlmCiAgICAgZW5jb2RlciA8PCBhcHBs
ZU1haWxQYWdpbmF0aW9uUXVpcmtFbmFibGVkOwogICAgIGVuY29kZXIgPDwgYXBwbGVNYWlsTGlu
ZXNDbGFtcEVuYWJsZWQ7CkBAIC0yNjksNiArMjcwLDggQEAgc3RkOjpvcHRpb25hbDxXZWJQYWdl
Q3JlYXRpb25QYXJhbWV0ZXJzPgogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUocGFyYW1ldGVycy5zbWFydEluc2VydERlbGV0ZUVuYWJsZWQpKQogICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5z
dXBwb3J0ZWRBZGRpdGlvbmFsSW1hZ2VTb3VyY2VUeXBlcykpCisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAjZW5kaWYKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5h
cHBsZU1haWxQYWdpbmF0aW9uUXVpcmtFbmFibGVkKSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgJKHJldmlzaW9uIDIzNzMwOCkK
KysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaAkod29y
a2luZyBjb3B5KQpAQCAtMTUzLDYgKzE1Myw3IEBAIHN0cnVjdCBXZWJQYWdlQ3JlYXRpb25QYXJh
bWV0ZXJzIHsKICNlbmRpZgogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGJvb2wgc21hcnRJbnNl
cnREZWxldGVFbmFibGVkOworICAgIFZlY3RvcjxTdHJpbmc+IHN1cHBvcnRlZEFkZGl0aW9uYWxJ
bWFnZVNvdXJjZVR5cGVzOwogI2VuZGlmCiAgICAgYm9vbCBhcHBsZU1haWxQYWdpbmF0aW9uUXVp
cmtFbmFibGVkOwogICAgIGJvb2wgYXBwbGVNYWlsTGluZXNDbGFtcEVuYWJsZWQ7CkluZGV4OiBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDIzNzMwOCkK
KysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTYzNzEsNiArNjM3MSw3IEBAIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgV2ViUGFn
ZVByb3h5OjoKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHBhcmFtZXRlcnMuc21hcnRJbnNl
cnREZWxldGVFbmFibGVkID0gbV9pc1NtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZDsKKyAgICBwYXJh
bWV0ZXJzLnN1cHBvcnRlZEFkZGl0aW9uYWxJbWFnZVNvdXJjZVR5cGVzID0gbV9jb25maWd1cmF0
aW9uLT5zdXBwb3J0ZWRBZGRpdGlvbmFsSW1hZ2VTb3VyY2VUeXBlcygpOwogI2VuZGlmCiAgICAg
cGFyYW1ldGVycy5zaG91bGRTY2FsZVZpZXdUb0ZpdERvY3VtZW50ID0gbV9zaG91bGRTY2FsZVZp
ZXdUb0ZpdERvY3VtZW50OwogICAgIHBhcmFtZXRlcnMudXNlckludGVyZmFjZUxheW91dERpcmVj
dGlvbiA9IHBhZ2VDbGllbnQoKS51c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKCk7CkluZGV4
OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkocmV2aXNpb24gMjM3MzA4KQor
KysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHdvcmtpbmcgY29weSkK
QEAgLTEzNTcsMTAgKzEzNTcsNiBAQCBwdWJsaWM6CiAKICAgICBXZWJDb3JlOjpJbnRSZWN0IHN5
bmNSb290Vmlld1RvU2NyZWVuKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHZpZXdSZWN0KTsKIAot
I2lmIFBMQVRGT1JNKENPQ09BKQotICAgIFZlY3RvcjxTdHJpbmc+IG1lZGlhTUlNRVR5cGVzKCk7
Ci0jZW5kaWYKLQogI2lmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQogICAgIHZvaWQgZGlkU2Vs
ZWN0T3B0aW9uKGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgZGlkQ2xvc2VTdWdnZXN0aW9ucygp
OwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9u
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25m
aWd1cmF0aW9uLmgJKHJldmlzaW9uIDIzNzMwOCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTAsNiArMTEw
LDExIEBAIHB1YmxpYzoKICAgICBjb25zdCBXVEY6OlN0cmluZyYgb3ZlcnJpZGVDb250ZW50U2Vj
dXJpdHlQb2xpY3koKSBjb25zdCB7IHJldHVybiBtX292ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9s
aWN5OyB9CiAgICAgdm9pZCBzZXRPdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeShjb25zdCBX
VEY6OlN0cmluZyYgb3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3kpIHsgbV9vdmVycmlkZUNv
bnRlbnRTZWN1cml0eVBvbGljeSA9IG92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5OyB9CiAK
KyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBjb25zdCBXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4m
IHN1cHBvcnRlZEFkZGl0aW9uYWxJbWFnZVNvdXJjZVR5cGVzKCkgY29uc3QgeyByZXR1cm4gbV9z
dXBwb3J0ZWRBZGRpdGlvbmFsSW1hZ2VTb3VyY2VUeXBlczsgfQorICAgIHZvaWQgc2V0U3VwcG9y
dGVkQWRkaXRpb25hbEltYWdlU291cmNlVHlwZXMoV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+JiYg
c3VwcG9ydGVkQWRkaXRpb25hbEltYWdlU291cmNlVHlwZXMpIHsgbV9zdXBwb3J0ZWRBZGRpdGlv
bmFsSW1hZ2VTb3VyY2VUeXBlcyA9IFdURk1vdmUoc3VwcG9ydGVkQWRkaXRpb25hbEltYWdlU291
cmNlVHlwZXMpOyB9CisjZW5kaWYKKwogI2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkK
ICAgICBBcHBsaWNhdGlvbk1hbmlmZXN0KiBhcHBsaWNhdGlvbk1hbmlmZXN0KCkgY29uc3Q7CiAg
ICAgdm9pZCBzZXRBcHBsaWNhdGlvbk1hbmlmZXN0KEFwcGxpY2F0aW9uTWFuaWZlc3QqKTsKQEAg
LTE0Niw2ICsxNTEsMTAgQEAgcHJpdmF0ZToKIAogICAgIFdURjo6U3RyaW5nIG1fb3ZlcnJpZGVD
b250ZW50U2VjdXJpdHlQb2xpY3k7CiAKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBXVEY6OlZl
Y3RvcjxXVEY6OlN0cmluZz4gbV9zdXBwb3J0ZWRBZGRpdGlvbmFsSW1hZ2VTb3VyY2VUeXBlczsK
KyNlbmRpZgorCiAjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQogICAgIFJlZlB0cjxB
cHBsaWNhdGlvbk1hbmlmZXN0PiBtX2FwcGxpY2F0aW9uTWFuaWZlc3Q7CiAjZW5kaWYKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQkocmV2
aXNpb24gMjM3MzA4KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtNDYsNiArNDYsNyBAQAogI2ltcG9ydCAiUmVtb3Rl
TGF5ZXJUcmVlVHJhbnNhY3Rpb24uaCIKICNpbXBvcnQgIlJlbW90ZU9iamVjdFJlZ2lzdHJ5Lmgi
CiAjaW1wb3J0ICJSZW1vdGVPYmplY3RSZWdpc3RyeU1lc3NhZ2VzLmgiCisjaW1wb3J0ICJTdHJp
bmdVdGlsaXRpZXMuaCIKICNpbXBvcnQgIlVJRGVsZWdhdGUuaCIKICNpbXBvcnQgIlVzZXJNZWRp
YVByb2Nlc3NNYW5hZ2VyLmgiCiAjaW1wb3J0ICJWZXJzaW9uQ2hlY2tzLmgiCkBAIC01NjcsNiAr
NTY4LDggQEAgLSAodm9pZClfaW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uOihXSwogICAgICAg
ICBpZiAoZ3JvdXBJZGVudGlmaWVyLmxlbmd0aCkKICAgICAgICAgICAgIHBhZ2VDb25maWd1cmF0
aW9uLT5zZXRQYWdlR3JvdXAoV2ViS2l0OjpXZWJQYWdlR3JvdXA6OmNyZWF0ZShjb25maWd1cmF0
aW9uLl9ncm91cElkZW50aWZpZXIpLnB0cigpKTsKICAgICB9CisgICAgCisgICAgcGFnZUNvbmZp
Z3VyYXRpb24tPnNldFN1cHBvcnRlZEFkZGl0aW9uYWxJbWFnZVNvdXJjZVR5cGVzKFdlYktpdDo6
d2ViQ29yZVN0cmluZ1ZlY3RvckZyb21OU1N0cmluZ0FycmF5KFtfY29uZmlndXJhdGlvbiBfc3Vw
cG9ydGVkQWRkaXRpb25hbEltYWdlU291cmNlVHlwZXNdKSk7CiAKICAgICBwYWdlQ29uZmlndXJh
dGlvbi0+cHJlZmVyZW5jZVZhbHVlcygpLnNldChXZWJLaXQ6OldlYlByZWZlcmVuY2VzS2V5Ojpz
dXBwcmVzc2VzSW5jcmVtZW50YWxSZW5kZXJpbmdLZXkoKSwgV2ViS2l0OjpXZWJQcmVmZXJlbmNl
c1N0b3JlOjpWYWx1ZSghIVtfY29uZmlndXJhdGlvbiBzdXBwcmVzc2VzSW5jcmVtZW50YWxSZW5k
ZXJpbmddKSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXdDb25maWd1cmF0aW9uLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1tCShyZXZpc2lvbiAyMzczMDgp
CisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJh
dGlvbi5tbQkod29ya2luZyBjb3B5KQpAQCAtMTYxLDYgKzE2MSw3IEBAIHN0YXRpYyBfV0tEcmFn
TGlmdERlbGF5IHRvRHJhZ0xpZnREZWxheSgKICAgICBCT09MIF9kcmF3c0JhY2tncm91bmQ7CiAK
ICAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IF9tZWRpYUNvbnRlbnRUeXBlc1JlcXVpcmluZ0hhcmR3
YXJlU3VwcG9ydDsKKyAgICBSZXRhaW5QdHI8TlNBcnJheTxOU1N0cmluZyAqPj4gX3N1cHBvcnRl
ZEFkZGl0aW9uYWxJbWFnZVNvdXJjZVR5cGVzOwogfQogCiAtIChpbnN0YW5jZXR5cGUpaW5pdApA
QCAtMzk0LDYgKzM5NSw3IEBAIC0gKGlkKWNvcHlXaXRoWm9uZTooTlNab25lICopem9uZQogICAg
IGNvbmZpZ3VyYXRpb24tPl9uZWVkc1N0b3JhZ2VBY2Nlc3NGcm9tRmlsZVVSTHNRdWlyayA9IHNl
bGYtPl9uZWVkc1N0b3JhZ2VBY2Nlc3NGcm9tRmlsZVVSTHNRdWlyazsKIAogICAgIGNvbmZpZ3Vy
YXRpb24tPl9tZWRpYUNvbnRlbnRUeXBlc1JlcXVpcmluZ0hhcmR3YXJlU3VwcG9ydCA9IGFkb3B0
TlMoW3NlbGYuX21lZGlhQ29udGVudFR5cGVzUmVxdWlyaW5nSGFyZHdhcmVTdXBwb3J0IGNvcHlX
aXRoWm9uZTp6b25lXSk7CisgICAgY29uZmlndXJhdGlvbi0+X3N1cHBvcnRlZEFkZGl0aW9uYWxJ
bWFnZVNvdXJjZVR5cGVzID0gYWRvcHROUyhbc2VsZi0+X3N1cHBvcnRlZEFkZGl0aW9uYWxJbWFn
ZVNvdXJjZVR5cGVzIGNvcHlXaXRoWm9uZTp6b25lXSk7CiAgICAgY29uZmlndXJhdGlvbi0+X2xl
Z2FjeUVuY3J5cHRlZE1lZGlhQVBJRW5hYmxlZCA9IHNlbGYtPl9sZWdhY3lFbmNyeXB0ZWRNZWRp
YUFQSUVuYWJsZWQ7CiAgICAgY29uZmlndXJhdGlvbi0+X2FsbG93TWVkaWFDb250ZW50VHlwZXNS
ZXF1aXJpbmdIYXJkd2FyZVN1cHBvcnRBc0ZhbGxiYWNrID0gc2VsZi0+X2FsbG93TWVkaWFDb250
ZW50VHlwZXNSZXF1aXJpbmdIYXJkd2FyZVN1cHBvcnRBc0ZhbGxiYWNrOwogCkBAIC05OTAsNiAr
OTkyLDE2IEBAIC0gKHZvaWQpX3NldE1lZGlhQ29udGVudFR5cGVzUmVxdWlyaW5nSGEKICAgICBf
bWVkaWFDb250ZW50VHlwZXNSZXF1aXJpbmdIYXJkd2FyZVN1cHBvcnQgPSBhZG9wdE5TKFttZWRp
YUNvbnRlbnRUeXBlc1JlcXVpcmluZ0hhcmR3YXJlU3VwcG9ydCBjb3B5XSk7CiB9CiAKKy0gKE5T
QXJyYXk8TlNTdHJpbmcgKj4gKilfc3VwcG9ydGVkQWRkaXRpb25hbEltYWdlU291cmNlVHlwZXMK
K3sKKyAgICByZXR1cm4gX3N1cHBvcnRlZEFkZGl0aW9uYWxJbWFnZVNvdXJjZVR5cGVzLmdldCgp
OworfQorCistICh2b2lkKV9zZXRTdXBwb3J0ZWRBZGRpdGlvbmFsSW1hZ2VTb3VyY2VUeXBlczoo
TlNBcnJheTxOU1N0cmluZyAqPiAqKXN1cHBvcnRlZEFkZGl0aW9uYWxJbWFnZVNvdXJjZVR5cGVz
Cit7CisgICAgX3N1cHBvcnRlZEFkZGl0aW9uYWxJbWFnZVNvdXJjZVR5cGVzID0gYWRvcHROUyhb
c3VwcG9ydGVkQWRkaXRpb25hbEltYWdlU291cmNlVHlwZXMgY29weV0pOworfQorCiAtICh2b2lk
KV9zZXRMZWdhY3lFbmNyeXB0ZWRNZWRpYUFQSUVuYWJsZWQ6KEJPT0wpZW5hYmxlZAogewogICAg
IF9sZWdhY3lFbmNyeXB0ZWRNZWRpYUFQSUVuYWJsZWQgPSBlbmFibGVkOwpJbmRleDogU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmgJKHJldmlzaW9uIDIzNzMwOCkKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDEsNiArMTAxLDcgQEAgdHlwZWRlZiBOU19FTlVNKE5TVUlu
dGVnZXIsIF9XS0RyYWdMaWZ0RAogQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0TWVk
aWFDb250ZW50VHlwZXNSZXF1aXJpbmdIYXJkd2FyZVN1cHBvcnQ6KSBOU1N0cmluZyAqX21lZGlh
Q29udGVudFR5cGVzUmVxdWlyaW5nSGFyZHdhcmVTdXBwb3J0IFdLX0FQSV9BVkFJTEFCTEUobWFj
b3N4KDEwLjEzKSwgaW9zKDExLjApKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3Nl
dExlZ2FjeUVuY3J5cHRlZE1lZGlhQVBJRW5hYmxlZDopIEJPT0wgX2xlZ2FjeUVuY3J5cHRlZE1l
ZGlhQVBJRW5hYmxlZCBXS19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMyksIGlvcygxMS4wKSk7
CiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRBbGxvd01lZGlhQ29udGVudFR5cGVz
UmVxdWlyaW5nSGFyZHdhcmVTdXBwb3J0QXNGYWxsYmFjazopIEJPT0wgX2FsbG93TWVkaWFDb250
ZW50VHlwZXNSZXF1aXJpbmdIYXJkd2FyZVN1cHBvcnRBc0ZhbGxiYWNrIFdLX0FQSV9BVkFJTEFC
TEUobWFjb3N4KDEwLjEzKSwgaW9zKDExLjApKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5
LCBzZXR0ZXI9X3NldFN1cHBvcnRlZEFkZGl0aW9uYWxJbWFnZVNvdXJjZVR5cGVzOikgTlNBcnJh
eTxOU1N0cmluZyAqPiAqX3N1cHBvcnRlZEFkZGl0aW9uYWxJbWFnZVNvdXJjZVR5cGVzIFdLX0FQ
SV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogCiBAZW5k
CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
CShyZXZpc2lvbiAyMzczMDgpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQ2LDYgKzI0Niw3IEBACiAjaW5jbHVkZSAi
VmlkZW9GdWxsc2NyZWVuTWFuYWdlci5oIgogI2luY2x1ZGUgIldLU3RyaW5nQ0YuaCIKICNpbmNs
dWRlIDxXZWJDb3JlL0xlZ2FjeVdlYkFyY2hpdmUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1VUSVJl
Z2lzdHJ5Lmg+CiAjaW5jbHVkZSA8d3RmL01hY2hTZW5kUmlnaHQuaD4KICNlbmRpZgogCkBAIC01
OTIsNiArNTkzLDcgQEAgV2ViUGFnZTo6V2ViUGFnZSh1aW50NjRfdCBwYWdlSUQsIFdlYlBhZwog
I2lmIFBMQVRGT1JNKENPQ09BKQogICAgIG1fcGFnZS0+c2V0dGluZ3MoKS5zZXRDb250ZW50RGlz
cG9zaXRpb25BdHRhY2htZW50U2FuZGJveEVuYWJsZWQodHJ1ZSk7CiAgICAgc2V0U21hcnRJbnNl
cnREZWxldGVFbmFibGVkKHBhcmFtZXRlcnMuc21hcnRJbnNlcnREZWxldGVFbmFibGVkKTsKKyAg
ICBXZWJDb3JlOjpzZXRTdXBwb3J0ZWRBZGRpdGlvbmFsSW1hZ2VTb3VyY2VUeXBlcyhwYXJhbWV0
ZXJzLnN1cHBvcnRlZEFkZGl0aW9uYWxJbWFnZVNvdXJjZVR5cGVzKTsKICNlbmRpZgogCiAjaWYg
RU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwko
cmV2aXNpb24gMjM3MzM4KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTgtMTAtMjIgIFNhaWQgQWJvdS1IYWxs
YXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgYW4gU1BJIHRvIGFs
bG93IFdlYlZpZXcgY2xpZW50cyB0byBhZGQgYWRkaXRpb25hbCBzdXBwb3J0ZWQgaW1hZ2UgZm9y
bWF0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkw
NDU0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBN
aXNjL1dlYk5TUGFzdGVib2FyZEV4dHJhcy5tbToKKyAgICAgICAgKC1bTlNQYXN0ZWJvYXJkIF93
ZWJfd3JpdGVQcm9taXNlZFJURkRGcm9tQXJjaGl2ZTpjb250YWluc0ltYWdlOl0pOgorICAgICAg
ICBSZXBsYWNlIGlzU3VwcG9ydGVkSW1hZ2VSZXNvdXJjZU1JTUVUeXBlKCkgYnkgaXNTdXBwb3J0
ZWRJbWFnZU1JTUVUeXBlKCkKKyAgICAgICAgYmVjYXVzZSB0aGV5IHdlcmUgaWRlbnRpY2FsLgor
CisgICAgICAgICogV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW06CisgICAgICAgICgr
W1dlYkhUTUxSZXByZXNlbnRhdGlvbiBzdXBwb3J0ZWRNZWRpYU1JTUVUeXBlc10pOgorICAgICAg
ICAoK1tXZWJIVE1MUmVwcmVzZW50YXRpb24gc3VwcG9ydGVkTm9uSW1hZ2VNSU1FVHlwZXNdKToK
KyAgICAgICAgKCtbV2ViSFRNTFJlcHJlc2VudGF0aW9uIHN1cHBvcnRlZEltYWdlTUlNRVR5cGVz
XSk6CisgICAgICAgICgrW1dlYkhUTUxSZXByZXNlbnRhdGlvbiB1bnN1cHBvcnRlZFRleHRNSU1F
VHlwZXNdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgICgrW1dlYlZp
ZXcgX3VucmVnaXN0ZXJWaWV3Q2xhc3NBbmRSZXByZXNlbnRhdGlvbkNsYXNzRm9yTUlNRVR5cGU6
XSk6CisgICAgICAgICgrW1dlYlZpZXcgX3JlZ2lzdGVyVmlld0NsYXNzOnJlcHJlc2VudGF0aW9u
Q2xhc3M6Zm9yVVJMU2NoZW1lOl0pOgorICAgICAgICAoK1tXZWJWaWV3IHJlZ2lzdGVyVmlld0Ns
YXNzOnJlcHJlc2VudGF0aW9uQ2xhc3M6Zm9yTUlNRVR5cGU6XSk6CisKIDIwMTgtMTAtMTggIEFs
ZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAgU3dpdGNoIGZyb20g
UExBVEZPUk0oSU9TKSB0byBQTEFURk9STShJT1NfRkFNSUxZKQpJbmRleDogU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvTWlzYy9XZWJOU1Bhc3RlYm9hcmRFeHRyYXMubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJOU1Bhc3RlYm9hcmRFeHRyYXMubW0JKHJl
dmlzaW9uIDIzNzMwOCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViTlNQYXN0
ZWJvYXJkRXh0cmFzLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yMTQsMTMgKzIxNCwxMyBAQCAtICh2
b2lkKV93ZWJfd3JpdGVQcm9taXNlZFJURkRGcm9tQXJjaGl2CiAgICAgaWYgKGNvbnRhaW5zSW1h
Z2UgJiYgW3N1YnJlc291cmNlcyBjb3VudF0gPiAwKSB7CiAgICAgICAgIFdlYlJlc291cmNlICpz
dWJyZXNvdXJjZSA9IFtzdWJyZXNvdXJjZXMgb2JqZWN0QXRJbmRleDowXTsKICAgICAgICAgTlNT
dHJpbmcgKnN1YnJlc291cmNlTUlNRVR5cGUgPSBbc3VicmVzb3VyY2UgTUlNRVR5cGVdOwotICAg
ICAgICBpZiAoTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRJbWFnZVJlc291cmNlTUlNRVR5
cGUoc3VicmVzb3VyY2VNSU1FVHlwZSkgfHwgTUlNRVR5cGVSZWdpc3RyeTo6aXNQREZPclBvc3RT
Y3JpcHRNSU1FVHlwZShzdWJyZXNvdXJjZU1JTUVUeXBlKSkKKyAgICAgICAgaWYgKE1JTUVUeXBl
UmVnaXN0cnk6OmlzU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZShzdWJyZXNvdXJjZU1JTUVUeXBlKSB8
fCBNSU1FVHlwZVJlZ2lzdHJ5Ojppc1BERk9yUG9zdFNjcmlwdE1JTUVUeXBlKHN1YnJlc291cmNl
TUlNRVR5cGUpKQogICAgICAgICAgICAgcmVzb3VyY2UgPSBzdWJyZXNvdXJjZTsKICAgICB9CiAg
ICAgQVNTRVJUKHJlc291cmNlICE9IG5pbCk7CiAgICAgCi0gICAgQVNTRVJUKCFjb250YWluc0lt
YWdlIHx8IE1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkSW1hZ2VSZXNvdXJjZU1JTUVUeXBl
KFtyZXNvdXJjZSBNSU1FVHlwZV0pIHx8IE1JTUVUeXBlUmVnaXN0cnk6OmlzUERGT3JQb3N0U2Ny
aXB0TUlNRVR5cGUoW3Jlc291cmNlIE1JTUVUeXBlXSkpOwotICAgIGlmICghY29udGFpbnNJbWFn
ZSB8fCBNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZEltYWdlUmVzb3VyY2VNSU1FVHlwZShb
cmVzb3VyY2UgTUlNRVR5cGVdKSB8fCBNSU1FVHlwZVJlZ2lzdHJ5Ojppc1BERk9yUG9zdFNjcmlw
dE1JTUVUeXBlKFtyZXNvdXJjZSBNSU1FVHlwZV0pKQorICAgIEFTU0VSVCghY29udGFpbnNJbWFn
ZSB8fCBNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZEltYWdlTUlNRVR5cGUoW3Jlc291cmNl
IE1JTUVUeXBlXSkgfHwgTUlNRVR5cGVSZWdpc3RyeTo6aXNQREZPclBvc3RTY3JpcHRNSU1FVHlw
ZShbcmVzb3VyY2UgTUlNRVR5cGVdKSk7CisgICAgaWYgKCFjb250YWluc0ltYWdlIHx8IE1JTUVU
eXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZShbcmVzb3VyY2UgTUlNRVR5cGVd
KSB8fCBNSU1FVHlwZVJlZ2lzdHJ5Ojppc1BERk9yUG9zdFNjcmlwdE1JTUVUeXBlKFtyZXNvdXJj
ZSBNSU1FVHlwZV0pKQogICAgICAgICBbc2VsZiBfd2ViX3dyaXRlRmlsZVdyYXBwZXJBc1JURkRB
dHRhY2htZW50OltyZXNvdXJjZSBfZmlsZVdyYXBwZXJSZXByZXNlbnRhdGlvbl1dOwogICAgIAog
fQpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50
YXRpb24ubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJIVE1MUmVwcmVzZW50YXRpb24ubW0JKHJldmlzaW9uIDIzNzMwOCkKKysrIFNvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0xMDQsMjUgKzEwNCwyNSBAQCArIChOU0FycmF5ICopc3VwcG9ydGVkTUlNRVR5cGVz
CiAKICsgKE5TQXJyYXkgKilzdXBwb3J0ZWRNZWRpYU1JTUVUeXBlcwogewotICAgIHN0YXRpYyBO
U0FycmF5ICpzdGF0aWNTdXBwb3J0ZWRNZWRpYU1JTUVUeXBlcyA9IG5ld0FycmF5V2l0aFN0cmlu
Z3MoTUlNRVR5cGVSZWdpc3RyeTo6Z2V0U3VwcG9ydGVkTWVkaWFNSU1FVHlwZXMoKSkubGVha1Jl
ZigpOworICAgIHN0YXRpYyBOU0FycmF5ICpzdGF0aWNTdXBwb3J0ZWRNZWRpYU1JTUVUeXBlcyA9
IG5ld0FycmF5V2l0aFN0cmluZ3MoTUlNRVR5cGVSZWdpc3RyeTo6c3VwcG9ydGVkTWVkaWFNSU1F
VHlwZXMoKSkubGVha1JlZigpOwogICAgIHJldHVybiBzdGF0aWNTdXBwb3J0ZWRNZWRpYU1JTUVU
eXBlczsKIH0KIAogKyAoTlNBcnJheSAqKXN1cHBvcnRlZE5vbkltYWdlTUlNRVR5cGVzCiB7Ci0g
ICAgc3RhdGljIE5TQXJyYXkgKnN0YXRpY1N1cHBvcnRlZE5vbkltYWdlTUlNRVR5cGVzID0gbmV3
QXJyYXlXaXRoU3RyaW5ncyhNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRTdXBwb3J0ZWROb25JbWFnZU1J
TUVUeXBlcygpKS5sZWFrUmVmKCk7CisgICAgc3RhdGljIE5TQXJyYXkgKnN0YXRpY1N1cHBvcnRl
ZE5vbkltYWdlTUlNRVR5cGVzID0gbmV3QXJyYXlXaXRoU3RyaW5ncyhNSU1FVHlwZVJlZ2lzdHJ5
OjpzdXBwb3J0ZWROb25JbWFnZU1JTUVUeXBlcygpKS5sZWFrUmVmKCk7CiAgICAgcmV0dXJuIHN0
YXRpY1N1cHBvcnRlZE5vbkltYWdlTUlNRVR5cGVzOwogfQogCiArIChOU0FycmF5ICopc3VwcG9y
dGVkSW1hZ2VNSU1FVHlwZXMKIHsKLSAgICBzdGF0aWMgTlNBcnJheSAqc3RhdGljU3VwcG9ydGVk
SW1hZ2VNSU1FVHlwZXMgPSBuZXdBcnJheVdpdGhTdHJpbmdzKE1JTUVUeXBlUmVnaXN0cnk6Omdl
dFN1cHBvcnRlZEltYWdlTUlNRVR5cGVzKCkpLmxlYWtSZWYoKTsKKyAgICBzdGF0aWMgTlNBcnJh
eSAqc3RhdGljU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXMgPSBuZXdBcnJheVdpdGhTdHJpbmdzKE1J
TUVUeXBlUmVnaXN0cnk6OnN1cHBvcnRlZEltYWdlTUlNRVR5cGVzKCkpLmxlYWtSZWYoKTsKICAg
ICByZXR1cm4gc3RhdGljU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXM7CiB9CiAKICsgKE5TQXJyYXkg
Kil1bnN1cHBvcnRlZFRleHRNSU1FVHlwZXMKIHsKLSAgICBzdGF0aWMgTlNBcnJheSAqc3RhdGlj
VW5zdXBwb3J0ZWRUZXh0TUlNRVR5cGVzID0gbmV3QXJyYXlXaXRoU3RyaW5ncyhNSU1FVHlwZVJl
Z2lzdHJ5OjpnZXRVbnN1cHBvcnRlZFRleHRNSU1FVHlwZXMoKSkubGVha1JlZigpOworICAgIHN0
YXRpYyBOU0FycmF5ICpzdGF0aWNVbnN1cHBvcnRlZFRleHRNSU1FVHlwZXMgPSBuZXdBcnJheVdp
dGhTdHJpbmdzKE1JTUVUeXBlUmVnaXN0cnk6OnVuc3VwcG9ydGVkVGV4dE1JTUVUeXBlcygpKS5s
ZWFrUmVmKCk7CiAgICAgcmV0dXJuIHN0YXRpY1Vuc3VwcG9ydGVkVGV4dE1JTUVUeXBlczsKIH0K
IApJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQkocmV2
aXNpb24gMjM3MzA4KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNDIwLDcgKzM0MjAsNyBAQCArICh2b2lkKV91bnJlZ2lz
dGVyVmlld0NsYXNzQW5kUmVwcmVzZW50CiAgICAgLy8gRklYTUU6IFdlIGFsc28gbmVlZCB0byBt
YWludGFpbiBNSU1FVHlwZSByZWdpc3RyYXRpb25zICh3aGljaCBjYW4gYmUgZHluYW1pY2FsbHkg
Y2hhbmdlZCkKICAgICAvLyBpbiB0aGUgV2ViQ29yZSBNSU1FVHlwZSByZWdpc3RyeS4gIEZvciBu
b3cgd2UncmUgZG9pbmcgdGhpcyBpbiBhIHNhZmUsIGxpbWl0ZWQgbWFubmVyCiAgICAgLy8gdG8g
Zml4IDxyZGFyOi8vcHJvYmxlbS81MzcyOTg5PiAtIGEgZnV0dXJlIHJldmFtcGluZyBvZiB0aGUg
ZW50aXJlIHN5c3RlbSBpcyBuZWNjZXNhcnkgZm9yIGZ1dHVyZSByb2J1c3RuZXNzCi0gICAgTUlN
RVR5cGVSZWdpc3RyeTo6Z2V0U3VwcG9ydGVkTm9uSW1hZ2VNSU1FVHlwZXMoKS5yZW1vdmUoTUlN
RVR5cGUpOworICAgIE1JTUVUeXBlUmVnaXN0cnk6OnN1cHBvcnRlZE5vbkltYWdlTUlNRVR5cGVz
KCkucmVtb3ZlKE1JTUVUeXBlKTsKIH0KIAogKyAodm9pZClfcmVnaXN0ZXJWaWV3Q2xhc3M6KENs
YXNzKXZpZXdDbGFzcyByZXByZXNlbnRhdGlvbkNsYXNzOihDbGFzcylyZXByZXNlbnRhdGlvbkNs
YXNzIGZvclVSTFNjaGVtZTooTlNTdHJpbmcgKilVUkxTY2hlbWUKQEAgLTM0MzIsNyArMzQzMiw3
IEBAICsgKHZvaWQpX3JlZ2lzdGVyVmlld0NsYXNzOihDbGFzcyl2aWV3Q2wKICAgICAvLyBpbiB0
aGUgV2ViQ29yZSBNSU1FVHlwZSByZWdpc3RyeS4gIEZvciBub3cgd2UncmUgZG9pbmcgdGhpcyBp
biBhIHNhZmUsIGxpbWl0ZWQgbWFubmVyCiAgICAgLy8gdG8gZml4IDxyZGFyOi8vcHJvYmxlbS81
MzcyOTg5PiAtIGEgZnV0dXJlIHJldmFtcGluZyBvZiB0aGUgZW50aXJlIHN5c3RlbSBpcyBuZWNj
ZXNhcnkgZm9yIGZ1dHVyZSByb2J1c3RuZXNzCiAgICAgaWYgKFt2aWV3Q2xhc3MgY2xhc3NdID09
IFtXZWJIVE1MVmlldyBjbGFzc10pCi0gICAgICAgIE1JTUVUeXBlUmVnaXN0cnk6OmdldFN1cHBv
cnRlZE5vbkltYWdlTUlNRVR5cGVzKCkuYWRkKE1JTUVUeXBlKTsKKyAgICAgICAgTUlNRVR5cGVS
ZWdpc3RyeTo6c3VwcG9ydGVkTm9uSW1hZ2VNSU1FVHlwZXMoKS5hZGQoTUlNRVR5cGUpOwogICAg
IAogICAgIC8vIFRoaXMgaXMgdXNlZCB0byBtYWtlIF9yZXByZXNlbnRhdGlvbkV4aXN0c0ZvclVS
TFNjaGVtZSBmYXN0ZXIuCiAgICAgLy8gV2l0aG91dCB0aGlzIHNldCwgd2UnZCBoYXZlIHRvIGNy
ZWF0ZSB0aGUgTUlNRSB0eXBlIGVhY2ggdGltZS4KQEAgLTY5OTcsNyArNjk5Nyw3IEBAICsgKHZv
aWQpcmVnaXN0ZXJWaWV3Q2xhc3M6KENsYXNzKXZpZXdDbGEKICAgICAvLyBpbiB0aGUgV2ViQ29y
ZSBNSU1FVHlwZSByZWdpc3RyeS4gIEZvciBub3cgd2UncmUgZG9pbmcgdGhpcyBpbiBhIHNhZmUs
IGxpbWl0ZWQgbWFubmVyCiAgICAgLy8gdG8gZml4IDxyZGFyOi8vcHJvYmxlbS81MzcyOTg5PiAt
IGEgZnV0dXJlIHJldmFtcGluZyBvZiB0aGUgZW50aXJlIHN5c3RlbSBpcyBuZWNjZXNhcnkgZm9y
IGZ1dHVyZSByb2J1c3RuZXNzCiAgICAgaWYgKFt2aWV3Q2xhc3MgY2xhc3NdID09IFtXZWJIVE1M
VmlldyBjbGFzc10pCi0gICAgICAgIE1JTUVUeXBlUmVnaXN0cnk6OmdldFN1cHBvcnRlZE5vbklt
YWdlTUlNRVR5cGVzKCkuYWRkKE1JTUVUeXBlKTsKKyAgICAgICAgTUlNRVR5cGVSZWdpc3RyeTo6
c3VwcG9ydGVkTm9uSW1hZ2VNSU1FVHlwZXMoKS5hZGQoTUlNRVR5cGUpOwogfQogCiAtICh2b2lk
KXNldEdyb3VwTmFtZTooTlNTdHJpbmcgKilncm91cE5hbWUKSW5kZXg6IFRvb2xzL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzNzMyOCkKKysrIFRv
b2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDE4LTEwLTIy
ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAg
QWRkIGFuIFNQSSB0byBhbGxvdyBXZWJWaWV3IGNsaWVudHMgdG8gYWRkIGFkZGl0aW9uYWwgc3Vw
cG9ydGVkIGltYWdlIGZvcm1hdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE5MDQ1NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFRlc3Qgb3BlbmluZyBhIFRHQSBpbWFnZSBpbiBXZWJWaWV3IHdoaWNoIGlz
IG5vdCBhbGxvd2VkIGJ5IGRlZmF1bHQuIFRoZQorICAgICAgICBUR0EgZm9ybWF0IHdpbGwgYmUg
YWxsb3dlZCB0aHJvdWdoIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24uCisKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hLzEwMHgxMDAtcmVkLnRnYTogQWRk
ZWQuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS80MDB4NDAwLWdy
ZWVuLnBuZzogQWRkZWQuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9TdXBwb3J0ZWRBZGRpdGlvbmFsSW1hZ2VTb3VyY2VUeXBlcy5tbTogQWRkZWQuCisgICAgICAg
IChydW5UZXN0KToKKyAgICAgICAgKFRFU1QpOgorCiAyMDE4LTEwLTIyICBXZW5zb24gSHNpZWgg
IDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIFtEYXRhbGlzdF0gZmFz
dC9mb3Jtcy9kYXRhbGlzdC9kYXRhbGlzdC1zaG93LWhpZGUuaHRtbCBmYWlscwpJbmRleDogVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDIzNzMwOCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkp
CkBAIC0yNDEsNyArMjQxLDEwIEBACiAJCTUzNjc3MDM2MUNDODFCNjEwMEQ0MjVCMSAvKiBXZWJT
Y3JpcHRPYmplY3REZXNjcmlwdGlvbi5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzNjc3MDM1MUNDODEyRjkwMEQ0MjVCMSAvKiBXZWJT
Y3JpcHRPYmplY3REZXNjcmlwdGlvbi5odG1sICovOyB9OwogCQk1M0VDMjU0MTFFOTZGRDg3MDAw
ODMxQjkgLyogUHJpb3JpdHlRdWV1ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1M0VDMjUzRjFFOTZCQzgwMDAwODMxQjkgLyogUHJpb3JpdHlRdWV1
ZS5jcHAgKi87IH07CiAJCTU1MjI2QTJGMUVCQTQ0QjkwMEMzNkFEMCAvKiBsYXJnZS1yZWQtc3F1
YXJlLWltYWdlLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTUyMjZBMkUxRUI5NjlCNjAwQzM2QUQwIC8qIGxhcmdlLXJlZC1zcXVhcmUt
aW1hZ2UuaHRtbCAqLzsgfTsKKwkJNTU1ODQ4MUMyMTcxMzE1NzAwRkI3RkZGIC8qIFN1cHBvcnRl
ZEFkZGl0aW9uYWxJbWFnZVNvdXJjZVR5cGVzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTU1ODQ4MUIyMTcxMzE1NjAwRkI3RkZGIC8qIFN1cHBvcnRl
ZEFkZGl0aW9uYWxJbWFnZVNvdXJjZVR5cGVzLm1tICovOyB9OworCQk1NTU4NDgyNTIxNzE4Q0RB
MDBGQjdGRkYgLyogMTAweDEwMC1yZWQudGdhIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1NTg0ODIxMjE3MTVBN0UwMEZCN0ZGRiAvKiAxMDB4
MTAwLXJlZC50Z2EgKi87IH07CiAJCTU1OTdGODM2MUQ5NTk2QzgwMDY2QkMyMSAvKiBTeW5jaHJv
bml6ZWRGaXhlZFF1ZXVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDU1OTdGODM0MUQ5NTk2QzgwMDY2QkMyMSAvKiBTeW5jaHJvbml6ZWRGaXhlZFF1
ZXVlLmNwcCAqLzsgfTsKKwkJNTVBODYyRTMyMTdFNjMzNDAwOEY3NDhBIC8qIDQwMHg0MDAtZ3Jl
ZW4ucG5nIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDU1QTg2MkUyMjE3RTYyOEIwMDhGNzQ4QSAvKiA0MDB4NDAwLWdyZWVuLnBuZyAqLzsgfTsK
IAkJNTcxNEVDQjkxQ0E4QjVCMDAwMDUxQUM4IC8qIERvd25sb2FkUmVxdWVzdE9yaWdpbmFsVVJM
Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTcxNEVDQjgxQ0E4QjU4ODAwMDUxQUM4IC8qIERvd25sb2FkUmVxdWVzdE9yaWdpbmFsVVJM
Lmh0bWwgKi87IH07CiAJCTU3MTRFQ0JCMUNBOEJGRTQwMDA1MUFDOCAvKiBEb3dubG9hZFJlcXVl
c3RPcmlnaW5hbFVSTEZyYW1lLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTcxNEVDQkExQ0E4QkZEMTAwMDUxQUM4IC8qIERvd25sb2Fk
UmVxdWVzdE9yaWdpbmFsVVJMRnJhbWUuaHRtbCAqLzsgfTsKIAkJNTcxNEVDQkQxQ0E4QzIyQTAw
MDUxQUM4IC8qIERvd25sb2FkUmVxdWVzdE9yaWdpbmFsVVJMMi5odG1sIGluIENvcHkgUmVzb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3MTRFQ0JDMUNBOEMyMTgw
MDA1MUFDOCAvKiBEb3dubG9hZFJlcXVlc3RPcmlnaW5hbFVSTDIuaHRtbCAqLzsgfTsKQEAgLTk0
Myw3ICs5NDYsOSBAQAogCQkJZHN0UGF0aCA9IFRlc3RXZWJLaXRBUEkucmVzb3VyY2VzOwogCQkJ
ZHN0U3ViZm9sZGVyU3BlYyA9IDc7CiAJCQlmaWxlcyA9ICgKKwkJCQk1NTU4NDgyNTIxNzE4Q0RB
MDBGQjdGRkYgLyogMTAweDEwMC1yZWQudGdhIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCTFB
OUU1MkM5MTNFNjVFRjQwMDY5MTdGNSAvKiAxOC1jaGFyYWN0ZXJzLmh0bWwgaW4gQ29weSBSZXNv
dXJjZXMgKi8sCisJCQkJNTVBODYyRTMyMTdFNjMzNDAwOEY3NDhBIC8qIDQwMHg0MDAtZ3JlZW4u
cG5nIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCTM3OTAyOEI5MTRGQUMyNEMwMDdFNkI0MyAv
KiBhY2NlcHRzRmlyc3RNb3VzZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCTFDMkI4
MTg3MUM4OTI1QTAwMEE1NTI5RiAvKiBBaGVtLnR0ZiBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJ
CQkxQTYzNDc5RjE4M0Q3MkE0MDA1QjE3MDcgLyogYWxsLWNvbnRlbnQtaW4tb25lLWlmcmFtZS5o
dG1sIGluIENvcHkgUmVzb3VyY2VzICovLApAQCAtMTQzNCw3ICsxNDM5LDYgQEAKIAkJMzdFMTA2
NEIxNjk3NjdGNzAwQjc4QkQwIC8qIERPTUhUTUxUYWJsZUNlbGxFbGVtZW50Q2VsbEFib3ZlLmh0
bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSBET01IVE1MVGFibGVDZWxsRWxlbWVudENl
bGxBYm92ZS5odG1sOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzN0UzOEMzMzE2OUI3
RDAxMDA4NEMyOEMgLyogV2ViVmlld0RpZFJlbW92ZUZyYW1lRnJvbUhpZXJhcmNoeS5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYlZpZXdEaWRSZW1vdmVGcmFt
ZUZyb21IaWVyYXJjaHkubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3RTdERDYz
MUVBMDZGRjIwMDlCMzk2RCAvKiBBZGRpdGlvbmFsUmVhZEFjY2Vzc0FsbG93ZWRVUkxzLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQWRkaXRpb25hbFJlYWRBY2Nl
c3NBbGxvd2VkVVJMcy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzdFN0RENjUx
RUEwNzE1QjAwOUIzOTZEIC8qIEFkZGl0aW9uYWxSZWFkQWNjZXNzQWxsb3dlZFVSTHNQcm90b2Nv
bC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBZGRpdGlvbmFsUmVhZEFjY2Vz
c0FsbG93ZWRVUkxzUHJvdG9jb2wuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzdF
N0RENjYxRUEwNzFGMzAwOUIzOTZEIC8qIEFkZGl0aW9uYWxSZWFkQWNjZXNzQWxsb3dlZFVSTHNQ
bHVnaW4ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBZGRpdGlv
bmFsUmVhZEFjY2Vzc0FsbG93ZWRVUkxzUGx1Z2luLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkzN0ZCNzI5NTFEQjJFODJGMDBFNDFCRTQgLyogQ29udGV4dE1lbnVEZWZhdWx0SXRl
bXNIYXZlVGFncy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IENv
bnRleHRNZW51RGVmYXVsdEl0ZW1zSGF2ZVRhZ3MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTNGMUI1MjY4MUQzRDcxMjkwMDhENjBDNCAvKiBGdWxsc2NyZWVuTGF5b3V0Q29uc3Ry
YWludHMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBGdWxsc2Ny
ZWVuTGF5b3V0Q29uc3RyYWludHMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0x
NTQ2LDcgKzE1NTAsMTEgQEAKIAkJNTM2NzcwMzUxQ0M4MTJGOTAwRDQyNUIxIC8qIFdlYlNjcmlw
dE9iamVjdERlc2NyaXB0aW9uLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSBXZWJT
Y3JpcHRPYmplY3REZXNjcmlwdGlvbi5odG1sOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1M0VDMjUzRjFFOTZCQzgwMDAwODMxQjkgLyogUHJpb3JpdHlRdWV1ZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQcmlvcml0eVF1ZXVlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTUyMjZBMkUxRUI5NjlCNjAwQzM2QUQwIC8qIGxhcmdlLXJl
ZC1zcXVhcmUtaW1hZ2UuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJsYXJnZS1y
ZWQtc3F1YXJlLWltYWdlLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1NTU4
NDgxQjIxNzEzMTU2MDBGQjdGRkYgLyogU3VwcG9ydGVkQWRkaXRpb25hbEltYWdlU291cmNlVHlw
ZXMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTdXBwb3J0ZWRB
ZGRpdGlvbmFsSW1hZ2VTb3VyY2VUeXBlcy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNTU1ODQ4MUYyMTcxMzUwODAwRkI3RkZGIC8qIEFkZGl0aW9uYWxSZWFkQWNjZXNzQWxsb3dl
ZFVSTHNQcm90b2NvbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBZGRpdGlv
bmFsUmVhZEFjY2Vzc0FsbG93ZWRVUkxzUHJvdG9jb2wuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNTU1ODQ4MjEyMTcxNUE3RTAwRkI3RkZGIC8qIDEwMHgxMDAtcmVkLnRnYSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGZpbGU7IHBhdGgg
PSAiMTAweDEwMC1yZWQudGdhIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTU5N0Y4
MzQxRDk1OTZDODAwNjZCQzIxIC8qIFN5bmNocm9uaXplZEZpeGVkUXVldWUuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3luY2hyb25pemVkRml4ZWRRdWV1ZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU1QTg2MkUyMjE3RTYyOEIwMDhGNzQ4QSAv
KiA0MDB4NDAwLWdyZWVuLnBuZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IGltYWdlLnBuZzsgcGF0aCA9ICI0MDB4NDAwLWdyZWVuLnBuZyI7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3MTRFQ0I4MUNBOEI1ODgwMDA1MUFDOCAvKiBEb3du
bG9hZFJlcXVlc3RPcmlnaW5hbFVSTC5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0g
RG93bmxvYWRSZXF1ZXN0T3JpZ2luYWxVUkwuaHRtbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTcxNEVDQkExQ0E4QkZEMTAwMDUxQUM4IC8qIERvd25sb2FkUmVxdWVzdE9yaWdpbmFs
VVJMRnJhbWUuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9IERvd25sb2FkUmVxdWVz
dE9yaWdpbmFsVVJMRnJhbWUuaHRtbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTcx
NEVDQkMxQ0E4QzIxODAwMDUxQUM4IC8qIERvd25sb2FkUmVxdWVzdE9yaWdpbmFsVVJMMi5odG1s
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gRG93bmxvYWRSZXF1ZXN0T3JpZ2luYWxVUkwy
Lmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMzEyLDcgKzIzMjAsNyBAQAog
CQkJCTdDRUZBOTY0MUFDMEI5RTIwMEI5MTBGRCAvKiBfV0tVc2VyQ29udGVudEV4dGVuc2lvblN0
b3JlLm1tICovLAogCQkJCTM3RTdERDYzMUVBMDZGRjIwMDlCMzk2RCAvKiBBZGRpdGlvbmFsUmVh
ZEFjY2Vzc0FsbG93ZWRVUkxzLm1tICovLAogCQkJCTM3RTdERDY2MUVBMDcxRjMwMDlCMzk2RCAv
KiBBZGRpdGlvbmFsUmVhZEFjY2Vzc0FsbG93ZWRVUkxzUGx1Z2luLm1tICovLAotCQkJCTM3RTdE
RDY1MUVBMDcxNUIwMDlCMzk2RCAvKiBBZGRpdGlvbmFsUmVhZEFjY2Vzc0FsbG93ZWRVUkxzUHJv
dG9jb2wuaCAqLywKKwkJCQk1NTU4NDgxRjIxNzEzNTA4MDBGQjdGRkYgLyogQWRkaXRpb25hbFJl
YWRBY2Nlc3NBbGxvd2VkVVJMc1Byb3RvY29sLmggKi8sCiAJCQkJQTFERjc0MzAxQzQxQjY1ODAw
QTJGNEQwIC8qIEFsd2F5c1JldmFsaWRhdGVkVVJMU2NoZW1lcy5tbSAqLywKIAkJCQkyREU3MUFG
RDFENDlDMEJEMDA5MDQwOTQgLyogQW5pbWF0ZWRSZXNpemUubW0gKi8sCiAJCQkJNjNGNjY4MjAx
Rjk3QzNBQTAwMzJFRTUxIC8qIEFwcGxpY2F0aW9uTWFuaWZlc3QubW0gKi8sCkBAIC0yNDM2LDYg
KzI0NDQsNyBAQAogCQkJCTJEOUE1M0FFMUIzMUZBOEQwMDc0RDVBQSAvKiBTaHJpbmtUb0ZpdC5t
bSAqLywKIAkJCQkyREZGN0I2QzFEQTQ4N0FGMDA4MTQ2MTQgLyogU25hcHNob3RTdG9yZS5tbSAq
LywKIAkJCQk1MTVCRTE3MDFENDI4QkQxMDBERDdDNjggLyogU3RvcmVCbG9iVGhlbkRlbGV0ZS5t
bSAqLywKKwkJCQk1NTU4NDgxQjIxNzEzMTU2MDBGQjdGRkYgLyogU3VwcG9ydGVkQWRkaXRpb25h
bEltYWdlU291cmNlVHlwZXMubW0gKi8sCiAJCQkJMUM3MzRCNTIyMDc4OEM0ODAwRjQzMEVBIC8q
IFN5c3RlbUNvbG9ycy5tbSAqLywKIAkJCQlGNENENzRDNzIwRkRCNDk2MDBERTM3OTQgLyogVGVz
dFVSTFNjaGVtZUhhbmRsZXIuaCAqLywKIAkJCQlGNENENzRDODIwRkRCNDk2MDBERTM3OTQgLyog
VGVzdFVSTFNjaGVtZUhhbmRsZXIubW0gKi8sCkBAIC0yNjUxLDYgKzI2NjAsOCBAQAogCQlBMTZG
NjZCODFDNDBFOUUxMDBCRDREMjQgLyogUmVzb3VyY2VzICovID0gewogCQkJaXNhID0gUEJYR3Jv
dXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk1NTU4NDgyMTIxNzE1QTdFMDBGQjdGRkYgLyogMTAw
eDEwMC1yZWQudGdhICovLAorCQkJCTU1QTg2MkUyMjE3RTYyOEIwMDhGNzQ4QSAvKiA0MDB4NDAw
LWdyZWVuLnBuZyAqLywKIAkJCQlDMjVDQ0EwQzFFNTE0MEU1MDAyNkNCOEEgLyogQWxsQWhlbS5z
dmcgKi8sCiAJCQkJRjRBOTIwMkUxRkVFMzRDODAwRjU5NTkwIC8qIGFwcGxlLWRhdGEtdXJsLmh0
bWwgKi8sCiAJCQkJRjQ3RDMwRUIxRUQyODYxOTAwMDQ4MkUxIC8qIGFwcGxlLmdpZiAqLywKQEAg
LTQwMjQsNiArNDAzNSw3IEBACiAJCQkJRUNBNjgwQ0UxRTY4Q0MwOTAwNzMxRDIwIC8qIFN0cmlu
Z1V0aWxpdGllcy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNFNEQ1REU3MUY2NzQzQkEwMDcyQ0ZD
NiAvKiBTdHJpbmdXaXRoRGlyZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RUQy
MUE0MTFBN0UwMDQ0N0M0QyAvKiBTdWJyZXNvdXJjZUVycm9yQ3Jhc2gubW0gaW4gU291cmNlcyAq
LywKKwkJCQk1NTU4NDgxQzIxNzEzMTU3MDBGQjdGRkYgLyogU3VwcG9ydGVkQWRkaXRpb25hbElt
YWdlU291cmNlVHlwZXMubW0gaW4gU291cmNlcyAqLywKIAkJCQk0NDMzQTM5NjIwODA0NDE0MDA5
MUVENTcgLyogU3luY2hyb25vdXNUaW1lb3V0VGVzdHMubW0gaW4gU291cmNlcyAqLywKIAkJCQk3
Q0NFN0VBODFBNDExQTE5MDA0NDdDNEMgLyogU3ludGhldGljQmFja2luZ1NjYWxlRmFjdG9yV2lu
ZG93Lm0gaW4gU291cmNlcyAqLywKIAkJCQkxQzczNEI1MzIwNzg4QzQ4MDBGNDMwRUEgLyogU3lz
dGVtQ29sb3JzLm1tIGluIFNvdXJjZXMgKi8sCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL1N1cHBvcnRlZEFkZGl0aW9uYWxJbWFnZVNvdXJjZVR5cGVzLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU3VwcG9y
dGVkQWRkaXRpb25hbEltYWdlU291cmNlVHlwZXMubW0JKG5vbmV4aXN0ZW50KQorKysgVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TdXBwb3J0ZWRBZGRpdGlvbmFsSW1hZ2VT
b3VyY2VUeXBlcy5tbQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDg5IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0IDxXZWJLaXQvV0tGb3VuZGF0aW9uLmg+CisK
KyNpZiBXS19BUElfRU5BQkxFRCAmJiBQTEFURk9STShDT0NPQSkKKworI2ltcG9ydCAiUGxhdGZv
cm1VdGlsaXRpZXMuaCIKKyNpbXBvcnQgIlRlc3ROYXZpZ2F0aW9uRGVsZWdhdGUuaCIKKyNpbXBv
cnQgIldLV2ViVmlld0NvbmZpZ3VyYXRpb25FeHRyYXMuaCIKKyNpbXBvcnQgPFdlYktpdC9XS1dl
YlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oPgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgor
CitzdGF0aWMgdm9pZCBydW5UZXN0KE5TQXJyYXk8TlNTdHJpbmcgKj4gKnN1cHBvcnRlZEFkZGl0
aW9uYWxJbWFnZVNvdXJjZVR5cGVzLCBOU1N0cmluZyAqaW1hZ2VVUkwsIE5TU3RyaW5nICppbWFn
ZUV4dGVuc2lvbiwgQ0dGbG9hdCBpbWFnZVdpZHRoKQoreworICAgIFJldGFpblB0cjxXS1dlYlZp
ZXdDb25maWd1cmF0aW9uPiBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZp
Z3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBbY29uZmlndXJhdGlvbiBfc2V0U3VwcG9ydGVk
QWRkaXRpb25hbEltYWdlU291cmNlVHlwZXM6c3VwcG9ydGVkQWRkaXRpb25hbEltYWdlU291cmNl
VHlwZXNdOworCisgICAgUmV0YWluUHRyPFdLV2ViVmlldz4gd2ViVmlldyA9IGFkb3B0TlMoW1tX
S1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkg
Y29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CisKKyAgICBSZXRhaW5QdHI8TlNV
Ukw+IHRlc3RVUkwgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOmltYWdl
VVJMIHdpdGhFeHRlbnNpb246aW1hZ2VFeHRlbnNpb24gc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktp
dEFQSS5yZXNvdXJjZXMiXTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0
IHJlcXVlc3RXaXRoVVJMOnRlc3RVUkwuZ2V0KCldXTsKKyAgICBbd2ViVmlldyBfdGVzdF93YWl0
Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07CisKKyAgICBfX2Jsb2NrIGJvb2wgaXNEb25lID0gZmFs
c2U7CisgICAgW3dlYlZpZXcgX2RvQWZ0ZXJOZXh0UHJlc2VudGF0aW9uVXBkYXRlOl57CisgICAg
ICAgIFt3ZWJWaWV3IGV2YWx1YXRlSmF2YVNjcmlwdDpAIltkb2N1bWVudC5xdWVyeVNlbGVjdG9y
KCdpbWcnKS53aWR0aF0iIGNvbXBsZXRpb25IYW5kbGVyOl4oaWQgdmFsdWUsIE5TRXJyb3IgKmVy
cm9yKSB7CisgICAgICAgICAgICBDR0Zsb2F0IHdpZHRoID0gW1t2YWx1ZSBvYmplY3RBdEluZGV4
OjBdIGZsb2F0VmFsdWVdOworICAgICAgICAgICAgRVhQRUNUX0VRKHdpZHRoLCBpbWFnZVdpZHRo
KTsKKyAgICAgICAgICAgIGlzRG9uZSA9IHRydWU7CisgICAgICAgIH1dOworICAgIH1dOworICAg
IFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKK30KKworVEVTVChXZWJLaXQsIEFk
ZFN1cHBvcnRlZEltYWdlU291cmNlVHlwZSkKK3sKKyAgICBydW5UZXN0KEBbQCJwdWJsaWMucG5n
Il0sIEAiNDAweDQwMC1ncmVlbiIsIEAicG5nIiwgNDAwKTsKK30KKworVEVTVChXZWJLaXQsIEFk
ZFN1cHBvcnRlZEFuZEJvZ3VzSW1hZ2VTb3VyY2VUeXBlcykKK3sKKyAgICBydW5UZXN0KEBbQCJw
dWJsaWMucG5nIiwgQCJwdWJsaWMuYm9ndXMiXSwgQCI0MDB4NDAwLWdyZWVuIiwgQCJwbmciLCA0
MDApOworfQorCitURVNUKFdlYktpdCwgQWRkU3VwcG9ydGVkQW5kQm9ndXNJbWFnZVNvdXJjZVR5
cGVzVHdpY2UpCit7CisgICAgcnVuVGVzdChAW0AicHVibGljLnBuZyIsIEAicHVibGljLmJvZ3Vz
IiwgQCJwdWJsaWMucG5nIiwgQCJwdWJsaWMuYm9ndXMiXSwgQCI0MDB4NDAwLWdyZWVuIiwgQCJw
bmciLCA0MDApOworfQorCitURVNUKFdlYktpdCwgQWRkVW5zdXBwb3J0ZWRJbWFnZVNvdXJjZVR5
cGUpCit7CisgICAgcnVuVGVzdChAW0AiY29tLnRydWV2aXNpb24udGdhLWltYWdlIl0sIEAiMTAw
eDEwMC1yZWQiLCBAInRnYSIsIDEwMCk7Cit9CisKK1RFU1QoV2ViS2l0LCBBZGRVbnN1cHBvcnRl
ZEFuZEJvZ3VzSW1hZ2VTb3VyY2VUeXBlcykKK3sKKyAgICBydW5UZXN0KEBbQCJjb20udHJ1ZXZp
c2lvbi50Z2EtaW1hZ2UiLCBAInB1YmxpYy5ib2d1cyJdLCBAIjEwMHgxMDAtcmVkIiwgQCJ0Z2Ei
LCAxMDApOworfQorCitURVNUKFdlYktpdCwgQWRkVW5zdXBwb3J0ZWRBbmRCb2d1c0ltYWdlU291
cmNlVHlwZXNUd2ljZSkKK3sKKyAgICBydW5UZXN0KEBbQCJjb20udHJ1ZXZpc2lvbi50Z2EtaW1h
Z2UiLCBAInB1YmxpYy5ib2d1cyIsIEAiY29tLnRydWV2aXNpb24udGdhLWltYWdlIiwgQCJwdWJs
aWMuYm9ndXMiXSwgQCIxMDB4MTAwLXJlZCIsIEAidGdhIiwgMTAwKTsKK30KKworI2VuZGlmCklu
ZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hLzEwMHgxMDAtcmVkLnRn
YQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09CkNhbm5vdCBkaXNwbGF5OiBmaWxlIG1hcmtlZCBhcyBhIGJpbmFyeSB0eXBl
Lgpzdm46bWltZS10eXBlID0gYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtCgpQcm9wZXJ0eSBjaGFu
Z2VzIG9uOiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hLzEwMHgxMDAtcmVk
LnRnYQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fCkFkZGVkOiBzdm46bWltZS10eXBlCiMjIC0wLDAgKzEgIyMKK2FwcGxp
Y2F0aW9uL29jdGV0LXN0cmVhbQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CgpBQUFL
QUFBQUFBQUFBQUFBWkFCa0FDQW80d0FBLy8vakFBRC8vK01BQVAvLzR3QUEvLy9qQUFELy8rTUFB
UC8vNHdBQS8vL2pBQUQvCi8rTUFBUC8vNHdBQS8vL2pBQUQvLytNQUFQLy80d0FBLy8vakFBRC8v
K01BQVAvLzR3QUEvLy9qQUFELy8rTUFBUC8vNHdBQS8vL2oKQUFELy8rTUFBUC8vNHdBQS8vL2pB
QUQvLytNQUFQLy80d0FBLy8vakFBRC8vK01BQVAvLzR3QUEvLy9qQUFELy8rTUFBUC8vNHdBQQov
Ly9qQUFELy8rTUFBUC8vNHdBQS8vL2pBQUQvLytNQUFQLy80d0FBLy8vakFBRC8vK01BQVAvLzR3
QUEvLy9qQUFELy8rTUFBUC8vCjR3QUEvLy9qQUFELy8rTUFBUC8vNHdBQS8vL2pBQUQvLytNQUFQ
Ly80d0FBLy8vakFBRC8vK01BQVAvLzR3QUEvLy9qQUFELy8rTUEKQVAvLzR3QUEvLy9qQUFELy8r
TUFBUC8vNHdBQS8vL2pBQUQvLytNQUFQLy80d0FBLy8vakFBRC8vK01BQVAvLzR3QUEvLy9qQUFE
LwovK01BQVAvLzR3QUEvLy9qQUFELy8rTUFBUC8vNHdBQS8vL2pBQUQvLytNQUFQLy80d0FBLy8v
akFBRC8vK01BQVAvLzR3QUEvLy9qCkFBRC8vK01BQVAvLzR3QUEvLy9qQUFELy8rTUFBUC8vNHdB
QS8vL2pBQUQvLytNQUFQLy80d0FBLy8vakFBRC8vK01BQVAvLzR3QUEKLy8vakFBRC8vK01BQVAv
LzR3QUEvLy9qQUFELy8rTUFBUC8vNHdBQS8vL2pBQUQvLytNQUFQLy80d0FBLy8vakFBRC8vK01B
QVAvLwo0d0FBLy84PQoKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvNDAweDQwMC1ncmVlbi5wbmcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDYW5ub3QgZGlzcGxheTogZmlsZSBtYXJr
ZWQgYXMgYSBiaW5hcnkgdHlwZS4Kc3ZuOm1pbWUtdHlwZSA9IGltYWdlL3BuZwoKUHJvcGVydHkg
Y2hhbmdlcyBvbjogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS80MDB4NDAw
LWdyZWVuLnBuZwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46bWltZS10eXBlCiMjIC0wLDAgKzEgIyMK
K2ltYWdlL3BuZwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CgppVkJPUncwS0dnb0FB
QUFOU1VoRVVnQUFBWkFBQUFHUUNBSUFBQUFQM2FHYkFBQUFDWEJJV1hNQUFBc1RBQUFMRXdFQW1w
d1lBQUFBCkIzUkpUVVVINFFjT0V5UTZhcmZzbVFBQUFCMXBWRmgwUTI5dGJXVnVkQUFBQUFBQVEz
SmxZWFJsWkNCM2FYUm9JRWRKVFZCa0xtVUgKQUFBRDVFbEVRVlI0MnUzVU1RMEFBQWdFc1FmbFNF
Y0ZBMGtyNFlhclRBQmVhQWtBd3dJd0xNQ3dBQXdMd0xBQXd3SXdMQUREQWd3TAp3TEFBREFzd0xB
RERBakFzd0xBQURBdkFzQUREQWpBc0FNTUNEQXZBc0FBTUN6QXNBTU1DTUN6QXNBQU1DekFzQU1N
Q01DekFzQUFNCkM4Q3dBTU1DTUN3QXd3SU1DOEN3QUF3TE1Dd0F3d0l3TE1Dd0FBd0x3TEFBd3dJ
d0xBRERBZ3dMd0xBQURBc3dMQUREQWpBc3dMQUEKREFzd0xBRERBakFzd0xBQURBdkFzQUREQWpB
c0FNTUNEQXZBc0FBTUN6QXNBTU1DTUN6QXNBQU1DOEN3QU1NQ01Dd0F3d0lNQzhDdwpBQXdMTUN3
QXd3SXdMTUN3QUF3TE1Dd0F3d0l3TE1Dd0FBd0x3TEFBd3dJd0xBRERBZ3dMd0xBQURBc3dMQURE
QWpBc3dMQUFEQXZBCnNBRERBakFzQU1NQ0RBdkFzQUFNQ3pBc0FNTUNNQ3pBc0FBTUN6QXNBTU1D
TUN6QXNBQU1DOEN3QU1NQ01Dd0F3d0lNQzhDd0FBd0wKTUN3QXd3SXdMTUN3QUF3THdMQUF3d0l3
TEFEREFnd0x3TEFBREFzd0xBRERBakFzd0xBQURBc3dMQUREQWpBc3dMQUFEQXZBc0FERApBakFz
QU1NQ0RBdkFzQUFNQ3pBc0FNTUNNQ3pBc0FBTUM4Q3dBTU1DTUN3QXd3SU1DOEN3QUF3TE1Dd0F3
d0l3TE1Dd0FBd0xNQ3dBCnd3SXdMTUN3QUF3THdMQUF3d0l3TEFEREFnd0x3TEFBREFzd0xBRERB
akFzd0xBQURBdkFzQUREQWpBc0FNTUNEQXZBc0FBTUN6QXMKQU1NQ01DekFzQUFNQ3pBc0FNTUNN
Q3pBc0FBTUM4Q3dBTU1DTUN3QXd3SU1DOEN3QUF3TE1Dd0F3d0l3TE1Dd0FBd0x3TEFBd3dJdwpM
QUREQWd3THdMQUFEQXN3TEFEREFqQXN3TEFBREFzd0xBRERBakFzd0xBQURBdkFzQUREQWpBc0FN
TUNEQXZBc0FBTUN6QXNBTU1DCk1DekFzQUFNQzhDd0FNTUNNQ3dBd3dJTUM4Q3dBQXdMTUN3QXd3
SU1Td0xBc0FBTUN6QXNBTU1DTUN6QXNBQU1DOEN3QU1NQ01Dd0EKd3dJTUM4Q3dBQXdMTUN3QXd3
SXdMTUN3QUF3THdMQUF3d0l3TEFEREFnd0x3TEFBREFzd0xBRERBZ3dMd0xBQURBc3dMQUREQWpB
cwp3TEFBREF2QXNBRERBakFzQU1NQ0RBdkFzQUFNQ3pBc0FNTUNNQ3pBc0FBTUM4Q3dBTU1DTUN3
QXd3SU1DOEN3QUF3TE1Dd0F3d0lNCkM4Q3dBQXdMTUN3QXd3SXdMTUN3QUF3THdMQUF3d0l3TEFE
REFnd0x3TEFBREFzd0xBRERBakFzd0xBQURBdkFzQUREQWpBc0FNTUMKREF2QXNBQU1DekFzQU1N
Q0RBdkFzQUFNQ3pBc0FNTUNNQ3pBc0FBTUM4Q3dBTU1DTUN3QXd3SU1DOEN3QUF3TE1Dd0F3d0l3
TE1DdwpBQXdMd0xBQXd3SXdMQUREQWd3THdMQUFEQXN3TEFEREFnd0x3TEFBREFzd0xBRERBakFz
d0xBQURBdkFzQUREQWpBc0FNTUNEQXZBCnNBQU1DekFzQU1NQ01DekFzQUFNQzhDd0FNTUNNQ3dB
d3dJTUMrRFNBcC9LQTZBV201M3hBQUFBQUVsRlRrU3VRbUNDCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>353054</attachid>
            <date>2018-10-24 14:33:07 -0700</date>
            <delta_ts>2018-11-08 14:54:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190454-20181024143306.patch</filename>
            <type>text/plain</type>
            <size>32758</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzNzM5NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDE4LTEwLTI0ICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGFuIFNQ
SSB0byBhbGxvdyBXZWJWaWV3IGNsaWVudHMgdG8gYWRkIGFkZGl0aW9uYWwgc3VwcG9ydGVkIGlt
YWdlIGZvcm1hdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE5MDQ1NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEFkZCBhbiBTUEkgdG8gYWxsb3cgYWRkaXRpb25hbCBzdXBwb3J0ZWQgaW1hZ2UgZm9ybWF0
cyBpbiBXZWJWaWV3LiBUaGVzZQorICAgICAgICBhZGRpdGlvbmFsIGZvcm1hdHMgY2FuIGJlIHNl
dCBpbiB0aGUgV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhcyBhbiBOU0FycmF5CisgICAgICAgIG9m
IE5TdHJpbmdzLiBFYWNoIHN0cmluZyByZXByZXNlbnRzIGFuIGltYWdlIHNvdXJjZSB0eXBlIGFr
YSBVVEkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OnN1cHBvcnRlZEFkZGl0aW9uYWxJbWFnZU1J
TUVUeXBlcyk6CisgICAgICAgIChXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRl
ZEltYWdlTUlNRVR5cGUpOgorICAgICAgICAqIHBsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9VVElSZWdpc3RyeS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpzdXBwb3J0ZWRBZGRpdGlvbmFsSW1hZ2VTb3VyY2VUeXBlcyk6CisgICAgICAg
IChXZWJDb3JlOjpzZXRTdXBwb3J0ZWRBZGRpdGlvbmFsSW1hZ2VTb3VyY2VUeXBlcyk6CisgICAg
ICAgIChXZWJDb3JlOjppc1N1cHBvcnRJbWFnZVNvdXJjZVR5cGUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NnL1VUSVJlZ2lzdHJ5Lmg6CisKIDIwMTgtMTAtMTEgIEppZXdlbiBUYW4g
IDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBPbmx5IHJlcG9ydCByZXNvdXJjZSB0
aW1pbmcgdG8gcGFyZW50IGZyYW1lIGZvciB0aGUgZmlyc3QgaWZyYW1lIGxvYWQKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuY3BwCShyZXZpc2lvbiAy
MzczOTYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTQ2LDYgKzE0NiwxMiBAQCBjb25zdCBIYXNoU2V0PFN0cmluZywg
QVNDSUlDYXNlSW5zZW5zaXRpCiAgICAgcmV0dXJuIHN1cHBvcnRlZEltYWdlTUlNRVR5cGVzOwog
fQogCitIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgTUlNRVR5cGVS
ZWdpc3RyeTo6c3VwcG9ydGVkQWRkaXRpb25hbEltYWdlTUlNRVR5cGVzKCkKK3sKKyAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFz
aD4+IHN1cHBvcnRlZEFkZGl0aW9uYWxJbWFnZU1JTUVUeXBlczsKKyAgICByZXR1cm4gc3VwcG9y
dGVkQWRkaXRpb25hbEltYWdlTUlNRVR5cGVzOworfQorCiBzdGF0aWMgY29uc3QgSGFzaFNldDxT
dHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIHN1cHBvcnRlZEltYWdlTUlNRVR5cGVz
Rm9yRW5jb2RpbmcoKQogewogI2lmIFBMQVRGT1JNKENPQ09BKQpAQCAtNDMzLDcgKzQzOSw4IEBA
IGJvb2wgTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRJbWFnZU0KIHsKICAgICBpZiAobWlt
ZVR5cGUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIHN1cHBv
cnRlZEltYWdlTUlNRVR5cGVzKCkuY29udGFpbnMoZ2V0Tm9ybWFsaXplZE1JTUVUeXBlKG1pbWVU
eXBlKSk7CisgICAgU3RyaW5nIG5vcm1hbGl6ZWRNSU1FVHlwZSA9IGdldE5vcm1hbGl6ZWRNSU1F
VHlwZShtaW1lVHlwZSk7CisgICAgcmV0dXJuIHN1cHBvcnRlZEltYWdlTUlNRVR5cGVzKCkuY29u
dGFpbnMobm9ybWFsaXplZE1JTUVUeXBlKSB8fCBzdXBwb3J0ZWRBZGRpdGlvbmFsSW1hZ2VNSU1F
VHlwZXMoKS5jb250YWlucyhub3JtYWxpemVkTUlNRVR5cGUpOwogfQogCiBib29sIE1JTUVUeXBl
UmVnaXN0cnk6OmlzU3VwcG9ydGVkSW1hZ2VWaWRlb09yU1ZHTUlNRVR5cGUoY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0
cnkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lz
dHJ5LmgJKHJldmlzaW9uIDIzNzM5NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVU
eXBlUmVnaXN0cnkuaAkod29ya2luZyBjb3B5KQpAQCAtMTA2LDYgKzEwNiw3IEBAIHB1YmxpYzoK
IAogICAgIC8vIEZJWE1FOiBXb3VsZCBiZSBuaWNlIHRvIGZpbmQgYSB3YXkgdG8gYXZvaWQgZXhw
b3NpbmcgdGhlc2Ugc2V0cywgZXZlbiB3b3JzZSBleHBvc2luZyBub24tY29uc3QgcmVmZXJlbmNl
cy4KICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgY29uc3QgSGFzaFNldDxTdHJpbmcsIEFTQ0lJ
Q2FzZUluc2Vuc2l0aXZlSGFzaD4mIHN1cHBvcnRlZEltYWdlTUlNRVR5cGVzKCk7CisgICAgc3Rh
dGljIEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiBzdXBwb3J0ZWRB
ZGRpdGlvbmFsSW1hZ2VNSU1FVHlwZXMoKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgSGFz
aFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIHN1cHBvcnRlZE5vbkltYWdl
TUlNRVR5cGVzKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGNvbnN0IEhhc2hTZXQ8U3Ry
aW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiBzdXBwb3J0ZWRNZWRpYU1JTUVUeXBlcygp
OwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBjb25zdCBIYXNoU2V0PFN0cmluZywgQVNDSUlD
YXNlSW5zZW5zaXRpdmVIYXNoPiYgcGRmTUlNRVR5cGVzKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9VVElSZWdpc3RyeS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvVVRJUmVnaXN0cnkuY3BwCShyZXZpc2lv
biAyMzczOTYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9VVElSZWdp
c3RyeS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDE3IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTctMjAxOCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOCw2ICsyOCw5IEBACiAKICNpZiBVU0UoQ0cpCiAK
KyNpbmNsdWRlICJJbWFnZVNvdXJjZUNHLmgiCisjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5o
IgorCiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95
ZWQuaD4KICNpbmNsdWRlIDxJbWFnZUlPL0ltYWdlSU8uaD4KQEAgLTY5LDkgKzcyLDI4IEBAIGNv
bnN0IEhhc2hTZXQ8U3RyaW5nPiYgc3VwcG9ydGVkRGVmYXVsdEkKICAgICByZXR1cm4gc3VwcG9y
dGVkRGVmYXVsdEltYWdlU291cmNlVHlwZXM7CiB9CiAKK0hhc2hTZXQ8U3RyaW5nPiYgc3VwcG9y
dGVkQWRkaXRpb25hbEltYWdlU291cmNlVHlwZXMoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxIYXNoU2V0PFN0cmluZz4+IHN1cHBvcnRlZEFkZGl0aW9uYWxJbWFnZVNvdXJjZVR5cGVz
OworICAgIHJldHVybiBzdXBwb3J0ZWRBZGRpdGlvbmFsSW1hZ2VTb3VyY2VUeXBlczsKK30KKwor
dm9pZCBzZXRTdXBwb3J0ZWRBZGRpdGlvbmFsSW1hZ2VTb3VyY2VUeXBlcyhjb25zdCBWZWN0b3I8
U3RyaW5nPiYgaW1hZ2VTb3VyY2VUeXBlcykKK3sKKyAgICBNSU1FVHlwZVJlZ2lzdHJ5OjpzdXBw
b3J0ZWRBZGRpdGlvbmFsSW1hZ2VNSU1FVHlwZXMoKS5jbGVhcigpOworICAgIGZvciAoY29uc3Qg
YXV0byYgaW1hZ2VTb3VyY2VUeXBlIDogaW1hZ2VTb3VyY2VUeXBlcykgeworICAgICAgICBzdXBw
b3J0ZWRBZGRpdGlvbmFsSW1hZ2VTb3VyY2VUeXBlcygpLmFkZChpbWFnZVNvdXJjZVR5cGUpOwor
ICAgICAgICBhdXRvIG1pbWVUeXBlID0gTUlNRVR5cGVGb3JJbWFnZVNvdXJjZVR5cGUoaW1hZ2VT
b3VyY2VUeXBlKTsKKyAgICAgICAgaWYgKCFtaW1lVHlwZS5pc0VtcHR5KCkpCisgICAgICAgICAg
ICBNSU1FVHlwZVJlZ2lzdHJ5OjpzdXBwb3J0ZWRBZGRpdGlvbmFsSW1hZ2VNSU1FVHlwZXMoKS5h
ZGQobWltZVR5cGUpOworICAgIH0KK30KKwogYm9vbCBpc1N1cHBvcnRJbWFnZVNvdXJjZVR5cGUo
Y29uc3QgU3RyaW5nJiBpbWFnZVNvdXJjZVR5cGUpCiB7Ci0gICAgcmV0dXJuICFpbWFnZVNvdXJj
ZVR5cGUuaXNFbXB0eSgpICYmIHN1cHBvcnRlZERlZmF1bHRJbWFnZVNvdXJjZVR5cGVzKCkuY29u
dGFpbnMoaW1hZ2VTb3VyY2VUeXBlKTsKKyAgICBpZiAoaW1hZ2VTb3VyY2VUeXBlLmlzRW1wdHko
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBzdXBwb3J0ZWREZWZhdWx0SW1h
Z2VTb3VyY2VUeXBlcygpLmNvbnRhaW5zKGltYWdlU291cmNlVHlwZSkgfHwgc3VwcG9ydGVkQWRk
aXRpb25hbEltYWdlU291cmNlVHlwZXMoKS5jb250YWlucyhpbWFnZVNvdXJjZVR5cGUpOwogfQog
CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9VVElSZWdpc3Ry
eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1VU
SVJlZ2lzdHJ5LmgJKHJldmlzaW9uIDIzNzM5NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL1VUSVJlZ2lzdHJ5LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzEsNiArMzEsOCBAQAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjb25zdCBIYXNoU2V0PFN0cmluZz4mIHN1cHBvcnRlZERl
ZmF1bHRJbWFnZVNvdXJjZVR5cGVzKCk7CitIYXNoU2V0PFN0cmluZz4mIHN1cHBvcnRlZEFkZGl0
aW9uYWxJbWFnZVNvdXJjZVR5cGVzKCk7CitXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFN1cHBvcnRl
ZEFkZGl0aW9uYWxJbWFnZVNvdXJjZVR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+Jik7CiBib29s
IGlzU3VwcG9ydEltYWdlU291cmNlVHlwZShjb25zdCBTdHJpbmcmKTsKIAogfQpJbmRleDogU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cJKHJldmlzaW9uIDIzNzM5NikKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsNTEgQEAKKzIwMTgtMTAtMjQgIFNhaWQgQWJvdS1IYWxsYXdhICA8
c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgYW4gU1BJIHRvIGFsbG93IFdl
YlZpZXcgY2xpZW50cyB0byBhZGQgYWRkaXRpb25hbCBzdXBwb3J0ZWQgaW1hZ2UgZm9ybWF0cwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwNDU0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBQbGF0Zm9y
bS9tYWMvU3RyaW5nVXRpbGl0aWVzLmg6CisgICAgICAgICogUGxhdGZvcm0vbWFjL1N0cmluZ1V0
aWxpdGllcy5tbToKKyAgICAgICAgKFdlYktpdDo6d2ViQ29yZVN0cmluZ1ZlY3RvckZyb21OU1N0
cmluZ0FycmF5KToKKyAgICAgICAgQSBoZWxwZXIgZnVuY3Rpb24gd2hpY2ggY29udmVydHMgYW4g
TlNBcnJheSBvZiBOU1N0cmluZ3MgdG8gYSBWZWN0b3Igb2YKKyAgICAgICAgV1RGU3RyaW5nLgor
CisgICAgICAgICogU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAg
ICAqIFNoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmg6CisgICAgICAgIEhhbmRsZSBl
bmNvZGluZyBhbmQgZGVjb2RpbmcgdGhlIEFkZGl0aW9uYWxBbGxvd2VkSW1hZ2VGb3JtYXRzIHdo
aWNoIHdpbGwKKyAgICAgICAgYWxsb3cgdHJhbnNmZXJyaW5nIGl0IGZyb20gdGhlIFVJIHByb2Nl
c3MgdG8gdGhlIHdlYiBwcm9jZXNzLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElQYWdl
Q29uZmlndXJhdGlvbi5oOgorICAgICAgICAoQVBJOjpQYWdlQ29uZmlndXJhdGlvbjo6c3VwcG9y
dGVkQWRkaXRpb25hbEltYWdlU291cmNlVHlwZXMgY29uc3QpOgorICAgICAgICAoQVBJOjpQYWdl
Q29uZmlndXJhdGlvbjo6c2V0U3VwcG9ydGVkQWRkaXRpb25hbEltYWdlU291cmNlVHlwZXMpOgor
ICAgICAgICBTdG9yZSB0aGUgQWRkaXRpb25hbEFsbG93ZWRJbWFnZUZvcm1hdHMgaW4gdGhlIEFQ
SVBhZ2VDb25maWd1cmF0aW9uCisgICAgICAgIHdoaWNoIGlzIHVzZWQgd2hlbiBjcmVhdGluZyB0
aGUgV2ViUGFnZVByb3h5IGluIHRoZSBVSVBvcmNlc3MuCisKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9pbml0aWFsaXpl
V2l0aENvbmZpZ3VyYXRpb246XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXdDb25maWd1cmF0aW9uLm1tOgorICAgICAgICAoLVtXS1dlYlZpZXdDb25maWd1cmF0aW9u
IGNvcHlXaXRoWm9uZTpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBfc3Vw
cG9ydGVkQWRkaXRpb25hbEltYWdlU291cmNlVHlwZXNdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3
Q29uZmlndXJhdGlvbiBfc2V0U3VwcG9ydGVkQWRkaXRpb25hbEltYWdlU291cmNlVHlwZXM6XSk6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJp
dmF0ZS5oOgorICAgICAgICBTZXR0ZXIvR2V0dGVyIGZvciB0aGUgYWRkaXRpb25hbEFsbG93ZWRJ
bWFnZUZvcm1hdHMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjcmVhdGlvblBhcmFtZXRlcnMpOgorICAgICAg
ICBDb3B5IHRoZSBhZGRpdGlvbmFsQWxsb3dlZEltYWdlRm9ybWF0cyBmcm9tIEFQSVBhZ2VDb25m
aWd1cmF0aW9uIHRvIAorICAgICAgICBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLgorCisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICBEZWxldGUgdW5pbXBsZW1l
bnRlZCBmdW5jdGlvbi4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6V2ViUGFnZSk6CisgICAgICAgIENvcHkgdGhl
IGFkZGl0aW9uYWxBbGxvd2VkSW1hZ2VGb3JtYXRzIGZyb20gV2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVycyB0bworICAgICAgICBXZWJDb3JlLgorCiAyMDE4LTEwLTI0ICBTYWlkIEFib3UtSGFsbGF3
YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CiAKICAgICAgICAgQ2xlYW51cDogTUlNRVR5cGVS
ZWdpc3RyeSBmdW5jdGlvbnMKSW5kZXg6IFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vbWFjL1N0cmlu
Z1V0aWxpdGllcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vbWFjL1N0
cmluZ1V0aWxpdGllcy5oCShyZXZpc2lvbiAyMzczOTYpCisrKyBTb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL21hYy9TdHJpbmdVdGlsaXRpZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsOCBA
QCBuYW1lc3BhY2UgV2ViS2l0IHsKIE5TU3RyaW5nICpuc1N0cmluZ0Zyb21XZWJDb3JlU3RyaW5n
KGNvbnN0IFN0cmluZyYpOwogTlNTdHJpbmcgKmZvcm1hdHRlZFBob25lTnVtYmVyU3RyaW5nKE5T
U3RyaW5nICpvcmlnaW5hbFBob25lTnVtYmVyKTsKIAorVmVjdG9yPFN0cmluZz4gd2ViQ29yZVN0
cmluZ1ZlY3RvckZyb21OU1N0cmluZ0FycmF5KE5TQXJyYXk8TlNTdHJpbmcgKj4gKik7CisKICNl
bmRpZiAvLyBkZWZpbmVkKF9fT0JKQ19fKQogCiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL21hYy9TdHJpbmdVdGlsaXRpZXMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9tYWMvU3RyaW5nVXRpbGl0aWVzLm1tCShyZXZpc2lvbiAyMzczOTYpCisrKyBTb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL21hYy9TdHJpbmdVdGlsaXRpZXMubW0JKHdvcmtpbmcgY29weSkK
QEAgLTgyLDQgKzgyLDE1IEBAIE5TU3RyaW5nICpmb3JtYXR0ZWRQaG9uZU51bWJlclN0cmluZyhO
U1MKIAogI2VuZGlmIC8vIEVOQUJMRShURUxFUEhPTkVfTlVNQkVSX0RFVEVDVElPTikgJiYgUExB
VEZPUk0oTUFDKQogCitWZWN0b3I8U3RyaW5nPiB3ZWJDb3JlU3RyaW5nVmVjdG9yRnJvbU5TU3Ry
aW5nQXJyYXkoTlNBcnJheTxOU1N0cmluZyAqPiAqbnNTdHJpbmdBcnJheSkKK3sKKyAgICBWZWN0
b3I8U3RyaW5nPiBzdHJpbmdWZWN0b3I7CisgICAgc3RyaW5nVmVjdG9yLnJlc2VydmVJbml0aWFs
Q2FwYWNpdHkoW25zU3RyaW5nQXJyYXkgY291bnRdKTsKKworICAgIGZvciAoTlNTdHJpbmcgKm5z
U3RyaW5nIGluIG5zU3RyaW5nQXJyYXkpCisgICAgICAgIHN0cmluZ1ZlY3Rvci51bmNoZWNrZWRB
cHBlbmQobnNTdHJpbmcpOworCisgICAgcmV0dXJuIHN0cmluZ1ZlY3RvcjsKK30KKwogfQpJbmRl
eDogU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVy
cy5jcHAJKHJldmlzaW9uIDIzNzM5NikKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VD
cmVhdGlvblBhcmFtZXRlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Niw2ICs5Niw3IEBAIHZv
aWQgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKEkKICNlbmRpZgogI2lmIFBMQVRG
T1JNKENPQ09BKQogICAgIGVuY29kZXIgPDwgc21hcnRJbnNlcnREZWxldGVFbmFibGVkOworICAg
IGVuY29kZXIgPDwgc3VwcG9ydGVkQWRkaXRpb25hbEltYWdlU291cmNlVHlwZXM7CiAjZW5kaWYK
ICAgICBlbmNvZGVyIDw8IGFwcGxlTWFpbFBhZ2luYXRpb25RdWlya0VuYWJsZWQ7CiAgICAgZW5j
b2RlciA8PCBhcHBsZU1haWxMaW5lc0NsYW1wRW5hYmxlZDsKQEAgLTI2OSw2ICsyNzAsOCBAQCBz
dGQ6Om9wdGlvbmFsPFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM+CiAjaWYgUExBVEZPUk0oQ09D
T0EpCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnNtYXJ0SW5zZXJ0RGVsZXRl
RW5hYmxlZCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShwYXJhbWV0ZXJzLnN1cHBvcnRlZEFkZGl0aW9uYWxJbWFnZVNvdXJjZVR5cGVzKSkK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICNlbmRpZgogCiAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShwYXJhbWV0ZXJzLmFwcGxlTWFpbFBhZ2luYXRpb25RdWlya0VuYWJsZWQpKQpJbmRl
eDogU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMu
aAkocmV2aXNpb24gMjM3Mzk2KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0
aW9uUGFyYW1ldGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTMsNiArMTUzLDcgQEAgc3RydWN0
IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgewogI2VuZGlmCiAjaWYgUExBVEZPUk0oQ09DT0Ep
CiAgICAgYm9vbCBzbWFydEluc2VydERlbGV0ZUVuYWJsZWQ7CisgICAgVmVjdG9yPFN0cmluZz4g
c3VwcG9ydGVkQWRkaXRpb25hbEltYWdlU291cmNlVHlwZXM7CiAjZW5kaWYKICAgICBib29sIGFw
cGxlTWFpbFBhZ2luYXRpb25RdWlya0VuYWJsZWQ7CiAgICAgYm9vbCBhcHBsZU1haWxMaW5lc0Ns
YW1wRW5hYmxlZDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cAkocmV2aXNpb24gMjM3Mzk2KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjM5NCw2ICs2Mzk0LDcgQEAgV2ViUGFnZUNyZWF0
aW9uUGFyYW1ldGVycyBXZWJQYWdlUHJveHk6OgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAg
cGFyYW1ldGVycy5zbWFydEluc2VydERlbGV0ZUVuYWJsZWQgPSBtX2lzU21hcnRJbnNlcnREZWxl
dGVFbmFibGVkOworICAgIHBhcmFtZXRlcnMuc3VwcG9ydGVkQWRkaXRpb25hbEltYWdlU291cmNl
VHlwZXMgPSBtX2NvbmZpZ3VyYXRpb24tPnN1cHBvcnRlZEFkZGl0aW9uYWxJbWFnZVNvdXJjZVR5
cGVzKCk7CiAjZW5kaWYKICAgICBwYXJhbWV0ZXJzLnNob3VsZFNjYWxlVmlld1RvRml0RG9jdW1l
bnQgPSBtX3Nob3VsZFNjYWxlVmlld1RvRml0RG9jdW1lbnQ7CiAgICAgcGFyYW1ldGVycy51c2Vy
SW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uID0gcGFnZUNsaWVudCgpLnVzZXJJbnRlcmZhY2VMYXlv
dXREaXJlY3Rpb24oKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
CShyZXZpc2lvbiAyMzczOTYpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaAkod29ya2luZyBjb3B5KQpAQCAtMTM1NywxMCArMTM1Nyw2IEBAIHB1YmxpYzoKIAogICAg
IFdlYkNvcmU6OkludFJlY3Qgc3luY1Jvb3RWaWV3VG9TY3JlZW4oY29uc3QgV2ViQ29yZTo6SW50
UmVjdCYgdmlld1JlY3QpOwogCi0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgVmVjdG9yPFN0cmlu
Zz4gbWVkaWFNSU1FVHlwZXMoKTsKLSNlbmRpZgotCiAjaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1F
TlQpCiAgICAgdm9pZCBkaWRTZWxlY3RPcHRpb24oY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBk
aWRDbG9zZVN1Z2dlc3Rpb25zKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJUGFnZUNvbmZpZ3VyYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uaAkocmV2aXNpb24gMjM3Mzk2KQorKysgU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTExMCw2ICsxMTAsMTEgQEAgcHVibGljOgogICAgIGNvbnN0IFdURjo6U3RyaW5n
JiBvdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeSgpIGNvbnN0IHsgcmV0dXJuIG1fb3ZlcnJp
ZGVDb250ZW50U2VjdXJpdHlQb2xpY3k7IH0KICAgICB2b2lkIHNldE92ZXJyaWRlQ29udGVudFNl
Y3VyaXR5UG9saWN5KGNvbnN0IFdURjo6U3RyaW5nJiBvdmVycmlkZUNvbnRlbnRTZWN1cml0eVBv
bGljeSkgeyBtX292ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5ID0gb3ZlcnJpZGVDb250ZW50
U2VjdXJpdHlQb2xpY3k7IH0KIAorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIGNvbnN0IFdURjo6
VmVjdG9yPFdURjo6U3RyaW5nPiYgc3VwcG9ydGVkQWRkaXRpb25hbEltYWdlU291cmNlVHlwZXMo
KSBjb25zdCB7IHJldHVybiBtX3N1cHBvcnRlZEFkZGl0aW9uYWxJbWFnZVNvdXJjZVR5cGVzOyB9
CisgICAgdm9pZCBzZXRTdXBwb3J0ZWRBZGRpdGlvbmFsSW1hZ2VTb3VyY2VUeXBlcyhXVEY6OlZl
Y3RvcjxXVEY6OlN0cmluZz4mJiBzdXBwb3J0ZWRBZGRpdGlvbmFsSW1hZ2VTb3VyY2VUeXBlcykg
eyBtX3N1cHBvcnRlZEFkZGl0aW9uYWxJbWFnZVNvdXJjZVR5cGVzID0gV1RGTW92ZShzdXBwb3J0
ZWRBZGRpdGlvbmFsSW1hZ2VTb3VyY2VUeXBlcyk7IH0KKyNlbmRpZgorCiAjaWYgRU5BQkxFKEFQ
UExJQ0FUSU9OX01BTklGRVNUKQogICAgIEFwcGxpY2F0aW9uTWFuaWZlc3QqIGFwcGxpY2F0aW9u
TWFuaWZlc3QoKSBjb25zdDsKICAgICB2b2lkIHNldEFwcGxpY2F0aW9uTWFuaWZlc3QoQXBwbGlj
YXRpb25NYW5pZmVzdCopOwpAQCAtMTQ2LDYgKzE1MSwxMCBAQCBwcml2YXRlOgogCiAgICAgV1RG
OjpTdHJpbmcgbV9vdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeTsKIAorI2lmIFBMQVRGT1JN
KENPQ09BKQorICAgIFdURjo6VmVjdG9yPFdURjo6U3RyaW5nPiBtX3N1cHBvcnRlZEFkZGl0aW9u
YWxJbWFnZVNvdXJjZVR5cGVzOworI2VuZGlmCisKICNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFO
SUZFU1QpCiAgICAgUmVmUHRyPEFwcGxpY2F0aW9uTWFuaWZlc3Q+IG1fYXBwbGljYXRpb25NYW5p
ZmVzdDsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3Lm1tCShyZXZpc2lvbiAyMzczOTYpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC00Niw2ICs0Niw3
IEBACiAjaW1wb3J0ICJSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5oIgogI2ltcG9ydCAiUmVt
b3RlT2JqZWN0UmVnaXN0cnkuaCIKICNpbXBvcnQgIlJlbW90ZU9iamVjdFJlZ2lzdHJ5TWVzc2Fn
ZXMuaCIKKyNpbXBvcnQgIlN0cmluZ1V0aWxpdGllcy5oIgogI2ltcG9ydCAiVUlEZWxlZ2F0ZS5o
IgogI2ltcG9ydCAiVXNlck1lZGlhUHJvY2Vzc01hbmFnZXIuaCIKICNpbXBvcnQgIlZlcnNpb25D
aGVja3MuaCIKQEAgLTU2OCw2ICs1NjksOCBAQCAtICh2b2lkKV9pbml0aWFsaXplV2l0aENvbmZp
Z3VyYXRpb246KFdLCiAgICAgICAgICAgICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0UGFnZUdyb3Vw
KFdlYktpdDo6V2ViUGFnZUdyb3VwOjpjcmVhdGUoY29uZmlndXJhdGlvbi5fZ3JvdXBJZGVudGlm
aWVyKS5wdHIoKSk7CiAgICAgfQogCisgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFN1cHBvcnRl
ZEFkZGl0aW9uYWxJbWFnZVNvdXJjZVR5cGVzKFdlYktpdDo6d2ViQ29yZVN0cmluZ1ZlY3RvckZy
b21OU1N0cmluZ0FycmF5KFtfY29uZmlndXJhdGlvbiBfc3VwcG9ydGVkQWRkaXRpb25hbEltYWdl
U291cmNlVHlwZXNdKSk7CisKICAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZVZhbHVl
cygpLnNldChXZWJLaXQ6OldlYlByZWZlcmVuY2VzS2V5OjpzdXBwcmVzc2VzSW5jcmVtZW50YWxS
ZW5kZXJpbmdLZXkoKSwgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1ZSghIVtfY29u
ZmlndXJhdGlvbiBzdXBwcmVzc2VzSW5jcmVtZW50YWxSZW5kZXJpbmddKSk7CiAKICAgICBwYWdl
Q29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZVZhbHVlcygpLnNldChXZWJLaXQ6OldlYlByZWZlcmVu
Y2VzS2V5OjpzaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbktleSgpLCBXZWJLaXQ6OldlYlBy
ZWZlcmVuY2VzU3RvcmU6OlZhbHVlKCEhW19jb25maWd1cmF0aW9uIF9yZXNwZWN0c0ltYWdlT3Jp
ZW50YXRpb25dKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3Q29uZmlndXJhdGlvbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbQkocmV2aXNpb24gMjM3Mzk2
KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3Vy
YXRpb24ubW0JKHdvcmtpbmcgY29weSkKQEAgLTE2MSw2ICsxNjEsNyBAQCBzdGF0aWMgX1dLRHJh
Z0xpZnREZWxheSB0b0RyYWdMaWZ0RGVsYXkoCiAgICAgQk9PTCBfZHJhd3NCYWNrZ3JvdW5kOwog
CiAgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBfbWVkaWFDb250ZW50VHlwZXNSZXF1aXJpbmdIYXJk
d2FyZVN1cHBvcnQ7CisgICAgUmV0YWluUHRyPE5TQXJyYXk8TlNTdHJpbmcgKj4+IF9zdXBwb3J0
ZWRBZGRpdGlvbmFsSW1hZ2VTb3VyY2VUeXBlczsKIH0KIAogLSAoaW5zdGFuY2V0eXBlKWluaXQK
QEAgLTM5NCw2ICszOTUsNyBAQCAtIChpZCljb3B5V2l0aFpvbmU6KE5TWm9uZSAqKXpvbmUKICAg
ICBjb25maWd1cmF0aW9uLT5fbmVlZHNTdG9yYWdlQWNjZXNzRnJvbUZpbGVVUkxzUXVpcmsgPSBz
ZWxmLT5fbmVlZHNTdG9yYWdlQWNjZXNzRnJvbUZpbGVVUkxzUXVpcms7CiAKICAgICBjb25maWd1
cmF0aW9uLT5fbWVkaWFDb250ZW50VHlwZXNSZXF1aXJpbmdIYXJkd2FyZVN1cHBvcnQgPSBhZG9w
dE5TKFtzZWxmLl9tZWRpYUNvbnRlbnRUeXBlc1JlcXVpcmluZ0hhcmR3YXJlU3VwcG9ydCBjb3B5
V2l0aFpvbmU6em9uZV0pOworICAgIGNvbmZpZ3VyYXRpb24tPl9zdXBwb3J0ZWRBZGRpdGlvbmFs
SW1hZ2VTb3VyY2VUeXBlcyA9IGFkb3B0TlMoW3NlbGYtPl9zdXBwb3J0ZWRBZGRpdGlvbmFsSW1h
Z2VTb3VyY2VUeXBlcyBjb3B5V2l0aFpvbmU6em9uZV0pOwogICAgIGNvbmZpZ3VyYXRpb24tPl9s
ZWdhY3lFbmNyeXB0ZWRNZWRpYUFQSUVuYWJsZWQgPSBzZWxmLT5fbGVnYWN5RW5jcnlwdGVkTWVk
aWFBUElFbmFibGVkOwogICAgIGNvbmZpZ3VyYXRpb24tPl9hbGxvd01lZGlhQ29udGVudFR5cGVz
UmVxdWlyaW5nSGFyZHdhcmVTdXBwb3J0QXNGYWxsYmFjayA9IHNlbGYtPl9hbGxvd01lZGlhQ29u
dGVudFR5cGVzUmVxdWlyaW5nSGFyZHdhcmVTdXBwb3J0QXNGYWxsYmFjazsKIApAQCAtOTkwLDYg
Kzk5MiwxNiBAQCAtICh2b2lkKV9zZXRNZWRpYUNvbnRlbnRUeXBlc1JlcXVpcmluZ0hhCiAgICAg
X21lZGlhQ29udGVudFR5cGVzUmVxdWlyaW5nSGFyZHdhcmVTdXBwb3J0ID0gYWRvcHROUyhbbWVk
aWFDb250ZW50VHlwZXNSZXF1aXJpbmdIYXJkd2FyZVN1cHBvcnQgY29weV0pOwogfQogCistIChO
U0FycmF5PE5TU3RyaW5nICo+ICopX3N1cHBvcnRlZEFkZGl0aW9uYWxJbWFnZVNvdXJjZVR5cGVz
Cit7CisgICAgcmV0dXJuIF9zdXBwb3J0ZWRBZGRpdGlvbmFsSW1hZ2VTb3VyY2VUeXBlcy5nZXQo
KTsKK30KKworLSAodm9pZClfc2V0U3VwcG9ydGVkQWRkaXRpb25hbEltYWdlU291cmNlVHlwZXM6
KE5TQXJyYXk8TlNTdHJpbmcgKj4gKilzdXBwb3J0ZWRBZGRpdGlvbmFsSW1hZ2VTb3VyY2VUeXBl
cworeworICAgIF9zdXBwb3J0ZWRBZGRpdGlvbmFsSW1hZ2VTb3VyY2VUeXBlcyA9IGFkb3B0TlMo
W3N1cHBvcnRlZEFkZGl0aW9uYWxJbWFnZVNvdXJjZVR5cGVzIGNvcHldKTsKK30KKwogLSAodm9p
ZClfc2V0TGVnYWN5RW5jcnlwdGVkTWVkaWFBUElFbmFibGVkOihCT09MKWVuYWJsZWQKIHsKICAg
ICBfbGVnYWN5RW5jcnlwdGVkTWVkaWFBUElFbmFibGVkID0gZW5hYmxlZDsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oCShyZXZpc2lvbiAyMzczOTYpCisrKyBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvblByaXZhdGUu
aAkod29ya2luZyBjb3B5KQpAQCAtMTAxLDYgKzEwMSw3IEBAIHR5cGVkZWYgTlNfRU5VTShOU1VJ
bnRlZ2VyLCBfV0tEcmFnTGlmdEQKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldE1l
ZGlhQ29udGVudFR5cGVzUmVxdWlyaW5nSGFyZHdhcmVTdXBwb3J0OikgTlNTdHJpbmcgKl9tZWRp
YUNvbnRlbnRUeXBlc1JlcXVpcmluZ0hhcmR3YXJlU3VwcG9ydCBXS19BUElfQVZBSUxBQkxFKG1h
Y29zeCgxMC4xMyksIGlvcygxMS4wKSk7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9z
ZXRMZWdhY3lFbmNyeXB0ZWRNZWRpYUFQSUVuYWJsZWQ6KSBCT09MIF9sZWdhY3lFbmNyeXB0ZWRN
ZWRpYUFQSUVuYWJsZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTMpLCBpb3MoMTEuMCkp
OwogQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0QWxsb3dNZWRpYUNvbnRlbnRUeXBl
c1JlcXVpcmluZ0hhcmR3YXJlU3VwcG9ydEFzRmFsbGJhY2s6KSBCT09MIF9hbGxvd01lZGlhQ29u
dGVudFR5cGVzUmVxdWlyaW5nSGFyZHdhcmVTdXBwb3J0QXNGYWxsYmFjayBXS19BUElfQVZBSUxB
QkxFKG1hY29zeCgxMC4xMyksIGlvcygxMS4wKSk7CitAcHJvcGVydHkgKG5vbmF0b21pYywgY29w
eSwgc2V0dGVyPV9zZXRTdXBwb3J0ZWRBZGRpdGlvbmFsSW1hZ2VTb3VyY2VUeXBlczopIE5TQXJy
YXk8TlNTdHJpbmcgKj4gKl9zdXBwb3J0ZWRBZGRpdGlvbmFsSW1hZ2VTb3VyY2VUeXBlcyBXS19B
UElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIAogQGVu
ZAogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cAkocmV2aXNpb24gMjM3Mzk2KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0Niw2ICsyNDYsNyBAQAogI2luY2x1ZGUg
IlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIuaCIKICNpbmNsdWRlICJXS1N0cmluZ0NGLmgiCiAjaW5j
bHVkZSA8V2ViQ29yZS9MZWdhY3lXZWJBcmNoaXZlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9VVElS
ZWdpc3RyeS5oPgogI2luY2x1ZGUgPHd0Zi9NYWNoU2VuZFJpZ2h0Lmg+CiAjZW5kaWYKIApAQCAt
NTkyLDYgKzU5Myw3IEBAIFdlYlBhZ2U6OldlYlBhZ2UodWludDY0X3QgcGFnZUlELCBXZWJQYWcK
ICNpZiBQTEFURk9STShDT0NPQSkKICAgICBtX3BhZ2UtPnNldHRpbmdzKCkuc2V0Q29udGVudERp
c3Bvc2l0aW9uQXR0YWNobWVudFNhbmRib3hFbmFibGVkKHRydWUpOwogICAgIHNldFNtYXJ0SW5z
ZXJ0RGVsZXRlRW5hYmxlZChwYXJhbWV0ZXJzLnNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCk7Cisg
ICAgV2ViQ29yZTo6c2V0U3VwcG9ydGVkQWRkaXRpb25hbEltYWdlU291cmNlVHlwZXMocGFyYW1l
dGVycy5zdXBwb3J0ZWRBZGRpdGlvbmFsSW1hZ2VTb3VyY2VUeXBlcyk7CiAjZW5kaWYKIAogI2lm
IEVOQUJMRShTRVJWSUNFX1dPUktFUikKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzNzM5OSkKKysrIFRvb2xzL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDE4LTEwLTI0ICBTYWlkIEFib3Ut
SGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGFuIFNQSSB0
byBhbGxvdyBXZWJWaWV3IGNsaWVudHMgdG8gYWRkIGFkZGl0aW9uYWwgc3VwcG9ydGVkIGltYWdl
IGZvcm1hdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE5MDQ1NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFRlc3Qgb3BlbmluZyBhIFRHQSBpbWFnZSBpbiBXZWJWaWV3IHdoaWNoIGlzIG5vdCBhbGxvd2Vk
IGJ5IGRlZmF1bHQuIFRoZQorICAgICAgICBUR0EgZm9ybWF0IHdpbGwgYmUgYWxsb3dlZCB0aHJv
dWdoIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24uCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hLzEwMHgxMDAtcmVkLnRnYTogQWRkZWQuCisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS80MDB4NDAwLWdyZWVuLnBuZzogQWRk
ZWQuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TdXBwb3J0ZWRB
ZGRpdGlvbmFsSW1hZ2VTb3VyY2VUeXBlcy5tbTogQWRkZWQuCisgICAgICAgIChydW5UZXN0KToK
KyAgICAgICAgKFRFU1QpOgorCiAyMDE4LTEwLTI0ICBQYWJsbyBTYWF2ZWRyYSAgPHBzYWF2ZWRy
YUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtXUEVdIEZpeCBDTWFrZSBydWxlcyBpbiBmb3IgVGVz
dFdlYktpdEFQSUJhc2UgbGlicmFyeSBidWlsZGluZyBpbiBkZXZlbG9wZXIgbW9kZQpJbmRleDog
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDIzNzM5NikKKysrIFRvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNv
cHkpCkBAIC0yNDIsNiArMjQyLDkgQEAKIAkJNTNFQzI1NDExRTk2RkQ4NzAwMDgzMUI5IC8qIFBy
aW9yaXR5UXVldWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTNFQzI1M0YxRTk2QkM4MDAwMDgzMUI5IC8qIFByaW9yaXR5UXVldWUuY3BwICovOyB9
OwogCQk1NTIyNkEyRjFFQkE0NEI5MDBDMzZBRDAgLyogbGFyZ2UtcmVkLXNxdWFyZS1pbWFnZS5o
dG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDU1MjI2QTJFMUVCOTY5QjYwMEMzNkFEMCAvKiBsYXJnZS1yZWQtc3F1YXJlLWltYWdlLmh0bWwg
Ki87IH07CiAJCTU1OTdGODM2MUQ5NTk2QzgwMDY2QkMyMSAvKiBTeW5jaHJvbml6ZWRGaXhlZFF1
ZXVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1
OTdGODM0MUQ5NTk2QzgwMDY2QkMyMSAvKiBTeW5jaHJvbml6ZWRGaXhlZFF1ZXVlLmNwcCAqLzsg
fTsKKwkJNTVBODE3RkMyMTgxMDBFMDAwMDRBMzlBIC8qIFN1cHBvcnRlZEFkZGl0aW9uYWxJbWFn
ZVNvdXJjZVR5cGVzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTVBODE3RkIyMTgxMDBFMDAwMDRBMzlBIC8qIFN1cHBvcnRlZEFkZGl0aW9uYWxJbWFn
ZVNvdXJjZVR5cGVzLm1tICovOyB9OworCQk1NUE4MTdGRjIxODEwMjFBMDAwNEEzOUEgLyogMTAw
eDEwMC1yZWQudGdhIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDU1QTgxN0ZFMjE4MTAxREYwMDA0QTM5QSAvKiAxMDB4MTAwLXJlZC50Z2EgKi87
IH07CisJCTU1QTgxODAwMjE4MTAyMjEwMDA0QTM5QSAvKiA0MDB4NDAwLWdyZWVuLnBuZyBpbiBD
b3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NUE4MTdG
RDIxODEwMURGMDAwNEEzOUEgLyogNDAweDQwMC1ncmVlbi5wbmcgKi87IH07CiAJCTU3MTRFQ0I5
MUNBOEI1QjAwMDA1MUFDOCAvKiBEb3dubG9hZFJlcXVlc3RPcmlnaW5hbFVSTC5odG1sIGluIENv
cHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3MTRFQ0I4
MUNBOEI1ODgwMDA1MUFDOCAvKiBEb3dubG9hZFJlcXVlc3RPcmlnaW5hbFVSTC5odG1sICovOyB9
OwogCQk1NzE0RUNCQjFDQThCRkU0MDAwNTFBQzggLyogRG93bmxvYWRSZXF1ZXN0T3JpZ2luYWxV
UkxGcmFtZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDU3MTRFQ0JBMUNBOEJGRDEwMDA1MUFDOCAvKiBEb3dubG9hZFJlcXVlc3RPcmln
aW5hbFVSTEZyYW1lLmh0bWwgKi87IH07CiAJCTU3MTRFQ0JEMUNBOEMyMkEwMDA1MUFDOCAvKiBE
b3dubG9hZFJlcXVlc3RPcmlnaW5hbFVSTDIuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzE0RUNCQzFDQThDMjE4MDAwNTFBQzggLyog
RG93bmxvYWRSZXF1ZXN0T3JpZ2luYWxVUkwyLmh0bWwgKi87IH07CkBAIC05NDMsNyArOTQ2LDkg
QEAKIAkJCWRzdFBhdGggPSBUZXN0V2ViS2l0QVBJLnJlc291cmNlczsKIAkJCWRzdFN1YmZvbGRl
clNwZWMgPSA3OwogCQkJZmlsZXMgPSAoCisJCQkJNTVBODE3RkYyMTgxMDIxQTAwMDRBMzlBIC8q
IDEwMHgxMDAtcmVkLnRnYSBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQkxQTlFNTJDOTEzRTY1
RUY0MDA2OTE3RjUgLyogMTgtY2hhcmFjdGVycy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAor
CQkJCTU1QTgxODAwMjE4MTAyMjEwMDA0QTM5QSAvKiA0MDB4NDAwLWdyZWVuLnBuZyBpbiBDb3B5
IFJlc291cmNlcyAqLywKIAkJCQkzNzkwMjhCOTE0RkFDMjRDMDA3RTZCNDMgLyogYWNjZXB0c0Zp
cnN0TW91c2UuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQkxQzJCODE4NzFDODkyNUEw
MDBBNTUyOUYgLyogQWhlbS50dGYgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJMUE2MzQ3OUYx
ODNENzJBNDAwNUIxNzA3IC8qIGFsbC1jb250ZW50LWluLW9uZS1pZnJhbWUuaHRtbCBpbiBDb3B5
IFJlc291cmNlcyAqLywKQEAgLTE1NDcsNiArMTU1Miw5IEBACiAJCTUzRUMyNTNGMUU5NkJDODAw
MDA4MzFCOSAvKiBQcmlvcml0eVF1ZXVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFByaW9yaXR5UXVldWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1NTIyNkEyRTFFQjk2OUI2MDBDMzZBRDAgLyogbGFyZ2UtcmVkLXNxdWFyZS1pbWFnZS5odG1s
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gImxhcmdlLXJlZC1zcXVhcmUtaW1hZ2UuaHRt
bCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU1OTdGODM0MUQ5NTk2QzgwMDY2QkMy
MSAvKiBTeW5jaHJvbml6ZWRGaXhlZFF1ZXVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFN5bmNocm9uaXplZEZpeGVkUXVldWUuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk1NUE4MTdGQjIxODEwMEUwMDAwNEEzOUEgLyogU3VwcG9ydGVkQWRkaXRp
b25hbEltYWdlU291cmNlVHlwZXMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTdXBwb3J0ZWRB
ZGRpdGlvbmFsSW1hZ2VTb3VyY2VUeXBlcy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNTVBODE3RkQyMTgxMDFERjAwMDRBMzlBIC8qIDQwMHg0MDAtZ3JlZW4ucG5nICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gaW1hZ2UucG5nOyBwYXRo
ID0gIjQwMHg0MDAtZ3JlZW4ucG5nIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTVB
ODE3RkUyMTgxMDFERjAwMDRBMzlBIC8qIDEwMHgxMDAtcmVkLnRnYSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGZpbGU7IHBhdGggPSAiMTAweDEwMC1y
ZWQudGdhIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTcxNEVDQjgxQ0E4QjU4ODAw
MDUxQUM4IC8qIERvd25sb2FkUmVxdWVzdE9yaWdpbmFsVVJMLmh0bWwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
Lmh0bWw7IHBhdGggPSBEb3dubG9hZFJlcXVlc3RPcmlnaW5hbFVSTC5odG1sOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1NzE0RUNCQTFDQThCRkQxMDAwNTFBQzggLyogRG93bmxvYWRS
ZXF1ZXN0T3JpZ2luYWxVUkxGcmFtZS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0g
RG93bmxvYWRSZXF1ZXN0T3JpZ2luYWxVUkxGcmFtZS5odG1sOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1NzE0RUNCQzFDQThDMjE4MDAwNTFBQzggLyogRG93bmxvYWRSZXF1ZXN0T3Jp
Z2luYWxVUkwyLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSBEb3dubG9hZFJlcXVl
c3RPcmlnaW5hbFVSTDIuaHRtbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI0MzYs
NiArMjQ0NCw3IEBACiAJCQkJMkQ5QTUzQUUxQjMxRkE4RDAwNzRENUFBIC8qIFNocmlua1RvRml0
Lm1tICovLAogCQkJCTJERkY3QjZDMURBNDg3QUYwMDgxNDYxNCAvKiBTbmFwc2hvdFN0b3JlLm1t
ICovLAogCQkJCTUxNUJFMTcwMUQ0MjhCRDEwMEREN0M2OCAvKiBTdG9yZUJsb2JUaGVuRGVsZXRl
Lm1tICovLAorCQkJCTU1QTgxN0ZCMjE4MTAwRTAwMDA0QTM5QSAvKiBTdXBwb3J0ZWRBZGRpdGlv
bmFsSW1hZ2VTb3VyY2VUeXBlcy5tbSAqLywKIAkJCQkxQzczNEI1MjIwNzg4QzQ4MDBGNDMwRUEg
LyogU3lzdGVtQ29sb3JzLm1tICovLAogCQkJCUY0Q0Q3NEM3MjBGREI0OTYwMERFMzc5NCAvKiBU
ZXN0VVJMU2NoZW1lSGFuZGxlci5oICovLAogCQkJCUY0Q0Q3NEM4MjBGREI0OTYwMERFMzc5NCAv
KiBUZXN0VVJMU2NoZW1lSGFuZGxlci5tbSAqLywKQEAgLTI2NTEsNiArMjY2MCw4IEBACiAJCUEx
NkY2NkI4MUM0MEU5RTEwMEJENEQyNCAvKiBSZXNvdXJjZXMgKi8gPSB7CiAJCQlpc2EgPSBQQlhH
cm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTU1QTgxN0ZFMjE4MTAxREYwMDA0QTM5QSAvKiAx
MDB4MTAwLXJlZC50Z2EgKi8sCisJCQkJNTVBODE3RkQyMTgxMDFERjAwMDRBMzlBIC8qIDQwMHg0
MDAtZ3JlZW4ucG5nICovLAogCQkJCUMyNUNDQTBDMUU1MTQwRTUwMDI2Q0I4QSAvKiBBbGxBaGVt
LnN2ZyAqLywKIAkJCQlGNEE5MjAyRTFGRUUzNEM4MDBGNTk1OTAgLyogYXBwbGUtZGF0YS11cmwu
aHRtbCAqLywKIAkJCQlGNDdEMzBFQjFFRDI4NjE5MDAwNDgyRTEgLyogYXBwbGUuZ2lmICovLApA
QCAtNDAyNCw2ICs0MDM1LDcgQEAKIAkJCQlFQ0E2ODBDRTFFNjhDQzA5MDA3MzFEMjAgLyogU3Ry
aW5nVXRpbGl0aWVzLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0U0RDVERTcxRjY3NDNCQTAwNzJD
RkM2IC8qIFN0cmluZ1dpdGhEaXJlY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdF
RDIxQTQxMUE3RTAwNDQ3QzRDIC8qIFN1YnJlc291cmNlRXJyb3JDcmFzaC5tbSBpbiBTb3VyY2Vz
ICovLAorCQkJCTU1QTgxN0ZDMjE4MTAwRTAwMDA0QTM5QSAvKiBTdXBwb3J0ZWRBZGRpdGlvbmFs
SW1hZ2VTb3VyY2VUeXBlcy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTQ0MzNBMzk2MjA4MDQ0MTQw
MDkxRUQ1NyAvKiBTeW5jaHJvbm91c1RpbWVvdXRUZXN0cy5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTdDQ0U3RUE4MUE0MTFBMTkwMDQ0N0M0QyAvKiBTeW50aGV0aWNCYWNraW5nU2NhbGVGYWN0b3JX
aW5kb3cubSBpbiBTb3VyY2VzICovLAogCQkJCTFDNzM0QjUzMjA3ODhDNDgwMEY0MzBFQSAvKiBT
eXN0ZW1Db2xvcnMubW0gaW4gU291cmNlcyAqLywKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvU3VwcG9ydGVkQWRkaXRpb25hbEltYWdlU291cmNlVHlwZXMubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TdXBw
b3J0ZWRBZGRpdGlvbmFsSW1hZ2VTb3VyY2VUeXBlcy5tbQkobm9uZXhpc3RlbnQpCisrKyBUb29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1N1cHBvcnRlZEFkZGl0aW9uYWxJbWFn
ZVNvdXJjZVR5cGVzLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsODkgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgPFdlYktpdC9XS0ZvdW5kYXRpb24uaD4K
KworI2lmIFdLX0FQSV9FTkFCTEVEICYmIFBMQVRGT1JNKENPQ09BKQorCisjaW1wb3J0ICJQbGF0
Zm9ybVV0aWxpdGllcy5oIgorI2ltcG9ydCAiVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5oIgorI2lt
cG9ydCAiV0tXZWJWaWV3Q29uZmlndXJhdGlvbkV4dHJhcy5oIgorI2ltcG9ydCA8V2ViS2l0L1dL
V2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+
CisKK3N0YXRpYyB2b2lkIHJ1blRlc3QoTlNBcnJheTxOU1N0cmluZyAqPiAqc3VwcG9ydGVkQWRk
aXRpb25hbEltYWdlU291cmNlVHlwZXMsIE5TU3RyaW5nICppbWFnZVVSTCwgTlNTdHJpbmcgKmlt
YWdlRXh0ZW5zaW9uLCBDR0Zsb2F0IGltYWdlV2lkdGgpCit7CisgICAgUmV0YWluUHRyPFdLV2Vi
Vmlld0NvbmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29u
ZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIFtjb25maWd1cmF0aW9uIF9zZXRTdXBwb3J0
ZWRBZGRpdGlvbmFsSW1hZ2VTb3VyY2VUeXBlczpzdXBwb3J0ZWRBZGRpdGlvbmFsSW1hZ2VTb3Vy
Y2VUeXBlc107CisKKyAgICBSZXRhaW5QdHI8V0tXZWJWaWV3PiB3ZWJWaWV3ID0gYWRvcHROUyhb
W1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAw
KSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKworICAgIFJldGFpblB0cjxO
U1VSTD4gdGVzdFVSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6aW1h
Z2VVUkwgd2l0aEV4dGVuc2lvbjppbWFnZUV4dGVuc2lvbiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2Vi
S2l0QVBJLnJlc291cmNlcyJdOworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVl
c3QgcmVxdWVzdFdpdGhVUkw6dGVzdFVSTC5nZXQoKV1dOworICAgIFt3ZWJWaWV3IF90ZXN0X3dh
aXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsKKworICAgIF9fYmxvY2sgYm9vbCBpc0RvbmUgPSBm
YWxzZTsKKyAgICBbd2ViVmlldyBfZG9BZnRlck5leHRQcmVzZW50YXRpb25VcGRhdGU6XnsKKyAg
ICAgICAgW3dlYlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0OkAiW2RvY3VtZW50LnF1ZXJ5U2VsZWN0
b3IoJ2ltZycpLndpZHRoXSIgY29tcGxldGlvbkhhbmRsZXI6XihpZCB2YWx1ZSwgTlNFcnJvciAq
ZXJyb3IpIHsKKyAgICAgICAgICAgIENHRmxvYXQgd2lkdGggPSBbW3ZhbHVlIG9iamVjdEF0SW5k
ZXg6MF0gZmxvYXRWYWx1ZV07CisgICAgICAgICAgICBFWFBFQ1RfRVEod2lkdGgsIGltYWdlV2lk
dGgpOworICAgICAgICAgICAgaXNEb25lID0gdHJ1ZTsKKyAgICAgICAgfV07CisgICAgfV07Cisg
ICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOworfQorCitURVNUKFdlYktpdCwg
QWRkU3VwcG9ydGVkSW1hZ2VTb3VyY2VUeXBlKQoreworICAgIHJ1blRlc3QoQFtAInB1YmxpYy5w
bmciXSwgQCI0MDB4NDAwLWdyZWVuIiwgQCJwbmciLCA0MDApOworfQorCitURVNUKFdlYktpdCwg
QWRkU3VwcG9ydGVkQW5kQm9ndXNJbWFnZVNvdXJjZVR5cGVzKQoreworICAgIHJ1blRlc3QoQFtA
InB1YmxpYy5wbmciLCBAInB1YmxpYy5ib2d1cyJdLCBAIjQwMHg0MDAtZ3JlZW4iLCBAInBuZyIs
IDQwMCk7Cit9CisKK1RFU1QoV2ViS2l0LCBBZGRTdXBwb3J0ZWRBbmRCb2d1c0ltYWdlU291cmNl
VHlwZXNUd2ljZSkKK3sKKyAgICBydW5UZXN0KEBbQCJwdWJsaWMucG5nIiwgQCJwdWJsaWMuYm9n
dXMiLCBAInB1YmxpYy5wbmciLCBAInB1YmxpYy5ib2d1cyJdLCBAIjQwMHg0MDAtZ3JlZW4iLCBA
InBuZyIsIDQwMCk7Cit9CisKK1RFU1QoV2ViS2l0LCBBZGRVbnN1cHBvcnRlZEltYWdlU291cmNl
VHlwZSkKK3sKKyAgICBydW5UZXN0KEBbQCJjb20udHJ1ZXZpc2lvbi50Z2EtaW1hZ2UiXSwgQCIx
MDB4MTAwLXJlZCIsIEAidGdhIiwgMTAwKTsKK30KKworVEVTVChXZWJLaXQsIEFkZFVuc3VwcG9y
dGVkQW5kQm9ndXNJbWFnZVNvdXJjZVR5cGVzKQoreworICAgIHJ1blRlc3QoQFtAImNvbS50cnVl
dmlzaW9uLnRnYS1pbWFnZSIsIEAicHVibGljLmJvZ3VzIl0sIEAiMTAweDEwMC1yZWQiLCBAInRn
YSIsIDEwMCk7Cit9CisKK1RFU1QoV2ViS2l0LCBBZGRVbnN1cHBvcnRlZEFuZEJvZ3VzSW1hZ2VT
b3VyY2VUeXBlc1R3aWNlKQoreworICAgIHJ1blRlc3QoQFtAImNvbS50cnVldmlzaW9uLnRnYS1p
bWFnZSIsIEAicHVibGljLmJvZ3VzIiwgQCJjb20udHJ1ZXZpc2lvbi50Z2EtaW1hZ2UiLCBAInB1
YmxpYy5ib2d1cyJdLCBAIjEwMHgxMDAtcmVkIiwgQCJ0Z2EiLCAxMDApOworfQorCisjZW5kaWYK
SW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvMTAweDEwMC1yZWQu
dGdhCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KQ2Fubm90IGRpc3BsYXk6IGZpbGUgbWFya2VkIGFzIGEgYmluYXJ5IHR5
cGUuCnN2bjptaW1lLXR5cGUgPSBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0KClByb3BlcnR5IGNo
YW5nZXMgb246IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvMTAweDEwMC1y
ZWQudGdhCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjptaW1lLXR5cGUKIyMgLTAsMCArMSAjIworYXBw
bGljYXRpb24vb2N0ZXQtc3RyZWFtClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKCkFB
QUtBQUFBQUFBQUFBQUFaQUJrQUNBbzR3QUEvLy9qQUFELy8rTUFBUC8vNHdBQS8vL2pBQUQvLytN
QUFQLy80d0FBLy8vakFBRC8KLytNQUFQLy80d0FBLy8vakFBRC8vK01BQVAvLzR3QUEvLy9qQUFE
Ly8rTUFBUC8vNHdBQS8vL2pBQUQvLytNQUFQLy80d0FBLy8vagpBQUQvLytNQUFQLy80d0FBLy8v
akFBRC8vK01BQVAvLzR3QUEvLy9qQUFELy8rTUFBUC8vNHdBQS8vL2pBQUQvLytNQUFQLy80d0FB
Ci8vL2pBQUQvLytNQUFQLy80d0FBLy8vakFBRC8vK01BQVAvLzR3QUEvLy9qQUFELy8rTUFBUC8v
NHdBQS8vL2pBQUQvLytNQUFQLy8KNHdBQS8vL2pBQUQvLytNQUFQLy80d0FBLy8vakFBRC8vK01B
QVAvLzR3QUEvLy9qQUFELy8rTUFBUC8vNHdBQS8vL2pBQUQvLytNQQpBUC8vNHdBQS8vL2pBQUQv
LytNQUFQLy80d0FBLy8vakFBRC8vK01BQVAvLzR3QUEvLy9qQUFELy8rTUFBUC8vNHdBQS8vL2pB
QUQvCi8rTUFBUC8vNHdBQS8vL2pBQUQvLytNQUFQLy80d0FBLy8vakFBRC8vK01BQVAvLzR3QUEv
Ly9qQUFELy8rTUFBUC8vNHdBQS8vL2oKQUFELy8rTUFBUC8vNHdBQS8vL2pBQUQvLytNQUFQLy80
d0FBLy8vakFBRC8vK01BQVAvLzR3QUEvLy9qQUFELy8rTUFBUC8vNHdBQQovLy9qQUFELy8rTUFB
UC8vNHdBQS8vL2pBQUQvLytNQUFQLy80d0FBLy8vakFBRC8vK01BQVAvLzR3QUEvLy9qQUFELy8r
TUFBUC8vCjR3QUEvLzg9CgpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS80MDB4NDAwLWdyZWVuLnBuZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNhbm5vdCBkaXNwbGF5OiBmaWxlIG1h
cmtlZCBhcyBhIGJpbmFyeSB0eXBlLgpzdm46bWltZS10eXBlID0gaW1hZ2UvcG5nCgpQcm9wZXJ0
eSBjaGFuZ2VzIG9uOiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hLzQwMHg0
MDAtZ3JlZW4ucG5nCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjptaW1lLXR5cGUKIyMgLTAsMCArMSAj
IworaW1hZ2UvcG5nClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKCmlWQk9SdzBLR2dv
QUFBQU5TVWhFVWdBQUFaQUFBQUdRQ0FJQUFBQVAzYUdiQUFBQUNYQklXWE1BQUFzVEFBQUxFd0VB
bXB3WUFBQUEKQjNSSlRVVUg0UWNPRXlRNmFyZnNtUUFBQUIxcFZGaDBRMjl0YldWdWRBQUFBQUFB
UTNKbFlYUmxaQ0IzYVhSb0lFZEpUVkJrTG1VSApBQUFENUVsRVFWUjQydTNVTVEwQUFBZ0VzUWZs
U0VjRkEwa3I0WWFyVEFCZWFBa0F3d0l3TE1Dd0FBd0x3TEFBd3dJd0xBRERBZ3dMCndMQUFEQXN3
TEFEREFqQXN3TEFBREF2QXNBRERBakFzQU1NQ0RBdkFzQUFNQ3pBc0FNTUNNQ3pBc0FBTUN6QXNB
TU1DTUN6QXNBQU0KQzhDd0FNTUNNQ3dBd3dJTUM4Q3dBQXdMTUN3QXd3SXdMTUN3QUF3THdMQUF3
d0l3TEFEREFnd0x3TEFBREFzd0xBRERBakFzd0xBQQpEQXN3TEFEREFqQXN3TEFBREF2QXNBRERB
akFzQU1NQ0RBdkFzQUFNQ3pBc0FNTUNNQ3pBc0FBTUM4Q3dBTU1DTUN3QXd3SU1DOEN3CkFBd0xN
Q3dBd3dJd0xNQ3dBQXdMTUN3QXd3SXdMTUN3QUF3THdMQUF3d0l3TEFEREFnd0x3TEFBREFzd0xB
RERBakFzd0xBQURBdkEKc0FEREFqQXNBTU1DREF2QXNBQU1DekFzQU1NQ01DekFzQUFNQ3pBc0FN
TUNNQ3pBc0FBTUM4Q3dBTU1DTUN3QXd3SU1DOEN3QUF3TApNQ3dBd3dJd0xNQ3dBQXdMd0xBQXd3
SXdMQUREQWd3THdMQUFEQXN3TEFEREFqQXN3TEFBREFzd0xBRERBakFzd0xBQURBdkFzQURECkFq
QXNBTU1DREF2QXNBQU1DekFzQU1NQ01DekFzQUFNQzhDd0FNTUNNQ3dBd3dJTUM4Q3dBQXdMTUN3
QXd3SXdMTUN3QUF3TE1Dd0EKd3dJd0xNQ3dBQXdMd0xBQXd3SXdMQUREQWd3THdMQUFEQXN3TEFE
REFqQXN3TEFBREF2QXNBRERBakFzQU1NQ0RBdkFzQUFNQ3pBcwpBTU1DTUN6QXNBQU1DekFzQU1N
Q01DekFzQUFNQzhDd0FNTUNNQ3dBd3dJTUM4Q3dBQXdMTUN3QXd3SXdMTUN3QUF3THdMQUF3d0l3
CkxBRERBZ3dMd0xBQURBc3dMQUREQWpBc3dMQUFEQXN3TEFEREFqQXN3TEFBREF2QXNBRERBakFz
QU1NQ0RBdkFzQUFNQ3pBc0FNTUMKTUN6QXNBQU1DOEN3QU1NQ01Dd0F3d0lNQzhDd0FBd0xNQ3dB
d3dJTVN3TEFzQUFNQ3pBc0FNTUNNQ3pBc0FBTUM4Q3dBTU1DTUN3QQp3d0lNQzhDd0FBd0xNQ3dB
d3dJd0xNQ3dBQXdMd0xBQXd3SXdMQUREQWd3THdMQUFEQXN3TEFEREFnd0x3TEFBREFzd0xBRERB
akFzCndMQUFEQXZBc0FEREFqQXNBTU1DREF2QXNBQU1DekFzQU1NQ01DekFzQUFNQzhDd0FNTUNN
Q3dBd3dJTUM4Q3dBQXdMTUN3QXd3SU0KQzhDd0FBd0xNQ3dBd3dJd0xNQ3dBQXdMd0xBQXd3SXdM
QUREQWd3THdMQUFEQXN3TEFEREFqQXN3TEFBREF2QXNBRERBakFzQU1NQwpEQXZBc0FBTUN6QXNB
TU1DREF2QXNBQU1DekFzQU1NQ01DekFzQUFNQzhDd0FNTUNNQ3dBd3dJTUM4Q3dBQXdMTUN3QXd3
SXdMTUN3CkFBd0x3TEFBd3dJd0xBRERBZ3dMd0xBQURBc3dMQUREQWd3THdMQUFEQXN3TEFEREFq
QXN3TEFBREF2QXNBRERBakFzQU1NQ0RBdkEKc0FBTUN6QXNBTU1DTUN6QXNBQU1DOEN3QU1NQ01D
d0F3d0lNQytEU0FwL0tBNkFXbTUzeEFBQUFBRWxGVGtTdVFtQ0MKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>354278</attachid>
            <date>2018-11-08 14:54:49 -0800</date>
            <delta_ts>2018-11-08 16:21:21 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190454-20181108145448.patch</filename>
            <type>text/plain</type>
            <size>38295</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3OTkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDJlMjhjZTdmMzg1YWUz
NGRjYWUzNzk0YjUwZjM1NTliZjExMmFiNy4uZGIxODJhMGU5YTBmZGZlYTIyMTg2ZTM3MWUwMzI3
ZmQ1OWFmZjhmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDE4LTExLTA4ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGFu
IFNQSSB0byBhbGxvdyBXZWJWaWV3IGNsaWVudHMgdG8gYWRkIGFkZGl0aW9uYWwgc3VwcG9ydGVk
IGltYWdlIGZvcm1hdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE5MDQ1NAorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KKworICAg
ICAgICBBZGQgYW4gU1BJIHRvIGFsbG93IGFkZGl0aW9uYWwgc3VwcG9ydGVkIGltYWdlIGZvcm1h
dHMgaW4gV2ViVmlldy4gVGhlc2UKKyAgICAgICAgYWRkaXRpb25hbCBmb3JtYXRzIGNhbiBiZSBz
ZXQgaW4gdGhlIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gYXMgYW4gTlNBcnJheQorICAgICAgICBv
ZiBOU3RyaW5ncy4gRWFjaCBzdHJpbmcgcmVwcmVzZW50cyBhbiBpbWFnZSBzb3VyY2UgdHlwZSBh
a2EgVVRJLgorCisgICAgICAgIFRoZSBJbWFnZVNvdXJjZVR5cGUgaW4gdGhlIGZ1bmN0aW9ucycg
bmFtZXMgd2lsbCBiZSByZXBsYWNlZCBieSBJbWFnZVR5cGUuCisgICAgICAgIEltYWdlVHlwZSBp
biB0aGlzIGNvbnRleHQgaXMgdGhlIGltYWdlIFVUSSAoVW5pZm9ybSBUeXBlIElkZW50aWZpZXIp
LgorCisgICAgICAgICogcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5OjpzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlcyk6CisgICAg
ICAgIChXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5OjphZGRpdGlvbmFsU3VwcG9ydGVkSW1hZ2VN
SU1FVHlwZXMpOgorICAgICAgICAoV2ViQ29yZTo6c3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXNGb3JF
bmNvZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRl
ZEltYWdlTUlNRVR5cGUpOgorICAgICAgICAqIHBsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJDRzo6ZmlsZW5hbWVFeHRlbnNpb24gY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyQ0c6OmVuY29kZWREYXRhU3RhdHVzIGNvbnN0
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNvdXJjZUNHLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDR01hYy5tbToKKyAgICAgICAg
KFdlYkNvcmU6Ok1JTUVUeXBlRm9ySW1hZ2VUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OnByZWZl
cnJlZEV4dGVuc2lvbkZvckltYWdlVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpNSU1FVHlwZUZv
ckltYWdlU291cmNlVHlwZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpwcmVmZXJyZWRF
eHRlbnNpb25Gb3JJbWFnZVNvdXJjZVR5cGUpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NnL1VUSVJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRlZmF1bHRT
dXBwb3J0ZWRJbWFnZVR5cGVzKToKKyAgICAgICAgKFdlYkNvcmU6OmFkZGl0aW9uYWxTdXBwb3J0
ZWRJbWFnZVR5cGVzKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEFkZGl0aW9uYWxTdXBwb3J0ZWRJ
bWFnZVR5cGVzKToKKyAgICAgICAgKFdlYkNvcmU6OmlzU3VwcG9ydGVkSW1hZ2VUeXBlKToKKyAg
ICAgICAgKFdlYkNvcmU6OnN1cHBvcnRlZERlZmF1bHRJbWFnZVNvdXJjZVR5cGVzKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OmlzU3VwcG9ydEltYWdlU291cmNlVHlwZSk6IERlbGV0ZWQu
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvVVRJUmVnaXN0cnkuaDoKKwogMjAxOC0x
MS0wOCAgRGVhbiBKYWNrc29uICA8ZGlub0BhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIGEgU3Ry
aW5nIGxpdGVyYWwgdGhhdCByZXR1cm5zIGEgU3RyaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDUzMDE4ZmQwOTNl
Nzc0YTU4MWZjYmYwZjkyZjU3ODU3OWMwOTg3MmIuLmE5OWNkYzg5YzYzMDBlNWExYzY2ZDZiN2Ji
OTBhZjcxNTI4ODBmZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTEgQEAKKzIwMTgtMTEtMDggIFNh
aWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQg
YW4gU1BJIHRvIGFsbG93IFdlYlZpZXcgY2xpZW50cyB0byBhZGQgYWRkaXRpb25hbCBzdXBwb3J0
ZWQgaW1hZ2UgZm9ybWF0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTkwNDU0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgorCisg
ICAgICAgICogUGxhdGZvcm0vbWFjL1N0cmluZ1V0aWxpdGllcy5oOgorICAgICAgICAqIFBsYXRm
b3JtL21hYy9TdHJpbmdVdGlsaXRpZXMubW06CisgICAgICAgIChXZWJLaXQ6OndlYkNvcmVTdHJp
bmdWZWN0b3JGcm9tTlNTdHJpbmdBcnJheSk6CisgICAgICAgIEEgaGVscGVyIGZ1bmN0aW9uIHdo
aWNoIGNvbnZlcnRzIGFuIE5TQXJyYXkgb2YgTlNTdHJpbmdzIHRvIGEgVmVjdG9yIG9mCisgICAg
ICAgIFdURlN0cmluZy4KKworICAgICAgICAqIFNoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0
ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZW5j
b2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6
ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oOgor
ICAgICAgICBIYW5kbGUgZW5jb2RpbmcgYW5kIGRlY29kaW5nIHRoZSBBZGRpdGlvbmFsU3VwcG9y
dGVkSW1hZ2VUeXBlcyB3aGljaCB3aWxsCisgICAgICAgIGFsbG93IHRyYW5zZmVycmluZyBpdCBm
cm9tIHRoZSBVSSBwcm9jZXNzIHRvIHRoZSB3ZWIgcHJvY2Vzcy4KKworICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uaDoKKyAgICAgICAgKEFQSTo6UGFnZUNvbmZp
Z3VyYXRpb246OmFkZGl0aW9uYWxTdXBwb3J0ZWRJbWFnZVR5cGVzIGNvbnN0KToKKyAgICAgICAg
KEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246OnNldEFkZGl0aW9uYWxTdXBwb3J0ZWRJbWFnZVR5cGVz
KToKKyAgICAgICAgU3RvcmUgdGhlIEFkZGl0aW9uYWxTdXBwb3J0ZWRJbWFnZVR5cGVzIGluIHRo
ZSBBUElQYWdlQ29uZmlndXJhdGlvbgorICAgICAgICB3aGljaCBpcyB1c2VkIHdoZW4gY3JlYXRp
bmcgdGhlIFdlYlBhZ2VQcm94eSBpbiB0aGUgVUlQb3JjZXNzLgorCisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmlldyBfaW5pdGlh
bGl6ZVdpdGhDb25maWd1cmF0aW9uOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3Q29uZmlndXJh
dGlvbiBjb3B5V2l0aFpvbmU6XSk6CisgICAgICAgICgtW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24g
X2FkZGl0aW9uYWxTdXBwb3J0ZWRJbWFnZVR5cGVzXSk6CisgICAgICAgICgtW1dLV2ViVmlld0Nv
bmZpZ3VyYXRpb24gX3NldEFkZGl0aW9uYWxTdXBwb3J0ZWRJbWFnZVR5cGVzOl0pOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvblByaXZhdGUuaDoK
KyAgICAgICAgU2V0dGVyL0dldHRlciBmb3IgdGhlIEFkZGl0aW9uYWxTdXBwb3J0ZWRJbWFnZVR5
cGVzLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y3JlYXRpb25QYXJhbWV0ZXJzKToKKyAgICAgICAgQ29weSB0
aGUgQWRkaXRpb25hbFN1cHBvcnRlZEltYWdlVHlwZXMgZnJvbSBBUElQYWdlQ29uZmlndXJhdGlv
biB0byAKKyAgICAgICAgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy4KKworICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgRGVsZXRlIHVuaW1wbGVtZW50ZWQgZnVu
Y3Rpb24uCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6Om1fc2hvdWxkQXR0YWNoRHJhd2luZ0FyZWFPblBhZ2VUcmFuc2l0aW9uKToK
KyAgICAgICAgQ29weSB0aGUgQWRkaXRpb25hbFN1cHBvcnRlZEltYWdlVHlwZXMgZnJvbSBXZWJQ
YWdlQ3JlYXRpb25QYXJhbWV0ZXJzIHRvCisgICAgICAgIFdlYkNvcmUuCisKIDIwMTgtMTEtMDgg
IEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgW01lZGlh
U3RyZWFtXSBVc2UgRGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2UgdG8gZ2VuZXJhdGUgZGV2aWNlIElE
IGhhc2ggc2FsdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVS
ZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNw
cAppbmRleCAzZTk4ZDgzZWI4YjJiYTE2ZmVlZTNlMjA0ZTE4NmU0YmE2N2YzN2RlLi5jNmJiNzAz
ODFmM2EyOTRhMGIzY2U2MjMzOWE3NTVlMjM5NTFmZTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcApAQCAtMTMzLDExICsxMzMsMTEgQEAgY29uc3Qg
SGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIE1JTUVUeXBlUmVnaXN0
cnk6OnN1cHBvcnRlZEltYWcKIAogI2lmIFVTRShDRykKICNpZm5kZWYgTkRFQlVHCi0gICAgLy8g
RXNudXJlIHN1cHBvcnRlZEltYWdlTUlNRVR5cGVzKCkgaXMgaW4gc3luYyB3aXRoIHN1cHBvcnRl
ZERlZmF1bHRJbWFnZVNvdXJjZVR5cGVzKCkuCisgICAgLy8gRXNudXJlIHN1cHBvcnRlZEltYWdl
TUlNRVR5cGVzKCkgaXMgaW4gc3luYyB3aXRoIGRlZmF1bHRTdXBwb3J0ZWRJbWFnZVR5cGVzKCku
CiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOwogICAgIHN0ZDo6Y2FsbF9vbmNl
KG9uY2VGbGFnLCBbXSB7Ci0gICAgICAgIGZvciAoYXV0byYgaW1hZ2VTb3VyY2VUeXBlIDogc3Vw
cG9ydGVkRGVmYXVsdEltYWdlU291cmNlVHlwZXMoKSkgewotICAgICAgICAgICAgYXV0byBtaW1l
VHlwZSA9IE1JTUVUeXBlRm9ySW1hZ2VTb3VyY2VUeXBlKGltYWdlU291cmNlVHlwZSk7CisgICAg
ICAgIGZvciAoYXV0byYgaW1hZ2VUeXBlIDogZGVmYXVsdFN1cHBvcnRlZEltYWdlVHlwZXMoKSkg
eworICAgICAgICAgICAgYXV0byBtaW1lVHlwZSA9IE1JTUVUeXBlRm9ySW1hZ2VUeXBlKGltYWdl
VHlwZSk7CiAgICAgICAgICAgICBBU1NFUlRfSU1QTElFUyghbWltZVR5cGUuaXNFbXB0eSgpLCBz
dXBwb3J0ZWRJbWFnZU1JTUVUeXBlcy5nZXQoKS5jb250YWlucyhtaW1lVHlwZSkpOwogICAgICAg
ICB9CiAgICAgfSk7CkBAIC0xNDYsNiArMTQ2LDEyIEBAIGNvbnN0IEhhc2hTZXQ8U3RyaW5nLCBB
U0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiBNSU1FVHlwZVJlZ2lzdHJ5OjpzdXBwb3J0ZWRJbWFn
CiAgICAgcmV0dXJuIHN1cHBvcnRlZEltYWdlTUlNRVR5cGVzOwogfQogCitIYXNoU2V0PFN0cmlu
ZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgTUlNRVR5cGVSZWdpc3RyeTo6YWRkaXRpb25h
bFN1cHBvcnRlZEltYWdlTUlNRVR5cGVzKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
SGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4+IGFkZGl0aW9uYWxTdXBw
b3J0ZWRJbWFnZU1JTUVUeXBlczsKKyAgICByZXR1cm4gYWRkaXRpb25hbFN1cHBvcnRlZEltYWdl
TUlNRVR5cGVzOworfQorCiBzdGF0aWMgY29uc3QgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUlu
c2Vuc2l0aXZlSGFzaD4mIHN1cHBvcnRlZEltYWdlTUlNRVR5cGVzRm9yRW5jb2RpbmcoKQogewog
I2lmIFBMQVRGT1JNKENPQ09BKQpAQCAtMTU1LDcgKzE2MSw3IEBAIHN0YXRpYyBjb25zdCBIYXNo
U2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgc3VwcG9ydGVkSW1hZ2VNSU1F
VHlwZXNGCiAgICAgICAgIENGSW5kZXggY291bnQgPSBDRkFycmF5R2V0Q291bnQoc3VwcG9ydGVk
VHlwZXMuZ2V0KCkpOwogICAgICAgICBmb3IgKENGSW5kZXggaSA9IDA7IGkgPCBjb3VudDsgaSsr
KSB7CiAgICAgICAgICAgICBDRlN0cmluZ1JlZiBzdXBwb3J0ZWRUeXBlID0gcmVpbnRlcnByZXRf
Y2FzdDxDRlN0cmluZ1JlZj4oQ0ZBcnJheUdldFZhbHVlQXRJbmRleChzdXBwb3J0ZWRUeXBlcy5n
ZXQoKSwgaSkpOwotICAgICAgICAgICAgU3RyaW5nIG1pbWVUeXBlID0gTUlNRVR5cGVGb3JJbWFn
ZVNvdXJjZVR5cGUoc3VwcG9ydGVkVHlwZSk7CisgICAgICAgICAgICBTdHJpbmcgbWltZVR5cGUg
PSBNSU1FVHlwZUZvckltYWdlVHlwZShzdXBwb3J0ZWRUeXBlKTsKICAgICAgICAgICAgIGlmICgh
bWltZVR5cGUuaXNFbXB0eSgpKQogICAgICAgICAgICAgICAgIHN1cHBvcnRlZEltYWdlTUlNRVR5
cGVzRm9yRW5jb2RpbmcuYWRkKG1pbWVUeXBlKTsKICAgICAgICAgfQpAQCAtNDMzLDcgKzQzOSw4
IEBAIGJvb2wgTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlKGNvbnN0
IFN0cmluZyYgbWltZVR5cGUpCiB7CiAgICAgaWYgKG1pbWVUeXBlLmlzRW1wdHkoKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlcygpLmNv
bnRhaW5zKGdldE5vcm1hbGl6ZWRNSU1FVHlwZShtaW1lVHlwZSkpOworICAgIFN0cmluZyBub3Jt
YWxpemVkTUlNRVR5cGUgPSBnZXROb3JtYWxpemVkTUlNRVR5cGUobWltZVR5cGUpOworICAgIHJl
dHVybiBzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlcygpLmNvbnRhaW5zKG5vcm1hbGl6ZWRNSU1FVHlw
ZSkgfHwgYWRkaXRpb25hbFN1cHBvcnRlZEltYWdlTUlNRVR5cGVzKCkuY29udGFpbnMobm9ybWFs
aXplZE1JTUVUeXBlKTsKIH0KIAogYm9vbCBNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZElt
YWdlVmlkZW9PclNWR01JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmgKaW5kZXggNzE4NWRmNGVhYzZlNTlhZTZk
ZGM1NTc4OTQ5NzBkN2I5ZmRiZThkZi4uN2M5MjliZTJlYjI1ZmZiYzY0YmEzMjQxNjFlMjEzYmU5
ODZlODk4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdp
c3RyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuaApA
QCAtMTA2LDYgKzEwNiw3IEBAIHB1YmxpYzoKIAogICAgIC8vIEZJWE1FOiBXb3VsZCBiZSBuaWNl
IHRvIGZpbmQgYSB3YXkgdG8gYXZvaWQgZXhwb3NpbmcgdGhlc2Ugc2V0cywgZXZlbiB3b3JzZSBl
eHBvc2luZyBub24tY29uc3QgcmVmZXJlbmNlcy4KICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
Y29uc3QgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIHN1cHBvcnRl
ZEltYWdlTUlNRVR5cGVzKCk7CisgICAgc3RhdGljIEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJ
bnNlbnNpdGl2ZUhhc2g+JiBhZGRpdGlvbmFsU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXMoKTsKICAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0
aXZlSGFzaD4mIHN1cHBvcnRlZE5vbkltYWdlTUlNRVR5cGVzKCk7CiAgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIGNvbnN0IEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+
JiBzdXBwb3J0ZWRNZWRpYU1JTUVUeXBlcygpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBj
b25zdCBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgcGRmTUlNRVR5
cGVzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9J
bWFnZURlY29kZXJDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9J
bWFnZURlY29kZXJDRy5jcHAKaW5kZXggODUyZGQwNjY0ZTZmYmU1NmY5NzNhNDYwY2VkMDk1OTUy
NDUxYWE0OC4uZTE4ZTYzZmVmZDYwMTRjYTU2MDViNjZhNTA4ZmE2Y2Y0MzgyYTAwYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2Rl
ckNHLmNwcApAQCAtMTc2LDcgKzE3Niw3IEBAIFN0cmluZyBJbWFnZURlY29kZXJDRzo6dXRpKCkg
Y29uc3QKIAogU3RyaW5nIEltYWdlRGVjb2RlckNHOjpmaWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OnByZWZlcnJlZEV4dGVuc2lvbkZvckltYWdlU291cmNl
VHlwZSh1dGkoKSk7CisgICAgcmV0dXJuIFdlYkNvcmU6OnByZWZlcnJlZEV4dGVuc2lvbkZvcklt
YWdlVHlwZSh1dGkoKSk7CiB9CiAKIEVuY29kZWREYXRhU3RhdHVzIEltYWdlRGVjb2RlckNHOjpl
bmNvZGVkRGF0YVN0YXR1cygpIGNvbnN0CkBAIC0xOTksNyArMTk5LDcgQEAgRW5jb2RlZERhdGFT
dGF0dXMgSW1hZ2VEZWNvZGVyQ0c6OmVuY29kZWREYXRhU3RhdHVzKCkgY29uc3QKICAgICAgICAg
cmV0dXJuIEVuY29kZWREYXRhU3RhdHVzOjpFcnJvcjsKIAogICAgIGNhc2Uga0NHSW1hZ2VTdGF0
dXNJbmNvbXBsZXRlOiB7Ci0gICAgICAgIGlmICghaXNTdXBwb3J0SW1hZ2VTb3VyY2VUeXBlKHV0
aSkpCisgICAgICAgIGlmICghaXNTdXBwb3J0ZWRJbWFnZVR5cGUodXRpKSkKICAgICAgICAgICAg
IHJldHVybiBFbmNvZGVkRGF0YVN0YXR1czo6RXJyb3I7CiAKICAgICAgICAgUmV0YWluUHRyPENG
RGljdGlvbmFyeVJlZj4gaW1hZ2UwUHJvcGVydGllcyA9IGFkb3B0Q0YoQ0dJbWFnZVNvdXJjZUNv
cHlQcm9wZXJ0aWVzQXRJbmRleChtX25hdGl2ZURlY29kZXIuZ2V0KCksIDAsIGltYWdlU291cmNl
T3B0aW9ucygpLmdldCgpKSk7CkBAIC0yMTMsNyArMjEzLDcgQEAgRW5jb2RlZERhdGFTdGF0dXMg
SW1hZ2VEZWNvZGVyQ0c6OmVuY29kZWREYXRhU3RhdHVzKCkgY29uc3QKICAgICB9CiAKICAgICBj
YXNlIGtDR0ltYWdlU3RhdHVzQ29tcGxldGU6Ci0gICAgICAgIGlmICghaXNTdXBwb3J0SW1hZ2VT
b3VyY2VUeXBlKHV0aSkpCisgICAgICAgIGlmICghaXNTdXBwb3J0ZWRJbWFnZVR5cGUodXRpKSkK
ICAgICAgICAgICAgIHJldHVybiBFbmNvZGVkRGF0YVN0YXR1czo6RXJyb3I7CiAKICAgICAgICAg
cmV0dXJuIEVuY29kZWREYXRhU3RhdHVzOjpDb21wbGV0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0cuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0cuaAppbmRleCA5MzNlZjYyYzBj
YTcxMmFiMjIxMDEwY2Q0MGIxNmJjYzZiZGM1Njg3Li42YmI4MWU2NDQxZmJkYWNjN2YwYzIyMGNk
MGQyZTUzODhlZmMzNWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9JbWFnZVNvdXJjZUNHLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvSW1hZ2VTb3VyY2VDRy5oCkBAIC0zMCw5ICszMCw5IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotU3RyaW5nIHByZWZlcnJlZEV4dGVuc2lvbkZvckltYWdlU291cmNlVHlwZShj
b25zdCBTdHJpbmcmIHR5cGUpOworU3RyaW5nIHByZWZlcnJlZEV4dGVuc2lvbkZvckltYWdlVHlw
ZShjb25zdCBTdHJpbmcmIHR5cGUpOwogCi1TdHJpbmcgTUlNRVR5cGVGb3JJbWFnZVNvdXJjZVR5
cGUoY29uc3QgU3RyaW5nJiB0eXBlKTsKK1N0cmluZyBNSU1FVHlwZUZvckltYWdlVHlwZShjb25z
dCBTdHJpbmcmIHR5cGUpOwogCiAjaWYgIVBMQVRGT1JNKENPQ09BKQogc2l6ZV90IHNoYXJlZEJ1
ZmZlckdldEJ5dGVzQXRQb3NpdGlvbih2b2lkKiBpbmZvLCB2b2lkKiBidWZmZXIsIG9mZl90IHBv
c2l0aW9uLCBzaXplX3QgY291bnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDR01hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0dNYWMubW0KaW5kZXggZjk0MDJiYTI4ZjgzMGJi
MjVkNWQ2NzAwZDJkMTcyODQ5NDc4ZGUyZC4uYTI1OGQyODFmZDliM2Y2ZWIwYjg4ZWNmNzI5ZTJj
OGRmNmI1MzZjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSW1hZ2VTb3VyY2VDR01hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9JbWFnZVNvdXJjZUNHTWFjLm1tCkBAIC0zNiwxMiArMzYsMTIgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1TdHJpbmcgTUlNRVR5cGVGb3JJbWFnZVNvdXJjZVR5cGUoY29uc3Qg
U3RyaW5nJiB1dGkpCitTdHJpbmcgTUlNRVR5cGVGb3JJbWFnZVR5cGUoY29uc3QgU3RyaW5nJiB1
dGkpCiB7CiAgICAgcmV0dXJuIE1JTUVUeXBlRnJvbVVUSSh1dGkpOwogfQogCi1TdHJpbmcgcHJl
ZmVycmVkRXh0ZW5zaW9uRm9ySW1hZ2VTb3VyY2VUeXBlKGNvbnN0IFN0cmluZyYgdXRpKQorU3Ry
aW5nIHByZWZlcnJlZEV4dGVuc2lvbkZvckltYWdlVHlwZShjb25zdCBTdHJpbmcmIHV0aSkKIHsK
ICAgICByZXR1cm4gYWRvcHRDRihVVFR5cGVDb3B5UHJlZmVycmVkVGFnV2l0aENsYXNzKHV0aS5j
cmVhdGVDRlN0cmluZygpLmdldCgpLCBrVVRUYWdDbGFzc0ZpbGVuYW1lRXh0ZW5zaW9uKSkuZ2V0
KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9V
VElSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9VVElS
ZWdpc3RyeS5jcHAKaW5kZXggZWM5Yzg3OTVkNzNjMGIwNWYwZWJjYjk5NGQyZDVjMTg5NmYwNTBk
Mi4uYzc4MTU4ZjJiN2YzMmE5MzI4NjU0MTgxZGU0NDUwOTdiYjA2ZGJmOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvVVRJUmVnaXN0cnkuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1VUSVJlZ2lzdHJ5LmNwcApAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiAgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDE4IEFwcGxlIEluYy4gIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI4
LDYgKzI4LDkgQEAKIAogI2lmIFVTRShDRykKIAorI2luY2x1ZGUgIkltYWdlU291cmNlQ0cuaCIK
KyNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCisKICNpbmNsdWRlIDx3dGYvSGFzaFNldC5o
PgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPEltYWdlSU8vSW1h
Z2VJTy5oPgpAQCAtMzgsMTAgKzQxLDEwIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY29u
c3QgSGFzaFNldDxTdHJpbmc+JiBzdXBwb3J0ZWREZWZhdWx0SW1hZ2VTb3VyY2VUeXBlcygpCitj
b25zdCBIYXNoU2V0PFN0cmluZz4mIGRlZmF1bHRTdXBwb3J0ZWRJbWFnZVR5cGVzKCkKIHsKICAg
ICAvLyBDRyBhdCBsZWFzdCBzdXBwb3J0cyB0aGUgZm9sbG93aW5nIHN0YW5kYXJkIGltYWdlIHR5
cGVzOgotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0PFN0cmluZz4+IHN1cHBvcnRl
ZERlZmF1bHRJbWFnZVNvdXJjZVR5cGVzID0gc3RkOjppbml0aWFsaXplcl9saXN0PFN0cmluZz4g
eworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0PFN0cmluZz4+IGRlZmF1bHRTdXBw
b3J0ZWRJbWFnZVR5cGVzID0gc3RkOjppbml0aWFsaXplcl9saXN0PFN0cmluZz4gewogICAgICAg
ICAiY29tLmNvbXB1c2VydmUuZ2lmIiwKICAgICAgICAgImNvbS5taWNyb3NvZnQuYm1wIiwKICAg
ICAgICAgImNvbS5taWNyb3NvZnQuY3VyIiwKQEAgLTU3LDIxICs2MCw0MCBAQCBjb25zdCBIYXNo
U2V0PFN0cmluZz4mIHN1cHBvcnRlZERlZmF1bHRJbWFnZVNvdXJjZVR5cGVzKCkKICAgICAvLyBN
YWtlIHN1cmUgdGhhdCBDRyBzdXBwb3J0cyB0aGVtLgogICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxh
ZyBvbmNlRmxhZzsKICAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywgW10gewotICAgICAgICBS
ZXRhaW5QdHI8Q0ZBcnJheVJlZj4gc3lzdGVtSW1hZ2VTb3VyY2VUeXBlcyA9IGFkb3B0Q0YoQ0dJ
bWFnZVNvdXJjZUNvcHlUeXBlSWRlbnRpZmllcnMoKSk7Ci0gICAgICAgIENGSW5kZXggY291bnQg
PSBDRkFycmF5R2V0Q291bnQoc3lzdGVtSW1hZ2VTb3VyY2VUeXBlcy5nZXQoKSk7Ci0gICAgICAg
IGZvciAoYXV0byYgaW1hZ2VTb3VyY2VUeXBlIDogc3VwcG9ydGVkRGVmYXVsdEltYWdlU291cmNl
VHlwZXMuZ2V0KCkpIHsKLSAgICAgICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gc3RyaW5n
ID0gaW1hZ2VTb3VyY2VUeXBlLmNyZWF0ZUNGU3RyaW5nKCk7Ci0gICAgICAgICAgICBBU1NFUlQo
Q0ZBcnJheUNvbnRhaW5zVmFsdWUoc3lzdGVtSW1hZ2VTb3VyY2VUeXBlcy5nZXQoKSwgQ0ZSYW5n
ZU1ha2UoMCwgY291bnQpLCBzdHJpbmcuZ2V0KCkpKTsKKyAgICAgICAgUmV0YWluUHRyPENGQXJy
YXlSZWY+IHN5c3RlbUltYWdlVHlwZXMgPSBhZG9wdENGKENHSW1hZ2VTb3VyY2VDb3B5VHlwZUlk
ZW50aWZpZXJzKCkpOworICAgICAgICBDRkluZGV4IGNvdW50ID0gQ0ZBcnJheUdldENvdW50KHN5
c3RlbUltYWdlVHlwZXMuZ2V0KCkpOworICAgICAgICBmb3IgKGF1dG8mIGltYWdlVHlwZSA6IGRl
ZmF1bHRTdXBwb3J0ZWRJbWFnZVR5cGVzLmdldCgpKSB7CisgICAgICAgICAgICBSZXRhaW5QdHI8
Q0ZTdHJpbmdSZWY+IHN0cmluZyA9IGltYWdlVHlwZS5jcmVhdGVDRlN0cmluZygpOworICAgICAg
ICAgICAgQVNTRVJUKENGQXJyYXlDb250YWluc1ZhbHVlKHN5c3RlbUltYWdlVHlwZXMuZ2V0KCks
IENGUmFuZ2VNYWtlKDAsIGNvdW50KSwgc3RyaW5nLmdldCgpKSk7CiAgICAgICAgIH0KICAgICB9
KTsKICNlbmRpZgogCi0gICAgcmV0dXJuIHN1cHBvcnRlZERlZmF1bHRJbWFnZVNvdXJjZVR5cGVz
OworICAgIHJldHVybiBkZWZhdWx0U3VwcG9ydGVkSW1hZ2VUeXBlczsKK30KKworSGFzaFNldDxT
dHJpbmc+JiBhZGRpdGlvbmFsU3VwcG9ydGVkSW1hZ2VUeXBlcygpCit7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPEhhc2hTZXQ8U3RyaW5nPj4gYWRkaXRpb25hbFN1cHBvcnRlZEltYWdlVHlw
ZXM7CisgICAgcmV0dXJuIGFkZGl0aW9uYWxTdXBwb3J0ZWRJbWFnZVR5cGVzOworfQorCit2b2lk
IHNldEFkZGl0aW9uYWxTdXBwb3J0ZWRJbWFnZVR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBp
bWFnZVR5cGVzKQoreworICAgIE1JTUVUeXBlUmVnaXN0cnk6OmFkZGl0aW9uYWxTdXBwb3J0ZWRJ
bWFnZU1JTUVUeXBlcygpLmNsZWFyKCk7CisgICAgZm9yIChjb25zdCBhdXRvJiBpbWFnZVR5cGUg
OiBpbWFnZVR5cGVzKSB7CisgICAgICAgIGFkZGl0aW9uYWxTdXBwb3J0ZWRJbWFnZVR5cGVzKCku
YWRkKGltYWdlVHlwZSk7CisgICAgICAgIGF1dG8gbWltZVR5cGUgPSBNSU1FVHlwZUZvckltYWdl
VHlwZShpbWFnZVR5cGUpOworICAgICAgICBpZiAoIW1pbWVUeXBlLmlzRW1wdHkoKSkKKyAgICAg
ICAgICAgIE1JTUVUeXBlUmVnaXN0cnk6OmFkZGl0aW9uYWxTdXBwb3J0ZWRJbWFnZU1JTUVUeXBl
cygpLmFkZChtaW1lVHlwZSk7CisgICAgfQogfQogCi1ib29sIGlzU3VwcG9ydEltYWdlU291cmNl
VHlwZShjb25zdCBTdHJpbmcmIGltYWdlU291cmNlVHlwZSkKK2Jvb2wgaXNTdXBwb3J0ZWRJbWFn
ZVR5cGUoY29uc3QgU3RyaW5nJiBpbWFnZVR5cGUpCiB7Ci0gICAgcmV0dXJuICFpbWFnZVNvdXJj
ZVR5cGUuaXNFbXB0eSgpICYmIHN1cHBvcnRlZERlZmF1bHRJbWFnZVNvdXJjZVR5cGVzKCkuY29u
dGFpbnMoaW1hZ2VTb3VyY2VUeXBlKTsKKyAgICBpZiAoaW1hZ2VUeXBlLmlzRW1wdHkoKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBkZWZhdWx0U3VwcG9ydGVkSW1hZ2VUeXBl
cygpLmNvbnRhaW5zKGltYWdlVHlwZSkgfHwgYWRkaXRpb25hbFN1cHBvcnRlZEltYWdlVHlwZXMo
KS5jb250YWlucyhpbWFnZVR5cGUpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9VVElSZWdpc3RyeS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvVVRJUmVnaXN0cnkuaAppbmRleCA1NmYzZjQ3OWZhZThhYjcxNzBh
NTAyZmEwYzczMDhlYTNhM2U4MDI1Li4zYzg0ZGUzMDNlZGIwMzdiNjRiNDQxM2EwODEwYjRhZDE0
ZjU3NTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9V
VElSZWdpc3RyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1VU
SVJlZ2lzdHJ5LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDE4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMzAsNyArMzAsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNvbnN0
IEhhc2hTZXQ8U3RyaW5nPiYgc3VwcG9ydGVkRGVmYXVsdEltYWdlU291cmNlVHlwZXMoKTsKLWJv
b2wgaXNTdXBwb3J0SW1hZ2VTb3VyY2VUeXBlKGNvbnN0IFN0cmluZyYpOworY29uc3QgSGFzaFNl
dDxTdHJpbmc+JiBkZWZhdWx0U3VwcG9ydGVkSW1hZ2VUeXBlcygpOworSGFzaFNldDxTdHJpbmc+
JiBhZGRpdGlvbmFsU3VwcG9ydGVkSW1hZ2VUeXBlcygpOworV0VCQ09SRV9FWFBPUlQgdm9pZCBz
ZXRBZGRpdGlvbmFsU3VwcG9ydGVkSW1hZ2VUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYpOwor
Ym9vbCBpc1N1cHBvcnRlZEltYWdlVHlwZShjb25zdCBTdHJpbmcmKTsKIAogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9tYWMvU3RyaW5nVXRpbGl0aWVzLmggYi9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL21hYy9TdHJpbmdVdGlsaXRpZXMuaAppbmRleCAyOWE3NmNkNzUzOGM1
ZGZjOGUxYThkMjg5ZWNjOWU4YjZjODA1ZGYwLi40MjU3YzhjZmE5ZTRhYmExNDJhYWRlODE5MWU5
Zjk5ZmIyOWQ4MjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL21hYy9TdHJp
bmdVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL21hYy9TdHJpbmdVdGls
aXRpZXMuaApAQCAtMzcsNiArMzcsOCBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIE5TU3RyaW5nICpu
c1N0cmluZ0Zyb21XZWJDb3JlU3RyaW5nKGNvbnN0IFN0cmluZyYpOwogTlNTdHJpbmcgKmZvcm1h
dHRlZFBob25lTnVtYmVyU3RyaW5nKE5TU3RyaW5nICpvcmlnaW5hbFBob25lTnVtYmVyKTsKIAor
VmVjdG9yPFN0cmluZz4gd2ViQ29yZVN0cmluZ1ZlY3RvckZyb21OU1N0cmluZ0FycmF5KE5TQXJy
YXk8TlNTdHJpbmcgKj4gKik7CisKICNlbmRpZiAvLyBkZWZpbmVkKF9fT0JKQ19fKQogCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL21hYy9TdHJpbmdVdGlsaXRpZXMubW0g
Yi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL21hYy9TdHJpbmdVdGlsaXRpZXMubW0KaW5kZXggNWM5
Njc5MzdjZTRmOWIxODBkODAxZDllMjI4YjY2YzkwNzdhNmJlYy4uNmI4ZmU3NDNlMzdiOWY3NzU4
ZTc2ZDk5MDQ5ZGQ5ZmUxYzlhMTYzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9tYWMvU3RyaW5nVXRpbGl0aWVzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vbWFj
L1N0cmluZ1V0aWxpdGllcy5tbQpAQCAtODIsNCArODIsMTUgQEAgTlNTdHJpbmcgKmZvcm1hdHRl
ZFBob25lTnVtYmVyU3RyaW5nKE5TU3RyaW5nICopCiAKICNlbmRpZiAvLyBFTkFCTEUoVEVMRVBI
T05FX05VTUJFUl9ERVRFQ1RJT04pICYmIFBMQVRGT1JNKE1BQykKIAorVmVjdG9yPFN0cmluZz4g
d2ViQ29yZVN0cmluZ1ZlY3RvckZyb21OU1N0cmluZ0FycmF5KE5TQXJyYXk8TlNTdHJpbmcgKj4g
Km5zU3RyaW5nQXJyYXkpCit7CisgICAgVmVjdG9yPFN0cmluZz4gc3RyaW5nVmVjdG9yOworICAg
IHN0cmluZ1ZlY3Rvci5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KFtuc1N0cmluZ0FycmF5IGNvdW50
XSk7CisKKyAgICBmb3IgKE5TU3RyaW5nICpuc1N0cmluZyBpbiBuc1N0cmluZ0FycmF5KQorICAg
ICAgICBzdHJpbmdWZWN0b3IudW5jaGVja2VkQXBwZW5kKG5zU3RyaW5nKTsKKworICAgIHJldHVy
biBzdHJpbmdWZWN0b3I7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
UGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAKaW5kZXggY2Y5YTFiMDY3MTRjZjFkYjM3MmZlMGQ4
MWZmNjc2OTg2NzllMmY2OS4uYTc3NzQzOWY4ZTlkNDc2ZDhiMTRjMzA3ZDEyNGMwN2JjYTRhZjYy
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVycy5jcHAKQEAgLTk3LDYgKzk3LDcgQEAgdm9pZCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJz
OjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogI2VuZGlmCiAjaWYgUExBVEZP
Uk0oQ09DT0EpCiAgICAgZW5jb2RlciA8PCBzbWFydEluc2VydERlbGV0ZUVuYWJsZWQ7CisgICAg
ZW5jb2RlciA8PCBhZGRpdGlvbmFsU3VwcG9ydGVkSW1hZ2VUeXBlczsKICNlbmRpZgogICAgIGVu
Y29kZXIgPDwgYXBwbGVNYWlsUGFnaW5hdGlvblF1aXJrRW5hYmxlZDsKICAgICBlbmNvZGVyIDw8
IGFwcGxlTWFpbExpbmVzQ2xhbXBFbmFibGVkOwpAQCAtMjcyLDYgKzI3Myw4IEBAIHN0ZDo6b3B0
aW9uYWw8V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycz4gV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVy
czo6ZGVjb2RlKElQQzo6CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShwYXJhbWV0ZXJzLnNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCkpCiAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLmFkZGl0
aW9uYWxTdXBwb3J0ZWRJbWFnZVR5cGVzKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICNlbmRpZgogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLmFwcGxlTWFpbFBh
Z2luYXRpb25RdWlya0VuYWJsZWQpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFn
ZUNyZWF0aW9uUGFyYW1ldGVycy5oCmluZGV4IGZmYWY3Nzg2YTMxZmMyY2Y4MTlmMzY2MmJjNTgw
Y2FkMDNhNDk1YjcuLjIwNWIxOWFiMjQyN2MyZWM4ZDY1MmI4ZDBiOTlkMDIxNWNmNDdmZDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgK
QEAgLTE1NCw2ICsxNTQsNyBAQCBzdHJ1Y3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyB7CiAj
ZW5kaWYKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBib29sIHNtYXJ0SW5zZXJ0RGVsZXRlRW5h
YmxlZDsKKyAgICBWZWN0b3I8U3RyaW5nPiBhZGRpdGlvbmFsU3VwcG9ydGVkSW1hZ2VUeXBlczsK
ICNlbmRpZgogICAgIGJvb2wgYXBwbGVNYWlsUGFnaW5hdGlvblF1aXJrRW5hYmxlZDsKICAgICBi
b29sIGFwcGxlTWFpbExpbmVzQ2xhbXBFbmFibGVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uaAppbmRleCA0OTgxYjk1N2Y0YmFjNzBi
OTM0Yzc0MTc3OWI5ZWIwNjljNmU1ZmQwLi42N2FjNWM2NmQ4OTUxNjhjMzEwZGUwNTNiM2EwOWMw
MWVmMDY3YTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUGFn
ZUNvbmZpZ3VyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUGFn
ZUNvbmZpZ3VyYXRpb24uaApAQCAtMTEwLDYgKzExMCwxMSBAQCBwdWJsaWM6CiAgICAgY29uc3Qg
V1RGOjpTdHJpbmcmIG92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5KCkgY29uc3QgeyByZXR1
cm4gbV9vdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeTsgfQogICAgIHZvaWQgc2V0T3ZlcnJp
ZGVDb250ZW50U2VjdXJpdHlQb2xpY3koY29uc3QgV1RGOjpTdHJpbmcmIG92ZXJyaWRlQ29udGVu
dFNlY3VyaXR5UG9saWN5KSB7IG1fb3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3kgPSBvdmVy
cmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeTsgfQogCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAg
Y29uc3QgV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+JiBhZGRpdGlvbmFsU3VwcG9ydGVkSW1hZ2VU
eXBlcygpIGNvbnN0IHsgcmV0dXJuIG1fYWRkaXRpb25hbFN1cHBvcnRlZEltYWdlVHlwZXM7IH0K
KyAgICB2b2lkIHNldEFkZGl0aW9uYWxTdXBwb3J0ZWRJbWFnZVR5cGVzKFdURjo6VmVjdG9yPFdU
Rjo6U3RyaW5nPiYmIGFkZGl0aW9uYWxTdXBwb3J0ZWRJbWFnZVR5cGVzKSB7IG1fYWRkaXRpb25h
bFN1cHBvcnRlZEltYWdlVHlwZXMgPSBXVEZNb3ZlKGFkZGl0aW9uYWxTdXBwb3J0ZWRJbWFnZVR5
cGVzKTsgfQorI2VuZGlmCisKICNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCiAgICAg
QXBwbGljYXRpb25NYW5pZmVzdCogYXBwbGljYXRpb25NYW5pZmVzdCgpIGNvbnN0OwogICAgIHZv
aWQgc2V0QXBwbGljYXRpb25NYW5pZmVzdChBcHBsaWNhdGlvbk1hbmlmZXN0Kik7CkBAIC0xNDYs
NiArMTUxLDEwIEBAIHByaXZhdGU6CiAKICAgICBXVEY6OlN0cmluZyBtX292ZXJyaWRlQ29udGVu
dFNlY3VyaXR5UG9saWN5OwogCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgV1RGOjpWZWN0b3I8
V1RGOjpTdHJpbmc+IG1fYWRkaXRpb25hbFN1cHBvcnRlZEltYWdlVHlwZXM7CisjZW5kaWYKKwog
I2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKICAgICBSZWZQdHI8QXBwbGljYXRpb25N
YW5pZmVzdD4gbV9hcHBsaWNhdGlvbk1hbmlmZXN0OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCA5ZWM2NTk4ZDdmNTZhYTMz
ZTg3NTE5N2U0OWE3NzJmZDUzM2I2MDhmLi40NDhmOTMyNTM3YmI2ZjM1YTk3MmE0YWQ3NzJkODg4
MDZjODQ5ZDllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXcubW0KQEAgLTQ2LDYgKzQ2LDcgQEAKICNpbXBvcnQgIlJlbW90ZUxheWVyVHJlZVRyYW5z
YWN0aW9uLmgiCiAjaW1wb3J0ICJSZW1vdGVPYmplY3RSZWdpc3RyeS5oIgogI2ltcG9ydCAiUmVt
b3RlT2JqZWN0UmVnaXN0cnlNZXNzYWdlcy5oIgorI2ltcG9ydCAiU3RyaW5nVXRpbGl0aWVzLmgi
CiAjaW1wb3J0ICJVSURlbGVnYXRlLmgiCiAjaW1wb3J0ICJVc2VyTWVkaWFQcm9jZXNzTWFuYWdl
ci5oIgogI2ltcG9ydCAiVmVyc2lvbkNoZWNrcy5oIgpAQCAtNTY5LDYgKzU3MCw4IEBAIHN0YXRp
YyB2b2lkIHZhbGlkYXRlKFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRpb24pCiAg
ICAgICAgICAgICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0UGFnZUdyb3VwKFdlYktpdDo6V2ViUGFn
ZUdyb3VwOjpjcmVhdGUoY29uZmlndXJhdGlvbi5fZ3JvdXBJZGVudGlmaWVyKS5wdHIoKSk7CiAg
ICAgfQogCisgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldEFkZGl0aW9uYWxTdXBwb3J0ZWRJbWFn
ZVR5cGVzKFdlYktpdDo6d2ViQ29yZVN0cmluZ1ZlY3RvckZyb21OU1N0cmluZ0FycmF5KFtfY29u
ZmlndXJhdGlvbiBfYWRkaXRpb25hbFN1cHBvcnRlZEltYWdlVHlwZXNdKSk7CisKICAgICBwYWdl
Q29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZVZhbHVlcygpLnNldChXZWJLaXQ6OldlYlByZWZlcmVu
Y2VzS2V5OjpzdXBwcmVzc2VzSW5jcmVtZW50YWxSZW5kZXJpbmdLZXkoKSwgV2ViS2l0OjpXZWJQ
cmVmZXJlbmNlc1N0b3JlOjpWYWx1ZSghIVtfY29uZmlndXJhdGlvbiBzdXBwcmVzc2VzSW5jcmVt
ZW50YWxSZW5kZXJpbmddKSk7CiAKICAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZVZh
bHVlcygpLnNldChXZWJLaXQ6OldlYlByZWZlcmVuY2VzS2V5OjpzaG91bGRSZXNwZWN0SW1hZ2VP
cmllbnRhdGlvbktleSgpLCBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmU6OlZhbHVlKCEhW19j
b25maWd1cmF0aW9uIF9yZXNwZWN0c0ltYWdlT3JpZW50YXRpb25dKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0
aW9uLm1tCmluZGV4IDdmZWIwYjVjMzg2ZjAwZjg1MDU1YjAzZjNhMDE2YmRkOTExNzM3NTkuLjgy
ZWFiZmQyNjkwMWU4ZTZiMmMzMmZmNTE1NDM5MDAxNTc0NDc4NDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0
aW9uLm1tCkBAIC0xNjEsNiArMTYxLDcgQEAgc3RhdGljIF9XS0RyYWdMaWZ0RGVsYXkgdG9EcmFn
TGlmdERlbGF5KE5TVUludGVnZXIgdmFsdWUpCiAgICAgQk9PTCBfZHJhd3NCYWNrZ3JvdW5kOwog
CiAgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBfbWVkaWFDb250ZW50VHlwZXNSZXF1aXJpbmdIYXJk
d2FyZVN1cHBvcnQ7CisgICAgUmV0YWluUHRyPE5TQXJyYXk8TlNTdHJpbmcgKj4+IF9hZGRpdGlv
bmFsU3VwcG9ydGVkSW1hZ2VUeXBlczsKIH0KIAogLSAoaW5zdGFuY2V0eXBlKWluaXQKQEAgLTM5
NCw2ICszOTUsNyBAQCBzdGF0aWMgX1dLRHJhZ0xpZnREZWxheSB0b0RyYWdMaWZ0RGVsYXkoTlNV
SW50ZWdlciB2YWx1ZSkKICAgICBjb25maWd1cmF0aW9uLT5fbmVlZHNTdG9yYWdlQWNjZXNzRnJv
bUZpbGVVUkxzUXVpcmsgPSBzZWxmLT5fbmVlZHNTdG9yYWdlQWNjZXNzRnJvbUZpbGVVUkxzUXVp
cms7CiAKICAgICBjb25maWd1cmF0aW9uLT5fbWVkaWFDb250ZW50VHlwZXNSZXF1aXJpbmdIYXJk
d2FyZVN1cHBvcnQgPSBhZG9wdE5TKFtzZWxmLl9tZWRpYUNvbnRlbnRUeXBlc1JlcXVpcmluZ0hh
cmR3YXJlU3VwcG9ydCBjb3B5V2l0aFpvbmU6em9uZV0pOworICAgIGNvbmZpZ3VyYXRpb24tPl9h
ZGRpdGlvbmFsU3VwcG9ydGVkSW1hZ2VUeXBlcyA9IGFkb3B0TlMoW3NlbGYtPl9hZGRpdGlvbmFs
U3VwcG9ydGVkSW1hZ2VUeXBlcyBjb3B5V2l0aFpvbmU6em9uZV0pOwogICAgIGNvbmZpZ3VyYXRp
b24tPl9sZWdhY3lFbmNyeXB0ZWRNZWRpYUFQSUVuYWJsZWQgPSBzZWxmLT5fbGVnYWN5RW5jcnlw
dGVkTWVkaWFBUElFbmFibGVkOwogICAgIGNvbmZpZ3VyYXRpb24tPl9hbGxvd01lZGlhQ29udGVu
dFR5cGVzUmVxdWlyaW5nSGFyZHdhcmVTdXBwb3J0QXNGYWxsYmFjayA9IHNlbGYtPl9hbGxvd01l
ZGlhQ29udGVudFR5cGVzUmVxdWlyaW5nSGFyZHdhcmVTdXBwb3J0QXNGYWxsYmFjazsKIApAQCAt
OTkwLDYgKzk5MiwxNiBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICBf
bWVkaWFDb250ZW50VHlwZXNSZXF1aXJpbmdIYXJkd2FyZVN1cHBvcnQgPSBhZG9wdE5TKFttZWRp
YUNvbnRlbnRUeXBlc1JlcXVpcmluZ0hhcmR3YXJlU3VwcG9ydCBjb3B5XSk7CiB9CiAKKy0gKE5T
QXJyYXk8TlNTdHJpbmcgKj4gKilfYWRkaXRpb25hbFN1cHBvcnRlZEltYWdlVHlwZXMKK3sKKyAg
ICByZXR1cm4gX2FkZGl0aW9uYWxTdXBwb3J0ZWRJbWFnZVR5cGVzLmdldCgpOworfQorCistICh2
b2lkKV9zZXRBZGRpdGlvbmFsU3VwcG9ydGVkSW1hZ2VUeXBlczooTlNBcnJheTxOU1N0cmluZyAq
PiAqKWFkZGl0aW9uYWxTdXBwb3J0ZWRJbWFnZVR5cGVzCit7CisgICAgX2FkZGl0aW9uYWxTdXBw
b3J0ZWRJbWFnZVR5cGVzID0gYWRvcHROUyhbYWRkaXRpb25hbFN1cHBvcnRlZEltYWdlVHlwZXMg
Y29weV0pOworfQorCiAtICh2b2lkKV9zZXRMZWdhY3lFbmNyeXB0ZWRNZWRpYUFQSUVuYWJsZWQ6
KEJPT0wpZW5hYmxlZAogewogICAgIF9sZWdhY3lFbmNyeXB0ZWRNZWRpYUFQSUVuYWJsZWQgPSBl
bmFibGVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvblByaXZhdGUuaAppbmRleCBmMTA1YTFhYTJj
M2MzYTlkYTE3NjE3ZmFmNzFkOGM1NjAzZjdkODgxLi45MDVlMTNkNzJjOWU4NTQ1Y2Q0ZTIyYjg2
ZThmMWM1ZTA5YjY5YmRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvblByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvblByaXZhdGUuaApAQCAt
MTAyLDYgKzEwMiw5IEBAIHR5cGVkZWYgTlNfRU5VTShOU1VJbnRlZ2VyLCBfV0tEcmFnTGlmdERl
bGF5KSB7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRMZWdhY3lFbmNyeXB0ZWRN
ZWRpYUFQSUVuYWJsZWQ6KSBCT09MIF9sZWdhY3lFbmNyeXB0ZWRNZWRpYUFQSUVuYWJsZWQgV0tf
QVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTMpLCBpb3MoMTEuMCkpOwogQHByb3BlcnR5IChub25h
dG9taWMsIHNldHRlcj1fc2V0QWxsb3dNZWRpYUNvbnRlbnRUeXBlc1JlcXVpcmluZ0hhcmR3YXJl
U3VwcG9ydEFzRmFsbGJhY2s6KSBCT09MIF9hbGxvd01lZGlhQ29udGVudFR5cGVzUmVxdWlyaW5n
SGFyZHdhcmVTdXBwb3J0QXNGYWxsYmFjayBXS19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMyks
IGlvcygxMS4wKSk7CiAKKy8vIFRoZSBpbnB1dCBvZiB0aGlzIFNQSSBpcyBhbiBhcnJheSBvZiBp
bWFnZSBVVEkgKFVuaWZvcm0gVHlwZSBJZGVudGlmaWVyKS4KK0Bwcm9wZXJ0eSAobm9uYXRvbWlj
LCBjb3B5LCBzZXR0ZXI9X3NldEFkZGl0aW9uYWxTdXBwb3J0ZWRJbWFnZVR5cGVzOikgTlNBcnJh
eTxOU1N0cmluZyAqPiAqX2FkZGl0aW9uYWxTdXBwb3J0ZWRJbWFnZVR5cGVzIFdLX0FQSV9BVkFJ
TEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworCiBAZW5kCiAKICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggYzhmODZk
ZTg1M2JjMjIwYzA2ODAxZTE2NDgzODgxMzgzZTNmY2I4Mi4uMzVjZWNlNTdhMjJlYmVhNjlhYmU5
NDlkMzQ0YjlkY2MxYjgxZTk5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwCkBAIC02NDE1LDYgKzY0MTUsNyBAQCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIFdl
YlBhZ2VQcm94eTo6Y3JlYXRpb25QYXJhbWV0ZXJzKCkKIAogI2lmIFBMQVRGT1JNKENPQ09BKQog
ICAgIHBhcmFtZXRlcnMuc21hcnRJbnNlcnREZWxldGVFbmFibGVkID0gbV9pc1NtYXJ0SW5zZXJ0
RGVsZXRlRW5hYmxlZDsKKyAgICBwYXJhbWV0ZXJzLmFkZGl0aW9uYWxTdXBwb3J0ZWRJbWFnZVR5
cGVzID0gbV9jb25maWd1cmF0aW9uLT5hZGRpdGlvbmFsU3VwcG9ydGVkSW1hZ2VUeXBlcygpOwog
I2VuZGlmCiAgICAgcGFyYW1ldGVycy5zaG91bGRTY2FsZVZpZXdUb0ZpdERvY3VtZW50ID0gbV9z
aG91bGRTY2FsZVZpZXdUb0ZpdERvY3VtZW50OwogICAgIHBhcmFtZXRlcnMudXNlckludGVyZmFj
ZUxheW91dERpcmVjdGlvbiA9IHBhZ2VDbGllbnQoKS51c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0
aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDQ2ODJkNzRj
MTJmMDc3MDM5ZGU4YjE1ZjA0NTRlY2Q5OGU2NWNlY2MuLjI5YmRkY2I3NTA4NTdkOTU4Y2I3ZWJj
YTZhNGU2YTI4MjJjMDRkY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
CkBAIC0xMzYwLDEwICsxMzYwLDYgQEAgcHVibGljOgogCiAgICAgV2ViQ29yZTo6SW50UmVjdCBz
eW5jUm9vdFZpZXdUb1NjcmVlbihjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiB2aWV3UmVjdCk7CiAK
LSNpZiBQTEFURk9STShDT0NPQSkKLSAgICBWZWN0b3I8U3RyaW5nPiBtZWRpYU1JTUVUeXBlcygp
OwotI2VuZGlmCi0KICNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKICAgICB2b2lkIGRpZFNl
bGVjdE9wdGlvbihjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIGRpZENsb3NlU3VnZ2VzdGlvbnMo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXgg
ODBjNTM4M2EyZTU0ODU0ZTczYzg3NjUzN2ZjYzY0ZjIzY2RmMWJmNy4uMGM1YjA4MjFjYTcwZDFm
NjhjN2E2MWYzYTAxNDI3NjY2ZTlmZmVlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTI0Niw2ICsyNDYsNyBAQAogI2luY2x1ZGUgIlZpZGVv
RnVsbHNjcmVlbk1hbmFnZXIuaCIKICNpbmNsdWRlICJXS1N0cmluZ0NGLmgiCiAjaW5jbHVkZSA8
V2ViQ29yZS9MZWdhY3lXZWJBcmNoaXZlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9VVElSZWdpc3Ry
eS5oPgogI2luY2x1ZGUgPHd0Zi9NYWNoU2VuZFJpZ2h0Lmg+CiAjZW5kaWYKIApAQCAtNTk1LDYg
KzU5Niw3IEBAIFdlYlBhZ2U6OldlYlBhZ2UodWludDY0X3QgcGFnZUlELCBXZWJQYWdlQ3JlYXRp
b25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBtX3Bh
Z2UtPnNldHRpbmdzKCkuc2V0Q29udGVudERpc3Bvc2l0aW9uQXR0YWNobWVudFNhbmRib3hFbmFi
bGVkKHRydWUpOwogICAgIHNldFNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZChwYXJhbWV0ZXJzLnNt
YXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCk7CisgICAgV2ViQ29yZTo6c2V0QWRkaXRpb25hbFN1cHBv
cnRlZEltYWdlVHlwZXMocGFyYW1ldGVycy5hZGRpdGlvbmFsU3VwcG9ydGVkSW1hZ2VUeXBlcyk7
CiAjZW5kaWYKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1Rvb2xz
L0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA2ZWMxYzQ4ZTZmNzFmMDVkZjk2M2Jj
OTY3OWUxNzliYWUyNmRmMjU4Li4wYzg5YWVkZTgwYzk0MDZlN2QyN2IyMTFiMGZkNWE2NjJiZGM1
MGYwIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjAgQEAKKzIwMTgtMTEtMDggIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxs
YXdhQGFwcGxlLmNvbT4KKworb25hbCBzdXBwb3J0ZWQgaW1hZ2UgZm9ybWF0cworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwNDU0CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgorCisgICAgICAgIFRlc3Qgb3BlbmluZyBhIFRHQSBp
bWFnZSBpbiBXZWJWaWV3IHdoaWNoIGlzIG5vdCBhbGxvd2VkIGJ5IGRlZmF1bHQuIFRoZQorICAg
ICAgICBUR0EgZm9ybWF0IHdpbGwgYmUgYWxsb3dlZCB0aHJvdWdoIFdLV2ViVmlld0NvbmZpZ3Vy
YXRpb24uCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hLzEwMHgxMDAtcmVkLnRnYTogQWRkZWQuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS80MDB4NDAwLWdyZWVuLnBuZzogQWRkZWQuCisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9BZGRpdGlvbmFsU3VwcG9ydGVkSW1hZ2VUeXBlcy5t
bTogQWRkZWQuCisgICAgICAgIChydW5UZXN0KToKKyAgICAgICAgKFRFU1QpOgorCiAyMDE4LTEx
LTA4ICBKaWV3ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZp
ZXdlZCwgYSBxdWljayBidWlsZCBmaXggZm9yIHIyMzc5ODMKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggNzkzY2U0ZjVhNDZmZTlkZmQ0MDRhZTVhMGZlNTcwY2Y3YTExNmY1NC4uZGU2OWIwNmUy
NDJjY2Q0ZmY3OTVmYzBiODc5Y2JhYWQxNjk3ZjE1ZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTI0Miw2ICsyNDIsOSBAQAogCQk1M0VDMjU0MTFFOTZGRDg3MDAwODMxQjkgLyogUHJpb3Jp
dHlRdWV1ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1M0VDMjUzRjFFOTZCQzgwMDAwODMxQjkgLyogUHJpb3JpdHlRdWV1ZS5jcHAgKi87IH07CiAJ
CTU1MjI2QTJGMUVCQTQ0QjkwMEMzNkFEMCAvKiBsYXJnZS1yZWQtc3F1YXJlLWltYWdlLmh0bWwg
aW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTUy
MjZBMkUxRUI5NjlCNjAwQzM2QUQwIC8qIGxhcmdlLXJlZC1zcXVhcmUtaW1hZ2UuaHRtbCAqLzsg
fTsKIAkJNTU5N0Y4MzYxRDk1OTZDODAwNjZCQzIxIC8qIFN5bmNocm9uaXplZEZpeGVkUXVldWUu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTU5N0Y4
MzQxRDk1OTZDODAwNjZCQzIxIC8qIFN5bmNocm9uaXplZEZpeGVkUXVldWUuY3BwICovOyB9Owor
CQk1NUE4MTdGQzIxODEwMEUwMDAwNEEzOUEgLyogQWRkaXRpb25hbFN1cHBvcnRlZEltYWdlVHlw
ZXMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NUE4
MTdGQjIxODEwMEUwMDAwNEEzOUEgLyogQWRkaXRpb25hbFN1cHBvcnRlZEltYWdlVHlwZXMubW0g
Ki87IH07CisJCTU1QTgxN0ZGMjE4MTAyMUEwMDA0QTM5QSAvKiAxMDB4MTAwLXJlZC50Z2EgaW4g
Q29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTVBODE3
RkUyMTgxMDFERjAwMDRBMzlBIC8qIDEwMHgxMDAtcmVkLnRnYSAqLzsgfTsKKwkJNTVBODE4MDAy
MTgxMDIyMTAwMDRBMzlBIC8qIDQwMHg0MDAtZ3JlZW4ucG5nIGluIENvcHkgUmVzb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1QTgxN0ZEMjE4MTAxREYwMDA0QTM5
QSAvKiA0MDB4NDAwLWdyZWVuLnBuZyAqLzsgfTsKIAkJNTcxNEVDQjkxQ0E4QjVCMDAwMDUxQUM4
IC8qIERvd25sb2FkUmVxdWVzdE9yaWdpbmFsVVJMLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTcxNEVDQjgxQ0E4QjU4ODAwMDUxQUM4
IC8qIERvd25sb2FkUmVxdWVzdE9yaWdpbmFsVVJMLmh0bWwgKi87IH07CiAJCTU3MTRFQ0JCMUNB
OEJGRTQwMDA1MUFDOCAvKiBEb3dubG9hZFJlcXVlc3RPcmlnaW5hbFVSTEZyYW1lLmh0bWwgaW4g
Q29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTcxNEVD
QkExQ0E4QkZEMTAwMDUxQUM4IC8qIERvd25sb2FkUmVxdWVzdE9yaWdpbmFsVVJMRnJhbWUuaHRt
bCAqLzsgfTsKIAkJNTcxNEVDQkQxQ0E4QzIyQTAwMDUxQUM4IC8qIERvd25sb2FkUmVxdWVzdE9y
aWdpbmFsVVJMMi5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDU3MTRFQ0JDMUNBOEMyMTgwMDA1MUFDOCAvKiBEb3dubG9hZFJlcXVlc3RP
cmlnaW5hbFVSTDIuaHRtbCAqLzsgfTsKQEAgLTk1Miw3ICs5NTUsOSBAQAogCQkJZHN0UGF0aCA9
IFRlc3RXZWJLaXRBUEkucmVzb3VyY2VzOwogCQkJZHN0U3ViZm9sZGVyU3BlYyA9IDc7CiAJCQlm
aWxlcyA9ICgKKwkJCQk1NUE4MTdGRjIxODEwMjFBMDAwNEEzOUEgLyogMTAweDEwMC1yZWQudGdh
IGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCTFBOUU1MkM5MTNFNjVFRjQwMDY5MTdGNSAvKiAx
OC1jaGFyYWN0ZXJzLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCisJCQkJNTVBODE4MDAyMTgx
MDIyMTAwMDRBMzlBIC8qIDQwMHg0MDAtZ3JlZW4ucG5nIGluIENvcHkgUmVzb3VyY2VzICovLAog
CQkJCTM3OTAyOEI5MTRGQUMyNEMwMDdFNkI0MyAvKiBhY2NlcHRzRmlyc3RNb3VzZS5odG1sIGlu
IENvcHkgUmVzb3VyY2VzICovLAogCQkJCTFDMkI4MTg3MUM4OTI1QTAwMEE1NTI5RiAvKiBBaGVt
LnR0ZiBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQkxQTYzNDc5RjE4M0Q3MkE0MDA1QjE3MDcg
LyogYWxsLWNvbnRlbnQtaW4tb25lLWlmcmFtZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLApA
QCAtMTU1OSw2ICsxNTY0LDkgQEAKIAkJNTNFQzI1M0YxRTk2QkM4MDAwMDgzMUI5IC8qIFByaW9y
aXR5UXVldWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHJpb3Jp
dHlRdWV1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU1MjI2QTJFMUVCOTY5
QjYwMEMzNkFEMCAvKiBsYXJnZS1yZWQtc3F1YXJlLWltYWdlLmh0bWwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
Lmh0bWw7IHBhdGggPSAibGFyZ2UtcmVkLXNxdWFyZS1pbWFnZS5odG1sIjsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNTU5N0Y4MzQxRDk1OTZDODAwNjZCQzIxIC8qIFN5bmNocm9uaXpl
ZEZpeGVkUXVldWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3lu
Y2hyb25pemVkRml4ZWRRdWV1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU1
QTgxN0ZCMjE4MTAwRTAwMDA0QTM5QSAvKiBBZGRpdGlvbmFsU3VwcG9ydGVkSW1hZ2VUeXBlcy5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEFkZGl0aW9uYWxTdXBwb3J0ZWRJbWFnZVR5cGVzLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1NUE4MTdGRDIxODEwMURGMDAwNEEzOUEg
LyogNDAweDQwMC1ncmVlbi5wbmcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBpbWFnZS5wbmc7IHBhdGggPSAiNDAweDQwMC1ncmVlbi5wbmciOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1NUE4MTdGRTIxODEwMURGMDAwNEEzOUEgLyogMTAw
eDEwMC1yZWQudGdhICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gZmlsZTsgcGF0aCA9ICIxMDB4MTAwLXJlZC50Z2EiOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1NzE0RUNCODFDQThCNTg4MDAwNTFBQzggLyogRG93bmxvYWRSZXF1ZXN0T3Jp
Z2luYWxVUkwuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9IERvd25sb2FkUmVxdWVz
dE9yaWdpbmFsVVJMLmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3MTRFQ0JB
MUNBOEJGRDEwMDA1MUFDOCAvKiBEb3dubG9hZFJlcXVlc3RPcmlnaW5hbFVSTEZyYW1lLmh0bWwg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSBEb3dubG9hZFJlcXVlc3RPcmlnaW5hbFVSTEZy
YW1lLmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3MTRFQ0JDMUNBOEMyMTgw
MDA1MUFDOCAvKiBEb3dubG9hZFJlcXVlc3RPcmlnaW5hbFVSTDIuaHRtbCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQuaHRtbDsgcGF0aCA9IERvd25sb2FkUmVxdWVzdE9yaWdpbmFsVVJMMi5odG1sOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjMzNSw2ICsyMzQzLDcgQEAKIAkJCQkzN0U3REQ2MzFF
QTA2RkYyMDA5QjM5NkQgLyogQWRkaXRpb25hbFJlYWRBY2Nlc3NBbGxvd2VkVVJMcy5tbSAqLywK
IAkJCQkzN0U3REQ2NjFFQTA3MUYzMDA5QjM5NkQgLyogQWRkaXRpb25hbFJlYWRBY2Nlc3NBbGxv
d2VkVVJMc1BsdWdpbi5tbSAqLywKIAkJCQkzN0U3REQ2NTFFQTA3MTVCMDA5QjM5NkQgLyogQWRk
aXRpb25hbFJlYWRBY2Nlc3NBbGxvd2VkVVJMc1Byb3RvY29sLmggKi8sCisJCQkJNTVBODE3RkIy
MTgxMDBFMDAwMDRBMzlBIC8qIEFkZGl0aW9uYWxTdXBwb3J0ZWRJbWFnZVR5cGVzLm1tICovLAog
CQkJCUExREY3NDMwMUM0MUI2NTgwMEEyRjREMCAvKiBBbHdheXNSZXZhbGlkYXRlZFVSTFNjaGVt
ZXMubW0gKi8sCiAJCQkJMkRFNzFBRkQxRDQ5QzBCRDAwOTA0MDk0IC8qIEFuaW1hdGVkUmVzaXpl
Lm1tICovLAogCQkJCTYzRjY2ODIwMUY5N0MzQUEwMDMyRUU1MSAvKiBBcHBsaWNhdGlvbk1hbmlm
ZXN0Lm1tICovLApAQCAtMjY4MCw2ICsyNjg5LDggQEAKIAkJQTE2RjY2QjgxQzQwRTlFMTAwQkQ0
RDI0IC8qIFJlc291cmNlcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4g
PSAoCisJCQkJNTVBODE3RkUyMTgxMDFERjAwMDRBMzlBIC8qIDEwMHgxMDAtcmVkLnRnYSAqLywK
KwkJCQk1NUE4MTdGRDIxODEwMURGMDAwNEEzOUEgLyogNDAweDQwMC1ncmVlbi5wbmcgKi8sCiAJ
CQkJQzI1Q0NBMEMxRTUxNDBFNTAwMjZDQjhBIC8qIEFsbEFoZW0uc3ZnICovLAogCQkJCUY0QTky
MDJFMUZFRTM0QzgwMEY1OTU5MCAvKiBhcHBsZS1kYXRhLXVybC5odG1sICovLAogCQkJCUY0N0Qz
MEVCMUVEMjg2MTkwMDA0ODJFMSAvKiBhcHBsZS5naWYgKi8sCkBAIC0zNzQ2LDYgKzM3NTcsNyBA
QAogCQkJCTlCRDUxMTFDMUZFOEUxMTYwMEQyQjYzMCAvKiBBY2Nlc3NpbmdQYXN0ZWRJbWFnZS5t
bSBpbiBTb3VyY2VzICovLAogCQkJCUY0NUI2M0ZFMUYxOUQ0MTAwMDlEMzhCOSAvKiBBY3Rpb25T
aGVldFRlc3RzLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMzdFN0RENjQxRUEwNkZGMjAwOUIzOTZE
IC8qIEFkZGl0aW9uYWxSZWFkQWNjZXNzQWxsb3dlZFVSTHMubW0gaW4gU291cmNlcyAqLywKKwkJ
CQk1NUE4MTdGQzIxODEwMEUwMDAwNEEzOUEgLyogQWRkaXRpb25hbFN1cHBvcnRlZEltYWdlVHlw
ZXMubW0gaW4gU291cmNlcyAqLywKIAkJCQk3QTkwOUE3RDFEODc3NDgwMDA3RTEwRjggLyogQWZm
aW5lVHJhbnNmb3JtLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUExREY3NDMyMUM0MUI2NTgwMEEy
RjREMCAvKiBBbHdheXNSZXZhbGlkYXRlZFVSTFNjaGVtZXMubW0gaW4gU291cmNlcyAqLywKIAkJ
CQkyREU3MUFGRTFENDlDMEJEMDA5MDQwOTQgLyogQW5pbWF0ZWRSZXNpemUubW0gaW4gU291cmNl
cyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
MTAweDEwMC1yZWQudGdhIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS8x
MDB4MTAwLXJlZC50Z2EKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDY5NThiYTBjNDQxMDYwNTg4ODRhM2YyNGEyM2Vl
ZDE4MjhiMTc0YgpHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgNTE4CmNjbVpRejs5YEoqNm93UUEx
JnpsSDRGQ1UrNStmPU0wQ3ttQzRnZGZFCgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hLzQwMHg0MDAtZ3JlZW4u
cG5nIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS80MDB4NDAwLWdyZWVu
LnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi41Mjg0OTgyNDM3MWI4NzE5OGY0N2VjZDAzZWZjZGQwMTI1NTdhZWVh
CkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAxMTM0CnpjbWVBU0BOPyhvbEh5YHVWQnEhaWEweX55
VjRNS0w5ODVxRns8e2xqMTFaaHxrSH0mTTI1dzt4V0BNTihNKj05dwp6VWdHS04lS25nQFBndW4m
WXh8cC1LcTEtOGtjYmxKe01fOHN5Yj5VbmZ4KT5iSEwpWiRNV0g7aUJ0eWE3KD5FWVIKekZPezh2
ZiUlRTJpKF5RfHQrIVZVY15NY3VTVD9kaF4+QWxwX1NBbVp3JVVnd0VgeVdkRnE0N0tmZWoyaSsm
fWB2CnoxYD1SNDQ+eT1pajNtKHRAbWV1ejNpaEJNTSZaS2ElPisocjZuY3ImXm9jIyQ0SHJgJFR3
PERraWd8KDk/NzFJNwpPMSVhb2xwVVhPQGdlQ3d6OTVKQikKCmxpdGVyYWwgMApIY21WP2QwMDAw
MQoKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQWRk
aXRpb25hbFN1cHBvcnRlZEltYWdlVHlwZXMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL0FkZGl0aW9uYWxTdXBwb3J0ZWRJbWFnZVR5cGVzLm1tCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjUxYWE4YjYwYjU5YzJjNGVlMWU3Zjg5YmYxZTEzMzZkYTE0YTE1ZDEKLS0tIC9kZXYvbnVsbAor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0FkZGl0aW9uYWxTdXBw
b3J0ZWRJbWFnZVR5cGVzLm1tCkBAIC0wLDAgKzEsODkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0
ICJjb25maWcuaCIKKyNpbXBvcnQgPFdlYktpdC9XS0ZvdW5kYXRpb24uaD4KKworI2lmIFdLX0FQ
SV9FTkFCTEVEICYmIFBMQVRGT1JNKENPQ09BKQorCisjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGll
cy5oIgorI2ltcG9ydCAiVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5oIgorI2ltcG9ydCAiV0tXZWJW
aWV3Q29uZmlndXJhdGlvbkV4dHJhcy5oIgorI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld0NvbmZp
Z3VyYXRpb25Qcml2YXRlLmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisKK3N0YXRpYyB2
b2lkIHJ1blRlc3QoTlNBcnJheTxOU1N0cmluZyAqPiAqYWRkaXRpb25hbFN1cHBvcnRlZEltYWdl
VHlwZXMsIE5TU3RyaW5nICppbWFnZVVSTCwgTlNTdHJpbmcgKmltYWdlRXh0ZW5zaW9uLCBDR0Zs
b2F0IGltYWdlV2lkdGgpCit7CisgICAgUmV0YWluUHRyPFdLV2ViVmlld0NvbmZpZ3VyYXRpb24+
IGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10g
aW5pdF0pOworICAgIFtjb25maWd1cmF0aW9uIF9zZXRBZGRpdGlvbmFsU3VwcG9ydGVkSW1hZ2VU
eXBlczphZGRpdGlvbmFsU3VwcG9ydGVkSW1hZ2VUeXBlc107CisKKyAgICBSZXRhaW5QdHI8V0tX
ZWJWaWV3PiB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFt
ZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24u
Z2V0KCldKTsKKworICAgIFJldGFpblB0cjxOU1VSTD4gdGVzdFVSTCA9IFtbTlNCdW5kbGUgbWFp
bkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6aW1hZ2VVUkwgd2l0aEV4dGVuc2lvbjppbWFnZUV4dGVu
c2lvbiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOworICAgIFt3ZWJW
aWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6dGVzdFVSTC5nZXQo
KV1dOworICAgIFt3ZWJWaWV3IF90ZXN0X3dhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsKKwor
ICAgIF9fYmxvY2sgYm9vbCBpc0RvbmUgPSBmYWxzZTsKKyAgICBbd2ViVmlldyBfZG9BZnRlck5l
eHRQcmVzZW50YXRpb25VcGRhdGU6XnsKKyAgICAgICAgW3dlYlZpZXcgZXZhbHVhdGVKYXZhU2Ny
aXB0OkAiW2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2ltZycpLndpZHRoXSIgY29tcGxldGlvbkhh
bmRsZXI6XihpZCB2YWx1ZSwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICAgICAgICAgIENHRmxvYXQg
d2lkdGggPSBbW3ZhbHVlIG9iamVjdEF0SW5kZXg6MF0gZmxvYXRWYWx1ZV07CisgICAgICAgICAg
ICBFWFBFQ1RfRVEod2lkdGgsIGltYWdlV2lkdGgpOworICAgICAgICAgICAgaXNEb25lID0gdHJ1
ZTsKKyAgICAgICAgfV07CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZp
c0RvbmUpOworfQorCitURVNUKFdlYktpdCwgQWRkU3VwcG9ydGVkSW1hZ2VUeXBlKQoreworICAg
IHJ1blRlc3QoQFtAInB1YmxpYy5wbmciXSwgQCI0MDB4NDAwLWdyZWVuIiwgQCJwbmciLCA0MDAp
OworfQorCitURVNUKFdlYktpdCwgQWRkU3VwcG9ydGVkQW5kQm9ndXNJbWFnZVR5cGVzKQorewor
ICAgIHJ1blRlc3QoQFtAInB1YmxpYy5wbmciLCBAInB1YmxpYy5ib2d1cyJdLCBAIjQwMHg0MDAt
Z3JlZW4iLCBAInBuZyIsIDQwMCk7Cit9CisKK1RFU1QoV2ViS2l0LCBBZGRTdXBwb3J0ZWRBbmRC
b2d1c0ltYWdlVHlwZXNUd2ljZSkKK3sKKyAgICBydW5UZXN0KEBbQCJwdWJsaWMucG5nIiwgQCJw
dWJsaWMuYm9ndXMiLCBAInB1YmxpYy5wbmciLCBAInB1YmxpYy5ib2d1cyJdLCBAIjQwMHg0MDAt
Z3JlZW4iLCBAInBuZyIsIDQwMCk7Cit9CisKK1RFU1QoV2ViS2l0LCBBZGRVbnN1cHBvcnRlZElt
YWdlVHlwZSkKK3sKKyAgICBydW5UZXN0KEBbQCJjb20udHJ1ZXZpc2lvbi50Z2EtaW1hZ2UiXSwg
QCIxMDB4MTAwLXJlZCIsIEAidGdhIiwgMTAwKTsKK30KKworVEVTVChXZWJLaXQsIEFkZFVuc3Vw
cG9ydGVkQW5kQm9ndXNJbWFnZVR5cGVzKQoreworICAgIHJ1blRlc3QoQFtAImNvbS50cnVldmlz
aW9uLnRnYS1pbWFnZSIsIEAicHVibGljLmJvZ3VzIl0sIEAiMTAweDEwMC1yZWQiLCBAInRnYSIs
IDEwMCk7Cit9CisKK1RFU1QoV2ViS2l0LCBBZGRVbnN1cHBvcnRlZEFuZEJvZ3VzSW1hZ2VUeXBl
c1R3aWNlKQoreworICAgIHJ1blRlc3QoQFtAImNvbS50cnVldmlzaW9uLnRnYS1pbWFnZSIsIEAi
cHVibGljLmJvZ3VzIiwgQCJjb20udHJ1ZXZpc2lvbi50Z2EtaW1hZ2UiLCBAInB1YmxpYy5ib2d1
cyJdLCBAIjEwMHgxMDAtcmVkIiwgQCJ0Z2EiLCAxMDApOworfQorCisjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>354288</attachid>
            <date>2018-11-08 16:21:23 -0800</date>
            <delta_ts>2018-11-08 19:23:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190454-20181108162122.patch</filename>
            <type>text/plain</type>
            <size>39759</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3OTkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDJlMjhjZTdmMzg1YWUz
NGRjYWUzNzk0YjUwZjM1NTliZjExMmFiNy4uNDcwMGNmZTk2OTM0YWY5ZWZjZjFjMGVmN2Y2Y2Q2
NTVhMDYzZmMwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDE4LTExLTA4ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGFu
IFNQSSB0byBhbGxvdyBXZWJWaWV3IGNsaWVudHMgdG8gYWRkIGFkZGl0aW9uYWwgc3VwcG9ydGVk
IGltYWdlIGZvcm1hdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE5MDQ1NAorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KKworICAg
ICAgICBBZGQgYW4gU1BJIHRvIGFsbG93IGFkZGl0aW9uYWwgc3VwcG9ydGVkIGltYWdlIGZvcm1h
dHMgaW4gV2ViVmlldy4gVGhlc2UKKyAgICAgICAgYWRkaXRpb25hbCBmb3JtYXRzIGNhbiBiZSBz
ZXQgaW4gdGhlIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gYXMgYW4gTlNBcnJheQorICAgICAgICBv
ZiBOU3RyaW5ncy4gRWFjaCBzdHJpbmcgcmVwcmVzZW50cyBhbiBpbWFnZSBzb3VyY2UgdHlwZSBh
a2EgVVRJLgorCisgICAgICAgIFRoZSBJbWFnZVNvdXJjZVR5cGUgaW4gdGhlIGZ1bmN0aW9ucycg
bmFtZXMgd2lsbCBiZSByZXBsYWNlZCBieSBJbWFnZVR5cGUuCisgICAgICAgIEltYWdlVHlwZSBp
biB0aGlzIGNvbnRleHQgaXMgdGhlIGltYWdlIFVUSSAoVW5pZm9ybSBUeXBlIElkZW50aWZpZXIp
LgorCisgICAgICAgICogcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5OjpzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlcyk6CisgICAg
ICAgIChXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5OjphZGRpdGlvbmFsU3VwcG9ydGVkSW1hZ2VN
SU1FVHlwZXMpOgorICAgICAgICAoV2ViQ29yZTo6c3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXNGb3JF
bmNvZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRl
ZEltYWdlTUlNRVR5cGUpOgorICAgICAgICAqIHBsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJDRzo6ZmlsZW5hbWVFeHRlbnNpb24gY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyQ0c6OmVuY29kZWREYXRhU3RhdHVzIGNvbnN0
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNvdXJjZUNHLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDR01hYy5tbToKKyAgICAgICAg
KFdlYkNvcmU6Ok1JTUVUeXBlRm9ySW1hZ2VUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OnByZWZl
cnJlZEV4dGVuc2lvbkZvckltYWdlVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpNSU1FVHlwZUZv
ckltYWdlU291cmNlVHlwZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpwcmVmZXJyZWRF
eHRlbnNpb25Gb3JJbWFnZVNvdXJjZVR5cGUpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0dXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TUlN
RVR5cGVGb3JJbWFnZVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6cHJlZmVycmVkRXh0ZW5zaW9u
Rm9ySW1hZ2VUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1JTUVUeXBlRm9ySW1hZ2VTb3VyY2VU
eXBlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnByZWZlcnJlZEV4dGVuc2lvbkZvcklt
YWdlU291cmNlVHlwZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
VVRJUmVnaXN0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZGVmYXVsdFN1cHBvcnRlZEltYWdl
VHlwZXMpOgorICAgICAgICAoV2ViQ29yZTo6YWRkaXRpb25hbFN1cHBvcnRlZEltYWdlVHlwZXMp
OgorICAgICAgICAoV2ViQ29yZTo6c2V0QWRkaXRpb25hbFN1cHBvcnRlZEltYWdlVHlwZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6aXNTdXBwb3J0ZWRJbWFnZVR5cGUpOgorICAgICAgICAoV2ViQ29y
ZTo6c3VwcG9ydGVkRGVmYXVsdEltYWdlU291cmNlVHlwZXMpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6aXNTdXBwb3J0SW1hZ2VTb3VyY2VUeXBlKTogRGVsZXRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jZy9VVElSZWdpc3RyeS5oOgorCiAyMDE4LTExLTA4ICBEZWFuIEph
Y2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgYSBTdHJpbmcgbGl0ZXJhbCB0
aGF0IHJldHVybnMgYSBTdHJpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNTMwMThmZDA5M2U3NzRhNTgxZmNiZjBm
OTJmNTc4NTc5YzA5ODcyYi4uYTk5Y2RjODljNjMwMGU1YTFjNjZkNmI3YmI5MGFmNzE1Mjg4MGZl
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MSBAQAorMjAxOC0xMS0wOCAgU2FpZCBBYm91LUhhbGxh
d2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBhbiBTUEkgdG8gYWxs
b3cgV2ViVmlldyBjbGllbnRzIHRvIGFkZCBhZGRpdGlvbmFsIHN1cHBvcnRlZCBpbWFnZSBmb3Jt
YXRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTA0
NTQKKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuCisKKyAgICAgICAgKiBQbGF0
Zm9ybS9tYWMvU3RyaW5nVXRpbGl0aWVzLmg6CisgICAgICAgICogUGxhdGZvcm0vbWFjL1N0cmlu
Z1V0aWxpdGllcy5tbToKKyAgICAgICAgKFdlYktpdDo6d2ViQ29yZVN0cmluZ1ZlY3RvckZyb21O
U1N0cmluZ0FycmF5KToKKyAgICAgICAgQSBoZWxwZXIgZnVuY3Rpb24gd2hpY2ggY29udmVydHMg
YW4gTlNBcnJheSBvZiBOU1N0cmluZ3MgdG8gYSBWZWN0b3Igb2YKKyAgICAgICAgV1RGU3RyaW5n
LgorCisgICAgICAgICogU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAg
ICAgICAqIFNoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmg6CisgICAgICAgIEhhbmRs
ZSBlbmNvZGluZyBhbmQgZGVjb2RpbmcgdGhlIEFkZGl0aW9uYWxTdXBwb3J0ZWRJbWFnZVR5cGVz
IHdoaWNoIHdpbGwKKyAgICAgICAgYWxsb3cgdHJhbnNmZXJyaW5nIGl0IGZyb20gdGhlIFVJIHBy
b2Nlc3MgdG8gdGhlIHdlYiBwcm9jZXNzLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElQ
YWdlQ29uZmlndXJhdGlvbi5oOgorICAgICAgICAoQVBJOjpQYWdlQ29uZmlndXJhdGlvbjo6YWRk
aXRpb25hbFN1cHBvcnRlZEltYWdlVHlwZXMgY29uc3QpOgorICAgICAgICAoQVBJOjpQYWdlQ29u
ZmlndXJhdGlvbjo6c2V0QWRkaXRpb25hbFN1cHBvcnRlZEltYWdlVHlwZXMpOgorICAgICAgICBT
dG9yZSB0aGUgQWRkaXRpb25hbFN1cHBvcnRlZEltYWdlVHlwZXMgaW4gdGhlIEFQSVBhZ2VDb25m
aWd1cmF0aW9uCisgICAgICAgIHdoaWNoIGlzIHVzZWQgd2hlbiBjcmVhdGluZyB0aGUgV2ViUGFn
ZVByb3h5IGluIHRoZSBVSVBvcmNlc3MuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9pbml0aWFsaXplV2l0aENvbmZp
Z3VyYXRpb246XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25m
aWd1cmF0aW9uLm1tOgorICAgICAgICAoLVtXS1dlYlZpZXdDb25maWd1cmF0aW9uIGNvcHlXaXRo
Wm9uZTpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBfYWRkaXRpb25hbFN1
cHBvcnRlZEltYWdlVHlwZXNdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBf
c2V0QWRkaXRpb25hbFN1cHBvcnRlZEltYWdlVHlwZXM6XSk6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oOgorICAgICAgICBTZXR0
ZXIvR2V0dGVyIGZvciB0aGUgQWRkaXRpb25hbFN1cHBvcnRlZEltYWdlVHlwZXMuCisKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpjcmVhdGlvblBhcmFtZXRlcnMpOgorICAgICAgICBDb3B5IHRoZSBBZGRpdGlvbmFs
U3VwcG9ydGVkSW1hZ2VUeXBlcyBmcm9tIEFQSVBhZ2VDb25maWd1cmF0aW9uIHRvIAorICAgICAg
ICBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oOgorICAgICAgICBEZWxldGUgdW5pbXBsZW1lbnRlZCBmdW5jdGlvbi4KKworICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
bV9zaG91bGRBdHRhY2hEcmF3aW5nQXJlYU9uUGFnZVRyYW5zaXRpb24pOgorICAgICAgICBDb3B5
IHRoZSBBZGRpdGlvbmFsU3VwcG9ydGVkSW1hZ2VUeXBlcyBmcm9tIFdlYlBhZ2VDcmVhdGlvblBh
cmFtZXRlcnMgdG8KKyAgICAgICAgV2ViQ29yZS4KKwogMjAxOC0xMS0wOCAgRXJpYyBDYXJsc29u
ICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBbTWVkaWFTdHJlYW1dIFVzZSBE
ZXZpY2VJZEhhc2hTYWx0U3RvcmFnZSB0byBnZW5lcmF0ZSBkZXZpY2UgSUQgaGFzaCBzYWx0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuY3BwCmluZGV4IDNlOThk
ODNlYjhiMmJhMTZmZWVlM2UyMDRlMTg2ZTRiYTY3ZjM3ZGUuLmM2YmI3MDM4MWYzYTI5NGEwYjNj
ZTYyMzM5YTc1NWUyMzk1MWZlOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L01JTUVUeXBlUmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVU
eXBlUmVnaXN0cnkuY3BwCkBAIC0xMzMsMTEgKzEzMywxMSBAQCBjb25zdCBIYXNoU2V0PFN0cmlu
ZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgTUlNRVR5cGVSZWdpc3RyeTo6c3VwcG9ydGVk
SW1hZwogCiAjaWYgVVNFKENHKQogI2lmbmRlZiBOREVCVUcKLSAgICAvLyBFc251cmUgc3VwcG9y
dGVkSW1hZ2VNSU1FVHlwZXMoKSBpcyBpbiBzeW5jIHdpdGggc3VwcG9ydGVkRGVmYXVsdEltYWdl
U291cmNlVHlwZXMoKS4KKyAgICAvLyBFc251cmUgc3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXMoKSBp
cyBpbiBzeW5jIHdpdGggZGVmYXVsdFN1cHBvcnRlZEltYWdlVHlwZXMoKS4KICAgICBzdGF0aWMg
c3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7CiAgICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtd
IHsKLSAgICAgICAgZm9yIChhdXRvJiBpbWFnZVNvdXJjZVR5cGUgOiBzdXBwb3J0ZWREZWZhdWx0
SW1hZ2VTb3VyY2VUeXBlcygpKSB7Ci0gICAgICAgICAgICBhdXRvIG1pbWVUeXBlID0gTUlNRVR5
cGVGb3JJbWFnZVNvdXJjZVR5cGUoaW1hZ2VTb3VyY2VUeXBlKTsKKyAgICAgICAgZm9yIChhdXRv
JiBpbWFnZVR5cGUgOiBkZWZhdWx0U3VwcG9ydGVkSW1hZ2VUeXBlcygpKSB7CisgICAgICAgICAg
ICBhdXRvIG1pbWVUeXBlID0gTUlNRVR5cGVGb3JJbWFnZVR5cGUoaW1hZ2VUeXBlKTsKICAgICAg
ICAgICAgIEFTU0VSVF9JTVBMSUVTKCFtaW1lVHlwZS5pc0VtcHR5KCksIHN1cHBvcnRlZEltYWdl
TUlNRVR5cGVzLmdldCgpLmNvbnRhaW5zKG1pbWVUeXBlKSk7CiAgICAgICAgIH0KICAgICB9KTsK
QEAgLTE0Niw2ICsxNDYsMTIgQEAgY29uc3QgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vu
c2l0aXZlSGFzaD4mIE1JTUVUeXBlUmVnaXN0cnk6OnN1cHBvcnRlZEltYWcKICAgICByZXR1cm4g
c3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXM7CiB9CiAKK0hhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJ
bnNlbnNpdGl2ZUhhc2g+JiBNSU1FVHlwZVJlZ2lzdHJ5OjphZGRpdGlvbmFsU3VwcG9ydGVkSW1h
Z2VNSU1FVHlwZXMoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0PFN0cmlu
ZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPj4gYWRkaXRpb25hbFN1cHBvcnRlZEltYWdlTUlN
RVR5cGVzOworICAgIHJldHVybiBhZGRpdGlvbmFsU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXM7Cit9
CisKIHN0YXRpYyBjb25zdCBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNo
PiYgc3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXNGb3JFbmNvZGluZygpCiB7CiAjaWYgUExBVEZPUk0o
Q09DT0EpCkBAIC0xNTUsNyArMTYxLDcgQEAgc3RhdGljIGNvbnN0IEhhc2hTZXQ8U3RyaW5nLCBB
U0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiBzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlc0YKICAgICAg
ICAgQ0ZJbmRleCBjb3VudCA9IENGQXJyYXlHZXRDb3VudChzdXBwb3J0ZWRUeXBlcy5nZXQoKSk7
CiAgICAgICAgIGZvciAoQ0ZJbmRleCBpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKICAgICAgICAg
ICAgIENGU3RyaW5nUmVmIHN1cHBvcnRlZFR5cGUgPSByZWludGVycHJldF9jYXN0PENGU3RyaW5n
UmVmPihDRkFycmF5R2V0VmFsdWVBdEluZGV4KHN1cHBvcnRlZFR5cGVzLmdldCgpLCBpKSk7Ci0g
ICAgICAgICAgICBTdHJpbmcgbWltZVR5cGUgPSBNSU1FVHlwZUZvckltYWdlU291cmNlVHlwZShz
dXBwb3J0ZWRUeXBlKTsKKyAgICAgICAgICAgIFN0cmluZyBtaW1lVHlwZSA9IE1JTUVUeXBlRm9y
SW1hZ2VUeXBlKHN1cHBvcnRlZFR5cGUpOwogICAgICAgICAgICAgaWYgKCFtaW1lVHlwZS5pc0Vt
cHR5KCkpCiAgICAgICAgICAgICAgICAgc3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXNGb3JFbmNvZGlu
Zy5hZGQobWltZVR5cGUpOwogICAgICAgICB9CkBAIC00MzMsNyArNDM5LDggQEAgYm9vbCBNSU1F
VHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZEltYWdlTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSkKIHsKICAgICBpZiAobWltZVR5cGUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgcmV0dXJuIHN1cHBvcnRlZEltYWdlTUlNRVR5cGVzKCkuY29udGFpbnMoZ2V0Tm9y
bWFsaXplZE1JTUVUeXBlKG1pbWVUeXBlKSk7CisgICAgU3RyaW5nIG5vcm1hbGl6ZWRNSU1FVHlw
ZSA9IGdldE5vcm1hbGl6ZWRNSU1FVHlwZShtaW1lVHlwZSk7CisgICAgcmV0dXJuIHN1cHBvcnRl
ZEltYWdlTUlNRVR5cGVzKCkuY29udGFpbnMobm9ybWFsaXplZE1JTUVUeXBlKSB8fCBhZGRpdGlv
bmFsU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXMoKS5jb250YWlucyhub3JtYWxpemVkTUlNRVR5cGUp
OwogfQogCiBib29sIE1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkSW1hZ2VWaWRlb09yU1ZH
TUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L01JTUVUeXBlUmVnaXN0cnkuaAppbmRleCA3MTg1ZGY0ZWFjNmU1OWFlNmRkYzU1Nzg5NDk3MGQ3
YjlmZGJlOGRmLi43YzkyOWJlMmViMjVmZmJjNjRiYTMyNDE2MWUyMTNiZTk4NmU4OTg4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5oCkBAIC0xMDYsNiArMTA2
LDcgQEAgcHVibGljOgogCiAgICAgLy8gRklYTUU6IFdvdWxkIGJlIG5pY2UgdG8gZmluZCBhIHdh
eSB0byBhdm9pZCBleHBvc2luZyB0aGVzZSBzZXRzLCBldmVuIHdvcnNlIGV4cG9zaW5nIG5vbi1j
b25zdCByZWZlcmVuY2VzLgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBjb25zdCBIYXNoU2V0
PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgc3VwcG9ydGVkSW1hZ2VNSU1FVHlw
ZXMoKTsKKyAgICBzdGF0aWMgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFz
aD4mIGFkZGl0aW9uYWxTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlcygpOwogICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgc3Vw
cG9ydGVkTm9uSW1hZ2VNSU1FVHlwZXMoKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgY29u
c3QgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIHN1cHBvcnRlZE1l
ZGlhTUlNRVR5cGVzKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGNvbnN0IEhhc2hTZXQ8
U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiBwZGZNSU1FVHlwZXMoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNH
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNH
LmNwcAppbmRleCA4NTJkZDA2NjRlNmZiZTU2Zjk3M2E0NjBjZWQwOTU5NTI0NTFhYTQ4Li5lMThl
NjNmZWZkNjAxNGNhNTYwNWI2NmE1MDhmYTZjZjQzODJhMDBjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCkBAIC0x
NzYsNyArMTc2LDcgQEAgU3RyaW5nIEltYWdlRGVjb2RlckNHOjp1dGkoKSBjb25zdAogCiBTdHJp
bmcgSW1hZ2VEZWNvZGVyQ0c6OmZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3QKIHsKLSAgICByZXR1
cm4gV2ViQ29yZTo6cHJlZmVycmVkRXh0ZW5zaW9uRm9ySW1hZ2VTb3VyY2VUeXBlKHV0aSgpKTsK
KyAgICByZXR1cm4gV2ViQ29yZTo6cHJlZmVycmVkRXh0ZW5zaW9uRm9ySW1hZ2VUeXBlKHV0aSgp
KTsKIH0KIAogRW5jb2RlZERhdGFTdGF0dXMgSW1hZ2VEZWNvZGVyQ0c6OmVuY29kZWREYXRhU3Rh
dHVzKCkgY29uc3QKQEAgLTE5OSw3ICsxOTksNyBAQCBFbmNvZGVkRGF0YVN0YXR1cyBJbWFnZURl
Y29kZXJDRzo6ZW5jb2RlZERhdGFTdGF0dXMoKSBjb25zdAogICAgICAgICByZXR1cm4gRW5jb2Rl
ZERhdGFTdGF0dXM6OkVycm9yOwogCiAgICAgY2FzZSBrQ0dJbWFnZVN0YXR1c0luY29tcGxldGU6
IHsKLSAgICAgICAgaWYgKCFpc1N1cHBvcnRJbWFnZVNvdXJjZVR5cGUodXRpKSkKKyAgICAgICAg
aWYgKCFpc1N1cHBvcnRlZEltYWdlVHlwZSh1dGkpKQogICAgICAgICAgICAgcmV0dXJuIEVuY29k
ZWREYXRhU3RhdHVzOjpFcnJvcjsKIAogICAgICAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVm
PiBpbWFnZTBQcm9wZXJ0aWVzID0gYWRvcHRDRihDR0ltYWdlU291cmNlQ29weVByb3BlcnRpZXNB
dEluZGV4KG1fbmF0aXZlRGVjb2Rlci5nZXQoKSwgMCwgaW1hZ2VTb3VyY2VPcHRpb25zKCkuZ2V0
KCkpKTsKQEAgLTIxMyw3ICsyMTMsNyBAQCBFbmNvZGVkRGF0YVN0YXR1cyBJbWFnZURlY29kZXJD
Rzo6ZW5jb2RlZERhdGFTdGF0dXMoKSBjb25zdAogICAgIH0KIAogICAgIGNhc2Uga0NHSW1hZ2VT
dGF0dXNDb21wbGV0ZToKLSAgICAgICAgaWYgKCFpc1N1cHBvcnRJbWFnZVNvdXJjZVR5cGUodXRp
KSkKKyAgICAgICAgaWYgKCFpc1N1cHBvcnRlZEltYWdlVHlwZSh1dGkpKQogICAgICAgICAgICAg
cmV0dXJuIEVuY29kZWREYXRhU3RhdHVzOjpFcnJvcjsKIAogICAgICAgICByZXR1cm4gRW5jb2Rl
ZERhdGFTdGF0dXM6OkNvbXBsZXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDRy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDRy5oCmluZGV4IDkzM2VmNjJjMGNhNzEyYWIyMjEwMTBj
ZDQwYjE2YmNjNmJkYzU2ODcuLjZiYjgxZTY0NDFmYmRhY2M3ZjBjMjIwY2QwZDJlNTM4OGVmYzM1
YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdl
U291cmNlQ0cuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFn
ZVNvdXJjZUNHLmgKQEAgLTMwLDkgKzMwLDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1T
dHJpbmcgcHJlZmVycmVkRXh0ZW5zaW9uRm9ySW1hZ2VTb3VyY2VUeXBlKGNvbnN0IFN0cmluZyYg
dHlwZSk7CitTdHJpbmcgcHJlZmVycmVkRXh0ZW5zaW9uRm9ySW1hZ2VUeXBlKGNvbnN0IFN0cmlu
ZyYgdHlwZSk7CiAKLVN0cmluZyBNSU1FVHlwZUZvckltYWdlU291cmNlVHlwZShjb25zdCBTdHJp
bmcmIHR5cGUpOworU3RyaW5nIE1JTUVUeXBlRm9ySW1hZ2VUeXBlKGNvbnN0IFN0cmluZyYgdHlw
ZSk7CiAKICNpZiAhUExBVEZPUk0oQ09DT0EpCiBzaXplX3Qgc2hhcmVkQnVmZmVyR2V0Qnl0ZXNB
dFBvc2l0aW9uKHZvaWQqIGluZm8sIHZvaWQqIGJ1ZmZlciwgb2ZmX3QgcG9zaXRpb24sIHNpemVf
dCBjb3VudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9JbWFnZVNvdXJjZUNHTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSW1hZ2VTb3VyY2VDR01hYy5tbQppbmRleCBmOTQwMmJhMjhmODMwYmIyNWQ1ZDY3MDBkMmQx
NzI4NDk0NzhkZTJkLi5hMjU4ZDI4MWZkOWIzZjZlYjBiODhlY2Y3MjllMmM4ZGY2YjUzNmNmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNvdXJj
ZUNHTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdl
U291cmNlQ0dNYWMubW0KQEAgLTM2LDEyICszNiwxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLVN0cmluZyBNSU1FVHlwZUZvckltYWdlU291cmNlVHlwZShjb25zdCBTdHJpbmcmIHV0aSkK
K1N0cmluZyBNSU1FVHlwZUZvckltYWdlVHlwZShjb25zdCBTdHJpbmcmIHV0aSkKIHsKICAgICBy
ZXR1cm4gTUlNRVR5cGVGcm9tVVRJKHV0aSk7CiB9CiAKLVN0cmluZyBwcmVmZXJyZWRFeHRlbnNp
b25Gb3JJbWFnZVNvdXJjZVR5cGUoY29uc3QgU3RyaW5nJiB1dGkpCitTdHJpbmcgcHJlZmVycmVk
RXh0ZW5zaW9uRm9ySW1hZ2VUeXBlKGNvbnN0IFN0cmluZyYgdXRpKQogewogICAgIHJldHVybiBh
ZG9wdENGKFVUVHlwZUNvcHlQcmVmZXJyZWRUYWdXaXRoQ2xhc3ModXRpLmNyZWF0ZUNGU3RyaW5n
KCkuZ2V0KCksIGtVVFRhZ0NsYXNzRmlsZW5hbWVFeHRlbnNpb24pKS5nZXQoKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0dX
aW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VD
R1dpbi5jcHAKaW5kZXggNmQ1MzczN2JjZWMzYTcyNjI3ZmEzNjUwZWVkNTFlZGQwYmI4YmQ0NS4u
ZjAyMDZlYTE1NTgyNjMyZjQ4YWE1MzQ2ZWY4ZjYzN2I3ODVhODE2YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDR1dpbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDR1dpbi5j
cHAKQEAgLTMyLDcgKzMyLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TdHJpbmcgTUlN
RVR5cGVGb3JJbWFnZVNvdXJjZVR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKQorU3RyaW5nIE1JTUVU
eXBlRm9ySW1hZ2VUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkKIHsKICAgICBTdHJpbmcgbWltZVR5
cGU7CiAgICAgLy8gRklYTUU6IFRoaXMgYXBwcm9hY2ggb2YgdGFraW5nIGEgVVRJIGxpa2UgcHVi
bGljLnR5cGUgYW5kIGdpdmluZyBiYWNrIApAQCAtNDQsNyArNDQsNyBAQCBTdHJpbmcgTUlNRVR5
cGVGb3JJbWFnZVNvdXJjZVR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKQogICAgIHJldHVybiBtaW1l
VHlwZTsKIH0KIAotU3RyaW5nIHByZWZlcnJlZEV4dGVuc2lvbkZvckltYWdlU291cmNlVHlwZShj
b25zdCBTdHJpbmcmIHR5cGUpCitTdHJpbmcgcHJlZmVycmVkRXh0ZW5zaW9uRm9ySW1hZ2VUeXBl
KGNvbnN0IFN0cmluZyYgdHlwZSkKIHsKICAgICBpZiAodHlwZS5pc051bGwoKSkKICAgICAgICAg
cmV0dXJuIFN0cmluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvVVRJUmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvVVRJUmVnaXN0cnkuY3BwCmluZGV4IGVjOWM4Nzk1ZDczYzBiMDVmMGViY2I5OTRkMmQ1
YzE4OTZmMDUwZDIuLmM3ODE1OGYyYjdmMzJhOTMyODY1NDE4MWRlNDQ1MDk3YmIwNmRiZjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1VUSVJlZ2lzdHJ5
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9VVElSZWdpc3Ry
eS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIElu
Yy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOCBBcHBs
ZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0yOCw2ICsyOCw5IEBACiAKICNpZiBVU0UoQ0cpCiAKKyNpbmNsdWRlICJJbWFnZVNv
dXJjZUNHLmgiCisjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgorCiAjaW5jbHVkZSA8d3Rm
L0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDxJ
bWFnZUlPL0ltYWdlSU8uaD4KQEAgLTM4LDEwICs0MSwxMCBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLWNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYgc3VwcG9ydGVkRGVmYXVsdEltYWdlU291cmNl
VHlwZXMoKQorY29uc3QgSGFzaFNldDxTdHJpbmc+JiBkZWZhdWx0U3VwcG9ydGVkSW1hZ2VUeXBl
cygpCiB7CiAgICAgLy8gQ0cgYXQgbGVhc3Qgc3VwcG9ydHMgdGhlIGZvbGxvd2luZyBzdGFuZGFy
ZCBpbWFnZSB0eXBlczoKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxTdHJpbmc+
PiBzdXBwb3J0ZWREZWZhdWx0SW1hZ2VTb3VyY2VUeXBlcyA9IHN0ZDo6aW5pdGlhbGl6ZXJfbGlz
dDxTdHJpbmc+IHsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxTdHJpbmc+PiBk
ZWZhdWx0U3VwcG9ydGVkSW1hZ2VUeXBlcyA9IHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxTdHJpbmc+
IHsKICAgICAgICAgImNvbS5jb21wdXNlcnZlLmdpZiIsCiAgICAgICAgICJjb20ubWljcm9zb2Z0
LmJtcCIsCiAgICAgICAgICJjb20ubWljcm9zb2Z0LmN1ciIsCkBAIC01NywyMSArNjAsNDAgQEAg
Y29uc3QgSGFzaFNldDxTdHJpbmc+JiBzdXBwb3J0ZWREZWZhdWx0SW1hZ2VTb3VyY2VUeXBlcygp
CiAgICAgLy8gTWFrZSBzdXJlIHRoYXQgQ0cgc3VwcG9ydHMgdGhlbS4KICAgICBzdGF0aWMgc3Rk
OjpvbmNlX2ZsYWcgb25jZUZsYWc7CiAgICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsK
LSAgICAgICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IHN5c3RlbUltYWdlU291cmNlVHlwZXMgPSBh
ZG9wdENGKENHSW1hZ2VTb3VyY2VDb3B5VHlwZUlkZW50aWZpZXJzKCkpOwotICAgICAgICBDRklu
ZGV4IGNvdW50ID0gQ0ZBcnJheUdldENvdW50KHN5c3RlbUltYWdlU291cmNlVHlwZXMuZ2V0KCkp
OwotICAgICAgICBmb3IgKGF1dG8mIGltYWdlU291cmNlVHlwZSA6IHN1cHBvcnRlZERlZmF1bHRJ
bWFnZVNvdXJjZVR5cGVzLmdldCgpKSB7Ci0gICAgICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdS
ZWY+IHN0cmluZyA9IGltYWdlU291cmNlVHlwZS5jcmVhdGVDRlN0cmluZygpOwotICAgICAgICAg
ICAgQVNTRVJUKENGQXJyYXlDb250YWluc1ZhbHVlKHN5c3RlbUltYWdlU291cmNlVHlwZXMuZ2V0
KCksIENGUmFuZ2VNYWtlKDAsIGNvdW50KSwgc3RyaW5nLmdldCgpKSk7CisgICAgICAgIFJldGFp
blB0cjxDRkFycmF5UmVmPiBzeXN0ZW1JbWFnZVR5cGVzID0gYWRvcHRDRihDR0ltYWdlU291cmNl
Q29weVR5cGVJZGVudGlmaWVycygpKTsKKyAgICAgICAgQ0ZJbmRleCBjb3VudCA9IENGQXJyYXlH
ZXRDb3VudChzeXN0ZW1JbWFnZVR5cGVzLmdldCgpKTsKKyAgICAgICAgZm9yIChhdXRvJiBpbWFn
ZVR5cGUgOiBkZWZhdWx0U3VwcG9ydGVkSW1hZ2VUeXBlcy5nZXQoKSkgeworICAgICAgICAgICAg
UmV0YWluUHRyPENGU3RyaW5nUmVmPiBzdHJpbmcgPSBpbWFnZVR5cGUuY3JlYXRlQ0ZTdHJpbmco
KTsKKyAgICAgICAgICAgIEFTU0VSVChDRkFycmF5Q29udGFpbnNWYWx1ZShzeXN0ZW1JbWFnZVR5
cGVzLmdldCgpLCBDRlJhbmdlTWFrZSgwLCBjb3VudCksIHN0cmluZy5nZXQoKSkpOwogICAgICAg
ICB9CiAgICAgfSk7CiAjZW5kaWYKIAotICAgIHJldHVybiBzdXBwb3J0ZWREZWZhdWx0SW1hZ2VT
b3VyY2VUeXBlczsKKyAgICByZXR1cm4gZGVmYXVsdFN1cHBvcnRlZEltYWdlVHlwZXM7Cit9CisK
K0hhc2hTZXQ8U3RyaW5nPiYgYWRkaXRpb25hbFN1cHBvcnRlZEltYWdlVHlwZXMoKQoreworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0PFN0cmluZz4+IGFkZGl0aW9uYWxTdXBwb3J0
ZWRJbWFnZVR5cGVzOworICAgIHJldHVybiBhZGRpdGlvbmFsU3VwcG9ydGVkSW1hZ2VUeXBlczsK
K30KKwordm9pZCBzZXRBZGRpdGlvbmFsU3VwcG9ydGVkSW1hZ2VUeXBlcyhjb25zdCBWZWN0b3I8
U3RyaW5nPiYgaW1hZ2VUeXBlcykKK3sKKyAgICBNSU1FVHlwZVJlZ2lzdHJ5OjphZGRpdGlvbmFs
U3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXMoKS5jbGVhcigpOworICAgIGZvciAoY29uc3QgYXV0byYg
aW1hZ2VUeXBlIDogaW1hZ2VUeXBlcykgeworICAgICAgICBhZGRpdGlvbmFsU3VwcG9ydGVkSW1h
Z2VUeXBlcygpLmFkZChpbWFnZVR5cGUpOworICAgICAgICBhdXRvIG1pbWVUeXBlID0gTUlNRVR5
cGVGb3JJbWFnZVR5cGUoaW1hZ2VUeXBlKTsKKyAgICAgICAgaWYgKCFtaW1lVHlwZS5pc0VtcHR5
KCkpCisgICAgICAgICAgICBNSU1FVHlwZVJlZ2lzdHJ5OjphZGRpdGlvbmFsU3VwcG9ydGVkSW1h
Z2VNSU1FVHlwZXMoKS5hZGQobWltZVR5cGUpOworICAgIH0KIH0KIAotYm9vbCBpc1N1cHBvcnRJ
bWFnZVNvdXJjZVR5cGUoY29uc3QgU3RyaW5nJiBpbWFnZVNvdXJjZVR5cGUpCitib29sIGlzU3Vw
cG9ydGVkSW1hZ2VUeXBlKGNvbnN0IFN0cmluZyYgaW1hZ2VUeXBlKQogewotICAgIHJldHVybiAh
aW1hZ2VTb3VyY2VUeXBlLmlzRW1wdHkoKSAmJiBzdXBwb3J0ZWREZWZhdWx0SW1hZ2VTb3VyY2VU
eXBlcygpLmNvbnRhaW5zKGltYWdlU291cmNlVHlwZSk7CisgICAgaWYgKGltYWdlVHlwZS5pc0Vt
cHR5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gZGVmYXVsdFN1cHBvcnRl
ZEltYWdlVHlwZXMoKS5jb250YWlucyhpbWFnZVR5cGUpIHx8IGFkZGl0aW9uYWxTdXBwb3J0ZWRJ
bWFnZVR5cGVzKCkuY29udGFpbnMoaW1hZ2VUeXBlKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvVVRJUmVnaXN0cnkuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1VUSVJlZ2lzdHJ5LmgKaW5kZXggNTZmM2Y0Nzlm
YWU4YWI3MTcwYTUwMmZhMGM3MzA4ZWEzYTNlODAyNS4uM2M4NGRlMzAzZWRiMDM3YjY0YjQ0MTNh
MDgxMGI0YWQxNGY1NzUzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvVVRJUmVnaXN0cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9VVElSZWdpc3RyeS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTctMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTMwLDcgKzMwLDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1jb25zdCBIYXNoU2V0PFN0cmluZz4mIHN1cHBvcnRlZERlZmF1bHRJbWFnZVNvdXJjZVR5
cGVzKCk7Ci1ib29sIGlzU3VwcG9ydEltYWdlU291cmNlVHlwZShjb25zdCBTdHJpbmcmKTsKK2Nv
bnN0IEhhc2hTZXQ8U3RyaW5nPiYgZGVmYXVsdFN1cHBvcnRlZEltYWdlVHlwZXMoKTsKK0hhc2hT
ZXQ8U3RyaW5nPiYgYWRkaXRpb25hbFN1cHBvcnRlZEltYWdlVHlwZXMoKTsKK1dFQkNPUkVfRVhQ
T1JUIHZvaWQgc2V0QWRkaXRpb25hbFN1cHBvcnRlZEltYWdlVHlwZXMoY29uc3QgVmVjdG9yPFN0
cmluZz4mKTsKK2Jvb2wgaXNTdXBwb3J0ZWRJbWFnZVR5cGUoY29uc3QgU3RyaW5nJik7CiAKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vbWFjL1N0cmluZ1V0aWxpdGllcy5o
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9tYWMvU3RyaW5nVXRpbGl0aWVzLmgKaW5kZXggMjlh
NzZjZDc1MzhjNWRmYzhlMWE4ZDI4OWVjYzllOGI2YzgwNWRmMC4uNDI1N2M4Y2ZhOWU0YWJhMTQy
YWFkZTgxOTFlOWY5OWZiMjlkODIzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9tYWMvU3RyaW5nVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9tYWMv
U3RyaW5nVXRpbGl0aWVzLmgKQEAgLTM3LDYgKzM3LDggQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBO
U1N0cmluZyAqbnNTdHJpbmdGcm9tV2ViQ29yZVN0cmluZyhjb25zdCBTdHJpbmcmKTsKIE5TU3Ry
aW5nICpmb3JtYXR0ZWRQaG9uZU51bWJlclN0cmluZyhOU1N0cmluZyAqb3JpZ2luYWxQaG9uZU51
bWJlcik7CiAKK1ZlY3RvcjxTdHJpbmc+IHdlYkNvcmVTdHJpbmdWZWN0b3JGcm9tTlNTdHJpbmdB
cnJheShOU0FycmF5PE5TU3RyaW5nICo+ICopOworCiAjZW5kaWYgLy8gZGVmaW5lZChfX09CSkNf
XykKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9tYWMvU3RyaW5nVXRp
bGl0aWVzLm1tIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9tYWMvU3RyaW5nVXRpbGl0aWVzLm1t
CmluZGV4IDVjOTY3OTM3Y2U0ZjliMTgwZDgwMWQ5ZTIyOGI2NmM5MDc3YTZiZWMuLjZiOGZlNzQz
ZTM3YjlmNzc1OGU3NmQ5OTA0OWRkOWZlMWM5YTE2M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vbWFjL1N0cmluZ1V0aWxpdGllcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL21hYy9TdHJpbmdVdGlsaXRpZXMubW0KQEAgLTgyLDQgKzgyLDE1IEBAIE5TU3RyaW5n
ICpmb3JtYXR0ZWRQaG9uZU51bWJlclN0cmluZyhOU1N0cmluZyAqKQogCiAjZW5kaWYgLy8gRU5B
QkxFKFRFTEVQSE9ORV9OVU1CRVJfREVURUNUSU9OKSAmJiBQTEFURk9STShNQUMpCiAKK1ZlY3Rv
cjxTdHJpbmc+IHdlYkNvcmVTdHJpbmdWZWN0b3JGcm9tTlNTdHJpbmdBcnJheShOU0FycmF5PE5T
U3RyaW5nICo+ICpuc1N0cmluZ0FycmF5KQoreworICAgIFZlY3RvcjxTdHJpbmc+IHN0cmluZ1Zl
Y3RvcjsKKyAgICBzdHJpbmdWZWN0b3IucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShbbnNTdHJpbmdB
cnJheSBjb3VudF0pOworCisgICAgZm9yIChOU1N0cmluZyAqbnNTdHJpbmcgaW4gbnNTdHJpbmdB
cnJheSkKKyAgICAgICAgc3RyaW5nVmVjdG9yLnVuY2hlY2tlZEFwcGVuZChuc1N0cmluZyk7CisK
KyAgICByZXR1cm4gc3RyaW5nVmVjdG9yOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCmluZGV4IGNmOWExYjA2NzE0Y2Yx
ZGIzNzJmZTBkODFmZjY3Njk4Njc5ZTJmNjkuLmE3Nzc0MzlmOGU5ZDQ3NmQ4YjE0YzMwN2QxMjRj
MDdiY2E0YWY2MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVh
dGlvblBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVh
dGlvblBhcmFtZXRlcnMuY3BwCkBAIC05Nyw2ICs5Nyw3IEBAIHZvaWQgV2ViUGFnZUNyZWF0aW9u
UGFyYW1ldGVyczo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICNlbmRpZgog
I2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGVuY29kZXIgPDwgc21hcnRJbnNlcnREZWxldGVFbmFi
bGVkOworICAgIGVuY29kZXIgPDwgYWRkaXRpb25hbFN1cHBvcnRlZEltYWdlVHlwZXM7CiAjZW5k
aWYKICAgICBlbmNvZGVyIDw8IGFwcGxlTWFpbFBhZ2luYXRpb25RdWlya0VuYWJsZWQ7CiAgICAg
ZW5jb2RlciA8PCBhcHBsZU1haWxMaW5lc0NsYW1wRW5hYmxlZDsKQEAgLTI3Miw2ICsyNzMsOCBA
QCBzdGQ6Om9wdGlvbmFsPFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM+IFdlYlBhZ2VDcmVhdGlv
blBhcmFtZXRlcnM6OmRlY29kZShJUEM6OgogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5zbWFydEluc2VydERlbGV0ZUVuYWJsZWQpKQogICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1l
dGVycy5hZGRpdGlvbmFsU3VwcG9ydGVkSW1hZ2VUeXBlcykpCisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAjZW5kaWYKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5h
cHBsZU1haWxQYWdpbmF0aW9uUXVpcmtFbmFibGVkKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaAppbmRleCBmZmFmNzc4NmEzMWZjMmNmODE5
ZjM2NjJiYzU4MGNhZDAzYTQ5NWI3Li4yMDViMTlhYjI0MjdjMmVjOGQ2NTJiOGQwYjk5ZDAyMTVj
ZjQ3ZmQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25Q
YXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFy
YW1ldGVycy5oCkBAIC0xNTQsNiArMTU0LDcgQEAgc3RydWN0IFdlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnMgewogI2VuZGlmCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgYm9vbCBzbWFydEluc2Vy
dERlbGV0ZUVuYWJsZWQ7CisgICAgVmVjdG9yPFN0cmluZz4gYWRkaXRpb25hbFN1cHBvcnRlZElt
YWdlVHlwZXM7CiAjZW5kaWYKICAgICBib29sIGFwcGxlTWFpbFBhZ2luYXRpb25RdWlya0VuYWJs
ZWQ7CiAgICAgYm9vbCBhcHBsZU1haWxMaW5lc0NsYW1wRW5hYmxlZDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmgKaW5kZXggNDk4MWI5
NTdmNGJhYzcwYjkzNGM3NDE3NzliOWViMDY5YzZlNWZkMC4uNjdhYzVjNjZkODk1MTY4YzMxMGRl
MDUzYjNhMDljMDFlZjA2N2E3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmgKQEAgLTExMCw2ICsxMTAsMTEgQEAgcHVibGljOgog
ICAgIGNvbnN0IFdURjo6U3RyaW5nJiBvdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeSgpIGNv
bnN0IHsgcmV0dXJuIG1fb3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3k7IH0KICAgICB2b2lk
IHNldE92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5KGNvbnN0IFdURjo6U3RyaW5nJiBvdmVy
cmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeSkgeyBtX292ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9s
aWN5ID0gb3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3k7IH0KIAorI2lmIFBMQVRGT1JNKENP
Q09BKQorICAgIGNvbnN0IFdURjo6VmVjdG9yPFdURjo6U3RyaW5nPiYgYWRkaXRpb25hbFN1cHBv
cnRlZEltYWdlVHlwZXMoKSBjb25zdCB7IHJldHVybiBtX2FkZGl0aW9uYWxTdXBwb3J0ZWRJbWFn
ZVR5cGVzOyB9CisgICAgdm9pZCBzZXRBZGRpdGlvbmFsU3VwcG9ydGVkSW1hZ2VUeXBlcyhXVEY6
OlZlY3RvcjxXVEY6OlN0cmluZz4mJiBhZGRpdGlvbmFsU3VwcG9ydGVkSW1hZ2VUeXBlcykgeyBt
X2FkZGl0aW9uYWxTdXBwb3J0ZWRJbWFnZVR5cGVzID0gV1RGTW92ZShhZGRpdGlvbmFsU3VwcG9y
dGVkSW1hZ2VUeXBlcyk7IH0KKyNlbmRpZgorCiAjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklG
RVNUKQogICAgIEFwcGxpY2F0aW9uTWFuaWZlc3QqIGFwcGxpY2F0aW9uTWFuaWZlc3QoKSBjb25z
dDsKICAgICB2b2lkIHNldEFwcGxpY2F0aW9uTWFuaWZlc3QoQXBwbGljYXRpb25NYW5pZmVzdCop
OwpAQCAtMTQ2LDYgKzE1MSwxMCBAQCBwcml2YXRlOgogCiAgICAgV1RGOjpTdHJpbmcgbV9vdmVy
cmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeTsKIAorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIFdU
Rjo6VmVjdG9yPFdURjo6U3RyaW5nPiBtX2FkZGl0aW9uYWxTdXBwb3J0ZWRJbWFnZVR5cGVzOwor
I2VuZGlmCisKICNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCiAgICAgUmVmUHRyPEFw
cGxpY2F0aW9uTWFuaWZlc3Q+IG1fYXBwbGljYXRpb25NYW5pZmVzdDsKICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggOWVjNjU5
OGQ3ZjU2YWEzM2U4NzUxOTdlNDlhNzcyZmQ1MzNiNjA4Zi4uNDQ4ZjkzMjUzN2JiNmYzNWE5NzJh
NGFkNzcyZDg4ODA2Yzg0OWQ5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3Lm1tCkBAIC00Niw2ICs0Niw3IEBACiAjaW1wb3J0ICJSZW1vdGVMYXll
clRyZWVUcmFuc2FjdGlvbi5oIgogI2ltcG9ydCAiUmVtb3RlT2JqZWN0UmVnaXN0cnkuaCIKICNp
bXBvcnQgIlJlbW90ZU9iamVjdFJlZ2lzdHJ5TWVzc2FnZXMuaCIKKyNpbXBvcnQgIlN0cmluZ1V0
aWxpdGllcy5oIgogI2ltcG9ydCAiVUlEZWxlZ2F0ZS5oIgogI2ltcG9ydCAiVXNlck1lZGlhUHJv
Y2Vzc01hbmFnZXIuaCIKICNpbXBvcnQgIlZlcnNpb25DaGVja3MuaCIKQEAgLTU2OSw2ICs1NzAs
OCBAQCBzdGF0aWMgdm9pZCB2YWxpZGF0ZShXS1dlYlZpZXdDb25maWd1cmF0aW9uICpjb25maWd1
cmF0aW9uKQogICAgICAgICAgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFBhZ2VHcm91cChXZWJL
aXQ6OldlYlBhZ2VHcm91cDo6Y3JlYXRlKGNvbmZpZ3VyYXRpb24uX2dyb3VwSWRlbnRpZmllciku
cHRyKCkpOwogICAgIH0KIAorICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRBZGRpdGlvbmFsU3Vw
cG9ydGVkSW1hZ2VUeXBlcyhXZWJLaXQ6OndlYkNvcmVTdHJpbmdWZWN0b3JGcm9tTlNTdHJpbmdB
cnJheShbX2NvbmZpZ3VyYXRpb24gX2FkZGl0aW9uYWxTdXBwb3J0ZWRJbWFnZVR5cGVzXSkpOwor
CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VWYWx1ZXMoKS5zZXQoV2ViS2l0OjpX
ZWJQcmVmZXJlbmNlc0tleTo6c3VwcHJlc3Nlc0luY3JlbWVudGFsUmVuZGVyaW5nS2V5KCksIFdl
YktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWUoISFbX2NvbmZpZ3VyYXRpb24gc3VwcHJl
c3Nlc0luY3JlbWVudGFsUmVuZGVyaW5nXSkpOwogCiAgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnBy
ZWZlcmVuY2VWYWx1ZXMoKS5zZXQoV2ViS2l0OjpXZWJQcmVmZXJlbmNlc0tleTo6c2hvdWxkUmVz
cGVjdEltYWdlT3JpZW50YXRpb25LZXkoKSwgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlOjpW
YWx1ZSghIVtfY29uZmlndXJhdGlvbiBfcmVzcGVjdHNJbWFnZU9yaWVudGF0aW9uXSkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZp
Z3VyYXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
Q29uZmlndXJhdGlvbi5tbQppbmRleCA3ZmViMGI1YzM4NmYwMGY4NTA1NWIwM2YzYTAxNmJkZDkx
MTczNzU5Li44MmVhYmZkMjY5MDFlOGU2YjJjMzJmZjUxNTQzOTAwMTU3NDQ3ODQ3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJh
dGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
Q29uZmlndXJhdGlvbi5tbQpAQCAtMTYxLDYgKzE2MSw3IEBAIHN0YXRpYyBfV0tEcmFnTGlmdERl
bGF5IHRvRHJhZ0xpZnREZWxheShOU1VJbnRlZ2VyIHZhbHVlKQogICAgIEJPT0wgX2RyYXdzQmFj
a2dyb3VuZDsKIAogICAgIFJldGFpblB0cjxOU1N0cmluZz4gX21lZGlhQ29udGVudFR5cGVzUmVx
dWlyaW5nSGFyZHdhcmVTdXBwb3J0OworICAgIFJldGFpblB0cjxOU0FycmF5PE5TU3RyaW5nICo+
PiBfYWRkaXRpb25hbFN1cHBvcnRlZEltYWdlVHlwZXM7CiB9CiAKIC0gKGluc3RhbmNldHlwZSlp
bml0CkBAIC0zOTQsNiArMzk1LDcgQEAgc3RhdGljIF9XS0RyYWdMaWZ0RGVsYXkgdG9EcmFnTGlm
dERlbGF5KE5TVUludGVnZXIgdmFsdWUpCiAgICAgY29uZmlndXJhdGlvbi0+X25lZWRzU3RvcmFn
ZUFjY2Vzc0Zyb21GaWxlVVJMc1F1aXJrID0gc2VsZi0+X25lZWRzU3RvcmFnZUFjY2Vzc0Zyb21G
aWxlVVJMc1F1aXJrOwogCiAgICAgY29uZmlndXJhdGlvbi0+X21lZGlhQ29udGVudFR5cGVzUmVx
dWlyaW5nSGFyZHdhcmVTdXBwb3J0ID0gYWRvcHROUyhbc2VsZi5fbWVkaWFDb250ZW50VHlwZXNS
ZXF1aXJpbmdIYXJkd2FyZVN1cHBvcnQgY29weVdpdGhab25lOnpvbmVdKTsKKyAgICBjb25maWd1
cmF0aW9uLT5fYWRkaXRpb25hbFN1cHBvcnRlZEltYWdlVHlwZXMgPSBhZG9wdE5TKFtzZWxmLT5f
YWRkaXRpb25hbFN1cHBvcnRlZEltYWdlVHlwZXMgY29weVdpdGhab25lOnpvbmVdKTsKICAgICBj
b25maWd1cmF0aW9uLT5fbGVnYWN5RW5jcnlwdGVkTWVkaWFBUElFbmFibGVkID0gc2VsZi0+X2xl
Z2FjeUVuY3J5cHRlZE1lZGlhQVBJRW5hYmxlZDsKICAgICBjb25maWd1cmF0aW9uLT5fYWxsb3dN
ZWRpYUNvbnRlbnRUeXBlc1JlcXVpcmluZ0hhcmR3YXJlU3VwcG9ydEFzRmFsbGJhY2sgPSBzZWxm
LT5fYWxsb3dNZWRpYUNvbnRlbnRUeXBlc1JlcXVpcmluZ0hhcmR3YXJlU3VwcG9ydEFzRmFsbGJh
Y2s7CiAKQEAgLTk5MCw2ICs5OTIsMTYgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNf
RU5ECiAgICAgX21lZGlhQ29udGVudFR5cGVzUmVxdWlyaW5nSGFyZHdhcmVTdXBwb3J0ID0gYWRv
cHROUyhbbWVkaWFDb250ZW50VHlwZXNSZXF1aXJpbmdIYXJkd2FyZVN1cHBvcnQgY29weV0pOwog
fQogCistIChOU0FycmF5PE5TU3RyaW5nICo+ICopX2FkZGl0aW9uYWxTdXBwb3J0ZWRJbWFnZVR5
cGVzCit7CisgICAgcmV0dXJuIF9hZGRpdGlvbmFsU3VwcG9ydGVkSW1hZ2VUeXBlcy5nZXQoKTsK
K30KKworLSAodm9pZClfc2V0QWRkaXRpb25hbFN1cHBvcnRlZEltYWdlVHlwZXM6KE5TQXJyYXk8
TlNTdHJpbmcgKj4gKilhZGRpdGlvbmFsU3VwcG9ydGVkSW1hZ2VUeXBlcworeworICAgIF9hZGRp
dGlvbmFsU3VwcG9ydGVkSW1hZ2VUeXBlcyA9IGFkb3B0TlMoW2FkZGl0aW9uYWxTdXBwb3J0ZWRJ
bWFnZVR5cGVzIGNvcHldKTsKK30KKwogLSAodm9pZClfc2V0TGVnYWN5RW5jcnlwdGVkTWVkaWFB
UElFbmFibGVkOihCT09MKWVuYWJsZWQKIHsKICAgICBfbGVnYWN5RW5jcnlwdGVkTWVkaWFBUElF
bmFibGVkID0gZW5hYmxlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmgKaW5kZXgg
ZjEwNWExYWEyYzNjM2E5ZGExNzYxN2ZhZjcxZDhjNTYwM2Y3ZDg4MS4uOTA1ZTEzZDcyYzllODU0
NWNkNGUyMmI4NmU4ZjFjNWUwOWI2OWJkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2
YXRlLmgKQEAgLTEwMiw2ICsxMDIsOSBAQCB0eXBlZGVmIE5TX0VOVU0oTlNVSW50ZWdlciwgX1dL
RHJhZ0xpZnREZWxheSkgewogQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0TGVnYWN5
RW5jcnlwdGVkTWVkaWFBUElFbmFibGVkOikgQk9PTCBfbGVnYWN5RW5jcnlwdGVkTWVkaWFBUElF
bmFibGVkIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjEzKSwgaW9zKDExLjApKTsKIEBwcm9w
ZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldEFsbG93TWVkaWFDb250ZW50VHlwZXNSZXF1aXJp
bmdIYXJkd2FyZVN1cHBvcnRBc0ZhbGxiYWNrOikgQk9PTCBfYWxsb3dNZWRpYUNvbnRlbnRUeXBl
c1JlcXVpcmluZ0hhcmR3YXJlU3VwcG9ydEFzRmFsbGJhY2sgV0tfQVBJX0FWQUlMQUJMRShtYWNv
c3goMTAuMTMpLCBpb3MoMTEuMCkpOwogCisvLyBUaGUgaW5wdXQgb2YgdGhpcyBTUEkgaXMgYW4g
YXJyYXkgb2YgaW1hZ2UgVVRJIChVbmlmb3JtIFR5cGUgSWRlbnRpZmllcikuCitAcHJvcGVydHkg
KG5vbmF0b21pYywgY29weSwgc2V0dGVyPV9zZXRBZGRpdGlvbmFsU3VwcG9ydGVkSW1hZ2VUeXBl
czopIE5TQXJyYXk8TlNTdHJpbmcgKj4gKl9hZGRpdGlvbmFsU3VwcG9ydGVkSW1hZ2VUeXBlcyBX
S19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKwog
QGVuZAogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmlu
ZGV4IGM4Zjg2ZGU4NTNiYzIyMGMwNjgwMWUxNjQ4Mzg4MTM4M2UzZmNiODIuLjM1Y2VjZTU3YTIy
ZWJlYTY5YWJlOTQ5ZDM0NGI5ZGNjMWI4MWU5OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcApAQCAtNjQxNSw2ICs2NDE1LDcgQEAgV2ViUGFnZUNyZWF0aW9uUGFy
YW1ldGVycyBXZWJQYWdlUHJveHk6OmNyZWF0aW9uUGFyYW1ldGVycygpCiAKICNpZiBQTEFURk9S
TShDT0NPQSkKICAgICBwYXJhbWV0ZXJzLnNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCA9IG1faXNT
bWFydEluc2VydERlbGV0ZUVuYWJsZWQ7CisgICAgcGFyYW1ldGVycy5hZGRpdGlvbmFsU3VwcG9y
dGVkSW1hZ2VUeXBlcyA9IG1fY29uZmlndXJhdGlvbi0+YWRkaXRpb25hbFN1cHBvcnRlZEltYWdl
VHlwZXMoKTsKICNlbmRpZgogICAgIHBhcmFtZXRlcnMuc2hvdWxkU2NhbGVWaWV3VG9GaXREb2N1
bWVudCA9IG1fc2hvdWxkU2NhbGVWaWV3VG9GaXREb2N1bWVudDsKICAgICBwYXJhbWV0ZXJzLnVz
ZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24gPSBwYWdlQ2xpZW50KCkudXNlckludGVyZmFjZUxh
eW91dERpcmVjdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRl
eCA0NjgyZDc0YzEyZjA3NzAzOWRlOGIxNWYwNDU0ZWNkOThlNjVjZWNjLi4yOWJkZGNiNzUwODU3
ZDk1OGNiN2ViY2E2YTRlNmEyODIyYzA0ZGNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaApAQCAtMTM2MCwxMCArMTM2MCw2IEBAIHB1YmxpYzoKIAogICAgIFdlYkNvcmU6
OkludFJlY3Qgc3luY1Jvb3RWaWV3VG9TY3JlZW4oY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgdmll
d1JlY3QpOwogCi0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgVmVjdG9yPFN0cmluZz4gbWVkaWFN
SU1FVHlwZXMoKTsKLSNlbmRpZgotCiAjaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCiAgICAg
dm9pZCBkaWRTZWxlY3RPcHRpb24oY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBkaWRDbG9zZVN1
Z2dlc3Rpb25zKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwCmluZGV4IDgwYzUzODNhMmU1NDg1NGU3M2M4NzY1MzdmY2M2NGYyM2NkZjFiZjcuLjBjNWIw
ODIxY2E3MGQxZjY4YzdhNjFmM2EwMTQyNzY2NmU5ZmZlZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0yNDYsNiArMjQ2LDcgQEAKICNpbmNs
dWRlICJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLmgiCiAjaW5jbHVkZSAiV0tTdHJpbmdDRi5oIgog
I2luY2x1ZGUgPFdlYkNvcmUvTGVnYWN5V2ViQXJjaGl2ZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUv
VVRJUmVnaXN0cnkuaD4KICNpbmNsdWRlIDx3dGYvTWFjaFNlbmRSaWdodC5oPgogI2VuZGlmCiAK
QEAgLTU5NSw2ICs1OTYsNyBAQCBXZWJQYWdlOjpXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCwgV2Vi
UGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiAjaWYgUExBVEZPUk0oQ09DT0Ep
CiAgICAgbV9wYWdlLT5zZXR0aW5ncygpLnNldENvbnRlbnREaXNwb3NpdGlvbkF0dGFjaG1lbnRT
YW5kYm94RW5hYmxlZCh0cnVlKTsKICAgICBzZXRTbWFydEluc2VydERlbGV0ZUVuYWJsZWQocGFy
YW1ldGVycy5zbWFydEluc2VydERlbGV0ZUVuYWJsZWQpOworICAgIFdlYkNvcmU6OnNldEFkZGl0
aW9uYWxTdXBwb3J0ZWRJbWFnZVR5cGVzKHBhcmFtZXRlcnMuYWRkaXRpb25hbFN1cHBvcnRlZElt
YWdlVHlwZXMpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1n
aXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNmVjMWM0OGU2Zjcx
ZjA1ZGY5NjNiYzk2NzllMTc5YmFlMjZkZjI1OC4uMGM4OWFlZGU4MGM5NDA2ZTdkMjdiMjExYjBm
ZDVhNjYyYmRjNTBmMCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDE4LTExLTA4ICBTYWlkIEFib3UtSGFsbGF3YSAg
PHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKK29uYWwgc3VwcG9ydGVkIGltYWdlIGZvcm1hdHMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDQ1NAor
CisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KKworICAgICAgICBUZXN0IG9wZW5p
bmcgYSBUR0EgaW1hZ2UgaW4gV2ViVmlldyB3aGljaCBpcyBub3QgYWxsb3dlZCBieSBkZWZhdWx0
LiBUaGUKKyAgICAgICAgVEdBIGZvcm1hdCB3aWxsIGJlIGFsbG93ZWQgdGhyb3VnaCBXS1dlYlZp
ZXdDb25maWd1cmF0aW9uLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJ
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS8xMDB4MTAwLXJlZC50Z2E6IEFkZGVkLgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvNDAweDQwMC1ncmVlbi5wbmc6IEFkZGVkLgorICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQWRkaXRpb25hbFN1cHBvcnRlZElt
YWdlVHlwZXMubW06IEFkZGVkLgorICAgICAgICAocnVuVGVzdCk6CisgICAgICAgIChURVNUKToK
KwogMjAxOC0xMS0wOCAgSmlld2VuIFRhbiAgPGppZXdlbl90YW5AYXBwbGUuY29tPgogCiAgICAg
ICAgIFVucmV2aWV3ZWQsIGEgcXVpY2sgYnVpbGQgZml4IGZvciByMjM3OTgzCmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IDc5M2NlNGY1YTQ2ZmU5ZGZkNDA0YWU1YTBmZTU3MGNmN2ExMTZmNTQu
LjVkMDZjOWZiNWMwNGI2M2UyMGI2YTgzMWE1ZGI4NWE5N2JmZGU1YjAgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCkBAIC0yNDIsNiArMjQyLDkgQEAKIAkJNTNFQzI1NDExRTk2RkQ4NzAwMDgzMUI5
IC8qIFByaW9yaXR5UXVldWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTNFQzI1M0YxRTk2QkM4MDAwMDgzMUI5IC8qIFByaW9yaXR5UXVldWUuY3Bw
ICovOyB9OwogCQk1NTIyNkEyRjFFQkE0NEI5MDBDMzZBRDAgLyogbGFyZ2UtcmVkLXNxdWFyZS1p
bWFnZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDU1MjI2QTJFMUVCOTY5QjYwMEMzNkFEMCAvKiBsYXJnZS1yZWQtc3F1YXJlLWltYWdl
Lmh0bWwgKi87IH07CiAJCTU1OTdGODM2MUQ5NTk2QzgwMDY2QkMyMSAvKiBTeW5jaHJvbml6ZWRG
aXhlZFF1ZXVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDU1OTdGODM0MUQ5NTk2QzgwMDY2QkMyMSAvKiBTeW5jaHJvbml6ZWRGaXhlZFF1ZXVlLmNw
cCAqLzsgfTsKKwkJNTVBODE3RkMyMTgxMDBFMDAwMDRBMzlBIC8qIEFkZGl0aW9uYWxTdXBwb3J0
ZWRJbWFnZVR5cGVzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTVBODE3RkIyMTgxMDBFMDAwMDRBMzlBIC8qIEFkZGl0aW9uYWxTdXBwb3J0ZWRJbWFn
ZVR5cGVzLm1tICovOyB9OworCQk1NUE4MTdGRjIxODEwMjFBMDAwNEEzOUEgLyogMTAweDEwMC1y
ZWQudGdhIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDU1QTgxN0ZFMjE4MTAxREYwMDA0QTM5QSAvKiAxMDB4MTAwLXJlZC50Z2EgKi87IH07CisJ
CTU1QTgxODAwMjE4MTAyMjEwMDA0QTM5QSAvKiA0MDB4NDAwLWdyZWVuLnBuZyBpbiBDb3B5IFJl
c291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NUE4MTdGRDIxODEw
MURGMDAwNEEzOUEgLyogNDAweDQwMC1ncmVlbi5wbmcgKi87IH07CiAJCTU3MTRFQ0I5MUNBOEI1
QjAwMDA1MUFDOCAvKiBEb3dubG9hZFJlcXVlc3RPcmlnaW5hbFVSTC5odG1sIGluIENvcHkgUmVz
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3MTRFQ0I4MUNBOEI1
ODgwMDA1MUFDOCAvKiBEb3dubG9hZFJlcXVlc3RPcmlnaW5hbFVSTC5odG1sICovOyB9OwogCQk1
NzE0RUNCQjFDQThCRkU0MDAwNTFBQzggLyogRG93bmxvYWRSZXF1ZXN0T3JpZ2luYWxVUkxGcmFt
ZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDU3MTRFQ0JBMUNBOEJGRDEwMDA1MUFDOCAvKiBEb3dubG9hZFJlcXVlc3RPcmlnaW5hbFVS
TEZyYW1lLmh0bWwgKi87IH07CiAJCTU3MTRFQ0JEMUNBOEMyMkEwMDA1MUFDOCAvKiBEb3dubG9h
ZFJlcXVlc3RPcmlnaW5hbFVSTDIuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzE0RUNCQzFDQThDMjE4MDAwNTFBQzggLyogRG93bmxv
YWRSZXF1ZXN0T3JpZ2luYWxVUkwyLmh0bWwgKi87IH07CkBAIC05NTIsNyArOTU1LDkgQEAKIAkJ
CWRzdFBhdGggPSBUZXN0V2ViS2l0QVBJLnJlc291cmNlczsKIAkJCWRzdFN1YmZvbGRlclNwZWMg
PSA3OwogCQkJZmlsZXMgPSAoCisJCQkJNTVBODE3RkYyMTgxMDIxQTAwMDRBMzlBIC8qIDEwMHgx
MDAtcmVkLnRnYSBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQkxQTlFNTJDOTEzRTY1RUY0MDA2
OTE3RjUgLyogMTgtY2hhcmFjdGVycy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAorCQkJCTU1
QTgxODAwMjE4MTAyMjEwMDA0QTM5QSAvKiA0MDB4NDAwLWdyZWVuLnBuZyBpbiBDb3B5IFJlc291
cmNlcyAqLywKIAkJCQkzNzkwMjhCOTE0RkFDMjRDMDA3RTZCNDMgLyogYWNjZXB0c0ZpcnN0TW91
c2UuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQkxQzJCODE4NzFDODkyNUEwMDBBNTUy
OUYgLyogQWhlbS50dGYgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJMUE2MzQ3OUYxODNENzJB
NDAwNUIxNzA3IC8qIGFsbC1jb250ZW50LWluLW9uZS1pZnJhbWUuaHRtbCBpbiBDb3B5IFJlc291
cmNlcyAqLywKQEAgLTE1NTksNiArMTU2NCw5IEBACiAJCTUzRUMyNTNGMUU5NkJDODAwMDA4MzFC
OSAvKiBQcmlvcml0eVF1ZXVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFByaW9yaXR5UXVldWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NTIy
NkEyRTFFQjk2OUI2MDBDMzZBRDAgLyogbGFyZ2UtcmVkLXNxdWFyZS1pbWFnZS5odG1sICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dC5odG1sOyBwYXRoID0gImxhcmdlLXJlZC1zcXVhcmUtaW1hZ2UuaHRtbCI7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU1OTdGODM0MUQ5NTk2QzgwMDY2QkMyMSAvKiBT
eW5jaHJvbml6ZWRGaXhlZFF1ZXVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFN5bmNocm9uaXplZEZpeGVkUXVldWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk1NUE4MTdGQjIxODEwMEUwMDAwNEEzOUEgLyogQWRkaXRpb25hbFN1cHBvcnRlZElt
YWdlVHlwZXMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBZGRpdGlvbmFsU3VwcG9ydGVkSW1h
Z2VUeXBlcy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTVBODE3RkQyMTgxMDFE
RjAwMDRBMzlBIC8qIDQwMHg0MDAtZ3JlZW4ucG5nICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gaW1hZ2UucG5nOyBwYXRoID0gIjQwMHg0MDAtZ3JlZW4u
cG5nIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTVBODE3RkUyMTgxMDFERjAwMDRB
MzlBIC8qIDEwMHgxMDAtcmVkLnRnYSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IGZpbGU7IHBhdGggPSAiMTAweDEwMC1yZWQudGdhIjsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTcxNEVDQjgxQ0E4QjU4ODAwMDUxQUM4IC8qIERvd25sb2Fk
UmVxdWVzdE9yaWdpbmFsVVJMLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSBEb3du
bG9hZFJlcXVlc3RPcmlnaW5hbFVSTC5odG1sOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1NzE0RUNCQTFDQThCRkQxMDAwNTFBQzggLyogRG93bmxvYWRSZXF1ZXN0T3JpZ2luYWxVUkxG
cmFtZS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gRG93bmxvYWRSZXF1ZXN0T3Jp
Z2luYWxVUkxGcmFtZS5odG1sOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NzE0RUNC
QzFDQThDMjE4MDAwNTFBQzggLyogRG93bmxvYWRSZXF1ZXN0T3JpZ2luYWxVUkwyLmh0bWwgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSBEb3dubG9hZFJlcXVlc3RPcmlnaW5hbFVSTDIuaHRt
bDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIzMzUsNiArMjM0Myw3IEBACiAJCQkJ
MzdFN0RENjMxRUEwNkZGMjAwOUIzOTZEIC8qIEFkZGl0aW9uYWxSZWFkQWNjZXNzQWxsb3dlZFVS
THMubW0gKi8sCiAJCQkJMzdFN0RENjYxRUEwNzFGMzAwOUIzOTZEIC8qIEFkZGl0aW9uYWxSZWFk
QWNjZXNzQWxsb3dlZFVSTHNQbHVnaW4ubW0gKi8sCiAJCQkJMzdFN0RENjUxRUEwNzE1QjAwOUIz
OTZEIC8qIEFkZGl0aW9uYWxSZWFkQWNjZXNzQWxsb3dlZFVSTHNQcm90b2NvbC5oICovLAorCQkJ
CTU1QTgxN0ZCMjE4MTAwRTAwMDA0QTM5QSAvKiBBZGRpdGlvbmFsU3VwcG9ydGVkSW1hZ2VUeXBl
cy5tbSAqLywKIAkJCQlBMURGNzQzMDFDNDFCNjU4MDBBMkY0RDAgLyogQWx3YXlzUmV2YWxpZGF0
ZWRVUkxTY2hlbWVzLm1tICovLAogCQkJCTJERTcxQUZEMUQ0OUMwQkQwMDkwNDA5NCAvKiBBbmlt
YXRlZFJlc2l6ZS5tbSAqLywKIAkJCQk2M0Y2NjgyMDFGOTdDM0FBMDAzMkVFNTEgLyogQXBwbGlj
YXRpb25NYW5pZmVzdC5tbSAqLywKQEAgLTI2ODAsNiArMjY4OSw4IEBACiAJCUExNkY2NkI4MUM0
MEU5RTEwMEJENEQyNCAvKiBSZXNvdXJjZXMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJ
CWNoaWxkcmVuID0gKAorCQkJCTU1QTgxN0ZFMjE4MTAxREYwMDA0QTM5QSAvKiAxMDB4MTAwLXJl
ZC50Z2EgKi8sCisJCQkJNTVBODE3RkQyMTgxMDFERjAwMDRBMzlBIC8qIDQwMHg0MDAtZ3JlZW4u
cG5nICovLAogCQkJCUMyNUNDQTBDMUU1MTQwRTUwMDI2Q0I4QSAvKiBBbGxBaGVtLnN2ZyAqLywK
IAkJCQlGNEE5MjAyRTFGRUUzNEM4MDBGNTk1OTAgLyogYXBwbGUtZGF0YS11cmwuaHRtbCAqLywK
IAkJCQlGNDdEMzBFQjFFRDI4NjE5MDAwNDgyRTEgLyogYXBwbGUuZ2lmICovLApAQCAtMzYwOCw3
ICszNjE5LDcgQEAKIAkJCX07CiAJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gMURFQjkyNzgw
ODczM0RENDAwMTBFOUNEIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYUHJvamVj
dCAiVGVzdFdlYktpdEFQSSIgKi87CiAJCQljb21wYXRpYmlsaXR5VmVyc2lvbiA9ICJYY29kZSAz
LjIiOwotCQkJZGV2ZWxvcG1lbnRSZWdpb24gPSBFbmdsaXNoOworCQkJZGV2ZWxvcG1lbnRSZWdp
b24gPSBlbjsKIAkJCWhhc1NjYW5uZWRGb3JFbmNvZGluZ3MgPSAxOwogCQkJa25vd25SZWdpb25z
ID0gKAogCQkJCUVuZ2xpc2gsCkBAIC0zNzQ2LDYgKzM3NTcsNyBAQAogCQkJCTlCRDUxMTFDMUZF
OEUxMTYwMEQyQjYzMCAvKiBBY2Nlc3NpbmdQYXN0ZWRJbWFnZS5tbSBpbiBTb3VyY2VzICovLAog
CQkJCUY0NUI2M0ZFMUYxOUQ0MTAwMDlEMzhCOSAvKiBBY3Rpb25TaGVldFRlc3RzLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJMzdFN0RENjQxRUEwNkZGMjAwOUIzOTZEIC8qIEFkZGl0aW9uYWxSZWFk
QWNjZXNzQWxsb3dlZFVSTHMubW0gaW4gU291cmNlcyAqLywKKwkJCQk1NUE4MTdGQzIxODEwMEUw
MDAwNEEzOUEgLyogQWRkaXRpb25hbFN1cHBvcnRlZEltYWdlVHlwZXMubW0gaW4gU291cmNlcyAq
LywKIAkJCQk3QTkwOUE3RDFEODc3NDgwMDA3RTEwRjggLyogQWZmaW5lVHJhbnNmb3JtLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUExREY3NDMyMUM0MUI2NTgwMEEyRjREMCAvKiBBbHdheXNSZXZh
bGlkYXRlZFVSTFNjaGVtZXMubW0gaW4gU291cmNlcyAqLywKIAkJCQkyREU3MUFGRTFENDlDMEJE
MDA5MDQwOTQgLyogQW5pbWF0ZWRSZXNpemUubW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvMTAweDEwMC1yZWQudGdhIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS8xMDB4MTAwLXJlZC50Z2EKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMDY5NThiYTBjNDQxMDYwNTg4ODRhM2YyNGEyM2VlZDE4MjhiMTc0YgpHSVQgYmlu
YXJ5IHBhdGNoCmxpdGVyYWwgNTE4CmNjbVpRejs5YEoqNm93UUExJnpsSDRGQ1UrNStmPU0wQ3tt
QzRnZGZFCgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hLzQwMHg0MDAtZ3JlZW4ucG5nIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS80MDB4NDAwLWdyZWVuLnBuZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41
Mjg0OTgyNDM3MWI4NzE5OGY0N2VjZDAzZWZjZGQwMTI1NTdhZWVhCkdJVCBiaW5hcnkgcGF0Y2gK
bGl0ZXJhbCAxMTM0CnpjbWVBU0BOPyhvbEh5YHVWQnEhaWEweX55VjRNS0w5ODVxRns8e2xqMTFa
aHxrSH0mTTI1dzt4V0BNTihNKj05dwp6VWdHS04lS25nQFBndW4mWXh8cC1LcTEtOGtjYmxKe01f
OHN5Yj5VbmZ4KT5iSEwpWiRNV0g7aUJ0eWE3KD5FWVIKekZPezh2ZiUlRTJpKF5RfHQrIVZVY15N
Y3VTVD9kaF4+QWxwX1NBbVp3JVVnd0VgeVdkRnE0N0tmZWoyaSsmfWB2CnoxYD1SNDQ+eT1pajNt
KHRAbWV1ejNpaEJNTSZaS2ElPisocjZuY3ImXm9jIyQ0SHJgJFR3PERraWd8KDk/NzFJNwpPMSVh
b2xwVVhPQGdlQ3d6OTVKQikKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQWRkaXRpb25hbFN1cHBvcnRlZElt
YWdlVHlwZXMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0FkZGl0
aW9uYWxTdXBwb3J0ZWRJbWFnZVR5cGVzLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUxYWE4YjYwYjU5YzJjNGVl
MWU3Zjg5YmYxZTEzMzZkYTE0YTE1ZDEKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0FkZGl0aW9uYWxTdXBwb3J0ZWRJbWFnZVR5cGVzLm1t
CkBAIC0wLDAgKzEsODkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBv
cnQgPFdlYktpdC9XS0ZvdW5kYXRpb24uaD4KKworI2lmIFdLX0FQSV9FTkFCTEVEICYmIFBMQVRG
T1JNKENPQ09BKQorCisjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorI2ltcG9ydCAiVGVz
dE5hdmlnYXRpb25EZWxlZ2F0ZS5oIgorI2ltcG9ydCAiV0tXZWJWaWV3Q29uZmlndXJhdGlvbkV4
dHJhcy5oIgorI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmg+
CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisKK3N0YXRpYyB2b2lkIHJ1blRlc3QoTlNBcnJh
eTxOU1N0cmluZyAqPiAqYWRkaXRpb25hbFN1cHBvcnRlZEltYWdlVHlwZXMsIE5TU3RyaW5nICpp
bWFnZVVSTCwgTlNTdHJpbmcgKmltYWdlRXh0ZW5zaW9uLCBDR0Zsb2F0IGltYWdlV2lkdGgpCit7
CisgICAgUmV0YWluUHRyPFdLV2ViVmlld0NvbmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRpb24gPSBh
ZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIFtjb25m
aWd1cmF0aW9uIF9zZXRBZGRpdGlvbmFsU3VwcG9ydGVkSW1hZ2VUeXBlczphZGRpdGlvbmFsU3Vw
cG9ydGVkSW1hZ2VUeXBlc107CisKKyAgICBSZXRhaW5QdHI8V0tXZWJWaWV3PiB3ZWJWaWV3ID0g
YWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAs
IDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKworICAgIFJl
dGFpblB0cjxOU1VSTD4gdGVzdFVSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVz
b3VyY2U6aW1hZ2VVUkwgd2l0aEV4dGVuc2lvbjppbWFnZUV4dGVuc2lvbiBzdWJkaXJlY3Rvcnk6
QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltO
U1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6dGVzdFVSTC5nZXQoKV1dOworICAgIFt3ZWJWaWV3
IF90ZXN0X3dhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsKKworICAgIF9fYmxvY2sgYm9vbCBp
c0RvbmUgPSBmYWxzZTsKKyAgICBbd2ViVmlldyBfZG9BZnRlck5leHRQcmVzZW50YXRpb25VcGRh
dGU6XnsKKyAgICAgICAgW3dlYlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0OkAiW2RvY3VtZW50LnF1
ZXJ5U2VsZWN0b3IoJ2ltZycpLndpZHRoXSIgY29tcGxldGlvbkhhbmRsZXI6XihpZCB2YWx1ZSwg
TlNFcnJvciAqZXJyb3IpIHsKKyAgICAgICAgICAgIENHRmxvYXQgd2lkdGggPSBbW3ZhbHVlIG9i
amVjdEF0SW5kZXg6MF0gZmxvYXRWYWx1ZV07CisgICAgICAgICAgICBFWFBFQ1RfRVEod2lkdGgs
IGltYWdlV2lkdGgpOworICAgICAgICAgICAgaXNEb25lID0gdHJ1ZTsKKyAgICAgICAgfV07Cisg
ICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOworfQorCitURVNU
KFdlYktpdCwgQWRkU3VwcG9ydGVkSW1hZ2VUeXBlKQoreworICAgIHJ1blRlc3QoQFtAInB1Ymxp
Yy5wbmciXSwgQCI0MDB4NDAwLWdyZWVuIiwgQCJwbmciLCA0MDApOworfQorCitURVNUKFdlYktp
dCwgQWRkU3VwcG9ydGVkQW5kQm9ndXNJbWFnZVR5cGVzKQoreworICAgIHJ1blRlc3QoQFtAInB1
YmxpYy5wbmciLCBAInB1YmxpYy5ib2d1cyJdLCBAIjQwMHg0MDAtZ3JlZW4iLCBAInBuZyIsIDQw
MCk7Cit9CisKK1RFU1QoV2ViS2l0LCBBZGRTdXBwb3J0ZWRBbmRCb2d1c0ltYWdlVHlwZXNUd2lj
ZSkKK3sKKyAgICBydW5UZXN0KEBbQCJwdWJsaWMucG5nIiwgQCJwdWJsaWMuYm9ndXMiLCBAInB1
YmxpYy5wbmciLCBAInB1YmxpYy5ib2d1cyJdLCBAIjQwMHg0MDAtZ3JlZW4iLCBAInBuZyIsIDQw
MCk7Cit9CisKK1RFU1QoV2ViS2l0LCBBZGRVbnN1cHBvcnRlZEltYWdlVHlwZSkKK3sKKyAgICBy
dW5UZXN0KEBbQCJjb20udHJ1ZXZpc2lvbi50Z2EtaW1hZ2UiXSwgQCIxMDB4MTAwLXJlZCIsIEAi
dGdhIiwgMTAwKTsKK30KKworVEVTVChXZWJLaXQsIEFkZFVuc3VwcG9ydGVkQW5kQm9ndXNJbWFn
ZVR5cGVzKQoreworICAgIHJ1blRlc3QoQFtAImNvbS50cnVldmlzaW9uLnRnYS1pbWFnZSIsIEAi
cHVibGljLmJvZ3VzIl0sIEAiMTAweDEwMC1yZWQiLCBAInRnYSIsIDEwMCk7Cit9CisKK1RFU1Qo
V2ViS2l0LCBBZGRVbnN1cHBvcnRlZEFuZEJvZ3VzSW1hZ2VUeXBlc1R3aWNlKQoreworICAgIHJ1
blRlc3QoQFtAImNvbS50cnVldmlzaW9uLnRnYS1pbWFnZSIsIEAicHVibGljLmJvZ3VzIiwgQCJj
b20udHJ1ZXZpc2lvbi50Z2EtaW1hZ2UiLCBAInB1YmxpYy5ib2d1cyJdLCBAIjEwMHgxMDAtcmVk
IiwgQCJ0Z2EiLCAxMDApOworfQorCisjZW5kaWYK
</data>

          </attachment>
      

    </bug>

</bugzilla>