<?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>59143</bug_id>
          
          <creation_ts>2011-04-21 15:02:00 -0700</creation_ts>
          <short_desc>Need populate touch-icon url to FrameLoaderClient</short_desc>
          <delta_ts>2011-05-04 15:07:51 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter>michaelbai</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>beidson</cc>
    
    <cc>buildbot</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>gustavo.noronha</cc>
    
    <cc>gustavo</cc>
    
    <cc>steveblock</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>390370</commentid>
    <comment_count>0</comment_count>
    <who name="">michaelbai</who>
    <bug_when>2011-04-21 15:02:00 -0700</bug_when>
    <thetext>This is a feature request

More and more websites were using below tag to provide different icon.

 &lt;link rel=&quot;apple-touch-icon&quot; href=&quot;somepath/image.png&quot; /&gt;
 &lt;link rel=&quot;apple-touch-icon-precomposed&quot; href=&quot;somepath/image.png&quot; /&gt;

To get touch icon url in FrameLoaderClient, we need handle above tags and populate the urls to the FrameLoaderClient, so client could handle them as needed.

I had a patch for this feature.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>392495</commentid>
    <comment_count>1</comment_count>
      <attachid>91114</attachid>
    <who name="">michaelbai</who>
    <bug_when>2011-04-26 08:55:07 -0700</bug_when>
    <thetext>Created attachment 91114
Initial implementation</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>392530</commentid>
    <comment_count>2</comment_count>
      <attachid>91114</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2011-04-26 09:51:31 -0700</bug_when>
    <thetext>Comment on attachment 91114
Initial implementation

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

r- to correct issues noted above.

Also, this change seems like it will load all icons on all page loads in all browsers.  This isn&apos;t correct since Desktop browsers (at least Safari) is not going to want to try to load the &quot;touch&quot; icon variants on every page load.  MobileSafari on iOS currently only loads the &quot;touch&quot; icons when the user saves the URL (or web app) to the Home screen, not on every page load.  You need a way to enable/disable certain icons loading (and have &quot;touch&quot; icons off by default) before you land this.

Also, please make sure WebKit still compiles with ENABLE(ICON_DATABASE) disabled.  Thanks!

&gt; Source/WebCore/dom/Document.cpp:355
&gt; +        default:
&gt; +            return -1;

There should not be a default case here.  Having one defeats the compiler from warning you when you don&apos;t have a case defined.  This return statement should be moved outside of the switch statement.

This should also be an (inline) method in IconURL.{h|cpp} so that you can share code between Document.cpp and DocumentLoader.cpp.

This method should really return size_t (which is used for array indexes), and then default to Favicon if &apos;type&apos; is unknown and ASSERT_NOT_REACHED() before returning a default value.

&gt; Source/WebCore/dom/Document.cpp:4384
&gt; +    if (index != -1)
&gt; +        return m_iconURLs[index];
&gt; +    else
&gt; +        return IconURL();

Should use early return here:

    if (index == -1)
        return IconURL();
    return m_iconURLs[index];

&gt; Source/WebCore/dom/Document.h:1338
&gt; +    IconURL m_iconURLs[3];

&quot;3&quot; should not be hard-coded here.  You should use the IconType enum to define this, or add some kind of compiler assertion, or define a const value in IconURL.h that is next to the IconType enum.

&gt; Source/WebCore/loader/DocumentLoader.cpp:92
&gt; +static int convertIconTypeToIndex(IconType type) {
&gt; +    switch(type) {
&gt; +        case Favicon:
&gt; +            return 0;
&gt; +        case TouchPrecomposedIcon:
&gt; +            return 1;
&gt; +        case TouchIcon:
&gt; +            return 2;
&gt; +        default:
&gt; +            return -1;
&gt; +    }
&gt; +}

Duplicate code.  Please use the method added to IconURL.h.

&gt; Source/WebCore/loader/DocumentLoader.cpp:684
&gt; +    if (index != -1) {
&gt; +        return m_iconURLs[index];
&gt; +    } else {
&gt; +        return IconURL();
&gt; +    }

Please use early return.  Unnecessary curly braces.  (Please run check-webkit-style on your changed files.)

&gt; Source/WebCore/loader/DocumentLoader.h:304
&gt; +        IconURL m_iconURLs[3];

&quot;3&quot; should be a constant defined in IconURL.h (as noted for Document.cpp).

&gt; Source/WebCore/loader/FrameLoader.cpp:525
&gt; -    url.setPath(&quot;/favicon.ico&quot;);
&gt; -    return url;
&gt; +    if (iconType == Favicon) {
&gt; +        url.setPath(&quot;/TouchPrecomposedIcon.ico&quot;);

Why did this change from &quot;/favicon.ico&quot; to &quot;/TouchPrecomposedIcon.ico&quot;?  I don&apos;t think this is correct.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>392551</commentid>
    <comment_count>3</comment_count>
    <who name="">michaelbai</who>
    <bug_when>2011-04-26 10:25:17 -0700</bug_when>
    <thetext>Hi David,

Thanks very much for the quick response.

I have some issues want to be discussed before I make another patch.

a. Is it OK that using &apos;SUPPORT_TOUCH_ICON&apos; to disable the touch icon loading?

b. Please refer to my inline reply for convertIconTypeToIndex.


Tao

(In reply to comment #2)
&gt; (From update of attachment 91114 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=91114&amp;action=review
&gt; 
&gt; r- to correct issues noted above.
&gt; 
&gt; Also, this change seems like it will load all icons on all page loads in all browsers.  This isn&apos;t correct since Desktop browsers (at least Safari) is not going to want to try to load the &quot;touch&quot; icon variants on every page load.  MobileSafari on iOS currently only loads the &quot;touch&quot; icons when the user saves the URL (or web app) to the Home screen, not on every page load.  You need a way to enable/disable certain icons loading (and have &quot;touch&quot; icons off by default) before you land this.
&gt; 
&gt; Also, please make sure WebKit still compiles with ENABLE(ICON_DATABASE) disabled.  Thanks!
&gt; 
&gt; &gt; Source/WebCore/dom/Document.cpp:355
&gt; &gt; +        default:
&gt; &gt; +            return -1;
&gt; 
&gt; There should not be a default case here.  Having one defeats the compiler from warning you when you don&apos;t have a case defined.  This return statement should be moved outside of the switch statement.
&gt; 
&gt; This should also be an (inline) method in IconURL.{h|cpp} so that you can share code between Document.cpp and DocumentLoader.cpp.
&gt; 
&gt; This method should really return size_t (which is used for array indexes), and then default to Favicon if &apos;type&apos; is unknown and ASSERT_NOT_REACHED() before returning a default value.
&gt; 
&gt; &gt; Source/WebCore/dom/Document.cpp:4384
&gt; &gt; +    if (index != -1)
&gt; &gt; +        return m_iconURLs[index];
&gt; &gt; +    else
&gt; &gt; +        return IconURL();
&gt; 
&gt; Should use early return here:
&gt; 
&gt;     if (index == -1)
&gt;         return IconURL();
&gt;     return m_iconURLs[index];
&gt; 
&gt; &gt; Source/WebCore/dom/Document.h:1338
&gt; &gt; +    IconURL m_iconURLs[3];
&gt; 
&gt; &quot;3&quot; should not be hard-coded here.  You should use the IconType enum to define this, or add some kind of compiler assertion, or define a const value in IconURL.h that is next to the IconType enum.
&gt; 
&gt; &gt; Source/WebCore/loader/DocumentLoader.cpp:92
&gt; &gt; +static int convertIconTypeToIndex(IconType type) {
&gt; &gt; +    switch(type) {
&gt; &gt; +        case Favicon:
&gt; &gt; +            return 0;
&gt; &gt; +        case TouchPrecomposedIcon:
&gt; &gt; +            return 1;
&gt; &gt; +        case TouchIcon:
&gt; &gt; +            return 2;
&gt; &gt; +        default:
&gt; &gt; +            return -1;
&gt; &gt; +    }
&gt; &gt; +}
&gt; 
&gt; Duplicate code.  Please use the method added to IconURL.h.
&gt; 
&gt; &gt; Source/WebCore/loader/DocumentLoader.cpp:684
&gt; &gt; +    if (index != -1) {
&gt; &gt; +        return m_iconURLs[index];
&gt; &gt; +    } else {
&gt; &gt; +        return IconURL();
&gt; &gt; +    }
&gt; 
&gt; Please use early return.  Unnecessary curly braces.  (Please run check-webkit-style on your changed files.)
&gt; 
&gt; &gt; Source/WebCore/loader/DocumentLoader.h:304
&gt; &gt; +        IconURL m_iconURLs[3];
&gt; 
&gt; &quot;3&quot; should be a constant defined in IconURL.h (as noted for Document.cpp).
&gt; 
&gt; &gt; Source/WebCore/loader/FrameLoader.cpp:525
&gt; &gt; -    url.setPath(&quot;/favicon.ico&quot;);
&gt; &gt; -    return url;
&gt; &gt; +    if (iconType == Favicon) {
&gt; &gt; +        url.setPath(&quot;/TouchPrecomposedIcon.ico&quot;);
&gt; 
&gt; Why did this change from &quot;/favicon.ico&quot; to &quot;/TouchPrecomposedIcon.ico&quot;?  I don&apos;t think this is correct.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>392553</commentid>
    <comment_count>4</comment_count>
    <who name="">michaelbai</who>
    <bug_when>2011-04-26 10:28:31 -0700</bug_when>
    <thetext>The inline comment didn&apos;t show up, copied it here.

Hi David,

Thanks very much for the quick response.

I have some issues want to be discussed before I make another patch.

a. Is it OK that using &apos;SUPPORT_TOUCH_ICON&apos; to disable the touch icon loading?

b. Please refer to my inline reply for convertIconTypeToIndex.


Tao

&gt; 
&gt; &gt; Source/WebCore/dom/Document.cpp:355
&gt; &gt; +        default:
&gt; &gt; +            return -1;
&gt; 
&gt; There should not be a default case here.  Having one defeats the compiler from warning you when you don&apos;t have a case defined.  This return statement should be moved outside of the switch statement.
&gt; 
&gt; This should also be an (inline) method in IconURL.{h|cpp} so that you can share code between Document.cpp and DocumentLoader.cpp.
&gt; 
&gt; This method should really return size_t (which is used for array indexes), and then default to Favicon if &apos;type&apos; is unknown and ASSERT_NOT_REACHED() before returning a default value.
&gt; 

The index of a array is the implementation specific thing, and this code might not need to be shared. To put this method in IconURL looks a little weird, isn&apos;t it? Anyway, I am not familiar with Webkit convention, If you think it is fine, I am also OK with it. Please let me know.

Does ASSERT_NOT_REACHED work in debug build? Shall we return 0 (Favicon) in release build if &apos;type&apos; is invalid?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>392587</commentid>
    <comment_count>5</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2011-04-26 11:27:28 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; The inline comment didn&apos;t show up, copied it here.
&gt; 
&gt; Hi David,
&gt; 
&gt; Thanks very much for the quick response.
&gt; 
&gt; I have some issues want to be discussed before I make another patch.
&gt; 
&gt; a. Is it OK that using &apos;SUPPORT_TOUCH_ICON&apos; to disable the touch icon loading?

It&apos;s not so much about support as it is whether you want to load the touch icons during a page load.  Maybe ENABLE(TOUCH_ICON_LOADING)?

&gt; b. Please refer to my inline reply for convertIconTypeToIndex.
&gt; 
&gt; 
&gt; Tao
&gt; 
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/dom/Document.cpp:355
&gt; &gt; &gt; +        default:
&gt; &gt; &gt; +            return -1;
&gt; &gt; 
&gt; &gt; There should not be a default case here.  Having one defeats the compiler from warning you when you don&apos;t have a case defined.  This return statement should be moved outside of the switch statement.
&gt; &gt; 
&gt; &gt; This should also be an (inline) method in IconURL.{h|cpp} so that you can share code between Document.cpp and DocumentLoader.cpp.
&gt; &gt; 
&gt; &gt; This method should really return size_t (which is used for array indexes), and then default to Favicon if &apos;type&apos; is unknown and ASSERT_NOT_REACHED() before returning a default value.
&gt; &gt; 
&gt; 
&gt; The index of a array is the implementation specific thing, and this code might not need to be shared. To put this method in IconURL looks a little weird, isn&apos;t it? Anyway, I am not familiar with Webkit convention, If you think it is fine, I am also OK with it. Please let me know.
&gt; 
&gt; Does ASSERT_NOT_REACHED work in debug build? Shall we return 0 (Favicon) in release build if &apos;type&apos; is invalid?

ASSERT_NOT_REACHED() will crash a Debug build, but do nothing on Release builds.  Returning Favicon sounds good (since that was the behavior before adding the touch icon support).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>393177</commentid>
    <comment_count>6</comment_count>
      <attachid>91193</attachid>
    <who name="">michaelbai</who>
    <bug_when>2011-04-26 17:27:44 -0700</bug_when>
    <thetext>Created attachment 91193
Using TOUCH_ICON_LOADING to enable feature, Disabled by default.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>393571</commentid>
    <comment_count>7</comment_count>
      <attachid>91193</attachid>
    <who name="">michaelbai</who>
    <bug_when>2011-04-27 08:41:23 -0700</bug_when>
    <thetext>Comment on attachment 91193
Using TOUCH_ICON_LOADING to enable feature, Disabled by default.

Compilation passed with ICONDATABASE disabled.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>393745</commentid>
    <comment_count>8</comment_count>
    <who name="">michaelbai</who>
    <bug_when>2011-04-27 13:28:22 -0700</bug_when>
    <thetext>Hi David,

Please help to review it again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>394479</commentid>
    <comment_count>9</comment_count>
      <attachid>91503</attachid>
    <who name="">michaelbai</who>
    <bug_when>2011-04-28 09:31:20 -0700</bug_when>
    <thetext>Created attachment 91503
Sync</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>394484</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-04-28 09:35:08 -0700</bug_when>
    <thetext>Attachment 91503 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1

Last 3072 characters of output:
(  [whitespace/parens] [5]
Source/WebKit/chromium/src/WebIconTypeUtilities.cpp:59:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
Source/WebKit/chromium/src/WebIconTypeUtilities.cpp:58:  Missing space before ( in switch(  [whitespace/parens] [5]
Source/WebKit/chromium/src/WebIconTypeUtilities.cpp:74:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Source/WebKit/chromium/src/WebIconTypeUtilities.cpp:75:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit/chromium/src/WebIconTypeUtilities.cpp:76:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit/chromium/src/WebIconTypeUtilities.cpp:78:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit/chromium/src/WebIconTypeUtilities.cpp:78:  One line control clauses should not use braces.  [whitespace/braces] [4]
Source/WebKit/chromium/src/WebIconTypeUtilities.cpp:79:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit/chromium/src/WebIconTypeUtilities.cpp:81:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit/chromium/src/WebIconTypeUtilities.cpp:81:  One line control clauses should not use braces.  [whitespace/braces] [4]
Source/WebKit/chromium/src/WebIconTypeUtilities.cpp:82:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit/chromium/src/WebIconTypeUtilities.cpp:84:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit/chromium/src/WebIconTypeUtilities.cpp:84:  One line control clauses should not use braces.  [whitespace/braces] [4]
Source/WebKit/chromium/src/WebIconTypeUtilities.cpp:85:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/dom/IconURL.h:69:  One space before end of line comments  [whitespace/comments] [5]
Source/WebCore/loader/FrameLoader.h:437:  The parameter name &quot;iconType&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/loader/FrameLoader.h:438:  The parameter name &quot;iconType&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/loader/FrameLoader.cpp:476:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Source/WebCore/loader/FrameLoader.cpp:499:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Source/WebCore/loader/FrameLoader.cpp:514:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Source/WebCore/loader/FrameLoader.cpp:526:  An else if statement should be written as an if statement when the prior &quot;if&quot; concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
Total errors found: 38 in 54 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>394512</commentid>
    <comment_count>11</comment_count>
      <attachid>91510</attachid>
    <who name="">michaelbai</who>
    <bug_when>2011-04-28 10:12:04 -0700</bug_when>
    <thetext>Created attachment 91510
Fix style</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>394539</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-04-28 10:46:51 -0700</bug_when>
    <thetext>Attachment 91510 did not build on chromium:
Build output: http://queues.webkit.org/results/8513823</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>394562</commentid>
    <comment_count>13</comment_count>
      <attachid>91518</attachid>
    <who name="">michaelbai</who>
    <bug_when>2011-04-28 11:01:56 -0700</bug_when>
    <thetext>Created attachment 91518
Fix chromium build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>397110</commentid>
    <comment_count>14</comment_count>
      <attachid>92082</attachid>
    <who name="">michaelbai</who>
    <bug_when>2011-05-03 09:09:57 -0700</bug_when>
    <thetext>Created attachment 92082
Remove the chromium implementation, make patch a little smaller and easy to review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>397191</commentid>
    <comment_count>15</comment_count>
      <attachid>92082</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2011-05-03 10:57:50 -0700</bug_when>
    <thetext>Comment on attachment 92082
Remove the chromium implementation, make patch a little smaller and easy to review.

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

r- to fix the FeatureDefines.xcconfig issue, remove the conflict markers, renaming/sharing getIconIndex() in IconURL.h, fix indentation issues and fix &quot;didGot&quot; variable names.  I think one more patch should do it!

&gt; Source/WebCore/ChangeLog:7154
&gt; +&gt;&gt;&gt;&gt;&gt;&gt;&gt; .r84917

Please remove the conflict marker.

&gt; Source/WebCore/Configurations/FeatureDefines.xcconfig:120
&gt; +ENABLE_TOUCH_ICON_LOADING = ;

Changes to FeatureDefines.xcconfig need to be copied to all four locations:

JavaScriptCore/Configurations/FeatureDefines.xcconfig
WebCore/Configurations/FeatureDefines.xcconfig
WebKit/mac/Configurations/FeatureDefines.xcconfig
WebKit2/Configurations/FeatureDefines.xcconfig

&gt; Source/WebCore/dom/Document.cpp:341
&gt; +static size_t getIconIndex(IconType type)

Nit: I would call this toIconIndex() instead of getIconIndex() since it&apos;s a conversion method, not a true &quot;getter&quot;.

&gt; Source/WebCore/dom/Document.cpp:347
&gt; +        break;

Nit: You could use early returns here as well, but it&apos;s not necessary.

&gt; Source/WebCore/dom/Document.cpp:4400
&gt; +    if (!iconURL(iconType).m_iconURL.isValid())

Why did this change from an isEmpty() check to isValid() check?

&gt; Source/WebCore/loader/DocumentLoader.cpp:82
&gt; +static size_t getIconIndex(IconType type)

Nit: This should also be named toIconIndex().

This should go in IconURL.h since it&apos;s much closer to IconType and ICON_COUNT, and then you can share the implementation in DocumentLoader.cpp and Document.cpp.  There&apos;s no need to duplicate this code.

I wouldn&apos;t worry about the name of the file being &quot;IconURL.h&quot; unless you can come up with a better one.

&gt; Source/WebCore/loader/DocumentLoader.cpp:697
&gt; +            m_iconURLs[getIconIndex(url.m_iconType)] = url;

Weird indentation here.  Please fix.

&gt; Source/WebCore/loader/FrameLoader.cpp:479
&gt; +            iconURLs.append(getDefaultIconURL(Favicon));

Weird indentation here.  Please fix.

&gt; Source/WebCore/loader/FrameLoader.cpp:482
&gt; +    bool didGotPrecomposedIcon = false;

&quot;didGot&quot; should be changed to &quot;have&quot; in didGotPrecomposedIcon and didGotTouchIcon.

&gt; Source/WebCore/loader/FrameLoader.cpp:499
&gt; +bool FrameLoader::fillIconURL(IconType iconType, Vector&lt;IconURL&gt;* iconURLs)

Nit: addIconURL() seems better than fillIconUURL(), but the current name is fine.

&gt; Source/WebKit/chromium/ChangeLog:637
&gt; +&gt;&gt;&gt;&gt;&gt;&gt;&gt; .r84917

Please remove the conflict marker.

&gt; Source/WebKit/mac/ChangeLog:378
&gt; +&gt;&gt;&gt;&gt;&gt;&gt;&gt; .r84917

Please remove the conflict marker.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>397255</commentid>
    <comment_count>16</comment_count>
      <attachid>92102</attachid>
    <who name="">michaelbai</who>
    <bug_when>2011-05-03 12:18:33 -0700</bug_when>
    <thetext>Created attachment 92102
Address all comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>397257</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-05-03 12:21:50 -0700</bug_when>
    <thetext>Attachment 92102 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/Configurations/Featu...&quot; exit_code: 1

Source/WebCore/dom/IconURL.h:75:  Non-label code inside switch statements should be indented.  [whitespace/indent] [4]
Total errors found: 1 in 48 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>397288</commentid>
    <comment_count>18</comment_count>
      <attachid>92110</attachid>
    <who name="">michaelbai</who>
    <bug_when>2011-05-03 13:01:31 -0700</bug_when>
    <thetext>Created attachment 92110
Fix style issue</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>397308</commentid>
    <comment_count>19</comment_count>
      <attachid>92110</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2011-05-03 13:25:02 -0700</bug_when>
    <thetext>Comment on attachment 92110
Fix style issue

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

r- to update/add ChangeLog entries, fix FeatureDefines.xcconfig sort order (just ENABLE_TOUCH_ICON_LOADING), move toIconIndex out of struct IconURL and into the WebCore namespace, and use Vector&lt;IconURL, ICON_COUNT&gt; to limit the capacity of the vector when it&apos;s first created.

&gt; Source/JavaScriptCore/Configurations/FeatureDefines.xcconfig:120
&gt; +ENABLE_TOUCH_ICON_LOADING = ;

Need an entry in JavaScriptCore/ChangeLog for the change to JavaScriptCore/Configurations/FeatureDefines.xcconfig.

&gt; Source/JavaScriptCore/Configurations/FeatureDefines.xcconfig:136
&gt; +FEATURE_DEFINES = $(ENABLE_LINK_PREFETCH) $(ENABLE_ACCELERATED_2D_CANVAS) $(ENABLE_WEBGL) $(ENABLE_3D_RENDERING) $(ENABLE_ANIMATION_API) $(ENABLE_BLOB) $(ENABLE_CHANNEL_MESSAGING) $(ENABLE_CLIENT_BASED_GEOLOCATION) $(ENABLE_DATABASE) $(ENABLE_DATALIST) $(ENABLE_DATA_TRANSFER_ITEMS) $(ENABLE_DETAILS) $(ENABLE_DEVICE_ORIENTATION) $(ENABLE_DIRECTORY_UPLOAD) $(ENABLE_DOM_STORAGE) $(ENABLE_EVENTSOURCE) $(ENABLE_FILTERS) $(ENABLE_FILE_SYSTEM) $(ENABLE_FULLSCREEN_API) $(ENABLE_GEOLOCATION) $(ENABLE_ICONDATABASE) $(ENABLE_INDEXED_DATABASE) $(ENABLE_INPUT_SPEECH) $(ENABLE_JAVASCRIPT_DEBUGGER) $(ENABLE_MATHML) $(ENABLE_METER_TAG) $(ENABLE_NOTIFICATIONS) $(ENABLE_OFFLINE_WEB_APPLICATIONS) $(ENABLE_PAGE_VISIBILITY_API) $(ENABLE_PROGRESS_TAG) $(ENABLE_REGISTER_PROTOCOL_HANDLER) $(ENABLE_QUOTA) $(ENABLE_SHARED_WORKERS) $(ENABLE_SVG) $(ENABLE_SVG_ANIMATION) $(ENABLE_SVG_AS_IMAGE) $(ENABLE_SVG_DOM_OBJC_BINDINGS) $(ENABLE_SVG_FONTS) $(ENABLE_SVG_FOREIGN_OBJECT) $(ENABLE_SVG_USE) $(ENABLE_VIDEO) $(ENABLE_VIDEO_TRACK) $(ENABLE_MEDIA_STATISTICS) $(ENABLE_WEB_AUDIO) $(ENABLE_WEB_SOCKETS) $(ENABLE_WEB_TIMING) $(ENABLE_WORKERS) $(ENABLE_XHTMLMP) $(ENABLE_XPATH) $(ENABLE_XSLT) $(ENABLE_TOUCH_ICON_LOADING);

Please add $(ENABLE_TOUCH_ICON_LOADING) alphabetically after $(ENABLE_SVG_USE) like (most) of the rest of the items.

&gt; Source/WebCore/dom/IconURL.h:68
&gt; +    static size_t toIconIndex(IconType type)

Nit:  You didn&apos;t have to add the method to struct IconURL--you could have added it to the WebCore namespace as a stand-alone method.  That&apos;s what we do for similar conversion methods.  I see now why you didn&apos;t think it made sense to add this method &quot;to IconURL&quot;.

&gt; Source/WebCore/loader/FrameLoader.cpp:477
&gt; +    Vector&lt;IconURL&gt; iconURLs;

I believe you could use &quot;Vector&lt;IconURL, ICON_COUNT&gt;&quot; here to hint that you only need a capacity of ICON_COUNT allocated.

&gt; Source/WebCore/loader/FrameLoader.h:241
&gt; +    Vector&lt;IconURL&gt; iconURLs(int iconTypes);

I believe you could use &quot;Vector&lt;IconURL, ICON_COUNT&gt;&quot; here to hint that you only need a capacity of ICON_COUNT allocated.

&gt; Source/WebKit2/ChangeLog:14
&gt; +        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
&gt; +        (WebKit::WebFrameLoaderClient::dispatchDidChangeIcons):
&gt; +        * WebProcess/WebCoreSupport/WebFrameLoaderClient.h:

Need to update the WebKit2/ChangeLog to list the changes to Configurations/FeatureDefines.xcconfig.

&gt; Source/WebKit/mac/ChangeLog:13
&gt; +        * WebCoreSupport/WebFrameLoaderClient.h:
&gt; +        * WebCoreSupport/WebFrameLoaderClient.mm:
&gt; +        (WebFrameLoaderClient::dispatchDidChangeIcons):

Need to update WebKit/mac/ChangeLog to list the changes to Configurations/FeatureDefines.xcconfig.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>397459</commentid>
    <comment_count>20</comment_count>
      <attachid>92149</attachid>
    <who name="">michaelbai</who>
    <bug_when>2011-05-03 15:34:43 -0700</bug_when>
    <thetext>Created attachment 92149
Address the comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>397478</commentid>
    <comment_count>21</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-05-03 15:59:45 -0700</bug_when>
    <thetext>Attachment 92149 did not build on qt:
Build output: http://queues.webkit.org/results/8534501</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>397494</commentid>
    <comment_count>22</comment_count>
      <attachid>92149</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2011-05-03 16:11:44 -0700</bug_when>
    <thetext>Comment on attachment 92149
Address the comments

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

&gt; Source/JavaScriptCore/ChangeLog:8
&gt; +        Respect the interface change in FrameLoaderClient.

This comment doesn&apos;t make any sense.  Just remove it.

&gt; Source/WebCore/dom/IconURL.h:67
&gt; +typedef Vector&lt;IconURL, ICON_COUNT&gt; IconURLs;

Nice!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>397495</commentid>
    <comment_count>23</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2011-05-03 16:12:06 -0700</bug_when>
    <thetext>(In reply to comment #22)
&gt; (From update of attachment 92149 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=92149&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/ChangeLog:8
&gt; &gt; +        Respect the interface change in FrameLoaderClient.
&gt; 
&gt; This comment doesn&apos;t make any sense.  Just remove it.
&gt; 
&gt; &gt; Source/WebCore/dom/IconURL.h:67
&gt; &gt; +typedef Vector&lt;IconURL, ICON_COUNT&gt; IconURLs;
&gt; 
&gt; Nice!

r=me assuming you fix the build failures.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>397532</commentid>
    <comment_count>24</comment_count>
      <attachid>92166</attachid>
    <who name="">michaelbai</who>
    <bug_when>2011-05-03 16:46:19 -0700</bug_when>
    <thetext>Created attachment 92166
Try to fix the build error</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>397541</commentid>
    <comment_count>25</comment_count>
      <attachid>92170</attachid>
    <who name="">michaelbai</who>
    <bug_when>2011-05-03 16:57:20 -0700</bug_when>
    <thetext>Created attachment 92170
Address the comment</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>397552</commentid>
    <comment_count>26</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2011-05-03 17:09:12 -0700</bug_when>
    <thetext>(In reply to comment #25)
&gt; Created an attachment (id=92170) [details]
&gt; Address the comment

I&apos;ll let the ews bots chew on this and check in on it later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>397564</commentid>
    <comment_count>27</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-05-03 17:21:09 -0700</bug_when>
    <thetext>Attachment 92170 did not build on qt:
Build output: http://queues.webkit.org/results/8546016</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>397699</commentid>
    <comment_count>28</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2011-05-03 22:31:57 -0700</bug_when>
    <thetext>Attachment 92170 did not build on win:
Build output: http://queues.webkit.org/results/8557177</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>397811</commentid>
    <comment_count>29</comment_count>
    <who name="Collabora GTK+ EWS bot">gustavo.noronha</who>
    <bug_when>2011-05-04 04:47:09 -0700</bug_when>
    <thetext>Attachment 92170 did not build on gtk:
Build output: http://queues.webkit.org/results/8557488</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>397943</commentid>
    <comment_count>30</comment_count>
      <attachid>92250</attachid>
    <who name="">michaelbai</who>
    <bug_when>2011-05-04 08:50:51 -0700</bug_when>
    <thetext>Created attachment 92250
Try to fix the build error again</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>397947</commentid>
    <comment_count>31</comment_count>
      <attachid>92252</attachid>
    <who name="">michaelbai</who>
    <bug_when>2011-05-04 08:57:20 -0700</bug_when>
    <thetext>Created attachment 92252
Try to fix the build error again</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>397996</commentid>
    <comment_count>32</comment_count>
      <attachid>92252</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-05-04 09:51:55 -0700</bug_when>
    <thetext>Comment on attachment 92252
Try to fix the build error again

Rejecting attachment 92252 from commit-queue.

michaelbai@chromium.org does not have committer permissions according to http://trac.webkit.org/browser/trunk/Tools/Scripts/webkitpy/common/config/committers.py.

- If you do not have committer rights please read http://webkit.org/coding/contributing.html for instructions on how to use bugzilla flags.

- If you have committer rights please correct the error in Tools/Scripts/webkitpy/common/config/committers.py by adding yourself to the file (no review needed).  The commit-queue restarts itself every 2 hours.  After restart the commit-queue will correctly respect your committer rights.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>398225</commentid>
    <comment_count>33</comment_count>
    <who name="Collabora GTK+ EWS bot">gustavo.noronha</who>
    <bug_when>2011-05-04 13:51:36 -0700</bug_when>
    <thetext>Attachment 92252 did not build on gtk:
Build output: http://queues.webkit.org/results/8556672</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>398236</commentid>
    <comment_count>34</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-05-04 14:00:24 -0700</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 92252:

fast/history/history-subframe-with-name.html bug 51039 (author: mihaip@chromium.org)
The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>398238</commentid>
    <comment_count>35</comment_count>
      <attachid>92252</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-05-04 14:03:06 -0700</bug_when>
    <thetext>Comment on attachment 92252
Try to fix the build error again

Clearing flags on attachment: 92252

Committed r85785: &lt;http://trac.webkit.org/changeset/85785&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>398239</commentid>
    <comment_count>36</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-05-04 14:03:15 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>398256</commentid>
    <comment_count>37</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2011-05-04 14:30:00 -0700</bug_when>
    <thetext>(In reply to comment #33)
&gt; Attachment 92252 [details] did not build on gtk:
&gt; Build output: http://queues.webkit.org/results/8556672

See also:
http://build.webkit.org/builders/GTK%20Linux%2032-bit%20Release/builds/13405

autoreconf: Entering directory `.&apos;
autoreconf: configure.ac: not using Gettext
autoreconf: running: aclocal -I Source/autotools 
autoreconf: configure.ac: tracing
autoreconf: running: libtoolize --copy
libtoolize: Consider adding `-I Source/autotools&apos; to ACLOCAL_AMFLAGS in Makefile.am.
autoreconf: running: /usr/bin/autoconf --include=Source/autotools
autoreconf: running: /usr/bin/autoheader --include=Source/autotools
autoreconf: running: automake --add-missing --copy --no-force
Source/WebCore/GNUmakefile.am:266: ENABLE_TOUCH_ICON_LOADING does not appear in AM_CONDITIONAL
GNUmakefile.am:193:   `Source/WebCore/GNUmakefile.am&apos; included from here
autoreconf: automake failed with exit status: 1
Failed to setup build environment using &apos;autotools&apos;!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>398290</commentid>
    <comment_count>38</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-05-04 15:07:51 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/85785 might have broken GTK Linux 32-bit Release</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>91114</attachid>
            <date>2011-04-26 08:55:07 -0700</date>
            <delta_ts>2011-05-03 10:37:05 -0700</delta_ts>
            <desc>Initial implementation</desc>
            <filename>touch_icon_patch.txt</filename>
            <type>text/plain</type>
            <size>60475</size>
            <attacher>michaelbai</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg0Njg0KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDcgQEAKKzIwMTEtMDQtMjIgIFRhbyBCYWkg
IDxtaWNoYWVsYmFpQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBQb3B1bGF0ZSB0b3VjaC1pY29uIHVybCB0byBGcmFtZUxvYWRl
ckNsaWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NTkxNDMKKyAgICAgICAgCisgICAgICAgIFBhcnNlZCBhbmQgcG9wdWxhdGVkIGFwcGxlLXRvdWNo
LWljb24gdXJsIHRvIEZyYW1lTG9hZGVyQ2xpZW50LgorICAgICAgICBDaGFuZ2VkIGZhdmljb24g
dG8gYmUgYSB0eXBlIG9mIGljb24uCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmNvbnZlcnRJY29uVHlwZVRvSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6
Omljb25VUkwpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnNldEljb25VUkwpOgorICAg
ICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAqIGRvbS9JY29uVVJMLmg6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6SWNvblVSTDo6SWNvblVSTCk6CisgICAgICAgICogaHRtbC9IVE1M
TGlua0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTExpbmtFbGVtZW50Ojp0b2tl
bml6ZVJlbEF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6OnBy
b2Nlc3MpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTExpbmtFbGVtZW50OjphZGRTdWJyZXNvdXJj
ZUF0dHJpYnV0ZVVSTHMpOgorICAgICAgICAqIGh0bWwvSFRNTExpbmtFbGVtZW50Lmg6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6OlJlbEF0dHJpYnV0ZTo6UmVsQXR0cmlidXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxMaW5rRWxlbWVudDo6aXNFbmFibGVkVmlhU2NyaXB0
KToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTE5hbWVzOjpQcmVsb2FkVGFzazo6cmVsQXR0cmlidXRlSXNTdHlsZVNo
ZWV0KToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Y29udmVydEljb25UeXBlVG9JbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dExvYWRlcjo6aWNvblVSTCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6c2V0
SWNvblVSTCk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmg6CisgICAgICAgICog
bG9hZGVyL0VtcHR5Q2xpZW50cy5oOgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlGcmFtZUxvYWRl
ckNsaWVudDo6ZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucyk6CisgICAgICAgICogbG9hZGVyL0ZyYW1l
TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjppY29uVVJMKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjppY29uVVJMcyk6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZUxvYWRlcjo6ZmlsbEljb25VUkwpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2Fk
ZXI6OmdldERlZmF1bHRJY29uVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpz
ZXRJY29uVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpkaWRDaGFuZ2VJY29u
cyk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0Zy
YW1lTG9hZGVyQ2xpZW50Lmg6CisKIDIwMTEtMDQtMjIgIEpvc2VwaCBQZWNvcmFybyAgPGpvZXBl
Y2tAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBLZW50IFRhbXVyYS4KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJ
KHJldmlzaW9uIDg0NDA1KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMDI1LDYgKzEwMjUsNyBAQAogCQk0NDlC
MTlGNTBGQTcyRUNFMDAxNUNBNEEgLyogSFRNTFBhcnNlclF1aXJrcy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDQ5QjE5RjMwRkE3MkVDRTAwMTVDQTRB
IC8qIEhUTUxQYXJzZXJRdWlya3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk0NEEyOEFBQzEyREZCOEFDMDBBRTkyM0IgLyogTWF0aE1MRWxlbWVu
dEZhY3RvcnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQ0QTI4QUFCMTJERkI4QUMwMEFFOTIzQiAvKiBNYXRoTUxFbGVtZW50RmFjdG9yeS5oICovOyB9
OwogCQk0NEEyOEFBRjEyREZCOEJGMDBBRTkyM0IgLyogTWF0aE1MTmFtZXMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0QTI4QUFFMTJERkI4QkYwMEFF
OTIzQiAvKiBNYXRoTUxOYW1lcy5oICovOyB9OworCQk0NUJBQzJCMDEzNjBCQkFCMDA1REEyNTgg
LyogSWNvblVSTC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDVCQUMyQUYxMzYwQkJBQjAwNURBMjU4IC8qIEljb25VUkwuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NjE0QTFGRTBCMjNBOEQ2MDA0NDZF
MUMgLyogY29weUN1cnNvci5wbmcgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQ2MTRBMUZEMEIyM0E4RDYwMDQ0NkUxQyAvKiBjb3B5Q3Vyc29yLnBuZyAq
LzsgfTsKIAkJNDY0RUEyNzMwQjhBMzUwQjAwQThFNkUzIC8qIGNyb3NzSGFpckN1cnNvci5wbmcg
aW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2NEVBMjcx
MEI4QTM1MEIwMEE4RTZFMyAvKiBjcm9zc0hhaXJDdXJzb3IucG5nICovOyB9OwogCQk0NjRFQTI3
NDBCOEEzNTBCMDBBOEU2RTMgLyogbm90QWxsb3dlZEN1cnNvci5wbmcgaW4gUmVzb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2NEVBMjcyMEI4QTM1MEIwMEE4RTZF
MyAvKiBub3RBbGxvd2VkQ3Vyc29yLnBuZyAqLzsgfTsKQEAgLTc1NTgsNiArNzU1OSw3IEBACiAJ
CTQ0OUIxOUYzMEZBNzJFQ0UwMDE1Q0E0QSAvKiBIVE1MUGFyc2VyUXVpcmtzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhUTUxQYXJzZXJRdWlya3MuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNDRBMjhBQUIxMkRGQjhBQzAwQUU5MjNCIC8qIE1hdGhNTEVsZW1l
bnRGYWN0b3J5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hdGhNTEVsZW1l
bnRGYWN0b3J5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0QTI4QUFFMTJERkI4
QkYwMEFFOTIzQiAvKiBNYXRoTUxOYW1lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBNYXRoTUxOYW1lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NUJBQzJB
RjEzNjBCQkFCMDA1REEyNTggLyogSWNvblVSTC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBJY29uVVJMLmg7IHBhdGggPSBkb20vSWNvblVSTC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0NjE0QTFGRDBCMjNBOEQ2MDA0NDZFMUMgLyogY29weUN1cnNvci5wbmcg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBpbWFnZS5w
bmc7IHBhdGggPSBjb3B5Q3Vyc29yLnBuZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDY0RUEyNzEwQjhBMzUwQjAwQThFNkUzIC8qIGNyb3NzSGFpckN1cnNvci5wbmcgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBpbWFnZS5wbmc7IHBhdGgg
PSBjcm9zc0hhaXJDdXJzb3IucG5nOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjRF
QTI3MjBCOEEzNTBCMDBBOEU2RTMgLyogbm90QWxsb3dlZEN1cnNvci5wbmcgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBpbWFnZS5wbmc7IHBhdGggPSBu
b3RBbGxvd2VkQ3Vyc29yLnBuZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEyNjg4
LDYgKzEyNjkwLDcgQEAKIAkJMDg2N0Q2OTFGRTg0MDI4RkMwMkFBQzA3IC8qIFdlYktpdCAqLyA9
IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJNDVCQUMyQUYxMzYw
QkJBQjAwNURBMjU4IC8qIEljb25VUkwuaCAqLywKIAkJCQk2NUM5N0FGMjA4RUE5MDg4MDBBQ0Qy
NzMgLyogY29uZmlnLmggKi8sCiAJCQkJRURFQzk4MDIwQUVEN0UxNzAwNTkxMzdGIC8qIFdlYkNv
cmVQcmVmaXguaCAqLywKIAkJCQk5MzA3MDYxMzA5RTBDQTgyMDBCMTdGRTQgLyogRGVyaXZlZFNv
dXJjZXMubWFrZSAqLywKQEAgLTIzMDAzLDYgKzIzMDA2LDcgQEAKIAkJCQk5M0YxOTlFRDA4MjQ1
RTU5MDAxRTlBQkMgLyogWFNMVFByb2Nlc3Nvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTFCRTUx
MkUwQ0Y2QzUxMjAwMkVBOTU5IC8qIFhTTFRVbmljb2RlU29ydC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJOTc3RTJFMEYxMkYwRkM5QzAwQzEzMzc5IC8qIFhTU0ZpbHRlci5oIGluIEhlYWRlcnMgKi8s
CisJCQkJNDVCQUMyQjAxMzYwQkJBQjAwNURBMjU4IC8qIEljb25VUkwuaCBpbiBIZWFkZXJzICov
LAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9
OwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCShyZXZpc2lvbiA4NDQwNSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0Myw2ICszNDMs
MTkgQEAgc3RhdGljIGJvb2wgZGlzYWJsZVJhbmdlTXV0YXRpb24oUGFnZSogcAogI2VuZGlmCiB9
CiAKK3N0YXRpYyBpbnQgY29udmVydEljb25UeXBlVG9JbmRleChJY29uVHlwZSB0eXBlKSB7Cisg
ICAgc3dpdGNoKHR5cGUpIHsKKyAgICAgICAgY2FzZSBGYXZpY29uOgorICAgICAgICAgICAgcmV0
dXJuIDA7CisgICAgICAgIGNhc2UgVG91Y2hQcmVjb21wb3NlZEljb246CisgICAgICAgICAgICBy
ZXR1cm4gMTsKKyAgICAgICAgY2FzZSBUb3VjaEljb246CisgICAgICAgICAgICByZXR1cm4gMjsK
KyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICB9Cit9CisKIHN0
YXRpYyBIYXNoU2V0PERvY3VtZW50Kj4qIGRvY3VtZW50c1RoYXROZWVkU3R5bGVSZWNhbGMgPSAw
OwogCiBjbGFzcyBEb2N1bWVudFdlYWtSZWZlcmVuY2UgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNv
dW50ZWQ8RG9jdW1lbnRXZWFrUmVmZXJlbmNlPiB7CkBAIC00MzYyLDE1ICs0Mzc1LDMyIEBAIHVu
c2lnbmVkIEZvcm1FbGVtZW50S2V5SGFzaDo6aGFzaChjb25zdCAKICAgICByZXR1cm4gU3RyaW5n
SGFzaGVyOjpoYXNoTWVtb3J5PHNpemVvZihGb3JtRWxlbWVudEtleSk+KCZrZXkpOwogfQogCi12
b2lkIERvY3VtZW50OjpzZXRJY29uVVJMKGNvbnN0IFN0cmluZyYgaWNvblVSTCwgY29uc3QgU3Ry
aW5nJiB0eXBlKQorSWNvblVSTCBEb2N1bWVudDo6aWNvblVSTChJY29uVHlwZSBpY29uVHlwZSkg
Y29uc3QKK3sKKyAgICBpbnQgaW5kZXggPSBjb252ZXJ0SWNvblR5cGVUb0luZGV4KGljb25UeXBl
KTsKKyAgICBpZiAoaW5kZXggIT0gLTEpCisgICAgICAgIHJldHVybiBtX2ljb25VUkxzW2luZGV4
XTsKKyAgICBlbHNlCisgICAgICAgIHJldHVybiBJY29uVVJMKCk7Cit9CisKK3ZvaWQgRG9jdW1l
bnQ6OnNldEljb25VUkwoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUs
IEljb25UeXBlIGljb25UeXBlKQogewotICAgIC8vIEZJWE1FIC0gPHJkYXI6Ly9wcm9ibGVtLzQ3
Mjc2NDU+IC0gQXQgc29tZSBwb2ludCBpbiB0aGUgZnV0dXJlLCB3ZSBtaWdodCBhY3R1YWxseSBo
b25vciB0aGUgInR5cGUiIAotICAgIGlmIChtX2ljb25VUkwuaXNFbXB0eSgpKQotICAgICAgICBt
X2ljb25VUkwgPSBpY29uVVJMOwotICAgIGVsc2UgaWYgKCF0eXBlLmlzRW1wdHkoKSkKLSAgICAg
ICAgbV9pY29uVVJMID0gaWNvblVSTDsKKyAgICAvLyBGSVhNRSAtIDxyZGFyOi8vcHJvYmxlbS80
NzI3NjQ1PiAtIEF0IHNvbWUgcG9pbnQgaW4gdGhlIGZ1dHVyZSwgd2UgbWlnaHQgYWN0dWFsbHkg
aG9ub3IgdGhlICJtaW1lVHlwZSIKKyAgICBJY29uVVJMIG5ld1VSTCAoS1VSTChQYXJzZWRVUkxT
dHJpbmcsIHVybCksIGljb25UeXBlKTsKKyAgICBpZiAoIWljb25VUkwoaWNvblR5cGUpLm1faWNv
blVSTC5pc1ZhbGlkKCkpCisgICAgICAgIHNldEljb25VUkwobmV3VVJMKTsKKyAgICBlbHNlIGlm
ICghbWltZVR5cGUuaXNFbXB0eSgpKQorICAgICAgICBzZXRJY29uVVJMKG5ld1VSTCk7CiAgICAg
aWYgKEZyYW1lKiBmID0gZnJhbWUoKSkKLSAgICAgICAgZi0+bG9hZGVyKCktPnNldEljb25VUkwo
bV9pY29uVVJMKTsKKyAgICAgICAgZi0+bG9hZGVyKCktPnNldEljb25VUkwobmV3VVJMKTsKK30K
Kwordm9pZCBEb2N1bWVudDo6c2V0SWNvblVSTChjb25zdCBJY29uVVJMJiBpY29uVVJMKQorewor
ICAgIGludCBpbmRleCA9IGNvbnZlcnRJY29uVHlwZVRvSW5kZXgoaWNvblVSTC5tX2ljb25UeXBl
KTsKKyAgICBpZiAoaW5kZXggIT0gLTEpCisgICAgICAgIG1faWNvblVSTHNbaW5kZXhdID0gaWNv
blVSTDsKIH0KIAogdm9pZCBEb2N1bWVudDo6cmVnaXN0ZXJGb3JtRWxlbWVudFdpdGhGb3JtQXR0
cmlidXRlKEZvcm1Bc3NvY2lhdGVkRWxlbWVudCogZWxlbWVudCkKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5oCShyZXZpc2lvbiA4NDQwNSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiQ29sb3IuaCIKICNp
bmNsdWRlICJET01UaW1lU3RhbXAuaCIKICNpbmNsdWRlICJEb2N1bWVudFRpbWluZy5oIgorI2lu
Y2x1ZGUgIkljb25VUkwuaCIKICNpbmNsdWRlICJRdWFsaWZpZWROYW1lLmgiCiAjaW5jbHVkZSAi
U2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIlN0cmluZ1dpdGhEaXJlY3Rpb24u
aCIKQEAgLTkxOCw4ICs5MTksOSBAQCBwdWJsaWM6CiAgICAgCiAgICAgdm9pZCBzZXRIYXNOb2Rl
c1dpdGhQbGFjZWhvbGRlclN0eWxlKCkgeyBtX2hhc05vZGVzV2l0aFBsYWNlaG9sZGVyU3R5bGUg
PSB0cnVlOyB9CiAKLSAgICBjb25zdCBTdHJpbmcmIGljb25VUkwoKSBjb25zdCB7IHJldHVybiBt
X2ljb25VUkw7IH0KLSAgICB2b2lkIHNldEljb25VUkwoY29uc3QgU3RyaW5nJiBpY29uVVJMLCBj
b25zdCBTdHJpbmcmIHR5cGUpOworICAgIEljb25VUkwgaWNvblVSTChJY29uVHlwZSBpY29uVHlw
ZSkgY29uc3Q7CisgICAgdm9pZCBzZXRJY29uVVJMKGNvbnN0IFN0cmluZyYgaWNvblVSTCwgY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSwgSWNvblR5cGUgaWNvblR5cGUpOworICAgIHZvaWQgc2V0SWNv
blVSTChjb25zdCBJY29uVVJMJiBpY29uVVJMKTsKIAogICAgIHZvaWQgc2V0VXNlU2VjdXJlS2V5
Ym9hcmRFbnRyeVdoZW5BY3RpdmUoYm9vbCk7CiAgICAgYm9vbCB1c2VTZWN1cmVLZXlib2FyZEVu
dHJ5V2hlbkFjdGl2ZSgpIGNvbnN0OwpAQCAtMTMzMyw4ICsxMzM1LDggQEAgcHJpdmF0ZToKIAog
ICAgIGJvb2wgbV9jcmVhdGVSZW5kZXJlcnM7CiAgICAgYm9vbCBtX2luUGFnZUNhY2hlOwotICAg
IFN0cmluZyBtX2ljb25VUkw7Ci0gICAgCisgICAgSWNvblVSTCBtX2ljb25VUkxzWzNdOworCiAg
ICAgSGFzaFNldDxFbGVtZW50Kj4gbV9kb2N1bWVudEFjdGl2YXRpb25DYWxsYmFja0VsZW1lbnRz
OwogICAgIEhhc2hTZXQ8RWxlbWVudCo+IG1fbWVkaWFWb2x1bWVDYWxsYmFja0VsZW1lbnRzOwog
ICAgIEhhc2hTZXQ8RWxlbWVudCo+IG1fcHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2VkRWxlbWVu
dHM7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vSWNvblVSTC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2RvbS9JY29uVVJMLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29y
ZS9kb20vSWNvblVSTC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYzIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1
dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
KyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBJY29u
VVJMX2gKKyNkZWZpbmUgSWNvblVSTF9oCisKKyNpbmNsdWRlICJLVVJMLmgiCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworZW51bSBJY29uVHlwZSB7CisgICAgSW52YWxpZEljb24gPSAwLAorICAg
IEZhdmljb24gPSAxLAorICAgIFRvdWNoSWNvbiA9IDEgPDwgMSwKKyAgICBUb3VjaFByZWNvbXBv
c2VkSWNvbiA9IDEgPDwgMgorfTsKKworc3RydWN0IEljb25VUkwgeworICAgIEljb25UeXBlIG1f
aWNvblR5cGU7CisgICAgS1VSTCBtX2ljb25VUkw7CisKKyAgICBJY29uVVJMKCkKKyAgICAgICAg
OiBtX2ljb25UeXBlKEludmFsaWRJY29uKQorICAgIHsKKyAgICB9CisKKyAgICBJY29uVVJMKGNv
bnN0IEtVUkwmIHVybCwgSWNvblR5cGUgdHlwZSkKKyAgICAgICAgOiBtX2ljb25UeXBlKHR5cGUp
CisgICAgICAgICwgbV9pY29uVVJMKHVybCkKKyAgICB7CisgICAgfQorfTsKKworfQorCisjZW5k
aWYgIC8vIEljb25VUkxfaF9oCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2UvV2ViQ29yZS9k
b20vSWNvblVSTC5oCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjplb2wtc3R5bGUKICAgKyBMRgoKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAJKHJldmlzaW9uIDg0NDA1
KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xNTksNyArMTU5LDcgQEAgdm9pZCBIVE1MTGlua0VsZW1lbnQ6OnBhcnNlTWFwcGVk
QXR0cmlidQogdm9pZCBIVE1MTGlua0VsZW1lbnQ6OnRva2VuaXplUmVsQXR0cmlidXRlKGNvbnN0
IEF0b21pY1N0cmluZyYgcmVsLCBSZWxBdHRyaWJ1dGUmIHJlbEF0dHJpYnV0ZSkKIHsKICAgICBy
ZWxBdHRyaWJ1dGUubV9pc1N0eWxlU2hlZXQgPSBmYWxzZTsKLSAgICByZWxBdHRyaWJ1dGUubV9p
c0ljb24gPSBmYWxzZTsKKyAgICByZWxBdHRyaWJ1dGUubV9pY29uVHlwZSA9IEludmFsaWRJY29u
OwogICAgIHJlbEF0dHJpYnV0ZS5tX2lzQWx0ZXJuYXRlID0gZmFsc2U7CiAgICAgcmVsQXR0cmli
dXRlLm1faXNETlNQcmVmZXRjaCA9IGZhbHNlOwogI2lmIEVOQUJMRShMSU5LX1BSRUZFVENIKQpA
QCAtMTY5LDcgKzE2OSwxMSBAQCB2b2lkIEhUTUxMaW5rRWxlbWVudDo6dG9rZW5pemVSZWxBdHRy
aWJ1CiAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHJlbCwgInN0eWxlc2hlZXQiKSkKICAgICAg
ICAgcmVsQXR0cmlidXRlLm1faXNTdHlsZVNoZWV0ID0gdHJ1ZTsKICAgICBlbHNlIGlmIChlcXVh
bElnbm9yaW5nQ2FzZShyZWwsICJpY29uIikgfHwgZXF1YWxJZ25vcmluZ0Nhc2UocmVsLCAic2hv
cnRjdXQgaWNvbiIpKQotICAgICAgICByZWxBdHRyaWJ1dGUubV9pc0ljb24gPSB0cnVlOworICAg
ICAgICByZWxBdHRyaWJ1dGUubV9pY29uVHlwZSA9IEZhdmljb247CisgICAgZWxzZSBpZiAoZXF1
YWxJZ25vcmluZ0Nhc2UocmVsLCAiYXBwbGUtdG91Y2gtaWNvbiIpKQorICAgICAgICByZWxBdHRy
aWJ1dGUubV9pY29uVHlwZSA9IFRvdWNoSWNvbjsKKyAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5n
Q2FzZShyZWwsICJhcHBsZS10b3VjaC1pY29uLXByZWNvbXBvc2VkIikpCisgICAgICAgIHJlbEF0
dHJpYnV0ZS5tX2ljb25UeXBlID0gVG91Y2hQcmVjb21wb3NlZEljb247CiAgICAgZWxzZSBpZiAo
ZXF1YWxJZ25vcmluZ0Nhc2UocmVsLCAiZG5zLXByZWZldGNoIikpCiAgICAgICAgIHJlbEF0dHJp
YnV0ZS5tX2lzRE5TUHJlZmV0Y2ggPSB0cnVlOwogICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdD
YXNlKHJlbCwgImFsdGVybmF0ZSBzdHlsZXNoZWV0IikgfHwgZXF1YWxJZ25vcmluZ0Nhc2UocmVs
LCAic3R5bGVzaGVldCBhbHRlcm5hdGUiKSkgewpAQCAtMTg4LDcgKzE5MiwxMSBAQCB2b2lkIEhU
TUxMaW5rRWxlbWVudDo6dG9rZW5pemVSZWxBdHRyaWJ1CiAgICAgICAgICAgICBlbHNlIGlmIChl
cXVhbElnbm9yaW5nQ2FzZSgqaXQsICJhbHRlcm5hdGUiKSkKICAgICAgICAgICAgICAgICByZWxB
dHRyaWJ1dGUubV9pc0FsdGVybmF0ZSA9IHRydWU7CiAgICAgICAgICAgICBlbHNlIGlmIChlcXVh
bElnbm9yaW5nQ2FzZSgqaXQsICJpY29uIikpCi0gICAgICAgICAgICAgICAgcmVsQXR0cmlidXRl
Lm1faXNJY29uID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICByZWxBdHRyaWJ1dGUubV9pY29uVHlw
ZSA9IEZhdmljb247CisgICAgICAgICAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZSgqaXQs
ICJhcHBsZS10b3VjaC1pY29uIikpCisgICAgICAgICAgICAgICAgcmVsQXR0cmlidXRlLm1faWNv
blR5cGUgPSBUb3VjaEljb247CisgICAgICAgICAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2Fz
ZSgqaXQsICJhcHBsZS10b3VjaC1pY29uLXByZWNvbXBvc2VkIikpCisgICAgICAgICAgICAgICAg
cmVsQXR0cmlidXRlLm1faWNvblR5cGUgPSBUb3VjaFByZWNvbXBvc2VkSWNvbjsKICNpZiBFTkFC
TEUoTElOS19QUkVGRVRDSCkKICAgICAgICAgICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNl
KCppdCwgInByZWZldGNoIikpCiAgICAgICAgICAgICAgIHJlbEF0dHJpYnV0ZS5tX2lzTGlua1By
ZWZldGNoID0gdHJ1ZTsKQEAgLTIyMSwxMCArMjI5LDEwIEBAIHZvaWQgSFRNTExpbmtFbGVtZW50
Ojpwcm9jZXNzKCkKIAogICAgIC8vIElFIGV4dGVuc2lvbjogbG9jYXRpb24gb2Ygc21hbGwgaWNv
biBmb3IgbG9jYXRpb25iYXIgLyBib29rbWFya3MKICAgICAvLyBXZSdsbCByZWNvcmQgdGhpcyBV
UkwgcGVyIGRvY3VtZW50LCBldmVuIGlmIHdlIGxhdGVyIG9ubHkgdXNlIGl0IGluIHRvcCBsZXZl
bCBmcmFtZXMKLSAgICBpZiAobV9yZWxBdHRyaWJ1dGUubV9pc0ljb24gJiYgbV91cmwuaXNWYWxp
ZCgpICYmICFtX3VybC5pc0VtcHR5KCkpIHsKKyAgICBpZiAobV9yZWxBdHRyaWJ1dGUubV9pY29u
VHlwZSAhPSBJbnZhbGlkSWNvbiAmJiBtX3VybC5pc1ZhbGlkKCkgJiYgIW1fdXJsLmlzRW1wdHko
KSkgewogICAgICAgICBpZiAoIWNoZWNrQmVmb3JlTG9hZEV2ZW50KCkpIAogICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICBkb2N1bWVudCgpLT5zZXRJY29uVVJMKG1fdXJsLnN0cmluZygpLCB0
eXBlKTsKKyAgICAgICAgZG9jdW1lbnQoKS0+c2V0SWNvblVSTChtX3VybC5zdHJpbmcoKSwgdHlw
ZSwgbV9yZWxBdHRyaWJ1dGUubV9pY29uVHlwZSk7CiAgICAgfQogCiAgICAgaWYgKG1fcmVsQXR0
cmlidXRlLm1faXNETlNQcmVmZXRjaCkgewpAQCAtNDcyLDcgKzQ4MCw3IEBAIHZvaWQgSFRNTExp
bmtFbGVtZW50OjphZGRTdWJyZXNvdXJjZUF0dHIKICAgICBIVE1MRWxlbWVudDo6YWRkU3VicmVz
b3VyY2VBdHRyaWJ1dGVVUkxzKHVybHMpOwogCiAgICAgLy8gRmF2aWNvbnMgYXJlIGhhbmRsZWQg
YnkgYSBzcGVjaWFsIGNhc2UgaW4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKCkKLSAgICBpZiAo
bV9yZWxBdHRyaWJ1dGUubV9pc0ljb24pCisgICAgaWYgKG1fcmVsQXR0cmlidXRlLm1faWNvblR5
cGUgIT0gSW52YWxpZEljb24pCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICghbV9yZWxBdHRy
aWJ1dGUubV9pc1N0eWxlU2hlZXQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5r
RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVt
ZW50LmgJKHJldmlzaW9uIDg0NDA1KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0Vs
ZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIkNhY2hl
ZFJlc291cmNlQ2xpZW50LmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VIYW5kbGUuaCIKICNp
bmNsdWRlICJIVE1MRWxlbWVudC5oIgorI2luY2x1ZGUgIkljb25VUkwuaCIKICNpbmNsdWRlICJU
aW1lci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zOSw3ICs0MCw3IEBAIGNsYXNzIEhU
TUxMaW5rRWxlbWVudCA6IHB1YmxpYyBIVE1MRWxlbWUKIHB1YmxpYzoKICAgICBzdHJ1Y3QgUmVs
QXR0cmlidXRlIHsKICAgICAgICAgYm9vbCBtX2lzU3R5bGVTaGVldDsKLSAgICAgICAgYm9vbCBt
X2lzSWNvbjsKKyAgICAgICAgSWNvblR5cGUgbV9pY29uVHlwZTsKICAgICAgICAgYm9vbCBtX2lz
QWx0ZXJuYXRlOwogICAgICAgICBib29sIG1faXNETlNQcmVmZXRjaDsKICNpZiBFTkFCTEUoTElO
S19QUkVGRVRDSCkKQEAgLTQ5LDcgKzUwLDcgQEAgcHVibGljOgogCiAgICAgICAgIFJlbEF0dHJp
YnV0ZSgpCiAgICAgICAgICAgICA6IG1faXNTdHlsZVNoZWV0KGZhbHNlKQotICAgICAgICAgICAg
LCBtX2lzSWNvbihmYWxzZSkKKyAgICAgICAgICAgICwgbV9pY29uVHlwZShJbnZhbGlkSWNvbikK
ICAgICAgICAgICAgICwgbV9pc0FsdGVybmF0ZShmYWxzZSkKICAgICAgICAgICAgICwgbV9pc0RO
U1ByZWZldGNoKGZhbHNlKQogI2lmIEVOQUJMRShMSU5LX1BSRUZFVENIKQpAQCAtNzYsNyArNzcs
NiBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzRGlzYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2Rp
c2FibGVkU3RhdGUgPT0gRGlzYWJsZWQ7IH0KICAgICBib29sIGlzRW5hYmxlZFZpYVNjcmlwdCgp
IGNvbnN0IHsgcmV0dXJuIG1fZGlzYWJsZWRTdGF0ZSA9PSBFbmFibGVkVmlhU2NyaXB0OyB9Ci0g
ICAgYm9vbCBpc0ljb24oKSBjb25zdCB7IHJldHVybiBtX3JlbEF0dHJpYnV0ZS5tX2lzSWNvbjsg
fQogICAgIGJvb2wgZGlzYWJsZWQoKSBjb25zdDsKICAgICB2b2lkIHNldERpc2FibGVkKGJvb2wp
OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVsb2Fk
U2Nhbm5lci5jcHAJKHJldmlzaW9uIDg0NDA1KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvSFRNTFByZWxvYWRTY2FubmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTUsNyArOTUsNyBA
QCBwdWJsaWM6CiAgICAgewogICAgICAgICBIVE1MTGlua0VsZW1lbnQ6OlJlbEF0dHJpYnV0ZSBy
ZWw7CiAgICAgICAgIEhUTUxMaW5rRWxlbWVudDo6dG9rZW5pemVSZWxBdHRyaWJ1dGUoYXR0cmli
dXRlVmFsdWUsIHJlbCk7Ci0gICAgICAgIHJldHVybiByZWwubV9pc1N0eWxlU2hlZXQgJiYgIXJl
bC5tX2lzQWx0ZXJuYXRlICYmICFyZWwubV9pc0ljb24gJiYgIXJlbC5tX2lzRE5TUHJlZmV0Y2g7
CisgICAgICAgIHJldHVybiByZWwubV9pc1N0eWxlU2hlZXQgJiYgIXJlbC5tX2lzQWx0ZXJuYXRl
ICYmIHJlbC5tX2ljb25UeXBlID09IEludmFsaWRJY29uICYmICFyZWwubV9pc0ROU1ByZWZldGNo
OwogICAgIH0KIAogICAgIHN0YXRpYyBib29sIGxpbmtNZWRpYUF0dHJpYnV0ZUlzU2NyZWVuKGNv
bnN0IFN0cmluZyYgYXR0cmlidXRlVmFsdWUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RG9jdW1lbnRMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9E
b2N1bWVudExvYWRlci5jcHAJKHJldmlzaW9uIDg0NDA1KQorKysgU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50TG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzgsNiArNzgsMTkgQEAg
c3RhdGljIHZvaWQgc2V0QWxsRGVmZXJzTG9hZGluZyhjb25zdCBSZQogICAgICAgICBsb2FkZXJz
Q29weVtpXS0+c2V0RGVmZXJzTG9hZGluZyhkZWZlcnMpOwogfQogCitzdGF0aWMgaW50IGNvbnZl
cnRJY29uVHlwZVRvSW5kZXgoSWNvblR5cGUgdHlwZSkgeworICAgIHN3aXRjaCh0eXBlKSB7Cisg
ICAgICAgIGNhc2UgRmF2aWNvbjoKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBjYXNl
IFRvdWNoUHJlY29tcG9zZWRJY29uOgorICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIGNh
c2UgVG91Y2hJY29uOgorICAgICAgICAgICAgcmV0dXJuIDI7CisgICAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgICAgICByZXR1cm4gLTE7CisgICAgfQorfQorCiBEb2N1bWVudExvYWRlcjo6RG9jdW1l
bnRMb2FkZXIoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXEsIGNvbnN0IFN1YnN0aXR1dGVEYXRh
JiBzdWJzdGl0dXRlRGF0YSkKICAgICA6IG1fZGVmZXJNYWluUmVzb3VyY2VEYXRhTG9hZCh0cnVl
KQogICAgICwgbV9mcmFtZSgwKQpAQCAtNjYxLDE0ICs2NzQsMjYgQEAgdm9pZCBEb2N1bWVudExv
YWRlcjo6c2V0VGl0bGUoY29uc3QgU3RyaQogICAgIH0KIH0KIAotdm9pZCBEb2N1bWVudExvYWRl
cjo6c2V0SWNvblVSTChjb25zdCBTdHJpbmcmIGljb25VUkwpCitJY29uVVJMIERvY3VtZW50TG9h
ZGVyOjppY29uVVJMKEljb25UeXBlIGljb25UeXBlKSBjb25zdAoreworICAgIGludCBpbmRleCA9
IGNvbnZlcnRJY29uVHlwZVRvSW5kZXgoaWNvblR5cGUpOworICAgIGlmIChpbmRleCAhPSAtMSkg
eworICAgICAgICByZXR1cm4gbV9pY29uVVJMc1tpbmRleF07CisgICAgfSBlbHNlIHsKKyAgICAg
ICAgcmV0dXJuIEljb25VUkwoKTsKKyAgICB9Cit9CisKK3ZvaWQgRG9jdW1lbnRMb2FkZXI6OnNl
dEljb25VUkwoY29uc3QgSWNvblVSTCYgdXJsKQogewotICAgIGlmIChpY29uVVJMLmlzRW1wdHko
KSkKKyAgICBpZiAodXJsLm1faWNvblVSTC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIGlmIChtX3BhZ2VJY29uVVJMICE9IGljb25VUkwpIHsKLSAgICAgICAgbV9wYWdlSWNvblVS
TCA9IGljb25VUkw7Ci0gICAgICAgIGZyYW1lTG9hZGVyKCktPmRpZENoYW5nZUljb25zKHRoaXMp
OworICAgIGlmIChpY29uVVJMKHVybC5tX2ljb25UeXBlKS5tX2ljb25VUkwgIT0gdXJsLm1faWNv
blVSTCkgeworICAgICAgICBpbnQgaW5kZXggPSBjb252ZXJ0SWNvblR5cGVUb0luZGV4KHVybC5t
X2ljb25UeXBlKTsKKyAgICAgICAgaWYgKGluZGV4ICE9IC0xKQorICAgICAgICAgICAgbV9pY29u
VVJMc1tpbmRleF0gPSB1cmw7CisgICAgICAgIGZyYW1lTG9hZGVyKCktPmRpZENoYW5nZUljb25z
KHRoaXMsIHVybC5tX2ljb25UeXBlKTsKICAgICB9CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Eb2N1bWVudExvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9Eb2N1bWVudExvYWRlci5oCShyZXZpc2lvbiA4NDQwNSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Eb2N1bWVudExvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBA
CiAjaW5jbHVkZSAiRG9jdW1lbnRMb2FkVGltaW5nLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRXcml0
ZXIuaCIKICNpbmNsdWRlICJJY29uRGF0YWJhc2VCYXNlLmgiCisjaW5jbHVkZSAiSWNvblVSTC5o
IgogI2luY2x1ZGUgIk5hdmlnYXRpb25BY3Rpb24uaCIKICNpbmNsdWRlICJSZXNvdXJjZUVycm9y
LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCkBAIC0xMjMsNyArMTI0LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29sIGlzTG9hZGluZ0luQVBJU2Vuc2UoKSBjb25z
dDsKICAgICAgICAgdm9pZCBzZXRQcmltYXJ5TG9hZENvbXBsZXRlKGJvb2wpOwogICAgICAgICB2
b2lkIHNldFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mKTsKLSAgICAgICAgdm9pZCBz
ZXRJY29uVVJMKGNvbnN0IFN0cmluZyYpOworICAgICAgICB2b2lkIHNldEljb25VUkwoY29uc3Qg
SWNvblVSTCYpOwogICAgICAgICBjb25zdCBTdHJpbmcmIG92ZXJyaWRlRW5jb2RpbmcoKSBjb25z
dCB7IHJldHVybiBtX292ZXJyaWRlRW5jb2Rpbmc7IH0KIAogI2lmIFBMQVRGT1JNKE1BQykKQEAg
LTE3MCw3ICsxNzEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgdm9pZCBzdG9w
UmVjb3JkaW5nUmVzcG9uc2VzKCk7CiAgICAgICAgIGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24m
IHRpdGxlKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlVGl0bGU7IH0KLSAgICAgICAgY29uc3QgU3Ry
aW5nJiBpY29uVVJMKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlSWNvblVSTDsgfQorICAgICAgICBJ
Y29uVVJMIGljb25VUkwoSWNvblR5cGUgaWNvblR5cGUpIGNvbnN0OwogCiAgICAgICAgIEtVUkwg
dXJsRm9ySGlzdG9yeSgpIGNvbnN0OwogICAgICAgICBib29sIHVybEZvckhpc3RvcnlSZWZsZWN0
c0ZhaWx1cmUoKSBjb25zdDsKQEAgLTMwMCw3ICszMDEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgIGJvb2wgbV93YXNPbmxvYWRIYW5kbGVkOwogCiAgICAgICAgIFN0cmluZ1dpdGhE
aXJlY3Rpb24gbV9wYWdlVGl0bGU7Ci0gICAgICAgIFN0cmluZyBtX3BhZ2VJY29uVVJMOworICAg
ICAgICBJY29uVVJMIG1faWNvblVSTHNbM107CiAKICAgICAgICAgU3RyaW5nIG1fb3ZlcnJpZGVF
bmNvZGluZzsKIApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAkocmV2aXNp
b24gODQ0MDUpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTI3MSw3ICsyNzEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRp
c3BhdGNoRGlkUmVjZWl2ZUljb24oKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRT
dGFydFByb3Zpc2lvbmFsTG9hZCgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJl
Y2VpdmVUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJikgeyB9Ci0gICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0
Y2hEaWRDaGFuZ2VJY29ucyhJY29uVHlwZSkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
RGlkQ29tbWl0TG9hZCgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxQcm92
aXNpb25hbExvYWQoY29uc3QgUmVzb3VyY2VFcnJvciYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaERpZEZhaWxMb2FkKGNvbnN0IFJlc291cmNlRXJyb3ImKSB7IH0KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkocmV2aXNpb24gODQ0MDUpCisrKyBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OSw2ICs2
OSw3IEBACiAjaW5jbHVkZSAiSGlzdG9yeUl0ZW0uaCIKICNpbmNsdWRlICJJY29uRGF0YWJhc2Uu
aCIKICNpbmNsdWRlICJJY29uTG9hZGVyLmgiCisjaW5jbHVkZSAiSWNvblVSTC5oIgogI2luY2x1
ZGUgIkluc3BlY3RvckNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb24uaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCkBAIC00NjgsMTggKzQ2OSw1MSBAQCBib29s
IEZyYW1lTG9hZGVyOjpjbG9zZVVSTCgpCiAKIEtVUkwgRnJhbWVMb2FkZXI6Omljb25VUkwoKQog
ewotICAgIC8vIElmIHRoaXMgaXNuJ3QgYSB0b3AgbGV2ZWwgZnJhbWUsIHJldHVybiBub3RoaW5n
CisgICAgVmVjdG9yPEljb25VUkw+IHVybHMgPSBpY29uVVJMcyhGYXZpY29uKTsKKyAgICByZXR1
cm4gdXJscy5pc0VtcHR5KCkgPyBLVVJMKCkgOiB1cmxzWzBdLm1faWNvblVSTDsKK30KKworVmVj
dG9yPEljb25VUkw+IEZyYW1lTG9hZGVyOjppY29uVVJMcyhpbnQgaWNvblR5cGVzKSB7CisgICAg
VmVjdG9yPEljb25VUkw+IGljb25VUkxzOworICAgIGlmIChpY29uVHlwZXMgJiBGYXZpY29uICYm
ICFmaWxsSWNvblVSTChGYXZpY29uLCAmaWNvblVSTHMpKQorICAgICAgICAgICAgaWNvblVSTHMu
YXBwZW5kKGdldERlZmF1bHRJY29uVVJMKEZhdmljb24pKTsKKworICAgIGJvb2wgZGlkR290UHJl
Y29tcG9zZWRJY29uID0gZmFsc2U7CisgICAgaWYgKGljb25UeXBlcyAmIFRvdWNoUHJlY29tcG9z
ZWRJY29uKQorICAgICAgICBkaWRHb3RQcmVjb21wb3NlZEljb24gPSBmaWxsSWNvblVSTChUb3Vj
aFByZWNvbXBvc2VkSWNvbiwgJmljb25VUkxzKTsKKworICAgIGJvb2wgZGlkR290VG91Y2hJY29u
ID0gZmFsc2U7CisgICAgaWYgKGljb25UeXBlcyAmIFRvdWNoSWNvbikKKyAgICAgICAgZGlkR290
VG91Y2hJY29uID0gZmlsbEljb25VUkwoVG91Y2hJY29uLCAmaWNvblVSTHMpOworCisgICAgLy8g
T25seSByZXR1cm4gdGhlIGRlZmF1bHQgdG91Y2ggaWNvbnMgd2hlbiB0aGUgYm90aCB3ZXJlIHJl
cXVpcmVkIGFuZCBuZWl0aGVyIHdhcyBnb3R0ZW4uCisgICAgaWYgKGljb25UeXBlcyAmIFRvdWNo
UHJlY29tcG9zZWRJY29uICYmIGljb25UeXBlcyAmIFRvdWNoSWNvbiAmJiAhZGlkR290UHJlY29t
cG9zZWRJY29uICYmICFkaWRHb3RUb3VjaEljb24pIHsKKyAgICAgICAgaWNvblVSTHMuYXBwZW5k
KGdldERlZmF1bHRJY29uVVJMKFRvdWNoUHJlY29tcG9zZWRJY29uKSk7CisgICAgICAgIGljb25V
UkxzLmFwcGVuZChnZXREZWZhdWx0SWNvblVSTChUb3VjaEljb24pKTsKKyAgICB9CisgICAgcmV0
dXJuIGljb25VUkxzOworfQorCitib29sIEZyYW1lTG9hZGVyOjpmaWxsSWNvblVSTChJY29uVHlw
ZSBpY29uVHlwZSwgVmVjdG9yPEljb25VUkw+KiBpY29uVVJMcykgeworICAgIC8vIElmIHRoaXMg
aXNuJ3QgYSB0b3AgbGV2ZWwgZnJhbWUsIHJldHVybgogICAgIGlmIChtX2ZyYW1lLT50cmVlKCkg
JiYgbV9mcmFtZS0+dHJlZSgpLT5wYXJlbnQoKSkKLSAgICAgICAgcmV0dXJuIEtVUkwoKTsKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8gSWYgd2UgaGF2ZSBhbiBpY29uVVJMIGZyb20g
YSBMaW5rIGVsZW1lbnQsIHJldHVybiB0aGF0Ci0gICAgaWYgKCFtX2ZyYW1lLT5kb2N1bWVudCgp
LT5pY29uVVJMKCkuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gS1VSTChQYXJzZWRVUkxTdHJp
bmcsIG1fZnJhbWUtPmRvY3VtZW50KCktPmljb25VUkwoKSk7CisgICAgSWNvblVSTCB1cmwgPSBt
X2ZyYW1lLT5kb2N1bWVudCgpLT5pY29uVVJMKGljb25UeXBlKTsKKyAgICBpZiAodXJsLm1faWNv
blVSTC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKIAorICAgIGljb25VUkxzLT5h
cHBlbmQodXJsKTsKKworICAgIHJldHVybiB0cnVlOworfQorCitJY29uVVJMIEZyYW1lTG9hZGVy
OjpnZXREZWZhdWx0SWNvblVSTChJY29uVHlwZSBpY29uVHlwZSkgewogICAgIC8vIERvbid0IHJl
dHVybiBhIGZhdmljb24gaWNvblVSTCB1bmxlc3Mgd2UncmUgaHR0cCBvciBodHRwcwogICAgIEtV
UkwgZG9jdW1lbnRVUkwgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT51cmwoKTsKICAgICBpZiAoIWRv
Y3VtZW50VVJMLnByb3RvY29sSW5IVFRQRmFtaWx5KCkpCi0gICAgICAgIHJldHVybiBLVVJMKCk7
CisgICAgICAgIHJldHVybiBJY29uVVJMKCk7CiAKICAgICBLVVJMIHVybDsKICAgICBib29sIGNv
dWxkU2V0UHJvdG9jb2wgPSB1cmwuc2V0UHJvdG9jb2woZG9jdW1lbnRVUkwucHJvdG9jb2woKSk7
CkBAIC00ODcsOCArNTIxLDE3IEBAIEtVUkwgRnJhbWVMb2FkZXI6Omljb25VUkwoKQogICAgIHVy
bC5zZXRIb3N0KGRvY3VtZW50VVJMLmhvc3QoKSk7CiAgICAgaWYgKGRvY3VtZW50VVJMLmhhc1Bv
cnQoKSkKICAgICAgICAgdXJsLnNldFBvcnQoZG9jdW1lbnRVUkwucG9ydCgpKTsKLSAgICB1cmwu
c2V0UGF0aCgiL2Zhdmljb24uaWNvIik7Ci0gICAgcmV0dXJuIHVybDsKKyAgICBpZiAoaWNvblR5
cGUgPT0gRmF2aWNvbikgeworICAgICAgICB1cmwuc2V0UGF0aCgiL1RvdWNoUHJlY29tcG9zZWRJ
Y29uLmljbyIpOworICAgICAgICByZXR1cm4gSWNvblVSTChLVVJMKFBhcnNlZFVSTFN0cmluZywg
dXJsKSwgRmF2aWNvbik7CisgICAgfSBlbHNlIGlmIChpY29uVHlwZSA9PSBUb3VjaFByZWNvbXBv
c2VkSWNvbikgeworICAgICAgICB1cmwuc2V0UGF0aCgiL2FwcGxlLXRvdWNoLWljb24tcHJlY29t
cG9zZWQucG5nIik7CisgICAgICAgIHJldHVybiBJY29uVVJMKEtVUkwoUGFyc2VkVVJMU3RyaW5n
LCB1cmwpLCBUb3VjaFByZWNvbXBvc2VkSWNvbik7CisgICAgfSBlbHNlIGlmIChpY29uVHlwZSA9
PSBUb3VjaEljb24pIHsKKyAgICAgICAgdXJsLnNldFBhdGgoIi9hcHBsZS10b3VjaC1pY29uLnBu
ZyIpOworICAgICAgICByZXR1cm4gSWNvblVSTChLVVJMKFBhcnNlZFVSTFN0cmluZywgdXJsKSwg
VG91Y2hJY29uKTsKKyAgICB9CisgICAgcmV0dXJuIEljb25VUkwoKTsKIH0KIAogYm9vbCBGcmFt
ZUxvYWRlcjo6ZGlkT3BlblVSTChjb25zdCBLVVJMJiB1cmwpCkBAIC0zMzg2LDcgKzM0MjksNyBA
QCB2b2lkIEZyYW1lTG9hZGVyOjpzZXRUaXRsZShjb25zdCBTdHJpbmdXCiAgICAgZG9jdW1lbnRM
b2FkZXIoKS0+c2V0VGl0bGUodGl0bGUpOwogfQogCi12b2lkIEZyYW1lTG9hZGVyOjpzZXRJY29u
VVJMKGNvbnN0IFN0cmluZyYgaWNvblVSTCkKK3ZvaWQgRnJhbWVMb2FkZXI6OnNldEljb25VUkwo
Y29uc3QgSWNvblVSTCYgaWNvblVSTCkKIHsKICAgICBkb2N1bWVudExvYWRlcigpLT5zZXRJY29u
VVJMKGljb25VUkwpOwogfQpAQCAtMzQ2NCwxMCArMzUwNywxMCBAQCB2b2lkIEZyYW1lTG9hZGVy
OjpkaWRDaGFuZ2VUaXRsZShEb2N1bWVuCiAgICAgfQogfQogCi12b2lkIEZyYW1lTG9hZGVyOjpk
aWRDaGFuZ2VJY29ucyhEb2N1bWVudExvYWRlciogbG9hZGVyKQordm9pZCBGcmFtZUxvYWRlcjo6
ZGlkQ2hhbmdlSWNvbnMoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgSWNvblR5cGUgdHlwZSkKIHsK
ICAgICBpZiAobG9hZGVyID09IG1fZG9jdW1lbnRMb2FkZXIpCi0gICAgICAgIG1fY2xpZW50LT5k
aXNwYXRjaERpZENoYW5nZUljb25zKCk7CisgICAgICAgIG1fY2xpZW50LT5kaXNwYXRjaERpZENo
YW5nZUljb25zKHR5cGUpOwogfQogCiB2b2lkIEZyYW1lTG9hZGVyOjpkaXNwYXRjaERpZENvbW1p
dExvYWQoKQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgJKHJldmlzaW9uIDg0
NDA1KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJGcmFtZUxvYWRlclR5cGVzLmgiCiAjaW5j
bHVkZSAiSGlzdG9yeUNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJJY29uRGF0YWJhc2VCYXNlLmgi
CisjaW5jbHVkZSAiSWNvblVSTC5oIgogI2luY2x1ZGUgIlBvbGljeUNoZWNrZXIuaCIKICNpbmNs
dWRlICJSZXNvdXJjZUxvYWROb3RpZmllci5oIgogI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCkBA
IC0xOTIsNyArMTkzLDcgQEAgcHVibGljOgogICAgIGJvb2wgc3ViZnJhbWVJc0xvYWRpbmcoKSBj
b25zdDsKICAgICB2b2lkIHdpbGxDaGFuZ2VUaXRsZShEb2N1bWVudExvYWRlciopOwogICAgIHZv
aWQgZGlkQ2hhbmdlVGl0bGUoRG9jdW1lbnRMb2FkZXIqKTsKLSAgICB2b2lkIGRpZENoYW5nZUlj
b25zKERvY3VtZW50TG9hZGVyKik7CisgICAgdm9pZCBkaWRDaGFuZ2VJY29ucyhEb2N1bWVudExv
YWRlciosIEljb25UeXBlKTsKIAogICAgIEZyYW1lTG9hZFR5cGUgbG9hZFR5cGUoKSBjb25zdDsK
IApAQCAtMjM0LDcgKzIzNSwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRFbmREb2N1bWVudCgp
OwogICAgIHZvaWQgd2lsbFNldEVuY29kaW5nKCk7CiAKKyAgICAvLyBSZXR1cm5zIGZhdmljb24u
CiAgICAgS1VSTCBpY29uVVJMKCk7CisKKyAgICAvLyBSZXR1cm5zIHRoZSBnaXZlbiBpY29uVHlw
ZXMnIEljb25VUkxzLCBpY29uVHlwZXMgY291bGQgYmUgYW55IGNvbWJpbmF0aW9uIG9mIEljb25U
eXBlLgorICAgIFZlY3RvcjxJY29uVVJMPiBpY29uVVJMcyhpbnQgaWNvblR5cGVzKTsKICAgICB2
b2lkIGNvbW1pdEljb25VUkxUb0ljb25EYXRhYmFzZShjb25zdCBLVVJMJik7CiAKICAgICBLVVJM
IGJhc2VVUkwoKSBjb25zdDsKQEAgLTI4NSw3ICsyOTAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBj
YW5jZWxBbmRDbGVhcigpOwogCiAgICAgdm9pZCBzZXRUaXRsZShjb25zdCBTdHJpbmdXaXRoRGly
ZWN0aW9uJik7Ci0gICAgdm9pZCBzZXRJY29uVVJMKGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQg
c2V0SWNvblVSTChjb25zdCBJY29uVVJMJik7CiAKICAgICB2b2lkIGNvbW1pdFByb3Zpc2lvbmFs
TG9hZCgpOwogICAgIGJvb2wgaXNMb2FkaW5nRnJvbUNhY2hlZFBhZ2UoKSBjb25zdCB7IHJldHVy
biBtX2xvYWRpbmdGcm9tQ2FjaGVkUGFnZTsgfQpAQCAtNDI5LDYgKzQzNCw5IEBAIHByaXZhdGU6
CiAKICAgICB2b2lkIHVwZGF0ZVNhbmRib3hGbGFncygpOwogCisgICAgYm9vbCBmaWxsSWNvblVS
TChJY29uVHlwZSBpY29uVHlwZSwgVmVjdG9yPEljb25VUkw+KiBpY29uVVJMcyk7CisgICAgSWNv
blVSTCBnZXREZWZhdWx0SWNvblVSTChJY29uVHlwZSBpY29uVHlwZSk7CisKICAgICBGcmFtZSog
bV9mcmFtZTsKICAgICBGcmFtZUxvYWRlckNsaWVudCogbV9jbGllbnQ7CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCShyZXZpc2lvbiA4NDQwNSkKKysr
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zMCw2ICszMCw3IEBACiAjZGVmaW5lIEZyYW1lTG9hZGVyQ2xpZW50X2gKIAogI2luY2x1
ZGUgIkZyYW1lTG9hZGVyVHlwZXMuaCIKKyNpbmNsdWRlICJJY29uVVJMLmgiCiAjaW5jbHVkZSAi
U2Nyb2xsVHlwZXMuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KQEAgLTE0MSw3ICsxNDIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVJY29uKCkgPSAwOwogICAgICAgICB2aXJ0
dWFsIHZvaWQgZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpID0gMDsKICAgICAgICAg
dmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJl
Y3Rpb24mKSA9IDA7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZUljb25z
KCkgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucyhJY29u
VHlwZSkgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDb21taXRMb2FkKCkg
PSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGYWlsUHJvdmlzaW9uYWxMb2Fk
KGNvbnN0IFJlc291cmNlRXJyb3ImKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRj
aERpZEZhaWxMb2FkKGNvbnN0IFJlc291cmNlRXJyb3ImKSA9IDA7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShy
ZXZpc2lvbiA4NDY4NCkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDEzIEBACisyMDExLTA0LTIyICBUYW8gQmFpICA8bWljaGFlbGJhaUBjaHJv
bWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgTmVlZCBhIHNob3J0IGRlc2NyaXB0aW9uIGFuZCBidWcgVVJMIChPT1BTISkKKworICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDaGFuZ2VJ
Y29ucyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5oOgorCiAyMDExLTA0LTIyICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5pZy4KSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuY3BwCShyZXZpc2lvbiA4NDQwNSkKKysrIFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00MTgsNyArNDE4LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlz
cGF0Y2hEaWRSZQogICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlk
UmVjZWl2ZVRpdGxlRm9yRnJhbWUobV9mcmFtZS0+ZnJhbWVJRCgpLCB0aXRsZS5zdHJpbmcoKSwg
SW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29kZXIodXNlckRhdGEuZ2V0KCkpKSk7CiB9CiAK
LXZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoKQordm9p
ZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucyhXZWJDb3JlOjpJ
Y29uVHlwZSkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQpJbmRleDogU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuaAkocmV2aXNpb24gODQ0MDUpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTg1LDcgKzg1LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hE
aWRSZWNlaXZlSWNvbigpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFN0YXJ0UHJvdmlz
aW9uYWxMb2FkKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNv
bnN0IFdlYkNvcmU6OlN0cmluZ1dpdGhEaXJlY3Rpb24mKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlz
cGF0Y2hEaWRDaGFuZ2VJY29ucygpOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENoYW5n
ZUljb25zKFdlYkNvcmU6Okljb25UeXBlKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRD
b21taXRMb2FkKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFs
TG9hZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAgICAgdmlydHVhbCB2b2lkIGRp
c3BhdGNoRGlkRmFpbExvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwpJbmRleDog
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg0Njg0KQorKysgU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzMiBAQAorMjAx
MS0wNC0yMiAgVGFvIEJhaSAgPG1pY2hhZWxiYWlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBvcHVsYXRlIHRvdWNoLWljb24g
dXJsIHRvIEZyYW1lTG9hZGVyQ2xpZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD01OTE0MworCisgICAgICAgIFJlc3BlY3RlZCB0aGUgY2hhbmdlIG9m
IEZyYW1lTG9hZGVyQ2xpZW50LgorICAgICAgICBBZGRlZCBXZWJJY29uVVJMIGFuZCBXZWJJY29u
VHlwZSByZXNwb25kaW5nIHRoZSBuZXcgSWNvblVSTCBhbmQgSWNvblR5cGUuCisgICAgICAgIFN1
cHBvcnRlZCB0byBnZXQgdGhlIG11bHRpcGxlIGljb24gdXJscy4KKworICAgICAgICAqIFdlYktp
dC5neXA6CisgICAgICAgICogcHVibGljL1dlYkZyYW1lLmg6CisgICAgICAgICogcHVibGljL1dl
YkZyYW1lQ2xpZW50Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lQ2xpZW50OjpkaWRDaGFu
Z2VJY29ucyk6CisgICAgICAgICogcHVibGljL1dlYkljb25VUkwuaDogQWRkZWQuCisgICAgICAg
IChXZWJLaXQ6OldlYkljb25VUkw6OldlYkljb25VUkwpOgorICAgICAgICAqIHNyYy9GcmFtZUxv
YWRlckNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudElt
cGw6OmRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMpOgorICAgICAgICAqIHNyYy9GcmFtZUxvYWRlckNs
aWVudEltcGwuaDoKKyAgICAgICAgKiBzcmMvV2ViRnJhbWVJbXBsLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViRnJhbWVJbXBsOjpmYXZJY29uVVJMKToKKyAgICAgICAgKiBzcmMvV2ViRnJhbWVJ
bXBsLmg6CisgICAgICAgICogc3JjL1dlYkljb25UeXBlVXRpbGl0aWVzLmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJLaXQ6OldlYkljb25UeXBlVXRpbGl0aWVzOjpDb252ZXJ0V2ViSWNvblR5cGVU
b0ljb25UeXBlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSWNvblR5cGVVdGlsaXRpZXM6OkNvbnZl
cnRJY29uVHlwZVRvV2ViSWNvblR5cGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJY29uVHlwZVV0
aWxpdGllczo6Q29udmVydFdlYkljb25UeXBlc1RvSWNvblR5cGVzKToKKyAgICAgICAgKiBzcmMv
V2ViSWNvblR5cGVVdGlsaXRpZXMuaDogQWRkZWQuCisKIDIwMTEtMDQtMjIgIE1pa2hhaWwgTmFn
YW5vdiAgPG1uYWdhbm92QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBQYXZl
bCBGZWxkbWFuLgpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAkocmV2aXNpb24gODQ0
MDUpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAJKHdvcmtpbmcgY29weSkK
QEAgLTE4NCw2ICsxODQsNyBAQAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViSFRUUEJvZHku
aCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJIVFRQTG9hZEluZm8uaCcsCiAgICAgICAg
ICAgICAgICAgJ3B1YmxpYy9XZWJJY29uTG9hZGluZ0NvbXBsZXRpb24uaCcsCisgICAgICAgICAg
ICAgICAgJ3B1YmxpYy9XZWJJY29uVHlwZS5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dl
YkltYWdlLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViSW1hZ2VEZWNvZGVyLmgnLAog
ICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViSURCQ2FsbGJhY2tzLmgnLApAQCAtNDczLDYgKzQ3
NCw4IEBACiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJIaXN0b3J5SXRlbS5jcHAnLAogICAgICAg
ICAgICAgICAgICdzcmMvV2ViSFRUUEJvZHkuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dl
YkhUVFBMb2FkSW5mby5jcHAnLAorICAgICAgICAgICAgICAgICdzcmMvV2ViSWNvblR5cGVVdGls
aXRpZXMuY3BwJywKKyAgICAgICAgICAgICAgICAnc3JjL1dlYkljb25UeXBlVXRpbGl0aWVzLmgn
LAogICAgICAgICAgICAgICAgICdzcmMvV2ViSWNvbkxvYWRpbmdDb21wbGV0aW9uSW1wbC5jcHAn
LAogICAgICAgICAgICAgICAgICdzcmMvV2ViSWNvbkxvYWRpbmdDb21wbGV0aW9uSW1wbC5oJywK
ICAgICAgICAgICAgICAgICAnc3JjL1dlYklEQkNhbGxiYWNrc0ltcGwuY3BwJywKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZyYW1lLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWUuaAkocmV2aXNpb24gODQ0MDUpCisr
KyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zMyw2ICszMyw3IEBACiAKICNpbmNsdWRlICJXZWJDYW52YXMuaCIKICNpbmNsdWRlICJX
ZWJGaWxlU3lzdGVtLmgiCisjaW5jbHVkZSAiV2ViSWNvblVSTC5oIgogI2luY2x1ZGUgIldlYk5v
ZGUuaCIKICNpbmNsdWRlICJXZWJVUkwuaCIKIApAQCAtMTI5LDkgKzEzMCw5IEBAIHB1YmxpYzoK
ICAgICAvLyBkYXRhU291cmNlKCktPnJlcXVlc3QoKS51cmwoKS4KICAgICB2aXJ0dWFsIFdlYlVS
TCB1cmwoKSBjb25zdCA9IDA7CiAKLSAgICAvLyBUaGUgdXJsIG9mIHRoZSBmYXZpY29uIChpZiBh
bnkpIHNwZWNpZmllZCBieSB0aGUgZG9jdW1lbnQgbG9hZGVkIGluCisgICAgLy8gVGhlIHVybHMg
b2YgdGhlIGZhdmljb24gKGlmIGFueSkgc3BlY2lmaWVkIGJ5IHRoZSBkb2N1bWVudCBsb2FkZWQg
aW4KICAgICAvLyB0aGlzIGZyYW1lLgotICAgIHZpcnR1YWwgV2ViVVJMIGZhdkljb25VUkwoKSBj
b25zdCA9IDA7CisgICAgdmlydHVhbCBzdGQ6OnZlY3RvcjxXZWJJY29uVVJMPiBmYXZJY29uVVJM
KGludCkgY29uc3QgPSAwOwogCiAgICAgLy8gVGhlIHVybCBvZiB0aGUgT3BlblNlYXJjaCBEZXNy
aXB0aW9uIERvY3VtZW50IChpZiBhbnkpIHNwZWNpZmllZCBieQogICAgIC8vIHRoZSBkb2N1bWVu
dCBsb2FkZWQgaW4gdGhpcyBmcmFtZS4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYkZyYW1lQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViRnJhbWVDbGllbnQuaAkocmV2aXNpb24gODQ0MDUpCisrKyBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
Myw2ICszMyw3IEBACiAKICNpbmNsdWRlICJXZWJDb21tb24uaCIKICNpbmNsdWRlICJXZWJGaWxl
U3lzdGVtLmgiCisjaW5jbHVkZSAiV2ViSWNvblVSTC5oIgogI2luY2x1ZGUgIldlYk5hdmlnYXRp
b25Qb2xpY3kuaCIKICNpbmNsdWRlICJXZWJOYXZpZ2F0aW9uVHlwZS5oIgogI2luY2x1ZGUgIldl
YlN0b3JhZ2VRdW90YVR5cGUuaCIKQEAgLTIxNSw3ICsyMTYsNyBAQCBwdWJsaWM6CiAgICAgfQog
CiAgICAgLy8gVGhlIGljb25zIGZvciB0aGUgcGFnZSBoYXZlIGNoYW5nZWQuCi0gICAgdmlydHVh
bCB2b2lkIGRpZENoYW5nZUljb25zKFdlYkZyYW1lKikgeyB9CisgICAgdmlydHVhbCB2b2lkIGRp
ZENoYW5nZUljb25zKFdlYkZyYW1lKiwgV2ViSWNvblR5cGUpIHsgfQogCiAgICAgLy8gVGhlIGZy
YW1lJ3MgZG9jdW1lbnQgZmluaXNoZWQgbG9hZGluZy4KICAgICB2aXJ0dWFsIHZvaWQgZGlkRmlu
aXNoRG9jdW1lbnRMb2FkKFdlYkZyYW1lKikgeyB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJJY29uVVJMLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViSWNvblVSTC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViSWNvblVSTC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY1IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
KyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
CisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmbmRlZiBXZWJJY29uVVJMX2gKKyNkZWZpbmUgV2ViSWNvblVSTF9oCisKKyNpbmNsdWRlICJX
ZWJVUkwuaCIKKworI2luY2x1ZGUgPHZlY3Rvcj4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2Vu
dW0gV2ViSWNvblR5cGUgeworICAgIEludmFsaWRJY29uID0gMCwKKyAgICBGYXZpY29uID0gMSwK
KyAgICBUb3VjaEljb24gPSAxIDw8IDEsCisgICAgVG91Y2hQcmVjb21wb3NlZEljb24gPSAxIDw8
IDIKK307CisKK3N0cnVjdCBXZWJJY29uVVJMIHsKKyAgICBXZWJJY29uVVJMKCkKKyAgICAgICAg
OiBtX2ljb25UeXBlKEludmFsaWRJY29uKQorICAgIHsKKyAgICB9CisKKyAgICBXZWJJY29uVVJM
KGNvbnN0IFdlYlVSTCYgdXJsLCBXZWJJY29uVHlwZSB0eXBlKQorICAgICAgICA6IG1faWNvblR5
cGUodHlwZSkKKyAgICAgICAgLCBtX2ljb25VUkwodXJsKQorICAgIHsKKyAgICB9CisKKyAgICBX
ZWJJY29uVHlwZSBtX2ljb25UeXBlOworICAgIFdlYlVSTCBtX2ljb25VUkw7Cit9OworCit9CisK
KyNlbmRpZiAgLy8gV2ViSWNvblVSTF9oCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJY29uVVJMLmgKX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmVv
bC1zdHlsZQogICArIExGCgpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVM
b2FkZXJDbGllbnRJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwCShyZXZpc2lvbiA4NDQwNSkKKysrIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTYxLDYgKzYxLDcgQEAKICNpbmNsdWRlICJXZWJGb3JtRWxlbWVudC5oIgogI2lu
Y2x1ZGUgIldlYkZyYW1lQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVJbXBsLmgiCisjaW5j
bHVkZSAiV2ViSWNvblR5cGVVdGlsaXRpZXMuaCIKICNpbmNsdWRlICJXZWJLaXQuaCIKICNpbmNs
dWRlICJXZWJLaXRDbGllbnQuaCIKICNpbmNsdWRlICJXZWJNaW1lUmVnaXN0cnkuaCIKQEAgLTc0
OCwxMCArNzQ5LDEwIEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRJbXBsOjpkaXNwYXRjaERpZFIK
ICAgICAgICAgbV93ZWJGcmFtZS0+Y2xpZW50KCktPmRpZFJlY2VpdmVUaXRsZShtX3dlYkZyYW1l
LCB0aXRsZS5zdHJpbmcoKSwgdGl0bGUuZGlyZWN0aW9uKCkgPT0gTFRSID8gV2ViVGV4dERpcmVj
dGlvbkxlZnRUb1JpZ2h0IDogV2ViVGV4dERpcmVjdGlvblJpZ2h0VG9MZWZ0KTsKIH0KIAotdm9p
ZCBGcmFtZUxvYWRlckNsaWVudEltcGw6OmRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoKQordm9pZCBG
cmFtZUxvYWRlckNsaWVudEltcGw6OmRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoV2ViQ29yZTo6SWNv
blR5cGUgdHlwZSkKIHsKICAgICBpZiAobV93ZWJGcmFtZS0+Y2xpZW50KCkpCi0gICAgICAgIG1f
d2ViRnJhbWUtPmNsaWVudCgpLT5kaWRDaGFuZ2VJY29ucyhtX3dlYkZyYW1lKTsKKyAgICAgICAg
bV93ZWJGcmFtZS0+Y2xpZW50KCktPmRpZENoYW5nZUljb25zKG1fd2ViRnJhbWUsIFdlYkljb25U
eXBlVXRpbGl0aWVzOjpDb252ZXJ0SWNvblR5cGVUb1dlYkljb25UeXBlKHR5cGUpKTsKIH0KIAog
dm9pZCBGcmFtZUxvYWRlckNsaWVudEltcGw6OmRpc3BhdGNoRGlkQ29tbWl0TG9hZCgpCkluZGV4
OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudElt
cGwuaAkocmV2aXNpb24gODQ0MDUpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFt
ZUxvYWRlckNsaWVudEltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtMTA1LDcgKzEwNSw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbigpOwogICAgIHZp
cnR1YWwgdm9pZCBkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCk7CiAgICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFdlYkNvcmU6OlN0cmluZ1dpdGhE
aXJlY3Rpb24mKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygpOwor
ICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZUljb25zKFdlYkNvcmU6Okljb25UeXBl
KTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDb21taXRMb2FkKCk7CiAgICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9hZChjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yJik7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbExvYWQoY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViRnJhbWVJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJGcmFtZUltcGwuY3BwCShyZXZpc2lvbiA4NDQwNSkKKysrIFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk5LDYgKzk5
LDcgQEAKICNpbmNsdWRlICJIVE1MTGlua0VsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMu
aCIKICNpbmNsdWRlICJIaXN0b3J5SXRlbS5oIgorI2luY2x1ZGUgIkljb25VUkwuaCIKICNpbmNs
dWRlICJJbnNwZWN0b3JDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUg
InBhaW50aW5nL0dyYXBoaWNzQ29udGV4dEJ1aWxkZXIuaCIKQEAgLTEzNiw2ICsxMzcsNyBAQAog
I2luY2x1ZGUgIldlYkZvcm1FbGVtZW50LmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVDbGllbnQuaCIK
ICNpbmNsdWRlICJXZWJIaXN0b3J5SXRlbS5oIgorI2luY2x1ZGUgIldlYkljb25UeXBlVXRpbGl0
aWVzLmgiCiAjaW5jbHVkZSAiV2ViSW5wdXRFbGVtZW50LmgiCiAjaW5jbHVkZSAiV2ViTm9kZS5o
IgogI2luY2x1ZGUgIldlYlBhc3N3b3JkQXV0b2NvbXBsZXRlTGlzdGVuZXIuaCIKQEAgLTUxNywx
NyArNTE5LDIxIEBAIFdlYlVSTCBXZWJGcmFtZUltcGw6OnVybCgpIGNvbnN0CiAgICAgcmV0dXJu
IGRzLT5yZXF1ZXN0KCkudXJsKCk7CiB9CiAKLVdlYlVSTCBXZWJGcmFtZUltcGw6OmZhdkljb25V
UkwoKSBjb25zdAorc3RkOjp2ZWN0b3I8V2ViSWNvblVSTD4gV2ViRnJhbWVJbXBsOjpmYXZJY29u
VVJMKGludCB3ZWJJY29uVHlwZXMpIGNvbnN0CiB7CiAgICAgRnJhbWVMb2FkZXIqIGZyYW1lTG9h
ZGVyID0gbV9mcmFtZS0+bG9hZGVyKCk7CisgICAgc3RkOjp2ZWN0b3I8V2ViSWNvblVSTD4gd2Vi
SWNvblVSTHM7CisKICAgICAvLyBUaGUgVVJMIHRvIHRoZSBmYXZpY29uIG1heSBiZSBpbiB0aGUg
aGVhZGVyLiBBcyBzdWNoLCBvbmx5CiAgICAgLy8gYXNrIHRoZSBsb2FkZXIgZm9yIHRoZSBmYXZp
Y29uIGlmIGl0J3MgZmluaXNoZWQgbG9hZGluZy4KICAgICBpZiAoZnJhbWVMb2FkZXItPnN0YXRl
KCkgPT0gRnJhbWVTdGF0ZUNvbXBsZXRlKSB7Ci0gICAgICAgIGNvbnN0IEtVUkwmIHVybCA9IGZy
YW1lTG9hZGVyLT5pY29uVVJMKCk7Ci0gICAgICAgIGlmICghdXJsLmlzRW1wdHkoKSkKLSAgICAg
ICAgICAgIHJldHVybiB1cmw7CisgICAgICAgIGludCBpY29uVHlwZXMgPSBXZWJJY29uVHlwZVV0
aWxpdGllczo6Q29udmVydFdlYkljb25UeXBlc1RvSWNvblR5cGVzKHdlYkljb25UeXBlcyk7Cisg
ICAgICAgIFdURjo6VmVjdG9yPFdlYkNvcmU6Okljb25VUkw+IGljb25VUkxzID0gZnJhbWVMb2Fk
ZXItPmljb25VUkxzKGljb25UeXBlcyk7CisgICAgICAgIGZvcihzaXplX3QgaSA9IDA7IGkgPCBp
Y29uVVJMcy5zaXplKCk7IGkrKykgeworICAgICAgICAgICAgd2ViSWNvblVSTHMucHVzaF9iYWNr
KFdlYkljb25VUkwoaWNvblVSTHNbaV0ubV9pY29uVVJMLCBXZWJJY29uVHlwZVV0aWxpdGllczo6
Q29udmVydEljb25UeXBlVG9XZWJJY29uVHlwZShpY29uVVJMc1tpXS5tX2ljb25UeXBlKSkpOwor
ICAgICAgICB9CiAgICAgfQotICAgIHJldHVybiBXZWJVUkwoKTsKKyAgICByZXR1cm4gd2ViSWNv
blVSTHM7CiB9CiAKIFdlYlVSTCBXZWJGcmFtZUltcGw6Om9wZW5TZWFyY2hEZXNjcmlwdGlvblVS
TCgpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwu
aAkocmV2aXNpb24gODQ0MDUpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFt
ZUltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtNjksNyArNjksNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIHNldE5hbWUoY29uc3QgV2ViU3RyaW5nJik7CiAgICAgdmlydHVhbCBsb25nIGxv
bmcgaWRlbnRpZmllcigpIGNvbnN0OwogICAgIHZpcnR1YWwgV2ViVVJMIHVybCgpIGNvbnN0Owot
ICAgIHZpcnR1YWwgV2ViVVJMIGZhdkljb25VUkwoKSBjb25zdDsKKyAgICB2aXJ0dWFsIHN0ZDo6
dmVjdG9yPFdlYkljb25VUkw+IGZhdkljb25VUkwoaW50KSBjb25zdDsKICAgICB2aXJ0dWFsIFdl
YlVSTCBvcGVuU2VhcmNoRGVzY3JpcHRpb25VUkwoKSBjb25zdDsKICAgICB2aXJ0dWFsIFdlYlN0
cmluZyBlbmNvZGluZygpIGNvbnN0OwogICAgIHZpcnR1YWwgV2ViU2l6ZSBzY3JvbGxPZmZzZXQo
KSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkljb25UeXBlVXRp
bGl0aWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJ
Y29uVHlwZVV0aWxpdGllcy5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJJY29uVHlwZVV0aWxpdGllcy5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
ODggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAq
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICog
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
KyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJXZWJJY29uVHlwZVV0aWxpdGll
cy5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKK1dlYkNvcmU6Okljb25UeXBlIFdlYkljb25UeXBl
VXRpbGl0aWVzOjpDb252ZXJ0V2ViSWNvblR5cGVUb0ljb25UeXBlKFdlYkljb25UeXBlIHdlYklj
b25UeXBlKQoreworICAgIFdlYkNvcmU6Okljb25UeXBlIGljb25UeXBlID0gV2ViQ29yZTo6SW52
YWxpZEljb247CisgICAgc3dpdGNoKHdlYkljb25UeXBlKSB7CisgICAgICAgIGNhc2UgRmF2aWNv
bjoKKyAgICAgICAgICAgIGljb25UeXBlID0gV2ViQ29yZTo6RmF2aWNvbjsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIFRvdWNoSWNvbjoKKyAgICAgICAgICAgIGljb25UeXBlID0g
V2ViQ29yZTo6VG91Y2hJY29uOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgVG91
Y2hQcmVjb21wb3NlZEljb246CisgICAgICAgICAgICBpY29uVHlwZSA9IFdlYkNvcmU6OlRvdWNo
UHJlY29tcG9zZWRJY29uOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgICAgICBicmVhazsKKyAgICB9CisgICAgcmV0dXJuIGljb25UeXBlOworfQorCitXZWJJ
Y29uVHlwZSBXZWJJY29uVHlwZVV0aWxpdGllczo6Q29udmVydEljb25UeXBlVG9XZWJJY29uVHlw
ZShXZWJDb3JlOjpJY29uVHlwZSBpY29uVHlwZSkKK3sKKyAgICBXZWJJY29uVHlwZSB0eXBlID0g
SW52YWxpZEljb247CisgICAgc3dpdGNoKGljb25UeXBlKSB7CisgICAgICAgIGNhc2UgV2ViQ29y
ZTo6RmF2aWNvbjoKKyAgICAgICAgICAgIHR5cGUgPSBGYXZpY29uOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgV2ViQ29yZTo6VG91Y2hJY29uOgorICAgICAgICAgICAgdHlwZSA9
IFRvdWNoSWNvbjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFdlYkNvcmU6OlRv
dWNoUHJlY29tcG9zZWRJY29uOgorICAgICAgICAgICAgdHlwZSA9IFRvdWNoUHJlY29tcG9zZWRJ
Y29uOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBi
cmVhazsKKyAgICB9CisgICAgcmV0dXJuIHR5cGU7Cit9CisKK2ludCBXZWJJY29uVHlwZVV0aWxp
dGllczo6Q29udmVydFdlYkljb25UeXBlc1RvSWNvblR5cGVzKGludCB3ZWJJY29uVHlwZXMpIHsK
KyAgaW50IGljb25UeXBlcyA9IDA7CisgIGlmICh3ZWJJY29uVHlwZXMgJiBGYXZpY29uKSB7Cisg
ICAgaWNvblR5cGVzIHw9IFdlYkNvcmU6OkZhdmljb247CisgIH0KKyAgaWYgKHdlYkljb25UeXBl
cyAmIFRvdWNoSWNvbikgeworICAgIGljb25UeXBlcyB8PSBXZWJDb3JlOjpUb3VjaEljb247Cisg
IH0KKyAgaWYgKHdlYkljb25UeXBlcyAmIFRvdWNoUHJlY29tcG9zZWRJY29uKSB7CisgICAgaWNv
blR5cGVzIHw9IFdlYkNvcmU6OlRvdWNoUHJlY29tcG9zZWRJY29uOworICB9CisgIHJldHVybiBp
Y29uVHlwZXM7Cit9CisKK30KClByb3BlcnR5IGNoYW5nZXMgb246IFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYkljb25UeXBlVXRpbGl0aWVzLmNwcApfX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46
ZW9sLXN0eWxlCiAgICsgTEYKCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJ
Y29uVHlwZVV0aWxpdGllcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYkljb25UeXBlVXRpbGl0aWVzLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJJY29uVHlwZVV0aWxpdGllcy5oCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDQ4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6
CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
KyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBXZWJJY29uVHlwZVV0aWxpdGllc19oCisjZGVmaW5lIFdlYkljb25U
eXBlVXRpbGl0aWVzX2gKKworI2luY2x1ZGUgIkljb25VUkwuaCIKKyNpbmNsdWRlICJXZWJJY29u
VVJMLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJJY29uVHlwZVV0aWxpdGll
cyB7CisgcHVibGljOgorICAgIHN0YXRpYyBXZWJDb3JlOjpJY29uVHlwZSBDb252ZXJ0V2ViSWNv
blR5cGVUb0ljb25UeXBlKFdlYkljb25UeXBlKTsKKyAgICBzdGF0aWMgV2ViSWNvblR5cGUgQ29u
dmVydEljb25UeXBlVG9XZWJJY29uVHlwZShXZWJDb3JlOjpJY29uVHlwZSk7CisgICAgc3RhdGlj
IGludCBDb252ZXJ0V2ViSWNvblR5cGVzVG9JY29uVHlwZXMoaW50KTsKK307CisKK30KKworI2Vu
ZGlmIC8vIFdlYkljb25UeXBlVXRpbGl0aWVzX2gKClByb3BlcnR5IGNoYW5nZXMgb246IFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkljb25UeXBlVXRpbGl0aWVzLmgKX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpB
ZGRlZDogc3ZuOmVvbC1zdHlsZQogICArIExGCgpJbmRleDogU291cmNlL1dlYktpdC9lZmwvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwkocmV2aXNp
b24gODQ2ODQpCisrKyBTb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxNiBAQAorMjAxMS0wNC0yMiAgVGFvIEJhaSAgPG1pY2hhZWxiYWlAY2hyb21p
dW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFBvcHVsYXRlIHRvdWNoLWljb24gdXJsIHRvIEZyYW1lTG9hZGVyQ2xpZW50CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01OTE0MworCisgICAgICAgIFJl
c3BlY3QgdGhlIGludGVyZmFjZSBjaGFuZ2UgaW4gRnJhbWVMb2FkZXJDbGllbnQKKworICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERpZENoYW5nZUljb25zKToKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5oOgorCiAyMDExLTA0
LTIxICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IFNhbSBXZWluaWcuCkluZGV4OiBTb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9G
cmFtZUxvYWRlckNsaWVudEVmbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9lZmwv
V2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwCShyZXZpc2lvbiA4NDQwNSkK
KysrIFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZs
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTg3LDcgKzU4Nyw3IEBAIHZvaWQgRnJhbWVMb2FkZXJD
bGllbnRFZmw6OmRpc3BhdGNoRGlkUmUKICAgICBld2tfdmlld190aXRsZV9zZXQobV92aWV3LCBj
cy5kYXRhKCkpOwogfQogCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERpZENo
YW5nZUljb25zKCkKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGlkQ2hhbmdl
SWNvbnMoV2ViQ29yZTo6SWNvblR5cGUpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZs
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVM
b2FkZXJDbGllbnRFZmwuaAkocmV2aXNpb24gODQ0MDUpCisrKyBTb3VyY2UvV2ViS2l0L2VmbC9X
ZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
MDMsNyArMTAzLDcgQEAgY2xhc3MgRnJhbWVMb2FkZXJDbGllbnRFZmwgOiBwdWJsaWMgRnJhbQog
ICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVJY29uKCk7CiAgICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoRGlkU3RhcnRQcm92aXNpb25hbExvYWQoKTsKICAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYpOwotICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZUljb25zKCk7CisgICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoV2ViQ29yZTo6SWNvblR5cGUpOwogICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaERpZENvbW1pdExvYWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hE
aWRGYWlsUHJvdmlzaW9uYWxMb2FkKGNvbnN0IFJlc291cmNlRXJyb3ImKTsKICAgICB2aXJ0dWFs
IHZvaWQgZGlzcGF0Y2hEaWRGYWlsTG9hZChjb25zdCBSZXNvdXJjZUVycm9yJik7CkluZGV4OiBT
b3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9n
dGsvQ2hhbmdlTG9nCShyZXZpc2lvbiA4NDY4NCkKKysrIFNvdXJjZS9XZWJLaXQvZ3RrL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDExLTA0LTIyICBUYW8gQmFp
ICA8bWljaGFlbGJhaUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgUG9wdWxhdGUgdG91Y2gtaWNvbiB1cmwgdG8gRnJhbWVMb2Fk
ZXJDbGllbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTU5MTQzCisKKyAgICAgICAgUmVzcGVjdCB0aGUgaW50ZXJmYWNlIGNoYW5nZSBpbiBGcmFtZUxv
YWRlckNsaWVudC4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50
R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlk
Q2hhbmdlSWNvbnMpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50
R3RrLmg6CisKIDIwMTEtMDQtMjIgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBHYXZpbiBCYXJyYWNsb3VnaC4KSW5kZXg6IFNvdXJjZS9XZWJLaXQv
Z3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5j
cHAJKHJldmlzaW9uIDg0NDA1KQorKysgU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQv
RnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NjksNyArOTY5LDcg
QEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRSZWNlaQogICAgIH0KIH0KIAot
dm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygpCit2b2lkIEZy
YW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENoYW5nZUljb25zKFdlYkNvcmU6Okljb25UeXBl
KQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L2d0ay9X
ZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmgJKHJldmlz
aW9uIDg0NDA1KQorKysgU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2Fk
ZXJDbGllbnRHdGsuaAkod29ya2luZyBjb3B5KQpAQCAtODIsNyArODIsNyBAQCBuYW1lc3BhY2Ug
V2ViS2l0IHsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUljb24oKTsK
ICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkU3RhcnRQcm92aXNpb25hbExvYWQoKTsK
ICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFdlYkNv
cmU6OlN0cmluZ1dpdGhEaXJlY3Rpb24mKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
RGlkQ2hhbmdlSWNvbnMoKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdl
SWNvbnMoV2ViQ29yZTo6SWNvblR5cGUpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hE
aWRDb21taXRMb2FkKCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxQcm92
aXNpb25hbExvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwogICAgICAgICB2aXJ0
dWFsIHZvaWQgZGlzcGF0Y2hEaWRGYWlsTG9hZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9y
Jik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiA4NDY4NCkKKysrIFNvdXJjZS9XZWJL
aXQvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDExLTA0
LTIyICBUYW8gQmFpICA8bWljaGFlbGJhaUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUG9wdWxhdGUgdG91Y2gtaWNvbiB1cmwg
dG8gRnJhbWVMb2FkZXJDbGllbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTU5MTQzCisKKyAgICAgICAgUmVzcGVjdCB0aGUgaW50ZXJmYWNlIGNoYW5n
ZSBpbiBGcmFtZUxvYWRlckNsaWVudC4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQubW06CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRD
aGFuZ2VJY29ucyk6CisKIDIwMTEtMDQtMjIgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5j
b20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTWFjaWVqIFN0YWNob3dpYWsuCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmgJKHJldmlzaW9uIDg0NDA1KQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTAyLDcgKzEw
Miw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUljb24o
KTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpOwog
ICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBXZWJDb3JlOjpT
dHJpbmdXaXRoRGlyZWN0aW9uJik7Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdl
SWNvbnMoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucyhXZWJDb3Jl
OjpJY29uVHlwZSk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ29tbWl0TG9hZCgpOwog
ICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxQcm92aXNpb25hbExvYWQoY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvciYpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxM
b2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1t
CShyZXZpc2lvbiA4NDQwNSkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC02MzMsNyArNjMzLDcgQEAg
dm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRSZQogICAgICAgICBDYWxsRnJh
bWVMb2FkRGVsZWdhdGUoaW1wbGVtZW50YXRpb25zLT5kaWRSZWNlaXZlVGl0bGVGb3JGcmFtZUZ1
bmMsIHdlYlZpZXcsIEBzZWxlY3Rvcih3ZWJWaWV3OmRpZFJlY2VpdmVUaXRsZTpmb3JGcmFtZTop
LCAoTlNTdHJpbmcgKil0aXRsZS5zdHJpbmcoKSwgbV93ZWJGcmFtZS5nZXQoKSk7CiB9CiAKLXZv
aWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoKQordm9pZCBX
ZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucyhXZWJDb3JlOjpJY29u
VHlwZSkKIHsKICAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzIHRvIGFsbG93IGNvbnRhaW5l
ciB0byB1cGRhdGUgZmF2aWNvbi4KIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCShyZXZpc2lvbiA4NDY4
NCkKKysrIFNvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMTYgQEAKKzIwMTEtMDQtMjIgIFRhbyBCYWkgIDxtaWNoYWVsYmFpQGNocm9taXVtLm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQb3B1bGF0
ZSB0b3VjaC1pY29uIHVybCB0byBGcmFtZUxvYWRlckNsaWVudAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTkxNDMKKworICAgICAgICBSZXNwZWN0IHRo
ZSBpbnRlcmZhY2UgY2hhbmdlIGluIEZyYW1lTG9hZGVyQ2xpZW50LgorCisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERpZENoYW5nZUljb25zKToKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0Lmg6CisKIDIwMTEtMDQtMjIgIFNhbSBX
ZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBGaXggcXQgYnVpbGQuCkluZGV4OiBT
b3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJD
bGllbnRRdC5jcHAJKHJldmlzaW9uIDg0NDA1KQorKysgU291cmNlL1dlYktpdC9xdC9XZWJDb3Jl
U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDU5LDcg
KzQ1OSw3IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hEaWRSZWMKIH0KIAog
Ci12b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoKQordm9p
ZCBGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERpZENoYW5nZUljb25zKFdlYkNvcmU6Oklj
b25UeXBlKQogewogICAgIGlmIChkdW1wRnJhbWVMb2FkZXJDYWxsYmFja3MpCiAgICAgICAgIHBy
aW50ZigiJXMgLSBkaWRDaGFuZ2VJY29uc1xuIiwgcVByaW50YWJsZShkcnREZXNjcmlwdGlvblN1
aXRhYmxlRm9yVGVzdFJlc3VsdChtX2ZyYW1lKSkpOwpJbmRleDogU291cmNlL1dlYktpdC9xdC9X
ZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmgJKHJldmlzaW9u
IDg0NDA1KQorKysgU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNs
aWVudFF0LmgJKHdvcmtpbmcgY29weSkKQEAgLTExMSw3ICsxMTEsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUljb24oKTsKICAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNw
YXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJik7Ci0gICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlz
cGF0Y2hEaWRDaGFuZ2VJY29ucyhXZWJDb3JlOjpJY29uVHlwZSk7CiAgICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoRGlkQ29tbWl0TG9hZCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZh
aWxQcm92aXNpb25hbExvYWQoY29uc3QgUmVzb3VyY2VFcnJvciYpOwogICAgIHZpcnR1YWwgdm9p
ZCBkaXNwYXRjaERpZEZhaWxMb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L3dpbi9DaGFuZ2VMb2cJKHJldmlzaW9uIDg0Njg0KQorKysgU291cmNlL1dlYktpdC93aW4v
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTEtMDQtMjIgIFRh
byBCYWkgIDxtaWNoYWVsYmFpQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQb3B1bGF0ZSB0b3VjaC1pY29uIHVybCB0byBGcmFt
ZUxvYWRlckNsaWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NTkxNDMKKworICAgICAgICBSZXNwZWN0IHRoZSBpbnRlcmZhY2UgY2hhbmdlIGluIEZy
YW1lTG9hZGVyQ2xpZW50LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlk
Q2hhbmdlSWNvbnMpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50Lmg6CisKIDIwMTEtMDQtMjEgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgV2luZG93cyBidWlsZCBmaXguCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCShyZXZp
c2lvbiA4NDQwNSkKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzczLDggKzM3MywxMSBAQCB2b2lk
IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJlCiAgICAgICAgIGZyYW1lTG9hZERl
bGVnYXRlLT5kaWRSZWNlaXZlVGl0bGUod2ViVmlldywgQlN0cmluZyh0aXRsZS5zdHJpbmcoKSks
IG1fd2ViRnJhbWUpOwogfQogCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERp
ZENoYW5nZUljb25zKCkKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ2hh
bmdlSWNvbnMoV2ViQ29yZTo6SWNvblR5cGUgdHlwZSkKIHsKKyAgICBpZiAodHlwZSAhPSBXZWJD
b3JlOjpGYXZpY29uKQorICAgICAgICByZXR1cm47CisKICAgICBXZWJWaWV3KiB3ZWJWaWV3ID0g
bV93ZWJGcmFtZS0+d2ViVmlldygpOwogICAgIENPTVB0cjxJV2ViRnJhbWVMb2FkRGVsZWdhdGVQ
cml2YXRlPiBmcmFtZUxvYWREZWxlZ2F0ZVByaXY7CiAgICAgaWYgKEZBSUxFRCh3ZWJWaWV3LT5m
cmFtZUxvYWREZWxlZ2F0ZVByaXZhdGUoJmZyYW1lTG9hZERlbGVnYXRlUHJpdikpIHx8ICFmcmFt
ZUxvYWREZWxlZ2F0ZVByaXYpCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2lu
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgJKHJldmlzaW9uIDg0NDA1KQor
KysgU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtNzAsNyArNzAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUljb24oKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hE
aWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJl
Y2VpdmVUaXRsZShjb25zdCBXZWJDb3JlOjpTdHJpbmdXaXRoRGlyZWN0aW9uJik7Ci0gICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlz
cGF0Y2hEaWRDaGFuZ2VJY29ucyhXZWJDb3JlOjpJY29uVHlwZSk7CiAgICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoRGlkQ29tbWl0TG9hZCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZp
bmlzaERvY3VtZW50TG9hZCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZpbmlzaExv
YWQoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luY2UvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvd2luY2UvQ2hhbmdlTG9nCShyZXZpc2lvbiA4NDY4NCkKKysrIFNvdXJj
ZS9XZWJLaXQvd2luY2UvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAK
KzIwMTEtMDQtMjIgIFRhbyBCYWkgIDxtaWNoYWVsYmFpQGNocm9taXVtLm9yZz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQb3B1bGF0ZSB0b3VjaC1p
Y29uIHVybCB0byBGcmFtZUxvYWRlckNsaWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTkxNDMKKworICAgICAgICBSZXNwZWN0IHRoZSBpbnRlcmZh
Y2UgY2hhbmdlIGluIEZyYW1lTG9hZGVyQ2xpZW50LgorCisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvRnJhbWVMb2FkZXJDbGllbnRXaW5DRS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9h
ZGVyQ2xpZW50V2luQ0U6OmRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMpOgorICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V2luQ0UuaDoKKwogMjAxMS0wNC0yMSAgUnlvc3Vr
ZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBXaW5DRSBidWlsZCBmaXggYWZ0
ZXIgcjg0NTc0LgpJbmRleDogU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9GcmFt
ZUxvYWRlckNsaWVudFdpbkNFLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbmNl
L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V2luQ0UuY3BwCShyZXZpc2lvbiA4NDQw
NSkKKysrIFNvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGll
bnRXaW5DRS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3Niw3ICszNzYsNyBAQCB2b2lkIEZyYW1l
TG9hZGVyQ2xpZW50V2luQ0U6OmRpc3BhdGNoRGlkCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0K
IAotdm9pZCBGcmFtZUxvYWRlckNsaWVudFdpbkNFOjpkaXNwYXRjaERpZENoYW5nZUljb25zKCkK
K3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRXaW5DRTo6ZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucyhXZWJD
b3JlOjpJY29uVHlwZSkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQpJbmRleDogU291cmNl
L1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFdpbkNFLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRl
ckNsaWVudFdpbkNFLmgJKHJldmlzaW9uIDg0NDA1KQorKysgU291cmNlL1dlYktpdC93aW5jZS9X
ZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFdpbkNFLmgJKHdvcmtpbmcgY29weSkKQEAg
LTc3LDcgKzc3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2Vp
dmVJY29uKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkU3RhcnRQcm92aXNpb25hbExv
YWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgV2Vi
Q29yZTo6U3RyaW5nV2l0aERpcmVjdGlvbiYpOwotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERp
ZENoYW5nZUljb25zKCk7CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMo
V2ViQ29yZTo6SWNvblR5cGUpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENvbW1pdExv
YWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGYWlsUHJvdmlzaW9uYWxMb2FkKGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hE
aWRGYWlsTG9hZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L3d4L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3d4L0NoYW5n
ZUxvZwkocmV2aXNpb24gODQ2ODQpCisrKyBTb3VyY2UvV2ViS2l0L3d4L0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDExLTA0LTIyICBUYW8gQmFpICA8bWljaGFl
bGJhaUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgUG9wdWxhdGUgdG91Y2gtaWNvbiB1cmwgdG8gRnJhbWVMb2FkZXJDbGllbnQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU5MTQzCisK
KyAgICAgICAgUmVzcGVjdCB0aGUgaW50ZXJmYWNlIGNoYW5nZSBpbiBGcmFtZUxvYWRlckNsaWVu
dC4KKworICAgICAgICAqIFdlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFd4OjpkaXNwYXRjaERpZENoYW5nZUlj
b25zKToKKyAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guaDoKKwog
MjAxMS0wNC0yMSAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBTYW0gV2VpbmlnLgpJbmRleDogU291cmNlL1dlYktpdC93eC9XZWJLaXRTdXBw
b3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
d3gvV2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFd4LmNwcAkocmV2aXNpb24gODQ0MDUp
CisrKyBTb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMyNyw3ICszMjcsNyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xp
ZW50V3g6OmRpc3BhdGNoRGlkRmluCiAgICAgfQogfQogCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50
V3g6OmRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoKQordm9pZCBGcmFtZUxvYWRlckNsaWVudFd4Ojpk
aXNwYXRjaERpZENoYW5nZUljb25zKFdlYkNvcmU6Okljb25UeXBlKQogewogICAgIG5vdEltcGxl
bWVudGVkKCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRnJhbWVM
b2FkZXJDbGllbnRXeC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd3gvV2ViS2l0U3Vw
cG9ydC9GcmFtZUxvYWRlckNsaWVudFd4LmgJKHJldmlzaW9uIDg0NDA1KQorKysgU291cmNlL1dl
YktpdC93eC9XZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guaAkod29ya2luZyBjb3B5
KQpAQCAtMTA5LDcgKzEwOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoRGlkRmluaXNoTG9hZCgpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlz
cGF0Y2hEaWRGaXJzdExheW91dCgpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRG
aXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQoKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoRGlkQ2hhbmdlSWNvbnMoKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hh
bmdlSWNvbnMoV2ViQ29yZTo6SWNvblR5cGUpOwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNw
YXRjaFNob3coKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGNhbmNlbFBvbGljeUNoZWNrKCk7Cg==
</data>
<flag name="review"
          id="83893"
          type_id="1"
          status="-"
          setter="ddkilzer"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>91193</attachid>
            <date>2011-04-26 17:27:44 -0700</date>
            <delta_ts>2011-05-03 10:15:09 -0700</delta_ts>
            <desc>Using TOUCH_ICON_LOADING to enable feature, Disabled by default.</desc>
            <filename>patch.2</filename>
            <type>text/plain</type>
            <size>67707</size>
            <attacher>michaelbai</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg0OTY1KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDcgQEAKKzIwMTEtMDQtMjIgIFRhbyBCYWkg
IDxtaWNoYWVsYmFpQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBQb3B1bGF0ZSB0b3VjaC1pY29uIHVybCB0byBGcmFtZUxvYWRl
ckNsaWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NTkxNDMKKyAgICAgICAgCisgICAgICAgIFBhcnNlZCBhbmQgcG9wdWxhdGVkIGFwcGxlLXRvdWNo
LWljb24gdXJsIHRvIEZyYW1lTG9hZGVyQ2xpZW50LgorICAgICAgICBDaGFuZ2VkIGZhdmljb24g
dG8gYmUgYSB0eXBlIG9mIGljb24uCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmNvbnZlcnRJY29uVHlwZVRvSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6
Omljb25VUkwpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnNldEljb25VUkwpOgorICAg
ICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAqIGRvbS9JY29uVVJMLmg6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6SWNvblVSTDo6SWNvblVSTCk6CisgICAgICAgICogaHRtbC9IVE1M
TGlua0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTExpbmtFbGVtZW50Ojp0b2tl
bml6ZVJlbEF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6OnBy
b2Nlc3MpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTExpbmtFbGVtZW50OjphZGRTdWJyZXNvdXJj
ZUF0dHJpYnV0ZVVSTHMpOgorICAgICAgICAqIGh0bWwvSFRNTExpbmtFbGVtZW50Lmg6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6OlJlbEF0dHJpYnV0ZTo6UmVsQXR0cmlidXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxMaW5rRWxlbWVudDo6aXNFbmFibGVkVmlhU2NyaXB0
KToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTE5hbWVzOjpQcmVsb2FkVGFzazo6cmVsQXR0cmlidXRlSXNTdHlsZVNo
ZWV0KToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Y29udmVydEljb25UeXBlVG9JbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dExvYWRlcjo6aWNvblVSTCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6c2V0
SWNvblVSTCk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmg6CisgICAgICAgICog
bG9hZGVyL0VtcHR5Q2xpZW50cy5oOgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlGcmFtZUxvYWRl
ckNsaWVudDo6ZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucyk6CisgICAgICAgICogbG9hZGVyL0ZyYW1l
TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjppY29uVVJMKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjppY29uVVJMcyk6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZUxvYWRlcjo6ZmlsbEljb25VUkwpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2Fk
ZXI6OmdldERlZmF1bHRJY29uVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpz
ZXRJY29uVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpkaWRDaGFuZ2VJY29u
cyk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0Zy
YW1lTG9hZGVyQ2xpZW50Lmg6CisKIDIwMTEtMDQtMjYgIEplZmYgTWlsbGVyICA8amVmZm1AYXBw
bGUuY29tPgogCiAgICAgICAgIEFkZCBhIG5ld2xpbmUgYXQgdGhlIGVuZCBvZiBTVkdGRURyb3BT
aGFkb3dFbGVtZW50LmlkbC4KQEAgLTI0OTcsNiArMjU0MSw3IEBACiAgICAgICAgICogcGFnZS9G
cmFtZVZpZXcuY3BwOgogICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpyZXNldFNjcm9sbGJh
cnNBbmRDbGVhckNvbnRlbnRzU2l6ZSk6CiAKKz4+Pj4+Pj4gLnI4NDkxNwogMjAxMS0wNC0yMiAg
Sm9zZXBoIFBlY29yYXJvICA8am9lcGVja0B3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IEtlbnQgVGFtdXJhLgpJbmRleDogU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0JKHJldmlzaW9uIDg0OTY1
KQorKysgU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0JKHdvcmtpbmcgY29weSkKQEAgLTI3
Myw2ICsyNzMsMTYgQEAgd2ViY29yZV9idWlsdF9zb3VyY2VzICs9IFwKIGVuZGlmICMgRU5EIEVO
QUJMRV9RVU9UQQogCiAjIC0tLS0KKyMgVG91Y2ggSWNvbiBMb2FkaW5nCisjIC0tLS0KK2lmIEVO
QUJMRV9UT1VDSF9JQ09OX0xPQURJTkcKK0ZFQVRVUkVfREVGSU5FUyArPSBFTkFCTEVfVE9VQ0hf
SUNPTl9MT0FESU5HPTEKK3dlYmNvcmVfY3BwZmxhZ3MgKz0gLURFTkFCTEVfVE9VQ0hfSUNPTl9M
T0FESU5HPTEKK2Vsc2UKK3dlYmNvcmVfY3BwZmxhZ3MgKz0gLURFTkFCTEVfVE9VQ0hfSUNPTl9M
T0FESU5HPTAKK2VuZGlmICMgRU5EIEVOQUJMRV9UT1VDSF9JQ09OX0xPQURJTkcKKworIyAtLS0t
CiAjIFNwZWVjaCBJbnB1dCBBUEkgc3VwcG9ydAogIyAtLS0tCiBpZiBFTkFCTEVfSU5QVVRfU1BF
RUNICkluZGV4OiBTb3VyY2UvV2ViQ29yZS9mZWF0dXJlcy5wcmkKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvZmVhdHVyZXMucHJpCShyZXZpc2lvbiA4NDk2NSkKKysrIFNvdXJjZS9XZWJD
b3JlL2ZlYXR1cmVzLnByaQkod29ya2luZyBjb3B5KQpAQCAtNzgsNiArNzgsNyBAQCBjb250YWlu
cyhERUZJTkVTLCBFTkFCTEVfU0lOR0xFX1RIUkVBREVECiAhY29udGFpbnMoREVGSU5FUywgRU5B
QkxFX1dFQkdMPS4pOiBERUZJTkVTICs9IEVOQUJMRV9XRUJHTD0wCiAhY29udGFpbnMoREVGSU5F
UywgRU5BQkxFX01FRElBX1NUQVRJU1RJQ1M9Lik6IERFRklORVMgKz0gRU5BQkxFX01FRElBX1NU
QVRJU1RJQ1M9MAogIWNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9WSURFT19UUkFDSz0uKTogREVG
SU5FUyArPSBFTkFCTEVfVklERU9fVFJBQ0s9MAorIWNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9U
T1VDSF9JQ09OX0xPQURJTkc9Lik6IERFRklORVMgKz0gRU5BQkxFX1RPVUNIX0lDT05fTE9BRElO
Rz0wCiAKICMgU1ZHIHN1cHBvcnQKICFjb250YWlucyhERUZJTkVTLCBFTkFCTEVfU1ZHPTApIHsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29u
ZmlnCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVE
ZWZpbmVzLnhjY29uZmlnCShyZXZpc2lvbiA4NDk2NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NvbmZp
Z3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCSh3b3JraW5nIGNvcHkpCkBAIC0xMTcs
NiArMTE3LDggQEAgRU5BQkxFX1ZJREVPX1RSQUNLID0gOwogCiBFTkFCTEVfTUVESUFfU1RBVElT
VElDUyA9IDsKIAorRU5BQkxFX1RPVUNIX0lDT05fTE9BRElORyA9IDsKKwogRU5BQkxFX1dFQl9B
VURJTyA9IDsKIAogRU5BQkxFX1dFQl9TT0NLRVRTID0gJChFTkFCTEVfV0VCX1NPQ0tFVFNfJChS
RUFMX1BMQVRGT1JNX05BTUUpKTsKQEAgLTEzMiw0ICsxMzQsNCBAQCBFTkFCTEVfWEhUTUxNUCA9
IDsKIEVOQUJMRV9YUEFUSCA9IEVOQUJMRV9YUEFUSDsKIEVOQUJMRV9YU0xUID0gRU5BQkxFX1hT
TFQ7CiAKLUZFQVRVUkVfREVGSU5FUyA9ICQoRU5BQkxFX0xJTktfUFJFRkVUQ0gpICQoRU5BQkxF
X0FDQ0VMRVJBVEVEXzJEX0NBTlZBUykgJChFTkFCTEVfV0VCR0wpICQoRU5BQkxFXzNEX1JFTkRF
UklORykgJChFTkFCTEVfQkxPQikgJChFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcpICQoRU5BQkxF
X0NMSUVOVF9CQVNFRF9HRU9MT0NBVElPTikgJChFTkFCTEVfREFUQUJBU0UpICQoRU5BQkxFX0RB
VEFHUklEKSAkKEVOQUJMRV9EQVRBTElTVCkgJChFTkFCTEVfREFUQV9UUkFOU0ZFUl9JVEVNUykg
JChFTkFCTEVfREVUQUlMUykgJChFTkFCTEVfREVWSUNFX09SSUVOVEFUSU9OKSAkKEVOQUJMRV9E
SVJFQ1RPUllfVVBMT0FEKSAkKEVOQUJMRV9ET01fU1RPUkFHRSkgJChFTkFCTEVfRVZFTlRTT1VS
Q0UpICQoRU5BQkxFX0ZJTFRFUlMpICQoRU5BQkxFX0ZJTEVfU1lTVEVNKSAkKEVOQUJMRV9GVUxM
U0NSRUVOX0FQSSkgJChFTkFCTEVfR0VPTE9DQVRJT04pICQoRU5BQkxFX0lDT05EQVRBQkFTRSkg
JChFTkFCTEVfSU1BR0VfUkVTSVpFUikgJChFTkFCTEVfSU5ERVhFRF9EQVRBQkFTRSkgJChFTkFC
TEVfSU5QVVRfU1BFRUNIKSAkKEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSKSAkKEVOQUJMRV9N
QVRITUwpICQoRU5BQkxFX01FVEVSX1RBRykgJChFTkFCTEVfTk9USUZJQ0FUSU9OUykgJChFTkFC
TEVfT0ZGTElORV9XRUJfQVBQTElDQVRJT05TKSAkKEVOQUJMRV9QQUdFX1ZJU0lCSUxJVFlfQVBJ
KSAkKEVOQUJMRV9QUk9HUkVTU19UQUcpICQoRU5BQkxFX1JFR0lTVEVSX1BST1RPQ09MX0hBTkRM
RVIpICQoRU5BQkxFX1FVT1RBKSAkKEVOQUJMRV9TSEFSRURfV09SS0VSUykgJChFTkFCTEVfU1ZH
KSAkKEVOQUJMRV9TVkdfQU5JTUFUSU9OKSAkKEVOQUJMRV9TVkdfQVNfSU1BR0UpICQoRU5BQkxF
X1NWR19ET01fT0JKQ19CSU5ESU5HUykgJChFTkFCTEVfU1ZHX0ZPTlRTKSAkKEVOQUJMRV9TVkdf
Rk9SRUlHTl9PQkpFQ1QpICQoRU5BQkxFX1NWR19VU0UpICQoRU5BQkxFX1ZJREVPKSAkKEVOQUJM
RV9WSURFT19UUkFDSykgJChFTkFCTEVfTUVESUFfU1RBVElTVElDUykgJChFTkFCTEVfV0VCX0FV
RElPKSAkKEVOQUJMRV9XRUJfU09DS0VUUykgJChFTkFCTEVfV0VCX1RJTUlORykgJChFTkFCTEVf
V01MKSAkKEVOQUJMRV9XT1JLRVJTKSAkKEVOQUJMRV9YSFRNTE1QKSAkKEVOQUJMRV9YUEFUSCkg
JChFTkFCTEVfWFNMVCk7CitGRUFUVVJFX0RFRklORVMgPSAkKEVOQUJMRV9MSU5LX1BSRUZFVENI
KSAkKEVOQUJMRV9BQ0NFTEVSQVRFRF8yRF9DQU5WQVMpICQoRU5BQkxFX1dFQkdMKSAkKEVOQUJM
RV8zRF9SRU5ERVJJTkcpICQoRU5BQkxFX0JMT0IpICQoRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5H
KSAkKEVOQUJMRV9DTElFTlRfQkFTRURfR0VPTE9DQVRJT04pICQoRU5BQkxFX0RBVEFCQVNFKSAk
KEVOQUJMRV9EQVRBR1JJRCkgJChFTkFCTEVfREFUQUxJU1QpICQoRU5BQkxFX0RBVEFfVFJBTlNG
RVJfSVRFTVMpICQoRU5BQkxFX0RFVEFJTFMpICQoRU5BQkxFX0RFVklDRV9PUklFTlRBVElPTikg
JChFTkFCTEVfRElSRUNUT1JZX1VQTE9BRCkgJChFTkFCTEVfRE9NX1NUT1JBR0UpICQoRU5BQkxF
X0VWRU5UU09VUkNFKSAkKEVOQUJMRV9GSUxURVJTKSAkKEVOQUJMRV9GSUxFX1NZU1RFTSkgJChF
TkFCTEVfRlVMTFNDUkVFTl9BUEkpICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9JQ09O
REFUQUJBU0UpICQoRU5BQkxFX0lNQUdFX1JFU0laRVIpICQoRU5BQkxFX0lOREVYRURfREFUQUJB
U0UpICQoRU5BQkxFX0lOUFVUX1NQRUVDSCkgJChFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dFUikg
JChFTkFCTEVfTUFUSE1MKSAkKEVOQUJMRV9NRVRFUl9UQUcpICQoRU5BQkxFX05PVElGSUNBVElP
TlMpICQoRU5BQkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUykgJChFTkFCTEVfUEFHRV9WSVNJ
QklMSVRZX0FQSSkgJChFTkFCTEVfUFJPR1JFU1NfVEFHKSAkKEVOQUJMRV9SRUdJU1RFUl9QUk9U
T0NPTF9IQU5ETEVSKSAkKEVOQUJMRV9RVU9UQSkgJChFTkFCTEVfU0hBUkVEX1dPUktFUlMpICQo
RU5BQkxFX1NWRykgJChFTkFCTEVfU1ZHX0FOSU1BVElPTikgJChFTkFCTEVfU1ZHX0FTX0lNQUdF
KSAkKEVOQUJMRV9TVkdfRE9NX09CSkNfQklORElOR1MpICQoRU5BQkxFX1NWR19GT05UUykgJChF
TkFCTEVfU1ZHX0ZPUkVJR05fT0JKRUNUKSAkKEVOQUJMRV9TVkdfVVNFKSAkKEVOQUJMRV9WSURF
TykgJChFTkFCTEVfVklERU9fVFJBQ0spICQoRU5BQkxFX01FRElBX1NUQVRJU1RJQ1MpICQoRU5B
QkxFX1dFQl9BVURJTykgJChFTkFCTEVfV0VCX1NPQ0tFVFMpICQoRU5BQkxFX1dFQl9USU1JTkcp
ICQoRU5BQkxFX1dNTCkgJChFTkFCTEVfV09SS0VSUykgJChFTkFCTEVfWEhUTUxNUCkgJChFTkFC
TEVfWFBBVEgpICQoRU5BQkxFX1hTTFQpICQoRU5BQkxFX1RPVUNIX0lDT05fTE9BRElORyk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCShyZXZpc2lvbiA4NDk2NSkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTA0MCw2ICsxMDQwLDcgQEAKIAkJ
NDQ5QjE5RjUwRkE3MkVDRTAwMTVDQTRBIC8qIEhUTUxQYXJzZXJRdWlya3MuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0OUIxOUYzMEZBNzJFQ0UwMDE1
Q0E0QSAvKiBIVE1MUGFyc2VyUXVpcmtzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDRBMjhBQUMxMkRGQjhBQzAwQUU5MjNCIC8qIE1hdGhNTEVs
ZW1lbnRGYWN0b3J5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0NEEyOEFBQjEyREZCOEFDMDBBRTkyM0IgLyogTWF0aE1MRWxlbWVudEZhY3RvcnkuaCAq
LzsgfTsKIAkJNDRBMjhBQUYxMkRGQjhCRjAwQUU5MjNCIC8qIE1hdGhNTE5hbWVzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NEEyOEFBRTEyREZCOEJG
MDBBRTkyM0IgLyogTWF0aE1MTmFtZXMuaCAqLzsgfTsKKwkJNDVCQUMyQjAxMzYwQkJBQjAwNURB
MjU4IC8qIEljb25VUkwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQ1QkFDMkFGMTM2MEJCQUIwMDVEQTI1OCAvKiBJY29uVVJMLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDYxNEExRkUwQjIzQThENjAw
NDQ2RTFDIC8qIGNvcHlDdXJzb3IucG5nIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0NjE0QTFGRDBCMjNBOEQ2MDA0NDZFMUMgLyogY29weUN1cnNvci5w
bmcgKi87IH07CiAJCTQ2NEVBMjczMEI4QTM1MEIwMEE4RTZFMyAvKiBjcm9zc0hhaXJDdXJzb3Iu
cG5nIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjRF
QTI3MTBCOEEzNTBCMDBBOEU2RTMgLyogY3Jvc3NIYWlyQ3Vyc29yLnBuZyAqLzsgfTsKIAkJNDY0
RUEyNzQwQjhBMzUwQjAwQThFNkUzIC8qIG5vdEFsbG93ZWRDdXJzb3IucG5nIGluIFJlc291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjRFQTI3MjBCOEEzNTBCMDBB
OEU2RTMgLyogbm90QWxsb3dlZEN1cnNvci5wbmcgKi87IH07CkBAIC03NTk4LDYgKzc1OTksNyBA
QAogCQk0NDlCMTlGMzBGQTcyRUNFMDAxNUNBNEEgLyogSFRNTFBhcnNlclF1aXJrcy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIVE1MUGFyc2VyUXVpcmtzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0QTI4QUFCMTJERkI4QUMwMEFFOTIzQiAvKiBNYXRoTUxF
bGVtZW50RmFjdG9yeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYXRoTUxF
bGVtZW50RmFjdG9yeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NEEyOEFBRTEy
REZCOEJGMDBBRTkyM0IgLyogTWF0aE1MTmFtZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gTWF0aE1MTmFtZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDVC
QUMyQUYxMzYwQkJBQjAwNURBMjU4IC8qIEljb25VUkwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gSWNvblVSTC5oOyBwYXRoID0gZG9tL0ljb25VUkwuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNDYxNEExRkQwQjIzQThENjAwNDQ2RTFDIC8qIGNvcHlDdXJzb3Iu
cG5nICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gaW1h
Z2UucG5nOyBwYXRoID0gY29weUN1cnNvci5wbmc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQ2NEVBMjcxMEI4QTM1MEIwMEE4RTZFMyAvKiBjcm9zc0hhaXJDdXJzb3IucG5nICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gaW1hZ2UucG5nOyBw
YXRoID0gY3Jvc3NIYWlyQ3Vyc29yLnBuZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDY0RUEyNzIwQjhBMzUwQjAwQThFNkUzIC8qIG5vdEFsbG93ZWRDdXJzb3IucG5nICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gaW1hZ2UucG5nOyBwYXRo
ID0gbm90QWxsb3dlZEN1cnNvci5wbmc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0x
MjczMyw2ICsxMjczNSw3IEBACiAJCTA4NjdENjkxRkU4NDAyOEZDMDJBQUMwNyAvKiBXZWJLaXQg
Ki8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTQ1QkFDMkFG
MTM2MEJCQUIwMDVEQTI1OCAvKiBJY29uVVJMLmggKi8sCiAJCQkJNzgxNzU1ODUxMzY1QTFCMDAw
OTNCRTJFIC8qIERhdGFUcmFuc2Zlckl0ZW1zLmNwcCAqLywKIAkJCQk2NUM5N0FGMjA4RUE5MDg4
MDBBQ0QyNzMgLyogY29uZmlnLmggKi8sCiAJCQkJRURFQzk4MDIwQUVEN0UxNzAwNTkxMzdGIC8q
IFdlYkNvcmVQcmVmaXguaCAqLywKQEAgLTIzMDcxLDYgKzIzMDc0LDcgQEAKIAkJCQk5M0YxOTlF
RDA4MjQ1RTU5MDAxRTlBQkMgLyogWFNMVFByb2Nlc3Nvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
RTFCRTUxMkUwQ0Y2QzUxMjAwMkVBOTU5IC8qIFhTTFRVbmljb2RlU29ydC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJOTc3RTJFMEYxMkYwRkM5QzAwQzEzMzc5IC8qIFhTU0ZpbHRlci5oIGluIEhlYWRl
cnMgKi8sCisJCQkJNDVCQUMyQjAxMzYwQkJBQjAwNURBMjU4IC8qIEljb25VUkwuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTA4NkJCRDBGMTM2MDM5QzIwMDhCMTVEOCAvKiBHbHlwaC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMDg3M0I4NkIxMzYwNjRFQTAwQTUyMkMyIC8qIEdseXBoUGFnZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMDg3RTBBRjcxMzYwNkQwQjAwRkE0QkE4IC8qIFNWR0dseXBoLmggaW4g
SGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkocmV2aXNpb24gODQ5NjUp
CisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
NDQsNiArMzQ0LDI3IEBAIHN0YXRpYyBib29sIGRpc2FibGVSYW5nZU11dGF0aW9uKFBhZ2UqIHAK
ICNlbmRpZgogfQogCisvLyBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgZ2l2ZW4gdHlwZSwgMCBp
cyByZXR1cm5lZCBpZiB0aGUgdHlwZSBpcyBpbnZhbGlkLgorc3RhdGljIHNpemVfdCBnZXRJY29u
SW5kZXgoSWNvblR5cGUgdHlwZSkgeworICAgIHNpemVfdCBpbmRleCA9IDA7CisgICAgc3dpdGNo
KHR5cGUpIHsKKyAgICAgICAgY2FzZSBGYXZpY29uOgorICAgICAgICAgICAgaW5kZXggPSAwOwor
ICAgICAgICAgICAgYnJlYWs7CisjaWYgRU5BQkxFKFRPVUNIX0lDT05fTE9BRElORykKKyAgICAg
ICAgY2FzZSBUb3VjaFByZWNvbXBvc2VkSWNvbjoKKyAgICAgICAgICAgIGluZGV4ID0gMTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFRvdWNoSWNvbjoKKyAgICAgICAgICAgIGlu
ZGV4ID0gMjsKKyAgICAgICAgICAgIGJyZWFrOworI2VuZGlmCisgICAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisgICAgcmV0dXJuIGluZGV4
OworfQorCiBzdGF0aWMgSGFzaFNldDxEb2N1bWVudCo+KiBkb2N1bWVudHNUaGF0TmVlZFN0eWxl
UmVjYWxjID0gMDsKIAogY2xhc3MgRG9jdW1lbnRXZWFrUmVmZXJlbmNlIDogcHVibGljIFRocmVh
ZFNhZmVSZWZDb3VudGVkPERvY3VtZW50V2Vha1JlZmVyZW5jZT4gewpAQCAtNDM2OSwxNSArNDM5
MCwyNiBAQCB1bnNpZ25lZCBGb3JtRWxlbWVudEtleUhhc2g6Omhhc2goY29uc3QgCiAgICAgcmV0
dXJuIFN0cmluZ0hhc2hlcjo6aGFzaE1lbW9yeTxzaXplb2YoRm9ybUVsZW1lbnRLZXkpPigma2V5
KTsKIH0KIAotdm9pZCBEb2N1bWVudDo6c2V0SWNvblVSTChjb25zdCBTdHJpbmcmIGljb25VUkws
IGNvbnN0IFN0cmluZyYgdHlwZSkKK0ljb25VUkwgRG9jdW1lbnQ6Omljb25VUkwoSWNvblR5cGUg
aWNvblR5cGUpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faWNvblVSTHNbZ2V0SWNvbkluZGV4KGlj
b25UeXBlKV07Cit9CisKK3ZvaWQgRG9jdW1lbnQ6OnNldEljb25VUkwoY29uc3QgU3RyaW5nJiB1
cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEljb25UeXBlIGljb25UeXBlKQogewotICAgIC8v
IEZJWE1FIC0gPHJkYXI6Ly9wcm9ibGVtLzQ3Mjc2NDU+IC0gQXQgc29tZSBwb2ludCBpbiB0aGUg
ZnV0dXJlLCB3ZSBtaWdodCBhY3R1YWxseSBob25vciB0aGUgInR5cGUiIAotICAgIGlmIChtX2lj
b25VUkwuaXNFbXB0eSgpKQotICAgICAgICBtX2ljb25VUkwgPSBpY29uVVJMOwotICAgIGVsc2Ug
aWYgKCF0eXBlLmlzRW1wdHkoKSkKLSAgICAgICAgbV9pY29uVVJMID0gaWNvblVSTDsKKyAgICAv
LyBGSVhNRSAtIDxyZGFyOi8vcHJvYmxlbS80NzI3NjQ1PiAtIEF0IHNvbWUgcG9pbnQgaW4gdGhl
IGZ1dHVyZSwgd2UgbWlnaHQgYWN0dWFsbHkgaG9ub3IgdGhlICJtaW1lVHlwZSIKKyAgICBJY29u
VVJMIG5ld1VSTCAoS1VSTChQYXJzZWRVUkxTdHJpbmcsIHVybCksIGljb25UeXBlKTsKKyAgICBp
ZiAoIWljb25VUkwoaWNvblR5cGUpLm1faWNvblVSTC5pc1ZhbGlkKCkpCisgICAgICAgIHNldElj
b25VUkwobmV3VVJMKTsKKyAgICBlbHNlIGlmICghbWltZVR5cGUuaXNFbXB0eSgpKQorICAgICAg
ICBzZXRJY29uVVJMKG5ld1VSTCk7CiAgICAgaWYgKEZyYW1lKiBmID0gZnJhbWUoKSkKLSAgICAg
ICAgZi0+bG9hZGVyKCktPnNldEljb25VUkwobV9pY29uVVJMKTsKKyAgICAgICAgZi0+bG9hZGVy
KCktPnNldEljb25VUkwobmV3VVJMKTsKK30KKwordm9pZCBEb2N1bWVudDo6c2V0SWNvblVSTChj
b25zdCBJY29uVVJMJiBpY29uVVJMKQoreworICAgIG1faWNvblVSTHNbZ2V0SWNvbkluZGV4KGlj
b25VUkwubV9pY29uVHlwZSldID0gaWNvblVSTDsKIH0KIAogdm9pZCBEb2N1bWVudDo6cmVnaXN0
ZXJGb3JtRWxlbWVudFdpdGhGb3JtQXR0cmlidXRlKEZvcm1Bc3NvY2lhdGVkRWxlbWVudCogZWxl
bWVudCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCShyZXZpc2lvbiA4NDk2NSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBA
CiAjaW5jbHVkZSAiQ29sb3IuaCIKICNpbmNsdWRlICJET01UaW1lU3RhbXAuaCIKICNpbmNsdWRl
ICJEb2N1bWVudFRpbWluZy5oIgorI2luY2x1ZGUgIkljb25VUkwuaCIKICNpbmNsdWRlICJRdWFs
aWZpZWROYW1lLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1
ZGUgIlN0cmluZ1dpdGhEaXJlY3Rpb24uaCIKQEAgLTkxOCw4ICs5MTksOSBAQCBwdWJsaWM6CiAg
ICAgCiAgICAgdm9pZCBzZXRIYXNOb2Rlc1dpdGhQbGFjZWhvbGRlclN0eWxlKCkgeyBtX2hhc05v
ZGVzV2l0aFBsYWNlaG9sZGVyU3R5bGUgPSB0cnVlOyB9CiAKLSAgICBjb25zdCBTdHJpbmcmIGlj
b25VUkwoKSBjb25zdCB7IHJldHVybiBtX2ljb25VUkw7IH0KLSAgICB2b2lkIHNldEljb25VUkwo
Y29uc3QgU3RyaW5nJiBpY29uVVJMLCBjb25zdCBTdHJpbmcmIHR5cGUpOworICAgIEljb25VUkwg
aWNvblVSTChJY29uVHlwZSBpY29uVHlwZSkgY29uc3Q7CisgICAgdm9pZCBzZXRJY29uVVJMKGNv
bnN0IFN0cmluZyYgaWNvblVSTCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgSWNvblR5cGUgaWNv
blR5cGUpOworICAgIHZvaWQgc2V0SWNvblVSTChjb25zdCBJY29uVVJMJiBpY29uVVJMKTsKIAog
ICAgIHZvaWQgc2V0VXNlU2VjdXJlS2V5Ym9hcmRFbnRyeVdoZW5BY3RpdmUoYm9vbCk7CiAgICAg
Ym9vbCB1c2VTZWN1cmVLZXlib2FyZEVudHJ5V2hlbkFjdGl2ZSgpIGNvbnN0OwpAQCAtMTMzMyw4
ICsxMzM1LDggQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgbV9jcmVhdGVSZW5kZXJlcnM7CiAgICAg
Ym9vbCBtX2luUGFnZUNhY2hlOwotICAgIFN0cmluZyBtX2ljb25VUkw7Ci0gICAgCisgICAgSWNv
blVSTCBtX2ljb25VUkxzW0lDT05fQ09VTlRdOworCiAgICAgSGFzaFNldDxFbGVtZW50Kj4gbV9k
b2N1bWVudEFjdGl2YXRpb25DYWxsYmFja0VsZW1lbnRzOwogICAgIEhhc2hTZXQ8RWxlbWVudCo+
IG1fbWVkaWFWb2x1bWVDYWxsYmFja0VsZW1lbnRzOwogICAgIEhhc2hTZXQ8RWxlbWVudCo+IG1f
cHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2VkRWxlbWVudHM7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9kb20vSWNvblVSTC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9JY29uVVJM
LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vSWNvblVSTC5oCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDY5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
KyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBJY29uVVJMX2gKKyNkZWZpbmUgSWNvblVSTF9o
CisKKyNpbmNsdWRlICJLVVJMLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworI2lmIEVOQUJM
RShUT1VDSF9JQ09OX0xPQURJTkcpCisjZGVmaW5lIElDT05fQ09VTlQgMworI2Vsc2UKKyNkZWZp
bmUgSUNPTl9DT1VOVCAxCisjZW5kaWYKKworZW51bSBJY29uVHlwZSB7CisgICAgSW52YWxpZElj
b24gPSAwLAorICAgIEZhdmljb24gPSAxLAorICAgIFRvdWNoSWNvbiA9IDEgPDwgMSwKKyAgICBU
b3VjaFByZWNvbXBvc2VkSWNvbiA9IDEgPDwgMgorfTsKKworc3RydWN0IEljb25VUkwgeworICAg
IEljb25UeXBlIG1faWNvblR5cGU7CisgICAgS1VSTCBtX2ljb25VUkw7CisKKyAgICBJY29uVVJM
KCkKKyAgICAgICAgOiBtX2ljb25UeXBlKEludmFsaWRJY29uKQorICAgIHsKKyAgICB9CisKKyAg
ICBJY29uVVJMKGNvbnN0IEtVUkwmIHVybCwgSWNvblR5cGUgdHlwZSkKKyAgICAgICAgOiBtX2lj
b25UeXBlKHR5cGUpCisgICAgICAgICwgbV9pY29uVVJMKHVybCkKKyAgICB7CisgICAgfQorfTsK
KworfQorCisjZW5kaWYgIC8vIEljb25VUkxfaF9oCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3Vy
Y2UvV2ViQ29yZS9kb20vSWNvblVSTC5oCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjplb2wtc3R5bGUK
ICAgKyBMRgoKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAJKHJl
dmlzaW9uIDg0OTY1KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xNTksNyArMTU5LDcgQEAgdm9pZCBIVE1MTGlua0VsZW1lbnQ6
OnBhcnNlTWFwcGVkQXR0cmlidQogdm9pZCBIVE1MTGlua0VsZW1lbnQ6OnRva2VuaXplUmVsQXR0
cmlidXRlKGNvbnN0IEF0b21pY1N0cmluZyYgcmVsLCBSZWxBdHRyaWJ1dGUmIHJlbEF0dHJpYnV0
ZSkKIHsKICAgICByZWxBdHRyaWJ1dGUubV9pc1N0eWxlU2hlZXQgPSBmYWxzZTsKLSAgICByZWxB
dHRyaWJ1dGUubV9pc0ljb24gPSBmYWxzZTsKKyAgICByZWxBdHRyaWJ1dGUubV9pY29uVHlwZSA9
IEludmFsaWRJY29uOwogICAgIHJlbEF0dHJpYnV0ZS5tX2lzQWx0ZXJuYXRlID0gZmFsc2U7CiAg
ICAgcmVsQXR0cmlidXRlLm1faXNETlNQcmVmZXRjaCA9IGZhbHNlOwogI2lmIEVOQUJMRShMSU5L
X1BSRUZFVENIKQpAQCAtMTY5LDcgKzE2OSwxMyBAQCB2b2lkIEhUTUxMaW5rRWxlbWVudDo6dG9r
ZW5pemVSZWxBdHRyaWJ1CiAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHJlbCwgInN0eWxlc2hl
ZXQiKSkKICAgICAgICAgcmVsQXR0cmlidXRlLm1faXNTdHlsZVNoZWV0ID0gdHJ1ZTsKICAgICBl
bHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShyZWwsICJpY29uIikgfHwgZXF1YWxJZ25vcmluZ0Nh
c2UocmVsLCAic2hvcnRjdXQgaWNvbiIpKQotICAgICAgICByZWxBdHRyaWJ1dGUubV9pc0ljb24g
PSB0cnVlOworICAgICAgICByZWxBdHRyaWJ1dGUubV9pY29uVHlwZSA9IEZhdmljb247CisjaWYg
RU5BQkxFKFRPVUNIX0lDT05fTE9BRElORykKKyAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2Fz
ZShyZWwsICJhcHBsZS10b3VjaC1pY29uIikpCisgICAgICAgIHJlbEF0dHJpYnV0ZS5tX2ljb25U
eXBlID0gVG91Y2hJY29uOworICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHJlbCwgImFw
cGxlLXRvdWNoLWljb24tcHJlY29tcG9zZWQiKSkKKyAgICAgICAgcmVsQXR0cmlidXRlLm1faWNv
blR5cGUgPSBUb3VjaFByZWNvbXBvc2VkSWNvbjsKKyNlbmRpZgogICAgIGVsc2UgaWYgKGVxdWFs
SWdub3JpbmdDYXNlKHJlbCwgImRucy1wcmVmZXRjaCIpKQogICAgICAgICByZWxBdHRyaWJ1dGUu
bV9pc0ROU1ByZWZldGNoID0gdHJ1ZTsKICAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShy
ZWwsICJhbHRlcm5hdGUgc3R5bGVzaGVldCIpIHx8IGVxdWFsSWdub3JpbmdDYXNlKHJlbCwgInN0
eWxlc2hlZXQgYWx0ZXJuYXRlIikpIHsKQEAgLTE4OCw3ICsxOTQsMTMgQEAgdm9pZCBIVE1MTGlu
a0VsZW1lbnQ6OnRva2VuaXplUmVsQXR0cmlidQogICAgICAgICAgICAgZWxzZSBpZiAoZXF1YWxJ
Z25vcmluZ0Nhc2UoKml0LCAiYWx0ZXJuYXRlIikpCiAgICAgICAgICAgICAgICAgcmVsQXR0cmli
dXRlLm1faXNBbHRlcm5hdGUgPSB0cnVlOwogICAgICAgICAgICAgZWxzZSBpZiAoZXF1YWxJZ25v
cmluZ0Nhc2UoKml0LCAiaWNvbiIpKQotICAgICAgICAgICAgICAgIHJlbEF0dHJpYnV0ZS5tX2lz
SWNvbiA9IHRydWU7CisgICAgICAgICAgICAgICAgcmVsQXR0cmlidXRlLm1faWNvblR5cGUgPSBG
YXZpY29uOworI2lmIEVOQUJMRShUT1VDSF9JQ09OX0xPQURJTkcpCisgICAgICAgICAgICBlbHNl
IGlmIChlcXVhbElnbm9yaW5nQ2FzZSgqaXQsICJhcHBsZS10b3VjaC1pY29uIikpCisgICAgICAg
ICAgICAgICAgcmVsQXR0cmlidXRlLm1faWNvblR5cGUgPSBUb3VjaEljb247CisgICAgICAgICAg
ICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZSgqaXQsICJhcHBsZS10b3VjaC1pY29uLXByZWNv
bXBvc2VkIikpCisgICAgICAgICAgICAgICAgcmVsQXR0cmlidXRlLm1faWNvblR5cGUgPSBUb3Vj
aFByZWNvbXBvc2VkSWNvbjsKKyNlbmRpZgogI2lmIEVOQUJMRShMSU5LX1BSRUZFVENIKQogICAg
ICAgICAgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoKml0LCAicHJlZmV0Y2giKSkKICAg
ICAgICAgICAgICAgcmVsQXR0cmlidXRlLm1faXNMaW5rUHJlZmV0Y2ggPSB0cnVlOwpAQCAtMjIx
LDEwICsyMzMsMTAgQEAgdm9pZCBIVE1MTGlua0VsZW1lbnQ6OnByb2Nlc3MoKQogCiAgICAgLy8g
SUUgZXh0ZW5zaW9uOiBsb2NhdGlvbiBvZiBzbWFsbCBpY29uIGZvciBsb2NhdGlvbmJhciAvIGJv
b2ttYXJrcwogICAgIC8vIFdlJ2xsIHJlY29yZCB0aGlzIFVSTCBwZXIgZG9jdW1lbnQsIGV2ZW4g
aWYgd2UgbGF0ZXIgb25seSB1c2UgaXQgaW4gdG9wIGxldmVsIGZyYW1lcwotICAgIGlmIChtX3Jl
bEF0dHJpYnV0ZS5tX2lzSWNvbiAmJiBtX3VybC5pc1ZhbGlkKCkgJiYgIW1fdXJsLmlzRW1wdHko
KSkgeworICAgIGlmIChtX3JlbEF0dHJpYnV0ZS5tX2ljb25UeXBlICE9IEludmFsaWRJY29uICYm
IG1fdXJsLmlzVmFsaWQoKSAmJiAhbV91cmwuaXNFbXB0eSgpKSB7CiAgICAgICAgIGlmICghY2hl
Y2tCZWZvcmVMb2FkRXZlbnQoKSkgCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGRvY3Vt
ZW50KCktPnNldEljb25VUkwobV91cmwuc3RyaW5nKCksIHR5cGUpOworICAgICAgICBkb2N1bWVu
dCgpLT5zZXRJY29uVVJMKG1fdXJsLnN0cmluZygpLCB0eXBlLCBtX3JlbEF0dHJpYnV0ZS5tX2lj
b25UeXBlKTsKICAgICB9CiAKICAgICBpZiAobV9yZWxBdHRyaWJ1dGUubV9pc0ROU1ByZWZldGNo
KSB7CkBAIC00NzIsNyArNDg0LDcgQEAgdm9pZCBIVE1MTGlua0VsZW1lbnQ6OmFkZFN1YnJlc291
cmNlQXR0cgogICAgIEhUTUxFbGVtZW50OjphZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHModXJs
cyk7CiAKICAgICAvLyBGYXZpY29ucyBhcmUgaGFuZGxlZCBieSBhIHNwZWNpYWwgY2FzZSBpbiBM
ZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoKQotICAgIGlmIChtX3JlbEF0dHJpYnV0ZS5tX2lzSWNv
bikKKyAgICBpZiAobV9yZWxBdHRyaWJ1dGUubV9pY29uVHlwZSAhPSBJbnZhbGlkSWNvbikKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCFtX3JlbEF0dHJpYnV0ZS5tX2lzU3R5bGVTaGVldCkK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuaAkocmV2aXNpb24gODQ5NjUp
CisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VDbGllbnQuaCIKICNp
bmNsdWRlICJDYWNoZWRSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgIkhUTUxFbGVtZW50Lmgi
CisjaW5jbHVkZSAiSWNvblVSTC5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKQEAgLTM5LDcgKzQwLDcgQEAgY2xhc3MgSFRNTExpbmtFbGVtZW50IDogcHVibGlj
IEhUTUxFbGVtZQogcHVibGljOgogICAgIHN0cnVjdCBSZWxBdHRyaWJ1dGUgewogICAgICAgICBi
b29sIG1faXNTdHlsZVNoZWV0OwotICAgICAgICBib29sIG1faXNJY29uOworICAgICAgICBJY29u
VHlwZSBtX2ljb25UeXBlOwogICAgICAgICBib29sIG1faXNBbHRlcm5hdGU7CiAgICAgICAgIGJv
b2wgbV9pc0ROU1ByZWZldGNoOwogI2lmIEVOQUJMRShMSU5LX1BSRUZFVENIKQpAQCAtNDksNyAr
NTAsNyBAQCBwdWJsaWM6CiAKICAgICAgICAgUmVsQXR0cmlidXRlKCkKICAgICAgICAgICAgIDog
bV9pc1N0eWxlU2hlZXQoZmFsc2UpCi0gICAgICAgICAgICAsIG1faXNJY29uKGZhbHNlKQorICAg
ICAgICAgICAgLCBtX2ljb25UeXBlKEludmFsaWRJY29uKQogICAgICAgICAgICAgLCBtX2lzQWx0
ZXJuYXRlKGZhbHNlKQogICAgICAgICAgICAgLCBtX2lzRE5TUHJlZmV0Y2goZmFsc2UpCiAjaWYg
RU5BQkxFKExJTktfUFJFRkVUQ0gpCkBAIC03Niw3ICs3Nyw2IEBAIHB1YmxpYzoKIAogICAgIGJv
b2wgaXNEaXNhYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZGlzYWJsZWRTdGF0ZSA9PSBEaXNhYmxl
ZDsgfQogICAgIGJvb2wgaXNFbmFibGVkVmlhU2NyaXB0KCkgY29uc3QgeyByZXR1cm4gbV9kaXNh
YmxlZFN0YXRlID09IEVuYWJsZWRWaWFTY3JpcHQ7IH0KLSAgICBib29sIGlzSWNvbigpIGNvbnN0
IHsgcmV0dXJuIG1fcmVsQXR0cmlidXRlLm1faXNJY29uOyB9CiAgICAgYm9vbCBkaXNhYmxlZCgp
IGNvbnN0OwogICAgIHZvaWQgc2V0RGlzYWJsZWQoYm9vbCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNwcAkocmV2aXNpb24g
ODQ5NjUpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NSw3ICs5NSw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAg
ICAgIEhUTUxMaW5rRWxlbWVudDo6UmVsQXR0cmlidXRlIHJlbDsKICAgICAgICAgSFRNTExpbmtF
bGVtZW50Ojp0b2tlbml6ZVJlbEF0dHJpYnV0ZShhdHRyaWJ1dGVWYWx1ZSwgcmVsKTsKLSAgICAg
ICAgcmV0dXJuIHJlbC5tX2lzU3R5bGVTaGVldCAmJiAhcmVsLm1faXNBbHRlcm5hdGUgJiYgIXJl
bC5tX2lzSWNvbiAmJiAhcmVsLm1faXNETlNQcmVmZXRjaDsKKyAgICAgICAgcmV0dXJuIHJlbC5t
X2lzU3R5bGVTaGVldCAmJiAhcmVsLm1faXNBbHRlcm5hdGUgJiYgcmVsLm1faWNvblR5cGUgPT0g
SW52YWxpZEljb24gJiYgIXJlbC5tX2lzRE5TUHJlZmV0Y2g7CiAgICAgfQogCiAgICAgc3RhdGlj
IGJvb2wgbGlua01lZGlhQXR0cmlidXRlSXNTY3JlZW4oY29uc3QgU3RyaW5nJiBhdHRyaWJ1dGVW
YWx1ZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAkocmV2
aXNpb24gODQ5NjUpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC03OCw2ICs3OCwyNyBAQCBzdGF0aWMgdm9pZCBzZXRBbGxEZWZl
cnNMb2FkaW5nKGNvbnN0IFJlCiAgICAgICAgIGxvYWRlcnNDb3B5W2ldLT5zZXREZWZlcnNMb2Fk
aW5nKGRlZmVycyk7CiB9CiAKKy8vIFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBnaXZlbiB0eXBl
LCAwIGlzIHJldHVybmVkIGlmIHRoZSB0eXBlIGlzIGludmFsaWQuCitzdGF0aWMgc2l6ZV90IGdl
dEljb25JbmRleChJY29uVHlwZSB0eXBlKSB7CisgICAgc2l6ZV90IGluZGV4ID0gMDsKKyAgICBz
d2l0Y2godHlwZSkgeworICAgICAgICBjYXNlIEZhdmljb246CisgICAgICAgICAgICBpbmRleCA9
IDA7CisgICAgICAgICAgICBicmVhazsKKyNpZiBFTkFCTEUoVE9VQ0hfSUNPTl9MT0FESU5HKQor
ICAgICAgICBjYXNlIFRvdWNoUHJlY29tcG9zZWRJY29uOgorICAgICAgICAgICAgaW5kZXggPSAx
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgVG91Y2hJY29uOgorICAgICAgICAg
ICAgaW5kZXggPSAyOworICAgICAgICAgICAgYnJlYWs7CisjZW5kaWYKKyAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKyAgICByZXR1cm4g
aW5kZXg7Cit9CisKIERvY3VtZW50TG9hZGVyOjpEb2N1bWVudExvYWRlcihjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmIHJlcSwgY29uc3QgU3Vic3RpdHV0ZURhdGEmIHN1YnN0aXR1dGVEYXRhKQogICAg
IDogbV9kZWZlck1haW5SZXNvdXJjZURhdGFMb2FkKHRydWUpCiAgICAgLCBtX2ZyYW1lKDApCkBA
IC02NjEsMTQgKzY4MiwxOSBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpzZXRUaXRsZShjb25zdCBT
dHJpCiAgICAgfQogfQogCi12b2lkIERvY3VtZW50TG9hZGVyOjpzZXRJY29uVVJMKGNvbnN0IFN0
cmluZyYgaWNvblVSTCkKK0ljb25VUkwgRG9jdW1lbnRMb2FkZXI6Omljb25VUkwoSWNvblR5cGUg
aWNvblR5cGUpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faWNvblVSTHNbZ2V0SWNvbkluZGV4KGlj
b25UeXBlKV07Cit9CisKK3ZvaWQgRG9jdW1lbnRMb2FkZXI6OnNldEljb25VUkwoY29uc3QgSWNv
blVSTCYgdXJsKQogewotICAgIGlmIChpY29uVVJMLmlzRW1wdHkoKSkKKyAgICBpZiAodXJsLm1f
aWNvblVSTC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChtX3BhZ2VJY29u
VVJMICE9IGljb25VUkwpIHsKLSAgICAgICAgbV9wYWdlSWNvblVSTCA9IGljb25VUkw7Ci0gICAg
ICAgIGZyYW1lTG9hZGVyKCktPmRpZENoYW5nZUljb25zKHRoaXMpOworICAgIGlmIChpY29uVVJM
KHVybC5tX2ljb25UeXBlKS5tX2ljb25VUkwgIT0gdXJsLm1faWNvblVSTCkgeworICAgICAgICAg
ICAgbV9pY29uVVJMc1tnZXRJY29uSW5kZXgodXJsLm1faWNvblR5cGUpXSA9IHVybDsKKyAgICAg
ICAgZnJhbWVMb2FkZXIoKS0+ZGlkQ2hhbmdlSWNvbnModGhpcywgdXJsLm1faWNvblR5cGUpOwog
ICAgIH0KIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgJKHJl
dmlzaW9uIDg0OTY1KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJEb2N1bWVudExvYWRU
aW1pbmcuaCIKICNpbmNsdWRlICJEb2N1bWVudFdyaXRlci5oIgogI2luY2x1ZGUgIkljb25EYXRh
YmFzZUJhc2UuaCIKKyNpbmNsdWRlICJJY29uVVJMLmgiCiAjaW5jbHVkZSAiTmF2aWdhdGlvbkFj
dGlvbi5oIgogI2luY2x1ZGUgIlJlc291cmNlRXJyb3IuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJl
cXVlc3QuaCIKQEAgLTEyMyw3ICsxMjQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
IGJvb2wgaXNMb2FkaW5nSW5BUElTZW5zZSgpIGNvbnN0OwogICAgICAgICB2b2lkIHNldFByaW1h
cnlMb2FkQ29tcGxldGUoYm9vbCk7CiAgICAgICAgIHZvaWQgc2V0VGl0bGUoY29uc3QgU3RyaW5n
V2l0aERpcmVjdGlvbiYpOwotICAgICAgICB2b2lkIHNldEljb25VUkwoY29uc3QgU3RyaW5nJik7
CisgICAgICAgIHZvaWQgc2V0SWNvblVSTChjb25zdCBJY29uVVJMJik7CiAgICAgICAgIGNvbnN0
IFN0cmluZyYgb3ZlcnJpZGVFbmNvZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fb3ZlcnJpZGVFbmNv
ZGluZzsgfQogCiAjaWYgUExBVEZPUk0oTUFDKQpAQCAtMTcwLDcgKzE3MSw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogICAgICAgICB2b2lkIHN0b3BSZWNvcmRpbmdSZXNwb25zZXMoKTsKICAg
ICAgICAgY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYgdGl0bGUoKSBjb25zdCB7IHJldHVybiBt
X3BhZ2VUaXRsZTsgfQotICAgICAgICBjb25zdCBTdHJpbmcmIGljb25VUkwoKSBjb25zdCB7IHJl
dHVybiBtX3BhZ2VJY29uVVJMOyB9CisgICAgICAgIEljb25VUkwgaWNvblVSTChJY29uVHlwZSBp
Y29uVHlwZSkgY29uc3Q7CiAKICAgICAgICAgS1VSTCB1cmxGb3JIaXN0b3J5KCkgY29uc3Q7CiAg
ICAgICAgIGJvb2wgdXJsRm9ySGlzdG9yeVJlZmxlY3RzRmFpbHVyZSgpIGNvbnN0OwpAQCAtMzAw
LDcgKzMwMSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCBtX3dhc09ubG9h
ZEhhbmRsZWQ7CiAKICAgICAgICAgU3RyaW5nV2l0aERpcmVjdGlvbiBtX3BhZ2VUaXRsZTsKLSAg
ICAgICAgU3RyaW5nIG1fcGFnZUljb25VUkw7CisgICAgICAgIEljb25VUkwgbV9pY29uVVJMc1tJ
Q09OX0NPVU5UXTsKIAogICAgICAgICBTdHJpbmcgbV9vdmVycmlkZUVuY29kaW5nOwogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCShyZXZpc2lvbiA4NDk2NSkKKysrIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAkod29ya2luZyBjb3B5KQpAQCAtMjcx
LDcgKzI3MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZl
SWNvbigpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxM
b2FkKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0
IFN0cmluZ1dpdGhEaXJlY3Rpb24mKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRD
aGFuZ2VJY29ucygpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZUljb25z
KEljb25UeXBlKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDb21taXRMb2FkKCkg
eyB9CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9hZChjb25z
dCBSZXNvdXJjZUVycm9yJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbExv
YWQoY29uc3QgUmVzb3VyY2VFcnJvciYpIHsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJh
bWVMb2FkZXIuY3BwCShyZXZpc2lvbiA4NDk2NSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY5LDYgKzY5LDcgQEAKICNpbmNsdWRl
ICJIaXN0b3J5SXRlbS5oIgogI2luY2x1ZGUgIkljb25EYXRhYmFzZS5oIgogI2luY2x1ZGUgIklj
b25Mb2FkZXIuaCIKKyNpbmNsdWRlICJJY29uVVJMLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ29u
dHJvbGxlci5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1
ZGUgIkxvZ2dpbmcuaCIKQEAgLTQ2OCwxOCArNDY5LDUzIEBAIGJvb2wgRnJhbWVMb2FkZXI6OmNs
b3NlVVJMKCkKIAogS1VSTCBGcmFtZUxvYWRlcjo6aWNvblVSTCgpCiB7Ci0gICAgLy8gSWYgdGhp
cyBpc24ndCBhIHRvcCBsZXZlbCBmcmFtZSwgcmV0dXJuIG5vdGhpbmcKKyAgICBWZWN0b3I8SWNv
blVSTD4gdXJscyA9IGljb25VUkxzKEZhdmljb24pOworICAgIHJldHVybiB1cmxzLmlzRW1wdHko
KSA/IEtVUkwoKSA6IHVybHNbMF0ubV9pY29uVVJMOworfQorCitWZWN0b3I8SWNvblVSTD4gRnJh
bWVMb2FkZXI6Omljb25VUkxzKGludCBpY29uVHlwZXMpIHsKKyAgICBWZWN0b3I8SWNvblVSTD4g
aWNvblVSTHM7CisgICAgaWYgKGljb25UeXBlcyAmIEZhdmljb24gJiYgIWZpbGxJY29uVVJMKEZh
dmljb24sICZpY29uVVJMcykpCisgICAgICAgICAgICBpY29uVVJMcy5hcHBlbmQoZ2V0RGVmYXVs
dEljb25VUkwoRmF2aWNvbikpOworCisjaWYgRU5BQkxFKFRPVUNIX0lDT05fTE9BRElORykKKyAg
ICBib29sIGRpZEdvdFByZWNvbXBvc2VkSWNvbiA9IGZhbHNlOworICAgIGlmIChpY29uVHlwZXMg
JiBUb3VjaFByZWNvbXBvc2VkSWNvbikKKyAgICAgICAgZGlkR290UHJlY29tcG9zZWRJY29uID0g
ZmlsbEljb25VUkwoVG91Y2hQcmVjb21wb3NlZEljb24sICZpY29uVVJMcyk7CisKKyAgICBib29s
IGRpZEdvdFRvdWNoSWNvbiA9IGZhbHNlOworICAgIGlmIChpY29uVHlwZXMgJiBUb3VjaEljb24p
CisgICAgICAgIGRpZEdvdFRvdWNoSWNvbiA9IGZpbGxJY29uVVJMKFRvdWNoSWNvbiwgJmljb25V
UkxzKTsKKworICAgIC8vIE9ubHkgcmV0dXJuIHRoZSBkZWZhdWx0IHRvdWNoIGljb25zIHdoZW4g
dGhlIGJvdGggd2VyZSByZXF1aXJlZCBhbmQgbmVpdGhlciB3YXMgZ290dGVuLgorICAgIGlmIChp
Y29uVHlwZXMgJiBUb3VjaFByZWNvbXBvc2VkSWNvbiAmJiBpY29uVHlwZXMgJiBUb3VjaEljb24g
JiYgIWRpZEdvdFByZWNvbXBvc2VkSWNvbiAmJiAhZGlkR290VG91Y2hJY29uKSB7CisgICAgICAg
IGljb25VUkxzLmFwcGVuZChnZXREZWZhdWx0SWNvblVSTChUb3VjaFByZWNvbXBvc2VkSWNvbikp
OworICAgICAgICBpY29uVVJMcy5hcHBlbmQoZ2V0RGVmYXVsdEljb25VUkwoVG91Y2hJY29uKSk7
CisgICAgfQorI2VuZGlmCisgICAgcmV0dXJuIGljb25VUkxzOworfQorCitib29sIEZyYW1lTG9h
ZGVyOjpmaWxsSWNvblVSTChJY29uVHlwZSBpY29uVHlwZSwgVmVjdG9yPEljb25VUkw+KiBpY29u
VVJMcykgeworICAgIC8vIElmIHRoaXMgaXNuJ3QgYSB0b3AgbGV2ZWwgZnJhbWUsIHJldHVybgog
ICAgIGlmIChtX2ZyYW1lLT50cmVlKCkgJiYgbV9mcmFtZS0+dHJlZSgpLT5wYXJlbnQoKSkKLSAg
ICAgICAgcmV0dXJuIEtVUkwoKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8gSWYg
d2UgaGF2ZSBhbiBpY29uVVJMIGZyb20gYSBMaW5rIGVsZW1lbnQsIHJldHVybiB0aGF0Ci0gICAg
aWYgKCFtX2ZyYW1lLT5kb2N1bWVudCgpLT5pY29uVVJMKCkuaXNFbXB0eSgpKQotICAgICAgICBy
ZXR1cm4gS1VSTChQYXJzZWRVUkxTdHJpbmcsIG1fZnJhbWUtPmRvY3VtZW50KCktPmljb25VUkwo
KSk7CisgICAgSWNvblVSTCB1cmwgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT5pY29uVVJMKGljb25U
eXBlKTsKKyAgICBpZiAodXJsLm1faWNvblVSTC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIGljb25VUkxzLT5hcHBlbmQodXJsKTsKKworICAgIHJldHVybiB0cnVlOwor
fQogCitJY29uVVJMIEZyYW1lTG9hZGVyOjpnZXREZWZhdWx0SWNvblVSTChJY29uVHlwZSBpY29u
VHlwZSkgewogICAgIC8vIERvbid0IHJldHVybiBhIGZhdmljb24gaWNvblVSTCB1bmxlc3Mgd2Un
cmUgaHR0cCBvciBodHRwcwogICAgIEtVUkwgZG9jdW1lbnRVUkwgPSBtX2ZyYW1lLT5kb2N1bWVu
dCgpLT51cmwoKTsKICAgICBpZiAoIWRvY3VtZW50VVJMLnByb3RvY29sSW5IVFRQRmFtaWx5KCkp
Ci0gICAgICAgIHJldHVybiBLVVJMKCk7CisgICAgICAgIHJldHVybiBJY29uVVJMKCk7CiAKICAg
ICBLVVJMIHVybDsKICAgICBib29sIGNvdWxkU2V0UHJvdG9jb2wgPSB1cmwuc2V0UHJvdG9jb2wo
ZG9jdW1lbnRVUkwucHJvdG9jb2woKSk7CkBAIC00ODcsOCArNTIzLDE5IEBAIEtVUkwgRnJhbWVM
b2FkZXI6Omljb25VUkwoKQogICAgIHVybC5zZXRIb3N0KGRvY3VtZW50VVJMLmhvc3QoKSk7CiAg
ICAgaWYgKGRvY3VtZW50VVJMLmhhc1BvcnQoKSkKICAgICAgICAgdXJsLnNldFBvcnQoZG9jdW1l
bnRVUkwucG9ydCgpKTsKLSAgICB1cmwuc2V0UGF0aCgiL2Zhdmljb24uaWNvIik7Ci0gICAgcmV0
dXJuIHVybDsKKyAgICBpZiAoaWNvblR5cGUgPT0gRmF2aWNvbikgeworICAgICAgICB1cmwuc2V0
UGF0aCgiL2Zhdmljb24uaWNvIik7CisgICAgICAgIHJldHVybiBJY29uVVJMKEtVUkwoUGFyc2Vk
VVJMU3RyaW5nLCB1cmwpLCBGYXZpY29uKTsKKyNpZiBFTkFCTEUoVE9VQ0hfSUNPTl9MT0FESU5H
KQorICAgIH0gZWxzZSBpZiAoaWNvblR5cGUgPT0gVG91Y2hQcmVjb21wb3NlZEljb24pIHsKKyAg
ICAgICAgdXJsLnNldFBhdGgoIi9hcHBsZS10b3VjaC1pY29uLXByZWNvbXBvc2VkLnBuZyIpOwor
ICAgICAgICByZXR1cm4gSWNvblVSTChLVVJMKFBhcnNlZFVSTFN0cmluZywgdXJsKSwgVG91Y2hQ
cmVjb21wb3NlZEljb24pOworICAgIH0gZWxzZSBpZiAoaWNvblR5cGUgPT0gVG91Y2hJY29uKSB7
CisgICAgICAgIHVybC5zZXRQYXRoKCIvYXBwbGUtdG91Y2gtaWNvbi5wbmciKTsKKyAgICAgICAg
cmV0dXJuIEljb25VUkwoS1VSTChQYXJzZWRVUkxTdHJpbmcsIHVybCksIFRvdWNoSWNvbik7Cisj
ZW5kaWYKKyAgICB9CisgICAgcmV0dXJuIEljb25VUkwoKTsKIH0KIAogYm9vbCBGcmFtZUxvYWRl
cjo6ZGlkT3BlblVSTChjb25zdCBLVVJMJiB1cmwpCkBAIC0zMzg2LDcgKzM0MzMsNyBAQCB2b2lk
IEZyYW1lTG9hZGVyOjpzZXRUaXRsZShjb25zdCBTdHJpbmdXCiAgICAgZG9jdW1lbnRMb2FkZXIo
KS0+c2V0VGl0bGUodGl0bGUpOwogfQogCi12b2lkIEZyYW1lTG9hZGVyOjpzZXRJY29uVVJMKGNv
bnN0IFN0cmluZyYgaWNvblVSTCkKK3ZvaWQgRnJhbWVMb2FkZXI6OnNldEljb25VUkwoY29uc3Qg
SWNvblVSTCYgaWNvblVSTCkKIHsKICAgICBkb2N1bWVudExvYWRlcigpLT5zZXRJY29uVVJMKGlj
b25VUkwpOwogfQpAQCAtMzQ2NCwxMCArMzUxMSwxMCBAQCB2b2lkIEZyYW1lTG9hZGVyOjpkaWRD
aGFuZ2VUaXRsZShEb2N1bWVuCiAgICAgfQogfQogCi12b2lkIEZyYW1lTG9hZGVyOjpkaWRDaGFu
Z2VJY29ucyhEb2N1bWVudExvYWRlciogbG9hZGVyKQordm9pZCBGcmFtZUxvYWRlcjo6ZGlkQ2hh
bmdlSWNvbnMoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgSWNvblR5cGUgdHlwZSkKIHsKICAgICBp
ZiAobG9hZGVyID09IG1fZG9jdW1lbnRMb2FkZXIpCi0gICAgICAgIG1fY2xpZW50LT5kaXNwYXRj
aERpZENoYW5nZUljb25zKCk7CisgICAgICAgIG1fY2xpZW50LT5kaXNwYXRjaERpZENoYW5nZUlj
b25zKHR5cGUpOwogfQogCiB2b2lkIEZyYW1lTG9hZGVyOjpkaXNwYXRjaERpZENvbW1pdExvYWQo
KQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgJKHJldmlzaW9uIDg0OTY1KQor
KysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJGcmFtZUxvYWRlclR5cGVzLmgiCiAjaW5jbHVkZSAi
SGlzdG9yeUNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJJY29uRGF0YWJhc2VCYXNlLmgiCisjaW5j
bHVkZSAiSWNvblVSTC5oIgogI2luY2x1ZGUgIlBvbGljeUNoZWNrZXIuaCIKICNpbmNsdWRlICJS
ZXNvdXJjZUxvYWROb3RpZmllci5oIgogI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCkBAIC0xOTIs
NyArMTkzLDcgQEAgcHVibGljOgogICAgIGJvb2wgc3ViZnJhbWVJc0xvYWRpbmcoKSBjb25zdDsK
ICAgICB2b2lkIHdpbGxDaGFuZ2VUaXRsZShEb2N1bWVudExvYWRlciopOwogICAgIHZvaWQgZGlk
Q2hhbmdlVGl0bGUoRG9jdW1lbnRMb2FkZXIqKTsKLSAgICB2b2lkIGRpZENoYW5nZUljb25zKERv
Y3VtZW50TG9hZGVyKik7CisgICAgdm9pZCBkaWRDaGFuZ2VJY29ucyhEb2N1bWVudExvYWRlcios
IEljb25UeXBlKTsKIAogICAgIEZyYW1lTG9hZFR5cGUgbG9hZFR5cGUoKSBjb25zdDsKIApAQCAt
MjM0LDcgKzIzNSwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRFbmREb2N1bWVudCgpOwogICAg
IHZvaWQgd2lsbFNldEVuY29kaW5nKCk7CiAKKyAgICAvLyBSZXR1cm5zIGZhdmljb24uCiAgICAg
S1VSTCBpY29uVVJMKCk7CisKKyAgICAvLyBSZXR1cm5zIHRoZSBnaXZlbiBpY29uVHlwZXMnIElj
b25VUkxzLCBpY29uVHlwZXMgY291bGQgYmUgYW55IGNvbWJpbmF0aW9uIG9mIEljb25UeXBlLgor
ICAgIFZlY3RvcjxJY29uVVJMPiBpY29uVVJMcyhpbnQgaWNvblR5cGVzKTsKICAgICB2b2lkIGNv
bW1pdEljb25VUkxUb0ljb25EYXRhYmFzZShjb25zdCBLVVJMJik7CiAKICAgICBLVVJMIGJhc2VV
UkwoKSBjb25zdDsKQEAgLTI4NSw3ICsyOTAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjYW5jZWxB
bmRDbGVhcigpOwogCiAgICAgdm9pZCBzZXRUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9u
Jik7Ci0gICAgdm9pZCBzZXRJY29uVVJMKGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgc2V0SWNv
blVSTChjb25zdCBJY29uVVJMJik7CiAKICAgICB2b2lkIGNvbW1pdFByb3Zpc2lvbmFsTG9hZCgp
OwogICAgIGJvb2wgaXNMb2FkaW5nRnJvbUNhY2hlZFBhZ2UoKSBjb25zdCB7IHJldHVybiBtX2xv
YWRpbmdGcm9tQ2FjaGVkUGFnZTsgfQpAQCAtNDI5LDYgKzQzNCw5IEBAIHByaXZhdGU6CiAKICAg
ICB2b2lkIHVwZGF0ZVNhbmRib3hGbGFncygpOwogCisgICAgYm9vbCBmaWxsSWNvblVSTChJY29u
VHlwZSBpY29uVHlwZSwgVmVjdG9yPEljb25VUkw+KiBpY29uVVJMcyk7CisgICAgSWNvblVSTCBn
ZXREZWZhdWx0SWNvblVSTChJY29uVHlwZSBpY29uVHlwZSk7CisKICAgICBGcmFtZSogbV9mcmFt
ZTsKICAgICBGcmFtZUxvYWRlckNsaWVudCogbV9jbGllbnQ7CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCShyZXZpc2lvbiA4NDk2NSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
MCw2ICszMCw3IEBACiAjZGVmaW5lIEZyYW1lTG9hZGVyQ2xpZW50X2gKIAogI2luY2x1ZGUgIkZy
YW1lTG9hZGVyVHlwZXMuaCIKKyNpbmNsdWRlICJJY29uVVJMLmgiCiAjaW5jbHVkZSAiU2Nyb2xs
VHlwZXMuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KQEAgLTE0MSw3ICsxNDIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1
YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVJY29uKCkgPSAwOwogICAgICAgICB2aXJ0dWFsIHZv
aWQgZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpID0gMDsKICAgICAgICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24m
KSA9IDA7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZUljb25zKCkgPSAw
OworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucyhJY29uVHlwZSkg
PSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDb21taXRMb2FkKCkgPSAwOwog
ICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGYWlsUHJvdmlzaW9uYWxMb2FkKGNvbnN0
IFJlc291cmNlRXJyb3ImKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZh
aWxMb2FkKGNvbnN0IFJlc291cmNlRXJyb3ImKSA9IDA7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lv
biA4NDk2NSkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDE1IEBACis8PDw8PDw8IC5taW5lCisyMDExLTA0LTIyICBUYW8gQmFpICA8bWljaGFl
bGJhaUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgTmVlZCBhIHNob3J0IGRlc2NyaXB0aW9uIGFuZCBidWcgVVJMIChPT1BTISkK
KworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hE
aWRDaGFuZ2VJY29ucyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5oOgorCis9PT09PT09CiAyMDExLTA0LTI2ICBEYW4gQmVybnN0ZWlu
ICA8bWl0ekBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTWFyayBSb3dlLgpAQCAt
Mjk2LDYgKzMwOCw3IEBACiAgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnQuY3BwOgogICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OnNob3Vs
ZEludGVycnVwdEphdmFTY3JpcHQpOgogCis+Pj4+Pj4+IC5yODQ5MTcKIDIwMTEtMDQtMjIgIERh
biBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBTYW0g
V2VpbmlnLgpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAJKHJldmlzaW9u
IDg0OTY1KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxOCw3ICs0MTgsNyBAQCB2
b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJlCiAgICAgd2ViUGFnZS0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRSZWNlaXZlVGl0bGVGb3JGcmFtZShtX2ZyYW1l
LT5mcmFtZUlEKCksIHRpdGxlLnN0cmluZygpLCBJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdlRW5j
b2Rlcih1c2VyRGF0YS5nZXQoKSkpKTsKIH0KIAotdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6
ZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygpCit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNw
YXRjaERpZENoYW5nZUljb25zKFdlYkNvcmU6Okljb25UeXBlKQogewogICAgIG5vdEltcGxlbWVu
dGVkKCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCShyZXZpc2lvbiA4
NDk2NSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtODUsNyArODUsNyBAQCBwcml2YXRl
OgogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVJY29uKCk7CiAgICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoRGlkU3RhcnRQcm92aXNpb25hbExvYWQoKTsKICAgICB2aXJ0dWFsIHZv
aWQgZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgV2ViQ29yZTo6U3RyaW5nV2l0aERpcmVj
dGlvbiYpOwotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZUljb25zKCk7CisgICAg
dmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoV2ViQ29yZTo6SWNvblR5cGUpOwog
ICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENvbW1pdExvYWQoKTsKICAgICB2aXJ0dWFsIHZv
aWQgZGlzcGF0Y2hEaWRGYWlsUHJvdmlzaW9uYWxMb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
RXJyb3ImKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGYWlsTG9hZChjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZUVycm9yJik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkocmV2
aXNpb24gODQ5NjUpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDMzIEBACisKKzIwMTEtMDQtMjIgIFRhbyBCYWkgIDxtaWNoYWVs
YmFpQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBQb3B1bGF0ZSB0b3VjaC1pY29uIHVybCB0byBGcmFtZUxvYWRlckNsaWVudAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTkxNDMKKwor
ICAgICAgICBSZXNwZWN0ZWQgdGhlIGNoYW5nZSBvZiBGcmFtZUxvYWRlckNsaWVudC4KKyAgICAg
ICAgQWRkZWQgV2ViSWNvblVSTCBhbmQgV2ViSWNvblR5cGUgcmVzcG9uZGluZyB0aGUgbmV3IElj
b25VUkwgYW5kIEljb25UeXBlLgorICAgICAgICBTdXBwb3J0ZWQgdG8gZ2V0IHRoZSBtdWx0aXBs
ZSBpY29uIHVybHMuCisKKyAgICAgICAgKiBXZWJLaXQuZ3lwOgorICAgICAgICAqIHB1YmxpYy9X
ZWJGcmFtZS5oOgorICAgICAgICAqIHB1YmxpYy9XZWJGcmFtZUNsaWVudC5oOgorICAgICAgICAo
V2ViS2l0OjpXZWJGcmFtZUNsaWVudDo6ZGlkQ2hhbmdlSWNvbnMpOgorICAgICAgICAqIHB1Ymxp
Yy9XZWJJY29uVVJMLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJJY29uVVJMOjpXZWJJ
Y29uVVJMKToKKyAgICAgICAgKiBzcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnRJbXBsOjpkaXNwYXRjaERpZENoYW5nZUljb25z
KToKKyAgICAgICAgKiBzcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmg6CisgICAgICAgICogc3Jj
L1dlYkZyYW1lSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lSW1wbDo6ZmF2SWNv
blVSTCk6CisgICAgICAgICogc3JjL1dlYkZyYW1lSW1wbC5oOgorICAgICAgICAqIHNyYy9XZWJJ
Y29uVHlwZVV0aWxpdGllcy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJJY29uVHlw
ZVV0aWxpdGllczo6Q29udmVydFdlYkljb25UeXBlVG9JY29uVHlwZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYkljb25UeXBlVXRpbGl0aWVzOjpDb252ZXJ0SWNvblR5cGVUb1dlYkljb25UeXBlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViSWNvblR5cGVVdGlsaXRpZXM6OkNvbnZlcnRXZWJJY29uVHlw
ZXNUb0ljb25UeXBlcyk6CisgICAgICAgICogc3JjL1dlYkljb25UeXBlVXRpbGl0aWVzLmg6IEFk
ZGVkLgorCiAyMDExLTA0LTI2ICBFdmFuIE1hcnRpbiAgPGV2YW5AY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFVucmV2aWV3ZWQsIENocm9tZS9NYWMgYnVpbGQgZml4LgpAQCAtMTcxLDYgKzIwMSw3
IEBACiAgICAgICAgICogdGVzdHMvVHJhbnNwYXJlbmN5V2luVGVzdC5jcHA6CiAgICAgICAgIChX
ZWJDb3JlOjpURVNUKToKIAorPj4+Pj4+PiAucjg0OTE3CiAyMDExLTA0LTIyICBNaWtoYWlsIE5h
Z2Fub3YgIDxtbmFnYW5vdkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgUGF2
ZWwgRmVsZG1hbi4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAJKHJldmlzaW9uIDg0
OTY1KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCSh3b3JraW5nIGNvcHkp
CkBAIC0xODUsNiArMTg1LDcgQEAKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkhUVFBCb2R5
LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViSFRUUExvYWRJbmZvLmgnLAogICAgICAg
ICAgICAgICAgICdwdWJsaWMvV2ViSWNvbkxvYWRpbmdDb21wbGV0aW9uLmgnLAorICAgICAgICAg
ICAgICAgICdwdWJsaWMvV2ViSWNvblR5cGUuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9X
ZWJJbWFnZS5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkltYWdlRGVjb2Rlci5oJywK
ICAgICAgICAgICAgICAgICAncHVibGljL1dlYklEQkNhbGxiYWNrcy5oJywKQEAgLTQ3NSw2ICs0
NzYsOCBAQAogICAgICAgICAgICAgICAgICdzcmMvV2ViSGlzdG9yeUl0ZW0uY3BwJywKICAgICAg
ICAgICAgICAgICAnc3JjL1dlYkhUVFBCb2R5LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9X
ZWJIVFRQTG9hZEluZm8uY3BwJywKKyAgICAgICAgICAgICAgICAnc3JjL1dlYkljb25UeXBlVXRp
bGl0aWVzLmNwcCcsCisgICAgICAgICAgICAgICAgJ3NyYy9XZWJJY29uVHlwZVV0aWxpdGllcy5o
JywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkljb25Mb2FkaW5nQ29tcGxldGlvbkltcGwuY3Bw
JywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkljb25Mb2FkaW5nQ29tcGxldGlvbkltcGwuaCcs
CiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJJREJDYWxsYmFja3NJbXBsLmNwcCcsCkluZGV4OiBT
b3VyY2UvV2ViS2l0L2Nocm9taXVtL2ZlYXR1cmVzLmd5cGkKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9jaHJvbWl1bS9mZWF0dXJlcy5neXBpCShyZXZpc2lvbiA4NDk2NSkKKysrIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vZmVhdHVyZXMuZ3lwaQkod29ya2luZyBjb3B5KQpAQCAtODksNiAr
ODksNyBAQAogICAgICAgICAnRU5BQkxFX1NWR19GT1JFSUdOX09CSkVDVD0xJywKICAgICAgICAg
J0VOQUJMRV9TVkdfVVNFPTEnLAogICAgICAgICAnRU5BQkxFX1RPVUNIX0VWRU5UUz0xJywKKyAg
ICAgICAgJ0VOQUJMRV9UT1VDSF9JQ09OX0xPQURJTkc9MScsCiAgICAgICAgICdFTkFCTEVfVjhf
U0NSSVBUX0RFQlVHX1NFUlZFUj0xJywKICAgICAgICAgJ0VOQUJMRV9WSURFTz0xJywKICAgICAg
ICAgJ0VOQUJMRV9XRUJfQVVESU89MCcsCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJGcmFtZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYkZyYW1lLmgJKHJldmlzaW9uIDg0OTY1KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViRnJhbWUuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAogCiAj
aW5jbHVkZSAiV2ViQ2FudmFzLmgiCiAjaW5jbHVkZSAiV2ViRmlsZVN5c3RlbS5oIgorI2luY2x1
ZGUgIldlYkljb25VUkwuaCIKICNpbmNsdWRlICJXZWJOb2RlLmgiCiAjaW5jbHVkZSAiV2ViVVJM
LmgiCiAKQEAgLTEyOSw5ICsxMzAsOSBAQCBwdWJsaWM6CiAgICAgLy8gZGF0YVNvdXJjZSgpLT5y
ZXF1ZXN0KCkudXJsKCkuCiAgICAgdmlydHVhbCBXZWJVUkwgdXJsKCkgY29uc3QgPSAwOwogCi0g
ICAgLy8gVGhlIHVybCBvZiB0aGUgZmF2aWNvbiAoaWYgYW55KSBzcGVjaWZpZWQgYnkgdGhlIGRv
Y3VtZW50IGxvYWRlZCBpbgorICAgIC8vIFRoZSB1cmxzIG9mIHRoZSBmYXZpY29uIChpZiBhbnkp
IHNwZWNpZmllZCBieSB0aGUgZG9jdW1lbnQgbG9hZGVkIGluCiAgICAgLy8gdGhpcyBmcmFtZS4K
LSAgICB2aXJ0dWFsIFdlYlVSTCBmYXZJY29uVVJMKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwg
c3RkOjp2ZWN0b3I8V2ViSWNvblVSTD4gZmF2SWNvblVSTChpbnQpIGNvbnN0ID0gMDsKIAogICAg
IC8vIFRoZSB1cmwgb2YgdGhlIE9wZW5TZWFyY2ggRGVzcmlwdGlvbiBEb2N1bWVudCAoaWYgYW55
KSBzcGVjaWZpZWQgYnkKICAgICAvLyB0aGUgZG9jdW1lbnQgbG9hZGVkIGluIHRoaXMgZnJhbWUu
CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZUNsaWVudC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZyYW1lQ2xpZW50
LmgJKHJldmlzaW9uIDg0OTY1KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
RnJhbWVDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAogCiAjaW5jbHVk
ZSAiV2ViQ29tbW9uLmgiCiAjaW5jbHVkZSAiV2ViRmlsZVN5c3RlbS5oIgorI2luY2x1ZGUgIldl
Ykljb25VUkwuaCIKICNpbmNsdWRlICJXZWJOYXZpZ2F0aW9uUG9saWN5LmgiCiAjaW5jbHVkZSAi
V2ViTmF2aWdhdGlvblR5cGUuaCIKICNpbmNsdWRlICJXZWJTdG9yYWdlUXVvdGFUeXBlLmgiCkBA
IC0yMTUsNyArMjE2LDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIC8vIFRoZSBpY29ucyBmb3Ig
dGhlIHBhZ2UgaGF2ZSBjaGFuZ2VkLgotICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VJY29ucyhX
ZWJGcmFtZSopIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VJY29ucyhXZWJGcmFtZSos
IFdlYkljb25UeXBlKSB7IH0KIAogICAgIC8vIFRoZSBmcmFtZSdzIGRvY3VtZW50IGZpbmlzaGVk
IGxvYWRpbmcuCiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaERvY3VtZW50TG9hZChXZWJGcmFt
ZSopIHsgfQpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSWNvblVSTC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkljb25VUkwu
aAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkljb25V
UkwuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
CisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViSWNvblVSTF9oCisj
ZGVmaW5lIFdlYkljb25VUkxfaAorCisjaW5jbHVkZSAiV2ViVVJMLmgiCisKKyNpbmNsdWRlIDx2
ZWN0b3I+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitlbnVtIFdlYkljb25UeXBlIHsKKyAgICBJ
bnZhbGlkSWNvbiA9IDAsCisgICAgRmF2aWNvbiA9IDEsCisgICAgVG91Y2hJY29uID0gMSA8PCAx
LAorICAgIFRvdWNoUHJlY29tcG9zZWRJY29uID0gMSA8PCAyCit9OworCitzdHJ1Y3QgV2ViSWNv
blVSTCB7CisgICAgV2ViSWNvblVSTCgpCisgICAgICAgIDogbV9pY29uVHlwZShJbnZhbGlkSWNv
bikKKyAgICB7CisgICAgfQorCisgICAgV2ViSWNvblVSTChjb25zdCBXZWJVUkwmIHVybCwgV2Vi
SWNvblR5cGUgdHlwZSkKKyAgICAgICAgOiBtX2ljb25UeXBlKHR5cGUpCisgICAgICAgICwgbV9p
Y29uVVJMKHVybCkKKyAgICB7CisgICAgfQorCisgICAgV2ViSWNvblR5cGUgbV9pY29uVHlwZTsK
KyAgICBXZWJVUkwgbV9pY29uVVJMOworfTsKKworfQorCisjZW5kaWYgIC8vIFdlYkljb25VUkxf
aAoKUHJvcGVydHkgY2hhbmdlcyBvbjogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
SWNvblVSTC5oCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjplb2wtc3R5bGUKICAgKyBMRgoKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJ
bXBsLmNwcAkocmV2aXNpb24gODQ5NjUpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9G
cmFtZUxvYWRlckNsaWVudEltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MSw2ICs2MSw3IEBA
CiAjaW5jbHVkZSAiV2ViRm9ybUVsZW1lbnQuaCIKICNpbmNsdWRlICJXZWJGcmFtZUNsaWVudC5o
IgogI2luY2x1ZGUgIldlYkZyYW1lSW1wbC5oIgorI2luY2x1ZGUgIldlYkljb25UeXBlVXRpbGl0
aWVzLmgiCiAjaW5jbHVkZSAiV2ViS2l0LmgiCiAjaW5jbHVkZSAiV2ViS2l0Q2xpZW50LmgiCiAj
aW5jbHVkZSAiV2ViTWltZVJlZ2lzdHJ5LmgiCkBAIC03NDgsMTAgKzc0OSwxMCBAQCB2b2lkIEZy
YW1lTG9hZGVyQ2xpZW50SW1wbDo6ZGlzcGF0Y2hEaWRSCiAgICAgICAgIG1fd2ViRnJhbWUtPmNs
aWVudCgpLT5kaWRSZWNlaXZlVGl0bGUobV93ZWJGcmFtZSwgdGl0bGUuc3RyaW5nKCksIHRpdGxl
LmRpcmVjdGlvbigpID09IExUUiA/IFdlYlRleHREaXJlY3Rpb25MZWZ0VG9SaWdodCA6IFdlYlRl
eHREaXJlY3Rpb25SaWdodFRvTGVmdCk7CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRJbXBs
OjpkaXNwYXRjaERpZENoYW5nZUljb25zKCkKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRJbXBsOjpk
aXNwYXRjaERpZENoYW5nZUljb25zKFdlYkNvcmU6Okljb25UeXBlIHR5cGUpCiB7CiAgICAgaWYg
KG1fd2ViRnJhbWUtPmNsaWVudCgpKQotICAgICAgICBtX3dlYkZyYW1lLT5jbGllbnQoKS0+ZGlk
Q2hhbmdlSWNvbnMobV93ZWJGcmFtZSk7CisgICAgICAgIG1fd2ViRnJhbWUtPmNsaWVudCgpLT5k
aWRDaGFuZ2VJY29ucyhtX3dlYkZyYW1lLCBXZWJJY29uVHlwZVV0aWxpdGllczo6Q29udmVydElj
b25UeXBlVG9XZWJJY29uVHlwZSh0eXBlKSk7CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRJ
bXBsOjpkaXNwYXRjaERpZENvbW1pdExvYWQoKQpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmgJKHJldmlzaW9uIDg0OTY1KQor
KysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEwNSw3ICsxMDUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoRGlkUmVjZWl2ZUljb24oKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRT
dGFydFByb3Zpc2lvbmFsTG9hZCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2Vp
dmVUaXRsZShjb25zdCBXZWJDb3JlOjpTdHJpbmdXaXRoRGlyZWN0aW9uJik7Ci0gICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0
Y2hEaWRDaGFuZ2VJY29ucyhXZWJDb3JlOjpJY29uVHlwZSk7CiAgICAgdmlydHVhbCB2b2lkIGRp
c3BhdGNoRGlkQ29tbWl0TG9hZCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxQ
cm92aXNpb25hbExvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwogICAgIHZpcnR1
YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxMb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3Im
KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcAko
cmV2aXNpb24gODQ5NjUpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUlt
cGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAsNiArMTAwLDcgQEAKICNpbmNsdWRlICJIVE1M
TmFtZXMuaCIKICNpbmNsdWRlICJIaXN0b3J5SXRlbS5oIgogI2luY2x1ZGUgIkhpdFRlc3RSZXN1
bHQuaCIKKyNpbmNsdWRlICJJY29uVVJMLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ29udHJvbGxl
ci5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJwYWludGluZy9HcmFwaGljc0NvbnRl
eHRCdWlsZGVyLmgiCkBAIC0xMzcsNiArMTM4LDcgQEAKICNpbmNsdWRlICJXZWJGb3JtRWxlbWVu
dC5oIgogI2luY2x1ZGUgIldlYkZyYW1lQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViSGlzdG9yeUl0
ZW0uaCIKKyNpbmNsdWRlICJXZWJJY29uVHlwZVV0aWxpdGllcy5oIgogI2luY2x1ZGUgIldlYklu
cHV0RWxlbWVudC5oIgogI2luY2x1ZGUgIldlYk5vZGUuaCIKICNpbmNsdWRlICJXZWJQYXNzd29y
ZEF1dG9jb21wbGV0ZUxpc3RlbmVyLmgiCkBAIC01MTgsMTcgKzUyMCwyMSBAQCBXZWJVUkwgV2Vi
RnJhbWVJbXBsOjp1cmwoKSBjb25zdAogICAgIHJldHVybiBkcy0+cmVxdWVzdCgpLnVybCgpOwog
fQogCi1XZWJVUkwgV2ViRnJhbWVJbXBsOjpmYXZJY29uVVJMKCkgY29uc3QKK3N0ZDo6dmVjdG9y
PFdlYkljb25VUkw+IFdlYkZyYW1lSW1wbDo6ZmF2SWNvblVSTChpbnQgd2ViSWNvblR5cGVzKSBj
b25zdAogewogICAgIEZyYW1lTG9hZGVyKiBmcmFtZUxvYWRlciA9IG1fZnJhbWUtPmxvYWRlcigp
OworICAgIHN0ZDo6dmVjdG9yPFdlYkljb25VUkw+IHdlYkljb25VUkxzOworCiAgICAgLy8gVGhl
IFVSTCB0byB0aGUgZmF2aWNvbiBtYXkgYmUgaW4gdGhlIGhlYWRlci4gQXMgc3VjaCwgb25seQog
ICAgIC8vIGFzayB0aGUgbG9hZGVyIGZvciB0aGUgZmF2aWNvbiBpZiBpdCdzIGZpbmlzaGVkIGxv
YWRpbmcuCiAgICAgaWYgKGZyYW1lTG9hZGVyLT5zdGF0ZSgpID09IEZyYW1lU3RhdGVDb21wbGV0
ZSkgewotICAgICAgICBjb25zdCBLVVJMJiB1cmwgPSBmcmFtZUxvYWRlci0+aWNvblVSTCgpOwot
ICAgICAgICBpZiAoIXVybC5pc0VtcHR5KCkpCi0gICAgICAgICAgICByZXR1cm4gdXJsOworICAg
ICAgICBpbnQgaWNvblR5cGVzID0gV2ViSWNvblR5cGVVdGlsaXRpZXM6OkNvbnZlcnRXZWJJY29u
VHlwZXNUb0ljb25UeXBlcyh3ZWJJY29uVHlwZXMpOworICAgICAgICBXVEY6OlZlY3RvcjxXZWJD
b3JlOjpJY29uVVJMPiBpY29uVVJMcyA9IGZyYW1lTG9hZGVyLT5pY29uVVJMcyhpY29uVHlwZXMp
OworICAgICAgICBmb3Ioc2l6ZV90IGkgPSAwOyBpIDwgaWNvblVSTHMuc2l6ZSgpOyBpKyspIHsK
KyAgICAgICAgICAgIHdlYkljb25VUkxzLnB1c2hfYmFjayhXZWJJY29uVVJMKGljb25VUkxzW2ld
Lm1faWNvblVSTCwgV2ViSWNvblR5cGVVdGlsaXRpZXM6OkNvbnZlcnRJY29uVHlwZVRvV2ViSWNv
blR5cGUoaWNvblVSTHNbaV0ubV9pY29uVHlwZSkpKTsKKyAgICAgICAgfQogICAgIH0KLSAgICBy
ZXR1cm4gV2ViVVJMKCk7CisgICAgcmV0dXJuIHdlYkljb25VUkxzOwogfQogCiBXZWJVUkwgV2Vi
RnJhbWVJbXBsOjpvcGVuU2VhcmNoRGVzY3JpcHRpb25VUkwoKSBjb25zdApJbmRleDogU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmgJKHJldmlzaW9uIDg0OTY1KQorKysg
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmgJKHdvcmtpbmcgY29weSkK
QEAgLTY5LDcgKzY5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXROYW1lKGNvbnN0
IFdlYlN0cmluZyYpOwogICAgIHZpcnR1YWwgbG9uZyBsb25nIGlkZW50aWZpZXIoKSBjb25zdDsK
ICAgICB2aXJ0dWFsIFdlYlVSTCB1cmwoKSBjb25zdDsKLSAgICB2aXJ0dWFsIFdlYlVSTCBmYXZJ
Y29uVVJMKCkgY29uc3Q7CisgICAgdmlydHVhbCBzdGQ6OnZlY3RvcjxXZWJJY29uVVJMPiBmYXZJ
Y29uVVJMKGludCkgY29uc3Q7CiAgICAgdmlydHVhbCBXZWJVUkwgb3BlblNlYXJjaERlc2NyaXB0
aW9uVVJMKCkgY29uc3Q7CiAgICAgdmlydHVhbCBXZWJTdHJpbmcgZW5jb2RpbmcoKSBjb25zdDsK
ICAgICB2aXJ0dWFsIFdlYlNpemUgc2Nyb2xsT2Zmc2V0KCkgY29uc3Q7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJY29uVHlwZVV0aWxpdGllcy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSWNvblR5cGVVdGlsaXRpZXMuY3BwCShy
ZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSWNvblR5cGVVdGls
aXRpZXMuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDg4IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4K
KyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorCisjaW5jbHVkZSAiV2ViSWNvblR5cGVVdGlsaXRpZXMuaCIKKworbmFtZXNwYWNlIFdlYktp
dCB7CitXZWJDb3JlOjpJY29uVHlwZSBXZWJJY29uVHlwZVV0aWxpdGllczo6Q29udmVydFdlYklj
b25UeXBlVG9JY29uVHlwZShXZWJJY29uVHlwZSB3ZWJJY29uVHlwZSkKK3sKKyAgICBXZWJDb3Jl
OjpJY29uVHlwZSBpY29uVHlwZSA9IFdlYkNvcmU6OkludmFsaWRJY29uOworICAgIHN3aXRjaCh3
ZWJJY29uVHlwZSkgeworICAgICAgICBjYXNlIEZhdmljb246CisgICAgICAgICAgICBpY29uVHlw
ZSA9IFdlYkNvcmU6OkZhdmljb247CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBU
b3VjaEljb246CisgICAgICAgICAgICBpY29uVHlwZSA9IFdlYkNvcmU6OlRvdWNoSWNvbjsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFRvdWNoUHJlY29tcG9zZWRJY29uOgorICAg
ICAgICAgICAgaWNvblR5cGUgPSBXZWJDb3JlOjpUb3VjaFByZWNvbXBvc2VkSWNvbjsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgYnJlYWs7CisgICAg
fQorICAgIHJldHVybiBpY29uVHlwZTsKK30KKworV2ViSWNvblR5cGUgV2ViSWNvblR5cGVVdGls
aXRpZXM6OkNvbnZlcnRJY29uVHlwZVRvV2ViSWNvblR5cGUoV2ViQ29yZTo6SWNvblR5cGUgaWNv
blR5cGUpCit7CisgICAgV2ViSWNvblR5cGUgdHlwZSA9IEludmFsaWRJY29uOworICAgIHN3aXRj
aChpY29uVHlwZSkgeworICAgICAgICBjYXNlIFdlYkNvcmU6OkZhdmljb246CisgICAgICAgICAg
ICB0eXBlID0gRmF2aWNvbjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFdlYkNv
cmU6OlRvdWNoSWNvbjoKKyAgICAgICAgICAgIHR5cGUgPSBUb3VjaEljb247CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBXZWJDb3JlOjpUb3VjaFByZWNvbXBvc2VkSWNvbjoKKyAg
ICAgICAgICAgIHR5cGUgPSBUb3VjaFByZWNvbXBvc2VkSWNvbjsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgYnJlYWs7CisgICAgfQorICAgIHJldHVy
biB0eXBlOworfQorCitpbnQgV2ViSWNvblR5cGVVdGlsaXRpZXM6OkNvbnZlcnRXZWJJY29uVHlw
ZXNUb0ljb25UeXBlcyhpbnQgd2ViSWNvblR5cGVzKSB7CisgIGludCBpY29uVHlwZXMgPSAwOwor
ICBpZiAod2ViSWNvblR5cGVzICYgRmF2aWNvbikgeworICAgIGljb25UeXBlcyB8PSBXZWJDb3Jl
OjpGYXZpY29uOworICB9CisgIGlmICh3ZWJJY29uVHlwZXMgJiBUb3VjaEljb24pIHsKKyAgICBp
Y29uVHlwZXMgfD0gV2ViQ29yZTo6VG91Y2hJY29uOworICB9CisgIGlmICh3ZWJJY29uVHlwZXMg
JiBUb3VjaFByZWNvbXBvc2VkSWNvbikgeworICAgIGljb25UeXBlcyB8PSBXZWJDb3JlOjpUb3Vj
aFByZWNvbXBvc2VkSWNvbjsKKyAgfQorICByZXR1cm4gaWNvblR5cGVzOworfQorCit9CgpQcm9w
ZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJY29uVHlwZVV0
aWxpdGllcy5jcHAKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmVvbC1zdHlsZQogICArIExGCgpJbmRl
eDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSWNvblR5cGVVdGlsaXRpZXMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJY29uVHlwZVV0aWxpdGll
cy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSWNvblR5
cGVVdGlsaXRpZXMuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRp
b24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisg
KiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViSWNv
blR5cGVVdGlsaXRpZXNfaAorI2RlZmluZSBXZWJJY29uVHlwZVV0aWxpdGllc19oCisKKyNpbmNs
dWRlICJJY29uVVJMLmgiCisjaW5jbHVkZSAiV2ViSWNvblVSTC5oIgorCituYW1lc3BhY2UgV2Vi
S2l0IHsKKworY2xhc3MgV2ViSWNvblR5cGVVdGlsaXRpZXMgeworIHB1YmxpYzoKKyAgICBzdGF0
aWMgV2ViQ29yZTo6SWNvblR5cGUgQ29udmVydFdlYkljb25UeXBlVG9JY29uVHlwZShXZWJJY29u
VHlwZSk7CisgICAgc3RhdGljIFdlYkljb25UeXBlIENvbnZlcnRJY29uVHlwZVRvV2ViSWNvblR5
cGUoV2ViQ29yZTo6SWNvblR5cGUpOworICAgIHN0YXRpYyBpbnQgQ29udmVydFdlYkljb25UeXBl
c1RvSWNvblR5cGVzKGludCk7Cit9OworCit9CisKKyNlbmRpZiAvLyBXZWJJY29uVHlwZVV0aWxp
dGllc19oCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJJY29uVHlwZVV0aWxpdGllcy5oCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjplb2wtc3R5bGUKICAg
KyBMRgoKSW5kZXg6IFNvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cJKHJldmlzaW9uIDg0OTY1KQorKysgU291cmNlL1dl
YktpdC9lZmwvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTEt
MDQtMjIgIFRhbyBCYWkgIDxtaWNoYWVsYmFpQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQb3B1bGF0ZSB0b3VjaC1pY29uIHVy
bCB0byBGcmFtZUxvYWRlckNsaWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NTkxNDMKKworICAgICAgICBSZXNwZWN0IHRoZSBpbnRlcmZhY2UgY2hh
bmdlIGluIEZyYW1lTG9hZGVyQ2xpZW50CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFt
ZUxvYWRlckNsaWVudEVmbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVu
dEVmbDo6ZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucyk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
RnJhbWVMb2FkZXJDbGllbnRFZmwuaDoKKwogMjAxMS0wNC0yNSAgUnl1YW4gQ2hvaSAgPHJ5dWFu
LmNob2lAc2Ftc3VuZy5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQW50b25pbyBHb21lcy4K
SW5kZXg6IFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50
RWZsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9G
cmFtZUxvYWRlckNsaWVudEVmbC5jcHAJKHJldmlzaW9uIDg0OTY1KQorKysgU291cmNlL1dlYktp
dC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC01ODcsNyArNTg3LDcgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0
Y2hEaWRSZQogICAgIGV3a192aWV3X3RpdGxlX3NldChtX3ZpZXcsIGNzLmRhdGEoKSk7CiB9CiAK
LXZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoKQordm9p
ZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucyhXZWJDb3JlOjpJ
Y29uVHlwZSkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQpJbmRleDogU291cmNlL1dlYktp
dC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5o
CShyZXZpc2lvbiA4NDk2NSkKKysrIFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Zy
YW1lTG9hZGVyQ2xpZW50RWZsLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwMyw3ICsxMDMsNyBAQCBj
bGFzcyBGcmFtZUxvYWRlckNsaWVudEVmbCA6IHB1YmxpYyBGcmFtCiAgICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoRGlkUmVjZWl2ZUljb24oKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRT
dGFydFByb3Zpc2lvbmFsTG9hZCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2Vp
dmVUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJik7Ci0gICAgdmlydHVhbCB2b2lkIGRp
c3BhdGNoRGlkQ2hhbmdlSWNvbnMoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFu
Z2VJY29ucyhXZWJDb3JlOjpJY29uVHlwZSk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlk
Q29tbWl0TG9hZCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxQcm92aXNpb25h
bExvYWQoY29uc3QgUmVzb3VyY2VFcnJvciYpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERp
ZEZhaWxMb2FkKGNvbnN0IFJlc291cmNlRXJyb3ImKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvZ3Rr
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDg0OTY1KQorKysgU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTEtMDQtMjIgIFRhbyBCYWkgIDxtaWNoYWVsYmFpQGNo
cm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBQb3B1bGF0ZSB0b3VjaC1pY29uIHVybCB0byBGcmFtZUxvYWRlckNsaWVudAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTkxNDMKKworICAgICAg
ICBSZXNwZWN0IHRoZSBpbnRlcmZhY2UgY2hhbmdlIGluIEZyYW1lTG9hZGVyQ2xpZW50LgorCisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucyk6Cisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuaDoKKwogMjAxMS0w
NC0yMiAgTWFydGluIFJvYmluc29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgWGFuIExvcGV6LgpJbmRleDogU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1
cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAkocmV2aXNpb24g
ODQ5NjUpCisrKyBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNs
aWVudEd0ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk2OSw3ICs5NjksNyBAQCB2b2lkIEZyYW1l
TG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJlY2VpCiAgICAgfQogfQogCi12b2lkIEZyYW1lTG9h
ZGVyQ2xpZW50OjpkaXNwYXRjaERpZENoYW5nZUljb25zKCkKK3ZvaWQgRnJhbWVMb2FkZXJDbGll
bnQ6OmRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoV2ViQ29yZTo6SWNvblR5cGUpCiB7CiAgICAgbm90
SW1wbGVtZW50ZWQoKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0
L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9ndGsv
V2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuaAkocmV2aXNpb24gODQ5NjUpCisr
KyBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5o
CSh3b3JraW5nIGNvcHkpCkBAIC04Miw3ICs4Miw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogICAg
ICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbigpOwogICAgICAgICB2aXJ0
dWFsIHZvaWQgZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpOwogICAgICAgICB2aXJ0
dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgV2ViQ29yZTo6U3RyaW5nV2l0
aERpcmVjdGlvbiYpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VJY29u
cygpOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucyhXZWJDb3Jl
OjpJY29uVHlwZSk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENvbW1pdExvYWQo
KTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9hZChj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNw
YXRjaERpZEZhaWxMb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21h
Yy9DaGFuZ2VMb2cJKHJldmlzaW9uIDg0OTY1KQorKysgU291cmNlL1dlYktpdC9tYWMvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKworMjAxMS0wNC0yMiAgVGFvIEJh
aSAgPG1pY2hhZWxiYWlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFBvcHVsYXRlIHRvdWNoLWljb24gdXJsIHRvIEZyYW1lTG9h
ZGVyQ2xpZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD01OTE0MworCisgICAgICAgIFJlc3BlY3QgdGhlIGludGVyZmFjZSBjaGFuZ2UgaW4gRnJhbWVM
b2FkZXJDbGllbnQuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1t
OgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMp
OgorCiAyMDExLTA0LTI2ICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgTWFyayBSb3dlLgpAQCAtODYsNiArMTAwLDcgQEAKICAgICAgICAgKiBX
ZWJWaWV3L1dlYkZ1bGxTY3JlZW5Db250cm9sbGVyLm1tOgogICAgICAgICAoLVtXZWJGdWxsU2Ny
ZWVuQ29udHJvbGxlciBfZG9jdW1lbnRdKToKIAorPj4+Pj4+PiAucjg0OTE3CiAyMDExLTA0LTIy
ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IE1hY2llaiBTdGFjaG93aWFrLgpJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCShyZXZpc2lvbiA4NDk2NSkK
KysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEwMiw3ICsxMDIsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1
YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVJY29uKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoRGlkU3RhcnRQcm92aXNpb25hbExvYWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hE
aWRSZWNlaXZlVGl0bGUoY29uc3QgV2ViQ29yZTo6U3RyaW5nV2l0aERpcmVjdGlvbiYpOwotICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZUljb25zKCk7CisgICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoV2ViQ29yZTo6SWNvblR5cGUpOwogICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaERpZENvbW1pdExvYWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hE
aWRGYWlsUHJvdmlzaW9uYWxMb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKICAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGYWlsTG9hZChjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yJik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQkocmV2aXNpb24gODQ5NjUpCisrKyBTb3Vy
Y2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQkod29y
a2luZyBjb3B5KQpAQCAtNjMzLDcgKzYzMyw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6
OmRpc3BhdGNoRGlkUmUKICAgICAgICAgQ2FsbEZyYW1lTG9hZERlbGVnYXRlKGltcGxlbWVudGF0
aW9ucy0+ZGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWVGdW5jLCB3ZWJWaWV3LCBAc2VsZWN0b3Iod2Vi
VmlldzpkaWRSZWNlaXZlVGl0bGU6Zm9yRnJhbWU6KSwgKE5TU3RyaW5nICopdGl0bGUuc3RyaW5n
KCksIG1fd2ViRnJhbWUuZ2V0KCkpOwogfQogCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpk
aXNwYXRjaERpZENoYW5nZUljb25zKCkKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3Bh
dGNoRGlkQ2hhbmdlSWNvbnMoV2ViQ29yZTo6SWNvblR5cGUpCiB7CiAgICAgIC8vIEZJWE1FOiBJ
bXBsZW1lbnQgdGhpcyB0byBhbGxvdyBjb250YWluZXIgdG8gdXBkYXRlIGZhdmljb24uCiB9Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L3F0L0NoYW5nZUxvZwkocmV2aXNpb24gODQ5NjUpCisrKyBTb3VyY2UvV2ViS2l0L3F0L0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDExLTA0LTIyICBUYW8g
QmFpICA8bWljaGFlbGJhaUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgUG9wdWxhdGUgdG91Y2gtaWNvbiB1cmwgdG8gRnJhbWVM
b2FkZXJDbGllbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTU5MTQzCisKKyAgICAgICAgUmVzcGVjdCB0aGUgaW50ZXJmYWNlIGNoYW5nZSBpbiBGcmFt
ZUxvYWRlckNsaWVudC4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xp
ZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0
Y2hEaWRDaGFuZ2VJY29ucyk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJD
bGllbnRRdC5oOgorCiAyMDExLTA0LTI2ICBTaWRkaGFydGggTWF0aHVyICA8c2lkZGhhcnRoLm1h
dGh1ckBub2tpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4KSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxv
YWRlckNsaWVudFF0LmNwcAkocmV2aXNpb24gODQ5NjUpCisrKyBTb3VyY2UvV2ViS2l0L3F0L1dl
YkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
NTksNyArNDU5LDcgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERpZFJlYwog
fQogCiAKLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygp
Cit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoV2ViQ29y
ZTo6SWNvblR5cGUpCiB7CiAgICAgaWYgKGR1bXBGcmFtZUxvYWRlckNhbGxiYWNrcykKICAgICAg
ICAgcHJpbnRmKCIlcyAtIGRpZENoYW5nZUljb25zXG4iLCBxUHJpbnRhYmxlKGRydERlc2NyaXB0
aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KG1fZnJhbWUpKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0
L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaAkocmV2
aXNpb24gODQ5NjUpCisrKyBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9h
ZGVyQ2xpZW50UXQuaAkod29ya2luZyBjb3B5KQpAQCAtMTExLDcgKzExMSw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbigpOwogICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCk7CiAgICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygpOworICAgIHZpcnR1YWwgdm9p
ZCBkaXNwYXRjaERpZENoYW5nZUljb25zKFdlYkNvcmU6Okljb25UeXBlKTsKICAgICB2aXJ0dWFs
IHZvaWQgZGlzcGF0Y2hEaWRDb21taXRMb2FkKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
RGlkRmFpbFByb3Zpc2lvbmFsTG9hZChjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoRGlkRmFpbExvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYp
OwpJbmRleDogU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvd2luL0NoYW5nZUxvZwkocmV2aXNpb24gODQ5NjUpCisrKyBTb3VyY2UvV2ViS2l0
L3dpbi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAxMS0wNC0y
MiAgVGFvIEJhaSAgPG1pY2hhZWxiYWlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBvcHVsYXRlIHRvdWNoLWljb24gdXJsIHRv
IEZyYW1lTG9hZGVyQ2xpZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD01OTE0MworCisgICAgICAgIFJlc3BlY3QgdGhlIGludGVyZmFjZSBjaGFuZ2Ug
aW4gRnJhbWVMb2FkZXJDbGllbnQuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0
Y2hEaWRDaGFuZ2VJY29ucyk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuaDoKKwogMjAxMS0wNC0yMSAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9y
Zz4KIAogICAgICAgICBXaW5kb3dzIGJ1aWxkIGZpeC4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2lu
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAJ
KHJldmlzaW9uIDg0OTY1KQorKysgU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNzMsOCArMzczLDExIEBA
IHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmUKICAgICAgICAgZnJhbWVM
b2FkRGVsZWdhdGUtPmRpZFJlY2VpdmVUaXRsZSh3ZWJWaWV3LCBCU3RyaW5nKHRpdGxlLnN0cmlu
ZygpKSwgbV93ZWJGcmFtZSk7CiB9CiAKLXZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3Bh
dGNoRGlkQ2hhbmdlSWNvbnMoKQordm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hE
aWRDaGFuZ2VJY29ucyhXZWJDb3JlOjpJY29uVHlwZSB0eXBlKQogeworICAgIGlmICh0eXBlICE9
IFdlYkNvcmU6OkZhdmljb24pCisgICAgICAgIHJldHVybjsKKwogICAgIFdlYlZpZXcqIHdlYlZp
ZXcgPSBtX3dlYkZyYW1lLT53ZWJWaWV3KCk7CiAgICAgQ09NUHRyPElXZWJGcmFtZUxvYWREZWxl
Z2F0ZVByaXZhdGU+IGZyYW1lTG9hZERlbGVnYXRlUHJpdjsKICAgICBpZiAoRkFJTEVEKHdlYlZp
ZXctPmZyYW1lTG9hZERlbGVnYXRlUHJpdmF0ZSgmZnJhbWVMb2FkRGVsZWdhdGVQcml2KSkgfHwg
IWZyYW1lTG9hZERlbGVnYXRlUHJpdikKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAkocmV2aXNpb24gODQ5
NjUpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC03MCw3ICs3MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbigpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNw
YXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
RGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFdlYkNvcmU6OlN0cmluZ1dpdGhEaXJlY3Rpb24mKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygpOworICAgIHZpcnR1YWwgdm9p
ZCBkaXNwYXRjaERpZENoYW5nZUljb25zKFdlYkNvcmU6Okljb25UeXBlKTsKICAgICB2aXJ0dWFs
IHZvaWQgZGlzcGF0Y2hEaWRDb21taXRMb2FkKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
RGlkRmluaXNoRG9jdW1lbnRMb2FkKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmlu
aXNoTG9hZCgpOwpJbmRleDogU291cmNlL1dlYktpdC93aW5jZS9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC93aW5jZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg0OTY1KQorKysg
U291cmNlL1dlYktpdC93aW5jZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
NiBAQAorMjAxMS0wNC0yMiAgVGFvIEJhaSAgPG1pY2hhZWxiYWlAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBvcHVsYXRlIHRv
dWNoLWljb24gdXJsIHRvIEZyYW1lTG9hZGVyQ2xpZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01OTE0MworCisgICAgICAgIFJlc3BlY3QgdGhlIGlu
dGVyZmFjZSBjaGFuZ2UgaW4gRnJhbWVMb2FkZXJDbGllbnQuCisKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFdpbkNFLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RnJh
bWVMb2FkZXJDbGllbnRXaW5DRTo6ZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucyk6CisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXaW5DRS5oOgorCiAyMDExLTA0LTIxICBS
eW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIFdpbkNFIGJ1aWxkIGZp
eCBhZnRlciByODQ1NzQuCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0
L0ZyYW1lTG9hZGVyQ2xpZW50V2luQ0UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
d2luY2UvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXaW5DRS5jcHAJKHJldmlzaW9u
IDg0OTY1KQorKysgU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRl
ckNsaWVudFdpbkNFLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzc2LDcgKzM3Niw3IEBAIHZvaWQg
RnJhbWVMb2FkZXJDbGllbnRXaW5DRTo6ZGlzcGF0Y2hEaWQKICAgICBub3RJbXBsZW1lbnRlZCgp
OwogfQogCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50V2luQ0U6OmRpc3BhdGNoRGlkQ2hhbmdlSWNv
bnMoKQordm9pZCBGcmFtZUxvYWRlckNsaWVudFdpbkNFOjpkaXNwYXRjaERpZENoYW5nZUljb25z
KFdlYkNvcmU6Okljb25UeXBlKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CkluZGV4OiBT
b3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V2luQ0Uu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0ZyYW1l
TG9hZGVyQ2xpZW50V2luQ0UuaAkocmV2aXNpb24gODQ5NjUpCisrKyBTb3VyY2UvV2ViS2l0L3dp
bmNlL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V2luQ0UuaAkod29ya2luZyBjb3B5
KQpAQCAtNzcsNyArNzcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlk
UmVjZWl2ZUljb24oKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lv
bmFsTG9hZCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25z
dCBXZWJDb3JlOjpTdHJpbmdXaXRoRGlyZWN0aW9uJik7Ci0gICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoRGlkQ2hhbmdlSWNvbnMoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VJ
Y29ucyhXZWJDb3JlOjpJY29uVHlwZSk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ29t
bWl0TG9hZCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxQcm92aXNpb25hbExv
YWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNw
YXRjaERpZEZhaWxMb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvd3gvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd3gv
Q2hhbmdlTG9nCShyZXZpc2lvbiA4NDk2NSkKKysrIFNvdXJjZS9XZWJLaXQvd3gvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKworMjAxMS0wNC0yMiAgVGFvIEJhaSAg
PG1pY2hhZWxiYWlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFBvcHVsYXRlIHRvdWNoLWljb24gdXJsIHRvIEZyYW1lTG9hZGVy
Q2xpZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01
OTE0MworCisgICAgICAgIFJlc3BlY3QgdGhlIGludGVyZmFjZSBjaGFuZ2UgaW4gRnJhbWVMb2Fk
ZXJDbGllbnQuCisKKyAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3gu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRXeDo6ZGlzcGF0Y2hEaWRD
aGFuZ2VJY29ucyk6CisgICAgICAgICogV2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFd4
Lmg6CisKIDIwMTEtMDQtMjMgIEtldmluIE9sbGl2aWVyICA8a2V2aW5vQHRoZW9sbGl2aWVycy5j
b20+CiAKICAgICAgICAgW3d4XSBVbnJldmlld2VkIGJ1aWxkIGZpeC4gRml4ZWQgY2FwaXRhbGl6
YXRpb24gZm9yIGNhc2Ugc2Vuc2l0aXZlIGZpbGVzeXN0ZW1zLgpJbmRleDogU291cmNlL1dlYktp
dC93eC9XZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFd4LmNwcAko
cmV2aXNpb24gODQ5NjUpCisrKyBTb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRnJhbWVM
b2FkZXJDbGllbnRXeC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyNyw3ICszMjcsNyBAQCB2b2lk
IEZyYW1lTG9hZGVyQ2xpZW50V3g6OmRpc3BhdGNoRGlkRmluCiAgICAgfQogfQogCi12b2lkIEZy
YW1lTG9hZGVyQ2xpZW50V3g6OmRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoKQordm9pZCBGcmFtZUxv
YWRlckNsaWVudFd4OjpkaXNwYXRjaERpZENoYW5nZUljb25zKFdlYkNvcmU6Okljb25UeXBlKQog
ewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L3d4L1dlYktp
dFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvd3gvV2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFd4LmgJKHJldmlzaW9uIDg0OTY1
KQorKysgU291cmNlL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3gu
aAkod29ya2luZyBjb3B5KQpAQCAtMTA5LDcgKzEwOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmluaXNoTG9hZCgpOwogICAgICAgICB2
aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGaXJzdExheW91dCgpOwogICAgICAgICB2aXJ0dWFsIHZv
aWQgZGlzcGF0Y2hEaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQoKTsKLSAgICAgICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoKTsKKyAgICAgICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoV2ViQ29yZTo6SWNvblR5cGUpOwogCiAgICAgICAgIHZp
cnR1YWwgdm9pZCBkaXNwYXRjaFNob3coKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGNhbmNlbFBv
bGljeUNoZWNrKCk7CkluZGV4OiBUb29scy9TY3JpcHRzL2J1aWxkLXdlYmtpdAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9TY3JpcHRzL2J1aWxkLXdlYmtpdAkocmV2aXNpb24gODQ5NjUpCisrKyBUb29s
cy9TY3JpcHRzL2J1aWxkLXdlYmtpdAkod29ya2luZyBjb3B5KQpAQCAtMTEyLDYgKzExMiw3IEBA
IG15ICgKICAgICAkc3lzdGVtTWFsbG9jU3VwcG9ydCwKICAgICAkdGlsZWRCYWNraW5nU3RvcmVT
dXBwb3J0LAogICAgICR0b3VjaEV2ZW50c1N1cHBvcnQsCisgICAgJHRvdWNoSWNvbkxvYWRpbmdT
dXBwb3J0LAogICAgICR2aWRlb1N1cHBvcnQsCiAgICAgJHdjc3NTdXBwb3J0LAogICAgICR3ZWJB
dWRpb1N1cHBvcnQsCkBAIC0yNzYsNiArMjc3LDkgQEAgbXkgQGZlYXR1cmVzID0gKAogICAgIHsg
b3B0aW9uID0+ICJ0b3VjaC1ldmVudHMiLCBkZXNjID0+ICJUb2dnbGUgVG91Y2ggRXZlbnRzIHN1
cHBvcnQiLAogICAgICAgZGVmaW5lID0+ICJFTkFCTEVfVE9VQ0hfRVZFTlRTIiwgZGVmYXVsdCA9
PiBpc1F0KCksIHZhbHVlID0+IFwkdG91Y2hFdmVudHNTdXBwb3J0IH0sCiAKKyAgICB7IG9wdGlv
biA9PiAidG91Y2gtaWNvbi1sb2FkaW5nIiwgZGVzYyA9PiAiVG9nZ2xlIFRvdWNoIEljb24gTG9h
ZGluZyBTdXBwb3J0IiwKKyAgICAgIGRlZmluZSA9PiAiRU5BQkxFX1RPVUNIX0lDT05fTE9BRElO
RyIsIGRlZmF1bHQgPT4gMCwgdmFsdWUgPT4gXCR0b3VjaEljb25Mb2FkaW5nU3VwcG9ydCB9LAor
CiAgICAgeyBvcHRpb24gPT4gInZpZGVvIiwgZGVzYyA9PiAiVG9nZ2xlIFZpZGVvIHN1cHBvcnQi
LAogICAgICAgZGVmaW5lID0+ICJFTkFCTEVfVklERU8iLCBkZWZhdWx0ID0+IChpc0FwcGxlV2Vi
S2l0KCkgfHwgaXNHdGsoKSksIHZhbHVlID0+IFwkdmlkZW9TdXBwb3J0IH0sCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>91503</attachid>
            <date>2011-04-28 09:31:20 -0700</date>
            <delta_ts>2011-05-03 10:15:20 -0700</delta_ts>
            <desc>Sync</desc>
            <filename>patch.3</filename>
            <type>text/plain</type>
            <size>67670</size>
            <attacher>michaelbai</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg1MTg3KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDcgQEAKKzIwMTEtMDQtMjIgIFRhbyBCYWkg
IDxtaWNoYWVsYmFpQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBQb3B1bGF0ZSB0b3VjaC1pY29uIHVybCB0byBGcmFtZUxvYWRl
ckNsaWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NTkxNDMKKyAgICAgICAgCisgICAgICAgIFBhcnNlZCBhbmQgcG9wdWxhdGVkIGFwcGxlLXRvdWNo
LWljb24gdXJsIHRvIEZyYW1lTG9hZGVyQ2xpZW50LgorICAgICAgICBDaGFuZ2VkIGZhdmljb24g
dG8gYmUgYSB0eXBlIG9mIGljb24uCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmNvbnZlcnRJY29uVHlwZVRvSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6
Omljb25VUkwpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnNldEljb25VUkwpOgorICAg
ICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAqIGRvbS9JY29uVVJMLmg6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6SWNvblVSTDo6SWNvblVSTCk6CisgICAgICAgICogaHRtbC9IVE1M
TGlua0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTExpbmtFbGVtZW50Ojp0b2tl
bml6ZVJlbEF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6OnBy
b2Nlc3MpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTExpbmtFbGVtZW50OjphZGRTdWJyZXNvdXJj
ZUF0dHJpYnV0ZVVSTHMpOgorICAgICAgICAqIGh0bWwvSFRNTExpbmtFbGVtZW50Lmg6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6OlJlbEF0dHJpYnV0ZTo6UmVsQXR0cmlidXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxMaW5rRWxlbWVudDo6aXNFbmFibGVkVmlhU2NyaXB0
KToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTE5hbWVzOjpQcmVsb2FkVGFzazo6cmVsQXR0cmlidXRlSXNTdHlsZVNo
ZWV0KToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Y29udmVydEljb25UeXBlVG9JbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dExvYWRlcjo6aWNvblVSTCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6c2V0
SWNvblVSTCk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmg6CisgICAgICAgICog
bG9hZGVyL0VtcHR5Q2xpZW50cy5oOgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlGcmFtZUxvYWRl
ckNsaWVudDo6ZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucyk6CisgICAgICAgICogbG9hZGVyL0ZyYW1l
TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjppY29uVVJMKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjppY29uVVJMcyk6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZUxvYWRlcjo6ZmlsbEljb25VUkwpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2Fk
ZXI6OmdldERlZmF1bHRJY29uVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpz
ZXRJY29uVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpkaWRDaGFuZ2VJY29u
cyk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0Zy
YW1lTG9hZGVyQ2xpZW50Lmg6CisKIDIwMTEtMDQtMjggIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1h
bkBnb29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFl1cnkgU2VtaWtoYXRza3kuCkBA
IC00MzM3LDYgKzQzODEsNyBAQAogICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKICAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6cmVzZXRTY3JvbGxiYXJzQW5kQ2xlYXJDb250ZW50c1Np
emUpOgogCis+Pj4+Pj4+IC5yODQ5MTcKIDIwMTEtMDQtMjIgIEpvc2VwaCBQZWNvcmFybyAgPGpv
ZXBlY2tAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBLZW50IFRhbXVyYS4KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL0dOVW1ha2VmaWxlLmFtCShyZXZpc2lvbiA4NTE4NykKKysrIFNvdXJjZS9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmFtCSh3b3JraW5nIGNvcHkpCkBAIC0yNjYsNiArMjY2LDE2IEBAIHdlYmNv
cmVfYnVpbHRfc291cmNlcyArPSBcCiBlbmRpZiAjIEVORCBFTkFCTEVfUVVPVEEKIAogIyAtLS0t
CisjIFRvdWNoIEljb24gTG9hZGluZworIyAtLS0tCitpZiBFTkFCTEVfVE9VQ0hfSUNPTl9MT0FE
SU5HCitGRUFUVVJFX0RFRklORVMgKz0gRU5BQkxFX1RPVUNIX0lDT05fTE9BRElORz0xCit3ZWJj
b3JlX2NwcGZsYWdzICs9IC1ERU5BQkxFX1RPVUNIX0lDT05fTE9BRElORz0xCitlbHNlCit3ZWJj
b3JlX2NwcGZsYWdzICs9IC1ERU5BQkxFX1RPVUNIX0lDT05fTE9BRElORz0wCitlbmRpZiAjIEVO
RCBFTkFCTEVfVE9VQ0hfSUNPTl9MT0FESU5HCisKKyMgLS0tLQogIyBTcGVlY2ggSW5wdXQgQVBJ
IHN1cHBvcnQKICMgLS0tLQogaWYgRU5BQkxFX0lOUFVUX1NQRUVDSApJbmRleDogU291cmNlL1dl
YkNvcmUvZmVhdHVyZXMucHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2ZlYXR1cmVz
LnByaQkocmV2aXNpb24gODUxODcpCisrKyBTb3VyY2UvV2ViQ29yZS9mZWF0dXJlcy5wcmkJKHdv
cmtpbmcgY29weSkKQEAgLTc3LDYgKzc3LDcgQEAgY29udGFpbnMoREVGSU5FUywgRU5BQkxFX1NJ
TkdMRV9USFJFQURFRAogIWNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9XRUJHTD0uKTogREVGSU5F
UyArPSBFTkFCTEVfV0VCR0w9MAogIWNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9NRURJQV9TVEFU
SVNUSUNTPS4pOiBERUZJTkVTICs9IEVOQUJMRV9NRURJQV9TVEFUSVNUSUNTPTAKICFjb250YWlu
cyhERUZJTkVTLCBFTkFCTEVfVklERU9fVFJBQ0s9Lik6IERFRklORVMgKz0gRU5BQkxFX1ZJREVP
X1RSQUNLPTAKKyFjb250YWlucyhERUZJTkVTLCBFTkFCTEVfVE9VQ0hfSUNPTl9MT0FESU5HPS4p
OiBERUZJTkVTICs9IEVOQUJMRV9UT1VDSF9JQ09OX0xPQURJTkc9MAogCiAjIFNWRyBzdXBwb3J0
CiAhY29udGFpbnMoREVGSU5FUywgRU5BQkxFX1NWRz0wKSB7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwkocmV2
aXNpb24gODUxODcpCisrKyBTb3VyY2UvV2ViQ29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVm
aW5lcy54Y2NvbmZpZwkod29ya2luZyBjb3B5KQpAQCAtMTE2LDYgKzExNiw4IEBAIEVOQUJMRV9W
SURFT19UUkFDSyA9IDsKIAogRU5BQkxFX01FRElBX1NUQVRJU1RJQ1MgPSA7CiAKK0VOQUJMRV9U
T1VDSF9JQ09OX0xPQURJTkcgPSA7CisKIEVOQUJMRV9XRUJfQVVESU8gPSA7CiAKIEVOQUJMRV9X
RUJfU09DS0VUUyA9ICQoRU5BQkxFX1dFQl9TT0NLRVRTXyQoUkVBTF9QTEFURk9STV9OQU1FKSk7
CkBAIC0xMzEsNCArMTMzLDQgQEAgRU5BQkxFX1hIVE1MTVAgPSA7CiBFTkFCTEVfWFBBVEggPSBF
TkFCTEVfWFBBVEg7CiBFTkFCTEVfWFNMVCA9IEVOQUJMRV9YU0xUOwogCi1GRUFUVVJFX0RFRklO
RVMgPSAkKEVOQUJMRV9MSU5LX1BSRUZFVENIKSAkKEVOQUJMRV9BQ0NFTEVSQVRFRF8yRF9DQU5W
QVMpICQoRU5BQkxFX1dFQkdMKSAkKEVOQUJMRV8zRF9SRU5ERVJJTkcpICQoRU5BQkxFX0JMT0Ip
ICQoRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HKSAkKEVOQUJMRV9DTElFTlRfQkFTRURfR0VPTE9D
QVRJT04pICQoRU5BQkxFX0RBVEFCQVNFKSAkKEVOQUJMRV9EQVRBTElTVCkgJChFTkFCTEVfREFU
QV9UUkFOU0ZFUl9JVEVNUykgJChFTkFCTEVfREVUQUlMUykgJChFTkFCTEVfREVWSUNFX09SSUVO
VEFUSU9OKSAkKEVOQUJMRV9ESVJFQ1RPUllfVVBMT0FEKSAkKEVOQUJMRV9ET01fU1RPUkFHRSkg
JChFTkFCTEVfRVZFTlRTT1VSQ0UpICQoRU5BQkxFX0ZJTFRFUlMpICQoRU5BQkxFX0ZJTEVfU1lT
VEVNKSAkKEVOQUJMRV9GVUxMU0NSRUVOX0FQSSkgJChFTkFCTEVfR0VPTE9DQVRJT04pICQoRU5B
QkxFX0lDT05EQVRBQkFTRSkgJChFTkFCTEVfSU1BR0VfUkVTSVpFUikgJChFTkFCTEVfSU5ERVhF
RF9EQVRBQkFTRSkgJChFTkFCTEVfSU5QVVRfU1BFRUNIKSAkKEVOQUJMRV9KQVZBU0NSSVBUX0RF
QlVHR0VSKSAkKEVOQUJMRV9NQVRITUwpICQoRU5BQkxFX01FVEVSX1RBRykgJChFTkFCTEVfTk9U
SUZJQ0FUSU9OUykgJChFTkFCTEVfT0ZGTElORV9XRUJfQVBQTElDQVRJT05TKSAkKEVOQUJMRV9Q
QUdFX1ZJU0lCSUxJVFlfQVBJKSAkKEVOQUJMRV9QUk9HUkVTU19UQUcpICQoRU5BQkxFX1JFR0lT
VEVSX1BST1RPQ09MX0hBTkRMRVIpICQoRU5BQkxFX1FVT1RBKSAkKEVOQUJMRV9TSEFSRURfV09S
S0VSUykgJChFTkFCTEVfU1ZHKSAkKEVOQUJMRV9TVkdfQU5JTUFUSU9OKSAkKEVOQUJMRV9TVkdf
QVNfSU1BR0UpICQoRU5BQkxFX1NWR19ET01fT0JKQ19CSU5ESU5HUykgJChFTkFCTEVfU1ZHX0ZP
TlRTKSAkKEVOQUJMRV9TVkdfRk9SRUlHTl9PQkpFQ1QpICQoRU5BQkxFX1NWR19VU0UpICQoRU5B
QkxFX1ZJREVPKSAkKEVOQUJMRV9WSURFT19UUkFDSykgJChFTkFCTEVfTUVESUFfU1RBVElTVElD
UykgJChFTkFCTEVfV0VCX0FVRElPKSAkKEVOQUJMRV9XRUJfU09DS0VUUykgJChFTkFCTEVfV0VC
X1RJTUlORykgJChFTkFCTEVfV01MKSAkKEVOQUJMRV9XT1JLRVJTKSAkKEVOQUJMRV9YSFRNTE1Q
KSAkKEVOQUJMRV9YUEFUSCkgJChFTkFCTEVfWFNMVCk7CitGRUFUVVJFX0RFRklORVMgPSAkKEVO
QUJMRV9MSU5LX1BSRUZFVENIKSAkKEVOQUJMRV9BQ0NFTEVSQVRFRF8yRF9DQU5WQVMpICQoRU5B
QkxFX1dFQkdMKSAkKEVOQUJMRV8zRF9SRU5ERVJJTkcpICQoRU5BQkxFX0JMT0IpICQoRU5BQkxF
X0NIQU5ORUxfTUVTU0FHSU5HKSAkKEVOQUJMRV9DTElFTlRfQkFTRURfR0VPTE9DQVRJT04pICQo
RU5BQkxFX0RBVEFCQVNFKSAkKEVOQUJMRV9EQVRBTElTVCkgJChFTkFCTEVfREFUQV9UUkFOU0ZF
Ul9JVEVNUykgJChFTkFCTEVfREVUQUlMUykgJChFTkFCTEVfREVWSUNFX09SSUVOVEFUSU9OKSAk
KEVOQUJMRV9ESVJFQ1RPUllfVVBMT0FEKSAkKEVOQUJMRV9ET01fU1RPUkFHRSkgJChFTkFCTEVf
RVZFTlRTT1VSQ0UpICQoRU5BQkxFX0ZJTFRFUlMpICQoRU5BQkxFX0ZJTEVfU1lTVEVNKSAkKEVO
QUJMRV9GVUxMU0NSRUVOX0FQSSkgJChFTkFCTEVfR0VPTE9DQVRJT04pICQoRU5BQkxFX0lDT05E
QVRBQkFTRSkgJChFTkFCTEVfSU1BR0VfUkVTSVpFUikgJChFTkFCTEVfSU5ERVhFRF9EQVRBQkFT
RSkgJChFTkFCTEVfSU5QVVRfU1BFRUNIKSAkKEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSKSAk
KEVOQUJMRV9NQVRITUwpICQoRU5BQkxFX01FVEVSX1RBRykgJChFTkFCTEVfTk9USUZJQ0FUSU9O
UykgJChFTkFCTEVfT0ZGTElORV9XRUJfQVBQTElDQVRJT05TKSAkKEVOQUJMRV9QQUdFX1ZJU0lC
SUxJVFlfQVBJKSAkKEVOQUJMRV9QUk9HUkVTU19UQUcpICQoRU5BQkxFX1JFR0lTVEVSX1BST1RP
Q09MX0hBTkRMRVIpICQoRU5BQkxFX1FVT1RBKSAkKEVOQUJMRV9TSEFSRURfV09SS0VSUykgJChF
TkFCTEVfU1ZHKSAkKEVOQUJMRV9TVkdfQU5JTUFUSU9OKSAkKEVOQUJMRV9TVkdfQVNfSU1BR0Up
ICQoRU5BQkxFX1NWR19ET01fT0JKQ19CSU5ESU5HUykgJChFTkFCTEVfU1ZHX0ZPTlRTKSAkKEVO
QUJMRV9TVkdfRk9SRUlHTl9PQkpFQ1QpICQoRU5BQkxFX1NWR19VU0UpICQoRU5BQkxFX1ZJREVP
KSAkKEVOQUJMRV9WSURFT19UUkFDSykgJChFTkFCTEVfTUVESUFfU1RBVElTVElDUykgJChFTkFC
TEVfV0VCX0FVRElPKSAkKEVOQUJMRV9XRUJfU09DS0VUUykgJChFTkFCTEVfV0VCX1RJTUlORykg
JChFTkFCTEVfV01MKSAkKEVOQUJMRV9XT1JLRVJTKSAkKEVOQUJMRV9YSFRNTE1QKSAkKEVOQUJM
RV9YUEFUSCkgJChFTkFCTEVfWFNMVCkgJChFTkFCTEVfVE9VQ0hfSUNPTl9MT0FESU5HKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oJKHJldmlzaW9uIDg1MTg3KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQ0LDYgKzEwNDQsNyBAQAogCQk0
NDlCMTlGNTBGQTcyRUNFMDAxNUNBNEEgLyogSFRNTFBhcnNlclF1aXJrcy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDQ5QjE5RjMwRkE3MkVDRTAwMTVD
QTRBIC8qIEhUTUxQYXJzZXJRdWlya3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk0NEEyOEFBQzEyREZCOEFDMDBBRTkyM0IgLyogTWF0aE1MRWxl
bWVudEZhY3RvcnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQ0QTI4QUFCMTJERkI4QUMwMEFFOTIzQiAvKiBNYXRoTUxFbGVtZW50RmFjdG9yeS5oICov
OyB9OwogCQk0NEEyOEFBRjEyREZCOEJGMDBBRTkyM0IgLyogTWF0aE1MTmFtZXMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0QTI4QUFFMTJERkI4QkYw
MEFFOTIzQiAvKiBNYXRoTUxOYW1lcy5oICovOyB9OworCQk0NUJBQzJCMDEzNjBCQkFCMDA1REEy
NTggLyogSWNvblVSTC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDVCQUMyQUYxMzYwQkJBQjAwNURBMjU4IC8qIEljb25VUkwuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NjE0QTFGRTBCMjNBOEQ2MDA0
NDZFMUMgLyogY29weUN1cnNvci5wbmcgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQ2MTRBMUZEMEIyM0E4RDYwMDQ0NkUxQyAvKiBjb3B5Q3Vyc29yLnBu
ZyAqLzsgfTsKIAkJNDY0RUEyNzMwQjhBMzUwQjAwQThFNkUzIC8qIGNyb3NzSGFpckN1cnNvci5w
bmcgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2NEVB
MjcxMEI4QTM1MEIwMEE4RTZFMyAvKiBjcm9zc0hhaXJDdXJzb3IucG5nICovOyB9OwogCQk0NjRF
QTI3NDBCOEEzNTBCMDBBOEU2RTMgLyogbm90QWxsb3dlZEN1cnNvci5wbmcgaW4gUmVzb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2NEVBMjcyMEI4QTM1MEIwMEE4
RTZFMyAvKiBub3RBbGxvd2VkQ3Vyc29yLnBuZyAqLzsgfTsKQEAgLTc1NzQsNiArNzU3NSw3IEBA
CiAJCTQ0OUIxOUYzMEZBNzJFQ0UwMDE1Q0E0QSAvKiBIVE1MUGFyc2VyUXVpcmtzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhUTUxQYXJzZXJRdWlya3MuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDRBMjhBQUIxMkRGQjhBQzAwQUU5MjNCIC8qIE1hdGhNTEVs
ZW1lbnRGYWN0b3J5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hdGhNTEVs
ZW1lbnRGYWN0b3J5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0QTI4QUFFMTJE
RkI4QkYwMEFFOTIzQiAvKiBNYXRoTUxOYW1lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBNYXRoTUxOYW1lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NUJB
QzJBRjEzNjBCQkFCMDA1REEyNTggLyogSWNvblVSTC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBJY29uVVJMLmg7IHBhdGggPSBkb20vSWNvblVSTC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0NjE0QTFGRDBCMjNBOEQ2MDA0NDZFMUMgLyogY29weUN1cnNvci5w
bmcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBpbWFn
ZS5wbmc7IHBhdGggPSBjb3B5Q3Vyc29yLnBuZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDY0RUEyNzEwQjhBMzUwQjAwQThFNkUzIC8qIGNyb3NzSGFpckN1cnNvci5wbmcgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBpbWFnZS5wbmc7IHBh
dGggPSBjcm9zc0hhaXJDdXJzb3IucG5nOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
NjRFQTI3MjBCOEEzNTBCMDBBOEU2RTMgLyogbm90QWxsb3dlZEN1cnNvci5wbmcgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBpbWFnZS5wbmc7IHBhdGgg
PSBub3RBbGxvd2VkQ3Vyc29yLnBuZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEy
NjcxLDYgKzEyNjczLDcgQEAKIAkJMDg2N0Q2OTFGRTg0MDI4RkMwMkFBQzA3IC8qIFdlYktpdCAq
LyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJNDVCQUMyQUYx
MzYwQkJBQjAwNURBMjU4IC8qIEljb25VUkwuaCAqLywKIAkJCQk2NUM5N0FGMjA4RUE5MDg4MDBB
Q0QyNzMgLyogY29uZmlnLmggKi8sCiAJCQkJRURFQzk4MDIwQUVEN0UxNzAwNTkxMzdGIC8qIFdl
YkNvcmVQcmVmaXguaCAqLywKIAkJCQk5MzA3MDYxMzA5RTBDQTgyMDBCMTdGRTQgLyogRGVyaXZl
ZFNvdXJjZXMubWFrZSAqLywKQEAgLTIyOTcwLDYgKzIyOTczLDcgQEAKIAkJCQk5M0YxOTlFRDA4
MjQ1RTU5MDAxRTlBQkMgLyogWFNMVFByb2Nlc3Nvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTFC
RTUxMkUwQ0Y2QzUxMjAwMkVBOTU5IC8qIFhTTFRVbmljb2RlU29ydC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJOTc3RTJFMEYxMkYwRkM5QzAwQzEzMzc5IC8qIFhTU0ZpbHRlci5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJNDVCQUMyQjAxMzYwQkJBQjAwNURBMjU4IC8qIEljb25VUkwuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTA4NkJCRDBGMTM2MDM5QzIwMDhCMTVEOCAvKiBHbHlwaC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMDg3M0I4NkIxMzYwNjRFQTAwQTUyMkMyIC8qIEdseXBoUGFnZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMDg3RTBBRjcxMzYwNkQwQjAwRkE0QkE4IC8qIFNWR0dseXBoLmggaW4gSGVh
ZGVycyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkocmV2aXNpb24gODUxODcpCisr
KyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNDQs
NiArMzQ0LDI3IEBAIHN0YXRpYyBib29sIGRpc2FibGVSYW5nZU11dGF0aW9uKFBhZ2UqIHAKICNl
bmRpZgogfQogCisvLyBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgZ2l2ZW4gdHlwZSwgMCBpcyBy
ZXR1cm5lZCBpZiB0aGUgdHlwZSBpcyBpbnZhbGlkLgorc3RhdGljIHNpemVfdCBnZXRJY29uSW5k
ZXgoSWNvblR5cGUgdHlwZSkgeworICAgIHNpemVfdCBpbmRleCA9IDA7CisgICAgc3dpdGNoKHR5
cGUpIHsKKyAgICAgICAgY2FzZSBGYXZpY29uOgorICAgICAgICAgICAgaW5kZXggPSAwOworICAg
ICAgICAgICAgYnJlYWs7CisjaWYgRU5BQkxFKFRPVUNIX0lDT05fTE9BRElORykKKyAgICAgICAg
Y2FzZSBUb3VjaFByZWNvbXBvc2VkSWNvbjoKKyAgICAgICAgICAgIGluZGV4ID0gMTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFRvdWNoSWNvbjoKKyAgICAgICAgICAgIGluZGV4
ID0gMjsKKyAgICAgICAgICAgIGJyZWFrOworI2VuZGlmCisgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisgICAgcmV0dXJuIGluZGV4Owor
fQorCiBzdGF0aWMgSGFzaFNldDxEb2N1bWVudCo+KiBkb2N1bWVudHNUaGF0TmVlZFN0eWxlUmVj
YWxjID0gMDsKIAogY2xhc3MgRG9jdW1lbnRXZWFrUmVmZXJlbmNlIDogcHVibGljIFRocmVhZFNh
ZmVSZWZDb3VudGVkPERvY3VtZW50V2Vha1JlZmVyZW5jZT4gewpAQCAtNDM2OSwxNSArNDM5MCwy
NiBAQCB1bnNpZ25lZCBGb3JtRWxlbWVudEtleUhhc2g6Omhhc2goY29uc3QgCiAgICAgcmV0dXJu
IFN0cmluZ0hhc2hlcjo6aGFzaE1lbW9yeTxzaXplb2YoRm9ybUVsZW1lbnRLZXkpPigma2V5KTsK
IH0KIAotdm9pZCBEb2N1bWVudDo6c2V0SWNvblVSTChjb25zdCBTdHJpbmcmIGljb25VUkwsIGNv
bnN0IFN0cmluZyYgdHlwZSkKK0ljb25VUkwgRG9jdW1lbnQ6Omljb25VUkwoSWNvblR5cGUgaWNv
blR5cGUpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faWNvblVSTHNbZ2V0SWNvbkluZGV4KGljb25U
eXBlKV07Cit9CisKK3ZvaWQgRG9jdW1lbnQ6OnNldEljb25VUkwoY29uc3QgU3RyaW5nJiB1cmws
IGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEljb25UeXBlIGljb25UeXBlKQogewotICAgIC8vIEZJ
WE1FIC0gPHJkYXI6Ly9wcm9ibGVtLzQ3Mjc2NDU+IC0gQXQgc29tZSBwb2ludCBpbiB0aGUgZnV0
dXJlLCB3ZSBtaWdodCBhY3R1YWxseSBob25vciB0aGUgInR5cGUiIAotICAgIGlmIChtX2ljb25V
UkwuaXNFbXB0eSgpKQotICAgICAgICBtX2ljb25VUkwgPSBpY29uVVJMOwotICAgIGVsc2UgaWYg
KCF0eXBlLmlzRW1wdHkoKSkKLSAgICAgICAgbV9pY29uVVJMID0gaWNvblVSTDsKKyAgICAvLyBG
SVhNRSAtIDxyZGFyOi8vcHJvYmxlbS80NzI3NjQ1PiAtIEF0IHNvbWUgcG9pbnQgaW4gdGhlIGZ1
dHVyZSwgd2UgbWlnaHQgYWN0dWFsbHkgaG9ub3IgdGhlICJtaW1lVHlwZSIKKyAgICBJY29uVVJM
IG5ld1VSTCAoS1VSTChQYXJzZWRVUkxTdHJpbmcsIHVybCksIGljb25UeXBlKTsKKyAgICBpZiAo
IWljb25VUkwoaWNvblR5cGUpLm1faWNvblVSTC5pc1ZhbGlkKCkpCisgICAgICAgIHNldEljb25V
UkwobmV3VVJMKTsKKyAgICBlbHNlIGlmICghbWltZVR5cGUuaXNFbXB0eSgpKQorICAgICAgICBz
ZXRJY29uVVJMKG5ld1VSTCk7CiAgICAgaWYgKEZyYW1lKiBmID0gZnJhbWUoKSkKLSAgICAgICAg
Zi0+bG9hZGVyKCktPnNldEljb25VUkwobV9pY29uVVJMKTsKKyAgICAgICAgZi0+bG9hZGVyKCkt
PnNldEljb25VUkwobmV3VVJMKTsKK30KKwordm9pZCBEb2N1bWVudDo6c2V0SWNvblVSTChjb25z
dCBJY29uVVJMJiBpY29uVVJMKQoreworICAgIG1faWNvblVSTHNbZ2V0SWNvbkluZGV4KGljb25V
UkwubV9pY29uVHlwZSldID0gaWNvblVSTDsKIH0KIAogdm9pZCBEb2N1bWVudDo6cmVnaXN0ZXJG
b3JtRWxlbWVudFdpdGhGb3JtQXR0cmlidXRlKEZvcm1Bc3NvY2lhdGVkRWxlbWVudCogZWxlbWVu
dCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCShyZXZpc2lvbiA4NTE4NykKKysrIFNvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBACiAj
aW5jbHVkZSAiQ29sb3IuaCIKICNpbmNsdWRlICJET01UaW1lU3RhbXAuaCIKICNpbmNsdWRlICJE
b2N1bWVudFRpbWluZy5oIgorI2luY2x1ZGUgIkljb25VUkwuaCIKICNpbmNsdWRlICJRdWFsaWZp
ZWROYW1lLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUg
IlN0cmluZ1dpdGhEaXJlY3Rpb24uaCIKQEAgLTkxOCw4ICs5MTksOSBAQCBwdWJsaWM6CiAgICAg
CiAgICAgdm9pZCBzZXRIYXNOb2Rlc1dpdGhQbGFjZWhvbGRlclN0eWxlKCkgeyBtX2hhc05vZGVz
V2l0aFBsYWNlaG9sZGVyU3R5bGUgPSB0cnVlOyB9CiAKLSAgICBjb25zdCBTdHJpbmcmIGljb25V
UkwoKSBjb25zdCB7IHJldHVybiBtX2ljb25VUkw7IH0KLSAgICB2b2lkIHNldEljb25VUkwoY29u
c3QgU3RyaW5nJiBpY29uVVJMLCBjb25zdCBTdHJpbmcmIHR5cGUpOworICAgIEljb25VUkwgaWNv
blVSTChJY29uVHlwZSBpY29uVHlwZSkgY29uc3Q7CisgICAgdm9pZCBzZXRJY29uVVJMKGNvbnN0
IFN0cmluZyYgaWNvblVSTCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgSWNvblR5cGUgaWNvblR5
cGUpOworICAgIHZvaWQgc2V0SWNvblVSTChjb25zdCBJY29uVVJMJiBpY29uVVJMKTsKIAogICAg
IHZvaWQgc2V0VXNlU2VjdXJlS2V5Ym9hcmRFbnRyeVdoZW5BY3RpdmUoYm9vbCk7CiAgICAgYm9v
bCB1c2VTZWN1cmVLZXlib2FyZEVudHJ5V2hlbkFjdGl2ZSgpIGNvbnN0OwpAQCAtMTMzMyw4ICsx
MzM1LDggQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgbV9jcmVhdGVSZW5kZXJlcnM7CiAgICAgYm9v
bCBtX2luUGFnZUNhY2hlOwotICAgIFN0cmluZyBtX2ljb25VUkw7Ci0gICAgCisgICAgSWNvblVS
TCBtX2ljb25VUkxzW0lDT05fQ09VTlRdOworCiAgICAgSGFzaFNldDxFbGVtZW50Kj4gbV9kb2N1
bWVudEFjdGl2YXRpb25DYWxsYmFja0VsZW1lbnRzOwogICAgIEhhc2hTZXQ8RWxlbWVudCo+IG1f
bWVkaWFWb2x1bWVDYWxsYmFja0VsZW1lbnRzOwogICAgIEhhc2hTZXQ8RWxlbWVudCo+IG1fcHJp
dmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2VkRWxlbWVudHM7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9k
b20vSWNvblVSTC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9JY29uVVJMLmgJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vSWNvblVSTC5oCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDY5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
CisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAq
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBJY29uVVJMX2gKKyNkZWZpbmUgSWNvblVSTF9oCisK
KyNpbmNsdWRlICJLVVJMLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworI2lmIEVOQUJMRShU
T1VDSF9JQ09OX0xPQURJTkcpCisjZGVmaW5lIElDT05fQ09VTlQgMworI2Vsc2UKKyNkZWZpbmUg
SUNPTl9DT1VOVCAxCisjZW5kaWYKKworZW51bSBJY29uVHlwZSB7CisgICAgSW52YWxpZEljb24g
PSAwLAorICAgIEZhdmljb24gPSAxLAorICAgIFRvdWNoSWNvbiA9IDEgPDwgMSwKKyAgICBUb3Vj
aFByZWNvbXBvc2VkSWNvbiA9IDEgPDwgMgorfTsKKworc3RydWN0IEljb25VUkwgeworICAgIElj
b25UeXBlIG1faWNvblR5cGU7CisgICAgS1VSTCBtX2ljb25VUkw7CisKKyAgICBJY29uVVJMKCkK
KyAgICAgICAgOiBtX2ljb25UeXBlKEludmFsaWRJY29uKQorICAgIHsKKyAgICB9CisKKyAgICBJ
Y29uVVJMKGNvbnN0IEtVUkwmIHVybCwgSWNvblR5cGUgdHlwZSkKKyAgICAgICAgOiBtX2ljb25U
eXBlKHR5cGUpCisgICAgICAgICwgbV9pY29uVVJMKHVybCkKKyAgICB7CisgICAgfQorfTsKKwor
fQorCisjZW5kaWYgIC8vIEljb25VUkxfaF9oCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2Uv
V2ViQ29yZS9kb20vSWNvblVSTC5oCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjplb2wtc3R5bGUKICAg
KyBMRgoKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAJKHJldmlz
aW9uIDg1MTg3KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xNTksNyArMTU5LDcgQEAgdm9pZCBIVE1MTGlua0VsZW1lbnQ6OnBh
cnNlTWFwcGVkQXR0cmlidQogdm9pZCBIVE1MTGlua0VsZW1lbnQ6OnRva2VuaXplUmVsQXR0cmli
dXRlKGNvbnN0IEF0b21pY1N0cmluZyYgcmVsLCBSZWxBdHRyaWJ1dGUmIHJlbEF0dHJpYnV0ZSkK
IHsKICAgICByZWxBdHRyaWJ1dGUubV9pc1N0eWxlU2hlZXQgPSBmYWxzZTsKLSAgICByZWxBdHRy
aWJ1dGUubV9pc0ljb24gPSBmYWxzZTsKKyAgICByZWxBdHRyaWJ1dGUubV9pY29uVHlwZSA9IElu
dmFsaWRJY29uOwogICAgIHJlbEF0dHJpYnV0ZS5tX2lzQWx0ZXJuYXRlID0gZmFsc2U7CiAgICAg
cmVsQXR0cmlidXRlLm1faXNETlNQcmVmZXRjaCA9IGZhbHNlOwogI2lmIEVOQUJMRShMSU5LX1BS
RUZFVENIKQpAQCAtMTY5LDcgKzE2OSwxMyBAQCB2b2lkIEhUTUxMaW5rRWxlbWVudDo6dG9rZW5p
emVSZWxBdHRyaWJ1CiAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHJlbCwgInN0eWxlc2hlZXQi
KSkKICAgICAgICAgcmVsQXR0cmlidXRlLm1faXNTdHlsZVNoZWV0ID0gdHJ1ZTsKICAgICBlbHNl
IGlmIChlcXVhbElnbm9yaW5nQ2FzZShyZWwsICJpY29uIikgfHwgZXF1YWxJZ25vcmluZ0Nhc2Uo
cmVsLCAic2hvcnRjdXQgaWNvbiIpKQotICAgICAgICByZWxBdHRyaWJ1dGUubV9pc0ljb24gPSB0
cnVlOworICAgICAgICByZWxBdHRyaWJ1dGUubV9pY29uVHlwZSA9IEZhdmljb247CisjaWYgRU5B
QkxFKFRPVUNIX0lDT05fTE9BRElORykKKyAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShy
ZWwsICJhcHBsZS10b3VjaC1pY29uIikpCisgICAgICAgIHJlbEF0dHJpYnV0ZS5tX2ljb25UeXBl
ID0gVG91Y2hJY29uOworICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHJlbCwgImFwcGxl
LXRvdWNoLWljb24tcHJlY29tcG9zZWQiKSkKKyAgICAgICAgcmVsQXR0cmlidXRlLm1faWNvblR5
cGUgPSBUb3VjaFByZWNvbXBvc2VkSWNvbjsKKyNlbmRpZgogICAgIGVsc2UgaWYgKGVxdWFsSWdu
b3JpbmdDYXNlKHJlbCwgImRucy1wcmVmZXRjaCIpKQogICAgICAgICByZWxBdHRyaWJ1dGUubV9p
c0ROU1ByZWZldGNoID0gdHJ1ZTsKICAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShyZWws
ICJhbHRlcm5hdGUgc3R5bGVzaGVldCIpIHx8IGVxdWFsSWdub3JpbmdDYXNlKHJlbCwgInN0eWxl
c2hlZXQgYWx0ZXJuYXRlIikpIHsKQEAgLTE4OCw3ICsxOTQsMTMgQEAgdm9pZCBIVE1MTGlua0Vs
ZW1lbnQ6OnRva2VuaXplUmVsQXR0cmlidQogICAgICAgICAgICAgZWxzZSBpZiAoZXF1YWxJZ25v
cmluZ0Nhc2UoKml0LCAiYWx0ZXJuYXRlIikpCiAgICAgICAgICAgICAgICAgcmVsQXR0cmlidXRl
Lm1faXNBbHRlcm5hdGUgPSB0cnVlOwogICAgICAgICAgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmlu
Z0Nhc2UoKml0LCAiaWNvbiIpKQotICAgICAgICAgICAgICAgIHJlbEF0dHJpYnV0ZS5tX2lzSWNv
biA9IHRydWU7CisgICAgICAgICAgICAgICAgcmVsQXR0cmlidXRlLm1faWNvblR5cGUgPSBGYXZp
Y29uOworI2lmIEVOQUJMRShUT1VDSF9JQ09OX0xPQURJTkcpCisgICAgICAgICAgICBlbHNlIGlm
IChlcXVhbElnbm9yaW5nQ2FzZSgqaXQsICJhcHBsZS10b3VjaC1pY29uIikpCisgICAgICAgICAg
ICAgICAgcmVsQXR0cmlidXRlLm1faWNvblR5cGUgPSBUb3VjaEljb247CisgICAgICAgICAgICBl
bHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZSgqaXQsICJhcHBsZS10b3VjaC1pY29uLXByZWNvbXBv
c2VkIikpCisgICAgICAgICAgICAgICAgcmVsQXR0cmlidXRlLm1faWNvblR5cGUgPSBUb3VjaFBy
ZWNvbXBvc2VkSWNvbjsKKyNlbmRpZgogI2lmIEVOQUJMRShMSU5LX1BSRUZFVENIKQogICAgICAg
ICAgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoKml0LCAicHJlZmV0Y2giKSkKICAgICAg
ICAgICAgICAgcmVsQXR0cmlidXRlLm1faXNMaW5rUHJlZmV0Y2ggPSB0cnVlOwpAQCAtMjIxLDEw
ICsyMzMsMTAgQEAgdm9pZCBIVE1MTGlua0VsZW1lbnQ6OnByb2Nlc3MoKQogCiAgICAgLy8gSUUg
ZXh0ZW5zaW9uOiBsb2NhdGlvbiBvZiBzbWFsbCBpY29uIGZvciBsb2NhdGlvbmJhciAvIGJvb2tt
YXJrcwogICAgIC8vIFdlJ2xsIHJlY29yZCB0aGlzIFVSTCBwZXIgZG9jdW1lbnQsIGV2ZW4gaWYg
d2UgbGF0ZXIgb25seSB1c2UgaXQgaW4gdG9wIGxldmVsIGZyYW1lcwotICAgIGlmIChtX3JlbEF0
dHJpYnV0ZS5tX2lzSWNvbiAmJiBtX3VybC5pc1ZhbGlkKCkgJiYgIW1fdXJsLmlzRW1wdHkoKSkg
eworICAgIGlmIChtX3JlbEF0dHJpYnV0ZS5tX2ljb25UeXBlICE9IEludmFsaWRJY29uICYmIG1f
dXJsLmlzVmFsaWQoKSAmJiAhbV91cmwuaXNFbXB0eSgpKSB7CiAgICAgICAgIGlmICghY2hlY2tC
ZWZvcmVMb2FkRXZlbnQoKSkgCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGRvY3VtZW50
KCktPnNldEljb25VUkwobV91cmwuc3RyaW5nKCksIHR5cGUpOworICAgICAgICBkb2N1bWVudCgp
LT5zZXRJY29uVVJMKG1fdXJsLnN0cmluZygpLCB0eXBlLCBtX3JlbEF0dHJpYnV0ZS5tX2ljb25U
eXBlKTsKICAgICB9CiAKICAgICBpZiAobV9yZWxBdHRyaWJ1dGUubV9pc0ROU1ByZWZldGNoKSB7
CkBAIC00NzIsNyArNDg0LDcgQEAgdm9pZCBIVE1MTGlua0VsZW1lbnQ6OmFkZFN1YnJlc291cmNl
QXR0cgogICAgIEhUTUxFbGVtZW50OjphZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHModXJscyk7
CiAKICAgICAvLyBGYXZpY29ucyBhcmUgaGFuZGxlZCBieSBhIHNwZWNpYWwgY2FzZSBpbiBMZWdh
Y3lXZWJBcmNoaXZlOjpjcmVhdGUoKQotICAgIGlmIChtX3JlbEF0dHJpYnV0ZS5tX2lzSWNvbikK
KyAgICBpZiAobV9yZWxBdHRyaWJ1dGUubV9pY29uVHlwZSAhPSBJbnZhbGlkSWNvbikKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgaWYgKCFtX3JlbEF0dHJpYnV0ZS5tX2lzU3R5bGVTaGVldCkKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuaAkocmV2aXNpb24gODUxODcpCisr
KyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VDbGllbnQuaCIKICNpbmNs
dWRlICJDYWNoZWRSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgIkhUTUxFbGVtZW50LmgiCisj
aW5jbHVkZSAiSWNvblVSTC5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKQEAgLTM5LDcgKzQwLDcgQEAgY2xhc3MgSFRNTExpbmtFbGVtZW50IDogcHVibGljIEhU
TUxFbGVtZQogcHVibGljOgogICAgIHN0cnVjdCBSZWxBdHRyaWJ1dGUgewogICAgICAgICBib29s
IG1faXNTdHlsZVNoZWV0OwotICAgICAgICBib29sIG1faXNJY29uOworICAgICAgICBJY29uVHlw
ZSBtX2ljb25UeXBlOwogICAgICAgICBib29sIG1faXNBbHRlcm5hdGU7CiAgICAgICAgIGJvb2wg
bV9pc0ROU1ByZWZldGNoOwogI2lmIEVOQUJMRShMSU5LX1BSRUZFVENIKQpAQCAtNDksNyArNTAs
NyBAQCBwdWJsaWM6CiAKICAgICAgICAgUmVsQXR0cmlidXRlKCkKICAgICAgICAgICAgIDogbV9p
c1N0eWxlU2hlZXQoZmFsc2UpCi0gICAgICAgICAgICAsIG1faXNJY29uKGZhbHNlKQorICAgICAg
ICAgICAgLCBtX2ljb25UeXBlKEludmFsaWRJY29uKQogICAgICAgICAgICAgLCBtX2lzQWx0ZXJu
YXRlKGZhbHNlKQogICAgICAgICAgICAgLCBtX2lzRE5TUHJlZmV0Y2goZmFsc2UpCiAjaWYgRU5B
QkxFKExJTktfUFJFRkVUQ0gpCkBAIC03Niw3ICs3Nyw2IEBAIHB1YmxpYzoKIAogICAgIGJvb2wg
aXNEaXNhYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZGlzYWJsZWRTdGF0ZSA9PSBEaXNhYmxlZDsg
fQogICAgIGJvb2wgaXNFbmFibGVkVmlhU2NyaXB0KCkgY29uc3QgeyByZXR1cm4gbV9kaXNhYmxl
ZFN0YXRlID09IEVuYWJsZWRWaWFTY3JpcHQ7IH0KLSAgICBib29sIGlzSWNvbigpIGNvbnN0IHsg
cmV0dXJuIG1fcmVsQXR0cmlidXRlLm1faXNJY29uOyB9CiAgICAgYm9vbCBkaXNhYmxlZCgpIGNv
bnN0OwogICAgIHZvaWQgc2V0RGlzYWJsZWQoYm9vbCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNwcAkocmV2aXNpb24gODUx
ODcpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC05NSw3ICs5NSw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAg
IEhUTUxMaW5rRWxlbWVudDo6UmVsQXR0cmlidXRlIHJlbDsKICAgICAgICAgSFRNTExpbmtFbGVt
ZW50Ojp0b2tlbml6ZVJlbEF0dHJpYnV0ZShhdHRyaWJ1dGVWYWx1ZSwgcmVsKTsKLSAgICAgICAg
cmV0dXJuIHJlbC5tX2lzU3R5bGVTaGVldCAmJiAhcmVsLm1faXNBbHRlcm5hdGUgJiYgIXJlbC5t
X2lzSWNvbiAmJiAhcmVsLm1faXNETlNQcmVmZXRjaDsKKyAgICAgICAgcmV0dXJuIHJlbC5tX2lz
U3R5bGVTaGVldCAmJiAhcmVsLm1faXNBbHRlcm5hdGUgJiYgcmVsLm1faWNvblR5cGUgPT0gSW52
YWxpZEljb24gJiYgIXJlbC5tX2lzRE5TUHJlZmV0Y2g7CiAgICAgfQogCiAgICAgc3RhdGljIGJv
b2wgbGlua01lZGlhQXR0cmlidXRlSXNTY3JlZW4oY29uc3QgU3RyaW5nJiBhdHRyaWJ1dGVWYWx1
ZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAkocmV2aXNp
b24gODUxODcpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC03OCw2ICs3OCwyNyBAQCBzdGF0aWMgdm9pZCBzZXRBbGxEZWZlcnNM
b2FkaW5nKGNvbnN0IFJlCiAgICAgICAgIGxvYWRlcnNDb3B5W2ldLT5zZXREZWZlcnNMb2FkaW5n
KGRlZmVycyk7CiB9CiAKKy8vIFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBnaXZlbiB0eXBlLCAw
IGlzIHJldHVybmVkIGlmIHRoZSB0eXBlIGlzIGludmFsaWQuCitzdGF0aWMgc2l6ZV90IGdldElj
b25JbmRleChJY29uVHlwZSB0eXBlKSB7CisgICAgc2l6ZV90IGluZGV4ID0gMDsKKyAgICBzd2l0
Y2godHlwZSkgeworICAgICAgICBjYXNlIEZhdmljb246CisgICAgICAgICAgICBpbmRleCA9IDA7
CisgICAgICAgICAgICBicmVhazsKKyNpZiBFTkFCTEUoVE9VQ0hfSUNPTl9MT0FESU5HKQorICAg
ICAgICBjYXNlIFRvdWNoUHJlY29tcG9zZWRJY29uOgorICAgICAgICAgICAgaW5kZXggPSAxOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgVG91Y2hJY29uOgorICAgICAgICAgICAg
aW5kZXggPSAyOworICAgICAgICAgICAgYnJlYWs7CisjZW5kaWYKKyAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKyAgICByZXR1cm4gaW5k
ZXg7Cit9CisKIERvY3VtZW50TG9hZGVyOjpEb2N1bWVudExvYWRlcihjb25zdCBSZXNvdXJjZVJl
cXVlc3QmIHJlcSwgY29uc3QgU3Vic3RpdHV0ZURhdGEmIHN1YnN0aXR1dGVEYXRhKQogICAgIDog
bV9kZWZlck1haW5SZXNvdXJjZURhdGFMb2FkKHRydWUpCiAgICAgLCBtX2ZyYW1lKDApCkBAIC02
NjEsMTQgKzY4MiwxOSBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpzZXRUaXRsZShjb25zdCBTdHJp
CiAgICAgfQogfQogCi12b2lkIERvY3VtZW50TG9hZGVyOjpzZXRJY29uVVJMKGNvbnN0IFN0cmlu
ZyYgaWNvblVSTCkKK0ljb25VUkwgRG9jdW1lbnRMb2FkZXI6Omljb25VUkwoSWNvblR5cGUgaWNv
blR5cGUpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faWNvblVSTHNbZ2V0SWNvbkluZGV4KGljb25U
eXBlKV07Cit9CisKK3ZvaWQgRG9jdW1lbnRMb2FkZXI6OnNldEljb25VUkwoY29uc3QgSWNvblVS
TCYgdXJsKQogewotICAgIGlmIChpY29uVVJMLmlzRW1wdHkoKSkKKyAgICBpZiAodXJsLm1faWNv
blVSTC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChtX3BhZ2VJY29uVVJM
ICE9IGljb25VUkwpIHsKLSAgICAgICAgbV9wYWdlSWNvblVSTCA9IGljb25VUkw7Ci0gICAgICAg
IGZyYW1lTG9hZGVyKCktPmRpZENoYW5nZUljb25zKHRoaXMpOworICAgIGlmIChpY29uVVJMKHVy
bC5tX2ljb25UeXBlKS5tX2ljb25VUkwgIT0gdXJsLm1faWNvblVSTCkgeworICAgICAgICAgICAg
bV9pY29uVVJMc1tnZXRJY29uSW5kZXgodXJsLm1faWNvblR5cGUpXSA9IHVybDsKKyAgICAgICAg
ZnJhbWVMb2FkZXIoKS0+ZGlkQ2hhbmdlSWNvbnModGhpcywgdXJsLm1faWNvblR5cGUpOwogICAg
IH0KIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgJKHJldmlz
aW9uIDg1MTg3KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJEb2N1bWVudExvYWRUaW1p
bmcuaCIKICNpbmNsdWRlICJEb2N1bWVudFdyaXRlci5oIgogI2luY2x1ZGUgIkljb25EYXRhYmFz
ZUJhc2UuaCIKKyNpbmNsdWRlICJJY29uVVJMLmgiCiAjaW5jbHVkZSAiTmF2aWdhdGlvbkFjdGlv
bi5oIgogI2luY2x1ZGUgIlJlc291cmNlRXJyb3IuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVl
c3QuaCIKQEAgLTEyMyw3ICsxMjQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJv
b2wgaXNMb2FkaW5nSW5BUElTZW5zZSgpIGNvbnN0OwogICAgICAgICB2b2lkIHNldFByaW1hcnlM
b2FkQ29tcGxldGUoYm9vbCk7CiAgICAgICAgIHZvaWQgc2V0VGl0bGUoY29uc3QgU3RyaW5nV2l0
aERpcmVjdGlvbiYpOwotICAgICAgICB2b2lkIHNldEljb25VUkwoY29uc3QgU3RyaW5nJik7Cisg
ICAgICAgIHZvaWQgc2V0SWNvblVSTChjb25zdCBJY29uVVJMJik7CiAgICAgICAgIGNvbnN0IFN0
cmluZyYgb3ZlcnJpZGVFbmNvZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fb3ZlcnJpZGVFbmNvZGlu
ZzsgfQogCiAjaWYgUExBVEZPUk0oTUFDKQpAQCAtMTcwLDcgKzE3MSw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogICAgICAgICB2b2lkIHN0b3BSZWNvcmRpbmdSZXNwb25zZXMoKTsKICAgICAg
ICAgY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYgdGl0bGUoKSBjb25zdCB7IHJldHVybiBtX3Bh
Z2VUaXRsZTsgfQotICAgICAgICBjb25zdCBTdHJpbmcmIGljb25VUkwoKSBjb25zdCB7IHJldHVy
biBtX3BhZ2VJY29uVVJMOyB9CisgICAgICAgIEljb25VUkwgaWNvblVSTChJY29uVHlwZSBpY29u
VHlwZSkgY29uc3Q7CiAKICAgICAgICAgS1VSTCB1cmxGb3JIaXN0b3J5KCkgY29uc3Q7CiAgICAg
ICAgIGJvb2wgdXJsRm9ySGlzdG9yeVJlZmxlY3RzRmFpbHVyZSgpIGNvbnN0OwpAQCAtMzAwLDcg
KzMwMSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCBtX3dhc09ubG9hZEhh
bmRsZWQ7CiAKICAgICAgICAgU3RyaW5nV2l0aERpcmVjdGlvbiBtX3BhZ2VUaXRsZTsKLSAgICAg
ICAgU3RyaW5nIG1fcGFnZUljb25VUkw7CisgICAgICAgIEljb25VUkwgbV9pY29uVVJMc1tJQ09O
X0NPVU5UXTsKIAogICAgICAgICBTdHJpbmcgbV9vdmVycmlkZUVuY29kaW5nOwogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCShyZXZpc2lvbiA4NTE4NykKKysrIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAkod29ya2luZyBjb3B5KQpAQCAtMjcxLDcg
KzI3MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlSWNv
bigpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2Fk
KCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFN0
cmluZ1dpdGhEaXJlY3Rpb24mKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFu
Z2VJY29ucygpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZUljb25zKElj
b25UeXBlKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDb21taXRMb2FkKCkgeyB9
CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9hZChjb25zdCBS
ZXNvdXJjZUVycm9yJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbExvYWQo
Y29uc3QgUmVzb3VyY2VFcnJvciYpIHsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVM
b2FkZXIuY3BwCShyZXZpc2lvbiA4NTE4NykKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFt
ZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY5LDYgKzY5LDcgQEAKICNpbmNsdWRlICJI
aXN0b3J5SXRlbS5oIgogI2luY2x1ZGUgIkljb25EYXRhYmFzZS5oIgogI2luY2x1ZGUgIkljb25M
b2FkZXIuaCIKKyNpbmNsdWRlICJJY29uVVJMLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ29udHJv
bGxlci5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUg
IkxvZ2dpbmcuaCIKQEAgLTQ2OCwxOCArNDY5LDUzIEBAIGJvb2wgRnJhbWVMb2FkZXI6OmNsb3Nl
VVJMKCkKIAogS1VSTCBGcmFtZUxvYWRlcjo6aWNvblVSTCgpCiB7Ci0gICAgLy8gSWYgdGhpcyBp
c24ndCBhIHRvcCBsZXZlbCBmcmFtZSwgcmV0dXJuIG5vdGhpbmcKKyAgICBWZWN0b3I8SWNvblVS
TD4gdXJscyA9IGljb25VUkxzKEZhdmljb24pOworICAgIHJldHVybiB1cmxzLmlzRW1wdHkoKSA/
IEtVUkwoKSA6IHVybHNbMF0ubV9pY29uVVJMOworfQorCitWZWN0b3I8SWNvblVSTD4gRnJhbWVM
b2FkZXI6Omljb25VUkxzKGludCBpY29uVHlwZXMpIHsKKyAgICBWZWN0b3I8SWNvblVSTD4gaWNv
blVSTHM7CisgICAgaWYgKGljb25UeXBlcyAmIEZhdmljb24gJiYgIWZpbGxJY29uVVJMKEZhdmlj
b24sICZpY29uVVJMcykpCisgICAgICAgICAgICBpY29uVVJMcy5hcHBlbmQoZ2V0RGVmYXVsdElj
b25VUkwoRmF2aWNvbikpOworCisjaWYgRU5BQkxFKFRPVUNIX0lDT05fTE9BRElORykKKyAgICBi
b29sIGRpZEdvdFByZWNvbXBvc2VkSWNvbiA9IGZhbHNlOworICAgIGlmIChpY29uVHlwZXMgJiBU
b3VjaFByZWNvbXBvc2VkSWNvbikKKyAgICAgICAgZGlkR290UHJlY29tcG9zZWRJY29uID0gZmls
bEljb25VUkwoVG91Y2hQcmVjb21wb3NlZEljb24sICZpY29uVVJMcyk7CisKKyAgICBib29sIGRp
ZEdvdFRvdWNoSWNvbiA9IGZhbHNlOworICAgIGlmIChpY29uVHlwZXMgJiBUb3VjaEljb24pCisg
ICAgICAgIGRpZEdvdFRvdWNoSWNvbiA9IGZpbGxJY29uVVJMKFRvdWNoSWNvbiwgJmljb25VUkxz
KTsKKworICAgIC8vIE9ubHkgcmV0dXJuIHRoZSBkZWZhdWx0IHRvdWNoIGljb25zIHdoZW4gdGhl
IGJvdGggd2VyZSByZXF1aXJlZCBhbmQgbmVpdGhlciB3YXMgZ290dGVuLgorICAgIGlmIChpY29u
VHlwZXMgJiBUb3VjaFByZWNvbXBvc2VkSWNvbiAmJiBpY29uVHlwZXMgJiBUb3VjaEljb24gJiYg
IWRpZEdvdFByZWNvbXBvc2VkSWNvbiAmJiAhZGlkR290VG91Y2hJY29uKSB7CisgICAgICAgIGlj
b25VUkxzLmFwcGVuZChnZXREZWZhdWx0SWNvblVSTChUb3VjaFByZWNvbXBvc2VkSWNvbikpOwor
ICAgICAgICBpY29uVVJMcy5hcHBlbmQoZ2V0RGVmYXVsdEljb25VUkwoVG91Y2hJY29uKSk7Cisg
ICAgfQorI2VuZGlmCisgICAgcmV0dXJuIGljb25VUkxzOworfQorCitib29sIEZyYW1lTG9hZGVy
OjpmaWxsSWNvblVSTChJY29uVHlwZSBpY29uVHlwZSwgVmVjdG9yPEljb25VUkw+KiBpY29uVVJM
cykgeworICAgIC8vIElmIHRoaXMgaXNuJ3QgYSB0b3AgbGV2ZWwgZnJhbWUsIHJldHVybgogICAg
IGlmIChtX2ZyYW1lLT50cmVlKCkgJiYgbV9mcmFtZS0+dHJlZSgpLT5wYXJlbnQoKSkKLSAgICAg
ICAgcmV0dXJuIEtVUkwoKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8gSWYgd2Ug
aGF2ZSBhbiBpY29uVVJMIGZyb20gYSBMaW5rIGVsZW1lbnQsIHJldHVybiB0aGF0Ci0gICAgaWYg
KCFtX2ZyYW1lLT5kb2N1bWVudCgpLT5pY29uVVJMKCkuaXNFbXB0eSgpKQotICAgICAgICByZXR1
cm4gS1VSTChQYXJzZWRVUkxTdHJpbmcsIG1fZnJhbWUtPmRvY3VtZW50KCktPmljb25VUkwoKSk7
CisgICAgSWNvblVSTCB1cmwgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT5pY29uVVJMKGljb25UeXBl
KTsKKyAgICBpZiAodXJsLm1faWNvblVSTC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIGljb25VUkxzLT5hcHBlbmQodXJsKTsKIAorICAgIHJldHVybiB0cnVlOworfQor
CitJY29uVVJMIEZyYW1lTG9hZGVyOjpnZXREZWZhdWx0SWNvblVSTChJY29uVHlwZSBpY29uVHlw
ZSkgewogICAgIC8vIERvbid0IHJldHVybiBhIGZhdmljb24gaWNvblVSTCB1bmxlc3Mgd2UncmUg
aHR0cCBvciBodHRwcwogICAgIEtVUkwgZG9jdW1lbnRVUkwgPSBtX2ZyYW1lLT5kb2N1bWVudCgp
LT51cmwoKTsKICAgICBpZiAoIWRvY3VtZW50VVJMLnByb3RvY29sSW5IVFRQRmFtaWx5KCkpCi0g
ICAgICAgIHJldHVybiBLVVJMKCk7CisgICAgICAgIHJldHVybiBJY29uVVJMKCk7CiAKICAgICBL
VVJMIHVybDsKICAgICBib29sIGNvdWxkU2V0UHJvdG9jb2wgPSB1cmwuc2V0UHJvdG9jb2woZG9j
dW1lbnRVUkwucHJvdG9jb2woKSk7CkBAIC00ODcsOCArNTIzLDE5IEBAIEtVUkwgRnJhbWVMb2Fk
ZXI6Omljb25VUkwoKQogICAgIHVybC5zZXRIb3N0KGRvY3VtZW50VVJMLmhvc3QoKSk7CiAgICAg
aWYgKGRvY3VtZW50VVJMLmhhc1BvcnQoKSkKICAgICAgICAgdXJsLnNldFBvcnQoZG9jdW1lbnRV
UkwucG9ydCgpKTsKLSAgICB1cmwuc2V0UGF0aCgiL2Zhdmljb24uaWNvIik7Ci0gICAgcmV0dXJu
IHVybDsKKyAgICBpZiAoaWNvblR5cGUgPT0gRmF2aWNvbikgeworICAgICAgICB1cmwuc2V0UGF0
aCgiL2Zhdmljb24uaWNvIik7CisgICAgICAgIHJldHVybiBJY29uVVJMKEtVUkwoUGFyc2VkVVJM
U3RyaW5nLCB1cmwpLCBGYXZpY29uKTsKKyNpZiBFTkFCTEUoVE9VQ0hfSUNPTl9MT0FESU5HKQor
ICAgIH0gZWxzZSBpZiAoaWNvblR5cGUgPT0gVG91Y2hQcmVjb21wb3NlZEljb24pIHsKKyAgICAg
ICAgdXJsLnNldFBhdGgoIi9hcHBsZS10b3VjaC1pY29uLXByZWNvbXBvc2VkLnBuZyIpOworICAg
ICAgICByZXR1cm4gSWNvblVSTChLVVJMKFBhcnNlZFVSTFN0cmluZywgdXJsKSwgVG91Y2hQcmVj
b21wb3NlZEljb24pOworICAgIH0gZWxzZSBpZiAoaWNvblR5cGUgPT0gVG91Y2hJY29uKSB7Cisg
ICAgICAgIHVybC5zZXRQYXRoKCIvYXBwbGUtdG91Y2gtaWNvbi5wbmciKTsKKyAgICAgICAgcmV0
dXJuIEljb25VUkwoS1VSTChQYXJzZWRVUkxTdHJpbmcsIHVybCksIFRvdWNoSWNvbik7CisjZW5k
aWYKKyAgICB9CisgICAgcmV0dXJuIEljb25VUkwoKTsKIH0KIAogYm9vbCBGcmFtZUxvYWRlcjo6
ZGlkT3BlblVSTChjb25zdCBLVVJMJiB1cmwpCkBAIC0zMzgyLDcgKzM0MjksNyBAQCB2b2lkIEZy
YW1lTG9hZGVyOjpzZXRUaXRsZShjb25zdCBTdHJpbmdXCiAgICAgZG9jdW1lbnRMb2FkZXIoKS0+
c2V0VGl0bGUodGl0bGUpOwogfQogCi12b2lkIEZyYW1lTG9hZGVyOjpzZXRJY29uVVJMKGNvbnN0
IFN0cmluZyYgaWNvblVSTCkKK3ZvaWQgRnJhbWVMb2FkZXI6OnNldEljb25VUkwoY29uc3QgSWNv
blVSTCYgaWNvblVSTCkKIHsKICAgICBkb2N1bWVudExvYWRlcigpLT5zZXRJY29uVVJMKGljb25V
UkwpOwogfQpAQCAtMzQ2MCwxMCArMzUwNywxMCBAQCB2b2lkIEZyYW1lTG9hZGVyOjpkaWRDaGFu
Z2VUaXRsZShEb2N1bWVuCiAgICAgfQogfQogCi12b2lkIEZyYW1lTG9hZGVyOjpkaWRDaGFuZ2VJ
Y29ucyhEb2N1bWVudExvYWRlciogbG9hZGVyKQordm9pZCBGcmFtZUxvYWRlcjo6ZGlkQ2hhbmdl
SWNvbnMoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgSWNvblR5cGUgdHlwZSkKIHsKICAgICBpZiAo
bG9hZGVyID09IG1fZG9jdW1lbnRMb2FkZXIpCi0gICAgICAgIG1fY2xpZW50LT5kaXNwYXRjaERp
ZENoYW5nZUljb25zKCk7CisgICAgICAgIG1fY2xpZW50LT5kaXNwYXRjaERpZENoYW5nZUljb25z
KHR5cGUpOwogfQogCiB2b2lkIEZyYW1lTG9hZGVyOjpkaXNwYXRjaERpZENvbW1pdExvYWQoKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgJKHJldmlzaW9uIDg1MTg3KQorKysg
U291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2
LDYgKzM2LDcgQEAKICNpbmNsdWRlICJGcmFtZUxvYWRlclR5cGVzLmgiCiAjaW5jbHVkZSAiSGlz
dG9yeUNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJJY29uRGF0YWJhc2VCYXNlLmgiCisjaW5jbHVk
ZSAiSWNvblVSTC5oIgogI2luY2x1ZGUgIlBvbGljeUNoZWNrZXIuaCIKICNpbmNsdWRlICJSZXNv
dXJjZUxvYWROb3RpZmllci5oIgogI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCkBAIC0xOTIsNyAr
MTkzLDcgQEAgcHVibGljOgogICAgIGJvb2wgc3ViZnJhbWVJc0xvYWRpbmcoKSBjb25zdDsKICAg
ICB2b2lkIHdpbGxDaGFuZ2VUaXRsZShEb2N1bWVudExvYWRlciopOwogICAgIHZvaWQgZGlkQ2hh
bmdlVGl0bGUoRG9jdW1lbnRMb2FkZXIqKTsKLSAgICB2b2lkIGRpZENoYW5nZUljb25zKERvY3Vt
ZW50TG9hZGVyKik7CisgICAgdm9pZCBkaWRDaGFuZ2VJY29ucyhEb2N1bWVudExvYWRlciosIElj
b25UeXBlKTsKIAogICAgIEZyYW1lTG9hZFR5cGUgbG9hZFR5cGUoKSBjb25zdDsKIApAQCAtMjM0
LDcgKzIzNSwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRFbmREb2N1bWVudCgpOwogICAgIHZv
aWQgd2lsbFNldEVuY29kaW5nKCk7CiAKKyAgICAvLyBSZXR1cm5zIGZhdmljb24uCiAgICAgS1VS
TCBpY29uVVJMKCk7CisKKyAgICAvLyBSZXR1cm5zIHRoZSBnaXZlbiBpY29uVHlwZXMnIEljb25V
UkxzLCBpY29uVHlwZXMgY291bGQgYmUgYW55IGNvbWJpbmF0aW9uIG9mIEljb25UeXBlLgorICAg
IFZlY3RvcjxJY29uVVJMPiBpY29uVVJMcyhpbnQgaWNvblR5cGVzKTsKICAgICB2b2lkIGNvbW1p
dEljb25VUkxUb0ljb25EYXRhYmFzZShjb25zdCBLVVJMJik7CiAKICAgICBLVVJMIGJhc2VVUkwo
KSBjb25zdDsKQEAgLTI4NSw3ICsyOTAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjYW5jZWxBbmRD
bGVhcigpOwogCiAgICAgdm9pZCBzZXRUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJik7
Ci0gICAgdm9pZCBzZXRJY29uVVJMKGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgc2V0SWNvblVS
TChjb25zdCBJY29uVVJMJik7CiAKICAgICB2b2lkIGNvbW1pdFByb3Zpc2lvbmFsTG9hZCgpOwog
ICAgIGJvb2wgaXNMb2FkaW5nRnJvbUNhY2hlZFBhZ2UoKSBjb25zdCB7IHJldHVybiBtX2xvYWRp
bmdGcm9tQ2FjaGVkUGFnZTsgfQpAQCAtNDI5LDYgKzQzNCw5IEBAIHByaXZhdGU6CiAKICAgICB2
b2lkIHVwZGF0ZVNhbmRib3hGbGFncygpOwogCisgICAgYm9vbCBmaWxsSWNvblVSTChJY29uVHlw
ZSBpY29uVHlwZSwgVmVjdG9yPEljb25VUkw+KiBpY29uVVJMcyk7CisgICAgSWNvblVSTCBnZXRE
ZWZhdWx0SWNvblVSTChJY29uVHlwZSBpY29uVHlwZSk7CisKICAgICBGcmFtZSogbV9mcmFtZTsK
ICAgICBGcmFtZUxvYWRlckNsaWVudCogbV9jbGllbnQ7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCShyZXZpc2lvbiA4NTE4NykKKysrIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2
ICszMCw3IEBACiAjZGVmaW5lIEZyYW1lTG9hZGVyQ2xpZW50X2gKIAogI2luY2x1ZGUgIkZyYW1l
TG9hZGVyVHlwZXMuaCIKKyNpbmNsdWRlICJJY29uVVJMLmgiCiAjaW5jbHVkZSAiU2Nyb2xsVHlw
ZXMuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
QEAgLTE0MSw3ICsxNDIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaERpZFJlY2VpdmVJY29uKCkgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpID0gMDsKICAgICAgICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mKSA9
IDA7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZUljb25zKCkgPSAwOwor
ICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucyhJY29uVHlwZSkgPSAw
OwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDb21taXRMb2FkKCkgPSAwOwogICAg
ICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGYWlsUHJvdmlzaW9uYWxMb2FkKGNvbnN0IFJl
c291cmNlRXJyb3ImKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxM
b2FkKGNvbnN0IFJlc291cmNlRXJyb3ImKSA9IDA7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiA4
NTE4NykKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDE1IEBACis8PDw8PDw8IC5taW5lCisyMDExLTA0LTIyICBUYW8gQmFpICA8bWljaGFlbGJh
aUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgTmVlZCBhIHNob3J0IGRlc2NyaXB0aW9uIGFuZCBidWcgVVJMIChPT1BTISkKKwor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRD
aGFuZ2VJY29ucyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5oOgorCis9PT09PT09CiAyMDExLTA0LTI3ICBTYW0gV2VpbmlnICA8c2Ft
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBSb2Jlbi4KQEAgLTQ2OSw2
ICs0ODEsNyBAQAogICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50LmNwcDoKICAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50OjpzaG91bGRJbnRl
cnJ1cHRKYXZhU2NyaXB0KToKIAorPj4+Pj4+PiAucjg0OTE3CiAyMDExLTA0LTIyICBEYW4gQmVy
bnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5p
Zy4KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCShyZXZpc2lvbiA4NTE4
NykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MTgsNyArNDE4LDcgQEAgdm9pZCBX
ZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRSZQogICAgIHdlYlBhZ2UtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWUobV9mcmFtZS0+ZnJh
bWVJRCgpLCB0aXRsZS5zdHJpbmcoKSwgSW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29kZXIo
dXNlckRhdGEuZ2V0KCkpKSk7CiB9CiAKLXZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3Bh
dGNoRGlkQ2hhbmdlSWNvbnMoKQordm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hE
aWRDaGFuZ2VJY29ucyhXZWJDb3JlOjpJY29uVHlwZSkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgp
OwogfQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAkocmV2aXNpb24gODUxODcp
CisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTg1LDcgKzg1LDcgQEAgcHJpdmF0ZToKICAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbigpOwogICAgIHZpcnR1YWwgdm9p
ZCBkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCk7CiAgICAgdmlydHVhbCB2b2lkIGRp
c3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFdlYkNvcmU6OlN0cmluZ1dpdGhEaXJlY3Rpb24m
KTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygpOworICAgIHZpcnR1
YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZUljb25zKFdlYkNvcmU6Okljb25UeXBlKTsKICAgICB2
aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDb21taXRMb2FkKCk7CiAgICAgdmlydHVhbCB2b2lkIGRp
c3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9hZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9y
Jik7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbExvYWQoY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VFcnJvciYpOwpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHJldmlzaW9u
IDg1MTg3KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwzMyBAQAorCisyMDExLTA0LTIyICBUYW8gQmFpICA8bWljaGFlbGJhaUBj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgUG9wdWxhdGUgdG91Y2gtaWNvbiB1cmwgdG8gRnJhbWVMb2FkZXJDbGllbnQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU5MTQzCisKKyAgICAg
ICAgUmVzcGVjdGVkIHRoZSBjaGFuZ2Ugb2YgRnJhbWVMb2FkZXJDbGllbnQuCisgICAgICAgIEFk
ZGVkIFdlYkljb25VUkwgYW5kIFdlYkljb25UeXBlIHJlc3BvbmRpbmcgdGhlIG5ldyBJY29uVVJM
IGFuZCBJY29uVHlwZS4KKyAgICAgICAgU3VwcG9ydGVkIHRvIGdldCB0aGUgbXVsdGlwbGUgaWNv
biB1cmxzLgorCisgICAgICAgICogV2ViS2l0Lmd5cDoKKyAgICAgICAgKiBwdWJsaWMvV2ViRnJh
bWUuaDoKKyAgICAgICAgKiBwdWJsaWMvV2ViRnJhbWVDbGllbnQuaDoKKyAgICAgICAgKFdlYktp
dDo6V2ViRnJhbWVDbGllbnQ6OmRpZENoYW5nZUljb25zKToKKyAgICAgICAgKiBwdWJsaWMvV2Vi
SWNvblVSTC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViSWNvblVSTDo6V2ViSWNvblVS
TCk6CisgICAgICAgICogc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6ZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucyk6Cisg
ICAgICAgICogc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5oOgorICAgICAgICAqIHNyYy9XZWJG
cmFtZUltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUltcGw6OmZhdkljb25VUkwp
OgorICAgICAgICAqIHNyYy9XZWJGcmFtZUltcGwuaDoKKyAgICAgICAgKiBzcmMvV2ViSWNvblR5
cGVVdGlsaXRpZXMuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViSWNvblR5cGVVdGls
aXRpZXM6OkNvbnZlcnRXZWJJY29uVHlwZVRvSWNvblR5cGUpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJJY29uVHlwZVV0aWxpdGllczo6Q29udmVydEljb25UeXBlVG9XZWJJY29uVHlwZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkljb25UeXBlVXRpbGl0aWVzOjpDb252ZXJ0V2ViSWNvblR5cGVzVG9J
Y29uVHlwZXMpOgorICAgICAgICAqIHNyYy9XZWJJY29uVHlwZVV0aWxpdGllcy5oOiBBZGRlZC4K
KwogMjAxMS0wNC0yNyAgRG1pdHJ5IExvbW92ICA8ZHNsb21vdkBnb29nbGUuY29tPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IERhdmlkIExldmluLgpAQCAtMzkxLDYgKzQyMSw3IEBACiAgICAgICAg
ICogdGVzdHMvVHJhbnNwYXJlbmN5V2luVGVzdC5jcHA6CiAgICAgICAgIChXZWJDb3JlOjpURVNU
KToKIAorPj4+Pj4+PiAucjg0OTE3CiAyMDExLTA0LTIyICBNaWtoYWlsIE5hZ2Fub3YgIDxtbmFn
YW5vdkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgUGF2ZWwgRmVsZG1hbi4K
SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAJKHJldmlzaW9uIDg1MTg3KQorKysgU291
cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCSh3b3JraW5nIGNvcHkpCkBAIC0xODUsNiAr
MTg1LDcgQEAKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkhUVFBCb2R5LmgnLAogICAgICAg
ICAgICAgICAgICdwdWJsaWMvV2ViSFRUUExvYWRJbmZvLmgnLAogICAgICAgICAgICAgICAgICdw
dWJsaWMvV2ViSWNvbkxvYWRpbmdDb21wbGV0aW9uLmgnLAorICAgICAgICAgICAgICAgICdwdWJs
aWMvV2ViSWNvblR5cGUuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJJbWFnZS5oJywK
ICAgICAgICAgICAgICAgICAncHVibGljL1dlYkltYWdlRGVjb2Rlci5oJywKICAgICAgICAgICAg
ICAgICAncHVibGljL1dlYklEQkNhbGxiYWNrcy5oJywKQEAgLTQ3NSw2ICs0NzYsOCBAQAogICAg
ICAgICAgICAgICAgICdzcmMvV2ViSGlzdG9yeUl0ZW0uY3BwJywKICAgICAgICAgICAgICAgICAn
c3JjL1dlYkhUVFBCb2R5LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJIVFRQTG9hZElu
Zm8uY3BwJywKKyAgICAgICAgICAgICAgICAnc3JjL1dlYkljb25UeXBlVXRpbGl0aWVzLmNwcCcs
CisgICAgICAgICAgICAgICAgJ3NyYy9XZWJJY29uVHlwZVV0aWxpdGllcy5oJywKICAgICAgICAg
ICAgICAgICAnc3JjL1dlYkljb25Mb2FkaW5nQ29tcGxldGlvbkltcGwuY3BwJywKICAgICAgICAg
ICAgICAgICAnc3JjL1dlYkljb25Mb2FkaW5nQ29tcGxldGlvbkltcGwuaCcsCiAgICAgICAgICAg
ICAgICAgJ3NyYy9XZWJJREJDYWxsYmFja3NJbXBsLmNwcCcsCkluZGV4OiBTb3VyY2UvV2ViS2l0
L2Nocm9taXVtL2ZlYXR1cmVzLmd5cGkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJv
bWl1bS9mZWF0dXJlcy5neXBpCShyZXZpc2lvbiA4NTE4NykKKysrIFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vZmVhdHVyZXMuZ3lwaQkod29ya2luZyBjb3B5KQpAQCAtODgsNiArODgsNyBAQAogICAg
ICAgICAnRU5BQkxFX1NWR19GT1JFSUdOX09CSkVDVD0xJywKICAgICAgICAgJ0VOQUJMRV9TVkdf
VVNFPTEnLAogICAgICAgICAnRU5BQkxFX1RPVUNIX0VWRU5UUz0xJywKKyAgICAgICAgJ0VOQUJM
RV9UT1VDSF9JQ09OX0xPQURJTkc9MScsCiAgICAgICAgICdFTkFCTEVfVjhfU0NSSVBUX0RFQlVH
X1NFUlZFUj0xJywKICAgICAgICAgJ0VOQUJMRV9WSURFTz0xJywKICAgICAgICAgJ0VOQUJMRV9X
RUJfQVVESU89MCcsCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFt
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZyYW1l
LmgJKHJldmlzaW9uIDg1MTg3KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
RnJhbWUuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAogCiAjaW5jbHVkZSAiV2Vi
Q2FudmFzLmgiCiAjaW5jbHVkZSAiV2ViRmlsZVN5c3RlbS5oIgorI2luY2x1ZGUgIldlYkljb25V
UkwuaCIKICNpbmNsdWRlICJXZWJOb2RlLmgiCiAjaW5jbHVkZSAiV2ViVVJMLmgiCiAKQEAgLTEy
OSw5ICsxMzAsOSBAQCBwdWJsaWM6CiAgICAgLy8gZGF0YVNvdXJjZSgpLT5yZXF1ZXN0KCkudXJs
KCkuCiAgICAgdmlydHVhbCBXZWJVUkwgdXJsKCkgY29uc3QgPSAwOwogCi0gICAgLy8gVGhlIHVy
bCBvZiB0aGUgZmF2aWNvbiAoaWYgYW55KSBzcGVjaWZpZWQgYnkgdGhlIGRvY3VtZW50IGxvYWRl
ZCBpbgorICAgIC8vIFRoZSB1cmxzIG9mIHRoZSBmYXZpY29uIChpZiBhbnkpIHNwZWNpZmllZCBi
eSB0aGUgZG9jdW1lbnQgbG9hZGVkIGluCiAgICAgLy8gdGhpcyBmcmFtZS4KLSAgICB2aXJ0dWFs
IFdlYlVSTCBmYXZJY29uVVJMKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgc3RkOjp2ZWN0b3I8
V2ViSWNvblVSTD4gZmF2SWNvblVSTChpbnQpIGNvbnN0ID0gMDsKIAogICAgIC8vIFRoZSB1cmwg
b2YgdGhlIE9wZW5TZWFyY2ggRGVzcmlwdGlvbiBEb2N1bWVudCAoaWYgYW55KSBzcGVjaWZpZWQg
YnkKICAgICAvLyB0aGUgZG9jdW1lbnQgbG9hZGVkIGluIHRoaXMgZnJhbWUuCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZUNsaWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZyYW1lQ2xpZW50LmgJKHJldmlzaW9u
IDg1MTg3KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWVDbGllbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAogCiAjaW5jbHVkZSAiV2ViQ29tbW9u
LmgiCiAjaW5jbHVkZSAiV2ViRmlsZVN5c3RlbS5oIgorI2luY2x1ZGUgIldlYkljb25VUkwuaCIK
ICNpbmNsdWRlICJXZWJOYXZpZ2F0aW9uUG9saWN5LmgiCiAjaW5jbHVkZSAiV2ViTmF2aWdhdGlv
blR5cGUuaCIKICNpbmNsdWRlICJXZWJTdG9yYWdlUXVvdGFUeXBlLmgiCkBAIC0yMTUsNyArMjE2
LDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIC8vIFRoZSBpY29ucyBmb3IgdGhlIHBhZ2UgaGF2
ZSBjaGFuZ2VkLgotICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VJY29ucyhXZWJGcmFtZSopIHsg
fQorICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VJY29ucyhXZWJGcmFtZSosIFdlYkljb25UeXBl
KSB7IH0KIAogICAgIC8vIFRoZSBmcmFtZSdzIGRvY3VtZW50IGZpbmlzaGVkIGxvYWRpbmcuCiAg
ICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaERvY3VtZW50TG9hZChXZWJGcmFtZSopIHsgfQpJbmRl
eDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSWNvblVSTC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkljb25VUkwuaAkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkljb25VUkwuaAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSw2NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViSWNvblVSTF9oCisjZGVmaW5lIFdlYklj
b25VUkxfaAorCisjaW5jbHVkZSAiV2ViVVJMLmgiCisKKyNpbmNsdWRlIDx2ZWN0b3I+CisKK25h
bWVzcGFjZSBXZWJLaXQgeworCitlbnVtIFdlYkljb25UeXBlIHsKKyAgICBJbnZhbGlkSWNvbiA9
IDAsCisgICAgRmF2aWNvbiA9IDEsCisgICAgVG91Y2hJY29uID0gMSA8PCAxLAorICAgIFRvdWNo
UHJlY29tcG9zZWRJY29uID0gMSA8PCAyCit9OworCitzdHJ1Y3QgV2ViSWNvblVSTCB7CisgICAg
V2ViSWNvblVSTCgpCisgICAgICAgIDogbV9pY29uVHlwZShJbnZhbGlkSWNvbikKKyAgICB7Cisg
ICAgfQorCisgICAgV2ViSWNvblVSTChjb25zdCBXZWJVUkwmIHVybCwgV2ViSWNvblR5cGUgdHlw
ZSkKKyAgICAgICAgOiBtX2ljb25UeXBlKHR5cGUpCisgICAgICAgICwgbV9pY29uVVJMKHVybCkK
KyAgICB7CisgICAgfQorCisgICAgV2ViSWNvblR5cGUgbV9pY29uVHlwZTsKKyAgICBXZWJVUkwg
bV9pY29uVVJMOworfTsKKworfQorCisjZW5kaWYgIC8vIFdlYkljb25VUkxfaAoKUHJvcGVydHkg
Y2hhbmdlcyBvbjogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSWNvblVSTC5oCl9f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX18KQWRkZWQ6IHN2bjplb2wtc3R5bGUKICAgKyBMRgoKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcAkocmV2
aXNpb24gODUxODcpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNs
aWVudEltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MSw2ICs2MSw3IEBACiAjaW5jbHVkZSAi
V2ViRm9ybUVsZW1lbnQuaCIKICNpbmNsdWRlICJXZWJGcmFtZUNsaWVudC5oIgogI2luY2x1ZGUg
IldlYkZyYW1lSW1wbC5oIgorI2luY2x1ZGUgIldlYkljb25UeXBlVXRpbGl0aWVzLmgiCiAjaW5j
bHVkZSAiV2ViS2l0LmgiCiAjaW5jbHVkZSAiV2ViS2l0Q2xpZW50LmgiCiAjaW5jbHVkZSAiV2Vi
TWltZVJlZ2lzdHJ5LmgiCkBAIC03NDgsMTAgKzc0OSwxMCBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xp
ZW50SW1wbDo6ZGlzcGF0Y2hEaWRSCiAgICAgICAgIG1fd2ViRnJhbWUtPmNsaWVudCgpLT5kaWRS
ZWNlaXZlVGl0bGUobV93ZWJGcmFtZSwgdGl0bGUuc3RyaW5nKCksIHRpdGxlLmRpcmVjdGlvbigp
ID09IExUUiA/IFdlYlRleHREaXJlY3Rpb25MZWZ0VG9SaWdodCA6IFdlYlRleHREaXJlY3Rpb25S
aWdodFRvTGVmdCk7CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRJbXBsOjpkaXNwYXRjaERp
ZENoYW5nZUljb25zKCkKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRJbXBsOjpkaXNwYXRjaERpZENo
YW5nZUljb25zKFdlYkNvcmU6Okljb25UeXBlIHR5cGUpCiB7CiAgICAgaWYgKG1fd2ViRnJhbWUt
PmNsaWVudCgpKQotICAgICAgICBtX3dlYkZyYW1lLT5jbGllbnQoKS0+ZGlkQ2hhbmdlSWNvbnMo
bV93ZWJGcmFtZSk7CisgICAgICAgIG1fd2ViRnJhbWUtPmNsaWVudCgpLT5kaWRDaGFuZ2VJY29u
cyhtX3dlYkZyYW1lLCBXZWJJY29uVHlwZVV0aWxpdGllczo6Q29udmVydEljb25UeXBlVG9XZWJJ
Y29uVHlwZSh0eXBlKSk7CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRJbXBsOjpkaXNwYXRj
aERpZENvbW1pdExvYWQoKQpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVM
b2FkZXJDbGllbnRJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmgJKHJldmlzaW9uIDg1MTg3KQorKysgU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEwNSw3ICsxMDUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlk
UmVjZWl2ZUljb24oKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lv
bmFsTG9hZCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25z
dCBXZWJDb3JlOjpTdHJpbmdXaXRoRGlyZWN0aW9uJik7Ci0gICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoRGlkQ2hhbmdlSWNvbnMoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VJ
Y29ucyhXZWJDb3JlOjpJY29uVHlwZSk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ29t
bWl0TG9hZCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxQcm92aXNpb25hbExv
YWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNw
YXRjaERpZEZhaWxMb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcAkocmV2aXNpb24gODUx
ODcpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMDAsNiArMTAwLDcgQEAKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNp
bmNsdWRlICJIaXN0b3J5SXRlbS5oIgogI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKKyNpbmNs
dWRlICJJY29uVVJMLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ29udHJvbGxlci5oIgogI2luY2x1
ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJwYWludGluZy9HcmFwaGljc0NvbnRleHRCdWlsZGVyLmgi
CkBAIC0xMzcsNiArMTM4LDcgQEAKICNpbmNsdWRlICJXZWJGb3JtRWxlbWVudC5oIgogI2luY2x1
ZGUgIldlYkZyYW1lQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViSGlzdG9yeUl0ZW0uaCIKKyNpbmNs
dWRlICJXZWJJY29uVHlwZVV0aWxpdGllcy5oIgogI2luY2x1ZGUgIldlYklucHV0RWxlbWVudC5o
IgogI2luY2x1ZGUgIldlYk5vZGUuaCIKICNpbmNsdWRlICJXZWJQYXNzd29yZEF1dG9jb21wbGV0
ZUxpc3RlbmVyLmgiCkBAIC01MTgsMTcgKzUyMCwyMSBAQCBXZWJVUkwgV2ViRnJhbWVJbXBsOjp1
cmwoKSBjb25zdAogICAgIHJldHVybiBkcy0+cmVxdWVzdCgpLnVybCgpOwogfQogCi1XZWJVUkwg
V2ViRnJhbWVJbXBsOjpmYXZJY29uVVJMKCkgY29uc3QKK3N0ZDo6dmVjdG9yPFdlYkljb25VUkw+
IFdlYkZyYW1lSW1wbDo6ZmF2SWNvblVSTChpbnQgd2ViSWNvblR5cGVzKSBjb25zdAogewogICAg
IEZyYW1lTG9hZGVyKiBmcmFtZUxvYWRlciA9IG1fZnJhbWUtPmxvYWRlcigpOworICAgIHN0ZDo6
dmVjdG9yPFdlYkljb25VUkw+IHdlYkljb25VUkxzOworCiAgICAgLy8gVGhlIFVSTCB0byB0aGUg
ZmF2aWNvbiBtYXkgYmUgaW4gdGhlIGhlYWRlci4gQXMgc3VjaCwgb25seQogICAgIC8vIGFzayB0
aGUgbG9hZGVyIGZvciB0aGUgZmF2aWNvbiBpZiBpdCdzIGZpbmlzaGVkIGxvYWRpbmcuCiAgICAg
aWYgKGZyYW1lTG9hZGVyLT5zdGF0ZSgpID09IEZyYW1lU3RhdGVDb21wbGV0ZSkgewotICAgICAg
ICBjb25zdCBLVVJMJiB1cmwgPSBmcmFtZUxvYWRlci0+aWNvblVSTCgpOwotICAgICAgICBpZiAo
IXVybC5pc0VtcHR5KCkpCi0gICAgICAgICAgICByZXR1cm4gdXJsOworICAgICAgICBpbnQgaWNv
blR5cGVzID0gV2ViSWNvblR5cGVVdGlsaXRpZXM6OkNvbnZlcnRXZWJJY29uVHlwZXNUb0ljb25U
eXBlcyh3ZWJJY29uVHlwZXMpOworICAgICAgICBXVEY6OlZlY3RvcjxXZWJDb3JlOjpJY29uVVJM
PiBpY29uVVJMcyA9IGZyYW1lTG9hZGVyLT5pY29uVVJMcyhpY29uVHlwZXMpOworICAgICAgICBm
b3Ioc2l6ZV90IGkgPSAwOyBpIDwgaWNvblVSTHMuc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgICAg
IHdlYkljb25VUkxzLnB1c2hfYmFjayhXZWJJY29uVVJMKGljb25VUkxzW2ldLm1faWNvblVSTCwg
V2ViSWNvblR5cGVVdGlsaXRpZXM6OkNvbnZlcnRJY29uVHlwZVRvV2ViSWNvblR5cGUoaWNvblVS
THNbaV0ubV9pY29uVHlwZSkpKTsKKyAgICAgICAgfQogICAgIH0KLSAgICByZXR1cm4gV2ViVVJM
KCk7CisgICAgcmV0dXJuIHdlYkljb25VUkxzOwogfQogCiBXZWJVUkwgV2ViRnJhbWVJbXBsOjpv
cGVuU2VhcmNoRGVzY3JpcHRpb25VUkwoKSBjb25zdApJbmRleDogU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViRnJhbWVJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViRnJhbWVJbXBsLmgJKHJldmlzaW9uIDg1MTg3KQorKysgU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTcwLDcgKzcw
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXROYW1lKGNvbnN0IFdlYlN0cmluZyYp
OwogICAgIHZpcnR1YWwgbG9uZyBsb25nIGlkZW50aWZpZXIoKSBjb25zdDsKICAgICB2aXJ0dWFs
IFdlYlVSTCB1cmwoKSBjb25zdDsKLSAgICB2aXJ0dWFsIFdlYlVSTCBmYXZJY29uVVJMKCkgY29u
c3Q7CisgICAgdmlydHVhbCBzdGQ6OnZlY3RvcjxXZWJJY29uVVJMPiBmYXZJY29uVVJMKGludCkg
Y29uc3Q7CiAgICAgdmlydHVhbCBXZWJVUkwgb3BlblNlYXJjaERlc2NyaXB0aW9uVVJMKCkgY29u
c3Q7CiAgICAgdmlydHVhbCBXZWJTdHJpbmcgZW5jb2RpbmcoKSBjb25zdDsKICAgICB2aXJ0dWFs
IFdlYlNpemUgc2Nyb2xsT2Zmc2V0KCkgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJJY29uVHlwZVV0aWxpdGllcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViSWNvblR5cGVVdGlsaXRpZXMuY3BwCShyZXZpc2lvbiAwKQor
KysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSWNvblR5cGVVdGlsaXRpZXMuY3BwCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDg4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
KyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVk
ZSAiV2ViSWNvblR5cGVVdGlsaXRpZXMuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CitXZWJDb3Jl
OjpJY29uVHlwZSBXZWJJY29uVHlwZVV0aWxpdGllczo6Q29udmVydFdlYkljb25UeXBlVG9JY29u
VHlwZShXZWJJY29uVHlwZSB3ZWJJY29uVHlwZSkKK3sKKyAgICBXZWJDb3JlOjpJY29uVHlwZSBp
Y29uVHlwZSA9IFdlYkNvcmU6OkludmFsaWRJY29uOworICAgIHN3aXRjaCh3ZWJJY29uVHlwZSkg
eworICAgICAgICBjYXNlIEZhdmljb246CisgICAgICAgICAgICBpY29uVHlwZSA9IFdlYkNvcmU6
OkZhdmljb247CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBUb3VjaEljb246Cisg
ICAgICAgICAgICBpY29uVHlwZSA9IFdlYkNvcmU6OlRvdWNoSWNvbjsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIFRvdWNoUHJlY29tcG9zZWRJY29uOgorICAgICAgICAgICAgaWNv
blR5cGUgPSBXZWJDb3JlOjpUb3VjaFByZWNvbXBvc2VkSWNvbjsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgYnJlYWs7CisgICAgfQorICAgIHJldHVy
biBpY29uVHlwZTsKK30KKworV2ViSWNvblR5cGUgV2ViSWNvblR5cGVVdGlsaXRpZXM6OkNvbnZl
cnRJY29uVHlwZVRvV2ViSWNvblR5cGUoV2ViQ29yZTo6SWNvblR5cGUgaWNvblR5cGUpCit7Cisg
ICAgV2ViSWNvblR5cGUgdHlwZSA9IEludmFsaWRJY29uOworICAgIHN3aXRjaChpY29uVHlwZSkg
eworICAgICAgICBjYXNlIFdlYkNvcmU6OkZhdmljb246CisgICAgICAgICAgICB0eXBlID0gRmF2
aWNvbjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFdlYkNvcmU6OlRvdWNoSWNv
bjoKKyAgICAgICAgICAgIHR5cGUgPSBUb3VjaEljb247CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBXZWJDb3JlOjpUb3VjaFByZWNvbXBvc2VkSWNvbjoKKyAgICAgICAgICAgIHR5
cGUgPSBUb3VjaFByZWNvbXBvc2VkSWNvbjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgYnJlYWs7CisgICAgfQorICAgIHJldHVybiB0eXBlOworfQor
CitpbnQgV2ViSWNvblR5cGVVdGlsaXRpZXM6OkNvbnZlcnRXZWJJY29uVHlwZXNUb0ljb25UeXBl
cyhpbnQgd2ViSWNvblR5cGVzKSB7CisgIGludCBpY29uVHlwZXMgPSAwOworICBpZiAod2ViSWNv
blR5cGVzICYgRmF2aWNvbikgeworICAgIGljb25UeXBlcyB8PSBXZWJDb3JlOjpGYXZpY29uOwor
ICB9CisgIGlmICh3ZWJJY29uVHlwZXMgJiBUb3VjaEljb24pIHsKKyAgICBpY29uVHlwZXMgfD0g
V2ViQ29yZTo6VG91Y2hJY29uOworICB9CisgIGlmICh3ZWJJY29uVHlwZXMgJiBUb3VjaFByZWNv
bXBvc2VkSWNvbikgeworICAgIGljb25UeXBlcyB8PSBXZWJDb3JlOjpUb3VjaFByZWNvbXBvc2Vk
SWNvbjsKKyAgfQorICByZXR1cm4gaWNvblR5cGVzOworfQorCit9CgpQcm9wZXJ0eSBjaGFuZ2Vz
IG9uOiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJY29uVHlwZVV0aWxpdGllcy5jcHAK
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fXwpBZGRlZDogc3ZuOmVvbC1zdHlsZQogICArIExGCgpJbmRleDogU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViSWNvblR5cGVVdGlsaXRpZXMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJY29uVHlwZVV0aWxpdGllcy5oCShyZXZpc2lv
biAwKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSWNvblR5cGVVdGlsaXRpZXMu
aAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisg
KiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViSWNvblR5cGVVdGlsaXRp
ZXNfaAorI2RlZmluZSBXZWJJY29uVHlwZVV0aWxpdGllc19oCisKKyNpbmNsdWRlICJJY29uVVJM
LmgiCisjaW5jbHVkZSAiV2ViSWNvblVSTC5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xh
c3MgV2ViSWNvblR5cGVVdGlsaXRpZXMgeworIHB1YmxpYzoKKyAgICBzdGF0aWMgV2ViQ29yZTo6
SWNvblR5cGUgQ29udmVydFdlYkljb25UeXBlVG9JY29uVHlwZShXZWJJY29uVHlwZSk7CisgICAg
c3RhdGljIFdlYkljb25UeXBlIENvbnZlcnRJY29uVHlwZVRvV2ViSWNvblR5cGUoV2ViQ29yZTo6
SWNvblR5cGUpOworICAgIHN0YXRpYyBpbnQgQ29udmVydFdlYkljb25UeXBlc1RvSWNvblR5cGVz
KGludCk7Cit9OworCit9CisKKyNlbmRpZiAvLyBXZWJJY29uVHlwZVV0aWxpdGllc19oCgpQcm9w
ZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJY29uVHlwZVV0
aWxpdGllcy5oCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjplb2wtc3R5bGUKICAgKyBMRgoKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L2VmbC9DaGFuZ2VMb2cJKHJldmlzaW9uIDg1MTg3KQorKysgU291cmNlL1dlYktpdC9lZmwvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTEtMDQtMjIgIFRhbyBC
YWkgIDxtaWNoYWVsYmFpQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBQb3B1bGF0ZSB0b3VjaC1pY29uIHVybCB0byBGcmFtZUxv
YWRlckNsaWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NTkxNDMKKworICAgICAgICBSZXNwZWN0IHRoZSBpbnRlcmZhY2UgY2hhbmdlIGluIEZyYW1l
TG9hZGVyQ2xpZW50CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVu
dEVmbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0
Y2hEaWRDaGFuZ2VJY29ucyk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJD
bGllbnRFZmwuaDoKKwogMjAxMS0wNC0yNiAgR3J6ZWdvcnogQ3phamtvd3NraSAgPGcuY3phamtv
d3NraUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbnRvbmlvIEdvbWVzLgpJ
bmRleDogU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRF
ZmwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Zy
YW1lTG9hZGVyQ2xpZW50RWZsLmNwcAkocmV2aXNpb24gODUxODcpCisrKyBTb3VyY2UvV2ViS2l0
L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTU4Nyw3ICs1ODcsNyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRj
aERpZFJlCiAgICAgZXdrX3ZpZXdfdGl0bGVfc2V0KG1fdmlldywgY3MuZGF0YSgpKTsKIH0KIAot
dm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygpCit2b2lk
IEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERpZENoYW5nZUljb25zKFdlYkNvcmU6Oklj
b25UeXBlKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0
L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmgJ
KHJldmlzaW9uIDg1MTg3KQorKysgU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJh
bWVMb2FkZXJDbGllbnRFZmwuaAkod29ya2luZyBjb3B5KQpAQCAtMTAzLDcgKzEwMyw3IEBAIGNs
YXNzIEZyYW1lTG9hZGVyQ2xpZW50RWZsIDogcHVibGljIEZyYW0KICAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbigpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFN0
YXJ0UHJvdmlzaW9uYWxMb2FkKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2
ZVRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlz
cGF0Y2hEaWRDaGFuZ2VJY29ucygpOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENoYW5n
ZUljb25zKFdlYkNvcmU6Okljb25UeXBlKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRD
b21taXRMb2FkKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFs
TG9hZChjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlk
RmFpbExvYWQoY29uc3QgUmVzb3VyY2VFcnJvciYpOwpJbmRleDogU291cmNlL1dlYktpdC9ndGsv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwkocmV2
aXNpb24gODUxODcpCisrKyBTb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwxNiBAQAorMjAxMS0wNC0yMiAgVGFvIEJhaSAgPG1pY2hhZWxiYWlAY2hy
b21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFBvcHVsYXRlIHRvdWNoLWljb24gdXJsIHRvIEZyYW1lTG9hZGVyQ2xpZW50CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01OTE0MworCisgICAgICAg
IFJlc3BlY3QgdGhlIGludGVyZmFjZSBjaGFuZ2UgaW4gRnJhbWVMb2FkZXJDbGllbnQuCisKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHA6CisgICAgICAg
IChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENoYW5nZUljb25zKToKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5oOgorCiAyMDExLTA0
LTI3ICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVT
dXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHAJKHJldmlzaW9u
IDg1MTg3KQorKysgU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJD
bGllbnRHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NjksNyArOTY5LDcgQEAgdm9pZCBGcmFt
ZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRSZWNlaQogICAgIH0KIH0KIAotdm9pZCBGcmFtZUxv
YWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygpCit2b2lkIEZyYW1lTG9hZGVyQ2xp
ZW50OjpkaXNwYXRjaERpZENoYW5nZUljb25zKFdlYkNvcmU6Okljb25UeXBlKQogewogICAgIG5v
dEltcGxlbWVudGVkKCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9y
dC9GcmFtZUxvYWRlckNsaWVudEd0ay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZ3Rr
L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmgJKHJldmlzaW9uIDg1MTg3KQor
KysgU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsu
aAkod29ya2luZyBjb3B5KQpAQCAtODIsNyArODIsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKICAg
ICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUljb24oKTsKICAgICAgICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoRGlkU3RhcnRQcm92aXNpb25hbExvYWQoKTsKICAgICAgICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFdlYkNvcmU6OlN0cmluZ1dp
dGhEaXJlY3Rpb24mKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlSWNv
bnMoKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoV2ViQ29y
ZTo6SWNvblR5cGUpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDb21taXRMb2Fk
KCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxQcm92aXNpb25hbExvYWQo
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlz
cGF0Y2hEaWRGYWlsTG9hZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CkluZGV4OiBT
b3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9t
YWMvQ2hhbmdlTG9nCShyZXZpc2lvbiA4NTE4NykKKysrIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisKKzIwMTEtMDQtMjIgIFRhbyBC
YWkgIDxtaWNoYWVsYmFpQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBQb3B1bGF0ZSB0b3VjaC1pY29uIHVybCB0byBGcmFtZUxv
YWRlckNsaWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NTkxNDMKKworICAgICAgICBSZXNwZWN0IHRoZSBpbnRlcmZhY2UgY2hhbmdlIGluIEZyYW1l
TG9hZGVyQ2xpZW50LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5t
bToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENoYW5nZUljb25z
KToKKwogMjAxMS0wNC0yNyAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgog
CiAgICAgICAgIEZvbGxvdy11cCBMZW9wYXJkIGJ1aWxkIGZpeC4KQEAgLTE1Niw2ICsxNzAsNyBA
QAogICAgICAgICAqIFdlYlZpZXcvV2ViRnVsbFNjcmVlbkNvbnRyb2xsZXIubW06CiAgICAgICAg
ICgtW1dlYkZ1bGxTY3JlZW5Db250cm9sbGVyIF9kb2N1bWVudF0pOgogCis+Pj4+Pj4+IC5yODQ5
MTcKIDIwMTEtMDQtMjIgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgTWFjaWVqIFN0YWNob3dpYWsuCkluZGV4OiBTb3VyY2UvV2ViS2l0L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgJKHJl
dmlzaW9uIDg1MTg3KQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTAyLDcgKzEwMiw3IEBAIHByaXZh
dGU6CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUljb24oKTsKICAgICB2aXJ0
dWFsIHZvaWQgZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpOwogICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBXZWJDb3JlOjpTdHJpbmdXaXRoRGly
ZWN0aW9uJik7Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucyhXZWJDb3JlOjpJY29uVHlwZSk7
CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ29tbWl0TG9hZCgpOwogICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaERpZEZhaWxQcm92aXNpb25hbExvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvciYpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxMb2FkKGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlRXJyb3ImKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCShyZXZpc2lvbiA4
NTE4NykKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC02MzMsNyArNjMzLDcgQEAgdm9pZCBXZWJGcmFt
ZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRSZQogICAgICAgICBDYWxsRnJhbWVMb2FkRGVsZWdh
dGUoaW1wbGVtZW50YXRpb25zLT5kaWRSZWNlaXZlVGl0bGVGb3JGcmFtZUZ1bmMsIHdlYlZpZXcs
IEBzZWxlY3Rvcih3ZWJWaWV3OmRpZFJlY2VpdmVUaXRsZTpmb3JGcmFtZTopLCAoTlNTdHJpbmcg
Kil0aXRsZS5zdHJpbmcoKSwgbV93ZWJGcmFtZS5nZXQoKSk7CiB9CiAKLXZvaWQgV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoKQordm9pZCBXZWJGcmFtZUxvYWRl
ckNsaWVudDo6ZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucyhXZWJDb3JlOjpJY29uVHlwZSkKIHsKICAg
ICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzIHRvIGFsbG93IGNvbnRhaW5lciB0byB1cGRhdGUg
ZmF2aWNvbi4KIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCShyZXZpc2lvbiA4NTE4NykKKysrIFNvdXJj
ZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIw
MTEtMDQtMjIgIFRhbyBCYWkgIDxtaWNoYWVsYmFpQGNocm9taXVtLm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQb3B1bGF0ZSB0b3VjaC1pY29u
IHVybCB0byBGcmFtZUxvYWRlckNsaWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NTkxNDMKKworICAgICAgICBSZXNwZWN0IHRoZSBpbnRlcmZhY2Ug
Y2hhbmdlIGluIEZyYW1lTG9hZGVyQ2xpZW50LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
RnJhbWVMb2FkZXJDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNs
aWVudFF0OjpkaXNwYXRjaERpZENoYW5nZUljb25zKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9GcmFtZUxvYWRlckNsaWVudFF0Lmg6CisKIDIwMTEtMDQtMjcgIFlpIFNoZW4gIDx5aS40LnNo
ZW5Abm9raWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0
aWFuc2VuLgpJbmRleDogU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRl
ckNsaWVudFF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBw
b3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwCShyZXZpc2lvbiA4NTE4NykKKysrIFNvdXJjZS9X
ZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQ1OSw3ICs0NTksNyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3Bh
dGNoRGlkUmVjCiB9CiAKIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERpZENo
YW5nZUljb25zKCkKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hEaWRDaGFuZ2VJ
Y29ucyhXZWJDb3JlOjpJY29uVHlwZSkKIHsKICAgICBpZiAoZHVtcEZyYW1lTG9hZGVyQ2FsbGJh
Y2tzKQogICAgICAgICBwcmludGYoIiVzIC0gZGlkQ2hhbmdlSWNvbnNcbiIsIHFQcmludGFibGUo
ZHJ0RGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHQobV9mcmFtZSkpKTsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGll
bnRRdC5oCShyZXZpc2lvbiA4NTE4NykKKysrIFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBv
cnQvRnJhbWVMb2FkZXJDbGllbnRRdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTEsNyArMTExLDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVJY29uKCk7CiAg
ICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkU3RhcnRQcm92aXNpb25hbExvYWQoKTsKICAgICB2
aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVj
dGlvbiYpOwotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZUljb25zKCk7CisgICAg
dmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoV2ViQ29yZTo6SWNvblR5cGUpOwog
ICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENvbW1pdExvYWQoKTsKICAgICB2aXJ0dWFsIHZv
aWQgZGlzcGF0Y2hEaWRGYWlsUHJvdmlzaW9uYWxMb2FkKGNvbnN0IFJlc291cmNlRXJyb3ImKTsK
ICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGYWlsTG9hZChjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yJik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCShyZXZpc2lvbiA4NTE4NykKKysrIFNv
dXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBA
CisyMDExLTA0LTIyICBUYW8gQmFpICA8bWljaGFlbGJhaUBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUG9wdWxhdGUgdG91Y2gt
aWNvbiB1cmwgdG8gRnJhbWVMb2FkZXJDbGllbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTU5MTQzCisKKyAgICAgICAgUmVzcGVjdCB0aGUgaW50ZXJm
YWNlIGNoYW5nZSBpbiBGcmFtZUxvYWRlckNsaWVudC4KKworICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xp
ZW50OjpkaXNwYXRjaERpZENoYW5nZUljb25zKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5oOgorCiAyMDExLTA0LTI2ICBCcmVudCBGdWxnaGFtICA8YmZ1
bGdoYW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGFtIFJvYmVuLgpJbmRl
eDogU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmNwcAkocmV2aXNpb24gODUxODcpCisrKyBTb3VyY2UvV2ViS2l0L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM3Myw4ICszNzMsMTEgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hE
aWRSZQogICAgICAgICBmcmFtZUxvYWREZWxlZ2F0ZS0+ZGlkUmVjZWl2ZVRpdGxlKHdlYlZpZXcs
IEJTdHJpbmcodGl0bGUuc3RyaW5nKCkpLCBtX3dlYkZyYW1lKTsKIH0KIAotdm9pZCBXZWJGcmFt
ZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygpCit2b2lkIFdlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpkaXNwYXRjaERpZENoYW5nZUljb25zKFdlYkNvcmU6Okljb25UeXBlIHR5cGUp
CiB7CisgICAgaWYgKHR5cGUgIT0gV2ViQ29yZTo6RmF2aWNvbikKKyAgICAgICAgcmV0dXJuOwor
CiAgICAgV2ViVmlldyogd2ViVmlldyA9IG1fd2ViRnJhbWUtPndlYlZpZXcoKTsKICAgICBDT01Q
dHI8SVdlYkZyYW1lTG9hZERlbGVnYXRlUHJpdmF0ZT4gZnJhbWVMb2FkRGVsZWdhdGVQcml2Owog
ICAgIGlmIChGQUlMRUQod2ViVmlldy0+ZnJhbWVMb2FkRGVsZWdhdGVQcml2YXRlKCZmcmFtZUxv
YWREZWxlZ2F0ZVByaXYpKSB8fCAhZnJhbWVMb2FkRGVsZWdhdGVQcml2KQpJbmRleDogU291cmNl
L1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5oCShyZXZpc2lvbiA4NTE4NykKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTcwLDcgKzcwLDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVJY29uKCk7CiAg
ICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkU3RhcnRQcm92aXNpb25hbExvYWQoKTsKICAgICB2
aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgV2ViQ29yZTo6U3RyaW5n
V2l0aERpcmVjdGlvbiYpOwotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZUljb25z
KCk7CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoV2ViQ29yZTo6SWNv
blR5cGUpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENvbW1pdExvYWQoKTsKICAgICB2
aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGaW5pc2hEb2N1bWVudExvYWQoKTsKICAgICB2aXJ0dWFs
IHZvaWQgZGlzcGF0Y2hEaWRGaW5pc2hMb2FkKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbmNl
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbmNlL0NoYW5nZUxvZwko
cmV2aXNpb24gODUxODcpCisrKyBTb3VyY2UvV2ViS2l0L3dpbmNlL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDExLTA0LTIyICBUYW8gQmFpICA8bWljaGFlbGJh
aUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgUG9wdWxhdGUgdG91Y2gtaWNvbiB1cmwgdG8gRnJhbWVMb2FkZXJDbGllbnQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU5MTQzCisKKyAg
ICAgICAgUmVzcGVjdCB0aGUgaW50ZXJmYWNlIGNoYW5nZSBpbiBGcmFtZUxvYWRlckNsaWVudC4K
KworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V2luQ0UuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudFdpbkNFOjpkaXNwYXRjaERpZENoYW5n
ZUljb25zKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFdpbkNF
Lmg6CisKIDIwMTEtMDQtMjEgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgV2luQ0UgYnVpbGQgZml4IGFmdGVyIHI4NDU3NC4KSW5kZXg6IFNvdXJjZS9XZWJLaXQv
d2luY2UvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXaW5DRS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVu
dFdpbkNFLmNwcAkocmV2aXNpb24gODUxODcpCisrKyBTb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNv
cmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V2luQ0UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
NzYsNyArMzc2LDcgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudFdpbkNFOjpkaXNwYXRjaERpZAog
ICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRXaW5DRTo6
ZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygpCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50V2luQ0U6OmRp
c3BhdGNoRGlkQ2hhbmdlSWNvbnMoV2ViQ29yZTo6SWNvblR5cGUpCiB7CiAgICAgbm90SW1wbGVt
ZW50ZWQoKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvRnJh
bWVMb2FkZXJDbGllbnRXaW5DRS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luY2Uv
V2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXaW5DRS5oCShyZXZpc2lvbiA4NTE4NykK
KysrIFNvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRX
aW5DRS5oCSh3b3JraW5nIGNvcHkpCkBAIC03Nyw3ICs3Nyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbigpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNw
YXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
RGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFdlYkNvcmU6OlN0cmluZ1dpdGhEaXJlY3Rpb24mKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygpOworICAgIHZpcnR1YWwgdm9p
ZCBkaXNwYXRjaERpZENoYW5nZUljb25zKFdlYkNvcmU6Okljb25UeXBlKTsKICAgICB2aXJ0dWFs
IHZvaWQgZGlzcGF0Y2hEaWRDb21taXRMb2FkKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
RGlkRmFpbFByb3Zpc2lvbmFsTG9hZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAg
ICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbExvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvciYpOwpJbmRleDogU291cmNlL1dlYktpdC93eC9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC93eC9DaGFuZ2VMb2cJKHJldmlzaW9uIDg1MTg3KQorKysgU291cmNl
L1dlYktpdC93eC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNyBAQAorCisy
MDExLTA0LTIyICBUYW8gQmFpICA8bWljaGFlbGJhaUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUG9wdWxhdGUgdG91Y2gtaWNv
biB1cmwgdG8gRnJhbWVMb2FkZXJDbGllbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTU5MTQzCisKKyAgICAgICAgUmVzcGVjdCB0aGUgaW50ZXJmYWNl
IGNoYW5nZSBpbiBGcmFtZUxvYWRlckNsaWVudC4KKworICAgICAgICAqIFdlYktpdFN1cHBvcnQv
RnJhbWVMb2FkZXJDbGllbnRXeC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNs
aWVudFd4OjpkaXNwYXRjaERpZENoYW5nZUljb25zKToKKyAgICAgICAgKiBXZWJLaXRTdXBwb3J0
L0ZyYW1lTG9hZGVyQ2xpZW50V3guaDoKKwogMjAxMS0wNC0yMyAgS2V2aW4gT2xsaXZpZXIgIDxr
ZXZpbm9AdGhlb2xsaXZpZXJzLmNvbT4KIAogICAgICAgICBbd3hdIFVucmV2aWV3ZWQgYnVpbGQg
Zml4LiBGaXhlZCBjYXBpdGFsaXphdGlvbiBmb3IgY2FzZSBzZW5zaXRpdmUgZmlsZXN5c3RlbXMu
CkluZGV4OiBTb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRX
eC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0ZyYW1l
TG9hZGVyQ2xpZW50V3guY3BwCShyZXZpc2lvbiA4NTE4NykKKysrIFNvdXJjZS9XZWJLaXQvd3gv
V2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFd4LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzI3LDcgKzMyNyw3IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRXeDo6ZGlzcGF0Y2hEaWRGaW4K
ICAgICB9CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRXeDo6ZGlzcGF0Y2hEaWRDaGFuZ2VJ
Y29ucygpCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50V3g6OmRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMo
V2ViQ29yZTo6SWNvblR5cGUpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KSW5kZXg6IFNv
dXJjZS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFd4LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50
V3guaAkocmV2aXNpb24gODUxODcpCisrKyBTb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQv
RnJhbWVMb2FkZXJDbGllbnRXeC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDksNyArMTA5LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGaW5p
c2hMb2FkKCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZpcnN0TGF5b3V0KCk7
CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxh
eW91dCgpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygpOwor
ICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucyhXZWJDb3JlOjpJY29u
VHlwZSk7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoU2hvdygpOwogICAgICAgICB2
aXJ0dWFsIHZvaWQgY2FuY2VsUG9saWN5Q2hlY2soKTsKSW5kZXg6IFRvb2xzL1NjcmlwdHMvYnVp
bGQtd2Via2l0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvYnVpbGQtd2Via2l0CShyZXZp
c2lvbiA4NTE4NykKKysrIFRvb2xzL1NjcmlwdHMvYnVpbGQtd2Via2l0CSh3b3JraW5nIGNvcHkp
CkBAIC0xMTEsNiArMTExLDcgQEAgbXkgKAogICAgICRzeXN0ZW1NYWxsb2NTdXBwb3J0LAogICAg
ICR0aWxlZEJhY2tpbmdTdG9yZVN1cHBvcnQsCiAgICAgJHRvdWNoRXZlbnRzU3VwcG9ydCwKKyAg
ICAkdG91Y2hJY29uTG9hZGluZ1N1cHBvcnQsCiAgICAgJHZpZGVvU3VwcG9ydCwKICAgICAkd2Nz
c1N1cHBvcnQsCiAgICAgJHdlYkF1ZGlvU3VwcG9ydCwKQEAgLTI3Miw2ICsyNzMsOSBAQCBteSBA
ZmVhdHVyZXMgPSAoCiAgICAgeyBvcHRpb24gPT4gInRvdWNoLWV2ZW50cyIsIGRlc2MgPT4gIlRv
Z2dsZSBUb3VjaCBFdmVudHMgc3VwcG9ydCIsCiAgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9UT1VD
SF9FVkVOVFMiLCBkZWZhdWx0ID0+IGlzUXQoKSwgdmFsdWUgPT4gXCR0b3VjaEV2ZW50c1N1cHBv
cnQgfSwKIAorICAgIHsgb3B0aW9uID0+ICJ0b3VjaC1pY29uLWxvYWRpbmciLCBkZXNjID0+ICJU
b2dnbGUgVG91Y2ggSWNvbiBMb2FkaW5nIFN1cHBvcnQiLAorICAgICAgZGVmaW5lID0+ICJFTkFC
TEVfVE9VQ0hfSUNPTl9MT0FESU5HIiwgZGVmYXVsdCA9PiAwLCB2YWx1ZSA9PiBcJHRvdWNoSWNv
bkxvYWRpbmdTdXBwb3J0IH0sCisKICAgICB7IG9wdGlvbiA9PiAidmlkZW8iLCBkZXNjID0+ICJU
b2dnbGUgVmlkZW8gc3VwcG9ydCIsCiAgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9WSURFTyIsIGRl
ZmF1bHQgPT4gKGlzQXBwbGVXZWJLaXQoKSB8fCBpc0d0aygpKSwgdmFsdWUgPT4gXCR2aWRlb1N1
cHBvcnQgfSwKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>91510</attachid>
            <date>2011-04-28 10:12:04 -0700</date>
            <delta_ts>2011-05-03 10:15:31 -0700</delta_ts>
            <desc>Fix style</desc>
            <filename>patch.4</filename>
            <type>text/plain</type>
            <size>67382</size>
            <attacher>michaelbai</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg1MTg3KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDcgQEAKKzIwMTEtMDQtMjIgIFRhbyBCYWkg
IDxtaWNoYWVsYmFpQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBQb3B1bGF0ZSB0b3VjaC1pY29uIHVybCB0byBGcmFtZUxvYWRl
ckNsaWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NTkxNDMKKyAgICAgICAgCisgICAgICAgIFBhcnNlZCBhbmQgcG9wdWxhdGVkIGFwcGxlLXRvdWNo
LWljb24gdXJsIHRvIEZyYW1lTG9hZGVyQ2xpZW50LgorICAgICAgICBDaGFuZ2VkIGZhdmljb24g
dG8gYmUgYSB0eXBlIG9mIGljb24uCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmNvbnZlcnRJY29uVHlwZVRvSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6
Omljb25VUkwpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnNldEljb25VUkwpOgorICAg
ICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAqIGRvbS9JY29uVVJMLmg6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6SWNvblVSTDo6SWNvblVSTCk6CisgICAgICAgICogaHRtbC9IVE1M
TGlua0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTExpbmtFbGVtZW50Ojp0b2tl
bml6ZVJlbEF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6OnBy
b2Nlc3MpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTExpbmtFbGVtZW50OjphZGRTdWJyZXNvdXJj
ZUF0dHJpYnV0ZVVSTHMpOgorICAgICAgICAqIGh0bWwvSFRNTExpbmtFbGVtZW50Lmg6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6OlJlbEF0dHJpYnV0ZTo6UmVsQXR0cmlidXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxMaW5rRWxlbWVudDo6aXNFbmFibGVkVmlhU2NyaXB0
KToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTE5hbWVzOjpQcmVsb2FkVGFzazo6cmVsQXR0cmlidXRlSXNTdHlsZVNo
ZWV0KToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Y29udmVydEljb25UeXBlVG9JbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dExvYWRlcjo6aWNvblVSTCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6c2V0
SWNvblVSTCk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmg6CisgICAgICAgICog
bG9hZGVyL0VtcHR5Q2xpZW50cy5oOgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlGcmFtZUxvYWRl
ckNsaWVudDo6ZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucyk6CisgICAgICAgICogbG9hZGVyL0ZyYW1l
TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjppY29uVVJMKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjppY29uVVJMcyk6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZUxvYWRlcjo6ZmlsbEljb25VUkwpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2Fk
ZXI6OmdldERlZmF1bHRJY29uVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpz
ZXRJY29uVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpkaWRDaGFuZ2VJY29u
cyk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0Zy
YW1lTG9hZGVyQ2xpZW50Lmg6CisKIDIwMTEtMDQtMjggIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1h
bkBnb29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFl1cnkgU2VtaWtoYXRza3kuCkBA
IC00MzM3LDYgKzQzODEsNyBAQAogICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKICAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6cmVzZXRTY3JvbGxiYXJzQW5kQ2xlYXJDb250ZW50c1Np
emUpOgogCis+Pj4+Pj4+IC5yODQ5MTcKIDIwMTEtMDQtMjIgIEpvc2VwaCBQZWNvcmFybyAgPGpv
ZXBlY2tAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBLZW50IFRhbXVyYS4KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL0dOVW1ha2VmaWxlLmFtCShyZXZpc2lvbiA4NTE4NykKKysrIFNvdXJjZS9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmFtCSh3b3JraW5nIGNvcHkpCkBAIC0yNjYsNiArMjY2LDE2IEBAIHdlYmNv
cmVfYnVpbHRfc291cmNlcyArPSBcCiBlbmRpZiAjIEVORCBFTkFCTEVfUVVPVEEKIAogIyAtLS0t
CisjIFRvdWNoIEljb24gTG9hZGluZworIyAtLS0tCitpZiBFTkFCTEVfVE9VQ0hfSUNPTl9MT0FE
SU5HCitGRUFUVVJFX0RFRklORVMgKz0gRU5BQkxFX1RPVUNIX0lDT05fTE9BRElORz0xCit3ZWJj
b3JlX2NwcGZsYWdzICs9IC1ERU5BQkxFX1RPVUNIX0lDT05fTE9BRElORz0xCitlbHNlCit3ZWJj
b3JlX2NwcGZsYWdzICs9IC1ERU5BQkxFX1RPVUNIX0lDT05fTE9BRElORz0wCitlbmRpZiAjIEVO
RCBFTkFCTEVfVE9VQ0hfSUNPTl9MT0FESU5HCisKKyMgLS0tLQogIyBTcGVlY2ggSW5wdXQgQVBJ
IHN1cHBvcnQKICMgLS0tLQogaWYgRU5BQkxFX0lOUFVUX1NQRUVDSApJbmRleDogU291cmNlL1dl
YkNvcmUvZmVhdHVyZXMucHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2ZlYXR1cmVz
LnByaQkocmV2aXNpb24gODUxODcpCisrKyBTb3VyY2UvV2ViQ29yZS9mZWF0dXJlcy5wcmkJKHdv
cmtpbmcgY29weSkKQEAgLTc3LDYgKzc3LDcgQEAgY29udGFpbnMoREVGSU5FUywgRU5BQkxFX1NJ
TkdMRV9USFJFQURFRAogIWNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9XRUJHTD0uKTogREVGSU5F
UyArPSBFTkFCTEVfV0VCR0w9MAogIWNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9NRURJQV9TVEFU
SVNUSUNTPS4pOiBERUZJTkVTICs9IEVOQUJMRV9NRURJQV9TVEFUSVNUSUNTPTAKICFjb250YWlu
cyhERUZJTkVTLCBFTkFCTEVfVklERU9fVFJBQ0s9Lik6IERFRklORVMgKz0gRU5BQkxFX1ZJREVP
X1RSQUNLPTAKKyFjb250YWlucyhERUZJTkVTLCBFTkFCTEVfVE9VQ0hfSUNPTl9MT0FESU5HPS4p
OiBERUZJTkVTICs9IEVOQUJMRV9UT1VDSF9JQ09OX0xPQURJTkc9MAogCiAjIFNWRyBzdXBwb3J0
CiAhY29udGFpbnMoREVGSU5FUywgRU5BQkxFX1NWRz0wKSB7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwkocmV2
aXNpb24gODUxODcpCisrKyBTb3VyY2UvV2ViQ29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVm
aW5lcy54Y2NvbmZpZwkod29ya2luZyBjb3B5KQpAQCAtMTE2LDYgKzExNiw4IEBAIEVOQUJMRV9W
SURFT19UUkFDSyA9IDsKIAogRU5BQkxFX01FRElBX1NUQVRJU1RJQ1MgPSA7CiAKK0VOQUJMRV9U
T1VDSF9JQ09OX0xPQURJTkcgPSA7CisKIEVOQUJMRV9XRUJfQVVESU8gPSA7CiAKIEVOQUJMRV9X
RUJfU09DS0VUUyA9ICQoRU5BQkxFX1dFQl9TT0NLRVRTXyQoUkVBTF9QTEFURk9STV9OQU1FKSk7
CkBAIC0xMzEsNCArMTMzLDQgQEAgRU5BQkxFX1hIVE1MTVAgPSA7CiBFTkFCTEVfWFBBVEggPSBF
TkFCTEVfWFBBVEg7CiBFTkFCTEVfWFNMVCA9IEVOQUJMRV9YU0xUOwogCi1GRUFUVVJFX0RFRklO
RVMgPSAkKEVOQUJMRV9MSU5LX1BSRUZFVENIKSAkKEVOQUJMRV9BQ0NFTEVSQVRFRF8yRF9DQU5W
QVMpICQoRU5BQkxFX1dFQkdMKSAkKEVOQUJMRV8zRF9SRU5ERVJJTkcpICQoRU5BQkxFX0JMT0Ip
ICQoRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HKSAkKEVOQUJMRV9DTElFTlRfQkFTRURfR0VPTE9D
QVRJT04pICQoRU5BQkxFX0RBVEFCQVNFKSAkKEVOQUJMRV9EQVRBTElTVCkgJChFTkFCTEVfREFU
QV9UUkFOU0ZFUl9JVEVNUykgJChFTkFCTEVfREVUQUlMUykgJChFTkFCTEVfREVWSUNFX09SSUVO
VEFUSU9OKSAkKEVOQUJMRV9ESVJFQ1RPUllfVVBMT0FEKSAkKEVOQUJMRV9ET01fU1RPUkFHRSkg
JChFTkFCTEVfRVZFTlRTT1VSQ0UpICQoRU5BQkxFX0ZJTFRFUlMpICQoRU5BQkxFX0ZJTEVfU1lT
VEVNKSAkKEVOQUJMRV9GVUxMU0NSRUVOX0FQSSkgJChFTkFCTEVfR0VPTE9DQVRJT04pICQoRU5B
QkxFX0lDT05EQVRBQkFTRSkgJChFTkFCTEVfSU1BR0VfUkVTSVpFUikgJChFTkFCTEVfSU5ERVhF
RF9EQVRBQkFTRSkgJChFTkFCTEVfSU5QVVRfU1BFRUNIKSAkKEVOQUJMRV9KQVZBU0NSSVBUX0RF
QlVHR0VSKSAkKEVOQUJMRV9NQVRITUwpICQoRU5BQkxFX01FVEVSX1RBRykgJChFTkFCTEVfTk9U
SUZJQ0FUSU9OUykgJChFTkFCTEVfT0ZGTElORV9XRUJfQVBQTElDQVRJT05TKSAkKEVOQUJMRV9Q
QUdFX1ZJU0lCSUxJVFlfQVBJKSAkKEVOQUJMRV9QUk9HUkVTU19UQUcpICQoRU5BQkxFX1JFR0lT
VEVSX1BST1RPQ09MX0hBTkRMRVIpICQoRU5BQkxFX1FVT1RBKSAkKEVOQUJMRV9TSEFSRURfV09S
S0VSUykgJChFTkFCTEVfU1ZHKSAkKEVOQUJMRV9TVkdfQU5JTUFUSU9OKSAkKEVOQUJMRV9TVkdf
QVNfSU1BR0UpICQoRU5BQkxFX1NWR19ET01fT0JKQ19CSU5ESU5HUykgJChFTkFCTEVfU1ZHX0ZP
TlRTKSAkKEVOQUJMRV9TVkdfRk9SRUlHTl9PQkpFQ1QpICQoRU5BQkxFX1NWR19VU0UpICQoRU5B
QkxFX1ZJREVPKSAkKEVOQUJMRV9WSURFT19UUkFDSykgJChFTkFCTEVfTUVESUFfU1RBVElTVElD
UykgJChFTkFCTEVfV0VCX0FVRElPKSAkKEVOQUJMRV9XRUJfU09DS0VUUykgJChFTkFCTEVfV0VC
X1RJTUlORykgJChFTkFCTEVfV01MKSAkKEVOQUJMRV9XT1JLRVJTKSAkKEVOQUJMRV9YSFRNTE1Q
KSAkKEVOQUJMRV9YUEFUSCkgJChFTkFCTEVfWFNMVCk7CitGRUFUVVJFX0RFRklORVMgPSAkKEVO
QUJMRV9MSU5LX1BSRUZFVENIKSAkKEVOQUJMRV9BQ0NFTEVSQVRFRF8yRF9DQU5WQVMpICQoRU5B
QkxFX1dFQkdMKSAkKEVOQUJMRV8zRF9SRU5ERVJJTkcpICQoRU5BQkxFX0JMT0IpICQoRU5BQkxF
X0NIQU5ORUxfTUVTU0FHSU5HKSAkKEVOQUJMRV9DTElFTlRfQkFTRURfR0VPTE9DQVRJT04pICQo
RU5BQkxFX0RBVEFCQVNFKSAkKEVOQUJMRV9EQVRBTElTVCkgJChFTkFCTEVfREFUQV9UUkFOU0ZF
Ul9JVEVNUykgJChFTkFCTEVfREVUQUlMUykgJChFTkFCTEVfREVWSUNFX09SSUVOVEFUSU9OKSAk
KEVOQUJMRV9ESVJFQ1RPUllfVVBMT0FEKSAkKEVOQUJMRV9ET01fU1RPUkFHRSkgJChFTkFCTEVf
RVZFTlRTT1VSQ0UpICQoRU5BQkxFX0ZJTFRFUlMpICQoRU5BQkxFX0ZJTEVfU1lTVEVNKSAkKEVO
QUJMRV9GVUxMU0NSRUVOX0FQSSkgJChFTkFCTEVfR0VPTE9DQVRJT04pICQoRU5BQkxFX0lDT05E
QVRBQkFTRSkgJChFTkFCTEVfSU1BR0VfUkVTSVpFUikgJChFTkFCTEVfSU5ERVhFRF9EQVRBQkFT
RSkgJChFTkFCTEVfSU5QVVRfU1BFRUNIKSAkKEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSKSAk
KEVOQUJMRV9NQVRITUwpICQoRU5BQkxFX01FVEVSX1RBRykgJChFTkFCTEVfTk9USUZJQ0FUSU9O
UykgJChFTkFCTEVfT0ZGTElORV9XRUJfQVBQTElDQVRJT05TKSAkKEVOQUJMRV9QQUdFX1ZJU0lC
SUxJVFlfQVBJKSAkKEVOQUJMRV9QUk9HUkVTU19UQUcpICQoRU5BQkxFX1JFR0lTVEVSX1BST1RP
Q09MX0hBTkRMRVIpICQoRU5BQkxFX1FVT1RBKSAkKEVOQUJMRV9TSEFSRURfV09SS0VSUykgJChF
TkFCTEVfU1ZHKSAkKEVOQUJMRV9TVkdfQU5JTUFUSU9OKSAkKEVOQUJMRV9TVkdfQVNfSU1BR0Up
ICQoRU5BQkxFX1NWR19ET01fT0JKQ19CSU5ESU5HUykgJChFTkFCTEVfU1ZHX0ZPTlRTKSAkKEVO
QUJMRV9TVkdfRk9SRUlHTl9PQkpFQ1QpICQoRU5BQkxFX1NWR19VU0UpICQoRU5BQkxFX1ZJREVP
KSAkKEVOQUJMRV9WSURFT19UUkFDSykgJChFTkFCTEVfTUVESUFfU1RBVElTVElDUykgJChFTkFC
TEVfV0VCX0FVRElPKSAkKEVOQUJMRV9XRUJfU09DS0VUUykgJChFTkFCTEVfV0VCX1RJTUlORykg
JChFTkFCTEVfV01MKSAkKEVOQUJMRV9XT1JLRVJTKSAkKEVOQUJMRV9YSFRNTE1QKSAkKEVOQUJM
RV9YUEFUSCkgJChFTkFCTEVfWFNMVCkgJChFTkFCTEVfVE9VQ0hfSUNPTl9MT0FESU5HKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oJKHJldmlzaW9uIDg1MTg3KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQ0LDYgKzEwNDQsNyBAQAogCQk0
NDlCMTlGNTBGQTcyRUNFMDAxNUNBNEEgLyogSFRNTFBhcnNlclF1aXJrcy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDQ5QjE5RjMwRkE3MkVDRTAwMTVD
QTRBIC8qIEhUTUxQYXJzZXJRdWlya3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk0NEEyOEFBQzEyREZCOEFDMDBBRTkyM0IgLyogTWF0aE1MRWxl
bWVudEZhY3RvcnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQ0QTI4QUFCMTJERkI4QUMwMEFFOTIzQiAvKiBNYXRoTUxFbGVtZW50RmFjdG9yeS5oICov
OyB9OwogCQk0NEEyOEFBRjEyREZCOEJGMDBBRTkyM0IgLyogTWF0aE1MTmFtZXMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0QTI4QUFFMTJERkI4QkYw
MEFFOTIzQiAvKiBNYXRoTUxOYW1lcy5oICovOyB9OworCQk0NUJBQzJCMDEzNjBCQkFCMDA1REEy
NTggLyogSWNvblVSTC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDVCQUMyQUYxMzYwQkJBQjAwNURBMjU4IC8qIEljb25VUkwuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NjE0QTFGRTBCMjNBOEQ2MDA0
NDZFMUMgLyogY29weUN1cnNvci5wbmcgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQ2MTRBMUZEMEIyM0E4RDYwMDQ0NkUxQyAvKiBjb3B5Q3Vyc29yLnBu
ZyAqLzsgfTsKIAkJNDY0RUEyNzMwQjhBMzUwQjAwQThFNkUzIC8qIGNyb3NzSGFpckN1cnNvci5w
bmcgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2NEVB
MjcxMEI4QTM1MEIwMEE4RTZFMyAvKiBjcm9zc0hhaXJDdXJzb3IucG5nICovOyB9OwogCQk0NjRF
QTI3NDBCOEEzNTBCMDBBOEU2RTMgLyogbm90QWxsb3dlZEN1cnNvci5wbmcgaW4gUmVzb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2NEVBMjcyMEI4QTM1MEIwMEE4
RTZFMyAvKiBub3RBbGxvd2VkQ3Vyc29yLnBuZyAqLzsgfTsKQEAgLTc1NzQsNiArNzU3NSw3IEBA
CiAJCTQ0OUIxOUYzMEZBNzJFQ0UwMDE1Q0E0QSAvKiBIVE1MUGFyc2VyUXVpcmtzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhUTUxQYXJzZXJRdWlya3MuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDRBMjhBQUIxMkRGQjhBQzAwQUU5MjNCIC8qIE1hdGhNTEVs
ZW1lbnRGYWN0b3J5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hdGhNTEVs
ZW1lbnRGYWN0b3J5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0QTI4QUFFMTJE
RkI4QkYwMEFFOTIzQiAvKiBNYXRoTUxOYW1lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBNYXRoTUxOYW1lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NUJB
QzJBRjEzNjBCQkFCMDA1REEyNTggLyogSWNvblVSTC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBJY29uVVJMLmg7IHBhdGggPSBkb20vSWNvblVSTC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0NjE0QTFGRDBCMjNBOEQ2MDA0NDZFMUMgLyogY29weUN1cnNvci5w
bmcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBpbWFn
ZS5wbmc7IHBhdGggPSBjb3B5Q3Vyc29yLnBuZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDY0RUEyNzEwQjhBMzUwQjAwQThFNkUzIC8qIGNyb3NzSGFpckN1cnNvci5wbmcgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBpbWFnZS5wbmc7IHBh
dGggPSBjcm9zc0hhaXJDdXJzb3IucG5nOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
NjRFQTI3MjBCOEEzNTBCMDBBOEU2RTMgLyogbm90QWxsb3dlZEN1cnNvci5wbmcgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBpbWFnZS5wbmc7IHBhdGgg
PSBub3RBbGxvd2VkQ3Vyc29yLnBuZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEy
NjcxLDYgKzEyNjczLDcgQEAKIAkJMDg2N0Q2OTFGRTg0MDI4RkMwMkFBQzA3IC8qIFdlYktpdCAq
LyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJNDVCQUMyQUYx
MzYwQkJBQjAwNURBMjU4IC8qIEljb25VUkwuaCAqLywKIAkJCQk2NUM5N0FGMjA4RUE5MDg4MDBB
Q0QyNzMgLyogY29uZmlnLmggKi8sCiAJCQkJRURFQzk4MDIwQUVEN0UxNzAwNTkxMzdGIC8qIFdl
YkNvcmVQcmVmaXguaCAqLywKIAkJCQk5MzA3MDYxMzA5RTBDQTgyMDBCMTdGRTQgLyogRGVyaXZl
ZFNvdXJjZXMubWFrZSAqLywKQEAgLTIyOTcwLDYgKzIyOTczLDcgQEAKIAkJCQk5M0YxOTlFRDA4
MjQ1RTU5MDAxRTlBQkMgLyogWFNMVFByb2Nlc3Nvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTFC
RTUxMkUwQ0Y2QzUxMjAwMkVBOTU5IC8qIFhTTFRVbmljb2RlU29ydC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJOTc3RTJFMEYxMkYwRkM5QzAwQzEzMzc5IC8qIFhTU0ZpbHRlci5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJNDVCQUMyQjAxMzYwQkJBQjAwNURBMjU4IC8qIEljb25VUkwuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTA4NkJCRDBGMTM2MDM5QzIwMDhCMTVEOCAvKiBHbHlwaC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMDg3M0I4NkIxMzYwNjRFQTAwQTUyMkMyIC8qIEdseXBoUGFnZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMDg3RTBBRjcxMzYwNkQwQjAwRkE0QkE4IC8qIFNWR0dseXBoLmggaW4gSGVh
ZGVycyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkocmV2aXNpb24gODUxODcpCisr
KyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNDQs
NiArMzQ0LDI4IEBAIHN0YXRpYyBib29sIGRpc2FibGVSYW5nZU11dGF0aW9uKFBhZ2UqIHAKICNl
bmRpZgogfQogCisvLyBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgZ2l2ZW4gdHlwZSwgMCBpcyBy
ZXR1cm5lZCBpZiB0aGUgdHlwZSBpcyBpbnZhbGlkLgorc3RhdGljIHNpemVfdCBnZXRJY29uSW5k
ZXgoSWNvblR5cGUgdHlwZSkKK3sKKyAgICBzaXplX3QgaW5kZXggPSAwOworICAgIHN3aXRjaCAo
dHlwZSkgeworICAgIGNhc2UgRmF2aWNvbjoKKyAgICAgICAgaW5kZXggPSAwOworICAgICAgICBi
cmVhazsKKyNpZiBFTkFCTEUoVE9VQ0hfSUNPTl9MT0FESU5HKQorICAgIGNhc2UgVG91Y2hQcmVj
b21wb3NlZEljb246CisgICAgICAgIGluZGV4ID0gMTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBUb3VjaEljb246CisgICAgICAgIGluZGV4ID0gMjsKKyAgICAgICAgYnJlYWs7CisjZW5kaWYK
KyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisgICAg
cmV0dXJuIGluZGV4OworfQorCiBzdGF0aWMgSGFzaFNldDxEb2N1bWVudCo+KiBkb2N1bWVudHNU
aGF0TmVlZFN0eWxlUmVjYWxjID0gMDsKIAogY2xhc3MgRG9jdW1lbnRXZWFrUmVmZXJlbmNlIDog
cHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPERvY3VtZW50V2Vha1JlZmVyZW5jZT4gewpAQCAt
NDM2OSwxNSArNDM5MSwyNiBAQCB1bnNpZ25lZCBGb3JtRWxlbWVudEtleUhhc2g6Omhhc2goY29u
c3QgCiAgICAgcmV0dXJuIFN0cmluZ0hhc2hlcjo6aGFzaE1lbW9yeTxzaXplb2YoRm9ybUVsZW1l
bnRLZXkpPigma2V5KTsKIH0KIAotdm9pZCBEb2N1bWVudDo6c2V0SWNvblVSTChjb25zdCBTdHJp
bmcmIGljb25VUkwsIGNvbnN0IFN0cmluZyYgdHlwZSkKK0ljb25VUkwgRG9jdW1lbnQ6Omljb25V
UkwoSWNvblR5cGUgaWNvblR5cGUpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faWNvblVSTHNbZ2V0
SWNvbkluZGV4KGljb25UeXBlKV07Cit9CisKK3ZvaWQgRG9jdW1lbnQ6OnNldEljb25VUkwoY29u
c3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEljb25UeXBlIGljb25UeXBl
KQogewotICAgIC8vIEZJWE1FIC0gPHJkYXI6Ly9wcm9ibGVtLzQ3Mjc2NDU+IC0gQXQgc29tZSBw
b2ludCBpbiB0aGUgZnV0dXJlLCB3ZSBtaWdodCBhY3R1YWxseSBob25vciB0aGUgInR5cGUiIAot
ICAgIGlmIChtX2ljb25VUkwuaXNFbXB0eSgpKQotICAgICAgICBtX2ljb25VUkwgPSBpY29uVVJM
OwotICAgIGVsc2UgaWYgKCF0eXBlLmlzRW1wdHkoKSkKLSAgICAgICAgbV9pY29uVVJMID0gaWNv
blVSTDsKKyAgICAvLyBGSVhNRSAtIDxyZGFyOi8vcHJvYmxlbS80NzI3NjQ1PiAtIEF0IHNvbWUg
cG9pbnQgaW4gdGhlIGZ1dHVyZSwgd2UgbWlnaHQgYWN0dWFsbHkgaG9ub3IgdGhlICJtaW1lVHlw
ZSIKKyAgICBJY29uVVJMIG5ld1VSTChLVVJMKFBhcnNlZFVSTFN0cmluZywgdXJsKSwgaWNvblR5
cGUpOworICAgIGlmICghaWNvblVSTChpY29uVHlwZSkubV9pY29uVVJMLmlzVmFsaWQoKSkKKyAg
ICAgICAgc2V0SWNvblVSTChuZXdVUkwpOworICAgIGVsc2UgaWYgKCFtaW1lVHlwZS5pc0VtcHR5
KCkpCisgICAgICAgIHNldEljb25VUkwobmV3VVJMKTsKICAgICBpZiAoRnJhbWUqIGYgPSBmcmFt
ZSgpKQotICAgICAgICBmLT5sb2FkZXIoKS0+c2V0SWNvblVSTChtX2ljb25VUkwpOworICAgICAg
ICBmLT5sb2FkZXIoKS0+c2V0SWNvblVSTChuZXdVUkwpOworfQorCit2b2lkIERvY3VtZW50Ojpz
ZXRJY29uVVJMKGNvbnN0IEljb25VUkwmIGljb25VUkwpCit7CisgICAgbV9pY29uVVJMc1tnZXRJ
Y29uSW5kZXgoaWNvblVSTC5tX2ljb25UeXBlKV0gPSBpY29uVVJMOwogfQogCiB2b2lkIERvY3Vt
ZW50OjpyZWdpc3RlckZvcm1FbGVtZW50V2l0aEZvcm1BdHRyaWJ1dGUoRm9ybUFzc29jaWF0ZWRF
bGVtZW50KiBlbGVtZW50KQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHJldmlzaW9uIDg1MTg3
KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTMz
LDYgKzMzLDcgQEAKICNpbmNsdWRlICJDb2xvci5oIgogI2luY2x1ZGUgIkRPTVRpbWVTdGFtcC5o
IgogI2luY2x1ZGUgIkRvY3VtZW50VGltaW5nLmgiCisjaW5jbHVkZSAiSWNvblVSTC5oIgogI2lu
Y2x1ZGUgIlF1YWxpZmllZE5hbWUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0
LmgiCiAjaW5jbHVkZSAiU3RyaW5nV2l0aERpcmVjdGlvbi5oIgpAQCAtOTE4LDggKzkxOSw5IEBA
IHB1YmxpYzoKICAgICAKICAgICB2b2lkIHNldEhhc05vZGVzV2l0aFBsYWNlaG9sZGVyU3R5bGUo
KSB7IG1faGFzTm9kZXNXaXRoUGxhY2Vob2xkZXJTdHlsZSA9IHRydWU7IH0KIAotICAgIGNvbnN0
IFN0cmluZyYgaWNvblVSTCgpIGNvbnN0IHsgcmV0dXJuIG1faWNvblVSTDsgfQotICAgIHZvaWQg
c2V0SWNvblVSTChjb25zdCBTdHJpbmcmIGljb25VUkwsIGNvbnN0IFN0cmluZyYgdHlwZSk7Cisg
ICAgSWNvblVSTCBpY29uVVJMKEljb25UeXBlKSBjb25zdDsKKyAgICB2b2lkIHNldEljb25VUkwo
Y29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgSWNvblR5cGUpOworICAgIHZvaWQgc2V0SWNv
blVSTChjb25zdCBJY29uVVJMJik7CiAKICAgICB2b2lkIHNldFVzZVNlY3VyZUtleWJvYXJkRW50
cnlXaGVuQWN0aXZlKGJvb2wpOwogICAgIGJvb2wgdXNlU2VjdXJlS2V5Ym9hcmRFbnRyeVdoZW5B
Y3RpdmUoKSBjb25zdDsKQEAgLTEzMzMsOCArMTMzNSw4IEBAIHByaXZhdGU6CiAKICAgICBib29s
IG1fY3JlYXRlUmVuZGVyZXJzOwogICAgIGJvb2wgbV9pblBhZ2VDYWNoZTsKLSAgICBTdHJpbmcg
bV9pY29uVVJMOwotICAgIAorICAgIEljb25VUkwgbV9pY29uVVJMc1tJQ09OX0NPVU5UXTsKKwog
ICAgIEhhc2hTZXQ8RWxlbWVudCo+IG1fZG9jdW1lbnRBY3RpdmF0aW9uQ2FsbGJhY2tFbGVtZW50
czsKICAgICBIYXNoU2V0PEVsZW1lbnQqPiBtX21lZGlhVm9sdW1lQ2FsbGJhY2tFbGVtZW50czsK
ICAgICBIYXNoU2V0PEVsZW1lbnQqPiBtX3ByaXZhdGVCcm93c2luZ1N0YXRlQ2hhbmdlZEVsZW1l
bnRzOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0ljb25VUkwuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9kb20vSWNvblVSTC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNv
cmUvZG9tL0ljb25VUkwuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmli
dXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
CisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSWNv
blVSTF9oCisjZGVmaW5lIEljb25VUkxfaAorCisjaW5jbHVkZSAiS1VSTC5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKKyNpZiBFTkFCTEUoVE9VQ0hfSUNPTl9MT0FESU5HKQorI2RlZmluZSBJ
Q09OX0NPVU5UIDMKKyNlbHNlCisjZGVmaW5lIElDT05fQ09VTlQgMQorI2VuZGlmCisKK2VudW0g
SWNvblR5cGUgeworICAgIEludmFsaWRJY29uID0gMCwKKyAgICBGYXZpY29uID0gMSwKKyAgICBU
b3VjaEljb24gPSAxIDw8IDEsCisgICAgVG91Y2hQcmVjb21wb3NlZEljb24gPSAxIDw8IDIKK307
CisKK3N0cnVjdCBJY29uVVJMIHsKKyAgICBJY29uVHlwZSBtX2ljb25UeXBlOworICAgIEtVUkwg
bV9pY29uVVJMOworCisgICAgSWNvblVSTCgpCisgICAgICAgIDogbV9pY29uVHlwZShJbnZhbGlk
SWNvbikKKyAgICB7CisgICAgfQorCisgICAgSWNvblVSTChjb25zdCBLVVJMJiB1cmwsIEljb25U
eXBlIHR5cGUpCisgICAgICAgIDogbV9pY29uVHlwZSh0eXBlKQorICAgICAgICAsIG1faWNvblVS
TCh1cmwpCisgICAgeworICAgIH0KK307CisKK30KKworI2VuZGlmIC8vIEljb25VUkxfaAoKUHJv
cGVydHkgY2hhbmdlcyBvbjogU291cmNlL1dlYkNvcmUvZG9tL0ljb25VUkwuaApfX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
CkFkZGVkOiBzdm46ZW9sLXN0eWxlCiAgICsgTEYKCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxMaW5rRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTGlua0VsZW1lbnQuY3BwCShyZXZpc2lvbiA4NTE4NykKKysrIFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTExpbmtFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU5LDcgKzE1OSw3IEBA
IHZvaWQgSFRNTExpbmtFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnUKIHZvaWQgSFRNTExpbmtF
bGVtZW50Ojp0b2tlbml6ZVJlbEF0dHJpYnV0ZShjb25zdCBBdG9taWNTdHJpbmcmIHJlbCwgUmVs
QXR0cmlidXRlJiByZWxBdHRyaWJ1dGUpCiB7CiAgICAgcmVsQXR0cmlidXRlLm1faXNTdHlsZVNo
ZWV0ID0gZmFsc2U7Ci0gICAgcmVsQXR0cmlidXRlLm1faXNJY29uID0gZmFsc2U7CisgICAgcmVs
QXR0cmlidXRlLm1faWNvblR5cGUgPSBJbnZhbGlkSWNvbjsKICAgICByZWxBdHRyaWJ1dGUubV9p
c0FsdGVybmF0ZSA9IGZhbHNlOwogICAgIHJlbEF0dHJpYnV0ZS5tX2lzRE5TUHJlZmV0Y2ggPSBm
YWxzZTsKICNpZiBFTkFCTEUoTElOS19QUkVGRVRDSCkKQEAgLTE2OSw3ICsxNjksMTMgQEAgdm9p
ZCBIVE1MTGlua0VsZW1lbnQ6OnRva2VuaXplUmVsQXR0cmlidQogICAgIGlmIChlcXVhbElnbm9y
aW5nQ2FzZShyZWwsICJzdHlsZXNoZWV0IikpCiAgICAgICAgIHJlbEF0dHJpYnV0ZS5tX2lzU3R5
bGVTaGVldCA9IHRydWU7CiAgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UocmVsLCAiaWNv
biIpIHx8IGVxdWFsSWdub3JpbmdDYXNlKHJlbCwgInNob3J0Y3V0IGljb24iKSkKLSAgICAgICAg
cmVsQXR0cmlidXRlLm1faXNJY29uID0gdHJ1ZTsKKyAgICAgICAgcmVsQXR0cmlidXRlLm1faWNv
blR5cGUgPSBGYXZpY29uOworI2lmIEVOQUJMRShUT1VDSF9JQ09OX0xPQURJTkcpCisgICAgZWxz
ZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UocmVsLCAiYXBwbGUtdG91Y2gtaWNvbiIpKQorICAgICAg
ICByZWxBdHRyaWJ1dGUubV9pY29uVHlwZSA9IFRvdWNoSWNvbjsKKyAgICBlbHNlIGlmIChlcXVh
bElnbm9yaW5nQ2FzZShyZWwsICJhcHBsZS10b3VjaC1pY29uLXByZWNvbXBvc2VkIikpCisgICAg
ICAgIHJlbEF0dHJpYnV0ZS5tX2ljb25UeXBlID0gVG91Y2hQcmVjb21wb3NlZEljb247CisjZW5k
aWYKICAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShyZWwsICJkbnMtcHJlZmV0Y2giKSkK
ICAgICAgICAgcmVsQXR0cmlidXRlLm1faXNETlNQcmVmZXRjaCA9IHRydWU7CiAgICAgZWxzZSBp
ZiAoZXF1YWxJZ25vcmluZ0Nhc2UocmVsLCAiYWx0ZXJuYXRlIHN0eWxlc2hlZXQiKSB8fCBlcXVh
bElnbm9yaW5nQ2FzZShyZWwsICJzdHlsZXNoZWV0IGFsdGVybmF0ZSIpKSB7CkBAIC0xODgsNyAr
MTk0LDEzIEBAIHZvaWQgSFRNTExpbmtFbGVtZW50Ojp0b2tlbml6ZVJlbEF0dHJpYnUKICAgICAg
ICAgICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKCppdCwgImFsdGVybmF0ZSIpKQogICAg
ICAgICAgICAgICAgIHJlbEF0dHJpYnV0ZS5tX2lzQWx0ZXJuYXRlID0gdHJ1ZTsKICAgICAgICAg
ICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKCppdCwgImljb24iKSkKLSAgICAgICAgICAg
ICAgICByZWxBdHRyaWJ1dGUubV9pc0ljb24gPSB0cnVlOworICAgICAgICAgICAgICAgIHJlbEF0
dHJpYnV0ZS5tX2ljb25UeXBlID0gRmF2aWNvbjsKKyNpZiBFTkFCTEUoVE9VQ0hfSUNPTl9MT0FE
SU5HKQorICAgICAgICAgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoKml0LCAiYXBwbGUt
dG91Y2gtaWNvbiIpKQorICAgICAgICAgICAgICAgIHJlbEF0dHJpYnV0ZS5tX2ljb25UeXBlID0g
VG91Y2hJY29uOworICAgICAgICAgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoKml0LCAi
YXBwbGUtdG91Y2gtaWNvbi1wcmVjb21wb3NlZCIpKQorICAgICAgICAgICAgICAgIHJlbEF0dHJp
YnV0ZS5tX2ljb25UeXBlID0gVG91Y2hQcmVjb21wb3NlZEljb247CisjZW5kaWYKICNpZiBFTkFC
TEUoTElOS19QUkVGRVRDSCkKICAgICAgICAgICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNl
KCppdCwgInByZWZldGNoIikpCiAgICAgICAgICAgICAgIHJlbEF0dHJpYnV0ZS5tX2lzTGlua1By
ZWZldGNoID0gdHJ1ZTsKQEAgLTIyMSwxMCArMjMzLDEwIEBAIHZvaWQgSFRNTExpbmtFbGVtZW50
Ojpwcm9jZXNzKCkKIAogICAgIC8vIElFIGV4dGVuc2lvbjogbG9jYXRpb24gb2Ygc21hbGwgaWNv
biBmb3IgbG9jYXRpb25iYXIgLyBib29rbWFya3MKICAgICAvLyBXZSdsbCByZWNvcmQgdGhpcyBV
UkwgcGVyIGRvY3VtZW50LCBldmVuIGlmIHdlIGxhdGVyIG9ubHkgdXNlIGl0IGluIHRvcCBsZXZl
bCBmcmFtZXMKLSAgICBpZiAobV9yZWxBdHRyaWJ1dGUubV9pc0ljb24gJiYgbV91cmwuaXNWYWxp
ZCgpICYmICFtX3VybC5pc0VtcHR5KCkpIHsKKyAgICBpZiAobV9yZWxBdHRyaWJ1dGUubV9pY29u
VHlwZSAhPSBJbnZhbGlkSWNvbiAmJiBtX3VybC5pc1ZhbGlkKCkgJiYgIW1fdXJsLmlzRW1wdHko
KSkgewogICAgICAgICBpZiAoIWNoZWNrQmVmb3JlTG9hZEV2ZW50KCkpIAogICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICBkb2N1bWVudCgpLT5zZXRJY29uVVJMKG1fdXJsLnN0cmluZygpLCB0
eXBlKTsKKyAgICAgICAgZG9jdW1lbnQoKS0+c2V0SWNvblVSTChtX3VybC5zdHJpbmcoKSwgdHlw
ZSwgbV9yZWxBdHRyaWJ1dGUubV9pY29uVHlwZSk7CiAgICAgfQogCiAgICAgaWYgKG1fcmVsQXR0
cmlidXRlLm1faXNETlNQcmVmZXRjaCkgewpAQCAtNDcyLDcgKzQ4NCw3IEBAIHZvaWQgSFRNTExp
bmtFbGVtZW50OjphZGRTdWJyZXNvdXJjZUF0dHIKICAgICBIVE1MRWxlbWVudDo6YWRkU3VicmVz
b3VyY2VBdHRyaWJ1dGVVUkxzKHVybHMpOwogCiAgICAgLy8gRmF2aWNvbnMgYXJlIGhhbmRsZWQg
YnkgYSBzcGVjaWFsIGNhc2UgaW4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKCkKLSAgICBpZiAo
bV9yZWxBdHRyaWJ1dGUubV9pc0ljb24pCisgICAgaWYgKG1fcmVsQXR0cmlidXRlLm1faWNvblR5
cGUgIT0gSW52YWxpZEljb24pCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICghbV9yZWxBdHRy
aWJ1dGUubV9pc1N0eWxlU2hlZXQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5r
RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVt
ZW50LmgJKHJldmlzaW9uIDg1MTg3KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0Vs
ZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIkNhY2hl
ZFJlc291cmNlQ2xpZW50LmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VIYW5kbGUuaCIKICNp
bmNsdWRlICJIVE1MRWxlbWVudC5oIgorI2luY2x1ZGUgIkljb25VUkwuaCIKICNpbmNsdWRlICJU
aW1lci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zOSw3ICs0MCw3IEBAIGNsYXNzIEhU
TUxMaW5rRWxlbWVudCA6IHB1YmxpYyBIVE1MRWxlbWUKIHB1YmxpYzoKICAgICBzdHJ1Y3QgUmVs
QXR0cmlidXRlIHsKICAgICAgICAgYm9vbCBtX2lzU3R5bGVTaGVldDsKLSAgICAgICAgYm9vbCBt
X2lzSWNvbjsKKyAgICAgICAgSWNvblR5cGUgbV9pY29uVHlwZTsKICAgICAgICAgYm9vbCBtX2lz
QWx0ZXJuYXRlOwogICAgICAgICBib29sIG1faXNETlNQcmVmZXRjaDsKICNpZiBFTkFCTEUoTElO
S19QUkVGRVRDSCkKQEAgLTQ5LDcgKzUwLDcgQEAgcHVibGljOgogCiAgICAgICAgIFJlbEF0dHJp
YnV0ZSgpCiAgICAgICAgICAgICA6IG1faXNTdHlsZVNoZWV0KGZhbHNlKQotICAgICAgICAgICAg
LCBtX2lzSWNvbihmYWxzZSkKKyAgICAgICAgICAgICwgbV9pY29uVHlwZShJbnZhbGlkSWNvbikK
ICAgICAgICAgICAgICwgbV9pc0FsdGVybmF0ZShmYWxzZSkKICAgICAgICAgICAgICwgbV9pc0RO
U1ByZWZldGNoKGZhbHNlKQogI2lmIEVOQUJMRShMSU5LX1BSRUZFVENIKQpAQCAtNzYsNyArNzcs
NiBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzRGlzYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2Rp
c2FibGVkU3RhdGUgPT0gRGlzYWJsZWQ7IH0KICAgICBib29sIGlzRW5hYmxlZFZpYVNjcmlwdCgp
IGNvbnN0IHsgcmV0dXJuIG1fZGlzYWJsZWRTdGF0ZSA9PSBFbmFibGVkVmlhU2NyaXB0OyB9Ci0g
ICAgYm9vbCBpc0ljb24oKSBjb25zdCB7IHJldHVybiBtX3JlbEF0dHJpYnV0ZS5tX2lzSWNvbjsg
fQogICAgIGJvb2wgZGlzYWJsZWQoKSBjb25zdDsKICAgICB2b2lkIHNldERpc2FibGVkKGJvb2wp
OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVsb2Fk
U2Nhbm5lci5jcHAJKHJldmlzaW9uIDg1MTg3KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvSFRNTFByZWxvYWRTY2FubmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTUsNyArOTUsNyBA
QCBwdWJsaWM6CiAgICAgewogICAgICAgICBIVE1MTGlua0VsZW1lbnQ6OlJlbEF0dHJpYnV0ZSBy
ZWw7CiAgICAgICAgIEhUTUxMaW5rRWxlbWVudDo6dG9rZW5pemVSZWxBdHRyaWJ1dGUoYXR0cmli
dXRlVmFsdWUsIHJlbCk7Ci0gICAgICAgIHJldHVybiByZWwubV9pc1N0eWxlU2hlZXQgJiYgIXJl
bC5tX2lzQWx0ZXJuYXRlICYmICFyZWwubV9pc0ljb24gJiYgIXJlbC5tX2lzRE5TUHJlZmV0Y2g7
CisgICAgICAgIHJldHVybiByZWwubV9pc1N0eWxlU2hlZXQgJiYgIXJlbC5tX2lzQWx0ZXJuYXRl
ICYmIHJlbC5tX2ljb25UeXBlID09IEludmFsaWRJY29uICYmICFyZWwubV9pc0ROU1ByZWZldGNo
OwogICAgIH0KIAogICAgIHN0YXRpYyBib29sIGxpbmtNZWRpYUF0dHJpYnV0ZUlzU2NyZWVuKGNv
bnN0IFN0cmluZyYgYXR0cmlidXRlVmFsdWUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RG9jdW1lbnRMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9E
b2N1bWVudExvYWRlci5jcHAJKHJldmlzaW9uIDg1MTg3KQorKysgU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50TG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzgsNiArNzgsMjggQEAg
c3RhdGljIHZvaWQgc2V0QWxsRGVmZXJzTG9hZGluZyhjb25zdCBSZQogICAgICAgICBsb2FkZXJz
Q29weVtpXS0+c2V0RGVmZXJzTG9hZGluZyhkZWZlcnMpOwogfQogCisvLyBSZXR1cm5zIHRoZSBp
bmRleCBvZiB0aGUgZ2l2ZW4gdHlwZSwgMCBpcyByZXR1cm5lZCBpZiB0aGUgdHlwZSBpcyBpbnZh
bGlkLgorc3RhdGljIHNpemVfdCBnZXRJY29uSW5kZXgoSWNvblR5cGUgdHlwZSkKK3sKKyAgICBz
aXplX3QgaW5kZXggPSAwOworICAgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2UgRmF2aWNvbjoK
KyAgICAgICAgaW5kZXggPSAwOworICAgICAgICBicmVhazsKKyNpZiBFTkFCTEUoVE9VQ0hfSUNP
Tl9MT0FESU5HKQorICAgIGNhc2UgVG91Y2hQcmVjb21wb3NlZEljb246CisgICAgICAgIGluZGV4
ID0gMTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBUb3VjaEljb246CisgICAgICAgIGluZGV4
ID0gMjsKKyAgICAgICAgYnJlYWs7CisjZW5kaWYKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisgICAgcmV0dXJuIGluZGV4OworfQorCiBEb2N1bWVu
dExvYWRlcjo6RG9jdW1lbnRMb2FkZXIoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXEsIGNvbnN0
IFN1YnN0aXR1dGVEYXRhJiBzdWJzdGl0dXRlRGF0YSkKICAgICA6IG1fZGVmZXJNYWluUmVzb3Vy
Y2VEYXRhTG9hZCh0cnVlKQogICAgICwgbV9mcmFtZSgwKQpAQCAtNjYxLDE0ICs2ODMsMTkgQEAg
dm9pZCBEb2N1bWVudExvYWRlcjo6c2V0VGl0bGUoY29uc3QgU3RyaQogICAgIH0KIH0KIAotdm9p
ZCBEb2N1bWVudExvYWRlcjo6c2V0SWNvblVSTChjb25zdCBTdHJpbmcmIGljb25VUkwpCitJY29u
VVJMIERvY3VtZW50TG9hZGVyOjppY29uVVJMKEljb25UeXBlIGljb25UeXBlKSBjb25zdAorewor
ICAgIHJldHVybiBtX2ljb25VUkxzW2dldEljb25JbmRleChpY29uVHlwZSldOworfQorCit2b2lk
IERvY3VtZW50TG9hZGVyOjpzZXRJY29uVVJMKGNvbnN0IEljb25VUkwmIHVybCkKIHsKLSAgICBp
ZiAoaWNvblVSTC5pc0VtcHR5KCkpCisgICAgaWYgKHVybC5tX2ljb25VUkwuaXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBpZiAobV9wYWdlSWNvblVSTCAhPSBpY29uVVJMKSB7Ci0g
ICAgICAgIG1fcGFnZUljb25VUkwgPSBpY29uVVJMOwotICAgICAgICBmcmFtZUxvYWRlcigpLT5k
aWRDaGFuZ2VJY29ucyh0aGlzKTsKKyAgICBpZiAoaWNvblVSTCh1cmwubV9pY29uVHlwZSkubV9p
Y29uVVJMICE9IHVybC5tX2ljb25VUkwpIHsKKyAgICAgICAgICAgIG1faWNvblVSTHNbZ2V0SWNv
bkluZGV4KHVybC5tX2ljb25UeXBlKV0gPSB1cmw7CisgICAgICAgIGZyYW1lTG9hZGVyKCktPmRp
ZENoYW5nZUljb25zKHRoaXMsIHVybC5tX2ljb25UeXBlKTsKICAgICB9CiB9CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCShyZXZpc2lvbiA4NTE4NykKKysrIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
Miw2ICszMiw3IEBACiAjaW5jbHVkZSAiRG9jdW1lbnRMb2FkVGltaW5nLmgiCiAjaW5jbHVkZSAi
RG9jdW1lbnRXcml0ZXIuaCIKICNpbmNsdWRlICJJY29uRGF0YWJhc2VCYXNlLmgiCisjaW5jbHVk
ZSAiSWNvblVSTC5oIgogI2luY2x1ZGUgIk5hdmlnYXRpb25BY3Rpb24uaCIKICNpbmNsdWRlICJS
ZXNvdXJjZUVycm9yLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCkBAIC0xMjMsNyAr
MTI0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29sIGlzTG9hZGluZ0luQVBJ
U2Vuc2UoKSBjb25zdDsKICAgICAgICAgdm9pZCBzZXRQcmltYXJ5TG9hZENvbXBsZXRlKGJvb2wp
OwogICAgICAgICB2b2lkIHNldFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mKTsKLSAg
ICAgICAgdm9pZCBzZXRJY29uVVJMKGNvbnN0IFN0cmluZyYpOworICAgICAgICB2b2lkIHNldElj
b25VUkwoY29uc3QgSWNvblVSTCYpOwogICAgICAgICBjb25zdCBTdHJpbmcmIG92ZXJyaWRlRW5j
b2RpbmcoKSBjb25zdCB7IHJldHVybiBtX292ZXJyaWRlRW5jb2Rpbmc7IH0KIAogI2lmIFBMQVRG
T1JNKE1BQykKQEAgLTE3MCw3ICsxNzEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAg
ICAgdm9pZCBzdG9wUmVjb3JkaW5nUmVzcG9uc2VzKCk7CiAgICAgICAgIGNvbnN0IFN0cmluZ1dp
dGhEaXJlY3Rpb24mIHRpdGxlKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlVGl0bGU7IH0KLSAgICAg
ICAgY29uc3QgU3RyaW5nJiBpY29uVVJMKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlSWNvblVSTDsg
fQorICAgICAgICBJY29uVVJMIGljb25VUkwoSWNvblR5cGUpIGNvbnN0OwogCiAgICAgICAgIEtV
UkwgdXJsRm9ySGlzdG9yeSgpIGNvbnN0OwogICAgICAgICBib29sIHVybEZvckhpc3RvcnlSZWZs
ZWN0c0ZhaWx1cmUoKSBjb25zdDsKQEAgLTMwMCw3ICszMDEsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIGJvb2wgbV93YXNPbmxvYWRIYW5kbGVkOwogCiAgICAgICAgIFN0cmluZ1dp
dGhEaXJlY3Rpb24gbV9wYWdlVGl0bGU7Ci0gICAgICAgIFN0cmluZyBtX3BhZ2VJY29uVVJMOwor
ICAgICAgICBJY29uVVJMIG1faWNvblVSTHNbSUNPTl9DT1VOVF07CiAKICAgICAgICAgU3RyaW5n
IG1fb3ZlcnJpZGVFbmNvZGluZzsKIApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5
Q2xpZW50cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVu
dHMuaAkocmV2aXNpb24gODUxODcpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGll
bnRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3MSw3ICsyNzEsNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUljb24oKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJikgeyB9Ci0g
ICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoKSB7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucyhJY29uVHlwZSkgeyB9CiAgICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoRGlkQ29tbWl0TG9hZCgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRj
aERpZEZhaWxQcm92aXNpb25hbExvYWQoY29uc3QgUmVzb3VyY2VFcnJvciYpIHsgfQogICAgIHZp
cnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxMb2FkKGNvbnN0IFJlc291cmNlRXJyb3ImKSB7IH0K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkocmV2aXNpb24gODUxODcp
CisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC02OSw2ICs2OSw3IEBACiAjaW5jbHVkZSAiSGlzdG9yeUl0ZW0uaCIKICNpbmNsdWRlICJJ
Y29uRGF0YWJhc2UuaCIKICNpbmNsdWRlICJJY29uTG9hZGVyLmgiCisjaW5jbHVkZSAiSWNvblVS
TC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCkBAIC00NjgsMTggKzQ2
OSw1NiBAQCBib29sIEZyYW1lTG9hZGVyOjpjbG9zZVVSTCgpCiAKIEtVUkwgRnJhbWVMb2FkZXI6
Omljb25VUkwoKQogewotICAgIC8vIElmIHRoaXMgaXNuJ3QgYSB0b3AgbGV2ZWwgZnJhbWUsIHJl
dHVybiBub3RoaW5nCisgICAgVmVjdG9yPEljb25VUkw+IHVybHMgPSBpY29uVVJMcyhGYXZpY29u
KTsKKyAgICByZXR1cm4gdXJscy5pc0VtcHR5KCkgPyBLVVJMKCkgOiB1cmxzWzBdLm1faWNvblVS
TDsKK30KKworVmVjdG9yPEljb25VUkw+IEZyYW1lTG9hZGVyOjppY29uVVJMcyhpbnQgaWNvblR5
cGVzKQoreworICAgIFZlY3RvcjxJY29uVVJMPiBpY29uVVJMczsKKyAgICBpZiAoaWNvblR5cGVz
ICYgRmF2aWNvbiAmJiAhZmlsbEljb25VUkwoRmF2aWNvbiwgJmljb25VUkxzKSkKKyAgICAgICAg
ICAgIGljb25VUkxzLmFwcGVuZChnZXREZWZhdWx0SWNvblVSTChGYXZpY29uKSk7CisKKyNpZiBF
TkFCTEUoVE9VQ0hfSUNPTl9MT0FESU5HKQorICAgIGJvb2wgZGlkR290UHJlY29tcG9zZWRJY29u
ID0gZmFsc2U7CisgICAgaWYgKGljb25UeXBlcyAmIFRvdWNoUHJlY29tcG9zZWRJY29uKQorICAg
ICAgICBkaWRHb3RQcmVjb21wb3NlZEljb24gPSBmaWxsSWNvblVSTChUb3VjaFByZWNvbXBvc2Vk
SWNvbiwgJmljb25VUkxzKTsKKworICAgIGJvb2wgZGlkR290VG91Y2hJY29uID0gZmFsc2U7Cisg
ICAgaWYgKGljb25UeXBlcyAmIFRvdWNoSWNvbikKKyAgICAgICAgZGlkR290VG91Y2hJY29uID0g
ZmlsbEljb25VUkwoVG91Y2hJY29uLCAmaWNvblVSTHMpOworCisgICAgLy8gT25seSByZXR1cm4g
dGhlIGRlZmF1bHQgdG91Y2ggaWNvbnMgd2hlbiB0aGUgYm90aCB3ZXJlIHJlcXVpcmVkIGFuZCBu
ZWl0aGVyIHdhcyBnb3R0ZW4uCisgICAgaWYgKGljb25UeXBlcyAmIFRvdWNoUHJlY29tcG9zZWRJ
Y29uICYmIGljb25UeXBlcyAmIFRvdWNoSWNvbiAmJiAhZGlkR290UHJlY29tcG9zZWRJY29uICYm
ICFkaWRHb3RUb3VjaEljb24pIHsKKyAgICAgICAgaWNvblVSTHMuYXBwZW5kKGdldERlZmF1bHRJ
Y29uVVJMKFRvdWNoUHJlY29tcG9zZWRJY29uKSk7CisgICAgICAgIGljb25VUkxzLmFwcGVuZChn
ZXREZWZhdWx0SWNvblVSTChUb3VjaEljb24pKTsKKyAgICB9CisjZW5kaWYKKyAgICByZXR1cm4g
aWNvblVSTHM7Cit9CisKK2Jvb2wgRnJhbWVMb2FkZXI6OmZpbGxJY29uVVJMKEljb25UeXBlIGlj
b25UeXBlLCBWZWN0b3I8SWNvblVSTD4qIGljb25VUkxzKQoreworICAgIC8vIElmIHRoaXMgaXNu
J3QgYSB0b3AgbGV2ZWwgZnJhbWUsIHJldHVybgogICAgIGlmIChtX2ZyYW1lLT50cmVlKCkgJiYg
bV9mcmFtZS0+dHJlZSgpLT5wYXJlbnQoKSkKLSAgICAgICAgcmV0dXJuIEtVUkwoKTsKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8gSWYgd2UgaGF2ZSBhbiBpY29uVVJMIGZyb20gYSBM
aW5rIGVsZW1lbnQsIHJldHVybiB0aGF0Ci0gICAgaWYgKCFtX2ZyYW1lLT5kb2N1bWVudCgpLT5p
Y29uVVJMKCkuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gS1VSTChQYXJzZWRVUkxTdHJpbmcs
IG1fZnJhbWUtPmRvY3VtZW50KCktPmljb25VUkwoKSk7CisgICAgSWNvblVSTCB1cmwgPSBtX2Zy
YW1lLT5kb2N1bWVudCgpLT5pY29uVVJMKGljb25UeXBlKTsKKyAgICBpZiAodXJsLm1faWNvblVS
TC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGljb25VUkxzLT5hcHBl
bmQodXJsKTsKKworICAgIHJldHVybiB0cnVlOworfQogCitJY29uVVJMIEZyYW1lTG9hZGVyOjpn
ZXREZWZhdWx0SWNvblVSTChJY29uVHlwZSBpY29uVHlwZSkKK3sKICAgICAvLyBEb24ndCByZXR1
cm4gYSBmYXZpY29uIGljb25VUkwgdW5sZXNzIHdlJ3JlIGh0dHAgb3IgaHR0cHMKICAgICBLVVJM
IGRvY3VtZW50VVJMID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCk7CiAgICAgaWYgKCFkb2N1
bWVudFVSTC5wcm90b2NvbEluSFRUUEZhbWlseSgpKQotICAgICAgICByZXR1cm4gS1VSTCgpOwor
ICAgICAgICByZXR1cm4gSWNvblVSTCgpOwogCiAgICAgS1VSTCB1cmw7CiAgICAgYm9vbCBjb3Vs
ZFNldFByb3RvY29sID0gdXJsLnNldFByb3RvY29sKGRvY3VtZW50VVJMLnByb3RvY29sKCkpOwpA
QCAtNDg3LDggKzUyNiwyMCBAQCBLVVJMIEZyYW1lTG9hZGVyOjppY29uVVJMKCkKICAgICB1cmwu
c2V0SG9zdChkb2N1bWVudFVSTC5ob3N0KCkpOwogICAgIGlmIChkb2N1bWVudFVSTC5oYXNQb3J0
KCkpCiAgICAgICAgIHVybC5zZXRQb3J0KGRvY3VtZW50VVJMLnBvcnQoKSk7Ci0gICAgdXJsLnNl
dFBhdGgoIi9mYXZpY29uLmljbyIpOwotICAgIHJldHVybiB1cmw7CisgICAgaWYgKGljb25UeXBl
ID09IEZhdmljb24pIHsKKyAgICAgICAgdXJsLnNldFBhdGgoIi9mYXZpY29uLmljbyIpOworICAg
ICAgICByZXR1cm4gSWNvblVSTChLVVJMKFBhcnNlZFVSTFN0cmluZywgdXJsKSwgRmF2aWNvbik7
CisgICAgfQorI2lmIEVOQUJMRShUT1VDSF9JQ09OX0xPQURJTkcpCisgICAgaWYgKGljb25UeXBl
ID09IFRvdWNoUHJlY29tcG9zZWRJY29uKSB7CisgICAgICAgIHVybC5zZXRQYXRoKCIvYXBwbGUt
dG91Y2gtaWNvbi1wcmVjb21wb3NlZC5wbmciKTsKKyAgICAgICAgcmV0dXJuIEljb25VUkwoS1VS
TChQYXJzZWRVUkxTdHJpbmcsIHVybCksIFRvdWNoUHJlY29tcG9zZWRJY29uKTsKKyAgICBpZiAo
aWNvblR5cGUgPT0gVG91Y2hJY29uKSB7CisgICAgICAgIHVybC5zZXRQYXRoKCIvYXBwbGUtdG91
Y2gtaWNvbi5wbmciKTsKKyAgICAgICAgcmV0dXJuIEljb25VUkwoS1VSTChQYXJzZWRVUkxTdHJp
bmcsIHVybCksIFRvdWNoSWNvbik7CisgICAgfQorI2VuZGlmCisgICAgcmV0dXJuIEljb25VUkwo
KTsKIH0KIAogYm9vbCBGcmFtZUxvYWRlcjo6ZGlkT3BlblVSTChjb25zdCBLVVJMJiB1cmwpCkBA
IC0zMzgyLDcgKzM0MzMsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpzZXRUaXRsZShjb25zdCBTdHJp
bmdXCiAgICAgZG9jdW1lbnRMb2FkZXIoKS0+c2V0VGl0bGUodGl0bGUpOwogfQogCi12b2lkIEZy
YW1lTG9hZGVyOjpzZXRJY29uVVJMKGNvbnN0IFN0cmluZyYgaWNvblVSTCkKK3ZvaWQgRnJhbWVM
b2FkZXI6OnNldEljb25VUkwoY29uc3QgSWNvblVSTCYgaWNvblVSTCkKIHsKICAgICBkb2N1bWVu
dExvYWRlcigpLT5zZXRJY29uVVJMKGljb25VUkwpOwogfQpAQCAtMzQ2MCwxMCArMzUxMSwxMCBA
QCB2b2lkIEZyYW1lTG9hZGVyOjpkaWRDaGFuZ2VUaXRsZShEb2N1bWVuCiAgICAgfQogfQogCi12
b2lkIEZyYW1lTG9hZGVyOjpkaWRDaGFuZ2VJY29ucyhEb2N1bWVudExvYWRlciogbG9hZGVyKQor
dm9pZCBGcmFtZUxvYWRlcjo6ZGlkQ2hhbmdlSWNvbnMoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwg
SWNvblR5cGUgdHlwZSkKIHsKICAgICBpZiAobG9hZGVyID09IG1fZG9jdW1lbnRMb2FkZXIpCi0g
ICAgICAgIG1fY2xpZW50LT5kaXNwYXRjaERpZENoYW5nZUljb25zKCk7CisgICAgICAgIG1fY2xp
ZW50LT5kaXNwYXRjaERpZENoYW5nZUljb25zKHR5cGUpOwogfQogCiB2b2lkIEZyYW1lTG9hZGVy
OjpkaXNwYXRjaERpZENvbW1pdExvYWQoKQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyLmgJKHJldmlzaW9uIDg1MTg3KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJGcmFtZUxv
YWRlclR5cGVzLmgiCiAjaW5jbHVkZSAiSGlzdG9yeUNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJJ
Y29uRGF0YWJhc2VCYXNlLmgiCisjaW5jbHVkZSAiSWNvblVSTC5oIgogI2luY2x1ZGUgIlBvbGlj
eUNoZWNrZXIuaCIKICNpbmNsdWRlICJSZXNvdXJjZUxvYWROb3RpZmllci5oIgogI2luY2x1ZGUg
IlNjcmlwdFZhbHVlLmgiCkBAIC0xOTIsNyArMTkzLDcgQEAgcHVibGljOgogICAgIGJvb2wgc3Vi
ZnJhbWVJc0xvYWRpbmcoKSBjb25zdDsKICAgICB2b2lkIHdpbGxDaGFuZ2VUaXRsZShEb2N1bWVu
dExvYWRlciopOwogICAgIHZvaWQgZGlkQ2hhbmdlVGl0bGUoRG9jdW1lbnRMb2FkZXIqKTsKLSAg
ICB2b2lkIGRpZENoYW5nZUljb25zKERvY3VtZW50TG9hZGVyKik7CisgICAgdm9pZCBkaWRDaGFu
Z2VJY29ucyhEb2N1bWVudExvYWRlciosIEljb25UeXBlKTsKIAogICAgIEZyYW1lTG9hZFR5cGUg
bG9hZFR5cGUoKSBjb25zdDsKIApAQCAtMjM0LDcgKzIzNSwxMSBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBkaWRFbmREb2N1bWVudCgpOwogICAgIHZvaWQgd2lsbFNldEVuY29kaW5nKCk7CiAKKyAgICAv
LyBSZXR1cm5zIGZhdmljb24uCiAgICAgS1VSTCBpY29uVVJMKCk7CisKKyAgICAvLyBSZXR1cm5z
IHRoZSBnaXZlbiBpY29uVHlwZXMnIEljb25VUkxzLCBpY29uVHlwZXMgY291bGQgYmUgYW55IGNv
bWJpbmF0aW9uIG9mIEljb25UeXBlLgorICAgIFZlY3RvcjxJY29uVVJMPiBpY29uVVJMcyhpbnQg
aWNvblR5cGVzKTsKICAgICB2b2lkIGNvbW1pdEljb25VUkxUb0ljb25EYXRhYmFzZShjb25zdCBL
VVJMJik7CiAKICAgICBLVVJMIGJhc2VVUkwoKSBjb25zdDsKQEAgLTI4NSw3ICsyOTAsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBjYW5jZWxBbmRDbGVhcigpOwogCiAgICAgdm9pZCBzZXRUaXRsZShj
b25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJik7Ci0gICAgdm9pZCBzZXRJY29uVVJMKGNvbnN0IFN0
cmluZyYpOworICAgIHZvaWQgc2V0SWNvblVSTChjb25zdCBJY29uVVJMJik7CiAKICAgICB2b2lk
IGNvbW1pdFByb3Zpc2lvbmFsTG9hZCgpOwogICAgIGJvb2wgaXNMb2FkaW5nRnJvbUNhY2hlZFBh
Z2UoKSBjb25zdCB7IHJldHVybiBtX2xvYWRpbmdGcm9tQ2FjaGVkUGFnZTsgfQpAQCAtNDI5LDYg
KzQzNCw5IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHVwZGF0ZVNhbmRib3hGbGFncygpOwogCisg
ICAgYm9vbCBmaWxsSWNvblVSTChJY29uVHlwZSwgVmVjdG9yPEljb25VUkw+Kik7CisgICAgSWNv
blVSTCBnZXREZWZhdWx0SWNvblVSTChJY29uVHlwZSk7CisKICAgICBGcmFtZSogbV9mcmFtZTsK
ICAgICBGcmFtZUxvYWRlckNsaWVudCogbV9jbGllbnQ7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCShyZXZpc2lvbiA4NTE4NykKKysrIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2
ICszMCw3IEBACiAjZGVmaW5lIEZyYW1lTG9hZGVyQ2xpZW50X2gKIAogI2luY2x1ZGUgIkZyYW1l
TG9hZGVyVHlwZXMuaCIKKyNpbmNsdWRlICJJY29uVVJMLmgiCiAjaW5jbHVkZSAiU2Nyb2xsVHlw
ZXMuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
QEAgLTE0MSw3ICsxNDIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaERpZFJlY2VpdmVJY29uKCkgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpID0gMDsKICAgICAgICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mKSA9
IDA7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZUljb25zKCkgPSAwOwor
ICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucyhJY29uVHlwZSkgPSAw
OwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDb21taXRMb2FkKCkgPSAwOwogICAg
ICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGYWlsUHJvdmlzaW9uYWxMb2FkKGNvbnN0IFJl
c291cmNlRXJyb3ImKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxM
b2FkKGNvbnN0IFJlc291cmNlRXJyb3ImKSA9IDA7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiA4
NTE4NykKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDE4IEBACisyMDExLTA0LTIyICBUYW8gQmFpICA8bWljaGFlbGJhaUBjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUG9wdWxh
dGUgdG91Y2gtaWNvbiB1cmwgdG8gRnJhbWVMb2FkZXJDbGllbnQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU5MTQzCisKKyAgICAgICAgUmVzcGVjdGVk
IHRoZSBjaGFuZ2Ugb2YgRnJhbWVMb2FkZXJDbGllbnQuCisgICAgICAgIEFkZGVkIFdlYkljb25V
UkwgYW5kIFdlYkljb25UeXBlIHJlc3BvbmRpbmcgdGhlIG5ldyBJY29uVVJMIGFuZCBJY29uVHlw
ZS4KKyAgICAgICAgU3VwcG9ydGVkIHRvIGdldCB0aGUgbXVsdGlwbGUgaWNvbiB1cmxzLgorCisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENo
YW5nZUljb25zKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50Lmg6CisKIDIwMTEtMDQtMjcgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9y
Zz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGFtIFJvYmVuLgpJbmRleDogU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5jcHAJKHJldmlzaW9uIDg1MTg3KQorKysgU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQxOCw3ICs0MTgsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpk
aXNwYXRjaERpZFJlCiAgICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpE
aWRSZWNlaXZlVGl0bGVGb3JGcmFtZShtX2ZyYW1lLT5mcmFtZUlEKCksIHRpdGxlLnN0cmluZygp
LCBJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdlRW5jb2Rlcih1c2VyRGF0YS5nZXQoKSkpKTsKIH0K
IAotdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygpCit2
b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENoYW5nZUljb25zKFdlYkNvcmU6
Okljb25UeXBlKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5oCShyZXZpc2lvbiA4NTE4NykKKysrIFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtODUsNyArODUsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRj
aERpZFJlY2VpdmVJY29uKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkU3RhcnRQcm92
aXNpb25hbExvYWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUo
Y29uc3QgV2ViQ29yZTo6U3RyaW5nV2l0aERpcmVjdGlvbiYpOwotICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaERpZENoYW5nZUljb25zKCk7CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hh
bmdlSWNvbnMoV2ViQ29yZTo6SWNvblR5cGUpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERp
ZENvbW1pdExvYWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGYWlsUHJvdmlzaW9u
YWxMb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKICAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hEaWRGYWlsTG9hZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CkluZGV4
OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gODUxODcpCisrKyBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMzIEBACisK
KzIwMTEtMDQtMjIgIFRhbyBCYWkgIDxtaWNoYWVsYmFpQGNocm9taXVtLm9yZz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQb3B1bGF0ZSB0b3VjaC1p
Y29uIHVybCB0byBGcmFtZUxvYWRlckNsaWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTkxNDMKKworICAgICAgICBSZXNwZWN0ZWQgdGhlIGNoYW5n
ZSBvZiBGcmFtZUxvYWRlckNsaWVudC4KKyAgICAgICAgQWRkZWQgV2ViSWNvblVSTCBhbmQgV2Vi
SWNvblR5cGUgcmVzcG9uZGluZyB0aGUgbmV3IEljb25VUkwgYW5kIEljb25UeXBlLgorICAgICAg
ICBTdXBwb3J0ZWQgdG8gZ2V0IHRoZSBtdWx0aXBsZSBpY29uIHVybHMuCisKKyAgICAgICAgKiBX
ZWJLaXQuZ3lwOgorICAgICAgICAqIHB1YmxpYy9XZWJGcmFtZS5oOgorICAgICAgICAqIHB1Ymxp
Yy9XZWJGcmFtZUNsaWVudC5oOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUNsaWVudDo6ZGlk
Q2hhbmdlSWNvbnMpOgorICAgICAgICAqIHB1YmxpYy9XZWJJY29uVVJMLmg6IEFkZGVkLgorICAg
ICAgICAoV2ViS2l0OjpXZWJJY29uVVJMOjpXZWJJY29uVVJMKToKKyAgICAgICAgKiBzcmMvRnJh
bWVMb2FkZXJDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGll
bnRJbXBsOjpkaXNwYXRjaERpZENoYW5nZUljb25zKToKKyAgICAgICAgKiBzcmMvRnJhbWVMb2Fk
ZXJDbGllbnRJbXBsLmg6CisgICAgICAgICogc3JjL1dlYkZyYW1lSW1wbC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYkZyYW1lSW1wbDo6ZmF2SWNvblVSTCk6CisgICAgICAgICogc3JjL1dlYkZy
YW1lSW1wbC5oOgorICAgICAgICAqIHNyYy9XZWJJY29uVHlwZVV0aWxpdGllcy5jcHA6IEFkZGVk
LgorICAgICAgICAoV2ViS2l0OjpXZWJJY29uVHlwZVV0aWxpdGllczo6Q29udmVydFdlYkljb25U
eXBlVG9JY29uVHlwZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkljb25UeXBlVXRpbGl0aWVzOjpD
b252ZXJ0SWNvblR5cGVUb1dlYkljb25UeXBlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSWNvblR5
cGVVdGlsaXRpZXM6OkNvbnZlcnRXZWJJY29uVHlwZXNUb0ljb25UeXBlcyk6CisgICAgICAgICog
c3JjL1dlYkljb25UeXBlVXRpbGl0aWVzLmg6IEFkZGVkLgorCiAyMDExLTA0LTI3ICBEbWl0cnkg
TG9tb3YgIDxkc2xvbW92QGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGF2aWQg
TGV2aW4uCkBAIC0zOTEsNiArNDIxLDcgQEAKICAgICAgICAgKiB0ZXN0cy9UcmFuc3BhcmVuY3lX
aW5UZXN0LmNwcDoKICAgICAgICAgKFdlYkNvcmU6OlRFU1QpOgogCis+Pj4+Pj4+IC5yODQ5MTcK
IDIwMTEtMDQtMjIgIE1pa2hhaWwgTmFnYW5vdiAgPG1uYWdhbm92QGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBQYXZlbCBGZWxkbWFuLgpJbmRleDogU291cmNlL1dlYktpdC9j
aHJvbWl1bS9XZWJLaXQuZ3lwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
V2ViS2l0Lmd5cAkocmV2aXNpb24gODUxODcpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dl
YktpdC5neXAJKHdvcmtpbmcgY29weSkKQEAgLTE4NSw2ICsxODUsNyBAQAogICAgICAgICAgICAg
ICAgICdwdWJsaWMvV2ViSFRUUEJvZHkuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJI
VFRQTG9hZEluZm8uaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJJY29uTG9hZGluZ0Nv
bXBsZXRpb24uaCcsCisgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJJY29uVHlwZS5oJywKICAg
ICAgICAgICAgICAgICAncHVibGljL1dlYkltYWdlLmgnLAogICAgICAgICAgICAgICAgICdwdWJs
aWMvV2ViSW1hZ2VEZWNvZGVyLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViSURCQ2Fs
bGJhY2tzLmgnLApAQCAtNDc1LDYgKzQ3Niw4IEBACiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJI
aXN0b3J5SXRlbS5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViSFRUUEJvZHkuY3BwJywK
ICAgICAgICAgICAgICAgICAnc3JjL1dlYkhUVFBMb2FkSW5mby5jcHAnLAorICAgICAgICAgICAg
ICAgICdzcmMvV2ViSWNvblR5cGVVdGlsaXRpZXMuY3BwJywKKyAgICAgICAgICAgICAgICAnc3Jj
L1dlYkljb25UeXBlVXRpbGl0aWVzLmgnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViSWNvbkxv
YWRpbmdDb21wbGV0aW9uSW1wbC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViSWNvbkxv
YWRpbmdDb21wbGV0aW9uSW1wbC5oJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYklEQkNhbGxi
YWNrc0ltcGwuY3BwJywKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vZmVhdHVyZXMuZ3lw
aQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL2ZlYXR1cmVzLmd5cGkJKHJl
dmlzaW9uIDg1MTg3KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9mZWF0dXJlcy5neXBpCSh3
b3JraW5nIGNvcHkpCkBAIC04OCw2ICs4OCw3IEBACiAgICAgICAgICdFTkFCTEVfU1ZHX0ZPUkVJ
R05fT0JKRUNUPTEnLAogICAgICAgICAnRU5BQkxFX1NWR19VU0U9MScsCiAgICAgICAgICdFTkFC
TEVfVE9VQ0hfRVZFTlRTPTEnLAorICAgICAgICAnRU5BQkxFX1RPVUNIX0lDT05fTE9BRElORz0x
JywKICAgICAgICAgJ0VOQUJMRV9WOF9TQ1JJUFRfREVCVUdfU0VSVkVSPTEnLAogICAgICAgICAn
RU5BQkxFX1ZJREVPPTEnLAogICAgICAgICAnRU5BQkxFX1dFQl9BVURJTz0wJywKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZyYW1lLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWUuaAkocmV2aXNpb24gODUxODcpCisr
KyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zMyw2ICszMyw3IEBACiAKICNpbmNsdWRlICJXZWJDYW52YXMuaCIKICNpbmNsdWRlICJX
ZWJGaWxlU3lzdGVtLmgiCisjaW5jbHVkZSAiV2ViSWNvblVSTC5oIgogI2luY2x1ZGUgIldlYk5v
ZGUuaCIKICNpbmNsdWRlICJXZWJVUkwuaCIKIApAQCAtMTI5LDkgKzEzMCw5IEBAIHB1YmxpYzoK
ICAgICAvLyBkYXRhU291cmNlKCktPnJlcXVlc3QoKS51cmwoKS4KICAgICB2aXJ0dWFsIFdlYlVS
TCB1cmwoKSBjb25zdCA9IDA7CiAKLSAgICAvLyBUaGUgdXJsIG9mIHRoZSBmYXZpY29uIChpZiBh
bnkpIHNwZWNpZmllZCBieSB0aGUgZG9jdW1lbnQgbG9hZGVkIGluCisgICAgLy8gVGhlIHVybHMg
b2YgdGhlIGZhdmljb24gKGlmIGFueSkgc3BlY2lmaWVkIGJ5IHRoZSBkb2N1bWVudCBsb2FkZWQg
aW4KICAgICAvLyB0aGlzIGZyYW1lLgotICAgIHZpcnR1YWwgV2ViVVJMIGZhdkljb25VUkwoKSBj
b25zdCA9IDA7CisgICAgdmlydHVhbCBzdGQ6OnZlY3RvcjxXZWJJY29uVVJMPiBmYXZJY29uVVJM
KGludCkgY29uc3QgPSAwOwogCiAgICAgLy8gVGhlIHVybCBvZiB0aGUgT3BlblNlYXJjaCBEZXNy
aXB0aW9uIERvY3VtZW50IChpZiBhbnkpIHNwZWNpZmllZCBieQogICAgIC8vIHRoZSBkb2N1bWVu
dCBsb2FkZWQgaW4gdGhpcyBmcmFtZS4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYkZyYW1lQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViRnJhbWVDbGllbnQuaAkocmV2aXNpb24gODUxODcpCisrKyBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
Myw2ICszMyw3IEBACiAKICNpbmNsdWRlICJXZWJDb21tb24uaCIKICNpbmNsdWRlICJXZWJGaWxl
U3lzdGVtLmgiCisjaW5jbHVkZSAiV2ViSWNvblVSTC5oIgogI2luY2x1ZGUgIldlYk5hdmlnYXRp
b25Qb2xpY3kuaCIKICNpbmNsdWRlICJXZWJOYXZpZ2F0aW9uVHlwZS5oIgogI2luY2x1ZGUgIldl
YlN0b3JhZ2VRdW90YVR5cGUuaCIKQEAgLTIxNSw3ICsyMTYsNyBAQCBwdWJsaWM6CiAgICAgfQog
CiAgICAgLy8gVGhlIGljb25zIGZvciB0aGUgcGFnZSBoYXZlIGNoYW5nZWQuCi0gICAgdmlydHVh
bCB2b2lkIGRpZENoYW5nZUljb25zKFdlYkZyYW1lKikgeyB9CisgICAgdmlydHVhbCB2b2lkIGRp
ZENoYW5nZUljb25zKFdlYkZyYW1lKiwgV2ViSWNvblR5cGUpIHsgfQogCiAgICAgLy8gVGhlIGZy
YW1lJ3MgZG9jdW1lbnQgZmluaXNoZWQgbG9hZGluZy4KICAgICB2aXJ0dWFsIHZvaWQgZGlkRmlu
aXNoRG9jdW1lbnRMb2FkKFdlYkZyYW1lKikgeyB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJJY29uVVJMLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViSWNvblVSTC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViSWNvblVSTC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY1IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
KyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
CisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmbmRlZiBXZWJJY29uVVJMX2gKKyNkZWZpbmUgV2ViSWNvblVSTF9oCisKKyNpbmNsdWRlICJX
ZWJVUkwuaCIKKworI2luY2x1ZGUgPHZlY3Rvcj4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2Vu
dW0gV2ViSWNvblR5cGUgeworICAgIEludmFsaWRJY29uID0gMCwKKyAgICBGYXZpY29uID0gMSwK
KyAgICBUb3VjaEljb24gPSAxIDw8IDEsCisgICAgVG91Y2hQcmVjb21wb3NlZEljb24gPSAxIDw8
IDIKK307CisKK3N0cnVjdCBXZWJJY29uVVJMIHsKKyAgICBXZWJJY29uVVJMKCkKKyAgICAgICAg
OiBtX2ljb25UeXBlKEludmFsaWRJY29uKQorICAgIHsKKyAgICB9CisKKyAgICBXZWJJY29uVVJM
KGNvbnN0IFdlYlVSTCYgdXJsLCBXZWJJY29uVHlwZSB0eXBlKQorICAgICAgICA6IG1faWNvblR5
cGUodHlwZSkKKyAgICAgICAgLCBtX2ljb25VUkwodXJsKQorICAgIHsKKyAgICB9CisKKyAgICBX
ZWJJY29uVHlwZSBtX2ljb25UeXBlOworICAgIFdlYlVSTCBtX2ljb25VUkw7Cit9OworCit9CisK
KyNlbmRpZiAvLyBXZWJJY29uVVJMX2gKClByb3BlcnR5IGNoYW5nZXMgb246IFNvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYkljb25VUkwuaApfX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZW9s
LXN0eWxlCiAgICsgTEYKCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxv
YWRlckNsaWVudEltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAJKHJldmlzaW9uIDg1MTg3KQorKysgU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNjEsNiArNjEsNyBAQAogI2luY2x1ZGUgIldlYkZvcm1FbGVtZW50LmgiCiAjaW5j
bHVkZSAiV2ViRnJhbWVDbGllbnQuaCIKICNpbmNsdWRlICJXZWJGcmFtZUltcGwuaCIKKyNpbmNs
dWRlICJXZWJJY29uVHlwZVV0aWxpdGllcy5oIgogI2luY2x1ZGUgIldlYktpdC5oIgogI2luY2x1
ZGUgIldlYktpdENsaWVudC5oIgogI2luY2x1ZGUgIldlYk1pbWVSZWdpc3RyeS5oIgpAQCAtNzQ4
LDEwICs3NDksMTAgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudEltcGw6OmRpc3BhdGNoRGlkUgog
ICAgICAgICBtX3dlYkZyYW1lLT5jbGllbnQoKS0+ZGlkUmVjZWl2ZVRpdGxlKG1fd2ViRnJhbWUs
IHRpdGxlLnN0cmluZygpLCB0aXRsZS5kaXJlY3Rpb24oKSA9PSBMVFIgPyBXZWJUZXh0RGlyZWN0
aW9uTGVmdFRvUmlnaHQgOiBXZWJUZXh0RGlyZWN0aW9uUmlnaHRUb0xlZnQpOwogfQogCi12b2lk
IEZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6ZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygpCit2b2lkIEZy
YW1lTG9hZGVyQ2xpZW50SW1wbDo6ZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucyhXZWJDb3JlOjpJY29u
VHlwZSB0eXBlKQogewogICAgIGlmIChtX3dlYkZyYW1lLT5jbGllbnQoKSkKLSAgICAgICAgbV93
ZWJGcmFtZS0+Y2xpZW50KCktPmRpZENoYW5nZUljb25zKG1fd2ViRnJhbWUpOworICAgICAgICBt
X3dlYkZyYW1lLT5jbGllbnQoKS0+ZGlkQ2hhbmdlSWNvbnMobV93ZWJGcmFtZSwgV2ViSWNvblR5
cGVVdGlsaXRpZXM6OkNvbnZlcnRJY29uVHlwZVRvV2ViSWNvblR5cGUodHlwZSkpOwogfQogCiB2
b2lkIEZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6ZGlzcGF0Y2hEaWRDb21taXRMb2FkKCkKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1w
bC5oCShyZXZpc2lvbiA4NTE4NykKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1l
TG9hZGVyQ2xpZW50SW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDUsNyArMTA1LDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVJY29uKCk7CiAgICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoRGlkU3RhcnRQcm92aXNpb25hbExvYWQoKTsKICAgICB2aXJ0dWFs
IHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgV2ViQ29yZTo6U3RyaW5nV2l0aERp
cmVjdGlvbiYpOwotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZUljb25zKCk7Cisg
ICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoV2ViQ29yZTo6SWNvblR5cGUp
OwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENvbW1pdExvYWQoKTsKICAgICB2aXJ0dWFs
IHZvaWQgZGlzcGF0Y2hEaWRGYWlsUHJvdmlzaW9uYWxMb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlRXJyb3ImKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGYWlsTG9hZChjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJGcmFtZUltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYkZyYW1lSW1wbC5jcHAJKHJldmlzaW9uIDg1MTg3KQorKysgU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAwLDYgKzEw
MCw3IEBACiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSGlzdG9yeUl0ZW0uaCIK
ICNpbmNsdWRlICJIaXRUZXN0UmVzdWx0LmgiCisjaW5jbHVkZSAiSWNvblVSTC5oIgogI2luY2x1
ZGUgIkluc3BlY3RvckNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAi
cGFpbnRpbmcvR3JhcGhpY3NDb250ZXh0QnVpbGRlci5oIgpAQCAtMTM3LDYgKzEzOCw3IEBACiAj
aW5jbHVkZSAiV2ViRm9ybUVsZW1lbnQuaCIKICNpbmNsdWRlICJXZWJGcmFtZUNsaWVudC5oIgog
I2luY2x1ZGUgIldlYkhpc3RvcnlJdGVtLmgiCisjaW5jbHVkZSAiV2ViSWNvblR5cGVVdGlsaXRp
ZXMuaCIKICNpbmNsdWRlICJXZWJJbnB1dEVsZW1lbnQuaCIKICNpbmNsdWRlICJXZWJOb2RlLmgi
CiAjaW5jbHVkZSAiV2ViUGFzc3dvcmRBdXRvY29tcGxldGVMaXN0ZW5lci5oIgpAQCAtNTE4LDE3
ICs1MjAsMjAgQEAgV2ViVVJMIFdlYkZyYW1lSW1wbDo6dXJsKCkgY29uc3QKICAgICByZXR1cm4g
ZHMtPnJlcXVlc3QoKS51cmwoKTsKIH0KIAotV2ViVVJMIFdlYkZyYW1lSW1wbDo6ZmF2SWNvblVS
TCgpIGNvbnN0CitzdGQ6OnZlY3RvcjxXZWJJY29uVVJMPiBXZWJGcmFtZUltcGw6OmZhdkljb25V
UkwoaW50IHdlYkljb25UeXBlcykgY29uc3QKIHsKICAgICBGcmFtZUxvYWRlciogZnJhbWVMb2Fk
ZXIgPSBtX2ZyYW1lLT5sb2FkZXIoKTsKKyAgICBzdGQ6OnZlY3RvcjxXZWJJY29uVVJMPiB3ZWJJ
Y29uVVJMczsKKwogICAgIC8vIFRoZSBVUkwgdG8gdGhlIGZhdmljb24gbWF5IGJlIGluIHRoZSBo
ZWFkZXIuIEFzIHN1Y2gsIG9ubHkKICAgICAvLyBhc2sgdGhlIGxvYWRlciBmb3IgdGhlIGZhdmlj
b24gaWYgaXQncyBmaW5pc2hlZCBsb2FkaW5nLgogICAgIGlmIChmcmFtZUxvYWRlci0+c3RhdGUo
KSA9PSBGcmFtZVN0YXRlQ29tcGxldGUpIHsKLSAgICAgICAgY29uc3QgS1VSTCYgdXJsID0gZnJh
bWVMb2FkZXItPmljb25VUkwoKTsKLSAgICAgICAgaWYgKCF1cmwuaXNFbXB0eSgpKQotICAgICAg
ICAgICAgcmV0dXJuIHVybDsKKyAgICAgICAgaW50IGljb25UeXBlcyA9IFdlYkljb25UeXBlVXRp
bGl0aWVzOjpDb252ZXJ0V2ViSWNvblR5cGVzVG9JY29uVHlwZXMod2ViSWNvblR5cGVzKTsKKyAg
ICAgICAgV1RGOjpWZWN0b3I8V2ViQ29yZTo6SWNvblVSTD4gaWNvblVSTHMgPSBmcmFtZUxvYWRl
ci0+aWNvblVSTHMoaWNvblR5cGVzKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBp
Y29uVVJMcy5zaXplKCk7IGkrKykKKyAgICAgICAgICAgIHdlYkljb25VUkxzLnB1c2hfYmFjayhX
ZWJJY29uVVJMKGljb25VUkxzW2ldLm1faWNvblVSTCwgV2ViSWNvblR5cGVVdGlsaXRpZXM6OkNv
bnZlcnRJY29uVHlwZVRvV2ViSWNvblR5cGUoaWNvblVSTHNbaV0ubV9pY29uVHlwZSkpKTsKICAg
ICB9Ci0gICAgcmV0dXJuIFdlYlVSTCgpOworICAgIHJldHVybiB3ZWJJY29uVVJMczsKIH0KIAog
V2ViVVJMIFdlYkZyYW1lSW1wbDo6b3BlblNlYXJjaERlc2NyaXB0aW9uVVJMKCkgY29uc3QKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5oCShyZXZpc2lvbiA4
NTE4NykKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC03MCw3ICs3MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0
TmFtZShjb25zdCBXZWJTdHJpbmcmKTsKICAgICB2aXJ0dWFsIGxvbmcgbG9uZyBpZGVudGlmaWVy
KCkgY29uc3Q7CiAgICAgdmlydHVhbCBXZWJVUkwgdXJsKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBX
ZWJVUkwgZmF2SWNvblVSTCgpIGNvbnN0OworICAgIHZpcnR1YWwgc3RkOjp2ZWN0b3I8V2ViSWNv
blVSTD4gZmF2SWNvblVSTChpbnQpIGNvbnN0OwogICAgIHZpcnR1YWwgV2ViVVJMIG9wZW5TZWFy
Y2hEZXNjcmlwdGlvblVSTCgpIGNvbnN0OwogICAgIHZpcnR1YWwgV2ViU3RyaW5nIGVuY29kaW5n
KCkgY29uc3Q7CiAgICAgdmlydHVhbCBXZWJTaXplIHNjcm9sbE9mZnNldCgpIGNvbnN0OwpJbmRl
eDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSWNvblR5cGVVdGlsaXRpZXMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkljb25UeXBlVXRpbGl0
aWVzLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklj
b25UeXBlVXRpbGl0aWVzLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4NyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0
cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisg
KiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKworI2luY2x1ZGUgIldlYkljb25UeXBlVXRpbGl0aWVzLmgiCisKK25hbWVz
cGFjZSBXZWJLaXQgeworV2ViQ29yZTo6SWNvblR5cGUgV2ViSWNvblR5cGVVdGlsaXRpZXM6OkNv
bnZlcnRXZWJJY29uVHlwZVRvSWNvblR5cGUoV2ViSWNvblR5cGUgd2ViSWNvblR5cGUpCit7Cisg
ICAgV2ViQ29yZTo6SWNvblR5cGUgaWNvblR5cGUgPSBXZWJDb3JlOjpJbnZhbGlkSWNvbjsKKyAg
ICBzd2l0Y2ggKHdlYkljb25UeXBlKSB7CisgICAgY2FzZSBGYXZpY29uOgorICAgICAgICBpY29u
VHlwZSA9IFdlYkNvcmU6OkZhdmljb247CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVG91Y2hJ
Y29uOgorICAgICAgICBpY29uVHlwZSA9IFdlYkNvcmU6OlRvdWNoSWNvbjsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBUb3VjaFByZWNvbXBvc2VkSWNvbjoKKyAgICAgICAgaWNvblR5cGUgPSBX
ZWJDb3JlOjpUb3VjaFByZWNvbXBvc2VkSWNvbjsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVs
dDoKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIHJldHVybiBpY29uVHlwZTsKK30KKworV2Vi
SWNvblR5cGUgV2ViSWNvblR5cGVVdGlsaXRpZXM6OkNvbnZlcnRJY29uVHlwZVRvV2ViSWNvblR5
cGUoV2ViQ29yZTo6SWNvblR5cGUgaWNvblR5cGUpCit7CisgICAgV2ViSWNvblR5cGUgdHlwZSA9
IEludmFsaWRJY29uOworICAgIHN3aXRjaCAoaWNvblR5cGUpIHsKKyAgICBjYXNlIFdlYkNvcmU6
OkZhdmljb246CisgICAgICAgIHR5cGUgPSBGYXZpY29uOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIFdlYkNvcmU6OlRvdWNoSWNvbjoKKyAgICAgICAgdHlwZSA9IFRvdWNoSWNvbjsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBXZWJDb3JlOjpUb3VjaFByZWNvbXBvc2VkSWNvbjoKKyAgICAg
ICAgdHlwZSA9IFRvdWNoUHJlY29tcG9zZWRJY29uOworICAgICAgICBicmVhazsKKyAgICBkZWZh
dWx0OgorICAgICAgICBicmVhazsKKyAgICB9CisgICAgcmV0dXJuIHR5cGU7Cit9CisKK2ludCBX
ZWJJY29uVHlwZVV0aWxpdGllczo6Q29udmVydFdlYkljb25UeXBlc1RvSWNvblR5cGVzKGludCB3
ZWJJY29uVHlwZXMpCit7CisgICAgaW50IGljb25UeXBlcyA9IDA7CisgICAgaWYgKHdlYkljb25U
eXBlcyAmIEZhdmljb24pCisgICAgICAgIGljb25UeXBlcyB8PSBXZWJDb3JlOjpGYXZpY29uOwor
ICAgIGlmICh3ZWJJY29uVHlwZXMgJiBUb3VjaEljb24pCisgICAgICAgIGljb25UeXBlcyB8PSBX
ZWJDb3JlOjpUb3VjaEljb247CisgICAgaWYgKHdlYkljb25UeXBlcyAmIFRvdWNoUHJlY29tcG9z
ZWRJY29uKQorICAgICAgICBpY29uVHlwZXMgfD0gV2ViQ29yZTo6VG91Y2hQcmVjb21wb3NlZElj
b247CisKKyAgICByZXR1cm4gaWNvblR5cGVzOworfQorCit9CgpQcm9wZXJ0eSBjaGFuZ2VzIG9u
OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJY29uVHlwZVV0aWxpdGllcy5jcHAKX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fXwpBZGRlZDogc3ZuOmVvbC1zdHlsZQogICArIExGCgpJbmRleDogU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViSWNvblR5cGVVdGlsaXRpZXMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJY29uVHlwZVV0aWxpdGllcy5oCShyZXZpc2lvbiAw
KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSWNvblR5cGVVdGlsaXRpZXMuaAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
CisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViSWNvblR5cGVVdGlsaXRpZXNf
aAorI2RlZmluZSBXZWJJY29uVHlwZVV0aWxpdGllc19oCisKKyNpbmNsdWRlICJJY29uVVJMLmgi
CisjaW5jbHVkZSAiV2ViSWNvblVSTC5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3Mg
V2ViSWNvblR5cGVVdGlsaXRpZXMgeworIHB1YmxpYzoKKyAgICBzdGF0aWMgV2ViQ29yZTo6SWNv
blR5cGUgQ29udmVydFdlYkljb25UeXBlVG9JY29uVHlwZShXZWJJY29uVHlwZSk7CisgICAgc3Rh
dGljIFdlYkljb25UeXBlIENvbnZlcnRJY29uVHlwZVRvV2ViSWNvblR5cGUoV2ViQ29yZTo6SWNv
blR5cGUpOworICAgIHN0YXRpYyBpbnQgQ29udmVydFdlYkljb25UeXBlc1RvSWNvblR5cGVzKGlu
dCk7Cit9OworCit9CisKKyNlbmRpZiAvLyBXZWJJY29uVHlwZVV0aWxpdGllc19oCgpQcm9wZXJ0
eSBjaGFuZ2VzIG9uOiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJY29uVHlwZVV0aWxp
dGllcy5oCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjplb2wtc3R5bGUKICAgKyBMRgoKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Vm
bC9DaGFuZ2VMb2cJKHJldmlzaW9uIDg1MTg3KQorKysgU291cmNlL1dlYktpdC9lZmwvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTEtMDQtMjIgIFRhbyBCYWkg
IDxtaWNoYWVsYmFpQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBQb3B1bGF0ZSB0b3VjaC1pY29uIHVybCB0byBGcmFtZUxvYWRl
ckNsaWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NTkxNDMKKworICAgICAgICBSZXNwZWN0IHRoZSBpbnRlcmZhY2UgY2hhbmdlIGluIEZyYW1lTG9h
ZGVyQ2xpZW50CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVm
bC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hE
aWRDaGFuZ2VJY29ucyk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGll
bnRFZmwuaDoKKwogMjAxMS0wNC0yNiAgR3J6ZWdvcnogQ3phamtvd3NraSAgPGcuY3phamtvd3Nr
aUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbnRvbmlvIEdvbWVzLgpJbmRl
eDogU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1l
TG9hZGVyQ2xpZW50RWZsLmNwcAkocmV2aXNpb24gODUxODcpCisrKyBTb3VyY2UvV2ViS2l0L2Vm
bC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTU4Nyw3ICs1ODcsNyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERp
ZFJlCiAgICAgZXdrX3ZpZXdfdGl0bGVfc2V0KG1fdmlldywgY3MuZGF0YSgpKTsKIH0KIAotdm9p
ZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygpCit2b2lkIEZy
YW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERpZENoYW5nZUljb25zKFdlYkNvcmU6Okljb25U
eXBlKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Vm
bC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmgJKHJl
dmlzaW9uIDg1MTg3KQorKysgU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVM
b2FkZXJDbGllbnRFZmwuaAkod29ya2luZyBjb3B5KQpAQCAtMTAzLDcgKzEwMyw3IEBAIGNsYXNz
IEZyYW1lTG9hZGVyQ2xpZW50RWZsIDogcHVibGljIEZyYW0KICAgICB2aXJ0dWFsIHZvaWQgZGlz
cGF0Y2hEaWRSZWNlaXZlSWNvbigpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFN0YXJ0
UHJvdmlzaW9uYWxMb2FkKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVRp
dGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0
Y2hEaWRDaGFuZ2VJY29ucygpOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZUlj
b25zKFdlYkNvcmU6Okljb25UeXBlKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDb21t
aXRMb2FkKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9h
ZChjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFp
bExvYWQoY29uc3QgUmVzb3VyY2VFcnJvciYpOwpJbmRleDogU291cmNlL1dlYktpdC9ndGsvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwkocmV2aXNp
b24gODUxODcpCisrKyBTb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxNiBAQAorMjAxMS0wNC0yMiAgVGFvIEJhaSAgPG1pY2hhZWxiYWlAY2hyb21p
dW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFBvcHVsYXRlIHRvdWNoLWljb24gdXJsIHRvIEZyYW1lTG9hZGVyQ2xpZW50CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01OTE0MworCisgICAgICAgIFJl
c3BlY3QgdGhlIGludGVyZmFjZSBjaGFuZ2UgaW4gRnJhbWVMb2FkZXJDbGllbnQuCisKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENoYW5nZUljb25zKToKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5oOgorCiAyMDExLTA0LTI3
ICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBFcmljIFNlaWRlbC4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBw
b3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHAJKHJldmlzaW9uIDg1
MTg3KQorKysgU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGll
bnRHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NjksNyArOTY5LDcgQEAgdm9pZCBGcmFtZUxv
YWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRSZWNlaQogICAgIH0KIH0KIAotdm9pZCBGcmFtZUxvYWRl
ckNsaWVudDo6ZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygpCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50
OjpkaXNwYXRjaERpZENoYW5nZUljb25zKFdlYkNvcmU6Okljb25UeXBlKQogewogICAgIG5vdElt
cGxlbWVudGVkKCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9G
cmFtZUxvYWRlckNsaWVudEd0ay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZ3RrL1dl
YkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmgJKHJldmlzaW9uIDg1MTg3KQorKysg
U291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuaAko
d29ya2luZyBjb3B5KQpAQCAtODIsNyArODIsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKICAgICAg
ICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUljb24oKTsKICAgICAgICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoRGlkU3RhcnRQcm92aXNpb25hbExvYWQoKTsKICAgICAgICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFdlYkNvcmU6OlN0cmluZ1dpdGhE
aXJlY3Rpb24mKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMo
KTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoV2ViQ29yZTo6
SWNvblR5cGUpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDb21taXRMb2FkKCk7
CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxQcm92aXNpb25hbExvYWQoY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0
Y2hEaWRGYWlsTG9hZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMv
Q2hhbmdlTG9nCShyZXZpc2lvbiA4NTE4NykKKysrIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisKKzIwMTEtMDQtMjIgIFRhbyBCYWkg
IDxtaWNoYWVsYmFpQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBQb3B1bGF0ZSB0b3VjaC1pY29uIHVybCB0byBGcmFtZUxvYWRl
ckNsaWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NTkxNDMKKworICAgICAgICBSZXNwZWN0IHRoZSBpbnRlcmZhY2UgY2hhbmdlIGluIEZyYW1lTG9h
ZGVyQ2xpZW50LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbToK
KyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENoYW5nZUljb25zKToK
KwogMjAxMS0wNC0yNyAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAg
ICAgICAgIEZvbGxvdy11cCBMZW9wYXJkIGJ1aWxkIGZpeC4KQEAgLTE1Niw2ICsxNzAsNyBAQAog
ICAgICAgICAqIFdlYlZpZXcvV2ViRnVsbFNjcmVlbkNvbnRyb2xsZXIubW06CiAgICAgICAgICgt
W1dlYkZ1bGxTY3JlZW5Db250cm9sbGVyIF9kb2N1bWVudF0pOgogCis+Pj4+Pj4+IC5yODQ5MTcK
IDIwMTEtMDQtMjIgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgTWFjaWVqIFN0YWNob3dpYWsuCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgJKHJldmlz
aW9uIDg1MTg3KQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTAyLDcgKzEwMiw3IEBAIHByaXZhdGU6
CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUljb24oKTsKICAgICB2aXJ0dWFs
IHZvaWQgZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpOwogICAgIHZpcnR1YWwgdm9p
ZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBXZWJDb3JlOjpTdHJpbmdXaXRoRGlyZWN0
aW9uJik7Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoKTsKKyAgICB2
aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucyhXZWJDb3JlOjpJY29uVHlwZSk7CiAg
ICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ29tbWl0TG9hZCgpOwogICAgIHZpcnR1YWwgdm9p
ZCBkaXNwYXRjaERpZEZhaWxQcm92aXNpb25hbExvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciYpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxMb2FkKGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlRXJyb3ImKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCShyZXZpc2lvbiA4NTE4
NykKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC02MzMsNyArNjMzLDcgQEAgdm9pZCBXZWJGcmFtZUxv
YWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRSZQogICAgICAgICBDYWxsRnJhbWVMb2FkRGVsZWdhdGUo
aW1wbGVtZW50YXRpb25zLT5kaWRSZWNlaXZlVGl0bGVGb3JGcmFtZUZ1bmMsIHdlYlZpZXcsIEBz
ZWxlY3Rvcih3ZWJWaWV3OmRpZFJlY2VpdmVUaXRsZTpmb3JGcmFtZTopLCAoTlNTdHJpbmcgKil0
aXRsZS5zdHJpbmcoKSwgbV93ZWJGcmFtZS5nZXQoKSk7CiB9CiAKLXZvaWQgV2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoKQordm9pZCBXZWJGcmFtZUxvYWRlckNs
aWVudDo6ZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucyhXZWJDb3JlOjpJY29uVHlwZSkKIHsKICAgICAg
Ly8gRklYTUU6IEltcGxlbWVudCB0aGlzIHRvIGFsbG93IGNvbnRhaW5lciB0byB1cGRhdGUgZmF2
aWNvbi4KIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCShyZXZpc2lvbiA4NTE4NykKKysrIFNvdXJjZS9X
ZWJLaXQvcXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTEt
MDQtMjIgIFRhbyBCYWkgIDxtaWNoYWVsYmFpQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQb3B1bGF0ZSB0b3VjaC1pY29uIHVy
bCB0byBGcmFtZUxvYWRlckNsaWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NTkxNDMKKworICAgICAgICBSZXNwZWN0IHRoZSBpbnRlcmZhY2UgY2hh
bmdlIGluIEZyYW1lTG9hZGVyQ2xpZW50LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJh
bWVMb2FkZXJDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVu
dFF0OjpkaXNwYXRjaERpZENoYW5nZUljb25zKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9G
cmFtZUxvYWRlckNsaWVudFF0Lmg6CisKIDIwMTEtMDQtMjcgIFlpIFNoZW4gIDx5aS40LnNoZW5A
bm9raWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFu
c2VuLgpJbmRleDogU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNs
aWVudFF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0
L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwCShyZXZpc2lvbiA4NTE4NykKKysrIFNvdXJjZS9XZWJL
aXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQ1OSw3ICs0NTksNyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNo
RGlkUmVjCiB9CiAKIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERpZENoYW5n
ZUljb25zKCkKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hEaWRDaGFuZ2VJY29u
cyhXZWJDb3JlOjpJY29uVHlwZSkKIHsKICAgICBpZiAoZHVtcEZyYW1lTG9hZGVyQ2FsbGJhY2tz
KQogICAgICAgICBwcmludGYoIiVzIC0gZGlkQ2hhbmdlSWNvbnNcbiIsIHFQcmludGFibGUoZHJ0
RGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHQobV9mcmFtZSkpKTsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRR
dC5oCShyZXZpc2lvbiA4NTE4NykKKysrIFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQv
RnJhbWVMb2FkZXJDbGllbnRRdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTEsNyArMTExLDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVJY29uKCk7CiAgICAg
dmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkU3RhcnRQcm92aXNpb25hbExvYWQoKTsKICAgICB2aXJ0
dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlv
biYpOwotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZUljb25zKCk7CisgICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoV2ViQ29yZTo6SWNvblR5cGUpOwogICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENvbW1pdExvYWQoKTsKICAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hEaWRGYWlsUHJvdmlzaW9uYWxMb2FkKGNvbnN0IFJlc291cmNlRXJyb3ImKTsKICAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGYWlsTG9hZChjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yJik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCShyZXZpc2lvbiA4NTE4NykKKysrIFNvdXJj
ZS9XZWJLaXQvd2luL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisy
MDExLTA0LTIyICBUYW8gQmFpICA8bWljaGFlbGJhaUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUG9wdWxhdGUgdG91Y2gtaWNv
biB1cmwgdG8gRnJhbWVMb2FkZXJDbGllbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTU5MTQzCisKKyAgICAgICAgUmVzcGVjdCB0aGUgaW50ZXJmYWNl
IGNoYW5nZSBpbiBGcmFtZUxvYWRlckNsaWVudC4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50
OjpkaXNwYXRjaERpZENoYW5nZUljb25zKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5oOgorCiAyMDExLTA0LTI2ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdo
YW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGFtIFJvYmVuLgpJbmRleDog
U291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmNwcAkocmV2aXNpb24gODUxODcpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM3Myw4ICszNzMsMTEgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRS
ZQogICAgICAgICBmcmFtZUxvYWREZWxlZ2F0ZS0+ZGlkUmVjZWl2ZVRpdGxlKHdlYlZpZXcsIEJT
dHJpbmcodGl0bGUuc3RyaW5nKCkpLCBtX3dlYkZyYW1lKTsKIH0KIAotdm9pZCBXZWJGcmFtZUxv
YWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygpCit2b2lkIFdlYkZyYW1lTG9hZGVy
Q2xpZW50OjpkaXNwYXRjaERpZENoYW5nZUljb25zKFdlYkNvcmU6Okljb25UeXBlIHR5cGUpCiB7
CisgICAgaWYgKHR5cGUgIT0gV2ViQ29yZTo6RmF2aWNvbikKKyAgICAgICAgcmV0dXJuOworCiAg
ICAgV2ViVmlldyogd2ViVmlldyA9IG1fd2ViRnJhbWUtPndlYlZpZXcoKTsKICAgICBDT01QdHI8
SVdlYkZyYW1lTG9hZERlbGVnYXRlUHJpdmF0ZT4gZnJhbWVMb2FkRGVsZWdhdGVQcml2OwogICAg
IGlmIChGQUlMRUQod2ViVmlldy0+ZnJhbWVMb2FkRGVsZWdhdGVQcml2YXRlKCZmcmFtZUxvYWRE
ZWxlZ2F0ZVByaXYpKSB8fCAhZnJhbWVMb2FkRGVsZWdhdGVQcml2KQpJbmRleDogU291cmNlL1dl
YktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5oCShyZXZpc2lvbiA4NTE4NykKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTcwLDcgKzcwLDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVJY29uKCk7CiAgICAg
dmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkU3RhcnRQcm92aXNpb25hbExvYWQoKTsKICAgICB2aXJ0
dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgV2ViQ29yZTo6U3RyaW5nV2l0
aERpcmVjdGlvbiYpOwotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZUljb25zKCk7
CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoV2ViQ29yZTo6SWNvblR5
cGUpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENvbW1pdExvYWQoKTsKICAgICB2aXJ0
dWFsIHZvaWQgZGlzcGF0Y2hEaWRGaW5pc2hEb2N1bWVudExvYWQoKTsKICAgICB2aXJ0dWFsIHZv
aWQgZGlzcGF0Y2hEaWRGaW5pc2hMb2FkKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbmNlL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbmNlL0NoYW5nZUxvZwkocmV2
aXNpb24gODUxODcpCisrKyBTb3VyY2UvV2ViS2l0L3dpbmNlL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDExLTA0LTIyICBUYW8gQmFpICA8bWljaGFlbGJhaUBj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgUG9wdWxhdGUgdG91Y2gtaWNvbiB1cmwgdG8gRnJhbWVMb2FkZXJDbGllbnQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU5MTQzCisKKyAgICAg
ICAgUmVzcGVjdCB0aGUgaW50ZXJmYWNlIGNoYW5nZSBpbiBGcmFtZUxvYWRlckNsaWVudC4KKwor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V2luQ0UuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudFdpbkNFOjpkaXNwYXRjaERpZENoYW5nZUlj
b25zKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFdpbkNFLmg6
CisKIDIwMTEtMDQtMjEgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgV2luQ0UgYnVpbGQgZml4IGFmdGVyIHI4NDU3NC4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2lu
Y2UvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXaW5DRS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFdp
bkNFLmNwcAkocmV2aXNpb24gODUxODcpCisrKyBTb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVT
dXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V2luQ0UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNzYs
NyArMzc2LDcgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudFdpbkNFOjpkaXNwYXRjaERpZAogICAg
IG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRXaW5DRTo6ZGlz
cGF0Y2hEaWRDaGFuZ2VJY29ucygpCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50V2luQ0U6OmRpc3Bh
dGNoRGlkQ2hhbmdlSWNvbnMoV2ViQ29yZTo6SWNvblR5cGUpCiB7CiAgICAgbm90SW1wbGVtZW50
ZWQoKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvRnJhbWVM
b2FkZXJDbGllbnRXaW5DRS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luY2UvV2Vi
Q29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXaW5DRS5oCShyZXZpc2lvbiA4NTE4NykKKysr
IFNvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXaW5D
RS5oCSh3b3JraW5nIGNvcHkpCkBAIC03Nyw3ICs3Nyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbigpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRj
aERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlk
UmVjZWl2ZVRpdGxlKGNvbnN0IFdlYkNvcmU6OlN0cmluZ1dpdGhEaXJlY3Rpb24mKTsKLSAgICB2
aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygpOworICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaERpZENoYW5nZUljb25zKFdlYkNvcmU6Okljb25UeXBlKTsKICAgICB2aXJ0dWFsIHZv
aWQgZGlzcGF0Y2hEaWRDb21taXRMb2FkKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlk
RmFpbFByb3Zpc2lvbmFsTG9hZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAgICAg
dmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbExvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciYpOwpJbmRleDogU291cmNlL1dlYktpdC93eC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC93eC9DaGFuZ2VMb2cJKHJldmlzaW9uIDg1MTg3KQorKysgU291cmNlL1dl
YktpdC93eC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNyBAQAorCisyMDEx
LTA0LTIyICBUYW8gQmFpICA8bWljaGFlbGJhaUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUG9wdWxhdGUgdG91Y2gtaWNvbiB1
cmwgdG8gRnJhbWVMb2FkZXJDbGllbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTU5MTQzCisKKyAgICAgICAgUmVzcGVjdCB0aGUgaW50ZXJmYWNlIGNo
YW5nZSBpbiBGcmFtZUxvYWRlckNsaWVudC4KKworICAgICAgICAqIFdlYktpdFN1cHBvcnQvRnJh
bWVMb2FkZXJDbGllbnRXeC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVu
dFd4OjpkaXNwYXRjaERpZENoYW5nZUljb25zKToKKyAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0Zy
YW1lTG9hZGVyQ2xpZW50V3guaDoKKwogMjAxMS0wNC0yMyAgS2V2aW4gT2xsaXZpZXIgIDxrZXZp
bm9AdGhlb2xsaXZpZXJzLmNvbT4KIAogICAgICAgICBbd3hdIFVucmV2aWV3ZWQgYnVpbGQgZml4
LiBGaXhlZCBjYXBpdGFsaXphdGlvbiBmb3IgY2FzZSBzZW5zaXRpdmUgZmlsZXN5c3RlbXMuCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0ZyYW1lTG9h
ZGVyQ2xpZW50V3guY3BwCShyZXZpc2lvbiA4NTE4NykKKysrIFNvdXJjZS9XZWJLaXQvd3gvV2Vi
S2l0U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFd4LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzI3
LDcgKzMyNyw3IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRXeDo6ZGlzcGF0Y2hEaWRGaW4KICAg
ICB9CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRXeDo6ZGlzcGF0Y2hEaWRDaGFuZ2VJY29u
cygpCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50V3g6OmRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoV2Vi
Q29yZTo6SWNvblR5cGUpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFd4LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3gu
aAkocmV2aXNpb24gODUxODcpCisrKyBTb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRnJh
bWVMb2FkZXJDbGllbnRXeC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDksNyArMTA5LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGaW5pc2hM
b2FkKCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZpcnN0TGF5b3V0KCk7CiAg
ICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91
dCgpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygpOworICAg
ICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucyhXZWJDb3JlOjpJY29uVHlw
ZSk7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoU2hvdygpOwogICAgICAgICB2aXJ0
dWFsIHZvaWQgY2FuY2VsUG9saWN5Q2hlY2soKTsKSW5kZXg6IFRvb2xzL1NjcmlwdHMvYnVpbGQt
d2Via2l0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvYnVpbGQtd2Via2l0CShyZXZpc2lv
biA4NTE4NykKKysrIFRvb2xzL1NjcmlwdHMvYnVpbGQtd2Via2l0CSh3b3JraW5nIGNvcHkpCkBA
IC0xMTEsNiArMTExLDcgQEAgbXkgKAogICAgICRzeXN0ZW1NYWxsb2NTdXBwb3J0LAogICAgICR0
aWxlZEJhY2tpbmdTdG9yZVN1cHBvcnQsCiAgICAgJHRvdWNoRXZlbnRzU3VwcG9ydCwKKyAgICAk
dG91Y2hJY29uTG9hZGluZ1N1cHBvcnQsCiAgICAgJHZpZGVvU3VwcG9ydCwKICAgICAkd2Nzc1N1
cHBvcnQsCiAgICAgJHdlYkF1ZGlvU3VwcG9ydCwKQEAgLTI3Miw2ICsyNzMsOSBAQCBteSBAZmVh
dHVyZXMgPSAoCiAgICAgeyBvcHRpb24gPT4gInRvdWNoLWV2ZW50cyIsIGRlc2MgPT4gIlRvZ2ds
ZSBUb3VjaCBFdmVudHMgc3VwcG9ydCIsCiAgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9UT1VDSF9F
VkVOVFMiLCBkZWZhdWx0ID0+IGlzUXQoKSwgdmFsdWUgPT4gXCR0b3VjaEV2ZW50c1N1cHBvcnQg
fSwKIAorICAgIHsgb3B0aW9uID0+ICJ0b3VjaC1pY29uLWxvYWRpbmciLCBkZXNjID0+ICJUb2dn
bGUgVG91Y2ggSWNvbiBMb2FkaW5nIFN1cHBvcnQiLAorICAgICAgZGVmaW5lID0+ICJFTkFCTEVf
VE9VQ0hfSUNPTl9MT0FESU5HIiwgZGVmYXVsdCA9PiAwLCB2YWx1ZSA9PiBcJHRvdWNoSWNvbkxv
YWRpbmdTdXBwb3J0IH0sCisKICAgICB7IG9wdGlvbiA9PiAidmlkZW8iLCBkZXNjID0+ICJUb2dn
bGUgVmlkZW8gc3VwcG9ydCIsCiAgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9WSURFTyIsIGRlZmF1
bHQgPT4gKGlzQXBwbGVXZWJLaXQoKSB8fCBpc0d0aygpKSwgdmFsdWUgPT4gXCR2aWRlb1N1cHBv
cnQgfSwKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>91518</attachid>
            <date>2011-04-28 11:01:56 -0700</date>
            <delta_ts>2011-05-03 10:15:41 -0700</delta_ts>
            <desc>Fix chromium build</desc>
            <filename>patch.5</filename>
            <type>text/plain</type>
            <size>67389</size>
            <attacher>michaelbai</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg1MTg3KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDcgQEAKKzIwMTEtMDQtMjIgIFRhbyBCYWkg
IDxtaWNoYWVsYmFpQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBQb3B1bGF0ZSB0b3VjaC1pY29uIHVybCB0byBGcmFtZUxvYWRl
ckNsaWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NTkxNDMKKyAgICAgICAgCisgICAgICAgIFBhcnNlZCBhbmQgcG9wdWxhdGVkIGFwcGxlLXRvdWNo
LWljb24gdXJsIHRvIEZyYW1lTG9hZGVyQ2xpZW50LgorICAgICAgICBDaGFuZ2VkIGZhdmljb24g
dG8gYmUgYSB0eXBlIG9mIGljb24uCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmNvbnZlcnRJY29uVHlwZVRvSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6
Omljb25VUkwpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnNldEljb25VUkwpOgorICAg
ICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAqIGRvbS9JY29uVVJMLmg6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6SWNvblVSTDo6SWNvblVSTCk6CisgICAgICAgICogaHRtbC9IVE1M
TGlua0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTExpbmtFbGVtZW50Ojp0b2tl
bml6ZVJlbEF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6OnBy
b2Nlc3MpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTExpbmtFbGVtZW50OjphZGRTdWJyZXNvdXJj
ZUF0dHJpYnV0ZVVSTHMpOgorICAgICAgICAqIGh0bWwvSFRNTExpbmtFbGVtZW50Lmg6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6OlJlbEF0dHJpYnV0ZTo6UmVsQXR0cmlidXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxMaW5rRWxlbWVudDo6aXNFbmFibGVkVmlhU2NyaXB0
KToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTE5hbWVzOjpQcmVsb2FkVGFzazo6cmVsQXR0cmlidXRlSXNTdHlsZVNo
ZWV0KToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Y29udmVydEljb25UeXBlVG9JbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dExvYWRlcjo6aWNvblVSTCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6c2V0
SWNvblVSTCk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmg6CisgICAgICAgICog
bG9hZGVyL0VtcHR5Q2xpZW50cy5oOgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlGcmFtZUxvYWRl
ckNsaWVudDo6ZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucyk6CisgICAgICAgICogbG9hZGVyL0ZyYW1l
TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjppY29uVVJMKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjppY29uVVJMcyk6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZUxvYWRlcjo6ZmlsbEljb25VUkwpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2Fk
ZXI6OmdldERlZmF1bHRJY29uVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpz
ZXRJY29uVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpkaWRDaGFuZ2VJY29u
cyk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0Zy
YW1lTG9hZGVyQ2xpZW50Lmg6CisKIDIwMTEtMDQtMjggIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1h
bkBnb29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFl1cnkgU2VtaWtoYXRza3kuCkBA
IC00MzM3LDYgKzQzODEsNyBAQAogICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKICAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6cmVzZXRTY3JvbGxiYXJzQW5kQ2xlYXJDb250ZW50c1Np
emUpOgogCis+Pj4+Pj4+IC5yODQ5MTcKIDIwMTEtMDQtMjIgIEpvc2VwaCBQZWNvcmFybyAgPGpv
ZXBlY2tAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBLZW50IFRhbXVyYS4KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL0dOVW1ha2VmaWxlLmFtCShyZXZpc2lvbiA4NTE4NykKKysrIFNvdXJjZS9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmFtCSh3b3JraW5nIGNvcHkpCkBAIC0yNjYsNiArMjY2LDE2IEBAIHdlYmNv
cmVfYnVpbHRfc291cmNlcyArPSBcCiBlbmRpZiAjIEVORCBFTkFCTEVfUVVPVEEKIAogIyAtLS0t
CisjIFRvdWNoIEljb24gTG9hZGluZworIyAtLS0tCitpZiBFTkFCTEVfVE9VQ0hfSUNPTl9MT0FE
SU5HCitGRUFUVVJFX0RFRklORVMgKz0gRU5BQkxFX1RPVUNIX0lDT05fTE9BRElORz0xCit3ZWJj
b3JlX2NwcGZsYWdzICs9IC1ERU5BQkxFX1RPVUNIX0lDT05fTE9BRElORz0xCitlbHNlCit3ZWJj
b3JlX2NwcGZsYWdzICs9IC1ERU5BQkxFX1RPVUNIX0lDT05fTE9BRElORz0wCitlbmRpZiAjIEVO
RCBFTkFCTEVfVE9VQ0hfSUNPTl9MT0FESU5HCisKKyMgLS0tLQogIyBTcGVlY2ggSW5wdXQgQVBJ
IHN1cHBvcnQKICMgLS0tLQogaWYgRU5BQkxFX0lOUFVUX1NQRUVDSApJbmRleDogU291cmNlL1dl
YkNvcmUvZmVhdHVyZXMucHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2ZlYXR1cmVz
LnByaQkocmV2aXNpb24gODUxODcpCisrKyBTb3VyY2UvV2ViQ29yZS9mZWF0dXJlcy5wcmkJKHdv
cmtpbmcgY29weSkKQEAgLTc3LDYgKzc3LDcgQEAgY29udGFpbnMoREVGSU5FUywgRU5BQkxFX1NJ
TkdMRV9USFJFQURFRAogIWNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9XRUJHTD0uKTogREVGSU5F
UyArPSBFTkFCTEVfV0VCR0w9MAogIWNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9NRURJQV9TVEFU
SVNUSUNTPS4pOiBERUZJTkVTICs9IEVOQUJMRV9NRURJQV9TVEFUSVNUSUNTPTAKICFjb250YWlu
cyhERUZJTkVTLCBFTkFCTEVfVklERU9fVFJBQ0s9Lik6IERFRklORVMgKz0gRU5BQkxFX1ZJREVP
X1RSQUNLPTAKKyFjb250YWlucyhERUZJTkVTLCBFTkFCTEVfVE9VQ0hfSUNPTl9MT0FESU5HPS4p
OiBERUZJTkVTICs9IEVOQUJMRV9UT1VDSF9JQ09OX0xPQURJTkc9MAogCiAjIFNWRyBzdXBwb3J0
CiAhY29udGFpbnMoREVGSU5FUywgRU5BQkxFX1NWRz0wKSB7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwkocmV2
aXNpb24gODUxODcpCisrKyBTb3VyY2UvV2ViQ29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVm
aW5lcy54Y2NvbmZpZwkod29ya2luZyBjb3B5KQpAQCAtMTE2LDYgKzExNiw4IEBAIEVOQUJMRV9W
SURFT19UUkFDSyA9IDsKIAogRU5BQkxFX01FRElBX1NUQVRJU1RJQ1MgPSA7CiAKK0VOQUJMRV9U
T1VDSF9JQ09OX0xPQURJTkcgPSA7CisKIEVOQUJMRV9XRUJfQVVESU8gPSA7CiAKIEVOQUJMRV9X
RUJfU09DS0VUUyA9ICQoRU5BQkxFX1dFQl9TT0NLRVRTXyQoUkVBTF9QTEFURk9STV9OQU1FKSk7
CkBAIC0xMzEsNCArMTMzLDQgQEAgRU5BQkxFX1hIVE1MTVAgPSA7CiBFTkFCTEVfWFBBVEggPSBF
TkFCTEVfWFBBVEg7CiBFTkFCTEVfWFNMVCA9IEVOQUJMRV9YU0xUOwogCi1GRUFUVVJFX0RFRklO
RVMgPSAkKEVOQUJMRV9MSU5LX1BSRUZFVENIKSAkKEVOQUJMRV9BQ0NFTEVSQVRFRF8yRF9DQU5W
QVMpICQoRU5BQkxFX1dFQkdMKSAkKEVOQUJMRV8zRF9SRU5ERVJJTkcpICQoRU5BQkxFX0JMT0Ip
ICQoRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HKSAkKEVOQUJMRV9DTElFTlRfQkFTRURfR0VPTE9D
QVRJT04pICQoRU5BQkxFX0RBVEFCQVNFKSAkKEVOQUJMRV9EQVRBTElTVCkgJChFTkFCTEVfREFU
QV9UUkFOU0ZFUl9JVEVNUykgJChFTkFCTEVfREVUQUlMUykgJChFTkFCTEVfREVWSUNFX09SSUVO
VEFUSU9OKSAkKEVOQUJMRV9ESVJFQ1RPUllfVVBMT0FEKSAkKEVOQUJMRV9ET01fU1RPUkFHRSkg
JChFTkFCTEVfRVZFTlRTT1VSQ0UpICQoRU5BQkxFX0ZJTFRFUlMpICQoRU5BQkxFX0ZJTEVfU1lT
VEVNKSAkKEVOQUJMRV9GVUxMU0NSRUVOX0FQSSkgJChFTkFCTEVfR0VPTE9DQVRJT04pICQoRU5B
QkxFX0lDT05EQVRBQkFTRSkgJChFTkFCTEVfSU1BR0VfUkVTSVpFUikgJChFTkFCTEVfSU5ERVhF
RF9EQVRBQkFTRSkgJChFTkFCTEVfSU5QVVRfU1BFRUNIKSAkKEVOQUJMRV9KQVZBU0NSSVBUX0RF
QlVHR0VSKSAkKEVOQUJMRV9NQVRITUwpICQoRU5BQkxFX01FVEVSX1RBRykgJChFTkFCTEVfTk9U
SUZJQ0FUSU9OUykgJChFTkFCTEVfT0ZGTElORV9XRUJfQVBQTElDQVRJT05TKSAkKEVOQUJMRV9Q
QUdFX1ZJU0lCSUxJVFlfQVBJKSAkKEVOQUJMRV9QUk9HUkVTU19UQUcpICQoRU5BQkxFX1JFR0lT
VEVSX1BST1RPQ09MX0hBTkRMRVIpICQoRU5BQkxFX1FVT1RBKSAkKEVOQUJMRV9TSEFSRURfV09S
S0VSUykgJChFTkFCTEVfU1ZHKSAkKEVOQUJMRV9TVkdfQU5JTUFUSU9OKSAkKEVOQUJMRV9TVkdf
QVNfSU1BR0UpICQoRU5BQkxFX1NWR19ET01fT0JKQ19CSU5ESU5HUykgJChFTkFCTEVfU1ZHX0ZP
TlRTKSAkKEVOQUJMRV9TVkdfRk9SRUlHTl9PQkpFQ1QpICQoRU5BQkxFX1NWR19VU0UpICQoRU5B
QkxFX1ZJREVPKSAkKEVOQUJMRV9WSURFT19UUkFDSykgJChFTkFCTEVfTUVESUFfU1RBVElTVElD
UykgJChFTkFCTEVfV0VCX0FVRElPKSAkKEVOQUJMRV9XRUJfU09DS0VUUykgJChFTkFCTEVfV0VC
X1RJTUlORykgJChFTkFCTEVfV01MKSAkKEVOQUJMRV9XT1JLRVJTKSAkKEVOQUJMRV9YSFRNTE1Q
KSAkKEVOQUJMRV9YUEFUSCkgJChFTkFCTEVfWFNMVCk7CitGRUFUVVJFX0RFRklORVMgPSAkKEVO
QUJMRV9MSU5LX1BSRUZFVENIKSAkKEVOQUJMRV9BQ0NFTEVSQVRFRF8yRF9DQU5WQVMpICQoRU5B
QkxFX1dFQkdMKSAkKEVOQUJMRV8zRF9SRU5ERVJJTkcpICQoRU5BQkxFX0JMT0IpICQoRU5BQkxF
X0NIQU5ORUxfTUVTU0FHSU5HKSAkKEVOQUJMRV9DTElFTlRfQkFTRURfR0VPTE9DQVRJT04pICQo
RU5BQkxFX0RBVEFCQVNFKSAkKEVOQUJMRV9EQVRBTElTVCkgJChFTkFCTEVfREFUQV9UUkFOU0ZF
Ul9JVEVNUykgJChFTkFCTEVfREVUQUlMUykgJChFTkFCTEVfREVWSUNFX09SSUVOVEFUSU9OKSAk
KEVOQUJMRV9ESVJFQ1RPUllfVVBMT0FEKSAkKEVOQUJMRV9ET01fU1RPUkFHRSkgJChFTkFCTEVf
RVZFTlRTT1VSQ0UpICQoRU5BQkxFX0ZJTFRFUlMpICQoRU5BQkxFX0ZJTEVfU1lTVEVNKSAkKEVO
QUJMRV9GVUxMU0NSRUVOX0FQSSkgJChFTkFCTEVfR0VPTE9DQVRJT04pICQoRU5BQkxFX0lDT05E
QVRBQkFTRSkgJChFTkFCTEVfSU1BR0VfUkVTSVpFUikgJChFTkFCTEVfSU5ERVhFRF9EQVRBQkFT
RSkgJChFTkFCTEVfSU5QVVRfU1BFRUNIKSAkKEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSKSAk
KEVOQUJMRV9NQVRITUwpICQoRU5BQkxFX01FVEVSX1RBRykgJChFTkFCTEVfTk9USUZJQ0FUSU9O
UykgJChFTkFCTEVfT0ZGTElORV9XRUJfQVBQTElDQVRJT05TKSAkKEVOQUJMRV9QQUdFX1ZJU0lC
SUxJVFlfQVBJKSAkKEVOQUJMRV9QUk9HUkVTU19UQUcpICQoRU5BQkxFX1JFR0lTVEVSX1BST1RP
Q09MX0hBTkRMRVIpICQoRU5BQkxFX1FVT1RBKSAkKEVOQUJMRV9TSEFSRURfV09SS0VSUykgJChF
TkFCTEVfU1ZHKSAkKEVOQUJMRV9TVkdfQU5JTUFUSU9OKSAkKEVOQUJMRV9TVkdfQVNfSU1BR0Up
ICQoRU5BQkxFX1NWR19ET01fT0JKQ19CSU5ESU5HUykgJChFTkFCTEVfU1ZHX0ZPTlRTKSAkKEVO
QUJMRV9TVkdfRk9SRUlHTl9PQkpFQ1QpICQoRU5BQkxFX1NWR19VU0UpICQoRU5BQkxFX1ZJREVP
KSAkKEVOQUJMRV9WSURFT19UUkFDSykgJChFTkFCTEVfTUVESUFfU1RBVElTVElDUykgJChFTkFC
TEVfV0VCX0FVRElPKSAkKEVOQUJMRV9XRUJfU09DS0VUUykgJChFTkFCTEVfV0VCX1RJTUlORykg
JChFTkFCTEVfV01MKSAkKEVOQUJMRV9XT1JLRVJTKSAkKEVOQUJMRV9YSFRNTE1QKSAkKEVOQUJM
RV9YUEFUSCkgJChFTkFCTEVfWFNMVCkgJChFTkFCTEVfVE9VQ0hfSUNPTl9MT0FESU5HKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oJKHJldmlzaW9uIDg1MTg3KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQ0LDYgKzEwNDQsNyBAQAogCQk0
NDlCMTlGNTBGQTcyRUNFMDAxNUNBNEEgLyogSFRNTFBhcnNlclF1aXJrcy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDQ5QjE5RjMwRkE3MkVDRTAwMTVD
QTRBIC8qIEhUTUxQYXJzZXJRdWlya3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk0NEEyOEFBQzEyREZCOEFDMDBBRTkyM0IgLyogTWF0aE1MRWxl
bWVudEZhY3RvcnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQ0QTI4QUFCMTJERkI4QUMwMEFFOTIzQiAvKiBNYXRoTUxFbGVtZW50RmFjdG9yeS5oICov
OyB9OwogCQk0NEEyOEFBRjEyREZCOEJGMDBBRTkyM0IgLyogTWF0aE1MTmFtZXMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0QTI4QUFFMTJERkI4QkYw
MEFFOTIzQiAvKiBNYXRoTUxOYW1lcy5oICovOyB9OworCQk0NUJBQzJCMDEzNjBCQkFCMDA1REEy
NTggLyogSWNvblVSTC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDVCQUMyQUYxMzYwQkJBQjAwNURBMjU4IC8qIEljb25VUkwuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NjE0QTFGRTBCMjNBOEQ2MDA0
NDZFMUMgLyogY29weUN1cnNvci5wbmcgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQ2MTRBMUZEMEIyM0E4RDYwMDQ0NkUxQyAvKiBjb3B5Q3Vyc29yLnBu
ZyAqLzsgfTsKIAkJNDY0RUEyNzMwQjhBMzUwQjAwQThFNkUzIC8qIGNyb3NzSGFpckN1cnNvci5w
bmcgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2NEVB
MjcxMEI4QTM1MEIwMEE4RTZFMyAvKiBjcm9zc0hhaXJDdXJzb3IucG5nICovOyB9OwogCQk0NjRF
QTI3NDBCOEEzNTBCMDBBOEU2RTMgLyogbm90QWxsb3dlZEN1cnNvci5wbmcgaW4gUmVzb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2NEVBMjcyMEI4QTM1MEIwMEE4
RTZFMyAvKiBub3RBbGxvd2VkQ3Vyc29yLnBuZyAqLzsgfTsKQEAgLTc1NzQsNiArNzU3NSw3IEBA
CiAJCTQ0OUIxOUYzMEZBNzJFQ0UwMDE1Q0E0QSAvKiBIVE1MUGFyc2VyUXVpcmtzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhUTUxQYXJzZXJRdWlya3MuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDRBMjhBQUIxMkRGQjhBQzAwQUU5MjNCIC8qIE1hdGhNTEVs
ZW1lbnRGYWN0b3J5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hdGhNTEVs
ZW1lbnRGYWN0b3J5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0QTI4QUFFMTJE
RkI4QkYwMEFFOTIzQiAvKiBNYXRoTUxOYW1lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBNYXRoTUxOYW1lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NUJB
QzJBRjEzNjBCQkFCMDA1REEyNTggLyogSWNvblVSTC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBJY29uVVJMLmg7IHBhdGggPSBkb20vSWNvblVSTC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0NjE0QTFGRDBCMjNBOEQ2MDA0NDZFMUMgLyogY29weUN1cnNvci5w
bmcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBpbWFn
ZS5wbmc7IHBhdGggPSBjb3B5Q3Vyc29yLnBuZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDY0RUEyNzEwQjhBMzUwQjAwQThFNkUzIC8qIGNyb3NzSGFpckN1cnNvci5wbmcgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBpbWFnZS5wbmc7IHBh
dGggPSBjcm9zc0hhaXJDdXJzb3IucG5nOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
NjRFQTI3MjBCOEEzNTBCMDBBOEU2RTMgLyogbm90QWxsb3dlZEN1cnNvci5wbmcgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBpbWFnZS5wbmc7IHBhdGgg
PSBub3RBbGxvd2VkQ3Vyc29yLnBuZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEy
NjcxLDYgKzEyNjczLDcgQEAKIAkJMDg2N0Q2OTFGRTg0MDI4RkMwMkFBQzA3IC8qIFdlYktpdCAq
LyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJNDVCQUMyQUYx
MzYwQkJBQjAwNURBMjU4IC8qIEljb25VUkwuaCAqLywKIAkJCQk2NUM5N0FGMjA4RUE5MDg4MDBB
Q0QyNzMgLyogY29uZmlnLmggKi8sCiAJCQkJRURFQzk4MDIwQUVEN0UxNzAwNTkxMzdGIC8qIFdl
YkNvcmVQcmVmaXguaCAqLywKIAkJCQk5MzA3MDYxMzA5RTBDQTgyMDBCMTdGRTQgLyogRGVyaXZl
ZFNvdXJjZXMubWFrZSAqLywKQEAgLTIyOTcwLDYgKzIyOTczLDcgQEAKIAkJCQk5M0YxOTlFRDA4
MjQ1RTU5MDAxRTlBQkMgLyogWFNMVFByb2Nlc3Nvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTFC
RTUxMkUwQ0Y2QzUxMjAwMkVBOTU5IC8qIFhTTFRVbmljb2RlU29ydC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJOTc3RTJFMEYxMkYwRkM5QzAwQzEzMzc5IC8qIFhTU0ZpbHRlci5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJNDVCQUMyQjAxMzYwQkJBQjAwNURBMjU4IC8qIEljb25VUkwuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTA4NkJCRDBGMTM2MDM5QzIwMDhCMTVEOCAvKiBHbHlwaC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMDg3M0I4NkIxMzYwNjRFQTAwQTUyMkMyIC8qIEdseXBoUGFnZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMDg3RTBBRjcxMzYwNkQwQjAwRkE0QkE4IC8qIFNWR0dseXBoLmggaW4gSGVh
ZGVycyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkocmV2aXNpb24gODUxODcpCisr
KyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNDQs
NiArMzQ0LDI4IEBAIHN0YXRpYyBib29sIGRpc2FibGVSYW5nZU11dGF0aW9uKFBhZ2UqIHAKICNl
bmRpZgogfQogCisvLyBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgZ2l2ZW4gdHlwZSwgMCBpcyBy
ZXR1cm5lZCBpZiB0aGUgdHlwZSBpcyBpbnZhbGlkLgorc3RhdGljIHNpemVfdCBnZXRJY29uSW5k
ZXgoSWNvblR5cGUgdHlwZSkKK3sKKyAgICBzaXplX3QgaW5kZXggPSAwOworICAgIHN3aXRjaCAo
dHlwZSkgeworICAgIGNhc2UgRmF2aWNvbjoKKyAgICAgICAgaW5kZXggPSAwOworICAgICAgICBi
cmVhazsKKyNpZiBFTkFCTEUoVE9VQ0hfSUNPTl9MT0FESU5HKQorICAgIGNhc2UgVG91Y2hQcmVj
b21wb3NlZEljb246CisgICAgICAgIGluZGV4ID0gMTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBUb3VjaEljb246CisgICAgICAgIGluZGV4ID0gMjsKKyAgICAgICAgYnJlYWs7CisjZW5kaWYK
KyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisgICAg
cmV0dXJuIGluZGV4OworfQorCiBzdGF0aWMgSGFzaFNldDxEb2N1bWVudCo+KiBkb2N1bWVudHNU
aGF0TmVlZFN0eWxlUmVjYWxjID0gMDsKIAogY2xhc3MgRG9jdW1lbnRXZWFrUmVmZXJlbmNlIDog
cHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPERvY3VtZW50V2Vha1JlZmVyZW5jZT4gewpAQCAt
NDM2OSwxNSArNDM5MSwyNiBAQCB1bnNpZ25lZCBGb3JtRWxlbWVudEtleUhhc2g6Omhhc2goY29u
c3QgCiAgICAgcmV0dXJuIFN0cmluZ0hhc2hlcjo6aGFzaE1lbW9yeTxzaXplb2YoRm9ybUVsZW1l
bnRLZXkpPigma2V5KTsKIH0KIAotdm9pZCBEb2N1bWVudDo6c2V0SWNvblVSTChjb25zdCBTdHJp
bmcmIGljb25VUkwsIGNvbnN0IFN0cmluZyYgdHlwZSkKK0ljb25VUkwgRG9jdW1lbnQ6Omljb25V
UkwoSWNvblR5cGUgaWNvblR5cGUpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faWNvblVSTHNbZ2V0
SWNvbkluZGV4KGljb25UeXBlKV07Cit9CisKK3ZvaWQgRG9jdW1lbnQ6OnNldEljb25VUkwoY29u
c3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEljb25UeXBlIGljb25UeXBl
KQogewotICAgIC8vIEZJWE1FIC0gPHJkYXI6Ly9wcm9ibGVtLzQ3Mjc2NDU+IC0gQXQgc29tZSBw
b2ludCBpbiB0aGUgZnV0dXJlLCB3ZSBtaWdodCBhY3R1YWxseSBob25vciB0aGUgInR5cGUiIAot
ICAgIGlmIChtX2ljb25VUkwuaXNFbXB0eSgpKQotICAgICAgICBtX2ljb25VUkwgPSBpY29uVVJM
OwotICAgIGVsc2UgaWYgKCF0eXBlLmlzRW1wdHkoKSkKLSAgICAgICAgbV9pY29uVVJMID0gaWNv
blVSTDsKKyAgICAvLyBGSVhNRSAtIDxyZGFyOi8vcHJvYmxlbS80NzI3NjQ1PiAtIEF0IHNvbWUg
cG9pbnQgaW4gdGhlIGZ1dHVyZSwgd2UgbWlnaHQgYWN0dWFsbHkgaG9ub3IgdGhlICJtaW1lVHlw
ZSIKKyAgICBJY29uVVJMIG5ld1VSTChLVVJMKFBhcnNlZFVSTFN0cmluZywgdXJsKSwgaWNvblR5
cGUpOworICAgIGlmICghaWNvblVSTChpY29uVHlwZSkubV9pY29uVVJMLmlzVmFsaWQoKSkKKyAg
ICAgICAgc2V0SWNvblVSTChuZXdVUkwpOworICAgIGVsc2UgaWYgKCFtaW1lVHlwZS5pc0VtcHR5
KCkpCisgICAgICAgIHNldEljb25VUkwobmV3VVJMKTsKICAgICBpZiAoRnJhbWUqIGYgPSBmcmFt
ZSgpKQotICAgICAgICBmLT5sb2FkZXIoKS0+c2V0SWNvblVSTChtX2ljb25VUkwpOworICAgICAg
ICBmLT5sb2FkZXIoKS0+c2V0SWNvblVSTChuZXdVUkwpOworfQorCit2b2lkIERvY3VtZW50Ojpz
ZXRJY29uVVJMKGNvbnN0IEljb25VUkwmIGljb25VUkwpCit7CisgICAgbV9pY29uVVJMc1tnZXRJ
Y29uSW5kZXgoaWNvblVSTC5tX2ljb25UeXBlKV0gPSBpY29uVVJMOwogfQogCiB2b2lkIERvY3Vt
ZW50OjpyZWdpc3RlckZvcm1FbGVtZW50V2l0aEZvcm1BdHRyaWJ1dGUoRm9ybUFzc29jaWF0ZWRF
bGVtZW50KiBlbGVtZW50KQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHJldmlzaW9uIDg1MTg3
KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTMz
LDYgKzMzLDcgQEAKICNpbmNsdWRlICJDb2xvci5oIgogI2luY2x1ZGUgIkRPTVRpbWVTdGFtcC5o
IgogI2luY2x1ZGUgIkRvY3VtZW50VGltaW5nLmgiCisjaW5jbHVkZSAiSWNvblVSTC5oIgogI2lu
Y2x1ZGUgIlF1YWxpZmllZE5hbWUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0
LmgiCiAjaW5jbHVkZSAiU3RyaW5nV2l0aERpcmVjdGlvbi5oIgpAQCAtOTE4LDggKzkxOSw5IEBA
IHB1YmxpYzoKICAgICAKICAgICB2b2lkIHNldEhhc05vZGVzV2l0aFBsYWNlaG9sZGVyU3R5bGUo
KSB7IG1faGFzTm9kZXNXaXRoUGxhY2Vob2xkZXJTdHlsZSA9IHRydWU7IH0KIAotICAgIGNvbnN0
IFN0cmluZyYgaWNvblVSTCgpIGNvbnN0IHsgcmV0dXJuIG1faWNvblVSTDsgfQotICAgIHZvaWQg
c2V0SWNvblVSTChjb25zdCBTdHJpbmcmIGljb25VUkwsIGNvbnN0IFN0cmluZyYgdHlwZSk7Cisg
ICAgSWNvblVSTCBpY29uVVJMKEljb25UeXBlKSBjb25zdDsKKyAgICB2b2lkIHNldEljb25VUkwo
Y29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgSWNvblR5cGUpOworICAgIHZvaWQgc2V0SWNv
blVSTChjb25zdCBJY29uVVJMJik7CiAKICAgICB2b2lkIHNldFVzZVNlY3VyZUtleWJvYXJkRW50
cnlXaGVuQWN0aXZlKGJvb2wpOwogICAgIGJvb2wgdXNlU2VjdXJlS2V5Ym9hcmRFbnRyeVdoZW5B
Y3RpdmUoKSBjb25zdDsKQEAgLTEzMzMsOCArMTMzNSw4IEBAIHByaXZhdGU6CiAKICAgICBib29s
IG1fY3JlYXRlUmVuZGVyZXJzOwogICAgIGJvb2wgbV9pblBhZ2VDYWNoZTsKLSAgICBTdHJpbmcg
bV9pY29uVVJMOwotICAgIAorICAgIEljb25VUkwgbV9pY29uVVJMc1tJQ09OX0NPVU5UXTsKKwog
ICAgIEhhc2hTZXQ8RWxlbWVudCo+IG1fZG9jdW1lbnRBY3RpdmF0aW9uQ2FsbGJhY2tFbGVtZW50
czsKICAgICBIYXNoU2V0PEVsZW1lbnQqPiBtX21lZGlhVm9sdW1lQ2FsbGJhY2tFbGVtZW50czsK
ICAgICBIYXNoU2V0PEVsZW1lbnQqPiBtX3ByaXZhdGVCcm93c2luZ1N0YXRlQ2hhbmdlZEVsZW1l
bnRzOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0ljb25VUkwuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9kb20vSWNvblVSTC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNv
cmUvZG9tL0ljb25VUkwuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmli
dXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
CisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSWNv
blVSTF9oCisjZGVmaW5lIEljb25VUkxfaAorCisjaW5jbHVkZSAiS1VSTC5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKKyNpZiBFTkFCTEUoVE9VQ0hfSUNPTl9MT0FESU5HKQorI2RlZmluZSBJ
Q09OX0NPVU5UIDMKKyNlbHNlCisjZGVmaW5lIElDT05fQ09VTlQgMQorI2VuZGlmCisKK2VudW0g
SWNvblR5cGUgeworICAgIEludmFsaWRJY29uID0gMCwKKyAgICBGYXZpY29uID0gMSwKKyAgICBU
b3VjaEljb24gPSAxIDw8IDEsCisgICAgVG91Y2hQcmVjb21wb3NlZEljb24gPSAxIDw8IDIKK307
CisKK3N0cnVjdCBJY29uVVJMIHsKKyAgICBJY29uVHlwZSBtX2ljb25UeXBlOworICAgIEtVUkwg
bV9pY29uVVJMOworCisgICAgSWNvblVSTCgpCisgICAgICAgIDogbV9pY29uVHlwZShJbnZhbGlk
SWNvbikKKyAgICB7CisgICAgfQorCisgICAgSWNvblVSTChjb25zdCBLVVJMJiB1cmwsIEljb25U
eXBlIHR5cGUpCisgICAgICAgIDogbV9pY29uVHlwZSh0eXBlKQorICAgICAgICAsIG1faWNvblVS
TCh1cmwpCisgICAgeworICAgIH0KK307CisKK30KKworI2VuZGlmIC8vIEljb25VUkxfaAoKUHJv
cGVydHkgY2hhbmdlcyBvbjogU291cmNlL1dlYkNvcmUvZG9tL0ljb25VUkwuaApfX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
CkFkZGVkOiBzdm46ZW9sLXN0eWxlCiAgICsgTEYKCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxMaW5rRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTGlua0VsZW1lbnQuY3BwCShyZXZpc2lvbiA4NTE4NykKKysrIFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTExpbmtFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU5LDcgKzE1OSw3IEBA
IHZvaWQgSFRNTExpbmtFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnUKIHZvaWQgSFRNTExpbmtF
bGVtZW50Ojp0b2tlbml6ZVJlbEF0dHJpYnV0ZShjb25zdCBBdG9taWNTdHJpbmcmIHJlbCwgUmVs
QXR0cmlidXRlJiByZWxBdHRyaWJ1dGUpCiB7CiAgICAgcmVsQXR0cmlidXRlLm1faXNTdHlsZVNo
ZWV0ID0gZmFsc2U7Ci0gICAgcmVsQXR0cmlidXRlLm1faXNJY29uID0gZmFsc2U7CisgICAgcmVs
QXR0cmlidXRlLm1faWNvblR5cGUgPSBJbnZhbGlkSWNvbjsKICAgICByZWxBdHRyaWJ1dGUubV9p
c0FsdGVybmF0ZSA9IGZhbHNlOwogICAgIHJlbEF0dHJpYnV0ZS5tX2lzRE5TUHJlZmV0Y2ggPSBm
YWxzZTsKICNpZiBFTkFCTEUoTElOS19QUkVGRVRDSCkKQEAgLTE2OSw3ICsxNjksMTMgQEAgdm9p
ZCBIVE1MTGlua0VsZW1lbnQ6OnRva2VuaXplUmVsQXR0cmlidQogICAgIGlmIChlcXVhbElnbm9y
aW5nQ2FzZShyZWwsICJzdHlsZXNoZWV0IikpCiAgICAgICAgIHJlbEF0dHJpYnV0ZS5tX2lzU3R5
bGVTaGVldCA9IHRydWU7CiAgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UocmVsLCAiaWNv
biIpIHx8IGVxdWFsSWdub3JpbmdDYXNlKHJlbCwgInNob3J0Y3V0IGljb24iKSkKLSAgICAgICAg
cmVsQXR0cmlidXRlLm1faXNJY29uID0gdHJ1ZTsKKyAgICAgICAgcmVsQXR0cmlidXRlLm1faWNv
blR5cGUgPSBGYXZpY29uOworI2lmIEVOQUJMRShUT1VDSF9JQ09OX0xPQURJTkcpCisgICAgZWxz
ZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UocmVsLCAiYXBwbGUtdG91Y2gtaWNvbiIpKQorICAgICAg
ICByZWxBdHRyaWJ1dGUubV9pY29uVHlwZSA9IFRvdWNoSWNvbjsKKyAgICBlbHNlIGlmIChlcXVh
bElnbm9yaW5nQ2FzZShyZWwsICJhcHBsZS10b3VjaC1pY29uLXByZWNvbXBvc2VkIikpCisgICAg
ICAgIHJlbEF0dHJpYnV0ZS5tX2ljb25UeXBlID0gVG91Y2hQcmVjb21wb3NlZEljb247CisjZW5k
aWYKICAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShyZWwsICJkbnMtcHJlZmV0Y2giKSkK
ICAgICAgICAgcmVsQXR0cmlidXRlLm1faXNETlNQcmVmZXRjaCA9IHRydWU7CiAgICAgZWxzZSBp
ZiAoZXF1YWxJZ25vcmluZ0Nhc2UocmVsLCAiYWx0ZXJuYXRlIHN0eWxlc2hlZXQiKSB8fCBlcXVh
bElnbm9yaW5nQ2FzZShyZWwsICJzdHlsZXNoZWV0IGFsdGVybmF0ZSIpKSB7CkBAIC0xODgsNyAr
MTk0LDEzIEBAIHZvaWQgSFRNTExpbmtFbGVtZW50Ojp0b2tlbml6ZVJlbEF0dHJpYnUKICAgICAg
ICAgICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKCppdCwgImFsdGVybmF0ZSIpKQogICAg
ICAgICAgICAgICAgIHJlbEF0dHJpYnV0ZS5tX2lzQWx0ZXJuYXRlID0gdHJ1ZTsKICAgICAgICAg
ICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKCppdCwgImljb24iKSkKLSAgICAgICAgICAg
ICAgICByZWxBdHRyaWJ1dGUubV9pc0ljb24gPSB0cnVlOworICAgICAgICAgICAgICAgIHJlbEF0
dHJpYnV0ZS5tX2ljb25UeXBlID0gRmF2aWNvbjsKKyNpZiBFTkFCTEUoVE9VQ0hfSUNPTl9MT0FE
SU5HKQorICAgICAgICAgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoKml0LCAiYXBwbGUt
dG91Y2gtaWNvbiIpKQorICAgICAgICAgICAgICAgIHJlbEF0dHJpYnV0ZS5tX2ljb25UeXBlID0g
VG91Y2hJY29uOworICAgICAgICAgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoKml0LCAi
YXBwbGUtdG91Y2gtaWNvbi1wcmVjb21wb3NlZCIpKQorICAgICAgICAgICAgICAgIHJlbEF0dHJp
YnV0ZS5tX2ljb25UeXBlID0gVG91Y2hQcmVjb21wb3NlZEljb247CisjZW5kaWYKICNpZiBFTkFC
TEUoTElOS19QUkVGRVRDSCkKICAgICAgICAgICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNl
KCppdCwgInByZWZldGNoIikpCiAgICAgICAgICAgICAgIHJlbEF0dHJpYnV0ZS5tX2lzTGlua1By
ZWZldGNoID0gdHJ1ZTsKQEAgLTIyMSwxMCArMjMzLDEwIEBAIHZvaWQgSFRNTExpbmtFbGVtZW50
Ojpwcm9jZXNzKCkKIAogICAgIC8vIElFIGV4dGVuc2lvbjogbG9jYXRpb24gb2Ygc21hbGwgaWNv
biBmb3IgbG9jYXRpb25iYXIgLyBib29rbWFya3MKICAgICAvLyBXZSdsbCByZWNvcmQgdGhpcyBV
UkwgcGVyIGRvY3VtZW50LCBldmVuIGlmIHdlIGxhdGVyIG9ubHkgdXNlIGl0IGluIHRvcCBsZXZl
bCBmcmFtZXMKLSAgICBpZiAobV9yZWxBdHRyaWJ1dGUubV9pc0ljb24gJiYgbV91cmwuaXNWYWxp
ZCgpICYmICFtX3VybC5pc0VtcHR5KCkpIHsKKyAgICBpZiAobV9yZWxBdHRyaWJ1dGUubV9pY29u
VHlwZSAhPSBJbnZhbGlkSWNvbiAmJiBtX3VybC5pc1ZhbGlkKCkgJiYgIW1fdXJsLmlzRW1wdHko
KSkgewogICAgICAgICBpZiAoIWNoZWNrQmVmb3JlTG9hZEV2ZW50KCkpIAogICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICBkb2N1bWVudCgpLT5zZXRJY29uVVJMKG1fdXJsLnN0cmluZygpLCB0
eXBlKTsKKyAgICAgICAgZG9jdW1lbnQoKS0+c2V0SWNvblVSTChtX3VybC5zdHJpbmcoKSwgdHlw
ZSwgbV9yZWxBdHRyaWJ1dGUubV9pY29uVHlwZSk7CiAgICAgfQogCiAgICAgaWYgKG1fcmVsQXR0
cmlidXRlLm1faXNETlNQcmVmZXRjaCkgewpAQCAtNDcyLDcgKzQ4NCw3IEBAIHZvaWQgSFRNTExp
bmtFbGVtZW50OjphZGRTdWJyZXNvdXJjZUF0dHIKICAgICBIVE1MRWxlbWVudDo6YWRkU3VicmVz
b3VyY2VBdHRyaWJ1dGVVUkxzKHVybHMpOwogCiAgICAgLy8gRmF2aWNvbnMgYXJlIGhhbmRsZWQg
YnkgYSBzcGVjaWFsIGNhc2UgaW4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKCkKLSAgICBpZiAo
bV9yZWxBdHRyaWJ1dGUubV9pc0ljb24pCisgICAgaWYgKG1fcmVsQXR0cmlidXRlLm1faWNvblR5
cGUgIT0gSW52YWxpZEljb24pCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICghbV9yZWxBdHRy
aWJ1dGUubV9pc1N0eWxlU2hlZXQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5r
RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVt
ZW50LmgJKHJldmlzaW9uIDg1MTg3KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0Vs
ZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIkNhY2hl
ZFJlc291cmNlQ2xpZW50LmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VIYW5kbGUuaCIKICNp
bmNsdWRlICJIVE1MRWxlbWVudC5oIgorI2luY2x1ZGUgIkljb25VUkwuaCIKICNpbmNsdWRlICJU
aW1lci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zOSw3ICs0MCw3IEBAIGNsYXNzIEhU
TUxMaW5rRWxlbWVudCA6IHB1YmxpYyBIVE1MRWxlbWUKIHB1YmxpYzoKICAgICBzdHJ1Y3QgUmVs
QXR0cmlidXRlIHsKICAgICAgICAgYm9vbCBtX2lzU3R5bGVTaGVldDsKLSAgICAgICAgYm9vbCBt
X2lzSWNvbjsKKyAgICAgICAgSWNvblR5cGUgbV9pY29uVHlwZTsKICAgICAgICAgYm9vbCBtX2lz
QWx0ZXJuYXRlOwogICAgICAgICBib29sIG1faXNETlNQcmVmZXRjaDsKICNpZiBFTkFCTEUoTElO
S19QUkVGRVRDSCkKQEAgLTQ5LDcgKzUwLDcgQEAgcHVibGljOgogCiAgICAgICAgIFJlbEF0dHJp
YnV0ZSgpCiAgICAgICAgICAgICA6IG1faXNTdHlsZVNoZWV0KGZhbHNlKQotICAgICAgICAgICAg
LCBtX2lzSWNvbihmYWxzZSkKKyAgICAgICAgICAgICwgbV9pY29uVHlwZShJbnZhbGlkSWNvbikK
ICAgICAgICAgICAgICwgbV9pc0FsdGVybmF0ZShmYWxzZSkKICAgICAgICAgICAgICwgbV9pc0RO
U1ByZWZldGNoKGZhbHNlKQogI2lmIEVOQUJMRShMSU5LX1BSRUZFVENIKQpAQCAtNzYsNyArNzcs
NiBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzRGlzYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2Rp
c2FibGVkU3RhdGUgPT0gRGlzYWJsZWQ7IH0KICAgICBib29sIGlzRW5hYmxlZFZpYVNjcmlwdCgp
IGNvbnN0IHsgcmV0dXJuIG1fZGlzYWJsZWRTdGF0ZSA9PSBFbmFibGVkVmlhU2NyaXB0OyB9Ci0g
ICAgYm9vbCBpc0ljb24oKSBjb25zdCB7IHJldHVybiBtX3JlbEF0dHJpYnV0ZS5tX2lzSWNvbjsg
fQogICAgIGJvb2wgZGlzYWJsZWQoKSBjb25zdDsKICAgICB2b2lkIHNldERpc2FibGVkKGJvb2wp
OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVsb2Fk
U2Nhbm5lci5jcHAJKHJldmlzaW9uIDg1MTg3KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvSFRNTFByZWxvYWRTY2FubmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTUsNyArOTUsNyBA
QCBwdWJsaWM6CiAgICAgewogICAgICAgICBIVE1MTGlua0VsZW1lbnQ6OlJlbEF0dHJpYnV0ZSBy
ZWw7CiAgICAgICAgIEhUTUxMaW5rRWxlbWVudDo6dG9rZW5pemVSZWxBdHRyaWJ1dGUoYXR0cmli
dXRlVmFsdWUsIHJlbCk7Ci0gICAgICAgIHJldHVybiByZWwubV9pc1N0eWxlU2hlZXQgJiYgIXJl
bC5tX2lzQWx0ZXJuYXRlICYmICFyZWwubV9pc0ljb24gJiYgIXJlbC5tX2lzRE5TUHJlZmV0Y2g7
CisgICAgICAgIHJldHVybiByZWwubV9pc1N0eWxlU2hlZXQgJiYgIXJlbC5tX2lzQWx0ZXJuYXRl
ICYmIHJlbC5tX2ljb25UeXBlID09IEludmFsaWRJY29uICYmICFyZWwubV9pc0ROU1ByZWZldGNo
OwogICAgIH0KIAogICAgIHN0YXRpYyBib29sIGxpbmtNZWRpYUF0dHJpYnV0ZUlzU2NyZWVuKGNv
bnN0IFN0cmluZyYgYXR0cmlidXRlVmFsdWUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RG9jdW1lbnRMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9E
b2N1bWVudExvYWRlci5jcHAJKHJldmlzaW9uIDg1MTg3KQorKysgU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50TG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzgsNiArNzgsMjggQEAg
c3RhdGljIHZvaWQgc2V0QWxsRGVmZXJzTG9hZGluZyhjb25zdCBSZQogICAgICAgICBsb2FkZXJz
Q29weVtpXS0+c2V0RGVmZXJzTG9hZGluZyhkZWZlcnMpOwogfQogCisvLyBSZXR1cm5zIHRoZSBp
bmRleCBvZiB0aGUgZ2l2ZW4gdHlwZSwgMCBpcyByZXR1cm5lZCBpZiB0aGUgdHlwZSBpcyBpbnZh
bGlkLgorc3RhdGljIHNpemVfdCBnZXRJY29uSW5kZXgoSWNvblR5cGUgdHlwZSkKK3sKKyAgICBz
aXplX3QgaW5kZXggPSAwOworICAgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2UgRmF2aWNvbjoK
KyAgICAgICAgaW5kZXggPSAwOworICAgICAgICBicmVhazsKKyNpZiBFTkFCTEUoVE9VQ0hfSUNP
Tl9MT0FESU5HKQorICAgIGNhc2UgVG91Y2hQcmVjb21wb3NlZEljb246CisgICAgICAgIGluZGV4
ID0gMTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBUb3VjaEljb246CisgICAgICAgIGluZGV4
ID0gMjsKKyAgICAgICAgYnJlYWs7CisjZW5kaWYKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisgICAgcmV0dXJuIGluZGV4OworfQorCiBEb2N1bWVu
dExvYWRlcjo6RG9jdW1lbnRMb2FkZXIoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXEsIGNvbnN0
IFN1YnN0aXR1dGVEYXRhJiBzdWJzdGl0dXRlRGF0YSkKICAgICA6IG1fZGVmZXJNYWluUmVzb3Vy
Y2VEYXRhTG9hZCh0cnVlKQogICAgICwgbV9mcmFtZSgwKQpAQCAtNjYxLDE0ICs2ODMsMTkgQEAg
dm9pZCBEb2N1bWVudExvYWRlcjo6c2V0VGl0bGUoY29uc3QgU3RyaQogICAgIH0KIH0KIAotdm9p
ZCBEb2N1bWVudExvYWRlcjo6c2V0SWNvblVSTChjb25zdCBTdHJpbmcmIGljb25VUkwpCitJY29u
VVJMIERvY3VtZW50TG9hZGVyOjppY29uVVJMKEljb25UeXBlIGljb25UeXBlKSBjb25zdAorewor
ICAgIHJldHVybiBtX2ljb25VUkxzW2dldEljb25JbmRleChpY29uVHlwZSldOworfQorCit2b2lk
IERvY3VtZW50TG9hZGVyOjpzZXRJY29uVVJMKGNvbnN0IEljb25VUkwmIHVybCkKIHsKLSAgICBp
ZiAoaWNvblVSTC5pc0VtcHR5KCkpCisgICAgaWYgKHVybC5tX2ljb25VUkwuaXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBpZiAobV9wYWdlSWNvblVSTCAhPSBpY29uVVJMKSB7Ci0g
ICAgICAgIG1fcGFnZUljb25VUkwgPSBpY29uVVJMOwotICAgICAgICBmcmFtZUxvYWRlcigpLT5k
aWRDaGFuZ2VJY29ucyh0aGlzKTsKKyAgICBpZiAoaWNvblVSTCh1cmwubV9pY29uVHlwZSkubV9p
Y29uVVJMICE9IHVybC5tX2ljb25VUkwpIHsKKyAgICAgICAgICAgIG1faWNvblVSTHNbZ2V0SWNv
bkluZGV4KHVybC5tX2ljb25UeXBlKV0gPSB1cmw7CisgICAgICAgIGZyYW1lTG9hZGVyKCktPmRp
ZENoYW5nZUljb25zKHRoaXMsIHVybC5tX2ljb25UeXBlKTsKICAgICB9CiB9CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCShyZXZpc2lvbiA4NTE4NykKKysrIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
Miw2ICszMiw3IEBACiAjaW5jbHVkZSAiRG9jdW1lbnRMb2FkVGltaW5nLmgiCiAjaW5jbHVkZSAi
RG9jdW1lbnRXcml0ZXIuaCIKICNpbmNsdWRlICJJY29uRGF0YWJhc2VCYXNlLmgiCisjaW5jbHVk
ZSAiSWNvblVSTC5oIgogI2luY2x1ZGUgIk5hdmlnYXRpb25BY3Rpb24uaCIKICNpbmNsdWRlICJS
ZXNvdXJjZUVycm9yLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCkBAIC0xMjMsNyAr
MTI0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29sIGlzTG9hZGluZ0luQVBJ
U2Vuc2UoKSBjb25zdDsKICAgICAgICAgdm9pZCBzZXRQcmltYXJ5TG9hZENvbXBsZXRlKGJvb2wp
OwogICAgICAgICB2b2lkIHNldFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mKTsKLSAg
ICAgICAgdm9pZCBzZXRJY29uVVJMKGNvbnN0IFN0cmluZyYpOworICAgICAgICB2b2lkIHNldElj
b25VUkwoY29uc3QgSWNvblVSTCYpOwogICAgICAgICBjb25zdCBTdHJpbmcmIG92ZXJyaWRlRW5j
b2RpbmcoKSBjb25zdCB7IHJldHVybiBtX292ZXJyaWRlRW5jb2Rpbmc7IH0KIAogI2lmIFBMQVRG
T1JNKE1BQykKQEAgLTE3MCw3ICsxNzEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAg
ICAgdm9pZCBzdG9wUmVjb3JkaW5nUmVzcG9uc2VzKCk7CiAgICAgICAgIGNvbnN0IFN0cmluZ1dp
dGhEaXJlY3Rpb24mIHRpdGxlKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlVGl0bGU7IH0KLSAgICAg
ICAgY29uc3QgU3RyaW5nJiBpY29uVVJMKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlSWNvblVSTDsg
fQorICAgICAgICBJY29uVVJMIGljb25VUkwoSWNvblR5cGUpIGNvbnN0OwogCiAgICAgICAgIEtV
UkwgdXJsRm9ySGlzdG9yeSgpIGNvbnN0OwogICAgICAgICBib29sIHVybEZvckhpc3RvcnlSZWZs
ZWN0c0ZhaWx1cmUoKSBjb25zdDsKQEAgLTMwMCw3ICszMDEsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIGJvb2wgbV93YXNPbmxvYWRIYW5kbGVkOwogCiAgICAgICAgIFN0cmluZ1dp
dGhEaXJlY3Rpb24gbV9wYWdlVGl0bGU7Ci0gICAgICAgIFN0cmluZyBtX3BhZ2VJY29uVVJMOwor
ICAgICAgICBJY29uVVJMIG1faWNvblVSTHNbSUNPTl9DT1VOVF07CiAKICAgICAgICAgU3RyaW5n
IG1fb3ZlcnJpZGVFbmNvZGluZzsKIApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5
Q2xpZW50cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVu
dHMuaAkocmV2aXNpb24gODUxODcpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGll
bnRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3MSw3ICsyNzEsNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUljb24oKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJikgeyB9Ci0g
ICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoKSB7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucyhJY29uVHlwZSkgeyB9CiAgICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoRGlkQ29tbWl0TG9hZCgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRj
aERpZEZhaWxQcm92aXNpb25hbExvYWQoY29uc3QgUmVzb3VyY2VFcnJvciYpIHsgfQogICAgIHZp
cnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxMb2FkKGNvbnN0IFJlc291cmNlRXJyb3ImKSB7IH0K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkocmV2aXNpb24gODUxODcp
CisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC02OSw2ICs2OSw3IEBACiAjaW5jbHVkZSAiSGlzdG9yeUl0ZW0uaCIKICNpbmNsdWRlICJJ
Y29uRGF0YWJhc2UuaCIKICNpbmNsdWRlICJJY29uTG9hZGVyLmgiCisjaW5jbHVkZSAiSWNvblVS
TC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCkBAIC00NjgsMTggKzQ2
OSw1NiBAQCBib29sIEZyYW1lTG9hZGVyOjpjbG9zZVVSTCgpCiAKIEtVUkwgRnJhbWVMb2FkZXI6
Omljb25VUkwoKQogewotICAgIC8vIElmIHRoaXMgaXNuJ3QgYSB0b3AgbGV2ZWwgZnJhbWUsIHJl
dHVybiBub3RoaW5nCisgICAgVmVjdG9yPEljb25VUkw+IHVybHMgPSBpY29uVVJMcyhGYXZpY29u
KTsKKyAgICByZXR1cm4gdXJscy5pc0VtcHR5KCkgPyBLVVJMKCkgOiB1cmxzWzBdLm1faWNvblVS
TDsKK30KKworVmVjdG9yPEljb25VUkw+IEZyYW1lTG9hZGVyOjppY29uVVJMcyhpbnQgaWNvblR5
cGVzKQoreworICAgIFZlY3RvcjxJY29uVVJMPiBpY29uVVJMczsKKyAgICBpZiAoaWNvblR5cGVz
ICYgRmF2aWNvbiAmJiAhZmlsbEljb25VUkwoRmF2aWNvbiwgJmljb25VUkxzKSkKKyAgICAgICAg
ICAgIGljb25VUkxzLmFwcGVuZChnZXREZWZhdWx0SWNvblVSTChGYXZpY29uKSk7CisKKyNpZiBF
TkFCTEUoVE9VQ0hfSUNPTl9MT0FESU5HKQorICAgIGJvb2wgZGlkR290UHJlY29tcG9zZWRJY29u
ID0gZmFsc2U7CisgICAgaWYgKGljb25UeXBlcyAmIFRvdWNoUHJlY29tcG9zZWRJY29uKQorICAg
ICAgICBkaWRHb3RQcmVjb21wb3NlZEljb24gPSBmaWxsSWNvblVSTChUb3VjaFByZWNvbXBvc2Vk
SWNvbiwgJmljb25VUkxzKTsKKworICAgIGJvb2wgZGlkR290VG91Y2hJY29uID0gZmFsc2U7Cisg
ICAgaWYgKGljb25UeXBlcyAmIFRvdWNoSWNvbikKKyAgICAgICAgZGlkR290VG91Y2hJY29uID0g
ZmlsbEljb25VUkwoVG91Y2hJY29uLCAmaWNvblVSTHMpOworCisgICAgLy8gT25seSByZXR1cm4g
dGhlIGRlZmF1bHQgdG91Y2ggaWNvbnMgd2hlbiB0aGUgYm90aCB3ZXJlIHJlcXVpcmVkIGFuZCBu
ZWl0aGVyIHdhcyBnb3R0ZW4uCisgICAgaWYgKGljb25UeXBlcyAmIFRvdWNoUHJlY29tcG9zZWRJ
Y29uICYmIGljb25UeXBlcyAmIFRvdWNoSWNvbiAmJiAhZGlkR290UHJlY29tcG9zZWRJY29uICYm
ICFkaWRHb3RUb3VjaEljb24pIHsKKyAgICAgICAgaWNvblVSTHMuYXBwZW5kKGdldERlZmF1bHRJ
Y29uVVJMKFRvdWNoUHJlY29tcG9zZWRJY29uKSk7CisgICAgICAgIGljb25VUkxzLmFwcGVuZChn
ZXREZWZhdWx0SWNvblVSTChUb3VjaEljb24pKTsKKyAgICB9CisjZW5kaWYKKyAgICByZXR1cm4g
aWNvblVSTHM7Cit9CisKK2Jvb2wgRnJhbWVMb2FkZXI6OmZpbGxJY29uVVJMKEljb25UeXBlIGlj
b25UeXBlLCBWZWN0b3I8SWNvblVSTD4qIGljb25VUkxzKQoreworICAgIC8vIElmIHRoaXMgaXNu
J3QgYSB0b3AgbGV2ZWwgZnJhbWUsIHJldHVybgogICAgIGlmIChtX2ZyYW1lLT50cmVlKCkgJiYg
bV9mcmFtZS0+dHJlZSgpLT5wYXJlbnQoKSkKLSAgICAgICAgcmV0dXJuIEtVUkwoKTsKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8gSWYgd2UgaGF2ZSBhbiBpY29uVVJMIGZyb20gYSBM
aW5rIGVsZW1lbnQsIHJldHVybiB0aGF0Ci0gICAgaWYgKCFtX2ZyYW1lLT5kb2N1bWVudCgpLT5p
Y29uVVJMKCkuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gS1VSTChQYXJzZWRVUkxTdHJpbmcs
IG1fZnJhbWUtPmRvY3VtZW50KCktPmljb25VUkwoKSk7CisgICAgSWNvblVSTCB1cmwgPSBtX2Zy
YW1lLT5kb2N1bWVudCgpLT5pY29uVVJMKGljb25UeXBlKTsKKyAgICBpZiAodXJsLm1faWNvblVS
TC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGljb25VUkxzLT5hcHBl
bmQodXJsKTsKKworICAgIHJldHVybiB0cnVlOworfQogCitJY29uVVJMIEZyYW1lTG9hZGVyOjpn
ZXREZWZhdWx0SWNvblVSTChJY29uVHlwZSBpY29uVHlwZSkKK3sKICAgICAvLyBEb24ndCByZXR1
cm4gYSBmYXZpY29uIGljb25VUkwgdW5sZXNzIHdlJ3JlIGh0dHAgb3IgaHR0cHMKICAgICBLVVJM
IGRvY3VtZW50VVJMID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCk7CiAgICAgaWYgKCFkb2N1
bWVudFVSTC5wcm90b2NvbEluSFRUUEZhbWlseSgpKQotICAgICAgICByZXR1cm4gS1VSTCgpOwor
ICAgICAgICByZXR1cm4gSWNvblVSTCgpOwogCiAgICAgS1VSTCB1cmw7CiAgICAgYm9vbCBjb3Vs
ZFNldFByb3RvY29sID0gdXJsLnNldFByb3RvY29sKGRvY3VtZW50VVJMLnByb3RvY29sKCkpOwpA
QCAtNDg3LDggKzUyNiwyMSBAQCBLVVJMIEZyYW1lTG9hZGVyOjppY29uVVJMKCkKICAgICB1cmwu
c2V0SG9zdChkb2N1bWVudFVSTC5ob3N0KCkpOwogICAgIGlmIChkb2N1bWVudFVSTC5oYXNQb3J0
KCkpCiAgICAgICAgIHVybC5zZXRQb3J0KGRvY3VtZW50VVJMLnBvcnQoKSk7Ci0gICAgdXJsLnNl
dFBhdGgoIi9mYXZpY29uLmljbyIpOwotICAgIHJldHVybiB1cmw7CisgICAgaWYgKGljb25UeXBl
ID09IEZhdmljb24pIHsKKyAgICAgICAgdXJsLnNldFBhdGgoIi9mYXZpY29uLmljbyIpOworICAg
ICAgICByZXR1cm4gSWNvblVSTChLVVJMKFBhcnNlZFVSTFN0cmluZywgdXJsKSwgRmF2aWNvbik7
CisgICAgfQorI2lmIEVOQUJMRShUT1VDSF9JQ09OX0xPQURJTkcpCisgICAgaWYgKGljb25UeXBl
ID09IFRvdWNoUHJlY29tcG9zZWRJY29uKSB7CisgICAgICAgIHVybC5zZXRQYXRoKCIvYXBwbGUt
dG91Y2gtaWNvbi1wcmVjb21wb3NlZC5wbmciKTsKKyAgICAgICAgcmV0dXJuIEljb25VUkwoS1VS
TChQYXJzZWRVUkxTdHJpbmcsIHVybCksIFRvdWNoUHJlY29tcG9zZWRJY29uKTsKKyAgICB9Cisg
ICAgaWYgKGljb25UeXBlID09IFRvdWNoSWNvbikgeworICAgICAgICB1cmwuc2V0UGF0aCgiL2Fw
cGxlLXRvdWNoLWljb24ucG5nIik7CisgICAgICAgIHJldHVybiBJY29uVVJMKEtVUkwoUGFyc2Vk
VVJMU3RyaW5nLCB1cmwpLCBUb3VjaEljb24pOworICAgIH0KKyNlbmRpZgorICAgIHJldHVybiBJ
Y29uVVJMKCk7CiB9CiAKIGJvb2wgRnJhbWVMb2FkZXI6OmRpZE9wZW5VUkwoY29uc3QgS1VSTCYg
dXJsKQpAQCAtMzM4Miw3ICszNDM0LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6c2V0VGl0bGUoY29u
c3QgU3RyaW5nVwogICAgIGRvY3VtZW50TG9hZGVyKCktPnNldFRpdGxlKHRpdGxlKTsKIH0KIAot
dm9pZCBGcmFtZUxvYWRlcjo6c2V0SWNvblVSTChjb25zdCBTdHJpbmcmIGljb25VUkwpCit2b2lk
IEZyYW1lTG9hZGVyOjpzZXRJY29uVVJMKGNvbnN0IEljb25VUkwmIGljb25VUkwpCiB7CiAgICAg
ZG9jdW1lbnRMb2FkZXIoKS0+c2V0SWNvblVSTChpY29uVVJMKTsKIH0KQEAgLTM0NjAsMTAgKzM1
MTIsMTAgQEAgdm9pZCBGcmFtZUxvYWRlcjo6ZGlkQ2hhbmdlVGl0bGUoRG9jdW1lbgogICAgIH0K
IH0KIAotdm9pZCBGcmFtZUxvYWRlcjo6ZGlkQ2hhbmdlSWNvbnMoRG9jdW1lbnRMb2FkZXIqIGxv
YWRlcikKK3ZvaWQgRnJhbWVMb2FkZXI6OmRpZENoYW5nZUljb25zKERvY3VtZW50TG9hZGVyKiBs
b2FkZXIsIEljb25UeXBlIHR5cGUpCiB7CiAgICAgaWYgKGxvYWRlciA9PSBtX2RvY3VtZW50TG9h
ZGVyKQotICAgICAgICBtX2NsaWVudC0+ZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygpOworICAgICAg
ICBtX2NsaWVudC0+ZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucyh0eXBlKTsKIH0KIAogdm9pZCBGcmFt
ZUxvYWRlcjo6ZGlzcGF0Y2hEaWRDb21taXRMb2FkKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9GcmFtZUxvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlci5oCShyZXZpc2lvbiA4NTE4NykKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAi
RnJhbWVMb2FkZXJUeXBlcy5oIgogI2luY2x1ZGUgIkhpc3RvcnlDb250cm9sbGVyLmgiCiAjaW5j
bHVkZSAiSWNvbkRhdGFiYXNlQmFzZS5oIgorI2luY2x1ZGUgIkljb25VUkwuaCIKICNpbmNsdWRl
ICJQb2xpY3lDaGVja2VyLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkTm90aWZpZXIuaCIKICNp
bmNsdWRlICJTY3JpcHRWYWx1ZS5oIgpAQCAtMTkyLDcgKzE5Myw3IEBAIHB1YmxpYzoKICAgICBi
b29sIHN1YmZyYW1lSXNMb2FkaW5nKCkgY29uc3Q7CiAgICAgdm9pZCB3aWxsQ2hhbmdlVGl0bGUo
RG9jdW1lbnRMb2FkZXIqKTsKICAgICB2b2lkIGRpZENoYW5nZVRpdGxlKERvY3VtZW50TG9hZGVy
Kik7Ci0gICAgdm9pZCBkaWRDaGFuZ2VJY29ucyhEb2N1bWVudExvYWRlciopOworICAgIHZvaWQg
ZGlkQ2hhbmdlSWNvbnMoRG9jdW1lbnRMb2FkZXIqLCBJY29uVHlwZSk7CiAKICAgICBGcmFtZUxv
YWRUeXBlIGxvYWRUeXBlKCkgY29uc3Q7CiAKQEAgLTIzNCw3ICsyMzUsMTEgQEAgcHVibGljOgog
ICAgIHZvaWQgZGlkRW5kRG9jdW1lbnQoKTsKICAgICB2b2lkIHdpbGxTZXRFbmNvZGluZygpOwog
CisgICAgLy8gUmV0dXJucyBmYXZpY29uLgogICAgIEtVUkwgaWNvblVSTCgpOworCisgICAgLy8g
UmV0dXJucyB0aGUgZ2l2ZW4gaWNvblR5cGVzJyBJY29uVVJMcywgaWNvblR5cGVzIGNvdWxkIGJl
IGFueSBjb21iaW5hdGlvbiBvZiBJY29uVHlwZS4KKyAgICBWZWN0b3I8SWNvblVSTD4gaWNvblVS
THMoaW50IGljb25UeXBlcyk7CiAgICAgdm9pZCBjb21taXRJY29uVVJMVG9JY29uRGF0YWJhc2Uo
Y29uc3QgS1VSTCYpOwogCiAgICAgS1VSTCBiYXNlVVJMKCkgY29uc3Q7CkBAIC0yODUsNyArMjkw
LDcgQEAgcHVibGljOgogICAgIHZvaWQgY2FuY2VsQW5kQ2xlYXIoKTsKIAogICAgIHZvaWQgc2V0
VGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYpOwotICAgIHZvaWQgc2V0SWNvblVSTChj
b25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIHNldEljb25VUkwoY29uc3QgSWNvblVSTCYpOwogCiAg
ICAgdm9pZCBjb21taXRQcm92aXNpb25hbExvYWQoKTsKICAgICBib29sIGlzTG9hZGluZ0Zyb21D
YWNoZWRQYWdlKCkgY29uc3QgeyByZXR1cm4gbV9sb2FkaW5nRnJvbUNhY2hlZFBhZ2U7IH0KQEAg
LTQyOSw2ICs0MzQsOSBAQCBwcml2YXRlOgogCiAgICAgdm9pZCB1cGRhdGVTYW5kYm94RmxhZ3Mo
KTsKIAorICAgIGJvb2wgZmlsbEljb25VUkwoSWNvblR5cGUsIFZlY3RvcjxJY29uVVJMPiopOwor
ICAgIEljb25VUkwgZ2V0RGVmYXVsdEljb25VUkwoSWNvblR5cGUpOworCiAgICAgRnJhbWUqIG1f
ZnJhbWU7CiAgICAgRnJhbWVMb2FkZXJDbGllbnQqIG1fY2xpZW50OwogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAkocmV2aXNpb24gODUxODcpCisrKyBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpA
QCAtMzAsNiArMzAsNyBAQAogI2RlZmluZSBGcmFtZUxvYWRlckNsaWVudF9oCiAKICNpbmNsdWRl
ICJGcmFtZUxvYWRlclR5cGVzLmgiCisjaW5jbHVkZSAiSWNvblVSTC5oIgogI2luY2x1ZGUgIlNj
cm9sbFR5cGVzLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CkBAIC0xNDEsNyArMTQyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2
aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbigpID0gMDsKICAgICAgICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoRGlkU3RhcnRQcm92aXNpb25hbExvYWQoKSA9IDA7CiAgICAgICAgIHZp
cnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0
aW9uJikgPSAwOwotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygp
ID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoSWNvblR5
cGUpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ29tbWl0TG9hZCgpID0g
MDsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9hZChj
b25zdCBSZXNvdXJjZUVycm9yJikgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hE
aWRGYWlsTG9hZChjb25zdCBSZXNvdXJjZUVycm9yJikgPSAwOwpJbmRleDogU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2
aXNpb24gODUxODcpCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxOCBAQAorMjAxMS0wNC0yMiAgVGFvIEJhaSAgPG1pY2hhZWxiYWlAY2hyb21p
dW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFBvcHVsYXRlIHRvdWNoLWljb24gdXJsIHRvIEZyYW1lTG9hZGVyQ2xpZW50CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01OTE0MworCisgICAgICAgIFJl
c3BlY3RlZCB0aGUgY2hhbmdlIG9mIEZyYW1lTG9hZGVyQ2xpZW50LgorICAgICAgICBBZGRlZCBX
ZWJJY29uVVJMIGFuZCBXZWJJY29uVHlwZSByZXNwb25kaW5nIHRoZSBuZXcgSWNvblVSTCBhbmQg
SWNvblR5cGUuCisgICAgICAgIFN1cHBvcnRlZCB0byBnZXQgdGhlIG11bHRpcGxlIGljb24gdXJs
cy4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0
Y2hEaWRDaGFuZ2VJY29ucyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5oOgorCiAyMDExLTA0LTI3ICBTYW0gV2VpbmlnICA8c2FtQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBSb2Jlbi4KSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCShyZXZpc2lvbiA4NTE4NykKKysrIFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00MTgsNyArNDE4LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNs
aWVudDo6ZGlzcGF0Y2hEaWRSZQogICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6RGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWUobV9mcmFtZS0+ZnJhbWVJRCgpLCB0aXRsZS5z
dHJpbmcoKSwgSW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29kZXIodXNlckRhdGEuZ2V0KCkp
KSk7CiB9CiAKLXZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ2hhbmdlSWNv
bnMoKQordm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucyhX
ZWJDb3JlOjpJY29uVHlwZSkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQpJbmRleDogU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAkocmV2aXNpb24gODUxODcpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgJKHdv
cmtpbmcgY29weSkKQEAgLTg1LDcgKzg1LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbigpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFN0
YXJ0UHJvdmlzaW9uYWxMb2FkKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2
ZVRpdGxlKGNvbnN0IFdlYkNvcmU6OlN0cmluZ1dpdGhEaXJlY3Rpb24mKTsKLSAgICB2aXJ0dWFs
IHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygpOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRj
aERpZENoYW5nZUljb25zKFdlYkNvcmU6Okljb25UeXBlKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlz
cGF0Y2hEaWRDb21taXRMb2FkKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbFBy
b3Zpc2lvbmFsTG9hZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAgICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoRGlkRmFpbExvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYp
OwpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg1MTg3KQorKysgU291
cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwz
MyBAQAorCisyMDExLTA0LTIyICBUYW8gQmFpICA8bWljaGFlbGJhaUBjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUG9wdWxhdGUg
dG91Y2gtaWNvbiB1cmwgdG8gRnJhbWVMb2FkZXJDbGllbnQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU5MTQzCisKKyAgICAgICAgUmVzcGVjdGVkIHRo
ZSBjaGFuZ2Ugb2YgRnJhbWVMb2FkZXJDbGllbnQuCisgICAgICAgIEFkZGVkIFdlYkljb25VUkwg
YW5kIFdlYkljb25UeXBlIHJlc3BvbmRpbmcgdGhlIG5ldyBJY29uVVJMIGFuZCBJY29uVHlwZS4K
KyAgICAgICAgU3VwcG9ydGVkIHRvIGdldCB0aGUgbXVsdGlwbGUgaWNvbiB1cmxzLgorCisgICAg
ICAgICogV2ViS2l0Lmd5cDoKKyAgICAgICAgKiBwdWJsaWMvV2ViRnJhbWUuaDoKKyAgICAgICAg
KiBwdWJsaWMvV2ViRnJhbWVDbGllbnQuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVDbGll
bnQ6OmRpZENoYW5nZUljb25zKToKKyAgICAgICAgKiBwdWJsaWMvV2ViSWNvblVSTC5oOiBBZGRl
ZC4KKyAgICAgICAgKFdlYktpdDo6V2ViSWNvblVSTDo6V2ViSWNvblVSTCk6CisgICAgICAgICog
c3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9h
ZGVyQ2xpZW50SW1wbDo6ZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucyk6CisgICAgICAgICogc3JjL0Zy
YW1lTG9hZGVyQ2xpZW50SW1wbC5oOgorICAgICAgICAqIHNyYy9XZWJGcmFtZUltcGwuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUltcGw6OmZhdkljb25VUkwpOgorICAgICAgICAqIHNy
Yy9XZWJGcmFtZUltcGwuaDoKKyAgICAgICAgKiBzcmMvV2ViSWNvblR5cGVVdGlsaXRpZXMuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViSWNvblR5cGVVdGlsaXRpZXM6OkNvbnZlcnRX
ZWJJY29uVHlwZVRvSWNvblR5cGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJY29uVHlwZVV0aWxp
dGllczo6Q29udmVydEljb25UeXBlVG9XZWJJY29uVHlwZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
Ykljb25UeXBlVXRpbGl0aWVzOjpDb252ZXJ0V2ViSWNvblR5cGVzVG9JY29uVHlwZXMpOgorICAg
ICAgICAqIHNyYy9XZWJJY29uVHlwZVV0aWxpdGllcy5oOiBBZGRlZC4KKwogMjAxMS0wNC0yNyAg
RG1pdHJ5IExvbW92ICA8ZHNsb21vdkBnb29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IERhdmlkIExldmluLgpAQCAtMzkxLDYgKzQyMSw3IEBACiAgICAgICAgICogdGVzdHMvVHJhbnNw
YXJlbmN5V2luVGVzdC5jcHA6CiAgICAgICAgIChXZWJDb3JlOjpURVNUKToKIAorPj4+Pj4+PiAu
cjg0OTE3CiAyMDExLTA0LTIyICBNaWtoYWlsIE5hZ2Fub3YgIDxtbmFnYW5vdkBjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgUGF2ZWwgRmVsZG1hbi4KSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL1dlYktpdC5neXAJKHJldmlzaW9uIDg1MTg3KQorKysgU291cmNlL1dlYktpdC9jaHJv
bWl1bS9XZWJLaXQuZ3lwCSh3b3JraW5nIGNvcHkpCkBAIC0xODUsNiArMTg1LDcgQEAKICAgICAg
ICAgICAgICAgICAncHVibGljL1dlYkhUVFBCb2R5LmgnLAogICAgICAgICAgICAgICAgICdwdWJs
aWMvV2ViSFRUUExvYWRJbmZvLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViSWNvbkxv
YWRpbmdDb21wbGV0aW9uLmgnLAorICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViSWNvblR5cGUu
aCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJJbWFnZS5oJywKICAgICAgICAgICAgICAg
ICAncHVibGljL1dlYkltYWdlRGVjb2Rlci5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dl
YklEQkNhbGxiYWNrcy5oJywKQEAgLTQ3NSw2ICs0NzYsOCBAQAogICAgICAgICAgICAgICAgICdz
cmMvV2ViSGlzdG9yeUl0ZW0uY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkhUVFBCb2R5
LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJIVFRQTG9hZEluZm8uY3BwJywKKyAgICAg
ICAgICAgICAgICAnc3JjL1dlYkljb25UeXBlVXRpbGl0aWVzLmNwcCcsCisgICAgICAgICAgICAg
ICAgJ3NyYy9XZWJJY29uVHlwZVV0aWxpdGllcy5oJywKICAgICAgICAgICAgICAgICAnc3JjL1dl
Ykljb25Mb2FkaW5nQ29tcGxldGlvbkltcGwuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dl
Ykljb25Mb2FkaW5nQ29tcGxldGlvbkltcGwuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJJ
REJDYWxsYmFja3NJbXBsLmNwcCcsCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL2ZlYXR1
cmVzLmd5cGkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9mZWF0dXJlcy5n
eXBpCShyZXZpc2lvbiA4NTE4NykKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vZmVhdHVyZXMu
Z3lwaQkod29ya2luZyBjb3B5KQpAQCAtODgsNiArODgsNyBAQAogICAgICAgICAnRU5BQkxFX1NW
R19GT1JFSUdOX09CSkVDVD0xJywKICAgICAgICAgJ0VOQUJMRV9TVkdfVVNFPTEnLAogICAgICAg
ICAnRU5BQkxFX1RPVUNIX0VWRU5UUz0xJywKKyAgICAgICAgJ0VOQUJMRV9UT1VDSF9JQ09OX0xP
QURJTkc9MScsCiAgICAgICAgICdFTkFCTEVfVjhfU0NSSVBUX0RFQlVHX1NFUlZFUj0xJywKICAg
ICAgICAgJ0VOQUJMRV9WSURFTz0xJywKICAgICAgICAgJ0VOQUJMRV9XRUJfQVVESU89MCcsCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZyYW1lLmgJKHJldmlzaW9uIDg1
MTg3KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAogCiAjaW5jbHVkZSAiV2ViQ2FudmFzLmgiCiAjaW5j
bHVkZSAiV2ViRmlsZVN5c3RlbS5oIgorI2luY2x1ZGUgIldlYkljb25VUkwuaCIKICNpbmNsdWRl
ICJXZWJOb2RlLmgiCiAjaW5jbHVkZSAiV2ViVVJMLmgiCiAKQEAgLTEyOSw5ICsxMzAsOSBAQCBw
dWJsaWM6CiAgICAgLy8gZGF0YVNvdXJjZSgpLT5yZXF1ZXN0KCkudXJsKCkuCiAgICAgdmlydHVh
bCBXZWJVUkwgdXJsKCkgY29uc3QgPSAwOwogCi0gICAgLy8gVGhlIHVybCBvZiB0aGUgZmF2aWNv
biAoaWYgYW55KSBzcGVjaWZpZWQgYnkgdGhlIGRvY3VtZW50IGxvYWRlZCBpbgorICAgIC8vIFRo
ZSB1cmxzIG9mIHRoZSBmYXZpY29uIChpZiBhbnkpIHNwZWNpZmllZCBieSB0aGUgZG9jdW1lbnQg
bG9hZGVkIGluCiAgICAgLy8gdGhpcyBmcmFtZS4KLSAgICB2aXJ0dWFsIFdlYlVSTCBmYXZJY29u
VVJMKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgc3RkOjp2ZWN0b3I8V2ViSWNvblVSTD4gZmF2
SWNvblVSTChpbnQpIGNvbnN0ID0gMDsKIAogICAgIC8vIFRoZSB1cmwgb2YgdGhlIE9wZW5TZWFy
Y2ggRGVzcmlwdGlvbiBEb2N1bWVudCAoaWYgYW55KSBzcGVjaWZpZWQgYnkKICAgICAvLyB0aGUg
ZG9jdW1lbnQgbG9hZGVkIGluIHRoaXMgZnJhbWUuCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJGcmFtZUNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYkZyYW1lQ2xpZW50LmgJKHJldmlzaW9uIDg1MTg3KQorKysgU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWVDbGllbnQuaAkod29ya2luZyBjb3B5
KQpAQCAtMzMsNiArMzMsNyBAQAogCiAjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCiAjaW5jbHVkZSAi
V2ViRmlsZVN5c3RlbS5oIgorI2luY2x1ZGUgIldlYkljb25VUkwuaCIKICNpbmNsdWRlICJXZWJO
YXZpZ2F0aW9uUG9saWN5LmgiCiAjaW5jbHVkZSAiV2ViTmF2aWdhdGlvblR5cGUuaCIKICNpbmNs
dWRlICJXZWJTdG9yYWdlUXVvdGFUeXBlLmgiCkBAIC0yMTUsNyArMjE2LDcgQEAgcHVibGljOgog
ICAgIH0KIAogICAgIC8vIFRoZSBpY29ucyBmb3IgdGhlIHBhZ2UgaGF2ZSBjaGFuZ2VkLgotICAg
IHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VJY29ucyhXZWJGcmFtZSopIHsgfQorICAgIHZpcnR1YWwg
dm9pZCBkaWRDaGFuZ2VJY29ucyhXZWJGcmFtZSosIFdlYkljb25UeXBlKSB7IH0KIAogICAgIC8v
IFRoZSBmcmFtZSdzIGRvY3VtZW50IGZpbmlzaGVkIGxvYWRpbmcuCiAgICAgdmlydHVhbCB2b2lk
IGRpZEZpbmlzaERvY3VtZW50TG9hZChXZWJGcmFtZSopIHsgfQpJbmRleDogU291cmNlL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvV2ViSWNvblVSTC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYkljb25VUkwuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkljb25VUkwuaAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSw2NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0Ogor
ICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisg
KiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZm5kZWYgV2ViSWNvblVSTF9oCisjZGVmaW5lIFdlYkljb25VUkxfaAorCisjaW5j
bHVkZSAiV2ViVVJMLmgiCisKKyNpbmNsdWRlIDx2ZWN0b3I+CisKK25hbWVzcGFjZSBXZWJLaXQg
eworCitlbnVtIFdlYkljb25UeXBlIHsKKyAgICBJbnZhbGlkSWNvbiA9IDAsCisgICAgRmF2aWNv
biA9IDEsCisgICAgVG91Y2hJY29uID0gMSA8PCAxLAorICAgIFRvdWNoUHJlY29tcG9zZWRJY29u
ID0gMSA8PCAyCit9OworCitzdHJ1Y3QgV2ViSWNvblVSTCB7CisgICAgV2ViSWNvblVSTCgpCisg
ICAgICAgIDogbV9pY29uVHlwZShJbnZhbGlkSWNvbikKKyAgICB7CisgICAgfQorCisgICAgV2Vi
SWNvblVSTChjb25zdCBXZWJVUkwmIHVybCwgV2ViSWNvblR5cGUgdHlwZSkKKyAgICAgICAgOiBt
X2ljb25UeXBlKHR5cGUpCisgICAgICAgICwgbV9pY29uVVJMKHVybCkKKyAgICB7CisgICAgfQor
CisgICAgV2ViSWNvblR5cGUgbV9pY29uVHlwZTsKKyAgICBXZWJVUkwgbV9pY29uVVJMOworfTsK
KworfQorCisjZW5kaWYgLy8gV2ViSWNvblVSTF9oCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJY29uVVJMLmgKX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDog
c3ZuOmVvbC1zdHlsZQogICArIExGCgpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
RnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwCShyZXZpc2lvbiA4NTE4NykKKysr
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTYxLDYgKzYxLDcgQEAKICNpbmNsdWRlICJXZWJGb3JtRWxlbWVudC5o
IgogI2luY2x1ZGUgIldlYkZyYW1lQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVJbXBsLmgi
CisjaW5jbHVkZSAiV2ViSWNvblR5cGVVdGlsaXRpZXMuaCIKICNpbmNsdWRlICJXZWJLaXQuaCIK
ICNpbmNsdWRlICJXZWJLaXRDbGllbnQuaCIKICNpbmNsdWRlICJXZWJNaW1lUmVnaXN0cnkuaCIK
QEAgLTc0OCwxMCArNzQ5LDEwIEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRJbXBsOjpkaXNwYXRj
aERpZFIKICAgICAgICAgbV93ZWJGcmFtZS0+Y2xpZW50KCktPmRpZFJlY2VpdmVUaXRsZShtX3dl
YkZyYW1lLCB0aXRsZS5zdHJpbmcoKSwgdGl0bGUuZGlyZWN0aW9uKCkgPT0gTFRSID8gV2ViVGV4
dERpcmVjdGlvbkxlZnRUb1JpZ2h0IDogV2ViVGV4dERpcmVjdGlvblJpZ2h0VG9MZWZ0KTsKIH0K
IAotdm9pZCBGcmFtZUxvYWRlckNsaWVudEltcGw6OmRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoKQor
dm9pZCBGcmFtZUxvYWRlckNsaWVudEltcGw6OmRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoV2ViQ29y
ZTo6SWNvblR5cGUgdHlwZSkKIHsKICAgICBpZiAobV93ZWJGcmFtZS0+Y2xpZW50KCkpCi0gICAg
ICAgIG1fd2ViRnJhbWUtPmNsaWVudCgpLT5kaWRDaGFuZ2VJY29ucyhtX3dlYkZyYW1lKTsKKyAg
ICAgICAgbV93ZWJGcmFtZS0+Y2xpZW50KCktPmRpZENoYW5nZUljb25zKG1fd2ViRnJhbWUsIFdl
Ykljb25UeXBlVXRpbGl0aWVzOjpDb252ZXJ0SWNvblR5cGVUb1dlYkljb25UeXBlKHR5cGUpKTsK
IH0KIAogdm9pZCBGcmFtZUxvYWRlckNsaWVudEltcGw6OmRpc3BhdGNoRGlkQ29tbWl0TG9hZCgp
CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNs
aWVudEltcGwuaAkocmV2aXNpb24gODUxODcpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9GcmFtZUxvYWRlckNsaWVudEltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtMTA1LDcgKzEwNSw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbigpOwog
ICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCk7CiAgICAg
dmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFdlYkNvcmU6OlN0cmlu
Z1dpdGhEaXJlY3Rpb24mKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VJY29u
cygpOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZUljb25zKFdlYkNvcmU6Oklj
b25UeXBlKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDb21taXRMb2FkKCk7CiAgICAg
dmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9hZChjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yJik7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbExvYWQo
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwpJbmRleDogU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwCShyZXZpc2lvbiA4NTE4NykKKysrIFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEw
MCw2ICsxMDAsNyBAQAogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhpc3RvcnlJ
dGVtLmgiCiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgorI2luY2x1ZGUgIkljb25VUkwuaCIK
ICNpbmNsdWRlICJJbnNwZWN0b3JDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2lu
Y2x1ZGUgInBhaW50aW5nL0dyYXBoaWNzQ29udGV4dEJ1aWxkZXIuaCIKQEAgLTEzNyw2ICsxMzgs
NyBAQAogI2luY2x1ZGUgIldlYkZvcm1FbGVtZW50LmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVDbGll
bnQuaCIKICNpbmNsdWRlICJXZWJIaXN0b3J5SXRlbS5oIgorI2luY2x1ZGUgIldlYkljb25UeXBl
VXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiV2ViSW5wdXRFbGVtZW50LmgiCiAjaW5jbHVkZSAiV2Vi
Tm9kZS5oIgogI2luY2x1ZGUgIldlYlBhc3N3b3JkQXV0b2NvbXBsZXRlTGlzdGVuZXIuaCIKQEAg
LTUxOCwxNyArNTIwLDIwIEBAIFdlYlVSTCBXZWJGcmFtZUltcGw6OnVybCgpIGNvbnN0CiAgICAg
cmV0dXJuIGRzLT5yZXF1ZXN0KCkudXJsKCk7CiB9CiAKLVdlYlVSTCBXZWJGcmFtZUltcGw6OmZh
dkljb25VUkwoKSBjb25zdAorc3RkOjp2ZWN0b3I8V2ViSWNvblVSTD4gV2ViRnJhbWVJbXBsOjpm
YXZJY29uVVJMKGludCB3ZWJJY29uVHlwZXMpIGNvbnN0CiB7CiAgICAgRnJhbWVMb2FkZXIqIGZy
YW1lTG9hZGVyID0gbV9mcmFtZS0+bG9hZGVyKCk7CisgICAgc3RkOjp2ZWN0b3I8V2ViSWNvblVS
TD4gd2ViSWNvblVSTHM7CisKICAgICAvLyBUaGUgVVJMIHRvIHRoZSBmYXZpY29uIG1heSBiZSBp
biB0aGUgaGVhZGVyLiBBcyBzdWNoLCBvbmx5CiAgICAgLy8gYXNrIHRoZSBsb2FkZXIgZm9yIHRo
ZSBmYXZpY29uIGlmIGl0J3MgZmluaXNoZWQgbG9hZGluZy4KICAgICBpZiAoZnJhbWVMb2FkZXIt
PnN0YXRlKCkgPT0gRnJhbWVTdGF0ZUNvbXBsZXRlKSB7Ci0gICAgICAgIGNvbnN0IEtVUkwmIHVy
bCA9IGZyYW1lTG9hZGVyLT5pY29uVVJMKCk7Ci0gICAgICAgIGlmICghdXJsLmlzRW1wdHkoKSkK
LSAgICAgICAgICAgIHJldHVybiB1cmw7CisgICAgICAgIGludCBpY29uVHlwZXMgPSBXZWJJY29u
VHlwZVV0aWxpdGllczo6Q29udmVydFdlYkljb25UeXBlc1RvSWNvblR5cGVzKHdlYkljb25UeXBl
cyk7CisgICAgICAgIFdURjo6VmVjdG9yPFdlYkNvcmU6Okljb25VUkw+IGljb25VUkxzID0gZnJh
bWVMb2FkZXItPmljb25VUkxzKGljb25UeXBlcyk7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgaWNvblVSTHMuc2l6ZSgpOyBpKyspCisgICAgICAgICAgICB3ZWJJY29uVVJMcy5wdXNo
X2JhY2soV2ViSWNvblVSTChpY29uVVJMc1tpXS5tX2ljb25VUkwsIFdlYkljb25UeXBlVXRpbGl0
aWVzOjpDb252ZXJ0SWNvblR5cGVUb1dlYkljb25UeXBlKGljb25VUkxzW2ldLm1faWNvblR5cGUp
KSk7CiAgICAgfQotICAgIHJldHVybiBXZWJVUkwoKTsKKyAgICByZXR1cm4gd2ViSWNvblVSTHM7
CiB9CiAKIFdlYlVSTCBXZWJGcmFtZUltcGw6Om9wZW5TZWFyY2hEZXNjcmlwdGlvblVSTCgpIGNv
bnN0CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuaAkocmV2
aXNpb24gODUxODcpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwu
aAkod29ya2luZyBjb3B5KQpAQCAtNzAsNyArNzAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIHNldE5hbWUoY29uc3QgV2ViU3RyaW5nJik7CiAgICAgdmlydHVhbCBsb25nIGxvbmcgaWRl
bnRpZmllcigpIGNvbnN0OwogICAgIHZpcnR1YWwgV2ViVVJMIHVybCgpIGNvbnN0OwotICAgIHZp
cnR1YWwgV2ViVVJMIGZhdkljb25VUkwoKSBjb25zdDsKKyAgICB2aXJ0dWFsIHN0ZDo6dmVjdG9y
PFdlYkljb25VUkw+IGZhdkljb25VUkwoaW50KSBjb25zdDsKICAgICB2aXJ0dWFsIFdlYlVSTCBv
cGVuU2VhcmNoRGVzY3JpcHRpb25VUkwoKSBjb25zdDsKICAgICB2aXJ0dWFsIFdlYlN0cmluZyBl
bmNvZGluZygpIGNvbnN0OwogICAgIHZpcnR1YWwgV2ViU2l6ZSBzY3JvbGxPZmZzZXQoKSBjb25z
dDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkljb25UeXBlVXRpbGl0aWVz
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJY29uVHlw
ZVV0aWxpdGllcy5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJJY29uVHlwZVV0aWxpdGllcy5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODcgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQor
ICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
KyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJXZWJJY29uVHlwZVV0aWxpdGllcy5oIgor
CituYW1lc3BhY2UgV2ViS2l0IHsKK1dlYkNvcmU6Okljb25UeXBlIFdlYkljb25UeXBlVXRpbGl0
aWVzOjpDb252ZXJ0V2ViSWNvblR5cGVUb0ljb25UeXBlKFdlYkljb25UeXBlIHdlYkljb25UeXBl
KQoreworICAgIFdlYkNvcmU6Okljb25UeXBlIGljb25UeXBlID0gV2ViQ29yZTo6SW52YWxpZElj
b247CisgICAgc3dpdGNoICh3ZWJJY29uVHlwZSkgeworICAgIGNhc2UgRmF2aWNvbjoKKyAgICAg
ICAgaWNvblR5cGUgPSBXZWJDb3JlOjpGYXZpY29uOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IFRvdWNoSWNvbjoKKyAgICAgICAgaWNvblR5cGUgPSBXZWJDb3JlOjpUb3VjaEljb247CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgVG91Y2hQcmVjb21wb3NlZEljb246CisgICAgICAgIGljb25U
eXBlID0gV2ViQ29yZTo6VG91Y2hQcmVjb21wb3NlZEljb247CisgICAgICAgIGJyZWFrOworICAg
IGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICByZXR1cm4gaWNvblR5cGU7Cit9
CisKK1dlYkljb25UeXBlIFdlYkljb25UeXBlVXRpbGl0aWVzOjpDb252ZXJ0SWNvblR5cGVUb1dl
Ykljb25UeXBlKFdlYkNvcmU6Okljb25UeXBlIGljb25UeXBlKQoreworICAgIFdlYkljb25UeXBl
IHR5cGUgPSBJbnZhbGlkSWNvbjsKKyAgICBzd2l0Y2ggKGljb25UeXBlKSB7CisgICAgY2FzZSBX
ZWJDb3JlOjpGYXZpY29uOgorICAgICAgICB0eXBlID0gRmF2aWNvbjsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBXZWJDb3JlOjpUb3VjaEljb246CisgICAgICAgIHR5cGUgPSBUb3VjaEljb247
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV2ViQ29yZTo6VG91Y2hQcmVjb21wb3NlZEljb246
CisgICAgICAgIHR5cGUgPSBUb3VjaFByZWNvbXBvc2VkSWNvbjsKKyAgICAgICAgYnJlYWs7Cisg
ICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIHJldHVybiB0eXBlOworfQor
CitpbnQgV2ViSWNvblR5cGVVdGlsaXRpZXM6OkNvbnZlcnRXZWJJY29uVHlwZXNUb0ljb25UeXBl
cyhpbnQgd2ViSWNvblR5cGVzKQoreworICAgIGludCBpY29uVHlwZXMgPSAwOworICAgIGlmICh3
ZWJJY29uVHlwZXMgJiBGYXZpY29uKQorICAgICAgICBpY29uVHlwZXMgfD0gV2ViQ29yZTo6RmF2
aWNvbjsKKyAgICBpZiAod2ViSWNvblR5cGVzICYgVG91Y2hJY29uKQorICAgICAgICBpY29uVHlw
ZXMgfD0gV2ViQ29yZTo6VG91Y2hJY29uOworICAgIGlmICh3ZWJJY29uVHlwZXMgJiBUb3VjaFBy
ZWNvbXBvc2VkSWNvbikKKyAgICAgICAgaWNvblR5cGVzIHw9IFdlYkNvcmU6OlRvdWNoUHJlY29t
cG9zZWRJY29uOworCisgICAgcmV0dXJuIGljb25UeXBlczsKK30KKworfQoKUHJvcGVydHkgY2hh
bmdlcyBvbjogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSWNvblR5cGVVdGlsaXRpZXMu
Y3BwCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX18KQWRkZWQ6IHN2bjplb2wtc3R5bGUKICAgKyBMRgoKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkljb25UeXBlVXRpbGl0aWVzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSWNvblR5cGVVdGlsaXRpZXMuaAkocmV2
aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkljb25UeXBlVXRpbGl0
aWVzLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICog
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYkljb25UeXBlVXRp
bGl0aWVzX2gKKyNkZWZpbmUgV2ViSWNvblR5cGVVdGlsaXRpZXNfaAorCisjaW5jbHVkZSAiSWNv
blVSTC5oIgorI2luY2x1ZGUgIldlYkljb25VUkwuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K2NsYXNzIFdlYkljb25UeXBlVXRpbGl0aWVzIHsKKyBwdWJsaWM6CisgICAgc3RhdGljIFdlYkNv
cmU6Okljb25UeXBlIENvbnZlcnRXZWJJY29uVHlwZVRvSWNvblR5cGUoV2ViSWNvblR5cGUpOwor
ICAgIHN0YXRpYyBXZWJJY29uVHlwZSBDb252ZXJ0SWNvblR5cGVUb1dlYkljb25UeXBlKFdlYkNv
cmU6Okljb25UeXBlKTsKKyAgICBzdGF0aWMgaW50IENvbnZlcnRXZWJJY29uVHlwZXNUb0ljb25U
eXBlcyhpbnQpOworfTsKKworfQorCisjZW5kaWYgLy8gV2ViSWNvblR5cGVVdGlsaXRpZXNfaAoK
UHJvcGVydHkgY2hhbmdlcyBvbjogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSWNvblR5
cGVVdGlsaXRpZXMuaApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiAgICsgTEYKCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9lZmwvQ2hhbmdlTG9nCShyZXZpc2lvbiA4NTE4NykKKysrIFNvdXJjZS9XZWJLaXQvZWZs
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDExLTA0LTIyICBU
YW8gQmFpICA8bWljaGFlbGJhaUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUG9wdWxhdGUgdG91Y2gtaWNvbiB1cmwgdG8gRnJh
bWVMb2FkZXJDbGllbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTU5MTQzCisKKyAgICAgICAgUmVzcGVjdCB0aGUgaW50ZXJmYWNlIGNoYW5nZSBpbiBG
cmFtZUxvYWRlckNsaWVudAorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJD
bGllbnRFZmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6OmRp
c3BhdGNoRGlkQ2hhbmdlSWNvbnMpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9h
ZGVyQ2xpZW50RWZsLmg6CisKIDIwMTEtMDQtMjYgIEdyemVnb3J6IEN6YWprb3dza2kgIDxnLmN6
YWprb3dza2lAc2Ftc3VuZy5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQW50b25pbyBHb21l
cy4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xp
ZW50RWZsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9y
dC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHAJKHJldmlzaW9uIDg1MTg3KQorKysgU291cmNlL1dl
YktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01ODcsNyArNTg3LDcgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlz
cGF0Y2hEaWRSZQogICAgIGV3a192aWV3X3RpdGxlX3NldChtX3ZpZXcsIGNzLmRhdGEoKSk7CiB9
CiAKLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoKQor
dm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucyhXZWJDb3Jl
OjpJY29uVHlwZSkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQpJbmRleDogU291cmNlL1dl
YktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVm
bC5oCShyZXZpc2lvbiA4NTE4NykKKysrIFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0
L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwMyw3ICsxMDMsNyBA
QCBjbGFzcyBGcmFtZUxvYWRlckNsaWVudEVmbCA6IHB1YmxpYyBGcmFtCiAgICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUljb24oKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hE
aWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJl
Y2VpdmVUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJik7Ci0gICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRD
aGFuZ2VJY29ucyhXZWJDb3JlOjpJY29uVHlwZSk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
RGlkQ29tbWl0TG9hZCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxQcm92aXNp
b25hbExvYWQoY29uc3QgUmVzb3VyY2VFcnJvciYpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRj
aERpZEZhaWxMb2FkKGNvbnN0IFJlc291cmNlRXJyb3ImKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
Z3RrL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDg1MTg3KQorKysgU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTEtMDQtMjIgIFRhbyBCYWkgIDxtaWNoYWVsYmFp
QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBQb3B1bGF0ZSB0b3VjaC1pY29uIHVybCB0byBGcmFtZUxvYWRlckNsaWVudAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTkxNDMKKworICAg
ICAgICBSZXNwZWN0IHRoZSBpbnRlcmZhY2UgY2hhbmdlIGluIEZyYW1lTG9hZGVyQ2xpZW50Lgor
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucyk6
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuaDoKKwogMjAx
MS0wNC0yNyAgTWFydGluIFJvYmluc29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCkluZGV4OiBTb3VyY2UvV2ViS2l0L2d0ay9XZWJD
b3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwCShyZXZp
c2lvbiA4NTE4NykKKysrIFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9h
ZGVyQ2xpZW50R3RrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTY5LDcgKzk2OSw3IEBAIHZvaWQg
RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVjZWkKICAgICB9CiB9CiAKLXZvaWQgRnJh
bWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoKQordm9pZCBGcmFtZUxvYWRl
ckNsaWVudDo6ZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucyhXZWJDb3JlOjpJY29uVHlwZSkKIHsKICAg
ICBub3RJbXBsZW1lbnRlZCgpOwogfQpJbmRleDogU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1
cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5oCShyZXZpc2lvbiA4NTE4
NykKKysrIFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50
R3RrLmgJKHdvcmtpbmcgY29weSkKQEAgLTgyLDcgKzgyLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7
CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVJY29uKCk7CiAgICAgICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCk7CiAgICAgICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBXZWJDb3JlOjpTdHJp
bmdXaXRoRGlyZWN0aW9uJik7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENoYW5n
ZUljb25zKCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZUljb25zKFdl
YkNvcmU6Okljb25UeXBlKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ29tbWl0
TG9hZCgpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGYWlsUHJvdmlzaW9uYWxM
b2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKICAgICAgICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoRGlkRmFpbExvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwpJbmRl
eDogU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gODUxODcpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNyBAQAorCisyMDExLTA0LTIyICBU
YW8gQmFpICA8bWljaGFlbGJhaUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUG9wdWxhdGUgdG91Y2gtaWNvbiB1cmwgdG8gRnJh
bWVMb2FkZXJDbGllbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTU5MTQzCisKKyAgICAgICAgUmVzcGVjdCB0aGUgaW50ZXJmYWNlIGNoYW5nZSBpbiBG
cmFtZUxvYWRlckNsaWVudC4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQubW06CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDaGFuZ2VJ
Y29ucyk6CisKIDIwMTEtMDQtMjcgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNv
bT4KIAogICAgICAgICBGb2xsb3ctdXAgTGVvcGFyZCBidWlsZCBmaXguCkBAIC0xNTYsNiArMTcw
LDcgQEAKICAgICAgICAgKiBXZWJWaWV3L1dlYkZ1bGxTY3JlZW5Db250cm9sbGVyLm1tOgogICAg
ICAgICAoLVtXZWJGdWxsU2NyZWVuQ29udHJvbGxlciBfZG9jdW1lbnRdKToKIAorPj4+Pj4+PiAu
cjg0OTE3CiAyMDExLTA0LTIyICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IE1hY2llaiBTdGFjaG93aWFrLgpJbmRleDogU291cmNlL1dlYktp
dC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5o
CShyZXZpc2lvbiA4NTE4NykKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEwMiw3ICsxMDIsNyBAQCBw
cml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVJY29uKCk7CiAgICAg
dmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkU3RhcnRQcm92aXNpb25hbExvYWQoKTsKICAgICB2aXJ0
dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgV2ViQ29yZTo6U3RyaW5nV2l0
aERpcmVjdGlvbiYpOwotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZUljb25zKCk7
CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoV2ViQ29yZTo6SWNvblR5
cGUpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENvbW1pdExvYWQoKTsKICAgICB2aXJ0
dWFsIHZvaWQgZGlzcGF0Y2hEaWRGYWlsUHJvdmlzaW9uYWxMb2FkKGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlRXJyb3ImKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGYWlsTG9hZChjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQkocmV2aXNp
b24gODUxODcpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5tbQkod29ya2luZyBjb3B5KQpAQCAtNjMzLDcgKzYzMyw3IEBAIHZvaWQgV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmUKICAgICAgICAgQ2FsbEZyYW1lTG9hZERl
bGVnYXRlKGltcGxlbWVudGF0aW9ucy0+ZGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWVGdW5jLCB3ZWJW
aWV3LCBAc2VsZWN0b3Iod2ViVmlldzpkaWRSZWNlaXZlVGl0bGU6Zm9yRnJhbWU6KSwgKE5TU3Ry
aW5nICopdGl0bGUuc3RyaW5nKCksIG1fd2ViRnJhbWUuZ2V0KCkpOwogfQogCi12b2lkIFdlYkZy
YW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENoYW5nZUljb25zKCkKK3ZvaWQgV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoV2ViQ29yZTo6SWNvblR5cGUpCiB7
CiAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcyB0byBhbGxvdyBjb250YWluZXIgdG8gdXBk
YXRlIGZhdmljb24uCiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwkocmV2aXNpb24gODUxODcpCisrKyBT
b3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBA
CisyMDExLTA0LTIyICBUYW8gQmFpICA8bWljaGFlbGJhaUBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUG9wdWxhdGUgdG91Y2gt
aWNvbiB1cmwgdG8gRnJhbWVMb2FkZXJDbGllbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTU5MTQzCisKKyAgICAgICAgUmVzcGVjdCB0aGUgaW50ZXJm
YWNlIGNoYW5nZSBpbiBGcmFtZUxvYWRlckNsaWVudC4KKworICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2Fk
ZXJDbGllbnRRdDo6ZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucyk6CisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5oOgorCiAyMDExLTA0LTI3ICBZaSBTaGVuICA8eWku
NC5zaGVuQG5va2lhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENo
cmlzdGlhbnNlbi4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVM
b2FkZXJDbGllbnRRdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9xdC9XZWJDb3Jl
U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcAkocmV2aXNpb24gODUxODcpCisrKyBTb3Vy
Y2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00NTksNyArNDU5LDcgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudFF0Ojpk
aXNwYXRjaERpZFJlYwogfQogCiAKLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hE
aWRDaGFuZ2VJY29ucygpCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkQ2hh
bmdlSWNvbnMoV2ViQ29yZTo6SWNvblR5cGUpCiB7CiAgICAgaWYgKGR1bXBGcmFtZUxvYWRlckNh
bGxiYWNrcykKICAgICAgICAgcHJpbnRmKCIlcyAtIGRpZENoYW5nZUljb25zXG4iLCBxUHJpbnRh
YmxlKGRydERlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KG1fZnJhbWUpKSk7CkluZGV4
OiBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVy
Q2xpZW50UXQuaAkocmV2aXNpb24gODUxODcpCisrKyBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVT
dXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaAkod29ya2luZyBjb3B5KQpAQCAtMTExLDcgKzEx
MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbigp
OwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCk7CiAg
ICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFN0cmluZ1dpdGhE
aXJlY3Rpb24mKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygpOwor
ICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZUljb25zKFdlYkNvcmU6Okljb25UeXBl
KTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDb21taXRMb2FkKCk7CiAgICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9hZChjb25zdCBSZXNvdXJjZUVycm9y
Jik7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbExvYWQoY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VFcnJvciYpOwpJbmRleDogU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwkocmV2aXNpb24gODUxODcpCisr
KyBTb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
NiBAQAorMjAxMS0wNC0yMiAgVGFvIEJhaSAgPG1pY2hhZWxiYWlAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBvcHVsYXRlIHRv
dWNoLWljb24gdXJsIHRvIEZyYW1lTG9hZGVyQ2xpZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01OTE0MworCisgICAgICAgIFJlc3BlY3QgdGhlIGlu
dGVyZmFjZSBjaGFuZ2UgaW4gRnJhbWVMb2FkZXJDbGllbnQuCisKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJGcmFtZUxvYWRl
ckNsaWVudDo6ZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucyk6CisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKwogMjAxMS0wNC0yNiAgQnJlbnQgRnVsZ2hhbSAg
PGJmdWxnaGFtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBSb2Jlbi4K
SW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5jcHAJKHJldmlzaW9uIDg1MTg3KQorKysgU291cmNlL1dlYktp
dC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zNzMsOCArMzczLDExIEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3Bh
dGNoRGlkUmUKICAgICAgICAgZnJhbWVMb2FkRGVsZWdhdGUtPmRpZFJlY2VpdmVUaXRsZSh3ZWJW
aWV3LCBCU3RyaW5nKHRpdGxlLnN0cmluZygpKSwgbV93ZWJGcmFtZSk7CiB9CiAKLXZvaWQgV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoKQordm9pZCBXZWJGcmFt
ZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucyhXZWJDb3JlOjpJY29uVHlwZSB0
eXBlKQogeworICAgIGlmICh0eXBlICE9IFdlYkNvcmU6OkZhdmljb24pCisgICAgICAgIHJldHVy
bjsKKwogICAgIFdlYlZpZXcqIHdlYlZpZXcgPSBtX3dlYkZyYW1lLT53ZWJWaWV3KCk7CiAgICAg
Q09NUHRyPElXZWJGcmFtZUxvYWREZWxlZ2F0ZVByaXZhdGU+IGZyYW1lTG9hZERlbGVnYXRlUHJp
djsKICAgICBpZiAoRkFJTEVEKHdlYlZpZXctPmZyYW1lTG9hZERlbGVnYXRlUHJpdmF0ZSgmZnJh
bWVMb2FkRGVsZWdhdGVQcml2KSkgfHwgIWZyYW1lTG9hZERlbGVnYXRlUHJpdikKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuaAkocmV2aXNpb24gODUxODcpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC03MCw3ICs3
MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbigp
OwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCk7CiAg
ICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFdlYkNvcmU6OlN0
cmluZ1dpdGhEaXJlY3Rpb24mKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VJ
Y29ucygpOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZUljb25zKFdlYkNvcmU6
Okljb25UeXBlKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDb21taXRMb2FkKCk7CiAg
ICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmluaXNoRG9jdW1lbnRMb2FkKCk7CiAgICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoRGlkRmluaXNoTG9hZCgpOwpJbmRleDogU291cmNlL1dlYktpdC93
aW5jZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW5jZS9DaGFuZ2VM
b2cJKHJldmlzaW9uIDg1MTg3KQorKysgU291cmNlL1dlYktpdC93aW5jZS9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAxMS0wNC0yMiAgVGFvIEJhaSAgPG1pY2hh
ZWxiYWlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFBvcHVsYXRlIHRvdWNoLWljb24gdXJsIHRvIEZyYW1lTG9hZGVyQ2xpZW50
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01OTE0Mwor
CisgICAgICAgIFJlc3BlY3QgdGhlIGludGVyZmFjZSBjaGFuZ2UgaW4gRnJhbWVMb2FkZXJDbGll
bnQuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFdpbkNFLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnRXaW5DRTo6ZGlzcGF0Y2hEaWRD
aGFuZ2VJY29ucyk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRX
aW5DRS5oOgorCiAyMDExLTA0LTIxICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgog
CiAgICAgICAgIFdpbkNFIGJ1aWxkIGZpeCBhZnRlciByODQ1NzQuCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V2luQ0UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJD
bGllbnRXaW5DRS5jcHAJKHJldmlzaW9uIDg1MTg3KQorKysgU291cmNlL1dlYktpdC93aW5jZS9X
ZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFdpbkNFLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzc2LDcgKzM3Niw3IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRXaW5DRTo6ZGlzcGF0Y2hE
aWQKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50V2lu
Q0U6OmRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoKQordm9pZCBGcmFtZUxvYWRlckNsaWVudFdpbkNF
OjpkaXNwYXRjaERpZENoYW5nZUljb25zKFdlYkNvcmU6Okljb25UeXBlKQogewogICAgIG5vdElt
cGxlbWVudGVkKCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0
L0ZyYW1lTG9hZGVyQ2xpZW50V2luQ0UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dp
bmNlL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V2luQ0UuaAkocmV2aXNpb24gODUx
ODcpCisrKyBTb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xp
ZW50V2luQ0UuaAkod29ya2luZyBjb3B5KQpAQCAtNzcsNyArNzcsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUljb24oKTsKICAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNw
YXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBXZWJDb3JlOjpTdHJpbmdXaXRoRGlyZWN0aW9uJik7
Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoKTsKKyAgICB2aXJ0dWFs
IHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucyhXZWJDb3JlOjpJY29uVHlwZSk7CiAgICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoRGlkQ29tbWl0TG9hZCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNw
YXRjaERpZEZhaWxQcm92aXNpb25hbExvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYp
OwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxMb2FkKGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlRXJyb3ImKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd3gvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvd3gvQ2hhbmdlTG9nCShyZXZpc2lvbiA4NTE4NykKKysrIFNv
dXJjZS9XZWJLaXQvd3gvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAK
KworMjAxMS0wNC0yMiAgVGFvIEJhaSAgPG1pY2hhZWxiYWlAY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBvcHVsYXRlIHRvdWNo
LWljb24gdXJsIHRvIEZyYW1lTG9hZGVyQ2xpZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD01OTE0MworCisgICAgICAgIFJlc3BlY3QgdGhlIGludGVy
ZmFjZSBjaGFuZ2UgaW4gRnJhbWVMb2FkZXJDbGllbnQuCisKKyAgICAgICAgKiBXZWJLaXRTdXBw
b3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2Fk
ZXJDbGllbnRXeDo6ZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucyk6CisgICAgICAgICogV2ViS2l0U3Vw
cG9ydC9GcmFtZUxvYWRlckNsaWVudFd4Lmg6CisKIDIwMTEtMDQtMjMgIEtldmluIE9sbGl2aWVy
ICA8a2V2aW5vQHRoZW9sbGl2aWVycy5jb20+CiAKICAgICAgICAgW3d4XSBVbnJldmlld2VkIGJ1
aWxkIGZpeC4gRml4ZWQgY2FwaXRhbGl6YXRpb24gZm9yIGNhc2Ugc2Vuc2l0aXZlIGZpbGVzeXN0
ZW1zLgpJbmRleDogU291cmNlL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xp
ZW50V3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9G
cmFtZUxvYWRlckNsaWVudFd4LmNwcAkocmV2aXNpb24gODUxODcpCisrKyBTb3VyY2UvV2ViS2l0
L3d4L1dlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMyNyw3ICszMjcsNyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50V3g6OmRpc3BhdGNoRGlk
RmluCiAgICAgfQogfQogCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50V3g6OmRpc3BhdGNoRGlkQ2hh
bmdlSWNvbnMoKQordm9pZCBGcmFtZUxvYWRlckNsaWVudFd4OjpkaXNwYXRjaERpZENoYW5nZUlj
b25zKFdlYkNvcmU6Okljb25UeXBlKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CkluZGV4
OiBTb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRlckNs
aWVudFd4LmgJKHJldmlzaW9uIDg1MTg3KQorKysgU291cmNlL1dlYktpdC93eC9XZWJLaXRTdXBw
b3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guaAkod29ya2luZyBjb3B5KQpAQCAtMTA5LDcgKzEwOSw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlk
RmluaXNoTG9hZCgpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGaXJzdExheW91
dCgpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGaXJzdFZpc3VhbGx5Tm9uRW1w
dHlMYXlvdXQoKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMo
KTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoV2ViQ29yZTo6
SWNvblR5cGUpOwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFNob3coKTsKICAgICAg
ICAgdmlydHVhbCB2b2lkIGNhbmNlbFBvbGljeUNoZWNrKCk7CkluZGV4OiBUb29scy9TY3JpcHRz
L2J1aWxkLXdlYmtpdAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL2J1aWxkLXdlYmtpdAko
cmV2aXNpb24gODUxODcpCisrKyBUb29scy9TY3JpcHRzL2J1aWxkLXdlYmtpdAkod29ya2luZyBj
b3B5KQpAQCAtMTExLDYgKzExMSw3IEBAIG15ICgKICAgICAkc3lzdGVtTWFsbG9jU3VwcG9ydCwK
ICAgICAkdGlsZWRCYWNraW5nU3RvcmVTdXBwb3J0LAogICAgICR0b3VjaEV2ZW50c1N1cHBvcnQs
CisgICAgJHRvdWNoSWNvbkxvYWRpbmdTdXBwb3J0LAogICAgICR2aWRlb1N1cHBvcnQsCiAgICAg
JHdjc3NTdXBwb3J0LAogICAgICR3ZWJBdWRpb1N1cHBvcnQsCkBAIC0yNzIsNiArMjczLDkgQEAg
bXkgQGZlYXR1cmVzID0gKAogICAgIHsgb3B0aW9uID0+ICJ0b3VjaC1ldmVudHMiLCBkZXNjID0+
ICJUb2dnbGUgVG91Y2ggRXZlbnRzIHN1cHBvcnQiLAogICAgICAgZGVmaW5lID0+ICJFTkFCTEVf
VE9VQ0hfRVZFTlRTIiwgZGVmYXVsdCA9PiBpc1F0KCksIHZhbHVlID0+IFwkdG91Y2hFdmVudHNT
dXBwb3J0IH0sCiAKKyAgICB7IG9wdGlvbiA9PiAidG91Y2gtaWNvbi1sb2FkaW5nIiwgZGVzYyA9
PiAiVG9nZ2xlIFRvdWNoIEljb24gTG9hZGluZyBTdXBwb3J0IiwKKyAgICAgIGRlZmluZSA9PiAi
RU5BQkxFX1RPVUNIX0lDT05fTE9BRElORyIsIGRlZmF1bHQgPT4gMCwgdmFsdWUgPT4gXCR0b3Vj
aEljb25Mb2FkaW5nU3VwcG9ydCB9LAorCiAgICAgeyBvcHRpb24gPT4gInZpZGVvIiwgZGVzYyA9
PiAiVG9nZ2xlIFZpZGVvIHN1cHBvcnQiLAogICAgICAgZGVmaW5lID0+ICJFTkFCTEVfVklERU8i
LCBkZWZhdWx0ID0+IChpc0FwcGxlV2ViS2l0KCkgfHwgaXNHdGsoKSksIHZhbHVlID0+IFwkdmlk
ZW9TdXBwb3J0IH0sCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>92082</attachid>
            <date>2011-05-03 09:09:57 -0700</date>
            <delta_ts>2011-05-03 13:07:10 -0700</delta_ts>
            <desc>Remove the chromium implementation, make patch a little smaller and easy to review.</desc>
            <filename>patch.6</filename>
            <type>text/plain</type>
            <size>52279</size>
            <attacher>michaelbai</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg1NjA0KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDcgQEAKKzIwMTEtMDQtMjIgIFRhbyBCYWkg
IDxtaWNoYWVsYmFpQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBQb3B1bGF0ZSB0b3VjaC1pY29uIHVybCB0byBGcmFtZUxvYWRl
ckNsaWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NTkxNDMKKyAgICAgICAgCisgICAgICAgIFBhcnNlZCBhbmQgcG9wdWxhdGVkIGFwcGxlLXRvdWNo
LWljb24gdXJsIHRvIEZyYW1lTG9hZGVyQ2xpZW50LgorICAgICAgICBDaGFuZ2VkIGZhdmljb24g
dG8gYmUgYSB0eXBlIG9mIGljb24uCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmNvbnZlcnRJY29uVHlwZVRvSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6
Omljb25VUkwpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnNldEljb25VUkwpOgorICAg
ICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAqIGRvbS9JY29uVVJMLmg6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6SWNvblVSTDo6SWNvblVSTCk6CisgICAgICAgICogaHRtbC9IVE1M
TGlua0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTExpbmtFbGVtZW50Ojp0b2tl
bml6ZVJlbEF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6OnBy
b2Nlc3MpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTExpbmtFbGVtZW50OjphZGRTdWJyZXNvdXJj
ZUF0dHJpYnV0ZVVSTHMpOgorICAgICAgICAqIGh0bWwvSFRNTExpbmtFbGVtZW50Lmg6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6OlJlbEF0dHJpYnV0ZTo6UmVsQXR0cmlidXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxMaW5rRWxlbWVudDo6aXNFbmFibGVkVmlhU2NyaXB0
KToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTE5hbWVzOjpQcmVsb2FkVGFzazo6cmVsQXR0cmlidXRlSXNTdHlsZVNo
ZWV0KToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Y29udmVydEljb25UeXBlVG9JbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dExvYWRlcjo6aWNvblVSTCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6c2V0
SWNvblVSTCk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmg6CisgICAgICAgICog
bG9hZGVyL0VtcHR5Q2xpZW50cy5oOgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlGcmFtZUxvYWRl
ckNsaWVudDo6ZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucyk6CisgICAgICAgICogbG9hZGVyL0ZyYW1l
TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjppY29uVVJMKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjppY29uVVJMcyk6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZUxvYWRlcjo6ZmlsbEljb25VUkwpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2Fk
ZXI6OmdldERlZmF1bHRJY29uVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpz
ZXRJY29uVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpkaWRDaGFuZ2VJY29u
cyk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0Zy
YW1lTG9hZGVyQ2xpZW50Lmg6CisKIDIwMTEtMDUtMDIgIEFkYW0gUm9iZW4gIDxhcm9iZW5AYXBw
bGUuY29tPgogCiAgICAgICAgIFRha2UgYWR2YW50YWdlIG9mIGltcGxpY2l0IGNvbnZlcnNpb24g
ZnJvbSBudWxscHRyX3QgdG8gUGFzc093blB0cgpAQCAtNzEwNyw2ICs3MTUxLDcgQEAKICAgICAg
ICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CiAgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnJl
c2V0U2Nyb2xsYmFyc0FuZENsZWFyQ29udGVudHNTaXplKToKIAorPj4+Pj4+PiAucjg0OTE3CiAy
MDExLTA0LTIyICBKb3NlcGggUGVjb3Jhcm8gIDxqb2VwZWNrQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgS2VudCBUYW11cmEuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9HTlVtYWtl
ZmlsZS5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQkocmV2
aXNpb24gODU2MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQkod29ya2luZyBj
b3B5KQpAQCAtMjYxLDYgKzI2MSwxNiBAQCB3ZWJjb3JlX2J1aWx0X3NvdXJjZXMgKz0gXAogZW5k
aWYgIyBFTkQgRU5BQkxFX1FVT1RBCiAKICMgLS0tLQorIyBUb3VjaCBJY29uIExvYWRpbmcKKyMg
LS0tLQoraWYgRU5BQkxFX1RPVUNIX0lDT05fTE9BRElORworRkVBVFVSRV9ERUZJTkVTICs9IEVO
QUJMRV9UT1VDSF9JQ09OX0xPQURJTkc9MQord2ViY29yZV9jcHBmbGFncyArPSAtREVOQUJMRV9U
T1VDSF9JQ09OX0xPQURJTkc9MQorZWxzZQord2ViY29yZV9jcHBmbGFncyArPSAtREVOQUJMRV9U
T1VDSF9JQ09OX0xPQURJTkc9MAorZW5kaWYgIyBFTkQgRU5BQkxFX1RPVUNIX0lDT05fTE9BRElO
RworCisjIC0tLS0KICMgU3BlZWNoIElucHV0IEFQSSBzdXBwb3J0CiAjIC0tLS0KIGlmIEVOQUJM
RV9JTlBVVF9TUEVFQ0gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2ZlYXR1cmVzLnByaQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9mZWF0dXJlcy5wcmkJKHJldmlzaW9uIDg1NjA0KQorKysg
U291cmNlL1dlYkNvcmUvZmVhdHVyZXMucHJpCSh3b3JraW5nIGNvcHkpCkBAIC03NSw2ICs3NSw3
IEBAIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9TSU5HTEVfVEhSRUFERUQKICFjb250YWlucyhE
RUZJTkVTLCBFTkFCTEVfV0VCR0w9Lik6IERFRklORVMgKz0gRU5BQkxFX1dFQkdMPTAKICFjb250
YWlucyhERUZJTkVTLCBFTkFCTEVfTUVESUFfU1RBVElTVElDUz0uKTogREVGSU5FUyArPSBFTkFC
TEVfTUVESUFfU1RBVElTVElDUz0wCiAhY29udGFpbnMoREVGSU5FUywgRU5BQkxFX1ZJREVPX1RS
QUNLPS4pOiBERUZJTkVTICs9IEVOQUJMRV9WSURFT19UUkFDSz0wCishY29udGFpbnMoREVGSU5F
UywgRU5BQkxFX1RPVUNIX0lDT05fTE9BRElORz0uKTogREVGSU5FUyArPSBFTkFCTEVfVE9VQ0hf
SUNPTl9MT0FESU5HPTAKICFjb250YWlucyhERUZJTkVTLCBFTkFCTEVfQU5JTUFUSU9OX0FQST0u
KTogREVGSU5FUyArPSBFTkFCTEVfQU5JTUFUSU9OX0FQST0wCiAKICMgU1ZHIHN1cHBvcnQKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmln
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZp
bmVzLnhjY29uZmlnCShyZXZpc2lvbiA4NTYwNCkKKysrIFNvdXJjZS9XZWJDb3JlL0NvbmZpZ3Vy
YXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCSh3b3JraW5nIGNvcHkpCkBAIC0xMTcsNiAr
MTE3LDggQEAgRU5BQkxFX1ZJREVPX1RSQUNLID0gOwogCiBFTkFCTEVfTUVESUFfU1RBVElTVElD
UyA9IDsKIAorRU5BQkxFX1RPVUNIX0lDT05fTE9BRElORyA9IDsKKwogRU5BQkxFX1dFQl9BVURJ
TyA9IDsKIAogRU5BQkxFX1dFQl9TT0NLRVRTID0gJChFTkFCTEVfV0VCX1NPQ0tFVFNfJChSRUFM
X1BMQVRGT1JNX05BTUUpKTsKQEAgLTEzMSw0ICsxMzMsNCBAQCBFTkFCTEVfWEhUTUxNUCA9IDsK
IEVOQUJMRV9YUEFUSCA9IEVOQUJMRV9YUEFUSDsKIEVOQUJMRV9YU0xUID0gRU5BQkxFX1hTTFQ7
CiAKLUZFQVRVUkVfREVGSU5FUyA9ICQoRU5BQkxFX0xJTktfUFJFRkVUQ0gpICQoRU5BQkxFX0FD
Q0VMRVJBVEVEXzJEX0NBTlZBUykgJChFTkFCTEVfV0VCR0wpICQoRU5BQkxFXzNEX1JFTkRFUklO
RykgJChFTkFCTEVfQU5JTUFUSU9OX0FQSSkgJChFTkFCTEVfQkxPQikgJChFTkFCTEVfQ0hBTk5F
TF9NRVNTQUdJTkcpICQoRU5BQkxFX0NMSUVOVF9CQVNFRF9HRU9MT0NBVElPTikgJChFTkFCTEVf
REFUQUJBU0UpICQoRU5BQkxFX0RBVEFMSVNUKSAkKEVOQUJMRV9EQVRBX1RSQU5TRkVSX0lURU1T
KSAkKEVOQUJMRV9ERVRBSUxTKSAkKEVOQUJMRV9ERVZJQ0VfT1JJRU5UQVRJT04pICQoRU5BQkxF
X0RJUkVDVE9SWV9VUExPQUQpICQoRU5BQkxFX0RPTV9TVE9SQUdFKSAkKEVOQUJMRV9FVkVOVFNP
VVJDRSkgJChFTkFCTEVfRklMVEVSUykgJChFTkFCTEVfRklMRV9TWVNURU0pICQoRU5BQkxFX0ZV
TExTQ1JFRU5fQVBJKSAkKEVOQUJMRV9HRU9MT0NBVElPTikgJChFTkFCTEVfSUNPTkRBVEFCQVNF
KSAkKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFKSAkKEVOQUJMRV9JTlBVVF9TUEVFQ0gpICQoRU5B
QkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIpICQoRU5BQkxFX01BVEhNTCkgJChFTkFCTEVfTUVURVJf
VEFHKSAkKEVOQUJMRV9OT1RJRklDQVRJT05TKSAkKEVOQUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNB
VElPTlMpICQoRU5BQkxFX1BBR0VfVklTSUJJTElUWV9BUEkpICQoRU5BQkxFX1BST0dSRVNTX1RB
RykgJChFTkFCTEVfUkVHSVNURVJfUFJPVE9DT0xfSEFORExFUikgJChFTkFCTEVfUVVPVEEpICQo
RU5BQkxFX1NIQVJFRF9XT1JLRVJTKSAkKEVOQUJMRV9TVkcpICQoRU5BQkxFX1NWR19BTklNQVRJ
T04pICQoRU5BQkxFX1NWR19BU19JTUFHRSkgJChFTkFCTEVfU1ZHX0RPTV9PQkpDX0JJTkRJTkdT
KSAkKEVOQUJMRV9TVkdfRk9OVFMpICQoRU5BQkxFX1NWR19GT1JFSUdOX09CSkVDVCkgJChFTkFC
TEVfU1ZHX1VTRSkgJChFTkFCTEVfVklERU8pICQoRU5BQkxFX1ZJREVPX1RSQUNLKSAkKEVOQUJM
RV9NRURJQV9TVEFUSVNUSUNTKSAkKEVOQUJMRV9XRUJfQVVESU8pICQoRU5BQkxFX1dFQl9TT0NL
RVRTKSAkKEVOQUJMRV9XRUJfVElNSU5HKSAkKEVOQUJMRV9XT1JLRVJTKSAkKEVOQUJMRV9YSFRN
TE1QKSAkKEVOQUJMRV9YUEFUSCkgJChFTkFCTEVfWFNMVCk7CitGRUFUVVJFX0RFRklORVMgPSAk
KEVOQUJMRV9MSU5LX1BSRUZFVENIKSAkKEVOQUJMRV9BQ0NFTEVSQVRFRF8yRF9DQU5WQVMpICQo
RU5BQkxFX1dFQkdMKSAkKEVOQUJMRV8zRF9SRU5ERVJJTkcpICQoRU5BQkxFX0FOSU1BVElPTl9B
UEkpICQoRU5BQkxFX0JMT0IpICQoRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HKSAkKEVOQUJMRV9D
TElFTlRfQkFTRURfR0VPTE9DQVRJT04pICQoRU5BQkxFX0RBVEFCQVNFKSAkKEVOQUJMRV9EQVRB
TElTVCkgJChFTkFCTEVfREFUQV9UUkFOU0ZFUl9JVEVNUykgJChFTkFCTEVfREVUQUlMUykgJChF
TkFCTEVfREVWSUNFX09SSUVOVEFUSU9OKSAkKEVOQUJMRV9ESVJFQ1RPUllfVVBMT0FEKSAkKEVO
QUJMRV9ET01fU1RPUkFHRSkgJChFTkFCTEVfRVZFTlRTT1VSQ0UpICQoRU5BQkxFX0ZJTFRFUlMp
ICQoRU5BQkxFX0ZJTEVfU1lTVEVNKSAkKEVOQUJMRV9GVUxMU0NSRUVOX0FQSSkgJChFTkFCTEVf
R0VPTE9DQVRJT04pICQoRU5BQkxFX0lDT05EQVRBQkFTRSkgJChFTkFCTEVfSU5ERVhFRF9EQVRB
QkFTRSkgJChFTkFCTEVfSU5QVVRfU1BFRUNIKSAkKEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VS
KSAkKEVOQUJMRV9NQVRITUwpICQoRU5BQkxFX01FVEVSX1RBRykgJChFTkFCTEVfTk9USUZJQ0FU
SU9OUykgJChFTkFCTEVfT0ZGTElORV9XRUJfQVBQTElDQVRJT05TKSAkKEVOQUJMRV9QQUdFX1ZJ
U0lCSUxJVFlfQVBJKSAkKEVOQUJMRV9QUk9HUkVTU19UQUcpICQoRU5BQkxFX1JFR0lTVEVSX1BS
T1RPQ09MX0hBTkRMRVIpICQoRU5BQkxFX1FVT1RBKSAkKEVOQUJMRV9TSEFSRURfV09SS0VSUykg
JChFTkFCTEVfU1ZHKSAkKEVOQUJMRV9TVkdfQU5JTUFUSU9OKSAkKEVOQUJMRV9TVkdfQVNfSU1B
R0UpICQoRU5BQkxFX1NWR19ET01fT0JKQ19CSU5ESU5HUykgJChFTkFCTEVfU1ZHX0ZPTlRTKSAk
KEVOQUJMRV9TVkdfRk9SRUlHTl9PQkpFQ1QpICQoRU5BQkxFX1NWR19VU0UpICQoRU5BQkxFX1ZJ
REVPKSAkKEVOQUJMRV9WSURFT19UUkFDSykgJChFTkFCTEVfTUVESUFfU1RBVElTVElDUykgJChF
TkFCTEVfV0VCX0FVRElPKSAkKEVOQUJMRV9XRUJfU09DS0VUUykgJChFTkFCTEVfV0VCX1RJTUlO
RykgJChFTkFCTEVfV09SS0VSUykgJChFTkFCTEVfWEhUTUxNUCkgJChFTkFCTEVfWFBBVEgpICQo
RU5BQkxFX1hTTFQpICQoRU5BQkxFX1RPVUNIX0lDT05fTE9BRElORyk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lv
biA4NTYwNCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtOTcwLDYgKzk3MCw3IEBACiAJCTQ0OUIxOUY1MEZBNzJF
Q0UwMDE1Q0E0QSAvKiBIVE1MUGFyc2VyUXVpcmtzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NDlCMTlGMzBGQTcyRUNFMDAxNUNBNEEgLyogSFRNTFBh
cnNlclF1aXJrcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTQ0QTI4QUFDMTJERkI4QUMwMEFFOTIzQiAvKiBNYXRoTUxFbGVtZW50RmFjdG9yeS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDRBMjhBQUIx
MkRGQjhBQzAwQUU5MjNCIC8qIE1hdGhNTEVsZW1lbnRGYWN0b3J5LmggKi87IH07CiAJCTQ0QTI4
QUFGMTJERkI4QkYwMEFFOTIzQiAvKiBNYXRoTUxOYW1lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDRBMjhBQUUxMkRGQjhCRjAwQUU5MjNCIC8qIE1h
dGhNTE5hbWVzLmggKi87IH07CisJCTQ1QkFDMkIwMTM2MEJCQUIwMDVEQTI1OCAvKiBJY29uVVJM
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NUJBQzJB
RjEzNjBCQkFCMDA1REEyNTggLyogSWNvblVSTC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2MTRBMUZFMEIyM0E4RDYwMDQ0NkUxQyAvKiBjb3B5
Q3Vyc29yLnBuZyBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDYxNEExRkQwQjIzQThENjAwNDQ2RTFDIC8qIGNvcHlDdXJzb3IucG5nICovOyB9OwogCQk0
NjRFQTI3MzBCOEEzNTBCMDBBOEU2RTMgLyogY3Jvc3NIYWlyQ3Vyc29yLnBuZyBpbiBSZXNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY0RUEyNzEwQjhBMzUwQjAw
QThFNkUzIC8qIGNyb3NzSGFpckN1cnNvci5wbmcgKi87IH07CiAJCTQ2NEVBMjc0MEI4QTM1MEIw
MEE4RTZFMyAvKiBub3RBbGxvd2VkQ3Vyc29yLnBuZyBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY0RUEyNzIwQjhBMzUwQjAwQThFNkUzIC8qIG5vdEFs
bG93ZWRDdXJzb3IucG5nICovOyB9OwpAQCAtNzQzNiw2ICs3NDM3LDcgQEAKIAkJNDQ5QjE5RjMw
RkE3MkVDRTAwMTVDQTRBIC8qIEhUTUxQYXJzZXJRdWlya3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSFRNTFBhcnNlclF1aXJrcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0NEEyOEFBQjEyREZCOEFDMDBBRTkyM0IgLyogTWF0aE1MRWxlbWVudEZhY3Rvcnku
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWF0aE1MRWxlbWVudEZhY3Rvcnku
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDRBMjhBQUUxMkRGQjhCRjAwQUU5MjNC
IC8qIE1hdGhNTE5hbWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hdGhN
TE5hbWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ1QkFDMkFGMTM2MEJCQUIw
MDVEQTI1OCAvKiBJY29uVVJMLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IElj
b25VUkwuaDsgcGF0aCA9IGRvbS9JY29uVVJMLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQ2MTRBMUZEMEIyM0E4RDYwMDQ0NkUxQyAvKiBjb3B5Q3Vyc29yLnBuZyAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGltYWdlLnBuZzsgcGF0aCA9
IGNvcHlDdXJzb3IucG5nOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjRFQTI3MTBC
OEEzNTBCMDBBOEU2RTMgLyogY3Jvc3NIYWlyQ3Vyc29yLnBuZyAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGltYWdlLnBuZzsgcGF0aCA9IGNyb3NzSGFp
ckN1cnNvci5wbmc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2NEVBMjcyMEI4QTM1
MEIwMEE4RTZFMyAvKiBub3RBbGxvd2VkQ3Vyc29yLnBuZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGltYWdlLnBuZzsgcGF0aCA9IG5vdEFsbG93ZWRD
dXJzb3IucG5nOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTI1MTcsNiArMTI1MTks
NyBAQAogCQkwODY3RDY5MUZFODQwMjhGQzAyQUFDMDcgLyogV2ViS2l0ICovID0gewogCQkJaXNh
ID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk0NUJBQzJBRjEzNjBCQkFCMDA1REEy
NTggLyogSWNvblVSTC5oICovLAogCQkJCTY1Qzk3QUYyMDhFQTkwODgwMEFDRDI3MyAvKiBjb25m
aWcuaCAqLywKIAkJCQlFREVDOTgwMjBBRUQ3RTE3MDA1OTEzN0YgLyogV2ViQ29yZVByZWZpeC5o
ICovLAogCQkJCTkzMDcwNjEzMDlFMENBODIwMEIxN0ZFNCAvKiBEZXJpdmVkU291cmNlcy5tYWtl
ICovLApAQCAtMjI3MDIsNiArMjI3MDUsNyBAQAogCQkJCTkzRjE5OUVEMDgyNDVFNTkwMDFFOUFC
QyAvKiBYU0xUUHJvY2Vzc29yLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMUJFNTEyRTBDRjZDNTEy
MDAyRUE5NTkgLyogWFNMVFVuaWNvZGVTb3J0LmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzdFMkUw
RjEyRjBGQzlDMDBDMTMzNzkgLyogWFNTRmlsdGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk0NUJB
QzJCMDEzNjBCQkFCMDA1REEyNTggLyogSWNvblVSTC5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwog
CQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5jcHAJKHJldmlzaW9uIDg1NjA0KQorKysgU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzM3LDYgKzMzNywyOCBAQCBzdGF0
aWMgYm9vbCBkaXNhYmxlUmFuZ2VNdXRhdGlvbihQYWdlKiBwCiAjZW5kaWYKIH0KIAorLy8gUmV0
dXJucyB0aGUgaW5kZXggb2YgdGhlIGdpdmVuIHR5cGUsIDAgaXMgcmV0dXJuZWQgaWYgdGhlIHR5
cGUgaXMgaW52YWxpZC4KK3N0YXRpYyBzaXplX3QgZ2V0SWNvbkluZGV4KEljb25UeXBlIHR5cGUp
Cit7CisgICAgc2l6ZV90IGluZGV4ID0gMDsKKyAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNl
IEZhdmljb246CisgICAgICAgIGluZGV4ID0gMDsKKyAgICAgICAgYnJlYWs7CisjaWYgRU5BQkxF
KFRPVUNIX0lDT05fTE9BRElORykKKyAgICBjYXNlIFRvdWNoUHJlY29tcG9zZWRJY29uOgorICAg
ICAgICBpbmRleCA9IDE7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVG91Y2hJY29uOgorICAg
ICAgICBpbmRleCA9IDI7CisgICAgICAgIGJyZWFrOworI2VuZGlmCisgICAgZGVmYXVsdDoKKyAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorICAgIHJldHVybiBpbmRleDsKK30K
Kwogc3RhdGljIEhhc2hTZXQ8RG9jdW1lbnQqPiogZG9jdW1lbnRzVGhhdE5lZWRTdHlsZVJlY2Fs
YyA9IDA7CiAKIGNsYXNzIERvY3VtZW50V2Vha1JlZmVyZW5jZSA6IHB1YmxpYyBUaHJlYWRTYWZl
UmVmQ291bnRlZDxEb2N1bWVudFdlYWtSZWZlcmVuY2U+IHsKQEAgLTQzNjYsMTUgKzQzODgsMjYg
QEAgdW5zaWduZWQgRm9ybUVsZW1lbnRLZXlIYXNoOjpoYXNoKGNvbnN0IAogICAgIHJldHVybiBT
dHJpbmdIYXNoZXI6Omhhc2hNZW1vcnk8c2l6ZW9mKEZvcm1FbGVtZW50S2V5KT4oJmtleSk7CiB9
CiAKLXZvaWQgRG9jdW1lbnQ6OnNldEljb25VUkwoY29uc3QgU3RyaW5nJiBpY29uVVJMLCBjb25z
dCBTdHJpbmcmIHR5cGUpCitJY29uVVJMIERvY3VtZW50OjppY29uVVJMKEljb25UeXBlIGljb25U
eXBlKSBjb25zdAoreworICAgIHJldHVybiBtX2ljb25VUkxzW2dldEljb25JbmRleChpY29uVHlw
ZSldOworfQorCit2b2lkIERvY3VtZW50OjpzZXRJY29uVVJMKGNvbnN0IFN0cmluZyYgdXJsLCBj
b25zdCBTdHJpbmcmIG1pbWVUeXBlLCBJY29uVHlwZSBpY29uVHlwZSkKIHsKLSAgICAvLyBGSVhN
RSAtIDxyZGFyOi8vcHJvYmxlbS80NzI3NjQ1PiAtIEF0IHNvbWUgcG9pbnQgaW4gdGhlIGZ1dHVy
ZSwgd2UgbWlnaHQgYWN0dWFsbHkgaG9ub3IgdGhlICJ0eXBlIiAKLSAgICBpZiAobV9pY29uVVJM
LmlzRW1wdHkoKSkKLSAgICAgICAgbV9pY29uVVJMID0gaWNvblVSTDsKLSAgICBlbHNlIGlmICgh
dHlwZS5pc0VtcHR5KCkpCi0gICAgICAgIG1faWNvblVSTCA9IGljb25VUkw7CisgICAgLy8gRklY
TUUgLSA8cmRhcjovL3Byb2JsZW0vNDcyNzY0NT4gLSBBdCBzb21lIHBvaW50IGluIHRoZSBmdXR1
cmUsIHdlIG1pZ2h0IGFjdHVhbGx5IGhvbm9yIHRoZSAibWltZVR5cGUiCisgICAgSWNvblVSTCBu
ZXdVUkwoS1VSTChQYXJzZWRVUkxTdHJpbmcsIHVybCksIGljb25UeXBlKTsKKyAgICBpZiAoIWlj
b25VUkwoaWNvblR5cGUpLm1faWNvblVSTC5pc1ZhbGlkKCkpCisgICAgICAgIHNldEljb25VUkwo
bmV3VVJMKTsKKyAgICBlbHNlIGlmICghbWltZVR5cGUuaXNFbXB0eSgpKQorICAgICAgICBzZXRJ
Y29uVVJMKG5ld1VSTCk7CiAgICAgaWYgKEZyYW1lKiBmID0gZnJhbWUoKSkKLSAgICAgICAgZi0+
bG9hZGVyKCktPnNldEljb25VUkwobV9pY29uVVJMKTsKKyAgICAgICAgZi0+bG9hZGVyKCktPnNl
dEljb25VUkwobmV3VVJMKTsKK30KKwordm9pZCBEb2N1bWVudDo6c2V0SWNvblVSTChjb25zdCBJ
Y29uVVJMJiBpY29uVVJMKQoreworICAgIG1faWNvblVSTHNbZ2V0SWNvbkluZGV4KGljb25VUkwu
bV9pY29uVHlwZSldID0gaWNvblVSTDsKIH0KIAogdm9pZCBEb2N1bWVudDo6cmVnaXN0ZXJGb3Jt
RWxlbWVudFdpdGhGb3JtQXR0cmlidXRlKEZvcm1Bc3NvY2lhdGVkRWxlbWVudCogZWxlbWVudCkK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCShyZXZpc2lvbiA4NTYwNCkKKysrIFNvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBACiAjaW5j
bHVkZSAiQ29sb3IuaCIKICNpbmNsdWRlICJET01UaW1lU3RhbXAuaCIKICNpbmNsdWRlICJEb2N1
bWVudFRpbWluZy5oIgorI2luY2x1ZGUgIkljb25VUkwuaCIKICNpbmNsdWRlICJRdWFsaWZpZWRO
YW1lLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIlN0
cmluZ1dpdGhEaXJlY3Rpb24uaCIKQEAgLTkxNyw4ICs5MTgsOSBAQCBwdWJsaWM6CiAgICAgCiAg
ICAgdm9pZCBzZXRIYXNOb2Rlc1dpdGhQbGFjZWhvbGRlclN0eWxlKCkgeyBtX2hhc05vZGVzV2l0
aFBsYWNlaG9sZGVyU3R5bGUgPSB0cnVlOyB9CiAKLSAgICBjb25zdCBTdHJpbmcmIGljb25VUkwo
KSBjb25zdCB7IHJldHVybiBtX2ljb25VUkw7IH0KLSAgICB2b2lkIHNldEljb25VUkwoY29uc3Qg
U3RyaW5nJiBpY29uVVJMLCBjb25zdCBTdHJpbmcmIHR5cGUpOworICAgIEljb25VUkwgaWNvblVS
TChJY29uVHlwZSkgY29uc3Q7CisgICAgdm9pZCBzZXRJY29uVVJMKGNvbnN0IFN0cmluZyYsIGNv
bnN0IFN0cmluZyYsIEljb25UeXBlKTsKKyAgICB2b2lkIHNldEljb25VUkwoY29uc3QgSWNvblVS
TCYpOwogCiAgICAgdm9pZCBzZXRVc2VTZWN1cmVLZXlib2FyZEVudHJ5V2hlbkFjdGl2ZShib29s
KTsKICAgICBib29sIHVzZVNlY3VyZUtleWJvYXJkRW50cnlXaGVuQWN0aXZlKCkgY29uc3Q7CkBA
IC0xMzI0LDggKzEzMjYsOCBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBtX2NyZWF0ZVJlbmRlcmVy
czsKICAgICBib29sIG1faW5QYWdlQ2FjaGU7Ci0gICAgU3RyaW5nIG1faWNvblVSTDsKLSAgICAK
KyAgICBJY29uVVJMIG1faWNvblVSTHNbSUNPTl9DT1VOVF07CisKICAgICBIYXNoU2V0PEVsZW1l
bnQqPiBtX2RvY3VtZW50QWN0aXZhdGlvbkNhbGxiYWNrRWxlbWVudHM7CiAgICAgSGFzaFNldDxF
bGVtZW50Kj4gbV9tZWRpYVZvbHVtZUNhbGxiYWNrRWxlbWVudHM7CiAgICAgSGFzaFNldDxFbGVt
ZW50Kj4gbV9wcml2YXRlQnJvd3NpbmdTdGF0ZUNoYW5nZWRFbGVtZW50czsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2RvbS9JY29uVVJMLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9t
L0ljb25VUkwuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9JY29uVVJMLmgJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICog
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEljb25VUkxfaAorI2RlZmluZSBJ
Y29uVVJMX2gKKworI2luY2x1ZGUgIktVUkwuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisj
aWYgRU5BQkxFKFRPVUNIX0lDT05fTE9BRElORykKKyNkZWZpbmUgSUNPTl9DT1VOVCAzCisjZWxz
ZQorI2RlZmluZSBJQ09OX0NPVU5UIDEKKyNlbmRpZgorCitlbnVtIEljb25UeXBlIHsKKyAgICBJ
bnZhbGlkSWNvbiA9IDAsCisgICAgRmF2aWNvbiA9IDEsCisgICAgVG91Y2hJY29uID0gMSA8PCAx
LAorICAgIFRvdWNoUHJlY29tcG9zZWRJY29uID0gMSA8PCAyCit9OworCitzdHJ1Y3QgSWNvblVS
TCB7CisgICAgSWNvblR5cGUgbV9pY29uVHlwZTsKKyAgICBLVVJMIG1faWNvblVSTDsKKworICAg
IEljb25VUkwoKQorICAgICAgICA6IG1faWNvblR5cGUoSW52YWxpZEljb24pCisgICAgeworICAg
IH0KKworICAgIEljb25VUkwoY29uc3QgS1VSTCYgdXJsLCBJY29uVHlwZSB0eXBlKQorICAgICAg
ICA6IG1faWNvblR5cGUodHlwZSkKKyAgICAgICAgLCBtX2ljb25VUkwodXJsKQorICAgIHsKKyAg
ICB9Cit9OworCit9CisKKyNlbmRpZiAvLyBJY29uVVJMX2gKClByb3BlcnR5IGNoYW5nZXMgb246
IFNvdXJjZS9XZWJDb3JlL2RvbS9JY29uVVJMLmgKX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmVvbC1z
dHlsZQogICArIExGCgpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNw
cAkocmV2aXNpb24gODU2MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2MCw3ICsxNjAsNyBAQCB2b2lkIEhUTUxMaW5rRWxl
bWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1CiB2b2lkIEhUTUxMaW5rRWxlbWVudDo6dG9rZW5pemVS
ZWxBdHRyaWJ1dGUoY29uc3QgQXRvbWljU3RyaW5nJiByZWwsIFJlbEF0dHJpYnV0ZSYgcmVsQXR0
cmlidXRlKQogewogICAgIHJlbEF0dHJpYnV0ZS5tX2lzU3R5bGVTaGVldCA9IGZhbHNlOwotICAg
IHJlbEF0dHJpYnV0ZS5tX2lzSWNvbiA9IGZhbHNlOworICAgIHJlbEF0dHJpYnV0ZS5tX2ljb25U
eXBlID0gSW52YWxpZEljb247CiAgICAgcmVsQXR0cmlidXRlLm1faXNBbHRlcm5hdGUgPSBmYWxz
ZTsKICAgICByZWxBdHRyaWJ1dGUubV9pc0ROU1ByZWZldGNoID0gZmFsc2U7CiAjaWYgRU5BQkxF
KExJTktfUFJFRkVUQ0gpCkBAIC0xNzAsNyArMTcwLDEzIEBAIHZvaWQgSFRNTExpbmtFbGVtZW50
Ojp0b2tlbml6ZVJlbEF0dHJpYnUKICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UocmVsLCAic3R5
bGVzaGVldCIpKQogICAgICAgICByZWxBdHRyaWJ1dGUubV9pc1N0eWxlU2hlZXQgPSB0cnVlOwog
ICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHJlbCwgImljb24iKSB8fCBlcXVhbElnbm9y
aW5nQ2FzZShyZWwsICJzaG9ydGN1dCBpY29uIikpCi0gICAgICAgIHJlbEF0dHJpYnV0ZS5tX2lz
SWNvbiA9IHRydWU7CisgICAgICAgIHJlbEF0dHJpYnV0ZS5tX2ljb25UeXBlID0gRmF2aWNvbjsK
KyNpZiBFTkFCTEUoVE9VQ0hfSUNPTl9MT0FESU5HKQorICAgIGVsc2UgaWYgKGVxdWFsSWdub3Jp
bmdDYXNlKHJlbCwgImFwcGxlLXRvdWNoLWljb24iKSkKKyAgICAgICAgcmVsQXR0cmlidXRlLm1f
aWNvblR5cGUgPSBUb3VjaEljb247CisgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UocmVs
LCAiYXBwbGUtdG91Y2gtaWNvbi1wcmVjb21wb3NlZCIpKQorICAgICAgICByZWxBdHRyaWJ1dGUu
bV9pY29uVHlwZSA9IFRvdWNoUHJlY29tcG9zZWRJY29uOworI2VuZGlmCiAgICAgZWxzZSBpZiAo
ZXF1YWxJZ25vcmluZ0Nhc2UocmVsLCAiZG5zLXByZWZldGNoIikpCiAgICAgICAgIHJlbEF0dHJp
YnV0ZS5tX2lzRE5TUHJlZmV0Y2ggPSB0cnVlOwogICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdD
YXNlKHJlbCwgImFsdGVybmF0ZSBzdHlsZXNoZWV0IikgfHwgZXF1YWxJZ25vcmluZ0Nhc2UocmVs
LCAic3R5bGVzaGVldCBhbHRlcm5hdGUiKSkgewpAQCAtMTg5LDcgKzE5NSwxMyBAQCB2b2lkIEhU
TUxMaW5rRWxlbWVudDo6dG9rZW5pemVSZWxBdHRyaWJ1CiAgICAgICAgICAgICBlbHNlIGlmIChl
cXVhbElnbm9yaW5nQ2FzZSgqaXQsICJhbHRlcm5hdGUiKSkKICAgICAgICAgICAgICAgICByZWxB
dHRyaWJ1dGUubV9pc0FsdGVybmF0ZSA9IHRydWU7CiAgICAgICAgICAgICBlbHNlIGlmIChlcXVh
bElnbm9yaW5nQ2FzZSgqaXQsICJpY29uIikpCi0gICAgICAgICAgICAgICAgcmVsQXR0cmlidXRl
Lm1faXNJY29uID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICByZWxBdHRyaWJ1dGUubV9pY29uVHlw
ZSA9IEZhdmljb247CisjaWYgRU5BQkxFKFRPVUNIX0lDT05fTE9BRElORykKKyAgICAgICAgICAg
IGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKCppdCwgImFwcGxlLXRvdWNoLWljb24iKSkKKyAg
ICAgICAgICAgICAgICByZWxBdHRyaWJ1dGUubV9pY29uVHlwZSA9IFRvdWNoSWNvbjsKKyAgICAg
ICAgICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKCppdCwgImFwcGxlLXRvdWNoLWljb24t
cHJlY29tcG9zZWQiKSkKKyAgICAgICAgICAgICAgICByZWxBdHRyaWJ1dGUubV9pY29uVHlwZSA9
IFRvdWNoUHJlY29tcG9zZWRJY29uOworI2VuZGlmCiAjaWYgRU5BQkxFKExJTktfUFJFRkVUQ0gp
CiAgICAgICAgICAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZSgqaXQsICJwcmVmZXRjaCIp
KQogICAgICAgICAgICAgICByZWxBdHRyaWJ1dGUubV9pc0xpbmtQcmVmZXRjaCA9IHRydWU7CkBA
IC0yMjIsMTAgKzIzNCwxMCBAQCB2b2lkIEhUTUxMaW5rRWxlbWVudDo6cHJvY2VzcygpCiAKICAg
ICAvLyBJRSBleHRlbnNpb246IGxvY2F0aW9uIG9mIHNtYWxsIGljb24gZm9yIGxvY2F0aW9uYmFy
IC8gYm9va21hcmtzCiAgICAgLy8gV2UnbGwgcmVjb3JkIHRoaXMgVVJMIHBlciBkb2N1bWVudCwg
ZXZlbiBpZiB3ZSBsYXRlciBvbmx5IHVzZSBpdCBpbiB0b3AgbGV2ZWwgZnJhbWVzCi0gICAgaWYg
KG1fcmVsQXR0cmlidXRlLm1faXNJY29uICYmIG1fdXJsLmlzVmFsaWQoKSAmJiAhbV91cmwuaXNF
bXB0eSgpKSB7CisgICAgaWYgKG1fcmVsQXR0cmlidXRlLm1faWNvblR5cGUgIT0gSW52YWxpZElj
b24gJiYgbV91cmwuaXNWYWxpZCgpICYmICFtX3VybC5pc0VtcHR5KCkpIHsKICAgICAgICAgaWYg
KCFjaGVja0JlZm9yZUxvYWRFdmVudCgpKSAKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
ZG9jdW1lbnQoKS0+c2V0SWNvblVSTChtX3VybC5zdHJpbmcoKSwgdHlwZSk7CisgICAgICAgIGRv
Y3VtZW50KCktPnNldEljb25VUkwobV91cmwuc3RyaW5nKCksIHR5cGUsIG1fcmVsQXR0cmlidXRl
Lm1faWNvblR5cGUpOwogICAgIH0KIAogICAgIGlmIChtX3JlbEF0dHJpYnV0ZS5tX2lzRE5TUHJl
ZmV0Y2gpIHsKQEAgLTQ3Myw3ICs0ODUsNyBAQCB2b2lkIEhUTUxMaW5rRWxlbWVudDo6YWRkU3Vi
cmVzb3VyY2VBdHRyCiAgICAgSFRNTEVsZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJM
cyh1cmxzKTsKIAogICAgIC8vIEZhdmljb25zIGFyZSBoYW5kbGVkIGJ5IGEgc3BlY2lhbCBjYXNl
IGluIExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZSgpCi0gICAgaWYgKG1fcmVsQXR0cmlidXRlLm1f
aXNJY29uKQorICAgIGlmIChtX3JlbEF0dHJpYnV0ZS5tX2ljb25UeXBlICE9IEludmFsaWRJY29u
KQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIW1fcmVsQXR0cmlidXRlLm1faXNTdHlsZVNo
ZWV0KQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5oCShyZXZpc2lvbiA4
NTYwNCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUNsaWVudC5o
IgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlSGFuZGxlLmgiCiAjaW5jbHVkZSAiSFRNTEVsZW1l
bnQuaCIKKyNpbmNsdWRlICJJY29uVVJMLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpAQCAtMzksNyArNDAsNyBAQCBjbGFzcyBIVE1MTGlua0VsZW1lbnQgOiBw
dWJsaWMgSFRNTEVsZW1lCiBwdWJsaWM6CiAgICAgc3RydWN0IFJlbEF0dHJpYnV0ZSB7CiAgICAg
ICAgIGJvb2wgbV9pc1N0eWxlU2hlZXQ7Ci0gICAgICAgIGJvb2wgbV9pc0ljb247CisgICAgICAg
IEljb25UeXBlIG1faWNvblR5cGU7CiAgICAgICAgIGJvb2wgbV9pc0FsdGVybmF0ZTsKICAgICAg
ICAgYm9vbCBtX2lzRE5TUHJlZmV0Y2g7CiAjaWYgRU5BQkxFKExJTktfUFJFRkVUQ0gpCkBAIC00
OSw3ICs1MCw3IEBAIHB1YmxpYzoKIAogICAgICAgICBSZWxBdHRyaWJ1dGUoKQogICAgICAgICAg
ICAgOiBtX2lzU3R5bGVTaGVldChmYWxzZSkKLSAgICAgICAgICAgICwgbV9pc0ljb24oZmFsc2Up
CisgICAgICAgICAgICAsIG1faWNvblR5cGUoSW52YWxpZEljb24pCiAgICAgICAgICAgICAsIG1f
aXNBbHRlcm5hdGUoZmFsc2UpCiAgICAgICAgICAgICAsIG1faXNETlNQcmVmZXRjaChmYWxzZSkK
ICNpZiBFTkFCTEUoTElOS19QUkVGRVRDSCkKQEAgLTc2LDcgKzc3LDYgQEAgcHVibGljOgogCiAg
ICAgYm9vbCBpc0Rpc2FibGVkKCkgY29uc3QgeyByZXR1cm4gbV9kaXNhYmxlZFN0YXRlID09IERp
c2FibGVkOyB9CiAgICAgYm9vbCBpc0VuYWJsZWRWaWFTY3JpcHQoKSBjb25zdCB7IHJldHVybiBt
X2Rpc2FibGVkU3RhdGUgPT0gRW5hYmxlZFZpYVNjcmlwdDsgfQotICAgIGJvb2wgaXNJY29uKCkg
Y29uc3QgeyByZXR1cm4gbV9yZWxBdHRyaWJ1dGUubV9pc0ljb247IH0KICAgICBib29sIGRpc2Fi
bGVkKCkgY29uc3Q7CiAgICAgdm9pZCBzZXREaXNhYmxlZChib29sKTsKIApJbmRleDogU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIuY3BwCShyZXZp
c2lvbiA4NTYwNCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nh
bm5lci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk1LDcgKzk1LDcgQEAgcHVibGljOgogICAgIHsK
ICAgICAgICAgSFRNTExpbmtFbGVtZW50OjpSZWxBdHRyaWJ1dGUgcmVsOwogICAgICAgICBIVE1M
TGlua0VsZW1lbnQ6OnRva2VuaXplUmVsQXR0cmlidXRlKGF0dHJpYnV0ZVZhbHVlLCByZWwpOwot
ICAgICAgICByZXR1cm4gcmVsLm1faXNTdHlsZVNoZWV0ICYmICFyZWwubV9pc0FsdGVybmF0ZSAm
JiAhcmVsLm1faXNJY29uICYmICFyZWwubV9pc0ROU1ByZWZldGNoOworICAgICAgICByZXR1cm4g
cmVsLm1faXNTdHlsZVNoZWV0ICYmICFyZWwubV9pc0FsdGVybmF0ZSAmJiByZWwubV9pY29uVHlw
ZSA9PSBJbnZhbGlkSWNvbiAmJiAhcmVsLm1faXNETlNQcmVmZXRjaDsKICAgICB9CiAKICAgICBz
dGF0aWMgYm9vbCBsaW5rTWVkaWFBdHRyaWJ1dGVJc1NjcmVlbihjb25zdCBTdHJpbmcmIGF0dHJp
YnV0ZVZhbHVlKQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3Bw
CShyZXZpc2lvbiA4NTYwNCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc4LDYgKzc4LDI4IEBAIHN0YXRpYyB2b2lkIHNldEFs
bERlZmVyc0xvYWRpbmcoY29uc3QgUmUKICAgICAgICAgbG9hZGVyc0NvcHlbaV0tPnNldERlZmVy
c0xvYWRpbmcoZGVmZXJzKTsKIH0KIAorLy8gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIGdpdmVu
IHR5cGUsIDAgaXMgcmV0dXJuZWQgaWYgdGhlIHR5cGUgaXMgaW52YWxpZC4KK3N0YXRpYyBzaXpl
X3QgZ2V0SWNvbkluZGV4KEljb25UeXBlIHR5cGUpCit7CisgICAgc2l6ZV90IGluZGV4ID0gMDsK
KyAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNlIEZhdmljb246CisgICAgICAgIGluZGV4ID0g
MDsKKyAgICAgICAgYnJlYWs7CisjaWYgRU5BQkxFKFRPVUNIX0lDT05fTE9BRElORykKKyAgICBj
YXNlIFRvdWNoUHJlY29tcG9zZWRJY29uOgorICAgICAgICBpbmRleCA9IDE7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgVG91Y2hJY29uOgorICAgICAgICBpbmRleCA9IDI7CisgICAgICAgIGJy
ZWFrOworI2VuZGlmCisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgfQorICAgIHJldHVybiBpbmRleDsKK30KKwogRG9jdW1lbnRMb2FkZXI6OkRvY3VtZW50
TG9hZGVyKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxLCBjb25zdCBTdWJzdGl0dXRlRGF0YSYg
c3Vic3RpdHV0ZURhdGEpCiAgICAgOiBtX2RlZmVyTWFpblJlc291cmNlRGF0YUxvYWQodHJ1ZSkK
ICAgICAsIG1fZnJhbWUoMCkKQEAgLTY2MSwxNCArNjgzLDE5IEBAIHZvaWQgRG9jdW1lbnRMb2Fk
ZXI6OnNldFRpdGxlKGNvbnN0IFN0cmkKICAgICB9CiB9CiAKLXZvaWQgRG9jdW1lbnRMb2FkZXI6
OnNldEljb25VUkwoY29uc3QgU3RyaW5nJiBpY29uVVJMKQorSWNvblVSTCBEb2N1bWVudExvYWRl
cjo6aWNvblVSTChJY29uVHlwZSBpY29uVHlwZSkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9pY29u
VVJMc1tnZXRJY29uSW5kZXgoaWNvblR5cGUpXTsKK30KKwordm9pZCBEb2N1bWVudExvYWRlcjo6
c2V0SWNvblVSTChjb25zdCBJY29uVVJMJiB1cmwpCiB7Ci0gICAgaWYgKGljb25VUkwuaXNFbXB0
eSgpKQorICAgIGlmICh1cmwubV9pY29uVVJMLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgaWYgKG1fcGFnZUljb25VUkwgIT0gaWNvblVSTCkgewotICAgICAgICBtX3BhZ2VJY29u
VVJMID0gaWNvblVSTDsKLSAgICAgICAgZnJhbWVMb2FkZXIoKS0+ZGlkQ2hhbmdlSWNvbnModGhp
cyk7CisgICAgaWYgKGljb25VUkwodXJsLm1faWNvblR5cGUpLm1faWNvblVSTCAhPSB1cmwubV9p
Y29uVVJMKSB7CisgICAgICAgICAgICBtX2ljb25VUkxzW2dldEljb25JbmRleCh1cmwubV9pY29u
VHlwZSldID0gdXJsOworICAgICAgICBmcmFtZUxvYWRlcigpLT5kaWRDaGFuZ2VJY29ucyh0aGlz
LCB1cmwubV9pY29uVHlwZSk7CiAgICAgfQogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRG9jdW1lbnRMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RG9jdW1lbnRMb2FkZXIuaAkocmV2aXNpb24gODU2MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRG9jdW1lbnRMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIsNyBAQAogI2lu
Y2x1ZGUgIkRvY3VtZW50TG9hZFRpbWluZy5oIgogI2luY2x1ZGUgIkRvY3VtZW50V3JpdGVyLmgi
CiAjaW5jbHVkZSAiSWNvbkRhdGFiYXNlQmFzZS5oIgorI2luY2x1ZGUgIkljb25VUkwuaCIKICNp
bmNsdWRlICJOYXZpZ2F0aW9uQWN0aW9uLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VFcnJvci5oIgog
I2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgpAQCAtMTIzLDcgKzEyNCw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCBpc0xvYWRpbmdJbkFQSVNlbnNlKCkgY29uc3Q7CiAg
ICAgICAgIHZvaWQgc2V0UHJpbWFyeUxvYWRDb21wbGV0ZShib29sKTsKICAgICAgICAgdm9pZCBz
ZXRUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJik7Ci0gICAgICAgIHZvaWQgc2V0SWNv
blVSTChjb25zdCBTdHJpbmcmKTsKKyAgICAgICAgdm9pZCBzZXRJY29uVVJMKGNvbnN0IEljb25V
UkwmKTsKICAgICAgICAgY29uc3QgU3RyaW5nJiBvdmVycmlkZUVuY29kaW5nKCkgY29uc3QgeyBy
ZXR1cm4gbV9vdmVycmlkZUVuY29kaW5nOyB9CiAKICNpZiBQTEFURk9STShNQUMpCkBAIC0xNzAs
NyArMTcxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHZvaWQgc3RvcFJlY29y
ZGluZ1Jlc3BvbnNlcygpOwogICAgICAgICBjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJiB0aXRs
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZVRpdGxlOyB9Ci0gICAgICAgIGNvbnN0IFN0cmluZyYg
aWNvblVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUljb25VUkw7IH0KKyAgICAgICAgSWNvblVS
TCBpY29uVVJMKEljb25UeXBlKSBjb25zdDsKIAogICAgICAgICBLVVJMIHVybEZvckhpc3Rvcnko
KSBjb25zdDsKICAgICAgICAgYm9vbCB1cmxGb3JIaXN0b3J5UmVmbGVjdHNGYWlsdXJlKCkgY29u
c3Q7CkBAIC0zMDAsNyArMzAxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29s
IG1fd2FzT25sb2FkSGFuZGxlZDsKIAogICAgICAgICBTdHJpbmdXaXRoRGlyZWN0aW9uIG1fcGFn
ZVRpdGxlOwotICAgICAgICBTdHJpbmcgbV9wYWdlSWNvblVSTDsKKyAgICAgICAgSWNvblVSTCBt
X2ljb25VUkxzW0lDT05fQ09VTlRdOwogCiAgICAgICAgIFN0cmluZyBtX292ZXJyaWRlRW5jb2Rp
bmc7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgJKHJldmlzaW9uIDg1
NjA0KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yNzEsNyArMjcxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRj
aERpZFJlY2VpdmVJY29uKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkU3RhcnRQ
cm92aXNpb25hbExvYWQoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZl
VGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaERpZENoYW5nZUljb25zKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlk
Q2hhbmdlSWNvbnMoSWNvblR5cGUpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENv
bW1pdExvYWQoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGYWlsUHJvdmlzaW9u
YWxMb2FkKGNvbnN0IFJlc291cmNlRXJyb3ImKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0
Y2hEaWRGYWlsTG9hZChjb25zdCBSZXNvdXJjZUVycm9yJikgeyB9CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHJldmlzaW9uIDg1NjA0KQorKysgU291cmNlL1dlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjksNiArNjksNyBA
QAogI2luY2x1ZGUgIkhpc3RvcnlJdGVtLmgiCiAjaW5jbHVkZSAiSWNvbkRhdGFiYXNlLmgiCiAj
aW5jbHVkZSAiSWNvbkxvYWRlci5oIgorI2luY2x1ZGUgIkljb25VUkwuaCIKICNpbmNsdWRlICJJ
bnNwZWN0b3JDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgpAQCAtNDY3LDE4ICs0NjgsNTYgQEAgYm9vbCBGcmFt
ZUxvYWRlcjo6Y2xvc2VVUkwoKQogCiBLVVJMIEZyYW1lTG9hZGVyOjppY29uVVJMKCkKIHsKLSAg
ICAvLyBJZiB0aGlzIGlzbid0IGEgdG9wIGxldmVsIGZyYW1lLCByZXR1cm4gbm90aGluZworICAg
IFZlY3RvcjxJY29uVVJMPiB1cmxzID0gaWNvblVSTHMoRmF2aWNvbik7CisgICAgcmV0dXJuIHVy
bHMuaXNFbXB0eSgpID8gS1VSTCgpIDogdXJsc1swXS5tX2ljb25VUkw7Cit9CisKK1ZlY3RvcjxJ
Y29uVVJMPiBGcmFtZUxvYWRlcjo6aWNvblVSTHMoaW50IGljb25UeXBlcykKK3sKKyAgICBWZWN0
b3I8SWNvblVSTD4gaWNvblVSTHM7CisgICAgaWYgKGljb25UeXBlcyAmIEZhdmljb24gJiYgIWZp
bGxJY29uVVJMKEZhdmljb24sICZpY29uVVJMcykpCisgICAgICAgICAgICBpY29uVVJMcy5hcHBl
bmQoZ2V0RGVmYXVsdEljb25VUkwoRmF2aWNvbikpOworCisjaWYgRU5BQkxFKFRPVUNIX0lDT05f
TE9BRElORykKKyAgICBib29sIGRpZEdvdFByZWNvbXBvc2VkSWNvbiA9IGZhbHNlOworICAgIGlm
IChpY29uVHlwZXMgJiBUb3VjaFByZWNvbXBvc2VkSWNvbikKKyAgICAgICAgZGlkR290UHJlY29t
cG9zZWRJY29uID0gZmlsbEljb25VUkwoVG91Y2hQcmVjb21wb3NlZEljb24sICZpY29uVVJMcyk7
CisKKyAgICBib29sIGRpZEdvdFRvdWNoSWNvbiA9IGZhbHNlOworICAgIGlmIChpY29uVHlwZXMg
JiBUb3VjaEljb24pCisgICAgICAgIGRpZEdvdFRvdWNoSWNvbiA9IGZpbGxJY29uVVJMKFRvdWNo
SWNvbiwgJmljb25VUkxzKTsKKworICAgIC8vIE9ubHkgcmV0dXJuIHRoZSBkZWZhdWx0IHRvdWNo
IGljb25zIHdoZW4gdGhlIGJvdGggd2VyZSByZXF1aXJlZCBhbmQgbmVpdGhlciB3YXMgZ290dGVu
LgorICAgIGlmIChpY29uVHlwZXMgJiBUb3VjaFByZWNvbXBvc2VkSWNvbiAmJiBpY29uVHlwZXMg
JiBUb3VjaEljb24gJiYgIWRpZEdvdFByZWNvbXBvc2VkSWNvbiAmJiAhZGlkR290VG91Y2hJY29u
KSB7CisgICAgICAgIGljb25VUkxzLmFwcGVuZChnZXREZWZhdWx0SWNvblVSTChUb3VjaFByZWNv
bXBvc2VkSWNvbikpOworICAgICAgICBpY29uVVJMcy5hcHBlbmQoZ2V0RGVmYXVsdEljb25VUkwo
VG91Y2hJY29uKSk7CisgICAgfQorI2VuZGlmCisgICAgcmV0dXJuIGljb25VUkxzOworfQorCiti
b29sIEZyYW1lTG9hZGVyOjpmaWxsSWNvblVSTChJY29uVHlwZSBpY29uVHlwZSwgVmVjdG9yPElj
b25VUkw+KiBpY29uVVJMcykKK3sKKyAgICAvLyBJZiB0aGlzIGlzbid0IGEgdG9wIGxldmVsIGZy
YW1lLCByZXR1cm4KICAgICBpZiAobV9mcmFtZS0+dHJlZSgpICYmIG1fZnJhbWUtPnRyZWUoKS0+
cGFyZW50KCkpCi0gICAgICAgIHJldHVybiBLVVJMKCk7CisgICAgICAgIHJldHVybiBmYWxzZTsK
IAogICAgIC8vIElmIHdlIGhhdmUgYW4gaWNvblVSTCBmcm9tIGEgTGluayBlbGVtZW50LCByZXR1
cm4gdGhhdAotICAgIGlmICghbV9mcmFtZS0+ZG9jdW1lbnQoKS0+aWNvblVSTCgpLmlzRW1wdHko
KSkKLSAgICAgICAgcmV0dXJuIEtVUkwoUGFyc2VkVVJMU3RyaW5nLCBtX2ZyYW1lLT5kb2N1bWVu
dCgpLT5pY29uVVJMKCkpOworICAgIEljb25VUkwgdXJsID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+
aWNvblVSTChpY29uVHlwZSk7CisgICAgaWYgKHVybC5tX2ljb25VUkwuaXNFbXB0eSgpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpY29uVVJMcy0+YXBwZW5kKHVybCk7CisKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KIAorSWNvblVSTCBGcmFtZUxvYWRlcjo6Z2V0RGVmYXVsdEljb25VUkwo
SWNvblR5cGUgaWNvblR5cGUpCit7CiAgICAgLy8gRG9uJ3QgcmV0dXJuIGEgZmF2aWNvbiBpY29u
VVJMIHVubGVzcyB3ZSdyZSBodHRwIG9yIGh0dHBzCiAgICAgS1VSTCBkb2N1bWVudFVSTCA9IG1f
ZnJhbWUtPmRvY3VtZW50KCktPnVybCgpOwogICAgIGlmICghZG9jdW1lbnRVUkwucHJvdG9jb2xJ
bkhUVFBGYW1pbHkoKSkKLSAgICAgICAgcmV0dXJuIEtVUkwoKTsKKyAgICAgICAgcmV0dXJuIElj
b25VUkwoKTsKIAogICAgIEtVUkwgdXJsOwogICAgIGJvb2wgY291bGRTZXRQcm90b2NvbCA9IHVy
bC5zZXRQcm90b2NvbChkb2N1bWVudFVSTC5wcm90b2NvbCgpKTsKQEAgLTQ4Niw4ICs1MjUsMjEg
QEAgS1VSTCBGcmFtZUxvYWRlcjo6aWNvblVSTCgpCiAgICAgdXJsLnNldEhvc3QoZG9jdW1lbnRV
UkwuaG9zdCgpKTsKICAgICBpZiAoZG9jdW1lbnRVUkwuaGFzUG9ydCgpKQogICAgICAgICB1cmwu
c2V0UG9ydChkb2N1bWVudFVSTC5wb3J0KCkpOwotICAgIHVybC5zZXRQYXRoKCIvZmF2aWNvbi5p
Y28iKTsKLSAgICByZXR1cm4gdXJsOworICAgIGlmIChpY29uVHlwZSA9PSBGYXZpY29uKSB7Cisg
ICAgICAgIHVybC5zZXRQYXRoKCIvZmF2aWNvbi5pY28iKTsKKyAgICAgICAgcmV0dXJuIEljb25V
UkwoS1VSTChQYXJzZWRVUkxTdHJpbmcsIHVybCksIEZhdmljb24pOworICAgIH0KKyNpZiBFTkFC
TEUoVE9VQ0hfSUNPTl9MT0FESU5HKQorICAgIGlmIChpY29uVHlwZSA9PSBUb3VjaFByZWNvbXBv
c2VkSWNvbikgeworICAgICAgICB1cmwuc2V0UGF0aCgiL2FwcGxlLXRvdWNoLWljb24tcHJlY29t
cG9zZWQucG5nIik7CisgICAgICAgIHJldHVybiBJY29uVVJMKEtVUkwoUGFyc2VkVVJMU3RyaW5n
LCB1cmwpLCBUb3VjaFByZWNvbXBvc2VkSWNvbik7CisgICAgfQorICAgIGlmIChpY29uVHlwZSA9
PSBUb3VjaEljb24pIHsKKyAgICAgICAgdXJsLnNldFBhdGgoIi9hcHBsZS10b3VjaC1pY29uLnBu
ZyIpOworICAgICAgICByZXR1cm4gSWNvblVSTChLVVJMKFBhcnNlZFVSTFN0cmluZywgdXJsKSwg
VG91Y2hJY29uKTsKKyAgICB9CisjZW5kaWYKKyAgICByZXR1cm4gSWNvblVSTCgpOwogfQogCiBi
b29sIEZyYW1lTG9hZGVyOjpkaWRPcGVuVVJMKGNvbnN0IEtVUkwmIHVybCkKQEAgLTMzNTcsNyAr
MzQwOSw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnNldFRpdGxlKGNvbnN0IFN0cmluZ1cKICAgICBk
b2N1bWVudExvYWRlcigpLT5zZXRUaXRsZSh0aXRsZSk7CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXI6
OnNldEljb25VUkwoY29uc3QgU3RyaW5nJiBpY29uVVJMKQordm9pZCBGcmFtZUxvYWRlcjo6c2V0
SWNvblVSTChjb25zdCBJY29uVVJMJiBpY29uVVJMKQogewogICAgIGRvY3VtZW50TG9hZGVyKCkt
PnNldEljb25VUkwoaWNvblVSTCk7CiB9CkBAIC0zNDM1LDEwICszNDg3LDEwIEBAIHZvaWQgRnJh
bWVMb2FkZXI6OmRpZENoYW5nZVRpdGxlKERvY3VtZW4KICAgICB9CiB9CiAKLXZvaWQgRnJhbWVM
b2FkZXI6OmRpZENoYW5nZUljb25zKERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCit2b2lkIEZyYW1l
TG9hZGVyOjpkaWRDaGFuZ2VJY29ucyhEb2N1bWVudExvYWRlciogbG9hZGVyLCBJY29uVHlwZSB0
eXBlKQogewogICAgIGlmIChsb2FkZXIgPT0gbV9kb2N1bWVudExvYWRlcikKLSAgICAgICAgbV9j
bGllbnQtPmRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoKTsKKyAgICAgICAgbV9jbGllbnQtPmRpc3Bh
dGNoRGlkQ2hhbmdlSWNvbnModHlwZSk7CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXI6OmRpc3BhdGNo
RGlkQ29tbWl0TG9hZCgpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAkocmV2
aXNpb24gODU2MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAkod29y
a2luZyBjb3B5KQpAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIkZyYW1lTG9hZGVyVHlwZXMu
aCIKICNpbmNsdWRlICJIaXN0b3J5Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIkljb25EYXRhYmFz
ZUJhc2UuaCIKKyNpbmNsdWRlICJJY29uVVJMLmgiCiAjaW5jbHVkZSAiUG9saWN5Q2hlY2tlci5o
IgogI2luY2x1ZGUgIlJlc291cmNlTG9hZE5vdGlmaWVyLmgiCiAjaW5jbHVkZSAiU3ViZnJhbWVM
b2FkZXIuaCIKQEAgLTE5MSw3ICsxOTIsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBzdWJmcmFtZUlz
TG9hZGluZygpIGNvbnN0OwogICAgIHZvaWQgd2lsbENoYW5nZVRpdGxlKERvY3VtZW50TG9hZGVy
Kik7CiAgICAgdm9pZCBkaWRDaGFuZ2VUaXRsZShEb2N1bWVudExvYWRlciopOwotICAgIHZvaWQg
ZGlkQ2hhbmdlSWNvbnMoRG9jdW1lbnRMb2FkZXIqKTsKKyAgICB2b2lkIGRpZENoYW5nZUljb25z
KERvY3VtZW50TG9hZGVyKiwgSWNvblR5cGUpOwogCiAgICAgRnJhbWVMb2FkVHlwZSBsb2FkVHlw
ZSgpIGNvbnN0OwogCkBAIC0yMzMsNyArMjM0LDExIEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZEVu
ZERvY3VtZW50KCk7CiAgICAgdm9pZCB3aWxsU2V0RW5jb2RpbmcoKTsKIAorICAgIC8vIFJldHVy
bnMgZmF2aWNvbi4KICAgICBLVVJMIGljb25VUkwoKTsKKworICAgIC8vIFJldHVybnMgdGhlIGdp
dmVuIGljb25UeXBlcycgSWNvblVSTHMsIGljb25UeXBlcyBjb3VsZCBiZSBhbnkgY29tYmluYXRp
b24gb2YgSWNvblR5cGUuCisgICAgVmVjdG9yPEljb25VUkw+IGljb25VUkxzKGludCBpY29uVHlw
ZXMpOwogICAgIHZvaWQgY29tbWl0SWNvblVSTFRvSWNvbkRhdGFiYXNlKGNvbnN0IEtVUkwmKTsK
IAogICAgIEtVUkwgYmFzZVVSTCgpIGNvbnN0OwpAQCAtMjg0LDcgKzI4OSw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIGNhbmNlbEFuZENsZWFyKCk7CiAKICAgICB2b2lkIHNldFRpdGxlKGNvbnN0IFN0
cmluZ1dpdGhEaXJlY3Rpb24mKTsKLSAgICB2b2lkIHNldEljb25VUkwoY29uc3QgU3RyaW5nJik7
CisgICAgdm9pZCBzZXRJY29uVVJMKGNvbnN0IEljb25VUkwmKTsKIAogICAgIHZvaWQgY29tbWl0
UHJvdmlzaW9uYWxMb2FkKCk7CiAgICAgYm9vbCBpc0xvYWRpbmdGcm9tQ2FjaGVkUGFnZSgpIGNv
bnN0IHsgcmV0dXJuIG1fbG9hZGluZ0Zyb21DYWNoZWRQYWdlOyB9CkBAIC00MjgsNiArNDMzLDkg
QEAgcHJpdmF0ZToKIAogICAgIHZvaWQgdXBkYXRlU2FuZGJveEZsYWdzKCk7CiAKKyAgICBib29s
IGZpbGxJY29uVVJMKEljb25UeXBlLCBWZWN0b3I8SWNvblVSTD4qKTsKKyAgICBJY29uVVJMIGdl
dERlZmF1bHRJY29uVVJMKEljb25UeXBlKTsKKwogICAgIEZyYW1lKiBtX2ZyYW1lOwogICAgIEZy
YW1lTG9hZGVyQ2xpZW50KiBtX2NsaWVudDsKIApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyQ2xpZW50LmgJKHJldmlzaW9uIDg1NjA0KQorKysgU291cmNlL1dlYkNvcmUv
bG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcg
QEAKICNkZWZpbmUgRnJhbWVMb2FkZXJDbGllbnRfaAogCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJU
eXBlcy5oIgorI2luY2x1ZGUgIkljb25VUkwuaCIKICNpbmNsdWRlICJTY3JvbGxUeXBlcy5oIgog
I2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtMTQx
LDcgKzE0Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lkIGRp
c3BhdGNoRGlkUmVjZWl2ZUljb24oKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRj
aERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCkgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlz
cGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYpID0gMDsKLSAg
ICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoKSA9IDA7CisgICAgICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZUljb25zKEljb25UeXBlKSA9IDA7CiAgICAg
ICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENvbW1pdExvYWQoKSA9IDA7CiAgICAgICAgIHZp
cnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxQcm92aXNpb25hbExvYWQoY29uc3QgUmVzb3VyY2VF
cnJvciYpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbExvYWQoY29u
c3QgUmVzb3VyY2VFcnJvciYpID0gMDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDg1NjA0KQor
KysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTgg
QEAKKzIwMTEtMDQtMjIgIFRhbyBCYWkgIDxtaWNoYWVsYmFpQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQb3B1bGF0ZSB0b3Vj
aC1pY29uIHVybCB0byBGcmFtZUxvYWRlckNsaWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTkxNDMKKworICAgICAgICBSZXNwZWN0ZWQgdGhlIGNo
YW5nZSBvZiBGcmFtZUxvYWRlckNsaWVudC4KKyAgICAgICAgQWRkZWQgV2ViSWNvblVSTCBhbmQg
V2ViSWNvblR5cGUgcmVzcG9uZGluZyB0aGUgbmV3IEljb25VUkwgYW5kIEljb25UeXBlLgorICAg
ICAgICBTdXBwb3J0ZWQgdG8gZ2V0IHRoZSBtdWx0aXBsZSBpY29uIHVybHMuCisKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ2hhbmdlSWNv
bnMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuaDoKKwogMjAxMS0wNS0wMiAgQWRhbSBSb2JlbiAgPGFyb2JlbkBhcHBsZS5jb20+CiAK
ICAgICAgICAgVGFrZSBhZHZhbnRhZ2Ugb2YgaW1wbGljaXQgY29udmVyc2lvbiBmcm9tIG51bGxw
dHJfdCB0byBQYXNzT3duUHRyCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNw
cAkocmV2aXNpb24gODU2MDQpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDE4LDcg
KzQxOCw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmUKICAgICB3
ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFJlY2VpdmVUaXRsZUZvckZy
YW1lKG1fZnJhbWUtPmZyYW1lSUQoKSwgdGl0bGUuc3RyaW5nKCksIEluamVjdGVkQnVuZGxlVXNl
ck1lc3NhZ2VFbmNvZGVyKHVzZXJEYXRhLmdldCgpKSkpOwogfQogCi12b2lkIFdlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpkaXNwYXRjaERpZENoYW5nZUljb25zKCkKK3ZvaWQgV2ViRnJhbWVMb2FkZXJD
bGllbnQ6OmRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoV2ViQ29yZTo6SWNvblR5cGUpCiB7CiAgICAg
bm90SW1wbGVtZW50ZWQoKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgJ
KHJldmlzaW9uIDg1NjA0KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC04NSw3ICs4NSw3
IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUljb24oKTsK
ICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpOwogICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBXZWJDb3JlOjpTdHJp
bmdXaXRoRGlyZWN0aW9uJik7Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlSWNv
bnMoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucyhXZWJDb3JlOjpJ
Y29uVHlwZSk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ29tbWl0TG9hZCgpOwogICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxQcm92aXNpb25hbExvYWQoY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VFcnJvciYpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxMb2Fk
KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCShyZXZpc2lvbiA4NTYwNCkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKworMjAxMS0wNC0yMiAgVGFvIEJh
aSAgPG1pY2hhZWxiYWlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFBvcHVsYXRlIHRvdWNoLWljb24gdXJsIHRvIEZyYW1lTG9h
ZGVyQ2xpZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD01OTE0MworCisgICAgICAgIFJlc3BlY3RlZCB0aGUgY2hhbmdlIG9mIEZyYW1lTG9hZGVyQ2xp
ZW50LgorCisgICAgICAgICogc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6ZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucyk6
CisgICAgICAgICogc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5oOgorCisKIDIwMTEtMDUtMDIg
IEFkYW0gUm9iZW4gIDxhcm9iZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFRha2UgYWR2YW50YWdl
IG9mIGltcGxpY2l0IGNvbnZlcnNpb24gZnJvbSBudWxscHRyX3QgdG8gUGFzc093blB0cgpAQCAt
NjE5LDYgKzYzNCw3IEBACiAgICAgICAgICogdGVzdHMvVHJhbnNwYXJlbmN5V2luVGVzdC5jcHA6
CiAgICAgICAgIChXZWJDb3JlOjpURVNUKToKIAorPj4+Pj4+PiAucjg0OTE3CiAyMDExLTA0LTIy
ICBNaWtoYWlsIE5hZ2Fub3YgIDxtbmFnYW5vdkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgUGF2ZWwgRmVsZG1hbi4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcAkocmV2aXNpb24gODU2MDQpCisr
KyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC03ODAsNyArNzgwLDcgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudElt
cGw6OmRpc3BhdGNoRGlkUgogICAgICAgICBtX3dlYkZyYW1lLT5jbGllbnQoKS0+ZGlkUmVjZWl2
ZVRpdGxlKG1fd2ViRnJhbWUsIHRpdGxlLnN0cmluZygpLCB0aXRsZS5kaXJlY3Rpb24oKSA9PSBM
VFIgPyBXZWJUZXh0RGlyZWN0aW9uTGVmdFRvUmlnaHQgOiBXZWJUZXh0RGlyZWN0aW9uUmlnaHRU
b0xlZnQpOwogfQogCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6ZGlzcGF0Y2hEaWRDaGFu
Z2VJY29ucygpCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6ZGlzcGF0Y2hEaWRDaGFuZ2VJ
Y29ucyhXZWJDb3JlOjpJY29uVHlwZSB0eXBlKQogewogICAgIGlmIChtX3dlYkZyYW1lLT5jbGll
bnQoKSkKICAgICAgICAgbV93ZWJGcmFtZS0+Y2xpZW50KCktPmRpZENoYW5nZUljb25zKG1fd2Vi
RnJhbWUpOwpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGll
bnRJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVM
b2FkZXJDbGllbnRJbXBsLmgJKHJldmlzaW9uIDg1NjA0KQorKysgU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwNSw3
ICsxMDUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUlj
b24oKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgp
OwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBXZWJDb3Jl
OjpTdHJpbmdXaXRoRGlyZWN0aW9uJik7Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hh
bmdlSWNvbnMoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucyhXZWJD
b3JlOjpJY29uVHlwZSk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ29tbWl0TG9hZCgp
OwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxQcm92aXNpb25hbExvYWQoY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZh
aWxMb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvZWZsL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VM
b2cJKHJldmlzaW9uIDg1NjA0KQorKysgU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTEtMDQtMjIgIFRhbyBCYWkgIDxtaWNoYWVs
YmFpQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBQb3B1bGF0ZSB0b3VjaC1pY29uIHVybCB0byBGcmFtZUxvYWRlckNsaWVudAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTkxNDMKKwor
ICAgICAgICBSZXNwZWN0IHRoZSBpbnRlcmZhY2UgY2hhbmdlIGluIEZyYW1lTG9hZGVyQ2xpZW50
CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hEaWRDaGFuZ2VJ
Y29ucyk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuaDoK
KwogMjAxMS0wNS0wMiAgR3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHNhbXN1bmcuY29tPgog
CiAgICAgICAgIFVucmV2aWV3ZWQuIFN0eWxlIGVycm9yIGZpeC4KSW5kZXg6IFNvdXJjZS9XZWJL
aXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVm
bC5jcHAJKHJldmlzaW9uIDg1NjA0KQorKysgU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBv
cnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01ODcsNyArNTg3
LDcgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hEaWRSZQogICAgIGV3a192
aWV3X3RpdGxlX3NldChtX3ZpZXcsIGNzLmRhdGEoKSk7CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXJD
bGllbnRFZmw6OmRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoKQordm9pZCBGcmFtZUxvYWRlckNsaWVu
dEVmbDo6ZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucyhXZWJDb3JlOjpJY29uVHlwZSkKIHsKICAgICBu
b3RJbXBsZW1lbnRlZCgpOwogfQpJbmRleDogU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBv
cnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Vm
bC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5oCShyZXZpc2lvbiA4NTYwNCkK
KysrIFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZs
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEwMyw3ICsxMDMsNyBAQCBjbGFzcyBGcmFtZUxvYWRlckNs
aWVudEVmbCA6IHB1YmxpYyBGcmFtCiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2
ZUljb24oKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9h
ZCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBTdHJp
bmdXaXRoRGlyZWN0aW9uJik7Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlSWNv
bnMoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucyhXZWJDb3JlOjpJ
Y29uVHlwZSk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ29tbWl0TG9hZCgpOwogICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxQcm92aXNpb25hbExvYWQoY29uc3QgUmVzb3Vy
Y2VFcnJvciYpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxMb2FkKGNvbnN0IFJl
c291cmNlRXJyb3ImKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cJKHJldmlzaW9uIDg1NjA0KQorKysg
U291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYg
QEAKKzIwMTEtMDQtMjIgIFRhbyBCYWkgIDxtaWNoYWVsYmFpQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQb3B1bGF0ZSB0b3Vj
aC1pY29uIHVybCB0byBGcmFtZUxvYWRlckNsaWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTkxNDMKKworICAgICAgICBSZXNwZWN0IHRoZSBpbnRl
cmZhY2UgY2hhbmdlIGluIEZyYW1lTG9hZGVyQ2xpZW50LgorCisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxv
YWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucyk6CisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuaDoKKwogMjAxMS0wNC0yOSAgWGFuIExvcGV6ICA8
eGxvcGV6QGlnYWxpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTWFydGluIFJvYmluc29u
LgpJbmRleDogU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGll
bnRHdGsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0
L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAkocmV2aXNpb24gODU2MDQpCisrKyBTb3VyY2UvV2Vi
S2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTk2OSw3ICs5NjksNyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRj
aERpZFJlY2VpCiAgICAgfQogfQogCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERp
ZENoYW5nZUljb25zKCkKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ2hhbmdl
SWNvbnMoV2ViQ29yZTo6SWNvblR5cGUpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3Rr
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVM
b2FkZXJDbGllbnRHdGsuaAkocmV2aXNpb24gODU2MDQpCisrKyBTb3VyY2UvV2ViS2l0L2d0ay9X
ZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5oCSh3b3JraW5nIGNvcHkpCkBAIC04
Miw3ICs4Miw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlz
cGF0Y2hEaWRSZWNlaXZlSWNvbigpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRT
dGFydFByb3Zpc2lvbmFsTG9hZCgpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRS
ZWNlaXZlVGl0bGUoY29uc3QgV2ViQ29yZTo6U3RyaW5nV2l0aERpcmVjdGlvbiYpOwotICAgICAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygpOworICAgICAgICB2aXJ0dWFs
IHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucyhXZWJDb3JlOjpJY29uVHlwZSk7CiAgICAgICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENvbW1pdExvYWQoKTsKICAgICAgICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9hZChjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yJik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxMb2FkKGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9u
IDg1NjA0KQorKysgU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTcgQEAKKworMjAxMS0wNC0yMiAgVGFvIEJhaSAgPG1pY2hhZWxiYWlAY2hyb21p
dW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFBvcHVsYXRlIHRvdWNoLWljb24gdXJsIHRvIEZyYW1lTG9hZGVyQ2xpZW50CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01OTE0MworCisgICAgICAgIFJl
c3BlY3QgdGhlIGludGVyZmFjZSBjaGFuZ2UgaW4gRnJhbWVMb2FkZXJDbGllbnQuCisKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tOgorICAgICAgICAoV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMpOgorCiAyMDExLTA1LTAyICBBZGFt
IFJvYmVuICA8YXJvYmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBUYWtlIGFkdmFudGFnZSBvZiBp
bXBsaWNpdCBjb252ZXJzaW9uIGZyb20gbnVsbHB0cl90IHRvIFBhc3NPd25QdHIKQEAgLTM2MSw2
ICszNzUsNyBAQAogICAgICAgICAqIFdlYlZpZXcvV2ViRnVsbFNjcmVlbkNvbnRyb2xsZXIubW06
CiAgICAgICAgICgtW1dlYkZ1bGxTY3JlZW5Db250cm9sbGVyIF9kb2N1bWVudF0pOgogCis+Pj4+
Pj4+IC5yODQ5MTcKIDIwMTEtMDQtMjIgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTWFjaWVqIFN0YWNob3dpYWsuCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmgJKHJldmlzaW9uIDg1NjA0KQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTAyLDcgKzEwMiw3
IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUljb24oKTsK
ICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpOwogICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBXZWJDb3JlOjpTdHJp
bmdXaXRoRGlyZWN0aW9uJik7Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlSWNv
bnMoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucyhXZWJDb3JlOjpJ
Y29uVHlwZSk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ29tbWl0TG9hZCgpOwogICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxQcm92aXNpb25hbExvYWQoY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VFcnJvciYpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxMb2Fk
KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCShy
ZXZpc2lvbiA4NTYwNCkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC02MzMsNyArNjMzLDcgQEAgdm9p
ZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRSZQogICAgICAgICBDYWxsRnJhbWVM
b2FkRGVsZWdhdGUoaW1wbGVtZW50YXRpb25zLT5kaWRSZWNlaXZlVGl0bGVGb3JGcmFtZUZ1bmMs
IHdlYlZpZXcsIEBzZWxlY3Rvcih3ZWJWaWV3OmRpZFJlY2VpdmVUaXRsZTpmb3JGcmFtZTopLCAo
TlNTdHJpbmcgKil0aXRsZS5zdHJpbmcoKSwgbV93ZWJGcmFtZS5nZXQoKSk7CiB9CiAKLXZvaWQg
V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoKQordm9pZCBXZWJG
cmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucyhXZWJDb3JlOjpJY29uVHlw
ZSkKIHsKICAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzIHRvIGFsbG93IGNvbnRhaW5lciB0
byB1cGRhdGUgZmF2aWNvbi4KIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCShyZXZpc2lvbiA4NTYwNCkK
KysrIFNvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MTYgQEAKKzIwMTEtMDQtMjIgIFRhbyBCYWkgIDxtaWNoYWVsYmFpQGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQb3B1bGF0ZSB0
b3VjaC1pY29uIHVybCB0byBGcmFtZUxvYWRlckNsaWVudAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTkxNDMKKworICAgICAgICBSZXNwZWN0IHRoZSBp
bnRlcmZhY2UgY2hhbmdlIGluIEZyYW1lTG9hZGVyQ2xpZW50LgorCisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERpZENoYW5nZUljb25zKToKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0Lmg6CisKIDIwMTEtMDUtMDEgIFNhbSBXZWlu
aWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbmRlcnMgQ2FybHNz
b24uCkluZGV4OiBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xp
ZW50UXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQv
RnJhbWVMb2FkZXJDbGllbnRRdC5jcHAJKHJldmlzaW9uIDg1NjA0KQorKysgU291cmNlL1dlYktp
dC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDU5LDcgKzQ1OSw3IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hE
aWRSZWMKIH0KIAogCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkQ2hhbmdl
SWNvbnMoKQordm9pZCBGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERpZENoYW5nZUljb25z
KFdlYkNvcmU6Okljb25UeXBlKQogewogICAgIGlmIChkdW1wRnJhbWVMb2FkZXJDYWxsYmFja3Mp
CiAgICAgICAgIHByaW50ZigiJXMgLSBkaWRDaGFuZ2VJY29uc1xuIiwgcVByaW50YWJsZShkcnRE
ZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdChtX2ZyYW1lKSkpOwpJbmRleDogU291cmNl
L1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0
LmgJKHJldmlzaW9uIDg1NjA0KQorKysgU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9G
cmFtZUxvYWRlckNsaWVudFF0LmgJKHdvcmtpbmcgY29weSkKQEAgLTExMSw3ICsxMTEsNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUljb24oKTsKICAgICB2
aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpOwogICAgIHZpcnR1
YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9u
Jik7Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoKTsKKyAgICB2aXJ0
dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucyhXZWJDb3JlOjpJY29uVHlwZSk7CiAgICAg
dmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ29tbWl0TG9hZCgpOwogICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaERpZEZhaWxQcm92aXNpb25hbExvYWQoY29uc3QgUmVzb3VyY2VFcnJvciYpOwogICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxMb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
RXJyb3ImKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHJldmlzaW9uIDg1NjA0KQorKysgU291cmNl
L1dlYktpdC93aW4vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIw
MTEtMDQtMjIgIFRhbyBCYWkgIDxtaWNoYWVsYmFpQGNocm9taXVtLm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQb3B1bGF0ZSB0b3VjaC1pY29u
IHVybCB0byBGcmFtZUxvYWRlckNsaWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NTkxNDMKKworICAgICAgICBSZXNwZWN0IHRoZSBpbnRlcmZhY2Ug
Y2hhbmdlIGluIEZyYW1lTG9hZGVyQ2xpZW50LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6
OmRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50Lmg6CisKIDIwMTEtMDUtMDEgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0
Lm9yZz4KIAogICAgICAgICBGaXggd2luZG93cyBidWlsZC4KSW5kZXg6IFNvdXJjZS9XZWJLaXQv
d2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5j
cHAJKHJldmlzaW9uIDg1NjA0KQorKysgU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNzMsOCArMzczLDEx
IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmUKICAgICAgICAgZnJh
bWVMb2FkRGVsZWdhdGUtPmRpZFJlY2VpdmVUaXRsZSh3ZWJWaWV3LCBCU3RyaW5nKHRpdGxlLnN0
cmluZygpKSwgbV93ZWJGcmFtZSk7CiB9CiAKLXZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRp
c3BhdGNoRGlkQ2hhbmdlSWNvbnMoKQordm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0
Y2hEaWRDaGFuZ2VJY29ucyhXZWJDb3JlOjpJY29uVHlwZSB0eXBlKQogeworICAgIGlmICh0eXBl
ICE9IFdlYkNvcmU6OkZhdmljb24pCisgICAgICAgIHJldHVybjsKKwogICAgIFdlYlZpZXcqIHdl
YlZpZXcgPSBtX3dlYkZyYW1lLT53ZWJWaWV3KCk7CiAgICAgQ09NUHRyPElXZWJGcmFtZUxvYWRE
ZWxlZ2F0ZVByaXZhdGU+IGZyYW1lTG9hZERlbGVnYXRlUHJpdjsKICAgICBpZiAoRkFJTEVEKHdl
YlZpZXctPmZyYW1lTG9hZERlbGVnYXRlUHJpdmF0ZSgmZnJhbWVMb2FkRGVsZWdhdGVQcml2KSkg
fHwgIWZyYW1lTG9hZERlbGVnYXRlUHJpdikKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAkocmV2aXNpb24g
ODU2MDQpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC03MCw3ICs3MCw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbigpOwogICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFdlYkNvcmU6OlN0cmluZ1dpdGhEaXJlY3Rpb24mKTsK
LSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygpOworICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaERpZENoYW5nZUljb25zKFdlYkNvcmU6Okljb25UeXBlKTsKICAgICB2aXJ0
dWFsIHZvaWQgZGlzcGF0Y2hEaWRDb21taXRMb2FkKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoRGlkRmluaXNoRG9jdW1lbnRMb2FkKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlk
RmluaXNoTG9hZCgpOwpJbmRleDogU291cmNlL1dlYktpdC93aW5jZS9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC93aW5jZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg1NjA0KQor
KysgU291cmNlL1dlYktpdC93aW5jZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwxNiBAQAorMjAxMS0wNC0yMiAgVGFvIEJhaSAgPG1pY2hhZWxiYWlAY2hyb21pdW0ub3JnPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBvcHVsYXRl
IHRvdWNoLWljb24gdXJsIHRvIEZyYW1lTG9hZGVyQ2xpZW50CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01OTE0MworCisgICAgICAgIFJlc3BlY3QgdGhl
IGludGVyZmFjZSBjaGFuZ2UgaW4gRnJhbWVMb2FkZXJDbGllbnQuCisKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFdpbkNFLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
RnJhbWVMb2FkZXJDbGllbnRXaW5DRTo6ZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucyk6CisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXaW5DRS5oOgorCiAyMDExLTA1LTAx
ICBQYXRyaWNrIEdhbnN0ZXJlciAgPHBhcm9nYUB3ZWJraXQub3JnPgogCiAgICAgICAgIFtXSU5d
IFVucmV2aWV3ZWQgYnVpbGRmaXggYWZ0ZXIgcjg1NDM0LgpJbmRleDogU291cmNlL1dlYktpdC93
aW5jZS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFdpbkNFLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50
V2luQ0UuY3BwCShyZXZpc2lvbiA4NTYwNCkKKysrIFNvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29y
ZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXaW5DRS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3
Niw3ICszNzYsNyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50V2luQ0U6OmRpc3BhdGNoRGlkCiAg
ICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudFdpbkNFOjpk
aXNwYXRjaERpZENoYW5nZUljb25zKCkKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRXaW5DRTo6ZGlz
cGF0Y2hEaWRDaGFuZ2VJY29ucyhXZWJDb3JlOjpJY29uVHlwZSkKIHsKICAgICBub3RJbXBsZW1l
bnRlZCgpOwogfQpJbmRleDogU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9GcmFt
ZUxvYWRlckNsaWVudFdpbkNFLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW5jZS9X
ZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFdpbkNFLmgJKHJldmlzaW9uIDg1NjA0KQor
KysgU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFdp
bkNFLmgJKHdvcmtpbmcgY29weSkKQEAgLTc3LDcgKzc3LDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVJY29uKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoRGlkU3RhcnRQcm92aXNpb25hbExvYWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hE
aWRSZWNlaXZlVGl0bGUoY29uc3QgV2ViQ29yZTo6U3RyaW5nV2l0aERpcmVjdGlvbiYpOwotICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZUljb25zKCk7CisgICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoV2ViQ29yZTo6SWNvblR5cGUpOwogICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaERpZENvbW1pdExvYWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hE
aWRGYWlsUHJvdmlzaW9uYWxMb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKICAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGYWlsTG9hZChjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yJik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L3d4L0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L3d4L0NoYW5nZUxvZwkocmV2aXNpb24gODU2MDQpCisrKyBTb3VyY2Uv
V2ViS2l0L3d4L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisKKzIw
MTEtMDQtMjIgIFRhbyBCYWkgIDxtaWNoYWVsYmFpQGNocm9taXVtLm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQb3B1bGF0ZSB0b3VjaC1pY29u
IHVybCB0byBGcmFtZUxvYWRlckNsaWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NTkxNDMKKworICAgICAgICBSZXNwZWN0IHRoZSBpbnRlcmZhY2Ug
Y2hhbmdlIGluIEZyYW1lTG9hZGVyQ2xpZW50LgorCisgICAgICAgICogV2ViS2l0U3VwcG9ydC9G
cmFtZUxvYWRlckNsaWVudFd4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xp
ZW50V3g6OmRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMpOgorICAgICAgICAqIFdlYktpdFN1cHBvcnQv
RnJhbWVMb2FkZXJDbGllbnRXeC5oOgorCiAyMDExLTA0LTIzICBLZXZpbiBPbGxpdmllciAgPGtl
dmlub0B0aGVvbGxpdmllcnMuY29tPgogCiAgICAgICAgIFt3eF0gVW5yZXZpZXdlZCBidWlsZCBm
aXguIEZpeGVkIGNhcGl0YWxpemF0aW9uIGZvciBjYXNlIHNlbnNpdGl2ZSBmaWxlc3lzdGVtcy4K
SW5kZXg6IFNvdXJjZS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFd4
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRnJhbWVM
b2FkZXJDbGllbnRXeC5jcHAJKHJldmlzaW9uIDg1NjA0KQorKysgU291cmNlL1dlYktpdC93eC9X
ZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
MjcsNyArMzI3LDcgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudFd4OjpkaXNwYXRjaERpZEZpbgog
ICAgIH0KIH0KIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudFd4OjpkaXNwYXRjaERpZENoYW5nZUlj
b25zKCkKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRXeDo6ZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucyhX
ZWJDb3JlOjpJY29uVHlwZSkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQpJbmRleDogU291
cmNlL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRX
eC5oCShyZXZpc2lvbiA4NTYwNCkKKysrIFNvdXJjZS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9G
cmFtZUxvYWRlckNsaWVudFd4LmgJKHdvcmtpbmcgY29weSkKQEAgLTEwOSw3ICsxMDksNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZpbmlz
aExvYWQoKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmlyc3RMYXlvdXQoKTsK
ICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5
b3V0KCk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZUljb25zKCk7Cisg
ICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZUljb25zKFdlYkNvcmU6Okljb25U
eXBlKTsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hTaG93KCk7CiAgICAgICAgIHZp
cnR1YWwgdm9pZCBjYW5jZWxQb2xpY3lDaGVjaygpOwpJbmRleDogVG9vbHMvU2NyaXB0cy9idWls
ZC13ZWJraXQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9idWlsZC13ZWJraXQJKHJldmlz
aW9uIDg1NjA0KQorKysgVG9vbHMvU2NyaXB0cy9idWlsZC13ZWJraXQJKHdvcmtpbmcgY29weSkK
QEAgLTExMiw2ICsxMTIsNyBAQCBteSAoCiAgICAgJHN5c3RlbU1hbGxvY1N1cHBvcnQsCiAgICAg
JHRpbGVkQmFja2luZ1N0b3JlU3VwcG9ydCwKICAgICAkdG91Y2hFdmVudHNTdXBwb3J0LAorICAg
ICR0b3VjaEljb25Mb2FkaW5nU3VwcG9ydCwKICAgICAkdmlkZW9TdXBwb3J0LAogICAgICR3Y3Nz
U3VwcG9ydCwKICAgICAkd2ViQXVkaW9TdXBwb3J0LApAQCAtMjcyLDYgKzI3Myw5IEBAIG15IEBm
ZWF0dXJlcyA9ICgKICAgICB7IG9wdGlvbiA9PiAidG91Y2gtZXZlbnRzIiwgZGVzYyA9PiAiVG9n
Z2xlIFRvdWNoIEV2ZW50cyBzdXBwb3J0IiwKICAgICAgIGRlZmluZSA9PiAiRU5BQkxFX1RPVUNI
X0VWRU5UUyIsIGRlZmF1bHQgPT4gaXNRdCgpLCB2YWx1ZSA9PiBcJHRvdWNoRXZlbnRzU3VwcG9y
dCB9LAogCisgICAgeyBvcHRpb24gPT4gInRvdWNoLWljb24tbG9hZGluZyIsIGRlc2MgPT4gIlRv
Z2dsZSBUb3VjaCBJY29uIExvYWRpbmcgU3VwcG9ydCIsCisgICAgICBkZWZpbmUgPT4gIkVOQUJM
RV9UT1VDSF9JQ09OX0xPQURJTkciLCBkZWZhdWx0ID0+IDAsIHZhbHVlID0+IFwkdG91Y2hJY29u
TG9hZGluZ1N1cHBvcnQgfSwKKwogICAgIHsgb3B0aW9uID0+ICJ2aWRlbyIsIGRlc2MgPT4gIlRv
Z2dsZSBWaWRlbyBzdXBwb3J0IiwKICAgICAgIGRlZmluZSA9PiAiRU5BQkxFX1ZJREVPIiwgZGVm
YXVsdCA9PiAoaXNBcHBsZVdlYktpdCgpIHx8IGlzR3RrKCkpLCB2YWx1ZSA9PiBcJHZpZGVvU3Vw
cG9ydCB9LAogCg==
</data>
<flag name="review"
          id="85006"
          type_id="1"
          status="-"
          setter="ddkilzer"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>92102</attachid>
            <date>2011-05-03 12:18:33 -0700</date>
            <delta_ts>2011-05-03 13:01:31 -0700</delta_ts>
            <desc>Address all comments</desc>
            <filename>patch.7</filename>
            <type>text/plain</type>
            <size>59534</size>
            <attacher>michaelbai</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5l
cy54Y2NvbmZpZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ29uZmlndXJh
dGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcJKHJldmlzaW9uIDg1NjMxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCSh3
b3JraW5nIGNvcHkpCkBAIC0xMTcsNiArMTE3LDggQEAgRU5BQkxFX1ZJREVPX1RSQUNLID0gOwog
CiBFTkFCTEVfTUVESUFfU1RBVElTVElDUyA9IDsKIAorRU5BQkxFX1RPVUNIX0lDT05fTE9BRElO
RyA9IDsKKwogRU5BQkxFX1dFQl9BVURJTyA9IDsKIAogRU5BQkxFX1dFQl9TT0NLRVRTID0gJChF
TkFCTEVfV0VCX1NPQ0tFVFNfJChSRUFMX1BMQVRGT1JNX05BTUUpKTsKQEAgLTEzMSw0ICsxMzMs
NCBAQCBFTkFCTEVfWEhUTUxNUCA9IDsKIEVOQUJMRV9YUEFUSCA9IEVOQUJMRV9YUEFUSDsKIEVO
QUJMRV9YU0xUID0gRU5BQkxFX1hTTFQ7CiAKLUZFQVRVUkVfREVGSU5FUyA9ICQoRU5BQkxFX0xJ
TktfUFJFRkVUQ0gpICQoRU5BQkxFX0FDQ0VMRVJBVEVEXzJEX0NBTlZBUykgJChFTkFCTEVfV0VC
R0wpICQoRU5BQkxFXzNEX1JFTkRFUklORykgJChFTkFCTEVfQU5JTUFUSU9OX0FQSSkgJChFTkFC
TEVfQkxPQikgJChFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcpICQoRU5BQkxFX0NMSUVOVF9CQVNF
RF9HRU9MT0NBVElPTikgJChFTkFCTEVfREFUQUJBU0UpICQoRU5BQkxFX0RBVEFMSVNUKSAkKEVO
QUJMRV9EQVRBX1RSQU5TRkVSX0lURU1TKSAkKEVOQUJMRV9ERVRBSUxTKSAkKEVOQUJMRV9ERVZJ
Q0VfT1JJRU5UQVRJT04pICQoRU5BQkxFX0RJUkVDVE9SWV9VUExPQUQpICQoRU5BQkxFX0RPTV9T
VE9SQUdFKSAkKEVOQUJMRV9FVkVOVFNPVVJDRSkgJChFTkFCTEVfRklMVEVSUykgJChFTkFCTEVf
RklMRV9TWVNURU0pICQoRU5BQkxFX0ZVTExTQ1JFRU5fQVBJKSAkKEVOQUJMRV9HRU9MT0NBVElP
TikgJChFTkFCTEVfSUNPTkRBVEFCQVNFKSAkKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFKSAkKEVO
QUJMRV9JTlBVVF9TUEVFQ0gpICQoRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIpICQoRU5BQkxF
X01BVEhNTCkgJChFTkFCTEVfTUVURVJfVEFHKSAkKEVOQUJMRV9OT1RJRklDQVRJT05TKSAkKEVO
QUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpICQoRU5BQkxFX1BBR0VfVklTSUJJTElUWV9B
UEkpICQoRU5BQkxFX1BST0dSRVNTX1RBRykgJChFTkFCTEVfUkVHSVNURVJfUFJPVE9DT0xfSEFO
RExFUikgJChFTkFCTEVfUVVPVEEpICQoRU5BQkxFX1NIQVJFRF9XT1JLRVJTKSAkKEVOQUJMRV9T
VkcpICQoRU5BQkxFX1NWR19BTklNQVRJT04pICQoRU5BQkxFX1NWR19BU19JTUFHRSkgJChFTkFC
TEVfU1ZHX0RPTV9PQkpDX0JJTkRJTkdTKSAkKEVOQUJMRV9TVkdfRk9OVFMpICQoRU5BQkxFX1NW
R19GT1JFSUdOX09CSkVDVCkgJChFTkFCTEVfU1ZHX1VTRSkgJChFTkFCTEVfVklERU8pICQoRU5B
QkxFX1ZJREVPX1RSQUNLKSAkKEVOQUJMRV9NRURJQV9TVEFUSVNUSUNTKSAkKEVOQUJMRV9XRUJf
QVVESU8pICQoRU5BQkxFX1dFQl9TT0NLRVRTKSAkKEVOQUJMRV9XRUJfVElNSU5HKSAkKEVOQUJM
RV9XT1JLRVJTKSAkKEVOQUJMRV9YSFRNTE1QKSAkKEVOQUJMRV9YUEFUSCkgJChFTkFCTEVfWFNM
VCk7CitGRUFUVVJFX0RFRklORVMgPSAkKEVOQUJMRV9MSU5LX1BSRUZFVENIKSAkKEVOQUJMRV9B
Q0NFTEVSQVRFRF8yRF9DQU5WQVMpICQoRU5BQkxFX1dFQkdMKSAkKEVOQUJMRV8zRF9SRU5ERVJJ
TkcpICQoRU5BQkxFX0FOSU1BVElPTl9BUEkpICQoRU5BQkxFX0JMT0IpICQoRU5BQkxFX0NIQU5O
RUxfTUVTU0FHSU5HKSAkKEVOQUJMRV9DTElFTlRfQkFTRURfR0VPTE9DQVRJT04pICQoRU5BQkxF
X0RBVEFCQVNFKSAkKEVOQUJMRV9EQVRBTElTVCkgJChFTkFCTEVfREFUQV9UUkFOU0ZFUl9JVEVN
UykgJChFTkFCTEVfREVUQUlMUykgJChFTkFCTEVfREVWSUNFX09SSUVOVEFUSU9OKSAkKEVOQUJM
RV9ESVJFQ1RPUllfVVBMT0FEKSAkKEVOQUJMRV9ET01fU1RPUkFHRSkgJChFTkFCTEVfRVZFTlRT
T1VSQ0UpICQoRU5BQkxFX0ZJTFRFUlMpICQoRU5BQkxFX0ZJTEVfU1lTVEVNKSAkKEVOQUJMRV9G
VUxMU0NSRUVOX0FQSSkgJChFTkFCTEVfR0VPTE9DQVRJT04pICQoRU5BQkxFX0lDT05EQVRBQkFT
RSkgJChFTkFCTEVfSU5ERVhFRF9EQVRBQkFTRSkgJChFTkFCTEVfSU5QVVRfU1BFRUNIKSAkKEVO
QUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSKSAkKEVOQUJMRV9NQVRITUwpICQoRU5BQkxFX01FVEVS
X1RBRykgJChFTkFCTEVfTk9USUZJQ0FUSU9OUykgJChFTkFCTEVfT0ZGTElORV9XRUJfQVBQTElD
QVRJT05TKSAkKEVOQUJMRV9QQUdFX1ZJU0lCSUxJVFlfQVBJKSAkKEVOQUJMRV9QUk9HUkVTU19U
QUcpICQoRU5BQkxFX1JFR0lTVEVSX1BST1RPQ09MX0hBTkRMRVIpICQoRU5BQkxFX1FVT1RBKSAk
KEVOQUJMRV9TSEFSRURfV09SS0VSUykgJChFTkFCTEVfU1ZHKSAkKEVOQUJMRV9TVkdfQU5JTUFU
SU9OKSAkKEVOQUJMRV9TVkdfQVNfSU1BR0UpICQoRU5BQkxFX1NWR19ET01fT0JKQ19CSU5ESU5H
UykgJChFTkFCTEVfU1ZHX0ZPTlRTKSAkKEVOQUJMRV9TVkdfRk9SRUlHTl9PQkpFQ1QpICQoRU5B
QkxFX1NWR19VU0UpICQoRU5BQkxFX1ZJREVPKSAkKEVOQUJMRV9WSURFT19UUkFDSykgJChFTkFC
TEVfTUVESUFfU1RBVElTVElDUykgJChFTkFCTEVfV0VCX0FVRElPKSAkKEVOQUJMRV9XRUJfU09D
S0VUUykgJChFTkFCTEVfV0VCX1RJTUlORykgJChFTkFCTEVfV09SS0VSUykgJChFTkFCTEVfWEhU
TUxNUCkgJChFTkFCTEVfWFBBVEgpICQoRU5BQkxFX1hTTFQpICQoRU5BQkxFX1RPVUNIX0lDT05f
TE9BRElORyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiA4NTYzMSkKKysrIFNvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ3IEBACisyMDExLTA0LTIy
ICBUYW8gQmFpICA8bWljaGFlbGJhaUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUG9wdWxhdGUgdG91Y2gtaWNvbiB1cmwgdG8g
RnJhbWVMb2FkZXJDbGllbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTU5MTQzCisgICAgICAgIAorICAgICAgICBQYXJzZWQgYW5kIHBvcHVsYXRlZCBh
cHBsZS10b3VjaC1pY29uIHVybCB0byBGcmFtZUxvYWRlckNsaWVudC4KKyAgICAgICAgQ2hhbmdl
ZCBmYXZpY29uIHRvIGJlIGEgdHlwZSBvZiBpY29uLgorCisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpjb252ZXJ0SWNvblR5cGVUb0luZGV4KToKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50OjppY29uVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzZXRJY29u
VVJMKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKiBkb20vSWNvblVSTC5o
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okljb25VUkw6Okljb25VUkwpOgorICAgICAgICAq
IGh0bWwvSFRNTExpbmtFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxMaW5rRWxl
bWVudDo6dG9rZW5pemVSZWxBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTExpbmtF
bGVtZW50Ojpwcm9jZXNzKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxMaW5rRWxlbWVudDo6YWRk
U3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKToKKyAgICAgICAgKiBodG1sL0hUTUxMaW5rRWxlbWVu
dC5oOgorICAgICAgICAoV2ViQ29yZTo6SFRNTExpbmtFbGVtZW50OjpSZWxBdHRyaWJ1dGU6OlJl
bEF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6OmlzRW5hYmxl
ZFZpYVNjcmlwdCk6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxOYW1lczo6UHJlbG9hZFRhc2s6OnJlbEF0dHJpYnV0
ZUlzU3R5bGVTaGVldCk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmNvbnZlcnRJY29uVHlwZVRvSW5kZXgpOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnRMb2FkZXI6Omljb25VUkwpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRM
b2FkZXI6OnNldEljb25VUkwpOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5oOgor
ICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVudHMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkVtcHR5
RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMpOgorICAgICAgICAqIGxv
YWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6aWNv
blVSTCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6aWNvblVSTHMpOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmZpbGxJY29uVVJMKToKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lTG9hZGVyOjpnZXREZWZhdWx0SWNvblVSTCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZUxvYWRlcjo6c2V0SWNvblVSTCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6ZGlk
Q2hhbmdlSWNvbnMpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5oOgorICAgICAgICAq
IGxvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oOgorCiAyMDExLTA1LTAzICBCZXRoIERha2luICA8
YmRha2luQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYW4gQmVybnN0ZWluLgpJ
bmRleDogU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvR05VbWFrZWZpbGUuYW0JKHJldmlzaW9uIDg1NjMxKQorKysgU291cmNlL1dlYkNv
cmUvR05VbWFrZWZpbGUuYW0JKHdvcmtpbmcgY29weSkKQEAgLTI2MSw2ICsyNjEsMTYgQEAgd2Vi
Y29yZV9idWlsdF9zb3VyY2VzICs9IFwKIGVuZGlmICMgRU5EIEVOQUJMRV9RVU9UQQogCiAjIC0t
LS0KKyMgVG91Y2ggSWNvbiBMb2FkaW5nCisjIC0tLS0KK2lmIEVOQUJMRV9UT1VDSF9JQ09OX0xP
QURJTkcKK0ZFQVRVUkVfREVGSU5FUyArPSBFTkFCTEVfVE9VQ0hfSUNPTl9MT0FESU5HPTEKK3dl
YmNvcmVfY3BwZmxhZ3MgKz0gLURFTkFCTEVfVE9VQ0hfSUNPTl9MT0FESU5HPTEKK2Vsc2UKK3dl
YmNvcmVfY3BwZmxhZ3MgKz0gLURFTkFCTEVfVE9VQ0hfSUNPTl9MT0FESU5HPTAKK2VuZGlmICMg
RU5EIEVOQUJMRV9UT1VDSF9JQ09OX0xPQURJTkcKKworIyAtLS0tCiAjIFNwZWVjaCBJbnB1dCBB
UEkgc3VwcG9ydAogIyAtLS0tCiBpZiBFTkFCTEVfSU5QVVRfU1BFRUNICkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9mZWF0dXJlcy5wcmkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZmVhdHVy
ZXMucHJpCShyZXZpc2lvbiA4NTYzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2ZlYXR1cmVzLnByaQko
d29ya2luZyBjb3B5KQpAQCAtNzUsNiArNzUsNyBAQCBjb250YWlucyhERUZJTkVTLCBFTkFCTEVf
U0lOR0xFX1RIUkVBREVECiAhY29udGFpbnMoREVGSU5FUywgRU5BQkxFX1dFQkdMPS4pOiBERUZJ
TkVTICs9IEVOQUJMRV9XRUJHTD0wCiAhY29udGFpbnMoREVGSU5FUywgRU5BQkxFX01FRElBX1NU
QVRJU1RJQ1M9Lik6IERFRklORVMgKz0gRU5BQkxFX01FRElBX1NUQVRJU1RJQ1M9MAogIWNvbnRh
aW5zKERFRklORVMsIEVOQUJMRV9WSURFT19UUkFDSz0uKTogREVGSU5FUyArPSBFTkFCTEVfVklE
RU9fVFJBQ0s9MAorIWNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9UT1VDSF9JQ09OX0xPQURJTkc9
Lik6IERFRklORVMgKz0gRU5BQkxFX1RPVUNIX0lDT05fTE9BRElORz0wCiAhY29udGFpbnMoREVG
SU5FUywgRU5BQkxFX0FOSU1BVElPTl9BUEk9Lik6IERFRklORVMgKz0gRU5BQkxFX0FOSU1BVElP
Tl9BUEk9MAogCiAjIFNWRyBzdXBwb3J0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Db25maWd1cmF0
aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwkocmV2aXNpb24gODU2MzEp
CisrKyBTb3VyY2UvV2ViQ29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZp
Zwkod29ya2luZyBjb3B5KQpAQCAtMTE3LDYgKzExNyw4IEBAIEVOQUJMRV9WSURFT19UUkFDSyA9
IDsKIAogRU5BQkxFX01FRElBX1NUQVRJU1RJQ1MgPSA7CiAKK0VOQUJMRV9UT1VDSF9JQ09OX0xP
QURJTkcgPSA7CisKIEVOQUJMRV9XRUJfQVVESU8gPSA7CiAKIEVOQUJMRV9XRUJfU09DS0VUUyA9
ICQoRU5BQkxFX1dFQl9TT0NLRVRTXyQoUkVBTF9QTEFURk9STV9OQU1FKSk7CkBAIC0xMzEsNCAr
MTMzLDQgQEAgRU5BQkxFX1hIVE1MTVAgPSA7CiBFTkFCTEVfWFBBVEggPSBFTkFCTEVfWFBBVEg7
CiBFTkFCTEVfWFNMVCA9IEVOQUJMRV9YU0xUOwogCi1GRUFUVVJFX0RFRklORVMgPSAkKEVOQUJM
RV9MSU5LX1BSRUZFVENIKSAkKEVOQUJMRV9BQ0NFTEVSQVRFRF8yRF9DQU5WQVMpICQoRU5BQkxF
X1dFQkdMKSAkKEVOQUJMRV8zRF9SRU5ERVJJTkcpICQoRU5BQkxFX0FOSU1BVElPTl9BUEkpICQo
RU5BQkxFX0JMT0IpICQoRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HKSAkKEVOQUJMRV9DTElFTlRf
QkFTRURfR0VPTE9DQVRJT04pICQoRU5BQkxFX0RBVEFCQVNFKSAkKEVOQUJMRV9EQVRBTElTVCkg
JChFTkFCTEVfREFUQV9UUkFOU0ZFUl9JVEVNUykgJChFTkFCTEVfREVUQUlMUykgJChFTkFCTEVf
REVWSUNFX09SSUVOVEFUSU9OKSAkKEVOQUJMRV9ESVJFQ1RPUllfVVBMT0FEKSAkKEVOQUJMRV9E
T01fU1RPUkFHRSkgJChFTkFCTEVfRVZFTlRTT1VSQ0UpICQoRU5BQkxFX0ZJTFRFUlMpICQoRU5B
QkxFX0ZJTEVfU1lTVEVNKSAkKEVOQUJMRV9GVUxMU0NSRUVOX0FQSSkgJChFTkFCTEVfR0VPTE9D
QVRJT04pICQoRU5BQkxFX0lDT05EQVRBQkFTRSkgJChFTkFCTEVfSU5ERVhFRF9EQVRBQkFTRSkg
JChFTkFCTEVfSU5QVVRfU1BFRUNIKSAkKEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSKSAkKEVO
QUJMRV9NQVRITUwpICQoRU5BQkxFX01FVEVSX1RBRykgJChFTkFCTEVfTk9USUZJQ0FUSU9OUykg
JChFTkFCTEVfT0ZGTElORV9XRUJfQVBQTElDQVRJT05TKSAkKEVOQUJMRV9QQUdFX1ZJU0lCSUxJ
VFlfQVBJKSAkKEVOQUJMRV9QUk9HUkVTU19UQUcpICQoRU5BQkxFX1JFR0lTVEVSX1BST1RPQ09M
X0hBTkRMRVIpICQoRU5BQkxFX1FVT1RBKSAkKEVOQUJMRV9TSEFSRURfV09SS0VSUykgJChFTkFC
TEVfU1ZHKSAkKEVOQUJMRV9TVkdfQU5JTUFUSU9OKSAkKEVOQUJMRV9TVkdfQVNfSU1BR0UpICQo
RU5BQkxFX1NWR19ET01fT0JKQ19CSU5ESU5HUykgJChFTkFCTEVfU1ZHX0ZPTlRTKSAkKEVOQUJM
RV9TVkdfRk9SRUlHTl9PQkpFQ1QpICQoRU5BQkxFX1NWR19VU0UpICQoRU5BQkxFX1ZJREVPKSAk
KEVOQUJMRV9WSURFT19UUkFDSykgJChFTkFCTEVfTUVESUFfU1RBVElTVElDUykgJChFTkFCTEVf
V0VCX0FVRElPKSAkKEVOQUJMRV9XRUJfU09DS0VUUykgJChFTkFCTEVfV0VCX1RJTUlORykgJChF
TkFCTEVfV09SS0VSUykgJChFTkFCTEVfWEhUTUxNUCkgJChFTkFCTEVfWFBBVEgpICQoRU5BQkxF
X1hTTFQpOworRkVBVFVSRV9ERUZJTkVTID0gJChFTkFCTEVfTElOS19QUkVGRVRDSCkgJChFTkFC
TEVfQUNDRUxFUkFURURfMkRfQ0FOVkFTKSAkKEVOQUJMRV9XRUJHTCkgJChFTkFCTEVfM0RfUkVO
REVSSU5HKSAkKEVOQUJMRV9BTklNQVRJT05fQVBJKSAkKEVOQUJMRV9CTE9CKSAkKEVOQUJMRV9D
SEFOTkVMX01FU1NBR0lORykgJChFTkFCTEVfQ0xJRU5UX0JBU0VEX0dFT0xPQ0FUSU9OKSAkKEVO
QUJMRV9EQVRBQkFTRSkgJChFTkFCTEVfREFUQUxJU1QpICQoRU5BQkxFX0RBVEFfVFJBTlNGRVJf
SVRFTVMpICQoRU5BQkxFX0RFVEFJTFMpICQoRU5BQkxFX0RFVklDRV9PUklFTlRBVElPTikgJChF
TkFCTEVfRElSRUNUT1JZX1VQTE9BRCkgJChFTkFCTEVfRE9NX1NUT1JBR0UpICQoRU5BQkxFX0VW
RU5UU09VUkNFKSAkKEVOQUJMRV9GSUxURVJTKSAkKEVOQUJMRV9GSUxFX1NZU1RFTSkgJChFTkFC
TEVfRlVMTFNDUkVFTl9BUEkpICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9JQ09OREFU
QUJBU0UpICQoRU5BQkxFX0lOREVYRURfREFUQUJBU0UpICQoRU5BQkxFX0lOUFVUX1NQRUVDSCkg
JChFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dFUikgJChFTkFCTEVfTUFUSE1MKSAkKEVOQUJMRV9N
RVRFUl9UQUcpICQoRU5BQkxFX05PVElGSUNBVElPTlMpICQoRU5BQkxFX09GRkxJTkVfV0VCX0FQ
UExJQ0FUSU9OUykgJChFTkFCTEVfUEFHRV9WSVNJQklMSVRZX0FQSSkgJChFTkFCTEVfUFJPR1JF
U1NfVEFHKSAkKEVOQUJMRV9SRUdJU1RFUl9QUk9UT0NPTF9IQU5ETEVSKSAkKEVOQUJMRV9RVU9U
QSkgJChFTkFCTEVfU0hBUkVEX1dPUktFUlMpICQoRU5BQkxFX1NWRykgJChFTkFCTEVfU1ZHX0FO
SU1BVElPTikgJChFTkFCTEVfU1ZHX0FTX0lNQUdFKSAkKEVOQUJMRV9TVkdfRE9NX09CSkNfQklO
RElOR1MpICQoRU5BQkxFX1NWR19GT05UUykgJChFTkFCTEVfU1ZHX0ZPUkVJR05fT0JKRUNUKSAk
KEVOQUJMRV9TVkdfVVNFKSAkKEVOQUJMRV9WSURFTykgJChFTkFCTEVfVklERU9fVFJBQ0spICQo
RU5BQkxFX01FRElBX1NUQVRJU1RJQ1MpICQoRU5BQkxFX1dFQl9BVURJTykgJChFTkFCTEVfV0VC
X1NPQ0tFVFMpICQoRU5BQkxFX1dFQl9USU1JTkcpICQoRU5BQkxFX1dPUktFUlMpICQoRU5BQkxF
X1hIVE1MTVApICQoRU5BQkxFX1hQQVRIKSAkKEVOQUJMRV9YU0xUKSAkKEVOQUJMRV9UT1VDSF9J
Q09OX0xPQURJTkcpOwpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gODU2MzEpCisrKyBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTk3MCw2
ICs5NzAsNyBAQAogCQk0NDlCMTlGNTBGQTcyRUNFMDAxNUNBNEEgLyogSFRNTFBhcnNlclF1aXJr
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDQ5QjE5
RjMwRkE3MkVDRTAwMTVDQTRBIC8qIEhUTUxQYXJzZXJRdWlya3MuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NEEyOEFBQzEyREZCOEFDMDBBRTky
M0IgLyogTWF0aE1MRWxlbWVudEZhY3RvcnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQ0QTI4QUFCMTJERkI4QUMwMEFFOTIzQiAvKiBNYXRoTUxFbGVt
ZW50RmFjdG9yeS5oICovOyB9OwogCQk0NEEyOEFBRjEyREZCOEJGMDBBRTkyM0IgLyogTWF0aE1M
TmFtZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0
QTI4QUFFMTJERkI4QkYwMEFFOTIzQiAvKiBNYXRoTUxOYW1lcy5oICovOyB9OworCQk0NUJBQzJC
MDEzNjBCQkFCMDA1REEyNTggLyogSWNvblVSTC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDVCQUMyQUYxMzYwQkJBQjAwNURBMjU4IC8qIEljb25VUkwu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NjE0
QTFGRTBCMjNBOEQ2MDA0NDZFMUMgLyogY29weUN1cnNvci5wbmcgaW4gUmVzb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2MTRBMUZEMEIyM0E4RDYwMDQ0NkUxQyAv
KiBjb3B5Q3Vyc29yLnBuZyAqLzsgfTsKIAkJNDY0RUEyNzMwQjhBMzUwQjAwQThFNkUzIC8qIGNy
b3NzSGFpckN1cnNvci5wbmcgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQ2NEVBMjcxMEI4QTM1MEIwMEE4RTZFMyAvKiBjcm9zc0hhaXJDdXJzb3IucG5n
ICovOyB9OwogCQk0NjRFQTI3NDBCOEEzNTBCMDBBOEU2RTMgLyogbm90QWxsb3dlZEN1cnNvci5w
bmcgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2NEVB
MjcyMEI4QTM1MEIwMEE4RTZFMyAvKiBub3RBbGxvd2VkQ3Vyc29yLnBuZyAqLzsgfTsKQEAgLTc0
MzYsNiArNzQzNyw3IEBACiAJCTQ0OUIxOUYzMEZBNzJFQ0UwMDE1Q0E0QSAvKiBIVE1MUGFyc2Vy
UXVpcmtzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhUTUxQYXJzZXJRdWly
a3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDRBMjhBQUIxMkRGQjhBQzAwQUU5
MjNCIC8qIE1hdGhNTEVsZW1lbnRGYWN0b3J5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IE1hdGhNTEVsZW1lbnRGYWN0b3J5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQ0QTI4QUFFMTJERkI4QkYwMEFFOTIzQiAvKiBNYXRoTUxOYW1lcy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBNYXRoTUxOYW1lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk0NUJBQzJBRjEzNjBCQkFCMDA1REEyNTggLyogSWNvblVSTC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBJY29uVVJMLmg7IHBhdGggPSBkb20vSWNvblVSTC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjE0QTFGRDBCMjNBOEQ2MDA0NDZFMUMg
LyogY29weUN1cnNvci5wbmcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBpbWFnZS5wbmc7IHBhdGggPSBjb3B5Q3Vyc29yLnBuZzsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNDY0RUEyNzEwQjhBMzUwQjAwQThFNkUzIC8qIGNyb3NzSGFpckN1
cnNvci5wbmcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBpbWFnZS5wbmc7IHBhdGggPSBjcm9zc0hhaXJDdXJzb3IucG5nOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0NjRFQTI3MjBCOEEzNTBCMDBBOEU2RTMgLyogbm90QWxsb3dlZEN1cnNv
ci5wbmcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBp
bWFnZS5wbmc7IHBhdGggPSBub3RBbGxvd2VkQ3Vyc29yLnBuZzsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTEyNTE3LDYgKzEyNTE5LDcgQEAKIAkJMDg2N0Q2OTFGRTg0MDI4RkMwMkFB
QzA3IC8qIFdlYktpdCAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAo
CisJCQkJNDVCQUMyQUYxMzYwQkJBQjAwNURBMjU4IC8qIEljb25VUkwuaCAqLywKIAkJCQk2NUM5
N0FGMjA4RUE5MDg4MDBBQ0QyNzMgLyogY29uZmlnLmggKi8sCiAJCQkJRURFQzk4MDIwQUVEN0Ux
NzAwNTkxMzdGIC8qIFdlYkNvcmVQcmVmaXguaCAqLywKIAkJCQk5MzA3MDYxMzA5RTBDQTgyMDBC
MTdGRTQgLyogRGVyaXZlZFNvdXJjZXMubWFrZSAqLywKQEAgLTIyNzAyLDYgKzIyNzA1LDcgQEAK
IAkJCQk5M0YxOTlFRDA4MjQ1RTU5MDAxRTlBQkMgLyogWFNMVFByb2Nlc3Nvci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJRTFCRTUxMkUwQ0Y2QzUxMjAwMkVBOTU5IC8qIFhTTFRVbmljb2RlU29ydC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJOTc3RTJFMEYxMkYwRkM5QzAwQzEzMzc5IC8qIFhTU0ZpbHRl
ci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDVCQUMyQjAxMzYwQkJBQjAwNURBMjU4IC8qIEljb25V
UkwuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHBy
b2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCShyZXZpc2lv
biA4NTYzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQzNjYsMTUgKzQzNjYsMjYgQEAgdW5zaWduZWQgRm9ybUVsZW1lbnRLZXlIYXNoOjpo
YXNoKGNvbnN0IAogICAgIHJldHVybiBTdHJpbmdIYXNoZXI6Omhhc2hNZW1vcnk8c2l6ZW9mKEZv
cm1FbGVtZW50S2V5KT4oJmtleSk7CiB9CiAKLXZvaWQgRG9jdW1lbnQ6OnNldEljb25VUkwoY29u
c3QgU3RyaW5nJiBpY29uVVJMLCBjb25zdCBTdHJpbmcmIHR5cGUpCitJY29uVVJMIERvY3VtZW50
OjppY29uVVJMKEljb25UeXBlIGljb25UeXBlKSBjb25zdAogewotICAgIC8vIEZJWE1FIC0gPHJk
YXI6Ly9wcm9ibGVtLzQ3Mjc2NDU+IC0gQXQgc29tZSBwb2ludCBpbiB0aGUgZnV0dXJlLCB3ZSBt
aWdodCBhY3R1YWxseSBob25vciB0aGUgInR5cGUiIAotICAgIGlmIChtX2ljb25VUkwuaXNFbXB0
eSgpKQotICAgICAgICBtX2ljb25VUkwgPSBpY29uVVJMOwotICAgIGVsc2UgaWYgKCF0eXBlLmlz
RW1wdHkoKSkKLSAgICAgICAgbV9pY29uVVJMID0gaWNvblVSTDsKKyAgICByZXR1cm4gbV9pY29u
VVJMc1tJY29uVVJMOjp0b0ljb25JbmRleChpY29uVHlwZSldOworfQorCit2b2lkIERvY3VtZW50
OjpzZXRJY29uVVJMKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBJ
Y29uVHlwZSBpY29uVHlwZSkKK3sKKyAgICAvLyBGSVhNRSAtIDxyZGFyOi8vcHJvYmxlbS80NzI3
NjQ1PiAtIEF0IHNvbWUgcG9pbnQgaW4gdGhlIGZ1dHVyZSwgd2UgbWlnaHQgYWN0dWFsbHkgaG9u
b3IgdGhlICJtaW1lVHlwZSIKKyAgICBJY29uVVJMIG5ld1VSTChLVVJMKFBhcnNlZFVSTFN0cmlu
ZywgdXJsKSwgaWNvblR5cGUpOworICAgIGlmICghaWNvblVSTChpY29uVHlwZSkubV9pY29uVVJM
LmlzRW1wdHkoKSkKKyAgICAgICAgc2V0SWNvblVSTChuZXdVUkwpOworICAgIGVsc2UgaWYgKCFt
aW1lVHlwZS5pc0VtcHR5KCkpCisgICAgICAgIHNldEljb25VUkwobmV3VVJMKTsKICAgICBpZiAo
RnJhbWUqIGYgPSBmcmFtZSgpKQotICAgICAgICBmLT5sb2FkZXIoKS0+c2V0SWNvblVSTChtX2lj
b25VUkwpOworICAgICAgICBmLT5sb2FkZXIoKS0+c2V0SWNvblVSTChuZXdVUkwpOworfQorCit2
b2lkIERvY3VtZW50OjpzZXRJY29uVVJMKGNvbnN0IEljb25VUkwmIGljb25VUkwpCit7CisgICAg
bV9pY29uVVJMc1tJY29uVVJMOjp0b0ljb25JbmRleChpY29uVVJMLm1faWNvblR5cGUpXSA9IGlj
b25VUkw7CiB9CiAKIHZvaWQgRG9jdW1lbnQ6OnJlZ2lzdGVyRm9ybUVsZW1lbnRXaXRoRm9ybUF0
dHJpYnV0ZShGb3JtQXNzb2NpYXRlZEVsZW1lbnQqIGVsZW1lbnQpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuaAkocmV2aXNpb24gODU2MzEpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkNvbG9yLmgiCiAj
aW5jbHVkZSAiRE9NVGltZVN0YW1wLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRUaW1pbmcuaCIKKyNp
bmNsdWRlICJJY29uVVJMLmgiCiAjaW5jbHVkZSAiUXVhbGlmaWVkTmFtZS5oIgogI2luY2x1ZGUg
IlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJTdHJpbmdXaXRoRGlyZWN0aW9u
LmgiCkBAIC05MTcsOCArOTE4LDkgQEAgcHVibGljOgogICAgIAogICAgIHZvaWQgc2V0SGFzTm9k
ZXNXaXRoUGxhY2Vob2xkZXJTdHlsZSgpIHsgbV9oYXNOb2Rlc1dpdGhQbGFjZWhvbGRlclN0eWxl
ID0gdHJ1ZTsgfQogCi0gICAgY29uc3QgU3RyaW5nJiBpY29uVVJMKCkgY29uc3QgeyByZXR1cm4g
bV9pY29uVVJMOyB9Ci0gICAgdm9pZCBzZXRJY29uVVJMKGNvbnN0IFN0cmluZyYgaWNvblVSTCwg
Y29uc3QgU3RyaW5nJiB0eXBlKTsKKyAgICBJY29uVVJMIGljb25VUkwoSWNvblR5cGUpIGNvbnN0
OworICAgIHZvaWQgc2V0SWNvblVSTChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBJY29u
VHlwZSk7CisgICAgdm9pZCBzZXRJY29uVVJMKGNvbnN0IEljb25VUkwmKTsKIAogICAgIHZvaWQg
c2V0VXNlU2VjdXJlS2V5Ym9hcmRFbnRyeVdoZW5BY3RpdmUoYm9vbCk7CiAgICAgYm9vbCB1c2VT
ZWN1cmVLZXlib2FyZEVudHJ5V2hlbkFjdGl2ZSgpIGNvbnN0OwpAQCAtMTMyNCw4ICsxMzI2LDgg
QEAgcHJpdmF0ZToKIAogICAgIGJvb2wgbV9jcmVhdGVSZW5kZXJlcnM7CiAgICAgYm9vbCBtX2lu
UGFnZUNhY2hlOwotICAgIFN0cmluZyBtX2ljb25VUkw7Ci0gICAgCisgICAgSWNvblVSTCBtX2lj
b25VUkxzW0lDT05fQ09VTlRdOworCiAgICAgSGFzaFNldDxFbGVtZW50Kj4gbV9kb2N1bWVudEFj
dGl2YXRpb25DYWxsYmFja0VsZW1lbnRzOwogICAgIEhhc2hTZXQ8RWxlbWVudCo+IG1fbWVkaWFW
b2x1bWVDYWxsYmFja0VsZW1lbnRzOwogICAgIEhhc2hTZXQ8RWxlbWVudCo+IG1fcHJpdmF0ZUJy
b3dzaW5nU3RhdGVDaGFuZ2VkRWxlbWVudHM7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vSWNv
blVSTC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9JY29uVVJMLmgJKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vSWNvblVSTC5oCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDkyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBt
ZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICog
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBJY29uVVJMX2gKKyNkZWZpbmUgSWNvblVSTF9oCisKKyNpbmNs
dWRlICJLVVJMLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworI2lmIEVOQUJMRShUT1VDSF9J
Q09OX0xPQURJTkcpCisjZGVmaW5lIElDT05fQ09VTlQgMworI2Vsc2UKKyNkZWZpbmUgSUNPTl9D
T1VOVCAxCisjZW5kaWYKKworZW51bSBJY29uVHlwZSB7CisgICAgSW52YWxpZEljb24gPSAwLAor
ICAgIEZhdmljb24gPSAxLAorICAgIFRvdWNoSWNvbiA9IDEgPDwgMSwKKyAgICBUb3VjaFByZWNv
bXBvc2VkSWNvbiA9IDEgPDwgMgorfTsKKworc3RydWN0IEljb25VUkwgeworICAgIEljb25UeXBl
IG1faWNvblR5cGU7CisgICAgS1VSTCBtX2ljb25VUkw7CisKKyAgICBJY29uVVJMKCkKKyAgICAg
ICAgOiBtX2ljb25UeXBlKEludmFsaWRJY29uKQorICAgIHsKKyAgICB9CisKKyAgICBJY29uVVJM
KGNvbnN0IEtVUkwmIHVybCwgSWNvblR5cGUgdHlwZSkKKyAgICAgICAgOiBtX2ljb25UeXBlKHR5
cGUpCisgICAgICAgICwgbV9pY29uVVJMKHVybCkKKyAgICB7CisgICAgfQorCisKKyAgICAvLyBS
ZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgZ2l2ZW4gdHlwZSwgMCBpcyByZXR1cm5lZCBpZiB0aGUg
dHlwZSBpcyBpbnZhbGlkLgorICAgIHN0YXRpYyBzaXplX3QgdG9JY29uSW5kZXgoSWNvblR5cGUg
dHlwZSkKKyAgICB7CisgICAgICAgIHNpemVfdCBpbmRleCA9IDA7CisgICAgICAgIHN3aXRjaCAo
dHlwZSkgeworICAgICAgICBjYXNlIEZhdmljb246CisgICAgICAgICAgICBpbmRleCA9IDA7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAjaWYgRU5BQkxFKFRPVUNIX0lDT05fTE9BRElORykKKyAg
ICAgICAgY2FzZSBUb3VjaFByZWNvbXBvc2VkSWNvbjoKKyAgICAgICAgICAgIGluZGV4ID0gMTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFRvdWNoSWNvbjoKKyAgICAgICAgICAg
IGluZGV4ID0gMjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICNlbmRpZgorICAgICAgICBkZWZh
dWx0OgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKyAgICAg
ICAgcmV0dXJuIGluZGV4OworICAgIH0KK307CisKK30KKworI2VuZGlmIC8vIEljb25VUkxfaAoK
UHJvcGVydHkgY2hhbmdlcyBvbjogU291cmNlL1dlYkNvcmUvZG9tL0ljb25VUkwuaApfX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiAgICsgTEYKCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxMaW5rRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTGlua0VsZW1lbnQuY3BwCShyZXZpc2lvbiA4NTYzMSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYwLDcgKzE2MCw3
IEBAIHZvaWQgSFRNTExpbmtFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnUKIHZvaWQgSFRNTExp
bmtFbGVtZW50Ojp0b2tlbml6ZVJlbEF0dHJpYnV0ZShjb25zdCBBdG9taWNTdHJpbmcmIHJlbCwg
UmVsQXR0cmlidXRlJiByZWxBdHRyaWJ1dGUpCiB7CiAgICAgcmVsQXR0cmlidXRlLm1faXNTdHls
ZVNoZWV0ID0gZmFsc2U7Ci0gICAgcmVsQXR0cmlidXRlLm1faXNJY29uID0gZmFsc2U7CisgICAg
cmVsQXR0cmlidXRlLm1faWNvblR5cGUgPSBJbnZhbGlkSWNvbjsKICAgICByZWxBdHRyaWJ1dGUu
bV9pc0FsdGVybmF0ZSA9IGZhbHNlOwogICAgIHJlbEF0dHJpYnV0ZS5tX2lzRE5TUHJlZmV0Y2gg
PSBmYWxzZTsKICNpZiBFTkFCTEUoTElOS19QUkVGRVRDSCkKQEAgLTE3MCw3ICsxNzAsMTMgQEAg
dm9pZCBIVE1MTGlua0VsZW1lbnQ6OnRva2VuaXplUmVsQXR0cmlidQogICAgIGlmIChlcXVhbEln
bm9yaW5nQ2FzZShyZWwsICJzdHlsZXNoZWV0IikpCiAgICAgICAgIHJlbEF0dHJpYnV0ZS5tX2lz
U3R5bGVTaGVldCA9IHRydWU7CiAgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UocmVsLCAi
aWNvbiIpIHx8IGVxdWFsSWdub3JpbmdDYXNlKHJlbCwgInNob3J0Y3V0IGljb24iKSkKLSAgICAg
ICAgcmVsQXR0cmlidXRlLm1faXNJY29uID0gdHJ1ZTsKKyAgICAgICAgcmVsQXR0cmlidXRlLm1f
aWNvblR5cGUgPSBGYXZpY29uOworI2lmIEVOQUJMRShUT1VDSF9JQ09OX0xPQURJTkcpCisgICAg
ZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UocmVsLCAiYXBwbGUtdG91Y2gtaWNvbiIpKQorICAg
ICAgICByZWxBdHRyaWJ1dGUubV9pY29uVHlwZSA9IFRvdWNoSWNvbjsKKyAgICBlbHNlIGlmIChl
cXVhbElnbm9yaW5nQ2FzZShyZWwsICJhcHBsZS10b3VjaC1pY29uLXByZWNvbXBvc2VkIikpCisg
ICAgICAgIHJlbEF0dHJpYnV0ZS5tX2ljb25UeXBlID0gVG91Y2hQcmVjb21wb3NlZEljb247Cisj
ZW5kaWYKICAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShyZWwsICJkbnMtcHJlZmV0Y2gi
KSkKICAgICAgICAgcmVsQXR0cmlidXRlLm1faXNETlNQcmVmZXRjaCA9IHRydWU7CiAgICAgZWxz
ZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UocmVsLCAiYWx0ZXJuYXRlIHN0eWxlc2hlZXQiKSB8fCBl
cXVhbElnbm9yaW5nQ2FzZShyZWwsICJzdHlsZXNoZWV0IGFsdGVybmF0ZSIpKSB7CkBAIC0xODks
NyArMTk1LDEzIEBAIHZvaWQgSFRNTExpbmtFbGVtZW50Ojp0b2tlbml6ZVJlbEF0dHJpYnUKICAg
ICAgICAgICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKCppdCwgImFsdGVybmF0ZSIpKQog
ICAgICAgICAgICAgICAgIHJlbEF0dHJpYnV0ZS5tX2lzQWx0ZXJuYXRlID0gdHJ1ZTsKICAgICAg
ICAgICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKCppdCwgImljb24iKSkKLSAgICAgICAg
ICAgICAgICByZWxBdHRyaWJ1dGUubV9pc0ljb24gPSB0cnVlOworICAgICAgICAgICAgICAgIHJl
bEF0dHJpYnV0ZS5tX2ljb25UeXBlID0gRmF2aWNvbjsKKyNpZiBFTkFCTEUoVE9VQ0hfSUNPTl9M
T0FESU5HKQorICAgICAgICAgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoKml0LCAiYXBw
bGUtdG91Y2gtaWNvbiIpKQorICAgICAgICAgICAgICAgIHJlbEF0dHJpYnV0ZS5tX2ljb25UeXBl
ID0gVG91Y2hJY29uOworICAgICAgICAgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoKml0
LCAiYXBwbGUtdG91Y2gtaWNvbi1wcmVjb21wb3NlZCIpKQorICAgICAgICAgICAgICAgIHJlbEF0
dHJpYnV0ZS5tX2ljb25UeXBlID0gVG91Y2hQcmVjb21wb3NlZEljb247CisjZW5kaWYKICNpZiBF
TkFCTEUoTElOS19QUkVGRVRDSCkKICAgICAgICAgICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdD
YXNlKCppdCwgInByZWZldGNoIikpCiAgICAgICAgICAgICAgIHJlbEF0dHJpYnV0ZS5tX2lzTGlu
a1ByZWZldGNoID0gdHJ1ZTsKQEAgLTIyMiwxMCArMjM0LDEwIEBAIHZvaWQgSFRNTExpbmtFbGVt
ZW50Ojpwcm9jZXNzKCkKIAogICAgIC8vIElFIGV4dGVuc2lvbjogbG9jYXRpb24gb2Ygc21hbGwg
aWNvbiBmb3IgbG9jYXRpb25iYXIgLyBib29rbWFya3MKICAgICAvLyBXZSdsbCByZWNvcmQgdGhp
cyBVUkwgcGVyIGRvY3VtZW50LCBldmVuIGlmIHdlIGxhdGVyIG9ubHkgdXNlIGl0IGluIHRvcCBs
ZXZlbCBmcmFtZXMKLSAgICBpZiAobV9yZWxBdHRyaWJ1dGUubV9pc0ljb24gJiYgbV91cmwuaXNW
YWxpZCgpICYmICFtX3VybC5pc0VtcHR5KCkpIHsKKyAgICBpZiAobV9yZWxBdHRyaWJ1dGUubV9p
Y29uVHlwZSAhPSBJbnZhbGlkSWNvbiAmJiBtX3VybC5pc1ZhbGlkKCkgJiYgIW1fdXJsLmlzRW1w
dHkoKSkgewogICAgICAgICBpZiAoIWNoZWNrQmVmb3JlTG9hZEV2ZW50KCkpIAogICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICBkb2N1bWVudCgpLT5zZXRJY29uVVJMKG1fdXJsLnN0cmluZygp
LCB0eXBlKTsKKyAgICAgICAgZG9jdW1lbnQoKS0+c2V0SWNvblVSTChtX3VybC5zdHJpbmcoKSwg
dHlwZSwgbV9yZWxBdHRyaWJ1dGUubV9pY29uVHlwZSk7CiAgICAgfQogCiAgICAgaWYgKG1fcmVs
QXR0cmlidXRlLm1faXNETlNQcmVmZXRjaCkgewpAQCAtNDczLDcgKzQ4NSw3IEBAIHZvaWQgSFRN
TExpbmtFbGVtZW50OjphZGRTdWJyZXNvdXJjZUF0dHIKICAgICBIVE1MRWxlbWVudDo6YWRkU3Vi
cmVzb3VyY2VBdHRyaWJ1dGVVUkxzKHVybHMpOwogCiAgICAgLy8gRmF2aWNvbnMgYXJlIGhhbmRs
ZWQgYnkgYSBzcGVjaWFsIGNhc2UgaW4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKCkKLSAgICBp
ZiAobV9yZWxBdHRyaWJ1dGUubV9pc0ljb24pCisgICAgaWYgKG1fcmVsQXR0cmlidXRlLm1faWNv
blR5cGUgIT0gSW52YWxpZEljb24pCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICghbV9yZWxB
dHRyaWJ1dGUubV9pc1N0eWxlU2hlZXQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxM
aW5rRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtF
bGVtZW50LmgJKHJldmlzaW9uIDg1NjMxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlu
a0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIkNh
Y2hlZFJlc291cmNlQ2xpZW50LmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VIYW5kbGUuaCIK
ICNpbmNsdWRlICJIVE1MRWxlbWVudC5oIgorI2luY2x1ZGUgIkljb25VUkwuaCIKICNpbmNsdWRl
ICJUaW1lci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zOSw3ICs0MCw3IEBAIGNsYXNz
IEhUTUxMaW5rRWxlbWVudCA6IHB1YmxpYyBIVE1MRWxlbWUKIHB1YmxpYzoKICAgICBzdHJ1Y3Qg
UmVsQXR0cmlidXRlIHsKICAgICAgICAgYm9vbCBtX2lzU3R5bGVTaGVldDsKLSAgICAgICAgYm9v
bCBtX2lzSWNvbjsKKyAgICAgICAgSWNvblR5cGUgbV9pY29uVHlwZTsKICAgICAgICAgYm9vbCBt
X2lzQWx0ZXJuYXRlOwogICAgICAgICBib29sIG1faXNETlNQcmVmZXRjaDsKICNpZiBFTkFCTEUo
TElOS19QUkVGRVRDSCkKQEAgLTQ5LDcgKzUwLDcgQEAgcHVibGljOgogCiAgICAgICAgIFJlbEF0
dHJpYnV0ZSgpCiAgICAgICAgICAgICA6IG1faXNTdHlsZVNoZWV0KGZhbHNlKQotICAgICAgICAg
ICAgLCBtX2lzSWNvbihmYWxzZSkKKyAgICAgICAgICAgICwgbV9pY29uVHlwZShJbnZhbGlkSWNv
bikKICAgICAgICAgICAgICwgbV9pc0FsdGVybmF0ZShmYWxzZSkKICAgICAgICAgICAgICwgbV9p
c0ROU1ByZWZldGNoKGZhbHNlKQogI2lmIEVOQUJMRShMSU5LX1BSRUZFVENIKQpAQCAtNzYsNyAr
NzcsNiBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzRGlzYWJsZWQoKSBjb25zdCB7IHJldHVybiBt
X2Rpc2FibGVkU3RhdGUgPT0gRGlzYWJsZWQ7IH0KICAgICBib29sIGlzRW5hYmxlZFZpYVNjcmlw
dCgpIGNvbnN0IHsgcmV0dXJuIG1fZGlzYWJsZWRTdGF0ZSA9PSBFbmFibGVkVmlhU2NyaXB0OyB9
Ci0gICAgYm9vbCBpc0ljb24oKSBjb25zdCB7IHJldHVybiBtX3JlbEF0dHJpYnV0ZS5tX2lzSWNv
bjsgfQogICAgIGJvb2wgZGlzYWJsZWQoKSBjb25zdDsKICAgICB2b2lkIHNldERpc2FibGVkKGJv
b2wpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5u
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVs
b2FkU2Nhbm5lci5jcHAJKHJldmlzaW9uIDg1NjMxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9w
YXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTUsNyArOTUs
NyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBIVE1MTGlua0VsZW1lbnQ6OlJlbEF0dHJpYnV0
ZSByZWw7CiAgICAgICAgIEhUTUxMaW5rRWxlbWVudDo6dG9rZW5pemVSZWxBdHRyaWJ1dGUoYXR0
cmlidXRlVmFsdWUsIHJlbCk7Ci0gICAgICAgIHJldHVybiByZWwubV9pc1N0eWxlU2hlZXQgJiYg
IXJlbC5tX2lzQWx0ZXJuYXRlICYmICFyZWwubV9pc0ljb24gJiYgIXJlbC5tX2lzRE5TUHJlZmV0
Y2g7CisgICAgICAgIHJldHVybiByZWwubV9pc1N0eWxlU2hlZXQgJiYgIXJlbC5tX2lzQWx0ZXJu
YXRlICYmIHJlbC5tX2ljb25UeXBlID09IEludmFsaWRJY29uICYmICFyZWwubV9pc0ROU1ByZWZl
dGNoOwogICAgIH0KIAogICAgIHN0YXRpYyBib29sIGxpbmtNZWRpYUF0dHJpYnV0ZUlzU2NyZWVu
KGNvbnN0IFN0cmluZyYgYXR0cmlidXRlVmFsdWUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRG9jdW1lbnRMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Eb2N1bWVudExvYWRlci5jcHAJKHJldmlzaW9uIDg1NjMxKQorKysgU291cmNlL1dlYkNvcmUv
bG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjYxLDE0ICs2NjEs
MTkgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6c2V0VGl0bGUoY29uc3QgU3RyaQogICAgIH0KIH0K
IAotdm9pZCBEb2N1bWVudExvYWRlcjo6c2V0SWNvblVSTChjb25zdCBTdHJpbmcmIGljb25VUkwp
CitJY29uVVJMIERvY3VtZW50TG9hZGVyOjppY29uVVJMKEljb25UeXBlIGljb25UeXBlKSBjb25z
dAogewotICAgIGlmIChpY29uVVJMLmlzRW1wdHkoKSkKKyAgICByZXR1cm4gbV9pY29uVVJMc1tJ
Y29uVVJMOjp0b0ljb25JbmRleChpY29uVHlwZSldOworfQorCit2b2lkIERvY3VtZW50TG9hZGVy
OjpzZXRJY29uVVJMKGNvbnN0IEljb25VUkwmIHVybCkKK3sKKyAgICBpZiAodXJsLm1faWNvblVS
TC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChtX3BhZ2VJY29uVVJMICE9
IGljb25VUkwpIHsKLSAgICAgICAgbV9wYWdlSWNvblVSTCA9IGljb25VUkw7Ci0gICAgICAgIGZy
YW1lTG9hZGVyKCktPmRpZENoYW5nZUljb25zKHRoaXMpOworICAgIGlmIChpY29uVVJMKHVybC5t
X2ljb25UeXBlKS5tX2ljb25VUkwgIT0gdXJsLm1faWNvblVSTCkgeworICAgICAgICBtX2ljb25V
UkxzW0ljb25VUkw6OnRvSWNvbkluZGV4KHVybC5tX2ljb25UeXBlKV0gPSB1cmw7CisgICAgICAg
IGZyYW1lTG9hZGVyKCktPmRpZENoYW5nZUljb25zKHRoaXMsIHVybC5tX2ljb25UeXBlKTsKICAg
ICB9CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCShyZXZp
c2lvbiA4NTYzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiRG9jdW1lbnRMb2FkVGlt
aW5nLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRXcml0ZXIuaCIKICNpbmNsdWRlICJJY29uRGF0YWJh
c2VCYXNlLmgiCisjaW5jbHVkZSAiSWNvblVSTC5oIgogI2luY2x1ZGUgIk5hdmlnYXRpb25BY3Rp
b24uaCIKICNpbmNsdWRlICJSZXNvdXJjZUVycm9yLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1
ZXN0LmgiCkBAIC0xMjMsNyArMTI0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBi
b29sIGlzTG9hZGluZ0luQVBJU2Vuc2UoKSBjb25zdDsKICAgICAgICAgdm9pZCBzZXRQcmltYXJ5
TG9hZENvbXBsZXRlKGJvb2wpOwogICAgICAgICB2b2lkIHNldFRpdGxlKGNvbnN0IFN0cmluZ1dp
dGhEaXJlY3Rpb24mKTsKLSAgICAgICAgdm9pZCBzZXRJY29uVVJMKGNvbnN0IFN0cmluZyYpOwor
ICAgICAgICB2b2lkIHNldEljb25VUkwoY29uc3QgSWNvblVSTCYpOwogICAgICAgICBjb25zdCBT
dHJpbmcmIG92ZXJyaWRlRW5jb2RpbmcoKSBjb25zdCB7IHJldHVybiBtX292ZXJyaWRlRW5jb2Rp
bmc7IH0KIAogI2lmIFBMQVRGT1JNKE1BQykKQEAgLTE3MCw3ICsxNzEsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKICAgICAgICAgdm9pZCBzdG9wUmVjb3JkaW5nUmVzcG9uc2VzKCk7CiAgICAg
ICAgIGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mIHRpdGxlKCkgY29uc3QgeyByZXR1cm4gbV9w
YWdlVGl0bGU7IH0KLSAgICAgICAgY29uc3QgU3RyaW5nJiBpY29uVVJMKCkgY29uc3QgeyByZXR1
cm4gbV9wYWdlSWNvblVSTDsgfQorICAgICAgICBJY29uVVJMIGljb25VUkwoSWNvblR5cGUpIGNv
bnN0OwogCiAgICAgICAgIEtVUkwgdXJsRm9ySGlzdG9yeSgpIGNvbnN0OwogICAgICAgICBib29s
IHVybEZvckhpc3RvcnlSZWZsZWN0c0ZhaWx1cmUoKSBjb25zdDsKQEAgLTMwMCw3ICszMDEsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wgbV93YXNPbmxvYWRIYW5kbGVkOwog
CiAgICAgICAgIFN0cmluZ1dpdGhEaXJlY3Rpb24gbV9wYWdlVGl0bGU7Ci0gICAgICAgIFN0cmlu
ZyBtX3BhZ2VJY29uVVJMOworICAgICAgICBJY29uVVJMIG1faWNvblVSTHNbSUNPTl9DT1VOVF07
CiAKICAgICAgICAgU3RyaW5nIG1fb3ZlcnJpZGVFbmNvZGluZzsKIApJbmRleDogU291cmNlL1dl
YkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9FbXB0eUNsaWVudHMuaAkocmV2aXNpb24gODU2MzEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3MSw3ICsyNzEsNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUljb24oKSB7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpIHsgfQog
ICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBTdHJpbmdXaXRo
RGlyZWN0aW9uJikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMo
KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucyhJY29uVHlwZSkg
eyB9CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ29tbWl0TG9hZCgpIHsgfQogICAgIHZp
cnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxQcm92aXNpb25hbExvYWQoY29uc3QgUmVzb3VyY2VF
cnJvciYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxMb2FkKGNvbnN0IFJl
c291cmNlRXJyb3ImKSB7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNw
cAkocmV2aXNpb24gODU2MzEpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OSw2ICs2OSw3IEBACiAjaW5jbHVkZSAiSGlzdG9yeUl0
ZW0uaCIKICNpbmNsdWRlICJJY29uRGF0YWJhc2UuaCIKICNpbmNsdWRlICJJY29uTG9hZGVyLmgi
CisjaW5jbHVkZSAiSWNvblVSTC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckNvbnRyb2xsZXIuaCIK
ICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJMb2dnaW5n
LmgiCkBAIC00NjcsMTggKzQ2OCw1NiBAQCBib29sIEZyYW1lTG9hZGVyOjpjbG9zZVVSTCgpCiAK
IEtVUkwgRnJhbWVMb2FkZXI6Omljb25VUkwoKQogewotICAgIC8vIElmIHRoaXMgaXNuJ3QgYSB0
b3AgbGV2ZWwgZnJhbWUsIHJldHVybiBub3RoaW5nCisgICAgVmVjdG9yPEljb25VUkw+IHVybHMg
PSBpY29uVVJMcyhGYXZpY29uKTsKKyAgICByZXR1cm4gdXJscy5pc0VtcHR5KCkgPyBLVVJMKCkg
OiB1cmxzWzBdLm1faWNvblVSTDsKK30KKworVmVjdG9yPEljb25VUkw+IEZyYW1lTG9hZGVyOjpp
Y29uVVJMcyhpbnQgaWNvblR5cGVzKQoreworICAgIFZlY3RvcjxJY29uVVJMPiBpY29uVVJMczsK
KyAgICBpZiAoaWNvblR5cGVzICYgRmF2aWNvbiAmJiAhZmlsbEljb25VUkwoRmF2aWNvbiwgJmlj
b25VUkxzKSkKKyAgICAgICAgaWNvblVSTHMuYXBwZW5kKGdldERlZmF1bHRJY29uVVJMKEZhdmlj
b24pKTsKKworI2lmIEVOQUJMRShUT1VDSF9JQ09OX0xPQURJTkcpCisgICAgYm9vbCBoYXZlUHJl
Y29tcG9zZWRJY29uID0gZmFsc2U7CisgICAgaWYgKGljb25UeXBlcyAmIFRvdWNoUHJlY29tcG9z
ZWRJY29uKQorICAgICAgICBoYXZlUHJlY29tcG9zZWRJY29uID0gZmlsbEljb25VUkwoVG91Y2hQ
cmVjb21wb3NlZEljb24sICZpY29uVVJMcyk7CisKKyAgICBib29sIGhhdmVUb3VjaEljb24gPSBm
YWxzZTsKKyAgICBpZiAoaWNvblR5cGVzICYgVG91Y2hJY29uKQorICAgICAgICBoYXZlVG91Y2hJ
Y29uID0gZmlsbEljb25VUkwoVG91Y2hJY29uLCAmaWNvblVSTHMpOworCisgICAgLy8gT25seSBy
ZXR1cm4gdGhlIGRlZmF1bHQgdG91Y2ggaWNvbnMgd2hlbiB0aGUgYm90aCB3ZXJlIHJlcXVpcmVk
IGFuZCBuZWl0aGVyIHdhcyBnb3R0ZW4uCisgICAgaWYgKGljb25UeXBlcyAmIFRvdWNoUHJlY29t
cG9zZWRJY29uICYmIGljb25UeXBlcyAmIFRvdWNoSWNvbiAmJiAhaGF2ZVByZWNvbXBvc2VkSWNv
biAmJiAhaGF2ZVRvdWNoSWNvbikgeworICAgICAgICBpY29uVVJMcy5hcHBlbmQoZ2V0RGVmYXVs
dEljb25VUkwoVG91Y2hQcmVjb21wb3NlZEljb24pKTsKKyAgICAgICAgaWNvblVSTHMuYXBwZW5k
KGdldERlZmF1bHRJY29uVVJMKFRvdWNoSWNvbikpOworICAgIH0KKyNlbmRpZgorICAgIHJldHVy
biBpY29uVVJMczsKK30KKworYm9vbCBGcmFtZUxvYWRlcjo6ZmlsbEljb25VUkwoSWNvblR5cGUg
aWNvblR5cGUsIFZlY3RvcjxJY29uVVJMPiogaWNvblVSTHMpCit7CisgICAgLy8gSWYgdGhpcyBp
c24ndCBhIHRvcCBsZXZlbCBmcmFtZSwgcmV0dXJuCiAgICAgaWYgKG1fZnJhbWUtPnRyZWUoKSAm
JiBtX2ZyYW1lLT50cmVlKCktPnBhcmVudCgpKQotICAgICAgICByZXR1cm4gS1VSTCgpOworICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAvLyBJZiB3ZSBoYXZlIGFuIGljb25VUkwgZnJvbSBh
IExpbmsgZWxlbWVudCwgcmV0dXJuIHRoYXQKLSAgICBpZiAoIW1fZnJhbWUtPmRvY3VtZW50KCkt
Pmljb25VUkwoKS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBLVVJMKFBhcnNlZFVSTFN0cmlu
ZywgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+aWNvblVSTCgpKTsKKyAgICBJY29uVVJMIHVybCA9IG1f
ZnJhbWUtPmRvY3VtZW50KCktPmljb25VUkwoaWNvblR5cGUpOworICAgIGlmICh1cmwubV9pY29u
VVJMLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWNvblVSTHMtPmFw
cGVuZCh1cmwpOworCisgICAgcmV0dXJuIHRydWU7Cit9CiAKK0ljb25VUkwgRnJhbWVMb2FkZXI6
OmdldERlZmF1bHRJY29uVVJMKEljb25UeXBlIGljb25UeXBlKQorewogICAgIC8vIERvbid0IHJl
dHVybiBhIGZhdmljb24gaWNvblVSTCB1bmxlc3Mgd2UncmUgaHR0cCBvciBodHRwcwogICAgIEtV
UkwgZG9jdW1lbnRVUkwgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT51cmwoKTsKICAgICBpZiAoIWRv
Y3VtZW50VVJMLnByb3RvY29sSW5IVFRQRmFtaWx5KCkpCi0gICAgICAgIHJldHVybiBLVVJMKCk7
CisgICAgICAgIHJldHVybiBJY29uVVJMKCk7CiAKICAgICBLVVJMIHVybDsKICAgICBib29sIGNv
dWxkU2V0UHJvdG9jb2wgPSB1cmwuc2V0UHJvdG9jb2woZG9jdW1lbnRVUkwucHJvdG9jb2woKSk7
CkBAIC00ODYsOCArNTI1LDIxIEBAIEtVUkwgRnJhbWVMb2FkZXI6Omljb25VUkwoKQogICAgIHVy
bC5zZXRIb3N0KGRvY3VtZW50VVJMLmhvc3QoKSk7CiAgICAgaWYgKGRvY3VtZW50VVJMLmhhc1Bv
cnQoKSkKICAgICAgICAgdXJsLnNldFBvcnQoZG9jdW1lbnRVUkwucG9ydCgpKTsKLSAgICB1cmwu
c2V0UGF0aCgiL2Zhdmljb24uaWNvIik7Ci0gICAgcmV0dXJuIHVybDsKKyAgICBpZiAoaWNvblR5
cGUgPT0gRmF2aWNvbikgeworICAgICAgICB1cmwuc2V0UGF0aCgiL2Zhdmljb24uaWNvIik7Cisg
ICAgICAgIHJldHVybiBJY29uVVJMKEtVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmwpLCBGYXZpY29u
KTsKKyAgICB9CisjaWYgRU5BQkxFKFRPVUNIX0lDT05fTE9BRElORykKKyAgICBpZiAoaWNvblR5
cGUgPT0gVG91Y2hQcmVjb21wb3NlZEljb24pIHsKKyAgICAgICAgdXJsLnNldFBhdGgoIi9hcHBs
ZS10b3VjaC1pY29uLXByZWNvbXBvc2VkLnBuZyIpOworICAgICAgICByZXR1cm4gSWNvblVSTChL
VVJMKFBhcnNlZFVSTFN0cmluZywgdXJsKSwgVG91Y2hQcmVjb21wb3NlZEljb24pOworICAgIH0K
KyAgICBpZiAoaWNvblR5cGUgPT0gVG91Y2hJY29uKSB7CisgICAgICAgIHVybC5zZXRQYXRoKCIv
YXBwbGUtdG91Y2gtaWNvbi5wbmciKTsKKyAgICAgICAgcmV0dXJuIEljb25VUkwoS1VSTChQYXJz
ZWRVUkxTdHJpbmcsIHVybCksIFRvdWNoSWNvbik7CisgICAgfQorI2VuZGlmCisgICAgcmV0dXJu
IEljb25VUkwoKTsKIH0KIAogYm9vbCBGcmFtZUxvYWRlcjo6ZGlkT3BlblVSTChjb25zdCBLVVJM
JiB1cmwpCkBAIC0zMzU3LDcgKzM0MDksNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpzZXRUaXRsZShj
b25zdCBTdHJpbmdXCiAgICAgZG9jdW1lbnRMb2FkZXIoKS0+c2V0VGl0bGUodGl0bGUpOwogfQog
Ci12b2lkIEZyYW1lTG9hZGVyOjpzZXRJY29uVVJMKGNvbnN0IFN0cmluZyYgaWNvblVSTCkKK3Zv
aWQgRnJhbWVMb2FkZXI6OnNldEljb25VUkwoY29uc3QgSWNvblVSTCYgaWNvblVSTCkKIHsKICAg
ICBkb2N1bWVudExvYWRlcigpLT5zZXRJY29uVVJMKGljb25VUkwpOwogfQpAQCAtMzQzNSwxMCAr
MzQ4NywxMCBAQCB2b2lkIEZyYW1lTG9hZGVyOjpkaWRDaGFuZ2VUaXRsZShEb2N1bWVuCiAgICAg
fQogfQogCi12b2lkIEZyYW1lTG9hZGVyOjpkaWRDaGFuZ2VJY29ucyhEb2N1bWVudExvYWRlciog
bG9hZGVyKQordm9pZCBGcmFtZUxvYWRlcjo6ZGlkQ2hhbmdlSWNvbnMoRG9jdW1lbnRMb2FkZXIq
IGxvYWRlciwgSWNvblR5cGUgdHlwZSkKIHsKICAgICBpZiAobG9hZGVyID09IG1fZG9jdW1lbnRM
b2FkZXIpCi0gICAgICAgIG1fY2xpZW50LT5kaXNwYXRjaERpZENoYW5nZUljb25zKCk7CisgICAg
ICAgIG1fY2xpZW50LT5kaXNwYXRjaERpZENoYW5nZUljb25zKHR5cGUpOwogfQogCiB2b2lkIEZy
YW1lTG9hZGVyOjpkaXNwYXRjaERpZENvbW1pdExvYWQoKQpJbmRleDogU291cmNlL1dlYkNvcmUv
bG9hZGVyL0ZyYW1lTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyLmgJKHJldmlzaW9uIDg1NjMxKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRl
ICJGcmFtZUxvYWRlclR5cGVzLmgiCiAjaW5jbHVkZSAiSGlzdG9yeUNvbnRyb2xsZXIuaCIKICNp
bmNsdWRlICJJY29uRGF0YWJhc2VCYXNlLmgiCisjaW5jbHVkZSAiSWNvblVSTC5oIgogI2luY2x1
ZGUgIlBvbGljeUNoZWNrZXIuaCIKICNpbmNsdWRlICJSZXNvdXJjZUxvYWROb3RpZmllci5oIgog
I2luY2x1ZGUgIlN1YmZyYW1lTG9hZGVyLmgiCkBAIC0xOTEsNyArMTkyLDcgQEAgcHVibGljOgog
ICAgIGJvb2wgc3ViZnJhbWVJc0xvYWRpbmcoKSBjb25zdDsKICAgICB2b2lkIHdpbGxDaGFuZ2VU
aXRsZShEb2N1bWVudExvYWRlciopOwogICAgIHZvaWQgZGlkQ2hhbmdlVGl0bGUoRG9jdW1lbnRM
b2FkZXIqKTsKLSAgICB2b2lkIGRpZENoYW5nZUljb25zKERvY3VtZW50TG9hZGVyKik7CisgICAg
dm9pZCBkaWRDaGFuZ2VJY29ucyhEb2N1bWVudExvYWRlciosIEljb25UeXBlKTsKIAogICAgIEZy
YW1lTG9hZFR5cGUgbG9hZFR5cGUoKSBjb25zdDsKIApAQCAtMjMzLDcgKzIzNCwxMSBAQCBwdWJs
aWM6CiAgICAgdm9pZCBkaWRFbmREb2N1bWVudCgpOwogICAgIHZvaWQgd2lsbFNldEVuY29kaW5n
KCk7CiAKKyAgICAvLyBSZXR1cm5zIGZhdmljb24uCiAgICAgS1VSTCBpY29uVVJMKCk7CisKKyAg
ICAvLyBSZXR1cm5zIHRoZSBnaXZlbiBpY29uVHlwZXMnIEljb25VUkxzLCBpY29uVHlwZXMgY291
bGQgYmUgYW55IGNvbWJpbmF0aW9uIG9mIEljb25UeXBlLgorICAgIFZlY3RvcjxJY29uVVJMPiBp
Y29uVVJMcyhpbnQgaWNvblR5cGVzKTsKICAgICB2b2lkIGNvbW1pdEljb25VUkxUb0ljb25EYXRh
YmFzZShjb25zdCBLVVJMJik7CiAKICAgICBLVVJMIGJhc2VVUkwoKSBjb25zdDsKQEAgLTI4NCw3
ICsyODksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjYW5jZWxBbmRDbGVhcigpOwogCiAgICAgdm9p
ZCBzZXRUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJik7Ci0gICAgdm9pZCBzZXRJY29u
VVJMKGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgc2V0SWNvblVSTChjb25zdCBJY29uVVJMJik7
CiAKICAgICB2b2lkIGNvbW1pdFByb3Zpc2lvbmFsTG9hZCgpOwogICAgIGJvb2wgaXNMb2FkaW5n
RnJvbUNhY2hlZFBhZ2UoKSBjb25zdCB7IHJldHVybiBtX2xvYWRpbmdGcm9tQ2FjaGVkUGFnZTsg
fQpAQCAtNDI4LDYgKzQzMyw5IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHVwZGF0ZVNhbmRib3hG
bGFncygpOwogCisgICAgYm9vbCBmaWxsSWNvblVSTChJY29uVHlwZSwgVmVjdG9yPEljb25VUkw+
Kik7CisgICAgSWNvblVSTCBnZXREZWZhdWx0SWNvblVSTChJY29uVHlwZSk7CisKICAgICBGcmFt
ZSogbV9mcmFtZTsKICAgICBGcmFtZUxvYWRlckNsaWVudCogbV9jbGllbnQ7CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCShyZXZpc2lvbiA4NTYzMSkK
KysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zMCw2ICszMCw3IEBACiAjZGVmaW5lIEZyYW1lTG9hZGVyQ2xpZW50X2gKIAogI2lu
Y2x1ZGUgIkZyYW1lTG9hZGVyVHlwZXMuaCIKKyNpbmNsdWRlICJJY29uVVJMLmgiCiAjaW5jbHVk
ZSAiU2Nyb2xsVHlwZXMuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KQEAgLTE0MSw3ICsxNDIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVJY29uKCkgPSAwOwogICAgICAgICB2
aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpID0gMDsKICAgICAg
ICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFN0cmluZ1dpdGhE
aXJlY3Rpb24mKSA9IDA7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZUlj
b25zKCkgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucyhJ
Y29uVHlwZSkgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDb21taXRMb2Fk
KCkgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGYWlsUHJvdmlzaW9uYWxM
b2FkKGNvbnN0IFJlc291cmNlRXJyb3ImKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNw
YXRjaERpZEZhaWxMb2FkKGNvbnN0IFJlc291cmNlRXJyb3ImKSA9IDA7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CShyZXZpc2lvbiA4NTYzMSkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDExLTA0LTIyICBUYW8gQmFpICA8bWljaGFlbGJhaUBj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgUG9wdWxhdGUgdG91Y2gtaWNvbiB1cmwgdG8gRnJhbWVMb2FkZXJDbGllbnQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU5MTQzCisKKyAgICAg
ICAgUmVzcGVjdGVkIHRoZSBjaGFuZ2Ugb2YgRnJhbWVMb2FkZXJDbGllbnQuCisgICAgICAgIEFk
ZGVkIFdlYkljb25VUkwgYW5kIFdlYkljb25UeXBlIHJlc3BvbmRpbmcgdGhlIG5ldyBJY29uVVJM
IGFuZCBJY29uVHlwZS4KKyAgICAgICAgU3VwcG9ydGVkIHRvIGdldCB0aGUgbXVsdGlwbGUgaWNv
biB1cmxzLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50Ojpk
aXNwYXRjaERpZENoYW5nZUljb25zKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisKIDIwMTEtMDUtMDMgIFNhbSBXZWluaWcgIDxz
YW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbmRlcnMgQ2FybHNzb24uCklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZp
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVm
aW5lcy54Y2NvbmZpZwkocmV2aXNpb24gODU2MzEpCisrKyBTb3VyY2UvV2ViS2l0Mi9Db25maWd1
cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwkod29ya2luZyBjb3B5KQpAQCAtMTE4LDYg
KzExOCw4IEBAIEVOQUJMRV9WSURFT19UUkFDSyA9IDsKIAogRU5BQkxFX01FRElBX1NUQVRJU1RJ
Q1MgPSA7CiAKK0VOQUJMRV9UT1VDSF9JQ09OX0xPQURJTkcgPSA7CisKIEVOQUJMRV9XRUJfQVVE
SU8gPSA7CiAKIEVOQUJMRV9XRUJfU09DS0VUUyA9ICQoRU5BQkxFX1dFQl9TT0NLRVRTXyQoUkVB
TF9QTEFURk9STV9OQU1FKSk7CkBAIC0xMzIsNCArMTM0LDQgQEAgRU5BQkxFX1hIVE1MTVAgPSA7
CiBFTkFCTEVfWFBBVEggPSBFTkFCTEVfWFBBVEg7CiBFTkFCTEVfWFNMVCA9IEVOQUJMRV9YU0xU
OwogCi1GRUFUVVJFX0RFRklORVMgPSAkKEVOQUJMRV9MSU5LX1BSRUZFVENIKSAkKEVOQUJMRV9B
Q0NFTEVSQVRFRF8yRF9DQU5WQVMpICQoRU5BQkxFX1dFQkdMKSAkKEVOQUJMRV8zRF9SRU5ERVJJ
TkcpICQoRU5BQkxFX0FOSU1BVElPTl9BUEkpICQoRU5BQkxFX0JMT0IpICQoRU5BQkxFX0NIQU5O
RUxfTUVTU0FHSU5HKSAkKEVOQUJMRV9DTElFTlRfQkFTRURfR0VPTE9DQVRJT04pICQoRU5BQkxF
X0RBVEFCQVNFKSAkKEVOQUJMRV9EQVRBTElTVCkgJChFTkFCTEVfREFUQV9UUkFOU0ZFUl9JVEVN
UykgJChFTkFCTEVfREVUQUlMUykgJChFTkFCTEVfREVWSUNFX09SSUVOVEFUSU9OKSAkKEVOQUJM
RV9ESVJFQ1RPUllfVVBMT0FEKSAkKEVOQUJMRV9ET01fU1RPUkFHRSkgJChFTkFCTEVfRVZFTlRT
T1VSQ0UpICQoRU5BQkxFX0ZJTFRFUlMpICQoRU5BQkxFX0ZJTEVfU1lTVEVNKSAkKEVOQUJMRV9G
VUxMU0NSRUVOX0FQSSkgJChFTkFCTEVfR0VPTE9DQVRJT04pICQoRU5BQkxFX0lDT05EQVRBQkFT
RSkgJChFTkFCTEVfSU5ERVhFRF9EQVRBQkFTRSkgJChFTkFCTEVfSU5QVVRfU1BFRUNIKSAkKEVO
QUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSKSAkKEVOQUJMRV9NQVRITUwpICQoRU5BQkxFX01FVEVS
X1RBRykgJChFTkFCTEVfTk9USUZJQ0FUSU9OUykgJChFTkFCTEVfT0ZGTElORV9XRUJfQVBQTElD
QVRJT05TKSAkKEVOQUJMRV9QQUdFX1ZJU0lCSUxJVFlfQVBJKSAkKEVOQUJMRV9QUk9HUkVTU19U
QUcpICQoRU5BQkxFX1JFR0lTVEVSX1BST1RPQ09MX0hBTkRMRVIpICQoRU5BQkxFX1FVT1RBKSAk
KEVOQUJMRV9TSEFSRURfV09SS0VSUykgJChFTkFCTEVfU1ZHKSAkKEVOQUJMRV9TVkdfQU5JTUFU
SU9OKSAkKEVOQUJMRV9TVkdfQVNfSU1BR0UpICQoRU5BQkxFX1NWR19ET01fT0JKQ19CSU5ESU5H
UykgJChFTkFCTEVfU1ZHX0ZPTlRTKSAkKEVOQUJMRV9TVkdfRk9SRUlHTl9PQkpFQ1QpICQoRU5B
QkxFX1NWR19VU0UpICQoRU5BQkxFX1ZJREVPKSAkKEVOQUJMRV9WSURFT19UUkFDSykgJChFTkFC
TEVfTUVESUFfU1RBVElTVElDUykgJChFTkFCTEVfV0VCX0FVRElPKSAkKEVOQUJMRV9XRUJfU09D
S0VUUykgJChFTkFCTEVfV0VCX1RJTUlORykgJChFTkFCTEVfV09SS0VSUykgJChFTkFCTEVfWEhU
TUxNUCkgJChFTkFCTEVfWFBBVEgpICQoRU5BQkxFX1hTTFQpOworRkVBVFVSRV9ERUZJTkVTID0g
JChFTkFCTEVfTElOS19QUkVGRVRDSCkgJChFTkFCTEVfQUNDRUxFUkFURURfMkRfQ0FOVkFTKSAk
KEVOQUJMRV9XRUJHTCkgJChFTkFCTEVfM0RfUkVOREVSSU5HKSAkKEVOQUJMRV9BTklNQVRJT05f
QVBJKSAkKEVOQUJMRV9CTE9CKSAkKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORykgJChFTkFCTEVf
Q0xJRU5UX0JBU0VEX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9EQVRBQkFTRSkgJChFTkFCTEVfREFU
QUxJU1QpICQoRU5BQkxFX0RBVEFfVFJBTlNGRVJfSVRFTVMpICQoRU5BQkxFX0RFVEFJTFMpICQo
RU5BQkxFX0RFVklDRV9PUklFTlRBVElPTikgJChFTkFCTEVfRElSRUNUT1JZX1VQTE9BRCkgJChF
TkFCTEVfRE9NX1NUT1JBR0UpICQoRU5BQkxFX0VWRU5UU09VUkNFKSAkKEVOQUJMRV9GSUxURVJT
KSAkKEVOQUJMRV9GSUxFX1NZU1RFTSkgJChFTkFCTEVfRlVMTFNDUkVFTl9BUEkpICQoRU5BQkxF
X0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9JQ09OREFUQUJBU0UpICQoRU5BQkxFX0lOREVYRURfREFU
QUJBU0UpICQoRU5BQkxFX0lOUFVUX1NQRUVDSCkgJChFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dF
UikgJChFTkFCTEVfTUFUSE1MKSAkKEVOQUJMRV9NRVRFUl9UQUcpICQoRU5BQkxFX05PVElGSUNB
VElPTlMpICQoRU5BQkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUykgJChFTkFCTEVfUEFHRV9W
SVNJQklMSVRZX0FQSSkgJChFTkFCTEVfUFJPR1JFU1NfVEFHKSAkKEVOQUJMRV9SRUdJU1RFUl9Q
Uk9UT0NPTF9IQU5ETEVSKSAkKEVOQUJMRV9RVU9UQSkgJChFTkFCTEVfU0hBUkVEX1dPUktFUlMp
ICQoRU5BQkxFX1NWRykgJChFTkFCTEVfU1ZHX0FOSU1BVElPTikgJChFTkFCTEVfU1ZHX0FTX0lN
QUdFKSAkKEVOQUJMRV9TVkdfRE9NX09CSkNfQklORElOR1MpICQoRU5BQkxFX1NWR19GT05UUykg
JChFTkFCTEVfU1ZHX0ZPUkVJR05fT0JKRUNUKSAkKEVOQUJMRV9TVkdfVVNFKSAkKEVOQUJMRV9W
SURFTykgJChFTkFCTEVfVklERU9fVFJBQ0spICQoRU5BQkxFX01FRElBX1NUQVRJU1RJQ1MpICQo
RU5BQkxFX1dFQl9BVURJTykgJChFTkFCTEVfV0VCX1NPQ0tFVFMpICQoRU5BQkxFX1dFQl9USU1J
TkcpICQoRU5BQkxFX1dPUktFUlMpICQoRU5BQkxFX1hIVE1MTVApICQoRU5BQkxFX1hQQVRIKSAk
KEVOQUJMRV9YU0xUKSAkKEVOQUJMRV9UT1VDSF9JQ09OX0xPQURJTkcpOwpJbmRleDogU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAJKHJldmlzaW9uIDg1NjMxKQorKysgU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQxOCw3ICs0MTgsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xp
ZW50OjpkaXNwYXRjaERpZFJlCiAgICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpEaWRSZWNlaXZlVGl0bGVGb3JGcmFtZShtX2ZyYW1lLT5mcmFtZUlEKCksIHRpdGxlLnN0
cmluZygpLCBJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdlRW5jb2Rlcih1c2VyRGF0YS5nZXQoKSkp
KTsKIH0KIAotdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDaGFuZ2VJY29u
cygpCit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENoYW5nZUljb25zKFdl
YkNvcmU6Okljb25UeXBlKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCShyZXZpc2lvbiA4NTYzMSkKKysrIFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtODUsNyArODUsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaERpZFJlY2VpdmVJY29uKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkU3Rh
cnRQcm92aXNpb25hbExvYWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZl
VGl0bGUoY29uc3QgV2ViQ29yZTo6U3RyaW5nV2l0aERpcmVjdGlvbiYpOwotICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaERpZENoYW5nZUljb25zKCk7CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
RGlkQ2hhbmdlSWNvbnMoV2ViQ29yZTo6SWNvblR5cGUpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNw
YXRjaERpZENvbW1pdExvYWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGYWlsUHJv
dmlzaW9uYWxMb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKICAgICB2aXJ0dWFs
IHZvaWQgZGlzcGF0Y2hEaWRGYWlsTG9hZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7
CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gODU2MzEpCisrKyBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4
IEBACisKKzIwMTEtMDQtMjIgIFRhbyBCYWkgIDxtaWNoYWVsYmFpQGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQb3B1bGF0ZSB0
b3VjaC1pY29uIHVybCB0byBGcmFtZUxvYWRlckNsaWVudAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTkxNDMKKworICAgICAgICBSZXNwZWN0ZWQgdGhl
IGNoYW5nZSBvZiBGcmFtZUxvYWRlckNsaWVudC4KKworICAgICAgICAqIHNyYy9GcmFtZUxvYWRl
ckNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudEltcGw6
OmRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMpOgorICAgICAgICAqIHNyYy9GcmFtZUxvYWRlckNsaWVu
dEltcGwuaDoKKworCiAyMDExLTA1LTAyICBBZGFtIEtsZWluICA8YWRhbWtAY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IFRvbnkgQ2hhbmcuCkluZGV4OiBTb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAJKHJldmlz
aW9uIDg1NjMxKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGll
bnRJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzgwLDcgKzc4MCw3IEBAIHZvaWQgRnJhbWVM
b2FkZXJDbGllbnRJbXBsOjpkaXNwYXRjaERpZFIKICAgICAgICAgbV93ZWJGcmFtZS0+Y2xpZW50
KCktPmRpZFJlY2VpdmVUaXRsZShtX3dlYkZyYW1lLCB0aXRsZS5zdHJpbmcoKSwgdGl0bGUuZGly
ZWN0aW9uKCkgPT0gTFRSID8gV2ViVGV4dERpcmVjdGlvbkxlZnRUb1JpZ2h0IDogV2ViVGV4dERp
cmVjdGlvblJpZ2h0VG9MZWZ0KTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudEltcGw6OmRp
c3BhdGNoRGlkQ2hhbmdlSWNvbnMoKQordm9pZCBGcmFtZUxvYWRlckNsaWVudEltcGw6OmRpc3Bh
dGNoRGlkQ2hhbmdlSWNvbnMoV2ViQ29yZTo6SWNvblR5cGUgdHlwZSkKIHsKICAgICBpZiAobV93
ZWJGcmFtZS0+Y2xpZW50KCkpCiAgICAgICAgIG1fd2ViRnJhbWUtPmNsaWVudCgpLT5kaWRDaGFu
Z2VJY29ucyhtX3dlYkZyYW1lKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Zy
YW1lTG9hZGVyQ2xpZW50SW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5oCShyZXZpc2lvbiA4NTYzMSkKKysrIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xMDUsNyArMTA1LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRj
aERpZFJlY2VpdmVJY29uKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkU3RhcnRQcm92
aXNpb25hbExvYWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUo
Y29uc3QgV2ViQ29yZTo6U3RyaW5nV2l0aERpcmVjdGlvbiYpOwotICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaERpZENoYW5nZUljb25zKCk7CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hh
bmdlSWNvbnMoV2ViQ29yZTo6SWNvblR5cGUpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERp
ZENvbW1pdExvYWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGYWlsUHJvdmlzaW9u
YWxMb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKICAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hEaWRGYWlsTG9hZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CkluZGV4
OiBTb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9lZmwvQ2hhbmdlTG9nCShyZXZpc2lvbiA4NTYzMSkKKysrIFNvdXJjZS9XZWJLaXQvZWZsL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDExLTA0LTIyICBUYW8g
QmFpICA8bWljaGFlbGJhaUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgUG9wdWxhdGUgdG91Y2gtaWNvbiB1cmwgdG8gRnJhbWVM
b2FkZXJDbGllbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTU5MTQzCisKKyAgICAgICAgUmVzcGVjdCB0aGUgaW50ZXJmYWNlIGNoYW5nZSBpbiBGcmFt
ZUxvYWRlckNsaWVudAorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGll
bnRFZmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3Bh
dGNoRGlkQ2hhbmdlSWNvbnMpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVy
Q2xpZW50RWZsLmg6CisKIDIwMTEtMDUtMDIgIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBz
YW1zdW5nLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLiBTdHlsZSBlcnJvciBmaXguCkluZGV4
OiBTb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVM
b2FkZXJDbGllbnRFZmwuY3BwCShyZXZpc2lvbiA4NTYzMSkKKysrIFNvdXJjZS9XZWJLaXQvZWZs
L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNTg3LDcgKzU4Nyw3IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGlk
UmUKICAgICBld2tfdmlld190aXRsZV9zZXQobV92aWV3LCBjcy5kYXRhKCkpOwogfQogCi12b2lk
IEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERpZENoYW5nZUljb25zKCkKK3ZvaWQgRnJh
bWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoV2ViQ29yZTo6SWNvblR5
cGUpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvZWZs
L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuaAkocmV2
aXNpb24gODU2MzEpCisrKyBTb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxv
YWRlckNsaWVudEVmbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDMsNyArMTAzLDcgQEAgY2xhc3Mg
RnJhbWVMb2FkZXJDbGllbnRFZmwgOiBwdWJsaWMgRnJhbQogICAgIHZpcnR1YWwgdm9pZCBkaXNw
YXRjaERpZFJlY2VpdmVJY29uKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkU3RhcnRQ
cm92aXNpb25hbExvYWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlVGl0
bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYpOwotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRj
aERpZENoYW5nZUljb25zKCk7CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlSWNv
bnMoV2ViQ29yZTo6SWNvblR5cGUpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENvbW1p
dExvYWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGYWlsUHJvdmlzaW9uYWxMb2Fk
KGNvbnN0IFJlc291cmNlRXJyb3ImKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGYWls
TG9hZChjb25zdCBSZXNvdXJjZUVycm9yJik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L2d0ay9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCShyZXZpc2lv
biA4NTYzMSkKKysrIFNvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE2IEBACisyMDExLTA0LTIyICBUYW8gQmFpICA8bWljaGFlbGJhaUBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
UG9wdWxhdGUgdG91Y2gtaWNvbiB1cmwgdG8gRnJhbWVMb2FkZXJDbGllbnQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU5MTQzCisKKyAgICAgICAgUmVz
cGVjdCB0aGUgaW50ZXJmYWNlIGNoYW5nZSBpbiBGcmFtZUxvYWRlckNsaWVudC4KKworICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMpOgorICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmg6CisKIDIwMTEtMDQtMjkg
IFhhbiBMb3BleiAgPHhsb3BlekBpZ2FsaWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE1h
cnRpbiBSb2JpbnNvbi4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Zy
YW1lTG9hZGVyQ2xpZW50R3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2d0ay9X
ZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHAJKHJldmlzaW9uIDg1NjMxKQor
KysgU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NjksNyArOTY5LDcgQEAgdm9pZCBGcmFtZUxvYWRlckNs
aWVudDo6ZGlzcGF0Y2hEaWRSZWNlaQogICAgIH0KIH0KIAotdm9pZCBGcmFtZUxvYWRlckNsaWVu
dDo6ZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygpCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNw
YXRjaERpZENoYW5nZUljb25zKFdlYkNvcmU6Okljb25UeXBlKQogewogICAgIG5vdEltcGxlbWVu
dGVkKCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxv
YWRlckNsaWVudEd0ay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVT
dXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmgJKHJldmlzaW9uIDg1NjMxKQorKysgU291cmNl
L1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuaAkod29ya2lu
ZyBjb3B5KQpAQCAtODIsNyArODIsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKICAgICAgICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUljb24oKTsKICAgICAgICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoRGlkU3RhcnRQcm92aXNpb25hbExvYWQoKTsKICAgICAgICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFdlYkNvcmU6OlN0cmluZ1dpdGhEaXJlY3Rp
b24mKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoKTsKKyAg
ICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoV2ViQ29yZTo6SWNvblR5
cGUpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDb21taXRMb2FkKCk7CiAgICAg
ICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxQcm92aXNpb25hbExvYWQoY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvciYpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRG
YWlsTG9hZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvQ2hhbmdl
TG9nCShyZXZpc2lvbiA4NTYzMSkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisKKzIwMTEtMDQtMjIgIFRhbyBCYWkgIDxtaWNo
YWVsYmFpQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBQb3B1bGF0ZSB0b3VjaC1pY29uIHVybCB0byBGcmFtZUxvYWRlckNsaWVu
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTkxNDMK
KworICAgICAgICBSZXNwZWN0IHRoZSBpbnRlcmZhY2UgY2hhbmdlIGluIEZyYW1lTG9hZGVyQ2xp
ZW50LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbToKKyAgICAg
ICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENoYW5nZUljb25zKToKKwogMjAx
MS0wNS0wMiAgQWRhbSBSb2JlbiAgPGFyb2JlbkBhcHBsZS5jb20+CiAKICAgICAgICAgVGFrZSBh
ZHZhbnRhZ2Ugb2YgaW1wbGljaXQgY29udmVyc2lvbiBmcm9tIG51bGxwdHJfdCB0byBQYXNzT3du
UHRyCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5l
cy54Y2NvbmZpZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9Db25maWd1cmF0aW9u
cy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwkocmV2aXNpb24gODU2MzEpCisrKyBTb3VyY2UvV2Vi
S2l0L21hYy9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwkod29ya2luZyBj
b3B5KQpAQCAtMTE4LDYgKzExOCw4IEBAIEVOQUJMRV9WSURFT19UUkFDSyA9IDsKIAogRU5BQkxF
X01FRElBX1NUQVRJU1RJQ1MgPSA7CiAKK0VOQUJMRV9UT1VDSF9JQ09OX0xPQURJTkcgPSA7CisK
IEVOQUJMRV9XRUJfQVVESU8gPSA7CiAKIEVOQUJMRV9XRUJfU09DS0VUUyA9ICQoRU5BQkxFX1dF
Ql9TT0NLRVRTXyQoUkVBTF9QTEFURk9STV9OQU1FKSk7CkBAIC0xMzIsNCArMTM0LDQgQEAgRU5B
QkxFX1hIVE1MTVAgPSA7CiBFTkFCTEVfWFBBVEggPSBFTkFCTEVfWFBBVEg7CiBFTkFCTEVfWFNM
VCA9IEVOQUJMRV9YU0xUOwogCi1GRUFUVVJFX0RFRklORVMgPSAkKEVOQUJMRV9MSU5LX1BSRUZF
VENIKSAkKEVOQUJMRV9BQ0NFTEVSQVRFRF8yRF9DQU5WQVMpICQoRU5BQkxFX1dFQkdMKSAkKEVO
QUJMRV8zRF9SRU5ERVJJTkcpICQoRU5BQkxFX0FOSU1BVElPTl9BUEkpICQoRU5BQkxFX0JMT0Ip
ICQoRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HKSAkKEVOQUJMRV9DTElFTlRfQkFTRURfR0VPTE9D
QVRJT04pICQoRU5BQkxFX0RBVEFCQVNFKSAkKEVOQUJMRV9EQVRBTElTVCkgJChFTkFCTEVfREFU
QV9UUkFOU0ZFUl9JVEVNUykgJChFTkFCTEVfREVUQUlMUykgJChFTkFCTEVfREVWSUNFX09SSUVO
VEFUSU9OKSAkKEVOQUJMRV9ESVJFQ1RPUllfVVBMT0FEKSAkKEVOQUJMRV9ET01fU1RPUkFHRSkg
JChFTkFCTEVfRVZFTlRTT1VSQ0UpICQoRU5BQkxFX0ZJTFRFUlMpICQoRU5BQkxFX0ZJTEVfU1lT
VEVNKSAkKEVOQUJMRV9GVUxMU0NSRUVOX0FQSSkgJChFTkFCTEVfR0VPTE9DQVRJT04pICQoRU5B
QkxFX0lDT05EQVRBQkFTRSkgJChFTkFCTEVfSU5ERVhFRF9EQVRBQkFTRSkgJChFTkFCTEVfSU5Q
VVRfU1BFRUNIKSAkKEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSKSAkKEVOQUJMRV9NQVRITUwp
ICQoRU5BQkxFX01FVEVSX1RBRykgJChFTkFCTEVfTk9USUZJQ0FUSU9OUykgJChFTkFCTEVfT0ZG
TElORV9XRUJfQVBQTElDQVRJT05TKSAkKEVOQUJMRV9QQUdFX1ZJU0lCSUxJVFlfQVBJKSAkKEVO
QUJMRV9QUk9HUkVTU19UQUcpICQoRU5BQkxFX1JFR0lTVEVSX1BST1RPQ09MX0hBTkRMRVIpICQo
RU5BQkxFX1FVT1RBKSAkKEVOQUJMRV9TSEFSRURfV09SS0VSUykgJChFTkFCTEVfU1ZHKSAkKEVO
QUJMRV9TVkdfQU5JTUFUSU9OKSAkKEVOQUJMRV9TVkdfQVNfSU1BR0UpICQoRU5BQkxFX1NWR19E
T01fT0JKQ19CSU5ESU5HUykgJChFTkFCTEVfU1ZHX0ZPTlRTKSAkKEVOQUJMRV9TVkdfRk9SRUlH
Tl9PQkpFQ1QpICQoRU5BQkxFX1NWR19VU0UpICQoRU5BQkxFX1ZJREVPKSAkKEVOQUJMRV9WSURF
T19UUkFDSykgJChFTkFCTEVfTUVESUFfU1RBVElTVElDUykgJChFTkFCTEVfV0VCX0FVRElPKSAk
KEVOQUJMRV9XRUJfU09DS0VUUykgJChFTkFCTEVfV0VCX1RJTUlORykgJChFTkFCTEVfV09SS0VS
UykgJChFTkFCTEVfWEhUTUxNUCkgJChFTkFCTEVfWFBBVEgpICQoRU5BQkxFX1hTTFQpOworRkVB
VFVSRV9ERUZJTkVTID0gJChFTkFCTEVfTElOS19QUkVGRVRDSCkgJChFTkFCTEVfQUNDRUxFUkFU
RURfMkRfQ0FOVkFTKSAkKEVOQUJMRV9XRUJHTCkgJChFTkFCTEVfM0RfUkVOREVSSU5HKSAkKEVO
QUJMRV9BTklNQVRJT05fQVBJKSAkKEVOQUJMRV9CTE9CKSAkKEVOQUJMRV9DSEFOTkVMX01FU1NB
R0lORykgJChFTkFCTEVfQ0xJRU5UX0JBU0VEX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9EQVRBQkFT
RSkgJChFTkFCTEVfREFUQUxJU1QpICQoRU5BQkxFX0RBVEFfVFJBTlNGRVJfSVRFTVMpICQoRU5B
QkxFX0RFVEFJTFMpICQoRU5BQkxFX0RFVklDRV9PUklFTlRBVElPTikgJChFTkFCTEVfRElSRUNU
T1JZX1VQTE9BRCkgJChFTkFCTEVfRE9NX1NUT1JBR0UpICQoRU5BQkxFX0VWRU5UU09VUkNFKSAk
KEVOQUJMRV9GSUxURVJTKSAkKEVOQUJMRV9GSUxFX1NZU1RFTSkgJChFTkFCTEVfRlVMTFNDUkVF
Tl9BUEkpICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9JQ09OREFUQUJBU0UpICQoRU5B
QkxFX0lOREVYRURfREFUQUJBU0UpICQoRU5BQkxFX0lOUFVUX1NQRUVDSCkgJChFTkFCTEVfSkFW
QVNDUklQVF9ERUJVR0dFUikgJChFTkFCTEVfTUFUSE1MKSAkKEVOQUJMRV9NRVRFUl9UQUcpICQo
RU5BQkxFX05PVElGSUNBVElPTlMpICQoRU5BQkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUykg
JChFTkFCTEVfUEFHRV9WSVNJQklMSVRZX0FQSSkgJChFTkFCTEVfUFJPR1JFU1NfVEFHKSAkKEVO
QUJMRV9SRUdJU1RFUl9QUk9UT0NPTF9IQU5ETEVSKSAkKEVOQUJMRV9RVU9UQSkgJChFTkFCTEVf
U0hBUkVEX1dPUktFUlMpICQoRU5BQkxFX1NWRykgJChFTkFCTEVfU1ZHX0FOSU1BVElPTikgJChF
TkFCTEVfU1ZHX0FTX0lNQUdFKSAkKEVOQUJMRV9TVkdfRE9NX09CSkNfQklORElOR1MpICQoRU5B
QkxFX1NWR19GT05UUykgJChFTkFCTEVfU1ZHX0ZPUkVJR05fT0JKRUNUKSAkKEVOQUJMRV9TVkdf
VVNFKSAkKEVOQUJMRV9WSURFTykgJChFTkFCTEVfVklERU9fVFJBQ0spICQoRU5BQkxFX01FRElB
X1NUQVRJU1RJQ1MpICQoRU5BQkxFX1dFQl9BVURJTykgJChFTkFCTEVfV0VCX1NPQ0tFVFMpICQo
RU5BQkxFX1dFQl9USU1JTkcpICQoRU5BQkxFX1dPUktFUlMpICQoRU5BQkxFX1hIVE1MTVApICQo
RU5BQkxFX1hQQVRIKSAkKEVOQUJMRV9YU0xUKSAkKEVOQUJMRV9UT1VDSF9JQ09OX0xPQURJTkcp
OwpJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5oCShyZXZpc2lvbiA4NTYzMSkKKysrIFNvdXJjZS9XZWJLaXQv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTEwMiw3ICsxMDIsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERp
ZFJlY2VpdmVJY29uKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkU3RhcnRQcm92aXNp
b25hbExvYWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29u
c3QgV2ViQ29yZTo6U3RyaW5nV2l0aERpcmVjdGlvbiYpOwotICAgIHZpcnR1YWwgdm9pZCBkaXNw
YXRjaERpZENoYW5nZUljb25zKCk7CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdl
SWNvbnMoV2ViQ29yZTo6SWNvblR5cGUpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENv
bW1pdExvYWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGYWlsUHJvdmlzaW9uYWxM
b2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlz
cGF0Y2hEaWRGYWlsTG9hZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CkluZGV4OiBT
b3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5tbQkocmV2aXNpb24gODU2MzEpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQkod29ya2luZyBjb3B5KQpAQCAtNjMz
LDcgKzYzMyw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmUKICAg
ICAgICAgQ2FsbEZyYW1lTG9hZERlbGVnYXRlKGltcGxlbWVudGF0aW9ucy0+ZGlkUmVjZWl2ZVRp
dGxlRm9yRnJhbWVGdW5jLCB3ZWJWaWV3LCBAc2VsZWN0b3Iod2ViVmlldzpkaWRSZWNlaXZlVGl0
bGU6Zm9yRnJhbWU6KSwgKE5TU3RyaW5nICopdGl0bGUuc3RyaW5nKCksIG1fd2ViRnJhbWUuZ2V0
KCkpOwogfQogCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENoYW5nZUlj
b25zKCkKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMo
V2ViQ29yZTo6SWNvblR5cGUpCiB7CiAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcyB0byBh
bGxvdyBjb250YWluZXIgdG8gdXBkYXRlIGZhdmljb24uCiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0
L3F0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwko
cmV2aXNpb24gODU2MzEpCisrKyBTb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDExLTA0LTIyICBUYW8gQmFpICA8bWljaGFlbGJhaUBj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgUG9wdWxhdGUgdG91Y2gtaWNvbiB1cmwgdG8gRnJhbWVMb2FkZXJDbGllbnQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU5MTQzCisKKyAgICAg
ICAgUmVzcGVjdCB0aGUgaW50ZXJmYWNlIGNoYW5nZSBpbiBGcmFtZUxvYWRlckNsaWVudC4KKwor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucyk6
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5oOgorCiAyMDEx
LTA1LTAxICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgQW5kZXJzIENhcmxzc29uLgpJbmRleDogU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9y
dC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3F0
L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwCShyZXZpc2lvbiA4NTYzMSkK
KysrIFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1OSw3ICs0NTksNyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xp
ZW50UXQ6OmRpc3BhdGNoRGlkUmVjCiB9CiAKIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudFF0Ojpk
aXNwYXRjaERpZENoYW5nZUljb25zKCkKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0
Y2hEaWRDaGFuZ2VJY29ucyhXZWJDb3JlOjpJY29uVHlwZSkKIHsKICAgICBpZiAoZHVtcEZyYW1l
TG9hZGVyQ2FsbGJhY2tzKQogICAgICAgICBwcmludGYoIiVzIC0gZGlkQ2hhbmdlSWNvbnNcbiIs
IHFQcmludGFibGUoZHJ0RGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHQobV9mcmFtZSkp
KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGll
bnRRdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJh
bWVMb2FkZXJDbGllbnRRdC5oCShyZXZpc2lvbiA4NTYzMSkKKysrIFNvdXJjZS9XZWJLaXQvcXQv
V2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
MTEsNyArMTExLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2Vp
dmVJY29uKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkU3RhcnRQcm92aXNpb25hbExv
YWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgU3Ry
aW5nV2l0aERpcmVjdGlvbiYpOwotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZUlj
b25zKCk7CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoV2ViQ29yZTo6
SWNvblR5cGUpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENvbW1pdExvYWQoKTsKICAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGYWlsUHJvdmlzaW9uYWxMb2FkKGNvbnN0IFJlc291
cmNlRXJyb3ImKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGYWlsTG9hZChjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCShyZXZpc2lvbiA4
NTYzMSkKKysrIFNvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDE2IEBACisyMDExLTA0LTIyICBUYW8gQmFpICA8bWljaGFlbGJhaUBjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUG9w
dWxhdGUgdG91Y2gtaWNvbiB1cmwgdG8gRnJhbWVMb2FkZXJDbGllbnQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU5MTQzCisKKyAgICAgICAgUmVzcGVj
dCB0aGUgaW50ZXJmYWNlIGNoYW5nZSBpbiBGcmFtZUxvYWRlckNsaWVudC4KKworICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkZy
YW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENoYW5nZUljb25zKToKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oOgorCiAyMDExLTA1LTAxICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgRml4IHdpbmRvd3MgYnVpbGQuCkluZGV4
OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuY3BwCShyZXZpc2lvbiA4NTYzMSkKKysrIFNvdXJjZS9XZWJLaXQvd2lu
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzczLDggKzM3MywxMSBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERp
ZFJlCiAgICAgICAgIGZyYW1lTG9hZERlbGVnYXRlLT5kaWRSZWNlaXZlVGl0bGUod2ViVmlldywg
QlN0cmluZyh0aXRsZS5zdHJpbmcoKSksIG1fd2ViRnJhbWUpOwogfQogCi12b2lkIFdlYkZyYW1l
TG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENoYW5nZUljb25zKCkKK3ZvaWQgV2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoV2ViQ29yZTo6SWNvblR5cGUgdHlwZSkK
IHsKKyAgICBpZiAodHlwZSAhPSBXZWJDb3JlOjpGYXZpY29uKQorICAgICAgICByZXR1cm47CisK
ICAgICBXZWJWaWV3KiB3ZWJWaWV3ID0gbV93ZWJGcmFtZS0+d2ViVmlldygpOwogICAgIENPTVB0
cjxJV2ViRnJhbWVMb2FkRGVsZWdhdGVQcml2YXRlPiBmcmFtZUxvYWREZWxlZ2F0ZVByaXY7CiAg
ICAgaWYgKEZBSUxFRCh3ZWJWaWV3LT5mcmFtZUxvYWREZWxlZ2F0ZVByaXZhdGUoJmZyYW1lTG9h
ZERlbGVnYXRlUHJpdikpIHx8ICFmcmFtZUxvYWREZWxlZ2F0ZVByaXYpCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmgJKHJldmlzaW9uIDg1NjMxKQorKysgU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNzAsNyArNzAsNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUljb24oKTsKICAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpOwogICAgIHZp
cnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBXZWJDb3JlOjpTdHJpbmdX
aXRoRGlyZWN0aW9uJik7Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMo
KTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucyhXZWJDb3JlOjpJY29u
VHlwZSk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ29tbWl0TG9hZCgpOwogICAgIHZp
cnR1YWwgdm9pZCBkaXNwYXRjaERpZEZpbmlzaERvY3VtZW50TG9hZCgpOwogICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaERpZEZpbmlzaExvYWQoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luY2Uv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luY2UvQ2hhbmdlTG9nCShy
ZXZpc2lvbiA4NTYzMSkKKysrIFNvdXJjZS9XZWJLaXQvd2luY2UvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTEtMDQtMjIgIFRhbyBCYWkgIDxtaWNoYWVsYmFp
QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBQb3B1bGF0ZSB0b3VjaC1pY29uIHVybCB0byBGcmFtZUxvYWRlckNsaWVudAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTkxNDMKKworICAg
ICAgICBSZXNwZWN0IHRoZSBpbnRlcmZhY2UgY2hhbmdlIGluIEZyYW1lTG9hZGVyQ2xpZW50Lgor
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXaW5DRS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50V2luQ0U6OmRpc3BhdGNoRGlkQ2hhbmdl
SWNvbnMpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V2luQ0Uu
aDoKKwogMjAxMS0wNS0wMSAgUGF0cmljayBHYW5zdGVyZXIgIDxwYXJvZ2FAd2Via2l0Lm9yZz4K
IAogICAgICAgICBbV0lOXSBVbnJldmlld2VkIGJ1aWxkZml4IGFmdGVyIHI4NTQzNC4KSW5kZXg6
IFNvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXaW5D
RS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9G
cmFtZUxvYWRlckNsaWVudFdpbkNFLmNwcAkocmV2aXNpb24gODU2MzEpCisrKyBTb3VyY2UvV2Vi
S2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V2luQ0UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNzYsNyArMzc2LDcgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudFdpbkNF
OjpkaXNwYXRjaERpZAogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgRnJhbWVMb2Fk
ZXJDbGllbnRXaW5DRTo6ZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygpCit2b2lkIEZyYW1lTG9hZGVy
Q2xpZW50V2luQ0U6OmRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoV2ViQ29yZTo6SWNvblR5cGUpCiB7
CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luY2UvV2Vi
Q29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXaW5DRS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXaW5DRS5oCShy
ZXZpc2lvbiA4NTYzMSkKKysrIFNvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvRnJh
bWVMb2FkZXJDbGllbnRXaW5DRS5oCSh3b3JraW5nIGNvcHkpCkBAIC03Nyw3ICs3Nyw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbigpOwogICAgIHZp
cnR1YWwgdm9pZCBkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCk7CiAgICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFdlYkNvcmU6OlN0cmluZ1dpdGhE
aXJlY3Rpb24mKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygpOwor
ICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZUljb25zKFdlYkNvcmU6Okljb25UeXBl
KTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDb21taXRMb2FkKCk7CiAgICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9hZChjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yJik7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbExvYWQoY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwpJbmRleDogU291cmNlL1dlYktpdC93eC9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93eC9DaGFuZ2VMb2cJKHJldmlzaW9uIDg1
NjMxKQorKysgU291cmNlL1dlYktpdC93eC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwxNyBAQAorCisyMDExLTA0LTIyICBUYW8gQmFpICA8bWljaGFlbGJhaUBjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUG9w
dWxhdGUgdG91Y2gtaWNvbiB1cmwgdG8gRnJhbWVMb2FkZXJDbGllbnQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU5MTQzCisKKyAgICAgICAgUmVzcGVj
dCB0aGUgaW50ZXJmYWNlIGNoYW5nZSBpbiBGcmFtZUxvYWRlckNsaWVudC4KKworICAgICAgICAq
IFdlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZUxvYWRlckNsaWVudFd4OjpkaXNwYXRjaERpZENoYW5nZUljb25zKToKKyAgICAgICAg
KiBXZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guaDoKKwogMjAxMS0wNC0yMyAgS2V2
aW4gT2xsaXZpZXIgIDxrZXZpbm9AdGhlb2xsaXZpZXJzLmNvbT4KIAogICAgICAgICBbd3hdIFVu
cmV2aWV3ZWQgYnVpbGQgZml4LiBGaXhlZCBjYXBpdGFsaXphdGlvbiBmb3IgY2FzZSBzZW5zaXRp
dmUgZmlsZXN5c3RlbXMuCkluZGV4OiBTb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRnJh
bWVMb2FkZXJDbGllbnRXeC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93eC9XZWJL
aXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guY3BwCShyZXZpc2lvbiA4NTYzMSkKKysrIFNv
dXJjZS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFd4LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzI3LDcgKzMyNyw3IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRXeDo6
ZGlzcGF0Y2hEaWRGaW4KICAgICB9CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRXeDo6ZGlz
cGF0Y2hEaWRDaGFuZ2VJY29ucygpCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50V3g6OmRpc3BhdGNo
RGlkQ2hhbmdlSWNvbnMoV2ViQ29yZTo6SWNvblR5cGUpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQo
KTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRlckNs
aWVudFd4LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0Zy
YW1lTG9hZGVyQ2xpZW50V3guaAkocmV2aXNpb24gODU2MzEpCisrKyBTb3VyY2UvV2ViS2l0L3d4
L1dlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
MDksNyArMTA5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hEaWRGaW5pc2hMb2FkKCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERp
ZEZpcnN0TGF5b3V0KCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZpcnN0Vmlz
dWFsbHlOb25FbXB0eUxheW91dCgpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRD
aGFuZ2VJY29ucygpOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VJY29u
cyhXZWJDb3JlOjpJY29uVHlwZSk7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoU2hv
dygpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsUG9saWN5Q2hlY2soKTsKSW5kZXg6IFRv
b2xzL1NjcmlwdHMvYnVpbGQtd2Via2l0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvYnVp
bGQtd2Via2l0CShyZXZpc2lvbiA4NTYzMSkKKysrIFRvb2xzL1NjcmlwdHMvYnVpbGQtd2Via2l0
CSh3b3JraW5nIGNvcHkpCkBAIC0xMTIsNiArMTEyLDcgQEAgbXkgKAogICAgICRzeXN0ZW1NYWxs
b2NTdXBwb3J0LAogICAgICR0aWxlZEJhY2tpbmdTdG9yZVN1cHBvcnQsCiAgICAgJHRvdWNoRXZl
bnRzU3VwcG9ydCwKKyAgICAkdG91Y2hJY29uTG9hZGluZ1N1cHBvcnQsCiAgICAgJHZpZGVvU3Vw
cG9ydCwKICAgICAkd2Nzc1N1cHBvcnQsCiAgICAgJHdlYkF1ZGlvU3VwcG9ydCwKQEAgLTI3Miw2
ICsyNzMsOSBAQCBteSBAZmVhdHVyZXMgPSAoCiAgICAgeyBvcHRpb24gPT4gInRvdWNoLWV2ZW50
cyIsIGRlc2MgPT4gIlRvZ2dsZSBUb3VjaCBFdmVudHMgc3VwcG9ydCIsCiAgICAgICBkZWZpbmUg
PT4gIkVOQUJMRV9UT1VDSF9FVkVOVFMiLCBkZWZhdWx0ID0+IGlzUXQoKSwgdmFsdWUgPT4gXCR0
b3VjaEV2ZW50c1N1cHBvcnQgfSwKIAorICAgIHsgb3B0aW9uID0+ICJ0b3VjaC1pY29uLWxvYWRp
bmciLCBkZXNjID0+ICJUb2dnbGUgVG91Y2ggSWNvbiBMb2FkaW5nIFN1cHBvcnQiLAorICAgICAg
ZGVmaW5lID0+ICJFTkFCTEVfVE9VQ0hfSUNPTl9MT0FESU5HIiwgZGVmYXVsdCA9PiAwLCB2YWx1
ZSA9PiBcJHRvdWNoSWNvbkxvYWRpbmdTdXBwb3J0IH0sCisKICAgICB7IG9wdGlvbiA9PiAidmlk
ZW8iLCBkZXNjID0+ICJUb2dnbGUgVmlkZW8gc3VwcG9ydCIsCiAgICAgICBkZWZpbmUgPT4gIkVO
QUJMRV9WSURFTyIsIGRlZmF1bHQgPT4gKGlzQXBwbGVXZWJLaXQoKSB8fCBpc0d0aygpKSwgdmFs
dWUgPT4gXCR2aWRlb1N1cHBvcnQgfSwKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>92110</attachid>
            <date>2011-05-03 13:01:31 -0700</date>
            <delta_ts>2011-05-03 15:34:43 -0700</delta_ts>
            <desc>Fix style issue</desc>
            <filename>patch.8</filename>
            <type>text/plain</type>
            <size>59526</size>
            <attacher>michaelbai</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5l
cy54Y2NvbmZpZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ29uZmlndXJh
dGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcJKHJldmlzaW9uIDg1NjMxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCSh3
b3JraW5nIGNvcHkpCkBAIC0xMTcsNiArMTE3LDggQEAgRU5BQkxFX1ZJREVPX1RSQUNLID0gOwog
CiBFTkFCTEVfTUVESUFfU1RBVElTVElDUyA9IDsKIAorRU5BQkxFX1RPVUNIX0lDT05fTE9BRElO
RyA9IDsKKwogRU5BQkxFX1dFQl9BVURJTyA9IDsKIAogRU5BQkxFX1dFQl9TT0NLRVRTID0gJChF
TkFCTEVfV0VCX1NPQ0tFVFNfJChSRUFMX1BMQVRGT1JNX05BTUUpKTsKQEAgLTEzMSw0ICsxMzMs
NCBAQCBFTkFCTEVfWEhUTUxNUCA9IDsKIEVOQUJMRV9YUEFUSCA9IEVOQUJMRV9YUEFUSDsKIEVO
QUJMRV9YU0xUID0gRU5BQkxFX1hTTFQ7CiAKLUZFQVRVUkVfREVGSU5FUyA9ICQoRU5BQkxFX0xJ
TktfUFJFRkVUQ0gpICQoRU5BQkxFX0FDQ0VMRVJBVEVEXzJEX0NBTlZBUykgJChFTkFCTEVfV0VC
R0wpICQoRU5BQkxFXzNEX1JFTkRFUklORykgJChFTkFCTEVfQU5JTUFUSU9OX0FQSSkgJChFTkFC
TEVfQkxPQikgJChFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcpICQoRU5BQkxFX0NMSUVOVF9CQVNF
RF9HRU9MT0NBVElPTikgJChFTkFCTEVfREFUQUJBU0UpICQoRU5BQkxFX0RBVEFMSVNUKSAkKEVO
QUJMRV9EQVRBX1RSQU5TRkVSX0lURU1TKSAkKEVOQUJMRV9ERVRBSUxTKSAkKEVOQUJMRV9ERVZJ
Q0VfT1JJRU5UQVRJT04pICQoRU5BQkxFX0RJUkVDVE9SWV9VUExPQUQpICQoRU5BQkxFX0RPTV9T
VE9SQUdFKSAkKEVOQUJMRV9FVkVOVFNPVVJDRSkgJChFTkFCTEVfRklMVEVSUykgJChFTkFCTEVf
RklMRV9TWVNURU0pICQoRU5BQkxFX0ZVTExTQ1JFRU5fQVBJKSAkKEVOQUJMRV9HRU9MT0NBVElP
TikgJChFTkFCTEVfSUNPTkRBVEFCQVNFKSAkKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFKSAkKEVO
QUJMRV9JTlBVVF9TUEVFQ0gpICQoRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIpICQoRU5BQkxF
X01BVEhNTCkgJChFTkFCTEVfTUVURVJfVEFHKSAkKEVOQUJMRV9OT1RJRklDQVRJT05TKSAkKEVO
QUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpICQoRU5BQkxFX1BBR0VfVklTSUJJTElUWV9B
UEkpICQoRU5BQkxFX1BST0dSRVNTX1RBRykgJChFTkFCTEVfUkVHSVNURVJfUFJPVE9DT0xfSEFO
RExFUikgJChFTkFCTEVfUVVPVEEpICQoRU5BQkxFX1NIQVJFRF9XT1JLRVJTKSAkKEVOQUJMRV9T
VkcpICQoRU5BQkxFX1NWR19BTklNQVRJT04pICQoRU5BQkxFX1NWR19BU19JTUFHRSkgJChFTkFC
TEVfU1ZHX0RPTV9PQkpDX0JJTkRJTkdTKSAkKEVOQUJMRV9TVkdfRk9OVFMpICQoRU5BQkxFX1NW
R19GT1JFSUdOX09CSkVDVCkgJChFTkFCTEVfU1ZHX1VTRSkgJChFTkFCTEVfVklERU8pICQoRU5B
QkxFX1ZJREVPX1RSQUNLKSAkKEVOQUJMRV9NRURJQV9TVEFUSVNUSUNTKSAkKEVOQUJMRV9XRUJf
QVVESU8pICQoRU5BQkxFX1dFQl9TT0NLRVRTKSAkKEVOQUJMRV9XRUJfVElNSU5HKSAkKEVOQUJM
RV9XT1JLRVJTKSAkKEVOQUJMRV9YSFRNTE1QKSAkKEVOQUJMRV9YUEFUSCkgJChFTkFCTEVfWFNM
VCk7CitGRUFUVVJFX0RFRklORVMgPSAkKEVOQUJMRV9MSU5LX1BSRUZFVENIKSAkKEVOQUJMRV9B
Q0NFTEVSQVRFRF8yRF9DQU5WQVMpICQoRU5BQkxFX1dFQkdMKSAkKEVOQUJMRV8zRF9SRU5ERVJJ
TkcpICQoRU5BQkxFX0FOSU1BVElPTl9BUEkpICQoRU5BQkxFX0JMT0IpICQoRU5BQkxFX0NIQU5O
RUxfTUVTU0FHSU5HKSAkKEVOQUJMRV9DTElFTlRfQkFTRURfR0VPTE9DQVRJT04pICQoRU5BQkxF
X0RBVEFCQVNFKSAkKEVOQUJMRV9EQVRBTElTVCkgJChFTkFCTEVfREFUQV9UUkFOU0ZFUl9JVEVN
UykgJChFTkFCTEVfREVUQUlMUykgJChFTkFCTEVfREVWSUNFX09SSUVOVEFUSU9OKSAkKEVOQUJM
RV9ESVJFQ1RPUllfVVBMT0FEKSAkKEVOQUJMRV9ET01fU1RPUkFHRSkgJChFTkFCTEVfRVZFTlRT
T1VSQ0UpICQoRU5BQkxFX0ZJTFRFUlMpICQoRU5BQkxFX0ZJTEVfU1lTVEVNKSAkKEVOQUJMRV9G
VUxMU0NSRUVOX0FQSSkgJChFTkFCTEVfR0VPTE9DQVRJT04pICQoRU5BQkxFX0lDT05EQVRBQkFT
RSkgJChFTkFCTEVfSU5ERVhFRF9EQVRBQkFTRSkgJChFTkFCTEVfSU5QVVRfU1BFRUNIKSAkKEVO
QUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSKSAkKEVOQUJMRV9NQVRITUwpICQoRU5BQkxFX01FVEVS
X1RBRykgJChFTkFCTEVfTk9USUZJQ0FUSU9OUykgJChFTkFCTEVfT0ZGTElORV9XRUJfQVBQTElD
QVRJT05TKSAkKEVOQUJMRV9QQUdFX1ZJU0lCSUxJVFlfQVBJKSAkKEVOQUJMRV9QUk9HUkVTU19U
QUcpICQoRU5BQkxFX1JFR0lTVEVSX1BST1RPQ09MX0hBTkRMRVIpICQoRU5BQkxFX1FVT1RBKSAk
KEVOQUJMRV9TSEFSRURfV09SS0VSUykgJChFTkFCTEVfU1ZHKSAkKEVOQUJMRV9TVkdfQU5JTUFU
SU9OKSAkKEVOQUJMRV9TVkdfQVNfSU1BR0UpICQoRU5BQkxFX1NWR19ET01fT0JKQ19CSU5ESU5H
UykgJChFTkFCTEVfU1ZHX0ZPTlRTKSAkKEVOQUJMRV9TVkdfRk9SRUlHTl9PQkpFQ1QpICQoRU5B
QkxFX1NWR19VU0UpICQoRU5BQkxFX1ZJREVPKSAkKEVOQUJMRV9WSURFT19UUkFDSykgJChFTkFC
TEVfTUVESUFfU1RBVElTVElDUykgJChFTkFCTEVfV0VCX0FVRElPKSAkKEVOQUJMRV9XRUJfU09D
S0VUUykgJChFTkFCTEVfV0VCX1RJTUlORykgJChFTkFCTEVfV09SS0VSUykgJChFTkFCTEVfWEhU
TUxNUCkgJChFTkFCTEVfWFBBVEgpICQoRU5BQkxFX1hTTFQpICQoRU5BQkxFX1RPVUNIX0lDT05f
TE9BRElORyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiA4NTYzMSkKKysrIFNvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ3IEBACisyMDExLTA0LTIy
ICBUYW8gQmFpICA8bWljaGFlbGJhaUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUG9wdWxhdGUgdG91Y2gtaWNvbiB1cmwgdG8g
RnJhbWVMb2FkZXJDbGllbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTU5MTQzCisgICAgICAgIAorICAgICAgICBQYXJzZWQgYW5kIHBvcHVsYXRlZCBh
cHBsZS10b3VjaC1pY29uIHVybCB0byBGcmFtZUxvYWRlckNsaWVudC4KKyAgICAgICAgQ2hhbmdl
ZCBmYXZpY29uIHRvIGJlIGEgdHlwZSBvZiBpY29uLgorCisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpjb252ZXJ0SWNvblR5cGVUb0luZGV4KToKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50OjppY29uVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzZXRJY29u
VVJMKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKiBkb20vSWNvblVSTC5o
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okljb25VUkw6Okljb25VUkwpOgorICAgICAgICAq
IGh0bWwvSFRNTExpbmtFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxMaW5rRWxl
bWVudDo6dG9rZW5pemVSZWxBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTExpbmtF
bGVtZW50Ojpwcm9jZXNzKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxMaW5rRWxlbWVudDo6YWRk
U3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKToKKyAgICAgICAgKiBodG1sL0hUTUxMaW5rRWxlbWVu
dC5oOgorICAgICAgICAoV2ViQ29yZTo6SFRNTExpbmtFbGVtZW50OjpSZWxBdHRyaWJ1dGU6OlJl
bEF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6OmlzRW5hYmxl
ZFZpYVNjcmlwdCk6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxOYW1lczo6UHJlbG9hZFRhc2s6OnJlbEF0dHJpYnV0
ZUlzU3R5bGVTaGVldCk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmNvbnZlcnRJY29uVHlwZVRvSW5kZXgpOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnRMb2FkZXI6Omljb25VUkwpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRM
b2FkZXI6OnNldEljb25VUkwpOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5oOgor
ICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVudHMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkVtcHR5
RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMpOgorICAgICAgICAqIGxv
YWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6aWNv
blVSTCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6aWNvblVSTHMpOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmZpbGxJY29uVVJMKToKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lTG9hZGVyOjpnZXREZWZhdWx0SWNvblVSTCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZUxvYWRlcjo6c2V0SWNvblVSTCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6ZGlk
Q2hhbmdlSWNvbnMpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5oOgorICAgICAgICAq
IGxvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oOgorCiAyMDExLTA1LTAzICBCZXRoIERha2luICA8
YmRha2luQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYW4gQmVybnN0ZWluLgpJ
bmRleDogU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvR05VbWFrZWZpbGUuYW0JKHJldmlzaW9uIDg1NjMxKQorKysgU291cmNlL1dlYkNv
cmUvR05VbWFrZWZpbGUuYW0JKHdvcmtpbmcgY29weSkKQEAgLTI2MSw2ICsyNjEsMTYgQEAgd2Vi
Y29yZV9idWlsdF9zb3VyY2VzICs9IFwKIGVuZGlmICMgRU5EIEVOQUJMRV9RVU9UQQogCiAjIC0t
LS0KKyMgVG91Y2ggSWNvbiBMb2FkaW5nCisjIC0tLS0KK2lmIEVOQUJMRV9UT1VDSF9JQ09OX0xP
QURJTkcKK0ZFQVRVUkVfREVGSU5FUyArPSBFTkFCTEVfVE9VQ0hfSUNPTl9MT0FESU5HPTEKK3dl
YmNvcmVfY3BwZmxhZ3MgKz0gLURFTkFCTEVfVE9VQ0hfSUNPTl9MT0FESU5HPTEKK2Vsc2UKK3dl
YmNvcmVfY3BwZmxhZ3MgKz0gLURFTkFCTEVfVE9VQ0hfSUNPTl9MT0FESU5HPTAKK2VuZGlmICMg
RU5EIEVOQUJMRV9UT1VDSF9JQ09OX0xPQURJTkcKKworIyAtLS0tCiAjIFNwZWVjaCBJbnB1dCBB
UEkgc3VwcG9ydAogIyAtLS0tCiBpZiBFTkFCTEVfSU5QVVRfU1BFRUNICkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9mZWF0dXJlcy5wcmkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZmVhdHVy
ZXMucHJpCShyZXZpc2lvbiA4NTYzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2ZlYXR1cmVzLnByaQko
d29ya2luZyBjb3B5KQpAQCAtNzUsNiArNzUsNyBAQCBjb250YWlucyhERUZJTkVTLCBFTkFCTEVf
U0lOR0xFX1RIUkVBREVECiAhY29udGFpbnMoREVGSU5FUywgRU5BQkxFX1dFQkdMPS4pOiBERUZJ
TkVTICs9IEVOQUJMRV9XRUJHTD0wCiAhY29udGFpbnMoREVGSU5FUywgRU5BQkxFX01FRElBX1NU
QVRJU1RJQ1M9Lik6IERFRklORVMgKz0gRU5BQkxFX01FRElBX1NUQVRJU1RJQ1M9MAogIWNvbnRh
aW5zKERFRklORVMsIEVOQUJMRV9WSURFT19UUkFDSz0uKTogREVGSU5FUyArPSBFTkFCTEVfVklE
RU9fVFJBQ0s9MAorIWNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9UT1VDSF9JQ09OX0xPQURJTkc9
Lik6IERFRklORVMgKz0gRU5BQkxFX1RPVUNIX0lDT05fTE9BRElORz0wCiAhY29udGFpbnMoREVG
SU5FUywgRU5BQkxFX0FOSU1BVElPTl9BUEk9Lik6IERFRklORVMgKz0gRU5BQkxFX0FOSU1BVElP
Tl9BUEk9MAogCiAjIFNWRyBzdXBwb3J0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Db25maWd1cmF0
aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwkocmV2aXNpb24gODU2MzEp
CisrKyBTb3VyY2UvV2ViQ29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZp
Zwkod29ya2luZyBjb3B5KQpAQCAtMTE3LDYgKzExNyw4IEBAIEVOQUJMRV9WSURFT19UUkFDSyA9
IDsKIAogRU5BQkxFX01FRElBX1NUQVRJU1RJQ1MgPSA7CiAKK0VOQUJMRV9UT1VDSF9JQ09OX0xP
QURJTkcgPSA7CisKIEVOQUJMRV9XRUJfQVVESU8gPSA7CiAKIEVOQUJMRV9XRUJfU09DS0VUUyA9
ICQoRU5BQkxFX1dFQl9TT0NLRVRTXyQoUkVBTF9QTEFURk9STV9OQU1FKSk7CkBAIC0xMzEsNCAr
MTMzLDQgQEAgRU5BQkxFX1hIVE1MTVAgPSA7CiBFTkFCTEVfWFBBVEggPSBFTkFCTEVfWFBBVEg7
CiBFTkFCTEVfWFNMVCA9IEVOQUJMRV9YU0xUOwogCi1GRUFUVVJFX0RFRklORVMgPSAkKEVOQUJM
RV9MSU5LX1BSRUZFVENIKSAkKEVOQUJMRV9BQ0NFTEVSQVRFRF8yRF9DQU5WQVMpICQoRU5BQkxF
X1dFQkdMKSAkKEVOQUJMRV8zRF9SRU5ERVJJTkcpICQoRU5BQkxFX0FOSU1BVElPTl9BUEkpICQo
RU5BQkxFX0JMT0IpICQoRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HKSAkKEVOQUJMRV9DTElFTlRf
QkFTRURfR0VPTE9DQVRJT04pICQoRU5BQkxFX0RBVEFCQVNFKSAkKEVOQUJMRV9EQVRBTElTVCkg
JChFTkFCTEVfREFUQV9UUkFOU0ZFUl9JVEVNUykgJChFTkFCTEVfREVUQUlMUykgJChFTkFCTEVf
REVWSUNFX09SSUVOVEFUSU9OKSAkKEVOQUJMRV9ESVJFQ1RPUllfVVBMT0FEKSAkKEVOQUJMRV9E
T01fU1RPUkFHRSkgJChFTkFCTEVfRVZFTlRTT1VSQ0UpICQoRU5BQkxFX0ZJTFRFUlMpICQoRU5B
QkxFX0ZJTEVfU1lTVEVNKSAkKEVOQUJMRV9GVUxMU0NSRUVOX0FQSSkgJChFTkFCTEVfR0VPTE9D
QVRJT04pICQoRU5BQkxFX0lDT05EQVRBQkFTRSkgJChFTkFCTEVfSU5ERVhFRF9EQVRBQkFTRSkg
JChFTkFCTEVfSU5QVVRfU1BFRUNIKSAkKEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSKSAkKEVO
QUJMRV9NQVRITUwpICQoRU5BQkxFX01FVEVSX1RBRykgJChFTkFCTEVfTk9USUZJQ0FUSU9OUykg
JChFTkFCTEVfT0ZGTElORV9XRUJfQVBQTElDQVRJT05TKSAkKEVOQUJMRV9QQUdFX1ZJU0lCSUxJ
VFlfQVBJKSAkKEVOQUJMRV9QUk9HUkVTU19UQUcpICQoRU5BQkxFX1JFR0lTVEVSX1BST1RPQ09M
X0hBTkRMRVIpICQoRU5BQkxFX1FVT1RBKSAkKEVOQUJMRV9TSEFSRURfV09SS0VSUykgJChFTkFC
TEVfU1ZHKSAkKEVOQUJMRV9TVkdfQU5JTUFUSU9OKSAkKEVOQUJMRV9TVkdfQVNfSU1BR0UpICQo
RU5BQkxFX1NWR19ET01fT0JKQ19CSU5ESU5HUykgJChFTkFCTEVfU1ZHX0ZPTlRTKSAkKEVOQUJM
RV9TVkdfRk9SRUlHTl9PQkpFQ1QpICQoRU5BQkxFX1NWR19VU0UpICQoRU5BQkxFX1ZJREVPKSAk
KEVOQUJMRV9WSURFT19UUkFDSykgJChFTkFCTEVfTUVESUFfU1RBVElTVElDUykgJChFTkFCTEVf
V0VCX0FVRElPKSAkKEVOQUJMRV9XRUJfU09DS0VUUykgJChFTkFCTEVfV0VCX1RJTUlORykgJChF
TkFCTEVfV09SS0VSUykgJChFTkFCTEVfWEhUTUxNUCkgJChFTkFCTEVfWFBBVEgpICQoRU5BQkxF
X1hTTFQpOworRkVBVFVSRV9ERUZJTkVTID0gJChFTkFCTEVfTElOS19QUkVGRVRDSCkgJChFTkFC
TEVfQUNDRUxFUkFURURfMkRfQ0FOVkFTKSAkKEVOQUJMRV9XRUJHTCkgJChFTkFCTEVfM0RfUkVO
REVSSU5HKSAkKEVOQUJMRV9BTklNQVRJT05fQVBJKSAkKEVOQUJMRV9CTE9CKSAkKEVOQUJMRV9D
SEFOTkVMX01FU1NBR0lORykgJChFTkFCTEVfQ0xJRU5UX0JBU0VEX0dFT0xPQ0FUSU9OKSAkKEVO
QUJMRV9EQVRBQkFTRSkgJChFTkFCTEVfREFUQUxJU1QpICQoRU5BQkxFX0RBVEFfVFJBTlNGRVJf
SVRFTVMpICQoRU5BQkxFX0RFVEFJTFMpICQoRU5BQkxFX0RFVklDRV9PUklFTlRBVElPTikgJChF
TkFCTEVfRElSRUNUT1JZX1VQTE9BRCkgJChFTkFCTEVfRE9NX1NUT1JBR0UpICQoRU5BQkxFX0VW
RU5UU09VUkNFKSAkKEVOQUJMRV9GSUxURVJTKSAkKEVOQUJMRV9GSUxFX1NZU1RFTSkgJChFTkFC
TEVfRlVMTFNDUkVFTl9BUEkpICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9JQ09OREFU
QUJBU0UpICQoRU5BQkxFX0lOREVYRURfREFUQUJBU0UpICQoRU5BQkxFX0lOUFVUX1NQRUVDSCkg
JChFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dFUikgJChFTkFCTEVfTUFUSE1MKSAkKEVOQUJMRV9N
RVRFUl9UQUcpICQoRU5BQkxFX05PVElGSUNBVElPTlMpICQoRU5BQkxFX09GRkxJTkVfV0VCX0FQ
UExJQ0FUSU9OUykgJChFTkFCTEVfUEFHRV9WSVNJQklMSVRZX0FQSSkgJChFTkFCTEVfUFJPR1JF
U1NfVEFHKSAkKEVOQUJMRV9SRUdJU1RFUl9QUk9UT0NPTF9IQU5ETEVSKSAkKEVOQUJMRV9RVU9U
QSkgJChFTkFCTEVfU0hBUkVEX1dPUktFUlMpICQoRU5BQkxFX1NWRykgJChFTkFCTEVfU1ZHX0FO
SU1BVElPTikgJChFTkFCTEVfU1ZHX0FTX0lNQUdFKSAkKEVOQUJMRV9TVkdfRE9NX09CSkNfQklO
RElOR1MpICQoRU5BQkxFX1NWR19GT05UUykgJChFTkFCTEVfU1ZHX0ZPUkVJR05fT0JKRUNUKSAk
KEVOQUJMRV9TVkdfVVNFKSAkKEVOQUJMRV9WSURFTykgJChFTkFCTEVfVklERU9fVFJBQ0spICQo
RU5BQkxFX01FRElBX1NUQVRJU1RJQ1MpICQoRU5BQkxFX1dFQl9BVURJTykgJChFTkFCTEVfV0VC
X1NPQ0tFVFMpICQoRU5BQkxFX1dFQl9USU1JTkcpICQoRU5BQkxFX1dPUktFUlMpICQoRU5BQkxF
X1hIVE1MTVApICQoRU5BQkxFX1hQQVRIKSAkKEVOQUJMRV9YU0xUKSAkKEVOQUJMRV9UT1VDSF9J
Q09OX0xPQURJTkcpOwpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gODU2MzEpCisrKyBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTk3MCw2
ICs5NzAsNyBAQAogCQk0NDlCMTlGNTBGQTcyRUNFMDAxNUNBNEEgLyogSFRNTFBhcnNlclF1aXJr
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDQ5QjE5
RjMwRkE3MkVDRTAwMTVDQTRBIC8qIEhUTUxQYXJzZXJRdWlya3MuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NEEyOEFBQzEyREZCOEFDMDBBRTky
M0IgLyogTWF0aE1MRWxlbWVudEZhY3RvcnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQ0QTI4QUFCMTJERkI4QUMwMEFFOTIzQiAvKiBNYXRoTUxFbGVt
ZW50RmFjdG9yeS5oICovOyB9OwogCQk0NEEyOEFBRjEyREZCOEJGMDBBRTkyM0IgLyogTWF0aE1M
TmFtZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0
QTI4QUFFMTJERkI4QkYwMEFFOTIzQiAvKiBNYXRoTUxOYW1lcy5oICovOyB9OworCQk0NUJBQzJC
MDEzNjBCQkFCMDA1REEyNTggLyogSWNvblVSTC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDVCQUMyQUYxMzYwQkJBQjAwNURBMjU4IC8qIEljb25VUkwu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NjE0
QTFGRTBCMjNBOEQ2MDA0NDZFMUMgLyogY29weUN1cnNvci5wbmcgaW4gUmVzb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2MTRBMUZEMEIyM0E4RDYwMDQ0NkUxQyAv
KiBjb3B5Q3Vyc29yLnBuZyAqLzsgfTsKIAkJNDY0RUEyNzMwQjhBMzUwQjAwQThFNkUzIC8qIGNy
b3NzSGFpckN1cnNvci5wbmcgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQ2NEVBMjcxMEI4QTM1MEIwMEE4RTZFMyAvKiBjcm9zc0hhaXJDdXJzb3IucG5n
ICovOyB9OwogCQk0NjRFQTI3NDBCOEEzNTBCMDBBOEU2RTMgLyogbm90QWxsb3dlZEN1cnNvci5w
bmcgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2NEVB
MjcyMEI4QTM1MEIwMEE4RTZFMyAvKiBub3RBbGxvd2VkQ3Vyc29yLnBuZyAqLzsgfTsKQEAgLTc0
MzYsNiArNzQzNyw3IEBACiAJCTQ0OUIxOUYzMEZBNzJFQ0UwMDE1Q0E0QSAvKiBIVE1MUGFyc2Vy
UXVpcmtzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhUTUxQYXJzZXJRdWly
a3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDRBMjhBQUIxMkRGQjhBQzAwQUU5
MjNCIC8qIE1hdGhNTEVsZW1lbnRGYWN0b3J5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IE1hdGhNTEVsZW1lbnRGYWN0b3J5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQ0QTI4QUFFMTJERkI4QkYwMEFFOTIzQiAvKiBNYXRoTUxOYW1lcy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBNYXRoTUxOYW1lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk0NUJBQzJBRjEzNjBCQkFCMDA1REEyNTggLyogSWNvblVSTC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBJY29uVVJMLmg7IHBhdGggPSBkb20vSWNvblVSTC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjE0QTFGRDBCMjNBOEQ2MDA0NDZFMUMg
LyogY29weUN1cnNvci5wbmcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBpbWFnZS5wbmc7IHBhdGggPSBjb3B5Q3Vyc29yLnBuZzsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNDY0RUEyNzEwQjhBMzUwQjAwQThFNkUzIC8qIGNyb3NzSGFpckN1
cnNvci5wbmcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBpbWFnZS5wbmc7IHBhdGggPSBjcm9zc0hhaXJDdXJzb3IucG5nOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0NjRFQTI3MjBCOEEzNTBCMDBBOEU2RTMgLyogbm90QWxsb3dlZEN1cnNv
ci5wbmcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBp
bWFnZS5wbmc7IHBhdGggPSBub3RBbGxvd2VkQ3Vyc29yLnBuZzsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTEyNTE3LDYgKzEyNTE5LDcgQEAKIAkJMDg2N0Q2OTFGRTg0MDI4RkMwMkFB
QzA3IC8qIFdlYktpdCAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAo
CisJCQkJNDVCQUMyQUYxMzYwQkJBQjAwNURBMjU4IC8qIEljb25VUkwuaCAqLywKIAkJCQk2NUM5
N0FGMjA4RUE5MDg4MDBBQ0QyNzMgLyogY29uZmlnLmggKi8sCiAJCQkJRURFQzk4MDIwQUVEN0Ux
NzAwNTkxMzdGIC8qIFdlYkNvcmVQcmVmaXguaCAqLywKIAkJCQk5MzA3MDYxMzA5RTBDQTgyMDBC
MTdGRTQgLyogRGVyaXZlZFNvdXJjZXMubWFrZSAqLywKQEAgLTIyNzAyLDYgKzIyNzA1LDcgQEAK
IAkJCQk5M0YxOTlFRDA4MjQ1RTU5MDAxRTlBQkMgLyogWFNMVFByb2Nlc3Nvci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJRTFCRTUxMkUwQ0Y2QzUxMjAwMkVBOTU5IC8qIFhTTFRVbmljb2RlU29ydC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJOTc3RTJFMEYxMkYwRkM5QzAwQzEzMzc5IC8qIFhTU0ZpbHRl
ci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDVCQUMyQjAxMzYwQkJBQjAwNURBMjU4IC8qIEljb25V
UkwuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHBy
b2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCShyZXZpc2lv
biA4NTYzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQzNjYsMTUgKzQzNjYsMjYgQEAgdW5zaWduZWQgRm9ybUVsZW1lbnRLZXlIYXNoOjpo
YXNoKGNvbnN0IAogICAgIHJldHVybiBTdHJpbmdIYXNoZXI6Omhhc2hNZW1vcnk8c2l6ZW9mKEZv
cm1FbGVtZW50S2V5KT4oJmtleSk7CiB9CiAKLXZvaWQgRG9jdW1lbnQ6OnNldEljb25VUkwoY29u
c3QgU3RyaW5nJiBpY29uVVJMLCBjb25zdCBTdHJpbmcmIHR5cGUpCitJY29uVVJMIERvY3VtZW50
OjppY29uVVJMKEljb25UeXBlIGljb25UeXBlKSBjb25zdAogewotICAgIC8vIEZJWE1FIC0gPHJk
YXI6Ly9wcm9ibGVtLzQ3Mjc2NDU+IC0gQXQgc29tZSBwb2ludCBpbiB0aGUgZnV0dXJlLCB3ZSBt
aWdodCBhY3R1YWxseSBob25vciB0aGUgInR5cGUiIAotICAgIGlmIChtX2ljb25VUkwuaXNFbXB0
eSgpKQotICAgICAgICBtX2ljb25VUkwgPSBpY29uVVJMOwotICAgIGVsc2UgaWYgKCF0eXBlLmlz
RW1wdHkoKSkKLSAgICAgICAgbV9pY29uVVJMID0gaWNvblVSTDsKKyAgICByZXR1cm4gbV9pY29u
VVJMc1tJY29uVVJMOjp0b0ljb25JbmRleChpY29uVHlwZSldOworfQorCit2b2lkIERvY3VtZW50
OjpzZXRJY29uVVJMKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBJ
Y29uVHlwZSBpY29uVHlwZSkKK3sKKyAgICAvLyBGSVhNRSAtIDxyZGFyOi8vcHJvYmxlbS80NzI3
NjQ1PiAtIEF0IHNvbWUgcG9pbnQgaW4gdGhlIGZ1dHVyZSwgd2UgbWlnaHQgYWN0dWFsbHkgaG9u
b3IgdGhlICJtaW1lVHlwZSIKKyAgICBJY29uVVJMIG5ld1VSTChLVVJMKFBhcnNlZFVSTFN0cmlu
ZywgdXJsKSwgaWNvblR5cGUpOworICAgIGlmICghaWNvblVSTChpY29uVHlwZSkubV9pY29uVVJM
LmlzRW1wdHkoKSkKKyAgICAgICAgc2V0SWNvblVSTChuZXdVUkwpOworICAgIGVsc2UgaWYgKCFt
aW1lVHlwZS5pc0VtcHR5KCkpCisgICAgICAgIHNldEljb25VUkwobmV3VVJMKTsKICAgICBpZiAo
RnJhbWUqIGYgPSBmcmFtZSgpKQotICAgICAgICBmLT5sb2FkZXIoKS0+c2V0SWNvblVSTChtX2lj
b25VUkwpOworICAgICAgICBmLT5sb2FkZXIoKS0+c2V0SWNvblVSTChuZXdVUkwpOworfQorCit2
b2lkIERvY3VtZW50OjpzZXRJY29uVVJMKGNvbnN0IEljb25VUkwmIGljb25VUkwpCit7CisgICAg
bV9pY29uVVJMc1tJY29uVVJMOjp0b0ljb25JbmRleChpY29uVVJMLm1faWNvblR5cGUpXSA9IGlj
b25VUkw7CiB9CiAKIHZvaWQgRG9jdW1lbnQ6OnJlZ2lzdGVyRm9ybUVsZW1lbnRXaXRoRm9ybUF0
dHJpYnV0ZShGb3JtQXNzb2NpYXRlZEVsZW1lbnQqIGVsZW1lbnQpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuaAkocmV2aXNpb24gODU2MzEpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkNvbG9yLmgiCiAj
aW5jbHVkZSAiRE9NVGltZVN0YW1wLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRUaW1pbmcuaCIKKyNp
bmNsdWRlICJJY29uVVJMLmgiCiAjaW5jbHVkZSAiUXVhbGlmaWVkTmFtZS5oIgogI2luY2x1ZGUg
IlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJTdHJpbmdXaXRoRGlyZWN0aW9u
LmgiCkBAIC05MTcsOCArOTE4LDkgQEAgcHVibGljOgogICAgIAogICAgIHZvaWQgc2V0SGFzTm9k
ZXNXaXRoUGxhY2Vob2xkZXJTdHlsZSgpIHsgbV9oYXNOb2Rlc1dpdGhQbGFjZWhvbGRlclN0eWxl
ID0gdHJ1ZTsgfQogCi0gICAgY29uc3QgU3RyaW5nJiBpY29uVVJMKCkgY29uc3QgeyByZXR1cm4g
bV9pY29uVVJMOyB9Ci0gICAgdm9pZCBzZXRJY29uVVJMKGNvbnN0IFN0cmluZyYgaWNvblVSTCwg
Y29uc3QgU3RyaW5nJiB0eXBlKTsKKyAgICBJY29uVVJMIGljb25VUkwoSWNvblR5cGUpIGNvbnN0
OworICAgIHZvaWQgc2V0SWNvblVSTChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBJY29u
VHlwZSk7CisgICAgdm9pZCBzZXRJY29uVVJMKGNvbnN0IEljb25VUkwmKTsKIAogICAgIHZvaWQg
c2V0VXNlU2VjdXJlS2V5Ym9hcmRFbnRyeVdoZW5BY3RpdmUoYm9vbCk7CiAgICAgYm9vbCB1c2VT
ZWN1cmVLZXlib2FyZEVudHJ5V2hlbkFjdGl2ZSgpIGNvbnN0OwpAQCAtMTMyNCw4ICsxMzI2LDgg
QEAgcHJpdmF0ZToKIAogICAgIGJvb2wgbV9jcmVhdGVSZW5kZXJlcnM7CiAgICAgYm9vbCBtX2lu
UGFnZUNhY2hlOwotICAgIFN0cmluZyBtX2ljb25VUkw7Ci0gICAgCisgICAgSWNvblVSTCBtX2lj
b25VUkxzW0lDT05fQ09VTlRdOworCiAgICAgSGFzaFNldDxFbGVtZW50Kj4gbV9kb2N1bWVudEFj
dGl2YXRpb25DYWxsYmFja0VsZW1lbnRzOwogICAgIEhhc2hTZXQ8RWxlbWVudCo+IG1fbWVkaWFW
b2x1bWVDYWxsYmFja0VsZW1lbnRzOwogICAgIEhhc2hTZXQ8RWxlbWVudCo+IG1fcHJpdmF0ZUJy
b3dzaW5nU3RhdGVDaGFuZ2VkRWxlbWVudHM7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vSWNv
blVSTC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9JY29uVVJMLmgJKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vSWNvblVSTC5oCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDkyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBt
ZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICog
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBJY29uVVJMX2gKKyNkZWZpbmUgSWNvblVSTF9oCisKKyNpbmNs
dWRlICJLVVJMLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworI2lmIEVOQUJMRShUT1VDSF9J
Q09OX0xPQURJTkcpCisjZGVmaW5lIElDT05fQ09VTlQgMworI2Vsc2UKKyNkZWZpbmUgSUNPTl9D
T1VOVCAxCisjZW5kaWYKKworZW51bSBJY29uVHlwZSB7CisgICAgSW52YWxpZEljb24gPSAwLAor
ICAgIEZhdmljb24gPSAxLAorICAgIFRvdWNoSWNvbiA9IDEgPDwgMSwKKyAgICBUb3VjaFByZWNv
bXBvc2VkSWNvbiA9IDEgPDwgMgorfTsKKworc3RydWN0IEljb25VUkwgeworICAgIEljb25UeXBl
IG1faWNvblR5cGU7CisgICAgS1VSTCBtX2ljb25VUkw7CisKKyAgICBJY29uVVJMKCkKKyAgICAg
ICAgOiBtX2ljb25UeXBlKEludmFsaWRJY29uKQorICAgIHsKKyAgICB9CisKKyAgICBJY29uVVJM
KGNvbnN0IEtVUkwmIHVybCwgSWNvblR5cGUgdHlwZSkKKyAgICAgICAgOiBtX2ljb25UeXBlKHR5
cGUpCisgICAgICAgICwgbV9pY29uVVJMKHVybCkKKyAgICB7CisgICAgfQorCisKKyAgICAvLyBS
ZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgZ2l2ZW4gdHlwZSwgMCBpcyByZXR1cm5lZCBpZiB0aGUg
dHlwZSBpcyBpbnZhbGlkLgorICAgIHN0YXRpYyBzaXplX3QgdG9JY29uSW5kZXgoSWNvblR5cGUg
dHlwZSkKKyAgICB7CisgICAgICAgIHNpemVfdCBpbmRleCA9IDA7CisgICAgICAgIHN3aXRjaCAo
dHlwZSkgeworICAgICAgICBjYXNlIEZhdmljb246CisgICAgICAgICAgICBpbmRleCA9IDA7Cisg
ICAgICAgICAgICBicmVhazsKKyNpZiBFTkFCTEUoVE9VQ0hfSUNPTl9MT0FESU5HKQorICAgICAg
ICBjYXNlIFRvdWNoUHJlY29tcG9zZWRJY29uOgorICAgICAgICAgICAgaW5kZXggPSAxOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgVG91Y2hJY29uOgorICAgICAgICAgICAgaW5k
ZXggPSAyOworICAgICAgICAgICAgYnJlYWs7CisjZW5kaWYKKyAgICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAgICAgIHJldHVy
biBpbmRleDsKKyAgICB9Cit9OworCit9CisKKyNlbmRpZiAvLyBJY29uVVJMX2gKClByb3BlcnR5
IGNoYW5nZXMgb246IFNvdXJjZS9XZWJDb3JlL2RvbS9JY29uVVJMLmgKX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRl
ZDogc3ZuOmVvbC1zdHlsZQogICArIExGCgpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TGlua0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExp
bmtFbGVtZW50LmNwcAkocmV2aXNpb24gODU2MzEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxMaW5rRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2MCw3ICsxNjAsNyBAQCB2b2lk
IEhUTUxMaW5rRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1CiB2b2lkIEhUTUxMaW5rRWxlbWVu
dDo6dG9rZW5pemVSZWxBdHRyaWJ1dGUoY29uc3QgQXRvbWljU3RyaW5nJiByZWwsIFJlbEF0dHJp
YnV0ZSYgcmVsQXR0cmlidXRlKQogewogICAgIHJlbEF0dHJpYnV0ZS5tX2lzU3R5bGVTaGVldCA9
IGZhbHNlOwotICAgIHJlbEF0dHJpYnV0ZS5tX2lzSWNvbiA9IGZhbHNlOworICAgIHJlbEF0dHJp
YnV0ZS5tX2ljb25UeXBlID0gSW52YWxpZEljb247CiAgICAgcmVsQXR0cmlidXRlLm1faXNBbHRl
cm5hdGUgPSBmYWxzZTsKICAgICByZWxBdHRyaWJ1dGUubV9pc0ROU1ByZWZldGNoID0gZmFsc2U7
CiAjaWYgRU5BQkxFKExJTktfUFJFRkVUQ0gpCkBAIC0xNzAsNyArMTcwLDEzIEBAIHZvaWQgSFRN
TExpbmtFbGVtZW50Ojp0b2tlbml6ZVJlbEF0dHJpYnUKICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nh
c2UocmVsLCAic3R5bGVzaGVldCIpKQogICAgICAgICByZWxBdHRyaWJ1dGUubV9pc1N0eWxlU2hl
ZXQgPSB0cnVlOwogICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHJlbCwgImljb24iKSB8
fCBlcXVhbElnbm9yaW5nQ2FzZShyZWwsICJzaG9ydGN1dCBpY29uIikpCi0gICAgICAgIHJlbEF0
dHJpYnV0ZS5tX2lzSWNvbiA9IHRydWU7CisgICAgICAgIHJlbEF0dHJpYnV0ZS5tX2ljb25UeXBl
ID0gRmF2aWNvbjsKKyNpZiBFTkFCTEUoVE9VQ0hfSUNPTl9MT0FESU5HKQorICAgIGVsc2UgaWYg
KGVxdWFsSWdub3JpbmdDYXNlKHJlbCwgImFwcGxlLXRvdWNoLWljb24iKSkKKyAgICAgICAgcmVs
QXR0cmlidXRlLm1faWNvblR5cGUgPSBUb3VjaEljb247CisgICAgZWxzZSBpZiAoZXF1YWxJZ25v
cmluZ0Nhc2UocmVsLCAiYXBwbGUtdG91Y2gtaWNvbi1wcmVjb21wb3NlZCIpKQorICAgICAgICBy
ZWxBdHRyaWJ1dGUubV9pY29uVHlwZSA9IFRvdWNoUHJlY29tcG9zZWRJY29uOworI2VuZGlmCiAg
ICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UocmVsLCAiZG5zLXByZWZldGNoIikpCiAgICAg
ICAgIHJlbEF0dHJpYnV0ZS5tX2lzRE5TUHJlZmV0Y2ggPSB0cnVlOwogICAgIGVsc2UgaWYgKGVx
dWFsSWdub3JpbmdDYXNlKHJlbCwgImFsdGVybmF0ZSBzdHlsZXNoZWV0IikgfHwgZXF1YWxJZ25v
cmluZ0Nhc2UocmVsLCAic3R5bGVzaGVldCBhbHRlcm5hdGUiKSkgewpAQCAtMTg5LDcgKzE5NSwx
MyBAQCB2b2lkIEhUTUxMaW5rRWxlbWVudDo6dG9rZW5pemVSZWxBdHRyaWJ1CiAgICAgICAgICAg
ICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZSgqaXQsICJhbHRlcm5hdGUiKSkKICAgICAgICAg
ICAgICAgICByZWxBdHRyaWJ1dGUubV9pc0FsdGVybmF0ZSA9IHRydWU7CiAgICAgICAgICAgICBl
bHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZSgqaXQsICJpY29uIikpCi0gICAgICAgICAgICAgICAg
cmVsQXR0cmlidXRlLm1faXNJY29uID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICByZWxBdHRyaWJ1
dGUubV9pY29uVHlwZSA9IEZhdmljb247CisjaWYgRU5BQkxFKFRPVUNIX0lDT05fTE9BRElORykK
KyAgICAgICAgICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKCppdCwgImFwcGxlLXRvdWNo
LWljb24iKSkKKyAgICAgICAgICAgICAgICByZWxBdHRyaWJ1dGUubV9pY29uVHlwZSA9IFRvdWNo
SWNvbjsKKyAgICAgICAgICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKCppdCwgImFwcGxl
LXRvdWNoLWljb24tcHJlY29tcG9zZWQiKSkKKyAgICAgICAgICAgICAgICByZWxBdHRyaWJ1dGUu
bV9pY29uVHlwZSA9IFRvdWNoUHJlY29tcG9zZWRJY29uOworI2VuZGlmCiAjaWYgRU5BQkxFKExJ
TktfUFJFRkVUQ0gpCiAgICAgICAgICAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZSgqaXQs
ICJwcmVmZXRjaCIpKQogICAgICAgICAgICAgICByZWxBdHRyaWJ1dGUubV9pc0xpbmtQcmVmZXRj
aCA9IHRydWU7CkBAIC0yMjIsMTAgKzIzNCwxMCBAQCB2b2lkIEhUTUxMaW5rRWxlbWVudDo6cHJv
Y2VzcygpCiAKICAgICAvLyBJRSBleHRlbnNpb246IGxvY2F0aW9uIG9mIHNtYWxsIGljb24gZm9y
IGxvY2F0aW9uYmFyIC8gYm9va21hcmtzCiAgICAgLy8gV2UnbGwgcmVjb3JkIHRoaXMgVVJMIHBl
ciBkb2N1bWVudCwgZXZlbiBpZiB3ZSBsYXRlciBvbmx5IHVzZSBpdCBpbiB0b3AgbGV2ZWwgZnJh
bWVzCi0gICAgaWYgKG1fcmVsQXR0cmlidXRlLm1faXNJY29uICYmIG1fdXJsLmlzVmFsaWQoKSAm
JiAhbV91cmwuaXNFbXB0eSgpKSB7CisgICAgaWYgKG1fcmVsQXR0cmlidXRlLm1faWNvblR5cGUg
IT0gSW52YWxpZEljb24gJiYgbV91cmwuaXNWYWxpZCgpICYmICFtX3VybC5pc0VtcHR5KCkpIHsK
ICAgICAgICAgaWYgKCFjaGVja0JlZm9yZUxvYWRFdmVudCgpKSAKICAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgZG9jdW1lbnQoKS0+c2V0SWNvblVSTChtX3VybC5zdHJpbmcoKSwgdHlwZSk7
CisgICAgICAgIGRvY3VtZW50KCktPnNldEljb25VUkwobV91cmwuc3RyaW5nKCksIHR5cGUsIG1f
cmVsQXR0cmlidXRlLm1faWNvblR5cGUpOwogICAgIH0KIAogICAgIGlmIChtX3JlbEF0dHJpYnV0
ZS5tX2lzRE5TUHJlZmV0Y2gpIHsKQEAgLTQ3Myw3ICs0ODUsNyBAQCB2b2lkIEhUTUxMaW5rRWxl
bWVudDo6YWRkU3VicmVzb3VyY2VBdHRyCiAgICAgSFRNTEVsZW1lbnQ6OmFkZFN1YnJlc291cmNl
QXR0cmlidXRlVVJMcyh1cmxzKTsKIAogICAgIC8vIEZhdmljb25zIGFyZSBoYW5kbGVkIGJ5IGEg
c3BlY2lhbCBjYXNlIGluIExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZSgpCi0gICAgaWYgKG1fcmVs
QXR0cmlidXRlLm1faXNJY29uKQorICAgIGlmIChtX3JlbEF0dHJpYnV0ZS5tX2ljb25UeXBlICE9
IEludmFsaWRJY29uKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIW1fcmVsQXR0cmlidXRl
Lm1faXNTdHlsZVNoZWV0KQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1l
bnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5o
CShyZXZpc2lvbiA4NTYzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJDYWNoZWRSZXNv
dXJjZUNsaWVudC5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlSGFuZGxlLmgiCiAjaW5jbHVk
ZSAiSFRNTEVsZW1lbnQuaCIKKyNpbmNsdWRlICJJY29uVVJMLmgiCiAjaW5jbHVkZSAiVGltZXIu
aCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzksNyArNDAsNyBAQCBjbGFzcyBIVE1MTGlu
a0VsZW1lbnQgOiBwdWJsaWMgSFRNTEVsZW1lCiBwdWJsaWM6CiAgICAgc3RydWN0IFJlbEF0dHJp
YnV0ZSB7CiAgICAgICAgIGJvb2wgbV9pc1N0eWxlU2hlZXQ7Ci0gICAgICAgIGJvb2wgbV9pc0lj
b247CisgICAgICAgIEljb25UeXBlIG1faWNvblR5cGU7CiAgICAgICAgIGJvb2wgbV9pc0FsdGVy
bmF0ZTsKICAgICAgICAgYm9vbCBtX2lzRE5TUHJlZmV0Y2g7CiAjaWYgRU5BQkxFKExJTktfUFJF
RkVUQ0gpCkBAIC00OSw3ICs1MCw3IEBAIHB1YmxpYzoKIAogICAgICAgICBSZWxBdHRyaWJ1dGUo
KQogICAgICAgICAgICAgOiBtX2lzU3R5bGVTaGVldChmYWxzZSkKLSAgICAgICAgICAgICwgbV9p
c0ljb24oZmFsc2UpCisgICAgICAgICAgICAsIG1faWNvblR5cGUoSW52YWxpZEljb24pCiAgICAg
ICAgICAgICAsIG1faXNBbHRlcm5hdGUoZmFsc2UpCiAgICAgICAgICAgICAsIG1faXNETlNQcmVm
ZXRjaChmYWxzZSkKICNpZiBFTkFCTEUoTElOS19QUkVGRVRDSCkKQEAgLTc2LDcgKzc3LDYgQEAg
cHVibGljOgogCiAgICAgYm9vbCBpc0Rpc2FibGVkKCkgY29uc3QgeyByZXR1cm4gbV9kaXNhYmxl
ZFN0YXRlID09IERpc2FibGVkOyB9CiAgICAgYm9vbCBpc0VuYWJsZWRWaWFTY3JpcHQoKSBjb25z
dCB7IHJldHVybiBtX2Rpc2FibGVkU3RhdGUgPT0gRW5hYmxlZFZpYVNjcmlwdDsgfQotICAgIGJv
b2wgaXNJY29uKCkgY29uc3QgeyByZXR1cm4gbV9yZWxBdHRyaWJ1dGUubV9pc0ljb247IH0KICAg
ICBib29sIGRpc2FibGVkKCkgY29uc3Q7CiAgICAgdm9pZCBzZXREaXNhYmxlZChib29sKTsKIApJ
bmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5u
ZXIuY3BwCShyZXZpc2lvbiA4NTYzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hU
TUxQcmVsb2FkU2Nhbm5lci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk1LDcgKzk1LDcgQEAgcHVi
bGljOgogICAgIHsKICAgICAgICAgSFRNTExpbmtFbGVtZW50OjpSZWxBdHRyaWJ1dGUgcmVsOwog
ICAgICAgICBIVE1MTGlua0VsZW1lbnQ6OnRva2VuaXplUmVsQXR0cmlidXRlKGF0dHJpYnV0ZVZh
bHVlLCByZWwpOwotICAgICAgICByZXR1cm4gcmVsLm1faXNTdHlsZVNoZWV0ICYmICFyZWwubV9p
c0FsdGVybmF0ZSAmJiAhcmVsLm1faXNJY29uICYmICFyZWwubV9pc0ROU1ByZWZldGNoOworICAg
ICAgICByZXR1cm4gcmVsLm1faXNTdHlsZVNoZWV0ICYmICFyZWwubV9pc0FsdGVybmF0ZSAmJiBy
ZWwubV9pY29uVHlwZSA9PSBJbnZhbGlkSWNvbiAmJiAhcmVsLm1faXNETlNQcmVmZXRjaDsKICAg
ICB9CiAKICAgICBzdGF0aWMgYm9vbCBsaW5rTWVkaWFBdHRyaWJ1dGVJc1NjcmVlbihjb25zdCBT
dHJpbmcmIGF0dHJpYnV0ZVZhbHVlKQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3Vt
ZW50TG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1l
bnRMb2FkZXIuY3BwCShyZXZpc2lvbiA4NTYzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9E
b2N1bWVudExvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY2MSwxNCArNjYxLDE5IEBAIHZv
aWQgRG9jdW1lbnRMb2FkZXI6OnNldFRpdGxlKGNvbnN0IFN0cmkKICAgICB9CiB9CiAKLXZvaWQg
RG9jdW1lbnRMb2FkZXI6OnNldEljb25VUkwoY29uc3QgU3RyaW5nJiBpY29uVVJMKQorSWNvblVS
TCBEb2N1bWVudExvYWRlcjo6aWNvblVSTChJY29uVHlwZSBpY29uVHlwZSkgY29uc3QKIHsKLSAg
ICBpZiAoaWNvblVSTC5pc0VtcHR5KCkpCisgICAgcmV0dXJuIG1faWNvblVSTHNbSWNvblVSTDo6
dG9JY29uSW5kZXgoaWNvblR5cGUpXTsKK30KKwordm9pZCBEb2N1bWVudExvYWRlcjo6c2V0SWNv
blVSTChjb25zdCBJY29uVVJMJiB1cmwpCit7CisgICAgaWYgKHVybC5tX2ljb25VUkwuaXNFbXB0
eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAobV9wYWdlSWNvblVSTCAhPSBpY29uVVJM
KSB7Ci0gICAgICAgIG1fcGFnZUljb25VUkwgPSBpY29uVVJMOwotICAgICAgICBmcmFtZUxvYWRl
cigpLT5kaWRDaGFuZ2VJY29ucyh0aGlzKTsKKyAgICBpZiAoaWNvblVSTCh1cmwubV9pY29uVHlw
ZSkubV9pY29uVVJMICE9IHVybC5tX2ljb25VUkwpIHsKKyAgICAgICAgbV9pY29uVVJMc1tJY29u
VVJMOjp0b0ljb25JbmRleCh1cmwubV9pY29uVHlwZSldID0gdXJsOworICAgICAgICBmcmFtZUxv
YWRlcigpLT5kaWRDaGFuZ2VJY29ucyh0aGlzLCB1cmwubV9pY29uVHlwZSk7CiAgICAgfQogfQog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAkocmV2aXNpb24gODU2
MzEpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkRvY3VtZW50TG9hZFRpbWluZy5oIgog
I2luY2x1ZGUgIkRvY3VtZW50V3JpdGVyLmgiCiAjaW5jbHVkZSAiSWNvbkRhdGFiYXNlQmFzZS5o
IgorI2luY2x1ZGUgIkljb25VUkwuaCIKICNpbmNsdWRlICJOYXZpZ2F0aW9uQWN0aW9uLmgiCiAj
aW5jbHVkZSAiUmVzb3VyY2VFcnJvci5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgpA
QCAtMTIzLDcgKzEyNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCBpc0xv
YWRpbmdJbkFQSVNlbnNlKCkgY29uc3Q7CiAgICAgICAgIHZvaWQgc2V0UHJpbWFyeUxvYWRDb21w
bGV0ZShib29sKTsKICAgICAgICAgdm9pZCBzZXRUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0
aW9uJik7Ci0gICAgICAgIHZvaWQgc2V0SWNvblVSTChjb25zdCBTdHJpbmcmKTsKKyAgICAgICAg
dm9pZCBzZXRJY29uVVJMKGNvbnN0IEljb25VUkwmKTsKICAgICAgICAgY29uc3QgU3RyaW5nJiBv
dmVycmlkZUVuY29kaW5nKCkgY29uc3QgeyByZXR1cm4gbV9vdmVycmlkZUVuY29kaW5nOyB9CiAK
ICNpZiBQTEFURk9STShNQUMpCkBAIC0xNzAsNyArMTcxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiAgICAgICAgIHZvaWQgc3RvcFJlY29yZGluZ1Jlc3BvbnNlcygpOwogICAgICAgICBjb25z
dCBTdHJpbmdXaXRoRGlyZWN0aW9uJiB0aXRsZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZVRpdGxl
OyB9Ci0gICAgICAgIGNvbnN0IFN0cmluZyYgaWNvblVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFn
ZUljb25VUkw7IH0KKyAgICAgICAgSWNvblVSTCBpY29uVVJMKEljb25UeXBlKSBjb25zdDsKIAog
ICAgICAgICBLVVJMIHVybEZvckhpc3RvcnkoKSBjb25zdDsKICAgICAgICAgYm9vbCB1cmxGb3JI
aXN0b3J5UmVmbGVjdHNGYWlsdXJlKCkgY29uc3Q7CkBAIC0zMDAsNyArMzAxLDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICBib29sIG1fd2FzT25sb2FkSGFuZGxlZDsKIAogICAgICAg
ICBTdHJpbmdXaXRoRGlyZWN0aW9uIG1fcGFnZVRpdGxlOwotICAgICAgICBTdHJpbmcgbV9wYWdl
SWNvblVSTDsKKyAgICAgICAgSWNvblVSTCBtX2ljb25VUkxzW0lDT05fQ09VTlRdOwogCiAgICAg
ICAgIFN0cmluZyBtX292ZXJyaWRlRW5jb2Rpbmc7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9FbXB0eUNsaWVudHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RW1wdHlDbGllbnRzLmgJKHJldmlzaW9uIDg1NjMxKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVy
L0VtcHR5Q2xpZW50cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNzEsNyArMjcxLDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVJY29uKCkgeyB9CiAgICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoRGlkU3RhcnRQcm92aXNpb25hbExvYWQoKSB7IH0KICAgICB2aXJ0
dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlv
biYpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZUljb25zKCkgeyB9Cisg
ICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoSWNvblR5cGUpIHsgfQogICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENvbW1pdExvYWQoKSB7IH0KICAgICB2aXJ0dWFsIHZv
aWQgZGlzcGF0Y2hEaWRGYWlsUHJvdmlzaW9uYWxMb2FkKGNvbnN0IFJlc291cmNlRXJyb3ImKSB7
IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGYWlsTG9hZChjb25zdCBSZXNvdXJjZUVy
cm9yJikgeyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHJldmlz
aW9uIDg1NjMxKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNjksNiArNjksNyBAQAogI2luY2x1ZGUgIkhpc3RvcnlJdGVtLmgiCiAj
aW5jbHVkZSAiSWNvbkRhdGFiYXNlLmgiCiAjaW5jbHVkZSAiSWNvbkxvYWRlci5oIgorI2luY2x1
ZGUgIkljb25VUkwuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JDb250cm9sbGVyLmgiCiAjaW5jbHVk
ZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgpAQCAt
NDY3LDE4ICs0NjgsNTYgQEAgYm9vbCBGcmFtZUxvYWRlcjo6Y2xvc2VVUkwoKQogCiBLVVJMIEZy
YW1lTG9hZGVyOjppY29uVVJMKCkKIHsKLSAgICAvLyBJZiB0aGlzIGlzbid0IGEgdG9wIGxldmVs
IGZyYW1lLCByZXR1cm4gbm90aGluZworICAgIFZlY3RvcjxJY29uVVJMPiB1cmxzID0gaWNvblVS
THMoRmF2aWNvbik7CisgICAgcmV0dXJuIHVybHMuaXNFbXB0eSgpID8gS1VSTCgpIDogdXJsc1sw
XS5tX2ljb25VUkw7Cit9CisKK1ZlY3RvcjxJY29uVVJMPiBGcmFtZUxvYWRlcjo6aWNvblVSTHMo
aW50IGljb25UeXBlcykKK3sKKyAgICBWZWN0b3I8SWNvblVSTD4gaWNvblVSTHM7CisgICAgaWYg
KGljb25UeXBlcyAmIEZhdmljb24gJiYgIWZpbGxJY29uVVJMKEZhdmljb24sICZpY29uVVJMcykp
CisgICAgICAgIGljb25VUkxzLmFwcGVuZChnZXREZWZhdWx0SWNvblVSTChGYXZpY29uKSk7CisK
KyNpZiBFTkFCTEUoVE9VQ0hfSUNPTl9MT0FESU5HKQorICAgIGJvb2wgaGF2ZVByZWNvbXBvc2Vk
SWNvbiA9IGZhbHNlOworICAgIGlmIChpY29uVHlwZXMgJiBUb3VjaFByZWNvbXBvc2VkSWNvbikK
KyAgICAgICAgaGF2ZVByZWNvbXBvc2VkSWNvbiA9IGZpbGxJY29uVVJMKFRvdWNoUHJlY29tcG9z
ZWRJY29uLCAmaWNvblVSTHMpOworCisgICAgYm9vbCBoYXZlVG91Y2hJY29uID0gZmFsc2U7Cisg
ICAgaWYgKGljb25UeXBlcyAmIFRvdWNoSWNvbikKKyAgICAgICAgaGF2ZVRvdWNoSWNvbiA9IGZp
bGxJY29uVVJMKFRvdWNoSWNvbiwgJmljb25VUkxzKTsKKworICAgIC8vIE9ubHkgcmV0dXJuIHRo
ZSBkZWZhdWx0IHRvdWNoIGljb25zIHdoZW4gdGhlIGJvdGggd2VyZSByZXF1aXJlZCBhbmQgbmVp
dGhlciB3YXMgZ290dGVuLgorICAgIGlmIChpY29uVHlwZXMgJiBUb3VjaFByZWNvbXBvc2VkSWNv
biAmJiBpY29uVHlwZXMgJiBUb3VjaEljb24gJiYgIWhhdmVQcmVjb21wb3NlZEljb24gJiYgIWhh
dmVUb3VjaEljb24pIHsKKyAgICAgICAgaWNvblVSTHMuYXBwZW5kKGdldERlZmF1bHRJY29uVVJM
KFRvdWNoUHJlY29tcG9zZWRJY29uKSk7CisgICAgICAgIGljb25VUkxzLmFwcGVuZChnZXREZWZh
dWx0SWNvblVSTChUb3VjaEljb24pKTsKKyAgICB9CisjZW5kaWYKKyAgICByZXR1cm4gaWNvblVS
THM7Cit9CisKK2Jvb2wgRnJhbWVMb2FkZXI6OmZpbGxJY29uVVJMKEljb25UeXBlIGljb25UeXBl
LCBWZWN0b3I8SWNvblVSTD4qIGljb25VUkxzKQoreworICAgIC8vIElmIHRoaXMgaXNuJ3QgYSB0
b3AgbGV2ZWwgZnJhbWUsIHJldHVybgogICAgIGlmIChtX2ZyYW1lLT50cmVlKCkgJiYgbV9mcmFt
ZS0+dHJlZSgpLT5wYXJlbnQoKSkKLSAgICAgICAgcmV0dXJuIEtVUkwoKTsKKyAgICAgICAgcmV0
dXJuIGZhbHNlOwogCiAgICAgLy8gSWYgd2UgaGF2ZSBhbiBpY29uVVJMIGZyb20gYSBMaW5rIGVs
ZW1lbnQsIHJldHVybiB0aGF0Ci0gICAgaWYgKCFtX2ZyYW1lLT5kb2N1bWVudCgpLT5pY29uVVJM
KCkuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gS1VSTChQYXJzZWRVUkxTdHJpbmcsIG1fZnJh
bWUtPmRvY3VtZW50KCktPmljb25VUkwoKSk7CisgICAgSWNvblVSTCB1cmwgPSBtX2ZyYW1lLT5k
b2N1bWVudCgpLT5pY29uVVJMKGljb25UeXBlKTsKKyAgICBpZiAodXJsLm1faWNvblVSTC5pc0Vt
cHR5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGljb25VUkxzLT5hcHBlbmQodXJs
KTsKKworICAgIHJldHVybiB0cnVlOworfQogCitJY29uVVJMIEZyYW1lTG9hZGVyOjpnZXREZWZh
dWx0SWNvblVSTChJY29uVHlwZSBpY29uVHlwZSkKK3sKICAgICAvLyBEb24ndCByZXR1cm4gYSBm
YXZpY29uIGljb25VUkwgdW5sZXNzIHdlJ3JlIGh0dHAgb3IgaHR0cHMKICAgICBLVVJMIGRvY3Vt
ZW50VVJMID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCk7CiAgICAgaWYgKCFkb2N1bWVudFVS
TC5wcm90b2NvbEluSFRUUEZhbWlseSgpKQotICAgICAgICByZXR1cm4gS1VSTCgpOworICAgICAg
ICByZXR1cm4gSWNvblVSTCgpOwogCiAgICAgS1VSTCB1cmw7CiAgICAgYm9vbCBjb3VsZFNldFBy
b3RvY29sID0gdXJsLnNldFByb3RvY29sKGRvY3VtZW50VVJMLnByb3RvY29sKCkpOwpAQCAtNDg2
LDggKzUyNSwyMSBAQCBLVVJMIEZyYW1lTG9hZGVyOjppY29uVVJMKCkKICAgICB1cmwuc2V0SG9z
dChkb2N1bWVudFVSTC5ob3N0KCkpOwogICAgIGlmIChkb2N1bWVudFVSTC5oYXNQb3J0KCkpCiAg
ICAgICAgIHVybC5zZXRQb3J0KGRvY3VtZW50VVJMLnBvcnQoKSk7Ci0gICAgdXJsLnNldFBhdGgo
Ii9mYXZpY29uLmljbyIpOwotICAgIHJldHVybiB1cmw7CisgICAgaWYgKGljb25UeXBlID09IEZh
dmljb24pIHsKKyAgICAgICAgdXJsLnNldFBhdGgoIi9mYXZpY29uLmljbyIpOworICAgICAgICBy
ZXR1cm4gSWNvblVSTChLVVJMKFBhcnNlZFVSTFN0cmluZywgdXJsKSwgRmF2aWNvbik7CisgICAg
fQorI2lmIEVOQUJMRShUT1VDSF9JQ09OX0xPQURJTkcpCisgICAgaWYgKGljb25UeXBlID09IFRv
dWNoUHJlY29tcG9zZWRJY29uKSB7CisgICAgICAgIHVybC5zZXRQYXRoKCIvYXBwbGUtdG91Y2gt
aWNvbi1wcmVjb21wb3NlZC5wbmciKTsKKyAgICAgICAgcmV0dXJuIEljb25VUkwoS1VSTChQYXJz
ZWRVUkxTdHJpbmcsIHVybCksIFRvdWNoUHJlY29tcG9zZWRJY29uKTsKKyAgICB9CisgICAgaWYg
KGljb25UeXBlID09IFRvdWNoSWNvbikgeworICAgICAgICB1cmwuc2V0UGF0aCgiL2FwcGxlLXRv
dWNoLWljb24ucG5nIik7CisgICAgICAgIHJldHVybiBJY29uVVJMKEtVUkwoUGFyc2VkVVJMU3Ry
aW5nLCB1cmwpLCBUb3VjaEljb24pOworICAgIH0KKyNlbmRpZgorICAgIHJldHVybiBJY29uVVJM
KCk7CiB9CiAKIGJvb2wgRnJhbWVMb2FkZXI6OmRpZE9wZW5VUkwoY29uc3QgS1VSTCYgdXJsKQpA
QCAtMzM1Nyw3ICszNDA5LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6c2V0VGl0bGUoY29uc3QgU3Ry
aW5nVwogICAgIGRvY3VtZW50TG9hZGVyKCktPnNldFRpdGxlKHRpdGxlKTsKIH0KIAotdm9pZCBG
cmFtZUxvYWRlcjo6c2V0SWNvblVSTChjb25zdCBTdHJpbmcmIGljb25VUkwpCit2b2lkIEZyYW1l
TG9hZGVyOjpzZXRJY29uVVJMKGNvbnN0IEljb25VUkwmIGljb25VUkwpCiB7CiAgICAgZG9jdW1l
bnRMb2FkZXIoKS0+c2V0SWNvblVSTChpY29uVVJMKTsKIH0KQEAgLTM0MzUsMTAgKzM0ODcsMTAg
QEAgdm9pZCBGcmFtZUxvYWRlcjo6ZGlkQ2hhbmdlVGl0bGUoRG9jdW1lbgogICAgIH0KIH0KIAot
dm9pZCBGcmFtZUxvYWRlcjo6ZGlkQ2hhbmdlSWNvbnMoRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikK
K3ZvaWQgRnJhbWVMb2FkZXI6OmRpZENoYW5nZUljb25zKERvY3VtZW50TG9hZGVyKiBsb2FkZXIs
IEljb25UeXBlIHR5cGUpCiB7CiAgICAgaWYgKGxvYWRlciA9PSBtX2RvY3VtZW50TG9hZGVyKQot
ICAgICAgICBtX2NsaWVudC0+ZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygpOworICAgICAgICBtX2Ns
aWVudC0+ZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucyh0eXBlKTsKIH0KIAogdm9pZCBGcmFtZUxvYWRl
cjo6ZGlzcGF0Y2hEaWRDb21taXRMb2FkKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxv
YWRlci5oCShyZXZpc2lvbiA4NTYzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxv
YWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiRnJhbWVM
b2FkZXJUeXBlcy5oIgogI2luY2x1ZGUgIkhpc3RvcnlDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAi
SWNvbkRhdGFiYXNlQmFzZS5oIgorI2luY2x1ZGUgIkljb25VUkwuaCIKICNpbmNsdWRlICJQb2xp
Y3lDaGVja2VyLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkTm90aWZpZXIuaCIKICNpbmNsdWRl
ICJTdWJmcmFtZUxvYWRlci5oIgpAQCAtMTkxLDcgKzE5Miw3IEBAIHB1YmxpYzoKICAgICBib29s
IHN1YmZyYW1lSXNMb2FkaW5nKCkgY29uc3Q7CiAgICAgdm9pZCB3aWxsQ2hhbmdlVGl0bGUoRG9j
dW1lbnRMb2FkZXIqKTsKICAgICB2b2lkIGRpZENoYW5nZVRpdGxlKERvY3VtZW50TG9hZGVyKik7
Ci0gICAgdm9pZCBkaWRDaGFuZ2VJY29ucyhEb2N1bWVudExvYWRlciopOworICAgIHZvaWQgZGlk
Q2hhbmdlSWNvbnMoRG9jdW1lbnRMb2FkZXIqLCBJY29uVHlwZSk7CiAKICAgICBGcmFtZUxvYWRU
eXBlIGxvYWRUeXBlKCkgY29uc3Q7CiAKQEAgLTIzMyw3ICsyMzQsMTEgQEAgcHVibGljOgogICAg
IHZvaWQgZGlkRW5kRG9jdW1lbnQoKTsKICAgICB2b2lkIHdpbGxTZXRFbmNvZGluZygpOwogCisg
ICAgLy8gUmV0dXJucyBmYXZpY29uLgogICAgIEtVUkwgaWNvblVSTCgpOworCisgICAgLy8gUmV0
dXJucyB0aGUgZ2l2ZW4gaWNvblR5cGVzJyBJY29uVVJMcywgaWNvblR5cGVzIGNvdWxkIGJlIGFu
eSBjb21iaW5hdGlvbiBvZiBJY29uVHlwZS4KKyAgICBWZWN0b3I8SWNvblVSTD4gaWNvblVSTHMo
aW50IGljb25UeXBlcyk7CiAgICAgdm9pZCBjb21taXRJY29uVVJMVG9JY29uRGF0YWJhc2UoY29u
c3QgS1VSTCYpOwogCiAgICAgS1VSTCBiYXNlVVJMKCkgY29uc3Q7CkBAIC0yODQsNyArMjg5LDcg
QEAgcHVibGljOgogICAgIHZvaWQgY2FuY2VsQW5kQ2xlYXIoKTsKIAogICAgIHZvaWQgc2V0VGl0
bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYpOwotICAgIHZvaWQgc2V0SWNvblVSTChjb25z
dCBTdHJpbmcmKTsKKyAgICB2b2lkIHNldEljb25VUkwoY29uc3QgSWNvblVSTCYpOwogCiAgICAg
dm9pZCBjb21taXRQcm92aXNpb25hbExvYWQoKTsKICAgICBib29sIGlzTG9hZGluZ0Zyb21DYWNo
ZWRQYWdlKCkgY29uc3QgeyByZXR1cm4gbV9sb2FkaW5nRnJvbUNhY2hlZFBhZ2U7IH0KQEAgLTQy
OCw2ICs0MzMsOSBAQCBwcml2YXRlOgogCiAgICAgdm9pZCB1cGRhdGVTYW5kYm94RmxhZ3MoKTsK
IAorICAgIGJvb2wgZmlsbEljb25VUkwoSWNvblR5cGUsIFZlY3RvcjxJY29uVVJMPiopOworICAg
IEljb25VUkwgZ2V0RGVmYXVsdEljb25VUkwoSWNvblR5cGUpOworCiAgICAgRnJhbWUqIG1fZnJh
bWU7CiAgICAgRnJhbWVMb2FkZXJDbGllbnQqIG1fY2xpZW50OwogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAkocmV2aXNpb24gODU2MzEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAt
MzAsNiArMzAsNyBAQAogI2RlZmluZSBGcmFtZUxvYWRlckNsaWVudF9oCiAKICNpbmNsdWRlICJG
cmFtZUxvYWRlclR5cGVzLmgiCisjaW5jbHVkZSAiSWNvblVSTC5oIgogI2luY2x1ZGUgIlNjcm9s
bFR5cGVzLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CkBAIC0xNDEsNyArMTQyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0
dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbigpID0gMDsKICAgICAgICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoRGlkU3RhcnRQcm92aXNpb25hbExvYWQoKSA9IDA7CiAgICAgICAgIHZpcnR1
YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9u
JikgPSAwOwotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygpID0g
MDsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoSWNvblR5cGUp
ID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ29tbWl0TG9hZCgpID0gMDsK
ICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9hZChjb25z
dCBSZXNvdXJjZUVycm9yJikgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRG
YWlsTG9hZChjb25zdCBSZXNvdXJjZUVycm9yJikgPSAwOwpJbmRleDogU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNp
b24gODU2MzEpCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwxOCBAQAorMjAxMS0wNC0yMiAgVGFvIEJhaSAgPG1pY2hhZWxiYWlAY2hyb21pdW0u
b3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBv
cHVsYXRlIHRvdWNoLWljb24gdXJsIHRvIEZyYW1lTG9hZGVyQ2xpZW50CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01OTE0MworCisgICAgICAgIFJlc3Bl
Y3RlZCB0aGUgY2hhbmdlIG9mIEZyYW1lTG9hZGVyQ2xpZW50LgorICAgICAgICBBZGRlZCBXZWJJ
Y29uVVJMIGFuZCBXZWJJY29uVHlwZSByZXNwb25kaW5nIHRoZSBuZXcgSWNvblVSTCBhbmQgSWNv
blR5cGUuCisgICAgICAgIFN1cHBvcnRlZCB0byBnZXQgdGhlIG11bHRpcGxlIGljb24gdXJscy4K
KworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hE
aWRDaGFuZ2VJY29ucyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5oOgorCiAyMDExLTA1LTAzICBTYW0gV2VpbmlnICA8c2FtQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQW5kZXJzIENhcmxzc29uLgpJbmRleDogU291
cmNlL1dlYktpdDIvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNj
b25maWcJKHJldmlzaW9uIDg1NjMxKQorKysgU291cmNlL1dlYktpdDIvQ29uZmlndXJhdGlvbnMv
RmVhdHVyZURlZmluZXMueGNjb25maWcJKHdvcmtpbmcgY29weSkKQEAgLTExOCw2ICsxMTgsOCBA
QCBFTkFCTEVfVklERU9fVFJBQ0sgPSA7CiAKIEVOQUJMRV9NRURJQV9TVEFUSVNUSUNTID0gOwog
CitFTkFCTEVfVE9VQ0hfSUNPTl9MT0FESU5HID0gOworCiBFTkFCTEVfV0VCX0FVRElPID0gOwog
CiBFTkFCTEVfV0VCX1NPQ0tFVFMgPSAkKEVOQUJMRV9XRUJfU09DS0VUU18kKFJFQUxfUExBVEZP
Uk1fTkFNRSkpOwpAQCAtMTMyLDQgKzEzNCw0IEBAIEVOQUJMRV9YSFRNTE1QID0gOwogRU5BQkxF
X1hQQVRIID0gRU5BQkxFX1hQQVRIOwogRU5BQkxFX1hTTFQgPSBFTkFCTEVfWFNMVDsKIAotRkVB
VFVSRV9ERUZJTkVTID0gJChFTkFCTEVfTElOS19QUkVGRVRDSCkgJChFTkFCTEVfQUNDRUxFUkFU
RURfMkRfQ0FOVkFTKSAkKEVOQUJMRV9XRUJHTCkgJChFTkFCTEVfM0RfUkVOREVSSU5HKSAkKEVO
QUJMRV9BTklNQVRJT05fQVBJKSAkKEVOQUJMRV9CTE9CKSAkKEVOQUJMRV9DSEFOTkVMX01FU1NB
R0lORykgJChFTkFCTEVfQ0xJRU5UX0JBU0VEX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9EQVRBQkFT
RSkgJChFTkFCTEVfREFUQUxJU1QpICQoRU5BQkxFX0RBVEFfVFJBTlNGRVJfSVRFTVMpICQoRU5B
QkxFX0RFVEFJTFMpICQoRU5BQkxFX0RFVklDRV9PUklFTlRBVElPTikgJChFTkFCTEVfRElSRUNU
T1JZX1VQTE9BRCkgJChFTkFCTEVfRE9NX1NUT1JBR0UpICQoRU5BQkxFX0VWRU5UU09VUkNFKSAk
KEVOQUJMRV9GSUxURVJTKSAkKEVOQUJMRV9GSUxFX1NZU1RFTSkgJChFTkFCTEVfRlVMTFNDUkVF
Tl9BUEkpICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9JQ09OREFUQUJBU0UpICQoRU5B
QkxFX0lOREVYRURfREFUQUJBU0UpICQoRU5BQkxFX0lOUFVUX1NQRUVDSCkgJChFTkFCTEVfSkFW
QVNDUklQVF9ERUJVR0dFUikgJChFTkFCTEVfTUFUSE1MKSAkKEVOQUJMRV9NRVRFUl9UQUcpICQo
RU5BQkxFX05PVElGSUNBVElPTlMpICQoRU5BQkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUykg
JChFTkFCTEVfUEFHRV9WSVNJQklMSVRZX0FQSSkgJChFTkFCTEVfUFJPR1JFU1NfVEFHKSAkKEVO
QUJMRV9SRUdJU1RFUl9QUk9UT0NPTF9IQU5ETEVSKSAkKEVOQUJMRV9RVU9UQSkgJChFTkFCTEVf
U0hBUkVEX1dPUktFUlMpICQoRU5BQkxFX1NWRykgJChFTkFCTEVfU1ZHX0FOSU1BVElPTikgJChF
TkFCTEVfU1ZHX0FTX0lNQUdFKSAkKEVOQUJMRV9TVkdfRE9NX09CSkNfQklORElOR1MpICQoRU5B
QkxFX1NWR19GT05UUykgJChFTkFCTEVfU1ZHX0ZPUkVJR05fT0JKRUNUKSAkKEVOQUJMRV9TVkdf
VVNFKSAkKEVOQUJMRV9WSURFTykgJChFTkFCTEVfVklERU9fVFJBQ0spICQoRU5BQkxFX01FRElB
X1NUQVRJU1RJQ1MpICQoRU5BQkxFX1dFQl9BVURJTykgJChFTkFCTEVfV0VCX1NPQ0tFVFMpICQo
RU5BQkxFX1dFQl9USU1JTkcpICQoRU5BQkxFX1dPUktFUlMpICQoRU5BQkxFX1hIVE1MTVApICQo
RU5BQkxFX1hQQVRIKSAkKEVOQUJMRV9YU0xUKTsKK0ZFQVRVUkVfREVGSU5FUyA9ICQoRU5BQkxF
X0xJTktfUFJFRkVUQ0gpICQoRU5BQkxFX0FDQ0VMRVJBVEVEXzJEX0NBTlZBUykgJChFTkFCTEVf
V0VCR0wpICQoRU5BQkxFXzNEX1JFTkRFUklORykgJChFTkFCTEVfQU5JTUFUSU9OX0FQSSkgJChF
TkFCTEVfQkxPQikgJChFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcpICQoRU5BQkxFX0NMSUVOVF9C
QVNFRF9HRU9MT0NBVElPTikgJChFTkFCTEVfREFUQUJBU0UpICQoRU5BQkxFX0RBVEFMSVNUKSAk
KEVOQUJMRV9EQVRBX1RSQU5TRkVSX0lURU1TKSAkKEVOQUJMRV9ERVRBSUxTKSAkKEVOQUJMRV9E
RVZJQ0VfT1JJRU5UQVRJT04pICQoRU5BQkxFX0RJUkVDVE9SWV9VUExPQUQpICQoRU5BQkxFX0RP
TV9TVE9SQUdFKSAkKEVOQUJMRV9FVkVOVFNPVVJDRSkgJChFTkFCTEVfRklMVEVSUykgJChFTkFC
TEVfRklMRV9TWVNURU0pICQoRU5BQkxFX0ZVTExTQ1JFRU5fQVBJKSAkKEVOQUJMRV9HRU9MT0NB
VElPTikgJChFTkFCTEVfSUNPTkRBVEFCQVNFKSAkKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFKSAk
KEVOQUJMRV9JTlBVVF9TUEVFQ0gpICQoRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIpICQoRU5B
QkxFX01BVEhNTCkgJChFTkFCTEVfTUVURVJfVEFHKSAkKEVOQUJMRV9OT1RJRklDQVRJT05TKSAk
KEVOQUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpICQoRU5BQkxFX1BBR0VfVklTSUJJTElU
WV9BUEkpICQoRU5BQkxFX1BST0dSRVNTX1RBRykgJChFTkFCTEVfUkVHSVNURVJfUFJPVE9DT0xf
SEFORExFUikgJChFTkFCTEVfUVVPVEEpICQoRU5BQkxFX1NIQVJFRF9XT1JLRVJTKSAkKEVOQUJM
RV9TVkcpICQoRU5BQkxFX1NWR19BTklNQVRJT04pICQoRU5BQkxFX1NWR19BU19JTUFHRSkgJChF
TkFCTEVfU1ZHX0RPTV9PQkpDX0JJTkRJTkdTKSAkKEVOQUJMRV9TVkdfRk9OVFMpICQoRU5BQkxF
X1NWR19GT1JFSUdOX09CSkVDVCkgJChFTkFCTEVfU1ZHX1VTRSkgJChFTkFCTEVfVklERU8pICQo
RU5BQkxFX1ZJREVPX1RSQUNLKSAkKEVOQUJMRV9NRURJQV9TVEFUSVNUSUNTKSAkKEVOQUJMRV9X
RUJfQVVESU8pICQoRU5BQkxFX1dFQl9TT0NLRVRTKSAkKEVOQUJMRV9XRUJfVElNSU5HKSAkKEVO
QUJMRV9XT1JLRVJTKSAkKEVOQUJMRV9YSFRNTE1QKSAkKEVOQUJMRV9YUEFUSCkgJChFTkFCTEVf
WFNMVCkgJChFTkFCTEVfVE9VQ0hfSUNPTl9MT0FESU5HKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuY3BwCShyZXZpc2lvbiA4NTYzMSkKKysrIFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00MTgsNyArNDE4LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlz
cGF0Y2hEaWRSZQogICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlk
UmVjZWl2ZVRpdGxlRm9yRnJhbWUobV9mcmFtZS0+ZnJhbWVJRCgpLCB0aXRsZS5zdHJpbmcoKSwg
SW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29kZXIodXNlckRhdGEuZ2V0KCkpKSk7CiB9CiAK
LXZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoKQordm9p
ZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucyhXZWJDb3JlOjpJ
Y29uVHlwZSkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQpJbmRleDogU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuaAkocmV2aXNpb24gODU2MzEpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTg1LDcgKzg1LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hE
aWRSZWNlaXZlSWNvbigpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFN0YXJ0UHJvdmlz
aW9uYWxMb2FkKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNv
bnN0IFdlYkNvcmU6OlN0cmluZ1dpdGhEaXJlY3Rpb24mKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlz
cGF0Y2hEaWRDaGFuZ2VJY29ucygpOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENoYW5n
ZUljb25zKFdlYkNvcmU6Okljb25UeXBlKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRD
b21taXRMb2FkKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFs
TG9hZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAgICAgdmlydHVhbCB2b2lkIGRp
c3BhdGNoRGlkRmFpbExvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwpJbmRleDog
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg1NjMxKQorKysgU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOCBAQAorCisy
MDExLTA0LTIyICBUYW8gQmFpICA8bWljaGFlbGJhaUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUG9wdWxhdGUgdG91Y2gtaWNv
biB1cmwgdG8gRnJhbWVMb2FkZXJDbGllbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTU5MTQzCisKKyAgICAgICAgUmVzcGVjdGVkIHRoZSBjaGFuZ2Ug
b2YgRnJhbWVMb2FkZXJDbGllbnQuCisKKyAgICAgICAgKiBzcmMvRnJhbWVMb2FkZXJDbGllbnRJ
bXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnRJbXBsOjpkaXNwYXRj
aERpZENoYW5nZUljb25zKToKKyAgICAgICAgKiBzcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmg6
CisKKwogMjAxMS0wNS0wMiAgQWRhbSBLbGVpbiAgPGFkYW1rQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBUb255IENoYW5nLgpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwCShyZXZpc2lvbiA4NTYz
MSkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTc4MCw3ICs3ODAsNyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xp
ZW50SW1wbDo6ZGlzcGF0Y2hEaWRSCiAgICAgICAgIG1fd2ViRnJhbWUtPmNsaWVudCgpLT5kaWRS
ZWNlaXZlVGl0bGUobV93ZWJGcmFtZSwgdGl0bGUuc3RyaW5nKCksIHRpdGxlLmRpcmVjdGlvbigp
ID09IExUUiA/IFdlYlRleHREaXJlY3Rpb25MZWZ0VG9SaWdodCA6IFdlYlRleHREaXJlY3Rpb25S
aWdodFRvTGVmdCk7CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRJbXBsOjpkaXNwYXRjaERp
ZENoYW5nZUljb25zKCkKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRJbXBsOjpkaXNwYXRjaERpZENo
YW5nZUljb25zKFdlYkNvcmU6Okljb25UeXBlIHR5cGUpCiB7CiAgICAgaWYgKG1fd2ViRnJhbWUt
PmNsaWVudCgpKQogICAgICAgICBtX3dlYkZyYW1lLT5jbGllbnQoKS0+ZGlkQ2hhbmdlSWNvbnMo
bV93ZWJGcmFtZSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRl
ckNsaWVudEltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9G
cmFtZUxvYWRlckNsaWVudEltcGwuaAkocmV2aXNpb24gODU2MzEpCisrKyBTb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuaAkod29ya2luZyBjb3B5KQpAQCAt
MTA1LDcgKzEwNSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNl
aXZlSWNvbigpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxM
b2FkKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFdl
YkNvcmU6OlN0cmluZ1dpdGhEaXJlY3Rpb24mKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hE
aWRDaGFuZ2VJY29ucygpOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZUljb25z
KFdlYkNvcmU6Okljb25UeXBlKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDb21taXRM
b2FkKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9hZChj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
RGlkRmFpbExvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwpJbmRleDogU291cmNl
L1dlYktpdC9lZmwvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZWZsL0No
YW5nZUxvZwkocmV2aXNpb24gODU2MzEpCisrKyBTb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAxMS0wNC0yMiAgVGFvIEJhaSAgPG1p
Y2hhZWxiYWlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFBvcHVsYXRlIHRvdWNoLWljb24gdXJsIHRvIEZyYW1lTG9hZGVyQ2xp
ZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01OTE0
MworCisgICAgICAgIFJlc3BlY3QgdGhlIGludGVyZmFjZSBjaGFuZ2UgaW4gRnJhbWVMb2FkZXJD
bGllbnQKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERpZENo
YW5nZUljb25zKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVm
bC5oOgorCiAyMDExLTA1LTAyICBHeXV5b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ac2Ftc3VuZy5j
b20+CiAKICAgICAgICAgVW5yZXZpZXdlZC4gU3R5bGUgZXJyb3IgZml4LgpJbmRleDogU291cmNl
L1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xp
ZW50RWZsLmNwcAkocmV2aXNpb24gODU2MzEpCisrKyBTb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3Jl
U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU4Nyw3
ICs1ODcsNyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERpZFJlCiAgICAg
ZXdrX3ZpZXdfdGl0bGVfc2V0KG1fdmlldywgY3MuZGF0YSgpKTsKIH0KIAotdm9pZCBGcmFtZUxv
YWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygpCit2b2lkIEZyYW1lTG9hZGVy
Q2xpZW50RWZsOjpkaXNwYXRjaERpZENoYW5nZUljb25zKFdlYkNvcmU6Okljb25UeXBlKQogewog
ICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3Jl
U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmgJKHJldmlzaW9uIDg1
NjMxKQorKysgU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGll
bnRFZmwuaAkod29ya2luZyBjb3B5KQpAQCAtMTAzLDcgKzEwMyw3IEBAIGNsYXNzIEZyYW1lTG9h
ZGVyQ2xpZW50RWZsIDogcHVibGljIEZyYW0KICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRS
ZWNlaXZlSWNvbigpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9u
YWxMb2FkKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0
IFN0cmluZ1dpdGhEaXJlY3Rpb24mKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFu
Z2VJY29ucygpOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZUljb25zKFdlYkNv
cmU6Okljb25UeXBlKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDb21taXRMb2FkKCk7
CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9hZChjb25zdCBS
ZXNvdXJjZUVycm9yJik7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbExvYWQoY29u
c3QgUmVzb3VyY2VFcnJvciYpOwpJbmRleDogU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwkocmV2aXNpb24gODU2MzEp
CisrKyBTb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwxNiBAQAorMjAxMS0wNC0yMiAgVGFvIEJhaSAgPG1pY2hhZWxiYWlAY2hyb21pdW0ub3JnPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBvcHVsYXRl
IHRvdWNoLWljb24gdXJsIHRvIEZyYW1lTG9hZGVyQ2xpZW50CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01OTE0MworCisgICAgICAgIFJlc3BlY3QgdGhl
IGludGVyZmFjZSBjaGFuZ2UgaW4gRnJhbWVMb2FkZXJDbGllbnQuCisKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OkZy
YW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENoYW5nZUljb25zKToKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5oOgorCiAyMDExLTA0LTI5ICBYYW4gTG9w
ZXogIDx4bG9wZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBNYXJ0aW4gUm9i
aW5zb24uCkluZGV4OiBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRl
ckNsaWVudEd0ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1
cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwCShyZXZpc2lvbiA4NTYzMSkKKysrIFNvdXJj
ZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtOTY5LDcgKzk2OSw3IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRp
c3BhdGNoRGlkUmVjZWkKICAgICB9CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3Bh
dGNoRGlkQ2hhbmdlSWNvbnMoKQordm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRD
aGFuZ2VJY29ucyhXZWJDb3JlOjpJY29uVHlwZSkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwog
fQpJbmRleDogU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGll
bnRHdGsuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9G
cmFtZUxvYWRlckNsaWVudEd0ay5oCShyZXZpc2lvbiA4NTYzMSkKKysrIFNvdXJjZS9XZWJLaXQv
Z3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmgJKHdvcmtpbmcgY29weSkK
QEAgLTgyLDcgKzgyLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAgICAgICAgIHZpcnR1YWwgdm9p
ZCBkaXNwYXRjaERpZFJlY2VpdmVJY29uKCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRj
aERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRj
aERpZFJlY2VpdmVUaXRsZShjb25zdCBXZWJDb3JlOjpTdHJpbmdXaXRoRGlyZWN0aW9uJik7Ci0g
ICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZUljb25zKCk7CisgICAgICAgIHZp
cnR1YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZUljb25zKFdlYkNvcmU6Okljb25UeXBlKTsKICAg
ICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ29tbWl0TG9hZCgpOwogICAgICAgICB2aXJ0
dWFsIHZvaWQgZGlzcGF0Y2hEaWRGYWlsUHJvdmlzaW9uYWxMb2FkKGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlRXJyb3ImKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbExvYWQo
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwpJbmRleDogU291cmNlL1dlYktpdC9tYWMv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2
aXNpb24gODU2MzEpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwxNyBAQAorCisyMDExLTA0LTIyICBUYW8gQmFpICA8bWljaGFlbGJhaUBj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgUG9wdWxhdGUgdG91Y2gtaWNvbiB1cmwgdG8gRnJhbWVMb2FkZXJDbGllbnQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU5MTQzCisKKyAgICAg
ICAgUmVzcGVjdCB0aGUgaW50ZXJmYWNlIGNoYW5nZSBpbiBGcmFtZUxvYWRlckNsaWVudC4KKwor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW06CisgICAgICAgIChXZWJG
cmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucyk6CisKIDIwMTEtMDUtMDIg
IEFkYW0gUm9iZW4gIDxhcm9iZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFRha2UgYWR2YW50YWdl
IG9mIGltcGxpY2l0IGNvbnZlcnNpb24gZnJvbSBudWxscHRyX3QgdG8gUGFzc093blB0cgpJbmRl
eDogU291cmNlL1dlYktpdC9tYWMvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25m
aWcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvQ29uZmlndXJhdGlvbnMvRmVhdHVy
ZURlZmluZXMueGNjb25maWcJKHJldmlzaW9uIDg1NjMxKQorKysgU291cmNlL1dlYktpdC9tYWMv
Q29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcJKHdvcmtpbmcgY29weSkKQEAg
LTExOCw2ICsxMTgsOCBAQCBFTkFCTEVfVklERU9fVFJBQ0sgPSA7CiAKIEVOQUJMRV9NRURJQV9T
VEFUSVNUSUNTID0gOwogCitFTkFCTEVfVE9VQ0hfSUNPTl9MT0FESU5HID0gOworCiBFTkFCTEVf
V0VCX0FVRElPID0gOwogCiBFTkFCTEVfV0VCX1NPQ0tFVFMgPSAkKEVOQUJMRV9XRUJfU09DS0VU
U18kKFJFQUxfUExBVEZPUk1fTkFNRSkpOwpAQCAtMTMyLDQgKzEzNCw0IEBAIEVOQUJMRV9YSFRN
TE1QID0gOwogRU5BQkxFX1hQQVRIID0gRU5BQkxFX1hQQVRIOwogRU5BQkxFX1hTTFQgPSBFTkFC
TEVfWFNMVDsKIAotRkVBVFVSRV9ERUZJTkVTID0gJChFTkFCTEVfTElOS19QUkVGRVRDSCkgJChF
TkFCTEVfQUNDRUxFUkFURURfMkRfQ0FOVkFTKSAkKEVOQUJMRV9XRUJHTCkgJChFTkFCTEVfM0Rf
UkVOREVSSU5HKSAkKEVOQUJMRV9BTklNQVRJT05fQVBJKSAkKEVOQUJMRV9CTE9CKSAkKEVOQUJM
RV9DSEFOTkVMX01FU1NBR0lORykgJChFTkFCTEVfQ0xJRU5UX0JBU0VEX0dFT0xPQ0FUSU9OKSAk
KEVOQUJMRV9EQVRBQkFTRSkgJChFTkFCTEVfREFUQUxJU1QpICQoRU5BQkxFX0RBVEFfVFJBTlNG
RVJfSVRFTVMpICQoRU5BQkxFX0RFVEFJTFMpICQoRU5BQkxFX0RFVklDRV9PUklFTlRBVElPTikg
JChFTkFCTEVfRElSRUNUT1JZX1VQTE9BRCkgJChFTkFCTEVfRE9NX1NUT1JBR0UpICQoRU5BQkxF
X0VWRU5UU09VUkNFKSAkKEVOQUJMRV9GSUxURVJTKSAkKEVOQUJMRV9GSUxFX1NZU1RFTSkgJChF
TkFCTEVfRlVMTFNDUkVFTl9BUEkpICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9JQ09O
REFUQUJBU0UpICQoRU5BQkxFX0lOREVYRURfREFUQUJBU0UpICQoRU5BQkxFX0lOUFVUX1NQRUVD
SCkgJChFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dFUikgJChFTkFCTEVfTUFUSE1MKSAkKEVOQUJM
RV9NRVRFUl9UQUcpICQoRU5BQkxFX05PVElGSUNBVElPTlMpICQoRU5BQkxFX09GRkxJTkVfV0VC
X0FQUExJQ0FUSU9OUykgJChFTkFCTEVfUEFHRV9WSVNJQklMSVRZX0FQSSkgJChFTkFCTEVfUFJP
R1JFU1NfVEFHKSAkKEVOQUJMRV9SRUdJU1RFUl9QUk9UT0NPTF9IQU5ETEVSKSAkKEVOQUJMRV9R
VU9UQSkgJChFTkFCTEVfU0hBUkVEX1dPUktFUlMpICQoRU5BQkxFX1NWRykgJChFTkFCTEVfU1ZH
X0FOSU1BVElPTikgJChFTkFCTEVfU1ZHX0FTX0lNQUdFKSAkKEVOQUJMRV9TVkdfRE9NX09CSkNf
QklORElOR1MpICQoRU5BQkxFX1NWR19GT05UUykgJChFTkFCTEVfU1ZHX0ZPUkVJR05fT0JKRUNU
KSAkKEVOQUJMRV9TVkdfVVNFKSAkKEVOQUJMRV9WSURFTykgJChFTkFCTEVfVklERU9fVFJBQ0sp
ICQoRU5BQkxFX01FRElBX1NUQVRJU1RJQ1MpICQoRU5BQkxFX1dFQl9BVURJTykgJChFTkFCTEVf
V0VCX1NPQ0tFVFMpICQoRU5BQkxFX1dFQl9USU1JTkcpICQoRU5BQkxFX1dPUktFUlMpICQoRU5B
QkxFX1hIVE1MTVApICQoRU5BQkxFX1hQQVRIKSAkKEVOQUJMRV9YU0xUKTsKK0ZFQVRVUkVfREVG
SU5FUyA9ICQoRU5BQkxFX0xJTktfUFJFRkVUQ0gpICQoRU5BQkxFX0FDQ0VMRVJBVEVEXzJEX0NB
TlZBUykgJChFTkFCTEVfV0VCR0wpICQoRU5BQkxFXzNEX1JFTkRFUklORykgJChFTkFCTEVfQU5J
TUFUSU9OX0FQSSkgJChFTkFCTEVfQkxPQikgJChFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcpICQo
RU5BQkxFX0NMSUVOVF9CQVNFRF9HRU9MT0NBVElPTikgJChFTkFCTEVfREFUQUJBU0UpICQoRU5B
QkxFX0RBVEFMSVNUKSAkKEVOQUJMRV9EQVRBX1RSQU5TRkVSX0lURU1TKSAkKEVOQUJMRV9ERVRB
SUxTKSAkKEVOQUJMRV9ERVZJQ0VfT1JJRU5UQVRJT04pICQoRU5BQkxFX0RJUkVDVE9SWV9VUExP
QUQpICQoRU5BQkxFX0RPTV9TVE9SQUdFKSAkKEVOQUJMRV9FVkVOVFNPVVJDRSkgJChFTkFCTEVf
RklMVEVSUykgJChFTkFCTEVfRklMRV9TWVNURU0pICQoRU5BQkxFX0ZVTExTQ1JFRU5fQVBJKSAk
KEVOQUJMRV9HRU9MT0NBVElPTikgJChFTkFCTEVfSUNPTkRBVEFCQVNFKSAkKEVOQUJMRV9JTkRF
WEVEX0RBVEFCQVNFKSAkKEVOQUJMRV9JTlBVVF9TUEVFQ0gpICQoRU5BQkxFX0pBVkFTQ1JJUFRf
REVCVUdHRVIpICQoRU5BQkxFX01BVEhNTCkgJChFTkFCTEVfTUVURVJfVEFHKSAkKEVOQUJMRV9O
T1RJRklDQVRJT05TKSAkKEVOQUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpICQoRU5BQkxF
X1BBR0VfVklTSUJJTElUWV9BUEkpICQoRU5BQkxFX1BST0dSRVNTX1RBRykgJChFTkFCTEVfUkVH
SVNURVJfUFJPVE9DT0xfSEFORExFUikgJChFTkFCTEVfUVVPVEEpICQoRU5BQkxFX1NIQVJFRF9X
T1JLRVJTKSAkKEVOQUJMRV9TVkcpICQoRU5BQkxFX1NWR19BTklNQVRJT04pICQoRU5BQkxFX1NW
R19BU19JTUFHRSkgJChFTkFCTEVfU1ZHX0RPTV9PQkpDX0JJTkRJTkdTKSAkKEVOQUJMRV9TVkdf
Rk9OVFMpICQoRU5BQkxFX1NWR19GT1JFSUdOX09CSkVDVCkgJChFTkFCTEVfU1ZHX1VTRSkgJChF
TkFCTEVfVklERU8pICQoRU5BQkxFX1ZJREVPX1RSQUNLKSAkKEVOQUJMRV9NRURJQV9TVEFUSVNU
SUNTKSAkKEVOQUJMRV9XRUJfQVVESU8pICQoRU5BQkxFX1dFQl9TT0NLRVRTKSAkKEVOQUJMRV9X
RUJfVElNSU5HKSAkKEVOQUJMRV9XT1JLRVJTKSAkKEVOQUJMRV9YSFRNTE1QKSAkKEVOQUJMRV9Y
UEFUSCkgJChFTkFCTEVfWFNMVCkgJChFTkFCTEVfVE9VQ0hfSUNPTl9MT0FESU5HKTsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuaAkocmV2aXNpb24gODU2MzEpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDIs
NyArMTAyLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZl
SWNvbigpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2Fk
KCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFdlYkNv
cmU6OlN0cmluZ1dpdGhEaXJlY3Rpb24mKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRD
aGFuZ2VJY29ucygpOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZUljb25zKFdl
YkNvcmU6Okljb25UeXBlKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDb21taXRMb2Fk
KCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9hZChjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlk
RmFpbExvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwpJbmRleDogU291cmNlL1dl
YktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQubW0JKHJldmlzaW9uIDg1NjMxKQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTYzMyw3ICs2MzMs
NyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJlCiAgICAgICAgIENh
bGxGcmFtZUxvYWREZWxlZ2F0ZShpbXBsZW1lbnRhdGlvbnMtPmRpZFJlY2VpdmVUaXRsZUZvckZy
YW1lRnVuYywgd2ViVmlldywgQHNlbGVjdG9yKHdlYlZpZXc6ZGlkUmVjZWl2ZVRpdGxlOmZvckZy
YW1lOiksIChOU1N0cmluZyAqKXRpdGxlLnN0cmluZygpLCBtX3dlYkZyYW1lLmdldCgpKTsKIH0K
IAotdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygpCit2
b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENoYW5nZUljb25zKFdlYkNvcmU6
Okljb25UeXBlKQogewogICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMgdG8gYWxsb3cgY29u
dGFpbmVyIHRvIHVwZGF0ZSBmYXZpY29uLgogfQpJbmRleDogU291cmNlL1dlYktpdC9xdC9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cJKHJldmlzaW9u
IDg1NjMxKQorKysgU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwxNiBAQAorMjAxMS0wNC0yMiAgVGFvIEJhaSAgPG1pY2hhZWxiYWlAY2hyb21pdW0u
b3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBv
cHVsYXRlIHRvdWNoLWljb24gdXJsIHRvIEZyYW1lTG9hZGVyQ2xpZW50CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01OTE0MworCisgICAgICAgIFJlc3Bl
Y3QgdGhlIGludGVyZmFjZSBjaGFuZ2UgaW4gRnJhbWVMb2FkZXJDbGllbnQuCisKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMpOgorICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaDoKKwogMjAxMS0wNS0wMSAg
U2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFuZGVy
cyBDYXJsc3Nvbi4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVM
b2FkZXJDbGllbnRRdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9xdC9XZWJDb3Jl
U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcAkocmV2aXNpb24gODU2MzEpCisrKyBTb3Vy
Y2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00NTksNyArNDU5LDcgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudFF0Ojpk
aXNwYXRjaERpZFJlYwogfQogCiAKLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hE
aWRDaGFuZ2VJY29ucygpCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkQ2hh
bmdlSWNvbnMoV2ViQ29yZTo6SWNvblR5cGUpCiB7CiAgICAgaWYgKGR1bXBGcmFtZUxvYWRlckNh
bGxiYWNrcykKICAgICAgICAgcHJpbnRmKCIlcyAtIGRpZENoYW5nZUljb25zXG4iLCBxUHJpbnRh
YmxlKGRydERlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KG1fZnJhbWUpKSk7CkluZGV4
OiBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVy
Q2xpZW50UXQuaAkocmV2aXNpb24gODU2MzEpCisrKyBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVT
dXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaAkod29ya2luZyBjb3B5KQpAQCAtMTExLDcgKzEx
MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbigp
OwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCk7CiAg
ICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFN0cmluZ1dpdGhE
aXJlY3Rpb24mKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygpOwor
ICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZUljb25zKFdlYkNvcmU6Okljb25UeXBl
KTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDb21taXRMb2FkKCk7CiAgICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9hZChjb25zdCBSZXNvdXJjZUVycm9y
Jik7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbExvYWQoY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VFcnJvciYpOwpJbmRleDogU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwkocmV2aXNpb24gODU2MzEpCisr
KyBTb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
NiBAQAorMjAxMS0wNC0yMiAgVGFvIEJhaSAgPG1pY2hhZWxiYWlAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBvcHVsYXRlIHRv
dWNoLWljb24gdXJsIHRvIEZyYW1lTG9hZGVyQ2xpZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01OTE0MworCisgICAgICAgIFJlc3BlY3QgdGhlIGlu
dGVyZmFjZSBjaGFuZ2UgaW4gRnJhbWVMb2FkZXJDbGllbnQuCisKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJGcmFtZUxvYWRl
ckNsaWVudDo6ZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucyk6CisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKwogMjAxMS0wNS0wMSAgU2FtIFdlaW5pZyAgPHNh
bUB3ZWJraXQub3JnPgogCiAgICAgICAgIEZpeCB3aW5kb3dzIGJ1aWxkLgpJbmRleDogU291cmNl
L1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmNwcAkocmV2aXNpb24gODU2MzEpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3Myw4
ICszNzMsMTEgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRSZQogICAg
ICAgICBmcmFtZUxvYWREZWxlZ2F0ZS0+ZGlkUmVjZWl2ZVRpdGxlKHdlYlZpZXcsIEJTdHJpbmco
dGl0bGUuc3RyaW5nKCkpLCBtX3dlYkZyYW1lKTsKIH0KIAotdm9pZCBXZWJGcmFtZUxvYWRlckNs
aWVudDo6ZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygpCit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50
OjpkaXNwYXRjaERpZENoYW5nZUljb25zKFdlYkNvcmU6Okljb25UeXBlIHR5cGUpCiB7CisgICAg
aWYgKHR5cGUgIT0gV2ViQ29yZTo6RmF2aWNvbikKKyAgICAgICAgcmV0dXJuOworCiAgICAgV2Vi
Vmlldyogd2ViVmlldyA9IG1fd2ViRnJhbWUtPndlYlZpZXcoKTsKICAgICBDT01QdHI8SVdlYkZy
YW1lTG9hZERlbGVnYXRlUHJpdmF0ZT4gZnJhbWVMb2FkRGVsZWdhdGVQcml2OwogICAgIGlmIChG
QUlMRUQod2ViVmlldy0+ZnJhbWVMb2FkRGVsZWdhdGVQcml2YXRlKCZmcmFtZUxvYWREZWxlZ2F0
ZVByaXYpKSB8fCAhZnJhbWVMb2FkRGVsZWdhdGVQcml2KQpJbmRleDogU291cmNlL1dlYktpdC93
aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCShy
ZXZpc2lvbiA4NTYzMSkKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTcwLDcgKzcwLDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVJY29uKCk7CiAgICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoRGlkU3RhcnRQcm92aXNpb25hbExvYWQoKTsKICAgICB2aXJ0dWFsIHZv
aWQgZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgV2ViQ29yZTo6U3RyaW5nV2l0aERpcmVj
dGlvbiYpOwotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZUljb25zKCk7CisgICAg
dmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoV2ViQ29yZTo6SWNvblR5cGUpOwog
ICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENvbW1pdExvYWQoKTsKICAgICB2aXJ0dWFsIHZv
aWQgZGlzcGF0Y2hEaWRGaW5pc2hEb2N1bWVudExvYWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlz
cGF0Y2hEaWRGaW5pc2hMb2FkKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbmNlL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbmNlL0NoYW5nZUxvZwkocmV2aXNpb24g
ODU2MzEpCisrKyBTb3VyY2UvV2ViS2l0L3dpbmNlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE2IEBACisyMDExLTA0LTIyICBUYW8gQmFpICA8bWljaGFlbGJhaUBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
UG9wdWxhdGUgdG91Y2gtaWNvbiB1cmwgdG8gRnJhbWVMb2FkZXJDbGllbnQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU5MTQzCisKKyAgICAgICAgUmVz
cGVjdCB0aGUgaW50ZXJmYWNlIGNoYW5nZSBpbiBGcmFtZUxvYWRlckNsaWVudC4KKworICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V2luQ0UuY3BwOgorICAgICAgICAo
V2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudFdpbkNFOjpkaXNwYXRjaERpZENoYW5nZUljb25zKToK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFdpbkNFLmg6CisKIDIw
MTEtMDUtMDEgIFBhdHJpY2sgR2Fuc3RlcmVyICA8cGFyb2dhQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgW1dJTl0gVW5yZXZpZXdlZCBidWlsZGZpeCBhZnRlciByODU0MzQuCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V2luQ0UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2Fk
ZXJDbGllbnRXaW5DRS5jcHAJKHJldmlzaW9uIDg1NjMxKQorKysgU291cmNlL1dlYktpdC93aW5j
ZS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFdpbkNFLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzc2LDcgKzM3Niw3IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRXaW5DRTo6ZGlzcGF0
Y2hEaWQKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50
V2luQ0U6OmRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoKQordm9pZCBGcmFtZUxvYWRlckNsaWVudFdp
bkNFOjpkaXNwYXRjaERpZENoYW5nZUljb25zKFdlYkNvcmU6Okljb25UeXBlKQogewogICAgIG5v
dEltcGxlbWVudGVkKCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBw
b3J0L0ZyYW1lTG9hZGVyQ2xpZW50V2luQ0UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V2luQ0UuaAkocmV2aXNpb24g
ODU2MzEpCisrKyBTb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVy
Q2xpZW50V2luQ0UuaAkod29ya2luZyBjb3B5KQpAQCAtNzcsNyArNzcsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUljb24oKTsKICAgICB2aXJ0dWFsIHZv
aWQgZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpOwogICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBXZWJDb3JlOjpTdHJpbmdXaXRoRGlyZWN0aW9u
Jik7Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoKTsKKyAgICB2aXJ0
dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucyhXZWJDb3JlOjpJY29uVHlwZSk7CiAgICAg
dmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ29tbWl0TG9hZCgpOwogICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaERpZEZhaWxQcm92aXNpb25hbExvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciYpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxMb2FkKGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlRXJyb3ImKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd3gvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd3gvQ2hhbmdlTG9nCShyZXZpc2lvbiA4NTYzMSkKKysr
IFNvdXJjZS9XZWJLaXQvd3gvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcg
QEAKKworMjAxMS0wNC0yMiAgVGFvIEJhaSAgPG1pY2hhZWxiYWlAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBvcHVsYXRlIHRv
dWNoLWljb24gdXJsIHRvIEZyYW1lTG9hZGVyQ2xpZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01OTE0MworCisgICAgICAgIFJlc3BlY3QgdGhlIGlu
dGVyZmFjZSBjaGFuZ2UgaW4gRnJhbWVMb2FkZXJDbGllbnQuCisKKyAgICAgICAgKiBXZWJLaXRT
dXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVM
b2FkZXJDbGllbnRXeDo6ZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucyk6CisgICAgICAgICogV2ViS2l0
U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFd4Lmg6CisKIDIwMTEtMDQtMjMgIEtldmluIE9sbGl2
aWVyICA8a2V2aW5vQHRoZW9sbGl2aWVycy5jb20+CiAKICAgICAgICAgW3d4XSBVbnJldmlld2Vk
IGJ1aWxkIGZpeC4gRml4ZWQgY2FwaXRhbGl6YXRpb24gZm9yIGNhc2Ugc2Vuc2l0aXZlIGZpbGVz
eXN0ZW1zLgpJbmRleDogU291cmNlL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVy
Q2xpZW50V3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9y
dC9GcmFtZUxvYWRlckNsaWVudFd4LmNwcAkocmV2aXNpb24gODU2MzEpCisrKyBTb3VyY2UvV2Vi
S2l0L3d4L1dlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTMyNyw3ICszMjcsNyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50V3g6OmRpc3BhdGNo
RGlkRmluCiAgICAgfQogfQogCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50V3g6OmRpc3BhdGNoRGlk
Q2hhbmdlSWNvbnMoKQordm9pZCBGcmFtZUxvYWRlckNsaWVudFd4OjpkaXNwYXRjaERpZENoYW5n
ZUljb25zKFdlYkNvcmU6Okljb25UeXBlKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRl
ckNsaWVudFd4LmgJKHJldmlzaW9uIDg1NjMxKQorKysgU291cmNlL1dlYktpdC93eC9XZWJLaXRT
dXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guaAkod29ya2luZyBjb3B5KQpAQCAtMTA5LDcgKzEw
OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
RGlkRmluaXNoTG9hZCgpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGaXJzdExh
eW91dCgpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGaXJzdFZpc3VhbGx5Tm9u
RW1wdHlMYXlvdXQoKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlSWNv
bnMoKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoV2ViQ29y
ZTo6SWNvblR5cGUpOwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFNob3coKTsKICAg
ICAgICAgdmlydHVhbCB2b2lkIGNhbmNlbFBvbGljeUNoZWNrKCk7CkluZGV4OiBUb29scy9TY3Jp
cHRzL2J1aWxkLXdlYmtpdAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL2J1aWxkLXdlYmtp
dAkocmV2aXNpb24gODU2MzEpCisrKyBUb29scy9TY3JpcHRzL2J1aWxkLXdlYmtpdAkod29ya2lu
ZyBjb3B5KQpAQCAtMTEyLDYgKzExMiw3IEBAIG15ICgKICAgICAkc3lzdGVtTWFsbG9jU3VwcG9y
dCwKICAgICAkdGlsZWRCYWNraW5nU3RvcmVTdXBwb3J0LAogICAgICR0b3VjaEV2ZW50c1N1cHBv
cnQsCisgICAgJHRvdWNoSWNvbkxvYWRpbmdTdXBwb3J0LAogICAgICR2aWRlb1N1cHBvcnQsCiAg
ICAgJHdjc3NTdXBwb3J0LAogICAgICR3ZWJBdWRpb1N1cHBvcnQsCkBAIC0yNzIsNiArMjczLDkg
QEAgbXkgQGZlYXR1cmVzID0gKAogICAgIHsgb3B0aW9uID0+ICJ0b3VjaC1ldmVudHMiLCBkZXNj
ID0+ICJUb2dnbGUgVG91Y2ggRXZlbnRzIHN1cHBvcnQiLAogICAgICAgZGVmaW5lID0+ICJFTkFC
TEVfVE9VQ0hfRVZFTlRTIiwgZGVmYXVsdCA9PiBpc1F0KCksIHZhbHVlID0+IFwkdG91Y2hFdmVu
dHNTdXBwb3J0IH0sCiAKKyAgICB7IG9wdGlvbiA9PiAidG91Y2gtaWNvbi1sb2FkaW5nIiwgZGVz
YyA9PiAiVG9nZ2xlIFRvdWNoIEljb24gTG9hZGluZyBTdXBwb3J0IiwKKyAgICAgIGRlZmluZSA9
PiAiRU5BQkxFX1RPVUNIX0lDT05fTE9BRElORyIsIGRlZmF1bHQgPT4gMCwgdmFsdWUgPT4gXCR0
b3VjaEljb25Mb2FkaW5nU3VwcG9ydCB9LAorCiAgICAgeyBvcHRpb24gPT4gInZpZGVvIiwgZGVz
YyA9PiAiVG9nZ2xlIFZpZGVvIHN1cHBvcnQiLAogICAgICAgZGVmaW5lID0+ICJFTkFCTEVfVklE
RU8iLCBkZWZhdWx0ID0+IChpc0FwcGxlV2ViS2l0KCkgfHwgaXNHdGsoKSksIHZhbHVlID0+IFwk
dmlkZW9TdXBwb3J0IH0sCiAK
</data>
<flag name="review"
          id="85047"
          type_id="1"
          status="-"
          setter="ddkilzer"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>92149</attachid>
            <date>2011-05-03 15:34:43 -0700</date>
            <delta_ts>2011-05-03 16:46:19 -0700</delta_ts>
            <desc>Address the comments</desc>
            <filename>patch.9</filename>
            <type>text/plain</type>
            <size>63708</size>
            <attacher>michaelbai</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gODU2NTQpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMTEtMDUtMDMgIFRhbyBCYWkgIDxtaWNoYWVsYmFpQGNocm9taXVtLm9yZz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQb3B1bGF0ZSB0b3VjaC1p
Y29uIHVybCB0byBGcmFtZUxvYWRlckNsaWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTkxNDMKKworICAgICAgICBSZXNwZWN0IHRoZSBpbnRlcmZh
Y2UgY2hhbmdlIGluIEZyYW1lTG9hZGVyQ2xpZW50LgorCisgICAgICAgICogQ29uZmlndXJhdGlv
bnMvRmVhdHVyZURlZmluZXMueGNjb25maWc6CisKIDIwMTEtMDUtMDMgIFhhbiBMb3BleiAgPHhs
b3BlekBpZ2FsaWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFuZGVycyBDYXJsc3Nvbi4K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5l
cy54Y2NvbmZpZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ29uZmlndXJh
dGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcJKHJldmlzaW9uIDg1NjMxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCSh3
b3JraW5nIGNvcHkpCkBAIC0xMTcsNiArMTE3LDggQEAgRU5BQkxFX1ZJREVPX1RSQUNLID0gOwog
CiBFTkFCTEVfTUVESUFfU1RBVElTVElDUyA9IDsKIAorRU5BQkxFX1RPVUNIX0lDT05fTE9BRElO
RyA9IDsKKwogRU5BQkxFX1dFQl9BVURJTyA9IDsKIAogRU5BQkxFX1dFQl9TT0NLRVRTID0gJChF
TkFCTEVfV0VCX1NPQ0tFVFNfJChSRUFMX1BMQVRGT1JNX05BTUUpKTsKQEAgLTEzMSw0ICsxMzMs
NCBAQCBFTkFCTEVfWEhUTUxNUCA9IDsKIEVOQUJMRV9YUEFUSCA9IEVOQUJMRV9YUEFUSDsKIEVO
QUJMRV9YU0xUID0gRU5BQkxFX1hTTFQ7CiAKLUZFQVRVUkVfREVGSU5FUyA9ICQoRU5BQkxFX0xJ
TktfUFJFRkVUQ0gpICQoRU5BQkxFX0FDQ0VMRVJBVEVEXzJEX0NBTlZBUykgJChFTkFCTEVfV0VC
R0wpICQoRU5BQkxFXzNEX1JFTkRFUklORykgJChFTkFCTEVfQU5JTUFUSU9OX0FQSSkgJChFTkFC
TEVfQkxPQikgJChFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcpICQoRU5BQkxFX0NMSUVOVF9CQVNF
RF9HRU9MT0NBVElPTikgJChFTkFCTEVfREFUQUJBU0UpICQoRU5BQkxFX0RBVEFMSVNUKSAkKEVO
QUJMRV9EQVRBX1RSQU5TRkVSX0lURU1TKSAkKEVOQUJMRV9ERVRBSUxTKSAkKEVOQUJMRV9ERVZJ
Q0VfT1JJRU5UQVRJT04pICQoRU5BQkxFX0RJUkVDVE9SWV9VUExPQUQpICQoRU5BQkxFX0RPTV9T
VE9SQUdFKSAkKEVOQUJMRV9FVkVOVFNPVVJDRSkgJChFTkFCTEVfRklMVEVSUykgJChFTkFCTEVf
RklMRV9TWVNURU0pICQoRU5BQkxFX0ZVTExTQ1JFRU5fQVBJKSAkKEVOQUJMRV9HRU9MT0NBVElP
TikgJChFTkFCTEVfSUNPTkRBVEFCQVNFKSAkKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFKSAkKEVO
QUJMRV9JTlBVVF9TUEVFQ0gpICQoRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIpICQoRU5BQkxF
X01BVEhNTCkgJChFTkFCTEVfTUVURVJfVEFHKSAkKEVOQUJMRV9OT1RJRklDQVRJT05TKSAkKEVO
QUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpICQoRU5BQkxFX1BBR0VfVklTSUJJTElUWV9B
UEkpICQoRU5BQkxFX1BST0dSRVNTX1RBRykgJChFTkFCTEVfUkVHSVNURVJfUFJPVE9DT0xfSEFO
RExFUikgJChFTkFCTEVfUVVPVEEpICQoRU5BQkxFX1NIQVJFRF9XT1JLRVJTKSAkKEVOQUJMRV9T
VkcpICQoRU5BQkxFX1NWR19BTklNQVRJT04pICQoRU5BQkxFX1NWR19BU19JTUFHRSkgJChFTkFC
TEVfU1ZHX0RPTV9PQkpDX0JJTkRJTkdTKSAkKEVOQUJMRV9TVkdfRk9OVFMpICQoRU5BQkxFX1NW
R19GT1JFSUdOX09CSkVDVCkgJChFTkFCTEVfU1ZHX1VTRSkgJChFTkFCTEVfVklERU8pICQoRU5B
QkxFX1ZJREVPX1RSQUNLKSAkKEVOQUJMRV9NRURJQV9TVEFUSVNUSUNTKSAkKEVOQUJMRV9XRUJf
QVVESU8pICQoRU5BQkxFX1dFQl9TT0NLRVRTKSAkKEVOQUJMRV9XRUJfVElNSU5HKSAkKEVOQUJM
RV9XT1JLRVJTKSAkKEVOQUJMRV9YSFRNTE1QKSAkKEVOQUJMRV9YUEFUSCkgJChFTkFCTEVfWFNM
VCk7CitGRUFUVVJFX0RFRklORVMgPSAkKEVOQUJMRV9MSU5LX1BSRUZFVENIKSAkKEVOQUJMRV9B
Q0NFTEVSQVRFRF8yRF9DQU5WQVMpICQoRU5BQkxFX1dFQkdMKSAkKEVOQUJMRV8zRF9SRU5ERVJJ
TkcpICQoRU5BQkxFX0FOSU1BVElPTl9BUEkpICQoRU5BQkxFX0JMT0IpICQoRU5BQkxFX0NIQU5O
RUxfTUVTU0FHSU5HKSAkKEVOQUJMRV9DTElFTlRfQkFTRURfR0VPTE9DQVRJT04pICQoRU5BQkxF
X0RBVEFCQVNFKSAkKEVOQUJMRV9EQVRBTElTVCkgJChFTkFCTEVfREFUQV9UUkFOU0ZFUl9JVEVN
UykgJChFTkFCTEVfREVUQUlMUykgJChFTkFCTEVfREVWSUNFX09SSUVOVEFUSU9OKSAkKEVOQUJM
RV9ESVJFQ1RPUllfVVBMT0FEKSAkKEVOQUJMRV9ET01fU1RPUkFHRSkgJChFTkFCTEVfRVZFTlRT
T1VSQ0UpICQoRU5BQkxFX0ZJTFRFUlMpICQoRU5BQkxFX0ZJTEVfU1lTVEVNKSAkKEVOQUJMRV9G
VUxMU0NSRUVOX0FQSSkgJChFTkFCTEVfR0VPTE9DQVRJT04pICQoRU5BQkxFX0lDT05EQVRBQkFT
RSkgJChFTkFCTEVfSU5ERVhFRF9EQVRBQkFTRSkgJChFTkFCTEVfSU5QVVRfU1BFRUNIKSAkKEVO
QUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSKSAkKEVOQUJMRV9NQVRITUwpICQoRU5BQkxFX01FVEVS
X1RBRykgJChFTkFCTEVfTk9USUZJQ0FUSU9OUykgJChFTkFCTEVfT0ZGTElORV9XRUJfQVBQTElD
QVRJT05TKSAkKEVOQUJMRV9QQUdFX1ZJU0lCSUxJVFlfQVBJKSAkKEVOQUJMRV9QUk9HUkVTU19U
QUcpICQoRU5BQkxFX1JFR0lTVEVSX1BST1RPQ09MX0hBTkRMRVIpICQoRU5BQkxFX1FVT1RBKSAk
KEVOQUJMRV9TSEFSRURfV09SS0VSUykgJChFTkFCTEVfU1ZHKSAkKEVOQUJMRV9TVkdfQU5JTUFU
SU9OKSAkKEVOQUJMRV9TVkdfQVNfSU1BR0UpICQoRU5BQkxFX1NWR19ET01fT0JKQ19CSU5ESU5H
UykgJChFTkFCTEVfU1ZHX0ZPTlRTKSAkKEVOQUJMRV9TVkdfRk9SRUlHTl9PQkpFQ1QpICQoRU5B
QkxFX1NWR19VU0UpICQoRU5BQkxFX1RPVUNIX0lDT05fTE9BRElORykgJChFTkFCTEVfVklERU8p
ICQoRU5BQkxFX1ZJREVPX1RSQUNLKSAkKEVOQUJMRV9NRURJQV9TVEFUSVNUSUNTKSAkKEVOQUJM
RV9XRUJfQVVESU8pICQoRU5BQkxFX1dFQl9TT0NLRVRTKSAkKEVOQUJMRV9XRUJfVElNSU5HKSAk
KEVOQUJMRV9XT1JLRVJTKSAkKEVOQUJMRV9YSFRNTE1QKSAkKEVOQUJMRV9YUEFUSCkgJChFTkFC
TEVfWFNMVCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiA4NTY1NCkKKysrIFNvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUwIEBACisyMDExLTA0LTIy
ICBUYW8gQmFpICA8bWljaGFlbGJhaUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUG9wdWxhdGUgdG91Y2gtaWNvbiB1cmwgdG8g
RnJhbWVMb2FkZXJDbGllbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTU5MTQzCisgICAgICAgIAorICAgICAgICBQYXJzZWQgYW5kIHBvcHVsYXRlZCBh
cHBsZS10b3VjaC1pY29uIHVybCB0byBGcmFtZUxvYWRlckNsaWVudC4KKyAgICAgICAgQ2hhbmdl
ZCBmYXZpY29uIHRvIGJlIGEgdHlwZSBvZiBpY29uLgorCisgICAgICAgICogQ29uZmlndXJhdGlv
bnMvRmVhdHVyZURlZmluZXMueGNjb25maWc6CisgICAgICAgICogR05VbWFrZWZpbGUuYW06Cisg
ICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGRv
bS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6aWNvblVSTCk6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2V0SWNvblVSTCk6CisgICAgICAgICogZG9tL0Rv
Y3VtZW50Lmg6CisgICAgICAgICogZG9tL0ljb25VUkwuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBk
b20vSWNvblVSTC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okljb25VUkw6Okljb25VUkwp
OgorICAgICAgICAoV2ViQ29yZTo6dG9JY29uSW5kZXgpOgorICAgICAgICAqIGZlYXR1cmVzLnBy
aToKKyAgICAgICAgKiBodG1sL0hUTUxMaW5rRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MTGlua0VsZW1lbnQ6OnRva2VuaXplUmVsQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxMaW5rRWxlbWVudDo6cHJvY2Vzcyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTGlu
a0VsZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyk6CisgICAgICAgICogaHRtbC9I
VE1MTGlua0VsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxMaW5rRWxlbWVudDo6UmVs
QXR0cmlidXRlOjpSZWxBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTExpbmtFbGVt
ZW50Ojppc0VuYWJsZWRWaWFTY3JpcHQpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxQcmVs
b2FkU2Nhbm5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTmFtZXM6OlByZWxvYWRUYXNr
OjpyZWxBdHRyaWJ1dGVJc1N0eWxlU2hlZXQpOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExv
YWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6aWNvblVSTCk6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6c2V0SWNvblVSTCk6CisgICAgICAgICog
bG9hZGVyL0RvY3VtZW50TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5o
OgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRD
aGFuZ2VJY29ucyk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lTG9hZGVyOjppY29uVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
TG9hZGVyOjppY29uVVJMcyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6ZmlsbElj
b25VUkwpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmdldERlZmF1bHRJY29uVVJM
KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpzZXRJY29uVVJMKToKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpkaWRDaGFuZ2VJY29ucyk6CisgICAgICAgICogbG9hZGVy
L0ZyYW1lTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50Lmg6CisK
IDIwMTEtMDUtMDMgIEFkYW0gUm9iZW4gIDxhcm9iZW5AYXBwbGUuY29tPgogCiAgICAgICAgIEZp
eCBtb3N0IHN0cmljdCBQYXNzT3duUHRyIHZpb2xhdGlvbnMgb24gV2luZG93cwpJbmRleDogU291
cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
R05VbWFrZWZpbGUuYW0JKHJldmlzaW9uIDg1NjMxKQorKysgU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUuYW0JKHdvcmtpbmcgY29weSkKQEAgLTI2MSw2ICsyNjEsMTYgQEAgd2ViY29yZV9idWls
dF9zb3VyY2VzICs9IFwKIGVuZGlmICMgRU5EIEVOQUJMRV9RVU9UQQogCiAjIC0tLS0KKyMgVG91
Y2ggSWNvbiBMb2FkaW5nCisjIC0tLS0KK2lmIEVOQUJMRV9UT1VDSF9JQ09OX0xPQURJTkcKK0ZF
QVRVUkVfREVGSU5FUyArPSBFTkFCTEVfVE9VQ0hfSUNPTl9MT0FESU5HPTEKK3dlYmNvcmVfY3Bw
ZmxhZ3MgKz0gLURFTkFCTEVfVE9VQ0hfSUNPTl9MT0FESU5HPTEKK2Vsc2UKK3dlYmNvcmVfY3Bw
ZmxhZ3MgKz0gLURFTkFCTEVfVE9VQ0hfSUNPTl9MT0FESU5HPTAKK2VuZGlmICMgRU5EIEVOQUJM
RV9UT1VDSF9JQ09OX0xPQURJTkcKKworIyAtLS0tCiAjIFNwZWVjaCBJbnB1dCBBUEkgc3VwcG9y
dAogIyAtLS0tCiBpZiBFTkFCTEVfSU5QVVRfU1BFRUNICkluZGV4OiBTb3VyY2UvV2ViQ29yZS9m
ZWF0dXJlcy5wcmkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZmVhdHVyZXMucHJpCShy
ZXZpc2lvbiA4NTYzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2ZlYXR1cmVzLnByaQkod29ya2luZyBj
b3B5KQpAQCAtNzUsNiArNzUsNyBAQCBjb250YWlucyhERUZJTkVTLCBFTkFCTEVfU0lOR0xFX1RI
UkVBREVECiAhY29udGFpbnMoREVGSU5FUywgRU5BQkxFX1dFQkdMPS4pOiBERUZJTkVTICs9IEVO
QUJMRV9XRUJHTD0wCiAhY29udGFpbnMoREVGSU5FUywgRU5BQkxFX01FRElBX1NUQVRJU1RJQ1M9
Lik6IERFRklORVMgKz0gRU5BQkxFX01FRElBX1NUQVRJU1RJQ1M9MAogIWNvbnRhaW5zKERFRklO
RVMsIEVOQUJMRV9WSURFT19UUkFDSz0uKTogREVGSU5FUyArPSBFTkFCTEVfVklERU9fVFJBQ0s9
MAorIWNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9UT1VDSF9JQ09OX0xPQURJTkc9Lik6IERFRklO
RVMgKz0gRU5BQkxFX1RPVUNIX0lDT05fTE9BRElORz0wCiAhY29udGFpbnMoREVGSU5FUywgRU5B
QkxFX0FOSU1BVElPTl9BUEk9Lik6IERFRklORVMgKz0gRU5BQkxFX0FOSU1BVElPTl9BUEk9MAog
CiAjIFNWRyBzdXBwb3J0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Db25maWd1cmF0aW9ucy9GZWF0
dXJlRGVmaW5lcy54Y2NvbmZpZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Db25maWd1
cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwkocmV2aXNpb24gODU2MzEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwkod29ya2lu
ZyBjb3B5KQpAQCAtMTE3LDYgKzExNyw4IEBAIEVOQUJMRV9WSURFT19UUkFDSyA9IDsKIAogRU5B
QkxFX01FRElBX1NUQVRJU1RJQ1MgPSA7CiAKK0VOQUJMRV9UT1VDSF9JQ09OX0xPQURJTkcgPSA7
CisKIEVOQUJMRV9XRUJfQVVESU8gPSA7CiAKIEVOQUJMRV9XRUJfU09DS0VUUyA9ICQoRU5BQkxF
X1dFQl9TT0NLRVRTXyQoUkVBTF9QTEFURk9STV9OQU1FKSk7CkBAIC0xMzEsNCArMTMzLDQgQEAg
RU5BQkxFX1hIVE1MTVAgPSA7CiBFTkFCTEVfWFBBVEggPSBFTkFCTEVfWFBBVEg7CiBFTkFCTEVf
WFNMVCA9IEVOQUJMRV9YU0xUOwogCi1GRUFUVVJFX0RFRklORVMgPSAkKEVOQUJMRV9MSU5LX1BS
RUZFVENIKSAkKEVOQUJMRV9BQ0NFTEVSQVRFRF8yRF9DQU5WQVMpICQoRU5BQkxFX1dFQkdMKSAk
KEVOQUJMRV8zRF9SRU5ERVJJTkcpICQoRU5BQkxFX0FOSU1BVElPTl9BUEkpICQoRU5BQkxFX0JM
T0IpICQoRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HKSAkKEVOQUJMRV9DTElFTlRfQkFTRURfR0VP
TE9DQVRJT04pICQoRU5BQkxFX0RBVEFCQVNFKSAkKEVOQUJMRV9EQVRBTElTVCkgJChFTkFCTEVf
REFUQV9UUkFOU0ZFUl9JVEVNUykgJChFTkFCTEVfREVUQUlMUykgJChFTkFCTEVfREVWSUNFX09S
SUVOVEFUSU9OKSAkKEVOQUJMRV9ESVJFQ1RPUllfVVBMT0FEKSAkKEVOQUJMRV9ET01fU1RPUkFH
RSkgJChFTkFCTEVfRVZFTlRTT1VSQ0UpICQoRU5BQkxFX0ZJTFRFUlMpICQoRU5BQkxFX0ZJTEVf
U1lTVEVNKSAkKEVOQUJMRV9GVUxMU0NSRUVOX0FQSSkgJChFTkFCTEVfR0VPTE9DQVRJT04pICQo
RU5BQkxFX0lDT05EQVRBQkFTRSkgJChFTkFCTEVfSU5ERVhFRF9EQVRBQkFTRSkgJChFTkFCTEVf
SU5QVVRfU1BFRUNIKSAkKEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSKSAkKEVOQUJMRV9NQVRI
TUwpICQoRU5BQkxFX01FVEVSX1RBRykgJChFTkFCTEVfTk9USUZJQ0FUSU9OUykgJChFTkFCTEVf
T0ZGTElORV9XRUJfQVBQTElDQVRJT05TKSAkKEVOQUJMRV9QQUdFX1ZJU0lCSUxJVFlfQVBJKSAk
KEVOQUJMRV9QUk9HUkVTU19UQUcpICQoRU5BQkxFX1JFR0lTVEVSX1BST1RPQ09MX0hBTkRMRVIp
ICQoRU5BQkxFX1FVT1RBKSAkKEVOQUJMRV9TSEFSRURfV09SS0VSUykgJChFTkFCTEVfU1ZHKSAk
KEVOQUJMRV9TVkdfQU5JTUFUSU9OKSAkKEVOQUJMRV9TVkdfQVNfSU1BR0UpICQoRU5BQkxFX1NW
R19ET01fT0JKQ19CSU5ESU5HUykgJChFTkFCTEVfU1ZHX0ZPTlRTKSAkKEVOQUJMRV9TVkdfRk9S
RUlHTl9PQkpFQ1QpICQoRU5BQkxFX1NWR19VU0UpICQoRU5BQkxFX1ZJREVPKSAkKEVOQUJMRV9W
SURFT19UUkFDSykgJChFTkFCTEVfTUVESUFfU1RBVElTVElDUykgJChFTkFCTEVfV0VCX0FVRElP
KSAkKEVOQUJMRV9XRUJfU09DS0VUUykgJChFTkFCTEVfV0VCX1RJTUlORykgJChFTkFCTEVfV09S
S0VSUykgJChFTkFCTEVfWEhUTUxNUCkgJChFTkFCTEVfWFBBVEgpICQoRU5BQkxFX1hTTFQpOwor
RkVBVFVSRV9ERUZJTkVTID0gJChFTkFCTEVfTElOS19QUkVGRVRDSCkgJChFTkFCTEVfQUNDRUxF
UkFURURfMkRfQ0FOVkFTKSAkKEVOQUJMRV9XRUJHTCkgJChFTkFCTEVfM0RfUkVOREVSSU5HKSAk
KEVOQUJMRV9BTklNQVRJT05fQVBJKSAkKEVOQUJMRV9CTE9CKSAkKEVOQUJMRV9DSEFOTkVMX01F
U1NBR0lORykgJChFTkFCTEVfQ0xJRU5UX0JBU0VEX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9EQVRB
QkFTRSkgJChFTkFCTEVfREFUQUxJU1QpICQoRU5BQkxFX0RBVEFfVFJBTlNGRVJfSVRFTVMpICQo
RU5BQkxFX0RFVEFJTFMpICQoRU5BQkxFX0RFVklDRV9PUklFTlRBVElPTikgJChFTkFCTEVfRElS
RUNUT1JZX1VQTE9BRCkgJChFTkFCTEVfRE9NX1NUT1JBR0UpICQoRU5BQkxFX0VWRU5UU09VUkNF
KSAkKEVOQUJMRV9GSUxURVJTKSAkKEVOQUJMRV9GSUxFX1NZU1RFTSkgJChFTkFCTEVfRlVMTFND
UkVFTl9BUEkpICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9JQ09OREFUQUJBU0UpICQo
RU5BQkxFX0lOREVYRURfREFUQUJBU0UpICQoRU5BQkxFX0lOUFVUX1NQRUVDSCkgJChFTkFCTEVf
SkFWQVNDUklQVF9ERUJVR0dFUikgJChFTkFCTEVfTUFUSE1MKSAkKEVOQUJMRV9NRVRFUl9UQUcp
ICQoRU5BQkxFX05PVElGSUNBVElPTlMpICQoRU5BQkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9O
UykgJChFTkFCTEVfUEFHRV9WSVNJQklMSVRZX0FQSSkgJChFTkFCTEVfUFJPR1JFU1NfVEFHKSAk
KEVOQUJMRV9SRUdJU1RFUl9QUk9UT0NPTF9IQU5ETEVSKSAkKEVOQUJMRV9RVU9UQSkgJChFTkFC
TEVfU0hBUkVEX1dPUktFUlMpICQoRU5BQkxFX1NWRykgJChFTkFCTEVfU1ZHX0FOSU1BVElPTikg
JChFTkFCTEVfU1ZHX0FTX0lNQUdFKSAkKEVOQUJMRV9TVkdfRE9NX09CSkNfQklORElOR1MpICQo
RU5BQkxFX1NWR19GT05UUykgJChFTkFCTEVfU1ZHX0ZPUkVJR05fT0JKRUNUKSAkKEVOQUJMRV9T
VkdfVVNFKSAkKEVOQUJMRV9UT1VDSF9JQ09OX0xPQURJTkcpICQoRU5BQkxFX1ZJREVPKSAkKEVO
QUJMRV9WSURFT19UUkFDSykgJChFTkFCTEVfTUVESUFfU1RBVElTVElDUykgJChFTkFCTEVfV0VC
X0FVRElPKSAkKEVOQUJMRV9XRUJfU09DS0VUUykgJChFTkFCTEVfV0VCX1RJTUlORykgJChFTkFC
TEVfV09SS0VSUykgJChFTkFCTEVfWEhUTUxNUCkgJChFTkFCTEVfWFBBVEgpICQoRU5BQkxFX1hT
TFQpOwpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagkocmV2aXNpb24gODU2MzEpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTk3MCw2ICs5NzAsOCBA
QAogCQk0NDlCMTlGNTBGQTcyRUNFMDAxNUNBNEEgLyogSFRNTFBhcnNlclF1aXJrcy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDQ5QjE5RjMwRkE3MkVD
RTAwMTVDQTRBIC8qIEhUTUxQYXJzZXJRdWlya3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NEEyOEFBQzEyREZCOEFDMDBBRTkyM0IgLyogTWF0
aE1MRWxlbWVudEZhY3RvcnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQ0QTI4QUFCMTJERkI4QUMwMEFFOTIzQiAvKiBNYXRoTUxFbGVtZW50RmFjdG9y
eS5oICovOyB9OwogCQk0NEEyOEFBRjEyREZCOEJGMDBBRTkyM0IgLyogTWF0aE1MTmFtZXMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0QTI4QUFFMTJE
RkI4QkYwMEFFOTIzQiAvKiBNYXRoTUxOYW1lcy5oICovOyB9OworCQk0NTA5OUM0MTEzNzBBNzgw
MDA1OEQ1MTMgLyogSWNvblVSTC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0NTA5OUM0MDEzNzBBNzgwMDA1OEQ1MTMgLyogSWNvblVSTC5jcHAgKi87
IH07CisJCTQ1QkFDMkIwMTM2MEJCQUIwMDVEQTI1OCAvKiBJY29uVVJMLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NUJBQzJBRjEzNjBCQkFCMDA1REEy
NTggLyogSWNvblVSTC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTQ2MTRBMUZFMEIyM0E4RDYwMDQ0NkUxQyAvKiBjb3B5Q3Vyc29yLnBuZyBpbiBS
ZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDYxNEExRkQwQjIz
QThENjAwNDQ2RTFDIC8qIGNvcHlDdXJzb3IucG5nICovOyB9OwogCQk0NjRFQTI3MzBCOEEzNTBC
MDBBOEU2RTMgLyogY3Jvc3NIYWlyQ3Vyc29yLnBuZyBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY0RUEyNzEwQjhBMzUwQjAwQThFNkUzIC8qIGNyb3Nz
SGFpckN1cnNvci5wbmcgKi87IH07CiAJCTQ2NEVBMjc0MEI4QTM1MEIwMEE4RTZFMyAvKiBub3RB
bGxvd2VkQ3Vyc29yLnBuZyBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDY0RUEyNzIwQjhBMzUwQjAwQThFNkUzIC8qIG5vdEFsbG93ZWRDdXJzb3IucG5n
ICovOyB9OwpAQCAtNzQzNiw2ICs3NDM4LDggQEAKIAkJNDQ5QjE5RjMwRkE3MkVDRTAwMTVDQTRB
IC8qIEhUTUxQYXJzZXJRdWlya3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SFRNTFBhcnNlclF1aXJrcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NEEyOEFB
QjEyREZCOEFDMDBBRTkyM0IgLyogTWF0aE1MRWxlbWVudEZhY3RvcnkuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gTWF0aE1MRWxlbWVudEZhY3RvcnkuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNDRBMjhBQUUxMkRGQjhCRjAwQUU5MjNCIC8qIE1hdGhNTE5hbWVz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hdGhNTE5hbWVzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ1MDk5QzQwMTM3MEE3ODAwMDU4RDUxMyAvKiBJY29u
VVJMLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEljb25VUkwuY3Bw
OyBwYXRoID0gZG9tL0ljb25VUkwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0
NUJBQzJBRjEzNjBCQkFCMDA1REEyNTggLyogSWNvblVSTC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBJY29uVVJMLmg7IHBhdGggPSBkb20vSWNvblVSTC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0NjE0QTFGRDBCMjNBOEQ2MDA0NDZFMUMgLyogY29weUN1cnNv
ci5wbmcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBp
bWFnZS5wbmc7IHBhdGggPSBjb3B5Q3Vyc29yLnBuZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDY0RUEyNzEwQjhBMzUwQjAwQThFNkUzIC8qIGNyb3NzSGFpckN1cnNvci5wbmcgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBpbWFnZS5wbmc7
IHBhdGggPSBjcm9zc0hhaXJDdXJzb3IucG5nOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0NjRFQTI3MjBCOEEzNTBCMDBBOEU2RTMgLyogbm90QWxsb3dlZEN1cnNvci5wbmcgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBpbWFnZS5wbmc7IHBh
dGggPSBub3RBbGxvd2VkQ3Vyc29yLnBuZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTEyNTE3LDYgKzEyNTIxLDggQEAKIAkJMDg2N0Q2OTFGRTg0MDI4RkMwMkFBQzA3IC8qIFdlYktp
dCAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJNDUwOTlD
NDAxMzcwQTc4MDAwNThENTEzIC8qIEljb25VUkwuY3BwICovLAorCQkJCTQ1QkFDMkFGMTM2MEJC
QUIwMDVEQTI1OCAvKiBJY29uVVJMLmggKi8sCiAJCQkJNjVDOTdBRjIwOEVBOTA4ODAwQUNEMjcz
IC8qIGNvbmZpZy5oICovLAogCQkJCUVERUM5ODAyMEFFRDdFMTcwMDU5MTM3RiAvKiBXZWJDb3Jl
UHJlZml4LmggKi8sCiAJCQkJOTMwNzA2MTMwOUUwQ0E4MjAwQjE3RkU0IC8qIERlcml2ZWRTb3Vy
Y2VzLm1ha2UgKi8sCkBAIC0yMjcwMiw2ICsyMjcwOCw3IEBACiAJCQkJOTNGMTk5RUQwODI0NUU1
OTAwMUU5QUJDIC8qIFhTTFRQcm9jZXNzb3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxQkU1MTJF
MENGNkM1MTIwMDJFQTk1OSAvKiBYU0xUVW5pY29kZVNvcnQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTk3N0UyRTBGMTJGMEZDOUMwMEMxMzM3OSAvKiBYU1NGaWx0ZXIuaCBpbiBIZWFkZXJzICovLAor
CQkJCTQ1QkFDMkIwMTM2MEJCQUIwMDVEQTI1OCAvKiBJY29uVVJMLmggaW4gSGVhZGVycyAqLywK
IAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsK
QEAgLTI1MzYyLDYgKzI1MzY5LDcgQEAKIAkJCQk5M0YxOUIwNTA4MjQ1RTU5MDAxRTlBQkMgLyog
WFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTFCRTUxMkQwQ0Y2
QzUxMjAwMkVBOTU5IC8qIFhTTFRVbmljb2RlU29ydC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5
NzdFMkUwRTEyRjBGQzlDMDBDMTMzNzkgLyogWFNTRmlsdGVyLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCTQ1MDk5QzQxMTM3MEE3ODAwMDU4RDUxMyAvKiBJY29uVVJMLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9
OwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCShyZXZpc2lvbiA4NTYzMSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzNjYsMTUgKzQz
NjYsMjYgQEAgdW5zaWduZWQgRm9ybUVsZW1lbnRLZXlIYXNoOjpoYXNoKGNvbnN0IAogICAgIHJl
dHVybiBTdHJpbmdIYXNoZXI6Omhhc2hNZW1vcnk8c2l6ZW9mKEZvcm1FbGVtZW50S2V5KT4oJmtl
eSk7CiB9CiAKLXZvaWQgRG9jdW1lbnQ6OnNldEljb25VUkwoY29uc3QgU3RyaW5nJiBpY29uVVJM
LCBjb25zdCBTdHJpbmcmIHR5cGUpCitJY29uVVJMIERvY3VtZW50OjppY29uVVJMKEljb25UeXBl
IGljb25UeXBlKSBjb25zdAogewotICAgIC8vIEZJWE1FIC0gPHJkYXI6Ly9wcm9ibGVtLzQ3Mjc2
NDU+IC0gQXQgc29tZSBwb2ludCBpbiB0aGUgZnV0dXJlLCB3ZSBtaWdodCBhY3R1YWxseSBob25v
ciB0aGUgInR5cGUiIAotICAgIGlmIChtX2ljb25VUkwuaXNFbXB0eSgpKQotICAgICAgICBtX2lj
b25VUkwgPSBpY29uVVJMOwotICAgIGVsc2UgaWYgKCF0eXBlLmlzRW1wdHkoKSkKLSAgICAgICAg
bV9pY29uVVJMID0gaWNvblVSTDsKKyAgICByZXR1cm4gbV9pY29uVVJMc1t0b0ljb25JbmRleChp
Y29uVHlwZSldOworfQorCit2b2lkIERvY3VtZW50OjpzZXRJY29uVVJMKGNvbnN0IFN0cmluZyYg
dXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBJY29uVHlwZSBpY29uVHlwZSkKK3sKKyAgICAv
LyBGSVhNRSAtIDxyZGFyOi8vcHJvYmxlbS80NzI3NjQ1PiAtIEF0IHNvbWUgcG9pbnQgaW4gdGhl
IGZ1dHVyZSwgd2UgbWlnaHQgYWN0dWFsbHkgaG9ub3IgdGhlICJtaW1lVHlwZSIKKyAgICBJY29u
VVJMIG5ld1VSTChLVVJMKFBhcnNlZFVSTFN0cmluZywgdXJsKSwgaWNvblR5cGUpOworICAgIGlm
ICghaWNvblVSTChpY29uVHlwZSkubV9pY29uVVJMLmlzRW1wdHkoKSkKKyAgICAgICAgc2V0SWNv
blVSTChuZXdVUkwpOworICAgIGVsc2UgaWYgKCFtaW1lVHlwZS5pc0VtcHR5KCkpCisgICAgICAg
IHNldEljb25VUkwobmV3VVJMKTsKICAgICBpZiAoRnJhbWUqIGYgPSBmcmFtZSgpKQotICAgICAg
ICBmLT5sb2FkZXIoKS0+c2V0SWNvblVSTChtX2ljb25VUkwpOworICAgICAgICBmLT5sb2FkZXIo
KS0+c2V0SWNvblVSTChuZXdVUkwpOworfQorCit2b2lkIERvY3VtZW50OjpzZXRJY29uVVJMKGNv
bnN0IEljb25VUkwmIGljb25VUkwpCit7CisgICAgbV9pY29uVVJMc1t0b0ljb25JbmRleChpY29u
VVJMLm1faWNvblR5cGUpXSA9IGljb25VUkw7CiB9CiAKIHZvaWQgRG9jdW1lbnQ6OnJlZ2lzdGVy
Rm9ybUVsZW1lbnRXaXRoRm9ybUF0dHJpYnV0ZShGb3JtQXNzb2NpYXRlZEVsZW1lbnQqIGVsZW1l
bnQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAkocmV2aXNpb24gODU2MzEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAog
I2luY2x1ZGUgIkNvbG9yLmgiCiAjaW5jbHVkZSAiRE9NVGltZVN0YW1wLmgiCiAjaW5jbHVkZSAi
RG9jdW1lbnRUaW1pbmcuaCIKKyNpbmNsdWRlICJJY29uVVJMLmgiCiAjaW5jbHVkZSAiUXVhbGlm
aWVkTmFtZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRl
ICJTdHJpbmdXaXRoRGlyZWN0aW9uLmgiCkBAIC05MTcsOCArOTE4LDkgQEAgcHVibGljOgogICAg
IAogICAgIHZvaWQgc2V0SGFzTm9kZXNXaXRoUGxhY2Vob2xkZXJTdHlsZSgpIHsgbV9oYXNOb2Rl
c1dpdGhQbGFjZWhvbGRlclN0eWxlID0gdHJ1ZTsgfQogCi0gICAgY29uc3QgU3RyaW5nJiBpY29u
VVJMKCkgY29uc3QgeyByZXR1cm4gbV9pY29uVVJMOyB9Ci0gICAgdm9pZCBzZXRJY29uVVJMKGNv
bnN0IFN0cmluZyYgaWNvblVSTCwgY29uc3QgU3RyaW5nJiB0eXBlKTsKKyAgICBJY29uVVJMIGlj
b25VUkwoSWNvblR5cGUpIGNvbnN0OworICAgIHZvaWQgc2V0SWNvblVSTChjb25zdCBTdHJpbmcm
LCBjb25zdCBTdHJpbmcmLCBJY29uVHlwZSk7CisgICAgdm9pZCBzZXRJY29uVVJMKGNvbnN0IElj
b25VUkwmKTsKIAogICAgIHZvaWQgc2V0VXNlU2VjdXJlS2V5Ym9hcmRFbnRyeVdoZW5BY3RpdmUo
Ym9vbCk7CiAgICAgYm9vbCB1c2VTZWN1cmVLZXlib2FyZEVudHJ5V2hlbkFjdGl2ZSgpIGNvbnN0
OwpAQCAtMTMyNCw4ICsxMzI2LDggQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgbV9jcmVhdGVSZW5k
ZXJlcnM7CiAgICAgYm9vbCBtX2luUGFnZUNhY2hlOwotICAgIFN0cmluZyBtX2ljb25VUkw7Ci0g
ICAgCisgICAgSWNvblVSTCBtX2ljb25VUkxzW0lDT05fQ09VTlRdOworCiAgICAgSGFzaFNldDxF
bGVtZW50Kj4gbV9kb2N1bWVudEFjdGl2YXRpb25DYWxsYmFja0VsZW1lbnRzOwogICAgIEhhc2hT
ZXQ8RWxlbWVudCo+IG1fbWVkaWFWb2x1bWVDYWxsYmFja0VsZW1lbnRzOwogICAgIEhhc2hTZXQ8
RWxlbWVudCo+IG1fcHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2VkRWxlbWVudHM7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9kb20vSWNvblVSTC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvZG9tL0ljb25VUkwuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0lj
b25VUkwuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU4IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4K
KyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIkljb25VUkwuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzaXplX3Qg
dG9JY29uSW5kZXgoSWNvblR5cGUgdHlwZSkKK3sKKyAgICBzaXplX3QgaW5kZXggPSAwOworICAg
IHN3aXRjaCAodHlwZSkgeworICAgIGNhc2UgRmF2aWNvbjoKKyAgICAgICAgaW5kZXggPSAwOwor
ICAgICAgICBicmVhazsKKyNpZiBFTkFCTEUoVE9VQ0hfSUNPTl9MT0FESU5HKQorICAgIGNhc2Ug
VG91Y2hQcmVjb21wb3NlZEljb246CisgICAgICAgIGluZGV4ID0gMTsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBUb3VjaEljb246CisgICAgICAgIGluZGV4ID0gMjsKKyAgICAgICAgYnJlYWs7
CisjZW5kaWYKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICB9CisgICAgcmV0dXJuIGluZGV4OworfQorCit9CisKClByb3BlcnR5IGNoYW5nZXMgb246IFNv
dXJjZS9XZWJDb3JlL2RvbS9JY29uVVJMLmNwcApfX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZW9sLXN0
eWxlCiAgICsgTEYKCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vSWNvblVSTC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9JY29uVVJMLmgJKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9kb20vSWNvblVSTC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDc0IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAq
IGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisg
KiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiBJY29uVVJMX2gKKyNkZWZpbmUgSWNvblVSTF9oCisKKyNpbmNsdWRlICJLVVJMLmgiCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworI2lmIEVOQUJMRShUT1VDSF9JQ09OX0xPQURJTkcpCisj
ZGVmaW5lIElDT05fQ09VTlQgMworI2Vsc2UKKyNkZWZpbmUgSUNPTl9DT1VOVCAxCisjZW5kaWYK
KworZW51bSBJY29uVHlwZSB7CisgICAgSW52YWxpZEljb24gPSAwLAorICAgIEZhdmljb24gPSAx
LAorICAgIFRvdWNoSWNvbiA9IDEgPDwgMSwKKyAgICBUb3VjaFByZWNvbXBvc2VkSWNvbiA9IDEg
PDwgMgorfTsKKworc3RydWN0IEljb25VUkwgeworICAgIEljb25UeXBlIG1faWNvblR5cGU7Cisg
ICAgS1VSTCBtX2ljb25VUkw7CisKKyAgICBJY29uVVJMKCkKKyAgICAgICAgOiBtX2ljb25UeXBl
KEludmFsaWRJY29uKQorICAgIHsKKyAgICB9CisKKyAgICBJY29uVVJMKGNvbnN0IEtVUkwmIHVy
bCwgSWNvblR5cGUgdHlwZSkKKyAgICAgICAgOiBtX2ljb25UeXBlKHR5cGUpCisgICAgICAgICwg
bV9pY29uVVJMKHVybCkKKyAgICB7CisgICAgfQorfTsKKwordHlwZWRlZiBWZWN0b3I8SWNvblVS
TCwgSUNPTl9DT1VOVD4gSWNvblVSTHM7CisKKy8vIFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBn
aXZlbiB0eXBlLCAwIGlzIHJldHVybmVkIGlmIHRoZSB0eXBlIGlzIGludmFsaWQuCitzaXplX3Qg
dG9JY29uSW5kZXgoSWNvblR5cGUpOworCit9CisKKyNlbmRpZiAvLyBJY29uVVJMX2gKClByb3Bl
cnR5IGNoYW5nZXMgb246IFNvdXJjZS9XZWJDb3JlL2RvbS9JY29uVVJMLmgKX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpB
ZGRlZDogc3ZuOmVvbC1zdHlsZQogICArIExGCgpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTGlua0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TExpbmtFbGVtZW50LmNwcAkocmV2aXNpb24gODU2MzEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxMaW5rRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2MCw3ICsxNjAsNyBAQCB2
b2lkIEhUTUxMaW5rRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1CiB2b2lkIEhUTUxMaW5rRWxl
bWVudDo6dG9rZW5pemVSZWxBdHRyaWJ1dGUoY29uc3QgQXRvbWljU3RyaW5nJiByZWwsIFJlbEF0
dHJpYnV0ZSYgcmVsQXR0cmlidXRlKQogewogICAgIHJlbEF0dHJpYnV0ZS5tX2lzU3R5bGVTaGVl
dCA9IGZhbHNlOwotICAgIHJlbEF0dHJpYnV0ZS5tX2lzSWNvbiA9IGZhbHNlOworICAgIHJlbEF0
dHJpYnV0ZS5tX2ljb25UeXBlID0gSW52YWxpZEljb247CiAgICAgcmVsQXR0cmlidXRlLm1faXNB
bHRlcm5hdGUgPSBmYWxzZTsKICAgICByZWxBdHRyaWJ1dGUubV9pc0ROU1ByZWZldGNoID0gZmFs
c2U7CiAjaWYgRU5BQkxFKExJTktfUFJFRkVUQ0gpCkBAIC0xNzAsNyArMTcwLDEzIEBAIHZvaWQg
SFRNTExpbmtFbGVtZW50Ojp0b2tlbml6ZVJlbEF0dHJpYnUKICAgICBpZiAoZXF1YWxJZ25vcmlu
Z0Nhc2UocmVsLCAic3R5bGVzaGVldCIpKQogICAgICAgICByZWxBdHRyaWJ1dGUubV9pc1N0eWxl
U2hlZXQgPSB0cnVlOwogICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHJlbCwgImljb24i
KSB8fCBlcXVhbElnbm9yaW5nQ2FzZShyZWwsICJzaG9ydGN1dCBpY29uIikpCi0gICAgICAgIHJl
bEF0dHJpYnV0ZS5tX2lzSWNvbiA9IHRydWU7CisgICAgICAgIHJlbEF0dHJpYnV0ZS5tX2ljb25U
eXBlID0gRmF2aWNvbjsKKyNpZiBFTkFCTEUoVE9VQ0hfSUNPTl9MT0FESU5HKQorICAgIGVsc2Ug
aWYgKGVxdWFsSWdub3JpbmdDYXNlKHJlbCwgImFwcGxlLXRvdWNoLWljb24iKSkKKyAgICAgICAg
cmVsQXR0cmlidXRlLm1faWNvblR5cGUgPSBUb3VjaEljb247CisgICAgZWxzZSBpZiAoZXF1YWxJ
Z25vcmluZ0Nhc2UocmVsLCAiYXBwbGUtdG91Y2gtaWNvbi1wcmVjb21wb3NlZCIpKQorICAgICAg
ICByZWxBdHRyaWJ1dGUubV9pY29uVHlwZSA9IFRvdWNoUHJlY29tcG9zZWRJY29uOworI2VuZGlm
CiAgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UocmVsLCAiZG5zLXByZWZldGNoIikpCiAg
ICAgICAgIHJlbEF0dHJpYnV0ZS5tX2lzRE5TUHJlZmV0Y2ggPSB0cnVlOwogICAgIGVsc2UgaWYg
KGVxdWFsSWdub3JpbmdDYXNlKHJlbCwgImFsdGVybmF0ZSBzdHlsZXNoZWV0IikgfHwgZXF1YWxJ
Z25vcmluZ0Nhc2UocmVsLCAic3R5bGVzaGVldCBhbHRlcm5hdGUiKSkgewpAQCAtMTg5LDcgKzE5
NSwxMyBAQCB2b2lkIEhUTUxMaW5rRWxlbWVudDo6dG9rZW5pemVSZWxBdHRyaWJ1CiAgICAgICAg
ICAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZSgqaXQsICJhbHRlcm5hdGUiKSkKICAgICAg
ICAgICAgICAgICByZWxBdHRyaWJ1dGUubV9pc0FsdGVybmF0ZSA9IHRydWU7CiAgICAgICAgICAg
ICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZSgqaXQsICJpY29uIikpCi0gICAgICAgICAgICAg
ICAgcmVsQXR0cmlidXRlLm1faXNJY29uID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICByZWxBdHRy
aWJ1dGUubV9pY29uVHlwZSA9IEZhdmljb247CisjaWYgRU5BQkxFKFRPVUNIX0lDT05fTE9BRElO
RykKKyAgICAgICAgICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKCppdCwgImFwcGxlLXRv
dWNoLWljb24iKSkKKyAgICAgICAgICAgICAgICByZWxBdHRyaWJ1dGUubV9pY29uVHlwZSA9IFRv
dWNoSWNvbjsKKyAgICAgICAgICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKCppdCwgImFw
cGxlLXRvdWNoLWljb24tcHJlY29tcG9zZWQiKSkKKyAgICAgICAgICAgICAgICByZWxBdHRyaWJ1
dGUubV9pY29uVHlwZSA9IFRvdWNoUHJlY29tcG9zZWRJY29uOworI2VuZGlmCiAjaWYgRU5BQkxF
KExJTktfUFJFRkVUQ0gpCiAgICAgICAgICAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZSgq
aXQsICJwcmVmZXRjaCIpKQogICAgICAgICAgICAgICByZWxBdHRyaWJ1dGUubV9pc0xpbmtQcmVm
ZXRjaCA9IHRydWU7CkBAIC0yMjIsMTAgKzIzNCwxMCBAQCB2b2lkIEhUTUxMaW5rRWxlbWVudDo6
cHJvY2VzcygpCiAKICAgICAvLyBJRSBleHRlbnNpb246IGxvY2F0aW9uIG9mIHNtYWxsIGljb24g
Zm9yIGxvY2F0aW9uYmFyIC8gYm9va21hcmtzCiAgICAgLy8gV2UnbGwgcmVjb3JkIHRoaXMgVVJM
IHBlciBkb2N1bWVudCwgZXZlbiBpZiB3ZSBsYXRlciBvbmx5IHVzZSBpdCBpbiB0b3AgbGV2ZWwg
ZnJhbWVzCi0gICAgaWYgKG1fcmVsQXR0cmlidXRlLm1faXNJY29uICYmIG1fdXJsLmlzVmFsaWQo
KSAmJiAhbV91cmwuaXNFbXB0eSgpKSB7CisgICAgaWYgKG1fcmVsQXR0cmlidXRlLm1faWNvblR5
cGUgIT0gSW52YWxpZEljb24gJiYgbV91cmwuaXNWYWxpZCgpICYmICFtX3VybC5pc0VtcHR5KCkp
IHsKICAgICAgICAgaWYgKCFjaGVja0JlZm9yZUxvYWRFdmVudCgpKSAKICAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgZG9jdW1lbnQoKS0+c2V0SWNvblVSTChtX3VybC5zdHJpbmcoKSwgdHlw
ZSk7CisgICAgICAgIGRvY3VtZW50KCktPnNldEljb25VUkwobV91cmwuc3RyaW5nKCksIHR5cGUs
IG1fcmVsQXR0cmlidXRlLm1faWNvblR5cGUpOwogICAgIH0KIAogICAgIGlmIChtX3JlbEF0dHJp
YnV0ZS5tX2lzRE5TUHJlZmV0Y2gpIHsKQEAgLTQ3Myw3ICs0ODUsNyBAQCB2b2lkIEhUTUxMaW5r
RWxlbWVudDo6YWRkU3VicmVzb3VyY2VBdHRyCiAgICAgSFRNTEVsZW1lbnQ6OmFkZFN1YnJlc291
cmNlQXR0cmlidXRlVVJMcyh1cmxzKTsKIAogICAgIC8vIEZhdmljb25zIGFyZSBoYW5kbGVkIGJ5
IGEgc3BlY2lhbCBjYXNlIGluIExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZSgpCi0gICAgaWYgKG1f
cmVsQXR0cmlidXRlLm1faXNJY29uKQorICAgIGlmIChtX3JlbEF0dHJpYnV0ZS5tX2ljb25UeXBl
ICE9IEludmFsaWRJY29uKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIW1fcmVsQXR0cmli
dXRlLm1faXNTdHlsZVNoZWV0KQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0Vs
ZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVu
dC5oCShyZXZpc2lvbiA4NTYzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVt
ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJDYWNoZWRS
ZXNvdXJjZUNsaWVudC5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlSGFuZGxlLmgiCiAjaW5j
bHVkZSAiSFRNTEVsZW1lbnQuaCIKKyNpbmNsdWRlICJJY29uVVJMLmgiCiAjaW5jbHVkZSAiVGlt
ZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzksNyArNDAsNyBAQCBjbGFzcyBIVE1M
TGlua0VsZW1lbnQgOiBwdWJsaWMgSFRNTEVsZW1lCiBwdWJsaWM6CiAgICAgc3RydWN0IFJlbEF0
dHJpYnV0ZSB7CiAgICAgICAgIGJvb2wgbV9pc1N0eWxlU2hlZXQ7Ci0gICAgICAgIGJvb2wgbV9p
c0ljb247CisgICAgICAgIEljb25UeXBlIG1faWNvblR5cGU7CiAgICAgICAgIGJvb2wgbV9pc0Fs
dGVybmF0ZTsKICAgICAgICAgYm9vbCBtX2lzRE5TUHJlZmV0Y2g7CiAjaWYgRU5BQkxFKExJTktf
UFJFRkVUQ0gpCkBAIC00OSw3ICs1MCw3IEBAIHB1YmxpYzoKIAogICAgICAgICBSZWxBdHRyaWJ1
dGUoKQogICAgICAgICAgICAgOiBtX2lzU3R5bGVTaGVldChmYWxzZSkKLSAgICAgICAgICAgICwg
bV9pc0ljb24oZmFsc2UpCisgICAgICAgICAgICAsIG1faWNvblR5cGUoSW52YWxpZEljb24pCiAg
ICAgICAgICAgICAsIG1faXNBbHRlcm5hdGUoZmFsc2UpCiAgICAgICAgICAgICAsIG1faXNETlNQ
cmVmZXRjaChmYWxzZSkKICNpZiBFTkFCTEUoTElOS19QUkVGRVRDSCkKQEAgLTc2LDcgKzc3LDYg
QEAgcHVibGljOgogCiAgICAgYm9vbCBpc0Rpc2FibGVkKCkgY29uc3QgeyByZXR1cm4gbV9kaXNh
YmxlZFN0YXRlID09IERpc2FibGVkOyB9CiAgICAgYm9vbCBpc0VuYWJsZWRWaWFTY3JpcHQoKSBj
b25zdCB7IHJldHVybiBtX2Rpc2FibGVkU3RhdGUgPT0gRW5hYmxlZFZpYVNjcmlwdDsgfQotICAg
IGJvb2wgaXNJY29uKCkgY29uc3QgeyByZXR1cm4gbV9yZWxBdHRyaWJ1dGUubV9pc0ljb247IH0K
ICAgICBib29sIGRpc2FibGVkKCkgY29uc3Q7CiAgICAgdm9pZCBzZXREaXNhYmxlZChib29sKTsK
IApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUHJlbG9hZFNj
YW5uZXIuY3BwCShyZXZpc2lvbiA4NTYzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L0hUTUxQcmVsb2FkU2Nhbm5lci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk1LDcgKzk1LDcgQEAg
cHVibGljOgogICAgIHsKICAgICAgICAgSFRNTExpbmtFbGVtZW50OjpSZWxBdHRyaWJ1dGUgcmVs
OwogICAgICAgICBIVE1MTGlua0VsZW1lbnQ6OnRva2VuaXplUmVsQXR0cmlidXRlKGF0dHJpYnV0
ZVZhbHVlLCByZWwpOwotICAgICAgICByZXR1cm4gcmVsLm1faXNTdHlsZVNoZWV0ICYmICFyZWwu
bV9pc0FsdGVybmF0ZSAmJiAhcmVsLm1faXNJY29uICYmICFyZWwubV9pc0ROU1ByZWZldGNoOwor
ICAgICAgICByZXR1cm4gcmVsLm1faXNTdHlsZVNoZWV0ICYmICFyZWwubV9pc0FsdGVybmF0ZSAm
JiByZWwubV9pY29uVHlwZSA9PSBJbnZhbGlkSWNvbiAmJiAhcmVsLm1faXNETlNQcmVmZXRjaDsK
ICAgICB9CiAKICAgICBzdGF0aWMgYm9vbCBsaW5rTWVkaWFBdHRyaWJ1dGVJc1NjcmVlbihjb25z
dCBTdHJpbmcmIGF0dHJpYnV0ZVZhbHVlKQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0Rv
Y3VtZW50TG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9j
dW1lbnRMb2FkZXIuY3BwCShyZXZpc2lvbiA4NTYzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Eb2N1bWVudExvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY2MSwxNCArNjYxLDE5IEBA
IHZvaWQgRG9jdW1lbnRMb2FkZXI6OnNldFRpdGxlKGNvbnN0IFN0cmkKICAgICB9CiB9CiAKLXZv
aWQgRG9jdW1lbnRMb2FkZXI6OnNldEljb25VUkwoY29uc3QgU3RyaW5nJiBpY29uVVJMKQorSWNv
blVSTCBEb2N1bWVudExvYWRlcjo6aWNvblVSTChJY29uVHlwZSBpY29uVHlwZSkgY29uc3QKIHsK
LSAgICBpZiAoaWNvblVSTC5pc0VtcHR5KCkpCisgICAgcmV0dXJuIG1faWNvblVSTHNbdG9JY29u
SW5kZXgoaWNvblR5cGUpXTsKK30KKwordm9pZCBEb2N1bWVudExvYWRlcjo6c2V0SWNvblVSTChj
b25zdCBJY29uVVJMJiB1cmwpCit7CisgICAgaWYgKHVybC5tX2ljb25VUkwuaXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBpZiAobV9wYWdlSWNvblVSTCAhPSBpY29uVVJMKSB7Ci0g
ICAgICAgIG1fcGFnZUljb25VUkwgPSBpY29uVVJMOwotICAgICAgICBmcmFtZUxvYWRlcigpLT5k
aWRDaGFuZ2VJY29ucyh0aGlzKTsKKyAgICBpZiAoaWNvblVSTCh1cmwubV9pY29uVHlwZSkubV9p
Y29uVVJMICE9IHVybC5tX2ljb25VUkwpIHsKKyAgICAgICAgbV9pY29uVVJMc1t0b0ljb25JbmRl
eCh1cmwubV9pY29uVHlwZSldID0gdXJsOworICAgICAgICBmcmFtZUxvYWRlcigpLT5kaWRDaGFu
Z2VJY29ucyh0aGlzLCB1cmwubV9pY29uVHlwZSk7CiAgICAgfQogfQogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAkocmV2aXNpb24gODU2MzEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiAr
MzIsNyBAQAogI2luY2x1ZGUgIkRvY3VtZW50TG9hZFRpbWluZy5oIgogI2luY2x1ZGUgIkRvY3Vt
ZW50V3JpdGVyLmgiCiAjaW5jbHVkZSAiSWNvbkRhdGFiYXNlQmFzZS5oIgorI2luY2x1ZGUgIklj
b25VUkwuaCIKICNpbmNsdWRlICJOYXZpZ2F0aW9uQWN0aW9uLmgiCiAjaW5jbHVkZSAiUmVzb3Vy
Y2VFcnJvci5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgpAQCAtMTIzLDcgKzEyNCw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCBpc0xvYWRpbmdJbkFQSVNlbnNl
KCkgY29uc3Q7CiAgICAgICAgIHZvaWQgc2V0UHJpbWFyeUxvYWRDb21wbGV0ZShib29sKTsKICAg
ICAgICAgdm9pZCBzZXRUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJik7Ci0gICAgICAg
IHZvaWQgc2V0SWNvblVSTChjb25zdCBTdHJpbmcmKTsKKyAgICAgICAgdm9pZCBzZXRJY29uVVJM
KGNvbnN0IEljb25VUkwmKTsKICAgICAgICAgY29uc3QgU3RyaW5nJiBvdmVycmlkZUVuY29kaW5n
KCkgY29uc3QgeyByZXR1cm4gbV9vdmVycmlkZUVuY29kaW5nOyB9CiAKICNpZiBQTEFURk9STShN
QUMpCkBAIC0xNzAsNyArMTcxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHZv
aWQgc3RvcFJlY29yZGluZ1Jlc3BvbnNlcygpOwogICAgICAgICBjb25zdCBTdHJpbmdXaXRoRGly
ZWN0aW9uJiB0aXRsZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZVRpdGxlOyB9Ci0gICAgICAgIGNv
bnN0IFN0cmluZyYgaWNvblVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUljb25VUkw7IH0KKyAg
ICAgICAgSWNvblVSTCBpY29uVVJMKEljb25UeXBlKSBjb25zdDsKIAogICAgICAgICBLVVJMIHVy
bEZvckhpc3RvcnkoKSBjb25zdDsKICAgICAgICAgYm9vbCB1cmxGb3JIaXN0b3J5UmVmbGVjdHNG
YWlsdXJlKCkgY29uc3Q7CkBAIC0zMDAsNyArMzAxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICBib29sIG1fd2FzT25sb2FkSGFuZGxlZDsKIAogICAgICAgICBTdHJpbmdXaXRoRGly
ZWN0aW9uIG1fcGFnZVRpdGxlOwotICAgICAgICBTdHJpbmcgbV9wYWdlSWNvblVSTDsKKyAgICAg
ICAgSWNvblVSTCBtX2ljb25VUkxzW0lDT05fQ09VTlRdOwogCiAgICAgICAgIFN0cmluZyBtX292
ZXJyaWRlRW5jb2Rpbmc7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVu
dHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgJ
KHJldmlzaW9uIDg1NjMxKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yNzEsNyArMjcxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaERpZFJlY2VpdmVJY29uKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoRGlkU3RhcnRQcm92aXNpb25hbExvYWQoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0
Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYpIHsgfQotICAgIHZp
cnR1YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZUljb25zKCkgeyB9CisgICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoSWNvblR5cGUpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaERpZENvbW1pdExvYWQoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRG
YWlsUHJvdmlzaW9uYWxMb2FkKGNvbnN0IFJlc291cmNlRXJyb3ImKSB7IH0KICAgICB2aXJ0dWFs
IHZvaWQgZGlzcGF0Y2hEaWRGYWlsTG9hZChjb25zdCBSZXNvdXJjZUVycm9yJikgeyB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHJldmlzaW9uIDg1NjMxKQorKysg
U291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NjksNiArNjksNyBAQAogI2luY2x1ZGUgIkhpc3RvcnlJdGVtLmgiCiAjaW5jbHVkZSAiSWNvbkRh
dGFiYXNlLmgiCiAjaW5jbHVkZSAiSWNvbkxvYWRlci5oIgorI2luY2x1ZGUgIkljb25VUkwuaCIK
ICNpbmNsdWRlICJJbnNwZWN0b3JDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgpAQCAtNDY3LDE4ICs0NjgsNTYg
QEAgYm9vbCBGcmFtZUxvYWRlcjo6Y2xvc2VVUkwoKQogCiBLVVJMIEZyYW1lTG9hZGVyOjppY29u
VVJMKCkKIHsKLSAgICAvLyBJZiB0aGlzIGlzbid0IGEgdG9wIGxldmVsIGZyYW1lLCByZXR1cm4g
bm90aGluZworICAgIEljb25VUkxzIHVybHMgPSBpY29uVVJMcyhGYXZpY29uKTsKKyAgICByZXR1
cm4gdXJscy5pc0VtcHR5KCkgPyBLVVJMKCkgOiB1cmxzWzBdLm1faWNvblVSTDsKK30KKworSWNv
blVSTHMgRnJhbWVMb2FkZXI6Omljb25VUkxzKGludCBpY29uVHlwZXMpCit7CisgICAgSWNvblVS
THMgaWNvblVSTHM7CisgICAgaWYgKGljb25UeXBlcyAmIEZhdmljb24gJiYgIWZpbGxJY29uVVJM
KEZhdmljb24sICZpY29uVVJMcykpCisgICAgICAgIGljb25VUkxzLmFwcGVuZChnZXREZWZhdWx0
SWNvblVSTChGYXZpY29uKSk7CisKKyNpZiBFTkFCTEUoVE9VQ0hfSUNPTl9MT0FESU5HKQorICAg
IGJvb2wgaGF2ZVByZWNvbXBvc2VkSWNvbiA9IGZhbHNlOworICAgIGlmIChpY29uVHlwZXMgJiBU
b3VjaFByZWNvbXBvc2VkSWNvbikKKyAgICAgICAgaGF2ZVByZWNvbXBvc2VkSWNvbiA9IGZpbGxJ
Y29uVVJMKFRvdWNoUHJlY29tcG9zZWRJY29uLCAmaWNvblVSTHMpOworCisgICAgYm9vbCBoYXZl
VG91Y2hJY29uID0gZmFsc2U7CisgICAgaWYgKGljb25UeXBlcyAmIFRvdWNoSWNvbikKKyAgICAg
ICAgaGF2ZVRvdWNoSWNvbiA9IGZpbGxJY29uVVJMKFRvdWNoSWNvbiwgJmljb25VUkxzKTsKKwor
ICAgIC8vIE9ubHkgcmV0dXJuIHRoZSBkZWZhdWx0IHRvdWNoIGljb25zIHdoZW4gdGhlIGJvdGgg
d2VyZSByZXF1aXJlZCBhbmQgbmVpdGhlciB3YXMgZ290dGVuLgorICAgIGlmIChpY29uVHlwZXMg
JiBUb3VjaFByZWNvbXBvc2VkSWNvbiAmJiBpY29uVHlwZXMgJiBUb3VjaEljb24gJiYgIWhhdmVQ
cmVjb21wb3NlZEljb24gJiYgIWhhdmVUb3VjaEljb24pIHsKKyAgICAgICAgaWNvblVSTHMuYXBw
ZW5kKGdldERlZmF1bHRJY29uVVJMKFRvdWNoUHJlY29tcG9zZWRJY29uKSk7CisgICAgICAgIGlj
b25VUkxzLmFwcGVuZChnZXREZWZhdWx0SWNvblVSTChUb3VjaEljb24pKTsKKyAgICB9CisjZW5k
aWYKKyAgICByZXR1cm4gaWNvblVSTHM7Cit9CisKK2Jvb2wgRnJhbWVMb2FkZXI6OmZpbGxJY29u
VVJMKEljb25UeXBlIGljb25UeXBlLCBJY29uVVJMcyogaWNvblVSTHMpCit7CisgICAgLy8gSWYg
dGhpcyBpc24ndCBhIHRvcCBsZXZlbCBmcmFtZSwgcmV0dXJuCiAgICAgaWYgKG1fZnJhbWUtPnRy
ZWUoKSAmJiBtX2ZyYW1lLT50cmVlKCktPnBhcmVudCgpKQotICAgICAgICByZXR1cm4gS1VSTCgp
OworICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAvLyBJZiB3ZSBoYXZlIGFuIGljb25VUkwg
ZnJvbSBhIExpbmsgZWxlbWVudCwgcmV0dXJuIHRoYXQKLSAgICBpZiAoIW1fZnJhbWUtPmRvY3Vt
ZW50KCktPmljb25VUkwoKS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBLVVJMKFBhcnNlZFVS
TFN0cmluZywgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+aWNvblVSTCgpKTsKKyAgICBJY29uVVJMIHVy
bCA9IG1fZnJhbWUtPmRvY3VtZW50KCktPmljb25VUkwoaWNvblR5cGUpOworICAgIGlmICh1cmwu
bV9pY29uVVJMLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWNvblVS
THMtPmFwcGVuZCh1cmwpOworCisgICAgcmV0dXJuIHRydWU7Cit9CiAKK0ljb25VUkwgRnJhbWVM
b2FkZXI6OmdldERlZmF1bHRJY29uVVJMKEljb25UeXBlIGljb25UeXBlKQorewogICAgIC8vIERv
bid0IHJldHVybiBhIGZhdmljb24gaWNvblVSTCB1bmxlc3Mgd2UncmUgaHR0cCBvciBodHRwcwog
ICAgIEtVUkwgZG9jdW1lbnRVUkwgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT51cmwoKTsKICAgICBp
ZiAoIWRvY3VtZW50VVJMLnByb3RvY29sSW5IVFRQRmFtaWx5KCkpCi0gICAgICAgIHJldHVybiBL
VVJMKCk7CisgICAgICAgIHJldHVybiBJY29uVVJMKCk7CiAKICAgICBLVVJMIHVybDsKICAgICBi
b29sIGNvdWxkU2V0UHJvdG9jb2wgPSB1cmwuc2V0UHJvdG9jb2woZG9jdW1lbnRVUkwucHJvdG9j
b2woKSk7CkBAIC00ODYsOCArNTI1LDIxIEBAIEtVUkwgRnJhbWVMb2FkZXI6Omljb25VUkwoKQog
ICAgIHVybC5zZXRIb3N0KGRvY3VtZW50VVJMLmhvc3QoKSk7CiAgICAgaWYgKGRvY3VtZW50VVJM
Lmhhc1BvcnQoKSkKICAgICAgICAgdXJsLnNldFBvcnQoZG9jdW1lbnRVUkwucG9ydCgpKTsKLSAg
ICB1cmwuc2V0UGF0aCgiL2Zhdmljb24uaWNvIik7Ci0gICAgcmV0dXJuIHVybDsKKyAgICBpZiAo
aWNvblR5cGUgPT0gRmF2aWNvbikgeworICAgICAgICB1cmwuc2V0UGF0aCgiL2Zhdmljb24uaWNv
Iik7CisgICAgICAgIHJldHVybiBJY29uVVJMKEtVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmwpLCBG
YXZpY29uKTsKKyAgICB9CisjaWYgRU5BQkxFKFRPVUNIX0lDT05fTE9BRElORykKKyAgICBpZiAo
aWNvblR5cGUgPT0gVG91Y2hQcmVjb21wb3NlZEljb24pIHsKKyAgICAgICAgdXJsLnNldFBhdGgo
Ii9hcHBsZS10b3VjaC1pY29uLXByZWNvbXBvc2VkLnBuZyIpOworICAgICAgICByZXR1cm4gSWNv
blVSTChLVVJMKFBhcnNlZFVSTFN0cmluZywgdXJsKSwgVG91Y2hQcmVjb21wb3NlZEljb24pOwor
ICAgIH0KKyAgICBpZiAoaWNvblR5cGUgPT0gVG91Y2hJY29uKSB7CisgICAgICAgIHVybC5zZXRQ
YXRoKCIvYXBwbGUtdG91Y2gtaWNvbi5wbmciKTsKKyAgICAgICAgcmV0dXJuIEljb25VUkwoS1VS
TChQYXJzZWRVUkxTdHJpbmcsIHVybCksIFRvdWNoSWNvbik7CisgICAgfQorI2VuZGlmCisgICAg
cmV0dXJuIEljb25VUkwoKTsKIH0KIAogYm9vbCBGcmFtZUxvYWRlcjo6ZGlkT3BlblVSTChjb25z
dCBLVVJMJiB1cmwpCkBAIC0zMzU3LDcgKzM0MDksNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpzZXRU
aXRsZShjb25zdCBTdHJpbmdXCiAgICAgZG9jdW1lbnRMb2FkZXIoKS0+c2V0VGl0bGUodGl0bGUp
OwogfQogCi12b2lkIEZyYW1lTG9hZGVyOjpzZXRJY29uVVJMKGNvbnN0IFN0cmluZyYgaWNvblVS
TCkKK3ZvaWQgRnJhbWVMb2FkZXI6OnNldEljb25VUkwoY29uc3QgSWNvblVSTCYgaWNvblVSTCkK
IHsKICAgICBkb2N1bWVudExvYWRlcigpLT5zZXRJY29uVVJMKGljb25VUkwpOwogfQpAQCAtMzQz
NSwxMCArMzQ4NywxMCBAQCB2b2lkIEZyYW1lTG9hZGVyOjpkaWRDaGFuZ2VUaXRsZShEb2N1bWVu
CiAgICAgfQogfQogCi12b2lkIEZyYW1lTG9hZGVyOjpkaWRDaGFuZ2VJY29ucyhEb2N1bWVudExv
YWRlciogbG9hZGVyKQordm9pZCBGcmFtZUxvYWRlcjo6ZGlkQ2hhbmdlSWNvbnMoRG9jdW1lbnRM
b2FkZXIqIGxvYWRlciwgSWNvblR5cGUgdHlwZSkKIHsKICAgICBpZiAobG9hZGVyID09IG1fZG9j
dW1lbnRMb2FkZXIpCi0gICAgICAgIG1fY2xpZW50LT5kaXNwYXRjaERpZENoYW5nZUljb25zKCk7
CisgICAgICAgIG1fY2xpZW50LT5kaXNwYXRjaERpZENoYW5nZUljb25zKHR5cGUpOwogfQogCiB2
b2lkIEZyYW1lTG9hZGVyOjpkaXNwYXRjaERpZENvbW1pdExvYWQoKQpJbmRleDogU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
bG9hZGVyL0ZyYW1lTG9hZGVyLmgJKHJldmlzaW9uIDg1NjMxKQorKysgU291cmNlL1dlYkNvcmUv
bG9hZGVyL0ZyYW1lTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDcgQEAKICNp
bmNsdWRlICJGcmFtZUxvYWRlclR5cGVzLmgiCiAjaW5jbHVkZSAiSGlzdG9yeUNvbnRyb2xsZXIu
aCIKICNpbmNsdWRlICJJY29uRGF0YWJhc2VCYXNlLmgiCisjaW5jbHVkZSAiSWNvblVSTC5oIgog
I2luY2x1ZGUgIlBvbGljeUNoZWNrZXIuaCIKICNpbmNsdWRlICJSZXNvdXJjZUxvYWROb3RpZmll
ci5oIgogI2luY2x1ZGUgIlN1YmZyYW1lTG9hZGVyLmgiCkBAIC0xOTEsNyArMTkyLDcgQEAgcHVi
bGljOgogICAgIGJvb2wgc3ViZnJhbWVJc0xvYWRpbmcoKSBjb25zdDsKICAgICB2b2lkIHdpbGxD
aGFuZ2VUaXRsZShEb2N1bWVudExvYWRlciopOwogICAgIHZvaWQgZGlkQ2hhbmdlVGl0bGUoRG9j
dW1lbnRMb2FkZXIqKTsKLSAgICB2b2lkIGRpZENoYW5nZUljb25zKERvY3VtZW50TG9hZGVyKik7
CisgICAgdm9pZCBkaWRDaGFuZ2VJY29ucyhEb2N1bWVudExvYWRlciosIEljb25UeXBlKTsKIAog
ICAgIEZyYW1lTG9hZFR5cGUgbG9hZFR5cGUoKSBjb25zdDsKIApAQCAtMjMzLDcgKzIzNCwxMSBA
QCBwdWJsaWM6CiAgICAgdm9pZCBkaWRFbmREb2N1bWVudCgpOwogICAgIHZvaWQgd2lsbFNldEVu
Y29kaW5nKCk7CiAKKyAgICAvLyBSZXR1cm5zIGZhdmljb24uCiAgICAgS1VSTCBpY29uVVJMKCk7
CisKKyAgICAvLyBSZXR1cm5zIHRoZSBnaXZlbiBpY29uVHlwZXMnIEljb25VUkxzLCBpY29uVHlw
ZXMgY291bGQgYmUgYW55IGNvbWJpbmF0aW9uIG9mIEljb25UeXBlLgorICAgIEljb25VUkxzIGlj
b25VUkxzKGludCBpY29uVHlwZXMpOwogICAgIHZvaWQgY29tbWl0SWNvblVSTFRvSWNvbkRhdGFi
YXNlKGNvbnN0IEtVUkwmKTsKIAogICAgIEtVUkwgYmFzZVVSTCgpIGNvbnN0OwpAQCAtMjg0LDcg
KzI4OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNhbmNlbEFuZENsZWFyKCk7CiAKICAgICB2b2lk
IHNldFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mKTsKLSAgICB2b2lkIHNldEljb25V
UkwoY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBzZXRJY29uVVJMKGNvbnN0IEljb25VUkwmKTsK
IAogICAgIHZvaWQgY29tbWl0UHJvdmlzaW9uYWxMb2FkKCk7CiAgICAgYm9vbCBpc0xvYWRpbmdG
cm9tQ2FjaGVkUGFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fbG9hZGluZ0Zyb21DYWNoZWRQYWdlOyB9
CkBAIC00MjgsNiArNDMzLDkgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgdXBkYXRlU2FuZGJveEZs
YWdzKCk7CiAKKyAgICBib29sIGZpbGxJY29uVVJMKEljb25UeXBlLCBJY29uVVJMcyopOworICAg
IEljb25VUkwgZ2V0RGVmYXVsdEljb25VUkwoSWNvblR5cGUpOworCiAgICAgRnJhbWUqIG1fZnJh
bWU7CiAgICAgRnJhbWVMb2FkZXJDbGllbnQqIG1fY2xpZW50OwogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAkocmV2aXNpb24gODU2MzEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAt
MzAsNiArMzAsNyBAQAogI2RlZmluZSBGcmFtZUxvYWRlckNsaWVudF9oCiAKICNpbmNsdWRlICJG
cmFtZUxvYWRlclR5cGVzLmgiCisjaW5jbHVkZSAiSWNvblVSTC5oIgogI2luY2x1ZGUgIlNjcm9s
bFR5cGVzLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CkBAIC0xNDEsNyArMTQyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0
dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbigpID0gMDsKICAgICAgICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoRGlkU3RhcnRQcm92aXNpb25hbExvYWQoKSA9IDA7CiAgICAgICAgIHZpcnR1
YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9u
JikgPSAwOwotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygpID0g
MDsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoSWNvblR5cGUp
ID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ29tbWl0TG9hZCgpID0gMDsK
ICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9hZChjb25z
dCBSZXNvdXJjZUVycm9yJikgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRG
YWlsTG9hZChjb25zdCBSZXNvdXJjZUVycm9yJikgPSAwOwpJbmRleDogU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNp
b24gODU2NTQpCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwxOSBAQAorMjAxMS0wNC0yMiAgVGFvIEJhaSAgPG1pY2hhZWxiYWlAY2hyb21pdW0u
b3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBv
cHVsYXRlIHRvdWNoLWljb24gdXJsIHRvIEZyYW1lTG9hZGVyQ2xpZW50CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01OTE0MworCisgICAgICAgIFJlc3Bl
Y3RlZCB0aGUgY2hhbmdlIG9mIEZyYW1lTG9hZGVyQ2xpZW50LgorICAgICAgICBBZGRlZCBXZWJJ
Y29uVVJMIGFuZCBXZWJJY29uVHlwZSByZXNwb25kaW5nIHRoZSBuZXcgSWNvblVSTCBhbmQgSWNv
blR5cGUuCisgICAgICAgIFN1cHBvcnRlZCB0byBnZXQgdGhlIG11bHRpcGxlIGljb24gdXJscy4K
KworICAgICAgICAqIENvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDaGFu
Z2VJY29ucyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5oOgorCiAyMDExLTA1LTAzICBBZGFtIFJvYmVuICA8YXJvYmVuQGFwcGxlLmNv
bT4KIAogICAgICAgICBGaXggbW9zdCBzdHJpY3QgUGFzc093blB0ciB2aW9sYXRpb25zIG9uIFdp
bmRvd3MKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVz
LnhjY29uZmlnCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NvbmZpZ3VyYXRpb25zL0Zl
YXR1cmVEZWZpbmVzLnhjY29uZmlnCShyZXZpc2lvbiA4NTYzMSkKKysrIFNvdXJjZS9XZWJLaXQy
L0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCSh3b3JraW5nIGNvcHkpCkBA
IC0xMTgsNiArMTE4LDggQEAgRU5BQkxFX1ZJREVPX1RSQUNLID0gOwogCiBFTkFCTEVfTUVESUFf
U1RBVElTVElDUyA9IDsKIAorRU5BQkxFX1RPVUNIX0lDT05fTE9BRElORyA9IDsKKwogRU5BQkxF
X1dFQl9BVURJTyA9IDsKIAogRU5BQkxFX1dFQl9TT0NLRVRTID0gJChFTkFCTEVfV0VCX1NPQ0tF
VFNfJChSRUFMX1BMQVRGT1JNX05BTUUpKTsKQEAgLTEzMiw0ICsxMzQsNCBAQCBFTkFCTEVfWEhU
TUxNUCA9IDsKIEVOQUJMRV9YUEFUSCA9IEVOQUJMRV9YUEFUSDsKIEVOQUJMRV9YU0xUID0gRU5B
QkxFX1hTTFQ7CiAKLUZFQVRVUkVfREVGSU5FUyA9ICQoRU5BQkxFX0xJTktfUFJFRkVUQ0gpICQo
RU5BQkxFX0FDQ0VMRVJBVEVEXzJEX0NBTlZBUykgJChFTkFCTEVfV0VCR0wpICQoRU5BQkxFXzNE
X1JFTkRFUklORykgJChFTkFCTEVfQU5JTUFUSU9OX0FQSSkgJChFTkFCTEVfQkxPQikgJChFTkFC
TEVfQ0hBTk5FTF9NRVNTQUdJTkcpICQoRU5BQkxFX0NMSUVOVF9CQVNFRF9HRU9MT0NBVElPTikg
JChFTkFCTEVfREFUQUJBU0UpICQoRU5BQkxFX0RBVEFMSVNUKSAkKEVOQUJMRV9EQVRBX1RSQU5T
RkVSX0lURU1TKSAkKEVOQUJMRV9ERVRBSUxTKSAkKEVOQUJMRV9ERVZJQ0VfT1JJRU5UQVRJT04p
ICQoRU5BQkxFX0RJUkVDVE9SWV9VUExPQUQpICQoRU5BQkxFX0RPTV9TVE9SQUdFKSAkKEVOQUJM
RV9FVkVOVFNPVVJDRSkgJChFTkFCTEVfRklMVEVSUykgJChFTkFCTEVfRklMRV9TWVNURU0pICQo
RU5BQkxFX0ZVTExTQ1JFRU5fQVBJKSAkKEVOQUJMRV9HRU9MT0NBVElPTikgJChFTkFCTEVfSUNP
TkRBVEFCQVNFKSAkKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFKSAkKEVOQUJMRV9JTlBVVF9TUEVF
Q0gpICQoRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIpICQoRU5BQkxFX01BVEhNTCkgJChFTkFC
TEVfTUVURVJfVEFHKSAkKEVOQUJMRV9OT1RJRklDQVRJT05TKSAkKEVOQUJMRV9PRkZMSU5FX1dF
Ql9BUFBMSUNBVElPTlMpICQoRU5BQkxFX1BBR0VfVklTSUJJTElUWV9BUEkpICQoRU5BQkxFX1BS
T0dSRVNTX1RBRykgJChFTkFCTEVfUkVHSVNURVJfUFJPVE9DT0xfSEFORExFUikgJChFTkFCTEVf
UVVPVEEpICQoRU5BQkxFX1NIQVJFRF9XT1JLRVJTKSAkKEVOQUJMRV9TVkcpICQoRU5BQkxFX1NW
R19BTklNQVRJT04pICQoRU5BQkxFX1NWR19BU19JTUFHRSkgJChFTkFCTEVfU1ZHX0RPTV9PQkpD
X0JJTkRJTkdTKSAkKEVOQUJMRV9TVkdfRk9OVFMpICQoRU5BQkxFX1NWR19GT1JFSUdOX09CSkVD
VCkgJChFTkFCTEVfU1ZHX1VTRSkgJChFTkFCTEVfVklERU8pICQoRU5BQkxFX1ZJREVPX1RSQUNL
KSAkKEVOQUJMRV9NRURJQV9TVEFUSVNUSUNTKSAkKEVOQUJMRV9XRUJfQVVESU8pICQoRU5BQkxF
X1dFQl9TT0NLRVRTKSAkKEVOQUJMRV9XRUJfVElNSU5HKSAkKEVOQUJMRV9XT1JLRVJTKSAkKEVO
QUJMRV9YSFRNTE1QKSAkKEVOQUJMRV9YUEFUSCkgJChFTkFCTEVfWFNMVCk7CitGRUFUVVJFX0RF
RklORVMgPSAkKEVOQUJMRV9MSU5LX1BSRUZFVENIKSAkKEVOQUJMRV9BQ0NFTEVSQVRFRF8yRF9D
QU5WQVMpICQoRU5BQkxFX1dFQkdMKSAkKEVOQUJMRV8zRF9SRU5ERVJJTkcpICQoRU5BQkxFX0FO
SU1BVElPTl9BUEkpICQoRU5BQkxFX0JMT0IpICQoRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HKSAk
KEVOQUJMRV9DTElFTlRfQkFTRURfR0VPTE9DQVRJT04pICQoRU5BQkxFX0RBVEFCQVNFKSAkKEVO
QUJMRV9EQVRBTElTVCkgJChFTkFCTEVfREFUQV9UUkFOU0ZFUl9JVEVNUykgJChFTkFCTEVfREVU
QUlMUykgJChFTkFCTEVfREVWSUNFX09SSUVOVEFUSU9OKSAkKEVOQUJMRV9ESVJFQ1RPUllfVVBM
T0FEKSAkKEVOQUJMRV9ET01fU1RPUkFHRSkgJChFTkFCTEVfRVZFTlRTT1VSQ0UpICQoRU5BQkxF
X0ZJTFRFUlMpICQoRU5BQkxFX0ZJTEVfU1lTVEVNKSAkKEVOQUJMRV9GVUxMU0NSRUVOX0FQSSkg
JChFTkFCTEVfR0VPTE9DQVRJT04pICQoRU5BQkxFX0lDT05EQVRBQkFTRSkgJChFTkFCTEVfSU5E
RVhFRF9EQVRBQkFTRSkgJChFTkFCTEVfSU5QVVRfU1BFRUNIKSAkKEVOQUJMRV9KQVZBU0NSSVBU
X0RFQlVHR0VSKSAkKEVOQUJMRV9NQVRITUwpICQoRU5BQkxFX01FVEVSX1RBRykgJChFTkFCTEVf
Tk9USUZJQ0FUSU9OUykgJChFTkFCTEVfT0ZGTElORV9XRUJfQVBQTElDQVRJT05TKSAkKEVOQUJM
RV9QQUdFX1ZJU0lCSUxJVFlfQVBJKSAkKEVOQUJMRV9QUk9HUkVTU19UQUcpICQoRU5BQkxFX1JF
R0lTVEVSX1BST1RPQ09MX0hBTkRMRVIpICQoRU5BQkxFX1FVT1RBKSAkKEVOQUJMRV9TSEFSRURf
V09SS0VSUykgJChFTkFCTEVfU1ZHKSAkKEVOQUJMRV9TVkdfQU5JTUFUSU9OKSAkKEVOQUJMRV9T
VkdfQVNfSU1BR0UpICQoRU5BQkxFX1NWR19ET01fT0JKQ19CSU5ESU5HUykgJChFTkFCTEVfU1ZH
X0ZPTlRTKSAkKEVOQUJMRV9TVkdfRk9SRUlHTl9PQkpFQ1QpICQoRU5BQkxFX1NWR19VU0UpICQo
RU5BQkxFX1RPVUNIX0lDT05fTE9BRElORykgJChFTkFCTEVfVklERU8pICQoRU5BQkxFX1ZJREVP
X1RSQUNLKSAkKEVOQUJMRV9NRURJQV9TVEFUSVNUSUNTKSAkKEVOQUJMRV9XRUJfQVVESU8pICQo
RU5BQkxFX1dFQl9TT0NLRVRTKSAkKEVOQUJMRV9XRUJfVElNSU5HKSAkKEVOQUJMRV9XT1JLRVJT
KSAkKEVOQUJMRV9YSFRNTE1QKSAkKEVOQUJMRV9YUEFUSCkgJChFTkFCTEVfWFNMVCk7CkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAkocmV2aXNpb24gODU2MzEpCisrKyBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDE4LDcgKzQxOCw3IEBAIHZvaWQgV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmUKICAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OkRpZFJlY2VpdmVUaXRsZUZvckZyYW1lKG1fZnJhbWUtPmZyYW1lSUQoKSwg
dGl0bGUuc3RyaW5nKCksIEluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VFbmNvZGVyKHVzZXJEYXRh
LmdldCgpKSkpOwogfQogCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENo
YW5nZUljb25zKCkKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ2hhbmdl
SWNvbnMoV2ViQ29yZTo6SWNvblR5cGUpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgJKHJldmlzaW9uIDg1NjMxKQorKysgU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC04NSw3ICs4NSw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUljb24oKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0
Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERp
ZFJlY2VpdmVUaXRsZShjb25zdCBXZWJDb3JlOjpTdHJpbmdXaXRoRGlyZWN0aW9uJik7Ci0gICAg
dmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoKTsKKyAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucyhXZWJDb3JlOjpJY29uVHlwZSk7CiAgICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoRGlkQ29tbWl0TG9hZCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERp
ZEZhaWxQcm92aXNpb25hbExvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwogICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxMb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
RXJyb3ImKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA4NTY1NCkK
KysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMTYgQEAKKzIwMTEtMDQtMjIgIFRhbyBCYWkgIDxtaWNoYWVsYmFpQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQb3B1
bGF0ZSB0b3VjaC1pY29uIHVybCB0byBGcmFtZUxvYWRlckNsaWVudAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTkxNDMKKworICAgICAgICBSZXNwZWN0
ZWQgdGhlIGNoYW5nZSBvZiBGcmFtZUxvYWRlckNsaWVudC4KKworICAgICAgICAqIHNyYy9GcmFt
ZUxvYWRlckNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVu
dEltcGw6OmRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMpOgorICAgICAgICAqIHNyYy9GcmFtZUxvYWRl
ckNsaWVudEltcGwuaDoKKwogMjAxMS0wNS0wMyAgSnVsaWVuIENoYWZmcmFpeCAgPGpjaGFmZnJh
aXhAY29kZWF1cm9yYS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGltaXRyaSBHbGF6a292
LgpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBs
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRl
ckNsaWVudEltcGwuY3BwCShyZXZpc2lvbiA4NTYzMSkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc4MCw3
ICs3ODAsNyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6ZGlzcGF0Y2hEaWRSCiAgICAg
ICAgIG1fd2ViRnJhbWUtPmNsaWVudCgpLT5kaWRSZWNlaXZlVGl0bGUobV93ZWJGcmFtZSwgdGl0
bGUuc3RyaW5nKCksIHRpdGxlLmRpcmVjdGlvbigpID09IExUUiA/IFdlYlRleHREaXJlY3Rpb25M
ZWZ0VG9SaWdodCA6IFdlYlRleHREaXJlY3Rpb25SaWdodFRvTGVmdCk7CiB9CiAKLXZvaWQgRnJh
bWVMb2FkZXJDbGllbnRJbXBsOjpkaXNwYXRjaERpZENoYW5nZUljb25zKCkKK3ZvaWQgRnJhbWVM
b2FkZXJDbGllbnRJbXBsOjpkaXNwYXRjaERpZENoYW5nZUljb25zKFdlYkNvcmU6Okljb25UeXBl
IHR5cGUpCiB7CiAgICAgaWYgKG1fd2ViRnJhbWUtPmNsaWVudCgpKQogICAgICAgICBtX3dlYkZy
YW1lLT5jbGllbnQoKS0+ZGlkQ2hhbmdlSWNvbnMobV93ZWJGcmFtZSk7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuaAkocmV2
aXNpb24gODU2MzEpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNs
aWVudEltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtMTA1LDcgKzEwNSw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbigpOwogICAgIHZpcnR1YWwgdm9p
ZCBkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCk7CiAgICAgdmlydHVhbCB2b2lkIGRp
c3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFdlYkNvcmU6OlN0cmluZ1dpdGhEaXJlY3Rpb24m
KTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygpOworICAgIHZpcnR1
YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZUljb25zKFdlYkNvcmU6Okljb25UeXBlKTsKICAgICB2
aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDb21taXRMb2FkKCk7CiAgICAgdmlydHVhbCB2b2lkIGRp
c3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9hZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9y
Jik7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbExvYWQoY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VFcnJvciYpOwpJbmRleDogU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwkocmV2aXNpb24gODU2NTQpCisr
KyBTb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
NiBAQAorMjAxMS0wNC0yMiAgVGFvIEJhaSAgPG1pY2hhZWxiYWlAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBvcHVsYXRlIHRv
dWNoLWljb24gdXJsIHRvIEZyYW1lTG9hZGVyQ2xpZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01OTE0MworCisgICAgICAgIFJlc3BlY3QgdGhlIGlu
dGVyZmFjZSBjaGFuZ2UgaW4gRnJhbWVMb2FkZXJDbGllbnQKKworICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
TG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERpZENoYW5nZUljb25zKToKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5oOgorCiAyMDExLTA1LTAzICBMZWFuZHJv
IFBlcmVpcmEgIDxsZWFuZHJvQHByb2Z1c2lvbi5tb2JpPgogCiAgICAgICAgIFtFRkxdIFVucmV2
aWV3ZWQgYnVpbGQgZml4IGZvciBORVRXT1JLX0JBQ0tFTkQ9Y3VybC4KSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVu
dEVmbC5jcHAJKHJldmlzaW9uIDg1NjMxKQorKysgU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1
cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01ODcsNyAr
NTg3LDcgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hEaWRSZQogICAgIGV3
a192aWV3X3RpdGxlX3NldChtX3ZpZXcsIGNzLmRhdGEoKSk7CiB9CiAKLXZvaWQgRnJhbWVMb2Fk
ZXJDbGllbnRFZmw6OmRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoKQordm9pZCBGcmFtZUxvYWRlckNs
aWVudEVmbDo6ZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucyhXZWJDb3JlOjpJY29uVHlwZSkKIHsKICAg
ICBub3RJbXBsZW1lbnRlZCgpOwogfQpJbmRleDogU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1
cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5oCShyZXZpc2lvbiA4NTYz
MSkKKysrIFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50
RWZsLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwMyw3ICsxMDMsNyBAQCBjbGFzcyBGcmFtZUxvYWRl
ckNsaWVudEVmbCA6IHB1YmxpYyBGcmFtCiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVj
ZWl2ZUljb24oKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFs
TG9hZCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBT
dHJpbmdXaXRoRGlyZWN0aW9uJik7Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdl
SWNvbnMoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucyhXZWJDb3Jl
OjpJY29uVHlwZSk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ29tbWl0TG9hZCgpOwog
ICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxQcm92aXNpb25hbExvYWQoY29uc3QgUmVz
b3VyY2VFcnJvciYpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxMb2FkKGNvbnN0
IFJlc291cmNlRXJyb3ImKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cJKHJldmlzaW9uIDg1NjU0KQor
KysgU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MTYgQEAKKzIwMTEtMDQtMjIgIFRhbyBCYWkgIDxtaWNoYWVsYmFpQGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQb3B1bGF0ZSB0
b3VjaC1pY29uIHVybCB0byBGcmFtZUxvYWRlckNsaWVudAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTkxNDMKKworICAgICAgICBSZXNwZWN0IHRoZSBp
bnRlcmZhY2UgY2hhbmdlIGluIEZyYW1lTG9hZGVyQ2xpZW50LgorCisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpGcmFt
ZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucyk6CisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuaDoKKwogMjAxMS0wNS0wMyAgSnVsaWVuIENo
YWZmcmFpeCAgPGpjaGFmZnJhaXhAY29kZWF1cm9yYS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgRGltaXRyaSBHbGF6a292LgpJbmRleDogU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBv
cnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
Z3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAkocmV2aXNpb24gODU2
MzEpCisrKyBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVu
dEd0ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk2OSw3ICs5NjksNyBAQCB2b2lkIEZyYW1lTG9h
ZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJlY2VpCiAgICAgfQogfQogCi12b2lkIEZyYW1lTG9hZGVy
Q2xpZW50OjpkaXNwYXRjaERpZENoYW5nZUljb25zKCkKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6
OmRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoV2ViQ29yZTo6SWNvblR5cGUpCiB7CiAgICAgbm90SW1w
bGVtZW50ZWQoKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Zy
YW1lTG9hZGVyQ2xpZW50R3RrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9ndGsvV2Vi
Q29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuaAkocmV2aXNpb24gODU2MzEpCisrKyBT
b3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5oCSh3
b3JraW5nIGNvcHkpCkBAIC04Miw3ICs4Miw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogICAgICAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbigpOwogICAgICAgICB2aXJ0dWFs
IHZvaWQgZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpOwogICAgICAgICB2aXJ0dWFs
IHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgV2ViQ29yZTo6U3RyaW5nV2l0aERp
cmVjdGlvbiYpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygp
OworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucyhXZWJDb3JlOjpJ
Y29uVHlwZSk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENvbW1pdExvYWQoKTsK
ICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9hZChjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRj
aERpZEZhaWxMb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDg1NjU0KQorKysgU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTEtMDQtMjIgIFRhbyBCYWkgIDxt
aWNoYWVsYmFpQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBQb3B1bGF0ZSB0b3VjaC1pY29uIHVybCB0byBGcmFtZUxvYWRlckNs
aWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTkx
NDMKKworICAgICAgICBSZXNwZWN0IHRoZSBpbnRlcmZhY2UgY2hhbmdlIGluIEZyYW1lTG9hZGVy
Q2xpZW50LgorCisgICAgICAgICogQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25m
aWc6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbToKKyAgICAgICAg
KFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENoYW5nZUljb25zKToKKwogMjAxMS0w
NS0wMyAgSnVsaWVuIENoYWZmcmFpeCAgPGpjaGFmZnJhaXhAY29kZWF1cm9yYS5vcmc+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgRGltaXRyaSBHbGF6a292LgpJbmRleDogU291cmNlL1dlYktpdC9t
YWMvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9tYWMvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcJ
KHJldmlzaW9uIDg1NjMxKQorKysgU291cmNlL1dlYktpdC9tYWMvQ29uZmlndXJhdGlvbnMvRmVh
dHVyZURlZmluZXMueGNjb25maWcJKHdvcmtpbmcgY29weSkKQEAgLTExOCw2ICsxMTgsOCBAQCBF
TkFCTEVfVklERU9fVFJBQ0sgPSA7CiAKIEVOQUJMRV9NRURJQV9TVEFUSVNUSUNTID0gOwogCitF
TkFCTEVfVE9VQ0hfSUNPTl9MT0FESU5HID0gOworCiBFTkFCTEVfV0VCX0FVRElPID0gOwogCiBF
TkFCTEVfV0VCX1NPQ0tFVFMgPSAkKEVOQUJMRV9XRUJfU09DS0VUU18kKFJFQUxfUExBVEZPUk1f
TkFNRSkpOwpAQCAtMTMyLDQgKzEzNCw0IEBAIEVOQUJMRV9YSFRNTE1QID0gOwogRU5BQkxFX1hQ
QVRIID0gRU5BQkxFX1hQQVRIOwogRU5BQkxFX1hTTFQgPSBFTkFCTEVfWFNMVDsKIAotRkVBVFVS
RV9ERUZJTkVTID0gJChFTkFCTEVfTElOS19QUkVGRVRDSCkgJChFTkFCTEVfQUNDRUxFUkFURURf
MkRfQ0FOVkFTKSAkKEVOQUJMRV9XRUJHTCkgJChFTkFCTEVfM0RfUkVOREVSSU5HKSAkKEVOQUJM
RV9BTklNQVRJT05fQVBJKSAkKEVOQUJMRV9CTE9CKSAkKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lO
RykgJChFTkFCTEVfQ0xJRU5UX0JBU0VEX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9EQVRBQkFTRSkg
JChFTkFCTEVfREFUQUxJU1QpICQoRU5BQkxFX0RBVEFfVFJBTlNGRVJfSVRFTVMpICQoRU5BQkxF
X0RFVEFJTFMpICQoRU5BQkxFX0RFVklDRV9PUklFTlRBVElPTikgJChFTkFCTEVfRElSRUNUT1JZ
X1VQTE9BRCkgJChFTkFCTEVfRE9NX1NUT1JBR0UpICQoRU5BQkxFX0VWRU5UU09VUkNFKSAkKEVO
QUJMRV9GSUxURVJTKSAkKEVOQUJMRV9GSUxFX1NZU1RFTSkgJChFTkFCTEVfRlVMTFNDUkVFTl9B
UEkpICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9JQ09OREFUQUJBU0UpICQoRU5BQkxF
X0lOREVYRURfREFUQUJBU0UpICQoRU5BQkxFX0lOUFVUX1NQRUVDSCkgJChFTkFCTEVfSkFWQVND
UklQVF9ERUJVR0dFUikgJChFTkFCTEVfTUFUSE1MKSAkKEVOQUJMRV9NRVRFUl9UQUcpICQoRU5B
QkxFX05PVElGSUNBVElPTlMpICQoRU5BQkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUykgJChF
TkFCTEVfUEFHRV9WSVNJQklMSVRZX0FQSSkgJChFTkFCTEVfUFJPR1JFU1NfVEFHKSAkKEVOQUJM
RV9SRUdJU1RFUl9QUk9UT0NPTF9IQU5ETEVSKSAkKEVOQUJMRV9RVU9UQSkgJChFTkFCTEVfU0hB
UkVEX1dPUktFUlMpICQoRU5BQkxFX1NWRykgJChFTkFCTEVfU1ZHX0FOSU1BVElPTikgJChFTkFC
TEVfU1ZHX0FTX0lNQUdFKSAkKEVOQUJMRV9TVkdfRE9NX09CSkNfQklORElOR1MpICQoRU5BQkxF
X1NWR19GT05UUykgJChFTkFCTEVfU1ZHX0ZPUkVJR05fT0JKRUNUKSAkKEVOQUJMRV9TVkdfVVNF
KSAkKEVOQUJMRV9WSURFTykgJChFTkFCTEVfVklERU9fVFJBQ0spICQoRU5BQkxFX01FRElBX1NU
QVRJU1RJQ1MpICQoRU5BQkxFX1dFQl9BVURJTykgJChFTkFCTEVfV0VCX1NPQ0tFVFMpICQoRU5B
QkxFX1dFQl9USU1JTkcpICQoRU5BQkxFX1dPUktFUlMpICQoRU5BQkxFX1hIVE1MTVApICQoRU5B
QkxFX1hQQVRIKSAkKEVOQUJMRV9YU0xUKTsKK0ZFQVRVUkVfREVGSU5FUyA9ICQoRU5BQkxFX0xJ
TktfUFJFRkVUQ0gpICQoRU5BQkxFX0FDQ0VMRVJBVEVEXzJEX0NBTlZBUykgJChFTkFCTEVfV0VC
R0wpICQoRU5BQkxFXzNEX1JFTkRFUklORykgJChFTkFCTEVfQU5JTUFUSU9OX0FQSSkgJChFTkFC
TEVfQkxPQikgJChFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcpICQoRU5BQkxFX0NMSUVOVF9CQVNF
RF9HRU9MT0NBVElPTikgJChFTkFCTEVfREFUQUJBU0UpICQoRU5BQkxFX0RBVEFMSVNUKSAkKEVO
QUJMRV9EQVRBX1RSQU5TRkVSX0lURU1TKSAkKEVOQUJMRV9ERVRBSUxTKSAkKEVOQUJMRV9ERVZJ
Q0VfT1JJRU5UQVRJT04pICQoRU5BQkxFX0RJUkVDVE9SWV9VUExPQUQpICQoRU5BQkxFX0RPTV9T
VE9SQUdFKSAkKEVOQUJMRV9FVkVOVFNPVVJDRSkgJChFTkFCTEVfRklMVEVSUykgJChFTkFCTEVf
RklMRV9TWVNURU0pICQoRU5BQkxFX0ZVTExTQ1JFRU5fQVBJKSAkKEVOQUJMRV9HRU9MT0NBVElP
TikgJChFTkFCTEVfSUNPTkRBVEFCQVNFKSAkKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFKSAkKEVO
QUJMRV9JTlBVVF9TUEVFQ0gpICQoRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIpICQoRU5BQkxF
X01BVEhNTCkgJChFTkFCTEVfTUVURVJfVEFHKSAkKEVOQUJMRV9OT1RJRklDQVRJT05TKSAkKEVO
QUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpICQoRU5BQkxFX1BBR0VfVklTSUJJTElUWV9B
UEkpICQoRU5BQkxFX1BST0dSRVNTX1RBRykgJChFTkFCTEVfUkVHSVNURVJfUFJPVE9DT0xfSEFO
RExFUikgJChFTkFCTEVfUVVPVEEpICQoRU5BQkxFX1NIQVJFRF9XT1JLRVJTKSAkKEVOQUJMRV9T
VkcpICQoRU5BQkxFX1NWR19BTklNQVRJT04pICQoRU5BQkxFX1NWR19BU19JTUFHRSkgJChFTkFC
TEVfU1ZHX0RPTV9PQkpDX0JJTkRJTkdTKSAkKEVOQUJMRV9TVkdfRk9OVFMpICQoRU5BQkxFX1NW
R19GT1JFSUdOX09CSkVDVCkgJChFTkFCTEVfU1ZHX1VTRSkgJChFTkFCTEVfVE9VQ0hfSUNPTl9M
T0FESU5HKSAkKEVOQUJMRV9WSURFTykgJChFTkFCTEVfVklERU9fVFJBQ0spICQoRU5BQkxFX01F
RElBX1NUQVRJU1RJQ1MpICQoRU5BQkxFX1dFQl9BVURJTykgJChFTkFCTEVfV0VCX1NPQ0tFVFMp
ICQoRU5BQkxFX1dFQl9USU1JTkcpICQoRU5BQkxFX1dPUktFUlMpICQoRU5BQkxFX1hIVE1MTVAp
ICQoRU5BQkxFX1hQQVRIKSAkKEVOQUJMRV9YU0xUKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAkocmV2
aXNpb24gODU2MzEpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDIsNyArMTAyLDcgQEAgcHJpdmF0
ZToKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbigpOwogICAgIHZpcnR1
YWwgdm9pZCBkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCk7CiAgICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFdlYkNvcmU6OlN0cmluZ1dpdGhEaXJl
Y3Rpb24mKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygpOworICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZUljb25zKFdlYkNvcmU6Okljb25UeXBlKTsK
ICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDb21taXRMb2FkKCk7CiAgICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9hZChjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yJik7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbExvYWQoY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvciYpOwpJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0JKHJldmlzaW9uIDg1
NjMxKQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTYzMyw3ICs2MzMsNyBAQCB2b2lkIFdlYkZyYW1l
TG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJlCiAgICAgICAgIENhbGxGcmFtZUxvYWREZWxlZ2F0
ZShpbXBsZW1lbnRhdGlvbnMtPmRpZFJlY2VpdmVUaXRsZUZvckZyYW1lRnVuYywgd2ViVmlldywg
QHNlbGVjdG9yKHdlYlZpZXc6ZGlkUmVjZWl2ZVRpdGxlOmZvckZyYW1lOiksIChOU1N0cmluZyAq
KXRpdGxlLnN0cmluZygpLCBtX3dlYkZyYW1lLmdldCgpKTsKIH0KIAotdm9pZCBXZWJGcmFtZUxv
YWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygpCit2b2lkIFdlYkZyYW1lTG9hZGVy
Q2xpZW50OjpkaXNwYXRjaERpZENoYW5nZUljb25zKFdlYkNvcmU6Okljb25UeXBlKQogewogICAg
ICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMgdG8gYWxsb3cgY29udGFpbmVyIHRvIHVwZGF0ZSBm
YXZpY29uLgogfQpJbmRleDogU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDg1NjU0KQorKysgU291cmNl
L1dlYktpdC9xdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAx
MS0wNC0yMiAgVGFvIEJhaSAgPG1pY2hhZWxiYWlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBvcHVsYXRlIHRvdWNoLWljb24g
dXJsIHRvIEZyYW1lTG9hZGVyQ2xpZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD01OTE0MworCisgICAgICAgIFJlc3BlY3QgdGhlIGludGVyZmFjZSBj
aGFuZ2UgaW4gRnJhbWVMb2FkZXJDbGllbnQuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9G
cmFtZUxvYWRlckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xp
ZW50UXQ6OmRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaDoKKwogMjAxMS0wNS0wMyAgSnVsaWVuIENoYWZmcmFpeCAg
PGpjaGFmZnJhaXhAY29kZWF1cm9yYS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGltaXRy
aSBHbGF6a292LgpJbmRleDogU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxv
YWRlckNsaWVudFF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVT
dXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwCShyZXZpc2lvbiA4NTYzMSkKKysrIFNvdXJj
ZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQ1OSw3ICs0NTksNyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRp
c3BhdGNoRGlkUmVjCiB9CiAKIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERp
ZENoYW5nZUljb25zKCkKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hEaWRDaGFu
Z2VJY29ucyhXZWJDb3JlOjpJY29uVHlwZSkKIHsKICAgICBpZiAoZHVtcEZyYW1lTG9hZGVyQ2Fs
bGJhY2tzKQogICAgICAgICBwcmludGYoIiVzIC0gZGlkQ2hhbmdlSWNvbnNcbiIsIHFQcmludGFi
bGUoZHJ0RGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHQobV9mcmFtZSkpKTsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJD
bGllbnRRdC5oCShyZXZpc2lvbiA4NTYzMSkKKysrIFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1
cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTEsNyArMTEx
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVJY29uKCk7
CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkU3RhcnRQcm92aXNpb25hbExvYWQoKTsKICAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgU3RyaW5nV2l0aERp
cmVjdGlvbiYpOwotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZUljb25zKCk7Cisg
ICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoV2ViQ29yZTo6SWNvblR5cGUp
OwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENvbW1pdExvYWQoKTsKICAgICB2aXJ0dWFs
IHZvaWQgZGlzcGF0Y2hEaWRGYWlsUHJvdmlzaW9uYWxMb2FkKGNvbnN0IFJlc291cmNlRXJyb3Im
KTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGYWlsTG9hZChjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yJik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCShyZXZpc2lvbiA4NTY1NCkKKysr
IFNvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2
IEBACisyMDExLTA0LTIyICBUYW8gQmFpICA8bWljaGFlbGJhaUBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUG9wdWxhdGUgdG91
Y2gtaWNvbiB1cmwgdG8gRnJhbWVMb2FkZXJDbGllbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU5MTQzCisKKyAgICAgICAgUmVzcGVjdCB0aGUgaW50
ZXJmYWNlIGNoYW5nZSBpbiBGcmFtZUxvYWRlckNsaWVudC4KKworICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVy
Q2xpZW50OjpkaXNwYXRjaERpZENoYW5nZUljb25zKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5oOgorCiAyMDExLTA1LTAzICBBZGFtIFJvYmVuICA8YXJv
YmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggbW9zdCBzdHJpY3QgUGFzc093blB0ciB2aW9s
YXRpb25zIG9uIFdpbmRvd3MKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAJKHJldmlzaW9uIDg1NjMx
KQorKysgU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNzMsOCArMzczLDExIEBAIHZvaWQgV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmUKICAgICAgICAgZnJhbWVMb2FkRGVsZWdhdGUtPmRp
ZFJlY2VpdmVUaXRsZSh3ZWJWaWV3LCBCU3RyaW5nKHRpdGxlLnN0cmluZygpKSwgbV93ZWJGcmFt
ZSk7CiB9CiAKLXZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ2hhbmdlSWNv
bnMoKQordm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucyhX
ZWJDb3JlOjpJY29uVHlwZSB0eXBlKQogeworICAgIGlmICh0eXBlICE9IFdlYkNvcmU6OkZhdmlj
b24pCisgICAgICAgIHJldHVybjsKKwogICAgIFdlYlZpZXcqIHdlYlZpZXcgPSBtX3dlYkZyYW1l
LT53ZWJWaWV3KCk7CiAgICAgQ09NUHRyPElXZWJGcmFtZUxvYWREZWxlZ2F0ZVByaXZhdGU+IGZy
YW1lTG9hZERlbGVnYXRlUHJpdjsKICAgICBpZiAoRkFJTEVEKHdlYlZpZXctPmZyYW1lTG9hZERl
bGVnYXRlUHJpdmF0ZSgmZnJhbWVMb2FkRGVsZWdhdGVQcml2KSkgfHwgIWZyYW1lTG9hZERlbGVn
YXRlUHJpdikKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAkocmV2aXNpb24gODU2MzEpCisrKyBTb3VyY2Uv
V2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCSh3b3JraW5n
IGNvcHkpCkBAIC03MCw3ICs3MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0
Y2hEaWRSZWNlaXZlSWNvbigpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFN0YXJ0UHJv
dmlzaW9uYWxMb2FkKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxl
KGNvbnN0IFdlYkNvcmU6OlN0cmluZ1dpdGhEaXJlY3Rpb24mKTsKLSAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygpOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENo
YW5nZUljb25zKFdlYkNvcmU6Okljb25UeXBlKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hE
aWRDb21taXRMb2FkKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmluaXNoRG9jdW1l
bnRMb2FkKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmluaXNoTG9hZCgpOwpJbmRl
eDogU291cmNlL1dlYktpdC93aW5jZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC93aW5jZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg1NjU0KQorKysgU291cmNlL1dlYktpdC93
aW5jZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAxMS0wNC0y
MiAgVGFvIEJhaSAgPG1pY2hhZWxiYWlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBvcHVsYXRlIHRvdWNoLWljb24gdXJsIHRv
IEZyYW1lTG9hZGVyQ2xpZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD01OTE0MworCisgICAgICAgIFJlc3BlY3QgdGhlIGludGVyZmFjZSBjaGFuZ2Ug
aW4gRnJhbWVMb2FkZXJDbGllbnQuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxv
YWRlckNsaWVudFdpbkNFLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnRX
aW5DRTo6ZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucyk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
RnJhbWVMb2FkZXJDbGllbnRXaW5DRS5oOgorCiAyMDExLTA1LTAxICBQYXRyaWNrIEdhbnN0ZXJl
ciAgPHBhcm9nYUB3ZWJraXQub3JnPgogCiAgICAgICAgIFtXSU5dIFVucmV2aWV3ZWQgYnVpbGRm
aXggYWZ0ZXIgcjg1NDM0LgpJbmRleDogU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9y
dC9GcmFtZUxvYWRlckNsaWVudFdpbkNFLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V2luQ0UuY3BwCShyZXZpc2lv
biA4NTYzMSkKKysrIFNvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2Fk
ZXJDbGllbnRXaW5DRS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3Niw3ICszNzYsNyBAQCB2b2lk
IEZyYW1lTG9hZGVyQ2xpZW50V2luQ0U6OmRpc3BhdGNoRGlkCiAgICAgbm90SW1wbGVtZW50ZWQo
KTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudFdpbkNFOjpkaXNwYXRjaERpZENoYW5nZUlj
b25zKCkKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRXaW5DRTo6ZGlzcGF0Y2hEaWRDaGFuZ2VJY29u
cyhXZWJDb3JlOjpJY29uVHlwZSkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQpJbmRleDog
U291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFdpbkNF
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9GcmFt
ZUxvYWRlckNsaWVudFdpbkNFLmgJKHJldmlzaW9uIDg1NjMxKQorKysgU291cmNlL1dlYktpdC93
aW5jZS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFdpbkNFLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTc3LDcgKzc3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERp
ZFJlY2VpdmVJY29uKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkU3RhcnRQcm92aXNp
b25hbExvYWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29u
c3QgV2ViQ29yZTo6U3RyaW5nV2l0aERpcmVjdGlvbiYpOwotICAgIHZpcnR1YWwgdm9pZCBkaXNw
YXRjaERpZENoYW5nZUljb25zKCk7CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdl
SWNvbnMoV2ViQ29yZTo6SWNvblR5cGUpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENv
bW1pdExvYWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGYWlsUHJvdmlzaW9uYWxM
b2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlz
cGF0Y2hEaWRGYWlsTG9hZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CkluZGV4OiBT
b3VyY2UvV2ViS2l0L3d4L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3d4
L0NoYW5nZUxvZwkocmV2aXNpb24gODU2NTQpCisrKyBTb3VyY2UvV2ViS2l0L3d4L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDExLTA0LTIyICBUYW8gQmFpICA8
bWljaGFlbGJhaUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgUG9wdWxhdGUgdG91Y2gtaWNvbiB1cmwgdG8gRnJhbWVMb2FkZXJD
bGllbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU5
MTQzCisKKyAgICAgICAgUmVzcGVjdCB0aGUgaW50ZXJmYWNlIGNoYW5nZSBpbiBGcmFtZUxvYWRl
ckNsaWVudC4KKworICAgICAgICAqIFdlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFd4OjpkaXNwYXRjaERpZENo
YW5nZUljb25zKToKKyAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3gu
aDoKKwogMjAxMS0wNC0yMyAgS2V2aW4gT2xsaXZpZXIgIDxrZXZpbm9AdGhlb2xsaXZpZXJzLmNv
bT4KIAogICAgICAgICBbd3hdIFVucmV2aWV3ZWQgYnVpbGQgZml4LiBGaXhlZCBjYXBpdGFsaXph
dGlvbiBmb3IgY2FzZSBzZW5zaXRpdmUgZmlsZXN5c3RlbXMuCkluZGV4OiBTb3VyY2UvV2ViS2l0
L3d4L1dlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guY3BwCShy
ZXZpc2lvbiA4NTYzMSkKKysrIFNvdXJjZS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9GcmFtZUxv
YWRlckNsaWVudFd4LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzI3LDcgKzMyNyw3IEBAIHZvaWQg
RnJhbWVMb2FkZXJDbGllbnRXeDo6ZGlzcGF0Y2hEaWRGaW4KICAgICB9CiB9CiAKLXZvaWQgRnJh
bWVMb2FkZXJDbGllbnRXeDo6ZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygpCit2b2lkIEZyYW1lTG9h
ZGVyQ2xpZW50V3g6OmRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoV2ViQ29yZTo6SWNvblR5cGUpCiB7
CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvd3gvV2ViS2l0
U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFd4LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC93eC9XZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guaAkocmV2aXNpb24gODU2MzEp
CisrKyBTb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDksNyArMTA5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGaW5pc2hMb2FkKCk7CiAgICAgICAgIHZp
cnR1YWwgdm9pZCBkaXNwYXRjaERpZEZpcnN0TGF5b3V0KCk7CiAgICAgICAgIHZpcnR1YWwgdm9p
ZCBkaXNwYXRjaERpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dCgpOwotICAgICAgICB2aXJ0
dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygpOworICAgICAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucyhXZWJDb3JlOjpJY29uVHlwZSk7CiAKICAgICAgICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoU2hvdygpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsUG9s
aWN5Q2hlY2soKTsKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDg1NjU0KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMDUtMDMgIFRhbyBCYWkgIDxtaWNoYWVsYmFpQGNo
cm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBQb3B1bGF0ZSB0b3VjaC1pY29uIHVybCB0byBGcmFtZUxvYWRlckNsaWVudAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTkxNDMKKworICAgICAg
ICBEaXNhYmxlIHRvdWNoIGljb24gYnkgZGVmYXVsdC4gCisKKyAgICAgICAgKiBTY3JpcHRzL2J1
aWxkLXdlYmtpdDoKKwogMjAxMS0wNS0wMyAgQWRhbSBSb2JlbiAgPGFyb2JlbkBhcHBsZS5jb20+
CiAKICAgICAgICAgRml4IG1vc3Qgc3RyaWN0IFBhc3NPd25QdHIgdmlvbGF0aW9ucyBvbiBXaW5k
b3dzCkluZGV4OiBUb29scy9TY3JpcHRzL2J1aWxkLXdlYmtpdAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9TY3JpcHRzL2J1aWxkLXdlYmtpdAkocmV2aXNpb24gODU2MzEpCisrKyBUb29scy9TY3JpcHRz
L2J1aWxkLXdlYmtpdAkod29ya2luZyBjb3B5KQpAQCAtMTEyLDYgKzExMiw3IEBAIG15ICgKICAg
ICAkc3lzdGVtTWFsbG9jU3VwcG9ydCwKICAgICAkdGlsZWRCYWNraW5nU3RvcmVTdXBwb3J0LAog
ICAgICR0b3VjaEV2ZW50c1N1cHBvcnQsCisgICAgJHRvdWNoSWNvbkxvYWRpbmdTdXBwb3J0LAog
ICAgICR2aWRlb1N1cHBvcnQsCiAgICAgJHdjc3NTdXBwb3J0LAogICAgICR3ZWJBdWRpb1N1cHBv
cnQsCkBAIC0yNzIsNiArMjczLDkgQEAgbXkgQGZlYXR1cmVzID0gKAogICAgIHsgb3B0aW9uID0+
ICJ0b3VjaC1ldmVudHMiLCBkZXNjID0+ICJUb2dnbGUgVG91Y2ggRXZlbnRzIHN1cHBvcnQiLAog
ICAgICAgZGVmaW5lID0+ICJFTkFCTEVfVE9VQ0hfRVZFTlRTIiwgZGVmYXVsdCA9PiBpc1F0KCks
IHZhbHVlID0+IFwkdG91Y2hFdmVudHNTdXBwb3J0IH0sCiAKKyAgICB7IG9wdGlvbiA9PiAidG91
Y2gtaWNvbi1sb2FkaW5nIiwgZGVzYyA9PiAiVG9nZ2xlIFRvdWNoIEljb24gTG9hZGluZyBTdXBw
b3J0IiwKKyAgICAgIGRlZmluZSA9PiAiRU5BQkxFX1RPVUNIX0lDT05fTE9BRElORyIsIGRlZmF1
bHQgPT4gMCwgdmFsdWUgPT4gXCR0b3VjaEljb25Mb2FkaW5nU3VwcG9ydCB9LAorCiAgICAgeyBv
cHRpb24gPT4gInZpZGVvIiwgZGVzYyA9PiAiVG9nZ2xlIFZpZGVvIHN1cHBvcnQiLAogICAgICAg
ZGVmaW5lID0+ICJFTkFCTEVfVklERU8iLCBkZWZhdWx0ID0+IChpc0FwcGxlV2ViS2l0KCkgfHwg
aXNHdGsoKSksIHZhbHVlID0+IFwkdmlkZW9TdXBwb3J0IH0sCiAK
</data>
<flag name="review"
          id="85086"
          type_id="1"
          status="+"
          setter="ddkilzer"
    />
    <flag name="commit-queue"
          id="85094"
          type_id="3"
          status="-"
          setter="ddkilzer"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>92166</attachid>
            <date>2011-05-03 16:46:19 -0700</date>
            <delta_ts>2011-05-03 16:57:20 -0700</delta_ts>
            <desc>Try to fix the build error</desc>
            <filename>patch.10</filename>
            <type>text/plain</type>
            <size>66928</size>
            <attacher>michaelbai</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gODU2NTQpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMTEtMDUtMDMgIFRhbyBCYWkgIDxtaWNoYWVsYmFpQGNocm9taXVtLm9yZz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQb3B1bGF0ZSB0b3VjaC1p
Y29uIHVybCB0byBGcmFtZUxvYWRlckNsaWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTkxNDMKKworICAgICAgICBSZXNwZWN0IHRoZSBpbnRlcmZh
Y2UgY2hhbmdlIGluIEZyYW1lTG9hZGVyQ2xpZW50LgorCisgICAgICAgICogQ29uZmlndXJhdGlv
bnMvRmVhdHVyZURlZmluZXMueGNjb25maWc6CisKIDIwMTEtMDUtMDMgIFhhbiBMb3BleiAgPHhs
b3BlekBpZ2FsaWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFuZGVycyBDYXJsc3Nvbi4K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5l
cy54Y2NvbmZpZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ29uZmlndXJh
dGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcJKHJldmlzaW9uIDg1NjMxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCSh3
b3JraW5nIGNvcHkpCkBAIC0xMTcsNiArMTE3LDggQEAgRU5BQkxFX1ZJREVPX1RSQUNLID0gOwog
CiBFTkFCTEVfTUVESUFfU1RBVElTVElDUyA9IDsKIAorRU5BQkxFX1RPVUNIX0lDT05fTE9BRElO
RyA9IDsKKwogRU5BQkxFX1dFQl9BVURJTyA9IDsKIAogRU5BQkxFX1dFQl9TT0NLRVRTID0gJChF
TkFCTEVfV0VCX1NPQ0tFVFNfJChSRUFMX1BMQVRGT1JNX05BTUUpKTsKQEAgLTEzMSw0ICsxMzMs
NCBAQCBFTkFCTEVfWEhUTUxNUCA9IDsKIEVOQUJMRV9YUEFUSCA9IEVOQUJMRV9YUEFUSDsKIEVO
QUJMRV9YU0xUID0gRU5BQkxFX1hTTFQ7CiAKLUZFQVRVUkVfREVGSU5FUyA9ICQoRU5BQkxFX0xJ
TktfUFJFRkVUQ0gpICQoRU5BQkxFX0FDQ0VMRVJBVEVEXzJEX0NBTlZBUykgJChFTkFCTEVfV0VC
R0wpICQoRU5BQkxFXzNEX1JFTkRFUklORykgJChFTkFCTEVfQU5JTUFUSU9OX0FQSSkgJChFTkFC
TEVfQkxPQikgJChFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcpICQoRU5BQkxFX0NMSUVOVF9CQVNF
RF9HRU9MT0NBVElPTikgJChFTkFCTEVfREFUQUJBU0UpICQoRU5BQkxFX0RBVEFMSVNUKSAkKEVO
QUJMRV9EQVRBX1RSQU5TRkVSX0lURU1TKSAkKEVOQUJMRV9ERVRBSUxTKSAkKEVOQUJMRV9ERVZJ
Q0VfT1JJRU5UQVRJT04pICQoRU5BQkxFX0RJUkVDVE9SWV9VUExPQUQpICQoRU5BQkxFX0RPTV9T
VE9SQUdFKSAkKEVOQUJMRV9FVkVOVFNPVVJDRSkgJChFTkFCTEVfRklMVEVSUykgJChFTkFCTEVf
RklMRV9TWVNURU0pICQoRU5BQkxFX0ZVTExTQ1JFRU5fQVBJKSAkKEVOQUJMRV9HRU9MT0NBVElP
TikgJChFTkFCTEVfSUNPTkRBVEFCQVNFKSAkKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFKSAkKEVO
QUJMRV9JTlBVVF9TUEVFQ0gpICQoRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIpICQoRU5BQkxF
X01BVEhNTCkgJChFTkFCTEVfTUVURVJfVEFHKSAkKEVOQUJMRV9OT1RJRklDQVRJT05TKSAkKEVO
QUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpICQoRU5BQkxFX1BBR0VfVklTSUJJTElUWV9B
UEkpICQoRU5BQkxFX1BST0dSRVNTX1RBRykgJChFTkFCTEVfUkVHSVNURVJfUFJPVE9DT0xfSEFO
RExFUikgJChFTkFCTEVfUVVPVEEpICQoRU5BQkxFX1NIQVJFRF9XT1JLRVJTKSAkKEVOQUJMRV9T
VkcpICQoRU5BQkxFX1NWR19BTklNQVRJT04pICQoRU5BQkxFX1NWR19BU19JTUFHRSkgJChFTkFC
TEVfU1ZHX0RPTV9PQkpDX0JJTkRJTkdTKSAkKEVOQUJMRV9TVkdfRk9OVFMpICQoRU5BQkxFX1NW
R19GT1JFSUdOX09CSkVDVCkgJChFTkFCTEVfU1ZHX1VTRSkgJChFTkFCTEVfVklERU8pICQoRU5B
QkxFX1ZJREVPX1RSQUNLKSAkKEVOQUJMRV9NRURJQV9TVEFUSVNUSUNTKSAkKEVOQUJMRV9XRUJf
QVVESU8pICQoRU5BQkxFX1dFQl9TT0NLRVRTKSAkKEVOQUJMRV9XRUJfVElNSU5HKSAkKEVOQUJM
RV9XT1JLRVJTKSAkKEVOQUJMRV9YSFRNTE1QKSAkKEVOQUJMRV9YUEFUSCkgJChFTkFCTEVfWFNM
VCk7CitGRUFUVVJFX0RFRklORVMgPSAkKEVOQUJMRV9MSU5LX1BSRUZFVENIKSAkKEVOQUJMRV9B
Q0NFTEVSQVRFRF8yRF9DQU5WQVMpICQoRU5BQkxFX1dFQkdMKSAkKEVOQUJMRV8zRF9SRU5ERVJJ
TkcpICQoRU5BQkxFX0FOSU1BVElPTl9BUEkpICQoRU5BQkxFX0JMT0IpICQoRU5BQkxFX0NIQU5O
RUxfTUVTU0FHSU5HKSAkKEVOQUJMRV9DTElFTlRfQkFTRURfR0VPTE9DQVRJT04pICQoRU5BQkxF
X0RBVEFCQVNFKSAkKEVOQUJMRV9EQVRBTElTVCkgJChFTkFCTEVfREFUQV9UUkFOU0ZFUl9JVEVN
UykgJChFTkFCTEVfREVUQUlMUykgJChFTkFCTEVfREVWSUNFX09SSUVOVEFUSU9OKSAkKEVOQUJM
RV9ESVJFQ1RPUllfVVBMT0FEKSAkKEVOQUJMRV9ET01fU1RPUkFHRSkgJChFTkFCTEVfRVZFTlRT
T1VSQ0UpICQoRU5BQkxFX0ZJTFRFUlMpICQoRU5BQkxFX0ZJTEVfU1lTVEVNKSAkKEVOQUJMRV9G
VUxMU0NSRUVOX0FQSSkgJChFTkFCTEVfR0VPTE9DQVRJT04pICQoRU5BQkxFX0lDT05EQVRBQkFT
RSkgJChFTkFCTEVfSU5ERVhFRF9EQVRBQkFTRSkgJChFTkFCTEVfSU5QVVRfU1BFRUNIKSAkKEVO
QUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSKSAkKEVOQUJMRV9NQVRITUwpICQoRU5BQkxFX01FVEVS
X1RBRykgJChFTkFCTEVfTk9USUZJQ0FUSU9OUykgJChFTkFCTEVfT0ZGTElORV9XRUJfQVBQTElD
QVRJT05TKSAkKEVOQUJMRV9QQUdFX1ZJU0lCSUxJVFlfQVBJKSAkKEVOQUJMRV9QUk9HUkVTU19U
QUcpICQoRU5BQkxFX1JFR0lTVEVSX1BST1RPQ09MX0hBTkRMRVIpICQoRU5BQkxFX1FVT1RBKSAk
KEVOQUJMRV9TSEFSRURfV09SS0VSUykgJChFTkFCTEVfU1ZHKSAkKEVOQUJMRV9TVkdfQU5JTUFU
SU9OKSAkKEVOQUJMRV9TVkdfQVNfSU1BR0UpICQoRU5BQkxFX1NWR19ET01fT0JKQ19CSU5ESU5H
UykgJChFTkFCTEVfU1ZHX0ZPTlRTKSAkKEVOQUJMRV9TVkdfRk9SRUlHTl9PQkpFQ1QpICQoRU5B
QkxFX1NWR19VU0UpICQoRU5BQkxFX1RPVUNIX0lDT05fTE9BRElORykgJChFTkFCTEVfVklERU8p
ICQoRU5BQkxFX1ZJREVPX1RSQUNLKSAkKEVOQUJMRV9NRURJQV9TVEFUSVNUSUNTKSAkKEVOQUJM
RV9XRUJfQVVESU8pICQoRU5BQkxFX1dFQl9TT0NLRVRTKSAkKEVOQUJMRV9XRUJfVElNSU5HKSAk
KEVOQUJMRV9XT1JLRVJTKSAkKEVOQUJMRV9YSFRNTE1QKSAkKEVOQUJMRV9YUEFUSCkgJChFTkFC
TEVfWFNMVCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiA4NTY4NykKKysrIFNvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU0IEBACisyMDExLTA0LTIy
ICBUYW8gQmFpICA8bWljaGFlbGJhaUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUG9wdWxhdGUgdG91Y2gtaWNvbiB1cmwgdG8g
RnJhbWVMb2FkZXJDbGllbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTU5MTQzCisgICAgICAgIAorICAgICAgICBQYXJzZWQgYW5kIHBvcHVsYXRlZCBh
cHBsZS10b3VjaC1pY29uIHVybCB0byBGcmFtZUxvYWRlckNsaWVudC4KKyAgICAgICAgQ2hhbmdl
ZCBmYXZpY29uIHRvIGJlIGEgdHlwZSBvZiBpY29uLgorCisgICAgICAgICogQ01ha2VMaXN0cy50
eHQ6CisgICAgICAgICogQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWc6Cisg
ICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToK
KyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29y
ZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6
aWNvblVSTCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2V0SWNvblVSTCk6CisgICAg
ICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgICogZG9tL0ljb25VUkwuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OnRvSWNvbkluZGV4KToKKyAgICAgICAgKiBkb20vSWNvblVSTC5o
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okljb25VUkw6Okljb25VUkwpOgorICAgICAgICAq
IGZlYXR1cmVzLnByaToKKyAgICAgICAgKiBodG1sL0hUTUxMaW5rRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6OnRva2VuaXplUmVsQXR0cmlidXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxMaW5rRWxlbWVudDo6cHJvY2Vzcyk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MTGlua0VsZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyk6CisgICAg
ICAgICogaHRtbC9IVE1MTGlua0VsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxMaW5r
RWxlbWVudDo6UmVsQXR0cmlidXRlOjpSZWxBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTExpbmtFbGVtZW50Ojppc0VuYWJsZWRWaWFTY3JpcHQpOgorICAgICAgICAqIGh0bWwvcGFy
c2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTmFtZXM6
OlByZWxvYWRUYXNrOjpyZWxBdHRyaWJ1dGVJc1N0eWxlU2hlZXQpOgorICAgICAgICAqIGxvYWRl
ci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6
aWNvblVSTCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6c2V0SWNvblVSTCk6
CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0Vt
cHR5Q2xpZW50cy5oOgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlGcmFtZUxvYWRlckNsaWVudDo6
ZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucyk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjppY29uVVJMKToKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lTG9hZGVyOjppY29uVVJMcyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxv
YWRlcjo6ZmlsbEljb25VUkwpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmdldERl
ZmF1bHRJY29uVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpzZXRJY29uVVJM
KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpkaWRDaGFuZ2VJY29ucyk6CisgICAg
ICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVy
Q2xpZW50Lmg6CisKIDIwMTEtMDUtMDMgIEVucmljYSBDYXN1Y2NpICA8ZW5yaWNhQGFwcGxlLmNv
bT4KIAogICAgICAgICBSZXZpZXdlZCBieSBSeW9zdWtlIE5pd2EuCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DTWFrZUxp
c3RzLnR4dAkocmV2aXNpb24gODU2MzEpCisrKyBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4
dAkod29ya2luZyBjb3B5KQpAQCAtNTY5LDYgKzU2OSw3IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMK
ICAgICBkb20vRXZlbnRRdWV1ZS5jcHAKICAgICBkb20vRXhjZXB0aW9uQmFzZS5jcHAKICAgICBk
b20vRXhjZXB0aW9uQ29kZS5jcHAKKyAgICBkb20vSWNvblVSTC5jcHAKICAgICBkb20vSW5wdXRF
bGVtZW50LmNwcAogICAgIGRvbS9LZXlib2FyZEV2ZW50LmNwcAogICAgIGRvbS9NZXNzYWdlQ2hh
bm5lbC5jcHAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCShyZXZpc2lvbiA4NTYzMSkKKysrIFNv
dXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCSh3b3JraW5nIGNvcHkpCkBAIC0yNjEsNiArMjYx
LDE2IEBAIHdlYmNvcmVfYnVpbHRfc291cmNlcyArPSBcCiBlbmRpZiAjIEVORCBFTkFCTEVfUVVP
VEEKIAogIyAtLS0tCisjIFRvdWNoIEljb24gTG9hZGluZworIyAtLS0tCitpZiBFTkFCTEVfVE9V
Q0hfSUNPTl9MT0FESU5HCitGRUFUVVJFX0RFRklORVMgKz0gRU5BQkxFX1RPVUNIX0lDT05fTE9B
RElORz0xCit3ZWJjb3JlX2NwcGZsYWdzICs9IC1ERU5BQkxFX1RPVUNIX0lDT05fTE9BRElORz0x
CitlbHNlCit3ZWJjb3JlX2NwcGZsYWdzICs9IC1ERU5BQkxFX1RPVUNIX0lDT05fTE9BRElORz0w
CitlbmRpZiAjIEVORCBFTkFCTEVfVE9VQ0hfSUNPTl9MT0FESU5HCisKKyMgLS0tLQogIyBTcGVl
Y2ggSW5wdXQgQVBJIHN1cHBvcnQKICMgLS0tLQogaWYgRU5BQkxFX0lOUFVUX1NQRUVDSApJbmRl
eDogU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiA4NTYzMSkKKysrIFNvdXJj
ZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHdvcmtpbmcgY29weSkKQEAgLTExNTEsNiAr
MTE1MSw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvZG9tL0V4Y2Vw
dGlvbkNvZGUuaCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL0ZyYWdtZW50U2NyaXB0aW5nUGVybWlz
c2lvbi5oIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vSWdub3JlRGVzdHJ1Y3RpdmVXcml0ZUNvdW50
SW5jcmVtZW50ZXIuaCBcCisJU291cmNlL1dlYkNvcmUvZG9tL0ljb25VUkwuY3BwIFwKKwlTb3Vy
Y2UvV2ViQ29yZS9kb20vSWNvblVSTC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vSW5wdXRFbGVt
ZW50LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL0lucHV0RWxlbWVudC5oIFwKIAlTb3VyY2Uv
V2ViQ29yZS9kb20vSGFzaENoYW5nZUV2ZW50LmggXApJbmRleDogU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5neXBpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkocmV2
aXNpb24gODU2MzEpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHdvcmtpbmcgY29w
eSkKQEAgLTI0NzAsNiArMjQ3MCw4IEBACiAgICAgICAgICAgICAnZG9tL0V4Y2VwdGlvbkNvZGUu
Y3BwJywKICAgICAgICAgICAgICdkb20vSGFzaENoYW5nZUV2ZW50LmgnLAogICAgICAgICAgICAg
J2RvbS9JZ25vcmVEZXN0cnVjdGl2ZVdyaXRlQ291bnRJbmNyZW1lbnRlci5oJywKKyAgICAgICAg
ICAgICdkb20vSWNvblVSTC5jcHAnLAorICAgICAgICAgICAgJ2RvbS9JY29uVVJMLmgnLAogICAg
ICAgICAgICAgJ2RvbS9JbnB1dEVsZW1lbnQuY3BwJywKICAgICAgICAgICAgICdkb20vS2V5Ym9h
cmRFdmVudC5jcHAnLAogICAgICAgICAgICAgJ2RvbS9NZXNzYWdlQ2hhbm5lbC5jcHAnLApJbmRl
eDogU291cmNlL1dlYkNvcmUvZmVhdHVyZXMucHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2ZlYXR1cmVzLnByaQkocmV2aXNpb24gODU2MzEpCisrKyBTb3VyY2UvV2ViQ29yZS9mZWF0
dXJlcy5wcmkJKHdvcmtpbmcgY29weSkKQEAgLTc1LDYgKzc1LDcgQEAgY29udGFpbnMoREVGSU5F
UywgRU5BQkxFX1NJTkdMRV9USFJFQURFRAogIWNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9XRUJH
TD0uKTogREVGSU5FUyArPSBFTkFCTEVfV0VCR0w9MAogIWNvbnRhaW5zKERFRklORVMsIEVOQUJM
RV9NRURJQV9TVEFUSVNUSUNTPS4pOiBERUZJTkVTICs9IEVOQUJMRV9NRURJQV9TVEFUSVNUSUNT
PTAKICFjb250YWlucyhERUZJTkVTLCBFTkFCTEVfVklERU9fVFJBQ0s9Lik6IERFRklORVMgKz0g
RU5BQkxFX1ZJREVPX1RSQUNLPTAKKyFjb250YWlucyhERUZJTkVTLCBFTkFCTEVfVE9VQ0hfSUNP
Tl9MT0FESU5HPS4pOiBERUZJTkVTICs9IEVOQUJMRV9UT1VDSF9JQ09OX0xPQURJTkc9MAogIWNv
bnRhaW5zKERFRklORVMsIEVOQUJMRV9BTklNQVRJT05fQVBJPS4pOiBERUZJTkVTICs9IEVOQUJM
RV9BTklNQVRJT05fQVBJPTAKIAogIyBTVkcgc3VwcG9ydApJbmRleDogU291cmNlL1dlYkNvcmUv
Q29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcJKHJldmlz
aW9uIDg1NjMxKQorKysgU291cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmlu
ZXMueGNjb25maWcJKHdvcmtpbmcgY29weSkKQEAgLTExNyw2ICsxMTcsOCBAQCBFTkFCTEVfVklE
RU9fVFJBQ0sgPSA7CiAKIEVOQUJMRV9NRURJQV9TVEFUSVNUSUNTID0gOwogCitFTkFCTEVfVE9V
Q0hfSUNPTl9MT0FESU5HID0gOworCiBFTkFCTEVfV0VCX0FVRElPID0gOwogCiBFTkFCTEVfV0VC
X1NPQ0tFVFMgPSAkKEVOQUJMRV9XRUJfU09DS0VUU18kKFJFQUxfUExBVEZPUk1fTkFNRSkpOwpA
QCAtMTMxLDQgKzEzMyw0IEBAIEVOQUJMRV9YSFRNTE1QID0gOwogRU5BQkxFX1hQQVRIID0gRU5B
QkxFX1hQQVRIOwogRU5BQkxFX1hTTFQgPSBFTkFCTEVfWFNMVDsKIAotRkVBVFVSRV9ERUZJTkVT
ID0gJChFTkFCTEVfTElOS19QUkVGRVRDSCkgJChFTkFCTEVfQUNDRUxFUkFURURfMkRfQ0FOVkFT
KSAkKEVOQUJMRV9XRUJHTCkgJChFTkFCTEVfM0RfUkVOREVSSU5HKSAkKEVOQUJMRV9BTklNQVRJ
T05fQVBJKSAkKEVOQUJMRV9CTE9CKSAkKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORykgJChFTkFC
TEVfQ0xJRU5UX0JBU0VEX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9EQVRBQkFTRSkgJChFTkFCTEVf
REFUQUxJU1QpICQoRU5BQkxFX0RBVEFfVFJBTlNGRVJfSVRFTVMpICQoRU5BQkxFX0RFVEFJTFMp
ICQoRU5BQkxFX0RFVklDRV9PUklFTlRBVElPTikgJChFTkFCTEVfRElSRUNUT1JZX1VQTE9BRCkg
JChFTkFCTEVfRE9NX1NUT1JBR0UpICQoRU5BQkxFX0VWRU5UU09VUkNFKSAkKEVOQUJMRV9GSUxU
RVJTKSAkKEVOQUJMRV9GSUxFX1NZU1RFTSkgJChFTkFCTEVfRlVMTFNDUkVFTl9BUEkpICQoRU5B
QkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9JQ09OREFUQUJBU0UpICQoRU5BQkxFX0lOREVYRURf
REFUQUJBU0UpICQoRU5BQkxFX0lOUFVUX1NQRUVDSCkgJChFTkFCTEVfSkFWQVNDUklQVF9ERUJV
R0dFUikgJChFTkFCTEVfTUFUSE1MKSAkKEVOQUJMRV9NRVRFUl9UQUcpICQoRU5BQkxFX05PVElG
SUNBVElPTlMpICQoRU5BQkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUykgJChFTkFCTEVfUEFH
RV9WSVNJQklMSVRZX0FQSSkgJChFTkFCTEVfUFJPR1JFU1NfVEFHKSAkKEVOQUJMRV9SRUdJU1RF
Ul9QUk9UT0NPTF9IQU5ETEVSKSAkKEVOQUJMRV9RVU9UQSkgJChFTkFCTEVfU0hBUkVEX1dPUktF
UlMpICQoRU5BQkxFX1NWRykgJChFTkFCTEVfU1ZHX0FOSU1BVElPTikgJChFTkFCTEVfU1ZHX0FT
X0lNQUdFKSAkKEVOQUJMRV9TVkdfRE9NX09CSkNfQklORElOR1MpICQoRU5BQkxFX1NWR19GT05U
UykgJChFTkFCTEVfU1ZHX0ZPUkVJR05fT0JKRUNUKSAkKEVOQUJMRV9TVkdfVVNFKSAkKEVOQUJM
RV9WSURFTykgJChFTkFCTEVfVklERU9fVFJBQ0spICQoRU5BQkxFX01FRElBX1NUQVRJU1RJQ1Mp
ICQoRU5BQkxFX1dFQl9BVURJTykgJChFTkFCTEVfV0VCX1NPQ0tFVFMpICQoRU5BQkxFX1dFQl9U
SU1JTkcpICQoRU5BQkxFX1dPUktFUlMpICQoRU5BQkxFX1hIVE1MTVApICQoRU5BQkxFX1hQQVRI
KSAkKEVOQUJMRV9YU0xUKTsKK0ZFQVRVUkVfREVGSU5FUyA9ICQoRU5BQkxFX0xJTktfUFJFRkVU
Q0gpICQoRU5BQkxFX0FDQ0VMRVJBVEVEXzJEX0NBTlZBUykgJChFTkFCTEVfV0VCR0wpICQoRU5B
QkxFXzNEX1JFTkRFUklORykgJChFTkFCTEVfQU5JTUFUSU9OX0FQSSkgJChFTkFCTEVfQkxPQikg
JChFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcpICQoRU5BQkxFX0NMSUVOVF9CQVNFRF9HRU9MT0NB
VElPTikgJChFTkFCTEVfREFUQUJBU0UpICQoRU5BQkxFX0RBVEFMSVNUKSAkKEVOQUJMRV9EQVRB
X1RSQU5TRkVSX0lURU1TKSAkKEVOQUJMRV9ERVRBSUxTKSAkKEVOQUJMRV9ERVZJQ0VfT1JJRU5U
QVRJT04pICQoRU5BQkxFX0RJUkVDVE9SWV9VUExPQUQpICQoRU5BQkxFX0RPTV9TVE9SQUdFKSAk
KEVOQUJMRV9FVkVOVFNPVVJDRSkgJChFTkFCTEVfRklMVEVSUykgJChFTkFCTEVfRklMRV9TWVNU
RU0pICQoRU5BQkxFX0ZVTExTQ1JFRU5fQVBJKSAkKEVOQUJMRV9HRU9MT0NBVElPTikgJChFTkFC
TEVfSUNPTkRBVEFCQVNFKSAkKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFKSAkKEVOQUJMRV9JTlBV
VF9TUEVFQ0gpICQoRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIpICQoRU5BQkxFX01BVEhNTCkg
JChFTkFCTEVfTUVURVJfVEFHKSAkKEVOQUJMRV9OT1RJRklDQVRJT05TKSAkKEVOQUJMRV9PRkZM
SU5FX1dFQl9BUFBMSUNBVElPTlMpICQoRU5BQkxFX1BBR0VfVklTSUJJTElUWV9BUEkpICQoRU5B
QkxFX1BST0dSRVNTX1RBRykgJChFTkFCTEVfUkVHSVNURVJfUFJPVE9DT0xfSEFORExFUikgJChF
TkFCTEVfUVVPVEEpICQoRU5BQkxFX1NIQVJFRF9XT1JLRVJTKSAkKEVOQUJMRV9TVkcpICQoRU5B
QkxFX1NWR19BTklNQVRJT04pICQoRU5BQkxFX1NWR19BU19JTUFHRSkgJChFTkFCTEVfU1ZHX0RP
TV9PQkpDX0JJTkRJTkdTKSAkKEVOQUJMRV9TVkdfRk9OVFMpICQoRU5BQkxFX1NWR19GT1JFSUdO
X09CSkVDVCkgJChFTkFCTEVfU1ZHX1VTRSkgJChFTkFCTEVfVE9VQ0hfSUNPTl9MT0FESU5HKSAk
KEVOQUJMRV9WSURFTykgJChFTkFCTEVfVklERU9fVFJBQ0spICQoRU5BQkxFX01FRElBX1NUQVRJ
U1RJQ1MpICQoRU5BQkxFX1dFQl9BVURJTykgJChFTkFCTEVfV0VCX1NPQ0tFVFMpICQoRU5BQkxF
X1dFQl9USU1JTkcpICQoRU5BQkxFX1dPUktFUlMpICQoRU5BQkxFX1hIVE1MTVApICQoRU5BQkxF
X1hQQVRIKSAkKEVOQUJMRV9YU0xUKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNw
cm9qL1dlYkNvcmUudmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
dmNwcm9qL1dlYkNvcmUudmNwcm9qCShyZXZpc2lvbiA4NTYzMSkKKysrIFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC00NDQ2Miw2
ICs0NDQ2Miw2MiBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQ
YXRoPSIuLlxkb21cSWNvblVSTC5jcHAiCisJCQkJPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgor
CQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJ
CQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+
CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJ
TmFtZT0iUmVsZWFzZXxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJ
CT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJ
CQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFt
ZT0iRGVidWdfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1
ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJ
CQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgor
CQkJCQlOYW1lPSJSZWxlYXNlX0NhaXJvX0NGTGl0ZXxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9t
QnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxl
clRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZp
Z3VyYXRpb24KKwkJCQkJTmFtZT0iRGVidWdfQWxsfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21C
dWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVy
VG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmln
dXJhdGlvbgorCQkJCQlOYW1lPSJQcm9kdWN0aW9ufFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21C
dWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVy
VG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJPC9GaWxlPgorCQkJ
PEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGRvbVxJY29uVVJMLmgiCisJCQkJPgorCQkJPC9G
aWxlPgorCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGRvbVxJbnB1dEVsZW1lbnQuY3Bw
IgogCQkJCT4KIAkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDg1NjMxKQor
KysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3Jr
aW5nIGNvcHkpCkBAIC05NzAsNiArOTcwLDggQEAKIAkJNDQ5QjE5RjUwRkE3MkVDRTAwMTVDQTRB
IC8qIEhUTUxQYXJzZXJRdWlya3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQ0OUIxOUYzMEZBNzJFQ0UwMDE1Q0E0QSAvKiBIVE1MUGFyc2VyUXVpcmtz
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDRB
MjhBQUMxMkRGQjhBQzAwQUU5MjNCIC8qIE1hdGhNTEVsZW1lbnRGYWN0b3J5LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NEEyOEFBQjEyREZCOEFDMDBB
RTkyM0IgLyogTWF0aE1MRWxlbWVudEZhY3RvcnkuaCAqLzsgfTsKIAkJNDRBMjhBQUYxMkRGQjhC
RjAwQUU5MjNCIC8qIE1hdGhNTE5hbWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0NEEyOEFBRTEyREZCOEJGMDBBRTkyM0IgLyogTWF0aE1MTmFtZXMu
aCAqLzsgfTsKKwkJNDUwOTlDNDExMzcwQTc4MDAwNThENTEzIC8qIEljb25VUkwuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDUwOTlDNDAxMzcwQTc4
MDAwNThENTEzIC8qIEljb25VUkwuY3BwICovOyB9OworCQk0NUJBQzJCMDEzNjBCQkFCMDA1REEy
NTggLyogSWNvblVSTC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDVCQUMyQUYxMzYwQkJBQjAwNURBMjU4IC8qIEljb25VUkwuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NjE0QTFGRTBCMjNBOEQ2MDA0
NDZFMUMgLyogY29weUN1cnNvci5wbmcgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQ2MTRBMUZEMEIyM0E4RDYwMDQ0NkUxQyAvKiBjb3B5Q3Vyc29yLnBu
ZyAqLzsgfTsKIAkJNDY0RUEyNzMwQjhBMzUwQjAwQThFNkUzIC8qIGNyb3NzSGFpckN1cnNvci5w
bmcgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2NEVB
MjcxMEI4QTM1MEIwMEE4RTZFMyAvKiBjcm9zc0hhaXJDdXJzb3IucG5nICovOyB9OwogCQk0NjRF
QTI3NDBCOEEzNTBCMDBBOEU2RTMgLyogbm90QWxsb3dlZEN1cnNvci5wbmcgaW4gUmVzb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2NEVBMjcyMEI4QTM1MEIwMEE4
RTZFMyAvKiBub3RBbGxvd2VkQ3Vyc29yLnBuZyAqLzsgfTsKQEAgLTc0MzYsNiArNzQzOCw4IEBA
CiAJCTQ0OUIxOUYzMEZBNzJFQ0UwMDE1Q0E0QSAvKiBIVE1MUGFyc2VyUXVpcmtzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhUTUxQYXJzZXJRdWlya3MuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDRBMjhBQUIxMkRGQjhBQzAwQUU5MjNCIC8qIE1hdGhNTEVs
ZW1lbnRGYWN0b3J5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hdGhNTEVs
ZW1lbnRGYWN0b3J5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0QTI4QUFFMTJE
RkI4QkYwMEFFOTIzQiAvKiBNYXRoTUxOYW1lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBNYXRoTUxOYW1lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NTA5
OUM0MDEzNzBBNzgwMDA1OEQ1MTMgLyogSWNvblVSTC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBJY29uVVJMLmNwcDsgcGF0aCA9IGRvbS9JY29uVVJMLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDVCQUMyQUYxMzYwQkJBQjAwNURBMjU4IC8qIElj
b25VUkwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gSWNvblVSTC5oOyBwYXRo
ID0gZG9tL0ljb25VUkwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDYxNEExRkQw
QjIzQThENjAwNDQ2RTFDIC8qIGNvcHlDdXJzb3IucG5nICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gaW1hZ2UucG5nOyBwYXRoID0gY29weUN1cnNvci5w
bmc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2NEVBMjcxMEI4QTM1MEIwMEE4RTZF
MyAvKiBjcm9zc0hhaXJDdXJzb3IucG5nICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gaW1hZ2UucG5nOyBwYXRoID0gY3Jvc3NIYWlyQ3Vyc29yLnBuZzsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY0RUEyNzIwQjhBMzUwQjAwQThFNkUzIC8q
IG5vdEFsbG93ZWRDdXJzb3IucG5nICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gaW1hZ2UucG5nOyBwYXRoID0gbm90QWxsb3dlZEN1cnNvci5wbmc7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMjUxNyw2ICsxMjUyMSw4IEBACiAJCTA4NjdE
NjkxRkU4NDAyOEZDMDJBQUMwNyAvKiBXZWJLaXQgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsK
IAkJCWNoaWxkcmVuID0gKAorCQkJCTQ1MDk5QzQwMTM3MEE3ODAwMDU4RDUxMyAvKiBJY29uVVJM
LmNwcCAqLywKKwkJCQk0NUJBQzJBRjEzNjBCQkFCMDA1REEyNTggLyogSWNvblVSTC5oICovLAog
CQkJCTY1Qzk3QUYyMDhFQTkwODgwMEFDRDI3MyAvKiBjb25maWcuaCAqLywKIAkJCQlFREVDOTgw
MjBBRUQ3RTE3MDA1OTEzN0YgLyogV2ViQ29yZVByZWZpeC5oICovLAogCQkJCTkzMDcwNjEzMDlF
MENBODIwMEIxN0ZFNCAvKiBEZXJpdmVkU291cmNlcy5tYWtlICovLApAQCAtMjI3MDIsNiArMjI3
MDgsNyBAQAogCQkJCTkzRjE5OUVEMDgyNDVFNTkwMDFFOUFCQyAvKiBYU0xUUHJvY2Vzc29yLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlFMUJFNTEyRTBDRjZDNTEyMDAyRUE5NTkgLyogWFNMVFVuaWNv
ZGVTb3J0LmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzdFMkUwRjEyRjBGQzlDMDBDMTMzNzkgLyog
WFNTRmlsdGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk0NUJBQzJCMDEzNjBCQkFCMDA1REEyNTgg
LyogSWNvblVSTC5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1l
bnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0yNTM2Miw2ICsyNTM2OSw3IEBACiAJCQkJ
OTNGMTlCMDUwODI0NUU1OTAwMUU5QUJDIC8qIFhTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUUxQkU1MTJEMENGNkM1MTIwMDJFQTk1OSAvKiBYU0xUVW5pY29kZVNv
cnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTc3RTJFMEUxMkYwRkM5QzAwQzEzMzc5IC8qIFhT
U0ZpbHRlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0NTA5OUM0MTEzNzBBNzgwMDA1OEQ1MTMg
LyogSWNvblVSTC5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95
bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNw
cAkocmV2aXNpb24gODU2MzEpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00MzY2LDE1ICs0MzY2LDI2IEBAIHVuc2lnbmVkIEZvcm1FbGVtZW50
S2V5SGFzaDo6aGFzaChjb25zdCAKICAgICByZXR1cm4gU3RyaW5nSGFzaGVyOjpoYXNoTWVtb3J5
PHNpemVvZihGb3JtRWxlbWVudEtleSk+KCZrZXkpOwogfQogCi12b2lkIERvY3VtZW50OjpzZXRJ
Y29uVVJMKGNvbnN0IFN0cmluZyYgaWNvblVSTCwgY29uc3QgU3RyaW5nJiB0eXBlKQorSWNvblVS
TCBEb2N1bWVudDo6aWNvblVSTChJY29uVHlwZSBpY29uVHlwZSkgY29uc3QKIHsKLSAgICAvLyBG
SVhNRSAtIDxyZGFyOi8vcHJvYmxlbS80NzI3NjQ1PiAtIEF0IHNvbWUgcG9pbnQgaW4gdGhlIGZ1
dHVyZSwgd2UgbWlnaHQgYWN0dWFsbHkgaG9ub3IgdGhlICJ0eXBlIiAKLSAgICBpZiAobV9pY29u
VVJMLmlzRW1wdHkoKSkKLSAgICAgICAgbV9pY29uVVJMID0gaWNvblVSTDsKLSAgICBlbHNlIGlm
ICghdHlwZS5pc0VtcHR5KCkpCi0gICAgICAgIG1faWNvblVSTCA9IGljb25VUkw7CisgICAgcmV0
dXJuIG1faWNvblVSTHNbdG9JY29uSW5kZXgoaWNvblR5cGUpXTsKK30KKwordm9pZCBEb2N1bWVu
dDo6c2V0SWNvblVSTChjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwg
SWNvblR5cGUgaWNvblR5cGUpCit7CisgICAgLy8gRklYTUUgLSA8cmRhcjovL3Byb2JsZW0vNDcy
NzY0NT4gLSBBdCBzb21lIHBvaW50IGluIHRoZSBmdXR1cmUsIHdlIG1pZ2h0IGFjdHVhbGx5IGhv
bm9yIHRoZSAibWltZVR5cGUiCisgICAgSWNvblVSTCBuZXdVUkwoS1VSTChQYXJzZWRVUkxTdHJp
bmcsIHVybCksIGljb25UeXBlKTsKKyAgICBpZiAoIWljb25VUkwoaWNvblR5cGUpLm1faWNvblVS
TC5pc0VtcHR5KCkpCisgICAgICAgIHNldEljb25VUkwobmV3VVJMKTsKKyAgICBlbHNlIGlmICgh
bWltZVR5cGUuaXNFbXB0eSgpKQorICAgICAgICBzZXRJY29uVVJMKG5ld1VSTCk7CiAgICAgaWYg
KEZyYW1lKiBmID0gZnJhbWUoKSkKLSAgICAgICAgZi0+bG9hZGVyKCktPnNldEljb25VUkwobV9p
Y29uVVJMKTsKKyAgICAgICAgZi0+bG9hZGVyKCktPnNldEljb25VUkwobmV3VVJMKTsKK30KKwor
dm9pZCBEb2N1bWVudDo6c2V0SWNvblVSTChjb25zdCBJY29uVVJMJiBpY29uVVJMKQoreworICAg
IG1faWNvblVSTHNbdG9JY29uSW5kZXgoaWNvblVSTC5tX2ljb25UeXBlKV0gPSBpY29uVVJMOwog
fQogCiB2b2lkIERvY3VtZW50OjpyZWdpc3RlckZvcm1FbGVtZW50V2l0aEZvcm1BdHRyaWJ1dGUo
Rm9ybUFzc29jaWF0ZWRFbGVtZW50KiBlbGVtZW50KQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgJ
KHJldmlzaW9uIDg1NjMxKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHdvcmtp
bmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJDb2xvci5oIgogI2luY2x1ZGUg
IkRPTVRpbWVTdGFtcC5oIgogI2luY2x1ZGUgIkRvY3VtZW50VGltaW5nLmgiCisjaW5jbHVkZSAi
SWNvblVSTC5oIgogI2luY2x1ZGUgIlF1YWxpZmllZE5hbWUuaCIKICNpbmNsdWRlICJTY3JpcHRF
eGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSAiU3RyaW5nV2l0aERpcmVjdGlvbi5oIgpAQCAt
OTE3LDggKzkxOCw5IEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lkIHNldEhhc05vZGVzV2l0aFBs
YWNlaG9sZGVyU3R5bGUoKSB7IG1faGFzTm9kZXNXaXRoUGxhY2Vob2xkZXJTdHlsZSA9IHRydWU7
IH0KIAotICAgIGNvbnN0IFN0cmluZyYgaWNvblVSTCgpIGNvbnN0IHsgcmV0dXJuIG1faWNvblVS
TDsgfQotICAgIHZvaWQgc2V0SWNvblVSTChjb25zdCBTdHJpbmcmIGljb25VUkwsIGNvbnN0IFN0
cmluZyYgdHlwZSk7CisgICAgSWNvblVSTCBpY29uVVJMKEljb25UeXBlKSBjb25zdDsKKyAgICB2
b2lkIHNldEljb25VUkwoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgSWNvblR5cGUpOwor
ICAgIHZvaWQgc2V0SWNvblVSTChjb25zdCBJY29uVVJMJik7CiAKICAgICB2b2lkIHNldFVzZVNl
Y3VyZUtleWJvYXJkRW50cnlXaGVuQWN0aXZlKGJvb2wpOwogICAgIGJvb2wgdXNlU2VjdXJlS2V5
Ym9hcmRFbnRyeVdoZW5BY3RpdmUoKSBjb25zdDsKQEAgLTEzMjQsOCArMTMyNiw4IEBAIHByaXZh
dGU6CiAKICAgICBib29sIG1fY3JlYXRlUmVuZGVyZXJzOwogICAgIGJvb2wgbV9pblBhZ2VDYWNo
ZTsKLSAgICBTdHJpbmcgbV9pY29uVVJMOwotICAgIAorICAgIEljb25VUkwgbV9pY29uVVJMc1tJ
Q09OX0NPVU5UXTsKKwogICAgIEhhc2hTZXQ8RWxlbWVudCo+IG1fZG9jdW1lbnRBY3RpdmF0aW9u
Q2FsbGJhY2tFbGVtZW50czsKICAgICBIYXNoU2V0PEVsZW1lbnQqPiBtX21lZGlhVm9sdW1lQ2Fs
bGJhY2tFbGVtZW50czsKICAgICBIYXNoU2V0PEVsZW1lbnQqPiBtX3ByaXZhdGVCcm93c2luZ1N0
YXRlQ2hhbmdlZEVsZW1lbnRzOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0ljb25VUkwuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9JY29uVVJMLmNwcAkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9JY29uVVJMLmNwcAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0
OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
CisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJY29uVVJMLmgiCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworc2l6ZV90IHRvSWNvbkluZGV4KEljb25UeXBlIHR5cGUpCit7
CisgICAgc2l6ZV90IGluZGV4ID0gMDsKKyAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNlIEZh
dmljb246CisgICAgICAgIGluZGV4ID0gMDsKKyAgICAgICAgYnJlYWs7CisjaWYgRU5BQkxFKFRP
VUNIX0lDT05fTE9BRElORykKKyAgICBjYXNlIFRvdWNoUHJlY29tcG9zZWRJY29uOgorICAgICAg
ICBpbmRleCA9IDE7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVG91Y2hJY29uOgorICAgICAg
ICBpbmRleCA9IDI7CisgICAgICAgIGJyZWFrOworI2VuZGlmCisgICAgZGVmYXVsdDoKKyAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorICAgIHJldHVybiBpbmRleDsKK30KKwor
fQorCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2UvV2ViQ29yZS9kb20vSWNvblVSTC5jcHAK
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fXwpBZGRlZDogc3ZuOmVvbC1zdHlsZQogICArIExGCgpJbmRleDogU291cmNlL1dl
YkNvcmUvZG9tL0ljb25VUkwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vSWNv
blVSTC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0ljb25VUkwuaAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSw3NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisg
KiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSWNvblVSTF9oCisjZGVmaW5lIEljb25V
UkxfaAorCisjaW5jbHVkZSAiS1VSTC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyNpZiBF
TkFCTEUoVE9VQ0hfSUNPTl9MT0FESU5HKQorI2RlZmluZSBJQ09OX0NPVU5UIDMKKyNlbHNlCisj
ZGVmaW5lIElDT05fQ09VTlQgMQorI2VuZGlmCisKK2VudW0gSWNvblR5cGUgeworICAgIEludmFs
aWRJY29uID0gMCwKKyAgICBGYXZpY29uID0gMSwKKyAgICBUb3VjaEljb24gPSAxIDw8IDEsCisg
ICAgVG91Y2hQcmVjb21wb3NlZEljb24gPSAxIDw8IDIKK307CisKK3N0cnVjdCBJY29uVVJMIHsK
KyAgICBJY29uVHlwZSBtX2ljb25UeXBlOworICAgIEtVUkwgbV9pY29uVVJMOworCisgICAgSWNv
blVSTCgpCisgICAgICAgIDogbV9pY29uVHlwZShJbnZhbGlkSWNvbikKKyAgICB7CisgICAgfQor
CisgICAgSWNvblVSTChjb25zdCBLVVJMJiB1cmwsIEljb25UeXBlIHR5cGUpCisgICAgICAgIDog
bV9pY29uVHlwZSh0eXBlKQorICAgICAgICAsIG1faWNvblVSTCh1cmwpCisgICAgeworICAgIH0K
K307CisKK3R5cGVkZWYgVmVjdG9yPEljb25VUkwsIElDT05fQ09VTlQ+IEljb25VUkxzOworCisv
LyBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgZ2l2ZW4gdHlwZSwgMCBpcyByZXR1cm5lZCBpZiB0
aGUgdHlwZSBpcyBpbnZhbGlkLgorc2l6ZV90IHRvSWNvbkluZGV4KEljb25UeXBlKTsKKworfQor
CisjZW5kaWYgLy8gSWNvblVSTF9oCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2UvV2ViQ29y
ZS9kb20vSWNvblVSTC5oCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjplb2wtc3R5bGUKICAgKyBMRgoK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAJKHJldmlzaW9uIDg1
NjMxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNjAsNyArMTYwLDcgQEAgdm9pZCBIVE1MTGlua0VsZW1lbnQ6OnBhcnNlTWFw
cGVkQXR0cmlidQogdm9pZCBIVE1MTGlua0VsZW1lbnQ6OnRva2VuaXplUmVsQXR0cmlidXRlKGNv
bnN0IEF0b21pY1N0cmluZyYgcmVsLCBSZWxBdHRyaWJ1dGUmIHJlbEF0dHJpYnV0ZSkKIHsKICAg
ICByZWxBdHRyaWJ1dGUubV9pc1N0eWxlU2hlZXQgPSBmYWxzZTsKLSAgICByZWxBdHRyaWJ1dGUu
bV9pc0ljb24gPSBmYWxzZTsKKyAgICByZWxBdHRyaWJ1dGUubV9pY29uVHlwZSA9IEludmFsaWRJ
Y29uOwogICAgIHJlbEF0dHJpYnV0ZS5tX2lzQWx0ZXJuYXRlID0gZmFsc2U7CiAgICAgcmVsQXR0
cmlidXRlLm1faXNETlNQcmVmZXRjaCA9IGZhbHNlOwogI2lmIEVOQUJMRShMSU5LX1BSRUZFVENI
KQpAQCAtMTcwLDcgKzE3MCwxMyBAQCB2b2lkIEhUTUxMaW5rRWxlbWVudDo6dG9rZW5pemVSZWxB
dHRyaWJ1CiAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHJlbCwgInN0eWxlc2hlZXQiKSkKICAg
ICAgICAgcmVsQXR0cmlidXRlLm1faXNTdHlsZVNoZWV0ID0gdHJ1ZTsKICAgICBlbHNlIGlmIChl
cXVhbElnbm9yaW5nQ2FzZShyZWwsICJpY29uIikgfHwgZXF1YWxJZ25vcmluZ0Nhc2UocmVsLCAi
c2hvcnRjdXQgaWNvbiIpKQotICAgICAgICByZWxBdHRyaWJ1dGUubV9pc0ljb24gPSB0cnVlOwor
ICAgICAgICByZWxBdHRyaWJ1dGUubV9pY29uVHlwZSA9IEZhdmljb247CisjaWYgRU5BQkxFKFRP
VUNIX0lDT05fTE9BRElORykKKyAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShyZWwsICJh
cHBsZS10b3VjaC1pY29uIikpCisgICAgICAgIHJlbEF0dHJpYnV0ZS5tX2ljb25UeXBlID0gVG91
Y2hJY29uOworICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHJlbCwgImFwcGxlLXRvdWNo
LWljb24tcHJlY29tcG9zZWQiKSkKKyAgICAgICAgcmVsQXR0cmlidXRlLm1faWNvblR5cGUgPSBU
b3VjaFByZWNvbXBvc2VkSWNvbjsKKyNlbmRpZgogICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdD
YXNlKHJlbCwgImRucy1wcmVmZXRjaCIpKQogICAgICAgICByZWxBdHRyaWJ1dGUubV9pc0ROU1By
ZWZldGNoID0gdHJ1ZTsKICAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShyZWwsICJhbHRl
cm5hdGUgc3R5bGVzaGVldCIpIHx8IGVxdWFsSWdub3JpbmdDYXNlKHJlbCwgInN0eWxlc2hlZXQg
YWx0ZXJuYXRlIikpIHsKQEAgLTE4OSw3ICsxOTUsMTMgQEAgdm9pZCBIVE1MTGlua0VsZW1lbnQ6
OnRva2VuaXplUmVsQXR0cmlidQogICAgICAgICAgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nh
c2UoKml0LCAiYWx0ZXJuYXRlIikpCiAgICAgICAgICAgICAgICAgcmVsQXR0cmlidXRlLm1faXNB
bHRlcm5hdGUgPSB0cnVlOwogICAgICAgICAgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2Uo
Kml0LCAiaWNvbiIpKQotICAgICAgICAgICAgICAgIHJlbEF0dHJpYnV0ZS5tX2lzSWNvbiA9IHRy
dWU7CisgICAgICAgICAgICAgICAgcmVsQXR0cmlidXRlLm1faWNvblR5cGUgPSBGYXZpY29uOwor
I2lmIEVOQUJMRShUT1VDSF9JQ09OX0xPQURJTkcpCisgICAgICAgICAgICBlbHNlIGlmIChlcXVh
bElnbm9yaW5nQ2FzZSgqaXQsICJhcHBsZS10b3VjaC1pY29uIikpCisgICAgICAgICAgICAgICAg
cmVsQXR0cmlidXRlLm1faWNvblR5cGUgPSBUb3VjaEljb247CisgICAgICAgICAgICBlbHNlIGlm
IChlcXVhbElnbm9yaW5nQ2FzZSgqaXQsICJhcHBsZS10b3VjaC1pY29uLXByZWNvbXBvc2VkIikp
CisgICAgICAgICAgICAgICAgcmVsQXR0cmlidXRlLm1faWNvblR5cGUgPSBUb3VjaFByZWNvbXBv
c2VkSWNvbjsKKyNlbmRpZgogI2lmIEVOQUJMRShMSU5LX1BSRUZFVENIKQogICAgICAgICAgICAg
ZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoKml0LCAicHJlZmV0Y2giKSkKICAgICAgICAgICAg
ICAgcmVsQXR0cmlidXRlLm1faXNMaW5rUHJlZmV0Y2ggPSB0cnVlOwpAQCAtMjIyLDEwICsyMzQs
MTAgQEAgdm9pZCBIVE1MTGlua0VsZW1lbnQ6OnByb2Nlc3MoKQogCiAgICAgLy8gSUUgZXh0ZW5z
aW9uOiBsb2NhdGlvbiBvZiBzbWFsbCBpY29uIGZvciBsb2NhdGlvbmJhciAvIGJvb2ttYXJrcwog
ICAgIC8vIFdlJ2xsIHJlY29yZCB0aGlzIFVSTCBwZXIgZG9jdW1lbnQsIGV2ZW4gaWYgd2UgbGF0
ZXIgb25seSB1c2UgaXQgaW4gdG9wIGxldmVsIGZyYW1lcwotICAgIGlmIChtX3JlbEF0dHJpYnV0
ZS5tX2lzSWNvbiAmJiBtX3VybC5pc1ZhbGlkKCkgJiYgIW1fdXJsLmlzRW1wdHkoKSkgeworICAg
IGlmIChtX3JlbEF0dHJpYnV0ZS5tX2ljb25UeXBlICE9IEludmFsaWRJY29uICYmIG1fdXJsLmlz
VmFsaWQoKSAmJiAhbV91cmwuaXNFbXB0eSgpKSB7CiAgICAgICAgIGlmICghY2hlY2tCZWZvcmVM
b2FkRXZlbnQoKSkgCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGRvY3VtZW50KCktPnNl
dEljb25VUkwobV91cmwuc3RyaW5nKCksIHR5cGUpOworICAgICAgICBkb2N1bWVudCgpLT5zZXRJ
Y29uVVJMKG1fdXJsLnN0cmluZygpLCB0eXBlLCBtX3JlbEF0dHJpYnV0ZS5tX2ljb25UeXBlKTsK
ICAgICB9CiAKICAgICBpZiAobV9yZWxBdHRyaWJ1dGUubV9pc0ROU1ByZWZldGNoKSB7CkBAIC00
NzMsNyArNDg1LDcgQEAgdm9pZCBIVE1MTGlua0VsZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0cgog
ICAgIEhUTUxFbGVtZW50OjphZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHModXJscyk7CiAKICAg
ICAvLyBGYXZpY29ucyBhcmUgaGFuZGxlZCBieSBhIHNwZWNpYWwgY2FzZSBpbiBMZWdhY3lXZWJB
cmNoaXZlOjpjcmVhdGUoKQotICAgIGlmIChtX3JlbEF0dHJpYnV0ZS5tX2lzSWNvbikKKyAgICBp
ZiAobV9yZWxBdHRyaWJ1dGUubV9pY29uVHlwZSAhPSBJbnZhbGlkSWNvbikKICAgICAgICAgcmV0
dXJuOwogCiAgICAgaWYgKCFtX3JlbEF0dHJpYnV0ZS5tX2lzU3R5bGVTaGVldCkKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuaAkocmV2aXNpb24gODU2MzEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2
ICsyNyw3IEBACiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VDbGllbnQuaCIKICNpbmNsdWRlICJD
YWNoZWRSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgIkhUTUxFbGVtZW50LmgiCisjaW5jbHVk
ZSAiSWNvblVSTC5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
QEAgLTM5LDcgKzQwLDcgQEAgY2xhc3MgSFRNTExpbmtFbGVtZW50IDogcHVibGljIEhUTUxFbGVt
ZQogcHVibGljOgogICAgIHN0cnVjdCBSZWxBdHRyaWJ1dGUgewogICAgICAgICBib29sIG1faXNT
dHlsZVNoZWV0OwotICAgICAgICBib29sIG1faXNJY29uOworICAgICAgICBJY29uVHlwZSBtX2lj
b25UeXBlOwogICAgICAgICBib29sIG1faXNBbHRlcm5hdGU7CiAgICAgICAgIGJvb2wgbV9pc0RO
U1ByZWZldGNoOwogI2lmIEVOQUJMRShMSU5LX1BSRUZFVENIKQpAQCAtNDksNyArNTAsNyBAQCBw
dWJsaWM6CiAKICAgICAgICAgUmVsQXR0cmlidXRlKCkKICAgICAgICAgICAgIDogbV9pc1N0eWxl
U2hlZXQoZmFsc2UpCi0gICAgICAgICAgICAsIG1faXNJY29uKGZhbHNlKQorICAgICAgICAgICAg
LCBtX2ljb25UeXBlKEludmFsaWRJY29uKQogICAgICAgICAgICAgLCBtX2lzQWx0ZXJuYXRlKGZh
bHNlKQogICAgICAgICAgICAgLCBtX2lzRE5TUHJlZmV0Y2goZmFsc2UpCiAjaWYgRU5BQkxFKExJ
TktfUFJFRkVUQ0gpCkBAIC03Niw3ICs3Nyw2IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNEaXNh
YmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZGlzYWJsZWRTdGF0ZSA9PSBEaXNhYmxlZDsgfQogICAg
IGJvb2wgaXNFbmFibGVkVmlhU2NyaXB0KCkgY29uc3QgeyByZXR1cm4gbV9kaXNhYmxlZFN0YXRl
ID09IEVuYWJsZWRWaWFTY3JpcHQ7IH0KLSAgICBib29sIGlzSWNvbigpIGNvbnN0IHsgcmV0dXJu
IG1fcmVsQXR0cmlidXRlLm1faXNJY29uOyB9CiAgICAgYm9vbCBkaXNhYmxlZCgpIGNvbnN0Owog
ICAgIHZvaWQgc2V0RGlzYWJsZWQoYm9vbCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNwcAkocmV2aXNpb24gODU2MzEpCisr
KyBTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC05NSw3ICs5NSw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIEhUTUxM
aW5rRWxlbWVudDo6UmVsQXR0cmlidXRlIHJlbDsKICAgICAgICAgSFRNTExpbmtFbGVtZW50Ojp0
b2tlbml6ZVJlbEF0dHJpYnV0ZShhdHRyaWJ1dGVWYWx1ZSwgcmVsKTsKLSAgICAgICAgcmV0dXJu
IHJlbC5tX2lzU3R5bGVTaGVldCAmJiAhcmVsLm1faXNBbHRlcm5hdGUgJiYgIXJlbC5tX2lzSWNv
biAmJiAhcmVsLm1faXNETlNQcmVmZXRjaDsKKyAgICAgICAgcmV0dXJuIHJlbC5tX2lzU3R5bGVT
aGVldCAmJiAhcmVsLm1faXNBbHRlcm5hdGUgJiYgcmVsLm1faWNvblR5cGUgPT0gSW52YWxpZElj
b24gJiYgIXJlbC5tX2lzRE5TUHJlZmV0Y2g7CiAgICAgfQogCiAgICAgc3RhdGljIGJvb2wgbGlu
a01lZGlhQXR0cmlidXRlSXNTY3JlZW4oY29uc3QgU3RyaW5nJiBhdHRyaWJ1dGVWYWx1ZSkKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAkocmV2aXNpb24gODU2
MzEpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC02NjEsMTQgKzY2MSwxOSBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpzZXRUaXRs
ZShjb25zdCBTdHJpCiAgICAgfQogfQogCi12b2lkIERvY3VtZW50TG9hZGVyOjpzZXRJY29uVVJM
KGNvbnN0IFN0cmluZyYgaWNvblVSTCkKK0ljb25VUkwgRG9jdW1lbnRMb2FkZXI6Omljb25VUkwo
SWNvblR5cGUgaWNvblR5cGUpIGNvbnN0CiB7Ci0gICAgaWYgKGljb25VUkwuaXNFbXB0eSgpKQor
ICAgIHJldHVybiBtX2ljb25VUkxzW3RvSWNvbkluZGV4KGljb25UeXBlKV07Cit9CisKK3ZvaWQg
RG9jdW1lbnRMb2FkZXI6OnNldEljb25VUkwoY29uc3QgSWNvblVSTCYgdXJsKQoreworICAgIGlm
ICh1cmwubV9pY29uVVJMLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKG1f
cGFnZUljb25VUkwgIT0gaWNvblVSTCkgewotICAgICAgICBtX3BhZ2VJY29uVVJMID0gaWNvblVS
TDsKLSAgICAgICAgZnJhbWVMb2FkZXIoKS0+ZGlkQ2hhbmdlSWNvbnModGhpcyk7CisgICAgaWYg
KGljb25VUkwodXJsLm1faWNvblR5cGUpLm1faWNvblVSTCAhPSB1cmwubV9pY29uVVJMKSB7Cisg
ICAgICAgIG1faWNvblVSTHNbdG9JY29uSW5kZXgodXJsLm1faWNvblR5cGUpXSA9IHVybDsKKyAg
ICAgICAgZnJhbWVMb2FkZXIoKS0+ZGlkQ2hhbmdlSWNvbnModGhpcywgdXJsLm1faWNvblR5cGUp
OwogICAgIH0KIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgJ
KHJldmlzaW9uIDg1NjMxKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJEb2N1bWVudExv
YWRUaW1pbmcuaCIKICNpbmNsdWRlICJEb2N1bWVudFdyaXRlci5oIgogI2luY2x1ZGUgIkljb25E
YXRhYmFzZUJhc2UuaCIKKyNpbmNsdWRlICJJY29uVVJMLmgiCiAjaW5jbHVkZSAiTmF2aWdhdGlv
bkFjdGlvbi5oIgogI2luY2x1ZGUgIlJlc291cmNlRXJyb3IuaCIKICNpbmNsdWRlICJSZXNvdXJj
ZVJlcXVlc3QuaCIKQEAgLTEyMyw3ICsxMjQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIGJvb2wgaXNMb2FkaW5nSW5BUElTZW5zZSgpIGNvbnN0OwogICAgICAgICB2b2lkIHNldFBy
aW1hcnlMb2FkQ29tcGxldGUoYm9vbCk7CiAgICAgICAgIHZvaWQgc2V0VGl0bGUoY29uc3QgU3Ry
aW5nV2l0aERpcmVjdGlvbiYpOwotICAgICAgICB2b2lkIHNldEljb25VUkwoY29uc3QgU3RyaW5n
Jik7CisgICAgICAgIHZvaWQgc2V0SWNvblVSTChjb25zdCBJY29uVVJMJik7CiAgICAgICAgIGNv
bnN0IFN0cmluZyYgb3ZlcnJpZGVFbmNvZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fb3ZlcnJpZGVF
bmNvZGluZzsgfQogCiAjaWYgUExBVEZPUk0oTUFDKQpAQCAtMTcwLDcgKzE3MSw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2b2lkIHN0b3BSZWNvcmRpbmdSZXNwb25zZXMoKTsK
ICAgICAgICAgY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYgdGl0bGUoKSBjb25zdCB7IHJldHVy
biBtX3BhZ2VUaXRsZTsgfQotICAgICAgICBjb25zdCBTdHJpbmcmIGljb25VUkwoKSBjb25zdCB7
IHJldHVybiBtX3BhZ2VJY29uVVJMOyB9CisgICAgICAgIEljb25VUkwgaWNvblVSTChJY29uVHlw
ZSkgY29uc3Q7CiAKICAgICAgICAgS1VSTCB1cmxGb3JIaXN0b3J5KCkgY29uc3Q7CiAgICAgICAg
IGJvb2wgdXJsRm9ySGlzdG9yeVJlZmxlY3RzRmFpbHVyZSgpIGNvbnN0OwpAQCAtMzAwLDcgKzMw
MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCBtX3dhc09ubG9hZEhhbmRs
ZWQ7CiAKICAgICAgICAgU3RyaW5nV2l0aERpcmVjdGlvbiBtX3BhZ2VUaXRsZTsKLSAgICAgICAg
U3RyaW5nIG1fcGFnZUljb25VUkw7CisgICAgICAgIEljb25VUkwgbV9pY29uVVJMc1tJQ09OX0NP
VU5UXTsKIAogICAgICAgICBTdHJpbmcgbV9vdmVycmlkZUVuY29kaW5nOwogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCShyZXZpc2lvbiA4NTYzMSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAkod29ya2luZyBjb3B5KQpAQCAtMjcxLDcgKzI3
MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbigp
IHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCkg
eyB9CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFN0cmlu
Z1dpdGhEaXJlY3Rpb24mKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VJ
Y29ucygpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZUljb25zKEljb25U
eXBlKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDb21taXRMb2FkKCkgeyB9CiAg
ICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9hZChjb25zdCBSZXNv
dXJjZUVycm9yJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbExvYWQoY29u
c3QgUmVzb3VyY2VFcnJvciYpIHsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2Fk
ZXIuY3BwCShyZXZpc2lvbiA4NTYzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxv
YWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY5LDYgKzY5LDcgQEAKICNpbmNsdWRlICJIaXN0
b3J5SXRlbS5oIgogI2luY2x1ZGUgIkljb25EYXRhYmFzZS5oIgogI2luY2x1ZGUgIkljb25Mb2Fk
ZXIuaCIKKyNpbmNsdWRlICJJY29uVVJMLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ29udHJvbGxl
ci5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIkxv
Z2dpbmcuaCIKQEAgLTQ2NywxOCArNDY4LDU2IEBAIGJvb2wgRnJhbWVMb2FkZXI6OmNsb3NlVVJM
KCkKIAogS1VSTCBGcmFtZUxvYWRlcjo6aWNvblVSTCgpCiB7Ci0gICAgLy8gSWYgdGhpcyBpc24n
dCBhIHRvcCBsZXZlbCBmcmFtZSwgcmV0dXJuIG5vdGhpbmcKKyAgICBJY29uVVJMcyB1cmxzID0g
aWNvblVSTHMoRmF2aWNvbik7CisgICAgcmV0dXJuIHVybHMuaXNFbXB0eSgpID8gS1VSTCgpIDog
dXJsc1swXS5tX2ljb25VUkw7Cit9CisKK0ljb25VUkxzIEZyYW1lTG9hZGVyOjppY29uVVJMcyhp
bnQgaWNvblR5cGVzKQoreworICAgIEljb25VUkxzIGljb25VUkxzOworICAgIGlmIChpY29uVHlw
ZXMgJiBGYXZpY29uICYmICFmaWxsSWNvblVSTChGYXZpY29uLCAmaWNvblVSTHMpKQorICAgICAg
ICBpY29uVVJMcy5hcHBlbmQoZ2V0RGVmYXVsdEljb25VUkwoRmF2aWNvbikpOworCisjaWYgRU5B
QkxFKFRPVUNIX0lDT05fTE9BRElORykKKyAgICBib29sIGhhdmVQcmVjb21wb3NlZEljb24gPSBm
YWxzZTsKKyAgICBpZiAoaWNvblR5cGVzICYgVG91Y2hQcmVjb21wb3NlZEljb24pCisgICAgICAg
IGhhdmVQcmVjb21wb3NlZEljb24gPSBmaWxsSWNvblVSTChUb3VjaFByZWNvbXBvc2VkSWNvbiwg
Jmljb25VUkxzKTsKKworICAgIGJvb2wgaGF2ZVRvdWNoSWNvbiA9IGZhbHNlOworICAgIGlmIChp
Y29uVHlwZXMgJiBUb3VjaEljb24pCisgICAgICAgIGhhdmVUb3VjaEljb24gPSBmaWxsSWNvblVS
TChUb3VjaEljb24sICZpY29uVVJMcyk7CisKKyAgICAvLyBPbmx5IHJldHVybiB0aGUgZGVmYXVs
dCB0b3VjaCBpY29ucyB3aGVuIHRoZSBib3RoIHdlcmUgcmVxdWlyZWQgYW5kIG5laXRoZXIgd2Fz
IGdvdHRlbi4KKyAgICBpZiAoaWNvblR5cGVzICYgVG91Y2hQcmVjb21wb3NlZEljb24gJiYgaWNv
blR5cGVzICYgVG91Y2hJY29uICYmICFoYXZlUHJlY29tcG9zZWRJY29uICYmICFoYXZlVG91Y2hJ
Y29uKSB7CisgICAgICAgIGljb25VUkxzLmFwcGVuZChnZXREZWZhdWx0SWNvblVSTChUb3VjaFBy
ZWNvbXBvc2VkSWNvbikpOworICAgICAgICBpY29uVVJMcy5hcHBlbmQoZ2V0RGVmYXVsdEljb25V
UkwoVG91Y2hJY29uKSk7CisgICAgfQorI2VuZGlmCisgICAgcmV0dXJuIGljb25VUkxzOworfQor
Citib29sIEZyYW1lTG9hZGVyOjpmaWxsSWNvblVSTChJY29uVHlwZSBpY29uVHlwZSwgSWNvblVS
THMqIGljb25VUkxzKQoreworICAgIC8vIElmIHRoaXMgaXNuJ3QgYSB0b3AgbGV2ZWwgZnJhbWUs
IHJldHVybgogICAgIGlmIChtX2ZyYW1lLT50cmVlKCkgJiYgbV9mcmFtZS0+dHJlZSgpLT5wYXJl
bnQoKSkKLSAgICAgICAgcmV0dXJuIEtVUkwoKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAg
ICAgLy8gSWYgd2UgaGF2ZSBhbiBpY29uVVJMIGZyb20gYSBMaW5rIGVsZW1lbnQsIHJldHVybiB0
aGF0Ci0gICAgaWYgKCFtX2ZyYW1lLT5kb2N1bWVudCgpLT5pY29uVVJMKCkuaXNFbXB0eSgpKQot
ICAgICAgICByZXR1cm4gS1VSTChQYXJzZWRVUkxTdHJpbmcsIG1fZnJhbWUtPmRvY3VtZW50KCkt
Pmljb25VUkwoKSk7CisgICAgSWNvblVSTCB1cmwgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT5pY29u
VVJMKGljb25UeXBlKTsKKyAgICBpZiAodXJsLm1faWNvblVSTC5pc0VtcHR5KCkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIGljb25VUkxzLT5hcHBlbmQodXJsKTsKKworICAgIHJldHVy
biB0cnVlOworfQogCitJY29uVVJMIEZyYW1lTG9hZGVyOjpnZXREZWZhdWx0SWNvblVSTChJY29u
VHlwZSBpY29uVHlwZSkKK3sKICAgICAvLyBEb24ndCByZXR1cm4gYSBmYXZpY29uIGljb25VUkwg
dW5sZXNzIHdlJ3JlIGh0dHAgb3IgaHR0cHMKICAgICBLVVJMIGRvY3VtZW50VVJMID0gbV9mcmFt
ZS0+ZG9jdW1lbnQoKS0+dXJsKCk7CiAgICAgaWYgKCFkb2N1bWVudFVSTC5wcm90b2NvbEluSFRU
UEZhbWlseSgpKQotICAgICAgICByZXR1cm4gS1VSTCgpOworICAgICAgICByZXR1cm4gSWNvblVS
TCgpOwogCiAgICAgS1VSTCB1cmw7CiAgICAgYm9vbCBjb3VsZFNldFByb3RvY29sID0gdXJsLnNl
dFByb3RvY29sKGRvY3VtZW50VVJMLnByb3RvY29sKCkpOwpAQCAtNDg2LDggKzUyNSwyMSBAQCBL
VVJMIEZyYW1lTG9hZGVyOjppY29uVVJMKCkKICAgICB1cmwuc2V0SG9zdChkb2N1bWVudFVSTC5o
b3N0KCkpOwogICAgIGlmIChkb2N1bWVudFVSTC5oYXNQb3J0KCkpCiAgICAgICAgIHVybC5zZXRQ
b3J0KGRvY3VtZW50VVJMLnBvcnQoKSk7Ci0gICAgdXJsLnNldFBhdGgoIi9mYXZpY29uLmljbyIp
OwotICAgIHJldHVybiB1cmw7CisgICAgaWYgKGljb25UeXBlID09IEZhdmljb24pIHsKKyAgICAg
ICAgdXJsLnNldFBhdGgoIi9mYXZpY29uLmljbyIpOworICAgICAgICByZXR1cm4gSWNvblVSTChL
VVJMKFBhcnNlZFVSTFN0cmluZywgdXJsKSwgRmF2aWNvbik7CisgICAgfQorI2lmIEVOQUJMRShU
T1VDSF9JQ09OX0xPQURJTkcpCisgICAgaWYgKGljb25UeXBlID09IFRvdWNoUHJlY29tcG9zZWRJ
Y29uKSB7CisgICAgICAgIHVybC5zZXRQYXRoKCIvYXBwbGUtdG91Y2gtaWNvbi1wcmVjb21wb3Nl
ZC5wbmciKTsKKyAgICAgICAgcmV0dXJuIEljb25VUkwoS1VSTChQYXJzZWRVUkxTdHJpbmcsIHVy
bCksIFRvdWNoUHJlY29tcG9zZWRJY29uKTsKKyAgICB9CisgICAgaWYgKGljb25UeXBlID09IFRv
dWNoSWNvbikgeworICAgICAgICB1cmwuc2V0UGF0aCgiL2FwcGxlLXRvdWNoLWljb24ucG5nIik7
CisgICAgICAgIHJldHVybiBJY29uVVJMKEtVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmwpLCBUb3Vj
aEljb24pOworICAgIH0KKyNlbmRpZgorICAgIHJldHVybiBJY29uVVJMKCk7CiB9CiAKIGJvb2wg
RnJhbWVMb2FkZXI6OmRpZE9wZW5VUkwoY29uc3QgS1VSTCYgdXJsKQpAQCAtMzM1Nyw3ICszNDA5
LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6c2V0VGl0bGUoY29uc3QgU3RyaW5nVwogICAgIGRvY3Vt
ZW50TG9hZGVyKCktPnNldFRpdGxlKHRpdGxlKTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlcjo6c2V0
SWNvblVSTChjb25zdCBTdHJpbmcmIGljb25VUkwpCit2b2lkIEZyYW1lTG9hZGVyOjpzZXRJY29u
VVJMKGNvbnN0IEljb25VUkwmIGljb25VUkwpCiB7CiAgICAgZG9jdW1lbnRMb2FkZXIoKS0+c2V0
SWNvblVSTChpY29uVVJMKTsKIH0KQEAgLTM0MzUsMTAgKzM0ODcsMTAgQEAgdm9pZCBGcmFtZUxv
YWRlcjo6ZGlkQ2hhbmdlVGl0bGUoRG9jdW1lbgogICAgIH0KIH0KIAotdm9pZCBGcmFtZUxvYWRl
cjo6ZGlkQ2hhbmdlSWNvbnMoRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKK3ZvaWQgRnJhbWVMb2Fk
ZXI6OmRpZENoYW5nZUljb25zKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIEljb25UeXBlIHR5cGUp
CiB7CiAgICAgaWYgKGxvYWRlciA9PSBtX2RvY3VtZW50TG9hZGVyKQotICAgICAgICBtX2NsaWVu
dC0+ZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygpOworICAgICAgICBtX2NsaWVudC0+ZGlzcGF0Y2hE
aWRDaGFuZ2VJY29ucyh0eXBlKTsKIH0KIAogdm9pZCBGcmFtZUxvYWRlcjo6ZGlzcGF0Y2hEaWRD
b21taXRMb2FkKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCShyZXZpc2lv
biA4NTYzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJUeXBlcy5oIgog
I2luY2x1ZGUgIkhpc3RvcnlDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiSWNvbkRhdGFiYXNlQmFz
ZS5oIgorI2luY2x1ZGUgIkljb25VUkwuaCIKICNpbmNsdWRlICJQb2xpY3lDaGVja2VyLmgiCiAj
aW5jbHVkZSAiUmVzb3VyY2VMb2FkTm90aWZpZXIuaCIKICNpbmNsdWRlICJTdWJmcmFtZUxvYWRl
ci5oIgpAQCAtMTkxLDcgKzE5Miw3IEBAIHB1YmxpYzoKICAgICBib29sIHN1YmZyYW1lSXNMb2Fk
aW5nKCkgY29uc3Q7CiAgICAgdm9pZCB3aWxsQ2hhbmdlVGl0bGUoRG9jdW1lbnRMb2FkZXIqKTsK
ICAgICB2b2lkIGRpZENoYW5nZVRpdGxlKERvY3VtZW50TG9hZGVyKik7Ci0gICAgdm9pZCBkaWRD
aGFuZ2VJY29ucyhEb2N1bWVudExvYWRlciopOworICAgIHZvaWQgZGlkQ2hhbmdlSWNvbnMoRG9j
dW1lbnRMb2FkZXIqLCBJY29uVHlwZSk7CiAKICAgICBGcmFtZUxvYWRUeXBlIGxvYWRUeXBlKCkg
Y29uc3Q7CiAKQEAgLTIzMyw3ICsyMzQsMTEgQEAgcHVibGljOgogICAgIHZvaWQgZGlkRW5kRG9j
dW1lbnQoKTsKICAgICB2b2lkIHdpbGxTZXRFbmNvZGluZygpOwogCisgICAgLy8gUmV0dXJucyBm
YXZpY29uLgogICAgIEtVUkwgaWNvblVSTCgpOworCisgICAgLy8gUmV0dXJucyB0aGUgZ2l2ZW4g
aWNvblR5cGVzJyBJY29uVVJMcywgaWNvblR5cGVzIGNvdWxkIGJlIGFueSBjb21iaW5hdGlvbiBv
ZiBJY29uVHlwZS4KKyAgICBJY29uVVJMcyBpY29uVVJMcyhpbnQgaWNvblR5cGVzKTsKICAgICB2
b2lkIGNvbW1pdEljb25VUkxUb0ljb25EYXRhYmFzZShjb25zdCBLVVJMJik7CiAKICAgICBLVVJM
IGJhc2VVUkwoKSBjb25zdDsKQEAgLTI4NCw3ICsyODksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBj
YW5jZWxBbmRDbGVhcigpOwogCiAgICAgdm9pZCBzZXRUaXRsZShjb25zdCBTdHJpbmdXaXRoRGly
ZWN0aW9uJik7Ci0gICAgdm9pZCBzZXRJY29uVVJMKGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQg
c2V0SWNvblVSTChjb25zdCBJY29uVVJMJik7CiAKICAgICB2b2lkIGNvbW1pdFByb3Zpc2lvbmFs
TG9hZCgpOwogICAgIGJvb2wgaXNMb2FkaW5nRnJvbUNhY2hlZFBhZ2UoKSBjb25zdCB7IHJldHVy
biBtX2xvYWRpbmdGcm9tQ2FjaGVkUGFnZTsgfQpAQCAtNDI4LDYgKzQzMyw5IEBAIHByaXZhdGU6
CiAKICAgICB2b2lkIHVwZGF0ZVNhbmRib3hGbGFncygpOwogCisgICAgYm9vbCBmaWxsSWNvblVS
TChJY29uVHlwZSwgSWNvblVSTHMqKTsKKyAgICBJY29uVVJMIGdldERlZmF1bHRJY29uVVJMKElj
b25UeXBlKTsKKwogICAgIEZyYW1lKiBtX2ZyYW1lOwogICAgIEZyYW1lTG9hZGVyQ2xpZW50KiBt
X2NsaWVudDsKIApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50
LmgJKHJldmlzaW9uIDg1NjMxKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVy
Q2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAKICNkZWZpbmUgRnJhbWVM
b2FkZXJDbGllbnRfaAogCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJUeXBlcy5oIgorI2luY2x1ZGUg
Ikljb25VUkwuaCIKICNpbmNsdWRlICJTY3JvbGxUeXBlcy5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3
YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtMTQxLDcgKzE0Miw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUlj
b24oKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9u
YWxMb2FkKCkgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlVGl0
bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYpID0gMDsKLSAgICAgICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNw
YXRjaERpZENoYW5nZUljb25zKEljb25UeXBlKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaERpZENvbW1pdExvYWQoKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRj
aERpZEZhaWxQcm92aXNpb25hbExvYWQoY29uc3QgUmVzb3VyY2VFcnJvciYpID0gMDsKICAgICAg
ICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbExvYWQoY29uc3QgUmVzb3VyY2VFcnJvciYp
ID0gMDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDg1NjU0KQorKysgU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTEtMDQtMjIgIFRh
byBCYWkgIDxtaWNoYWVsYmFpQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQb3B1bGF0ZSB0b3VjaC1pY29uIHVybCB0byBGcmFt
ZUxvYWRlckNsaWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NTkxNDMKKworICAgICAgICBSZXNwZWN0ZWQgdGhlIGNoYW5nZSBvZiBGcmFtZUxvYWRl
ckNsaWVudC4KKyAgICAgICAgQWRkZWQgV2ViSWNvblVSTCBhbmQgV2ViSWNvblR5cGUgcmVzcG9u
ZGluZyB0aGUgbmV3IEljb25VUkwgYW5kIEljb25UeXBlLgorICAgICAgICBTdXBwb3J0ZWQgdG8g
Z2V0IHRoZSBtdWx0aXBsZSBpY29uIHVybHMuCisKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9G
ZWF0dXJlRGVmaW5lcy54Y2NvbmZpZzoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKwogMjAxMS0wNS0wMyAg
QWRhbSBSb2JlbiAgPGFyb2JlbkBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IG1vc3Qgc3RyaWN0
IFBhc3NPd25QdHIgdmlvbGF0aW9ucyBvbiBXaW5kb3dzCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9D
b25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwkocmV2aXNp
b24gODU2MzEpCisrKyBTb3VyY2UvV2ViS2l0Mi9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5l
cy54Y2NvbmZpZwkod29ya2luZyBjb3B5KQpAQCAtMTE4LDYgKzExOCw4IEBAIEVOQUJMRV9WSURF
T19UUkFDSyA9IDsKIAogRU5BQkxFX01FRElBX1NUQVRJU1RJQ1MgPSA7CiAKK0VOQUJMRV9UT1VD
SF9JQ09OX0xPQURJTkcgPSA7CisKIEVOQUJMRV9XRUJfQVVESU8gPSA7CiAKIEVOQUJMRV9XRUJf
U09DS0VUUyA9ICQoRU5BQkxFX1dFQl9TT0NLRVRTXyQoUkVBTF9QTEFURk9STV9OQU1FKSk7CkBA
IC0xMzIsNCArMTM0LDQgQEAgRU5BQkxFX1hIVE1MTVAgPSA7CiBFTkFCTEVfWFBBVEggPSBFTkFC
TEVfWFBBVEg7CiBFTkFCTEVfWFNMVCA9IEVOQUJMRV9YU0xUOwogCi1GRUFUVVJFX0RFRklORVMg
PSAkKEVOQUJMRV9MSU5LX1BSRUZFVENIKSAkKEVOQUJMRV9BQ0NFTEVSQVRFRF8yRF9DQU5WQVMp
ICQoRU5BQkxFX1dFQkdMKSAkKEVOQUJMRV8zRF9SRU5ERVJJTkcpICQoRU5BQkxFX0FOSU1BVElP
Tl9BUEkpICQoRU5BQkxFX0JMT0IpICQoRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HKSAkKEVOQUJM
RV9DTElFTlRfQkFTRURfR0VPTE9DQVRJT04pICQoRU5BQkxFX0RBVEFCQVNFKSAkKEVOQUJMRV9E
QVRBTElTVCkgJChFTkFCTEVfREFUQV9UUkFOU0ZFUl9JVEVNUykgJChFTkFCTEVfREVUQUlMUykg
JChFTkFCTEVfREVWSUNFX09SSUVOVEFUSU9OKSAkKEVOQUJMRV9ESVJFQ1RPUllfVVBMT0FEKSAk
KEVOQUJMRV9ET01fU1RPUkFHRSkgJChFTkFCTEVfRVZFTlRTT1VSQ0UpICQoRU5BQkxFX0ZJTFRF
UlMpICQoRU5BQkxFX0ZJTEVfU1lTVEVNKSAkKEVOQUJMRV9GVUxMU0NSRUVOX0FQSSkgJChFTkFC
TEVfR0VPTE9DQVRJT04pICQoRU5BQkxFX0lDT05EQVRBQkFTRSkgJChFTkFCTEVfSU5ERVhFRF9E
QVRBQkFTRSkgJChFTkFCTEVfSU5QVVRfU1BFRUNIKSAkKEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVH
R0VSKSAkKEVOQUJMRV9NQVRITUwpICQoRU5BQkxFX01FVEVSX1RBRykgJChFTkFCTEVfTk9USUZJ
Q0FUSU9OUykgJChFTkFCTEVfT0ZGTElORV9XRUJfQVBQTElDQVRJT05TKSAkKEVOQUJMRV9QQUdF
X1ZJU0lCSUxJVFlfQVBJKSAkKEVOQUJMRV9QUk9HUkVTU19UQUcpICQoRU5BQkxFX1JFR0lTVEVS
X1BST1RPQ09MX0hBTkRMRVIpICQoRU5BQkxFX1FVT1RBKSAkKEVOQUJMRV9TSEFSRURfV09SS0VS
UykgJChFTkFCTEVfU1ZHKSAkKEVOQUJMRV9TVkdfQU5JTUFUSU9OKSAkKEVOQUJMRV9TVkdfQVNf
SU1BR0UpICQoRU5BQkxFX1NWR19ET01fT0JKQ19CSU5ESU5HUykgJChFTkFCTEVfU1ZHX0ZPTlRT
KSAkKEVOQUJMRV9TVkdfRk9SRUlHTl9PQkpFQ1QpICQoRU5BQkxFX1NWR19VU0UpICQoRU5BQkxF
X1ZJREVPKSAkKEVOQUJMRV9WSURFT19UUkFDSykgJChFTkFCTEVfTUVESUFfU1RBVElTVElDUykg
JChFTkFCTEVfV0VCX0FVRElPKSAkKEVOQUJMRV9XRUJfU09DS0VUUykgJChFTkFCTEVfV0VCX1RJ
TUlORykgJChFTkFCTEVfV09SS0VSUykgJChFTkFCTEVfWEhUTUxNUCkgJChFTkFCTEVfWFBBVEgp
ICQoRU5BQkxFX1hTTFQpOworRkVBVFVSRV9ERUZJTkVTID0gJChFTkFCTEVfTElOS19QUkVGRVRD
SCkgJChFTkFCTEVfQUNDRUxFUkFURURfMkRfQ0FOVkFTKSAkKEVOQUJMRV9XRUJHTCkgJChFTkFC
TEVfM0RfUkVOREVSSU5HKSAkKEVOQUJMRV9BTklNQVRJT05fQVBJKSAkKEVOQUJMRV9CTE9CKSAk
KEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORykgJChFTkFCTEVfQ0xJRU5UX0JBU0VEX0dFT0xPQ0FU
SU9OKSAkKEVOQUJMRV9EQVRBQkFTRSkgJChFTkFCTEVfREFUQUxJU1QpICQoRU5BQkxFX0RBVEFf
VFJBTlNGRVJfSVRFTVMpICQoRU5BQkxFX0RFVEFJTFMpICQoRU5BQkxFX0RFVklDRV9PUklFTlRB
VElPTikgJChFTkFCTEVfRElSRUNUT1JZX1VQTE9BRCkgJChFTkFCTEVfRE9NX1NUT1JBR0UpICQo
RU5BQkxFX0VWRU5UU09VUkNFKSAkKEVOQUJMRV9GSUxURVJTKSAkKEVOQUJMRV9GSUxFX1NZU1RF
TSkgJChFTkFCTEVfRlVMTFNDUkVFTl9BUEkpICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJM
RV9JQ09OREFUQUJBU0UpICQoRU5BQkxFX0lOREVYRURfREFUQUJBU0UpICQoRU5BQkxFX0lOUFVU
X1NQRUVDSCkgJChFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dFUikgJChFTkFCTEVfTUFUSE1MKSAk
KEVOQUJMRV9NRVRFUl9UQUcpICQoRU5BQkxFX05PVElGSUNBVElPTlMpICQoRU5BQkxFX09GRkxJ
TkVfV0VCX0FQUExJQ0FUSU9OUykgJChFTkFCTEVfUEFHRV9WSVNJQklMSVRZX0FQSSkgJChFTkFC
TEVfUFJPR1JFU1NfVEFHKSAkKEVOQUJMRV9SRUdJU1RFUl9QUk9UT0NPTF9IQU5ETEVSKSAkKEVO
QUJMRV9RVU9UQSkgJChFTkFCTEVfU0hBUkVEX1dPUktFUlMpICQoRU5BQkxFX1NWRykgJChFTkFC
TEVfU1ZHX0FOSU1BVElPTikgJChFTkFCTEVfU1ZHX0FTX0lNQUdFKSAkKEVOQUJMRV9TVkdfRE9N
X09CSkNfQklORElOR1MpICQoRU5BQkxFX1NWR19GT05UUykgJChFTkFCTEVfU1ZHX0ZPUkVJR05f
T0JKRUNUKSAkKEVOQUJMRV9TVkdfVVNFKSAkKEVOQUJMRV9UT1VDSF9JQ09OX0xPQURJTkcpICQo
RU5BQkxFX1ZJREVPKSAkKEVOQUJMRV9WSURFT19UUkFDSykgJChFTkFCTEVfTUVESUFfU1RBVElT
VElDUykgJChFTkFCTEVfV0VCX0FVRElPKSAkKEVOQUJMRV9XRUJfU09DS0VUUykgJChFTkFCTEVf
V0VCX1RJTUlORykgJChFTkFCTEVfV09SS0VSUykgJChFTkFCTEVfWEhUTUxNUCkgJChFTkFCTEVf
WFBBVEgpICQoRU5BQkxFX1hTTFQpOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5jcHAJKHJldmlzaW9uIDg1NjMxKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQx
OCw3ICs0MTgsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJlCiAg
ICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRSZWNlaXZlVGl0bGVG
b3JGcmFtZShtX2ZyYW1lLT5mcmFtZUlEKCksIHRpdGxlLnN0cmluZygpLCBJbmplY3RlZEJ1bmRs
ZVVzZXJNZXNzYWdlRW5jb2Rlcih1c2VyRGF0YS5nZXQoKSkpKTsKIH0KIAotdm9pZCBXZWJGcmFt
ZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygpCit2b2lkIFdlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpkaXNwYXRjaERpZENoYW5nZUljb25zKFdlYkNvcmU6Okljb25UeXBlKQogewog
ICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5oCShyZXZpc2lvbiA4NTYzMSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtODUsNyAr
ODUsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVJY29u
KCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkU3RhcnRQcm92aXNpb25hbExvYWQoKTsK
ICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgV2ViQ29yZTo6
U3RyaW5nV2l0aERpcmVjdGlvbiYpOwotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENoYW5n
ZUljb25zKCk7CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoV2ViQ29y
ZTo6SWNvblR5cGUpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENvbW1pdExvYWQoKTsK
ICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGYWlsUHJvdmlzaW9uYWxMb2FkKGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlRXJyb3ImKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGYWls
TG9hZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CkluZGV4OiBTb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZwkocmV2aXNpb24gODU2NTQpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDExLTA0LTIyICBUYW8g
QmFpICA8bWljaGFlbGJhaUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgUG9wdWxhdGUgdG91Y2gtaWNvbiB1cmwgdG8gRnJhbWVM
b2FkZXJDbGllbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTU5MTQzCisKKyAgICAgICAgUmVzcGVjdGVkIHRoZSBjaGFuZ2Ugb2YgRnJhbWVMb2FkZXJD
bGllbnQuCisKKyAgICAgICAgKiBzcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnRJbXBsOjpkaXNwYXRjaERpZENoYW5nZUljb25z
KToKKyAgICAgICAgKiBzcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmg6CisKIDIwMTEtMDUtMDMg
IEp1bGllbiBDaGFmZnJhaXggIDxqY2hhZmZyYWl4QGNvZGVhdXJvcmEub3JnPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IERpbWl0cmkgR2xhemtvdi4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcAkocmV2aXNpb24gODU2
MzEpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC03ODAsNyArNzgwLDcgQEAgdm9pZCBGcmFtZUxvYWRlckNs
aWVudEltcGw6OmRpc3BhdGNoRGlkUgogICAgICAgICBtX3dlYkZyYW1lLT5jbGllbnQoKS0+ZGlk
UmVjZWl2ZVRpdGxlKG1fd2ViRnJhbWUsIHRpdGxlLnN0cmluZygpLCB0aXRsZS5kaXJlY3Rpb24o
KSA9PSBMVFIgPyBXZWJUZXh0RGlyZWN0aW9uTGVmdFRvUmlnaHQgOiBXZWJUZXh0RGlyZWN0aW9u
UmlnaHRUb0xlZnQpOwogfQogCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6ZGlzcGF0Y2hE
aWRDaGFuZ2VJY29ucygpCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6ZGlzcGF0Y2hEaWRD
aGFuZ2VJY29ucyhXZWJDb3JlOjpJY29uVHlwZSB0eXBlKQogewogICAgIGlmIChtX3dlYkZyYW1l
LT5jbGllbnQoKSkKICAgICAgICAgbV93ZWJGcmFtZS0+Y2xpZW50KCktPmRpZENoYW5nZUljb25z
KG1fd2ViRnJhbWUpOwpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2Fk
ZXJDbGllbnRJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
RnJhbWVMb2FkZXJDbGllbnRJbXBsLmgJKHJldmlzaW9uIDg1NjMxKQorKysgU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEwNSw3ICsxMDUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVj
ZWl2ZUljb24oKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFs
TG9hZCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBX
ZWJDb3JlOjpTdHJpbmdXaXRoRGlyZWN0aW9uJik7Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
RGlkQ2hhbmdlSWNvbnMoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VJY29u
cyhXZWJDb3JlOjpJY29uVHlwZSk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ29tbWl0
TG9hZCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxQcm92aXNpb25hbExvYWQo
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRj
aERpZEZhaWxMb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2VmbC9D
aGFuZ2VMb2cJKHJldmlzaW9uIDg1NjU0KQorKysgU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTEtMDQtMjIgIFRhbyBCYWkgIDxt
aWNoYWVsYmFpQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBQb3B1bGF0ZSB0b3VjaC1pY29uIHVybCB0byBGcmFtZUxvYWRlckNs
aWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTkx
NDMKKworICAgICAgICBSZXNwZWN0IHRoZSBpbnRlcmZhY2UgY2hhbmdlIGluIEZyYW1lTG9hZGVy
Q2xpZW50CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hEaWRD
aGFuZ2VJY29ucyk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRF
ZmwuaDoKKwogMjAxMS0wNS0wMyAgTGVhbmRybyBQZXJlaXJhICA8bGVhbmRyb0Bwcm9mdXNpb24u
bW9iaT4KIAogICAgICAgICBbRUZMXSBVbnJldmlld2VkIGJ1aWxkIGZpeCBmb3IgTkVUV09SS19C
QUNLRU5EPWN1cmwuCkluZGV4OiBTb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFt
ZUxvYWRlckNsaWVudEVmbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9lZmwvV2Vi
Q29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwCShyZXZpc2lvbiA4NTYzMSkKKysr
IFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTg3LDcgKzU4Nyw3IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGll
bnRFZmw6OmRpc3BhdGNoRGlkUmUKICAgICBld2tfdmlld190aXRsZV9zZXQobV92aWV3LCBjcy5k
YXRhKCkpOwogfQogCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERpZENoYW5n
ZUljb25zKCkKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGlkQ2hhbmdlSWNv
bnMoV2ViQ29yZTo6SWNvblR5cGUpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KSW5kZXg6
IFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2Fk
ZXJDbGllbnRFZmwuaAkocmV2aXNpb24gODU2MzEpCisrKyBTb3VyY2UvV2ViS2l0L2VmbC9XZWJD
b3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDMs
NyArMTAzLDcgQEAgY2xhc3MgRnJhbWVMb2FkZXJDbGllbnRFZmwgOiBwdWJsaWMgRnJhbQogICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVJY29uKCk7CiAgICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoRGlkU3RhcnRQcm92aXNpb25hbExvYWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlz
cGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYpOwotICAgIHZp
cnR1YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZUljb25zKCk7CisgICAgdmlydHVhbCB2b2lkIGRp
c3BhdGNoRGlkQ2hhbmdlSWNvbnMoV2ViQ29yZTo6SWNvblR5cGUpOwogICAgIHZpcnR1YWwgdm9p
ZCBkaXNwYXRjaERpZENvbW1pdExvYWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRG
YWlsUHJvdmlzaW9uYWxMb2FkKGNvbnN0IFJlc291cmNlRXJyb3ImKTsKICAgICB2aXJ0dWFsIHZv
aWQgZGlzcGF0Y2hEaWRGYWlsTG9hZChjb25zdCBSZXNvdXJjZUVycm9yJik7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9ndGsv
Q2hhbmdlTG9nCShyZXZpc2lvbiA4NTY1NCkKKysrIFNvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDExLTA0LTIyICBUYW8gQmFpICA8
bWljaGFlbGJhaUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgUG9wdWxhdGUgdG91Y2gtaWNvbiB1cmwgdG8gRnJhbWVMb2FkZXJD
bGllbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU5
MTQzCisKKyAgICAgICAgUmVzcGVjdCB0aGUgaW50ZXJmYWNlIGNoYW5nZSBpbiBGcmFtZUxvYWRl
ckNsaWVudC4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3Rr
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ2hh
bmdlSWNvbnMpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3Rr
Lmg6CisKIDIwMTEtMDUtMDMgIEp1bGllbiBDaGFmZnJhaXggIDxqY2hhZmZyYWl4QGNvZGVhdXJv
cmEub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERpbWl0cmkgR2xhemtvdi4KSW5kZXg6IFNv
dXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRl
ckNsaWVudEd0ay5jcHAJKHJldmlzaW9uIDg1NjMxKQorKysgU291cmNlL1dlYktpdC9ndGsvV2Vi
Q29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05
NjksNyArOTY5LDcgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRSZWNlaQog
ICAgIH0KIH0KIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDaGFuZ2VJY29u
cygpCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENoYW5nZUljb25zKFdlYkNv
cmU6Okljb25UeXBlKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50
R3RrLmgJKHJldmlzaW9uIDg1NjMxKQorKysgU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBv
cnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuaAkod29ya2luZyBjb3B5KQpAQCAtODIsNyArODIsNyBA
QCBuYW1lc3BhY2UgV2ViS2l0IHsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVj
ZWl2ZUljb24oKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkU3RhcnRQcm92aXNp
b25hbExvYWQoKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxl
KGNvbnN0IFdlYkNvcmU6OlN0cmluZ1dpdGhEaXJlY3Rpb24mKTsKLSAgICAgICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoRGlkQ2hhbmdlSWNvbnMoV2ViQ29yZTo6SWNvblR5cGUpOwogICAgICAgICB2aXJ0dWFsIHZv
aWQgZGlzcGF0Y2hEaWRDb21taXRMb2FkKCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRj
aERpZEZhaWxQcm92aXNpb25hbExvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwog
ICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGYWlsTG9hZChjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yJik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiA4NTY1NCkKKysr
IFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3
IEBACisyMDExLTA0LTIyICBUYW8gQmFpICA8bWljaGFlbGJhaUBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUG9wdWxhdGUgdG91
Y2gtaWNvbiB1cmwgdG8gRnJhbWVMb2FkZXJDbGllbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU5MTQzCisKKyAgICAgICAgUmVzcGVjdCB0aGUgaW50
ZXJmYWNlIGNoYW5nZSBpbiBGcmFtZUxvYWRlckNsaWVudC4KKworICAgICAgICAqIENvbmZpZ3Vy
YXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQubW06CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0
Y2hEaWRDaGFuZ2VJY29ucyk6CisKIDIwMTEtMDUtMDMgIEp1bGllbiBDaGFmZnJhaXggIDxqY2hh
ZmZyYWl4QGNvZGVhdXJvcmEub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERpbWl0cmkgR2xh
emtvdi4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZp
bmVzLnhjY29uZmlnCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL0NvbmZpZ3VyYXRp
b25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCShyZXZpc2lvbiA4NTYzMSkKKysrIFNvdXJjZS9X
ZWJLaXQvbWFjL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCSh3b3JraW5n
IGNvcHkpCkBAIC0xMTgsNiArMTE4LDggQEAgRU5BQkxFX1ZJREVPX1RSQUNLID0gOwogCiBFTkFC
TEVfTUVESUFfU1RBVElTVElDUyA9IDsKIAorRU5BQkxFX1RPVUNIX0lDT05fTE9BRElORyA9IDsK
KwogRU5BQkxFX1dFQl9BVURJTyA9IDsKIAogRU5BQkxFX1dFQl9TT0NLRVRTID0gJChFTkFCTEVf
V0VCX1NPQ0tFVFNfJChSRUFMX1BMQVRGT1JNX05BTUUpKTsKQEAgLTEzMiw0ICsxMzQsNCBAQCBF
TkFCTEVfWEhUTUxNUCA9IDsKIEVOQUJMRV9YUEFUSCA9IEVOQUJMRV9YUEFUSDsKIEVOQUJMRV9Y
U0xUID0gRU5BQkxFX1hTTFQ7CiAKLUZFQVRVUkVfREVGSU5FUyA9ICQoRU5BQkxFX0xJTktfUFJF
RkVUQ0gpICQoRU5BQkxFX0FDQ0VMRVJBVEVEXzJEX0NBTlZBUykgJChFTkFCTEVfV0VCR0wpICQo
RU5BQkxFXzNEX1JFTkRFUklORykgJChFTkFCTEVfQU5JTUFUSU9OX0FQSSkgJChFTkFCTEVfQkxP
QikgJChFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcpICQoRU5BQkxFX0NMSUVOVF9CQVNFRF9HRU9M
T0NBVElPTikgJChFTkFCTEVfREFUQUJBU0UpICQoRU5BQkxFX0RBVEFMSVNUKSAkKEVOQUJMRV9E
QVRBX1RSQU5TRkVSX0lURU1TKSAkKEVOQUJMRV9ERVRBSUxTKSAkKEVOQUJMRV9ERVZJQ0VfT1JJ
RU5UQVRJT04pICQoRU5BQkxFX0RJUkVDVE9SWV9VUExPQUQpICQoRU5BQkxFX0RPTV9TVE9SQUdF
KSAkKEVOQUJMRV9FVkVOVFNPVVJDRSkgJChFTkFCTEVfRklMVEVSUykgJChFTkFCTEVfRklMRV9T
WVNURU0pICQoRU5BQkxFX0ZVTExTQ1JFRU5fQVBJKSAkKEVOQUJMRV9HRU9MT0NBVElPTikgJChF
TkFCTEVfSUNPTkRBVEFCQVNFKSAkKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFKSAkKEVOQUJMRV9J
TlBVVF9TUEVFQ0gpICQoRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIpICQoRU5BQkxFX01BVEhN
TCkgJChFTkFCTEVfTUVURVJfVEFHKSAkKEVOQUJMRV9OT1RJRklDQVRJT05TKSAkKEVOQUJMRV9P
RkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpICQoRU5BQkxFX1BBR0VfVklTSUJJTElUWV9BUEkpICQo
RU5BQkxFX1BST0dSRVNTX1RBRykgJChFTkFCTEVfUkVHSVNURVJfUFJPVE9DT0xfSEFORExFUikg
JChFTkFCTEVfUVVPVEEpICQoRU5BQkxFX1NIQVJFRF9XT1JLRVJTKSAkKEVOQUJMRV9TVkcpICQo
RU5BQkxFX1NWR19BTklNQVRJT04pICQoRU5BQkxFX1NWR19BU19JTUFHRSkgJChFTkFCTEVfU1ZH
X0RPTV9PQkpDX0JJTkRJTkdTKSAkKEVOQUJMRV9TVkdfRk9OVFMpICQoRU5BQkxFX1NWR19GT1JF
SUdOX09CSkVDVCkgJChFTkFCTEVfU1ZHX1VTRSkgJChFTkFCTEVfVklERU8pICQoRU5BQkxFX1ZJ
REVPX1RSQUNLKSAkKEVOQUJMRV9NRURJQV9TVEFUSVNUSUNTKSAkKEVOQUJMRV9XRUJfQVVESU8p
ICQoRU5BQkxFX1dFQl9TT0NLRVRTKSAkKEVOQUJMRV9XRUJfVElNSU5HKSAkKEVOQUJMRV9XT1JL
RVJTKSAkKEVOQUJMRV9YSFRNTE1QKSAkKEVOQUJMRV9YUEFUSCkgJChFTkFCTEVfWFNMVCk7CitG
RUFUVVJFX0RFRklORVMgPSAkKEVOQUJMRV9MSU5LX1BSRUZFVENIKSAkKEVOQUJMRV9BQ0NFTEVS
QVRFRF8yRF9DQU5WQVMpICQoRU5BQkxFX1dFQkdMKSAkKEVOQUJMRV8zRF9SRU5ERVJJTkcpICQo
RU5BQkxFX0FOSU1BVElPTl9BUEkpICQoRU5BQkxFX0JMT0IpICQoRU5BQkxFX0NIQU5ORUxfTUVT
U0FHSU5HKSAkKEVOQUJMRV9DTElFTlRfQkFTRURfR0VPTE9DQVRJT04pICQoRU5BQkxFX0RBVEFC
QVNFKSAkKEVOQUJMRV9EQVRBTElTVCkgJChFTkFCTEVfREFUQV9UUkFOU0ZFUl9JVEVNUykgJChF
TkFCTEVfREVUQUlMUykgJChFTkFCTEVfREVWSUNFX09SSUVOVEFUSU9OKSAkKEVOQUJMRV9ESVJF
Q1RPUllfVVBMT0FEKSAkKEVOQUJMRV9ET01fU1RPUkFHRSkgJChFTkFCTEVfRVZFTlRTT1VSQ0Up
ICQoRU5BQkxFX0ZJTFRFUlMpICQoRU5BQkxFX0ZJTEVfU1lTVEVNKSAkKEVOQUJMRV9GVUxMU0NS
RUVOX0FQSSkgJChFTkFCTEVfR0VPTE9DQVRJT04pICQoRU5BQkxFX0lDT05EQVRBQkFTRSkgJChF
TkFCTEVfSU5ERVhFRF9EQVRBQkFTRSkgJChFTkFCTEVfSU5QVVRfU1BFRUNIKSAkKEVOQUJMRV9K
QVZBU0NSSVBUX0RFQlVHR0VSKSAkKEVOQUJMRV9NQVRITUwpICQoRU5BQkxFX01FVEVSX1RBRykg
JChFTkFCTEVfTk9USUZJQ0FUSU9OUykgJChFTkFCTEVfT0ZGTElORV9XRUJfQVBQTElDQVRJT05T
KSAkKEVOQUJMRV9QQUdFX1ZJU0lCSUxJVFlfQVBJKSAkKEVOQUJMRV9QUk9HUkVTU19UQUcpICQo
RU5BQkxFX1JFR0lTVEVSX1BST1RPQ09MX0hBTkRMRVIpICQoRU5BQkxFX1FVT1RBKSAkKEVOQUJM
RV9TSEFSRURfV09SS0VSUykgJChFTkFCTEVfU1ZHKSAkKEVOQUJMRV9TVkdfQU5JTUFUSU9OKSAk
KEVOQUJMRV9TVkdfQVNfSU1BR0UpICQoRU5BQkxFX1NWR19ET01fT0JKQ19CSU5ESU5HUykgJChF
TkFCTEVfU1ZHX0ZPTlRTKSAkKEVOQUJMRV9TVkdfRk9SRUlHTl9PQkpFQ1QpICQoRU5BQkxFX1NW
R19VU0UpICQoRU5BQkxFX1RPVUNIX0lDT05fTE9BRElORykgJChFTkFCTEVfVklERU8pICQoRU5B
QkxFX1ZJREVPX1RSQUNLKSAkKEVOQUJMRV9NRURJQV9TVEFUSVNUSUNTKSAkKEVOQUJMRV9XRUJf
QVVESU8pICQoRU5BQkxFX1dFQl9TT0NLRVRTKSAkKEVOQUJMRV9XRUJfVElNSU5HKSAkKEVOQUJM
RV9XT1JLRVJTKSAkKEVOQUJMRV9YSFRNTE1QKSAkKEVOQUJMRV9YUEFUSCkgJChFTkFCTEVfWFNM
VCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgJKHJldmlzaW9uIDg1NjMxKQorKysgU291cmNlL1dlYktp
dC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAkod29ya2luZyBjb3B5
KQpAQCAtMTAyLDcgKzEwMiw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
RGlkUmVjZWl2ZUljb24oKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRTdGFydFByb3Zp
c2lvbmFsTG9hZCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShj
b25zdCBXZWJDb3JlOjpTdHJpbmdXaXRoRGlyZWN0aW9uJik7Ci0gICAgdmlydHVhbCB2b2lkIGRp
c3BhdGNoRGlkQ2hhbmdlSWNvbnMoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFu
Z2VJY29ucyhXZWJDb3JlOjpJY29uVHlwZSk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlk
Q29tbWl0TG9hZCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxQcm92aXNpb25h
bExvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwogICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaERpZEZhaWxMb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50Lm1tCShyZXZpc2lvbiA4NTYzMSkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC02
MzMsNyArNjMzLDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRSZQog
ICAgICAgICBDYWxsRnJhbWVMb2FkRGVsZWdhdGUoaW1wbGVtZW50YXRpb25zLT5kaWRSZWNlaXZl
VGl0bGVGb3JGcmFtZUZ1bmMsIHdlYlZpZXcsIEBzZWxlY3Rvcih3ZWJWaWV3OmRpZFJlY2VpdmVU
aXRsZTpmb3JGcmFtZTopLCAoTlNTdHJpbmcgKil0aXRsZS5zdHJpbmcoKSwgbV93ZWJGcmFtZS5n
ZXQoKSk7CiB9CiAKLXZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ2hhbmdl
SWNvbnMoKQordm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDaGFuZ2VJY29u
cyhXZWJDb3JlOjpJY29uVHlwZSkKIHsKICAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzIHRv
IGFsbG93IGNvbnRhaW5lciB0byB1cGRhdGUgZmF2aWNvbi4KIH0KSW5kZXg6IFNvdXJjZS9XZWJL
aXQvcXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9n
CShyZXZpc2lvbiA4NTY1NCkKKysrIFNvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTEtMDQtMjIgIFRhbyBCYWkgIDxtaWNoYWVsYmFp
QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBQb3B1bGF0ZSB0b3VjaC1pY29uIHVybCB0byBGcmFtZUxvYWRlckNsaWVudAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTkxNDMKKworICAg
ICAgICBSZXNwZWN0IHRoZSBpbnRlcmZhY2UgY2hhbmdlIGluIEZyYW1lTG9hZGVyQ2xpZW50Lgor
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERpZENoYW5nZUljb25z
KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0Lmg6CisKIDIw
MTEtMDUtMDMgIEp1bGllbiBDaGFmZnJhaXggIDxqY2hhZmZyYWl4QGNvZGVhdXJvcmEub3JnPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IERpbWl0cmkgR2xhemtvdi4KSW5kZXg6IFNvdXJjZS9XZWJL
aXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNw
cAkocmV2aXNpb24gODU2MzEpCisrKyBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Zy
YW1lTG9hZGVyQ2xpZW50UXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NTksNyArNDU5LDcgQEAg
dm9pZCBGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERpZFJlYwogfQogCiAKLXZvaWQgRnJh
bWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygpCit2b2lkIEZyYW1lTG9h
ZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoV2ViQ29yZTo6SWNvblR5cGUpCiB7
CiAgICAgaWYgKGR1bXBGcmFtZUxvYWRlckNhbGxiYWNrcykKICAgICAgICAgcHJpbnRmKCIlcyAt
IGRpZENoYW5nZUljb25zXG4iLCBxUHJpbnRhYmxlKGRydERlc2NyaXB0aW9uU3VpdGFibGVGb3JU
ZXN0UmVzdWx0KG1fZnJhbWUpKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBw
b3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3F0
L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaAkocmV2aXNpb24gODU2MzEpCisr
KyBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaAko
d29ya2luZyBjb3B5KQpAQCAtMTExLDcgKzExMSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbigpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERp
ZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVj
ZWl2ZVRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mKTsKLSAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygpOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENo
YW5nZUljb25zKFdlYkNvcmU6Okljb25UeXBlKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hE
aWRDb21taXRMb2FkKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbFByb3Zpc2lv
bmFsTG9hZChjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
RGlkRmFpbExvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwpJbmRleDogU291cmNl
L1dlYktpdC93aW4vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL0No
YW5nZUxvZwkocmV2aXNpb24gODU2NTQpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAxMS0wNC0yMiAgVGFvIEJhaSAgPG1p
Y2hhZWxiYWlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFBvcHVsYXRlIHRvdWNoLWljb24gdXJsIHRvIEZyYW1lTG9hZGVyQ2xp
ZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01OTE0
MworCisgICAgICAgIFJlc3BlY3QgdGhlIGludGVyZmFjZSBjaGFuZ2UgaW4gRnJhbWVMb2FkZXJD
bGllbnQuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5j
cHA6CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDaGFuZ2VJY29u
cyk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKwog
MjAxMS0wNS0wMyAgQWRhbSBSb2JlbiAgPGFyb2JlbkBhcHBsZS5jb20+CiAKICAgICAgICAgRml4
IG1vc3Qgc3RyaWN0IFBhc3NPd25QdHIgdmlvbGF0aW9ucyBvbiBXaW5kb3dzCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuY3BwCShyZXZpc2lvbiA4NTYzMSkKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcz
LDggKzM3MywxMSBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJlCiAg
ICAgICAgIGZyYW1lTG9hZERlbGVnYXRlLT5kaWRSZWNlaXZlVGl0bGUod2ViVmlldywgQlN0cmlu
Zyh0aXRsZS5zdHJpbmcoKSksIG1fd2ViRnJhbWUpOwogfQogCi12b2lkIFdlYkZyYW1lTG9hZGVy
Q2xpZW50OjpkaXNwYXRjaERpZENoYW5nZUljb25zKCkKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OmRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoV2ViQ29yZTo6SWNvblR5cGUgdHlwZSkKIHsKKyAg
ICBpZiAodHlwZSAhPSBXZWJDb3JlOjpGYXZpY29uKQorICAgICAgICByZXR1cm47CisKICAgICBX
ZWJWaWV3KiB3ZWJWaWV3ID0gbV93ZWJGcmFtZS0+d2ViVmlldygpOwogICAgIENPTVB0cjxJV2Vi
RnJhbWVMb2FkRGVsZWdhdGVQcml2YXRlPiBmcmFtZUxvYWREZWxlZ2F0ZVByaXY7CiAgICAgaWYg
KEZBSUxFRCh3ZWJWaWV3LT5mcmFtZUxvYWREZWxlZ2F0ZVByaXZhdGUoJmZyYW1lTG9hZERlbGVn
YXRlUHJpdikpIHx8ICFmcmFtZUxvYWREZWxlZ2F0ZVByaXYpCkluZGV4OiBTb3VyY2UvV2ViS2l0
L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgJ
KHJldmlzaW9uIDg1NjMxKQorKysgU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNzAsNyArNzAsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUljb24oKTsKICAgICB2aXJ0
dWFsIHZvaWQgZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpOwogICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBXZWJDb3JlOjpTdHJpbmdXaXRoRGly
ZWN0aW9uJik7Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucyhXZWJDb3JlOjpJY29uVHlwZSk7
CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ29tbWl0TG9hZCgpOwogICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaERpZEZpbmlzaERvY3VtZW50TG9hZCgpOwogICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaERpZEZpbmlzaExvYWQoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luY2UvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luY2UvQ2hhbmdlTG9nCShyZXZpc2lv
biA4NTY1NCkKKysrIFNvdXJjZS9XZWJLaXQvd2luY2UvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMTYgQEAKKzIwMTEtMDQtMjIgIFRhbyBCYWkgIDxtaWNoYWVsYmFpQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBQb3B1bGF0ZSB0b3VjaC1pY29uIHVybCB0byBGcmFtZUxvYWRlckNsaWVudAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTkxNDMKKworICAgICAgICBS
ZXNwZWN0IHRoZSBpbnRlcmZhY2UgY2hhbmdlIGluIEZyYW1lTG9hZGVyQ2xpZW50LgorCisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXaW5DRS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50V2luQ0U6OmRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMp
OgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V2luQ0UuaDoKKwog
MjAxMS0wNS0wMSAgUGF0cmljayBHYW5zdGVyZXIgIDxwYXJvZ2FAd2Via2l0Lm9yZz4KIAogICAg
ICAgICBbV0lOXSBVbnJldmlld2VkIGJ1aWxkZml4IGFmdGVyIHI4NTQzNC4KSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXaW5DRS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxv
YWRlckNsaWVudFdpbkNFLmNwcAkocmV2aXNpb24gODU2MzEpCisrKyBTb3VyY2UvV2ViS2l0L3dp
bmNlL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V2luQ0UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zNzYsNyArMzc2LDcgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudFdpbkNFOjpkaXNw
YXRjaERpZAogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXJDbGll
bnRXaW5DRTo6ZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygpCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50
V2luQ0U6OmRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoV2ViQ29yZTo6SWNvblR5cGUpCiB7CiAgICAg
bm90SW1wbGVtZW50ZWQoKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1
cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXaW5DRS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXaW5DRS5oCShyZXZpc2lv
biA4NTYzMSkKKysrIFNvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2Fk
ZXJDbGllbnRXaW5DRS5oCSh3b3JraW5nIGNvcHkpCkBAIC03Nyw3ICs3Nyw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbigpOwogICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCk7CiAgICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFdlYkNvcmU6OlN0cmluZ1dpdGhEaXJlY3Rp
b24mKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygpOworICAgIHZp
cnR1YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZUljb25zKFdlYkNvcmU6Okljb25UeXBlKTsKICAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDb21taXRMb2FkKCk7CiAgICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9hZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yJik7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbExvYWQoY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VFcnJvciYpOwpJbmRleDogU291cmNlL1dlYktpdC93eC9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC93eC9DaGFuZ2VMb2cJKHJldmlzaW9uIDg1NjU0KQor
KysgU291cmNlL1dlYktpdC93eC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
NiBAQAorMjAxMS0wNC0yMiAgVGFvIEJhaSAgPG1pY2hhZWxiYWlAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBvcHVsYXRlIHRv
dWNoLWljb24gdXJsIHRvIEZyYW1lTG9hZGVyQ2xpZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01OTE0MworCisgICAgICAgIFJlc3BlY3QgdGhlIGlu
dGVyZmFjZSBjaGFuZ2UgaW4gRnJhbWVMb2FkZXJDbGllbnQuCisKKyAgICAgICAgKiBXZWJLaXRT
dXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVM
b2FkZXJDbGllbnRXeDo6ZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucyk6CisgICAgICAgICogV2ViS2l0
U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFd4Lmg6CisKIDIwMTEtMDQtMjMgIEtldmluIE9sbGl2
aWVyICA8a2V2aW5vQHRoZW9sbGl2aWVycy5jb20+CiAKICAgICAgICAgW3d4XSBVbnJldmlld2Vk
IGJ1aWxkIGZpeC4gRml4ZWQgY2FwaXRhbGl6YXRpb24gZm9yIGNhc2Ugc2Vuc2l0aXZlIGZpbGVz
eXN0ZW1zLgpJbmRleDogU291cmNlL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVy
Q2xpZW50V3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9y
dC9GcmFtZUxvYWRlckNsaWVudFd4LmNwcAkocmV2aXNpb24gODU2MzEpCisrKyBTb3VyY2UvV2Vi
S2l0L3d4L1dlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTMyNyw3ICszMjcsNyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50V3g6OmRpc3BhdGNo
RGlkRmluCiAgICAgfQogfQogCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50V3g6OmRpc3BhdGNoRGlk
Q2hhbmdlSWNvbnMoKQordm9pZCBGcmFtZUxvYWRlckNsaWVudFd4OjpkaXNwYXRjaERpZENoYW5n
ZUljb25zKFdlYkNvcmU6Okljb25UeXBlKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRl
ckNsaWVudFd4LmgJKHJldmlzaW9uIDg1NjMxKQorKysgU291cmNlL1dlYktpdC93eC9XZWJLaXRT
dXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guaAkod29ya2luZyBjb3B5KQpAQCAtMTA5LDcgKzEw
OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
RGlkRmluaXNoTG9hZCgpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGaXJzdExh
eW91dCgpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGaXJzdFZpc3VhbGx5Tm9u
RW1wdHlMYXlvdXQoKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlSWNv
bnMoKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoV2ViQ29y
ZTo6SWNvblR5cGUpOwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFNob3coKTsKICAg
ICAgICAgdmlydHVhbCB2b2lkIGNhbmNlbFBvbGljeUNoZWNrKCk7CkluZGV4OiBUb29scy9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA4NTY1NCkKKysr
IFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDExLTA1
LTAzICBUYW8gQmFpICA8bWljaGFlbGJhaUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUG9wdWxhdGUgdG91Y2gtaWNvbiB1cmwg
dG8gRnJhbWVMb2FkZXJDbGllbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTU5MTQzCisKKyAgICAgICAgRGlzYWJsZSB0b3VjaCBpY29uIGJ5IGRlZmF1
bHQuIAorCisgICAgICAgICogU2NyaXB0cy9idWlsZC13ZWJraXQ6CisKIDIwMTEtMDUtMDMgIEFk
YW0gUm9iZW4gIDxhcm9iZW5AYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBtb3N0IHN0cmljdCBQ
YXNzT3duUHRyIHZpb2xhdGlvbnMgb24gV2luZG93cwpJbmRleDogVG9vbHMvU2NyaXB0cy9idWls
ZC13ZWJraXQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9idWlsZC13ZWJraXQJKHJldmlz
aW9uIDg1NjMxKQorKysgVG9vbHMvU2NyaXB0cy9idWlsZC13ZWJraXQJKHdvcmtpbmcgY29weSkK
QEAgLTExMiw2ICsxMTIsNyBAQCBteSAoCiAgICAgJHN5c3RlbU1hbGxvY1N1cHBvcnQsCiAgICAg
JHRpbGVkQmFja2luZ1N0b3JlU3VwcG9ydCwKICAgICAkdG91Y2hFdmVudHNTdXBwb3J0LAorICAg
ICR0b3VjaEljb25Mb2FkaW5nU3VwcG9ydCwKICAgICAkdmlkZW9TdXBwb3J0LAogICAgICR3Y3Nz
U3VwcG9ydCwKICAgICAkd2ViQXVkaW9TdXBwb3J0LApAQCAtMjcyLDYgKzI3Myw5IEBAIG15IEBm
ZWF0dXJlcyA9ICgKICAgICB7IG9wdGlvbiA9PiAidG91Y2gtZXZlbnRzIiwgZGVzYyA9PiAiVG9n
Z2xlIFRvdWNoIEV2ZW50cyBzdXBwb3J0IiwKICAgICAgIGRlZmluZSA9PiAiRU5BQkxFX1RPVUNI
X0VWRU5UUyIsIGRlZmF1bHQgPT4gaXNRdCgpLCB2YWx1ZSA9PiBcJHRvdWNoRXZlbnRzU3VwcG9y
dCB9LAogCisgICAgeyBvcHRpb24gPT4gInRvdWNoLWljb24tbG9hZGluZyIsIGRlc2MgPT4gIlRv
Z2dsZSBUb3VjaCBJY29uIExvYWRpbmcgU3VwcG9ydCIsCisgICAgICBkZWZpbmUgPT4gIkVOQUJM
RV9UT1VDSF9JQ09OX0xPQURJTkciLCBkZWZhdWx0ID0+IDAsIHZhbHVlID0+IFwkdG91Y2hJY29u
TG9hZGluZ1N1cHBvcnQgfSwKKwogICAgIHsgb3B0aW9uID0+ICJ2aWRlbyIsIGRlc2MgPT4gIlRv
Z2dsZSBWaWRlbyBzdXBwb3J0IiwKICAgICAgIGRlZmluZSA9PiAiRU5BQkxFX1ZJREVPIiwgZGVm
YXVsdCA9PiAoaXNBcHBsZVdlYktpdCgpIHx8IGlzR3RrKCkpLCB2YWx1ZSA9PiBcJHZpZGVvU3Vw
cG9ydCB9LAogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>92170</attachid>
            <date>2011-05-03 16:57:20 -0700</date>
            <delta_ts>2011-05-04 08:50:51 -0700</delta_ts>
            <desc>Address the comment</desc>
            <filename>patch.11</filename>
            <type>text/plain</type>
            <size>66866</size>
            <attacher>michaelbai</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gODU2NTQpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAK
KzIwMTEtMDUtMDMgIFRhbyBCYWkgIDxtaWNoYWVsYmFpQGNocm9taXVtLm9yZz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQb3B1bGF0ZSB0b3VjaC1p
Y29uIHVybCB0byBGcmFtZUxvYWRlckNsaWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTkxNDMKKworICAgICAgICAqIENvbmZpZ3VyYXRpb25zL0Zl
YXR1cmVEZWZpbmVzLnhjY29uZmlnOgorCiAyMDExLTA1LTAzICBYYW4gTG9wZXogIDx4bG9wZXpA
aWdhbGlhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbmRlcnMgQ2FybHNzb24uCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNj
b25maWcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NvbmZpZ3VyYXRpb25z
L0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCShyZXZpc2lvbiA4NTYzMSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwkod29ya2lu
ZyBjb3B5KQpAQCAtMTE3LDYgKzExNyw4IEBAIEVOQUJMRV9WSURFT19UUkFDSyA9IDsKIAogRU5B
QkxFX01FRElBX1NUQVRJU1RJQ1MgPSA7CiAKK0VOQUJMRV9UT1VDSF9JQ09OX0xPQURJTkcgPSA7
CisKIEVOQUJMRV9XRUJfQVVESU8gPSA7CiAKIEVOQUJMRV9XRUJfU09DS0VUUyA9ICQoRU5BQkxF
X1dFQl9TT0NLRVRTXyQoUkVBTF9QTEFURk9STV9OQU1FKSk7CkBAIC0xMzEsNCArMTMzLDQgQEAg
RU5BQkxFX1hIVE1MTVAgPSA7CiBFTkFCTEVfWFBBVEggPSBFTkFCTEVfWFBBVEg7CiBFTkFCTEVf
WFNMVCA9IEVOQUJMRV9YU0xUOwogCi1GRUFUVVJFX0RFRklORVMgPSAkKEVOQUJMRV9MSU5LX1BS
RUZFVENIKSAkKEVOQUJMRV9BQ0NFTEVSQVRFRF8yRF9DQU5WQVMpICQoRU5BQkxFX1dFQkdMKSAk
KEVOQUJMRV8zRF9SRU5ERVJJTkcpICQoRU5BQkxFX0FOSU1BVElPTl9BUEkpICQoRU5BQkxFX0JM
T0IpICQoRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HKSAkKEVOQUJMRV9DTElFTlRfQkFTRURfR0VP
TE9DQVRJT04pICQoRU5BQkxFX0RBVEFCQVNFKSAkKEVOQUJMRV9EQVRBTElTVCkgJChFTkFCTEVf
REFUQV9UUkFOU0ZFUl9JVEVNUykgJChFTkFCTEVfREVUQUlMUykgJChFTkFCTEVfREVWSUNFX09S
SUVOVEFUSU9OKSAkKEVOQUJMRV9ESVJFQ1RPUllfVVBMT0FEKSAkKEVOQUJMRV9ET01fU1RPUkFH
RSkgJChFTkFCTEVfRVZFTlRTT1VSQ0UpICQoRU5BQkxFX0ZJTFRFUlMpICQoRU5BQkxFX0ZJTEVf
U1lTVEVNKSAkKEVOQUJMRV9GVUxMU0NSRUVOX0FQSSkgJChFTkFCTEVfR0VPTE9DQVRJT04pICQo
RU5BQkxFX0lDT05EQVRBQkFTRSkgJChFTkFCTEVfSU5ERVhFRF9EQVRBQkFTRSkgJChFTkFCTEVf
SU5QVVRfU1BFRUNIKSAkKEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSKSAkKEVOQUJMRV9NQVRI
TUwpICQoRU5BQkxFX01FVEVSX1RBRykgJChFTkFCTEVfTk9USUZJQ0FUSU9OUykgJChFTkFCTEVf
T0ZGTElORV9XRUJfQVBQTElDQVRJT05TKSAkKEVOQUJMRV9QQUdFX1ZJU0lCSUxJVFlfQVBJKSAk
KEVOQUJMRV9QUk9HUkVTU19UQUcpICQoRU5BQkxFX1JFR0lTVEVSX1BST1RPQ09MX0hBTkRMRVIp
ICQoRU5BQkxFX1FVT1RBKSAkKEVOQUJMRV9TSEFSRURfV09SS0VSUykgJChFTkFCTEVfU1ZHKSAk
KEVOQUJMRV9TVkdfQU5JTUFUSU9OKSAkKEVOQUJMRV9TVkdfQVNfSU1BR0UpICQoRU5BQkxFX1NW
R19ET01fT0JKQ19CSU5ESU5HUykgJChFTkFCTEVfU1ZHX0ZPTlRTKSAkKEVOQUJMRV9TVkdfRk9S
RUlHTl9PQkpFQ1QpICQoRU5BQkxFX1NWR19VU0UpICQoRU5BQkxFX1ZJREVPKSAkKEVOQUJMRV9W
SURFT19UUkFDSykgJChFTkFCTEVfTUVESUFfU1RBVElTVElDUykgJChFTkFCTEVfV0VCX0FVRElP
KSAkKEVOQUJMRV9XRUJfU09DS0VUUykgJChFTkFCTEVfV0VCX1RJTUlORykgJChFTkFCTEVfV09S
S0VSUykgJChFTkFCTEVfWEhUTUxNUCkgJChFTkFCTEVfWFBBVEgpICQoRU5BQkxFX1hTTFQpOwor
RkVBVFVSRV9ERUZJTkVTID0gJChFTkFCTEVfTElOS19QUkVGRVRDSCkgJChFTkFCTEVfQUNDRUxF
UkFURURfMkRfQ0FOVkFTKSAkKEVOQUJMRV9XRUJHTCkgJChFTkFCTEVfM0RfUkVOREVSSU5HKSAk
KEVOQUJMRV9BTklNQVRJT05fQVBJKSAkKEVOQUJMRV9CTE9CKSAkKEVOQUJMRV9DSEFOTkVMX01F
U1NBR0lORykgJChFTkFCTEVfQ0xJRU5UX0JBU0VEX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9EQVRB
QkFTRSkgJChFTkFCTEVfREFUQUxJU1QpICQoRU5BQkxFX0RBVEFfVFJBTlNGRVJfSVRFTVMpICQo
RU5BQkxFX0RFVEFJTFMpICQoRU5BQkxFX0RFVklDRV9PUklFTlRBVElPTikgJChFTkFCTEVfRElS
RUNUT1JZX1VQTE9BRCkgJChFTkFCTEVfRE9NX1NUT1JBR0UpICQoRU5BQkxFX0VWRU5UU09VUkNF
KSAkKEVOQUJMRV9GSUxURVJTKSAkKEVOQUJMRV9GSUxFX1NZU1RFTSkgJChFTkFCTEVfRlVMTFND
UkVFTl9BUEkpICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9JQ09OREFUQUJBU0UpICQo
RU5BQkxFX0lOREVYRURfREFUQUJBU0UpICQoRU5BQkxFX0lOUFVUX1NQRUVDSCkgJChFTkFCTEVf
SkFWQVNDUklQVF9ERUJVR0dFUikgJChFTkFCTEVfTUFUSE1MKSAkKEVOQUJMRV9NRVRFUl9UQUcp
ICQoRU5BQkxFX05PVElGSUNBVElPTlMpICQoRU5BQkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9O
UykgJChFTkFCTEVfUEFHRV9WSVNJQklMSVRZX0FQSSkgJChFTkFCTEVfUFJPR1JFU1NfVEFHKSAk
KEVOQUJMRV9SRUdJU1RFUl9QUk9UT0NPTF9IQU5ETEVSKSAkKEVOQUJMRV9RVU9UQSkgJChFTkFC
TEVfU0hBUkVEX1dPUktFUlMpICQoRU5BQkxFX1NWRykgJChFTkFCTEVfU1ZHX0FOSU1BVElPTikg
JChFTkFCTEVfU1ZHX0FTX0lNQUdFKSAkKEVOQUJMRV9TVkdfRE9NX09CSkNfQklORElOR1MpICQo
RU5BQkxFX1NWR19GT05UUykgJChFTkFCTEVfU1ZHX0ZPUkVJR05fT0JKRUNUKSAkKEVOQUJMRV9T
VkdfVVNFKSAkKEVOQUJMRV9UT1VDSF9JQ09OX0xPQURJTkcpICQoRU5BQkxFX1ZJREVPKSAkKEVO
QUJMRV9WSURFT19UUkFDSykgJChFTkFCTEVfTUVESUFfU1RBVElTVElDUykgJChFTkFCTEVfV0VC
X0FVRElPKSAkKEVOQUJMRV9XRUJfU09DS0VUUykgJChFTkFCTEVfV0VCX1RJTUlORykgJChFTkFC
TEVfV09SS0VSUykgJChFTkFCTEVfWEhUTUxNUCkgJChFTkFCTEVfWFBBVEgpICQoRU5BQkxFX1hT
TFQpOwpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gODU2ODcpCisrKyBTb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw1NCBAQAorMjAxMS0wNC0yMiAgVGFv
IEJhaSAgPG1pY2hhZWxiYWlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFBvcHVsYXRlIHRvdWNoLWljb24gdXJsIHRvIEZyYW1l
TG9hZGVyQ2xpZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD01OTE0MworICAgICAgICAKKyAgICAgICAgUGFyc2VkIGFuZCBwb3B1bGF0ZWQgYXBwbGUt
dG91Y2gtaWNvbiB1cmwgdG8gRnJhbWVMb2FkZXJDbGllbnQuCisgICAgICAgIENoYW5nZWQgZmF2
aWNvbiB0byBiZSBhIHR5cGUgb2YgaWNvbi4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0Ogor
ICAgICAgICAqIENvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnOgorICAgICAg
ICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAg
ICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNw
cm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6Omljb25V
UkwpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnNldEljb25VUkwpOgorICAgICAgICAq
IGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAqIGRvbS9JY29uVVJMLmNwcDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjp0b0ljb25JbmRleCk6CisgICAgICAgICogZG9tL0ljb25VUkwuaDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpJY29uVVJMOjpJY29uVVJMKToKKyAgICAgICAgKiBmZWF0
dXJlcy5wcmk6CisgICAgICAgICogaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTExpbmtFbGVtZW50Ojp0b2tlbml6ZVJlbEF0dHJpYnV0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6OnByb2Nlc3MpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTExpbmtFbGVtZW50OjphZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMpOgorICAgICAgICAq
IGh0bWwvSFRNTExpbmtFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1l
bnQ6OlJlbEF0dHJpYnV0ZTo6UmVsQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxM
aW5rRWxlbWVudDo6aXNFbmFibGVkVmlhU2NyaXB0KToKKyAgICAgICAgKiBodG1sL3BhcnNlci9I
VE1MUHJlbG9hZFNjYW5uZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE5hbWVzOjpQcmVs
b2FkVGFzazo6cmVsQXR0cmlidXRlSXNTdHlsZVNoZWV0KToKKyAgICAgICAgKiBsb2FkZXIvRG9j
dW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6Omljb25V
UkwpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OnNldEljb25VUkwpOgorICAg
ICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9FbXB0eUNs
aWVudHMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3Bh
dGNoRGlkQ2hhbmdlSWNvbnMpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6aWNvblVSTCk6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZUxvYWRlcjo6aWNvblVSTHMpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6
OmZpbGxJY29uVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpnZXREZWZhdWx0
SWNvblVSTCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6c2V0SWNvblVSTCk6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6ZGlkQ2hhbmdlSWNvbnMpOgorICAgICAgICAq
IGxvYWRlci9GcmFtZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlckNsaWVu
dC5oOgorCiAyMDExLTA1LTAzICBFbnJpY2EgQ2FzdWNjaSAgPGVucmljYUBhcHBsZS5jb20+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgUnlvc3VrZSBOaXdhLgpJbmRleDogU291cmNlL1dlYkNvcmUv
Q01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50
eHQJKHJldmlzaW9uIDg1NjMxKQorKysgU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHdv
cmtpbmcgY29weSkKQEAgLTU2OSw2ICs1NjksNyBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAg
ZG9tL0V2ZW50UXVldWUuY3BwCiAgICAgZG9tL0V4Y2VwdGlvbkJhc2UuY3BwCiAgICAgZG9tL0V4
Y2VwdGlvbkNvZGUuY3BwCisgICAgZG9tL0ljb25VUkwuY3BwCiAgICAgZG9tL0lucHV0RWxlbWVu
dC5jcHAKICAgICBkb20vS2V5Ym9hcmRFdmVudC5jcHAKICAgICBkb20vTWVzc2FnZUNoYW5uZWwu
Y3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQkocmV2aXNpb24gODU2MzEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9HTlVtYWtlZmlsZS5hbQkod29ya2luZyBjb3B5KQpAQCAtMjYxLDYgKzI2MSwxNiBA
QCB3ZWJjb3JlX2J1aWx0X3NvdXJjZXMgKz0gXAogZW5kaWYgIyBFTkQgRU5BQkxFX1FVT1RBCiAK
ICMgLS0tLQorIyBUb3VjaCBJY29uIExvYWRpbmcKKyMgLS0tLQoraWYgRU5BQkxFX1RPVUNIX0lD
T05fTE9BRElORworRkVBVFVSRV9ERUZJTkVTICs9IEVOQUJMRV9UT1VDSF9JQ09OX0xPQURJTkc9
MQord2ViY29yZV9jcHBmbGFncyArPSAtREVOQUJMRV9UT1VDSF9JQ09OX0xPQURJTkc9MQorZWxz
ZQord2ViY29yZV9jcHBmbGFncyArPSAtREVOQUJMRV9UT1VDSF9JQ09OX0xPQURJTkc9MAorZW5k
aWYgIyBFTkQgRU5BQkxFX1RPVUNIX0lDT05fTE9BRElORworCisjIC0tLS0KICMgU3BlZWNoIElu
cHV0IEFQSSBzdXBwb3J0CiAjIC0tLS0KIGlmIEVOQUJMRV9JTlBVVF9TUEVFQ0gKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkocmV2aXNpb24gODU2MzEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBAIC0xMTUxLDYgKzExNTEs
OCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9FeGNlcHRpb25D
b2RlLmggXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9GcmFnbWVudFNjcmlwdGluZ1Blcm1pc3Npb24u
aCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL0lnbm9yZURlc3RydWN0aXZlV3JpdGVDb3VudEluY3Jl
bWVudGVyLmggXAorCVNvdXJjZS9XZWJDb3JlL2RvbS9JY29uVVJMLmNwcCBcCisJU291cmNlL1dl
YkNvcmUvZG9tL0ljb25VUkwuaCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL0lucHV0RWxlbWVudC5j
cHAgXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9JbnB1dEVsZW1lbnQuaCBcCiAJU291cmNlL1dlYkNv
cmUvZG9tL0hhc2hDaGFuZ2VFdmVudC5oIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
Z3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHJldmlzaW9u
IDg1NjMxKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCSh3b3JraW5nIGNvcHkpCkBA
IC0yNDcwLDYgKzI0NzAsOCBAQAogICAgICAgICAgICAgJ2RvbS9FeGNlcHRpb25Db2RlLmNwcCcs
CiAgICAgICAgICAgICAnZG9tL0hhc2hDaGFuZ2VFdmVudC5oJywKICAgICAgICAgICAgICdkb20v
SWdub3JlRGVzdHJ1Y3RpdmVXcml0ZUNvdW50SW5jcmVtZW50ZXIuaCcsCisgICAgICAgICAgICAn
ZG9tL0ljb25VUkwuY3BwJywKKyAgICAgICAgICAgICdkb20vSWNvblVSTC5oJywKICAgICAgICAg
ICAgICdkb20vSW5wdXRFbGVtZW50LmNwcCcsCiAgICAgICAgICAgICAnZG9tL0tleWJvYXJkRXZl
bnQuY3BwJywKICAgICAgICAgICAgICdkb20vTWVzc2FnZUNoYW5uZWwuY3BwJywKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2ZlYXR1cmVzLnByaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9m
ZWF0dXJlcy5wcmkJKHJldmlzaW9uIDg1NjMxKQorKysgU291cmNlL1dlYkNvcmUvZmVhdHVyZXMu
cHJpCSh3b3JraW5nIGNvcHkpCkBAIC03NSw2ICs3NSw3IEBAIGNvbnRhaW5zKERFRklORVMsIEVO
QUJMRV9TSU5HTEVfVEhSRUFERUQKICFjb250YWlucyhERUZJTkVTLCBFTkFCTEVfV0VCR0w9Lik6
IERFRklORVMgKz0gRU5BQkxFX1dFQkdMPTAKICFjb250YWlucyhERUZJTkVTLCBFTkFCTEVfTUVE
SUFfU1RBVElTVElDUz0uKTogREVGSU5FUyArPSBFTkFCTEVfTUVESUFfU1RBVElTVElDUz0wCiAh
Y29udGFpbnMoREVGSU5FUywgRU5BQkxFX1ZJREVPX1RSQUNLPS4pOiBERUZJTkVTICs9IEVOQUJM
RV9WSURFT19UUkFDSz0wCishY29udGFpbnMoREVGSU5FUywgRU5BQkxFX1RPVUNIX0lDT05fTE9B
RElORz0uKTogREVGSU5FUyArPSBFTkFCTEVfVE9VQ0hfSUNPTl9MT0FESU5HPTAKICFjb250YWlu
cyhERUZJTkVTLCBFTkFCTEVfQU5JTUFUSU9OX0FQST0uKTogREVGSU5FUyArPSBFTkFCTEVfQU5J
TUFUSU9OX0FQST0wCiAKICMgU1ZHIHN1cHBvcnQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NvbmZp
Z3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCShyZXZpc2lvbiA4
NTYzMSkKKysrIFNvdXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhj
Y29uZmlnCSh3b3JraW5nIGNvcHkpCkBAIC0xMTcsNiArMTE3LDggQEAgRU5BQkxFX1ZJREVPX1RS
QUNLID0gOwogCiBFTkFCTEVfTUVESUFfU1RBVElTVElDUyA9IDsKIAorRU5BQkxFX1RPVUNIX0lD
T05fTE9BRElORyA9IDsKKwogRU5BQkxFX1dFQl9BVURJTyA9IDsKIAogRU5BQkxFX1dFQl9TT0NL
RVRTID0gJChFTkFCTEVfV0VCX1NPQ0tFVFNfJChSRUFMX1BMQVRGT1JNX05BTUUpKTsKQEAgLTEz
MSw0ICsxMzMsNCBAQCBFTkFCTEVfWEhUTUxNUCA9IDsKIEVOQUJMRV9YUEFUSCA9IEVOQUJMRV9Y
UEFUSDsKIEVOQUJMRV9YU0xUID0gRU5BQkxFX1hTTFQ7CiAKLUZFQVRVUkVfREVGSU5FUyA9ICQo
RU5BQkxFX0xJTktfUFJFRkVUQ0gpICQoRU5BQkxFX0FDQ0VMRVJBVEVEXzJEX0NBTlZBUykgJChF
TkFCTEVfV0VCR0wpICQoRU5BQkxFXzNEX1JFTkRFUklORykgJChFTkFCTEVfQU5JTUFUSU9OX0FQ
SSkgJChFTkFCTEVfQkxPQikgJChFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcpICQoRU5BQkxFX0NM
SUVOVF9CQVNFRF9HRU9MT0NBVElPTikgJChFTkFCTEVfREFUQUJBU0UpICQoRU5BQkxFX0RBVEFM
SVNUKSAkKEVOQUJMRV9EQVRBX1RSQU5TRkVSX0lURU1TKSAkKEVOQUJMRV9ERVRBSUxTKSAkKEVO
QUJMRV9ERVZJQ0VfT1JJRU5UQVRJT04pICQoRU5BQkxFX0RJUkVDVE9SWV9VUExPQUQpICQoRU5B
QkxFX0RPTV9TVE9SQUdFKSAkKEVOQUJMRV9FVkVOVFNPVVJDRSkgJChFTkFCTEVfRklMVEVSUykg
JChFTkFCTEVfRklMRV9TWVNURU0pICQoRU5BQkxFX0ZVTExTQ1JFRU5fQVBJKSAkKEVOQUJMRV9H
RU9MT0NBVElPTikgJChFTkFCTEVfSUNPTkRBVEFCQVNFKSAkKEVOQUJMRV9JTkRFWEVEX0RBVEFC
QVNFKSAkKEVOQUJMRV9JTlBVVF9TUEVFQ0gpICQoRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIp
ICQoRU5BQkxFX01BVEhNTCkgJChFTkFCTEVfTUVURVJfVEFHKSAkKEVOQUJMRV9OT1RJRklDQVRJ
T05TKSAkKEVOQUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpICQoRU5BQkxFX1BBR0VfVklT
SUJJTElUWV9BUEkpICQoRU5BQkxFX1BST0dSRVNTX1RBRykgJChFTkFCTEVfUkVHSVNURVJfUFJP
VE9DT0xfSEFORExFUikgJChFTkFCTEVfUVVPVEEpICQoRU5BQkxFX1NIQVJFRF9XT1JLRVJTKSAk
KEVOQUJMRV9TVkcpICQoRU5BQkxFX1NWR19BTklNQVRJT04pICQoRU5BQkxFX1NWR19BU19JTUFH
RSkgJChFTkFCTEVfU1ZHX0RPTV9PQkpDX0JJTkRJTkdTKSAkKEVOQUJMRV9TVkdfRk9OVFMpICQo
RU5BQkxFX1NWR19GT1JFSUdOX09CSkVDVCkgJChFTkFCTEVfU1ZHX1VTRSkgJChFTkFCTEVfVklE
RU8pICQoRU5BQkxFX1ZJREVPX1RSQUNLKSAkKEVOQUJMRV9NRURJQV9TVEFUSVNUSUNTKSAkKEVO
QUJMRV9XRUJfQVVESU8pICQoRU5BQkxFX1dFQl9TT0NLRVRTKSAkKEVOQUJMRV9XRUJfVElNSU5H
KSAkKEVOQUJMRV9XT1JLRVJTKSAkKEVOQUJMRV9YSFRNTE1QKSAkKEVOQUJMRV9YUEFUSCkgJChF
TkFCTEVfWFNMVCk7CitGRUFUVVJFX0RFRklORVMgPSAkKEVOQUJMRV9MSU5LX1BSRUZFVENIKSAk
KEVOQUJMRV9BQ0NFTEVSQVRFRF8yRF9DQU5WQVMpICQoRU5BQkxFX1dFQkdMKSAkKEVOQUJMRV8z
RF9SRU5ERVJJTkcpICQoRU5BQkxFX0FOSU1BVElPTl9BUEkpICQoRU5BQkxFX0JMT0IpICQoRU5B
QkxFX0NIQU5ORUxfTUVTU0FHSU5HKSAkKEVOQUJMRV9DTElFTlRfQkFTRURfR0VPTE9DQVRJT04p
ICQoRU5BQkxFX0RBVEFCQVNFKSAkKEVOQUJMRV9EQVRBTElTVCkgJChFTkFCTEVfREFUQV9UUkFO
U0ZFUl9JVEVNUykgJChFTkFCTEVfREVUQUlMUykgJChFTkFCTEVfREVWSUNFX09SSUVOVEFUSU9O
KSAkKEVOQUJMRV9ESVJFQ1RPUllfVVBMT0FEKSAkKEVOQUJMRV9ET01fU1RPUkFHRSkgJChFTkFC
TEVfRVZFTlRTT1VSQ0UpICQoRU5BQkxFX0ZJTFRFUlMpICQoRU5BQkxFX0ZJTEVfU1lTVEVNKSAk
KEVOQUJMRV9GVUxMU0NSRUVOX0FQSSkgJChFTkFCTEVfR0VPTE9DQVRJT04pICQoRU5BQkxFX0lD
T05EQVRBQkFTRSkgJChFTkFCTEVfSU5ERVhFRF9EQVRBQkFTRSkgJChFTkFCTEVfSU5QVVRfU1BF
RUNIKSAkKEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSKSAkKEVOQUJMRV9NQVRITUwpICQoRU5B
QkxFX01FVEVSX1RBRykgJChFTkFCTEVfTk9USUZJQ0FUSU9OUykgJChFTkFCTEVfT0ZGTElORV9X
RUJfQVBQTElDQVRJT05TKSAkKEVOQUJMRV9QQUdFX1ZJU0lCSUxJVFlfQVBJKSAkKEVOQUJMRV9Q
Uk9HUkVTU19UQUcpICQoRU5BQkxFX1JFR0lTVEVSX1BST1RPQ09MX0hBTkRMRVIpICQoRU5BQkxF
X1FVT1RBKSAkKEVOQUJMRV9TSEFSRURfV09SS0VSUykgJChFTkFCTEVfU1ZHKSAkKEVOQUJMRV9T
VkdfQU5JTUFUSU9OKSAkKEVOQUJMRV9TVkdfQVNfSU1BR0UpICQoRU5BQkxFX1NWR19ET01fT0JK
Q19CSU5ESU5HUykgJChFTkFCTEVfU1ZHX0ZPTlRTKSAkKEVOQUJMRV9TVkdfRk9SRUlHTl9PQkpF
Q1QpICQoRU5BQkxFX1NWR19VU0UpICQoRU5BQkxFX1RPVUNIX0lDT05fTE9BRElORykgJChFTkFC
TEVfVklERU8pICQoRU5BQkxFX1ZJREVPX1RSQUNLKSAkKEVOQUJMRV9NRURJQV9TVEFUSVNUSUNT
KSAkKEVOQUJMRV9XRUJfQVVESU8pICQoRU5BQkxFX1dFQl9TT0NLRVRTKSAkKEVOQUJMRV9XRUJf
VElNSU5HKSAkKEVOQUJMRV9XT1JLRVJTKSAkKEVOQUJMRV9YSFRNTE1QKSAkKEVOQUJMRV9YUEFU
SCkgJChFTkFCTEVfWFNMVCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9X
ZWJDb3JlLnZjcHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJv
ai9XZWJDb3JlLnZjcHJvagkocmV2aXNpb24gODU2MzEpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtNDQ0NjIsNiArNDQ0
NjIsNjIgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0i
Li5cZG9tXEljb25VUkwuY3BwIgorCQkJCT4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJ
TmFtZT0iRGVidWd8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+
CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJ
CTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9
IlJlbGVhc2V8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJ
CQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwv
RmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IkRl
YnVnX0NhaXJvX0NGTGl0ZXxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJ
CQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+
CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJ
TmFtZT0iUmVsZWFzZV9DYWlyb19DRkxpdGV8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxk
PSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29s
IgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0
aW9uCisJCQkJCU5hbWU9IkRlYnVnX0FsbHxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9
InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wi
CisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRp
b24KKwkJCQkJTmFtZT0iUHJvZHVjdGlvbnxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9
InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wi
CisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCTwvRmlsZT4KKwkJCTxGaWxl
CisJCQkJUmVsYXRpdmVQYXRoPSIuLlxkb21cSWNvblVSTC5oIgorCQkJCT4KKwkJCTwvRmlsZT4K
KwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxkb21cSW5wdXRFbGVtZW50LmNwcCIKIAkJ
CQk+CiAJCQkJPEZpbGVDb25maWd1cmF0aW9uCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiA4NTYzMSkKKysrIFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBj
b3B5KQpAQCAtOTcwLDYgKzk3MCw4IEBACiAJCTQ0OUIxOUY1MEZBNzJFQ0UwMDE1Q0E0QSAvKiBI
VE1MUGFyc2VyUXVpcmtzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0NDlCMTlGMzBGQTcyRUNFMDAxNUNBNEEgLyogSFRNTFBhcnNlclF1aXJrcy5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ0QTI4QUFD
MTJERkI4QUMwMEFFOTIzQiAvKiBNYXRoTUxFbGVtZW50RmFjdG9yeS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDRBMjhBQUIxMkRGQjhBQzAwQUU5MjNC
IC8qIE1hdGhNTEVsZW1lbnRGYWN0b3J5LmggKi87IH07CiAJCTQ0QTI4QUFGMTJERkI4QkYwMEFF
OTIzQiAvKiBNYXRoTUxOYW1lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDRBMjhBQUUxMkRGQjhCRjAwQUU5MjNCIC8qIE1hdGhNTE5hbWVzLmggKi87
IH07CisJCTQ1MDk5QzQxMTM3MEE3ODAwMDU4RDUxMyAvKiBJY29uVVJMLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ1MDk5QzQwMTM3MEE3ODAwMDU4
RDUxMyAvKiBJY29uVVJMLmNwcCAqLzsgfTsKKwkJNDVCQUMyQjAxMzYwQkJBQjAwNURBMjU4IC8q
IEljb25VUkwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQ1QkFDMkFGMTM2MEJCQUIwMDVEQTI1OCAvKiBJY29uVVJMLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDYxNEExRkUwQjIzQThENjAwNDQ2RTFD
IC8qIGNvcHlDdXJzb3IucG5nIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0NjE0QTFGRDBCMjNBOEQ2MDA0NDZFMUMgLyogY29weUN1cnNvci5wbmcgKi87
IH07CiAJCTQ2NEVBMjczMEI4QTM1MEIwMEE4RTZFMyAvKiBjcm9zc0hhaXJDdXJzb3IucG5nIGlu
IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjRFQTI3MTBC
OEEzNTBCMDBBOEU2RTMgLyogY3Jvc3NIYWlyQ3Vyc29yLnBuZyAqLzsgfTsKIAkJNDY0RUEyNzQw
QjhBMzUwQjAwQThFNkUzIC8qIG5vdEFsbG93ZWRDdXJzb3IucG5nIGluIFJlc291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjRFQTI3MjBCOEEzNTBCMDBBOEU2RTMg
Lyogbm90QWxsb3dlZEN1cnNvci5wbmcgKi87IH07CkBAIC03NDM2LDYgKzc0MzgsOCBAQAogCQk0
NDlCMTlGMzBGQTcyRUNFMDAxNUNBNEEgLyogSFRNTFBhcnNlclF1aXJrcy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBIVE1MUGFyc2VyUXVpcmtzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQ0QTI4QUFCMTJERkI4QUMwMEFFOTIzQiAvKiBNYXRoTUxFbGVtZW50
RmFjdG9yeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYXRoTUxFbGVtZW50
RmFjdG9yeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NEEyOEFBRTEyREZCOEJG
MDBBRTkyM0IgLyogTWF0aE1MTmFtZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gTWF0aE1MTmFtZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDUwOTlDNDAx
MzcwQTc4MDAwNThENTEzIC8qIEljb25VUkwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBuYW1lID0gSWNvblVSTC5jcHA7IHBhdGggPSBkb20vSWNvblVSTC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ1QkFDMkFGMTM2MEJCQUIwMDVEQTI1OCAvKiBJY29uVVJM
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEljb25VUkwuaDsgcGF0aCA9IGRv
bS9JY29uVVJMLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2MTRBMUZEMEIyM0E4
RDYwMDQ0NkUxQyAvKiBjb3B5Q3Vyc29yLnBuZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IGltYWdlLnBuZzsgcGF0aCA9IGNvcHlDdXJzb3IucG5nOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjRFQTI3MTBCOEEzNTBCMDBBOEU2RTMgLyog
Y3Jvc3NIYWlyQ3Vyc29yLnBuZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IGltYWdlLnBuZzsgcGF0aCA9IGNyb3NzSGFpckN1cnNvci5wbmc7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2NEVBMjcyMEI4QTM1MEIwMEE4RTZFMyAvKiBub3RB
bGxvd2VkQ3Vyc29yLnBuZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IGltYWdlLnBuZzsgcGF0aCA9IG5vdEFsbG93ZWRDdXJzb3IucG5nOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTI1MTcsNiArMTI1MjEsOCBAQAogCQkwODY3RDY5MUZF
ODQwMjhGQzAyQUFDMDcgLyogV2ViS2l0ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQlj
aGlsZHJlbiA9ICgKKwkJCQk0NTA5OUM0MDEzNzBBNzgwMDA1OEQ1MTMgLyogSWNvblVSTC5jcHAg
Ki8sCisJCQkJNDVCQUMyQUYxMzYwQkJBQjAwNURBMjU4IC8qIEljb25VUkwuaCAqLywKIAkJCQk2
NUM5N0FGMjA4RUE5MDg4MDBBQ0QyNzMgLyogY29uZmlnLmggKi8sCiAJCQkJRURFQzk4MDIwQUVE
N0UxNzAwNTkxMzdGIC8qIFdlYkNvcmVQcmVmaXguaCAqLywKIAkJCQk5MzA3MDYxMzA5RTBDQTgy
MDBCMTdGRTQgLyogRGVyaXZlZFNvdXJjZXMubWFrZSAqLywKQEAgLTIyNzAyLDYgKzIyNzA4LDcg
QEAKIAkJCQk5M0YxOTlFRDA4MjQ1RTU5MDAxRTlBQkMgLyogWFNMVFByb2Nlc3Nvci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRTFCRTUxMkUwQ0Y2QzUxMjAwMkVBOTU5IC8qIFhTTFRVbmljb2RlU29y
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTc3RTJFMEYxMkYwRkM5QzAwQzEzMzc5IC8qIFhTU0Zp
bHRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDVCQUMyQjAxMzYwQkJBQjAwNURBMjU4IC8qIElj
b25VUkwuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9z
dHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjUzNjIsNiArMjUzNjksNyBAQAogCQkJCTkzRjE5
QjA1MDgyNDVFNTkwMDFFOUFCQyAvKiBYU0xUUHJvY2Vzc29yTGlieHNsdC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlFMUJFNTEyRDBDRjZDNTEyMDAyRUE5NTkgLyogWFNMVFVuaWNvZGVTb3J0LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTk3N0UyRTBFMTJGMEZDOUMwMEMxMzM3OSAvKiBYU1NGaWx0
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNDUwOTlDNDExMzcwQTc4MDAwNThENTEzIC8qIElj
b25VUkwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQ
b3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHJl
dmlzaW9uIDg1NjMxKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDM2NiwxNSArNDM2NiwyNiBAQCB1bnNpZ25lZCBGb3JtRWxlbWVudEtleUhh
c2g6Omhhc2goY29uc3QgCiAgICAgcmV0dXJuIFN0cmluZ0hhc2hlcjo6aGFzaE1lbW9yeTxzaXpl
b2YoRm9ybUVsZW1lbnRLZXkpPigma2V5KTsKIH0KIAotdm9pZCBEb2N1bWVudDo6c2V0SWNvblVS
TChjb25zdCBTdHJpbmcmIGljb25VUkwsIGNvbnN0IFN0cmluZyYgdHlwZSkKK0ljb25VUkwgRG9j
dW1lbnQ6Omljb25VUkwoSWNvblR5cGUgaWNvblR5cGUpIGNvbnN0CiB7Ci0gICAgLy8gRklYTUUg
LSA8cmRhcjovL3Byb2JsZW0vNDcyNzY0NT4gLSBBdCBzb21lIHBvaW50IGluIHRoZSBmdXR1cmUs
IHdlIG1pZ2h0IGFjdHVhbGx5IGhvbm9yIHRoZSAidHlwZSIgCi0gICAgaWYgKG1faWNvblVSTC5p
c0VtcHR5KCkpCi0gICAgICAgIG1faWNvblVSTCA9IGljb25VUkw7Ci0gICAgZWxzZSBpZiAoIXR5
cGUuaXNFbXB0eSgpKQotICAgICAgICBtX2ljb25VUkwgPSBpY29uVVJMOworICAgIHJldHVybiBt
X2ljb25VUkxzW3RvSWNvbkluZGV4KGljb25UeXBlKV07Cit9CisKK3ZvaWQgRG9jdW1lbnQ6OnNl
dEljb25VUkwoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEljb25U
eXBlIGljb25UeXBlKQoreworICAgIC8vIEZJWE1FIC0gPHJkYXI6Ly9wcm9ibGVtLzQ3Mjc2NDU+
IC0gQXQgc29tZSBwb2ludCBpbiB0aGUgZnV0dXJlLCB3ZSBtaWdodCBhY3R1YWxseSBob25vciB0
aGUgIm1pbWVUeXBlIgorICAgIEljb25VUkwgbmV3VVJMKEtVUkwoUGFyc2VkVVJMU3RyaW5nLCB1
cmwpLCBpY29uVHlwZSk7CisgICAgaWYgKCFpY29uVVJMKGljb25UeXBlKS5tX2ljb25VUkwuaXNF
bXB0eSgpKQorICAgICAgICBzZXRJY29uVVJMKG5ld1VSTCk7CisgICAgZWxzZSBpZiAoIW1pbWVU
eXBlLmlzRW1wdHkoKSkKKyAgICAgICAgc2V0SWNvblVSTChuZXdVUkwpOwogICAgIGlmIChGcmFt
ZSogZiA9IGZyYW1lKCkpCi0gICAgICAgIGYtPmxvYWRlcigpLT5zZXRJY29uVVJMKG1faWNvblVS
TCk7CisgICAgICAgIGYtPmxvYWRlcigpLT5zZXRJY29uVVJMKG5ld1VSTCk7Cit9CisKK3ZvaWQg
RG9jdW1lbnQ6OnNldEljb25VUkwoY29uc3QgSWNvblVSTCYgaWNvblVSTCkKK3sKKyAgICBtX2lj
b25VUkxzW3RvSWNvbkluZGV4KGljb25VUkwubV9pY29uVHlwZSldID0gaWNvblVSTDsKIH0KIAog
dm9pZCBEb2N1bWVudDo6cmVnaXN0ZXJGb3JtRWxlbWVudFdpdGhGb3JtQXR0cmlidXRlKEZvcm1B
c3NvY2lhdGVkRWxlbWVudCogZWxlbWVudCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCShyZXZp
c2lvbiA4NTYzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiQ29sb3IuaCIKICNpbmNsdWRlICJET01U
aW1lU3RhbXAuaCIKICNpbmNsdWRlICJEb2N1bWVudFRpbWluZy5oIgorI2luY2x1ZGUgIkljb25V
UkwuaCIKICNpbmNsdWRlICJRdWFsaWZpZWROYW1lLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0
aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIlN0cmluZ1dpdGhEaXJlY3Rpb24uaCIKQEAgLTkxNyw4
ICs5MTgsOSBAQCBwdWJsaWM6CiAgICAgCiAgICAgdm9pZCBzZXRIYXNOb2Rlc1dpdGhQbGFjZWhv
bGRlclN0eWxlKCkgeyBtX2hhc05vZGVzV2l0aFBsYWNlaG9sZGVyU3R5bGUgPSB0cnVlOyB9CiAK
LSAgICBjb25zdCBTdHJpbmcmIGljb25VUkwoKSBjb25zdCB7IHJldHVybiBtX2ljb25VUkw7IH0K
LSAgICB2b2lkIHNldEljb25VUkwoY29uc3QgU3RyaW5nJiBpY29uVVJMLCBjb25zdCBTdHJpbmcm
IHR5cGUpOworICAgIEljb25VUkwgaWNvblVSTChJY29uVHlwZSkgY29uc3Q7CisgICAgdm9pZCBz
ZXRJY29uVVJMKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIEljb25UeXBlKTsKKyAgICB2
b2lkIHNldEljb25VUkwoY29uc3QgSWNvblVSTCYpOwogCiAgICAgdm9pZCBzZXRVc2VTZWN1cmVL
ZXlib2FyZEVudHJ5V2hlbkFjdGl2ZShib29sKTsKICAgICBib29sIHVzZVNlY3VyZUtleWJvYXJk
RW50cnlXaGVuQWN0aXZlKCkgY29uc3Q7CkBAIC0xMzI0LDggKzEzMjYsOCBAQCBwcml2YXRlOgog
CiAgICAgYm9vbCBtX2NyZWF0ZVJlbmRlcmVyczsKICAgICBib29sIG1faW5QYWdlQ2FjaGU7Ci0g
ICAgU3RyaW5nIG1faWNvblVSTDsKLSAgICAKKyAgICBJY29uVVJMIG1faWNvblVSTHNbSUNPTl9D
T1VOVF07CisKICAgICBIYXNoU2V0PEVsZW1lbnQqPiBtX2RvY3VtZW50QWN0aXZhdGlvbkNhbGxi
YWNrRWxlbWVudHM7CiAgICAgSGFzaFNldDxFbGVtZW50Kj4gbV9tZWRpYVZvbHVtZUNhbGxiYWNr
RWxlbWVudHM7CiAgICAgSGFzaFNldDxFbGVtZW50Kj4gbV9wcml2YXRlQnJvd3NpbmdTdGF0ZUNo
YW5nZWRFbGVtZW50czsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9JY29uVVJMLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vSWNvblVSTC5jcHAJKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvV2ViQ29yZS9kb20vSWNvblVSTC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
NTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAq
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICog
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
KyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSWNvblVSTC5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK3NpemVfdCB0b0ljb25JbmRleChJY29uVHlwZSB0eXBlKQoreworICAg
IHNpemVfdCBpbmRleCA9IDA7CisgICAgc3dpdGNoICh0eXBlKSB7CisgICAgY2FzZSBGYXZpY29u
OgorICAgICAgICBpbmRleCA9IDA7CisgICAgICAgIGJyZWFrOworI2lmIEVOQUJMRShUT1VDSF9J
Q09OX0xPQURJTkcpCisgICAgY2FzZSBUb3VjaFByZWNvbXBvc2VkSWNvbjoKKyAgICAgICAgaW5k
ZXggPSAxOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFRvdWNoSWNvbjoKKyAgICAgICAgaW5k
ZXggPSAyOworICAgICAgICBicmVhazsKKyNlbmRpZgorICAgIGRlZmF1bHQ6CisgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKyAgICByZXR1cm4gaW5kZXg7Cit9CisKK30KKwoK
UHJvcGVydHkgY2hhbmdlcyBvbjogU291cmNlL1dlYkNvcmUvZG9tL0ljb25VUkwuY3BwCl9fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX18KQWRkZWQ6IHN2bjplb2wtc3R5bGUKICAgKyBMRgoKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2RvbS9JY29uVVJMLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0ljb25VUkwu
aAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9JY29uVVJMLmgJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsNzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEljb25VUkxfaAorI2RlZmluZSBJY29uVVJMX2gK
KworI2luY2x1ZGUgIktVUkwuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisjaWYgRU5BQkxF
KFRPVUNIX0lDT05fTE9BRElORykKKyNkZWZpbmUgSUNPTl9DT1VOVCAzCisjZWxzZQorI2RlZmlu
ZSBJQ09OX0NPVU5UIDEKKyNlbmRpZgorCitlbnVtIEljb25UeXBlIHsKKyAgICBJbnZhbGlkSWNv
biA9IDAsCisgICAgRmF2aWNvbiA9IDEsCisgICAgVG91Y2hJY29uID0gMSA8PCAxLAorICAgIFRv
dWNoUHJlY29tcG9zZWRJY29uID0gMSA8PCAyCit9OworCitzdHJ1Y3QgSWNvblVSTCB7CisgICAg
SWNvblR5cGUgbV9pY29uVHlwZTsKKyAgICBLVVJMIG1faWNvblVSTDsKKworICAgIEljb25VUkwo
KQorICAgICAgICA6IG1faWNvblR5cGUoSW52YWxpZEljb24pCisgICAgeworICAgIH0KKworICAg
IEljb25VUkwoY29uc3QgS1VSTCYgdXJsLCBJY29uVHlwZSB0eXBlKQorICAgICAgICA6IG1faWNv
blR5cGUodHlwZSkKKyAgICAgICAgLCBtX2ljb25VUkwodXJsKQorICAgIHsKKyAgICB9Cit9Owor
Cit0eXBlZGVmIFZlY3RvcjxJY29uVVJMLCBJQ09OX0NPVU5UPiBJY29uVVJMczsKKworLy8gUmV0
dXJucyB0aGUgaW5kZXggb2YgdGhlIGdpdmVuIHR5cGUsIDAgaXMgcmV0dXJuZWQgaWYgdGhlIHR5
cGUgaXMgaW52YWxpZC4KK3NpemVfdCB0b0ljb25JbmRleChJY29uVHlwZSk7CisKK30KKworI2Vu
ZGlmIC8vIEljb25VUkxfaAoKUHJvcGVydHkgY2hhbmdlcyBvbjogU291cmNlL1dlYkNvcmUvZG9t
L0ljb25VUkwuaApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiAgICsgTEYKCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCShyZXZpc2lvbiA4NTYzMSkK
KysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTYwLDcgKzE2MCw3IEBAIHZvaWQgSFRNTExpbmtFbGVtZW50OjpwYXJzZU1hcHBlZEF0
dHJpYnUKIHZvaWQgSFRNTExpbmtFbGVtZW50Ojp0b2tlbml6ZVJlbEF0dHJpYnV0ZShjb25zdCBB
dG9taWNTdHJpbmcmIHJlbCwgUmVsQXR0cmlidXRlJiByZWxBdHRyaWJ1dGUpCiB7CiAgICAgcmVs
QXR0cmlidXRlLm1faXNTdHlsZVNoZWV0ID0gZmFsc2U7Ci0gICAgcmVsQXR0cmlidXRlLm1faXNJ
Y29uID0gZmFsc2U7CisgICAgcmVsQXR0cmlidXRlLm1faWNvblR5cGUgPSBJbnZhbGlkSWNvbjsK
ICAgICByZWxBdHRyaWJ1dGUubV9pc0FsdGVybmF0ZSA9IGZhbHNlOwogICAgIHJlbEF0dHJpYnV0
ZS5tX2lzRE5TUHJlZmV0Y2ggPSBmYWxzZTsKICNpZiBFTkFCTEUoTElOS19QUkVGRVRDSCkKQEAg
LTE3MCw3ICsxNzAsMTMgQEAgdm9pZCBIVE1MTGlua0VsZW1lbnQ6OnRva2VuaXplUmVsQXR0cmli
dQogICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShyZWwsICJzdHlsZXNoZWV0IikpCiAgICAgICAg
IHJlbEF0dHJpYnV0ZS5tX2lzU3R5bGVTaGVldCA9IHRydWU7CiAgICAgZWxzZSBpZiAoZXF1YWxJ
Z25vcmluZ0Nhc2UocmVsLCAiaWNvbiIpIHx8IGVxdWFsSWdub3JpbmdDYXNlKHJlbCwgInNob3J0
Y3V0IGljb24iKSkKLSAgICAgICAgcmVsQXR0cmlidXRlLm1faXNJY29uID0gdHJ1ZTsKKyAgICAg
ICAgcmVsQXR0cmlidXRlLm1faWNvblR5cGUgPSBGYXZpY29uOworI2lmIEVOQUJMRShUT1VDSF9J
Q09OX0xPQURJTkcpCisgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UocmVsLCAiYXBwbGUt
dG91Y2gtaWNvbiIpKQorICAgICAgICByZWxBdHRyaWJ1dGUubV9pY29uVHlwZSA9IFRvdWNoSWNv
bjsKKyAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShyZWwsICJhcHBsZS10b3VjaC1pY29u
LXByZWNvbXBvc2VkIikpCisgICAgICAgIHJlbEF0dHJpYnV0ZS5tX2ljb25UeXBlID0gVG91Y2hQ
cmVjb21wb3NlZEljb247CisjZW5kaWYKICAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShy
ZWwsICJkbnMtcHJlZmV0Y2giKSkKICAgICAgICAgcmVsQXR0cmlidXRlLm1faXNETlNQcmVmZXRj
aCA9IHRydWU7CiAgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UocmVsLCAiYWx0ZXJuYXRl
IHN0eWxlc2hlZXQiKSB8fCBlcXVhbElnbm9yaW5nQ2FzZShyZWwsICJzdHlsZXNoZWV0IGFsdGVy
bmF0ZSIpKSB7CkBAIC0xODksNyArMTk1LDEzIEBAIHZvaWQgSFRNTExpbmtFbGVtZW50Ojp0b2tl
bml6ZVJlbEF0dHJpYnUKICAgICAgICAgICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKCpp
dCwgImFsdGVybmF0ZSIpKQogICAgICAgICAgICAgICAgIHJlbEF0dHJpYnV0ZS5tX2lzQWx0ZXJu
YXRlID0gdHJ1ZTsKICAgICAgICAgICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKCppdCwg
Imljb24iKSkKLSAgICAgICAgICAgICAgICByZWxBdHRyaWJ1dGUubV9pc0ljb24gPSB0cnVlOwor
ICAgICAgICAgICAgICAgIHJlbEF0dHJpYnV0ZS5tX2ljb25UeXBlID0gRmF2aWNvbjsKKyNpZiBF
TkFCTEUoVE9VQ0hfSUNPTl9MT0FESU5HKQorICAgICAgICAgICAgZWxzZSBpZiAoZXF1YWxJZ25v
cmluZ0Nhc2UoKml0LCAiYXBwbGUtdG91Y2gtaWNvbiIpKQorICAgICAgICAgICAgICAgIHJlbEF0
dHJpYnV0ZS5tX2ljb25UeXBlID0gVG91Y2hJY29uOworICAgICAgICAgICAgZWxzZSBpZiAoZXF1
YWxJZ25vcmluZ0Nhc2UoKml0LCAiYXBwbGUtdG91Y2gtaWNvbi1wcmVjb21wb3NlZCIpKQorICAg
ICAgICAgICAgICAgIHJlbEF0dHJpYnV0ZS5tX2ljb25UeXBlID0gVG91Y2hQcmVjb21wb3NlZElj
b247CisjZW5kaWYKICNpZiBFTkFCTEUoTElOS19QUkVGRVRDSCkKICAgICAgICAgICAgIGVsc2Ug
aWYgKGVxdWFsSWdub3JpbmdDYXNlKCppdCwgInByZWZldGNoIikpCiAgICAgICAgICAgICAgIHJl
bEF0dHJpYnV0ZS5tX2lzTGlua1ByZWZldGNoID0gdHJ1ZTsKQEAgLTIyMiwxMCArMjM0LDEwIEBA
IHZvaWQgSFRNTExpbmtFbGVtZW50Ojpwcm9jZXNzKCkKIAogICAgIC8vIElFIGV4dGVuc2lvbjog
bG9jYXRpb24gb2Ygc21hbGwgaWNvbiBmb3IgbG9jYXRpb25iYXIgLyBib29rbWFya3MKICAgICAv
LyBXZSdsbCByZWNvcmQgdGhpcyBVUkwgcGVyIGRvY3VtZW50LCBldmVuIGlmIHdlIGxhdGVyIG9u
bHkgdXNlIGl0IGluIHRvcCBsZXZlbCBmcmFtZXMKLSAgICBpZiAobV9yZWxBdHRyaWJ1dGUubV9p
c0ljb24gJiYgbV91cmwuaXNWYWxpZCgpICYmICFtX3VybC5pc0VtcHR5KCkpIHsKKyAgICBpZiAo
bV9yZWxBdHRyaWJ1dGUubV9pY29uVHlwZSAhPSBJbnZhbGlkSWNvbiAmJiBtX3VybC5pc1ZhbGlk
KCkgJiYgIW1fdXJsLmlzRW1wdHkoKSkgewogICAgICAgICBpZiAoIWNoZWNrQmVmb3JlTG9hZEV2
ZW50KCkpIAogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBkb2N1bWVudCgpLT5zZXRJY29u
VVJMKG1fdXJsLnN0cmluZygpLCB0eXBlKTsKKyAgICAgICAgZG9jdW1lbnQoKS0+c2V0SWNvblVS
TChtX3VybC5zdHJpbmcoKSwgdHlwZSwgbV9yZWxBdHRyaWJ1dGUubV9pY29uVHlwZSk7CiAgICAg
fQogCiAgICAgaWYgKG1fcmVsQXR0cmlidXRlLm1faXNETlNQcmVmZXRjaCkgewpAQCAtNDczLDcg
KzQ4NSw3IEBAIHZvaWQgSFRNTExpbmtFbGVtZW50OjphZGRTdWJyZXNvdXJjZUF0dHIKICAgICBI
VE1MRWxlbWVudDo6YWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKHVybHMpOwogCiAgICAgLy8g
RmF2aWNvbnMgYXJlIGhhbmRsZWQgYnkgYSBzcGVjaWFsIGNhc2UgaW4gTGVnYWN5V2ViQXJjaGl2
ZTo6Y3JlYXRlKCkKLSAgICBpZiAobV9yZWxBdHRyaWJ1dGUubV9pc0ljb24pCisgICAgaWYgKG1f
cmVsQXR0cmlidXRlLm1faWNvblR5cGUgIT0gSW52YWxpZEljb24pCiAgICAgICAgIHJldHVybjsK
IAogICAgIGlmICghbV9yZWxBdHRyaWJ1dGUubV9pc1N0eWxlU2hlZXQpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmgJKHJldmlzaW9uIDg1NjMxKQorKysgU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcs
NyBAQAogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlQ2xpZW50LmgiCiAjaW5jbHVkZSAiQ2FjaGVk
UmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlICJIVE1MRWxlbWVudC5oIgorI2luY2x1ZGUgIklj
b25VUkwuaCIKICNpbmNsdWRlICJUaW1lci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0z
OSw3ICs0MCw3IEBAIGNsYXNzIEhUTUxMaW5rRWxlbWVudCA6IHB1YmxpYyBIVE1MRWxlbWUKIHB1
YmxpYzoKICAgICBzdHJ1Y3QgUmVsQXR0cmlidXRlIHsKICAgICAgICAgYm9vbCBtX2lzU3R5bGVT
aGVldDsKLSAgICAgICAgYm9vbCBtX2lzSWNvbjsKKyAgICAgICAgSWNvblR5cGUgbV9pY29uVHlw
ZTsKICAgICAgICAgYm9vbCBtX2lzQWx0ZXJuYXRlOwogICAgICAgICBib29sIG1faXNETlNQcmVm
ZXRjaDsKICNpZiBFTkFCTEUoTElOS19QUkVGRVRDSCkKQEAgLTQ5LDcgKzUwLDcgQEAgcHVibGlj
OgogCiAgICAgICAgIFJlbEF0dHJpYnV0ZSgpCiAgICAgICAgICAgICA6IG1faXNTdHlsZVNoZWV0
KGZhbHNlKQotICAgICAgICAgICAgLCBtX2lzSWNvbihmYWxzZSkKKyAgICAgICAgICAgICwgbV9p
Y29uVHlwZShJbnZhbGlkSWNvbikKICAgICAgICAgICAgICwgbV9pc0FsdGVybmF0ZShmYWxzZSkK
ICAgICAgICAgICAgICwgbV9pc0ROU1ByZWZldGNoKGZhbHNlKQogI2lmIEVOQUJMRShMSU5LX1BS
RUZFVENIKQpAQCAtNzYsNyArNzcsNiBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzRGlzYWJsZWQo
KSBjb25zdCB7IHJldHVybiBtX2Rpc2FibGVkU3RhdGUgPT0gRGlzYWJsZWQ7IH0KICAgICBib29s
IGlzRW5hYmxlZFZpYVNjcmlwdCgpIGNvbnN0IHsgcmV0dXJuIG1fZGlzYWJsZWRTdGF0ZSA9PSBF
bmFibGVkVmlhU2NyaXB0OyB9Ci0gICAgYm9vbCBpc0ljb24oKSBjb25zdCB7IHJldHVybiBtX3Jl
bEF0dHJpYnV0ZS5tX2lzSWNvbjsgfQogICAgIGJvb2wgZGlzYWJsZWQoKSBjb25zdDsKICAgICB2
b2lkIHNldERpc2FibGVkKGJvb2wpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9IVE1MUHJlbG9hZFNjYW5uZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5jcHAJKHJldmlzaW9uIDg1NjMxKQorKysgU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtOTUsNyArOTUsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBIVE1MTGlua0Vs
ZW1lbnQ6OlJlbEF0dHJpYnV0ZSByZWw7CiAgICAgICAgIEhUTUxMaW5rRWxlbWVudDo6dG9rZW5p
emVSZWxBdHRyaWJ1dGUoYXR0cmlidXRlVmFsdWUsIHJlbCk7Ci0gICAgICAgIHJldHVybiByZWwu
bV9pc1N0eWxlU2hlZXQgJiYgIXJlbC5tX2lzQWx0ZXJuYXRlICYmICFyZWwubV9pc0ljb24gJiYg
IXJlbC5tX2lzRE5TUHJlZmV0Y2g7CisgICAgICAgIHJldHVybiByZWwubV9pc1N0eWxlU2hlZXQg
JiYgIXJlbC5tX2lzQWx0ZXJuYXRlICYmIHJlbC5tX2ljb25UeXBlID09IEludmFsaWRJY29uICYm
ICFyZWwubV9pc0ROU1ByZWZldGNoOwogICAgIH0KIAogICAgIHN0YXRpYyBib29sIGxpbmtNZWRp
YUF0dHJpYnV0ZUlzU2NyZWVuKGNvbnN0IFN0cmluZyYgYXR0cmlidXRlVmFsdWUpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAJKHJldmlzaW9uIDg1NjMxKQor
KysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNjYxLDE0ICs2NjEsMTkgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6c2V0VGl0bGUoY29u
c3QgU3RyaQogICAgIH0KIH0KIAotdm9pZCBEb2N1bWVudExvYWRlcjo6c2V0SWNvblVSTChjb25z
dCBTdHJpbmcmIGljb25VUkwpCitJY29uVVJMIERvY3VtZW50TG9hZGVyOjppY29uVVJMKEljb25U
eXBlIGljb25UeXBlKSBjb25zdAogewotICAgIGlmIChpY29uVVJMLmlzRW1wdHkoKSkKKyAgICBy
ZXR1cm4gbV9pY29uVVJMc1t0b0ljb25JbmRleChpY29uVHlwZSldOworfQorCit2b2lkIERvY3Vt
ZW50TG9hZGVyOjpzZXRJY29uVVJMKGNvbnN0IEljb25VUkwmIHVybCkKK3sKKyAgICBpZiAodXJs
Lm1faWNvblVSTC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChtX3BhZ2VJ
Y29uVVJMICE9IGljb25VUkwpIHsKLSAgICAgICAgbV9wYWdlSWNvblVSTCA9IGljb25VUkw7Ci0g
ICAgICAgIGZyYW1lTG9hZGVyKCktPmRpZENoYW5nZUljb25zKHRoaXMpOworICAgIGlmIChpY29u
VVJMKHVybC5tX2ljb25UeXBlKS5tX2ljb25VUkwgIT0gdXJsLm1faWNvblVSTCkgeworICAgICAg
ICBtX2ljb25VUkxzW3RvSWNvbkluZGV4KHVybC5tX2ljb25UeXBlKV0gPSB1cmw7CisgICAgICAg
IGZyYW1lTG9hZGVyKCktPmRpZENoYW5nZUljb25zKHRoaXMsIHVybC5tX2ljb25UeXBlKTsKICAg
ICB9CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCShyZXZp
c2lvbiA4NTYzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiRG9jdW1lbnRMb2FkVGlt
aW5nLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRXcml0ZXIuaCIKICNpbmNsdWRlICJJY29uRGF0YWJh
c2VCYXNlLmgiCisjaW5jbHVkZSAiSWNvblVSTC5oIgogI2luY2x1ZGUgIk5hdmlnYXRpb25BY3Rp
b24uaCIKICNpbmNsdWRlICJSZXNvdXJjZUVycm9yLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1
ZXN0LmgiCkBAIC0xMjMsNyArMTI0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBi
b29sIGlzTG9hZGluZ0luQVBJU2Vuc2UoKSBjb25zdDsKICAgICAgICAgdm9pZCBzZXRQcmltYXJ5
TG9hZENvbXBsZXRlKGJvb2wpOwogICAgICAgICB2b2lkIHNldFRpdGxlKGNvbnN0IFN0cmluZ1dp
dGhEaXJlY3Rpb24mKTsKLSAgICAgICAgdm9pZCBzZXRJY29uVVJMKGNvbnN0IFN0cmluZyYpOwor
ICAgICAgICB2b2lkIHNldEljb25VUkwoY29uc3QgSWNvblVSTCYpOwogICAgICAgICBjb25zdCBT
dHJpbmcmIG92ZXJyaWRlRW5jb2RpbmcoKSBjb25zdCB7IHJldHVybiBtX292ZXJyaWRlRW5jb2Rp
bmc7IH0KIAogI2lmIFBMQVRGT1JNKE1BQykKQEAgLTE3MCw3ICsxNzEsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKICAgICAgICAgdm9pZCBzdG9wUmVjb3JkaW5nUmVzcG9uc2VzKCk7CiAgICAg
ICAgIGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mIHRpdGxlKCkgY29uc3QgeyByZXR1cm4gbV9w
YWdlVGl0bGU7IH0KLSAgICAgICAgY29uc3QgU3RyaW5nJiBpY29uVVJMKCkgY29uc3QgeyByZXR1
cm4gbV9wYWdlSWNvblVSTDsgfQorICAgICAgICBJY29uVVJMIGljb25VUkwoSWNvblR5cGUpIGNv
bnN0OwogCiAgICAgICAgIEtVUkwgdXJsRm9ySGlzdG9yeSgpIGNvbnN0OwogICAgICAgICBib29s
IHVybEZvckhpc3RvcnlSZWZsZWN0c0ZhaWx1cmUoKSBjb25zdDsKQEAgLTMwMCw3ICszMDEsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wgbV93YXNPbmxvYWRIYW5kbGVkOwog
CiAgICAgICAgIFN0cmluZ1dpdGhEaXJlY3Rpb24gbV9wYWdlVGl0bGU7Ci0gICAgICAgIFN0cmlu
ZyBtX3BhZ2VJY29uVVJMOworICAgICAgICBJY29uVVJMIG1faWNvblVSTHNbSUNPTl9DT1VOVF07
CiAKICAgICAgICAgU3RyaW5nIG1fb3ZlcnJpZGVFbmNvZGluZzsKIApJbmRleDogU291cmNlL1dl
YkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9FbXB0eUNsaWVudHMuaAkocmV2aXNpb24gODU2MzEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3MSw3ICsyNzEsNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUljb24oKSB7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpIHsgfQog
ICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBTdHJpbmdXaXRo
RGlyZWN0aW9uJikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMo
KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucyhJY29uVHlwZSkg
eyB9CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ29tbWl0TG9hZCgpIHsgfQogICAgIHZp
cnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxQcm92aXNpb25hbExvYWQoY29uc3QgUmVzb3VyY2VF
cnJvciYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxMb2FkKGNvbnN0IFJl
c291cmNlRXJyb3ImKSB7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNw
cAkocmV2aXNpb24gODU2MzEpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OSw2ICs2OSw3IEBACiAjaW5jbHVkZSAiSGlzdG9yeUl0
ZW0uaCIKICNpbmNsdWRlICJJY29uRGF0YWJhc2UuaCIKICNpbmNsdWRlICJJY29uTG9hZGVyLmgi
CisjaW5jbHVkZSAiSWNvblVSTC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckNvbnRyb2xsZXIuaCIK
ICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJMb2dnaW5n
LmgiCkBAIC00NjcsMTggKzQ2OCw1NiBAQCBib29sIEZyYW1lTG9hZGVyOjpjbG9zZVVSTCgpCiAK
IEtVUkwgRnJhbWVMb2FkZXI6Omljb25VUkwoKQogewotICAgIC8vIElmIHRoaXMgaXNuJ3QgYSB0
b3AgbGV2ZWwgZnJhbWUsIHJldHVybiBub3RoaW5nCisgICAgSWNvblVSTHMgdXJscyA9IGljb25V
UkxzKEZhdmljb24pOworICAgIHJldHVybiB1cmxzLmlzRW1wdHkoKSA/IEtVUkwoKSA6IHVybHNb
MF0ubV9pY29uVVJMOworfQorCitJY29uVVJMcyBGcmFtZUxvYWRlcjo6aWNvblVSTHMoaW50IGlj
b25UeXBlcykKK3sKKyAgICBJY29uVVJMcyBpY29uVVJMczsKKyAgICBpZiAoaWNvblR5cGVzICYg
RmF2aWNvbiAmJiAhZmlsbEljb25VUkwoRmF2aWNvbiwgJmljb25VUkxzKSkKKyAgICAgICAgaWNv
blVSTHMuYXBwZW5kKGdldERlZmF1bHRJY29uVVJMKEZhdmljb24pKTsKKworI2lmIEVOQUJMRShU
T1VDSF9JQ09OX0xPQURJTkcpCisgICAgYm9vbCBoYXZlUHJlY29tcG9zZWRJY29uID0gZmFsc2U7
CisgICAgaWYgKGljb25UeXBlcyAmIFRvdWNoUHJlY29tcG9zZWRJY29uKQorICAgICAgICBoYXZl
UHJlY29tcG9zZWRJY29uID0gZmlsbEljb25VUkwoVG91Y2hQcmVjb21wb3NlZEljb24sICZpY29u
VVJMcyk7CisKKyAgICBib29sIGhhdmVUb3VjaEljb24gPSBmYWxzZTsKKyAgICBpZiAoaWNvblR5
cGVzICYgVG91Y2hJY29uKQorICAgICAgICBoYXZlVG91Y2hJY29uID0gZmlsbEljb25VUkwoVG91
Y2hJY29uLCAmaWNvblVSTHMpOworCisgICAgLy8gT25seSByZXR1cm4gdGhlIGRlZmF1bHQgdG91
Y2ggaWNvbnMgd2hlbiB0aGUgYm90aCB3ZXJlIHJlcXVpcmVkIGFuZCBuZWl0aGVyIHdhcyBnb3R0
ZW4uCisgICAgaWYgKGljb25UeXBlcyAmIFRvdWNoUHJlY29tcG9zZWRJY29uICYmIGljb25UeXBl
cyAmIFRvdWNoSWNvbiAmJiAhaGF2ZVByZWNvbXBvc2VkSWNvbiAmJiAhaGF2ZVRvdWNoSWNvbikg
eworICAgICAgICBpY29uVVJMcy5hcHBlbmQoZ2V0RGVmYXVsdEljb25VUkwoVG91Y2hQcmVjb21w
b3NlZEljb24pKTsKKyAgICAgICAgaWNvblVSTHMuYXBwZW5kKGdldERlZmF1bHRJY29uVVJMKFRv
dWNoSWNvbikpOworICAgIH0KKyNlbmRpZgorICAgIHJldHVybiBpY29uVVJMczsKK30KKworYm9v
bCBGcmFtZUxvYWRlcjo6ZmlsbEljb25VUkwoSWNvblR5cGUgaWNvblR5cGUsIEljb25VUkxzKiBp
Y29uVVJMcykKK3sKKyAgICAvLyBJZiB0aGlzIGlzbid0IGEgdG9wIGxldmVsIGZyYW1lLCByZXR1
cm4KICAgICBpZiAobV9mcmFtZS0+dHJlZSgpICYmIG1fZnJhbWUtPnRyZWUoKS0+cGFyZW50KCkp
Ci0gICAgICAgIHJldHVybiBLVVJMKCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8v
IElmIHdlIGhhdmUgYW4gaWNvblVSTCBmcm9tIGEgTGluayBlbGVtZW50LCByZXR1cm4gdGhhdAot
ICAgIGlmICghbV9mcmFtZS0+ZG9jdW1lbnQoKS0+aWNvblVSTCgpLmlzRW1wdHkoKSkKLSAgICAg
ICAgcmV0dXJuIEtVUkwoUGFyc2VkVVJMU3RyaW5nLCBtX2ZyYW1lLT5kb2N1bWVudCgpLT5pY29u
VVJMKCkpOworICAgIEljb25VUkwgdXJsID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+aWNvblVSTChp
Y29uVHlwZSk7CisgICAgaWYgKHVybC5tX2ljb25VUkwuaXNFbXB0eSgpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBpY29uVVJMcy0+YXBwZW5kKHVybCk7CisKKyAgICByZXR1cm4gdHJ1
ZTsKK30KIAorSWNvblVSTCBGcmFtZUxvYWRlcjo6Z2V0RGVmYXVsdEljb25VUkwoSWNvblR5cGUg
aWNvblR5cGUpCit7CiAgICAgLy8gRG9uJ3QgcmV0dXJuIGEgZmF2aWNvbiBpY29uVVJMIHVubGVz
cyB3ZSdyZSBodHRwIG9yIGh0dHBzCiAgICAgS1VSTCBkb2N1bWVudFVSTCA9IG1fZnJhbWUtPmRv
Y3VtZW50KCktPnVybCgpOwogICAgIGlmICghZG9jdW1lbnRVUkwucHJvdG9jb2xJbkhUVFBGYW1p
bHkoKSkKLSAgICAgICAgcmV0dXJuIEtVUkwoKTsKKyAgICAgICAgcmV0dXJuIEljb25VUkwoKTsK
IAogICAgIEtVUkwgdXJsOwogICAgIGJvb2wgY291bGRTZXRQcm90b2NvbCA9IHVybC5zZXRQcm90
b2NvbChkb2N1bWVudFVSTC5wcm90b2NvbCgpKTsKQEAgLTQ4Niw4ICs1MjUsMjEgQEAgS1VSTCBG
cmFtZUxvYWRlcjo6aWNvblVSTCgpCiAgICAgdXJsLnNldEhvc3QoZG9jdW1lbnRVUkwuaG9zdCgp
KTsKICAgICBpZiAoZG9jdW1lbnRVUkwuaGFzUG9ydCgpKQogICAgICAgICB1cmwuc2V0UG9ydChk
b2N1bWVudFVSTC5wb3J0KCkpOwotICAgIHVybC5zZXRQYXRoKCIvZmF2aWNvbi5pY28iKTsKLSAg
ICByZXR1cm4gdXJsOworICAgIGlmIChpY29uVHlwZSA9PSBGYXZpY29uKSB7CisgICAgICAgIHVy
bC5zZXRQYXRoKCIvZmF2aWNvbi5pY28iKTsKKyAgICAgICAgcmV0dXJuIEljb25VUkwoS1VSTChQ
YXJzZWRVUkxTdHJpbmcsIHVybCksIEZhdmljb24pOworICAgIH0KKyNpZiBFTkFCTEUoVE9VQ0hf
SUNPTl9MT0FESU5HKQorICAgIGlmIChpY29uVHlwZSA9PSBUb3VjaFByZWNvbXBvc2VkSWNvbikg
eworICAgICAgICB1cmwuc2V0UGF0aCgiL2FwcGxlLXRvdWNoLWljb24tcHJlY29tcG9zZWQucG5n
Iik7CisgICAgICAgIHJldHVybiBJY29uVVJMKEtVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmwpLCBU
b3VjaFByZWNvbXBvc2VkSWNvbik7CisgICAgfQorICAgIGlmIChpY29uVHlwZSA9PSBUb3VjaElj
b24pIHsKKyAgICAgICAgdXJsLnNldFBhdGgoIi9hcHBsZS10b3VjaC1pY29uLnBuZyIpOworICAg
ICAgICByZXR1cm4gSWNvblVSTChLVVJMKFBhcnNlZFVSTFN0cmluZywgdXJsKSwgVG91Y2hJY29u
KTsKKyAgICB9CisjZW5kaWYKKyAgICByZXR1cm4gSWNvblVSTCgpOwogfQogCiBib29sIEZyYW1l
TG9hZGVyOjpkaWRPcGVuVVJMKGNvbnN0IEtVUkwmIHVybCkKQEAgLTMzNTcsNyArMzQwOSw3IEBA
IHZvaWQgRnJhbWVMb2FkZXI6OnNldFRpdGxlKGNvbnN0IFN0cmluZ1cKICAgICBkb2N1bWVudExv
YWRlcigpLT5zZXRUaXRsZSh0aXRsZSk7CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXI6OnNldEljb25V
UkwoY29uc3QgU3RyaW5nJiBpY29uVVJMKQordm9pZCBGcmFtZUxvYWRlcjo6c2V0SWNvblVSTChj
b25zdCBJY29uVVJMJiBpY29uVVJMKQogewogICAgIGRvY3VtZW50TG9hZGVyKCktPnNldEljb25V
UkwoaWNvblVSTCk7CiB9CkBAIC0zNDM1LDEwICszNDg3LDEwIEBAIHZvaWQgRnJhbWVMb2FkZXI6
OmRpZENoYW5nZVRpdGxlKERvY3VtZW4KICAgICB9CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXI6OmRp
ZENoYW5nZUljb25zKERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCit2b2lkIEZyYW1lTG9hZGVyOjpk
aWRDaGFuZ2VJY29ucyhEb2N1bWVudExvYWRlciogbG9hZGVyLCBJY29uVHlwZSB0eXBlKQogewog
ICAgIGlmIChsb2FkZXIgPT0gbV9kb2N1bWVudExvYWRlcikKLSAgICAgICAgbV9jbGllbnQtPmRp
c3BhdGNoRGlkQ2hhbmdlSWNvbnMoKTsKKyAgICAgICAgbV9jbGllbnQtPmRpc3BhdGNoRGlkQ2hh
bmdlSWNvbnModHlwZSk7CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXI6OmRpc3BhdGNoRGlkQ29tbWl0
TG9hZCgpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAkocmV2aXNpb24gODU2
MzEpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIkZyYW1lTG9hZGVyVHlwZXMuaCIKICNpbmNs
dWRlICJIaXN0b3J5Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIkljb25EYXRhYmFzZUJhc2UuaCIK
KyNpbmNsdWRlICJJY29uVVJMLmgiCiAjaW5jbHVkZSAiUG9saWN5Q2hlY2tlci5oIgogI2luY2x1
ZGUgIlJlc291cmNlTG9hZE5vdGlmaWVyLmgiCiAjaW5jbHVkZSAiU3ViZnJhbWVMb2FkZXIuaCIK
QEAgLTE5MSw3ICsxOTIsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBzdWJmcmFtZUlzTG9hZGluZygp
IGNvbnN0OwogICAgIHZvaWQgd2lsbENoYW5nZVRpdGxlKERvY3VtZW50TG9hZGVyKik7CiAgICAg
dm9pZCBkaWRDaGFuZ2VUaXRsZShEb2N1bWVudExvYWRlciopOwotICAgIHZvaWQgZGlkQ2hhbmdl
SWNvbnMoRG9jdW1lbnRMb2FkZXIqKTsKKyAgICB2b2lkIGRpZENoYW5nZUljb25zKERvY3VtZW50
TG9hZGVyKiwgSWNvblR5cGUpOwogCiAgICAgRnJhbWVMb2FkVHlwZSBsb2FkVHlwZSgpIGNvbnN0
OwogCkBAIC0yMzMsNyArMjM0LDExIEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZEVuZERvY3VtZW50
KCk7CiAgICAgdm9pZCB3aWxsU2V0RW5jb2RpbmcoKTsKIAorICAgIC8vIFJldHVybnMgZmF2aWNv
bi4KICAgICBLVVJMIGljb25VUkwoKTsKKworICAgIC8vIFJldHVybnMgdGhlIGdpdmVuIGljb25U
eXBlcycgSWNvblVSTHMsIGljb25UeXBlcyBjb3VsZCBiZSBhbnkgY29tYmluYXRpb24gb2YgSWNv
blR5cGUuCisgICAgSWNvblVSTHMgaWNvblVSTHMoaW50IGljb25UeXBlcyk7CiAgICAgdm9pZCBj
b21taXRJY29uVVJMVG9JY29uRGF0YWJhc2UoY29uc3QgS1VSTCYpOwogCiAgICAgS1VSTCBiYXNl
VVJMKCkgY29uc3Q7CkBAIC0yODQsNyArMjg5LDcgQEAgcHVibGljOgogICAgIHZvaWQgY2FuY2Vs
QW5kQ2xlYXIoKTsKIAogICAgIHZvaWQgc2V0VGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlv
biYpOwotICAgIHZvaWQgc2V0SWNvblVSTChjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIHNldElj
b25VUkwoY29uc3QgSWNvblVSTCYpOwogCiAgICAgdm9pZCBjb21taXRQcm92aXNpb25hbExvYWQo
KTsKICAgICBib29sIGlzTG9hZGluZ0Zyb21DYWNoZWRQYWdlKCkgY29uc3QgeyByZXR1cm4gbV9s
b2FkaW5nRnJvbUNhY2hlZFBhZ2U7IH0KQEAgLTQyOCw2ICs0MzMsOSBAQCBwcml2YXRlOgogCiAg
ICAgdm9pZCB1cGRhdGVTYW5kYm94RmxhZ3MoKTsKIAorICAgIGJvb2wgZmlsbEljb25VUkwoSWNv
blR5cGUsIEljb25VUkxzKik7CisgICAgSWNvblVSTCBnZXREZWZhdWx0SWNvblVSTChJY29uVHlw
ZSk7CisKICAgICBGcmFtZSogbV9mcmFtZTsKICAgICBGcmFtZUxvYWRlckNsaWVudCogbV9jbGll
bnQ7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCShy
ZXZpc2lvbiA4NTYzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAjZGVmaW5lIEZyYW1lTG9hZGVy
Q2xpZW50X2gKIAogI2luY2x1ZGUgIkZyYW1lTG9hZGVyVHlwZXMuaCIKKyNpbmNsdWRlICJJY29u
VVJMLmgiCiAjaW5jbHVkZSAiU2Nyb2xsVHlwZXMuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5o
PgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTE0MSw3ICsxNDIsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVJY29uKCkg
PSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9h
ZCgpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNv
bnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mKSA9IDA7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkaXNw
YXRjaERpZENoYW5nZUljb25zKCkgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hE
aWRDaGFuZ2VJY29ucyhJY29uVHlwZSkgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0
Y2hEaWRDb21taXRMb2FkKCkgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRG
YWlsUHJvdmlzaW9uYWxMb2FkKGNvbnN0IFJlc291cmNlRXJyb3ImKSA9IDA7CiAgICAgICAgIHZp
cnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxMb2FkKGNvbnN0IFJlc291cmNlRXJyb3ImKSA9IDA7
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiA4NTY1NCkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDExLTA0LTIyICBUYW8gQmFp
ICA8bWljaGFlbGJhaUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgUG9wdWxhdGUgdG91Y2gtaWNvbiB1cmwgdG8gRnJhbWVMb2Fk
ZXJDbGllbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTU5MTQzCisKKyAgICAgICAgUmVzcGVjdGVkIHRoZSBjaGFuZ2Ugb2YgRnJhbWVMb2FkZXJDbGll
bnQuCisgICAgICAgIEFkZGVkIFdlYkljb25VUkwgYW5kIFdlYkljb25UeXBlIHJlc3BvbmRpbmcg
dGhlIG5ldyBJY29uVVJMIGFuZCBJY29uVHlwZS4KKyAgICAgICAgU3VwcG9ydGVkIHRvIGdldCB0
aGUgbXVsdGlwbGUgaWNvbiB1cmxzLgorCisgICAgICAgICogQ29uZmlndXJhdGlvbnMvRmVhdHVy
ZURlZmluZXMueGNjb25maWc6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVy
Q2xpZW50OjpkaXNwYXRjaERpZENoYW5nZUljb25zKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisKIDIwMTEtMDUtMDMgIEFkYW0g
Um9iZW4gIDxhcm9iZW5AYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBtb3N0IHN0cmljdCBQYXNz
T3duUHRyIHZpb2xhdGlvbnMgb24gV2luZG93cwpJbmRleDogU291cmNlL1dlYktpdDIvQ29uZmln
dXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcJKHJldmlzaW9uIDg1
NjMxKQorKysgU291cmNlL1dlYktpdDIvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNj
b25maWcJKHdvcmtpbmcgY29weSkKQEAgLTExOCw2ICsxMTgsOCBAQCBFTkFCTEVfVklERU9fVFJB
Q0sgPSA7CiAKIEVOQUJMRV9NRURJQV9TVEFUSVNUSUNTID0gOwogCitFTkFCTEVfVE9VQ0hfSUNP
Tl9MT0FESU5HID0gOworCiBFTkFCTEVfV0VCX0FVRElPID0gOwogCiBFTkFCTEVfV0VCX1NPQ0tF
VFMgPSAkKEVOQUJMRV9XRUJfU09DS0VUU18kKFJFQUxfUExBVEZPUk1fTkFNRSkpOwpAQCAtMTMy
LDQgKzEzNCw0IEBAIEVOQUJMRV9YSFRNTE1QID0gOwogRU5BQkxFX1hQQVRIID0gRU5BQkxFX1hQ
QVRIOwogRU5BQkxFX1hTTFQgPSBFTkFCTEVfWFNMVDsKIAotRkVBVFVSRV9ERUZJTkVTID0gJChF
TkFCTEVfTElOS19QUkVGRVRDSCkgJChFTkFCTEVfQUNDRUxFUkFURURfMkRfQ0FOVkFTKSAkKEVO
QUJMRV9XRUJHTCkgJChFTkFCTEVfM0RfUkVOREVSSU5HKSAkKEVOQUJMRV9BTklNQVRJT05fQVBJ
KSAkKEVOQUJMRV9CTE9CKSAkKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORykgJChFTkFCTEVfQ0xJ
RU5UX0JBU0VEX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9EQVRBQkFTRSkgJChFTkFCTEVfREFUQUxJ
U1QpICQoRU5BQkxFX0RBVEFfVFJBTlNGRVJfSVRFTVMpICQoRU5BQkxFX0RFVEFJTFMpICQoRU5B
QkxFX0RFVklDRV9PUklFTlRBVElPTikgJChFTkFCTEVfRElSRUNUT1JZX1VQTE9BRCkgJChFTkFC
TEVfRE9NX1NUT1JBR0UpICQoRU5BQkxFX0VWRU5UU09VUkNFKSAkKEVOQUJMRV9GSUxURVJTKSAk
KEVOQUJMRV9GSUxFX1NZU1RFTSkgJChFTkFCTEVfRlVMTFNDUkVFTl9BUEkpICQoRU5BQkxFX0dF
T0xPQ0FUSU9OKSAkKEVOQUJMRV9JQ09OREFUQUJBU0UpICQoRU5BQkxFX0lOREVYRURfREFUQUJB
U0UpICQoRU5BQkxFX0lOUFVUX1NQRUVDSCkgJChFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dFUikg
JChFTkFCTEVfTUFUSE1MKSAkKEVOQUJMRV9NRVRFUl9UQUcpICQoRU5BQkxFX05PVElGSUNBVElP
TlMpICQoRU5BQkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUykgJChFTkFCTEVfUEFHRV9WSVNJ
QklMSVRZX0FQSSkgJChFTkFCTEVfUFJPR1JFU1NfVEFHKSAkKEVOQUJMRV9SRUdJU1RFUl9QUk9U
T0NPTF9IQU5ETEVSKSAkKEVOQUJMRV9RVU9UQSkgJChFTkFCTEVfU0hBUkVEX1dPUktFUlMpICQo
RU5BQkxFX1NWRykgJChFTkFCTEVfU1ZHX0FOSU1BVElPTikgJChFTkFCTEVfU1ZHX0FTX0lNQUdF
KSAkKEVOQUJMRV9TVkdfRE9NX09CSkNfQklORElOR1MpICQoRU5BQkxFX1NWR19GT05UUykgJChF
TkFCTEVfU1ZHX0ZPUkVJR05fT0JKRUNUKSAkKEVOQUJMRV9TVkdfVVNFKSAkKEVOQUJMRV9WSURF
TykgJChFTkFCTEVfVklERU9fVFJBQ0spICQoRU5BQkxFX01FRElBX1NUQVRJU1RJQ1MpICQoRU5B
QkxFX1dFQl9BVURJTykgJChFTkFCTEVfV0VCX1NPQ0tFVFMpICQoRU5BQkxFX1dFQl9USU1JTkcp
ICQoRU5BQkxFX1dPUktFUlMpICQoRU5BQkxFX1hIVE1MTVApICQoRU5BQkxFX1hQQVRIKSAkKEVO
QUJMRV9YU0xUKTsKK0ZFQVRVUkVfREVGSU5FUyA9ICQoRU5BQkxFX0xJTktfUFJFRkVUQ0gpICQo
RU5BQkxFX0FDQ0VMRVJBVEVEXzJEX0NBTlZBUykgJChFTkFCTEVfV0VCR0wpICQoRU5BQkxFXzNE
X1JFTkRFUklORykgJChFTkFCTEVfQU5JTUFUSU9OX0FQSSkgJChFTkFCTEVfQkxPQikgJChFTkFC
TEVfQ0hBTk5FTF9NRVNTQUdJTkcpICQoRU5BQkxFX0NMSUVOVF9CQVNFRF9HRU9MT0NBVElPTikg
JChFTkFCTEVfREFUQUJBU0UpICQoRU5BQkxFX0RBVEFMSVNUKSAkKEVOQUJMRV9EQVRBX1RSQU5T
RkVSX0lURU1TKSAkKEVOQUJMRV9ERVRBSUxTKSAkKEVOQUJMRV9ERVZJQ0VfT1JJRU5UQVRJT04p
ICQoRU5BQkxFX0RJUkVDVE9SWV9VUExPQUQpICQoRU5BQkxFX0RPTV9TVE9SQUdFKSAkKEVOQUJM
RV9FVkVOVFNPVVJDRSkgJChFTkFCTEVfRklMVEVSUykgJChFTkFCTEVfRklMRV9TWVNURU0pICQo
RU5BQkxFX0ZVTExTQ1JFRU5fQVBJKSAkKEVOQUJMRV9HRU9MT0NBVElPTikgJChFTkFCTEVfSUNP
TkRBVEFCQVNFKSAkKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFKSAkKEVOQUJMRV9JTlBVVF9TUEVF
Q0gpICQoRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIpICQoRU5BQkxFX01BVEhNTCkgJChFTkFC
TEVfTUVURVJfVEFHKSAkKEVOQUJMRV9OT1RJRklDQVRJT05TKSAkKEVOQUJMRV9PRkZMSU5FX1dF
Ql9BUFBMSUNBVElPTlMpICQoRU5BQkxFX1BBR0VfVklTSUJJTElUWV9BUEkpICQoRU5BQkxFX1BS
T0dSRVNTX1RBRykgJChFTkFCTEVfUkVHSVNURVJfUFJPVE9DT0xfSEFORExFUikgJChFTkFCTEVf
UVVPVEEpICQoRU5BQkxFX1NIQVJFRF9XT1JLRVJTKSAkKEVOQUJMRV9TVkcpICQoRU5BQkxFX1NW
R19BTklNQVRJT04pICQoRU5BQkxFX1NWR19BU19JTUFHRSkgJChFTkFCTEVfU1ZHX0RPTV9PQkpD
X0JJTkRJTkdTKSAkKEVOQUJMRV9TVkdfRk9OVFMpICQoRU5BQkxFX1NWR19GT1JFSUdOX09CSkVD
VCkgJChFTkFCTEVfU1ZHX1VTRSkgJChFTkFCTEVfVE9VQ0hfSUNPTl9MT0FESU5HKSAkKEVOQUJM
RV9WSURFTykgJChFTkFCTEVfVklERU9fVFJBQ0spICQoRU5BQkxFX01FRElBX1NUQVRJU1RJQ1Mp
ICQoRU5BQkxFX1dFQl9BVURJTykgJChFTkFCTEVfV0VCX1NPQ0tFVFMpICQoRU5BQkxFX1dFQl9U
SU1JTkcpICQoRU5BQkxFX1dPUktFUlMpICQoRU5BQkxFX1hIVE1MTVApICQoRU5BQkxFX1hQQVRI
KSAkKEVOQUJMRV9YU0xUKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3Bw
CShyZXZpc2lvbiA4NTYzMSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MTgsNyAr
NDE4LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRSZQogICAgIHdl
YlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkUmVjZWl2ZVRpdGxlRm9yRnJh
bWUobV9mcmFtZS0+ZnJhbWVJRCgpLCB0aXRsZS5zdHJpbmcoKSwgSW5qZWN0ZWRCdW5kbGVVc2Vy
TWVzc2FnZUVuY29kZXIodXNlckRhdGEuZ2V0KCkpKSk7CiB9CiAKLXZvaWQgV2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoKQordm9pZCBXZWJGcmFtZUxvYWRlckNs
aWVudDo6ZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucyhXZWJDb3JlOjpJY29uVHlwZSkKIHsKICAgICBu
b3RJbXBsZW1lbnRlZCgpOwogfQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAko
cmV2aXNpb24gODU2MzEpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTg1LDcgKzg1LDcg
QEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbigpOwog
ICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCk7CiAgICAg
dmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFdlYkNvcmU6OlN0cmlu
Z1dpdGhEaXJlY3Rpb24mKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VJY29u
cygpOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZUljb25zKFdlYkNvcmU6Oklj
b25UeXBlKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDb21taXRMb2FkKCk7CiAgICAg
dmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9hZChjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yJik7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbExvYWQo
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwpJbmRleDogU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cJKHJldmlzaW9uIDg1NjU0KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAxMS0wNC0yMiAgVGFvIEJhaSAg
PG1pY2hhZWxiYWlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFBvcHVsYXRlIHRvdWNoLWljb24gdXJsIHRvIEZyYW1lTG9hZGVy
Q2xpZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01
OTE0MworCisgICAgICAgIFJlc3BlY3RlZCB0aGUgY2hhbmdlIG9mIEZyYW1lTG9hZGVyQ2xpZW50
LgorCisgICAgICAgICogc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6ZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucyk6Cisg
ICAgICAgICogc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5oOgorCiAyMDExLTA1LTAzICBKdWxp
ZW4gQ2hhZmZyYWl4ICA8amNoYWZmcmFpeEBjb2RlYXVyb3JhLm9yZz4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBEaW1pdHJpIEdsYXprb3YuCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAJKHJldmlzaW9uIDg1NjMxKQor
KysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNzgwLDcgKzc4MCw3IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRJ
bXBsOjpkaXNwYXRjaERpZFIKICAgICAgICAgbV93ZWJGcmFtZS0+Y2xpZW50KCktPmRpZFJlY2Vp
dmVUaXRsZShtX3dlYkZyYW1lLCB0aXRsZS5zdHJpbmcoKSwgdGl0bGUuZGlyZWN0aW9uKCkgPT0g
TFRSID8gV2ViVGV4dERpcmVjdGlvbkxlZnRUb1JpZ2h0IDogV2ViVGV4dERpcmVjdGlvblJpZ2h0
VG9MZWZ0KTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudEltcGw6OmRpc3BhdGNoRGlkQ2hh
bmdlSWNvbnMoKQordm9pZCBGcmFtZUxvYWRlckNsaWVudEltcGw6OmRpc3BhdGNoRGlkQ2hhbmdl
SWNvbnMoV2ViQ29yZTo6SWNvblR5cGUgdHlwZSkKIHsKICAgICBpZiAobV93ZWJGcmFtZS0+Y2xp
ZW50KCkpCiAgICAgICAgIG1fd2ViRnJhbWUtPmNsaWVudCgpLT5kaWRDaGFuZ2VJY29ucyhtX3dl
YkZyYW1lKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xp
ZW50SW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1l
TG9hZGVyQ2xpZW50SW1wbC5oCShyZXZpc2lvbiA4NTYzMSkKKysrIFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDUs
NyArMTA1LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVJ
Y29uKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkU3RhcnRQcm92aXNpb25hbExvYWQo
KTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgV2ViQ29y
ZTo6U3RyaW5nV2l0aERpcmVjdGlvbiYpOwotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENo
YW5nZUljb25zKCk7CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoV2Vi
Q29yZTo6SWNvblR5cGUpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENvbW1pdExvYWQo
KTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGYWlsUHJvdmlzaW9uYWxMb2FkKGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRG
YWlsTG9hZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L2VmbC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9lZmwvQ2hhbmdl
TG9nCShyZXZpc2lvbiA4NTY1NCkKKysrIFNvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDExLTA0LTIyICBUYW8gQmFpICA8bWljaGFl
bGJhaUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgUG9wdWxhdGUgdG91Y2gtaWNvbiB1cmwgdG8gRnJhbWVMb2FkZXJDbGllbnQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU5MTQzCisK
KyAgICAgICAgUmVzcGVjdCB0aGUgaW50ZXJmYWNlIGNoYW5nZSBpbiBGcmFtZUxvYWRlckNsaWVu
dAorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGlkQ2hhbmdl
SWNvbnMpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmg6
CisKIDIwMTEtMDUtMDMgIExlYW5kcm8gUGVyZWlyYSAgPGxlYW5kcm9AcHJvZnVzaW9uLm1vYmk+
CiAKICAgICAgICAgW0VGTF0gVW5yZXZpZXdlZCBidWlsZCBmaXggZm9yIE5FVFdPUktfQkFDS0VO
RD1jdXJsLgpJbmRleDogU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2Fk
ZXJDbGllbnRFZmwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVT
dXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcAkocmV2aXNpb24gODU2MzEpCisrKyBTb3Vy
Y2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTU4Nyw3ICs1ODcsNyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZs
OjpkaXNwYXRjaERpZFJlCiAgICAgZXdrX3ZpZXdfdGl0bGVfc2V0KG1fdmlldywgY3MuZGF0YSgp
KTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hEaWRDaGFuZ2VJY29u
cygpCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERpZENoYW5nZUljb25zKFdl
YkNvcmU6Okljb25UeXBlKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xp
ZW50RWZsLmgJKHJldmlzaW9uIDg1NjMxKQorKysgU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1
cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuaAkod29ya2luZyBjb3B5KQpAQCAtMTAzLDcgKzEw
Myw3IEBAIGNsYXNzIEZyYW1lTG9hZGVyQ2xpZW50RWZsIDogcHVibGljIEZyYW0KICAgICB2aXJ0
dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbigpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNw
YXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
RGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mKTsKLSAgICB2aXJ0dWFs
IHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygpOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRj
aERpZENoYW5nZUljb25zKFdlYkNvcmU6Okljb25UeXBlKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlz
cGF0Y2hEaWRDb21taXRMb2FkKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbFBy
b3Zpc2lvbmFsTG9hZChjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAgdmlydHVhbCB2b2lkIGRp
c3BhdGNoRGlkRmFpbExvYWQoY29uc3QgUmVzb3VyY2VFcnJvciYpOwpJbmRleDogU291cmNlL1dl
YktpdC9ndGsvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZ3RrL0NoYW5n
ZUxvZwkocmV2aXNpb24gODU2NTQpCisrKyBTb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAxMS0wNC0yMiAgVGFvIEJhaSAgPG1pY2hh
ZWxiYWlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFBvcHVsYXRlIHRvdWNoLWljb24gdXJsIHRvIEZyYW1lTG9hZGVyQ2xpZW50
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01OTE0Mwor
CisgICAgICAgIFJlc3BlY3QgdGhlIGludGVyZmFjZSBjaGFuZ2UgaW4gRnJhbWVMb2FkZXJDbGll
bnQuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHA6
CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENoYW5nZUlj
b25zKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5oOgor
CiAyMDExLTA1LTAzICBKdWxpZW4gQ2hhZmZyYWl4ICA8amNoYWZmcmFpeEBjb2RlYXVyb3JhLm9y
Zz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEaW1pdHJpIEdsYXprb3YuCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGll
bnRHdGsuY3BwCShyZXZpc2lvbiA4NTYzMSkKKysrIFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVT
dXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTY5LDcg
Kzk2OSw3IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVjZWkKICAgICB9
CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoKQor
dm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucyhXZWJDb3JlOjpJ
Y29uVHlwZSkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQpJbmRleDogU291cmNlL1dlYktp
dC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5o
CShyZXZpc2lvbiA4NTYzMSkKKysrIFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Zy
YW1lTG9hZGVyQ2xpZW50R3RrLmgJKHdvcmtpbmcgY29weSkKQEAgLTgyLDcgKzgyLDcgQEAgbmFt
ZXNwYWNlIFdlYktpdCB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVJ
Y29uKCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxM
b2FkKCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25z
dCBXZWJDb3JlOjpTdHJpbmdXaXRoRGlyZWN0aW9uJik7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaERpZENoYW5nZUljb25zKCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERp
ZENoYW5nZUljb25zKFdlYkNvcmU6Okljb25UeXBlKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRp
c3BhdGNoRGlkQ29tbWl0TG9hZCgpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRG
YWlsUHJvdmlzaW9uYWxMb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKICAgICAg
ICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbExvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvciYpOwpJbmRleDogU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gODU2NTQpCisrKyBTb3Vy
Y2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNyBAQAor
MjAxMS0wNC0yMiAgVGFvIEJhaSAgPG1pY2hhZWxiYWlAY2hyb21pdW0ub3JnPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBvcHVsYXRlIHRvdWNoLWlj
b24gdXJsIHRvIEZyYW1lTG9hZGVyQ2xpZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD01OTE0MworCisgICAgICAgIFJlc3BlY3QgdGhlIGludGVyZmFj
ZSBjaGFuZ2UgaW4gRnJhbWVMb2FkZXJDbGllbnQuCisKKyAgICAgICAgKiBDb25maWd1cmF0aW9u
cy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZzoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50Lm1tOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlk
Q2hhbmdlSWNvbnMpOgorCiAyMDExLTA1LTAzICBKdWxpZW4gQ2hhZmZyYWl4ICA8amNoYWZmcmFp
eEBjb2RlYXVyb3JhLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEaW1pdHJpIEdsYXprb3Yu
CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54
Y2NvbmZpZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9Db25maWd1cmF0aW9ucy9G
ZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwkocmV2aXNpb24gODU2MzEpCisrKyBTb3VyY2UvV2ViS2l0
L21hYy9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwkod29ya2luZyBjb3B5
KQpAQCAtMTE4LDYgKzExOCw4IEBAIEVOQUJMRV9WSURFT19UUkFDSyA9IDsKIAogRU5BQkxFX01F
RElBX1NUQVRJU1RJQ1MgPSA7CiAKK0VOQUJMRV9UT1VDSF9JQ09OX0xPQURJTkcgPSA7CisKIEVO
QUJMRV9XRUJfQVVESU8gPSA7CiAKIEVOQUJMRV9XRUJfU09DS0VUUyA9ICQoRU5BQkxFX1dFQl9T
T0NLRVRTXyQoUkVBTF9QTEFURk9STV9OQU1FKSk7CkBAIC0xMzIsNCArMTM0LDQgQEAgRU5BQkxF
X1hIVE1MTVAgPSA7CiBFTkFCTEVfWFBBVEggPSBFTkFCTEVfWFBBVEg7CiBFTkFCTEVfWFNMVCA9
IEVOQUJMRV9YU0xUOwogCi1GRUFUVVJFX0RFRklORVMgPSAkKEVOQUJMRV9MSU5LX1BSRUZFVENI
KSAkKEVOQUJMRV9BQ0NFTEVSQVRFRF8yRF9DQU5WQVMpICQoRU5BQkxFX1dFQkdMKSAkKEVOQUJM
RV8zRF9SRU5ERVJJTkcpICQoRU5BQkxFX0FOSU1BVElPTl9BUEkpICQoRU5BQkxFX0JMT0IpICQo
RU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HKSAkKEVOQUJMRV9DTElFTlRfQkFTRURfR0VPTE9DQVRJ
T04pICQoRU5BQkxFX0RBVEFCQVNFKSAkKEVOQUJMRV9EQVRBTElTVCkgJChFTkFCTEVfREFUQV9U
UkFOU0ZFUl9JVEVNUykgJChFTkFCTEVfREVUQUlMUykgJChFTkFCTEVfREVWSUNFX09SSUVOVEFU
SU9OKSAkKEVOQUJMRV9ESVJFQ1RPUllfVVBMT0FEKSAkKEVOQUJMRV9ET01fU1RPUkFHRSkgJChF
TkFCTEVfRVZFTlRTT1VSQ0UpICQoRU5BQkxFX0ZJTFRFUlMpICQoRU5BQkxFX0ZJTEVfU1lTVEVN
KSAkKEVOQUJMRV9GVUxMU0NSRUVOX0FQSSkgJChFTkFCTEVfR0VPTE9DQVRJT04pICQoRU5BQkxF
X0lDT05EQVRBQkFTRSkgJChFTkFCTEVfSU5ERVhFRF9EQVRBQkFTRSkgJChFTkFCTEVfSU5QVVRf
U1BFRUNIKSAkKEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSKSAkKEVOQUJMRV9NQVRITUwpICQo
RU5BQkxFX01FVEVSX1RBRykgJChFTkFCTEVfTk9USUZJQ0FUSU9OUykgJChFTkFCTEVfT0ZGTElO
RV9XRUJfQVBQTElDQVRJT05TKSAkKEVOQUJMRV9QQUdFX1ZJU0lCSUxJVFlfQVBJKSAkKEVOQUJM
RV9QUk9HUkVTU19UQUcpICQoRU5BQkxFX1JFR0lTVEVSX1BST1RPQ09MX0hBTkRMRVIpICQoRU5B
QkxFX1FVT1RBKSAkKEVOQUJMRV9TSEFSRURfV09SS0VSUykgJChFTkFCTEVfU1ZHKSAkKEVOQUJM
RV9TVkdfQU5JTUFUSU9OKSAkKEVOQUJMRV9TVkdfQVNfSU1BR0UpICQoRU5BQkxFX1NWR19ET01f
T0JKQ19CSU5ESU5HUykgJChFTkFCTEVfU1ZHX0ZPTlRTKSAkKEVOQUJMRV9TVkdfRk9SRUlHTl9P
QkpFQ1QpICQoRU5BQkxFX1NWR19VU0UpICQoRU5BQkxFX1ZJREVPKSAkKEVOQUJMRV9WSURFT19U
UkFDSykgJChFTkFCTEVfTUVESUFfU1RBVElTVElDUykgJChFTkFCTEVfV0VCX0FVRElPKSAkKEVO
QUJMRV9XRUJfU09DS0VUUykgJChFTkFCTEVfV0VCX1RJTUlORykgJChFTkFCTEVfV09SS0VSUykg
JChFTkFCTEVfWEhUTUxNUCkgJChFTkFCTEVfWFBBVEgpICQoRU5BQkxFX1hTTFQpOworRkVBVFVS
RV9ERUZJTkVTID0gJChFTkFCTEVfTElOS19QUkVGRVRDSCkgJChFTkFCTEVfQUNDRUxFUkFURURf
MkRfQ0FOVkFTKSAkKEVOQUJMRV9XRUJHTCkgJChFTkFCTEVfM0RfUkVOREVSSU5HKSAkKEVOQUJM
RV9BTklNQVRJT05fQVBJKSAkKEVOQUJMRV9CTE9CKSAkKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lO
RykgJChFTkFCTEVfQ0xJRU5UX0JBU0VEX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9EQVRBQkFTRSkg
JChFTkFCTEVfREFUQUxJU1QpICQoRU5BQkxFX0RBVEFfVFJBTlNGRVJfSVRFTVMpICQoRU5BQkxF
X0RFVEFJTFMpICQoRU5BQkxFX0RFVklDRV9PUklFTlRBVElPTikgJChFTkFCTEVfRElSRUNUT1JZ
X1VQTE9BRCkgJChFTkFCTEVfRE9NX1NUT1JBR0UpICQoRU5BQkxFX0VWRU5UU09VUkNFKSAkKEVO
QUJMRV9GSUxURVJTKSAkKEVOQUJMRV9GSUxFX1NZU1RFTSkgJChFTkFCTEVfRlVMTFNDUkVFTl9B
UEkpICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9JQ09OREFUQUJBU0UpICQoRU5BQkxF
X0lOREVYRURfREFUQUJBU0UpICQoRU5BQkxFX0lOUFVUX1NQRUVDSCkgJChFTkFCTEVfSkFWQVND
UklQVF9ERUJVR0dFUikgJChFTkFCTEVfTUFUSE1MKSAkKEVOQUJMRV9NRVRFUl9UQUcpICQoRU5B
QkxFX05PVElGSUNBVElPTlMpICQoRU5BQkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUykgJChF
TkFCTEVfUEFHRV9WSVNJQklMSVRZX0FQSSkgJChFTkFCTEVfUFJPR1JFU1NfVEFHKSAkKEVOQUJM
RV9SRUdJU1RFUl9QUk9UT0NPTF9IQU5ETEVSKSAkKEVOQUJMRV9RVU9UQSkgJChFTkFCTEVfU0hB
UkVEX1dPUktFUlMpICQoRU5BQkxFX1NWRykgJChFTkFCTEVfU1ZHX0FOSU1BVElPTikgJChFTkFC
TEVfU1ZHX0FTX0lNQUdFKSAkKEVOQUJMRV9TVkdfRE9NX09CSkNfQklORElOR1MpICQoRU5BQkxF
X1NWR19GT05UUykgJChFTkFCTEVfU1ZHX0ZPUkVJR05fT0JKRUNUKSAkKEVOQUJMRV9TVkdfVVNF
KSAkKEVOQUJMRV9UT1VDSF9JQ09OX0xPQURJTkcpICQoRU5BQkxFX1ZJREVPKSAkKEVOQUJMRV9W
SURFT19UUkFDSykgJChFTkFCTEVfTUVESUFfU1RBVElTVElDUykgJChFTkFCTEVfV0VCX0FVRElP
KSAkKEVOQUJMRV9XRUJfU09DS0VUUykgJChFTkFCTEVfV0VCX1RJTUlORykgJChFTkFCTEVfV09S
S0VSUykgJChFTkFCTEVfWEhUTUxNUCkgJChFTkFCTEVfWFBBVEgpICQoRU5BQkxFX1hTTFQpOwpJ
bmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5oCShyZXZpc2lvbiA4NTYzMSkKKysrIFNvdXJjZS9XZWJLaXQvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTEwMiw3ICsxMDIsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJl
Y2VpdmVJY29uKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkU3RhcnRQcm92aXNpb25h
bExvYWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3Qg
V2ViQ29yZTo6U3RyaW5nV2l0aERpcmVjdGlvbiYpOwotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRj
aERpZENoYW5nZUljb25zKCk7CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlSWNv
bnMoV2ViQ29yZTo6SWNvblR5cGUpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENvbW1p
dExvYWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGYWlsUHJvdmlzaW9uYWxMb2Fk
KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0
Y2hEaWRGYWlsTG9hZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5tbQkocmV2aXNpb24gODU2MzEpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQkod29ya2luZyBjb3B5KQpAQCAtNjMzLDcg
KzYzMyw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmUKICAgICAg
ICAgQ2FsbEZyYW1lTG9hZERlbGVnYXRlKGltcGxlbWVudGF0aW9ucy0+ZGlkUmVjZWl2ZVRpdGxl
Rm9yRnJhbWVGdW5jLCB3ZWJWaWV3LCBAc2VsZWN0b3Iod2ViVmlldzpkaWRSZWNlaXZlVGl0bGU6
Zm9yRnJhbWU6KSwgKE5TU3RyaW5nICopdGl0bGUuc3RyaW5nKCksIG1fd2ViRnJhbWUuZ2V0KCkp
OwogfQogCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENoYW5nZUljb25z
KCkKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoV2Vi
Q29yZTo6SWNvblR5cGUpCiB7CiAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcyB0byBhbGxv
dyBjb250YWluZXIgdG8gdXBkYXRlIGZhdmljb24uCiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L3F0
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwkocmV2
aXNpb24gODU2NTQpCisrKyBTb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDE2IEBACisyMDExLTA0LTIyICBUYW8gQmFpICA8bWljaGFlbGJhaUBjaHJv
bWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgUG9wdWxhdGUgdG91Y2gtaWNvbiB1cmwgdG8gRnJhbWVMb2FkZXJDbGllbnQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU5MTQzCisKKyAgICAgICAg
UmVzcGVjdCB0aGUgaW50ZXJmYWNlIGNoYW5nZSBpbiBGcmFtZUxvYWRlckNsaWVudC4KKworICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucyk6Cisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5oOgorCiAyMDExLTA1
LTAzICBKdWxpZW4gQ2hhZmZyYWl4ICA8amNoYWZmcmFpeEBjb2RlYXVyb3JhLm9yZz4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBEaW1pdHJpIEdsYXprb3YuCkluZGV4OiBTb3VyY2UvV2ViS2l0L3F0
L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHAJKHJl
dmlzaW9uIDg1NjMxKQorKysgU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxv
YWRlckNsaWVudFF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDU5LDcgKzQ1OSw3IEBAIHZvaWQg
RnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hEaWRSZWMKIH0KIAogCi12b2lkIEZyYW1lTG9h
ZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoKQordm9pZCBGcmFtZUxvYWRlckNs
aWVudFF0OjpkaXNwYXRjaERpZENoYW5nZUljb25zKFdlYkNvcmU6Okljb25UeXBlKQogewogICAg
IGlmIChkdW1wRnJhbWVMb2FkZXJDYWxsYmFja3MpCiAgICAgICAgIHByaW50ZigiJXMgLSBkaWRD
aGFuZ2VJY29uc1xuIiwgcVByaW50YWJsZShkcnREZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJl
c3VsdChtX2ZyYW1lKSkpOwpJbmRleDogU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9G
cmFtZUxvYWRlckNsaWVudFF0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9xdC9XZWJD
b3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmgJKHJldmlzaW9uIDg1NjMxKQorKysgU291
cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmgJKHdvcmtp
bmcgY29weSkKQEAgLTExMSw3ICsxMTEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRp
c3BhdGNoRGlkUmVjZWl2ZUljb24oKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRTdGFy
dFByb3Zpc2lvbmFsTG9hZCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVU
aXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJik7Ci0gICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoRGlkQ2hhbmdlSWNvbnMoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VJ
Y29ucyhXZWJDb3JlOjpJY29uVHlwZSk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ29t
bWl0TG9hZCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxQcm92aXNpb25hbExv
YWQoY29uc3QgUmVzb3VyY2VFcnJvciYpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZh
aWxMb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvd2luL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VM
b2cJKHJldmlzaW9uIDg1NjU0KQorKysgU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTEtMDQtMjIgIFRhbyBCYWkgIDxtaWNoYWVs
YmFpQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBQb3B1bGF0ZSB0b3VjaC1pY29uIHVybCB0byBGcmFtZUxvYWRlckNsaWVudAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTkxNDMKKwor
ICAgICAgICBSZXNwZWN0IHRoZSBpbnRlcmZhY2UgY2hhbmdlIGluIEZyYW1lTG9hZGVyQ2xpZW50
LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgor
ICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMpOgor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisKIDIwMTEt
MDUtMDMgIEFkYW0gUm9iZW4gIDxhcm9iZW5AYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBtb3N0
IHN0cmljdCBQYXNzT3duUHRyIHZpb2xhdGlvbnMgb24gV2luZG93cwpJbmRleDogU291cmNlL1dl
YktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmNwcAkocmV2aXNpb24gODU2MzEpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3Myw4ICsz
NzMsMTEgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRSZQogICAgICAg
ICBmcmFtZUxvYWREZWxlZ2F0ZS0+ZGlkUmVjZWl2ZVRpdGxlKHdlYlZpZXcsIEJTdHJpbmcodGl0
bGUuc3RyaW5nKCkpLCBtX3dlYkZyYW1lKTsKIH0KIAotdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVu
dDo6ZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygpCit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpk
aXNwYXRjaERpZENoYW5nZUljb25zKFdlYkNvcmU6Okljb25UeXBlIHR5cGUpCiB7CisgICAgaWYg
KHR5cGUgIT0gV2ViQ29yZTo6RmF2aWNvbikKKyAgICAgICAgcmV0dXJuOworCiAgICAgV2ViVmll
dyogd2ViVmlldyA9IG1fd2ViRnJhbWUtPndlYlZpZXcoKTsKICAgICBDT01QdHI8SVdlYkZyYW1l
TG9hZERlbGVnYXRlUHJpdmF0ZT4gZnJhbWVMb2FkRGVsZWdhdGVQcml2OwogICAgIGlmIChGQUlM
RUQod2ViVmlldy0+ZnJhbWVMb2FkRGVsZWdhdGVQcml2YXRlKCZmcmFtZUxvYWREZWxlZ2F0ZVBy
aXYpKSB8fCAhZnJhbWVMb2FkRGVsZWdhdGVQcml2KQpJbmRleDogU291cmNlL1dlYktpdC93aW4v
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCShyZXZp
c2lvbiA4NTYzMSkKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTcwLDcgKzcwLDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVJY29uKCk7CiAgICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoRGlkU3RhcnRQcm92aXNpb25hbExvYWQoKTsKICAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgV2ViQ29yZTo6U3RyaW5nV2l0aERpcmVjdGlv
biYpOwotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZUljb25zKCk7CisgICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoV2ViQ29yZTo6SWNvblR5cGUpOwogICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENvbW1pdExvYWQoKTsKICAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hEaWRGaW5pc2hEb2N1bWVudExvYWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0
Y2hEaWRGaW5pc2hMb2FkKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbmNlL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbmNlL0NoYW5nZUxvZwkocmV2aXNpb24gODU2
NTQpCisrKyBTb3VyY2UvV2ViS2l0L3dpbmNlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDE2IEBACisyMDExLTA0LTIyICBUYW8gQmFpICA8bWljaGFlbGJhaUBjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUG9w
dWxhdGUgdG91Y2gtaWNvbiB1cmwgdG8gRnJhbWVMb2FkZXJDbGllbnQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU5MTQzCisKKyAgICAgICAgUmVzcGVj
dCB0aGUgaW50ZXJmYWNlIGNoYW5nZSBpbiBGcmFtZUxvYWRlckNsaWVudC4KKworICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V2luQ0UuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpGcmFtZUxvYWRlckNsaWVudFdpbkNFOjpkaXNwYXRjaERpZENoYW5nZUljb25zKToKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFdpbkNFLmg6CisKIDIwMTEt
MDUtMDEgIFBhdHJpY2sgR2Fuc3RlcmVyICA8cGFyb2dhQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
W1dJTl0gVW5yZXZpZXdlZCBidWlsZGZpeCBhZnRlciByODU0MzQuCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V2luQ0UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJD
bGllbnRXaW5DRS5jcHAJKHJldmlzaW9uIDg1NjMxKQorKysgU291cmNlL1dlYktpdC93aW5jZS9X
ZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFdpbkNFLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzc2LDcgKzM3Niw3IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRXaW5DRTo6ZGlzcGF0Y2hE
aWQKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50V2lu
Q0U6OmRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoKQordm9pZCBGcmFtZUxvYWRlckNsaWVudFdpbkNF
OjpkaXNwYXRjaERpZENoYW5nZUljb25zKFdlYkNvcmU6Okljb25UeXBlKQogewogICAgIG5vdElt
cGxlbWVudGVkKCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0
L0ZyYW1lTG9hZGVyQ2xpZW50V2luQ0UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dp
bmNlL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V2luQ0UuaAkocmV2aXNpb24gODU2
MzEpCisrKyBTb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xp
ZW50V2luQ0UuaAkod29ya2luZyBjb3B5KQpAQCAtNzcsNyArNzcsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUljb24oKTsKICAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNw
YXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBXZWJDb3JlOjpTdHJpbmdXaXRoRGlyZWN0aW9uJik7
Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoKTsKKyAgICB2aXJ0dWFs
IHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucyhXZWJDb3JlOjpJY29uVHlwZSk7CiAgICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoRGlkQ29tbWl0TG9hZCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNw
YXRjaERpZEZhaWxQcm92aXNpb25hbExvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYp
OwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxMb2FkKGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlRXJyb3ImKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd3gvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvd3gvQ2hhbmdlTG9nCShyZXZpc2lvbiA4NTY1NCkKKysrIFNv
dXJjZS9XZWJLaXQvd3gvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAK
KzIwMTEtMDQtMjIgIFRhbyBCYWkgIDxtaWNoYWVsYmFpQGNocm9taXVtLm9yZz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQb3B1bGF0ZSB0b3VjaC1p
Y29uIHVybCB0byBGcmFtZUxvYWRlckNsaWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTkxNDMKKworICAgICAgICBSZXNwZWN0IHRoZSBpbnRlcmZh
Y2UgY2hhbmdlIGluIEZyYW1lTG9hZGVyQ2xpZW50LgorCisgICAgICAgICogV2ViS2l0U3VwcG9y
dC9GcmFtZUxvYWRlckNsaWVudFd4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVy
Q2xpZW50V3g6OmRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMpOgorICAgICAgICAqIFdlYktpdFN1cHBv
cnQvRnJhbWVMb2FkZXJDbGllbnRXeC5oOgorCiAyMDExLTA0LTIzICBLZXZpbiBPbGxpdmllciAg
PGtldmlub0B0aGVvbGxpdmllcnMuY29tPgogCiAgICAgICAgIFt3eF0gVW5yZXZpZXdlZCBidWls
ZCBmaXguIEZpeGVkIGNhcGl0YWxpemF0aW9uIGZvciBjYXNlIHNlbnNpdGl2ZSBmaWxlc3lzdGVt
cy4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVu
dFd4LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRnJh
bWVMb2FkZXJDbGllbnRXeC5jcHAJKHJldmlzaW9uIDg1NjMxKQorKysgU291cmNlL1dlYktpdC93
eC9XZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zMjcsNyArMzI3LDcgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudFd4OjpkaXNwYXRjaERpZEZp
bgogICAgIH0KIH0KIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudFd4OjpkaXNwYXRjaERpZENoYW5n
ZUljb25zKCkKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRXeDo6ZGlzcGF0Y2hEaWRDaGFuZ2VJY29u
cyhXZWJDb3JlOjpJY29uVHlwZSkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQpJbmRleDog
U291cmNlL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGll
bnRXeC5oCShyZXZpc2lvbiA4NTYzMSkKKysrIFNvdXJjZS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9y
dC9GcmFtZUxvYWRlckNsaWVudFd4LmgJKHdvcmtpbmcgY29weSkKQEAgLTEwOSw3ICsxMDksNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZp
bmlzaExvYWQoKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmlyc3RMYXlvdXQo
KTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5
TGF5b3V0KCk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZUljb25zKCk7
CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZUljb25zKFdlYkNvcmU6Oklj
b25UeXBlKTsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hTaG93KCk7CiAgICAgICAg
IHZpcnR1YWwgdm9pZCBjYW5jZWxQb2xpY3lDaGVjaygpOwpJbmRleDogVG9vbHMvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gODU2NTQpCisrKyBUb29s
cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAxMS0wNS0wMyAg
VGFvIEJhaSAgPG1pY2hhZWxiYWlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBvcHVsYXRlIHRvdWNoLWljb24gdXJsIHRvIEZy
YW1lTG9hZGVyQ2xpZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD01OTE0MworCisgICAgICAgIERpc2FibGUgdG91Y2ggaWNvbiBieSBkZWZhdWx0LiAK
KworICAgICAgICAqIFNjcmlwdHMvYnVpbGQtd2Via2l0OgorCiAyMDExLTA1LTAzICBBZGFtIFJv
YmVuICA8YXJvYmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggbW9zdCBzdHJpY3QgUGFzc093
blB0ciB2aW9sYXRpb25zIG9uIFdpbmRvd3MKSW5kZXg6IFRvb2xzL1NjcmlwdHMvYnVpbGQtd2Vi
a2l0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvYnVpbGQtd2Via2l0CShyZXZpc2lvbiA4
NTYzMSkKKysrIFRvb2xzL1NjcmlwdHMvYnVpbGQtd2Via2l0CSh3b3JraW5nIGNvcHkpCkBAIC0x
MTIsNiArMTEyLDcgQEAgbXkgKAogICAgICRzeXN0ZW1NYWxsb2NTdXBwb3J0LAogICAgICR0aWxl
ZEJhY2tpbmdTdG9yZVN1cHBvcnQsCiAgICAgJHRvdWNoRXZlbnRzU3VwcG9ydCwKKyAgICAkdG91
Y2hJY29uTG9hZGluZ1N1cHBvcnQsCiAgICAgJHZpZGVvU3VwcG9ydCwKICAgICAkd2Nzc1N1cHBv
cnQsCiAgICAgJHdlYkF1ZGlvU3VwcG9ydCwKQEAgLTI3Miw2ICsyNzMsOSBAQCBteSBAZmVhdHVy
ZXMgPSAoCiAgICAgeyBvcHRpb24gPT4gInRvdWNoLWV2ZW50cyIsIGRlc2MgPT4gIlRvZ2dsZSBU
b3VjaCBFdmVudHMgc3VwcG9ydCIsCiAgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9UT1VDSF9FVkVO
VFMiLCBkZWZhdWx0ID0+IGlzUXQoKSwgdmFsdWUgPT4gXCR0b3VjaEV2ZW50c1N1cHBvcnQgfSwK
IAorICAgIHsgb3B0aW9uID0+ICJ0b3VjaC1pY29uLWxvYWRpbmciLCBkZXNjID0+ICJUb2dnbGUg
VG91Y2ggSWNvbiBMb2FkaW5nIFN1cHBvcnQiLAorICAgICAgZGVmaW5lID0+ICJFTkFCTEVfVE9V
Q0hfSUNPTl9MT0FESU5HIiwgZGVmYXVsdCA9PiAwLCB2YWx1ZSA9PiBcJHRvdWNoSWNvbkxvYWRp
bmdTdXBwb3J0IH0sCisKICAgICB7IG9wdGlvbiA9PiAidmlkZW8iLCBkZXNjID0+ICJUb2dnbGUg
VmlkZW8gc3VwcG9ydCIsCiAgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9WSURFTyIsIGRlZmF1bHQg
PT4gKGlzQXBwbGVXZWJLaXQoKSB8fCBpc0d0aygpKSwgdmFsdWUgPT4gXCR2aWRlb1N1cHBvcnQg
fSwKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>92250</attachid>
            <date>2011-05-04 08:50:51 -0700</date>
            <delta_ts>2011-05-04 08:57:20 -0700</delta_ts>
            <desc>Try to fix the build error again</desc>
            <filename>patch.12</filename>
            <type>text/plain</type>
            <size>67729</size>
            <attacher>michaelbai</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gODU2NTQpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAK
KzIwMTEtMDUtMDMgIFRhbyBCYWkgIDxtaWNoYWVsYmFpQGNocm9taXVtLm9yZz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQb3B1bGF0ZSB0b3VjaC1p
Y29uIHVybCB0byBGcmFtZUxvYWRlckNsaWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTkxNDMKKworICAgICAgICAqIENvbmZpZ3VyYXRpb25zL0Zl
YXR1cmVEZWZpbmVzLnhjY29uZmlnOgorCiAyMDExLTA1LTAzICBYYW4gTG9wZXogIDx4bG9wZXpA
aWdhbGlhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbmRlcnMgQ2FybHNzb24uCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNj
b25maWcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NvbmZpZ3VyYXRpb25z
L0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCShyZXZpc2lvbiA4NTYzMSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwkod29ya2lu
ZyBjb3B5KQpAQCAtMTE3LDYgKzExNyw4IEBAIEVOQUJMRV9WSURFT19UUkFDSyA9IDsKIAogRU5B
QkxFX01FRElBX1NUQVRJU1RJQ1MgPSA7CiAKK0VOQUJMRV9UT1VDSF9JQ09OX0xPQURJTkcgPSA7
CisKIEVOQUJMRV9XRUJfQVVESU8gPSA7CiAKIEVOQUJMRV9XRUJfU09DS0VUUyA9ICQoRU5BQkxF
X1dFQl9TT0NLRVRTXyQoUkVBTF9QTEFURk9STV9OQU1FKSk7CkBAIC0xMzEsNCArMTMzLDQgQEAg
RU5BQkxFX1hIVE1MTVAgPSA7CiBFTkFCTEVfWFBBVEggPSBFTkFCTEVfWFBBVEg7CiBFTkFCTEVf
WFNMVCA9IEVOQUJMRV9YU0xUOwogCi1GRUFUVVJFX0RFRklORVMgPSAkKEVOQUJMRV9MSU5LX1BS
RUZFVENIKSAkKEVOQUJMRV9BQ0NFTEVSQVRFRF8yRF9DQU5WQVMpICQoRU5BQkxFX1dFQkdMKSAk
KEVOQUJMRV8zRF9SRU5ERVJJTkcpICQoRU5BQkxFX0FOSU1BVElPTl9BUEkpICQoRU5BQkxFX0JM
T0IpICQoRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HKSAkKEVOQUJMRV9DTElFTlRfQkFTRURfR0VP
TE9DQVRJT04pICQoRU5BQkxFX0RBVEFCQVNFKSAkKEVOQUJMRV9EQVRBTElTVCkgJChFTkFCTEVf
REFUQV9UUkFOU0ZFUl9JVEVNUykgJChFTkFCTEVfREVUQUlMUykgJChFTkFCTEVfREVWSUNFX09S
SUVOVEFUSU9OKSAkKEVOQUJMRV9ESVJFQ1RPUllfVVBMT0FEKSAkKEVOQUJMRV9ET01fU1RPUkFH
RSkgJChFTkFCTEVfRVZFTlRTT1VSQ0UpICQoRU5BQkxFX0ZJTFRFUlMpICQoRU5BQkxFX0ZJTEVf
U1lTVEVNKSAkKEVOQUJMRV9GVUxMU0NSRUVOX0FQSSkgJChFTkFCTEVfR0VPTE9DQVRJT04pICQo
RU5BQkxFX0lDT05EQVRBQkFTRSkgJChFTkFCTEVfSU5ERVhFRF9EQVRBQkFTRSkgJChFTkFCTEVf
SU5QVVRfU1BFRUNIKSAkKEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSKSAkKEVOQUJMRV9NQVRI
TUwpICQoRU5BQkxFX01FVEVSX1RBRykgJChFTkFCTEVfTk9USUZJQ0FUSU9OUykgJChFTkFCTEVf
T0ZGTElORV9XRUJfQVBQTElDQVRJT05TKSAkKEVOQUJMRV9QQUdFX1ZJU0lCSUxJVFlfQVBJKSAk
KEVOQUJMRV9QUk9HUkVTU19UQUcpICQoRU5BQkxFX1JFR0lTVEVSX1BST1RPQ09MX0hBTkRMRVIp
ICQoRU5BQkxFX1FVT1RBKSAkKEVOQUJMRV9TSEFSRURfV09SS0VSUykgJChFTkFCTEVfU1ZHKSAk
KEVOQUJMRV9TVkdfQU5JTUFUSU9OKSAkKEVOQUJMRV9TVkdfQVNfSU1BR0UpICQoRU5BQkxFX1NW
R19ET01fT0JKQ19CSU5ESU5HUykgJChFTkFCTEVfU1ZHX0ZPTlRTKSAkKEVOQUJMRV9TVkdfRk9S
RUlHTl9PQkpFQ1QpICQoRU5BQkxFX1NWR19VU0UpICQoRU5BQkxFX1ZJREVPKSAkKEVOQUJMRV9W
SURFT19UUkFDSykgJChFTkFCTEVfTUVESUFfU1RBVElTVElDUykgJChFTkFCTEVfV0VCX0FVRElP
KSAkKEVOQUJMRV9XRUJfU09DS0VUUykgJChFTkFCTEVfV0VCX1RJTUlORykgJChFTkFCTEVfV09S
S0VSUykgJChFTkFCTEVfWEhUTUxNUCkgJChFTkFCTEVfWFBBVEgpICQoRU5BQkxFX1hTTFQpOwor
RkVBVFVSRV9ERUZJTkVTID0gJChFTkFCTEVfTElOS19QUkVGRVRDSCkgJChFTkFCTEVfQUNDRUxF
UkFURURfMkRfQ0FOVkFTKSAkKEVOQUJMRV9XRUJHTCkgJChFTkFCTEVfM0RfUkVOREVSSU5HKSAk
KEVOQUJMRV9BTklNQVRJT05fQVBJKSAkKEVOQUJMRV9CTE9CKSAkKEVOQUJMRV9DSEFOTkVMX01F
U1NBR0lORykgJChFTkFCTEVfQ0xJRU5UX0JBU0VEX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9EQVRB
QkFTRSkgJChFTkFCTEVfREFUQUxJU1QpICQoRU5BQkxFX0RBVEFfVFJBTlNGRVJfSVRFTVMpICQo
RU5BQkxFX0RFVEFJTFMpICQoRU5BQkxFX0RFVklDRV9PUklFTlRBVElPTikgJChFTkFCTEVfRElS
RUNUT1JZX1VQTE9BRCkgJChFTkFCTEVfRE9NX1NUT1JBR0UpICQoRU5BQkxFX0VWRU5UU09VUkNF
KSAkKEVOQUJMRV9GSUxURVJTKSAkKEVOQUJMRV9GSUxFX1NZU1RFTSkgJChFTkFCTEVfRlVMTFND
UkVFTl9BUEkpICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9JQ09OREFUQUJBU0UpICQo
RU5BQkxFX0lOREVYRURfREFUQUJBU0UpICQoRU5BQkxFX0lOUFVUX1NQRUVDSCkgJChFTkFCTEVf
SkFWQVNDUklQVF9ERUJVR0dFUikgJChFTkFCTEVfTUFUSE1MKSAkKEVOQUJMRV9NRVRFUl9UQUcp
ICQoRU5BQkxFX05PVElGSUNBVElPTlMpICQoRU5BQkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9O
UykgJChFTkFCTEVfUEFHRV9WSVNJQklMSVRZX0FQSSkgJChFTkFCTEVfUFJPR1JFU1NfVEFHKSAk
KEVOQUJMRV9SRUdJU1RFUl9QUk9UT0NPTF9IQU5ETEVSKSAkKEVOQUJMRV9RVU9UQSkgJChFTkFC
TEVfU0hBUkVEX1dPUktFUlMpICQoRU5BQkxFX1NWRykgJChFTkFCTEVfU1ZHX0FOSU1BVElPTikg
JChFTkFCTEVfU1ZHX0FTX0lNQUdFKSAkKEVOQUJMRV9TVkdfRE9NX09CSkNfQklORElOR1MpICQo
RU5BQkxFX1NWR19GT05UUykgJChFTkFCTEVfU1ZHX0ZPUkVJR05fT0JKRUNUKSAkKEVOQUJMRV9T
VkdfVVNFKSAkKEVOQUJMRV9UT1VDSF9JQ09OX0xPQURJTkcpICQoRU5BQkxFX1ZJREVPKSAkKEVO
QUJMRV9WSURFT19UUkFDSykgJChFTkFCTEVfTUVESUFfU1RBVElTVElDUykgJChFTkFCTEVfV0VC
X0FVRElPKSAkKEVOQUJMRV9XRUJfU09DS0VUUykgJChFTkFCTEVfV0VCX1RJTUlORykgJChFTkFC
TEVfV09SS0VSUykgJChFTkFCTEVfWEhUTUxNUCkgJChFTkFCTEVfWFBBVEgpICQoRU5BQkxFX1hT
TFQpOwpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gODU2ODcpCisrKyBTb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw1NCBAQAorMjAxMS0wNC0yMiAgVGFv
IEJhaSAgPG1pY2hhZWxiYWlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFBvcHVsYXRlIHRvdWNoLWljb24gdXJsIHRvIEZyYW1l
TG9hZGVyQ2xpZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD01OTE0MworICAgICAgICAKKyAgICAgICAgUGFyc2VkIGFuZCBwb3B1bGF0ZWQgYXBwbGUt
dG91Y2gtaWNvbiB1cmwgdG8gRnJhbWVMb2FkZXJDbGllbnQuCisgICAgICAgIENoYW5nZWQgZmF2
aWNvbiB0byBiZSBhIHR5cGUgb2YgaWNvbi4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0Ogor
ICAgICAgICAqIENvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnOgorICAgICAg
ICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAg
ICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNw
cm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6Omljb25V
UkwpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnNldEljb25VUkwpOgorICAgICAgICAq
IGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAqIGRvbS9JY29uVVJMLmNwcDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjp0b0ljb25JbmRleCk6CisgICAgICAgICogZG9tL0ljb25VUkwuaDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpJY29uVVJMOjpJY29uVVJMKToKKyAgICAgICAgKiBmZWF0
dXJlcy5wcmk6CisgICAgICAgICogaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTExpbmtFbGVtZW50Ojp0b2tlbml6ZVJlbEF0dHJpYnV0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6OnByb2Nlc3MpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTExpbmtFbGVtZW50OjphZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMpOgorICAgICAgICAq
IGh0bWwvSFRNTExpbmtFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1l
bnQ6OlJlbEF0dHJpYnV0ZTo6UmVsQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxM
aW5rRWxlbWVudDo6aXNFbmFibGVkVmlhU2NyaXB0KToKKyAgICAgICAgKiBodG1sL3BhcnNlci9I
VE1MUHJlbG9hZFNjYW5uZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE5hbWVzOjpQcmVs
b2FkVGFzazo6cmVsQXR0cmlidXRlSXNTdHlsZVNoZWV0KToKKyAgICAgICAgKiBsb2FkZXIvRG9j
dW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6Omljb25V
UkwpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OnNldEljb25VUkwpOgorICAg
ICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9FbXB0eUNs
aWVudHMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3Bh
dGNoRGlkQ2hhbmdlSWNvbnMpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6aWNvblVSTCk6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZUxvYWRlcjo6aWNvblVSTHMpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6
OmZpbGxJY29uVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpnZXREZWZhdWx0
SWNvblVSTCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6c2V0SWNvblVSTCk6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6ZGlkQ2hhbmdlSWNvbnMpOgorICAgICAgICAq
IGxvYWRlci9GcmFtZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlckNsaWVu
dC5oOgorCiAyMDExLTA1LTAzICBFbnJpY2EgQ2FzdWNjaSAgPGVucmljYUBhcHBsZS5jb20+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgUnlvc3VrZSBOaXdhLgpJbmRleDogU291cmNlL1dlYkNvcmUv
Q01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50
eHQJKHJldmlzaW9uIDg1NjMxKQorKysgU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHdv
cmtpbmcgY29weSkKQEAgLTU2OSw2ICs1NjksNyBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAg
ZG9tL0V2ZW50UXVldWUuY3BwCiAgICAgZG9tL0V4Y2VwdGlvbkJhc2UuY3BwCiAgICAgZG9tL0V4
Y2VwdGlvbkNvZGUuY3BwCisgICAgZG9tL0ljb25VUkwuY3BwCiAgICAgZG9tL0lucHV0RWxlbWVu
dC5jcHAKICAgICBkb20vS2V5Ym9hcmRFdmVudC5jcHAKICAgICBkb20vTWVzc2FnZUNoYW5uZWwu
Y3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQkocmV2aXNpb24gODU2MzEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9HTlVtYWtlZmlsZS5hbQkod29ya2luZyBjb3B5KQpAQCAtMjYxLDYgKzI2MSwxNiBA
QCB3ZWJjb3JlX2J1aWx0X3NvdXJjZXMgKz0gXAogZW5kaWYgIyBFTkQgRU5BQkxFX1FVT1RBCiAK
ICMgLS0tLQorIyBUb3VjaCBJY29uIExvYWRpbmcKKyMgLS0tLQoraWYgRU5BQkxFX1RPVUNIX0lD
T05fTE9BRElORworRkVBVFVSRV9ERUZJTkVTICs9IEVOQUJMRV9UT1VDSF9JQ09OX0xPQURJTkc9
MQord2ViY29yZV9jcHBmbGFncyArPSAtREVOQUJMRV9UT1VDSF9JQ09OX0xPQURJTkc9MQorZWxz
ZQord2ViY29yZV9jcHBmbGFncyArPSAtREVOQUJMRV9UT1VDSF9JQ09OX0xPQURJTkc9MAorZW5k
aWYgIyBFTkQgRU5BQkxFX1RPVUNIX0lDT05fTE9BRElORworCisjIC0tLS0KICMgU3BlZWNoIElu
cHV0IEFQSSBzdXBwb3J0CiAjIC0tLS0KIGlmIEVOQUJMRV9JTlBVVF9TUEVFQ0gKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkocmV2aXNpb24gODU2MzEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBAIC0xMTUxLDYgKzExNTEs
OCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9FeGNlcHRpb25D
b2RlLmggXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9GcmFnbWVudFNjcmlwdGluZ1Blcm1pc3Npb24u
aCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL0lnbm9yZURlc3RydWN0aXZlV3JpdGVDb3VudEluY3Jl
bWVudGVyLmggXAorCVNvdXJjZS9XZWJDb3JlL2RvbS9JY29uVVJMLmNwcCBcCisJU291cmNlL1dl
YkNvcmUvZG9tL0ljb25VUkwuaCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL0lucHV0RWxlbWVudC5j
cHAgXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9JbnB1dEVsZW1lbnQuaCBcCiAJU291cmNlL1dlYkNv
cmUvZG9tL0hhc2hDaGFuZ2VFdmVudC5oIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
Z3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHJldmlzaW9u
IDg1NjMxKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCSh3b3JraW5nIGNvcHkpCkBA
IC0yNDcwLDYgKzI0NzAsOCBAQAogICAgICAgICAgICAgJ2RvbS9FeGNlcHRpb25Db2RlLmNwcCcs
CiAgICAgICAgICAgICAnZG9tL0hhc2hDaGFuZ2VFdmVudC5oJywKICAgICAgICAgICAgICdkb20v
SWdub3JlRGVzdHJ1Y3RpdmVXcml0ZUNvdW50SW5jcmVtZW50ZXIuaCcsCisgICAgICAgICAgICAn
ZG9tL0ljb25VUkwuY3BwJywKKyAgICAgICAgICAgICdkb20vSWNvblVSTC5oJywKICAgICAgICAg
ICAgICdkb20vSW5wdXRFbGVtZW50LmNwcCcsCiAgICAgICAgICAgICAnZG9tL0tleWJvYXJkRXZl
bnQuY3BwJywKICAgICAgICAgICAgICdkb20vTWVzc2FnZUNoYW5uZWwuY3BwJywKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUucHJvCShyZXZpc2lvbiA4NTYzMSkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJv
CSh3b3JraW5nIGNvcHkpCkBAIC00OTIsNiArNDkyLDcgQEAgU09VUkNFUyArPSBcCiAgICAgZG9t
L0V2ZW50UXVldWUuY3BwIFwKICAgICBkb20vRXhjZXB0aW9uQmFzZS5jcHAgXAogICAgIGRvbS9F
eGNlcHRpb25Db2RlLmNwcCBcCisgICAgZG9tL0ljb25VUkwuY3BwIFwKICAgICBkb20vSW5wdXRF
bGVtZW50LmNwcCBcCiAgICAgZG9tL0tleWJvYXJkRXZlbnQuY3BwIFwKICAgICBkb20vTWVzc2Fn
ZUNoYW5uZWwuY3BwIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2ZlYXR1cmVzLnByaQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9mZWF0dXJlcy5wcmkJKHJldmlzaW9uIDg1NjMxKQorKysg
U291cmNlL1dlYkNvcmUvZmVhdHVyZXMucHJpCSh3b3JraW5nIGNvcHkpCkBAIC03NSw2ICs3NSw3
IEBAIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9TSU5HTEVfVEhSRUFERUQKICFjb250YWlucyhE
RUZJTkVTLCBFTkFCTEVfV0VCR0w9Lik6IERFRklORVMgKz0gRU5BQkxFX1dFQkdMPTAKICFjb250
YWlucyhERUZJTkVTLCBFTkFCTEVfTUVESUFfU1RBVElTVElDUz0uKTogREVGSU5FUyArPSBFTkFC
TEVfTUVESUFfU1RBVElTVElDUz0wCiAhY29udGFpbnMoREVGSU5FUywgRU5BQkxFX1ZJREVPX1RS
QUNLPS4pOiBERUZJTkVTICs9IEVOQUJMRV9WSURFT19UUkFDSz0wCishY29udGFpbnMoREVGSU5F
UywgRU5BQkxFX1RPVUNIX0lDT05fTE9BRElORz0uKTogREVGSU5FUyArPSBFTkFCTEVfVE9VQ0hf
SUNPTl9MT0FESU5HPTAKICFjb250YWlucyhERUZJTkVTLCBFTkFCTEVfQU5JTUFUSU9OX0FQST0u
KTogREVGSU5FUyArPSBFTkFCTEVfQU5JTUFUSU9OX0FQST0wCiAKICMgU1ZHIHN1cHBvcnQKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmln
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZp
bmVzLnhjY29uZmlnCShyZXZpc2lvbiA4NTYzMSkKKysrIFNvdXJjZS9XZWJDb3JlL0NvbmZpZ3Vy
YXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCSh3b3JraW5nIGNvcHkpCkBAIC0xMTcsNiAr
MTE3LDggQEAgRU5BQkxFX1ZJREVPX1RSQUNLID0gOwogCiBFTkFCTEVfTUVESUFfU1RBVElTVElD
UyA9IDsKIAorRU5BQkxFX1RPVUNIX0lDT05fTE9BRElORyA9IDsKKwogRU5BQkxFX1dFQl9BVURJ
TyA9IDsKIAogRU5BQkxFX1dFQl9TT0NLRVRTID0gJChFTkFCTEVfV0VCX1NPQ0tFVFNfJChSRUFM
X1BMQVRGT1JNX05BTUUpKTsKQEAgLTEzMSw0ICsxMzMsNCBAQCBFTkFCTEVfWEhUTUxNUCA9IDsK
IEVOQUJMRV9YUEFUSCA9IEVOQUJMRV9YUEFUSDsKIEVOQUJMRV9YU0xUID0gRU5BQkxFX1hTTFQ7
CiAKLUZFQVRVUkVfREVGSU5FUyA9ICQoRU5BQkxFX0xJTktfUFJFRkVUQ0gpICQoRU5BQkxFX0FD
Q0VMRVJBVEVEXzJEX0NBTlZBUykgJChFTkFCTEVfV0VCR0wpICQoRU5BQkxFXzNEX1JFTkRFUklO
RykgJChFTkFCTEVfQU5JTUFUSU9OX0FQSSkgJChFTkFCTEVfQkxPQikgJChFTkFCTEVfQ0hBTk5F
TF9NRVNTQUdJTkcpICQoRU5BQkxFX0NMSUVOVF9CQVNFRF9HRU9MT0NBVElPTikgJChFTkFCTEVf
REFUQUJBU0UpICQoRU5BQkxFX0RBVEFMSVNUKSAkKEVOQUJMRV9EQVRBX1RSQU5TRkVSX0lURU1T
KSAkKEVOQUJMRV9ERVRBSUxTKSAkKEVOQUJMRV9ERVZJQ0VfT1JJRU5UQVRJT04pICQoRU5BQkxF
X0RJUkVDVE9SWV9VUExPQUQpICQoRU5BQkxFX0RPTV9TVE9SQUdFKSAkKEVOQUJMRV9FVkVOVFNP
VVJDRSkgJChFTkFCTEVfRklMVEVSUykgJChFTkFCTEVfRklMRV9TWVNURU0pICQoRU5BQkxFX0ZV
TExTQ1JFRU5fQVBJKSAkKEVOQUJMRV9HRU9MT0NBVElPTikgJChFTkFCTEVfSUNPTkRBVEFCQVNF
KSAkKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFKSAkKEVOQUJMRV9JTlBVVF9TUEVFQ0gpICQoRU5B
QkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIpICQoRU5BQkxFX01BVEhNTCkgJChFTkFCTEVfTUVURVJf
VEFHKSAkKEVOQUJMRV9OT1RJRklDQVRJT05TKSAkKEVOQUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNB
VElPTlMpICQoRU5BQkxFX1BBR0VfVklTSUJJTElUWV9BUEkpICQoRU5BQkxFX1BST0dSRVNTX1RB
RykgJChFTkFCTEVfUkVHSVNURVJfUFJPVE9DT0xfSEFORExFUikgJChFTkFCTEVfUVVPVEEpICQo
RU5BQkxFX1NIQVJFRF9XT1JLRVJTKSAkKEVOQUJMRV9TVkcpICQoRU5BQkxFX1NWR19BTklNQVRJ
T04pICQoRU5BQkxFX1NWR19BU19JTUFHRSkgJChFTkFCTEVfU1ZHX0RPTV9PQkpDX0JJTkRJTkdT
KSAkKEVOQUJMRV9TVkdfRk9OVFMpICQoRU5BQkxFX1NWR19GT1JFSUdOX09CSkVDVCkgJChFTkFC
TEVfU1ZHX1VTRSkgJChFTkFCTEVfVklERU8pICQoRU5BQkxFX1ZJREVPX1RSQUNLKSAkKEVOQUJM
RV9NRURJQV9TVEFUSVNUSUNTKSAkKEVOQUJMRV9XRUJfQVVESU8pICQoRU5BQkxFX1dFQl9TT0NL
RVRTKSAkKEVOQUJMRV9XRUJfVElNSU5HKSAkKEVOQUJMRV9XT1JLRVJTKSAkKEVOQUJMRV9YSFRN
TE1QKSAkKEVOQUJMRV9YUEFUSCkgJChFTkFCTEVfWFNMVCk7CitGRUFUVVJFX0RFRklORVMgPSAk
KEVOQUJMRV9MSU5LX1BSRUZFVENIKSAkKEVOQUJMRV9BQ0NFTEVSQVRFRF8yRF9DQU5WQVMpICQo
RU5BQkxFX1dFQkdMKSAkKEVOQUJMRV8zRF9SRU5ERVJJTkcpICQoRU5BQkxFX0FOSU1BVElPTl9B
UEkpICQoRU5BQkxFX0JMT0IpICQoRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HKSAkKEVOQUJMRV9D
TElFTlRfQkFTRURfR0VPTE9DQVRJT04pICQoRU5BQkxFX0RBVEFCQVNFKSAkKEVOQUJMRV9EQVRB
TElTVCkgJChFTkFCTEVfREFUQV9UUkFOU0ZFUl9JVEVNUykgJChFTkFCTEVfREVUQUlMUykgJChF
TkFCTEVfREVWSUNFX09SSUVOVEFUSU9OKSAkKEVOQUJMRV9ESVJFQ1RPUllfVVBMT0FEKSAkKEVO
QUJMRV9ET01fU1RPUkFHRSkgJChFTkFCTEVfRVZFTlRTT1VSQ0UpICQoRU5BQkxFX0ZJTFRFUlMp
ICQoRU5BQkxFX0ZJTEVfU1lTVEVNKSAkKEVOQUJMRV9GVUxMU0NSRUVOX0FQSSkgJChFTkFCTEVf
R0VPTE9DQVRJT04pICQoRU5BQkxFX0lDT05EQVRBQkFTRSkgJChFTkFCTEVfSU5ERVhFRF9EQVRB
QkFTRSkgJChFTkFCTEVfSU5QVVRfU1BFRUNIKSAkKEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VS
KSAkKEVOQUJMRV9NQVRITUwpICQoRU5BQkxFX01FVEVSX1RBRykgJChFTkFCTEVfTk9USUZJQ0FU
SU9OUykgJChFTkFCTEVfT0ZGTElORV9XRUJfQVBQTElDQVRJT05TKSAkKEVOQUJMRV9QQUdFX1ZJ
U0lCSUxJVFlfQVBJKSAkKEVOQUJMRV9QUk9HUkVTU19UQUcpICQoRU5BQkxFX1JFR0lTVEVSX1BS
T1RPQ09MX0hBTkRMRVIpICQoRU5BQkxFX1FVT1RBKSAkKEVOQUJMRV9TSEFSRURfV09SS0VSUykg
JChFTkFCTEVfU1ZHKSAkKEVOQUJMRV9TVkdfQU5JTUFUSU9OKSAkKEVOQUJMRV9TVkdfQVNfSU1B
R0UpICQoRU5BQkxFX1NWR19ET01fT0JKQ19CSU5ESU5HUykgJChFTkFCTEVfU1ZHX0ZPTlRTKSAk
KEVOQUJMRV9TVkdfRk9SRUlHTl9PQkpFQ1QpICQoRU5BQkxFX1NWR19VU0UpICQoRU5BQkxFX1RP
VUNIX0lDT05fTE9BRElORykgJChFTkFCTEVfVklERU8pICQoRU5BQkxFX1ZJREVPX1RSQUNLKSAk
KEVOQUJMRV9NRURJQV9TVEFUSVNUSUNTKSAkKEVOQUJMRV9XRUJfQVVESU8pICQoRU5BQkxFX1dF
Ql9TT0NLRVRTKSAkKEVOQUJMRV9XRUJfVElNSU5HKSAkKEVOQUJMRV9XT1JLRVJTKSAkKEVOQUJM
RV9YSFRNTE1QKSAkKEVOQUJMRV9YUEFUSCkgJChFTkFCTEVfWFNMVCk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvago9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkocmV2aXNpb24gODU2MzEp
CisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkod29ya2lu
ZyBjb3B5KQpAQCAtNDQ0NjIsNiArNDQ0NjIsNjIgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8
RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cZG9tXEljb25VUkwuY3BwIgorCQkJCT4KKwkJCQk8
RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iRGVidWd8V2luMzIiCisJCQkJCUV4Y2x1ZGVk
RnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29t
cGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVD
b25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJv
bUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGls
ZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25m
aWd1cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVnX0NhaXJvX0NGTGl0ZXxXaW4zMiIKKwkJCQkJRXhj
bHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZD
Q0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8
RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iUmVsZWFzZV9DYWlyb19DRkxpdGV8V2luMzIi
CisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJ
CQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRp
b24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVnX0FsbHxXaW4zMiIK
KwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJ
CU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlv
bj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iUHJvZHVjdGlvbnxXaW4zMiIK
KwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJ
CU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlv
bj4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxkb21cSWNvblVS
TC5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxk
b21cSW5wdXRFbGVtZW50LmNwcCIKIAkJCQk+CiAJCQkJPEZpbGVDb25maWd1cmF0aW9uCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CShyZXZpc2lvbiA4NTYzMSkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtOTcwLDYgKzk3MCw4IEBACiAJCTQ0OUIx
OUY1MEZBNzJFQ0UwMDE1Q0E0QSAvKiBIVE1MUGFyc2VyUXVpcmtzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NDlCMTlGMzBGQTcyRUNFMDAxNUNBNEEg
LyogSFRNTFBhcnNlclF1aXJrcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTQ0QTI4QUFDMTJERkI4QUMwMEFFOTIzQiAvKiBNYXRoTUxFbGVtZW50
RmFjdG9yeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDRBMjhBQUIxMkRGQjhBQzAwQUU5MjNCIC8qIE1hdGhNTEVsZW1lbnRGYWN0b3J5LmggKi87IH07
CiAJCTQ0QTI4QUFGMTJERkI4QkYwMEFFOTIzQiAvKiBNYXRoTUxOYW1lcy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDRBMjhBQUUxMkRGQjhCRjAwQUU5
MjNCIC8qIE1hdGhNTE5hbWVzLmggKi87IH07CisJCTQ1MDk5QzQxMTM3MEE3ODAwMDU4RDUxMyAv
KiBJY29uVVJMLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQ1MDk5QzQwMTM3MEE3ODAwMDU4RDUxMyAvKiBJY29uVVJMLmNwcCAqLzsgfTsKKwkJNDVC
QUMyQjAxMzYwQkJBQjAwNURBMjU4IC8qIEljb25VUkwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ1QkFDMkFGMTM2MEJCQUIwMDVEQTI1OCAvKiBJY29u
VVJMLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
NDYxNEExRkUwQjIzQThENjAwNDQ2RTFDIC8qIGNvcHlDdXJzb3IucG5nIGluIFJlc291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjE0QTFGRDBCMjNBOEQ2MDA0NDZF
MUMgLyogY29weUN1cnNvci5wbmcgKi87IH07CiAJCTQ2NEVBMjczMEI4QTM1MEIwMEE4RTZFMyAv
KiBjcm9zc0hhaXJDdXJzb3IucG5nIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0NjRFQTI3MTBCOEEzNTBCMDBBOEU2RTMgLyogY3Jvc3NIYWlyQ3Vyc29y
LnBuZyAqLzsgfTsKIAkJNDY0RUEyNzQwQjhBMzUwQjAwQThFNkUzIC8qIG5vdEFsbG93ZWRDdXJz
b3IucG5nIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
NjRFQTI3MjBCOEEzNTBCMDBBOEU2RTMgLyogbm90QWxsb3dlZEN1cnNvci5wbmcgKi87IH07CkBA
IC03NDM2LDYgKzc0MzgsOCBAQAogCQk0NDlCMTlGMzBGQTcyRUNFMDAxNUNBNEEgLyogSFRNTFBh
cnNlclF1aXJrcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIVE1MUGFyc2Vy
UXVpcmtzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0QTI4QUFCMTJERkI4QUMw
MEFFOTIzQiAvKiBNYXRoTUxFbGVtZW50RmFjdG9yeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBNYXRoTUxFbGVtZW50RmFjdG9yeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0NEEyOEFBRTEyREZCOEJGMDBBRTkyM0IgLyogTWF0aE1MTmFtZXMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWF0aE1MTmFtZXMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNDUwOTlDNDAxMzcwQTc4MDAwNThENTEzIC8qIEljb25VUkwuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gSWNvblVSTC5jcHA7IHBhdGggPSBk
b20vSWNvblVSTC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ1QkFDMkFGMTM2
MEJCQUIwMDVEQTI1OCAvKiBJY29uVVJMLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IEljb25VUkwuaDsgcGF0aCA9IGRvbS9JY29uVVJMLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQ2MTRBMUZEMEIyM0E4RDYwMDQ0NkUxQyAvKiBjb3B5Q3Vyc29yLnBuZyAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGltYWdlLnBuZzsg
cGF0aCA9IGNvcHlDdXJzb3IucG5nOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjRF
QTI3MTBCOEEzNTBCMDBBOEU2RTMgLyogY3Jvc3NIYWlyQ3Vyc29yLnBuZyAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGltYWdlLnBuZzsgcGF0aCA9IGNy
b3NzSGFpckN1cnNvci5wbmc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2NEVBMjcy
MEI4QTM1MEIwMEE4RTZFMyAvKiBub3RBbGxvd2VkQ3Vyc29yLnBuZyAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGltYWdlLnBuZzsgcGF0aCA9IG5vdEFs
bG93ZWRDdXJzb3IucG5nOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTI1MTcsNiAr
MTI1MjEsOCBAQAogCQkwODY3RDY5MUZFODQwMjhGQzAyQUFDMDcgLyogV2ViS2l0ICovID0gewog
CQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk0NTA5OUM0MDEzNzBBNzgw
MDA1OEQ1MTMgLyogSWNvblVSTC5jcHAgKi8sCisJCQkJNDVCQUMyQUYxMzYwQkJBQjAwNURBMjU4
IC8qIEljb25VUkwuaCAqLywKIAkJCQk2NUM5N0FGMjA4RUE5MDg4MDBBQ0QyNzMgLyogY29uZmln
LmggKi8sCiAJCQkJRURFQzk4MDIwQUVEN0UxNzAwNTkxMzdGIC8qIFdlYkNvcmVQcmVmaXguaCAq
LywKIAkJCQk5MzA3MDYxMzA5RTBDQTgyMDBCMTdGRTQgLyogRGVyaXZlZFNvdXJjZXMubWFrZSAq
LywKQEAgLTIyNzAyLDYgKzIyNzA4LDcgQEAKIAkJCQk5M0YxOTlFRDA4MjQ1RTU5MDAxRTlBQkMg
LyogWFNMVFByb2Nlc3Nvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTFCRTUxMkUwQ0Y2QzUxMjAw
MkVBOTU5IC8qIFhTTFRVbmljb2RlU29ydC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTc3RTJFMEYx
MkYwRkM5QzAwQzEzMzc5IC8qIFhTU0ZpbHRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDVCQUMy
QjAxMzYwQkJBQjAwNURBMjU4IC8qIEljb25VUkwuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJ
CXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjUzNjIs
NiArMjUzNjksNyBAQAogCQkJCTkzRjE5QjA1MDgyNDVFNTkwMDFFOUFCQyAvKiBYU0xUUHJvY2Vz
c29yTGlieHNsdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMUJFNTEyRDBDRjZDNTEyMDAyRUE5
NTkgLyogWFNMVFVuaWNvZGVTb3J0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3N0UyRTBFMTJG
MEZDOUMwMEMxMzM3OSAvKiBYU1NGaWx0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNDUwOTlD
NDExMzcwQTc4MDAwNThENTEzIC8qIEljb25VUkwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwog
CQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9kb20vRE9NQWxsSW5PbmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2RvbS9ET01BbGxJbk9uZS5jcHAJKHJldmlzaW9uIDg1NjMxKQorKysgU291cmNlL1dl
YkNvcmUvZG9tL0RPTUFsbEluT25lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzUsNiArNzUsNyBA
QAogI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmNwcCIKICNpbmNsdWRlICJFeGNlcHRpb25CYXNlLmNw
cCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmNwcCIKKyNpbmNsdWRlICJJY29uVVJMLmNwcCIK
ICNpbmNsdWRlICJJbnB1dEVsZW1lbnQuY3BwIgogI2luY2x1ZGUgIktleWJvYXJkRXZlbnQuY3Bw
IgogI2luY2x1ZGUgIk1lc3NhZ2VDaGFubmVsLmNwcCIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmNwcAkocmV2aXNpb24gODU2MzEpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00MzY2LDE1ICs0MzY2LDI2IEBAIHVuc2lnbmVkIEZvcm1FbGVt
ZW50S2V5SGFzaDo6aGFzaChjb25zdCAKICAgICByZXR1cm4gU3RyaW5nSGFzaGVyOjpoYXNoTWVt
b3J5PHNpemVvZihGb3JtRWxlbWVudEtleSk+KCZrZXkpOwogfQogCi12b2lkIERvY3VtZW50Ojpz
ZXRJY29uVVJMKGNvbnN0IFN0cmluZyYgaWNvblVSTCwgY29uc3QgU3RyaW5nJiB0eXBlKQorSWNv
blVSTCBEb2N1bWVudDo6aWNvblVSTChJY29uVHlwZSBpY29uVHlwZSkgY29uc3QKIHsKLSAgICAv
LyBGSVhNRSAtIDxyZGFyOi8vcHJvYmxlbS80NzI3NjQ1PiAtIEF0IHNvbWUgcG9pbnQgaW4gdGhl
IGZ1dHVyZSwgd2UgbWlnaHQgYWN0dWFsbHkgaG9ub3IgdGhlICJ0eXBlIiAKLSAgICBpZiAobV9p
Y29uVVJMLmlzRW1wdHkoKSkKLSAgICAgICAgbV9pY29uVVJMID0gaWNvblVSTDsKLSAgICBlbHNl
IGlmICghdHlwZS5pc0VtcHR5KCkpCi0gICAgICAgIG1faWNvblVSTCA9IGljb25VUkw7CisgICAg
cmV0dXJuIG1faWNvblVSTHNbdG9JY29uSW5kZXgoaWNvblR5cGUpXTsKK30KKwordm9pZCBEb2N1
bWVudDo6c2V0SWNvblVSTChjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSwgSWNvblR5cGUgaWNvblR5cGUpCit7CisgICAgLy8gRklYTUUgLSA8cmRhcjovL3Byb2JsZW0v
NDcyNzY0NT4gLSBBdCBzb21lIHBvaW50IGluIHRoZSBmdXR1cmUsIHdlIG1pZ2h0IGFjdHVhbGx5
IGhvbm9yIHRoZSAibWltZVR5cGUiCisgICAgSWNvblVSTCBuZXdVUkwoS1VSTChQYXJzZWRVUkxT
dHJpbmcsIHVybCksIGljb25UeXBlKTsKKyAgICBpZiAoIWljb25VUkwoaWNvblR5cGUpLm1faWNv
blVSTC5pc0VtcHR5KCkpCisgICAgICAgIHNldEljb25VUkwobmV3VVJMKTsKKyAgICBlbHNlIGlm
ICghbWltZVR5cGUuaXNFbXB0eSgpKQorICAgICAgICBzZXRJY29uVVJMKG5ld1VSTCk7CiAgICAg
aWYgKEZyYW1lKiBmID0gZnJhbWUoKSkKLSAgICAgICAgZi0+bG9hZGVyKCktPnNldEljb25VUkwo
bV9pY29uVVJMKTsKKyAgICAgICAgZi0+bG9hZGVyKCktPnNldEljb25VUkwobmV3VVJMKTsKK30K
Kwordm9pZCBEb2N1bWVudDo6c2V0SWNvblVSTChjb25zdCBJY29uVVJMJiBpY29uVVJMKQorewor
ICAgIG1faWNvblVSTHNbdG9JY29uSW5kZXgoaWNvblVSTC5tX2ljb25UeXBlKV0gPSBpY29uVVJM
OwogfQogCiB2b2lkIERvY3VtZW50OjpyZWdpc3RlckZvcm1FbGVtZW50V2l0aEZvcm1BdHRyaWJ1
dGUoRm9ybUFzc29jaWF0ZWRFbGVtZW50KiBlbGVtZW50KQpJbmRleDogU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmgJKHJldmlzaW9uIDg1NjMxKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHdv
cmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJDb2xvci5oIgogI2luY2x1
ZGUgIkRPTVRpbWVTdGFtcC5oIgogI2luY2x1ZGUgIkRvY3VtZW50VGltaW5nLmgiCisjaW5jbHVk
ZSAiSWNvblVSTC5oIgogI2luY2x1ZGUgIlF1YWxpZmllZE5hbWUuaCIKICNpbmNsdWRlICJTY3Jp
cHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSAiU3RyaW5nV2l0aERpcmVjdGlvbi5oIgpA
QCAtOTE3LDggKzkxOCw5IEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lkIHNldEhhc05vZGVzV2l0
aFBsYWNlaG9sZGVyU3R5bGUoKSB7IG1faGFzTm9kZXNXaXRoUGxhY2Vob2xkZXJTdHlsZSA9IHRy
dWU7IH0KIAotICAgIGNvbnN0IFN0cmluZyYgaWNvblVSTCgpIGNvbnN0IHsgcmV0dXJuIG1faWNv
blVSTDsgfQotICAgIHZvaWQgc2V0SWNvblVSTChjb25zdCBTdHJpbmcmIGljb25VUkwsIGNvbnN0
IFN0cmluZyYgdHlwZSk7CisgICAgSWNvblVSTCBpY29uVVJMKEljb25UeXBlKSBjb25zdDsKKyAg
ICB2b2lkIHNldEljb25VUkwoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgSWNvblR5cGUp
OworICAgIHZvaWQgc2V0SWNvblVSTChjb25zdCBJY29uVVJMJik7CiAKICAgICB2b2lkIHNldFVz
ZVNlY3VyZUtleWJvYXJkRW50cnlXaGVuQWN0aXZlKGJvb2wpOwogICAgIGJvb2wgdXNlU2VjdXJl
S2V5Ym9hcmRFbnRyeVdoZW5BY3RpdmUoKSBjb25zdDsKQEAgLTEzMjQsOCArMTMyNiw4IEBAIHBy
aXZhdGU6CiAKICAgICBib29sIG1fY3JlYXRlUmVuZGVyZXJzOwogICAgIGJvb2wgbV9pblBhZ2VD
YWNoZTsKLSAgICBTdHJpbmcgbV9pY29uVVJMOwotICAgIAorICAgIEljb25VUkwgbV9pY29uVVJM
c1tJQ09OX0NPVU5UXTsKKwogICAgIEhhc2hTZXQ8RWxlbWVudCo+IG1fZG9jdW1lbnRBY3RpdmF0
aW9uQ2FsbGJhY2tFbGVtZW50czsKICAgICBIYXNoU2V0PEVsZW1lbnQqPiBtX21lZGlhVm9sdW1l
Q2FsbGJhY2tFbGVtZW50czsKICAgICBIYXNoU2V0PEVsZW1lbnQqPiBtX3ByaXZhdGVCcm93c2lu
Z1N0YXRlQ2hhbmdlZEVsZW1lbnRzOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0ljb25VUkwu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9JY29uVVJMLmNwcAkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9JY29uVVJMLmNwcAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICog
bWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICog
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAq
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJY29uVVJMLmgiCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworc2l6ZV90IHRvSWNvbkluZGV4KEljb25UeXBlIHR5cGUp
Cit7CisgICAgc2l6ZV90IGluZGV4ID0gMDsKKyAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNl
IEZhdmljb246CisgICAgICAgIGluZGV4ID0gMDsKKyAgICAgICAgYnJlYWs7CisjaWYgRU5BQkxF
KFRPVUNIX0lDT05fTE9BRElORykKKyAgICBjYXNlIFRvdWNoUHJlY29tcG9zZWRJY29uOgorICAg
ICAgICBpbmRleCA9IDE7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVG91Y2hJY29uOgorICAg
ICAgICBpbmRleCA9IDI7CisgICAgICAgIGJyZWFrOworI2VuZGlmCisgICAgZGVmYXVsdDoKKyAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorICAgIHJldHVybiBpbmRleDsKK30K
KworfQorCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2UvV2ViQ29yZS9kb20vSWNvblVSTC5j
cHAKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fXwpBZGRlZDogc3ZuOmVvbC1zdHlsZQogICArIExGCgpJbmRleDogU291cmNl
L1dlYkNvcmUvZG9tL0ljb25VUkwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20v
SWNvblVSTC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0ljb25VUkwuaAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSw3NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
CisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSWNvblVSTF9oCisjZGVmaW5lIElj
b25VUkxfaAorCisjaW5jbHVkZSAiS1VSTC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyNp
ZiBFTkFCTEUoVE9VQ0hfSUNPTl9MT0FESU5HKQorI2RlZmluZSBJQ09OX0NPVU5UIDMKKyNlbHNl
CisjZGVmaW5lIElDT05fQ09VTlQgMQorI2VuZGlmCisKK2VudW0gSWNvblR5cGUgeworICAgIElu
dmFsaWRJY29uID0gMCwKKyAgICBGYXZpY29uID0gMSwKKyAgICBUb3VjaEljb24gPSAxIDw8IDEs
CisgICAgVG91Y2hQcmVjb21wb3NlZEljb24gPSAxIDw8IDIKK307CisKK3N0cnVjdCBJY29uVVJM
IHsKKyAgICBJY29uVHlwZSBtX2ljb25UeXBlOworICAgIEtVUkwgbV9pY29uVVJMOworCisgICAg
SWNvblVSTCgpCisgICAgICAgIDogbV9pY29uVHlwZShJbnZhbGlkSWNvbikKKyAgICB7CisgICAg
fQorCisgICAgSWNvblVSTChjb25zdCBLVVJMJiB1cmwsIEljb25UeXBlIHR5cGUpCisgICAgICAg
IDogbV9pY29uVHlwZSh0eXBlKQorICAgICAgICAsIG1faWNvblVSTCh1cmwpCisgICAgeworICAg
IH0KK307CisKK3R5cGVkZWYgVmVjdG9yPEljb25VUkwsIElDT05fQ09VTlQ+IEljb25VUkxzOwor
CisvLyBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgZ2l2ZW4gdHlwZSwgMCBpcyByZXR1cm5lZCBp
ZiB0aGUgdHlwZSBpcyBpbnZhbGlkLgorc2l6ZV90IHRvSWNvbkluZGV4KEljb25UeXBlKTsKKwor
fQorCisjZW5kaWYgLy8gSWNvblVSTF9oCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2UvV2Vi
Q29yZS9kb20vSWNvblVSTC5oCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjplb2wtc3R5bGUKICAgKyBM
RgoKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAJKHJldmlzaW9u
IDg1NjMxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNjAsNyArMTYwLDcgQEAgdm9pZCBIVE1MTGlua0VsZW1lbnQ6OnBhcnNl
TWFwcGVkQXR0cmlidQogdm9pZCBIVE1MTGlua0VsZW1lbnQ6OnRva2VuaXplUmVsQXR0cmlidXRl
KGNvbnN0IEF0b21pY1N0cmluZyYgcmVsLCBSZWxBdHRyaWJ1dGUmIHJlbEF0dHJpYnV0ZSkKIHsK
ICAgICByZWxBdHRyaWJ1dGUubV9pc1N0eWxlU2hlZXQgPSBmYWxzZTsKLSAgICByZWxBdHRyaWJ1
dGUubV9pc0ljb24gPSBmYWxzZTsKKyAgICByZWxBdHRyaWJ1dGUubV9pY29uVHlwZSA9IEludmFs
aWRJY29uOwogICAgIHJlbEF0dHJpYnV0ZS5tX2lzQWx0ZXJuYXRlID0gZmFsc2U7CiAgICAgcmVs
QXR0cmlidXRlLm1faXNETlNQcmVmZXRjaCA9IGZhbHNlOwogI2lmIEVOQUJMRShMSU5LX1BSRUZF
VENIKQpAQCAtMTcwLDcgKzE3MCwxMyBAQCB2b2lkIEhUTUxMaW5rRWxlbWVudDo6dG9rZW5pemVS
ZWxBdHRyaWJ1CiAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHJlbCwgInN0eWxlc2hlZXQiKSkK
ICAgICAgICAgcmVsQXR0cmlidXRlLm1faXNTdHlsZVNoZWV0ID0gdHJ1ZTsKICAgICBlbHNlIGlm
IChlcXVhbElnbm9yaW5nQ2FzZShyZWwsICJpY29uIikgfHwgZXF1YWxJZ25vcmluZ0Nhc2UocmVs
LCAic2hvcnRjdXQgaWNvbiIpKQotICAgICAgICByZWxBdHRyaWJ1dGUubV9pc0ljb24gPSB0cnVl
OworICAgICAgICByZWxBdHRyaWJ1dGUubV9pY29uVHlwZSA9IEZhdmljb247CisjaWYgRU5BQkxF
KFRPVUNIX0lDT05fTE9BRElORykKKyAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShyZWws
ICJhcHBsZS10b3VjaC1pY29uIikpCisgICAgICAgIHJlbEF0dHJpYnV0ZS5tX2ljb25UeXBlID0g
VG91Y2hJY29uOworICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHJlbCwgImFwcGxlLXRv
dWNoLWljb24tcHJlY29tcG9zZWQiKSkKKyAgICAgICAgcmVsQXR0cmlidXRlLm1faWNvblR5cGUg
PSBUb3VjaFByZWNvbXBvc2VkSWNvbjsKKyNlbmRpZgogICAgIGVsc2UgaWYgKGVxdWFsSWdub3Jp
bmdDYXNlKHJlbCwgImRucy1wcmVmZXRjaCIpKQogICAgICAgICByZWxBdHRyaWJ1dGUubV9pc0RO
U1ByZWZldGNoID0gdHJ1ZTsKICAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShyZWwsICJh
bHRlcm5hdGUgc3R5bGVzaGVldCIpIHx8IGVxdWFsSWdub3JpbmdDYXNlKHJlbCwgInN0eWxlc2hl
ZXQgYWx0ZXJuYXRlIikpIHsKQEAgLTE4OSw3ICsxOTUsMTMgQEAgdm9pZCBIVE1MTGlua0VsZW1l
bnQ6OnRva2VuaXplUmVsQXR0cmlidQogICAgICAgICAgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmlu
Z0Nhc2UoKml0LCAiYWx0ZXJuYXRlIikpCiAgICAgICAgICAgICAgICAgcmVsQXR0cmlidXRlLm1f
aXNBbHRlcm5hdGUgPSB0cnVlOwogICAgICAgICAgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nh
c2UoKml0LCAiaWNvbiIpKQotICAgICAgICAgICAgICAgIHJlbEF0dHJpYnV0ZS5tX2lzSWNvbiA9
IHRydWU7CisgICAgICAgICAgICAgICAgcmVsQXR0cmlidXRlLm1faWNvblR5cGUgPSBGYXZpY29u
OworI2lmIEVOQUJMRShUT1VDSF9JQ09OX0xPQURJTkcpCisgICAgICAgICAgICBlbHNlIGlmIChl
cXVhbElnbm9yaW5nQ2FzZSgqaXQsICJhcHBsZS10b3VjaC1pY29uIikpCisgICAgICAgICAgICAg
ICAgcmVsQXR0cmlidXRlLm1faWNvblR5cGUgPSBUb3VjaEljb247CisgICAgICAgICAgICBlbHNl
IGlmIChlcXVhbElnbm9yaW5nQ2FzZSgqaXQsICJhcHBsZS10b3VjaC1pY29uLXByZWNvbXBvc2Vk
IikpCisgICAgICAgICAgICAgICAgcmVsQXR0cmlidXRlLm1faWNvblR5cGUgPSBUb3VjaFByZWNv
bXBvc2VkSWNvbjsKKyNlbmRpZgogI2lmIEVOQUJMRShMSU5LX1BSRUZFVENIKQogICAgICAgICAg
ICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoKml0LCAicHJlZmV0Y2giKSkKICAgICAgICAg
ICAgICAgcmVsQXR0cmlidXRlLm1faXNMaW5rUHJlZmV0Y2ggPSB0cnVlOwpAQCAtMjIyLDEwICsy
MzQsMTAgQEAgdm9pZCBIVE1MTGlua0VsZW1lbnQ6OnByb2Nlc3MoKQogCiAgICAgLy8gSUUgZXh0
ZW5zaW9uOiBsb2NhdGlvbiBvZiBzbWFsbCBpY29uIGZvciBsb2NhdGlvbmJhciAvIGJvb2ttYXJr
cwogICAgIC8vIFdlJ2xsIHJlY29yZCB0aGlzIFVSTCBwZXIgZG9jdW1lbnQsIGV2ZW4gaWYgd2Ug
bGF0ZXIgb25seSB1c2UgaXQgaW4gdG9wIGxldmVsIGZyYW1lcwotICAgIGlmIChtX3JlbEF0dHJp
YnV0ZS5tX2lzSWNvbiAmJiBtX3VybC5pc1ZhbGlkKCkgJiYgIW1fdXJsLmlzRW1wdHkoKSkgewor
ICAgIGlmIChtX3JlbEF0dHJpYnV0ZS5tX2ljb25UeXBlICE9IEludmFsaWRJY29uICYmIG1fdXJs
LmlzVmFsaWQoKSAmJiAhbV91cmwuaXNFbXB0eSgpKSB7CiAgICAgICAgIGlmICghY2hlY2tCZWZv
cmVMb2FkRXZlbnQoKSkgCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGRvY3VtZW50KCkt
PnNldEljb25VUkwobV91cmwuc3RyaW5nKCksIHR5cGUpOworICAgICAgICBkb2N1bWVudCgpLT5z
ZXRJY29uVVJMKG1fdXJsLnN0cmluZygpLCB0eXBlLCBtX3JlbEF0dHJpYnV0ZS5tX2ljb25UeXBl
KTsKICAgICB9CiAKICAgICBpZiAobV9yZWxBdHRyaWJ1dGUubV9pc0ROU1ByZWZldGNoKSB7CkBA
IC00NzMsNyArNDg1LDcgQEAgdm9pZCBIVE1MTGlua0VsZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0
cgogICAgIEhUTUxFbGVtZW50OjphZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHModXJscyk7CiAK
ICAgICAvLyBGYXZpY29ucyBhcmUgaGFuZGxlZCBieSBhIHNwZWNpYWwgY2FzZSBpbiBMZWdhY3lX
ZWJBcmNoaXZlOjpjcmVhdGUoKQotICAgIGlmIChtX3JlbEF0dHJpYnV0ZS5tX2lzSWNvbikKKyAg
ICBpZiAobV9yZWxBdHRyaWJ1dGUubV9pY29uVHlwZSAhPSBJbnZhbGlkSWNvbikKICAgICAgICAg
cmV0dXJuOwogCiAgICAgaWYgKCFtX3JlbEF0dHJpYnV0ZS5tX2lzU3R5bGVTaGVldCkKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuaAkocmV2aXNpb24gODU2MzEpCisrKyBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
Nyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VDbGllbnQuaCIKICNpbmNsdWRl
ICJDYWNoZWRSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgIkhUTUxFbGVtZW50LmgiCisjaW5j
bHVkZSAiSWNvblVSTC5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKQEAgLTM5LDcgKzQwLDcgQEAgY2xhc3MgSFRNTExpbmtFbGVtZW50IDogcHVibGljIEhUTUxF
bGVtZQogcHVibGljOgogICAgIHN0cnVjdCBSZWxBdHRyaWJ1dGUgewogICAgICAgICBib29sIG1f
aXNTdHlsZVNoZWV0OwotICAgICAgICBib29sIG1faXNJY29uOworICAgICAgICBJY29uVHlwZSBt
X2ljb25UeXBlOwogICAgICAgICBib29sIG1faXNBbHRlcm5hdGU7CiAgICAgICAgIGJvb2wgbV9p
c0ROU1ByZWZldGNoOwogI2lmIEVOQUJMRShMSU5LX1BSRUZFVENIKQpAQCAtNDksNyArNTAsNyBA
QCBwdWJsaWM6CiAKICAgICAgICAgUmVsQXR0cmlidXRlKCkKICAgICAgICAgICAgIDogbV9pc1N0
eWxlU2hlZXQoZmFsc2UpCi0gICAgICAgICAgICAsIG1faXNJY29uKGZhbHNlKQorICAgICAgICAg
ICAgLCBtX2ljb25UeXBlKEludmFsaWRJY29uKQogICAgICAgICAgICAgLCBtX2lzQWx0ZXJuYXRl
KGZhbHNlKQogICAgICAgICAgICAgLCBtX2lzRE5TUHJlZmV0Y2goZmFsc2UpCiAjaWYgRU5BQkxF
KExJTktfUFJFRkVUQ0gpCkBAIC03Niw3ICs3Nyw2IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNE
aXNhYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZGlzYWJsZWRTdGF0ZSA9PSBEaXNhYmxlZDsgfQog
ICAgIGJvb2wgaXNFbmFibGVkVmlhU2NyaXB0KCkgY29uc3QgeyByZXR1cm4gbV9kaXNhYmxlZFN0
YXRlID09IEVuYWJsZWRWaWFTY3JpcHQ7IH0KLSAgICBib29sIGlzSWNvbigpIGNvbnN0IHsgcmV0
dXJuIG1fcmVsQXR0cmlidXRlLm1faXNJY29uOyB9CiAgICAgYm9vbCBkaXNhYmxlZCgpIGNvbnN0
OwogICAgIHZvaWQgc2V0RGlzYWJsZWQoYm9vbCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNwcAkocmV2aXNpb24gODU2MzEp
CisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC05NSw3ICs5NSw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIEhU
TUxMaW5rRWxlbWVudDo6UmVsQXR0cmlidXRlIHJlbDsKICAgICAgICAgSFRNTExpbmtFbGVtZW50
Ojp0b2tlbml6ZVJlbEF0dHJpYnV0ZShhdHRyaWJ1dGVWYWx1ZSwgcmVsKTsKLSAgICAgICAgcmV0
dXJuIHJlbC5tX2lzU3R5bGVTaGVldCAmJiAhcmVsLm1faXNBbHRlcm5hdGUgJiYgIXJlbC5tX2lz
SWNvbiAmJiAhcmVsLm1faXNETlNQcmVmZXRjaDsKKyAgICAgICAgcmV0dXJuIHJlbC5tX2lzU3R5
bGVTaGVldCAmJiAhcmVsLm1faXNBbHRlcm5hdGUgJiYgcmVsLm1faWNvblR5cGUgPT0gSW52YWxp
ZEljb24gJiYgIXJlbC5tX2lzRE5TUHJlZmV0Y2g7CiAgICAgfQogCiAgICAgc3RhdGljIGJvb2wg
bGlua01lZGlhQXR0cmlidXRlSXNTY3JlZW4oY29uc3QgU3RyaW5nJiBhdHRyaWJ1dGVWYWx1ZSkK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAkocmV2aXNpb24g
ODU2MzEpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC02NjEsMTQgKzY2MSwxOSBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpzZXRU
aXRsZShjb25zdCBTdHJpCiAgICAgfQogfQogCi12b2lkIERvY3VtZW50TG9hZGVyOjpzZXRJY29u
VVJMKGNvbnN0IFN0cmluZyYgaWNvblVSTCkKK0ljb25VUkwgRG9jdW1lbnRMb2FkZXI6Omljb25V
UkwoSWNvblR5cGUgaWNvblR5cGUpIGNvbnN0CiB7Ci0gICAgaWYgKGljb25VUkwuaXNFbXB0eSgp
KQorICAgIHJldHVybiBtX2ljb25VUkxzW3RvSWNvbkluZGV4KGljb25UeXBlKV07Cit9CisKK3Zv
aWQgRG9jdW1lbnRMb2FkZXI6OnNldEljb25VUkwoY29uc3QgSWNvblVSTCYgdXJsKQoreworICAg
IGlmICh1cmwubV9pY29uVVJMLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYg
KG1fcGFnZUljb25VUkwgIT0gaWNvblVSTCkgewotICAgICAgICBtX3BhZ2VJY29uVVJMID0gaWNv
blVSTDsKLSAgICAgICAgZnJhbWVMb2FkZXIoKS0+ZGlkQ2hhbmdlSWNvbnModGhpcyk7CisgICAg
aWYgKGljb25VUkwodXJsLm1faWNvblR5cGUpLm1faWNvblVSTCAhPSB1cmwubV9pY29uVVJMKSB7
CisgICAgICAgIG1faWNvblVSTHNbdG9JY29uSW5kZXgodXJsLm1faWNvblR5cGUpXSA9IHVybDsK
KyAgICAgICAgZnJhbWVMb2FkZXIoKS0+ZGlkQ2hhbmdlSWNvbnModGhpcywgdXJsLm1faWNvblR5
cGUpOwogICAgIH0KIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9h
ZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVy
LmgJKHJldmlzaW9uIDg1NjMxKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9h
ZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJEb2N1bWVu
dExvYWRUaW1pbmcuaCIKICNpbmNsdWRlICJEb2N1bWVudFdyaXRlci5oIgogI2luY2x1ZGUgIklj
b25EYXRhYmFzZUJhc2UuaCIKKyNpbmNsdWRlICJJY29uVVJMLmgiCiAjaW5jbHVkZSAiTmF2aWdh
dGlvbkFjdGlvbi5oIgogI2luY2x1ZGUgIlJlc291cmNlRXJyb3IuaCIKICNpbmNsdWRlICJSZXNv
dXJjZVJlcXVlc3QuaCIKQEAgLTEyMyw3ICsxMjQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIGJvb2wgaXNMb2FkaW5nSW5BUElTZW5zZSgpIGNvbnN0OwogICAgICAgICB2b2lkIHNl
dFByaW1hcnlMb2FkQ29tcGxldGUoYm9vbCk7CiAgICAgICAgIHZvaWQgc2V0VGl0bGUoY29uc3Qg
U3RyaW5nV2l0aERpcmVjdGlvbiYpOwotICAgICAgICB2b2lkIHNldEljb25VUkwoY29uc3QgU3Ry
aW5nJik7CisgICAgICAgIHZvaWQgc2V0SWNvblVSTChjb25zdCBJY29uVVJMJik7CiAgICAgICAg
IGNvbnN0IFN0cmluZyYgb3ZlcnJpZGVFbmNvZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fb3ZlcnJp
ZGVFbmNvZGluZzsgfQogCiAjaWYgUExBVEZPUk0oTUFDKQpAQCAtMTcwLDcgKzE3MSw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2b2lkIHN0b3BSZWNvcmRpbmdSZXNwb25zZXMo
KTsKICAgICAgICAgY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYgdGl0bGUoKSBjb25zdCB7IHJl
dHVybiBtX3BhZ2VUaXRsZTsgfQotICAgICAgICBjb25zdCBTdHJpbmcmIGljb25VUkwoKSBjb25z
dCB7IHJldHVybiBtX3BhZ2VJY29uVVJMOyB9CisgICAgICAgIEljb25VUkwgaWNvblVSTChJY29u
VHlwZSkgY29uc3Q7CiAKICAgICAgICAgS1VSTCB1cmxGb3JIaXN0b3J5KCkgY29uc3Q7CiAgICAg
ICAgIGJvb2wgdXJsRm9ySGlzdG9yeVJlZmxlY3RzRmFpbHVyZSgpIGNvbnN0OwpAQCAtMzAwLDcg
KzMwMSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCBtX3dhc09ubG9hZEhh
bmRsZWQ7CiAKICAgICAgICAgU3RyaW5nV2l0aERpcmVjdGlvbiBtX3BhZ2VUaXRsZTsKLSAgICAg
ICAgU3RyaW5nIG1fcGFnZUljb25VUkw7CisgICAgICAgIEljb25VUkwgbV9pY29uVVJMc1tJQ09O
X0NPVU5UXTsKIAogICAgICAgICBTdHJpbmcgbV9vdmVycmlkZUVuY29kaW5nOwogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCShyZXZpc2lvbiA4NTYzMSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAkod29ya2luZyBjb3B5KQpAQCAtMjcxLDcg
KzI3MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlSWNv
bigpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2Fk
KCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFN0
cmluZ1dpdGhEaXJlY3Rpb24mKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFu
Z2VJY29ucygpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZUljb25zKElj
b25UeXBlKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDb21taXRMb2FkKCkgeyB9
CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9hZChjb25zdCBS
ZXNvdXJjZUVycm9yJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbExvYWQo
Y29uc3QgUmVzb3VyY2VFcnJvciYpIHsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVM
b2FkZXIuY3BwCShyZXZpc2lvbiA4NTYzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFt
ZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY5LDYgKzY5LDcgQEAKICNpbmNsdWRlICJI
aXN0b3J5SXRlbS5oIgogI2luY2x1ZGUgIkljb25EYXRhYmFzZS5oIgogI2luY2x1ZGUgIkljb25M
b2FkZXIuaCIKKyNpbmNsdWRlICJJY29uVVJMLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ29udHJv
bGxlci5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUg
IkxvZ2dpbmcuaCIKQEAgLTQ2NywxOCArNDY4LDU2IEBAIGJvb2wgRnJhbWVMb2FkZXI6OmNsb3Nl
VVJMKCkKIAogS1VSTCBGcmFtZUxvYWRlcjo6aWNvblVSTCgpCiB7Ci0gICAgLy8gSWYgdGhpcyBp
c24ndCBhIHRvcCBsZXZlbCBmcmFtZSwgcmV0dXJuIG5vdGhpbmcKKyAgICBJY29uVVJMcyB1cmxz
ID0gaWNvblVSTHMoRmF2aWNvbik7CisgICAgcmV0dXJuIHVybHMuaXNFbXB0eSgpID8gS1VSTCgp
IDogdXJsc1swXS5tX2ljb25VUkw7Cit9CisKK0ljb25VUkxzIEZyYW1lTG9hZGVyOjppY29uVVJM
cyhpbnQgaWNvblR5cGVzKQoreworICAgIEljb25VUkxzIGljb25VUkxzOworICAgIGlmIChpY29u
VHlwZXMgJiBGYXZpY29uICYmICFmaWxsSWNvblVSTChGYXZpY29uLCAmaWNvblVSTHMpKQorICAg
ICAgICBpY29uVVJMcy5hcHBlbmQoZ2V0RGVmYXVsdEljb25VUkwoRmF2aWNvbikpOworCisjaWYg
RU5BQkxFKFRPVUNIX0lDT05fTE9BRElORykKKyAgICBib29sIGhhdmVQcmVjb21wb3NlZEljb24g
PSBmYWxzZTsKKyAgICBpZiAoaWNvblR5cGVzICYgVG91Y2hQcmVjb21wb3NlZEljb24pCisgICAg
ICAgIGhhdmVQcmVjb21wb3NlZEljb24gPSBmaWxsSWNvblVSTChUb3VjaFByZWNvbXBvc2VkSWNv
biwgJmljb25VUkxzKTsKKworICAgIGJvb2wgaGF2ZVRvdWNoSWNvbiA9IGZhbHNlOworICAgIGlm
IChpY29uVHlwZXMgJiBUb3VjaEljb24pCisgICAgICAgIGhhdmVUb3VjaEljb24gPSBmaWxsSWNv
blVSTChUb3VjaEljb24sICZpY29uVVJMcyk7CisKKyAgICAvLyBPbmx5IHJldHVybiB0aGUgZGVm
YXVsdCB0b3VjaCBpY29ucyB3aGVuIHRoZSBib3RoIHdlcmUgcmVxdWlyZWQgYW5kIG5laXRoZXIg
d2FzIGdvdHRlbi4KKyAgICBpZiAoaWNvblR5cGVzICYgVG91Y2hQcmVjb21wb3NlZEljb24gJiYg
aWNvblR5cGVzICYgVG91Y2hJY29uICYmICFoYXZlUHJlY29tcG9zZWRJY29uICYmICFoYXZlVG91
Y2hJY29uKSB7CisgICAgICAgIGljb25VUkxzLmFwcGVuZChnZXREZWZhdWx0SWNvblVSTChUb3Vj
aFByZWNvbXBvc2VkSWNvbikpOworICAgICAgICBpY29uVVJMcy5hcHBlbmQoZ2V0RGVmYXVsdElj
b25VUkwoVG91Y2hJY29uKSk7CisgICAgfQorI2VuZGlmCisgICAgcmV0dXJuIGljb25VUkxzOwor
fQorCitib29sIEZyYW1lTG9hZGVyOjpmaWxsSWNvblVSTChJY29uVHlwZSBpY29uVHlwZSwgSWNv
blVSTHMqIGljb25VUkxzKQoreworICAgIC8vIElmIHRoaXMgaXNuJ3QgYSB0b3AgbGV2ZWwgZnJh
bWUsIHJldHVybgogICAgIGlmIChtX2ZyYW1lLT50cmVlKCkgJiYgbV9mcmFtZS0+dHJlZSgpLT5w
YXJlbnQoKSkKLSAgICAgICAgcmV0dXJuIEtVUkwoKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwog
CiAgICAgLy8gSWYgd2UgaGF2ZSBhbiBpY29uVVJMIGZyb20gYSBMaW5rIGVsZW1lbnQsIHJldHVy
biB0aGF0Ci0gICAgaWYgKCFtX2ZyYW1lLT5kb2N1bWVudCgpLT5pY29uVVJMKCkuaXNFbXB0eSgp
KQotICAgICAgICByZXR1cm4gS1VSTChQYXJzZWRVUkxTdHJpbmcsIG1fZnJhbWUtPmRvY3VtZW50
KCktPmljb25VUkwoKSk7CisgICAgSWNvblVSTCB1cmwgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT5p
Y29uVVJMKGljb25UeXBlKTsKKyAgICBpZiAodXJsLm1faWNvblVSTC5pc0VtcHR5KCkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIGljb25VUkxzLT5hcHBlbmQodXJsKTsKKworICAgIHJl
dHVybiB0cnVlOworfQogCitJY29uVVJMIEZyYW1lTG9hZGVyOjpnZXREZWZhdWx0SWNvblVSTChJ
Y29uVHlwZSBpY29uVHlwZSkKK3sKICAgICAvLyBEb24ndCByZXR1cm4gYSBmYXZpY29uIGljb25V
UkwgdW5sZXNzIHdlJ3JlIGh0dHAgb3IgaHR0cHMKICAgICBLVVJMIGRvY3VtZW50VVJMID0gbV9m
cmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCk7CiAgICAgaWYgKCFkb2N1bWVudFVSTC5wcm90b2NvbElu
SFRUUEZhbWlseSgpKQotICAgICAgICByZXR1cm4gS1VSTCgpOworICAgICAgICByZXR1cm4gSWNv
blVSTCgpOwogCiAgICAgS1VSTCB1cmw7CiAgICAgYm9vbCBjb3VsZFNldFByb3RvY29sID0gdXJs
LnNldFByb3RvY29sKGRvY3VtZW50VVJMLnByb3RvY29sKCkpOwpAQCAtNDg2LDggKzUyNSwyMSBA
QCBLVVJMIEZyYW1lTG9hZGVyOjppY29uVVJMKCkKICAgICB1cmwuc2V0SG9zdChkb2N1bWVudFVS
TC5ob3N0KCkpOwogICAgIGlmIChkb2N1bWVudFVSTC5oYXNQb3J0KCkpCiAgICAgICAgIHVybC5z
ZXRQb3J0KGRvY3VtZW50VVJMLnBvcnQoKSk7Ci0gICAgdXJsLnNldFBhdGgoIi9mYXZpY29uLmlj
byIpOwotICAgIHJldHVybiB1cmw7CisgICAgaWYgKGljb25UeXBlID09IEZhdmljb24pIHsKKyAg
ICAgICAgdXJsLnNldFBhdGgoIi9mYXZpY29uLmljbyIpOworICAgICAgICByZXR1cm4gSWNvblVS
TChLVVJMKFBhcnNlZFVSTFN0cmluZywgdXJsKSwgRmF2aWNvbik7CisgICAgfQorI2lmIEVOQUJM
RShUT1VDSF9JQ09OX0xPQURJTkcpCisgICAgaWYgKGljb25UeXBlID09IFRvdWNoUHJlY29tcG9z
ZWRJY29uKSB7CisgICAgICAgIHVybC5zZXRQYXRoKCIvYXBwbGUtdG91Y2gtaWNvbi1wcmVjb21w
b3NlZC5wbmciKTsKKyAgICAgICAgcmV0dXJuIEljb25VUkwoS1VSTChQYXJzZWRVUkxTdHJpbmcs
IHVybCksIFRvdWNoUHJlY29tcG9zZWRJY29uKTsKKyAgICB9CisgICAgaWYgKGljb25UeXBlID09
IFRvdWNoSWNvbikgeworICAgICAgICB1cmwuc2V0UGF0aCgiL2FwcGxlLXRvdWNoLWljb24ucG5n
Iik7CisgICAgICAgIHJldHVybiBJY29uVVJMKEtVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmwpLCBU
b3VjaEljb24pOworICAgIH0KKyNlbmRpZgorICAgIHJldHVybiBJY29uVVJMKCk7CiB9CiAKIGJv
b2wgRnJhbWVMb2FkZXI6OmRpZE9wZW5VUkwoY29uc3QgS1VSTCYgdXJsKQpAQCAtMzM1Nyw3ICsz
NDA5LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6c2V0VGl0bGUoY29uc3QgU3RyaW5nVwogICAgIGRv
Y3VtZW50TG9hZGVyKCktPnNldFRpdGxlKHRpdGxlKTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlcjo6
c2V0SWNvblVSTChjb25zdCBTdHJpbmcmIGljb25VUkwpCit2b2lkIEZyYW1lTG9hZGVyOjpzZXRJ
Y29uVVJMKGNvbnN0IEljb25VUkwmIGljb25VUkwpCiB7CiAgICAgZG9jdW1lbnRMb2FkZXIoKS0+
c2V0SWNvblVSTChpY29uVVJMKTsKIH0KQEAgLTM0MzUsMTAgKzM0ODcsMTAgQEAgdm9pZCBGcmFt
ZUxvYWRlcjo6ZGlkQ2hhbmdlVGl0bGUoRG9jdW1lbgogICAgIH0KIH0KIAotdm9pZCBGcmFtZUxv
YWRlcjo6ZGlkQ2hhbmdlSWNvbnMoRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKK3ZvaWQgRnJhbWVM
b2FkZXI6OmRpZENoYW5nZUljb25zKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIEljb25UeXBlIHR5
cGUpCiB7CiAgICAgaWYgKGxvYWRlciA9PSBtX2RvY3VtZW50TG9hZGVyKQotICAgICAgICBtX2Ns
aWVudC0+ZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygpOworICAgICAgICBtX2NsaWVudC0+ZGlzcGF0
Y2hEaWRDaGFuZ2VJY29ucyh0eXBlKTsKIH0KIAogdm9pZCBGcmFtZUxvYWRlcjo6ZGlzcGF0Y2hE
aWRDb21taXRMb2FkKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCShyZXZp
c2lvbiA4NTYzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJUeXBlcy5o
IgogI2luY2x1ZGUgIkhpc3RvcnlDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiSWNvbkRhdGFiYXNl
QmFzZS5oIgorI2luY2x1ZGUgIkljb25VUkwuaCIKICNpbmNsdWRlICJQb2xpY3lDaGVja2VyLmgi
CiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkTm90aWZpZXIuaCIKICNpbmNsdWRlICJTdWJmcmFtZUxv
YWRlci5oIgpAQCAtMTkxLDcgKzE5Miw3IEBAIHB1YmxpYzoKICAgICBib29sIHN1YmZyYW1lSXNM
b2FkaW5nKCkgY29uc3Q7CiAgICAgdm9pZCB3aWxsQ2hhbmdlVGl0bGUoRG9jdW1lbnRMb2FkZXIq
KTsKICAgICB2b2lkIGRpZENoYW5nZVRpdGxlKERvY3VtZW50TG9hZGVyKik7Ci0gICAgdm9pZCBk
aWRDaGFuZ2VJY29ucyhEb2N1bWVudExvYWRlciopOworICAgIHZvaWQgZGlkQ2hhbmdlSWNvbnMo
RG9jdW1lbnRMb2FkZXIqLCBJY29uVHlwZSk7CiAKICAgICBGcmFtZUxvYWRUeXBlIGxvYWRUeXBl
KCkgY29uc3Q7CiAKQEAgLTIzMyw3ICsyMzQsMTEgQEAgcHVibGljOgogICAgIHZvaWQgZGlkRW5k
RG9jdW1lbnQoKTsKICAgICB2b2lkIHdpbGxTZXRFbmNvZGluZygpOwogCisgICAgLy8gUmV0dXJu
cyBmYXZpY29uLgogICAgIEtVUkwgaWNvblVSTCgpOworCisgICAgLy8gUmV0dXJucyB0aGUgZ2l2
ZW4gaWNvblR5cGVzJyBJY29uVVJMcywgaWNvblR5cGVzIGNvdWxkIGJlIGFueSBjb21iaW5hdGlv
biBvZiBJY29uVHlwZS4KKyAgICBJY29uVVJMcyBpY29uVVJMcyhpbnQgaWNvblR5cGVzKTsKICAg
ICB2b2lkIGNvbW1pdEljb25VUkxUb0ljb25EYXRhYmFzZShjb25zdCBLVVJMJik7CiAKICAgICBL
VVJMIGJhc2VVUkwoKSBjb25zdDsKQEAgLTI4NCw3ICsyODksNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBjYW5jZWxBbmRDbGVhcigpOwogCiAgICAgdm9pZCBzZXRUaXRsZShjb25zdCBTdHJpbmdXaXRo
RGlyZWN0aW9uJik7Ci0gICAgdm9pZCBzZXRJY29uVVJMKGNvbnN0IFN0cmluZyYpOworICAgIHZv
aWQgc2V0SWNvblVSTChjb25zdCBJY29uVVJMJik7CiAKICAgICB2b2lkIGNvbW1pdFByb3Zpc2lv
bmFsTG9hZCgpOwogICAgIGJvb2wgaXNMb2FkaW5nRnJvbUNhY2hlZFBhZ2UoKSBjb25zdCB7IHJl
dHVybiBtX2xvYWRpbmdGcm9tQ2FjaGVkUGFnZTsgfQpAQCAtNDI4LDYgKzQzMyw5IEBAIHByaXZh
dGU6CiAKICAgICB2b2lkIHVwZGF0ZVNhbmRib3hGbGFncygpOwogCisgICAgYm9vbCBmaWxsSWNv
blVSTChJY29uVHlwZSwgSWNvblVSTHMqKTsKKyAgICBJY29uVVJMIGdldERlZmF1bHRJY29uVVJM
KEljb25UeXBlKTsKKwogICAgIEZyYW1lKiBtX2ZyYW1lOwogICAgIEZyYW1lTG9hZGVyQ2xpZW50
KiBtX2NsaWVudDsKIApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xp
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xp
ZW50LmgJKHJldmlzaW9uIDg1NjMxKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAKICNkZWZpbmUgRnJh
bWVMb2FkZXJDbGllbnRfaAogCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJUeXBlcy5oIgorI2luY2x1
ZGUgIkljb25VUkwuaCIKICNpbmNsdWRlICJTY3JvbGxUeXBlcy5oIgogI2luY2x1ZGUgPHd0Zi9G
b3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtMTQxLDcgKzE0Miw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2
ZUljb24oKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFN0YXJ0UHJvdmlz
aW9uYWxMb2FkKCkgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZl
VGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYpID0gMDsKLSAgICAgICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaERpZENoYW5nZUljb25zKEljb25UeXBlKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9p
ZCBkaXNwYXRjaERpZENvbW1pdExvYWQoKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNw
YXRjaERpZEZhaWxQcm92aXNpb25hbExvYWQoY29uc3QgUmVzb3VyY2VFcnJvciYpID0gMDsKICAg
ICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbExvYWQoY29uc3QgUmVzb3VyY2VFcnJv
ciYpID0gMDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDg1NjU0KQorKysgU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTEtMDQtMjIg
IFRhbyBCYWkgIDxtaWNoYWVsYmFpQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQb3B1bGF0ZSB0b3VjaC1pY29uIHVybCB0byBG
cmFtZUxvYWRlckNsaWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NTkxNDMKKworICAgICAgICBSZXNwZWN0ZWQgdGhlIGNoYW5nZSBvZiBGcmFtZUxv
YWRlckNsaWVudC4KKyAgICAgICAgQWRkZWQgV2ViSWNvblVSTCBhbmQgV2ViSWNvblR5cGUgcmVz
cG9uZGluZyB0aGUgbmV3IEljb25VUkwgYW5kIEljb25UeXBlLgorICAgICAgICBTdXBwb3J0ZWQg
dG8gZ2V0IHRoZSBtdWx0aXBsZSBpY29uIHVybHMuCisKKyAgICAgICAgKiBDb25maWd1cmF0aW9u
cy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZzoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJh
bWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKwogMjAxMS0wNS0w
MyAgQWRhbSBSb2JlbiAgPGFyb2JlbkBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IG1vc3Qgc3Ry
aWN0IFBhc3NPd25QdHIgdmlvbGF0aW9ucyBvbiBXaW5kb3dzCkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwkocmV2
aXNpb24gODU2MzEpCisrKyBTb3VyY2UvV2ViS2l0Mi9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVm
aW5lcy54Y2NvbmZpZwkod29ya2luZyBjb3B5KQpAQCAtMTE4LDYgKzExOCw4IEBAIEVOQUJMRV9W
SURFT19UUkFDSyA9IDsKIAogRU5BQkxFX01FRElBX1NUQVRJU1RJQ1MgPSA7CiAKK0VOQUJMRV9U
T1VDSF9JQ09OX0xPQURJTkcgPSA7CisKIEVOQUJMRV9XRUJfQVVESU8gPSA7CiAKIEVOQUJMRV9X
RUJfU09DS0VUUyA9ICQoRU5BQkxFX1dFQl9TT0NLRVRTXyQoUkVBTF9QTEFURk9STV9OQU1FKSk7
CkBAIC0xMzIsNCArMTM0LDQgQEAgRU5BQkxFX1hIVE1MTVAgPSA7CiBFTkFCTEVfWFBBVEggPSBF
TkFCTEVfWFBBVEg7CiBFTkFCTEVfWFNMVCA9IEVOQUJMRV9YU0xUOwogCi1GRUFUVVJFX0RFRklO
RVMgPSAkKEVOQUJMRV9MSU5LX1BSRUZFVENIKSAkKEVOQUJMRV9BQ0NFTEVSQVRFRF8yRF9DQU5W
QVMpICQoRU5BQkxFX1dFQkdMKSAkKEVOQUJMRV8zRF9SRU5ERVJJTkcpICQoRU5BQkxFX0FOSU1B
VElPTl9BUEkpICQoRU5BQkxFX0JMT0IpICQoRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HKSAkKEVO
QUJMRV9DTElFTlRfQkFTRURfR0VPTE9DQVRJT04pICQoRU5BQkxFX0RBVEFCQVNFKSAkKEVOQUJM
RV9EQVRBTElTVCkgJChFTkFCTEVfREFUQV9UUkFOU0ZFUl9JVEVNUykgJChFTkFCTEVfREVUQUlM
UykgJChFTkFCTEVfREVWSUNFX09SSUVOVEFUSU9OKSAkKEVOQUJMRV9ESVJFQ1RPUllfVVBMT0FE
KSAkKEVOQUJMRV9ET01fU1RPUkFHRSkgJChFTkFCTEVfRVZFTlRTT1VSQ0UpICQoRU5BQkxFX0ZJ
TFRFUlMpICQoRU5BQkxFX0ZJTEVfU1lTVEVNKSAkKEVOQUJMRV9GVUxMU0NSRUVOX0FQSSkgJChF
TkFCTEVfR0VPTE9DQVRJT04pICQoRU5BQkxFX0lDT05EQVRBQkFTRSkgJChFTkFCTEVfSU5ERVhF
RF9EQVRBQkFTRSkgJChFTkFCTEVfSU5QVVRfU1BFRUNIKSAkKEVOQUJMRV9KQVZBU0NSSVBUX0RF
QlVHR0VSKSAkKEVOQUJMRV9NQVRITUwpICQoRU5BQkxFX01FVEVSX1RBRykgJChFTkFCTEVfTk9U
SUZJQ0FUSU9OUykgJChFTkFCTEVfT0ZGTElORV9XRUJfQVBQTElDQVRJT05TKSAkKEVOQUJMRV9Q
QUdFX1ZJU0lCSUxJVFlfQVBJKSAkKEVOQUJMRV9QUk9HUkVTU19UQUcpICQoRU5BQkxFX1JFR0lT
VEVSX1BST1RPQ09MX0hBTkRMRVIpICQoRU5BQkxFX1FVT1RBKSAkKEVOQUJMRV9TSEFSRURfV09S
S0VSUykgJChFTkFCTEVfU1ZHKSAkKEVOQUJMRV9TVkdfQU5JTUFUSU9OKSAkKEVOQUJMRV9TVkdf
QVNfSU1BR0UpICQoRU5BQkxFX1NWR19ET01fT0JKQ19CSU5ESU5HUykgJChFTkFCTEVfU1ZHX0ZP
TlRTKSAkKEVOQUJMRV9TVkdfRk9SRUlHTl9PQkpFQ1QpICQoRU5BQkxFX1NWR19VU0UpICQoRU5B
QkxFX1ZJREVPKSAkKEVOQUJMRV9WSURFT19UUkFDSykgJChFTkFCTEVfTUVESUFfU1RBVElTVElD
UykgJChFTkFCTEVfV0VCX0FVRElPKSAkKEVOQUJMRV9XRUJfU09DS0VUUykgJChFTkFCTEVfV0VC
X1RJTUlORykgJChFTkFCTEVfV09SS0VSUykgJChFTkFCTEVfWEhUTUxNUCkgJChFTkFCTEVfWFBB
VEgpICQoRU5BQkxFX1hTTFQpOworRkVBVFVSRV9ERUZJTkVTID0gJChFTkFCTEVfTElOS19QUkVG
RVRDSCkgJChFTkFCTEVfQUNDRUxFUkFURURfMkRfQ0FOVkFTKSAkKEVOQUJMRV9XRUJHTCkgJChF
TkFCTEVfM0RfUkVOREVSSU5HKSAkKEVOQUJMRV9BTklNQVRJT05fQVBJKSAkKEVOQUJMRV9CTE9C
KSAkKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORykgJChFTkFCTEVfQ0xJRU5UX0JBU0VEX0dFT0xP
Q0FUSU9OKSAkKEVOQUJMRV9EQVRBQkFTRSkgJChFTkFCTEVfREFUQUxJU1QpICQoRU5BQkxFX0RB
VEFfVFJBTlNGRVJfSVRFTVMpICQoRU5BQkxFX0RFVEFJTFMpICQoRU5BQkxFX0RFVklDRV9PUklF
TlRBVElPTikgJChFTkFCTEVfRElSRUNUT1JZX1VQTE9BRCkgJChFTkFCTEVfRE9NX1NUT1JBR0Up
ICQoRU5BQkxFX0VWRU5UU09VUkNFKSAkKEVOQUJMRV9GSUxURVJTKSAkKEVOQUJMRV9GSUxFX1NZ
U1RFTSkgJChFTkFCTEVfRlVMTFNDUkVFTl9BUEkpICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVO
QUJMRV9JQ09OREFUQUJBU0UpICQoRU5BQkxFX0lOREVYRURfREFUQUJBU0UpICQoRU5BQkxFX0lO
UFVUX1NQRUVDSCkgJChFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dFUikgJChFTkFCTEVfTUFUSE1M
KSAkKEVOQUJMRV9NRVRFUl9UQUcpICQoRU5BQkxFX05PVElGSUNBVElPTlMpICQoRU5BQkxFX09G
RkxJTkVfV0VCX0FQUExJQ0FUSU9OUykgJChFTkFCTEVfUEFHRV9WSVNJQklMSVRZX0FQSSkgJChF
TkFCTEVfUFJPR1JFU1NfVEFHKSAkKEVOQUJMRV9SRUdJU1RFUl9QUk9UT0NPTF9IQU5ETEVSKSAk
KEVOQUJMRV9RVU9UQSkgJChFTkFCTEVfU0hBUkVEX1dPUktFUlMpICQoRU5BQkxFX1NWRykgJChF
TkFCTEVfU1ZHX0FOSU1BVElPTikgJChFTkFCTEVfU1ZHX0FTX0lNQUdFKSAkKEVOQUJMRV9TVkdf
RE9NX09CSkNfQklORElOR1MpICQoRU5BQkxFX1NWR19GT05UUykgJChFTkFCTEVfU1ZHX0ZPUkVJ
R05fT0JKRUNUKSAkKEVOQUJMRV9TVkdfVVNFKSAkKEVOQUJMRV9UT1VDSF9JQ09OX0xPQURJTkcp
ICQoRU5BQkxFX1ZJREVPKSAkKEVOQUJMRV9WSURFT19UUkFDSykgJChFTkFCTEVfTUVESUFfU1RB
VElTVElDUykgJChFTkFCTEVfV0VCX0FVRElPKSAkKEVOQUJMRV9XRUJfU09DS0VUUykgJChFTkFC
TEVfV0VCX1RJTUlORykgJChFTkFCTEVfV09SS0VSUykgJChFTkFCTEVfWEhUTUxNUCkgJChFTkFC
TEVfWFBBVEgpICQoRU5BQkxFX1hTTFQpOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5jcHAJKHJldmlzaW9uIDg1NjMxKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQxOCw3ICs0MTgsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJl
CiAgICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRSZWNlaXZlVGl0
bGVGb3JGcmFtZShtX2ZyYW1lLT5mcmFtZUlEKCksIHRpdGxlLnN0cmluZygpLCBJbmplY3RlZEJ1
bmRsZVVzZXJNZXNzYWdlRW5jb2Rlcih1c2VyRGF0YS5nZXQoKSkpKTsKIH0KIAotdm9pZCBXZWJG
cmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygpCit2b2lkIFdlYkZyYW1l
TG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENoYW5nZUljb25zKFdlYkNvcmU6Okljb25UeXBlKQog
ewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5oCShyZXZpc2lvbiA4NTYzMSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtODUs
NyArODUsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVJ
Y29uKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkU3RhcnRQcm92aXNpb25hbExvYWQo
KTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgV2ViQ29y
ZTo6U3RyaW5nV2l0aERpcmVjdGlvbiYpOwotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENo
YW5nZUljb25zKCk7CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoV2Vi
Q29yZTo6SWNvblR5cGUpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENvbW1pdExvYWQo
KTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGYWlsUHJvdmlzaW9uYWxMb2FkKGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRG
YWlsTG9hZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZwkocmV2aXNpb24gODU2NTQpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDExLTA0LTIyICBU
YW8gQmFpICA8bWljaGFlbGJhaUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUG9wdWxhdGUgdG91Y2gtaWNvbiB1cmwgdG8gRnJh
bWVMb2FkZXJDbGllbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTU5MTQzCisKKyAgICAgICAgUmVzcGVjdGVkIHRoZSBjaGFuZ2Ugb2YgRnJhbWVMb2Fk
ZXJDbGllbnQuCisKKyAgICAgICAgKiBzcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnRJbXBsOjpkaXNwYXRjaERpZENoYW5nZUlj
b25zKToKKyAgICAgICAgKiBzcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmg6CisKIDIwMTEtMDUt
MDMgIEp1bGllbiBDaGFmZnJhaXggIDxqY2hhZmZyYWl4QGNvZGVhdXJvcmEub3JnPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IERpbWl0cmkgR2xhemtvdi4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcAkocmV2aXNpb24g
ODU2MzEpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudElt
cGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03ODAsNyArNzgwLDcgQEAgdm9pZCBGcmFtZUxvYWRl
ckNsaWVudEltcGw6OmRpc3BhdGNoRGlkUgogICAgICAgICBtX3dlYkZyYW1lLT5jbGllbnQoKS0+
ZGlkUmVjZWl2ZVRpdGxlKG1fd2ViRnJhbWUsIHRpdGxlLnN0cmluZygpLCB0aXRsZS5kaXJlY3Rp
b24oKSA9PSBMVFIgPyBXZWJUZXh0RGlyZWN0aW9uTGVmdFRvUmlnaHQgOiBXZWJUZXh0RGlyZWN0
aW9uUmlnaHRUb0xlZnQpOwogfQogCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6ZGlzcGF0
Y2hEaWRDaGFuZ2VJY29ucygpCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6ZGlzcGF0Y2hE
aWRDaGFuZ2VJY29ucyhXZWJDb3JlOjpJY29uVHlwZSB0eXBlKQogewogICAgIGlmIChtX3dlYkZy
YW1lLT5jbGllbnQoKSkKICAgICAgICAgbV93ZWJGcmFtZS0+Y2xpZW50KCktPmRpZENoYW5nZUlj
b25zKG1fd2ViRnJhbWUpOwpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVM
b2FkZXJDbGllbnRJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmgJKHJldmlzaW9uIDg1NjMxKQorKysgU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEwNSw3ICsxMDUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlk
UmVjZWl2ZUljb24oKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lv
bmFsTG9hZCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25z
dCBXZWJDb3JlOjpTdHJpbmdXaXRoRGlyZWN0aW9uJik7Ci0gICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoRGlkQ2hhbmdlSWNvbnMoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VJ
Y29ucyhXZWJDb3JlOjpJY29uVHlwZSk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ29t
bWl0TG9hZCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxQcm92aXNpb25hbExv
YWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNw
YXRjaERpZEZhaWxMb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Vm
bC9DaGFuZ2VMb2cJKHJldmlzaW9uIDg1NjU0KQorKysgU291cmNlL1dlYktpdC9lZmwvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTEtMDQtMjIgIFRhbyBCYWkg
IDxtaWNoYWVsYmFpQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBQb3B1bGF0ZSB0b3VjaC1pY29uIHVybCB0byBGcmFtZUxvYWRl
ckNsaWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NTkxNDMKKworICAgICAgICBSZXNwZWN0IHRoZSBpbnRlcmZhY2UgY2hhbmdlIGluIEZyYW1lTG9h
ZGVyQ2xpZW50CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVm
bC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hE
aWRDaGFuZ2VJY29ucyk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGll
bnRFZmwuaDoKKwogMjAxMS0wNS0wMyAgTGVhbmRybyBQZXJlaXJhICA8bGVhbmRyb0Bwcm9mdXNp
b24ubW9iaT4KIAogICAgICAgICBbRUZMXSBVbnJldmlld2VkIGJ1aWxkIGZpeCBmb3IgTkVUV09S
S19CQUNLRU5EPWN1cmwuCkluZGV4OiBTb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9G
cmFtZUxvYWRlckNsaWVudEVmbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9lZmwv
V2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwCShyZXZpc2lvbiA4NTYzMSkK
KysrIFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZs
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTg3LDcgKzU4Nyw3IEBAIHZvaWQgRnJhbWVMb2FkZXJD
bGllbnRFZmw6OmRpc3BhdGNoRGlkUmUKICAgICBld2tfdmlld190aXRsZV9zZXQobV92aWV3LCBj
cy5kYXRhKCkpOwogfQogCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERpZENo
YW5nZUljb25zKCkKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGlkQ2hhbmdl
SWNvbnMoV2ViQ29yZTo6SWNvblR5cGUpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZs
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVM
b2FkZXJDbGllbnRFZmwuaAkocmV2aXNpb24gODU2MzEpCisrKyBTb3VyY2UvV2ViS2l0L2VmbC9X
ZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
MDMsNyArMTAzLDcgQEAgY2xhc3MgRnJhbWVMb2FkZXJDbGllbnRFZmwgOiBwdWJsaWMgRnJhbQog
ICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVJY29uKCk7CiAgICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoRGlkU3RhcnRQcm92aXNpb25hbExvYWQoKTsKICAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYpOwotICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZUljb25zKCk7CisgICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoV2ViQ29yZTo6SWNvblR5cGUpOwogICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaERpZENvbW1pdExvYWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hE
aWRGYWlsUHJvdmlzaW9uYWxMb2FkKGNvbnN0IFJlc291cmNlRXJyb3ImKTsKICAgICB2aXJ0dWFs
IHZvaWQgZGlzcGF0Y2hEaWRGYWlsTG9hZChjb25zdCBSZXNvdXJjZUVycm9yJik7CkluZGV4OiBT
b3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9n
dGsvQ2hhbmdlTG9nCShyZXZpc2lvbiA4NTY1NCkKKysrIFNvdXJjZS9XZWJLaXQvZ3RrL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDExLTA0LTIyICBUYW8gQmFp
ICA8bWljaGFlbGJhaUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgUG9wdWxhdGUgdG91Y2gtaWNvbiB1cmwgdG8gRnJhbWVMb2Fk
ZXJDbGllbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTU5MTQzCisKKyAgICAgICAgUmVzcGVjdCB0aGUgaW50ZXJmYWNlIGNoYW5nZSBpbiBGcmFtZUxv
YWRlckNsaWVudC4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50
R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlk
Q2hhbmdlSWNvbnMpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50
R3RrLmg6CisKIDIwMTEtMDUtMDMgIEp1bGllbiBDaGFmZnJhaXggIDxqY2hhZmZyYWl4QGNvZGVh
dXJvcmEub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERpbWl0cmkgR2xhemtvdi4KSW5kZXg6
IFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxv
YWRlckNsaWVudEd0ay5jcHAJKHJldmlzaW9uIDg1NjMxKQorKysgU291cmNlL1dlYktpdC9ndGsv
V2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC05NjksNyArOTY5LDcgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRSZWNl
aQogICAgIH0KIH0KIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDaGFuZ2VJ
Y29ucygpCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENoYW5nZUljb25zKFdl
YkNvcmU6Okljb25UeXBlKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xp
ZW50R3RrLmgJKHJldmlzaW9uIDg1NjMxKQorKysgU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1
cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuaAkod29ya2luZyBjb3B5KQpAQCAtODIsNyArODIs
NyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlk
UmVjZWl2ZUljb24oKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkU3RhcnRQcm92
aXNpb25hbExvYWQoKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVRp
dGxlKGNvbnN0IFdlYkNvcmU6OlN0cmluZ1dpdGhEaXJlY3Rpb24mKTsKLSAgICAgICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRp
c3BhdGNoRGlkQ2hhbmdlSWNvbnMoV2ViQ29yZTo6SWNvblR5cGUpOwogICAgICAgICB2aXJ0dWFs
IHZvaWQgZGlzcGF0Y2hEaWRDb21taXRMb2FkKCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNw
YXRjaERpZEZhaWxQcm92aXNpb25hbExvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYp
OwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGYWlsTG9hZChjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yJik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiA4NTY1NCkK
KysrIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDE3IEBACisyMDExLTA0LTIyICBUYW8gQmFpICA8bWljaGFlbGJhaUBjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUG9wdWxhdGUg
dG91Y2gtaWNvbiB1cmwgdG8gRnJhbWVMb2FkZXJDbGllbnQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU5MTQzCisKKyAgICAgICAgUmVzcGVjdCB0aGUg
aW50ZXJmYWNlIGNoYW5nZSBpbiBGcmFtZUxvYWRlckNsaWVudC4KKworICAgICAgICAqIENvbmZp
Z3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnOgorICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQubW06CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlz
cGF0Y2hEaWRDaGFuZ2VJY29ucyk6CisKIDIwMTEtMDUtMDMgIEp1bGllbiBDaGFmZnJhaXggIDxq
Y2hhZmZyYWl4QGNvZGVhdXJvcmEub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERpbWl0cmkg
R2xhemtvdi4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVE
ZWZpbmVzLnhjY29uZmlnCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL0NvbmZpZ3Vy
YXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCShyZXZpc2lvbiA4NTYzMSkKKysrIFNvdXJj
ZS9XZWJLaXQvbWFjL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMTgsNiArMTE4LDggQEAgRU5BQkxFX1ZJREVPX1RSQUNLID0gOwogCiBF
TkFCTEVfTUVESUFfU1RBVElTVElDUyA9IDsKIAorRU5BQkxFX1RPVUNIX0lDT05fTE9BRElORyA9
IDsKKwogRU5BQkxFX1dFQl9BVURJTyA9IDsKIAogRU5BQkxFX1dFQl9TT0NLRVRTID0gJChFTkFC
TEVfV0VCX1NPQ0tFVFNfJChSRUFMX1BMQVRGT1JNX05BTUUpKTsKQEAgLTEzMiw0ICsxMzQsNCBA
QCBFTkFCTEVfWEhUTUxNUCA9IDsKIEVOQUJMRV9YUEFUSCA9IEVOQUJMRV9YUEFUSDsKIEVOQUJM
RV9YU0xUID0gRU5BQkxFX1hTTFQ7CiAKLUZFQVRVUkVfREVGSU5FUyA9ICQoRU5BQkxFX0xJTktf
UFJFRkVUQ0gpICQoRU5BQkxFX0FDQ0VMRVJBVEVEXzJEX0NBTlZBUykgJChFTkFCTEVfV0VCR0wp
ICQoRU5BQkxFXzNEX1JFTkRFUklORykgJChFTkFCTEVfQU5JTUFUSU9OX0FQSSkgJChFTkFCTEVf
QkxPQikgJChFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcpICQoRU5BQkxFX0NMSUVOVF9CQVNFRF9H
RU9MT0NBVElPTikgJChFTkFCTEVfREFUQUJBU0UpICQoRU5BQkxFX0RBVEFMSVNUKSAkKEVOQUJM
RV9EQVRBX1RSQU5TRkVSX0lURU1TKSAkKEVOQUJMRV9ERVRBSUxTKSAkKEVOQUJMRV9ERVZJQ0Vf
T1JJRU5UQVRJT04pICQoRU5BQkxFX0RJUkVDVE9SWV9VUExPQUQpICQoRU5BQkxFX0RPTV9TVE9S
QUdFKSAkKEVOQUJMRV9FVkVOVFNPVVJDRSkgJChFTkFCTEVfRklMVEVSUykgJChFTkFCTEVfRklM
RV9TWVNURU0pICQoRU5BQkxFX0ZVTExTQ1JFRU5fQVBJKSAkKEVOQUJMRV9HRU9MT0NBVElPTikg
JChFTkFCTEVfSUNPTkRBVEFCQVNFKSAkKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFKSAkKEVOQUJM
RV9JTlBVVF9TUEVFQ0gpICQoRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIpICQoRU5BQkxFX01B
VEhNTCkgJChFTkFCTEVfTUVURVJfVEFHKSAkKEVOQUJMRV9OT1RJRklDQVRJT05TKSAkKEVOQUJM
RV9PRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpICQoRU5BQkxFX1BBR0VfVklTSUJJTElUWV9BUEkp
ICQoRU5BQkxFX1BST0dSRVNTX1RBRykgJChFTkFCTEVfUkVHSVNURVJfUFJPVE9DT0xfSEFORExF
UikgJChFTkFCTEVfUVVPVEEpICQoRU5BQkxFX1NIQVJFRF9XT1JLRVJTKSAkKEVOQUJMRV9TVkcp
ICQoRU5BQkxFX1NWR19BTklNQVRJT04pICQoRU5BQkxFX1NWR19BU19JTUFHRSkgJChFTkFCTEVf
U1ZHX0RPTV9PQkpDX0JJTkRJTkdTKSAkKEVOQUJMRV9TVkdfRk9OVFMpICQoRU5BQkxFX1NWR19G
T1JFSUdOX09CSkVDVCkgJChFTkFCTEVfU1ZHX1VTRSkgJChFTkFCTEVfVklERU8pICQoRU5BQkxF
X1ZJREVPX1RSQUNLKSAkKEVOQUJMRV9NRURJQV9TVEFUSVNUSUNTKSAkKEVOQUJMRV9XRUJfQVVE
SU8pICQoRU5BQkxFX1dFQl9TT0NLRVRTKSAkKEVOQUJMRV9XRUJfVElNSU5HKSAkKEVOQUJMRV9X
T1JLRVJTKSAkKEVOQUJMRV9YSFRNTE1QKSAkKEVOQUJMRV9YUEFUSCkgJChFTkFCTEVfWFNMVCk7
CitGRUFUVVJFX0RFRklORVMgPSAkKEVOQUJMRV9MSU5LX1BSRUZFVENIKSAkKEVOQUJMRV9BQ0NF
TEVSQVRFRF8yRF9DQU5WQVMpICQoRU5BQkxFX1dFQkdMKSAkKEVOQUJMRV8zRF9SRU5ERVJJTkcp
ICQoRU5BQkxFX0FOSU1BVElPTl9BUEkpICQoRU5BQkxFX0JMT0IpICQoRU5BQkxFX0NIQU5ORUxf
TUVTU0FHSU5HKSAkKEVOQUJMRV9DTElFTlRfQkFTRURfR0VPTE9DQVRJT04pICQoRU5BQkxFX0RB
VEFCQVNFKSAkKEVOQUJMRV9EQVRBTElTVCkgJChFTkFCTEVfREFUQV9UUkFOU0ZFUl9JVEVNUykg
JChFTkFCTEVfREVUQUlMUykgJChFTkFCTEVfREVWSUNFX09SSUVOVEFUSU9OKSAkKEVOQUJMRV9E
SVJFQ1RPUllfVVBMT0FEKSAkKEVOQUJMRV9ET01fU1RPUkFHRSkgJChFTkFCTEVfRVZFTlRTT1VS
Q0UpICQoRU5BQkxFX0ZJTFRFUlMpICQoRU5BQkxFX0ZJTEVfU1lTVEVNKSAkKEVOQUJMRV9GVUxM
U0NSRUVOX0FQSSkgJChFTkFCTEVfR0VPTE9DQVRJT04pICQoRU5BQkxFX0lDT05EQVRBQkFTRSkg
JChFTkFCTEVfSU5ERVhFRF9EQVRBQkFTRSkgJChFTkFCTEVfSU5QVVRfU1BFRUNIKSAkKEVOQUJM
RV9KQVZBU0NSSVBUX0RFQlVHR0VSKSAkKEVOQUJMRV9NQVRITUwpICQoRU5BQkxFX01FVEVSX1RB
RykgJChFTkFCTEVfTk9USUZJQ0FUSU9OUykgJChFTkFCTEVfT0ZGTElORV9XRUJfQVBQTElDQVRJ
T05TKSAkKEVOQUJMRV9QQUdFX1ZJU0lCSUxJVFlfQVBJKSAkKEVOQUJMRV9QUk9HUkVTU19UQUcp
ICQoRU5BQkxFX1JFR0lTVEVSX1BST1RPQ09MX0hBTkRMRVIpICQoRU5BQkxFX1FVT1RBKSAkKEVO
QUJMRV9TSEFSRURfV09SS0VSUykgJChFTkFCTEVfU1ZHKSAkKEVOQUJMRV9TVkdfQU5JTUFUSU9O
KSAkKEVOQUJMRV9TVkdfQVNfSU1BR0UpICQoRU5BQkxFX1NWR19ET01fT0JKQ19CSU5ESU5HUykg
JChFTkFCTEVfU1ZHX0ZPTlRTKSAkKEVOQUJMRV9TVkdfRk9SRUlHTl9PQkpFQ1QpICQoRU5BQkxF
X1NWR19VU0UpICQoRU5BQkxFX1RPVUNIX0lDT05fTE9BRElORykgJChFTkFCTEVfVklERU8pICQo
RU5BQkxFX1ZJREVPX1RSQUNLKSAkKEVOQUJMRV9NRURJQV9TVEFUSVNUSUNTKSAkKEVOQUJMRV9X
RUJfQVVESU8pICQoRU5BQkxFX1dFQl9TT0NLRVRTKSAkKEVOQUJMRV9XRUJfVElNSU5HKSAkKEVO
QUJMRV9XT1JLRVJTKSAkKEVOQUJMRV9YSFRNTE1QKSAkKEVOQUJMRV9YUEFUSCkgJChFTkFCTEVf
WFNMVCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgJKHJldmlzaW9uIDg1NjMxKQorKysgU291cmNlL1dl
YktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtMTAyLDcgKzEwMiw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoRGlkUmVjZWl2ZUljb24oKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRTdGFydFBy
b3Zpc2lvbmFsTG9hZCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRs
ZShjb25zdCBXZWJDb3JlOjpTdHJpbmdXaXRoRGlyZWN0aW9uJik7Ci0gICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRD
aGFuZ2VJY29ucyhXZWJDb3JlOjpJY29uVHlwZSk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
RGlkQ29tbWl0TG9hZCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxQcm92aXNp
b25hbExvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwogICAgIHZpcnR1YWwgdm9p
ZCBkaXNwYXRjaERpZEZhaWxMb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50Lm1tCShyZXZpc2lvbiA4NTYzMSkKKysrIFNvdXJjZS9XZWJLaXQvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCSh3b3JraW5nIGNvcHkpCkBA
IC02MzMsNyArNjMzLDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRS
ZQogICAgICAgICBDYWxsRnJhbWVMb2FkRGVsZWdhdGUoaW1wbGVtZW50YXRpb25zLT5kaWRSZWNl
aXZlVGl0bGVGb3JGcmFtZUZ1bmMsIHdlYlZpZXcsIEBzZWxlY3Rvcih3ZWJWaWV3OmRpZFJlY2Vp
dmVUaXRsZTpmb3JGcmFtZTopLCAoTlNTdHJpbmcgKil0aXRsZS5zdHJpbmcoKSwgbV93ZWJGcmFt
ZS5nZXQoKSk7CiB9CiAKLXZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ2hh
bmdlSWNvbnMoKQordm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDaGFuZ2VJ
Y29ucyhXZWJDb3JlOjpJY29uVHlwZSkKIHsKICAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlz
IHRvIGFsbG93IGNvbnRhaW5lciB0byB1cGRhdGUgZmF2aWNvbi4KIH0KSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvcXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQvQ2hhbmdl
TG9nCShyZXZpc2lvbiA4NTY1NCkKKysrIFNvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTEtMDQtMjIgIFRhbyBCYWkgIDxtaWNoYWVs
YmFpQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBQb3B1bGF0ZSB0b3VjaC1pY29uIHVybCB0byBGcmFtZUxvYWRlckNsaWVudAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTkxNDMKKwor
ICAgICAgICBSZXNwZWN0IHRoZSBpbnRlcmZhY2UgY2hhbmdlIGluIEZyYW1lTG9hZGVyQ2xpZW50
LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERpZENoYW5nZUlj
b25zKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0Lmg6CisK
IDIwMTEtMDUtMDMgIEp1bGllbiBDaGFmZnJhaXggIDxqY2hhZmZyYWl4QGNvZGVhdXJvcmEub3Jn
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IERpbWl0cmkgR2xhemtvdi4KSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0
LmNwcAkocmV2aXNpb24gODU2MzEpCisrKyBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0
L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NTksNyArNDU5LDcg
QEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERpZFJlYwogfQogCiAKLXZvaWQg
RnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygpCit2b2lkIEZyYW1l
TG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoV2ViQ29yZTo6SWNvblR5cGUp
CiB7CiAgICAgaWYgKGR1bXBGcmFtZUxvYWRlckNhbGxiYWNrcykKICAgICAgICAgcHJpbnRmKCIl
cyAtIGRpZENoYW5nZUljb25zXG4iLCBxUHJpbnRhYmxlKGRydERlc2NyaXB0aW9uU3VpdGFibGVG
b3JUZXN0UmVzdWx0KG1fZnJhbWUpKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVT
dXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaAkocmV2aXNpb24gODU2MzEp
CisrKyBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQu
aAkod29ya2luZyBjb3B5KQpAQCAtMTExLDcgKzExMSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbigpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRj
aERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlk
UmVjZWl2ZVRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mKTsKLSAgICB2aXJ0dWFsIHZv
aWQgZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygpOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERp
ZENoYW5nZUljb25zKFdlYkNvcmU6Okljb25UeXBlKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0
Y2hEaWRDb21taXRMb2FkKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbFByb3Zp
c2lvbmFsTG9hZChjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoRGlkRmFpbExvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwpJbmRleDogU291
cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2lu
L0NoYW5nZUxvZwkocmV2aXNpb24gODU2NTQpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAxMS0wNC0yMiAgVGFvIEJhaSAg
PG1pY2hhZWxiYWlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFBvcHVsYXRlIHRvdWNoLWljb24gdXJsIHRvIEZyYW1lTG9hZGVy
Q2xpZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01
OTE0MworCisgICAgICAgIFJlc3BlY3QgdGhlIGludGVyZmFjZSBjaGFuZ2UgaW4gRnJhbWVMb2Fk
ZXJDbGllbnQuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5jcHA6CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDaGFuZ2VJ
Y29ucyk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoK
KwogMjAxMS0wNS0wMyAgQWRhbSBSb2JlbiAgPGFyb2JlbkBhcHBsZS5jb20+CiAKICAgICAgICAg
Rml4IG1vc3Qgc3RyaWN0IFBhc3NPd25QdHIgdmlvbGF0aW9ucyBvbiBXaW5kb3dzCkluZGV4OiBT
b3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuY3BwCShyZXZpc2lvbiA4NTYzMSkKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzczLDggKzM3MywxMSBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJl
CiAgICAgICAgIGZyYW1lTG9hZERlbGVnYXRlLT5kaWRSZWNlaXZlVGl0bGUod2ViVmlldywgQlN0
cmluZyh0aXRsZS5zdHJpbmcoKSksIG1fd2ViRnJhbWUpOwogfQogCi12b2lkIFdlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpkaXNwYXRjaERpZENoYW5nZUljb25zKCkKK3ZvaWQgV2ViRnJhbWVMb2FkZXJD
bGllbnQ6OmRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoV2ViQ29yZTo6SWNvblR5cGUgdHlwZSkKIHsK
KyAgICBpZiAodHlwZSAhPSBXZWJDb3JlOjpGYXZpY29uKQorICAgICAgICByZXR1cm47CisKICAg
ICBXZWJWaWV3KiB3ZWJWaWV3ID0gbV93ZWJGcmFtZS0+d2ViVmlldygpOwogICAgIENPTVB0cjxJ
V2ViRnJhbWVMb2FkRGVsZWdhdGVQcml2YXRlPiBmcmFtZUxvYWREZWxlZ2F0ZVByaXY7CiAgICAg
aWYgKEZBSUxFRCh3ZWJWaWV3LT5mcmFtZUxvYWREZWxlZ2F0ZVByaXZhdGUoJmZyYW1lTG9hZERl
bGVnYXRlUHJpdikpIHx8ICFmcmFtZUxvYWREZWxlZ2F0ZVByaXYpCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmgJKHJldmlzaW9uIDg1NjMxKQorKysgU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNzAsNyArNzAsNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUljb24oKTsKICAgICB2
aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpOwogICAgIHZpcnR1
YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBXZWJDb3JlOjpTdHJpbmdXaXRo
RGlyZWN0aW9uJik7Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoKTsK
KyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucyhXZWJDb3JlOjpJY29uVHlw
ZSk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ29tbWl0TG9hZCgpOwogICAgIHZpcnR1
YWwgdm9pZCBkaXNwYXRjaERpZEZpbmlzaERvY3VtZW50TG9hZCgpOwogICAgIHZpcnR1YWwgdm9p
ZCBkaXNwYXRjaERpZEZpbmlzaExvYWQoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luY2UvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luY2UvQ2hhbmdlTG9nCShyZXZp
c2lvbiA4NTY1NCkKKysrIFNvdXJjZS9XZWJLaXQvd2luY2UvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTEtMDQtMjIgIFRhbyBCYWkgIDxtaWNoYWVsYmFpQGNo
cm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBQb3B1bGF0ZSB0b3VjaC1pY29uIHVybCB0byBGcmFtZUxvYWRlckNsaWVudAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTkxNDMKKworICAgICAg
ICBSZXNwZWN0IHRoZSBpbnRlcmZhY2UgY2hhbmdlIGluIEZyYW1lTG9hZGVyQ2xpZW50LgorCisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXaW5DRS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50V2luQ0U6OmRpc3BhdGNoRGlkQ2hhbmdlSWNv
bnMpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V2luQ0UuaDoK
KwogMjAxMS0wNS0wMSAgUGF0cmljayBHYW5zdGVyZXIgIDxwYXJvZ2FAd2Via2l0Lm9yZz4KIAog
ICAgICAgICBbV0lOXSBVbnJldmlld2VkIGJ1aWxkZml4IGFmdGVyIHI4NTQzNC4KSW5kZXg6IFNv
dXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXaW5DRS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9GcmFt
ZUxvYWRlckNsaWVudFdpbkNFLmNwcAkocmV2aXNpb24gODU2MzEpCisrKyBTb3VyY2UvV2ViS2l0
L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V2luQ0UuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zNzYsNyArMzc2LDcgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudFdpbkNFOjpk
aXNwYXRjaERpZAogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXJD
bGllbnRXaW5DRTo6ZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygpCit2b2lkIEZyYW1lTG9hZGVyQ2xp
ZW50V2luQ0U6OmRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoV2ViQ29yZTo6SWNvblR5cGUpCiB7CiAg
ICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29y
ZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXaW5DRS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXaW5DRS5oCShyZXZp
c2lvbiA4NTYzMSkKKysrIFNvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvRnJhbWVM
b2FkZXJDbGllbnRXaW5DRS5oCSh3b3JraW5nIGNvcHkpCkBAIC03Nyw3ICs3Nyw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbigpOwogICAgIHZpcnR1
YWwgdm9pZCBkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCk7CiAgICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFdlYkNvcmU6OlN0cmluZ1dpdGhEaXJl
Y3Rpb24mKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygpOworICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZUljb25zKFdlYkNvcmU6Okljb25UeXBlKTsK
ICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDb21taXRMb2FkKCk7CiAgICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9hZChjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yJik7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbExvYWQoY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvciYpOwpJbmRleDogU291cmNlL1dlYktpdC93eC9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93eC9DaGFuZ2VMb2cJKHJldmlzaW9uIDg1NjU0
KQorKysgU291cmNlL1dlYktpdC93eC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwxNiBAQAorMjAxMS0wNC0yMiAgVGFvIEJhaSAgPG1pY2hhZWxiYWlAY2hyb21pdW0ub3JnPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBvcHVsYXRl
IHRvdWNoLWljb24gdXJsIHRvIEZyYW1lTG9hZGVyQ2xpZW50CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01OTE0MworCisgICAgICAgIFJlc3BlY3QgdGhl
IGludGVyZmFjZSBjaGFuZ2UgaW4gRnJhbWVMb2FkZXJDbGllbnQuCisKKyAgICAgICAgKiBXZWJL
aXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVMb2FkZXJDbGllbnRXeDo6ZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucyk6CisgICAgICAgICogV2Vi
S2l0U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFd4Lmg6CisKIDIwMTEtMDQtMjMgIEtldmluIE9s
bGl2aWVyICA8a2V2aW5vQHRoZW9sbGl2aWVycy5jb20+CiAKICAgICAgICAgW3d4XSBVbnJldmll
d2VkIGJ1aWxkIGZpeC4gRml4ZWQgY2FwaXRhbGl6YXRpb24gZm9yIGNhc2Ugc2Vuc2l0aXZlIGZp
bGVzeXN0ZW1zLgpJbmRleDogU291cmNlL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0ZyYW1lTG9h
ZGVyQ2xpZW50V3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd3gvV2ViS2l0U3Vw
cG9ydC9GcmFtZUxvYWRlckNsaWVudFd4LmNwcAkocmV2aXNpb24gODU2MzEpCisrKyBTb3VyY2Uv
V2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTMyNyw3ICszMjcsNyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50V3g6OmRpc3Bh
dGNoRGlkRmluCiAgICAgfQogfQogCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50V3g6OmRpc3BhdGNo
RGlkQ2hhbmdlSWNvbnMoKQordm9pZCBGcmFtZUxvYWRlckNsaWVudFd4OjpkaXNwYXRjaERpZENo
YW5nZUljb25zKFdlYkNvcmU6Okljb25UeXBlKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9
CkluZGV4OiBTb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRX
eC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9GcmFtZUxv
YWRlckNsaWVudFd4LmgJKHJldmlzaW9uIDg1NjMxKQorKysgU291cmNlL1dlYktpdC93eC9XZWJL
aXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guaAkod29ya2luZyBjb3B5KQpAQCAtMTA5LDcg
KzEwOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoRGlkRmluaXNoTG9hZCgpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGaXJz
dExheW91dCgpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGaXJzdFZpc3VhbGx5
Tm9uRW1wdHlMYXlvdXQoKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdl
SWNvbnMoKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoV2Vi
Q29yZTo6SWNvblR5cGUpOwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFNob3coKTsK
ICAgICAgICAgdmlydHVhbCB2b2lkIGNhbmNlbFBvbGljeUNoZWNrKCk7CkluZGV4OiBUb29scy9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA4NTY1NCkK
KysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDEx
LTA1LTAzICBUYW8gQmFpICA8bWljaGFlbGJhaUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUG9wdWxhdGUgdG91Y2gtaWNvbiB1
cmwgdG8gRnJhbWVMb2FkZXJDbGllbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTU5MTQzCisKKyAgICAgICAgRGlzYWJsZSB0b3VjaCBpY29uIGJ5IGRl
ZmF1bHQuIAorCisgICAgICAgICogU2NyaXB0cy9idWlsZC13ZWJraXQ6CisKIDIwMTEtMDUtMDMg
IEFkYW0gUm9iZW4gIDxhcm9iZW5AYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBtb3N0IHN0cmlj
dCBQYXNzT3duUHRyIHZpb2xhdGlvbnMgb24gV2luZG93cwpJbmRleDogVG9vbHMvU2NyaXB0cy9i
dWlsZC13ZWJraXQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9idWlsZC13ZWJraXQJKHJl
dmlzaW9uIDg1NjMxKQorKysgVG9vbHMvU2NyaXB0cy9idWlsZC13ZWJraXQJKHdvcmtpbmcgY29w
eSkKQEAgLTExMiw2ICsxMTIsNyBAQCBteSAoCiAgICAgJHN5c3RlbU1hbGxvY1N1cHBvcnQsCiAg
ICAgJHRpbGVkQmFja2luZ1N0b3JlU3VwcG9ydCwKICAgICAkdG91Y2hFdmVudHNTdXBwb3J0LAor
ICAgICR0b3VjaEljb25Mb2FkaW5nU3VwcG9ydCwKICAgICAkdmlkZW9TdXBwb3J0LAogICAgICR3
Y3NzU3VwcG9ydCwKICAgICAkd2ViQXVkaW9TdXBwb3J0LApAQCAtMjcyLDYgKzI3Myw5IEBAIG15
IEBmZWF0dXJlcyA9ICgKICAgICB7IG9wdGlvbiA9PiAidG91Y2gtZXZlbnRzIiwgZGVzYyA9PiAi
VG9nZ2xlIFRvdWNoIEV2ZW50cyBzdXBwb3J0IiwKICAgICAgIGRlZmluZSA9PiAiRU5BQkxFX1RP
VUNIX0VWRU5UUyIsIGRlZmF1bHQgPT4gaXNRdCgpLCB2YWx1ZSA9PiBcJHRvdWNoRXZlbnRzU3Vw
cG9ydCB9LAogCisgICAgeyBvcHRpb24gPT4gInRvdWNoLWljb24tbG9hZGluZyIsIGRlc2MgPT4g
IlRvZ2dsZSBUb3VjaCBJY29uIExvYWRpbmcgU3VwcG9ydCIsCisgICAgICBkZWZpbmUgPT4gIkVO
QUJMRV9UT1VDSF9JQ09OX0xPQURJTkciLCBkZWZhdWx0ID0+IDAsIHZhbHVlID0+IFwkdG91Y2hJ
Y29uTG9hZGluZ1N1cHBvcnQgfSwKKwogICAgIHsgb3B0aW9uID0+ICJ2aWRlbyIsIGRlc2MgPT4g
IlRvZ2dsZSBWaWRlbyBzdXBwb3J0IiwKICAgICAgIGRlZmluZSA9PiAiRU5BQkxFX1ZJREVPIiwg
ZGVmYXVsdCA9PiAoaXNBcHBsZVdlYktpdCgpIHx8IGlzR3RrKCkpLCB2YWx1ZSA9PiBcJHZpZGVv
U3VwcG9ydCB9LAogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>92252</attachid>
            <date>2011-05-04 08:57:20 -0700</date>
            <delta_ts>2011-05-04 14:03:06 -0700</delta_ts>
            <desc>Try to fix the build error again</desc>
            <filename>patch.13</filename>
            <type>text/plain</type>
            <size>67922</size>
            <attacher>michaelbai</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gODU3NTEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAK
KzIwMTEtMDUtMDMgIFRhbyBCYWkgIDxtaWNoYWVsYmFpQGNocm9taXVtLm9yZz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQb3B1bGF0ZSB0b3VjaC1p
Y29uIHVybCB0byBGcmFtZUxvYWRlckNsaWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTkxNDMKKworICAgICAgICAqIENvbmZpZ3VyYXRpb25zL0Zl
YXR1cmVEZWZpbmVzLnhjY29uZmlnOgorCiAyMDExLTA1LTA0ICBBZGFtIFJvYmVuICA8YXJvYmVu
QGFwcGxlLmNvbT4KIAogICAgICAgICBBbm90aGVyIGF0dGVtcHRlZCBidWlsZCBmaXgKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2Nv
bmZpZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ29uZmlndXJhdGlvbnMv
RmVhdHVyZURlZmluZXMueGNjb25maWcJKHJldmlzaW9uIDg1NzUxKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCSh3b3JraW5n
IGNvcHkpCkBAIC0xMTcsNiArMTE3LDggQEAgRU5BQkxFX1ZJREVPX1RSQUNLID0gOwogCiBFTkFC
TEVfTUVESUFfU1RBVElTVElDUyA9IDsKIAorRU5BQkxFX1RPVUNIX0lDT05fTE9BRElORyA9IDsK
KwogRU5BQkxFX1dFQl9BVURJTyA9IDsKIAogRU5BQkxFX1dFQl9TT0NLRVRTID0gJChFTkFCTEVf
V0VCX1NPQ0tFVFNfJChSRUFMX1BMQVRGT1JNX05BTUUpKTsKQEAgLTEzMSw0ICsxMzMsNCBAQCBF
TkFCTEVfWEhUTUxNUCA9IDsKIEVOQUJMRV9YUEFUSCA9IEVOQUJMRV9YUEFUSDsKIEVOQUJMRV9Y
U0xUID0gRU5BQkxFX1hTTFQ7CiAKLUZFQVRVUkVfREVGSU5FUyA9ICQoRU5BQkxFX0xJTktfUFJF
RkVUQ0gpICQoRU5BQkxFX0FDQ0VMRVJBVEVEXzJEX0NBTlZBUykgJChFTkFCTEVfV0VCR0wpICQo
RU5BQkxFXzNEX1JFTkRFUklORykgJChFTkFCTEVfQU5JTUFUSU9OX0FQSSkgJChFTkFCTEVfQkxP
QikgJChFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcpICQoRU5BQkxFX0NMSUVOVF9CQVNFRF9HRU9M
T0NBVElPTikgJChFTkFCTEVfREFUQUJBU0UpICQoRU5BQkxFX0RBVEFMSVNUKSAkKEVOQUJMRV9E
QVRBX1RSQU5TRkVSX0lURU1TKSAkKEVOQUJMRV9ERVRBSUxTKSAkKEVOQUJMRV9ERVZJQ0VfT1JJ
RU5UQVRJT04pICQoRU5BQkxFX0RJUkVDVE9SWV9VUExPQUQpICQoRU5BQkxFX0RPTV9TVE9SQUdF
KSAkKEVOQUJMRV9FVkVOVFNPVVJDRSkgJChFTkFCTEVfRklMVEVSUykgJChFTkFCTEVfRklMRV9T
WVNURU0pICQoRU5BQkxFX0ZVTExTQ1JFRU5fQVBJKSAkKEVOQUJMRV9HRU9MT0NBVElPTikgJChF
TkFCTEVfSUNPTkRBVEFCQVNFKSAkKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFKSAkKEVOQUJMRV9J
TlBVVF9TUEVFQ0gpICQoRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIpICQoRU5BQkxFX01BVEhN
TCkgJChFTkFCTEVfTUVURVJfVEFHKSAkKEVOQUJMRV9OT1RJRklDQVRJT05TKSAkKEVOQUJMRV9P
RkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpICQoRU5BQkxFX1BBR0VfVklTSUJJTElUWV9BUEkpICQo
RU5BQkxFX1BST0dSRVNTX1RBRykgJChFTkFCTEVfUkVHSVNURVJfUFJPVE9DT0xfSEFORExFUikg
JChFTkFCTEVfUVVPVEEpICQoRU5BQkxFX1NIQVJFRF9XT1JLRVJTKSAkKEVOQUJMRV9TVkcpICQo
RU5BQkxFX1NWR19BTklNQVRJT04pICQoRU5BQkxFX1NWR19BU19JTUFHRSkgJChFTkFCTEVfU1ZH
X0RPTV9PQkpDX0JJTkRJTkdTKSAkKEVOQUJMRV9TVkdfRk9OVFMpICQoRU5BQkxFX1NWR19GT1JF
SUdOX09CSkVDVCkgJChFTkFCTEVfU1ZHX1VTRSkgJChFTkFCTEVfVklERU8pICQoRU5BQkxFX1ZJ
REVPX1RSQUNLKSAkKEVOQUJMRV9NRURJQV9TVEFUSVNUSUNTKSAkKEVOQUJMRV9XRUJfQVVESU8p
ICQoRU5BQkxFX1dFQl9TT0NLRVRTKSAkKEVOQUJMRV9XRUJfVElNSU5HKSAkKEVOQUJMRV9XT1JL
RVJTKSAkKEVOQUJMRV9YSFRNTE1QKSAkKEVOQUJMRV9YUEFUSCkgJChFTkFCTEVfWFNMVCk7CitG
RUFUVVJFX0RFRklORVMgPSAkKEVOQUJMRV9MSU5LX1BSRUZFVENIKSAkKEVOQUJMRV9BQ0NFTEVS
QVRFRF8yRF9DQU5WQVMpICQoRU5BQkxFX1dFQkdMKSAkKEVOQUJMRV8zRF9SRU5ERVJJTkcpICQo
RU5BQkxFX0FOSU1BVElPTl9BUEkpICQoRU5BQkxFX0JMT0IpICQoRU5BQkxFX0NIQU5ORUxfTUVT
U0FHSU5HKSAkKEVOQUJMRV9DTElFTlRfQkFTRURfR0VPTE9DQVRJT04pICQoRU5BQkxFX0RBVEFC
QVNFKSAkKEVOQUJMRV9EQVRBTElTVCkgJChFTkFCTEVfREFUQV9UUkFOU0ZFUl9JVEVNUykgJChF
TkFCTEVfREVUQUlMUykgJChFTkFCTEVfREVWSUNFX09SSUVOVEFUSU9OKSAkKEVOQUJMRV9ESVJF
Q1RPUllfVVBMT0FEKSAkKEVOQUJMRV9ET01fU1RPUkFHRSkgJChFTkFCTEVfRVZFTlRTT1VSQ0Up
ICQoRU5BQkxFX0ZJTFRFUlMpICQoRU5BQkxFX0ZJTEVfU1lTVEVNKSAkKEVOQUJMRV9GVUxMU0NS
RUVOX0FQSSkgJChFTkFCTEVfR0VPTE9DQVRJT04pICQoRU5BQkxFX0lDT05EQVRBQkFTRSkgJChF
TkFCTEVfSU5ERVhFRF9EQVRBQkFTRSkgJChFTkFCTEVfSU5QVVRfU1BFRUNIKSAkKEVOQUJMRV9K
QVZBU0NSSVBUX0RFQlVHR0VSKSAkKEVOQUJMRV9NQVRITUwpICQoRU5BQkxFX01FVEVSX1RBRykg
JChFTkFCTEVfTk9USUZJQ0FUSU9OUykgJChFTkFCTEVfT0ZGTElORV9XRUJfQVBQTElDQVRJT05T
KSAkKEVOQUJMRV9QQUdFX1ZJU0lCSUxJVFlfQVBJKSAkKEVOQUJMRV9QUk9HUkVTU19UQUcpICQo
RU5BQkxFX1JFR0lTVEVSX1BST1RPQ09MX0hBTkRMRVIpICQoRU5BQkxFX1FVT1RBKSAkKEVOQUJM
RV9TSEFSRURfV09SS0VSUykgJChFTkFCTEVfU1ZHKSAkKEVOQUJMRV9TVkdfQU5JTUFUSU9OKSAk
KEVOQUJMRV9TVkdfQVNfSU1BR0UpICQoRU5BQkxFX1NWR19ET01fT0JKQ19CSU5ESU5HUykgJChF
TkFCTEVfU1ZHX0ZPTlRTKSAkKEVOQUJMRV9TVkdfRk9SRUlHTl9PQkpFQ1QpICQoRU5BQkxFX1NW
R19VU0UpICQoRU5BQkxFX1RPVUNIX0lDT05fTE9BRElORykgJChFTkFCTEVfVklERU8pICQoRU5B
QkxFX1ZJREVPX1RSQUNLKSAkKEVOQUJMRV9NRURJQV9TVEFUSVNUSUNTKSAkKEVOQUJMRV9XRUJf
QVVESU8pICQoRU5BQkxFX1dFQl9TT0NLRVRTKSAkKEVOQUJMRV9XRUJfVElNSU5HKSAkKEVOQUJM
RV9XT1JLRVJTKSAkKEVOQUJMRV9YSFRNTE1QKSAkKEVOQUJMRV9YUEFUSCkgJChFTkFCTEVfWFNM
VCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiA4NTc1MSkKKysrIFNvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU0IEBACisyMDExLTA0LTIyICBUYW8g
QmFpICA8bWljaGFlbGJhaUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgUG9wdWxhdGUgdG91Y2gtaWNvbiB1cmwgdG8gRnJhbWVM
b2FkZXJDbGllbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTU5MTQzCisgICAgICAgIAorICAgICAgICBQYXJzZWQgYW5kIHBvcHVsYXRlZCBhcHBsZS10
b3VjaC1pY29uIHVybCB0byBGcmFtZUxvYWRlckNsaWVudC4KKyAgICAgICAgQ2hhbmdlZCBmYXZp
Y29uIHRvIGJlIGEgdHlwZSBvZiBpY29uLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6Cisg
ICAgICAgICogQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWc6CisgICAgICAg
ICogR05VbWFrZWZpbGUuYW06CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAg
ICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3By
b2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAg
ICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6aWNvblVS
TCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2V0SWNvblVSTCk6CisgICAgICAgICog
ZG9tL0RvY3VtZW50Lmg6CisgICAgICAgICogZG9tL0ljb25VUkwuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OnRvSWNvbkluZGV4KToKKyAgICAgICAgKiBkb20vSWNvblVSTC5oOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6Okljb25VUkw6Okljb25VUkwpOgorICAgICAgICAqIGZlYXR1
cmVzLnByaToKKyAgICAgICAgKiBodG1sL0hUTUxMaW5rRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6OnRva2VuaXplUmVsQXR0cmlidXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxMaW5rRWxlbWVudDo6cHJvY2Vzcyk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MTGlua0VsZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyk6CisgICAgICAgICog
aHRtbC9IVE1MTGlua0VsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxMaW5rRWxlbWVu
dDo6UmVsQXR0cmlidXRlOjpSZWxBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTExp
bmtFbGVtZW50Ojppc0VuYWJsZWRWaWFTY3JpcHQpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hU
TUxQcmVsb2FkU2Nhbm5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTmFtZXM6OlByZWxv
YWRUYXNrOjpyZWxBdHRyaWJ1dGVJc1N0eWxlU2hlZXQpOgorICAgICAgICAqIGxvYWRlci9Eb2N1
bWVudExvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6aWNvblVS
TCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6c2V0SWNvblVSTCk6CisgICAg
ICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xp
ZW50cy5oOgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0
Y2hEaWRDaGFuZ2VJY29ucyk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjppY29uVVJMKToKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lTG9hZGVyOjppY29uVVJMcyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6
ZmlsbEljb25VUkwpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmdldERlZmF1bHRJ
Y29uVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpzZXRJY29uVVJMKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpkaWRDaGFuZ2VJY29ucyk6CisgICAgICAgICog
bG9hZGVyL0ZyYW1lTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50
Lmg6CisKIDIwMTEtMDUtMDQgIEFuZHJleSBLb3N5YWtvdiAgPGNhc2VxQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBSZXZpZXdlZCBieSBZdXJ5IFNlbWlraGF0c2t5LgpJbmRleDogU291cmNlL1dl
YkNvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ01ha2VM
aXN0cy50eHQJKHJldmlzaW9uIDg1NzUxKQorKysgU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50
eHQJKHdvcmtpbmcgY29weSkKQEAgLTU2OSw2ICs1NjksNyBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VT
CiAgICAgZG9tL0V2ZW50UXVldWUuY3BwCiAgICAgZG9tL0V4Y2VwdGlvbkJhc2UuY3BwCiAgICAg
ZG9tL0V4Y2VwdGlvbkNvZGUuY3BwCisgICAgZG9tL0ljb25VUkwuY3BwCiAgICAgZG9tL0lucHV0
RWxlbWVudC5jcHAKICAgICBkb20vS2V5Ym9hcmRFdmVudC5jcHAKICAgICBkb20vTWVzc2FnZUNo
YW5uZWwuY3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQkocmV2aXNpb24gODU3NTEpCisrKyBT
b3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQkod29ya2luZyBjb3B5KQpAQCAtMjYxLDYgKzI2
MSwxNiBAQCB3ZWJjb3JlX2J1aWx0X3NvdXJjZXMgKz0gXAogZW5kaWYgIyBFTkQgRU5BQkxFX1FV
T1RBCiAKICMgLS0tLQorIyBUb3VjaCBJY29uIExvYWRpbmcKKyMgLS0tLQoraWYgRU5BQkxFX1RP
VUNIX0lDT05fTE9BRElORworRkVBVFVSRV9ERUZJTkVTICs9IEVOQUJMRV9UT1VDSF9JQ09OX0xP
QURJTkc9MQord2ViY29yZV9jcHBmbGFncyArPSAtREVOQUJMRV9UT1VDSF9JQ09OX0xPQURJTkc9
MQorZWxzZQord2ViY29yZV9jcHBmbGFncyArPSAtREVOQUJMRV9UT1VDSF9JQ09OX0xPQURJTkc9
MAorZW5kaWYgIyBFTkQgRU5BQkxFX1RPVUNIX0lDT05fTE9BRElORworCisjIC0tLS0KICMgU3Bl
ZWNoIElucHV0IEFQSSBzdXBwb3J0CiAjIC0tLS0KIGlmIEVOQUJMRV9JTlBVVF9TUEVFQ0gKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkocmV2aXNpb24gODU3NTEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBAIC0xMTUxLDYg
KzExNTEsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9FeGNl
cHRpb25Db2RlLmggXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9GcmFnbWVudFNjcmlwdGluZ1Blcm1p
c3Npb24uaCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL0lnbm9yZURlc3RydWN0aXZlV3JpdGVDb3Vu
dEluY3JlbWVudGVyLmggXAorCVNvdXJjZS9XZWJDb3JlL2RvbS9JY29uVVJMLmNwcCBcCisJU291
cmNlL1dlYkNvcmUvZG9tL0ljb25VUkwuaCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL0lucHV0RWxl
bWVudC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9JbnB1dEVsZW1lbnQuaCBcCiAJU291cmNl
L1dlYkNvcmUvZG9tL0hhc2hDaGFuZ2VFdmVudC5oIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZ3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHJl
dmlzaW9uIDg1NzUxKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCSh3b3JraW5nIGNv
cHkpCkBAIC0yNDcwLDYgKzI0NzAsOCBAQAogICAgICAgICAgICAgJ2RvbS9FeGNlcHRpb25Db2Rl
LmNwcCcsCiAgICAgICAgICAgICAnZG9tL0hhc2hDaGFuZ2VFdmVudC5oJywKICAgICAgICAgICAg
ICdkb20vSWdub3JlRGVzdHJ1Y3RpdmVXcml0ZUNvdW50SW5jcmVtZW50ZXIuaCcsCisgICAgICAg
ICAgICAnZG9tL0ljb25VUkwuY3BwJywKKyAgICAgICAgICAgICdkb20vSWNvblVSTC5oJywKICAg
ICAgICAgICAgICdkb20vSW5wdXRFbGVtZW50LmNwcCcsCiAgICAgICAgICAgICAnZG9tL0tleWJv
YXJkRXZlbnQuY3BwJywKICAgICAgICAgICAgICdkb20vTWVzc2FnZUNoYW5uZWwuY3BwJywKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUucHJvCShyZXZpc2lvbiA4NTc1MSkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUucHJvCSh3b3JraW5nIGNvcHkpCkBAIC00OTIsNiArNDkyLDcgQEAgU09VUkNFUyArPSBcCiAg
ICAgZG9tL0V2ZW50UXVldWUuY3BwIFwKICAgICBkb20vRXhjZXB0aW9uQmFzZS5jcHAgXAogICAg
IGRvbS9FeGNlcHRpb25Db2RlLmNwcCBcCisgICAgZG9tL0ljb25VUkwuY3BwIFwKICAgICBkb20v
SW5wdXRFbGVtZW50LmNwcCBcCiAgICAgZG9tL0tleWJvYXJkRXZlbnQuY3BwIFwKICAgICBkb20v
TWVzc2FnZUNoYW5uZWwuY3BwIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2ZlYXR1cmVzLnByaQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9mZWF0dXJlcy5wcmkJKHJldmlzaW9uIDg1NzUx
KQorKysgU291cmNlL1dlYkNvcmUvZmVhdHVyZXMucHJpCSh3b3JraW5nIGNvcHkpCkBAIC03NSw2
ICs3NSw3IEBAIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9TSU5HTEVfVEhSRUFERUQKICFjb250
YWlucyhERUZJTkVTLCBFTkFCTEVfV0VCR0w9Lik6IERFRklORVMgKz0gRU5BQkxFX1dFQkdMPTAK
ICFjb250YWlucyhERUZJTkVTLCBFTkFCTEVfTUVESUFfU1RBVElTVElDUz0uKTogREVGSU5FUyAr
PSBFTkFCTEVfTUVESUFfU1RBVElTVElDUz0wCiAhY29udGFpbnMoREVGSU5FUywgRU5BQkxFX1ZJ
REVPX1RSQUNLPS4pOiBERUZJTkVTICs9IEVOQUJMRV9WSURFT19UUkFDSz0wCishY29udGFpbnMo
REVGSU5FUywgRU5BQkxFX1RPVUNIX0lDT05fTE9BRElORz0uKTogREVGSU5FUyArPSBFTkFCTEVf
VE9VQ0hfSUNPTl9MT0FESU5HPTAKICFjb250YWlucyhERUZJTkVTLCBFTkFCTEVfQU5JTUFUSU9O
X0FQST0uKTogREVGSU5FUyArPSBFTkFCTEVfQU5JTUFUSU9OX0FQST0wCiAKICMgU1ZHIHN1cHBv
cnQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhj
Y29uZmlnCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1
cmVEZWZpbmVzLnhjY29uZmlnCShyZXZpc2lvbiA4NTc1MSkKKysrIFNvdXJjZS9XZWJDb3JlL0Nv
bmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCSh3b3JraW5nIGNvcHkpCkBAIC0x
MTcsNiArMTE3LDggQEAgRU5BQkxFX1ZJREVPX1RSQUNLID0gOwogCiBFTkFCTEVfTUVESUFfU1RB
VElTVElDUyA9IDsKIAorRU5BQkxFX1RPVUNIX0lDT05fTE9BRElORyA9IDsKKwogRU5BQkxFX1dF
Ql9BVURJTyA9IDsKIAogRU5BQkxFX1dFQl9TT0NLRVRTID0gJChFTkFCTEVfV0VCX1NPQ0tFVFNf
JChSRUFMX1BMQVRGT1JNX05BTUUpKTsKQEAgLTEzMSw0ICsxMzMsNCBAQCBFTkFCTEVfWEhUTUxN
UCA9IDsKIEVOQUJMRV9YUEFUSCA9IEVOQUJMRV9YUEFUSDsKIEVOQUJMRV9YU0xUID0gRU5BQkxF
X1hTTFQ7CiAKLUZFQVRVUkVfREVGSU5FUyA9ICQoRU5BQkxFX0xJTktfUFJFRkVUQ0gpICQoRU5B
QkxFX0FDQ0VMRVJBVEVEXzJEX0NBTlZBUykgJChFTkFCTEVfV0VCR0wpICQoRU5BQkxFXzNEX1JF
TkRFUklORykgJChFTkFCTEVfQU5JTUFUSU9OX0FQSSkgJChFTkFCTEVfQkxPQikgJChFTkFCTEVf
Q0hBTk5FTF9NRVNTQUdJTkcpICQoRU5BQkxFX0NMSUVOVF9CQVNFRF9HRU9MT0NBVElPTikgJChF
TkFCTEVfREFUQUJBU0UpICQoRU5BQkxFX0RBVEFMSVNUKSAkKEVOQUJMRV9EQVRBX1RSQU5TRkVS
X0lURU1TKSAkKEVOQUJMRV9ERVRBSUxTKSAkKEVOQUJMRV9ERVZJQ0VfT1JJRU5UQVRJT04pICQo
RU5BQkxFX0RJUkVDVE9SWV9VUExPQUQpICQoRU5BQkxFX0RPTV9TVE9SQUdFKSAkKEVOQUJMRV9F
VkVOVFNPVVJDRSkgJChFTkFCTEVfRklMVEVSUykgJChFTkFCTEVfRklMRV9TWVNURU0pICQoRU5B
QkxFX0ZVTExTQ1JFRU5fQVBJKSAkKEVOQUJMRV9HRU9MT0NBVElPTikgJChFTkFCTEVfSUNPTkRB
VEFCQVNFKSAkKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFKSAkKEVOQUJMRV9JTlBVVF9TUEVFQ0gp
ICQoRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIpICQoRU5BQkxFX01BVEhNTCkgJChFTkFCTEVf
TUVURVJfVEFHKSAkKEVOQUJMRV9OT1RJRklDQVRJT05TKSAkKEVOQUJMRV9PRkZMSU5FX1dFQl9B
UFBMSUNBVElPTlMpICQoRU5BQkxFX1BBR0VfVklTSUJJTElUWV9BUEkpICQoRU5BQkxFX1BST0dS
RVNTX1RBRykgJChFTkFCTEVfUkVHSVNURVJfUFJPVE9DT0xfSEFORExFUikgJChFTkFCTEVfUVVP
VEEpICQoRU5BQkxFX1NIQVJFRF9XT1JLRVJTKSAkKEVOQUJMRV9TVkcpICQoRU5BQkxFX1NWR19B
TklNQVRJT04pICQoRU5BQkxFX1NWR19BU19JTUFHRSkgJChFTkFCTEVfU1ZHX0RPTV9PQkpDX0JJ
TkRJTkdTKSAkKEVOQUJMRV9TVkdfRk9OVFMpICQoRU5BQkxFX1NWR19GT1JFSUdOX09CSkVDVCkg
JChFTkFCTEVfU1ZHX1VTRSkgJChFTkFCTEVfVklERU8pICQoRU5BQkxFX1ZJREVPX1RSQUNLKSAk
KEVOQUJMRV9NRURJQV9TVEFUSVNUSUNTKSAkKEVOQUJMRV9XRUJfQVVESU8pICQoRU5BQkxFX1dF
Ql9TT0NLRVRTKSAkKEVOQUJMRV9XRUJfVElNSU5HKSAkKEVOQUJMRV9XT1JLRVJTKSAkKEVOQUJM
RV9YSFRNTE1QKSAkKEVOQUJMRV9YUEFUSCkgJChFTkFCTEVfWFNMVCk7CitGRUFUVVJFX0RFRklO
RVMgPSAkKEVOQUJMRV9MSU5LX1BSRUZFVENIKSAkKEVOQUJMRV9BQ0NFTEVSQVRFRF8yRF9DQU5W
QVMpICQoRU5BQkxFX1dFQkdMKSAkKEVOQUJMRV8zRF9SRU5ERVJJTkcpICQoRU5BQkxFX0FOSU1B
VElPTl9BUEkpICQoRU5BQkxFX0JMT0IpICQoRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HKSAkKEVO
QUJMRV9DTElFTlRfQkFTRURfR0VPTE9DQVRJT04pICQoRU5BQkxFX0RBVEFCQVNFKSAkKEVOQUJM
RV9EQVRBTElTVCkgJChFTkFCTEVfREFUQV9UUkFOU0ZFUl9JVEVNUykgJChFTkFCTEVfREVUQUlM
UykgJChFTkFCTEVfREVWSUNFX09SSUVOVEFUSU9OKSAkKEVOQUJMRV9ESVJFQ1RPUllfVVBMT0FE
KSAkKEVOQUJMRV9ET01fU1RPUkFHRSkgJChFTkFCTEVfRVZFTlRTT1VSQ0UpICQoRU5BQkxFX0ZJ
TFRFUlMpICQoRU5BQkxFX0ZJTEVfU1lTVEVNKSAkKEVOQUJMRV9GVUxMU0NSRUVOX0FQSSkgJChF
TkFCTEVfR0VPTE9DQVRJT04pICQoRU5BQkxFX0lDT05EQVRBQkFTRSkgJChFTkFCTEVfSU5ERVhF
RF9EQVRBQkFTRSkgJChFTkFCTEVfSU5QVVRfU1BFRUNIKSAkKEVOQUJMRV9KQVZBU0NSSVBUX0RF
QlVHR0VSKSAkKEVOQUJMRV9NQVRITUwpICQoRU5BQkxFX01FVEVSX1RBRykgJChFTkFCTEVfTk9U
SUZJQ0FUSU9OUykgJChFTkFCTEVfT0ZGTElORV9XRUJfQVBQTElDQVRJT05TKSAkKEVOQUJMRV9Q
QUdFX1ZJU0lCSUxJVFlfQVBJKSAkKEVOQUJMRV9QUk9HUkVTU19UQUcpICQoRU5BQkxFX1JFR0lT
VEVSX1BST1RPQ09MX0hBTkRMRVIpICQoRU5BQkxFX1FVT1RBKSAkKEVOQUJMRV9TSEFSRURfV09S
S0VSUykgJChFTkFCTEVfU1ZHKSAkKEVOQUJMRV9TVkdfQU5JTUFUSU9OKSAkKEVOQUJMRV9TVkdf
QVNfSU1BR0UpICQoRU5BQkxFX1NWR19ET01fT0JKQ19CSU5ESU5HUykgJChFTkFCTEVfU1ZHX0ZP
TlRTKSAkKEVOQUJMRV9TVkdfRk9SRUlHTl9PQkpFQ1QpICQoRU5BQkxFX1NWR19VU0UpICQoRU5B
QkxFX1RPVUNIX0lDT05fTE9BRElORykgJChFTkFCTEVfVklERU8pICQoRU5BQkxFX1ZJREVPX1RS
QUNLKSAkKEVOQUJMRV9NRURJQV9TVEFUSVNUSUNTKSAkKEVOQUJMRV9XRUJfQVVESU8pICQoRU5B
QkxFX1dFQl9TT0NLRVRTKSAkKEVOQUJMRV9XRUJfVElNSU5HKSAkKEVOQUJMRV9XT1JLRVJTKSAk
KEVOQUJMRV9YSFRNTE1QKSAkKEVOQUJMRV9YUEFUSCkgJChFTkFCTEVfWFNMVCk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvago9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkocmV2aXNpb24g
ODU3NTEpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagko
d29ya2luZyBjb3B5KQpAQCAtNDQ1MDIsNiArNDQ1MDIsNjIgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+
CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cZG9tXEljb25VUkwuY3BwIgorCQkJCT4K
KwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iRGVidWd8V2luMzIiCisJCQkJCUV4
Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJW
Q0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJ
PEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiCisJCQkJCUV4Y2x1
ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NM
Q29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZp
bGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVnX0NhaXJvX0NGTGl0ZXxXaW4zMiIKKwkJ
CQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5h
bWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4K
KwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iUmVsZWFzZV9DYWlyb19DRkxpdGV8
V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29s
CisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZp
Z3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVnX0FsbHxX
aW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wK
KwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmln
dXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iUHJvZHVjdGlvbnxX
aW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wK
KwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmln
dXJhdGlvbj4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxkb21c
SWNvblVSTC5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRo
PSIuLlxkb21cSW5wdXRFbGVtZW50LmNwcCIKIAkJCQk+CiAJCQkJPEZpbGVDb25maWd1cmF0aW9u
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCShyZXZpc2lvbiA4NTc1MSkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtOTcwLDYgKzk3MCw4IEBACiAJ
CTQ0OUIxOUY1MEZBNzJFQ0UwMDE1Q0E0QSAvKiBIVE1MUGFyc2VyUXVpcmtzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NDlCMTlGMzBGQTcyRUNFMDAx
NUNBNEEgLyogSFRNTFBhcnNlclF1aXJrcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTQ0QTI4QUFDMTJERkI4QUMwMEFFOTIzQiAvKiBNYXRoTUxF
bGVtZW50RmFjdG9yeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDRBMjhBQUIxMkRGQjhBQzAwQUU5MjNCIC8qIE1hdGhNTEVsZW1lbnRGYWN0b3J5Lmgg
Ki87IH07CiAJCTQ0QTI4QUFGMTJERkI4QkYwMEFFOTIzQiAvKiBNYXRoTUxOYW1lcy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDRBMjhBQUUxMkRGQjhC
RjAwQUU5MjNCIC8qIE1hdGhNTE5hbWVzLmggKi87IH07CisJCTQ1MDk5QzQxMTM3MEE3ODAwMDU4
RDUxMyAvKiBJY29uVVJMLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQ1MDk5QzQwMTM3MEE3ODAwMDU4RDUxMyAvKiBJY29uVVJMLmNwcCAqLzsgfTsK
KwkJNDVCQUMyQjAxMzYwQkJBQjAwNURBMjU4IC8qIEljb25VUkwuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ1QkFDMkFGMTM2MEJCQUIwMDVEQTI1OCAv
KiBJY29uVVJMLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJNDYxNEExRkUwQjIzQThENjAwNDQ2RTFDIC8qIGNvcHlDdXJzb3IucG5nIGluIFJlc291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjE0QTFGRDBCMjNBOEQ2
MDA0NDZFMUMgLyogY29weUN1cnNvci5wbmcgKi87IH07CiAJCTQ2NEVBMjczMEI4QTM1MEIwMEE4
RTZFMyAvKiBjcm9zc0hhaXJDdXJzb3IucG5nIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0NjRFQTI3MTBCOEEzNTBCMDBBOEU2RTMgLyogY3Jvc3NIYWly
Q3Vyc29yLnBuZyAqLzsgfTsKIAkJNDY0RUEyNzQwQjhBMzUwQjAwQThFNkUzIC8qIG5vdEFsbG93
ZWRDdXJzb3IucG5nIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0NjRFQTI3MjBCOEEzNTBCMDBBOEU2RTMgLyogbm90QWxsb3dlZEN1cnNvci5wbmcgKi87
IH07CkBAIC03NDQxLDYgKzc0NDMsOCBAQAogCQk0NDlCMTlGMzBGQTcyRUNFMDAxNUNBNEEgLyog
SFRNTFBhcnNlclF1aXJrcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIVE1M
UGFyc2VyUXVpcmtzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0QTI4QUFCMTJE
RkI4QUMwMEFFOTIzQiAvKiBNYXRoTUxFbGVtZW50RmFjdG9yeS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBNYXRoTUxFbGVtZW50RmFjdG9yeS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0NEEyOEFBRTEyREZCOEJGMDBBRTkyM0IgLyogTWF0aE1MTmFtZXMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWF0aE1MTmFtZXMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDUwOTlDNDAxMzcwQTc4MDAwNThENTEzIC8qIEljb25VUkwu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gSWNvblVSTC5jcHA7IHBh
dGggPSBkb20vSWNvblVSTC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ1QkFD
MkFGMTM2MEJCQUIwMDVEQTI1OCAvKiBJY29uVVJMLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IEljb25VUkwuaDsgcGF0aCA9IGRvbS9JY29uVVJMLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQ2MTRBMUZEMEIyM0E4RDYwMDQ0NkUxQyAvKiBjb3B5Q3Vyc29yLnBu
ZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGltYWdl
LnBuZzsgcGF0aCA9IGNvcHlDdXJzb3IucG5nOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0NjRFQTI3MTBCOEEzNTBCMDBBOEU2RTMgLyogY3Jvc3NIYWlyQ3Vyc29yLnBuZyAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGltYWdlLnBuZzsgcGF0
aCA9IGNyb3NzSGFpckN1cnNvci5wbmc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2
NEVBMjcyMEI4QTM1MEIwMEE4RTZFMyAvKiBub3RBbGxvd2VkQ3Vyc29yLnBuZyAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGltYWdlLnBuZzsgcGF0aCA9
IG5vdEFsbG93ZWRDdXJzb3IucG5nOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTI1
MjcsNiArMTI1MzEsOCBAQAogCQkwODY3RDY5MUZFODQwMjhGQzAyQUFDMDcgLyogV2ViS2l0ICov
ID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk0NTA5OUM0MDEz
NzBBNzgwMDA1OEQ1MTMgLyogSWNvblVSTC5jcHAgKi8sCisJCQkJNDVCQUMyQUYxMzYwQkJBQjAw
NURBMjU4IC8qIEljb25VUkwuaCAqLywKIAkJCQk2NUM5N0FGMjA4RUE5MDg4MDBBQ0QyNzMgLyog
Y29uZmlnLmggKi8sCiAJCQkJRURFQzk4MDIwQUVEN0UxNzAwNTkxMzdGIC8qIFdlYkNvcmVQcmVm
aXguaCAqLywKIAkJCQk5MzA3MDYxMzA5RTBDQTgyMDBCMTdGRTQgLyogRGVyaXZlZFNvdXJjZXMu
bWFrZSAqLywKQEAgLTIyNzE3LDYgKzIyNzIzLDcgQEAKIAkJCQk5M0YxOTlFRDA4MjQ1RTU5MDAx
RTlBQkMgLyogWFNMVFByb2Nlc3Nvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTFCRTUxMkUwQ0Y2
QzUxMjAwMkVBOTU5IC8qIFhTTFRVbmljb2RlU29ydC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTc3
RTJFMEYxMkYwRkM5QzAwQzEzMzc5IC8qIFhTU0ZpbHRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
NDVCQUMyQjAxMzYwQkJBQjAwNURBMjU4IC8qIEljb25VUkwuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUIxRTU0NTk0MTM0NjI5QzEwMDkyQTU0NSAvKiBNZWRpYVN0cmVhbUNsaWVudC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQjFFNTQ1OTgxMzQ2MjlDMTAwOTJBNTQ1IC8qIE1lZGlhU3RyZWFtQ29udHJv
bGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjFFNTQ1OTYxMzQ2MjlDMTAwOTJBNTQ1IC8qIE1l
ZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTI1MzgwLDYgKzI1
Mzg3LDcgQEAKIAkJCQk5M0YxOUIwNTA4MjQ1RTU5MDAxRTlBQkMgLyogWFNMVFByb2Nlc3Nvckxp
YnhzbHQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTFCRTUxMkQwQ0Y2QzUxMjAwMkVBOTU5IC8q
IFhTTFRVbmljb2RlU29ydC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5NzdFMkUwRTEyRjBGQzlD
MDBDMTMzNzkgLyogWFNTRmlsdGVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQ1MDk5QzQxMTM3
MEE3ODAwMDU4RDUxMyAvKiBJY29uVVJMLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIxRTU0NTk3
MTM0NjI5QzEwMDkyQTU0NSAvKiBNZWRpYVN0cmVhbUNvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQjFFNTQ1OTUxMzQ2MjlDMTAwOTJBNTQ1IC8qIE1lZGlhU3RyZWFtRnJhbWVDb250
cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Rv
bS9ET01BbGxJbk9uZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RPTUFs
bEluT25lLmNwcAkocmV2aXNpb24gODU3NTEpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRE9NQWxs
SW5PbmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NSw2ICs3NSw3IEBACiAjaW5jbHVkZSAiRXZl
bnRUYXJnZXQuY3BwIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkJhc2UuY3BwIgogI2luY2x1ZGUgIkV4
Y2VwdGlvbkNvZGUuY3BwIgorI2luY2x1ZGUgIkljb25VUkwuY3BwIgogI2luY2x1ZGUgIklucHV0
RWxlbWVudC5jcHAiCiAjaW5jbHVkZSAiS2V5Ym9hcmRFdmVudC5jcHAiCiAjaW5jbHVkZSAiTWVz
c2FnZUNoYW5uZWwuY3BwIgpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCShyZXZpc2lvbiA4
NTc1MSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQzOTUsMTUgKzQzOTUsMjYgQEAgdW5zaWduZWQgRm9ybUVsZW1lbnRLZXlIYXNoOjpoYXNo
KGNvbnN0IAogICAgIHJldHVybiBTdHJpbmdIYXNoZXI6Omhhc2hNZW1vcnk8c2l6ZW9mKEZvcm1F
bGVtZW50S2V5KT4oJmtleSk7CiB9CiAKLXZvaWQgRG9jdW1lbnQ6OnNldEljb25VUkwoY29uc3Qg
U3RyaW5nJiBpY29uVVJMLCBjb25zdCBTdHJpbmcmIHR5cGUpCitJY29uVVJMIERvY3VtZW50Ojpp
Y29uVVJMKEljb25UeXBlIGljb25UeXBlKSBjb25zdAogewotICAgIC8vIEZJWE1FIC0gPHJkYXI6
Ly9wcm9ibGVtLzQ3Mjc2NDU+IC0gQXQgc29tZSBwb2ludCBpbiB0aGUgZnV0dXJlLCB3ZSBtaWdo
dCBhY3R1YWxseSBob25vciB0aGUgInR5cGUiIAotICAgIGlmIChtX2ljb25VUkwuaXNFbXB0eSgp
KQotICAgICAgICBtX2ljb25VUkwgPSBpY29uVVJMOwotICAgIGVsc2UgaWYgKCF0eXBlLmlzRW1w
dHkoKSkKLSAgICAgICAgbV9pY29uVVJMID0gaWNvblVSTDsKKyAgICByZXR1cm4gbV9pY29uVVJM
c1t0b0ljb25JbmRleChpY29uVHlwZSldOworfQorCit2b2lkIERvY3VtZW50OjpzZXRJY29uVVJM
KGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBJY29uVHlwZSBpY29u
VHlwZSkKK3sKKyAgICAvLyBGSVhNRSAtIDxyZGFyOi8vcHJvYmxlbS80NzI3NjQ1PiAtIEF0IHNv
bWUgcG9pbnQgaW4gdGhlIGZ1dHVyZSwgd2UgbWlnaHQgYWN0dWFsbHkgaG9ub3IgdGhlICJtaW1l
VHlwZSIKKyAgICBJY29uVVJMIG5ld1VSTChLVVJMKFBhcnNlZFVSTFN0cmluZywgdXJsKSwgaWNv
blR5cGUpOworICAgIGlmICghaWNvblVSTChpY29uVHlwZSkubV9pY29uVVJMLmlzRW1wdHkoKSkK
KyAgICAgICAgc2V0SWNvblVSTChuZXdVUkwpOworICAgIGVsc2UgaWYgKCFtaW1lVHlwZS5pc0Vt
cHR5KCkpCisgICAgICAgIHNldEljb25VUkwobmV3VVJMKTsKICAgICBpZiAoRnJhbWUqIGYgPSBm
cmFtZSgpKQotICAgICAgICBmLT5sb2FkZXIoKS0+c2V0SWNvblVSTChtX2ljb25VUkwpOworICAg
ICAgICBmLT5sb2FkZXIoKS0+c2V0SWNvblVSTChuZXdVUkwpOworfQorCit2b2lkIERvY3VtZW50
OjpzZXRJY29uVVJMKGNvbnN0IEljb25VUkwmIGljb25VUkwpCit7CisgICAgbV9pY29uVVJMc1t0
b0ljb25JbmRleChpY29uVVJMLm1faWNvblR5cGUpXSA9IGljb25VUkw7CiB9CiAKIHZvaWQgRG9j
dW1lbnQ6OnJlZ2lzdGVyRm9ybUVsZW1lbnRXaXRoRm9ybUF0dHJpYnV0ZShGb3JtQXNzb2NpYXRl
ZEVsZW1lbnQqIGVsZW1lbnQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAkocmV2aXNpb24gODU3
NTEpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAt
MzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkNvbG9yLmgiCiAjaW5jbHVkZSAiRE9NVGltZVN0YW1w
LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRUaW1pbmcuaCIKKyNpbmNsdWRlICJJY29uVVJMLmgiCiAj
aW5jbHVkZSAiUXVhbGlmaWVkTmFtZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuaCIKICNpbmNsdWRlICJTdHJpbmdXaXRoRGlyZWN0aW9uLmgiCkBAIC05MjAsOCArOTIxLDkg
QEAgcHVibGljOgogICAgIAogICAgIHZvaWQgc2V0SGFzTm9kZXNXaXRoUGxhY2Vob2xkZXJTdHls
ZSgpIHsgbV9oYXNOb2Rlc1dpdGhQbGFjZWhvbGRlclN0eWxlID0gdHJ1ZTsgfQogCi0gICAgY29u
c3QgU3RyaW5nJiBpY29uVVJMKCkgY29uc3QgeyByZXR1cm4gbV9pY29uVVJMOyB9Ci0gICAgdm9p
ZCBzZXRJY29uVVJMKGNvbnN0IFN0cmluZyYgaWNvblVSTCwgY29uc3QgU3RyaW5nJiB0eXBlKTsK
KyAgICBJY29uVVJMIGljb25VUkwoSWNvblR5cGUpIGNvbnN0OworICAgIHZvaWQgc2V0SWNvblVS
TChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBJY29uVHlwZSk7CisgICAgdm9pZCBzZXRJ
Y29uVVJMKGNvbnN0IEljb25VUkwmKTsKIAogICAgIHZvaWQgc2V0VXNlU2VjdXJlS2V5Ym9hcmRF
bnRyeVdoZW5BY3RpdmUoYm9vbCk7CiAgICAgYm9vbCB1c2VTZWN1cmVLZXlib2FyZEVudHJ5V2hl
bkFjdGl2ZSgpIGNvbnN0OwpAQCAtMTMyOSw4ICsxMzMxLDggQEAgcHJpdmF0ZToKIAogICAgIGJv
b2wgbV9jcmVhdGVSZW5kZXJlcnM7CiAgICAgYm9vbCBtX2luUGFnZUNhY2hlOwotICAgIFN0cmlu
ZyBtX2ljb25VUkw7Ci0gICAgCisgICAgSWNvblVSTCBtX2ljb25VUkxzW0lDT05fQ09VTlRdOwor
CiAgICAgSGFzaFNldDxFbGVtZW50Kj4gbV9kb2N1bWVudEFjdGl2YXRpb25DYWxsYmFja0VsZW1l
bnRzOwogICAgIEhhc2hTZXQ8RWxlbWVudCo+IG1fbWVkaWFWb2x1bWVDYWxsYmFja0VsZW1lbnRz
OwogICAgIEhhc2hTZXQ8RWxlbWVudCo+IG1fcHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2VkRWxl
bWVudHM7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vSWNvblVSTC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvZG9tL0ljb25VUkwuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNl
L1dlYkNvcmUvZG9tL0ljb25VUkwuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU4IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAq
IGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisg
KiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkljb25VUkwuaCIKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitzaXplX3QgdG9JY29uSW5kZXgoSWNvblR5cGUgdHlwZSkKK3sKKyAgICBzaXplX3Qg
aW5kZXggPSAwOworICAgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2UgRmF2aWNvbjoKKyAgICAg
ICAgaW5kZXggPSAwOworICAgICAgICBicmVhazsKKyNpZiBFTkFCTEUoVE9VQ0hfSUNPTl9MT0FE
SU5HKQorICAgIGNhc2UgVG91Y2hQcmVjb21wb3NlZEljb246CisgICAgICAgIGluZGV4ID0gMTsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBUb3VjaEljb246CisgICAgICAgIGluZGV4ID0gMjsK
KyAgICAgICAgYnJlYWs7CisjZW5kaWYKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICB9CisgICAgcmV0dXJuIGluZGV4OworfQorCit9CisKClByb3BlcnR5
IGNoYW5nZXMgb246IFNvdXJjZS9XZWJDb3JlL2RvbS9JY29uVVJMLmNwcApfX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFk
ZGVkOiBzdm46ZW9sLXN0eWxlCiAgICsgTEYKCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vSWNv
blVSTC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9JY29uVVJMLmgJKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vSWNvblVSTC5oCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDc0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBt
ZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICog
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBJY29uVVJMX2gKKyNkZWZpbmUgSWNvblVSTF9oCisKKyNpbmNs
dWRlICJLVVJMLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworI2lmIEVOQUJMRShUT1VDSF9J
Q09OX0xPQURJTkcpCisjZGVmaW5lIElDT05fQ09VTlQgMworI2Vsc2UKKyNkZWZpbmUgSUNPTl9D
T1VOVCAxCisjZW5kaWYKKworZW51bSBJY29uVHlwZSB7CisgICAgSW52YWxpZEljb24gPSAwLAor
ICAgIEZhdmljb24gPSAxLAorICAgIFRvdWNoSWNvbiA9IDEgPDwgMSwKKyAgICBUb3VjaFByZWNv
bXBvc2VkSWNvbiA9IDEgPDwgMgorfTsKKworc3RydWN0IEljb25VUkwgeworICAgIEljb25UeXBl
IG1faWNvblR5cGU7CisgICAgS1VSTCBtX2ljb25VUkw7CisKKyAgICBJY29uVVJMKCkKKyAgICAg
ICAgOiBtX2ljb25UeXBlKEludmFsaWRJY29uKQorICAgIHsKKyAgICB9CisKKyAgICBJY29uVVJM
KGNvbnN0IEtVUkwmIHVybCwgSWNvblR5cGUgdHlwZSkKKyAgICAgICAgOiBtX2ljb25UeXBlKHR5
cGUpCisgICAgICAgICwgbV9pY29uVVJMKHVybCkKKyAgICB7CisgICAgfQorfTsKKwordHlwZWRl
ZiBWZWN0b3I8SWNvblVSTCwgSUNPTl9DT1VOVD4gSWNvblVSTHM7CisKKy8vIFJldHVybnMgdGhl
IGluZGV4IG9mIHRoZSBnaXZlbiB0eXBlLCAwIGlzIHJldHVybmVkIGlmIHRoZSB0eXBlIGlzIGlu
dmFsaWQuCitzaXplX3QgdG9JY29uSW5kZXgoSWNvblR5cGUpOworCit9CisKKyNlbmRpZiAvLyBJ
Y29uVVJMX2gKClByb3BlcnR5IGNoYW5nZXMgb246IFNvdXJjZS9XZWJDb3JlL2RvbS9JY29uVVJM
LmgKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fXwpBZGRlZDogc3ZuOmVvbC1zdHlsZQogICArIExGCgpJbmRleDogU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcAkocmV2aXNpb24gODU3NTEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2
MCw3ICsxNjAsNyBAQCB2b2lkIEhUTUxMaW5rRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1CiB2
b2lkIEhUTUxMaW5rRWxlbWVudDo6dG9rZW5pemVSZWxBdHRyaWJ1dGUoY29uc3QgQXRvbWljU3Ry
aW5nJiByZWwsIFJlbEF0dHJpYnV0ZSYgcmVsQXR0cmlidXRlKQogewogICAgIHJlbEF0dHJpYnV0
ZS5tX2lzU3R5bGVTaGVldCA9IGZhbHNlOwotICAgIHJlbEF0dHJpYnV0ZS5tX2lzSWNvbiA9IGZh
bHNlOworICAgIHJlbEF0dHJpYnV0ZS5tX2ljb25UeXBlID0gSW52YWxpZEljb247CiAgICAgcmVs
QXR0cmlidXRlLm1faXNBbHRlcm5hdGUgPSBmYWxzZTsKICAgICByZWxBdHRyaWJ1dGUubV9pc0RO
U1ByZWZldGNoID0gZmFsc2U7CiAjaWYgRU5BQkxFKExJTktfUFJFRkVUQ0gpCkBAIC0xNzAsNyAr
MTcwLDEzIEBAIHZvaWQgSFRNTExpbmtFbGVtZW50Ojp0b2tlbml6ZVJlbEF0dHJpYnUKICAgICBp
ZiAoZXF1YWxJZ25vcmluZ0Nhc2UocmVsLCAic3R5bGVzaGVldCIpKQogICAgICAgICByZWxBdHRy
aWJ1dGUubV9pc1N0eWxlU2hlZXQgPSB0cnVlOwogICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdD
YXNlKHJlbCwgImljb24iKSB8fCBlcXVhbElnbm9yaW5nQ2FzZShyZWwsICJzaG9ydGN1dCBpY29u
IikpCi0gICAgICAgIHJlbEF0dHJpYnV0ZS5tX2lzSWNvbiA9IHRydWU7CisgICAgICAgIHJlbEF0
dHJpYnV0ZS5tX2ljb25UeXBlID0gRmF2aWNvbjsKKyNpZiBFTkFCTEUoVE9VQ0hfSUNPTl9MT0FE
SU5HKQorICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHJlbCwgImFwcGxlLXRvdWNoLWlj
b24iKSkKKyAgICAgICAgcmVsQXR0cmlidXRlLm1faWNvblR5cGUgPSBUb3VjaEljb247CisgICAg
ZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UocmVsLCAiYXBwbGUtdG91Y2gtaWNvbi1wcmVjb21w
b3NlZCIpKQorICAgICAgICByZWxBdHRyaWJ1dGUubV9pY29uVHlwZSA9IFRvdWNoUHJlY29tcG9z
ZWRJY29uOworI2VuZGlmCiAgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UocmVsLCAiZG5z
LXByZWZldGNoIikpCiAgICAgICAgIHJlbEF0dHJpYnV0ZS5tX2lzRE5TUHJlZmV0Y2ggPSB0cnVl
OwogICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHJlbCwgImFsdGVybmF0ZSBzdHlsZXNo
ZWV0IikgfHwgZXF1YWxJZ25vcmluZ0Nhc2UocmVsLCAic3R5bGVzaGVldCBhbHRlcm5hdGUiKSkg
ewpAQCAtMTg5LDcgKzE5NSwxMyBAQCB2b2lkIEhUTUxMaW5rRWxlbWVudDo6dG9rZW5pemVSZWxB
dHRyaWJ1CiAgICAgICAgICAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZSgqaXQsICJhbHRl
cm5hdGUiKSkKICAgICAgICAgICAgICAgICByZWxBdHRyaWJ1dGUubV9pc0FsdGVybmF0ZSA9IHRy
dWU7CiAgICAgICAgICAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZSgqaXQsICJpY29uIikp
Ci0gICAgICAgICAgICAgICAgcmVsQXR0cmlidXRlLm1faXNJY29uID0gdHJ1ZTsKKyAgICAgICAg
ICAgICAgICByZWxBdHRyaWJ1dGUubV9pY29uVHlwZSA9IEZhdmljb247CisjaWYgRU5BQkxFKFRP
VUNIX0lDT05fTE9BRElORykKKyAgICAgICAgICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNl
KCppdCwgImFwcGxlLXRvdWNoLWljb24iKSkKKyAgICAgICAgICAgICAgICByZWxBdHRyaWJ1dGUu
bV9pY29uVHlwZSA9IFRvdWNoSWNvbjsKKyAgICAgICAgICAgIGVsc2UgaWYgKGVxdWFsSWdub3Jp
bmdDYXNlKCppdCwgImFwcGxlLXRvdWNoLWljb24tcHJlY29tcG9zZWQiKSkKKyAgICAgICAgICAg
ICAgICByZWxBdHRyaWJ1dGUubV9pY29uVHlwZSA9IFRvdWNoUHJlY29tcG9zZWRJY29uOworI2Vu
ZGlmCiAjaWYgRU5BQkxFKExJTktfUFJFRkVUQ0gpCiAgICAgICAgICAgICBlbHNlIGlmIChlcXVh
bElnbm9yaW5nQ2FzZSgqaXQsICJwcmVmZXRjaCIpKQogICAgICAgICAgICAgICByZWxBdHRyaWJ1
dGUubV9pc0xpbmtQcmVmZXRjaCA9IHRydWU7CkBAIC0yMjIsMTAgKzIzNCwxMCBAQCB2b2lkIEhU
TUxMaW5rRWxlbWVudDo6cHJvY2VzcygpCiAKICAgICAvLyBJRSBleHRlbnNpb246IGxvY2F0aW9u
IG9mIHNtYWxsIGljb24gZm9yIGxvY2F0aW9uYmFyIC8gYm9va21hcmtzCiAgICAgLy8gV2UnbGwg
cmVjb3JkIHRoaXMgVVJMIHBlciBkb2N1bWVudCwgZXZlbiBpZiB3ZSBsYXRlciBvbmx5IHVzZSBp
dCBpbiB0b3AgbGV2ZWwgZnJhbWVzCi0gICAgaWYgKG1fcmVsQXR0cmlidXRlLm1faXNJY29uICYm
IG1fdXJsLmlzVmFsaWQoKSAmJiAhbV91cmwuaXNFbXB0eSgpKSB7CisgICAgaWYgKG1fcmVsQXR0
cmlidXRlLm1faWNvblR5cGUgIT0gSW52YWxpZEljb24gJiYgbV91cmwuaXNWYWxpZCgpICYmICFt
X3VybC5pc0VtcHR5KCkpIHsKICAgICAgICAgaWYgKCFjaGVja0JlZm9yZUxvYWRFdmVudCgpKSAK
ICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgZG9jdW1lbnQoKS0+c2V0SWNvblVSTChtX3Vy
bC5zdHJpbmcoKSwgdHlwZSk7CisgICAgICAgIGRvY3VtZW50KCktPnNldEljb25VUkwobV91cmwu
c3RyaW5nKCksIHR5cGUsIG1fcmVsQXR0cmlidXRlLm1faWNvblR5cGUpOwogICAgIH0KIAogICAg
IGlmIChtX3JlbEF0dHJpYnV0ZS5tX2lzRE5TUHJlZmV0Y2gpIHsKQEAgLTQ3Myw3ICs0ODUsNyBA
QCB2b2lkIEhUTUxMaW5rRWxlbWVudDo6YWRkU3VicmVzb3VyY2VBdHRyCiAgICAgSFRNTEVsZW1l
bnQ6OmFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyh1cmxzKTsKIAogICAgIC8vIEZhdmljb25z
IGFyZSBoYW5kbGVkIGJ5IGEgc3BlY2lhbCBjYXNlIGluIExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0
ZSgpCi0gICAgaWYgKG1fcmVsQXR0cmlidXRlLm1faXNJY29uKQorICAgIGlmIChtX3JlbEF0dHJp
YnV0ZS5tX2ljb25UeXBlICE9IEludmFsaWRJY29uKQogICAgICAgICByZXR1cm47CiAKICAgICBp
ZiAoIW1fcmVsQXR0cmlidXRlLm1faXNTdHlsZVNoZWV0KQpJbmRleDogU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTGlua0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxMaW5rRWxlbWVudC5oCShyZXZpc2lvbiA4NTc1MSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTExpbmtFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNp
bmNsdWRlICJDYWNoZWRSZXNvdXJjZUNsaWVudC5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNl
SGFuZGxlLmgiCiAjaW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIKKyNpbmNsdWRlICJJY29uVVJMLmgi
CiAjaW5jbHVkZSAiVGltZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzksNyArNDAs
NyBAQCBjbGFzcyBIVE1MTGlua0VsZW1lbnQgOiBwdWJsaWMgSFRNTEVsZW1lCiBwdWJsaWM6CiAg
ICAgc3RydWN0IFJlbEF0dHJpYnV0ZSB7CiAgICAgICAgIGJvb2wgbV9pc1N0eWxlU2hlZXQ7Ci0g
ICAgICAgIGJvb2wgbV9pc0ljb247CisgICAgICAgIEljb25UeXBlIG1faWNvblR5cGU7CiAgICAg
ICAgIGJvb2wgbV9pc0FsdGVybmF0ZTsKICAgICAgICAgYm9vbCBtX2lzRE5TUHJlZmV0Y2g7CiAj
aWYgRU5BQkxFKExJTktfUFJFRkVUQ0gpCkBAIC00OSw3ICs1MCw3IEBAIHB1YmxpYzoKIAogICAg
ICAgICBSZWxBdHRyaWJ1dGUoKQogICAgICAgICAgICAgOiBtX2lzU3R5bGVTaGVldChmYWxzZSkK
LSAgICAgICAgICAgICwgbV9pc0ljb24oZmFsc2UpCisgICAgICAgICAgICAsIG1faWNvblR5cGUo
SW52YWxpZEljb24pCiAgICAgICAgICAgICAsIG1faXNBbHRlcm5hdGUoZmFsc2UpCiAgICAgICAg
ICAgICAsIG1faXNETlNQcmVmZXRjaChmYWxzZSkKICNpZiBFTkFCTEUoTElOS19QUkVGRVRDSCkK
QEAgLTc2LDcgKzc3LDYgQEAgcHVibGljOgogCiAgICAgYm9vbCBpc0Rpc2FibGVkKCkgY29uc3Qg
eyByZXR1cm4gbV9kaXNhYmxlZFN0YXRlID09IERpc2FibGVkOyB9CiAgICAgYm9vbCBpc0VuYWJs
ZWRWaWFTY3JpcHQoKSBjb25zdCB7IHJldHVybiBtX2Rpc2FibGVkU3RhdGUgPT0gRW5hYmxlZFZp
YVNjcmlwdDsgfQotICAgIGJvb2wgaXNJY29uKCkgY29uc3QgeyByZXR1cm4gbV9yZWxBdHRyaWJ1
dGUubV9pc0ljb247IH0KICAgICBib29sIGRpc2FibGVkKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRE
aXNhYmxlZChib29sKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBy
ZWxvYWRTY2FubmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9IVE1MUHJlbG9hZFNjYW5uZXIuY3BwCShyZXZpc2lvbiA4NTc1MSkKKysrIFNvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTk1LDcgKzk1LDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgSFRNTExpbmtFbGVtZW50OjpS
ZWxBdHRyaWJ1dGUgcmVsOwogICAgICAgICBIVE1MTGlua0VsZW1lbnQ6OnRva2VuaXplUmVsQXR0
cmlidXRlKGF0dHJpYnV0ZVZhbHVlLCByZWwpOwotICAgICAgICByZXR1cm4gcmVsLm1faXNTdHls
ZVNoZWV0ICYmICFyZWwubV9pc0FsdGVybmF0ZSAmJiAhcmVsLm1faXNJY29uICYmICFyZWwubV9p
c0ROU1ByZWZldGNoOworICAgICAgICByZXR1cm4gcmVsLm1faXNTdHlsZVNoZWV0ICYmICFyZWwu
bV9pc0FsdGVybmF0ZSAmJiByZWwubV9pY29uVHlwZSA9PSBJbnZhbGlkSWNvbiAmJiAhcmVsLm1f
aXNETlNQcmVmZXRjaDsKICAgICB9CiAKICAgICBzdGF0aWMgYm9vbCBsaW5rTWVkaWFBdHRyaWJ1
dGVJc1NjcmVlbihjb25zdCBTdHJpbmcmIGF0dHJpYnV0ZVZhbHVlKQpJbmRleDogU291cmNlL1dl
YkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCShyZXZpc2lvbiA4NTc1MSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY2
MSwxNCArNjYxLDE5IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnNldFRpdGxlKGNvbnN0IFN0cmkK
ICAgICB9CiB9CiAKLXZvaWQgRG9jdW1lbnRMb2FkZXI6OnNldEljb25VUkwoY29uc3QgU3RyaW5n
JiBpY29uVVJMKQorSWNvblVSTCBEb2N1bWVudExvYWRlcjo6aWNvblVSTChJY29uVHlwZSBpY29u
VHlwZSkgY29uc3QKIHsKLSAgICBpZiAoaWNvblVSTC5pc0VtcHR5KCkpCisgICAgcmV0dXJuIG1f
aWNvblVSTHNbdG9JY29uSW5kZXgoaWNvblR5cGUpXTsKK30KKwordm9pZCBEb2N1bWVudExvYWRl
cjo6c2V0SWNvblVSTChjb25zdCBJY29uVVJMJiB1cmwpCit7CisgICAgaWYgKHVybC5tX2ljb25V
UkwuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAobV9wYWdlSWNvblVSTCAh
PSBpY29uVVJMKSB7Ci0gICAgICAgIG1fcGFnZUljb25VUkwgPSBpY29uVVJMOwotICAgICAgICBm
cmFtZUxvYWRlcigpLT5kaWRDaGFuZ2VJY29ucyh0aGlzKTsKKyAgICBpZiAoaWNvblVSTCh1cmwu
bV9pY29uVHlwZSkubV9pY29uVVJMICE9IHVybC5tX2ljb25VUkwpIHsKKyAgICAgICAgbV9pY29u
VVJMc1t0b0ljb25JbmRleCh1cmwubV9pY29uVHlwZSldID0gdXJsOworICAgICAgICBmcmFtZUxv
YWRlcigpLT5kaWRDaGFuZ2VJY29ucyh0aGlzLCB1cmwubV9pY29uVHlwZSk7CiAgICAgfQogfQog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAkocmV2aXNpb24gODU3
NTEpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkRvY3VtZW50TG9hZFRpbWluZy5oIgog
I2luY2x1ZGUgIkRvY3VtZW50V3JpdGVyLmgiCiAjaW5jbHVkZSAiSWNvbkRhdGFiYXNlQmFzZS5o
IgorI2luY2x1ZGUgIkljb25VUkwuaCIKICNpbmNsdWRlICJOYXZpZ2F0aW9uQWN0aW9uLmgiCiAj
aW5jbHVkZSAiUmVzb3VyY2VFcnJvci5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgpA
QCAtMTIzLDcgKzEyNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCBpc0xv
YWRpbmdJbkFQSVNlbnNlKCkgY29uc3Q7CiAgICAgICAgIHZvaWQgc2V0UHJpbWFyeUxvYWRDb21w
bGV0ZShib29sKTsKICAgICAgICAgdm9pZCBzZXRUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0
aW9uJik7Ci0gICAgICAgIHZvaWQgc2V0SWNvblVSTChjb25zdCBTdHJpbmcmKTsKKyAgICAgICAg
dm9pZCBzZXRJY29uVVJMKGNvbnN0IEljb25VUkwmKTsKICAgICAgICAgY29uc3QgU3RyaW5nJiBv
dmVycmlkZUVuY29kaW5nKCkgY29uc3QgeyByZXR1cm4gbV9vdmVycmlkZUVuY29kaW5nOyB9CiAK
ICNpZiBQTEFURk9STShNQUMpCkBAIC0xNzAsNyArMTcxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiAgICAgICAgIHZvaWQgc3RvcFJlY29yZGluZ1Jlc3BvbnNlcygpOwogICAgICAgICBjb25z
dCBTdHJpbmdXaXRoRGlyZWN0aW9uJiB0aXRsZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZVRpdGxl
OyB9Ci0gICAgICAgIGNvbnN0IFN0cmluZyYgaWNvblVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFn
ZUljb25VUkw7IH0KKyAgICAgICAgSWNvblVSTCBpY29uVVJMKEljb25UeXBlKSBjb25zdDsKIAog
ICAgICAgICBLVVJMIHVybEZvckhpc3RvcnkoKSBjb25zdDsKICAgICAgICAgYm9vbCB1cmxGb3JI
aXN0b3J5UmVmbGVjdHNGYWlsdXJlKCkgY29uc3Q7CkBAIC0zMDAsNyArMzAxLDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICBib29sIG1fd2FzT25sb2FkSGFuZGxlZDsKIAogICAgICAg
ICBTdHJpbmdXaXRoRGlyZWN0aW9uIG1fcGFnZVRpdGxlOwotICAgICAgICBTdHJpbmcgbV9wYWdl
SWNvblVSTDsKKyAgICAgICAgSWNvblVSTCBtX2ljb25VUkxzW0lDT05fQ09VTlRdOwogCiAgICAg
ICAgIFN0cmluZyBtX292ZXJyaWRlRW5jb2Rpbmc7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9FbXB0eUNsaWVudHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RW1wdHlDbGllbnRzLmgJKHJldmlzaW9uIDg1NzUxKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVy
L0VtcHR5Q2xpZW50cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNzEsNyArMjcxLDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVJY29uKCkgeyB9CiAgICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoRGlkU3RhcnRQcm92aXNpb25hbExvYWQoKSB7IH0KICAgICB2aXJ0
dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlv
biYpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZUljb25zKCkgeyB9Cisg
ICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoSWNvblR5cGUpIHsgfQogICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENvbW1pdExvYWQoKSB7IH0KICAgICB2aXJ0dWFsIHZv
aWQgZGlzcGF0Y2hEaWRGYWlsUHJvdmlzaW9uYWxMb2FkKGNvbnN0IFJlc291cmNlRXJyb3ImKSB7
IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGYWlsTG9hZChjb25zdCBSZXNvdXJjZUVy
cm9yJikgeyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHJldmlz
aW9uIDg1NzUxKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNjksNiArNjksNyBAQAogI2luY2x1ZGUgIkhpc3RvcnlJdGVtLmgiCiAj
aW5jbHVkZSAiSWNvbkRhdGFiYXNlLmgiCiAjaW5jbHVkZSAiSWNvbkxvYWRlci5oIgorI2luY2x1
ZGUgIkljb25VUkwuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JDb250cm9sbGVyLmgiCiAjaW5jbHVk
ZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgpAQCAt
NDY3LDE4ICs0NjgsNTYgQEAgYm9vbCBGcmFtZUxvYWRlcjo6Y2xvc2VVUkwoKQogCiBLVVJMIEZy
YW1lTG9hZGVyOjppY29uVVJMKCkKIHsKLSAgICAvLyBJZiB0aGlzIGlzbid0IGEgdG9wIGxldmVs
IGZyYW1lLCByZXR1cm4gbm90aGluZworICAgIEljb25VUkxzIHVybHMgPSBpY29uVVJMcyhGYXZp
Y29uKTsKKyAgICByZXR1cm4gdXJscy5pc0VtcHR5KCkgPyBLVVJMKCkgOiB1cmxzWzBdLm1faWNv
blVSTDsKK30KKworSWNvblVSTHMgRnJhbWVMb2FkZXI6Omljb25VUkxzKGludCBpY29uVHlwZXMp
Cit7CisgICAgSWNvblVSTHMgaWNvblVSTHM7CisgICAgaWYgKGljb25UeXBlcyAmIEZhdmljb24g
JiYgIWZpbGxJY29uVVJMKEZhdmljb24sICZpY29uVVJMcykpCisgICAgICAgIGljb25VUkxzLmFw
cGVuZChnZXREZWZhdWx0SWNvblVSTChGYXZpY29uKSk7CisKKyNpZiBFTkFCTEUoVE9VQ0hfSUNP
Tl9MT0FESU5HKQorICAgIGJvb2wgaGF2ZVByZWNvbXBvc2VkSWNvbiA9IGZhbHNlOworICAgIGlm
IChpY29uVHlwZXMgJiBUb3VjaFByZWNvbXBvc2VkSWNvbikKKyAgICAgICAgaGF2ZVByZWNvbXBv
c2VkSWNvbiA9IGZpbGxJY29uVVJMKFRvdWNoUHJlY29tcG9zZWRJY29uLCAmaWNvblVSTHMpOwor
CisgICAgYm9vbCBoYXZlVG91Y2hJY29uID0gZmFsc2U7CisgICAgaWYgKGljb25UeXBlcyAmIFRv
dWNoSWNvbikKKyAgICAgICAgaGF2ZVRvdWNoSWNvbiA9IGZpbGxJY29uVVJMKFRvdWNoSWNvbiwg
Jmljb25VUkxzKTsKKworICAgIC8vIE9ubHkgcmV0dXJuIHRoZSBkZWZhdWx0IHRvdWNoIGljb25z
IHdoZW4gdGhlIGJvdGggd2VyZSByZXF1aXJlZCBhbmQgbmVpdGhlciB3YXMgZ290dGVuLgorICAg
IGlmIChpY29uVHlwZXMgJiBUb3VjaFByZWNvbXBvc2VkSWNvbiAmJiBpY29uVHlwZXMgJiBUb3Vj
aEljb24gJiYgIWhhdmVQcmVjb21wb3NlZEljb24gJiYgIWhhdmVUb3VjaEljb24pIHsKKyAgICAg
ICAgaWNvblVSTHMuYXBwZW5kKGdldERlZmF1bHRJY29uVVJMKFRvdWNoUHJlY29tcG9zZWRJY29u
KSk7CisgICAgICAgIGljb25VUkxzLmFwcGVuZChnZXREZWZhdWx0SWNvblVSTChUb3VjaEljb24p
KTsKKyAgICB9CisjZW5kaWYKKyAgICByZXR1cm4gaWNvblVSTHM7Cit9CisKK2Jvb2wgRnJhbWVM
b2FkZXI6OmZpbGxJY29uVVJMKEljb25UeXBlIGljb25UeXBlLCBJY29uVVJMcyogaWNvblVSTHMp
Cit7CisgICAgLy8gSWYgdGhpcyBpc24ndCBhIHRvcCBsZXZlbCBmcmFtZSwgcmV0dXJuCiAgICAg
aWYgKG1fZnJhbWUtPnRyZWUoKSAmJiBtX2ZyYW1lLT50cmVlKCktPnBhcmVudCgpKQotICAgICAg
ICByZXR1cm4gS1VSTCgpOworICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAvLyBJZiB3ZSBo
YXZlIGFuIGljb25VUkwgZnJvbSBhIExpbmsgZWxlbWVudCwgcmV0dXJuIHRoYXQKLSAgICBpZiAo
IW1fZnJhbWUtPmRvY3VtZW50KCktPmljb25VUkwoKS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVy
biBLVVJMKFBhcnNlZFVSTFN0cmluZywgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+aWNvblVSTCgpKTsK
KyAgICBJY29uVVJMIHVybCA9IG1fZnJhbWUtPmRvY3VtZW50KCktPmljb25VUkwoaWNvblR5cGUp
OworICAgIGlmICh1cmwubV9pY29uVVJMLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgaWNvblVSTHMtPmFwcGVuZCh1cmwpOworCisgICAgcmV0dXJuIHRydWU7Cit9CiAK
K0ljb25VUkwgRnJhbWVMb2FkZXI6OmdldERlZmF1bHRJY29uVVJMKEljb25UeXBlIGljb25UeXBl
KQorewogICAgIC8vIERvbid0IHJldHVybiBhIGZhdmljb24gaWNvblVSTCB1bmxlc3Mgd2UncmUg
aHR0cCBvciBodHRwcwogICAgIEtVUkwgZG9jdW1lbnRVUkwgPSBtX2ZyYW1lLT5kb2N1bWVudCgp
LT51cmwoKTsKICAgICBpZiAoIWRvY3VtZW50VVJMLnByb3RvY29sSW5IVFRQRmFtaWx5KCkpCi0g
ICAgICAgIHJldHVybiBLVVJMKCk7CisgICAgICAgIHJldHVybiBJY29uVVJMKCk7CiAKICAgICBL
VVJMIHVybDsKICAgICBib29sIGNvdWxkU2V0UHJvdG9jb2wgPSB1cmwuc2V0UHJvdG9jb2woZG9j
dW1lbnRVUkwucHJvdG9jb2woKSk7CkBAIC00ODYsOCArNTI1LDIxIEBAIEtVUkwgRnJhbWVMb2Fk
ZXI6Omljb25VUkwoKQogICAgIHVybC5zZXRIb3N0KGRvY3VtZW50VVJMLmhvc3QoKSk7CiAgICAg
aWYgKGRvY3VtZW50VVJMLmhhc1BvcnQoKSkKICAgICAgICAgdXJsLnNldFBvcnQoZG9jdW1lbnRV
UkwucG9ydCgpKTsKLSAgICB1cmwuc2V0UGF0aCgiL2Zhdmljb24uaWNvIik7Ci0gICAgcmV0dXJu
IHVybDsKKyAgICBpZiAoaWNvblR5cGUgPT0gRmF2aWNvbikgeworICAgICAgICB1cmwuc2V0UGF0
aCgiL2Zhdmljb24uaWNvIik7CisgICAgICAgIHJldHVybiBJY29uVVJMKEtVUkwoUGFyc2VkVVJM
U3RyaW5nLCB1cmwpLCBGYXZpY29uKTsKKyAgICB9CisjaWYgRU5BQkxFKFRPVUNIX0lDT05fTE9B
RElORykKKyAgICBpZiAoaWNvblR5cGUgPT0gVG91Y2hQcmVjb21wb3NlZEljb24pIHsKKyAgICAg
ICAgdXJsLnNldFBhdGgoIi9hcHBsZS10b3VjaC1pY29uLXByZWNvbXBvc2VkLnBuZyIpOworICAg
ICAgICByZXR1cm4gSWNvblVSTChLVVJMKFBhcnNlZFVSTFN0cmluZywgdXJsKSwgVG91Y2hQcmVj
b21wb3NlZEljb24pOworICAgIH0KKyAgICBpZiAoaWNvblR5cGUgPT0gVG91Y2hJY29uKSB7Cisg
ICAgICAgIHVybC5zZXRQYXRoKCIvYXBwbGUtdG91Y2gtaWNvbi5wbmciKTsKKyAgICAgICAgcmV0
dXJuIEljb25VUkwoS1VSTChQYXJzZWRVUkxTdHJpbmcsIHVybCksIFRvdWNoSWNvbik7CisgICAg
fQorI2VuZGlmCisgICAgcmV0dXJuIEljb25VUkwoKTsKIH0KIAogYm9vbCBGcmFtZUxvYWRlcjo6
ZGlkT3BlblVSTChjb25zdCBLVVJMJiB1cmwpCkBAIC0zMzU3LDcgKzM0MDksNyBAQCB2b2lkIEZy
YW1lTG9hZGVyOjpzZXRUaXRsZShjb25zdCBTdHJpbmdXCiAgICAgZG9jdW1lbnRMb2FkZXIoKS0+
c2V0VGl0bGUodGl0bGUpOwogfQogCi12b2lkIEZyYW1lTG9hZGVyOjpzZXRJY29uVVJMKGNvbnN0
IFN0cmluZyYgaWNvblVSTCkKK3ZvaWQgRnJhbWVMb2FkZXI6OnNldEljb25VUkwoY29uc3QgSWNv
blVSTCYgaWNvblVSTCkKIHsKICAgICBkb2N1bWVudExvYWRlcigpLT5zZXRJY29uVVJMKGljb25V
UkwpOwogfQpAQCAtMzQzNSwxMCArMzQ4NywxMCBAQCB2b2lkIEZyYW1lTG9hZGVyOjpkaWRDaGFu
Z2VUaXRsZShEb2N1bWVuCiAgICAgfQogfQogCi12b2lkIEZyYW1lTG9hZGVyOjpkaWRDaGFuZ2VJ
Y29ucyhEb2N1bWVudExvYWRlciogbG9hZGVyKQordm9pZCBGcmFtZUxvYWRlcjo6ZGlkQ2hhbmdl
SWNvbnMoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgSWNvblR5cGUgdHlwZSkKIHsKICAgICBpZiAo
bG9hZGVyID09IG1fZG9jdW1lbnRMb2FkZXIpCi0gICAgICAgIG1fY2xpZW50LT5kaXNwYXRjaERp
ZENoYW5nZUljb25zKCk7CisgICAgICAgIG1fY2xpZW50LT5kaXNwYXRjaERpZENoYW5nZUljb25z
KHR5cGUpOwogfQogCiB2b2lkIEZyYW1lTG9hZGVyOjpkaXNwYXRjaERpZENvbW1pdExvYWQoKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgJKHJldmlzaW9uIDg1NzUxKQorKysg
U291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2
LDYgKzM2LDcgQEAKICNpbmNsdWRlICJGcmFtZUxvYWRlclR5cGVzLmgiCiAjaW5jbHVkZSAiSGlz
dG9yeUNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJJY29uRGF0YWJhc2VCYXNlLmgiCisjaW5jbHVk
ZSAiSWNvblVSTC5oIgogI2luY2x1ZGUgIlBvbGljeUNoZWNrZXIuaCIKICNpbmNsdWRlICJSZXNv
dXJjZUxvYWROb3RpZmllci5oIgogI2luY2x1ZGUgIlN1YmZyYW1lTG9hZGVyLmgiCkBAIC0xOTEs
NyArMTkyLDcgQEAgcHVibGljOgogICAgIGJvb2wgc3ViZnJhbWVJc0xvYWRpbmcoKSBjb25zdDsK
ICAgICB2b2lkIHdpbGxDaGFuZ2VUaXRsZShEb2N1bWVudExvYWRlciopOwogICAgIHZvaWQgZGlk
Q2hhbmdlVGl0bGUoRG9jdW1lbnRMb2FkZXIqKTsKLSAgICB2b2lkIGRpZENoYW5nZUljb25zKERv
Y3VtZW50TG9hZGVyKik7CisgICAgdm9pZCBkaWRDaGFuZ2VJY29ucyhEb2N1bWVudExvYWRlcios
IEljb25UeXBlKTsKIAogICAgIEZyYW1lTG9hZFR5cGUgbG9hZFR5cGUoKSBjb25zdDsKIApAQCAt
MjMzLDcgKzIzNCwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRFbmREb2N1bWVudCgpOwogICAg
IHZvaWQgd2lsbFNldEVuY29kaW5nKCk7CiAKKyAgICAvLyBSZXR1cm5zIGZhdmljb24uCiAgICAg
S1VSTCBpY29uVVJMKCk7CisKKyAgICAvLyBSZXR1cm5zIHRoZSBnaXZlbiBpY29uVHlwZXMnIElj
b25VUkxzLCBpY29uVHlwZXMgY291bGQgYmUgYW55IGNvbWJpbmF0aW9uIG9mIEljb25UeXBlLgor
ICAgIEljb25VUkxzIGljb25VUkxzKGludCBpY29uVHlwZXMpOwogICAgIHZvaWQgY29tbWl0SWNv
blVSTFRvSWNvbkRhdGFiYXNlKGNvbnN0IEtVUkwmKTsKIAogICAgIEtVUkwgYmFzZVVSTCgpIGNv
bnN0OwpAQCAtMjg0LDcgKzI4OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNhbmNlbEFuZENsZWFy
KCk7CiAKICAgICB2b2lkIHNldFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mKTsKLSAg
ICB2b2lkIHNldEljb25VUkwoY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBzZXRJY29uVVJMKGNv
bnN0IEljb25VUkwmKTsKIAogICAgIHZvaWQgY29tbWl0UHJvdmlzaW9uYWxMb2FkKCk7CiAgICAg
Ym9vbCBpc0xvYWRpbmdGcm9tQ2FjaGVkUGFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fbG9hZGluZ0Zy
b21DYWNoZWRQYWdlOyB9CkBAIC00MjgsNiArNDMzLDkgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQg
dXBkYXRlU2FuZGJveEZsYWdzKCk7CiAKKyAgICBib29sIGZpbGxJY29uVVJMKEljb25UeXBlLCBJ
Y29uVVJMcyopOworICAgIEljb25VUkwgZ2V0RGVmYXVsdEljb25VUkwoSWNvblR5cGUpOworCiAg
ICAgRnJhbWUqIG1fZnJhbWU7CiAgICAgRnJhbWVMb2FkZXJDbGllbnQqIG1fY2xpZW50OwogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAkocmV2aXNpb24g
ODU3NTEpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogI2RlZmluZSBGcmFtZUxvYWRlckNsaWVudF9o
CiAKICNpbmNsdWRlICJGcmFtZUxvYWRlclR5cGVzLmgiCisjaW5jbHVkZSAiSWNvblVSTC5oIgog
I2luY2x1ZGUgIlNjcm9sbFR5cGVzLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CkBAIC0xNDEsNyArMTQyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbigpID0gMDsKICAg
ICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkU3RhcnRQcm92aXNpb25hbExvYWQoKSA9IDA7
CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBTdHJp
bmdXaXRoRGlyZWN0aW9uJikgPSAwOwotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRD
aGFuZ2VJY29ucygpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdl
SWNvbnMoSWNvblR5cGUpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ29t
bWl0TG9hZCgpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbFByb3Zp
c2lvbmFsTG9hZChjb25zdCBSZXNvdXJjZUVycm9yJikgPSAwOwogICAgICAgICB2aXJ0dWFsIHZv
aWQgZGlzcGF0Y2hEaWRGYWlsTG9hZChjb25zdCBSZXNvdXJjZUVycm9yJikgPSAwOwpJbmRleDog
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwkocmV2aXNpb24gODU3NTEpCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwxOSBAQAorMjAxMS0wNC0yMiAgVGFvIEJhaSAgPG1pY2hh
ZWxiYWlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFBvcHVsYXRlIHRvdWNoLWljb24gdXJsIHRvIEZyYW1lTG9hZGVyQ2xpZW50
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01OTE0Mwor
CisgICAgICAgIFJlc3BlY3RlZCB0aGUgY2hhbmdlIG9mIEZyYW1lTG9hZGVyQ2xpZW50LgorICAg
ICAgICBBZGRlZCBXZWJJY29uVVJMIGFuZCBXZWJJY29uVHlwZSByZXNwb25kaW5nIHRoZSBuZXcg
SWNvblVSTCBhbmQgSWNvblR5cGUuCisgICAgICAgIFN1cHBvcnRlZCB0byBnZXQgdGhlIG11bHRp
cGxlIGljb24gdXJscy4KKworICAgICAgICAqIENvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVz
LnhjY29uZmlnOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6
ZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oOgorCiAyMDExLTA1LTAzICBBZGFtIFJvYmVuICA8
YXJvYmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgV2ViUGFnZVByb3h5OjpzZXREcmF3
aW5nQXJlYQpJbmRleDogU291cmNlL1dlYktpdDIvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmlu
ZXMueGNjb25maWcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ29uZmlndXJhdGlvbnMv
RmVhdHVyZURlZmluZXMueGNjb25maWcJKHJldmlzaW9uIDg1NzUxKQorKysgU291cmNlL1dlYktp
dDIvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcJKHdvcmtpbmcgY29weSkK
QEAgLTExOCw2ICsxMTgsOCBAQCBFTkFCTEVfVklERU9fVFJBQ0sgPSA7CiAKIEVOQUJMRV9NRURJ
QV9TVEFUSVNUSUNTID0gOwogCitFTkFCTEVfVE9VQ0hfSUNPTl9MT0FESU5HID0gOworCiBFTkFC
TEVfV0VCX0FVRElPID0gOwogCiBFTkFCTEVfV0VCX1NPQ0tFVFMgPSAkKEVOQUJMRV9XRUJfU09D
S0VUU18kKFJFQUxfUExBVEZPUk1fTkFNRSkpOwpAQCAtMTMyLDQgKzEzNCw0IEBAIEVOQUJMRV9Y
SFRNTE1QID0gOwogRU5BQkxFX1hQQVRIID0gRU5BQkxFX1hQQVRIOwogRU5BQkxFX1hTTFQgPSBF
TkFCTEVfWFNMVDsKIAotRkVBVFVSRV9ERUZJTkVTID0gJChFTkFCTEVfTElOS19QUkVGRVRDSCkg
JChFTkFCTEVfQUNDRUxFUkFURURfMkRfQ0FOVkFTKSAkKEVOQUJMRV9XRUJHTCkgJChFTkFCTEVf
M0RfUkVOREVSSU5HKSAkKEVOQUJMRV9BTklNQVRJT05fQVBJKSAkKEVOQUJMRV9CTE9CKSAkKEVO
QUJMRV9DSEFOTkVMX01FU1NBR0lORykgJChFTkFCTEVfQ0xJRU5UX0JBU0VEX0dFT0xPQ0FUSU9O
KSAkKEVOQUJMRV9EQVRBQkFTRSkgJChFTkFCTEVfREFUQUxJU1QpICQoRU5BQkxFX0RBVEFfVFJB
TlNGRVJfSVRFTVMpICQoRU5BQkxFX0RFVEFJTFMpICQoRU5BQkxFX0RFVklDRV9PUklFTlRBVElP
TikgJChFTkFCTEVfRElSRUNUT1JZX1VQTE9BRCkgJChFTkFCTEVfRE9NX1NUT1JBR0UpICQoRU5B
QkxFX0VWRU5UU09VUkNFKSAkKEVOQUJMRV9GSUxURVJTKSAkKEVOQUJMRV9GSUxFX1NZU1RFTSkg
JChFTkFCTEVfRlVMTFNDUkVFTl9BUEkpICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9J
Q09OREFUQUJBU0UpICQoRU5BQkxFX0lOREVYRURfREFUQUJBU0UpICQoRU5BQkxFX0lOUFVUX1NQ
RUVDSCkgJChFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dFUikgJChFTkFCTEVfTUFUSE1MKSAkKEVO
QUJMRV9NRVRFUl9UQUcpICQoRU5BQkxFX05PVElGSUNBVElPTlMpICQoRU5BQkxFX09GRkxJTkVf
V0VCX0FQUExJQ0FUSU9OUykgJChFTkFCTEVfUEFHRV9WSVNJQklMSVRZX0FQSSkgJChFTkFCTEVf
UFJPR1JFU1NfVEFHKSAkKEVOQUJMRV9SRUdJU1RFUl9QUk9UT0NPTF9IQU5ETEVSKSAkKEVOQUJM
RV9RVU9UQSkgJChFTkFCTEVfU0hBUkVEX1dPUktFUlMpICQoRU5BQkxFX1NWRykgJChFTkFCTEVf
U1ZHX0FOSU1BVElPTikgJChFTkFCTEVfU1ZHX0FTX0lNQUdFKSAkKEVOQUJMRV9TVkdfRE9NX09C
SkNfQklORElOR1MpICQoRU5BQkxFX1NWR19GT05UUykgJChFTkFCTEVfU1ZHX0ZPUkVJR05fT0JK
RUNUKSAkKEVOQUJMRV9TVkdfVVNFKSAkKEVOQUJMRV9WSURFTykgJChFTkFCTEVfVklERU9fVFJB
Q0spICQoRU5BQkxFX01FRElBX1NUQVRJU1RJQ1MpICQoRU5BQkxFX1dFQl9BVURJTykgJChFTkFC
TEVfV0VCX1NPQ0tFVFMpICQoRU5BQkxFX1dFQl9USU1JTkcpICQoRU5BQkxFX1dPUktFUlMpICQo
RU5BQkxFX1hIVE1MTVApICQoRU5BQkxFX1hQQVRIKSAkKEVOQUJMRV9YU0xUKTsKK0ZFQVRVUkVf
REVGSU5FUyA9ICQoRU5BQkxFX0xJTktfUFJFRkVUQ0gpICQoRU5BQkxFX0FDQ0VMRVJBVEVEXzJE
X0NBTlZBUykgJChFTkFCTEVfV0VCR0wpICQoRU5BQkxFXzNEX1JFTkRFUklORykgJChFTkFCTEVf
QU5JTUFUSU9OX0FQSSkgJChFTkFCTEVfQkxPQikgJChFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcp
ICQoRU5BQkxFX0NMSUVOVF9CQVNFRF9HRU9MT0NBVElPTikgJChFTkFCTEVfREFUQUJBU0UpICQo
RU5BQkxFX0RBVEFMSVNUKSAkKEVOQUJMRV9EQVRBX1RSQU5TRkVSX0lURU1TKSAkKEVOQUJMRV9E
RVRBSUxTKSAkKEVOQUJMRV9ERVZJQ0VfT1JJRU5UQVRJT04pICQoRU5BQkxFX0RJUkVDVE9SWV9V
UExPQUQpICQoRU5BQkxFX0RPTV9TVE9SQUdFKSAkKEVOQUJMRV9FVkVOVFNPVVJDRSkgJChFTkFC
TEVfRklMVEVSUykgJChFTkFCTEVfRklMRV9TWVNURU0pICQoRU5BQkxFX0ZVTExTQ1JFRU5fQVBJ
KSAkKEVOQUJMRV9HRU9MT0NBVElPTikgJChFTkFCTEVfSUNPTkRBVEFCQVNFKSAkKEVOQUJMRV9J
TkRFWEVEX0RBVEFCQVNFKSAkKEVOQUJMRV9JTlBVVF9TUEVFQ0gpICQoRU5BQkxFX0pBVkFTQ1JJ
UFRfREVCVUdHRVIpICQoRU5BQkxFX01BVEhNTCkgJChFTkFCTEVfTUVURVJfVEFHKSAkKEVOQUJM
RV9OT1RJRklDQVRJT05TKSAkKEVOQUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpICQoRU5B
QkxFX1BBR0VfVklTSUJJTElUWV9BUEkpICQoRU5BQkxFX1BST0dSRVNTX1RBRykgJChFTkFCTEVf
UkVHSVNURVJfUFJPVE9DT0xfSEFORExFUikgJChFTkFCTEVfUVVPVEEpICQoRU5BQkxFX1NIQVJF
RF9XT1JLRVJTKSAkKEVOQUJMRV9TVkcpICQoRU5BQkxFX1NWR19BTklNQVRJT04pICQoRU5BQkxF
X1NWR19BU19JTUFHRSkgJChFTkFCTEVfU1ZHX0RPTV9PQkpDX0JJTkRJTkdTKSAkKEVOQUJMRV9T
VkdfRk9OVFMpICQoRU5BQkxFX1NWR19GT1JFSUdOX09CSkVDVCkgJChFTkFCTEVfU1ZHX1VTRSkg
JChFTkFCTEVfVE9VQ0hfSUNPTl9MT0FESU5HKSAkKEVOQUJMRV9WSURFTykgJChFTkFCTEVfVklE
RU9fVFJBQ0spICQoRU5BQkxFX01FRElBX1NUQVRJU1RJQ1MpICQoRU5BQkxFX1dFQl9BVURJTykg
JChFTkFCTEVfV0VCX1NPQ0tFVFMpICQoRU5BQkxFX1dFQl9USU1JTkcpICQoRU5BQkxFX1dPUktF
UlMpICQoRU5BQkxFX1hIVE1MTVApICQoRU5BQkxFX1hQQVRIKSAkKEVOQUJMRV9YU0xUKTsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCShyZXZpc2lvbiA4NTc1MSkKKysr
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MTgsNyArNDE4LDcgQEAgdm9pZCBXZWJGcmFt
ZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRSZQogICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6RGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWUobV9mcmFtZS0+ZnJhbWVJRCgp
LCB0aXRsZS5zdHJpbmcoKSwgSW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29kZXIodXNlckRh
dGEuZ2V0KCkpKSk7CiB9CiAKLXZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlk
Q2hhbmdlSWNvbnMoKQordm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDaGFu
Z2VJY29ucyhXZWJDb3JlOjpJY29uVHlwZSkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQpJ
bmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAkocmV2aXNpb24gODU3NTEpCisrKyBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTg1LDcgKzg1LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0
dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbigpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNw
YXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
RGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFdlYkNvcmU6OlN0cmluZ1dpdGhEaXJlY3Rpb24mKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygpOworICAgIHZpcnR1YWwgdm9p
ZCBkaXNwYXRjaERpZENoYW5nZUljb25zKFdlYkNvcmU6Okljb25UeXBlKTsKICAgICB2aXJ0dWFs
IHZvaWQgZGlzcGF0Y2hEaWRDb21taXRMb2FkKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
RGlkRmFpbFByb3Zpc2lvbmFsTG9hZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAg
ICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbExvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvciYpOwpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg1NzUx
KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwxNiBAQAorMjAxMS0wNC0yMiAgVGFvIEJhaSAgPG1pY2hhZWxiYWlAY2hyb21pdW0u
b3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBv
cHVsYXRlIHRvdWNoLWljb24gdXJsIHRvIEZyYW1lTG9hZGVyQ2xpZW50CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01OTE0MworCisgICAgICAgIFJlc3Bl
Y3RlZCB0aGUgY2hhbmdlIG9mIEZyYW1lTG9hZGVyQ2xpZW50LgorCisgICAgICAgICogc3JjL0Zy
YW1lTG9hZGVyQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xp
ZW50SW1wbDo6ZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucyk6CisgICAgICAgICogc3JjL0ZyYW1lTG9h
ZGVyQ2xpZW50SW1wbC5oOgorCiAyMDExLTA1LTAzICBKdXN0aW4gTm92b3NhZCAgPGp1bm92QGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJ1c3NlbGwuCkluZGV4
OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50
SW1wbC5jcHAJKHJldmlzaW9uIDg1NzUxKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
RnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzU3LDcgKzc1Nyw3
IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRJbXBsOjpkaXNwYXRjaERpZFIKICAgICAgICAgbV93
ZWJGcmFtZS0+Y2xpZW50KCktPmRpZFJlY2VpdmVUaXRsZShtX3dlYkZyYW1lLCB0aXRsZS5zdHJp
bmcoKSwgdGl0bGUuZGlyZWN0aW9uKCkgPT0gTFRSID8gV2ViVGV4dERpcmVjdGlvbkxlZnRUb1Jp
Z2h0IDogV2ViVGV4dERpcmVjdGlvblJpZ2h0VG9MZWZ0KTsKIH0KIAotdm9pZCBGcmFtZUxvYWRl
ckNsaWVudEltcGw6OmRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoKQordm9pZCBGcmFtZUxvYWRlckNs
aWVudEltcGw6OmRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoV2ViQ29yZTo6SWNvblR5cGUgdHlwZSkK
IHsKICAgICBpZiAobV93ZWJGcmFtZS0+Y2xpZW50KCkpCiAgICAgICAgIG1fd2ViRnJhbWUtPmNs
aWVudCgpLT5kaWRDaGFuZ2VJY29ucyhtX3dlYkZyYW1lKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5oCShyZXZpc2lvbiA4
NTc1MSkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1w
bC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDUsNyArMTA1LDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVJY29uKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoRGlkU3RhcnRQcm92aXNpb25hbExvYWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hE
aWRSZWNlaXZlVGl0bGUoY29uc3QgV2ViQ29yZTo6U3RyaW5nV2l0aERpcmVjdGlvbiYpOwotICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZUljb25zKCk7CisgICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoV2ViQ29yZTo6SWNvblR5cGUpOwogICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaERpZENvbW1pdExvYWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hE
aWRGYWlsUHJvdmlzaW9uYWxMb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKICAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGYWlsTG9hZChjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yJik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCShyZXZpc2lvbiA4NTc1MSkKKysrIFNvdXJj
ZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisy
MDExLTA0LTIyICBUYW8gQmFpICA8bWljaGFlbGJhaUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUG9wdWxhdGUgdG91Y2gtaWNv
biB1cmwgdG8gRnJhbWVMb2FkZXJDbGllbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTU5MTQzCisKKyAgICAgICAgUmVzcGVjdCB0aGUgaW50ZXJmYWNl
IGNoYW5nZSBpbiBGcmFtZUxvYWRlckNsaWVudAorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
RnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJD
bGllbnRFZmw6OmRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMpOgorICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmg6CisKIDIwMTEtMDUtMDQgIEd5dXlvdW5nIEtpbSAg
PGd5dXlvdW5nLmtpbUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRo
IFJvaGRlIENocmlzdGlhbnNlbi4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBw
b3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHAJKHJldmlzaW9uIDg1
NzUxKQorKysgU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGll
bnRFZmwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01ODcsNyArNTg3LDcgQEAgdm9pZCBGcmFtZUxv
YWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hEaWRSZQogICAgIGV3a192aWV3X3RpdGxlX3NldChtX3Zp
ZXcsIGNzLmRhdGEoKSk7CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNo
RGlkQ2hhbmdlSWNvbnMoKQordm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hEaWRD
aGFuZ2VJY29ucyhXZWJDb3JlOjpJY29uVHlwZSkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwog
fQpJbmRleDogU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGll
bnRFZmwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9G
cmFtZUxvYWRlckNsaWVudEVmbC5oCShyZXZpc2lvbiA4NTc1MSkKKysrIFNvdXJjZS9XZWJLaXQv
ZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEwMyw3ICsxMDMsNyBAQCBjbGFzcyBGcmFtZUxvYWRlckNsaWVudEVmbCA6IHB1YmxpYyBG
cmFtCiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUljb24oKTsKICAgICB2aXJ0
dWFsIHZvaWQgZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpOwogICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJik7
Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoKTsKKyAgICB2aXJ0dWFs
IHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucyhXZWJDb3JlOjpJY29uVHlwZSk7CiAgICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoRGlkQ29tbWl0TG9hZCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNw
YXRjaERpZEZhaWxQcm92aXNpb25hbExvYWQoY29uc3QgUmVzb3VyY2VFcnJvciYpOwogICAgIHZp
cnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxMb2FkKGNvbnN0IFJlc291cmNlRXJyb3ImKTsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L2d0ay9DaGFuZ2VMb2cJKHJldmlzaW9uIDg1NzUxKQorKysgU291cmNlL1dlYktpdC9ndGsv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTEtMDQtMjIgIFRh
byBCYWkgIDxtaWNoYWVsYmFpQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQb3B1bGF0ZSB0b3VjaC1pY29uIHVybCB0byBGcmFt
ZUxvYWRlckNsaWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NTkxNDMKKworICAgICAgICBSZXNwZWN0IHRoZSBpbnRlcmZhY2UgY2hhbmdlIGluIEZy
YW1lTG9hZGVyQ2xpZW50LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJD
bGllbnRHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0
Y2hEaWRDaGFuZ2VJY29ucyk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJD
bGllbnRHdGsuaDoKKwogMjAxMS0wNS0wMyAgSnVsaWVuIENoYWZmcmFpeCAgPGpjaGFmZnJhaXhA
Y29kZWF1cm9yYS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGltaXRyaSBHbGF6a292LgpJ
bmRleDogU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRH
dGsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Zy
YW1lTG9hZGVyQ2xpZW50R3RrLmNwcAkocmV2aXNpb24gODU3NTEpCisrKyBTb3VyY2UvV2ViS2l0
L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTk2OSw3ICs5NjksNyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERp
ZFJlY2VpCiAgICAgfQogfQogCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENo
YW5nZUljb25zKCkKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ2hhbmdlSWNv
bnMoV2ViQ29yZTo6SWNvblR5cGUpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KSW5kZXg6
IFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2Fk
ZXJDbGllbnRHdGsuaAkocmV2aXNpb24gODU3NTEpCisrKyBTb3VyY2UvV2ViS2l0L2d0ay9XZWJD
b3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5oCSh3b3JraW5nIGNvcHkpCkBAIC04Miw3
ICs4Miw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0
Y2hEaWRSZWNlaXZlSWNvbigpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRTdGFy
dFByb3Zpc2lvbmFsTG9hZCgpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNl
aXZlVGl0bGUoY29uc3QgV2ViQ29yZTo6U3RyaW5nV2l0aERpcmVjdGlvbiYpOwotICAgICAgICB2
aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygpOworICAgICAgICB2aXJ0dWFsIHZv
aWQgZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucyhXZWJDb3JlOjpJY29uVHlwZSk7CiAgICAgICAgIHZp
cnR1YWwgdm9pZCBkaXNwYXRjaERpZENvbW1pdExvYWQoKTsKICAgICAgICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9hZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yJik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxMb2FkKGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlRXJyb3ImKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDg1
NzUxKQorKysgU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMTcgQEAKKzIwMTEtMDQtMjIgIFRhbyBCYWkgIDxtaWNoYWVsYmFpQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQb3B1
bGF0ZSB0b3VjaC1pY29uIHVybCB0byBGcmFtZUxvYWRlckNsaWVudAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTkxNDMKKworICAgICAgICBSZXNwZWN0
IHRoZSBpbnRlcmZhY2UgY2hhbmdlIGluIEZyYW1lTG9hZGVyQ2xpZW50LgorCisgICAgICAgICog
Q29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWc6CisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50
OjpkaXNwYXRjaERpZENoYW5nZUljb25zKToKKwogMjAxMS0wNS0wMyAgSnVsaWVuIENoYWZmcmFp
eCAgPGpjaGFmZnJhaXhAY29kZWF1cm9yYS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGlt
aXRyaSBHbGF6a292LgpJbmRleDogU291cmNlL1dlYktpdC9tYWMvQ29uZmlndXJhdGlvbnMvRmVh
dHVyZURlZmluZXMueGNjb25maWcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvQ29u
ZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcJKHJldmlzaW9uIDg1NzUxKQorKysg
U291cmNlL1dlYktpdC9tYWMvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcJ
KHdvcmtpbmcgY29weSkKQEAgLTExOCw2ICsxMTgsOCBAQCBFTkFCTEVfVklERU9fVFJBQ0sgPSA7
CiAKIEVOQUJMRV9NRURJQV9TVEFUSVNUSUNTID0gOwogCitFTkFCTEVfVE9VQ0hfSUNPTl9MT0FE
SU5HID0gOworCiBFTkFCTEVfV0VCX0FVRElPID0gOwogCiBFTkFCTEVfV0VCX1NPQ0tFVFMgPSAk
KEVOQUJMRV9XRUJfU09DS0VUU18kKFJFQUxfUExBVEZPUk1fTkFNRSkpOwpAQCAtMTMyLDQgKzEz
NCw0IEBAIEVOQUJMRV9YSFRNTE1QID0gOwogRU5BQkxFX1hQQVRIID0gRU5BQkxFX1hQQVRIOwog
RU5BQkxFX1hTTFQgPSBFTkFCTEVfWFNMVDsKIAotRkVBVFVSRV9ERUZJTkVTID0gJChFTkFCTEVf
TElOS19QUkVGRVRDSCkgJChFTkFCTEVfQUNDRUxFUkFURURfMkRfQ0FOVkFTKSAkKEVOQUJMRV9X
RUJHTCkgJChFTkFCTEVfM0RfUkVOREVSSU5HKSAkKEVOQUJMRV9BTklNQVRJT05fQVBJKSAkKEVO
QUJMRV9CTE9CKSAkKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORykgJChFTkFCTEVfQ0xJRU5UX0JB
U0VEX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9EQVRBQkFTRSkgJChFTkFCTEVfREFUQUxJU1QpICQo
RU5BQkxFX0RBVEFfVFJBTlNGRVJfSVRFTVMpICQoRU5BQkxFX0RFVEFJTFMpICQoRU5BQkxFX0RF
VklDRV9PUklFTlRBVElPTikgJChFTkFCTEVfRElSRUNUT1JZX1VQTE9BRCkgJChFTkFCTEVfRE9N
X1NUT1JBR0UpICQoRU5BQkxFX0VWRU5UU09VUkNFKSAkKEVOQUJMRV9GSUxURVJTKSAkKEVOQUJM
RV9GSUxFX1NZU1RFTSkgJChFTkFCTEVfRlVMTFNDUkVFTl9BUEkpICQoRU5BQkxFX0dFT0xPQ0FU
SU9OKSAkKEVOQUJMRV9JQ09OREFUQUJBU0UpICQoRU5BQkxFX0lOREVYRURfREFUQUJBU0UpICQo
RU5BQkxFX0lOUFVUX1NQRUVDSCkgJChFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dFUikgJChFTkFC
TEVfTUFUSE1MKSAkKEVOQUJMRV9NRVRFUl9UQUcpICQoRU5BQkxFX05PVElGSUNBVElPTlMpICQo
RU5BQkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUykgJChFTkFCTEVfUEFHRV9WSVNJQklMSVRZ
X0FQSSkgJChFTkFCTEVfUFJPR1JFU1NfVEFHKSAkKEVOQUJMRV9SRUdJU1RFUl9QUk9UT0NPTF9I
QU5ETEVSKSAkKEVOQUJMRV9RVU9UQSkgJChFTkFCTEVfU0hBUkVEX1dPUktFUlMpICQoRU5BQkxF
X1NWRykgJChFTkFCTEVfU1ZHX0FOSU1BVElPTikgJChFTkFCTEVfU1ZHX0FTX0lNQUdFKSAkKEVO
QUJMRV9TVkdfRE9NX09CSkNfQklORElOR1MpICQoRU5BQkxFX1NWR19GT05UUykgJChFTkFCTEVf
U1ZHX0ZPUkVJR05fT0JKRUNUKSAkKEVOQUJMRV9TVkdfVVNFKSAkKEVOQUJMRV9WSURFTykgJChF
TkFCTEVfVklERU9fVFJBQ0spICQoRU5BQkxFX01FRElBX1NUQVRJU1RJQ1MpICQoRU5BQkxFX1dF
Ql9BVURJTykgJChFTkFCTEVfV0VCX1NPQ0tFVFMpICQoRU5BQkxFX1dFQl9USU1JTkcpICQoRU5B
QkxFX1dPUktFUlMpICQoRU5BQkxFX1hIVE1MTVApICQoRU5BQkxFX1hQQVRIKSAkKEVOQUJMRV9Y
U0xUKTsKK0ZFQVRVUkVfREVGSU5FUyA9ICQoRU5BQkxFX0xJTktfUFJFRkVUQ0gpICQoRU5BQkxF
X0FDQ0VMRVJBVEVEXzJEX0NBTlZBUykgJChFTkFCTEVfV0VCR0wpICQoRU5BQkxFXzNEX1JFTkRF
UklORykgJChFTkFCTEVfQU5JTUFUSU9OX0FQSSkgJChFTkFCTEVfQkxPQikgJChFTkFCTEVfQ0hB
Tk5FTF9NRVNTQUdJTkcpICQoRU5BQkxFX0NMSUVOVF9CQVNFRF9HRU9MT0NBVElPTikgJChFTkFC
TEVfREFUQUJBU0UpICQoRU5BQkxFX0RBVEFMSVNUKSAkKEVOQUJMRV9EQVRBX1RSQU5TRkVSX0lU
RU1TKSAkKEVOQUJMRV9ERVRBSUxTKSAkKEVOQUJMRV9ERVZJQ0VfT1JJRU5UQVRJT04pICQoRU5B
QkxFX0RJUkVDVE9SWV9VUExPQUQpICQoRU5BQkxFX0RPTV9TVE9SQUdFKSAkKEVOQUJMRV9FVkVO
VFNPVVJDRSkgJChFTkFCTEVfRklMVEVSUykgJChFTkFCTEVfRklMRV9TWVNURU0pICQoRU5BQkxF
X0ZVTExTQ1JFRU5fQVBJKSAkKEVOQUJMRV9HRU9MT0NBVElPTikgJChFTkFCTEVfSUNPTkRBVEFC
QVNFKSAkKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFKSAkKEVOQUJMRV9JTlBVVF9TUEVFQ0gpICQo
RU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIpICQoRU5BQkxFX01BVEhNTCkgJChFTkFCTEVfTUVU
RVJfVEFHKSAkKEVOQUJMRV9OT1RJRklDQVRJT05TKSAkKEVOQUJMRV9PRkZMSU5FX1dFQl9BUFBM
SUNBVElPTlMpICQoRU5BQkxFX1BBR0VfVklTSUJJTElUWV9BUEkpICQoRU5BQkxFX1BST0dSRVNT
X1RBRykgJChFTkFCTEVfUkVHSVNURVJfUFJPVE9DT0xfSEFORExFUikgJChFTkFCTEVfUVVPVEEp
ICQoRU5BQkxFX1NIQVJFRF9XT1JLRVJTKSAkKEVOQUJMRV9TVkcpICQoRU5BQkxFX1NWR19BTklN
QVRJT04pICQoRU5BQkxFX1NWR19BU19JTUFHRSkgJChFTkFCTEVfU1ZHX0RPTV9PQkpDX0JJTkRJ
TkdTKSAkKEVOQUJMRV9TVkdfRk9OVFMpICQoRU5BQkxFX1NWR19GT1JFSUdOX09CSkVDVCkgJChF
TkFCTEVfU1ZHX1VTRSkgJChFTkFCTEVfVE9VQ0hfSUNPTl9MT0FESU5HKSAkKEVOQUJMRV9WSURF
TykgJChFTkFCTEVfVklERU9fVFJBQ0spICQoRU5BQkxFX01FRElBX1NUQVRJU1RJQ1MpICQoRU5B
QkxFX1dFQl9BVURJTykgJChFTkFCTEVfV0VCX1NPQ0tFVFMpICQoRU5BQkxFX1dFQl9USU1JTkcp
ICQoRU5BQkxFX1dPUktFUlMpICQoRU5BQkxFX1hIVE1MTVApICQoRU5BQkxFX1hQQVRIKSAkKEVO
QUJMRV9YU0xUKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAkocmV2aXNpb24gODU3NTEpCisrKyBTb3Vy
Y2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMDIsNyArMTAyLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbigpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFN0
YXJ0UHJvdmlzaW9uYWxMb2FkKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2
ZVRpdGxlKGNvbnN0IFdlYkNvcmU6OlN0cmluZ1dpdGhEaXJlY3Rpb24mKTsKLSAgICB2aXJ0dWFs
IHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygpOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRj
aERpZENoYW5nZUljb25zKFdlYkNvcmU6Okljb25UeXBlKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlz
cGF0Y2hEaWRDb21taXRMb2FkKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbFBy
b3Zpc2lvbmFsTG9hZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAgICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoRGlkRmFpbExvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYp
OwpJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQubW0JKHJldmlzaW9uIDg1NzUxKQorKysgU291cmNlL1dlYktp
dC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTYzMyw3ICs2MzMsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRj
aERpZFJlCiAgICAgICAgIENhbGxGcmFtZUxvYWREZWxlZ2F0ZShpbXBsZW1lbnRhdGlvbnMtPmRp
ZFJlY2VpdmVUaXRsZUZvckZyYW1lRnVuYywgd2ViVmlldywgQHNlbGVjdG9yKHdlYlZpZXc6ZGlk
UmVjZWl2ZVRpdGxlOmZvckZyYW1lOiksIChOU1N0cmluZyAqKXRpdGxlLnN0cmluZygpLCBtX3dl
YkZyYW1lLmdldCgpKTsKIH0KIAotdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hE
aWRDaGFuZ2VJY29ucygpCit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENo
YW5nZUljb25zKFdlYkNvcmU6Okljb25UeXBlKQogewogICAgICAvLyBGSVhNRTogSW1wbGVtZW50
IHRoaXMgdG8gYWxsb3cgY29udGFpbmVyIHRvIHVwZGF0ZSBmYXZpY29uLgogfQpJbmRleDogU291
cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9xdC9D
aGFuZ2VMb2cJKHJldmlzaW9uIDg1NzUxKQorKysgU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAxMS0wNC0yMiAgVGFvIEJhaSAgPG1p
Y2hhZWxiYWlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFBvcHVsYXRlIHRvdWNoLWljb24gdXJsIHRvIEZyYW1lTG9hZGVyQ2xp
ZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01OTE0
MworCisgICAgICAgIFJlc3BlY3QgdGhlIGludGVyZmFjZSBjaGFuZ2UgaW4gRnJhbWVMb2FkZXJD
bGllbnQuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkQ2hh
bmdlSWNvbnMpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQu
aDoKKwogMjAxMS0wNS0wMyAgSnVsaWVuIENoYWZmcmFpeCAgPGpjaGFmZnJhaXhAY29kZWF1cm9y
YS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGltaXRyaSBHbGF6a292LgpJbmRleDogU291
cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xp
ZW50UXQuY3BwCShyZXZpc2lvbiA4NTc1MSkKKysrIFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1
cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1OSw3ICs0
NTksNyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkUmVjCiB9CiAKIAot
dm9pZCBGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERpZENoYW5nZUljb25zKCkKK3ZvaWQg
RnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucyhXZWJDb3JlOjpJY29u
VHlwZSkKIHsKICAgICBpZiAoZHVtcEZyYW1lTG9hZGVyQ2FsbGJhY2tzKQogICAgICAgICBwcmlu
dGYoIiVzIC0gZGlkQ2hhbmdlSWNvbnNcbiIsIHFQcmludGFibGUoZHJ0RGVzY3JpcHRpb25TdWl0
YWJsZUZvclRlc3RSZXN1bHQobV9mcmFtZSkpKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvV2Vi
Q29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5oCShyZXZpc2lvbiA4
NTc1MSkKKysrIFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGll
bnRRdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTEsNyArMTExLDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVJY29uKCk7CiAgICAgdmlydHVhbCB2b2lkIGRp
c3BhdGNoRGlkU3RhcnRQcm92aXNpb25hbExvYWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0
Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYpOwotICAgIHZpcnR1
YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZUljb25zKCk7CisgICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoRGlkQ2hhbmdlSWNvbnMoV2ViQ29yZTo6SWNvblR5cGUpOwogICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaERpZENvbW1pdExvYWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGYWls
UHJvdmlzaW9uYWxMb2FkKGNvbnN0IFJlc291cmNlRXJyb3ImKTsKICAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hEaWRGYWlsTG9hZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CkluZGV4
OiBTb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC93aW4vQ2hhbmdlTG9nCShyZXZpc2lvbiA4NTc1MSkKKysrIFNvdXJjZS9XZWJLaXQvd2luL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDExLTA0LTIyICBUYW8g
QmFpICA8bWljaGFlbGJhaUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgUG9wdWxhdGUgdG91Y2gtaWNvbiB1cmwgdG8gRnJhbWVM
b2FkZXJDbGllbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTU5MTQzCisKKyAgICAgICAgUmVzcGVjdCB0aGUgaW50ZXJmYWNlIGNoYW5nZSBpbiBGcmFt
ZUxvYWRlckNsaWVudC4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENo
YW5nZUljb25zKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5oOgorCiAyMDExLTA1LTAyICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IEFkYW0gUm9iZW4uCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCShy
ZXZpc2lvbiA4NTc1MSkKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzczLDggKzM3MywxMSBAQCB2
b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJlCiAgICAgICAgIGZyYW1lTG9h
ZERlbGVnYXRlLT5kaWRSZWNlaXZlVGl0bGUod2ViVmlldywgQlN0cmluZyh0aXRsZS5zdHJpbmco
KSksIG1fd2ViRnJhbWUpOwogfQogCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRj
aERpZENoYW5nZUljb25zKCkKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlk
Q2hhbmdlSWNvbnMoV2ViQ29yZTo6SWNvblR5cGUgdHlwZSkKIHsKKyAgICBpZiAodHlwZSAhPSBX
ZWJDb3JlOjpGYXZpY29uKQorICAgICAgICByZXR1cm47CisKICAgICBXZWJWaWV3KiB3ZWJWaWV3
ID0gbV93ZWJGcmFtZS0+d2ViVmlldygpOwogICAgIENPTVB0cjxJV2ViRnJhbWVMb2FkRGVsZWdh
dGVQcml2YXRlPiBmcmFtZUxvYWREZWxlZ2F0ZVByaXY7CiAgICAgaWYgKEZBSUxFRCh3ZWJWaWV3
LT5mcmFtZUxvYWREZWxlZ2F0ZVByaXZhdGUoJmZyYW1lTG9hZERlbGVnYXRlUHJpdikpIHx8ICFm
cmFtZUxvYWREZWxlZ2F0ZVByaXYpCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
d2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgJKHJldmlzaW9uIDg1NzUx
KQorKysgU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtNzAsNyArNzAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUljb24oKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0
Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERp
ZFJlY2VpdmVUaXRsZShjb25zdCBXZWJDb3JlOjpTdHJpbmdXaXRoRGlyZWN0aW9uJik7Ci0gICAg
dmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoKTsKKyAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucyhXZWJDb3JlOjpJY29uVHlwZSk7CiAgICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoRGlkQ29tbWl0TG9hZCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERp
ZEZpbmlzaERvY3VtZW50TG9hZCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZpbmlz
aExvYWQoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luY2UvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvd2luY2UvQ2hhbmdlTG9nCShyZXZpc2lvbiA4NTc1MSkKKysrIFNv
dXJjZS9XZWJLaXQvd2luY2UvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYg
QEAKKzIwMTEtMDQtMjIgIFRhbyBCYWkgIDxtaWNoYWVsYmFpQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQb3B1bGF0ZSB0b3Vj
aC1pY29uIHVybCB0byBGcmFtZUxvYWRlckNsaWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTkxNDMKKworICAgICAgICBSZXNwZWN0IHRoZSBpbnRl
cmZhY2UgY2hhbmdlIGluIEZyYW1lTG9hZGVyQ2xpZW50LgorCisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXaW5DRS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkZyYW1l
TG9hZGVyQ2xpZW50V2luQ0U6OmRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMpOgorICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V2luQ0UuaDoKKwogMjAxMS0wNS0wMSAgUGF0
cmljayBHYW5zdGVyZXIgIDxwYXJvZ2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBbV0lOXSBVbnJl
dmlld2VkIGJ1aWxkZml4IGFmdGVyIHI4NTQzNC4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luY2Uv
V2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXaW5DRS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFdpbkNF
LmNwcAkocmV2aXNpb24gODU3NTEpCisrKyBTb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBw
b3J0L0ZyYW1lTG9hZGVyQ2xpZW50V2luQ0UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNzYsNyAr
Mzc2LDcgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudFdpbkNFOjpkaXNwYXRjaERpZAogICAgIG5v
dEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRXaW5DRTo6ZGlzcGF0
Y2hEaWRDaGFuZ2VJY29ucygpCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50V2luQ0U6OmRpc3BhdGNo
RGlkQ2hhbmdlSWNvbnMoV2ViQ29yZTo6SWNvblR5cGUpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQo
KTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2Fk
ZXJDbGllbnRXaW5DRS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29y
ZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXaW5DRS5oCShyZXZpc2lvbiA4NTc1MSkKKysrIFNv
dXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXaW5DRS5o
CSh3b3JraW5nIGNvcHkpCkBAIC03Nyw3ICs3Nyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbigpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERp
ZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVj
ZWl2ZVRpdGxlKGNvbnN0IFdlYkNvcmU6OlN0cmluZ1dpdGhEaXJlY3Rpb24mKTsKLSAgICB2aXJ0
dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygpOworICAgIHZpcnR1YWwgdm9pZCBkaXNw
YXRjaERpZENoYW5nZUljb25zKFdlYkNvcmU6Okljb25UeXBlKTsKICAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hEaWRDb21taXRMb2FkKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFp
bFByb3Zpc2lvbmFsTG9hZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAgICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbExvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciYpOwpJbmRleDogU291cmNlL1dlYktpdC93eC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC93eC9DaGFuZ2VMb2cJKHJldmlzaW9uIDg1NzUxKQorKysgU291cmNlL1dlYktp
dC93eC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAxMS0wNC0y
MiAgVGFvIEJhaSAgPG1pY2hhZWxiYWlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBvcHVsYXRlIHRvdWNoLWljb24gdXJsIHRv
IEZyYW1lTG9hZGVyQ2xpZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD01OTE0MworCisgICAgICAgIFJlc3BlY3QgdGhlIGludGVyZmFjZSBjaGFuZ2Ug
aW4gRnJhbWVMb2FkZXJDbGllbnQuCisKKyAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0ZyYW1lTG9h
ZGVyQ2xpZW50V3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRXeDo6
ZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucyk6CisgICAgICAgICogV2ViS2l0U3VwcG9ydC9GcmFtZUxv
YWRlckNsaWVudFd4Lmg6CisKIDIwMTEtMDQtMjMgIEtldmluIE9sbGl2aWVyICA8a2V2aW5vQHRo
ZW9sbGl2aWVycy5jb20+CiAKICAgICAgICAgW3d4XSBVbnJldmlld2VkIGJ1aWxkIGZpeC4gRml4
ZWQgY2FwaXRhbGl6YXRpb24gZm9yIGNhc2Ugc2Vuc2l0aXZlIGZpbGVzeXN0ZW1zLgpJbmRleDog
U291cmNlL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRlckNs
aWVudFd4LmNwcAkocmV2aXNpb24gODU3NTEpCisrKyBTb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1
cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyNyw3ICsz
MjcsNyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50V3g6OmRpc3BhdGNoRGlkRmluCiAgICAgfQog
fQogCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50V3g6OmRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoKQor
dm9pZCBGcmFtZUxvYWRlckNsaWVudFd4OjpkaXNwYXRjaERpZENoYW5nZUljb25zKFdlYkNvcmU6
Okljb25UeXBlKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L3d4L1dlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFd4LmgJKHJl
dmlzaW9uIDg1NzUxKQorKysgU291cmNlL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0ZyYW1lTG9h
ZGVyQ2xpZW50V3guaAkod29ya2luZyBjb3B5KQpAQCAtMTA5LDcgKzEwOSw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmluaXNoTG9hZCgp
OwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGaXJzdExheW91dCgpOwogICAgICAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQoKTsK
LSAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoKTsKKyAgICAgICAg
dmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoV2ViQ29yZTo6SWNvblR5cGUpOwog
CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFNob3coKTsKICAgICAgICAgdmlydHVhbCB2
b2lkIGNhbmNlbFBvbGljeUNoZWNrKCk7CkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA4NTc1MSkKKysrIFRvb2xzL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDExLTA1LTAzICBUYW8gQmFpICA8
bWljaGFlbGJhaUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgUG9wdWxhdGUgdG91Y2gtaWNvbiB1cmwgdG8gRnJhbWVMb2FkZXJD
bGllbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU5
MTQzCisKKyAgICAgICAgRGlzYWJsZSB0b3VjaCBpY29uIGJ5IGRlZmF1bHQuIAorCisgICAgICAg
ICogU2NyaXB0cy9idWlsZC13ZWJraXQ6CisKIDIwMTEtMDUtMDQgIE1paGFpIFBhcnBhcml0YSAg
PG1paGFpcEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgT2phbiBWYWZhaS4K
SW5kZXg6IFRvb2xzL1NjcmlwdHMvYnVpbGQtd2Via2l0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Nj
cmlwdHMvYnVpbGQtd2Via2l0CShyZXZpc2lvbiA4NTc1MSkKKysrIFRvb2xzL1NjcmlwdHMvYnVp
bGQtd2Via2l0CSh3b3JraW5nIGNvcHkpCkBAIC0xMTIsNiArMTEyLDcgQEAgbXkgKAogICAgICRz
eXN0ZW1NYWxsb2NTdXBwb3J0LAogICAgICR0aWxlZEJhY2tpbmdTdG9yZVN1cHBvcnQsCiAgICAg
JHRvdWNoRXZlbnRzU3VwcG9ydCwKKyAgICAkdG91Y2hJY29uTG9hZGluZ1N1cHBvcnQsCiAgICAg
JHZpZGVvU3VwcG9ydCwKICAgICAkd2Nzc1N1cHBvcnQsCiAgICAgJHdlYkF1ZGlvU3VwcG9ydCwK
QEAgLTI3Miw2ICsyNzMsOSBAQCBteSBAZmVhdHVyZXMgPSAoCiAgICAgeyBvcHRpb24gPT4gInRv
dWNoLWV2ZW50cyIsIGRlc2MgPT4gIlRvZ2dsZSBUb3VjaCBFdmVudHMgc3VwcG9ydCIsCiAgICAg
ICBkZWZpbmUgPT4gIkVOQUJMRV9UT1VDSF9FVkVOVFMiLCBkZWZhdWx0ID0+IGlzUXQoKSwgdmFs
dWUgPT4gXCR0b3VjaEV2ZW50c1N1cHBvcnQgfSwKIAorICAgIHsgb3B0aW9uID0+ICJ0b3VjaC1p
Y29uLWxvYWRpbmciLCBkZXNjID0+ICJUb2dnbGUgVG91Y2ggSWNvbiBMb2FkaW5nIFN1cHBvcnQi
LAorICAgICAgZGVmaW5lID0+ICJFTkFCTEVfVE9VQ0hfSUNPTl9MT0FESU5HIiwgZGVmYXVsdCA9
PiAwLCB2YWx1ZSA9PiBcJHRvdWNoSWNvbkxvYWRpbmdTdXBwb3J0IH0sCisKICAgICB7IG9wdGlv
biA9PiAidmlkZW8iLCBkZXNjID0+ICJUb2dnbGUgVmlkZW8gc3VwcG9ydCIsCiAgICAgICBkZWZp
bmUgPT4gIkVOQUJMRV9WSURFTyIsIGRlZmF1bHQgPT4gKGlzQXBwbGVXZWJLaXQoKSB8fCBpc0d0
aygpKSwgdmFsdWUgPT4gXCR2aWRlb1N1cHBvcnQgfSwKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>