<?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>159902</bug_id>
          
          <creation_ts>2016-07-18 16:01:02 -0700</creation_ts>
          <short_desc>WebKit nightly fails to build on macOS Sierra</short_desc>
          <delta_ts>2016-07-18 16:55:33 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Anders Carlsson">andersca</reporter>
          <assigned_to name="Anders Carlsson">andersca</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1212151</commentid>
    <comment_count>0</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2016-07-18 16:01:02 -0700</bug_when>
    <thetext>WebKit nightly fails to build on macOS Sierra</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1212165</commentid>
    <comment_count>1</comment_count>
      <attachid>283951</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2016-07-18 16:29:10 -0700</bug_when>
    <thetext>Created attachment 283951
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1212170</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-07-18 16:31:29 -0700</bug_when>
    <thetext>Attachment 283951 did not pass style-queue:

ERROR: Source/WebCore/Modules/applepay/cocoa/PaymentMerchantSessionCocoa.mm:32:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebKit/mac/icu/unicode/ucurr.h:7:  #ifndef header guard has wrong style, please use: ucurr_h  [build/header_guard] [5]
ERROR: Source/WebKit/mac/icu/unicode/ucurr.h:10:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebKit/mac/icu/unicode/ucurr.h:54:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/WebKit/mac/icu/unicode/ucurr.h:56:  The parameter name &quot;ec&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebKit/mac/icu/unicode/ucurr.h:99:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit/mac/icu/unicode/ucurr.h:100:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit/mac/icu/unicode/ucurr.h:113:  The parameter name &quot;key&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebKit/mac/icu/unicode/ucurr.h:135:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit/mac/icu/unicode/ucurr.h:136:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit/mac/icu/unicode/ucurr.h:137:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit/mac/icu/unicode/ucurr.h:138:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit/mac/icu/unicode/ucurr.h:136:  The parameter name &quot;nameStyle&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebKit/mac/icu/unicode/ucurr.h:139:  The parameter name &quot;ec&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebKit/mac/icu/unicode/ucurr.h:139:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit/mac/icu/unicode/ucurr.h:159:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/WebKit/mac/icu/unicode/ucurr.h:163:  The parameter name &quot;ec&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebKit/mac/icu/unicode/ucurr.h:176:  The parameter name &quot;ec&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebKit/mac/icu/unicode/ucurr.h:176:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit/mac/icu/unicode/ucurr.h:189:  The parameter name &quot;ec&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebKit/mac/icu/unicode/ucurr.h:189:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit/mac/icu/unicode/ucurr.h:274:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit/mac/icu/unicode/ucurr.h:275:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit/mac/icu/unicode/ucurr.h:276:  The parameter name &quot;errorCode&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebKit/mac/icu/unicode/ucurr.h:276:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit/mac/icu/unicode/ucurr.h:294:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit/mac/icu/unicode/ucurr.h:294:  The parameter name &quot;date&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebKit/mac/icu/unicode/ucurr.h:295:  The parameter name &quot;ec&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebKit/mac/icu/unicode/ucurr.h:295:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit/mac/icu/unicode/ucurr.h:318:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/WebKit/mac/icu/unicode/ucurr.h:318:  The parameter name &quot;date&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebKit/mac/icu/unicode/ucurr.h:322:  The parameter name &quot;ec&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebKit/mac/icu/unicode/ucurr.h:342:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/spi/cocoa/PassKitSPI.h:43:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/spi/cocoa/PassKitSPI.h:49:  Missing spaces around |  [whitespace/operators] [3]
ERROR: Source/WebCore/platform/spi/cocoa/PassKitSPI.h:52:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WTF/icu/unicode/ucurr.h:7:  #ifndef header guard has wrong style, please use: ucurr_h  [build/header_guard] [5]
ERROR: Source/WTF/icu/unicode/ucurr.h:10:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/icu/unicode/ucurr.h:54:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ucurr.h:56:  The parameter name &quot;ec&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/ucurr.h:99:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ucurr.h:100:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ucurr.h:113:  The parameter name &quot;key&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/ucurr.h:135:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ucurr.h:136:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ucurr.h:137:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ucurr.h:138:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ucurr.h:136:  The parameter name &quot;nameStyle&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/ucurr.h:139:  The parameter name &quot;ec&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/ucurr.h:139:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ucurr.h:159:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ucurr.h:163:  The parameter name &quot;ec&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/ucurr.h:176:  The parameter name &quot;ec&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/ucurr.h:176:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ucurr.h:189:  The parameter name &quot;ec&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/ucurr.h:189:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ucurr.h:274:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ucurr.h:275:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ucurr.h:276:  The parameter name &quot;errorCode&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/ucurr.h:276:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ucurr.h:294:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ucurr.h:294:  The parameter name &quot;date&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/ucurr.h:295:  The parameter name &quot;ec&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/ucurr.h:295:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ucurr.h:318:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ucurr.h:318:  The parameter name &quot;date&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/ucurr.h:322:  The parameter name &quot;ec&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/ucurr.h:342:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/WebCore/icu/unicode/ucurr.h:7:  #ifndef header guard has wrong style, please use: ucurr_h  [build/header_guard] [5]
ERROR: Source/WebCore/icu/unicode/ucurr.h:10:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/icu/unicode/ucurr.h:54:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/WebCore/icu/unicode/ucurr.h:56:  The parameter name &quot;ec&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/icu/unicode/ucurr.h:99:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/icu/unicode/ucurr.h:100:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/icu/unicode/ucurr.h:113:  The parameter name &quot;key&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/icu/unicode/ucurr.h:135:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/icu/unicode/ucurr.h:136:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/icu/unicode/ucurr.h:137:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/icu/unicode/ucurr.h:138:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/icu/unicode/ucurr.h:136:  The parameter name &quot;nameStyle&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/icu/unicode/ucurr.h:139:  The parameter name &quot;ec&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/icu/unicode/ucurr.h:139:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/icu/unicode/ucurr.h:159:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/WebCore/icu/unicode/ucurr.h:163:  The parameter name &quot;ec&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/icu/unicode/ucurr.h:176:  The parameter name &quot;ec&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/icu/unicode/ucurr.h:176:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/icu/unicode/ucurr.h:189:  The parameter name &quot;ec&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/icu/unicode/ucurr.h:189:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/icu/unicode/ucurr.h:274:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/icu/unicode/ucurr.h:275:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/icu/unicode/ucurr.h:276:  The parameter name &quot;errorCode&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/icu/unicode/ucurr.h:276:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/icu/unicode/ucurr.h:294:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/icu/unicode/ucurr.h:294:  The parameter name &quot;date&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/icu/unicode/ucurr.h:295:  The parameter name &quot;ec&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/icu/unicode/ucurr.h:295:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/icu/unicode/ucurr.h:318:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/WebCore/icu/unicode/ucurr.h:318:  The parameter name &quot;date&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/icu/unicode/ucurr.h:322:  The parameter name &quot;ec&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/icu/unicode/ucurr.h:342:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/icu/unicode/ucurr.h:7:  #ifndef header guard has wrong style, please use: ucurr_h  [build/header_guard] [5]
ERROR: Source/JavaScriptCore/icu/unicode/ucurr.h:10:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/icu/unicode/ucurr.h:54:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/icu/unicode/ucurr.h:56:  The parameter name &quot;ec&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/icu/unicode/ucurr.h:99:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/icu/unicode/ucurr.h:100:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/icu/unicode/ucurr.h:113:  The parameter name &quot;key&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/icu/unicode/ucurr.h:135:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/icu/unicode/ucurr.h:136:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/icu/unicode/ucurr.h:137:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/icu/unicode/ucurr.h:138:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/icu/unicode/ucurr.h:136:  The parameter name &quot;nameStyle&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/icu/unicode/ucurr.h:139:  The parameter name &quot;ec&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/icu/unicode/ucurr.h:139:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/icu/unicode/ucurr.h:159:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScrip
tCore/icu/unicode/ucurr.h:163:  The parameter name &quot;ec&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/icu/unicode/ucurr.h:176:  The parameter name &quot;ec&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/icu/unicode/ucurr.h:176:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/icu/unicode/ucurr.h:189:  The parameter name &quot;ec&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/icu/unicode/ucurr.h:189:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/icu/unicode/ucurr.h:274:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/icu/unicode/ucurr.h:275:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/icu/unicode/ucurr.h:276:  The parameter name &quot;errorCode&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/icu/unicode/ucurr.h:276:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/icu/unicode/ucurr.h:294:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/icu/unicode/ucurr.h:294:  The parameter name &quot;date&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/icu/unicode/ucurr.h:295:  The parameter name &quot;ec&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/icu/unicode/ucurr.h:295:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/icu/unicode/ucurr.h:318:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/icu/unicode/ucurr.h:318:  The parameter name &quot;date&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/icu/unicode/ucurr.h:322:  The parameter name &quot;ec&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/icu/unicode/ucurr.h:342:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Total errors found: 132 in 19 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>1212196</commentid>
    <comment_count>3</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2016-07-18 16:55:33 -0700</bug_when>
    <thetext>Committed r203381: &lt;http://trac.webkit.org/changeset/203381&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>283951</attachid>
            <date>2016-07-18 16:29:10 -0700</date>
            <delta_ts>2016-07-18 16:51:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-159902-20160718162816.patch</filename>
            <type>text/plain</type>
            <size>84554</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAzMzUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
NDRhNDk4ZWEzNWFlNWM5YTc0MGJjNWRjMjdhNTY5MmE5YzkxZjIzLi43MjBmZDFkOTQ5ODhlZGNm
YzBhZjFmZmJlMGE1NDRlYWJmM2ExNTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAxNi0wNy0xOCAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUu
Y29tPgorCisgICAgICAgIFdlYktpdCBuaWdodGx5IGZhaWxzIHRvIGJ1aWxkIG9uIG1hY09TIFNp
ZXJyYQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU5
OTAyCisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzI3MzY1NjcyCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBpY3UvdW5pY29kZS91Y3Vyci5oOiBBZGRl
ZC4KKyAgICAgICAgQWRkIHVjdXJyLmggZnJvbSBJQ1UuCisKIDIwMTYtMDctMTYgIEZpbGlwIFBp
emxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBERkcgQ1NFIGlzIGJyb2tlbiBmb3Ig
TXVsdGlHZXRCeU9mZnNldApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV1RGL0NoYW5nZUxvZwppbmRleCA2MzJlNzc3ZGMxMzAwMDQ5MGViNDMyNGE2YThlMjNiOGU3
N2EzZjAwLi5kZTg1MTQ0ZjRiOGRlZjUyYzUyOWU4OTI1NmU0YThiNGZhMjM1MDI2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE0IEBACisyMDE2LTA3LTE4ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBs
ZS5jb20+CisKKyAgICAgICAgV2ViS2l0IG5pZ2h0bHkgZmFpbHMgdG8gYnVpbGQgb24gbWFjT1Mg
U2llcnJhCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NTk5MDIKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vMjczNjU2NzIKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGljdS91bmljb2RlL3VjdXJyLmg6IEFk
ZGVkLgorICAgICAgICBBZGQgdWN1cnIuaCBmcm9tIElDVS4KKwogMjAxNi0wNy0wMiAgRmlsaXAg
UGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIFdURjo6TG9jayBzaG91bGQgYmUg
ZmFpciBldmVudHVhbGx5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjMwZDZhNWQ1MDMxYmU5MmIyOWQwOGRkZmE3
MGM2N2Y5YTIxZTFiNC4uMDk1NTllODBhMjQzYjdlZTMzNDRkNWFmMjU4Njk0ZDBmNDljMWNkMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDE2LTA3LTE4ICBBbmRlcnMgQ2FybHNzb24g
IDxhbmRlcnNjYUBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViS2l0IG5pZ2h0bHkgZmFpbHMgdG8g
YnVpbGQgb24gbWFjT1MgU2llcnJhCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNTk5MDIKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vMjczNjU2NzIKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1vZHVsZXMv
YXBwbGVwYXkvY29jb2EvUGF5bWVudENvY29hLm1tOgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVw
YXkvY29jb2EvUGF5bWVudENvbnRhY3RDb2NvYS5tbToKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxl
cGF5L2NvY29hL1BheW1lbnRNZXJjaGFudFNlc3Npb25Db2NvYS5tbToKKyAgICAgICAgKiBNb2R1
bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRNZXRob2RDb2NvYS5tbToKKyAgICAgICAgVXNlIG5l
dyBQYXNzS2l0U1BJIGhlYWRlci4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgQWRkIG5ldyBQYXNzS2l0U1BJIGhlYWRlci4KKworICAgICAg
ICAqIGljdS91bmljb2RlL3VjdXJyLmg6IEFkZGVkLgorICAgICAgICBBZGQgdWN1cnIuaCBmcm9t
IElDVS4KKworICAgICAgICAqIHBsYXRmb3JtL3NwaS9jb2NvYS9QYXNzS2l0U1BJLmg6IEFkZGVk
LgorICAgICAgICBBZGQgbmV3IFBhc3NLaXRTUEkgaGVhZGVyLgorCiAyMDE2LTA3LTE4ICBZb2F2
IFdlaXNzICA8eW9hdkB5b2F2LndzPgogCiAgICAgICAgIEFkZCBwcmVsb2FkIHRvIGZlYXR1cmVz
Lmpzb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCA3ZTMxODkzZTRlMjVlNzExNGY1NmM0NjAzMjZmZWM4
NmU2MjYxMDVmLi5jNjlkZDVmYzU5ZDBiODA4ZWNmOTg0ZjU0Yjc3MmMzODE2N2Y0OWI5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9t
YWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTYtMDctMTggIEFuZGVycyBDYXJsc3Nv
biAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBXZWJLaXQgbmlnaHRseSBmYWlscyB0
byBidWlsZCBvbiBtYWNPUyBTaWVycmEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE1OTkwMgorICAgICAgICByZGFyOi8vcHJvYmxlbS8yNzM2NTY3Mgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaWN1L3Vu
aWNvZGUvdWN1cnIuaDogQWRkZWQuCisgICAgICAgIEFkZCB1Y3Vyci5oIGZyb20gSUNVLgorCiAy
MDE2LTA3LTE3ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgW1dlYktp
dCBBUEldIEFkZCBTUEkgdG8gdHJhY2sgbXVsdGlwbGUgbmF2aWdhdGlvbnMgY2F1c2VkIGJ5IGEg
c2luZ2xlIHVzZXIgZ2VzdHVyZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGUxY2RkYmVlMzVhZTA0NzQxMGIzNTJi
ZjFkMDA4YjYzZmZlZGZmYWIuLjQ1NDNhMDU2YTMyNDBhZmYyYWYxYjdlYTJiZmE5ZWU3ZjczZDk0
YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxNi0wNy0xOCAgQW5kZXJzIENhcmxz
c29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgorCisgICAgICAgIFdlYktpdCBuaWdodGx5IGZhaWxz
IHRvIGJ1aWxkIG9uIG1hY09TIFNpZXJyYQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTU5OTAyCisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzI3MzY1Njcy
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTaGFy
ZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW06CisgICAgICAgICogVUlQcm9j
ZXNzL0FwcGxlUGF5L2NvY29hL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJv
eHlDb2NvYS5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvQXBwbGVQYXkvbWFjL1dlYlBheW1lbnRD
b29yZGluYXRvclByb3h5TWFjLm1tOgorICAgICAgICBVc2UgbmV3IFBhc3NLaXRTUEkgaGVhZGVy
LgorCiAyMDE2LTA3LTE4ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNv
bT4KIAogICAgICAgICBVbnJldmlld2VkLiBVcGRhdGUgT3B0aW9uc0dUSy5jbWFrZSBhbmQgTkVX
UyBmb3IgMi4xMy4zIHJlbGVhc2UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aWN1L3VuaWNvZGUvdWN1cnIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pY3UvdW5pY29kZS91
Y3Vyci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjI3Njk4MTMzZTQyMTA2MTNiNDNmOTg5MTYyNGUwYmEzNmU1ODI3
ZDEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaWN1L3VuaWNvZGUv
dWN1cnIuaApAQCAtMCwwICsxLDM2MCBAQAorLyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogQ29weXJpZ2h0
IChjKSAyMDAyLTIwMTMsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMKKyogQ29ycG9y
YXRpb24gYW5kIG90aGVycy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisq
LworI2lmbmRlZiBfVUNVUlJfSF8KKyNkZWZpbmUgX1VDVVJSX0hfCisKKyNpbmNsdWRlICJ1bmlj
b2RlL3V0eXBlcy5oIgorI2luY2x1ZGUgInVuaWNvZGUvdWVudW0uaCIKKworLyoqCisgKiBcZmls
ZSAKKyAqIFxicmllZiBDIEFQSTogRW5jYXBzdWxhdGVzIGluZm9ybWF0aW9uIGFib3V0IGEgY3Vy
cmVuY3kuCisgKi8KKworI2lmICFVQ09ORklHX05PX0ZPUk1BVFRJTkcKKworLyoqCisgKiBUaGUg
dWN1cnIgQVBJIGVuY2Fwc3VsYXRlcyBpbmZvcm1hdGlvbiBhYm91dCBhIGN1cnJlbmN5LCBhcyBk
ZWZpbmVkIGJ5CisgKiBJU08gNDIxNy4gIEEgY3VycmVuY3kgaXMgcmVwcmVzZW50ZWQgYnkgYSAz
LWNoYXJhY3RlciBzdHJpbmcKKyAqIGNvbnRhaW5pbmcgaXRzIElTTyA0MjE3IGNvZGUuICBUaGlz
IEFQSSBjYW4gcmV0dXJuIHZhcmlvdXMgZGF0YQorICogbmVjZXNzYXJ5IHRoZSBwcm9wZXIgZGlz
cGxheSBvZiBhIGN1cnJlbmN5OgorICoKKyAqIDx1bD48bGk+QSBkaXNwbGF5IHN5bWJvbCwgZm9y
IGEgc3BlY2lmaWMgbG9jYWxlCisgKiA8bGk+VGhlIG51bWJlciBvZiBmcmFjdGlvbiBkaWdpdHMg
dG8gZGlzcGxheQorICogPGxpPkEgcm91bmRpbmcgaW5jcmVtZW50CisgKiA8L3VsPgorICoKKyAq
IFRoZSA8dHQ+RGVjaW1hbEZvcm1hdDwvdHQ+IGNsYXNzIHVzZXMgdGhlc2UgZGF0YSB0byBkaXNw
bGF5CisgKiBjdXJyZW5jaWVzLgorICogQGF1dGhvciBBbGFuIExpdQorICogQHNpbmNlIElDVSAy
LjIKKyAqLworCisvKioKKyAqIEZpbmRzIGEgY3VycmVuY3kgY29kZSBmb3IgdGhlIGdpdmVuIGxv
Y2FsZS4KKyAqIEBwYXJhbSBsb2NhbGUgdGhlIGxvY2FsZSBmb3Igd2hpY2ggdG8gcmV0cmlldmUg
YSBjdXJyZW5jeSBjb2RlLiAKKyAqICAgICAgICAgICAgICAgQ3VycmVuY3kgY2FuIGJlIHNwZWNp
ZmllZCBieSB0aGUgImN1cnJlbmN5IiBrZXl3b3JkCisgKiAgICAgICAgICAgICAgIGluIHdoaWNo
IGNhc2UgaXQgb3ZlcnJpZGVzIHRoZSBkZWZhdWx0IGN1cnJlbmN5IGNvZGUKKyAqIEBwYXJhbSBi
dWZmICAgZmlsbCBpbiBidWZmZXIuIENhbiBiZSBOVUxMIGZvciBwcmVmbGlnaHRpbmcuCisgKiBA
cGFyYW0gYnVmZkNhcGFjaXR5IGNhcGFjaXR5IG9mIHRoZSBmaWxsIGluIGJ1ZmZlci4gQ2FuIGJl
IDAgZm9yCisgKiAgICAgICAgICAgICAgIHByZWZsaWdodGluZy4gSWYgaXQgaXMgbm9uLXplcm8s
IHRoZSBidWZmIHBhcmFtZXRlcgorICogICAgICAgICAgICAgICBtdXN0IG5vdCBiZSBOVUxMLgor
ICogQHBhcmFtIGVjIGVycm9yIGNvZGUKKyAqIEByZXR1cm4gbGVuZ3RoIG9mIHRoZSBjdXJyZW5j
eSBzdHJpbmcuIEl0IHNob3VsZCBhbHdheXMgYmUgMy4gSWYgMCwKKyAqICAgICAgICAgICAgICAg
IGN1cnJlbmN5IGNvdWxkbid0IGJlIGZvdW5kIG9yIHRoZSBpbnB1dCB2YWx1ZXMgYXJlIAorICog
ICAgICAgICAgICAgICAgaW52YWxpZC4gCisgKiBAc3RhYmxlIElDVSAyLjgKKyAqLworVV9TVEFC
TEUgaW50MzJfdCBVX0VYUE9SVDIKK3VjdXJyX2ZvckxvY2FsZShjb25zdCBjaGFyKiBsb2NhbGUs
CisgICAgICAgICAgICAgICAgVUNoYXIqIGJ1ZmYsCisgICAgICAgICAgICAgICAgaW50MzJfdCBi
dWZmQ2FwYWNpdHksCisgICAgICAgICAgICAgICAgVUVycm9yQ29kZSogZWMpOworCisvKioKKyAq
IFNlbGVjdG9yIGNvbnN0YW50cyBmb3IgdWN1cnJfZ2V0TmFtZSgpLgorICoKKyAqIEBzZWUgdWN1
cnJfZ2V0TmFtZQorICogQHN0YWJsZSBJQ1UgMi42CisgKi8KK3R5cGVkZWYgZW51bSBVQ3Vyck5h
bWVTdHlsZSB7CisgICAgLyoqCisgICAgICogU2VsZWN0b3IgZm9yIHVjdXJyX2dldE5hbWUgaW5k
aWNhdGluZyBhIHN5bWJvbGljIG5hbWUgZm9yIGEKKyAgICAgKiBjdXJyZW5jeSwgc3VjaCBhcyAi
JCIgZm9yIFVTRC4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjYKKyAgICAgKi8KKyAgICBVQ1VSUl9T
WU1CT0xfTkFNRSwKKworICAgIC8qKgorICAgICAqIFNlbGVjdG9yIGZvciB1Y3Vycl9nZXROYW1l
IGluZGljYXRpbmcgdGhlIGxvbmcgbmFtZSBmb3IgYQorICAgICAqIGN1cnJlbmN5LCBzdWNoIGFz
ICJVUyBEb2xsYXIiIGZvciBVU0QuCisgICAgICogQHN0YWJsZSBJQ1UgMi42CisgICAgICovCisg
ICAgVUNVUlJfTE9OR19OQU1FCit9IFVDdXJyTmFtZVN0eWxlOworCisjaWYgIVVDT05GSUdfTk9f
U0VSVklDRQorLyoqCisgKiBAc3RhYmxlIElDVSAyLjYKKyAqLwordHlwZWRlZiBjb25zdCB2b2lk
KiBVQ3VyclJlZ2lzdHJ5S2V5OworCisvKioKKyAqIFJlZ2lzdGVyIGFuIChleGlzdGluZykgSVNP
IDQyMTcgY3VycmVuY3kgY29kZSBmb3IgdGhlIGdpdmVuIGxvY2FsZS4KKyAqIE9ubHkgdGhlIGNv
dW50cnkgY29kZSBhbmQgdGhlIHR3byB2YXJpYW50cyBFVVJPIGFuZCBQUkVfRVVSTyBhcmUKKyAq
IHJlY29nbml6ZWQuCisgKiBAcGFyYW0gaXNvQ29kZSB0aGUgdGhyZWUtbGV0dGVyIElTTyA0MjE3
IGN1cnJlbmN5IGNvZGUKKyAqIEBwYXJhbSBsb2NhbGUgIHRoZSBsb2NhbGUgZm9yIHdoaWNoIHRv
IHJlZ2lzdGVyIHRoaXMgY3VycmVuY3kgY29kZQorICogQHBhcmFtIHN0YXR1cyB0aGUgaW4vb3V0
IHN0YXR1cyBjb2RlCisgKiBAcmV0dXJuIGEgcmVnaXN0cnkga2V5IHRoYXQgY2FuIGJlIHVzZWQg
dG8gdW5yZWdpc3RlciB0aGlzIGN1cnJlbmN5IGNvZGUsIG9yIE5VTEwKKyAqIGlmIHRoZXJlIHdh
cyBhbiBlcnJvci4KKyAqIEBzdGFibGUgSUNVIDIuNgorICovCitVX1NUQUJMRSBVQ3VyclJlZ2lz
dHJ5S2V5IFVfRVhQT1JUMgordWN1cnJfcmVnaXN0ZXIoY29uc3QgVUNoYXIqIGlzb0NvZGUsIAor
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGxvY2FsZSwgIAorICAgICAgICAgICAgICAg
ICAgIFVFcnJvckNvZGUqIHN0YXR1cyk7CisvKioKKyAqIFVucmVnaXN0ZXIgdGhlIHByZXZpb3Vz
bHktcmVnaXN0ZXJlZCBjdXJyZW5jeSBkZWZpbml0aW9ucyB1c2luZyB0aGUKKyAqIFVSZWdpc3Ry
eUtleSByZXR1cm5lZCBmcm9tIHVjdXJyX3JlZ2lzdGVyLiAgS2V5IGJlY29tZXMgaW52YWxpZCBh
ZnRlcgorICogYSBzdWNjZXNzZnVsIGNhbGwgYW5kIHNob3VsZCBub3QgYmUgdXNlZCBhZ2Fpbi4g
IEFueSBjdXJyZW5jeSAKKyAqIHRoYXQgbWlnaHQgaGF2ZSBiZWVuIGhpZGRlbiBieSB0aGUgb3Jp
Z2luYWwgdWN1cnJfcmVnaXN0ZXIgY2FsbCBpcyAKKyAqIHJlc3RvcmVkLgorICogQHBhcmFtIGtl
eSB0aGUgcmVnaXN0cnkga2V5IHJldHVybmVkIGJ5IGEgcHJldmlvdXMgY2FsbCB0byB1Y3Vycl9y
ZWdpc3RlcgorICogQHBhcmFtIHN0YXR1cyB0aGUgaW4vb3V0IHN0YXR1cyBjb2RlLCBubyBzcGVj
aWFsIG1lYW5pbmdzIGFyZSBhc3NpZ25lZAorICogQHJldHVybiBUUlVFIGlmIHRoZSBjdXJyZW5j
eSBmb3IgdGhpcyBrZXkgd2FzIHN1Y2Nlc3NmdWxseSB1bnJlZ2lzdGVyZWQKKyAqIEBzdGFibGUg
SUNVIDIuNgorICovCitVX1NUQUJMRSBVQm9vbCBVX0VYUE9SVDIKK3VjdXJyX3VucmVnaXN0ZXIo
VUN1cnJSZWdpc3RyeUtleSBrZXksIFVFcnJvckNvZGUqIHN0YXR1cyk7CisjZW5kaWYgLyogVUNP
TkZJR19OT19TRVJWSUNFICovCisKKy8qKgorICogUmV0dXJucyB0aGUgZGlzcGxheSBuYW1lIGZv
ciB0aGUgZ2l2ZW4gY3VycmVuY3kgaW4gdGhlCisgKiBnaXZlbiBsb2NhbGUuICBGb3IgZXhhbXBs
ZSwgdGhlIGRpc3BsYXkgbmFtZSBmb3IgdGhlIFVTRAorICogY3VycmVuY3kgb2JqZWN0IGluIHRo
ZSBlbl9VUyBsb2NhbGUgaXMgIiQiLgorICogQHBhcmFtIGN1cnJlbmN5IG51bGwtdGVybWluYXRl
ZCAzLWxldHRlciBJU08gNDIxNyBjb2RlCisgKiBAcGFyYW0gbG9jYWxlIGxvY2FsZSBpbiB3aGlj
aCB0byBkaXNwbGF5IGN1cnJlbmN5CisgKiBAcGFyYW0gbmFtZVN0eWxlIHNlbGVjdG9yIGZvciB3
aGljaCBraW5kIG9mIG5hbWUgdG8gcmV0dXJuCisgKiBAcGFyYW0gaXNDaG9pY2VGb3JtYXQgZmls
bC1pbiBzZXQgdG8gVFJVRSBpZiB0aGUgcmV0dXJuZWQgdmFsdWUKKyAqIGlzIGEgQ2hvaWNlRm9y
bWF0IHBhdHRlcm47IG90aGVyd2lzZSBpdCBpcyBhIHN0YXRpYyBzdHJpbmcKKyAqIEBwYXJhbSBs
ZW4gZmlsbC1pbiBwYXJhbWV0ZXIgdG8gcmVjZWl2ZSBsZW5ndGggb2YgcmVzdWx0CisgKiBAcGFy
YW0gZWMgZXJyb3IgY29kZQorICogQHJldHVybiBwb2ludGVyIHRvIGRpc3BsYXkgc3RyaW5nIG9m
ICdsZW4nIFVDaGFycy4gIElmIHRoZSByZXNvdXJjZQorICogZGF0YSBjb250YWlucyBubyBlbnRy
eSBmb3IgJ2N1cnJlbmN5JywgdGhlbiAnY3VycmVuY3knIGl0c2VsZiBpcworICogcmV0dXJuZWQu
ICBJZiAqaXNDaG9pY2VGb3JtYXQgaXMgVFJVRSwgdGhlbiB0aGUgcmVzdWx0IGlzIGEKKyAqIENo
b2ljZUZvcm1hdCBwYXR0ZXJuLiAgT3RoZXJ3aXNlIGl0IGlzIGEgc3RhdGljIHN0cmluZy4KKyAq
IEBzdGFibGUgSUNVIDIuNgorICovCitVX1NUQUJMRSBjb25zdCBVQ2hhciogVV9FWFBPUlQyCit1
Y3Vycl9nZXROYW1lKGNvbnN0IFVDaGFyKiBjdXJyZW5jeSwKKyAgICAgICAgICAgICAgY29uc3Qg
Y2hhciogbG9jYWxlLAorICAgICAgICAgICAgICBVQ3Vyck5hbWVTdHlsZSBuYW1lU3R5bGUsCisg
ICAgICAgICAgICAgIFVCb29sKiBpc0Nob2ljZUZvcm1hdCwKKyAgICAgICAgICAgICAgaW50MzJf
dCogbGVuLAorICAgICAgICAgICAgICBVRXJyb3JDb2RlKiBlYyk7CisKKy8qKgorICogUmV0dXJu
cyB0aGUgcGx1cmFsIG5hbWUgZm9yIHRoZSBnaXZlbiBjdXJyZW5jeSBpbiB0aGUKKyAqIGdpdmVu
IGxvY2FsZS4gIEZvciBleGFtcGxlLCB0aGUgcGx1cmFsIG5hbWUgZm9yIHRoZSBVU0QKKyAqIGN1
cnJlbmN5IG9iamVjdCBpbiB0aGUgZW5fVVMgbG9jYWxlIGlzICJVUyBkb2xsYXIiIG9yICJVUyBk
b2xsYXJzIi4KKyAqIEBwYXJhbSBjdXJyZW5jeSBudWxsLXRlcm1pbmF0ZWQgMy1sZXR0ZXIgSVNP
IDQyMTcgY29kZQorICogQHBhcmFtIGxvY2FsZSBsb2NhbGUgaW4gd2hpY2ggdG8gZGlzcGxheSBj
dXJyZW5jeQorICogQHBhcmFtIGlzQ2hvaWNlRm9ybWF0IGZpbGwtaW4gc2V0IHRvIFRSVUUgaWYg
dGhlIHJldHVybmVkIHZhbHVlCisgKiBpcyBhIENob2ljZUZvcm1hdCBwYXR0ZXJuOyBvdGhlcndp
c2UgaXQgaXMgYSBzdGF0aWMgc3RyaW5nCisgKiBAcGFyYW0gcGx1cmFsQ291bnQgcGx1cmFsIGNv
dW50CisgKiBAcGFyYW0gbGVuIGZpbGwtaW4gcGFyYW1ldGVyIHRvIHJlY2VpdmUgbGVuZ3RoIG9m
IHJlc3VsdAorICogQHBhcmFtIGVjIGVycm9yIGNvZGUKKyAqIEByZXR1cm4gcG9pbnRlciB0byBk
aXNwbGF5IHN0cmluZyBvZiAnbGVuJyBVQ2hhcnMuICBJZiB0aGUgcmVzb3VyY2UKKyAqIGRhdGEg
Y29udGFpbnMgbm8gZW50cnkgZm9yICdjdXJyZW5jeScsIHRoZW4gJ2N1cnJlbmN5JyBpdHNlbGYg
aXMKKyAqIHJldHVybmVkLiAgCisgKiBAc3RhYmxlIElDVSA0LjIKKyAqLworVV9TVEFCTEUgY29u
c3QgVUNoYXIqIFVfRVhQT1JUMgordWN1cnJfZ2V0UGx1cmFsTmFtZShjb25zdCBVQ2hhciogY3Vy
cmVuY3ksCisgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGxvY2FsZSwKKyAgICAgICAg
ICAgICAgICAgICAgVUJvb2wqIGlzQ2hvaWNlRm9ybWF0LAorICAgICAgICAgICAgICAgICAgICBj
b25zdCBjaGFyKiBwbHVyYWxDb3VudCwKKyAgICAgICAgICAgICAgICAgICAgaW50MzJfdCogbGVu
LAorICAgICAgICAgICAgICAgICAgICBVRXJyb3JDb2RlKiBlYyk7CisKKy8qKgorICogUmV0dXJu
cyB0aGUgbnVtYmVyIG9mIHRoZSBudW1iZXIgb2YgZnJhY3Rpb24gZGlnaXRzIHRoYXQgc2hvdWxk
CisgKiBiZSBkaXNwbGF5ZWQgZm9yIHRoZSBnaXZlbiBjdXJyZW5jeS4KKyAqIEBwYXJhbSBjdXJy
ZW5jeSBudWxsLXRlcm1pbmF0ZWQgMy1sZXR0ZXIgSVNPIDQyMTcgY29kZQorICogQHBhcmFtIGVj
IGlucHV0LW91dHB1dCBlcnJvciBjb2RlCisgKiBAcmV0dXJuIGEgbm9uLW5lZ2F0aXZlIG51bWJl
ciBvZiBmcmFjdGlvbiBkaWdpdHMgdG8gYmUKKyAqIGRpc3BsYXllZCwgb3IgMCBpZiB0aGVyZSBp
cyBhbiBlcnJvcgorICogQHN0YWJsZSBJQ1UgMy4wCisgKi8KK1VfU1RBQkxFIGludDMyX3QgVV9F
WFBPUlQyCit1Y3Vycl9nZXREZWZhdWx0RnJhY3Rpb25EaWdpdHMoY29uc3QgVUNoYXIqIGN1cnJl
bmN5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVFcnJvckNvZGUqIGVjKTsKKwor
LyoqCisgKiBSZXR1cm5zIHRoZSByb3VuZGluZyBpbmNyZW1lbnQgZm9yIHRoZSBnaXZlbiBjdXJy
ZW5jeSwgb3IgMC4wIGlmIG5vCisgKiByb3VuZGluZyBpcyBkb25lIGJ5IHRoZSBjdXJyZW5jeS4K
KyAqIEBwYXJhbSBjdXJyZW5jeSBudWxsLXRlcm1pbmF0ZWQgMy1sZXR0ZXIgSVNPIDQyMTcgY29k
ZQorICogQHBhcmFtIGVjIGlucHV0LW91dHB1dCBlcnJvciBjb2RlCisgKiBAcmV0dXJuIHRoZSBu
b24tbmVnYXRpdmUgcm91bmRpbmcgaW5jcmVtZW50LCBvciAwLjAgaWYgbm9uZSwKKyAqIG9yIDAu
MCBpZiB0aGVyZSBpcyBhbiBlcnJvcgorICogQHN0YWJsZSBJQ1UgMy4wCisgKi8KK1VfU1RBQkxF
IGRvdWJsZSBVX0VYUE9SVDIKK3VjdXJyX2dldFJvdW5kaW5nSW5jcmVtZW50KGNvbnN0IFVDaGFy
KiBjdXJyZW5jeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFVFcnJvckNvZGUqIGVjKTsK
KworLyoqCisgKiBTZWxlY3RvciBjb25zdGFudHMgZm9yIHVjdXJyX29wZW5DdXJyZW5jaWVzKCku
CisgKgorICogQHNlZSB1Y3Vycl9vcGVuQ3VycmVuY2llcworICogQHN0YWJsZSBJQ1UgMy4yCisg
Ki8KK3R5cGVkZWYgZW51bSBVQ3VyckN1cnJlbmN5VHlwZSB7CisgICAgLyoqCisgICAgICogU2Vs
ZWN0IGFsbCBJU08tNDIxNyBjdXJyZW5jeSBjb2Rlcy4KKyAgICAgKiBAc3RhYmxlIElDVSAzLjIK
KyAgICAgKi8KKyAgICBVQ1VSUl9BTEwgPSBJTlQzMl9NQVgsCisgICAgLyoqCisgICAgICogU2Vs
ZWN0IG9ubHkgSVNPLTQyMTcgY29tbW9ubHkgdXNlZCBjdXJyZW5jeSBjb2Rlcy4KKyAgICAgKiBU
aGVzZSBjdXJyZW5jaWVzIGNhbiBiZSBmb3VuZCBpbiBjb21tb24gdXNlLCBhbmQgdGhleSB1c3Vh
bGx5IGhhdmUKKyAgICAgKiBiYW5rIG5vdGVzIG9yIGNvaW5zIGFzc29jaWF0ZWQgd2l0aCB0aGUg
Y3VycmVuY3kgY29kZS4KKyAgICAgKiBUaGlzIGRvZXMgbm90IGluY2x1ZGUgZnVuZCBjb2Rlcywg
cHJlY2lvdXMgbWV0YWxzIGFuZCBvdGhlcgorICAgICAqIHZhcmlvdXMgSVNPLTQyMTcgY29kZXMg
bGltaXRlZCB0byBzcGVjaWFsIGZpbmFuY2lhbCBwcm9kdWN0cy4KKyAgICAgKiBAc3RhYmxlIElD
VSAzLjIKKyAgICAgKi8KKyAgICBVQ1VSUl9DT01NT04gPSAxLAorICAgIC8qKgorICAgICAqIFNl
bGVjdCBJU08tNDIxNyB1bmNvbW1vbiBjdXJyZW5jeSBjb2Rlcy4KKyAgICAgKiBUaGVzZSBjb2Rl
cyByZXNwcmVzZW50IGZ1bmQgY29kZXMsIHByZWNpb3VzIG1ldGFscyBhbmQgb3RoZXIKKyAgICAg
KiB2YXJpb3VzIElTTy00MjE3IGNvZGVzIGxpbWl0ZWQgdG8gc3BlY2lhbCBmaW5hbmNpYWwgcHJv
ZHVjdHMuCisgICAgICogQSBmdW5kIGNvZGUgaXMgYSBtb25ldGFyeSByZXNvdXJjZSBhc3NvY2lh
dGVkIHdpdGggYSBjdXJyZW5jeS4KKyAgICAgKiBAc3RhYmxlIElDVSAzLjIKKyAgICAgKi8KKyAg
ICBVQ1VSUl9VTkNPTU1PTiA9IDIsCisgICAgLyoqCisgICAgICogU2VsZWN0IG9ubHkgZGVwcmVj
YXRlZCBJU08tNDIxNyBjb2Rlcy4KKyAgICAgKiBUaGVzZSBjb2RlcyBhcmUgbm8gbG9uZ2VyIGlu
IGdlbmVyYWwgcHVibGljIHVzZS4KKyAgICAgKiBAc3RhYmxlIElDVSAzLjIKKyAgICAgKi8KKyAg
ICBVQ1VSUl9ERVBSRUNBVEVEID0gNCwKKyAgICAvKioKKyAgICAgKiBTZWxlY3Qgb25seSBub24t
ZGVwcmVjYXRlZCBJU08tNDIxNyBjb2Rlcy4KKyAgICAgKiBUaGVzZSBjb2RlcyBhcmUgaW4gZ2Vu
ZXJhbCBwdWJsaWMgdXNlLgorICAgICAqIEBzdGFibGUgSUNVIDMuMgorICAgICAqLworICAgIFVD
VVJSX05PTl9ERVBSRUNBVEVEID0gOAorfSBVQ3VyckN1cnJlbmN5VHlwZTsKKworLyoqCisgKiBQ
cm92aWRlcyBhIFVFbnVtZXJhdGlvbiBvYmplY3QgZm9yIGxpc3RpbmcgSVNPLTQyMTcgY29kZXMu
CisgKiBAcGFyYW0gY3VyclR5cGUgWW91IGNhbiB1c2Ugb25lIG9mIHNldmVyYWwgVUN1cnJDdXJy
ZW5jeVR5cGUgdmFsdWVzIGZvciB0aGlzCisgKiAgICAgIHZhcmlhYmxlLiBZb3UgY2FuIGFsc28g
fCAob3IpIHRoZW0gdG9nZXRoZXIgdG8gZ2V0IGEgc3BlY2lmaWMgbGlzdCBvZgorICogICAgICBj
dXJyZW5jaWVzLiBNb3N0IHBlb3BsZSB3aWxsIHdhbnQgdG8gdXNlIHRoZSAoVUNVUlJfQ1VSUkVO
Q1l8VUNVUlJfTk9OX0RFUFJFQ0FURUQpIHZhbHVlIHRvCisgKiAgICAgIGdldCBhIGxpc3Qgb2Yg
Y3VycmVudCBjdXJyZW5jaWVzLgorICogQHBhcmFtIHBFcnJvckNvZGUgRXJyb3IgY29kZQorICog
QHN0YWJsZSBJQ1UgMy4yCisgKi8KK1VfU1RBQkxFIFVFbnVtZXJhdGlvbiAqIFVfRVhQT1JUMgor
dWN1cnJfb3BlbklTT0N1cnJlbmNpZXModWludDMyX3QgY3VyclR5cGUsIFVFcnJvckNvZGUgKnBF
cnJvckNvZGUpOworCisvKioKKyAgKiBRdWVyaWVzIGlmIHRoZSBnaXZlbiBJU08gNDIxNyAzLWxl
dHRlciBjb2RlIGlzIGF2YWlsYWJsZSBvbiB0aGUgc3BlY2lmaWVkIGRhdGUgcmFuZ2UuIAorICAq
IAorICAqIE5vdGU6IEZvciBjaGVja2luZyBhdmFpbGFiaWxpdHkgb2YgYSBjdXJyZW5jeSBvbiBh
IHNwZWNpZmljIGRhdGUsIHNwZWNpZnkgdGhlIGRhdGUgb24gYm90aCAnZnJvbScgYW5kICd0bycg
CisgICogCisgICogV2hlbiAnZnJvbScgaXMgVV9EQVRFX01JTiBhbmQgJ3RvJyBpcyBVX0RBVEVf
TUFYLCB0aGlzIG1ldGhvZCBjaGVja3MgaWYgdGhlIHNwZWNpZmllZCBjdXJyZW5jeSBpcyBhdmFp
bGFibGUgYW55IHRpbWUuIAorICAqIElmICdmcm9tJyBhbmQgJ3RvJyBhcmUgc2FtZSBVRGF0ZSB2
YWx1ZSwgdGhpcyBtZXRob2QgY2hlY2tzIGlmIHRoZSBzcGVjaWZpZWQgY3VycmVuY3kgaXMgYXZh
aWxhYmxlIG9uIHRoYXQgZGF0ZS4KKyAgKiAKKyAgKiBAcGFyYW0gaXNvQ29kZSAKKyAgKiAgICAg
ICAgICAgIFRoZSBJU08gNDIxNyAzLWxldHRlciBjb2RlLiAKKyAgKiAKKyAgKiBAcGFyYW0gZnJv
bSAKKyAgKiAgICAgICAgICAgIFRoZSBsb3dlciBib3VuZCBvZiB0aGUgZGF0ZSByYW5nZSwgaW5j
bHVzaXZlLiBXaGVuICdmcm9tJyBpcyBVX0RBVEVfTUlOLCBjaGVjayB0aGUgYXZhaWxhYmlsaXR5
IAorICAqICAgICAgICAgICAgb2YgdGhlIGN1cnJlbmN5IGFueSBkYXRlIGJlZm9yZSAndG8nIAor
ICAqIAorICAqIEBwYXJhbSB0byAKKyAgKiAgICAgICAgICAgIFRoZSB1cHBlciBib3VuZCBvZiB0
aGUgZGF0ZSByYW5nZSwgaW5jbHVzaXZlLiBXaGVuICd0bycgaXMgVV9EQVRFX01BWCwgY2hlY2sg
dGhlIGF2YWlsYWJpbGl0eSBvZiAKKyAgKiAgICAgICAgICAgIHRoZSBjdXJyZW5jeSBhbnkgZGF0
ZSBhZnRlciAnZnJvbScgCisgICogCisgICogQHBhcmFtIGVycm9yQ29kZSAKKyAgKiAgICAgICAg
ICAgIElDVSBlcnJvciBjb2RlIAorICAgKiAKKyAgKiBAcmV0dXJuIFRSVUUgaWYgdGhlIGdpdmVu
IElTTyA0MjE3IDMtbGV0dGVyIGNvZGUgaXMgc3VwcG9ydGVkIG9uIHRoZSBzcGVjaWZpZWQgZGF0
ZSByYW5nZS4gCisgICogCisgICogQHN0YWJsZSBJQ1UgNC44IAorICAqLyAKK1VfU1RBQkxFIFVC
b29sIFVfRVhQT1JUMgordWN1cnJfaXNBdmFpbGFibGUoY29uc3QgVUNoYXIqIGlzb0NvZGUsIAor
ICAgICAgICAgICAgIFVEYXRlIGZyb20sIAorICAgICAgICAgICAgIFVEYXRlIHRvLCAKKyAgICAg
ICAgICAgICBVRXJyb3JDb2RlKiBlcnJvckNvZGUpOworCisvKiogCisgKiBGaW5kcyB0aGUgbnVt
YmVyIG9mIHZhbGlkIGN1cnJlbmN5IGNvZGVzIGZvciB0aGUKKyAqIGdpdmVuIGxvY2FsZSBhbmQg
ZGF0ZS4KKyAqIEBwYXJhbSBsb2NhbGUgdGhlIGxvY2FsZSBmb3Igd2hpY2ggdG8gcmV0cmlldmUg
dGhlCisgKiAgICAgICAgICAgICAgIGN1cnJlbmN5IGNvdW50LgorICogQHBhcmFtIGRhdGUgICB0
aGUgZGF0ZSBmb3Igd2hpY2ggdG8gcmV0cmlldmUgdGhlCisgKiAgICAgICAgICAgICAgIGN1cnJl
bmN5IGNvdW50IGZvciB0aGUgZ2l2ZW4gbG9jYWxlLgorICogQHBhcmFtIGVjICAgICBlcnJvciBj
b2RlCisgKiBAcmV0dXJuICAgICAgIHRoZSBudW1iZXIgb2YgY3VycmVuY3kgY29kZXMgZm9yIHRo
ZQorICogICAgICAgICAgICAgICBnaXZlbiBsb2NhbGUgYW5kIGRhdGUuICBJZiAwLCBjdXJyZW5j
eQorICogICAgICAgICAgICAgICBjb2RlcyBjb3VsZG4ndCBiZSBmb3VuZCBmb3IgdGhlIGlucHV0
CisgKiAgICAgICAgICAgICAgIHZhbHVlcyBhcmUgaW52YWxpZC4KKyAqIEBzdGFibGUgSUNVIDQu
MAorICovCitVX1NUQUJMRSBpbnQzMl90IFVfRVhQT1JUMgordWN1cnJfY291bnRDdXJyZW5jaWVz
KGNvbnN0IGNoYXIqIGxvY2FsZSwgCisgICAgICAgICAgICAgICAgIFVEYXRlIGRhdGUsIAorICAg
ICAgICAgICAgICAgICBVRXJyb3JDb2RlKiBlYyk7IAorCisvKiogCisgKiBGaW5kcyBhIGN1cnJl
bmN5IGNvZGUgZm9yIHRoZSBnaXZlbiBsb2NhbGUgYW5kIGRhdGUgCisgKiBAcGFyYW0gbG9jYWxl
IHRoZSBsb2NhbGUgZm9yIHdoaWNoIHRvIHJldHJpZXZlIGEgY3VycmVuY3kgY29kZS4gIAorICog
ICAgICAgICAgICAgICBDdXJyZW5jeSBjYW4gYmUgc3BlY2lmaWVkIGJ5IHRoZSAiY3VycmVuY3ki
IGtleXdvcmQgCisgKiAgICAgICAgICAgICAgIGluIHdoaWNoIGNhc2UgaXQgb3ZlcnJpZGVzIHRo
ZSBkZWZhdWx0IGN1cnJlbmN5IGNvZGUgCisgKiBAcGFyYW0gZGF0ZSAgIHRoZSBkYXRlIGZvciB3
aGljaCB0byByZXRyaWV2ZSBhIGN1cnJlbmN5IGNvZGUgZm9yIAorICogICAgICAgICAgICAgICB0
aGUgZ2l2ZW4gbG9jYWxlLiAKKyAqIEBwYXJhbSBpbmRleCAgdGhlIGluZGV4IHdpdGhpbiB0aGUg
YXZhaWxhYmxlIGxpc3Qgb2YgY3VycmVuY3kgY29kZXMKKyAqICAgICAgICAgICAgICAgZm9yIHRo
ZSBnaXZlbiBsb2NhbGUgb24gdGhlIGdpdmVuIGRhdGUuCisgKiBAcGFyYW0gYnVmZiAgIGZpbGwg
aW4gYnVmZmVyLiBDYW4gYmUgTlVMTCBmb3IgcHJlZmxpZ2h0aW5nLiAKKyAqIEBwYXJhbSBidWZm
Q2FwYWNpdHkgY2FwYWNpdHkgb2YgdGhlIGZpbGwgaW4gYnVmZmVyLiBDYW4gYmUgMCBmb3IgCisg
KiAgICAgICAgICAgICAgIHByZWZsaWdodGluZy4gSWYgaXQgaXMgbm9uLXplcm8sIHRoZSBidWZm
IHBhcmFtZXRlciAKKyAqICAgICAgICAgICAgICAgbXVzdCBub3QgYmUgTlVMTC4gCisgKiBAcGFy
YW0gZWMgICAgIGVycm9yIGNvZGUgCisgKiBAcmV0dXJuICAgICAgIGxlbmd0aCBvZiB0aGUgY3Vy
cmVuY3kgc3RyaW5nLiBJdCBzaG91bGQgYWx3YXlzIGJlIDMuIAorICogICAgICAgICAgICAgICBJ
ZiAwLCBjdXJyZW5jeSBjb3VsZG4ndCBiZSBmb3VuZCBvciB0aGUgaW5wdXQgdmFsdWVzIGFyZSAg
CisgKiAgICAgICAgICAgICAgIGludmFsaWQuICAKKyAqIEBzdGFibGUgSUNVIDQuMCAKKyAqLyAK
K1VfU1RBQkxFIGludDMyX3QgVV9FWFBPUlQyIAordWN1cnJfZm9yTG9jYWxlQW5kRGF0ZShjb25z
dCBjaGFyKiBsb2NhbGUsIAorICAgICAgICAgICAgICAgIFVEYXRlIGRhdGUsIAorICAgICAgICAg
ICAgICAgIGludDMyX3QgaW5kZXgsCisgICAgICAgICAgICAgICAgVUNoYXIqIGJ1ZmYsIAorICAg
ICAgICAgICAgICAgIGludDMyX3QgYnVmZkNhcGFjaXR5LCAKKyAgICAgICAgICAgICAgICBVRXJy
b3JDb2RlKiBlYyk7IAorCisvKioKKyAqIEdpdmVuIGEga2V5IGFuZCBhIGxvY2FsZSwgcmV0dXJu
cyBhbiBhcnJheSBvZiBzdHJpbmcgdmFsdWVzIGluIGEgcHJlZmVycmVkCisgKiBvcmRlciB0aGF0
IHdvdWxkIG1ha2UgYSBkaWZmZXJlbmNlLiBUaGVzZSBhcmUgYWxsIGFuZCBvbmx5IHRob3NlIHZh
bHVlcyB3aGVyZQorICogdGhlIG9wZW4gKGNyZWF0aW9uKSBvZiB0aGUgc2VydmljZSB3aXRoIHRo
ZSBsb2NhbGUgZm9ybWVkIGZyb20gdGhlIGlucHV0IGxvY2FsZQorICogcGx1cyBpbnB1dCBrZXl3
b3JkIGFuZCB0aGF0IHZhbHVlIGhhcyBkaWZmZXJlbnQgYmVoYXZpb3IgdGhhbiBjcmVhdGlvbiB3
aXRoIHRoZQorICogaW5wdXQgbG9jYWxlIGFsb25lLgorICogQHBhcmFtIGtleSAgICAgICAgICAg
b25lIG9mIHRoZSBrZXlzIHN1cHBvcnRlZCBieSB0aGlzIHNlcnZpY2UuICBGb3Igbm93LCBvbmx5
CisgKiAgICAgICAgICAgICAgICAgICAgICAiY3VycmVuY3kiIGlzIHN1cHBvcnRlZC4KKyAqIEBw
YXJhbSBsb2NhbGUgICAgICAgIHRoZSBsb2NhbGUKKyAqIEBwYXJhbSBjb21tb25seVVzZWQgIGlm
IHNldCB0byB0cnVlIGl0IHdpbGwgcmV0dXJuIG9ubHkgY29tbW9ubHkgdXNlZCB2YWx1ZXMKKyAq
ICAgICAgICAgICAgICAgICAgICAgIHdpdGggdGhlIGdpdmVuIGxvY2FsZSBpbiBwcmVmZXJyZWQg
b3JkZXIuICBPdGhlcndpc2UsCisgKiAgICAgICAgICAgICAgICAgICAgICBpdCB3aWxsIHJldHVy
biBhbGwgdGhlIGF2YWlsYWJsZSB2YWx1ZXMgZm9yIHRoZSBsb2NhbGUuCisgKiBAcGFyYW0gc3Rh
dHVzIGVycm9yIHN0YXR1cworICogQHJldHVybiBhIHN0cmluZyBlbnVtZXJhdGlvbiBvdmVyIGtl
eXdvcmQgdmFsdWVzIGZvciB0aGUgZ2l2ZW4ga2V5IGFuZCB0aGUgbG9jYWxlLgorICogQHN0YWJs
ZSBJQ1UgNC4yCisgKi8KK1VfU1RBQkxFIFVFbnVtZXJhdGlvbiogVV9FWFBPUlQyCit1Y3Vycl9n
ZXRLZXl3b3JkVmFsdWVzRm9yTG9jYWxlKGNvbnN0IGNoYXIqIGtleSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogbG9jYWxlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBVQm9vbCBjb21tb25seVVzZWQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFVFcnJvckNvZGUqIHN0YXR1cyk7CisKKy8qKgorICogUmV0dXJucyB0aGUgSVNP
IDQyMTcgbnVtZXJpYyBjb2RlIGZvciB0aGUgY3VycmVuY3kuCisgKiA8cD5Ob3RlOiBJZiB0aGUg
SVNPIDQyMTcgbnVtZXJpYyBjb2RlIGlzIG5vdCBhc3NpZ25lZCBmb3IgdGhlIGN1cnJlbmN5IG9y
CisgKiB0aGUgY3VycmVuY3kgaXMgdW5rbm93biwgdGhpcyBmdW5jdGlvbiByZXR1cm5zIDAuCisg
KgorICogQHBhcmFtIGN1cnJlbmN5IG51bGwtdGVybWluYXRlZCAzLWxldHRlciBJU08gNDIxNyBj
b2RlCisgKiBAcmV0dXJuIFRoZSBJU08gNDIxNyBudW1lcmljIGNvZGUgb2YgdGhlIGN1cnJlbmN5
CisgKiBAc3RhYmxlIElDVSA0OQorICovCitVX1NUQUJMRSBpbnQzMl90IFVfRVhQT1JUMgordWN1
cnJfZ2V0TnVtZXJpY0NvZGUoY29uc3QgVUNoYXIqIGN1cnJlbmN5KTsKKworI2VuZGlmIC8qICNp
ZiAhVUNPTkZJR19OT19GT1JNQVRUSU5HICovCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi9pY3UvdW5pY29kZS91Y3Vyci5oIGIvU291cmNlL1dURi9pY3UvdW5pY29kZS91Y3Vyci5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjI3Njk4MTMzZTQyMTA2MTNiNDNmOTg5MTYyNGUwYmEzNmU1ODI3ZDEKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL2ljdS91bmljb2RlL3VjdXJyLmgKQEAgLTAsMCAr
MSwzNjAgQEAKKy8qCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqCisqIENvcHlyaWdodCAoYykgMjAwMi0yMDEzLCBJ
bnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzCisqIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMu
ICBBbGwgUmlnaHRzIFJlc2VydmVkLgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKi8KKyNpZm5kZWYgX1VDVVJS
X0hfCisjZGVmaW5lIF9VQ1VSUl9IXworCisjaW5jbHVkZSAidW5pY29kZS91dHlwZXMuaCIKKyNp
bmNsdWRlICJ1bmljb2RlL3VlbnVtLmgiCisKKy8qKgorICogXGZpbGUgCisgKiBcYnJpZWYgQyBB
UEk6IEVuY2Fwc3VsYXRlcyBpbmZvcm1hdGlvbiBhYm91dCBhIGN1cnJlbmN5LgorICovCisKKyNp
ZiAhVUNPTkZJR19OT19GT1JNQVRUSU5HCisKKy8qKgorICogVGhlIHVjdXJyIEFQSSBlbmNhcHN1
bGF0ZXMgaW5mb3JtYXRpb24gYWJvdXQgYSBjdXJyZW5jeSwgYXMgZGVmaW5lZCBieQorICogSVNP
IDQyMTcuICBBIGN1cnJlbmN5IGlzIHJlcHJlc2VudGVkIGJ5IGEgMy1jaGFyYWN0ZXIgc3RyaW5n
CisgKiBjb250YWluaW5nIGl0cyBJU08gNDIxNyBjb2RlLiAgVGhpcyBBUEkgY2FuIHJldHVybiB2
YXJpb3VzIGRhdGEKKyAqIG5lY2Vzc2FyeSB0aGUgcHJvcGVyIGRpc3BsYXkgb2YgYSBjdXJyZW5j
eToKKyAqCisgKiA8dWw+PGxpPkEgZGlzcGxheSBzeW1ib2wsIGZvciBhIHNwZWNpZmljIGxvY2Fs
ZQorICogPGxpPlRoZSBudW1iZXIgb2YgZnJhY3Rpb24gZGlnaXRzIHRvIGRpc3BsYXkKKyAqIDxs
aT5BIHJvdW5kaW5nIGluY3JlbWVudAorICogPC91bD4KKyAqCisgKiBUaGUgPHR0PkRlY2ltYWxG
b3JtYXQ8L3R0PiBjbGFzcyB1c2VzIHRoZXNlIGRhdGEgdG8gZGlzcGxheQorICogY3VycmVuY2ll
cy4KKyAqIEBhdXRob3IgQWxhbiBMaXUKKyAqIEBzaW5jZSBJQ1UgMi4yCisgKi8KKworLyoqCisg
KiBGaW5kcyBhIGN1cnJlbmN5IGNvZGUgZm9yIHRoZSBnaXZlbiBsb2NhbGUuCisgKiBAcGFyYW0g
bG9jYWxlIHRoZSBsb2NhbGUgZm9yIHdoaWNoIHRvIHJldHJpZXZlIGEgY3VycmVuY3kgY29kZS4g
CisgKiAgICAgICAgICAgICAgIEN1cnJlbmN5IGNhbiBiZSBzcGVjaWZpZWQgYnkgdGhlICJjdXJy
ZW5jeSIga2V5d29yZAorICogICAgICAgICAgICAgICBpbiB3aGljaCBjYXNlIGl0IG92ZXJyaWRl
cyB0aGUgZGVmYXVsdCBjdXJyZW5jeSBjb2RlCisgKiBAcGFyYW0gYnVmZiAgIGZpbGwgaW4gYnVm
ZmVyLiBDYW4gYmUgTlVMTCBmb3IgcHJlZmxpZ2h0aW5nLgorICogQHBhcmFtIGJ1ZmZDYXBhY2l0
eSBjYXBhY2l0eSBvZiB0aGUgZmlsbCBpbiBidWZmZXIuIENhbiBiZSAwIGZvcgorICogICAgICAg
ICAgICAgICBwcmVmbGlnaHRpbmcuIElmIGl0IGlzIG5vbi16ZXJvLCB0aGUgYnVmZiBwYXJhbWV0
ZXIKKyAqICAgICAgICAgICAgICAgbXVzdCBub3QgYmUgTlVMTC4KKyAqIEBwYXJhbSBlYyBlcnJv
ciBjb2RlCisgKiBAcmV0dXJuIGxlbmd0aCBvZiB0aGUgY3VycmVuY3kgc3RyaW5nLiBJdCBzaG91
bGQgYWx3YXlzIGJlIDMuIElmIDAsCisgKiAgICAgICAgICAgICAgICBjdXJyZW5jeSBjb3VsZG4n
dCBiZSBmb3VuZCBvciB0aGUgaW5wdXQgdmFsdWVzIGFyZSAKKyAqICAgICAgICAgICAgICAgIGlu
dmFsaWQuIAorICogQHN0YWJsZSBJQ1UgMi44CisgKi8KK1VfU1RBQkxFIGludDMyX3QgVV9FWFBP
UlQyCit1Y3Vycl9mb3JMb2NhbGUoY29uc3QgY2hhciogbG9jYWxlLAorICAgICAgICAgICAgICAg
IFVDaGFyKiBidWZmLAorICAgICAgICAgICAgICAgIGludDMyX3QgYnVmZkNhcGFjaXR5LAorICAg
ICAgICAgICAgICAgIFVFcnJvckNvZGUqIGVjKTsKKworLyoqCisgKiBTZWxlY3RvciBjb25zdGFu
dHMgZm9yIHVjdXJyX2dldE5hbWUoKS4KKyAqCisgKiBAc2VlIHVjdXJyX2dldE5hbWUKKyAqIEBz
dGFibGUgSUNVIDIuNgorICovCit0eXBlZGVmIGVudW0gVUN1cnJOYW1lU3R5bGUgeworICAgIC8q
KgorICAgICAqIFNlbGVjdG9yIGZvciB1Y3Vycl9nZXROYW1lIGluZGljYXRpbmcgYSBzeW1ib2xp
YyBuYW1lIGZvciBhCisgICAgICogY3VycmVuY3ksIHN1Y2ggYXMgIiQiIGZvciBVU0QuCisgICAg
ICogQHN0YWJsZSBJQ1UgMi42CisgICAgICovCisgICAgVUNVUlJfU1lNQk9MX05BTUUsCisKKyAg
ICAvKioKKyAgICAgKiBTZWxlY3RvciBmb3IgdWN1cnJfZ2V0TmFtZSBpbmRpY2F0aW5nIHRoZSBs
b25nIG5hbWUgZm9yIGEKKyAgICAgKiBjdXJyZW5jeSwgc3VjaCBhcyAiVVMgRG9sbGFyIiBmb3Ig
VVNELgorICAgICAqIEBzdGFibGUgSUNVIDIuNgorICAgICAqLworICAgIFVDVVJSX0xPTkdfTkFN
RQorfSBVQ3Vyck5hbWVTdHlsZTsKKworI2lmICFVQ09ORklHX05PX1NFUlZJQ0UKKy8qKgorICog
QHN0YWJsZSBJQ1UgMi42CisgKi8KK3R5cGVkZWYgY29uc3Qgdm9pZCogVUN1cnJSZWdpc3RyeUtl
eTsKKworLyoqCisgKiBSZWdpc3RlciBhbiAoZXhpc3RpbmcpIElTTyA0MjE3IGN1cnJlbmN5IGNv
ZGUgZm9yIHRoZSBnaXZlbiBsb2NhbGUuCisgKiBPbmx5IHRoZSBjb3VudHJ5IGNvZGUgYW5kIHRo
ZSB0d28gdmFyaWFudHMgRVVSTyBhbmQgUFJFX0VVUk8gYXJlCisgKiByZWNvZ25pemVkLgorICog
QHBhcmFtIGlzb0NvZGUgdGhlIHRocmVlLWxldHRlciBJU08gNDIxNyBjdXJyZW5jeSBjb2RlCisg
KiBAcGFyYW0gbG9jYWxlICB0aGUgbG9jYWxlIGZvciB3aGljaCB0byByZWdpc3RlciB0aGlzIGN1
cnJlbmN5IGNvZGUKKyAqIEBwYXJhbSBzdGF0dXMgdGhlIGluL291dCBzdGF0dXMgY29kZQorICog
QHJldHVybiBhIHJlZ2lzdHJ5IGtleSB0aGF0IGNhbiBiZSB1c2VkIHRvIHVucmVnaXN0ZXIgdGhp
cyBjdXJyZW5jeSBjb2RlLCBvciBOVUxMCisgKiBpZiB0aGVyZSB3YXMgYW4gZXJyb3IuCisgKiBA
c3RhYmxlIElDVSAyLjYKKyAqLworVV9TVEFCTEUgVUN1cnJSZWdpc3RyeUtleSBVX0VYUE9SVDIK
K3VjdXJyX3JlZ2lzdGVyKGNvbnN0IFVDaGFyKiBpc29Db2RlLCAKKyAgICAgICAgICAgICAgICAg
ICBjb25zdCBjaGFyKiBsb2NhbGUsICAKKyAgICAgICAgICAgICAgICAgICBVRXJyb3JDb2RlKiBz
dGF0dXMpOworLyoqCisgKiBVbnJlZ2lzdGVyIHRoZSBwcmV2aW91c2x5LXJlZ2lzdGVyZWQgY3Vy
cmVuY3kgZGVmaW5pdGlvbnMgdXNpbmcgdGhlCisgKiBVUmVnaXN0cnlLZXkgcmV0dXJuZWQgZnJv
bSB1Y3Vycl9yZWdpc3Rlci4gIEtleSBiZWNvbWVzIGludmFsaWQgYWZ0ZXIKKyAqIGEgc3VjY2Vz
c2Z1bCBjYWxsIGFuZCBzaG91bGQgbm90IGJlIHVzZWQgYWdhaW4uICBBbnkgY3VycmVuY3kgCisg
KiB0aGF0IG1pZ2h0IGhhdmUgYmVlbiBoaWRkZW4gYnkgdGhlIG9yaWdpbmFsIHVjdXJyX3JlZ2lz
dGVyIGNhbGwgaXMgCisgKiByZXN0b3JlZC4KKyAqIEBwYXJhbSBrZXkgdGhlIHJlZ2lzdHJ5IGtl
eSByZXR1cm5lZCBieSBhIHByZXZpb3VzIGNhbGwgdG8gdWN1cnJfcmVnaXN0ZXIKKyAqIEBwYXJh
bSBzdGF0dXMgdGhlIGluL291dCBzdGF0dXMgY29kZSwgbm8gc3BlY2lhbCBtZWFuaW5ncyBhcmUg
YXNzaWduZWQKKyAqIEByZXR1cm4gVFJVRSBpZiB0aGUgY3VycmVuY3kgZm9yIHRoaXMga2V5IHdh
cyBzdWNjZXNzZnVsbHkgdW5yZWdpc3RlcmVkCisgKiBAc3RhYmxlIElDVSAyLjYKKyAqLworVV9T
VEFCTEUgVUJvb2wgVV9FWFBPUlQyCit1Y3Vycl91bnJlZ2lzdGVyKFVDdXJyUmVnaXN0cnlLZXkg
a2V5LCBVRXJyb3JDb2RlKiBzdGF0dXMpOworI2VuZGlmIC8qIFVDT05GSUdfTk9fU0VSVklDRSAq
LworCisvKioKKyAqIFJldHVybnMgdGhlIGRpc3BsYXkgbmFtZSBmb3IgdGhlIGdpdmVuIGN1cnJl
bmN5IGluIHRoZQorICogZ2l2ZW4gbG9jYWxlLiAgRm9yIGV4YW1wbGUsIHRoZSBkaXNwbGF5IG5h
bWUgZm9yIHRoZSBVU0QKKyAqIGN1cnJlbmN5IG9iamVjdCBpbiB0aGUgZW5fVVMgbG9jYWxlIGlz
ICIkIi4KKyAqIEBwYXJhbSBjdXJyZW5jeSBudWxsLXRlcm1pbmF0ZWQgMy1sZXR0ZXIgSVNPIDQy
MTcgY29kZQorICogQHBhcmFtIGxvY2FsZSBsb2NhbGUgaW4gd2hpY2ggdG8gZGlzcGxheSBjdXJy
ZW5jeQorICogQHBhcmFtIG5hbWVTdHlsZSBzZWxlY3RvciBmb3Igd2hpY2gga2luZCBvZiBuYW1l
IHRvIHJldHVybgorICogQHBhcmFtIGlzQ2hvaWNlRm9ybWF0IGZpbGwtaW4gc2V0IHRvIFRSVUUg
aWYgdGhlIHJldHVybmVkIHZhbHVlCisgKiBpcyBhIENob2ljZUZvcm1hdCBwYXR0ZXJuOyBvdGhl
cndpc2UgaXQgaXMgYSBzdGF0aWMgc3RyaW5nCisgKiBAcGFyYW0gbGVuIGZpbGwtaW4gcGFyYW1l
dGVyIHRvIHJlY2VpdmUgbGVuZ3RoIG9mIHJlc3VsdAorICogQHBhcmFtIGVjIGVycm9yIGNvZGUK
KyAqIEByZXR1cm4gcG9pbnRlciB0byBkaXNwbGF5IHN0cmluZyBvZiAnbGVuJyBVQ2hhcnMuICBJ
ZiB0aGUgcmVzb3VyY2UKKyAqIGRhdGEgY29udGFpbnMgbm8gZW50cnkgZm9yICdjdXJyZW5jeScs
IHRoZW4gJ2N1cnJlbmN5JyBpdHNlbGYgaXMKKyAqIHJldHVybmVkLiAgSWYgKmlzQ2hvaWNlRm9y
bWF0IGlzIFRSVUUsIHRoZW4gdGhlIHJlc3VsdCBpcyBhCisgKiBDaG9pY2VGb3JtYXQgcGF0dGVy
bi4gIE90aGVyd2lzZSBpdCBpcyBhIHN0YXRpYyBzdHJpbmcuCisgKiBAc3RhYmxlIElDVSAyLjYK
KyAqLworVV9TVEFCTEUgY29uc3QgVUNoYXIqIFVfRVhQT1JUMgordWN1cnJfZ2V0TmFtZShjb25z
dCBVQ2hhciogY3VycmVuY3ksCisgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGxvY2FsZSwKKyAg
ICAgICAgICAgICAgVUN1cnJOYW1lU3R5bGUgbmFtZVN0eWxlLAorICAgICAgICAgICAgICBVQm9v
bCogaXNDaG9pY2VGb3JtYXQsCisgICAgICAgICAgICAgIGludDMyX3QqIGxlbiwKKyAgICAgICAg
ICAgICAgVUVycm9yQ29kZSogZWMpOworCisvKioKKyAqIFJldHVybnMgdGhlIHBsdXJhbCBuYW1l
IGZvciB0aGUgZ2l2ZW4gY3VycmVuY3kgaW4gdGhlCisgKiBnaXZlbiBsb2NhbGUuICBGb3IgZXhh
bXBsZSwgdGhlIHBsdXJhbCBuYW1lIGZvciB0aGUgVVNECisgKiBjdXJyZW5jeSBvYmplY3QgaW4g
dGhlIGVuX1VTIGxvY2FsZSBpcyAiVVMgZG9sbGFyIiBvciAiVVMgZG9sbGFycyIuCisgKiBAcGFy
YW0gY3VycmVuY3kgbnVsbC10ZXJtaW5hdGVkIDMtbGV0dGVyIElTTyA0MjE3IGNvZGUKKyAqIEBw
YXJhbSBsb2NhbGUgbG9jYWxlIGluIHdoaWNoIHRvIGRpc3BsYXkgY3VycmVuY3kKKyAqIEBwYXJh
bSBpc0Nob2ljZUZvcm1hdCBmaWxsLWluIHNldCB0byBUUlVFIGlmIHRoZSByZXR1cm5lZCB2YWx1
ZQorICogaXMgYSBDaG9pY2VGb3JtYXQgcGF0dGVybjsgb3RoZXJ3aXNlIGl0IGlzIGEgc3RhdGlj
IHN0cmluZworICogQHBhcmFtIHBsdXJhbENvdW50IHBsdXJhbCBjb3VudAorICogQHBhcmFtIGxl
biBmaWxsLWluIHBhcmFtZXRlciB0byByZWNlaXZlIGxlbmd0aCBvZiByZXN1bHQKKyAqIEBwYXJh
bSBlYyBlcnJvciBjb2RlCisgKiBAcmV0dXJuIHBvaW50ZXIgdG8gZGlzcGxheSBzdHJpbmcgb2Yg
J2xlbicgVUNoYXJzLiAgSWYgdGhlIHJlc291cmNlCisgKiBkYXRhIGNvbnRhaW5zIG5vIGVudHJ5
IGZvciAnY3VycmVuY3knLCB0aGVuICdjdXJyZW5jeScgaXRzZWxmIGlzCisgKiByZXR1cm5lZC4g
IAorICogQHN0YWJsZSBJQ1UgNC4yCisgKi8KK1VfU1RBQkxFIGNvbnN0IFVDaGFyKiBVX0VYUE9S
VDIKK3VjdXJyX2dldFBsdXJhbE5hbWUoY29uc3QgVUNoYXIqIGN1cnJlbmN5LAorICAgICAgICAg
ICAgICAgICAgICBjb25zdCBjaGFyKiBsb2NhbGUsCisgICAgICAgICAgICAgICAgICAgIFVCb29s
KiBpc0Nob2ljZUZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogcGx1cmFs
Q291bnQsCisgICAgICAgICAgICAgICAgICAgIGludDMyX3QqIGxlbiwKKyAgICAgICAgICAgICAg
ICAgICAgVUVycm9yQ29kZSogZWMpOworCisvKioKKyAqIFJldHVybnMgdGhlIG51bWJlciBvZiB0
aGUgbnVtYmVyIG9mIGZyYWN0aW9uIGRpZ2l0cyB0aGF0IHNob3VsZAorICogYmUgZGlzcGxheWVk
IGZvciB0aGUgZ2l2ZW4gY3VycmVuY3kuCisgKiBAcGFyYW0gY3VycmVuY3kgbnVsbC10ZXJtaW5h
dGVkIDMtbGV0dGVyIElTTyA0MjE3IGNvZGUKKyAqIEBwYXJhbSBlYyBpbnB1dC1vdXRwdXQgZXJy
b3IgY29kZQorICogQHJldHVybiBhIG5vbi1uZWdhdGl2ZSBudW1iZXIgb2YgZnJhY3Rpb24gZGln
aXRzIHRvIGJlCisgKiBkaXNwbGF5ZWQsIG9yIDAgaWYgdGhlcmUgaXMgYW4gZXJyb3IKKyAqIEBz
dGFibGUgSUNVIDMuMAorICovCitVX1NUQUJMRSBpbnQzMl90IFVfRVhQT1JUMgordWN1cnJfZ2V0
RGVmYXVsdEZyYWN0aW9uRGlnaXRzKGNvbnN0IFVDaGFyKiBjdXJyZW5jeSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBVRXJyb3JDb2RlKiBlYyk7CisKKy8qKgorICogUmV0dXJucyB0
aGUgcm91bmRpbmcgaW5jcmVtZW50IGZvciB0aGUgZ2l2ZW4gY3VycmVuY3ksIG9yIDAuMCBpZiBu
bworICogcm91bmRpbmcgaXMgZG9uZSBieSB0aGUgY3VycmVuY3kuCisgKiBAcGFyYW0gY3VycmVu
Y3kgbnVsbC10ZXJtaW5hdGVkIDMtbGV0dGVyIElTTyA0MjE3IGNvZGUKKyAqIEBwYXJhbSBlYyBp
bnB1dC1vdXRwdXQgZXJyb3IgY29kZQorICogQHJldHVybiB0aGUgbm9uLW5lZ2F0aXZlIHJvdW5k
aW5nIGluY3JlbWVudCwgb3IgMC4wIGlmIG5vbmUsCisgKiBvciAwLjAgaWYgdGhlcmUgaXMgYW4g
ZXJyb3IKKyAqIEBzdGFibGUgSUNVIDMuMAorICovCitVX1NUQUJMRSBkb3VibGUgVV9FWFBPUlQy
Cit1Y3Vycl9nZXRSb3VuZGluZ0luY3JlbWVudChjb25zdCBVQ2hhciogY3VycmVuY3ksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICBVRXJyb3JDb2RlKiBlYyk7CisKKy8qKgorICogU2VsZWN0
b3IgY29uc3RhbnRzIGZvciB1Y3Vycl9vcGVuQ3VycmVuY2llcygpLgorICoKKyAqIEBzZWUgdWN1
cnJfb3BlbkN1cnJlbmNpZXMKKyAqIEBzdGFibGUgSUNVIDMuMgorICovCit0eXBlZGVmIGVudW0g
VUN1cnJDdXJyZW5jeVR5cGUgeworICAgIC8qKgorICAgICAqIFNlbGVjdCBhbGwgSVNPLTQyMTcg
Y3VycmVuY3kgY29kZXMuCisgICAgICogQHN0YWJsZSBJQ1UgMy4yCisgICAgICovCisgICAgVUNV
UlJfQUxMID0gSU5UMzJfTUFYLAorICAgIC8qKgorICAgICAqIFNlbGVjdCBvbmx5IElTTy00MjE3
IGNvbW1vbmx5IHVzZWQgY3VycmVuY3kgY29kZXMuCisgICAgICogVGhlc2UgY3VycmVuY2llcyBj
YW4gYmUgZm91bmQgaW4gY29tbW9uIHVzZSwgYW5kIHRoZXkgdXN1YWxseSBoYXZlCisgICAgICog
YmFuayBub3RlcyBvciBjb2lucyBhc3NvY2lhdGVkIHdpdGggdGhlIGN1cnJlbmN5IGNvZGUuCisg
ICAgICogVGhpcyBkb2VzIG5vdCBpbmNsdWRlIGZ1bmQgY29kZXMsIHByZWNpb3VzIG1ldGFscyBh
bmQgb3RoZXIKKyAgICAgKiB2YXJpb3VzIElTTy00MjE3IGNvZGVzIGxpbWl0ZWQgdG8gc3BlY2lh
bCBmaW5hbmNpYWwgcHJvZHVjdHMuCisgICAgICogQHN0YWJsZSBJQ1UgMy4yCisgICAgICovCisg
ICAgVUNVUlJfQ09NTU9OID0gMSwKKyAgICAvKioKKyAgICAgKiBTZWxlY3QgSVNPLTQyMTcgdW5j
b21tb24gY3VycmVuY3kgY29kZXMuCisgICAgICogVGhlc2UgY29kZXMgcmVzcHJlc2VudCBmdW5k
IGNvZGVzLCBwcmVjaW91cyBtZXRhbHMgYW5kIG90aGVyCisgICAgICogdmFyaW91cyBJU08tNDIx
NyBjb2RlcyBsaW1pdGVkIHRvIHNwZWNpYWwgZmluYW5jaWFsIHByb2R1Y3RzLgorICAgICAqIEEg
ZnVuZCBjb2RlIGlzIGEgbW9uZXRhcnkgcmVzb3VyY2UgYXNzb2NpYXRlZCB3aXRoIGEgY3VycmVu
Y3kuCisgICAgICogQHN0YWJsZSBJQ1UgMy4yCisgICAgICovCisgICAgVUNVUlJfVU5DT01NT04g
PSAyLAorICAgIC8qKgorICAgICAqIFNlbGVjdCBvbmx5IGRlcHJlY2F0ZWQgSVNPLTQyMTcgY29k
ZXMuCisgICAgICogVGhlc2UgY29kZXMgYXJlIG5vIGxvbmdlciBpbiBnZW5lcmFsIHB1YmxpYyB1
c2UuCisgICAgICogQHN0YWJsZSBJQ1UgMy4yCisgICAgICovCisgICAgVUNVUlJfREVQUkVDQVRF
RCA9IDQsCisgICAgLyoqCisgICAgICogU2VsZWN0IG9ubHkgbm9uLWRlcHJlY2F0ZWQgSVNPLTQy
MTcgY29kZXMuCisgICAgICogVGhlc2UgY29kZXMgYXJlIGluIGdlbmVyYWwgcHVibGljIHVzZS4K
KyAgICAgKiBAc3RhYmxlIElDVSAzLjIKKyAgICAgKi8KKyAgICBVQ1VSUl9OT05fREVQUkVDQVRF
RCA9IDgKK30gVUN1cnJDdXJyZW5jeVR5cGU7CisKKy8qKgorICogUHJvdmlkZXMgYSBVRW51bWVy
YXRpb24gb2JqZWN0IGZvciBsaXN0aW5nIElTTy00MjE3IGNvZGVzLgorICogQHBhcmFtIGN1cnJU
eXBlIFlvdSBjYW4gdXNlIG9uZSBvZiBzZXZlcmFsIFVDdXJyQ3VycmVuY3lUeXBlIHZhbHVlcyBm
b3IgdGhpcworICogICAgICB2YXJpYWJsZS4gWW91IGNhbiBhbHNvIHwgKG9yKSB0aGVtIHRvZ2V0
aGVyIHRvIGdldCBhIHNwZWNpZmljIGxpc3Qgb2YKKyAqICAgICAgY3VycmVuY2llcy4gTW9zdCBw
ZW9wbGUgd2lsbCB3YW50IHRvIHVzZSB0aGUgKFVDVVJSX0NVUlJFTkNZfFVDVVJSX05PTl9ERVBS
RUNBVEVEKSB2YWx1ZSB0bworICogICAgICBnZXQgYSBsaXN0IG9mIGN1cnJlbnQgY3VycmVuY2ll
cy4KKyAqIEBwYXJhbSBwRXJyb3JDb2RlIEVycm9yIGNvZGUKKyAqIEBzdGFibGUgSUNVIDMuMgor
ICovCitVX1NUQUJMRSBVRW51bWVyYXRpb24gKiBVX0VYUE9SVDIKK3VjdXJyX29wZW5JU09DdXJy
ZW5jaWVzKHVpbnQzMl90IGN1cnJUeXBlLCBVRXJyb3JDb2RlICpwRXJyb3JDb2RlKTsKKworLyoq
CisgICogUXVlcmllcyBpZiB0aGUgZ2l2ZW4gSVNPIDQyMTcgMy1sZXR0ZXIgY29kZSBpcyBhdmFp
bGFibGUgb24gdGhlIHNwZWNpZmllZCBkYXRlIHJhbmdlLiAKKyAgKiAKKyAgKiBOb3RlOiBGb3Ig
Y2hlY2tpbmcgYXZhaWxhYmlsaXR5IG9mIGEgY3VycmVuY3kgb24gYSBzcGVjaWZpYyBkYXRlLCBz
cGVjaWZ5IHRoZSBkYXRlIG9uIGJvdGggJ2Zyb20nIGFuZCAndG8nIAorICAqIAorICAqIFdoZW4g
J2Zyb20nIGlzIFVfREFURV9NSU4gYW5kICd0bycgaXMgVV9EQVRFX01BWCwgdGhpcyBtZXRob2Qg
Y2hlY2tzIGlmIHRoZSBzcGVjaWZpZWQgY3VycmVuY3kgaXMgYXZhaWxhYmxlIGFueSB0aW1lLiAK
KyAgKiBJZiAnZnJvbScgYW5kICd0bycgYXJlIHNhbWUgVURhdGUgdmFsdWUsIHRoaXMgbWV0aG9k
IGNoZWNrcyBpZiB0aGUgc3BlY2lmaWVkIGN1cnJlbmN5IGlzIGF2YWlsYWJsZSBvbiB0aGF0IGRh
dGUuCisgICogCisgICogQHBhcmFtIGlzb0NvZGUgCisgICogICAgICAgICAgICBUaGUgSVNPIDQy
MTcgMy1sZXR0ZXIgY29kZS4gCisgICogCisgICogQHBhcmFtIGZyb20gCisgICogICAgICAgICAg
ICBUaGUgbG93ZXIgYm91bmQgb2YgdGhlIGRhdGUgcmFuZ2UsIGluY2x1c2l2ZS4gV2hlbiAnZnJv
bScgaXMgVV9EQVRFX01JTiwgY2hlY2sgdGhlIGF2YWlsYWJpbGl0eSAKKyAgKiAgICAgICAgICAg
IG9mIHRoZSBjdXJyZW5jeSBhbnkgZGF0ZSBiZWZvcmUgJ3RvJyAKKyAgKiAKKyAgKiBAcGFyYW0g
dG8gCisgICogICAgICAgICAgICBUaGUgdXBwZXIgYm91bmQgb2YgdGhlIGRhdGUgcmFuZ2UsIGlu
Y2x1c2l2ZS4gV2hlbiAndG8nIGlzIFVfREFURV9NQVgsIGNoZWNrIHRoZSBhdmFpbGFiaWxpdHkg
b2YgCisgICogICAgICAgICAgICB0aGUgY3VycmVuY3kgYW55IGRhdGUgYWZ0ZXIgJ2Zyb20nIAor
ICAqIAorICAqIEBwYXJhbSBlcnJvckNvZGUgCisgICogICAgICAgICAgICBJQ1UgZXJyb3IgY29k
ZSAKKyAgICogCisgICogQHJldHVybiBUUlVFIGlmIHRoZSBnaXZlbiBJU08gNDIxNyAzLWxldHRl
ciBjb2RlIGlzIHN1cHBvcnRlZCBvbiB0aGUgc3BlY2lmaWVkIGRhdGUgcmFuZ2UuIAorICAqIAor
ICAqIEBzdGFibGUgSUNVIDQuOCAKKyAgKi8gCitVX1NUQUJMRSBVQm9vbCBVX0VYUE9SVDIKK3Vj
dXJyX2lzQXZhaWxhYmxlKGNvbnN0IFVDaGFyKiBpc29Db2RlLCAKKyAgICAgICAgICAgICBVRGF0
ZSBmcm9tLCAKKyAgICAgICAgICAgICBVRGF0ZSB0bywgCisgICAgICAgICAgICAgVUVycm9yQ29k
ZSogZXJyb3JDb2RlKTsKKworLyoqIAorICogRmluZHMgdGhlIG51bWJlciBvZiB2YWxpZCBjdXJy
ZW5jeSBjb2RlcyBmb3IgdGhlCisgKiBnaXZlbiBsb2NhbGUgYW5kIGRhdGUuCisgKiBAcGFyYW0g
bG9jYWxlIHRoZSBsb2NhbGUgZm9yIHdoaWNoIHRvIHJldHJpZXZlIHRoZQorICogICAgICAgICAg
ICAgICBjdXJyZW5jeSBjb3VudC4KKyAqIEBwYXJhbSBkYXRlICAgdGhlIGRhdGUgZm9yIHdoaWNo
IHRvIHJldHJpZXZlIHRoZQorICogICAgICAgICAgICAgICBjdXJyZW5jeSBjb3VudCBmb3IgdGhl
IGdpdmVuIGxvY2FsZS4KKyAqIEBwYXJhbSBlYyAgICAgZXJyb3IgY29kZQorICogQHJldHVybiAg
ICAgICB0aGUgbnVtYmVyIG9mIGN1cnJlbmN5IGNvZGVzIGZvciB0aGUKKyAqICAgICAgICAgICAg
ICAgZ2l2ZW4gbG9jYWxlIGFuZCBkYXRlLiAgSWYgMCwgY3VycmVuY3kKKyAqICAgICAgICAgICAg
ICAgY29kZXMgY291bGRuJ3QgYmUgZm91bmQgZm9yIHRoZSBpbnB1dAorICogICAgICAgICAgICAg
ICB2YWx1ZXMgYXJlIGludmFsaWQuCisgKiBAc3RhYmxlIElDVSA0LjAKKyAqLworVV9TVEFCTEUg
aW50MzJfdCBVX0VYUE9SVDIKK3VjdXJyX2NvdW50Q3VycmVuY2llcyhjb25zdCBjaGFyKiBsb2Nh
bGUsIAorICAgICAgICAgICAgICAgICBVRGF0ZSBkYXRlLCAKKyAgICAgICAgICAgICAgICAgVUVy
cm9yQ29kZSogZWMpOyAKKworLyoqIAorICogRmluZHMgYSBjdXJyZW5jeSBjb2RlIGZvciB0aGUg
Z2l2ZW4gbG9jYWxlIGFuZCBkYXRlIAorICogQHBhcmFtIGxvY2FsZSB0aGUgbG9jYWxlIGZvciB3
aGljaCB0byByZXRyaWV2ZSBhIGN1cnJlbmN5IGNvZGUuICAKKyAqICAgICAgICAgICAgICAgQ3Vy
cmVuY3kgY2FuIGJlIHNwZWNpZmllZCBieSB0aGUgImN1cnJlbmN5IiBrZXl3b3JkIAorICogICAg
ICAgICAgICAgICBpbiB3aGljaCBjYXNlIGl0IG92ZXJyaWRlcyB0aGUgZGVmYXVsdCBjdXJyZW5j
eSBjb2RlIAorICogQHBhcmFtIGRhdGUgICB0aGUgZGF0ZSBmb3Igd2hpY2ggdG8gcmV0cmlldmUg
YSBjdXJyZW5jeSBjb2RlIGZvciAKKyAqICAgICAgICAgICAgICAgdGhlIGdpdmVuIGxvY2FsZS4g
CisgKiBAcGFyYW0gaW5kZXggIHRoZSBpbmRleCB3aXRoaW4gdGhlIGF2YWlsYWJsZSBsaXN0IG9m
IGN1cnJlbmN5IGNvZGVzCisgKiAgICAgICAgICAgICAgIGZvciB0aGUgZ2l2ZW4gbG9jYWxlIG9u
IHRoZSBnaXZlbiBkYXRlLgorICogQHBhcmFtIGJ1ZmYgICBmaWxsIGluIGJ1ZmZlci4gQ2FuIGJl
IE5VTEwgZm9yIHByZWZsaWdodGluZy4gCisgKiBAcGFyYW0gYnVmZkNhcGFjaXR5IGNhcGFjaXR5
IG9mIHRoZSBmaWxsIGluIGJ1ZmZlci4gQ2FuIGJlIDAgZm9yIAorICogICAgICAgICAgICAgICBw
cmVmbGlnaHRpbmcuIElmIGl0IGlzIG5vbi16ZXJvLCB0aGUgYnVmZiBwYXJhbWV0ZXIgCisgKiAg
ICAgICAgICAgICAgIG11c3Qgbm90IGJlIE5VTEwuIAorICogQHBhcmFtIGVjICAgICBlcnJvciBj
b2RlIAorICogQHJldHVybiAgICAgICBsZW5ndGggb2YgdGhlIGN1cnJlbmN5IHN0cmluZy4gSXQg
c2hvdWxkIGFsd2F5cyBiZSAzLiAKKyAqICAgICAgICAgICAgICAgSWYgMCwgY3VycmVuY3kgY291
bGRuJ3QgYmUgZm91bmQgb3IgdGhlIGlucHV0IHZhbHVlcyBhcmUgIAorICogICAgICAgICAgICAg
ICBpbnZhbGlkLiAgCisgKiBAc3RhYmxlIElDVSA0LjAgCisgKi8gCitVX1NUQUJMRSBpbnQzMl90
IFVfRVhQT1JUMiAKK3VjdXJyX2ZvckxvY2FsZUFuZERhdGUoY29uc3QgY2hhciogbG9jYWxlLCAK
KyAgICAgICAgICAgICAgICBVRGF0ZSBkYXRlLCAKKyAgICAgICAgICAgICAgICBpbnQzMl90IGlu
ZGV4LAorICAgICAgICAgICAgICAgIFVDaGFyKiBidWZmLCAKKyAgICAgICAgICAgICAgICBpbnQz
Ml90IGJ1ZmZDYXBhY2l0eSwgCisgICAgICAgICAgICAgICAgVUVycm9yQ29kZSogZWMpOyAKKwor
LyoqCisgKiBHaXZlbiBhIGtleSBhbmQgYSBsb2NhbGUsIHJldHVybnMgYW4gYXJyYXkgb2Ygc3Ry
aW5nIHZhbHVlcyBpbiBhIHByZWZlcnJlZAorICogb3JkZXIgdGhhdCB3b3VsZCBtYWtlIGEgZGlm
ZmVyZW5jZS4gVGhlc2UgYXJlIGFsbCBhbmQgb25seSB0aG9zZSB2YWx1ZXMgd2hlcmUKKyAqIHRo
ZSBvcGVuIChjcmVhdGlvbikgb2YgdGhlIHNlcnZpY2Ugd2l0aCB0aGUgbG9jYWxlIGZvcm1lZCBm
cm9tIHRoZSBpbnB1dCBsb2NhbGUKKyAqIHBsdXMgaW5wdXQga2V5d29yZCBhbmQgdGhhdCB2YWx1
ZSBoYXMgZGlmZmVyZW50IGJlaGF2aW9yIHRoYW4gY3JlYXRpb24gd2l0aCB0aGUKKyAqIGlucHV0
IGxvY2FsZSBhbG9uZS4KKyAqIEBwYXJhbSBrZXkgICAgICAgICAgIG9uZSBvZiB0aGUga2V5cyBz
dXBwb3J0ZWQgYnkgdGhpcyBzZXJ2aWNlLiAgRm9yIG5vdywgb25seQorICogICAgICAgICAgICAg
ICAgICAgICAgImN1cnJlbmN5IiBpcyBzdXBwb3J0ZWQuCisgKiBAcGFyYW0gbG9jYWxlICAgICAg
ICB0aGUgbG9jYWxlCisgKiBAcGFyYW0gY29tbW9ubHlVc2VkICBpZiBzZXQgdG8gdHJ1ZSBpdCB3
aWxsIHJldHVybiBvbmx5IGNvbW1vbmx5IHVzZWQgdmFsdWVzCisgKiAgICAgICAgICAgICAgICAg
ICAgICB3aXRoIHRoZSBnaXZlbiBsb2NhbGUgaW4gcHJlZmVycmVkIG9yZGVyLiAgT3RoZXJ3aXNl
LAorICogICAgICAgICAgICAgICAgICAgICAgaXQgd2lsbCByZXR1cm4gYWxsIHRoZSBhdmFpbGFi
bGUgdmFsdWVzIGZvciB0aGUgbG9jYWxlLgorICogQHBhcmFtIHN0YXR1cyBlcnJvciBzdGF0dXMK
KyAqIEByZXR1cm4gYSBzdHJpbmcgZW51bWVyYXRpb24gb3ZlciBrZXl3b3JkIHZhbHVlcyBmb3Ig
dGhlIGdpdmVuIGtleSBhbmQgdGhlIGxvY2FsZS4KKyAqIEBzdGFibGUgSUNVIDQuMgorICovCitV
X1NUQUJMRSBVRW51bWVyYXRpb24qIFVfRVhQT1JUMgordWN1cnJfZ2V0S2V5d29yZFZhbHVlc0Zv
ckxvY2FsZShjb25zdCBjaGFyKiBrZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGNoYXIqIGxvY2FsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUJv
b2wgY29tbW9ubHlVc2VkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVRXJyb3JD
b2RlKiBzdGF0dXMpOworCisvKioKKyAqIFJldHVybnMgdGhlIElTTyA0MjE3IG51bWVyaWMgY29k
ZSBmb3IgdGhlIGN1cnJlbmN5LgorICogPHA+Tm90ZTogSWYgdGhlIElTTyA0MjE3IG51bWVyaWMg
Y29kZSBpcyBub3QgYXNzaWduZWQgZm9yIHRoZSBjdXJyZW5jeSBvcgorICogdGhlIGN1cnJlbmN5
IGlzIHVua25vd24sIHRoaXMgZnVuY3Rpb24gcmV0dXJucyAwLgorICoKKyAqIEBwYXJhbSBjdXJy
ZW5jeSBudWxsLXRlcm1pbmF0ZWQgMy1sZXR0ZXIgSVNPIDQyMTcgY29kZQorICogQHJldHVybiBU
aGUgSVNPIDQyMTcgbnVtZXJpYyBjb2RlIG9mIHRoZSBjdXJyZW5jeQorICogQHN0YWJsZSBJQ1Ug
NDkKKyAqLworVV9TVEFCTEUgaW50MzJfdCBVX0VYUE9SVDIKK3VjdXJyX2dldE51bWVyaWNDb2Rl
KGNvbnN0IFVDaGFyKiBjdXJyZW5jeSk7CisKKyNlbmRpZiAvKiAjaWYgIVVDT05GSUdfTk9fRk9S
TUFUVElORyAqLworCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
YXBwbGVwYXkvY29jb2EvUGF5bWVudENvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
cHBsZXBheS9jb2NvYS9QYXltZW50Q29jb2EubW0KaW5kZXggNjkzM2E1MWQ2OGI5ODI2NGZkY2U3
MjdlZDY5NjhhMDRkMzY4NmNmYi4uODQ1MGY2ODE3MWMxYTBlOWJiMGZjYmIwY2EzYjUzZTQ5MWZl
MDQzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9jb2NvYS9Q
YXltZW50Q29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9jb2Nv
YS9QYXltZW50Q29jb2EubW0KQEAgLTI4LDkgKzI4LDkgQEAKIAogI2lmIEVOQUJMRShBUFBMRV9Q
QVkpCiAKKyNpbXBvcnQgIlBhc3NLaXRTUEkuaCIKICNpbXBvcnQgIlBheW1lbnRDb250YWN0Lmgi
CiAjaW1wb3J0ICJQYXltZW50TWV0aG9kLmgiCi0jaW1wb3J0IDxQYXNzS2l0L1Bhc3NLaXQuaD4K
ICNpbXBvcnQgPHJ1bnRpbWUvSlNPTk9iamVjdC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRD
b250YWN0Q29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L2NvY29hL1Bh
eW1lbnRDb250YWN0Q29jb2EubW0KaW5kZXggMGJlYmIwOGRmYjkwYThiZTBjZTBmN2QyY2EwNzAw
YTFhMDZhYzhjNC4uMGRjMWQxNDViMzY3NDhmODQ0MTk4NDM3ODgxMGJmZmY5MDg2ODAzZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9jb2NvYS9QYXltZW50Q29u
dGFjdENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvY29jb2Ev
UGF5bWVudENvbnRhY3RDb2NvYS5tbQpAQCAtMjksOSArMjksOSBAQAogI2lmIEVOQUJMRShBUFBM
RV9QQVkpCiAKICNpbXBvcnQgIkpTTWFpblRocmVhZEV4ZWNTdGF0ZS5oIgorI2ltcG9ydCAiUGFz
c0tpdFNQSS5oIgogI2ltcG9ydCAiU29mdExpbmtpbmcuaCIKICNpbXBvcnQgPENvbnRhY3RzL0Nv
bnRhY3RzLmg+Ci0jaW1wb3J0IDxQYXNzS2l0L1Bhc3NLaXQuaD4KICNpbXBvcnQgPHJ1bnRpbWUv
SlNPTk9iamVjdC5oPgogCiBTT0ZUX0xJTktfRlJBTUVXT1JLKENvbnRhY3RzKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9jb2NvYS9QYXltZW50TWVyY2hhbnRT
ZXNzaW9uQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L2NvY29hL1Bh
eW1lbnRNZXJjaGFudFNlc3Npb25Db2NvYS5tbQppbmRleCAzMWM4ZTM2ZmZhNzg0MTI1ZDllZDQx
YjZjNTFlNjM4ZjA5MzBkZjEzLi4zNDkxMmYwOTg0MWQzN2RjNzhkMmE4ODA5Zjk4Mzg5NzA0OTZh
OTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L2NvY29hL1Bh
eW1lbnRNZXJjaGFudFNlc3Npb25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2FwcGxlcGF5L2NvY29hL1BheW1lbnRNZXJjaGFudFNlc3Npb25Db2NvYS5tbQpAQCAtMjksNyAr
MjksNyBAQAogI2lmIEVOQUJMRShBUFBMRV9QQVkpCiAKICNpbXBvcnQgIlNvZnRMaW5raW5nLmgi
Ci0jaW1wb3J0IDxQYXNzS2l0Q29yZS9QS1BheW1lbnRNZXJjaGFudFNlc3Npb24uaD4KKyNpbXBv
cnQgIlBhc3NLaXRTUEkuaCIKICNpbXBvcnQgPHJ1bnRpbWUvSlNPTk9iamVjdC5oPgogCiAjaWYg
UExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBh
eS9jb2NvYS9QYXltZW50TWV0aG9kQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Fw
cGxlcGF5L2NvY29hL1BheW1lbnRNZXRob2RDb2NvYS5tbQppbmRleCAwNjk4NjlmMWM2ZTdjNTZj
MzJlNjM4OTgxZDFiNzdjOGFlMTkxNzM3Li4zM2EyZTg2YjY3ZjBjOWYzYmE1ZGFhYzJiMTVmNDAy
MDYwOTBkZTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L2Nv
Y29hL1BheW1lbnRNZXRob2RDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Fw
cGxlcGF5L2NvY29hL1BheW1lbnRNZXRob2RDb2NvYS5tbQpAQCAtMjgsNyArMjgsNyBAQAogCiAj
aWYgRU5BQkxFKEFQUExFX1BBWSkKIAotI2ltcG9ydCA8UGFzc0tpdC9QYXNzS2l0Lmg+CisjaW1w
b3J0ICJQYXNzS2l0U1BJLmgiCiAjaW1wb3J0IDxydW50aW1lL0pTT05PYmplY3QuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IDVkYzMwNjFlZmViN2RlMmI1MjFkMmQ4ZThhMmRkNjYzYmMy
MjRhNjMuLjM0ZGQyMjYxNGUyYmNmZTRiZDM0OWIyMTQwZTJjODgzMjNjODVhNTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTQz
Myw2ICs0MzMsOCBAQAogCQkwQjkwNTYxRTBGMjU3RTkzMDA5NUZGNkEgLyogVGhyZWFkYWJsZUxv
YWRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
QjkwNTYxRDBGMjU3RTkzMDA5NUZGNkEgLyogVGhyZWFkYWJsZUxvYWRlci5jcHAgKi87IH07CiAJ
CTBCOTA1NkY4MEYyNjg1RjMwMDk1RkY2QSAvKiBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBCOTA1NkY2MEYy
Njg1RjMwMDk1RkY2QSAvKiBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcCAqLzsgfTsKIAkJMEI5
MDU2RjkwRjI2ODVGMzAwOTVGRjZBIC8qIFdvcmtlclRocmVhZGFibGVMb2FkZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBCOTA1NkY3MEYyNjg1RjMw
MDk1RkY2QSAvKiBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoKTsgfTsgfTsKKwkJMEJDRjgzRjYxMDU5QzFFQjAwRDk5OUREIC8qIE1hdGhNTEZy
YWN0aW9uRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwQkNGODNFRjEwNTlDMUVCMDBEOTk5REQgLyogTWF0aE1MRnJhY3Rpb25FbGVtZW50
LmNwcCAqLzsgfTsKKwkJMEJDRjgzRjcxMDU5QzFFQjAwRDk5OUREIC8qIE1hdGhNTEZyYWN0aW9u
RWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEJDRjgzRjAxMDU5QzFFQjAwRDk5OUREIC8qIE1hdGhNTEZyYWN0aW9uRWxlbWVudC5oICovOyB9
OwogCQkwQkUwMzBBMjBGMzExMkZCMDAzQzFBNDYgLyogUmVuZGVyTGluZUJveExpc3QuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBCRTAzMEExMEYzMTEy
RkIwMDNDMUE0NiAvKiBSZW5kZXJMaW5lQm94TGlzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBDM0YxRjVBMTBDODg3MTIwMEQ3MkNFMSAvKiBX
ZWJHTFVuaWZvcm1Mb2NhdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwQzNGMUY1NzEwQzg4NzEyMDBENzJDRTEgLyogV2ViR0xVbmlmb3JtTG9j
YXRpb24uY3BwICovOyB9OwogCQkwQzNGMUY1QjEwQzg4NzEyMDBENzJDRTEgLyogV2ViR0xVbmlm
b3JtTG9jYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBDM0YxRjU4MTBDODg3MTIwMEQ3MkNFMSAvKiBXZWJHTFVuaWZvcm1Mb2NhdGlvbi5oICov
OyB9OwpAQCAtOTYyLDYgKzk2NCw3IEBACiAJCTFBRTk2QTk4MUQxQTEwMDcwMEI4Njc2OCAvKiBK
U0FwcGxlUGF5U2Vzc2lvbkN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAxQUU5NkE3NjFEMUEwNEQzMDBCODY3NjggLyogSlNBcHBsZVBheVNl
c3Npb25DdXN0b20uY3BwICovOyB9OwogCQkxQUU5NkE5OTFEMUExMDA3MDBCODY3NjggLyogSlNB
cHBsZVBheVNoaXBwaW5nQ29udGFjdFNlbGVjdGVkRXZlbnRDdXN0b20uY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFFOTZBNzcxRDFBMDREMzAwQjg2
NzY4IC8qIEpTQXBwbGVQYXlTaGlwcGluZ0NvbnRhY3RTZWxlY3RlZEV2ZW50Q3VzdG9tLmNwcCAq
LzsgfTsKIAkJMUFFOTZBOUExRDFBMTAwNzAwQjg2NzY4IC8qIEpTQXBwbGVQYXlTaGlwcGluZ01l
dGhvZFNlbGVjdGVkRXZlbnRDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMUFFOTZBNzgxRDFBMDREMzAwQjg2NzY4IC8qIEpTQXBwbGVQYXlT
aGlwcGluZ01ldGhvZFNlbGVjdGVkRXZlbnRDdXN0b20uY3BwICovOyB9OworCQkxQUVEM0JEQTFE
M0Q1RjI2MDA5OUZENzggLyogUGFzc0tpdFNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMUFFRDNCRDkxRDNENUYyNjAwOTlGRDc4IC8qIFBhc3NLaXRT
UEkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkx
QUVGNEU2NzE3MEUxNjAzMDBBQjI3OTkgLyogQ2FjaGVkRm9udENsaWVudC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFFRjRFNjYxNzBFMTYwMzAwQUIy
Nzk5IC8qIENhY2hlZEZvbnRDbGllbnQuaCAqLzsgfTsKIAkJMUFFRjRFNjkxNzBFMTc0ODAwQUIy
Nzk5IC8qIENhY2hlZFNWR0RvY3VtZW50Q2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUVGNEU2ODE3MEUxNzQ4MDBBQjI3OTkgLyogQ2FjaGVk
U1ZHRG9jdW1lbnRDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQkxQUYzMjY3OTBENzhCOTQ0MDA2OEYwQzQgLyogRWRpdG9yQ2xpZW50Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUYzMjY3NzBE
NzhCOTQ0MDA2OEYwQzQgLyogRWRpdG9yQ2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTY5MDMsOCArNjkwNiw2IEBACiAJCUZBNjU0QTZD
MTEwOEFCRUQwMDI2MTVFMCAvKiBNYXRoTUxUZXh0RWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkE2NTRBNkExMTA4QUJFRDAwMjYxNUUwIC8q
IE1hdGhNTFRleHRFbGVtZW50LmggKi87IH07CiAJCUZBQkU3MkY0MTA1OUMxRUIwMEQ5OTlERCAv
KiBNYXRoTUxFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEZBQkU3MkVEMTA1OUMxRUIwMEQ5OTlERCAvKiBNYXRoTUxFbGVtZW50LmNwcCAq
LzsgfTsKIAkJRkFCRTcyRjUxMDU5QzFFQjAwRDk5OUREIC8qIE1hdGhNTEVsZW1lbnQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZBQkU3MkVFMTA1OUMx
RUIwMEQ5OTlERCAvKiBNYXRoTUxFbGVtZW50LmggKi87IH07Ci0JCTBCQ0Y4M0Y2MTA1OUMxRUIw
MEQ5OTlERCAvKiBNYXRoTUxGcmFjdGlvbkVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEJDRjgzRUYxMDU5QzFFQjAwRDk5OUREIC8qIE1h
dGhNTEZyYWN0aW9uRWxlbWVudC5jcHAgKi87IH07Ci0JCTBCQ0Y4M0Y3MTA1OUMxRUIwMEQ5OTlE
RCAvKiBNYXRoTUxGcmFjdGlvbkVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBCQ0Y4M0YwMTA1OUMxRUIwMEQ5OTlERCAvKiBNYXRoTUxGcmFj
dGlvbkVsZW1lbnQuaCAqLzsgfTsKIAkJRkFCRTcyRjYxMDU5QzFFQjAwRDk5OUREIC8qIE1hdGhN
TElubGluZUNvbnRhaW5lckVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRkFCRTcyRUYxMDU5QzFFQjAwRDk5OUREIC8qIE1hdGhNTElubGlu
ZUNvbnRhaW5lckVsZW1lbnQuY3BwICovOyB9OwogCQlGQUJFNzJGNzEwNTlDMUVCMDBEOTk5REQg
LyogTWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkFCRTcyRjAxMDU5QzFFQjAwRDk5OUREIC8qIE1hdGhN
TElubGluZUNvbnRhaW5lckVsZW1lbnQuaCAqLzsgfTsKIAkJRkFCRTcyRjgxMDU5QzFFQjAwRDk5
OUREIC8qIE1hdGhNTE1hdGhFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEZBQkU3MkYxMTA1OUMxRUIwMEQ5OTlERCAvKiBNYXRoTUxNYXRo
RWxlbWVudC5jcHAgKi87IH07CkBAIC03OTE4LDYgKzc5MTksOCBAQAogCQkwQjkwNTYxRDBGMjU3
RTkzMDA5NUZGNkEgLyogVGhyZWFkYWJsZUxvYWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBUaHJlYWRhYmxlTG9hZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMEI5MDU2RjYwRjI2ODVGMzAwOTVGRjZBIC8qIFdvcmtlclRocmVhZGFibGVM
b2FkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV29ya2VyVGhy
ZWFkYWJsZUxvYWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBCOTA1NkY3
MEYyNjg1RjMwMDk1RkY2QSAvKiBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdvcmtlclRocmVhZGFibGVMb2FkZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEJDRjgzRUYxMDU5QzFFQjAwRDk5OUREIC8qIE1hdGhNTEZy
YWN0aW9uRWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBN
YXRoTUxGcmFjdGlvbkVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkw
QkNGODNGMDEwNTlDMUVCMDBEOTk5REQgLyogTWF0aE1MRnJhY3Rpb25FbGVtZW50LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hdGhNTEZyYWN0aW9uRWxlbWVudC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwQkUwMzBBMTBGMzExMkZCMDAzQzFBNDYgLyogUmVu
ZGVyTGluZUJveExpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVy
TGluZUJveExpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEMzRjFGNTcxMEM4
ODcxMjAwRDcyQ0UxIC8qIFdlYkdMVW5pZm9ybUxvY2F0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkdMVW5pZm9ybUxvY2F0aW9uLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEMzRjFGNTgxMEM4ODcxMjAwRDcyQ0UxIC8qIFdlYkdMVW5p
Zm9ybUxvY2F0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdMVW5p
Zm9ybUxvY2F0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04NTEzLDYgKzg1
MTYsNyBAQAogCQkxQUU5NkE4NTFEMUEwQTgwMDBCODY3NjggLyogSlNBcHBsZVBheVZhbGlkYXRl
TWVyY2hhbnRFdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0FwcGxl
UGF5VmFsaWRhdGVNZXJjaGFudEV2ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTFBRTk2QTg2MUQxQTBDRUIwMEI4Njc2OCAvKiBQYXltZW50QXV0aG9yaXphdGlvblN0YXR1cy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYXltZW50QXV0aG9yaXphdGlvblN0
YXR1cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQUU5NkE4NzFEMUEwQ0VCMDBC
ODY3NjggLyogUGF5bWVudE1lcmNoYW50U2Vzc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBQYXltZW50TWVyY2hhbnRTZXNzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTFBRUQzQkQ5MUQzRDVGMjYwMDk5RkQ3OCAvKiBQYXNzS2l0U1BJLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBhc3NLaXRTUEkuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMUFFRjRFNjYxNzBFMTYwMzAwQUIyNzk5IC8qIENhY2hlZEZvbnRDbGll
bnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FjaGVkRm9udENsaWVudC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQUVGNEU2ODE3MEUxNzQ4MDBBQjI3OTkg
LyogQ2FjaGVkU1ZHRG9jdW1lbnRDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQ2FjaGVkU1ZHRG9jdW1lbnRDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMUFGMzI2NzcwRDc4Qjk0NDAwNjhGMEM0IC8qIEVkaXRvckNsaWVudC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFZGl0b3JDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTE1MDc2LDggKzE1MDgwLDYgQEAKIAkJRkE2RTQ2NkZDRDA0MThBOTk2
NkE1QjYwIC8qIEROU1Jlc29sdmVRdWV1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBETlNSZXNvbHZlUXVldWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkFC
RTcyRUQxMDU5QzFFQjAwRDk5OUREIC8qIE1hdGhNTEVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWF0aE1MRWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUZBQkU3MkVFMTA1OUMxRUIwMEQ5OTlERCAvKiBNYXRoTUxFbGVtZW50
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hdGhNTEVsZW1lbnQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMEJDRjgzRUYxMDU5QzFFQjAwRDk5OUREIC8qIE1h
dGhNTEZyYWN0aW9uRWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBNYXRoTUxGcmFjdGlvbkVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQkwQkNGODNGMDEwNTlDMUVCMDBEOTk5REQgLyogTWF0aE1MRnJhY3Rpb25FbGVtZW50Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hdGhNTEZyYWN0aW9uRWxlbWVudC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGQUJFNzJFRjEwNTlDMUVCMDBEOTk5REQg
LyogTWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBNYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkFCRTcyRjAxMDU5QzFFQjAwRDk5OUREIC8qIE1hdGhN
TElubGluZUNvbnRhaW5lckVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gTWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlGQUJFNzJGMTEwNTlDMUVCMDBEOTk5REQgLyogTWF0aE1MTWF0aEVsZW1lbnQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWF0aE1MTWF0aEVsZW1lbnQu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTc4MzYsNiArMTc4MzgsNyBAQAog
CQkJCUNFMTI1MjU0MUExQkVDMEUwMDg2NDQ4MCAvKiBOU1VSTERvd25sb2FkU1BJLmggKi8sCiAJ
CQkJNjUzRUY4MzgxOUEwNDNBRTAwNTIyMDJDIC8qIE5TVVJMRmlsZVR5cGVNYXBwaW5nc1NQSS5o
ICovLAogCQkJCTMxQjMxM0RDMUI2OTg3REIwMEYyQUFCQyAvKiBOU1VSTFJlcXVlc3RTUEkuaCAq
LywKKwkJCQkxQUVEM0JEOTFEM0Q1RjI2MDA5OUZENzggLyogUGFzc0tpdFNQSS5oICovLAogCQkJ
CUNFRTI3QUNBMUJCQjUzQTIwMDcyNDAwQSAvKiBwdGhyZWFkU1BJLmggKi8sCiAJCQkJQ0UxMjUy
M0MxQTE2NzZDRDAwODY0NDgwIC8qIFF1YXJ0ekNvcmVTUEkuaCAqLywKIAkJCQlDRUMzMzdBQzFB
NDYwNzFGMDA5Qjg1MjMgLyogU2VydmVyc1NQSS5oICovLApAQCAtMjU0ODYsNiArMjU0ODksNyBA
QAogCQkJCUJDQjE2QzJBMDk3OUMzQkQwMDQ2Nzc0MSAvKiBDYWNoZWRSZXNvdXJjZUxvYWRlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNTA4MUUzRTAzQ0ZGODBDMTZFRjhCNDhCIC8qIENhY2hlZFJl
c291cmNlUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNkM2Mzg4OTVBOTZDQ0VFNTBDOEM5
NDZDIC8qIENhY2hlZFJlc291cmNlUmVxdWVzdEluaXRpYXRvcnMuaCBpbiBIZWFkZXJzICovLAor
CQkJCTFBRUQzQkRBMUQzRDVGMjYwMDk5RkQ3OCAvKiBQYXNzS2l0U1BJLmggaW4gSGVhZGVycyAq
LywKIAkJCQlCQ0IxNkMyNDA5NzlDM0JEMDA0Njc3NDEgLyogQ2FjaGVkU2NyaXB0LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCQ0Q1MzM2NDBFRDY4NDg5MDA4ODc0NjggLyogQ2FjaGVkU2NyaXB0U291
cmNlUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUQwQkM1NDQ5MTQ0M0FDNEEwMEUxMDVE
QSAvKiBDYWNoZWRTdHlsZVNoZWV0Q2xpZW50LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2ljdS91bmljb2RlL3VjdXJyLmggYi9Tb3VyY2UvV2ViQ29yZS9pY3Uv
dW5pY29kZS91Y3Vyci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI3Njk4MTMzZTQyMTA2MTNiNDNmOTg5MTYyNGUw
YmEzNmU1ODI3ZDEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pY3UvdW5pY29k
ZS91Y3Vyci5oCkBAIC0wLDAgKzEsMzYwIEBACisvKgorKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiBDb3B5cmln
aHQgKGMpIDIwMDItMjAxMywgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcworKiBDb3Jw
b3JhdGlvbiBhbmQgb3RoZXJzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyoqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioK
KyovCisjaWZuZGVmIF9VQ1VSUl9IXworI2RlZmluZSBfVUNVUlJfSF8KKworI2luY2x1ZGUgInVu
aWNvZGUvdXR5cGVzLmgiCisjaW5jbHVkZSAidW5pY29kZS91ZW51bS5oIgorCisvKioKKyAqIFxm
aWxlIAorICogXGJyaWVmIEMgQVBJOiBFbmNhcHN1bGF0ZXMgaW5mb3JtYXRpb24gYWJvdXQgYSBj
dXJyZW5jeS4KKyAqLworCisjaWYgIVVDT05GSUdfTk9fRk9STUFUVElORworCisvKioKKyAqIFRo
ZSB1Y3VyciBBUEkgZW5jYXBzdWxhdGVzIGluZm9ybWF0aW9uIGFib3V0IGEgY3VycmVuY3ksIGFz
IGRlZmluZWQgYnkKKyAqIElTTyA0MjE3LiAgQSBjdXJyZW5jeSBpcyByZXByZXNlbnRlZCBieSBh
IDMtY2hhcmFjdGVyIHN0cmluZworICogY29udGFpbmluZyBpdHMgSVNPIDQyMTcgY29kZS4gIFRo
aXMgQVBJIGNhbiByZXR1cm4gdmFyaW91cyBkYXRhCisgKiBuZWNlc3NhcnkgdGhlIHByb3BlciBk
aXNwbGF5IG9mIGEgY3VycmVuY3k6CisgKgorICogPHVsPjxsaT5BIGRpc3BsYXkgc3ltYm9sLCBm
b3IgYSBzcGVjaWZpYyBsb2NhbGUKKyAqIDxsaT5UaGUgbnVtYmVyIG9mIGZyYWN0aW9uIGRpZ2l0
cyB0byBkaXNwbGF5CisgKiA8bGk+QSByb3VuZGluZyBpbmNyZW1lbnQKKyAqIDwvdWw+CisgKgor
ICogVGhlIDx0dD5EZWNpbWFsRm9ybWF0PC90dD4gY2xhc3MgdXNlcyB0aGVzZSBkYXRhIHRvIGRp
c3BsYXkKKyAqIGN1cnJlbmNpZXMuCisgKiBAYXV0aG9yIEFsYW4gTGl1CisgKiBAc2luY2UgSUNV
IDIuMgorICovCisKKy8qKgorICogRmluZHMgYSBjdXJyZW5jeSBjb2RlIGZvciB0aGUgZ2l2ZW4g
bG9jYWxlLgorICogQHBhcmFtIGxvY2FsZSB0aGUgbG9jYWxlIGZvciB3aGljaCB0byByZXRyaWV2
ZSBhIGN1cnJlbmN5IGNvZGUuIAorICogICAgICAgICAgICAgICBDdXJyZW5jeSBjYW4gYmUgc3Bl
Y2lmaWVkIGJ5IHRoZSAiY3VycmVuY3kiIGtleXdvcmQKKyAqICAgICAgICAgICAgICAgaW4gd2hp
Y2ggY2FzZSBpdCBvdmVycmlkZXMgdGhlIGRlZmF1bHQgY3VycmVuY3kgY29kZQorICogQHBhcmFt
IGJ1ZmYgICBmaWxsIGluIGJ1ZmZlci4gQ2FuIGJlIE5VTEwgZm9yIHByZWZsaWdodGluZy4KKyAq
IEBwYXJhbSBidWZmQ2FwYWNpdHkgY2FwYWNpdHkgb2YgdGhlIGZpbGwgaW4gYnVmZmVyLiBDYW4g
YmUgMCBmb3IKKyAqICAgICAgICAgICAgICAgcHJlZmxpZ2h0aW5nLiBJZiBpdCBpcyBub24temVy
bywgdGhlIGJ1ZmYgcGFyYW1ldGVyCisgKiAgICAgICAgICAgICAgIG11c3Qgbm90IGJlIE5VTEwu
CisgKiBAcGFyYW0gZWMgZXJyb3IgY29kZQorICogQHJldHVybiBsZW5ndGggb2YgdGhlIGN1cnJl
bmN5IHN0cmluZy4gSXQgc2hvdWxkIGFsd2F5cyBiZSAzLiBJZiAwLAorICogICAgICAgICAgICAg
ICAgY3VycmVuY3kgY291bGRuJ3QgYmUgZm91bmQgb3IgdGhlIGlucHV0IHZhbHVlcyBhcmUgCisg
KiAgICAgICAgICAgICAgICBpbnZhbGlkLiAKKyAqIEBzdGFibGUgSUNVIDIuOAorICovCitVX1NU
QUJMRSBpbnQzMl90IFVfRVhQT1JUMgordWN1cnJfZm9yTG9jYWxlKGNvbnN0IGNoYXIqIGxvY2Fs
ZSwKKyAgICAgICAgICAgICAgICBVQ2hhciogYnVmZiwKKyAgICAgICAgICAgICAgICBpbnQzMl90
IGJ1ZmZDYXBhY2l0eSwKKyAgICAgICAgICAgICAgICBVRXJyb3JDb2RlKiBlYyk7CisKKy8qKgor
ICogU2VsZWN0b3IgY29uc3RhbnRzIGZvciB1Y3Vycl9nZXROYW1lKCkuCisgKgorICogQHNlZSB1
Y3Vycl9nZXROYW1lCisgKiBAc3RhYmxlIElDVSAyLjYKKyAqLwordHlwZWRlZiBlbnVtIFVDdXJy
TmFtZVN0eWxlIHsKKyAgICAvKioKKyAgICAgKiBTZWxlY3RvciBmb3IgdWN1cnJfZ2V0TmFtZSBp
bmRpY2F0aW5nIGEgc3ltYm9saWMgbmFtZSBmb3IgYQorICAgICAqIGN1cnJlbmN5LCBzdWNoIGFz
ICIkIiBmb3IgVVNELgorICAgICAqIEBzdGFibGUgSUNVIDIuNgorICAgICAqLworICAgIFVDVVJS
X1NZTUJPTF9OQU1FLAorCisgICAgLyoqCisgICAgICogU2VsZWN0b3IgZm9yIHVjdXJyX2dldE5h
bWUgaW5kaWNhdGluZyB0aGUgbG9uZyBuYW1lIGZvciBhCisgICAgICogY3VycmVuY3ksIHN1Y2gg
YXMgIlVTIERvbGxhciIgZm9yIFVTRC4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjYKKyAgICAgKi8K
KyAgICBVQ1VSUl9MT05HX05BTUUKK30gVUN1cnJOYW1lU3R5bGU7CisKKyNpZiAhVUNPTkZJR19O
T19TRVJWSUNFCisvKioKKyAqIEBzdGFibGUgSUNVIDIuNgorICovCit0eXBlZGVmIGNvbnN0IHZv
aWQqIFVDdXJyUmVnaXN0cnlLZXk7CisKKy8qKgorICogUmVnaXN0ZXIgYW4gKGV4aXN0aW5nKSBJ
U08gNDIxNyBjdXJyZW5jeSBjb2RlIGZvciB0aGUgZ2l2ZW4gbG9jYWxlLgorICogT25seSB0aGUg
Y291bnRyeSBjb2RlIGFuZCB0aGUgdHdvIHZhcmlhbnRzIEVVUk8gYW5kIFBSRV9FVVJPIGFyZQor
ICogcmVjb2duaXplZC4KKyAqIEBwYXJhbSBpc29Db2RlIHRoZSB0aHJlZS1sZXR0ZXIgSVNPIDQy
MTcgY3VycmVuY3kgY29kZQorICogQHBhcmFtIGxvY2FsZSAgdGhlIGxvY2FsZSBmb3Igd2hpY2gg
dG8gcmVnaXN0ZXIgdGhpcyBjdXJyZW5jeSBjb2RlCisgKiBAcGFyYW0gc3RhdHVzIHRoZSBpbi9v
dXQgc3RhdHVzIGNvZGUKKyAqIEByZXR1cm4gYSByZWdpc3RyeSBrZXkgdGhhdCBjYW4gYmUgdXNl
ZCB0byB1bnJlZ2lzdGVyIHRoaXMgY3VycmVuY3kgY29kZSwgb3IgTlVMTAorICogaWYgdGhlcmUg
d2FzIGFuIGVycm9yLgorICogQHN0YWJsZSBJQ1UgMi42CisgKi8KK1VfU1RBQkxFIFVDdXJyUmVn
aXN0cnlLZXkgVV9FWFBPUlQyCit1Y3Vycl9yZWdpc3Rlcihjb25zdCBVQ2hhciogaXNvQ29kZSwg
CisgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogbG9jYWxlLCAgCisgICAgICAgICAgICAg
ICAgICAgVUVycm9yQ29kZSogc3RhdHVzKTsKKy8qKgorICogVW5yZWdpc3RlciB0aGUgcHJldmlv
dXNseS1yZWdpc3RlcmVkIGN1cnJlbmN5IGRlZmluaXRpb25zIHVzaW5nIHRoZQorICogVVJlZ2lz
dHJ5S2V5IHJldHVybmVkIGZyb20gdWN1cnJfcmVnaXN0ZXIuICBLZXkgYmVjb21lcyBpbnZhbGlk
IGFmdGVyCisgKiBhIHN1Y2Nlc3NmdWwgY2FsbCBhbmQgc2hvdWxkIG5vdCBiZSB1c2VkIGFnYWlu
LiAgQW55IGN1cnJlbmN5IAorICogdGhhdCBtaWdodCBoYXZlIGJlZW4gaGlkZGVuIGJ5IHRoZSBv
cmlnaW5hbCB1Y3Vycl9yZWdpc3RlciBjYWxsIGlzIAorICogcmVzdG9yZWQuCisgKiBAcGFyYW0g
a2V5IHRoZSByZWdpc3RyeSBrZXkgcmV0dXJuZWQgYnkgYSBwcmV2aW91cyBjYWxsIHRvIHVjdXJy
X3JlZ2lzdGVyCisgKiBAcGFyYW0gc3RhdHVzIHRoZSBpbi9vdXQgc3RhdHVzIGNvZGUsIG5vIHNw
ZWNpYWwgbWVhbmluZ3MgYXJlIGFzc2lnbmVkCisgKiBAcmV0dXJuIFRSVUUgaWYgdGhlIGN1cnJl
bmN5IGZvciB0aGlzIGtleSB3YXMgc3VjY2Vzc2Z1bGx5IHVucmVnaXN0ZXJlZAorICogQHN0YWJs
ZSBJQ1UgMi42CisgKi8KK1VfU1RBQkxFIFVCb29sIFVfRVhQT1JUMgordWN1cnJfdW5yZWdpc3Rl
cihVQ3VyclJlZ2lzdHJ5S2V5IGtleSwgVUVycm9yQ29kZSogc3RhdHVzKTsKKyNlbmRpZiAvKiBV
Q09ORklHX05PX1NFUlZJQ0UgKi8KKworLyoqCisgKiBSZXR1cm5zIHRoZSBkaXNwbGF5IG5hbWUg
Zm9yIHRoZSBnaXZlbiBjdXJyZW5jeSBpbiB0aGUKKyAqIGdpdmVuIGxvY2FsZS4gIEZvciBleGFt
cGxlLCB0aGUgZGlzcGxheSBuYW1lIGZvciB0aGUgVVNECisgKiBjdXJyZW5jeSBvYmplY3QgaW4g
dGhlIGVuX1VTIGxvY2FsZSBpcyAiJCIuCisgKiBAcGFyYW0gY3VycmVuY3kgbnVsbC10ZXJtaW5h
dGVkIDMtbGV0dGVyIElTTyA0MjE3IGNvZGUKKyAqIEBwYXJhbSBsb2NhbGUgbG9jYWxlIGluIHdo
aWNoIHRvIGRpc3BsYXkgY3VycmVuY3kKKyAqIEBwYXJhbSBuYW1lU3R5bGUgc2VsZWN0b3IgZm9y
IHdoaWNoIGtpbmQgb2YgbmFtZSB0byByZXR1cm4KKyAqIEBwYXJhbSBpc0Nob2ljZUZvcm1hdCBm
aWxsLWluIHNldCB0byBUUlVFIGlmIHRoZSByZXR1cm5lZCB2YWx1ZQorICogaXMgYSBDaG9pY2VG
b3JtYXQgcGF0dGVybjsgb3RoZXJ3aXNlIGl0IGlzIGEgc3RhdGljIHN0cmluZworICogQHBhcmFt
IGxlbiBmaWxsLWluIHBhcmFtZXRlciB0byByZWNlaXZlIGxlbmd0aCBvZiByZXN1bHQKKyAqIEBw
YXJhbSBlYyBlcnJvciBjb2RlCisgKiBAcmV0dXJuIHBvaW50ZXIgdG8gZGlzcGxheSBzdHJpbmcg
b2YgJ2xlbicgVUNoYXJzLiAgSWYgdGhlIHJlc291cmNlCisgKiBkYXRhIGNvbnRhaW5zIG5vIGVu
dHJ5IGZvciAnY3VycmVuY3knLCB0aGVuICdjdXJyZW5jeScgaXRzZWxmIGlzCisgKiByZXR1cm5l
ZC4gIElmICppc0Nob2ljZUZvcm1hdCBpcyBUUlVFLCB0aGVuIHRoZSByZXN1bHQgaXMgYQorICog
Q2hvaWNlRm9ybWF0IHBhdHRlcm4uICBPdGhlcndpc2UgaXQgaXMgYSBzdGF0aWMgc3RyaW5nLgor
ICogQHN0YWJsZSBJQ1UgMi42CisgKi8KK1VfU1RBQkxFIGNvbnN0IFVDaGFyKiBVX0VYUE9SVDIK
K3VjdXJyX2dldE5hbWUoY29uc3QgVUNoYXIqIGN1cnJlbmN5LAorICAgICAgICAgICAgICBjb25z
dCBjaGFyKiBsb2NhbGUsCisgICAgICAgICAgICAgIFVDdXJyTmFtZVN0eWxlIG5hbWVTdHlsZSwK
KyAgICAgICAgICAgICAgVUJvb2wqIGlzQ2hvaWNlRm9ybWF0LAorICAgICAgICAgICAgICBpbnQz
Ml90KiBsZW4sCisgICAgICAgICAgICAgIFVFcnJvckNvZGUqIGVjKTsKKworLyoqCisgKiBSZXR1
cm5zIHRoZSBwbHVyYWwgbmFtZSBmb3IgdGhlIGdpdmVuIGN1cnJlbmN5IGluIHRoZQorICogZ2l2
ZW4gbG9jYWxlLiAgRm9yIGV4YW1wbGUsIHRoZSBwbHVyYWwgbmFtZSBmb3IgdGhlIFVTRAorICog
Y3VycmVuY3kgb2JqZWN0IGluIHRoZSBlbl9VUyBsb2NhbGUgaXMgIlVTIGRvbGxhciIgb3IgIlVT
IGRvbGxhcnMiLgorICogQHBhcmFtIGN1cnJlbmN5IG51bGwtdGVybWluYXRlZCAzLWxldHRlciBJ
U08gNDIxNyBjb2RlCisgKiBAcGFyYW0gbG9jYWxlIGxvY2FsZSBpbiB3aGljaCB0byBkaXNwbGF5
IGN1cnJlbmN5CisgKiBAcGFyYW0gaXNDaG9pY2VGb3JtYXQgZmlsbC1pbiBzZXQgdG8gVFJVRSBp
ZiB0aGUgcmV0dXJuZWQgdmFsdWUKKyAqIGlzIGEgQ2hvaWNlRm9ybWF0IHBhdHRlcm47IG90aGVy
d2lzZSBpdCBpcyBhIHN0YXRpYyBzdHJpbmcKKyAqIEBwYXJhbSBwbHVyYWxDb3VudCBwbHVyYWwg
Y291bnQKKyAqIEBwYXJhbSBsZW4gZmlsbC1pbiBwYXJhbWV0ZXIgdG8gcmVjZWl2ZSBsZW5ndGgg
b2YgcmVzdWx0CisgKiBAcGFyYW0gZWMgZXJyb3IgY29kZQorICogQHJldHVybiBwb2ludGVyIHRv
IGRpc3BsYXkgc3RyaW5nIG9mICdsZW4nIFVDaGFycy4gIElmIHRoZSByZXNvdXJjZQorICogZGF0
YSBjb250YWlucyBubyBlbnRyeSBmb3IgJ2N1cnJlbmN5JywgdGhlbiAnY3VycmVuY3knIGl0c2Vs
ZiBpcworICogcmV0dXJuZWQuICAKKyAqIEBzdGFibGUgSUNVIDQuMgorICovCitVX1NUQUJMRSBj
b25zdCBVQ2hhciogVV9FWFBPUlQyCit1Y3Vycl9nZXRQbHVyYWxOYW1lKGNvbnN0IFVDaGFyKiBj
dXJyZW5jeSwKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogbG9jYWxlLAorICAgICAg
ICAgICAgICAgICAgICBVQm9vbCogaXNDaG9pY2VGb3JtYXQsCisgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGNoYXIqIHBsdXJhbENvdW50LAorICAgICAgICAgICAgICAgICAgICBpbnQzMl90KiBs
ZW4sCisgICAgICAgICAgICAgICAgICAgIFVFcnJvckNvZGUqIGVjKTsKKworLyoqCisgKiBSZXR1
cm5zIHRoZSBudW1iZXIgb2YgdGhlIG51bWJlciBvZiBmcmFjdGlvbiBkaWdpdHMgdGhhdCBzaG91
bGQKKyAqIGJlIGRpc3BsYXllZCBmb3IgdGhlIGdpdmVuIGN1cnJlbmN5LgorICogQHBhcmFtIGN1
cnJlbmN5IG51bGwtdGVybWluYXRlZCAzLWxldHRlciBJU08gNDIxNyBjb2RlCisgKiBAcGFyYW0g
ZWMgaW5wdXQtb3V0cHV0IGVycm9yIGNvZGUKKyAqIEByZXR1cm4gYSBub24tbmVnYXRpdmUgbnVt
YmVyIG9mIGZyYWN0aW9uIGRpZ2l0cyB0byBiZQorICogZGlzcGxheWVkLCBvciAwIGlmIHRoZXJl
IGlzIGFuIGVycm9yCisgKiBAc3RhYmxlIElDVSAzLjAKKyAqLworVV9TVEFCTEUgaW50MzJfdCBV
X0VYUE9SVDIKK3VjdXJyX2dldERlZmF1bHRGcmFjdGlvbkRpZ2l0cyhjb25zdCBVQ2hhciogY3Vy
cmVuY3ksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUVycm9yQ29kZSogZWMpOwor
CisvKioKKyAqIFJldHVybnMgdGhlIHJvdW5kaW5nIGluY3JlbWVudCBmb3IgdGhlIGdpdmVuIGN1
cnJlbmN5LCBvciAwLjAgaWYgbm8KKyAqIHJvdW5kaW5nIGlzIGRvbmUgYnkgdGhlIGN1cnJlbmN5
LgorICogQHBhcmFtIGN1cnJlbmN5IG51bGwtdGVybWluYXRlZCAzLWxldHRlciBJU08gNDIxNyBj
b2RlCisgKiBAcGFyYW0gZWMgaW5wdXQtb3V0cHV0IGVycm9yIGNvZGUKKyAqIEByZXR1cm4gdGhl
IG5vbi1uZWdhdGl2ZSByb3VuZGluZyBpbmNyZW1lbnQsIG9yIDAuMCBpZiBub25lLAorICogb3Ig
MC4wIGlmIHRoZXJlIGlzIGFuIGVycm9yCisgKiBAc3RhYmxlIElDVSAzLjAKKyAqLworVV9TVEFC
TEUgZG91YmxlIFVfRVhQT1JUMgordWN1cnJfZ2V0Um91bmRpbmdJbmNyZW1lbnQoY29uc3QgVUNo
YXIqIGN1cnJlbmN5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgVUVycm9yQ29kZSogZWMp
OworCisvKioKKyAqIFNlbGVjdG9yIGNvbnN0YW50cyBmb3IgdWN1cnJfb3BlbkN1cnJlbmNpZXMo
KS4KKyAqCisgKiBAc2VlIHVjdXJyX29wZW5DdXJyZW5jaWVzCisgKiBAc3RhYmxlIElDVSAzLjIK
KyAqLwordHlwZWRlZiBlbnVtIFVDdXJyQ3VycmVuY3lUeXBlIHsKKyAgICAvKioKKyAgICAgKiBT
ZWxlY3QgYWxsIElTTy00MjE3IGN1cnJlbmN5IGNvZGVzLgorICAgICAqIEBzdGFibGUgSUNVIDMu
MgorICAgICAqLworICAgIFVDVVJSX0FMTCA9IElOVDMyX01BWCwKKyAgICAvKioKKyAgICAgKiBT
ZWxlY3Qgb25seSBJU08tNDIxNyBjb21tb25seSB1c2VkIGN1cnJlbmN5IGNvZGVzLgorICAgICAq
IFRoZXNlIGN1cnJlbmNpZXMgY2FuIGJlIGZvdW5kIGluIGNvbW1vbiB1c2UsIGFuZCB0aGV5IHVz
dWFsbHkgaGF2ZQorICAgICAqIGJhbmsgbm90ZXMgb3IgY29pbnMgYXNzb2NpYXRlZCB3aXRoIHRo
ZSBjdXJyZW5jeSBjb2RlLgorICAgICAqIFRoaXMgZG9lcyBub3QgaW5jbHVkZSBmdW5kIGNvZGVz
LCBwcmVjaW91cyBtZXRhbHMgYW5kIG90aGVyCisgICAgICogdmFyaW91cyBJU08tNDIxNyBjb2Rl
cyBsaW1pdGVkIHRvIHNwZWNpYWwgZmluYW5jaWFsIHByb2R1Y3RzLgorICAgICAqIEBzdGFibGUg
SUNVIDMuMgorICAgICAqLworICAgIFVDVVJSX0NPTU1PTiA9IDEsCisgICAgLyoqCisgICAgICog
U2VsZWN0IElTTy00MjE3IHVuY29tbW9uIGN1cnJlbmN5IGNvZGVzLgorICAgICAqIFRoZXNlIGNv
ZGVzIHJlc3ByZXNlbnQgZnVuZCBjb2RlcywgcHJlY2lvdXMgbWV0YWxzIGFuZCBvdGhlcgorICAg
ICAqIHZhcmlvdXMgSVNPLTQyMTcgY29kZXMgbGltaXRlZCB0byBzcGVjaWFsIGZpbmFuY2lhbCBw
cm9kdWN0cy4KKyAgICAgKiBBIGZ1bmQgY29kZSBpcyBhIG1vbmV0YXJ5IHJlc291cmNlIGFzc29j
aWF0ZWQgd2l0aCBhIGN1cnJlbmN5LgorICAgICAqIEBzdGFibGUgSUNVIDMuMgorICAgICAqLwor
ICAgIFVDVVJSX1VOQ09NTU9OID0gMiwKKyAgICAvKioKKyAgICAgKiBTZWxlY3Qgb25seSBkZXBy
ZWNhdGVkIElTTy00MjE3IGNvZGVzLgorICAgICAqIFRoZXNlIGNvZGVzIGFyZSBubyBsb25nZXIg
aW4gZ2VuZXJhbCBwdWJsaWMgdXNlLgorICAgICAqIEBzdGFibGUgSUNVIDMuMgorICAgICAqLwor
ICAgIFVDVVJSX0RFUFJFQ0FURUQgPSA0LAorICAgIC8qKgorICAgICAqIFNlbGVjdCBvbmx5IG5v
bi1kZXByZWNhdGVkIElTTy00MjE3IGNvZGVzLgorICAgICAqIFRoZXNlIGNvZGVzIGFyZSBpbiBn
ZW5lcmFsIHB1YmxpYyB1c2UuCisgICAgICogQHN0YWJsZSBJQ1UgMy4yCisgICAgICovCisgICAg
VUNVUlJfTk9OX0RFUFJFQ0FURUQgPSA4Cit9IFVDdXJyQ3VycmVuY3lUeXBlOworCisvKioKKyAq
IFByb3ZpZGVzIGEgVUVudW1lcmF0aW9uIG9iamVjdCBmb3IgbGlzdGluZyBJU08tNDIxNyBjb2Rl
cy4KKyAqIEBwYXJhbSBjdXJyVHlwZSBZb3UgY2FuIHVzZSBvbmUgb2Ygc2V2ZXJhbCBVQ3VyckN1
cnJlbmN5VHlwZSB2YWx1ZXMgZm9yIHRoaXMKKyAqICAgICAgdmFyaWFibGUuIFlvdSBjYW4gYWxz
byB8IChvcikgdGhlbSB0b2dldGhlciB0byBnZXQgYSBzcGVjaWZpYyBsaXN0IG9mCisgKiAgICAg
IGN1cnJlbmNpZXMuIE1vc3QgcGVvcGxlIHdpbGwgd2FudCB0byB1c2UgdGhlIChVQ1VSUl9DVVJS
RU5DWXxVQ1VSUl9OT05fREVQUkVDQVRFRCkgdmFsdWUgdG8KKyAqICAgICAgZ2V0IGEgbGlzdCBv
ZiBjdXJyZW50IGN1cnJlbmNpZXMuCisgKiBAcGFyYW0gcEVycm9yQ29kZSBFcnJvciBjb2RlCisg
KiBAc3RhYmxlIElDVSAzLjIKKyAqLworVV9TVEFCTEUgVUVudW1lcmF0aW9uICogVV9FWFBPUlQy
Cit1Y3Vycl9vcGVuSVNPQ3VycmVuY2llcyh1aW50MzJfdCBjdXJyVHlwZSwgVUVycm9yQ29kZSAq
cEVycm9yQ29kZSk7CisKKy8qKgorICAqIFF1ZXJpZXMgaWYgdGhlIGdpdmVuIElTTyA0MjE3IDMt
bGV0dGVyIGNvZGUgaXMgYXZhaWxhYmxlIG9uIHRoZSBzcGVjaWZpZWQgZGF0ZSByYW5nZS4gCisg
ICogCisgICogTm90ZTogRm9yIGNoZWNraW5nIGF2YWlsYWJpbGl0eSBvZiBhIGN1cnJlbmN5IG9u
IGEgc3BlY2lmaWMgZGF0ZSwgc3BlY2lmeSB0aGUgZGF0ZSBvbiBib3RoICdmcm9tJyBhbmQgJ3Rv
JyAKKyAgKiAKKyAgKiBXaGVuICdmcm9tJyBpcyBVX0RBVEVfTUlOIGFuZCAndG8nIGlzIFVfREFU
RV9NQVgsIHRoaXMgbWV0aG9kIGNoZWNrcyBpZiB0aGUgc3BlY2lmaWVkIGN1cnJlbmN5IGlzIGF2
YWlsYWJsZSBhbnkgdGltZS4gCisgICogSWYgJ2Zyb20nIGFuZCAndG8nIGFyZSBzYW1lIFVEYXRl
IHZhbHVlLCB0aGlzIG1ldGhvZCBjaGVja3MgaWYgdGhlIHNwZWNpZmllZCBjdXJyZW5jeSBpcyBh
dmFpbGFibGUgb24gdGhhdCBkYXRlLgorICAqIAorICAqIEBwYXJhbSBpc29Db2RlIAorICAqICAg
ICAgICAgICAgVGhlIElTTyA0MjE3IDMtbGV0dGVyIGNvZGUuIAorICAqIAorICAqIEBwYXJhbSBm
cm9tIAorICAqICAgICAgICAgICAgVGhlIGxvd2VyIGJvdW5kIG9mIHRoZSBkYXRlIHJhbmdlLCBp
bmNsdXNpdmUuIFdoZW4gJ2Zyb20nIGlzIFVfREFURV9NSU4sIGNoZWNrIHRoZSBhdmFpbGFiaWxp
dHkgCisgICogICAgICAgICAgICBvZiB0aGUgY3VycmVuY3kgYW55IGRhdGUgYmVmb3JlICd0bycg
CisgICogCisgICogQHBhcmFtIHRvIAorICAqICAgICAgICAgICAgVGhlIHVwcGVyIGJvdW5kIG9m
IHRoZSBkYXRlIHJhbmdlLCBpbmNsdXNpdmUuIFdoZW4gJ3RvJyBpcyBVX0RBVEVfTUFYLCBjaGVj
ayB0aGUgYXZhaWxhYmlsaXR5IG9mIAorICAqICAgICAgICAgICAgdGhlIGN1cnJlbmN5IGFueSBk
YXRlIGFmdGVyICdmcm9tJyAKKyAgKiAKKyAgKiBAcGFyYW0gZXJyb3JDb2RlIAorICAqICAgICAg
ICAgICAgSUNVIGVycm9yIGNvZGUgCisgICAqIAorICAqIEByZXR1cm4gVFJVRSBpZiB0aGUgZ2l2
ZW4gSVNPIDQyMTcgMy1sZXR0ZXIgY29kZSBpcyBzdXBwb3J0ZWQgb24gdGhlIHNwZWNpZmllZCBk
YXRlIHJhbmdlLiAKKyAgKiAKKyAgKiBAc3RhYmxlIElDVSA0LjggCisgICovIAorVV9TVEFCTEUg
VUJvb2wgVV9FWFBPUlQyCit1Y3Vycl9pc0F2YWlsYWJsZShjb25zdCBVQ2hhciogaXNvQ29kZSwg
CisgICAgICAgICAgICAgVURhdGUgZnJvbSwgCisgICAgICAgICAgICAgVURhdGUgdG8sIAorICAg
ICAgICAgICAgIFVFcnJvckNvZGUqIGVycm9yQ29kZSk7CisKKy8qKiAKKyAqIEZpbmRzIHRoZSBu
dW1iZXIgb2YgdmFsaWQgY3VycmVuY3kgY29kZXMgZm9yIHRoZQorICogZ2l2ZW4gbG9jYWxlIGFu
ZCBkYXRlLgorICogQHBhcmFtIGxvY2FsZSB0aGUgbG9jYWxlIGZvciB3aGljaCB0byByZXRyaWV2
ZSB0aGUKKyAqICAgICAgICAgICAgICAgY3VycmVuY3kgY291bnQuCisgKiBAcGFyYW0gZGF0ZSAg
IHRoZSBkYXRlIGZvciB3aGljaCB0byByZXRyaWV2ZSB0aGUKKyAqICAgICAgICAgICAgICAgY3Vy
cmVuY3kgY291bnQgZm9yIHRoZSBnaXZlbiBsb2NhbGUuCisgKiBAcGFyYW0gZWMgICAgIGVycm9y
IGNvZGUKKyAqIEByZXR1cm4gICAgICAgdGhlIG51bWJlciBvZiBjdXJyZW5jeSBjb2RlcyBmb3Ig
dGhlCisgKiAgICAgICAgICAgICAgIGdpdmVuIGxvY2FsZSBhbmQgZGF0ZS4gIElmIDAsIGN1cnJl
bmN5CisgKiAgICAgICAgICAgICAgIGNvZGVzIGNvdWxkbid0IGJlIGZvdW5kIGZvciB0aGUgaW5w
dXQKKyAqICAgICAgICAgICAgICAgdmFsdWVzIGFyZSBpbnZhbGlkLgorICogQHN0YWJsZSBJQ1Ug
NC4wCisgKi8KK1VfU1RBQkxFIGludDMyX3QgVV9FWFBPUlQyCit1Y3Vycl9jb3VudEN1cnJlbmNp
ZXMoY29uc3QgY2hhciogbG9jYWxlLCAKKyAgICAgICAgICAgICAgICAgVURhdGUgZGF0ZSwgCisg
ICAgICAgICAgICAgICAgIFVFcnJvckNvZGUqIGVjKTsgCisKKy8qKiAKKyAqIEZpbmRzIGEgY3Vy
cmVuY3kgY29kZSBmb3IgdGhlIGdpdmVuIGxvY2FsZSBhbmQgZGF0ZSAKKyAqIEBwYXJhbSBsb2Nh
bGUgdGhlIGxvY2FsZSBmb3Igd2hpY2ggdG8gcmV0cmlldmUgYSBjdXJyZW5jeSBjb2RlLiAgCisg
KiAgICAgICAgICAgICAgIEN1cnJlbmN5IGNhbiBiZSBzcGVjaWZpZWQgYnkgdGhlICJjdXJyZW5j
eSIga2V5d29yZCAKKyAqICAgICAgICAgICAgICAgaW4gd2hpY2ggY2FzZSBpdCBvdmVycmlkZXMg
dGhlIGRlZmF1bHQgY3VycmVuY3kgY29kZSAKKyAqIEBwYXJhbSBkYXRlICAgdGhlIGRhdGUgZm9y
IHdoaWNoIHRvIHJldHJpZXZlIGEgY3VycmVuY3kgY29kZSBmb3IgCisgKiAgICAgICAgICAgICAg
IHRoZSBnaXZlbiBsb2NhbGUuIAorICogQHBhcmFtIGluZGV4ICB0aGUgaW5kZXggd2l0aGluIHRo
ZSBhdmFpbGFibGUgbGlzdCBvZiBjdXJyZW5jeSBjb2RlcworICogICAgICAgICAgICAgICBmb3Ig
dGhlIGdpdmVuIGxvY2FsZSBvbiB0aGUgZ2l2ZW4gZGF0ZS4KKyAqIEBwYXJhbSBidWZmICAgZmls
bCBpbiBidWZmZXIuIENhbiBiZSBOVUxMIGZvciBwcmVmbGlnaHRpbmcuIAorICogQHBhcmFtIGJ1
ZmZDYXBhY2l0eSBjYXBhY2l0eSBvZiB0aGUgZmlsbCBpbiBidWZmZXIuIENhbiBiZSAwIGZvciAK
KyAqICAgICAgICAgICAgICAgcHJlZmxpZ2h0aW5nLiBJZiBpdCBpcyBub24temVybywgdGhlIGJ1
ZmYgcGFyYW1ldGVyIAorICogICAgICAgICAgICAgICBtdXN0IG5vdCBiZSBOVUxMLiAKKyAqIEBw
YXJhbSBlYyAgICAgZXJyb3IgY29kZSAKKyAqIEByZXR1cm4gICAgICAgbGVuZ3RoIG9mIHRoZSBj
dXJyZW5jeSBzdHJpbmcuIEl0IHNob3VsZCBhbHdheXMgYmUgMy4gCisgKiAgICAgICAgICAgICAg
IElmIDAsIGN1cnJlbmN5IGNvdWxkbid0IGJlIGZvdW5kIG9yIHRoZSBpbnB1dCB2YWx1ZXMgYXJl
ICAKKyAqICAgICAgICAgICAgICAgaW52YWxpZC4gIAorICogQHN0YWJsZSBJQ1UgNC4wIAorICov
IAorVV9TVEFCTEUgaW50MzJfdCBVX0VYUE9SVDIgCit1Y3Vycl9mb3JMb2NhbGVBbmREYXRlKGNv
bnN0IGNoYXIqIGxvY2FsZSwgCisgICAgICAgICAgICAgICAgVURhdGUgZGF0ZSwgCisgICAgICAg
ICAgICAgICAgaW50MzJfdCBpbmRleCwKKyAgICAgICAgICAgICAgICBVQ2hhciogYnVmZiwgCisg
ICAgICAgICAgICAgICAgaW50MzJfdCBidWZmQ2FwYWNpdHksIAorICAgICAgICAgICAgICAgIFVF
cnJvckNvZGUqIGVjKTsgCisKKy8qKgorICogR2l2ZW4gYSBrZXkgYW5kIGEgbG9jYWxlLCByZXR1
cm5zIGFuIGFycmF5IG9mIHN0cmluZyB2YWx1ZXMgaW4gYSBwcmVmZXJyZWQKKyAqIG9yZGVyIHRo
YXQgd291bGQgbWFrZSBhIGRpZmZlcmVuY2UuIFRoZXNlIGFyZSBhbGwgYW5kIG9ubHkgdGhvc2Ug
dmFsdWVzIHdoZXJlCisgKiB0aGUgb3BlbiAoY3JlYXRpb24pIG9mIHRoZSBzZXJ2aWNlIHdpdGgg
dGhlIGxvY2FsZSBmb3JtZWQgZnJvbSB0aGUgaW5wdXQgbG9jYWxlCisgKiBwbHVzIGlucHV0IGtl
eXdvcmQgYW5kIHRoYXQgdmFsdWUgaGFzIGRpZmZlcmVudCBiZWhhdmlvciB0aGFuIGNyZWF0aW9u
IHdpdGggdGhlCisgKiBpbnB1dCBsb2NhbGUgYWxvbmUuCisgKiBAcGFyYW0ga2V5ICAgICAgICAg
ICBvbmUgb2YgdGhlIGtleXMgc3VwcG9ydGVkIGJ5IHRoaXMgc2VydmljZS4gIEZvciBub3csIG9u
bHkKKyAqICAgICAgICAgICAgICAgICAgICAgICJjdXJyZW5jeSIgaXMgc3VwcG9ydGVkLgorICog
QHBhcmFtIGxvY2FsZSAgICAgICAgdGhlIGxvY2FsZQorICogQHBhcmFtIGNvbW1vbmx5VXNlZCAg
aWYgc2V0IHRvIHRydWUgaXQgd2lsbCByZXR1cm4gb25seSBjb21tb25seSB1c2VkIHZhbHVlcwor
ICogICAgICAgICAgICAgICAgICAgICAgd2l0aCB0aGUgZ2l2ZW4gbG9jYWxlIGluIHByZWZlcnJl
ZCBvcmRlci4gIE90aGVyd2lzZSwKKyAqICAgICAgICAgICAgICAgICAgICAgIGl0IHdpbGwgcmV0
dXJuIGFsbCB0aGUgYXZhaWxhYmxlIHZhbHVlcyBmb3IgdGhlIGxvY2FsZS4KKyAqIEBwYXJhbSBz
dGF0dXMgZXJyb3Igc3RhdHVzCisgKiBAcmV0dXJuIGEgc3RyaW5nIGVudW1lcmF0aW9uIG92ZXIg
a2V5d29yZCB2YWx1ZXMgZm9yIHRoZSBnaXZlbiBrZXkgYW5kIHRoZSBsb2NhbGUuCisgKiBAc3Rh
YmxlIElDVSA0LjIKKyAqLworVV9TVEFCTEUgVUVudW1lcmF0aW9uKiBVX0VYUE9SVDIKK3VjdXJy
X2dldEtleXdvcmRWYWx1ZXNGb3JMb2NhbGUoY29uc3QgY2hhcioga2V5LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBsb2NhbGUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFVCb29sIGNvbW1vbmx5VXNlZCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVUVycm9yQ29kZSogc3RhdHVzKTsKKworLyoqCisgKiBSZXR1cm5zIHRoZSBJ
U08gNDIxNyBudW1lcmljIGNvZGUgZm9yIHRoZSBjdXJyZW5jeS4KKyAqIDxwPk5vdGU6IElmIHRo
ZSBJU08gNDIxNyBudW1lcmljIGNvZGUgaXMgbm90IGFzc2lnbmVkIGZvciB0aGUgY3VycmVuY3kg
b3IKKyAqIHRoZSBjdXJyZW5jeSBpcyB1bmtub3duLCB0aGlzIGZ1bmN0aW9uIHJldHVybnMgMC4K
KyAqCisgKiBAcGFyYW0gY3VycmVuY3kgbnVsbC10ZXJtaW5hdGVkIDMtbGV0dGVyIElTTyA0MjE3
IGNvZGUKKyAqIEByZXR1cm4gVGhlIElTTyA0MjE3IG51bWVyaWMgY29kZSBvZiB0aGUgY3VycmVu
Y3kKKyAqIEBzdGFibGUgSUNVIDQ5CisgKi8KK1VfU1RBQkxFIGludDMyX3QgVV9FWFBPUlQyCit1
Y3Vycl9nZXROdW1lcmljQ29kZShjb25zdCBVQ2hhciogY3VycmVuY3kpOworCisjZW5kaWYgLyog
I2lmICFVQ09ORklHX05PX0ZPUk1BVFRJTkcgKi8KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9zcGkvY29jb2EvUGFzc0tpdFNQSS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vc3BpL2NvY29hL1Bhc3NLaXRTUEkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NTQ2NTQ1MmM5
MzcxNjdmOGVmNDRhOGM1ZTVmMTQzODViYzI4Y2VjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vc3BpL2NvY29hL1Bhc3NLaXRTUEkuaApAQCAtMCwwICsxLDIxMyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NE
SykKKworI2ltcG9ydCA8UGFzc0tpdC9QS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xs
ZXIuaD4KKyNpbXBvcnQgPFBhc3NLaXQvUEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9s
bGVyX1ByaXZhdGUuaD4KKyNpbXBvcnQgPFBhc3NLaXQvUGFzc0tpdC5oPgorCisjZWxzZQorCisj
aWYgUExBVEZPUk0oTUFDKQorCisjaW1wb3J0IDxDb250YWN0cy9Db250YWN0cy5oPgorI2ltcG9y
dCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CisKK05TX0FTU1VNRV9OT05OVUxMX0JFR0lOCisK
K3R5cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRlZ2VyLCBQS0FkZHJlc3NGaWVsZCkgeworICAgIFBL
QWRkcmVzc0ZpZWxkTm9uZSA9IDBVTCwKKyAgICBQS0FkZHJlc3NGaWVsZFBvc3RhbEFkZHJlc3Mg
PSAxVUwgPDwgMCwKKyAgICBQS0FkZHJlc3NGaWVsZFBob25lID0gMVVMIDw8IDEsCisgICAgUEtB
ZGRyZXNzRmllbGRFbWFpbCA9IDFVTCA8PCAyLAorICAgIFBLQWRkcmVzc0ZpZWxkTmFtZSA9IDFV
TCA8PCAzLAorICAgIFBLQWRkcmVzc0ZpZWxkQWxsID0gKFBLQWRkcmVzc0ZpZWxkUG9zdGFsQWRk
cmVzc3xQS0FkZHJlc3NGaWVsZFBob25lfFBLQWRkcmVzc0ZpZWxkRW1haWx8UEtBZGRyZXNzRmll
bGROYW1lKQorfTsKKwordHlwZWRlZiBOU19PUFRJT05TKE5TVUludGVnZXIsIFBLTWVyY2hhbnRD
YXBhYmlsaXR5KSB7CisgICAgUEtNZXJjaGFudENhcGFiaWxpdHkzRFMgPSAxVUwgPDwgMCwKKyAg
ICBQS01lcmNoYW50Q2FwYWJpbGl0eUVNViA9IDFVTCA8PCAxLAorICAgIFBLTWVyY2hhbnRDYXBh
YmlsaXR5Q3JlZGl0ID0gMVVMIDw8IDIsCisgICAgUEtNZXJjaGFudENhcGFiaWxpdHlEZWJpdCA9
IDFVTCA8PCAzCit9OworCit0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBQS1BheW1lbnRBdXRo
b3JpemF0aW9uU3RhdHVzKSB7CisgICAgUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1c1N1Y2Nl
c3MsCisgICAgUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1c0ZhaWx1cmUsCisgICAgUEtQYXlt
ZW50QXV0aG9yaXphdGlvblN0YXR1c0ludmFsaWRCaWxsaW5nUG9zdGFsQWRkcmVzcywKKyAgICBQ
S1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzSW52YWxpZFNoaXBwaW5nUG9zdGFsQWRkcmVzcywK
KyAgICBQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzSW52YWxpZFNoaXBwaW5nQ29udGFjdCwK
KyAgICBQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzUElOUmVxdWlyZWQsCisgICAgUEtQYXlt
ZW50QXV0aG9yaXphdGlvblN0YXR1c1BJTkluY29ycmVjdCwKKyAgICBQS1BheW1lbnRBdXRob3Jp
emF0aW9uU3RhdHVzUElOTG9ja291dCwKK307CisKK3R5cGVkZWYgTlNfRU5VTShOU1VJbnRlZ2Vy
LCBQS1BheW1lbnRNZXRob2RUeXBlKSB7CisgICAgUEtQYXltZW50TWV0aG9kVHlwZVVua25vd24g
PSAwLAorICAgIFBLUGF5bWVudE1ldGhvZFR5cGVEZWJpdCwKKyAgICBQS1BheW1lbnRNZXRob2RU
eXBlQ3JlZGl0LAorICAgIFBLUGF5bWVudE1ldGhvZFR5cGVQcmVwYWlkLAorICAgIFBLUGF5bWVu
dE1ldGhvZFR5cGVTdG9yZQorfTsKKwordHlwZWRlZiBOU19FTlVNKE5TVUludGVnZXIsIFBLUGF5
bWVudFBhc3NBY3RpdmF0aW9uU3RhdGUpIHsKKyAgICBQS1BheW1lbnRQYXNzQWN0aXZhdGlvblN0
YXRlQWN0aXZhdGVkLAorICAgIFBLUGF5bWVudFBhc3NBY3RpdmF0aW9uU3RhdGVSZXF1aXJlc0Fj
dGl2YXRpb24sCisgICAgUEtQYXltZW50UGFzc0FjdGl2YXRpb25TdGF0ZUFjdGl2YXRpbmcsCisg
ICAgUEtQYXltZW50UGFzc0FjdGl2YXRpb25TdGF0ZVN1c3BlbmRlZCwKKyAgICBQS1BheW1lbnRQ
YXNzQWN0aXZhdGlvblN0YXRlRGVhY3RpdmF0ZWQKK307CisKK3R5cGVkZWYgTlNfRU5VTShOU1VJ
bnRlZ2VyLCBQS1BheW1lbnRTdW1tYXJ5SXRlbVR5cGUpIHsKKyAgICBQS1BheW1lbnRTdW1tYXJ5
SXRlbVR5cGVGaW5hbCwKKyAgICBQS1BheW1lbnRTdW1tYXJ5SXRlbVR5cGVQZW5kaW5nCit9Owor
Cit0eXBlZGVmIE5TX0VOVU0oTlNVSW50ZWdlciwgUEtTaGlwcGluZ1R5cGUpIHsKKyAgICBQS1No
aXBwaW5nVHlwZVNoaXBwaW5nLAorICAgIFBLU2hpcHBpbmdUeXBlRGVsaXZlcnksCisgICAgUEtT
aGlwcGluZ1R5cGVTdG9yZVBpY2t1cCwKKyAgICBQS1NoaXBwaW5nVHlwZVNlcnZpY2VQaWNrdXAK
K307CisKK3R5cGVkZWYgTlNTdHJpbmcgKiBQS1BheW1lbnROZXR3b3JrIE5TX0VYVEVOU0lCTEVf
U1RSSU5HX0VOVU07CisKK0Bwcm90b2NvbCBQS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRy
b2xsZXJEZWxlZ2F0ZTsKKworQGludGVyZmFjZSBQS09iamVjdCA6IE5TT2JqZWN0CitAZW5kCisK
K0BpbnRlcmZhY2UgUEtQYXNzIDogUEtPYmplY3QKK0BlbmQKKworQGludGVyZmFjZSBQS1BheW1l
bnRQYXNzIDogUEtQYXNzCitAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSwgcmVhZG9ubHkpIE5T
U3RyaW5nICpwcmltYXJ5QWNjb3VudElkZW50aWZpZXI7CitAcHJvcGVydHkgKG5vbmF0b21pYywg
Y29weSwgcmVhZG9ubHkpIE5TU3RyaW5nICpwcmltYXJ5QWNjb3VudE51bWJlclN1ZmZpeDsKK0Bw
cm9wZXJ0eSAod2VhaywgcmVhZG9ubHkpIE5TU3RyaW5nICpkZXZpY2VBY2NvdW50SWRlbnRpZmll
cjsKK0Bwcm9wZXJ0eSAod2VhaywgcmVhZG9ubHkpIE5TU3RyaW5nICpkZXZpY2VBY2NvdW50TnVt
YmVyU3VmZml4OworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBQS1BheW1lbnRQYXNz
QWN0aXZhdGlvblN0YXRlIGFjdGl2YXRpb25TdGF0ZTsKK0BlbmQKKworQGludGVyZmFjZSBQS1Bh
eW1lbnRNZXRob2QgOiBOU09iamVjdAorQHByb3BlcnR5IChub25hdG9taWMsIGNvcHksIHJlYWRv
bmx5LCBudWxsYWJsZSkgTlNTdHJpbmcgKmRpc3BsYXlOYW1lOworQHByb3BlcnR5IChub25hdG9t
aWMsIGNvcHksIHJlYWRvbmx5LCBudWxsYWJsZSkgUEtQYXltZW50TmV0d29yayBuZXR3b3JrOwor
QHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBQS1BheW1lbnRNZXRob2RUeXBlIHR5cGU7
CitAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSwgcmVhZG9ubHksIG51bGxhYmxlKSBQS1BheW1l
bnRQYXNzICpwYXltZW50UGFzczsKK0BlbmQKKworQGludGVyZmFjZSBQS1BheW1lbnRUb2tlbiA6
IE5TT2JqZWN0CitAcHJvcGVydHkgKG5vbmF0b21pYywgc3Ryb25nLCByZWFkb25seSkgUEtQYXlt
ZW50TWV0aG9kICpwYXltZW50TWV0aG9kOworQHByb3BlcnR5IChub25hdG9taWMsIGNvcHksIHJl
YWRvbmx5KSBOU1N0cmluZyAqdHJhbnNhY3Rpb25JZGVudGlmaWVyOworQHByb3BlcnR5IChub25h
dG9taWMsIGNvcHksIHJlYWRvbmx5KSBOU0RhdGEgKnBheW1lbnREYXRhOworQGVuZAorCitAaW50
ZXJmYWNlIFBLQ29udGFjdCA6IE5TT2JqZWN0CitAcHJvcGVydHkgKG5vbmF0b21pYywgc3Ryb25n
LCBudWxsYWJsZSkgTlNQZXJzb25OYW1lQ29tcG9uZW50cyAqbmFtZTsKK0Bwcm9wZXJ0eSAobm9u
YXRvbWljLCBzdHJvbmcsIG51bGxhYmxlKSBDTlBvc3RhbEFkZHJlc3MgKnBvc3RhbEFkZHJlc3M7
CitAcHJvcGVydHkgKG5vbmF0b21pYywgc3Ryb25nLCBudWxsYWJsZSkgTlNTdHJpbmcgKmVtYWls
QWRkcmVzczsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBzdHJvbmcsIG51bGxhYmxlKSBDTlBob25l
TnVtYmVyICpwaG9uZU51bWJlcjsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZXRhaW4sIG51bGxh
YmxlKSBOU1N0cmluZyAqc3VwcGxlbWVudGFyeVN1YkxvY2FsaXR5OworQGVuZAorCitAaW50ZXJm
YWNlIFBLUGF5bWVudCA6IE5TT2JqZWN0CitAcHJvcGVydHkgKG5vbmF0b21pYywgc3Ryb25nLCBy
ZWFkb25seSwgbm9ubnVsbCkgUEtQYXltZW50VG9rZW4gKnRva2VuOworQHByb3BlcnR5IChub25h
dG9taWMsIHN0cm9uZywgcmVhZG9ubHksIG51bGxhYmxlKSBQS0NvbnRhY3QgKmJpbGxpbmdDb250
YWN0OworQHByb3BlcnR5IChub25hdG9taWMsIHN0cm9uZywgcmVhZG9ubHksIG51bGxhYmxlKSBQ
S0NvbnRhY3QgKnNoaXBwaW5nQ29udGFjdDsKK0BlbmQKKworQGludGVyZmFjZSBQS1BheW1lbnRT
dW1tYXJ5SXRlbSA6IE5TT2JqZWN0CisrIChpbnN0YW5jZXR5cGUpc3VtbWFyeUl0ZW1XaXRoTGFi
ZWw6KE5TU3RyaW5nICopbGFiZWwgYW1vdW50OihOU0RlY2ltYWxOdW1iZXIgKilhbW91bnQ7Cisr
IChpbnN0YW5jZXR5cGUpc3VtbWFyeUl0ZW1XaXRoTGFiZWw6KE5TU3RyaW5nICopbGFiZWwgYW1v
dW50OihOU0RlY2ltYWxOdW1iZXIgKilhbW91bnQgdHlwZTooUEtQYXltZW50U3VtbWFyeUl0ZW1U
eXBlKXR5cGU7CitAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgTlNTdHJpbmcgKmxhYmVsOwor
QHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIE5TRGVjaW1hbE51bWJlciAqYW1vdW50OworQGVu
ZAorCitAaW50ZXJmYWNlIFBLU2hpcHBpbmdNZXRob2QgOiBQS1BheW1lbnRTdW1tYXJ5SXRlbQor
QHByb3BlcnR5IChub25hdG9taWMsIGNvcHksIG51bGxhYmxlKSBOU1N0cmluZyAqaWRlbnRpZmll
cjsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5LCBudWxsYWJsZSkgTlNTdHJpbmcgKmRldGFp
bDsKK0BlbmQKKworQGludGVyZmFjZSBQS1BheW1lbnRSZXF1ZXN0IDogTlNPYmplY3QKK0Bwcm9w
ZXJ0eSAobm9uYXRvbWljLCBjb3B5KSBOU1N0cmluZyAqY291bnRyeUNvZGU7CitAcHJvcGVydHkg
KG5vbmF0b21pYywgY29weSkgTlNBcnJheTxQS1BheW1lbnROZXR3b3JrPiAqc3VwcG9ydGVkTmV0
d29ya3M7CitAcHJvcGVydHkgKG5vbmF0b21pYywgYXNzaWduKSBQS01lcmNoYW50Q2FwYWJpbGl0
eSBtZXJjaGFudENhcGFiaWxpdGllczsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSBOU0Fy
cmF5PFBLUGF5bWVudFN1bW1hcnlJdGVtICo+ICpwYXltZW50U3VtbWFyeUl0ZW1zOworQHByb3Bl
cnR5IChub25hdG9taWMsIGNvcHkpIE5TU3RyaW5nICpjdXJyZW5jeUNvZGU7CitAcHJvcGVydHkg
KG5vbmF0b21pYywgYXNzaWduKSBQS0FkZHJlc3NGaWVsZCByZXF1aXJlZEJpbGxpbmdBZGRyZXNz
RmllbGRzOworQHByb3BlcnR5IChub25hdG9taWMsIHN0cm9uZywgbnVsbGFibGUpIFBLQ29udGFj
dCAqYmlsbGluZ0NvbnRhY3Q7CitAcHJvcGVydHkgKG5vbmF0b21pYywgYXNzaWduKSBQS0FkZHJl
c3NGaWVsZCByZXF1aXJlZFNoaXBwaW5nQWRkcmVzc0ZpZWxkczsKK0Bwcm9wZXJ0eSAobm9uYXRv
bWljLCBzdHJvbmcsIG51bGxhYmxlKSBQS0NvbnRhY3QgKnNoaXBwaW5nQ29udGFjdDsKK0Bwcm9w
ZXJ0eSAobm9uYXRvbWljLCBjb3B5LCBudWxsYWJsZSkgTlNBcnJheTxQS1NoaXBwaW5nTWV0aG9k
ICo+ICpzaGlwcGluZ01ldGhvZHM7CitAcHJvcGVydHkgKG5vbmF0b21pYywgYXNzaWduKSBQS1No
aXBwaW5nVHlwZSBzaGlwcGluZ1R5cGU7CitAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSwgbnVs
bGFibGUpIE5TRGF0YSAqYXBwbGljYXRpb25EYXRhOworQGVuZAorCitAaW50ZXJmYWNlIFBLUGF5
bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlciA6IE5TVmlld0NvbnRyb2xsZXIKKysgKHZv
aWQpcmVxdWVzdFZpZXdDb250cm9sbGVyV2l0aFBheW1lbnRSZXF1ZXN0OihQS1BheW1lbnRSZXF1
ZXN0ICopcGF5bWVudFJlcXVlc3QgY29tcGxldGlvbjoodm9pZCheKShQS1BheW1lbnRBdXRob3Jp
emF0aW9uVmlld0NvbnRyb2xsZXIgKnZpZXdDb250cm9sbGVyLCBOU0Vycm9yICplcnJvcikpY29t
cGxldGlvbjsKKysgKEJPT0wpY2FuTWFrZVBheW1lbnRzOworQHByb3BlcnR5IChub25hdG9taWMs
IGFzc2lnbiwgbnVsbGFibGUpIGlkPFBLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxl
ckRlbGVnYXRlPiBkZWxlZ2F0ZTsKK0BlbmQKKworQHByb3RvY29sIFBLUGF5bWVudEF1dGhvcml6
YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlIDxOU09iamVjdD4KK0ByZXF1aXJlZAorLSAodm9p
ZClwYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyOihQS1BheW1lbnRBdXRob3JpemF0
aW9uVmlld0NvbnRyb2xsZXIgKiljb250cm9sbGVyIGRpZEF1dGhvcml6ZVBheW1lbnQ6KFBLUGF5
bWVudCAqKXBheW1lbnQgY29tcGxldGlvbjoodm9pZCAoXikoUEtQYXltZW50QXV0aG9yaXphdGlv
blN0YXR1cyBzdGF0dXMpKWNvbXBsZXRpb247CistICh2b2lkKXBheW1lbnRBdXRob3JpemF0aW9u
Vmlld0NvbnRyb2xsZXJEaWRGaW5pc2g6KFBLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJv
bGxlciAqKWNvbnRyb2xsZXI7CisKK0BvcHRpb25hbAorLSAodm9pZClwYXltZW50QXV0aG9yaXph
dGlvblZpZXdDb250cm9sbGVyOihQS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIg
Kiljb250cm9sbGVyIGRpZFNlbGVjdFNoaXBwaW5nTWV0aG9kOihQS1NoaXBwaW5nTWV0aG9kICop
c2hpcHBpbmdNZXRob2QgY29tcGxldGlvbjoodm9pZCAoXikoUEtQYXltZW50QXV0aG9yaXphdGlv
blN0YXR1cyBzdGF0dXMsIE5TQXJyYXk8UEtQYXltZW50U3VtbWFyeUl0ZW0gKj4gKnN1bW1hcnlJ
dGVtcykpY29tcGxldGlvbjsKKy0gKHZvaWQpcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJv
bGxlcjooUEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyICopY29udHJvbGxlciBk
aWRTZWxlY3RTaGlwcGluZ0NvbnRhY3Q6KFBLQ29udGFjdCAqKWNvbnRhY3QgY29tcGxldGlvbjoo
dm9pZCAoXikoUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1cyBzdGF0dXMsIE5TQXJyYXk8UEtT
aGlwcGluZ01ldGhvZCAqPiAqc2hpcHBpbmdNZXRob2RzLCBOU0FycmF5PFBLUGF5bWVudFN1bW1h
cnlJdGVtICo+ICpzdW1tYXJ5SXRlbXMpKWNvbXBsZXRpb247CistICh2b2lkKXBheW1lbnRBdXRo
b3JpemF0aW9uVmlld0NvbnRyb2xsZXI6KFBLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJv
bGxlciAqKWNvbnRyb2xsZXIgZGlkU2VsZWN0UGF5bWVudE1ldGhvZDooUEtQYXltZW50TWV0aG9k
ICopcGF5bWVudE1ldGhvZCBjb21wbGV0aW9uOih2b2lkICheKShOU0FycmF5PFBLUGF5bWVudFN1
bW1hcnlJdGVtICo+ICpzdW1tYXJ5SXRlbXMpKWNvbXBsZXRpb247CitAZW5kCisKK05TX0FTU1VN
RV9OT05OVUxMX0VORAorCisjZW5kaWYKKworTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KKworQHBy
b3RvY29sIFBLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlclByaXZhdGVEZWxlZ2F0
ZTsKKworQGludGVyZmFjZSBQS1BheW1lbnRNZXJjaGFudFNlc3Npb24gOiBOU09iamVjdCA8TlNT
ZWN1cmVDb2RpbmcsIE5TQ29weWluZz4KKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aERpY3Rpb25h
cnk6KE5TRGljdGlvbmFyeSAqKWRpY3Rpb25hcnk7CitAZW5kCisKK0BpbnRlcmZhY2UgUEtQYXlt
ZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyICgpCisrICh2b2lkKXBheW1lbnRTZXJ2aWNl
c01lcmNoYW50VVJMOih2b2lkKF4pKE5TVVJMICptZXJjaGFudFVSTCwgTlNFcnJvciAqZXJyb3Ip
KWNvbXBsZXRpb247CitAcHJvcGVydHkgKG5vbmF0b21pYywgYXNzaWduLCBudWxsYWJsZSkgaWQ8
UEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyUHJpdmF0ZURlbGVnYXRlPiBwcml2
YXRlRGVsZWdhdGU7CitAZW5kCisKK0Bwcm90b2NvbCBQS1BheW1lbnRBdXRob3JpemF0aW9uVmll
d0NvbnRyb2xsZXJQcml2YXRlRGVsZWdhdGUgPE5TT2JqZWN0PgorLSAodm9pZClwYXltZW50QXV0
aG9yaXphdGlvblZpZXdDb250cm9sbGVyOihQS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRy
b2xsZXIgKiljb250cm9sbGVyIHdpbGxGaW5pc2hXaXRoRXJyb3I6KE5TRXJyb3IgKillcnJvcjsK
KworQG9wdGlvbmFsCistICh2b2lkKXBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXI6
KFBLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlciAqKWNvbnRyb2xsZXIgZGlkUmVx
dWVzdE1lcmNoYW50U2Vzc2lvbjoodm9pZCheKShQS1BheW1lbnRNZXJjaGFudFNlc3Npb24gKiwg
TlNFcnJvciAqKSlzZXNzaW9uQmxvY2s7CitAZW5kCisKK05TX0FTU1VNRV9OT05OVUxMX0VORAor
CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL2ljdS91bmljb2RlL3VjdXJy
LmggYi9Tb3VyY2UvV2ViS2l0L21hYy9pY3UvdW5pY29kZS91Y3Vyci5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI3
Njk4MTMzZTQyMTA2MTNiNDNmOTg5MTYyNGUwYmEzNmU1ODI3ZDEKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L21hYy9pY3UvdW5pY29kZS91Y3Vyci5oCkBAIC0wLDAgKzEsMzYwIEBA
CisvKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKgorKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMywgSW50ZXJuYXRp
b25hbCBCdXNpbmVzcyBNYWNoaW5lcworKiBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLiAgQWxsIFJp
Z2h0cyBSZXNlcnZlZC4KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyovCisjaWZuZGVmIF9VQ1VSUl9IXworI2Rl
ZmluZSBfVUNVUlJfSF8KKworI2luY2x1ZGUgInVuaWNvZGUvdXR5cGVzLmgiCisjaW5jbHVkZSAi
dW5pY29kZS91ZW51bS5oIgorCisvKioKKyAqIFxmaWxlIAorICogXGJyaWVmIEMgQVBJOiBFbmNh
cHN1bGF0ZXMgaW5mb3JtYXRpb24gYWJvdXQgYSBjdXJyZW5jeS4KKyAqLworCisjaWYgIVVDT05G
SUdfTk9fRk9STUFUVElORworCisvKioKKyAqIFRoZSB1Y3VyciBBUEkgZW5jYXBzdWxhdGVzIGlu
Zm9ybWF0aW9uIGFib3V0IGEgY3VycmVuY3ksIGFzIGRlZmluZWQgYnkKKyAqIElTTyA0MjE3LiAg
QSBjdXJyZW5jeSBpcyByZXByZXNlbnRlZCBieSBhIDMtY2hhcmFjdGVyIHN0cmluZworICogY29u
dGFpbmluZyBpdHMgSVNPIDQyMTcgY29kZS4gIFRoaXMgQVBJIGNhbiByZXR1cm4gdmFyaW91cyBk
YXRhCisgKiBuZWNlc3NhcnkgdGhlIHByb3BlciBkaXNwbGF5IG9mIGEgY3VycmVuY3k6CisgKgor
ICogPHVsPjxsaT5BIGRpc3BsYXkgc3ltYm9sLCBmb3IgYSBzcGVjaWZpYyBsb2NhbGUKKyAqIDxs
aT5UaGUgbnVtYmVyIG9mIGZyYWN0aW9uIGRpZ2l0cyB0byBkaXNwbGF5CisgKiA8bGk+QSByb3Vu
ZGluZyBpbmNyZW1lbnQKKyAqIDwvdWw+CisgKgorICogVGhlIDx0dD5EZWNpbWFsRm9ybWF0PC90
dD4gY2xhc3MgdXNlcyB0aGVzZSBkYXRhIHRvIGRpc3BsYXkKKyAqIGN1cnJlbmNpZXMuCisgKiBA
YXV0aG9yIEFsYW4gTGl1CisgKiBAc2luY2UgSUNVIDIuMgorICovCisKKy8qKgorICogRmluZHMg
YSBjdXJyZW5jeSBjb2RlIGZvciB0aGUgZ2l2ZW4gbG9jYWxlLgorICogQHBhcmFtIGxvY2FsZSB0
aGUgbG9jYWxlIGZvciB3aGljaCB0byByZXRyaWV2ZSBhIGN1cnJlbmN5IGNvZGUuIAorICogICAg
ICAgICAgICAgICBDdXJyZW5jeSBjYW4gYmUgc3BlY2lmaWVkIGJ5IHRoZSAiY3VycmVuY3kiIGtl
eXdvcmQKKyAqICAgICAgICAgICAgICAgaW4gd2hpY2ggY2FzZSBpdCBvdmVycmlkZXMgdGhlIGRl
ZmF1bHQgY3VycmVuY3kgY29kZQorICogQHBhcmFtIGJ1ZmYgICBmaWxsIGluIGJ1ZmZlci4gQ2Fu
IGJlIE5VTEwgZm9yIHByZWZsaWdodGluZy4KKyAqIEBwYXJhbSBidWZmQ2FwYWNpdHkgY2FwYWNp
dHkgb2YgdGhlIGZpbGwgaW4gYnVmZmVyLiBDYW4gYmUgMCBmb3IKKyAqICAgICAgICAgICAgICAg
cHJlZmxpZ2h0aW5nLiBJZiBpdCBpcyBub24temVybywgdGhlIGJ1ZmYgcGFyYW1ldGVyCisgKiAg
ICAgICAgICAgICAgIG11c3Qgbm90IGJlIE5VTEwuCisgKiBAcGFyYW0gZWMgZXJyb3IgY29kZQor
ICogQHJldHVybiBsZW5ndGggb2YgdGhlIGN1cnJlbmN5IHN0cmluZy4gSXQgc2hvdWxkIGFsd2F5
cyBiZSAzLiBJZiAwLAorICogICAgICAgICAgICAgICAgY3VycmVuY3kgY291bGRuJ3QgYmUgZm91
bmQgb3IgdGhlIGlucHV0IHZhbHVlcyBhcmUgCisgKiAgICAgICAgICAgICAgICBpbnZhbGlkLiAK
KyAqIEBzdGFibGUgSUNVIDIuOAorICovCitVX1NUQUJMRSBpbnQzMl90IFVfRVhQT1JUMgordWN1
cnJfZm9yTG9jYWxlKGNvbnN0IGNoYXIqIGxvY2FsZSwKKyAgICAgICAgICAgICAgICBVQ2hhciog
YnVmZiwKKyAgICAgICAgICAgICAgICBpbnQzMl90IGJ1ZmZDYXBhY2l0eSwKKyAgICAgICAgICAg
ICAgICBVRXJyb3JDb2RlKiBlYyk7CisKKy8qKgorICogU2VsZWN0b3IgY29uc3RhbnRzIGZvciB1
Y3Vycl9nZXROYW1lKCkuCisgKgorICogQHNlZSB1Y3Vycl9nZXROYW1lCisgKiBAc3RhYmxlIElD
VSAyLjYKKyAqLwordHlwZWRlZiBlbnVtIFVDdXJyTmFtZVN0eWxlIHsKKyAgICAvKioKKyAgICAg
KiBTZWxlY3RvciBmb3IgdWN1cnJfZ2V0TmFtZSBpbmRpY2F0aW5nIGEgc3ltYm9saWMgbmFtZSBm
b3IgYQorICAgICAqIGN1cnJlbmN5LCBzdWNoIGFzICIkIiBmb3IgVVNELgorICAgICAqIEBzdGFi
bGUgSUNVIDIuNgorICAgICAqLworICAgIFVDVVJSX1NZTUJPTF9OQU1FLAorCisgICAgLyoqCisg
ICAgICogU2VsZWN0b3IgZm9yIHVjdXJyX2dldE5hbWUgaW5kaWNhdGluZyB0aGUgbG9uZyBuYW1l
IGZvciBhCisgICAgICogY3VycmVuY3ksIHN1Y2ggYXMgIlVTIERvbGxhciIgZm9yIFVTRC4KKyAg
ICAgKiBAc3RhYmxlIElDVSAyLjYKKyAgICAgKi8KKyAgICBVQ1VSUl9MT05HX05BTUUKK30gVUN1
cnJOYW1lU3R5bGU7CisKKyNpZiAhVUNPTkZJR19OT19TRVJWSUNFCisvKioKKyAqIEBzdGFibGUg
SUNVIDIuNgorICovCit0eXBlZGVmIGNvbnN0IHZvaWQqIFVDdXJyUmVnaXN0cnlLZXk7CisKKy8q
KgorICogUmVnaXN0ZXIgYW4gKGV4aXN0aW5nKSBJU08gNDIxNyBjdXJyZW5jeSBjb2RlIGZvciB0
aGUgZ2l2ZW4gbG9jYWxlLgorICogT25seSB0aGUgY291bnRyeSBjb2RlIGFuZCB0aGUgdHdvIHZh
cmlhbnRzIEVVUk8gYW5kIFBSRV9FVVJPIGFyZQorICogcmVjb2duaXplZC4KKyAqIEBwYXJhbSBp
c29Db2RlIHRoZSB0aHJlZS1sZXR0ZXIgSVNPIDQyMTcgY3VycmVuY3kgY29kZQorICogQHBhcmFt
IGxvY2FsZSAgdGhlIGxvY2FsZSBmb3Igd2hpY2ggdG8gcmVnaXN0ZXIgdGhpcyBjdXJyZW5jeSBj
b2RlCisgKiBAcGFyYW0gc3RhdHVzIHRoZSBpbi9vdXQgc3RhdHVzIGNvZGUKKyAqIEByZXR1cm4g
YSByZWdpc3RyeSBrZXkgdGhhdCBjYW4gYmUgdXNlZCB0byB1bnJlZ2lzdGVyIHRoaXMgY3VycmVu
Y3kgY29kZSwgb3IgTlVMTAorICogaWYgdGhlcmUgd2FzIGFuIGVycm9yLgorICogQHN0YWJsZSBJ
Q1UgMi42CisgKi8KK1VfU1RBQkxFIFVDdXJyUmVnaXN0cnlLZXkgVV9FWFBPUlQyCit1Y3Vycl9y
ZWdpc3Rlcihjb25zdCBVQ2hhciogaXNvQ29kZSwgCisgICAgICAgICAgICAgICAgICAgY29uc3Qg
Y2hhciogbG9jYWxlLCAgCisgICAgICAgICAgICAgICAgICAgVUVycm9yQ29kZSogc3RhdHVzKTsK
Ky8qKgorICogVW5yZWdpc3RlciB0aGUgcHJldmlvdXNseS1yZWdpc3RlcmVkIGN1cnJlbmN5IGRl
ZmluaXRpb25zIHVzaW5nIHRoZQorICogVVJlZ2lzdHJ5S2V5IHJldHVybmVkIGZyb20gdWN1cnJf
cmVnaXN0ZXIuICBLZXkgYmVjb21lcyBpbnZhbGlkIGFmdGVyCisgKiBhIHN1Y2Nlc3NmdWwgY2Fs
bCBhbmQgc2hvdWxkIG5vdCBiZSB1c2VkIGFnYWluLiAgQW55IGN1cnJlbmN5IAorICogdGhhdCBt
aWdodCBoYXZlIGJlZW4gaGlkZGVuIGJ5IHRoZSBvcmlnaW5hbCB1Y3Vycl9yZWdpc3RlciBjYWxs
IGlzIAorICogcmVzdG9yZWQuCisgKiBAcGFyYW0ga2V5IHRoZSByZWdpc3RyeSBrZXkgcmV0dXJu
ZWQgYnkgYSBwcmV2aW91cyBjYWxsIHRvIHVjdXJyX3JlZ2lzdGVyCisgKiBAcGFyYW0gc3RhdHVz
IHRoZSBpbi9vdXQgc3RhdHVzIGNvZGUsIG5vIHNwZWNpYWwgbWVhbmluZ3MgYXJlIGFzc2lnbmVk
CisgKiBAcmV0dXJuIFRSVUUgaWYgdGhlIGN1cnJlbmN5IGZvciB0aGlzIGtleSB3YXMgc3VjY2Vz
c2Z1bGx5IHVucmVnaXN0ZXJlZAorICogQHN0YWJsZSBJQ1UgMi42CisgKi8KK1VfU1RBQkxFIFVC
b29sIFVfRVhQT1JUMgordWN1cnJfdW5yZWdpc3RlcihVQ3VyclJlZ2lzdHJ5S2V5IGtleSwgVUVy
cm9yQ29kZSogc3RhdHVzKTsKKyNlbmRpZiAvKiBVQ09ORklHX05PX1NFUlZJQ0UgKi8KKworLyoq
CisgKiBSZXR1cm5zIHRoZSBkaXNwbGF5IG5hbWUgZm9yIHRoZSBnaXZlbiBjdXJyZW5jeSBpbiB0
aGUKKyAqIGdpdmVuIGxvY2FsZS4gIEZvciBleGFtcGxlLCB0aGUgZGlzcGxheSBuYW1lIGZvciB0
aGUgVVNECisgKiBjdXJyZW5jeSBvYmplY3QgaW4gdGhlIGVuX1VTIGxvY2FsZSBpcyAiJCIuCisg
KiBAcGFyYW0gY3VycmVuY3kgbnVsbC10ZXJtaW5hdGVkIDMtbGV0dGVyIElTTyA0MjE3IGNvZGUK
KyAqIEBwYXJhbSBsb2NhbGUgbG9jYWxlIGluIHdoaWNoIHRvIGRpc3BsYXkgY3VycmVuY3kKKyAq
IEBwYXJhbSBuYW1lU3R5bGUgc2VsZWN0b3IgZm9yIHdoaWNoIGtpbmQgb2YgbmFtZSB0byByZXR1
cm4KKyAqIEBwYXJhbSBpc0Nob2ljZUZvcm1hdCBmaWxsLWluIHNldCB0byBUUlVFIGlmIHRoZSBy
ZXR1cm5lZCB2YWx1ZQorICogaXMgYSBDaG9pY2VGb3JtYXQgcGF0dGVybjsgb3RoZXJ3aXNlIGl0
IGlzIGEgc3RhdGljIHN0cmluZworICogQHBhcmFtIGxlbiBmaWxsLWluIHBhcmFtZXRlciB0byBy
ZWNlaXZlIGxlbmd0aCBvZiByZXN1bHQKKyAqIEBwYXJhbSBlYyBlcnJvciBjb2RlCisgKiBAcmV0
dXJuIHBvaW50ZXIgdG8gZGlzcGxheSBzdHJpbmcgb2YgJ2xlbicgVUNoYXJzLiAgSWYgdGhlIHJl
c291cmNlCisgKiBkYXRhIGNvbnRhaW5zIG5vIGVudHJ5IGZvciAnY3VycmVuY3knLCB0aGVuICdj
dXJyZW5jeScgaXRzZWxmIGlzCisgKiByZXR1cm5lZC4gIElmICppc0Nob2ljZUZvcm1hdCBpcyBU
UlVFLCB0aGVuIHRoZSByZXN1bHQgaXMgYQorICogQ2hvaWNlRm9ybWF0IHBhdHRlcm4uICBPdGhl
cndpc2UgaXQgaXMgYSBzdGF0aWMgc3RyaW5nLgorICogQHN0YWJsZSBJQ1UgMi42CisgKi8KK1Vf
U1RBQkxFIGNvbnN0IFVDaGFyKiBVX0VYUE9SVDIKK3VjdXJyX2dldE5hbWUoY29uc3QgVUNoYXIq
IGN1cnJlbmN5LAorICAgICAgICAgICAgICBjb25zdCBjaGFyKiBsb2NhbGUsCisgICAgICAgICAg
ICAgIFVDdXJyTmFtZVN0eWxlIG5hbWVTdHlsZSwKKyAgICAgICAgICAgICAgVUJvb2wqIGlzQ2hv
aWNlRm9ybWF0LAorICAgICAgICAgICAgICBpbnQzMl90KiBsZW4sCisgICAgICAgICAgICAgIFVF
cnJvckNvZGUqIGVjKTsKKworLyoqCisgKiBSZXR1cm5zIHRoZSBwbHVyYWwgbmFtZSBmb3IgdGhl
IGdpdmVuIGN1cnJlbmN5IGluIHRoZQorICogZ2l2ZW4gbG9jYWxlLiAgRm9yIGV4YW1wbGUsIHRo
ZSBwbHVyYWwgbmFtZSBmb3IgdGhlIFVTRAorICogY3VycmVuY3kgb2JqZWN0IGluIHRoZSBlbl9V
UyBsb2NhbGUgaXMgIlVTIGRvbGxhciIgb3IgIlVTIGRvbGxhcnMiLgorICogQHBhcmFtIGN1cnJl
bmN5IG51bGwtdGVybWluYXRlZCAzLWxldHRlciBJU08gNDIxNyBjb2RlCisgKiBAcGFyYW0gbG9j
YWxlIGxvY2FsZSBpbiB3aGljaCB0byBkaXNwbGF5IGN1cnJlbmN5CisgKiBAcGFyYW0gaXNDaG9p
Y2VGb3JtYXQgZmlsbC1pbiBzZXQgdG8gVFJVRSBpZiB0aGUgcmV0dXJuZWQgdmFsdWUKKyAqIGlz
IGEgQ2hvaWNlRm9ybWF0IHBhdHRlcm47IG90aGVyd2lzZSBpdCBpcyBhIHN0YXRpYyBzdHJpbmcK
KyAqIEBwYXJhbSBwbHVyYWxDb3VudCBwbHVyYWwgY291bnQKKyAqIEBwYXJhbSBsZW4gZmlsbC1p
biBwYXJhbWV0ZXIgdG8gcmVjZWl2ZSBsZW5ndGggb2YgcmVzdWx0CisgKiBAcGFyYW0gZWMgZXJy
b3IgY29kZQorICogQHJldHVybiBwb2ludGVyIHRvIGRpc3BsYXkgc3RyaW5nIG9mICdsZW4nIFVD
aGFycy4gIElmIHRoZSByZXNvdXJjZQorICogZGF0YSBjb250YWlucyBubyBlbnRyeSBmb3IgJ2N1
cnJlbmN5JywgdGhlbiAnY3VycmVuY3knIGl0c2VsZiBpcworICogcmV0dXJuZWQuICAKKyAqIEBz
dGFibGUgSUNVIDQuMgorICovCitVX1NUQUJMRSBjb25zdCBVQ2hhciogVV9FWFBPUlQyCit1Y3Vy
cl9nZXRQbHVyYWxOYW1lKGNvbnN0IFVDaGFyKiBjdXJyZW5jeSwKKyAgICAgICAgICAgICAgICAg
ICAgY29uc3QgY2hhciogbG9jYWxlLAorICAgICAgICAgICAgICAgICAgICBVQm9vbCogaXNDaG9p
Y2VGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHBsdXJhbENvdW50LAor
ICAgICAgICAgICAgICAgICAgICBpbnQzMl90KiBsZW4sCisgICAgICAgICAgICAgICAgICAgIFVF
cnJvckNvZGUqIGVjKTsKKworLyoqCisgKiBSZXR1cm5zIHRoZSBudW1iZXIgb2YgdGhlIG51bWJl
ciBvZiBmcmFjdGlvbiBkaWdpdHMgdGhhdCBzaG91bGQKKyAqIGJlIGRpc3BsYXllZCBmb3IgdGhl
IGdpdmVuIGN1cnJlbmN5LgorICogQHBhcmFtIGN1cnJlbmN5IG51bGwtdGVybWluYXRlZCAzLWxl
dHRlciBJU08gNDIxNyBjb2RlCisgKiBAcGFyYW0gZWMgaW5wdXQtb3V0cHV0IGVycm9yIGNvZGUK
KyAqIEByZXR1cm4gYSBub24tbmVnYXRpdmUgbnVtYmVyIG9mIGZyYWN0aW9uIGRpZ2l0cyB0byBi
ZQorICogZGlzcGxheWVkLCBvciAwIGlmIHRoZXJlIGlzIGFuIGVycm9yCisgKiBAc3RhYmxlIElD
VSAzLjAKKyAqLworVV9TVEFCTEUgaW50MzJfdCBVX0VYUE9SVDIKK3VjdXJyX2dldERlZmF1bHRG
cmFjdGlvbkRpZ2l0cyhjb25zdCBVQ2hhciogY3VycmVuY3ksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVUVycm9yQ29kZSogZWMpOworCisvKioKKyAqIFJldHVybnMgdGhlIHJvdW5k
aW5nIGluY3JlbWVudCBmb3IgdGhlIGdpdmVuIGN1cnJlbmN5LCBvciAwLjAgaWYgbm8KKyAqIHJv
dW5kaW5nIGlzIGRvbmUgYnkgdGhlIGN1cnJlbmN5LgorICogQHBhcmFtIGN1cnJlbmN5IG51bGwt
dGVybWluYXRlZCAzLWxldHRlciBJU08gNDIxNyBjb2RlCisgKiBAcGFyYW0gZWMgaW5wdXQtb3V0
cHV0IGVycm9yIGNvZGUKKyAqIEByZXR1cm4gdGhlIG5vbi1uZWdhdGl2ZSByb3VuZGluZyBpbmNy
ZW1lbnQsIG9yIDAuMCBpZiBub25lLAorICogb3IgMC4wIGlmIHRoZXJlIGlzIGFuIGVycm9yCisg
KiBAc3RhYmxlIElDVSAzLjAKKyAqLworVV9TVEFCTEUgZG91YmxlIFVfRVhQT1JUMgordWN1cnJf
Z2V0Um91bmRpbmdJbmNyZW1lbnQoY29uc3QgVUNoYXIqIGN1cnJlbmN5LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVUVycm9yQ29kZSogZWMpOworCisvKioKKyAqIFNlbGVjdG9yIGNvbnN0
YW50cyBmb3IgdWN1cnJfb3BlbkN1cnJlbmNpZXMoKS4KKyAqCisgKiBAc2VlIHVjdXJyX29wZW5D
dXJyZW5jaWVzCisgKiBAc3RhYmxlIElDVSAzLjIKKyAqLwordHlwZWRlZiBlbnVtIFVDdXJyQ3Vy
cmVuY3lUeXBlIHsKKyAgICAvKioKKyAgICAgKiBTZWxlY3QgYWxsIElTTy00MjE3IGN1cnJlbmN5
IGNvZGVzLgorICAgICAqIEBzdGFibGUgSUNVIDMuMgorICAgICAqLworICAgIFVDVVJSX0FMTCA9
IElOVDMyX01BWCwKKyAgICAvKioKKyAgICAgKiBTZWxlY3Qgb25seSBJU08tNDIxNyBjb21tb25s
eSB1c2VkIGN1cnJlbmN5IGNvZGVzLgorICAgICAqIFRoZXNlIGN1cnJlbmNpZXMgY2FuIGJlIGZv
dW5kIGluIGNvbW1vbiB1c2UsIGFuZCB0aGV5IHVzdWFsbHkgaGF2ZQorICAgICAqIGJhbmsgbm90
ZXMgb3IgY29pbnMgYXNzb2NpYXRlZCB3aXRoIHRoZSBjdXJyZW5jeSBjb2RlLgorICAgICAqIFRo
aXMgZG9lcyBub3QgaW5jbHVkZSBmdW5kIGNvZGVzLCBwcmVjaW91cyBtZXRhbHMgYW5kIG90aGVy
CisgICAgICogdmFyaW91cyBJU08tNDIxNyBjb2RlcyBsaW1pdGVkIHRvIHNwZWNpYWwgZmluYW5j
aWFsIHByb2R1Y3RzLgorICAgICAqIEBzdGFibGUgSUNVIDMuMgorICAgICAqLworICAgIFVDVVJS
X0NPTU1PTiA9IDEsCisgICAgLyoqCisgICAgICogU2VsZWN0IElTTy00MjE3IHVuY29tbW9uIGN1
cnJlbmN5IGNvZGVzLgorICAgICAqIFRoZXNlIGNvZGVzIHJlc3ByZXNlbnQgZnVuZCBjb2Rlcywg
cHJlY2lvdXMgbWV0YWxzIGFuZCBvdGhlcgorICAgICAqIHZhcmlvdXMgSVNPLTQyMTcgY29kZXMg
bGltaXRlZCB0byBzcGVjaWFsIGZpbmFuY2lhbCBwcm9kdWN0cy4KKyAgICAgKiBBIGZ1bmQgY29k
ZSBpcyBhIG1vbmV0YXJ5IHJlc291cmNlIGFzc29jaWF0ZWQgd2l0aCBhIGN1cnJlbmN5LgorICAg
ICAqIEBzdGFibGUgSUNVIDMuMgorICAgICAqLworICAgIFVDVVJSX1VOQ09NTU9OID0gMiwKKyAg
ICAvKioKKyAgICAgKiBTZWxlY3Qgb25seSBkZXByZWNhdGVkIElTTy00MjE3IGNvZGVzLgorICAg
ICAqIFRoZXNlIGNvZGVzIGFyZSBubyBsb25nZXIgaW4gZ2VuZXJhbCBwdWJsaWMgdXNlLgorICAg
ICAqIEBzdGFibGUgSUNVIDMuMgorICAgICAqLworICAgIFVDVVJSX0RFUFJFQ0FURUQgPSA0LAor
ICAgIC8qKgorICAgICAqIFNlbGVjdCBvbmx5IG5vbi1kZXByZWNhdGVkIElTTy00MjE3IGNvZGVz
LgorICAgICAqIFRoZXNlIGNvZGVzIGFyZSBpbiBnZW5lcmFsIHB1YmxpYyB1c2UuCisgICAgICog
QHN0YWJsZSBJQ1UgMy4yCisgICAgICovCisgICAgVUNVUlJfTk9OX0RFUFJFQ0FURUQgPSA4Cit9
IFVDdXJyQ3VycmVuY3lUeXBlOworCisvKioKKyAqIFByb3ZpZGVzIGEgVUVudW1lcmF0aW9uIG9i
amVjdCBmb3IgbGlzdGluZyBJU08tNDIxNyBjb2Rlcy4KKyAqIEBwYXJhbSBjdXJyVHlwZSBZb3Ug
Y2FuIHVzZSBvbmUgb2Ygc2V2ZXJhbCBVQ3VyckN1cnJlbmN5VHlwZSB2YWx1ZXMgZm9yIHRoaXMK
KyAqICAgICAgdmFyaWFibGUuIFlvdSBjYW4gYWxzbyB8IChvcikgdGhlbSB0b2dldGhlciB0byBn
ZXQgYSBzcGVjaWZpYyBsaXN0IG9mCisgKiAgICAgIGN1cnJlbmNpZXMuIE1vc3QgcGVvcGxlIHdp
bGwgd2FudCB0byB1c2UgdGhlIChVQ1VSUl9DVVJSRU5DWXxVQ1VSUl9OT05fREVQUkVDQVRFRCkg
dmFsdWUgdG8KKyAqICAgICAgZ2V0IGEgbGlzdCBvZiBjdXJyZW50IGN1cnJlbmNpZXMuCisgKiBA
cGFyYW0gcEVycm9yQ29kZSBFcnJvciBjb2RlCisgKiBAc3RhYmxlIElDVSAzLjIKKyAqLworVV9T
VEFCTEUgVUVudW1lcmF0aW9uICogVV9FWFBPUlQyCit1Y3Vycl9vcGVuSVNPQ3VycmVuY2llcyh1
aW50MzJfdCBjdXJyVHlwZSwgVUVycm9yQ29kZSAqcEVycm9yQ29kZSk7CisKKy8qKgorICAqIFF1
ZXJpZXMgaWYgdGhlIGdpdmVuIElTTyA0MjE3IDMtbGV0dGVyIGNvZGUgaXMgYXZhaWxhYmxlIG9u
IHRoZSBzcGVjaWZpZWQgZGF0ZSByYW5nZS4gCisgICogCisgICogTm90ZTogRm9yIGNoZWNraW5n
IGF2YWlsYWJpbGl0eSBvZiBhIGN1cnJlbmN5IG9uIGEgc3BlY2lmaWMgZGF0ZSwgc3BlY2lmeSB0
aGUgZGF0ZSBvbiBib3RoICdmcm9tJyBhbmQgJ3RvJyAKKyAgKiAKKyAgKiBXaGVuICdmcm9tJyBp
cyBVX0RBVEVfTUlOIGFuZCAndG8nIGlzIFVfREFURV9NQVgsIHRoaXMgbWV0aG9kIGNoZWNrcyBp
ZiB0aGUgc3BlY2lmaWVkIGN1cnJlbmN5IGlzIGF2YWlsYWJsZSBhbnkgdGltZS4gCisgICogSWYg
J2Zyb20nIGFuZCAndG8nIGFyZSBzYW1lIFVEYXRlIHZhbHVlLCB0aGlzIG1ldGhvZCBjaGVja3Mg
aWYgdGhlIHNwZWNpZmllZCBjdXJyZW5jeSBpcyBhdmFpbGFibGUgb24gdGhhdCBkYXRlLgorICAq
IAorICAqIEBwYXJhbSBpc29Db2RlIAorICAqICAgICAgICAgICAgVGhlIElTTyA0MjE3IDMtbGV0
dGVyIGNvZGUuIAorICAqIAorICAqIEBwYXJhbSBmcm9tIAorICAqICAgICAgICAgICAgVGhlIGxv
d2VyIGJvdW5kIG9mIHRoZSBkYXRlIHJhbmdlLCBpbmNsdXNpdmUuIFdoZW4gJ2Zyb20nIGlzIFVf
REFURV9NSU4sIGNoZWNrIHRoZSBhdmFpbGFiaWxpdHkgCisgICogICAgICAgICAgICBvZiB0aGUg
Y3VycmVuY3kgYW55IGRhdGUgYmVmb3JlICd0bycgCisgICogCisgICogQHBhcmFtIHRvIAorICAq
ICAgICAgICAgICAgVGhlIHVwcGVyIGJvdW5kIG9mIHRoZSBkYXRlIHJhbmdlLCBpbmNsdXNpdmUu
IFdoZW4gJ3RvJyBpcyBVX0RBVEVfTUFYLCBjaGVjayB0aGUgYXZhaWxhYmlsaXR5IG9mIAorICAq
ICAgICAgICAgICAgdGhlIGN1cnJlbmN5IGFueSBkYXRlIGFmdGVyICdmcm9tJyAKKyAgKiAKKyAg
KiBAcGFyYW0gZXJyb3JDb2RlIAorICAqICAgICAgICAgICAgSUNVIGVycm9yIGNvZGUgCisgICAq
IAorICAqIEByZXR1cm4gVFJVRSBpZiB0aGUgZ2l2ZW4gSVNPIDQyMTcgMy1sZXR0ZXIgY29kZSBp
cyBzdXBwb3J0ZWQgb24gdGhlIHNwZWNpZmllZCBkYXRlIHJhbmdlLiAKKyAgKiAKKyAgKiBAc3Rh
YmxlIElDVSA0LjggCisgICovIAorVV9TVEFCTEUgVUJvb2wgVV9FWFBPUlQyCit1Y3Vycl9pc0F2
YWlsYWJsZShjb25zdCBVQ2hhciogaXNvQ29kZSwgCisgICAgICAgICAgICAgVURhdGUgZnJvbSwg
CisgICAgICAgICAgICAgVURhdGUgdG8sIAorICAgICAgICAgICAgIFVFcnJvckNvZGUqIGVycm9y
Q29kZSk7CisKKy8qKiAKKyAqIEZpbmRzIHRoZSBudW1iZXIgb2YgdmFsaWQgY3VycmVuY3kgY29k
ZXMgZm9yIHRoZQorICogZ2l2ZW4gbG9jYWxlIGFuZCBkYXRlLgorICogQHBhcmFtIGxvY2FsZSB0
aGUgbG9jYWxlIGZvciB3aGljaCB0byByZXRyaWV2ZSB0aGUKKyAqICAgICAgICAgICAgICAgY3Vy
cmVuY3kgY291bnQuCisgKiBAcGFyYW0gZGF0ZSAgIHRoZSBkYXRlIGZvciB3aGljaCB0byByZXRy
aWV2ZSB0aGUKKyAqICAgICAgICAgICAgICAgY3VycmVuY3kgY291bnQgZm9yIHRoZSBnaXZlbiBs
b2NhbGUuCisgKiBAcGFyYW0gZWMgICAgIGVycm9yIGNvZGUKKyAqIEByZXR1cm4gICAgICAgdGhl
IG51bWJlciBvZiBjdXJyZW5jeSBjb2RlcyBmb3IgdGhlCisgKiAgICAgICAgICAgICAgIGdpdmVu
IGxvY2FsZSBhbmQgZGF0ZS4gIElmIDAsIGN1cnJlbmN5CisgKiAgICAgICAgICAgICAgIGNvZGVz
IGNvdWxkbid0IGJlIGZvdW5kIGZvciB0aGUgaW5wdXQKKyAqICAgICAgICAgICAgICAgdmFsdWVz
IGFyZSBpbnZhbGlkLgorICogQHN0YWJsZSBJQ1UgNC4wCisgKi8KK1VfU1RBQkxFIGludDMyX3Qg
VV9FWFBPUlQyCit1Y3Vycl9jb3VudEN1cnJlbmNpZXMoY29uc3QgY2hhciogbG9jYWxlLCAKKyAg
ICAgICAgICAgICAgICAgVURhdGUgZGF0ZSwgCisgICAgICAgICAgICAgICAgIFVFcnJvckNvZGUq
IGVjKTsgCisKKy8qKiAKKyAqIEZpbmRzIGEgY3VycmVuY3kgY29kZSBmb3IgdGhlIGdpdmVuIGxv
Y2FsZSBhbmQgZGF0ZSAKKyAqIEBwYXJhbSBsb2NhbGUgdGhlIGxvY2FsZSBmb3Igd2hpY2ggdG8g
cmV0cmlldmUgYSBjdXJyZW5jeSBjb2RlLiAgCisgKiAgICAgICAgICAgICAgIEN1cnJlbmN5IGNh
biBiZSBzcGVjaWZpZWQgYnkgdGhlICJjdXJyZW5jeSIga2V5d29yZCAKKyAqICAgICAgICAgICAg
ICAgaW4gd2hpY2ggY2FzZSBpdCBvdmVycmlkZXMgdGhlIGRlZmF1bHQgY3VycmVuY3kgY29kZSAK
KyAqIEBwYXJhbSBkYXRlICAgdGhlIGRhdGUgZm9yIHdoaWNoIHRvIHJldHJpZXZlIGEgY3VycmVu
Y3kgY29kZSBmb3IgCisgKiAgICAgICAgICAgICAgIHRoZSBnaXZlbiBsb2NhbGUuIAorICogQHBh
cmFtIGluZGV4ICB0aGUgaW5kZXggd2l0aGluIHRoZSBhdmFpbGFibGUgbGlzdCBvZiBjdXJyZW5j
eSBjb2RlcworICogICAgICAgICAgICAgICBmb3IgdGhlIGdpdmVuIGxvY2FsZSBvbiB0aGUgZ2l2
ZW4gZGF0ZS4KKyAqIEBwYXJhbSBidWZmICAgZmlsbCBpbiBidWZmZXIuIENhbiBiZSBOVUxMIGZv
ciBwcmVmbGlnaHRpbmcuIAorICogQHBhcmFtIGJ1ZmZDYXBhY2l0eSBjYXBhY2l0eSBvZiB0aGUg
ZmlsbCBpbiBidWZmZXIuIENhbiBiZSAwIGZvciAKKyAqICAgICAgICAgICAgICAgcHJlZmxpZ2h0
aW5nLiBJZiBpdCBpcyBub24temVybywgdGhlIGJ1ZmYgcGFyYW1ldGVyIAorICogICAgICAgICAg
ICAgICBtdXN0IG5vdCBiZSBOVUxMLiAKKyAqIEBwYXJhbSBlYyAgICAgZXJyb3IgY29kZSAKKyAq
IEByZXR1cm4gICAgICAgbGVuZ3RoIG9mIHRoZSBjdXJyZW5jeSBzdHJpbmcuIEl0IHNob3VsZCBh
bHdheXMgYmUgMy4gCisgKiAgICAgICAgICAgICAgIElmIDAsIGN1cnJlbmN5IGNvdWxkbid0IGJl
IGZvdW5kIG9yIHRoZSBpbnB1dCB2YWx1ZXMgYXJlICAKKyAqICAgICAgICAgICAgICAgaW52YWxp
ZC4gIAorICogQHN0YWJsZSBJQ1UgNC4wIAorICovIAorVV9TVEFCTEUgaW50MzJfdCBVX0VYUE9S
VDIgCit1Y3Vycl9mb3JMb2NhbGVBbmREYXRlKGNvbnN0IGNoYXIqIGxvY2FsZSwgCisgICAgICAg
ICAgICAgICAgVURhdGUgZGF0ZSwgCisgICAgICAgICAgICAgICAgaW50MzJfdCBpbmRleCwKKyAg
ICAgICAgICAgICAgICBVQ2hhciogYnVmZiwgCisgICAgICAgICAgICAgICAgaW50MzJfdCBidWZm
Q2FwYWNpdHksIAorICAgICAgICAgICAgICAgIFVFcnJvckNvZGUqIGVjKTsgCisKKy8qKgorICog
R2l2ZW4gYSBrZXkgYW5kIGEgbG9jYWxlLCByZXR1cm5zIGFuIGFycmF5IG9mIHN0cmluZyB2YWx1
ZXMgaW4gYSBwcmVmZXJyZWQKKyAqIG9yZGVyIHRoYXQgd291bGQgbWFrZSBhIGRpZmZlcmVuY2Uu
IFRoZXNlIGFyZSBhbGwgYW5kIG9ubHkgdGhvc2UgdmFsdWVzIHdoZXJlCisgKiB0aGUgb3BlbiAo
Y3JlYXRpb24pIG9mIHRoZSBzZXJ2aWNlIHdpdGggdGhlIGxvY2FsZSBmb3JtZWQgZnJvbSB0aGUg
aW5wdXQgbG9jYWxlCisgKiBwbHVzIGlucHV0IGtleXdvcmQgYW5kIHRoYXQgdmFsdWUgaGFzIGRp
ZmZlcmVudCBiZWhhdmlvciB0aGFuIGNyZWF0aW9uIHdpdGggdGhlCisgKiBpbnB1dCBsb2NhbGUg
YWxvbmUuCisgKiBAcGFyYW0ga2V5ICAgICAgICAgICBvbmUgb2YgdGhlIGtleXMgc3VwcG9ydGVk
IGJ5IHRoaXMgc2VydmljZS4gIEZvciBub3csIG9ubHkKKyAqICAgICAgICAgICAgICAgICAgICAg
ICJjdXJyZW5jeSIgaXMgc3VwcG9ydGVkLgorICogQHBhcmFtIGxvY2FsZSAgICAgICAgdGhlIGxv
Y2FsZQorICogQHBhcmFtIGNvbW1vbmx5VXNlZCAgaWYgc2V0IHRvIHRydWUgaXQgd2lsbCByZXR1
cm4gb25seSBjb21tb25seSB1c2VkIHZhbHVlcworICogICAgICAgICAgICAgICAgICAgICAgd2l0
aCB0aGUgZ2l2ZW4gbG9jYWxlIGluIHByZWZlcnJlZCBvcmRlci4gIE90aGVyd2lzZSwKKyAqICAg
ICAgICAgICAgICAgICAgICAgIGl0IHdpbGwgcmV0dXJuIGFsbCB0aGUgYXZhaWxhYmxlIHZhbHVl
cyBmb3IgdGhlIGxvY2FsZS4KKyAqIEBwYXJhbSBzdGF0dXMgZXJyb3Igc3RhdHVzCisgKiBAcmV0
dXJuIGEgc3RyaW5nIGVudW1lcmF0aW9uIG92ZXIga2V5d29yZCB2YWx1ZXMgZm9yIHRoZSBnaXZl
biBrZXkgYW5kIHRoZSBsb2NhbGUuCisgKiBAc3RhYmxlIElDVSA0LjIKKyAqLworVV9TVEFCTEUg
VUVudW1lcmF0aW9uKiBVX0VYUE9SVDIKK3VjdXJyX2dldEtleXdvcmRWYWx1ZXNGb3JMb2NhbGUo
Y29uc3QgY2hhcioga2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBj
aGFyKiBsb2NhbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVCb29sIGNvbW1v
bmx5VXNlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUVycm9yQ29kZSogc3Rh
dHVzKTsKKworLyoqCisgKiBSZXR1cm5zIHRoZSBJU08gNDIxNyBudW1lcmljIGNvZGUgZm9yIHRo
ZSBjdXJyZW5jeS4KKyAqIDxwPk5vdGU6IElmIHRoZSBJU08gNDIxNyBudW1lcmljIGNvZGUgaXMg
bm90IGFzc2lnbmVkIGZvciB0aGUgY3VycmVuY3kgb3IKKyAqIHRoZSBjdXJyZW5jeSBpcyB1bmtu
b3duLCB0aGlzIGZ1bmN0aW9uIHJldHVybnMgMC4KKyAqCisgKiBAcGFyYW0gY3VycmVuY3kgbnVs
bC10ZXJtaW5hdGVkIDMtbGV0dGVyIElTTyA0MjE3IGNvZGUKKyAqIEByZXR1cm4gVGhlIElTTyA0
MjE3IG51bWVyaWMgY29kZSBvZiB0aGUgY3VycmVuY3kKKyAqIEBzdGFibGUgSUNVIDQ5CisgKi8K
K1VfU1RBQkxFIGludDMyX3QgVV9FWFBPUlQyCit1Y3Vycl9nZXROdW1lcmljQ29kZShjb25zdCBV
Q2hhciogY3VycmVuY3kpOworCisjZW5kaWYgLyogI2lmICFVQ09ORklHX05PX0ZPUk1BVFRJTkcg
Ki8KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29jb2EvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29jb2Ev
V2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0KaW5kZXggNjVmYmM2MDg0YmE1M2VmY2RkODg1
MTM4Njc4MTk1M2Q1Yjc0ODEyYy4uNjM1ZTI1ODY0N2ViMzY3NDkwNDg5ZGI0M2RmNzBjODQ0ZjEw
ZDVmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1
bWVudENvZGVyc0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db2NvYS9XZWJD
b3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbQpAQCAtMjksNyArMjksNyBAQAogI2lmIEVOQUJMRShB
UFBMRV9QQVkpCiAKICNpbXBvcnQgIkRhdGFSZWZlcmVuY2UuaCIKLSNpbXBvcnQgPFBhc3NLaXQv
UGFzc0tpdC5oPgorI2ltcG9ydCA8V2ViQ29yZS9QYXNzS2l0U1BJLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL1NvZnRMaW5raW5nLmg+CiAKICNpZiBQTEFURk9STShNQUMpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9y
UHJveHlDb2NvYS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FwcGxlUGF5L2NvY29hL1dl
YlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EuaAppbmRleCA3ZGQxNDc0YWIwZjUxMDU0NzUx
MjkxMDBjZjEyMDE4MDQ4MjZlM2EwLi45NWQzMjQ4M2I5Mjk3ZTRkNzFiMGFhZmEyY2RhODA2YWQ2
MTNmZjEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXBwbGVQYXkvY29j
b2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BcHBsZVBheS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29h
LmgKQEAgLTI3LDggKzI3LDcgQEAKIAogI2lmIEVOQUJMRShBUFBMRV9QQVkpCiAKLSNpbXBvcnQg
PFBhc3NLaXQvUEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyLmg+Ci0jaW1wb3J0
IDxQYXNzS2l0L1BLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcl9Qcml2YXRlLmg+
CisjaW1wb3J0IDxXZWJDb3JlL1Bhc3NLaXRTUEkuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGF5bWVu
dEhlYWRlcnMuaD4KICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9y
UHJveHlDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BcHBsZVBheS9jb2NvYS9X
ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLm1tCmluZGV4IDU1OWE3MGRiMTRhYWM2ZjYx
OTY5MjJjZTA4MTI4NGQwZDdjMTgzZTcuLjBiZTFjZWI2OTk1OWZiMTRmZWFmMjFjM2Q1MWQyNTM3
Y2Y2ZTdjNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BcHBsZVBheS9j
b2NvYS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BcHBsZVBheS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNv
Y29hLm1tCkBAIC0yOSw4ICsyOSw3IEBACiAjaWYgRU5BQkxFKEFQUExFX1BBWSkKIAogI2ltcG9y
dCAiV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuaCIKLSNpbXBvcnQgPFBhc3NLaXQvUEtQYXlt
ZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyX1ByaXZhdGUuaD4KLSNpbXBvcnQgPFBhc3NL
aXRDb3JlL1BLUGF5bWVudE1lcmNoYW50U2Vzc2lvbi5oPgorI2ltcG9ydCA8V2ViQ29yZS9QYXNz
S2l0U1BJLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1BheW1lbnRIZWFkZXJzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Nv
ZnRMaW5raW5nLmg+CkBAIC00MywxMyArNDIsNiBAQCBTT0ZUX0xJTktfUFJJVkFURV9GUkFNRVdP
UksoUGFzc0tpdCkKIFNPRlRfTElOS19GUkFNRVdPUksoUGFzc0tpdCkKICNlbmRpZgogCi0jaWYg
UExBVEZPUk0oTUFDKQotLy8gRklYTUU6IE9uY2UgPHJkYXI6Ly9wcm9ibGVtLzI2MDc0ODUxPiBo
YXMgYmVlbiBmaXhlZCB3ZSBubyBsb25nZXIKLS8vIGhhdmUgdG8gZmFsbCBiYWNrIHRvIFBLSW5B
cHBQYXltZW50U2VydmljZS4KLSNpbXBvcnQgPFBhc3NLaXRDb3JlL1BLSW5BcHBQYXltZW50U2Vy
dmljZS5oPgotU09GVF9MSU5LX0NMQVNTKFBhc3NLaXQsIFBLSW5BcHBQYXltZW50U2VydmljZSkK
LSNlbmRpZgotCiBTT0ZUX0xJTktfQ0xBU1MoUGFzc0tpdCwgUEtQYXltZW50QXV0aG9yaXphdGlv
blZpZXdDb250cm9sbGVyKTsKIFNPRlRfTElOS19DTEFTUyhQYXNzS2l0LCBQS1BheW1lbnRNZXJj
aGFudFNlc3Npb24pOwogU09GVF9MSU5LX0NMQVNTKFBhc3NLaXQsIFBLUGF5bWVudFJlcXVlc3Qp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FwcGxlUGF5L21hYy9XZWJQ
YXltZW50Q29vcmRpbmF0b3JQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
cHBsZVBheS9tYWMvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlNYWMubW0KaW5kZXggYjVhYTM1
N2QwZDRiMTRkY2EzZGRiOTEzN2I0YWU5Mzk5MzFiNzM1YS4uY2FmZmIzNjM4NDlkYzVkZGVhNmE1
YjRjNzU2YTM0MTk5ZTEyYTFmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FwcGxlUGF5L21hYy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eU1hYy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXBwbGVQYXkvbWFjL1dlYlBheW1lbnRDb29yZGluYXRvclBy
b3h5TWFjLm1tCkBAIC0zMCw4ICszMCw3IEBACiAKICNpbXBvcnQgIldlYlBhZ2VQcm94eS5oIgog
I2ltcG9ydCAiV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5oIgotI2ltcG9ydCA8Rm91
bmRhdGlvbi9OU0V4dGVuc2lvbi5oPgotI2ltcG9ydCA8UGFzc0tpdC9QS1BheW1lbnRBdXRob3Jp
emF0aW9uVmlld0NvbnRyb2xsZXJfUHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViQ29yZS9QYXNzS2l0
U1BJLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NvZnRMaW5raW5nLmg+CiAKIFNPRlRfTElOS19QUklW
QVRFX0ZSQU1FV09SSyhQYXNzS2l0KQo=
</data>
<flag name="review"
          id="307609"
          type_id="1"
          status="+"
          setter="thorton"
    />
          </attachment>
      

    </bug>

</bugzilla>