<?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>177221</bug_id>
          
          <creation_ts>2017-09-19 23:27:29 -0700</creation_ts>
          <short_desc>Remove DOM and styling support for CSS Regions</short_desc>
          <delta_ts>2017-09-20 18:49:08 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>174978</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>buildbot</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>joepeck</cc>
    
    <cc>kling</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1350678</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2017-09-19 23:27:29 -0700</bug_when>
    <thetext>Everything outside rendering.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1350684</commentid>
    <comment_count>1</comment_count>
      <attachid>321297</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2017-09-19 23:51:11 -0700</bug_when>
    <thetext>Created attachment 321297
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1350685</commentid>
    <comment_count>2</comment_count>
      <attachid>321298</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2017-09-20 00:20:05 -0700</bug_when>
    <thetext>Created attachment 321298
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1350687</commentid>
    <comment_count>3</comment_count>
      <attachid>321299</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2017-09-20 00:54:56 -0700</bug_when>
    <thetext>Created attachment 321299
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1350692</commentid>
    <comment_count>4</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-09-20 01:42:05 -0700</bug_when>
    <thetext>Attachment 321299 did not pass style-queue:


ERROR: Source/WebCore/PAL/Configurations/FeatureDefines.xcconfig:0:  Any changes made to FeatureDefines should be made to all of them (changed file does not match Source/JavaScriptCore/Configurations/FeatureDefines.xcconfig). Use sync-feature-defines if possible.  [featuredefines/equality] [5]
ERROR: Source/WebCore/PAL/Configurations/FeatureDefines.xcconfig:0:  Any changes made to FeatureDefines should be made to all of them (changed file does not match Source/WebKitLegacy/mac/Configurations/FeatureDefines.xcconfig). Use sync-feature-defines if possible.  [featuredefines/equality] [5]
ERROR: Source/WebCore/PAL/Configurations/FeatureDefines.xcconfig:0:  Any changes made to FeatureDefines should be made to all of them (changed file does not match Source/WebKit/Configurations/FeatureDefines.xcconfig). Use sync-feature-defines if possible.  [featuredefines/equality] [5]
ERROR: Source/WebCore/PAL/Configurations/FeatureDefines.xcconfig:0:  Any changes made to FeatureDefines should be made to all of them (changed file does not match Tools/TestWebKitAPI/Configurations/FeatureDefines.xcconfig). Use sync-feature-defines if possible.  [featuredefines/equality] [5]
ERROR: Source/WebCore/Configurations/FeatureDefines.xcconfig:0:  Any changes made to FeatureDefines should be made to all of them (changed file does not match Source/JavaScriptCore/Configurations/FeatureDefines.xcconfig). Use sync-feature-defines if possible.  [featuredefines/equality] [5]
ERROR: Source/WebCore/Configurations/FeatureDefines.xcconfig:0:  Any changes made to FeatureDefines should be made to all of them (changed file does not match Source/WebKitLegacy/mac/Configurations/FeatureDefines.xcconfig). Use sync-feature-defines if possible.  [featuredefines/equality] [5]
ERROR: Source/WebCore/Configurations/FeatureDefines.xcconfig:0:  Any changes made to FeatureDefines should be made to all of them (changed file does not match Source/WebKit/Configurations/FeatureDefines.xcconfig). Use sync-feature-defines if possible.  [featuredefines/equality] [5]
ERROR: Source/WebCore/Configurations/FeatureDefines.xcconfig:0:  Any changes made to FeatureDefines should be made to all of them (changed file does not match Tools/TestWebKitAPI/Configurations/FeatureDefines.xcconfig). Use sync-feature-defines if possible.  [featuredefines/equality] [5]
Total errors found: 8 in 23 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1350695</commentid>
    <comment_count>5</comment_count>
      <attachid>321303</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2017-09-20 01:55:14 -0700</bug_when>
    <thetext>Created attachment 321303
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1350696</commentid>
    <comment_count>6</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-09-20 01:56:40 -0700</bug_when>
    <thetext>Attachment 321303 did not pass style-queue:


ERROR: Source/WebCore/PAL/Configurations/FeatureDefines.xcconfig:0:  Any changes made to FeatureDefines should be made to all of them (changed file does not match Source/JavaScriptCore/Configurations/FeatureDefines.xcconfig). Use sync-feature-defines if possible.  [featuredefines/equality] [5]
ERROR: Source/WebCore/PAL/Configurations/FeatureDefines.xcconfig:0:  Any changes made to FeatureDefines should be made to all of them (changed file does not match Source/WebKitLegacy/mac/Configurations/FeatureDefines.xcconfig). Use sync-feature-defines if possible.  [featuredefines/equality] [5]
ERROR: Source/WebCore/PAL/Configurations/FeatureDefines.xcconfig:0:  Any changes made to FeatureDefines should be made to all of them (changed file does not match Source/WebKit/Configurations/FeatureDefines.xcconfig). Use sync-feature-defines if possible.  [featuredefines/equality] [5]
ERROR: Source/WebCore/PAL/Configurations/FeatureDefines.xcconfig:0:  Any changes made to FeatureDefines should be made to all of them (changed file does not match Tools/TestWebKitAPI/Configurations/FeatureDefines.xcconfig). Use sync-feature-defines if possible.  [featuredefines/equality] [5]
ERROR: Source/WebCore/Configurations/FeatureDefines.xcconfig:0:  Any changes made to FeatureDefines should be made to all of them (changed file does not match Source/JavaScriptCore/Configurations/FeatureDefines.xcconfig). Use sync-feature-defines if possible.  [featuredefines/equality] [5]
ERROR: Source/WebCore/Configurations/FeatureDefines.xcconfig:0:  Any changes made to FeatureDefines should be made to all of them (changed file does not match Source/WebKitLegacy/mac/Configurations/FeatureDefines.xcconfig). Use sync-feature-defines if possible.  [featuredefines/equality] [5]
ERROR: Source/WebCore/Configurations/FeatureDefines.xcconfig:0:  Any changes made to FeatureDefines should be made to all of them (changed file does not match Source/WebKit/Configurations/FeatureDefines.xcconfig). Use sync-feature-defines if possible.  [featuredefines/equality] [5]
ERROR: Source/WebCore/Configurations/FeatureDefines.xcconfig:0:  Any changes made to FeatureDefines should be made to all of them (changed file does not match Tools/TestWebKitAPI/Configurations/FeatureDefines.xcconfig). Use sync-feature-defines if possible.  [featuredefines/equality] [5]
Total errors found: 8 in 23 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1350697</commentid>
    <comment_count>7</comment_count>
      <attachid>321304</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2017-09-20 01:57:09 -0700</bug_when>
    <thetext>Created attachment 321304
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1350698</commentid>
    <comment_count>8</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-09-20 01:59:46 -0700</bug_when>
    <thetext>Attachment 321304 did not pass style-queue:


ERROR: Source/WebCore/Configurations/FeatureDefines.xcconfig:0:  Any changes made to FeatureDefines should be made to all of them (changed file does not match Tools/TestWebKitAPI/Configurations/FeatureDefines.xcconfig). Use sync-feature-defines if possible.  [featuredefines/equality] [5]
ERROR: Source/WebCore/PAL/Configurations/FeatureDefines.xcconfig:0:  Any changes made to FeatureDefines should be made to all of them (changed file does not match Tools/TestWebKitAPI/Configurations/FeatureDefines.xcconfig). Use sync-feature-defines if possible.  [featuredefines/equality] [5]
ERROR: Source/JavaScriptCore/Configurations/FeatureDefines.xcconfig:0:  Any changes made to FeatureDefines should be made to all of them (changed file does not match Tools/TestWebKitAPI/Configurations/FeatureDefines.xcconfig). Use sync-feature-defines if possible.  [featuredefines/equality] [5]
ERROR: Source/WebKit/Configurations/FeatureDefines.xcconfig:0:  Any changes made to FeatureDefines should be made to all of them (changed file does not match Tools/TestWebKitAPI/Configurations/FeatureDefines.xcconfig). Use sync-feature-defines if possible.  [featuredefines/equality] [5]
ERROR: Source/WebKitLegacy/mac/Configurations/FeatureDefines.xcconfig:0:  Any changes made to FeatureDefines should be made to all of them (changed file does not match Tools/TestWebKitAPI/Configurations/FeatureDefines.xcconfig). Use sync-feature-defines if possible.  [featuredefines/equality] [5]
Total errors found: 5 in 28 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>1350700</commentid>
    <comment_count>9</comment_count>
      <attachid>321305</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2017-09-20 02:12:27 -0700</bug_when>
    <thetext>Created attachment 321305
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1350717</commentid>
    <comment_count>10</comment_count>
      <attachid>321305</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-09-20 05:58:50 -0700</bug_when>
    <thetext>Comment on attachment 321305
patch

Clearing flags on attachment: 321305

Committed r222259: &lt;http://trac.webkit.org/changeset/222259&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1350718</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-09-20 05:58:51 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1350726</commentid>
    <comment_count>12</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-09-20 07:12:11 -0700</bug_when>
    <thetext>&lt;rdar://problem/34547825&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1351097</commentid>
    <comment_count>13</comment_count>
      <attachid>321305</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2017-09-20 18:49:08 -0700</bug_when>
    <thetext>Comment on attachment 321305
patch

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

&gt; Source/WebCore/inspector/InspectorCSSAgent.cpp:-906
&gt; -void InspectorCSSAgent::getNamedFlowCollection(ErrorString&amp; errorString, int documentNodeId, RefPtr&lt;Inspector::Protocol::Array&lt;Inspector::Protocol::CSS::NamedFlow&gt;&gt;&amp; result)
&gt; +void InspectorCSSAgent::getNamedFlowCollection(ErrorString&amp;, int, RefPtr&lt;Inspector::Protocol::Array&lt;Inspector::Protocol::CSS::NamedFlow&gt;&gt;&amp;)
&gt;  {
&gt; -    Document* document = m_domAgent-&gt;assertDocument(errorString, documentNodeId);

This is not a good state to leave this function in, we should remove inspector support for regions. I&apos;ll take a look.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>321297</attachid>
            <date>2017-09-19 23:51:11 -0700</date>
            <delta_ts>2017-09-20 00:20:05 -0700</delta_ts>
            <desc>patch</desc>
            <filename>named-flow-removal-dom-etc-4.patch</filename>
            <type>text/plain</type>
            <size>223196</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMjIwNCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIyNCBAQAorMjAxNy0wOS0xOSAgQW50dGkg
S29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIERPTSBhbmQgc3R5
bGluZyBzdXBwb3J0IGZvciBDU1MgUmVnaW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc3MjIxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCByZW1vdmVzIGFsbCBDU1MgUmVnaW9ucyAo
YWthICJuYW1lZCBmbG93IikgcmVsYXRlZCBjb2RlIGV4Y2x1ZGluZyByZW5kZXJpbmcuCisKKyAg
ICAgICAgVGhlIGZlYXR1cmUgaXMgYWxyZWFkeSBkaXNhYmxlZCBzbyBubyBmdW5jdGlvbmFsIGNo
YW5nZXMuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBDb25maWd1cmF0
aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZzoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5t
YWtlOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU0NTU1J1bGVDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
dG9KU05ld2x5Q3JlYXRlZCk6CisgICAgICAgICogY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJh
dGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb250ZW50VG9DU1NWYWx1ZSk6CisgICAgICAg
IChXZWJDb3JlOjpDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0eVZhbHVlKToKKyAgICAg
ICAgKFdlYkNvcmU6OmNvbnZlcnRUb1JlZ2lvbkJyZWFrKTogRGVsZXRlZC4KKyAgICAgICAgKiBj
c3MvQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJp
bWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1By
aW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBCcmVha0JldHdlZW4gY29uc3QpOgorICAgICAgICAqIGNz
cy9DU1NQcm9wZXJ0aWVzLmpzb246CisgICAgICAgICogY3NzL0NTU1J1bGUuY3BwOgorICAgICAg
ICAqIGNzcy9DU1NSdWxlLmg6CisgICAgICAgICogY3NzL0NTU1J1bGUuaWRsOgorICAgICAgICAq
IGNzcy9FbGVtZW50UnVsZUNvbGxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50
UnVsZUNvbGxlY3Rvcjo6bWF0Y2hBdXRob3JSdWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpFbGVt
ZW50UnVsZUNvbGxlY3Rvcjo6bWF0Y2hVc2VyUnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6RWxl
bWVudFJ1bGVDb2xsZWN0b3I6OmNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yUmVnaW9uKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBjc3MvRWxlbWVudFJ1bGVDb2xsZWN0b3IuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkVsZW1lbnRSdWxlQ29sbGVjdG9yOjpzZXRTYW1lT3JpZ2luT25seSk6CisgICAgICAgIChX
ZWJDb3JlOjpFbGVtZW50UnVsZUNvbGxlY3Rvcjo6c2V0UmVnaW9uRm9yU3R5bGluZyk6IERlbGV0
ZWQuCisgICAgICAgICogY3NzL0luc3BlY3RvckNTU09NV3JhcHBlcnMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yQ1NTT01XcmFwcGVyczo6Y29sbGVjdCk6CisgICAgICAgICogY3Nz
L1J1bGVTZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZGV0ZXJtaW5lUHJvcGVydHlXaGl0ZWxp
c3RUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bGVEYXRhOjpSdWxlRGF0YSk6CisgICAgICAg
IChXZWJDb3JlOjpSdWxlU2V0OjphZGRDaGlsZFJ1bGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1
bGVTZXQ6OnNocmlua1RvRml0KToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bGVTZXQ6OmFkZFJlZ2lv
blJ1bGUpOiBEZWxldGVkLgorICAgICAgICAqIGNzcy9SdWxlU2V0Lmg6CisgICAgICAgIChXZWJD
b3JlOjpSdWxlU2V0OjogY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UnVsZVNldDo6cmVnaW9u
U2VsZWN0b3JzQW5kUnVsZVNldHMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGNzcy9TdHls
ZUJ1aWxkZXJDb252ZXJ0ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlckNvbnZl
cnRlcjo6Y29udmVydFJlZ2lvbkJyZWFrQmV0d2Vlbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRSZWdpb25CcmVha0luc2lkZSk6IERl
bGV0ZWQuCisgICAgICAgICogY3NzL1N0eWxlUHJvcGVydGllcy5jcHA6CisgICAgICAgICogY3Nz
L1N0eWxlUmVzb2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6U3Rh
dGU6OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OlN0YXRlOjpTdGF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpzdHlsZUZvckVsZW1lbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6Q2FzY2FkZWRQcm9wZXJ0aWVzOjphZGRN
YXRjaCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpjaGVja1JlZ2lvblN0eWxl
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmlzVmFsaWRSZWdpb25TdHlsZVByb3BlcnR5
KTogRGVsZXRlZC4KKyAgICAgICAgKiBjc3MvU3R5bGVSZXNvbHZlci5oOgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGVSZXNvbHZlcjo6U3RhdGU6OnJlZ2lvbkZvclN0eWxpbmcgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6Y2hlY2tSZWdpb25TZWxlY3Rvcik6IERlbGV0ZWQuCisg
ICAgICAgICogY3NzL1N0eWxlUnVsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJ1bGVC
YXNlOjpkZXN0cm95KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUnVsZUJhc2U6OmNvcHkgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSdWxlQmFzZTo6Y3JlYXRlQ1NTT01XcmFwcGVy
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUnVsZVJlZ2lvbjo6U3R5bGVSdWxlUmVn
aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBjc3MvU3R5bGVSdWxlLmg6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZVJ1bGVCYXNlOjppc1N0eWxlUnVsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZVJ1bGVCYXNlOjppc1JlZ2lvblJ1bGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAq
IGNzcy9TdHlsZVNoZWV0Q29udGVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dHJhdmVyc2VT
dWJyZXNvdXJjZXNJblJ1bGVzKToKKyAgICAgICAgKiBjc3MvV2ViS2l0Q1NTUmVnaW9uUnVsZS5j
cHA6IFJlbW92ZWQuCisgICAgICAgICogY3NzL1dlYktpdENTU1JlZ2lvblJ1bGUuaDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBjc3MvV2ViS2l0Q1NTUmVnaW9uUnVsZS5pZGw6IFJlbW92ZWQuCisgICAg
ICAgICogY3NzL3BhcnNlci9DU1NBdFJ1bGVJRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjc3NB
dFJ1bGVJRCk6CisgICAgICAgICogY3NzL3BhcnNlci9DU1NBdFJ1bGVJRC5oOgorICAgICAgICAq
IGNzcy9wYXJzZXIvQ1NTUGFyc2VyRmFzdFBhdGhzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNT
U1BhcnNlckZhc3RQYXRoczo6aXNWYWxpZEtleXdvcmRQcm9wZXJ0eUFuZFZhbHVlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1BhcnNlckZhc3RQYXRoczo6aXNLZXl3b3JkUHJvcGVydHlJRCk6Cisg
ICAgICAgICogY3NzL3BhcnNlci9DU1NQYXJzZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1BhcnNlckltcGw6OmNvbnN1bWVBdFJ1bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFy
c2VySW1wbDo6Y29uc3VtZVJlZ2lvblJ1bGUpOiBEZWxldGVkLgorICAgICAgICAqIGNzcy9wYXJz
ZXIvQ1NTUGFyc2VySW1wbC5oOgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJz
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNMZWdhY3lCcmVha1Byb3BlcnR5KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VyOjpwYXJzZVNpbmdsZVZhbHVlKToKKyAgICAg
ICAgKFdlYkNvcmU6Om1hcEZyb21MZWdhY3lCcmVha1Byb3BlcnR5KToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1Byb3BlcnR5UGFyc2VyOjpjb25zdW1lTGVnYWN5QnJlYWtQcm9wZXJ0eSk6CisgICAg
ICAgIChXZWJDb3JlOjpjb25zdW1lRmxvd1Byb3BlcnR5KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6Om1hcEZyb21SZWdpb25CcmVha0JldHdlZW4pOiBEZWxldGVkLgorICAgICAgICAqIGRv
bS9Db250YWluZXJOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRlc3Ryb3lSZW5kZXJUcmVl
SWZOZWVkZWQpOgorICAgICAgICAqIGRvbS9ET01OYW1lZEZsb3dDb2xsZWN0aW9uLmNwcDogUmVt
b3ZlZC4KKyAgICAgICAgKiBkb20vRE9NTmFtZWRGbG93Q29sbGVjdGlvbi5oOiBSZW1vdmVkLgor
ICAgICAgICAqIGRvbS9ET01OYW1lZEZsb3dDb2xsZWN0aW9uLmlkbDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnVwZGF0
ZUxheW91dElmRGltZW5zaW9uc091dE9mRGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dDo6d2Via2l0R2V0TmFtZWRGbG93cyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudDo6bmFtZWRGbG93cyk6IERlbGV0ZWQuCisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6Cisg
ICAgICAgICogZG9tL0RvY3VtZW50LmlkbDoKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojp+RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpF
bGVtZW50OjpjbGVhclN0eWxlRGVyaXZlZERhdGFCZWZvcmVEZXRhY2hpbmdSZW5kZXJlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojp1bnJlZ2lzdGVyTmFtZWRGbG93Q29udGVudEVsZW1l
bnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c2V0SXNOYW1lZEZsb3dD
b250ZW50RWxlbWVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpjbGVh
cklzTmFtZWRGbG93Q29udGVudEVsZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
RWxlbWVudDo6cmFyZURhdGFJc05hbWVkRmxvd0NvbnRlbnRFbGVtZW50IGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNldFJlZ2lvbk92ZXJzZXRTdGF0ZSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpyZWdpb25PdmVyc2V0U3RhdGUgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6cmVuZGVyTmFtZWRGbG93
RnJhZ21lbnQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c2hv
dWxkTW92ZVRvRmxvd1RocmVhZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpF
bGVtZW50Ojp3ZWJraXRSZWdpb25PdmVyc2V0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkVsZW1lbnQ6OndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojpp
c05hbWVkRmxvd0NvbnRlbnRFbGVtZW50IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBkb20v
RWxlbWVudC5pZGw6CisgICAgICAgICogZG9tL0VsZW1lbnRSYXJlRGF0YS5jcHA6CisgICAgICAg
ICogZG9tL0VsZW1lbnRSYXJlRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFJhcmVE
YXRhOjpFbGVtZW50UmFyZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFJhcmVEYXRh
OjpyZWdpb25PdmVyc2V0U3RhdGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
RWxlbWVudFJhcmVEYXRhOjpzZXRSZWdpb25PdmVyc2V0U3RhdGUpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6RWxlbWVudFJhcmVEYXRhOjppc05hbWVkRmxvd0NvbnRlbnRFbGVtZW50IGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRSYXJlRGF0YTo6c2V0SXNO
YW1lZEZsb3dDb250ZW50RWxlbWVudCk6IERlbGV0ZWQuCisgICAgICAgICogZG9tL0V2ZW50VGFy
Z2V0RmFjdG9yeS5pbjoKKyAgICAgICAgKiBkb20vTmFtZWRGbG93Q29sbGVjdGlvbi5jcHA6IFJl
bW92ZWQuCisgICAgICAgICogZG9tL05hbWVkRmxvd0NvbGxlY3Rpb24uaDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBkb20vUHNldWRvRWxlbWVudC5oOgorICAgICAgICAqIGRvbS9XZWJLaXROYW1lZEZs
b3cuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIGRvbS9XZWJLaXROYW1lZEZsb3cuaDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBkb20vV2ViS2l0TmFtZWRGbG93LmlkbDogUmVtb3ZlZC4KKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yQ1NTQWdlbnQ6OnJlc2V0Tm9uUGVyc2lzdGVudERhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2hhbmdlUmVnaW9uT3ZlcnNldFRhc2s6OkNoYW5nZVJlZ2lvbk92ZXJzZXRUYXNrKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNoYW5nZVJlZ2lvbk92ZXJzZXRUYXNrOjpzY2hlZHVs
ZUZvcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDaGFuZ2VSZWdpb25PdmVyc2V0VGFz
azo6dW5zY2hlZHVsZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDaGFuZ2VSZWdpb25P
dmVyc2V0VGFzazo6cmVzZXQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q2hhbmdlUmVn
aW9uT3ZlcnNldFRhc2s6OnRpbWVyRmlyZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yQ1NTQWdlbnQ6OmRpZENyZWF0ZU5hbWVkRmxvdyk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6d2lsbFJlbW92ZU5hbWVkRmxvdyk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6ZGlkQ2hhbmdlUmVnaW9u
T3ZlcnNldCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6
cmVnaW9uT3ZlcnNldENoYW5nZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yQ1NTQWdlbnQ6OmRpZFJlZ2lzdGVyTmFtZWRGbG93Q29udGVudEVsZW1lbnQpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmRpZFVucmVnaXN0ZXJOYW1l
ZEZsb3dDb250ZW50RWxlbWVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JDU1NBZ2VudDo6Z2V0TmFtZWRGbG93Q29sbGVjdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6ZG9jdW1lbnROb2RlV2l0aFJlcXVlc3RlZEZsb3dz
SWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmJ1aWxk
QXJyYXlGb3JSZWdpb25zKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNT
U0FnZW50OjpidWlsZE9iamVjdEZvck5hbWVkRmxvdyk6IERlbGV0ZWQuCisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3RvckNTU0FnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rv
ckluc3RydW1lbnRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmRpZENyZWF0ZU5hbWVkRmxvd0ltcGwpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUmVtb3ZlTmFtZWRGbG93SW1wbCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRp
ZENoYW5nZVJlZ2lvbk92ZXJzZXRJbXBsKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVnaXN0ZXJOYW1lZEZsb3dDb250ZW50RWxlbWVu
dEltcGwpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpkaWRVbnJlZ2lzdGVyTmFtZWRGbG93Q29udGVudEVsZW1lbnRJbXBsKTogRGVsZXRlZC4K
KyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpidWlsZFJlbmRlcmVySGlnaGxpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OmJ1aWxkT2Jq
ZWN0Rm9yRWxlbWVudERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRPYmplY3RGb3JSZWdp
b24pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRPYmplY3RGb3JGbG93UmVnaW9u
cyk6IERlbGV0ZWQuCisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6aGFuZGxlV2hlZWxFdmVudEluQXBwcm9wcmlhdGVFbmNsb3NpbmdCb3gpOgorICAg
ICAgICAqIHJlbmRlcmluZy9GbG93VGhyZWFkQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGbG93VGhyZWFkQ29udHJvbGxlcjo6ZW5zdXJlUmVuZGVyRmxvd1RocmVhZFdpdGhOYW1l
KTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvRmxvd1RocmVhZENvbnRyb2xsZXIuaDoK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVnaW9uT3ZlcnNldFN0YXRlLmg6IFJlbW92ZWQuCisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJCbG9ja0Zsb3c6OmFwcGx5QmVmb3JlQnJlYWspOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyQmxvY2tGbG93OjphcHBseUFmdGVyQnJlYWspOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJOYW1lZEZsb3dGcmFnbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJOYW1lZEZs
b3dGcmFnbWVudDo6Z2V0UmFuZ2VzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck5h
bWVkRmxvd0ZyYWdtZW50OjpsYXlvdXRCbG9jayk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJO
YW1lZEZsb3dGcmFnbWVudDo6Y2hlY2tSZWdpb25TdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJOYW1lZEZsb3dGcmFnbWVudDo6Y29tcHV0ZVN0eWxlSW5SZWdpb24gY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTmFtZWRGbG93RnJhZ21lbnQ6OnNldFJlZ2lvbk9iamVjdHNS
ZWdpb25TdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJOYW1lZEZsb3dGcmFnbWVudDo6
c2V0UmVnaW9uT3ZlcnNldFN0YXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ck5hbWVkRmxvd0ZyYWdtZW50OjpyZWdpb25PdmVyc2V0U3RhdGUgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTmFtZWRGbG93RnJhZ21lbnQ6OnVwZGF0ZU92ZXJzZXRT
dGF0ZSk6IERlbGV0ZWQuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd0ZyYWdt
ZW50Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd1RocmVhZC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6OlJlbmRlck5hbWVkRmxvd1Ro
cmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6OmNsZWFyQ29u
dGVudEVsZW1lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck5hbWVkRmxvd1RocmVhZDo6
cmVnaXN0ZXJOYW1lZEZsb3dDb250ZW50RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJOYW1lZEZsb3dUaHJlYWQ6OnVucmVnaXN0ZXJOYW1lZEZsb3dDb250ZW50RWxlbWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6Omhhc0NvbnRlbnRFbGVtZW50
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck5hbWVkRmxvd1RocmVhZDo6Zmxvd1Ro
cmVhZE5hbWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTmFtZWRGbG93VGhyZWFk
OjpkaXNwYXRjaFJlZ2lvbk92ZXJzZXRDaGFuZ2VFdmVudElmTmVlZGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlck5hbWVkRmxvd1RocmVhZDo6cmVnaW9uT3ZlcnNldENoYW5nZUV2ZW50VGlt
ZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6OnNldE1h
cmtGb3JEZXN0cnVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJOYW1lZEZsb3dUaHJl
YWQ6OnJlc2V0TWFya0ZvckRlc3RydWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck5h
bWVkRmxvd1RocmVhZDo6aXNNYXJrZWRGb3JEZXN0cnVjdGlvbiBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpuZXh0Tm9kZUluc2lkZUNvbnRlbnRFbGVtZW50KToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyTmFtZWRGbG93VGhyZWFkLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclJl
Z2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJSZWdpb246Omluc3RhbGxGbG93VGhy
ZWFkKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuaDoK
KyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvV2lsbENoYW5nZURhdGEuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V2lsbENoYW5nZURhdGE6OnByb3BlcnR5Q3JlYXRlc1N0YWNraW5nQ29udGV4dCk6
CisgICAgICAgICogc3R5bGUvUmVuZGVyVHJlZVBvc2l0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclRyZWVQb3NpdGlvbjo6cHJldmlvdXNTaWJsaW5nUmVuZGVyZXIgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVHJlZVBvc2l0aW9uOjpuZXh0U2libGluZ1JlbmRlcmVy
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRyZWVQb3NpdGlvbjo6aW5zZXJ0aW9u
UG9zaXRpb25Gb3JGbG93VGhyZWFkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clRyZWVQb3NpdGlvbjo6aXNSZW5kZXJlclJlcGFyZW50ZWQpOiBEZWxldGVkLgorICAgICAgICAq
IHN0eWxlL1JlbmRlclRyZWVQb3NpdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVHJl
ZVBvc2l0aW9uOjpSZW5kZXJUcmVlUG9zaXRpb24pOgorICAgICAgICAqIHN0eWxlL1JlbmRlclRy
ZWVVcGRhdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRyZWVVcGRhdGVyOjp1cGRh
dGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVHJlZVVwZGF0ZXI6
OmNyZWF0ZVJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRyZWVVcGRhdGVyOjpp
bnZhbGlkYXRlV2hpdGVzcGFjZU9ubHlUZXh0U2libGluZ3NBZnRlckF0dGFjaElmTmVlZGVkKToK
KyAgICAgICAgKFdlYkNvcmU6OnJlZ2lzdGVyRWxlbWVudEZvckZsb3dUaHJlYWRJZk5lZWRlZCk6
IERlbGV0ZWQuCisgICAgICAgICogc3R5bGUvUmVuZGVyVHJlZVVwZGF0ZXJHZW5lcmF0ZWRDb250
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUNvbnRlbnRSZW5kZXJlcnMpOgorICAg
ICAgICAqIHN0eWxlL1N0eWxlQ2hhbmdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpk
ZXRlcm1pbmVDaGFuZ2UpOgorICAgICAgICAqIHN0eWxlL1N0eWxlVHJlZVJlc29sdmVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpUcmVlUmVzb2x2ZXI6OnN0eWxlRm9yRWxlbWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6YWZmZWN0c1JlbmRlcmVkU3VidHJlZSk6CisgICAg
ICAgICogc3ZnL1NWR0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6
c2hvdWxkTW92ZVRvRmxvd1RocmVhZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogc3ZnL1NW
R0VsZW1lbnQuaDoKKwogMjAxNy0wOS0xOCAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lh
QGlnYWxpYS5jb20+CiAKICAgICAgICAgW0hhcmZidXp6XSBhZGp1c3RTZWxlY3Rpb25SZWN0Rm9y
Q29tcGxleFRleHQoKSBzaG91bGQgYWxzbyBwYXNzIHRoZSBjaGFyYWN0ZXIgcmFuZ2Ugd2hlbiBz
aGFwaW5nCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMjIyMjA0KQorKysgU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTQ4NSw3ICs0ODUs
NiBAQCBzZXQoV2ViQ29yZV9OT05fU1ZHX0lETF9GSUxFUwogICAgIGNzcy9TdHlsZVNoZWV0Lmlk
bAogICAgIGNzcy9TdHlsZVNoZWV0TGlzdC5pZGwKICAgICBjc3MvV2ViS2l0Q1NTTWF0cml4Lmlk
bAotICAgIGNzcy9XZWJLaXRDU1NSZWdpb25SdWxlLmlkbAogICAgIGNzcy9XZWJLaXRDU1NWaWV3
cG9ydFJ1bGUuaWRsCiAKICAgICBkb20vQW5pbWF0aW9uRXZlbnQuaWRsCkBAIC01MDMsNyArNTAy
LDYgQEAgc2V0KFdlYkNvcmVfTk9OX1NWR19JRExfRklMRVMKICAgICBkb20vRE9NRXJyb3IuaWRs
CiAgICAgZG9tL0RPTUV4Y2VwdGlvbi5pZGwKICAgICBkb20vRE9NSW1wbGVtZW50YXRpb24uaWRs
Ci0gICAgZG9tL0RPTU5hbWVkRmxvd0NvbGxlY3Rpb24uaWRsCiAgICAgZG9tL0RPTVBvaW50Lmlk
bAogICAgIGRvbS9ET01Qb2ludEluaXQuaWRsCiAgICAgZG9tL0RPTVBvaW50UmVhZE9ubHkuaWRs
CkBAIC01ODAsNyArNTc4LDYgQEAgc2V0KFdlYkNvcmVfTk9OX1NWR19JRExfRklMRVMKICAgICBk
b20vVUlFdmVudC5pZGwKICAgICBkb20vVUlFdmVudEluaXQuaWRsCiAgICAgZG9tL1dlYktpdEFu
aW1hdGlvbkV2ZW50LmlkbAotICAgIGRvbS9XZWJLaXROYW1lZEZsb3cuaWRsCiAgICAgZG9tL1dl
YktpdFRyYW5zaXRpb25FdmVudC5pZGwKICAgICBkb20vV2hlZWxFdmVudC5pZGwKICAgICBkb20v
WE1MRG9jdW1lbnQuaWRsCkBAIC0xNTU4LDcgKzE1NTUsNiBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VT
CiAgICAgY3NzL1RyYW5zZm9ybUZ1bmN0aW9ucy5jcHAKICAgICBjc3MvVmlld3BvcnRTdHlsZVJl
c29sdmVyLmNwcAogICAgIGNzcy9XZWJLaXRDU1NNYXRyaXguY3BwCi0gICAgY3NzL1dlYktpdENT
U1JlZ2lvblJ1bGUuY3BwCiAgICAgY3NzL1dlYktpdENTU1ZpZXdwb3J0UnVsZS5jcHAKIAogICAg
IGNzcy9wYXJzZXIvQ1NTQXRSdWxlSUQuY3BwCkBAIC0xNjEyLDcgKzE2MDgsNiBAQCBzZXQoV2Vi
Q29yZV9TT1VSQ0VTCiAgICAgZG9tL0RPTUVycm9yLmNwcAogICAgIGRvbS9ET01FeGNlcHRpb24u
Y3BwCiAgICAgZG9tL0RPTUltcGxlbWVudGF0aW9uLmNwcAotICAgIGRvbS9ET01OYW1lZEZsb3dD
b2xsZWN0aW9uLmNwcAogICAgIGRvbS9ET01Qb2ludFJlYWRPbmx5LmNwcAogICAgIGRvbS9ET01R
dWFkLmNwcAogICAgIGRvbS9ET01SZWN0TGlzdC5jcHAKQEAgLTE2NzQsNyArMTY2OSw2IEBAIHNl
dChXZWJDb3JlX1NPVVJDRVMKICAgICBkb20vTXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbi5j
cHAKICAgICBkb20vTXV0YXRpb25SZWNvcmQuY3BwCiAgICAgZG9tL05hbWVOb2RlTGlzdC5jcHAK
LSAgICBkb20vTmFtZWRGbG93Q29sbGVjdGlvbi5jcHAKICAgICBkb20vTmFtZWROb2RlTWFwLmNw
cAogICAgIGRvbS9OYXRpdmVOb2RlRmlsdGVyLmNwcAogICAgIGRvbS9Ob2RlLmNwcApAQCAtMTcz
Nyw3ICsxNzMxLDYgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIGRvbS9WaWV3cG9ydEFyZ3Vt
ZW50cy5jcHAKICAgICBkb20vVmlzaXRlZExpbmtTdGF0ZS5jcHAKICAgICBkb20vV2ViS2l0QW5p
bWF0aW9uRXZlbnQuY3BwCi0gICAgZG9tL1dlYktpdE5hbWVkRmxvdy5jcHAKICAgICBkb20vV2Vi
S2l0VHJhbnNpdGlvbkV2ZW50LmNwcAogICAgIGRvbS9XaGVlbEV2ZW50LmNwcAogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHJldmlzaW9uIDIyMjIwNCkKKysrIFNvdXJjZS9X
ZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHdvcmtpbmcgY29weSkKQEAgLTQwNiw3ICs0MDYs
NiBAQCBKU19CSU5ESU5HX0lETFMgPSBcCiAgICAgJChXZWJDb3JlKS9jc3MvU3R5bGVTaGVldC5p
ZGwgXAogICAgICQoV2ViQ29yZSkvY3NzL1N0eWxlU2hlZXRMaXN0LmlkbCBcCiAgICAgJChXZWJD
b3JlKS9jc3MvV2ViS2l0Q1NTTWF0cml4LmlkbCBcCi0gICAgJChXZWJDb3JlKS9jc3MvV2ViS2l0
Q1NTUmVnaW9uUnVsZS5pZGwgXAogICAgICQoV2ViQ29yZSkvY3NzL1dlYktpdENTU1ZpZXdwb3J0
UnVsZS5pZGwgXAogICAgICQoV2ViQ29yZSkvZG9tL0FuaW1hdGlvbkV2ZW50LmlkbCBcCiAgICAg
JChXZWJDb3JlKS9kb20vQXR0ci5pZGwgXApAQCAtNDIzLDcgKzQyMiw2IEBAIEpTX0JJTkRJTkdf
SURMUyA9IFwKICAgICAkKFdlYkNvcmUpL2RvbS9ET01FcnJvci5pZGwgXAogICAgICQoV2ViQ29y
ZSkvZG9tL0RPTUV4Y2VwdGlvbi5pZGwgXAogICAgICQoV2ViQ29yZSkvZG9tL0RPTUltcGxlbWVu
dGF0aW9uLmlkbCBcCi0gICAgJChXZWJDb3JlKS9kb20vRE9NTmFtZWRGbG93Q29sbGVjdGlvbi5p
ZGwgXAogICAgICQoV2ViQ29yZSkvZG9tL0RPTVBvaW50LmlkbCBcCiAgICAgJChXZWJDb3JlKS9k
b20vRE9NUG9pbnRJbml0LmlkbCBcCiAgICAgJChXZWJDb3JlKS9kb20vRE9NUG9pbnRSZWFkT25s
eS5pZGwgXApAQCAtNDk3LDcgKzQ5NSw2IEBAIEpTX0JJTkRJTkdfSURMUyA9IFwKICAgICAkKFdl
YkNvcmUpL2RvbS9VSUV2ZW50LmlkbCBcCiAgICAgJChXZWJDb3JlKS9kb20vVUlFdmVudEluaXQu
aWRsIFwKICAgICAkKFdlYkNvcmUpL2RvbS9XZWJLaXRBbmltYXRpb25FdmVudC5pZGwgXAotICAg
ICQoV2ViQ29yZSkvZG9tL1dlYktpdE5hbWVkRmxvdy5pZGwgXAogICAgICQoV2ViQ29yZSkvZG9t
L1dlYktpdFRyYW5zaXRpb25FdmVudC5pZGwgXAogICAgICQoV2ViQ29yZSkvZG9tL1doZWVsRXZl
bnQuaWRsIFwKICAgICAkKFdlYkNvcmUpL2RvbS9YTUxEb2N1bWVudC5pZGwgXApJbmRleDogU291
cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNj
b25maWcJKHJldmlzaW9uIDIyMjIwNCkKKysrIFNvdXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25z
L0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCSh3b3JraW5nIGNvcHkpCkBAIC03OCw3ICs3OCw2IEBA
IEVOQUJMRV9DU1NfQ09NUE9TSVRJTkcgPSBFTkFCTEVfQ1NTX0NPTVAKIEVOQUJMRV9DU1NfREVW
SUNFX0FEQVBUQVRJT04gPSA7CiBFTkFCTEVfQ1NTX0lNQUdFX09SSUVOVEFUSU9OID0gOwogRU5B
QkxFX0NTU19JTUFHRV9SRVNPTFVUSU9OID0gOwotRU5BQkxFX0NTU19SRUdJT05TID0gOwogRU5B
QkxFX0NTU19TRUxFQ1RPUlNfTEVWRUw0ID0gRU5BQkxFX0NTU19TRUxFQ1RPUlNfTEVWRUw0Owog
RU5BQkxFX0NTUzNfVEVYVCA9IDsKIEVOQUJMRV9DVVJTT1JfVklTSUJJTElUWSA9IEVOQUJMRV9D
VVJTT1JfVklTSUJJTElUWTsKQEAgLTI0Myw0ICsyNDIsNCBAQCBFTkFCTEVfREFUQV9JTlRFUkFD
VElPTl9pcGhvbmVzaW11bGF0b3IgCiBFTkFCTEVfREFUQV9JTlRFUkFDVElPTltzZGs9aXBob25l
b3MxMCpdID0gOwogRU5BQkxFX0RBVEFfSU5URVJBQ1RJT05bc2RrPWlwaG9uZXNpbXVsYXRvcjEw
Kl0gPSA7CiAKLUZFQVRVUkVfREVGSU5FUyA9ICQoRU5BQkxFXzNEX1RSQU5TRk9STVMpICQoRU5B
QkxFX0FDQ0VMRVJBVEVEXzJEX0NBTlZBUykgJChFTkFCTEVfQUNDRUxFUkFURURfT1ZFUkZMT1df
U0NST0xMSU5HKSAkKEVOQUJMRV9BUFBMRV9QQVkpICQoRU5BQkxFX0FQUExFX1BBWV9TRVNTSU9O
X1YzKSAkKEVOQUJMRV9BVFRBQ0hNRU5UX0VMRU1FTlQpICQoRU5BQkxFX0FWRl9DQVBUSU9OUykg
JChFTkFCTEVfQ0FDSEVfUEFSVElUSU9OSU5HKSAkKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORykg
JChFTkFCTEVfQ09OVEVOVF9GSUxURVJJTkcpICQoRU5BQkxFX0NTU19BTklNQVRJT05TX0xFVkVM
XzIpICQoRU5BQkxFX0NTU19CT1hfREVDT1JBVElPTl9CUkVBSykgJChFTkFCTEVfQ1NTX0NPTVBP
U0lUSU5HKSAkKEVOQUJMRV9DU1NfREVWSUNFX0FEQVBUQVRJT04pICQoRU5BQkxFX0NTU19JTUFH
RV9PUklFTlRBVElPTikgJChFTkFCTEVfQ1NTX0lNQUdFX1JFU09MVVRJT04pICQoRU5BQkxFX0NT
U19SRUdJT05TKSAkKEVOQUJMRV9DU1NfU0NST0xMX1NOQVApICQoRU5BQkxFX0NTU19TRUxFQ1RP
UlNfTEVWRUw0KSAkKEVOQUJMRV9DU1NfVFJBSUxJTkdfV09SRCkgJChFTkFCTEVfQ1NTM19URVhU
KSAkKEVOQUJMRV9DVVJTT1JfVklTSUJJTElUWSkgJChFTkFCTEVfQ1VTVE9NX1NDSEVNRV9IQU5E
TEVSKSAkKEVOQUJMRV9EQVNIQk9BUkRfU1VQUE9SVCkgJChFTkFCTEVfREFUQV9JTlRFUkFDVElP
TikgJChFTkFCTEVfREFUQUNVRV9WQUxVRSkgJChFTkFCTEVfREFUQUxJU1RfRUxFTUVOVCkgJChF
TkFCTEVfREVWSUNFX09SSUVOVEFUSU9OKSAkKEVOQUJMRV9EUkFHX1NVUFBPUlQpICQoRU5BQkxF
X0VOQ1JZUFRFRF9NRURJQSkgJChFTkFCTEVfRkFTVF9KSVRfUEVSTUlTU0lPTlMpICQoRU5BQkxF
X0ZJTFRFUlNfTEVWRUxfMikgJChFTkFCTEVfRlRMX0pJVCkgJChFTkFCTEVfRlVMTFNDUkVFTl9B
UEkpICQoRU5BQkxFX0dBTUVQQUQpICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9JQ09O
REFUQUJBU0UpICQoRU5BQkxFX0lOREVYRURfREFUQUJBU0VfSU5fV09SS0VSUykgJChFTkFCTEVf
SU5ERVhFRF9EQVRBQkFTRSkgJChFTkFCTEVfSU5QVVRfVFlQRV9DT0xPUl9QT1BPVkVSKSAkKEVO
QUJMRV9JTlBVVF9UWVBFX0NPTE9SKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEUpICQoRU5BQkxF
X0lOUFVUX1RZUEVfREFURVRJTUVfSU5DT01QTEVURSkgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRF
VElNRUxPQ0FMKSAkKEVOQUJMRV9JTlBVVF9UWVBFX01PTlRIKSAkKEVOQUJMRV9JTlBVVF9UWVBF
X1RJTUUpICQoRU5BQkxFX0lOUFVUX1RZUEVfV0VFSykgJChFTkFCTEVfSU5URVJTRUNUSU9OX09C
U0VSVkVSKSAkKEVOQUJMRV9JTlRMKSAkKEVOQUJMRV9JT1NfR0VTVFVSRV9FVkVOVFMpICQoRU5B
QkxFX0lPU19UT1VDSF9FVkVOVFMpICQoRU5BQkxFX0pJVCkgJChFTkFCTEVfS0VZQk9BUkRfS0VZ
X0FUVFJJQlVURSkgJChFTkFCTEVfS0VZQk9BUkRfQ09ERV9BVFRSSUJVVEUpICQoRU5BQkxFX0xF
R0FDWV9DU1NfVkVORE9SX1BSRUZJWEVTKSAkKEVOQUJMRV9MRUdBQ1lfRU5DUllQVEVEX01FRElB
KSAkKEVOQUJMRV9MRUdBQ1lfVkVORE9SX1BSRUZJWEVTKSAkKEVOQUJMRV9MRVRURVJQUkVTUykg
JChFTkFCTEVfTElOS19QUkVGRVRDSCkgJChFTkFCTEVfTUFDX0dFU1RVUkVfRVZFTlRTKSAkKEVO
QUJMRV9NQVRITUwpICQoRU5BQkxFX01FRElBX0NBUFRVUkUpICQoRU5BQkxFX01FRElBX0NPTlRS
T0xTX1NDUklQVCkgJChFTkFCTEVfTUVESUFfU0VTU0lPTikgJChFTkFCTEVfTUVESUFfU09VUkNF
KSAkKEVOQUJMRV9NRURJQV9TVEFUSVNUSUNTKSAkKEVOQUJMRV9NRURJQV9TVFJFQU0pICQoRU5B
QkxFX01FVEVSX0VMRU1FTlQpICQoRU5BQkxFX01IVE1MKSAkKEVOQUJMRV9NT1VTRV9DVVJTT1Jf
U0NBTEUpICQoRU5BQkxFX05BVklHQVRPUl9DT05URU5UX1VUSUxTKSAkKEVOQUJMRV9OQVZJR0FU
T1JfU1RBTkRBTE9ORSkgJChFTkFCTEVfTk9USUZJQ0FUSU9OUykgJChFTkFCTEVfUEFZTUVOVF9S
RVFVRVNUKSAkKEVOQUJMRV9QREZLSVRfUExVR0lOKSAkKEVOQUJMRV9QT0lOVEVSX0xPQ0spICQo
RU5BQkxFX1BVQkxJQ19TVUZGSVhfTElTVCkgJChFTkFCTEVfUVVPVEEpICQoRU5BQkxFX1JFTU9U
RV9JTlNQRUNUT1IpICQoRU5BQkxFX1JFU09MVVRJT05fTUVESUFfUVVFUlkpICQoRU5BQkxFX1JF
U09VUkNFX1VTQUdFKSAkKEVOQUJMRV9SVUJCRVJfQkFORElORykgJChFTkFCTEVfU0VSVklDRV9D
T05UUk9MUykgJChFTkFCTEVfU0VSVklDRV9XT1JLRVIpICQoRU5BQkxFX1NQRUVDSF9TWU5USEVT
SVMpICQoRU5BQkxFX1NUUkVBTVNfQVBJKSAkKEVOQUJMRV9TVUJUTEVfQ1JZUFRPKSAkKEVOQUJM
RV9TVkdfRk9OVFMpICQoRU5BQkxFX1RFTEVQSE9ORV9OVU1CRVJfREVURUNUSU9OKSAkKEVOQUJM
RV9URVhUX0FVVE9TSVpJTkcpICQoRU5BQkxFX1RPVUNIX0VWRU5UUykgJChFTkFCTEVfVE9VQ0hf
SUNPTl9MT0FESU5HKSAkKEVOQUJMRV9VU0VSU0VMRUNUX0FMTCkgJChFTkFCTEVfVkFSSUFUSU9O
X0ZPTlRTKSAkKEVOQUJMRV9WSURFT19QUkVTRU5UQVRJT05fTU9ERSkgJChFTkFCTEVfTUFDX1ZJ
REVPX1RPT0xCT1gpICQoRU5BQkxFX1ZJREVPX1RSQUNLKSAkKEVOQUJMRV9WSURFTykgJChFTkFC
TEVfV0VCX0FOSU1BVElPTlMpICQoRU5BQkxFX1dFQl9BVURJTykgJChFTkFCTEVfV0VCX1JUQykg
JChFTkFCTEVfV0VCQVNTRU1CTFkpICQoRU5BQkxFX1dFQkdMKSAkKEVOQUJMRV9XRUJHTDIpICQo
RU5BQkxFX1dFQkdQVSkgJChFTkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAkKEVOQUJM
RV9YU0xUKTsKK0ZFQVRVUkVfREVGSU5FUyA9ICQoRU5BQkxFXzNEX1RSQU5TRk9STVMpICQoRU5B
QkxFX0FDQ0VMRVJBVEVEXzJEX0NBTlZBUykgJChFTkFCTEVfQUNDRUxFUkFURURfT1ZFUkZMT1df
U0NST0xMSU5HKSAkKEVOQUJMRV9BUFBMRV9QQVkpICQoRU5BQkxFX0FQUExFX1BBWV9TRVNTSU9O
X1YzKSAkKEVOQUJMRV9BVFRBQ0hNRU5UX0VMRU1FTlQpICQoRU5BQkxFX0FWRl9DQVBUSU9OUykg
JChFTkFCTEVfQ0FDSEVfUEFSVElUSU9OSU5HKSAkKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORykg
JChFTkFCTEVfQ09OVEVOVF9GSUxURVJJTkcpICQoRU5BQkxFX0NTU19BTklNQVRJT05TX0xFVkVM
XzIpICQoRU5BQkxFX0NTU19CT1hfREVDT1JBVElPTl9CUkVBSykgJChFTkFCTEVfQ1NTX0NPTVBP
U0lUSU5HKSAkKEVOQUJMRV9DU1NfREVWSUNFX0FEQVBUQVRJT04pICQoRU5BQkxFX0NTU19JTUFH
RV9PUklFTlRBVElPTikgJChFTkFCTEVfQ1NTX0lNQUdFX1JFU09MVVRJT04pICQoRU5BQkxFX0NT
U19TQ1JPTExfU05BUCkgJChFTkFCTEVfQ1NTX1NFTEVDVE9SU19MRVZFTDQpICQoRU5BQkxFX0NT
U19UUkFJTElOR19XT1JEKSAkKEVOQUJMRV9DU1MzX1RFWFQpICQoRU5BQkxFX0NVUlNPUl9WSVNJ
QklMSVRZKSAkKEVOQUJMRV9DVVNUT01fU0NIRU1FX0hBTkRMRVIpICQoRU5BQkxFX0RBU0hCT0FS
RF9TVVBQT1JUKSAkKEVOQUJMRV9EQVRBX0lOVEVSQUNUSU9OKSAkKEVOQUJMRV9EQVRBQ1VFX1ZB
TFVFKSAkKEVOQUJMRV9EQVRBTElTVF9FTEVNRU5UKSAkKEVOQUJMRV9ERVZJQ0VfT1JJRU5UQVRJ
T04pICQoRU5BQkxFX0RSQUdfU1VQUE9SVCkgJChFTkFCTEVfRU5DUllQVEVEX01FRElBKSAkKEVO
QUJMRV9GQVNUX0pJVF9QRVJNSVNTSU9OUykgJChFTkFCTEVfRklMVEVSU19MRVZFTF8yKSAkKEVO
QUJMRV9GVExfSklUKSAkKEVOQUJMRV9GVUxMU0NSRUVOX0FQSSkgJChFTkFCTEVfR0FNRVBBRCkg
JChFTkFCTEVfR0VPTE9DQVRJT04pICQoRU5BQkxFX0lDT05EQVRBQkFTRSkgJChFTkFCTEVfSU5E
RVhFRF9EQVRBQkFTRV9JTl9XT1JLRVJTKSAkKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFKSAkKEVO
QUJMRV9JTlBVVF9UWVBFX0NPTE9SX1BPUE9WRVIpICQoRU5BQkxFX0lOUFVUX1RZUEVfQ09MT1Ip
ICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURSkgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFVElNRV9J
TkNPTVBMRVRFKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1FTE9DQUwpICQoRU5BQkxFX0lO
UFVUX1RZUEVfTU9OVEgpICQoRU5BQkxFX0lOUFVUX1RZUEVfVElNRSkgJChFTkFCTEVfSU5QVVRf
VFlQRV9XRUVLKSAkKEVOQUJMRV9JTlRFUlNFQ1RJT05fT0JTRVJWRVIpICQoRU5BQkxFX0lOVEwp
ICQoRU5BQkxFX0lPU19HRVNUVVJFX0VWRU5UUykgJChFTkFCTEVfSU9TX1RPVUNIX0VWRU5UUykg
JChFTkFCTEVfSklUKSAkKEVOQUJMRV9LRVlCT0FSRF9LRVlfQVRUUklCVVRFKSAkKEVOQUJMRV9L
RVlCT0FSRF9DT0RFX0FUVFJJQlVURSkgJChFTkFCTEVfTEVHQUNZX0NTU19WRU5ET1JfUFJFRklY
RVMpICQoRU5BQkxFX0xFR0FDWV9FTkNSWVBURURfTUVESUEpICQoRU5BQkxFX0xFR0FDWV9WRU5E
T1JfUFJFRklYRVMpICQoRU5BQkxFX0xFVFRFUlBSRVNTKSAkKEVOQUJMRV9MSU5LX1BSRUZFVENI
KSAkKEVOQUJMRV9NQUNfR0VTVFVSRV9FVkVOVFMpICQoRU5BQkxFX01BVEhNTCkgJChFTkFCTEVf
TUVESUFfQ0FQVFVSRSkgJChFTkFCTEVfTUVESUFfQ09OVFJPTFNfU0NSSVBUKSAkKEVOQUJMRV9N
RURJQV9TRVNTSU9OKSAkKEVOQUJMRV9NRURJQV9TT1VSQ0UpICQoRU5BQkxFX01FRElBX1NUQVRJ
U1RJQ1MpICQoRU5BQkxFX01FRElBX1NUUkVBTSkgJChFTkFCTEVfTUVURVJfRUxFTUVOVCkgJChF
TkFCTEVfTUhUTUwpICQoRU5BQkxFX01PVVNFX0NVUlNPUl9TQ0FMRSkgJChFTkFCTEVfTkFWSUdB
VE9SX0NPTlRFTlRfVVRJTFMpICQoRU5BQkxFX05BVklHQVRPUl9TVEFOREFMT05FKSAkKEVOQUJM
RV9OT1RJRklDQVRJT05TKSAkKEVOQUJMRV9QQVlNRU5UX1JFUVVFU1QpICQoRU5BQkxFX1BERktJ
VF9QTFVHSU4pICQoRU5BQkxFX1BPSU5URVJfTE9DSykgJChFTkFCTEVfUFVCTElDX1NVRkZJWF9M
SVNUKSAkKEVOQUJMRV9RVU9UQSkgJChFTkFCTEVfUkVNT1RFX0lOU1BFQ1RPUikgJChFTkFCTEVf
UkVTT0xVVElPTl9NRURJQV9RVUVSWSkgJChFTkFCTEVfUkVTT1VSQ0VfVVNBR0UpICQoRU5BQkxF
X1JVQkJFUl9CQU5ESU5HKSAkKEVOQUJMRV9TRVJWSUNFX0NPTlRST0xTKSAkKEVOQUJMRV9TRVJW
SUNFX1dPUktFUikgJChFTkFCTEVfU1BFRUNIX1NZTlRIRVNJUykgJChFTkFCTEVfU1RSRUFNU19B
UEkpICQoRU5BQkxFX1NVQlRMRV9DUllQVE8pICQoRU5BQkxFX1NWR19GT05UUykgJChFTkFCTEVf
VEVMRVBIT05FX05VTUJFUl9ERVRFQ1RJT04pICQoRU5BQkxFX1RFWFRfQVVUT1NJWklORykgJChF
TkFCTEVfVE9VQ0hfRVZFTlRTKSAkKEVOQUJMRV9UT1VDSF9JQ09OX0xPQURJTkcpICQoRU5BQkxF
X1VTRVJTRUxFQ1RfQUxMKSAkKEVOQUJMRV9WQVJJQVRJT05fRk9OVFMpICQoRU5BQkxFX1ZJREVP
X1BSRVNFTlRBVElPTl9NT0RFKSAkKEVOQUJMRV9NQUNfVklERU9fVE9PTEJPWCkgJChFTkFCTEVf
VklERU9fVFJBQ0spICQoRU5BQkxFX1ZJREVPKSAkKEVOQUJMRV9XRUJfQU5JTUFUSU9OUykgJChF
TkFCTEVfV0VCX0FVRElPKSAkKEVOQUJMRV9XRUJfUlRDKSAkKEVOQUJMRV9XRUJBU1NFTUJMWSkg
JChFTkFCTEVfV0VCR0wpICQoRU5BQkxFX1dFQkdMMikgJChFTkFCTEVfV0VCR1BVKSAkKEVOQUJM
RV9XSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpICQoRU5BQkxFX1hTTFQpOwpJbmRleDogU291cmNl
L1dlYkNvcmUvUEFML0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9QQUwv
Q2hhbmdlTG9nCShyZXZpc2lvbiAyMjIyNTUpCisrKyBTb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTctMDktMTkgIEFudHRpIEtv
aXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBET00gYW5kIHN0eWxp
bmcgc3VwcG9ydCBmb3IgQ1NTIFJlZ2lvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE3NzIyMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25m
aWc6CisKIDIwMTctMDktMTggIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgogCiAgICAg
ICAgIFtNYWNdIFVwc3RyZWFtIG1pc2NlbGxhbmVvdXMgV2ViS2l0U3lzdGVtSW50ZXJmYWNlIGZ1
bmN0aW9ucwpJbmRleDogU291cmNlL1dlYkNvcmUvUEFML0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVE
ZWZpbmVzLnhjY29uZmlnCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BBTC9Db25maWd1
cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwkocmV2aXNpb24gMjIyMjA0KQorKysgU291
cmNlL1dlYkNvcmUvUEFML0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCSh3
b3JraW5nIGNvcHkpCkBAIC03OCw3ICs3OCw2IEBAIEVOQUJMRV9DU1NfQ09NUE9TSVRJTkcgPSBF
TkFCTEVfQ1NTX0NPTVAKIEVOQUJMRV9DU1NfREVWSUNFX0FEQVBUQVRJT04gPSA7CiBFTkFCTEVf
Q1NTX0lNQUdFX09SSUVOVEFUSU9OID0gOwogRU5BQkxFX0NTU19JTUFHRV9SRVNPTFVUSU9OID0g
OwotRU5BQkxFX0NTU19SRUdJT05TID0gOwogRU5BQkxFX0NTU19TRUxFQ1RPUlNfTEVWRUw0ID0g
RU5BQkxFX0NTU19TRUxFQ1RPUlNfTEVWRUw0OwogRU5BQkxFX0NTUzNfVEVYVCA9IDsKIEVOQUJM
RV9DVVJTT1JfVklTSUJJTElUWSA9IEVOQUJMRV9DVVJTT1JfVklTSUJJTElUWTsKQEAgLTI0Myw0
ICsyNDIsNCBAQCBFTkFCTEVfREFUQV9JTlRFUkFDVElPTl9pcGhvbmVzaW11bGF0b3IgCiBFTkFC
TEVfREFUQV9JTlRFUkFDVElPTltzZGs9aXBob25lb3MxMCpdID0gOwogRU5BQkxFX0RBVEFfSU5U
RVJBQ1RJT05bc2RrPWlwaG9uZXNpbXVsYXRvcjEwKl0gPSA7CiAKLUZFQVRVUkVfREVGSU5FUyA9
ICQoRU5BQkxFXzNEX1RSQU5TRk9STVMpICQoRU5BQkxFX0FDQ0VMRVJBVEVEXzJEX0NBTlZBUykg
JChFTkFCTEVfQUNDRUxFUkFURURfT1ZFUkZMT1dfU0NST0xMSU5HKSAkKEVOQUJMRV9BUFBMRV9Q
QVkpICQoRU5BQkxFX0FQUExFX1BBWV9TRVNTSU9OX1YzKSAkKEVOQUJMRV9BVFRBQ0hNRU5UX0VM
RU1FTlQpICQoRU5BQkxFX0FWRl9DQVBUSU9OUykgJChFTkFCTEVfQ0FDSEVfUEFSVElUSU9OSU5H
KSAkKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORykgJChFTkFCTEVfQ09OVEVOVF9GSUxURVJJTkcp
ICQoRU5BQkxFX0NTU19BTklNQVRJT05TX0xFVkVMXzIpICQoRU5BQkxFX0NTU19CT1hfREVDT1JB
VElPTl9CUkVBSykgJChFTkFCTEVfQ1NTX0NPTVBPU0lUSU5HKSAkKEVOQUJMRV9DU1NfREVWSUNF
X0FEQVBUQVRJT04pICQoRU5BQkxFX0NTU19JTUFHRV9PUklFTlRBVElPTikgJChFTkFCTEVfQ1NT
X0lNQUdFX1JFU09MVVRJT04pICQoRU5BQkxFX0NTU19SRUdJT05TKSAkKEVOQUJMRV9DU1NfU0NS
T0xMX1NOQVApICQoRU5BQkxFX0NTU19TRUxFQ1RPUlNfTEVWRUw0KSAkKEVOQUJMRV9DU1NfVFJB
SUxJTkdfV09SRCkgJChFTkFCTEVfQ1NTM19URVhUKSAkKEVOQUJMRV9DVVJTT1JfVklTSUJJTElU
WSkgJChFTkFCTEVfQ1VTVE9NX1NDSEVNRV9IQU5ETEVSKSAkKEVOQUJMRV9EQVNIQk9BUkRfU1VQ
UE9SVCkgJChFTkFCTEVfREFUQV9JTlRFUkFDVElPTikgJChFTkFCTEVfREFUQUNVRV9WQUxVRSkg
JChFTkFCTEVfREFUQUxJU1RfRUxFTUVOVCkgJChFTkFCTEVfREVWSUNFX09SSUVOVEFUSU9OKSAk
KEVOQUJMRV9EUkFHX1NVUFBPUlQpICQoRU5BQkxFX0VOQ1JZUFRFRF9NRURJQSkgJChFTkFCTEVf
RkFTVF9KSVRfUEVSTUlTU0lPTlMpICQoRU5BQkxFX0ZJTFRFUlNfTEVWRUxfMikgJChFTkFCTEVf
RlRMX0pJVCkgJChFTkFCTEVfRlVMTFNDUkVFTl9BUEkpICQoRU5BQkxFX0dBTUVQQUQpICQoRU5B
QkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9JQ09OREFUQUJBU0UpICQoRU5BQkxFX0lOREVYRURf
REFUQUJBU0VfSU5fV09SS0VSUykgJChFTkFCTEVfSU5ERVhFRF9EQVRBQkFTRSkgJChFTkFCTEVf
SU5QVVRfVFlQRV9DT0xPUl9QT1BPVkVSKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0NPTE9SKSAkKEVO
QUJMRV9JTlBVVF9UWVBFX0RBVEUpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURVRJTUVfSU5DT01Q
TEVURSkgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFVElNRUxPQ0FMKSAkKEVOQUJMRV9JTlBVVF9U
WVBFX01PTlRIKSAkKEVOQUJMRV9JTlBVVF9UWVBFX1RJTUUpICQoRU5BQkxFX0lOUFVUX1RZUEVf
V0VFSykgJChFTkFCTEVfSU5URVJTRUNUSU9OX09CU0VSVkVSKSAkKEVOQUJMRV9JTlRMKSAkKEVO
QUJMRV9JT1NfR0VTVFVSRV9FVkVOVFMpICQoRU5BQkxFX0lPU19UT1VDSF9FVkVOVFMpICQoRU5B
QkxFX0pJVCkgJChFTkFCTEVfS0VZQk9BUkRfS0VZX0FUVFJJQlVURSkgJChFTkFCTEVfS0VZQk9B
UkRfQ09ERV9BVFRSSUJVVEUpICQoRU5BQkxFX0xFR0FDWV9DU1NfVkVORE9SX1BSRUZJWEVTKSAk
KEVOQUJMRV9MRUdBQ1lfRU5DUllQVEVEX01FRElBKSAkKEVOQUJMRV9MRUdBQ1lfVkVORE9SX1BS
RUZJWEVTKSAkKEVOQUJMRV9MRVRURVJQUkVTUykgJChFTkFCTEVfTElOS19QUkVGRVRDSCkgJChF
TkFCTEVfTUFDX0dFU1RVUkVfRVZFTlRTKSAkKEVOQUJMRV9NQVRITUwpICQoRU5BQkxFX01FRElB
X0NBUFRVUkUpICQoRU5BQkxFX01FRElBX0NPTlRST0xTX1NDUklQVCkgJChFTkFCTEVfTUVESUFf
U0VTU0lPTikgJChFTkFCTEVfTUVESUFfU09VUkNFKSAkKEVOQUJMRV9NRURJQV9TVEFUSVNUSUNT
KSAkKEVOQUJMRV9NRURJQV9TVFJFQU0pICQoRU5BQkxFX01FVEVSX0VMRU1FTlQpICQoRU5BQkxF
X01IVE1MKSAkKEVOQUJMRV9NT1VTRV9DVVJTT1JfU0NBTEUpICQoRU5BQkxFX05BVklHQVRPUl9D
T05URU5UX1VUSUxTKSAkKEVOQUJMRV9OQVZJR0FUT1JfU1RBTkRBTE9ORSkgJChFTkFCTEVfTk9U
SUZJQ0FUSU9OUykgJChFTkFCTEVfUEFZTUVOVF9SRVFVRVNUKSAkKEVOQUJMRV9QREZLSVRfUExV
R0lOKSAkKEVOQUJMRV9QT0lOVEVSX0xPQ0spICQoRU5BQkxFX1BVQkxJQ19TVUZGSVhfTElTVCkg
JChFTkFCTEVfUVVPVEEpICQoRU5BQkxFX1JFTU9URV9JTlNQRUNUT1IpICQoRU5BQkxFX1JFU09M
VVRJT05fTUVESUFfUVVFUlkpICQoRU5BQkxFX1JFU09VUkNFX1VTQUdFKSAkKEVOQUJMRV9SVUJC
RVJfQkFORElORykgJChFTkFCTEVfU0VSVklDRV9DT05UUk9MUykgJChFTkFCTEVfU0VSVklDRV9X
T1JLRVIpICQoRU5BQkxFX1NQRUVDSF9TWU5USEVTSVMpICQoRU5BQkxFX1NUUkVBTVNfQVBJKSAk
KEVOQUJMRV9TVUJUTEVfQ1JZUFRPKSAkKEVOQUJMRV9TVkdfRk9OVFMpICQoRU5BQkxFX1RFTEVQ
SE9ORV9OVU1CRVJfREVURUNUSU9OKSAkKEVOQUJMRV9URVhUX0FVVE9TSVpJTkcpICQoRU5BQkxF
X1RPVUNIX0VWRU5UUykgJChFTkFCTEVfVE9VQ0hfSUNPTl9MT0FESU5HKSAkKEVOQUJMRV9VU0VS
U0VMRUNUX0FMTCkgJChFTkFCTEVfVkFSSUFUSU9OX0ZPTlRTKSAkKEVOQUJMRV9WSURFT19QUkVT
RU5UQVRJT05fTU9ERSkgJChFTkFCTEVfTUFDX1ZJREVPX1RPT0xCT1gpICQoRU5BQkxFX1ZJREVP
X1RSQUNLKSAkKEVOQUJMRV9WSURFTykgJChFTkFCTEVfV0VCX0FOSU1BVElPTlMpICQoRU5BQkxF
X1dFQl9BVURJTykgJChFTkFCTEVfV0VCX1JUQykgJChFTkFCTEVfV0VCQVNTRU1CTFkpICQoRU5B
QkxFX1dFQkdMKSAkKEVOQUJMRV9XRUJHTDIpICQoRU5BQkxFX1dFQkdQVSkgJChFTkFCTEVfV0lS
RUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAkKEVOQUJMRV9YU0xUKTsKK0ZFQVRVUkVfREVGSU5FUyA9
ICQoRU5BQkxFXzNEX1RSQU5TRk9STVMpICQoRU5BQkxFX0FDQ0VMRVJBVEVEXzJEX0NBTlZBUykg
JChFTkFCTEVfQUNDRUxFUkFURURfT1ZFUkZMT1dfU0NST0xMSU5HKSAkKEVOQUJMRV9BUFBMRV9Q
QVkpICQoRU5BQkxFX0FQUExFX1BBWV9TRVNTSU9OX1YzKSAkKEVOQUJMRV9BVFRBQ0hNRU5UX0VM
RU1FTlQpICQoRU5BQkxFX0FWRl9DQVBUSU9OUykgJChFTkFCTEVfQ0FDSEVfUEFSVElUSU9OSU5H
KSAkKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORykgJChFTkFCTEVfQ09OVEVOVF9GSUxURVJJTkcp
ICQoRU5BQkxFX0NTU19BTklNQVRJT05TX0xFVkVMXzIpICQoRU5BQkxFX0NTU19CT1hfREVDT1JB
VElPTl9CUkVBSykgJChFTkFCTEVfQ1NTX0NPTVBPU0lUSU5HKSAkKEVOQUJMRV9DU1NfREVWSUNF
X0FEQVBUQVRJT04pICQoRU5BQkxFX0NTU19JTUFHRV9PUklFTlRBVElPTikgJChFTkFCTEVfQ1NT
X0lNQUdFX1JFU09MVVRJT04pICQoRU5BQkxFX0NTU19TQ1JPTExfU05BUCkgJChFTkFCTEVfQ1NT
X1NFTEVDVE9SU19MRVZFTDQpICQoRU5BQkxFX0NTU19UUkFJTElOR19XT1JEKSAkKEVOQUJMRV9D
U1MzX1RFWFQpICQoRU5BQkxFX0NVUlNPUl9WSVNJQklMSVRZKSAkKEVOQUJMRV9DVVNUT01fU0NI
RU1FX0hBTkRMRVIpICQoRU5BQkxFX0RBU0hCT0FSRF9TVVBQT1JUKSAkKEVOQUJMRV9EQVRBX0lO
VEVSQUNUSU9OKSAkKEVOQUJMRV9EQVRBQ1VFX1ZBTFVFKSAkKEVOQUJMRV9EQVRBTElTVF9FTEVN
RU5UKSAkKEVOQUJMRV9ERVZJQ0VfT1JJRU5UQVRJT04pICQoRU5BQkxFX0RSQUdfU1VQUE9SVCkg
JChFTkFCTEVfRU5DUllQVEVEX01FRElBKSAkKEVOQUJMRV9GQVNUX0pJVF9QRVJNSVNTSU9OUykg
JChFTkFCTEVfRklMVEVSU19MRVZFTF8yKSAkKEVOQUJMRV9GVExfSklUKSAkKEVOQUJMRV9GVUxM
U0NSRUVOX0FQSSkgJChFTkFCTEVfR0FNRVBBRCkgJChFTkFCTEVfR0VPTE9DQVRJT04pICQoRU5B
QkxFX0lDT05EQVRBQkFTRSkgJChFTkFCTEVfSU5ERVhFRF9EQVRBQkFTRV9JTl9XT1JLRVJTKSAk
KEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0NPTE9SX1BPUE9W
RVIpICQoRU5BQkxFX0lOUFVUX1RZUEVfQ09MT1IpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURSkg
JChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFVElNRV9JTkNPTVBMRVRFKSAkKEVOQUJMRV9JTlBVVF9U
WVBFX0RBVEVUSU1FTE9DQUwpICQoRU5BQkxFX0lOUFVUX1RZUEVfTU9OVEgpICQoRU5BQkxFX0lO
UFVUX1RZUEVfVElNRSkgJChFTkFCTEVfSU5QVVRfVFlQRV9XRUVLKSAkKEVOQUJMRV9JTlRFUlNF
Q1RJT05fT0JTRVJWRVIpICQoRU5BQkxFX0lOVEwpICQoRU5BQkxFX0lPU19HRVNUVVJFX0VWRU5U
UykgJChFTkFCTEVfSU9TX1RPVUNIX0VWRU5UUykgJChFTkFCTEVfSklUKSAkKEVOQUJMRV9LRVlC
T0FSRF9LRVlfQVRUUklCVVRFKSAkKEVOQUJMRV9LRVlCT0FSRF9DT0RFX0FUVFJJQlVURSkgJChF
TkFCTEVfTEVHQUNZX0NTU19WRU5ET1JfUFJFRklYRVMpICQoRU5BQkxFX0xFR0FDWV9FTkNSWVBU
RURfTUVESUEpICQoRU5BQkxFX0xFR0FDWV9WRU5ET1JfUFJFRklYRVMpICQoRU5BQkxFX0xFVFRF
UlBSRVNTKSAkKEVOQUJMRV9MSU5LX1BSRUZFVENIKSAkKEVOQUJMRV9NQUNfR0VTVFVSRV9FVkVO
VFMpICQoRU5BQkxFX01BVEhNTCkgJChFTkFCTEVfTUVESUFfQ0FQVFVSRSkgJChFTkFCTEVfTUVE
SUFfQ09OVFJPTFNfU0NSSVBUKSAkKEVOQUJMRV9NRURJQV9TRVNTSU9OKSAkKEVOQUJMRV9NRURJ
QV9TT1VSQ0UpICQoRU5BQkxFX01FRElBX1NUQVRJU1RJQ1MpICQoRU5BQkxFX01FRElBX1NUUkVB
TSkgJChFTkFCTEVfTUVURVJfRUxFTUVOVCkgJChFTkFCTEVfTUhUTUwpICQoRU5BQkxFX01PVVNF
X0NVUlNPUl9TQ0FMRSkgJChFTkFCTEVfTkFWSUdBVE9SX0NPTlRFTlRfVVRJTFMpICQoRU5BQkxF
X05BVklHQVRPUl9TVEFOREFMT05FKSAkKEVOQUJMRV9OT1RJRklDQVRJT05TKSAkKEVOQUJMRV9Q
QVlNRU5UX1JFUVVFU1QpICQoRU5BQkxFX1BERktJVF9QTFVHSU4pICQoRU5BQkxFX1BPSU5URVJf
TE9DSykgJChFTkFCTEVfUFVCTElDX1NVRkZJWF9MSVNUKSAkKEVOQUJMRV9RVU9UQSkgJChFTkFC
TEVfUkVNT1RFX0lOU1BFQ1RPUikgJChFTkFCTEVfUkVTT0xVVElPTl9NRURJQV9RVUVSWSkgJChF
TkFCTEVfUkVTT1VSQ0VfVVNBR0UpICQoRU5BQkxFX1JVQkJFUl9CQU5ESU5HKSAkKEVOQUJMRV9T
RVJWSUNFX0NPTlRST0xTKSAkKEVOQUJMRV9TRVJWSUNFX1dPUktFUikgJChFTkFCTEVfU1BFRUNI
X1NZTlRIRVNJUykgJChFTkFCTEVfU1RSRUFNU19BUEkpICQoRU5BQkxFX1NVQlRMRV9DUllQVE8p
ICQoRU5BQkxFX1NWR19GT05UUykgJChFTkFCTEVfVEVMRVBIT05FX05VTUJFUl9ERVRFQ1RJT04p
ICQoRU5BQkxFX1RFWFRfQVVUT1NJWklORykgJChFTkFCTEVfVE9VQ0hfRVZFTlRTKSAkKEVOQUJM
RV9UT1VDSF9JQ09OX0xPQURJTkcpICQoRU5BQkxFX1VTRVJTRUxFQ1RfQUxMKSAkKEVOQUJMRV9W
QVJJQVRJT05fRk9OVFMpICQoRU5BQkxFX1ZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSAkKEVOQUJM
RV9NQUNfVklERU9fVE9PTEJPWCkgJChFTkFCTEVfVklERU9fVFJBQ0spICQoRU5BQkxFX1ZJREVP
KSAkKEVOQUJMRV9XRUJfQU5JTUFUSU9OUykgJChFTkFCTEVfV0VCX0FVRElPKSAkKEVOQUJMRV9X
RUJfUlRDKSAkKEVOQUJMRV9XRUJBU1NFTUJMWSkgJChFTkFCTEVfV0VCR0wpICQoRU5BQkxFX1dF
QkdMMikgJChFTkFCTEVfV0VCR1BVKSAkKEVOQUJMRV9XSVJFTEVTU19QTEFZQkFDS19UQVJHRVQp
ICQoRU5BQkxFX1hTTFQpOwpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjIyMjA0KQorKysgU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0y
NTI4LDEyICsyNTI4LDYgQEAKIAkJNTJCMEQ0QkUxQzU3RkQxRTAwNzdDRTUzIC8qIFBsYXRmb3Jt
Vmlldy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTJC
MEQ0QkQxQzU3RkQxRTAwNzdDRTUzIC8qIFBsYXRmb3JtVmlldy5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUyQjBENEMwMUM1N0ZENjYwMDc3Q0U1
MyAvKiBWaWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTJCMEQ0QkYxQzU3RkQ2NjAwNzdDRTUzIC8qIFZp
ZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTJCMEQ0QzIxQzU3RkY5MTAwNzdDRTUzIC8qIFZpZGVv
RnVsbHNjcmVlbkludGVyZmFjZU1hYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTJCMEQ0QzExQzU3RkY5MTAwNzdDRTUzIC8qIFZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZU1hYy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07Ci0JCTUyQjZDOUMyMTVFM0Y0REYwMDY5MEIwNSAvKiBET01OYW1lZEZsb3dDb2xsZWN0
aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUy
QjZDOUJEMTVFM0Y0REYwMDY5MEIwNSAvKiBET01OYW1lZEZsb3dDb2xsZWN0aW9uLmNwcCAqLzsg
fTsKLQkJNTJCNkM5QzMxNUUzRjRERjAwNjkwQjA1IC8qIERPTU5hbWVkRmxvd0NvbGxlY3Rpb24u
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyQjZDOUJF
MTVFM0Y0REYwMDY5MEIwNSAvKiBET01OYW1lZEZsb3dDb2xsZWN0aW9uLmggKi87IH07Ci0JCTUy
QjZDOUM1MTVFM0Y0REYwMDY5MEIwNSAvKiBOYW1lZEZsb3dDb2xsZWN0aW9uLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyQjZDOUMwMTVFM0Y0REYw
MDY5MEIwNSAvKiBOYW1lZEZsb3dDb2xsZWN0aW9uLmNwcCAqLzsgfTsKLQkJNTJCNkM5QzYxNUUz
RjRERjAwNjkwQjA1IC8qIE5hbWVkRmxvd0NvbGxlY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyQjZDOUMxMTVFM0Y0REYwMDY5MEIwNSAvKiBO
YW1lZEZsb3dDb2xsZWN0aW9uLmggKi87IH07Ci0JCTUyQ0NBOUUyMTVFM0Y2MkMwMDUzQzc3RiAv
KiBKU0RPTU5hbWVkRmxvd0NvbGxlY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTJDQ0E5RTAxNUUzRjYyQzAwNTNDNzdGIC8qIEpTRE9NTmFt
ZWRGbG93Q29sbGVjdGlvbi5jcHAgKi87IH07Ci0JCTUyQ0NBOUUzMTVFM0Y2MkMwMDUzQzc3RiAv
KiBKU0RPTU5hbWVkRmxvd0NvbGxlY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUyQ0NBOUUxMTVFM0Y2MkMwMDUzQzc3RiAvKiBKU0RPTU5hbWVk
Rmxvd0NvbGxlY3Rpb24uaCAqLzsgfTsKIAkJNTJENUExOEYxQzU0NTkyMzAwREUzNEEzIC8qIFZp
ZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUyRDVBMThEMUM1NDU5MDMwMERFMzRBMyAvKiBWaWRlb0Z1bGxz
Y3JlZW5MYXllck1hbmFnZXIubW0gKi87IH07CiAJCTUyRDVBMUE3MUM1NzQ4OUQwMERFMzRBMyAv
KiBWaWRlb0Z1bGxzY3JlZW5Nb2RlbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTJENUExQTQxQzU3NDg4OTAwREUzNEEzIC8qIFZpZGVvRnVsbHNjcmVl
bk1vZGVsLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJNTJENUExQTgxQzU3NDhBMzAwREUzNEEzIC8qIFZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9F
bGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MkQ1QTFBNTFDNTc0ODg5MDBERTM0QTMgLyogVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1l
bnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAt
MjkzMSw3ICsyOTI1LDYgQEAKIAkJNkM0Qzk2REYxQUQ0NDgzNTAwMzY1QTUwIC8qIEpTUmVhZGFi
bGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNkM0Qzk2REIxQUQ0NDgzNTAwMzY1QTUwIC8qIEpTUmVhZGFibGVT
dHJlYW1EZWZhdWx0Q29udHJvbGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTZDNjM4ODk1QTk2Q0NFRTUwQzhDOTQ2QyAvKiBDYWNoZWRSZXNv
dXJjZVJlcXVlc3RJbml0aWF0b3JzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA2QzYzODg5M0E5NkNDRUU1MEM4Qzk0NkMgLyogQ2FjaGVkUmVzb3VyY2VS
ZXF1ZXN0SW5pdGlhdG9ycy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTZDNjM4ODk2QTk2Q0NFRTUwQzhDOTQ2QyAvKiBDYWNoZWRSZXNvdXJjZVJl
cXVlc3RJbml0aWF0b3JzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDZDNjM4ODk0QTk2Q0NFRTUwQzhDOTQ2QyAvKiBDYWNoZWRSZXNvdXJjZVJlcXVl
c3RJbml0aWF0b3JzLmNwcCAqLzsgfTsKLQkJNkNEREU4RDAxNzcwQkIyMjAwMTZFMDcyIC8qIFJl
Z2lvbk92ZXJzZXRTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNkM3MEE4MTQxNzcwN0M0OTAwOUE0NDZFIC8qIFJlZ2lvbk92ZXJzZXRTdGF0ZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTZFMEU1
NjlCMTgzQkZGRTYwMEUwRThENSAvKiBGbG9hdFJvdW5kZWRSZWN0LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFMEU1Njk5MTgzQkZGRTYwMEUwRThE
NSAvKiBGbG9hdFJvdW5kZWRSZWN0LmNwcCAqLzsgfTsKIAkJNkUwRTU2OUMxODNCRkZFNjAwRTBF
OEQ1IC8qIEZsb2F0Um91bmRlZFJlY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDZFMEU1NjlBMTgzQkZGRTYwMEUwRThENSAvKiBGbG9hdFJvdW5kZWRS
ZWN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
NkUyMUM2QzAxMTI2MzM4NTAwQTdCRTAyIC8qIEdyYXBoaWNzQ29udGV4dDNELmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFMjFDNkJGMTEyNjMzODUw
MEE3QkUwMiAvKiBHcmFwaGljc0NvbnRleHQzRC5jcHAgKi87IH07CkBAIC0zNzYwLDEzICszNzUz
LDkgQEAKIAkJOEE5QTU4NzExMUU4NEMzNjAwOEFDRkQxIC8qIEpTUGVyZm9ybWFuY2VOYXZpZ2F0
aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4QTlB
NTg2RjExRTg0QzM2MDA4QUNGRDEgLyogSlNQZXJmb3JtYW5jZU5hdmlnYXRpb24uaCAqLzsgfTsK
IAkJOEE5QTU4NzUxMUU4NEM4MTAwOEFDRkQxIC8qIEpTUGVyZm9ybWFuY2UuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDhBOUE1ODczMTFFODRDODEwMDhB
Q0ZEMSAvKiBKU1BlcmZvcm1hbmNlLmggKi87IH07CiAJCThBOUE1ODg4MTFFODRGMzcwMDhBQ0ZE
MSAvKiBKU1BlcmZvcm1hbmNlVGltaW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4QTlBNTg3NzExRTg0Qzk4MDA4QUNGRDEgLyogSlNQZXJmb3JtYW5j
ZVRpbWluZy5oICovOyB9OwotCQk4QUE2MUNGRjE0NEQ1OTVCMDBGMzczNTAgLyogV2ViS2l0Q1NT
UmVnaW9uUnVsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA4QUE2MUNGRDE0NEQ1OTVCMDBGMzczNTAgLyogV2ViS2l0Q1NTUmVnaW9uUnVsZS5jcHAg
Ki87IH07Ci0JCThBQTYxRDAwMTQ0RDU5NUIwMEYzNzM1MCAvKiBXZWJLaXRDU1NSZWdpb25SdWxl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4QUE2MUNG
RTE0NEQ1OTVCMDBGMzczNTAgLyogV2ViS2l0Q1NTUmVnaW9uUnVsZS5oICovOyB9OwogCQk4QUI0
QkM3NzEyNkZEQjcxMDBERUI3MjcgLyogSWdub3JlRGVzdHJ1Y3RpdmVXcml0ZUNvdW50SW5jcmVt
ZW50ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDhB
QjRCQzc2MTI2RkRCNzEwMERFQjcyNyAvKiBJZ25vcmVEZXN0cnVjdGl2ZVdyaXRlQ291bnRJbmNy
ZW1lbnRlci5oICovOyB9OwogCQk4QUM4MjJGQzE4MEZDMDMzMDBGQjY0RDUgLyogUmVuZGVyTmFt
ZWRGbG93RnJhZ21lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOEFDODIyRkExODBGQzAzMzAwRkI2NEQ1IC8qIFJlbmRlck5hbWVkRmxvd0ZyYWdt
ZW50LmNwcCAqLzsgfTsKIAkJOEFDODIyRkQxODBGQzAzMzAwRkI2NEQ1IC8qIFJlbmRlck5hbWVk
Rmxvd0ZyYWdtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA4QUM4MjJGQjE4MEZDMDMzMDBGQjY0RDUgLyogUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQu
aCAqLzsgfTsKLQkJOEFEMEE1OTQxNEM4ODMzNjAwMEQ4M0M1IC8qIEpTV2ViS2l0Q1NTUmVnaW9u
UnVsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
QUNDMjRDRDE0OEUyNEIyMDBFRkNDMEQgLyogSlNXZWJLaXRDU1NSZWdpb25SdWxlLmNwcCAqLzsg
fTsKLQkJOEFEMEE1OTUxNEM4ODMzNjAwMEQ4M0M1IC8qIEpTV2ViS2l0Q1NTUmVnaW9uUnVsZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOEFDQzI0Q0Ux
NDhFMjRCMjAwRUZDQzBEIC8qIEpTV2ViS2l0Q1NTUmVnaW9uUnVsZS5oICovOyB9OwogCQk4QUY0
RTU1NTExREM1QTM2MDAwRUQzREUgLyogUGVyZm9ybWFuY2VOYXZpZ2F0aW9uLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDhBRjRFNTUyMTFEQzVBMzYw
MDBFRDNERSAvKiBQZXJmb3JtYW5jZU5hdmlnYXRpb24uY3BwICovOyB9OwogCQk4QUY0RTU1NjEx
REM1QTM2MDAwRUQzREUgLyogUGVyZm9ybWFuY2VOYXZpZ2F0aW9uLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4QUY0RTU1MzExREM1QTM2MDAwRUQzREUg
LyogUGVyZm9ybWFuY2VOYXZpZ2F0aW9uLmggKi87IH07CiAJCThBRjRFNTVDMTFEQzVBNjMwMDBF
RDNERSAvKiBQZXJmb3JtYW5jZVRpbWluZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOEFGNEU1NTkxMURDNUE2MzAwMEVEM0RFIC8qIFBlcmZvcm1hbmNl
VGltaW5nLmggKi87IH07CkBAIC02NTk5LDggKzY1ODgsNiBAQAogCQlENzBBRDY1ODEzRTEzNDJC
MDA1QjUwQjQgLyogUmVuZGVyUmVnaW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBENzBBRDY1NjEzRTEzNDJCMDA1QjUwQjQgLyogUmVuZGVyUmVnaW9u
LmggKi87IH07CiAJCUQ3MkY2RDc5MTUzMTU5QTMwMDFFRTQ0RSAvKiBGbG93VGhyZWFkQ29udHJv
bGxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBE
NzJGNkQ3NzE1MzE1OUEzMDAxRUU0NEUgLyogRmxvd1RocmVhZENvbnRyb2xsZXIuY3BwICovOyB9
OwogCQlENzJGNkQ3QTE1MzE1OUEzMDAxRUU0NEUgLyogRmxvd1RocmVhZENvbnRyb2xsZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEQ3MkY2RDc4MTUz
MTU5QTMwMDFFRTQ0RSAvKiBGbG93VGhyZWFkQ29udHJvbGxlci5oICovOyB9OwotCQlENzYxM0E1
MDE0NzRGMTNGMDBEQjg2MDYgLyogV2ViS2l0TmFtZWRGbG93LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEQ3NjEzQTRFMTQ3NEYxM0YwMERCODYwNiAv
KiBXZWJLaXROYW1lZEZsb3cuY3BwICovOyB9OwotCQlENzYxM0FDNDE0NzUzRTU2MDBEQjg2MDYg
LyogSlNXZWJLaXROYW1lZEZsb3cuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRDc2MTNBQzIxNDc1M0U1NjAwREI4NjA2IC8qIEpTV2ViS2l0TmFtZWRG
bG93LmNwcCAqLzsgfTsKIAkJRDhCNjE1MkYxMDMyNDk1MTAwQzg1NTRBIC8qIENvb2tpZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRDhCNjE1MkUxMDMy
NDk1MTAwQzg1NTRBIC8qIENvb2tpZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCURBRUQyMDMwMTZGMjQ0MkIwMDcwRUMwRiAvKiBQYWdlQ29uc29s
ZUNsaWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBEQUFDQjNEOTE2RjI0MTY0MDA2NjYxMzUgLyogUGFnZUNvbnNvbGVDbGllbnQuY3BwICovOyB9
OwogCQlEQUVEMjAzMTE2RjI0NDQ4MDA3MEVDMEYgLyogUGFnZUNvbnNvbGVDbGllbnQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERBQUNCM0RBMTZGMjQx
NjQwMDY2NjEzNSAvKiBQYWdlQ29uc29sZUNsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMDQ0OSwxMyArMTA0MzYsNiBAQAogCQk1MkIw
RDRCRDFDNTdGRDFFMDA3N0NFNTMgLyogUGxhdGZvcm1WaWV3LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFBsYXRmb3JtVmlldy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1MkIwRDRCRjFDNTdGRDY2MDA3N0NFNTMgLyogVmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2Jz
ZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmlkZW9GdWxsc2NyZWVu
Q2hhbmdlT2JzZXJ2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTJCMEQ0QzEx
QzU3RkY5MTAwNzdDRTUzIC8qIFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTJCNkM5QkQxNUUzRjRERjAwNjkwQjA1IC8q
IERPTU5hbWVkRmxvd0NvbGxlY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gRE9NTmFtZWRGbG93Q29sbGVjdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCTUyQjZDOUJFMTVFM0Y0REYwMDY5MEIwNSAvKiBET01OYW1lZEZsb3dDb2xsZWN0
aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTU5hbWVkRmxvd0NvbGxl
Y3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTJCNkM5QkYxNUUzRjRERjAw
NjkwQjA1IC8qIERPTU5hbWVkRmxvd0NvbGxlY3Rpb24uaWRsICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0
aCA9IERPTU5hbWVkRmxvd0NvbGxlY3Rpb24uaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQk1MkI2QzlDMDE1RTNGNERGMDA2OTBCMDUgLyogTmFtZWRGbG93Q29sbGVjdGlvbi5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOYW1lZEZsb3dDb2xsZWN0aW9u
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTJCNkM5QzExNUUzRjRERjAwNjkw
QjA1IC8qIE5hbWVkRmxvd0NvbGxlY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gTmFtZWRGbG93Q29sbGVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQk1MkNDQTlFMDE1RTNGNjJDMDA1M0M3N0YgLyogSlNET01OYW1lZEZsb3dDb2xsZWN0aW9uLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRE9NTmFtZWRGbG93Q29s
bGVjdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUyQ0NBOUUxMTVFM0Y2
MkMwMDUzQzc3RiAvKiBKU0RPTU5hbWVkRmxvd0NvbGxlY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSlNET01OYW1lZEZsb3dDb2xsZWN0aW9uLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTUyRDVBMThEMUM1NDU5MDMwMERFMzRBMyAvKiBWaWRlb0Z1bGxz
Y3JlZW5MYXllck1hbmFnZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBWaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTUyRDVBMThFMUM1NDU5MDMwMERFMzRBMyAvKiBWaWRlb0Z1bGxzY3JlZW5MYXll
ck1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmlkZW9GdWxsc2Ny
ZWVuTGF5ZXJNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUyRDVBMUE0
MUM1NzQ4ODkwMERFMzRBMyAvKiBWaWRlb0Z1bGxzY3JlZW5Nb2RlbC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBWaWRlb0Z1bGxzY3JlZW5Nb2RlbC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMTA5MTgsNyArMTA4OTgsNiBAQAogCQk2QzRDOTZEQjFBRDQ0ODM1
MDAzNjVBNTAgLyogSlNSZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2QzYzODg5M0E5NkNDRUU1MEM4Qzk0
NkMgLyogQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2QzYzODg5NEE5NkNDRUU1MEM4Qzk0NkMgLyogQ2Fj
aGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTZDNzBBODE0MTc3MDdDNDkwMDlBNDQ2RSAvKiBSZWdp
b25PdmVyc2V0U3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnaW9u
T3ZlcnNldFN0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZFMEU1Njk5MTgz
QkZGRTYwMEUwRThENSAvKiBGbG9hdFJvdW5kZWRSZWN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEZsb2F0Um91bmRlZFJlY3QuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk2RTBFNTY5QTE4M0JGRkU2MDBFMEU4RDUgLyogRmxvYXRSb3VuZGVkUmVj
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGbG9hdFJvdW5kZWRSZWN0Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZFMjFDNkJGMTEyNjMzODUwMEE3QkUwMiAv
KiBHcmFwaGljc0NvbnRleHQzRC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBHcmFwaGljc0NvbnRleHQzRC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC0xMjEyNywxNCArMTIxMDYsOSBAQAogCQk4QTlBNTg2RjExRTg0QzM2MDA4QUNGRDEgLyogSlNQ
ZXJmb3JtYW5jZU5hdmlnYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SlNQZXJmb3JtYW5jZU5hdmlnYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
OEE5QTU4NzMxMUU4NEM4MTAwOEFDRkQxIC8qIEpTUGVyZm9ybWFuY2UuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSlNQZXJmb3JtYW5jZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk4QTlBNTg3NzExRTg0Qzk4MDA4QUNGRDEgLyogSlNQZXJmb3JtYW5jZVRpbWlu
Zy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1BlcmZvcm1hbmNlVGltaW5n
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCThBQTYxQ0ZEMTQ0RDU5NUIwMEYzNzM1
MCAvKiBXZWJLaXRDU1NSZWdpb25SdWxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFdlYktpdENTU1JlZ2lvblJ1bGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQk4QUE2MUNGRTE0NEQ1OTVCMDBGMzczNTAgLyogV2ViS2l0Q1NTUmVnaW9uUnVsZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJLaXRDU1NSZWdpb25SdWxlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCThBQjRCQzc2MTI2RkRCNzEwMERFQjcyNyAv
KiBJZ25vcmVEZXN0cnVjdGl2ZVdyaXRlQ291bnRJbmNyZW1lbnRlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBJZ25vcmVEZXN0cnVjdGl2ZVdyaXRlQ291bnRJbmNyZW1lbnRl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4QUM4MjJGQTE4MEZDMDMzMDBGQjY0
RDUgLyogUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk4QUM4MjJGQjE4MEZDMDMzMDBGQjY0RDUgLyogUmVuZGVyTmFtZWRG
bG93RnJhZ21lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyTmFt
ZWRGbG93RnJhZ21lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJOEFDQzI0Q0Qx
NDhFMjRCMjAwRUZDQzBEIC8qIEpTV2ViS2l0Q1NTUmVnaW9uUnVsZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1dlYktpdENTU1JlZ2lvblJ1bGUuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4QUNDMjRDRTE0OEUyNEIyMDBFRkNDMEQgLyogSlNX
ZWJLaXRDU1NSZWdpb25SdWxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpT
V2ViS2l0Q1NTUmVnaW9uUnVsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4QUQw
QTU1NjE0Qzg3NDI1MDAwRDgzQzUgLyogV2ViS2l0Q1NTUmVnaW9uUnVsZS5pZGwgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0OyBwYXRoID0gV2ViS2l0Q1NTUmVnaW9uUnVsZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCThBRjRFNTUyMTFEQzVBMzYwMDBFRDNERSAvKiBQZXJmb3JtYW5jZU5hdmln
YXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGVyZm9ybWFu
Y2VOYXZpZ2F0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOEFGNEU1NTMx
MURDNUEzNjAwMEVEM0RFIC8qIFBlcmZvcm1hbmNlTmF2aWdhdGlvbi5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBQZXJmb3JtYW5jZU5hdmlnYXRpb24uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJOEFGNEU1NTQxMURDNUEzNjAwMEVEM0RFIC8qIFBlcmZvcm1hbmNl
TmF2aWdhdGlvbi5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUGVyZm9ybWFuY2VOYXZpZ2F0
aW9uLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE1Mzk3LDExICsxNTM3MSw2
IEBACiAJCUQ3MEFENjU2MTNFMTM0MkIwMDVCNTBCNCAvKiBSZW5kZXJSZWdpb24uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyUmVnaW9uLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUQ3MkY2RDc3MTUzMTU5QTMwMDFFRTQ0RSAvKiBGbG93VGhyZWFkQ29u
dHJvbGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGbG93VGhy
ZWFkQ29udHJvbGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQ3MkY2RDc4
MTUzMTU5QTMwMDFFRTQ0RSAvKiBGbG93VGhyZWFkQ29udHJvbGxlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBGbG93VGhyZWFkQ29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQlENzYxM0E0QTE0NzRFRTk1MDBEQjg2MDYgLyogV2ViS2l0TmFtZWRG
bG93LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJLaXROYW1lZEZsb3cuaWRsOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlENzYxM0E0RDE0NzRGMTNGMDBEQjg2MDYgLyogV2Vi
S2l0TmFtZWRGbG93LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYktpdE5h
bWVkRmxvdy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlENzYxM0E0RTE0NzRGMTNG
MDBEQjg2MDYgLyogV2ViS2l0TmFtZWRGbG93LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFdlYktpdE5hbWVkRmxvdy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCUQ3NjEzQUMyMTQ3NTNFNTYwMERCODYwNiAvKiBKU1dlYktpdE5hbWVkRmxvdy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1dlYktpdE5hbWVkRmxvdy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQ3NjEzQUMzMTQ3NTNFNTYwMERCODYw
NiAvKiBKU1dlYktpdE5hbWVkRmxvdy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBKU1dlYktpdE5hbWVkRmxvdy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEOEI2
MTUyRTEwMzI0OTUxMDBDODU1NEEgLyogQ29va2llLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IENvb2tpZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEQUFDQjNE
OTE2RjI0MTY0MDA2NjYxMzUgLyogUGFnZUNvbnNvbGVDbGllbnQuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGFnZUNvbnNvbGVDbGllbnQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlEQUFDQjNEQTE2RjI0MTY0MDA2NjYxMzUgLyogUGFnZUNvbnNv
bGVDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGFnZUNvbnNvbGVD
bGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIyNjM4LDggKzIyNjA3LDYg
QEAKIAkJCQlBODRFQkQ4MTBDQjhDOTc3MDAwNzk2MDkgLyogSlNTdHlsZVNoZWV0TGlzdC5oICov
LAogCQkJCTQ5ODM5MTNEMEYxRTc2NzUwMEMyMzc4MiAvKiBKU1dlYktpdENTU01hdHJpeC5jcHAg
Ki8sCiAJCQkJNDk4MzkxM0UwRjFFNzY3NTAwQzIzNzgyIC8qIEpTV2ViS2l0Q1NTTWF0cml4Lmgg
Ki8sCi0JCQkJOEFDQzI0Q0QxNDhFMjRCMjAwRUZDQzBEIC8qIEpTV2ViS2l0Q1NTUmVnaW9uUnVs
ZS5jcHAgKi8sCi0JCQkJOEFDQzI0Q0UxNDhFMjRCMjAwRUZDQzBEIC8qIEpTV2ViS2l0Q1NTUmVn
aW9uUnVsZS5oICovLAogCQkJCTNGMkIzM0U5MTY1QUYxNTUwMEUzOTg3QyAvKiBKU1dlYktpdENT
U1ZpZXdwb3J0UnVsZS5jcHAgKi8sCiAJCQkJM0YyQjMzRUExNjVBRjE1NTAwRTM5ODdDIC8qIEpT
V2ViS2l0Q1NTVmlld3BvcnRSdWxlLmggKi8sCiAJCQkpOwpAQCAtMjI2NzksOCArMjI2NDYsNiBA
QAogCQkJCUJDNjBEN0JGMEQyOUE0NjMwMEI5OTE4RiAvKiBKU0RPTUV4Y2VwdGlvbi5oICovLAog
CQkJCTY1REYzMUUzMDlEMUNDNjAwMDBCRTMyNSAvKiBKU0RPTUltcGxlbWVudGF0aW9uLmNwcCAq
LywKIAkJCQk2NURGMzFFNDA5RDFDQzYwMDAwQkUzMjUgLyogSlNET01JbXBsZW1lbnRhdGlvbi5o
ICovLAotCQkJCTUyQ0NBOUUwMTVFM0Y2MkMwMDUzQzc3RiAvKiBKU0RPTU5hbWVkRmxvd0NvbGxl
Y3Rpb24uY3BwICovLAotCQkJCTUyQ0NBOUUxMTVFM0Y2MkMwMDUzQzc3RiAvKiBKU0RPTU5hbWVk
Rmxvd0NvbGxlY3Rpb24uaCAqLywKIAkJCQkwRjQ5NjZBNDFEQjQwQzQzMDBBMjc0QkIgLyogSlNE
T01Qb2ludC5jcHAgKi8sCiAJCQkJMEY0OTY2QTUxREI0MEM0MzAwQTI3NEJCIC8qIEpTRE9NUG9p
bnQuaCAqLywKIAkJCQkwRjQ5NjZBNjFEQjQwQzQzMDBBMjc0QkIgLyogSlNET01Qb2ludEluaXQu
Y3BwICovLApAQCAtMjI3MzEsOCArMjI2OTYsNiBAQAogCQkJCTlCMDk4QkU3MUYzRDZBRjYwMDJE
RDU2MiAvKiBKU1N0cmluZ0NhbGxiYWNrLmggKi8sCiAJCQkJNjVERjMxRUYwOUQxQ0M2MDAwMEJF
MzI1IC8qIEpTVGV4dC5jcHAgKi8sCiAJCQkJNjVERjMxRjAwOUQxQ0M2MDAwMEJFMzI1IC8qIEpT
VGV4dC5oICovLAotCQkJCUQ3NjEzQUMyMTQ3NTNFNTYwMERCODYwNiAvKiBKU1dlYktpdE5hbWVk
Rmxvdy5jcHAgKi8sCi0JCQkJRDc2MTNBQzMxNDc1M0U1NjAwREI4NjA2IC8qIEpTV2ViS2l0TmFt
ZWRGbG93LmggKi8sCiAJCQkJODNGNTcwQUUxQzUzMjY4RTAwN0ZENkNCIC8qIEpTWE1MRG9jdW1l
bnQuY3BwICovLAogCQkJCTgzRjU3MEFEMUM1MzI2OEUwMDdGRDZDQiAvKiBKU1hNTERvY3VtZW50
LmggKi8sCiAJCQkpOwpAQCAtMjU4NDksOSArMjU4MTIsNiBAQAogCQkJCTQ5ODM5MTU1MEYxRTc3
NjkwMEMyMzc4MiAvKiBXZWJLaXRDU1NNYXRyaXguY3BwICovLAogCQkJCTQ5ODM5MTU2MEYxRTc3
NjkwMEMyMzc4MiAvKiBXZWJLaXRDU1NNYXRyaXguaCAqLywKIAkJCQk0OTgzOTE1NzBGMUU3NzY5
MDBDMjM3ODIgLyogV2ViS2l0Q1NTTWF0cml4LmlkbCAqLywKLQkJCQk4QUE2MUNGRDE0NEQ1OTVC
MDBGMzczNTAgLyogV2ViS2l0Q1NTUmVnaW9uUnVsZS5jcHAgKi8sCi0JCQkJOEFBNjFDRkUxNDRE
NTk1QjAwRjM3MzUwIC8qIFdlYktpdENTU1JlZ2lvblJ1bGUuaCAqLywKLQkJCQk4QUQwQTU1NjE0
Qzg3NDI1MDAwRDgzQzUgLyogV2ViS2l0Q1NTUmVnaW9uUnVsZS5pZGwgKi8sCiAJCQkJM0ZGRkY5
QTYxNTlEOUE1NTAwMjBCQkQ1IC8qIFdlYktpdENTU1ZpZXdwb3J0UnVsZS5jcHAgKi8sCiAJCQkJ
M0ZGRkY5QTcxNTlEOUE1NTAwMjBCQkQ1IC8qIFdlYktpdENTU1ZpZXdwb3J0UnVsZS5oICovLAog
CQkJCTNGMkIzM0UzMTY1QUJEMzUwMEUzOTg3QyAvKiBXZWJLaXRDU1NWaWV3cG9ydFJ1bGUuaWRs
ICovLApAQCAtMjU5MzYsNyArMjU4OTYsNiBAQAogCQkJCTA4ODUwNjdFMTFEQTA0NUIwMDE4MkI5
OCAvKiBQYWludFBoYXNlLmggKi8sCiAJCQkJQjJCMUY3MTQwRDAwQ0FBODAwNEFFQTY0IC8qIFBv
aW50ZXJFdmVudHNIaXRSdWxlcy5jcHAgKi8sCiAJCQkJQjJCMUY3MTUwRDAwQ0FBODAwNEFFQTY0
IC8qIFBvaW50ZXJFdmVudHNIaXRSdWxlcy5oICovLAotCQkJCTZDNzBBODE0MTc3MDdDNDkwMDlB
NDQ2RSAvKiBSZWdpb25PdmVyc2V0U3RhdGUuaCAqLywKIAkJCQlCNTlFRDIzQTE4MjcyNjc5MDA2
RDU2NEMgLyogUmVuZGVyQW5jZXN0b3JJdGVyYXRvci5oICovLAogCQkJCTdDRDQ5NENBMUE4NkVC
MUQwMDBBODdFQyAvKiBSZW5kZXJBdHRhY2htZW50LmNwcCAqLywKIAkJCQk3Q0Q0OTRDQjFBODZF
QjFEMDAwQTg3RUMgLyogUmVuZGVyQXR0YWNobWVudC5oICovLApAQCAtMjYyOTMsOSArMjYyNTIs
NiBAQAogCQkJCUE4MTg1RjM2MDk3NjU3NjUwMDU4MjZEOSAvKiBET01JbXBsZW1lbnRhdGlvbi5j
cHAgKi8sCiAJCQkJQTgxODVGMzMwOTc2NTc2NTAwNTgyNkQ5IC8qIERPTUltcGxlbWVudGF0aW9u
LmggKi8sCiAJCQkJOTNFRUMxRTkwOUMyODc3NzAwQzUxNUQxIC8qIERPTUltcGxlbWVudGF0aW9u
LmlkbCAqLywKLQkJCQk1MkI2QzlCRDE1RTNGNERGMDA2OTBCMDUgLyogRE9NTmFtZWRGbG93Q29s
bGVjdGlvbi5jcHAgKi8sCi0JCQkJNTJCNkM5QkUxNUUzRjRERjAwNjkwQjA1IC8qIERPTU5hbWVk
Rmxvd0NvbGxlY3Rpb24uaCAqLywKLQkJCQk1MkI2QzlCRjE1RTNGNERGMDA2OTBCMDUgLyogRE9N
TmFtZWRGbG93Q29sbGVjdGlvbi5pZGwgKi8sCiAJCQkJMEY0OTY2OTkxREI0MDhDMTAwQTI3NEJC
IC8qIERPTVBvaW50LmggKi8sCiAJCQkJMEY0OTY2OUExREI0MDhDMTAwQTI3NEJCIC8qIERPTVBv
aW50LmlkbCAqLywKIAkJCQkwRjQ5NjZBMjFEQjQwOTEwMDBBMjc0QkIgLyogRE9NUG9pbnRJbml0
LmggKi8sCkBAIC0yNjQ0Myw4ICsyNjM5OSw2IEBACiAJCQkJQzZGMDhGQjkxNDMwRkU4RjAwNjg1
ODQ5IC8qIE11dGF0aW9uUmVjb3JkLmNwcCAqLywKIAkJCQlDNkYwOEZCQTE0MzBGRThGMDA2ODU4
NDkgLyogTXV0YXRpb25SZWNvcmQuaCAqLywKIAkJCQlDNkYwOEZCQjE0MzBGRThGMDA2ODU4NDkg
LyogTXV0YXRpb25SZWNvcmQuaWRsICovLAotCQkJCTUyQjZDOUMwMTVFM0Y0REYwMDY5MEIwNSAv
KiBOYW1lZEZsb3dDb2xsZWN0aW9uLmNwcCAqLywKLQkJCQk1MkI2QzlDMTE1RTNGNERGMDA2OTBC
MDUgLyogTmFtZWRGbG93Q29sbGVjdGlvbi5oICovLAogCQkJCUJDRjM0QTM2MTFBMjMxQ0QwMEM3
MTgwNCAvKiBOYW1lZE5vZGVNYXAuY3BwICovLAogCQkJCUE4MTg3MjE4MDk3N0QzQzAwMDU4MjZE
OSAvKiBOYW1lZE5vZGVNYXAuaCAqLywKIAkJCQk4NUFDQTlGOTBBOUI2MzEwMDA2NzFFOTAgLyog
TmFtZWROb2RlTWFwLmlkbCAqLywKQEAgLTI2NjIzLDkgKzI2NTc3LDYgQEAKIAkJCQkzMUMwRkYx
QjBFNENFQjZFMDA3RDZGRTUgLyogV2ViS2l0QW5pbWF0aW9uRXZlbnQuY3BwICovLAogCQkJCTMx
QzBGRjFDMEU0Q0VCNkUwMDdENkZFNSAvKiBXZWJLaXRBbmltYXRpb25FdmVudC5oICovLAogCQkJ
CTMxQzBGRjFEMEU0Q0VCNkUwMDdENkZFNSAvKiBXZWJLaXRBbmltYXRpb25FdmVudC5pZGwgKi8s
Ci0JCQkJRDc2MTNBNEUxNDc0RjEzRjAwREI4NjA2IC8qIFdlYktpdE5hbWVkRmxvdy5jcHAgKi8s
Ci0JCQkJRDc2MTNBNEQxNDc0RjEzRjAwREI4NjA2IC8qIFdlYktpdE5hbWVkRmxvdy5oICovLAot
CQkJCUQ3NjEzQTRBMTQ3NEVFOTUwMERCODYwNiAvKiBXZWJLaXROYW1lZEZsb3cuaWRsICovLAog
CQkJCTMxQzBGRjFFMEU0Q0VCNkUwMDdENkZFNSAvKiBXZWJLaXRUcmFuc2l0aW9uRXZlbnQuY3Bw
ICovLAogCQkJCTMxQzBGRjFGMEU0Q0VCNkUwMDdENkZFNSAvKiBXZWJLaXRUcmFuc2l0aW9uRXZl
bnQuaCAqLywKIAkJCQkzMUMwRkYyMDBFNENFQjZFMDA3RDZGRTUgLyogV2ViS2l0VHJhbnNpdGlv
bkV2ZW50LmlkbCAqLywKQEAgLTI3NzYyLDcgKzI3NzEzLDYgQEAKIAkJCQk4MzZBQ0VDMzFFQ0E2
MkM4MDA0QkQwMTIgLyogRE9NTWF0cml4UmVhZE9ubHkuaCBpbiBIZWFkZXJzICovLAogCQkJCUE5
QzZFNEU0MEQ3NDVFMDUwMDY0NDJFOSAvKiBET01NaW1lVHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTlDNkU0RTgwRDc0NUUxODAwNjQ0MkU5IC8qIERPTU1pbWVUeXBlQXJyYXkuaCBpbiBIZWFk
ZXJzICovLAotCQkJCTUyQjZDOUMzMTVFM0Y0REYwMDY5MEIwNSAvKiBET01OYW1lZEZsb3dDb2xs
ZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUNFNTNFODBBOEQxOEU3MDAyMjk0N0QgLyog
RE9NUGFyc2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QTU0ODgxNzE0RTQzMkExMDA2QUUwNUEg
LyogRE9NUGF0Y2hTdXBwb3J0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBOUM2RTRFQzBENzQ1RTJC
MDA2NDQyRTkgLyogRE9NUGx1Z2luLmggaW4gSGVhZGVycyAqLywKQEAgLTI4NTQ3LDcgKzI4NDk3
LDYgQEAKIAkJCQk4MzZBQ0VENjFFQ0FBQjE5MDA0QkQwMTIgLyogSlNET01NYXRyaXhSZWFkT25s
eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTlEMjQ4MDcwRDc1N0U3RDAwRkRGOTU5IC8qIEpTRE9N
TWltZVR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE5RDI0ODA5MEQ3NTdFN0QwMEZERjk1OSAv
KiBKU0RPTU1pbWVUeXBlQXJyYXkuaCBpbiBIZWFkZXJzICovLAotCQkJCTUyQ0NBOUUzMTVFM0Y2
MkMwMDUzQzc3RiAvKiBKU0RPTU5hbWVkRmxvd0NvbGxlY3Rpb24uaCBpbiBIZWFkZXJzICovLAog
CQkJCTdDODEzOUE3MUVENjI4NzQwMENFMjZFOCAvKiBKU0RPTU9wZXJhdGlvbi5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJN0M4MTM5QTgxRUQ2Mjg3NDAwQ0UyNkU4IC8qIEpTRE9NT3BlcmF0aW9uUmV0
dXJuaW5nUHJvbWlzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFDRTUzRTAwQThEMTg4MTAwMjI5
NDdEIC8qIEpTRE9NUGFyc2VyLmggaW4gSGVhZGVycyAqLywKQEAgLTI5MTQ4LDcgKzI5MDk3LDYg
QEAKIAkJCQkzMUEwODk4QzFFNzM4RDVBMDAzQjY2MDkgLyogSlNXZWJHUFVUZXh0dXJlRGVzY3Jp
cHRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzFDMEZGM0UwRTRDRUZBQzAwN0Q2RkU1IC8qIEpT
V2ViS2l0QW5pbWF0aW9uRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5ODM5MTQwMEYxRTc2
NzUwMEMyMzc4MiAvKiBKU1dlYktpdENTU01hdHJpeC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJOEFE
MEE1OTUxNEM4ODMzNjAwMEQ4M0M1IC8qIEpTV2ViS2l0Q1NTUmVnaW9uUnVsZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJM0YyQjMzRUYxNjVBRjE1NjAwRTM5ODdDIC8qIEpTV2ViS2l0Q1NTVmlld3Bv
cnRSdWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQk3Q0M2OTk0MTE5MUVDNUY1MDBBRjIyNzAgLyog
SlNXZWJLaXROYW1lc3BhY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGREE3QzI3MTg4MzMzMzIw
MEM5NTRCNSAvKiBKU1dlYktpdFBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5RXZlbnQuaCBpbiBI
ZWFkZXJzICovLApAQCAtMjk0MTcsNyArMjkzNjUsNiBAQAogCQkJCUQ2RTUyOEE0MTQ5QTkyNkQw
MEVGRTFGMyAvKiBNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRDZFMjc2QjAxNDYzNzQ1NTAwMUQyODBBIC8qIE11dGF0aW9uT2JzZXJ2ZXJSZWdpc3Ry
YXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUM2RjA4RkJEMTQzMEZFOEYwMDY4NTg0OSAvKiBN
dXRhdGlvblJlY29yZC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTJCNkM5QzYxNUUzRjRERjAwNjkw
QjA1IC8qIE5hbWVkRmxvd0NvbGxlY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTMxNEJFM0E3
MUIzMTAzRkIwMDE0MTk4MiAvKiBOYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUE4MTg3MjIzMDk3N0QzQzAwMDU4MjZEOSAvKiBOYW1lZE5vZGVNYXAuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE4MTg3MjFFMDk3N0QzQzAwMDU4MjZEOSAvKiBOYW1lTm9kZUxpc3Qu
aCBpbiBIZWFkZXJzICovLApAQCAtMjk3MTcsNyArMjk2NjQsNiBAQAogCQkJCTVDRUVFNDM2MUY1
RjhGMjEwMDE0QTVGNSAvKiBSZWN0RWRnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTk4MzFBRTRB
MTU0MjI1QzkwMEZFMjY0NCAvKiBSZWZlcnJlclBvbGljeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QkNBQjQxODIxM0UzNTZFODAwRDhBQUYzIC8qIFJlZ2lvbi5oIGluIEhlYWRlcnMgKi8sCi0JCQkJ
NkNEREU4RDAxNzcwQkIyMjAwMTZFMDcyIC8qIFJlZ2lvbk92ZXJzZXRTdGF0ZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMjZCOTk5OEYxODAzQUU3MjAwRDAxMTIxIC8qIFJlZ2lzdGVyQWxsb2NhdG9y
LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NTAzMUI0QzBBNDRFRkM3MDBGOTkyRTAgLyogUmVnaXN0
ZXJlZEV2ZW50TGlzdGVuZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1NzhGNDNGMURFMEI2MzAw
MDNERkM2QSAvKiBSZWplY3RlZFByb21pc2VUcmFja2VyLmggaW4gSGVhZGVycyAqLywKQEAgLTMw
NzgzLDcgKzMwNzI5LDYgQEAKIAkJCQkzMUMwRkYyMjBFNENFQjZFMDA3RDZGRTUgLyogV2ViS2l0
QW5pbWF0aW9uRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTVERkVCQUI3MTg1OTJCNkQwMEM3
NUJFQiAvKiBXZWJLaXRBdmFpbGFiaWxpdHkuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5ODM5MTU5
MEYxRTc3NjkwMEMyMzc4MiAvKiBXZWJLaXRDU1NNYXRyaXguaCBpbiBIZWFkZXJzICovLAotCQkJ
CThBQTYxRDAwMTQ0RDU5NUIwMEYzNzM1MCAvKiBXZWJLaXRDU1NSZWdpb25SdWxlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkzRkZGRjlBOTE1OUQ5QTU1MDAyMEJCRDUgLyogV2ViS2l0Q1NTVmlld3Bv
cnRSdWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDA2MjE0NTFEQTYzOUJBMDBBN0ZCMjYgLyog
V2ViS2l0TWVkaWFLZXlNZXNzYWdlRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTJEMDYyMTUx
MURBNjNBOUYwMEE3RkIyNiAvKiBXZWJLaXRNZWRpYUtleU5lZWRlZEV2ZW50LmggaW4gSGVhZGVy
cyAqLywKQEAgLTMxODM3LDcgKzMxNzgyLDYgQEAKIAkJCQk4MzZBQ0VDMjFFQ0E2MkM4MDA0QkQw
MTIgLyogRE9NTWF0cml4UmVhZE9ubHkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTlDNkU0RTMw
RDc0NUUwNTAwNjQ0MkU5IC8qIERPTU1pbWVUeXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE5
QzZFNEU3MEQ3NDVFMTgwMDY0NDJFOSAvKiBET01NaW1lVHlwZUFycmF5LmNwcCBpbiBTb3VyY2Vz
ICovLAotCQkJCTUyQjZDOUMyMTVFM0Y0REYwMDY5MEIwNSAvKiBET01OYW1lZEZsb3dDb2xsZWN0
aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBQ0U1M0U3MEE4RDE4RTcwMDIyOTQ3RCAvKiBE
T01QYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0E1NDg4MTgxNEU0MzJBMTAwNkFFMDVB
IC8qIERPTVBhdGNoU3VwcG9ydC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOUM2RTRFQjBENzQ1
RTJCMDA2NDQyRTkgLyogRE9NUGx1Z2luLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzI1NzIsNyAr
MzI1MTYsNiBAQAogCQkJCTgzNkFDRUQ1MUVDQUFCMTkwMDRCRDAxMiAvKiBKU0RPTU1hdHJpeFJl
YWRPbmx5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE5RDI0ODA2MEQ3NTdFN0QwMEZERjk1OSAv
KiBKU0RPTU1pbWVUeXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE5RDI0ODA4MEQ3NTdFN0Qw
MEZERjk1OSAvKiBKU0RPTU1pbWVUeXBlQXJyYXkuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNTJD
Q0E5RTIxNUUzRjYyQzAwNTNDNzdGIC8qIEpTRE9NTmFtZWRGbG93Q29sbGVjdGlvbi5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkxQUNFNTNERjBBOEQxODgxMDAyMjk0N0QgLyogSlNET01QYXJzZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTlEMjQ3RkUwRDc1N0U2OTAwRkRGOTU5IC8qIEpTRE9N
UGx1Z2luLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE5RDI0ODAwMEQ3NTdFNjkwMEZERjk1OSAv
KiBKU0RPTVBsdWdpbkFycmF5LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzMyMjUsMTQgKzMzMTY4
LDEyIEBACiAJCQkJMzFBMDg5OEExRTczOEQ1QTAwM0I2NjA5IC8qIEpTV2ViR1BVVGV4dHVyZURl
c2NyaXB0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzFDMEZGM0QwRTRDRUZBQzAwN0Q2RkU1
IC8qIEpTV2ViS2l0QW5pbWF0aW9uRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDk4Mzkx
M0YwRjFFNzY3NTAwQzIzNzgyIC8qIEpTV2ViS2l0Q1NTTWF0cml4LmNwcCBpbiBTb3VyY2VzICov
LAotCQkJCThBRDBBNTk0MTRDODgzMzYwMDBEODNDNSAvKiBKU1dlYktpdENTU1JlZ2lvblJ1bGUu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJM0YyQjMzRUUxNjVBRjE1NjAwRTM5ODdDIC8qIEpTV2Vi
S2l0Q1NTVmlld3BvcnRSdWxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNEQTk4REEzMTYwMTQ2
NDEwMEZFQTNCMSAvKiBKU1dlYktpdE1lZGlhS2V5RXJyb3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQ0RBOThEREYxNjAyNkEzNzAwRkVBM0IxIC8qIEpTV2ViS2l0TWVkaWFLZXlNZXNzYWdlRXZl
bnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RBOThERTAxNjAyNkEzNzAwRkVBM0IxIC8qIEpT
V2ViS2l0TWVkaWFLZXlOZWVkZWRFdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDREE5OEUw
NDE2MDM5RTFBMDBGRUEzQjEgLyogSlNXZWJLaXRNZWRpYUtleXMuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQ0RBOThFMDYxNjAzOUUxRjAwRkVBM0IxIC8qIEpTV2ViS2l0TWVkaWFLZXlTZXNzaW9u
LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUQ3NjEzQUM0MTQ3NTNFNTYwMERCODYwNiAvKiBKU1dl
YktpdE5hbWVkRmxvdy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3Q0M2OTk0MDE5MUVDNUY1MDBB
RjIyNzAgLyogSlNXZWJLaXROYW1lc3BhY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZEQTdD
MjYxODgzMzMzMjAwQzk1NEI1IC8qIEpTV2ViS2l0UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlF
dmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0OTRCRDc5RDBGNTVDOTRDMDA3NDc4MjggLyog
SlNXZWJLaXRQb2ludC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMzNDc5LDcgKzMzNDIwLDYgQEAK
IAkJCQlENkU1MjhBMzE0OUE5MjZEMDBFRkUxRjMgLyogTXV0YXRpb25PYnNlcnZlckludGVyZXN0
R3JvdXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRDZFMjc2QUYxNDYzNzQ1NTAwMUQyODBBIC8q
IE11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzZG
MDhGQkMxNDMwRkU4RjAwNjg1ODQ5IC8qIE11dGF0aW9uUmVjb3JkLmNwcCBpbiBTb3VyY2VzICov
LAotCQkJCTUyQjZDOUM1MTVFM0Y0REYwMDY5MEIwNSAvKiBOYW1lZEZsb3dDb2xsZWN0aW9uLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTMxNEJFM0E2MUIzMTAzRkIwMDE0MTk4MiAvKiBOYW1lZElt
YWdlR2VuZXJhdGVkSW1hZ2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNGMzRBMzcxMUEyMzFD
RDAwQzcxODA0IC8qIE5hbWVkTm9kZU1hcC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBODE4NzIy
NDA5NzdEM0MwMDA1ODI2RDkgLyogTmFtZU5vZGVMaXN0LmNwcCBpbiBTb3VyY2VzICovLApAQCAt
MzQ1ODcsMTQgKzM0NTI3LDEyIEBACiAJCQkJRjQ4MjIzMTAxRTM4NjlCODAwNjZGQzc5IC8qIFdl
Ykl0ZW1Qcm92aWRlclBhc3RlYm9hcmQubW0gaW4gU291cmNlcyAqLywKIAkJCQkzMUMwRkYyMTBF
NENFQjZFMDA3RDZGRTUgLyogV2ViS2l0QW5pbWF0aW9uRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNDk4MzkxNTgwRjFFNzc2OTAwQzIzNzgyIC8qIFdlYktpdENTU01hdHJpeC5jcHAgaW4g
U291cmNlcyAqLywKLQkJCQk4QUE2MUNGRjE0NEQ1OTVCMDBGMzczNTAgLyogV2ViS2l0Q1NTUmVn
aW9uUnVsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzRkZGRjlBODE1OUQ5QTU1MDAyMEJCRDUg
LyogV2ViS2l0Q1NTVmlld3BvcnRSdWxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBMTQxNEI1
MTNBMEYwNTAwMDE5OTk2QyAvKiBXZWJLaXRGb250RmFtaWx5TmFtZXMuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMkQwNjIxNDQxREE2MzlCNjAwQTdGQjI2IC8qIFdlYktpdE1lZGlhS2V5TWVzc2Fn
ZUV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEMDYyMTUyMURBNjNBQTIwMEE3RkIyNiAv
KiBXZWJLaXRNZWRpYUtleU5lZWRlZEV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEMDYy
MTREMURBNjNBOEIwMEE3RkIyNiAvKiBXZWJLaXRNZWRpYUtleXMuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMkQwNjIxNEYxREE2M0E5MTAwQTdGQjI2IC8qIFdlYktpdE1lZGlhS2V5U2Vzc2lvbi5j
cHAgaW4gU291cmNlcyAqLywKLQkJCQlENzYxM0E1MDE0NzRGMTNGMDBEQjg2MDYgLyogV2ViS2l0
TmFtZWRGbG93LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDNDhBNkQwMTkxQzlENjUwMDAyNjY3
NCAvKiBXZWJLaXROYW1lc3BhY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTVERUJEQTMxNkZC
OTA4NzAwODM2RkUwIC8qIFdlYktpdFBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5RXZlbnQuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMzFDMEZGMjQwRTRDRUI2RTAwN0Q2RkU1IC8qIFdlYktpdFRy
YW5zaXRpb25FdmVudC5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTQ1NTUnVsZUN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNDU1NSdWxlQ3VzdG9tLmNwcAkocmV2aXNpb24gMjIyMjA0KQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NSdWxlQ3VzdG9tLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDYsOSArNDYsNyBAQAogI2luY2x1ZGUgIkpTQ1NTU3VwcG9ydHNSdWxlLmgiCiAj
aW5jbHVkZSAiSlNOb2RlLmgiCiAjaW5jbHVkZSAiSlNTdHlsZVNoZWV0Q3VzdG9tLmgiCi0jaW5j
bHVkZSAiSlNXZWJLaXRDU1NSZWdpb25SdWxlLmgiCiAjaW5jbHVkZSAiSlNXZWJLaXRDU1NWaWV3
cG9ydFJ1bGUuaCIKLSNpbmNsdWRlICJXZWJLaXRDU1NSZWdpb25SdWxlLmgiCiAjaW5jbHVkZSAi
V2ViS2l0Q1NTVmlld3BvcnRSdWxlLmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CkBAIC04NSwx
MCArODMsNiBAQCBKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoRXhlY1N0YXRlKiwgSlNECiAgICAg
Y2FzZSBDU1NSdWxlOjpXRUJLSVRfVklFV1BPUlRfUlVMRToKICAgICAgICAgcmV0dXJuIGNyZWF0
ZVdyYXBwZXI8V2ViS2l0Q1NTVmlld3BvcnRSdWxlPihnbG9iYWxPYmplY3QsIFdURk1vdmUocnVs
ZSkpOwogI2VuZGlmCi0jaWYgRU5BQkxFKENTU19SRUdJT05TKQotICAgIGNhc2UgQ1NTUnVsZTo6
V0VCS0lUX1JFR0lPTl9SVUxFOgotICAgICAgICByZXR1cm4gY3JlYXRlV3JhcHBlcjxXZWJLaXRD
U1NSZWdpb25SdWxlPihnbG9iYWxPYmplY3QsIFdURk1vdmUocnVsZSkpOwotI2VuZGlmCiAgICAg
ZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIGNyZWF0ZVdyYXBwZXI8Q1NTUnVsZT4oZ2xvYmFsT2Jq
ZWN0LCBXVEZNb3ZlKHJ1bGUpKTsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Q29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAkocmV2aXNpb24gMjIyMjA0KQor
KysgU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQxNywxNCArNDE3LDYgQEAgc3RhdGljIGNvbnN0IENTU1Byb3BlcnR5
SUQgY29tcHV0ZWRQcm9wZQogICAgIENTU1Byb3BlcnR5V2Via2l0VXNlckRyYWcsCiAgICAgQ1NT
UHJvcGVydHlXZWJraXRVc2VyTW9kaWZ5LAogICAgIENTU1Byb3BlcnR5V2Via2l0VXNlclNlbGVj
dCwKLSNpZiBFTkFCTEUoQ1NTX1JFR0lPTlMpCi0gICAgQ1NTUHJvcGVydHlXZWJraXRGbG93SW50
bywKLSAgICBDU1NQcm9wZXJ0eVdlYmtpdEZsb3dGcm9tLAotICAgIENTU1Byb3BlcnR5V2Via2l0
UmVnaW9uQnJlYWtBZnRlciwKLSAgICBDU1NQcm9wZXJ0eVdlYmtpdFJlZ2lvbkJyZWFrQmVmb3Jl
LAotICAgIENTU1Byb3BlcnR5V2Via2l0UmVnaW9uQnJlYWtJbnNpZGUsCi0gICAgQ1NTUHJvcGVy
dHlXZWJraXRSZWdpb25GcmFnbWVudCwKLSNlbmRpZgogICAgIENTU1Byb3BlcnR5U2hhcGVJbWFn
ZVRocmVzaG9sZCwKICAgICBDU1NQcm9wZXJ0eVNoYXBlTWFyZ2luLAogICAgIENTU1Byb3BlcnR5
U2hhcGVPdXRzaWRlLApAQCAtMTkxNiw4ICsxOTA4LDYgQEAgc3RhdGljIFJlZjxDU1NWYWx1ZUxp
c3Q+IGNvbnRlbnRUb0NTU1ZhbAogICAgICAgICBlbHNlIGlmIChpczxUZXh0Q29udGVudERhdGE+
KCpjb250ZW50RGF0YSkpCiAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNy
ZWF0ZVZhbHVlKGRvd25jYXN0PFRleHRDb250ZW50RGF0YT4oKmNvbnRlbnREYXRhKS50ZXh0KCks
IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfU1RSSU5HKSk7CiAgICAgfQotICAgIGlmIChzdHlsZS5o
YXNGbG93RnJvbSgpKQotICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZh
bHVlKHN0eWxlLnJlZ2lvblRocmVhZCgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1NUUklORykp
OwogICAgIHJldHVybiBsaXN0OwogfQogCkBAIC0yMjkwLDI0ICsyMjgwLDYgQEAgc3RhdGljIENT
U1ZhbHVlSUQgY29udmVydFRvQ29sdW1uQnJlYWsoQgogICAgIHJldHVybiBDU1NWYWx1ZUF1dG87
CiB9CiAKLSNpZiBFTkFCTEUoQ1NTX1JFR0lPTlMpCi1zdGF0aWMgQ1NTVmFsdWVJRCBjb252ZXJ0
VG9SZWdpb25CcmVhayhCcmVha0JldHdlZW4gdmFsdWUpCi17Ci0gICAgaWYgKHZhbHVlID09IFJl
Z2lvbkJyZWFrQmV0d2VlbikKLSAgICAgICAgcmV0dXJuIENTU1ZhbHVlQWx3YXlzOwotICAgIGlm
ICh2YWx1ZSA9PSBBdm9pZEJyZWFrQmV0d2VlbiB8fCB2YWx1ZSA9PSBBdm9pZFJlZ2lvbkJyZWFr
QmV0d2VlbikKLSAgICAgICAgcmV0dXJuIENTU1ZhbHVlQXZvaWQ7Ci0gICAgcmV0dXJuIENTU1Zh
bHVlQXV0bzsKLX0KLSAgICAKLXN0YXRpYyBDU1NWYWx1ZUlEIGNvbnZlcnRUb1JlZ2lvbkJyZWFr
KEJyZWFrSW5zaWRlIHZhbHVlKQotewotICAgIGlmICh2YWx1ZSA9PSBBdm9pZEJyZWFrSW5zaWRl
IHx8IHZhbHVlID09IEF2b2lkUmVnaW9uQnJlYWtJbnNpZGUpCi0gICAgICAgIHJldHVybiBDU1NW
YWx1ZUF2b2lkOwotICAgIHJldHVybiBDU1NWYWx1ZUF1dG87Ci19Ci0jZW5kaWYKLQogc3RhdGlj
IGlubGluZSBib29sIGlzTm9uUmVwbGFjZWRJbmxpbmUoUmVuZGVyT2JqZWN0JiByZW5kZXJlcikK
IHsKICAgICByZXR1cm4gcmVuZGVyZXIuaXNJbmxpbmUoKSAmJiAhcmVuZGVyZXIuaXNSZXBsYWNl
ZCgpOwpAQCAtMjk0NSwxNCArMjkxNyw2IEBAIFJlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHls
ZUV4dHJhY3RvcjoKICAgICAgICAgICAgIHJldHVybiB6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKHN0
eWxlLT5jb2x1bW5XaWR0aCgpLCAqc3R5bGUpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5VGFi
U2l6ZToKICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUt
PnRhYlNpemUoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpOwotI2lmIEVOQUJMRShD
U1NfUkVHSU9OUykKLSAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFJlZ2lvbkJyZWFrQWZ0
ZXI6Ci0gICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKGNvbnZlcnRU
b1JlZ2lvbkJyZWFrKHN0eWxlLT5icmVha0FmdGVyKCkpKTsKLSAgICAgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdFJlZ2lvbkJyZWFrQmVmb3JlOgotICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVl
UG9vbC5jcmVhdGVWYWx1ZShjb252ZXJ0VG9SZWdpb25CcmVhayhzdHlsZS0+YnJlYWtCZWZvcmUo
KSkpOwotICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0UmVnaW9uQnJlYWtJbnNpZGU6Ci0g
ICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKGNvbnZlcnRUb1JlZ2lv
bkJyZWFrKHN0eWxlLT5icmVha0luc2lkZSgpKSk7Ci0jZW5kaWYKICAgICAgICAgY2FzZSBDU1NQ
cm9wZXJ0eUN1cnNvcjogewogICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbGlzdDsK
ICAgICAgICAgICAgIGF1dG8qIGN1cnNvcnMgPSBzdHlsZS0+Y3Vyc29ycygpOwpAQCAtMzgyOCwx
OCArMzc5Miw2IEBAIFJlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3RvcjoKICAg
ICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKGRvd25j
YXN0PEJveENsaXBQYXRoT3BlcmF0aW9uPigqb3BlcmF0aW9uKS5yZWZlcmVuY2VCb3goKSkpOwog
ICAgICAgICAgICAgcmV0dXJuIFdURk1vdmUobGlzdCk7CiAgICAgICAgIH0KLSNpZiBFTkFCTEUo
Q1NTX1JFR0lPTlMpCi0gICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRGbG93SW50bzoKLSAg
ICAgICAgICAgIGlmICghc3R5bGUtPmhhc0Zsb3dJbnRvKCkpCi0gICAgICAgICAgICAgICAgcmV0
dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVOb25lKTsKLSAg
ICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUtPmZsb3dUaHJl
YWQoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19TVFJJTkcpOwotICAgICAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0Rmxvd0Zyb206Ci0gICAgICAgICAgICBpZiAoIXN0eWxlLT5oYXNGbG93RnJv
bSgpKQotICAgICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmll
clZhbHVlKENTU1ZhbHVlTm9uZSk7Ci0gICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNy
ZWF0ZVZhbHVlKHN0eWxlLT5yZWdpb25UaHJlYWQoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19T
VFJJTkcpOwotICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0UmVnaW9uRnJhZ21lbnQ6Ci0g
ICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHN0eWxlLT5yZWdpb25G
cmFnbWVudCgpKTsKLSNlbmRpZgogICAgICAgICBjYXNlIENTU1Byb3BlcnR5U2hhcGVNYXJnaW46
CiAgICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHN0eWxlLT5zaGFw
ZU1hcmdpbigpLCAqc3R5bGUpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5U2hhcGVJbWFnZVRo
cmVzaG9sZDoKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZU1hcHBp
bmdzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVl
TWFwcGluZ3MuaAkocmV2aXNpb24gMjIyMjA0KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1By
aW1pdGl2ZVZhbHVlTWFwcGluZ3MuaAkod29ya2luZyBjb3B5KQpAQCAtMjI0NSwxOCArMjI0NSwx
MiBAQCB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTCiAgICAgY2FzZSBB
dm9pZFBhZ2VCcmVha0JldHdlZW46CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVl
QXZvaWRQYWdlOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEF2b2lkUmVnaW9uQnJlYWtCZXR3
ZWVuOgotICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUF2b2lkUmVnaW9uOwotICAg
ICAgICBicmVhazsKICAgICBjYXNlIENvbHVtbkJyZWFrQmV0d2VlbjoKICAgICAgICAgbV92YWx1
ZS52YWx1ZUlEID0gQ1NTVmFsdWVDb2x1bW47CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUGFn
ZUJyZWFrQmV0d2VlbjoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVQYWdlOwog
ICAgICAgICBicmVhazsKLSAgICBjYXNlIFJlZ2lvbkJyZWFrQmV0d2VlbjoKLSAgICAgICAgbV92
YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVSZWdpb247Ci0gICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
TGVmdFBhZ2VCcmVha0JldHdlZW46CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVl
TGVmdDsKICAgICAgICAgYnJlYWs7CkBAIC0yMjg1LDE0ICsyMjc5LDEwIEBAIHRlbXBsYXRlPD4g
aW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGUKICAgICAgICAgcmV0dXJuIEF2b2lkQ29sdW1u
QnJlYWtCZXR3ZWVuOwogICAgIGNhc2UgQ1NTVmFsdWVBdm9pZFBhZ2U6CiAgICAgICAgIHJldHVy
biBBdm9pZFBhZ2VCcmVha0JldHdlZW47Ci0gICAgY2FzZSBDU1NWYWx1ZUF2b2lkUmVnaW9uOgot
ICAgICAgICByZXR1cm4gQXZvaWRSZWdpb25CcmVha0JldHdlZW47CiAgICAgY2FzZSBDU1NWYWx1
ZUNvbHVtbjoKICAgICAgICAgcmV0dXJuIENvbHVtbkJyZWFrQmV0d2VlbjsKICAgICBjYXNlIENT
U1ZhbHVlUGFnZToKICAgICAgICAgcmV0dXJuIFBhZ2VCcmVha0JldHdlZW47Ci0gICAgY2FzZSBD
U1NWYWx1ZVJlZ2lvbjoKLSAgICAgICAgcmV0dXJuIFJlZ2lvbkJyZWFrQmV0d2VlbjsKICAgICBj
YXNlIENTU1ZhbHVlTGVmdDoKICAgICAgICAgcmV0dXJuIExlZnRQYWdlQnJlYWtCZXR3ZWVuOwog
ICAgIGNhc2UgQ1NTVmFsdWVSaWdodDoKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9w
ZXJ0aWVzLmpzb24KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnRp
ZXMuanNvbgkocmV2aXNpb24gMjIyMjA0KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3Bl
cnRpZXMuanNvbgkod29ya2luZyBjb3B5KQpAQCAtMTYzOSwxMCArMTYzOSw4IEBACiAgICAgICAg
ICAgICAgICAgInZlcnNvIiwKICAgICAgICAgICAgICAgICAiY29sdW1uIiwKICAgICAgICAgICAg
ICAgICAicGFnZSIsCi0gICAgICAgICAgICAgICAgInJlZ2lvbiIsCiAgICAgICAgICAgICAgICAg
ImF2b2lkLWNvbHVtbiIsCi0gICAgICAgICAgICAgICAgImF2b2lkLXBhZ2UiLAotICAgICAgICAg
ICAgICAgICJhdm9pZC1yZWdpb24iCisgICAgICAgICAgICAgICAgImF2b2lkLXBhZ2UiCiAgICAg
ICAgICAgICBdLAogICAgICAgICAgICAgImNvZGVnZW4tcHJvcGVydGllcyI6IHsKICAgICAgICAg
ICAgICAgICAiaW5pdGlhbCI6ICJpbml0aWFsQnJlYWtCZXR3ZWVuIgpAQCAtMTY2MiwxMCArMTY2
MCw4IEBACiAgICAgICAgICAgICAgICAgInZlcnNvIiwKICAgICAgICAgICAgICAgICAiY29sdW1u
IiwKICAgICAgICAgICAgICAgICAicGFnZSIsCi0gICAgICAgICAgICAgICAgInJlZ2lvbiIsCiAg
ICAgICAgICAgICAgICAgImF2b2lkLWNvbHVtbiIsCi0gICAgICAgICAgICAgICAgImF2b2lkLXBh
Z2UiLAotICAgICAgICAgICAgICAgICJhdm9pZC1yZWdpb24iCisgICAgICAgICAgICAgICAgImF2
b2lkLXBhZ2UiCiAgICAgICAgICAgICBdLAogICAgICAgICAgICAgImNvZGVnZW4tcHJvcGVydGll
cyI6IHsKICAgICAgICAgICAgICAgICAiaW5pdGlhbCI6ICJpbml0aWFsQnJlYWtCZXR3ZWVuIgpA
QCAtMTY4MCw4ICsxNjc2LDcgQEAKICAgICAgICAgICAgICAgICAiYXV0byIsCiAgICAgICAgICAg
ICAgICAgImF2b2lkIiwKICAgICAgICAgICAgICAgICAiYXZvaWQtY29sdW1uIiwKLSAgICAgICAg
ICAgICAgICAiYXZvaWQtcGFnZSIsCi0gICAgICAgICAgICAgICAgImF2b2lkLXJlZ2lvbiIKKyAg
ICAgICAgICAgICAgICAiYXZvaWQtcGFnZSIKICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAi
Y29kZWdlbi1wcm9wZXJ0aWVzIjogewogICAgICAgICAgICAgICAgICJpbml0aWFsIjogImluaXRp
YWxCcmVha0luc2lkZSIKQEAgLTYwOTUsOTUgKzYwOTAsNiBAQAogICAgICAgICAgICAgICAgICJ1
cmwiOiAiaHR0cHM6Ly93d3cudzMub3JnL1RSL2Nzcy11aS00LyNwcm9wZGVmLXVzZXItc2VsZWN0
IgogICAgICAgICAgICAgfQogICAgICAgICB9LAotICAgICAgICAiLXdlYmtpdC1mbG93LWludG8i
OiB7Ci0gICAgICAgICAgICAiY29kZWdlbi1wcm9wZXJ0aWVzIjogewotICAgICAgICAgICAgICAg
ICJuYW1lLWZvci1tZXRob2RzIjogIkZsb3dUaHJlYWQiLAotICAgICAgICAgICAgICAgICJjb252
ZXJ0ZXIiOiAiU3RyaW5nT3JOb25lIiwKLSAgICAgICAgICAgICAgICAiZW5hYmxlLWlmIjogIkVO
QUJMRV9DU1NfUkVHSU9OUyIKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAic3BlY2lmaWNh
dGlvbiI6IHsKLSAgICAgICAgICAgICAgICAiY2F0ZWdvcnkiOiAiY3NzLXJlZ2lvbnMiLAotICAg
ICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly93d3cudzMub3JnL1RSL2Nzcy1yZWdpb25zLTEv
I3Byb3BkZWYtZmxvdy1pbnRvIgotICAgICAgICAgICAgfQotICAgICAgICB9LAotICAgICAgICAi
LXdlYmtpdC1mbG93LWZyb20iOiB7Ci0gICAgICAgICAgICAiY29kZWdlbi1wcm9wZXJ0aWVzIjog
ewotICAgICAgICAgICAgICAgICJuYW1lLWZvci1tZXRob2RzIjogIlJlZ2lvblRocmVhZCIsCi0g
ICAgICAgICAgICAgICAgImNvbnZlcnRlciI6ICJTdHJpbmdPck5vbmUiLAotICAgICAgICAgICAg
ICAgICJlbmFibGUtaWYiOiAiRU5BQkxFX0NTU19SRUdJT05TIgotICAgICAgICAgICAgfSwKLSAg
ICAgICAgICAgICJzcGVjaWZpY2F0aW9uIjogewotICAgICAgICAgICAgICAgICJjYXRlZ29yeSI6
ICJjc3MtcmVnaW9ucyIsCi0gICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL3d3dy53My5v
cmcvVFIvY3NzLXJlZ2lvbnMtMS8jcHJvcGRlZi1mbG93LWZyb20iCi0gICAgICAgICAgICB9Ci0g
ICAgICAgIH0sCi0gICAgICAgICItd2Via2l0LXJlZ2lvbi1mcmFnbWVudCI6IHsKLSAgICAgICAg
ICAgICJ2YWx1ZXMiOiBbCi0gICAgICAgICAgICAgICAgImF1dG8iLAotICAgICAgICAgICAgICAg
ICJicmVhayIKLSAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAiY29kZWdlbi1wcm9wZXJ0aWVz
IjogewotICAgICAgICAgICAgICAgICJlbmFibGUtaWYiOiAiRU5BQkxFX0NTU19SRUdJT05TIgot
ICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICJzcGVjaWZpY2F0aW9uIjogewotICAgICAgICAg
ICAgICAgICJjYXRlZ29yeSI6ICJjc3MtcmVnaW9ucyIsCi0gICAgICAgICAgICAgICAgInVybCI6
ICJodHRwczovL3d3dy53My5vcmcvVFIvY3NzLXJlZ2lvbnMtMS8jcHJvcGRlZi1yZWdpb24tZnJh
Z21lbnQiCi0gICAgICAgICAgICB9Ci0gICAgICAgIH0sCi0gICAgICAgICItd2Via2l0LXJlZ2lv
bi1icmVhay1hZnRlciI6IHsKLSAgICAgICAgICAgICJ2YWx1ZXMiOiBbCi0gICAgICAgICAgICAg
ICAgImF1dG8iLAotICAgICAgICAgICAgICAgICJhbHdheXMiLAotICAgICAgICAgICAgICAgICJh
dm9pZCIsCi0gICAgICAgICAgICAgICAgImxlZnQiLAotICAgICAgICAgICAgICAgICJyaWdodCIK
LSAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAiY29kZWdlbi1wcm9wZXJ0aWVzIjogewotICAg
ICAgICAgICAgICAgICJpbml0aWFsIjogImluaXRpYWxCcmVha0JldHdlZW4iLAotICAgICAgICAg
ICAgICAgICJuYW1lLWZvci1tZXRob2RzIjogIkJyZWFrQWZ0ZXIiLAotICAgICAgICAgICAgICAg
ICJjb252ZXJ0ZXIiOiAiUmVnaW9uQnJlYWtCZXR3ZWVuIiwKLSAgICAgICAgICAgICAgICAiZW5h
YmxlLWlmIjogIkVOQUJMRV9DU1NfUkVHSU9OUyIKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAg
ICAic3BlY2lmaWNhdGlvbiI6IHsKLSAgICAgICAgICAgICAgICAiY2F0ZWdvcnkiOiAiY3NzLXJl
Z2lvbnMiLAotICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly93d3cudzMub3JnL1RSL2Nz
cy1yZWdpb25zLTEvI3Byb3BkZWYtYnJlYWstYWZ0ZXIiCi0gICAgICAgICAgICB9Ci0gICAgICAg
IH0sCi0gICAgICAgICItd2Via2l0LXJlZ2lvbi1icmVhay1iZWZvcmUiOiB7Ci0gICAgICAgICAg
ICAidmFsdWVzIjogWwotICAgICAgICAgICAgICAgICJhdXRvIiwKLSAgICAgICAgICAgICAgICAi
YWx3YXlzIiwKLSAgICAgICAgICAgICAgICAiYXZvaWQiLAotICAgICAgICAgICAgICAgICJsZWZ0
IiwKLSAgICAgICAgICAgICAgICAicmlnaHQiCi0gICAgICAgICAgICBdLAotICAgICAgICAgICAg
ImNvZGVnZW4tcHJvcGVydGllcyI6IHsKLSAgICAgICAgICAgICAgICAiaW5pdGlhbCI6ICJpbml0
aWFsQnJlYWtCZXR3ZWVuIiwKLSAgICAgICAgICAgICAgICAibmFtZS1mb3ItbWV0aG9kcyI6ICJC
cmVha0JlZm9yZSIsCi0gICAgICAgICAgICAgICAgImNvbnZlcnRlciI6ICJSZWdpb25CcmVha0Jl
dHdlZW4iLAotICAgICAgICAgICAgICAgICJlbmFibGUtaWYiOiAiRU5BQkxFX0NTU19SRUdJT05T
IgotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICJzcGVjaWZpY2F0aW9uIjogewotICAgICAg
ICAgICAgICAgICJjYXRlZ29yeSI6ICJjc3MtcmVnaW9ucyIsCi0gICAgICAgICAgICAgICAgInVy
bCI6ICJodHRwczovL3d3dy53My5vcmcvVFIvY3NzLXJlZ2lvbnMtMS8jcHJvcGRlZi1icmVhay1i
ZWZvcmUiCi0gICAgICAgICAgICB9Ci0gICAgICAgIH0sCi0gICAgICAgICItd2Via2l0LXJlZ2lv
bi1icmVhay1pbnNpZGUiOiB7Ci0gICAgICAgICAgICAidmFsdWVzIjogWwotICAgICAgICAgICAg
ICAgICJhdXRvIiwKLSAgICAgICAgICAgICAgICAiYXZvaWQiCi0gICAgICAgICAgICBdLAotICAg
ICAgICAgICAgImNvZGVnZW4tcHJvcGVydGllcyI6IHsKLSAgICAgICAgICAgICAgICAiaW5pdGlh
bCI6ICJpbml0aWFsQnJlYWtJbnNpZGUiLAotICAgICAgICAgICAgICAgICJuYW1lLWZvci1tZXRo
b2RzIjogIkJyZWFrSW5zaWRlIiwKLSAgICAgICAgICAgICAgICAiY29udmVydGVyIjogIlJlZ2lv
bkJyZWFrSW5zaWRlIiwKLSAgICAgICAgICAgICAgICAiZW5hYmxlLWlmIjogIkVOQUJMRV9DU1Nf
UkVHSU9OUyIKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAic3BlY2lmaWNhdGlvbiI6IHsK
LSAgICAgICAgICAgICAgICAiY2F0ZWdvcnkiOiAiY3NzLXJlZ2lvbnMiLAotICAgICAgICAgICAg
ICAgICJ1cmwiOiAiaHR0cHM6Ly93d3cudzMub3JnL1RSL2Nzcy1yZWdpb25zLTEvI3Byb3BkZWYt
YnJlYWstaW5zaWRlIgotICAgICAgICAgICAgfQotICAgICAgICB9LAogICAgICAgICAic2Nyb2xs
LXBhZGRpbmciOiB7CiAgICAgICAgICAgICAiY29kZWdlbi1wcm9wZXJ0aWVzIjogewogICAgICAg
ICAgICAgICAgICJlbmFibGUtaWYiOiAiRU5BQkxFX0NTU19TQ1JPTExfU05BUCIsCkBAIC02ODIy
LDEyICs2NzI4LDYgQEAKICAgICAgICAgICAgICJsb25nbmFtZSI6ICJDU1MgUGFnZWQgTWVkaWEg
TW9kdWxlIiwKICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly93d3cudzMub3JnL1RSL2NzczMt
cGFnZS8iCiAgICAgICAgIH0sCi0gICAgICAgICJjc3MtcmVnaW9ucyI6IHsKLSAgICAgICAgICAg
ICJzaG9ydG5hbWUiOiAiQ1NTIFJlZ2lvbnMiLAotICAgICAgICAgICAgImxvbmduYW1lIjogIkNT
UyBSZWdpb25zIE1vZHVsZSIsCi0gICAgICAgICAgICAidXJsIjogImh0dHBzOi8vd3d3LnczLm9y
Zy9UUi9jc3MtcmVnaW9ucy0xLyIsCi0gICAgICAgICAgICAic3RhdHVzIjogImV4cGVyaW1lbnRh
bCIKLSAgICAgICAgfSwKICAgICAgICAgImNzcy1yb3VuZC1kaXNwbGF5IjogewogICAgICAgICAg
ICAgInNob3J0bmFtZSI6ICJDU1MgUm91bmQgRGlzcGxheSIsCiAgICAgICAgICAgICAibG9uZ25h
bWUiOiAiQ1NTIFJvdW5kIERpc3BsYXkgTW9kdWxlIiwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NSdWxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUnVsZS5j
cHAJKHJldmlzaW9uIDIyMjIwNCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NSdWxlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzYsMTAgKzM2LDYgQEAgc3RydWN0IFNhbWVTaXplQXNDU1NSdWxl
IDogcHVibGljIFJlZkNvdQogCiBDT01QSUxFX0FTU0VSVChzaXplb2YoQ1NTUnVsZSkgPT0gc2l6
ZW9mKFNhbWVTaXplQXNDU1NSdWxlKSwgQ1NTUnVsZV9zaG91bGRfc3RheV9zbWFsbCk7CiAKLSNp
ZiBFTkFCTEUoQ1NTX1JFR0lPTlMpCi1DT01QSUxFX0FTU0VSVChTdHlsZVJ1bGVCYXNlOjpSZWdp
b24gPT0gc3RhdGljX2Nhc3Q8U3R5bGVSdWxlQmFzZTo6VHlwZT4oQ1NTUnVsZTo6V0VCS0lUX1JF
R0lPTl9SVUxFKSwgZW51bXNfc2hvdWxkX21hdGNoKTsKLSNlbmRpZgotCiAjaWYgRU5BQkxFKENT
U19ERVZJQ0VfQURBUFRBVElPTikKIENPTVBJTEVfQVNTRVJUKFN0eWxlUnVsZUJhc2U6OlZpZXdw
b3J0ID09IHN0YXRpY19jYXN0PFN0eWxlUnVsZUJhc2U6OlR5cGU+KENTU1J1bGU6OldFQktJVF9W
SUVXUE9SVF9SVUxFKSwgZW51bXNfc2hvdWxkX21hdGNoKTsKICNlbmRpZgpJbmRleDogU291cmNl
L1dlYkNvcmUvY3NzL0NTU1J1bGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTUnVsZS5oCShyZXZpc2lvbiAyMjIyMDQpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUnVs
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01NCw5ICs1NCw2IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUo
Q1NTX0RFVklDRV9BREFQVEFUSU9OKQogICAgICAgICBXRUJLSVRfVklFV1BPUlRfUlVMRSA9IDE1
LAogI2VuZGlmCi0jaWYgRU5BQkxFKENTU19SRUdJT05TKQotICAgICAgICBXRUJLSVRfUkVHSU9O
X1JVTEUgPSAxNiwKLSNlbmRpZgogICAgIH07CiAKICAgICBlbnVtIERlcHJlY2F0ZWRUeXBlIHsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NSdWxlLmlkbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTUnVsZS5pZGwJKHJldmlzaW9uIDIyMjIwNCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NSdWxlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNiBAQAog
ICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IE5BTUVTUEFDRV9SVUxFID0gMTA7CiAgICAgY29uc3Qg
dW5zaWduZWQgc2hvcnQgU1VQUE9SVFNfUlVMRSA9IDEyOwogICAgIFtDb25kaXRpb25hbD1DU1Nf
REVWSUNFX0FEQVBUQVRJT05dIGNvbnN0IHVuc2lnbmVkIHNob3J0IFdFQktJVF9WSUVXUE9SVF9S
VUxFID0gMTU7Ci0gICAgW0NvbmRpdGlvbmFsPUNTU19SRUdJT05TXSBjb25zdCB1bnNpZ25lZCBz
aG9ydCBXRUJLSVRfUkVHSU9OX1JVTEUgPSAxNjsKIAogICAgIC8vIExlZ2FjeSBzeW5vbnltcyBm
b3IgdGhlIGFib3ZlLCBrZXB0IHRvIGF2b2lkIGJyZWFraW5nIGV4aXN0aW5nIGNvbnRlbnQuCiAg
ICAgY29uc3QgdW5zaWduZWQgc2hvcnQgV0VCS0lUX0tFWUZSQU1FU19SVUxFID0gNzsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2Nzcy9FbGVtZW50UnVsZUNvbGxlY3Rvci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvY3NzL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmNwcAkocmV2aXNpb24g
MjIyMjA0KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNiBAQAogI2luY2x1ZGUgIkNTU1ZhbHVlS2V5d29y
ZHMuaCIKICNpbmNsdWRlICJIVE1MRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxTbG90RWxlbWVu
dC5oIgotI2luY2x1ZGUgIlJlbmRlclJlZ2lvbi5oIgogI2luY2x1ZGUgIlNWR0VsZW1lbnQuaCIK
ICNpbmNsdWRlICJTZWxlY3RvckNvbXBpbGVyLmgiCiAjaW5jbHVkZSAiU2VsZWN0b3JGaWx0ZXIu
aCIKQEAgLTE2NCwyMiArMTYzLDYgQEAgdm9pZCBFbGVtZW50UnVsZUNvbGxlY3Rvcjo6Y29sbGVj
dE1hdGNoaQogICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yTGlzdChtYXRjaFJlcXVlc3QucnVs
ZVNldC0+dW5pdmVyc2FsUnVsZXMoKSwgbWF0Y2hSZXF1ZXN0LCBydWxlUmFuZ2UpOwogfQogCi12
b2lkIEVsZW1lbnRSdWxlQ29sbGVjdG9yOjpjb2xsZWN0TWF0Y2hpbmdSdWxlc0ZvclJlZ2lvbihj
b25zdCBNYXRjaFJlcXVlc3QmIG1hdGNoUmVxdWVzdCwgU3R5bGVSZXNvbHZlcjo6UnVsZVJhbmdl
JiBydWxlUmFuZ2UpCi17Ci0gICAgaWYgKCFtX3JlZ2lvbkZvclN0eWxpbmcpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIHVuc2lnbmVkIHNpemUgPSBtYXRjaFJlcXVlc3QucnVsZVNldC0+cmVnaW9u
U2VsZWN0b3JzQW5kUnVsZVNldHMoKS5zaXplKCk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IHNpemU7ICsraSkgewotICAgICAgICBjb25zdCBDU1NTZWxlY3RvciogcmVnaW9uU2VsZWN0
b3IgPSBtYXRjaFJlcXVlc3QucnVsZVNldC0+cmVnaW9uU2VsZWN0b3JzQW5kUnVsZVNldHMoKS5h
dChpKS5zZWxlY3RvcjsKLSAgICAgICAgaWYgKGNoZWNrUmVnaW9uU2VsZWN0b3IocmVnaW9uU2Vs
ZWN0b3IsIG1fcmVnaW9uRm9yU3R5bGluZy0+Z2VuZXJhdGluZ0VsZW1lbnQoKSkpIHsKLSAgICAg
ICAgICAgIFJ1bGVTZXQqIHJlZ2lvblJ1bGVzID0gbWF0Y2hSZXF1ZXN0LnJ1bGVTZXQtPnJlZ2lv
blNlbGVjdG9yc0FuZFJ1bGVTZXRzKCkuYXQoaSkucnVsZVNldC5nZXQoKTsKLSAgICAgICAgICAg
IEFTU0VSVChyZWdpb25SdWxlcyk7Ci0gICAgICAgICAgICBjb2xsZWN0TWF0Y2hpbmdSdWxlcyhN
YXRjaFJlcXVlc3QocmVnaW9uUnVsZXMsIG1hdGNoUmVxdWVzdC5pbmNsdWRlRW1wdHlSdWxlcyks
IHJ1bGVSYW5nZSk7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KIHZvaWQgRWxlbWVudFJ1bGVDb2xs
ZWN0b3I6OnNvcnRBbmRUcmFuc2Zlck1hdGNoZWRSdWxlcygpCiB7CiAgICAgaWYgKG1fbWF0Y2hl
ZFJ1bGVzLmlzRW1wdHkoKSkKQEAgLTIwOCw3ICsxOTEsNiBAQCB2b2lkIEVsZW1lbnRSdWxlQ29s
bGVjdG9yOjptYXRjaEF1dGhvclJ1CiAgICAgewogICAgICAgICBNYXRjaFJlcXVlc3QgbWF0Y2hS
ZXF1ZXN0KCZtX2F1dGhvclN0eWxlLCBpbmNsdWRlRW1wdHlSdWxlcyk7CiAgICAgICAgIGNvbGxl
Y3RNYXRjaGluZ1J1bGVzKG1hdGNoUmVxdWVzdCwgcnVsZVJhbmdlKTsKLSAgICAgICAgY29sbGVj
dE1hdGNoaW5nUnVsZXNGb3JSZWdpb24obWF0Y2hSZXF1ZXN0LCBydWxlUmFuZ2UpOwogICAgIH0K
IAogICAgIGF1dG8qIHBhcmVudCA9IG1fZWxlbWVudC5wYXJlbnRFbGVtZW50KCk7CkBAIC0zMjcs
NyArMzA5LDYgQEAgdm9pZCBFbGVtZW50UnVsZUNvbGxlY3Rvcjo6bWF0Y2hVc2VyUnVsZQogICAg
IE1hdGNoUmVxdWVzdCBtYXRjaFJlcXVlc3QobV91c2VyU3R5bGUsIGluY2x1ZGVFbXB0eVJ1bGVz
KTsKICAgICBTdHlsZVJlc29sdmVyOjpSdWxlUmFuZ2UgcnVsZVJhbmdlID0gbV9yZXN1bHQucmFu
Z2VzLnVzZXJSdWxlUmFuZ2UoKTsKICAgICBjb2xsZWN0TWF0Y2hpbmdSdWxlcyhtYXRjaFJlcXVl
c3QsIHJ1bGVSYW5nZSk7Ci0gICAgY29sbGVjdE1hdGNoaW5nUnVsZXNGb3JSZWdpb24obWF0Y2hS
ZXF1ZXN0LCBydWxlUmFuZ2UpOwogCiAgICAgc29ydEFuZFRyYW5zZmVyTWF0Y2hlZFJ1bGVzKCk7
CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvRWxlbWVudFJ1bGVDb2xsZWN0b3IuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvRWxlbWVudFJ1bGVDb2xsZWN0b3IuaAkocmV2
aXNpb24gMjIyMjA0KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0VsZW1lbnRSdWxlQ29sbGVjdG9y
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBEb2N1bWVudFJ1bGVTZXRzOwogY2xhc3MgTWF0Y2hSZXF1ZXN0OwotY2xhc3MgUmVu
ZGVyUmVnaW9uOwogY2xhc3MgUnVsZURhdGE7CiBjbGFzcyBSdWxlU2V0OwogY2xhc3MgU2VsZWN0
b3JGaWx0ZXI7CkBAIC01Niw3ICs1NSw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE1vZGUoU2Vs
ZWN0b3JDaGVja2VyOjpNb2RlIG1vZGUpIHsgbV9tb2RlID0gbW9kZTsgfQogICAgIHZvaWQgc2V0
UHNldWRvU3R5bGVSZXF1ZXN0KGNvbnN0IFBzZXVkb1N0eWxlUmVxdWVzdCYgcmVxdWVzdCkgeyBt
X3BzZXVkb1N0eWxlUmVxdWVzdCA9IHJlcXVlc3Q7IH0KICAgICB2b2lkIHNldFNhbWVPcmlnaW5P
bmx5KGJvb2wgZikgeyBtX3NhbWVPcmlnaW5Pbmx5ID0gZjsgfSAKLSAgICB2b2lkIHNldFJlZ2lv
bkZvclN0eWxpbmcoY29uc3QgUmVuZGVyUmVnaW9uKiByZWdpb25Gb3JTdHlsaW5nKSB7IG1fcmVn
aW9uRm9yU3R5bGluZyA9IHJlZ2lvbkZvclN0eWxpbmc7IH0KICAgICB2b2lkIHNldE1lZGl1bShj
b25zdCBNZWRpYVF1ZXJ5RXZhbHVhdG9yKiBtZWRpdW0pIHsgbV9pc1ByaW50U3R5bGUgPSBtZWRp
dW0tPm1lZGlhVHlwZU1hdGNoU3BlY2lmaWMoInByaW50Iik7IH0KIAogICAgIGJvb2wgaGFzQW55
TWF0Y2hpbmdSdWxlcyhjb25zdCBSdWxlU2V0Kik7CkBAIC04Myw3ICs4MSw2IEBAIHByaXZhdGU6
CiAgICAgc3RkOjp1bmlxdWVfcHRyPFJ1bGVTZXQ6OlJ1bGVEYXRhVmVjdG9yPiBjb2xsZWN0U2xv
dHRlZFBzZXVkb0VsZW1lbnRSdWxlc0ZvclNsb3QoYm9vbCBpbmNsdWRlRW1wdHlSdWxlcyk7CiAK
ICAgICB2b2lkIGNvbGxlY3RNYXRjaGluZ1J1bGVzKGNvbnN0IE1hdGNoUmVxdWVzdCYsIFN0eWxl
UmVzb2x2ZXI6OlJ1bGVSYW5nZSYpOwotICAgIHZvaWQgY29sbGVjdE1hdGNoaW5nUnVsZXNGb3JS
ZWdpb24oY29uc3QgTWF0Y2hSZXF1ZXN0JiwgU3R5bGVSZXNvbHZlcjo6UnVsZVJhbmdlJik7CiAg
ICAgdm9pZCBjb2xsZWN0TWF0Y2hpbmdSdWxlc0Zvckxpc3QoY29uc3QgUnVsZVNldDo6UnVsZURh
dGFWZWN0b3IqLCBjb25zdCBNYXRjaFJlcXVlc3QmLCBTdHlsZVJlc29sdmVyOjpSdWxlUmFuZ2Um
KTsKICAgICBib29sIHJ1bGVNYXRjaGVzKGNvbnN0IFJ1bGVEYXRhJiwgdW5zaWduZWQgJnNwZWNp
ZmljaXR5KTsKIApAQCAtOTgsNyArOTUsNiBAQCBwcml2YXRlOgogICAgIGNvbnN0IFNlbGVjdG9y
RmlsdGVyKiBtX3NlbGVjdG9yRmlsdGVyIHsgbnVsbHB0ciB9OwogCiAgICAgYm9vbCBtX2lzUHJp
bnRTdHlsZSB7IGZhbHNlIH07Ci0gICAgY29uc3QgUmVuZGVyUmVnaW9uKiBtX3JlZ2lvbkZvclN0
eWxpbmcgeyBudWxscHRyIH07CiAgICAgUHNldWRvU3R5bGVSZXF1ZXN0IG1fcHNldWRvU3R5bGVS
ZXF1ZXN0IHsgTk9QU0VVRE8gfTsKICAgICBib29sIG1fc2FtZU9yaWdpbk9ubHkgeyBmYWxzZSB9
OwogICAgIFNlbGVjdG9yQ2hlY2tlcjo6TW9kZSBtX21vZGUgeyBTZWxlY3RvckNoZWNrZXI6Ok1v
ZGU6OlJlc29sdmluZ1N0eWxlIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvSW5zcGVjdG9y
Q1NTT01XcmFwcGVycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0luc3Bl
Y3RvckNTU09NV3JhcHBlcnMuY3BwCShyZXZpc2lvbiAyMjIyMDQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9jc3MvSW5zcGVjdG9yQ1NTT01XcmFwcGVycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcg
KzM5LDYgQEAKICNpbmNsdWRlICJFeHRlbnNpb25TdHlsZVNoZWV0cy5oIgogI2luY2x1ZGUgIlN0
eWxlU2NvcGUuaCIKICNpbmNsdWRlICJTdHlsZVNoZWV0Q29udGVudHMuaCIKLSNpbmNsdWRlICJX
ZWJLaXRDU1NSZWdpb25SdWxlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNjcsMTEg
KzY2LDYgQEAgdm9pZCBJbnNwZWN0b3JDU1NPTVdyYXBwZXJzOjpjb2xsZWN0KExpcwogICAgICAg
ICBjYXNlIENTU1J1bGU6OlNVUFBPUlRTX1JVTEU6CiAgICAgICAgICAgICBjb2xsZWN0KGRvd25j
YXN0PENTU1N1cHBvcnRzUnVsZT4oY3NzUnVsZSkpOwogICAgICAgICAgICAgYnJlYWs7Ci0jaWYg
RU5BQkxFKENTU19SRUdJT05TKQotICAgICAgICBjYXNlIENTU1J1bGU6OldFQktJVF9SRUdJT05f
UlVMRToKLSAgICAgICAgICAgIGNvbGxlY3QoZG93bmNhc3Q8V2ViS2l0Q1NTUmVnaW9uUnVsZT4o
Y3NzUnVsZSkpOwotICAgICAgICAgICAgYnJlYWs7Ci0jZW5kaWYKICAgICAgICAgY2FzZSBDU1NS
dWxlOjpTVFlMRV9SVUxFOgogICAgICAgICAgICAgbV9zdHlsZVJ1bGVUb0NTU09NV3JhcHBlck1h
cC5hZGQoJmRvd25jYXN0PENTU1N0eWxlUnVsZT4oKmNzc1J1bGUpLnN0eWxlUnVsZSgpLCBkb3du
Y2FzdDxDU1NTdHlsZVJ1bGU+KGNzc1J1bGUpKTsKICAgICAgICAgICAgIGJyZWFrOwpJbmRleDog
U291cmNlL1dlYkNvcmUvY3NzL1J1bGVTZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2Nzcy9SdWxlU2V0LmNwcAkocmV2aXNpb24gMjIyMjA0KQorKysgU291cmNlL1dlYkNvcmUv
Y3NzL1J1bGVTZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzUsMTAgKzEzNSw4IEBAIHN0YXRp
YyBpbmxpbmUgYm9vbCBjb250YWluc1VuY29tbW9uQXR0cmkKICAgICByZXR1cm4gY29udGFpbnNV
bmNvbW1vbkF0dHJpYnV0ZVNlbGVjdG9yKHJvb3RTZWxlY3RvciwgdHJ1ZSk7CiB9CiAKLXN0YXRp
YyBpbmxpbmUgUHJvcGVydHlXaGl0ZWxpc3RUeXBlIGRldGVybWluZVByb3BlcnR5V2hpdGVsaXN0
VHlwZShjb25zdCBBZGRSdWxlRmxhZ3MgYWRkUnVsZUZsYWdzLCBjb25zdCBDU1NTZWxlY3Rvciog
c2VsZWN0b3IpCitzdGF0aWMgaW5saW5lIFByb3BlcnR5V2hpdGVsaXN0VHlwZSBkZXRlcm1pbmVQ
cm9wZXJ0eVdoaXRlbGlzdFR5cGUoY29uc3QgQ1NTU2VsZWN0b3IqIHNlbGVjdG9yKQogewotICAg
IGlmIChhZGRSdWxlRmxhZ3MgJiBSdWxlSXNJblJlZ2lvblJ1bGUpCi0gICAgICAgIHJldHVybiBQ
cm9wZXJ0eVdoaXRlbGlzdFJlZ2lvbjsKICAgICBmb3IgKGNvbnN0IENTU1NlbGVjdG9yKiBjb21w
b25lbnQgPSBzZWxlY3RvcjsgY29tcG9uZW50OyBjb21wb25lbnQgPSBjb21wb25lbnQtPnRhZ0hp
c3RvcnkoKSkgewogI2lmIEVOQUJMRShWSURFT19UUkFDSykKICAgICAgICAgaWYgKGNvbXBvbmVu
dC0+bWF0Y2goKSA9PSBDU1NTZWxlY3Rvcjo6UHNldWRvRWxlbWVudCAmJiAoY29tcG9uZW50LT5w
c2V1ZG9FbGVtZW50VHlwZSgpID09IENTU1NlbGVjdG9yOjpQc2V1ZG9FbGVtZW50Q3VlIHx8IGNv
bXBvbmVudC0+dmFsdWUoKSA9PSBUZXh0VHJhY2tDdWU6OmN1ZVNoYWRvd1BzZXVkb0lkKCkpKQpA
QCAtMTU5LDcgKzE1Nyw3IEBAIFJ1bGVEYXRhOjpSdWxlRGF0YShTdHlsZVJ1bGUqIHJ1bGUsIHVu
c2kKICAgICAsIG1fY2FuTWF0Y2hQc2V1ZG9FbGVtZW50KHNlbGVjdG9yQ2FuTWF0Y2hQc2V1ZG9F
bGVtZW50KCpzZWxlY3RvcigpKSkKICAgICAsIG1fY29udGFpbnNVbmNvbW1vbkF0dHJpYnV0ZVNl
bGVjdG9yKFdlYkNvcmU6OmNvbnRhaW5zVW5jb21tb25BdHRyaWJ1dGVTZWxlY3Rvcigqc2VsZWN0
b3IoKSkpCiAgICAgLCBtX2xpbmtNYXRjaFR5cGUoU2VsZWN0b3JDaGVja2VyOjpkZXRlcm1pbmVM
aW5rTWF0Y2hUeXBlKHNlbGVjdG9yKCkpKQotICAgICwgbV9wcm9wZXJ0eVdoaXRlbGlzdFR5cGUo
ZGV0ZXJtaW5lUHJvcGVydHlXaGl0ZWxpc3RUeXBlKGFkZFJ1bGVGbGFncywgc2VsZWN0b3IoKSkp
CisgICAgLCBtX3Byb3BlcnR5V2hpdGVsaXN0VHlwZShkZXRlcm1pbmVQcm9wZXJ0eVdoaXRlbGlz
dFR5cGUoc2VsZWN0b3IoKSkpCiAjaWYgRU5BQkxFKENTU19TRUxFQ1RPUl9KSVQpICYmIENTU19T
RUxFQ1RPUl9KSVRfUFJPRklMSU5HCiAgICAgLCBtX2NvbXBpbGVkU2VsZWN0b3JVc2VDb3VudCgw
KQogI2VuZGlmCkBAIC0zNjYsMjkgKzM2NCw2IEBAIHZvaWQgUnVsZVNldDo6YWRkUGFnZVJ1bGUo
U3R5bGVSdWxlUGFnZSoKICAgICBtX3BhZ2VSdWxlcy5hcHBlbmQocnVsZSk7CiB9CiAKLXZvaWQg
UnVsZVNldDo6YWRkUmVnaW9uUnVsZShTdHlsZVJ1bGVSZWdpb24qIHJlZ2lvblJ1bGUsIGJvb2wg
aGFzRG9jdW1lbnRTZWN1cml0eU9yaWdpbikKLXsKLSAgICBhdXRvIHJlZ2lvblJ1bGVTZXQgPSBz
dGQ6Om1ha2VfdW5pcXVlPFJ1bGVTZXQ+KCk7Ci0gICAgLy8gVGhlIHJlZ2lvbiBydWxlIHNldCBz
aG91bGQgdGFrZSBpbnRvIGFjY291bnQgdGhlIHBvc2l0aW9uIGluc2lkZSB0aGUgcGFyZW50IHJ1
bGUgc2V0LgotICAgIC8vIE90aGVyd2lzZSwgdGhlIHJ1bGVzIGluc2lkZSByZWdpb24gYmxvY2sg
bWlnaHQgYmUgaW5jb3JyZWN0bHkgcG9zaXRpb25lZCBiZWZvcmUgb3RoZXIgc2ltaWxhciBydWxl
cyBmcm9tCi0gICAgLy8gdGhlIHN0eWxlc2hlZXQgdGhhdCBjb250YWlucyB0aGUgcmVnaW9uIGJs
b2NrLgotICAgIHJlZ2lvblJ1bGVTZXQtPm1fcnVsZUNvdW50ID0gbV9ydWxlQ291bnQ7Ci0KLSAg
ICAvLyBDb2xsZWN0IHRoZSByZWdpb24gcnVsZXMgaW50byBhIHJ1bGUgc2V0Ci0gICAgLy8gRklY
TUU6IFNob3VsZCB0aGlzIGFkZCBvdGhlciB0eXBlcyBvZiBydWxlcz8gKGkuZS4gdXNlIGFkZENo
aWxkUnVsZXMoKSBkaXJlY3RseT8pCi0gICAgY29uc3QgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGVC
YXNlPj4mIGNoaWxkUnVsZXMgPSByZWdpb25SdWxlLT5jaGlsZFJ1bGVzKCk7Ci0gICAgQWRkUnVs
ZUZsYWdzIGFkZFJ1bGVGbGFncyA9IGhhc0RvY3VtZW50U2VjdXJpdHlPcmlnaW4gPyBSdWxlSGFz
RG9jdW1lbnRTZWN1cml0eU9yaWdpbiA6IFJ1bGVIYXNOb1NwZWNpYWxTdGF0ZTsKLSAgICBhZGRS
dWxlRmxhZ3MgPSBzdGF0aWNfY2FzdDxBZGRSdWxlRmxhZ3M+KGFkZFJ1bGVGbGFncyB8IFJ1bGVJ
c0luUmVnaW9uUnVsZSk7Ci0gICAgZm9yIChhdXRvJiBjaGlsZFJ1bGUgOiBjaGlsZFJ1bGVzKSB7
Ci0gICAgICAgIGlmIChpczxTdHlsZVJ1bGU+KCpjaGlsZFJ1bGUpKQotICAgICAgICAgICAgcmVn
aW9uUnVsZVNldC0+YWRkU3R5bGVSdWxlKGRvd25jYXN0PFN0eWxlUnVsZT4oY2hpbGRSdWxlLmdl
dCgpKSwgYWRkUnVsZUZsYWdzKTsKLSAgICB9Ci0gICAgLy8gVXBkYXRlIHRoZSAiZ2xvYmFsIiBy
dWxlIGNvdW50IHNvIHRoYXQgcHJvcGVyIG9yZGVyIGlzIG1haW50YWluZWQKLSAgICBtX3J1bGVD
b3VudCA9IHJlZ2lvblJ1bGVTZXQtPm1fcnVsZUNvdW50OwotCi0gICAgbV9yZWdpb25TZWxlY3Rv
cnNBbmRSdWxlU2V0cy5hcHBlbmQoUnVsZVNldFNlbGVjdG9yUGFpcihyZWdpb25SdWxlLT5zZWxl
Y3Rvckxpc3QoKS5maXJzdCgpLCBXVEZNb3ZlKHJlZ2lvblJ1bGVTZXQpKSk7Ci19Ci0KIHZvaWQg
UnVsZVNldDo6YWRkQ2hpbGRSdWxlcyhjb25zdCBWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZUJhc2U+
PiYgcnVsZXMsIGNvbnN0IE1lZGlhUXVlcnlFdmFsdWF0b3ImIG1lZGl1bSwgU3R5bGVSZXNvbHZl
ciogcmVzb2x2ZXIsIGJvb2wgaGFzRG9jdW1lbnRTZWN1cml0eU9yaWdpbiwgYm9vbCBpc0luaXRp
YXRpbmdFbGVtZW50SW5Vc2VyQWdlbnRTaGFkb3dUcmVlLCBBZGRSdWxlRmxhZ3MgYWRkUnVsZUZs
YWdzKQogewogICAgIGZvciAoYXV0byYgcnVsZSA6IHJ1bGVzKSB7CkBAIC00MDgsMTEgKzM4Myw2
IEBAIHZvaWQgUnVsZVNldDo6YWRkQ2hpbGRSdWxlcyhjb25zdCBWZWN0b3IKICAgICAgICAgICAg
IHJlc29sdmVyLT5hZGRLZXlmcmFtZVN0eWxlKGRvd25jYXN0PFN0eWxlUnVsZUtleWZyYW1lcz4o
KnJ1bGUpKTsKICAgICAgICAgZWxzZSBpZiAoaXM8U3R5bGVSdWxlU3VwcG9ydHM+KCpydWxlKSAm
JiBkb3duY2FzdDxTdHlsZVJ1bGVTdXBwb3J0cz4oKnJ1bGUpLmNvbmRpdGlvbklzU3VwcG9ydGVk
KCkpCiAgICAgICAgICAgICBhZGRDaGlsZFJ1bGVzKGRvd25jYXN0PFN0eWxlUnVsZVN1cHBvcnRz
PigqcnVsZSkuY2hpbGRSdWxlcygpLCBtZWRpdW0sIHJlc29sdmVyLCBoYXNEb2N1bWVudFNlY3Vy
aXR5T3JpZ2luLCBpc0luaXRpYXRpbmdFbGVtZW50SW5Vc2VyQWdlbnRTaGFkb3dUcmVlLCBhZGRS
dWxlRmxhZ3MpOwotI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKLSAgICAgICAgZWxzZSBpZiAoaXM8
U3R5bGVSdWxlUmVnaW9uPigqcnVsZSkgJiYgcmVzb2x2ZXIpIHsKLSAgICAgICAgICAgIGFkZFJl
Z2lvblJ1bGUoZG93bmNhc3Q8U3R5bGVSdWxlUmVnaW9uPihydWxlLmdldCgpKSwgaGFzRG9jdW1l
bnRTZWN1cml0eU9yaWdpbik7Ci0gICAgICAgIH0KLSNlbmRpZgogI2lmIEVOQUJMRShDU1NfREVW
SUNFX0FEQVBUQVRJT04pCiAgICAgICAgIGVsc2UgaWYgKGlzPFN0eWxlUnVsZVZpZXdwb3J0Pigq
cnVsZSkgJiYgcmVzb2x2ZXIpIHsKICAgICAgICAgICAgIHJlc29sdmVyLT52aWV3cG9ydFN0eWxl
UmVzb2x2ZXIoKS0+YWRkVmlld3BvcnRSdWxlKGRvd25jYXN0PFN0eWxlUnVsZVZpZXdwb3J0Pihy
dWxlLmdldCgpKSk7CkBAIC00ODAsNyArNDUwLDYgQEAgdm9pZCBSdWxlU2V0OjpzaHJpbmtUb0Zp
dCgpCiAgICAgbV91bml2ZXJzYWxSdWxlcy5zaHJpbmtUb0ZpdCgpOwogICAgIG1fcGFnZVJ1bGVz
LnNocmlua1RvRml0KCk7CiAgICAgbV9mZWF0dXJlcy5zaHJpbmtUb0ZpdCgpOwotICAgIG1fcmVn
aW9uU2VsZWN0b3JzQW5kUnVsZVNldHMuc2hyaW5rVG9GaXQoKTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL1J1bGVTZXQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvUnVsZVNldC5oCShyZXZpc2lvbiAyMjIyMDQpCisrKyBT
b3VyY2UvV2ViQ29yZS9jc3MvUnVsZVNldC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCwxMyArMzQs
MTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogZW51bSBBZGRSdWxlRmxhZ3MgewogICAgIFJ1bGVI
YXNOb1NwZWNpYWxTdGF0ZSAgICAgICAgID0gMCwKICAgICBSdWxlSGFzRG9jdW1lbnRTZWN1cml0
eU9yaWdpbiA9IDEsCi0gICAgUnVsZUlzSW5SZWdpb25SdWxlICAgICAgICAgICAgPSAxIDw8IDEs
CiB9OwogICAgIAogZW51bSBQcm9wZXJ0eVdoaXRlbGlzdFR5cGUgewogICAgIFByb3BlcnR5V2hp
dGVsaXN0Tm9uZSAgID0gMCwKICAgICBQcm9wZXJ0eVdoaXRlbGlzdE1hcmtlciwKLSAgICBQcm9w
ZXJ0eVdoaXRlbGlzdFJlZ2lvbiwKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAgICAgUHJvcGVy
dHlXaGl0ZWxpc3RDdWUKICNlbmRpZgpAQCAtNTEsNyArNDksNiBAQCBjbGFzcyBDb250YWluZXJO
b2RlOwogY2xhc3MgTWVkaWFRdWVyeUV2YWx1YXRvcjsKIGNsYXNzIE5vZGU7CiBjbGFzcyBTdHls
ZVJlc29sdmVyOwotY2xhc3MgU3R5bGVSdWxlUmVnaW9uOwogY2xhc3MgU3R5bGVTaGVldENvbnRl
bnRzOwogCiBlbnVtIGNsYXNzIE1hdGNoQmFzZWRPblJ1bGVIYXNoIDogdW5zaWduZWQgewpAQCAt
MTY3LDcgKzE2NCw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZFJ1bGUoU3R5bGVSdWxlKiwgdW5z
aWduZWQgc2VsZWN0b3JJbmRleCwgQWRkUnVsZUZsYWdzKTsKICAgICB2b2lkIGFkZFBhZ2VSdWxl
KFN0eWxlUnVsZVBhZ2UqKTsKICAgICB2b2lkIGFkZFRvUnVsZVNldChjb25zdCBBdG9taWNTdHJp
bmcmIGtleSwgQXRvbVJ1bGVNYXAmLCBjb25zdCBSdWxlRGF0YSYpOwotICAgIHZvaWQgYWRkUmVn
aW9uUnVsZShTdHlsZVJ1bGVSZWdpb24qLCBib29sIGhhc0RvY3VtZW50U2VjdXJpdHlPcmlnaW4p
OwogICAgIHZvaWQgc2hyaW5rVG9GaXQoKTsKICAgICB2b2lkIGRpc2FibGVBdXRvU2hyaW5rVG9G
aXQoKSB7IG1fYXV0b1Nocmlua1RvRml0RW5hYmxlZCA9IGZhbHNlOyB9CiAKQEAgLTE4Nyw3ICsx
ODMsNiBAQCBwdWJsaWM6CiAgICAgY29uc3QgUnVsZURhdGFWZWN0b3IqIHVuaXZlcnNhbFJ1bGVz
KCkgY29uc3QgeyByZXR1cm4gJm1fdW5pdmVyc2FsUnVsZXM7IH0KIAogICAgIGNvbnN0IFZlY3Rv
cjxTdHlsZVJ1bGVQYWdlKj4mIHBhZ2VSdWxlcygpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZVJ1bGVz
OyB9Ci0gICAgY29uc3QgVmVjdG9yPFJ1bGVTZXRTZWxlY3RvclBhaXI+JiByZWdpb25TZWxlY3Rv
cnNBbmRSdWxlU2V0cygpIGNvbnN0IHsgcmV0dXJuIG1fcmVnaW9uU2VsZWN0b3JzQW5kUnVsZVNl
dHM7IH0KIAogICAgIHVuc2lnbmVkIHJ1bGVDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fcnVsZUNv
dW50OyB9CiAKQEAgLTIxNSw3ICsyMTAsNiBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9oYXNIb3N0
UHNldWRvQ2xhc3NSdWxlc01hdGNoaW5nSW5TaGFkb3dUcmVlIHsgZmFsc2UgfTsKICAgICBib29s
IG1fYXV0b1Nocmlua1RvRml0RW5hYmxlZCB7IHRydWUgfTsKICAgICBSdWxlRmVhdHVyZVNldCBt
X2ZlYXR1cmVzOwotICAgIFZlY3RvcjxSdWxlU2V0U2VsZWN0b3JQYWlyPiBtX3JlZ2lvblNlbGVj
dG9yc0FuZFJ1bGVTZXRzOwogfTsKIAogaW5saW5lIGNvbnN0IFJ1bGVTZXQ6OlJ1bGVEYXRhVmVj
dG9yKiBSdWxlU2V0Ojp0YWdSdWxlcyhjb25zdCBBdG9taWNTdHJpbmcmIGtleSwgYm9vbCBpc0hU
TUxOYW1lKSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckNvbnZl
cnRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDb252
ZXJ0ZXIuaAkocmV2aXNpb24gMjIyMjA0KQorKysgU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVp
bGRlckNvbnZlcnRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDMsMTEgKzE0Myw3IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgQnJlYWtJbnNpZGUgY29udmVydFBhZ2VCcmVha0luc2lkZShTdHlsZVJl
c29sdmVyJiwgY29uc3QgQ1NTVmFsdWUmKTsKICAgICBzdGF0aWMgQnJlYWtCZXR3ZWVuIGNvbnZl
cnRDb2x1bW5CcmVha0JldHdlZW4oU3R5bGVSZXNvbHZlciYsIGNvbnN0IENTU1ZhbHVlJik7CiAg
ICAgc3RhdGljIEJyZWFrSW5zaWRlIGNvbnZlcnRDb2x1bW5CcmVha0luc2lkZShTdHlsZVJlc29s
dmVyJiwgY29uc3QgQ1NTVmFsdWUmKTsKLSNpZiBFTkFCTEUoQ1NTX1JFR0lPTlMpCi0gICAgc3Rh
dGljIEJyZWFrQmV0d2VlbiBjb252ZXJ0UmVnaW9uQnJlYWtCZXR3ZWVuKFN0eWxlUmVzb2x2ZXIm
LCBjb25zdCBDU1NWYWx1ZSYpOwotICAgIHN0YXRpYyBCcmVha0luc2lkZSBjb252ZXJ0UmVnaW9u
QnJlYWtJbnNpZGUoU3R5bGVSZXNvbHZlciYsIGNvbnN0IENTU1ZhbHVlJik7Ci0jZW5kaWYKLSAg
ICAKKwogICAgIHN0YXRpYyBIYW5naW5nUHVuY3R1YXRpb24gY29udmVydEhhbmdpbmdQdW5jdHVh
dGlvbihTdHlsZVJlc29sdmVyJiwgY29uc3QgQ1NTVmFsdWUmKTsKIAogICAgIHN0YXRpYyBMZW5n
dGggY29udmVydFBvc2l0aW9uQ29tcG9uZW50WChTdHlsZVJlc29sdmVyJiwgY29uc3QgQ1NTVmFs
dWUmKTsKQEAgLTE1MjAsMjYgKzE1MTYsNiBAQCBpbmxpbmUgQnJlYWtJbnNpZGUgU3R5bGVCdWls
ZGVyQ29udmVydGVyCiAgICAgcmV0dXJuIHByaW1pdGl2ZVZhbHVlOwogfQogCi0jaWYgRU5BQkxF
KENTU19SRUdJT05TKQotaW5saW5lIEJyZWFrQmV0d2VlbiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6
OmNvbnZlcnRSZWdpb25CcmVha0JldHdlZW4oU3R5bGVSZXNvbHZlciYsIGNvbnN0IENTU1ZhbHVl
JiB2YWx1ZSkKLXsKLSAgICBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1p
dGl2ZVZhbHVlPih2YWx1ZSk7Ci0gICAgaWYgKHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQoKSA9PSBD
U1NWYWx1ZUFsd2F5cykKLSAgICAgICAgcmV0dXJuIFJlZ2lvbkJyZWFrQmV0d2VlbjsKLSAgICBp
ZiAocHJpbWl0aXZlVmFsdWUudmFsdWVJRCgpID09IENTU1ZhbHVlQXZvaWQpCi0gICAgICAgIHJl
dHVybiBBdm9pZFJlZ2lvbkJyZWFrQmV0d2VlbjsKLSAgICByZXR1cm4gcHJpbWl0aXZlVmFsdWU7
Ci19Ci0KLWlubGluZSBCcmVha0luc2lkZSBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRS
ZWdpb25CcmVha0luc2lkZShTdHlsZVJlc29sdmVyJiwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQot
ewotICAgIGF1dG8mIHByaW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+
KHZhbHVlKTsKLSAgICBpZiAocHJpbWl0aXZlVmFsdWUudmFsdWVJRCgpID09IENTU1ZhbHVlQXZv
aWQpCi0gICAgICAgIHJldHVybiBBdm9pZFJlZ2lvbkJyZWFrSW5zaWRlOwotICAgIHJldHVybiBw
cmltaXRpdmVWYWx1ZTsKLX0KLSNlbmRpZgotCiBpbmxpbmUgSGFuZ2luZ1B1bmN0dWF0aW9uIFN0
eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEhhbmdpbmdQdW5jdHVhdGlvbihTdHlsZVJlc29s
dmVyJiwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIEhhbmdpbmdQdW5jdHVhdGlvbiBy
ZXN1bHQgPSBSZW5kZXJTdHlsZTo6aW5pdGlhbEhhbmdpbmdQdW5jdHVhdGlvbigpOwpJbmRleDog
U291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydGllcy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydGllcy5jcHAJKHJldmlzaW9uIDIyMjIwNCkKKysr
IFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnRpZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMTkxLDExICsxMTkxLDYgQEAgc3RhdGljIGNvbnN0IENTU1Byb3BlcnR5SUQgYmxvY2tQcm9w
ZXJ0aQogICAgIENTU1Byb3BlcnR5UGFnZUJyZWFrQWZ0ZXIsCiAgICAgQ1NTUHJvcGVydHlQYWdl
QnJlYWtCZWZvcmUsCiAgICAgQ1NTUHJvcGVydHlQYWdlQnJlYWtJbnNpZGUsCi0jaWYgRU5BQkxF
KENTU19SRUdJT05TKQotICAgIENTU1Byb3BlcnR5V2Via2l0UmVnaW9uQnJlYWtBZnRlciwKLSAg
ICBDU1NQcm9wZXJ0eVdlYmtpdFJlZ2lvbkJyZWFrQmVmb3JlLAotICAgIENTU1Byb3BlcnR5V2Vi
a2l0UmVnaW9uQnJlYWtJbnNpZGUsCi0jZW5kaWYKICAgICBDU1NQcm9wZXJ0eVRleHRBbGlnbiwK
ICNpZiBFTkFCTEUoQ1NTM19URVhUKQogICAgIENTU1Byb3BlcnR5V2Via2l0VGV4dEFsaWduTGFz
dCwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAJKHJldmlzaW9uIDIyMjIw
NCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNzUsNyArNzUsNiBAQAogI2luY2x1ZGUgIk5vZGVSZW5kZXJTdHlsZS5oIgogI2luY2x1
ZGUgIlBhZ2VSdWxlQ29sbGVjdG9yLmgiCiAjaW5jbHVkZSAiUGFpci5oIgotI2luY2x1ZGUgIlJl
bmRlclJlZ2lvbi5oIgogI2luY2x1ZGUgIlJlbmRlclNjcm9sbGJhci5oIgogI2luY2x1ZGUgIlJl
bmRlclN0eWxlQ29uc3RhbnRzLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIKQEAgLTE0MSw3
ICsxNDAsNiBAQCBpbmxpbmUgdm9pZCBTdHlsZVJlc29sdmVyOjpTdGF0ZTo6Y2xlYXIoCiAgICAg
bV9lbGVtZW50ID0gbnVsbHB0cjsKICAgICBtX3BhcmVudFN0eWxlID0gbnVsbHB0cjsKICAgICBt
X293bmVkUGFyZW50U3R5bGUgPSBudWxscHRyOwotICAgIG1fcmVnaW9uRm9yU3R5bGluZyA9IG51
bGxwdHI7CiAgICAgbV9jc3NUb0xlbmd0aENvbnZlcnNpb25EYXRhID0gQ1NTVG9MZW5ndGhDb252
ZXJzaW9uRGF0YSgpOwogfQogCkBAIC0yOTgsMTAgKzI5Niw5IEBAIHZvaWQgU3R5bGVSZXNvbHZl
cjo6c3dlZXBNYXRjaGVkUHJvcGVydGkKICAgICBtX21hdGNoZWRQcm9wZXJ0aWVzQ2FjaGVBZGRp
dGlvbnNTaW5jZUxhc3RTd2VlcCA9IDA7CiB9CiAKLVN0eWxlUmVzb2x2ZXI6OlN0YXRlOjpTdGF0
ZShjb25zdCBFbGVtZW50JiBlbGVtZW50LCBjb25zdCBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUs
IGNvbnN0IFJlbmRlclN0eWxlKiBkb2N1bWVudEVsZW1lbnRTdHlsZSwgY29uc3QgUmVuZGVyUmVn
aW9uKiByZWdpb25Gb3JTdHlsaW5nLCBjb25zdCBTZWxlY3RvckZpbHRlciogc2VsZWN0b3JGaWx0
ZXIpCitTdHlsZVJlc29sdmVyOjpTdGF0ZTo6U3RhdGUoY29uc3QgRWxlbWVudCYgZWxlbWVudCwg
Y29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSogZG9jdW1l
bnRFbGVtZW50U3R5bGUsIGNvbnN0IFNlbGVjdG9yRmlsdGVyKiBzZWxlY3RvckZpbHRlcikKICAg
ICA6IG1fZWxlbWVudCgmZWxlbWVudCkKICAgICAsIG1fcGFyZW50U3R5bGUocGFyZW50U3R5bGUp
Ci0gICAgLCBtX3JlZ2lvbkZvclN0eWxpbmcocmVnaW9uRm9yU3R5bGluZykKICAgICAsIG1fZWxl
bWVudExpbmtTdGF0ZShlbGVtZW50LmRvY3VtZW50KCkudmlzaXRlZExpbmtTdGF0ZSgpLmRldGVy
bWluZUxpbmtTdGF0ZShlbGVtZW50KSkKICAgICAsIG1fc2VsZWN0b3JGaWx0ZXIoc2VsZWN0b3JG
aWx0ZXIpCiB7CkBAIC0zNDIsMTEgKzMzOSwxMSBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNBdFNo
YWRvd0JvdW5kYXJ5KGNvCiAgICAgcmV0dXJuIHBhcmVudE5vZGUgJiYgcGFyZW50Tm9kZS0+aXNT
aGFkb3dSb290KCk7CiB9CiAKLUVsZW1lbnRTdHlsZSBTdHlsZVJlc29sdmVyOjpzdHlsZUZvckVs
ZW1lbnQoY29uc3QgRWxlbWVudCYgZWxlbWVudCwgY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudFN0
eWxlLCBjb25zdCBSZW5kZXJTdHlsZSogcGFyZW50Qm94U3R5bGUsIFJ1bGVNYXRjaGluZ0JlaGF2
aW9yIG1hdGNoaW5nQmVoYXZpb3IsIGNvbnN0IFJlbmRlclJlZ2lvbiogcmVnaW9uRm9yU3R5bGlu
ZywgY29uc3QgU2VsZWN0b3JGaWx0ZXIqIHNlbGVjdG9yRmlsdGVyKQorRWxlbWVudFN0eWxlIFN0
eWxlUmVzb2x2ZXI6OnN0eWxlRm9yRWxlbWVudChjb25zdCBFbGVtZW50JiBlbGVtZW50LCBjb25z
dCBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKiBwYXJlbnRCb3hT
dHlsZSwgUnVsZU1hdGNoaW5nQmVoYXZpb3IgbWF0Y2hpbmdCZWhhdmlvciwgY29uc3QgU2VsZWN0
b3JGaWx0ZXIqIHNlbGVjdG9yRmlsdGVyKQogewogICAgIFJFTEVBU0VfQVNTRVJUKCFtX2lzRGVs
ZXRlZCk7CiAKLSAgICBtX3N0YXRlID0gU3RhdGUoZWxlbWVudCwgcGFyZW50U3R5bGUsIG1fb3Zl
cnJpZGVEb2N1bWVudEVsZW1lbnRTdHlsZSwgcmVnaW9uRm9yU3R5bGluZywgc2VsZWN0b3JGaWx0
ZXIpOworICAgIG1fc3RhdGUgPSBTdGF0ZShlbGVtZW50LCBwYXJlbnRTdHlsZSwgbV9vdmVycmlk
ZURvY3VtZW50RWxlbWVudFN0eWxlLCBzZWxlY3RvckZpbHRlcik7CiAgICAgU3RhdGUmIHN0YXRl
ID0gbV9zdGF0ZTsKIAogICAgIGlmIChzdGF0ZS5wYXJlbnRTdHlsZSgpKSB7CkBAIC0zNzMsNyAr
MzcwLDYgQEAgRWxlbWVudFN0eWxlIFN0eWxlUmVzb2x2ZXI6OnN0eWxlRm9yRWxlbQogICAgIENT
U0RlZmF1bHRTdHlsZVNoZWV0czo6ZW5zdXJlRGVmYXVsdFN0eWxlU2hlZXRzRm9yRWxlbWVudChl
bGVtZW50KTsKIAogICAgIEVsZW1lbnRSdWxlQ29sbGVjdG9yIGNvbGxlY3RvcihlbGVtZW50LCBt
X3J1bGVTZXRzLCBtX3N0YXRlLnNlbGVjdG9yRmlsdGVyKCkpOwotICAgIGNvbGxlY3Rvci5zZXRS
ZWdpb25Gb3JTdHlsaW5nKHJlZ2lvbkZvclN0eWxpbmcpOwogICAgIGNvbGxlY3Rvci5zZXRNZWRp
dW0oJm1fbWVkaWFRdWVyeUV2YWx1YXRvcik7CiAKICAgICBpZiAobWF0Y2hpbmdCZWhhdmlvciA9
PSBNYXRjaE9ubHlVc2VyQWdlbnRSdWxlcykKQEAgLTEwNTksMjcgKzEwNTUsNiBAQCB2b2lkIFN0
eWxlUmVzb2x2ZXI6OmFkanVzdFJlbmRlclN0eWxlKFJlCiAgICAgfQogfQogCi1ib29sIFN0eWxl
UmVzb2x2ZXI6OmNoZWNrUmVnaW9uU3R5bGUoY29uc3QgRWxlbWVudCogcmVnaW9uRWxlbWVudCkK
LXsKLSAgICB1bnNpZ25lZCBydWxlc1NpemUgPSBtX3J1bGVTZXRzLmF1dGhvclN0eWxlKCkucmVn
aW9uU2VsZWN0b3JzQW5kUnVsZVNldHMoKS5zaXplKCk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IHJ1bGVzU2l6ZTsgKytpKSB7Ci0gICAgICAgIEFTU0VSVChtX3J1bGVTZXRzLmF1dGhv
clN0eWxlKCkucmVnaW9uU2VsZWN0b3JzQW5kUnVsZVNldHMoKS5hdChpKS5ydWxlU2V0LmdldCgp
KTsKLSAgICAgICAgaWYgKGNoZWNrUmVnaW9uU2VsZWN0b3IobV9ydWxlU2V0cy5hdXRob3JTdHls
ZSgpLnJlZ2lvblNlbGVjdG9yc0FuZFJ1bGVTZXRzKCkuYXQoaSkuc2VsZWN0b3IsIHJlZ2lvbkVs
ZW1lbnQpKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgaWYgKG1fcnVs
ZVNldHMudXNlclN0eWxlKCkpIHsKLSAgICAgICAgcnVsZXNTaXplID0gbV9ydWxlU2V0cy51c2Vy
U3R5bGUoKS0+cmVnaW9uU2VsZWN0b3JzQW5kUnVsZVNldHMoKS5zaXplKCk7Ci0gICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBydWxlc1NpemU7ICsraSkgewotICAgICAgICAgICAgQVNT
RVJUKG1fcnVsZVNldHMudXNlclN0eWxlKCktPnJlZ2lvblNlbGVjdG9yc0FuZFJ1bGVTZXRzKCku
YXQoaSkucnVsZVNldC5nZXQoKSk7Ci0gICAgICAgICAgICBpZiAoY2hlY2tSZWdpb25TZWxlY3Rv
cihtX3J1bGVTZXRzLnVzZXJTdHlsZSgpLT5yZWdpb25TZWxlY3RvcnNBbmRSdWxlU2V0cygpLmF0
KGkpLnNlbGVjdG9yLCByZWdpb25FbGVtZW50KSkKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiBmYWxzZTsKLX0KLQogc3RhdGljIHZv
aWQgY2hlY2tGb3JPcmllbnRhdGlvbkNoYW5nZShSZW5kZXJTdHlsZSogc3R5bGUpCiB7CiAgICAg
Rm9udE9yaWVudGF0aW9uIGZvbnRPcmllbnRhdGlvbjsKQEAgLTE1MDQsMjEgKzE0NzksNiBAQCBz
dGF0aWMgaW5saW5lIGJvb2wgaXNWYWxpZE1hcmtlclN0eWxlUHJvCiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCi0vLyBodHRwOi8vZGV2LnczLm9yZy9jc3N3Zy9jc3MzLXJlZ2lvbnMvI3RoZS1hdC1y
ZWdpb24tc3R5bGUtcnVsZQotLy8gRklYTUU6IEFkZCBpbmNyZW1lbnRhbCBzdXBwb3J0IGZvciBv
dGhlciByZWdpb24gc3R5bGluZyBwcm9wZXJ0aWVzLgotc3RhdGljIGlubGluZSBib29sIGlzVmFs
aWRSZWdpb25TdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5SUQgaWQpCi17Ci0gICAgc3dpdGNoIChp
ZCkgewotICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3I6Ci0gICAgY2FzZSBDU1NQ
cm9wZXJ0eUNvbG9yOgotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBkZWZhdWx0OgotICAgICAg
ICBicmVhazsKLSAgICB9Ci0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KICNpZiBFTkFCTEUoVklE
RU9fVFJBQ0spCiBzdGF0aWMgaW5saW5lIGJvb2wgaXNWYWxpZEN1ZVN0eWxlUHJvcGVydHkoQ1NT
UHJvcGVydHlJRCBpZCkKIHsKQEAgLTIxNzksOCArMjEzOSw2IEBAIHZvaWQgU3R5bGVSZXNvbHZl
cjo6Q2FzY2FkZWRQcm9wZXJ0aWVzOjoKICAgICAgICAgfQogICAgICAgICBDU1NQcm9wZXJ0eUlE
IHByb3BlcnR5SUQgPSBjdXJyZW50LmlkKCk7CiAKLSAgICAgICAgaWYgKHByb3BlcnR5V2hpdGVs
aXN0VHlwZSA9PSBQcm9wZXJ0eVdoaXRlbGlzdFJlZ2lvbiAmJiAhaXNWYWxpZFJlZ2lvblN0eWxl
UHJvcGVydHkocHJvcGVydHlJRCkpCi0gICAgICAgICAgICBjb250aW51ZTsKICNpZiBFTkFCTEUo
VklERU9fVFJBQ0spCiAgICAgICAgIGlmIChwcm9wZXJ0eVdoaXRlbGlzdFR5cGUgPT0gUHJvcGVy
dHlXaGl0ZWxpc3RDdWUgJiYgIWlzVmFsaWRDdWVTdHlsZVByb3BlcnR5KHByb3BlcnR5SUQpKQog
ICAgICAgICAgICAgY29udGludWU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNv
bHZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmgJ
KHJldmlzaW9uIDIyMjIwNCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTYyLDcgKzYyLDYgQEAgY2xhc3MgS2V5ZnJhbWVMaXN0OwogY2xh
c3MgS2V5ZnJhbWVWYWx1ZTsKIGNsYXNzIE1lZGlhUXVlcnlFdmFsdWF0b3I7CiBjbGFzcyBOb2Rl
OwotY2xhc3MgUmVuZGVyUmVnaW9uOwogY2xhc3MgUmVuZGVyU2Nyb2xsYmFyOwogY2xhc3MgUnVs
ZURhdGE7CiBjbGFzcyBSdWxlU2V0OwpAQCAtNzYsNyArNzUsNiBAQCBjbGFzcyBTdHlsZVByb3Bl
cnRpZXM7CiBjbGFzcyBTdHlsZVJ1bGU7CiBjbGFzcyBTdHlsZVJ1bGVLZXlmcmFtZXM7CiBjbGFz
cyBTdHlsZVJ1bGVQYWdlOwotY2xhc3MgU3R5bGVSdWxlUmVnaW9uOwogY2xhc3MgU3R5bGVTaGVl
dDsKIGNsYXNzIFN0eWxlU2hlZXRMaXN0OwogY2xhc3MgU3R5bGVkRWxlbWVudDsKQEAgLTEzMSw3
ICsxMjksNyBAQCBwdWJsaWM6CiAgICAgU3R5bGVSZXNvbHZlcihEb2N1bWVudCYpOwogICAgIH5T
dHlsZVJlc29sdmVyKCk7CiAKLSAgICBFbGVtZW50U3R5bGUgc3R5bGVGb3JFbGVtZW50KGNvbnN0
IEVsZW1lbnQmLCBjb25zdCBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0
eWxlKiBwYXJlbnRCb3hTdHlsZSA9IG51bGxwdHIsIFJ1bGVNYXRjaGluZ0JlaGF2aW9yID0gTWF0
Y2hBbGxSdWxlcywgY29uc3QgUmVuZGVyUmVnaW9uKiByZWdpb25Gb3JTdHlsaW5nID0gbnVsbHB0
ciwgY29uc3QgU2VsZWN0b3JGaWx0ZXIqID0gbnVsbHB0cik7CisgICAgRWxlbWVudFN0eWxlIHN0
eWxlRm9yRWxlbWVudChjb25zdCBFbGVtZW50JiwgY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudFN0
eWxlLCBjb25zdCBSZW5kZXJTdHlsZSogcGFyZW50Qm94U3R5bGUgPSBudWxscHRyLCBSdWxlTWF0
Y2hpbmdCZWhhdmlvciA9IE1hdGNoQWxsUnVsZXMsIGNvbnN0IFNlbGVjdG9yRmlsdGVyKiA9IG51
bGxwdHIpOwogCiAgICAgdm9pZCBrZXlmcmFtZVN0eWxlc0ZvckFuaW1hdGlvbihjb25zdCBFbGVt
ZW50JiwgY29uc3QgUmVuZGVyU3R5bGUqLCBLZXlmcmFtZUxpc3QmKTsKIApAQCAtMjExLDggKzIw
OSw2IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYWRkS2V5ZnJhbWVTdHlsZShSZWY8U3R5bGVSdWxl
S2V5ZnJhbWVzPiYmKTsKIAotICAgIGJvb2wgY2hlY2tSZWdpb25TdHlsZShjb25zdCBFbGVtZW50
KiByZWdpb25FbGVtZW50KTsKLQogICAgIGJvb2wgdXNlc0ZpcnN0TGluZVJ1bGVzKCkgY29uc3Qg
eyByZXR1cm4gbV9ydWxlU2V0cy5mZWF0dXJlcygpLnVzZXNGaXJzdExpbmVSdWxlczsgfQogICAg
IGJvb2wgdXNlc0ZpcnN0TGV0dGVyUnVsZXMoKSBjb25zdCB7IHJldHVybiBtX3J1bGVTZXRzLmZl
YXR1cmVzKCkudXNlc0ZpcnN0TGV0dGVyUnVsZXM7IH0KICAgICAKQEAgLTM0Niw3ICszNDIsNyBA
QCBwdWJsaWM6CiAgICAgY2xhc3MgU3RhdGUgewogICAgIHB1YmxpYzoKICAgICAgICAgU3RhdGUo
KSB7IH0KLSAgICAgICAgU3RhdGUoY29uc3QgRWxlbWVudCYsIGNvbnN0IFJlbmRlclN0eWxlKiBw
YXJlbnRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIGRvY3VtZW50RWxlbWVudFN0eWxlID0gbnVs
bHB0ciwgY29uc3QgUmVuZGVyUmVnaW9uKiByZWdpb25Gb3JTdHlsaW5nID0gbnVsbHB0ciwgY29u
c3QgU2VsZWN0b3JGaWx0ZXIqID0gbnVsbHB0cik7CisgICAgICAgIFN0YXRlKGNvbnN0IEVsZW1l
bnQmLCBjb25zdCBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKiBk
b2N1bWVudEVsZW1lbnRTdHlsZSA9IG51bGxwdHIsIGNvbnN0IFNlbGVjdG9yRmlsdGVyKiA9IG51
bGxwdHIpOwogCiAgICAgcHVibGljOgogICAgICAgICB2b2lkIGNsZWFyKCk7CkBAIC0zNjIsNyAr
MzU4LDYgQEAgcHVibGljOgogICAgICAgICBjb25zdCBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUo
KSBjb25zdCB7IHJldHVybiBtX3BhcmVudFN0eWxlOyB9CiAgICAgICAgIGNvbnN0IFJlbmRlclN0
eWxlKiByb290RWxlbWVudFN0eWxlKCkgY29uc3QgeyByZXR1cm4gbV9yb290RWxlbWVudFN0eWxl
OyB9CiAKLSAgICAgICAgY29uc3QgUmVuZGVyUmVnaW9uKiByZWdpb25Gb3JTdHlsaW5nKCkgY29u
c3QgeyByZXR1cm4gbV9yZWdpb25Gb3JTdHlsaW5nOyB9CiAgICAgICAgIEVJbnNpZGVMaW5rIGVs
ZW1lbnRMaW5rU3RhdGUoKSBjb25zdCB7IHJldHVybiBtX2VsZW1lbnRMaW5rU3RhdGU7IH0KIAog
ICAgICAgICB2b2lkIHNldEFwcGx5UHJvcGVydHlUb1JlZ3VsYXJTdHlsZShib29sIGlzQXBwbHkp
IHsgbV9hcHBseVByb3BlcnR5VG9SZWd1bGFyU3R5bGUgPSBpc0FwcGx5OyB9CkBAIC00MTUsOCAr
NDEwLDYgQEAgcHVibGljOgogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IG1f
b3duZWRQYXJlbnRTdHlsZTsKICAgICAgICAgY29uc3QgUmVuZGVyU3R5bGUqIG1fcm9vdEVsZW1l
bnRTdHlsZSB7IG51bGxwdHIgfTsKIAotICAgICAgICBjb25zdCBSZW5kZXJSZWdpb24qIG1fcmVn
aW9uRm9yU3R5bGluZyB7IG51bGxwdHIgfTsKLSAgICAgICAgCiAgICAgICAgIEVJbnNpZGVMaW5r
IG1fZWxlbWVudExpbmtTdGF0ZSB7IE5vdEluc2lkZUxpbmsgfTsKIAogICAgICAgICBib29sIG1f
YXBwbHlQcm9wZXJ0eVRvUmVndWxhclN0eWxlIHsgdHJ1ZSB9OwpAQCAtNTQxLDE5ICs1MzQsNCBA
QCBpbmxpbmUgYm9vbCBTdHlsZVJlc29sdmVyOjpoYXNTZWxlY3RvckZvCiAgICAgcmV0dXJuIG1f
cnVsZVNldHMuZmVhdHVyZXMoKS5pZHNJblJ1bGVzLmNvbnRhaW5zKGlkVmFsdWUpOwogfQogCi1p
bmxpbmUgYm9vbCBjaGVja1JlZ2lvblNlbGVjdG9yKGNvbnN0IENTU1NlbGVjdG9yKiByZWdpb25T
ZWxlY3RvciwgY29uc3QgRWxlbWVudCogcmVnaW9uRWxlbWVudCkKLXsKLSAgICBpZiAoIXJlZ2lv
blNlbGVjdG9yIHx8ICFyZWdpb25FbGVtZW50KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAg
ICBTZWxlY3RvckNoZWNrZXIgc2VsZWN0b3JDaGVja2VyKHJlZ2lvbkVsZW1lbnQtPmRvY3VtZW50
KCkpOwotICAgIGZvciAoY29uc3QgQ1NTU2VsZWN0b3IqIHMgPSByZWdpb25TZWxlY3Rvcjsgczsg
cyA9IENTU1NlbGVjdG9yTGlzdDo6bmV4dChzKSkgewotICAgICAgICBTZWxlY3RvckNoZWNrZXI6
OkNoZWNraW5nQ29udGV4dCBzZWxlY3RvckNoZWNraW5nQ29udGV4dChTZWxlY3RvckNoZWNrZXI6
Ok1vZGU6OlF1ZXJ5aW5nUnVsZXMpOwotICAgICAgICB1bnNpZ25lZCBpZ25vcmVkU3BlY2lmaWNp
dHk7Ci0gICAgICAgIGlmIChzZWxlY3RvckNoZWNrZXIubWF0Y2goKnMsICpyZWdpb25FbGVtZW50
LCBzZWxlY3RvckNoZWNraW5nQ29udGV4dCwgaWdub3JlZFNwZWNpZmljaXR5KSkKLSAgICAgICAg
ICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuY3BwCShyZXZpc2lvbiAy
MjIyMDQpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzUsNyArMzUsNiBAQAogI2luY2x1ZGUgIk1lZGlhTGlzdC5oIgogI2luY2x1ZGUgIlN0
eWxlUHJvcGVydGllcy5oIgogI2luY2x1ZGUgIlN0eWxlUnVsZUltcG9ydC5oIgotI2luY2x1ZGUg
IldlYktpdENTU1JlZ2lvblJ1bGUuaCIKICNpbmNsdWRlICJXZWJLaXRDU1NWaWV3cG9ydFJ1bGUu
aCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNzQsMTEgKzczLDYgQEAgdm9pZCBTdHlsZVJ1
bGVCYXNlOjpkZXN0cm95KCkKICAgICBjYXNlIFN1cHBvcnRzOgogICAgICAgICBkZWxldGUgZG93
bmNhc3Q8U3R5bGVSdWxlU3VwcG9ydHM+KHRoaXMpOwogICAgICAgICByZXR1cm47Ci0jaWYgRU5B
QkxFKENTU19SRUdJT05TKQotICAgIGNhc2UgUmVnaW9uOgotICAgICAgICBkZWxldGUgZG93bmNh
c3Q8U3R5bGVSdWxlUmVnaW9uPih0aGlzKTsKLSAgICAgICAgcmV0dXJuOwotI2VuZGlmCiAgICAg
Y2FzZSBJbXBvcnQ6CiAgICAgICAgIGRlbGV0ZSBkb3duY2FzdDxTdHlsZVJ1bGVJbXBvcnQ+KHRo
aXMpOwogICAgICAgICByZXR1cm47CkBAIC0xMDAsOSArOTQsNiBAQCB2b2lkIFN0eWxlUnVsZUJh
c2U6OmRlc3Ryb3koKQogICAgICAgICBkZWxldGUgZG93bmNhc3Q8U3R5bGVSdWxlQ2hhcnNldD4o
dGhpcyk7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIFVua25vd246Ci0jaWYgIUVOQUJMRShD
U1NfUkVHSU9OUykKLSAgICBjYXNlIFJlZ2lvbjoKLSNlbmRpZgogICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTEyMiwxMCArMTEzLDYgQEAg
UmVmPFN0eWxlUnVsZUJhc2U+IFN0eWxlUnVsZUJhc2U6OmNvcHkoKQogICAgICAgICByZXR1cm4g
ZG93bmNhc3Q8U3R5bGVSdWxlTWVkaWE+KCp0aGlzKS5jb3B5KCk7CiAgICAgY2FzZSBTdXBwb3J0
czoKICAgICAgICAgcmV0dXJuIGRvd25jYXN0PFN0eWxlUnVsZVN1cHBvcnRzPigqdGhpcykuY29w
eSgpOwotI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKLSAgICBjYXNlIFJlZ2lvbjoKLSAgICAgICAg
cmV0dXJuIGRvd25jYXN0PFN0eWxlUnVsZVJlZ2lvbj4oKnRoaXMpLmNvcHkoKTsKLSNlbmRpZgog
ICAgIGNhc2UgS2V5ZnJhbWVzOgogICAgICAgICByZXR1cm4gZG93bmNhc3Q8U3R5bGVSdWxlS2V5
ZnJhbWVzPigqdGhpcykuY29weSgpOwogI2lmIEVOQUJMRShDU1NfREVWSUNFX0FEQVBUQVRJT04p
CkBAIC0xMzksOSArMTI2LDYgQEAgUmVmPFN0eWxlUnVsZUJhc2U+IFN0eWxlUnVsZUJhc2U6OmNv
cHkoKQogICAgIGNhc2UgVW5rbm93bjoKICAgICBjYXNlIENoYXJzZXQ6CiAgICAgY2FzZSBLZXlm
cmFtZToKLSNpZiAhRU5BQkxFKENTU19SRUdJT05TKQotICAgIGNhc2UgUmVnaW9uOgotI2VuZGlm
CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBDUkFTSCgpOwpAQCAtMTY3LDExICsxNTEsNiBA
QCBSZWZQdHI8Q1NTUnVsZT4gU3R5bGVSdWxlQmFzZTo6Y3JlYXRlQ1NTCiAgICAgY2FzZSBTdXBw
b3J0czoKICAgICAgICAgcnVsZSA9IENTU1N1cHBvcnRzUnVsZTo6Y3JlYXRlKGRvd25jYXN0PFN0
eWxlUnVsZVN1cHBvcnRzPihzZWxmKSwgcGFyZW50U2hlZXQpOwogICAgICAgICBicmVhazsKLSNp
ZiBFTkFCTEUoQ1NTX1JFR0lPTlMpCi0gICAgY2FzZSBSZWdpb246Ci0gICAgICAgIHJ1bGUgPSBX
ZWJLaXRDU1NSZWdpb25SdWxlOjpjcmVhdGUoZG93bmNhc3Q8U3R5bGVSdWxlUmVnaW9uPihzZWxm
KSwgcGFyZW50U2hlZXQpOwotICAgICAgICBicmVhazsKLSNlbmRpZgogICAgIGNhc2UgSW1wb3J0
OgogICAgICAgICBydWxlID0gQ1NTSW1wb3J0UnVsZTo6Y3JlYXRlKGRvd25jYXN0PFN0eWxlUnVs
ZUltcG9ydD4oc2VsZiksIHBhcmVudFNoZWV0KTsKICAgICAgICAgYnJlYWs7CkBAIC0xODksOSAr
MTY4LDYgQEAgUmVmUHRyPENTU1J1bGU+IFN0eWxlUnVsZUJhc2U6OmNyZWF0ZUNTUwogICAgIGNh
c2UgVW5rbm93bjoKICAgICBjYXNlIENoYXJzZXQ6CiAgICAgY2FzZSBLZXlmcmFtZToKLSNpZiAh
RU5BQkxFKENTU19SRUdJT05TKQotICAgIGNhc2UgUmVnaW9uOgotI2VuZGlmCiAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CkBAIC00
MjcsMjUgKzQwMyw2IEBAIFN0eWxlUnVsZVN1cHBvcnRzOjpTdHlsZVJ1bGVTdXBwb3J0cyhjb24K
IHsKIH0KIAotU3R5bGVSdWxlUmVnaW9uOjpTdHlsZVJ1bGVSZWdpb24oVmVjdG9yPHN0ZDo6dW5p
cXVlX3B0cjxDU1NQYXJzZXJTZWxlY3Rvcj4+KiBzZWxlY3RvcnMsIFZlY3RvcjxSZWZQdHI8U3R5
bGVSdWxlQmFzZT4+JiBhZG9wdFJ1bGVzKQotICAgIDogU3R5bGVSdWxlR3JvdXAoUmVnaW9uLCBh
ZG9wdFJ1bGVzKQotewotICAgIG1fc2VsZWN0b3JMaXN0LmFkb3B0U2VsZWN0b3JWZWN0b3IoKnNl
bGVjdG9ycyk7Ci19Ci0KLVN0eWxlUnVsZVJlZ2lvbjo6U3R5bGVSdWxlUmVnaW9uKENTU1NlbGVj
dG9yTGlzdCYgc2VsZWN0b3JzLCBWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZUJhc2U+PiYgYWRvcHRS
dWxlcykKLSAgICA6IFN0eWxlUnVsZUdyb3VwKFJlZ2lvbiwgYWRvcHRSdWxlcykKLSAgICAsIG1f
c2VsZWN0b3JMaXN0KFdURk1vdmUoc2VsZWN0b3JzKSkKLXsKLX0KLQotU3R5bGVSdWxlUmVnaW9u
OjpTdHlsZVJ1bGVSZWdpb24oY29uc3QgU3R5bGVSdWxlUmVnaW9uJiBvKQotICAgIDogU3R5bGVS
dWxlR3JvdXAobykKLSAgICAsIG1fc2VsZWN0b3JMaXN0KG8ubV9zZWxlY3Rvckxpc3QpCi17Ci19
Ci0KLQogI2lmIEVOQUJMRShDU1NfREVWSUNFX0FEQVBUQVRJT04pCiBTdHlsZVJ1bGVWaWV3cG9y
dDo6U3R5bGVSdWxlVmlld3BvcnQoUmVmPFN0eWxlUHJvcGVydGllcz4mJiBwcm9wZXJ0aWVzKQog
ICAgIDogU3R5bGVSdWxlQmFzZShWaWV3cG9ydCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9T
dHlsZVJ1bGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlLmgJ
KHJldmlzaW9uIDIyMjIwNCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuaAkod29y
a2luZyBjb3B5KQpAQCAtNTUsNyArNTUsNiBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKENTU19ERVZJ
Q0VfQURBUFRBVElPTikKICAgICAgICAgVmlld3BvcnQgPSAxNSwKICNlbmRpZgotICAgICAgICBS
ZWdpb24gPSAxNiwKICAgICB9OwogCiAgICAgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gc3Rh
dGljX2Nhc3Q8VHlwZT4obV90eXBlKTsgfQpAQCAtNjgsNyArNjcsNiBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBpc01lZGlhUnVsZSgpIGNvbnN0IHsgcmV0dXJuIHR5cGUoKSA9PSBNZWRpYTsgfQogICAg
IGJvb2wgaXNQYWdlUnVsZSgpIGNvbnN0IHsgcmV0dXJuIHR5cGUoKSA9PSBQYWdlOyB9CiAgICAg
Ym9vbCBpc1N0eWxlUnVsZSgpIGNvbnN0IHsgcmV0dXJuIHR5cGUoKSA9PSBTdHlsZTsgfQotICAg
IGJvb2wgaXNSZWdpb25SdWxlKCkgY29uc3QgeyByZXR1cm4gdHlwZSgpID09IFJlZ2lvbjsgfQog
ICAgIGJvb2wgaXNTdXBwb3J0c1J1bGUoKSBjb25zdCB7IHJldHVybiB0eXBlKCkgPT0gU3VwcG9y
dHM7IH0KICNpZiBFTkFCTEUoQ1NTX0RFVklDRV9BREFQVEFUSU9OKQogICAgIGJvb2wgaXNWaWV3
cG9ydFJ1bGUoKSBjb25zdCB7IHJldHVybiB0eXBlKCkgPT0gVmlld3BvcnQ7IH0KQEAgLTI3Niwz
MSArMjc0LDYgQEAgcHJpdmF0ZToKICAgICBib29sIG1fY29uZGl0aW9uSXNTdXBwb3J0ZWQ7CiB9
OwogCi1jbGFzcyBTdHlsZVJ1bGVSZWdpb24gZmluYWwgOiBwdWJsaWMgU3R5bGVSdWxlR3JvdXAg
ewotcHVibGljOgotICAgIHN0YXRpYyBSZWY8U3R5bGVSdWxlUmVnaW9uPiBjcmVhdGUoVmVjdG9y
PHN0ZDo6dW5pcXVlX3B0cjxDU1NQYXJzZXJTZWxlY3Rvcj4+KiBzZWxlY3RvcnMsIFZlY3RvcjxS
ZWZQdHI8U3R5bGVSdWxlQmFzZT4+JiBhZG9wdFJ1bGVzKQotICAgIHsKLSAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgU3R5bGVSdWxlUmVnaW9uKHNlbGVjdG9ycywgYWRvcHRSdWxlcykpOwot
ICAgIH0KLSAgICAKLSAgICBzdGF0aWMgUmVmPFN0eWxlUnVsZVJlZ2lvbj4gY3JlYXRlKENTU1Nl
bGVjdG9yTGlzdCYgc2VsZWN0b3JzLCBWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZUJhc2U+PiYgYWRv
cHRSdWxlcykKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0eWxlUnVsZVJl
Z2lvbihzZWxlY3RvcnMsIGFkb3B0UnVsZXMpKTsKLSAgICB9Ci0gICAgCi0gICAgY29uc3QgQ1NT
U2VsZWN0b3JMaXN0JiBzZWxlY3Rvckxpc3QoKSBjb25zdCB7IHJldHVybiBtX3NlbGVjdG9yTGlz
dDsgfQotCi0gICAgUmVmPFN0eWxlUnVsZVJlZ2lvbj4gY29weSgpIGNvbnN0IHsgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgU3R5bGVSdWxlUmVnaW9uKCp0aGlzKSk7IH0KLQotcHJpdmF0ZToKLSAgICBT
dHlsZVJ1bGVSZWdpb24oVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxDU1NQYXJzZXJTZWxlY3Rvcj4+
KiwgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGVCYXNlPj4mIGFkb3B0UnVsZXMpOwotICAgIFN0eWxl
UnVsZVJlZ2lvbihDU1NTZWxlY3Rvckxpc3QmLCBWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZUJhc2U+
PiYpOwotICAgIAotICAgIFN0eWxlUnVsZVJlZ2lvbihjb25zdCBTdHlsZVJ1bGVSZWdpb24mKTsK
LSAgICAKLSAgICBDU1NTZWxlY3Rvckxpc3QgbV9zZWxlY3Rvckxpc3Q7Ci19OwotCiAjaWYgRU5B
QkxFKENTU19ERVZJQ0VfQURBUFRBVElPTikKIGNsYXNzIFN0eWxlUnVsZVZpZXdwb3J0IGZpbmFs
IDogcHVibGljIFN0eWxlUnVsZUJhc2UgewogcHVibGljOgpAQCAtMzc5LDEwICszNTIsNiBAQCBT
UEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OlN0CiAgICAgc3RhdGljIGJvb2wg
aXNUeXBlKGNvbnN0IFdlYkNvcmU6OlN0eWxlUnVsZUJhc2UmIHJ1bGUpIHsgcmV0dXJuIHJ1bGUu
aXNTdXBwb3J0c1J1bGUoKTsgfQogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQogCi1TUEVD
SUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OlN0eWxlUnVsZVJlZ2lvbikKLSAgICBz
dGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6U3R5bGVSdWxlQmFzZSYgcnVsZSkgeyBy
ZXR1cm4gcnVsZS5pc1JlZ2lvblJ1bGUoKTsgfQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQo
KQotCiAjaWYgRU5BQkxFKENTU19ERVZJQ0VfQURBUFRBVElPTikKIFNQRUNJQUxJWkVfVFlQRV9U
UkFJVFNfQkVHSU4oV2ViQ29yZTo6U3R5bGVSdWxlVmlld3BvcnQpCiAgICAgc3RhdGljIGJvb2wg
aXNUeXBlKGNvbnN0IFdlYkNvcmU6OlN0eWxlUnVsZUJhc2UmIHJ1bGUpIHsgcmV0dXJuIHJ1bGUu
aXNWaWV3cG9ydFJ1bGUoKTsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXRD
b250ZW50cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXRD
b250ZW50cy5jcHAJKHJldmlzaW9uIDIyMjIwNCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHls
ZVNoZWV0Q29udGVudHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NTAsMTAgKzQ1MCw2IEBAIHN0
YXRpYyBib29sIHRyYXZlcnNlU3VicmVzb3VyY2VzSW5SdWxlcygKICAgICAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIGNhc2Ug
U3R5bGVSdWxlQmFzZTo6UmVnaW9uOgotICAgICAgICAgICAgaWYgKHRyYXZlcnNlU3VicmVzb3Vy
Y2VzSW5SdWxlcyhkb3duY2FzdDxTdHlsZVJ1bGVSZWdpb24+KCpydWxlKS5jaGlsZFJ1bGVzKCks
IGhhbmRsZXIpKQotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIGNhc2UgU3R5bGVSdWxlQmFzZTo6SW1wb3J0OgogICAgICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiAjaWYgQVNTRVJUX0RJU0FCTEVECkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9jc3MvV2ViS2l0Q1NTUmVnaW9uUnVsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvY3NzL1dlYktpdENTU1JlZ2lvblJ1bGUuY3BwCShyZXZpc2lvbiAyMjIyMDQpCisrKyBT
b3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTUmVnaW9uUnVsZS5jcHAJKG5vbmV4aXN0ZW50KQpA
QCAtMSw2NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFkb2JlIFN5c3RlbXMg
SW5jb3Jwb3JhdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEy
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlCi0gKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZwotICogICAgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKLSAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nCi0gKiAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMKLSAqICAgIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIg
QkUKLSAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwKLSAqIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IKLSAqIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRgotICogVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GCi0gKiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29u
ZmlnLmgiCi0KLSNpbmNsdWRlICJXZWJLaXRDU1NSZWdpb25SdWxlLmgiCi0KLSNpbmNsdWRlICJD
U1NSdWxlTGlzdC5oIgotI2luY2x1ZGUgIlN0eWxlUnVsZS5oIgotI2luY2x1ZGUgPHd0Zi90ZXh0
L1N0cmluZ0J1aWxkZXIuaD4KLQotI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotV2ViS2l0Q1NTUmVnaW9uUnVsZTo6V2ViS2l0Q1NTUmVnaW9uUnVsZShTdHls
ZVJ1bGVSZWdpb24mIHJlZ2lvblJ1bGUsIENTU1N0eWxlU2hlZXQqIHBhcmVudCkKLSAgICA6IENT
U0dyb3VwaW5nUnVsZShyZWdpb25SdWxlLCBwYXJlbnQpCi17Ci19Ci0KLVN0cmluZyBXZWJLaXRD
U1NSZWdpb25SdWxlOjpjc3NUZXh0KCkgY29uc3QKLXsKLSAgICBTdHJpbmdCdWlsZGVyIHJlc3Vs
dDsKLSAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiQC13ZWJraXQtcmVnaW9uICIpOwotCi0gICAg
Ly8gRmlyc3QgYWRkIHRoZSBzZWxlY3RvcnMuCi0gICAgZG93bmNhc3Q8U3R5bGVSdWxlUmVnaW9u
PihtX2dyb3VwUnVsZS5nZXQoKSkuc2VsZWN0b3JMaXN0KCkuYnVpbGRTZWxlY3RvcnNUZXh0KHJl
c3VsdCk7Ci0KLSAgICAvLyBUaGVuIGFkZCB0aGUgcnVsZXMuCi0gICAgcmVzdWx0LmFwcGVuZExp
dGVyYWwoIiB7IFxuIik7Ci0gICAgYXBwZW5kQ3NzVGV4dEZvckl0ZW1zKHJlc3VsdCk7Ci0gICAg
cmVzdWx0LmFwcGVuZCgnfScpOwotICAgIHJldHVybiByZXN1bHQudG9TdHJpbmcoKTsKLX0KLQot
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nz
cy9XZWJLaXRDU1NSZWdpb25SdWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3Nz
L1dlYktpdENTU1JlZ2lvblJ1bGUuaAkocmV2aXNpb24gMjIyMjA0KQorKysgU291cmNlL1dlYkNv
cmUvY3NzL1dlYktpdENTU1JlZ2lvblJ1bGUuaAkobm9uZXhpc3RlbnQpCkBAIC0xLDU2ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUKLSAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCi0gKiAgICBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogICAg
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcKLSAqICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscwotICogICAgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVIgIkFTIElTIiBB
TkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBCRQotICogTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LAotICogT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUgotICogVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GCi0gKiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YKLSAqIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAi
Q1NTR3JvdXBpbmdSdWxlLmgiCi0KLSNpZiBFTkFCTEUoQ1NTX1JFR0lPTlMpCi0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotY2xhc3MgU3R5bGVSdWxlUmVnaW9uOwotCi1jbGFzcyBXZWJLaXRDU1NS
ZWdpb25SdWxlIGZpbmFsIDogcHVibGljIENTU0dyb3VwaW5nUnVsZSB7Ci1wdWJsaWM6Ci0gICAg
c3RhdGljIFJlZjxXZWJLaXRDU1NSZWdpb25SdWxlPiBjcmVhdGUoU3R5bGVSdWxlUmVnaW9uJiBy
dWxlLCBDU1NTdHlsZVNoZWV0KiBzaGVldCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJLaXRD
U1NSZWdpb25SdWxlKHJ1bGUsIHNoZWV0KSk7IH0KLQotICAgIENTU1J1bGU6OlR5cGUgdHlwZSgp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIFdFQktJVF9SRUdJT05fUlVMRTsgfQotICAgIFN0cmluZyBj
c3NUZXh0KCkgY29uc3QgZmluYWw7Ci0KLXByaXZhdGU6Ci0gICAgV2ViS2l0Q1NTUmVnaW9uUnVs
ZShTdHlsZVJ1bGVSZWdpb24mLCBDU1NTdHlsZVNoZWV0KiBwYXJlbnQpOwotfTsKLQotfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQotCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0NTU19SVUxFKFdlYktp
dENTU1JlZ2lvblJ1bGUsIENTU1J1bGU6OldFQktJVF9SRUdJT05fUlVMRSkKLQotI2VuZGlmIC8v
IEVOQUJMRShDU1NfUkVHSU9OUykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NS
ZWdpb25SdWxlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NT
UmVnaW9uUnVsZS5pZGwJKHJldmlzaW9uIDIyMjIwNCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9X
ZWJLaXRDU1NSZWdpb25SdWxlLmlkbAkobm9uZXhpc3RlbnQpCkBAIC0xLDM1ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZQotICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcKLSAqICAgIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiAgICBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZwot
ICogICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzCi0gKiAgICBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUiAiQVMgSVMiIEFORCBB
TlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIEJFCi0gKiBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksCi0g
KiBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SCi0gKiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YKLSAqIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RgotICogU1VDSCBEQU1BR0UuCi0gKi8KLQotWwotICAgIENvbmRpdGlvbmFsPUNTU19SRUdJT05T
LAotXSBpbnRlcmZhY2UgV2ViS2l0Q1NTUmVnaW9uUnVsZSA6IENTU1J1bGUgewotICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSBDU1NSdWxlTGlzdCBjc3NSdWxlczsKLX07Ci0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTQXRSdWxlSUQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTQXRSdWxlSUQuY3BwCShyZXZpc2lvbiAyMjIyMDQpCisrKyBT
b3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU0F0UnVsZUlELmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNTYsMTAgKzU2LDYgQEAgQ1NTQXRSdWxlSUQgY3NzQXRSdWxlSUQoU3RyaW5nVmlldyBuYW1l
KQogICAgICAgICByZXR1cm4gQ1NTQXRSdWxlV2Via2l0S2V5ZnJhbWVzOwogICAgIGlmIChlcXVh
bElnbm9yaW5nQVNDSUlDYXNlKG5hbWUsICJhcHBseSIpKQogICAgICAgICByZXR1cm4gQ1NTQXRS
dWxlQXBwbHk7Ci0jaWYgRU5BQkxFKENTU19SRUdJT05TKQotICAgIGlmIChlcXVhbElnbm9yaW5n
QVNDSUlDYXNlKG5hbWUsICItd2Via2l0LXJlZ2lvbiIpKQotICAgICAgICByZXR1cm4gQ1NTQXRS
dWxlV2Via2l0UmVnaW9uOwotI2VuZGlmCiAgICAgcmV0dXJuIENTU0F0UnVsZUludmFsaWQ7CiB9
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTQXRSdWxlSUQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU0F0UnVsZUlELmgJKHJldmlzaW9u
IDIyMjIwNCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTQXRSdWxlSUQuaAkod29y
a2luZyBjb3B5KQpAQCAtNDcsNyArNDcsNiBAQCBlbnVtIENTU0F0UnVsZUlEIHsKIAogICAgIENT
U0F0UnVsZVdlYmtpdEtleWZyYW1lcyA9IDEwLAogICAgIENTU0F0UnVsZUFwcGx5ID0gMTEsCi0g
ICAgQ1NTQXRSdWxlV2Via2l0UmVnaW9uID0gMTIKIH07CiAKIENTU0F0UnVsZUlEIGNzc0F0UnVs
ZUlEKFN0cmluZ1ZpZXcgbmFtZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NT
U1BhcnNlckZhc3RQYXRocy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL3Bh
cnNlci9DU1NQYXJzZXJGYXN0UGF0aHMuY3BwCShyZXZpc2lvbiAyMjIyMDQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckZhc3RQYXRocy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTYxMywxNyArNjEzLDkgQEAgYm9vbCBDU1NQYXJzZXJGYXN0UGF0aHM6OmlzVmFsaWRLZXl3
b3JkUAogICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZVZpc2libGUgfHwgdmFsdWVJ
RCA9PSBDU1NWYWx1ZUhpZGRlbiB8fCB2YWx1ZUlEID09IENTU1ZhbHVlU2Nyb2xsIHx8IHZhbHVl
SUQgPT0gQ1NTVmFsdWVBdXRvIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVPdmVybGF5IHx8IHZhbHVl
SUQgPT0gQ1NTVmFsdWVXZWJraXRQYWdlZFggfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVdlYmtpdFBh
Z2VkWTsKICAgICBjYXNlIENTU1Byb3BlcnR5QnJlYWtBZnRlcjoKICAgICBjYXNlIENTU1Byb3Bl
cnR5QnJlYWtCZWZvcmU6Ci0gICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlQXV0byB8
fCB2YWx1ZUlEID09IENTU1ZhbHVlQXZvaWQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUF2b2lkUGFn
ZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlUGFnZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlTGVmdCB8
fCB2YWx1ZUlEID09IENTU1ZhbHVlUmlnaHQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVJlY3RvIHx8
IHZhbHVlSUQgPT0gQ1NTVmFsdWVWZXJzbyB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQXZvaWRDb2x1
bW4gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUNvbHVtbgotI2lmIEVOQUJMRShDU1NfUkVHSU9OUykK
LSAgICAgICAgICAgIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVSZWdpb24gfHwgdmFsdWVJRCA9PSBD
U1NWYWx1ZUF2b2lkUmVnaW9uCi0jZW5kaWYKLSAgICAgICAgOworICAgICAgICByZXR1cm4gdmFs
dWVJRCA9PSBDU1NWYWx1ZUF1dG8gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUF2b2lkIHx8IHZhbHVl
SUQgPT0gQ1NTVmFsdWVBdm9pZFBhZ2UgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVBhZ2UgfHwgdmFs
dWVJRCA9PSBDU1NWYWx1ZUxlZnQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVJpZ2h0IHx8IHZhbHVl
SUQgPT0gQ1NTVmFsdWVSZWN0byB8fCB2YWx1ZUlEID09IENTU1ZhbHVlVmVyc28gfHwgdmFsdWVJ
RCA9PSBDU1NWYWx1ZUF2b2lkQ29sdW1uIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVDb2x1bW47CiAg
ICAgY2FzZSBDU1NQcm9wZXJ0eUJyZWFrSW5zaWRlOgotICAgICAgICByZXR1cm4gdmFsdWVJRCA9
PSBDU1NWYWx1ZUF1dG8gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUF2b2lkIHx8IHZhbHVlSUQgPT0g
Q1NTVmFsdWVBdm9pZFBhZ2UgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUF2b2lkQ29sdW1uCi0jaWYg
RU5BQkxFKENTU19SRUdJT05TKQotICAgICAgICAgICAgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUF2
b2lkUmVnaW9uCi0jZW5kaWYKLSAgICAgICAgOworICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBD
U1NWYWx1ZUF1dG8gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUF2b2lkIHx8IHZhbHVlSUQgPT0gQ1NT
VmFsdWVBdm9pZFBhZ2UgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUF2b2lkQ29sdW1uOwogICAgIGNh
c2UgQ1NTUHJvcGVydHlQb2ludGVyRXZlbnRzOgogICAgICAgICAvLyBub25lIHwgdmlzaWJsZVBh
aW50ZWQgfCB2aXNpYmxlRmlsbCB8IHZpc2libGVTdHJva2UgfCB2aXNpYmxlIHwKICAgICAgICAg
Ly8gcGFpbnRlZCB8IGZpbGwgfCBzdHJva2UgfCBhdXRvIHwgYWxsIHwgYm91bmRpbmctYm94CkBA
IC03ODMsMTAgKzc3NSw2IEBAIGJvb2wgQ1NTUGFyc2VyRmFzdFBhdGhzOjppc1ZhbGlkS2V5d29y
ZFAKICAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVOb3JtYWwgfHwgdmFsdWVJRCA9
PSBDU1NWYWx1ZUJyZWFrQWxsIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVLZWVwQWxsIHx8IHZhbHVl
SUQgPT0gQ1NTVmFsdWVCcmVha1dvcmQ7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRl
ckZpdDoKICAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVCb3JkZXIgfHwgdmFsdWVJ
RCA9PSBDU1NWYWx1ZUxpbmVzOwotI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKLSAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0UmVnaW9uRnJhZ21lbnQ6Ci0gICAgICAgIHJldHVybiB2YWx1ZUlEID09
IENTU1ZhbHVlQXV0byB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQnJlYWs7Ci0jZW5kaWYKICNpZiBF
TkFCTEUoVE9VQ0hfRVZFTlRTKQogICAgIGNhc2UgQ1NTUHJvcGVydHlUb3VjaEFjdGlvbjogLy8g
YXV0byB8IG1hbmlwdWxhdGlvbgogICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZUF1
dG8gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU1hbmlwdWxhdGlvbjsKQEAgLTk3Niw5ICs5NjQsNiBA
QCBib29sIENTU1BhcnNlckZhc3RQYXRoczo6aXNLZXl3b3JkUHJvcGVyCiAjaWYgRU5BQkxFKEFD
Q0VMRVJBVEVEX09WRVJGTE9XX1NDUk9MTElORykKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
T3ZlcmZsb3dTY3JvbGxpbmc6CiAjZW5kaWYKLSNpZiBFTkFCTEUoQ1NTX1JFR0lPTlMpCi0gICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFJlZ2lvbkZyYWdtZW50OgotI2VuZGlmCiAjaWYgRU5BQkxF
KENTUzNfVEVYVCkKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dEFsaWduTGFzdDoKICAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dEp1c3RpZnk6CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9jc3MvcGFyc2VyL0NTU1BhcnNlckltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VySW1wbC5jcHAJKHJldmlzaW9uIDIyMjIwNCkKKysrIFNv
dXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VySW1wbC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQ1MiwxMCArNDUyLDYgQEAgUmVmUHRyPFN0eWxlUnVsZUJhc2U+IENTU1BhcnNlckltcGw6
OmNvbgogICAgICAgICByZXR1cm4gY29uc3VtZUtleWZyYW1lc1J1bGUoZmFsc2UsIHByZWx1ZGUs
IGJsb2NrKTsKICAgICBjYXNlIENTU0F0UnVsZVBhZ2U6CiAgICAgICAgIHJldHVybiBjb25zdW1l
UGFnZVJ1bGUocHJlbHVkZSwgYmxvY2spOwotI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKLSAgICBj
YXNlIENTU0F0UnVsZVdlYmtpdFJlZ2lvbjoKLSAgICAgICAgcmV0dXJuIGNvbnN1bWVSZWdpb25S
dWxlKHByZWx1ZGUsIGJsb2NrKTsKLSNlbmRpZgogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVy
biBudWxscHRyOyAvLyBQYXJzZSBlcnJvciwgdW5yZWNvZ25pc2VkIGF0LXJ1bGUgd2l0aCBibG9j
awogICAgIH0KQEAgLTY3NywzMiArNjczLDYgQEAgUmVmUHRyPFN0eWxlUnVsZVBhZ2U+IENTU1Bh
cnNlckltcGw6OmNvbgogICAgIHJldHVybiBwYWdlOwogfQogCi0jaWYgRU5BQkxFKENTU19SRUdJ
T05TKQotUmVmUHRyPFN0eWxlUnVsZVJlZ2lvbj4gQ1NTUGFyc2VySW1wbDo6Y29uc3VtZVJlZ2lv
blJ1bGUoQ1NTUGFyc2VyVG9rZW5SYW5nZSBwcmVsdWRlLCBDU1NQYXJzZXJUb2tlblJhbmdlIGJs
b2NrKQotewotICAgIENTU1NlbGVjdG9yTGlzdCBzZWxlY3Rvckxpc3QgPSBDU1NTZWxlY3RvclBh
cnNlcjo6cGFyc2VTZWxlY3RvcihwcmVsdWRlLCBtX2NvbnRleHQsIG1fc3R5bGVTaGVldC5nZXQo
KSk7Ci0gICAgaWYgKCFzZWxlY3Rvckxpc3QuaXNWYWxpZCgpKQotICAgICAgICByZXR1cm4gbnVs
bHB0cjsgLy8gUGFyc2UgZXJyb3IsIGludmFsaWQgc2VsZWN0b3IgbGlzdAotCi0gICAgaWYgKG1f
b2JzZXJ2ZXJXcmFwcGVyKSB7Ci0gICAgICAgIG1fb2JzZXJ2ZXJXcmFwcGVyLT5vYnNlcnZlcigp
LnN0YXJ0UnVsZUhlYWRlcihTdHlsZVJ1bGU6OlJlZ2lvbiwgbV9vYnNlcnZlcldyYXBwZXItPnN0
YXJ0T2Zmc2V0KHByZWx1ZGUpKTsKLSAgICAgICAgbV9vYnNlcnZlcldyYXBwZXItPm9ic2VydmVy
KCkuZW5kUnVsZUhlYWRlcihtX29ic2VydmVyV3JhcHBlci0+ZW5kT2Zmc2V0KHByZWx1ZGUpKTsK
LSAgICAgICAgbV9vYnNlcnZlcldyYXBwZXItPm9ic2VydmVyKCkuc3RhcnRSdWxlQm9keShtX29i
c2VydmVyV3JhcHBlci0+cHJldmlvdXNUb2tlblN0YXJ0T2Zmc2V0KGJsb2NrKSk7Ci0gICAgfQot
ICAgIAotICAgIFZlY3RvcjxSZWZQdHI8U3R5bGVSdWxlQmFzZT4+IHJ1bGVzOwotICAgIGNvbnN1
bWVSdWxlTGlzdChibG9jaywgUmVndWxhclJ1bGVMaXN0LCBbJnJ1bGVzXShSZWZQdHI8U3R5bGVS
dWxlQmFzZT4gcnVsZSkgewotICAgICAgICBydWxlcy5hcHBlbmQocnVsZSk7Ci0gICAgfSk7Ci0g
ICAgCi0gICAgaWYgKG1fb2JzZXJ2ZXJXcmFwcGVyKQotICAgICAgICBtX29ic2VydmVyV3JhcHBl
ci0+b2JzZXJ2ZXIoKS5lbmRSdWxlQm9keShtX29ic2VydmVyV3JhcHBlci0+ZW5kT2Zmc2V0KGJs
b2NrKSk7Ci0gICAgCi0gICAgcmV0dXJuIFN0eWxlUnVsZVJlZ2lvbjo6Y3JlYXRlKHNlbGVjdG9y
TGlzdCwgcnVsZXMpOwotCi19Ci0jZW5kaWYKLQogLy8gRklYTUUtTkVXUEFSU0VSOiBTdXBwb3J0
ICJhcHBseSIKIC8qdm9pZCBDU1NQYXJzZXJJbXBsOjpjb25zdW1lQXBwbHlSdWxlKENTU1BhcnNl
clRva2VuUmFuZ2UgcHJlbHVkZSkKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIv
Q1NTUGFyc2VySW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIv
Q1NTUGFyc2VySW1wbC5oCShyZXZpc2lvbiAyMjIyMDQpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3Mv
cGFyc2VyL0NTU1BhcnNlckltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtMTMyLDEwICsxMzIsNiBA
QCBwcml2YXRlOgogICAgIFJlZlB0cjxTdHlsZVJ1bGVGb250RmFjZT4gY29uc3VtZUZvbnRGYWNl
UnVsZShDU1NQYXJzZXJUb2tlblJhbmdlIHByZWx1ZGUsIENTU1BhcnNlclRva2VuUmFuZ2UgYmxv
Y2spOwogICAgIFJlZlB0cjxTdHlsZVJ1bGVLZXlmcmFtZXM+IGNvbnN1bWVLZXlmcmFtZXNSdWxl
KGJvb2wgd2Via2l0UHJlZml4ZWQsIENTU1BhcnNlclRva2VuUmFuZ2UgcHJlbHVkZSwgQ1NTUGFy
c2VyVG9rZW5SYW5nZSBibG9jayk7CiAgICAgUmVmUHRyPFN0eWxlUnVsZVBhZ2U+IGNvbnN1bWVQ
YWdlUnVsZShDU1NQYXJzZXJUb2tlblJhbmdlIHByZWx1ZGUsIENTU1BhcnNlclRva2VuUmFuZ2Ug
YmxvY2spOwotI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKLSAgICBSZWZQdHI8U3R5bGVSdWxlUmVn
aW9uPiBjb25zdW1lUmVnaW9uUnVsZShDU1NQYXJzZXJUb2tlblJhbmdlIHByZWx1ZGUsIENTU1Bh
cnNlclRva2VuUmFuZ2UgYmxvY2spOwotI2VuZGlmCi0gICAgLy8gVXBkYXRlcyBtX3BhcnNlZFBy
b3BlcnRpZXMKICAgICAKICAgICAvLyBGSVhNRS1ORVdQQVJTRVI6IFN1cHBvcnQgImFwcGx5Igog
ICAgIC8vIHZvaWQgY29uc3VtZUFwcGx5UnVsZShDU1NQYXJzZXJUb2tlblJhbmdlIHByZWx1ZGUp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNl
ci5jcHAJKHJldmlzaW9uIDIyMjIwNCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NT
UHJvcGVydHlQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOTAsMTEgKzI5MCw2IEBAIHN0
YXRpYyBib29sIGlzTGVnYWN5QnJlYWtQcm9wZXJ0eShDU1NQcm8KICAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0Q29sdW1uQnJlYWtBZnRlcjoKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Q29s
dW1uQnJlYWtCZWZvcmU6CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbkJyZWFrSW5z
aWRlOgotI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
UmVnaW9uQnJlYWtBZnRlcjoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0UmVnaW9uQnJlYWtC
ZWZvcmU6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFJlZ2lvbkJyZWFrSW5zaWRlOgotI2Vu
ZGlmCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwpA
QCAtMzQ5OCwxOCArMzQ5Myw2IEBAIHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVHcmlk
VGVtcGwKICAgICByZXR1cm4gQ1NTR3JpZFRlbXBsYXRlQXJlYXNWYWx1ZTo6Y3JlYXRlKGdyaWRB
cmVhTWFwLCByb3dDb3VudCwgY29sdW1uQ291bnQpOwogfQogCi0jaWYgRU5BQkxFKENTU19SRUdJ
T05TKQotc3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4gY29uc3VtZUZsb3dQcm9wZXJ0eShDU1NQYXJz
ZXJUb2tlblJhbmdlJiByYW5nZSkKLXsKLSAgICBSZWZQdHI8Q1NTVmFsdWU+IHJlc3VsdDsKLSAg
ICBpZiAocmFuZ2UucGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVOb25lKQotICAgICAgICByZXN1bHQg
PSBjb25zdW1lSWRlbnQocmFuZ2UpOwotICAgIGVsc2UKLSAgICAgICAgcmVzdWx0ID0gY29uc3Vt
ZUN1c3RvbUlkZW50KHJhbmdlKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotI2VuZGlmCi0KIHN0
YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVMaW5lQm94Q29udGFpbihDU1NQYXJzZXJUb2tl
blJhbmdlJiByYW5nZSkKIHsKICAgICBpZiAocmFuZ2UucGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVO
b25lKQpAQCAtNDI1MywxMSArNDIzNiw2IEBAIFJlZlB0cjxDU1NWYWx1ZT4gQ1NTUHJvcGVydHlQ
YXJzZXI6OnBhcnMKICAgICAgICAgaWYgKCFtX2NvbnRleHQuY3NzR3JpZExheW91dEVuYWJsZWQp
CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgcmV0dXJuIGNvbnN1bWVHcmlk
QXV0b0Zsb3cobV9yYW5nZSk7Ci0jaWYgRU5BQkxFKENTU19SRUdJT05TKQotICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRGbG93SW50bzoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Rmxvd0Zy
b206Ci0gICAgICAgIHJldHVybiBjb25zdW1lRmxvd1Byb3BlcnR5KG1fcmFuZ2UpOwotI2VuZGlm
CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdExpbmVHcmlkOgogICAgICAgICByZXR1cm4gY29u
c3VtZUxpbmVHcmlkKG1fcmFuZ2UpOwogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRJbml0aWFs
TGV0dGVyOgpAQCAtNTAwMSwxOSArNDk3OSw2IEBAIHN0YXRpYyBpbmxpbmUgQ1NTVmFsdWVJRCBt
YXBGcm9tQ29sdW1uQnIKICAgICByZXR1cm4gQ1NTVmFsdWVJbnZhbGlkOwogfQogCi0jaWYgRU5B
QkxFKENTU19SRUdJT05TKQotc3RhdGljIGlubGluZSBDU1NWYWx1ZUlEIG1hcEZyb21SZWdpb25C
cmVha0JldHdlZW4oQ1NTVmFsdWVJRCB2YWx1ZSkKLXsKLSAgICBpZiAodmFsdWUgPT0gQ1NTVmFs
dWVBbHdheXMpCi0gICAgICAgIHJldHVybiBDU1NWYWx1ZVJlZ2lvbjsKLSAgICBpZiAodmFsdWUg
PT0gQ1NTVmFsdWVBdXRvKQotICAgICAgICByZXR1cm4gdmFsdWU7Ci0gICAgaWYgKHZhbHVlID09
IENTU1ZhbHVlQXZvaWQpCi0gICAgICAgIHJldHVybiBDU1NWYWx1ZUF2b2lkUmVnaW9uOwotICAg
IHJldHVybiBDU1NWYWx1ZUludmFsaWQ7Ci19Ci0jZW5kaWYKLQogc3RhdGljIGlubGluZSBDU1NW
YWx1ZUlEIG1hcEZyb21Db2x1bW5SZWdpb25PclBhZ2VCcmVha0luc2lkZShDU1NWYWx1ZUlEIHZh
bHVlKQogewogICAgIGlmICh2YWx1ZSA9PSBDU1NWYWx1ZUF1dG8gfHwgdmFsdWUgPT0gQ1NTVmFs
dWVBdm9pZCkKQEAgLTUwMjcsMTUgKzQ5OTIsNyBAQCBzdGF0aWMgaW5saW5lIENTU1Byb3BlcnR5
SUQgbWFwRnJvbUxlZ2FjCiAgICAgICAgIHJldHVybiBDU1NQcm9wZXJ0eUJyZWFrQWZ0ZXI7CiAg
ICAgaWYgKHByb3BlcnR5ID09IENTU1Byb3BlcnR5UGFnZUJyZWFrQmVmb3JlIHx8IHByb3BlcnR5
ID09IENTU1Byb3BlcnR5V2Via2l0Q29sdW1uQnJlYWtCZWZvcmUpCiAgICAgICAgIHJldHVybiBD
U1NQcm9wZXJ0eUJyZWFrQmVmb3JlOwotI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKLSAgICBpZiAo
cHJvcGVydHkgPT0gQ1NTUHJvcGVydHlXZWJraXRSZWdpb25CcmVha0FmdGVyKQotICAgICAgICBy
ZXR1cm4gQ1NTUHJvcGVydHlCcmVha0FmdGVyOwotICAgIGlmIChwcm9wZXJ0eSA9PSBDU1NQcm9w
ZXJ0eVdlYmtpdFJlZ2lvbkJyZWFrQmVmb3JlKQotICAgICAgICByZXR1cm4gQ1NTUHJvcGVydHlC
cmVha0JlZm9yZTsKLSAgICBBU1NFUlQocHJvcGVydHkgPT0gQ1NTUHJvcGVydHlQYWdlQnJlYWtJ
bnNpZGUgfHwgcHJvcGVydHkgPT0gQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5CcmVha0luc2lkZSB8
fCBwcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eVdlYmtpdFJlZ2lvbkJyZWFrSW5zaWRlKTsKLSNlbHNl
CiAgICAgQVNTRVJUKHByb3BlcnR5ID09IENTU1Byb3BlcnR5UGFnZUJyZWFrSW5zaWRlIHx8IHBy
b3BlcnR5ID09IENTU1Byb3BlcnR5V2Via2l0Q29sdW1uQnJlYWtJbnNpZGUpOwotI2VuZGlmCiAg
ICAgcmV0dXJuIENTU1Byb3BlcnR5QnJlYWtJbnNpZGU7CiB9CiAKQEAgLTUwNTksMTMgKzUwMTYs
NiBAQCBib29sIENTU1Byb3BlcnR5UGFyc2VyOjpjb25zdW1lTGVnYWN5QnJlCiAgICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdENvbHVtbkJyZWFrQmVmb3JlOgogICAgICAgICB2YWx1ZSA9IG1hcEZy
b21Db2x1bW5CcmVha0JldHdlZW4odmFsdWUpOwogICAgICAgICBicmVhazsKLSNpZiBFTkFCTEUo
Q1NTX1JFR0lPTlMpCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFJlZ2lvbkJyZWFrQWZ0ZXI6
Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFJlZ2lvbkJyZWFrQmVmb3JlOgotICAgICAgICB2
YWx1ZSA9IG1hcEZyb21SZWdpb25CcmVha0JldHdlZW4odmFsdWUpOwotICAgICAgICBicmVhazsK
LSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0UmVnaW9uQnJlYWtJbnNpZGU6Ci0jZW5kaWYKICAg
ICBjYXNlIENTU1Byb3BlcnR5UGFnZUJyZWFrSW5zaWRlOgogICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRDb2x1bW5CcmVha0luc2lkZToKICAgICAgICAgdmFsdWUgPSBtYXBGcm9tQ29sdW1uUmVn
aW9uT3JQYWdlQnJlYWtJbnNpZGUodmFsdWUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0Nv
bnRhaW5lck5vZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Db250YWlu
ZXJOb2RlLmNwcAkocmV2aXNpb24gMjIyMjA0KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0NvbnRh
aW5lck5vZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDgsOSArMTA4LDcgQEAgc3RhdGljIGlu
bGluZSB2b2lkIGRlc3Ryb3lSZW5kZXJUcmVlSWZOZQogewogICAgIGJvb2wgaXNFbGVtZW50ID0g
aXM8RWxlbWVudD4oY2hpbGQpOwogICAgIGF1dG8gaGFzRGlzcGxheUNvbnRlbnRzID0gaXNFbGVt
ZW50ICYmIGRvd25jYXN0PEVsZW1lbnQ+KGNoaWxkKS5oYXNEaXNwbGF5Q29udGVudHMoKTsKLSAg
ICBhdXRvIGlzTmFtZWRGbG93RWxlbWVudCA9IGlzRWxlbWVudCAmJiBkb3duY2FzdDxFbGVtZW50
PihjaGlsZCkuaXNOYW1lZEZsb3dDb250ZW50RWxlbWVudCgpOwotICAgIC8vIEZJWE1FOiBHZXQg
cmlkIG9mIHRoZSBuYW1lZCBmbG93IHRlc3QuCi0gICAgaWYgKCFjaGlsZC5yZW5kZXJlcigpICYm
ICFoYXNEaXNwbGF5Q29udGVudHMgJiYgIWlzTmFtZWRGbG93RWxlbWVudCkKKyAgICBpZiAoIWNo
aWxkLnJlbmRlcmVyKCkgJiYgIWhhc0Rpc3BsYXlDb250ZW50cykKICAgICAgICAgcmV0dXJuOwog
ICAgIGlmIChpc0VsZW1lbnQpCiAgICAgICAgIFJlbmRlclRyZWVVcGRhdGVyOjp0ZWFyRG93blJl
bmRlcmVycyhkb3duY2FzdDxFbGVtZW50PihjaGlsZCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
ZG9tL0RPTU5hbWVkRmxvd0NvbGxlY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2RvbS9ET01OYW1lZEZsb3dDb2xsZWN0aW9uLmNwcAkocmV2aXNpb24gMjIyMjA0KQorKysg
U291cmNlL1dlYkNvcmUvZG9tL0RPTU5hbWVkRmxvd0NvbGxlY3Rpb24uY3BwCShub25leGlzdGVu
dCkKQEAgLTEsOTMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBBZG9iZSBTeXN0
ZW1zIEluY29ycG9yYXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykg
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZQotICogICAgY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKLSAqICAgIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCi0gKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZwotICogICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzCi0gKiAgICBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUiAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9M
REVSIEJFCi0gKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksCi0gKiBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SCi0g
KiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YKLSAqIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRgotICogU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUg
ImNvbmZpZy5oIgotI2luY2x1ZGUgIkRPTU5hbWVkRmxvd0NvbGxlY3Rpb24uaCIKLQotI2luY2x1
ZGUgIldlYktpdE5hbWVkRmxvdy5oIgotI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZ0hh
c2guaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1pbmxpbmUgRE9NTmFtZWRGbG93Q29sbGVj
dGlvbjo6RE9NTmFtZWRGbG93Q29sbGVjdGlvbihWZWN0b3I8UmVmPFdlYktpdE5hbWVkRmxvdz4+
JiYgZmxvd3MpCi0gICAgOiBtX2Zsb3dzKFdURk1vdmUoZmxvd3MpKQotewotfQotCi1SZWY8RE9N
TmFtZWRGbG93Q29sbGVjdGlvbj4gRE9NTmFtZWRGbG93Q29sbGVjdGlvbjo6Y3JlYXRlKFZlY3Rv
cjxSZWY8V2ViS2l0TmFtZWRGbG93Pj4mJiBmbG93cykKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBET01OYW1lZEZsb3dDb2xsZWN0aW9uKFdURk1vdmUoZmxvd3MpKSk7Ci19Ci0KLURPTU5h
bWVkRmxvd0NvbGxlY3Rpb246On5ET01OYW1lZEZsb3dDb2xsZWN0aW9uKCkKLXsKLX0KLQotV2Vi
S2l0TmFtZWRGbG93KiBET01OYW1lZEZsb3dDb2xsZWN0aW9uOjppdGVtKHVuc2lnbmVkIGluZGV4
KSBjb25zdAotewotICAgIGlmIChpbmRleCA+PSBtX2Zsb3dzLnNpemUoKSkKLSAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIGNvbnN0X2Nhc3Q8V2ViS2l0TmFtZWRGbG93Kj4obV9m
bG93c1tpbmRleF0ucHRyKCkpOwotfQotCi1zdHJ1Y3QgRE9NTmFtZWRGbG93Q29sbGVjdGlvbjo6
SGFzaEZ1bmN0aW9ucyB7Ci0gICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgV2ViS2l0TmFt
ZWRGbG93KiBrZXkpIHsgcmV0dXJuIEF0b21pY1N0cmluZ0hhc2g6Omhhc2goa2V5LT5uYW1lKCkp
OyB9Ci0gICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgV2ViS2l0TmFtZWRGbG93KiBhLCBjb25z
dCBXZWJLaXROYW1lZEZsb3cqIGIpIHsgcmV0dXJuIGEtPm5hbWUoKSA9PSBiLT5uYW1lKCk7IH0K
LSAgICBzdGF0aWMgY29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IGZh
bHNlOwotCi0gICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgQXRvbWljU3RyaW5nJiBrZXkp
IHsgcmV0dXJuIEF0b21pY1N0cmluZ0hhc2g6Omhhc2goa2V5KTsgfQotICAgIHN0YXRpYyBib29s
IGVxdWFsKGNvbnN0IFdlYktpdE5hbWVkRmxvdyogYSwgY29uc3QgQXRvbWljU3RyaW5nJiBiKSB7
IHJldHVybiBhLT5uYW1lKCkgPT0gYjsgfQotfTsKLQotV2ViS2l0TmFtZWRGbG93KiBET01OYW1l
ZEZsb3dDb2xsZWN0aW9uOjpuYW1lZEl0ZW0oY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKSBjb25z
dAotewotICAgIGlmIChtX2Zsb3dzQnlOYW1lLmlzRW1wdHkoKSkgewotICAgICAgICAvLyBObyBu
ZWVkIHRvIG9wdGltaXplIHRoZSBjYXNlIHdoZXJlIG1fZmxvd3MgaXMgZW1wdHk7IHdpbGwgZG8g
bm90aGluZyB2ZXJ5IHF1aWNrbHkuCi0gICAgICAgIGZvciAoYXV0byYgZmxvdyA6IG1fZmxvd3Mp
Ci0gICAgICAgICAgICBtX2Zsb3dzQnlOYW1lLmFkZChjb25zdF9jYXN0PFdlYktpdE5hbWVkRmxv
dyo+KGZsb3cucHRyKCkpKTsKLSAgICB9Ci0gICAgYXV0byBpdCA9IG1fZmxvd3NCeU5hbWUuZmlu
ZDxIYXNoRnVuY3Rpb25zPihuYW1lKTsKLSAgICBpZiAoaXQgPT0gbV9mbG93c0J5TmFtZS5lbmQo
KSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuICppdDsKLX0KLQotY29uc3Qg
VmVjdG9yPEF0b21pY1N0cmluZz4mIERPTU5hbWVkRmxvd0NvbGxlY3Rpb246OnN1cHBvcnRlZFBy
b3BlcnR5TmFtZXMoKQotewotICAgIGlmIChtX2Zsb3dOYW1lcy5pc0VtcHR5KCkpIHsKLSAgICAg
ICAgLy8gTm8gbmVlZCB0byBvcHRpbWl6ZSB0aGUgY2FzZSB3aGVyZSBtX2Zsb3dzIGlzIGVtcHR5
OyB3aWxsIGRvIG5vdGhpbmcgcmVsYXRpdmVseSBxdWlja2x5LgotICAgICAgICBtX2Zsb3dOYW1l
cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1fZmxvd3Muc2l6ZSgpKTsKLSAgICAgICAgZm9yIChh
dXRvJiBmbG93IDogbV9mbG93cykKLSAgICAgICAgICAgIG1fZmxvd05hbWVzLnVuY2hlY2tlZEFw
cGVuZChmbG93LT5uYW1lKCkpOwotICAgIH0KLSAgICByZXR1cm4gbV9mbG93TmFtZXM7Ci19Ci0K
LX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9ET01OYW1l
ZEZsb3dDb2xsZWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RPTU5h
bWVkRmxvd0NvbGxlY3Rpb24uaAkocmV2aXNpb24gMjIyMjA0KQorKysgU291cmNlL1dlYkNvcmUv
ZG9tL0RPTU5hbWVkRmxvd0NvbGxlY3Rpb24uaAkobm9uZXhpc3RlbnQpCkBAIC0xLDY3ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUKLSAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCi0gKiAgICBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogICAg
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcKLSAqICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscwotICogICAgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVIgIkFTIElTIiBB
TkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBCRQotICogTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LAotICogT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUgotICogVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GCi0gKiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YKLSAqIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSA8
d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgotI2luY2x1ZGUgPHd0Zi9S
ZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLWNsYXNzIFdlYktpdE5hbWVkRmxvdzsKLQotY2xhc3MgRE9NTmFtZWRGbG93Q29sbGVj
dGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPERPTU5hbWVkRmxvd0NvbGxlY3Rpb24+IHsKLXB1Ymxp
YzoKLSAgICBzdGF0aWMgUmVmPERPTU5hbWVkRmxvd0NvbGxlY3Rpb24+IGNyZWF0ZShWZWN0b3I8
UmVmPFdlYktpdE5hbWVkRmxvdz4+JiYpOwotICAgIH5ET01OYW1lZEZsb3dDb2xsZWN0aW9uKCk7
Ci0KLSAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdDsKLSAgICBXZWJLaXROYW1lZEZsb3cqIGl0
ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0OwotICAgIFdlYktpdE5hbWVkRmxvdyogbmFtZWRJdGVt
KGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkgY29uc3Q7Ci0gICAgY29uc3QgVmVjdG9yPEF0b21p
Y1N0cmluZz4mIHN1cHBvcnRlZFByb3BlcnR5TmFtZXMoKTsKLQotcHJpdmF0ZToKLSAgICBzdHJ1
Y3QgSGFzaEZ1bmN0aW9uczsKLQotICAgIGV4cGxpY2l0IERPTU5hbWVkRmxvd0NvbGxlY3Rpb24o
VmVjdG9yPFJlZjxXZWJLaXROYW1lZEZsb3c+PiYmKTsKLQotICAgIGNvbnN0IFZlY3RvcjxSZWY8
V2ViS2l0TmFtZWRGbG93Pj4gbV9mbG93czsKLSAgICBtdXRhYmxlIEhhc2hTZXQ8V2ViS2l0TmFt
ZWRGbG93KiwgSGFzaEZ1bmN0aW9ucz4gbV9mbG93c0J5TmFtZTsKLSAgICBtdXRhYmxlIFZlY3Rv
cjxBdG9taWNTdHJpbmc+IG1fZmxvd05hbWVzOwotfTsKLQotaW5saW5lIHVuc2lnbmVkIERPTU5h
bWVkRmxvd0NvbGxlY3Rpb246Omxlbmd0aCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fZmxvd3Mu
c2l6ZSgpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9kb20vRE9NTmFtZWRGbG93Q29sbGVjdGlvbi5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvZG9tL0RPTU5hbWVkRmxvd0NvbGxlY3Rpb24uaWRsCShyZXZpc2lvbiAyMjIyMDQpCisr
KyBTb3VyY2UvV2ViQ29yZS9kb20vRE9NTmFtZWRGbG93Q29sbGVjdGlvbi5pZGwJKG5vbmV4aXN0
ZW50KQpAQCAtMSw0MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEFkb2JlIFN5
c3RlbXMgSW5jb3Jwb3JhdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUKLSAqICAgIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCi0gKiAgICBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQotICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKLSAqICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscwotICogICAgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVIgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
IEhPTERFUiBCRQotICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLAotICogT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UgotICogVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GCi0gKiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKLSAqIFNVQ0ggREFNQUdFLgotICovCi0KLVsKLSAg
ICBDb25kaXRpb25hbD1DU1NfUkVHSU9OUywKLSAgICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxl
LAotICAgIEludGVyZmFjZU5hbWU9V2ViS2l0TmFtZWRGbG93Q29sbGVjdGlvbiwKLSAgICBKU0dl
bmVyYXRlVG9KU09iamVjdCwKLSAgICBMZWdhY3lVbmVudW1lcmFibGVOYW1lZFByb3BlcnRpZXMs
Ci0gICAgTm9JbnRlcmZhY2VPYmplY3QKLV0gaW50ZXJmYWNlIERPTU5hbWVkRmxvd0NvbGxlY3Rp
b24gewotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxlbmd0aDsKLSAgICBn
ZXR0ZXIgV2ViS2l0TmFtZWRGbG93PyBpdGVtKHVuc2lnbmVkIGxvbmcgaW5kZXgpOwotICAgIGdl
dHRlciBXZWJLaXROYW1lZEZsb3c/IG5hbWVkSXRlbShET01TdHJpbmcgbmFtZSk7Ci19OwpJbmRl
eDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCShyZXZpc2lvbiAyMjIyMDQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MSw3ICs1MSw2IEBACiAj
aW5jbHVkZSAiQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiQ3VzdG9tRXZlbnQu
aCIKICNpbmNsdWRlICJET01JbXBsZW1lbnRhdGlvbi5oIgotI2luY2x1ZGUgIkRPTU5hbWVkRmxv
d0NvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRlICJEYXRlQ29t
cG9uZW50cy5oIgogI2luY2x1ZGUgIkRlYnVnUGFnZU92ZXJsYXlzLmgiCkBAIC0xMTgsNyArMTE3
LDYgQEAKICNpbmNsdWRlICJNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzLmgiCiAjaW5jbHVk
ZSAiTXV0YXRpb25FdmVudC5oIgogI2luY2x1ZGUgIk5hbWVOb2RlTGlzdC5oIgotI2luY2x1ZGUg
Ik5hbWVkRmxvd0NvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJOYXZpZ2F0aW9uRGlzYWJsZXIuaCIK
ICNpbmNsdWRlICJOYXZpZ2F0aW9uU2NoZWR1bGVyLmgiCiAjaW5jbHVkZSAiTmVzdGluZ0xldmVs
SW5jcmVtZW50ZXIuaCIKQEAgLTExNTMsMjggKzExNTEsNiBAQCBib29sIERvY3VtZW50Ojppc0NT
U0dyaWRMYXlvdXRFbmFibGVkKCkgCiAgICAgcmV0dXJuIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6
OnNoYXJlZEZlYXR1cmVzKCkuaXNDU1NHcmlkTGF5b3V0RW5hYmxlZCgpOwogfQogCi0jaWYgRU5B
QkxFKENTU19SRUdJT05TKQotCi1SZWZQdHI8RE9NTmFtZWRGbG93Q29sbGVjdGlvbj4gRG9jdW1l
bnQ6OndlYmtpdEdldE5hbWVkRmxvd3MoKQotewotICAgIGlmICghcmVuZGVyVmlldygpKQotICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIHVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKLQotICAg
IHJldHVybiBuYW1lZEZsb3dzKCkuY3JlYXRlQ1NTT01TbmFwc2hvdCgpOwotfQotCi0jZW5kaWYK
LQotTmFtZWRGbG93Q29sbGVjdGlvbiYgRG9jdW1lbnQ6Om5hbWVkRmxvd3MoKQotewotICAgIGlm
ICghbV9uYW1lZEZsb3dzKQotICAgICAgICBtX25hbWVkRmxvd3MgPSBOYW1lZEZsb3dDb2xsZWN0
aW9uOjpjcmVhdGUodGhpcyk7Ci0KLSAgICByZXR1cm4gKm1fbmFtZWRGbG93czsKLX0KLQogRXhj
ZXB0aW9uT3I8UmVmPEVsZW1lbnQ+PiBEb2N1bWVudDo6Y3JlYXRlRWxlbWVudE5TKGNvbnN0IEF0
b21pY1N0cmluZyYgbmFtZXNwYWNlVVJJLCBjb25zdCBTdHJpbmcmIHF1YWxpZmllZE5hbWUpCiB7
CiAgICAgYXV0byBwYXJzZVJlc3VsdCA9IHBhcnNlUXVhbGlmaWVkTmFtZShuYW1lc3BhY2VVUkks
IHF1YWxpZmllZE5hbWUpOwpAQCAtMjAzNiwxMCArMjAxMiw4IEBAIGJvb2wgRG9jdW1lbnQ6OnVw
ZGF0ZUxheW91dElmRGltZW5zaW9uc08KICAgICB1cGRhdGVTdHlsZUlmTmVlZGVkKCk7CiAKICAg
ICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gZWxlbWVudC5yZW5kZXJlcigpOwotICAgIGlmICgh
cmVuZGVyZXIgfHwgcmVuZGVyZXItPm5lZWRzTGF5b3V0KCkgfHwgZWxlbWVudC5yZW5kZXJOYW1l
ZEZsb3dGcmFnbWVudCgpKSB7CisgICAgaWYgKCFyZW5kZXJlciB8fCByZW5kZXJlci0+bmVlZHNM
YXlvdXQoKSkgewogICAgICAgICAvLyBJZiB3ZSBkb24ndCBoYXZlIGEgcmVuZGVyZXIgb3IgaWYg
dGhlIHJlbmRlcmVyIG5lZWRzIGxheW91dCBmb3IgYW55IHJlYXNvbiwgZ2l2ZSB1cC4KLSAgICAg
ICAgLy8gTmFtZWQgZmxvd3MgY2FuIGhhdmUgYXV0byBoZWlnaHQsIHNvIGRvbid0IHRyeSB0byBl
bmZvcmNlIHRoZSBvcHRpbWl6YXRpb24gaW4gdGhpcyBjYXNlLgotICAgICAgICAvLyBUaGUgMi1w
YXNzIG5hdHVyZSBvZiBhdXRvIGhlaWdodCBuYW1lZCBmbG93IGxheW91dCBtZWFucyB0aGUgcmVn
aW9uIG1heSBub3QgYmUgZGlydHkgeWV0LgogICAgICAgICByZXF1aXJlRnVsbExheW91dCA9IHRy
dWU7CiAgICAgfQogCkBAIC0yMDg1LDcgKzIwNTksNyBAQCBib29sIERvY3VtZW50Ojp1cGRhdGVM
YXlvdXRJZkRpbWVuc2lvbnNPCiAgICAgICAgICAgICBpZiAoIWN1cnJlbnRCb3gtPmlzUmVuZGVy
QmxvY2tGbG93KCkgfHwgY3VycmVudEJveC0+Zmxvd1RocmVhZENvbnRhaW5pbmdCbG9jaygpIHx8
IGN1cnJlbnRCb3gtPmlzV3JpdGluZ01vZGVSb290KCkpIHsKICAgICAgICAgICAgICAgICAvLyBG
SVhNRTogRm9yIG5vdyByZXF1aXJlIG9ubHkgYmxvY2sgZmxvd3MgYWxsIHRoZSB3YXkgYmFjayB0
byB0aGUgcm9vdC4gVGhpcyBsaW1pdHMgdGhlIG9wdGltaXphdGlvbgogICAgICAgICAgICAgICAg
IC8vIGZvciBub3csIGFuZCB3ZSdsbCBleHBhbmQgaXQgaW4gZnV0dXJlIHBhdGNoZXMgdG8gYXBw
bHkgdG8gbW9yZSBhbmQgbW9yZSBzY2VuYXJpb3MuCi0gICAgICAgICAgICAgICAgLy8gRGlzYWxs
b3cgcmVnaW9ucy9jb2x1bW5zIGZyb20gaGF2aW5nIHRoZSBvcHRpbWl6YXRpb24uCisgICAgICAg
ICAgICAgICAgLy8gRGlzYWxsb3cgY29sdW1ucyBmcm9tIGhhdmluZyB0aGUgb3B0aW1pemF0aW9u
LgogICAgICAgICAgICAgICAgIC8vIEdpdmUgdXAgaWYgdGhlIHdyaXRpbmcgbW9kZSBjaGFuZ2Vz
IGF0IGFsbCBpbiB0aGUgY29udGFpbmluZyBibG9jayBjaGFpbi4KICAgICAgICAgICAgICAgICBy
ZXF1aXJlRnVsbExheW91dCA9IHRydWU7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuaAkocmV2aXNpb24gMjIyMjA0KQorKysgU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTk3LDcgKzk3LDYgQEAgY2xhc3MgQ2hhcmFj
dGVyRGF0YTsKIGNsYXNzIENvbW1lbnQ7CiBjbGFzcyBDb25zdGFudFByb3BlcnR5TWFwOwogY2xh
c3MgRE9NSW1wbGVtZW50YXRpb247Ci1jbGFzcyBET01OYW1lZEZsb3dDb2xsZWN0aW9uOwogY2xh
c3MgRE9NU2VsZWN0aW9uOwogY2xhc3MgRE9NV2luZG93OwogY2xhc3MgRE9NV3JhcHBlcldvcmxk
OwpAQCAtMTQ2LDcgKzE0NSw2IEBAIGNsYXNzIE1lZGlhUGxheWJhY2tUYXJnZXRDbGllbnQ7CiBj
bGFzcyBNZWRpYVF1ZXJ5TGlzdDsKIGNsYXNzIE1lZGlhUXVlcnlNYXRjaGVyOwogY2xhc3MgTW91
c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0czsKLWNsYXNzIE5hbWVkRmxvd0NvbGxlY3Rpb247CiBj
bGFzcyBOb2RlRmlsdGVyOwogY2xhc3MgTm9kZUl0ZXJhdG9yOwogY2xhc3MgUGFnZTsKQEAgLTQw
OCwxMSArNDA2LDYgQEAgcHVibGljOgogICAgIHN0YXRpYyBDdXN0b21FbGVtZW50TmFtZVZhbGlk
YXRpb25TdGF0dXMgdmFsaWRhdGVDdXN0b21FbGVtZW50TmFtZShjb25zdCBBdG9taWNTdHJpbmcm
KTsKIAogICAgIGJvb2wgaXNDU1NHcmlkTGF5b3V0RW5hYmxlZCgpIGNvbnN0OwotI2lmIEVOQUJM
RShDU1NfUkVHSU9OUykKLSAgICBSZWZQdHI8RE9NTmFtZWRGbG93Q29sbGVjdGlvbj4gd2Via2l0
R2V0TmFtZWRGbG93cygpOwotI2VuZGlmCi0KLSAgICBOYW1lZEZsb3dDb2xsZWN0aW9uJiBuYW1l
ZEZsb3dzKCk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8UmFuZ2U+IGNhcmV0UmFuZ2VG
cm9tUG9pbnQoaW50IHgsIGludCB5KTsKICAgICBSZWZQdHI8UmFuZ2U+IGNhcmV0UmFuZ2VGcm9t
UG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmIGNsaWVudFBvaW50KTsKQEAgLTE2NzIsOCArMTY2NSw2
IEBAIHByaXZhdGU6CiAKICAgICBUaW1lciBtX3Zpc3VhbFVwZGF0ZXNTdXBwcmVzc2lvblRpbWVy
OwogCi0gICAgUmVmUHRyPE5hbWVkRmxvd0NvbGxlY3Rpb24+IG1fbmFtZWRGbG93czsKLQogICAg
IHZvaWQgY2xlYXJTaGFyZWRPYmplY3RQb29sKCk7CiAgICAgVGltZXIgbV9zaGFyZWRPYmplY3RQ
b29sQ2xlYXJUaW1lcjsKIApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmlkbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRsCShyZXZpc2lvbiAy
MjIyMDQpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRsCSh3b3JraW5nIGNvcHkp
CkBAIC0xODksOSArMTg5LDYgQEAgdHlwZWRlZiAoCiAgICAgLy8gRklYTUU6IFRoaXMgaXMgbm90
IHN0YW5kYXJkIGFuZCBoYXMgYmVlbiBkcm9wcGVkIGZyb20gQmxpbmsgYWxyZWFkeS4KICAgICBS
ZW5kZXJpbmdDb250ZXh0PyBnZXRDU1NDYW52YXNDb250ZXh0KERPTVN0cmluZyBjb250ZXh0SWQs
IERPTVN0cmluZyBuYW1lLCBsb25nIHdpZHRoLCBsb25nIGhlaWdodCk7CiAKLSAgICAvLyBOb24g
c3RhbmRhcmQgKGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9yZWZlcmVuY2Uvd2Via2l0anMv
ZG9jdW1lbnQvMTYzMzg2My13ZWJraXRnZXRuYW1lZGZsb3dzKS4KLSAgICBbQ29uZGl0aW9uYWw9
Q1NTX1JFR0lPTlNdIERPTU5hbWVkRmxvd0NvbGxlY3Rpb24gd2Via2l0R2V0TmFtZWRGbG93cygp
OwotCiAgICAgLy8gTm9uIHN0YW5kYXJkLCB0byBicmluZyB1cCB3aXRoIHN0YW5kYXJkcyB3b3Jr
aW5nIGdyb3VwLgogICAgIFtFbmFibGVkQnlTZXR0aW5nPVN0b3JhZ2VBY2Nlc3NBUEldIHJlYWRv
bmx5IGF0dHJpYnV0ZSBib29sZWFuIGhhc1N0b3JhZ2VBY2Nlc3M7CiAgICAgW0VuYWJsZWRCeVNl
dHRpbmc9U3RvcmFnZUFjY2Vzc0FQSV0gUHJvbWlzZTxib29sZWFuPiByZXF1ZXN0U3RvcmFnZUFj
Y2VzcygpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAkocmV2aXNpb24gMjIyMjA0KQorKysg
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCw3ICs0
OCw2IEBACiAjaW5jbHVkZSAiRXZlbnREaXNwYXRjaGVyLmgiCiAjaW5jbHVkZSAiRXZlbnRIYW5k
bGVyLmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgotI2luY2x1ZGUgIkZsb3dUaHJlYWRDb250
cm9sbGVyLmgiCiAjaW5jbHVkZSAiRm9jdXNDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiRm9jdXNF
dmVudC5oIgogI2luY2x1ZGUgIkZyYW1lU2VsZWN0aW9uLmgiCkBAIC03OSwxMCArNzgsOCBAQAog
I2luY2x1ZGUgIk5vZGVSZW5kZXJTdHlsZS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtV2hlZWxFdmVu
dC5oIgogI2luY2x1ZGUgIlBvaW50ZXJMb2NrQ29udHJvbGxlci5oIgotI2luY2x1ZGUgIlJlbmRl
ckZsb3dUaHJlYWQuaCIKICNpbmNsdWRlICJSZW5kZXJMYXllci5oIgogI2luY2x1ZGUgIlJlbmRl
ckxpc3RCb3guaCIKLSNpbmNsdWRlICJSZW5kZXJOYW1lZEZsb3dGcmFnbWVudC5oIgogI2luY2x1
ZGUgIlJlbmRlclJlZ2lvbi5oIgogI2luY2x1ZGUgIlJlbmRlclRoZW1lLmgiCiAjaW5jbHVkZSAi
UmVuZGVyVHJlZVVwZGF0ZXIuaCIKQEAgLTE4MiwxNSArMTc5LDYgQEAgRWxlbWVudDo6RWxlbWVu
dChjb25zdCBRdWFsaWZpZWROYW1lJiB0YQogCiBFbGVtZW50Ojp+RWxlbWVudCgpCiB7Ci0jaWZu
ZGVmIE5ERUJVRwotICAgIGlmIChkb2N1bWVudCgpLmhhc0xpdmluZ1JlbmRlclRyZWUoKSkgewot
ICAgICAgICAvLyBXaGVuIHRoZSBkb2N1bWVudCBpcyBub3QgZGVzdHJveWVkLCBhbiBlbGVtZW50
IHRoYXQgd2FzIHBhcnQgb2YgYSBuYW1lZCBmbG93Ci0gICAgICAgIC8vIGNvbnRlbnQgbm9kZXMg
c2hvdWxkIGhhdmUgYmVlbiByZW1vdmVkIGZyb20gdGhlIGNvbnRlbnQgbm9kZXMgY29sbGVjdGlv
bgotICAgICAgICAvLyBhbmQgdGhlIGlzTmFtZWRGbG93Q29udGVudEVsZW1lbnQgZmxhZyByZXNl
dC4KLSAgICAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oIWlzTmFtZWRGbG93
Q29udGVudEVsZW1lbnQoKSk7Ci0gICAgfQotI2VuZGlmCi0KICAgICBBU1NFUlQoIWJlZm9yZVBz
ZXVkb0VsZW1lbnQoKSk7CiAgICAgQVNTRVJUKCFhZnRlclBzZXVkb0VsZW1lbnQoKSk7CiAKQEAg
LTE3ODMsMTIgKzE3NzEsNiBAQCB2b2lkIEVsZW1lbnQ6OnJlbW92ZWRGcm9tKENvbnRhaW5lck5v
ZGUmCiAjZW5kaWYKIH0KIAotdm9pZCBFbGVtZW50Ojp1bnJlZ2lzdGVyTmFtZWRGbG93Q29udGVu
dEVsZW1lbnQoKQotewotICAgIGlmIChpc05hbWVkRmxvd0NvbnRlbnRFbGVtZW50KCkgJiYgZG9j
dW1lbnQoKS5yZW5kZXJWaWV3KCkpCi0gICAgICAgIGRvY3VtZW50KCkucmVuZGVyVmlldygpLT5m
bG93VGhyZWFkQ29udHJvbGxlcigpLnVucmVnaXN0ZXJOYW1lZEZsb3dDb250ZW50RWxlbWVudCgq
dGhpcyk7Ci19Ci0KIFNoYWRvd1Jvb3QqIEVsZW1lbnQ6OnNoYWRvd1Jvb3QoKSBjb25zdAogewog
ICAgIHJldHVybiBoYXNSYXJlRGF0YSgpID8gZWxlbWVudFJhcmVEYXRhKCktPnNoYWRvd1Jvb3Qo
KSA6IG51bGxwdHI7CkBAIC0yMTEyLDE2ICsyMDk0LDYgQEAgdm9pZCBFbGVtZW50OjpzZXRBdHRy
aWJ1dGVFdmVudExpc3RlbmVyKAogICAgIHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnRU
eXBlLCBKU0xhenlFdmVudExpc3RlbmVyOjpjcmVhdGUoKnRoaXMsIGF0dHJpYnV0ZU5hbWUsIGF0
dHJpYnV0ZVZhbHVlKSwgbWFpblRocmVhZE5vcm1hbFdvcmxkKCkpOwogfQogCi12b2lkIEVsZW1l
bnQ6OnNldElzTmFtZWRGbG93Q29udGVudEVsZW1lbnQoKQotewotICAgIGVuc3VyZUVsZW1lbnRS
YXJlRGF0YSgpLnNldElzTmFtZWRGbG93Q29udGVudEVsZW1lbnQodHJ1ZSk7Ci19Ci0KLXZvaWQg
RWxlbWVudDo6Y2xlYXJJc05hbWVkRmxvd0NvbnRlbnRFbGVtZW50KCkKLXsKLSAgICBlbnN1cmVF
bGVtZW50UmFyZURhdGEoKS5zZXRJc05hbWVkRmxvd0NvbnRlbnRFbGVtZW50KGZhbHNlKTsKLX0K
LQogdm9pZCBFbGVtZW50OjpyZW1vdmVBbGxFdmVudExpc3RlbmVycygpCiB7CiAgICAgQ29udGFp
bmVyTm9kZTo6cmVtb3ZlQWxsRXZlbnRMaXN0ZW5lcnMoKTsKQEAgLTI4NTMsMTIgKzI4MjUsNiBA
QCBib29sIEVsZW1lbnQ6OnJhcmVEYXRhU3R5bGVBZmZlY3RlZEJ5Rm9jCiAgICAgcmV0dXJuIGVs
ZW1lbnRSYXJlRGF0YSgpLT5zdHlsZUFmZmVjdGVkQnlGb2N1c1dpdGhpbigpOwogfQogCi1ib29s
IEVsZW1lbnQ6OnJhcmVEYXRhSXNOYW1lZEZsb3dDb250ZW50RWxlbWVudCgpIGNvbnN0Ci17Ci0g
ICAgQVNTRVJUKGhhc1JhcmVEYXRhKCkpOwotICAgIHJldHVybiBlbGVtZW50UmFyZURhdGEoKS0+
aXNOYW1lZEZsb3dDb250ZW50RWxlbWVudCgpOwotfQotCiBib29sIEVsZW1lbnQ6OnJhcmVEYXRh
U3R5bGVBZmZlY3RlZEJ5QWN0aXZlKCkgY29uc3QKIHsKICAgICBBU1NFUlQoaGFzUmFyZURhdGEo
KSk7CkBAIC0yODg5LDE2ICsyODU1LDYgQEAgdW5zaWduZWQgRWxlbWVudDo6cmFyZURhdGFDaGls
ZEluZGV4KCkgYwogICAgIHJldHVybiBlbGVtZW50UmFyZURhdGEoKS0+Y2hpbGRJbmRleCgpOwog
fQogCi12b2lkIEVsZW1lbnQ6OnNldFJlZ2lvbk92ZXJzZXRTdGF0ZShSZWdpb25PdmVyc2V0U3Rh
dGUgc3RhdGUpCi17Ci0gICAgZW5zdXJlRWxlbWVudFJhcmVEYXRhKCkuc2V0UmVnaW9uT3ZlcnNl
dFN0YXRlKHN0YXRlKTsKLX0KLQotUmVnaW9uT3ZlcnNldFN0YXRlIEVsZW1lbnQ6OnJlZ2lvbk92
ZXJzZXRTdGF0ZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGhhc1JhcmVEYXRhKCkgPyBlbGVtZW50
UmFyZURhdGEoKS0+cmVnaW9uT3ZlcnNldFN0YXRlKCkgOiBSZWdpb25VbmRlZmluZWQ7Ci19Ci0K
IEF0b21pY1N0cmluZyBFbGVtZW50Ojpjb21wdXRlSW5oZXJpdGVkTGFuZ3VhZ2UoKSBjb25zdAog
ewogICAgIGlmIChjb25zdCBFbGVtZW50RGF0YSogZWxlbWVudERhdGEgPSB0aGlzLT5lbGVtZW50
RGF0YSgpKSB7CkBAIC0zMTgxLDc2ICszMTM3LDYgQEAgYm9vbCBFbGVtZW50Ojppc1NwZWxsQ2hl
Y2tpbmdFbmFibGVkKCkgYwogICAgIHJldHVybiB0cnVlOwogfQogCi1SZW5kZXJOYW1lZEZsb3dG
cmFnbWVudCogRWxlbWVudDo6cmVuZGVyTmFtZWRGbG93RnJhZ21lbnQoKSBjb25zdAotewotICAg
IGlmIChyZW5kZXJlcigpICYmIHJlbmRlcmVyKCktPmlzUmVuZGVyTmFtZWRGbG93RnJhZ21lbnRD
b250YWluZXIoKSkKLSAgICAgICAgcmV0dXJuIGRvd25jYXN0PFJlbmRlckJsb2NrRmxvdz4oKnJl
bmRlcmVyKCkpLnJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KCk7Ci0KLSAgICByZXR1cm4gbnVsbHB0
cjsKLX0KLQotI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKLQotYm9vbCBFbGVtZW50OjpzaG91bGRN
b3ZlVG9GbG93VGhyZWFkKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZVRvVXNlKSBjb25zdAotewot
I2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKLSAgICBpZiAoZG9jdW1lbnQoKS53ZWJraXRJc0Z1
bGxTY3JlZW4oKSAmJiBkb2N1bWVudCgpLndlYmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxlbWVudCgp
ID09IHRoaXMpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSNlbmRpZgotCi0gICAgaWYgKGlzSW5T
aGFkb3dUcmVlKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmICghc3R5bGVUb1Vz
ZS5oYXNGbG93SW50bygpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gdHJ1
ZTsKLX0KLQotY29uc3QgQXRvbWljU3RyaW5nJiBFbGVtZW50Ojp3ZWJraXRSZWdpb25PdmVyc2V0
KCkgY29uc3QKLXsKLSAgICBkb2N1bWVudCgpLnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHls
ZXNoZWV0cygpOwotCi0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gdW5k
ZWZpbmVkU3RhdGUoInVuZGVmaW5lZCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVy
YWwpOwotICAgIGlmICghcmVuZGVyTmFtZWRGbG93RnJhZ21lbnQoKSkKLSAgICAgICAgcmV0dXJu
IHVuZGVmaW5lZFN0YXRlOwotCi0gICAgc3dpdGNoIChyZWdpb25PdmVyc2V0U3RhdGUoKSkgewot
ICAgIGNhc2UgUmVnaW9uRml0OiB7Ci0gICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9t
aWNTdHJpbmc+IGZpdFN0YXRlKCJmaXQiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKTsKLSAgICAgICAgcmV0dXJuIGZpdFN0YXRlOwotICAgIH0KLSAgICBjYXNlIFJlZ2lvbkVt
cHR5OiB7Ci0gICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IGVtcHR5
U3RhdGUoImVtcHR5IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAg
ICAgIHJldHVybiBlbXB0eVN0YXRlOwotICAgIH0KLSAgICBjYXNlIFJlZ2lvbk92ZXJzZXQ6IHsK
LSAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gb3ZlcmZsb3dTdGF0
ZSgib3ZlcnNldCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgICAg
ICByZXR1cm4gb3ZlcmZsb3dTdGF0ZTsKLSAgICB9Ci0gICAgY2FzZSBSZWdpb25VbmRlZmluZWQ6
Ci0gICAgICAgIHJldHVybiB1bmRlZmluZWRTdGF0ZTsKLSAgICB9Ci0KLSAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLSAgICByZXR1cm4gdW5kZWZpbmVkU3RhdGU7Ci19Ci0KLVZlY3RvcjxSZWZQ
dHI8UmFuZ2U+PiBFbGVtZW50Ojp3ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCkgY29uc3QKLXsK
LSAgICBWZWN0b3I8UmVmUHRyPFJhbmdlPj4gcmFuZ2VPYmplY3RzOwotICAgIGRvY3VtZW50KCku
dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7Ci0gICAgYXV0byogcmVuZGVy
ZXIgPSB0aGlzLT5yZW5kZXJlcigpOwotICAgIGlmIChyZW5kZXJlciAmJiByZW5kZXJlci0+aXNS
ZW5kZXJOYW1lZEZsb3dGcmFnbWVudENvbnRhaW5lcigpKSB7Ci0gICAgICAgIGF1dG8mIG5hbWVk
Rmxvd0ZyYWdtZW50ID0gKmRvd25jYXN0PFJlbmRlckJsb2NrRmxvdz4oKnJlbmRlcmVyKS5yZW5k
ZXJOYW1lZEZsb3dGcmFnbWVudCgpOwotICAgICAgICBpZiAobmFtZWRGbG93RnJhZ21lbnQuaXNW
YWxpZCgpKQotICAgICAgICAgICAgbmFtZWRGbG93RnJhZ21lbnQuZ2V0UmFuZ2VzKHJhbmdlT2Jq
ZWN0cyk7Ci0gICAgfQotICAgIHJldHVybiByYW5nZU9iamVjdHM7Ci19Ci0KLSNlbmRpZgotCiAj
aWZuZGVmIE5ERUJVRwogYm9vbCBFbGVtZW50OjpmYXN0QXR0cmlidXRlTG9va3VwQWxsb3dlZChj
b25zdCBRdWFsaWZpZWROYW1lJiBuYW1lKSBjb25zdAogewpAQCAtMzUyMCw3ICszNDA2LDYgQEAg
dm9pZCBFbGVtZW50OjpyZXNldFN0eWxlUmVsYXRpb25zKCkKIAogdm9pZCBFbGVtZW50OjpjbGVh
clN0eWxlRGVyaXZlZERhdGFCZWZvcmVEZXRhY2hpbmdSZW5kZXJlcigpCiB7Ci0gICAgdW5yZWdp
c3Rlck5hbWVkRmxvd0NvbnRlbnRFbGVtZW50KCk7CiAgICAgY2xlYXJCZWZvcmVQc2V1ZG9FbGVt
ZW50KCk7CiAgICAgY2xlYXJBZnRlclBzZXVkb0VsZW1lbnQoKTsKIH0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2RvbS9FbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0Vs
ZW1lbnQuaAkocmV2aXNpb24gMjIyMjA0KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNiBAQAogI2luY2x1ZGUgIkRvY3VtZW50Lmgi
CiAjaW5jbHVkZSAiRWxlbWVudERhdGEuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKLSNpbmNs
dWRlICJSZWdpb25PdmVyc2V0U3RhdGUuaCIKICNpbmNsdWRlICJTY3JvbGxUb09wdGlvbnMuaCIK
ICNpbmNsdWRlICJTY3JvbGxUeXBlcy5oIgogI2luY2x1ZGUgIlNoYWRvd1Jvb3RNb2RlLmgiCkBA
IC01Miw3ICs1MSw2IEBAIGNsYXNzIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDsKIGNsYXNzIFBsYXRm
b3JtTW91c2VFdmVudDsKIGNsYXNzIFBsYXRmb3JtV2hlZWxFdmVudDsKIGNsYXNzIFBzZXVkb0Vs
ZW1lbnQ7Ci1jbGFzcyBSZW5kZXJOYW1lZEZsb3dGcmFnbWVudDsKIGNsYXNzIFJlbmRlclRyZWVQ
b3NpdGlvbjsKIGNsYXNzIFdlYkFuaW1hdGlvbjsKIHN0cnVjdCBFbGVtZW50U3R5bGU7CkBAIC0z
NDUsOSArMzQzLDYgQEAgcHVibGljOgogICAgIHZvaWQgc2V0U3R5bGVJc0FmZmVjdGVkQnlQcmV2
aW91c1NpYmxpbmcoKSB7IHNldEZsYWcoU3R5bGVJc0FmZmVjdGVkQnlQcmV2aW91c1NpYmxpbmcp
OyB9CiAgICAgdm9pZCBzZXRDaGlsZEluZGV4KHVuc2lnbmVkKTsKIAotICAgIHZvaWQgc2V0UmVn
aW9uT3ZlcnNldFN0YXRlKFJlZ2lvbk92ZXJzZXRTdGF0ZSk7Ci0gICAgUmVnaW9uT3ZlcnNldFN0
YXRlIHJlZ2lvbk92ZXJzZXRTdGF0ZSgpIGNvbnN0OwotCiAgICAgQXRvbWljU3RyaW5nIGNvbXB1
dGVJbmhlcml0ZWRMYW5ndWFnZSgpIGNvbnN0OwogICAgIExvY2FsZSYgbG9jYWxlKCkgY29uc3Q7
CiAKQEAgLTQ2NywxNSArNDYyLDYgQEAgcHVibGljOgogCiAgICAgYm9vbCBpc1NwZWxsQ2hlY2tp
bmdFbmFibGVkKCkgY29uc3Q7CiAKLSAgICBSZW5kZXJOYW1lZEZsb3dGcmFnbWVudCogcmVuZGVy
TmFtZWRGbG93RnJhZ21lbnQoKSBjb25zdDsKLQotI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKLSAg
ICB2aXJ0dWFsIGJvb2wgc2hvdWxkTW92ZVRvRmxvd1RocmVhZChjb25zdCBSZW5kZXJTdHlsZSYp
IGNvbnN0OwotICAgIAotICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IEF0b21pY1N0cmluZyYgd2Vi
a2l0UmVnaW9uT3ZlcnNldCgpIGNvbnN0OwotICAgIFZlY3RvcjxSZWZQdHI8UmFuZ2U+PiB3ZWJr
aXRHZXRSZWdpb25GbG93UmFuZ2VzKCkgY29uc3Q7Ci0jZW5kaWYKLQogICAgIGJvb2wgaGFzSUQo
KSBjb25zdDsKICAgICBib29sIGhhc0NsYXNzKCkgY29uc3Q7CiAgICAgYm9vbCBoYXNOYW1lKCkg
Y29uc3Q7CkBAIC01NTMsMTAgKzUzOSw2IEBAIHB1YmxpYzoKICAgICB1c2luZyBDb250YWluZXJO
b2RlOjpzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyOwogICAgIHZvaWQgc2V0QXR0cmlidXRlRXZl
bnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgY29uc3QgUXVhbGlmaWVk
TmFtZSYgYXR0cmlidXRlTmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSk7CiAKLSAgICBi
b29sIGlzTmFtZWRGbG93Q29udGVudEVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBoYXNSYXJlRGF0
YSgpICYmIHJhcmVEYXRhSXNOYW1lZEZsb3dDb250ZW50RWxlbWVudCgpOyB9Ci0gICAgdm9pZCBz
ZXRJc05hbWVkRmxvd0NvbnRlbnRFbGVtZW50KCk7Ci0gICAgdm9pZCBjbGVhcklzTmFtZWRGbG93
Q29udGVudEVsZW1lbnQoKTsKLQogI2lmIEVOQUJMRShXRUJfQU5JTUFUSU9OUykKICAgICBWZWN0
b3I8V2ViQW5pbWF0aW9uKj4gZ2V0QW5pbWF0aW9ucygpOwogI2VuZGlmCkBAIC02NTAsNyArNjMy
LDYgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgcmFyZURhdGFTdHlsZUFmZmVjdGVkQnlFbXB0eSgp
IGNvbnN0OwogICAgIGJvb2wgcmFyZURhdGFTdHlsZUFmZmVjdGVkQnlGb2N1c1dpdGhpbigpIGNv
bnN0OwotICAgIGJvb2wgcmFyZURhdGFJc05hbWVkRmxvd0NvbnRlbnRFbGVtZW50KCkgY29uc3Q7
CiAgICAgYm9vbCByYXJlRGF0YUNoaWxkcmVuQWZmZWN0ZWRCeUhvdmVyKCkgY29uc3Q7CiAgICAg
Ym9vbCByYXJlRGF0YVN0eWxlQWZmZWN0ZWRCeUFjdGl2ZSgpIGNvbnN0OwogICAgIGJvb2wgcmFy
ZURhdGFDaGlsZHJlbkFmZmVjdGVkQnlEcmFnKCkgY29uc3Q7CkBAIC02NjEsOCArNjQyLDYgQEAg
cHJpdmF0ZToKIAogICAgIFNwZWxsY2hlY2tBdHRyaWJ1dGVTdGF0ZSBzcGVsbGNoZWNrQXR0cmli
dXRlU3RhdGUoKSBjb25zdDsKIAotICAgIHZvaWQgdW5yZWdpc3Rlck5hbWVkRmxvd0NvbnRlbnRF
bGVtZW50KCk7Ci0KICAgICB2b2lkIGNyZWF0ZVVuaXF1ZUVsZW1lbnREYXRhKCk7CiAKICAgICBF
bGVtZW50UmFyZURhdGEqIGVsZW1lbnRSYXJlRGF0YSgpIGNvbnN0OwpJbmRleDogU291cmNlL1dl
YkNvcmUvZG9tL0VsZW1lbnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9F
bGVtZW50LmlkbAkocmV2aXNpb24gMjIyMjA0KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAsMTIgKzEwMCw2IEBACiAgICAgLy8gRXh0ZW5z
aW9ucyBmcm9tIFBvaW50ZXIgTG9jayBBUEkgKGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9wb2ludGVy
bG9jay8jZXh0ZW5zaW9ucy10by10aGUtZWxlbWVudC1pbnRlcmZhY2UpLgogICAgIFtDb25kaXRp
b25hbD1QT0lOVEVSX0xPQ0tdIHZvaWQgcmVxdWVzdFBvaW50ZXJMb2NrKCk7CiAKLSAgICAvLyBF
eHRlbnNpb25zIGZyb20gQ1NTIFJlZ2lvbnMgQVBJIChodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcv
Y3NzLXJlZ2lvbnMvI3RoZS1yZWdpb24taW50ZXJmYWNlKS4KLSAgICAvLyBGSVhNRTogU2hvdWxk
IGJlIGluIGEgc2VwYXJhdGUgUmVnaW9uIGludGVyZmFjZSBpbXBsZW1lbnRlZCBieSBFbGVtZW50
LgotICAgIC8vIEZJWE1FOiBTaG91bGQgd2UgYWRkIHVucHJlZml4ZWQgdmVyc2lvbnM/Ci0gICAg
W0NvbmRpdGlvbmFsPUNTU19SRUdJT05TXSByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHdl
YmtpdFJlZ2lvbk92ZXJzZXQ7Ci0gICAgW0NvbmRpdGlvbmFsPUNTU19SRUdJT05TXSBzZXF1ZW5j
ZTxSYW5nZT4/IHdlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKLQogICAgIC8vIE5vbiBzdGFu
ZGFyZCBBUEkgKGh0dHBzOi8vd3d3LnczLm9yZy9CdWdzL1B1YmxpYy9zaG93X2J1Zy5jZ2k/aWQ9
MTcxNTIpLgogICAgIHZvaWQgc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZChvcHRpb25hbCBib29sZWFu
IGNlbnRlcklmTmVlZGVkID0gdHJ1ZSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50UmFyZURhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
UmFyZURhdGEuY3BwCShyZXZpc2lvbiAyMjIyMDQpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudFJhcmVEYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEsNiBAQCBzdHJ1Y3Qg
U2FtZVNpemVBc0VsZW1lbnRSYXJlRGF0YSA6IE5vZGVSCiAjZWxzZQogICAgIHVuc2lnbmVkIGJp
dGZpZWxkcyA6IDEwOwogI2VuZGlmCi0gICAgUmVnaW9uT3ZlcnNldFN0YXRlIHJlZ2lvbk92ZXJz
ZXRTdGF0ZTsKICAgICBMYXlvdXRTaXplIHNpemVGb3JSZXNpemluZzsKICAgICBJbnRQb2ludCBz
YXZlZExheWVyU2Nyb2xsUG9zaXRpb247CiAgICAgdm9pZCogcG9pbnRlcnNbOF07CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFJhcmVEYXRhLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvZG9tL0VsZW1lbnRSYXJlRGF0YS5oCShyZXZpc2lvbiAyMjIyMDQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudFJhcmVEYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTYwLDEy
ICs2MCw2IEBAIHB1YmxpYzoKICAgICBib29sIHN0eWxlQWZmZWN0ZWRCeUZvY3VzV2l0aGluKCkg
Y29uc3QgeyByZXR1cm4gbV9zdHlsZUFmZmVjdGVkQnlGb2N1c1dpdGhpbjsgfQogICAgIHZvaWQg
c2V0U3R5bGVBZmZlY3RlZEJ5Rm9jdXNXaXRoaW4oYm9vbCB2YWx1ZSkgeyBtX3N0eWxlQWZmZWN0
ZWRCeUZvY3VzV2l0aGluID0gdmFsdWU7IH0KIAotICAgIFJlZ2lvbk92ZXJzZXRTdGF0ZSByZWdp
b25PdmVyc2V0U3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3JlZ2lvbk92ZXJzZXRTdGF0ZTsgfQot
ICAgIHZvaWQgc2V0UmVnaW9uT3ZlcnNldFN0YXRlKFJlZ2lvbk92ZXJzZXRTdGF0ZSBzdGF0ZSkg
eyBtX3JlZ2lvbk92ZXJzZXRTdGF0ZSA9IHN0YXRlOyB9Ci0KLSAgICBib29sIGlzTmFtZWRGbG93
Q29udGVudEVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2lzTmFtZWRGbG93Q29udGVudEVsZW1l
bnQ7IH0KLSAgICB2b2lkIHNldElzTmFtZWRGbG93Q29udGVudEVsZW1lbnQoYm9vbCB2YWx1ZSkg
eyBtX2lzTmFtZWRGbG93Q29udGVudEVsZW1lbnQgPSB2YWx1ZTsgfQotCiAjaWYgRU5BQkxFKEZV
TExTQ1JFRU5fQVBJKQogICAgIGJvb2wgY29udGFpbnNGdWxsU2NyZWVuRWxlbWVudCgpIHsgcmV0
dXJuIG1fY29udGFpbnNGdWxsU2NyZWVuRWxlbWVudDsgfQogICAgIHZvaWQgc2V0Q29udGFpbnNG
dWxsU2NyZWVuRWxlbWVudChib29sIHZhbHVlKSB7IG1fY29udGFpbnNGdWxsU2NyZWVuRWxlbWVu
dCA9IHZhbHVlOyB9CkBAIC0xMzIsOSArMTI2LDYgQEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBt
X2NoaWxkcmVuQWZmZWN0ZWRCeUxhc3RDaGlsZFJ1bGVzIDogMTsKICAgICB1bnNpZ25lZCBtX2No
aWxkcmVuQWZmZWN0ZWRCeUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzIDogMTsKICAgICB1bnNpZ25l
ZCBtX2NoaWxkcmVuQWZmZWN0ZWRCeVByb3BlcnR5QmFzZWRCYWNrd2FyZFBvc2l0aW9uYWxSdWxl
cyA6IDE7Ci0gICAgdW5zaWduZWQgbV9pc05hbWVkRmxvd0NvbnRlbnRFbGVtZW50IDogMTsKLQot
ICAgIFJlZ2lvbk92ZXJzZXRTdGF0ZSBtX3JlZ2lvbk92ZXJzZXRTdGF0ZTsKIAogICAgIExheW91
dFNpemUgbV9taW5pbXVtU2l6ZUZvclJlc2l6aW5nOwogICAgIEludFBvaW50IG1fc2F2ZWRMYXll
clNjcm9sbFBvc2l0aW9uOwpAQCAtMTc0LDggKzE2NSw2IEBAIGlubGluZSBFbGVtZW50UmFyZURh
dGE6OkVsZW1lbnRSYXJlRGF0YSgKICAgICAsIG1fY2hpbGRyZW5BZmZlY3RlZEJ5TGFzdENoaWxk
UnVsZXMoZmFsc2UpCiAgICAgLCBtX2NoaWxkcmVuQWZmZWN0ZWRCeUJhY2t3YXJkUG9zaXRpb25h
bFJ1bGVzKGZhbHNlKQogICAgICwgbV9jaGlsZHJlbkFmZmVjdGVkQnlQcm9wZXJ0eUJhc2VkQmFj
a3dhcmRQb3NpdGlvbmFsUnVsZXMoZmFsc2UpCi0gICAgLCBtX2lzTmFtZWRGbG93Q29udGVudEVs
ZW1lbnQoZmFsc2UpCi0gICAgLCBtX3JlZ2lvbk92ZXJzZXRTdGF0ZShSZWdpb25VbmRlZmluZWQp
CiAgICAgLCBtX21pbmltdW1TaXplRm9yUmVzaXppbmcoZGVmYXVsdE1pbmltdW1TaXplRm9yUmVz
aXppbmcoKSkKIHsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3Rv
cnkuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9y
eS5pbgkocmV2aXNpb24gMjIyMjA0KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0
RmFjdG9yeS5pbgkod29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEsNiBAQCBUZXh0VHJhY2tMaXN0
IGNvbmRpdGlvbmFsPVZJREVPX1RSQUNLCiBWUkRpc3BsYXkKIFZpZGVvVHJhY2tMaXN0IGNvbmRp
dGlvbmFsPVZJREVPX1RSQUNLCiBXZWJLaXRNZWRpYUtleVNlc3Npb24gY29uZGl0aW9uYWw9TEVH
QUNZX0VOQ1JZUFRFRF9NRURJQQotV2ViS2l0TmFtZWRGbG93CiBXZWJTb2NrZXQKIFdvcmtlcgog
WE1MSHR0cFJlcXVlc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9OYW1lZEZsb3dDb2xsZWN0
aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vTmFtZWRGbG93Q29sbGVj
dGlvbi5jcHAJKHJldmlzaW9uIDIyMjIwNCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9OYW1lZEZs
b3dDb2xsZWN0aW9uLmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDEzMSArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDEyIEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUKLSAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nCi0gKiAgICBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogICAgY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKLSAqICAg
IGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscwot
ICogICAgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVIgIkFTIElTIiBBTkQgQU5ZCi0g
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBCRQotICogTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLAotICogT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUgotICogVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GCi0gKiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKLSAq
IFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJOYW1l
ZEZsb3dDb2xsZWN0aW9uLmgiCi0KLSNpbmNsdWRlICJET01OYW1lZEZsb3dDb2xsZWN0aW9uLmgi
Ci0jaW5jbHVkZSAiRG9jdW1lbnQuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b24uaCIKLQotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1OYW1lZEZsb3dDb2xsZWN0aW9uOjpOYW1lZEZsb3dDb2xsZWN0aW9uKERvY3Vt
ZW50KiBkb2N1bWVudCkKLSAgICA6IENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyKGRvY3VtZW50
KQotewotfQotCi1WZWN0b3I8UmVmUHRyPFdlYktpdE5hbWVkRmxvdz4+IE5hbWVkRmxvd0NvbGxl
Y3Rpb246Om5hbWVkRmxvd3MoKQotewotICAgIFZlY3RvcjxSZWZQdHI8V2ViS2l0TmFtZWRGbG93
Pj4gbmFtZWRGbG93czsKLQotICAgIGZvciAoYXV0byYgbmFtZWRGbG93IDogbV9uYW1lZEZsb3dz
KSB7Ci0gICAgICAgIGlmIChuYW1lZEZsb3ctPmZsb3dTdGF0ZSgpID09IFdlYktpdE5hbWVkRmxv
dzo6Rmxvd1N0YXRlTnVsbCkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIG5hbWVk
Rmxvd3MuYXBwZW5kKFJlZlB0cjxXZWJLaXROYW1lZEZsb3c+KG5hbWVkRmxvdykpOwotICAgIH0K
LQotICAgIHJldHVybiBuYW1lZEZsb3dzOwotfQotCi1XZWJLaXROYW1lZEZsb3cqIE5hbWVkRmxv
d0NvbGxlY3Rpb246OmZsb3dCeU5hbWUoY29uc3QgU3RyaW5nJiBmbG93TmFtZSkKLXsKLSAgICBO
YW1lZEZsb3dTZXQ6Oml0ZXJhdG9yIGl0ID0gbV9uYW1lZEZsb3dzLmZpbmQ8U3RyaW5nLCBOYW1l
ZEZsb3dIYXNoVHJhbnNsYXRvcj4oZmxvd05hbWUpOwotICAgIGlmIChpdCA9PSBtX25hbWVkRmxv
d3MuZW5kKCkgfHwgKCppdCktPmZsb3dTdGF0ZSgpID09IFdlYktpdE5hbWVkRmxvdzo6Rmxvd1N0
YXRlTnVsbCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICByZXR1cm4gKml0OwotfQot
Ci1SZWY8V2ViS2l0TmFtZWRGbG93PiBOYW1lZEZsb3dDb2xsZWN0aW9uOjplbnN1cmVGbG93V2l0
aE5hbWUoY29uc3QgU3RyaW5nJiBmbG93TmFtZSkKLXsKLSAgICBOYW1lZEZsb3dTZXQ6Oml0ZXJh
dG9yIGl0ID0gbV9uYW1lZEZsb3dzLmZpbmQ8U3RyaW5nLCBOYW1lZEZsb3dIYXNoVHJhbnNsYXRv
cj4oZmxvd05hbWUpOwotICAgIGlmIChpdCAhPSBtX25hbWVkRmxvd3MuZW5kKCkpIHsKLSAgICAg
ICAgV2ViS2l0TmFtZWRGbG93KiBuYW1lZEZsb3cgPSAqaXQ7Ci0gICAgICAgIEFTU0VSVChuYW1l
ZEZsb3ctPmZsb3dTdGF0ZSgpID09IFdlYktpdE5hbWVkRmxvdzo6Rmxvd1N0YXRlTnVsbCk7Ci0K
LSAgICAgICAgcmV0dXJuICpuYW1lZEZsb3c7Ci0gICAgfQotCi0gICAgUmVmUHRyPFdlYktpdE5h
bWVkRmxvdz4gbmV3RmxvdyA9IFdlYktpdE5hbWVkRmxvdzo6Y3JlYXRlKCp0aGlzLCBmbG93TmFt
ZSk7Ci0gICAgbV9uYW1lZEZsb3dzLmFkZChuZXdGbG93LmdldCgpKTsKLQotICAgIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6ZGlkQ3JlYXRlTmFtZWRGbG93KGRvY3VtZW50KCksICpuZXdGbG93
KTsKLQotICAgIHJldHVybiBuZXdGbG93LnJlbGVhc2VOb25OdWxsKCk7Ci19Ci0KLXZvaWQgTmFt
ZWRGbG93Q29sbGVjdGlvbjo6ZGlzY2FyZE5hbWVkRmxvdyhXZWJLaXROYW1lZEZsb3cqIG5hbWVk
RmxvdykKLXsKLSAgICAvLyBUaGUgZG9jdW1lbnQgaXMgbm90IHZhbGlkIGFueW1vcmUgc28gdGhl
IGNvbGxlY3Rpb24gd2lsbCBiZSBkZXN0cm95ZWQgYW55d2F5LgotICAgIGlmICghZG9jdW1lbnQo
KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQVNTRVJUKG5hbWVkRmxvdy0+Zmxvd1N0YXRlKCkg
PT0gV2ViS2l0TmFtZWRGbG93OjpGbG93U3RhdGVOdWxsKTsKLSAgICBBU1NFUlQobV9uYW1lZEZs
b3dzLmNvbnRhaW5zKG5hbWVkRmxvdykpOwotCi0gICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Ojp3aWxsUmVtb3ZlTmFtZWRGbG93KGRvY3VtZW50KCksICpuYW1lZEZsb3cpOwotCi0gICAgbV9u
YW1lZEZsb3dzLnJlbW92ZShuYW1lZEZsb3cpOwotfQotCi1Eb2N1bWVudCogTmFtZWRGbG93Q29s
bGVjdGlvbjo6ZG9jdW1lbnQoKSBjb25zdAotewotICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQgPSBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcjo6c2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpOwotICAgIHJldHVybiBkb3duY2FzdDxEb2N1bWVudD4oY29udGV4dCk7Ci19Ci0KLVJl
ZjxET01OYW1lZEZsb3dDb2xsZWN0aW9uPiBOYW1lZEZsb3dDb2xsZWN0aW9uOjpjcmVhdGVDU1NP
TVNuYXBzaG90KCkKLXsKLSAgICBWZWN0b3I8UmVmPFdlYktpdE5hbWVkRmxvdz4+IGNyZWF0ZWRG
bG93czsKLSAgICBmb3IgKGF1dG8mIG5hbWVkRmxvdyA6IG1fbmFtZWRGbG93cykgewotICAgICAg
ICBpZiAobmFtZWRGbG93LT5mbG93U3RhdGUoKSA9PSBXZWJLaXROYW1lZEZsb3c6OkZsb3dTdGF0
ZUNyZWF0ZWQpCi0gICAgICAgICAgICBjcmVhdGVkRmxvd3MuYXBwZW5kKCpuYW1lZEZsb3cpOwot
ICAgIH0KLSAgICByZXR1cm4gRE9NTmFtZWRGbG93Q29sbGVjdGlvbjo6Y3JlYXRlKFdURk1vdmUo
Y3JlYXRlZEZsb3dzKSk7Ci19Ci0KLS8vIFRoZSBIYXNoRnVuY3Rpb25zIG9iamVjdCB1c2VkIGJ5
IHRoZSBIYXNoU2V0IHRvIGNvbXBhcmUgYmV0d2VlbiBOYW1lZEZsb3dzLgotLy8gSXQgaXMgc2Fm
ZSB0byBzZXQgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgYmVjYXVzZSB0aGUgSGFzaFNl
dCB3aWxsIG5ldmVyIGNvbnRhaW4gbnVsbCBwb2ludGVycyBvciBkZWxldGVkIHZhbHVlcy4KLXN0
cnVjdCBOYW1lZEZsb3dDb2xsZWN0aW9uOjpOYW1lZEZsb3dIYXNoRnVuY3Rpb25zIHsKLSAgICBz
dGF0aWMgdW5zaWduZWQgaGFzaChXZWJLaXROYW1lZEZsb3cqIGtleSkgeyByZXR1cm4gRGVmYXVs
dEhhc2g8U3RyaW5nPjo6SGFzaDo6aGFzaChrZXktPm5hbWUoKSk7IH0KLSAgICBzdGF0aWMgYm9v
bCBlcXVhbChXZWJLaXROYW1lZEZsb3cqIGEsIFdlYktpdE5hbWVkRmxvdyogYikgeyByZXR1cm4g
YS0+bmFtZSgpID09IGItPm5hbWUoKTsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIHNhZmVUb0Nv
bXBhcmVUb0VtcHR5T3JEZWxldGVkID0gdHJ1ZTsKLX07Ci0KLS8vIFRoZSBIYXNoVHJhbnNsYXRv
ciBpcyB1c2VkIHRvIGxvb2t1cCBhIE5hbWVkRmxvdyBpbiB0aGUgc2V0IHVzaW5nIGEgbmFtZS4K
LXN0cnVjdCBOYW1lZEZsb3dDb2xsZWN0aW9uOjpOYW1lZEZsb3dIYXNoVHJhbnNsYXRvciB7Ci0g
ICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgU3RyaW5nJiBrZXkpIHsgcmV0dXJuIERlZmF1
bHRIYXNoPFN0cmluZz46Okhhc2g6Omhhc2goa2V5KTsgfQotICAgIHN0YXRpYyBib29sIGVxdWFs
KFdlYktpdE5hbWVkRmxvdyogYSwgY29uc3QgU3RyaW5nJiBiKSB7IHJldHVybiBhLT5uYW1lKCkg
PT0gYjsgfQotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNv
cmUvZG9tL05hbWVkRmxvd0NvbGxlY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9kb20vTmFtZWRGbG93Q29sbGVjdGlvbi5oCShyZXZpc2lvbiAyMjIyMDQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9kb20vTmFtZWRGbG93Q29sbGVjdGlvbi5oCShub25leGlzdGVudCkKQEAgLTEsNzEg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBBZG9iZSBTeXN0ZW1zIEluY29ycG9y
YXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlCi0gKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZwotICogICAgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
LSAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nCi0gKiAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMKLSAqICAgIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSICJB
UyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgQkUKLSAq
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwKLSAqIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IKLSAqIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RgotICogVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GCi0gKiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lu
Y2x1ZGUgIkNvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyLmgiCi0jaW5jbHVkZSAiV2ViS2l0TmFt
ZWRGbG93LmgiCi0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3dGYvTGlzdEhh
c2hTZXQuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBEb2N1bWVudDsKLWNsYXNzIERP
TU5hbWVkRmxvd0NvbGxlY3Rpb247Ci0KLWNsYXNzIE5hbWVkRmxvd0NvbGxlY3Rpb24gZmluYWwg
OiBwdWJsaWMgUmVmQ291bnRlZDxOYW1lZEZsb3dDb2xsZWN0aW9uPiwgcHVibGljIENvbnRleHRE
ZXN0cnVjdGlvbk9ic2VydmVyIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPE5hbWVkRmxvd0Nv
bGxlY3Rpb24+IGNyZWF0ZShEb2N1bWVudCogZG9jKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IE5h
bWVkRmxvd0NvbGxlY3Rpb24oZG9jKSk7IH0KLQotICAgIFZlY3RvcjxSZWZQdHI8V2ViS2l0TmFt
ZWRGbG93Pj4gbmFtZWRGbG93cygpOwotICAgIFdlYktpdE5hbWVkRmxvdyogZmxvd0J5TmFtZShj
b25zdCBTdHJpbmcmKTsKLSAgICBSZWY8V2ViS2l0TmFtZWRGbG93PiBlbnN1cmVGbG93V2l0aE5h
bWUoY29uc3QgU3RyaW5nJik7Ci0KLSAgICB2b2lkIGRpc2NhcmROYW1lZEZsb3coV2ViS2l0TmFt
ZWRGbG93Kik7Ci0KLSAgICBEb2N1bWVudCogZG9jdW1lbnQoKSBjb25zdDsKLQotICAgIHZpcnR1
YWwgfk5hbWVkRmxvd0NvbGxlY3Rpb24oKSB7IH0KLQotICAgIFJlZjxET01OYW1lZEZsb3dDb2xs
ZWN0aW9uPiBjcmVhdGVDU1NPTVNuYXBzaG90KCk7Ci0KLXByaXZhdGU6Ci0gICAgc3RydWN0IE5h
bWVkRmxvd0hhc2hGdW5jdGlvbnM7Ci0gICAgc3RydWN0IE5hbWVkRmxvd0hhc2hUcmFuc2xhdG9y
OwotCi0gICAgdHlwZWRlZiBMaXN0SGFzaFNldDxXZWJLaXROYW1lZEZsb3cqLCBOYW1lZEZsb3dI
YXNoRnVuY3Rpb25zPiBOYW1lZEZsb3dTZXQ7Ci0KLSAgICBleHBsaWNpdCBOYW1lZEZsb3dDb2xs
ZWN0aW9uKERvY3VtZW50Kik7Ci0KLSAgICBOYW1lZEZsb3dTZXQgbV9uYW1lZEZsb3dzOwotfTsK
LQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1BzZXVk
b0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vUHNldWRvRWxlbWVu
dC5oCShyZXZpc2lvbiAyMjIyMDQpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vUHNldWRvRWxlbWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCwxMiArNDQsNiBAQCBwdWJsaWM6CiAKICAgICBib29s
IHJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUmKSBvdmVycmlkZTsKIAotICAgIC8v
IEFzIHBlciBodHRwOi8vZGV2LnczLm9yZy9jc3N3Zy9jc3MzLXJlZ2lvbnMvI2Zsb3ctaW50bywg
cHNldWRvLWVsZW1lbnRzIHN1Y2ggYXMgOjpmaXJzdC1saW5lLCA6OmZpcnN0LWxldHRlciwgOjpi
ZWZvcmUgb3IgOjphZnRlcgotICAgIC8vIGNhbm5vdCBiZSBkaXJlY3RseSBjb2xsZWN0ZWQgaW50
byBhIG5hbWVkIGZsb3cuCi0jaWYgRU5BQkxFKENTU19SRUdJT05TKQotICAgIGJvb2wgc2hvdWxk
TW92ZVRvRmxvd1RocmVhZChjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIGZhbHNlOyB9Ci0jZW5kaWYKLQogICAgIGJvb2wgY2FuU3RhcnRTZWxlY3Rpb24oKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wgY2FuQ29udGFpblJhbmdlRW5k
UG9pbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9kb20vV2ViS2l0TmFtZWRGbG93LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9kb20vV2ViS2l0TmFtZWRGbG93LmNwcAkocmV2aXNpb24gMjIyMjA0KQorKysgU291cmNl
L1dlYkNvcmUvZG9tL1dlYktpdE5hbWVkRmxvdy5jcHAJKG5vbmV4aXN0ZW50KQpAQCAtMSwyMzUg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBZG9iZSBTeXN0ZW1zIEluY29ycG9y
YXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlCi0gKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZwotICogICAgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
LSAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nCi0gKiAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMKLSAqICAgIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
IAotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUiAi
QVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIEJFCi0g
KiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksCi0gKiBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SCi0gKiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YKLSAqIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRgotICogU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5o
IgotI2luY2x1ZGUgIldlYktpdE5hbWVkRmxvdy5oIgotCi0jaW5jbHVkZSAiRXZlbnROYW1lcy5o
IgotI2luY2x1ZGUgIk5hbWVkRmxvd0NvbGxlY3Rpb24uaCIKLSNpbmNsdWRlICJOb0V2ZW50RGlz
cGF0Y2hBc3NlcnRpb24uaCIKLSNpbmNsdWRlICJSZW5kZXJOYW1lZEZsb3dGcmFnbWVudC5oIgot
I2luY2x1ZGUgIlJlbmRlck5hbWVkRmxvd1RocmVhZC5oIgotI2luY2x1ZGUgIlJlbmRlclJlZ2lv
bi5oIgotI2luY2x1ZGUgIlN0YXRpY05vZGVMaXN0LmgiCi0jaW5jbHVkZSAiVUlFdmVudC5oIgot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVdlYktpdE5hbWVkRmxvdzo6V2ViS2l0TmFtZWRGbG93
KE5hbWVkRmxvd0NvbGxlY3Rpb24mIG1hbmFnZXIsIGNvbnN0IEF0b21pY1N0cmluZyYgZmxvd1Ro
cmVhZE5hbWUpCi0gICAgOiBtX2Zsb3dUaHJlYWROYW1lKGZsb3dUaHJlYWROYW1lKQotICAgICwg
bV9mbG93TWFuYWdlcigmbWFuYWdlcikKLSAgICAsIG1fcGFyZW50Rmxvd1RocmVhZChudWxscHRy
KQotewotfQotCi1XZWJLaXROYW1lZEZsb3c6On5XZWJLaXROYW1lZEZsb3coKQotewotICAgIC8v
IFRoZSBuYW1lZCBmbG93IGlzIG5vdCAic3Ryb25nIiByZWZlcmVuY2VkIGZyb20gYW55d2hlcmUg
YXQgdGhpcyB0aW1lIHNvIGl0IHNob3VsZG4ndCBiZSByZXVzZWQgaWYgdGhlIG5hbWVkIGZsb3cg
aXMgcmVjcmVhdGVkLgotICAgIG1fZmxvd01hbmFnZXItPmRpc2NhcmROYW1lZEZsb3codGhpcyk7
Ci19Ci0KLVJlZjxXZWJLaXROYW1lZEZsb3c+IFdlYktpdE5hbWVkRmxvdzo6Y3JlYXRlKE5hbWVk
Rmxvd0NvbGxlY3Rpb24mIG1hbmFnZXIsIGNvbnN0IEF0b21pY1N0cmluZyYgZmxvd1RocmVhZE5h
bWUpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViS2l0TmFtZWRGbG93KG1hbmFnZXIs
IGZsb3dUaHJlYWROYW1lKSk7Ci19Ci0KLWNvbnN0IEF0b21pY1N0cmluZyYgV2ViS2l0TmFtZWRG
bG93OjpuYW1lKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9mbG93VGhyZWFkTmFtZTsKLX0KLQot
Ym9vbCBXZWJLaXROYW1lZEZsb3c6Om92ZXJzZXQoKSBjb25zdAotewotICAgIGlmIChtX2Zsb3dN
YW5hZ2VyLT5kb2N1bWVudCgpKQotICAgICAgICBtX2Zsb3dNYW5hZ2VyLT5kb2N1bWVudCgpLT51
cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoKTsKLQotICAgIC8vIFRoZSByZW5k
ZXJlciBtYXkgYmUgZGVzdHJveWVkIG9yIGNyZWF0ZWQgYWZ0ZXIgdGhlIHN0eWxlIHVwZGF0ZS4K
LSAgICAvLyBCZWNhdXNlIHRoaXMgaXMgY2FsbGVkIGZyb20gSlMsIHdoZXJlIHRoZSB3cmFwcGVy
IGtlZXBzIGEgcmVmZXJlbmNlIHRvIHRoZSBOYW1lZEZsb3csIG5vIGd1YXJkIGlzIG5lY2Vzc2Fy
eS4KLSAgICBpZiAoIW1fcGFyZW50Rmxvd1RocmVhZCB8fCAhbV9wYXJlbnRGbG93VGhyZWFkLT5o
YXNSZWdpb25zKCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgY29uc3QgYXV0byYgbmFt
ZWRGbG93RnJhZ21lbnQgPSBkb3duY2FzdDxSZW5kZXJOYW1lZEZsb3dGcmFnbWVudD4oKm1fcGFy
ZW50Rmxvd1RocmVhZC0+bGFzdFJlZ2lvbigpKTsKLSAgICByZXR1cm4gbmFtZWRGbG93RnJhZ21l
bnQucmVnaW9uT3ZlcnNldFN0YXRlKCkgPT0gUmVnaW9uT3ZlcnNldDsKLX0KLQotc3RhdGljIGlu
bGluZSBib29sIGluRmxvd1RocmVhZChSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBSZW5kZXJOYW1l
ZEZsb3dUaHJlYWQqIGZsb3dUaHJlYWQpCi17Ci0gICAgaWYgKCFyZW5kZXJlcikKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIFJlbmRlckZsb3dUaHJlYWQqIGN1cnJlbnRGbG93VGhyZWFkID0g
cmVuZGVyZXItPmZsb3dUaHJlYWRDb250YWluaW5nQmxvY2soKTsKLSAgICBpZiAoZmxvd1RocmVh
ZCA9PSBjdXJyZW50Rmxvd1RocmVhZCkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgaWYgKHJl
bmRlcmVyLT5mbG93VGhyZWFkU3RhdGUoKSAhPSBSZW5kZXJPYmplY3Q6Okluc2lkZUluRmxvd1Ro
cmVhZCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIAotICAgIC8vIEFuIGluLWZsb3cgZmxv
dyB0aHJlYWQgY2FuIGJlIG5lc3RlZCBpbnNpZGUgYW4gb3V0LW9mLWZsb3cgb25lLCBzbyB3ZSBo
YXZlIHRvIHJlY3VyIHVwIHRvIGNoZWNrLgotICAgIHJldHVybiBpbkZsb3dUaHJlYWQoY3VycmVu
dEZsb3dUaHJlYWQtPmNvbnRhaW5pbmdCbG9jaygpLCBmbG93VGhyZWFkKTsKLX0KLQotaW50IFdl
YktpdE5hbWVkRmxvdzo6Zmlyc3RFbXB0eVJlZ2lvbkluZGV4KCkgY29uc3QKLXsKLSAgICBpZiAo
bV9mbG93TWFuYWdlci0+ZG9jdW1lbnQoKSkKLSAgICAgICAgbV9mbG93TWFuYWdlci0+ZG9jdW1l
bnQoKS0+dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7Ci0KLSAgICBpZiAo
IW1fcGFyZW50Rmxvd1RocmVhZCkKLSAgICAgICAgcmV0dXJuIC0xOwotCi0gICAgY29uc3QgUmVu
ZGVyUmVnaW9uTGlzdCYgcmVnaW9uTGlzdCA9IG1fcGFyZW50Rmxvd1RocmVhZC0+cmVuZGVyUmVn
aW9uTGlzdCgpOwotICAgIGlmIChyZWdpb25MaXN0LmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJu
IC0xOwotCi0gICAgaW50IGNvdW50Tm9uUHNldWRvUmVnaW9ucyA9IC0xOwotICAgIGZvciAoY29u
c3QgYXV0byYgcmVuZGVyUmVnaW9uIDogcmVnaW9uTGlzdCkgewotICAgICAgICBjb25zdCBhdXRv
JiBuYW1lZEZsb3dGcmFnbWVudCA9IGRvd25jYXN0PFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50Pigq
cmVuZGVyUmVnaW9uKTsKLSAgICAgICAgLy8gRklYTUU6IFBzZXVkby1lbGVtZW50cyBhcmUgbm90
IGluY2x1ZGVkIGluIHRoZSBsaXN0LgotICAgICAgICAvLyBUaGV5IHdpbGwgYmUgaW5jbHVkZWQg
d2hlbiB3ZSB3aWxsIHByb3Blcmx5IHN1cHBvcnQgdGhlIFJlZ2lvbiBpbnRlcmZhY2UKLSAgICAg
ICAgLy8gaHR0cDovL2Rldi53My5vcmcvY3Nzd2cvY3NzLXJlZ2lvbnMvI3RoZS1yZWdpb24taW50
ZXJmYWNlCi0gICAgICAgIGlmIChuYW1lZEZsb3dGcmFnbWVudC5pc1BzZXVkb0VsZW1lbnRSZWdp
b24oKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICArK2NvdW50Tm9uUHNldWRvUmVn
aW9uczsKLSAgICAgICAgaWYgKG5hbWVkRmxvd0ZyYWdtZW50LnJlZ2lvbk92ZXJzZXRTdGF0ZSgp
ID09IFJlZ2lvbkVtcHR5KQotICAgICAgICAgICAgcmV0dXJuIGNvdW50Tm9uUHNldWRvUmVnaW9u
czsKLSAgICB9Ci0gICAgcmV0dXJuIC0xOwotfQotCi1SZWY8Tm9kZUxpc3Q+IFdlYktpdE5hbWVk
Rmxvdzo6Z2V0UmVnaW9uc0J5Q29udGVudChOb2RlKiBjb250ZW50Tm9kZSkKLXsKLSAgICBpZiAo
IWNvbnRlbnROb2RlKQotICAgICAgICByZXR1cm4gU3RhdGljRWxlbWVudExpc3Q6OmNyZWF0ZSgp
OwotCi0gICAgaWYgKG1fZmxvd01hbmFnZXItPmRvY3VtZW50KCkpCi0gICAgICAgIG1fZmxvd01h
bmFnZXItPmRvY3VtZW50KCktPnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygp
OwotCi0gICAgLy8gVGhlIHJlbmRlcmVyIG1heSBiZSBkZXN0cm95ZWQgb3IgY3JlYXRlZCBhZnRl
ciB0aGUgc3R5bGUgdXBkYXRlLgotICAgIC8vIEJlY2F1c2UgdGhpcyBpcyBjYWxsZWQgZnJvbSBK
Uywgd2hlcmUgdGhlIHdyYXBwZXIga2VlcHMgYSByZWZlcmVuY2UgdG8gdGhlIE5hbWVkRmxvdywg
bm8gZ3VhcmQgaXMgbmVjZXNzYXJ5LgotICAgIGlmICghbV9wYXJlbnRGbG93VGhyZWFkKQotICAg
ICAgICByZXR1cm4gU3RhdGljRWxlbWVudExpc3Q6OmNyZWF0ZSgpOwotCi0gICAgVmVjdG9yPFJl
ZjxFbGVtZW50Pj4gcmVnaW9uRWxlbWVudHM7Ci0KLSAgICBpZiAoaW5GbG93VGhyZWFkKGNvbnRl
bnROb2RlLT5yZW5kZXJlcigpLCBtX3BhcmVudEZsb3dUaHJlYWQpKSB7Ci0gICAgICAgIGNvbnN0
IFJlbmRlclJlZ2lvbkxpc3QmIHJlZ2lvbkxpc3QgPSBtX3BhcmVudEZsb3dUaHJlYWQtPnJlbmRl
clJlZ2lvbkxpc3QoKTsKLSAgICAgICAgZm9yIChjb25zdCBhdXRvJiByZW5kZXJSZWdpb24gOiBy
ZWdpb25MaXN0KSB7Ci0gICAgICAgICAgICBjb25zdCBhdXRvJiBuYW1lZEZsb3dGcmFnbWVudCA9
IGRvd25jYXN0PFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50PigqcmVuZGVyUmVnaW9uKTsKLSAgICAg
ICAgICAgIC8vIEZJWE1FOiBQc2V1ZG8tZWxlbWVudHMgYXJlIG5vdCBpbmNsdWRlZCBpbiB0aGUg
bGlzdC4KLSAgICAgICAgICAgIC8vIFRoZXkgd2lsbCBiZSBpbmNsdWRlZCB3aGVuIHdlIHdpbGwg
cHJvcGVybHkgc3VwcG9ydCB0aGUgUmVnaW9uIGludGVyZmFjZQotICAgICAgICAgICAgLy8gaHR0
cDovL2Rldi53My5vcmcvY3Nzd2cvY3NzLXJlZ2lvbnMvI3RoZS1yZWdpb24taW50ZXJmYWNlCi0g
ICAgICAgICAgICBpZiAobmFtZWRGbG93RnJhZ21lbnQuaXNQc2V1ZG9FbGVtZW50UmVnaW9uKCkp
Ci0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBpZiAobV9wYXJlbnRGbG93
VGhyZWFkLT5vYmplY3RJbkZsb3dSZWdpb24oY29udGVudE5vZGUtPnJlbmRlcmVyKCksICZuYW1l
ZEZsb3dGcmFnbWVudCkpIHsKLSAgICAgICAgICAgICAgICBBU1NFUlQobmFtZWRGbG93RnJhZ21l
bnQuZ2VuZXJhdGluZ0VsZW1lbnQoKSk7Ci0gICAgICAgICAgICAgICAgcmVnaW9uRWxlbWVudHMu
YXBwZW5kKCpuYW1lZEZsb3dGcmFnbWVudC5nZW5lcmF0aW5nRWxlbWVudCgpKTsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiBTdGF0aWNFbGVtZW50TGlzdDo6
Y3JlYXRlKFdURk1vdmUocmVnaW9uRWxlbWVudHMpKTsKLX0KLQotUmVmPE5vZGVMaXN0PiBXZWJL
aXROYW1lZEZsb3c6OmdldFJlZ2lvbnMoKQotewotICAgIGlmIChtX2Zsb3dNYW5hZ2VyLT5kb2N1
bWVudCgpKQotICAgICAgICBtX2Zsb3dNYW5hZ2VyLT5kb2N1bWVudCgpLT51cGRhdGVMYXlvdXRJ
Z25vcmVQZW5kaW5nU3R5bGVzaGVldHMoKTsKLQotICAgIC8vIFRoZSByZW5kZXJlciBtYXkgYmUg
ZGVzdHJveWVkIG9yIGNyZWF0ZWQgYWZ0ZXIgdGhlIHN0eWxlIHVwZGF0ZS4KLSAgICAvLyBCZWNh
dXNlIHRoaXMgaXMgY2FsbGVkIGZyb20gSlMsIHdoZXJlIHRoZSB3cmFwcGVyIGtlZXBzIGEgcmVm
ZXJlbmNlIHRvIHRoZSBOYW1lZEZsb3csIG5vIGd1YXJkIGlzIG5lY2Vzc2FyeS4KLSAgICBpZiAo
IW1fcGFyZW50Rmxvd1RocmVhZCkKLSAgICAgICAgcmV0dXJuIFN0YXRpY0VsZW1lbnRMaXN0Ojpj
cmVhdGUoKTsKLQotICAgIFZlY3RvcjxSZWY8RWxlbWVudD4+IHJlZ2lvbkVsZW1lbnRzOwotCi0g
ICAgY29uc3QgUmVuZGVyUmVnaW9uTGlzdCYgcmVnaW9uTGlzdCA9IG1fcGFyZW50Rmxvd1RocmVh
ZC0+cmVuZGVyUmVnaW9uTGlzdCgpOwotICAgIGZvciAoY29uc3QgYXV0byYgcmVuZGVyUmVnaW9u
IDogcmVnaW9uTGlzdCkgewotICAgICAgICBjb25zdCBhdXRvJiBuYW1lZEZsb3dGcmFnbWVudCA9
IGRvd25jYXN0PFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50PigqcmVuZGVyUmVnaW9uKTsKLSAgICAg
ICAgLy8gRklYTUU6IFBzZXVkby1lbGVtZW50cyBhcmUgbm90IGluY2x1ZGVkIGluIHRoZSBsaXN0
LgotICAgICAgICAvLyBUaGV5IHdpbGwgYmUgaW5jbHVkZWQgd2hlbiB3ZSB3aWxsIHByb3Blcmx5
IHN1cHBvcnQgdGhlIFJlZ2lvbiBpbnRlcmZhY2UKLSAgICAgICAgLy8gaHR0cDovL2Rldi53My5v
cmcvY3Nzd2cvY3NzLXJlZ2lvbnMvI3RoZS1yZWdpb24taW50ZXJmYWNlCi0gICAgICAgIGlmIChu
YW1lZEZsb3dGcmFnbWVudC5pc1BzZXVkb0VsZW1lbnRSZWdpb24oKSkKLSAgICAgICAgICAgIGNv
bnRpbnVlOwotICAgICAgICBBU1NFUlQobmFtZWRGbG93RnJhZ21lbnQuZ2VuZXJhdGluZ0VsZW1l
bnQoKSk7Ci0gICAgICAgIHJlZ2lvbkVsZW1lbnRzLmFwcGVuZCgqbmFtZWRGbG93RnJhZ21lbnQu
Z2VuZXJhdGluZ0VsZW1lbnQoKSk7Ci0gICAgfQotCi0gICAgcmV0dXJuIFN0YXRpY0VsZW1lbnRM
aXN0OjpjcmVhdGUoV1RGTW92ZShyZWdpb25FbGVtZW50cykpOwotfQotCi1SZWY8Tm9kZUxpc3Q+
IFdlYktpdE5hbWVkRmxvdzo6Z2V0Q29udGVudCgpCi17Ci0gICAgaWYgKG1fZmxvd01hbmFnZXIt
PmRvY3VtZW50KCkpCi0gICAgICAgIG1fZmxvd01hbmFnZXItPmRvY3VtZW50KCktPnVwZGF0ZUxh
eW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOwotCi0gICAgLy8gVGhlIHJlbmRlcmVyIG1h
eSBiZSBkZXN0cm95ZWQgb3IgY3JlYXRlZCBhZnRlciB0aGUgc3R5bGUgdXBkYXRlLgotICAgIC8v
IEJlY2F1c2UgdGhpcyBpcyBjYWxsZWQgZnJvbSBKUywgd2hlcmUgdGhlIHdyYXBwZXIga2VlcHMg
YSByZWZlcmVuY2UgdG8gdGhlIE5hbWVkRmxvdywgbm8gZ3VhcmQgaXMgbmVjZXNzYXJ5LgotICAg
IGlmICghbV9wYXJlbnRGbG93VGhyZWFkKQotICAgICAgICByZXR1cm4gU3RhdGljRWxlbWVudExp
c3Q6OmNyZWF0ZSgpOwotCi0gICAgYXV0byYgY29udGVudEVsZW1lbnRzTGlzdCA9IG1fcGFyZW50
Rmxvd1RocmVhZC0+Y29udGVudEVsZW1lbnRzKCk7Ci0gICAgVmVjdG9yPFJlZjxFbGVtZW50Pj4g
Y29udGVudEVsZW1lbnRzOwotICAgIGNvbnRlbnRFbGVtZW50cy5yZXNlcnZlSW5pdGlhbENhcGFj
aXR5KGNvbnRlbnRFbGVtZW50c0xpc3Quc2l6ZSgpKTsKLSAgICBmb3IgKGF1dG8mIGVsZW1lbnQg
OiBjb250ZW50RWxlbWVudHNMaXN0KSB7Ci0gICAgICAgIEFTU0VSVChlbGVtZW50LT5jb21wdXRl
ZFN0eWxlKCktPmZsb3dUaHJlYWQoKSA9PSBtX3BhcmVudEZsb3dUaHJlYWQtPmZsb3dUaHJlYWRO
YW1lKCkpOwotICAgICAgICBjb250ZW50RWxlbWVudHMudW5jaGVja2VkQXBwZW5kKCplbGVtZW50
KTsKLSAgICB9Ci0KLSAgICByZXR1cm4gU3RhdGljRWxlbWVudExpc3Q6OmNyZWF0ZShXVEZNb3Zl
KGNvbnRlbnRFbGVtZW50cykpOwotfQotCi12b2lkIFdlYktpdE5hbWVkRmxvdzo6c2V0UmVuZGVy
ZXIoUmVuZGVyTmFtZWRGbG93VGhyZWFkKiBwYXJlbnRGbG93VGhyZWFkKQotewotICAgIC8vIFRo
ZSBuYW1lZCBmbG93IGNhbiBlaXRoZXIgZ28gZnJvbSBhIG5vX3JlbmRlcmVyLT5yZW5kZXJlciBv
ciByZW5kZXJlci0+bm9fcmVuZGVyZXIgc3RhdGU7IGFueXRoaW5nIGVsc2UgY291bGQgaW5kaWNh
dGUgYSBidWcuCi0gICAgQVNTRVJUKCghbV9wYXJlbnRGbG93VGhyZWFkICYmIHBhcmVudEZsb3dU
aHJlYWQpIHx8IChtX3BhcmVudEZsb3dUaHJlYWQgJiYgIXBhcmVudEZsb3dUaHJlYWQpKTsKLQot
ICAgIC8vIElmIHBhcmVudEZsb3dUaHJlYWQgaXMgMCwgdGhlIGZsb3cgdGhyZWFkIHdpbGwgbW92
ZSBpbiB0aGUgIk5VTEwiIHN0YXRlLgotICAgIG1fcGFyZW50Rmxvd1RocmVhZCA9IHBhcmVudEZs
b3dUaHJlYWQ7Ci19Ci0KLXZvaWQgV2ViS2l0TmFtZWRGbG93OjpkaXNwYXRjaFJlZ2lvbk92ZXJz
ZXRDaGFuZ2VFdmVudCgpCi17Ci0gICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04o
Tm9FdmVudERpc3BhdGNoQXNzZXJ0aW9uOjppc0V2ZW50QWxsb3dlZEluTWFpblRocmVhZCgpKTsK
LSAgICAKLSAgICAvLyBJZiB0aGUgZmxvdyBpcyBpbiB0aGUgIk5VTEwiIHN0YXRlIHRoZSBldmVu
dCBzaG91bGQgbm90IGJlIGRpc3BhdGNoZWQgYW55IG1vcmUuCi0gICAgaWYgKGZsb3dTdGF0ZSgp
ID09IEZsb3dTdGF0ZU51bGwpCi0gICAgICAgIHJldHVybjsKLQotICAgIGRpc3BhdGNoRXZlbnQo
VUlFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS53ZWJraXRyZWdpb25vdmVyc2V0Y2hhbmdlRXZl
bnQsIGZhbHNlLCBmYWxzZSwgbV9mbG93TWFuYWdlci0+ZG9jdW1lbnQoKS0+ZGVmYXVsdFZpZXco
KSwgMCkpOwotfQotCi1TY3JpcHRFeGVjdXRpb25Db250ZXh0KiBXZWJLaXROYW1lZEZsb3c6OnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAotewotICAgIHJldHVybiBtX2Zsb3dNYW5hZ2Vy
LT5kb2N1bWVudCgpOwotfQotCi1Ob2RlKiBXZWJLaXROYW1lZEZsb3c6Om93bmVyTm9kZSgpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuIG1fZmxvd01hbmFnZXItPmRvY3VtZW50KCk7Ci19Ci0KLX0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKLQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1dlYktpdE5hbWVk
Rmxvdy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9XZWJLaXROYW1lZEZsb3cu
aAkocmV2aXNpb24gMjIyMjA0KQorKysgU291cmNlL1dlYkNvcmUvZG9tL1dlYktpdE5hbWVkRmxv
dy5oCShub25leGlzdGVudCkKQEAgLTEsOTMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMSBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlCi0gKiAgICBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZwotICogICAgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCi0gKiAgICBkaXNjbGFpbWVyIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMKLSAqICAgIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIAotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUiAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0g
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQgSE9MREVSIEJFCi0gKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksCi0gKiBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0g
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SCi0gKiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YKLSAqIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgotICogU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJFdmVudFRhcmdldC5oIgotI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotI2luY2x1ZGUg
PHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNz
IE5hbWVkRmxvd0NvbGxlY3Rpb247Ci1jbGFzcyBOb2RlOwotY2xhc3MgTm9kZUxpc3Q7Ci1jbGFz
cyBSZW5kZXJOYW1lZEZsb3dUaHJlYWQ7Ci1jbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0Owot
Ci1jbGFzcyBXZWJLaXROYW1lZEZsb3cgZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJLaXRO
YW1lZEZsb3c+LCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YSB7Ci1wdWJsaWM6Ci0g
ICAgc3RhdGljIFJlZjxXZWJLaXROYW1lZEZsb3c+IGNyZWF0ZShOYW1lZEZsb3dDb2xsZWN0aW9u
JiBtYW5hZ2VyLCBjb25zdCBBdG9taWNTdHJpbmcmIGZsb3dUaHJlYWROYW1lKTsKLQotICAgIH5X
ZWJLaXROYW1lZEZsb3coKTsKLQotICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSgpIGNvbnN0
OwotICAgIGJvb2wgb3ZlcnNldCgpIGNvbnN0OwotICAgIGludCBmaXJzdEVtcHR5UmVnaW9uSW5k
ZXgoKSBjb25zdDsKLSAgICBSZWY8Tm9kZUxpc3Q+IGdldFJlZ2lvbnNCeUNvbnRlbnQoTm9kZSop
OwotICAgIFJlZjxOb2RlTGlzdD4gZ2V0UmVnaW9ucygpOwotICAgIFJlZjxOb2RlTGlzdD4gZ2V0
Q29udGVudCgpOwotCi0gICAgdXNpbmcgUmVmQ291bnRlZDxXZWJLaXROYW1lZEZsb3c+OjpyZWY7
Ci0gICAgdXNpbmcgUmVmQ291bnRlZDxXZWJLaXROYW1lZEZsb3c+OjpkZXJlZjsKLQotICAgIEV2
ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gV2ViS2l0TmFtZWRGbG93RXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBlOyB9Ci0gICAg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IG92
ZXJyaWRlOwotCi0gICAgLy8gVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgZnJvbSB0aGUgSlMgYmlu
ZGluZyBjb2RlIHRvIGRldGVybWluZSBpZiB0aGUgTmFtZWRGbG93IG9iamVjdCBpcyByZWFjaGFi
bGUgb3Igbm90LgotICAgIC8vIElmIHRoZSBvYmplY3QgaGFzIGxpc3RlbmVycywgdGhlIG9iamVj
dCBzaG91bGQgb25seSBiZSBkaXNjYXJkZWQgaWYgdGhlIHBhcmVudCBEb2N1bWVudCBpcyBub3Qg
cmVhY2hhYmxlLgotICAgIE5vZGUqIG93bmVyTm9kZSgpIGNvbnN0OwotCi0gICAgdm9pZCBzZXRS
ZW5kZXJlcihSZW5kZXJOYW1lZEZsb3dUaHJlYWQqIHBhcmVudEZsb3dUaHJlYWQpOwotCi0gICAg
ZW51bSBGbG93U3RhdGUgewotICAgICAgICBGbG93U3RhdGVDcmVhdGVkLAotICAgICAgICBGbG93
U3RhdGVOdWxsCi0gICAgfTsKLQotICAgIEZsb3dTdGF0ZSBmbG93U3RhdGUoKSBjb25zdCB7IHJl
dHVybiBtX3BhcmVudEZsb3dUaHJlYWQgPyBGbG93U3RhdGVDcmVhdGVkIDogRmxvd1N0YXRlTnVs
bDsgfQotCi0gICAgdm9pZCBkaXNwYXRjaFJlZ2lvbk92ZXJzZXRDaGFuZ2VFdmVudCgpOwotCi1w
cml2YXRlOgotICAgIFdlYktpdE5hbWVkRmxvdyhOYW1lZEZsb3dDb2xsZWN0aW9uJiwgY29uc3Qg
QXRvbWljU3RyaW5nJik7Ci0KLSAgICAvLyBFdmVudFRhcmdldCBpbXBsZW1lbnRhdGlvbi4KLSAg
ICB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgb3ZlcnJpZGUgeyByZWYoKTsgfQotICAgIHZvaWQgZGVy
ZWZFdmVudFRhcmdldCgpIG92ZXJyaWRlIHsgZGVyZWYoKTsgfQotCi0gICAgLy8gVGhlIG5hbWUg
b2YgdGhlIGZsb3cgdGhyZWFkIGFzIHNwZWNpZmllZCBpbiBDU1MuCi0gICAgQXRvbWljU3RyaW5n
IG1fZmxvd1RocmVhZE5hbWU7Ci0KLSAgICBSZWZQdHI8TmFtZWRGbG93Q29sbGVjdGlvbj4gbV9m
bG93TWFuYWdlcjsKLSAgICBSZW5kZXJOYW1lZEZsb3dUaHJlYWQqIG1fcGFyZW50Rmxvd1RocmVh
ZDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Rv
bS9XZWJLaXROYW1lZEZsb3cuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9X
ZWJLaXROYW1lZEZsb3cuaWRsCShyZXZpc2lvbiAyMjIyMDQpCisrKyBTb3VyY2UvV2ViQ29yZS9k
b20vV2ViS2l0TmFtZWRGbG93LmlkbAkobm9uZXhpc3RlbnQpCkBAIC0xLDQyICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZQotICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcKLSAqICAgIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiAgICBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZwot
ICogICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzCi0gKiAgICBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKiAKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVIgIkFTIElTIiBBTkQg
QU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBCRQotICogTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLAot
ICogT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUgotICogVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GCi0gKiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YKLSAqIFNVQ0ggREFNQUdFLgotICovCi0KLVsKLSAgICBHZW5lcmF0ZUlzUmVhY2hhYmxlPUlt
cGxPd25lck5vZGVSb290LAotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAotXSBpbnRlcmZhY2UgV2Vi
S2l0TmFtZWRGbG93IDogRXZlbnRUYXJnZXQKLXsKLSAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9N
U3RyaW5nIG5hbWU7Ci0gICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gb3ZlcnNldDsKLSAg
ICByZWFkb25seSBhdHRyaWJ1dGUgbG9uZyBmaXJzdEVtcHR5UmVnaW9uSW5kZXg7Ci0gICAgLy8g
RklYTUU6IGNvbnRlbnROb2RlIHNob3VsZCBub3QgYmUgbnVsbGFibGUuCi0gICAgTm9kZUxpc3Qg
Z2V0UmVnaW9uc0J5Q29udGVudChOb2RlPyBjb250ZW50Tm9kZSk7Ci0gICAgTm9kZUxpc3QgZ2V0
UmVnaW9ucygpOwotICAgIE5vZGVMaXN0IGdldENvbnRlbnQoKTsKLX07CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAJKHJldmlzaW9uIDIy
MjIwNCkKKysrIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM3LDE2ICszNywxNSBAQAogI2luY2x1ZGUgIkNvbnRlbnRTZWN1
cml0eVBvbGljeS5oIgogI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkZvbnRDYWNo
ZS5oIgorI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiSFRNTEhlYWRFbGVtZW50LmgiCiAj
aW5jbHVkZSAiSFRNTFN0eWxlRWxlbWVudC5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckhpc3Rvcnku
aCIKICNpbmNsdWRlICJJbnNwZWN0b3JQYWdlQWdlbnQuaCIKICNpbmNsdWRlICJJbnN0cnVtZW50
aW5nQWdlbnRzLmgiCi0jaW5jbHVkZSAiTmFtZWRGbG93Q29sbGVjdGlvbi5oIgogI2luY2x1ZGUg
Ik5vZGUuaCIKICNpbmNsdWRlICJOb2RlTGlzdC5oIgogI2luY2x1ZGUgIlBzZXVkb0VsZW1lbnQu
aCIKLSNpbmNsdWRlICJSZW5kZXJOYW1lZEZsb3dGcmFnbWVudC5oIgogI2luY2x1ZGUgIlNWR1N0
eWxlRWxlbWVudC5oIgogI2luY2x1ZGUgIlNlbGVjdG9yQ2hlY2tlci5oIgogI2luY2x1ZGUgIlNo
YWRvd1Jvb3QuaCIKQEAgLTU2LDcgKzU1LDYgQEAKICNpbmNsdWRlICJTdHlsZVJ1bGUuaCIKICNp
bmNsdWRlICJTdHlsZVNjb3BlLmgiCiAjaW5jbHVkZSAiU3R5bGVTaGVldExpc3QuaCIKLSNpbmNs
dWRlICJXZWJLaXROYW1lZEZsb3cuaCIKICNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yUHJv
dG9jb2xPYmplY3RzLmg+CiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KQEAgLTEwMyw1NCArMTAxLDYgQEAgc3RhdGljIHVuc2lnbmVkIGNvbXB1dGVQc2V1ZG9D
bGFzc01hc2soYwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLWNsYXNzIENoYW5nZVJlZ2lvbk92
ZXJzZXRUYXNrIHsKLXB1YmxpYzoKLSAgICBDaGFuZ2VSZWdpb25PdmVyc2V0VGFzayhJbnNwZWN0
b3JDU1NBZ2VudCopOwotICAgIHZvaWQgc2NoZWR1bGVGb3IoV2ViS2l0TmFtZWRGbG93KiwgaW50
IGRvY3VtZW50Tm9kZUlkKTsKLSAgICB2b2lkIHVuc2NoZWR1bGUoV2ViS2l0TmFtZWRGbG93Kik7
Ci0gICAgdm9pZCByZXNldCgpOwotICAgIHZvaWQgdGltZXJGaXJlZCgpOwotCi1wcml2YXRlOgot
ICAgIEluc3BlY3RvckNTU0FnZW50KiBtX2Nzc0FnZW50OwotICAgIFRpbWVyIG1fdGltZXI7Ci0g
ICAgSGFzaE1hcDxXZWJLaXROYW1lZEZsb3cqLCBpbnQ+IG1fbmFtZWRGbG93czsKLX07Ci0KLUNo
YW5nZVJlZ2lvbk92ZXJzZXRUYXNrOjpDaGFuZ2VSZWdpb25PdmVyc2V0VGFzayhJbnNwZWN0b3JD
U1NBZ2VudCogY3NzQWdlbnQpCi0gICAgOiBtX2Nzc0FnZW50KGNzc0FnZW50KQotICAgICwgbV90
aW1lcigqdGhpcywgJkNoYW5nZVJlZ2lvbk92ZXJzZXRUYXNrOjp0aW1lckZpcmVkKQotewotfQot
Ci12b2lkIENoYW5nZVJlZ2lvbk92ZXJzZXRUYXNrOjpzY2hlZHVsZUZvcihXZWJLaXROYW1lZEZs
b3cqIG5hbWVkRmxvdywgaW50IGRvY3VtZW50Tm9kZUlkKQotewotICAgIG1fbmFtZWRGbG93cy5h
ZGQobmFtZWRGbG93LCBkb2N1bWVudE5vZGVJZCk7Ci0KLSAgICBpZiAoIW1fdGltZXIuaXNBY3Rp
dmUoKSkKLSAgICAgICAgbV90aW1lci5zdGFydE9uZVNob3QoMF9zKTsKLX0KLQotdm9pZCBDaGFu
Z2VSZWdpb25PdmVyc2V0VGFzazo6dW5zY2hlZHVsZShXZWJLaXROYW1lZEZsb3cqIG5hbWVkRmxv
dykKLXsKLSAgICBtX25hbWVkRmxvd3MucmVtb3ZlKG5hbWVkRmxvdyk7Ci19Ci0KLXZvaWQgQ2hh
bmdlUmVnaW9uT3ZlcnNldFRhc2s6OnJlc2V0KCkKLXsKLSAgICBtX3RpbWVyLnN0b3AoKTsKLSAg
ICBtX25hbWVkRmxvd3MuY2xlYXIoKTsKLX0KLQotdm9pZCBDaGFuZ2VSZWdpb25PdmVyc2V0VGFz
azo6dGltZXJGaXJlZCgpCi17Ci0gICAgLy8gVGhlIHRpbWVyIGlzIHN0b3BwZWQgb24gbV9jc3NB
Z2VudCBkZXN0cnVjdGlvbiwgc28gdGhpcyBtZXRob2Qgd2lsbCBuZXZlciBiZSBjYWxsZWQgYWZ0
ZXIgbV9jc3NBZ2VudCBoYXMgYmVlbiBkZXN0cm95ZWQuCi0gICAgZm9yIChhdXRvJiBuYW1lZEZs
b3cgOiBtX25hbWVkRmxvd3MpCi0gICAgICAgIG1fY3NzQWdlbnQtPnJlZ2lvbk92ZXJzZXRDaGFu
Z2VkKG5hbWVkRmxvdy5rZXksIG5hbWVkRmxvdy52YWx1ZSk7Ci0KLSAgICBtX25hbWVkRmxvd3Mu
Y2xlYXIoKTsKLX0KLQogY2xhc3MgSW5zcGVjdG9yQ1NTQWdlbnQ6OlN0eWxlU2hlZXRBY3Rpb24g
OiBwdWJsaWMgSW5zcGVjdG9ySGlzdG9yeTo6QWN0aW9uIHsKICAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShTdHlsZVNoZWV0QWN0aW9uKTsKIHB1YmxpYzoKQEAgLTM4NSw5ICszMzUsNiBAQCB2b2lk
IEluc3BlY3RvckNTU0FnZW50OjpyZXNldCgpCiAKIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OnJl
c2V0Tm9uUGVyc2lzdGVudERhdGEoKQogewotICAgIG1fbmFtZWRGbG93Q29sbGVjdGlvbnNSZXF1
ZXN0ZWQuY2xlYXIoKTsKLSAgICBpZiAobV9jaGFuZ2VSZWdpb25PdmVyc2V0VGFzaykKLSAgICAg
ICAgbV9jaGFuZ2VSZWdpb25PdmVyc2V0VGFzay0+cmVzZXQoKTsKICAgICByZXNldFBzZXVkb1N0
YXRlcygpOwogfQogCkBAIC00NTgsNzcgKzQwNSw2IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6
OnNldEFjdGl2ZVN0eWxlU2gKICAgICB9CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmRp
ZENyZWF0ZU5hbWVkRmxvdyhEb2N1bWVudCYgZG9jdW1lbnQsIFdlYktpdE5hbWVkRmxvdyYgbmFt
ZWRGbG93KQotewotICAgIGludCBkb2N1bWVudE5vZGVJZCA9IGRvY3VtZW50Tm9kZVdpdGhSZXF1
ZXN0ZWRGbG93c0lkKCZkb2N1bWVudCk7Ci0gICAgaWYgKCFkb2N1bWVudE5vZGVJZCkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgRXJyb3JTdHJpbmcgdW51c2VkOwotICAgIG1fZnJvbnRlbmREaXNw
YXRjaGVyLT5uYW1lZEZsb3dDcmVhdGVkKGJ1aWxkT2JqZWN0Rm9yTmFtZWRGbG93KHVudXNlZCwg
Jm5hbWVkRmxvdywgZG9jdW1lbnROb2RlSWQpKTsKLX0KLQotdm9pZCBJbnNwZWN0b3JDU1NBZ2Vu
dDo6d2lsbFJlbW92ZU5hbWVkRmxvdyhEb2N1bWVudCYgZG9jdW1lbnQsIFdlYktpdE5hbWVkRmxv
dyYgbmFtZWRGbG93KQotewotICAgIGludCBkb2N1bWVudE5vZGVJZCA9IGRvY3VtZW50Tm9kZVdp
dGhSZXF1ZXN0ZWRGbG93c0lkKCZkb2N1bWVudCk7Ci0gICAgaWYgKCFkb2N1bWVudE5vZGVJZCkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKG1fY2hhbmdlUmVnaW9uT3ZlcnNldFRhc2spCi0g
ICAgICAgIG1fY2hhbmdlUmVnaW9uT3ZlcnNldFRhc2stPnVuc2NoZWR1bGUoJm5hbWVkRmxvdyk7
Ci0KLSAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+bmFtZWRGbG93UmVtb3ZlZChkb2N1bWVudE5v
ZGVJZCwgbmFtZWRGbG93Lm5hbWUoKS5zdHJpbmcoKSk7Ci19Ci0KLXZvaWQgSW5zcGVjdG9yQ1NT
QWdlbnQ6OmRpZENoYW5nZVJlZ2lvbk92ZXJzZXQoRG9jdW1lbnQmIGRvY3VtZW50LCBXZWJLaXRO
YW1lZEZsb3cmIG5hbWVkRmxvdykKLXsKLSAgICBpbnQgZG9jdW1lbnROb2RlSWQgPSBkb2N1bWVu
dE5vZGVXaXRoUmVxdWVzdGVkRmxvd3NJZCgmZG9jdW1lbnQpOwotICAgIGlmICghZG9jdW1lbnRO
b2RlSWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmICghbV9jaGFuZ2VSZWdpb25PdmVyc2V0
VGFzaykKLSAgICAgICAgbV9jaGFuZ2VSZWdpb25PdmVyc2V0VGFzayA9IHN0ZDo6bWFrZV91bmlx
dWU8Q2hhbmdlUmVnaW9uT3ZlcnNldFRhc2s+KHRoaXMpOwotICAgIG1fY2hhbmdlUmVnaW9uT3Zl
cnNldFRhc2stPnNjaGVkdWxlRm9yKCZuYW1lZEZsb3csIGRvY3VtZW50Tm9kZUlkKTsKLX0KLQot
dm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6cmVnaW9uT3ZlcnNldENoYW5nZWQoV2ViS2l0TmFtZWRG
bG93KiBuYW1lZEZsb3csIGludCBkb2N1bWVudE5vZGVJZCkKLXsKLSAgICBpZiAobmFtZWRGbG93
LT5mbG93U3RhdGUoKSA9PSBXZWJLaXROYW1lZEZsb3c6OkZsb3dTdGF0ZU51bGwpCi0gICAgICAg
IHJldHVybjsKLQotICAgIEVycm9yU3RyaW5nIHVudXNlZDsKLSAgICBSZWY8V2ViS2l0TmFtZWRG
bG93PiBwcm90ZWN0KCpuYW1lZEZsb3cpOwotCi0gICAgbV9mcm9udGVuZERpc3BhdGNoZXItPnJl
Z2lvbk92ZXJzZXRDaGFuZ2VkKGJ1aWxkT2JqZWN0Rm9yTmFtZWRGbG93KHVudXNlZCwgbmFtZWRG
bG93LCBkb2N1bWVudE5vZGVJZCkpOwotfQotCi12b2lkIEluc3BlY3RvckNTU0FnZW50OjpkaWRS
ZWdpc3Rlck5hbWVkRmxvd0NvbnRlbnRFbGVtZW50KERvY3VtZW50JiBkb2N1bWVudCwgV2ViS2l0
TmFtZWRGbG93JiBuYW1lZEZsb3csIE5vZGUmIGNvbnRlbnRFbGVtZW50LCBOb2RlKiBuZXh0Q29u
dGVudEVsZW1lbnQpCi17Ci0gICAgaW50IGRvY3VtZW50Tm9kZUlkID0gZG9jdW1lbnROb2RlV2l0
aFJlcXVlc3RlZEZsb3dzSWQoJmRvY3VtZW50KTsKLSAgICBpZiAoIWRvY3VtZW50Tm9kZUlkKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBFcnJvclN0cmluZyB1bnVzZWQ7Ci0gICAgaW50IGNvbnRl
bnRFbGVtZW50Tm9kZUlkID0gbV9kb21BZ2VudC0+cHVzaE5vZGVUb0Zyb250ZW5kKHVudXNlZCwg
ZG9jdW1lbnROb2RlSWQsICZjb250ZW50RWxlbWVudCk7Ci0gICAgaW50IG5leHRDb250ZW50RWxl
bWVudE5vZGVJZCA9IG5leHRDb250ZW50RWxlbWVudCA/IG1fZG9tQWdlbnQtPnB1c2hOb2RlVG9G
cm9udGVuZCh1bnVzZWQsIGRvY3VtZW50Tm9kZUlkLCBuZXh0Q29udGVudEVsZW1lbnQpIDogMDsK
LSAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+cmVnaXN0ZXJlZE5hbWVkRmxvd0NvbnRlbnRFbGVt
ZW50KGRvY3VtZW50Tm9kZUlkLCBuYW1lZEZsb3cubmFtZSgpLnN0cmluZygpLCBjb250ZW50RWxl
bWVudE5vZGVJZCwgbmV4dENvbnRlbnRFbGVtZW50Tm9kZUlkKTsKLX0KLQotdm9pZCBJbnNwZWN0
b3JDU1NBZ2VudDo6ZGlkVW5yZWdpc3Rlck5hbWVkRmxvd0NvbnRlbnRFbGVtZW50KERvY3VtZW50
JiBkb2N1bWVudCwgV2ViS2l0TmFtZWRGbG93JiBuYW1lZEZsb3csIE5vZGUmIGNvbnRlbnRFbGVt
ZW50KQotewotICAgIGludCBkb2N1bWVudE5vZGVJZCA9IGRvY3VtZW50Tm9kZVdpdGhSZXF1ZXN0
ZWRGbG93c0lkKCZkb2N1bWVudCk7Ci0gICAgaWYgKCFkb2N1bWVudE5vZGVJZCkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgRXJyb3JTdHJpbmcgdW51c2VkOwotICAgIGludCBjb250ZW50RWxlbWVu
dE5vZGVJZCA9IG1fZG9tQWdlbnQtPnB1c2hOb2RlVG9Gcm9udGVuZCh1bnVzZWQsIGRvY3VtZW50
Tm9kZUlkLCAmY29udGVudEVsZW1lbnQpOwotICAgIGlmICghY29udGVudEVsZW1lbnROb2RlSWQp
IHsKLSAgICAgICAgLy8gV2UndmUgYWxyZWFkeSBub3RpZmllZCB0aGF0IHRoZSBET00gbm9kZSB3
YXMgcmVtb3ZlZCBmcm9tIHRoZSBET00sIHNvIHRoZXJlJ3Mgbm8gbmVlZCB0byBzZW5kIGFub3Ro
ZXIgZXZlbnQuCi0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgbV9mcm9udGVuZERpc3BhdGNo
ZXItPnVucmVnaXN0ZXJlZE5hbWVkRmxvd0NvbnRlbnRFbGVtZW50KGRvY3VtZW50Tm9kZUlkLCBu
YW1lZEZsb3cubmFtZSgpLnN0cmluZygpLCBjb250ZW50RWxlbWVudE5vZGVJZCk7Ci19Ci0KIGJv
b2wgSW5zcGVjdG9yQ1NTQWdlbnQ6OmZvcmNlUHNldWRvU3RhdGUoY29uc3QgRWxlbWVudCYgZWxl
bWVudCwgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzVHlwZSBwc2V1ZG9DbGFzc1R5cGUpCiB7CiAg
ICAgaWYgKG1fbm9kZUlkVG9Gb3JjZWRQc2V1ZG9TdGF0ZS5pc0VtcHR5KCkpCkBAIC05MDEsMjMg
Kzc3Nyw2IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmZvcmNlUHNldWRvU3RhdGUKICAgICBl
bGVtZW50LT5kb2N1bWVudCgpLnN0eWxlU2NvcGUoKS5kaWRDaGFuZ2VTdHlsZVNoZWV0RW52aXJv
bm1lbnQoKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0TmFtZWRGbG93Q29sbGVj
dGlvbihFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGludCBkb2N1bWVudE5vZGVJZCwgUmVmUHRy
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6TmFt
ZWRGbG93Pj4mIHJlc3VsdCkKLXsKLSAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBtX2RvbUFnZW50
LT5hc3NlcnREb2N1bWVudChlcnJvclN0cmluZywgZG9jdW1lbnROb2RlSWQpOwotICAgIGlmICgh
ZG9jdW1lbnQpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fbmFtZWRGbG93Q29sbGVjdGlvbnNS
ZXF1ZXN0ZWQuYWRkKGRvY3VtZW50Tm9kZUlkKTsKLQotICAgIFZlY3RvcjxSZWZQdHI8V2ViS2l0
TmFtZWRGbG93Pj4gbmFtZWRGbG93c1ZlY3RvciA9IGRvY3VtZW50LT5uYW1lZEZsb3dzKCkubmFt
ZWRGbG93cygpOwotICAgIGF1dG8gbmFtZWRGbG93cyA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFy
cmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6TmFtZWRGbG93Pjo6Y3JlYXRlKCk7Ci0KLSAg
ICBmb3IgKGF1dG8mIG5hbWVkRmxvdyA6IG5hbWVkRmxvd3NWZWN0b3IpCi0gICAgICAgIG5hbWVk
Rmxvd3MtPmFkZEl0ZW0oYnVpbGRPYmplY3RGb3JOYW1lZEZsb3coZXJyb3JTdHJpbmcsIG5hbWVk
Rmxvdy5nZXQoKSwgZG9jdW1lbnROb2RlSWQpKTsKLQotICAgIHJlc3VsdCA9IFdURk1vdmUobmFt
ZWRGbG93cyk7Ci19Ci0KIEluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZSYgSW5zcGVj
dG9yQ1NTQWdlbnQ6OmFzSW5zcGVjdG9yU3R5bGVTaGVldChTdHlsZWRFbGVtZW50JiBlbGVtZW50
KQogewogICAgIGF1dG8gaXQgPSBtX25vZGVUb0luc3BlY3RvclN0eWxlU2hlZXQuZmluZCgmZWxl
bWVudCk7CkBAIC05NDcsMTUgKzgwNiw2IEBAIEVsZW1lbnQqIEluc3BlY3RvckNTU0FnZW50Ojpl
bGVtZW50Rm9ySWQKICAgICByZXR1cm4gZG93bmNhc3Q8RWxlbWVudD4obm9kZSk7CiB9CiAKLWlu
dCBJbnNwZWN0b3JDU1NBZ2VudDo6ZG9jdW1lbnROb2RlV2l0aFJlcXVlc3RlZEZsb3dzSWQoRG9j
dW1lbnQqIGRvY3VtZW50KQotewotICAgIGludCBkb2N1bWVudE5vZGVJZCA9IG1fZG9tQWdlbnQt
PmJvdW5kTm9kZUlkKGRvY3VtZW50KTsKLSAgICBpZiAoIWRvY3VtZW50Tm9kZUlkIHx8ICFtX25h
bWVkRmxvd0NvbGxlY3Rpb25zUmVxdWVzdGVkLmNvbnRhaW5zKGRvY3VtZW50Tm9kZUlkKSkKLSAg
ICAgICAgcmV0dXJuIDA7Ci0KLSAgICByZXR1cm4gZG9jdW1lbnROb2RlSWQ7Ci19Ci0KIFN0cmlu
ZyBJbnNwZWN0b3JDU1NBZ2VudDo6dW5iaW5kU3R5bGVTaGVldChJbnNwZWN0b3JTdHlsZVNoZWV0
KiBpbnNwZWN0b3JTdHlsZVNoZWV0KQogewogICAgIFN0cmluZyBpZCA9IGluc3BlY3RvclN0eWxl
U2hlZXQtPmlkKCk7CkBAIC0xMDkyLDYxICs5NDIsNiBAQCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90
b2NvbDo6Q1NTOjpDU1NTdHlsCiAgICAgcmV0dXJuIGluc3BlY3RvclN0eWxlLT5idWlsZE9iamVj
dEZvclN0eWxlKCk7CiB9CiAKLVJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNw
ZWN0b3I6OlByb3RvY29sOjpDU1M6OlJlZ2lvbj4+IEluc3BlY3RvckNTU0FnZW50OjpidWlsZEFy
cmF5Rm9yUmVnaW9ucyhFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIFJlZlB0cjxOb2RlTGlzdD4m
JiByZWdpb25MaXN0LCBpbnQgZG9jdW1lbnROb2RlSWQpCi17Ci0gICAgYXV0byByZWdpb25zID0g
SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpSZWdp
b24+OjpjcmVhdGUoKTsKLQotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCByZWdpb25MaXN0
LT5sZW5ndGgoKTsgKytpKSB7Ci0gICAgICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6UmVn
aW9uOjpSZWdpb25PdmVyc2V0IHJlZ2lvbk92ZXJzZXQ7Ci0KLSAgICAgICAgc3dpdGNoIChkb3du
Y2FzdDxFbGVtZW50PihyZWdpb25MaXN0LT5pdGVtKGkpKS0+cmVnaW9uT3ZlcnNldFN0YXRlKCkp
IHsKLSAgICAgICAgY2FzZSBSZWdpb25GaXQ6Ci0gICAgICAgICAgICByZWdpb25PdmVyc2V0ID0g
SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpSZWdpb246OlJlZ2lvbk92ZXJzZXQ6OkZpdDsKLSAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFJlZ2lvbkVtcHR5OgotICAgICAgICAgICAg
cmVnaW9uT3ZlcnNldCA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6UmVnaW9uOjpSZWdpb25P
dmVyc2V0OjpFbXB0eTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFJlZ2lvbk92
ZXJzZXQ6Ci0gICAgICAgICAgICByZWdpb25PdmVyc2V0ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6
Q1NTOjpSZWdpb246OlJlZ2lvbk92ZXJzZXQ6Ok92ZXJzZXQ7Ci0gICAgICAgICAgICBicmVhazsK
LSAgICAgICAgY2FzZSBSZWdpb25VbmRlZmluZWQ6Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAg
ICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAg
ICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLQotICAgICAgICBhdXRvIHJlZ2lvbiA9IEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkNTUzo6UmVnaW9uOjpjcmVhdGUoKQotICAgICAgICAgICAgLnNldFJl
Z2lvbk92ZXJzZXQocmVnaW9uT3ZlcnNldCkKLSAgICAgICAgICAgIC8vIGRvY3VtZW50Tm9kZUlk
IHdhcyBwcmV2aW91c2x5IGFzc2VydGVkCi0gICAgICAgICAgICAuc2V0Tm9kZUlkKG1fZG9tQWdl
bnQtPnB1c2hOb2RlVG9Gcm9udGVuZChlcnJvclN0cmluZywgZG9jdW1lbnROb2RlSWQsIHJlZ2lv
bkxpc3QtPml0ZW0oaSkpKQotICAgICAgICAgICAgLnJlbGVhc2UoKTsKLQotICAgICAgICByZWdp
b25zLT5hZGRJdGVtKFdURk1vdmUocmVnaW9uKSk7Ci0gICAgfQotCi0gICAgcmV0dXJuIFdURk1v
dmUocmVnaW9ucyk7Ci19Ci0KLVJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6Ok5hbWVk
Rmxvdz4gSW5zcGVjdG9yQ1NTQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yTmFtZWRGbG93KEVycm9yU3Ry
aW5nJiBlcnJvclN0cmluZywgV2ViS2l0TmFtZWRGbG93KiB3ZWJraXROYW1lZEZsb3csIGludCBk
b2N1bWVudE5vZGVJZCkKLXsKLSAgICBSZWZQdHI8Tm9kZUxpc3Q+IGNvbnRlbnRMaXN0ID0gd2Vi
a2l0TmFtZWRGbG93LT5nZXRDb250ZW50KCk7Ci0gICAgYXV0byBjb250ZW50ID0gSW5zcGVjdG9y
OjpQcm90b2NvbDo6QXJyYXk8aW50Pjo6Y3JlYXRlKCk7Ci0KLSAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgY29udGVudExpc3QtPmxlbmd0aCgpOyArK2kpIHsKLSAgICAgICAgLy8gZG9jdW1l
bnROb2RlSWQgd2FzIHByZXZpb3VzbHkgYXNzZXJ0ZWQKLSAgICAgICAgY29udGVudC0+YWRkSXRl
bShtX2RvbUFnZW50LT5wdXNoTm9kZVRvRnJvbnRlbmQoZXJyb3JTdHJpbmcsIGRvY3VtZW50Tm9k
ZUlkLCBjb250ZW50TGlzdC0+aXRlbShpKSkpOwotICAgIH0KLQotICAgIHJldHVybiBJbnNwZWN0
b3I6OlByb3RvY29sOjpDU1M6Ok5hbWVkRmxvdzo6Y3JlYXRlKCkKLSAgICAgICAgLnNldERvY3Vt
ZW50Tm9kZUlkKGRvY3VtZW50Tm9kZUlkKQotICAgICAgICAuc2V0TmFtZSh3ZWJraXROYW1lZEZs
b3ctPm5hbWUoKS5zdHJpbmcoKSkKLSAgICAgICAgLnNldE92ZXJzZXQod2Via2l0TmFtZWRGbG93
LT5vdmVyc2V0KCkpCi0gICAgICAgIC5zZXRDb250ZW50KFdURk1vdmUoY29udGVudCkpCi0gICAg
ICAgIC5zZXRSZWdpb25zKGJ1aWxkQXJyYXlGb3JSZWdpb25zKGVycm9yU3RyaW5nLCB3ZWJraXRO
YW1lZEZsb3ctPmdldFJlZ2lvbnMoKSwgZG9jdW1lbnROb2RlSWQpKQotICAgICAgICAucmVsZWFz
ZSgpOwotfQotCiB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpkaWRSZW1vdmVET01Ob2RlKE5vZGUm
IG5vZGUsIGludCBub2RlSWQpCiB7CiAgICAgbV9ub2RlSWRUb0ZvcmNlZFBzZXVkb1N0YXRlLnJl
bW92ZShub2RlSWQpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNT
U0FnZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckNTU0FnZW50LmgJKHJldmlzaW9uIDIyMjIwNCkKKysrIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JDU1NBZ2VudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NywxNCArNDcsMTIgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ1NTUnVsZTsKIGNsYXNzIENTU1N0eWxlUnVsZTsK
IGNsYXNzIENTU1N0eWxlU2hlZXQ7Ci1jbGFzcyBDaGFuZ2VSZWdpb25PdmVyc2V0VGFzazsKIGNs
YXNzIERvY3VtZW50OwogY2xhc3MgRWxlbWVudDsKIGNsYXNzIE5vZGU7CiBjbGFzcyBOb2RlTGlz
dDsKIGNsYXNzIFN0eWxlUmVzb2x2ZXI7CiBjbGFzcyBTdHlsZVJ1bGU7Ci1jbGFzcyBXZWJLaXRO
YW1lZEZsb3c7CiAKIGNsYXNzIEluc3BlY3RvckNTU0FnZW50IGZpbmFsCiAgICAgOiBwdWJsaWMg
SW5zcGVjdG9yQWdlbnRCYXNlCkBAIC05MSwxOCArODksMTIgQEAgcHVibGljOgogICAgIHZvaWQg
ZGlzY2FyZEFnZW50KCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBlbmFibGUoRXJyb3JTdHJpbmcmKSBv
dmVycmlkZTsKICAgICB2b2lkIGRpc2FibGUoRXJyb3JTdHJpbmcmKSBvdmVycmlkZTsKLSAgICB2
b2lkIHJlZ2lvbk92ZXJzZXRDaGFuZ2VkKFdlYktpdE5hbWVkRmxvdyosIGludCBkb2N1bWVudE5v
ZGVJZCk7CiAgICAgdm9pZCByZXNldCgpOwogCiAgICAgLy8gSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uCiAgICAgdm9pZCBkb2N1bWVudERldGFjaGVkKERvY3VtZW50Jik7CiAgICAgdm9pZCBtZWRp
YVF1ZXJ5UmVzdWx0Q2hhbmdlZCgpOwogICAgIHZvaWQgYWN0aXZlU3R5bGVTaGVldHNVcGRhdGVk
KERvY3VtZW50Jik7Ci0gICAgdm9pZCBkaWRDcmVhdGVOYW1lZEZsb3coRG9jdW1lbnQmLCBXZWJL
aXROYW1lZEZsb3cmKTsKLSAgICB2b2lkIHdpbGxSZW1vdmVOYW1lZEZsb3coRG9jdW1lbnQmLCBX
ZWJLaXROYW1lZEZsb3cmKTsKLSAgICB2b2lkIGRpZENoYW5nZVJlZ2lvbk92ZXJzZXQoRG9jdW1l
bnQmLCBXZWJLaXROYW1lZEZsb3cmKTsKLSAgICB2b2lkIGRpZFJlZ2lzdGVyTmFtZWRGbG93Q29u
dGVudEVsZW1lbnQoRG9jdW1lbnQmLCBXZWJLaXROYW1lZEZsb3cmLCBOb2RlJiBjb250ZW50RWxl
bWVudCwgTm9kZSogbmV4dENvbnRlbnRFbGVtZW50ID0gbnVsbHB0cik7Ci0gICAgdm9pZCBkaWRV
bnJlZ2lzdGVyTmFtZWRGbG93Q29udGVudEVsZW1lbnQoRG9jdW1lbnQmLCBXZWJLaXROYW1lZEZs
b3cmLCBOb2RlJiBjb250ZW50RWxlbWVudCk7CiAgICAgYm9vbCBmb3JjZVBzZXVkb1N0YXRlKGNv
bnN0IEVsZW1lbnQmLCBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NUeXBlKTsKIAogICAgIHZvaWQg
Z2V0Q29tcHV0ZWRTdHlsZUZvck5vZGUoRXJyb3JTdHJpbmcmLCBpbnQgbm9kZUlkLCBSZWZQdHI8
SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1ND
b21wdXRlZFN0eWxlUHJvcGVydHk+PiYpIG92ZXJyaWRlOwpAQCAtMTE5LDcgKzExMSw2IEBAIHB1
YmxpYzoKICAgICB2b2lkIGdldFN1cHBvcnRlZENTU1Byb3BlcnRpZXMoRXJyb3JTdHJpbmcmLCBS
ZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NT
OjpDU1NQcm9wZXJ0eUluZm8+PiYgcmVzdWx0KSBvdmVycmlkZTsKICAgICB2b2lkIGdldFN1cHBv
cnRlZFN5c3RlbUZvbnRGYW1pbHlOYW1lcyhFcnJvclN0cmluZyYsIFJlZlB0cjxJbnNwZWN0b3I6
OlByb3RvY29sOjpBcnJheTxTdHJpbmc+PiYgcmVzdWx0KSBvdmVycmlkZTsKICAgICB2b2lkIGZv
cmNlUHNldWRvU3RhdGUoRXJyb3JTdHJpbmcmLCBpbnQgbm9kZUlkLCBjb25zdCBJbnNwZWN0b3I6
Okluc3BlY3RvckFycmF5JiBmb3JjZWRQc2V1ZG9DbGFzc2VzKSBvdmVycmlkZTsKLSAgICB2b2lk
IGdldE5hbWVkRmxvd0NvbGxlY3Rpb24oRXJyb3JTdHJpbmcmLCBpbnQgZG9jdW1lbnROb2RlSWQs
IFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpD
U1M6Ok5hbWVkRmxvdz4+JiByZXN1bHQpIG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIGNsYXNz
IFN0eWxlU2hlZXRBY3Rpb247CkBAIC0xMzcsNyArMTI4LDYgQEAgcHJpdmF0ZToKICAgICB2b2lk
IHJlc2V0Tm9uUGVyc2lzdGVudERhdGEoKTsKICAgICBJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5s
aW5lU3R5bGUmIGFzSW5zcGVjdG9yU3R5bGVTaGVldChTdHlsZWRFbGVtZW50Jik7CiAgICAgRWxl
bWVudCogZWxlbWVudEZvcklkKEVycm9yU3RyaW5nJiwgaW50IG5vZGVJZCk7Ci0gICAgaW50IGRv
Y3VtZW50Tm9kZVdpdGhSZXF1ZXN0ZWRGbG93c0lkKERvY3VtZW50Kik7CiAKICAgICB2b2lkIGNv
bGxlY3RBbGxTdHlsZVNoZWV0cyhWZWN0b3I8SW5zcGVjdG9yU3R5bGVTaGVldCo+Jik7CiAgICAg
dm9pZCBjb2xsZWN0QWxsRG9jdW1lbnRTdHlsZVNoZWV0cyhEb2N1bWVudCYsIFZlY3RvcjxDU1NT
dHlsZVNoZWV0Kj4mKTsKQEAgLTE1NCw4ICsxNDQsNiBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxJ
bnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1J1bGU+IGJ1aWxkT2JqZWN0Rm9yUnVsZShDU1NT
dHlsZVJ1bGUqKTsKICAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVj
dG9yOjpQcm90b2NvbDo6Q1NTOjpSdWxlTWF0Y2g+PiBidWlsZEFycmF5Rm9yTWF0Y2hlZFJ1bGVM
aXN0KGNvbnN0IFZlY3RvcjxSZWZQdHI8U3R5bGVSdWxlPj4mLCBTdHlsZVJlc29sdmVyJiwgRWxl
bWVudCYsIFBzZXVkb0lkKTsKICAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpD
U1NTdHlsZT4gYnVpbGRPYmplY3RGb3JBdHRyaWJ1dGVzU3R5bGUoU3R5bGVkRWxlbWVudCYpOwot
ICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29s
OjpDU1M6OlJlZ2lvbj4+IGJ1aWxkQXJyYXlGb3JSZWdpb25zKEVycm9yU3RyaW5nJiwgUmVmUHRy
PE5vZGVMaXN0PiYmLCBpbnQgZG9jdW1lbnROb2RlSWQpOwotICAgIFJlZlB0cjxJbnNwZWN0b3I6
OlByb3RvY29sOjpDU1M6Ok5hbWVkRmxvdz4gYnVpbGRPYmplY3RGb3JOYW1lZEZsb3coRXJyb3JT
dHJpbmcmLCBXZWJLaXROYW1lZEZsb3cqLCBpbnQgZG9jdW1lbnROb2RlSWQpOwogCiAgICAgLy8g
SW5zcGVjdG9yRE9NQWdlbnQ6OkRPTUxpc3RlbmVyIGltcGxlbWVudGF0aW9uCiAgICAgdm9pZCBk
aWRSZW1vdmVET01Ob2RlKE5vZGUmLCBpbnQgbm9kZUlkKSBvdmVycmlkZTsKQEAgLTE3Nyw4ICsx
NjUsNiBAQCBwcml2YXRlOgogICAgIEhhc2hNYXA8RG9jdW1lbnQqLCBIYXNoU2V0PENTU1N0eWxl
U2hlZXQqPj4gbV9kb2N1bWVudFRvS25vd25DU1NTdHlsZVNoZWV0czsKICAgICBOb2RlSWRUb0Zv
cmNlZFBzZXVkb1N0YXRlIG1fbm9kZUlkVG9Gb3JjZWRQc2V1ZG9TdGF0ZTsKICAgICBIYXNoU2V0
PERvY3VtZW50Kj4gbV9kb2N1bWVudHNXaXRoRm9yY2VkUHNldWRvU3RhdGVzOwotICAgIEhhc2hT
ZXQ8aW50PiBtX25hbWVkRmxvd0NvbGxlY3Rpb25zUmVxdWVzdGVkOwotICAgIHN0ZDo6dW5pcXVl
X3B0cjxDaGFuZ2VSZWdpb25PdmVyc2V0VGFzaz4gbV9jaGFuZ2VSZWdpb25PdmVyc2V0VGFzazsK
IAogICAgIGludCBtX2xhc3RTdHlsZVNoZWV0SWQgeyAxIH07CiAgICAgYm9vbCBtX2NyZWF0aW5n
VmlhSW5zcGVjdG9yU3R5bGVTaGVldCB7IGZhbHNlIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAkocmV2aXNp
b24gMjIyMjA0KQorKysgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1l
bnRhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0OSw0MiArMjQ5LDYgQEAgdm9pZCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OnBzZXVkb0VsZQogICAgICAgICBsYXllclRyZWVBZ2VudC0+
cHNldWRvRWxlbWVudERlc3Ryb3llZChwc2V1ZG9FbGVtZW50KTsKIH0KIAotdm9pZCBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OmRpZENyZWF0ZU5hbWVkRmxvd0ltcGwoSW5zdHJ1bWVudGluZ0Fn
ZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgRG9jdW1lbnQqIGRvY3VtZW50LCBXZWJLaXROYW1l
ZEZsb3cmIG5hbWVkRmxvdykKLXsKLSAgICBpZiAoIWRvY3VtZW50KQotICAgICAgICByZXR1cm47
Ci0KLSAgICBpZiAoSW5zcGVjdG9yQ1NTQWdlbnQqIGNzc0FnZW50ID0gaW5zdHJ1bWVudGluZ0Fn
ZW50cy5pbnNwZWN0b3JDU1NBZ2VudCgpKQotICAgICAgICBjc3NBZ2VudC0+ZGlkQ3JlYXRlTmFt
ZWRGbG93KCpkb2N1bWVudCwgbmFtZWRGbG93KTsKLX0KLQotdm9pZCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OndpbGxSZW1vdmVOYW1lZEZsb3dJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGlu
c3RydW1lbnRpbmdBZ2VudHMsIERvY3VtZW50KiBkb2N1bWVudCwgV2ViS2l0TmFtZWRGbG93JiBu
YW1lZEZsb3cpCi17Ci0gICAgaWYgKCFkb2N1bWVudCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
aWYgKEluc3BlY3RvckNTU0FnZW50KiBjc3NBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5z
cGVjdG9yQ1NTQWdlbnQoKSkKLSAgICAgICAgY3NzQWdlbnQtPndpbGxSZW1vdmVOYW1lZEZsb3co
KmRvY3VtZW50LCBuYW1lZEZsb3cpOwotfQotCi12b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6ZGlkQ2hhbmdlUmVnaW9uT3ZlcnNldEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1
bWVudGluZ0FnZW50cywgRG9jdW1lbnQmIGRvY3VtZW50LCBXZWJLaXROYW1lZEZsb3cmIG5hbWVk
RmxvdykKLXsKLSAgICBpZiAoSW5zcGVjdG9yQ1NTQWdlbnQqIGNzc0FnZW50ID0gaW5zdHJ1bWVu
dGluZ0FnZW50cy5pbnNwZWN0b3JDU1NBZ2VudCgpKQotICAgICAgICBjc3NBZ2VudC0+ZGlkQ2hh
bmdlUmVnaW9uT3ZlcnNldChkb2N1bWVudCwgbmFtZWRGbG93KTsKLX0KLQotdm9pZCBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OmRpZFJlZ2lzdGVyTmFtZWRGbG93Q29udGVudEVsZW1lbnRJbXBs
KEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIERvY3VtZW50JiBkb2N1
bWVudCwgV2ViS2l0TmFtZWRGbG93JiBuYW1lZEZsb3csIE5vZGUmIGNvbnRlbnRFbGVtZW50LCBO
b2RlKiBuZXh0Q29udGVudEVsZW1lbnQpCi17Ci0gICAgaWYgKEluc3BlY3RvckNTU0FnZW50KiBj
c3NBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yQ1NTQWdlbnQoKSkKLSAgICAg
ICAgY3NzQWdlbnQtPmRpZFJlZ2lzdGVyTmFtZWRGbG93Q29udGVudEVsZW1lbnQoZG9jdW1lbnQs
IG5hbWVkRmxvdywgY29udGVudEVsZW1lbnQsIG5leHRDb250ZW50RWxlbWVudCk7Ci19Ci0KLXZv
aWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRVbnJlZ2lzdGVyTmFtZWRGbG93Q29udGVu
dEVsZW1lbnRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIERv
Y3VtZW50JiBkb2N1bWVudCwgV2ViS2l0TmFtZWRGbG93JiBuYW1lZEZsb3csIE5vZGUmIGNvbnRl
bnRFbGVtZW50KQotewotICAgIGlmIChJbnNwZWN0b3JDU1NBZ2VudCogY3NzQWdlbnQgPSBpbnN0
cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckNTU0FnZW50KCkpCi0gICAgICAgIGNzc0FnZW50LT5k
aWRVbnJlZ2lzdGVyTmFtZWRGbG93Q29udGVudEVsZW1lbnQoZG9jdW1lbnQsIG5hbWVkRmxvdywg
Y29udGVudEVsZW1lbnQpOwotfQotCiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6bW91
c2VEaWRNb3ZlT3ZlckVsZW1lbnRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRp
bmdBZ2VudHMsIGNvbnN0IEhpdFRlc3RSZXN1bHQmIHJlc3VsdCwgdW5zaWduZWQgbW9kaWZpZXJG
bGFncykKIHsKICAgICBpZiAoSW5zcGVjdG9yRE9NQWdlbnQqIGRvbUFnZW50ID0gaW5zdHJ1bWVu
dGluZ0FnZW50cy5pbnNwZWN0b3JET01BZ2VudCgpKQpJbmRleDogU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcAkocmV2aXNpb24gMjIyMjA0KQorKysgU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC01MSw4ICs1MSw2IEBACiAjaW5jbHVkZSAiUmVuZGVyRWxlbWVudC5oIgogI2luY2x1ZGUg
IlJlbmRlckZsb3dUaHJlYWQuaCIKICNpbmNsdWRlICJSZW5kZXJJbmxpbmUuaCIKLSNpbmNsdWRl
ICJSZW5kZXJOYW1lZEZsb3dGcmFnbWVudC5oIgotI2luY2x1ZGUgIlJlbmRlck5hbWVkRmxvd1Ro
cmVhZC5oIgogI2luY2x1ZGUgIlJlbmRlclJlZ2lvbi5oIgogI2luY2x1ZGUgIlJlbmRlclZpZXcu
aCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCkBAIC0xMjAsNyArMTE4LDcgQEAgc3Rh
dGljIHZvaWQgYnVpbGRSZW5kZXJlckhpZ2hsaWdodChSZW5kZQogICAgICAgICAgICAgICAgIG1h
cmdpbnMuZW5kKHJlbmRlckJveC5zdHlsZSgpLndyaXRpbmdNb2RlKCkpID0gY29tcHV0ZWRWYWx1
ZXMubV9tYXJnaW5zLm1fZW5kOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBwYWRkaW5n
Qm94ID0gcmVuZGVyQm94LmNsaWVudEJveFJlY3RJblJlZ2lvbihyZWdpb24pOworICAgICAgICAg
ICAgcGFkZGluZ0JveCA9IHJlbmRlckJveC5jbGllbnRCb3hSZWN0KCk7CiAgICAgICAgICAgICBj
b250ZW50Qm94ID0gTGF5b3V0UmVjdChwYWRkaW5nQm94LngoKSArIHJlbmRlckJveC5wYWRkaW5n
TGVmdCgpLCBwYWRkaW5nQm94LnkoKSArIHJlbmRlckJveC5wYWRkaW5nVG9wKCksCiAgICAgICAg
ICAgICAgICAgcGFkZGluZ0JveC53aWR0aCgpIC0gcmVuZGVyQm94LnBhZGRpbmdMZWZ0KCkgLSBy
ZW5kZXJCb3gucGFkZGluZ1JpZ2h0KCksIHBhZGRpbmdCb3guaGVpZ2h0KCkgLSByZW5kZXJCb3gu
cGFkZGluZ1RvcCgpIC0gcmVuZGVyQm94LnBhZGRpbmdCb3R0b20oKSk7CiAgICAgICAgICAgICBi
b3JkZXJCb3ggPSBMYXlvdXRSZWN0KHBhZGRpbmdCb3gueCgpIC0gcmVuZGVyQm94LmJvcmRlckxl
ZnQoKSwgcGFkZGluZ0JveC55KCkgLSByZW5kZXJCb3guYm9yZGVyVG9wKCksCkBAIC0zOTUsNjgg
KzM5Myw2IEBAIHN0YXRpYyBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6T3ZlcmxheVQKICAgICAg
ICAgLnJlbGVhc2UoKTsKIH0KIAotc3RhdGljIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpP
dmVybGF5VHlwZXM6OlJlZ2lvbj4gYnVpbGRPYmplY3RGb3JSZWdpb24oRnJhbWVWaWV3KiBtYWlu
VmlldywgUmVuZGVyUmVnaW9uKiByZWdpb24pCi17Ci0gICAgRnJhbWVWaWV3KiBjb250YWluaW5n
VmlldyA9IHJlZ2lvbi0+ZnJhbWUoKS52aWV3KCk7Ci0gICAgaWYgKCFjb250YWluaW5nVmlldykK
LSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBSZW5kZXJCbG9ja0Zsb3cmIHJlZ2lvbkNv
bnRhaW5lciA9IGRvd25jYXN0PFJlbmRlckJsb2NrRmxvdz4oKnJlZ2lvbi0+cGFyZW50KCkpOwot
ICAgIExheW91dFJlY3QgYm9yZGVyQm94ID0gcmVnaW9uQ29udGFpbmVyLmJvcmRlckJveFJlY3Qo
KTsKLSAgICBib3JkZXJCb3guc2V0V2lkdGgoYm9yZGVyQm94LndpZHRoKCkgKyByZWdpb25Db250
YWluZXIudmVydGljYWxTY3JvbGxiYXJXaWR0aCgpKTsKLSAgICBib3JkZXJCb3guc2V0SGVpZ2h0
KGJvcmRlckJveC5oZWlnaHQoKSArIHJlZ2lvbkNvbnRhaW5lci5ob3Jpem9udGFsU2Nyb2xsYmFy
SGVpZ2h0KCkpOwotCi0gICAgLy8gQ3JlYXRlIGluY29taW5nIGFuZCBvdXRnb2luZyBib3hlcyB0
aGF0IHdlIHVzZSB0byBjaGFpbiB0aGUgcmVnaW9ucyB0b2doZXRoZXIuCi0gICAgY29uc3QgTGF5
b3V0U2l6ZSBsaW5rQm94U2l6ZSgxMCwgMTApOwotICAgIGNvbnN0IExheW91dFNpemUgbGlua0Jv
eE1pZHBvaW50KGxpbmtCb3hTaXplLndpZHRoKCkgLyAyLCBsaW5rQm94U2l6ZS5oZWlnaHQoKSAv
IDIpOwotCi0gICAgTGF5b3V0UmVjdCBpbmNvbWluZ1JlY3RCb3ggPSBMYXlvdXRSZWN0KGJvcmRl
ckJveC5sb2NhdGlvbigpIC0gbGlua0JveE1pZHBvaW50LCBsaW5rQm94U2l6ZSk7Ci0gICAgTGF5
b3V0UmVjdCBvdXRnb2luZ1JlY3RCb3ggPSBMYXlvdXRSZWN0KGJvcmRlckJveC5sb2NhdGlvbigp
IC0gbGlua0JveE1pZHBvaW50ICsgYm9yZGVyQm94LnNpemUoKSwgbGlua0JveFNpemUpOwotCi0g
ICAgLy8gTW92ZSB0aGUgbGluayBib3hlcyBzbGlnaHRseSBpbnNpZGUgdGhlIHJlZ2lvbiBib3Jk
ZXIgYm94LgotICAgIExheW91dFVuaXQgbWF4VXNhYmxlSGVpZ2h0ID0gc3RkOjptYXgoTGF5b3V0
VW5pdCgpLCBib3JkZXJCb3guaGVpZ2h0KCkgLSBsaW5rQm94TWlkcG9pbnQuaGVpZ2h0KCkpOwot
ICAgIExheW91dFVuaXQgbGlua0JveFZlcnRpY2FsT2Zmc2V0ID0gc3RkOjptaW4oTGF5b3V0VW5p
dDo6ZnJvbVBpeGVsKDE1KSwgbWF4VXNhYmxlSGVpZ2h0KTsKLSAgICBpbmNvbWluZ1JlY3RCb3gu
bW92ZSgwLCBsaW5rQm94VmVydGljYWxPZmZzZXQpOwotICAgIG91dGdvaW5nUmVjdEJveC5tb3Zl
KDAsIC1saW5rQm94VmVydGljYWxPZmZzZXQpOwotCi0gICAgRmxvYXRRdWFkIGJvcmRlclJlY3RR
dWFkID0gcmVnaW9uQ29udGFpbmVyLmxvY2FsVG9BYnNvbHV0ZVF1YWQoRmxvYXRSZWN0KGJvcmRl
ckJveCkpOwotICAgIEZsb2F0UXVhZCBpbmNvbWluZ1JlY3RRdWFkID0gcmVnaW9uQ29udGFpbmVy
LmxvY2FsVG9BYnNvbHV0ZVF1YWQoRmxvYXRSZWN0KGluY29taW5nUmVjdEJveCkpOwotICAgIEZs
b2F0UXVhZCBvdXRnb2luZ1JlY3RRdWFkID0gcmVnaW9uQ29udGFpbmVyLmxvY2FsVG9BYnNvbHV0
ZVF1YWQoRmxvYXRSZWN0KG91dGdvaW5nUmVjdEJveCkpOwotCi0gICAgY29udGVudHNRdWFkVG9Q
YWdlKG1haW5WaWV3LCBjb250YWluaW5nVmlldywgYm9yZGVyUmVjdFF1YWQpOwotICAgIGNvbnRl
bnRzUXVhZFRvUGFnZShtYWluVmlldywgY29udGFpbmluZ1ZpZXcsIGluY29taW5nUmVjdFF1YWQp
OwotICAgIGNvbnRlbnRzUXVhZFRvUGFnZShtYWluVmlldywgY29udGFpbmluZ1ZpZXcsIG91dGdv
aW5nUmVjdFF1YWQpOwotCi0gICAgcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok92ZXJsYXlU
eXBlczo6UmVnaW9uOjpjcmVhdGUoKQotICAgICAgICAuc2V0Qm9yZGVyUXVhZChidWlsZEFycmF5
Rm9yUXVhZChib3JkZXJSZWN0UXVhZCkpCi0gICAgICAgIC5zZXRJbmNvbWluZ1F1YWQoYnVpbGRB
cnJheUZvclF1YWQoaW5jb21pbmdSZWN0UXVhZCkpCi0gICAgICAgIC5zZXRPdXRnb2luZ1F1YWQo
YnVpbGRBcnJheUZvclF1YWQob3V0Z29pbmdSZWN0UXVhZCkpCi0gICAgICAgIC5yZWxlYXNlKCk7
Ci19Ci0KLXN0YXRpYyBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6T3ZlcmxheVR5cGVzOjpSZWdpb24+PiBidWlsZE9iamVjdEZvckZsb3dSZWdpb25z
KFJlbmRlclJlZ2lvbiogcmVnaW9uLCBSZW5kZXJGbG93VGhyZWFkKiBmbG93VGhyZWFkKQotewot
ICAgIEZyYW1lVmlldyogbWFpbkZyYW1lVmlldyA9IHJlZ2lvbi0+ZG9jdW1lbnQoKS5wYWdlKCkt
Pm1haW5GcmFtZSgpLnZpZXcoKTsKLQotICAgIGF1dG8gYXJyYXlPZlJlZ2lvbnMgPSBJbnNwZWN0
b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpPdmVybGF5VHlwZXM6OlJl
Z2lvbj46OmNyZWF0ZSgpOwotCi0gICAgY29uc3QgUmVuZGVyUmVnaW9uTGlzdCYgcmVnaW9uTGlz
dCA9IGZsb3dUaHJlYWQtPnJlbmRlclJlZ2lvbkxpc3QoKTsKLSAgICBmb3IgKGF1dG8mIGl0ZXJS
ZWdpb24gOiByZWdpb25MaXN0KSB7Ci0gICAgICAgIGlmICghaXRlclJlZ2lvbi0+aXNWYWxpZCgp
KQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpPdmVybGF5VHlwZXM6OlJlZ2lvbj4gcmVnaW9uT2JqZWN0ID0gYnVpbGRPYmplY3RGb3JS
ZWdpb24obWFpbkZyYW1lVmlldywgaXRlclJlZ2lvbik7Ci0gICAgICAgIGlmICghcmVnaW9uT2Jq
ZWN0KQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGlmIChyZWdpb24gPT0gaXRlclJl
Z2lvbikgewotICAgICAgICAgICAgLy8gTGV0IHRoZSBzY3JpcHQga25vdyB0aGF0IHRoaXMgaXMg
dGhlIGN1cnJlbnRseSBoaWdobGlnaHRlZCBub2RlLgotICAgICAgICAgICAgcmVnaW9uT2JqZWN0
LT5zZXRJc0hpZ2hsaWdodGVkKHRydWUpOwotICAgICAgICB9Ci0gICAgICAgIGFycmF5T2ZSZWdp
b25zLT5hZGRJdGVtKFdURk1vdmUocmVnaW9uT2JqZWN0KSk7Ci0gICAgfQotCi0gICAgcmV0dXJu
IGFycmF5T2ZSZWdpb25zOwotfQotCiBzdGF0aWMgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok92
ZXJsYXlUeXBlczo6U2l6ZT4gYnVpbGRPYmplY3RGb3JTaXplKGNvbnN0IEludFNpemUmIHNpemUp
CiB7CiAgICAgcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok92ZXJsYXlUeXBlczo6U2l6ZTo6
Y3JlYXRlKCkKQEAgLTY5NSw3ICs2MzEsNyBAQCBzdGF0aWMgUmVmUHRyPEluc3BlY3Rvcjo6UHJv
dG9jb2w6Ok92ZXJsCiAgICAgcmV0dXJuIFdURk1vdmUoc2hhcGVPYmplY3QpOwogfQogCi1zdGF0
aWMgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok92ZXJsYXlUeXBlczo6RWxlbWVudERhdGE+
IGJ1aWxkT2JqZWN0Rm9yRWxlbWVudERhdGEoTm9kZSogbm9kZSwgSGlnaGxpZ2h0VHlwZSB0eXBl
KQorc3RhdGljIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpPdmVybGF5VHlwZXM6OkVsZW1l
bnREYXRhPiBidWlsZE9iamVjdEZvckVsZW1lbnREYXRhKE5vZGUqIG5vZGUsIEhpZ2hsaWdodFR5
cGUpCiB7CiAgICAgaWYgKCFpczxFbGVtZW50Pihub2RlKSB8fCAhbm9kZS0+ZG9jdW1lbnQoKS5m
cmFtZSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTc1MSwyNyArNjg3LDYgQEAgc3Rh
dGljIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpPdmVybAogICAgICAgICAucmVsZWFzZSgp
OwogICAgIGVsZW1lbnREYXRhLT5zZXRTaXplKFdURk1vdmUoc2l6ZU9iamVjdCkpOwogCi0gICAg
aWYgKHR5cGUgIT0gSGlnaGxpZ2h0VHlwZTo6Tm9kZUxpc3QgJiYgcmVuZGVyZXItPmlzUmVuZGVy
TmFtZWRGbG93RnJhZ21lbnRDb250YWluZXIoKSkgewotICAgICAgICBSZW5kZXJOYW1lZEZsb3dG
cmFnbWVudCYgcmVnaW9uID0gKmRvd25jYXN0PFJlbmRlckJsb2NrRmxvdz4oKnJlbmRlcmVyKS5y
ZW5kZXJOYW1lZEZsb3dGcmFnbWVudCgpOwotICAgICAgICBpZiAocmVnaW9uLmlzVmFsaWQoKSkg
ewotICAgICAgICAgICAgUmVuZGVyRmxvd1RocmVhZCogZmxvd1RocmVhZCA9IHJlZ2lvbi5mbG93
VGhyZWFkKCk7Ci0gICAgICAgICAgICBhdXRvIHJlZ2lvbkZsb3dEYXRhID0gSW5zcGVjdG9yOjpQ
cm90b2NvbDo6T3ZlcmxheVR5cGVzOjpSZWdpb25GbG93RGF0YTo6Y3JlYXRlKCkKLSAgICAgICAg
ICAgICAgICAuc2V0TmFtZShkb3duY2FzdDxSZW5kZXJOYW1lZEZsb3dUaHJlYWQ+KCpmbG93VGhy
ZWFkKS5mbG93VGhyZWFkTmFtZSgpKQotICAgICAgICAgICAgICAgIC5zZXRSZWdpb25zKGJ1aWxk
T2JqZWN0Rm9yRmxvd1JlZ2lvbnMoJnJlZ2lvbiwgZmxvd1RocmVhZCkpCi0gICAgICAgICAgICAg
ICAgLnJlbGVhc2UoKTsKLSAgICAgICAgICAgIGVsZW1lbnREYXRhLT5zZXRSZWdpb25GbG93RGF0
YShXVEZNb3ZlKHJlZ2lvbkZsb3dEYXRhKSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBSZW5k
ZXJGbG93VGhyZWFkKiBjb250YWluaW5nRmxvd1RocmVhZCA9IHJlbmRlcmVyLT5mbG93VGhyZWFk
Q29udGFpbmluZ0Jsb2NrKCk7Ci0gICAgaWYgKGlzPFJlbmRlck5hbWVkRmxvd1RocmVhZD4oY29u
dGFpbmluZ0Zsb3dUaHJlYWQpKSB7Ci0gICAgICAgIGF1dG8gY29udGVudEZsb3dEYXRhID0gSW5z
cGVjdG9yOjpQcm90b2NvbDo6T3ZlcmxheVR5cGVzOjpDb250ZW50Rmxvd0RhdGE6OmNyZWF0ZSgp
Ci0gICAgICAgICAgICAuc2V0TmFtZShkb3duY2FzdDxSZW5kZXJOYW1lZEZsb3dUaHJlYWQ+KCpj
b250YWluaW5nRmxvd1RocmVhZCkuZmxvd1RocmVhZE5hbWUoKSkKLSAgICAgICAgICAgIC5yZWxl
YXNlKCk7Ci0KLSAgICAgICAgZWxlbWVudERhdGEtPnNldENvbnRlbnRGbG93RGF0YShXVEZNb3Zl
KGNvbnRlbnRGbG93RGF0YSkpOwotICAgIH0KLQogICAgIGlmIChpczxSZW5kZXJCb3g+KCpyZW5k
ZXJlcikpIHsKICAgICAgICAgYXV0byYgcmVuZGVyQm94ID0gZG93bmNhc3Q8UmVuZGVyQm94Pigq
cmVuZGVyZXIpOwogICAgICAgICBpZiAoUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok92ZXJs
YXlUeXBlczo6U2hhcGVPdXRzaWRlRGF0YT4gc2hhcGVPYmplY3QgPSBidWlsZE9iamVjdEZvclNo
YXBlT3V0c2lkZShjb250YWluaW5nRnJhbWUsICZyZW5kZXJCb3gpKQpJbmRleDogU291cmNlL1dl
YkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAkocmV2aXNpb24gMjIyMjA0KQorKysgU291cmNlL1dlYkNv
cmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NSw3ICs3NSw2IEBA
CiAjaW5jbHVkZSAiUmVuZGVyRnJhbWVTZXQuaCIKICNpbmNsdWRlICJSZW5kZXJMYXllci5oIgog
I2luY2x1ZGUgIlJlbmRlckxpc3RCb3guaCIKLSNpbmNsdWRlICJSZW5kZXJOYW1lZEZsb3dUaHJl
YWQuaCIKICNpbmNsdWRlICJSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuaCIKICNpbmNsdWRl
ICJSZW5kZXJWaWV3LmgiCiAjaW5jbHVkZSAiUmVuZGVyV2lkZ2V0LmgiCkBAIC0zMjksOCArMzI4
LDYgQEAgc3RhdGljIGlubGluZSBib29sIGhhbmRsZVdoZWVsRXZlbnRJbkFwcAogICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CiAKICAgICAgICAgY3VycmVudEVuY2xvc2luZ0JveCA9IGN1cnJlbnRF
bmNsb3NpbmdCb3gtPmNvbnRhaW5pbmdCbG9jaygpOwotICAgICAgICBpZiAoY3VycmVudEVuY2xv
c2luZ0JveCAmJiBjdXJyZW50RW5jbG9zaW5nQm94LT5pc1JlbmRlck5hbWVkRmxvd1RocmVhZCgp
KQotICAgICAgICAgICAgY3VycmVudEVuY2xvc2luZ0JveCA9IFJlbmRlck5hbWVkRmxvd1RocmVh
ZDo6ZnJhZ21lbnRGcm9tUmVuZGVyQm94QXNSZW5kZXJCbG9jayhjdXJyZW50RW5jbG9zaW5nQm94
LCByb3VuZGVkSW50UG9pbnQod2hlZWxFdmVudC5hYnNvbHV0ZUxvY2F0aW9uKCkpLCBpbml0aWFs
RW5jbG9zaW5nQm94KTsKICAgICAgICAgaWYgKCFjdXJyZW50RW5jbG9zaW5nQm94IHx8IGN1cnJl
bnRFbmNsb3NpbmdCb3gtPmlzUmVuZGVyVmlldygpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GbG93VGhyZWFkQ29udHJv
bGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0Zsb3dUaHJl
YWRDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMjIyMjA0KQorKysgU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0Zsb3dUaHJlYWRDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsMTIg
KzMwLDEwIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRmxvd1RocmVhZENvbnRy
b2xsZXIuaCIKIAotI2luY2x1ZGUgIk5hbWVkRmxvd0NvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJS
ZW5kZXJGbG93VGhyZWFkLmgiCiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXIuaCIKICNpbmNsdWRlICJS
ZW5kZXJOYW1lZEZsb3dUaHJlYWQuaCIKICNpbmNsdWRlICJTdHlsZUluaGVyaXRlZERhdGEuaCIK
LSNpbmNsdWRlICJXZWJLaXROYW1lZEZsb3cuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNT
dHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTEsMzQgKzQ5LDYgQEAgRmxvd1Ro
cmVhZENvbnRyb2xsZXI6On5GbG93VGhyZWFkQ29udHJvbAogewogfQogCi1SZW5kZXJOYW1lZEZs
b3dUaHJlYWQmIEZsb3dUaHJlYWRDb250cm9sbGVyOjplbnN1cmVSZW5kZXJGbG93VGhyZWFkV2l0
aE5hbWUoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKQotewotICAgIGlmICghbV9yZW5kZXJOYW1l
ZEZsb3dUaHJlYWRMaXN0KQotICAgICAgICBtX3JlbmRlck5hbWVkRmxvd1RocmVhZExpc3QgPSBz
dGQ6Om1ha2VfdW5pcXVlPFJlbmRlck5hbWVkRmxvd1RocmVhZExpc3Q+KCk7Ci0gICAgZWxzZSB7
Ci0gICAgICAgIGZvciAoYXV0byYgZmxvd1JlbmRlcmVyIDogKm1fcmVuZGVyTmFtZWRGbG93VGhy
ZWFkTGlzdCkgewotICAgICAgICAgICAgaWYgKGZsb3dSZW5kZXJlci0+Zmxvd1RocmVhZE5hbWUo
KSA9PSBuYW1lKQotICAgICAgICAgICAgICAgIHJldHVybiAqZmxvd1JlbmRlcmVyOwotICAgICAg
ICB9Ci0gICAgfQotCi0gICAgTmFtZWRGbG93Q29sbGVjdGlvbiYgbmFtZWRGbG93cyA9IG1fdmll
dy0+ZG9jdW1lbnQoKS5uYW1lZEZsb3dzKCk7Ci0KLSAgICAvLyBTYW5pdHkgY2hlY2sgZm9yIHRo
ZSBhYnNlbmNlIG9mIGEgbmFtZWQgZmxvdyBpbiB0aGUgIkNSRUFURUQiIHN0YXRlIHdpdGggdGhl
IHNhbWUgbmFtZS4KLSAgICBBU1NFUlQoIW5hbWVkRmxvd3MuZmxvd0J5TmFtZShuYW1lKSk7Ci0K
LSAgICBhdXRvIGZsb3dSZW5kZXJlciA9IG5ldyBSZW5kZXJOYW1lZEZsb3dUaHJlYWQobV92aWV3
LT5kb2N1bWVudCgpLCBSZW5kZXJGbG93VGhyZWFkOjpjcmVhdGVGbG93VGhyZWFkU3R5bGUoJm1f
dmlldy0+c3R5bGUoKSksIG5hbWVkRmxvd3MuZW5zdXJlRmxvd1dpdGhOYW1lKG5hbWUpKTsKLSAg
ICBmbG93UmVuZGVyZXItPmluaXRpYWxpemVTdHlsZSgpOwotICAgIG1fcmVuZGVyTmFtZWRGbG93
VGhyZWFkTGlzdC0+YWRkKGZsb3dSZW5kZXJlcik7Ci0KLSAgICAvLyBLZWVwIHRoZSBmbG93IHJl
bmRlcmVyIGFzIGEgY2hpbGQgb2YgUmVuZGVyVmlldy4KLSAgICBtX3ZpZXctPmFkZENoaWxkKGZs
b3dSZW5kZXJlcik7Ci0KLSAgICBzZXRJc1JlbmRlck5hbWVkRmxvd1RocmVhZE9yZGVyRGlydHko
dHJ1ZSk7Ci0KLSAgICByZXR1cm4gKmZsb3dSZW5kZXJlcjsKLX0KLQogdm9pZCBGbG93VGhyZWFk
Q29udHJvbGxlcjo6c3R5bGVEaWRDaGFuZ2UoKQogewogICAgIGF1dG8mIHZpZXdTdHlsZSA9IG1f
dmlldy0+c3R5bGUoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GbG93VGhyZWFk
Q29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GbG93
VGhyZWFkQ29udHJvbGxlci5oCShyZXZpc2lvbiAyMjIyMDQpCisrKyBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvRmxvd1RocmVhZENvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTUsNyAr
NTUsNiBAQCBwdWJsaWM6CiAgICAgICAgICAgICBtX3ZpZXctPnNldE5lZWRzTGF5b3V0KCk7CiAg
ICAgfQogCi0gICAgUmVuZGVyTmFtZWRGbG93VGhyZWFkJiBlbnN1cmVSZW5kZXJGbG93VGhyZWFk
V2l0aE5hbWUoY29uc3QgQXRvbWljU3RyaW5nJik7CiAgICAgY29uc3QgUmVuZGVyTmFtZWRGbG93
VGhyZWFkTGlzdCogcmVuZGVyTmFtZWRGbG93VGhyZWFkTGlzdCgpIGNvbnN0IHsgcmV0dXJuIG1f
cmVuZGVyTmFtZWRGbG93VGhyZWFkTGlzdC5nZXQoKTsgfQogICAgIGJvb2wgaGFzUmVuZGVyTmFt
ZWRGbG93VGhyZWFkcygpIGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVyTmFtZWRGbG93VGhyZWFkTGlz
dCAmJiAhbV9yZW5kZXJOYW1lZEZsb3dUaHJlYWRMaXN0LT5pc0VtcHR5KCk7IH0KICAgICB2b2lk
IGxheW91dFJlbmRlck5hbWVkRmxvd1RocmVhZHMoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZWdpb25PdmVyc2V0U3RhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVnaW9uT3ZlcnNldFN0YXRlLmgJKHJldmlzaW9uIDIyMjIwNCkKKysrIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZWdpb25PdmVyc2V0U3RhdGUuaAkobm9uZXhpc3RlbnQp
CkBAIC0xLDMwICswLDAgQEAKLS8qCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJs
aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9u
IDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u
Ci0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg
d2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl
biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2
ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UKLSAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIu
ICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu
LCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0x
MzAxLCBVU0EuCi0gKgotICovCi0KLSNwcmFnbWEgb25jZQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLWVudW0gUmVnaW9uT3ZlcnNldFN0YXRlIHsKLSAgICBSZWdpb25VbmRlZmluZWQsCi0gICAg
UmVnaW9uRW1wdHksCi0gICAgUmVnaW9uRml0LAotICAgIFJlZ2lvbk92ZXJzZXQKLX07Ci0KLX0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCbG9ja0Zsb3cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCbG9ja0Zsb3cuY3BwCShyZXZpc2lvbiAyMjIyMDQpCisrKyBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUyMSw4ICsx
NTIxLDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJCbG9ja0Zsb3c6OmFwcGx5QmVmb3JlQgogICAgIGJv
b2wgY2hlY2tQYWdlQnJlYWtzID0gIWNoZWNrQ29sdW1uQnJlYWtzICYmIHZpZXcoKS5sYXlvdXRT
dGF0ZSgpLT5tX3BhZ2VMb2dpY2FsSGVpZ2h0OyAvLyBGSVhNRTogT25jZSBjb2x1bW5zIGNhbiBw
cmludCB3ZSBoYXZlIHRvIGNoZWNrIHRoaXMuCiAgICAgYm9vbCBjaGVja1JlZ2lvbkJyZWFrcyA9
IGZsb3dUaHJlYWQgJiYgZmxvd1RocmVhZC0+aXNSZW5kZXJOYW1lZEZsb3dUaHJlYWQoKTsKICAg
ICBib29sIGNoZWNrQmVmb3JlQWx3YXlzID0gKGNoZWNrQ29sdW1uQnJlYWtzICYmIGNoaWxkLnN0
eWxlKCkuYnJlYWtCZWZvcmUoKSA9PSBDb2x1bW5CcmVha0JldHdlZW4pCi0gICAgICAgIHx8IChj
aGVja1BhZ2VCcmVha3MgJiYgYWx3YXlzUGFnZUJyZWFrKGNoaWxkLnN0eWxlKCkuYnJlYWtCZWZv
cmUoKSkpCi0gICAgICAgIHx8IChjaGVja1JlZ2lvbkJyZWFrcyAmJiBjaGlsZC5zdHlsZSgpLmJy
ZWFrQmVmb3JlKCkgPT0gUmVnaW9uQnJlYWtCZXR3ZWVuKTsKKyAgICAgICAgfHwgKGNoZWNrUGFn
ZUJyZWFrcyAmJiBhbHdheXNQYWdlQnJlYWsoY2hpbGQuc3R5bGUoKS5icmVha0JlZm9yZSgpKSk7
CiAgICAgaWYgKGNoZWNrQmVmb3JlQWx3YXlzICYmIGluTm9ybWFsRmxvdyhjaGlsZCkgJiYgaGFz
TmV4dFBhZ2UobG9naWNhbE9mZnNldCwgSW5jbHVkZVBhZ2VCb3VuZGFyeSkpIHsKICAgICAgICAg
aWYgKGNoZWNrQ29sdW1uQnJlYWtzKSB7CiAgICAgICAgICAgICBpZiAoaXNJbnNpZGVNdWx0aWNv
bEZsb3dUaHJlYWQpCkBAIC0xNTQ3LDggKzE1NDYsNyBAQCBMYXlvdXRVbml0IFJlbmRlckJsb2Nr
Rmxvdzo6YXBwbHlBZnRlckJyCiAgICAgYm9vbCBjaGVja1BhZ2VCcmVha3MgPSAhY2hlY2tDb2x1
bW5CcmVha3MgJiYgdmlldygpLmxheW91dFN0YXRlKCktPm1fcGFnZUxvZ2ljYWxIZWlnaHQ7IC8v
IEZJWE1FOiBPbmNlIGNvbHVtbnMgY2FuIHByaW50IHdlIGhhdmUgdG8gY2hlY2sgdGhpcy4KICAg
ICBib29sIGNoZWNrUmVnaW9uQnJlYWtzID0gZmxvd1RocmVhZCAmJiBmbG93VGhyZWFkLT5pc1Jl
bmRlck5hbWVkRmxvd1RocmVhZCgpOwogICAgIGJvb2wgY2hlY2tBZnRlckFsd2F5cyA9IChjaGVj
a0NvbHVtbkJyZWFrcyAmJiBjaGlsZC5zdHlsZSgpLmJyZWFrQWZ0ZXIoKSA9PSBDb2x1bW5CcmVh
a0JldHdlZW4pCi0gICAgICAgIHx8IChjaGVja1BhZ2VCcmVha3MgJiYgYWx3YXlzUGFnZUJyZWFr
KGNoaWxkLnN0eWxlKCkuYnJlYWtBZnRlcigpKSkKLSAgICAgICAgfHwgKGNoZWNrUmVnaW9uQnJl
YWtzICYmIGNoaWxkLnN0eWxlKCkuYnJlYWtBZnRlcigpID09IFJlZ2lvbkJyZWFrQmV0d2Vlbik7
CisgICAgICAgIHx8IChjaGVja1BhZ2VCcmVha3MgJiYgYWx3YXlzUGFnZUJyZWFrKGNoaWxkLnN0
eWxlKCkuYnJlYWtBZnRlcigpKSk7CiAgICAgaWYgKGNoZWNrQWZ0ZXJBbHdheXMgJiYgaW5Ob3Jt
YWxGbG93KGNoaWxkKSAmJiBoYXNOZXh0UGFnZShsb2dpY2FsT2Zmc2V0LCBJbmNsdWRlUGFnZUJv
dW5kYXJ5KSkgewogICAgICAgICBMYXlvdXRVbml0IG1hcmdpbk9mZnNldCA9IG1hcmdpbkluZm8u
Y2FuQ29sbGFwc2VXaXRoTWFyZ2luQmVmb3JlKCkgPyBMYXlvdXRVbml0KCkgOiBtYXJnaW5JbmZv
Lm1hcmdpbigpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRG
bG93RnJhZ21lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJOYW1lZEZsb3dGcmFnbWVudC5jcHAJKHJldmlzaW9uIDIyMjIwNCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dGcmFnbWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTg3LDEwICs4Nyw4IEBAIHZvaWQgUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQ6OnN0eWxl
RGlkQ2gKICAgICAgICAgc2V0TmVlZHNMYXlvdXQoTWFya09ubHlUaGlzKTsKIH0KIAotdm9pZCBS
ZW5kZXJOYW1lZEZsb3dGcmFnbWVudDo6Z2V0UmFuZ2VzKFZlY3RvcjxSZWZQdHI8UmFuZ2U+PiYg
cmFuZ2VPYmplY3RzKSBjb25zdAordm9pZCBSZW5kZXJOYW1lZEZsb3dGcmFnbWVudDo6Z2V0UmFu
Z2VzKFZlY3RvcjxSZWZQdHI8UmFuZ2U+PiYpIGNvbnN0CiB7Ci0gICAgY29uc3QgUmVuZGVyTmFt
ZWRGbG93VGhyZWFkJiBuYW1lZEZsb3cgPSB2aWV3KCkuZmxvd1RocmVhZENvbnRyb2xsZXIoKS5l
bnN1cmVSZW5kZXJGbG93VGhyZWFkV2l0aE5hbWUoc3R5bGUoKS5yZWdpb25UaHJlYWQoKSk7Ci0g
ICAgbmFtZWRGbG93LmdldFJhbmdlcyhyYW5nZU9iamVjdHMsIHRoaXMpOwogfQogCiBib29sIFJl
bmRlck5hbWVkRmxvd0ZyYWdtZW50OjpzaG91bGRIYXZlQXV0b0xvZ2ljYWxIZWlnaHQoKSBjb25z
dApAQCAtMjYyLDEwICsyNjAsOCBAQCB2b2lkIFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50OjpsYXlv
dXRCbG9jCiAgICAgUmVuZGVyUmVnaW9uOjpsYXlvdXRCbG9jayhyZWxheW91dENoaWxkcmVuKTsK
IAogICAgIGlmIChpc1ZhbGlkKCkpIHsKLSAgICAgICAgaWYgKG1fZmxvd1RocmVhZC0+aW5PdmVy
Zmxvd0xheW91dFBoYXNlKCkgfHwgbV9mbG93VGhyZWFkLT5pbkZpbmFsTGF5b3V0UGhhc2UoKSkg
eworICAgICAgICBpZiAobV9mbG93VGhyZWFkLT5pbk92ZXJmbG93TGF5b3V0UGhhc2UoKSB8fCBt
X2Zsb3dUaHJlYWQtPmluRmluYWxMYXlvdXRQaGFzZSgpKQogICAgICAgICAgICAgY29tcHV0ZU92
ZXJmbG93RnJvbUZsb3dUaHJlYWQoKTsKLSAgICAgICAgICAgIHVwZGF0ZU92ZXJzZXRTdGF0ZSgp
OwotICAgICAgICB9CiAKICAgICAgICAgaWYgKGhhc0F1dG9Mb2dpY2FsSGVpZ2h0KCkgJiYgbV9m
bG93VGhyZWFkLT5pbk1lYXN1cmVDb250ZW50TGF5b3V0UGhhc2UoKSkgewogICAgICAgICAgICAg
bV9mbG93VGhyZWFkLT5pbnZhbGlkYXRlUmVnaW9ucygpOwpAQCAtMjkwLDcxICsyODYsMTkgQEAg
dm9pZCBSZW5kZXJOYW1lZEZsb3dGcmFnbWVudDo6aW52YWxpZGF0ZQogICAgIH0KIH0KIAotdm9p
ZCBSZW5kZXJOYW1lZEZsb3dGcmFnbWVudDo6c2V0UmVnaW9uT3ZlcnNldFN0YXRlKFJlZ2lvbk92
ZXJzZXRTdGF0ZSBzdGF0ZSkKLXsKLSAgICBBU1NFUlQoZ2VuZXJhdGluZ0VsZW1lbnQoKSk7Ci0K
LSAgICBnZW5lcmF0aW5nRWxlbWVudCgpLT5zZXRSZWdpb25PdmVyc2V0U3RhdGUoc3RhdGUpOwot
fQotCi1SZWdpb25PdmVyc2V0U3RhdGUgUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQ6OnJlZ2lvbk92
ZXJzZXRTdGF0ZSgpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKGdlbmVyYXRpbmdFbGVtZW50KCkpOwot
Ci0gICAgaWYgKCFpc1ZhbGlkKCkpCi0gICAgICAgIHJldHVybiBSZWdpb25VbmRlZmluZWQ7Ci0K
LSAgICByZXR1cm4gZ2VuZXJhdGluZ0VsZW1lbnQoKS0+cmVnaW9uT3ZlcnNldFN0YXRlKCk7Ci19
Ci0KLXZvaWQgUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQ6OnVwZGF0ZU92ZXJzZXRTdGF0ZSgpCi17
Ci0gICAgQVNTRVJUKGlzVmFsaWQoKSk7Ci0KLSAgICBSZW5kZXJOYW1lZEZsb3dUaHJlYWQqIGZs
b3dUaHJlYWQgPSBuYW1lZEZsb3dUaHJlYWQoKTsKLSAgICBBU1NFUlQoZmxvd1RocmVhZCAmJiAo
Zmxvd1RocmVhZC0+aW5PdmVyZmxvd0xheW91dFBoYXNlKCkgfHwgZmxvd1RocmVhZC0+aW5GaW5h
bExheW91dFBoYXNlKCkpKTsKLQotICAgIExheW91dFVuaXQgZmxvd0NvbnRlbnRCb3R0b20gPSBm
bG93VGhyZWFkLT5mbG93Q29udGVudEJvdHRvbSgpOwotICAgIGJvb2wgaXNIb3Jpem9udGFsV3Jp
dGluZ01vZGUgPSBmbG93VGhyZWFkLT5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpOwotCi0gICAg
TGF5b3V0VW5pdCBmbG93TWluID0gZmxvd0NvbnRlbnRCb3R0b20gLSAoaXNIb3Jpem9udGFsV3Jp
dGluZ01vZGUgPyBmbG93VGhyZWFkUG9ydGlvblJlY3QoKS55KCkgOiBmbG93VGhyZWFkUG9ydGlv
blJlY3QoKS54KCkpOwotICAgIExheW91dFVuaXQgZmxvd01heCA9IGZsb3dDb250ZW50Qm90dG9t
IC0gKGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlID8gZmxvd1RocmVhZFBvcnRpb25SZWN0KCkubWF4
WSgpIDogZmxvd1RocmVhZFBvcnRpb25SZWN0KCkubWF4WCgpKTsKLQotICAgIFJlZ2lvbk92ZXJz
ZXRTdGF0ZSBwcmV2aW91c1N0YXRlID0gcmVnaW9uT3ZlcnNldFN0YXRlKCk7Ci0gICAgUmVnaW9u
T3ZlcnNldFN0YXRlIHN0YXRlID0gUmVnaW9uRml0OwotICAgIGlmIChmbG93TWluIDw9IDApCi0g
ICAgICAgIHN0YXRlID0gUmVnaW9uRW1wdHk7Ci0gICAgaWYgKGZsb3dNYXggPiAwICYmIGlzTGFz
dFJlZ2lvbigpKQotICAgICAgICBzdGF0ZSA9IFJlZ2lvbk92ZXJzZXQ7Ci0gICAgCi0gICAgc2V0
UmVnaW9uT3ZlcnNldFN0YXRlKHN0YXRlKTsKLQotICAgIC8vIERldGVybWluZSB3aGV0aGVyIHRo
ZSBOYW1lZEZsb3cgb2JqZWN0IHNob3VsZCBkaXNwYXRjaCBhIHJlZ2lvbk92ZXJzZXRDaGFuZ2Ug
ZXZlbnQKLSAgICBpZiAocHJldmlvdXNTdGF0ZSAhPSBzdGF0ZSkKLSAgICAgICAgZmxvd1RocmVh
ZC0+c2V0RGlzcGF0Y2hSZWdpb25PdmVyc2V0Q2hhbmdlRXZlbnQodHJ1ZSk7Ci19Ci0KIHZvaWQg
UmVuZGVyTmFtZWRGbG93RnJhZ21lbnQ6OmNoZWNrUmVnaW9uU3R5bGUoKQogewogICAgIEFTU0VS
VChpc1ZhbGlkKCkpOwogCiAgICAgYm9vbCBjdXN0b21SZWdpb25TdHlsZSA9IGZhbHNlOwogCi0g
ICAgLy8gRklYTUU6IFJlZ2lvbiBzdHlsaW5nIGRvZXNuJ3Qgd29yayBmb3IgcHNldWRvIGVsZW1l
bnRzLgotICAgIGlmICghaXNQc2V1ZG9FbGVtZW50KCkpCi0gICAgICAgIGN1c3RvbVJlZ2lvblN0
eWxlID0gZ2VuZXJhdGluZ0VsZW1lbnQoKS0+c3R5bGVSZXNvbHZlcigpLmNoZWNrUmVnaW9uU3R5
bGUoZ2VuZXJhdGluZ0VsZW1lbnQoKSk7CiAgICAgc2V0SGFzQ3VzdG9tUmVnaW9uU3R5bGUoY3Vz
dG9tUmVnaW9uU3R5bGUpOwogICAgIGRvd25jYXN0PFJlbmRlck5hbWVkRmxvd1RocmVhZD4oKm1f
Zmxvd1RocmVhZCkuY2hlY2tSZWdpb25zV2l0aFN0eWxpbmcoKTsKIH0KIAotc3RkOjp1bmlxdWVf
cHRyPFJlbmRlclN0eWxlPiBSZW5kZXJOYW1lZEZsb3dGcmFnbWVudDo6Y29tcHV0ZVN0eWxlSW5S
ZWdpb24oUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0IFJlbmRlclN0eWxlJiBwYXJlbnRT
dHlsZSkgY29uc3QKK3N0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gUmVuZGVyTmFtZWRGbG93
RnJhZ21lbnQ6OmNvbXB1dGVTdHlsZUluUmVnaW9uKFJlbmRlckVsZW1lbnQmLCBjb25zdCBSZW5k
ZXJTdHlsZSYpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKCFyZW5kZXJlci5pc0Fub255bW91cygpKTsK
LQotICAgIC8vIEZJWE1FOiBSZWdpb24gc3R5bGluZyBmYWlscyBmb3IgcHNldWRvLWVsZW1lbnRz
IGJlY2F1c2UgdGhlIHJlbmRlcmVycyBkb24ndCBoYXZlIGEgbm9kZS4KLSAgICBhdXRvIHJlbmRl
ck9iamVjdFJlZ2lvblN0eWxlID0gcmVuZGVyZXIuZWxlbWVudCgpLT5zdHlsZVJlc29sdmVyKCku
c3R5bGVGb3JFbGVtZW50KCpyZW5kZXJlci5lbGVtZW50KCksICZwYXJlbnRTdHlsZSwgbnVsbHB0
ciwgTWF0Y2hBbGxSdWxlcywgdGhpcykucmVuZGVyU3R5bGU7Ci0KLSAgICByZXR1cm4gcmVuZGVy
T2JqZWN0UmVnaW9uU3R5bGU7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIHZvaWQgUmVuZGVy
TmFtZWRGbG93RnJhZ21lbnQ6OmNvbXB1dGVDaGlsZHJlblN0eWxlSW5SZWdpb24oUmVuZGVyRWxl
bWVudCYgcmVuZGVyZXIpCkBAIC00MTIsNDAgKzM1Niw2IEBAIHZvaWQgUmVuZGVyTmFtZWRGbG93
RnJhZ21lbnQ6OmNsZWFyT2JqZWMKIAogdm9pZCBSZW5kZXJOYW1lZEZsb3dGcmFnbWVudDo6c2V0
UmVnaW9uT2JqZWN0c1JlZ2lvblN0eWxlKCkKIHsKLSAgICBpZiAoIWhhc0N1c3RvbVJlZ2lvblN0
eWxlKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIFN0YXJ0IGZyb20gY29udGVudCBub2Rl
cyBhbmQgcmVjdXJzaXZlbHkgY29tcHV0ZSB0aGUgc3R5bGUgaW4gcmVnaW9uIGZvciB0aGUgcmVu
ZGVyIG9iamVjdHMgYmVsb3cuCi0gICAgLy8gSWYgdGhlIHN0eWxlIGluIHJlZ2lvbiB3YXMgYWxy
ZWFkeSBjb21wdXRlZCwgdXNlZCB0aGF0IHN0eWxlIGluc3RlYWQgb2YgY29tcHV0aW5nIGEgbmV3
IG9uZS4KLSAgICBjb25zdCBSZW5kZXJOYW1lZEZsb3dUaHJlYWQmIG5hbWVkRmxvdyA9IHZpZXco
KS5mbG93VGhyZWFkQ29udHJvbGxlcigpLmVuc3VyZVJlbmRlckZsb3dUaHJlYWRXaXRoTmFtZShz
dHlsZSgpLnJlZ2lvblRocmVhZCgpKTsKLSAgICBjb25zdCBOYW1lZEZsb3dDb250ZW50RWxlbWVu
dHMmIGNvbnRlbnRFbGVtZW50cyA9IG5hbWVkRmxvdy5jb250ZW50RWxlbWVudHMoKTsKLQotICAg
IGZvciAoY29uc3QgYXV0byYgZWxlbWVudCA6IGNvbnRlbnRFbGVtZW50cykgewotICAgICAgICAv
LyBUaGUgbGlzdCBvZiBjb250ZW50IG5vZGVzIGNvbnRhaW5zIGFsc28gdGhlIG5vZGVzIHdpdGgg
ZGlzcGxheTpub25lLgotICAgICAgICBpZiAoIWVsZW1lbnQtPnJlbmRlcmVyKCkpCi0gICAgICAg
ICAgICBjb250aW51ZTsKLSAgICAgICAgYXV0byYgcmVuZGVyZXIgPSAqZWxlbWVudC0+cmVuZGVy
ZXIoKTsKLQotICAgICAgICAvLyBJZiB0aGUgY29udGVudCBub2RlIGRvZXMgbm90IGZsb3cgYW55
IG9mIGl0cyBjaGlsZHJlbiBpbiB0aGlzIHJlZ2lvbiwKLSAgICAgICAgLy8gd2UgZG8gbm90IGNv
bXB1dGUgYW55IHN0eWxlIGZvciB0aGVtIGluIHRoaXMgcmVnaW9uLgotICAgICAgICBpZiAoIWZs
b3dUaHJlYWQoKS0+b2JqZWN0SW5GbG93UmVnaW9uKCZyZW5kZXJlciwgdGhpcykpCi0gICAgICAg
ICAgICBjb250aW51ZTsKLQotICAgICAgICAvLyBJZiB0aGUgb2JqZWN0IGhhcyBzdHlsZSBpbiBy
ZWdpb24sIHVzZSB0aGF0IGluc3RlYWQgb2YgY29tcHV0aW5nIGEgbmV3IG9uZS4KLSAgICAgICAg
YXV0byBpdCA9IG1fcmVuZGVyZXJSZWdpb25TdHlsZS5maW5kKCZyZW5kZXJlcik7Ci0gICAgICAg
IHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gb2JqZWN0U3R5bGVJblJlZ2lvbjsKLSAgICAg
ICAgYm9vbCBvYmplY3RSZWdpb25TdHlsZUNhY2hlZCA9IGZhbHNlOwotICAgICAgICBpZiAoaXQg
IT0gbV9yZW5kZXJlclJlZ2lvblN0eWxlLmVuZCgpKSB7Ci0gICAgICAgICAgICBvYmplY3RTdHls
ZUluUmVnaW9uID0gUmVuZGVyU3R5bGU6OmNsb25lUHRyKCppdC0+dmFsdWUuc3R5bGUpOwotICAg
ICAgICAgICAgQVNTRVJUKGl0LT52YWx1ZS5jYWNoZWQpOwotICAgICAgICAgICAgb2JqZWN0UmVn
aW9uU3R5bGVDYWNoZWQgPSB0cnVlOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIG9iamVj
dFN0eWxlSW5SZWdpb24gPSBjb21wdXRlU3R5bGVJblJlZ2lvbihyZW5kZXJlciwgc3R5bGUoKSk7
Ci0KLSAgICAgICAgc2V0UmVuZGVyZXJTdHlsZUluUmVnaW9uKHJlbmRlcmVyLCBXVEZNb3ZlKG9i
amVjdFN0eWxlSW5SZWdpb24pLCBvYmplY3RSZWdpb25TdHlsZUNhY2hlZCk7Ci0KLSAgICAgICAg
Y29tcHV0ZUNoaWxkcmVuU3R5bGVJblJlZ2lvbihyZW5kZXJlcik7Ci0gICAgfQogfQogCiB2b2lk
IFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50OjpyZXN0b3JlUmVnaW9uT2JqZWN0c09yaWdpbmFsU3R5
bGUoKQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd0ZyYWdt
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVk
Rmxvd0ZyYWdtZW50LmgJKHJldmlzaW9uIDIyMjIwNCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJOYW1lZEZsb3dGcmFnbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDUsNyAr
MTA1LDYgQEAgcHVibGljOgogCiAgICAgYm9vbCBoYXNDb21wdXRlZEF1dG9IZWlnaHQoKSBjb25z
dCB7IHJldHVybiBtX2hhc0NvbXB1dGVkQXV0b0hlaWdodDsgfQogCi0gICAgUmVnaW9uT3ZlcnNl
dFN0YXRlIHJlZ2lvbk92ZXJzZXRTdGF0ZSgpIGNvbnN0OwogCiAgICAgdm9pZCBhdHRhY2hSZWdp
b24oKSBvdmVycmlkZTsKICAgICB2b2lkIGRldGFjaFJlZ2lvbigpIG92ZXJyaWRlOwpAQCAtMTM2
LDkgKzEzNSw2IEBAIHByaXZhdGU6CiAKICAgICBib29sIHNob3VsZEhhdmVBdXRvTG9naWNhbEhl
aWdodCgpIGNvbnN0OwogCi0gICAgdm9pZCB1cGRhdGVPdmVyc2V0U3RhdGUoKTsKLSAgICB2b2lk
IHNldFJlZ2lvbk92ZXJzZXRTdGF0ZShSZWdpb25PdmVyc2V0U3RhdGUpOwotCiAgICAgdm9pZCBs
YXlvdXRCbG9jayhib29sIHJlbGF5b3V0Q2hpbGRyZW4sIExheW91dFVuaXQgcGFnZUxvZ2ljYWxI
ZWlnaHQgPSAwKSBvdmVycmlkZTsKIAogICAgIHN0cnVjdCBPYmplY3RSZWdpb25TdHlsZUluZm8g
ewpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd1RocmVhZC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxv
d1RocmVhZC5jcHAJKHJldmlzaW9uIDIyMjIwNCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJOYW1lZEZsb3dUaHJlYWQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSwxNSArNDEs
MTMgQEAKICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgog
I2luY2x1ZGUgIlRleHQuaCIKLSNpbmNsdWRlICJXZWJLaXROYW1lZEZsb3cuaCIKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1SZW5kZXJOYW1lZEZsb3dUaHJlYWQ6OlJlbmRlck5hbWVkRmxvd1Ro
cmVhZChEb2N1bWVudCYgZG9jdW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUsIFJlZjxXZWJLaXRO
YW1lZEZsb3c+JiYgbmFtZWRGbG93KQorUmVuZGVyTmFtZWRGbG93VGhyZWFkOjpSZW5kZXJOYW1l
ZEZsb3dUaHJlYWQoRG9jdW1lbnQmIGRvY3VtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAg
IDogUmVuZGVyRmxvd1RocmVhZChkb2N1bWVudCwgV1RGTW92ZShzdHlsZSkpCiAgICAgLCBtX2hh
c1JlZ2lvbnNXaXRoU3R5bGluZyhmYWxzZSkKICAgICAsIG1fZGlzcGF0Y2hSZWdpb25PdmVyc2V0
Q2hhbmdlRXZlbnQoZmFsc2UpCi0gICAgLCBtX25hbWVkRmxvdyhXVEZNb3ZlKG5hbWVkRmxvdykp
CiAgICAgLCBtX3JlZ2lvbk92ZXJzZXRDaGFuZ2VFdmVudFRpbWVyKCp0aGlzLCAmUmVuZGVyTmFt
ZWRGbG93VGhyZWFkOjpyZWdpb25PdmVyc2V0Q2hhbmdlRXZlbnRUaW1lckZpcmVkKQogewogfQpA
QCAtNzgsMTUgKzc2LDYgQEAgY29uc3QgY2hhciogUmVuZGVyTmFtZWRGbG93VGhyZWFkOjpyZW5k
ZQogICAgIAogdm9pZCBSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6OmNsZWFyQ29udGVudEVsZW1lbnRz
KCkKIHsKLSAgICBmb3IgKGF1dG8mIGNvbnRlbnRFbGVtZW50IDogbV9jb250ZW50RWxlbWVudHMp
IHsKLSAgICAgICAgQVNTRVJUKGNvbnRlbnRFbGVtZW50KTsKLSAgICAgICAgQVNTRVJUKGNvbnRl
bnRFbGVtZW50LT5pc05hbWVkRmxvd0NvbnRlbnRFbGVtZW50KCkpOwotICAgICAgICBBU1NFUlQo
JmNvbnRlbnRFbGVtZW50LT5kb2N1bWVudCgpID09ICZkb2N1bWVudCgpKTsKLSAgICAgICAgCi0g
ICAgICAgIGNvbnRlbnRFbGVtZW50LT5jbGVhcklzTmFtZWRGbG93Q29udGVudEVsZW1lbnQoKTsK
LSAgICB9Ci0gICAgCi0gICAgbV9jb250ZW50RWxlbWVudHMuY2xlYXIoKTsKIH0KIAogdm9pZCBS
ZW5kZXJOYW1lZEZsb3dUaHJlYWQ6OnVwZGF0ZVdyaXRpbmdNb2RlKCkKQEAgLTQ2Nyw1MSArNDU2
LDIyIEBAIHZvaWQgUmVuZGVyTmFtZWRGbG93VGhyZWFkOjpwdXNoRGVwZW5kZW4KIC8vIFRoZSBj
b250ZW50IG5vZGVzIGxpc3QgY29udGFpbnMgdGhvc2Ugbm9kZXMgd2l0aCAtd2Via2l0LWZsb3ct
aW50bzogZmxvdy4KIC8vIEFuIGVsZW1lbnQgd2l0aCBkaXNwbGF5Om5vbmUgc2hvdWxkIGFsc28g
YmUgbGlzdGVkIGFtb25nIHRob3NlIG5vZGVzLgogLy8gVGhlIGxpc3Qgb2Ygbm9kZXMgaXMgb3Jk
ZXJlZC4KLXZvaWQgUmVuZGVyTmFtZWRGbG93VGhyZWFkOjpyZWdpc3Rlck5hbWVkRmxvd0NvbnRl
bnRFbGVtZW50KEVsZW1lbnQmIGNvbnRlbnRFbGVtZW50KQordm9pZCBSZW5kZXJOYW1lZEZsb3dU
aHJlYWQ6OnJlZ2lzdGVyTmFtZWRGbG93Q29udGVudEVsZW1lbnQoRWxlbWVudCYpCiB7Ci0gICAg
QVNTRVJUKCZjb250ZW50RWxlbWVudC5kb2N1bWVudCgpID09ICZkb2N1bWVudCgpKTsKLQotICAg
IGNvbnRlbnRFbGVtZW50LnNldElzTmFtZWRGbG93Q29udGVudEVsZW1lbnQoKTsKLQotICAgIHJl
c2V0TWFya0ZvckRlc3RydWN0aW9uKCk7Ci0KLSAgICAvLyBGaW5kIHRoZSBmaXJzdCBjb250ZW50
IG5vZGUgZm9sbG93aW5nIHRoZSBuZXcgY29udGVudCBub2RlLgotICAgIGZvciAoYXV0byYgZWxl
bWVudCA6IG1fY29udGVudEVsZW1lbnRzKSB7Ci0gICAgICAgIHVuc2lnbmVkIHNob3J0IHBvc2l0
aW9uID0gY29udGVudEVsZW1lbnQuY29tcGFyZURvY3VtZW50UG9zaXRpb24oKmVsZW1lbnQpOwot
ICAgICAgICBpZiAocG9zaXRpb24gJiBOb2RlOjpET0NVTUVOVF9QT1NJVElPTl9GT0xMT1dJTkcp
IHsKLSAgICAgICAgICAgIG1fY29udGVudEVsZW1lbnRzLmluc2VydEJlZm9yZShlbGVtZW50LCAm
Y29udGVudEVsZW1lbnQpOwotICAgICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpk
aWRSZWdpc3Rlck5hbWVkRmxvd0NvbnRlbnRFbGVtZW50KGRvY3VtZW50KCksIG5hbWVkRmxvdygp
LCBjb250ZW50RWxlbWVudCwgZWxlbWVudCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IH0KLSAgICB9Ci0KLSAgICBtX2NvbnRlbnRFbGVtZW50cy5hZGQoJmNvbnRlbnRFbGVtZW50KTsK
LSAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlZ2lzdGVyTmFtZWRGbG93Q29udGVu
dEVsZW1lbnQoZG9jdW1lbnQoKSwgbmFtZWRGbG93KCksIGNvbnRlbnRFbGVtZW50KTsKIH0KIAot
dm9pZCBSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6OnVucmVnaXN0ZXJOYW1lZEZsb3dDb250ZW50RWxl
bWVudChFbGVtZW50JiBjb250ZW50RWxlbWVudCkKK3ZvaWQgUmVuZGVyTmFtZWRGbG93VGhyZWFk
Ojp1bnJlZ2lzdGVyTmFtZWRGbG93Q29udGVudEVsZW1lbnQoRWxlbWVudCYpCiB7Ci0gICAgQVNT
RVJUKG1fY29udGVudEVsZW1lbnRzLmNvbnRhaW5zKCZjb250ZW50RWxlbWVudCkpOwotICAgIEFT
U0VSVChjb250ZW50RWxlbWVudC5pc05hbWVkRmxvd0NvbnRlbnRFbGVtZW50KCkpOwotICAgIEFT
U0VSVCgmY29udGVudEVsZW1lbnQuZG9jdW1lbnQoKSA9PSAmZG9jdW1lbnQoKSk7Ci0KLSAgICBj
b250ZW50RWxlbWVudC5jbGVhcklzTmFtZWRGbG93Q29udGVudEVsZW1lbnQoKTsKLSAgICBtX2Nv
bnRlbnRFbGVtZW50cy5yZW1vdmUoJmNvbnRlbnRFbGVtZW50KTsKLQotICAgIGlmIChjYW5CZURl
c3Ryb3llZCgpKQotICAgICAgICBzZXRNYXJrRm9yRGVzdHJ1Y3Rpb24oKTsKLQotICAgIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkVW5yZWdpc3Rlck5hbWVkRmxvd0NvbnRlbnRFbGVtZW50
KGRvY3VtZW50KCksIG5hbWVkRmxvdygpLCBjb250ZW50RWxlbWVudCk7CiB9CiAKLWJvb2wgUmVu
ZGVyTmFtZWRGbG93VGhyZWFkOjpoYXNDb250ZW50RWxlbWVudChFbGVtZW50JiBjb250ZW50RWxl
bWVudCkgY29uc3QKK2Jvb2wgUmVuZGVyTmFtZWRGbG93VGhyZWFkOjpoYXNDb250ZW50RWxlbWVu
dChFbGVtZW50JikgY29uc3QKIHsKLSAgICByZXR1cm4gbV9jb250ZW50RWxlbWVudHMuY29udGFp
bnMoJmNvbnRlbnRFbGVtZW50KTsKKyAgICByZXR1cm4gZmFsc2U7CiB9CiAgICAgCiBjb25zdCBB
dG9taWNTdHJpbmcmIFJlbmRlck5hbWVkRmxvd1RocmVhZDo6Zmxvd1RocmVhZE5hbWUoKSBjb25z
dAogewotICAgIHJldHVybiBuYW1lZEZsb3coKS5uYW1lKCk7CisgICAgcmV0dXJuIG51bGxBdG9t
KCk7CiB9CiAKIGJvb2wgUmVuZGVyTmFtZWRGbG93VGhyZWFkOjppc0NoaWxkQWxsb3dlZChjb25z
dCBSZW5kZXJPYmplY3QmIGNoaWxkLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpIGNvbnN0CkBA
IC01MzAsNDMgKzQ5MCwyMyBAQCBib29sIFJlbmRlck5hbWVkRmxvd1RocmVhZDo6aXNDaGlsZEFs
bG93CiAKIHZvaWQgUmVuZGVyTmFtZWRGbG93VGhyZWFkOjpkaXNwYXRjaFJlZ2lvbk92ZXJzZXRD
aGFuZ2VFdmVudElmTmVlZGVkKCkKIHsKLSAgICBpZiAoIW1fZGlzcGF0Y2hSZWdpb25PdmVyc2V0
Q2hhbmdlRXZlbnQpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fZGlzcGF0Y2hSZWdpb25PdmVy
c2V0Q2hhbmdlRXZlbnQgPSBmYWxzZTsKLSAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRp
ZENoYW5nZVJlZ2lvbk92ZXJzZXQoZG9jdW1lbnQoKSwgbmFtZWRGbG93KCkpOwotICAgIAotICAg
IGlmICghbV9yZWdpb25PdmVyc2V0Q2hhbmdlRXZlbnRUaW1lci5pc0FjdGl2ZSgpICYmIG5hbWVk
RmxvdygpLmhhc0V2ZW50TGlzdGVuZXJzKCkpCi0gICAgICAgIG1fcmVnaW9uT3ZlcnNldENoYW5n
ZUV2ZW50VGltZXIuc3RhcnRPbmVTaG90KDBfcyk7CiB9CiAKIHZvaWQgUmVuZGVyTmFtZWRGbG93
VGhyZWFkOjpyZWdpb25PdmVyc2V0Q2hhbmdlRXZlbnRUaW1lckZpcmVkKCkKIHsKLSAgICBuYW1l
ZEZsb3coKS5kaXNwYXRjaFJlZ2lvbk92ZXJzZXRDaGFuZ2VFdmVudCgpOwogfQogCiB2b2lkIFJl
bmRlck5hbWVkRmxvd1RocmVhZDo6c2V0TWFya0ZvckRlc3RydWN0aW9uKCkKIHsKLSAgICBpZiAo
bmFtZWRGbG93KCkuZmxvd1N0YXRlKCkgPT0gV2ViS2l0TmFtZWRGbG93OjpGbG93U3RhdGVOdWxs
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBuYW1lZEZsb3coKS5zZXRSZW5kZXJlcihudWxscHRy
KTsKLSAgICAvLyBBZnRlciB0aGlzIGNhbGwgZW5kcywgdGhlIHJlbmRlcmVyIGNhbiBiZSBzYWZl
bHkgZGVzdHJveWVkLgotICAgIC8vIFRoZSBOYW1lZEZsb3cgb2JqZWN0IG1heSBvdXRsaXZlIGl0
cyByZW5kZXJlciBpZiBpdCdzIHJlZmVyZW5jZWQgZnJvbSBhIHNjcmlwdCBhbmQgbWF5IGJlIHJl
YXRhY2hlZCB0byBvbmUgaWYgdGhlIG5hbWVkIGZsb3cgaXMgcmVjcmVhdGVkIGluIHRoZSBzdHls
ZXNoZWV0LgogfQogCiB2b2lkIFJlbmRlck5hbWVkRmxvd1RocmVhZDo6cmVzZXRNYXJrRm9yRGVz
dHJ1Y3Rpb24oKQogewotICAgIGlmIChuYW1lZEZsb3coKS5mbG93U3RhdGUoKSA9PSBXZWJLaXRO
YW1lZEZsb3c6OkZsb3dTdGF0ZUNyZWF0ZWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIG5hbWVk
RmxvdygpLnNldFJlbmRlcmVyKHRoaXMpOwogfQogCiBib29sIFJlbmRlck5hbWVkRmxvd1RocmVh
ZDo6aXNNYXJrZWRGb3JEZXN0cnVjdGlvbigpIGNvbnN0CiB7Ci0gICAgLy8gRmxvdyB0aHJlYWRz
IGluIHRoZSAiTlVMTCIgc3RhdGUgY2FuIGJlIGRlc3Ryb3llZC4KLSAgICByZXR1cm4gbmFtZWRG
bG93KCkuZmxvd1N0YXRlKCkgPT0gV2ViS2l0TmFtZWRGbG93OjpGbG93U3RhdGVOdWxsOworICAg
IHJldHVybiBmYWxzZTsKIH0KIAogc3RhdGljIGJvb2wgaXNDb250YWluZWRJbkVsZW1lbnRzKGNv
bnN0IFZlY3RvcjxFbGVtZW50Kj4mIG90aGVycywgRWxlbWVudCogZWxlbWVudCkKQEAgLTU5MCw4
ICs1MzAsNiBAQCBzdGF0aWMgYm9vbCBib3hJbnRlcnNlY3RzUmVnaW9uKExheW91dFVuCiAvLyBS
ZXRyaWV2ZSB0aGUgbmV4dCBub2RlIHRvIGJlIHZpc2l0ZWQgd2hpbGUgY29tcHV0aW5nIHRoZSBy
YW5nZXMgaW5zaWRlIGEgcmVnaW9uLgogc3RhdGljIE5vZGUqIG5leHROb2RlSW5zaWRlQ29udGVu
dEVsZW1lbnQoY29uc3QgTm9kZSYgY3Vyck5vZGUsIGNvbnN0IEVsZW1lbnQqIGNvbnRlbnRFbGVt
ZW50KQogewotICAgIEFTU0VSVChjb250ZW50RWxlbWVudCAmJiBjb250ZW50RWxlbWVudC0+aXNO
YW1lZEZsb3dDb250ZW50RWxlbWVudCgpKTsKLQogICAgIGlmIChjdXJyTm9kZS5yZW5kZXJlcigp
ICYmIGN1cnJOb2RlLnJlbmRlcmVyKCktPmlzU1ZHUm9vdCgpKQogICAgICAgICByZXR1cm4gTm9k
ZVRyYXZlcnNhbDo6bmV4dFNraXBwaW5nQ2hpbGRyZW4oY3Vyck5vZGUsIGNvbnRlbnRFbGVtZW50
KTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd1RocmVh
ZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJOYW1lZEZs
b3dUaHJlYWQuaAkocmV2aXNpb24gMjIyMjA0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlck5hbWVkRmxvd1RocmVhZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw2IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTm9kZTsKIGNsYXNzIFJlbmRlck5hbWVkRmxv
d1RocmVhZDsKLWNsYXNzIFdlYktpdE5hbWVkRmxvdzsKIAogdHlwZWRlZiBMaXN0SGFzaFNldDxS
ZW5kZXJOYW1lZEZsb3dUaHJlYWQqPiBSZW5kZXJOYW1lZEZsb3dUaHJlYWRMaXN0OwogdHlwZWRl
ZiBIYXNoQ291bnRlZFNldDxSZW5kZXJOYW1lZEZsb3dUaHJlYWQqPiBSZW5kZXJOYW1lZEZsb3dU
aHJlYWRDb3VudGVkU2V0OwpAQCAtNDQsNyArNDMsNyBAQCB0eXBlZGVmIExpc3RIYXNoU2V0PEVs
ZW1lbnQqPiBOYW1lZEZsb3dDCiAKIGNsYXNzIFJlbmRlck5hbWVkRmxvd1RocmVhZCBmaW5hbCA6
IHB1YmxpYyBSZW5kZXJGbG93VGhyZWFkLCBwdWJsaWMgU2VsZWN0aW9uU3VidHJlZVJvb3Qgewog
cHVibGljOgotICAgIFJlbmRlck5hbWVkRmxvd1RocmVhZChEb2N1bWVudCYsIFJlbmRlclN0eWxl
JiYsIFJlZjxXZWJLaXROYW1lZEZsb3c+JiYpOworICAgIFJlbmRlck5hbWVkRmxvd1RocmVhZChE
b2N1bWVudCYsIFJlbmRlclN0eWxlJiYpOwogICAgIHZpcnR1YWwgflJlbmRlck5hbWVkRmxvd1Ro
cmVhZCgpOwogCiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBmbG93VGhyZWFkTmFtZSgpIGNvbnN0
OwpAQCAtMTE4LDkgKzExNyw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjbGVhckNvbnRlbnRFbGVt
ZW50cygpOwogICAgIHZvaWQgdXBkYXRlV3JpdGluZ01vZGUoKTsKIAotICAgIFdlYktpdE5hbWVk
RmxvdyYgbmFtZWRGbG93KCkgeyByZXR1cm4gbV9uYW1lZEZsb3c7IH0KLSAgICBjb25zdCBXZWJL
aXROYW1lZEZsb3cmIG5hbWVkRmxvdygpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZWRGbG93OyB9Ci0K
ICAgICAvLyBPYnNlcnZlciBmbG93IHRocmVhZHMgaGF2ZSBpbnZhbGlkIHJlZ2lvbnMgdGhhdCBk
ZXBlbmQgb24gdGhlIHN0YXRlIG9mIHRoaXMgdGhyZWFkCiAgICAgLy8gdG8gcmUtdmFsaWRhdGUg
dGhlaXIgcmVnaW9ucy4gS2VlcGluZyBhIHNldCBvZiBvYnNlcnZlciB0aHJlYWRzIG1ha2UgaXQg
ZWFzeQogICAgIC8vIHRvIG5vdGlmeSB0aGVtIHdoZW4gYSByZWdpb24gd2FzIHJlbW92ZWQgZnJv
bSB0aGlzIGZsb3cuCkBAIC0xMzgsOSArMTM0LDYgQEAgcHJpdmF0ZToKICAgICBib29sIG1faGFz
UmVnaW9uc1dpdGhTdHlsaW5nIDogMTsKICAgICBib29sIG1fZGlzcGF0Y2hSZWdpb25PdmVyc2V0
Q2hhbmdlRXZlbnQgOiAxOwogCi0gICAgLy8gVGhlIERPTSBPYmplY3QgdGhhdCByZXByZXNlbnRz
IGEgbmFtZWQgZmxvdy4KLSAgICBSZWY8V2ViS2l0TmFtZWRGbG93PiBtX25hbWVkRmxvdzsKLQog
ICAgIFRpbWVyIG1fcmVnaW9uT3ZlcnNldENoYW5nZUV2ZW50VGltZXI7CiAKICAgICBMYXlvdXRV
bml0IG1fZmxvd0NvbnRlbnRCb3R0b207CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyUmVnaW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyUmVnaW9uLmNwcAkocmV2aXNpb24gMjIyMjA0KQorKysgU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclJlZ2lvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2MiwxOSArMjYyLDcg
QEAgdm9pZCBSZW5kZXJSZWdpb246OnJlcGFpbnRGbG93VGhyZWFkQ29udAogCiB2b2lkIFJlbmRl
clJlZ2lvbjo6aW5zdGFsbEZsb3dUaHJlYWQoKQogewotICAgIG1fZmxvd1RocmVhZCA9ICZ2aWV3
KCkuZmxvd1RocmVhZENvbnRyb2xsZXIoKS5lbnN1cmVSZW5kZXJGbG93VGhyZWFkV2l0aE5hbWUo
c3R5bGUoKS5yZWdpb25UaHJlYWQoKSk7Ci0KLSAgICAvLyBCeSBub3cgdGhlIGZsb3cgdGhyZWFk
IHNob3VsZCBhbHJlYWR5IGJlIGFkZGVkIHRvIHRoZSByZW5kZXJpbmcgdHJlZSwKLSAgICAvLyBz
byB3ZSBnbyB1cCB0aGUgcmVuZGVyaW5nIHBhcmVudHMgYW5kIGNoZWNrIHRoYXQgdGhpcyByZWdp
b24gaXMgbm90IHBhcnQgb2YgdGhlIHNhbWUKLSAgICAvLyBmbG93IHRoYXQgaXQgYWN0dWFsbHkg
bmVlZHMgdG8gZGlzcGxheS4gSXQgd291bGQgY3JlYXRlIGEgY2lyY3VsYXIgcmVmZXJlbmNlLgot
Ci0gICAgYXV0byBjbG9zZXN0Rmxvd1RocmVhZEFuY2VzdG9yID0gYW5jZXN0b3JzT2ZUeXBlPFJl
bmRlck5hbWVkRmxvd1RocmVhZD4oKnRoaXMpLmZpcnN0KCk7Ci0gICAgaWYgKCFjbG9zZXN0Rmxv
d1RocmVhZEFuY2VzdG9yKSB7Ci0gICAgICAgIG1fcGFyZW50TmFtZWRGbG93VGhyZWFkID0gbnVs
bHB0cjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIG1fcGFyZW50TmFtZWRGbG93VGhy
ZWFkID0gJipjbG9zZXN0Rmxvd1RocmVhZEFuY2VzdG9yOworICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogfQogCiB2b2lkIFJlbmRlclJlZ2lvbjo6YXR0YWNoUmVnaW9uKCkKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50
cy5oCShyZXZpc2lvbiAyMjIyMDQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
UmVuZGVyU3R5bGVDb25zdGFudHMuaAkod29ya2luZyBjb3B5KQpAQCAtNDc3LDcgKzQ3Nyw3IEBA
IGVudW0gVGV4dFpvb20gewogfTsKIAogZW51bSBCcmVha0JldHdlZW4gewotICAgIEF1dG9CcmVh
a0JldHdlZW4sIEF2b2lkQnJlYWtCZXR3ZWVuLCBBdm9pZENvbHVtbkJyZWFrQmV0d2VlbiwgQXZv
aWRQYWdlQnJlYWtCZXR3ZWVuLCBBdm9pZFJlZ2lvbkJyZWFrQmV0d2VlbiwgQ29sdW1uQnJlYWtC
ZXR3ZWVuLCBSZWdpb25CcmVha0JldHdlZW4sIFBhZ2VCcmVha0JldHdlZW4sIExlZnRQYWdlQnJl
YWtCZXR3ZWVuLCBSaWdodFBhZ2VCcmVha0JldHdlZW4sIFJlY3RvUGFnZUJyZWFrQmV0d2Vlbiwg
VmVyc29QYWdlQnJlYWtCZXR3ZWVuCisgICAgQXV0b0JyZWFrQmV0d2VlbiwgQXZvaWRCcmVha0Jl
dHdlZW4sIEF2b2lkQ29sdW1uQnJlYWtCZXR3ZWVuLCBBdm9pZFBhZ2VCcmVha0JldHdlZW4sIENv
bHVtbkJyZWFrQmV0d2VlbiwgUGFnZUJyZWFrQmV0d2VlbiwgTGVmdFBhZ2VCcmVha0JldHdlZW4s
IFJpZ2h0UGFnZUJyZWFrQmV0d2VlbiwgUmVjdG9QYWdlQnJlYWtCZXR3ZWVuLCBWZXJzb1BhZ2VC
cmVha0JldHdlZW4KIH07CiBib29sIGFsd2F5c1BhZ2VCcmVhayhCcmVha0JldHdlZW4pOwogICAg
IApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1dpbGxDaGFuZ2VEYXRhLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvV2lsbENoYW5n
ZURhdGEuY3BwCShyZXZpc2lvbiAyMjIyMDQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvV2lsbENoYW5nZURhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Nyw5ICs4Nyw2IEBA
IGJvb2wgV2lsbENoYW5nZURhdGE6OnByb3BlcnR5Q3JlYXRlc1N0YWMKICAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0TWFzazoKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFza0ltYWdlOgog
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrQm94SW1hZ2U6Ci0jaWYgRU5BQkxFKENTU19S
RUdJT05TKQotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRGbG93RnJvbToKLSNlbmRpZgogI2lm
IEVOQUJMRShBQ0NFTEVSQVRFRF9PVkVSRkxPV19TQ1JPTExJTkcpCiAgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdE92ZXJmbG93U2Nyb2xsaW5nOgogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9zdHlsZS9SZW5kZXJUcmVlUG9zaXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3N0eWxlL1JlbmRlclRyZWVQb3NpdGlvbi5jcHAJKHJldmlzaW9uIDIyMjIwNCkKKysrIFNv
dXJjZS9XZWJDb3JlL3N0eWxlL1JlbmRlclRyZWVQb3NpdGlvbi5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI3LDkgKzI3LDcgQEAKICNpbmNsdWRlICJSZW5kZXJUcmVlUG9zaXRpb24uaCIKIAogI2lu
Y2x1ZGUgIkNvbXBvc2VkVHJlZUl0ZXJhdG9yLmgiCi0jaW5jbHVkZSAiRmxvd1RocmVhZENvbnRy
b2xsZXIuaCIKICNpbmNsdWRlICJQc2V1ZG9FbGVtZW50LmgiCi0jaW5jbHVkZSAiUmVuZGVyTmFt
ZWRGbG93VGhyZWFkLmgiCiAjaW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCiAjaW5jbHVkZSAiU2hh
ZG93Um9vdC5oIgogCkBAIC02Nyw4ICs2NSw3IEBAIFJlbmRlck9iamVjdCogUmVuZGVyVHJlZVBv
c2l0aW9uOjpwcmV2aW8KIAogICAgIGF1dG8gY29tcG9zZWRDaGlsZHJlbiA9IGNvbXBvc2VkVHJl
ZUNoaWxkcmVuKCpwYXJlbnRFbGVtZW50KTsKICAgICBmb3IgKGF1dG8gaXQgPSBjb21wb3NlZENo
aWxkcmVuLmF0KHRleHROb2RlKSwgZW5kID0gY29tcG9zZWRDaGlsZHJlbi5lbmQoKTsgaXQgIT0g
ZW5kOyAtLWl0KSB7Ci0gICAgICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBpdC0+cmVuZGVy
ZXIoKTsKLSAgICAgICAgaWYgKHJlbmRlcmVyICYmICFpc1JlbmRlcmVyUmVwYXJlbnRlZCgqcmVu
ZGVyZXIpKQorICAgICAgICBpZiAoYXV0byogcmVuZGVyZXIgPSBpdC0+cmVuZGVyZXIoKSkKICAg
ICAgICAgICAgIHJldHVybiByZW5kZXJlcjsKICAgICB9CiAgICAgaWYgKGF1dG8qIGJlZm9yZSA9
IHBhcmVudEVsZW1lbnQtPmJlZm9yZVBzZXVkb0VsZW1lbnQoKSkKQEAgLTk1LDggKzkyLDcgQEAg
UmVuZGVyT2JqZWN0KiBSZW5kZXJUcmVlUG9zaXRpb246Om5leHRTaQogICAgICAgICAgICAgaXQu
dHJhdmVyc2VOZXh0KCk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQotICAgICAg
ICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbm9kZS5yZW5kZXJlcigpOwotICAgICAgICBpZiAo
cmVuZGVyZXIgJiYgIWlzUmVuZGVyZXJSZXBhcmVudGVkKCpyZW5kZXJlcikpCisgICAgICAgIGlm
IChhdXRvKiByZW5kZXJlciA9IGl0LT5yZW5kZXJlcigpKQogICAgICAgICAgICAgcmV0dXJuIHJl
bmRlcmVyOwogICAgICAgICAKICAgICAgICAgaXQudHJhdmVyc2VOZXh0U2tpcHBpbmdDaGlsZHJl
bigpOwpAQCAtMTA2LDU3ICsxMDIsNCBAQCBSZW5kZXJPYmplY3QqIFJlbmRlclRyZWVQb3NpdGlv
bjo6bmV4dFNpCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLSNpZiBFTkFCTEUoQ1NTX1JFR0lP
TlMpCi1SZW5kZXJUcmVlUG9zaXRpb24gUmVuZGVyVHJlZVBvc2l0aW9uOjppbnNlcnRpb25Qb3Np
dGlvbkZvckZsb3dUaHJlYWQoRWxlbWVudCogaW5zZXJ0aW9uUGFyZW50LCBFbGVtZW50JiBlbGVt
ZW50LCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCi17Ci0gICAgQVNTRVJUKGVsZW1lbnQuc2hv
dWxkTW92ZVRvRmxvd1RocmVhZChzdHlsZSkpOwotICAgIGF1dG8mIHBhcmVudEZsb3dUaHJlYWQg
PSBlbGVtZW50LmRvY3VtZW50KCkucmVuZGVyVmlldygpLT5mbG93VGhyZWFkQ29udHJvbGxlcigp
LmVuc3VyZVJlbmRlckZsb3dUaHJlYWRXaXRoTmFtZShzdHlsZS5mbG93VGhyZWFkKCkpOwotCi0g
ICAgaWYgKCFpbnNlcnRpb25QYXJlbnQpCi0gICAgICAgIHJldHVybiB7IHBhcmVudEZsb3dUaHJl
YWQsIG51bGxwdHIgfTsKLQotICAgIGF1dG8gY29tcG9zZWREZXNjZW5kYW50cyA9IGNvbXBvc2Vk
VHJlZURlc2NlbmRhbnRzKCppbnNlcnRpb25QYXJlbnQpOwotICAgIGF1dG8gaXQgPSBlbGVtZW50
LmlzQmVmb3JlUHNldWRvRWxlbWVudCgpID8gY29tcG9zZWREZXNjZW5kYW50cy5iZWdpbigpIDog
Y29tcG9zZWREZXNjZW5kYW50cy5hdChlbGVtZW50KTsKLSAgICBhdXRvIGVuZCA9IGNvbXBvc2Vk
RGVzY2VuZGFudHMuZW5kKCk7Ci0gICAgd2hpbGUgKGl0ICE9IGVuZCkgewotICAgICAgICBhdXRv
JiBjdXJyZW50Tm9kZSA9ICppdDsKLSAgICAgICAgYm9vbCBoYXNEaXNwbGF5Q29udGVudHMgPSBp
czxFbGVtZW50PihjdXJyZW50Tm9kZSkgJiYgZG93bmNhc3Q8RWxlbWVudD4oY3VycmVudE5vZGUp
Lmhhc0Rpc3BsYXlDb250ZW50cygpOwotICAgICAgICBpZiAoaGFzRGlzcGxheUNvbnRlbnRzKSB7
Ci0gICAgICAgICAgICBpdC50cmF2ZXJzZU5leHQoKTsKLSAgICAgICAgICAgIGNvbnRpbnVlOwot
ICAgICAgICB9Ci0KLSAgICAgICAgYXV0byogcmVuZGVyZXIgPSBjdXJyZW50Tm9kZS5yZW5kZXJl
cigpOwotICAgICAgICBpZiAoIXJlbmRlcmVyKSB7Ci0gICAgICAgICAgICBpdC50cmF2ZXJzZU5l
eHRTa2lwcGluZ0NoaWxkcmVuKCk7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQot
Ci0gICAgICAgIGlmICghaXM8UmVuZGVyRWxlbWVudD4oKnJlbmRlcmVyKSkgewotICAgICAgICAg
ICAgaXQudHJhdmVyc2VOZXh0KCk7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQot
Ci0gICAgICAgIC8vIFdlIGFyZSB0aGUgbGFzdCBjaGlsZCBpbiB0aGlzIGZsb3cuCi0gICAgICAg
IGlmICghaXNSZW5kZXJlclJlcGFyZW50ZWQoKnJlbmRlcmVyKSkKLSAgICAgICAgICAgIHJldHVy
biB7IHBhcmVudEZsb3dUaHJlYWQsIG51bGxwdHIgfTsKLQotICAgICAgICBpZiAocmVuZGVyZXIt
PnN0eWxlKCkuaGFzRmxvd0ludG8oKSAmJiBzdHlsZS5mbG93VGhyZWFkKCkgPT0gcmVuZGVyZXIt
PnN0eWxlKCkuZmxvd1RocmVhZCgpKQotICAgICAgICAgICAgcmV0dXJuIHsgcGFyZW50Rmxvd1Ro
cmVhZCwgZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4ocmVuZGVyZXIpIH07Ci0gICAgICAgIC8vIE5l
c3RlZCBmbG93cywgc2tpcC4KLSAgICAgICAgaXQudHJhdmVyc2VOZXh0U2tpcHBpbmdDaGlsZHJl
bigpOwotICAgIH0KLSAgICByZXR1cm4geyBwYXJlbnRGbG93VGhyZWFkLCBudWxscHRyIH07Ci19
Ci0jZW5kaWYKLSAgICAKLWJvb2wgUmVuZGVyVHJlZVBvc2l0aW9uOjppc1JlbmRlcmVyUmVwYXJl
bnRlZChjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyKQotewotICAgIGlmICghcmVuZGVyZXIu
bm9kZSgpLT5pc0VsZW1lbnROb2RlKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAo
cmVuZGVyZXIuc3R5bGUoKS5oYXNGbG93SW50bygpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAg
ICByZXR1cm4gZmFsc2U7Ci19Ci0KIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N0eWxlL1JlbmRl
clRyZWVQb3NpdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N0eWxlL1JlbmRl
clRyZWVQb3NpdGlvbi5oCShyZXZpc2lvbiAyMjIyMDQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdHls
ZS9SZW5kZXJUcmVlUG9zaXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNDQsMTAgKzQ0LDYgQEAg
cHVibGljOgogICAgICAgICA6IG1fcGFyZW50KHBhcmVudCkKICAgICB7CiAgICAgfQotICAgIAot
I2lmIEVOQUJMRShDU1NfUkVHSU9OUykKLSAgICBzdGF0aWMgUmVuZGVyVHJlZVBvc2l0aW9uIGlu
c2VydGlvblBvc2l0aW9uRm9yRmxvd1RocmVhZChFbGVtZW50KiBpbnNlcnRpb25QYXJlbnQsIEVs
ZW1lbnQmIGNoaWxkLCBjb25zdCBSZW5kZXJTdHlsZSYpOwotI2VuZGlmCiAKICAgICBSZW5kZXJF
bGVtZW50JiBwYXJlbnQoKSBjb25zdCB7IHJldHVybiBtX3BhcmVudDsgfQogICAgIHZvaWQgaW5z
ZXJ0KFJlbmRlck9iamVjdCYpOwpAQCAtNjAsMTggKzU2LDggQEAgcHVibGljOgogCiAgICAgUmVu
ZGVyT2JqZWN0KiBwcmV2aW91c1NpYmxpbmdSZW5kZXJlcihjb25zdCBUZXh0JikgY29uc3Q7CiAg
ICAgUmVuZGVyT2JqZWN0KiBuZXh0U2libGluZ1JlbmRlcmVyKGNvbnN0IE5vZGUmKSBjb25zdDsK
LSAgICBzdGF0aWMgYm9vbCBpc1JlbmRlcmVyUmVwYXJlbnRlZChjb25zdCBSZW5kZXJPYmplY3Qm
KTsKIAogcHJpdmF0ZToKLSNpZiBFTkFCTEUoQ1NTX1JFR0lPTlMpCi0gICAgUmVuZGVyVHJlZVBv
c2l0aW9uKFJlbmRlckZsb3dUaHJlYWQmIHBhcmVudCwgUmVuZGVyT2JqZWN0KiBuZXh0U2libGlu
ZykKLSAgICAgICAgOiBtX3BhcmVudChwYXJlbnQpCi0gICAgICAgICwgbV9uZXh0U2libGluZyhu
ZXh0U2libGluZykKLSAgICAgICAgLCBtX2hhc1ZhbGlkTmV4dFNpYmxpbmcodHJ1ZSkKLSAgICB7
Ci0gICAgfQotI2VuZGlmCi0KICAgICBSZW5kZXJFbGVtZW50JiBtX3BhcmVudDsKICAgICBSZW5k
ZXJPYmplY3QqIG1fbmV4dFNpYmxpbmcgeyBudWxscHRyIH07CiAgICAgYm9vbCBtX2hhc1ZhbGlk
TmV4dFNpYmxpbmcgeyBmYWxzZSB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvc3R5bGUvUmVuZGVy
VHJlZVVwZGF0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N0eWxlL1JlbmRl
clRyZWVVcGRhdGVyLmNwcAkocmV2aXNpb24gMjIyMjA0KQorKysgU291cmNlL1dlYkNvcmUvc3R5
bGUvUmVuZGVyVHJlZVVwZGF0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw2IEBA
CiAjaW5jbHVkZSAiQ29tcG9zZWRUcmVlSXRlcmF0b3IuaCIKICNpbmNsdWRlICJEb2N1bWVudC5o
IgogI2luY2x1ZGUgIkVsZW1lbnQuaCIKLSNpbmNsdWRlICJGbG93VGhyZWFkQ29udHJvbGxlci5o
IgogI2luY2x1ZGUgIkhUTUxTbG90RWxlbWVudC5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIk5vZGVSZW5kZXJTdHlsZS5oIgpAQCAtNDAsNyArMzks
NiBAQAogI2luY2x1ZGUgIlJlbmRlckRlc2NlbmRhbnRJdGVyYXRvci5oIgogI2luY2x1ZGUgIlJl
bmRlckZ1bGxTY3JlZW4uaCIKICNpbmNsdWRlICJSZW5kZXJMaXN0SXRlbS5oIgotI2luY2x1ZGUg
IlJlbmRlck5hbWVkRmxvd1RocmVhZC5oIgogI2luY2x1ZGUgIlJlbmRlclRyZWVVcGRhdGVyRmly
c3RMZXR0ZXIuaCIKICNpbmNsdWRlICJSZW5kZXJUcmVlVXBkYXRlckdlbmVyYXRlZENvbnRlbnQu
aCIKICNpbmNsdWRlICJSZW5kZXJUcmVlVXBkYXRlckxpc3RJdGVtLmgiCkBAIC0zMDAsOCArMjk4
LDcgQEAgdm9pZCBSZW5kZXJUcmVlVXBkYXRlcjo6dXBkYXRlRWxlbWVudFJlbgogICAgIENoZWNr
Rm9yVmlzaWJpbGl0eUNoYW5nZSBjaGVja0ZvclZpc2liaWxpdHlDaGFuZ2UoZWxlbWVudCk7CiAj
ZW5kaWYKIAotICAgIGJvb2wgc2hvdWxkVGVhckRvd25SZW5kZXJlcnMgPSB1cGRhdGUuY2hhbmdl
ID09IFN0eWxlOjpEZXRhY2gKLSAgICAgICAgJiYgKGVsZW1lbnQucmVuZGVyZXIoKSB8fCBlbGVt
ZW50LmlzTmFtZWRGbG93Q29udGVudEVsZW1lbnQoKSB8fCBlbGVtZW50Lmhhc0Rpc3BsYXlDb250
ZW50cygpKTsKKyAgICBib29sIHNob3VsZFRlYXJEb3duUmVuZGVyZXJzID0gdXBkYXRlLmNoYW5n
ZSA9PSBTdHlsZTo6RGV0YWNoICYmIChlbGVtZW50LnJlbmRlcmVyKCkgfHwgZWxlbWVudC5oYXNE
aXNwbGF5Q29udGVudHMoKSk7CiAgICAgaWYgKHNob3VsZFRlYXJEb3duUmVuZGVyZXJzKSB7CiAg
ICAgICAgIGlmICghZWxlbWVudC5yZW5kZXJlcigpKSB7CiAgICAgICAgICAgICAvLyBXZSBtYXkg
YmUgdGVhcmluZyBkb3duIGEgZGVzY2VuZGFudCByZW5kZXJlciBjYWNoZWQgaW4gcmVuZGVyVHJl
ZVBvc2l0aW9uLgpAQCAtMzQ4LDI1ICszNDUsOSBAQCB2b2lkIFJlbmRlclRyZWVVcGRhdGVyOjp1
cGRhdGVFbGVtZW50UmVuCiAgICAgcmVuZGVyZXIuc2V0U3R5bGUoUmVuZGVyU3R5bGU6OmNsb25l
KCp1cGRhdGUuc3R5bGUpLCBTdHlsZURpZmZlcmVuY2VFcXVhbCk7CiB9CiAKLSNpZiBFTkFCTEUo
Q1NTX1JFR0lPTlMpCi1zdGF0aWMgdm9pZCByZWdpc3RlckVsZW1lbnRGb3JGbG93VGhyZWFkSWZO
ZWVkZWQoRWxlbWVudCYgZWxlbWVudCwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQotewotICAg
IGlmICghZWxlbWVudC5zaG91bGRNb3ZlVG9GbG93VGhyZWFkKHN0eWxlKSkKLSAgICAgICAgcmV0
dXJuOwotICAgIEZsb3dUaHJlYWRDb250cm9sbGVyJiBmbG93VGhyZWFkQ29udHJvbGxlciA9IHJl
bmRlclZpZXcoKS5mbG93VGhyZWFkQ29udHJvbGxlcigpOwotICAgIGZsb3dUaHJlYWRDb250cm9s
bGVyLnJlZ2lzdGVyTmFtZWRGbG93Q29udGVudEVsZW1lbnQoZWxlbWVudCwgZmxvd1RocmVhZENv
bnRyb2xsZXIuZW5zdXJlUmVuZGVyRmxvd1RocmVhZFdpdGhOYW1lKHN0eWxlLmZsb3dUaHJlYWQo
KSkpOwotfQotI2VuZGlmCi0KIHZvaWQgUmVuZGVyVHJlZVVwZGF0ZXI6OmNyZWF0ZVJlbmRlcmVy
KEVsZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiB7Ci0gICAgYXV0byBjb21w
dXRlSW5zZXJ0aW9uUG9zaXRpb24gPSBbdGhpcywgJmVsZW1lbnQsICZzdHlsZV0gKCkgewotI2lm
IEVOQUJMRShDU1NfUkVHSU9OUykKLSAgICAgICAgaWYgKGVsZW1lbnQuc2hvdWxkTW92ZVRvRmxv
d1RocmVhZChzdHlsZSkpCi0gICAgICAgICAgICByZXR1cm4gUmVuZGVyVHJlZVBvc2l0aW9uOjpp
bnNlcnRpb25Qb3NpdGlvbkZvckZsb3dUaHJlYWQocmVuZGVyVHJlZVBvc2l0aW9uKCkucGFyZW50
KCkuZWxlbWVudCgpLCBlbGVtZW50LCBzdHlsZSk7Ci0jZWxzZQotICAgICAgICBVTlVTRURfUEFS
QU0oc3R5bGUpOwotI2VuZGlmCisgICAgYXV0byBjb21wdXRlSW5zZXJ0aW9uUG9zaXRpb24gPSBb
dGhpcywgJmVsZW1lbnRdICgpIHsKICAgICAgICAgcmVuZGVyVHJlZVBvc2l0aW9uKCkuY29tcHV0
ZU5leHRTaWJsaW5nKGVsZW1lbnQpOwogICAgICAgICByZXR1cm4gcmVuZGVyVHJlZVBvc2l0aW9u
KCk7CiAgICAgfTsKQEAgLTM3NCwxMSArMzU1LDYgQEAgdm9pZCBSZW5kZXJUcmVlVXBkYXRlcjo6
Y3JlYXRlUmVuZGVyZXIoRQogICAgIGlmICghc2hvdWxkQ3JlYXRlUmVuZGVyZXIoZWxlbWVudCwg
cmVuZGVyVHJlZVBvc2l0aW9uKCkucGFyZW50KCkpKQogICAgICAgICByZXR1cm47CiAKLSNpZiBF
TkFCTEUoQ1NTX1JFR0lPTlMpCi0gICAgLy8gRXZlbiBkaXNwbGF5OiBub25lIGVsZW1lbnRzIG5l
ZWQgdG8gYmUgcmVnaXN0ZXJlZCBpbiBGbG93VGhyZWFkQ29udHJvbGxlci4KLSAgICByZWdpc3Rl
ckVsZW1lbnRGb3JGbG93VGhyZWFkSWZOZWVkZWQoZWxlbWVudCwgc3R5bGUpOwotI2VuZGlmCi0K
ICAgICBpZiAoIWVsZW1lbnQucmVuZGVyZXJJc05lZWRlZChzdHlsZSkpCiAgICAgICAgIHJldHVy
bjsKIApAQCAtMzkxLDEwICszNjcsNiBAQCB2b2lkIFJlbmRlclRyZWVVcGRhdGVyOjpjcmVhdGVS
ZW5kZXJlcihFCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICAvLyBNYWtlIHN1cmUgdGhl
IFJlbmRlck9iamVjdCBhbHJlYWR5IGtub3dzIGl0IGlzIGdvaW5nIHRvIGJlIGFkZGVkIHRvIGEg
UmVuZGVyRmxvd1RocmVhZCBiZWZvcmUgd2Ugc2V0IHRoZSBzdHlsZQotICAgIC8vIGZvciB0aGUg
Zmlyc3QgdGltZS4gT3RoZXJ3aXNlIGNvZGUgdXNpbmcgaW5SZW5kZXJGbG93VGhyZWFkKCkgaW4g
dGhlIHN0eWxlV2lsbENoYW5nZSBhbmQgc3R5bGVEaWRDaGFuZ2Ugd2lsbCBmYWlsLgotICAgIG5l
d1JlbmRlcmVyLT5zZXRGbG93VGhyZWFkU3RhdGUoaW5zZXJ0aW9uUG9zaXRpb24ucGFyZW50KCku
Zmxvd1RocmVhZFN0YXRlKCkpOwotCiAgICAgZWxlbWVudC5zZXRSZW5kZXJlcihuZXdSZW5kZXJl
cik7CiAKICAgICBuZXdSZW5kZXJlci0+aW5pdGlhbGl6ZVN0eWxlKCk7CkBAIC01MDMsOSArNDc1
LDkgQEAgdm9pZCBSZW5kZXJUcmVlVXBkYXRlcjo6aW52YWxpZGF0ZVdoaXRlcwogICAgICAgICAg
ICAgaWYgKG1fc3R5bGVVcGRhdGUtPmVsZW1lbnRVcGRhdGUoZG93bmNhc3Q8RWxlbWVudD4oKnNp
YmxpbmcpKSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAvLyBUZXh0IHJl
bmRlcmVycyBiZXlvbmQgcmVuZGVyZWQgZWxlbWVudHMgY2FuJ3QgYmUgYWZmZWN0ZWQuCi0gICAg
ICAgICAgICBpZiAoIXNpYmxpbmctPnJlbmRlcmVyKCkgfHwgUmVuZGVyVHJlZVBvc2l0aW9uOjpp
c1JlbmRlcmVyUmVwYXJlbnRlZCgqc2libGluZy0+cmVuZGVyZXIoKSkpCi0gICAgICAgICAgICAg
ICAgY29udGludWU7Ci0gICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBpZiAoc2libGlu
Zy0+cmVuZGVyZXIoKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgfQogICAgICAgICBpZiAoIWlzPFRleHQ+KCpzaWJsaW5nKSkKICAgICAg
ICAgICAgIGNvbnRpbnVlOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3R5bGUvUmVuZGVyVHJlZVVw
ZGF0ZXJHZW5lcmF0ZWRDb250ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9z
dHlsZS9SZW5kZXJUcmVlVXBkYXRlckdlbmVyYXRlZENvbnRlbnQuY3BwCShyZXZpc2lvbiAyMjIy
MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdHlsZS9SZW5kZXJUcmVlVXBkYXRlckdlbmVyYXRlZENv
bnRlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Miw5ICs4Miw2IEBAIHZvaWQgUmVuZGVyVHJl
ZVVwZGF0ZXI6OkdlbmVyYXRlZENvbnRlbnQKIHN0YXRpYyB2b2lkIGNyZWF0ZUNvbnRlbnRSZW5k
ZXJlcnMoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIpCiB7CiAgICAgYXV0byYgc3R5bGUgPSByZW5k
ZXJlci5zdHlsZSgpOwotICAgIGlmIChzdHlsZS5oYXNGbG93RnJvbSgpKQotICAgICAgICByZXR1
cm47Ci0KICAgICBBU1NFUlQoc3R5bGUuY29udGVudERhdGEoKSk7CiAKICAgICBmb3IgKGNvbnN0
IENvbnRlbnREYXRhKiBjb250ZW50ID0gc3R5bGUuY29udGVudERhdGEoKTsgY29udGVudDsgY29u
dGVudCA9IGNvbnRlbnQtPm5leHQoKSkgewpJbmRleDogU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5
bGVDaGFuZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlQ2hh
bmdlLmNwcAkocmV2aXNpb24gMjIyMjA0KQorKysgU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVD
aGFuZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCwxNyArNDgsNiBAQCBDaGFuZ2UgZGV0ZXJt
aW5lQ2hhbmdlKGNvbnN0IFJlbmRlclN0eWxlCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTU1MDY5CiAgICAgaWYgKHMxLmhhc1RleHRDb21iaW5lKCkgIT0g
czIuaGFzVGV4dENvbWJpbmUoKSkKICAgICAgICAgcmV0dXJuIERldGFjaDsKLSAgICAvLyBXZSBu
ZWVkIHRvIHJlYXR0YWNoIHRoZSBub2RlLCBzbyB0aGF0IGl0IGlzIG1vdmVkIHRvIHRoZSBjb3Jy
ZWN0IFJlbmRlckZsb3dUaHJlYWQuCi0gICAgaWYgKHMxLmZsb3dUaHJlYWQoKSAhPSBzMi5mbG93
VGhyZWFkKCkpCi0gICAgICAgIHJldHVybiBEZXRhY2g7Ci0gICAgLy8gV2hlbiB0aGUgcmVnaW9u
IHRocmVhZCBoYXMgY2hhbmdlZCwgd2UgbmVlZCB0byBwcmVwYXJlIGEgc2VwYXJhdGUgcmVuZGVy
IHJlZ2lvbiBvYmplY3QuCi0gICAgaWYgKHMxLnJlZ2lvblRocmVhZCgpICE9IHMyLnJlZ2lvblRo
cmVhZCgpKQotICAgICAgICByZXR1cm4gRGV0YWNoOwotICAgIC8vIEZJWE1FOiBNdWx0aWNvbHVt
biByZWdpb25zIG5vdCB5ZXQgc3VwcG9ydGVkIChodHRwOi8vZGV2LnczLm9yZy9jc3N3Zy9jc3Mt
cmVnaW9ucy8jbXVsdGktY29sdW1uLXJlZ2lvbnMpCi0gICAgLy8gV2hlbiB0aGUgbm9kZSBoYXMg
cmVnaW9uIHN0eWxlIGFuZCBjaGFuZ2VkIGl0cyBtdWx0aWNvbCBzdHlsZSwgd2UgaGF2ZSB0byBw
cmVwYXJlCi0gICAgLy8gYSBzZXBhcmF0ZSByZW5kZXIgcmVnaW9uIG9iamVjdC4KLSAgICBpZiAo
czEuaGFzRmxvd0Zyb20oKSAmJiAoczEuc3BlY2lmaWVzQ29sdW1ucygpICE9IHMyLnNwZWNpZmll
c0NvbHVtbnMoKSkpCi0gICAgICAgIHJldHVybiBEZXRhY2g7CiAKICAgICBpZiAoczEgIT0gczIp
IHsKICAgICAgICAgaWYgKHMxLmluaGVyaXRlZE5vdEVxdWFsKCZzMikpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvc3R5bGUvU3R5bGVUcmVlUmVzb2x2ZXIuY3BwCShyZXZpc2lvbiAyMjIyMDQpCisr
KyBTb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEyNCw3ICsxMjQsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IFRyZWVS
ZXNvbHZlCiAgICAgaWYgKGF1dG8gc3R5bGUgPSBzY29wZSgpLnNoYXJpbmdSZXNvbHZlci5yZXNv
bHZlKGVsZW1lbnQsICptX3VwZGF0ZSkpCiAgICAgICAgIHJldHVybiBzdHlsZTsKIAotICAgIGF1
dG8gZWxlbWVudFN0eWxlID0gc2NvcGUoKS5zdHlsZVJlc29sdmVyLnN0eWxlRm9yRWxlbWVudChl
bGVtZW50LCAmaW5oZXJpdGVkU3R5bGUsIHBhcmVudEJveFN0eWxlKCksIE1hdGNoQWxsUnVsZXMs
IG51bGxwdHIsICZzY29wZSgpLnNlbGVjdG9yRmlsdGVyKTsKKyAgICBhdXRvIGVsZW1lbnRTdHls
ZSA9IHNjb3BlKCkuc3R5bGVSZXNvbHZlci5zdHlsZUZvckVsZW1lbnQoZWxlbWVudCwgJmluaGVy
aXRlZFN0eWxlLCBwYXJlbnRCb3hTdHlsZSgpLCBNYXRjaEFsbFJ1bGVzLCAmc2NvcGUoKS5zZWxl
Y3RvckZpbHRlcik7CiAKICAgICBpZiAoZWxlbWVudFN0eWxlLnJlbGF0aW9ucykKICAgICAgICAg
Y29tbWl0UmVsYXRpb25zKFdURk1vdmUoZWxlbWVudFN0eWxlLnJlbGF0aW9ucyksICptX3VwZGF0
ZSk7CkBAIC0xNjIsMTAgKzE2Miw2IEBAIHN0YXRpYyBib29sIGFmZmVjdHNSZW5kZXJlZFN1YnRy
ZWUoRWxlbWUKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgaWYgKGVsZW1lbnQucmVuZGVyZXJJ
c05lZWRlZChuZXdTdHlsZSkpCiAgICAgICAgIHJldHVybiB0cnVlOwotI2lmIEVOQUJMRShDU1Nf
UkVHSU9OUykKLSAgICBpZiAoZWxlbWVudC5zaG91bGRNb3ZlVG9GbG93VGhyZWFkKG5ld1N0eWxl
KSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0jZW5kaWYKICAgICByZXR1cm4gZmFsc2U7CiB9CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAJKHJldmlzaW9uIDIyMjIwNCkKKysrIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTg5LDE0
ICs1ODksNiBAQCBzdGF0aWMgYm9vbCBoYXNMb2FkTGlzdGVuZXIoRWxlbWVudCogZWxlCiAgICAg
cmV0dXJuIGZhbHNlOwogfQogCi0jaWYgRU5BQkxFKENTU19SRUdJT05TKQotYm9vbCBTVkdFbGVt
ZW50OjpzaG91bGRNb3ZlVG9GbG93VGhyZWFkKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZVRvVXNl
KSBjb25zdAotewotICAgIC8vIEFsbG93IG9ubHkgc3ZnIHJvb3QgZWxlbWVudHMgdG8gYmUgZGly
ZWN0bHkgY29sbGVjdGVkIGJ5IGEgcmVuZGVyIGZsb3cgdGhyZWFkLgotICAgIHJldHVybiBwYXJl
bnROb2RlKCkgJiYgIXBhcmVudE5vZGUoKS0+aXNTVkdFbGVtZW50KCkgJiYgaGFzVGFnTmFtZShT
VkdOYW1lczo6c3ZnVGFnKSAmJiBFbGVtZW50OjpzaG91bGRNb3ZlVG9GbG93VGhyZWFkKHN0eWxl
VG9Vc2UpOwotfQotI2VuZGlmCi0KIHZvaWQgU1ZHRWxlbWVudDo6c2VuZFNWR0xvYWRFdmVudElm
UG9zc2libGUoYm9vbCBzZW5kUGFyZW50TG9hZEV2ZW50cykKIHsKICAgICBpZiAoIWlzQ29ubmVj
dGVkKCkgfHwgIWRvY3VtZW50KCkuZnJhbWUoKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQu
aAkocmV2aXNpb24gMjIyMjA0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaAko
d29ya2luZyBjb3B5KQpAQCAtMTMxLDEwICsxMzEsNiBAQCBwdWJsaWM6CiAgICAgYm9vbCByZW1v
dmVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3Rl
bmVyJiwgY29uc3QgTGlzdGVuZXJPcHRpb25zJikgb3ZlcnJpZGU7CiAgICAgYm9vbCBoYXNGb2N1
c0V2ZW50TGlzdGVuZXJzKCkgY29uc3Q7CiAKLSNpZiBFTkFCTEUoQ1NTX1JFR0lPTlMpCi0gICAg
Ym9vbCBzaG91bGRNb3ZlVG9GbG93VGhyZWFkKGNvbnN0IFJlbmRlclN0eWxlJikgY29uc3Qgb3Zl
cnJpZGU7Ci0jZW5kaWYKLQogICAgIGJvb2wgaGFzVGFnTmFtZShjb25zdCBTVkdRdWFsaWZpZWRO
YW1lJiBuYW1lKSBjb25zdCB7IHJldHVybiBoYXNMb2NhbE5hbWUobmFtZS5sb2NhbE5hbWUoKSk7
IH0KICAgICBpbnQgdGFiSW5kZXgoKSBjb25zdCBvdmVycmlkZTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>321298</attachid>
            <date>2017-09-20 00:20:05 -0700</date>
            <delta_ts>2017-09-20 00:54:56 -0700</delta_ts>
            <desc>patch</desc>
            <filename>named-flow-removal-dom-etc-5.patch</filename>
            <type>text/plain</type>
            <size>222664</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMjIwNCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIyNCBAQAorMjAxNy0wOS0xOSAgQW50dGkg
S29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIERPTSBhbmQgc3R5
bGluZyBzdXBwb3J0IGZvciBDU1MgUmVnaW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc3MjIxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCByZW1vdmVzIGFsbCBDU1MgUmVnaW9ucyAo
YWthICJuYW1lZCBmbG93IikgcmVsYXRlZCBjb2RlIGV4Y2x1ZGluZyByZW5kZXJpbmcuCisKKyAg
ICAgICAgVGhlIGZlYXR1cmUgaXMgYWxyZWFkeSBkaXNhYmxlZCBzbyBubyBmdW5jdGlvbmFsIGNo
YW5nZXMuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBDb25maWd1cmF0
aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZzoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5t
YWtlOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU0NTU1J1bGVDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
dG9KU05ld2x5Q3JlYXRlZCk6CisgICAgICAgICogY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJh
dGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb250ZW50VG9DU1NWYWx1ZSk6CisgICAgICAg
IChXZWJDb3JlOjpDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0eVZhbHVlKToKKyAgICAg
ICAgKFdlYkNvcmU6OmNvbnZlcnRUb1JlZ2lvbkJyZWFrKTogRGVsZXRlZC4KKyAgICAgICAgKiBj
c3MvQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJp
bWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1By
aW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBCcmVha0JldHdlZW4gY29uc3QpOgorICAgICAgICAqIGNz
cy9DU1NQcm9wZXJ0aWVzLmpzb246CisgICAgICAgICogY3NzL0NTU1J1bGUuY3BwOgorICAgICAg
ICAqIGNzcy9DU1NSdWxlLmg6CisgICAgICAgICogY3NzL0NTU1J1bGUuaWRsOgorICAgICAgICAq
IGNzcy9FbGVtZW50UnVsZUNvbGxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50
UnVsZUNvbGxlY3Rvcjo6bWF0Y2hBdXRob3JSdWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpFbGVt
ZW50UnVsZUNvbGxlY3Rvcjo6bWF0Y2hVc2VyUnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6RWxl
bWVudFJ1bGVDb2xsZWN0b3I6OmNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yUmVnaW9uKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBjc3MvRWxlbWVudFJ1bGVDb2xsZWN0b3IuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkVsZW1lbnRSdWxlQ29sbGVjdG9yOjpzZXRTYW1lT3JpZ2luT25seSk6CisgICAgICAgIChX
ZWJDb3JlOjpFbGVtZW50UnVsZUNvbGxlY3Rvcjo6c2V0UmVnaW9uRm9yU3R5bGluZyk6IERlbGV0
ZWQuCisgICAgICAgICogY3NzL0luc3BlY3RvckNTU09NV3JhcHBlcnMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yQ1NTT01XcmFwcGVyczo6Y29sbGVjdCk6CisgICAgICAgICogY3Nz
L1J1bGVTZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZGV0ZXJtaW5lUHJvcGVydHlXaGl0ZWxp
c3RUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bGVEYXRhOjpSdWxlRGF0YSk6CisgICAgICAg
IChXZWJDb3JlOjpSdWxlU2V0OjphZGRDaGlsZFJ1bGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1
bGVTZXQ6OnNocmlua1RvRml0KToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bGVTZXQ6OmFkZFJlZ2lv
blJ1bGUpOiBEZWxldGVkLgorICAgICAgICAqIGNzcy9SdWxlU2V0Lmg6CisgICAgICAgIChXZWJD
b3JlOjpSdWxlU2V0OjogY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UnVsZVNldDo6cmVnaW9u
U2VsZWN0b3JzQW5kUnVsZVNldHMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGNzcy9TdHls
ZUJ1aWxkZXJDb252ZXJ0ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlckNvbnZl
cnRlcjo6Y29udmVydFJlZ2lvbkJyZWFrQmV0d2Vlbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRSZWdpb25CcmVha0luc2lkZSk6IERl
bGV0ZWQuCisgICAgICAgICogY3NzL1N0eWxlUHJvcGVydGllcy5jcHA6CisgICAgICAgICogY3Nz
L1N0eWxlUmVzb2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6U3Rh
dGU6OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OlN0YXRlOjpTdGF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpzdHlsZUZvckVsZW1lbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6Q2FzY2FkZWRQcm9wZXJ0aWVzOjphZGRN
YXRjaCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpjaGVja1JlZ2lvblN0eWxl
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmlzVmFsaWRSZWdpb25TdHlsZVByb3BlcnR5
KTogRGVsZXRlZC4KKyAgICAgICAgKiBjc3MvU3R5bGVSZXNvbHZlci5oOgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGVSZXNvbHZlcjo6U3RhdGU6OnJlZ2lvbkZvclN0eWxpbmcgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6Y2hlY2tSZWdpb25TZWxlY3Rvcik6IERlbGV0ZWQuCisg
ICAgICAgICogY3NzL1N0eWxlUnVsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJ1bGVC
YXNlOjpkZXN0cm95KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUnVsZUJhc2U6OmNvcHkgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSdWxlQmFzZTo6Y3JlYXRlQ1NTT01XcmFwcGVy
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUnVsZVJlZ2lvbjo6U3R5bGVSdWxlUmVn
aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBjc3MvU3R5bGVSdWxlLmg6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZVJ1bGVCYXNlOjppc1N0eWxlUnVsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZVJ1bGVCYXNlOjppc1JlZ2lvblJ1bGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAq
IGNzcy9TdHlsZVNoZWV0Q29udGVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dHJhdmVyc2VT
dWJyZXNvdXJjZXNJblJ1bGVzKToKKyAgICAgICAgKiBjc3MvV2ViS2l0Q1NTUmVnaW9uUnVsZS5j
cHA6IFJlbW92ZWQuCisgICAgICAgICogY3NzL1dlYktpdENTU1JlZ2lvblJ1bGUuaDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBjc3MvV2ViS2l0Q1NTUmVnaW9uUnVsZS5pZGw6IFJlbW92ZWQuCisgICAg
ICAgICogY3NzL3BhcnNlci9DU1NBdFJ1bGVJRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjc3NB
dFJ1bGVJRCk6CisgICAgICAgICogY3NzL3BhcnNlci9DU1NBdFJ1bGVJRC5oOgorICAgICAgICAq
IGNzcy9wYXJzZXIvQ1NTUGFyc2VyRmFzdFBhdGhzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNT
U1BhcnNlckZhc3RQYXRoczo6aXNWYWxpZEtleXdvcmRQcm9wZXJ0eUFuZFZhbHVlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1BhcnNlckZhc3RQYXRoczo6aXNLZXl3b3JkUHJvcGVydHlJRCk6Cisg
ICAgICAgICogY3NzL3BhcnNlci9DU1NQYXJzZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1BhcnNlckltcGw6OmNvbnN1bWVBdFJ1bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFy
c2VySW1wbDo6Y29uc3VtZVJlZ2lvblJ1bGUpOiBEZWxldGVkLgorICAgICAgICAqIGNzcy9wYXJz
ZXIvQ1NTUGFyc2VySW1wbC5oOgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJz
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNMZWdhY3lCcmVha1Byb3BlcnR5KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VyOjpwYXJzZVNpbmdsZVZhbHVlKToKKyAgICAg
ICAgKFdlYkNvcmU6Om1hcEZyb21MZWdhY3lCcmVha1Byb3BlcnR5KToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1Byb3BlcnR5UGFyc2VyOjpjb25zdW1lTGVnYWN5QnJlYWtQcm9wZXJ0eSk6CisgICAg
ICAgIChXZWJDb3JlOjpjb25zdW1lRmxvd1Byb3BlcnR5KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6Om1hcEZyb21SZWdpb25CcmVha0JldHdlZW4pOiBEZWxldGVkLgorICAgICAgICAqIGRv
bS9Db250YWluZXJOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRlc3Ryb3lSZW5kZXJUcmVl
SWZOZWVkZWQpOgorICAgICAgICAqIGRvbS9ET01OYW1lZEZsb3dDb2xsZWN0aW9uLmNwcDogUmVt
b3ZlZC4KKyAgICAgICAgKiBkb20vRE9NTmFtZWRGbG93Q29sbGVjdGlvbi5oOiBSZW1vdmVkLgor
ICAgICAgICAqIGRvbS9ET01OYW1lZEZsb3dDb2xsZWN0aW9uLmlkbDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnVwZGF0
ZUxheW91dElmRGltZW5zaW9uc091dE9mRGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dDo6d2Via2l0R2V0TmFtZWRGbG93cyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudDo6bmFtZWRGbG93cyk6IERlbGV0ZWQuCisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6Cisg
ICAgICAgICogZG9tL0RvY3VtZW50LmlkbDoKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojp+RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpF
bGVtZW50OjpjbGVhclN0eWxlRGVyaXZlZERhdGFCZWZvcmVEZXRhY2hpbmdSZW5kZXJlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojp1bnJlZ2lzdGVyTmFtZWRGbG93Q29udGVudEVsZW1l
bnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c2V0SXNOYW1lZEZsb3dD
b250ZW50RWxlbWVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpjbGVh
cklzTmFtZWRGbG93Q29udGVudEVsZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
RWxlbWVudDo6cmFyZURhdGFJc05hbWVkRmxvd0NvbnRlbnRFbGVtZW50IGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNldFJlZ2lvbk92ZXJzZXRTdGF0ZSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpyZWdpb25PdmVyc2V0U3RhdGUgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6cmVuZGVyTmFtZWRGbG93
RnJhZ21lbnQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c2hv
dWxkTW92ZVRvRmxvd1RocmVhZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpF
bGVtZW50Ojp3ZWJraXRSZWdpb25PdmVyc2V0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkVsZW1lbnQ6OndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojpp
c05hbWVkRmxvd0NvbnRlbnRFbGVtZW50IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBkb20v
RWxlbWVudC5pZGw6CisgICAgICAgICogZG9tL0VsZW1lbnRSYXJlRGF0YS5jcHA6CisgICAgICAg
ICogZG9tL0VsZW1lbnRSYXJlRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFJhcmVE
YXRhOjpFbGVtZW50UmFyZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFJhcmVEYXRh
OjpyZWdpb25PdmVyc2V0U3RhdGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
RWxlbWVudFJhcmVEYXRhOjpzZXRSZWdpb25PdmVyc2V0U3RhdGUpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6RWxlbWVudFJhcmVEYXRhOjppc05hbWVkRmxvd0NvbnRlbnRFbGVtZW50IGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRSYXJlRGF0YTo6c2V0SXNO
YW1lZEZsb3dDb250ZW50RWxlbWVudCk6IERlbGV0ZWQuCisgICAgICAgICogZG9tL0V2ZW50VGFy
Z2V0RmFjdG9yeS5pbjoKKyAgICAgICAgKiBkb20vTmFtZWRGbG93Q29sbGVjdGlvbi5jcHA6IFJl
bW92ZWQuCisgICAgICAgICogZG9tL05hbWVkRmxvd0NvbGxlY3Rpb24uaDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBkb20vUHNldWRvRWxlbWVudC5oOgorICAgICAgICAqIGRvbS9XZWJLaXROYW1lZEZs
b3cuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIGRvbS9XZWJLaXROYW1lZEZsb3cuaDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBkb20vV2ViS2l0TmFtZWRGbG93LmlkbDogUmVtb3ZlZC4KKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yQ1NTQWdlbnQ6OnJlc2V0Tm9uUGVyc2lzdGVudERhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2hhbmdlUmVnaW9uT3ZlcnNldFRhc2s6OkNoYW5nZVJlZ2lvbk92ZXJzZXRUYXNrKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNoYW5nZVJlZ2lvbk92ZXJzZXRUYXNrOjpzY2hlZHVs
ZUZvcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDaGFuZ2VSZWdpb25PdmVyc2V0VGFz
azo6dW5zY2hlZHVsZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDaGFuZ2VSZWdpb25P
dmVyc2V0VGFzazo6cmVzZXQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q2hhbmdlUmVn
aW9uT3ZlcnNldFRhc2s6OnRpbWVyRmlyZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yQ1NTQWdlbnQ6OmRpZENyZWF0ZU5hbWVkRmxvdyk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6d2lsbFJlbW92ZU5hbWVkRmxvdyk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6ZGlkQ2hhbmdlUmVnaW9u
T3ZlcnNldCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6
cmVnaW9uT3ZlcnNldENoYW5nZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yQ1NTQWdlbnQ6OmRpZFJlZ2lzdGVyTmFtZWRGbG93Q29udGVudEVsZW1lbnQpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmRpZFVucmVnaXN0ZXJOYW1l
ZEZsb3dDb250ZW50RWxlbWVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JDU1NBZ2VudDo6Z2V0TmFtZWRGbG93Q29sbGVjdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6ZG9jdW1lbnROb2RlV2l0aFJlcXVlc3RlZEZsb3dz
SWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmJ1aWxk
QXJyYXlGb3JSZWdpb25zKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNT
U0FnZW50OjpidWlsZE9iamVjdEZvck5hbWVkRmxvdyk6IERlbGV0ZWQuCisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3RvckNTU0FnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rv
ckluc3RydW1lbnRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmRpZENyZWF0ZU5hbWVkRmxvd0ltcGwpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUmVtb3ZlTmFtZWRGbG93SW1wbCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRp
ZENoYW5nZVJlZ2lvbk92ZXJzZXRJbXBsKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVnaXN0ZXJOYW1lZEZsb3dDb250ZW50RWxlbWVu
dEltcGwpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpkaWRVbnJlZ2lzdGVyTmFtZWRGbG93Q29udGVudEVsZW1lbnRJbXBsKTogRGVsZXRlZC4K
KyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpidWlsZFJlbmRlcmVySGlnaGxpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OmJ1aWxkT2Jq
ZWN0Rm9yRWxlbWVudERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRPYmplY3RGb3JSZWdp
b24pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRPYmplY3RGb3JGbG93UmVnaW9u
cyk6IERlbGV0ZWQuCisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6aGFuZGxlV2hlZWxFdmVudEluQXBwcm9wcmlhdGVFbmNsb3NpbmdCb3gpOgorICAg
ICAgICAqIHJlbmRlcmluZy9GbG93VGhyZWFkQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGbG93VGhyZWFkQ29udHJvbGxlcjo6ZW5zdXJlUmVuZGVyRmxvd1RocmVhZFdpdGhOYW1l
KTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvRmxvd1RocmVhZENvbnRyb2xsZXIuaDoK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVnaW9uT3ZlcnNldFN0YXRlLmg6IFJlbW92ZWQuCisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJCbG9ja0Zsb3c6OmFwcGx5QmVmb3JlQnJlYWspOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyQmxvY2tGbG93OjphcHBseUFmdGVyQnJlYWspOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJOYW1lZEZsb3dGcmFnbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJOYW1lZEZs
b3dGcmFnbWVudDo6Z2V0UmFuZ2VzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck5h
bWVkRmxvd0ZyYWdtZW50OjpsYXlvdXRCbG9jayk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJO
YW1lZEZsb3dGcmFnbWVudDo6Y2hlY2tSZWdpb25TdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJOYW1lZEZsb3dGcmFnbWVudDo6Y29tcHV0ZVN0eWxlSW5SZWdpb24gY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTmFtZWRGbG93RnJhZ21lbnQ6OnNldFJlZ2lvbk9iamVjdHNS
ZWdpb25TdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJOYW1lZEZsb3dGcmFnbWVudDo6
c2V0UmVnaW9uT3ZlcnNldFN0YXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ck5hbWVkRmxvd0ZyYWdtZW50OjpyZWdpb25PdmVyc2V0U3RhdGUgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTmFtZWRGbG93RnJhZ21lbnQ6OnVwZGF0ZU92ZXJzZXRT
dGF0ZSk6IERlbGV0ZWQuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd0ZyYWdt
ZW50Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd1RocmVhZC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6OlJlbmRlck5hbWVkRmxvd1Ro
cmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6OmNsZWFyQ29u
dGVudEVsZW1lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck5hbWVkRmxvd1RocmVhZDo6
cmVnaXN0ZXJOYW1lZEZsb3dDb250ZW50RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJOYW1lZEZsb3dUaHJlYWQ6OnVucmVnaXN0ZXJOYW1lZEZsb3dDb250ZW50RWxlbWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6Omhhc0NvbnRlbnRFbGVtZW50
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck5hbWVkRmxvd1RocmVhZDo6Zmxvd1Ro
cmVhZE5hbWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTmFtZWRGbG93VGhyZWFk
OjpkaXNwYXRjaFJlZ2lvbk92ZXJzZXRDaGFuZ2VFdmVudElmTmVlZGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlck5hbWVkRmxvd1RocmVhZDo6cmVnaW9uT3ZlcnNldENoYW5nZUV2ZW50VGlt
ZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6OnNldE1h
cmtGb3JEZXN0cnVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJOYW1lZEZsb3dUaHJl
YWQ6OnJlc2V0TWFya0ZvckRlc3RydWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck5h
bWVkRmxvd1RocmVhZDo6aXNNYXJrZWRGb3JEZXN0cnVjdGlvbiBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpuZXh0Tm9kZUluc2lkZUNvbnRlbnRFbGVtZW50KToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyTmFtZWRGbG93VGhyZWFkLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclJl
Z2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJSZWdpb246Omluc3RhbGxGbG93VGhy
ZWFkKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuaDoK
KyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvV2lsbENoYW5nZURhdGEuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V2lsbENoYW5nZURhdGE6OnByb3BlcnR5Q3JlYXRlc1N0YWNraW5nQ29udGV4dCk6
CisgICAgICAgICogc3R5bGUvUmVuZGVyVHJlZVBvc2l0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclRyZWVQb3NpdGlvbjo6cHJldmlvdXNTaWJsaW5nUmVuZGVyZXIgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVHJlZVBvc2l0aW9uOjpuZXh0U2libGluZ1JlbmRlcmVy
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRyZWVQb3NpdGlvbjo6aW5zZXJ0aW9u
UG9zaXRpb25Gb3JGbG93VGhyZWFkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clRyZWVQb3NpdGlvbjo6aXNSZW5kZXJlclJlcGFyZW50ZWQpOiBEZWxldGVkLgorICAgICAgICAq
IHN0eWxlL1JlbmRlclRyZWVQb3NpdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVHJl
ZVBvc2l0aW9uOjpSZW5kZXJUcmVlUG9zaXRpb24pOgorICAgICAgICAqIHN0eWxlL1JlbmRlclRy
ZWVVcGRhdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRyZWVVcGRhdGVyOjp1cGRh
dGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVHJlZVVwZGF0ZXI6
OmNyZWF0ZVJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRyZWVVcGRhdGVyOjpp
bnZhbGlkYXRlV2hpdGVzcGFjZU9ubHlUZXh0U2libGluZ3NBZnRlckF0dGFjaElmTmVlZGVkKToK
KyAgICAgICAgKFdlYkNvcmU6OnJlZ2lzdGVyRWxlbWVudEZvckZsb3dUaHJlYWRJZk5lZWRlZCk6
IERlbGV0ZWQuCisgICAgICAgICogc3R5bGUvUmVuZGVyVHJlZVVwZGF0ZXJHZW5lcmF0ZWRDb250
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUNvbnRlbnRSZW5kZXJlcnMpOgorICAg
ICAgICAqIHN0eWxlL1N0eWxlQ2hhbmdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpk
ZXRlcm1pbmVDaGFuZ2UpOgorICAgICAgICAqIHN0eWxlL1N0eWxlVHJlZVJlc29sdmVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpUcmVlUmVzb2x2ZXI6OnN0eWxlRm9yRWxlbWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6YWZmZWN0c1JlbmRlcmVkU3VidHJlZSk6CisgICAg
ICAgICogc3ZnL1NWR0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6
c2hvdWxkTW92ZVRvRmxvd1RocmVhZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogc3ZnL1NW
R0VsZW1lbnQuaDoKKwogMjAxNy0wOS0xOCAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lh
QGlnYWxpYS5jb20+CiAKICAgICAgICAgW0hhcmZidXp6XSBhZGp1c3RTZWxlY3Rpb25SZWN0Rm9y
Q29tcGxleFRleHQoKSBzaG91bGQgYWxzbyBwYXNzIHRoZSBjaGFyYWN0ZXIgcmFuZ2Ugd2hlbiBz
aGFwaW5nCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMjIyMjA0KQorKysgU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTQ4NSw3ICs0ODUs
NiBAQCBzZXQoV2ViQ29yZV9OT05fU1ZHX0lETF9GSUxFUwogICAgIGNzcy9TdHlsZVNoZWV0Lmlk
bAogICAgIGNzcy9TdHlsZVNoZWV0TGlzdC5pZGwKICAgICBjc3MvV2ViS2l0Q1NTTWF0cml4Lmlk
bAotICAgIGNzcy9XZWJLaXRDU1NSZWdpb25SdWxlLmlkbAogICAgIGNzcy9XZWJLaXRDU1NWaWV3
cG9ydFJ1bGUuaWRsCiAKICAgICBkb20vQW5pbWF0aW9uRXZlbnQuaWRsCkBAIC01MDMsNyArNTAy
LDYgQEAgc2V0KFdlYkNvcmVfTk9OX1NWR19JRExfRklMRVMKICAgICBkb20vRE9NRXJyb3IuaWRs
CiAgICAgZG9tL0RPTUV4Y2VwdGlvbi5pZGwKICAgICBkb20vRE9NSW1wbGVtZW50YXRpb24uaWRs
Ci0gICAgZG9tL0RPTU5hbWVkRmxvd0NvbGxlY3Rpb24uaWRsCiAgICAgZG9tL0RPTVBvaW50Lmlk
bAogICAgIGRvbS9ET01Qb2ludEluaXQuaWRsCiAgICAgZG9tL0RPTVBvaW50UmVhZE9ubHkuaWRs
CkBAIC01ODAsNyArNTc4LDYgQEAgc2V0KFdlYkNvcmVfTk9OX1NWR19JRExfRklMRVMKICAgICBk
b20vVUlFdmVudC5pZGwKICAgICBkb20vVUlFdmVudEluaXQuaWRsCiAgICAgZG9tL1dlYktpdEFu
aW1hdGlvbkV2ZW50LmlkbAotICAgIGRvbS9XZWJLaXROYW1lZEZsb3cuaWRsCiAgICAgZG9tL1dl
YktpdFRyYW5zaXRpb25FdmVudC5pZGwKICAgICBkb20vV2hlZWxFdmVudC5pZGwKICAgICBkb20v
WE1MRG9jdW1lbnQuaWRsCkBAIC0xNTU4LDcgKzE1NTUsNiBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VT
CiAgICAgY3NzL1RyYW5zZm9ybUZ1bmN0aW9ucy5jcHAKICAgICBjc3MvVmlld3BvcnRTdHlsZVJl
c29sdmVyLmNwcAogICAgIGNzcy9XZWJLaXRDU1NNYXRyaXguY3BwCi0gICAgY3NzL1dlYktpdENT
U1JlZ2lvblJ1bGUuY3BwCiAgICAgY3NzL1dlYktpdENTU1ZpZXdwb3J0UnVsZS5jcHAKIAogICAg
IGNzcy9wYXJzZXIvQ1NTQXRSdWxlSUQuY3BwCkBAIC0xNjEyLDcgKzE2MDgsNiBAQCBzZXQoV2Vi
Q29yZV9TT1VSQ0VTCiAgICAgZG9tL0RPTUVycm9yLmNwcAogICAgIGRvbS9ET01FeGNlcHRpb24u
Y3BwCiAgICAgZG9tL0RPTUltcGxlbWVudGF0aW9uLmNwcAotICAgIGRvbS9ET01OYW1lZEZsb3dD
b2xsZWN0aW9uLmNwcAogICAgIGRvbS9ET01Qb2ludFJlYWRPbmx5LmNwcAogICAgIGRvbS9ET01R
dWFkLmNwcAogICAgIGRvbS9ET01SZWN0TGlzdC5jcHAKQEAgLTE2NzQsNyArMTY2OSw2IEBAIHNl
dChXZWJDb3JlX1NPVVJDRVMKICAgICBkb20vTXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbi5j
cHAKICAgICBkb20vTXV0YXRpb25SZWNvcmQuY3BwCiAgICAgZG9tL05hbWVOb2RlTGlzdC5jcHAK
LSAgICBkb20vTmFtZWRGbG93Q29sbGVjdGlvbi5jcHAKICAgICBkb20vTmFtZWROb2RlTWFwLmNw
cAogICAgIGRvbS9OYXRpdmVOb2RlRmlsdGVyLmNwcAogICAgIGRvbS9Ob2RlLmNwcApAQCAtMTcz
Nyw3ICsxNzMxLDYgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIGRvbS9WaWV3cG9ydEFyZ3Vt
ZW50cy5jcHAKICAgICBkb20vVmlzaXRlZExpbmtTdGF0ZS5jcHAKICAgICBkb20vV2ViS2l0QW5p
bWF0aW9uRXZlbnQuY3BwCi0gICAgZG9tL1dlYktpdE5hbWVkRmxvdy5jcHAKICAgICBkb20vV2Vi
S2l0VHJhbnNpdGlvbkV2ZW50LmNwcAogICAgIGRvbS9XaGVlbEV2ZW50LmNwcAogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHJldmlzaW9uIDIyMjIwNCkKKysrIFNvdXJjZS9X
ZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHdvcmtpbmcgY29weSkKQEAgLTQwNiw3ICs0MDYs
NiBAQCBKU19CSU5ESU5HX0lETFMgPSBcCiAgICAgJChXZWJDb3JlKS9jc3MvU3R5bGVTaGVldC5p
ZGwgXAogICAgICQoV2ViQ29yZSkvY3NzL1N0eWxlU2hlZXRMaXN0LmlkbCBcCiAgICAgJChXZWJD
b3JlKS9jc3MvV2ViS2l0Q1NTTWF0cml4LmlkbCBcCi0gICAgJChXZWJDb3JlKS9jc3MvV2ViS2l0
Q1NTUmVnaW9uUnVsZS5pZGwgXAogICAgICQoV2ViQ29yZSkvY3NzL1dlYktpdENTU1ZpZXdwb3J0
UnVsZS5pZGwgXAogICAgICQoV2ViQ29yZSkvZG9tL0FuaW1hdGlvbkV2ZW50LmlkbCBcCiAgICAg
JChXZWJDb3JlKS9kb20vQXR0ci5pZGwgXApAQCAtNDIzLDcgKzQyMiw2IEBAIEpTX0JJTkRJTkdf
SURMUyA9IFwKICAgICAkKFdlYkNvcmUpL2RvbS9ET01FcnJvci5pZGwgXAogICAgICQoV2ViQ29y
ZSkvZG9tL0RPTUV4Y2VwdGlvbi5pZGwgXAogICAgICQoV2ViQ29yZSkvZG9tL0RPTUltcGxlbWVu
dGF0aW9uLmlkbCBcCi0gICAgJChXZWJDb3JlKS9kb20vRE9NTmFtZWRGbG93Q29sbGVjdGlvbi5p
ZGwgXAogICAgICQoV2ViQ29yZSkvZG9tL0RPTVBvaW50LmlkbCBcCiAgICAgJChXZWJDb3JlKS9k
b20vRE9NUG9pbnRJbml0LmlkbCBcCiAgICAgJChXZWJDb3JlKS9kb20vRE9NUG9pbnRSZWFkT25s
eS5pZGwgXApAQCAtNDk3LDcgKzQ5NSw2IEBAIEpTX0JJTkRJTkdfSURMUyA9IFwKICAgICAkKFdl
YkNvcmUpL2RvbS9VSUV2ZW50LmlkbCBcCiAgICAgJChXZWJDb3JlKS9kb20vVUlFdmVudEluaXQu
aWRsIFwKICAgICAkKFdlYkNvcmUpL2RvbS9XZWJLaXRBbmltYXRpb25FdmVudC5pZGwgXAotICAg
ICQoV2ViQ29yZSkvZG9tL1dlYktpdE5hbWVkRmxvdy5pZGwgXAogICAgICQoV2ViQ29yZSkvZG9t
L1dlYktpdFRyYW5zaXRpb25FdmVudC5pZGwgXAogICAgICQoV2ViQ29yZSkvZG9tL1doZWVsRXZl
bnQuaWRsIFwKICAgICAkKFdlYkNvcmUpL2RvbS9YTUxEb2N1bWVudC5pZGwgXApJbmRleDogU291
cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNj
b25maWcJKHJldmlzaW9uIDIyMjIwNCkKKysrIFNvdXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25z
L0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCSh3b3JraW5nIGNvcHkpCkBAIC03OCw3ICs3OCw2IEBA
IEVOQUJMRV9DU1NfQ09NUE9TSVRJTkcgPSBFTkFCTEVfQ1NTX0NPTVAKIEVOQUJMRV9DU1NfREVW
SUNFX0FEQVBUQVRJT04gPSA7CiBFTkFCTEVfQ1NTX0lNQUdFX09SSUVOVEFUSU9OID0gOwogRU5B
QkxFX0NTU19JTUFHRV9SRVNPTFVUSU9OID0gOwotRU5BQkxFX0NTU19SRUdJT05TID0gOwogRU5B
QkxFX0NTU19TRUxFQ1RPUlNfTEVWRUw0ID0gRU5BQkxFX0NTU19TRUxFQ1RPUlNfTEVWRUw0Owog
RU5BQkxFX0NTUzNfVEVYVCA9IDsKIEVOQUJMRV9DVVJTT1JfVklTSUJJTElUWSA9IEVOQUJMRV9D
VVJTT1JfVklTSUJJTElUWTsKQEAgLTI0Myw0ICsyNDIsNCBAQCBFTkFCTEVfREFUQV9JTlRFUkFD
VElPTl9pcGhvbmVzaW11bGF0b3IgCiBFTkFCTEVfREFUQV9JTlRFUkFDVElPTltzZGs9aXBob25l
b3MxMCpdID0gOwogRU5BQkxFX0RBVEFfSU5URVJBQ1RJT05bc2RrPWlwaG9uZXNpbXVsYXRvcjEw
Kl0gPSA7CiAKLUZFQVRVUkVfREVGSU5FUyA9ICQoRU5BQkxFXzNEX1RSQU5TRk9STVMpICQoRU5B
QkxFX0FDQ0VMRVJBVEVEXzJEX0NBTlZBUykgJChFTkFCTEVfQUNDRUxFUkFURURfT1ZFUkZMT1df
U0NST0xMSU5HKSAkKEVOQUJMRV9BUFBMRV9QQVkpICQoRU5BQkxFX0FQUExFX1BBWV9TRVNTSU9O
X1YzKSAkKEVOQUJMRV9BVFRBQ0hNRU5UX0VMRU1FTlQpICQoRU5BQkxFX0FWRl9DQVBUSU9OUykg
JChFTkFCTEVfQ0FDSEVfUEFSVElUSU9OSU5HKSAkKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORykg
JChFTkFCTEVfQ09OVEVOVF9GSUxURVJJTkcpICQoRU5BQkxFX0NTU19BTklNQVRJT05TX0xFVkVM
XzIpICQoRU5BQkxFX0NTU19CT1hfREVDT1JBVElPTl9CUkVBSykgJChFTkFCTEVfQ1NTX0NPTVBP
U0lUSU5HKSAkKEVOQUJMRV9DU1NfREVWSUNFX0FEQVBUQVRJT04pICQoRU5BQkxFX0NTU19JTUFH
RV9PUklFTlRBVElPTikgJChFTkFCTEVfQ1NTX0lNQUdFX1JFU09MVVRJT04pICQoRU5BQkxFX0NT
U19SRUdJT05TKSAkKEVOQUJMRV9DU1NfU0NST0xMX1NOQVApICQoRU5BQkxFX0NTU19TRUxFQ1RP
UlNfTEVWRUw0KSAkKEVOQUJMRV9DU1NfVFJBSUxJTkdfV09SRCkgJChFTkFCTEVfQ1NTM19URVhU
KSAkKEVOQUJMRV9DVVJTT1JfVklTSUJJTElUWSkgJChFTkFCTEVfQ1VTVE9NX1NDSEVNRV9IQU5E
TEVSKSAkKEVOQUJMRV9EQVNIQk9BUkRfU1VQUE9SVCkgJChFTkFCTEVfREFUQV9JTlRFUkFDVElP
TikgJChFTkFCTEVfREFUQUNVRV9WQUxVRSkgJChFTkFCTEVfREFUQUxJU1RfRUxFTUVOVCkgJChF
TkFCTEVfREVWSUNFX09SSUVOVEFUSU9OKSAkKEVOQUJMRV9EUkFHX1NVUFBPUlQpICQoRU5BQkxF
X0VOQ1JZUFRFRF9NRURJQSkgJChFTkFCTEVfRkFTVF9KSVRfUEVSTUlTU0lPTlMpICQoRU5BQkxF
X0ZJTFRFUlNfTEVWRUxfMikgJChFTkFCTEVfRlRMX0pJVCkgJChFTkFCTEVfRlVMTFNDUkVFTl9B
UEkpICQoRU5BQkxFX0dBTUVQQUQpICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9JQ09O
REFUQUJBU0UpICQoRU5BQkxFX0lOREVYRURfREFUQUJBU0VfSU5fV09SS0VSUykgJChFTkFCTEVf
SU5ERVhFRF9EQVRBQkFTRSkgJChFTkFCTEVfSU5QVVRfVFlQRV9DT0xPUl9QT1BPVkVSKSAkKEVO
QUJMRV9JTlBVVF9UWVBFX0NPTE9SKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEUpICQoRU5BQkxF
X0lOUFVUX1RZUEVfREFURVRJTUVfSU5DT01QTEVURSkgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRF
VElNRUxPQ0FMKSAkKEVOQUJMRV9JTlBVVF9UWVBFX01PTlRIKSAkKEVOQUJMRV9JTlBVVF9UWVBF
X1RJTUUpICQoRU5BQkxFX0lOUFVUX1RZUEVfV0VFSykgJChFTkFCTEVfSU5URVJTRUNUSU9OX09C
U0VSVkVSKSAkKEVOQUJMRV9JTlRMKSAkKEVOQUJMRV9JT1NfR0VTVFVSRV9FVkVOVFMpICQoRU5B
QkxFX0lPU19UT1VDSF9FVkVOVFMpICQoRU5BQkxFX0pJVCkgJChFTkFCTEVfS0VZQk9BUkRfS0VZ
X0FUVFJJQlVURSkgJChFTkFCTEVfS0VZQk9BUkRfQ09ERV9BVFRSSUJVVEUpICQoRU5BQkxFX0xF
R0FDWV9DU1NfVkVORE9SX1BSRUZJWEVTKSAkKEVOQUJMRV9MRUdBQ1lfRU5DUllQVEVEX01FRElB
KSAkKEVOQUJMRV9MRUdBQ1lfVkVORE9SX1BSRUZJWEVTKSAkKEVOQUJMRV9MRVRURVJQUkVTUykg
JChFTkFCTEVfTElOS19QUkVGRVRDSCkgJChFTkFCTEVfTUFDX0dFU1RVUkVfRVZFTlRTKSAkKEVO
QUJMRV9NQVRITUwpICQoRU5BQkxFX01FRElBX0NBUFRVUkUpICQoRU5BQkxFX01FRElBX0NPTlRS
T0xTX1NDUklQVCkgJChFTkFCTEVfTUVESUFfU0VTU0lPTikgJChFTkFCTEVfTUVESUFfU09VUkNF
KSAkKEVOQUJMRV9NRURJQV9TVEFUSVNUSUNTKSAkKEVOQUJMRV9NRURJQV9TVFJFQU0pICQoRU5B
QkxFX01FVEVSX0VMRU1FTlQpICQoRU5BQkxFX01IVE1MKSAkKEVOQUJMRV9NT1VTRV9DVVJTT1Jf
U0NBTEUpICQoRU5BQkxFX05BVklHQVRPUl9DT05URU5UX1VUSUxTKSAkKEVOQUJMRV9OQVZJR0FU
T1JfU1RBTkRBTE9ORSkgJChFTkFCTEVfTk9USUZJQ0FUSU9OUykgJChFTkFCTEVfUEFZTUVOVF9S
RVFVRVNUKSAkKEVOQUJMRV9QREZLSVRfUExVR0lOKSAkKEVOQUJMRV9QT0lOVEVSX0xPQ0spICQo
RU5BQkxFX1BVQkxJQ19TVUZGSVhfTElTVCkgJChFTkFCTEVfUVVPVEEpICQoRU5BQkxFX1JFTU9U
RV9JTlNQRUNUT1IpICQoRU5BQkxFX1JFU09MVVRJT05fTUVESUFfUVVFUlkpICQoRU5BQkxFX1JF
U09VUkNFX1VTQUdFKSAkKEVOQUJMRV9SVUJCRVJfQkFORElORykgJChFTkFCTEVfU0VSVklDRV9D
T05UUk9MUykgJChFTkFCTEVfU0VSVklDRV9XT1JLRVIpICQoRU5BQkxFX1NQRUVDSF9TWU5USEVT
SVMpICQoRU5BQkxFX1NUUkVBTVNfQVBJKSAkKEVOQUJMRV9TVUJUTEVfQ1JZUFRPKSAkKEVOQUJM
RV9TVkdfRk9OVFMpICQoRU5BQkxFX1RFTEVQSE9ORV9OVU1CRVJfREVURUNUSU9OKSAkKEVOQUJM
RV9URVhUX0FVVE9TSVpJTkcpICQoRU5BQkxFX1RPVUNIX0VWRU5UUykgJChFTkFCTEVfVE9VQ0hf
SUNPTl9MT0FESU5HKSAkKEVOQUJMRV9VU0VSU0VMRUNUX0FMTCkgJChFTkFCTEVfVkFSSUFUSU9O
X0ZPTlRTKSAkKEVOQUJMRV9WSURFT19QUkVTRU5UQVRJT05fTU9ERSkgJChFTkFCTEVfTUFDX1ZJ
REVPX1RPT0xCT1gpICQoRU5BQkxFX1ZJREVPX1RSQUNLKSAkKEVOQUJMRV9WSURFTykgJChFTkFC
TEVfV0VCX0FOSU1BVElPTlMpICQoRU5BQkxFX1dFQl9BVURJTykgJChFTkFCTEVfV0VCX1JUQykg
JChFTkFCTEVfV0VCQVNTRU1CTFkpICQoRU5BQkxFX1dFQkdMKSAkKEVOQUJMRV9XRUJHTDIpICQo
RU5BQkxFX1dFQkdQVSkgJChFTkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAkKEVOQUJM
RV9YU0xUKTsKK0ZFQVRVUkVfREVGSU5FUyA9ICQoRU5BQkxFXzNEX1RSQU5TRk9STVMpICQoRU5B
QkxFX0FDQ0VMRVJBVEVEXzJEX0NBTlZBUykgJChFTkFCTEVfQUNDRUxFUkFURURfT1ZFUkZMT1df
U0NST0xMSU5HKSAkKEVOQUJMRV9BUFBMRV9QQVkpICQoRU5BQkxFX0FQUExFX1BBWV9TRVNTSU9O
X1YzKSAkKEVOQUJMRV9BVFRBQ0hNRU5UX0VMRU1FTlQpICQoRU5BQkxFX0FWRl9DQVBUSU9OUykg
JChFTkFCTEVfQ0FDSEVfUEFSVElUSU9OSU5HKSAkKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORykg
JChFTkFCTEVfQ09OVEVOVF9GSUxURVJJTkcpICQoRU5BQkxFX0NTU19BTklNQVRJT05TX0xFVkVM
XzIpICQoRU5BQkxFX0NTU19CT1hfREVDT1JBVElPTl9CUkVBSykgJChFTkFCTEVfQ1NTX0NPTVBP
U0lUSU5HKSAkKEVOQUJMRV9DU1NfREVWSUNFX0FEQVBUQVRJT04pICQoRU5BQkxFX0NTU19JTUFH
RV9PUklFTlRBVElPTikgJChFTkFCTEVfQ1NTX0lNQUdFX1JFU09MVVRJT04pICQoRU5BQkxFX0NT
U19TQ1JPTExfU05BUCkgJChFTkFCTEVfQ1NTX1NFTEVDVE9SU19MRVZFTDQpICQoRU5BQkxFX0NT
U19UUkFJTElOR19XT1JEKSAkKEVOQUJMRV9DU1MzX1RFWFQpICQoRU5BQkxFX0NVUlNPUl9WSVNJ
QklMSVRZKSAkKEVOQUJMRV9DVVNUT01fU0NIRU1FX0hBTkRMRVIpICQoRU5BQkxFX0RBU0hCT0FS
RF9TVVBQT1JUKSAkKEVOQUJMRV9EQVRBX0lOVEVSQUNUSU9OKSAkKEVOQUJMRV9EQVRBQ1VFX1ZB
TFVFKSAkKEVOQUJMRV9EQVRBTElTVF9FTEVNRU5UKSAkKEVOQUJMRV9ERVZJQ0VfT1JJRU5UQVRJ
T04pICQoRU5BQkxFX0RSQUdfU1VQUE9SVCkgJChFTkFCTEVfRU5DUllQVEVEX01FRElBKSAkKEVO
QUJMRV9GQVNUX0pJVF9QRVJNSVNTSU9OUykgJChFTkFCTEVfRklMVEVSU19MRVZFTF8yKSAkKEVO
QUJMRV9GVExfSklUKSAkKEVOQUJMRV9GVUxMU0NSRUVOX0FQSSkgJChFTkFCTEVfR0FNRVBBRCkg
JChFTkFCTEVfR0VPTE9DQVRJT04pICQoRU5BQkxFX0lDT05EQVRBQkFTRSkgJChFTkFCTEVfSU5E
RVhFRF9EQVRBQkFTRV9JTl9XT1JLRVJTKSAkKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFKSAkKEVO
QUJMRV9JTlBVVF9UWVBFX0NPTE9SX1BPUE9WRVIpICQoRU5BQkxFX0lOUFVUX1RZUEVfQ09MT1Ip
ICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURSkgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFVElNRV9J
TkNPTVBMRVRFKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1FTE9DQUwpICQoRU5BQkxFX0lO
UFVUX1RZUEVfTU9OVEgpICQoRU5BQkxFX0lOUFVUX1RZUEVfVElNRSkgJChFTkFCTEVfSU5QVVRf
VFlQRV9XRUVLKSAkKEVOQUJMRV9JTlRFUlNFQ1RJT05fT0JTRVJWRVIpICQoRU5BQkxFX0lOVEwp
ICQoRU5BQkxFX0lPU19HRVNUVVJFX0VWRU5UUykgJChFTkFCTEVfSU9TX1RPVUNIX0VWRU5UUykg
JChFTkFCTEVfSklUKSAkKEVOQUJMRV9LRVlCT0FSRF9LRVlfQVRUUklCVVRFKSAkKEVOQUJMRV9L
RVlCT0FSRF9DT0RFX0FUVFJJQlVURSkgJChFTkFCTEVfTEVHQUNZX0NTU19WRU5ET1JfUFJFRklY
RVMpICQoRU5BQkxFX0xFR0FDWV9FTkNSWVBURURfTUVESUEpICQoRU5BQkxFX0xFR0FDWV9WRU5E
T1JfUFJFRklYRVMpICQoRU5BQkxFX0xFVFRFUlBSRVNTKSAkKEVOQUJMRV9MSU5LX1BSRUZFVENI
KSAkKEVOQUJMRV9NQUNfR0VTVFVSRV9FVkVOVFMpICQoRU5BQkxFX01BVEhNTCkgJChFTkFCTEVf
TUVESUFfQ0FQVFVSRSkgJChFTkFCTEVfTUVESUFfQ09OVFJPTFNfU0NSSVBUKSAkKEVOQUJMRV9N
RURJQV9TRVNTSU9OKSAkKEVOQUJMRV9NRURJQV9TT1VSQ0UpICQoRU5BQkxFX01FRElBX1NUQVRJ
U1RJQ1MpICQoRU5BQkxFX01FRElBX1NUUkVBTSkgJChFTkFCTEVfTUVURVJfRUxFTUVOVCkgJChF
TkFCTEVfTUhUTUwpICQoRU5BQkxFX01PVVNFX0NVUlNPUl9TQ0FMRSkgJChFTkFCTEVfTkFWSUdB
VE9SX0NPTlRFTlRfVVRJTFMpICQoRU5BQkxFX05BVklHQVRPUl9TVEFOREFMT05FKSAkKEVOQUJM
RV9OT1RJRklDQVRJT05TKSAkKEVOQUJMRV9QQVlNRU5UX1JFUVVFU1QpICQoRU5BQkxFX1BERktJ
VF9QTFVHSU4pICQoRU5BQkxFX1BPSU5URVJfTE9DSykgJChFTkFCTEVfUFVCTElDX1NVRkZJWF9M
SVNUKSAkKEVOQUJMRV9RVU9UQSkgJChFTkFCTEVfUkVNT1RFX0lOU1BFQ1RPUikgJChFTkFCTEVf
UkVTT0xVVElPTl9NRURJQV9RVUVSWSkgJChFTkFCTEVfUkVTT1VSQ0VfVVNBR0UpICQoRU5BQkxF
X1JVQkJFUl9CQU5ESU5HKSAkKEVOQUJMRV9TRVJWSUNFX0NPTlRST0xTKSAkKEVOQUJMRV9TRVJW
SUNFX1dPUktFUikgJChFTkFCTEVfU1BFRUNIX1NZTlRIRVNJUykgJChFTkFCTEVfU1RSRUFNU19B
UEkpICQoRU5BQkxFX1NVQlRMRV9DUllQVE8pICQoRU5BQkxFX1NWR19GT05UUykgJChFTkFCTEVf
VEVMRVBIT05FX05VTUJFUl9ERVRFQ1RJT04pICQoRU5BQkxFX1RFWFRfQVVUT1NJWklORykgJChF
TkFCTEVfVE9VQ0hfRVZFTlRTKSAkKEVOQUJMRV9UT1VDSF9JQ09OX0xPQURJTkcpICQoRU5BQkxF
X1VTRVJTRUxFQ1RfQUxMKSAkKEVOQUJMRV9WQVJJQVRJT05fRk9OVFMpICQoRU5BQkxFX1ZJREVP
X1BSRVNFTlRBVElPTl9NT0RFKSAkKEVOQUJMRV9NQUNfVklERU9fVE9PTEJPWCkgJChFTkFCTEVf
VklERU9fVFJBQ0spICQoRU5BQkxFX1ZJREVPKSAkKEVOQUJMRV9XRUJfQU5JTUFUSU9OUykgJChF
TkFCTEVfV0VCX0FVRElPKSAkKEVOQUJMRV9XRUJfUlRDKSAkKEVOQUJMRV9XRUJBU1NFTUJMWSkg
JChFTkFCTEVfV0VCR0wpICQoRU5BQkxFX1dFQkdMMikgJChFTkFCTEVfV0VCR1BVKSAkKEVOQUJM
RV9XSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpICQoRU5BQkxFX1hTTFQpOwpJbmRleDogU291cmNl
L1dlYkNvcmUvUEFML0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9QQUwv
Q2hhbmdlTG9nCShyZXZpc2lvbiAyMjIyNTUpCisrKyBTb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTctMDktMTkgIEFudHRpIEtv
aXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBET00gYW5kIHN0eWxp
bmcgc3VwcG9ydCBmb3IgQ1NTIFJlZ2lvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE3NzIyMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25m
aWc6CisKIDIwMTctMDktMTggIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgogCiAgICAg
ICAgIFtNYWNdIFVwc3RyZWFtIG1pc2NlbGxhbmVvdXMgV2ViS2l0U3lzdGVtSW50ZXJmYWNlIGZ1
bmN0aW9ucwpJbmRleDogU291cmNlL1dlYkNvcmUvUEFML0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVE
ZWZpbmVzLnhjY29uZmlnCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BBTC9Db25maWd1
cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwkocmV2aXNpb24gMjIyMjA0KQorKysgU291
cmNlL1dlYkNvcmUvUEFML0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCSh3
b3JraW5nIGNvcHkpCkBAIC03OCw3ICs3OCw2IEBAIEVOQUJMRV9DU1NfQ09NUE9TSVRJTkcgPSBF
TkFCTEVfQ1NTX0NPTVAKIEVOQUJMRV9DU1NfREVWSUNFX0FEQVBUQVRJT04gPSA7CiBFTkFCTEVf
Q1NTX0lNQUdFX09SSUVOVEFUSU9OID0gOwogRU5BQkxFX0NTU19JTUFHRV9SRVNPTFVUSU9OID0g
OwotRU5BQkxFX0NTU19SRUdJT05TID0gOwogRU5BQkxFX0NTU19TRUxFQ1RPUlNfTEVWRUw0ID0g
RU5BQkxFX0NTU19TRUxFQ1RPUlNfTEVWRUw0OwogRU5BQkxFX0NTUzNfVEVYVCA9IDsKIEVOQUJM
RV9DVVJTT1JfVklTSUJJTElUWSA9IEVOQUJMRV9DVVJTT1JfVklTSUJJTElUWTsKQEAgLTI0Myw0
ICsyNDIsNCBAQCBFTkFCTEVfREFUQV9JTlRFUkFDVElPTl9pcGhvbmVzaW11bGF0b3IgCiBFTkFC
TEVfREFUQV9JTlRFUkFDVElPTltzZGs9aXBob25lb3MxMCpdID0gOwogRU5BQkxFX0RBVEFfSU5U
RVJBQ1RJT05bc2RrPWlwaG9uZXNpbXVsYXRvcjEwKl0gPSA7CiAKLUZFQVRVUkVfREVGSU5FUyA9
ICQoRU5BQkxFXzNEX1RSQU5TRk9STVMpICQoRU5BQkxFX0FDQ0VMRVJBVEVEXzJEX0NBTlZBUykg
JChFTkFCTEVfQUNDRUxFUkFURURfT1ZFUkZMT1dfU0NST0xMSU5HKSAkKEVOQUJMRV9BUFBMRV9Q
QVkpICQoRU5BQkxFX0FQUExFX1BBWV9TRVNTSU9OX1YzKSAkKEVOQUJMRV9BVFRBQ0hNRU5UX0VM
RU1FTlQpICQoRU5BQkxFX0FWRl9DQVBUSU9OUykgJChFTkFCTEVfQ0FDSEVfUEFSVElUSU9OSU5H
KSAkKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORykgJChFTkFCTEVfQ09OVEVOVF9GSUxURVJJTkcp
ICQoRU5BQkxFX0NTU19BTklNQVRJT05TX0xFVkVMXzIpICQoRU5BQkxFX0NTU19CT1hfREVDT1JB
VElPTl9CUkVBSykgJChFTkFCTEVfQ1NTX0NPTVBPU0lUSU5HKSAkKEVOQUJMRV9DU1NfREVWSUNF
X0FEQVBUQVRJT04pICQoRU5BQkxFX0NTU19JTUFHRV9PUklFTlRBVElPTikgJChFTkFCTEVfQ1NT
X0lNQUdFX1JFU09MVVRJT04pICQoRU5BQkxFX0NTU19SRUdJT05TKSAkKEVOQUJMRV9DU1NfU0NS
T0xMX1NOQVApICQoRU5BQkxFX0NTU19TRUxFQ1RPUlNfTEVWRUw0KSAkKEVOQUJMRV9DU1NfVFJB
SUxJTkdfV09SRCkgJChFTkFCTEVfQ1NTM19URVhUKSAkKEVOQUJMRV9DVVJTT1JfVklTSUJJTElU
WSkgJChFTkFCTEVfQ1VTVE9NX1NDSEVNRV9IQU5ETEVSKSAkKEVOQUJMRV9EQVNIQk9BUkRfU1VQ
UE9SVCkgJChFTkFCTEVfREFUQV9JTlRFUkFDVElPTikgJChFTkFCTEVfREFUQUNVRV9WQUxVRSkg
JChFTkFCTEVfREFUQUxJU1RfRUxFTUVOVCkgJChFTkFCTEVfREVWSUNFX09SSUVOVEFUSU9OKSAk
KEVOQUJMRV9EUkFHX1NVUFBPUlQpICQoRU5BQkxFX0VOQ1JZUFRFRF9NRURJQSkgJChFTkFCTEVf
RkFTVF9KSVRfUEVSTUlTU0lPTlMpICQoRU5BQkxFX0ZJTFRFUlNfTEVWRUxfMikgJChFTkFCTEVf
RlRMX0pJVCkgJChFTkFCTEVfRlVMTFNDUkVFTl9BUEkpICQoRU5BQkxFX0dBTUVQQUQpICQoRU5B
QkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9JQ09OREFUQUJBU0UpICQoRU5BQkxFX0lOREVYRURf
REFUQUJBU0VfSU5fV09SS0VSUykgJChFTkFCTEVfSU5ERVhFRF9EQVRBQkFTRSkgJChFTkFCTEVf
SU5QVVRfVFlQRV9DT0xPUl9QT1BPVkVSKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0NPTE9SKSAkKEVO
QUJMRV9JTlBVVF9UWVBFX0RBVEUpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURVRJTUVfSU5DT01Q
TEVURSkgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFVElNRUxPQ0FMKSAkKEVOQUJMRV9JTlBVVF9U
WVBFX01PTlRIKSAkKEVOQUJMRV9JTlBVVF9UWVBFX1RJTUUpICQoRU5BQkxFX0lOUFVUX1RZUEVf
V0VFSykgJChFTkFCTEVfSU5URVJTRUNUSU9OX09CU0VSVkVSKSAkKEVOQUJMRV9JTlRMKSAkKEVO
QUJMRV9JT1NfR0VTVFVSRV9FVkVOVFMpICQoRU5BQkxFX0lPU19UT1VDSF9FVkVOVFMpICQoRU5B
QkxFX0pJVCkgJChFTkFCTEVfS0VZQk9BUkRfS0VZX0FUVFJJQlVURSkgJChFTkFCTEVfS0VZQk9B
UkRfQ09ERV9BVFRSSUJVVEUpICQoRU5BQkxFX0xFR0FDWV9DU1NfVkVORE9SX1BSRUZJWEVTKSAk
KEVOQUJMRV9MRUdBQ1lfRU5DUllQVEVEX01FRElBKSAkKEVOQUJMRV9MRUdBQ1lfVkVORE9SX1BS
RUZJWEVTKSAkKEVOQUJMRV9MRVRURVJQUkVTUykgJChFTkFCTEVfTElOS19QUkVGRVRDSCkgJChF
TkFCTEVfTUFDX0dFU1RVUkVfRVZFTlRTKSAkKEVOQUJMRV9NQVRITUwpICQoRU5BQkxFX01FRElB
X0NBUFRVUkUpICQoRU5BQkxFX01FRElBX0NPTlRST0xTX1NDUklQVCkgJChFTkFCTEVfTUVESUFf
U0VTU0lPTikgJChFTkFCTEVfTUVESUFfU09VUkNFKSAkKEVOQUJMRV9NRURJQV9TVEFUSVNUSUNT
KSAkKEVOQUJMRV9NRURJQV9TVFJFQU0pICQoRU5BQkxFX01FVEVSX0VMRU1FTlQpICQoRU5BQkxF
X01IVE1MKSAkKEVOQUJMRV9NT1VTRV9DVVJTT1JfU0NBTEUpICQoRU5BQkxFX05BVklHQVRPUl9D
T05URU5UX1VUSUxTKSAkKEVOQUJMRV9OQVZJR0FUT1JfU1RBTkRBTE9ORSkgJChFTkFCTEVfTk9U
SUZJQ0FUSU9OUykgJChFTkFCTEVfUEFZTUVOVF9SRVFVRVNUKSAkKEVOQUJMRV9QREZLSVRfUExV
R0lOKSAkKEVOQUJMRV9QT0lOVEVSX0xPQ0spICQoRU5BQkxFX1BVQkxJQ19TVUZGSVhfTElTVCkg
JChFTkFCTEVfUVVPVEEpICQoRU5BQkxFX1JFTU9URV9JTlNQRUNUT1IpICQoRU5BQkxFX1JFU09M
VVRJT05fTUVESUFfUVVFUlkpICQoRU5BQkxFX1JFU09VUkNFX1VTQUdFKSAkKEVOQUJMRV9SVUJC
RVJfQkFORElORykgJChFTkFCTEVfU0VSVklDRV9DT05UUk9MUykgJChFTkFCTEVfU0VSVklDRV9X
T1JLRVIpICQoRU5BQkxFX1NQRUVDSF9TWU5USEVTSVMpICQoRU5BQkxFX1NUUkVBTVNfQVBJKSAk
KEVOQUJMRV9TVUJUTEVfQ1JZUFRPKSAkKEVOQUJMRV9TVkdfRk9OVFMpICQoRU5BQkxFX1RFTEVQ
SE9ORV9OVU1CRVJfREVURUNUSU9OKSAkKEVOQUJMRV9URVhUX0FVVE9TSVpJTkcpICQoRU5BQkxF
X1RPVUNIX0VWRU5UUykgJChFTkFCTEVfVE9VQ0hfSUNPTl9MT0FESU5HKSAkKEVOQUJMRV9VU0VS
U0VMRUNUX0FMTCkgJChFTkFCTEVfVkFSSUFUSU9OX0ZPTlRTKSAkKEVOQUJMRV9WSURFT19QUkVT
RU5UQVRJT05fTU9ERSkgJChFTkFCTEVfTUFDX1ZJREVPX1RPT0xCT1gpICQoRU5BQkxFX1ZJREVP
X1RSQUNLKSAkKEVOQUJMRV9WSURFTykgJChFTkFCTEVfV0VCX0FOSU1BVElPTlMpICQoRU5BQkxF
X1dFQl9BVURJTykgJChFTkFCTEVfV0VCX1JUQykgJChFTkFCTEVfV0VCQVNTRU1CTFkpICQoRU5B
QkxFX1dFQkdMKSAkKEVOQUJMRV9XRUJHTDIpICQoRU5BQkxFX1dFQkdQVSkgJChFTkFCTEVfV0lS
RUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAkKEVOQUJMRV9YU0xUKTsKK0ZFQVRVUkVfREVGSU5FUyA9
ICQoRU5BQkxFXzNEX1RSQU5TRk9STVMpICQoRU5BQkxFX0FDQ0VMRVJBVEVEXzJEX0NBTlZBUykg
JChFTkFCTEVfQUNDRUxFUkFURURfT1ZFUkZMT1dfU0NST0xMSU5HKSAkKEVOQUJMRV9BUFBMRV9Q
QVkpICQoRU5BQkxFX0FQUExFX1BBWV9TRVNTSU9OX1YzKSAkKEVOQUJMRV9BVFRBQ0hNRU5UX0VM
RU1FTlQpICQoRU5BQkxFX0FWRl9DQVBUSU9OUykgJChFTkFCTEVfQ0FDSEVfUEFSVElUSU9OSU5H
KSAkKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORykgJChFTkFCTEVfQ09OVEVOVF9GSUxURVJJTkcp
ICQoRU5BQkxFX0NTU19BTklNQVRJT05TX0xFVkVMXzIpICQoRU5BQkxFX0NTU19CT1hfREVDT1JB
VElPTl9CUkVBSykgJChFTkFCTEVfQ1NTX0NPTVBPU0lUSU5HKSAkKEVOQUJMRV9DU1NfREVWSUNF
X0FEQVBUQVRJT04pICQoRU5BQkxFX0NTU19JTUFHRV9PUklFTlRBVElPTikgJChFTkFCTEVfQ1NT
X0lNQUdFX1JFU09MVVRJT04pICQoRU5BQkxFX0NTU19TQ1JPTExfU05BUCkgJChFTkFCTEVfQ1NT
X1NFTEVDVE9SU19MRVZFTDQpICQoRU5BQkxFX0NTU19UUkFJTElOR19XT1JEKSAkKEVOQUJMRV9D
U1MzX1RFWFQpICQoRU5BQkxFX0NVUlNPUl9WSVNJQklMSVRZKSAkKEVOQUJMRV9DVVNUT01fU0NI
RU1FX0hBTkRMRVIpICQoRU5BQkxFX0RBU0hCT0FSRF9TVVBQT1JUKSAkKEVOQUJMRV9EQVRBX0lO
VEVSQUNUSU9OKSAkKEVOQUJMRV9EQVRBQ1VFX1ZBTFVFKSAkKEVOQUJMRV9EQVRBTElTVF9FTEVN
RU5UKSAkKEVOQUJMRV9ERVZJQ0VfT1JJRU5UQVRJT04pICQoRU5BQkxFX0RSQUdfU1VQUE9SVCkg
JChFTkFCTEVfRU5DUllQVEVEX01FRElBKSAkKEVOQUJMRV9GQVNUX0pJVF9QRVJNSVNTSU9OUykg
JChFTkFCTEVfRklMVEVSU19MRVZFTF8yKSAkKEVOQUJMRV9GVExfSklUKSAkKEVOQUJMRV9GVUxM
U0NSRUVOX0FQSSkgJChFTkFCTEVfR0FNRVBBRCkgJChFTkFCTEVfR0VPTE9DQVRJT04pICQoRU5B
QkxFX0lDT05EQVRBQkFTRSkgJChFTkFCTEVfSU5ERVhFRF9EQVRBQkFTRV9JTl9XT1JLRVJTKSAk
KEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0NPTE9SX1BPUE9W
RVIpICQoRU5BQkxFX0lOUFVUX1RZUEVfQ09MT1IpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURSkg
JChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFVElNRV9JTkNPTVBMRVRFKSAkKEVOQUJMRV9JTlBVVF9U
WVBFX0RBVEVUSU1FTE9DQUwpICQoRU5BQkxFX0lOUFVUX1RZUEVfTU9OVEgpICQoRU5BQkxFX0lO
UFVUX1RZUEVfVElNRSkgJChFTkFCTEVfSU5QVVRfVFlQRV9XRUVLKSAkKEVOQUJMRV9JTlRFUlNF
Q1RJT05fT0JTRVJWRVIpICQoRU5BQkxFX0lOVEwpICQoRU5BQkxFX0lPU19HRVNUVVJFX0VWRU5U
UykgJChFTkFCTEVfSU9TX1RPVUNIX0VWRU5UUykgJChFTkFCTEVfSklUKSAkKEVOQUJMRV9LRVlC
T0FSRF9LRVlfQVRUUklCVVRFKSAkKEVOQUJMRV9LRVlCT0FSRF9DT0RFX0FUVFJJQlVURSkgJChF
TkFCTEVfTEVHQUNZX0NTU19WRU5ET1JfUFJFRklYRVMpICQoRU5BQkxFX0xFR0FDWV9FTkNSWVBU
RURfTUVESUEpICQoRU5BQkxFX0xFR0FDWV9WRU5ET1JfUFJFRklYRVMpICQoRU5BQkxFX0xFVFRF
UlBSRVNTKSAkKEVOQUJMRV9MSU5LX1BSRUZFVENIKSAkKEVOQUJMRV9NQUNfR0VTVFVSRV9FVkVO
VFMpICQoRU5BQkxFX01BVEhNTCkgJChFTkFCTEVfTUVESUFfQ0FQVFVSRSkgJChFTkFCTEVfTUVE
SUFfQ09OVFJPTFNfU0NSSVBUKSAkKEVOQUJMRV9NRURJQV9TRVNTSU9OKSAkKEVOQUJMRV9NRURJ
QV9TT1VSQ0UpICQoRU5BQkxFX01FRElBX1NUQVRJU1RJQ1MpICQoRU5BQkxFX01FRElBX1NUUkVB
TSkgJChFTkFCTEVfTUVURVJfRUxFTUVOVCkgJChFTkFCTEVfTUhUTUwpICQoRU5BQkxFX01PVVNF
X0NVUlNPUl9TQ0FMRSkgJChFTkFCTEVfTkFWSUdBVE9SX0NPTlRFTlRfVVRJTFMpICQoRU5BQkxF
X05BVklHQVRPUl9TVEFOREFMT05FKSAkKEVOQUJMRV9OT1RJRklDQVRJT05TKSAkKEVOQUJMRV9Q
QVlNRU5UX1JFUVVFU1QpICQoRU5BQkxFX1BERktJVF9QTFVHSU4pICQoRU5BQkxFX1BPSU5URVJf
TE9DSykgJChFTkFCTEVfUFVCTElDX1NVRkZJWF9MSVNUKSAkKEVOQUJMRV9RVU9UQSkgJChFTkFC
TEVfUkVNT1RFX0lOU1BFQ1RPUikgJChFTkFCTEVfUkVTT0xVVElPTl9NRURJQV9RVUVSWSkgJChF
TkFCTEVfUkVTT1VSQ0VfVVNBR0UpICQoRU5BQkxFX1JVQkJFUl9CQU5ESU5HKSAkKEVOQUJMRV9T
RVJWSUNFX0NPTlRST0xTKSAkKEVOQUJMRV9TRVJWSUNFX1dPUktFUikgJChFTkFCTEVfU1BFRUNI
X1NZTlRIRVNJUykgJChFTkFCTEVfU1RSRUFNU19BUEkpICQoRU5BQkxFX1NVQlRMRV9DUllQVE8p
ICQoRU5BQkxFX1NWR19GT05UUykgJChFTkFCTEVfVEVMRVBIT05FX05VTUJFUl9ERVRFQ1RJT04p
ICQoRU5BQkxFX1RFWFRfQVVUT1NJWklORykgJChFTkFCTEVfVE9VQ0hfRVZFTlRTKSAkKEVOQUJM
RV9UT1VDSF9JQ09OX0xPQURJTkcpICQoRU5BQkxFX1VTRVJTRUxFQ1RfQUxMKSAkKEVOQUJMRV9W
QVJJQVRJT05fRk9OVFMpICQoRU5BQkxFX1ZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSAkKEVOQUJM
RV9NQUNfVklERU9fVE9PTEJPWCkgJChFTkFCTEVfVklERU9fVFJBQ0spICQoRU5BQkxFX1ZJREVP
KSAkKEVOQUJMRV9XRUJfQU5JTUFUSU9OUykgJChFTkFCTEVfV0VCX0FVRElPKSAkKEVOQUJMRV9X
RUJfUlRDKSAkKEVOQUJMRV9XRUJBU1NFTUJMWSkgJChFTkFCTEVfV0VCR0wpICQoRU5BQkxFX1dF
QkdMMikgJChFTkFCTEVfV0VCR1BVKSAkKEVOQUJMRV9XSVJFTEVTU19QTEFZQkFDS19UQVJHRVQp
ICQoRU5BQkxFX1hTTFQpOwpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjIyMjA0KQorKysgU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0y
NTI4LDEyICsyNTI4LDYgQEAKIAkJNTJCMEQ0QkUxQzU3RkQxRTAwNzdDRTUzIC8qIFBsYXRmb3Jt
Vmlldy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTJC
MEQ0QkQxQzU3RkQxRTAwNzdDRTUzIC8qIFBsYXRmb3JtVmlldy5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUyQjBENEMwMUM1N0ZENjYwMDc3Q0U1
MyAvKiBWaWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTJCMEQ0QkYxQzU3RkQ2NjAwNzdDRTUzIC8qIFZp
ZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTJCMEQ0QzIxQzU3RkY5MTAwNzdDRTUzIC8qIFZpZGVv
RnVsbHNjcmVlbkludGVyZmFjZU1hYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTJCMEQ0QzExQzU3RkY5MTAwNzdDRTUzIC8qIFZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZU1hYy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07Ci0JCTUyQjZDOUMyMTVFM0Y0REYwMDY5MEIwNSAvKiBET01OYW1lZEZsb3dDb2xsZWN0
aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUy
QjZDOUJEMTVFM0Y0REYwMDY5MEIwNSAvKiBET01OYW1lZEZsb3dDb2xsZWN0aW9uLmNwcCAqLzsg
fTsKLQkJNTJCNkM5QzMxNUUzRjRERjAwNjkwQjA1IC8qIERPTU5hbWVkRmxvd0NvbGxlY3Rpb24u
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyQjZDOUJF
MTVFM0Y0REYwMDY5MEIwNSAvKiBET01OYW1lZEZsb3dDb2xsZWN0aW9uLmggKi87IH07Ci0JCTUy
QjZDOUM1MTVFM0Y0REYwMDY5MEIwNSAvKiBOYW1lZEZsb3dDb2xsZWN0aW9uLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyQjZDOUMwMTVFM0Y0REYw
MDY5MEIwNSAvKiBOYW1lZEZsb3dDb2xsZWN0aW9uLmNwcCAqLzsgfTsKLQkJNTJCNkM5QzYxNUUz
RjRERjAwNjkwQjA1IC8qIE5hbWVkRmxvd0NvbGxlY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyQjZDOUMxMTVFM0Y0REYwMDY5MEIwNSAvKiBO
YW1lZEZsb3dDb2xsZWN0aW9uLmggKi87IH07Ci0JCTUyQ0NBOUUyMTVFM0Y2MkMwMDUzQzc3RiAv
KiBKU0RPTU5hbWVkRmxvd0NvbGxlY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTJDQ0E5RTAxNUUzRjYyQzAwNTNDNzdGIC8qIEpTRE9NTmFt
ZWRGbG93Q29sbGVjdGlvbi5jcHAgKi87IH07Ci0JCTUyQ0NBOUUzMTVFM0Y2MkMwMDUzQzc3RiAv
KiBKU0RPTU5hbWVkRmxvd0NvbGxlY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUyQ0NBOUUxMTVFM0Y2MkMwMDUzQzc3RiAvKiBKU0RPTU5hbWVk
Rmxvd0NvbGxlY3Rpb24uaCAqLzsgfTsKIAkJNTJENUExOEYxQzU0NTkyMzAwREUzNEEzIC8qIFZp
ZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUyRDVBMThEMUM1NDU5MDMwMERFMzRBMyAvKiBWaWRlb0Z1bGxz
Y3JlZW5MYXllck1hbmFnZXIubW0gKi87IH07CiAJCTUyRDVBMUE3MUM1NzQ4OUQwMERFMzRBMyAv
KiBWaWRlb0Z1bGxzY3JlZW5Nb2RlbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTJENUExQTQxQzU3NDg4OTAwREUzNEEzIC8qIFZpZGVvRnVsbHNjcmVl
bk1vZGVsLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJNTJENUExQTgxQzU3NDhBMzAwREUzNEEzIC8qIFZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9F
bGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MkQ1QTFBNTFDNTc0ODg5MDBERTM0QTMgLyogVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1l
bnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAt
MjkzMSw3ICsyOTI1LDYgQEAKIAkJNkM0Qzk2REYxQUQ0NDgzNTAwMzY1QTUwIC8qIEpTUmVhZGFi
bGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNkM0Qzk2REIxQUQ0NDgzNTAwMzY1QTUwIC8qIEpTUmVhZGFibGVT
dHJlYW1EZWZhdWx0Q29udHJvbGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTZDNjM4ODk1QTk2Q0NFRTUwQzhDOTQ2QyAvKiBDYWNoZWRSZXNv
dXJjZVJlcXVlc3RJbml0aWF0b3JzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA2QzYzODg5M0E5NkNDRUU1MEM4Qzk0NkMgLyogQ2FjaGVkUmVzb3VyY2VS
ZXF1ZXN0SW5pdGlhdG9ycy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTZDNjM4ODk2QTk2Q0NFRTUwQzhDOTQ2QyAvKiBDYWNoZWRSZXNvdXJjZVJl
cXVlc3RJbml0aWF0b3JzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDZDNjM4ODk0QTk2Q0NFRTUwQzhDOTQ2QyAvKiBDYWNoZWRSZXNvdXJjZVJlcXVl
c3RJbml0aWF0b3JzLmNwcCAqLzsgfTsKLQkJNkNEREU4RDAxNzcwQkIyMjAwMTZFMDcyIC8qIFJl
Z2lvbk92ZXJzZXRTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNkM3MEE4MTQxNzcwN0M0OTAwOUE0NDZFIC8qIFJlZ2lvbk92ZXJzZXRTdGF0ZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTZFMEU1
NjlCMTgzQkZGRTYwMEUwRThENSAvKiBGbG9hdFJvdW5kZWRSZWN0LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFMEU1Njk5MTgzQkZGRTYwMEUwRThE
NSAvKiBGbG9hdFJvdW5kZWRSZWN0LmNwcCAqLzsgfTsKIAkJNkUwRTU2OUMxODNCRkZFNjAwRTBF
OEQ1IC8qIEZsb2F0Um91bmRlZFJlY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDZFMEU1NjlBMTgzQkZGRTYwMEUwRThENSAvKiBGbG9hdFJvdW5kZWRS
ZWN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
NkUyMUM2QzAxMTI2MzM4NTAwQTdCRTAyIC8qIEdyYXBoaWNzQ29udGV4dDNELmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFMjFDNkJGMTEyNjMzODUw
MEE3QkUwMiAvKiBHcmFwaGljc0NvbnRleHQzRC5jcHAgKi87IH07CkBAIC0zNzYwLDEzICszNzUz
LDkgQEAKIAkJOEE5QTU4NzExMUU4NEMzNjAwOEFDRkQxIC8qIEpTUGVyZm9ybWFuY2VOYXZpZ2F0
aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4QTlB
NTg2RjExRTg0QzM2MDA4QUNGRDEgLyogSlNQZXJmb3JtYW5jZU5hdmlnYXRpb24uaCAqLzsgfTsK
IAkJOEE5QTU4NzUxMUU4NEM4MTAwOEFDRkQxIC8qIEpTUGVyZm9ybWFuY2UuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDhBOUE1ODczMTFFODRDODEwMDhB
Q0ZEMSAvKiBKU1BlcmZvcm1hbmNlLmggKi87IH07CiAJCThBOUE1ODg4MTFFODRGMzcwMDhBQ0ZE
MSAvKiBKU1BlcmZvcm1hbmNlVGltaW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4QTlBNTg3NzExRTg0Qzk4MDA4QUNGRDEgLyogSlNQZXJmb3JtYW5j
ZVRpbWluZy5oICovOyB9OwotCQk4QUE2MUNGRjE0NEQ1OTVCMDBGMzczNTAgLyogV2ViS2l0Q1NT
UmVnaW9uUnVsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA4QUE2MUNGRDE0NEQ1OTVCMDBGMzczNTAgLyogV2ViS2l0Q1NTUmVnaW9uUnVsZS5jcHAg
Ki87IH07Ci0JCThBQTYxRDAwMTQ0RDU5NUIwMEYzNzM1MCAvKiBXZWJLaXRDU1NSZWdpb25SdWxl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4QUE2MUNG
RTE0NEQ1OTVCMDBGMzczNTAgLyogV2ViS2l0Q1NTUmVnaW9uUnVsZS5oICovOyB9OwogCQk4QUI0
QkM3NzEyNkZEQjcxMDBERUI3MjcgLyogSWdub3JlRGVzdHJ1Y3RpdmVXcml0ZUNvdW50SW5jcmVt
ZW50ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDhB
QjRCQzc2MTI2RkRCNzEwMERFQjcyNyAvKiBJZ25vcmVEZXN0cnVjdGl2ZVdyaXRlQ291bnRJbmNy
ZW1lbnRlci5oICovOyB9OwogCQk4QUM4MjJGQzE4MEZDMDMzMDBGQjY0RDUgLyogUmVuZGVyTmFt
ZWRGbG93RnJhZ21lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOEFDODIyRkExODBGQzAzMzAwRkI2NEQ1IC8qIFJlbmRlck5hbWVkRmxvd0ZyYWdt
ZW50LmNwcCAqLzsgfTsKIAkJOEFDODIyRkQxODBGQzAzMzAwRkI2NEQ1IC8qIFJlbmRlck5hbWVk
Rmxvd0ZyYWdtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA4QUM4MjJGQjE4MEZDMDMzMDBGQjY0RDUgLyogUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQu
aCAqLzsgfTsKLQkJOEFEMEE1OTQxNEM4ODMzNjAwMEQ4M0M1IC8qIEpTV2ViS2l0Q1NTUmVnaW9u
UnVsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
QUNDMjRDRDE0OEUyNEIyMDBFRkNDMEQgLyogSlNXZWJLaXRDU1NSZWdpb25SdWxlLmNwcCAqLzsg
fTsKLQkJOEFEMEE1OTUxNEM4ODMzNjAwMEQ4M0M1IC8qIEpTV2ViS2l0Q1NTUmVnaW9uUnVsZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOEFDQzI0Q0Ux
NDhFMjRCMjAwRUZDQzBEIC8qIEpTV2ViS2l0Q1NTUmVnaW9uUnVsZS5oICovOyB9OwogCQk4QUY0
RTU1NTExREM1QTM2MDAwRUQzREUgLyogUGVyZm9ybWFuY2VOYXZpZ2F0aW9uLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDhBRjRFNTUyMTFEQzVBMzYw
MDBFRDNERSAvKiBQZXJmb3JtYW5jZU5hdmlnYXRpb24uY3BwICovOyB9OwogCQk4QUY0RTU1NjEx
REM1QTM2MDAwRUQzREUgLyogUGVyZm9ybWFuY2VOYXZpZ2F0aW9uLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4QUY0RTU1MzExREM1QTM2MDAwRUQzREUg
LyogUGVyZm9ybWFuY2VOYXZpZ2F0aW9uLmggKi87IH07CiAJCThBRjRFNTVDMTFEQzVBNjMwMDBF
RDNERSAvKiBQZXJmb3JtYW5jZVRpbWluZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOEFGNEU1NTkxMURDNUE2MzAwMEVEM0RFIC8qIFBlcmZvcm1hbmNl
VGltaW5nLmggKi87IH07CkBAIC02NTk5LDggKzY1ODgsNiBAQAogCQlENzBBRDY1ODEzRTEzNDJC
MDA1QjUwQjQgLyogUmVuZGVyUmVnaW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBENzBBRDY1NjEzRTEzNDJCMDA1QjUwQjQgLyogUmVuZGVyUmVnaW9u
LmggKi87IH07CiAJCUQ3MkY2RDc5MTUzMTU5QTMwMDFFRTQ0RSAvKiBGbG93VGhyZWFkQ29udHJv
bGxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBE
NzJGNkQ3NzE1MzE1OUEzMDAxRUU0NEUgLyogRmxvd1RocmVhZENvbnRyb2xsZXIuY3BwICovOyB9
OwogCQlENzJGNkQ3QTE1MzE1OUEzMDAxRUU0NEUgLyogRmxvd1RocmVhZENvbnRyb2xsZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEQ3MkY2RDc4MTUz
MTU5QTMwMDFFRTQ0RSAvKiBGbG93VGhyZWFkQ29udHJvbGxlci5oICovOyB9OwotCQlENzYxM0E1
MDE0NzRGMTNGMDBEQjg2MDYgLyogV2ViS2l0TmFtZWRGbG93LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEQ3NjEzQTRFMTQ3NEYxM0YwMERCODYwNiAv
KiBXZWJLaXROYW1lZEZsb3cuY3BwICovOyB9OwotCQlENzYxM0FDNDE0NzUzRTU2MDBEQjg2MDYg
LyogSlNXZWJLaXROYW1lZEZsb3cuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRDc2MTNBQzIxNDc1M0U1NjAwREI4NjA2IC8qIEpTV2ViS2l0TmFtZWRG
bG93LmNwcCAqLzsgfTsKIAkJRDhCNjE1MkYxMDMyNDk1MTAwQzg1NTRBIC8qIENvb2tpZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRDhCNjE1MkUxMDMy
NDk1MTAwQzg1NTRBIC8qIENvb2tpZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCURBRUQyMDMwMTZGMjQ0MkIwMDcwRUMwRiAvKiBQYWdlQ29uc29s
ZUNsaWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBEQUFDQjNEOTE2RjI0MTY0MDA2NjYxMzUgLyogUGFnZUNvbnNvbGVDbGllbnQuY3BwICovOyB9
OwogCQlEQUVEMjAzMTE2RjI0NDQ4MDA3MEVDMEYgLyogUGFnZUNvbnNvbGVDbGllbnQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERBQUNCM0RBMTZGMjQx
NjQwMDY2NjEzNSAvKiBQYWdlQ29uc29sZUNsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMDQ0OSwxMyArMTA0MzYsNiBAQAogCQk1MkIw
RDRCRDFDNTdGRDFFMDA3N0NFNTMgLyogUGxhdGZvcm1WaWV3LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFBsYXRmb3JtVmlldy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1MkIwRDRCRjFDNTdGRDY2MDA3N0NFNTMgLyogVmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2Jz
ZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmlkZW9GdWxsc2NyZWVu
Q2hhbmdlT2JzZXJ2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTJCMEQ0QzEx
QzU3RkY5MTAwNzdDRTUzIC8qIFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTJCNkM5QkQxNUUzRjRERjAwNjkwQjA1IC8q
IERPTU5hbWVkRmxvd0NvbGxlY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gRE9NTmFtZWRGbG93Q29sbGVjdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCTUyQjZDOUJFMTVFM0Y0REYwMDY5MEIwNSAvKiBET01OYW1lZEZsb3dDb2xsZWN0
aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTU5hbWVkRmxvd0NvbGxl
Y3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTJCNkM5QkYxNUUzRjRERjAw
NjkwQjA1IC8qIERPTU5hbWVkRmxvd0NvbGxlY3Rpb24uaWRsICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0
aCA9IERPTU5hbWVkRmxvd0NvbGxlY3Rpb24uaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQk1MkI2QzlDMDE1RTNGNERGMDA2OTBCMDUgLyogTmFtZWRGbG93Q29sbGVjdGlvbi5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOYW1lZEZsb3dDb2xsZWN0aW9u
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTJCNkM5QzExNUUzRjRERjAwNjkw
QjA1IC8qIE5hbWVkRmxvd0NvbGxlY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gTmFtZWRGbG93Q29sbGVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQk1MkNDQTlFMDE1RTNGNjJDMDA1M0M3N0YgLyogSlNET01OYW1lZEZsb3dDb2xsZWN0aW9uLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRE9NTmFtZWRGbG93Q29s
bGVjdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUyQ0NBOUUxMTVFM0Y2
MkMwMDUzQzc3RiAvKiBKU0RPTU5hbWVkRmxvd0NvbGxlY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSlNET01OYW1lZEZsb3dDb2xsZWN0aW9uLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTUyRDVBMThEMUM1NDU5MDMwMERFMzRBMyAvKiBWaWRlb0Z1bGxz
Y3JlZW5MYXllck1hbmFnZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBWaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTUyRDVBMThFMUM1NDU5MDMwMERFMzRBMyAvKiBWaWRlb0Z1bGxzY3JlZW5MYXll
ck1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmlkZW9GdWxsc2Ny
ZWVuTGF5ZXJNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUyRDVBMUE0
MUM1NzQ4ODkwMERFMzRBMyAvKiBWaWRlb0Z1bGxzY3JlZW5Nb2RlbC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBWaWRlb0Z1bGxzY3JlZW5Nb2RlbC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMTA5MTgsNyArMTA4OTgsNiBAQAogCQk2QzRDOTZEQjFBRDQ0ODM1
MDAzNjVBNTAgLyogSlNSZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2QzYzODg5M0E5NkNDRUU1MEM4Qzk0
NkMgLyogQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2QzYzODg5NEE5NkNDRUU1MEM4Qzk0NkMgLyogQ2Fj
aGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTZDNzBBODE0MTc3MDdDNDkwMDlBNDQ2RSAvKiBSZWdp
b25PdmVyc2V0U3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnaW9u
T3ZlcnNldFN0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZFMEU1Njk5MTgz
QkZGRTYwMEUwRThENSAvKiBGbG9hdFJvdW5kZWRSZWN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEZsb2F0Um91bmRlZFJlY3QuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk2RTBFNTY5QTE4M0JGRkU2MDBFMEU4RDUgLyogRmxvYXRSb3VuZGVkUmVj
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGbG9hdFJvdW5kZWRSZWN0Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZFMjFDNkJGMTEyNjMzODUwMEE3QkUwMiAv
KiBHcmFwaGljc0NvbnRleHQzRC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBHcmFwaGljc0NvbnRleHQzRC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC0xMjEyNywxNCArMTIxMDYsOSBAQAogCQk4QTlBNTg2RjExRTg0QzM2MDA4QUNGRDEgLyogSlNQ
ZXJmb3JtYW5jZU5hdmlnYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SlNQZXJmb3JtYW5jZU5hdmlnYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
OEE5QTU4NzMxMUU4NEM4MTAwOEFDRkQxIC8qIEpTUGVyZm9ybWFuY2UuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSlNQZXJmb3JtYW5jZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk4QTlBNTg3NzExRTg0Qzk4MDA4QUNGRDEgLyogSlNQZXJmb3JtYW5jZVRpbWlu
Zy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1BlcmZvcm1hbmNlVGltaW5n
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCThBQTYxQ0ZEMTQ0RDU5NUIwMEYzNzM1
MCAvKiBXZWJLaXRDU1NSZWdpb25SdWxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFdlYktpdENTU1JlZ2lvblJ1bGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQk4QUE2MUNGRTE0NEQ1OTVCMDBGMzczNTAgLyogV2ViS2l0Q1NTUmVnaW9uUnVsZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJLaXRDU1NSZWdpb25SdWxlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCThBQjRCQzc2MTI2RkRCNzEwMERFQjcyNyAv
KiBJZ25vcmVEZXN0cnVjdGl2ZVdyaXRlQ291bnRJbmNyZW1lbnRlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBJZ25vcmVEZXN0cnVjdGl2ZVdyaXRlQ291bnRJbmNyZW1lbnRl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4QUM4MjJGQTE4MEZDMDMzMDBGQjY0
RDUgLyogUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk4QUM4MjJGQjE4MEZDMDMzMDBGQjY0RDUgLyogUmVuZGVyTmFtZWRG
bG93RnJhZ21lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyTmFt
ZWRGbG93RnJhZ21lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJOEFDQzI0Q0Qx
NDhFMjRCMjAwRUZDQzBEIC8qIEpTV2ViS2l0Q1NTUmVnaW9uUnVsZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1dlYktpdENTU1JlZ2lvblJ1bGUuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4QUNDMjRDRTE0OEUyNEIyMDBFRkNDMEQgLyogSlNX
ZWJLaXRDU1NSZWdpb25SdWxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpT
V2ViS2l0Q1NTUmVnaW9uUnVsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4QUQw
QTU1NjE0Qzg3NDI1MDAwRDgzQzUgLyogV2ViS2l0Q1NTUmVnaW9uUnVsZS5pZGwgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0OyBwYXRoID0gV2ViS2l0Q1NTUmVnaW9uUnVsZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCThBRjRFNTUyMTFEQzVBMzYwMDBFRDNERSAvKiBQZXJmb3JtYW5jZU5hdmln
YXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGVyZm9ybWFu
Y2VOYXZpZ2F0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOEFGNEU1NTMx
MURDNUEzNjAwMEVEM0RFIC8qIFBlcmZvcm1hbmNlTmF2aWdhdGlvbi5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBQZXJmb3JtYW5jZU5hdmlnYXRpb24uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJOEFGNEU1NTQxMURDNUEzNjAwMEVEM0RFIC8qIFBlcmZvcm1hbmNl
TmF2aWdhdGlvbi5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUGVyZm9ybWFuY2VOYXZpZ2F0
aW9uLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE1Mzk3LDExICsxNTM3MSw2
IEBACiAJCUQ3MEFENjU2MTNFMTM0MkIwMDVCNTBCNCAvKiBSZW5kZXJSZWdpb24uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyUmVnaW9uLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUQ3MkY2RDc3MTUzMTU5QTMwMDFFRTQ0RSAvKiBGbG93VGhyZWFkQ29u
dHJvbGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGbG93VGhy
ZWFkQ29udHJvbGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQ3MkY2RDc4
MTUzMTU5QTMwMDFFRTQ0RSAvKiBGbG93VGhyZWFkQ29udHJvbGxlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBGbG93VGhyZWFkQ29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQlENzYxM0E0QTE0NzRFRTk1MDBEQjg2MDYgLyogV2ViS2l0TmFtZWRG
bG93LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJLaXROYW1lZEZsb3cuaWRsOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlENzYxM0E0RDE0NzRGMTNGMDBEQjg2MDYgLyogV2Vi
S2l0TmFtZWRGbG93LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYktpdE5h
bWVkRmxvdy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlENzYxM0E0RTE0NzRGMTNG
MDBEQjg2MDYgLyogV2ViS2l0TmFtZWRGbG93LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFdlYktpdE5hbWVkRmxvdy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCUQ3NjEzQUMyMTQ3NTNFNTYwMERCODYwNiAvKiBKU1dlYktpdE5hbWVkRmxvdy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1dlYktpdE5hbWVkRmxvdy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQ3NjEzQUMzMTQ3NTNFNTYwMERCODYw
NiAvKiBKU1dlYktpdE5hbWVkRmxvdy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBKU1dlYktpdE5hbWVkRmxvdy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEOEI2
MTUyRTEwMzI0OTUxMDBDODU1NEEgLyogQ29va2llLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IENvb2tpZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEQUFDQjNE
OTE2RjI0MTY0MDA2NjYxMzUgLyogUGFnZUNvbnNvbGVDbGllbnQuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGFnZUNvbnNvbGVDbGllbnQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlEQUFDQjNEQTE2RjI0MTY0MDA2NjYxMzUgLyogUGFnZUNvbnNv
bGVDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGFnZUNvbnNvbGVD
bGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIyNjM4LDggKzIyNjA3LDYg
QEAKIAkJCQlBODRFQkQ4MTBDQjhDOTc3MDAwNzk2MDkgLyogSlNTdHlsZVNoZWV0TGlzdC5oICov
LAogCQkJCTQ5ODM5MTNEMEYxRTc2NzUwMEMyMzc4MiAvKiBKU1dlYktpdENTU01hdHJpeC5jcHAg
Ki8sCiAJCQkJNDk4MzkxM0UwRjFFNzY3NTAwQzIzNzgyIC8qIEpTV2ViS2l0Q1NTTWF0cml4Lmgg
Ki8sCi0JCQkJOEFDQzI0Q0QxNDhFMjRCMjAwRUZDQzBEIC8qIEpTV2ViS2l0Q1NTUmVnaW9uUnVs
ZS5jcHAgKi8sCi0JCQkJOEFDQzI0Q0UxNDhFMjRCMjAwRUZDQzBEIC8qIEpTV2ViS2l0Q1NTUmVn
aW9uUnVsZS5oICovLAogCQkJCTNGMkIzM0U5MTY1QUYxNTUwMEUzOTg3QyAvKiBKU1dlYktpdENT
U1ZpZXdwb3J0UnVsZS5jcHAgKi8sCiAJCQkJM0YyQjMzRUExNjVBRjE1NTAwRTM5ODdDIC8qIEpT
V2ViS2l0Q1NTVmlld3BvcnRSdWxlLmggKi8sCiAJCQkpOwpAQCAtMjI2NzksOCArMjI2NDYsNiBA
QAogCQkJCUJDNjBEN0JGMEQyOUE0NjMwMEI5OTE4RiAvKiBKU0RPTUV4Y2VwdGlvbi5oICovLAog
CQkJCTY1REYzMUUzMDlEMUNDNjAwMDBCRTMyNSAvKiBKU0RPTUltcGxlbWVudGF0aW9uLmNwcCAq
LywKIAkJCQk2NURGMzFFNDA5RDFDQzYwMDAwQkUzMjUgLyogSlNET01JbXBsZW1lbnRhdGlvbi5o
ICovLAotCQkJCTUyQ0NBOUUwMTVFM0Y2MkMwMDUzQzc3RiAvKiBKU0RPTU5hbWVkRmxvd0NvbGxl
Y3Rpb24uY3BwICovLAotCQkJCTUyQ0NBOUUxMTVFM0Y2MkMwMDUzQzc3RiAvKiBKU0RPTU5hbWVk
Rmxvd0NvbGxlY3Rpb24uaCAqLywKIAkJCQkwRjQ5NjZBNDFEQjQwQzQzMDBBMjc0QkIgLyogSlNE
T01Qb2ludC5jcHAgKi8sCiAJCQkJMEY0OTY2QTUxREI0MEM0MzAwQTI3NEJCIC8qIEpTRE9NUG9p
bnQuaCAqLywKIAkJCQkwRjQ5NjZBNjFEQjQwQzQzMDBBMjc0QkIgLyogSlNET01Qb2ludEluaXQu
Y3BwICovLApAQCAtMjI3MzEsOCArMjI2OTYsNiBAQAogCQkJCTlCMDk4QkU3MUYzRDZBRjYwMDJE
RDU2MiAvKiBKU1N0cmluZ0NhbGxiYWNrLmggKi8sCiAJCQkJNjVERjMxRUYwOUQxQ0M2MDAwMEJF
MzI1IC8qIEpTVGV4dC5jcHAgKi8sCiAJCQkJNjVERjMxRjAwOUQxQ0M2MDAwMEJFMzI1IC8qIEpT
VGV4dC5oICovLAotCQkJCUQ3NjEzQUMyMTQ3NTNFNTYwMERCODYwNiAvKiBKU1dlYktpdE5hbWVk
Rmxvdy5jcHAgKi8sCi0JCQkJRDc2MTNBQzMxNDc1M0U1NjAwREI4NjA2IC8qIEpTV2ViS2l0TmFt
ZWRGbG93LmggKi8sCiAJCQkJODNGNTcwQUUxQzUzMjY4RTAwN0ZENkNCIC8qIEpTWE1MRG9jdW1l
bnQuY3BwICovLAogCQkJCTgzRjU3MEFEMUM1MzI2OEUwMDdGRDZDQiAvKiBKU1hNTERvY3VtZW50
LmggKi8sCiAJCQkpOwpAQCAtMjU4NDksOSArMjU4MTIsNiBAQAogCQkJCTQ5ODM5MTU1MEYxRTc3
NjkwMEMyMzc4MiAvKiBXZWJLaXRDU1NNYXRyaXguY3BwICovLAogCQkJCTQ5ODM5MTU2MEYxRTc3
NjkwMEMyMzc4MiAvKiBXZWJLaXRDU1NNYXRyaXguaCAqLywKIAkJCQk0OTgzOTE1NzBGMUU3NzY5
MDBDMjM3ODIgLyogV2ViS2l0Q1NTTWF0cml4LmlkbCAqLywKLQkJCQk4QUE2MUNGRDE0NEQ1OTVC
MDBGMzczNTAgLyogV2ViS2l0Q1NTUmVnaW9uUnVsZS5jcHAgKi8sCi0JCQkJOEFBNjFDRkUxNDRE
NTk1QjAwRjM3MzUwIC8qIFdlYktpdENTU1JlZ2lvblJ1bGUuaCAqLywKLQkJCQk4QUQwQTU1NjE0
Qzg3NDI1MDAwRDgzQzUgLyogV2ViS2l0Q1NTUmVnaW9uUnVsZS5pZGwgKi8sCiAJCQkJM0ZGRkY5
QTYxNTlEOUE1NTAwMjBCQkQ1IC8qIFdlYktpdENTU1ZpZXdwb3J0UnVsZS5jcHAgKi8sCiAJCQkJ
M0ZGRkY5QTcxNTlEOUE1NTAwMjBCQkQ1IC8qIFdlYktpdENTU1ZpZXdwb3J0UnVsZS5oICovLAog
CQkJCTNGMkIzM0UzMTY1QUJEMzUwMEUzOTg3QyAvKiBXZWJLaXRDU1NWaWV3cG9ydFJ1bGUuaWRs
ICovLApAQCAtMjU5MzYsNyArMjU4OTYsNiBAQAogCQkJCTA4ODUwNjdFMTFEQTA0NUIwMDE4MkI5
OCAvKiBQYWludFBoYXNlLmggKi8sCiAJCQkJQjJCMUY3MTQwRDAwQ0FBODAwNEFFQTY0IC8qIFBv
aW50ZXJFdmVudHNIaXRSdWxlcy5jcHAgKi8sCiAJCQkJQjJCMUY3MTUwRDAwQ0FBODAwNEFFQTY0
IC8qIFBvaW50ZXJFdmVudHNIaXRSdWxlcy5oICovLAotCQkJCTZDNzBBODE0MTc3MDdDNDkwMDlB
NDQ2RSAvKiBSZWdpb25PdmVyc2V0U3RhdGUuaCAqLywKIAkJCQlCNTlFRDIzQTE4MjcyNjc5MDA2
RDU2NEMgLyogUmVuZGVyQW5jZXN0b3JJdGVyYXRvci5oICovLAogCQkJCTdDRDQ5NENBMUE4NkVC
MUQwMDBBODdFQyAvKiBSZW5kZXJBdHRhY2htZW50LmNwcCAqLywKIAkJCQk3Q0Q0OTRDQjFBODZF
QjFEMDAwQTg3RUMgLyogUmVuZGVyQXR0YWNobWVudC5oICovLApAQCAtMjYyOTMsOSArMjYyNTIs
NiBAQAogCQkJCUE4MTg1RjM2MDk3NjU3NjUwMDU4MjZEOSAvKiBET01JbXBsZW1lbnRhdGlvbi5j
cHAgKi8sCiAJCQkJQTgxODVGMzMwOTc2NTc2NTAwNTgyNkQ5IC8qIERPTUltcGxlbWVudGF0aW9u
LmggKi8sCiAJCQkJOTNFRUMxRTkwOUMyODc3NzAwQzUxNUQxIC8qIERPTUltcGxlbWVudGF0aW9u
LmlkbCAqLywKLQkJCQk1MkI2QzlCRDE1RTNGNERGMDA2OTBCMDUgLyogRE9NTmFtZWRGbG93Q29s
bGVjdGlvbi5jcHAgKi8sCi0JCQkJNTJCNkM5QkUxNUUzRjRERjAwNjkwQjA1IC8qIERPTU5hbWVk
Rmxvd0NvbGxlY3Rpb24uaCAqLywKLQkJCQk1MkI2QzlCRjE1RTNGNERGMDA2OTBCMDUgLyogRE9N
TmFtZWRGbG93Q29sbGVjdGlvbi5pZGwgKi8sCiAJCQkJMEY0OTY2OTkxREI0MDhDMTAwQTI3NEJC
IC8qIERPTVBvaW50LmggKi8sCiAJCQkJMEY0OTY2OUExREI0MDhDMTAwQTI3NEJCIC8qIERPTVBv
aW50LmlkbCAqLywKIAkJCQkwRjQ5NjZBMjFEQjQwOTEwMDBBMjc0QkIgLyogRE9NUG9pbnRJbml0
LmggKi8sCkBAIC0yNjQ0Myw4ICsyNjM5OSw2IEBACiAJCQkJQzZGMDhGQjkxNDMwRkU4RjAwNjg1
ODQ5IC8qIE11dGF0aW9uUmVjb3JkLmNwcCAqLywKIAkJCQlDNkYwOEZCQTE0MzBGRThGMDA2ODU4
NDkgLyogTXV0YXRpb25SZWNvcmQuaCAqLywKIAkJCQlDNkYwOEZCQjE0MzBGRThGMDA2ODU4NDkg
LyogTXV0YXRpb25SZWNvcmQuaWRsICovLAotCQkJCTUyQjZDOUMwMTVFM0Y0REYwMDY5MEIwNSAv
KiBOYW1lZEZsb3dDb2xsZWN0aW9uLmNwcCAqLywKLQkJCQk1MkI2QzlDMTE1RTNGNERGMDA2OTBC
MDUgLyogTmFtZWRGbG93Q29sbGVjdGlvbi5oICovLAogCQkJCUJDRjM0QTM2MTFBMjMxQ0QwMEM3
MTgwNCAvKiBOYW1lZE5vZGVNYXAuY3BwICovLAogCQkJCUE4MTg3MjE4MDk3N0QzQzAwMDU4MjZE
OSAvKiBOYW1lZE5vZGVNYXAuaCAqLywKIAkJCQk4NUFDQTlGOTBBOUI2MzEwMDA2NzFFOTAgLyog
TmFtZWROb2RlTWFwLmlkbCAqLywKQEAgLTI2NjIzLDkgKzI2NTc3LDYgQEAKIAkJCQkzMUMwRkYx
QjBFNENFQjZFMDA3RDZGRTUgLyogV2ViS2l0QW5pbWF0aW9uRXZlbnQuY3BwICovLAogCQkJCTMx
QzBGRjFDMEU0Q0VCNkUwMDdENkZFNSAvKiBXZWJLaXRBbmltYXRpb25FdmVudC5oICovLAogCQkJ
CTMxQzBGRjFEMEU0Q0VCNkUwMDdENkZFNSAvKiBXZWJLaXRBbmltYXRpb25FdmVudC5pZGwgKi8s
Ci0JCQkJRDc2MTNBNEUxNDc0RjEzRjAwREI4NjA2IC8qIFdlYktpdE5hbWVkRmxvdy5jcHAgKi8s
Ci0JCQkJRDc2MTNBNEQxNDc0RjEzRjAwREI4NjA2IC8qIFdlYktpdE5hbWVkRmxvdy5oICovLAot
CQkJCUQ3NjEzQTRBMTQ3NEVFOTUwMERCODYwNiAvKiBXZWJLaXROYW1lZEZsb3cuaWRsICovLAog
CQkJCTMxQzBGRjFFMEU0Q0VCNkUwMDdENkZFNSAvKiBXZWJLaXRUcmFuc2l0aW9uRXZlbnQuY3Bw
ICovLAogCQkJCTMxQzBGRjFGMEU0Q0VCNkUwMDdENkZFNSAvKiBXZWJLaXRUcmFuc2l0aW9uRXZl
bnQuaCAqLywKIAkJCQkzMUMwRkYyMDBFNENFQjZFMDA3RDZGRTUgLyogV2ViS2l0VHJhbnNpdGlv
bkV2ZW50LmlkbCAqLywKQEAgLTI3NzYyLDcgKzI3NzEzLDYgQEAKIAkJCQk4MzZBQ0VDMzFFQ0E2
MkM4MDA0QkQwMTIgLyogRE9NTWF0cml4UmVhZE9ubHkuaCBpbiBIZWFkZXJzICovLAogCQkJCUE5
QzZFNEU0MEQ3NDVFMDUwMDY0NDJFOSAvKiBET01NaW1lVHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTlDNkU0RTgwRDc0NUUxODAwNjQ0MkU5IC8qIERPTU1pbWVUeXBlQXJyYXkuaCBpbiBIZWFk
ZXJzICovLAotCQkJCTUyQjZDOUMzMTVFM0Y0REYwMDY5MEIwNSAvKiBET01OYW1lZEZsb3dDb2xs
ZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUNFNTNFODBBOEQxOEU3MDAyMjk0N0QgLyog
RE9NUGFyc2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QTU0ODgxNzE0RTQzMkExMDA2QUUwNUEg
LyogRE9NUGF0Y2hTdXBwb3J0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBOUM2RTRFQzBENzQ1RTJC
MDA2NDQyRTkgLyogRE9NUGx1Z2luLmggaW4gSGVhZGVycyAqLywKQEAgLTI4NTQ3LDcgKzI4NDk3
LDYgQEAKIAkJCQk4MzZBQ0VENjFFQ0FBQjE5MDA0QkQwMTIgLyogSlNET01NYXRyaXhSZWFkT25s
eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTlEMjQ4MDcwRDc1N0U3RDAwRkRGOTU5IC8qIEpTRE9N
TWltZVR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE5RDI0ODA5MEQ3NTdFN0QwMEZERjk1OSAv
KiBKU0RPTU1pbWVUeXBlQXJyYXkuaCBpbiBIZWFkZXJzICovLAotCQkJCTUyQ0NBOUUzMTVFM0Y2
MkMwMDUzQzc3RiAvKiBKU0RPTU5hbWVkRmxvd0NvbGxlY3Rpb24uaCBpbiBIZWFkZXJzICovLAog
CQkJCTdDODEzOUE3MUVENjI4NzQwMENFMjZFOCAvKiBKU0RPTU9wZXJhdGlvbi5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJN0M4MTM5QTgxRUQ2Mjg3NDAwQ0UyNkU4IC8qIEpTRE9NT3BlcmF0aW9uUmV0
dXJuaW5nUHJvbWlzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFDRTUzRTAwQThEMTg4MTAwMjI5
NDdEIC8qIEpTRE9NUGFyc2VyLmggaW4gSGVhZGVycyAqLywKQEAgLTI5MTQ4LDcgKzI5MDk3LDYg
QEAKIAkJCQkzMUEwODk4QzFFNzM4RDVBMDAzQjY2MDkgLyogSlNXZWJHUFVUZXh0dXJlRGVzY3Jp
cHRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzFDMEZGM0UwRTRDRUZBQzAwN0Q2RkU1IC8qIEpT
V2ViS2l0QW5pbWF0aW9uRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5ODM5MTQwMEYxRTc2
NzUwMEMyMzc4MiAvKiBKU1dlYktpdENTU01hdHJpeC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJOEFE
MEE1OTUxNEM4ODMzNjAwMEQ4M0M1IC8qIEpTV2ViS2l0Q1NTUmVnaW9uUnVsZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJM0YyQjMzRUYxNjVBRjE1NjAwRTM5ODdDIC8qIEpTV2ViS2l0Q1NTVmlld3Bv
cnRSdWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQk3Q0M2OTk0MTE5MUVDNUY1MDBBRjIyNzAgLyog
SlNXZWJLaXROYW1lc3BhY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGREE3QzI3MTg4MzMzMzIw
MEM5NTRCNSAvKiBKU1dlYktpdFBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5RXZlbnQuaCBpbiBI
ZWFkZXJzICovLApAQCAtMjk0MTcsNyArMjkzNjUsNiBAQAogCQkJCUQ2RTUyOEE0MTQ5QTkyNkQw
MEVGRTFGMyAvKiBNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRDZFMjc2QjAxNDYzNzQ1NTAwMUQyODBBIC8qIE11dGF0aW9uT2JzZXJ2ZXJSZWdpc3Ry
YXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUM2RjA4RkJEMTQzMEZFOEYwMDY4NTg0OSAvKiBN
dXRhdGlvblJlY29yZC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTJCNkM5QzYxNUUzRjRERjAwNjkw
QjA1IC8qIE5hbWVkRmxvd0NvbGxlY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTMxNEJFM0E3
MUIzMTAzRkIwMDE0MTk4MiAvKiBOYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUE4MTg3MjIzMDk3N0QzQzAwMDU4MjZEOSAvKiBOYW1lZE5vZGVNYXAuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE4MTg3MjFFMDk3N0QzQzAwMDU4MjZEOSAvKiBOYW1lTm9kZUxpc3Qu
aCBpbiBIZWFkZXJzICovLApAQCAtMjk3MTcsNyArMjk2NjQsNiBAQAogCQkJCTVDRUVFNDM2MUY1
RjhGMjEwMDE0QTVGNSAvKiBSZWN0RWRnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTk4MzFBRTRB
MTU0MjI1QzkwMEZFMjY0NCAvKiBSZWZlcnJlclBvbGljeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QkNBQjQxODIxM0UzNTZFODAwRDhBQUYzIC8qIFJlZ2lvbi5oIGluIEhlYWRlcnMgKi8sCi0JCQkJ
NkNEREU4RDAxNzcwQkIyMjAwMTZFMDcyIC8qIFJlZ2lvbk92ZXJzZXRTdGF0ZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMjZCOTk5OEYxODAzQUU3MjAwRDAxMTIxIC8qIFJlZ2lzdGVyQWxsb2NhdG9y
LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NTAzMUI0QzBBNDRFRkM3MDBGOTkyRTAgLyogUmVnaXN0
ZXJlZEV2ZW50TGlzdGVuZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1NzhGNDNGMURFMEI2MzAw
MDNERkM2QSAvKiBSZWplY3RlZFByb21pc2VUcmFja2VyLmggaW4gSGVhZGVycyAqLywKQEAgLTMw
NzgzLDcgKzMwNzI5LDYgQEAKIAkJCQkzMUMwRkYyMjBFNENFQjZFMDA3RDZGRTUgLyogV2ViS2l0
QW5pbWF0aW9uRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTVERkVCQUI3MTg1OTJCNkQwMEM3
NUJFQiAvKiBXZWJLaXRBdmFpbGFiaWxpdHkuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5ODM5MTU5
MEYxRTc3NjkwMEMyMzc4MiAvKiBXZWJLaXRDU1NNYXRyaXguaCBpbiBIZWFkZXJzICovLAotCQkJ
CThBQTYxRDAwMTQ0RDU5NUIwMEYzNzM1MCAvKiBXZWJLaXRDU1NSZWdpb25SdWxlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkzRkZGRjlBOTE1OUQ5QTU1MDAyMEJCRDUgLyogV2ViS2l0Q1NTVmlld3Bv
cnRSdWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDA2MjE0NTFEQTYzOUJBMDBBN0ZCMjYgLyog
V2ViS2l0TWVkaWFLZXlNZXNzYWdlRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTJEMDYyMTUx
MURBNjNBOUYwMEE3RkIyNiAvKiBXZWJLaXRNZWRpYUtleU5lZWRlZEV2ZW50LmggaW4gSGVhZGVy
cyAqLywKQEAgLTMxODM3LDcgKzMxNzgyLDYgQEAKIAkJCQk4MzZBQ0VDMjFFQ0E2MkM4MDA0QkQw
MTIgLyogRE9NTWF0cml4UmVhZE9ubHkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTlDNkU0RTMw
RDc0NUUwNTAwNjQ0MkU5IC8qIERPTU1pbWVUeXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE5
QzZFNEU3MEQ3NDVFMTgwMDY0NDJFOSAvKiBET01NaW1lVHlwZUFycmF5LmNwcCBpbiBTb3VyY2Vz
ICovLAotCQkJCTUyQjZDOUMyMTVFM0Y0REYwMDY5MEIwNSAvKiBET01OYW1lZEZsb3dDb2xsZWN0
aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBQ0U1M0U3MEE4RDE4RTcwMDIyOTQ3RCAvKiBE
T01QYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0E1NDg4MTgxNEU0MzJBMTAwNkFFMDVB
IC8qIERPTVBhdGNoU3VwcG9ydC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOUM2RTRFQjBENzQ1
RTJCMDA2NDQyRTkgLyogRE9NUGx1Z2luLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzI1NzIsNyAr
MzI1MTYsNiBAQAogCQkJCTgzNkFDRUQ1MUVDQUFCMTkwMDRCRDAxMiAvKiBKU0RPTU1hdHJpeFJl
YWRPbmx5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE5RDI0ODA2MEQ3NTdFN0QwMEZERjk1OSAv
KiBKU0RPTU1pbWVUeXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE5RDI0ODA4MEQ3NTdFN0Qw
MEZERjk1OSAvKiBKU0RPTU1pbWVUeXBlQXJyYXkuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNTJD
Q0E5RTIxNUUzRjYyQzAwNTNDNzdGIC8qIEpTRE9NTmFtZWRGbG93Q29sbGVjdGlvbi5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkxQUNFNTNERjBBOEQxODgxMDAyMjk0N0QgLyogSlNET01QYXJzZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTlEMjQ3RkUwRDc1N0U2OTAwRkRGOTU5IC8qIEpTRE9N
UGx1Z2luLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE5RDI0ODAwMEQ3NTdFNjkwMEZERjk1OSAv
KiBKU0RPTVBsdWdpbkFycmF5LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzMyMjUsMTQgKzMzMTY4
LDEyIEBACiAJCQkJMzFBMDg5OEExRTczOEQ1QTAwM0I2NjA5IC8qIEpTV2ViR1BVVGV4dHVyZURl
c2NyaXB0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzFDMEZGM0QwRTRDRUZBQzAwN0Q2RkU1
IC8qIEpTV2ViS2l0QW5pbWF0aW9uRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDk4Mzkx
M0YwRjFFNzY3NTAwQzIzNzgyIC8qIEpTV2ViS2l0Q1NTTWF0cml4LmNwcCBpbiBTb3VyY2VzICov
LAotCQkJCThBRDBBNTk0MTRDODgzMzYwMDBEODNDNSAvKiBKU1dlYktpdENTU1JlZ2lvblJ1bGUu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJM0YyQjMzRUUxNjVBRjE1NjAwRTM5ODdDIC8qIEpTV2Vi
S2l0Q1NTVmlld3BvcnRSdWxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNEQTk4REEzMTYwMTQ2
NDEwMEZFQTNCMSAvKiBKU1dlYktpdE1lZGlhS2V5RXJyb3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQ0RBOThEREYxNjAyNkEzNzAwRkVBM0IxIC8qIEpTV2ViS2l0TWVkaWFLZXlNZXNzYWdlRXZl
bnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RBOThERTAxNjAyNkEzNzAwRkVBM0IxIC8qIEpT
V2ViS2l0TWVkaWFLZXlOZWVkZWRFdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDREE5OEUw
NDE2MDM5RTFBMDBGRUEzQjEgLyogSlNXZWJLaXRNZWRpYUtleXMuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQ0RBOThFMDYxNjAzOUUxRjAwRkVBM0IxIC8qIEpTV2ViS2l0TWVkaWFLZXlTZXNzaW9u
LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUQ3NjEzQUM0MTQ3NTNFNTYwMERCODYwNiAvKiBKU1dl
YktpdE5hbWVkRmxvdy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3Q0M2OTk0MDE5MUVDNUY1MDBB
RjIyNzAgLyogSlNXZWJLaXROYW1lc3BhY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZEQTdD
MjYxODgzMzMzMjAwQzk1NEI1IC8qIEpTV2ViS2l0UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlF
dmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0OTRCRDc5RDBGNTVDOTRDMDA3NDc4MjggLyog
SlNXZWJLaXRQb2ludC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMzNDc5LDcgKzMzNDIwLDYgQEAK
IAkJCQlENkU1MjhBMzE0OUE5MjZEMDBFRkUxRjMgLyogTXV0YXRpb25PYnNlcnZlckludGVyZXN0
R3JvdXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRDZFMjc2QUYxNDYzNzQ1NTAwMUQyODBBIC8q
IE11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzZG
MDhGQkMxNDMwRkU4RjAwNjg1ODQ5IC8qIE11dGF0aW9uUmVjb3JkLmNwcCBpbiBTb3VyY2VzICov
LAotCQkJCTUyQjZDOUM1MTVFM0Y0REYwMDY5MEIwNSAvKiBOYW1lZEZsb3dDb2xsZWN0aW9uLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTMxNEJFM0E2MUIzMTAzRkIwMDE0MTk4MiAvKiBOYW1lZElt
YWdlR2VuZXJhdGVkSW1hZ2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNGMzRBMzcxMUEyMzFD
RDAwQzcxODA0IC8qIE5hbWVkTm9kZU1hcC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBODE4NzIy
NDA5NzdEM0MwMDA1ODI2RDkgLyogTmFtZU5vZGVMaXN0LmNwcCBpbiBTb3VyY2VzICovLApAQCAt
MzQ1ODcsMTQgKzM0NTI3LDEyIEBACiAJCQkJRjQ4MjIzMTAxRTM4NjlCODAwNjZGQzc5IC8qIFdl
Ykl0ZW1Qcm92aWRlclBhc3RlYm9hcmQubW0gaW4gU291cmNlcyAqLywKIAkJCQkzMUMwRkYyMTBF
NENFQjZFMDA3RDZGRTUgLyogV2ViS2l0QW5pbWF0aW9uRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNDk4MzkxNTgwRjFFNzc2OTAwQzIzNzgyIC8qIFdlYktpdENTU01hdHJpeC5jcHAgaW4g
U291cmNlcyAqLywKLQkJCQk4QUE2MUNGRjE0NEQ1OTVCMDBGMzczNTAgLyogV2ViS2l0Q1NTUmVn
aW9uUnVsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzRkZGRjlBODE1OUQ5QTU1MDAyMEJCRDUg
LyogV2ViS2l0Q1NTVmlld3BvcnRSdWxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBMTQxNEI1
MTNBMEYwNTAwMDE5OTk2QyAvKiBXZWJLaXRGb250RmFtaWx5TmFtZXMuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMkQwNjIxNDQxREE2MzlCNjAwQTdGQjI2IC8qIFdlYktpdE1lZGlhS2V5TWVzc2Fn
ZUV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEMDYyMTUyMURBNjNBQTIwMEE3RkIyNiAv
KiBXZWJLaXRNZWRpYUtleU5lZWRlZEV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEMDYy
MTREMURBNjNBOEIwMEE3RkIyNiAvKiBXZWJLaXRNZWRpYUtleXMuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMkQwNjIxNEYxREE2M0E5MTAwQTdGQjI2IC8qIFdlYktpdE1lZGlhS2V5U2Vzc2lvbi5j
cHAgaW4gU291cmNlcyAqLywKLQkJCQlENzYxM0E1MDE0NzRGMTNGMDBEQjg2MDYgLyogV2ViS2l0
TmFtZWRGbG93LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDNDhBNkQwMTkxQzlENjUwMDAyNjY3
NCAvKiBXZWJLaXROYW1lc3BhY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTVERUJEQTMxNkZC
OTA4NzAwODM2RkUwIC8qIFdlYktpdFBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5RXZlbnQuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMzFDMEZGMjQwRTRDRUI2RTAwN0Q2RkU1IC8qIFdlYktpdFRy
YW5zaXRpb25FdmVudC5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTQ1NTUnVsZUN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNDU1NSdWxlQ3VzdG9tLmNwcAkocmV2aXNpb24gMjIyMjA0KQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NSdWxlQ3VzdG9tLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDYsOSArNDYsNyBAQAogI2luY2x1ZGUgIkpTQ1NTU3VwcG9ydHNSdWxlLmgiCiAj
aW5jbHVkZSAiSlNOb2RlLmgiCiAjaW5jbHVkZSAiSlNTdHlsZVNoZWV0Q3VzdG9tLmgiCi0jaW5j
bHVkZSAiSlNXZWJLaXRDU1NSZWdpb25SdWxlLmgiCiAjaW5jbHVkZSAiSlNXZWJLaXRDU1NWaWV3
cG9ydFJ1bGUuaCIKLSNpbmNsdWRlICJXZWJLaXRDU1NSZWdpb25SdWxlLmgiCiAjaW5jbHVkZSAi
V2ViS2l0Q1NTVmlld3BvcnRSdWxlLmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CkBAIC04NSwx
MCArODMsNiBAQCBKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoRXhlY1N0YXRlKiwgSlNECiAgICAg
Y2FzZSBDU1NSdWxlOjpXRUJLSVRfVklFV1BPUlRfUlVMRToKICAgICAgICAgcmV0dXJuIGNyZWF0
ZVdyYXBwZXI8V2ViS2l0Q1NTVmlld3BvcnRSdWxlPihnbG9iYWxPYmplY3QsIFdURk1vdmUocnVs
ZSkpOwogI2VuZGlmCi0jaWYgRU5BQkxFKENTU19SRUdJT05TKQotICAgIGNhc2UgQ1NTUnVsZTo6
V0VCS0lUX1JFR0lPTl9SVUxFOgotICAgICAgICByZXR1cm4gY3JlYXRlV3JhcHBlcjxXZWJLaXRD
U1NSZWdpb25SdWxlPihnbG9iYWxPYmplY3QsIFdURk1vdmUocnVsZSkpOwotI2VuZGlmCiAgICAg
ZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIGNyZWF0ZVdyYXBwZXI8Q1NTUnVsZT4oZ2xvYmFsT2Jq
ZWN0LCBXVEZNb3ZlKHJ1bGUpKTsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Q29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAkocmV2aXNpb24gMjIyMjA0KQor
KysgU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQxNywxNCArNDE3LDYgQEAgc3RhdGljIGNvbnN0IENTU1Byb3BlcnR5
SUQgY29tcHV0ZWRQcm9wZQogICAgIENTU1Byb3BlcnR5V2Via2l0VXNlckRyYWcsCiAgICAgQ1NT
UHJvcGVydHlXZWJraXRVc2VyTW9kaWZ5LAogICAgIENTU1Byb3BlcnR5V2Via2l0VXNlclNlbGVj
dCwKLSNpZiBFTkFCTEUoQ1NTX1JFR0lPTlMpCi0gICAgQ1NTUHJvcGVydHlXZWJraXRGbG93SW50
bywKLSAgICBDU1NQcm9wZXJ0eVdlYmtpdEZsb3dGcm9tLAotICAgIENTU1Byb3BlcnR5V2Via2l0
UmVnaW9uQnJlYWtBZnRlciwKLSAgICBDU1NQcm9wZXJ0eVdlYmtpdFJlZ2lvbkJyZWFrQmVmb3Jl
LAotICAgIENTU1Byb3BlcnR5V2Via2l0UmVnaW9uQnJlYWtJbnNpZGUsCi0gICAgQ1NTUHJvcGVy
dHlXZWJraXRSZWdpb25GcmFnbWVudCwKLSNlbmRpZgogICAgIENTU1Byb3BlcnR5U2hhcGVJbWFn
ZVRocmVzaG9sZCwKICAgICBDU1NQcm9wZXJ0eVNoYXBlTWFyZ2luLAogICAgIENTU1Byb3BlcnR5
U2hhcGVPdXRzaWRlLApAQCAtMTkxNiw4ICsxOTA4LDYgQEAgc3RhdGljIFJlZjxDU1NWYWx1ZUxp
c3Q+IGNvbnRlbnRUb0NTU1ZhbAogICAgICAgICBlbHNlIGlmIChpczxUZXh0Q29udGVudERhdGE+
KCpjb250ZW50RGF0YSkpCiAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNy
ZWF0ZVZhbHVlKGRvd25jYXN0PFRleHRDb250ZW50RGF0YT4oKmNvbnRlbnREYXRhKS50ZXh0KCks
IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfU1RSSU5HKSk7CiAgICAgfQotICAgIGlmIChzdHlsZS5o
YXNGbG93RnJvbSgpKQotICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZh
bHVlKHN0eWxlLnJlZ2lvblRocmVhZCgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1NUUklORykp
OwogICAgIHJldHVybiBsaXN0OwogfQogCkBAIC0yMjkwLDI0ICsyMjgwLDYgQEAgc3RhdGljIENT
U1ZhbHVlSUQgY29udmVydFRvQ29sdW1uQnJlYWsoQgogICAgIHJldHVybiBDU1NWYWx1ZUF1dG87
CiB9CiAKLSNpZiBFTkFCTEUoQ1NTX1JFR0lPTlMpCi1zdGF0aWMgQ1NTVmFsdWVJRCBjb252ZXJ0
VG9SZWdpb25CcmVhayhCcmVha0JldHdlZW4gdmFsdWUpCi17Ci0gICAgaWYgKHZhbHVlID09IFJl
Z2lvbkJyZWFrQmV0d2VlbikKLSAgICAgICAgcmV0dXJuIENTU1ZhbHVlQWx3YXlzOwotICAgIGlm
ICh2YWx1ZSA9PSBBdm9pZEJyZWFrQmV0d2VlbiB8fCB2YWx1ZSA9PSBBdm9pZFJlZ2lvbkJyZWFr
QmV0d2VlbikKLSAgICAgICAgcmV0dXJuIENTU1ZhbHVlQXZvaWQ7Ci0gICAgcmV0dXJuIENTU1Zh
bHVlQXV0bzsKLX0KLSAgICAKLXN0YXRpYyBDU1NWYWx1ZUlEIGNvbnZlcnRUb1JlZ2lvbkJyZWFr
KEJyZWFrSW5zaWRlIHZhbHVlKQotewotICAgIGlmICh2YWx1ZSA9PSBBdm9pZEJyZWFrSW5zaWRl
IHx8IHZhbHVlID09IEF2b2lkUmVnaW9uQnJlYWtJbnNpZGUpCi0gICAgICAgIHJldHVybiBDU1NW
YWx1ZUF2b2lkOwotICAgIHJldHVybiBDU1NWYWx1ZUF1dG87Ci19Ci0jZW5kaWYKLQogc3RhdGlj
IGlubGluZSBib29sIGlzTm9uUmVwbGFjZWRJbmxpbmUoUmVuZGVyT2JqZWN0JiByZW5kZXJlcikK
IHsKICAgICByZXR1cm4gcmVuZGVyZXIuaXNJbmxpbmUoKSAmJiAhcmVuZGVyZXIuaXNSZXBsYWNl
ZCgpOwpAQCAtMjk0NSwxNCArMjkxNyw2IEBAIFJlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHls
ZUV4dHJhY3RvcjoKICAgICAgICAgICAgIHJldHVybiB6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKHN0
eWxlLT5jb2x1bW5XaWR0aCgpLCAqc3R5bGUpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5VGFi
U2l6ZToKICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUt
PnRhYlNpemUoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpOwotI2lmIEVOQUJMRShD
U1NfUkVHSU9OUykKLSAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFJlZ2lvbkJyZWFrQWZ0
ZXI6Ci0gICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKGNvbnZlcnRU
b1JlZ2lvbkJyZWFrKHN0eWxlLT5icmVha0FmdGVyKCkpKTsKLSAgICAgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdFJlZ2lvbkJyZWFrQmVmb3JlOgotICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVl
UG9vbC5jcmVhdGVWYWx1ZShjb252ZXJ0VG9SZWdpb25CcmVhayhzdHlsZS0+YnJlYWtCZWZvcmUo
KSkpOwotICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0UmVnaW9uQnJlYWtJbnNpZGU6Ci0g
ICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKGNvbnZlcnRUb1JlZ2lv
bkJyZWFrKHN0eWxlLT5icmVha0luc2lkZSgpKSk7Ci0jZW5kaWYKICAgICAgICAgY2FzZSBDU1NQ
cm9wZXJ0eUN1cnNvcjogewogICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbGlzdDsK
ICAgICAgICAgICAgIGF1dG8qIGN1cnNvcnMgPSBzdHlsZS0+Y3Vyc29ycygpOwpAQCAtMzgyOCwx
OCArMzc5Miw2IEBAIFJlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3RvcjoKICAg
ICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKGRvd25j
YXN0PEJveENsaXBQYXRoT3BlcmF0aW9uPigqb3BlcmF0aW9uKS5yZWZlcmVuY2VCb3goKSkpOwog
ICAgICAgICAgICAgcmV0dXJuIFdURk1vdmUobGlzdCk7CiAgICAgICAgIH0KLSNpZiBFTkFCTEUo
Q1NTX1JFR0lPTlMpCi0gICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRGbG93SW50bzoKLSAg
ICAgICAgICAgIGlmICghc3R5bGUtPmhhc0Zsb3dJbnRvKCkpCi0gICAgICAgICAgICAgICAgcmV0
dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVOb25lKTsKLSAg
ICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUtPmZsb3dUaHJl
YWQoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19TVFJJTkcpOwotICAgICAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0Rmxvd0Zyb206Ci0gICAgICAgICAgICBpZiAoIXN0eWxlLT5oYXNGbG93RnJv
bSgpKQotICAgICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmll
clZhbHVlKENTU1ZhbHVlTm9uZSk7Ci0gICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNy
ZWF0ZVZhbHVlKHN0eWxlLT5yZWdpb25UaHJlYWQoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19T
VFJJTkcpOwotICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0UmVnaW9uRnJhZ21lbnQ6Ci0g
ICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHN0eWxlLT5yZWdpb25G
cmFnbWVudCgpKTsKLSNlbmRpZgogICAgICAgICBjYXNlIENTU1Byb3BlcnR5U2hhcGVNYXJnaW46
CiAgICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHN0eWxlLT5zaGFw
ZU1hcmdpbigpLCAqc3R5bGUpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5U2hhcGVJbWFnZVRo
cmVzaG9sZDoKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZU1hcHBp
bmdzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVl
TWFwcGluZ3MuaAkocmV2aXNpb24gMjIyMjA0KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1By
aW1pdGl2ZVZhbHVlTWFwcGluZ3MuaAkod29ya2luZyBjb3B5KQpAQCAtMjI0NSwxOCArMjI0NSwx
MiBAQCB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTCiAgICAgY2FzZSBB
dm9pZFBhZ2VCcmVha0JldHdlZW46CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVl
QXZvaWRQYWdlOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEF2b2lkUmVnaW9uQnJlYWtCZXR3
ZWVuOgotICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUF2b2lkUmVnaW9uOwotICAg
ICAgICBicmVhazsKICAgICBjYXNlIENvbHVtbkJyZWFrQmV0d2VlbjoKICAgICAgICAgbV92YWx1
ZS52YWx1ZUlEID0gQ1NTVmFsdWVDb2x1bW47CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUGFn
ZUJyZWFrQmV0d2VlbjoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVQYWdlOwog
ICAgICAgICBicmVhazsKLSAgICBjYXNlIFJlZ2lvbkJyZWFrQmV0d2VlbjoKLSAgICAgICAgbV92
YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVSZWdpb247Ci0gICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
TGVmdFBhZ2VCcmVha0JldHdlZW46CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVl
TGVmdDsKICAgICAgICAgYnJlYWs7CkBAIC0yMjg1LDE0ICsyMjc5LDEwIEBAIHRlbXBsYXRlPD4g
aW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGUKICAgICAgICAgcmV0dXJuIEF2b2lkQ29sdW1u
QnJlYWtCZXR3ZWVuOwogICAgIGNhc2UgQ1NTVmFsdWVBdm9pZFBhZ2U6CiAgICAgICAgIHJldHVy
biBBdm9pZFBhZ2VCcmVha0JldHdlZW47Ci0gICAgY2FzZSBDU1NWYWx1ZUF2b2lkUmVnaW9uOgot
ICAgICAgICByZXR1cm4gQXZvaWRSZWdpb25CcmVha0JldHdlZW47CiAgICAgY2FzZSBDU1NWYWx1
ZUNvbHVtbjoKICAgICAgICAgcmV0dXJuIENvbHVtbkJyZWFrQmV0d2VlbjsKICAgICBjYXNlIENT
U1ZhbHVlUGFnZToKICAgICAgICAgcmV0dXJuIFBhZ2VCcmVha0JldHdlZW47Ci0gICAgY2FzZSBD
U1NWYWx1ZVJlZ2lvbjoKLSAgICAgICAgcmV0dXJuIFJlZ2lvbkJyZWFrQmV0d2VlbjsKICAgICBj
YXNlIENTU1ZhbHVlTGVmdDoKICAgICAgICAgcmV0dXJuIExlZnRQYWdlQnJlYWtCZXR3ZWVuOwog
ICAgIGNhc2UgQ1NTVmFsdWVSaWdodDoKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9w
ZXJ0aWVzLmpzb24KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnRp
ZXMuanNvbgkocmV2aXNpb24gMjIyMjA0KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3Bl
cnRpZXMuanNvbgkod29ya2luZyBjb3B5KQpAQCAtMTYzOSwxMCArMTYzOSw4IEBACiAgICAgICAg
ICAgICAgICAgInZlcnNvIiwKICAgICAgICAgICAgICAgICAiY29sdW1uIiwKICAgICAgICAgICAg
ICAgICAicGFnZSIsCi0gICAgICAgICAgICAgICAgInJlZ2lvbiIsCiAgICAgICAgICAgICAgICAg
ImF2b2lkLWNvbHVtbiIsCi0gICAgICAgICAgICAgICAgImF2b2lkLXBhZ2UiLAotICAgICAgICAg
ICAgICAgICJhdm9pZC1yZWdpb24iCisgICAgICAgICAgICAgICAgImF2b2lkLXBhZ2UiCiAgICAg
ICAgICAgICBdLAogICAgICAgICAgICAgImNvZGVnZW4tcHJvcGVydGllcyI6IHsKICAgICAgICAg
ICAgICAgICAiaW5pdGlhbCI6ICJpbml0aWFsQnJlYWtCZXR3ZWVuIgpAQCAtMTY2MiwxMCArMTY2
MCw4IEBACiAgICAgICAgICAgICAgICAgInZlcnNvIiwKICAgICAgICAgICAgICAgICAiY29sdW1u
IiwKICAgICAgICAgICAgICAgICAicGFnZSIsCi0gICAgICAgICAgICAgICAgInJlZ2lvbiIsCiAg
ICAgICAgICAgICAgICAgImF2b2lkLWNvbHVtbiIsCi0gICAgICAgICAgICAgICAgImF2b2lkLXBh
Z2UiLAotICAgICAgICAgICAgICAgICJhdm9pZC1yZWdpb24iCisgICAgICAgICAgICAgICAgImF2
b2lkLXBhZ2UiCiAgICAgICAgICAgICBdLAogICAgICAgICAgICAgImNvZGVnZW4tcHJvcGVydGll
cyI6IHsKICAgICAgICAgICAgICAgICAiaW5pdGlhbCI6ICJpbml0aWFsQnJlYWtCZXR3ZWVuIgpA
QCAtMTY4MCw4ICsxNjc2LDcgQEAKICAgICAgICAgICAgICAgICAiYXV0byIsCiAgICAgICAgICAg
ICAgICAgImF2b2lkIiwKICAgICAgICAgICAgICAgICAiYXZvaWQtY29sdW1uIiwKLSAgICAgICAg
ICAgICAgICAiYXZvaWQtcGFnZSIsCi0gICAgICAgICAgICAgICAgImF2b2lkLXJlZ2lvbiIKKyAg
ICAgICAgICAgICAgICAiYXZvaWQtcGFnZSIKICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAi
Y29kZWdlbi1wcm9wZXJ0aWVzIjogewogICAgICAgICAgICAgICAgICJpbml0aWFsIjogImluaXRp
YWxCcmVha0luc2lkZSIKQEAgLTYwOTUsOTUgKzYwOTAsNiBAQAogICAgICAgICAgICAgICAgICJ1
cmwiOiAiaHR0cHM6Ly93d3cudzMub3JnL1RSL2Nzcy11aS00LyNwcm9wZGVmLXVzZXItc2VsZWN0
IgogICAgICAgICAgICAgfQogICAgICAgICB9LAotICAgICAgICAiLXdlYmtpdC1mbG93LWludG8i
OiB7Ci0gICAgICAgICAgICAiY29kZWdlbi1wcm9wZXJ0aWVzIjogewotICAgICAgICAgICAgICAg
ICJuYW1lLWZvci1tZXRob2RzIjogIkZsb3dUaHJlYWQiLAotICAgICAgICAgICAgICAgICJjb252
ZXJ0ZXIiOiAiU3RyaW5nT3JOb25lIiwKLSAgICAgICAgICAgICAgICAiZW5hYmxlLWlmIjogIkVO
QUJMRV9DU1NfUkVHSU9OUyIKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAic3BlY2lmaWNh
dGlvbiI6IHsKLSAgICAgICAgICAgICAgICAiY2F0ZWdvcnkiOiAiY3NzLXJlZ2lvbnMiLAotICAg
ICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly93d3cudzMub3JnL1RSL2Nzcy1yZWdpb25zLTEv
I3Byb3BkZWYtZmxvdy1pbnRvIgotICAgICAgICAgICAgfQotICAgICAgICB9LAotICAgICAgICAi
LXdlYmtpdC1mbG93LWZyb20iOiB7Ci0gICAgICAgICAgICAiY29kZWdlbi1wcm9wZXJ0aWVzIjog
ewotICAgICAgICAgICAgICAgICJuYW1lLWZvci1tZXRob2RzIjogIlJlZ2lvblRocmVhZCIsCi0g
ICAgICAgICAgICAgICAgImNvbnZlcnRlciI6ICJTdHJpbmdPck5vbmUiLAotICAgICAgICAgICAg
ICAgICJlbmFibGUtaWYiOiAiRU5BQkxFX0NTU19SRUdJT05TIgotICAgICAgICAgICAgfSwKLSAg
ICAgICAgICAgICJzcGVjaWZpY2F0aW9uIjogewotICAgICAgICAgICAgICAgICJjYXRlZ29yeSI6
ICJjc3MtcmVnaW9ucyIsCi0gICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL3d3dy53My5v
cmcvVFIvY3NzLXJlZ2lvbnMtMS8jcHJvcGRlZi1mbG93LWZyb20iCi0gICAgICAgICAgICB9Ci0g
ICAgICAgIH0sCi0gICAgICAgICItd2Via2l0LXJlZ2lvbi1mcmFnbWVudCI6IHsKLSAgICAgICAg
ICAgICJ2YWx1ZXMiOiBbCi0gICAgICAgICAgICAgICAgImF1dG8iLAotICAgICAgICAgICAgICAg
ICJicmVhayIKLSAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAiY29kZWdlbi1wcm9wZXJ0aWVz
IjogewotICAgICAgICAgICAgICAgICJlbmFibGUtaWYiOiAiRU5BQkxFX0NTU19SRUdJT05TIgot
ICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICJzcGVjaWZpY2F0aW9uIjogewotICAgICAgICAg
ICAgICAgICJjYXRlZ29yeSI6ICJjc3MtcmVnaW9ucyIsCi0gICAgICAgICAgICAgICAgInVybCI6
ICJodHRwczovL3d3dy53My5vcmcvVFIvY3NzLXJlZ2lvbnMtMS8jcHJvcGRlZi1yZWdpb24tZnJh
Z21lbnQiCi0gICAgICAgICAgICB9Ci0gICAgICAgIH0sCi0gICAgICAgICItd2Via2l0LXJlZ2lv
bi1icmVhay1hZnRlciI6IHsKLSAgICAgICAgICAgICJ2YWx1ZXMiOiBbCi0gICAgICAgICAgICAg
ICAgImF1dG8iLAotICAgICAgICAgICAgICAgICJhbHdheXMiLAotICAgICAgICAgICAgICAgICJh
dm9pZCIsCi0gICAgICAgICAgICAgICAgImxlZnQiLAotICAgICAgICAgICAgICAgICJyaWdodCIK
LSAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAiY29kZWdlbi1wcm9wZXJ0aWVzIjogewotICAg
ICAgICAgICAgICAgICJpbml0aWFsIjogImluaXRpYWxCcmVha0JldHdlZW4iLAotICAgICAgICAg
ICAgICAgICJuYW1lLWZvci1tZXRob2RzIjogIkJyZWFrQWZ0ZXIiLAotICAgICAgICAgICAgICAg
ICJjb252ZXJ0ZXIiOiAiUmVnaW9uQnJlYWtCZXR3ZWVuIiwKLSAgICAgICAgICAgICAgICAiZW5h
YmxlLWlmIjogIkVOQUJMRV9DU1NfUkVHSU9OUyIKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAg
ICAic3BlY2lmaWNhdGlvbiI6IHsKLSAgICAgICAgICAgICAgICAiY2F0ZWdvcnkiOiAiY3NzLXJl
Z2lvbnMiLAotICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly93d3cudzMub3JnL1RSL2Nz
cy1yZWdpb25zLTEvI3Byb3BkZWYtYnJlYWstYWZ0ZXIiCi0gICAgICAgICAgICB9Ci0gICAgICAg
IH0sCi0gICAgICAgICItd2Via2l0LXJlZ2lvbi1icmVhay1iZWZvcmUiOiB7Ci0gICAgICAgICAg
ICAidmFsdWVzIjogWwotICAgICAgICAgICAgICAgICJhdXRvIiwKLSAgICAgICAgICAgICAgICAi
YWx3YXlzIiwKLSAgICAgICAgICAgICAgICAiYXZvaWQiLAotICAgICAgICAgICAgICAgICJsZWZ0
IiwKLSAgICAgICAgICAgICAgICAicmlnaHQiCi0gICAgICAgICAgICBdLAotICAgICAgICAgICAg
ImNvZGVnZW4tcHJvcGVydGllcyI6IHsKLSAgICAgICAgICAgICAgICAiaW5pdGlhbCI6ICJpbml0
aWFsQnJlYWtCZXR3ZWVuIiwKLSAgICAgICAgICAgICAgICAibmFtZS1mb3ItbWV0aG9kcyI6ICJC
cmVha0JlZm9yZSIsCi0gICAgICAgICAgICAgICAgImNvbnZlcnRlciI6ICJSZWdpb25CcmVha0Jl
dHdlZW4iLAotICAgICAgICAgICAgICAgICJlbmFibGUtaWYiOiAiRU5BQkxFX0NTU19SRUdJT05T
IgotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICJzcGVjaWZpY2F0aW9uIjogewotICAgICAg
ICAgICAgICAgICJjYXRlZ29yeSI6ICJjc3MtcmVnaW9ucyIsCi0gICAgICAgICAgICAgICAgInVy
bCI6ICJodHRwczovL3d3dy53My5vcmcvVFIvY3NzLXJlZ2lvbnMtMS8jcHJvcGRlZi1icmVhay1i
ZWZvcmUiCi0gICAgICAgICAgICB9Ci0gICAgICAgIH0sCi0gICAgICAgICItd2Via2l0LXJlZ2lv
bi1icmVhay1pbnNpZGUiOiB7Ci0gICAgICAgICAgICAidmFsdWVzIjogWwotICAgICAgICAgICAg
ICAgICJhdXRvIiwKLSAgICAgICAgICAgICAgICAiYXZvaWQiCi0gICAgICAgICAgICBdLAotICAg
ICAgICAgICAgImNvZGVnZW4tcHJvcGVydGllcyI6IHsKLSAgICAgICAgICAgICAgICAiaW5pdGlh
bCI6ICJpbml0aWFsQnJlYWtJbnNpZGUiLAotICAgICAgICAgICAgICAgICJuYW1lLWZvci1tZXRo
b2RzIjogIkJyZWFrSW5zaWRlIiwKLSAgICAgICAgICAgICAgICAiY29udmVydGVyIjogIlJlZ2lv
bkJyZWFrSW5zaWRlIiwKLSAgICAgICAgICAgICAgICAiZW5hYmxlLWlmIjogIkVOQUJMRV9DU1Nf
UkVHSU9OUyIKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAic3BlY2lmaWNhdGlvbiI6IHsK
LSAgICAgICAgICAgICAgICAiY2F0ZWdvcnkiOiAiY3NzLXJlZ2lvbnMiLAotICAgICAgICAgICAg
ICAgICJ1cmwiOiAiaHR0cHM6Ly93d3cudzMub3JnL1RSL2Nzcy1yZWdpb25zLTEvI3Byb3BkZWYt
YnJlYWstaW5zaWRlIgotICAgICAgICAgICAgfQotICAgICAgICB9LAogICAgICAgICAic2Nyb2xs
LXBhZGRpbmciOiB7CiAgICAgICAgICAgICAiY29kZWdlbi1wcm9wZXJ0aWVzIjogewogICAgICAg
ICAgICAgICAgICJlbmFibGUtaWYiOiAiRU5BQkxFX0NTU19TQ1JPTExfU05BUCIsCkBAIC02ODIy
LDEyICs2NzI4LDYgQEAKICAgICAgICAgICAgICJsb25nbmFtZSI6ICJDU1MgUGFnZWQgTWVkaWEg
TW9kdWxlIiwKICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly93d3cudzMub3JnL1RSL2NzczMt
cGFnZS8iCiAgICAgICAgIH0sCi0gICAgICAgICJjc3MtcmVnaW9ucyI6IHsKLSAgICAgICAgICAg
ICJzaG9ydG5hbWUiOiAiQ1NTIFJlZ2lvbnMiLAotICAgICAgICAgICAgImxvbmduYW1lIjogIkNT
UyBSZWdpb25zIE1vZHVsZSIsCi0gICAgICAgICAgICAidXJsIjogImh0dHBzOi8vd3d3LnczLm9y
Zy9UUi9jc3MtcmVnaW9ucy0xLyIsCi0gICAgICAgICAgICAic3RhdHVzIjogImV4cGVyaW1lbnRh
bCIKLSAgICAgICAgfSwKICAgICAgICAgImNzcy1yb3VuZC1kaXNwbGF5IjogewogICAgICAgICAg
ICAgInNob3J0bmFtZSI6ICJDU1MgUm91bmQgRGlzcGxheSIsCiAgICAgICAgICAgICAibG9uZ25h
bWUiOiAiQ1NTIFJvdW5kIERpc3BsYXkgTW9kdWxlIiwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NSdWxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUnVsZS5j
cHAJKHJldmlzaW9uIDIyMjIwNCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NSdWxlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzYsMTAgKzM2LDYgQEAgc3RydWN0IFNhbWVTaXplQXNDU1NSdWxl
IDogcHVibGljIFJlZkNvdQogCiBDT01QSUxFX0FTU0VSVChzaXplb2YoQ1NTUnVsZSkgPT0gc2l6
ZW9mKFNhbWVTaXplQXNDU1NSdWxlKSwgQ1NTUnVsZV9zaG91bGRfc3RheV9zbWFsbCk7CiAKLSNp
ZiBFTkFCTEUoQ1NTX1JFR0lPTlMpCi1DT01QSUxFX0FTU0VSVChTdHlsZVJ1bGVCYXNlOjpSZWdp
b24gPT0gc3RhdGljX2Nhc3Q8U3R5bGVSdWxlQmFzZTo6VHlwZT4oQ1NTUnVsZTo6V0VCS0lUX1JF
R0lPTl9SVUxFKSwgZW51bXNfc2hvdWxkX21hdGNoKTsKLSNlbmRpZgotCiAjaWYgRU5BQkxFKENT
U19ERVZJQ0VfQURBUFRBVElPTikKIENPTVBJTEVfQVNTRVJUKFN0eWxlUnVsZUJhc2U6OlZpZXdw
b3J0ID09IHN0YXRpY19jYXN0PFN0eWxlUnVsZUJhc2U6OlR5cGU+KENTU1J1bGU6OldFQktJVF9W
SUVXUE9SVF9SVUxFKSwgZW51bXNfc2hvdWxkX21hdGNoKTsKICNlbmRpZgpJbmRleDogU291cmNl
L1dlYkNvcmUvY3NzL0NTU1J1bGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTUnVsZS5oCShyZXZpc2lvbiAyMjIyMDQpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUnVs
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01NCw5ICs1NCw2IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUo
Q1NTX0RFVklDRV9BREFQVEFUSU9OKQogICAgICAgICBXRUJLSVRfVklFV1BPUlRfUlVMRSA9IDE1
LAogI2VuZGlmCi0jaWYgRU5BQkxFKENTU19SRUdJT05TKQotICAgICAgICBXRUJLSVRfUkVHSU9O
X1JVTEUgPSAxNiwKLSNlbmRpZgogICAgIH07CiAKICAgICBlbnVtIERlcHJlY2F0ZWRUeXBlIHsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NSdWxlLmlkbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTUnVsZS5pZGwJKHJldmlzaW9uIDIyMjIwNCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NSdWxlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNiBAQAog
ICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IE5BTUVTUEFDRV9SVUxFID0gMTA7CiAgICAgY29uc3Qg
dW5zaWduZWQgc2hvcnQgU1VQUE9SVFNfUlVMRSA9IDEyOwogICAgIFtDb25kaXRpb25hbD1DU1Nf
REVWSUNFX0FEQVBUQVRJT05dIGNvbnN0IHVuc2lnbmVkIHNob3J0IFdFQktJVF9WSUVXUE9SVF9S
VUxFID0gMTU7Ci0gICAgW0NvbmRpdGlvbmFsPUNTU19SRUdJT05TXSBjb25zdCB1bnNpZ25lZCBz
aG9ydCBXRUJLSVRfUkVHSU9OX1JVTEUgPSAxNjsKIAogICAgIC8vIExlZ2FjeSBzeW5vbnltcyBm
b3IgdGhlIGFib3ZlLCBrZXB0IHRvIGF2b2lkIGJyZWFraW5nIGV4aXN0aW5nIGNvbnRlbnQuCiAg
ICAgY29uc3QgdW5zaWduZWQgc2hvcnQgV0VCS0lUX0tFWUZSQU1FU19SVUxFID0gNzsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2Nzcy9FbGVtZW50UnVsZUNvbGxlY3Rvci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvY3NzL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmNwcAkocmV2aXNpb24g
MjIyMjA0KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNiBAQAogI2luY2x1ZGUgIkNTU1ZhbHVlS2V5d29y
ZHMuaCIKICNpbmNsdWRlICJIVE1MRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxTbG90RWxlbWVu
dC5oIgotI2luY2x1ZGUgIlJlbmRlclJlZ2lvbi5oIgogI2luY2x1ZGUgIlNWR0VsZW1lbnQuaCIK
ICNpbmNsdWRlICJTZWxlY3RvckNvbXBpbGVyLmgiCiAjaW5jbHVkZSAiU2VsZWN0b3JGaWx0ZXIu
aCIKQEAgLTE2NCwyMiArMTYzLDYgQEAgdm9pZCBFbGVtZW50UnVsZUNvbGxlY3Rvcjo6Y29sbGVj
dE1hdGNoaQogICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yTGlzdChtYXRjaFJlcXVlc3QucnVs
ZVNldC0+dW5pdmVyc2FsUnVsZXMoKSwgbWF0Y2hSZXF1ZXN0LCBydWxlUmFuZ2UpOwogfQogCi12
b2lkIEVsZW1lbnRSdWxlQ29sbGVjdG9yOjpjb2xsZWN0TWF0Y2hpbmdSdWxlc0ZvclJlZ2lvbihj
b25zdCBNYXRjaFJlcXVlc3QmIG1hdGNoUmVxdWVzdCwgU3R5bGVSZXNvbHZlcjo6UnVsZVJhbmdl
JiBydWxlUmFuZ2UpCi17Ci0gICAgaWYgKCFtX3JlZ2lvbkZvclN0eWxpbmcpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIHVuc2lnbmVkIHNpemUgPSBtYXRjaFJlcXVlc3QucnVsZVNldC0+cmVnaW9u
U2VsZWN0b3JzQW5kUnVsZVNldHMoKS5zaXplKCk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IHNpemU7ICsraSkgewotICAgICAgICBjb25zdCBDU1NTZWxlY3RvciogcmVnaW9uU2VsZWN0
b3IgPSBtYXRjaFJlcXVlc3QucnVsZVNldC0+cmVnaW9uU2VsZWN0b3JzQW5kUnVsZVNldHMoKS5h
dChpKS5zZWxlY3RvcjsKLSAgICAgICAgaWYgKGNoZWNrUmVnaW9uU2VsZWN0b3IocmVnaW9uU2Vs
ZWN0b3IsIG1fcmVnaW9uRm9yU3R5bGluZy0+Z2VuZXJhdGluZ0VsZW1lbnQoKSkpIHsKLSAgICAg
ICAgICAgIFJ1bGVTZXQqIHJlZ2lvblJ1bGVzID0gbWF0Y2hSZXF1ZXN0LnJ1bGVTZXQtPnJlZ2lv
blNlbGVjdG9yc0FuZFJ1bGVTZXRzKCkuYXQoaSkucnVsZVNldC5nZXQoKTsKLSAgICAgICAgICAg
IEFTU0VSVChyZWdpb25SdWxlcyk7Ci0gICAgICAgICAgICBjb2xsZWN0TWF0Y2hpbmdSdWxlcyhN
YXRjaFJlcXVlc3QocmVnaW9uUnVsZXMsIG1hdGNoUmVxdWVzdC5pbmNsdWRlRW1wdHlSdWxlcyks
IHJ1bGVSYW5nZSk7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KIHZvaWQgRWxlbWVudFJ1bGVDb2xs
ZWN0b3I6OnNvcnRBbmRUcmFuc2Zlck1hdGNoZWRSdWxlcygpCiB7CiAgICAgaWYgKG1fbWF0Y2hl
ZFJ1bGVzLmlzRW1wdHkoKSkKQEAgLTIwOCw3ICsxOTEsNiBAQCB2b2lkIEVsZW1lbnRSdWxlQ29s
bGVjdG9yOjptYXRjaEF1dGhvclJ1CiAgICAgewogICAgICAgICBNYXRjaFJlcXVlc3QgbWF0Y2hS
ZXF1ZXN0KCZtX2F1dGhvclN0eWxlLCBpbmNsdWRlRW1wdHlSdWxlcyk7CiAgICAgICAgIGNvbGxl
Y3RNYXRjaGluZ1J1bGVzKG1hdGNoUmVxdWVzdCwgcnVsZVJhbmdlKTsKLSAgICAgICAgY29sbGVj
dE1hdGNoaW5nUnVsZXNGb3JSZWdpb24obWF0Y2hSZXF1ZXN0LCBydWxlUmFuZ2UpOwogICAgIH0K
IAogICAgIGF1dG8qIHBhcmVudCA9IG1fZWxlbWVudC5wYXJlbnRFbGVtZW50KCk7CkBAIC0zMjcs
NyArMzA5LDYgQEAgdm9pZCBFbGVtZW50UnVsZUNvbGxlY3Rvcjo6bWF0Y2hVc2VyUnVsZQogICAg
IE1hdGNoUmVxdWVzdCBtYXRjaFJlcXVlc3QobV91c2VyU3R5bGUsIGluY2x1ZGVFbXB0eVJ1bGVz
KTsKICAgICBTdHlsZVJlc29sdmVyOjpSdWxlUmFuZ2UgcnVsZVJhbmdlID0gbV9yZXN1bHQucmFu
Z2VzLnVzZXJSdWxlUmFuZ2UoKTsKICAgICBjb2xsZWN0TWF0Y2hpbmdSdWxlcyhtYXRjaFJlcXVl
c3QsIHJ1bGVSYW5nZSk7Ci0gICAgY29sbGVjdE1hdGNoaW5nUnVsZXNGb3JSZWdpb24obWF0Y2hS
ZXF1ZXN0LCBydWxlUmFuZ2UpOwogCiAgICAgc29ydEFuZFRyYW5zZmVyTWF0Y2hlZFJ1bGVzKCk7
CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvRWxlbWVudFJ1bGVDb2xsZWN0b3IuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvRWxlbWVudFJ1bGVDb2xsZWN0b3IuaAkocmV2
aXNpb24gMjIyMjA0KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0VsZW1lbnRSdWxlQ29sbGVjdG9y
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBEb2N1bWVudFJ1bGVTZXRzOwogY2xhc3MgTWF0Y2hSZXF1ZXN0OwotY2xhc3MgUmVu
ZGVyUmVnaW9uOwogY2xhc3MgUnVsZURhdGE7CiBjbGFzcyBSdWxlU2V0OwogY2xhc3MgU2VsZWN0
b3JGaWx0ZXI7CkBAIC01Niw3ICs1NSw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE1vZGUoU2Vs
ZWN0b3JDaGVja2VyOjpNb2RlIG1vZGUpIHsgbV9tb2RlID0gbW9kZTsgfQogICAgIHZvaWQgc2V0
UHNldWRvU3R5bGVSZXF1ZXN0KGNvbnN0IFBzZXVkb1N0eWxlUmVxdWVzdCYgcmVxdWVzdCkgeyBt
X3BzZXVkb1N0eWxlUmVxdWVzdCA9IHJlcXVlc3Q7IH0KICAgICB2b2lkIHNldFNhbWVPcmlnaW5P
bmx5KGJvb2wgZikgeyBtX3NhbWVPcmlnaW5Pbmx5ID0gZjsgfSAKLSAgICB2b2lkIHNldFJlZ2lv
bkZvclN0eWxpbmcoY29uc3QgUmVuZGVyUmVnaW9uKiByZWdpb25Gb3JTdHlsaW5nKSB7IG1fcmVn
aW9uRm9yU3R5bGluZyA9IHJlZ2lvbkZvclN0eWxpbmc7IH0KICAgICB2b2lkIHNldE1lZGl1bShj
b25zdCBNZWRpYVF1ZXJ5RXZhbHVhdG9yKiBtZWRpdW0pIHsgbV9pc1ByaW50U3R5bGUgPSBtZWRp
dW0tPm1lZGlhVHlwZU1hdGNoU3BlY2lmaWMoInByaW50Iik7IH0KIAogICAgIGJvb2wgaGFzQW55
TWF0Y2hpbmdSdWxlcyhjb25zdCBSdWxlU2V0Kik7CkBAIC04Myw3ICs4MSw2IEBAIHByaXZhdGU6
CiAgICAgc3RkOjp1bmlxdWVfcHRyPFJ1bGVTZXQ6OlJ1bGVEYXRhVmVjdG9yPiBjb2xsZWN0U2xv
dHRlZFBzZXVkb0VsZW1lbnRSdWxlc0ZvclNsb3QoYm9vbCBpbmNsdWRlRW1wdHlSdWxlcyk7CiAK
ICAgICB2b2lkIGNvbGxlY3RNYXRjaGluZ1J1bGVzKGNvbnN0IE1hdGNoUmVxdWVzdCYsIFN0eWxl
UmVzb2x2ZXI6OlJ1bGVSYW5nZSYpOwotICAgIHZvaWQgY29sbGVjdE1hdGNoaW5nUnVsZXNGb3JS
ZWdpb24oY29uc3QgTWF0Y2hSZXF1ZXN0JiwgU3R5bGVSZXNvbHZlcjo6UnVsZVJhbmdlJik7CiAg
ICAgdm9pZCBjb2xsZWN0TWF0Y2hpbmdSdWxlc0Zvckxpc3QoY29uc3QgUnVsZVNldDo6UnVsZURh
dGFWZWN0b3IqLCBjb25zdCBNYXRjaFJlcXVlc3QmLCBTdHlsZVJlc29sdmVyOjpSdWxlUmFuZ2Um
KTsKICAgICBib29sIHJ1bGVNYXRjaGVzKGNvbnN0IFJ1bGVEYXRhJiwgdW5zaWduZWQgJnNwZWNp
ZmljaXR5KTsKIApAQCAtOTgsNyArOTUsNiBAQCBwcml2YXRlOgogICAgIGNvbnN0IFNlbGVjdG9y
RmlsdGVyKiBtX3NlbGVjdG9yRmlsdGVyIHsgbnVsbHB0ciB9OwogCiAgICAgYm9vbCBtX2lzUHJp
bnRTdHlsZSB7IGZhbHNlIH07Ci0gICAgY29uc3QgUmVuZGVyUmVnaW9uKiBtX3JlZ2lvbkZvclN0
eWxpbmcgeyBudWxscHRyIH07CiAgICAgUHNldWRvU3R5bGVSZXF1ZXN0IG1fcHNldWRvU3R5bGVS
ZXF1ZXN0IHsgTk9QU0VVRE8gfTsKICAgICBib29sIG1fc2FtZU9yaWdpbk9ubHkgeyBmYWxzZSB9
OwogICAgIFNlbGVjdG9yQ2hlY2tlcjo6TW9kZSBtX21vZGUgeyBTZWxlY3RvckNoZWNrZXI6Ok1v
ZGU6OlJlc29sdmluZ1N0eWxlIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvSW5zcGVjdG9y
Q1NTT01XcmFwcGVycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0luc3Bl
Y3RvckNTU09NV3JhcHBlcnMuY3BwCShyZXZpc2lvbiAyMjIyMDQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9jc3MvSW5zcGVjdG9yQ1NTT01XcmFwcGVycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcg
KzM5LDYgQEAKICNpbmNsdWRlICJFeHRlbnNpb25TdHlsZVNoZWV0cy5oIgogI2luY2x1ZGUgIlN0
eWxlU2NvcGUuaCIKICNpbmNsdWRlICJTdHlsZVNoZWV0Q29udGVudHMuaCIKLSNpbmNsdWRlICJX
ZWJLaXRDU1NSZWdpb25SdWxlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNjcsMTEg
KzY2LDYgQEAgdm9pZCBJbnNwZWN0b3JDU1NPTVdyYXBwZXJzOjpjb2xsZWN0KExpcwogICAgICAg
ICBjYXNlIENTU1J1bGU6OlNVUFBPUlRTX1JVTEU6CiAgICAgICAgICAgICBjb2xsZWN0KGRvd25j
YXN0PENTU1N1cHBvcnRzUnVsZT4oY3NzUnVsZSkpOwogICAgICAgICAgICAgYnJlYWs7Ci0jaWYg
RU5BQkxFKENTU19SRUdJT05TKQotICAgICAgICBjYXNlIENTU1J1bGU6OldFQktJVF9SRUdJT05f
UlVMRToKLSAgICAgICAgICAgIGNvbGxlY3QoZG93bmNhc3Q8V2ViS2l0Q1NTUmVnaW9uUnVsZT4o
Y3NzUnVsZSkpOwotICAgICAgICAgICAgYnJlYWs7Ci0jZW5kaWYKICAgICAgICAgY2FzZSBDU1NS
dWxlOjpTVFlMRV9SVUxFOgogICAgICAgICAgICAgbV9zdHlsZVJ1bGVUb0NTU09NV3JhcHBlck1h
cC5hZGQoJmRvd25jYXN0PENTU1N0eWxlUnVsZT4oKmNzc1J1bGUpLnN0eWxlUnVsZSgpLCBkb3du
Y2FzdDxDU1NTdHlsZVJ1bGU+KGNzc1J1bGUpKTsKICAgICAgICAgICAgIGJyZWFrOwpJbmRleDog
U291cmNlL1dlYkNvcmUvY3NzL1J1bGVTZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2Nzcy9SdWxlU2V0LmNwcAkocmV2aXNpb24gMjIyMjA0KQorKysgU291cmNlL1dlYkNvcmUv
Y3NzL1J1bGVTZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzUsMTAgKzEzNSw4IEBAIHN0YXRp
YyBpbmxpbmUgYm9vbCBjb250YWluc1VuY29tbW9uQXR0cmkKICAgICByZXR1cm4gY29udGFpbnNV
bmNvbW1vbkF0dHJpYnV0ZVNlbGVjdG9yKHJvb3RTZWxlY3RvciwgdHJ1ZSk7CiB9CiAKLXN0YXRp
YyBpbmxpbmUgUHJvcGVydHlXaGl0ZWxpc3RUeXBlIGRldGVybWluZVByb3BlcnR5V2hpdGVsaXN0
VHlwZShjb25zdCBBZGRSdWxlRmxhZ3MgYWRkUnVsZUZsYWdzLCBjb25zdCBDU1NTZWxlY3Rvciog
c2VsZWN0b3IpCitzdGF0aWMgaW5saW5lIFByb3BlcnR5V2hpdGVsaXN0VHlwZSBkZXRlcm1pbmVQ
cm9wZXJ0eVdoaXRlbGlzdFR5cGUoY29uc3QgQ1NTU2VsZWN0b3IqIHNlbGVjdG9yKQogewotICAg
IGlmIChhZGRSdWxlRmxhZ3MgJiBSdWxlSXNJblJlZ2lvblJ1bGUpCi0gICAgICAgIHJldHVybiBQ
cm9wZXJ0eVdoaXRlbGlzdFJlZ2lvbjsKICAgICBmb3IgKGNvbnN0IENTU1NlbGVjdG9yKiBjb21w
b25lbnQgPSBzZWxlY3RvcjsgY29tcG9uZW50OyBjb21wb25lbnQgPSBjb21wb25lbnQtPnRhZ0hp
c3RvcnkoKSkgewogI2lmIEVOQUJMRShWSURFT19UUkFDSykKICAgICAgICAgaWYgKGNvbXBvbmVu
dC0+bWF0Y2goKSA9PSBDU1NTZWxlY3Rvcjo6UHNldWRvRWxlbWVudCAmJiAoY29tcG9uZW50LT5w
c2V1ZG9FbGVtZW50VHlwZSgpID09IENTU1NlbGVjdG9yOjpQc2V1ZG9FbGVtZW50Q3VlIHx8IGNv
bXBvbmVudC0+dmFsdWUoKSA9PSBUZXh0VHJhY2tDdWU6OmN1ZVNoYWRvd1BzZXVkb0lkKCkpKQpA
QCAtMTU5LDcgKzE1Nyw3IEBAIFJ1bGVEYXRhOjpSdWxlRGF0YShTdHlsZVJ1bGUqIHJ1bGUsIHVu
c2kKICAgICAsIG1fY2FuTWF0Y2hQc2V1ZG9FbGVtZW50KHNlbGVjdG9yQ2FuTWF0Y2hQc2V1ZG9F
bGVtZW50KCpzZWxlY3RvcigpKSkKICAgICAsIG1fY29udGFpbnNVbmNvbW1vbkF0dHJpYnV0ZVNl
bGVjdG9yKFdlYkNvcmU6OmNvbnRhaW5zVW5jb21tb25BdHRyaWJ1dGVTZWxlY3Rvcigqc2VsZWN0
b3IoKSkpCiAgICAgLCBtX2xpbmtNYXRjaFR5cGUoU2VsZWN0b3JDaGVja2VyOjpkZXRlcm1pbmVM
aW5rTWF0Y2hUeXBlKHNlbGVjdG9yKCkpKQotICAgICwgbV9wcm9wZXJ0eVdoaXRlbGlzdFR5cGUo
ZGV0ZXJtaW5lUHJvcGVydHlXaGl0ZWxpc3RUeXBlKGFkZFJ1bGVGbGFncywgc2VsZWN0b3IoKSkp
CisgICAgLCBtX3Byb3BlcnR5V2hpdGVsaXN0VHlwZShkZXRlcm1pbmVQcm9wZXJ0eVdoaXRlbGlz
dFR5cGUoc2VsZWN0b3IoKSkpCiAjaWYgRU5BQkxFKENTU19TRUxFQ1RPUl9KSVQpICYmIENTU19T
RUxFQ1RPUl9KSVRfUFJPRklMSU5HCiAgICAgLCBtX2NvbXBpbGVkU2VsZWN0b3JVc2VDb3VudCgw
KQogI2VuZGlmCkBAIC0zNjYsMjkgKzM2NCw2IEBAIHZvaWQgUnVsZVNldDo6YWRkUGFnZVJ1bGUo
U3R5bGVSdWxlUGFnZSoKICAgICBtX3BhZ2VSdWxlcy5hcHBlbmQocnVsZSk7CiB9CiAKLXZvaWQg
UnVsZVNldDo6YWRkUmVnaW9uUnVsZShTdHlsZVJ1bGVSZWdpb24qIHJlZ2lvblJ1bGUsIGJvb2wg
aGFzRG9jdW1lbnRTZWN1cml0eU9yaWdpbikKLXsKLSAgICBhdXRvIHJlZ2lvblJ1bGVTZXQgPSBz
dGQ6Om1ha2VfdW5pcXVlPFJ1bGVTZXQ+KCk7Ci0gICAgLy8gVGhlIHJlZ2lvbiBydWxlIHNldCBz
aG91bGQgdGFrZSBpbnRvIGFjY291bnQgdGhlIHBvc2l0aW9uIGluc2lkZSB0aGUgcGFyZW50IHJ1
bGUgc2V0LgotICAgIC8vIE90aGVyd2lzZSwgdGhlIHJ1bGVzIGluc2lkZSByZWdpb24gYmxvY2sg
bWlnaHQgYmUgaW5jb3JyZWN0bHkgcG9zaXRpb25lZCBiZWZvcmUgb3RoZXIgc2ltaWxhciBydWxl
cyBmcm9tCi0gICAgLy8gdGhlIHN0eWxlc2hlZXQgdGhhdCBjb250YWlucyB0aGUgcmVnaW9uIGJs
b2NrLgotICAgIHJlZ2lvblJ1bGVTZXQtPm1fcnVsZUNvdW50ID0gbV9ydWxlQ291bnQ7Ci0KLSAg
ICAvLyBDb2xsZWN0IHRoZSByZWdpb24gcnVsZXMgaW50byBhIHJ1bGUgc2V0Ci0gICAgLy8gRklY
TUU6IFNob3VsZCB0aGlzIGFkZCBvdGhlciB0eXBlcyBvZiBydWxlcz8gKGkuZS4gdXNlIGFkZENo
aWxkUnVsZXMoKSBkaXJlY3RseT8pCi0gICAgY29uc3QgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGVC
YXNlPj4mIGNoaWxkUnVsZXMgPSByZWdpb25SdWxlLT5jaGlsZFJ1bGVzKCk7Ci0gICAgQWRkUnVs
ZUZsYWdzIGFkZFJ1bGVGbGFncyA9IGhhc0RvY3VtZW50U2VjdXJpdHlPcmlnaW4gPyBSdWxlSGFz
RG9jdW1lbnRTZWN1cml0eU9yaWdpbiA6IFJ1bGVIYXNOb1NwZWNpYWxTdGF0ZTsKLSAgICBhZGRS
dWxlRmxhZ3MgPSBzdGF0aWNfY2FzdDxBZGRSdWxlRmxhZ3M+KGFkZFJ1bGVGbGFncyB8IFJ1bGVJ
c0luUmVnaW9uUnVsZSk7Ci0gICAgZm9yIChhdXRvJiBjaGlsZFJ1bGUgOiBjaGlsZFJ1bGVzKSB7
Ci0gICAgICAgIGlmIChpczxTdHlsZVJ1bGU+KCpjaGlsZFJ1bGUpKQotICAgICAgICAgICAgcmVn
aW9uUnVsZVNldC0+YWRkU3R5bGVSdWxlKGRvd25jYXN0PFN0eWxlUnVsZT4oY2hpbGRSdWxlLmdl
dCgpKSwgYWRkUnVsZUZsYWdzKTsKLSAgICB9Ci0gICAgLy8gVXBkYXRlIHRoZSAiZ2xvYmFsIiBy
dWxlIGNvdW50IHNvIHRoYXQgcHJvcGVyIG9yZGVyIGlzIG1haW50YWluZWQKLSAgICBtX3J1bGVD
b3VudCA9IHJlZ2lvblJ1bGVTZXQtPm1fcnVsZUNvdW50OwotCi0gICAgbV9yZWdpb25TZWxlY3Rv
cnNBbmRSdWxlU2V0cy5hcHBlbmQoUnVsZVNldFNlbGVjdG9yUGFpcihyZWdpb25SdWxlLT5zZWxl
Y3Rvckxpc3QoKS5maXJzdCgpLCBXVEZNb3ZlKHJlZ2lvblJ1bGVTZXQpKSk7Ci19Ci0KIHZvaWQg
UnVsZVNldDo6YWRkQ2hpbGRSdWxlcyhjb25zdCBWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZUJhc2U+
PiYgcnVsZXMsIGNvbnN0IE1lZGlhUXVlcnlFdmFsdWF0b3ImIG1lZGl1bSwgU3R5bGVSZXNvbHZl
ciogcmVzb2x2ZXIsIGJvb2wgaGFzRG9jdW1lbnRTZWN1cml0eU9yaWdpbiwgYm9vbCBpc0luaXRp
YXRpbmdFbGVtZW50SW5Vc2VyQWdlbnRTaGFkb3dUcmVlLCBBZGRSdWxlRmxhZ3MgYWRkUnVsZUZs
YWdzKQogewogICAgIGZvciAoYXV0byYgcnVsZSA6IHJ1bGVzKSB7CkBAIC00MDgsMTEgKzM4Myw2
IEBAIHZvaWQgUnVsZVNldDo6YWRkQ2hpbGRSdWxlcyhjb25zdCBWZWN0b3IKICAgICAgICAgICAg
IHJlc29sdmVyLT5hZGRLZXlmcmFtZVN0eWxlKGRvd25jYXN0PFN0eWxlUnVsZUtleWZyYW1lcz4o
KnJ1bGUpKTsKICAgICAgICAgZWxzZSBpZiAoaXM8U3R5bGVSdWxlU3VwcG9ydHM+KCpydWxlKSAm
JiBkb3duY2FzdDxTdHlsZVJ1bGVTdXBwb3J0cz4oKnJ1bGUpLmNvbmRpdGlvbklzU3VwcG9ydGVk
KCkpCiAgICAgICAgICAgICBhZGRDaGlsZFJ1bGVzKGRvd25jYXN0PFN0eWxlUnVsZVN1cHBvcnRz
PigqcnVsZSkuY2hpbGRSdWxlcygpLCBtZWRpdW0sIHJlc29sdmVyLCBoYXNEb2N1bWVudFNlY3Vy
aXR5T3JpZ2luLCBpc0luaXRpYXRpbmdFbGVtZW50SW5Vc2VyQWdlbnRTaGFkb3dUcmVlLCBhZGRS
dWxlRmxhZ3MpOwotI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKLSAgICAgICAgZWxzZSBpZiAoaXM8
U3R5bGVSdWxlUmVnaW9uPigqcnVsZSkgJiYgcmVzb2x2ZXIpIHsKLSAgICAgICAgICAgIGFkZFJl
Z2lvblJ1bGUoZG93bmNhc3Q8U3R5bGVSdWxlUmVnaW9uPihydWxlLmdldCgpKSwgaGFzRG9jdW1l
bnRTZWN1cml0eU9yaWdpbik7Ci0gICAgICAgIH0KLSNlbmRpZgogI2lmIEVOQUJMRShDU1NfREVW
SUNFX0FEQVBUQVRJT04pCiAgICAgICAgIGVsc2UgaWYgKGlzPFN0eWxlUnVsZVZpZXdwb3J0Pigq
cnVsZSkgJiYgcmVzb2x2ZXIpIHsKICAgICAgICAgICAgIHJlc29sdmVyLT52aWV3cG9ydFN0eWxl
UmVzb2x2ZXIoKS0+YWRkVmlld3BvcnRSdWxlKGRvd25jYXN0PFN0eWxlUnVsZVZpZXdwb3J0Pihy
dWxlLmdldCgpKSk7CkBAIC00ODAsNyArNDUwLDYgQEAgdm9pZCBSdWxlU2V0OjpzaHJpbmtUb0Zp
dCgpCiAgICAgbV91bml2ZXJzYWxSdWxlcy5zaHJpbmtUb0ZpdCgpOwogICAgIG1fcGFnZVJ1bGVz
LnNocmlua1RvRml0KCk7CiAgICAgbV9mZWF0dXJlcy5zaHJpbmtUb0ZpdCgpOwotICAgIG1fcmVn
aW9uU2VsZWN0b3JzQW5kUnVsZVNldHMuc2hyaW5rVG9GaXQoKTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL1J1bGVTZXQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvUnVsZVNldC5oCShyZXZpc2lvbiAyMjIyMDQpCisrKyBT
b3VyY2UvV2ViQ29yZS9jc3MvUnVsZVNldC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCwxMyArMzQs
MTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogZW51bSBBZGRSdWxlRmxhZ3MgewogICAgIFJ1bGVI
YXNOb1NwZWNpYWxTdGF0ZSAgICAgICAgID0gMCwKICAgICBSdWxlSGFzRG9jdW1lbnRTZWN1cml0
eU9yaWdpbiA9IDEsCi0gICAgUnVsZUlzSW5SZWdpb25SdWxlICAgICAgICAgICAgPSAxIDw8IDEs
CiB9OwogICAgIAogZW51bSBQcm9wZXJ0eVdoaXRlbGlzdFR5cGUgewogICAgIFByb3BlcnR5V2hp
dGVsaXN0Tm9uZSAgID0gMCwKICAgICBQcm9wZXJ0eVdoaXRlbGlzdE1hcmtlciwKLSAgICBQcm9w
ZXJ0eVdoaXRlbGlzdFJlZ2lvbiwKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAgICAgUHJvcGVy
dHlXaGl0ZWxpc3RDdWUKICNlbmRpZgpAQCAtNTEsNyArNDksNiBAQCBjbGFzcyBDb250YWluZXJO
b2RlOwogY2xhc3MgTWVkaWFRdWVyeUV2YWx1YXRvcjsKIGNsYXNzIE5vZGU7CiBjbGFzcyBTdHls
ZVJlc29sdmVyOwotY2xhc3MgU3R5bGVSdWxlUmVnaW9uOwogY2xhc3MgU3R5bGVTaGVldENvbnRl
bnRzOwogCiBlbnVtIGNsYXNzIE1hdGNoQmFzZWRPblJ1bGVIYXNoIDogdW5zaWduZWQgewpAQCAt
MTY3LDcgKzE2NCw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZFJ1bGUoU3R5bGVSdWxlKiwgdW5z
aWduZWQgc2VsZWN0b3JJbmRleCwgQWRkUnVsZUZsYWdzKTsKICAgICB2b2lkIGFkZFBhZ2VSdWxl
KFN0eWxlUnVsZVBhZ2UqKTsKICAgICB2b2lkIGFkZFRvUnVsZVNldChjb25zdCBBdG9taWNTdHJp
bmcmIGtleSwgQXRvbVJ1bGVNYXAmLCBjb25zdCBSdWxlRGF0YSYpOwotICAgIHZvaWQgYWRkUmVn
aW9uUnVsZShTdHlsZVJ1bGVSZWdpb24qLCBib29sIGhhc0RvY3VtZW50U2VjdXJpdHlPcmlnaW4p
OwogICAgIHZvaWQgc2hyaW5rVG9GaXQoKTsKICAgICB2b2lkIGRpc2FibGVBdXRvU2hyaW5rVG9G
aXQoKSB7IG1fYXV0b1Nocmlua1RvRml0RW5hYmxlZCA9IGZhbHNlOyB9CiAKQEAgLTE4Nyw3ICsx
ODMsNiBAQCBwdWJsaWM6CiAgICAgY29uc3QgUnVsZURhdGFWZWN0b3IqIHVuaXZlcnNhbFJ1bGVz
KCkgY29uc3QgeyByZXR1cm4gJm1fdW5pdmVyc2FsUnVsZXM7IH0KIAogICAgIGNvbnN0IFZlY3Rv
cjxTdHlsZVJ1bGVQYWdlKj4mIHBhZ2VSdWxlcygpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZVJ1bGVz
OyB9Ci0gICAgY29uc3QgVmVjdG9yPFJ1bGVTZXRTZWxlY3RvclBhaXI+JiByZWdpb25TZWxlY3Rv
cnNBbmRSdWxlU2V0cygpIGNvbnN0IHsgcmV0dXJuIG1fcmVnaW9uU2VsZWN0b3JzQW5kUnVsZVNl
dHM7IH0KIAogICAgIHVuc2lnbmVkIHJ1bGVDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fcnVsZUNv
dW50OyB9CiAKQEAgLTIxNSw3ICsyMTAsNiBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9oYXNIb3N0
UHNldWRvQ2xhc3NSdWxlc01hdGNoaW5nSW5TaGFkb3dUcmVlIHsgZmFsc2UgfTsKICAgICBib29s
IG1fYXV0b1Nocmlua1RvRml0RW5hYmxlZCB7IHRydWUgfTsKICAgICBSdWxlRmVhdHVyZVNldCBt
X2ZlYXR1cmVzOwotICAgIFZlY3RvcjxSdWxlU2V0U2VsZWN0b3JQYWlyPiBtX3JlZ2lvblNlbGVj
dG9yc0FuZFJ1bGVTZXRzOwogfTsKIAogaW5saW5lIGNvbnN0IFJ1bGVTZXQ6OlJ1bGVEYXRhVmVj
dG9yKiBSdWxlU2V0Ojp0YWdSdWxlcyhjb25zdCBBdG9taWNTdHJpbmcmIGtleSwgYm9vbCBpc0hU
TUxOYW1lKSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckNvbnZl
cnRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDb252
ZXJ0ZXIuaAkocmV2aXNpb24gMjIyMjA0KQorKysgU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVp
bGRlckNvbnZlcnRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDMsMTEgKzE0Myw3IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgQnJlYWtJbnNpZGUgY29udmVydFBhZ2VCcmVha0luc2lkZShTdHlsZVJl
c29sdmVyJiwgY29uc3QgQ1NTVmFsdWUmKTsKICAgICBzdGF0aWMgQnJlYWtCZXR3ZWVuIGNvbnZl
cnRDb2x1bW5CcmVha0JldHdlZW4oU3R5bGVSZXNvbHZlciYsIGNvbnN0IENTU1ZhbHVlJik7CiAg
ICAgc3RhdGljIEJyZWFrSW5zaWRlIGNvbnZlcnRDb2x1bW5CcmVha0luc2lkZShTdHlsZVJlc29s
dmVyJiwgY29uc3QgQ1NTVmFsdWUmKTsKLSNpZiBFTkFCTEUoQ1NTX1JFR0lPTlMpCi0gICAgc3Rh
dGljIEJyZWFrQmV0d2VlbiBjb252ZXJ0UmVnaW9uQnJlYWtCZXR3ZWVuKFN0eWxlUmVzb2x2ZXIm
LCBjb25zdCBDU1NWYWx1ZSYpOwotICAgIHN0YXRpYyBCcmVha0luc2lkZSBjb252ZXJ0UmVnaW9u
QnJlYWtJbnNpZGUoU3R5bGVSZXNvbHZlciYsIGNvbnN0IENTU1ZhbHVlJik7Ci0jZW5kaWYKLSAg
ICAKKwogICAgIHN0YXRpYyBIYW5naW5nUHVuY3R1YXRpb24gY29udmVydEhhbmdpbmdQdW5jdHVh
dGlvbihTdHlsZVJlc29sdmVyJiwgY29uc3QgQ1NTVmFsdWUmKTsKIAogICAgIHN0YXRpYyBMZW5n
dGggY29udmVydFBvc2l0aW9uQ29tcG9uZW50WChTdHlsZVJlc29sdmVyJiwgY29uc3QgQ1NTVmFs
dWUmKTsKQEAgLTE1MjAsMjYgKzE1MTYsNiBAQCBpbmxpbmUgQnJlYWtJbnNpZGUgU3R5bGVCdWls
ZGVyQ29udmVydGVyCiAgICAgcmV0dXJuIHByaW1pdGl2ZVZhbHVlOwogfQogCi0jaWYgRU5BQkxF
KENTU19SRUdJT05TKQotaW5saW5lIEJyZWFrQmV0d2VlbiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6
OmNvbnZlcnRSZWdpb25CcmVha0JldHdlZW4oU3R5bGVSZXNvbHZlciYsIGNvbnN0IENTU1ZhbHVl
JiB2YWx1ZSkKLXsKLSAgICBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1p
dGl2ZVZhbHVlPih2YWx1ZSk7Ci0gICAgaWYgKHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQoKSA9PSBD
U1NWYWx1ZUFsd2F5cykKLSAgICAgICAgcmV0dXJuIFJlZ2lvbkJyZWFrQmV0d2VlbjsKLSAgICBp
ZiAocHJpbWl0aXZlVmFsdWUudmFsdWVJRCgpID09IENTU1ZhbHVlQXZvaWQpCi0gICAgICAgIHJl
dHVybiBBdm9pZFJlZ2lvbkJyZWFrQmV0d2VlbjsKLSAgICByZXR1cm4gcHJpbWl0aXZlVmFsdWU7
Ci19Ci0KLWlubGluZSBCcmVha0luc2lkZSBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRS
ZWdpb25CcmVha0luc2lkZShTdHlsZVJlc29sdmVyJiwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQot
ewotICAgIGF1dG8mIHByaW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+
KHZhbHVlKTsKLSAgICBpZiAocHJpbWl0aXZlVmFsdWUudmFsdWVJRCgpID09IENTU1ZhbHVlQXZv
aWQpCi0gICAgICAgIHJldHVybiBBdm9pZFJlZ2lvbkJyZWFrSW5zaWRlOwotICAgIHJldHVybiBw
cmltaXRpdmVWYWx1ZTsKLX0KLSNlbmRpZgotCiBpbmxpbmUgSGFuZ2luZ1B1bmN0dWF0aW9uIFN0
eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEhhbmdpbmdQdW5jdHVhdGlvbihTdHlsZVJlc29s
dmVyJiwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIEhhbmdpbmdQdW5jdHVhdGlvbiBy
ZXN1bHQgPSBSZW5kZXJTdHlsZTo6aW5pdGlhbEhhbmdpbmdQdW5jdHVhdGlvbigpOwpJbmRleDog
U291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydGllcy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydGllcy5jcHAJKHJldmlzaW9uIDIyMjIwNCkKKysr
IFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnRpZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMTkxLDExICsxMTkxLDYgQEAgc3RhdGljIGNvbnN0IENTU1Byb3BlcnR5SUQgYmxvY2tQcm9w
ZXJ0aQogICAgIENTU1Byb3BlcnR5UGFnZUJyZWFrQWZ0ZXIsCiAgICAgQ1NTUHJvcGVydHlQYWdl
QnJlYWtCZWZvcmUsCiAgICAgQ1NTUHJvcGVydHlQYWdlQnJlYWtJbnNpZGUsCi0jaWYgRU5BQkxF
KENTU19SRUdJT05TKQotICAgIENTU1Byb3BlcnR5V2Via2l0UmVnaW9uQnJlYWtBZnRlciwKLSAg
ICBDU1NQcm9wZXJ0eVdlYmtpdFJlZ2lvbkJyZWFrQmVmb3JlLAotICAgIENTU1Byb3BlcnR5V2Vi
a2l0UmVnaW9uQnJlYWtJbnNpZGUsCi0jZW5kaWYKICAgICBDU1NQcm9wZXJ0eVRleHRBbGlnbiwK
ICNpZiBFTkFCTEUoQ1NTM19URVhUKQogICAgIENTU1Byb3BlcnR5V2Via2l0VGV4dEFsaWduTGFz
dCwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAJKHJldmlzaW9uIDIyMjIw
NCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNzUsNyArNzUsNiBAQAogI2luY2x1ZGUgIk5vZGVSZW5kZXJTdHlsZS5oIgogI2luY2x1
ZGUgIlBhZ2VSdWxlQ29sbGVjdG9yLmgiCiAjaW5jbHVkZSAiUGFpci5oIgotI2luY2x1ZGUgIlJl
bmRlclJlZ2lvbi5oIgogI2luY2x1ZGUgIlJlbmRlclNjcm9sbGJhci5oIgogI2luY2x1ZGUgIlJl
bmRlclN0eWxlQ29uc3RhbnRzLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIKQEAgLTE0MSw3
ICsxNDAsNiBAQCBpbmxpbmUgdm9pZCBTdHlsZVJlc29sdmVyOjpTdGF0ZTo6Y2xlYXIoCiAgICAg
bV9lbGVtZW50ID0gbnVsbHB0cjsKICAgICBtX3BhcmVudFN0eWxlID0gbnVsbHB0cjsKICAgICBt
X293bmVkUGFyZW50U3R5bGUgPSBudWxscHRyOwotICAgIG1fcmVnaW9uRm9yU3R5bGluZyA9IG51
bGxwdHI7CiAgICAgbV9jc3NUb0xlbmd0aENvbnZlcnNpb25EYXRhID0gQ1NTVG9MZW5ndGhDb252
ZXJzaW9uRGF0YSgpOwogfQogCkBAIC0yOTgsMTAgKzI5Niw5IEBAIHZvaWQgU3R5bGVSZXNvbHZl
cjo6c3dlZXBNYXRjaGVkUHJvcGVydGkKICAgICBtX21hdGNoZWRQcm9wZXJ0aWVzQ2FjaGVBZGRp
dGlvbnNTaW5jZUxhc3RTd2VlcCA9IDA7CiB9CiAKLVN0eWxlUmVzb2x2ZXI6OlN0YXRlOjpTdGF0
ZShjb25zdCBFbGVtZW50JiBlbGVtZW50LCBjb25zdCBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUs
IGNvbnN0IFJlbmRlclN0eWxlKiBkb2N1bWVudEVsZW1lbnRTdHlsZSwgY29uc3QgUmVuZGVyUmVn
aW9uKiByZWdpb25Gb3JTdHlsaW5nLCBjb25zdCBTZWxlY3RvckZpbHRlciogc2VsZWN0b3JGaWx0
ZXIpCitTdHlsZVJlc29sdmVyOjpTdGF0ZTo6U3RhdGUoY29uc3QgRWxlbWVudCYgZWxlbWVudCwg
Y29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSogZG9jdW1l
bnRFbGVtZW50U3R5bGUsIGNvbnN0IFNlbGVjdG9yRmlsdGVyKiBzZWxlY3RvckZpbHRlcikKICAg
ICA6IG1fZWxlbWVudCgmZWxlbWVudCkKICAgICAsIG1fcGFyZW50U3R5bGUocGFyZW50U3R5bGUp
Ci0gICAgLCBtX3JlZ2lvbkZvclN0eWxpbmcocmVnaW9uRm9yU3R5bGluZykKICAgICAsIG1fZWxl
bWVudExpbmtTdGF0ZShlbGVtZW50LmRvY3VtZW50KCkudmlzaXRlZExpbmtTdGF0ZSgpLmRldGVy
bWluZUxpbmtTdGF0ZShlbGVtZW50KSkKICAgICAsIG1fc2VsZWN0b3JGaWx0ZXIoc2VsZWN0b3JG
aWx0ZXIpCiB7CkBAIC0zNDIsMTEgKzMzOSwxMSBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNBdFNo
YWRvd0JvdW5kYXJ5KGNvCiAgICAgcmV0dXJuIHBhcmVudE5vZGUgJiYgcGFyZW50Tm9kZS0+aXNT
aGFkb3dSb290KCk7CiB9CiAKLUVsZW1lbnRTdHlsZSBTdHlsZVJlc29sdmVyOjpzdHlsZUZvckVs
ZW1lbnQoY29uc3QgRWxlbWVudCYgZWxlbWVudCwgY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudFN0
eWxlLCBjb25zdCBSZW5kZXJTdHlsZSogcGFyZW50Qm94U3R5bGUsIFJ1bGVNYXRjaGluZ0JlaGF2
aW9yIG1hdGNoaW5nQmVoYXZpb3IsIGNvbnN0IFJlbmRlclJlZ2lvbiogcmVnaW9uRm9yU3R5bGlu
ZywgY29uc3QgU2VsZWN0b3JGaWx0ZXIqIHNlbGVjdG9yRmlsdGVyKQorRWxlbWVudFN0eWxlIFN0
eWxlUmVzb2x2ZXI6OnN0eWxlRm9yRWxlbWVudChjb25zdCBFbGVtZW50JiBlbGVtZW50LCBjb25z
dCBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKiBwYXJlbnRCb3hT
dHlsZSwgUnVsZU1hdGNoaW5nQmVoYXZpb3IgbWF0Y2hpbmdCZWhhdmlvciwgY29uc3QgU2VsZWN0
b3JGaWx0ZXIqIHNlbGVjdG9yRmlsdGVyKQogewogICAgIFJFTEVBU0VfQVNTRVJUKCFtX2lzRGVs
ZXRlZCk7CiAKLSAgICBtX3N0YXRlID0gU3RhdGUoZWxlbWVudCwgcGFyZW50U3R5bGUsIG1fb3Zl
cnJpZGVEb2N1bWVudEVsZW1lbnRTdHlsZSwgcmVnaW9uRm9yU3R5bGluZywgc2VsZWN0b3JGaWx0
ZXIpOworICAgIG1fc3RhdGUgPSBTdGF0ZShlbGVtZW50LCBwYXJlbnRTdHlsZSwgbV9vdmVycmlk
ZURvY3VtZW50RWxlbWVudFN0eWxlLCBzZWxlY3RvckZpbHRlcik7CiAgICAgU3RhdGUmIHN0YXRl
ID0gbV9zdGF0ZTsKIAogICAgIGlmIChzdGF0ZS5wYXJlbnRTdHlsZSgpKSB7CkBAIC0zNzMsNyAr
MzcwLDYgQEAgRWxlbWVudFN0eWxlIFN0eWxlUmVzb2x2ZXI6OnN0eWxlRm9yRWxlbQogICAgIENT
U0RlZmF1bHRTdHlsZVNoZWV0czo6ZW5zdXJlRGVmYXVsdFN0eWxlU2hlZXRzRm9yRWxlbWVudChl
bGVtZW50KTsKIAogICAgIEVsZW1lbnRSdWxlQ29sbGVjdG9yIGNvbGxlY3RvcihlbGVtZW50LCBt
X3J1bGVTZXRzLCBtX3N0YXRlLnNlbGVjdG9yRmlsdGVyKCkpOwotICAgIGNvbGxlY3Rvci5zZXRS
ZWdpb25Gb3JTdHlsaW5nKHJlZ2lvbkZvclN0eWxpbmcpOwogICAgIGNvbGxlY3Rvci5zZXRNZWRp
dW0oJm1fbWVkaWFRdWVyeUV2YWx1YXRvcik7CiAKICAgICBpZiAobWF0Y2hpbmdCZWhhdmlvciA9
PSBNYXRjaE9ubHlVc2VyQWdlbnRSdWxlcykKQEAgLTEwNTksMjcgKzEwNTUsNiBAQCB2b2lkIFN0
eWxlUmVzb2x2ZXI6OmFkanVzdFJlbmRlclN0eWxlKFJlCiAgICAgfQogfQogCi1ib29sIFN0eWxl
UmVzb2x2ZXI6OmNoZWNrUmVnaW9uU3R5bGUoY29uc3QgRWxlbWVudCogcmVnaW9uRWxlbWVudCkK
LXsKLSAgICB1bnNpZ25lZCBydWxlc1NpemUgPSBtX3J1bGVTZXRzLmF1dGhvclN0eWxlKCkucmVn
aW9uU2VsZWN0b3JzQW5kUnVsZVNldHMoKS5zaXplKCk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IHJ1bGVzU2l6ZTsgKytpKSB7Ci0gICAgICAgIEFTU0VSVChtX3J1bGVTZXRzLmF1dGhv
clN0eWxlKCkucmVnaW9uU2VsZWN0b3JzQW5kUnVsZVNldHMoKS5hdChpKS5ydWxlU2V0LmdldCgp
KTsKLSAgICAgICAgaWYgKGNoZWNrUmVnaW9uU2VsZWN0b3IobV9ydWxlU2V0cy5hdXRob3JTdHls
ZSgpLnJlZ2lvblNlbGVjdG9yc0FuZFJ1bGVTZXRzKCkuYXQoaSkuc2VsZWN0b3IsIHJlZ2lvbkVs
ZW1lbnQpKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgaWYgKG1fcnVs
ZVNldHMudXNlclN0eWxlKCkpIHsKLSAgICAgICAgcnVsZXNTaXplID0gbV9ydWxlU2V0cy51c2Vy
U3R5bGUoKS0+cmVnaW9uU2VsZWN0b3JzQW5kUnVsZVNldHMoKS5zaXplKCk7Ci0gICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBydWxlc1NpemU7ICsraSkgewotICAgICAgICAgICAgQVNT
RVJUKG1fcnVsZVNldHMudXNlclN0eWxlKCktPnJlZ2lvblNlbGVjdG9yc0FuZFJ1bGVTZXRzKCku
YXQoaSkucnVsZVNldC5nZXQoKSk7Ci0gICAgICAgICAgICBpZiAoY2hlY2tSZWdpb25TZWxlY3Rv
cihtX3J1bGVTZXRzLnVzZXJTdHlsZSgpLT5yZWdpb25TZWxlY3RvcnNBbmRSdWxlU2V0cygpLmF0
KGkpLnNlbGVjdG9yLCByZWdpb25FbGVtZW50KSkKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiBmYWxzZTsKLX0KLQogc3RhdGljIHZv
aWQgY2hlY2tGb3JPcmllbnRhdGlvbkNoYW5nZShSZW5kZXJTdHlsZSogc3R5bGUpCiB7CiAgICAg
Rm9udE9yaWVudGF0aW9uIGZvbnRPcmllbnRhdGlvbjsKQEAgLTE1MDQsMjEgKzE0NzksNiBAQCBz
dGF0aWMgaW5saW5lIGJvb2wgaXNWYWxpZE1hcmtlclN0eWxlUHJvCiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCi0vLyBodHRwOi8vZGV2LnczLm9yZy9jc3N3Zy9jc3MzLXJlZ2lvbnMvI3RoZS1hdC1y
ZWdpb24tc3R5bGUtcnVsZQotLy8gRklYTUU6IEFkZCBpbmNyZW1lbnRhbCBzdXBwb3J0IGZvciBv
dGhlciByZWdpb24gc3R5bGluZyBwcm9wZXJ0aWVzLgotc3RhdGljIGlubGluZSBib29sIGlzVmFs
aWRSZWdpb25TdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5SUQgaWQpCi17Ci0gICAgc3dpdGNoIChp
ZCkgewotICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3I6Ci0gICAgY2FzZSBDU1NQ
cm9wZXJ0eUNvbG9yOgotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBkZWZhdWx0OgotICAgICAg
ICBicmVhazsKLSAgICB9Ci0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KICNpZiBFTkFCTEUoVklE
RU9fVFJBQ0spCiBzdGF0aWMgaW5saW5lIGJvb2wgaXNWYWxpZEN1ZVN0eWxlUHJvcGVydHkoQ1NT
UHJvcGVydHlJRCBpZCkKIHsKQEAgLTIxNzksOCArMjEzOSw2IEBAIHZvaWQgU3R5bGVSZXNvbHZl
cjo6Q2FzY2FkZWRQcm9wZXJ0aWVzOjoKICAgICAgICAgfQogICAgICAgICBDU1NQcm9wZXJ0eUlE
IHByb3BlcnR5SUQgPSBjdXJyZW50LmlkKCk7CiAKLSAgICAgICAgaWYgKHByb3BlcnR5V2hpdGVs
aXN0VHlwZSA9PSBQcm9wZXJ0eVdoaXRlbGlzdFJlZ2lvbiAmJiAhaXNWYWxpZFJlZ2lvblN0eWxl
UHJvcGVydHkocHJvcGVydHlJRCkpCi0gICAgICAgICAgICBjb250aW51ZTsKICNpZiBFTkFCTEUo
VklERU9fVFJBQ0spCiAgICAgICAgIGlmIChwcm9wZXJ0eVdoaXRlbGlzdFR5cGUgPT0gUHJvcGVy
dHlXaGl0ZWxpc3RDdWUgJiYgIWlzVmFsaWRDdWVTdHlsZVByb3BlcnR5KHByb3BlcnR5SUQpKQog
ICAgICAgICAgICAgY29udGludWU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNv
bHZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmgJ
KHJldmlzaW9uIDIyMjIwNCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTYyLDcgKzYyLDYgQEAgY2xhc3MgS2V5ZnJhbWVMaXN0OwogY2xh
c3MgS2V5ZnJhbWVWYWx1ZTsKIGNsYXNzIE1lZGlhUXVlcnlFdmFsdWF0b3I7CiBjbGFzcyBOb2Rl
OwotY2xhc3MgUmVuZGVyUmVnaW9uOwogY2xhc3MgUmVuZGVyU2Nyb2xsYmFyOwogY2xhc3MgUnVs
ZURhdGE7CiBjbGFzcyBSdWxlU2V0OwpAQCAtNzYsNyArNzUsNiBAQCBjbGFzcyBTdHlsZVByb3Bl
cnRpZXM7CiBjbGFzcyBTdHlsZVJ1bGU7CiBjbGFzcyBTdHlsZVJ1bGVLZXlmcmFtZXM7CiBjbGFz
cyBTdHlsZVJ1bGVQYWdlOwotY2xhc3MgU3R5bGVSdWxlUmVnaW9uOwogY2xhc3MgU3R5bGVTaGVl
dDsKIGNsYXNzIFN0eWxlU2hlZXRMaXN0OwogY2xhc3MgU3R5bGVkRWxlbWVudDsKQEAgLTEzMSw3
ICsxMjksNyBAQCBwdWJsaWM6CiAgICAgU3R5bGVSZXNvbHZlcihEb2N1bWVudCYpOwogICAgIH5T
dHlsZVJlc29sdmVyKCk7CiAKLSAgICBFbGVtZW50U3R5bGUgc3R5bGVGb3JFbGVtZW50KGNvbnN0
IEVsZW1lbnQmLCBjb25zdCBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0
eWxlKiBwYXJlbnRCb3hTdHlsZSA9IG51bGxwdHIsIFJ1bGVNYXRjaGluZ0JlaGF2aW9yID0gTWF0
Y2hBbGxSdWxlcywgY29uc3QgUmVuZGVyUmVnaW9uKiByZWdpb25Gb3JTdHlsaW5nID0gbnVsbHB0
ciwgY29uc3QgU2VsZWN0b3JGaWx0ZXIqID0gbnVsbHB0cik7CisgICAgRWxlbWVudFN0eWxlIHN0
eWxlRm9yRWxlbWVudChjb25zdCBFbGVtZW50JiwgY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudFN0
eWxlLCBjb25zdCBSZW5kZXJTdHlsZSogcGFyZW50Qm94U3R5bGUgPSBudWxscHRyLCBSdWxlTWF0
Y2hpbmdCZWhhdmlvciA9IE1hdGNoQWxsUnVsZXMsIGNvbnN0IFNlbGVjdG9yRmlsdGVyKiA9IG51
bGxwdHIpOwogCiAgICAgdm9pZCBrZXlmcmFtZVN0eWxlc0ZvckFuaW1hdGlvbihjb25zdCBFbGVt
ZW50JiwgY29uc3QgUmVuZGVyU3R5bGUqLCBLZXlmcmFtZUxpc3QmKTsKIApAQCAtMjExLDggKzIw
OSw2IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYWRkS2V5ZnJhbWVTdHlsZShSZWY8U3R5bGVSdWxl
S2V5ZnJhbWVzPiYmKTsKIAotICAgIGJvb2wgY2hlY2tSZWdpb25TdHlsZShjb25zdCBFbGVtZW50
KiByZWdpb25FbGVtZW50KTsKLQogICAgIGJvb2wgdXNlc0ZpcnN0TGluZVJ1bGVzKCkgY29uc3Qg
eyByZXR1cm4gbV9ydWxlU2V0cy5mZWF0dXJlcygpLnVzZXNGaXJzdExpbmVSdWxlczsgfQogICAg
IGJvb2wgdXNlc0ZpcnN0TGV0dGVyUnVsZXMoKSBjb25zdCB7IHJldHVybiBtX3J1bGVTZXRzLmZl
YXR1cmVzKCkudXNlc0ZpcnN0TGV0dGVyUnVsZXM7IH0KICAgICAKQEAgLTM0Niw3ICszNDIsNyBA
QCBwdWJsaWM6CiAgICAgY2xhc3MgU3RhdGUgewogICAgIHB1YmxpYzoKICAgICAgICAgU3RhdGUo
KSB7IH0KLSAgICAgICAgU3RhdGUoY29uc3QgRWxlbWVudCYsIGNvbnN0IFJlbmRlclN0eWxlKiBw
YXJlbnRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIGRvY3VtZW50RWxlbWVudFN0eWxlID0gbnVs
bHB0ciwgY29uc3QgUmVuZGVyUmVnaW9uKiByZWdpb25Gb3JTdHlsaW5nID0gbnVsbHB0ciwgY29u
c3QgU2VsZWN0b3JGaWx0ZXIqID0gbnVsbHB0cik7CisgICAgICAgIFN0YXRlKGNvbnN0IEVsZW1l
bnQmLCBjb25zdCBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKiBk
b2N1bWVudEVsZW1lbnRTdHlsZSA9IG51bGxwdHIsIGNvbnN0IFNlbGVjdG9yRmlsdGVyKiA9IG51
bGxwdHIpOwogCiAgICAgcHVibGljOgogICAgICAgICB2b2lkIGNsZWFyKCk7CkBAIC0zNjIsNyAr
MzU4LDYgQEAgcHVibGljOgogICAgICAgICBjb25zdCBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUo
KSBjb25zdCB7IHJldHVybiBtX3BhcmVudFN0eWxlOyB9CiAgICAgICAgIGNvbnN0IFJlbmRlclN0
eWxlKiByb290RWxlbWVudFN0eWxlKCkgY29uc3QgeyByZXR1cm4gbV9yb290RWxlbWVudFN0eWxl
OyB9CiAKLSAgICAgICAgY29uc3QgUmVuZGVyUmVnaW9uKiByZWdpb25Gb3JTdHlsaW5nKCkgY29u
c3QgeyByZXR1cm4gbV9yZWdpb25Gb3JTdHlsaW5nOyB9CiAgICAgICAgIEVJbnNpZGVMaW5rIGVs
ZW1lbnRMaW5rU3RhdGUoKSBjb25zdCB7IHJldHVybiBtX2VsZW1lbnRMaW5rU3RhdGU7IH0KIAog
ICAgICAgICB2b2lkIHNldEFwcGx5UHJvcGVydHlUb1JlZ3VsYXJTdHlsZShib29sIGlzQXBwbHkp
IHsgbV9hcHBseVByb3BlcnR5VG9SZWd1bGFyU3R5bGUgPSBpc0FwcGx5OyB9CkBAIC00MTUsOCAr
NDEwLDYgQEAgcHVibGljOgogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IG1f
b3duZWRQYXJlbnRTdHlsZTsKICAgICAgICAgY29uc3QgUmVuZGVyU3R5bGUqIG1fcm9vdEVsZW1l
bnRTdHlsZSB7IG51bGxwdHIgfTsKIAotICAgICAgICBjb25zdCBSZW5kZXJSZWdpb24qIG1fcmVn
aW9uRm9yU3R5bGluZyB7IG51bGxwdHIgfTsKLSAgICAgICAgCiAgICAgICAgIEVJbnNpZGVMaW5r
IG1fZWxlbWVudExpbmtTdGF0ZSB7IE5vdEluc2lkZUxpbmsgfTsKIAogICAgICAgICBib29sIG1f
YXBwbHlQcm9wZXJ0eVRvUmVndWxhclN0eWxlIHsgdHJ1ZSB9OwpAQCAtNTQxLDE5ICs1MzQsNCBA
QCBpbmxpbmUgYm9vbCBTdHlsZVJlc29sdmVyOjpoYXNTZWxlY3RvckZvCiAgICAgcmV0dXJuIG1f
cnVsZVNldHMuZmVhdHVyZXMoKS5pZHNJblJ1bGVzLmNvbnRhaW5zKGlkVmFsdWUpOwogfQogCi1p
bmxpbmUgYm9vbCBjaGVja1JlZ2lvblNlbGVjdG9yKGNvbnN0IENTU1NlbGVjdG9yKiByZWdpb25T
ZWxlY3RvciwgY29uc3QgRWxlbWVudCogcmVnaW9uRWxlbWVudCkKLXsKLSAgICBpZiAoIXJlZ2lv
blNlbGVjdG9yIHx8ICFyZWdpb25FbGVtZW50KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAg
ICBTZWxlY3RvckNoZWNrZXIgc2VsZWN0b3JDaGVja2VyKHJlZ2lvbkVsZW1lbnQtPmRvY3VtZW50
KCkpOwotICAgIGZvciAoY29uc3QgQ1NTU2VsZWN0b3IqIHMgPSByZWdpb25TZWxlY3Rvcjsgczsg
cyA9IENTU1NlbGVjdG9yTGlzdDo6bmV4dChzKSkgewotICAgICAgICBTZWxlY3RvckNoZWNrZXI6
OkNoZWNraW5nQ29udGV4dCBzZWxlY3RvckNoZWNraW5nQ29udGV4dChTZWxlY3RvckNoZWNrZXI6
Ok1vZGU6OlF1ZXJ5aW5nUnVsZXMpOwotICAgICAgICB1bnNpZ25lZCBpZ25vcmVkU3BlY2lmaWNp
dHk7Ci0gICAgICAgIGlmIChzZWxlY3RvckNoZWNrZXIubWF0Y2goKnMsICpyZWdpb25FbGVtZW50
LCBzZWxlY3RvckNoZWNraW5nQ29udGV4dCwgaWdub3JlZFNwZWNpZmljaXR5KSkKLSAgICAgICAg
ICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuY3BwCShyZXZpc2lvbiAy
MjIyMDQpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzUsNyArMzUsNiBAQAogI2luY2x1ZGUgIk1lZGlhTGlzdC5oIgogI2luY2x1ZGUgIlN0
eWxlUHJvcGVydGllcy5oIgogI2luY2x1ZGUgIlN0eWxlUnVsZUltcG9ydC5oIgotI2luY2x1ZGUg
IldlYktpdENTU1JlZ2lvblJ1bGUuaCIKICNpbmNsdWRlICJXZWJLaXRDU1NWaWV3cG9ydFJ1bGUu
aCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNzQsMTEgKzczLDYgQEAgdm9pZCBTdHlsZVJ1
bGVCYXNlOjpkZXN0cm95KCkKICAgICBjYXNlIFN1cHBvcnRzOgogICAgICAgICBkZWxldGUgZG93
bmNhc3Q8U3R5bGVSdWxlU3VwcG9ydHM+KHRoaXMpOwogICAgICAgICByZXR1cm47Ci0jaWYgRU5B
QkxFKENTU19SRUdJT05TKQotICAgIGNhc2UgUmVnaW9uOgotICAgICAgICBkZWxldGUgZG93bmNh
c3Q8U3R5bGVSdWxlUmVnaW9uPih0aGlzKTsKLSAgICAgICAgcmV0dXJuOwotI2VuZGlmCiAgICAg
Y2FzZSBJbXBvcnQ6CiAgICAgICAgIGRlbGV0ZSBkb3duY2FzdDxTdHlsZVJ1bGVJbXBvcnQ+KHRo
aXMpOwogICAgICAgICByZXR1cm47CkBAIC0xMDAsOSArOTQsNiBAQCB2b2lkIFN0eWxlUnVsZUJh
c2U6OmRlc3Ryb3koKQogICAgICAgICBkZWxldGUgZG93bmNhc3Q8U3R5bGVSdWxlQ2hhcnNldD4o
dGhpcyk7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIFVua25vd246Ci0jaWYgIUVOQUJMRShD
U1NfUkVHSU9OUykKLSAgICBjYXNlIFJlZ2lvbjoKLSNlbmRpZgogICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTEyMiwxMCArMTEzLDYgQEAg
UmVmPFN0eWxlUnVsZUJhc2U+IFN0eWxlUnVsZUJhc2U6OmNvcHkoKQogICAgICAgICByZXR1cm4g
ZG93bmNhc3Q8U3R5bGVSdWxlTWVkaWE+KCp0aGlzKS5jb3B5KCk7CiAgICAgY2FzZSBTdXBwb3J0
czoKICAgICAgICAgcmV0dXJuIGRvd25jYXN0PFN0eWxlUnVsZVN1cHBvcnRzPigqdGhpcykuY29w
eSgpOwotI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKLSAgICBjYXNlIFJlZ2lvbjoKLSAgICAgICAg
cmV0dXJuIGRvd25jYXN0PFN0eWxlUnVsZVJlZ2lvbj4oKnRoaXMpLmNvcHkoKTsKLSNlbmRpZgog
ICAgIGNhc2UgS2V5ZnJhbWVzOgogICAgICAgICByZXR1cm4gZG93bmNhc3Q8U3R5bGVSdWxlS2V5
ZnJhbWVzPigqdGhpcykuY29weSgpOwogI2lmIEVOQUJMRShDU1NfREVWSUNFX0FEQVBUQVRJT04p
CkBAIC0xMzksOSArMTI2LDYgQEAgUmVmPFN0eWxlUnVsZUJhc2U+IFN0eWxlUnVsZUJhc2U6OmNv
cHkoKQogICAgIGNhc2UgVW5rbm93bjoKICAgICBjYXNlIENoYXJzZXQ6CiAgICAgY2FzZSBLZXlm
cmFtZToKLSNpZiAhRU5BQkxFKENTU19SRUdJT05TKQotICAgIGNhc2UgUmVnaW9uOgotI2VuZGlm
CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBDUkFTSCgpOwpAQCAtMTY3LDExICsxNTEsNiBA
QCBSZWZQdHI8Q1NTUnVsZT4gU3R5bGVSdWxlQmFzZTo6Y3JlYXRlQ1NTCiAgICAgY2FzZSBTdXBw
b3J0czoKICAgICAgICAgcnVsZSA9IENTU1N1cHBvcnRzUnVsZTo6Y3JlYXRlKGRvd25jYXN0PFN0
eWxlUnVsZVN1cHBvcnRzPihzZWxmKSwgcGFyZW50U2hlZXQpOwogICAgICAgICBicmVhazsKLSNp
ZiBFTkFCTEUoQ1NTX1JFR0lPTlMpCi0gICAgY2FzZSBSZWdpb246Ci0gICAgICAgIHJ1bGUgPSBX
ZWJLaXRDU1NSZWdpb25SdWxlOjpjcmVhdGUoZG93bmNhc3Q8U3R5bGVSdWxlUmVnaW9uPihzZWxm
KSwgcGFyZW50U2hlZXQpOwotICAgICAgICBicmVhazsKLSNlbmRpZgogICAgIGNhc2UgSW1wb3J0
OgogICAgICAgICBydWxlID0gQ1NTSW1wb3J0UnVsZTo6Y3JlYXRlKGRvd25jYXN0PFN0eWxlUnVs
ZUltcG9ydD4oc2VsZiksIHBhcmVudFNoZWV0KTsKICAgICAgICAgYnJlYWs7CkBAIC0xODksOSAr
MTY4LDYgQEAgUmVmUHRyPENTU1J1bGU+IFN0eWxlUnVsZUJhc2U6OmNyZWF0ZUNTUwogICAgIGNh
c2UgVW5rbm93bjoKICAgICBjYXNlIENoYXJzZXQ6CiAgICAgY2FzZSBLZXlmcmFtZToKLSNpZiAh
RU5BQkxFKENTU19SRUdJT05TKQotICAgIGNhc2UgUmVnaW9uOgotI2VuZGlmCiAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CkBAIC00
MjcsMjUgKzQwMyw2IEBAIFN0eWxlUnVsZVN1cHBvcnRzOjpTdHlsZVJ1bGVTdXBwb3J0cyhjb24K
IHsKIH0KIAotU3R5bGVSdWxlUmVnaW9uOjpTdHlsZVJ1bGVSZWdpb24oVmVjdG9yPHN0ZDo6dW5p
cXVlX3B0cjxDU1NQYXJzZXJTZWxlY3Rvcj4+KiBzZWxlY3RvcnMsIFZlY3RvcjxSZWZQdHI8U3R5
bGVSdWxlQmFzZT4+JiBhZG9wdFJ1bGVzKQotICAgIDogU3R5bGVSdWxlR3JvdXAoUmVnaW9uLCBh
ZG9wdFJ1bGVzKQotewotICAgIG1fc2VsZWN0b3JMaXN0LmFkb3B0U2VsZWN0b3JWZWN0b3IoKnNl
bGVjdG9ycyk7Ci19Ci0KLVN0eWxlUnVsZVJlZ2lvbjo6U3R5bGVSdWxlUmVnaW9uKENTU1NlbGVj
dG9yTGlzdCYgc2VsZWN0b3JzLCBWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZUJhc2U+PiYgYWRvcHRS
dWxlcykKLSAgICA6IFN0eWxlUnVsZUdyb3VwKFJlZ2lvbiwgYWRvcHRSdWxlcykKLSAgICAsIG1f
c2VsZWN0b3JMaXN0KFdURk1vdmUoc2VsZWN0b3JzKSkKLXsKLX0KLQotU3R5bGVSdWxlUmVnaW9u
OjpTdHlsZVJ1bGVSZWdpb24oY29uc3QgU3R5bGVSdWxlUmVnaW9uJiBvKQotICAgIDogU3R5bGVS
dWxlR3JvdXAobykKLSAgICAsIG1fc2VsZWN0b3JMaXN0KG8ubV9zZWxlY3Rvckxpc3QpCi17Ci19
Ci0KLQogI2lmIEVOQUJMRShDU1NfREVWSUNFX0FEQVBUQVRJT04pCiBTdHlsZVJ1bGVWaWV3cG9y
dDo6U3R5bGVSdWxlVmlld3BvcnQoUmVmPFN0eWxlUHJvcGVydGllcz4mJiBwcm9wZXJ0aWVzKQog
ICAgIDogU3R5bGVSdWxlQmFzZShWaWV3cG9ydCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9T
dHlsZVJ1bGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlLmgJ
KHJldmlzaW9uIDIyMjIwNCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuaAkod29y
a2luZyBjb3B5KQpAQCAtNTUsNyArNTUsNiBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKENTU19ERVZJ
Q0VfQURBUFRBVElPTikKICAgICAgICAgVmlld3BvcnQgPSAxNSwKICNlbmRpZgotICAgICAgICBS
ZWdpb24gPSAxNiwKICAgICB9OwogCiAgICAgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gc3Rh
dGljX2Nhc3Q8VHlwZT4obV90eXBlKTsgfQpAQCAtNjgsNyArNjcsNiBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBpc01lZGlhUnVsZSgpIGNvbnN0IHsgcmV0dXJuIHR5cGUoKSA9PSBNZWRpYTsgfQogICAg
IGJvb2wgaXNQYWdlUnVsZSgpIGNvbnN0IHsgcmV0dXJuIHR5cGUoKSA9PSBQYWdlOyB9CiAgICAg
Ym9vbCBpc1N0eWxlUnVsZSgpIGNvbnN0IHsgcmV0dXJuIHR5cGUoKSA9PSBTdHlsZTsgfQotICAg
IGJvb2wgaXNSZWdpb25SdWxlKCkgY29uc3QgeyByZXR1cm4gdHlwZSgpID09IFJlZ2lvbjsgfQog
ICAgIGJvb2wgaXNTdXBwb3J0c1J1bGUoKSBjb25zdCB7IHJldHVybiB0eXBlKCkgPT0gU3VwcG9y
dHM7IH0KICNpZiBFTkFCTEUoQ1NTX0RFVklDRV9BREFQVEFUSU9OKQogICAgIGJvb2wgaXNWaWV3
cG9ydFJ1bGUoKSBjb25zdCB7IHJldHVybiB0eXBlKCkgPT0gVmlld3BvcnQ7IH0KQEAgLTI3Niwz
MSArMjc0LDYgQEAgcHJpdmF0ZToKICAgICBib29sIG1fY29uZGl0aW9uSXNTdXBwb3J0ZWQ7CiB9
OwogCi1jbGFzcyBTdHlsZVJ1bGVSZWdpb24gZmluYWwgOiBwdWJsaWMgU3R5bGVSdWxlR3JvdXAg
ewotcHVibGljOgotICAgIHN0YXRpYyBSZWY8U3R5bGVSdWxlUmVnaW9uPiBjcmVhdGUoVmVjdG9y
PHN0ZDo6dW5pcXVlX3B0cjxDU1NQYXJzZXJTZWxlY3Rvcj4+KiBzZWxlY3RvcnMsIFZlY3RvcjxS
ZWZQdHI8U3R5bGVSdWxlQmFzZT4+JiBhZG9wdFJ1bGVzKQotICAgIHsKLSAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgU3R5bGVSdWxlUmVnaW9uKHNlbGVjdG9ycywgYWRvcHRSdWxlcykpOwot
ICAgIH0KLSAgICAKLSAgICBzdGF0aWMgUmVmPFN0eWxlUnVsZVJlZ2lvbj4gY3JlYXRlKENTU1Nl
bGVjdG9yTGlzdCYgc2VsZWN0b3JzLCBWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZUJhc2U+PiYgYWRv
cHRSdWxlcykKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0eWxlUnVsZVJl
Z2lvbihzZWxlY3RvcnMsIGFkb3B0UnVsZXMpKTsKLSAgICB9Ci0gICAgCi0gICAgY29uc3QgQ1NT
U2VsZWN0b3JMaXN0JiBzZWxlY3Rvckxpc3QoKSBjb25zdCB7IHJldHVybiBtX3NlbGVjdG9yTGlz
dDsgfQotCi0gICAgUmVmPFN0eWxlUnVsZVJlZ2lvbj4gY29weSgpIGNvbnN0IHsgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgU3R5bGVSdWxlUmVnaW9uKCp0aGlzKSk7IH0KLQotcHJpdmF0ZToKLSAgICBT
dHlsZVJ1bGVSZWdpb24oVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxDU1NQYXJzZXJTZWxlY3Rvcj4+
KiwgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGVCYXNlPj4mIGFkb3B0UnVsZXMpOwotICAgIFN0eWxl
UnVsZVJlZ2lvbihDU1NTZWxlY3Rvckxpc3QmLCBWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZUJhc2U+
PiYpOwotICAgIAotICAgIFN0eWxlUnVsZVJlZ2lvbihjb25zdCBTdHlsZVJ1bGVSZWdpb24mKTsK
LSAgICAKLSAgICBDU1NTZWxlY3Rvckxpc3QgbV9zZWxlY3Rvckxpc3Q7Ci19OwotCiAjaWYgRU5B
QkxFKENTU19ERVZJQ0VfQURBUFRBVElPTikKIGNsYXNzIFN0eWxlUnVsZVZpZXdwb3J0IGZpbmFs
IDogcHVibGljIFN0eWxlUnVsZUJhc2UgewogcHVibGljOgpAQCAtMzc5LDEwICszNTIsNiBAQCBT
UEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OlN0CiAgICAgc3RhdGljIGJvb2wg
aXNUeXBlKGNvbnN0IFdlYkNvcmU6OlN0eWxlUnVsZUJhc2UmIHJ1bGUpIHsgcmV0dXJuIHJ1bGUu
aXNTdXBwb3J0c1J1bGUoKTsgfQogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQogCi1TUEVD
SUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OlN0eWxlUnVsZVJlZ2lvbikKLSAgICBz
dGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6U3R5bGVSdWxlQmFzZSYgcnVsZSkgeyBy
ZXR1cm4gcnVsZS5pc1JlZ2lvblJ1bGUoKTsgfQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQo
KQotCiAjaWYgRU5BQkxFKENTU19ERVZJQ0VfQURBUFRBVElPTikKIFNQRUNJQUxJWkVfVFlQRV9U
UkFJVFNfQkVHSU4oV2ViQ29yZTo6U3R5bGVSdWxlVmlld3BvcnQpCiAgICAgc3RhdGljIGJvb2wg
aXNUeXBlKGNvbnN0IFdlYkNvcmU6OlN0eWxlUnVsZUJhc2UmIHJ1bGUpIHsgcmV0dXJuIHJ1bGUu
aXNWaWV3cG9ydFJ1bGUoKTsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXRD
b250ZW50cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXRD
b250ZW50cy5jcHAJKHJldmlzaW9uIDIyMjIwNCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHls
ZVNoZWV0Q29udGVudHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NTAsMTAgKzQ1MCw2IEBAIHN0
YXRpYyBib29sIHRyYXZlcnNlU3VicmVzb3VyY2VzSW5SdWxlcygKICAgICAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIGNhc2Ug
U3R5bGVSdWxlQmFzZTo6UmVnaW9uOgotICAgICAgICAgICAgaWYgKHRyYXZlcnNlU3VicmVzb3Vy
Y2VzSW5SdWxlcyhkb3duY2FzdDxTdHlsZVJ1bGVSZWdpb24+KCpydWxlKS5jaGlsZFJ1bGVzKCks
IGhhbmRsZXIpKQotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIGNhc2UgU3R5bGVSdWxlQmFzZTo6SW1wb3J0OgogICAgICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiAjaWYgQVNTRVJUX0RJU0FCTEVECkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9jc3MvV2ViS2l0Q1NTUmVnaW9uUnVsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvY3NzL1dlYktpdENTU1JlZ2lvblJ1bGUuY3BwCShyZXZpc2lvbiAyMjIyMDQpCisrKyBT
b3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTUmVnaW9uUnVsZS5jcHAJKG5vbmV4aXN0ZW50KQpA
QCAtMSw2NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFkb2JlIFN5c3RlbXMg
SW5jb3Jwb3JhdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEy
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlCi0gKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZwotICogICAgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKLSAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nCi0gKiAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMKLSAqICAgIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIg
QkUKLSAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwKLSAqIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IKLSAqIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRgotICogVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GCi0gKiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29u
ZmlnLmgiCi0KLSNpbmNsdWRlICJXZWJLaXRDU1NSZWdpb25SdWxlLmgiCi0KLSNpbmNsdWRlICJD
U1NSdWxlTGlzdC5oIgotI2luY2x1ZGUgIlN0eWxlUnVsZS5oIgotI2luY2x1ZGUgPHd0Zi90ZXh0
L1N0cmluZ0J1aWxkZXIuaD4KLQotI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotV2ViS2l0Q1NTUmVnaW9uUnVsZTo6V2ViS2l0Q1NTUmVnaW9uUnVsZShTdHls
ZVJ1bGVSZWdpb24mIHJlZ2lvblJ1bGUsIENTU1N0eWxlU2hlZXQqIHBhcmVudCkKLSAgICA6IENT
U0dyb3VwaW5nUnVsZShyZWdpb25SdWxlLCBwYXJlbnQpCi17Ci19Ci0KLVN0cmluZyBXZWJLaXRD
U1NSZWdpb25SdWxlOjpjc3NUZXh0KCkgY29uc3QKLXsKLSAgICBTdHJpbmdCdWlsZGVyIHJlc3Vs
dDsKLSAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiQC13ZWJraXQtcmVnaW9uICIpOwotCi0gICAg
Ly8gRmlyc3QgYWRkIHRoZSBzZWxlY3RvcnMuCi0gICAgZG93bmNhc3Q8U3R5bGVSdWxlUmVnaW9u
PihtX2dyb3VwUnVsZS5nZXQoKSkuc2VsZWN0b3JMaXN0KCkuYnVpbGRTZWxlY3RvcnNUZXh0KHJl
c3VsdCk7Ci0KLSAgICAvLyBUaGVuIGFkZCB0aGUgcnVsZXMuCi0gICAgcmVzdWx0LmFwcGVuZExp
dGVyYWwoIiB7IFxuIik7Ci0gICAgYXBwZW5kQ3NzVGV4dEZvckl0ZW1zKHJlc3VsdCk7Ci0gICAg
cmVzdWx0LmFwcGVuZCgnfScpOwotICAgIHJldHVybiByZXN1bHQudG9TdHJpbmcoKTsKLX0KLQot
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nz
cy9XZWJLaXRDU1NSZWdpb25SdWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3Nz
L1dlYktpdENTU1JlZ2lvblJ1bGUuaAkocmV2aXNpb24gMjIyMjA0KQorKysgU291cmNlL1dlYkNv
cmUvY3NzL1dlYktpdENTU1JlZ2lvblJ1bGUuaAkobm9uZXhpc3RlbnQpCkBAIC0xLDU2ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUKLSAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCi0gKiAgICBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogICAg
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcKLSAqICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscwotICogICAgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVIgIkFTIElTIiBB
TkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBCRQotICogTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LAotICogT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUgotICogVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GCi0gKiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YKLSAqIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAi
Q1NTR3JvdXBpbmdSdWxlLmgiCi0KLSNpZiBFTkFCTEUoQ1NTX1JFR0lPTlMpCi0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotY2xhc3MgU3R5bGVSdWxlUmVnaW9uOwotCi1jbGFzcyBXZWJLaXRDU1NS
ZWdpb25SdWxlIGZpbmFsIDogcHVibGljIENTU0dyb3VwaW5nUnVsZSB7Ci1wdWJsaWM6Ci0gICAg
c3RhdGljIFJlZjxXZWJLaXRDU1NSZWdpb25SdWxlPiBjcmVhdGUoU3R5bGVSdWxlUmVnaW9uJiBy
dWxlLCBDU1NTdHlsZVNoZWV0KiBzaGVldCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJLaXRD
U1NSZWdpb25SdWxlKHJ1bGUsIHNoZWV0KSk7IH0KLQotICAgIENTU1J1bGU6OlR5cGUgdHlwZSgp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIFdFQktJVF9SRUdJT05fUlVMRTsgfQotICAgIFN0cmluZyBj
c3NUZXh0KCkgY29uc3QgZmluYWw7Ci0KLXByaXZhdGU6Ci0gICAgV2ViS2l0Q1NTUmVnaW9uUnVs
ZShTdHlsZVJ1bGVSZWdpb24mLCBDU1NTdHlsZVNoZWV0KiBwYXJlbnQpOwotfTsKLQotfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQotCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0NTU19SVUxFKFdlYktp
dENTU1JlZ2lvblJ1bGUsIENTU1J1bGU6OldFQktJVF9SRUdJT05fUlVMRSkKLQotI2VuZGlmIC8v
IEVOQUJMRShDU1NfUkVHSU9OUykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NS
ZWdpb25SdWxlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NT
UmVnaW9uUnVsZS5pZGwJKHJldmlzaW9uIDIyMjIwNCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9X
ZWJLaXRDU1NSZWdpb25SdWxlLmlkbAkobm9uZXhpc3RlbnQpCkBAIC0xLDM1ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZQotICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcKLSAqICAgIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiAgICBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZwot
ICogICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzCi0gKiAgICBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUiAiQVMgSVMiIEFORCBB
TlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIEJFCi0gKiBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksCi0g
KiBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SCi0gKiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YKLSAqIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RgotICogU1VDSCBEQU1BR0UuCi0gKi8KLQotWwotICAgIENvbmRpdGlvbmFsPUNTU19SRUdJT05T
LAotXSBpbnRlcmZhY2UgV2ViS2l0Q1NTUmVnaW9uUnVsZSA6IENTU1J1bGUgewotICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSBDU1NSdWxlTGlzdCBjc3NSdWxlczsKLX07Ci0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTQXRSdWxlSUQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTQXRSdWxlSUQuY3BwCShyZXZpc2lvbiAyMjIyMDQpCisrKyBT
b3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU0F0UnVsZUlELmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNTYsMTAgKzU2LDYgQEAgQ1NTQXRSdWxlSUQgY3NzQXRSdWxlSUQoU3RyaW5nVmlldyBuYW1l
KQogICAgICAgICByZXR1cm4gQ1NTQXRSdWxlV2Via2l0S2V5ZnJhbWVzOwogICAgIGlmIChlcXVh
bElnbm9yaW5nQVNDSUlDYXNlKG5hbWUsICJhcHBseSIpKQogICAgICAgICByZXR1cm4gQ1NTQXRS
dWxlQXBwbHk7Ci0jaWYgRU5BQkxFKENTU19SRUdJT05TKQotICAgIGlmIChlcXVhbElnbm9yaW5n
QVNDSUlDYXNlKG5hbWUsICItd2Via2l0LXJlZ2lvbiIpKQotICAgICAgICByZXR1cm4gQ1NTQXRS
dWxlV2Via2l0UmVnaW9uOwotI2VuZGlmCiAgICAgcmV0dXJuIENTU0F0UnVsZUludmFsaWQ7CiB9
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTQXRSdWxlSUQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU0F0UnVsZUlELmgJKHJldmlzaW9u
IDIyMjIwNCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTQXRSdWxlSUQuaAkod29y
a2luZyBjb3B5KQpAQCAtNDcsNyArNDcsNiBAQCBlbnVtIENTU0F0UnVsZUlEIHsKIAogICAgIENT
U0F0UnVsZVdlYmtpdEtleWZyYW1lcyA9IDEwLAogICAgIENTU0F0UnVsZUFwcGx5ID0gMTEsCi0g
ICAgQ1NTQXRSdWxlV2Via2l0UmVnaW9uID0gMTIKIH07CiAKIENTU0F0UnVsZUlEIGNzc0F0UnVs
ZUlEKFN0cmluZ1ZpZXcgbmFtZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NT
U1BhcnNlckZhc3RQYXRocy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL3Bh
cnNlci9DU1NQYXJzZXJGYXN0UGF0aHMuY3BwCShyZXZpc2lvbiAyMjIyMDQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckZhc3RQYXRocy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTYxMywxNyArNjEzLDkgQEAgYm9vbCBDU1NQYXJzZXJGYXN0UGF0aHM6OmlzVmFsaWRLZXl3
b3JkUAogICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZVZpc2libGUgfHwgdmFsdWVJ
RCA9PSBDU1NWYWx1ZUhpZGRlbiB8fCB2YWx1ZUlEID09IENTU1ZhbHVlU2Nyb2xsIHx8IHZhbHVl
SUQgPT0gQ1NTVmFsdWVBdXRvIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVPdmVybGF5IHx8IHZhbHVl
SUQgPT0gQ1NTVmFsdWVXZWJraXRQYWdlZFggfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVdlYmtpdFBh
Z2VkWTsKICAgICBjYXNlIENTU1Byb3BlcnR5QnJlYWtBZnRlcjoKICAgICBjYXNlIENTU1Byb3Bl
cnR5QnJlYWtCZWZvcmU6Ci0gICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlQXV0byB8
fCB2YWx1ZUlEID09IENTU1ZhbHVlQXZvaWQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUF2b2lkUGFn
ZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlUGFnZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlTGVmdCB8
fCB2YWx1ZUlEID09IENTU1ZhbHVlUmlnaHQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVJlY3RvIHx8
IHZhbHVlSUQgPT0gQ1NTVmFsdWVWZXJzbyB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQXZvaWRDb2x1
bW4gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUNvbHVtbgotI2lmIEVOQUJMRShDU1NfUkVHSU9OUykK
LSAgICAgICAgICAgIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVSZWdpb24gfHwgdmFsdWVJRCA9PSBD
U1NWYWx1ZUF2b2lkUmVnaW9uCi0jZW5kaWYKLSAgICAgICAgOworICAgICAgICByZXR1cm4gdmFs
dWVJRCA9PSBDU1NWYWx1ZUF1dG8gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUF2b2lkIHx8IHZhbHVl
SUQgPT0gQ1NTVmFsdWVBdm9pZFBhZ2UgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVBhZ2UgfHwgdmFs
dWVJRCA9PSBDU1NWYWx1ZUxlZnQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVJpZ2h0IHx8IHZhbHVl
SUQgPT0gQ1NTVmFsdWVSZWN0byB8fCB2YWx1ZUlEID09IENTU1ZhbHVlVmVyc28gfHwgdmFsdWVJ
RCA9PSBDU1NWYWx1ZUF2b2lkQ29sdW1uIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVDb2x1bW47CiAg
ICAgY2FzZSBDU1NQcm9wZXJ0eUJyZWFrSW5zaWRlOgotICAgICAgICByZXR1cm4gdmFsdWVJRCA9
PSBDU1NWYWx1ZUF1dG8gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUF2b2lkIHx8IHZhbHVlSUQgPT0g
Q1NTVmFsdWVBdm9pZFBhZ2UgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUF2b2lkQ29sdW1uCi0jaWYg
RU5BQkxFKENTU19SRUdJT05TKQotICAgICAgICAgICAgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUF2
b2lkUmVnaW9uCi0jZW5kaWYKLSAgICAgICAgOworICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBD
U1NWYWx1ZUF1dG8gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUF2b2lkIHx8IHZhbHVlSUQgPT0gQ1NT
VmFsdWVBdm9pZFBhZ2UgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUF2b2lkQ29sdW1uOwogICAgIGNh
c2UgQ1NTUHJvcGVydHlQb2ludGVyRXZlbnRzOgogICAgICAgICAvLyBub25lIHwgdmlzaWJsZVBh
aW50ZWQgfCB2aXNpYmxlRmlsbCB8IHZpc2libGVTdHJva2UgfCB2aXNpYmxlIHwKICAgICAgICAg
Ly8gcGFpbnRlZCB8IGZpbGwgfCBzdHJva2UgfCBhdXRvIHwgYWxsIHwgYm91bmRpbmctYm94CkBA
IC03ODMsMTAgKzc3NSw2IEBAIGJvb2wgQ1NTUGFyc2VyRmFzdFBhdGhzOjppc1ZhbGlkS2V5d29y
ZFAKICAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVOb3JtYWwgfHwgdmFsdWVJRCA9
PSBDU1NWYWx1ZUJyZWFrQWxsIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVLZWVwQWxsIHx8IHZhbHVl
SUQgPT0gQ1NTVmFsdWVCcmVha1dvcmQ7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRl
ckZpdDoKICAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVCb3JkZXIgfHwgdmFsdWVJ
RCA9PSBDU1NWYWx1ZUxpbmVzOwotI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKLSAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0UmVnaW9uRnJhZ21lbnQ6Ci0gICAgICAgIHJldHVybiB2YWx1ZUlEID09
IENTU1ZhbHVlQXV0byB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQnJlYWs7Ci0jZW5kaWYKICNpZiBF
TkFCTEUoVE9VQ0hfRVZFTlRTKQogICAgIGNhc2UgQ1NTUHJvcGVydHlUb3VjaEFjdGlvbjogLy8g
YXV0byB8IG1hbmlwdWxhdGlvbgogICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZUF1
dG8gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU1hbmlwdWxhdGlvbjsKQEAgLTk3Niw5ICs5NjQsNiBA
QCBib29sIENTU1BhcnNlckZhc3RQYXRoczo6aXNLZXl3b3JkUHJvcGVyCiAjaWYgRU5BQkxFKEFD
Q0VMRVJBVEVEX09WRVJGTE9XX1NDUk9MTElORykKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
T3ZlcmZsb3dTY3JvbGxpbmc6CiAjZW5kaWYKLSNpZiBFTkFCTEUoQ1NTX1JFR0lPTlMpCi0gICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFJlZ2lvbkZyYWdtZW50OgotI2VuZGlmCiAjaWYgRU5BQkxF
KENTUzNfVEVYVCkKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dEFsaWduTGFzdDoKICAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dEp1c3RpZnk6CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9jc3MvcGFyc2VyL0NTU1BhcnNlckltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VySW1wbC5jcHAJKHJldmlzaW9uIDIyMjIwNCkKKysrIFNv
dXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VySW1wbC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQ1MiwxMCArNDUyLDYgQEAgUmVmUHRyPFN0eWxlUnVsZUJhc2U+IENTU1BhcnNlckltcGw6
OmNvbgogICAgICAgICByZXR1cm4gY29uc3VtZUtleWZyYW1lc1J1bGUoZmFsc2UsIHByZWx1ZGUs
IGJsb2NrKTsKICAgICBjYXNlIENTU0F0UnVsZVBhZ2U6CiAgICAgICAgIHJldHVybiBjb25zdW1l
UGFnZVJ1bGUocHJlbHVkZSwgYmxvY2spOwotI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKLSAgICBj
YXNlIENTU0F0UnVsZVdlYmtpdFJlZ2lvbjoKLSAgICAgICAgcmV0dXJuIGNvbnN1bWVSZWdpb25S
dWxlKHByZWx1ZGUsIGJsb2NrKTsKLSNlbmRpZgogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVy
biBudWxscHRyOyAvLyBQYXJzZSBlcnJvciwgdW5yZWNvZ25pc2VkIGF0LXJ1bGUgd2l0aCBibG9j
awogICAgIH0KQEAgLTY3NywzMiArNjczLDYgQEAgUmVmUHRyPFN0eWxlUnVsZVBhZ2U+IENTU1Bh
cnNlckltcGw6OmNvbgogICAgIHJldHVybiBwYWdlOwogfQogCi0jaWYgRU5BQkxFKENTU19SRUdJ
T05TKQotUmVmUHRyPFN0eWxlUnVsZVJlZ2lvbj4gQ1NTUGFyc2VySW1wbDo6Y29uc3VtZVJlZ2lv
blJ1bGUoQ1NTUGFyc2VyVG9rZW5SYW5nZSBwcmVsdWRlLCBDU1NQYXJzZXJUb2tlblJhbmdlIGJs
b2NrKQotewotICAgIENTU1NlbGVjdG9yTGlzdCBzZWxlY3Rvckxpc3QgPSBDU1NTZWxlY3RvclBh
cnNlcjo6cGFyc2VTZWxlY3RvcihwcmVsdWRlLCBtX2NvbnRleHQsIG1fc3R5bGVTaGVldC5nZXQo
KSk7Ci0gICAgaWYgKCFzZWxlY3Rvckxpc3QuaXNWYWxpZCgpKQotICAgICAgICByZXR1cm4gbnVs
bHB0cjsgLy8gUGFyc2UgZXJyb3IsIGludmFsaWQgc2VsZWN0b3IgbGlzdAotCi0gICAgaWYgKG1f
b2JzZXJ2ZXJXcmFwcGVyKSB7Ci0gICAgICAgIG1fb2JzZXJ2ZXJXcmFwcGVyLT5vYnNlcnZlcigp
LnN0YXJ0UnVsZUhlYWRlcihTdHlsZVJ1bGU6OlJlZ2lvbiwgbV9vYnNlcnZlcldyYXBwZXItPnN0
YXJ0T2Zmc2V0KHByZWx1ZGUpKTsKLSAgICAgICAgbV9vYnNlcnZlcldyYXBwZXItPm9ic2VydmVy
KCkuZW5kUnVsZUhlYWRlcihtX29ic2VydmVyV3JhcHBlci0+ZW5kT2Zmc2V0KHByZWx1ZGUpKTsK
LSAgICAgICAgbV9vYnNlcnZlcldyYXBwZXItPm9ic2VydmVyKCkuc3RhcnRSdWxlQm9keShtX29i
c2VydmVyV3JhcHBlci0+cHJldmlvdXNUb2tlblN0YXJ0T2Zmc2V0KGJsb2NrKSk7Ci0gICAgfQot
ICAgIAotICAgIFZlY3RvcjxSZWZQdHI8U3R5bGVSdWxlQmFzZT4+IHJ1bGVzOwotICAgIGNvbnN1
bWVSdWxlTGlzdChibG9jaywgUmVndWxhclJ1bGVMaXN0LCBbJnJ1bGVzXShSZWZQdHI8U3R5bGVS
dWxlQmFzZT4gcnVsZSkgewotICAgICAgICBydWxlcy5hcHBlbmQocnVsZSk7Ci0gICAgfSk7Ci0g
ICAgCi0gICAgaWYgKG1fb2JzZXJ2ZXJXcmFwcGVyKQotICAgICAgICBtX29ic2VydmVyV3JhcHBl
ci0+b2JzZXJ2ZXIoKS5lbmRSdWxlQm9keShtX29ic2VydmVyV3JhcHBlci0+ZW5kT2Zmc2V0KGJs
b2NrKSk7Ci0gICAgCi0gICAgcmV0dXJuIFN0eWxlUnVsZVJlZ2lvbjo6Y3JlYXRlKHNlbGVjdG9y
TGlzdCwgcnVsZXMpOwotCi19Ci0jZW5kaWYKLQogLy8gRklYTUUtTkVXUEFSU0VSOiBTdXBwb3J0
ICJhcHBseSIKIC8qdm9pZCBDU1NQYXJzZXJJbXBsOjpjb25zdW1lQXBwbHlSdWxlKENTU1BhcnNl
clRva2VuUmFuZ2UgcHJlbHVkZSkKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIv
Q1NTUGFyc2VySW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIv
Q1NTUGFyc2VySW1wbC5oCShyZXZpc2lvbiAyMjIyMDQpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3Mv
cGFyc2VyL0NTU1BhcnNlckltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtMTMyLDEwICsxMzIsNiBA
QCBwcml2YXRlOgogICAgIFJlZlB0cjxTdHlsZVJ1bGVGb250RmFjZT4gY29uc3VtZUZvbnRGYWNl
UnVsZShDU1NQYXJzZXJUb2tlblJhbmdlIHByZWx1ZGUsIENTU1BhcnNlclRva2VuUmFuZ2UgYmxv
Y2spOwogICAgIFJlZlB0cjxTdHlsZVJ1bGVLZXlmcmFtZXM+IGNvbnN1bWVLZXlmcmFtZXNSdWxl
KGJvb2wgd2Via2l0UHJlZml4ZWQsIENTU1BhcnNlclRva2VuUmFuZ2UgcHJlbHVkZSwgQ1NTUGFy
c2VyVG9rZW5SYW5nZSBibG9jayk7CiAgICAgUmVmUHRyPFN0eWxlUnVsZVBhZ2U+IGNvbnN1bWVQ
YWdlUnVsZShDU1NQYXJzZXJUb2tlblJhbmdlIHByZWx1ZGUsIENTU1BhcnNlclRva2VuUmFuZ2Ug
YmxvY2spOwotI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKLSAgICBSZWZQdHI8U3R5bGVSdWxlUmVn
aW9uPiBjb25zdW1lUmVnaW9uUnVsZShDU1NQYXJzZXJUb2tlblJhbmdlIHByZWx1ZGUsIENTU1Bh
cnNlclRva2VuUmFuZ2UgYmxvY2spOwotI2VuZGlmCi0gICAgLy8gVXBkYXRlcyBtX3BhcnNlZFBy
b3BlcnRpZXMKICAgICAKICAgICAvLyBGSVhNRS1ORVdQQVJTRVI6IFN1cHBvcnQgImFwcGx5Igog
ICAgIC8vIHZvaWQgY29uc3VtZUFwcGx5UnVsZShDU1NQYXJzZXJUb2tlblJhbmdlIHByZWx1ZGUp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNl
ci5jcHAJKHJldmlzaW9uIDIyMjIwNCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NT
UHJvcGVydHlQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOTAsMTEgKzI5MCw2IEBAIHN0
YXRpYyBib29sIGlzTGVnYWN5QnJlYWtQcm9wZXJ0eShDU1NQcm8KICAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0Q29sdW1uQnJlYWtBZnRlcjoKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Q29s
dW1uQnJlYWtCZWZvcmU6CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbkJyZWFrSW5z
aWRlOgotI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
UmVnaW9uQnJlYWtBZnRlcjoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0UmVnaW9uQnJlYWtC
ZWZvcmU6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFJlZ2lvbkJyZWFrSW5zaWRlOgotI2Vu
ZGlmCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwpA
QCAtMzQ5OCwxOCArMzQ5Myw2IEBAIHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVHcmlk
VGVtcGwKICAgICByZXR1cm4gQ1NTR3JpZFRlbXBsYXRlQXJlYXNWYWx1ZTo6Y3JlYXRlKGdyaWRB
cmVhTWFwLCByb3dDb3VudCwgY29sdW1uQ291bnQpOwogfQogCi0jaWYgRU5BQkxFKENTU19SRUdJ
T05TKQotc3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4gY29uc3VtZUZsb3dQcm9wZXJ0eShDU1NQYXJz
ZXJUb2tlblJhbmdlJiByYW5nZSkKLXsKLSAgICBSZWZQdHI8Q1NTVmFsdWU+IHJlc3VsdDsKLSAg
ICBpZiAocmFuZ2UucGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVOb25lKQotICAgICAgICByZXN1bHQg
PSBjb25zdW1lSWRlbnQocmFuZ2UpOwotICAgIGVsc2UKLSAgICAgICAgcmVzdWx0ID0gY29uc3Vt
ZUN1c3RvbUlkZW50KHJhbmdlKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotI2VuZGlmCi0KIHN0
YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVMaW5lQm94Q29udGFpbihDU1NQYXJzZXJUb2tl
blJhbmdlJiByYW5nZSkKIHsKICAgICBpZiAocmFuZ2UucGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVO
b25lKQpAQCAtNDI1MywxMSArNDIzNiw2IEBAIFJlZlB0cjxDU1NWYWx1ZT4gQ1NTUHJvcGVydHlQ
YXJzZXI6OnBhcnMKICAgICAgICAgaWYgKCFtX2NvbnRleHQuY3NzR3JpZExheW91dEVuYWJsZWQp
CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgcmV0dXJuIGNvbnN1bWVHcmlk
QXV0b0Zsb3cobV9yYW5nZSk7Ci0jaWYgRU5BQkxFKENTU19SRUdJT05TKQotICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRGbG93SW50bzoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Rmxvd0Zy
b206Ci0gICAgICAgIHJldHVybiBjb25zdW1lRmxvd1Byb3BlcnR5KG1fcmFuZ2UpOwotI2VuZGlm
CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdExpbmVHcmlkOgogICAgICAgICByZXR1cm4gY29u
c3VtZUxpbmVHcmlkKG1fcmFuZ2UpOwogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRJbml0aWFs
TGV0dGVyOgpAQCAtNTAwMSwxOSArNDk3OSw2IEBAIHN0YXRpYyBpbmxpbmUgQ1NTVmFsdWVJRCBt
YXBGcm9tQ29sdW1uQnIKICAgICByZXR1cm4gQ1NTVmFsdWVJbnZhbGlkOwogfQogCi0jaWYgRU5B
QkxFKENTU19SRUdJT05TKQotc3RhdGljIGlubGluZSBDU1NWYWx1ZUlEIG1hcEZyb21SZWdpb25C
cmVha0JldHdlZW4oQ1NTVmFsdWVJRCB2YWx1ZSkKLXsKLSAgICBpZiAodmFsdWUgPT0gQ1NTVmFs
dWVBbHdheXMpCi0gICAgICAgIHJldHVybiBDU1NWYWx1ZVJlZ2lvbjsKLSAgICBpZiAodmFsdWUg
PT0gQ1NTVmFsdWVBdXRvKQotICAgICAgICByZXR1cm4gdmFsdWU7Ci0gICAgaWYgKHZhbHVlID09
IENTU1ZhbHVlQXZvaWQpCi0gICAgICAgIHJldHVybiBDU1NWYWx1ZUF2b2lkUmVnaW9uOwotICAg
IHJldHVybiBDU1NWYWx1ZUludmFsaWQ7Ci19Ci0jZW5kaWYKLQogc3RhdGljIGlubGluZSBDU1NW
YWx1ZUlEIG1hcEZyb21Db2x1bW5SZWdpb25PclBhZ2VCcmVha0luc2lkZShDU1NWYWx1ZUlEIHZh
bHVlKQogewogICAgIGlmICh2YWx1ZSA9PSBDU1NWYWx1ZUF1dG8gfHwgdmFsdWUgPT0gQ1NTVmFs
dWVBdm9pZCkKQEAgLTUwMjcsMTUgKzQ5OTIsNyBAQCBzdGF0aWMgaW5saW5lIENTU1Byb3BlcnR5
SUQgbWFwRnJvbUxlZ2FjCiAgICAgICAgIHJldHVybiBDU1NQcm9wZXJ0eUJyZWFrQWZ0ZXI7CiAg
ICAgaWYgKHByb3BlcnR5ID09IENTU1Byb3BlcnR5UGFnZUJyZWFrQmVmb3JlIHx8IHByb3BlcnR5
ID09IENTU1Byb3BlcnR5V2Via2l0Q29sdW1uQnJlYWtCZWZvcmUpCiAgICAgICAgIHJldHVybiBD
U1NQcm9wZXJ0eUJyZWFrQmVmb3JlOwotI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKLSAgICBpZiAo
cHJvcGVydHkgPT0gQ1NTUHJvcGVydHlXZWJraXRSZWdpb25CcmVha0FmdGVyKQotICAgICAgICBy
ZXR1cm4gQ1NTUHJvcGVydHlCcmVha0FmdGVyOwotICAgIGlmIChwcm9wZXJ0eSA9PSBDU1NQcm9w
ZXJ0eVdlYmtpdFJlZ2lvbkJyZWFrQmVmb3JlKQotICAgICAgICByZXR1cm4gQ1NTUHJvcGVydHlC
cmVha0JlZm9yZTsKLSAgICBBU1NFUlQocHJvcGVydHkgPT0gQ1NTUHJvcGVydHlQYWdlQnJlYWtJ
bnNpZGUgfHwgcHJvcGVydHkgPT0gQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5CcmVha0luc2lkZSB8
fCBwcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eVdlYmtpdFJlZ2lvbkJyZWFrSW5zaWRlKTsKLSNlbHNl
CiAgICAgQVNTRVJUKHByb3BlcnR5ID09IENTU1Byb3BlcnR5UGFnZUJyZWFrSW5zaWRlIHx8IHBy
b3BlcnR5ID09IENTU1Byb3BlcnR5V2Via2l0Q29sdW1uQnJlYWtJbnNpZGUpOwotI2VuZGlmCiAg
ICAgcmV0dXJuIENTU1Byb3BlcnR5QnJlYWtJbnNpZGU7CiB9CiAKQEAgLTUwNTksMTMgKzUwMTYs
NiBAQCBib29sIENTU1Byb3BlcnR5UGFyc2VyOjpjb25zdW1lTGVnYWN5QnJlCiAgICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdENvbHVtbkJyZWFrQmVmb3JlOgogICAgICAgICB2YWx1ZSA9IG1hcEZy
b21Db2x1bW5CcmVha0JldHdlZW4odmFsdWUpOwogICAgICAgICBicmVhazsKLSNpZiBFTkFCTEUo
Q1NTX1JFR0lPTlMpCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFJlZ2lvbkJyZWFrQWZ0ZXI6
Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFJlZ2lvbkJyZWFrQmVmb3JlOgotICAgICAgICB2
YWx1ZSA9IG1hcEZyb21SZWdpb25CcmVha0JldHdlZW4odmFsdWUpOwotICAgICAgICBicmVhazsK
LSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0UmVnaW9uQnJlYWtJbnNpZGU6Ci0jZW5kaWYKICAg
ICBjYXNlIENTU1Byb3BlcnR5UGFnZUJyZWFrSW5zaWRlOgogICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRDb2x1bW5CcmVha0luc2lkZToKICAgICAgICAgdmFsdWUgPSBtYXBGcm9tQ29sdW1uUmVn
aW9uT3JQYWdlQnJlYWtJbnNpZGUodmFsdWUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0Nv
bnRhaW5lck5vZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Db250YWlu
ZXJOb2RlLmNwcAkocmV2aXNpb24gMjIyMjA0KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0NvbnRh
aW5lck5vZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDgsOSArMTA4LDcgQEAgc3RhdGljIGlu
bGluZSB2b2lkIGRlc3Ryb3lSZW5kZXJUcmVlSWZOZQogewogICAgIGJvb2wgaXNFbGVtZW50ID0g
aXM8RWxlbWVudD4oY2hpbGQpOwogICAgIGF1dG8gaGFzRGlzcGxheUNvbnRlbnRzID0gaXNFbGVt
ZW50ICYmIGRvd25jYXN0PEVsZW1lbnQ+KGNoaWxkKS5oYXNEaXNwbGF5Q29udGVudHMoKTsKLSAg
ICBhdXRvIGlzTmFtZWRGbG93RWxlbWVudCA9IGlzRWxlbWVudCAmJiBkb3duY2FzdDxFbGVtZW50
PihjaGlsZCkuaXNOYW1lZEZsb3dDb250ZW50RWxlbWVudCgpOwotICAgIC8vIEZJWE1FOiBHZXQg
cmlkIG9mIHRoZSBuYW1lZCBmbG93IHRlc3QuCi0gICAgaWYgKCFjaGlsZC5yZW5kZXJlcigpICYm
ICFoYXNEaXNwbGF5Q29udGVudHMgJiYgIWlzTmFtZWRGbG93RWxlbWVudCkKKyAgICBpZiAoIWNo
aWxkLnJlbmRlcmVyKCkgJiYgIWhhc0Rpc3BsYXlDb250ZW50cykKICAgICAgICAgcmV0dXJuOwog
ICAgIGlmIChpc0VsZW1lbnQpCiAgICAgICAgIFJlbmRlclRyZWVVcGRhdGVyOjp0ZWFyRG93blJl
bmRlcmVycyhkb3duY2FzdDxFbGVtZW50PihjaGlsZCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
ZG9tL0RPTU5hbWVkRmxvd0NvbGxlY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2RvbS9ET01OYW1lZEZsb3dDb2xsZWN0aW9uLmNwcAkocmV2aXNpb24gMjIyMjA0KQorKysg
U291cmNlL1dlYkNvcmUvZG9tL0RPTU5hbWVkRmxvd0NvbGxlY3Rpb24uY3BwCShub25leGlzdGVu
dCkKQEAgLTEsOTMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBBZG9iZSBTeXN0
ZW1zIEluY29ycG9yYXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykg
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZQotICogICAgY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKLSAqICAgIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCi0gKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZwotICogICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzCi0gKiAgICBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUiAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9M
REVSIEJFCi0gKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksCi0gKiBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SCi0g
KiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YKLSAqIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRgotICogU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUg
ImNvbmZpZy5oIgotI2luY2x1ZGUgIkRPTU5hbWVkRmxvd0NvbGxlY3Rpb24uaCIKLQotI2luY2x1
ZGUgIldlYktpdE5hbWVkRmxvdy5oIgotI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZ0hh
c2guaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1pbmxpbmUgRE9NTmFtZWRGbG93Q29sbGVj
dGlvbjo6RE9NTmFtZWRGbG93Q29sbGVjdGlvbihWZWN0b3I8UmVmPFdlYktpdE5hbWVkRmxvdz4+
JiYgZmxvd3MpCi0gICAgOiBtX2Zsb3dzKFdURk1vdmUoZmxvd3MpKQotewotfQotCi1SZWY8RE9N
TmFtZWRGbG93Q29sbGVjdGlvbj4gRE9NTmFtZWRGbG93Q29sbGVjdGlvbjo6Y3JlYXRlKFZlY3Rv
cjxSZWY8V2ViS2l0TmFtZWRGbG93Pj4mJiBmbG93cykKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBET01OYW1lZEZsb3dDb2xsZWN0aW9uKFdURk1vdmUoZmxvd3MpKSk7Ci19Ci0KLURPTU5h
bWVkRmxvd0NvbGxlY3Rpb246On5ET01OYW1lZEZsb3dDb2xsZWN0aW9uKCkKLXsKLX0KLQotV2Vi
S2l0TmFtZWRGbG93KiBET01OYW1lZEZsb3dDb2xsZWN0aW9uOjppdGVtKHVuc2lnbmVkIGluZGV4
KSBjb25zdAotewotICAgIGlmIChpbmRleCA+PSBtX2Zsb3dzLnNpemUoKSkKLSAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIGNvbnN0X2Nhc3Q8V2ViS2l0TmFtZWRGbG93Kj4obV9m
bG93c1tpbmRleF0ucHRyKCkpOwotfQotCi1zdHJ1Y3QgRE9NTmFtZWRGbG93Q29sbGVjdGlvbjo6
SGFzaEZ1bmN0aW9ucyB7Ci0gICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgV2ViS2l0TmFt
ZWRGbG93KiBrZXkpIHsgcmV0dXJuIEF0b21pY1N0cmluZ0hhc2g6Omhhc2goa2V5LT5uYW1lKCkp
OyB9Ci0gICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgV2ViS2l0TmFtZWRGbG93KiBhLCBjb25z
dCBXZWJLaXROYW1lZEZsb3cqIGIpIHsgcmV0dXJuIGEtPm5hbWUoKSA9PSBiLT5uYW1lKCk7IH0K
LSAgICBzdGF0aWMgY29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IGZh
bHNlOwotCi0gICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgQXRvbWljU3RyaW5nJiBrZXkp
IHsgcmV0dXJuIEF0b21pY1N0cmluZ0hhc2g6Omhhc2goa2V5KTsgfQotICAgIHN0YXRpYyBib29s
IGVxdWFsKGNvbnN0IFdlYktpdE5hbWVkRmxvdyogYSwgY29uc3QgQXRvbWljU3RyaW5nJiBiKSB7
IHJldHVybiBhLT5uYW1lKCkgPT0gYjsgfQotfTsKLQotV2ViS2l0TmFtZWRGbG93KiBET01OYW1l
ZEZsb3dDb2xsZWN0aW9uOjpuYW1lZEl0ZW0oY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKSBjb25z
dAotewotICAgIGlmIChtX2Zsb3dzQnlOYW1lLmlzRW1wdHkoKSkgewotICAgICAgICAvLyBObyBu
ZWVkIHRvIG9wdGltaXplIHRoZSBjYXNlIHdoZXJlIG1fZmxvd3MgaXMgZW1wdHk7IHdpbGwgZG8g
bm90aGluZyB2ZXJ5IHF1aWNrbHkuCi0gICAgICAgIGZvciAoYXV0byYgZmxvdyA6IG1fZmxvd3Mp
Ci0gICAgICAgICAgICBtX2Zsb3dzQnlOYW1lLmFkZChjb25zdF9jYXN0PFdlYktpdE5hbWVkRmxv
dyo+KGZsb3cucHRyKCkpKTsKLSAgICB9Ci0gICAgYXV0byBpdCA9IG1fZmxvd3NCeU5hbWUuZmlu
ZDxIYXNoRnVuY3Rpb25zPihuYW1lKTsKLSAgICBpZiAoaXQgPT0gbV9mbG93c0J5TmFtZS5lbmQo
KSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuICppdDsKLX0KLQotY29uc3Qg
VmVjdG9yPEF0b21pY1N0cmluZz4mIERPTU5hbWVkRmxvd0NvbGxlY3Rpb246OnN1cHBvcnRlZFBy
b3BlcnR5TmFtZXMoKQotewotICAgIGlmIChtX2Zsb3dOYW1lcy5pc0VtcHR5KCkpIHsKLSAgICAg
ICAgLy8gTm8gbmVlZCB0byBvcHRpbWl6ZSB0aGUgY2FzZSB3aGVyZSBtX2Zsb3dzIGlzIGVtcHR5
OyB3aWxsIGRvIG5vdGhpbmcgcmVsYXRpdmVseSBxdWlja2x5LgotICAgICAgICBtX2Zsb3dOYW1l
cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1fZmxvd3Muc2l6ZSgpKTsKLSAgICAgICAgZm9yIChh
dXRvJiBmbG93IDogbV9mbG93cykKLSAgICAgICAgICAgIG1fZmxvd05hbWVzLnVuY2hlY2tlZEFw
cGVuZChmbG93LT5uYW1lKCkpOwotICAgIH0KLSAgICByZXR1cm4gbV9mbG93TmFtZXM7Ci19Ci0K
LX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9ET01OYW1l
ZEZsb3dDb2xsZWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RPTU5h
bWVkRmxvd0NvbGxlY3Rpb24uaAkocmV2aXNpb24gMjIyMjA0KQorKysgU291cmNlL1dlYkNvcmUv
ZG9tL0RPTU5hbWVkRmxvd0NvbGxlY3Rpb24uaAkobm9uZXhpc3RlbnQpCkBAIC0xLDY3ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUKLSAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCi0gKiAgICBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogICAg
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcKLSAqICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscwotICogICAgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVIgIkFTIElTIiBB
TkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBCRQotICogTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LAotICogT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUgotICogVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GCi0gKiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YKLSAqIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSA8
d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgotI2luY2x1ZGUgPHd0Zi9S
ZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLWNsYXNzIFdlYktpdE5hbWVkRmxvdzsKLQotY2xhc3MgRE9NTmFtZWRGbG93Q29sbGVj
dGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPERPTU5hbWVkRmxvd0NvbGxlY3Rpb24+IHsKLXB1Ymxp
YzoKLSAgICBzdGF0aWMgUmVmPERPTU5hbWVkRmxvd0NvbGxlY3Rpb24+IGNyZWF0ZShWZWN0b3I8
UmVmPFdlYktpdE5hbWVkRmxvdz4+JiYpOwotICAgIH5ET01OYW1lZEZsb3dDb2xsZWN0aW9uKCk7
Ci0KLSAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdDsKLSAgICBXZWJLaXROYW1lZEZsb3cqIGl0
ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0OwotICAgIFdlYktpdE5hbWVkRmxvdyogbmFtZWRJdGVt
KGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkgY29uc3Q7Ci0gICAgY29uc3QgVmVjdG9yPEF0b21p
Y1N0cmluZz4mIHN1cHBvcnRlZFByb3BlcnR5TmFtZXMoKTsKLQotcHJpdmF0ZToKLSAgICBzdHJ1
Y3QgSGFzaEZ1bmN0aW9uczsKLQotICAgIGV4cGxpY2l0IERPTU5hbWVkRmxvd0NvbGxlY3Rpb24o
VmVjdG9yPFJlZjxXZWJLaXROYW1lZEZsb3c+PiYmKTsKLQotICAgIGNvbnN0IFZlY3RvcjxSZWY8
V2ViS2l0TmFtZWRGbG93Pj4gbV9mbG93czsKLSAgICBtdXRhYmxlIEhhc2hTZXQ8V2ViS2l0TmFt
ZWRGbG93KiwgSGFzaEZ1bmN0aW9ucz4gbV9mbG93c0J5TmFtZTsKLSAgICBtdXRhYmxlIFZlY3Rv
cjxBdG9taWNTdHJpbmc+IG1fZmxvd05hbWVzOwotfTsKLQotaW5saW5lIHVuc2lnbmVkIERPTU5h
bWVkRmxvd0NvbGxlY3Rpb246Omxlbmd0aCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fZmxvd3Mu
c2l6ZSgpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9kb20vRE9NTmFtZWRGbG93Q29sbGVjdGlvbi5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvZG9tL0RPTU5hbWVkRmxvd0NvbGxlY3Rpb24uaWRsCShyZXZpc2lvbiAyMjIyMDQpCisr
KyBTb3VyY2UvV2ViQ29yZS9kb20vRE9NTmFtZWRGbG93Q29sbGVjdGlvbi5pZGwJKG5vbmV4aXN0
ZW50KQpAQCAtMSw0MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEFkb2JlIFN5
c3RlbXMgSW5jb3Jwb3JhdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUKLSAqICAgIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCi0gKiAgICBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQotICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKLSAqICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscwotICogICAgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVIgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
IEhPTERFUiBCRQotICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLAotICogT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UgotICogVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GCi0gKiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKLSAqIFNVQ0ggREFNQUdFLgotICovCi0KLVsKLSAg
ICBDb25kaXRpb25hbD1DU1NfUkVHSU9OUywKLSAgICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxl
LAotICAgIEludGVyZmFjZU5hbWU9V2ViS2l0TmFtZWRGbG93Q29sbGVjdGlvbiwKLSAgICBKU0dl
bmVyYXRlVG9KU09iamVjdCwKLSAgICBMZWdhY3lVbmVudW1lcmFibGVOYW1lZFByb3BlcnRpZXMs
Ci0gICAgTm9JbnRlcmZhY2VPYmplY3QKLV0gaW50ZXJmYWNlIERPTU5hbWVkRmxvd0NvbGxlY3Rp
b24gewotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxlbmd0aDsKLSAgICBn
ZXR0ZXIgV2ViS2l0TmFtZWRGbG93PyBpdGVtKHVuc2lnbmVkIGxvbmcgaW5kZXgpOwotICAgIGdl
dHRlciBXZWJLaXROYW1lZEZsb3c/IG5hbWVkSXRlbShET01TdHJpbmcgbmFtZSk7Ci19OwpJbmRl
eDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCShyZXZpc2lvbiAyMjIyMDQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MSw3ICs1MSw2IEBACiAj
aW5jbHVkZSAiQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiQ3VzdG9tRXZlbnQu
aCIKICNpbmNsdWRlICJET01JbXBsZW1lbnRhdGlvbi5oIgotI2luY2x1ZGUgIkRPTU5hbWVkRmxv
d0NvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRlICJEYXRlQ29t
cG9uZW50cy5oIgogI2luY2x1ZGUgIkRlYnVnUGFnZU92ZXJsYXlzLmgiCkBAIC0xMTgsNyArMTE3
LDYgQEAKICNpbmNsdWRlICJNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzLmgiCiAjaW5jbHVk
ZSAiTXV0YXRpb25FdmVudC5oIgogI2luY2x1ZGUgIk5hbWVOb2RlTGlzdC5oIgotI2luY2x1ZGUg
Ik5hbWVkRmxvd0NvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJOYXZpZ2F0aW9uRGlzYWJsZXIuaCIK
ICNpbmNsdWRlICJOYXZpZ2F0aW9uU2NoZWR1bGVyLmgiCiAjaW5jbHVkZSAiTmVzdGluZ0xldmVs
SW5jcmVtZW50ZXIuaCIKQEAgLTExNTMsMjggKzExNTEsNiBAQCBib29sIERvY3VtZW50Ojppc0NT
U0dyaWRMYXlvdXRFbmFibGVkKCkgCiAgICAgcmV0dXJuIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6
OnNoYXJlZEZlYXR1cmVzKCkuaXNDU1NHcmlkTGF5b3V0RW5hYmxlZCgpOwogfQogCi0jaWYgRU5B
QkxFKENTU19SRUdJT05TKQotCi1SZWZQdHI8RE9NTmFtZWRGbG93Q29sbGVjdGlvbj4gRG9jdW1l
bnQ6OndlYmtpdEdldE5hbWVkRmxvd3MoKQotewotICAgIGlmICghcmVuZGVyVmlldygpKQotICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIHVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKLQotICAg
IHJldHVybiBuYW1lZEZsb3dzKCkuY3JlYXRlQ1NTT01TbmFwc2hvdCgpOwotfQotCi0jZW5kaWYK
LQotTmFtZWRGbG93Q29sbGVjdGlvbiYgRG9jdW1lbnQ6Om5hbWVkRmxvd3MoKQotewotICAgIGlm
ICghbV9uYW1lZEZsb3dzKQotICAgICAgICBtX25hbWVkRmxvd3MgPSBOYW1lZEZsb3dDb2xsZWN0
aW9uOjpjcmVhdGUodGhpcyk7Ci0KLSAgICByZXR1cm4gKm1fbmFtZWRGbG93czsKLX0KLQogRXhj
ZXB0aW9uT3I8UmVmPEVsZW1lbnQ+PiBEb2N1bWVudDo6Y3JlYXRlRWxlbWVudE5TKGNvbnN0IEF0
b21pY1N0cmluZyYgbmFtZXNwYWNlVVJJLCBjb25zdCBTdHJpbmcmIHF1YWxpZmllZE5hbWUpCiB7
CiAgICAgYXV0byBwYXJzZVJlc3VsdCA9IHBhcnNlUXVhbGlmaWVkTmFtZShuYW1lc3BhY2VVUkks
IHF1YWxpZmllZE5hbWUpOwpAQCAtMjAzNiwxMCArMjAxMiw4IEBAIGJvb2wgRG9jdW1lbnQ6OnVw
ZGF0ZUxheW91dElmRGltZW5zaW9uc08KICAgICB1cGRhdGVTdHlsZUlmTmVlZGVkKCk7CiAKICAg
ICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gZWxlbWVudC5yZW5kZXJlcigpOwotICAgIGlmICgh
cmVuZGVyZXIgfHwgcmVuZGVyZXItPm5lZWRzTGF5b3V0KCkgfHwgZWxlbWVudC5yZW5kZXJOYW1l
ZEZsb3dGcmFnbWVudCgpKSB7CisgICAgaWYgKCFyZW5kZXJlciB8fCByZW5kZXJlci0+bmVlZHNM
YXlvdXQoKSkgewogICAgICAgICAvLyBJZiB3ZSBkb24ndCBoYXZlIGEgcmVuZGVyZXIgb3IgaWYg
dGhlIHJlbmRlcmVyIG5lZWRzIGxheW91dCBmb3IgYW55IHJlYXNvbiwgZ2l2ZSB1cC4KLSAgICAg
ICAgLy8gTmFtZWQgZmxvd3MgY2FuIGhhdmUgYXV0byBoZWlnaHQsIHNvIGRvbid0IHRyeSB0byBl
bmZvcmNlIHRoZSBvcHRpbWl6YXRpb24gaW4gdGhpcyBjYXNlLgotICAgICAgICAvLyBUaGUgMi1w
YXNzIG5hdHVyZSBvZiBhdXRvIGhlaWdodCBuYW1lZCBmbG93IGxheW91dCBtZWFucyB0aGUgcmVn
aW9uIG1heSBub3QgYmUgZGlydHkgeWV0LgogICAgICAgICByZXF1aXJlRnVsbExheW91dCA9IHRy
dWU7CiAgICAgfQogCkBAIC0yMDg1LDcgKzIwNTksNyBAQCBib29sIERvY3VtZW50Ojp1cGRhdGVM
YXlvdXRJZkRpbWVuc2lvbnNPCiAgICAgICAgICAgICBpZiAoIWN1cnJlbnRCb3gtPmlzUmVuZGVy
QmxvY2tGbG93KCkgfHwgY3VycmVudEJveC0+Zmxvd1RocmVhZENvbnRhaW5pbmdCbG9jaygpIHx8
IGN1cnJlbnRCb3gtPmlzV3JpdGluZ01vZGVSb290KCkpIHsKICAgICAgICAgICAgICAgICAvLyBG
SVhNRTogRm9yIG5vdyByZXF1aXJlIG9ubHkgYmxvY2sgZmxvd3MgYWxsIHRoZSB3YXkgYmFjayB0
byB0aGUgcm9vdC4gVGhpcyBsaW1pdHMgdGhlIG9wdGltaXphdGlvbgogICAgICAgICAgICAgICAg
IC8vIGZvciBub3csIGFuZCB3ZSdsbCBleHBhbmQgaXQgaW4gZnV0dXJlIHBhdGNoZXMgdG8gYXBw
bHkgdG8gbW9yZSBhbmQgbW9yZSBzY2VuYXJpb3MuCi0gICAgICAgICAgICAgICAgLy8gRGlzYWxs
b3cgcmVnaW9ucy9jb2x1bW5zIGZyb20gaGF2aW5nIHRoZSBvcHRpbWl6YXRpb24uCisgICAgICAg
ICAgICAgICAgLy8gRGlzYWxsb3cgY29sdW1ucyBmcm9tIGhhdmluZyB0aGUgb3B0aW1pemF0aW9u
LgogICAgICAgICAgICAgICAgIC8vIEdpdmUgdXAgaWYgdGhlIHdyaXRpbmcgbW9kZSBjaGFuZ2Vz
IGF0IGFsbCBpbiB0aGUgY29udGFpbmluZyBibG9jayBjaGFpbi4KICAgICAgICAgICAgICAgICBy
ZXF1aXJlRnVsbExheW91dCA9IHRydWU7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuaAkocmV2aXNpb24gMjIyMjA0KQorKysgU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTk3LDcgKzk3LDYgQEAgY2xhc3MgQ2hhcmFj
dGVyRGF0YTsKIGNsYXNzIENvbW1lbnQ7CiBjbGFzcyBDb25zdGFudFByb3BlcnR5TWFwOwogY2xh
c3MgRE9NSW1wbGVtZW50YXRpb247Ci1jbGFzcyBET01OYW1lZEZsb3dDb2xsZWN0aW9uOwogY2xh
c3MgRE9NU2VsZWN0aW9uOwogY2xhc3MgRE9NV2luZG93OwogY2xhc3MgRE9NV3JhcHBlcldvcmxk
OwpAQCAtMTQ2LDcgKzE0NSw2IEBAIGNsYXNzIE1lZGlhUGxheWJhY2tUYXJnZXRDbGllbnQ7CiBj
bGFzcyBNZWRpYVF1ZXJ5TGlzdDsKIGNsYXNzIE1lZGlhUXVlcnlNYXRjaGVyOwogY2xhc3MgTW91
c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0czsKLWNsYXNzIE5hbWVkRmxvd0NvbGxlY3Rpb247CiBj
bGFzcyBOb2RlRmlsdGVyOwogY2xhc3MgTm9kZUl0ZXJhdG9yOwogY2xhc3MgUGFnZTsKQEAgLTQw
OCwxMSArNDA2LDYgQEAgcHVibGljOgogICAgIHN0YXRpYyBDdXN0b21FbGVtZW50TmFtZVZhbGlk
YXRpb25TdGF0dXMgdmFsaWRhdGVDdXN0b21FbGVtZW50TmFtZShjb25zdCBBdG9taWNTdHJpbmcm
KTsKIAogICAgIGJvb2wgaXNDU1NHcmlkTGF5b3V0RW5hYmxlZCgpIGNvbnN0OwotI2lmIEVOQUJM
RShDU1NfUkVHSU9OUykKLSAgICBSZWZQdHI8RE9NTmFtZWRGbG93Q29sbGVjdGlvbj4gd2Via2l0
R2V0TmFtZWRGbG93cygpOwotI2VuZGlmCi0KLSAgICBOYW1lZEZsb3dDb2xsZWN0aW9uJiBuYW1l
ZEZsb3dzKCk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8UmFuZ2U+IGNhcmV0UmFuZ2VG
cm9tUG9pbnQoaW50IHgsIGludCB5KTsKICAgICBSZWZQdHI8UmFuZ2U+IGNhcmV0UmFuZ2VGcm9t
UG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmIGNsaWVudFBvaW50KTsKQEAgLTE2NzIsOCArMTY2NSw2
IEBAIHByaXZhdGU6CiAKICAgICBUaW1lciBtX3Zpc3VhbFVwZGF0ZXNTdXBwcmVzc2lvblRpbWVy
OwogCi0gICAgUmVmUHRyPE5hbWVkRmxvd0NvbGxlY3Rpb24+IG1fbmFtZWRGbG93czsKLQogICAg
IHZvaWQgY2xlYXJTaGFyZWRPYmplY3RQb29sKCk7CiAgICAgVGltZXIgbV9zaGFyZWRPYmplY3RQ
b29sQ2xlYXJUaW1lcjsKIApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmlkbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRsCShyZXZpc2lvbiAy
MjIyMDQpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRsCSh3b3JraW5nIGNvcHkp
CkBAIC0xODksOSArMTg5LDYgQEAgdHlwZWRlZiAoCiAgICAgLy8gRklYTUU6IFRoaXMgaXMgbm90
IHN0YW5kYXJkIGFuZCBoYXMgYmVlbiBkcm9wcGVkIGZyb20gQmxpbmsgYWxyZWFkeS4KICAgICBS
ZW5kZXJpbmdDb250ZXh0PyBnZXRDU1NDYW52YXNDb250ZXh0KERPTVN0cmluZyBjb250ZXh0SWQs
IERPTVN0cmluZyBuYW1lLCBsb25nIHdpZHRoLCBsb25nIGhlaWdodCk7CiAKLSAgICAvLyBOb24g
c3RhbmRhcmQgKGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9yZWZlcmVuY2Uvd2Via2l0anMv
ZG9jdW1lbnQvMTYzMzg2My13ZWJraXRnZXRuYW1lZGZsb3dzKS4KLSAgICBbQ29uZGl0aW9uYWw9
Q1NTX1JFR0lPTlNdIERPTU5hbWVkRmxvd0NvbGxlY3Rpb24gd2Via2l0R2V0TmFtZWRGbG93cygp
OwotCiAgICAgLy8gTm9uIHN0YW5kYXJkLCB0byBicmluZyB1cCB3aXRoIHN0YW5kYXJkcyB3b3Jr
aW5nIGdyb3VwLgogICAgIFtFbmFibGVkQnlTZXR0aW5nPVN0b3JhZ2VBY2Nlc3NBUEldIHJlYWRv
bmx5IGF0dHJpYnV0ZSBib29sZWFuIGhhc1N0b3JhZ2VBY2Nlc3M7CiAgICAgW0VuYWJsZWRCeVNl
dHRpbmc9U3RvcmFnZUFjY2Vzc0FQSV0gUHJvbWlzZTxib29sZWFuPiByZXF1ZXN0U3RvcmFnZUFj
Y2VzcygpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAkocmV2aXNpb24gMjIyMjA0KQorKysg
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCw3ICs0
OCw2IEBACiAjaW5jbHVkZSAiRXZlbnREaXNwYXRjaGVyLmgiCiAjaW5jbHVkZSAiRXZlbnRIYW5k
bGVyLmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgotI2luY2x1ZGUgIkZsb3dUaHJlYWRDb250
cm9sbGVyLmgiCiAjaW5jbHVkZSAiRm9jdXNDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiRm9jdXNF
dmVudC5oIgogI2luY2x1ZGUgIkZyYW1lU2VsZWN0aW9uLmgiCkBAIC03OSwxMCArNzgsOCBAQAog
I2luY2x1ZGUgIk5vZGVSZW5kZXJTdHlsZS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtV2hlZWxFdmVu
dC5oIgogI2luY2x1ZGUgIlBvaW50ZXJMb2NrQ29udHJvbGxlci5oIgotI2luY2x1ZGUgIlJlbmRl
ckZsb3dUaHJlYWQuaCIKICNpbmNsdWRlICJSZW5kZXJMYXllci5oIgogI2luY2x1ZGUgIlJlbmRl
ckxpc3RCb3guaCIKLSNpbmNsdWRlICJSZW5kZXJOYW1lZEZsb3dGcmFnbWVudC5oIgogI2luY2x1
ZGUgIlJlbmRlclJlZ2lvbi5oIgogI2luY2x1ZGUgIlJlbmRlclRoZW1lLmgiCiAjaW5jbHVkZSAi
UmVuZGVyVHJlZVVwZGF0ZXIuaCIKQEAgLTE4MiwxNSArMTc5LDYgQEAgRWxlbWVudDo6RWxlbWVu
dChjb25zdCBRdWFsaWZpZWROYW1lJiB0YQogCiBFbGVtZW50Ojp+RWxlbWVudCgpCiB7Ci0jaWZu
ZGVmIE5ERUJVRwotICAgIGlmIChkb2N1bWVudCgpLmhhc0xpdmluZ1JlbmRlclRyZWUoKSkgewot
ICAgICAgICAvLyBXaGVuIHRoZSBkb2N1bWVudCBpcyBub3QgZGVzdHJveWVkLCBhbiBlbGVtZW50
IHRoYXQgd2FzIHBhcnQgb2YgYSBuYW1lZCBmbG93Ci0gICAgICAgIC8vIGNvbnRlbnQgbm9kZXMg
c2hvdWxkIGhhdmUgYmVlbiByZW1vdmVkIGZyb20gdGhlIGNvbnRlbnQgbm9kZXMgY29sbGVjdGlv
bgotICAgICAgICAvLyBhbmQgdGhlIGlzTmFtZWRGbG93Q29udGVudEVsZW1lbnQgZmxhZyByZXNl
dC4KLSAgICAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oIWlzTmFtZWRGbG93
Q29udGVudEVsZW1lbnQoKSk7Ci0gICAgfQotI2VuZGlmCi0KICAgICBBU1NFUlQoIWJlZm9yZVBz
ZXVkb0VsZW1lbnQoKSk7CiAgICAgQVNTRVJUKCFhZnRlclBzZXVkb0VsZW1lbnQoKSk7CiAKQEAg
LTE3ODMsMTIgKzE3NzEsNiBAQCB2b2lkIEVsZW1lbnQ6OnJlbW92ZWRGcm9tKENvbnRhaW5lck5v
ZGUmCiAjZW5kaWYKIH0KIAotdm9pZCBFbGVtZW50Ojp1bnJlZ2lzdGVyTmFtZWRGbG93Q29udGVu
dEVsZW1lbnQoKQotewotICAgIGlmIChpc05hbWVkRmxvd0NvbnRlbnRFbGVtZW50KCkgJiYgZG9j
dW1lbnQoKS5yZW5kZXJWaWV3KCkpCi0gICAgICAgIGRvY3VtZW50KCkucmVuZGVyVmlldygpLT5m
bG93VGhyZWFkQ29udHJvbGxlcigpLnVucmVnaXN0ZXJOYW1lZEZsb3dDb250ZW50RWxlbWVudCgq
dGhpcyk7Ci19Ci0KIFNoYWRvd1Jvb3QqIEVsZW1lbnQ6OnNoYWRvd1Jvb3QoKSBjb25zdAogewog
ICAgIHJldHVybiBoYXNSYXJlRGF0YSgpID8gZWxlbWVudFJhcmVEYXRhKCktPnNoYWRvd1Jvb3Qo
KSA6IG51bGxwdHI7CkBAIC0yMTEyLDE2ICsyMDk0LDYgQEAgdm9pZCBFbGVtZW50OjpzZXRBdHRy
aWJ1dGVFdmVudExpc3RlbmVyKAogICAgIHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnRU
eXBlLCBKU0xhenlFdmVudExpc3RlbmVyOjpjcmVhdGUoKnRoaXMsIGF0dHJpYnV0ZU5hbWUsIGF0
dHJpYnV0ZVZhbHVlKSwgbWFpblRocmVhZE5vcm1hbFdvcmxkKCkpOwogfQogCi12b2lkIEVsZW1l
bnQ6OnNldElzTmFtZWRGbG93Q29udGVudEVsZW1lbnQoKQotewotICAgIGVuc3VyZUVsZW1lbnRS
YXJlRGF0YSgpLnNldElzTmFtZWRGbG93Q29udGVudEVsZW1lbnQodHJ1ZSk7Ci19Ci0KLXZvaWQg
RWxlbWVudDo6Y2xlYXJJc05hbWVkRmxvd0NvbnRlbnRFbGVtZW50KCkKLXsKLSAgICBlbnN1cmVF
bGVtZW50UmFyZURhdGEoKS5zZXRJc05hbWVkRmxvd0NvbnRlbnRFbGVtZW50KGZhbHNlKTsKLX0K
LQogdm9pZCBFbGVtZW50OjpyZW1vdmVBbGxFdmVudExpc3RlbmVycygpCiB7CiAgICAgQ29udGFp
bmVyTm9kZTo6cmVtb3ZlQWxsRXZlbnRMaXN0ZW5lcnMoKTsKQEAgLTI4NTMsMTIgKzI4MjUsNiBA
QCBib29sIEVsZW1lbnQ6OnJhcmVEYXRhU3R5bGVBZmZlY3RlZEJ5Rm9jCiAgICAgcmV0dXJuIGVs
ZW1lbnRSYXJlRGF0YSgpLT5zdHlsZUFmZmVjdGVkQnlGb2N1c1dpdGhpbigpOwogfQogCi1ib29s
IEVsZW1lbnQ6OnJhcmVEYXRhSXNOYW1lZEZsb3dDb250ZW50RWxlbWVudCgpIGNvbnN0Ci17Ci0g
ICAgQVNTRVJUKGhhc1JhcmVEYXRhKCkpOwotICAgIHJldHVybiBlbGVtZW50UmFyZURhdGEoKS0+
aXNOYW1lZEZsb3dDb250ZW50RWxlbWVudCgpOwotfQotCiBib29sIEVsZW1lbnQ6OnJhcmVEYXRh
U3R5bGVBZmZlY3RlZEJ5QWN0aXZlKCkgY29uc3QKIHsKICAgICBBU1NFUlQoaGFzUmFyZURhdGEo
KSk7CkBAIC0yODg5LDE2ICsyODU1LDYgQEAgdW5zaWduZWQgRWxlbWVudDo6cmFyZURhdGFDaGls
ZEluZGV4KCkgYwogICAgIHJldHVybiBlbGVtZW50UmFyZURhdGEoKS0+Y2hpbGRJbmRleCgpOwog
fQogCi12b2lkIEVsZW1lbnQ6OnNldFJlZ2lvbk92ZXJzZXRTdGF0ZShSZWdpb25PdmVyc2V0U3Rh
dGUgc3RhdGUpCi17Ci0gICAgZW5zdXJlRWxlbWVudFJhcmVEYXRhKCkuc2V0UmVnaW9uT3ZlcnNl
dFN0YXRlKHN0YXRlKTsKLX0KLQotUmVnaW9uT3ZlcnNldFN0YXRlIEVsZW1lbnQ6OnJlZ2lvbk92
ZXJzZXRTdGF0ZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGhhc1JhcmVEYXRhKCkgPyBlbGVtZW50
UmFyZURhdGEoKS0+cmVnaW9uT3ZlcnNldFN0YXRlKCkgOiBSZWdpb25VbmRlZmluZWQ7Ci19Ci0K
IEF0b21pY1N0cmluZyBFbGVtZW50Ojpjb21wdXRlSW5oZXJpdGVkTGFuZ3VhZ2UoKSBjb25zdAog
ewogICAgIGlmIChjb25zdCBFbGVtZW50RGF0YSogZWxlbWVudERhdGEgPSB0aGlzLT5lbGVtZW50
RGF0YSgpKSB7CkBAIC0zMTgxLDc2ICszMTM3LDYgQEAgYm9vbCBFbGVtZW50Ojppc1NwZWxsQ2hl
Y2tpbmdFbmFibGVkKCkgYwogICAgIHJldHVybiB0cnVlOwogfQogCi1SZW5kZXJOYW1lZEZsb3dG
cmFnbWVudCogRWxlbWVudDo6cmVuZGVyTmFtZWRGbG93RnJhZ21lbnQoKSBjb25zdAotewotICAg
IGlmIChyZW5kZXJlcigpICYmIHJlbmRlcmVyKCktPmlzUmVuZGVyTmFtZWRGbG93RnJhZ21lbnRD
b250YWluZXIoKSkKLSAgICAgICAgcmV0dXJuIGRvd25jYXN0PFJlbmRlckJsb2NrRmxvdz4oKnJl
bmRlcmVyKCkpLnJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KCk7Ci0KLSAgICByZXR1cm4gbnVsbHB0
cjsKLX0KLQotI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKLQotYm9vbCBFbGVtZW50OjpzaG91bGRN
b3ZlVG9GbG93VGhyZWFkKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZVRvVXNlKSBjb25zdAotewot
I2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKLSAgICBpZiAoZG9jdW1lbnQoKS53ZWJraXRJc0Z1
bGxTY3JlZW4oKSAmJiBkb2N1bWVudCgpLndlYmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxlbWVudCgp
ID09IHRoaXMpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSNlbmRpZgotCi0gICAgaWYgKGlzSW5T
aGFkb3dUcmVlKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmICghc3R5bGVUb1Vz
ZS5oYXNGbG93SW50bygpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gdHJ1
ZTsKLX0KLQotY29uc3QgQXRvbWljU3RyaW5nJiBFbGVtZW50Ojp3ZWJraXRSZWdpb25PdmVyc2V0
KCkgY29uc3QKLXsKLSAgICBkb2N1bWVudCgpLnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHls
ZXNoZWV0cygpOwotCi0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gdW5k
ZWZpbmVkU3RhdGUoInVuZGVmaW5lZCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVy
YWwpOwotICAgIGlmICghcmVuZGVyTmFtZWRGbG93RnJhZ21lbnQoKSkKLSAgICAgICAgcmV0dXJu
IHVuZGVmaW5lZFN0YXRlOwotCi0gICAgc3dpdGNoIChyZWdpb25PdmVyc2V0U3RhdGUoKSkgewot
ICAgIGNhc2UgUmVnaW9uRml0OiB7Ci0gICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9t
aWNTdHJpbmc+IGZpdFN0YXRlKCJmaXQiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKTsKLSAgICAgICAgcmV0dXJuIGZpdFN0YXRlOwotICAgIH0KLSAgICBjYXNlIFJlZ2lvbkVt
cHR5OiB7Ci0gICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IGVtcHR5
U3RhdGUoImVtcHR5IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAg
ICAgIHJldHVybiBlbXB0eVN0YXRlOwotICAgIH0KLSAgICBjYXNlIFJlZ2lvbk92ZXJzZXQ6IHsK
LSAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gb3ZlcmZsb3dTdGF0
ZSgib3ZlcnNldCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgICAg
ICByZXR1cm4gb3ZlcmZsb3dTdGF0ZTsKLSAgICB9Ci0gICAgY2FzZSBSZWdpb25VbmRlZmluZWQ6
Ci0gICAgICAgIHJldHVybiB1bmRlZmluZWRTdGF0ZTsKLSAgICB9Ci0KLSAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLSAgICByZXR1cm4gdW5kZWZpbmVkU3RhdGU7Ci19Ci0KLVZlY3RvcjxSZWZQ
dHI8UmFuZ2U+PiBFbGVtZW50Ojp3ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCkgY29uc3QKLXsK
LSAgICBWZWN0b3I8UmVmUHRyPFJhbmdlPj4gcmFuZ2VPYmplY3RzOwotICAgIGRvY3VtZW50KCku
dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7Ci0gICAgYXV0byogcmVuZGVy
ZXIgPSB0aGlzLT5yZW5kZXJlcigpOwotICAgIGlmIChyZW5kZXJlciAmJiByZW5kZXJlci0+aXNS
ZW5kZXJOYW1lZEZsb3dGcmFnbWVudENvbnRhaW5lcigpKSB7Ci0gICAgICAgIGF1dG8mIG5hbWVk
Rmxvd0ZyYWdtZW50ID0gKmRvd25jYXN0PFJlbmRlckJsb2NrRmxvdz4oKnJlbmRlcmVyKS5yZW5k
ZXJOYW1lZEZsb3dGcmFnbWVudCgpOwotICAgICAgICBpZiAobmFtZWRGbG93RnJhZ21lbnQuaXNW
YWxpZCgpKQotICAgICAgICAgICAgbmFtZWRGbG93RnJhZ21lbnQuZ2V0UmFuZ2VzKHJhbmdlT2Jq
ZWN0cyk7Ci0gICAgfQotICAgIHJldHVybiByYW5nZU9iamVjdHM7Ci19Ci0KLSNlbmRpZgotCiAj
aWZuZGVmIE5ERUJVRwogYm9vbCBFbGVtZW50OjpmYXN0QXR0cmlidXRlTG9va3VwQWxsb3dlZChj
b25zdCBRdWFsaWZpZWROYW1lJiBuYW1lKSBjb25zdAogewpAQCAtMzUyMCw3ICszNDA2LDYgQEAg
dm9pZCBFbGVtZW50OjpyZXNldFN0eWxlUmVsYXRpb25zKCkKIAogdm9pZCBFbGVtZW50OjpjbGVh
clN0eWxlRGVyaXZlZERhdGFCZWZvcmVEZXRhY2hpbmdSZW5kZXJlcigpCiB7Ci0gICAgdW5yZWdp
c3Rlck5hbWVkRmxvd0NvbnRlbnRFbGVtZW50KCk7CiAgICAgY2xlYXJCZWZvcmVQc2V1ZG9FbGVt
ZW50KCk7CiAgICAgY2xlYXJBZnRlclBzZXVkb0VsZW1lbnQoKTsKIH0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2RvbS9FbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0Vs
ZW1lbnQuaAkocmV2aXNpb24gMjIyMjA0KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNiBAQAogI2luY2x1ZGUgIkRvY3VtZW50Lmgi
CiAjaW5jbHVkZSAiRWxlbWVudERhdGEuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKLSNpbmNs
dWRlICJSZWdpb25PdmVyc2V0U3RhdGUuaCIKICNpbmNsdWRlICJTY3JvbGxUb09wdGlvbnMuaCIK
ICNpbmNsdWRlICJTY3JvbGxUeXBlcy5oIgogI2luY2x1ZGUgIlNoYWRvd1Jvb3RNb2RlLmgiCkBA
IC01Miw3ICs1MSw2IEBAIGNsYXNzIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDsKIGNsYXNzIFBsYXRm
b3JtTW91c2VFdmVudDsKIGNsYXNzIFBsYXRmb3JtV2hlZWxFdmVudDsKIGNsYXNzIFBzZXVkb0Vs
ZW1lbnQ7Ci1jbGFzcyBSZW5kZXJOYW1lZEZsb3dGcmFnbWVudDsKIGNsYXNzIFJlbmRlclRyZWVQ
b3NpdGlvbjsKIGNsYXNzIFdlYkFuaW1hdGlvbjsKIHN0cnVjdCBFbGVtZW50U3R5bGU7CkBAIC0z
NDUsOSArMzQzLDYgQEAgcHVibGljOgogICAgIHZvaWQgc2V0U3R5bGVJc0FmZmVjdGVkQnlQcmV2
aW91c1NpYmxpbmcoKSB7IHNldEZsYWcoU3R5bGVJc0FmZmVjdGVkQnlQcmV2aW91c1NpYmxpbmcp
OyB9CiAgICAgdm9pZCBzZXRDaGlsZEluZGV4KHVuc2lnbmVkKTsKIAotICAgIHZvaWQgc2V0UmVn
aW9uT3ZlcnNldFN0YXRlKFJlZ2lvbk92ZXJzZXRTdGF0ZSk7Ci0gICAgUmVnaW9uT3ZlcnNldFN0
YXRlIHJlZ2lvbk92ZXJzZXRTdGF0ZSgpIGNvbnN0OwotCiAgICAgQXRvbWljU3RyaW5nIGNvbXB1
dGVJbmhlcml0ZWRMYW5ndWFnZSgpIGNvbnN0OwogICAgIExvY2FsZSYgbG9jYWxlKCkgY29uc3Q7
CiAKQEAgLTQ2NywxNSArNDYyLDYgQEAgcHVibGljOgogCiAgICAgYm9vbCBpc1NwZWxsQ2hlY2tp
bmdFbmFibGVkKCkgY29uc3Q7CiAKLSAgICBSZW5kZXJOYW1lZEZsb3dGcmFnbWVudCogcmVuZGVy
TmFtZWRGbG93RnJhZ21lbnQoKSBjb25zdDsKLQotI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKLSAg
ICB2aXJ0dWFsIGJvb2wgc2hvdWxkTW92ZVRvRmxvd1RocmVhZChjb25zdCBSZW5kZXJTdHlsZSYp
IGNvbnN0OwotICAgIAotICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IEF0b21pY1N0cmluZyYgd2Vi
a2l0UmVnaW9uT3ZlcnNldCgpIGNvbnN0OwotICAgIFZlY3RvcjxSZWZQdHI8UmFuZ2U+PiB3ZWJr
aXRHZXRSZWdpb25GbG93UmFuZ2VzKCkgY29uc3Q7Ci0jZW5kaWYKLQogICAgIGJvb2wgaGFzSUQo
KSBjb25zdDsKICAgICBib29sIGhhc0NsYXNzKCkgY29uc3Q7CiAgICAgYm9vbCBoYXNOYW1lKCkg
Y29uc3Q7CkBAIC01NTMsMTAgKzUzOSw2IEBAIHB1YmxpYzoKICAgICB1c2luZyBDb250YWluZXJO
b2RlOjpzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyOwogICAgIHZvaWQgc2V0QXR0cmlidXRlRXZl
bnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgY29uc3QgUXVhbGlmaWVk
TmFtZSYgYXR0cmlidXRlTmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSk7CiAKLSAgICBi
b29sIGlzTmFtZWRGbG93Q29udGVudEVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBoYXNSYXJlRGF0
YSgpICYmIHJhcmVEYXRhSXNOYW1lZEZsb3dDb250ZW50RWxlbWVudCgpOyB9Ci0gICAgdm9pZCBz
ZXRJc05hbWVkRmxvd0NvbnRlbnRFbGVtZW50KCk7Ci0gICAgdm9pZCBjbGVhcklzTmFtZWRGbG93
Q29udGVudEVsZW1lbnQoKTsKLQogI2lmIEVOQUJMRShXRUJfQU5JTUFUSU9OUykKICAgICBWZWN0
b3I8V2ViQW5pbWF0aW9uKj4gZ2V0QW5pbWF0aW9ucygpOwogI2VuZGlmCkBAIC02NTAsNyArNjMy
LDYgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgcmFyZURhdGFTdHlsZUFmZmVjdGVkQnlFbXB0eSgp
IGNvbnN0OwogICAgIGJvb2wgcmFyZURhdGFTdHlsZUFmZmVjdGVkQnlGb2N1c1dpdGhpbigpIGNv
bnN0OwotICAgIGJvb2wgcmFyZURhdGFJc05hbWVkRmxvd0NvbnRlbnRFbGVtZW50KCkgY29uc3Q7
CiAgICAgYm9vbCByYXJlRGF0YUNoaWxkcmVuQWZmZWN0ZWRCeUhvdmVyKCkgY29uc3Q7CiAgICAg
Ym9vbCByYXJlRGF0YVN0eWxlQWZmZWN0ZWRCeUFjdGl2ZSgpIGNvbnN0OwogICAgIGJvb2wgcmFy
ZURhdGFDaGlsZHJlbkFmZmVjdGVkQnlEcmFnKCkgY29uc3Q7CkBAIC02NjEsOCArNjQyLDYgQEAg
cHJpdmF0ZToKIAogICAgIFNwZWxsY2hlY2tBdHRyaWJ1dGVTdGF0ZSBzcGVsbGNoZWNrQXR0cmli
dXRlU3RhdGUoKSBjb25zdDsKIAotICAgIHZvaWQgdW5yZWdpc3Rlck5hbWVkRmxvd0NvbnRlbnRF
bGVtZW50KCk7Ci0KICAgICB2b2lkIGNyZWF0ZVVuaXF1ZUVsZW1lbnREYXRhKCk7CiAKICAgICBF
bGVtZW50UmFyZURhdGEqIGVsZW1lbnRSYXJlRGF0YSgpIGNvbnN0OwpJbmRleDogU291cmNlL1dl
YkNvcmUvZG9tL0VsZW1lbnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9F
bGVtZW50LmlkbAkocmV2aXNpb24gMjIyMjA0KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAsMTIgKzEwMCw2IEBACiAgICAgLy8gRXh0ZW5z
aW9ucyBmcm9tIFBvaW50ZXIgTG9jayBBUEkgKGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9wb2ludGVy
bG9jay8jZXh0ZW5zaW9ucy10by10aGUtZWxlbWVudC1pbnRlcmZhY2UpLgogICAgIFtDb25kaXRp
b25hbD1QT0lOVEVSX0xPQ0tdIHZvaWQgcmVxdWVzdFBvaW50ZXJMb2NrKCk7CiAKLSAgICAvLyBF
eHRlbnNpb25zIGZyb20gQ1NTIFJlZ2lvbnMgQVBJIChodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcv
Y3NzLXJlZ2lvbnMvI3RoZS1yZWdpb24taW50ZXJmYWNlKS4KLSAgICAvLyBGSVhNRTogU2hvdWxk
IGJlIGluIGEgc2VwYXJhdGUgUmVnaW9uIGludGVyZmFjZSBpbXBsZW1lbnRlZCBieSBFbGVtZW50
LgotICAgIC8vIEZJWE1FOiBTaG91bGQgd2UgYWRkIHVucHJlZml4ZWQgdmVyc2lvbnM/Ci0gICAg
W0NvbmRpdGlvbmFsPUNTU19SRUdJT05TXSByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHdl
YmtpdFJlZ2lvbk92ZXJzZXQ7Ci0gICAgW0NvbmRpdGlvbmFsPUNTU19SRUdJT05TXSBzZXF1ZW5j
ZTxSYW5nZT4/IHdlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKLQogICAgIC8vIE5vbiBzdGFu
ZGFyZCBBUEkgKGh0dHBzOi8vd3d3LnczLm9yZy9CdWdzL1B1YmxpYy9zaG93X2J1Zy5jZ2k/aWQ9
MTcxNTIpLgogICAgIHZvaWQgc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZChvcHRpb25hbCBib29sZWFu
IGNlbnRlcklmTmVlZGVkID0gdHJ1ZSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50UmFyZURhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
UmFyZURhdGEuY3BwCShyZXZpc2lvbiAyMjIyMDQpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudFJhcmVEYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEsNiBAQCBzdHJ1Y3Qg
U2FtZVNpemVBc0VsZW1lbnRSYXJlRGF0YSA6IE5vZGVSCiAjZWxzZQogICAgIHVuc2lnbmVkIGJp
dGZpZWxkcyA6IDEwOwogI2VuZGlmCi0gICAgUmVnaW9uT3ZlcnNldFN0YXRlIHJlZ2lvbk92ZXJz
ZXRTdGF0ZTsKICAgICBMYXlvdXRTaXplIHNpemVGb3JSZXNpemluZzsKICAgICBJbnRQb2ludCBz
YXZlZExheWVyU2Nyb2xsUG9zaXRpb247CiAgICAgdm9pZCogcG9pbnRlcnNbOF07CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFJhcmVEYXRhLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvZG9tL0VsZW1lbnRSYXJlRGF0YS5oCShyZXZpc2lvbiAyMjIyMDQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudFJhcmVEYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTYwLDEy
ICs2MCw2IEBAIHB1YmxpYzoKICAgICBib29sIHN0eWxlQWZmZWN0ZWRCeUZvY3VzV2l0aGluKCkg
Y29uc3QgeyByZXR1cm4gbV9zdHlsZUFmZmVjdGVkQnlGb2N1c1dpdGhpbjsgfQogICAgIHZvaWQg
c2V0U3R5bGVBZmZlY3RlZEJ5Rm9jdXNXaXRoaW4oYm9vbCB2YWx1ZSkgeyBtX3N0eWxlQWZmZWN0
ZWRCeUZvY3VzV2l0aGluID0gdmFsdWU7IH0KIAotICAgIFJlZ2lvbk92ZXJzZXRTdGF0ZSByZWdp
b25PdmVyc2V0U3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3JlZ2lvbk92ZXJzZXRTdGF0ZTsgfQot
ICAgIHZvaWQgc2V0UmVnaW9uT3ZlcnNldFN0YXRlKFJlZ2lvbk92ZXJzZXRTdGF0ZSBzdGF0ZSkg
eyBtX3JlZ2lvbk92ZXJzZXRTdGF0ZSA9IHN0YXRlOyB9Ci0KLSAgICBib29sIGlzTmFtZWRGbG93
Q29udGVudEVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2lzTmFtZWRGbG93Q29udGVudEVsZW1l
bnQ7IH0KLSAgICB2b2lkIHNldElzTmFtZWRGbG93Q29udGVudEVsZW1lbnQoYm9vbCB2YWx1ZSkg
eyBtX2lzTmFtZWRGbG93Q29udGVudEVsZW1lbnQgPSB2YWx1ZTsgfQotCiAjaWYgRU5BQkxFKEZV
TExTQ1JFRU5fQVBJKQogICAgIGJvb2wgY29udGFpbnNGdWxsU2NyZWVuRWxlbWVudCgpIHsgcmV0
dXJuIG1fY29udGFpbnNGdWxsU2NyZWVuRWxlbWVudDsgfQogICAgIHZvaWQgc2V0Q29udGFpbnNG
dWxsU2NyZWVuRWxlbWVudChib29sIHZhbHVlKSB7IG1fY29udGFpbnNGdWxsU2NyZWVuRWxlbWVu
dCA9IHZhbHVlOyB9CkBAIC0xMzIsOSArMTI2LDYgQEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBt
X2NoaWxkcmVuQWZmZWN0ZWRCeUxhc3RDaGlsZFJ1bGVzIDogMTsKICAgICB1bnNpZ25lZCBtX2No
aWxkcmVuQWZmZWN0ZWRCeUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzIDogMTsKICAgICB1bnNpZ25l
ZCBtX2NoaWxkcmVuQWZmZWN0ZWRCeVByb3BlcnR5QmFzZWRCYWNrd2FyZFBvc2l0aW9uYWxSdWxl
cyA6IDE7Ci0gICAgdW5zaWduZWQgbV9pc05hbWVkRmxvd0NvbnRlbnRFbGVtZW50IDogMTsKLQot
ICAgIFJlZ2lvbk92ZXJzZXRTdGF0ZSBtX3JlZ2lvbk92ZXJzZXRTdGF0ZTsKIAogICAgIExheW91
dFNpemUgbV9taW5pbXVtU2l6ZUZvclJlc2l6aW5nOwogICAgIEludFBvaW50IG1fc2F2ZWRMYXll
clNjcm9sbFBvc2l0aW9uOwpAQCAtMTc0LDggKzE2NSw2IEBAIGlubGluZSBFbGVtZW50UmFyZURh
dGE6OkVsZW1lbnRSYXJlRGF0YSgKICAgICAsIG1fY2hpbGRyZW5BZmZlY3RlZEJ5TGFzdENoaWxk
UnVsZXMoZmFsc2UpCiAgICAgLCBtX2NoaWxkcmVuQWZmZWN0ZWRCeUJhY2t3YXJkUG9zaXRpb25h
bFJ1bGVzKGZhbHNlKQogICAgICwgbV9jaGlsZHJlbkFmZmVjdGVkQnlQcm9wZXJ0eUJhc2VkQmFj
a3dhcmRQb3NpdGlvbmFsUnVsZXMoZmFsc2UpCi0gICAgLCBtX2lzTmFtZWRGbG93Q29udGVudEVs
ZW1lbnQoZmFsc2UpCi0gICAgLCBtX3JlZ2lvbk92ZXJzZXRTdGF0ZShSZWdpb25VbmRlZmluZWQp
CiAgICAgLCBtX21pbmltdW1TaXplRm9yUmVzaXppbmcoZGVmYXVsdE1pbmltdW1TaXplRm9yUmVz
aXppbmcoKSkKIHsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3Rv
cnkuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9y
eS5pbgkocmV2aXNpb24gMjIyMjA0KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0
RmFjdG9yeS5pbgkod29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEsNiBAQCBUZXh0VHJhY2tMaXN0
IGNvbmRpdGlvbmFsPVZJREVPX1RSQUNLCiBWUkRpc3BsYXkKIFZpZGVvVHJhY2tMaXN0IGNvbmRp
dGlvbmFsPVZJREVPX1RSQUNLCiBXZWJLaXRNZWRpYUtleVNlc3Npb24gY29uZGl0aW9uYWw9TEVH
QUNZX0VOQ1JZUFRFRF9NRURJQQotV2ViS2l0TmFtZWRGbG93CiBXZWJTb2NrZXQKIFdvcmtlcgog
WE1MSHR0cFJlcXVlc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9OYW1lZEZsb3dDb2xsZWN0
aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vTmFtZWRGbG93Q29sbGVj
dGlvbi5jcHAJKHJldmlzaW9uIDIyMjIwNCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9OYW1lZEZs
b3dDb2xsZWN0aW9uLmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDEzMSArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDEyIEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUKLSAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nCi0gKiAgICBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogICAgY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKLSAqICAg
IGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscwot
ICogICAgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVIgIkFTIElTIiBBTkQgQU5ZCi0g
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBCRQotICogTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLAotICogT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUgotICogVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GCi0gKiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKLSAq
IFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJOYW1l
ZEZsb3dDb2xsZWN0aW9uLmgiCi0KLSNpbmNsdWRlICJET01OYW1lZEZsb3dDb2xsZWN0aW9uLmgi
Ci0jaW5jbHVkZSAiRG9jdW1lbnQuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b24uaCIKLQotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1OYW1lZEZsb3dDb2xsZWN0aW9uOjpOYW1lZEZsb3dDb2xsZWN0aW9uKERvY3Vt
ZW50KiBkb2N1bWVudCkKLSAgICA6IENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyKGRvY3VtZW50
KQotewotfQotCi1WZWN0b3I8UmVmUHRyPFdlYktpdE5hbWVkRmxvdz4+IE5hbWVkRmxvd0NvbGxl
Y3Rpb246Om5hbWVkRmxvd3MoKQotewotICAgIFZlY3RvcjxSZWZQdHI8V2ViS2l0TmFtZWRGbG93
Pj4gbmFtZWRGbG93czsKLQotICAgIGZvciAoYXV0byYgbmFtZWRGbG93IDogbV9uYW1lZEZsb3dz
KSB7Ci0gICAgICAgIGlmIChuYW1lZEZsb3ctPmZsb3dTdGF0ZSgpID09IFdlYktpdE5hbWVkRmxv
dzo6Rmxvd1N0YXRlTnVsbCkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIG5hbWVk
Rmxvd3MuYXBwZW5kKFJlZlB0cjxXZWJLaXROYW1lZEZsb3c+KG5hbWVkRmxvdykpOwotICAgIH0K
LQotICAgIHJldHVybiBuYW1lZEZsb3dzOwotfQotCi1XZWJLaXROYW1lZEZsb3cqIE5hbWVkRmxv
d0NvbGxlY3Rpb246OmZsb3dCeU5hbWUoY29uc3QgU3RyaW5nJiBmbG93TmFtZSkKLXsKLSAgICBO
YW1lZEZsb3dTZXQ6Oml0ZXJhdG9yIGl0ID0gbV9uYW1lZEZsb3dzLmZpbmQ8U3RyaW5nLCBOYW1l
ZEZsb3dIYXNoVHJhbnNsYXRvcj4oZmxvd05hbWUpOwotICAgIGlmIChpdCA9PSBtX25hbWVkRmxv
d3MuZW5kKCkgfHwgKCppdCktPmZsb3dTdGF0ZSgpID09IFdlYktpdE5hbWVkRmxvdzo6Rmxvd1N0
YXRlTnVsbCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICByZXR1cm4gKml0OwotfQot
Ci1SZWY8V2ViS2l0TmFtZWRGbG93PiBOYW1lZEZsb3dDb2xsZWN0aW9uOjplbnN1cmVGbG93V2l0
aE5hbWUoY29uc3QgU3RyaW5nJiBmbG93TmFtZSkKLXsKLSAgICBOYW1lZEZsb3dTZXQ6Oml0ZXJh
dG9yIGl0ID0gbV9uYW1lZEZsb3dzLmZpbmQ8U3RyaW5nLCBOYW1lZEZsb3dIYXNoVHJhbnNsYXRv
cj4oZmxvd05hbWUpOwotICAgIGlmIChpdCAhPSBtX25hbWVkRmxvd3MuZW5kKCkpIHsKLSAgICAg
ICAgV2ViS2l0TmFtZWRGbG93KiBuYW1lZEZsb3cgPSAqaXQ7Ci0gICAgICAgIEFTU0VSVChuYW1l
ZEZsb3ctPmZsb3dTdGF0ZSgpID09IFdlYktpdE5hbWVkRmxvdzo6Rmxvd1N0YXRlTnVsbCk7Ci0K
LSAgICAgICAgcmV0dXJuICpuYW1lZEZsb3c7Ci0gICAgfQotCi0gICAgUmVmUHRyPFdlYktpdE5h
bWVkRmxvdz4gbmV3RmxvdyA9IFdlYktpdE5hbWVkRmxvdzo6Y3JlYXRlKCp0aGlzLCBmbG93TmFt
ZSk7Ci0gICAgbV9uYW1lZEZsb3dzLmFkZChuZXdGbG93LmdldCgpKTsKLQotICAgIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6ZGlkQ3JlYXRlTmFtZWRGbG93KGRvY3VtZW50KCksICpuZXdGbG93
KTsKLQotICAgIHJldHVybiBuZXdGbG93LnJlbGVhc2VOb25OdWxsKCk7Ci19Ci0KLXZvaWQgTmFt
ZWRGbG93Q29sbGVjdGlvbjo6ZGlzY2FyZE5hbWVkRmxvdyhXZWJLaXROYW1lZEZsb3cqIG5hbWVk
RmxvdykKLXsKLSAgICAvLyBUaGUgZG9jdW1lbnQgaXMgbm90IHZhbGlkIGFueW1vcmUgc28gdGhl
IGNvbGxlY3Rpb24gd2lsbCBiZSBkZXN0cm95ZWQgYW55d2F5LgotICAgIGlmICghZG9jdW1lbnQo
KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQVNTRVJUKG5hbWVkRmxvdy0+Zmxvd1N0YXRlKCkg
PT0gV2ViS2l0TmFtZWRGbG93OjpGbG93U3RhdGVOdWxsKTsKLSAgICBBU1NFUlQobV9uYW1lZEZs
b3dzLmNvbnRhaW5zKG5hbWVkRmxvdykpOwotCi0gICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Ojp3aWxsUmVtb3ZlTmFtZWRGbG93KGRvY3VtZW50KCksICpuYW1lZEZsb3cpOwotCi0gICAgbV9u
YW1lZEZsb3dzLnJlbW92ZShuYW1lZEZsb3cpOwotfQotCi1Eb2N1bWVudCogTmFtZWRGbG93Q29s
bGVjdGlvbjo6ZG9jdW1lbnQoKSBjb25zdAotewotICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQgPSBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcjo6c2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpOwotICAgIHJldHVybiBkb3duY2FzdDxEb2N1bWVudD4oY29udGV4dCk7Ci19Ci0KLVJl
ZjxET01OYW1lZEZsb3dDb2xsZWN0aW9uPiBOYW1lZEZsb3dDb2xsZWN0aW9uOjpjcmVhdGVDU1NP
TVNuYXBzaG90KCkKLXsKLSAgICBWZWN0b3I8UmVmPFdlYktpdE5hbWVkRmxvdz4+IGNyZWF0ZWRG
bG93czsKLSAgICBmb3IgKGF1dG8mIG5hbWVkRmxvdyA6IG1fbmFtZWRGbG93cykgewotICAgICAg
ICBpZiAobmFtZWRGbG93LT5mbG93U3RhdGUoKSA9PSBXZWJLaXROYW1lZEZsb3c6OkZsb3dTdGF0
ZUNyZWF0ZWQpCi0gICAgICAgICAgICBjcmVhdGVkRmxvd3MuYXBwZW5kKCpuYW1lZEZsb3cpOwot
ICAgIH0KLSAgICByZXR1cm4gRE9NTmFtZWRGbG93Q29sbGVjdGlvbjo6Y3JlYXRlKFdURk1vdmUo
Y3JlYXRlZEZsb3dzKSk7Ci19Ci0KLS8vIFRoZSBIYXNoRnVuY3Rpb25zIG9iamVjdCB1c2VkIGJ5
IHRoZSBIYXNoU2V0IHRvIGNvbXBhcmUgYmV0d2VlbiBOYW1lZEZsb3dzLgotLy8gSXQgaXMgc2Fm
ZSB0byBzZXQgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgYmVjYXVzZSB0aGUgSGFzaFNl
dCB3aWxsIG5ldmVyIGNvbnRhaW4gbnVsbCBwb2ludGVycyBvciBkZWxldGVkIHZhbHVlcy4KLXN0
cnVjdCBOYW1lZEZsb3dDb2xsZWN0aW9uOjpOYW1lZEZsb3dIYXNoRnVuY3Rpb25zIHsKLSAgICBz
dGF0aWMgdW5zaWduZWQgaGFzaChXZWJLaXROYW1lZEZsb3cqIGtleSkgeyByZXR1cm4gRGVmYXVs
dEhhc2g8U3RyaW5nPjo6SGFzaDo6aGFzaChrZXktPm5hbWUoKSk7IH0KLSAgICBzdGF0aWMgYm9v
bCBlcXVhbChXZWJLaXROYW1lZEZsb3cqIGEsIFdlYktpdE5hbWVkRmxvdyogYikgeyByZXR1cm4g
YS0+bmFtZSgpID09IGItPm5hbWUoKTsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIHNhZmVUb0Nv
bXBhcmVUb0VtcHR5T3JEZWxldGVkID0gdHJ1ZTsKLX07Ci0KLS8vIFRoZSBIYXNoVHJhbnNsYXRv
ciBpcyB1c2VkIHRvIGxvb2t1cCBhIE5hbWVkRmxvdyBpbiB0aGUgc2V0IHVzaW5nIGEgbmFtZS4K
LXN0cnVjdCBOYW1lZEZsb3dDb2xsZWN0aW9uOjpOYW1lZEZsb3dIYXNoVHJhbnNsYXRvciB7Ci0g
ICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgU3RyaW5nJiBrZXkpIHsgcmV0dXJuIERlZmF1
bHRIYXNoPFN0cmluZz46Okhhc2g6Omhhc2goa2V5KTsgfQotICAgIHN0YXRpYyBib29sIGVxdWFs
KFdlYktpdE5hbWVkRmxvdyogYSwgY29uc3QgU3RyaW5nJiBiKSB7IHJldHVybiBhLT5uYW1lKCkg
PT0gYjsgfQotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNv
cmUvZG9tL05hbWVkRmxvd0NvbGxlY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9kb20vTmFtZWRGbG93Q29sbGVjdGlvbi5oCShyZXZpc2lvbiAyMjIyMDQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9kb20vTmFtZWRGbG93Q29sbGVjdGlvbi5oCShub25leGlzdGVudCkKQEAgLTEsNzEg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBBZG9iZSBTeXN0ZW1zIEluY29ycG9y
YXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlCi0gKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZwotICogICAgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
LSAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nCi0gKiAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMKLSAqICAgIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSICJB
UyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgQkUKLSAq
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwKLSAqIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IKLSAqIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RgotICogVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GCi0gKiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lu
Y2x1ZGUgIkNvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyLmgiCi0jaW5jbHVkZSAiV2ViS2l0TmFt
ZWRGbG93LmgiCi0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3dGYvTGlzdEhh
c2hTZXQuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBEb2N1bWVudDsKLWNsYXNzIERP
TU5hbWVkRmxvd0NvbGxlY3Rpb247Ci0KLWNsYXNzIE5hbWVkRmxvd0NvbGxlY3Rpb24gZmluYWwg
OiBwdWJsaWMgUmVmQ291bnRlZDxOYW1lZEZsb3dDb2xsZWN0aW9uPiwgcHVibGljIENvbnRleHRE
ZXN0cnVjdGlvbk9ic2VydmVyIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPE5hbWVkRmxvd0Nv
bGxlY3Rpb24+IGNyZWF0ZShEb2N1bWVudCogZG9jKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IE5h
bWVkRmxvd0NvbGxlY3Rpb24oZG9jKSk7IH0KLQotICAgIFZlY3RvcjxSZWZQdHI8V2ViS2l0TmFt
ZWRGbG93Pj4gbmFtZWRGbG93cygpOwotICAgIFdlYktpdE5hbWVkRmxvdyogZmxvd0J5TmFtZShj
b25zdCBTdHJpbmcmKTsKLSAgICBSZWY8V2ViS2l0TmFtZWRGbG93PiBlbnN1cmVGbG93V2l0aE5h
bWUoY29uc3QgU3RyaW5nJik7Ci0KLSAgICB2b2lkIGRpc2NhcmROYW1lZEZsb3coV2ViS2l0TmFt
ZWRGbG93Kik7Ci0KLSAgICBEb2N1bWVudCogZG9jdW1lbnQoKSBjb25zdDsKLQotICAgIHZpcnR1
YWwgfk5hbWVkRmxvd0NvbGxlY3Rpb24oKSB7IH0KLQotICAgIFJlZjxET01OYW1lZEZsb3dDb2xs
ZWN0aW9uPiBjcmVhdGVDU1NPTVNuYXBzaG90KCk7Ci0KLXByaXZhdGU6Ci0gICAgc3RydWN0IE5h
bWVkRmxvd0hhc2hGdW5jdGlvbnM7Ci0gICAgc3RydWN0IE5hbWVkRmxvd0hhc2hUcmFuc2xhdG9y
OwotCi0gICAgdHlwZWRlZiBMaXN0SGFzaFNldDxXZWJLaXROYW1lZEZsb3cqLCBOYW1lZEZsb3dI
YXNoRnVuY3Rpb25zPiBOYW1lZEZsb3dTZXQ7Ci0KLSAgICBleHBsaWNpdCBOYW1lZEZsb3dDb2xs
ZWN0aW9uKERvY3VtZW50Kik7Ci0KLSAgICBOYW1lZEZsb3dTZXQgbV9uYW1lZEZsb3dzOwotfTsK
LQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1BzZXVk
b0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vUHNldWRvRWxlbWVu
dC5oCShyZXZpc2lvbiAyMjIyMDQpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vUHNldWRvRWxlbWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCwxMiArNDQsNiBAQCBwdWJsaWM6CiAKICAgICBib29s
IHJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUmKSBvdmVycmlkZTsKIAotICAgIC8v
IEFzIHBlciBodHRwOi8vZGV2LnczLm9yZy9jc3N3Zy9jc3MzLXJlZ2lvbnMvI2Zsb3ctaW50bywg
cHNldWRvLWVsZW1lbnRzIHN1Y2ggYXMgOjpmaXJzdC1saW5lLCA6OmZpcnN0LWxldHRlciwgOjpi
ZWZvcmUgb3IgOjphZnRlcgotICAgIC8vIGNhbm5vdCBiZSBkaXJlY3RseSBjb2xsZWN0ZWQgaW50
byBhIG5hbWVkIGZsb3cuCi0jaWYgRU5BQkxFKENTU19SRUdJT05TKQotICAgIGJvb2wgc2hvdWxk
TW92ZVRvRmxvd1RocmVhZChjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIGZhbHNlOyB9Ci0jZW5kaWYKLQogICAgIGJvb2wgY2FuU3RhcnRTZWxlY3Rpb24oKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wgY2FuQ29udGFpblJhbmdlRW5k
UG9pbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9kb20vV2ViS2l0TmFtZWRGbG93LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9kb20vV2ViS2l0TmFtZWRGbG93LmNwcAkocmV2aXNpb24gMjIyMjA0KQorKysgU291cmNl
L1dlYkNvcmUvZG9tL1dlYktpdE5hbWVkRmxvdy5jcHAJKG5vbmV4aXN0ZW50KQpAQCAtMSwyMzUg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBZG9iZSBTeXN0ZW1zIEluY29ycG9y
YXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlCi0gKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZwotICogICAgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
LSAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nCi0gKiAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMKLSAqICAgIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
IAotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUiAi
QVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIEJFCi0g
KiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksCi0gKiBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SCi0gKiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YKLSAqIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRgotICogU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5o
IgotI2luY2x1ZGUgIldlYktpdE5hbWVkRmxvdy5oIgotCi0jaW5jbHVkZSAiRXZlbnROYW1lcy5o
IgotI2luY2x1ZGUgIk5hbWVkRmxvd0NvbGxlY3Rpb24uaCIKLSNpbmNsdWRlICJOb0V2ZW50RGlz
cGF0Y2hBc3NlcnRpb24uaCIKLSNpbmNsdWRlICJSZW5kZXJOYW1lZEZsb3dGcmFnbWVudC5oIgot
I2luY2x1ZGUgIlJlbmRlck5hbWVkRmxvd1RocmVhZC5oIgotI2luY2x1ZGUgIlJlbmRlclJlZ2lv
bi5oIgotI2luY2x1ZGUgIlN0YXRpY05vZGVMaXN0LmgiCi0jaW5jbHVkZSAiVUlFdmVudC5oIgot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVdlYktpdE5hbWVkRmxvdzo6V2ViS2l0TmFtZWRGbG93
KE5hbWVkRmxvd0NvbGxlY3Rpb24mIG1hbmFnZXIsIGNvbnN0IEF0b21pY1N0cmluZyYgZmxvd1Ro
cmVhZE5hbWUpCi0gICAgOiBtX2Zsb3dUaHJlYWROYW1lKGZsb3dUaHJlYWROYW1lKQotICAgICwg
bV9mbG93TWFuYWdlcigmbWFuYWdlcikKLSAgICAsIG1fcGFyZW50Rmxvd1RocmVhZChudWxscHRy
KQotewotfQotCi1XZWJLaXROYW1lZEZsb3c6On5XZWJLaXROYW1lZEZsb3coKQotewotICAgIC8v
IFRoZSBuYW1lZCBmbG93IGlzIG5vdCAic3Ryb25nIiByZWZlcmVuY2VkIGZyb20gYW55d2hlcmUg
YXQgdGhpcyB0aW1lIHNvIGl0IHNob3VsZG4ndCBiZSByZXVzZWQgaWYgdGhlIG5hbWVkIGZsb3cg
aXMgcmVjcmVhdGVkLgotICAgIG1fZmxvd01hbmFnZXItPmRpc2NhcmROYW1lZEZsb3codGhpcyk7
Ci19Ci0KLVJlZjxXZWJLaXROYW1lZEZsb3c+IFdlYktpdE5hbWVkRmxvdzo6Y3JlYXRlKE5hbWVk
Rmxvd0NvbGxlY3Rpb24mIG1hbmFnZXIsIGNvbnN0IEF0b21pY1N0cmluZyYgZmxvd1RocmVhZE5h
bWUpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViS2l0TmFtZWRGbG93KG1hbmFnZXIs
IGZsb3dUaHJlYWROYW1lKSk7Ci19Ci0KLWNvbnN0IEF0b21pY1N0cmluZyYgV2ViS2l0TmFtZWRG
bG93OjpuYW1lKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9mbG93VGhyZWFkTmFtZTsKLX0KLQot
Ym9vbCBXZWJLaXROYW1lZEZsb3c6Om92ZXJzZXQoKSBjb25zdAotewotICAgIGlmIChtX2Zsb3dN
YW5hZ2VyLT5kb2N1bWVudCgpKQotICAgICAgICBtX2Zsb3dNYW5hZ2VyLT5kb2N1bWVudCgpLT51
cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoKTsKLQotICAgIC8vIFRoZSByZW5k
ZXJlciBtYXkgYmUgZGVzdHJveWVkIG9yIGNyZWF0ZWQgYWZ0ZXIgdGhlIHN0eWxlIHVwZGF0ZS4K
LSAgICAvLyBCZWNhdXNlIHRoaXMgaXMgY2FsbGVkIGZyb20gSlMsIHdoZXJlIHRoZSB3cmFwcGVy
IGtlZXBzIGEgcmVmZXJlbmNlIHRvIHRoZSBOYW1lZEZsb3csIG5vIGd1YXJkIGlzIG5lY2Vzc2Fy
eS4KLSAgICBpZiAoIW1fcGFyZW50Rmxvd1RocmVhZCB8fCAhbV9wYXJlbnRGbG93VGhyZWFkLT5o
YXNSZWdpb25zKCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgY29uc3QgYXV0byYgbmFt
ZWRGbG93RnJhZ21lbnQgPSBkb3duY2FzdDxSZW5kZXJOYW1lZEZsb3dGcmFnbWVudD4oKm1fcGFy
ZW50Rmxvd1RocmVhZC0+bGFzdFJlZ2lvbigpKTsKLSAgICByZXR1cm4gbmFtZWRGbG93RnJhZ21l
bnQucmVnaW9uT3ZlcnNldFN0YXRlKCkgPT0gUmVnaW9uT3ZlcnNldDsKLX0KLQotc3RhdGljIGlu
bGluZSBib29sIGluRmxvd1RocmVhZChSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBSZW5kZXJOYW1l
ZEZsb3dUaHJlYWQqIGZsb3dUaHJlYWQpCi17Ci0gICAgaWYgKCFyZW5kZXJlcikKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIFJlbmRlckZsb3dUaHJlYWQqIGN1cnJlbnRGbG93VGhyZWFkID0g
cmVuZGVyZXItPmZsb3dUaHJlYWRDb250YWluaW5nQmxvY2soKTsKLSAgICBpZiAoZmxvd1RocmVh
ZCA9PSBjdXJyZW50Rmxvd1RocmVhZCkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgaWYgKHJl
bmRlcmVyLT5mbG93VGhyZWFkU3RhdGUoKSAhPSBSZW5kZXJPYmplY3Q6Okluc2lkZUluRmxvd1Ro
cmVhZCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIAotICAgIC8vIEFuIGluLWZsb3cgZmxv
dyB0aHJlYWQgY2FuIGJlIG5lc3RlZCBpbnNpZGUgYW4gb3V0LW9mLWZsb3cgb25lLCBzbyB3ZSBo
YXZlIHRvIHJlY3VyIHVwIHRvIGNoZWNrLgotICAgIHJldHVybiBpbkZsb3dUaHJlYWQoY3VycmVu
dEZsb3dUaHJlYWQtPmNvbnRhaW5pbmdCbG9jaygpLCBmbG93VGhyZWFkKTsKLX0KLQotaW50IFdl
YktpdE5hbWVkRmxvdzo6Zmlyc3RFbXB0eVJlZ2lvbkluZGV4KCkgY29uc3QKLXsKLSAgICBpZiAo
bV9mbG93TWFuYWdlci0+ZG9jdW1lbnQoKSkKLSAgICAgICAgbV9mbG93TWFuYWdlci0+ZG9jdW1l
bnQoKS0+dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7Ci0KLSAgICBpZiAo
IW1fcGFyZW50Rmxvd1RocmVhZCkKLSAgICAgICAgcmV0dXJuIC0xOwotCi0gICAgY29uc3QgUmVu
ZGVyUmVnaW9uTGlzdCYgcmVnaW9uTGlzdCA9IG1fcGFyZW50Rmxvd1RocmVhZC0+cmVuZGVyUmVn
aW9uTGlzdCgpOwotICAgIGlmIChyZWdpb25MaXN0LmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJu
IC0xOwotCi0gICAgaW50IGNvdW50Tm9uUHNldWRvUmVnaW9ucyA9IC0xOwotICAgIGZvciAoY29u
c3QgYXV0byYgcmVuZGVyUmVnaW9uIDogcmVnaW9uTGlzdCkgewotICAgICAgICBjb25zdCBhdXRv
JiBuYW1lZEZsb3dGcmFnbWVudCA9IGRvd25jYXN0PFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50Pigq
cmVuZGVyUmVnaW9uKTsKLSAgICAgICAgLy8gRklYTUU6IFBzZXVkby1lbGVtZW50cyBhcmUgbm90
IGluY2x1ZGVkIGluIHRoZSBsaXN0LgotICAgICAgICAvLyBUaGV5IHdpbGwgYmUgaW5jbHVkZWQg
d2hlbiB3ZSB3aWxsIHByb3Blcmx5IHN1cHBvcnQgdGhlIFJlZ2lvbiBpbnRlcmZhY2UKLSAgICAg
ICAgLy8gaHR0cDovL2Rldi53My5vcmcvY3Nzd2cvY3NzLXJlZ2lvbnMvI3RoZS1yZWdpb24taW50
ZXJmYWNlCi0gICAgICAgIGlmIChuYW1lZEZsb3dGcmFnbWVudC5pc1BzZXVkb0VsZW1lbnRSZWdp
b24oKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICArK2NvdW50Tm9uUHNldWRvUmVn
aW9uczsKLSAgICAgICAgaWYgKG5hbWVkRmxvd0ZyYWdtZW50LnJlZ2lvbk92ZXJzZXRTdGF0ZSgp
ID09IFJlZ2lvbkVtcHR5KQotICAgICAgICAgICAgcmV0dXJuIGNvdW50Tm9uUHNldWRvUmVnaW9u
czsKLSAgICB9Ci0gICAgcmV0dXJuIC0xOwotfQotCi1SZWY8Tm9kZUxpc3Q+IFdlYktpdE5hbWVk
Rmxvdzo6Z2V0UmVnaW9uc0J5Q29udGVudChOb2RlKiBjb250ZW50Tm9kZSkKLXsKLSAgICBpZiAo
IWNvbnRlbnROb2RlKQotICAgICAgICByZXR1cm4gU3RhdGljRWxlbWVudExpc3Q6OmNyZWF0ZSgp
OwotCi0gICAgaWYgKG1fZmxvd01hbmFnZXItPmRvY3VtZW50KCkpCi0gICAgICAgIG1fZmxvd01h
bmFnZXItPmRvY3VtZW50KCktPnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygp
OwotCi0gICAgLy8gVGhlIHJlbmRlcmVyIG1heSBiZSBkZXN0cm95ZWQgb3IgY3JlYXRlZCBhZnRl
ciB0aGUgc3R5bGUgdXBkYXRlLgotICAgIC8vIEJlY2F1c2UgdGhpcyBpcyBjYWxsZWQgZnJvbSBK
Uywgd2hlcmUgdGhlIHdyYXBwZXIga2VlcHMgYSByZWZlcmVuY2UgdG8gdGhlIE5hbWVkRmxvdywg
bm8gZ3VhcmQgaXMgbmVjZXNzYXJ5LgotICAgIGlmICghbV9wYXJlbnRGbG93VGhyZWFkKQotICAg
ICAgICByZXR1cm4gU3RhdGljRWxlbWVudExpc3Q6OmNyZWF0ZSgpOwotCi0gICAgVmVjdG9yPFJl
ZjxFbGVtZW50Pj4gcmVnaW9uRWxlbWVudHM7Ci0KLSAgICBpZiAoaW5GbG93VGhyZWFkKGNvbnRl
bnROb2RlLT5yZW5kZXJlcigpLCBtX3BhcmVudEZsb3dUaHJlYWQpKSB7Ci0gICAgICAgIGNvbnN0
IFJlbmRlclJlZ2lvbkxpc3QmIHJlZ2lvbkxpc3QgPSBtX3BhcmVudEZsb3dUaHJlYWQtPnJlbmRl
clJlZ2lvbkxpc3QoKTsKLSAgICAgICAgZm9yIChjb25zdCBhdXRvJiByZW5kZXJSZWdpb24gOiBy
ZWdpb25MaXN0KSB7Ci0gICAgICAgICAgICBjb25zdCBhdXRvJiBuYW1lZEZsb3dGcmFnbWVudCA9
IGRvd25jYXN0PFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50PigqcmVuZGVyUmVnaW9uKTsKLSAgICAg
ICAgICAgIC8vIEZJWE1FOiBQc2V1ZG8tZWxlbWVudHMgYXJlIG5vdCBpbmNsdWRlZCBpbiB0aGUg
bGlzdC4KLSAgICAgICAgICAgIC8vIFRoZXkgd2lsbCBiZSBpbmNsdWRlZCB3aGVuIHdlIHdpbGwg
cHJvcGVybHkgc3VwcG9ydCB0aGUgUmVnaW9uIGludGVyZmFjZQotICAgICAgICAgICAgLy8gaHR0
cDovL2Rldi53My5vcmcvY3Nzd2cvY3NzLXJlZ2lvbnMvI3RoZS1yZWdpb24taW50ZXJmYWNlCi0g
ICAgICAgICAgICBpZiAobmFtZWRGbG93RnJhZ21lbnQuaXNQc2V1ZG9FbGVtZW50UmVnaW9uKCkp
Ci0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBpZiAobV9wYXJlbnRGbG93
VGhyZWFkLT5vYmplY3RJbkZsb3dSZWdpb24oY29udGVudE5vZGUtPnJlbmRlcmVyKCksICZuYW1l
ZEZsb3dGcmFnbWVudCkpIHsKLSAgICAgICAgICAgICAgICBBU1NFUlQobmFtZWRGbG93RnJhZ21l
bnQuZ2VuZXJhdGluZ0VsZW1lbnQoKSk7Ci0gICAgICAgICAgICAgICAgcmVnaW9uRWxlbWVudHMu
YXBwZW5kKCpuYW1lZEZsb3dGcmFnbWVudC5nZW5lcmF0aW5nRWxlbWVudCgpKTsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiBTdGF0aWNFbGVtZW50TGlzdDo6
Y3JlYXRlKFdURk1vdmUocmVnaW9uRWxlbWVudHMpKTsKLX0KLQotUmVmPE5vZGVMaXN0PiBXZWJL
aXROYW1lZEZsb3c6OmdldFJlZ2lvbnMoKQotewotICAgIGlmIChtX2Zsb3dNYW5hZ2VyLT5kb2N1
bWVudCgpKQotICAgICAgICBtX2Zsb3dNYW5hZ2VyLT5kb2N1bWVudCgpLT51cGRhdGVMYXlvdXRJ
Z25vcmVQZW5kaW5nU3R5bGVzaGVldHMoKTsKLQotICAgIC8vIFRoZSByZW5kZXJlciBtYXkgYmUg
ZGVzdHJveWVkIG9yIGNyZWF0ZWQgYWZ0ZXIgdGhlIHN0eWxlIHVwZGF0ZS4KLSAgICAvLyBCZWNh
dXNlIHRoaXMgaXMgY2FsbGVkIGZyb20gSlMsIHdoZXJlIHRoZSB3cmFwcGVyIGtlZXBzIGEgcmVm
ZXJlbmNlIHRvIHRoZSBOYW1lZEZsb3csIG5vIGd1YXJkIGlzIG5lY2Vzc2FyeS4KLSAgICBpZiAo
IW1fcGFyZW50Rmxvd1RocmVhZCkKLSAgICAgICAgcmV0dXJuIFN0YXRpY0VsZW1lbnRMaXN0Ojpj
cmVhdGUoKTsKLQotICAgIFZlY3RvcjxSZWY8RWxlbWVudD4+IHJlZ2lvbkVsZW1lbnRzOwotCi0g
ICAgY29uc3QgUmVuZGVyUmVnaW9uTGlzdCYgcmVnaW9uTGlzdCA9IG1fcGFyZW50Rmxvd1RocmVh
ZC0+cmVuZGVyUmVnaW9uTGlzdCgpOwotICAgIGZvciAoY29uc3QgYXV0byYgcmVuZGVyUmVnaW9u
IDogcmVnaW9uTGlzdCkgewotICAgICAgICBjb25zdCBhdXRvJiBuYW1lZEZsb3dGcmFnbWVudCA9
IGRvd25jYXN0PFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50PigqcmVuZGVyUmVnaW9uKTsKLSAgICAg
ICAgLy8gRklYTUU6IFBzZXVkby1lbGVtZW50cyBhcmUgbm90IGluY2x1ZGVkIGluIHRoZSBsaXN0
LgotICAgICAgICAvLyBUaGV5IHdpbGwgYmUgaW5jbHVkZWQgd2hlbiB3ZSB3aWxsIHByb3Blcmx5
IHN1cHBvcnQgdGhlIFJlZ2lvbiBpbnRlcmZhY2UKLSAgICAgICAgLy8gaHR0cDovL2Rldi53My5v
cmcvY3Nzd2cvY3NzLXJlZ2lvbnMvI3RoZS1yZWdpb24taW50ZXJmYWNlCi0gICAgICAgIGlmIChu
YW1lZEZsb3dGcmFnbWVudC5pc1BzZXVkb0VsZW1lbnRSZWdpb24oKSkKLSAgICAgICAgICAgIGNv
bnRpbnVlOwotICAgICAgICBBU1NFUlQobmFtZWRGbG93RnJhZ21lbnQuZ2VuZXJhdGluZ0VsZW1l
bnQoKSk7Ci0gICAgICAgIHJlZ2lvbkVsZW1lbnRzLmFwcGVuZCgqbmFtZWRGbG93RnJhZ21lbnQu
Z2VuZXJhdGluZ0VsZW1lbnQoKSk7Ci0gICAgfQotCi0gICAgcmV0dXJuIFN0YXRpY0VsZW1lbnRM
aXN0OjpjcmVhdGUoV1RGTW92ZShyZWdpb25FbGVtZW50cykpOwotfQotCi1SZWY8Tm9kZUxpc3Q+
IFdlYktpdE5hbWVkRmxvdzo6Z2V0Q29udGVudCgpCi17Ci0gICAgaWYgKG1fZmxvd01hbmFnZXIt
PmRvY3VtZW50KCkpCi0gICAgICAgIG1fZmxvd01hbmFnZXItPmRvY3VtZW50KCktPnVwZGF0ZUxh
eW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOwotCi0gICAgLy8gVGhlIHJlbmRlcmVyIG1h
eSBiZSBkZXN0cm95ZWQgb3IgY3JlYXRlZCBhZnRlciB0aGUgc3R5bGUgdXBkYXRlLgotICAgIC8v
IEJlY2F1c2UgdGhpcyBpcyBjYWxsZWQgZnJvbSBKUywgd2hlcmUgdGhlIHdyYXBwZXIga2VlcHMg
YSByZWZlcmVuY2UgdG8gdGhlIE5hbWVkRmxvdywgbm8gZ3VhcmQgaXMgbmVjZXNzYXJ5LgotICAg
IGlmICghbV9wYXJlbnRGbG93VGhyZWFkKQotICAgICAgICByZXR1cm4gU3RhdGljRWxlbWVudExp
c3Q6OmNyZWF0ZSgpOwotCi0gICAgYXV0byYgY29udGVudEVsZW1lbnRzTGlzdCA9IG1fcGFyZW50
Rmxvd1RocmVhZC0+Y29udGVudEVsZW1lbnRzKCk7Ci0gICAgVmVjdG9yPFJlZjxFbGVtZW50Pj4g
Y29udGVudEVsZW1lbnRzOwotICAgIGNvbnRlbnRFbGVtZW50cy5yZXNlcnZlSW5pdGlhbENhcGFj
aXR5KGNvbnRlbnRFbGVtZW50c0xpc3Quc2l6ZSgpKTsKLSAgICBmb3IgKGF1dG8mIGVsZW1lbnQg
OiBjb250ZW50RWxlbWVudHNMaXN0KSB7Ci0gICAgICAgIEFTU0VSVChlbGVtZW50LT5jb21wdXRl
ZFN0eWxlKCktPmZsb3dUaHJlYWQoKSA9PSBtX3BhcmVudEZsb3dUaHJlYWQtPmZsb3dUaHJlYWRO
YW1lKCkpOwotICAgICAgICBjb250ZW50RWxlbWVudHMudW5jaGVja2VkQXBwZW5kKCplbGVtZW50
KTsKLSAgICB9Ci0KLSAgICByZXR1cm4gU3RhdGljRWxlbWVudExpc3Q6OmNyZWF0ZShXVEZNb3Zl
KGNvbnRlbnRFbGVtZW50cykpOwotfQotCi12b2lkIFdlYktpdE5hbWVkRmxvdzo6c2V0UmVuZGVy
ZXIoUmVuZGVyTmFtZWRGbG93VGhyZWFkKiBwYXJlbnRGbG93VGhyZWFkKQotewotICAgIC8vIFRo
ZSBuYW1lZCBmbG93IGNhbiBlaXRoZXIgZ28gZnJvbSBhIG5vX3JlbmRlcmVyLT5yZW5kZXJlciBv
ciByZW5kZXJlci0+bm9fcmVuZGVyZXIgc3RhdGU7IGFueXRoaW5nIGVsc2UgY291bGQgaW5kaWNh
dGUgYSBidWcuCi0gICAgQVNTRVJUKCghbV9wYXJlbnRGbG93VGhyZWFkICYmIHBhcmVudEZsb3dU
aHJlYWQpIHx8IChtX3BhcmVudEZsb3dUaHJlYWQgJiYgIXBhcmVudEZsb3dUaHJlYWQpKTsKLQot
ICAgIC8vIElmIHBhcmVudEZsb3dUaHJlYWQgaXMgMCwgdGhlIGZsb3cgdGhyZWFkIHdpbGwgbW92
ZSBpbiB0aGUgIk5VTEwiIHN0YXRlLgotICAgIG1fcGFyZW50Rmxvd1RocmVhZCA9IHBhcmVudEZs
b3dUaHJlYWQ7Ci19Ci0KLXZvaWQgV2ViS2l0TmFtZWRGbG93OjpkaXNwYXRjaFJlZ2lvbk92ZXJz
ZXRDaGFuZ2VFdmVudCgpCi17Ci0gICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04o
Tm9FdmVudERpc3BhdGNoQXNzZXJ0aW9uOjppc0V2ZW50QWxsb3dlZEluTWFpblRocmVhZCgpKTsK
LSAgICAKLSAgICAvLyBJZiB0aGUgZmxvdyBpcyBpbiB0aGUgIk5VTEwiIHN0YXRlIHRoZSBldmVu
dCBzaG91bGQgbm90IGJlIGRpc3BhdGNoZWQgYW55IG1vcmUuCi0gICAgaWYgKGZsb3dTdGF0ZSgp
ID09IEZsb3dTdGF0ZU51bGwpCi0gICAgICAgIHJldHVybjsKLQotICAgIGRpc3BhdGNoRXZlbnQo
VUlFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS53ZWJraXRyZWdpb25vdmVyc2V0Y2hhbmdlRXZl
bnQsIGZhbHNlLCBmYWxzZSwgbV9mbG93TWFuYWdlci0+ZG9jdW1lbnQoKS0+ZGVmYXVsdFZpZXco
KSwgMCkpOwotfQotCi1TY3JpcHRFeGVjdXRpb25Db250ZXh0KiBXZWJLaXROYW1lZEZsb3c6OnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAotewotICAgIHJldHVybiBtX2Zsb3dNYW5hZ2Vy
LT5kb2N1bWVudCgpOwotfQotCi1Ob2RlKiBXZWJLaXROYW1lZEZsb3c6Om93bmVyTm9kZSgpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuIG1fZmxvd01hbmFnZXItPmRvY3VtZW50KCk7Ci19Ci0KLX0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKLQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1dlYktpdE5hbWVk
Rmxvdy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9XZWJLaXROYW1lZEZsb3cu
aAkocmV2aXNpb24gMjIyMjA0KQorKysgU291cmNlL1dlYkNvcmUvZG9tL1dlYktpdE5hbWVkRmxv
dy5oCShub25leGlzdGVudCkKQEAgLTEsOTMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMSBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlCi0gKiAgICBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZwotICogICAgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCi0gKiAgICBkaXNjbGFpbWVyIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMKLSAqICAgIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIAotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUiAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0g
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQgSE9MREVSIEJFCi0gKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksCi0gKiBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0g
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SCi0gKiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YKLSAqIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgotICogU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJFdmVudFRhcmdldC5oIgotI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotI2luY2x1ZGUg
PHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNz
IE5hbWVkRmxvd0NvbGxlY3Rpb247Ci1jbGFzcyBOb2RlOwotY2xhc3MgTm9kZUxpc3Q7Ci1jbGFz
cyBSZW5kZXJOYW1lZEZsb3dUaHJlYWQ7Ci1jbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0Owot
Ci1jbGFzcyBXZWJLaXROYW1lZEZsb3cgZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJLaXRO
YW1lZEZsb3c+LCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YSB7Ci1wdWJsaWM6Ci0g
ICAgc3RhdGljIFJlZjxXZWJLaXROYW1lZEZsb3c+IGNyZWF0ZShOYW1lZEZsb3dDb2xsZWN0aW9u
JiBtYW5hZ2VyLCBjb25zdCBBdG9taWNTdHJpbmcmIGZsb3dUaHJlYWROYW1lKTsKLQotICAgIH5X
ZWJLaXROYW1lZEZsb3coKTsKLQotICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSgpIGNvbnN0
OwotICAgIGJvb2wgb3ZlcnNldCgpIGNvbnN0OwotICAgIGludCBmaXJzdEVtcHR5UmVnaW9uSW5k
ZXgoKSBjb25zdDsKLSAgICBSZWY8Tm9kZUxpc3Q+IGdldFJlZ2lvbnNCeUNvbnRlbnQoTm9kZSop
OwotICAgIFJlZjxOb2RlTGlzdD4gZ2V0UmVnaW9ucygpOwotICAgIFJlZjxOb2RlTGlzdD4gZ2V0
Q29udGVudCgpOwotCi0gICAgdXNpbmcgUmVmQ291bnRlZDxXZWJLaXROYW1lZEZsb3c+OjpyZWY7
Ci0gICAgdXNpbmcgUmVmQ291bnRlZDxXZWJLaXROYW1lZEZsb3c+OjpkZXJlZjsKLQotICAgIEV2
ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gV2ViS2l0TmFtZWRGbG93RXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBlOyB9Ci0gICAg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IG92
ZXJyaWRlOwotCi0gICAgLy8gVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgZnJvbSB0aGUgSlMgYmlu
ZGluZyBjb2RlIHRvIGRldGVybWluZSBpZiB0aGUgTmFtZWRGbG93IG9iamVjdCBpcyByZWFjaGFi
bGUgb3Igbm90LgotICAgIC8vIElmIHRoZSBvYmplY3QgaGFzIGxpc3RlbmVycywgdGhlIG9iamVj
dCBzaG91bGQgb25seSBiZSBkaXNjYXJkZWQgaWYgdGhlIHBhcmVudCBEb2N1bWVudCBpcyBub3Qg
cmVhY2hhYmxlLgotICAgIE5vZGUqIG93bmVyTm9kZSgpIGNvbnN0OwotCi0gICAgdm9pZCBzZXRS
ZW5kZXJlcihSZW5kZXJOYW1lZEZsb3dUaHJlYWQqIHBhcmVudEZsb3dUaHJlYWQpOwotCi0gICAg
ZW51bSBGbG93U3RhdGUgewotICAgICAgICBGbG93U3RhdGVDcmVhdGVkLAotICAgICAgICBGbG93
U3RhdGVOdWxsCi0gICAgfTsKLQotICAgIEZsb3dTdGF0ZSBmbG93U3RhdGUoKSBjb25zdCB7IHJl
dHVybiBtX3BhcmVudEZsb3dUaHJlYWQgPyBGbG93U3RhdGVDcmVhdGVkIDogRmxvd1N0YXRlTnVs
bDsgfQotCi0gICAgdm9pZCBkaXNwYXRjaFJlZ2lvbk92ZXJzZXRDaGFuZ2VFdmVudCgpOwotCi1w
cml2YXRlOgotICAgIFdlYktpdE5hbWVkRmxvdyhOYW1lZEZsb3dDb2xsZWN0aW9uJiwgY29uc3Qg
QXRvbWljU3RyaW5nJik7Ci0KLSAgICAvLyBFdmVudFRhcmdldCBpbXBsZW1lbnRhdGlvbi4KLSAg
ICB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgb3ZlcnJpZGUgeyByZWYoKTsgfQotICAgIHZvaWQgZGVy
ZWZFdmVudFRhcmdldCgpIG92ZXJyaWRlIHsgZGVyZWYoKTsgfQotCi0gICAgLy8gVGhlIG5hbWUg
b2YgdGhlIGZsb3cgdGhyZWFkIGFzIHNwZWNpZmllZCBpbiBDU1MuCi0gICAgQXRvbWljU3RyaW5n
IG1fZmxvd1RocmVhZE5hbWU7Ci0KLSAgICBSZWZQdHI8TmFtZWRGbG93Q29sbGVjdGlvbj4gbV9m
bG93TWFuYWdlcjsKLSAgICBSZW5kZXJOYW1lZEZsb3dUaHJlYWQqIG1fcGFyZW50Rmxvd1RocmVh
ZDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Rv
bS9XZWJLaXROYW1lZEZsb3cuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9X
ZWJLaXROYW1lZEZsb3cuaWRsCShyZXZpc2lvbiAyMjIyMDQpCisrKyBTb3VyY2UvV2ViQ29yZS9k
b20vV2ViS2l0TmFtZWRGbG93LmlkbAkobm9uZXhpc3RlbnQpCkBAIC0xLDQyICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZQotICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcKLSAqICAgIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiAgICBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZwot
ICogICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzCi0gKiAgICBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKiAKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVIgIkFTIElTIiBBTkQg
QU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBCRQotICogTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLAot
ICogT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUgotICogVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GCi0gKiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YKLSAqIFNVQ0ggREFNQUdFLgotICovCi0KLVsKLSAgICBHZW5lcmF0ZUlzUmVhY2hhYmxlPUlt
cGxPd25lck5vZGVSb290LAotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAotXSBpbnRlcmZhY2UgV2Vi
S2l0TmFtZWRGbG93IDogRXZlbnRUYXJnZXQKLXsKLSAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9N
U3RyaW5nIG5hbWU7Ci0gICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gb3ZlcnNldDsKLSAg
ICByZWFkb25seSBhdHRyaWJ1dGUgbG9uZyBmaXJzdEVtcHR5UmVnaW9uSW5kZXg7Ci0gICAgLy8g
RklYTUU6IGNvbnRlbnROb2RlIHNob3VsZCBub3QgYmUgbnVsbGFibGUuCi0gICAgTm9kZUxpc3Qg
Z2V0UmVnaW9uc0J5Q29udGVudChOb2RlPyBjb250ZW50Tm9kZSk7Ci0gICAgTm9kZUxpc3QgZ2V0
UmVnaW9ucygpOwotICAgIE5vZGVMaXN0IGdldENvbnRlbnQoKTsKLX07CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAJKHJldmlzaW9uIDIy
MjIwNCkKKysrIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM3LDE2ICszNywxNSBAQAogI2luY2x1ZGUgIkNvbnRlbnRTZWN1
cml0eVBvbGljeS5oIgogI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkZvbnRDYWNo
ZS5oIgorI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiSFRNTEhlYWRFbGVtZW50LmgiCiAj
aW5jbHVkZSAiSFRNTFN0eWxlRWxlbWVudC5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckhpc3Rvcnku
aCIKICNpbmNsdWRlICJJbnNwZWN0b3JQYWdlQWdlbnQuaCIKICNpbmNsdWRlICJJbnN0cnVtZW50
aW5nQWdlbnRzLmgiCi0jaW5jbHVkZSAiTmFtZWRGbG93Q29sbGVjdGlvbi5oIgogI2luY2x1ZGUg
Ik5vZGUuaCIKICNpbmNsdWRlICJOb2RlTGlzdC5oIgogI2luY2x1ZGUgIlBzZXVkb0VsZW1lbnQu
aCIKLSNpbmNsdWRlICJSZW5kZXJOYW1lZEZsb3dGcmFnbWVudC5oIgogI2luY2x1ZGUgIlNWR1N0
eWxlRWxlbWVudC5oIgogI2luY2x1ZGUgIlNlbGVjdG9yQ2hlY2tlci5oIgogI2luY2x1ZGUgIlNo
YWRvd1Jvb3QuaCIKQEAgLTU2LDcgKzU1LDYgQEAKICNpbmNsdWRlICJTdHlsZVJ1bGUuaCIKICNp
bmNsdWRlICJTdHlsZVNjb3BlLmgiCiAjaW5jbHVkZSAiU3R5bGVTaGVldExpc3QuaCIKLSNpbmNs
dWRlICJXZWJLaXROYW1lZEZsb3cuaCIKICNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yUHJv
dG9jb2xPYmplY3RzLmg+CiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KQEAgLTEwMyw1NCArMTAxLDYgQEAgc3RhdGljIHVuc2lnbmVkIGNvbXB1dGVQc2V1ZG9D
bGFzc01hc2soYwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLWNsYXNzIENoYW5nZVJlZ2lvbk92
ZXJzZXRUYXNrIHsKLXB1YmxpYzoKLSAgICBDaGFuZ2VSZWdpb25PdmVyc2V0VGFzayhJbnNwZWN0
b3JDU1NBZ2VudCopOwotICAgIHZvaWQgc2NoZWR1bGVGb3IoV2ViS2l0TmFtZWRGbG93KiwgaW50
IGRvY3VtZW50Tm9kZUlkKTsKLSAgICB2b2lkIHVuc2NoZWR1bGUoV2ViS2l0TmFtZWRGbG93Kik7
Ci0gICAgdm9pZCByZXNldCgpOwotICAgIHZvaWQgdGltZXJGaXJlZCgpOwotCi1wcml2YXRlOgot
ICAgIEluc3BlY3RvckNTU0FnZW50KiBtX2Nzc0FnZW50OwotICAgIFRpbWVyIG1fdGltZXI7Ci0g
ICAgSGFzaE1hcDxXZWJLaXROYW1lZEZsb3cqLCBpbnQ+IG1fbmFtZWRGbG93czsKLX07Ci0KLUNo
YW5nZVJlZ2lvbk92ZXJzZXRUYXNrOjpDaGFuZ2VSZWdpb25PdmVyc2V0VGFzayhJbnNwZWN0b3JD
U1NBZ2VudCogY3NzQWdlbnQpCi0gICAgOiBtX2Nzc0FnZW50KGNzc0FnZW50KQotICAgICwgbV90
aW1lcigqdGhpcywgJkNoYW5nZVJlZ2lvbk92ZXJzZXRUYXNrOjp0aW1lckZpcmVkKQotewotfQot
Ci12b2lkIENoYW5nZVJlZ2lvbk92ZXJzZXRUYXNrOjpzY2hlZHVsZUZvcihXZWJLaXROYW1lZEZs
b3cqIG5hbWVkRmxvdywgaW50IGRvY3VtZW50Tm9kZUlkKQotewotICAgIG1fbmFtZWRGbG93cy5h
ZGQobmFtZWRGbG93LCBkb2N1bWVudE5vZGVJZCk7Ci0KLSAgICBpZiAoIW1fdGltZXIuaXNBY3Rp
dmUoKSkKLSAgICAgICAgbV90aW1lci5zdGFydE9uZVNob3QoMF9zKTsKLX0KLQotdm9pZCBDaGFu
Z2VSZWdpb25PdmVyc2V0VGFzazo6dW5zY2hlZHVsZShXZWJLaXROYW1lZEZsb3cqIG5hbWVkRmxv
dykKLXsKLSAgICBtX25hbWVkRmxvd3MucmVtb3ZlKG5hbWVkRmxvdyk7Ci19Ci0KLXZvaWQgQ2hh
bmdlUmVnaW9uT3ZlcnNldFRhc2s6OnJlc2V0KCkKLXsKLSAgICBtX3RpbWVyLnN0b3AoKTsKLSAg
ICBtX25hbWVkRmxvd3MuY2xlYXIoKTsKLX0KLQotdm9pZCBDaGFuZ2VSZWdpb25PdmVyc2V0VGFz
azo6dGltZXJGaXJlZCgpCi17Ci0gICAgLy8gVGhlIHRpbWVyIGlzIHN0b3BwZWQgb24gbV9jc3NB
Z2VudCBkZXN0cnVjdGlvbiwgc28gdGhpcyBtZXRob2Qgd2lsbCBuZXZlciBiZSBjYWxsZWQgYWZ0
ZXIgbV9jc3NBZ2VudCBoYXMgYmVlbiBkZXN0cm95ZWQuCi0gICAgZm9yIChhdXRvJiBuYW1lZEZs
b3cgOiBtX25hbWVkRmxvd3MpCi0gICAgICAgIG1fY3NzQWdlbnQtPnJlZ2lvbk92ZXJzZXRDaGFu
Z2VkKG5hbWVkRmxvdy5rZXksIG5hbWVkRmxvdy52YWx1ZSk7Ci0KLSAgICBtX25hbWVkRmxvd3Mu
Y2xlYXIoKTsKLX0KLQogY2xhc3MgSW5zcGVjdG9yQ1NTQWdlbnQ6OlN0eWxlU2hlZXRBY3Rpb24g
OiBwdWJsaWMgSW5zcGVjdG9ySGlzdG9yeTo6QWN0aW9uIHsKICAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShTdHlsZVNoZWV0QWN0aW9uKTsKIHB1YmxpYzoKQEAgLTM4NSw5ICszMzUsNiBAQCB2b2lk
IEluc3BlY3RvckNTU0FnZW50OjpyZXNldCgpCiAKIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OnJl
c2V0Tm9uUGVyc2lzdGVudERhdGEoKQogewotICAgIG1fbmFtZWRGbG93Q29sbGVjdGlvbnNSZXF1
ZXN0ZWQuY2xlYXIoKTsKLSAgICBpZiAobV9jaGFuZ2VSZWdpb25PdmVyc2V0VGFzaykKLSAgICAg
ICAgbV9jaGFuZ2VSZWdpb25PdmVyc2V0VGFzay0+cmVzZXQoKTsKICAgICByZXNldFBzZXVkb1N0
YXRlcygpOwogfQogCkBAIC00NTgsNzcgKzQwNSw2IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6
OnNldEFjdGl2ZVN0eWxlU2gKICAgICB9CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmRp
ZENyZWF0ZU5hbWVkRmxvdyhEb2N1bWVudCYgZG9jdW1lbnQsIFdlYktpdE5hbWVkRmxvdyYgbmFt
ZWRGbG93KQotewotICAgIGludCBkb2N1bWVudE5vZGVJZCA9IGRvY3VtZW50Tm9kZVdpdGhSZXF1
ZXN0ZWRGbG93c0lkKCZkb2N1bWVudCk7Ci0gICAgaWYgKCFkb2N1bWVudE5vZGVJZCkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgRXJyb3JTdHJpbmcgdW51c2VkOwotICAgIG1fZnJvbnRlbmREaXNw
YXRjaGVyLT5uYW1lZEZsb3dDcmVhdGVkKGJ1aWxkT2JqZWN0Rm9yTmFtZWRGbG93KHVudXNlZCwg
Jm5hbWVkRmxvdywgZG9jdW1lbnROb2RlSWQpKTsKLX0KLQotdm9pZCBJbnNwZWN0b3JDU1NBZ2Vu
dDo6d2lsbFJlbW92ZU5hbWVkRmxvdyhEb2N1bWVudCYgZG9jdW1lbnQsIFdlYktpdE5hbWVkRmxv
dyYgbmFtZWRGbG93KQotewotICAgIGludCBkb2N1bWVudE5vZGVJZCA9IGRvY3VtZW50Tm9kZVdp
dGhSZXF1ZXN0ZWRGbG93c0lkKCZkb2N1bWVudCk7Ci0gICAgaWYgKCFkb2N1bWVudE5vZGVJZCkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKG1fY2hhbmdlUmVnaW9uT3ZlcnNldFRhc2spCi0g
ICAgICAgIG1fY2hhbmdlUmVnaW9uT3ZlcnNldFRhc2stPnVuc2NoZWR1bGUoJm5hbWVkRmxvdyk7
Ci0KLSAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+bmFtZWRGbG93UmVtb3ZlZChkb2N1bWVudE5v
ZGVJZCwgbmFtZWRGbG93Lm5hbWUoKS5zdHJpbmcoKSk7Ci19Ci0KLXZvaWQgSW5zcGVjdG9yQ1NT
QWdlbnQ6OmRpZENoYW5nZVJlZ2lvbk92ZXJzZXQoRG9jdW1lbnQmIGRvY3VtZW50LCBXZWJLaXRO
YW1lZEZsb3cmIG5hbWVkRmxvdykKLXsKLSAgICBpbnQgZG9jdW1lbnROb2RlSWQgPSBkb2N1bWVu
dE5vZGVXaXRoUmVxdWVzdGVkRmxvd3NJZCgmZG9jdW1lbnQpOwotICAgIGlmICghZG9jdW1lbnRO
b2RlSWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmICghbV9jaGFuZ2VSZWdpb25PdmVyc2V0
VGFzaykKLSAgICAgICAgbV9jaGFuZ2VSZWdpb25PdmVyc2V0VGFzayA9IHN0ZDo6bWFrZV91bmlx
dWU8Q2hhbmdlUmVnaW9uT3ZlcnNldFRhc2s+KHRoaXMpOwotICAgIG1fY2hhbmdlUmVnaW9uT3Zl
cnNldFRhc2stPnNjaGVkdWxlRm9yKCZuYW1lZEZsb3csIGRvY3VtZW50Tm9kZUlkKTsKLX0KLQot
dm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6cmVnaW9uT3ZlcnNldENoYW5nZWQoV2ViS2l0TmFtZWRG
bG93KiBuYW1lZEZsb3csIGludCBkb2N1bWVudE5vZGVJZCkKLXsKLSAgICBpZiAobmFtZWRGbG93
LT5mbG93U3RhdGUoKSA9PSBXZWJLaXROYW1lZEZsb3c6OkZsb3dTdGF0ZU51bGwpCi0gICAgICAg
IHJldHVybjsKLQotICAgIEVycm9yU3RyaW5nIHVudXNlZDsKLSAgICBSZWY8V2ViS2l0TmFtZWRG
bG93PiBwcm90ZWN0KCpuYW1lZEZsb3cpOwotCi0gICAgbV9mcm9udGVuZERpc3BhdGNoZXItPnJl
Z2lvbk92ZXJzZXRDaGFuZ2VkKGJ1aWxkT2JqZWN0Rm9yTmFtZWRGbG93KHVudXNlZCwgbmFtZWRG
bG93LCBkb2N1bWVudE5vZGVJZCkpOwotfQotCi12b2lkIEluc3BlY3RvckNTU0FnZW50OjpkaWRS
ZWdpc3Rlck5hbWVkRmxvd0NvbnRlbnRFbGVtZW50KERvY3VtZW50JiBkb2N1bWVudCwgV2ViS2l0
TmFtZWRGbG93JiBuYW1lZEZsb3csIE5vZGUmIGNvbnRlbnRFbGVtZW50LCBOb2RlKiBuZXh0Q29u
dGVudEVsZW1lbnQpCi17Ci0gICAgaW50IGRvY3VtZW50Tm9kZUlkID0gZG9jdW1lbnROb2RlV2l0
aFJlcXVlc3RlZEZsb3dzSWQoJmRvY3VtZW50KTsKLSAgICBpZiAoIWRvY3VtZW50Tm9kZUlkKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBFcnJvclN0cmluZyB1bnVzZWQ7Ci0gICAgaW50IGNvbnRl
bnRFbGVtZW50Tm9kZUlkID0gbV9kb21BZ2VudC0+cHVzaE5vZGVUb0Zyb250ZW5kKHVudXNlZCwg
ZG9jdW1lbnROb2RlSWQsICZjb250ZW50RWxlbWVudCk7Ci0gICAgaW50IG5leHRDb250ZW50RWxl
bWVudE5vZGVJZCA9IG5leHRDb250ZW50RWxlbWVudCA/IG1fZG9tQWdlbnQtPnB1c2hOb2RlVG9G
cm9udGVuZCh1bnVzZWQsIGRvY3VtZW50Tm9kZUlkLCBuZXh0Q29udGVudEVsZW1lbnQpIDogMDsK
LSAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+cmVnaXN0ZXJlZE5hbWVkRmxvd0NvbnRlbnRFbGVt
ZW50KGRvY3VtZW50Tm9kZUlkLCBuYW1lZEZsb3cubmFtZSgpLnN0cmluZygpLCBjb250ZW50RWxl
bWVudE5vZGVJZCwgbmV4dENvbnRlbnRFbGVtZW50Tm9kZUlkKTsKLX0KLQotdm9pZCBJbnNwZWN0
b3JDU1NBZ2VudDo6ZGlkVW5yZWdpc3Rlck5hbWVkRmxvd0NvbnRlbnRFbGVtZW50KERvY3VtZW50
JiBkb2N1bWVudCwgV2ViS2l0TmFtZWRGbG93JiBuYW1lZEZsb3csIE5vZGUmIGNvbnRlbnRFbGVt
ZW50KQotewotICAgIGludCBkb2N1bWVudE5vZGVJZCA9IGRvY3VtZW50Tm9kZVdpdGhSZXF1ZXN0
ZWRGbG93c0lkKCZkb2N1bWVudCk7Ci0gICAgaWYgKCFkb2N1bWVudE5vZGVJZCkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgRXJyb3JTdHJpbmcgdW51c2VkOwotICAgIGludCBjb250ZW50RWxlbWVu
dE5vZGVJZCA9IG1fZG9tQWdlbnQtPnB1c2hOb2RlVG9Gcm9udGVuZCh1bnVzZWQsIGRvY3VtZW50
Tm9kZUlkLCAmY29udGVudEVsZW1lbnQpOwotICAgIGlmICghY29udGVudEVsZW1lbnROb2RlSWQp
IHsKLSAgICAgICAgLy8gV2UndmUgYWxyZWFkeSBub3RpZmllZCB0aGF0IHRoZSBET00gbm9kZSB3
YXMgcmVtb3ZlZCBmcm9tIHRoZSBET00sIHNvIHRoZXJlJ3Mgbm8gbmVlZCB0byBzZW5kIGFub3Ro
ZXIgZXZlbnQuCi0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgbV9mcm9udGVuZERpc3BhdGNo
ZXItPnVucmVnaXN0ZXJlZE5hbWVkRmxvd0NvbnRlbnRFbGVtZW50KGRvY3VtZW50Tm9kZUlkLCBu
YW1lZEZsb3cubmFtZSgpLnN0cmluZygpLCBjb250ZW50RWxlbWVudE5vZGVJZCk7Ci19Ci0KIGJv
b2wgSW5zcGVjdG9yQ1NTQWdlbnQ6OmZvcmNlUHNldWRvU3RhdGUoY29uc3QgRWxlbWVudCYgZWxl
bWVudCwgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzVHlwZSBwc2V1ZG9DbGFzc1R5cGUpCiB7CiAg
ICAgaWYgKG1fbm9kZUlkVG9Gb3JjZWRQc2V1ZG9TdGF0ZS5pc0VtcHR5KCkpCkBAIC05MDEsMjEg
Kzc3Nyw4IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmZvcmNlUHNldWRvU3RhdGUKICAgICBl
bGVtZW50LT5kb2N1bWVudCgpLnN0eWxlU2NvcGUoKS5kaWRDaGFuZ2VTdHlsZVNoZWV0RW52aXJv
bm1lbnQoKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0TmFtZWRGbG93Q29sbGVj
dGlvbihFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGludCBkb2N1bWVudE5vZGVJZCwgUmVmUHRy
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6TmFt
ZWRGbG93Pj4mIHJlc3VsdCkKK3ZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldE5hbWVkRmxvd0Nv
bGxlY3Rpb24oRXJyb3JTdHJpbmcmLCBpbnQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpB
cnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6Ok5hbWVkRmxvdz4+JikKIHsKLSAgICBEb2N1
bWVudCogZG9jdW1lbnQgPSBtX2RvbUFnZW50LT5hc3NlcnREb2N1bWVudChlcnJvclN0cmluZywg
ZG9jdW1lbnROb2RlSWQpOwotICAgIGlmICghZG9jdW1lbnQpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIG1fbmFtZWRGbG93Q29sbGVjdGlvbnNSZXF1ZXN0ZWQuYWRkKGRvY3VtZW50Tm9kZUlkKTsK
LQotICAgIFZlY3RvcjxSZWZQdHI8V2ViS2l0TmFtZWRGbG93Pj4gbmFtZWRGbG93c1ZlY3RvciA9
IGRvY3VtZW50LT5uYW1lZEZsb3dzKCkubmFtZWRGbG93cygpOwotICAgIGF1dG8gbmFtZWRGbG93
cyA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6
TmFtZWRGbG93Pjo6Y3JlYXRlKCk7Ci0KLSAgICBmb3IgKGF1dG8mIG5hbWVkRmxvdyA6IG5hbWVk
Rmxvd3NWZWN0b3IpCi0gICAgICAgIG5hbWVkRmxvd3MtPmFkZEl0ZW0oYnVpbGRPYmplY3RGb3JO
YW1lZEZsb3coZXJyb3JTdHJpbmcsIG5hbWVkRmxvdy5nZXQoKSwgZG9jdW1lbnROb2RlSWQpKTsK
LQotICAgIHJlc3VsdCA9IFdURk1vdmUobmFtZWRGbG93cyk7CiB9CiAKIEluc3BlY3RvclN0eWxl
U2hlZXRGb3JJbmxpbmVTdHlsZSYgSW5zcGVjdG9yQ1NTQWdlbnQ6OmFzSW5zcGVjdG9yU3R5bGVT
aGVldChTdHlsZWRFbGVtZW50JiBlbGVtZW50KQpAQCAtOTQ3LDE1ICs4MTAsNiBAQCBFbGVtZW50
KiBJbnNwZWN0b3JDU1NBZ2VudDo6ZWxlbWVudEZvcklkCiAgICAgcmV0dXJuIGRvd25jYXN0PEVs
ZW1lbnQ+KG5vZGUpOwogfQogCi1pbnQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmRvY3VtZW50Tm9kZVdp
dGhSZXF1ZXN0ZWRGbG93c0lkKERvY3VtZW50KiBkb2N1bWVudCkKLXsKLSAgICBpbnQgZG9jdW1l
bnROb2RlSWQgPSBtX2RvbUFnZW50LT5ib3VuZE5vZGVJZChkb2N1bWVudCk7Ci0gICAgaWYgKCFk
b2N1bWVudE5vZGVJZCB8fCAhbV9uYW1lZEZsb3dDb2xsZWN0aW9uc1JlcXVlc3RlZC5jb250YWlu
cyhkb2N1bWVudE5vZGVJZCkpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgcmV0dXJuIGRvY3Vt
ZW50Tm9kZUlkOwotfQotCiBTdHJpbmcgSW5zcGVjdG9yQ1NTQWdlbnQ6OnVuYmluZFN0eWxlU2hl
ZXQoSW5zcGVjdG9yU3R5bGVTaGVldCogaW5zcGVjdG9yU3R5bGVTaGVldCkKIHsKICAgICBTdHJp
bmcgaWQgPSBpbnNwZWN0b3JTdHlsZVNoZWV0LT5pZCgpOwpAQCAtMTA5Miw2MSArOTQ2LDYgQEAg
UmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTU3R5bAogICAgIHJldHVybiBpbnNw
ZWN0b3JTdHlsZS0+YnVpbGRPYmplY3RGb3JTdHlsZSgpOwogfQogCi1SZWZQdHI8SW5zcGVjdG9y
OjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpSZWdpb24+PiBJbnNw
ZWN0b3JDU1NBZ2VudDo6YnVpbGRBcnJheUZvclJlZ2lvbnMoRXJyb3JTdHJpbmcmIGVycm9yU3Ry
aW5nLCBSZWZQdHI8Tm9kZUxpc3Q+JiYgcmVnaW9uTGlzdCwgaW50IGRvY3VtZW50Tm9kZUlkKQot
ewotICAgIGF1dG8gcmVnaW9ucyA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkNTUzo6UmVnaW9uPjo6Y3JlYXRlKCk7Ci0KLSAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgcmVnaW9uTGlzdC0+bGVuZ3RoKCk7ICsraSkgewotICAgICAgICBJbnNwZWN0
b3I6OlByb3RvY29sOjpDU1M6OlJlZ2lvbjo6UmVnaW9uT3ZlcnNldCByZWdpb25PdmVyc2V0Owot
Ci0gICAgICAgIHN3aXRjaCAoZG93bmNhc3Q8RWxlbWVudD4ocmVnaW9uTGlzdC0+aXRlbShpKSkt
PnJlZ2lvbk92ZXJzZXRTdGF0ZSgpKSB7Ci0gICAgICAgIGNhc2UgUmVnaW9uRml0OgotICAgICAg
ICAgICAgcmVnaW9uT3ZlcnNldCA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6UmVnaW9uOjpS
ZWdpb25PdmVyc2V0OjpGaXQ7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBSZWdp
b25FbXB0eToKLSAgICAgICAgICAgIHJlZ2lvbk92ZXJzZXQgPSBJbnNwZWN0b3I6OlByb3RvY29s
OjpDU1M6OlJlZ2lvbjo6UmVnaW9uT3ZlcnNldDo6RW1wdHk7Ci0gICAgICAgICAgICBicmVhazsK
LSAgICAgICAgY2FzZSBSZWdpb25PdmVyc2V0OgotICAgICAgICAgICAgcmVnaW9uT3ZlcnNldCA9
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6UmVnaW9uOjpSZWdpb25PdmVyc2V0OjpPdmVyc2V0
OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgUmVnaW9uVW5kZWZpbmVkOgotICAg
ICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0KLSAgICAg
ICAgYXV0byByZWdpb24gPSBJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OlJlZ2lvbjo6Y3JlYXRl
KCkKLSAgICAgICAgICAgIC5zZXRSZWdpb25PdmVyc2V0KHJlZ2lvbk92ZXJzZXQpCi0gICAgICAg
ICAgICAvLyBkb2N1bWVudE5vZGVJZCB3YXMgcHJldmlvdXNseSBhc3NlcnRlZAotICAgICAgICAg
ICAgLnNldE5vZGVJZChtX2RvbUFnZW50LT5wdXNoTm9kZVRvRnJvbnRlbmQoZXJyb3JTdHJpbmcs
IGRvY3VtZW50Tm9kZUlkLCByZWdpb25MaXN0LT5pdGVtKGkpKSkKLSAgICAgICAgICAgIC5yZWxl
YXNlKCk7Ci0KLSAgICAgICAgcmVnaW9ucy0+YWRkSXRlbShXVEZNb3ZlKHJlZ2lvbikpOwotICAg
IH0KLQotICAgIHJldHVybiBXVEZNb3ZlKHJlZ2lvbnMpOwotfQotCi1SZWZQdHI8SW5zcGVjdG9y
OjpQcm90b2NvbDo6Q1NTOjpOYW1lZEZsb3c+IEluc3BlY3RvckNTU0FnZW50OjpidWlsZE9iamVj
dEZvck5hbWVkRmxvdyhFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIFdlYktpdE5hbWVkRmxvdyog
d2Via2l0TmFtZWRGbG93LCBpbnQgZG9jdW1lbnROb2RlSWQpCi17Ci0gICAgUmVmUHRyPE5vZGVM
aXN0PiBjb250ZW50TGlzdCA9IHdlYmtpdE5hbWVkRmxvdy0+Z2V0Q29udGVudCgpOwotICAgIGF1
dG8gY29udGVudCA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PGludD46OmNyZWF0ZSgpOwot
Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNvbnRlbnRMaXN0LT5sZW5ndGgoKTsgKytp
KSB7Ci0gICAgICAgIC8vIGRvY3VtZW50Tm9kZUlkIHdhcyBwcmV2aW91c2x5IGFzc2VydGVkCi0g
ICAgICAgIGNvbnRlbnQtPmFkZEl0ZW0obV9kb21BZ2VudC0+cHVzaE5vZGVUb0Zyb250ZW5kKGVy
cm9yU3RyaW5nLCBkb2N1bWVudE5vZGVJZCwgY29udGVudExpc3QtPml0ZW0oaSkpKTsKLSAgICB9
Ci0KLSAgICByZXR1cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpOYW1lZEZsb3c6OmNyZWF0
ZSgpCi0gICAgICAgIC5zZXREb2N1bWVudE5vZGVJZChkb2N1bWVudE5vZGVJZCkKLSAgICAgICAg
LnNldE5hbWUod2Via2l0TmFtZWRGbG93LT5uYW1lKCkuc3RyaW5nKCkpCi0gICAgICAgIC5zZXRP
dmVyc2V0KHdlYmtpdE5hbWVkRmxvdy0+b3ZlcnNldCgpKQotICAgICAgICAuc2V0Q29udGVudChX
VEZNb3ZlKGNvbnRlbnQpKQotICAgICAgICAuc2V0UmVnaW9ucyhidWlsZEFycmF5Rm9yUmVnaW9u
cyhlcnJvclN0cmluZywgd2Via2l0TmFtZWRGbG93LT5nZXRSZWdpb25zKCksIGRvY3VtZW50Tm9k
ZUlkKSkKLSAgICAgICAgLnJlbGVhc2UoKTsKLX0KLQogdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6
ZGlkUmVtb3ZlRE9NTm9kZShOb2RlJiBub2RlLCBpbnQgbm9kZUlkKQogewogICAgIG1fbm9kZUlk
VG9Gb3JjZWRQc2V1ZG9TdGF0ZS5yZW1vdmUobm9kZUlkKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oCShyZXZpc2lvbiAyMjIyMDQpCisrKyBT
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuaAkod29ya2luZyBjb3B5
KQpAQCAtNDcsMTQgKzQ3LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENTU1J1bGU7
CiBjbGFzcyBDU1NTdHlsZVJ1bGU7CiBjbGFzcyBDU1NTdHlsZVNoZWV0OwotY2xhc3MgQ2hhbmdl
UmVnaW9uT3ZlcnNldFRhc2s7CiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIEVsZW1lbnQ7CiBjbGFz
cyBOb2RlOwogY2xhc3MgTm9kZUxpc3Q7CiBjbGFzcyBTdHlsZVJlc29sdmVyOwogY2xhc3MgU3R5
bGVSdWxlOwotY2xhc3MgV2ViS2l0TmFtZWRGbG93OwogCiBjbGFzcyBJbnNwZWN0b3JDU1NBZ2Vu
dCBmaW5hbAogICAgIDogcHVibGljIEluc3BlY3RvckFnZW50QmFzZQpAQCAtOTEsMTggKzg5LDEy
IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpc2NhcmRBZ2VudCgpIG92ZXJyaWRlOwogICAgIHZvaWQg
ZW5hYmxlKEVycm9yU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaXNhYmxlKEVycm9yU3Ry
aW5nJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCByZWdpb25PdmVyc2V0Q2hhbmdlZChXZWJLaXROYW1l
ZEZsb3cqLCBpbnQgZG9jdW1lbnROb2RlSWQpOwogICAgIHZvaWQgcmVzZXQoKTsKIAogICAgIC8v
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbgogICAgIHZvaWQgZG9jdW1lbnREZXRhY2hlZChEb2N1
bWVudCYpOwogICAgIHZvaWQgbWVkaWFRdWVyeVJlc3VsdENoYW5nZWQoKTsKICAgICB2b2lkIGFj
dGl2ZVN0eWxlU2hlZXRzVXBkYXRlZChEb2N1bWVudCYpOwotICAgIHZvaWQgZGlkQ3JlYXRlTmFt
ZWRGbG93KERvY3VtZW50JiwgV2ViS2l0TmFtZWRGbG93Jik7Ci0gICAgdm9pZCB3aWxsUmVtb3Zl
TmFtZWRGbG93KERvY3VtZW50JiwgV2ViS2l0TmFtZWRGbG93Jik7Ci0gICAgdm9pZCBkaWRDaGFu
Z2VSZWdpb25PdmVyc2V0KERvY3VtZW50JiwgV2ViS2l0TmFtZWRGbG93Jik7Ci0gICAgdm9pZCBk
aWRSZWdpc3Rlck5hbWVkRmxvd0NvbnRlbnRFbGVtZW50KERvY3VtZW50JiwgV2ViS2l0TmFtZWRG
bG93JiwgTm9kZSYgY29udGVudEVsZW1lbnQsIE5vZGUqIG5leHRDb250ZW50RWxlbWVudCA9IG51
bGxwdHIpOwotICAgIHZvaWQgZGlkVW5yZWdpc3Rlck5hbWVkRmxvd0NvbnRlbnRFbGVtZW50KERv
Y3VtZW50JiwgV2ViS2l0TmFtZWRGbG93JiwgTm9kZSYgY29udGVudEVsZW1lbnQpOwogICAgIGJv
b2wgZm9yY2VQc2V1ZG9TdGF0ZShjb25zdCBFbGVtZW50JiwgQ1NTU2VsZWN0b3I6OlBzZXVkb0Ns
YXNzVHlwZSk7CiAKICAgICB2b2lkIGdldENvbXB1dGVkU3R5bGVGb3JOb2RlKEVycm9yU3RyaW5n
JiwgaW50IG5vZGVJZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkNTUzo6Q1NTQ29tcHV0ZWRTdHlsZVByb3BlcnR5Pj4mKSBvdmVycmlkZTsK
QEAgLTEzNyw3ICsxMjksNiBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVzZXROb25QZXJzaXN0ZW50
RGF0YSgpOwogICAgIEluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZSYgYXNJbnNwZWN0
b3JTdHlsZVNoZWV0KFN0eWxlZEVsZW1lbnQmKTsKICAgICBFbGVtZW50KiBlbGVtZW50Rm9ySWQo
RXJyb3JTdHJpbmcmLCBpbnQgbm9kZUlkKTsKLSAgICBpbnQgZG9jdW1lbnROb2RlV2l0aFJlcXVl
c3RlZEZsb3dzSWQoRG9jdW1lbnQqKTsKIAogICAgIHZvaWQgY29sbGVjdEFsbFN0eWxlU2hlZXRz
KFZlY3RvcjxJbnNwZWN0b3JTdHlsZVNoZWV0Kj4mKTsKICAgICB2b2lkIGNvbGxlY3RBbGxEb2N1
bWVudFN0eWxlU2hlZXRzKERvY3VtZW50JiwgVmVjdG9yPENTU1N0eWxlU2hlZXQqPiYpOwpAQCAt
MTU0LDggKzE0NSw2IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkNTUzo6Q1NTUnVsZT4gYnVpbGRPYmplY3RGb3JSdWxlKENTU1N0eWxlUnVsZSopOwogICAgIFJl
ZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6
OlJ1bGVNYXRjaD4+IGJ1aWxkQXJyYXlGb3JNYXRjaGVkUnVsZUxpc3QoY29uc3QgVmVjdG9yPFJl
ZlB0cjxTdHlsZVJ1bGU+PiYsIFN0eWxlUmVzb2x2ZXImLCBFbGVtZW50JiwgUHNldWRvSWQpOwog
ICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1N0eWxlPiBidWlsZE9iamVj
dEZvckF0dHJpYnV0ZXNTdHlsZShTdHlsZWRFbGVtZW50Jik7Ci0gICAgUmVmUHRyPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6UmVnaW9uPj4gYnVp
bGRBcnJheUZvclJlZ2lvbnMoRXJyb3JTdHJpbmcmLCBSZWZQdHI8Tm9kZUxpc3Q+JiYsIGludCBk
b2N1bWVudE5vZGVJZCk7Ci0gICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6TmFt
ZWRGbG93PiBidWlsZE9iamVjdEZvck5hbWVkRmxvdyhFcnJvclN0cmluZyYsIFdlYktpdE5hbWVk
RmxvdyosIGludCBkb2N1bWVudE5vZGVJZCk7CiAKICAgICAvLyBJbnNwZWN0b3JET01BZ2VudDo6
RE9NTGlzdGVuZXIgaW1wbGVtZW50YXRpb24KICAgICB2b2lkIGRpZFJlbW92ZURPTU5vZGUoTm9k
ZSYsIGludCBub2RlSWQpIG92ZXJyaWRlOwpAQCAtMTc3LDggKzE2Niw2IEBAIHByaXZhdGU6CiAg
ICAgSGFzaE1hcDxEb2N1bWVudCosIEhhc2hTZXQ8Q1NTU3R5bGVTaGVldCo+PiBtX2RvY3VtZW50
VG9Lbm93bkNTU1N0eWxlU2hlZXRzOwogICAgIE5vZGVJZFRvRm9yY2VkUHNldWRvU3RhdGUgbV9u
b2RlSWRUb0ZvcmNlZFBzZXVkb1N0YXRlOwogICAgIEhhc2hTZXQ8RG9jdW1lbnQqPiBtX2RvY3Vt
ZW50c1dpdGhGb3JjZWRQc2V1ZG9TdGF0ZXM7Ci0gICAgSGFzaFNldDxpbnQ+IG1fbmFtZWRGbG93
Q29sbGVjdGlvbnNSZXF1ZXN0ZWQ7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPENoYW5nZVJlZ2lvbk92
ZXJzZXRUYXNrPiBtX2NoYW5nZVJlZ2lvbk92ZXJzZXRUYXNrOwogCiAgICAgaW50IG1fbGFzdFN0
eWxlU2hlZXRJZCB7IDEgfTsKICAgICBib29sIG1fY3JlYXRpbmdWaWFJbnNwZWN0b3JTdHlsZVNo
ZWV0IHsgZmFsc2UgfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCShyZXZpc2lvbiAyMjIyMDQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjQ5LDQyICsyNDksNiBAQCB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6cHNldWRvRWxlCiAgICAgICAgIGxheWVyVHJlZUFnZW50LT5wc2V1ZG9FbGVtZW50RGVzdHJv
eWVkKHBzZXVkb0VsZW1lbnQpOwogfQogCi12b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
ZGlkQ3JlYXRlTmFtZWRGbG93SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5n
QWdlbnRzLCBEb2N1bWVudCogZG9jdW1lbnQsIFdlYktpdE5hbWVkRmxvdyYgbmFtZWRGbG93KQot
ewotICAgIGlmICghZG9jdW1lbnQpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChJbnNwZWN0
b3JDU1NBZ2VudCogY3NzQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckNTU0Fn
ZW50KCkpCi0gICAgICAgIGNzc0FnZW50LT5kaWRDcmVhdGVOYW1lZEZsb3coKmRvY3VtZW50LCBu
YW1lZEZsb3cpOwotfQotCi12b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFJlbW92
ZU5hbWVkRmxvd0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywg
RG9jdW1lbnQqIGRvY3VtZW50LCBXZWJLaXROYW1lZEZsb3cmIG5hbWVkRmxvdykKLXsKLSAgICBp
ZiAoIWRvY3VtZW50KQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoSW5zcGVjdG9yQ1NTQWdl
bnQqIGNzc0FnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JDU1NBZ2VudCgpKQot
ICAgICAgICBjc3NBZ2VudC0+d2lsbFJlbW92ZU5hbWVkRmxvdygqZG9jdW1lbnQsIG5hbWVkRmxv
dyk7Ci19Ci0KLXZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDaGFuZ2VSZWdpb25P
dmVyc2V0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBEb2N1
bWVudCYgZG9jdW1lbnQsIFdlYktpdE5hbWVkRmxvdyYgbmFtZWRGbG93KQotewotICAgIGlmIChJ
bnNwZWN0b3JDU1NBZ2VudCogY3NzQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3Rv
ckNTU0FnZW50KCkpCi0gICAgICAgIGNzc0FnZW50LT5kaWRDaGFuZ2VSZWdpb25PdmVyc2V0KGRv
Y3VtZW50LCBuYW1lZEZsb3cpOwotfQotCi12b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
ZGlkUmVnaXN0ZXJOYW1lZEZsb3dDb250ZW50RWxlbWVudEltcGwoSW5zdHJ1bWVudGluZ0FnZW50
cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgRG9jdW1lbnQmIGRvY3VtZW50LCBXZWJLaXROYW1lZEZs
b3cmIG5hbWVkRmxvdywgTm9kZSYgY29udGVudEVsZW1lbnQsIE5vZGUqIG5leHRDb250ZW50RWxl
bWVudCkKLXsKLSAgICBpZiAoSW5zcGVjdG9yQ1NTQWdlbnQqIGNzc0FnZW50ID0gaW5zdHJ1bWVu
dGluZ0FnZW50cy5pbnNwZWN0b3JDU1NBZ2VudCgpKQotICAgICAgICBjc3NBZ2VudC0+ZGlkUmVn
aXN0ZXJOYW1lZEZsb3dDb250ZW50RWxlbWVudChkb2N1bWVudCwgbmFtZWRGbG93LCBjb250ZW50
RWxlbWVudCwgbmV4dENvbnRlbnRFbGVtZW50KTsKLX0KLQotdm9pZCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmRpZFVucmVnaXN0ZXJOYW1lZEZsb3dDb250ZW50RWxlbWVudEltcGwoSW5zdHJ1
bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgRG9jdW1lbnQmIGRvY3VtZW50LCBX
ZWJLaXROYW1lZEZsb3cmIG5hbWVkRmxvdywgTm9kZSYgY29udGVudEVsZW1lbnQpCi17Ci0gICAg
aWYgKEluc3BlY3RvckNTU0FnZW50KiBjc3NBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5z
cGVjdG9yQ1NTQWdlbnQoKSkKLSAgICAgICAgY3NzQWdlbnQtPmRpZFVucmVnaXN0ZXJOYW1lZEZs
b3dDb250ZW50RWxlbWVudChkb2N1bWVudCwgbmFtZWRGbG93LCBjb250ZW50RWxlbWVudCk7Ci19
Ci0KIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjptb3VzZURpZE1vdmVPdmVyRWxlbWVu
dEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgY29uc3QgSGl0
VGVzdFJlc3VsdCYgcmVzdWx0LCB1bnNpZ25lZCBtb2RpZmllckZsYWdzKQogewogICAgIGlmIChJ
bnNwZWN0b3JET01BZ2VudCogZG9tQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3Rv
ckRPTUFnZW50KCkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3Zl
cmxheS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ck92ZXJsYXkuY3BwCShyZXZpc2lvbiAyMjIyMDQpCisrKyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxLDggKzUxLDYgQEAK
ICNpbmNsdWRlICJSZW5kZXJFbGVtZW50LmgiCiAjaW5jbHVkZSAiUmVuZGVyRmxvd1RocmVhZC5o
IgogI2luY2x1ZGUgIlJlbmRlcklubGluZS5oIgotI2luY2x1ZGUgIlJlbmRlck5hbWVkRmxvd0Zy
YWdtZW50LmgiCi0jaW5jbHVkZSAiUmVuZGVyTmFtZWRGbG93VGhyZWFkLmgiCiAjaW5jbHVkZSAi
UmVuZGVyUmVnaW9uLmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUgIlNjcmlw
dENvbnRyb2xsZXIuaCIKQEAgLTEyMCw3ICsxMTgsNyBAQCBzdGF0aWMgdm9pZCBidWlsZFJlbmRl
cmVySGlnaGxpZ2h0KFJlbmRlCiAgICAgICAgICAgICAgICAgbWFyZ2lucy5lbmQocmVuZGVyQm94
LnN0eWxlKCkud3JpdGluZ01vZGUoKSkgPSBjb21wdXRlZFZhbHVlcy5tX21hcmdpbnMubV9lbmQ7
CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIHBhZGRpbmdCb3ggPSByZW5kZXJCb3guY2xp
ZW50Qm94UmVjdEluUmVnaW9uKHJlZ2lvbik7CisgICAgICAgICAgICBwYWRkaW5nQm94ID0gcmVu
ZGVyQm94LmNsaWVudEJveFJlY3QoKTsKICAgICAgICAgICAgIGNvbnRlbnRCb3ggPSBMYXlvdXRS
ZWN0KHBhZGRpbmdCb3gueCgpICsgcmVuZGVyQm94LnBhZGRpbmdMZWZ0KCksIHBhZGRpbmdCb3gu
eSgpICsgcmVuZGVyQm94LnBhZGRpbmdUb3AoKSwKICAgICAgICAgICAgICAgICBwYWRkaW5nQm94
LndpZHRoKCkgLSByZW5kZXJCb3gucGFkZGluZ0xlZnQoKSAtIHJlbmRlckJveC5wYWRkaW5nUmln
aHQoKSwgcGFkZGluZ0JveC5oZWlnaHQoKSAtIHJlbmRlckJveC5wYWRkaW5nVG9wKCkgLSByZW5k
ZXJCb3gucGFkZGluZ0JvdHRvbSgpKTsKICAgICAgICAgICAgIGJvcmRlckJveCA9IExheW91dFJl
Y3QocGFkZGluZ0JveC54KCkgLSByZW5kZXJCb3guYm9yZGVyTGVmdCgpLCBwYWRkaW5nQm94Lnko
KSAtIHJlbmRlckJveC5ib3JkZXJUb3AoKSwKQEAgLTM5NSw2OCArMzkzLDYgQEAgc3RhdGljIFJl
ZjxJbnNwZWN0b3I6OlByb3RvY29sOjpPdmVybGF5VAogICAgICAgICAucmVsZWFzZSgpOwogfQog
Ci1zdGF0aWMgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok92ZXJsYXlUeXBlczo6UmVnaW9u
PiBidWlsZE9iamVjdEZvclJlZ2lvbihGcmFtZVZpZXcqIG1haW5WaWV3LCBSZW5kZXJSZWdpb24q
IHJlZ2lvbikKLXsKLSAgICBGcmFtZVZpZXcqIGNvbnRhaW5pbmdWaWV3ID0gcmVnaW9uLT5mcmFt
ZSgpLnZpZXcoKTsKLSAgICBpZiAoIWNvbnRhaW5pbmdWaWV3KQotICAgICAgICByZXR1cm4gbnVs
bHB0cjsKLQotICAgIFJlbmRlckJsb2NrRmxvdyYgcmVnaW9uQ29udGFpbmVyID0gZG93bmNhc3Q8
UmVuZGVyQmxvY2tGbG93PigqcmVnaW9uLT5wYXJlbnQoKSk7Ci0gICAgTGF5b3V0UmVjdCBib3Jk
ZXJCb3ggPSByZWdpb25Db250YWluZXIuYm9yZGVyQm94UmVjdCgpOwotICAgIGJvcmRlckJveC5z
ZXRXaWR0aChib3JkZXJCb3gud2lkdGgoKSArIHJlZ2lvbkNvbnRhaW5lci52ZXJ0aWNhbFNjcm9s
bGJhcldpZHRoKCkpOwotICAgIGJvcmRlckJveC5zZXRIZWlnaHQoYm9yZGVyQm94LmhlaWdodCgp
ICsgcmVnaW9uQ29udGFpbmVyLmhvcml6b250YWxTY3JvbGxiYXJIZWlnaHQoKSk7Ci0KLSAgICAv
LyBDcmVhdGUgaW5jb21pbmcgYW5kIG91dGdvaW5nIGJveGVzIHRoYXQgd2UgdXNlIHRvIGNoYWlu
IHRoZSByZWdpb25zIHRvZ2hldGhlci4KLSAgICBjb25zdCBMYXlvdXRTaXplIGxpbmtCb3hTaXpl
KDEwLCAxMCk7Ci0gICAgY29uc3QgTGF5b3V0U2l6ZSBsaW5rQm94TWlkcG9pbnQobGlua0JveFNp
emUud2lkdGgoKSAvIDIsIGxpbmtCb3hTaXplLmhlaWdodCgpIC8gMik7Ci0KLSAgICBMYXlvdXRS
ZWN0IGluY29taW5nUmVjdEJveCA9IExheW91dFJlY3QoYm9yZGVyQm94LmxvY2F0aW9uKCkgLSBs
aW5rQm94TWlkcG9pbnQsIGxpbmtCb3hTaXplKTsKLSAgICBMYXlvdXRSZWN0IG91dGdvaW5nUmVj
dEJveCA9IExheW91dFJlY3QoYm9yZGVyQm94LmxvY2F0aW9uKCkgLSBsaW5rQm94TWlkcG9pbnQg
KyBib3JkZXJCb3guc2l6ZSgpLCBsaW5rQm94U2l6ZSk7Ci0KLSAgICAvLyBNb3ZlIHRoZSBsaW5r
IGJveGVzIHNsaWdodGx5IGluc2lkZSB0aGUgcmVnaW9uIGJvcmRlciBib3guCi0gICAgTGF5b3V0
VW5pdCBtYXhVc2FibGVIZWlnaHQgPSBzdGQ6Om1heChMYXlvdXRVbml0KCksIGJvcmRlckJveC5o
ZWlnaHQoKSAtIGxpbmtCb3hNaWRwb2ludC5oZWlnaHQoKSk7Ci0gICAgTGF5b3V0VW5pdCBsaW5r
Qm94VmVydGljYWxPZmZzZXQgPSBzdGQ6Om1pbihMYXlvdXRVbml0Ojpmcm9tUGl4ZWwoMTUpLCBt
YXhVc2FibGVIZWlnaHQpOwotICAgIGluY29taW5nUmVjdEJveC5tb3ZlKDAsIGxpbmtCb3hWZXJ0
aWNhbE9mZnNldCk7Ci0gICAgb3V0Z29pbmdSZWN0Qm94Lm1vdmUoMCwgLWxpbmtCb3hWZXJ0aWNh
bE9mZnNldCk7Ci0KLSAgICBGbG9hdFF1YWQgYm9yZGVyUmVjdFF1YWQgPSByZWdpb25Db250YWlu
ZXIubG9jYWxUb0Fic29sdXRlUXVhZChGbG9hdFJlY3QoYm9yZGVyQm94KSk7Ci0gICAgRmxvYXRR
dWFkIGluY29taW5nUmVjdFF1YWQgPSByZWdpb25Db250YWluZXIubG9jYWxUb0Fic29sdXRlUXVh
ZChGbG9hdFJlY3QoaW5jb21pbmdSZWN0Qm94KSk7Ci0gICAgRmxvYXRRdWFkIG91dGdvaW5nUmVj
dFF1YWQgPSByZWdpb25Db250YWluZXIubG9jYWxUb0Fic29sdXRlUXVhZChGbG9hdFJlY3Qob3V0
Z29pbmdSZWN0Qm94KSk7Ci0KLSAgICBjb250ZW50c1F1YWRUb1BhZ2UobWFpblZpZXcsIGNvbnRh
aW5pbmdWaWV3LCBib3JkZXJSZWN0UXVhZCk7Ci0gICAgY29udGVudHNRdWFkVG9QYWdlKG1haW5W
aWV3LCBjb250YWluaW5nVmlldywgaW5jb21pbmdSZWN0UXVhZCk7Ci0gICAgY29udGVudHNRdWFk
VG9QYWdlKG1haW5WaWV3LCBjb250YWluaW5nVmlldywgb3V0Z29pbmdSZWN0UXVhZCk7Ci0KLSAg
ICByZXR1cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6T3ZlcmxheVR5cGVzOjpSZWdpb246OmNyZWF0
ZSgpCi0gICAgICAgIC5zZXRCb3JkZXJRdWFkKGJ1aWxkQXJyYXlGb3JRdWFkKGJvcmRlclJlY3RR
dWFkKSkKLSAgICAgICAgLnNldEluY29taW5nUXVhZChidWlsZEFycmF5Rm9yUXVhZChpbmNvbWlu
Z1JlY3RRdWFkKSkKLSAgICAgICAgLnNldE91dGdvaW5nUXVhZChidWlsZEFycmF5Rm9yUXVhZChv
dXRnb2luZ1JlY3RRdWFkKSkKLSAgICAgICAgLnJlbGVhc2UoKTsKLX0KLQotc3RhdGljIFJlZjxJ
bnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpPdmVybGF5VHlw
ZXM6OlJlZ2lvbj4+IGJ1aWxkT2JqZWN0Rm9yRmxvd1JlZ2lvbnMoUmVuZGVyUmVnaW9uKiByZWdp
b24sIFJlbmRlckZsb3dUaHJlYWQqIGZsb3dUaHJlYWQpCi17Ci0gICAgRnJhbWVWaWV3KiBtYWlu
RnJhbWVWaWV3ID0gcmVnaW9uLT5kb2N1bWVudCgpLnBhZ2UoKS0+bWFpbkZyYW1lKCkudmlldygp
OwotCi0gICAgYXV0byBhcnJheU9mUmVnaW9ucyA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5
PEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok92ZXJsYXlUeXBlczo6UmVnaW9uPjo6Y3JlYXRlKCk7Ci0K
LSAgICBjb25zdCBSZW5kZXJSZWdpb25MaXN0JiByZWdpb25MaXN0ID0gZmxvd1RocmVhZC0+cmVu
ZGVyUmVnaW9uTGlzdCgpOwotICAgIGZvciAoYXV0byYgaXRlclJlZ2lvbiA6IHJlZ2lvbkxpc3Qp
IHsKLSAgICAgICAgaWYgKCFpdGVyUmVnaW9uLT5pc1ZhbGlkKCkpCi0gICAgICAgICAgICBjb250
aW51ZTsKLSAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok92ZXJsYXlUeXBlczo6
UmVnaW9uPiByZWdpb25PYmplY3QgPSBidWlsZE9iamVjdEZvclJlZ2lvbihtYWluRnJhbWVWaWV3
LCBpdGVyUmVnaW9uKTsKLSAgICAgICAgaWYgKCFyZWdpb25PYmplY3QpCi0gICAgICAgICAgICBj
b250aW51ZTsKLSAgICAgICAgaWYgKHJlZ2lvbiA9PSBpdGVyUmVnaW9uKSB7Ci0gICAgICAgICAg
ICAvLyBMZXQgdGhlIHNjcmlwdCBrbm93IHRoYXQgdGhpcyBpcyB0aGUgY3VycmVudGx5IGhpZ2hs
aWdodGVkIG5vZGUuCi0gICAgICAgICAgICByZWdpb25PYmplY3QtPnNldElzSGlnaGxpZ2h0ZWQo
dHJ1ZSk7Ci0gICAgICAgIH0KLSAgICAgICAgYXJyYXlPZlJlZ2lvbnMtPmFkZEl0ZW0oV1RGTW92
ZShyZWdpb25PYmplY3QpKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gYXJyYXlPZlJlZ2lvbnM7Ci19
Ci0KIHN0YXRpYyBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6T3ZlcmxheVR5cGVzOjpTaXplPiBi
dWlsZE9iamVjdEZvclNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsKICAgICByZXR1cm4gSW5z
cGVjdG9yOjpQcm90b2NvbDo6T3ZlcmxheVR5cGVzOjpTaXplOjpjcmVhdGUoKQpAQCAtNjk1LDcg
KzYzMSw3IEBAIHN0YXRpYyBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6T3ZlcmwKICAgICBy
ZXR1cm4gV1RGTW92ZShzaGFwZU9iamVjdCk7CiB9CiAKLXN0YXRpYyBSZWZQdHI8SW5zcGVjdG9y
OjpQcm90b2NvbDo6T3ZlcmxheVR5cGVzOjpFbGVtZW50RGF0YT4gYnVpbGRPYmplY3RGb3JFbGVt
ZW50RGF0YShOb2RlKiBub2RlLCBIaWdobGlnaHRUeXBlIHR5cGUpCitzdGF0aWMgUmVmUHRyPElu
c3BlY3Rvcjo6UHJvdG9jb2w6Ok92ZXJsYXlUeXBlczo6RWxlbWVudERhdGE+IGJ1aWxkT2JqZWN0
Rm9yRWxlbWVudERhdGEoTm9kZSogbm9kZSwgSGlnaGxpZ2h0VHlwZSkKIHsKICAgICBpZiAoIWlz
PEVsZW1lbnQ+KG5vZGUpIHx8ICFub2RlLT5kb2N1bWVudCgpLmZyYW1lKCkpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwpAQCAtNzUxLDI3ICs2ODcsNiBAQCBzdGF0aWMgUmVmUHRyPEluc3BlY3Rv
cjo6UHJvdG9jb2w6Ok92ZXJsCiAgICAgICAgIC5yZWxlYXNlKCk7CiAgICAgZWxlbWVudERhdGEt
PnNldFNpemUoV1RGTW92ZShzaXplT2JqZWN0KSk7CiAKLSAgICBpZiAodHlwZSAhPSBIaWdobGln
aHRUeXBlOjpOb2RlTGlzdCAmJiByZW5kZXJlci0+aXNSZW5kZXJOYW1lZEZsb3dGcmFnbWVudENv
bnRhaW5lcigpKSB7Ci0gICAgICAgIFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50JiByZWdpb24gPSAq
ZG93bmNhc3Q8UmVuZGVyQmxvY2tGbG93PigqcmVuZGVyZXIpLnJlbmRlck5hbWVkRmxvd0ZyYWdt
ZW50KCk7Ci0gICAgICAgIGlmIChyZWdpb24uaXNWYWxpZCgpKSB7Ci0gICAgICAgICAgICBSZW5k
ZXJGbG93VGhyZWFkKiBmbG93VGhyZWFkID0gcmVnaW9uLmZsb3dUaHJlYWQoKTsKLSAgICAgICAg
ICAgIGF1dG8gcmVnaW9uRmxvd0RhdGEgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpPdmVybGF5VHlw
ZXM6OlJlZ2lvbkZsb3dEYXRhOjpjcmVhdGUoKQotICAgICAgICAgICAgICAgIC5zZXROYW1lKGRv
d25jYXN0PFJlbmRlck5hbWVkRmxvd1RocmVhZD4oKmZsb3dUaHJlYWQpLmZsb3dUaHJlYWROYW1l
KCkpCi0gICAgICAgICAgICAgICAgLnNldFJlZ2lvbnMoYnVpbGRPYmplY3RGb3JGbG93UmVnaW9u
cygmcmVnaW9uLCBmbG93VGhyZWFkKSkKLSAgICAgICAgICAgICAgICAucmVsZWFzZSgpOwotICAg
ICAgICAgICAgZWxlbWVudERhdGEtPnNldFJlZ2lvbkZsb3dEYXRhKFdURk1vdmUocmVnaW9uRmxv
d0RhdGEpKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIFJlbmRlckZsb3dUaHJlYWQqIGNvbnRh
aW5pbmdGbG93VGhyZWFkID0gcmVuZGVyZXItPmZsb3dUaHJlYWRDb250YWluaW5nQmxvY2soKTsK
LSAgICBpZiAoaXM8UmVuZGVyTmFtZWRGbG93VGhyZWFkPihjb250YWluaW5nRmxvd1RocmVhZCkp
IHsKLSAgICAgICAgYXV0byBjb250ZW50Rmxvd0RhdGEgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpP
dmVybGF5VHlwZXM6OkNvbnRlbnRGbG93RGF0YTo6Y3JlYXRlKCkKLSAgICAgICAgICAgIC5zZXRO
YW1lKGRvd25jYXN0PFJlbmRlck5hbWVkRmxvd1RocmVhZD4oKmNvbnRhaW5pbmdGbG93VGhyZWFk
KS5mbG93VGhyZWFkTmFtZSgpKQotICAgICAgICAgICAgLnJlbGVhc2UoKTsKLQotICAgICAgICBl
bGVtZW50RGF0YS0+c2V0Q29udGVudEZsb3dEYXRhKFdURk1vdmUoY29udGVudEZsb3dEYXRhKSk7
Ci0gICAgfQotCiAgICAgaWYgKGlzPFJlbmRlckJveD4oKnJlbmRlcmVyKSkgewogICAgICAgICBh
dXRvJiByZW5kZXJCb3ggPSBkb3duY2FzdDxSZW5kZXJCb3g+KCpyZW5kZXJlcik7CiAgICAgICAg
IGlmIChSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6T3ZlcmxheVR5cGVzOjpTaGFwZU91dHNp
ZGVEYXRhPiBzaGFwZU9iamVjdCA9IGJ1aWxkT2JqZWN0Rm9yU2hhcGVPdXRzaWRlKGNvbnRhaW5p
bmdGcmFtZSwgJnJlbmRlckJveCkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFu
ZGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIu
Y3BwCShyZXZpc2lvbiAyMjIyMDQpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc1LDcgKzc1LDYgQEAKICNpbmNsdWRlICJSZW5kZXJG
cmFtZVNldC5oIgogI2luY2x1ZGUgIlJlbmRlckxheWVyLmgiCiAjaW5jbHVkZSAiUmVuZGVyTGlz
dEJveC5oIgotI2luY2x1ZGUgIlJlbmRlck5hbWVkRmxvd1RocmVhZC5oIgogI2luY2x1ZGUgIlJl
bmRlclRleHRDb250cm9sU2luZ2xlTGluZS5oIgogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKICNp
bmNsdWRlICJSZW5kZXJXaWRnZXQuaCIKQEAgLTMyOSw4ICszMjgsNiBAQCBzdGF0aWMgaW5saW5l
IGJvb2wgaGFuZGxlV2hlZWxFdmVudEluQXBwCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKIAog
ICAgICAgICBjdXJyZW50RW5jbG9zaW5nQm94ID0gY3VycmVudEVuY2xvc2luZ0JveC0+Y29udGFp
bmluZ0Jsb2NrKCk7Ci0gICAgICAgIGlmIChjdXJyZW50RW5jbG9zaW5nQm94ICYmIGN1cnJlbnRF
bmNsb3NpbmdCb3gtPmlzUmVuZGVyTmFtZWRGbG93VGhyZWFkKCkpCi0gICAgICAgICAgICBjdXJy
ZW50RW5jbG9zaW5nQm94ID0gUmVuZGVyTmFtZWRGbG93VGhyZWFkOjpmcmFnbWVudEZyb21SZW5k
ZXJCb3hBc1JlbmRlckJsb2NrKGN1cnJlbnRFbmNsb3NpbmdCb3gsIHJvdW5kZWRJbnRQb2ludCh3
aGVlbEV2ZW50LmFic29sdXRlTG9jYXRpb24oKSksIGluaXRpYWxFbmNsb3NpbmdCb3gpOwogICAg
ICAgICBpZiAoIWN1cnJlbnRFbmNsb3NpbmdCb3ggfHwgY3VycmVudEVuY2xvc2luZ0JveC0+aXNS
ZW5kZXJWaWV3KCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpJbmRleDogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0Zsb3dUaHJlYWRDb250cm9sbGVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmxvd1RocmVhZENvbnRyb2xsZXIuY3BwCShy
ZXZpc2lvbiAyMjIyMDQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmxvd1RocmVhZENv
bnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCwxMiArMzAsMTAgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJGbG93VGhyZWFkQ29udHJvbGxlci5oIgogCi0jaW5jbHVk
ZSAiTmFtZWRGbG93Q29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIlJlbmRlckZsb3dUaHJlYWQuaCIK
ICNpbmNsdWRlICJSZW5kZXJMYXllci5oIgogI2luY2x1ZGUgIlJlbmRlck5hbWVkRmxvd1RocmVh
ZC5oIgogI2luY2x1ZGUgIlN0eWxlSW5oZXJpdGVkRGF0YS5oIgotI2luY2x1ZGUgIldlYktpdE5h
bWVkRmxvdy5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CkBAIC01MSwzNCArNDksNiBAQCBGbG93VGhyZWFkQ29udHJvbGxlcjo6fkZs
b3dUaHJlYWRDb250cm9sCiB7CiB9CiAKLVJlbmRlck5hbWVkRmxvd1RocmVhZCYgRmxvd1RocmVh
ZENvbnRyb2xsZXI6OmVuc3VyZVJlbmRlckZsb3dUaHJlYWRXaXRoTmFtZShjb25zdCBBdG9taWNT
dHJpbmcmIG5hbWUpCi17Ci0gICAgaWYgKCFtX3JlbmRlck5hbWVkRmxvd1RocmVhZExpc3QpCi0g
ICAgICAgIG1fcmVuZGVyTmFtZWRGbG93VGhyZWFkTGlzdCA9IHN0ZDo6bWFrZV91bmlxdWU8UmVu
ZGVyTmFtZWRGbG93VGhyZWFkTGlzdD4oKTsKLSAgICBlbHNlIHsKLSAgICAgICAgZm9yIChhdXRv
JiBmbG93UmVuZGVyZXIgOiAqbV9yZW5kZXJOYW1lZEZsb3dUaHJlYWRMaXN0KSB7Ci0gICAgICAg
ICAgICBpZiAoZmxvd1JlbmRlcmVyLT5mbG93VGhyZWFkTmFtZSgpID09IG5hbWUpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuICpmbG93UmVuZGVyZXI7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBO
YW1lZEZsb3dDb2xsZWN0aW9uJiBuYW1lZEZsb3dzID0gbV92aWV3LT5kb2N1bWVudCgpLm5hbWVk
Rmxvd3MoKTsKLQotICAgIC8vIFNhbml0eSBjaGVjayBmb3IgdGhlIGFic2VuY2Ugb2YgYSBuYW1l
ZCBmbG93IGluIHRoZSAiQ1JFQVRFRCIgc3RhdGUgd2l0aCB0aGUgc2FtZSBuYW1lLgotICAgIEFT
U0VSVCghbmFtZWRGbG93cy5mbG93QnlOYW1lKG5hbWUpKTsKLQotICAgIGF1dG8gZmxvd1JlbmRl
cmVyID0gbmV3IFJlbmRlck5hbWVkRmxvd1RocmVhZChtX3ZpZXctPmRvY3VtZW50KCksIFJlbmRl
ckZsb3dUaHJlYWQ6OmNyZWF0ZUZsb3dUaHJlYWRTdHlsZSgmbV92aWV3LT5zdHlsZSgpKSwgbmFt
ZWRGbG93cy5lbnN1cmVGbG93V2l0aE5hbWUobmFtZSkpOwotICAgIGZsb3dSZW5kZXJlci0+aW5p
dGlhbGl6ZVN0eWxlKCk7Ci0gICAgbV9yZW5kZXJOYW1lZEZsb3dUaHJlYWRMaXN0LT5hZGQoZmxv
d1JlbmRlcmVyKTsKLQotICAgIC8vIEtlZXAgdGhlIGZsb3cgcmVuZGVyZXIgYXMgYSBjaGlsZCBv
ZiBSZW5kZXJWaWV3LgotICAgIG1fdmlldy0+YWRkQ2hpbGQoZmxvd1JlbmRlcmVyKTsKLQotICAg
IHNldElzUmVuZGVyTmFtZWRGbG93VGhyZWFkT3JkZXJEaXJ0eSh0cnVlKTsKLQotICAgIHJldHVy
biAqZmxvd1JlbmRlcmVyOwotfQotCiB2b2lkIEZsb3dUaHJlYWRDb250cm9sbGVyOjpzdHlsZURp
ZENoYW5nZSgpCiB7CiAgICAgYXV0byYgdmlld1N0eWxlID0gbV92aWV3LT5zdHlsZSgpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0Zsb3dUaHJlYWRDb250cm9sbGVyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0Zsb3dUaHJlYWRDb250cm9sbGVyLmgJ
KHJldmlzaW9uIDIyMjIwNCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GbG93VGhyZWFk
Q29udHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSw3ICs1NSw2IEBAIHB1YmxpYzoKICAg
ICAgICAgICAgIG1fdmlldy0+c2V0TmVlZHNMYXlvdXQoKTsKICAgICB9CiAKLSAgICBSZW5kZXJO
YW1lZEZsb3dUaHJlYWQmIGVuc3VyZVJlbmRlckZsb3dUaHJlYWRXaXRoTmFtZShjb25zdCBBdG9t
aWNTdHJpbmcmKTsKICAgICBjb25zdCBSZW5kZXJOYW1lZEZsb3dUaHJlYWRMaXN0KiByZW5kZXJO
YW1lZEZsb3dUaHJlYWRMaXN0KCkgY29uc3QgeyByZXR1cm4gbV9yZW5kZXJOYW1lZEZsb3dUaHJl
YWRMaXN0LmdldCgpOyB9CiAgICAgYm9vbCBoYXNSZW5kZXJOYW1lZEZsb3dUaHJlYWRzKCkgY29u
c3QgeyByZXR1cm4gbV9yZW5kZXJOYW1lZEZsb3dUaHJlYWRMaXN0ICYmICFtX3JlbmRlck5hbWVk
Rmxvd1RocmVhZExpc3QtPmlzRW1wdHkoKTsgfQogICAgIHZvaWQgbGF5b3V0UmVuZGVyTmFtZWRG
bG93VGhyZWFkcygpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlZ2lvbk92ZXJz
ZXRTdGF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZWdpb25P
dmVyc2V0U3RhdGUuaAkocmV2aXNpb24gMjIyMjA0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlZ2lvbk92ZXJzZXRTdGF0ZS5oCShub25leGlzdGVudCkKQEAgLTEsMzAgKzAsMCBAQAot
LyoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJh
cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAq
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh
bnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv
ciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0
aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8K
LSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVl
dCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqCi0gKi8K
LQotI3ByYWdtYSBvbmNlCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotZW51bSBSZWdpb25PdmVy
c2V0U3RhdGUgewotICAgIFJlZ2lvblVuZGVmaW5lZCwKLSAgICBSZWdpb25FbXB0eSwKLSAgICBS
ZWdpb25GaXQsCi0gICAgUmVnaW9uT3ZlcnNldAotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAJ
KHJldmlzaW9uIDIyMjIwNCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9j
a0Zsb3cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTIxLDggKzE1MjEsNyBAQCBMYXlvdXRVbml0
IFJlbmRlckJsb2NrRmxvdzo6YXBwbHlCZWZvcmVCCiAgICAgYm9vbCBjaGVja1BhZ2VCcmVha3Mg
PSAhY2hlY2tDb2x1bW5CcmVha3MgJiYgdmlldygpLmxheW91dFN0YXRlKCktPm1fcGFnZUxvZ2lj
YWxIZWlnaHQ7IC8vIEZJWE1FOiBPbmNlIGNvbHVtbnMgY2FuIHByaW50IHdlIGhhdmUgdG8gY2hl
Y2sgdGhpcy4KICAgICBib29sIGNoZWNrUmVnaW9uQnJlYWtzID0gZmxvd1RocmVhZCAmJiBmbG93
VGhyZWFkLT5pc1JlbmRlck5hbWVkRmxvd1RocmVhZCgpOwogICAgIGJvb2wgY2hlY2tCZWZvcmVB
bHdheXMgPSAoY2hlY2tDb2x1bW5CcmVha3MgJiYgY2hpbGQuc3R5bGUoKS5icmVha0JlZm9yZSgp
ID09IENvbHVtbkJyZWFrQmV0d2VlbikKLSAgICAgICAgfHwgKGNoZWNrUGFnZUJyZWFrcyAmJiBh
bHdheXNQYWdlQnJlYWsoY2hpbGQuc3R5bGUoKS5icmVha0JlZm9yZSgpKSkKLSAgICAgICAgfHwg
KGNoZWNrUmVnaW9uQnJlYWtzICYmIGNoaWxkLnN0eWxlKCkuYnJlYWtCZWZvcmUoKSA9PSBSZWdp
b25CcmVha0JldHdlZW4pOworICAgICAgICB8fCAoY2hlY2tQYWdlQnJlYWtzICYmIGFsd2F5c1Bh
Z2VCcmVhayhjaGlsZC5zdHlsZSgpLmJyZWFrQmVmb3JlKCkpKTsKICAgICBpZiAoY2hlY2tCZWZv
cmVBbHdheXMgJiYgaW5Ob3JtYWxGbG93KGNoaWxkKSAmJiBoYXNOZXh0UGFnZShsb2dpY2FsT2Zm
c2V0LCBJbmNsdWRlUGFnZUJvdW5kYXJ5KSkgewogICAgICAgICBpZiAoY2hlY2tDb2x1bW5CcmVh
a3MpIHsKICAgICAgICAgICAgIGlmIChpc0luc2lkZU11bHRpY29sRmxvd1RocmVhZCkKQEAgLTE1
NDcsOCArMTU0Niw3IEBAIExheW91dFVuaXQgUmVuZGVyQmxvY2tGbG93OjphcHBseUFmdGVyQnIK
ICAgICBib29sIGNoZWNrUGFnZUJyZWFrcyA9ICFjaGVja0NvbHVtbkJyZWFrcyAmJiB2aWV3KCku
bGF5b3V0U3RhdGUoKS0+bV9wYWdlTG9naWNhbEhlaWdodDsgLy8gRklYTUU6IE9uY2UgY29sdW1u
cyBjYW4gcHJpbnQgd2UgaGF2ZSB0byBjaGVjayB0aGlzLgogICAgIGJvb2wgY2hlY2tSZWdpb25C
cmVha3MgPSBmbG93VGhyZWFkICYmIGZsb3dUaHJlYWQtPmlzUmVuZGVyTmFtZWRGbG93VGhyZWFk
KCk7CiAgICAgYm9vbCBjaGVja0FmdGVyQWx3YXlzID0gKGNoZWNrQ29sdW1uQnJlYWtzICYmIGNo
aWxkLnN0eWxlKCkuYnJlYWtBZnRlcigpID09IENvbHVtbkJyZWFrQmV0d2VlbikKLSAgICAgICAg
fHwgKGNoZWNrUGFnZUJyZWFrcyAmJiBhbHdheXNQYWdlQnJlYWsoY2hpbGQuc3R5bGUoKS5icmVh
a0FmdGVyKCkpKQotICAgICAgICB8fCAoY2hlY2tSZWdpb25CcmVha3MgJiYgY2hpbGQuc3R5bGUo
KS5icmVha0FmdGVyKCkgPT0gUmVnaW9uQnJlYWtCZXR3ZWVuKTsKKyAgICAgICAgfHwgKGNoZWNr
UGFnZUJyZWFrcyAmJiBhbHdheXNQYWdlQnJlYWsoY2hpbGQuc3R5bGUoKS5icmVha0FmdGVyKCkp
KTsKICAgICBpZiAoY2hlY2tBZnRlckFsd2F5cyAmJiBpbk5vcm1hbEZsb3coY2hpbGQpICYmIGhh
c05leHRQYWdlKGxvZ2ljYWxPZmZzZXQsIEluY2x1ZGVQYWdlQm91bmRhcnkpKSB7CiAgICAgICAg
IExheW91dFVuaXQgbWFyZ2luT2Zmc2V0ID0gbWFyZ2luSW5mby5jYW5Db2xsYXBzZVdpdGhNYXJn
aW5CZWZvcmUoKSA/IExheW91dFVuaXQoKSA6IG1hcmdpbkluZm8ubWFyZ2luKCk7CiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dGcmFnbWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd0ZyYWdt
ZW50LmNwcAkocmV2aXNpb24gMjIyMjA0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlck5hbWVkRmxvd0ZyYWdtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODcsMTAgKzg3LDgg
QEAgdm9pZCBSZW5kZXJOYW1lZEZsb3dGcmFnbWVudDo6c3R5bGVEaWRDaAogICAgICAgICBzZXRO
ZWVkc0xheW91dChNYXJrT25seVRoaXMpOwogfQogCi12b2lkIFJlbmRlck5hbWVkRmxvd0ZyYWdt
ZW50OjpnZXRSYW5nZXMoVmVjdG9yPFJlZlB0cjxSYW5nZT4+JiByYW5nZU9iamVjdHMpIGNvbnN0
Cit2b2lkIFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50OjpnZXRSYW5nZXMoVmVjdG9yPFJlZlB0cjxS
YW5nZT4+JikgY29uc3QKIHsKLSAgICBjb25zdCBSZW5kZXJOYW1lZEZsb3dUaHJlYWQmIG5hbWVk
RmxvdyA9IHZpZXcoKS5mbG93VGhyZWFkQ29udHJvbGxlcigpLmVuc3VyZVJlbmRlckZsb3dUaHJl
YWRXaXRoTmFtZShzdHlsZSgpLnJlZ2lvblRocmVhZCgpKTsKLSAgICBuYW1lZEZsb3cuZ2V0UmFu
Z2VzKHJhbmdlT2JqZWN0cywgdGhpcyk7CiB9CiAKIGJvb2wgUmVuZGVyTmFtZWRGbG93RnJhZ21l
bnQ6OnNob3VsZEhhdmVBdXRvTG9naWNhbEhlaWdodCgpIGNvbnN0CkBAIC0yNjIsMTAgKzI2MCw4
IEBAIHZvaWQgUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQ6OmxheW91dEJsb2MKICAgICBSZW5kZXJS
ZWdpb246OmxheW91dEJsb2NrKHJlbGF5b3V0Q2hpbGRyZW4pOwogCiAgICAgaWYgKGlzVmFsaWQo
KSkgewotICAgICAgICBpZiAobV9mbG93VGhyZWFkLT5pbk92ZXJmbG93TGF5b3V0UGhhc2UoKSB8
fCBtX2Zsb3dUaHJlYWQtPmluRmluYWxMYXlvdXRQaGFzZSgpKSB7CisgICAgICAgIGlmIChtX2Zs
b3dUaHJlYWQtPmluT3ZlcmZsb3dMYXlvdXRQaGFzZSgpIHx8IG1fZmxvd1RocmVhZC0+aW5GaW5h
bExheW91dFBoYXNlKCkpCiAgICAgICAgICAgICBjb21wdXRlT3ZlcmZsb3dGcm9tRmxvd1RocmVh
ZCgpOwotICAgICAgICAgICAgdXBkYXRlT3ZlcnNldFN0YXRlKCk7Ci0gICAgICAgIH0KIAogICAg
ICAgICBpZiAoaGFzQXV0b0xvZ2ljYWxIZWlnaHQoKSAmJiBtX2Zsb3dUaHJlYWQtPmluTWVhc3Vy
ZUNvbnRlbnRMYXlvdXRQaGFzZSgpKSB7CiAgICAgICAgICAgICBtX2Zsb3dUaHJlYWQtPmludmFs
aWRhdGVSZWdpb25zKCk7CkBAIC0yOTAsNzEgKzI4NiwxOSBAQCB2b2lkIFJlbmRlck5hbWVkRmxv
d0ZyYWdtZW50OjppbnZhbGlkYXRlCiAgICAgfQogfQogCi12b2lkIFJlbmRlck5hbWVkRmxvd0Zy
YWdtZW50OjpzZXRSZWdpb25PdmVyc2V0U3RhdGUoUmVnaW9uT3ZlcnNldFN0YXRlIHN0YXRlKQot
ewotICAgIEFTU0VSVChnZW5lcmF0aW5nRWxlbWVudCgpKTsKLQotICAgIGdlbmVyYXRpbmdFbGVt
ZW50KCktPnNldFJlZ2lvbk92ZXJzZXRTdGF0ZShzdGF0ZSk7Ci19Ci0KLVJlZ2lvbk92ZXJzZXRT
dGF0ZSBSZW5kZXJOYW1lZEZsb3dGcmFnbWVudDo6cmVnaW9uT3ZlcnNldFN0YXRlKCkgY29uc3QK
LXsKLSAgICBBU1NFUlQoZ2VuZXJhdGluZ0VsZW1lbnQoKSk7Ci0KLSAgICBpZiAoIWlzVmFsaWQo
KSkKLSAgICAgICAgcmV0dXJuIFJlZ2lvblVuZGVmaW5lZDsKLQotICAgIHJldHVybiBnZW5lcmF0
aW5nRWxlbWVudCgpLT5yZWdpb25PdmVyc2V0U3RhdGUoKTsKLX0KLQotdm9pZCBSZW5kZXJOYW1l
ZEZsb3dGcmFnbWVudDo6dXBkYXRlT3ZlcnNldFN0YXRlKCkKLXsKLSAgICBBU1NFUlQoaXNWYWxp
ZCgpKTsKLQotICAgIFJlbmRlck5hbWVkRmxvd1RocmVhZCogZmxvd1RocmVhZCA9IG5hbWVkRmxv
d1RocmVhZCgpOwotICAgIEFTU0VSVChmbG93VGhyZWFkICYmIChmbG93VGhyZWFkLT5pbk92ZXJm
bG93TGF5b3V0UGhhc2UoKSB8fCBmbG93VGhyZWFkLT5pbkZpbmFsTGF5b3V0UGhhc2UoKSkpOwot
Ci0gICAgTGF5b3V0VW5pdCBmbG93Q29udGVudEJvdHRvbSA9IGZsb3dUaHJlYWQtPmZsb3dDb250
ZW50Qm90dG9tKCk7Ci0gICAgYm9vbCBpc0hvcml6b250YWxXcml0aW5nTW9kZSA9IGZsb3dUaHJl
YWQtPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCk7Ci0KLSAgICBMYXlvdXRVbml0IGZsb3dNaW4g
PSBmbG93Q29udGVudEJvdHRvbSAtIChpc0hvcml6b250YWxXcml0aW5nTW9kZSA/IGZsb3dUaHJl
YWRQb3J0aW9uUmVjdCgpLnkoKSA6IGZsb3dUaHJlYWRQb3J0aW9uUmVjdCgpLngoKSk7Ci0gICAg
TGF5b3V0VW5pdCBmbG93TWF4ID0gZmxvd0NvbnRlbnRCb3R0b20gLSAoaXNIb3Jpem9udGFsV3Jp
dGluZ01vZGUgPyBmbG93VGhyZWFkUG9ydGlvblJlY3QoKS5tYXhZKCkgOiBmbG93VGhyZWFkUG9y
dGlvblJlY3QoKS5tYXhYKCkpOwotCi0gICAgUmVnaW9uT3ZlcnNldFN0YXRlIHByZXZpb3VzU3Rh
dGUgPSByZWdpb25PdmVyc2V0U3RhdGUoKTsKLSAgICBSZWdpb25PdmVyc2V0U3RhdGUgc3RhdGUg
PSBSZWdpb25GaXQ7Ci0gICAgaWYgKGZsb3dNaW4gPD0gMCkKLSAgICAgICAgc3RhdGUgPSBSZWdp
b25FbXB0eTsKLSAgICBpZiAoZmxvd01heCA+IDAgJiYgaXNMYXN0UmVnaW9uKCkpCi0gICAgICAg
IHN0YXRlID0gUmVnaW9uT3ZlcnNldDsKLSAgICAKLSAgICBzZXRSZWdpb25PdmVyc2V0U3RhdGUo
c3RhdGUpOwotCi0gICAgLy8gRGV0ZXJtaW5lIHdoZXRoZXIgdGhlIE5hbWVkRmxvdyBvYmplY3Qg
c2hvdWxkIGRpc3BhdGNoIGEgcmVnaW9uT3ZlcnNldENoYW5nZSBldmVudAotICAgIGlmIChwcmV2
aW91c1N0YXRlICE9IHN0YXRlKQotICAgICAgICBmbG93VGhyZWFkLT5zZXREaXNwYXRjaFJlZ2lv
bk92ZXJzZXRDaGFuZ2VFdmVudCh0cnVlKTsKLX0KLQogdm9pZCBSZW5kZXJOYW1lZEZsb3dGcmFn
bWVudDo6Y2hlY2tSZWdpb25TdHlsZSgpCiB7CiAgICAgQVNTRVJUKGlzVmFsaWQoKSk7CiAKICAg
ICBib29sIGN1c3RvbVJlZ2lvblN0eWxlID0gZmFsc2U7CiAKLSAgICAvLyBGSVhNRTogUmVnaW9u
IHN0eWxpbmcgZG9lc24ndCB3b3JrIGZvciBwc2V1ZG8gZWxlbWVudHMuCi0gICAgaWYgKCFpc1Bz
ZXVkb0VsZW1lbnQoKSkKLSAgICAgICAgY3VzdG9tUmVnaW9uU3R5bGUgPSBnZW5lcmF0aW5nRWxl
bWVudCgpLT5zdHlsZVJlc29sdmVyKCkuY2hlY2tSZWdpb25TdHlsZShnZW5lcmF0aW5nRWxlbWVu
dCgpKTsKICAgICBzZXRIYXNDdXN0b21SZWdpb25TdHlsZShjdXN0b21SZWdpb25TdHlsZSk7CiAg
ICAgZG93bmNhc3Q8UmVuZGVyTmFtZWRGbG93VGhyZWFkPigqbV9mbG93VGhyZWFkKS5jaGVja1Jl
Z2lvbnNXaXRoU3R5bGluZygpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IFJl
bmRlck5hbWVkRmxvd0ZyYWdtZW50Ojpjb21wdXRlU3R5bGVJblJlZ2lvbihSZW5kZXJFbGVtZW50
JiByZW5kZXJlciwgY29uc3QgUmVuZGVyU3R5bGUmIHBhcmVudFN0eWxlKSBjb25zdAorc3RkOjp1
bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBSZW5kZXJOYW1lZEZsb3dGcmFnbWVudDo6Y29tcHV0ZVN0
eWxlSW5SZWdpb24oUmVuZGVyRWxlbWVudCYsIGNvbnN0IFJlbmRlclN0eWxlJikgY29uc3QKIHsK
LSAgICBBU1NFUlQoIXJlbmRlcmVyLmlzQW5vbnltb3VzKCkpOwotCi0gICAgLy8gRklYTUU6IFJl
Z2lvbiBzdHlsaW5nIGZhaWxzIGZvciBwc2V1ZG8tZWxlbWVudHMgYmVjYXVzZSB0aGUgcmVuZGVy
ZXJzIGRvbid0IGhhdmUgYSBub2RlLgotICAgIGF1dG8gcmVuZGVyT2JqZWN0UmVnaW9uU3R5bGUg
PSByZW5kZXJlci5lbGVtZW50KCktPnN0eWxlUmVzb2x2ZXIoKS5zdHlsZUZvckVsZW1lbnQoKnJl
bmRlcmVyLmVsZW1lbnQoKSwgJnBhcmVudFN0eWxlLCBudWxscHRyLCBNYXRjaEFsbFJ1bGVzLCB0
aGlzKS5yZW5kZXJTdHlsZTsKLQotICAgIHJldHVybiByZW5kZXJPYmplY3RSZWdpb25TdHlsZTsK
KyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogdm9pZCBSZW5kZXJOYW1lZEZsb3dGcmFnbWVudDo6
Y29tcHV0ZUNoaWxkcmVuU3R5bGVJblJlZ2lvbihSZW5kZXJFbGVtZW50JiByZW5kZXJlcikKQEAg
LTQxMiw0MCArMzU2LDYgQEAgdm9pZCBSZW5kZXJOYW1lZEZsb3dGcmFnbWVudDo6Y2xlYXJPYmpl
YwogCiB2b2lkIFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50OjpzZXRSZWdpb25PYmplY3RzUmVnaW9u
U3R5bGUoKQogewotICAgIGlmICghaGFzQ3VzdG9tUmVnaW9uU3R5bGUoKSkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgLy8gU3RhcnQgZnJvbSBjb250ZW50IG5vZGVzIGFuZCByZWN1cnNpdmVseSBj
b21wdXRlIHRoZSBzdHlsZSBpbiByZWdpb24gZm9yIHRoZSByZW5kZXIgb2JqZWN0cyBiZWxvdy4K
LSAgICAvLyBJZiB0aGUgc3R5bGUgaW4gcmVnaW9uIHdhcyBhbHJlYWR5IGNvbXB1dGVkLCB1c2Vk
IHRoYXQgc3R5bGUgaW5zdGVhZCBvZiBjb21wdXRpbmcgYSBuZXcgb25lLgotICAgIGNvbnN0IFJl
bmRlck5hbWVkRmxvd1RocmVhZCYgbmFtZWRGbG93ID0gdmlldygpLmZsb3dUaHJlYWRDb250cm9s
bGVyKCkuZW5zdXJlUmVuZGVyRmxvd1RocmVhZFdpdGhOYW1lKHN0eWxlKCkucmVnaW9uVGhyZWFk
KCkpOwotICAgIGNvbnN0IE5hbWVkRmxvd0NvbnRlbnRFbGVtZW50cyYgY29udGVudEVsZW1lbnRz
ID0gbmFtZWRGbG93LmNvbnRlbnRFbGVtZW50cygpOwotCi0gICAgZm9yIChjb25zdCBhdXRvJiBl
bGVtZW50IDogY29udGVudEVsZW1lbnRzKSB7Ci0gICAgICAgIC8vIFRoZSBsaXN0IG9mIGNvbnRl
bnQgbm9kZXMgY29udGFpbnMgYWxzbyB0aGUgbm9kZXMgd2l0aCBkaXNwbGF5Om5vbmUuCi0gICAg
ICAgIGlmICghZWxlbWVudC0+cmVuZGVyZXIoKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAg
ICAgICBhdXRvJiByZW5kZXJlciA9ICplbGVtZW50LT5yZW5kZXJlcigpOwotCi0gICAgICAgIC8v
IElmIHRoZSBjb250ZW50IG5vZGUgZG9lcyBub3QgZmxvdyBhbnkgb2YgaXRzIGNoaWxkcmVuIGlu
IHRoaXMgcmVnaW9uLAotICAgICAgICAvLyB3ZSBkbyBub3QgY29tcHV0ZSBhbnkgc3R5bGUgZm9y
IHRoZW0gaW4gdGhpcyByZWdpb24uCi0gICAgICAgIGlmICghZmxvd1RocmVhZCgpLT5vYmplY3RJ
bkZsb3dSZWdpb24oJnJlbmRlcmVyLCB0aGlzKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0g
ICAgICAgIC8vIElmIHRoZSBvYmplY3QgaGFzIHN0eWxlIGluIHJlZ2lvbiwgdXNlIHRoYXQgaW5z
dGVhZCBvZiBjb21wdXRpbmcgYSBuZXcgb25lLgotICAgICAgICBhdXRvIGl0ID0gbV9yZW5kZXJl
clJlZ2lvblN0eWxlLmZpbmQoJnJlbmRlcmVyKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFJl
bmRlclN0eWxlPiBvYmplY3RTdHlsZUluUmVnaW9uOwotICAgICAgICBib29sIG9iamVjdFJlZ2lv
blN0eWxlQ2FjaGVkID0gZmFsc2U7Ci0gICAgICAgIGlmIChpdCAhPSBtX3JlbmRlcmVyUmVnaW9u
U3R5bGUuZW5kKCkpIHsKLSAgICAgICAgICAgIG9iamVjdFN0eWxlSW5SZWdpb24gPSBSZW5kZXJT
dHlsZTo6Y2xvbmVQdHIoKml0LT52YWx1ZS5zdHlsZSk7Ci0gICAgICAgICAgICBBU1NFUlQoaXQt
PnZhbHVlLmNhY2hlZCk7Ci0gICAgICAgICAgICBvYmplY3RSZWdpb25TdHlsZUNhY2hlZCA9IHRy
dWU7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgb2JqZWN0U3R5bGVJblJlZ2lvbiA9IGNv
bXB1dGVTdHlsZUluUmVnaW9uKHJlbmRlcmVyLCBzdHlsZSgpKTsKLQotICAgICAgICBzZXRSZW5k
ZXJlclN0eWxlSW5SZWdpb24ocmVuZGVyZXIsIFdURk1vdmUob2JqZWN0U3R5bGVJblJlZ2lvbiks
IG9iamVjdFJlZ2lvblN0eWxlQ2FjaGVkKTsKLQotICAgICAgICBjb21wdXRlQ2hpbGRyZW5TdHls
ZUluUmVnaW9uKHJlbmRlcmVyKTsKLSAgICB9CiB9CiAKIHZvaWQgUmVuZGVyTmFtZWRGbG93RnJh
Z21lbnQ6OnJlc3RvcmVSZWdpb25PYmplY3RzT3JpZ2luYWxTdHlsZSgpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQuaAkocmV2
aXNpb24gMjIyMjA0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxv
d0ZyYWdtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEwNSw3ICsxMDUsNiBAQCBwdWJsaWM6CiAK
ICAgICBib29sIGhhc0NvbXB1dGVkQXV0b0hlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1faGFzQ29t
cHV0ZWRBdXRvSGVpZ2h0OyB9CiAKLSAgICBSZWdpb25PdmVyc2V0U3RhdGUgcmVnaW9uT3ZlcnNl
dFN0YXRlKCkgY29uc3Q7CiAKICAgICB2b2lkIGF0dGFjaFJlZ2lvbigpIG92ZXJyaWRlOwogICAg
IHZvaWQgZGV0YWNoUmVnaW9uKCkgb3ZlcnJpZGU7CkBAIC0xMzYsOSArMTM1LDYgQEAgcHJpdmF0
ZToKIAogICAgIGJvb2wgc2hvdWxkSGF2ZUF1dG9Mb2dpY2FsSGVpZ2h0KCkgY29uc3Q7CiAKLSAg
ICB2b2lkIHVwZGF0ZU92ZXJzZXRTdGF0ZSgpOwotICAgIHZvaWQgc2V0UmVnaW9uT3ZlcnNldFN0
YXRlKFJlZ2lvbk92ZXJzZXRTdGF0ZSk7Ci0KICAgICB2b2lkIGxheW91dEJsb2NrKGJvb2wgcmVs
YXlvdXRDaGlsZHJlbiwgTGF5b3V0VW5pdCBwYWdlTG9naWNhbEhlaWdodCA9IDApIG92ZXJyaWRl
OwogCiAgICAgc3RydWN0IE9iamVjdFJlZ2lvblN0eWxlSW5mbyB7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93VGhyZWFkLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93VGhyZWFkLmNwcAkocmV2aXNp
b24gMjIyMjA0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd1Ro
cmVhZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxLDE1ICs0MSwxMyBAQAogI2luY2x1ZGUgIlJl
bmRlclZpZXcuaCIKICNpbmNsdWRlICJTaGFkb3dSb290LmgiCiAjaW5jbHVkZSAiVGV4dC5oIgot
I2luY2x1ZGUgIldlYktpdE5hbWVkRmxvdy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJl
bmRlck5hbWVkRmxvd1RocmVhZDo6UmVuZGVyTmFtZWRGbG93VGhyZWFkKERvY3VtZW50JiBkb2N1
bWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSwgUmVmPFdlYktpdE5hbWVkRmxvdz4mJiBuYW1lZEZs
b3cpCitSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6OlJlbmRlck5hbWVkRmxvd1RocmVhZChEb2N1bWVu
dCYgZG9jdW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgOiBSZW5kZXJGbG93VGhyZWFk
KGRvY3VtZW50LCBXVEZNb3ZlKHN0eWxlKSkKICAgICAsIG1faGFzUmVnaW9uc1dpdGhTdHlsaW5n
KGZhbHNlKQogICAgICwgbV9kaXNwYXRjaFJlZ2lvbk92ZXJzZXRDaGFuZ2VFdmVudChmYWxzZSkK
LSAgICAsIG1fbmFtZWRGbG93KFdURk1vdmUobmFtZWRGbG93KSkKICAgICAsIG1fcmVnaW9uT3Zl
cnNldENoYW5nZUV2ZW50VGltZXIoKnRoaXMsICZSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6OnJlZ2lv
bk92ZXJzZXRDaGFuZ2VFdmVudFRpbWVyRmlyZWQpCiB7CiB9CkBAIC03OCwxNSArNzYsNiBAQCBj
b25zdCBjaGFyKiBSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6OnJlbmRlCiAgICAgCiB2b2lkIFJlbmRl
ck5hbWVkRmxvd1RocmVhZDo6Y2xlYXJDb250ZW50RWxlbWVudHMoKQogewotICAgIGZvciAoYXV0
byYgY29udGVudEVsZW1lbnQgOiBtX2NvbnRlbnRFbGVtZW50cykgewotICAgICAgICBBU1NFUlQo
Y29udGVudEVsZW1lbnQpOwotICAgICAgICBBU1NFUlQoY29udGVudEVsZW1lbnQtPmlzTmFtZWRG
bG93Q29udGVudEVsZW1lbnQoKSk7Ci0gICAgICAgIEFTU0VSVCgmY29udGVudEVsZW1lbnQtPmRv
Y3VtZW50KCkgPT0gJmRvY3VtZW50KCkpOwotICAgICAgICAKLSAgICAgICAgY29udGVudEVsZW1l
bnQtPmNsZWFySXNOYW1lZEZsb3dDb250ZW50RWxlbWVudCgpOwotICAgIH0KLSAgICAKLSAgICBt
X2NvbnRlbnRFbGVtZW50cy5jbGVhcigpOwogfQogCiB2b2lkIFJlbmRlck5hbWVkRmxvd1RocmVh
ZDo6dXBkYXRlV3JpdGluZ01vZGUoKQpAQCAtNDY3LDUxICs0NTYsMjIgQEAgdm9pZCBSZW5kZXJO
YW1lZEZsb3dUaHJlYWQ6OnB1c2hEZXBlbmRlbgogLy8gVGhlIGNvbnRlbnQgbm9kZXMgbGlzdCBj
b250YWlucyB0aG9zZSBub2RlcyB3aXRoIC13ZWJraXQtZmxvdy1pbnRvOiBmbG93LgogLy8gQW4g
ZWxlbWVudCB3aXRoIGRpc3BsYXk6bm9uZSBzaG91bGQgYWxzbyBiZSBsaXN0ZWQgYW1vbmcgdGhv
c2Ugbm9kZXMuCiAvLyBUaGUgbGlzdCBvZiBub2RlcyBpcyBvcmRlcmVkLgotdm9pZCBSZW5kZXJO
YW1lZEZsb3dUaHJlYWQ6OnJlZ2lzdGVyTmFtZWRGbG93Q29udGVudEVsZW1lbnQoRWxlbWVudCYg
Y29udGVudEVsZW1lbnQpCit2b2lkIFJlbmRlck5hbWVkRmxvd1RocmVhZDo6cmVnaXN0ZXJOYW1l
ZEZsb3dDb250ZW50RWxlbWVudChFbGVtZW50JikKIHsKLSAgICBBU1NFUlQoJmNvbnRlbnRFbGVt
ZW50LmRvY3VtZW50KCkgPT0gJmRvY3VtZW50KCkpOwotCi0gICAgY29udGVudEVsZW1lbnQuc2V0
SXNOYW1lZEZsb3dDb250ZW50RWxlbWVudCgpOwotCi0gICAgcmVzZXRNYXJrRm9yRGVzdHJ1Y3Rp
b24oKTsKLQotICAgIC8vIEZpbmQgdGhlIGZpcnN0IGNvbnRlbnQgbm9kZSBmb2xsb3dpbmcgdGhl
IG5ldyBjb250ZW50IG5vZGUuCi0gICAgZm9yIChhdXRvJiBlbGVtZW50IDogbV9jb250ZW50RWxl
bWVudHMpIHsKLSAgICAgICAgdW5zaWduZWQgc2hvcnQgcG9zaXRpb24gPSBjb250ZW50RWxlbWVu
dC5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbigqZWxlbWVudCk7Ci0gICAgICAgIGlmIChwb3NpdGlv
biAmIE5vZGU6OkRPQ1VNRU5UX1BPU0lUSU9OX0ZPTExPV0lORykgewotICAgICAgICAgICAgbV9j
b250ZW50RWxlbWVudHMuaW5zZXJ0QmVmb3JlKGVsZW1lbnQsICZjb250ZW50RWxlbWVudCk7Ci0g
ICAgICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlZ2lzdGVyTmFtZWRGbG93
Q29udGVudEVsZW1lbnQoZG9jdW1lbnQoKSwgbmFtZWRGbG93KCksIGNvbnRlbnRFbGVtZW50LCBl
bGVtZW50KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0KLQotICAgIG1f
Y29udGVudEVsZW1lbnRzLmFkZCgmY29udGVudEVsZW1lbnQpOwotICAgIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZGlkUmVnaXN0ZXJOYW1lZEZsb3dDb250ZW50RWxlbWVudChkb2N1bWVudCgp
LCBuYW1lZEZsb3coKSwgY29udGVudEVsZW1lbnQpOwogfQogCi12b2lkIFJlbmRlck5hbWVkRmxv
d1RocmVhZDo6dW5yZWdpc3Rlck5hbWVkRmxvd0NvbnRlbnRFbGVtZW50KEVsZW1lbnQmIGNvbnRl
bnRFbGVtZW50KQordm9pZCBSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6OnVucmVnaXN0ZXJOYW1lZEZs
b3dDb250ZW50RWxlbWVudChFbGVtZW50JikKIHsKLSAgICBBU1NFUlQobV9jb250ZW50RWxlbWVu
dHMuY29udGFpbnMoJmNvbnRlbnRFbGVtZW50KSk7Ci0gICAgQVNTRVJUKGNvbnRlbnRFbGVtZW50
LmlzTmFtZWRGbG93Q29udGVudEVsZW1lbnQoKSk7Ci0gICAgQVNTRVJUKCZjb250ZW50RWxlbWVu
dC5kb2N1bWVudCgpID09ICZkb2N1bWVudCgpKTsKLQotICAgIGNvbnRlbnRFbGVtZW50LmNsZWFy
SXNOYW1lZEZsb3dDb250ZW50RWxlbWVudCgpOwotICAgIG1fY29udGVudEVsZW1lbnRzLnJlbW92
ZSgmY29udGVudEVsZW1lbnQpOwotCi0gICAgaWYgKGNhbkJlRGVzdHJveWVkKCkpCi0gICAgICAg
IHNldE1hcmtGb3JEZXN0cnVjdGlvbigpOwotCi0gICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpkaWRVbnJlZ2lzdGVyTmFtZWRGbG93Q29udGVudEVsZW1lbnQoZG9jdW1lbnQoKSwgbmFtZWRG
bG93KCksIGNvbnRlbnRFbGVtZW50KTsKIH0KIAotYm9vbCBSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6
Omhhc0NvbnRlbnRFbGVtZW50KEVsZW1lbnQmIGNvbnRlbnRFbGVtZW50KSBjb25zdAorYm9vbCBS
ZW5kZXJOYW1lZEZsb3dUaHJlYWQ6Omhhc0NvbnRlbnRFbGVtZW50KEVsZW1lbnQmKSBjb25zdAog
ewotICAgIHJldHVybiBtX2NvbnRlbnRFbGVtZW50cy5jb250YWlucygmY29udGVudEVsZW1lbnQp
OworICAgIHJldHVybiBmYWxzZTsKIH0KICAgICAKIGNvbnN0IEF0b21pY1N0cmluZyYgUmVuZGVy
TmFtZWRGbG93VGhyZWFkOjpmbG93VGhyZWFkTmFtZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG5h
bWVkRmxvdygpLm5hbWUoKTsKKyAgICByZXR1cm4gbnVsbEF0b20oKTsKIH0KIAogYm9vbCBSZW5k
ZXJOYW1lZEZsb3dUaHJlYWQ6OmlzQ2hpbGRBbGxvd2VkKGNvbnN0IFJlbmRlck9iamVjdCYgY2hp
bGQsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkgY29uc3QKQEAgLTUzMCw0MyArNDkwLDIzIEBA
IGJvb2wgUmVuZGVyTmFtZWRGbG93VGhyZWFkOjppc0NoaWxkQWxsb3cKIAogdm9pZCBSZW5kZXJO
YW1lZEZsb3dUaHJlYWQ6OmRpc3BhdGNoUmVnaW9uT3ZlcnNldENoYW5nZUV2ZW50SWZOZWVkZWQo
KQogewotICAgIGlmICghbV9kaXNwYXRjaFJlZ2lvbk92ZXJzZXRDaGFuZ2VFdmVudCkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgbV9kaXNwYXRjaFJlZ2lvbk92ZXJzZXRDaGFuZ2VFdmVudCA9IGZh
bHNlOwotICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ2hhbmdlUmVnaW9uT3ZlcnNl
dChkb2N1bWVudCgpLCBuYW1lZEZsb3coKSk7Ci0gICAgCi0gICAgaWYgKCFtX3JlZ2lvbk92ZXJz
ZXRDaGFuZ2VFdmVudFRpbWVyLmlzQWN0aXZlKCkgJiYgbmFtZWRGbG93KCkuaGFzRXZlbnRMaXN0
ZW5lcnMoKSkKLSAgICAgICAgbV9yZWdpb25PdmVyc2V0Q2hhbmdlRXZlbnRUaW1lci5zdGFydE9u
ZVNob3QoMF9zKTsKIH0KIAogdm9pZCBSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6OnJlZ2lvbk92ZXJz
ZXRDaGFuZ2VFdmVudFRpbWVyRmlyZWQoKQogewotICAgIG5hbWVkRmxvdygpLmRpc3BhdGNoUmVn
aW9uT3ZlcnNldENoYW5nZUV2ZW50KCk7CiB9CiAKIHZvaWQgUmVuZGVyTmFtZWRGbG93VGhyZWFk
OjpzZXRNYXJrRm9yRGVzdHJ1Y3Rpb24oKQogewotICAgIGlmIChuYW1lZEZsb3coKS5mbG93U3Rh
dGUoKSA9PSBXZWJLaXROYW1lZEZsb3c6OkZsb3dTdGF0ZU51bGwpCi0gICAgICAgIHJldHVybjsK
LQotICAgIG5hbWVkRmxvdygpLnNldFJlbmRlcmVyKG51bGxwdHIpOwotICAgIC8vIEFmdGVyIHRo
aXMgY2FsbCBlbmRzLCB0aGUgcmVuZGVyZXIgY2FuIGJlIHNhZmVseSBkZXN0cm95ZWQuCi0gICAg
Ly8gVGhlIE5hbWVkRmxvdyBvYmplY3QgbWF5IG91dGxpdmUgaXRzIHJlbmRlcmVyIGlmIGl0J3Mg
cmVmZXJlbmNlZCBmcm9tIGEgc2NyaXB0IGFuZCBtYXkgYmUgcmVhdGFjaGVkIHRvIG9uZSBpZiB0
aGUgbmFtZWQgZmxvdyBpcyByZWNyZWF0ZWQgaW4gdGhlIHN0eWxlc2hlZXQuCiB9CiAKIHZvaWQg
UmVuZGVyTmFtZWRGbG93VGhyZWFkOjpyZXNldE1hcmtGb3JEZXN0cnVjdGlvbigpCiB7Ci0gICAg
aWYgKG5hbWVkRmxvdygpLmZsb3dTdGF0ZSgpID09IFdlYktpdE5hbWVkRmxvdzo6Rmxvd1N0YXRl
Q3JlYXRlZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbmFtZWRGbG93KCkuc2V0UmVuZGVyZXIo
dGhpcyk7CiB9CiAKIGJvb2wgUmVuZGVyTmFtZWRGbG93VGhyZWFkOjppc01hcmtlZEZvckRlc3Ry
dWN0aW9uKCkgY29uc3QKIHsKLSAgICAvLyBGbG93IHRocmVhZHMgaW4gdGhlICJOVUxMIiBzdGF0
ZSBjYW4gYmUgZGVzdHJveWVkLgotICAgIHJldHVybiBuYW1lZEZsb3coKS5mbG93U3RhdGUoKSA9
PSBXZWJLaXROYW1lZEZsb3c6OkZsb3dTdGF0ZU51bGw7CisgICAgcmV0dXJuIGZhbHNlOwogfQog
CiBzdGF0aWMgYm9vbCBpc0NvbnRhaW5lZEluRWxlbWVudHMoY29uc3QgVmVjdG9yPEVsZW1lbnQq
PiYgb3RoZXJzLCBFbGVtZW50KiBlbGVtZW50KQpAQCAtNTkwLDggKzUzMCw2IEBAIHN0YXRpYyBi
b29sIGJveEludGVyc2VjdHNSZWdpb24oTGF5b3V0VW4KIC8vIFJldHJpZXZlIHRoZSBuZXh0IG5v
ZGUgdG8gYmUgdmlzaXRlZCB3aGlsZSBjb21wdXRpbmcgdGhlIHJhbmdlcyBpbnNpZGUgYSByZWdp
b24uCiBzdGF0aWMgTm9kZSogbmV4dE5vZGVJbnNpZGVDb250ZW50RWxlbWVudChjb25zdCBOb2Rl
JiBjdXJyTm9kZSwgY29uc3QgRWxlbWVudCogY29udGVudEVsZW1lbnQpCiB7Ci0gICAgQVNTRVJU
KGNvbnRlbnRFbGVtZW50ICYmIGNvbnRlbnRFbGVtZW50LT5pc05hbWVkRmxvd0NvbnRlbnRFbGVt
ZW50KCkpOwotCiAgICAgaWYgKGN1cnJOb2RlLnJlbmRlcmVyKCkgJiYgY3Vyck5vZGUucmVuZGVy
ZXIoKS0+aXNTVkdSb290KCkpCiAgICAgICAgIHJldHVybiBOb2RlVHJhdmVyc2FsOjpuZXh0U2tp
cHBpbmdDaGlsZHJlbihjdXJyTm9kZSwgY29udGVudEVsZW1lbnQpOwogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93VGhyZWFkLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd1RocmVhZC5oCShyZXZpc2lv
biAyMjIyMDQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93VGhy
ZWFkLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBOb2RlOwogY2xhc3MgUmVuZGVyTmFtZWRGbG93VGhyZWFkOwotY2xhc3MgV2Vi
S2l0TmFtZWRGbG93OwogCiB0eXBlZGVmIExpc3RIYXNoU2V0PFJlbmRlck5hbWVkRmxvd1RocmVh
ZCo+IFJlbmRlck5hbWVkRmxvd1RocmVhZExpc3Q7CiB0eXBlZGVmIEhhc2hDb3VudGVkU2V0PFJl
bmRlck5hbWVkRmxvd1RocmVhZCo+IFJlbmRlck5hbWVkRmxvd1RocmVhZENvdW50ZWRTZXQ7CkBA
IC00NCw3ICs0Myw3IEBAIHR5cGVkZWYgTGlzdEhhc2hTZXQ8RWxlbWVudCo+IE5hbWVkRmxvd0MK
IAogY2xhc3MgUmVuZGVyTmFtZWRGbG93VGhyZWFkIGZpbmFsIDogcHVibGljIFJlbmRlckZsb3dU
aHJlYWQsIHB1YmxpYyBTZWxlY3Rpb25TdWJ0cmVlUm9vdCB7CiBwdWJsaWM6Ci0gICAgUmVuZGVy
TmFtZWRGbG93VGhyZWFkKERvY3VtZW50JiwgUmVuZGVyU3R5bGUmJiwgUmVmPFdlYktpdE5hbWVk
Rmxvdz4mJik7CisgICAgUmVuZGVyTmFtZWRGbG93VGhyZWFkKERvY3VtZW50JiwgUmVuZGVyU3R5
bGUmJik7CiAgICAgdmlydHVhbCB+UmVuZGVyTmFtZWRGbG93VGhyZWFkKCk7CiAKICAgICBjb25z
dCBBdG9taWNTdHJpbmcmIGZsb3dUaHJlYWROYW1lKCkgY29uc3Q7CkBAIC0xMTgsOSArMTE3LDYg
QEAgcHJpdmF0ZToKICAgICB2b2lkIGNsZWFyQ29udGVudEVsZW1lbnRzKCk7CiAgICAgdm9pZCB1
cGRhdGVXcml0aW5nTW9kZSgpOwogCi0gICAgV2ViS2l0TmFtZWRGbG93JiBuYW1lZEZsb3coKSB7
IHJldHVybiBtX25hbWVkRmxvdzsgfQotICAgIGNvbnN0IFdlYktpdE5hbWVkRmxvdyYgbmFtZWRG
bG93KCkgY29uc3QgeyByZXR1cm4gbV9uYW1lZEZsb3c7IH0KLQogICAgIC8vIE9ic2VydmVyIGZs
b3cgdGhyZWFkcyBoYXZlIGludmFsaWQgcmVnaW9ucyB0aGF0IGRlcGVuZCBvbiB0aGUgc3RhdGUg
b2YgdGhpcyB0aHJlYWQKICAgICAvLyB0byByZS12YWxpZGF0ZSB0aGVpciByZWdpb25zLiBLZWVw
aW5nIGEgc2V0IG9mIG9ic2VydmVyIHRocmVhZHMgbWFrZSBpdCBlYXN5CiAgICAgLy8gdG8gbm90
aWZ5IHRoZW0gd2hlbiBhIHJlZ2lvbiB3YXMgcmVtb3ZlZCBmcm9tIHRoaXMgZmxvdy4KQEAgLTEz
OCw5ICsxMzQsNiBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9oYXNSZWdpb25zV2l0aFN0eWxpbmcg
OiAxOwogICAgIGJvb2wgbV9kaXNwYXRjaFJlZ2lvbk92ZXJzZXRDaGFuZ2VFdmVudCA6IDE7CiAK
LSAgICAvLyBUaGUgRE9NIE9iamVjdCB0aGF0IHJlcHJlc2VudHMgYSBuYW1lZCBmbG93LgotICAg
IFJlZjxXZWJLaXROYW1lZEZsb3c+IG1fbmFtZWRGbG93OwotCiAgICAgVGltZXIgbV9yZWdpb25P
dmVyc2V0Q2hhbmdlRXZlbnRUaW1lcjsKIAogICAgIExheW91dFVuaXQgbV9mbG93Q29udGVudEJv
dHRvbTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24uY3BwCShy
ZXZpc2lvbiAyMjIyMDQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9u
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYyLDE5ICsyNjIsNyBAQCB2b2lkIFJlbmRlclJlZ2lv
bjo6cmVwYWludEZsb3dUaHJlYWRDb250CiAKIHZvaWQgUmVuZGVyUmVnaW9uOjppbnN0YWxsRmxv
d1RocmVhZCgpCiB7Ci0gICAgbV9mbG93VGhyZWFkID0gJnZpZXcoKS5mbG93VGhyZWFkQ29udHJv
bGxlcigpLmVuc3VyZVJlbmRlckZsb3dUaHJlYWRXaXRoTmFtZShzdHlsZSgpLnJlZ2lvblRocmVh
ZCgpKTsKLQotICAgIC8vIEJ5IG5vdyB0aGUgZmxvdyB0aHJlYWQgc2hvdWxkIGFscmVhZHkgYmUg
YWRkZWQgdG8gdGhlIHJlbmRlcmluZyB0cmVlLAotICAgIC8vIHNvIHdlIGdvIHVwIHRoZSByZW5k
ZXJpbmcgcGFyZW50cyBhbmQgY2hlY2sgdGhhdCB0aGlzIHJlZ2lvbiBpcyBub3QgcGFydCBvZiB0
aGUgc2FtZQotICAgIC8vIGZsb3cgdGhhdCBpdCBhY3R1YWxseSBuZWVkcyB0byBkaXNwbGF5LiBJ
dCB3b3VsZCBjcmVhdGUgYSBjaXJjdWxhciByZWZlcmVuY2UuCi0KLSAgICBhdXRvIGNsb3Nlc3RG
bG93VGhyZWFkQW5jZXN0b3IgPSBhbmNlc3RvcnNPZlR5cGU8UmVuZGVyTmFtZWRGbG93VGhyZWFk
PigqdGhpcykuZmlyc3QoKTsKLSAgICBpZiAoIWNsb3Nlc3RGbG93VGhyZWFkQW5jZXN0b3IpIHsK
LSAgICAgICAgbV9wYXJlbnROYW1lZEZsb3dUaHJlYWQgPSBudWxscHRyOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgbV9wYXJlbnROYW1lZEZsb3dUaHJlYWQgPSAmKmNsb3Nlc3RGbG93
VGhyZWFkQW5jZXN0b3I7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKIHZvaWQgUmVu
ZGVyUmVnaW9uOjphdHRhY2hSZWdpb24oKQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmgJKHJldmlzaW9uIDIyMjIw
NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC00NzcsNyArNDc3LDcgQEAgZW51bSBUZXh0Wm9vbSB7CiB9
OwogCiBlbnVtIEJyZWFrQmV0d2VlbiB7Ci0gICAgQXV0b0JyZWFrQmV0d2VlbiwgQXZvaWRCcmVh
a0JldHdlZW4sIEF2b2lkQ29sdW1uQnJlYWtCZXR3ZWVuLCBBdm9pZFBhZ2VCcmVha0JldHdlZW4s
IEF2b2lkUmVnaW9uQnJlYWtCZXR3ZWVuLCBDb2x1bW5CcmVha0JldHdlZW4sIFJlZ2lvbkJyZWFr
QmV0d2VlbiwgUGFnZUJyZWFrQmV0d2VlbiwgTGVmdFBhZ2VCcmVha0JldHdlZW4sIFJpZ2h0UGFn
ZUJyZWFrQmV0d2VlbiwgUmVjdG9QYWdlQnJlYWtCZXR3ZWVuLCBWZXJzb1BhZ2VCcmVha0JldHdl
ZW4KKyAgICBBdXRvQnJlYWtCZXR3ZWVuLCBBdm9pZEJyZWFrQmV0d2VlbiwgQXZvaWRDb2x1bW5C
cmVha0JldHdlZW4sIEF2b2lkUGFnZUJyZWFrQmV0d2VlbiwgQ29sdW1uQnJlYWtCZXR3ZWVuLCBQ
YWdlQnJlYWtCZXR3ZWVuLCBMZWZ0UGFnZUJyZWFrQmV0d2VlbiwgUmlnaHRQYWdlQnJlYWtCZXR3
ZWVuLCBSZWN0b1BhZ2VCcmVha0JldHdlZW4sIFZlcnNvUGFnZUJyZWFrQmV0d2VlbgogfTsKIGJv
b2wgYWx3YXlzUGFnZUJyZWFrKEJyZWFrQmV0d2Vlbik7CiAgICAgCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvV2lsbENoYW5nZURhdGEuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9XaWxsQ2hhbmdlRGF0YS5jcHAJKHJldmlzaW9u
IDIyMjIwNCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9XaWxsQ2hhbmdlRGF0
YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg3LDkgKzg3LDYgQEAgYm9vbCBXaWxsQ2hhbmdlRGF0
YTo6cHJvcGVydHlDcmVhdGVzU3RhYwogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrOgog
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrSW1hZ2U6CiAgICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdE1hc2tCb3hJbWFnZToKLSNpZiBFTkFCTEUoQ1NTX1JFR0lPTlMpCi0gICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdEZsb3dGcm9tOgotI2VuZGlmCiAjaWYgRU5BQkxFKEFDQ0VMRVJBVEVE
X09WRVJGTE9XX1NDUk9MTElORykKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0T3ZlcmZsb3dT
Y3JvbGxpbmc6CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N0eWxlL1JlbmRlclRyZWVQ
b3NpdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3R5bGUvUmVuZGVyVHJl
ZVBvc2l0aW9uLmNwcAkocmV2aXNpb24gMjIyMjA0KQorKysgU291cmNlL1dlYkNvcmUvc3R5bGUv
UmVuZGVyVHJlZVBvc2l0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsOSArMjcsNyBAQAog
I2luY2x1ZGUgIlJlbmRlclRyZWVQb3NpdGlvbi5oIgogCiAjaW5jbHVkZSAiQ29tcG9zZWRUcmVl
SXRlcmF0b3IuaCIKLSNpbmNsdWRlICJGbG93VGhyZWFkQ29udHJvbGxlci5oIgogI2luY2x1ZGUg
IlBzZXVkb0VsZW1lbnQuaCIKLSNpbmNsdWRlICJSZW5kZXJOYW1lZEZsb3dUaHJlYWQuaCIKICNp
bmNsdWRlICJSZW5kZXJPYmplY3QuaCIKICNpbmNsdWRlICJTaGFkb3dSb290LmgiCiAKQEAgLTY3
LDggKzY1LDcgQEAgUmVuZGVyT2JqZWN0KiBSZW5kZXJUcmVlUG9zaXRpb246OnByZXZpbwogCiAg
ICAgYXV0byBjb21wb3NlZENoaWxkcmVuID0gY29tcG9zZWRUcmVlQ2hpbGRyZW4oKnBhcmVudEVs
ZW1lbnQpOwogICAgIGZvciAoYXV0byBpdCA9IGNvbXBvc2VkQ2hpbGRyZW4uYXQodGV4dE5vZGUp
LCBlbmQgPSBjb21wb3NlZENoaWxkcmVuLmVuZCgpOyBpdCAhPSBlbmQ7IC0taXQpIHsKLSAgICAg
ICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IGl0LT5yZW5kZXJlcigpOwotICAgICAgICBpZiAo
cmVuZGVyZXIgJiYgIWlzUmVuZGVyZXJSZXBhcmVudGVkKCpyZW5kZXJlcikpCisgICAgICAgIGlm
IChhdXRvKiByZW5kZXJlciA9IGl0LT5yZW5kZXJlcigpKQogICAgICAgICAgICAgcmV0dXJuIHJl
bmRlcmVyOwogICAgIH0KICAgICBpZiAoYXV0byogYmVmb3JlID0gcGFyZW50RWxlbWVudC0+YmVm
b3JlUHNldWRvRWxlbWVudCgpKQpAQCAtOTUsOCArOTIsNyBAQCBSZW5kZXJPYmplY3QqIFJlbmRl
clRyZWVQb3NpdGlvbjo6bmV4dFNpCiAgICAgICAgICAgICBpdC50cmF2ZXJzZU5leHQoKTsKICAg
ICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9Ci0gICAgICAgIFJlbmRlck9iamVjdCogcmVu
ZGVyZXIgPSBub2RlLnJlbmRlcmVyKCk7Ci0gICAgICAgIGlmIChyZW5kZXJlciAmJiAhaXNSZW5k
ZXJlclJlcGFyZW50ZWQoKnJlbmRlcmVyKSkKKyAgICAgICAgaWYgKGF1dG8qIHJlbmRlcmVyID0g
aXQtPnJlbmRlcmVyKCkpCiAgICAgICAgICAgICByZXR1cm4gcmVuZGVyZXI7CiAgICAgICAgIAog
ICAgICAgICBpdC50cmF2ZXJzZU5leHRTa2lwcGluZ0NoaWxkcmVuKCk7CkBAIC0xMDYsNTcgKzEw
Miw0IEBAIFJlbmRlck9iamVjdCogUmVuZGVyVHJlZVBvc2l0aW9uOjpuZXh0U2kKICAgICByZXR1
cm4gbnVsbHB0cjsKIH0KIAotI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKLVJlbmRlclRyZWVQb3Np
dGlvbiBSZW5kZXJUcmVlUG9zaXRpb246Omluc2VydGlvblBvc2l0aW9uRm9yRmxvd1RocmVhZChF
bGVtZW50KiBpbnNlcnRpb25QYXJlbnQsIEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFJlbmRlclN0
eWxlJiBzdHlsZSkKLXsKLSAgICBBU1NFUlQoZWxlbWVudC5zaG91bGRNb3ZlVG9GbG93VGhyZWFk
KHN0eWxlKSk7Ci0gICAgYXV0byYgcGFyZW50Rmxvd1RocmVhZCA9IGVsZW1lbnQuZG9jdW1lbnQo
KS5yZW5kZXJWaWV3KCktPmZsb3dUaHJlYWRDb250cm9sbGVyKCkuZW5zdXJlUmVuZGVyRmxvd1Ro
cmVhZFdpdGhOYW1lKHN0eWxlLmZsb3dUaHJlYWQoKSk7Ci0KLSAgICBpZiAoIWluc2VydGlvblBh
cmVudCkKLSAgICAgICAgcmV0dXJuIHsgcGFyZW50Rmxvd1RocmVhZCwgbnVsbHB0ciB9OwotCi0g
ICAgYXV0byBjb21wb3NlZERlc2NlbmRhbnRzID0gY29tcG9zZWRUcmVlRGVzY2VuZGFudHMoKmlu
c2VydGlvblBhcmVudCk7Ci0gICAgYXV0byBpdCA9IGVsZW1lbnQuaXNCZWZvcmVQc2V1ZG9FbGVt
ZW50KCkgPyBjb21wb3NlZERlc2NlbmRhbnRzLmJlZ2luKCkgOiBjb21wb3NlZERlc2NlbmRhbnRz
LmF0KGVsZW1lbnQpOwotICAgIGF1dG8gZW5kID0gY29tcG9zZWREZXNjZW5kYW50cy5lbmQoKTsK
LSAgICB3aGlsZSAoaXQgIT0gZW5kKSB7Ci0gICAgICAgIGF1dG8mIGN1cnJlbnROb2RlID0gKml0
OwotICAgICAgICBib29sIGhhc0Rpc3BsYXlDb250ZW50cyA9IGlzPEVsZW1lbnQ+KGN1cnJlbnRO
b2RlKSAmJiBkb3duY2FzdDxFbGVtZW50PihjdXJyZW50Tm9kZSkuaGFzRGlzcGxheUNvbnRlbnRz
KCk7Ci0gICAgICAgIGlmIChoYXNEaXNwbGF5Q29udGVudHMpIHsKLSAgICAgICAgICAgIGl0LnRy
YXZlcnNlTmV4dCgpOwotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLQotICAgICAg
ICBhdXRvKiByZW5kZXJlciA9IGN1cnJlbnROb2RlLnJlbmRlcmVyKCk7Ci0gICAgICAgIGlmICgh
cmVuZGVyZXIpIHsKLSAgICAgICAgICAgIGl0LnRyYXZlcnNlTmV4dFNraXBwaW5nQ2hpbGRyZW4o
KTsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCFpczxS
ZW5kZXJFbGVtZW50PigqcmVuZGVyZXIpKSB7Ci0gICAgICAgICAgICBpdC50cmF2ZXJzZU5leHQo
KTsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gV2UgYXJl
IHRoZSBsYXN0IGNoaWxkIGluIHRoaXMgZmxvdy4KLSAgICAgICAgaWYgKCFpc1JlbmRlcmVyUmVw
YXJlbnRlZCgqcmVuZGVyZXIpKQotICAgICAgICAgICAgcmV0dXJuIHsgcGFyZW50Rmxvd1RocmVh
ZCwgbnVsbHB0ciB9OwotCi0gICAgICAgIGlmIChyZW5kZXJlci0+c3R5bGUoKS5oYXNGbG93SW50
bygpICYmIHN0eWxlLmZsb3dUaHJlYWQoKSA9PSByZW5kZXJlci0+c3R5bGUoKS5mbG93VGhyZWFk
KCkpCi0gICAgICAgICAgICByZXR1cm4geyBwYXJlbnRGbG93VGhyZWFkLCBkb3duY2FzdDxSZW5k
ZXJFbGVtZW50PihyZW5kZXJlcikgfTsKLSAgICAgICAgLy8gTmVzdGVkIGZsb3dzLCBza2lwLgot
ICAgICAgICBpdC50cmF2ZXJzZU5leHRTa2lwcGluZ0NoaWxkcmVuKCk7Ci0gICAgfQotICAgIHJl
dHVybiB7IHBhcmVudEZsb3dUaHJlYWQsIG51bGxwdHIgfTsKLX0KLSNlbmRpZgotICAgIAotYm9v
bCBSZW5kZXJUcmVlUG9zaXRpb246OmlzUmVuZGVyZXJSZXBhcmVudGVkKGNvbnN0IFJlbmRlck9i
amVjdCYgcmVuZGVyZXIpCi17Ci0gICAgaWYgKCFyZW5kZXJlci5ub2RlKCktPmlzRWxlbWVudE5v
ZGUoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChyZW5kZXJlci5zdHlsZSgpLmhh
c0Zsb3dJbnRvKCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIHJldHVybiBmYWxzZTsKLX0K
LQogfQpJbmRleDogU291cmNlL1dlYkNvcmUvc3R5bGUvUmVuZGVyVHJlZVBvc2l0aW9uLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3R5bGUvUmVuZGVyVHJlZVBvc2l0aW9uLmgJKHJl
dmlzaW9uIDIyMjIwNCkKKysrIFNvdXJjZS9XZWJDb3JlL3N0eWxlL1JlbmRlclRyZWVQb3NpdGlv
bi5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCwxMCArNDQsNiBAQCBwdWJsaWM6CiAgICAgICAgIDog
bV9wYXJlbnQocGFyZW50KQogICAgIHsKICAgICB9Ci0gICAgCi0jaWYgRU5BQkxFKENTU19SRUdJ
T05TKQotICAgIHN0YXRpYyBSZW5kZXJUcmVlUG9zaXRpb24gaW5zZXJ0aW9uUG9zaXRpb25Gb3JG
bG93VGhyZWFkKEVsZW1lbnQqIGluc2VydGlvblBhcmVudCwgRWxlbWVudCYgY2hpbGQsIGNvbnN0
IFJlbmRlclN0eWxlJik7Ci0jZW5kaWYKIAogICAgIFJlbmRlckVsZW1lbnQmIHBhcmVudCgpIGNv
bnN0IHsgcmV0dXJuIG1fcGFyZW50OyB9CiAgICAgdm9pZCBpbnNlcnQoUmVuZGVyT2JqZWN0Jik7
CkBAIC02MCwxOCArNTYsOCBAQCBwdWJsaWM6CiAKICAgICBSZW5kZXJPYmplY3QqIHByZXZpb3Vz
U2libGluZ1JlbmRlcmVyKGNvbnN0IFRleHQmKSBjb25zdDsKICAgICBSZW5kZXJPYmplY3QqIG5l
eHRTaWJsaW5nUmVuZGVyZXIoY29uc3QgTm9kZSYpIGNvbnN0OwotICAgIHN0YXRpYyBib29sIGlz
UmVuZGVyZXJSZXBhcmVudGVkKGNvbnN0IFJlbmRlck9iamVjdCYpOwogCiBwcml2YXRlOgotI2lm
IEVOQUJMRShDU1NfUkVHSU9OUykKLSAgICBSZW5kZXJUcmVlUG9zaXRpb24oUmVuZGVyRmxvd1Ro
cmVhZCYgcGFyZW50LCBSZW5kZXJPYmplY3QqIG5leHRTaWJsaW5nKQotICAgICAgICA6IG1fcGFy
ZW50KHBhcmVudCkKLSAgICAgICAgLCBtX25leHRTaWJsaW5nKG5leHRTaWJsaW5nKQotICAgICAg
ICAsIG1faGFzVmFsaWROZXh0U2libGluZyh0cnVlKQotICAgIHsKLSAgICB9Ci0jZW5kaWYKLQog
ICAgIFJlbmRlckVsZW1lbnQmIG1fcGFyZW50OwogICAgIFJlbmRlck9iamVjdCogbV9uZXh0U2li
bGluZyB7IG51bGxwdHIgfTsKICAgICBib29sIG1faGFzVmFsaWROZXh0U2libGluZyB7IGZhbHNl
IH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdHlsZS9SZW5kZXJUcmVlVXBkYXRlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3R5bGUvUmVuZGVyVHJlZVVwZGF0ZXIuY3BwCShy
ZXZpc2lvbiAyMjIyMDQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdHlsZS9SZW5kZXJUcmVlVXBkYXRl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDYgQEAKICNpbmNsdWRlICJDb21wb3Nl
ZFRyZWVJdGVyYXRvci5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRWxlbWVu
dC5oIgotI2luY2x1ZGUgIkZsb3dUaHJlYWRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiSFRNTFNs
b3RFbGVtZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5j
bHVkZSAiTm9kZVJlbmRlclN0eWxlLmgiCkBAIC00MCw3ICszOSw2IEBACiAjaW5jbHVkZSAiUmVu
ZGVyRGVzY2VuZGFudEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiUmVuZGVyRnVsbFNjcmVlbi5oIgog
I2luY2x1ZGUgIlJlbmRlckxpc3RJdGVtLmgiCi0jaW5jbHVkZSAiUmVuZGVyTmFtZWRGbG93VGhy
ZWFkLmgiCiAjaW5jbHVkZSAiUmVuZGVyVHJlZVVwZGF0ZXJGaXJzdExldHRlci5oIgogI2luY2x1
ZGUgIlJlbmRlclRyZWVVcGRhdGVyR2VuZXJhdGVkQ29udGVudC5oIgogI2luY2x1ZGUgIlJlbmRl
clRyZWVVcGRhdGVyTGlzdEl0ZW0uaCIKQEAgLTMwMCw4ICsyOTgsNyBAQCB2b2lkIFJlbmRlclRy
ZWVVcGRhdGVyOjp1cGRhdGVFbGVtZW50UmVuCiAgICAgQ2hlY2tGb3JWaXNpYmlsaXR5Q2hhbmdl
IGNoZWNrRm9yVmlzaWJpbGl0eUNoYW5nZShlbGVtZW50KTsKICNlbmRpZgogCi0gICAgYm9vbCBz
aG91bGRUZWFyRG93blJlbmRlcmVycyA9IHVwZGF0ZS5jaGFuZ2UgPT0gU3R5bGU6OkRldGFjaAot
ICAgICAgICAmJiAoZWxlbWVudC5yZW5kZXJlcigpIHx8IGVsZW1lbnQuaXNOYW1lZEZsb3dDb250
ZW50RWxlbWVudCgpIHx8IGVsZW1lbnQuaGFzRGlzcGxheUNvbnRlbnRzKCkpOworICAgIGJvb2wg
c2hvdWxkVGVhckRvd25SZW5kZXJlcnMgPSB1cGRhdGUuY2hhbmdlID09IFN0eWxlOjpEZXRhY2gg
JiYgKGVsZW1lbnQucmVuZGVyZXIoKSB8fCBlbGVtZW50Lmhhc0Rpc3BsYXlDb250ZW50cygpKTsK
ICAgICBpZiAoc2hvdWxkVGVhckRvd25SZW5kZXJlcnMpIHsKICAgICAgICAgaWYgKCFlbGVtZW50
LnJlbmRlcmVyKCkpIHsKICAgICAgICAgICAgIC8vIFdlIG1heSBiZSB0ZWFyaW5nIGRvd24gYSBk
ZXNjZW5kYW50IHJlbmRlcmVyIGNhY2hlZCBpbiByZW5kZXJUcmVlUG9zaXRpb24uCkBAIC0zNDgs
MjUgKzM0NSw5IEBAIHZvaWQgUmVuZGVyVHJlZVVwZGF0ZXI6OnVwZGF0ZUVsZW1lbnRSZW4KICAg
ICByZW5kZXJlci5zZXRTdHlsZShSZW5kZXJTdHlsZTo6Y2xvbmUoKnVwZGF0ZS5zdHlsZSksIFN0
eWxlRGlmZmVyZW5jZUVxdWFsKTsKIH0KIAotI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKLXN0YXRp
YyB2b2lkIHJlZ2lzdGVyRWxlbWVudEZvckZsb3dUaHJlYWRJZk5lZWRlZChFbGVtZW50JiBlbGVt
ZW50LCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCi17Ci0gICAgaWYgKCFlbGVtZW50LnNob3Vs
ZE1vdmVUb0Zsb3dUaHJlYWQoc3R5bGUpKQotICAgICAgICByZXR1cm47Ci0gICAgRmxvd1RocmVh
ZENvbnRyb2xsZXImIGZsb3dUaHJlYWRDb250cm9sbGVyID0gcmVuZGVyVmlldygpLmZsb3dUaHJl
YWRDb250cm9sbGVyKCk7Ci0gICAgZmxvd1RocmVhZENvbnRyb2xsZXIucmVnaXN0ZXJOYW1lZEZs
b3dDb250ZW50RWxlbWVudChlbGVtZW50LCBmbG93VGhyZWFkQ29udHJvbGxlci5lbnN1cmVSZW5k
ZXJGbG93VGhyZWFkV2l0aE5hbWUoc3R5bGUuZmxvd1RocmVhZCgpKSk7Ci19Ci0jZW5kaWYKLQog
dm9pZCBSZW5kZXJUcmVlVXBkYXRlcjo6Y3JlYXRlUmVuZGVyZXIoRWxlbWVudCYgZWxlbWVudCwg
UmVuZGVyU3R5bGUmJiBzdHlsZSkKIHsKLSAgICBhdXRvIGNvbXB1dGVJbnNlcnRpb25Qb3NpdGlv
biA9IFt0aGlzLCAmZWxlbWVudCwgJnN0eWxlXSAoKSB7Ci0jaWYgRU5BQkxFKENTU19SRUdJT05T
KQotICAgICAgICBpZiAoZWxlbWVudC5zaG91bGRNb3ZlVG9GbG93VGhyZWFkKHN0eWxlKSkKLSAg
ICAgICAgICAgIHJldHVybiBSZW5kZXJUcmVlUG9zaXRpb246Omluc2VydGlvblBvc2l0aW9uRm9y
Rmxvd1RocmVhZChyZW5kZXJUcmVlUG9zaXRpb24oKS5wYXJlbnQoKS5lbGVtZW50KCksIGVsZW1l
bnQsIHN0eWxlKTsKLSNlbHNlCi0gICAgICAgIFVOVVNFRF9QQVJBTShzdHlsZSk7Ci0jZW5kaWYK
KyAgICBhdXRvIGNvbXB1dGVJbnNlcnRpb25Qb3NpdGlvbiA9IFt0aGlzLCAmZWxlbWVudF0gKCkg
ewogICAgICAgICByZW5kZXJUcmVlUG9zaXRpb24oKS5jb21wdXRlTmV4dFNpYmxpbmcoZWxlbWVu
dCk7CiAgICAgICAgIHJldHVybiByZW5kZXJUcmVlUG9zaXRpb24oKTsKICAgICB9OwpAQCAtMzc0
LDExICszNTUsNiBAQCB2b2lkIFJlbmRlclRyZWVVcGRhdGVyOjpjcmVhdGVSZW5kZXJlcihFCiAg
ICAgaWYgKCFzaG91bGRDcmVhdGVSZW5kZXJlcihlbGVtZW50LCByZW5kZXJUcmVlUG9zaXRpb24o
KS5wYXJlbnQoKSkpCiAgICAgICAgIHJldHVybjsKIAotI2lmIEVOQUJMRShDU1NfUkVHSU9OUykK
LSAgICAvLyBFdmVuIGRpc3BsYXk6IG5vbmUgZWxlbWVudHMgbmVlZCB0byBiZSByZWdpc3RlcmVk
IGluIEZsb3dUaHJlYWRDb250cm9sbGVyLgotICAgIHJlZ2lzdGVyRWxlbWVudEZvckZsb3dUaHJl
YWRJZk5lZWRlZChlbGVtZW50LCBzdHlsZSk7Ci0jZW5kaWYKLQogICAgIGlmICghZWxlbWVudC5y
ZW5kZXJlcklzTmVlZGVkKHN0eWxlKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0zOTEsMTAgKzM2
Nyw2IEBAIHZvaWQgUmVuZGVyVHJlZVVwZGF0ZXI6OmNyZWF0ZVJlbmRlcmVyKEUKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIC8vIE1ha2Ugc3VyZSB0aGUgUmVuZGVyT2JqZWN0IGFscmVh
ZHkga25vd3MgaXQgaXMgZ29pbmcgdG8gYmUgYWRkZWQgdG8gYSBSZW5kZXJGbG93VGhyZWFkIGJl
Zm9yZSB3ZSBzZXQgdGhlIHN0eWxlCi0gICAgLy8gZm9yIHRoZSBmaXJzdCB0aW1lLiBPdGhlcndp
c2UgY29kZSB1c2luZyBpblJlbmRlckZsb3dUaHJlYWQoKSBpbiB0aGUgc3R5bGVXaWxsQ2hhbmdl
IGFuZCBzdHlsZURpZENoYW5nZSB3aWxsIGZhaWwuCi0gICAgbmV3UmVuZGVyZXItPnNldEZsb3dU
aHJlYWRTdGF0ZShpbnNlcnRpb25Qb3NpdGlvbi5wYXJlbnQoKS5mbG93VGhyZWFkU3RhdGUoKSk7
Ci0KICAgICBlbGVtZW50LnNldFJlbmRlcmVyKG5ld1JlbmRlcmVyKTsKIAogICAgIG5ld1JlbmRl
cmVyLT5pbml0aWFsaXplU3R5bGUoKTsKQEAgLTUwMyw5ICs0NzUsOSBAQCB2b2lkIFJlbmRlclRy
ZWVVcGRhdGVyOjppbnZhbGlkYXRlV2hpdGVzCiAgICAgICAgICAgICBpZiAobV9zdHlsZVVwZGF0
ZS0+ZWxlbWVudFVwZGF0ZShkb3duY2FzdDxFbGVtZW50Pigqc2libGluZykpKQogICAgICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgICAgIC8vIFRleHQgcmVuZGVyZXJzIGJleW9uZCByZW5k
ZXJlZCBlbGVtZW50cyBjYW4ndCBiZSBhZmZlY3RlZC4KLSAgICAgICAgICAgIGlmICghc2libGlu
Zy0+cmVuZGVyZXIoKSB8fCBSZW5kZXJUcmVlUG9zaXRpb246OmlzUmVuZGVyZXJSZXBhcmVudGVk
KCpzaWJsaW5nLT5yZW5kZXJlcigpKSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGlmIChzaWJsaW5nLT5yZW5kZXJlcigpKQorICAg
ICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAg
ICAgICAgIGlmICghaXM8VGV4dD4oKnNpYmxpbmcpKQogICAgICAgICAgICAgY29udGludWU7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9zdHlsZS9SZW5kZXJUcmVlVXBkYXRlckdlbmVyYXRlZENvbnRl
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N0eWxlL1JlbmRlclRyZWVVcGRh
dGVyR2VuZXJhdGVkQ29udGVudC5jcHAJKHJldmlzaW9uIDIyMjIwNCkKKysrIFNvdXJjZS9XZWJD
b3JlL3N0eWxlL1JlbmRlclRyZWVVcGRhdGVyR2VuZXJhdGVkQ29udGVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTgyLDkgKzgyLDYgQEAgdm9pZCBSZW5kZXJUcmVlVXBkYXRlcjo6R2VuZXJhdGVk
Q29udGVudAogc3RhdGljIHZvaWQgY3JlYXRlQ29udGVudFJlbmRlcmVycyhSZW5kZXJFbGVtZW50
JiByZW5kZXJlcikKIHsKICAgICBhdXRvJiBzdHlsZSA9IHJlbmRlcmVyLnN0eWxlKCk7Ci0gICAg
aWYgKHN0eWxlLmhhc0Zsb3dGcm9tKCkpCi0gICAgICAgIHJldHVybjsKLQogICAgIEFTU0VSVChz
dHlsZS5jb250ZW50RGF0YSgpKTsKIAogICAgIGZvciAoY29uc3QgQ29udGVudERhdGEqIGNvbnRl
bnQgPSBzdHlsZS5jb250ZW50RGF0YSgpOyBjb250ZW50OyBjb250ZW50ID0gY29udGVudC0+bmV4
dCgpKSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUNoYW5nZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVDaGFuZ2UuY3BwCShyZXZpc2lvbiAy
MjIyMDQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUNoYW5nZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQ4LDE3ICs0OCw2IEBAIENoYW5nZSBkZXRlcm1pbmVDaGFuZ2UoY29uc3QgUmVu
ZGVyU3R5bGUKICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NTUwNjkKICAgICBpZiAoczEuaGFzVGV4dENvbWJpbmUoKSAhPSBzMi5oYXNUZXh0Q29tYmluZSgp
KQogICAgICAgICByZXR1cm4gRGV0YWNoOwotICAgIC8vIFdlIG5lZWQgdG8gcmVhdHRhY2ggdGhl
IG5vZGUsIHNvIHRoYXQgaXQgaXMgbW92ZWQgdG8gdGhlIGNvcnJlY3QgUmVuZGVyRmxvd1RocmVh
ZC4KLSAgICBpZiAoczEuZmxvd1RocmVhZCgpICE9IHMyLmZsb3dUaHJlYWQoKSkKLSAgICAgICAg
cmV0dXJuIERldGFjaDsKLSAgICAvLyBXaGVuIHRoZSByZWdpb24gdGhyZWFkIGhhcyBjaGFuZ2Vk
LCB3ZSBuZWVkIHRvIHByZXBhcmUgYSBzZXBhcmF0ZSByZW5kZXIgcmVnaW9uIG9iamVjdC4KLSAg
ICBpZiAoczEucmVnaW9uVGhyZWFkKCkgIT0gczIucmVnaW9uVGhyZWFkKCkpCi0gICAgICAgIHJl
dHVybiBEZXRhY2g7Ci0gICAgLy8gRklYTUU6IE11bHRpY29sdW1uIHJlZ2lvbnMgbm90IHlldCBz
dXBwb3J0ZWQgKGh0dHA6Ly9kZXYudzMub3JnL2Nzc3dnL2Nzcy1yZWdpb25zLyNtdWx0aS1jb2x1
bW4tcmVnaW9ucykKLSAgICAvLyBXaGVuIHRoZSBub2RlIGhhcyByZWdpb24gc3R5bGUgYW5kIGNo
YW5nZWQgaXRzIG11bHRpY29sIHN0eWxlLCB3ZSBoYXZlIHRvIHByZXBhcmUKLSAgICAvLyBhIHNl
cGFyYXRlIHJlbmRlciByZWdpb24gb2JqZWN0LgotICAgIGlmIChzMS5oYXNGbG93RnJvbSgpICYm
IChzMS5zcGVjaWZpZXNDb2x1bW5zKCkgIT0gczIuc3BlY2lmaWVzQ29sdW1ucygpKSkKLSAgICAg
ICAgcmV0dXJuIERldGFjaDsKIAogICAgIGlmIChzMSAhPSBzMikgewogICAgICAgICBpZiAoczEu
aW5oZXJpdGVkTm90RXF1YWwoJnMyKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxl
VHJlZVJlc29sdmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHls
ZVRyZWVSZXNvbHZlci5jcHAJKHJldmlzaW9uIDIyMjIwNCkKKysrIFNvdXJjZS9XZWJDb3JlL3N0
eWxlL1N0eWxlVHJlZVJlc29sdmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI0LDcgKzEyNCw3
IEBAIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gVHJlZVJlc29sdmUKICAgICBpZiAoYXV0
byBzdHlsZSA9IHNjb3BlKCkuc2hhcmluZ1Jlc29sdmVyLnJlc29sdmUoZWxlbWVudCwgKm1fdXBk
YXRlKSkKICAgICAgICAgcmV0dXJuIHN0eWxlOwogCi0gICAgYXV0byBlbGVtZW50U3R5bGUgPSBz
Y29wZSgpLnN0eWxlUmVzb2x2ZXIuc3R5bGVGb3JFbGVtZW50KGVsZW1lbnQsICZpbmhlcml0ZWRT
dHlsZSwgcGFyZW50Qm94U3R5bGUoKSwgTWF0Y2hBbGxSdWxlcywgbnVsbHB0ciwgJnNjb3BlKCku
c2VsZWN0b3JGaWx0ZXIpOworICAgIGF1dG8gZWxlbWVudFN0eWxlID0gc2NvcGUoKS5zdHlsZVJl
c29sdmVyLnN0eWxlRm9yRWxlbWVudChlbGVtZW50LCAmaW5oZXJpdGVkU3R5bGUsIHBhcmVudEJv
eFN0eWxlKCksIE1hdGNoQWxsUnVsZXMsICZzY29wZSgpLnNlbGVjdG9yRmlsdGVyKTsKIAogICAg
IGlmIChlbGVtZW50U3R5bGUucmVsYXRpb25zKQogICAgICAgICBjb21taXRSZWxhdGlvbnMoV1RG
TW92ZShlbGVtZW50U3R5bGUucmVsYXRpb25zKSwgKm1fdXBkYXRlKTsKQEAgLTE2MiwxMCArMTYy
LDYgQEAgc3RhdGljIGJvb2wgYWZmZWN0c1JlbmRlcmVkU3VidHJlZShFbGVtZQogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICBpZiAoZWxlbWVudC5yZW5kZXJlcklzTmVlZGVkKG5ld1N0eWxlKSkK
ICAgICAgICAgcmV0dXJuIHRydWU7Ci0jaWYgRU5BQkxFKENTU19SRUdJT05TKQotICAgIGlmIChl
bGVtZW50LnNob3VsZE1vdmVUb0Zsb3dUaHJlYWQobmV3U3R5bGUpKQotICAgICAgICByZXR1cm4g
dHJ1ZTsKLSNlbmRpZgogICAgIHJldHVybiBmYWxzZTsKIH0KIApJbmRleDogU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdFbGVtZW50LmNwcAkocmV2aXNpb24gMjIyMjA0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01ODksMTQgKzU4OSw2IEBAIHN0YXRpYyBi
b29sIGhhc0xvYWRMaXN0ZW5lcihFbGVtZW50KiBlbGUKICAgICByZXR1cm4gZmFsc2U7CiB9CiAK
LSNpZiBFTkFCTEUoQ1NTX1JFR0lPTlMpCi1ib29sIFNWR0VsZW1lbnQ6OnNob3VsZE1vdmVUb0Zs
b3dUaHJlYWQoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlVG9Vc2UpIGNvbnN0Ci17Ci0gICAgLy8g
QWxsb3cgb25seSBzdmcgcm9vdCBlbGVtZW50cyB0byBiZSBkaXJlY3RseSBjb2xsZWN0ZWQgYnkg
YSByZW5kZXIgZmxvdyB0aHJlYWQuCi0gICAgcmV0dXJuIHBhcmVudE5vZGUoKSAmJiAhcGFyZW50
Tm9kZSgpLT5pc1NWR0VsZW1lbnQoKSAmJiBoYXNUYWdOYW1lKFNWR05hbWVzOjpzdmdUYWcpICYm
IEVsZW1lbnQ6OnNob3VsZE1vdmVUb0Zsb3dUaHJlYWQoc3R5bGVUb1VzZSk7Ci19Ci0jZW5kaWYK
LQogdm9pZCBTVkdFbGVtZW50OjpzZW5kU1ZHTG9hZEV2ZW50SWZQb3NzaWJsZShib29sIHNlbmRQ
YXJlbnRMb2FkRXZlbnRzKQogewogICAgIGlmICghaXNDb25uZWN0ZWQoKSB8fCAhZG9jdW1lbnQo
KS5mcmFtZSgpKQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oCShyZXZpc2lvbiAyMjIyMDQp
CisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
MzEsMTAgKzEzMSw2IEBAIHB1YmxpYzoKICAgICBib29sIHJlbW92ZUV2ZW50TGlzdGVuZXIoY29u
c3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXImLCBjb25zdCBMaXN0ZW5l
ck9wdGlvbnMmKSBvdmVycmlkZTsKICAgICBib29sIGhhc0ZvY3VzRXZlbnRMaXN0ZW5lcnMoKSBj
b25zdDsKIAotI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKLSAgICBib29sIHNob3VsZE1vdmVUb0Zs
b3dUaHJlYWQoY29uc3QgUmVuZGVyU3R5bGUmKSBjb25zdCBvdmVycmlkZTsKLSNlbmRpZgotCiAg
ICAgYm9vbCBoYXNUYWdOYW1lKGNvbnN0IFNWR1F1YWxpZmllZE5hbWUmIG5hbWUpIGNvbnN0IHsg
cmV0dXJuIGhhc0xvY2FsTmFtZShuYW1lLmxvY2FsTmFtZSgpKTsgfQogICAgIGludCB0YWJJbmRl
eCgpIGNvbnN0IG92ZXJyaWRlOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>321299</attachid>
            <date>2017-09-20 00:54:56 -0700</date>
            <delta_ts>2017-09-20 01:55:14 -0700</delta_ts>
            <desc>patch</desc>
            <filename>named-flow-removal-dom-etc-6.patch</filename>
            <type>text/plain</type>
            <size>223634</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMjI1NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIyNCBAQAorMjAxNy0wOS0xOSAgQW50dGkg
S29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIERPTSBhbmQgc3R5
bGluZyBzdXBwb3J0IGZvciBDU1MgUmVnaW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc3MjIxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCByZW1vdmVzIGFsbCBDU1MgUmVnaW9ucyAo
YWthICJuYW1lZCBmbG93IikgcmVsYXRlZCBjb2RlIGV4Y2x1ZGluZyByZW5kZXJpbmcuCisKKyAg
ICAgICAgVGhlIGZlYXR1cmUgaXMgYWxyZWFkeSBkaXNhYmxlZCBzbyBubyBmdW5jdGlvbmFsIGNo
YW5nZXMuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBDb25maWd1cmF0
aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZzoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5t
YWtlOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU0NTU1J1bGVDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
dG9KU05ld2x5Q3JlYXRlZCk6CisgICAgICAgICogY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJh
dGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb250ZW50VG9DU1NWYWx1ZSk6CisgICAgICAg
IChXZWJDb3JlOjpDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0eVZhbHVlKToKKyAgICAg
ICAgKFdlYkNvcmU6OmNvbnZlcnRUb1JlZ2lvbkJyZWFrKTogRGVsZXRlZC4KKyAgICAgICAgKiBj
c3MvQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJp
bWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1By
aW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBCcmVha0JldHdlZW4gY29uc3QpOgorICAgICAgICAqIGNz
cy9DU1NQcm9wZXJ0aWVzLmpzb246CisgICAgICAgICogY3NzL0NTU1J1bGUuY3BwOgorICAgICAg
ICAqIGNzcy9DU1NSdWxlLmg6CisgICAgICAgICogY3NzL0NTU1J1bGUuaWRsOgorICAgICAgICAq
IGNzcy9FbGVtZW50UnVsZUNvbGxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50
UnVsZUNvbGxlY3Rvcjo6bWF0Y2hBdXRob3JSdWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpFbGVt
ZW50UnVsZUNvbGxlY3Rvcjo6bWF0Y2hVc2VyUnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6RWxl
bWVudFJ1bGVDb2xsZWN0b3I6OmNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yUmVnaW9uKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBjc3MvRWxlbWVudFJ1bGVDb2xsZWN0b3IuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkVsZW1lbnRSdWxlQ29sbGVjdG9yOjpzZXRTYW1lT3JpZ2luT25seSk6CisgICAgICAgIChX
ZWJDb3JlOjpFbGVtZW50UnVsZUNvbGxlY3Rvcjo6c2V0UmVnaW9uRm9yU3R5bGluZyk6IERlbGV0
ZWQuCisgICAgICAgICogY3NzL0luc3BlY3RvckNTU09NV3JhcHBlcnMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yQ1NTT01XcmFwcGVyczo6Y29sbGVjdCk6CisgICAgICAgICogY3Nz
L1J1bGVTZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZGV0ZXJtaW5lUHJvcGVydHlXaGl0ZWxp
c3RUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bGVEYXRhOjpSdWxlRGF0YSk6CisgICAgICAg
IChXZWJDb3JlOjpSdWxlU2V0OjphZGRDaGlsZFJ1bGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1
bGVTZXQ6OnNocmlua1RvRml0KToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bGVTZXQ6OmFkZFJlZ2lv
blJ1bGUpOiBEZWxldGVkLgorICAgICAgICAqIGNzcy9SdWxlU2V0Lmg6CisgICAgICAgIChXZWJD
b3JlOjpSdWxlU2V0OjogY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UnVsZVNldDo6cmVnaW9u
U2VsZWN0b3JzQW5kUnVsZVNldHMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGNzcy9TdHls
ZUJ1aWxkZXJDb252ZXJ0ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlckNvbnZl
cnRlcjo6Y29udmVydFJlZ2lvbkJyZWFrQmV0d2Vlbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRSZWdpb25CcmVha0luc2lkZSk6IERl
bGV0ZWQuCisgICAgICAgICogY3NzL1N0eWxlUHJvcGVydGllcy5jcHA6CisgICAgICAgICogY3Nz
L1N0eWxlUmVzb2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6U3Rh
dGU6OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OlN0YXRlOjpTdGF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpzdHlsZUZvckVsZW1lbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6Q2FzY2FkZWRQcm9wZXJ0aWVzOjphZGRN
YXRjaCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpjaGVja1JlZ2lvblN0eWxl
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmlzVmFsaWRSZWdpb25TdHlsZVByb3BlcnR5
KTogRGVsZXRlZC4KKyAgICAgICAgKiBjc3MvU3R5bGVSZXNvbHZlci5oOgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGVSZXNvbHZlcjo6U3RhdGU6OnJlZ2lvbkZvclN0eWxpbmcgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6Y2hlY2tSZWdpb25TZWxlY3Rvcik6IERlbGV0ZWQuCisg
ICAgICAgICogY3NzL1N0eWxlUnVsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJ1bGVC
YXNlOjpkZXN0cm95KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUnVsZUJhc2U6OmNvcHkgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSdWxlQmFzZTo6Y3JlYXRlQ1NTT01XcmFwcGVy
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUnVsZVJlZ2lvbjo6U3R5bGVSdWxlUmVn
aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBjc3MvU3R5bGVSdWxlLmg6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZVJ1bGVCYXNlOjppc1N0eWxlUnVsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZVJ1bGVCYXNlOjppc1JlZ2lvblJ1bGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAq
IGNzcy9TdHlsZVNoZWV0Q29udGVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dHJhdmVyc2VT
dWJyZXNvdXJjZXNJblJ1bGVzKToKKyAgICAgICAgKiBjc3MvV2ViS2l0Q1NTUmVnaW9uUnVsZS5j
cHA6IFJlbW92ZWQuCisgICAgICAgICogY3NzL1dlYktpdENTU1JlZ2lvblJ1bGUuaDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBjc3MvV2ViS2l0Q1NTUmVnaW9uUnVsZS5pZGw6IFJlbW92ZWQuCisgICAg
ICAgICogY3NzL3BhcnNlci9DU1NBdFJ1bGVJRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjc3NB
dFJ1bGVJRCk6CisgICAgICAgICogY3NzL3BhcnNlci9DU1NBdFJ1bGVJRC5oOgorICAgICAgICAq
IGNzcy9wYXJzZXIvQ1NTUGFyc2VyRmFzdFBhdGhzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNT
U1BhcnNlckZhc3RQYXRoczo6aXNWYWxpZEtleXdvcmRQcm9wZXJ0eUFuZFZhbHVlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1BhcnNlckZhc3RQYXRoczo6aXNLZXl3b3JkUHJvcGVydHlJRCk6Cisg
ICAgICAgICogY3NzL3BhcnNlci9DU1NQYXJzZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1BhcnNlckltcGw6OmNvbnN1bWVBdFJ1bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFy
c2VySW1wbDo6Y29uc3VtZVJlZ2lvblJ1bGUpOiBEZWxldGVkLgorICAgICAgICAqIGNzcy9wYXJz
ZXIvQ1NTUGFyc2VySW1wbC5oOgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJz
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNMZWdhY3lCcmVha1Byb3BlcnR5KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VyOjpwYXJzZVNpbmdsZVZhbHVlKToKKyAgICAg
ICAgKFdlYkNvcmU6Om1hcEZyb21MZWdhY3lCcmVha1Byb3BlcnR5KToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1Byb3BlcnR5UGFyc2VyOjpjb25zdW1lTGVnYWN5QnJlYWtQcm9wZXJ0eSk6CisgICAg
ICAgIChXZWJDb3JlOjpjb25zdW1lRmxvd1Byb3BlcnR5KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6Om1hcEZyb21SZWdpb25CcmVha0JldHdlZW4pOiBEZWxldGVkLgorICAgICAgICAqIGRv
bS9Db250YWluZXJOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRlc3Ryb3lSZW5kZXJUcmVl
SWZOZWVkZWQpOgorICAgICAgICAqIGRvbS9ET01OYW1lZEZsb3dDb2xsZWN0aW9uLmNwcDogUmVt
b3ZlZC4KKyAgICAgICAgKiBkb20vRE9NTmFtZWRGbG93Q29sbGVjdGlvbi5oOiBSZW1vdmVkLgor
ICAgICAgICAqIGRvbS9ET01OYW1lZEZsb3dDb2xsZWN0aW9uLmlkbDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnVwZGF0
ZUxheW91dElmRGltZW5zaW9uc091dE9mRGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dDo6d2Via2l0R2V0TmFtZWRGbG93cyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudDo6bmFtZWRGbG93cyk6IERlbGV0ZWQuCisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6Cisg
ICAgICAgICogZG9tL0RvY3VtZW50LmlkbDoKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojp+RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpF
bGVtZW50OjpjbGVhclN0eWxlRGVyaXZlZERhdGFCZWZvcmVEZXRhY2hpbmdSZW5kZXJlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojp1bnJlZ2lzdGVyTmFtZWRGbG93Q29udGVudEVsZW1l
bnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c2V0SXNOYW1lZEZsb3dD
b250ZW50RWxlbWVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpjbGVh
cklzTmFtZWRGbG93Q29udGVudEVsZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
RWxlbWVudDo6cmFyZURhdGFJc05hbWVkRmxvd0NvbnRlbnRFbGVtZW50IGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNldFJlZ2lvbk92ZXJzZXRTdGF0ZSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpyZWdpb25PdmVyc2V0U3RhdGUgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6cmVuZGVyTmFtZWRGbG93
RnJhZ21lbnQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c2hv
dWxkTW92ZVRvRmxvd1RocmVhZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpF
bGVtZW50Ojp3ZWJraXRSZWdpb25PdmVyc2V0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkVsZW1lbnQ6OndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojpp
c05hbWVkRmxvd0NvbnRlbnRFbGVtZW50IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBkb20v
RWxlbWVudC5pZGw6CisgICAgICAgICogZG9tL0VsZW1lbnRSYXJlRGF0YS5jcHA6CisgICAgICAg
ICogZG9tL0VsZW1lbnRSYXJlRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFJhcmVE
YXRhOjpFbGVtZW50UmFyZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFJhcmVEYXRh
OjpyZWdpb25PdmVyc2V0U3RhdGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
RWxlbWVudFJhcmVEYXRhOjpzZXRSZWdpb25PdmVyc2V0U3RhdGUpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6RWxlbWVudFJhcmVEYXRhOjppc05hbWVkRmxvd0NvbnRlbnRFbGVtZW50IGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRSYXJlRGF0YTo6c2V0SXNO
YW1lZEZsb3dDb250ZW50RWxlbWVudCk6IERlbGV0ZWQuCisgICAgICAgICogZG9tL0V2ZW50VGFy
Z2V0RmFjdG9yeS5pbjoKKyAgICAgICAgKiBkb20vTmFtZWRGbG93Q29sbGVjdGlvbi5jcHA6IFJl
bW92ZWQuCisgICAgICAgICogZG9tL05hbWVkRmxvd0NvbGxlY3Rpb24uaDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBkb20vUHNldWRvRWxlbWVudC5oOgorICAgICAgICAqIGRvbS9XZWJLaXROYW1lZEZs
b3cuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIGRvbS9XZWJLaXROYW1lZEZsb3cuaDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBkb20vV2ViS2l0TmFtZWRGbG93LmlkbDogUmVtb3ZlZC4KKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yQ1NTQWdlbnQ6OnJlc2V0Tm9uUGVyc2lzdGVudERhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2hhbmdlUmVnaW9uT3ZlcnNldFRhc2s6OkNoYW5nZVJlZ2lvbk92ZXJzZXRUYXNrKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNoYW5nZVJlZ2lvbk92ZXJzZXRUYXNrOjpzY2hlZHVs
ZUZvcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDaGFuZ2VSZWdpb25PdmVyc2V0VGFz
azo6dW5zY2hlZHVsZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDaGFuZ2VSZWdpb25P
dmVyc2V0VGFzazo6cmVzZXQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q2hhbmdlUmVn
aW9uT3ZlcnNldFRhc2s6OnRpbWVyRmlyZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yQ1NTQWdlbnQ6OmRpZENyZWF0ZU5hbWVkRmxvdyk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6d2lsbFJlbW92ZU5hbWVkRmxvdyk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6ZGlkQ2hhbmdlUmVnaW9u
T3ZlcnNldCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6
cmVnaW9uT3ZlcnNldENoYW5nZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yQ1NTQWdlbnQ6OmRpZFJlZ2lzdGVyTmFtZWRGbG93Q29udGVudEVsZW1lbnQpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmRpZFVucmVnaXN0ZXJOYW1l
ZEZsb3dDb250ZW50RWxlbWVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JDU1NBZ2VudDo6Z2V0TmFtZWRGbG93Q29sbGVjdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6ZG9jdW1lbnROb2RlV2l0aFJlcXVlc3RlZEZsb3dz
SWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmJ1aWxk
QXJyYXlGb3JSZWdpb25zKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNT
U0FnZW50OjpidWlsZE9iamVjdEZvck5hbWVkRmxvdyk6IERlbGV0ZWQuCisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3RvckNTU0FnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rv
ckluc3RydW1lbnRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmRpZENyZWF0ZU5hbWVkRmxvd0ltcGwpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUmVtb3ZlTmFtZWRGbG93SW1wbCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRp
ZENoYW5nZVJlZ2lvbk92ZXJzZXRJbXBsKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVnaXN0ZXJOYW1lZEZsb3dDb250ZW50RWxlbWVu
dEltcGwpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpkaWRVbnJlZ2lzdGVyTmFtZWRGbG93Q29udGVudEVsZW1lbnRJbXBsKTogRGVsZXRlZC4K
KyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpidWlsZFJlbmRlcmVySGlnaGxpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OmJ1aWxkT2Jq
ZWN0Rm9yRWxlbWVudERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRPYmplY3RGb3JSZWdp
b24pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRPYmplY3RGb3JGbG93UmVnaW9u
cyk6IERlbGV0ZWQuCisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6aGFuZGxlV2hlZWxFdmVudEluQXBwcm9wcmlhdGVFbmNsb3NpbmdCb3gpOgorICAg
ICAgICAqIHJlbmRlcmluZy9GbG93VGhyZWFkQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGbG93VGhyZWFkQ29udHJvbGxlcjo6ZW5zdXJlUmVuZGVyRmxvd1RocmVhZFdpdGhOYW1l
KTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvRmxvd1RocmVhZENvbnRyb2xsZXIuaDoK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVnaW9uT3ZlcnNldFN0YXRlLmg6IFJlbW92ZWQuCisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJCbG9ja0Zsb3c6OmFwcGx5QmVmb3JlQnJlYWspOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyQmxvY2tGbG93OjphcHBseUFmdGVyQnJlYWspOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJOYW1lZEZsb3dGcmFnbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJOYW1lZEZs
b3dGcmFnbWVudDo6Z2V0UmFuZ2VzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck5h
bWVkRmxvd0ZyYWdtZW50OjpsYXlvdXRCbG9jayk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJO
YW1lZEZsb3dGcmFnbWVudDo6Y2hlY2tSZWdpb25TdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJOYW1lZEZsb3dGcmFnbWVudDo6Y29tcHV0ZVN0eWxlSW5SZWdpb24gY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTmFtZWRGbG93RnJhZ21lbnQ6OnNldFJlZ2lvbk9iamVjdHNS
ZWdpb25TdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJOYW1lZEZsb3dGcmFnbWVudDo6
c2V0UmVnaW9uT3ZlcnNldFN0YXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ck5hbWVkRmxvd0ZyYWdtZW50OjpyZWdpb25PdmVyc2V0U3RhdGUgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTmFtZWRGbG93RnJhZ21lbnQ6OnVwZGF0ZU92ZXJzZXRT
dGF0ZSk6IERlbGV0ZWQuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd0ZyYWdt
ZW50Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd1RocmVhZC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6OlJlbmRlck5hbWVkRmxvd1Ro
cmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6OmNsZWFyQ29u
dGVudEVsZW1lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck5hbWVkRmxvd1RocmVhZDo6
cmVnaXN0ZXJOYW1lZEZsb3dDb250ZW50RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJOYW1lZEZsb3dUaHJlYWQ6OnVucmVnaXN0ZXJOYW1lZEZsb3dDb250ZW50RWxlbWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6Omhhc0NvbnRlbnRFbGVtZW50
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck5hbWVkRmxvd1RocmVhZDo6Zmxvd1Ro
cmVhZE5hbWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTmFtZWRGbG93VGhyZWFk
OjpkaXNwYXRjaFJlZ2lvbk92ZXJzZXRDaGFuZ2VFdmVudElmTmVlZGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlck5hbWVkRmxvd1RocmVhZDo6cmVnaW9uT3ZlcnNldENoYW5nZUV2ZW50VGlt
ZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6OnNldE1h
cmtGb3JEZXN0cnVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJOYW1lZEZsb3dUaHJl
YWQ6OnJlc2V0TWFya0ZvckRlc3RydWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck5h
bWVkRmxvd1RocmVhZDo6aXNNYXJrZWRGb3JEZXN0cnVjdGlvbiBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpuZXh0Tm9kZUluc2lkZUNvbnRlbnRFbGVtZW50KToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyTmFtZWRGbG93VGhyZWFkLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclJl
Z2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJSZWdpb246Omluc3RhbGxGbG93VGhy
ZWFkKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuaDoK
KyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvV2lsbENoYW5nZURhdGEuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V2lsbENoYW5nZURhdGE6OnByb3BlcnR5Q3JlYXRlc1N0YWNraW5nQ29udGV4dCk6
CisgICAgICAgICogc3R5bGUvUmVuZGVyVHJlZVBvc2l0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclRyZWVQb3NpdGlvbjo6cHJldmlvdXNTaWJsaW5nUmVuZGVyZXIgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVHJlZVBvc2l0aW9uOjpuZXh0U2libGluZ1JlbmRlcmVy
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRyZWVQb3NpdGlvbjo6aW5zZXJ0aW9u
UG9zaXRpb25Gb3JGbG93VGhyZWFkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clRyZWVQb3NpdGlvbjo6aXNSZW5kZXJlclJlcGFyZW50ZWQpOiBEZWxldGVkLgorICAgICAgICAq
IHN0eWxlL1JlbmRlclRyZWVQb3NpdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVHJl
ZVBvc2l0aW9uOjpSZW5kZXJUcmVlUG9zaXRpb24pOgorICAgICAgICAqIHN0eWxlL1JlbmRlclRy
ZWVVcGRhdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRyZWVVcGRhdGVyOjp1cGRh
dGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVHJlZVVwZGF0ZXI6
OmNyZWF0ZVJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRyZWVVcGRhdGVyOjpp
bnZhbGlkYXRlV2hpdGVzcGFjZU9ubHlUZXh0U2libGluZ3NBZnRlckF0dGFjaElmTmVlZGVkKToK
KyAgICAgICAgKFdlYkNvcmU6OnJlZ2lzdGVyRWxlbWVudEZvckZsb3dUaHJlYWRJZk5lZWRlZCk6
IERlbGV0ZWQuCisgICAgICAgICogc3R5bGUvUmVuZGVyVHJlZVVwZGF0ZXJHZW5lcmF0ZWRDb250
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUNvbnRlbnRSZW5kZXJlcnMpOgorICAg
ICAgICAqIHN0eWxlL1N0eWxlQ2hhbmdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpk
ZXRlcm1pbmVDaGFuZ2UpOgorICAgICAgICAqIHN0eWxlL1N0eWxlVHJlZVJlc29sdmVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpUcmVlUmVzb2x2ZXI6OnN0eWxlRm9yRWxlbWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6YWZmZWN0c1JlbmRlcmVkU3VidHJlZSk6CisgICAg
ICAgICogc3ZnL1NWR0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6
c2hvdWxkTW92ZVRvRmxvd1RocmVhZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogc3ZnL1NW
R0VsZW1lbnQuaDoKKwogMjAxNy0wOS0xOSAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9y
Zz4KIAogICAgICAgICBPbiBNYWMsIGRhdGFUcmFuc2ZlciBjbGFpbXMgdG8gY29udGFpbiBVUkwg
bGlzdCB3aGVuIGRyb3BwaW5nIGZpbGVzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3Rz
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNp
b24gMjIyMjU3KQorKysgU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29w
eSkKQEAgLTQ4OCw3ICs0ODgsNiBAQCBzZXQoV2ViQ29yZV9OT05fU1ZHX0lETF9GSUxFUwogICAg
IGNzcy9TdHlsZVNoZWV0LmlkbAogICAgIGNzcy9TdHlsZVNoZWV0TGlzdC5pZGwKICAgICBjc3Mv
V2ViS2l0Q1NTTWF0cml4LmlkbAotICAgIGNzcy9XZWJLaXRDU1NSZWdpb25SdWxlLmlkbAogICAg
IGNzcy9XZWJLaXRDU1NWaWV3cG9ydFJ1bGUuaWRsCiAKICAgICBkb20vQW5pbWF0aW9uRXZlbnQu
aWRsCkBAIC01MDYsNyArNTA1LDYgQEAgc2V0KFdlYkNvcmVfTk9OX1NWR19JRExfRklMRVMKICAg
ICBkb20vRE9NRXJyb3IuaWRsCiAgICAgZG9tL0RPTUV4Y2VwdGlvbi5pZGwKICAgICBkb20vRE9N
SW1wbGVtZW50YXRpb24uaWRsCi0gICAgZG9tL0RPTU5hbWVkRmxvd0NvbGxlY3Rpb24uaWRsCiAg
ICAgZG9tL0RPTVBvaW50LmlkbAogICAgIGRvbS9ET01Qb2ludEluaXQuaWRsCiAgICAgZG9tL0RP
TVBvaW50UmVhZE9ubHkuaWRsCkBAIC01ODMsNyArNTgxLDYgQEAgc2V0KFdlYkNvcmVfTk9OX1NW
R19JRExfRklMRVMKICAgICBkb20vVUlFdmVudC5pZGwKICAgICBkb20vVUlFdmVudEluaXQuaWRs
CiAgICAgZG9tL1dlYktpdEFuaW1hdGlvbkV2ZW50LmlkbAotICAgIGRvbS9XZWJLaXROYW1lZEZs
b3cuaWRsCiAgICAgZG9tL1dlYktpdFRyYW5zaXRpb25FdmVudC5pZGwKICAgICBkb20vV2hlZWxF
dmVudC5pZGwKICAgICBkb20vWE1MRG9jdW1lbnQuaWRsCkBAIC0xNTYxLDcgKzE1NTgsNiBAQCBz
ZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgY3NzL1RyYW5zZm9ybUZ1bmN0aW9ucy5jcHAKICAgICBj
c3MvVmlld3BvcnRTdHlsZVJlc29sdmVyLmNwcAogICAgIGNzcy9XZWJLaXRDU1NNYXRyaXguY3Bw
Ci0gICAgY3NzL1dlYktpdENTU1JlZ2lvblJ1bGUuY3BwCiAgICAgY3NzL1dlYktpdENTU1ZpZXdw
b3J0UnVsZS5jcHAKIAogICAgIGNzcy9wYXJzZXIvQ1NTQXRSdWxlSUQuY3BwCkBAIC0xNjE1LDcg
KzE2MTEsNiBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgZG9tL0RPTUVycm9yLmNwcAogICAg
IGRvbS9ET01FeGNlcHRpb24uY3BwCiAgICAgZG9tL0RPTUltcGxlbWVudGF0aW9uLmNwcAotICAg
IGRvbS9ET01OYW1lZEZsb3dDb2xsZWN0aW9uLmNwcAogICAgIGRvbS9ET01Qb2ludFJlYWRPbmx5
LmNwcAogICAgIGRvbS9ET01RdWFkLmNwcAogICAgIGRvbS9ET01SZWN0TGlzdC5jcHAKQEAgLTE2
NzcsNyArMTY3Miw2IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBkb20vTXV0YXRpb25PYnNl
cnZlclJlZ2lzdHJhdGlvbi5jcHAKICAgICBkb20vTXV0YXRpb25SZWNvcmQuY3BwCiAgICAgZG9t
L05hbWVOb2RlTGlzdC5jcHAKLSAgICBkb20vTmFtZWRGbG93Q29sbGVjdGlvbi5jcHAKICAgICBk
b20vTmFtZWROb2RlTWFwLmNwcAogICAgIGRvbS9OYXRpdmVOb2RlRmlsdGVyLmNwcAogICAgIGRv
bS9Ob2RlLmNwcApAQCAtMTc0MCw3ICsxNzM0LDYgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAg
IGRvbS9WaWV3cG9ydEFyZ3VtZW50cy5jcHAKICAgICBkb20vVmlzaXRlZExpbmtTdGF0ZS5jcHAK
ICAgICBkb20vV2ViS2l0QW5pbWF0aW9uRXZlbnQuY3BwCi0gICAgZG9tL1dlYktpdE5hbWVkRmxv
dy5jcHAKICAgICBkb20vV2ViS2l0VHJhbnNpdGlvbkV2ZW50LmNwcAogICAgIGRvbS9XaGVlbEV2
ZW50LmNwcAogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMuY3BwCShyZXZpc2lvbiAyMjIy
NTcpCisrKyBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE1OSw3ICsxNTksNiBAQAogI2luY2x1ZGUgIkpTRE9NSW1wbGVtZW50YXRpb24uY3BwIgog
I2luY2x1ZGUgIkpTRE9NTWltZVR5cGUuY3BwIgogI2luY2x1ZGUgIkpTRE9NTWltZVR5cGVBcnJh
eS5jcHAiCi0jaW5jbHVkZSAiSlNET01OYW1lZEZsb3dDb2xsZWN0aW9uLmNwcCIKICNpbmNsdWRl
ICJKU0RPTVBhcnNlci5jcHAiCiAjaW5jbHVkZSAiSlNET01QbHVnaW4uY3BwIgogI2luY2x1ZGUg
IkpTRE9NUGx1Z2luQXJyYXkuY3BwIgpAQCAtNjE3LDcgKzYxNiw2IEBACiAjaW5jbHVkZSAiSlNX
YXZlU2hhcGVyTm9kZS5jcHAiCiAjaW5jbHVkZSAiSlNXZWJLaXRBbmltYXRpb25FdmVudC5jcHAi
CiAjaW5jbHVkZSAiSlNXZWJLaXRDU1NNYXRyaXguY3BwIgotI2luY2x1ZGUgIkpTV2ViS2l0Q1NT
UmVnaW9uUnVsZS5jcHAiCiAjaW5jbHVkZSAiSlNXZWJLaXRDU1NWaWV3cG9ydFJ1bGUuY3BwIgog
I2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQogI2luY2x1ZGUgIkpTV2ViS2l0TWVk
aWFLZXlFcnJvci5jcHAiCkBAIC02MjYsNyArNjI0LDYgQEAKICNpbmNsdWRlICJKU1dlYktpdE1l
ZGlhS2V5U2Vzc2lvbi5jcHAiCiAjaW5jbHVkZSAiSlNXZWJLaXRNZWRpYUtleXMuY3BwIgogI2Vu
ZGlmCi0jaW5jbHVkZSAiSlNXZWJLaXROYW1lZEZsb3cuY3BwIgogI2luY2x1ZGUgIkpTV2ViS2l0
UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlFdmVudC5jcHAiCiAjaW5jbHVkZSAiSlNXZWJLaXRQ
b2ludC5jcHAiCiAjaW5jbHVkZSAiSlNXZWJLaXRUcmFuc2l0aW9uRXZlbnQuY3BwIgpJbmRleDog
U291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCShyZXZpc2lvbiAyMjIyNTcpCisrKyBTb3VyY2Uv
V2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCSh3b3JraW5nIGNvcHkpCkBAIC00MDYsNyArNDA2
LDYgQEAgSlNfQklORElOR19JRExTID0gXAogICAgICQoV2ViQ29yZSkvY3NzL1N0eWxlU2hlZXQu
aWRsIFwKICAgICAkKFdlYkNvcmUpL2Nzcy9TdHlsZVNoZWV0TGlzdC5pZGwgXAogICAgICQoV2Vi
Q29yZSkvY3NzL1dlYktpdENTU01hdHJpeC5pZGwgXAotICAgICQoV2ViQ29yZSkvY3NzL1dlYktp
dENTU1JlZ2lvblJ1bGUuaWRsIFwKICAgICAkKFdlYkNvcmUpL2Nzcy9XZWJLaXRDU1NWaWV3cG9y
dFJ1bGUuaWRsIFwKICAgICAkKFdlYkNvcmUpL2RvbS9BbmltYXRpb25FdmVudC5pZGwgXAogICAg
ICQoV2ViQ29yZSkvZG9tL0F0dHIuaWRsIFwKQEAgLTQyMyw3ICs0MjIsNiBAQCBKU19CSU5ESU5H
X0lETFMgPSBcCiAgICAgJChXZWJDb3JlKS9kb20vRE9NRXJyb3IuaWRsIFwKICAgICAkKFdlYkNv
cmUpL2RvbS9ET01FeGNlcHRpb24uaWRsIFwKICAgICAkKFdlYkNvcmUpL2RvbS9ET01JbXBsZW1l
bnRhdGlvbi5pZGwgXAotICAgICQoV2ViQ29yZSkvZG9tL0RPTU5hbWVkRmxvd0NvbGxlY3Rpb24u
aWRsIFwKICAgICAkKFdlYkNvcmUpL2RvbS9ET01Qb2ludC5pZGwgXAogICAgICQoV2ViQ29yZSkv
ZG9tL0RPTVBvaW50SW5pdC5pZGwgXAogICAgICQoV2ViQ29yZSkvZG9tL0RPTVBvaW50UmVhZE9u
bHkuaWRsIFwKQEAgLTQ5Nyw3ICs0OTUsNiBAQCBKU19CSU5ESU5HX0lETFMgPSBcCiAgICAgJChX
ZWJDb3JlKS9kb20vVUlFdmVudC5pZGwgXAogICAgICQoV2ViQ29yZSkvZG9tL1VJRXZlbnRJbml0
LmlkbCBcCiAgICAgJChXZWJDb3JlKS9kb20vV2ViS2l0QW5pbWF0aW9uRXZlbnQuaWRsIFwKLSAg
ICAkKFdlYkNvcmUpL2RvbS9XZWJLaXROYW1lZEZsb3cuaWRsIFwKICAgICAkKFdlYkNvcmUpL2Rv
bS9XZWJLaXRUcmFuc2l0aW9uRXZlbnQuaWRsIFwKICAgICAkKFdlYkNvcmUpL2RvbS9XaGVlbEV2
ZW50LmlkbCBcCiAgICAgJChXZWJDb3JlKS9kb20vWE1MRG9jdW1lbnQuaWRsIFwKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhj
Y29uZmlnCShyZXZpc2lvbiAyMjIyNTcpCisrKyBTb3VyY2UvV2ViQ29yZS9Db25maWd1cmF0aW9u
cy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwkod29ya2luZyBjb3B5KQpAQCAtNzgsNyArNzgsNiBA
QCBFTkFCTEVfQ1NTX0NPTVBPU0lUSU5HID0gRU5BQkxFX0NTU19DT01QCiBFTkFCTEVfQ1NTX0RF
VklDRV9BREFQVEFUSU9OID0gOwogRU5BQkxFX0NTU19JTUFHRV9PUklFTlRBVElPTiA9IDsKIEVO
QUJMRV9DU1NfSU1BR0VfUkVTT0xVVElPTiA9IDsKLUVOQUJMRV9DU1NfUkVHSU9OUyA9IDsKIEVO
QUJMRV9DU1NfU0VMRUNUT1JTX0xFVkVMNCA9IEVOQUJMRV9DU1NfU0VMRUNUT1JTX0xFVkVMNDsK
IEVOQUJMRV9DU1MzX1RFWFQgPSA7CiBFTkFCTEVfQ1VSU09SX1ZJU0lCSUxJVFkgPSBFTkFCTEVf
Q1VSU09SX1ZJU0lCSUxJVFk7CkBAIC0yNDMsNCArMjQyLDQgQEAgRU5BQkxFX0RBVEFfSU5URVJB
Q1RJT05faXBob25lc2ltdWxhdG9yIAogRU5BQkxFX0RBVEFfSU5URVJBQ1RJT05bc2RrPWlwaG9u
ZW9zMTAqXSA9IDsKIEVOQUJMRV9EQVRBX0lOVEVSQUNUSU9OW3Nkaz1pcGhvbmVzaW11bGF0b3Ix
MCpdID0gOwogCi1GRUFUVVJFX0RFRklORVMgPSAkKEVOQUJMRV8zRF9UUkFOU0ZPUk1TKSAkKEVO
QUJMRV9BQ0NFTEVSQVRFRF8yRF9DQU5WQVMpICQoRU5BQkxFX0FDQ0VMRVJBVEVEX09WRVJGTE9X
X1NDUk9MTElORykgJChFTkFCTEVfQVBQTEVfUEFZKSAkKEVOQUJMRV9BUFBMRV9QQVlfU0VTU0lP
Tl9WMykgJChFTkFCTEVfQVRUQUNITUVOVF9FTEVNRU5UKSAkKEVOQUJMRV9BVkZfQ0FQVElPTlMp
ICQoRU5BQkxFX0NBQ0hFX1BBUlRJVElPTklORykgJChFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcp
ICQoRU5BQkxFX0NPTlRFTlRfRklMVEVSSU5HKSAkKEVOQUJMRV9DU1NfQU5JTUFUSU9OU19MRVZF
TF8yKSAkKEVOQUJMRV9DU1NfQk9YX0RFQ09SQVRJT05fQlJFQUspICQoRU5BQkxFX0NTU19DT01Q
T1NJVElORykgJChFTkFCTEVfQ1NTX0RFVklDRV9BREFQVEFUSU9OKSAkKEVOQUJMRV9DU1NfSU1B
R0VfT1JJRU5UQVRJT04pICQoRU5BQkxFX0NTU19JTUFHRV9SRVNPTFVUSU9OKSAkKEVOQUJMRV9D
U1NfUkVHSU9OUykgJChFTkFCTEVfQ1NTX1NDUk9MTF9TTkFQKSAkKEVOQUJMRV9DU1NfU0VMRUNU
T1JTX0xFVkVMNCkgJChFTkFCTEVfQ1NTX1RSQUlMSU5HX1dPUkQpICQoRU5BQkxFX0NTUzNfVEVY
VCkgJChFTkFCTEVfQ1VSU09SX1ZJU0lCSUxJVFkpICQoRU5BQkxFX0NVU1RPTV9TQ0hFTUVfSEFO
RExFUikgJChFTkFCTEVfREFTSEJPQVJEX1NVUFBPUlQpICQoRU5BQkxFX0RBVEFfSU5URVJBQ1RJ
T04pICQoRU5BQkxFX0RBVEFDVUVfVkFMVUUpICQoRU5BQkxFX0RBVEFMSVNUX0VMRU1FTlQpICQo
RU5BQkxFX0RFVklDRV9PUklFTlRBVElPTikgJChFTkFCTEVfRFJBR19TVVBQT1JUKSAkKEVOQUJM
RV9FTkNSWVBURURfTUVESUEpICQoRU5BQkxFX0ZBU1RfSklUX1BFUk1JU1NJT05TKSAkKEVOQUJM
RV9GSUxURVJTX0xFVkVMXzIpICQoRU5BQkxFX0ZUTF9KSVQpICQoRU5BQkxFX0ZVTExTQ1JFRU5f
QVBJKSAkKEVOQUJMRV9HQU1FUEFEKSAkKEVOQUJMRV9HRU9MT0NBVElPTikgJChFTkFCTEVfSUNP
TkRBVEFCQVNFKSAkKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFX0lOX1dPUktFUlMpICQoRU5BQkxF
X0lOREVYRURfREFUQUJBU0UpICQoRU5BQkxFX0lOUFVUX1RZUEVfQ09MT1JfUE9QT1ZFUikgJChF
TkFCTEVfSU5QVVRfVFlQRV9DT0xPUikgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFKSAkKEVOQUJM
RV9JTlBVVF9UWVBFX0RBVEVUSU1FX0lOQ09NUExFVEUpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFU
RVRJTUVMT0NBTCkgJChFTkFCTEVfSU5QVVRfVFlQRV9NT05USCkgJChFTkFCTEVfSU5QVVRfVFlQ
RV9USU1FKSAkKEVOQUJMRV9JTlBVVF9UWVBFX1dFRUspICQoRU5BQkxFX0lOVEVSU0VDVElPTl9P
QlNFUlZFUikgJChFTkFCTEVfSU5UTCkgJChFTkFCTEVfSU9TX0dFU1RVUkVfRVZFTlRTKSAkKEVO
QUJMRV9JT1NfVE9VQ0hfRVZFTlRTKSAkKEVOQUJMRV9KSVQpICQoRU5BQkxFX0tFWUJPQVJEX0tF
WV9BVFRSSUJVVEUpICQoRU5BQkxFX0tFWUJPQVJEX0NPREVfQVRUUklCVVRFKSAkKEVOQUJMRV9M
RUdBQ1lfQ1NTX1ZFTkRPUl9QUkVGSVhFUykgJChFTkFCTEVfTEVHQUNZX0VOQ1JZUFRFRF9NRURJ
QSkgJChFTkFCTEVfTEVHQUNZX1ZFTkRPUl9QUkVGSVhFUykgJChFTkFCTEVfTEVUVEVSUFJFU1Mp
ICQoRU5BQkxFX0xJTktfUFJFRkVUQ0gpICQoRU5BQkxFX01BQ19HRVNUVVJFX0VWRU5UUykgJChF
TkFCTEVfTUFUSE1MKSAkKEVOQUJMRV9NRURJQV9DQVBUVVJFKSAkKEVOQUJMRV9NRURJQV9DT05U
Uk9MU19TQ1JJUFQpICQoRU5BQkxFX01FRElBX1NFU1NJT04pICQoRU5BQkxFX01FRElBX1NPVVJD
RSkgJChFTkFCTEVfTUVESUFfU1RBVElTVElDUykgJChFTkFCTEVfTUVESUFfU1RSRUFNKSAkKEVO
QUJMRV9NRVRFUl9FTEVNRU5UKSAkKEVOQUJMRV9NSFRNTCkgJChFTkFCTEVfTU9VU0VfQ1VSU09S
X1NDQUxFKSAkKEVOQUJMRV9OQVZJR0FUT1JfQ09OVEVOVF9VVElMUykgJChFTkFCTEVfTkFWSUdB
VE9SX1NUQU5EQUxPTkUpICQoRU5BQkxFX05PVElGSUNBVElPTlMpICQoRU5BQkxFX1BBWU1FTlRf
UkVRVUVTVCkgJChFTkFCTEVfUERGS0lUX1BMVUdJTikgJChFTkFCTEVfUE9JTlRFUl9MT0NLKSAk
KEVOQUJMRV9QVUJMSUNfU1VGRklYX0xJU1QpICQoRU5BQkxFX1FVT1RBKSAkKEVOQUJMRV9SRU1P
VEVfSU5TUEVDVE9SKSAkKEVOQUJMRV9SRVNPTFVUSU9OX01FRElBX1FVRVJZKSAkKEVOQUJMRV9S
RVNPVVJDRV9VU0FHRSkgJChFTkFCTEVfUlVCQkVSX0JBTkRJTkcpICQoRU5BQkxFX1NFUlZJQ0Vf
Q09OVFJPTFMpICQoRU5BQkxFX1NFUlZJQ0VfV09SS0VSKSAkKEVOQUJMRV9TUEVFQ0hfU1lOVEhF
U0lTKSAkKEVOQUJMRV9TVFJFQU1TX0FQSSkgJChFTkFCTEVfU1VCVExFX0NSWVBUTykgJChFTkFC
TEVfU1ZHX0ZPTlRTKSAkKEVOQUJMRV9URUxFUEhPTkVfTlVNQkVSX0RFVEVDVElPTikgJChFTkFC
TEVfVEVYVF9BVVRPU0laSU5HKSAkKEVOQUJMRV9UT1VDSF9FVkVOVFMpICQoRU5BQkxFX1RPVUNI
X0lDT05fTE9BRElORykgJChFTkFCTEVfVVNFUlNFTEVDVF9BTEwpICQoRU5BQkxFX1ZBUklBVElP
Tl9GT05UUykgJChFTkFCTEVfVklERU9fUFJFU0VOVEFUSU9OX01PREUpICQoRU5BQkxFX01BQ19W
SURFT19UT09MQk9YKSAkKEVOQUJMRV9WSURFT19UUkFDSykgJChFTkFCTEVfVklERU8pICQoRU5B
QkxFX1dFQl9BTklNQVRJT05TKSAkKEVOQUJMRV9XRUJfQVVESU8pICQoRU5BQkxFX1dFQl9SVEMp
ICQoRU5BQkxFX1dFQkFTU0VNQkxZKSAkKEVOQUJMRV9XRUJHTCkgJChFTkFCTEVfV0VCR0wyKSAk
KEVOQUJMRV9XRUJHUFUpICQoRU5BQkxFX1dJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJChFTkFC
TEVfWFNMVCk7CitGRUFUVVJFX0RFRklORVMgPSAkKEVOQUJMRV8zRF9UUkFOU0ZPUk1TKSAkKEVO
QUJMRV9BQ0NFTEVSQVRFRF8yRF9DQU5WQVMpICQoRU5BQkxFX0FDQ0VMRVJBVEVEX09WRVJGTE9X
X1NDUk9MTElORykgJChFTkFCTEVfQVBQTEVfUEFZKSAkKEVOQUJMRV9BUFBMRV9QQVlfU0VTU0lP
Tl9WMykgJChFTkFCTEVfQVRUQUNITUVOVF9FTEVNRU5UKSAkKEVOQUJMRV9BVkZfQ0FQVElPTlMp
ICQoRU5BQkxFX0NBQ0hFX1BBUlRJVElPTklORykgJChFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcp
ICQoRU5BQkxFX0NPTlRFTlRfRklMVEVSSU5HKSAkKEVOQUJMRV9DU1NfQU5JTUFUSU9OU19MRVZF
TF8yKSAkKEVOQUJMRV9DU1NfQk9YX0RFQ09SQVRJT05fQlJFQUspICQoRU5BQkxFX0NTU19DT01Q
T1NJVElORykgJChFTkFCTEVfQ1NTX0RFVklDRV9BREFQVEFUSU9OKSAkKEVOQUJMRV9DU1NfSU1B
R0VfT1JJRU5UQVRJT04pICQoRU5BQkxFX0NTU19JTUFHRV9SRVNPTFVUSU9OKSAkKEVOQUJMRV9D
U1NfU0NST0xMX1NOQVApICQoRU5BQkxFX0NTU19TRUxFQ1RPUlNfTEVWRUw0KSAkKEVOQUJMRV9D
U1NfVFJBSUxJTkdfV09SRCkgJChFTkFCTEVfQ1NTM19URVhUKSAkKEVOQUJMRV9DVVJTT1JfVklT
SUJJTElUWSkgJChFTkFCTEVfQ1VTVE9NX1NDSEVNRV9IQU5ETEVSKSAkKEVOQUJMRV9EQVNIQk9B
UkRfU1VQUE9SVCkgJChFTkFCTEVfREFUQV9JTlRFUkFDVElPTikgJChFTkFCTEVfREFUQUNVRV9W
QUxVRSkgJChFTkFCTEVfREFUQUxJU1RfRUxFTUVOVCkgJChFTkFCTEVfREVWSUNFX09SSUVOVEFU
SU9OKSAkKEVOQUJMRV9EUkFHX1NVUFBPUlQpICQoRU5BQkxFX0VOQ1JZUFRFRF9NRURJQSkgJChF
TkFCTEVfRkFTVF9KSVRfUEVSTUlTU0lPTlMpICQoRU5BQkxFX0ZJTFRFUlNfTEVWRUxfMikgJChF
TkFCTEVfRlRMX0pJVCkgJChFTkFCTEVfRlVMTFNDUkVFTl9BUEkpICQoRU5BQkxFX0dBTUVQQUQp
ICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9JQ09OREFUQUJBU0UpICQoRU5BQkxFX0lO
REVYRURfREFUQUJBU0VfSU5fV09SS0VSUykgJChFTkFCTEVfSU5ERVhFRF9EQVRBQkFTRSkgJChF
TkFCTEVfSU5QVVRfVFlQRV9DT0xPUl9QT1BPVkVSKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0NPTE9S
KSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEUpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURVRJTUVf
SU5DT01QTEVURSkgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFVElNRUxPQ0FMKSAkKEVOQUJMRV9J
TlBVVF9UWVBFX01PTlRIKSAkKEVOQUJMRV9JTlBVVF9UWVBFX1RJTUUpICQoRU5BQkxFX0lOUFVU
X1RZUEVfV0VFSykgJChFTkFCTEVfSU5URVJTRUNUSU9OX09CU0VSVkVSKSAkKEVOQUJMRV9JTlRM
KSAkKEVOQUJMRV9JT1NfR0VTVFVSRV9FVkVOVFMpICQoRU5BQkxFX0lPU19UT1VDSF9FVkVOVFMp
ICQoRU5BQkxFX0pJVCkgJChFTkFCTEVfS0VZQk9BUkRfS0VZX0FUVFJJQlVURSkgJChFTkFCTEVf
S0VZQk9BUkRfQ09ERV9BVFRSSUJVVEUpICQoRU5BQkxFX0xFR0FDWV9DU1NfVkVORE9SX1BSRUZJ
WEVTKSAkKEVOQUJMRV9MRUdBQ1lfRU5DUllQVEVEX01FRElBKSAkKEVOQUJMRV9MRUdBQ1lfVkVO
RE9SX1BSRUZJWEVTKSAkKEVOQUJMRV9MRVRURVJQUkVTUykgJChFTkFCTEVfTElOS19QUkVGRVRD
SCkgJChFTkFCTEVfTUFDX0dFU1RVUkVfRVZFTlRTKSAkKEVOQUJMRV9NQVRITUwpICQoRU5BQkxF
X01FRElBX0NBUFRVUkUpICQoRU5BQkxFX01FRElBX0NPTlRST0xTX1NDUklQVCkgJChFTkFCTEVf
TUVESUFfU0VTU0lPTikgJChFTkFCTEVfTUVESUFfU09VUkNFKSAkKEVOQUJMRV9NRURJQV9TVEFU
SVNUSUNTKSAkKEVOQUJMRV9NRURJQV9TVFJFQU0pICQoRU5BQkxFX01FVEVSX0VMRU1FTlQpICQo
RU5BQkxFX01IVE1MKSAkKEVOQUJMRV9NT1VTRV9DVVJTT1JfU0NBTEUpICQoRU5BQkxFX05BVklH
QVRPUl9DT05URU5UX1VUSUxTKSAkKEVOQUJMRV9OQVZJR0FUT1JfU1RBTkRBTE9ORSkgJChFTkFC
TEVfTk9USUZJQ0FUSU9OUykgJChFTkFCTEVfUEFZTUVOVF9SRVFVRVNUKSAkKEVOQUJMRV9QREZL
SVRfUExVR0lOKSAkKEVOQUJMRV9QT0lOVEVSX0xPQ0spICQoRU5BQkxFX1BVQkxJQ19TVUZGSVhf
TElTVCkgJChFTkFCTEVfUVVPVEEpICQoRU5BQkxFX1JFTU9URV9JTlNQRUNUT1IpICQoRU5BQkxF
X1JFU09MVVRJT05fTUVESUFfUVVFUlkpICQoRU5BQkxFX1JFU09VUkNFX1VTQUdFKSAkKEVOQUJM
RV9SVUJCRVJfQkFORElORykgJChFTkFCTEVfU0VSVklDRV9DT05UUk9MUykgJChFTkFCTEVfU0VS
VklDRV9XT1JLRVIpICQoRU5BQkxFX1NQRUVDSF9TWU5USEVTSVMpICQoRU5BQkxFX1NUUkVBTVNf
QVBJKSAkKEVOQUJMRV9TVUJUTEVfQ1JZUFRPKSAkKEVOQUJMRV9TVkdfRk9OVFMpICQoRU5BQkxF
X1RFTEVQSE9ORV9OVU1CRVJfREVURUNUSU9OKSAkKEVOQUJMRV9URVhUX0FVVE9TSVpJTkcpICQo
RU5BQkxFX1RPVUNIX0VWRU5UUykgJChFTkFCTEVfVE9VQ0hfSUNPTl9MT0FESU5HKSAkKEVOQUJM
RV9VU0VSU0VMRUNUX0FMTCkgJChFTkFCTEVfVkFSSUFUSU9OX0ZPTlRTKSAkKEVOQUJMRV9WSURF
T19QUkVTRU5UQVRJT05fTU9ERSkgJChFTkFCTEVfTUFDX1ZJREVPX1RPT0xCT1gpICQoRU5BQkxF
X1ZJREVPX1RSQUNLKSAkKEVOQUJMRV9WSURFTykgJChFTkFCTEVfV0VCX0FOSU1BVElPTlMpICQo
RU5BQkxFX1dFQl9BVURJTykgJChFTkFCTEVfV0VCX1JUQykgJChFTkFCTEVfV0VCQVNTRU1CTFkp
ICQoRU5BQkxFX1dFQkdMKSAkKEVOQUJMRV9XRUJHTDIpICQoRU5BQkxFX1dFQkdQVSkgJChFTkFC
TEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAkKEVOQUJMRV9YU0xUKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvUEFM
L0NoYW5nZUxvZwkocmV2aXNpb24gMjIyMjU3KQorKysgU291cmNlL1dlYkNvcmUvUEFML0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDE3LTA5LTE5ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgRE9NIGFuZCBzdHls
aW5nIHN1cHBvcnQgZm9yIENTUyBSZWdpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNzcyMjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIENvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29u
ZmlnOgorCiAyMDE3LTA5LTE4ICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAogICAg
ICAgICBbTWFjXSBVcHN0cmVhbSBtaXNjZWxsYW5lb3VzIFdlYktpdFN5c3RlbUludGVyZmFjZSBm
dW5jdGlvbnMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BBTC9Db25maWd1cmF0aW9ucy9GZWF0dXJl
RGVmaW5lcy54Y2NvbmZpZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9QQUwvQ29uZmln
dXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcJKHJldmlzaW9uIDIyMjI1NykKKysrIFNv
dXJjZS9XZWJDb3JlL1BBTC9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwko
d29ya2luZyBjb3B5KQpAQCAtNzgsNyArNzgsNiBAQCBFTkFCTEVfQ1NTX0NPTVBPU0lUSU5HID0g
RU5BQkxFX0NTU19DT01QCiBFTkFCTEVfQ1NTX0RFVklDRV9BREFQVEFUSU9OID0gOwogRU5BQkxF
X0NTU19JTUFHRV9PUklFTlRBVElPTiA9IDsKIEVOQUJMRV9DU1NfSU1BR0VfUkVTT0xVVElPTiA9
IDsKLUVOQUJMRV9DU1NfUkVHSU9OUyA9IDsKIEVOQUJMRV9DU1NfU0VMRUNUT1JTX0xFVkVMNCA9
IEVOQUJMRV9DU1NfU0VMRUNUT1JTX0xFVkVMNDsKIEVOQUJMRV9DU1MzX1RFWFQgPSA7CiBFTkFC
TEVfQ1VSU09SX1ZJU0lCSUxJVFkgPSBFTkFCTEVfQ1VSU09SX1ZJU0lCSUxJVFk7CkBAIC0yNDMs
NCArMjQyLDQgQEAgRU5BQkxFX0RBVEFfSU5URVJBQ1RJT05faXBob25lc2ltdWxhdG9yIAogRU5B
QkxFX0RBVEFfSU5URVJBQ1RJT05bc2RrPWlwaG9uZW9zMTAqXSA9IDsKIEVOQUJMRV9EQVRBX0lO
VEVSQUNUSU9OW3Nkaz1pcGhvbmVzaW11bGF0b3IxMCpdID0gOwogCi1GRUFUVVJFX0RFRklORVMg
PSAkKEVOQUJMRV8zRF9UUkFOU0ZPUk1TKSAkKEVOQUJMRV9BQ0NFTEVSQVRFRF8yRF9DQU5WQVMp
ICQoRU5BQkxFX0FDQ0VMRVJBVEVEX09WRVJGTE9XX1NDUk9MTElORykgJChFTkFCTEVfQVBQTEVf
UEFZKSAkKEVOQUJMRV9BUFBMRV9QQVlfU0VTU0lPTl9WMykgJChFTkFCTEVfQVRUQUNITUVOVF9F
TEVNRU5UKSAkKEVOQUJMRV9BVkZfQ0FQVElPTlMpICQoRU5BQkxFX0NBQ0hFX1BBUlRJVElPTklO
RykgJChFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcpICQoRU5BQkxFX0NPTlRFTlRfRklMVEVSSU5H
KSAkKEVOQUJMRV9DU1NfQU5JTUFUSU9OU19MRVZFTF8yKSAkKEVOQUJMRV9DU1NfQk9YX0RFQ09S
QVRJT05fQlJFQUspICQoRU5BQkxFX0NTU19DT01QT1NJVElORykgJChFTkFCTEVfQ1NTX0RFVklD
RV9BREFQVEFUSU9OKSAkKEVOQUJMRV9DU1NfSU1BR0VfT1JJRU5UQVRJT04pICQoRU5BQkxFX0NT
U19JTUFHRV9SRVNPTFVUSU9OKSAkKEVOQUJMRV9DU1NfUkVHSU9OUykgJChFTkFCTEVfQ1NTX1ND
Uk9MTF9TTkFQKSAkKEVOQUJMRV9DU1NfU0VMRUNUT1JTX0xFVkVMNCkgJChFTkFCTEVfQ1NTX1RS
QUlMSU5HX1dPUkQpICQoRU5BQkxFX0NTUzNfVEVYVCkgJChFTkFCTEVfQ1VSU09SX1ZJU0lCSUxJ
VFkpICQoRU5BQkxFX0NVU1RPTV9TQ0hFTUVfSEFORExFUikgJChFTkFCTEVfREFTSEJPQVJEX1NV
UFBPUlQpICQoRU5BQkxFX0RBVEFfSU5URVJBQ1RJT04pICQoRU5BQkxFX0RBVEFDVUVfVkFMVUUp
ICQoRU5BQkxFX0RBVEFMSVNUX0VMRU1FTlQpICQoRU5BQkxFX0RFVklDRV9PUklFTlRBVElPTikg
JChFTkFCTEVfRFJBR19TVVBQT1JUKSAkKEVOQUJMRV9FTkNSWVBURURfTUVESUEpICQoRU5BQkxF
X0ZBU1RfSklUX1BFUk1JU1NJT05TKSAkKEVOQUJMRV9GSUxURVJTX0xFVkVMXzIpICQoRU5BQkxF
X0ZUTF9KSVQpICQoRU5BQkxFX0ZVTExTQ1JFRU5fQVBJKSAkKEVOQUJMRV9HQU1FUEFEKSAkKEVO
QUJMRV9HRU9MT0NBVElPTikgJChFTkFCTEVfSUNPTkRBVEFCQVNFKSAkKEVOQUJMRV9JTkRFWEVE
X0RBVEFCQVNFX0lOX1dPUktFUlMpICQoRU5BQkxFX0lOREVYRURfREFUQUJBU0UpICQoRU5BQkxF
X0lOUFVUX1RZUEVfQ09MT1JfUE9QT1ZFUikgJChFTkFCTEVfSU5QVVRfVFlQRV9DT0xPUikgJChF
TkFCTEVfSU5QVVRfVFlQRV9EQVRFKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1FX0lOQ09N
UExFVEUpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURVRJTUVMT0NBTCkgJChFTkFCTEVfSU5QVVRf
VFlQRV9NT05USCkgJChFTkFCTEVfSU5QVVRfVFlQRV9USU1FKSAkKEVOQUJMRV9JTlBVVF9UWVBF
X1dFRUspICQoRU5BQkxFX0lOVEVSU0VDVElPTl9PQlNFUlZFUikgJChFTkFCTEVfSU5UTCkgJChF
TkFCTEVfSU9TX0dFU1RVUkVfRVZFTlRTKSAkKEVOQUJMRV9JT1NfVE9VQ0hfRVZFTlRTKSAkKEVO
QUJMRV9KSVQpICQoRU5BQkxFX0tFWUJPQVJEX0tFWV9BVFRSSUJVVEUpICQoRU5BQkxFX0tFWUJP
QVJEX0NPREVfQVRUUklCVVRFKSAkKEVOQUJMRV9MRUdBQ1lfQ1NTX1ZFTkRPUl9QUkVGSVhFUykg
JChFTkFCTEVfTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkgJChFTkFCTEVfTEVHQUNZX1ZFTkRPUl9Q
UkVGSVhFUykgJChFTkFCTEVfTEVUVEVSUFJFU1MpICQoRU5BQkxFX0xJTktfUFJFRkVUQ0gpICQo
RU5BQkxFX01BQ19HRVNUVVJFX0VWRU5UUykgJChFTkFCTEVfTUFUSE1MKSAkKEVOQUJMRV9NRURJ
QV9DQVBUVVJFKSAkKEVOQUJMRV9NRURJQV9DT05UUk9MU19TQ1JJUFQpICQoRU5BQkxFX01FRElB
X1NFU1NJT04pICQoRU5BQkxFX01FRElBX1NPVVJDRSkgJChFTkFCTEVfTUVESUFfU1RBVElTVElD
UykgJChFTkFCTEVfTUVESUFfU1RSRUFNKSAkKEVOQUJMRV9NRVRFUl9FTEVNRU5UKSAkKEVOQUJM
RV9NSFRNTCkgJChFTkFCTEVfTU9VU0VfQ1VSU09SX1NDQUxFKSAkKEVOQUJMRV9OQVZJR0FUT1Jf
Q09OVEVOVF9VVElMUykgJChFTkFCTEVfTkFWSUdBVE9SX1NUQU5EQUxPTkUpICQoRU5BQkxFX05P
VElGSUNBVElPTlMpICQoRU5BQkxFX1BBWU1FTlRfUkVRVUVTVCkgJChFTkFCTEVfUERGS0lUX1BM
VUdJTikgJChFTkFCTEVfUE9JTlRFUl9MT0NLKSAkKEVOQUJMRV9QVUJMSUNfU1VGRklYX0xJU1Qp
ICQoRU5BQkxFX1FVT1RBKSAkKEVOQUJMRV9SRU1PVEVfSU5TUEVDVE9SKSAkKEVOQUJMRV9SRVNP
TFVUSU9OX01FRElBX1FVRVJZKSAkKEVOQUJMRV9SRVNPVVJDRV9VU0FHRSkgJChFTkFCTEVfUlVC
QkVSX0JBTkRJTkcpICQoRU5BQkxFX1NFUlZJQ0VfQ09OVFJPTFMpICQoRU5BQkxFX1NFUlZJQ0Vf
V09SS0VSKSAkKEVOQUJMRV9TUEVFQ0hfU1lOVEhFU0lTKSAkKEVOQUJMRV9TVFJFQU1TX0FQSSkg
JChFTkFCTEVfU1VCVExFX0NSWVBUTykgJChFTkFCTEVfU1ZHX0ZPTlRTKSAkKEVOQUJMRV9URUxF
UEhPTkVfTlVNQkVSX0RFVEVDVElPTikgJChFTkFCTEVfVEVYVF9BVVRPU0laSU5HKSAkKEVOQUJM
RV9UT1VDSF9FVkVOVFMpICQoRU5BQkxFX1RPVUNIX0lDT05fTE9BRElORykgJChFTkFCTEVfVVNF
UlNFTEVDVF9BTEwpICQoRU5BQkxFX1ZBUklBVElPTl9GT05UUykgJChFTkFCTEVfVklERU9fUFJF
U0VOVEFUSU9OX01PREUpICQoRU5BQkxFX01BQ19WSURFT19UT09MQk9YKSAkKEVOQUJMRV9WSURF
T19UUkFDSykgJChFTkFCTEVfVklERU8pICQoRU5BQkxFX1dFQl9BTklNQVRJT05TKSAkKEVOQUJM
RV9XRUJfQVVESU8pICQoRU5BQkxFX1dFQl9SVEMpICQoRU5BQkxFX1dFQkFTU0VNQkxZKSAkKEVO
QUJMRV9XRUJHTCkgJChFTkFCTEVfV0VCR0wyKSAkKEVOQUJMRV9XRUJHUFUpICQoRU5BQkxFX1dJ
UkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJChFTkFCTEVfWFNMVCk7CitGRUFUVVJFX0RFRklORVMg
PSAkKEVOQUJMRV8zRF9UUkFOU0ZPUk1TKSAkKEVOQUJMRV9BQ0NFTEVSQVRFRF8yRF9DQU5WQVMp
ICQoRU5BQkxFX0FDQ0VMRVJBVEVEX09WRVJGTE9XX1NDUk9MTElORykgJChFTkFCTEVfQVBQTEVf
UEFZKSAkKEVOQUJMRV9BUFBMRV9QQVlfU0VTU0lPTl9WMykgJChFTkFCTEVfQVRUQUNITUVOVF9F
TEVNRU5UKSAkKEVOQUJMRV9BVkZfQ0FQVElPTlMpICQoRU5BQkxFX0NBQ0hFX1BBUlRJVElPTklO
RykgJChFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcpICQoRU5BQkxFX0NPTlRFTlRfRklMVEVSSU5H
KSAkKEVOQUJMRV9DU1NfQU5JTUFUSU9OU19MRVZFTF8yKSAkKEVOQUJMRV9DU1NfQk9YX0RFQ09S
QVRJT05fQlJFQUspICQoRU5BQkxFX0NTU19DT01QT1NJVElORykgJChFTkFCTEVfQ1NTX0RFVklD
RV9BREFQVEFUSU9OKSAkKEVOQUJMRV9DU1NfSU1BR0VfT1JJRU5UQVRJT04pICQoRU5BQkxFX0NT
U19JTUFHRV9SRVNPTFVUSU9OKSAkKEVOQUJMRV9DU1NfU0NST0xMX1NOQVApICQoRU5BQkxFX0NT
U19TRUxFQ1RPUlNfTEVWRUw0KSAkKEVOQUJMRV9DU1NfVFJBSUxJTkdfV09SRCkgJChFTkFCTEVf
Q1NTM19URVhUKSAkKEVOQUJMRV9DVVJTT1JfVklTSUJJTElUWSkgJChFTkFCTEVfQ1VTVE9NX1ND
SEVNRV9IQU5ETEVSKSAkKEVOQUJMRV9EQVNIQk9BUkRfU1VQUE9SVCkgJChFTkFCTEVfREFUQV9J
TlRFUkFDVElPTikgJChFTkFCTEVfREFUQUNVRV9WQUxVRSkgJChFTkFCTEVfREFUQUxJU1RfRUxF
TUVOVCkgJChFTkFCTEVfREVWSUNFX09SSUVOVEFUSU9OKSAkKEVOQUJMRV9EUkFHX1NVUFBPUlQp
ICQoRU5BQkxFX0VOQ1JZUFRFRF9NRURJQSkgJChFTkFCTEVfRkFTVF9KSVRfUEVSTUlTU0lPTlMp
ICQoRU5BQkxFX0ZJTFRFUlNfTEVWRUxfMikgJChFTkFCTEVfRlRMX0pJVCkgJChFTkFCTEVfRlVM
TFNDUkVFTl9BUEkpICQoRU5BQkxFX0dBTUVQQUQpICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVO
QUJMRV9JQ09OREFUQUJBU0UpICQoRU5BQkxFX0lOREVYRURfREFUQUJBU0VfSU5fV09SS0VSUykg
JChFTkFCTEVfSU5ERVhFRF9EQVRBQkFTRSkgJChFTkFCTEVfSU5QVVRfVFlQRV9DT0xPUl9QT1BP
VkVSKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0NPTE9SKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEUp
ICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURVRJTUVfSU5DT01QTEVURSkgJChFTkFCTEVfSU5QVVRf
VFlQRV9EQVRFVElNRUxPQ0FMKSAkKEVOQUJMRV9JTlBVVF9UWVBFX01PTlRIKSAkKEVOQUJMRV9J
TlBVVF9UWVBFX1RJTUUpICQoRU5BQkxFX0lOUFVUX1RZUEVfV0VFSykgJChFTkFCTEVfSU5URVJT
RUNUSU9OX09CU0VSVkVSKSAkKEVOQUJMRV9JTlRMKSAkKEVOQUJMRV9JT1NfR0VTVFVSRV9FVkVO
VFMpICQoRU5BQkxFX0lPU19UT1VDSF9FVkVOVFMpICQoRU5BQkxFX0pJVCkgJChFTkFCTEVfS0VZ
Qk9BUkRfS0VZX0FUVFJJQlVURSkgJChFTkFCTEVfS0VZQk9BUkRfQ09ERV9BVFRSSUJVVEUpICQo
RU5BQkxFX0xFR0FDWV9DU1NfVkVORE9SX1BSRUZJWEVTKSAkKEVOQUJMRV9MRUdBQ1lfRU5DUllQ
VEVEX01FRElBKSAkKEVOQUJMRV9MRUdBQ1lfVkVORE9SX1BSRUZJWEVTKSAkKEVOQUJMRV9MRVRU
RVJQUkVTUykgJChFTkFCTEVfTElOS19QUkVGRVRDSCkgJChFTkFCTEVfTUFDX0dFU1RVUkVfRVZF
TlRTKSAkKEVOQUJMRV9NQVRITUwpICQoRU5BQkxFX01FRElBX0NBUFRVUkUpICQoRU5BQkxFX01F
RElBX0NPTlRST0xTX1NDUklQVCkgJChFTkFCTEVfTUVESUFfU0VTU0lPTikgJChFTkFCTEVfTUVE
SUFfU09VUkNFKSAkKEVOQUJMRV9NRURJQV9TVEFUSVNUSUNTKSAkKEVOQUJMRV9NRURJQV9TVFJF
QU0pICQoRU5BQkxFX01FVEVSX0VMRU1FTlQpICQoRU5BQkxFX01IVE1MKSAkKEVOQUJMRV9NT1VT
RV9DVVJTT1JfU0NBTEUpICQoRU5BQkxFX05BVklHQVRPUl9DT05URU5UX1VUSUxTKSAkKEVOQUJM
RV9OQVZJR0FUT1JfU1RBTkRBTE9ORSkgJChFTkFCTEVfTk9USUZJQ0FUSU9OUykgJChFTkFCTEVf
UEFZTUVOVF9SRVFVRVNUKSAkKEVOQUJMRV9QREZLSVRfUExVR0lOKSAkKEVOQUJMRV9QT0lOVEVS
X0xPQ0spICQoRU5BQkxFX1BVQkxJQ19TVUZGSVhfTElTVCkgJChFTkFCTEVfUVVPVEEpICQoRU5B
QkxFX1JFTU9URV9JTlNQRUNUT1IpICQoRU5BQkxFX1JFU09MVVRJT05fTUVESUFfUVVFUlkpICQo
RU5BQkxFX1JFU09VUkNFX1VTQUdFKSAkKEVOQUJMRV9SVUJCRVJfQkFORElORykgJChFTkFCTEVf
U0VSVklDRV9DT05UUk9MUykgJChFTkFCTEVfU0VSVklDRV9XT1JLRVIpICQoRU5BQkxFX1NQRUVD
SF9TWU5USEVTSVMpICQoRU5BQkxFX1NUUkVBTVNfQVBJKSAkKEVOQUJMRV9TVUJUTEVfQ1JZUFRP
KSAkKEVOQUJMRV9TVkdfRk9OVFMpICQoRU5BQkxFX1RFTEVQSE9ORV9OVU1CRVJfREVURUNUSU9O
KSAkKEVOQUJMRV9URVhUX0FVVE9TSVpJTkcpICQoRU5BQkxFX1RPVUNIX0VWRU5UUykgJChFTkFC
TEVfVE9VQ0hfSUNPTl9MT0FESU5HKSAkKEVOQUJMRV9VU0VSU0VMRUNUX0FMTCkgJChFTkFCTEVf
VkFSSUFUSU9OX0ZPTlRTKSAkKEVOQUJMRV9WSURFT19QUkVTRU5UQVRJT05fTU9ERSkgJChFTkFC
TEVfTUFDX1ZJREVPX1RPT0xCT1gpICQoRU5BQkxFX1ZJREVPX1RSQUNLKSAkKEVOQUJMRV9WSURF
TykgJChFTkFCTEVfV0VCX0FOSU1BVElPTlMpICQoRU5BQkxFX1dFQl9BVURJTykgJChFTkFCTEVf
V0VCX1JUQykgJChFTkFCTEVfV0VCQVNTRU1CTFkpICQoRU5BQkxFX1dFQkdMKSAkKEVOQUJMRV9X
RUJHTDIpICQoRU5BQkxFX1dFQkdQVSkgJChFTkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VU
KSAkKEVOQUJMRV9YU0xUKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDIyMjI1NykKKysrIFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAt
MjUyOCwxMiArMjUyOCw2IEBACiAJCTUyQjBENEJFMUM1N0ZEMUUwMDc3Q0U1MyAvKiBQbGF0Zm9y
bVZpZXcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUy
QjBENEJEMUM1N0ZEMUUwMDc3Q0U1MyAvKiBQbGF0Zm9ybVZpZXcuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MkIwRDRDMDFDNTdGRDY2MDA3N0NF
NTMgLyogVmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyQjBENEJGMUM1N0ZENjYwMDc3Q0U1MyAvKiBW
aWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUyQjBENEMyMUM1N0ZGOTEwMDc3Q0U1MyAvKiBWaWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUyQjBENEMxMUM1N0ZGOTEwMDc3Q0U1MyAvKiBWaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2VNYWMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwotCQk1MkI2QzlDMjE1RTNGNERGMDA2OTBCMDUgLyogRE9NTmFtZWRGbG93Q29sbGVj
dGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MkI2QzlCRDE1RTNGNERGMDA2OTBCMDUgLyogRE9NTmFtZWRGbG93Q29sbGVjdGlvbi5jcHAgKi87
IH07Ci0JCTUyQjZDOUMzMTVFM0Y0REYwMDY5MEIwNSAvKiBET01OYW1lZEZsb3dDb2xsZWN0aW9u
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MkI2QzlC
RTE1RTNGNERGMDA2OTBCMDUgLyogRE9NTmFtZWRGbG93Q29sbGVjdGlvbi5oICovOyB9OwotCQk1
MkI2QzlDNTE1RTNGNERGMDA2OTBCMDUgLyogTmFtZWRGbG93Q29sbGVjdGlvbi5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MkI2QzlDMDE1RTNGNERG
MDA2OTBCMDUgLyogTmFtZWRGbG93Q29sbGVjdGlvbi5jcHAgKi87IH07Ci0JCTUyQjZDOUM2MTVF
M0Y0REYwMDY5MEIwNSAvKiBOYW1lZEZsb3dDb2xsZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MkI2QzlDMTE1RTNGNERGMDA2OTBCMDUgLyog
TmFtZWRGbG93Q29sbGVjdGlvbi5oICovOyB9OwotCQk1MkNDQTlFMjE1RTNGNjJDMDA1M0M3N0Yg
LyogSlNET01OYW1lZEZsb3dDb2xsZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyQ0NBOUUwMTVFM0Y2MkMwMDUzQzc3RiAvKiBKU0RPTU5h
bWVkRmxvd0NvbGxlY3Rpb24uY3BwICovOyB9OwotCQk1MkNDQTlFMzE1RTNGNjJDMDA1M0M3N0Yg
LyogSlNET01OYW1lZEZsb3dDb2xsZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MkNDQTlFMTE1RTNGNjJDMDA1M0M3N0YgLyogSlNET01OYW1l
ZEZsb3dDb2xsZWN0aW9uLmggKi87IH07CiAJCTUyRDVBMThGMUM1NDU5MjMwMERFMzRBMyAvKiBW
aWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MkQ1QTE4RDFDNTQ1OTAzMDBERTM0QTMgLyogVmlkZW9GdWxs
c2NyZWVuTGF5ZXJNYW5hZ2VyLm1tICovOyB9OwogCQk1MkQ1QTFBNzFDNTc0ODlEMDBERTM0QTMg
LyogVmlkZW9GdWxsc2NyZWVuTW9kZWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUyRDVBMUE0MUM1NzQ4ODkwMERFMzRBMyAvKiBWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlbC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTUyRDVBMUE4MUM1NzQ4QTMwMERFMzRBMyAvKiBWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVv
RWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTJENUExQTUxQzU3NDg4OTAwREUzNEEzIC8qIFZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVt
ZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAg
LTI5MzEsNyArMjkyNSw2IEBACiAJCTZDNEM5NkRGMUFENDQ4MzUwMDM2NUE1MCAvKiBKU1JlYWRh
YmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDZDNEM5NkRCMUFENDQ4MzUwMDM2NUE1MCAvKiBKU1JlYWRhYmxl
U3RyZWFtRGVmYXVsdENvbnRyb2xsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk2QzYzODg5NUE5NkNDRUU1MEM4Qzk0NkMgLyogQ2FjaGVkUmVz
b3VyY2VSZXF1ZXN0SW5pdGlhdG9ycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNkM2Mzg4OTNBOTZDQ0VFNTBDOEM5NDZDIC8qIENhY2hlZFJlc291cmNl
UmVxdWVzdEluaXRpYXRvcnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk2QzYzODg5NkE5NkNDRUU1MEM4Qzk0NkMgLyogQ2FjaGVkUmVzb3VyY2VS
ZXF1ZXN0SW5pdGlhdG9ycy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA2QzYzODg5NEE5NkNDRUU1MEM4Qzk0NkMgLyogQ2FjaGVkUmVzb3VyY2VSZXF1
ZXN0SW5pdGlhdG9ycy5jcHAgKi87IH07Ci0JCTZDRERFOEQwMTc3MEJCMjIwMDE2RTA3MiAvKiBS
ZWdpb25PdmVyc2V0U3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDZDNzBBODE0MTc3MDdDNDkwMDlBNDQ2RSAvKiBSZWdpb25PdmVyc2V0U3RhdGUu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk2RTBF
NTY5QjE4M0JGRkU2MDBFMEU4RDUgLyogRmxvYXRSb3VuZGVkUmVjdC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTBFNTY5OTE4M0JGRkU2MDBFMEU4
RDUgLyogRmxvYXRSb3VuZGVkUmVjdC5jcHAgKi87IH07CiAJCTZFMEU1NjlDMTgzQkZGRTYwMEUw
RThENSAvKiBGbG9hdFJvdW5kZWRSZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA2RTBFNTY5QTE4M0JGRkU2MDBFMEU4RDUgLyogRmxvYXRSb3VuZGVk
UmVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTZFMjFDNkMwMTEyNjMzODUwMEE3QkUwMiAvKiBHcmFwaGljc0NvbnRleHQzRC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTIxQzZCRjExMjYzMzg1
MDBBN0JFMDIgLyogR3JhcGhpY3NDb250ZXh0M0QuY3BwICovOyB9OwpAQCAtMzc2MCwxMyArMzc1
Myw5IEBACiAJCThBOUE1ODcxMTFFODRDMzYwMDhBQ0ZEMSAvKiBKU1BlcmZvcm1hbmNlTmF2aWdh
dGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOEE5
QTU4NkYxMUU4NEMzNjAwOEFDRkQxIC8qIEpTUGVyZm9ybWFuY2VOYXZpZ2F0aW9uLmggKi87IH07
CiAJCThBOUE1ODc1MTFFODRDODEwMDhBQ0ZEMSAvKiBKU1BlcmZvcm1hbmNlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4QTlBNTg3MzExRTg0QzgxMDA4
QUNGRDEgLyogSlNQZXJmb3JtYW5jZS5oICovOyB9OwogCQk4QTlBNTg4ODExRTg0RjM3MDA4QUNG
RDEgLyogSlNQZXJmb3JtYW5jZVRpbWluZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOEE5QTU4NzcxMUU4NEM5ODAwOEFDRkQxIC8qIEpTUGVyZm9ybWFu
Y2VUaW1pbmcuaCAqLzsgfTsKLQkJOEFBNjFDRkYxNDRENTk1QjAwRjM3MzUwIC8qIFdlYktpdENT
U1JlZ2lvblJ1bGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOEFBNjFDRkQxNDRENTk1QjAwRjM3MzUwIC8qIFdlYktpdENTU1JlZ2lvblJ1bGUuY3Bw
ICovOyB9OwotCQk4QUE2MUQwMDE0NEQ1OTVCMDBGMzczNTAgLyogV2ViS2l0Q1NTUmVnaW9uUnVs
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOEFBNjFD
RkUxNDRENTk1QjAwRjM3MzUwIC8qIFdlYktpdENTU1JlZ2lvblJ1bGUuaCAqLzsgfTsKIAkJOEFC
NEJDNzcxMjZGREI3MTAwREVCNzI3IC8qIElnbm9yZURlc3RydWN0aXZlV3JpdGVDb3VudEluY3Jl
bWVudGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
QUI0QkM3NjEyNkZEQjcxMDBERUI3MjcgLyogSWdub3JlRGVzdHJ1Y3RpdmVXcml0ZUNvdW50SW5j
cmVtZW50ZXIuaCAqLzsgfTsKIAkJOEFDODIyRkMxODBGQzAzMzAwRkI2NEQ1IC8qIFJlbmRlck5h
bWVkRmxvd0ZyYWdtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDhBQzgyMkZBMTgwRkMwMzMwMEZCNjRENSAvKiBSZW5kZXJOYW1lZEZsb3dGcmFn
bWVudC5jcHAgKi87IH07CiAJCThBQzgyMkZEMTgwRkMwMzMwMEZCNjRENSAvKiBSZW5kZXJOYW1l
ZEZsb3dGcmFnbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOEFDODIyRkIxODBGQzAzMzAwRkI2NEQ1IC8qIFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50
LmggKi87IH07Ci0JCThBRDBBNTk0MTRDODgzMzYwMDBEODNDNSAvKiBKU1dlYktpdENTU1JlZ2lv
blJ1bGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OEFDQzI0Q0QxNDhFMjRCMjAwRUZDQzBEIC8qIEpTV2ViS2l0Q1NTUmVnaW9uUnVsZS5jcHAgKi87
IH07Ci0JCThBRDBBNTk1MTRDODgzMzYwMDBEODNDNSAvKiBKU1dlYktpdENTU1JlZ2lvblJ1bGUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDhBQ0MyNENF
MTQ4RTI0QjIwMEVGQ0MwRCAvKiBKU1dlYktpdENTU1JlZ2lvblJ1bGUuaCAqLzsgfTsKIAkJOEFG
NEU1NTUxMURDNUEzNjAwMEVEM0RFIC8qIFBlcmZvcm1hbmNlTmF2aWdhdGlvbi5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4QUY0RTU1MjExREM1QTM2
MDAwRUQzREUgLyogUGVyZm9ybWFuY2VOYXZpZ2F0aW9uLmNwcCAqLzsgfTsKIAkJOEFGNEU1NTYx
MURDNUEzNjAwMEVEM0RFIC8qIFBlcmZvcm1hbmNlTmF2aWdhdGlvbi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOEFGNEU1NTMxMURDNUEzNjAwMEVEM0RF
IC8qIFBlcmZvcm1hbmNlTmF2aWdhdGlvbi5oICovOyB9OwogCQk4QUY0RTU1QzExREM1QTYzMDAw
RUQzREUgLyogUGVyZm9ybWFuY2VUaW1pbmcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDhBRjRFNTU5MTFEQzVBNjMwMDBFRDNERSAvKiBQZXJmb3JtYW5j
ZVRpbWluZy5oICovOyB9OwpAQCAtNjYwMSw4ICs2NTkwLDYgQEAKIAkJRDcwQUQ2NTgxM0UxMzQy
QjAwNUI1MEI0IC8qIFJlbmRlclJlZ2lvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRDcwQUQ2NTYxM0UxMzQyQjAwNUI1MEI0IC8qIFJlbmRlclJlZ2lv
bi5oICovOyB9OwogCQlENzJGNkQ3OTE1MzE1OUEzMDAxRUU0NEUgLyogRmxvd1RocmVhZENvbnRy
b2xsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RDcyRjZENzcxNTMxNTlBMzAwMUVFNDRFIC8qIEZsb3dUaHJlYWRDb250cm9sbGVyLmNwcCAqLzsg
fTsKIAkJRDcyRjZEN0ExNTMxNTlBMzAwMUVFNDRFIC8qIEZsb3dUaHJlYWRDb250cm9sbGVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBENzJGNkQ3ODE1
MzE1OUEzMDAxRUU0NEUgLyogRmxvd1RocmVhZENvbnRyb2xsZXIuaCAqLzsgfTsKLQkJRDc2MTNB
NTAxNDc0RjEzRjAwREI4NjA2IC8qIFdlYktpdE5hbWVkRmxvdy5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBENzYxM0E0RTE0NzRGMTNGMDBEQjg2MDYg
LyogV2ViS2l0TmFtZWRGbG93LmNwcCAqLzsgfTsKLQkJRDc2MTNBQzQxNDc1M0U1NjAwREI4NjA2
IC8qIEpTV2ViS2l0TmFtZWRGbG93LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEQ3NjEzQUMyMTQ3NTNFNTYwMERCODYwNiAvKiBKU1dlYktpdE5hbWVk
Rmxvdy5jcHAgKi87IH07CiAJCUQ4QjYxNTJGMTAzMjQ5NTEwMEM4NTU0QSAvKiBDb29raWUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEQ4QjYxNTJFMTAz
MjQ5NTEwMEM4NTU0QSAvKiBDb29raWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQlEQUVEMjAzMDE2RjI0NDJCMDA3MEVDMEYgLyogUGFnZUNvbnNv
bGVDbGllbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gREFBQ0IzRDkxNkYyNDE2NDAwNjY2MTM1IC8qIFBhZ2VDb25zb2xlQ2xpZW50LmNwcCAqLzsg
fTsKIAkJREFFRDIwMzExNkYyNDQ0ODAwNzBFQzBGIC8qIFBhZ2VDb25zb2xlQ2xpZW50LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEQUFDQjNEQTE2RjI0
MTY0MDA2NjYxMzUgLyogUGFnZUNvbnNvbGVDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTA0NTUsMTMgKzEwNDQyLDYgQEAKIAkJNTJC
MEQ0QkQxQzU3RkQxRTAwNzdDRTUzIC8qIFBsYXRmb3JtVmlldy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBQbGF0Zm9ybVZpZXcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTJCMEQ0QkYxQzU3RkQ2NjAwNzdDRTUzIC8qIFZpZGVvRnVsbHNjcmVlbkNoYW5nZU9i
c2VydmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZpZGVvRnVsbHNjcmVl
bkNoYW5nZU9ic2VydmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUyQjBENEMx
MUM1N0ZGOTEwMDc3Q0U1MyAvKiBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUyQjZDOUJEMTVFM0Y0REYwMDY5MEIwNSAv
KiBET01OYW1lZEZsb3dDb2xsZWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IERPTU5hbWVkRmxvd0NvbGxlY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQk1MkI2QzlCRTE1RTNGNERGMDA2OTBCMDUgLyogRE9NTmFtZWRGbG93Q29sbGVj
dGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01OYW1lZEZsb3dDb2xs
ZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUyQjZDOUJGMTVFM0Y0REYw
MDY5MEIwNSAvKiBET01OYW1lZEZsb3dDb2xsZWN0aW9uLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBh
dGggPSBET01OYW1lZEZsb3dDb2xsZWN0aW9uLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJNTJCNkM5QzAxNUUzRjRERjAwNjkwQjA1IC8qIE5hbWVkRmxvd0NvbGxlY3Rpb24uY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmFtZWRGbG93Q29sbGVjdGlv
bi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUyQjZDOUMxMTVFM0Y0REYwMDY5
MEIwNSAvKiBOYW1lZEZsb3dDb2xsZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IE5hbWVkRmxvd0NvbGxlY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJNTJDQ0E5RTAxNUUzRjYyQzAwNTNDNzdGIC8qIEpTRE9NTmFtZWRGbG93Q29sbGVjdGlvbi5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0RPTU5hbWVkRmxvd0Nv
bGxlY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MkNDQTlFMTE1RTNG
NjJDMDA1M0M3N0YgLyogSlNET01OYW1lZEZsb3dDb2xsZWN0aW9uLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEpTRE9NTmFtZWRGbG93Q29sbGVjdGlvbi5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1MkQ1QTE4RDFDNTQ1OTAzMDBERTM0QTMgLyogVmlkZW9GdWxs
c2NyZWVuTGF5ZXJNYW5hZ2VyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gVmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1MkQ1QTE4RTFDNTQ1OTAzMDBERTM0QTMgLyogVmlkZW9GdWxsc2NyZWVuTGF5
ZXJNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZpZGVvRnVsbHNj
cmVlbkxheWVyTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MkQ1QTFB
NDFDNTc0ODg5MDBERTM0QTMgLyogVmlkZW9GdWxsc2NyZWVuTW9kZWwuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gVmlkZW9GdWxsc2NyZWVuTW9kZWwuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTEwOTI0LDcgKzEwOTA0LDYgQEAKIAkJNkM0Qzk2REIxQUQ0NDgz
NTAwMzY1QTUwIC8qIEpTUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1JlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xs
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkM2Mzg4OTNBOTZDQ0VFNTBDOEM5
NDZDIC8qIENhY2hlZFJlc291cmNlUmVxdWVzdEluaXRpYXRvcnMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IENhY2hlZFJlc291cmNlUmVxdWVzdEluaXRpYXRvcnMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkM2Mzg4OTRBOTZDQ0VFNTBDOEM5NDZDIC8qIENh
Y2hlZFJlc291cmNlUmVxdWVzdEluaXRpYXRvcnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IENhY2hlZFJlc291cmNlUmVxdWVzdEluaXRpYXRvcnMuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk2QzcwQTgxNDE3NzA3QzQ5MDA5QTQ0NkUgLyogUmVn
aW9uT3ZlcnNldFN0YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZ2lv
bk92ZXJzZXRTdGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2RTBFNTY5OTE4
M0JGRkU2MDBFMEU4RDUgLyogRmxvYXRSb3VuZGVkUmVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBGbG9hdFJvdW5kZWRSZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNkUwRTU2OUExODNCRkZFNjAwRTBFOEQ1IC8qIEZsb2F0Um91bmRlZFJl
Y3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmxvYXRSb3VuZGVkUmVjdC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2RTIxQzZCRjExMjYzMzg1MDBBN0JFMDIg
LyogR3JhcGhpY3NDb250ZXh0M0QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gR3JhcGhpY3NDb250ZXh0M0QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMTIxMzMsMTQgKzEyMTEyLDkgQEAKIAkJOEE5QTU4NkYxMUU4NEMzNjAwOEFDRkQxIC8qIEpT
UGVyZm9ybWFuY2VOYXZpZ2F0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEpTUGVyZm9ybWFuY2VOYXZpZ2F0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CThBOUE1ODczMTFFODRDODEwMDhBQ0ZEMSAvKiBKU1BlcmZvcm1hbmNlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTUGVyZm9ybWFuY2UuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJOEE5QTU4NzcxMUU4NEM5ODAwOEFDRkQxIC8qIEpTUGVyZm9ybWFuY2VUaW1p
bmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNQZXJmb3JtYW5jZVRpbWlu
Zy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4QUE2MUNGRDE0NEQ1OTVCMDBGMzcz
NTAgLyogV2ViS2l0Q1NTUmVnaW9uUnVsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBXZWJLaXRDU1NSZWdpb25SdWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJOEFBNjFDRkUxNDRENTk1QjAwRjM3MzUwIC8qIFdlYktpdENTU1JlZ2lvblJ1bGUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViS2l0Q1NTUmVnaW9uUnVsZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4QUI0QkM3NjEyNkZEQjcxMDBERUI3Mjcg
LyogSWdub3JlRGVzdHJ1Y3RpdmVXcml0ZUNvdW50SW5jcmVtZW50ZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSWdub3JlRGVzdHJ1Y3RpdmVXcml0ZUNvdW50SW5jcmVtZW50
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOEFDODIyRkExODBGQzAzMzAwRkI2
NEQ1IC8qIFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJOEFDODIyRkIxODBGQzAzMzAwRkI2NEQ1IC8qIFJlbmRlck5hbWVk
Rmxvd0ZyYWdtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlck5h
bWVkRmxvd0ZyYWdtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCThBQ0MyNENE
MTQ4RTI0QjIwMEVGQ0MwRCAvKiBKU1dlYktpdENTU1JlZ2lvblJ1bGUuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNXZWJLaXRDU1NSZWdpb25SdWxlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJOEFDQzI0Q0UxNDhFMjRCMjAwRUZDQzBEIC8qIEpT
V2ViS2l0Q1NTUmVnaW9uUnVsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBK
U1dlYktpdENTU1JlZ2lvblJ1bGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJOEFE
MEE1NTYxNEM4NzQyNTAwMEQ4M0M1IC8qIFdlYktpdENTU1JlZ2lvblJ1bGUuaWRsICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IFdlYktpdENTU1JlZ2lvblJ1bGUuaWRsOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk4QUY0RTU1MjExREM1QTM2MDAwRUQzREUgLyogUGVyZm9ybWFuY2VOYXZp
Z2F0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBlcmZvcm1h
bmNlTmF2aWdhdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCThBRjRFNTUz
MTFEQzVBMzYwMDBFRDNERSAvKiBQZXJmb3JtYW5jZU5hdmlnYXRpb24uaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUGVyZm9ybWFuY2VOYXZpZ2F0aW9uLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCThBRjRFNTU0MTFEQzVBMzYwMDBFRDNERSAvKiBQZXJmb3JtYW5j
ZU5hdmlnYXRpb24uaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFBlcmZvcm1hbmNlTmF2aWdh
dGlvbi5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNTQwNSwxMSArMTUzNzks
NiBAQAogCQlENzBBRDY1NjEzRTEzNDJCMDA1QjUwQjQgLyogUmVuZGVyUmVnaW9uLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlclJlZ2lvbi5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlENzJGNkQ3NzE1MzE1OUEzMDAxRUU0NEUgLyogRmxvd1RocmVhZENv
bnRyb2xsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRmxvd1Ro
cmVhZENvbnRyb2xsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlENzJGNkQ3
ODE1MzE1OUEzMDAxRUU0NEUgLyogRmxvd1RocmVhZENvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gRmxvd1RocmVhZENvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJRDc2MTNBNEExNDc0RUU5NTAwREI4NjA2IC8qIFdlYktpdE5hbWVk
Rmxvdy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViS2l0TmFtZWRGbG93LmlkbDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDc2MTNBNEQxNDc0RjEzRjAwREI4NjA2IC8qIFdl
YktpdE5hbWVkRmxvdy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJLaXRO
YW1lZEZsb3cuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDc2MTNBNEUxNDc0RjEz
RjAwREI4NjA2IC8qIFdlYktpdE5hbWVkRmxvdy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBXZWJLaXROYW1lZEZsb3cuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQlENzYxM0FDMjE0NzUzRTU2MDBEQjg2MDYgLyogSlNXZWJLaXROYW1lZEZsb3cuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNXZWJLaXROYW1lZEZsb3cu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlENzYxM0FDMzE0NzUzRTU2MDBEQjg2
MDYgLyogSlNXZWJLaXROYW1lZEZsb3cuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSlNXZWJLaXROYW1lZEZsb3cuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDhC
NjE1MkUxMDMyNDk1MTAwQzg1NTRBIC8qIENvb2tpZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBDb29raWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJREFBQ0Iz
RDkxNkYyNDE2NDAwNjY2MTM1IC8qIFBhZ2VDb25zb2xlQ2xpZW50LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBhZ2VDb25zb2xlQ2xpZW50LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJREFBQ0IzREExNkYyNDE2NDAwNjY2MTM1IC8qIFBhZ2VDb25z
b2xlQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBhZ2VDb25zb2xl
Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMjY1NCw4ICsyMjYyMyw2
IEBACiAJCQkJQTg0RUJEODEwQ0I4Qzk3NzAwMDc5NjA5IC8qIEpTU3R5bGVTaGVldExpc3QuaCAq
LywKIAkJCQk0OTgzOTEzRDBGMUU3Njc1MDBDMjM3ODIgLyogSlNXZWJLaXRDU1NNYXRyaXguY3Bw
ICovLAogCQkJCTQ5ODM5MTNFMEYxRTc2NzUwMEMyMzc4MiAvKiBKU1dlYktpdENTU01hdHJpeC5o
ICovLAotCQkJCThBQ0MyNENEMTQ4RTI0QjIwMEVGQ0MwRCAvKiBKU1dlYktpdENTU1JlZ2lvblJ1
bGUuY3BwICovLAotCQkJCThBQ0MyNENFMTQ4RTI0QjIwMEVGQ0MwRCAvKiBKU1dlYktpdENTU1Jl
Z2lvblJ1bGUuaCAqLywKIAkJCQkzRjJCMzNFOTE2NUFGMTU1MDBFMzk4N0MgLyogSlNXZWJLaXRD
U1NWaWV3cG9ydFJ1bGUuY3BwICovLAogCQkJCTNGMkIzM0VBMTY1QUYxNTUwMEUzOTg3QyAvKiBK
U1dlYktpdENTU1ZpZXdwb3J0UnVsZS5oICovLAogCQkJKTsKQEAgLTIyNjk1LDggKzIyNjYyLDYg
QEAKIAkJCQlCQzYwRDdCRjBEMjlBNDYzMDBCOTkxOEYgLyogSlNET01FeGNlcHRpb24uaCAqLywK
IAkJCQk2NURGMzFFMzA5RDFDQzYwMDAwQkUzMjUgLyogSlNET01JbXBsZW1lbnRhdGlvbi5jcHAg
Ki8sCiAJCQkJNjVERjMxRTQwOUQxQ0M2MDAwMEJFMzI1IC8qIEpTRE9NSW1wbGVtZW50YXRpb24u
aCAqLywKLQkJCQk1MkNDQTlFMDE1RTNGNjJDMDA1M0M3N0YgLyogSlNET01OYW1lZEZsb3dDb2xs
ZWN0aW9uLmNwcCAqLywKLQkJCQk1MkNDQTlFMTE1RTNGNjJDMDA1M0M3N0YgLyogSlNET01OYW1l
ZEZsb3dDb2xsZWN0aW9uLmggKi8sCiAJCQkJMEY0OTY2QTQxREI0MEM0MzAwQTI3NEJCIC8qIEpT
RE9NUG9pbnQuY3BwICovLAogCQkJCTBGNDk2NkE1MURCNDBDNDMwMEEyNzRCQiAvKiBKU0RPTVBv
aW50LmggKi8sCiAJCQkJMEY0OTY2QTYxREI0MEM0MzAwQTI3NEJCIC8qIEpTRE9NUG9pbnRJbml0
LmNwcCAqLywKQEAgLTIyNzQ3LDggKzIyNzEyLDYgQEAKIAkJCQk5QjA5OEJFNzFGM0Q2QUY2MDAy
REQ1NjIgLyogSlNTdHJpbmdDYWxsYmFjay5oICovLAogCQkJCTY1REYzMUVGMDlEMUNDNjAwMDBC
RTMyNSAvKiBKU1RleHQuY3BwICovLAogCQkJCTY1REYzMUYwMDlEMUNDNjAwMDBCRTMyNSAvKiBK
U1RleHQuaCAqLywKLQkJCQlENzYxM0FDMjE0NzUzRTU2MDBEQjg2MDYgLyogSlNXZWJLaXROYW1l
ZEZsb3cuY3BwICovLAotCQkJCUQ3NjEzQUMzMTQ3NTNFNTYwMERCODYwNiAvKiBKU1dlYktpdE5h
bWVkRmxvdy5oICovLAogCQkJCTgzRjU3MEFFMUM1MzI2OEUwMDdGRDZDQiAvKiBKU1hNTERvY3Vt
ZW50LmNwcCAqLywKIAkJCQk4M0Y1NzBBRDFDNTMyNjhFMDA3RkQ2Q0IgLyogSlNYTUxEb2N1bWVu
dC5oICovLAogCQkJKTsKQEAgLTI1ODY3LDkgKzI1ODMwLDYgQEAKIAkJCQk0OTgzOTE1NTBGMUU3
NzY5MDBDMjM3ODIgLyogV2ViS2l0Q1NTTWF0cml4LmNwcCAqLywKIAkJCQk0OTgzOTE1NjBGMUU3
NzY5MDBDMjM3ODIgLyogV2ViS2l0Q1NTTWF0cml4LmggKi8sCiAJCQkJNDk4MzkxNTcwRjFFNzc2
OTAwQzIzNzgyIC8qIFdlYktpdENTU01hdHJpeC5pZGwgKi8sCi0JCQkJOEFBNjFDRkQxNDRENTk1
QjAwRjM3MzUwIC8qIFdlYktpdENTU1JlZ2lvblJ1bGUuY3BwICovLAotCQkJCThBQTYxQ0ZFMTQ0
RDU5NUIwMEYzNzM1MCAvKiBXZWJLaXRDU1NSZWdpb25SdWxlLmggKi8sCi0JCQkJOEFEMEE1NTYx
NEM4NzQyNTAwMEQ4M0M1IC8qIFdlYktpdENTU1JlZ2lvblJ1bGUuaWRsICovLAogCQkJCTNGRkZG
OUE2MTU5RDlBNTUwMDIwQkJENSAvKiBXZWJLaXRDU1NWaWV3cG9ydFJ1bGUuY3BwICovLAogCQkJ
CTNGRkZGOUE3MTU5RDlBNTUwMDIwQkJENSAvKiBXZWJLaXRDU1NWaWV3cG9ydFJ1bGUuaCAqLywK
IAkJCQkzRjJCMzNFMzE2NUFCRDM1MDBFMzk4N0MgLyogV2ViS2l0Q1NTVmlld3BvcnRSdWxlLmlk
bCAqLywKQEAgLTI1OTU0LDcgKzI1OTE0LDYgQEAKIAkJCQkwODg1MDY3RTExREEwNDVCMDAxODJC
OTggLyogUGFpbnRQaGFzZS5oICovLAogCQkJCUIyQjFGNzE0MEQwMENBQTgwMDRBRUE2NCAvKiBQ
b2ludGVyRXZlbnRzSGl0UnVsZXMuY3BwICovLAogCQkJCUIyQjFGNzE1MEQwMENBQTgwMDRBRUE2
NCAvKiBQb2ludGVyRXZlbnRzSGl0UnVsZXMuaCAqLywKLQkJCQk2QzcwQTgxNDE3NzA3QzQ5MDA5
QTQ0NkUgLyogUmVnaW9uT3ZlcnNldFN0YXRlLmggKi8sCiAJCQkJQjU5RUQyM0ExODI3MjY3OTAw
NkQ1NjRDIC8qIFJlbmRlckFuY2VzdG9ySXRlcmF0b3IuaCAqLywKIAkJCQk3Q0Q0OTRDQTFBODZF
QjFEMDAwQTg3RUMgLyogUmVuZGVyQXR0YWNobWVudC5jcHAgKi8sCiAJCQkJN0NENDk0Q0IxQTg2
RUIxRDAwMEE4N0VDIC8qIFJlbmRlckF0dGFjaG1lbnQuaCAqLywKQEAgLTI2MzExLDkgKzI2Mjcw
LDYgQEAKIAkJCQlBODE4NUYzNjA5NzY1NzY1MDA1ODI2RDkgLyogRE9NSW1wbGVtZW50YXRpb24u
Y3BwICovLAogCQkJCUE4MTg1RjMzMDk3NjU3NjUwMDU4MjZEOSAvKiBET01JbXBsZW1lbnRhdGlv
bi5oICovLAogCQkJCTkzRUVDMUU5MDlDMjg3NzcwMEM1MTVEMSAvKiBET01JbXBsZW1lbnRhdGlv
bi5pZGwgKi8sCi0JCQkJNTJCNkM5QkQxNUUzRjRERjAwNjkwQjA1IC8qIERPTU5hbWVkRmxvd0Nv
bGxlY3Rpb24uY3BwICovLAotCQkJCTUyQjZDOUJFMTVFM0Y0REYwMDY5MEIwNSAvKiBET01OYW1l
ZEZsb3dDb2xsZWN0aW9uLmggKi8sCi0JCQkJNTJCNkM5QkYxNUUzRjRERjAwNjkwQjA1IC8qIERP
TU5hbWVkRmxvd0NvbGxlY3Rpb24uaWRsICovLAogCQkJCTBGNDk2Njk5MURCNDA4QzEwMEEyNzRC
QiAvKiBET01Qb2ludC5oICovLAogCQkJCTBGNDk2NjlBMURCNDA4QzEwMEEyNzRCQiAvKiBET01Q
b2ludC5pZGwgKi8sCiAJCQkJMEY0OTY2QTIxREI0MDkxMDAwQTI3NEJCIC8qIERPTVBvaW50SW5p
dC5oICovLApAQCAtMjY0NjEsOCArMjY0MTcsNiBAQAogCQkJCUM2RjA4RkI5MTQzMEZFOEYwMDY4
NTg0OSAvKiBNdXRhdGlvblJlY29yZC5jcHAgKi8sCiAJCQkJQzZGMDhGQkExNDMwRkU4RjAwNjg1
ODQ5IC8qIE11dGF0aW9uUmVjb3JkLmggKi8sCiAJCQkJQzZGMDhGQkIxNDMwRkU4RjAwNjg1ODQ5
IC8qIE11dGF0aW9uUmVjb3JkLmlkbCAqLywKLQkJCQk1MkI2QzlDMDE1RTNGNERGMDA2OTBCMDUg
LyogTmFtZWRGbG93Q29sbGVjdGlvbi5jcHAgKi8sCi0JCQkJNTJCNkM5QzExNUUzRjRERjAwNjkw
QjA1IC8qIE5hbWVkRmxvd0NvbGxlY3Rpb24uaCAqLywKIAkJCQlCQ0YzNEEzNjExQTIzMUNEMDBD
NzE4MDQgLyogTmFtZWROb2RlTWFwLmNwcCAqLywKIAkJCQlBODE4NzIxODA5NzdEM0MwMDA1ODI2
RDkgLyogTmFtZWROb2RlTWFwLmggKi8sCiAJCQkJODVBQ0E5RjkwQTlCNjMxMDAwNjcxRTkwIC8q
IE5hbWVkTm9kZU1hcC5pZGwgKi8sCkBAIC0yNjY0MSw5ICsyNjU5NSw2IEBACiAJCQkJMzFDMEZG
MUIwRTRDRUI2RTAwN0Q2RkU1IC8qIFdlYktpdEFuaW1hdGlvbkV2ZW50LmNwcCAqLywKIAkJCQkz
MUMwRkYxQzBFNENFQjZFMDA3RDZGRTUgLyogV2ViS2l0QW5pbWF0aW9uRXZlbnQuaCAqLywKIAkJ
CQkzMUMwRkYxRDBFNENFQjZFMDA3RDZGRTUgLyogV2ViS2l0QW5pbWF0aW9uRXZlbnQuaWRsICov
LAotCQkJCUQ3NjEzQTRFMTQ3NEYxM0YwMERCODYwNiAvKiBXZWJLaXROYW1lZEZsb3cuY3BwICov
LAotCQkJCUQ3NjEzQTREMTQ3NEYxM0YwMERCODYwNiAvKiBXZWJLaXROYW1lZEZsb3cuaCAqLywK
LQkJCQlENzYxM0E0QTE0NzRFRTk1MDBEQjg2MDYgLyogV2ViS2l0TmFtZWRGbG93LmlkbCAqLywK
IAkJCQkzMUMwRkYxRTBFNENFQjZFMDA3RDZGRTUgLyogV2ViS2l0VHJhbnNpdGlvbkV2ZW50LmNw
cCAqLywKIAkJCQkzMUMwRkYxRjBFNENFQjZFMDA3RDZGRTUgLyogV2ViS2l0VHJhbnNpdGlvbkV2
ZW50LmggKi8sCiAJCQkJMzFDMEZGMjAwRTRDRUI2RTAwN0Q2RkU1IC8qIFdlYktpdFRyYW5zaXRp
b25FdmVudC5pZGwgKi8sCkBAIC0yNzc4MCw3ICsyNzczMSw2IEBACiAJCQkJODM2QUNFQzMxRUNB
NjJDODAwNEJEMDEyIC8qIERPTU1hdHJpeFJlYWRPbmx5LmggaW4gSGVhZGVycyAqLywKIAkJCQlB
OUM2RTRFNDBENzQ1RTA1MDA2NDQyRTkgLyogRE9NTWltZVR5cGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCUE5QzZFNEU4MEQ3NDVFMTgwMDY0NDJFOSAvKiBET01NaW1lVHlwZUFycmF5LmggaW4gSGVh
ZGVycyAqLywKLQkJCQk1MkI2QzlDMzE1RTNGNERGMDA2OTBCMDUgLyogRE9NTmFtZWRGbG93Q29s
bGVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFDRTUzRTgwQThEMThFNzAwMjI5NDdEIC8q
IERPTVBhcnNlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0E1NDg4MTcxNEU0MzJBMTAwNkFFMDVB
IC8qIERPTVBhdGNoU3VwcG9ydC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTlDNkU0RUMwRDc0NUUy
QjAwNjQ0MkU5IC8qIERPTVBsdWdpbi5oIGluIEhlYWRlcnMgKi8sCkBAIC0yODU2Niw3ICsyODUx
Niw2IEBACiAJCQkJODM2QUNFRDYxRUNBQUIxOTAwNEJEMDEyIC8qIEpTRE9NTWF0cml4UmVhZE9u
bHkuaCBpbiBIZWFkZXJzICovLAogCQkJCUE5RDI0ODA3MEQ3NTdFN0QwMEZERjk1OSAvKiBKU0RP
TU1pbWVUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOUQyNDgwOTBENzU3RTdEMDBGREY5NTkg
LyogSlNET01NaW1lVHlwZUFycmF5LmggaW4gSGVhZGVycyAqLywKLQkJCQk1MkNDQTlFMzE1RTNG
NjJDMDA1M0M3N0YgLyogSlNET01OYW1lZEZsb3dDb2xsZWN0aW9uLmggaW4gSGVhZGVycyAqLywK
IAkJCQk3QzgxMzlBNzFFRDYyODc0MDBDRTI2RTggLyogSlNET01PcGVyYXRpb24uaCBpbiBIZWFk
ZXJzICovLAogCQkJCTdDODEzOUE4MUVENjI4NzQwMENFMjZFOCAvKiBKU0RPTU9wZXJhdGlvblJl
dHVybmluZ1Byb21pc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQ0U1M0UwMEE4RDE4ODEwMDIy
OTQ3RCAvKiBKU0RPTVBhcnNlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0yOTE2OCw3ICsyOTExNyw2
IEBACiAJCQkJMzFBMDg5OEMxRTczOEQ1QTAwM0I2NjA5IC8qIEpTV2ViR1BVVGV4dHVyZURlc2Ny
aXB0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxQzBGRjNFMEU0Q0VGQUMwMDdENkZFNSAvKiBK
U1dlYktpdEFuaW1hdGlvbkV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk0OTgzOTE0MDBGMUU3
Njc1MDBDMjM3ODIgLyogSlNXZWJLaXRDU1NNYXRyaXguaCBpbiBIZWFkZXJzICovLAotCQkJCThB
RDBBNTk1MTRDODgzMzYwMDBEODNDNSAvKiBKU1dlYktpdENTU1JlZ2lvblJ1bGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTNGMkIzM0VGMTY1QUYxNTYwMEUzOTg3QyAvKiBKU1dlYktpdENTU1ZpZXdw
b3J0UnVsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0NDNjk5NDExOTFFQzVGNTAwQUYyMjcwIC8q
IEpTV2ViS2l0TmFtZXNwYWNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkRBN0MyNzE4ODMzMzMy
MDBDOTU0QjUgLyogSlNXZWJLaXRQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUV2ZW50LmggaW4g
SGVhZGVycyAqLywKQEAgLTI5NDM3LDcgKzI5Mzg1LDYgQEAKIAkJCQlENkU1MjhBNDE0OUE5MjZE
MDBFRkUxRjMgLyogTXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXAuaCBpbiBIZWFkZXJzICov
LAogCQkJCUQ2RTI3NkIwMTQ2Mzc0NTUwMDFEMjgwQSAvKiBNdXRhdGlvbk9ic2VydmVyUmVnaXN0
cmF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlDNkYwOEZCRDE0MzBGRThGMDA2ODU4NDkgLyog
TXV0YXRpb25SZWNvcmQuaCBpbiBIZWFkZXJzICovLAotCQkJCTUyQjZDOUM2MTVFM0Y0REYwMDY5
MEIwNSAvKiBOYW1lZEZsb3dDb2xsZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMTRCRTNB
NzFCMzEwM0ZCMDAxNDE5ODIgLyogTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBODE4NzIyMzA5NzdEM0MwMDA1ODI2RDkgLyogTmFtZWROb2RlTWFwLmggaW4g
SGVhZGVycyAqLywKIAkJCQlBODE4NzIxRTA5NzdEM0MwMDA1ODI2RDkgLyogTmFtZU5vZGVMaXN0
LmggaW4gSGVhZGVycyAqLywKQEAgLTI5NzM3LDcgKzI5Njg0LDYgQEAKIAkJCQk1Q0VFRTQzNjFG
NUY4RjIxMDAxNEE1RjUgLyogUmVjdEVkZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQk5ODMxQUU0
QTE1NDIyNUM5MDBGRTI2NDQgLyogUmVmZXJyZXJQb2xpY3kuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUJDQUI0MTgyMTNFMzU2RTgwMEQ4QUFGMyAvKiBSZWdpb24uaCBpbiBIZWFkZXJzICovLAotCQkJ
CTZDRERFOEQwMTc3MEJCMjIwMDE2RTA3MiAvKiBSZWdpb25PdmVyc2V0U3RhdGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTI2Qjk5OThGMTgwM0FFNzIwMEQwMTEyMSAvKiBSZWdpc3RlckFsbG9jYXRv
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODUwMzFCNEMwQTQ0RUZDNzAwRjk5MkUwIC8qIFJlZ2lz
dGVyZWRFdmVudExpc3RlbmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTc4RjQzRjFERTBCNjMw
MDAzREZDNkEgLyogUmVqZWN0ZWRQcm9taXNlVHJhY2tlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0z
MDgwNCw3ICszMDc1MCw2IEBACiAJCQkJMzFDMEZGMjIwRTRDRUI2RTAwN0Q2RkU1IC8qIFdlYktp
dEFuaW1hdGlvbkV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk1REZFQkFCNzE4NTkyQjZEMDBD
NzVCRUIgLyogV2ViS2l0QXZhaWxhYmlsaXR5LmggaW4gSGVhZGVycyAqLywKIAkJCQk0OTgzOTE1
OTBGMUU3NzY5MDBDMjM3ODIgLyogV2ViS2l0Q1NTTWF0cml4LmggaW4gSGVhZGVycyAqLywKLQkJ
CQk4QUE2MUQwMDE0NEQ1OTVCMDBGMzczNTAgLyogV2ViS2l0Q1NTUmVnaW9uUnVsZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJM0ZGRkY5QTkxNTlEOUE1NTAwMjBCQkQ1IC8qIFdlYktpdENTU1ZpZXdw
b3J0UnVsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQwNjIxNDUxREE2MzlCQTAwQTdGQjI2IC8q
IFdlYktpdE1lZGlhS2V5TWVzc2FnZUV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDA2MjE1
MTFEQTYzQTlGMDBBN0ZCMjYgLyogV2ViS2l0TWVkaWFLZXlOZWVkZWRFdmVudC5oIGluIEhlYWRl
cnMgKi8sCkBAIC0zMTg1Nyw3ICszMTgwMiw2IEBACiAJCQkJODM2QUNFQzIxRUNBNjJDODAwNEJE
MDEyIC8qIERPTU1hdHJpeFJlYWRPbmx5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE5QzZFNEUz
MEQ3NDVFMDUwMDY0NDJFOSAvKiBET01NaW1lVHlwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlB
OUM2RTRFNzBENzQ1RTE4MDA2NDQyRTkgLyogRE9NTWltZVR5cGVBcnJheS5jcHAgaW4gU291cmNl
cyAqLywKLQkJCQk1MkI2QzlDMjE1RTNGNERGMDA2OTBCMDUgLyogRE9NTmFtZWRGbG93Q29sbGVj
dGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUNFNTNFNzBBOEQxOEU3MDAyMjk0N0QgLyog
RE9NUGFyc2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdBNTQ4ODE4MTRFNDMyQTEwMDZBRTA1
QSAvKiBET01QYXRjaFN1cHBvcnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTlDNkU0RUIwRDc0
NUUyQjAwNjQ0MkU5IC8qIERPTVBsdWdpbi5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMyNTk0LDcg
KzMyNTM4LDYgQEAKIAkJCQk4MzZBQ0VENTFFQ0FBQjE5MDA0QkQwMTIgLyogSlNET01NYXRyaXhS
ZWFkT25seS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOUQyNDgwNjBENzU3RTdEMDBGREY5NTkg
LyogSlNET01NaW1lVHlwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOUQyNDgwODBENzU3RTdE
MDBGREY5NTkgLyogSlNET01NaW1lVHlwZUFycmF5LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTUy
Q0NBOUUyMTVFM0Y2MkMwMDUzQzc3RiAvKiBKU0RPTU5hbWVkRmxvd0NvbGxlY3Rpb24uY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMUFDRTUzREYwQThEMTg4MTAwMjI5NDdEIC8qIEpTRE9NUGFyc2Vy
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE5RDI0N0ZFMEQ3NTdFNjkwMEZERjk1OSAvKiBKU0RP
TVBsdWdpbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOUQyNDgwMDBENzU3RTY5MDBGREY5NTkg
LyogSlNET01QbHVnaW5BcnJheS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMzMjQ5LDE0ICszMzE5
MiwxMiBAQAogCQkJCTMxQTA4OThBMUU3MzhENUEwMDNCNjYwOSAvKiBKU1dlYkdQVVRleHR1cmVE
ZXNjcmlwdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTMxQzBGRjNEMEU0Q0VGQUMwMDdENkZF
NSAvKiBKU1dlYktpdEFuaW1hdGlvbkV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ5ODM5
MTNGMEYxRTc2NzUwMEMyMzc4MiAvKiBKU1dlYktpdENTU01hdHJpeC5jcHAgaW4gU291cmNlcyAq
LywKLQkJCQk4QUQwQTU5NDE0Qzg4MzM2MDAwRDgzQzUgLyogSlNXZWJLaXRDU1NSZWdpb25SdWxl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTNGMkIzM0VFMTY1QUYxNTYwMEUzOTg3QyAvKiBKU1dl
YktpdENTU1ZpZXdwb3J0UnVsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDREE5OERBMzE2MDE0
NjQxMDBGRUEzQjEgLyogSlNXZWJLaXRNZWRpYUtleUVycm9yLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUNEQTk4RERGMTYwMjZBMzcwMEZFQTNCMSAvKiBKU1dlYktpdE1lZGlhS2V5TWVzc2FnZUV2
ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNEQTk4REUwMTYwMjZBMzcwMEZFQTNCMSAvKiBK
U1dlYktpdE1lZGlhS2V5TmVlZGVkRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RBOThF
MDQxNjAzOUUxQTAwRkVBM0IxIC8qIEpTV2ViS2l0TWVkaWFLZXlzLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUNEQTk4RTA2MTYwMzlFMUYwMEZFQTNCMSAvKiBKU1dlYktpdE1lZGlhS2V5U2Vzc2lv
bi5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlENzYxM0FDNDE0NzUzRTU2MDBEQjg2MDYgLyogSlNX
ZWJLaXROYW1lZEZsb3cuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDNjk5NDAxOTFFQzVGNTAw
QUYyMjcwIC8qIEpTV2ViS2l0TmFtZXNwYWNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGREE3
QzI2MTg4MzMzMzIwMEM5NTRCNSAvKiBKU1dlYktpdFBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5
RXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDk0QkQ3OUQwRjU1Qzk0QzAwNzQ3ODI4IC8q
IEpTV2ViS2l0UG9pbnQuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zMzUwMyw3ICszMzQ0NCw2IEBA
CiAJCQkJRDZFNTI4QTMxNDlBOTI2RDAwRUZFMUYzIC8qIE11dGF0aW9uT2JzZXJ2ZXJJbnRlcmVz
dEdyb3VwLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUQ2RTI3NkFGMTQ2Mzc0NTUwMDFEMjgwQSAv
KiBNdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUM2
RjA4RkJDMTQzMEZFOEYwMDY4NTg0OSAvKiBNdXRhdGlvblJlY29yZC5jcHAgaW4gU291cmNlcyAq
LywKLQkJCQk1MkI2QzlDNTE1RTNGNERGMDA2OTBCMDUgLyogTmFtZWRGbG93Q29sbGVjdGlvbi5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkzMTRCRTNBNjFCMzEwM0ZCMDAxNDE5ODIgLyogTmFtZWRJ
bWFnZUdlbmVyYXRlZEltYWdlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDRjM0QTM3MTFBMjMx
Q0QwMEM3MTgwNCAvKiBOYW1lZE5vZGVNYXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTgxODcy
MjQwOTc3RDNDMDAwNTgyNkQ5IC8qIE5hbWVOb2RlTGlzdC5jcHAgaW4gU291cmNlcyAqLywKQEAg
LTM0NjExLDE0ICszNDU1MSwxMiBAQAogCQkJCUY0ODIyMzEwMUUzODY5QjgwMDY2RkM3OSAvKiBX
ZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMzFDMEZGMjEw
RTRDRUI2RTAwN0Q2RkU1IC8qIFdlYktpdEFuaW1hdGlvbkV2ZW50LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTQ5ODM5MTU4MEYxRTc3NjkwMEMyMzc4MiAvKiBXZWJLaXRDU1NNYXRyaXguY3BwIGlu
IFNvdXJjZXMgKi8sCi0JCQkJOEFBNjFDRkYxNDRENTk1QjAwRjM3MzUwIC8qIFdlYktpdENTU1Jl
Z2lvblJ1bGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJM0ZGRkY5QTgxNTlEOUE1NTAwMjBCQkQ1
IC8qIFdlYktpdENTU1ZpZXdwb3J0UnVsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTE0MTRC
NTEzQTBGMDUwMDAxOTk5NkMgLyogV2ViS2l0Rm9udEZhbWlseU5hbWVzLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTJEMDYyMTQ0MURBNjM5QjYwMEE3RkIyNiAvKiBXZWJLaXRNZWRpYUtleU1lc3Nh
Z2VFdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDA2MjE1MjFEQTYzQUEyMDBBN0ZCMjYg
LyogV2ViS2l0TWVkaWFLZXlOZWVkZWRFdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDA2
MjE0RDFEQTYzQThCMDBBN0ZCMjYgLyogV2ViS2l0TWVkaWFLZXlzLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTJEMDYyMTRGMURBNjNBOTEwMEE3RkIyNiAvKiBXZWJLaXRNZWRpYUtleVNlc3Npb24u
Y3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJRDc2MTNBNTAxNDc0RjEzRjAwREI4NjA2IC8qIFdlYktp
dE5hbWVkRmxvdy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzQ4QTZEMDE5MUM5RDY1MDAwMjY2
NzQgLyogV2ViS2l0TmFtZXNwYWNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1REVCREEzMTZG
QjkwODcwMDgzNkZFMCAvKiBXZWJLaXRQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUV2ZW50LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTMxQzBGRjI0MEU0Q0VCNkUwMDdENkZFNSAvKiBXZWJLaXRU
cmFuc2l0aW9uRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0NTU1J1bGVDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTQ1NTUnVsZUN1c3RvbS5jcHAJKHJldmlzaW9uIDIyMjI1NykKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTUnVsZUN1c3RvbS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQ2LDkgKzQ2LDcgQEAKICNpbmNsdWRlICJKU0NTU1N1cHBvcnRzUnVsZS5oIgog
I2luY2x1ZGUgIkpTTm9kZS5oIgogI2luY2x1ZGUgIkpTU3R5bGVTaGVldEN1c3RvbS5oIgotI2lu
Y2x1ZGUgIkpTV2ViS2l0Q1NTUmVnaW9uUnVsZS5oIgogI2luY2x1ZGUgIkpTV2ViS2l0Q1NTVmll
d3BvcnRSdWxlLmgiCi0jaW5jbHVkZSAiV2ViS2l0Q1NTUmVnaW9uUnVsZS5oIgogI2luY2x1ZGUg
IldlYktpdENTU1ZpZXdwb3J0UnVsZS5oIgogCiB1c2luZyBuYW1lc3BhY2UgSlNDOwpAQCAtODUs
MTAgKzgzLDYgQEAgSlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEV4ZWNTdGF0ZSosIEpTRAogICAg
IGNhc2UgQ1NTUnVsZTo6V0VCS0lUX1ZJRVdQT1JUX1JVTEU6CiAgICAgICAgIHJldHVybiBjcmVh
dGVXcmFwcGVyPFdlYktpdENTU1ZpZXdwb3J0UnVsZT4oZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKHJ1
bGUpKTsKICNlbmRpZgotI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKLSAgICBjYXNlIENTU1J1bGU6
OldFQktJVF9SRUdJT05fUlVMRToKLSAgICAgICAgcmV0dXJuIGNyZWF0ZVdyYXBwZXI8V2ViS2l0
Q1NTUmVnaW9uUnVsZT4oZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKHJ1bGUpKTsKLSNlbmRpZgogICAg
IGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBjcmVhdGVXcmFwcGVyPENTU1J1bGU+KGdsb2JhbE9i
amVjdCwgV1RGTW92ZShydWxlKSk7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NT
U0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAJKHJldmlzaW9uIDIyMjI1NykK
KysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00MTcsMTQgKzQxNyw2IEBAIHN0YXRpYyBjb25zdCBDU1NQcm9wZXJ0
eUlEIGNvbXB1dGVkUHJvcGUKICAgICBDU1NQcm9wZXJ0eVdlYmtpdFVzZXJEcmFnLAogICAgIENT
U1Byb3BlcnR5V2Via2l0VXNlck1vZGlmeSwKICAgICBDU1NQcm9wZXJ0eVdlYmtpdFVzZXJTZWxl
Y3QsCi0jaWYgRU5BQkxFKENTU19SRUdJT05TKQotICAgIENTU1Byb3BlcnR5V2Via2l0Rmxvd0lu
dG8sCi0gICAgQ1NTUHJvcGVydHlXZWJraXRGbG93RnJvbSwKLSAgICBDU1NQcm9wZXJ0eVdlYmtp
dFJlZ2lvbkJyZWFrQWZ0ZXIsCi0gICAgQ1NTUHJvcGVydHlXZWJraXRSZWdpb25CcmVha0JlZm9y
ZSwKLSAgICBDU1NQcm9wZXJ0eVdlYmtpdFJlZ2lvbkJyZWFrSW5zaWRlLAotICAgIENTU1Byb3Bl
cnR5V2Via2l0UmVnaW9uRnJhZ21lbnQsCi0jZW5kaWYKICAgICBDU1NQcm9wZXJ0eVNoYXBlSW1h
Z2VUaHJlc2hvbGQsCiAgICAgQ1NTUHJvcGVydHlTaGFwZU1hcmdpbiwKICAgICBDU1NQcm9wZXJ0
eVNoYXBlT3V0c2lkZSwKQEAgLTE5MTYsOCArMTkwOCw2IEBAIHN0YXRpYyBSZWY8Q1NTVmFsdWVM
aXN0PiBjb250ZW50VG9DU1NWYWwKICAgICAgICAgZWxzZSBpZiAoaXM8VGV4dENvbnRlbnREYXRh
PigqY29udGVudERhdGEpKQogICAgICAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5j
cmVhdGVWYWx1ZShkb3duY2FzdDxUZXh0Q29udGVudERhdGE+KCpjb250ZW50RGF0YSkudGV4dCgp
LCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1NUUklORykpOwogICAgIH0KLSAgICBpZiAoc3R5bGUu
aGFzRmxvd0Zyb20oKSkKLSAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVW
YWx1ZShzdHlsZS5yZWdpb25UaHJlYWQoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19TVFJJTkcp
KTsKICAgICByZXR1cm4gbGlzdDsKIH0KIApAQCAtMjI5MCwyNCArMjI4MCw2IEBAIHN0YXRpYyBD
U1NWYWx1ZUlEIGNvbnZlcnRUb0NvbHVtbkJyZWFrKEIKICAgICByZXR1cm4gQ1NTVmFsdWVBdXRv
OwogfQogCi0jaWYgRU5BQkxFKENTU19SRUdJT05TKQotc3RhdGljIENTU1ZhbHVlSUQgY29udmVy
dFRvUmVnaW9uQnJlYWsoQnJlYWtCZXR3ZWVuIHZhbHVlKQotewotICAgIGlmICh2YWx1ZSA9PSBS
ZWdpb25CcmVha0JldHdlZW4pCi0gICAgICAgIHJldHVybiBDU1NWYWx1ZUFsd2F5czsKLSAgICBp
ZiAodmFsdWUgPT0gQXZvaWRCcmVha0JldHdlZW4gfHwgdmFsdWUgPT0gQXZvaWRSZWdpb25CcmVh
a0JldHdlZW4pCi0gICAgICAgIHJldHVybiBDU1NWYWx1ZUF2b2lkOwotICAgIHJldHVybiBDU1NW
YWx1ZUF1dG87Ci19Ci0gICAgCi1zdGF0aWMgQ1NTVmFsdWVJRCBjb252ZXJ0VG9SZWdpb25CcmVh
ayhCcmVha0luc2lkZSB2YWx1ZSkKLXsKLSAgICBpZiAodmFsdWUgPT0gQXZvaWRCcmVha0luc2lk
ZSB8fCB2YWx1ZSA9PSBBdm9pZFJlZ2lvbkJyZWFrSW5zaWRlKQotICAgICAgICByZXR1cm4gQ1NT
VmFsdWVBdm9pZDsKLSAgICByZXR1cm4gQ1NTVmFsdWVBdXRvOwotfQotI2VuZGlmCi0KIHN0YXRp
YyBpbmxpbmUgYm9vbCBpc05vblJlcGxhY2VkSW5saW5lKFJlbmRlck9iamVjdCYgcmVuZGVyZXIp
CiB7CiAgICAgcmV0dXJuIHJlbmRlcmVyLmlzSW5saW5lKCkgJiYgIXJlbmRlcmVyLmlzUmVwbGFj
ZWQoKTsKQEAgLTI5NDUsMTQgKzI5MTcsNiBAQCBSZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVkU3R5
bGVFeHRyYWN0b3I6CiAgICAgICAgICAgICByZXR1cm4gem9vbUFkanVzdGVkUGl4ZWxWYWx1ZShz
dHlsZS0+Y29sdW1uV2lkdGgoKSwgKnN0eWxlKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVRh
YlNpemU6CiAgICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHN0eWxl
LT50YWJTaXplKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKTsKLSNpZiBFTkFCTEUo
Q1NTX1JFR0lPTlMpCi0gICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRSZWdpb25CcmVha0Fm
dGVyOgotICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShjb252ZXJ0
VG9SZWdpb25CcmVhayhzdHlsZS0+YnJlYWtBZnRlcigpKSk7Ci0gICAgICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRSZWdpb25CcmVha0JlZm9yZToKLSAgICAgICAgICAgIHJldHVybiBjc3NWYWx1
ZVBvb2wuY3JlYXRlVmFsdWUoY29udmVydFRvUmVnaW9uQnJlYWsoc3R5bGUtPmJyZWFrQmVmb3Jl
KCkpKTsKLSAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFJlZ2lvbkJyZWFrSW5zaWRlOgot
ICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShjb252ZXJ0VG9SZWdp
b25CcmVhayhzdHlsZS0+YnJlYWtJbnNpZGUoKSkpOwotI2VuZGlmCiAgICAgICAgIGNhc2UgQ1NT
UHJvcGVydHlDdXJzb3I6IHsKICAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3Q7
CiAgICAgICAgICAgICBhdXRvKiBjdXJzb3JzID0gc3R5bGUtPmN1cnNvcnMoKTsKQEAgLTM4Mjgs
MTggKzM3OTIsNiBAQCBSZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6CiAg
ICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShkb3du
Y2FzdDxCb3hDbGlwUGF0aE9wZXJhdGlvbj4oKm9wZXJhdGlvbikucmVmZXJlbmNlQm94KCkpKTsK
ICAgICAgICAgICAgIHJldHVybiBXVEZNb3ZlKGxpc3QpOwogICAgICAgICB9Ci0jaWYgRU5BQkxF
KENTU19SRUdJT05TKQotICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Rmxvd0ludG86Ci0g
ICAgICAgICAgICBpZiAoIXN0eWxlLT5oYXNGbG93SW50bygpKQotICAgICAgICAgICAgICAgIHJl
dHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlTm9uZSk7Ci0g
ICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHN0eWxlLT5mbG93VGhy
ZWFkKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfU1RSSU5HKTsKLSAgICAgICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdEZsb3dGcm9tOgotICAgICAgICAgICAgaWYgKCFzdHlsZS0+aGFzRmxvd0Zy
b20oKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZp
ZXJWYWx1ZShDU1NWYWx1ZU5vbmUpOwotICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5j
cmVhdGVWYWx1ZShzdHlsZS0+cmVnaW9uVGhyZWFkKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1Nf
U1RSSU5HKTsKLSAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFJlZ2lvbkZyYWdtZW50Ogot
ICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShzdHlsZS0+cmVnaW9u
RnJhZ21lbnQoKSk7Ci0jZW5kaWYKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVNoYXBlTWFyZ2lu
OgogICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShzdHlsZS0+c2hh
cGVNYXJnaW4oKSwgKnN0eWxlKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVNoYXBlSW1hZ2VU
aHJlc2hvbGQ6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWVNYXBw
aW5ncy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1
ZU1hcHBpbmdzLmgJKHJldmlzaW9uIDIyMjI1NykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQ
cmltaXRpdmVWYWx1ZU1hcHBpbmdzLmgJKHdvcmtpbmcgY29weSkKQEAgLTIyNDUsMTggKzIyNDUs
MTIgQEAgdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTUwogICAgIGNhc2Ug
QXZvaWRQYWdlQnJlYWtCZXR3ZWVuOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1
ZUF2b2lkUGFnZTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBBdm9pZFJlZ2lvbkJyZWFrQmV0
d2VlbjoKLSAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVBdm9pZFJlZ2lvbjsKLSAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb2x1bW5CcmVha0JldHdlZW46CiAgICAgICAgIG1fdmFs
dWUudmFsdWVJRCA9IENTU1ZhbHVlQ29sdW1uOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFBh
Z2VCcmVha0JldHdlZW46CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlUGFnZTsK
ICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBSZWdpb25CcmVha0JldHdlZW46Ci0gICAgICAgIG1f
dmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlUmVnaW9uOwotICAgICAgICBicmVhazsKICAgICBjYXNl
IExlZnRQYWdlQnJlYWtCZXR3ZWVuOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1
ZUxlZnQ7CiAgICAgICAgIGJyZWFrOwpAQCAtMjI4NSwxNCArMjI3OSwxMCBAQCB0ZW1wbGF0ZTw+
IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlCiAgICAgICAgIHJldHVybiBBdm9pZENvbHVt
bkJyZWFrQmV0d2VlbjsKICAgICBjYXNlIENTU1ZhbHVlQXZvaWRQYWdlOgogICAgICAgICByZXR1
cm4gQXZvaWRQYWdlQnJlYWtCZXR3ZWVuOwotICAgIGNhc2UgQ1NTVmFsdWVBdm9pZFJlZ2lvbjoK
LSAgICAgICAgcmV0dXJuIEF2b2lkUmVnaW9uQnJlYWtCZXR3ZWVuOwogICAgIGNhc2UgQ1NTVmFs
dWVDb2x1bW46CiAgICAgICAgIHJldHVybiBDb2x1bW5CcmVha0JldHdlZW47CiAgICAgY2FzZSBD
U1NWYWx1ZVBhZ2U6CiAgICAgICAgIHJldHVybiBQYWdlQnJlYWtCZXR3ZWVuOwotICAgIGNhc2Ug
Q1NTVmFsdWVSZWdpb246Ci0gICAgICAgIHJldHVybiBSZWdpb25CcmVha0JldHdlZW47CiAgICAg
Y2FzZSBDU1NWYWx1ZUxlZnQ6CiAgICAgICAgIHJldHVybiBMZWZ0UGFnZUJyZWFrQmV0d2VlbjsK
ICAgICBjYXNlIENTU1ZhbHVlUmlnaHQ6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJv
cGVydGllcy5qc29uCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0
aWVzLmpzb24JKHJldmlzaW9uIDIyMjI1NykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9w
ZXJ0aWVzLmpzb24JKHdvcmtpbmcgY29weSkKQEAgLTE2MzksMTAgKzE2MzksOCBAQAogICAgICAg
ICAgICAgICAgICJ2ZXJzbyIsCiAgICAgICAgICAgICAgICAgImNvbHVtbiIsCiAgICAgICAgICAg
ICAgICAgInBhZ2UiLAotICAgICAgICAgICAgICAgICJyZWdpb24iLAogICAgICAgICAgICAgICAg
ICJhdm9pZC1jb2x1bW4iLAotICAgICAgICAgICAgICAgICJhdm9pZC1wYWdlIiwKLSAgICAgICAg
ICAgICAgICAiYXZvaWQtcmVnaW9uIgorICAgICAgICAgICAgICAgICJhdm9pZC1wYWdlIgogICAg
ICAgICAgICAgXSwKICAgICAgICAgICAgICJjb2RlZ2VuLXByb3BlcnRpZXMiOiB7CiAgICAgICAg
ICAgICAgICAgImluaXRpYWwiOiAiaW5pdGlhbEJyZWFrQmV0d2VlbiIKQEAgLTE2NjIsMTAgKzE2
NjAsOCBAQAogICAgICAgICAgICAgICAgICJ2ZXJzbyIsCiAgICAgICAgICAgICAgICAgImNvbHVt
biIsCiAgICAgICAgICAgICAgICAgInBhZ2UiLAotICAgICAgICAgICAgICAgICJyZWdpb24iLAog
ICAgICAgICAgICAgICAgICJhdm9pZC1jb2x1bW4iLAotICAgICAgICAgICAgICAgICJhdm9pZC1w
YWdlIiwKLSAgICAgICAgICAgICAgICAiYXZvaWQtcmVnaW9uIgorICAgICAgICAgICAgICAgICJh
dm9pZC1wYWdlIgogICAgICAgICAgICAgXSwKICAgICAgICAgICAgICJjb2RlZ2VuLXByb3BlcnRp
ZXMiOiB7CiAgICAgICAgICAgICAgICAgImluaXRpYWwiOiAiaW5pdGlhbEJyZWFrQmV0d2VlbiIK
QEAgLTE2ODAsOCArMTY3Niw3IEBACiAgICAgICAgICAgICAgICAgImF1dG8iLAogICAgICAgICAg
ICAgICAgICJhdm9pZCIsCiAgICAgICAgICAgICAgICAgImF2b2lkLWNvbHVtbiIsCi0gICAgICAg
ICAgICAgICAgImF2b2lkLXBhZ2UiLAotICAgICAgICAgICAgICAgICJhdm9pZC1yZWdpb24iCisg
ICAgICAgICAgICAgICAgImF2b2lkLXBhZ2UiCiAgICAgICAgICAgICBdLAogICAgICAgICAgICAg
ImNvZGVnZW4tcHJvcGVydGllcyI6IHsKICAgICAgICAgICAgICAgICAiaW5pdGlhbCI6ICJpbml0
aWFsQnJlYWtJbnNpZGUiCkBAIC02MDk1LDk1ICs2MDkwLDYgQEAKICAgICAgICAgICAgICAgICAi
dXJsIjogImh0dHBzOi8vd3d3LnczLm9yZy9UUi9jc3MtdWktNC8jcHJvcGRlZi11c2VyLXNlbGVj
dCIKICAgICAgICAgICAgIH0KICAgICAgICAgfSwKLSAgICAgICAgIi13ZWJraXQtZmxvdy1pbnRv
IjogewotICAgICAgICAgICAgImNvZGVnZW4tcHJvcGVydGllcyI6IHsKLSAgICAgICAgICAgICAg
ICAibmFtZS1mb3ItbWV0aG9kcyI6ICJGbG93VGhyZWFkIiwKLSAgICAgICAgICAgICAgICAiY29u
dmVydGVyIjogIlN0cmluZ09yTm9uZSIsCi0gICAgICAgICAgICAgICAgImVuYWJsZS1pZiI6ICJF
TkFCTEVfQ1NTX1JFR0lPTlMiCi0gICAgICAgICAgICB9LAotICAgICAgICAgICAgInNwZWNpZmlj
YXRpb24iOiB7Ci0gICAgICAgICAgICAgICAgImNhdGVnb3J5IjogImNzcy1yZWdpb25zIiwKLSAg
ICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vd3d3LnczLm9yZy9UUi9jc3MtcmVnaW9ucy0x
LyNwcm9wZGVmLWZsb3ctaW50byIKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSwKLSAgICAgICAg
Ii13ZWJraXQtZmxvdy1mcm9tIjogewotICAgICAgICAgICAgImNvZGVnZW4tcHJvcGVydGllcyI6
IHsKLSAgICAgICAgICAgICAgICAibmFtZS1mb3ItbWV0aG9kcyI6ICJSZWdpb25UaHJlYWQiLAot
ICAgICAgICAgICAgICAgICJjb252ZXJ0ZXIiOiAiU3RyaW5nT3JOb25lIiwKLSAgICAgICAgICAg
ICAgICAiZW5hYmxlLWlmIjogIkVOQUJMRV9DU1NfUkVHSU9OUyIKLSAgICAgICAgICAgIH0sCi0g
ICAgICAgICAgICAic3BlY2lmaWNhdGlvbiI6IHsKLSAgICAgICAgICAgICAgICAiY2F0ZWdvcnki
OiAiY3NzLXJlZ2lvbnMiLAotICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly93d3cudzMu
b3JnL1RSL2Nzcy1yZWdpb25zLTEvI3Byb3BkZWYtZmxvdy1mcm9tIgotICAgICAgICAgICAgfQot
ICAgICAgICB9LAotICAgICAgICAiLXdlYmtpdC1yZWdpb24tZnJhZ21lbnQiOiB7Ci0gICAgICAg
ICAgICAidmFsdWVzIjogWwotICAgICAgICAgICAgICAgICJhdXRvIiwKLSAgICAgICAgICAgICAg
ICAiYnJlYWsiCi0gICAgICAgICAgICBdLAotICAgICAgICAgICAgImNvZGVnZW4tcHJvcGVydGll
cyI6IHsKLSAgICAgICAgICAgICAgICAiZW5hYmxlLWlmIjogIkVOQUJMRV9DU1NfUkVHSU9OUyIK
LSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAic3BlY2lmaWNhdGlvbiI6IHsKLSAgICAgICAg
ICAgICAgICAiY2F0ZWdvcnkiOiAiY3NzLXJlZ2lvbnMiLAotICAgICAgICAgICAgICAgICJ1cmwi
OiAiaHR0cHM6Ly93d3cudzMub3JnL1RSL2Nzcy1yZWdpb25zLTEvI3Byb3BkZWYtcmVnaW9uLWZy
YWdtZW50IgotICAgICAgICAgICAgfQotICAgICAgICB9LAotICAgICAgICAiLXdlYmtpdC1yZWdp
b24tYnJlYWstYWZ0ZXIiOiB7Ci0gICAgICAgICAgICAidmFsdWVzIjogWwotICAgICAgICAgICAg
ICAgICJhdXRvIiwKLSAgICAgICAgICAgICAgICAiYWx3YXlzIiwKLSAgICAgICAgICAgICAgICAi
YXZvaWQiLAotICAgICAgICAgICAgICAgICJsZWZ0IiwKLSAgICAgICAgICAgICAgICAicmlnaHQi
Ci0gICAgICAgICAgICBdLAotICAgICAgICAgICAgImNvZGVnZW4tcHJvcGVydGllcyI6IHsKLSAg
ICAgICAgICAgICAgICAiaW5pdGlhbCI6ICJpbml0aWFsQnJlYWtCZXR3ZWVuIiwKLSAgICAgICAg
ICAgICAgICAibmFtZS1mb3ItbWV0aG9kcyI6ICJCcmVha0FmdGVyIiwKLSAgICAgICAgICAgICAg
ICAiY29udmVydGVyIjogIlJlZ2lvbkJyZWFrQmV0d2VlbiIsCi0gICAgICAgICAgICAgICAgImVu
YWJsZS1pZiI6ICJFTkFCTEVfQ1NTX1JFR0lPTlMiCi0gICAgICAgICAgICB9LAotICAgICAgICAg
ICAgInNwZWNpZmljYXRpb24iOiB7Ci0gICAgICAgICAgICAgICAgImNhdGVnb3J5IjogImNzcy1y
ZWdpb25zIiwKLSAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vd3d3LnczLm9yZy9UUi9j
c3MtcmVnaW9ucy0xLyNwcm9wZGVmLWJyZWFrLWFmdGVyIgotICAgICAgICAgICAgfQotICAgICAg
ICB9LAotICAgICAgICAiLXdlYmtpdC1yZWdpb24tYnJlYWstYmVmb3JlIjogewotICAgICAgICAg
ICAgInZhbHVlcyI6IFsKLSAgICAgICAgICAgICAgICAiYXV0byIsCi0gICAgICAgICAgICAgICAg
ImFsd2F5cyIsCi0gICAgICAgICAgICAgICAgImF2b2lkIiwKLSAgICAgICAgICAgICAgICAibGVm
dCIsCi0gICAgICAgICAgICAgICAgInJpZ2h0IgotICAgICAgICAgICAgXSwKLSAgICAgICAgICAg
ICJjb2RlZ2VuLXByb3BlcnRpZXMiOiB7Ci0gICAgICAgICAgICAgICAgImluaXRpYWwiOiAiaW5p
dGlhbEJyZWFrQmV0d2VlbiIsCi0gICAgICAgICAgICAgICAgIm5hbWUtZm9yLW1ldGhvZHMiOiAi
QnJlYWtCZWZvcmUiLAotICAgICAgICAgICAgICAgICJjb252ZXJ0ZXIiOiAiUmVnaW9uQnJlYWtC
ZXR3ZWVuIiwKLSAgICAgICAgICAgICAgICAiZW5hYmxlLWlmIjogIkVOQUJMRV9DU1NfUkVHSU9O
UyIKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAic3BlY2lmaWNhdGlvbiI6IHsKLSAgICAg
ICAgICAgICAgICAiY2F0ZWdvcnkiOiAiY3NzLXJlZ2lvbnMiLAotICAgICAgICAgICAgICAgICJ1
cmwiOiAiaHR0cHM6Ly93d3cudzMub3JnL1RSL2Nzcy1yZWdpb25zLTEvI3Byb3BkZWYtYnJlYWst
YmVmb3JlIgotICAgICAgICAgICAgfQotICAgICAgICB9LAotICAgICAgICAiLXdlYmtpdC1yZWdp
b24tYnJlYWstaW5zaWRlIjogewotICAgICAgICAgICAgInZhbHVlcyI6IFsKLSAgICAgICAgICAg
ICAgICAiYXV0byIsCi0gICAgICAgICAgICAgICAgImF2b2lkIgotICAgICAgICAgICAgXSwKLSAg
ICAgICAgICAgICJjb2RlZ2VuLXByb3BlcnRpZXMiOiB7Ci0gICAgICAgICAgICAgICAgImluaXRp
YWwiOiAiaW5pdGlhbEJyZWFrSW5zaWRlIiwKLSAgICAgICAgICAgICAgICAibmFtZS1mb3ItbWV0
aG9kcyI6ICJCcmVha0luc2lkZSIsCi0gICAgICAgICAgICAgICAgImNvbnZlcnRlciI6ICJSZWdp
b25CcmVha0luc2lkZSIsCi0gICAgICAgICAgICAgICAgImVuYWJsZS1pZiI6ICJFTkFCTEVfQ1NT
X1JFR0lPTlMiCi0gICAgICAgICAgICB9LAotICAgICAgICAgICAgInNwZWNpZmljYXRpb24iOiB7
Ci0gICAgICAgICAgICAgICAgImNhdGVnb3J5IjogImNzcy1yZWdpb25zIiwKLSAgICAgICAgICAg
ICAgICAidXJsIjogImh0dHBzOi8vd3d3LnczLm9yZy9UUi9jc3MtcmVnaW9ucy0xLyNwcm9wZGVm
LWJyZWFrLWluc2lkZSIKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSwKICAgICAgICAgInNjcm9s
bC1wYWRkaW5nIjogewogICAgICAgICAgICAgImNvZGVnZW4tcHJvcGVydGllcyI6IHsKICAgICAg
ICAgICAgICAgICAiZW5hYmxlLWlmIjogIkVOQUJMRV9DU1NfU0NST0xMX1NOQVAiLApAQCAtNjgy
MiwxMiArNjcyOCw2IEBACiAgICAgICAgICAgICAibG9uZ25hbWUiOiAiQ1NTIFBhZ2VkIE1lZGlh
IE1vZHVsZSIsCiAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vd3d3LnczLm9yZy9UUi9jc3Mz
LXBhZ2UvIgogICAgICAgICB9LAotICAgICAgICAiY3NzLXJlZ2lvbnMiOiB7Ci0gICAgICAgICAg
ICAic2hvcnRuYW1lIjogIkNTUyBSZWdpb25zIiwKLSAgICAgICAgICAgICJsb25nbmFtZSI6ICJD
U1MgUmVnaW9ucyBNb2R1bGUiLAotICAgICAgICAgICAgInVybCI6ICJodHRwczovL3d3dy53My5v
cmcvVFIvY3NzLXJlZ2lvbnMtMS8iLAotICAgICAgICAgICAgInN0YXR1cyI6ICJleHBlcmltZW50
YWwiCi0gICAgICAgIH0sCiAgICAgICAgICJjc3Mtcm91bmQtZGlzcGxheSI6IHsKICAgICAgICAg
ICAgICJzaG9ydG5hbWUiOiAiQ1NTIFJvdW5kIERpc3BsYXkiLAogICAgICAgICAgICAgImxvbmdu
YW1lIjogIkNTUyBSb3VuZCBEaXNwbGF5IE1vZHVsZSIsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUnVsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1J1bGUu
Y3BwCShyZXZpc2lvbiAyMjIyNTcpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUnVsZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM2LDEwICszNiw2IEBAIHN0cnVjdCBTYW1lU2l6ZUFzQ1NTUnVs
ZSA6IHB1YmxpYyBSZWZDb3UKIAogQ09NUElMRV9BU1NFUlQoc2l6ZW9mKENTU1J1bGUpID09IHNp
emVvZihTYW1lU2l6ZUFzQ1NTUnVsZSksIENTU1J1bGVfc2hvdWxkX3N0YXlfc21hbGwpOwogCi0j
aWYgRU5BQkxFKENTU19SRUdJT05TKQotQ09NUElMRV9BU1NFUlQoU3R5bGVSdWxlQmFzZTo6UmVn
aW9uID09IHN0YXRpY19jYXN0PFN0eWxlUnVsZUJhc2U6OlR5cGU+KENTU1J1bGU6OldFQktJVF9S
RUdJT05fUlVMRSksIGVudW1zX3Nob3VsZF9tYXRjaCk7Ci0jZW5kaWYKLQogI2lmIEVOQUJMRShD
U1NfREVWSUNFX0FEQVBUQVRJT04pCiBDT01QSUxFX0FTU0VSVChTdHlsZVJ1bGVCYXNlOjpWaWV3
cG9ydCA9PSBzdGF0aWNfY2FzdDxTdHlsZVJ1bGVCYXNlOjpUeXBlPihDU1NSdWxlOjpXRUJLSVRf
VklFV1BPUlRfUlVMRSksIGVudW1zX3Nob3VsZF9tYXRjaCk7CiAjZW5kaWYKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NSdWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1J1bGUuaAkocmV2aXNpb24gMjIyMjU3KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1J1
bGUuaAkod29ya2luZyBjb3B5KQpAQCAtNTQsOSArNTQsNiBAQCBwdWJsaWM6CiAjaWYgRU5BQkxF
KENTU19ERVZJQ0VfQURBUFRBVElPTikKICAgICAgICAgV0VCS0lUX1ZJRVdQT1JUX1JVTEUgPSAx
NSwKICNlbmRpZgotI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKLSAgICAgICAgV0VCS0lUX1JFR0lP
Tl9SVUxFID0gMTYsCi0jZW5kaWYKICAgICB9OwogCiAgICAgZW51bSBEZXByZWNhdGVkVHlwZSB7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUnVsZS5pZGwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvY3NzL0NTU1J1bGUuaWRsCShyZXZpc2lvbiAyMjIyNTcpCisrKyBTb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTUnVsZS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDYgQEAK
ICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBOQU1FU1BBQ0VfUlVMRSA9IDEwOwogICAgIGNvbnN0
IHVuc2lnbmVkIHNob3J0IFNVUFBPUlRTX1JVTEUgPSAxMjsKICAgICBbQ29uZGl0aW9uYWw9Q1NT
X0RFVklDRV9BREFQVEFUSU9OXSBjb25zdCB1bnNpZ25lZCBzaG9ydCBXRUJLSVRfVklFV1BPUlRf
UlVMRSA9IDE1OwotICAgIFtDb25kaXRpb25hbD1DU1NfUkVHSU9OU10gY29uc3QgdW5zaWduZWQg
c2hvcnQgV0VCS0lUX1JFR0lPTl9SVUxFID0gMTY7CiAKICAgICAvLyBMZWdhY3kgc3lub255bXMg
Zm9yIHRoZSBhYm92ZSwga2VwdCB0byBhdm9pZCBicmVha2luZyBleGlzdGluZyBjb250ZW50Lgog
ICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFdFQktJVF9LRVlGUkFNRVNfUlVMRSA9IDc7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9jc3MvRWxlbWVudFJ1bGVDb2xsZWN0b3IuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9FbGVtZW50UnVsZUNvbGxlY3Rvci5jcHAJKHJldmlzaW9u
IDIyMjI1NykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9FbGVtZW50UnVsZUNvbGxlY3Rvci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDYgQEAKICNpbmNsdWRlICJDU1NWYWx1ZUtleXdv
cmRzLmgiCiAjaW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MU2xvdEVsZW1l
bnQuaCIKLSNpbmNsdWRlICJSZW5kZXJSZWdpb24uaCIKICNpbmNsdWRlICJTVkdFbGVtZW50Lmgi
CiAjaW5jbHVkZSAiU2VsZWN0b3JDb21waWxlci5oIgogI2luY2x1ZGUgIlNlbGVjdG9yRmlsdGVy
LmgiCkBAIC0xNjQsMjIgKzE2Myw2IEBAIHZvaWQgRWxlbWVudFJ1bGVDb2xsZWN0b3I6OmNvbGxl
Y3RNYXRjaGkKICAgICBjb2xsZWN0TWF0Y2hpbmdSdWxlc0Zvckxpc3QobWF0Y2hSZXF1ZXN0LnJ1
bGVTZXQtPnVuaXZlcnNhbFJ1bGVzKCksIG1hdGNoUmVxdWVzdCwgcnVsZVJhbmdlKTsKIH0KIAot
dm9pZCBFbGVtZW50UnVsZUNvbGxlY3Rvcjo6Y29sbGVjdE1hdGNoaW5nUnVsZXNGb3JSZWdpb24o
Y29uc3QgTWF0Y2hSZXF1ZXN0JiBtYXRjaFJlcXVlc3QsIFN0eWxlUmVzb2x2ZXI6OlJ1bGVSYW5n
ZSYgcnVsZVJhbmdlKQotewotICAgIGlmICghbV9yZWdpb25Gb3JTdHlsaW5nKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICB1bnNpZ25lZCBzaXplID0gbWF0Y2hSZXF1ZXN0LnJ1bGVTZXQtPnJlZ2lv
blNlbGVjdG9yc0FuZFJ1bGVTZXRzKCkuc2l6ZSgpOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBzaXplOyArK2kpIHsKLSAgICAgICAgY29uc3QgQ1NTU2VsZWN0b3IqIHJlZ2lvblNlbGVj
dG9yID0gbWF0Y2hSZXF1ZXN0LnJ1bGVTZXQtPnJlZ2lvblNlbGVjdG9yc0FuZFJ1bGVTZXRzKCku
YXQoaSkuc2VsZWN0b3I7Ci0gICAgICAgIGlmIChjaGVja1JlZ2lvblNlbGVjdG9yKHJlZ2lvblNl
bGVjdG9yLCBtX3JlZ2lvbkZvclN0eWxpbmctPmdlbmVyYXRpbmdFbGVtZW50KCkpKSB7Ci0gICAg
ICAgICAgICBSdWxlU2V0KiByZWdpb25SdWxlcyA9IG1hdGNoUmVxdWVzdC5ydWxlU2V0LT5yZWdp
b25TZWxlY3RvcnNBbmRSdWxlU2V0cygpLmF0KGkpLnJ1bGVTZXQuZ2V0KCk7Ci0gICAgICAgICAg
ICBBU1NFUlQocmVnaW9uUnVsZXMpOwotICAgICAgICAgICAgY29sbGVjdE1hdGNoaW5nUnVsZXMo
TWF0Y2hSZXF1ZXN0KHJlZ2lvblJ1bGVzLCBtYXRjaFJlcXVlc3QuaW5jbHVkZUVtcHR5UnVsZXMp
LCBydWxlUmFuZ2UpOwotICAgICAgICB9Ci0gICAgfQotfQotCiB2b2lkIEVsZW1lbnRSdWxlQ29s
bGVjdG9yOjpzb3J0QW5kVHJhbnNmZXJNYXRjaGVkUnVsZXMoKQogewogICAgIGlmIChtX21hdGNo
ZWRSdWxlcy5pc0VtcHR5KCkpCkBAIC0yMDgsNyArMTkxLDYgQEAgdm9pZCBFbGVtZW50UnVsZUNv
bGxlY3Rvcjo6bWF0Y2hBdXRob3JSdQogICAgIHsKICAgICAgICAgTWF0Y2hSZXF1ZXN0IG1hdGNo
UmVxdWVzdCgmbV9hdXRob3JTdHlsZSwgaW5jbHVkZUVtcHR5UnVsZXMpOwogICAgICAgICBjb2xs
ZWN0TWF0Y2hpbmdSdWxlcyhtYXRjaFJlcXVlc3QsIHJ1bGVSYW5nZSk7Ci0gICAgICAgIGNvbGxl
Y3RNYXRjaGluZ1J1bGVzRm9yUmVnaW9uKG1hdGNoUmVxdWVzdCwgcnVsZVJhbmdlKTsKICAgICB9
CiAKICAgICBhdXRvKiBwYXJlbnQgPSBtX2VsZW1lbnQucGFyZW50RWxlbWVudCgpOwpAQCAtMzI3
LDcgKzMwOSw2IEBAIHZvaWQgRWxlbWVudFJ1bGVDb2xsZWN0b3I6Om1hdGNoVXNlclJ1bGUKICAg
ICBNYXRjaFJlcXVlc3QgbWF0Y2hSZXF1ZXN0KG1fdXNlclN0eWxlLCBpbmNsdWRlRW1wdHlSdWxl
cyk7CiAgICAgU3R5bGVSZXNvbHZlcjo6UnVsZVJhbmdlIHJ1bGVSYW5nZSA9IG1fcmVzdWx0LnJh
bmdlcy51c2VyUnVsZVJhbmdlKCk7CiAgICAgY29sbGVjdE1hdGNoaW5nUnVsZXMobWF0Y2hSZXF1
ZXN0LCBydWxlUmFuZ2UpOwotICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yUmVnaW9uKG1hdGNo
UmVxdWVzdCwgcnVsZVJhbmdlKTsKIAogICAgIHNvcnRBbmRUcmFuc2Zlck1hdGNoZWRSdWxlcygp
OwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmgJKHJl
dmlzaW9uIDIyMjI1NykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9FbGVtZW50UnVsZUNvbGxlY3Rv
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgRG9jdW1lbnRSdWxlU2V0czsKIGNsYXNzIE1hdGNoUmVxdWVzdDsKLWNsYXNzIFJl
bmRlclJlZ2lvbjsKIGNsYXNzIFJ1bGVEYXRhOwogY2xhc3MgUnVsZVNldDsKIGNsYXNzIFNlbGVj
dG9yRmlsdGVyOwpAQCAtNTYsNyArNTUsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRNb2RlKFNl
bGVjdG9yQ2hlY2tlcjo6TW9kZSBtb2RlKSB7IG1fbW9kZSA9IG1vZGU7IH0KICAgICB2b2lkIHNl
dFBzZXVkb1N0eWxlUmVxdWVzdChjb25zdCBQc2V1ZG9TdHlsZVJlcXVlc3QmIHJlcXVlc3QpIHsg
bV9wc2V1ZG9TdHlsZVJlcXVlc3QgPSByZXF1ZXN0OyB9CiAgICAgdm9pZCBzZXRTYW1lT3JpZ2lu
T25seShib29sIGYpIHsgbV9zYW1lT3JpZ2luT25seSA9IGY7IH0gCi0gICAgdm9pZCBzZXRSZWdp
b25Gb3JTdHlsaW5nKGNvbnN0IFJlbmRlclJlZ2lvbiogcmVnaW9uRm9yU3R5bGluZykgeyBtX3Jl
Z2lvbkZvclN0eWxpbmcgPSByZWdpb25Gb3JTdHlsaW5nOyB9CiAgICAgdm9pZCBzZXRNZWRpdW0o
Y29uc3QgTWVkaWFRdWVyeUV2YWx1YXRvciogbWVkaXVtKSB7IG1faXNQcmludFN0eWxlID0gbWVk
aXVtLT5tZWRpYVR5cGVNYXRjaFNwZWNpZmljKCJwcmludCIpOyB9CiAKICAgICBib29sIGhhc0Fu
eU1hdGNoaW5nUnVsZXMoY29uc3QgUnVsZVNldCopOwpAQCAtODMsNyArODEsNiBAQCBwcml2YXRl
OgogICAgIHN0ZDo6dW5pcXVlX3B0cjxSdWxlU2V0OjpSdWxlRGF0YVZlY3Rvcj4gY29sbGVjdFNs
b3R0ZWRQc2V1ZG9FbGVtZW50UnVsZXNGb3JTbG90KGJvb2wgaW5jbHVkZUVtcHR5UnVsZXMpOwog
CiAgICAgdm9pZCBjb2xsZWN0TWF0Y2hpbmdSdWxlcyhjb25zdCBNYXRjaFJlcXVlc3QmLCBTdHls
ZVJlc29sdmVyOjpSdWxlUmFuZ2UmKTsKLSAgICB2b2lkIGNvbGxlY3RNYXRjaGluZ1J1bGVzRm9y
UmVnaW9uKGNvbnN0IE1hdGNoUmVxdWVzdCYsIFN0eWxlUmVzb2x2ZXI6OlJ1bGVSYW5nZSYpOwog
ICAgIHZvaWQgY29sbGVjdE1hdGNoaW5nUnVsZXNGb3JMaXN0KGNvbnN0IFJ1bGVTZXQ6OlJ1bGVE
YXRhVmVjdG9yKiwgY29uc3QgTWF0Y2hSZXF1ZXN0JiwgU3R5bGVSZXNvbHZlcjo6UnVsZVJhbmdl
Jik7CiAgICAgYm9vbCBydWxlTWF0Y2hlcyhjb25zdCBSdWxlRGF0YSYsIHVuc2lnbmVkICZzcGVj
aWZpY2l0eSk7CiAKQEAgLTk4LDcgKzk1LDYgQEAgcHJpdmF0ZToKICAgICBjb25zdCBTZWxlY3Rv
ckZpbHRlciogbV9zZWxlY3RvckZpbHRlciB7IG51bGxwdHIgfTsKIAogICAgIGJvb2wgbV9pc1By
aW50U3R5bGUgeyBmYWxzZSB9OwotICAgIGNvbnN0IFJlbmRlclJlZ2lvbiogbV9yZWdpb25Gb3JT
dHlsaW5nIHsgbnVsbHB0ciB9OwogICAgIFBzZXVkb1N0eWxlUmVxdWVzdCBtX3BzZXVkb1N0eWxl
UmVxdWVzdCB7IE5PUFNFVURPIH07CiAgICAgYm9vbCBtX3NhbWVPcmlnaW5Pbmx5IHsgZmFsc2Ug
fTsKICAgICBTZWxlY3RvckNoZWNrZXI6Ok1vZGUgbV9tb2RlIHsgU2VsZWN0b3JDaGVja2VyOjpN
b2RlOjpSZXNvbHZpbmdTdHlsZSB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0luc3BlY3Rv
ckNTU09NV3JhcHBlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9JbnNw
ZWN0b3JDU1NPTVdyYXBwZXJzLmNwcAkocmV2aXNpb24gMjIyMjU3KQorKysgU291cmNlL1dlYkNv
cmUvY3NzL0luc3BlY3RvckNTU09NV3JhcHBlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3
ICszOSw2IEBACiAjaW5jbHVkZSAiRXh0ZW5zaW9uU3R5bGVTaGVldHMuaCIKICNpbmNsdWRlICJT
dHlsZVNjb3BlLmgiCiAjaW5jbHVkZSAiU3R5bGVTaGVldENvbnRlbnRzLmgiCi0jaW5jbHVkZSAi
V2ViS2l0Q1NTUmVnaW9uUnVsZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTY3LDEx
ICs2Niw2IEBAIHZvaWQgSW5zcGVjdG9yQ1NTT01XcmFwcGVyczo6Y29sbGVjdChMaXMKICAgICAg
ICAgY2FzZSBDU1NSdWxlOjpTVVBQT1JUU19SVUxFOgogICAgICAgICAgICAgY29sbGVjdChkb3du
Y2FzdDxDU1NTdXBwb3J0c1J1bGU+KGNzc1J1bGUpKTsKICAgICAgICAgICAgIGJyZWFrOwotI2lm
IEVOQUJMRShDU1NfUkVHSU9OUykKLSAgICAgICAgY2FzZSBDU1NSdWxlOjpXRUJLSVRfUkVHSU9O
X1JVTEU6Ci0gICAgICAgICAgICBjb2xsZWN0KGRvd25jYXN0PFdlYktpdENTU1JlZ2lvblJ1bGU+
KGNzc1J1bGUpKTsKLSAgICAgICAgICAgIGJyZWFrOwotI2VuZGlmCiAgICAgICAgIGNhc2UgQ1NT
UnVsZTo6U1RZTEVfUlVMRToKICAgICAgICAgICAgIG1fc3R5bGVSdWxlVG9DU1NPTVdyYXBwZXJN
YXAuYWRkKCZkb3duY2FzdDxDU1NTdHlsZVJ1bGU+KCpjc3NSdWxlKS5zdHlsZVJ1bGUoKSwgZG93
bmNhc3Q8Q1NTU3R5bGVSdWxlPihjc3NSdWxlKSk7CiAgICAgICAgICAgICBicmVhazsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlU2V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9jc3MvUnVsZVNldC5jcHAJKHJldmlzaW9uIDIyMjI1NykKKysrIFNvdXJjZS9XZWJDb3Jl
L2Nzcy9SdWxlU2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM1LDEwICsxMzUsOCBAQCBzdGF0
aWMgaW5saW5lIGJvb2wgY29udGFpbnNVbmNvbW1vbkF0dHJpCiAgICAgcmV0dXJuIGNvbnRhaW5z
VW5jb21tb25BdHRyaWJ1dGVTZWxlY3Rvcihyb290U2VsZWN0b3IsIHRydWUpOwogfQogCi1zdGF0
aWMgaW5saW5lIFByb3BlcnR5V2hpdGVsaXN0VHlwZSBkZXRlcm1pbmVQcm9wZXJ0eVdoaXRlbGlz
dFR5cGUoY29uc3QgQWRkUnVsZUZsYWdzIGFkZFJ1bGVGbGFncywgY29uc3QgQ1NTU2VsZWN0b3Iq
IHNlbGVjdG9yKQorc3RhdGljIGlubGluZSBQcm9wZXJ0eVdoaXRlbGlzdFR5cGUgZGV0ZXJtaW5l
UHJvcGVydHlXaGl0ZWxpc3RUeXBlKGNvbnN0IENTU1NlbGVjdG9yKiBzZWxlY3RvcikKIHsKLSAg
ICBpZiAoYWRkUnVsZUZsYWdzICYgUnVsZUlzSW5SZWdpb25SdWxlKQotICAgICAgICByZXR1cm4g
UHJvcGVydHlXaGl0ZWxpc3RSZWdpb247CiAgICAgZm9yIChjb25zdCBDU1NTZWxlY3RvciogY29t
cG9uZW50ID0gc2VsZWN0b3I7IGNvbXBvbmVudDsgY29tcG9uZW50ID0gY29tcG9uZW50LT50YWdI
aXN0b3J5KCkpIHsKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAgICAgICAgIGlmIChjb21wb25l
bnQtPm1hdGNoKCkgPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb0VsZW1lbnQgJiYgKGNvbXBvbmVudC0+
cHNldWRvRWxlbWVudFR5cGUoKSA9PSBDU1NTZWxlY3Rvcjo6UHNldWRvRWxlbWVudEN1ZSB8fCBj
b21wb25lbnQtPnZhbHVlKCkgPT0gVGV4dFRyYWNrQ3VlOjpjdWVTaGFkb3dQc2V1ZG9JZCgpKSkK
QEAgLTE1OSw3ICsxNTcsNyBAQCBSdWxlRGF0YTo6UnVsZURhdGEoU3R5bGVSdWxlKiBydWxlLCB1
bnNpCiAgICAgLCBtX2Nhbk1hdGNoUHNldWRvRWxlbWVudChzZWxlY3RvckNhbk1hdGNoUHNldWRv
RWxlbWVudCgqc2VsZWN0b3IoKSkpCiAgICAgLCBtX2NvbnRhaW5zVW5jb21tb25BdHRyaWJ1dGVT
ZWxlY3RvcihXZWJDb3JlOjpjb250YWluc1VuY29tbW9uQXR0cmlidXRlU2VsZWN0b3IoKnNlbGVj
dG9yKCkpKQogICAgICwgbV9saW5rTWF0Y2hUeXBlKFNlbGVjdG9yQ2hlY2tlcjo6ZGV0ZXJtaW5l
TGlua01hdGNoVHlwZShzZWxlY3RvcigpKSkKLSAgICAsIG1fcHJvcGVydHlXaGl0ZWxpc3RUeXBl
KGRldGVybWluZVByb3BlcnR5V2hpdGVsaXN0VHlwZShhZGRSdWxlRmxhZ3MsIHNlbGVjdG9yKCkp
KQorICAgICwgbV9wcm9wZXJ0eVdoaXRlbGlzdFR5cGUoZGV0ZXJtaW5lUHJvcGVydHlXaGl0ZWxp
c3RUeXBlKHNlbGVjdG9yKCkpKQogI2lmIEVOQUJMRShDU1NfU0VMRUNUT1JfSklUKSAmJiBDU1Nf
U0VMRUNUT1JfSklUX1BST0ZJTElORwogICAgICwgbV9jb21waWxlZFNlbGVjdG9yVXNlQ291bnQo
MCkKICNlbmRpZgpAQCAtMzY2LDI5ICszNjQsNiBAQCB2b2lkIFJ1bGVTZXQ6OmFkZFBhZ2VSdWxl
KFN0eWxlUnVsZVBhZ2UqCiAgICAgbV9wYWdlUnVsZXMuYXBwZW5kKHJ1bGUpOwogfQogCi12b2lk
IFJ1bGVTZXQ6OmFkZFJlZ2lvblJ1bGUoU3R5bGVSdWxlUmVnaW9uKiByZWdpb25SdWxlLCBib29s
IGhhc0RvY3VtZW50U2VjdXJpdHlPcmlnaW4pCi17Ci0gICAgYXV0byByZWdpb25SdWxlU2V0ID0g
c3RkOjptYWtlX3VuaXF1ZTxSdWxlU2V0PigpOwotICAgIC8vIFRoZSByZWdpb24gcnVsZSBzZXQg
c2hvdWxkIHRha2UgaW50byBhY2NvdW50IHRoZSBwb3NpdGlvbiBpbnNpZGUgdGhlIHBhcmVudCBy
dWxlIHNldC4KLSAgICAvLyBPdGhlcndpc2UsIHRoZSBydWxlcyBpbnNpZGUgcmVnaW9uIGJsb2Nr
IG1pZ2h0IGJlIGluY29ycmVjdGx5IHBvc2l0aW9uZWQgYmVmb3JlIG90aGVyIHNpbWlsYXIgcnVs
ZXMgZnJvbQotICAgIC8vIHRoZSBzdHlsZXNoZWV0IHRoYXQgY29udGFpbnMgdGhlIHJlZ2lvbiBi
bG9jay4KLSAgICByZWdpb25SdWxlU2V0LT5tX3J1bGVDb3VudCA9IG1fcnVsZUNvdW50OwotCi0g
ICAgLy8gQ29sbGVjdCB0aGUgcmVnaW9uIHJ1bGVzIGludG8gYSBydWxlIHNldAotICAgIC8vIEZJ
WE1FOiBTaG91bGQgdGhpcyBhZGQgb3RoZXIgdHlwZXMgb2YgcnVsZXM/IChpLmUuIHVzZSBhZGRD
aGlsZFJ1bGVzKCkgZGlyZWN0bHk/KQotICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8U3R5bGVSdWxl
QmFzZT4+JiBjaGlsZFJ1bGVzID0gcmVnaW9uUnVsZS0+Y2hpbGRSdWxlcygpOwotICAgIEFkZFJ1
bGVGbGFncyBhZGRSdWxlRmxhZ3MgPSBoYXNEb2N1bWVudFNlY3VyaXR5T3JpZ2luID8gUnVsZUhh
c0RvY3VtZW50U2VjdXJpdHlPcmlnaW4gOiBSdWxlSGFzTm9TcGVjaWFsU3RhdGU7Ci0gICAgYWRk
UnVsZUZsYWdzID0gc3RhdGljX2Nhc3Q8QWRkUnVsZUZsYWdzPihhZGRSdWxlRmxhZ3MgfCBSdWxl
SXNJblJlZ2lvblJ1bGUpOwotICAgIGZvciAoYXV0byYgY2hpbGRSdWxlIDogY2hpbGRSdWxlcykg
ewotICAgICAgICBpZiAoaXM8U3R5bGVSdWxlPigqY2hpbGRSdWxlKSkKLSAgICAgICAgICAgIHJl
Z2lvblJ1bGVTZXQtPmFkZFN0eWxlUnVsZShkb3duY2FzdDxTdHlsZVJ1bGU+KGNoaWxkUnVsZS5n
ZXQoKSksIGFkZFJ1bGVGbGFncyk7Ci0gICAgfQotICAgIC8vIFVwZGF0ZSB0aGUgImdsb2JhbCIg
cnVsZSBjb3VudCBzbyB0aGF0IHByb3BlciBvcmRlciBpcyBtYWludGFpbmVkCi0gICAgbV9ydWxl
Q291bnQgPSByZWdpb25SdWxlU2V0LT5tX3J1bGVDb3VudDsKLQotICAgIG1fcmVnaW9uU2VsZWN0
b3JzQW5kUnVsZVNldHMuYXBwZW5kKFJ1bGVTZXRTZWxlY3RvclBhaXIocmVnaW9uUnVsZS0+c2Vs
ZWN0b3JMaXN0KCkuZmlyc3QoKSwgV1RGTW92ZShyZWdpb25SdWxlU2V0KSkpOwotfQotCiB2b2lk
IFJ1bGVTZXQ6OmFkZENoaWxkUnVsZXMoY29uc3QgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGVCYXNl
Pj4mIHJ1bGVzLCBjb25zdCBNZWRpYVF1ZXJ5RXZhbHVhdG9yJiBtZWRpdW0sIFN0eWxlUmVzb2x2
ZXIqIHJlc29sdmVyLCBib29sIGhhc0RvY3VtZW50U2VjdXJpdHlPcmlnaW4sIGJvb2wgaXNJbml0
aWF0aW5nRWxlbWVudEluVXNlckFnZW50U2hhZG93VHJlZSwgQWRkUnVsZUZsYWdzIGFkZFJ1bGVG
bGFncykKIHsKICAgICBmb3IgKGF1dG8mIHJ1bGUgOiBydWxlcykgewpAQCAtNDA4LDExICszODMs
NiBAQCB2b2lkIFJ1bGVTZXQ6OmFkZENoaWxkUnVsZXMoY29uc3QgVmVjdG9yCiAgICAgICAgICAg
ICByZXNvbHZlci0+YWRkS2V5ZnJhbWVTdHlsZShkb3duY2FzdDxTdHlsZVJ1bGVLZXlmcmFtZXM+
KCpydWxlKSk7CiAgICAgICAgIGVsc2UgaWYgKGlzPFN0eWxlUnVsZVN1cHBvcnRzPigqcnVsZSkg
JiYgZG93bmNhc3Q8U3R5bGVSdWxlU3VwcG9ydHM+KCpydWxlKS5jb25kaXRpb25Jc1N1cHBvcnRl
ZCgpKQogICAgICAgICAgICAgYWRkQ2hpbGRSdWxlcyhkb3duY2FzdDxTdHlsZVJ1bGVTdXBwb3J0
cz4oKnJ1bGUpLmNoaWxkUnVsZXMoKSwgbWVkaXVtLCByZXNvbHZlciwgaGFzRG9jdW1lbnRTZWN1
cml0eU9yaWdpbiwgaXNJbml0aWF0aW5nRWxlbWVudEluVXNlckFnZW50U2hhZG93VHJlZSwgYWRk
UnVsZUZsYWdzKTsKLSNpZiBFTkFCTEUoQ1NTX1JFR0lPTlMpCi0gICAgICAgIGVsc2UgaWYgKGlz
PFN0eWxlUnVsZVJlZ2lvbj4oKnJ1bGUpICYmIHJlc29sdmVyKSB7Ci0gICAgICAgICAgICBhZGRS
ZWdpb25SdWxlKGRvd25jYXN0PFN0eWxlUnVsZVJlZ2lvbj4ocnVsZS5nZXQoKSksIGhhc0RvY3Vt
ZW50U2VjdXJpdHlPcmlnaW4pOwotICAgICAgICB9Ci0jZW5kaWYKICNpZiBFTkFCTEUoQ1NTX0RF
VklDRV9BREFQVEFUSU9OKQogICAgICAgICBlbHNlIGlmIChpczxTdHlsZVJ1bGVWaWV3cG9ydD4o
KnJ1bGUpICYmIHJlc29sdmVyKSB7CiAgICAgICAgICAgICByZXNvbHZlci0+dmlld3BvcnRTdHls
ZVJlc29sdmVyKCktPmFkZFZpZXdwb3J0UnVsZShkb3duY2FzdDxTdHlsZVJ1bGVWaWV3cG9ydD4o
cnVsZS5nZXQoKSkpOwpAQCAtNDgwLDcgKzQ1MCw2IEBAIHZvaWQgUnVsZVNldDo6c2hyaW5rVG9G
aXQoKQogICAgIG1fdW5pdmVyc2FsUnVsZXMuc2hyaW5rVG9GaXQoKTsKICAgICBtX3BhZ2VSdWxl
cy5zaHJpbmtUb0ZpdCgpOwogICAgIG1fZmVhdHVyZXMuc2hyaW5rVG9GaXQoKTsKLSAgICBtX3Jl
Z2lvblNlbGVjdG9yc0FuZFJ1bGVTZXRzLnNocmlua1RvRml0KCk7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlU2V0LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL1J1bGVTZXQuaAkocmV2aXNpb24gMjIyMjU3KQorKysg
U291cmNlL1dlYkNvcmUvY3NzL1J1bGVTZXQuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsMTMgKzM0
LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGVudW0gQWRkUnVsZUZsYWdzIHsKICAgICBSdWxl
SGFzTm9TcGVjaWFsU3RhdGUgICAgICAgICA9IDAsCiAgICAgUnVsZUhhc0RvY3VtZW50U2VjdXJp
dHlPcmlnaW4gPSAxLAotICAgIFJ1bGVJc0luUmVnaW9uUnVsZSAgICAgICAgICAgID0gMSA8PCAx
LAogfTsKICAgICAKIGVudW0gUHJvcGVydHlXaGl0ZWxpc3RUeXBlIHsKICAgICBQcm9wZXJ0eVdo
aXRlbGlzdE5vbmUgICA9IDAsCiAgICAgUHJvcGVydHlXaGl0ZWxpc3RNYXJrZXIsCi0gICAgUHJv
cGVydHlXaGl0ZWxpc3RSZWdpb24sCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogICAgIFByb3Bl
cnR5V2hpdGVsaXN0Q3VlCiAjZW5kaWYKQEAgLTUxLDcgKzQ5LDYgQEAgY2xhc3MgQ29udGFpbmVy
Tm9kZTsKIGNsYXNzIE1lZGlhUXVlcnlFdmFsdWF0b3I7CiBjbGFzcyBOb2RlOwogY2xhc3MgU3R5
bGVSZXNvbHZlcjsKLWNsYXNzIFN0eWxlUnVsZVJlZ2lvbjsKIGNsYXNzIFN0eWxlU2hlZXRDb250
ZW50czsKIAogZW51bSBjbGFzcyBNYXRjaEJhc2VkT25SdWxlSGFzaCA6IHVuc2lnbmVkIHsKQEAg
LTE2Nyw3ICsxNjQsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRSdWxlKFN0eWxlUnVsZSosIHVu
c2lnbmVkIHNlbGVjdG9ySW5kZXgsIEFkZFJ1bGVGbGFncyk7CiAgICAgdm9pZCBhZGRQYWdlUnVs
ZShTdHlsZVJ1bGVQYWdlKik7CiAgICAgdm9pZCBhZGRUb1J1bGVTZXQoY29uc3QgQXRvbWljU3Ry
aW5nJiBrZXksIEF0b21SdWxlTWFwJiwgY29uc3QgUnVsZURhdGEmKTsKLSAgICB2b2lkIGFkZFJl
Z2lvblJ1bGUoU3R5bGVSdWxlUmVnaW9uKiwgYm9vbCBoYXNEb2N1bWVudFNlY3VyaXR5T3JpZ2lu
KTsKICAgICB2b2lkIHNocmlua1RvRml0KCk7CiAgICAgdm9pZCBkaXNhYmxlQXV0b1Nocmlua1Rv
Rml0KCkgeyBtX2F1dG9TaHJpbmtUb0ZpdEVuYWJsZWQgPSBmYWxzZTsgfQogCkBAIC0xODcsNyAr
MTgzLDYgQEAgcHVibGljOgogICAgIGNvbnN0IFJ1bGVEYXRhVmVjdG9yKiB1bml2ZXJzYWxSdWxl
cygpIGNvbnN0IHsgcmV0dXJuICZtX3VuaXZlcnNhbFJ1bGVzOyB9CiAKICAgICBjb25zdCBWZWN0
b3I8U3R5bGVSdWxlUGFnZSo+JiBwYWdlUnVsZXMoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VSdWxl
czsgfQotICAgIGNvbnN0IFZlY3RvcjxSdWxlU2V0U2VsZWN0b3JQYWlyPiYgcmVnaW9uU2VsZWN0
b3JzQW5kUnVsZVNldHMoKSBjb25zdCB7IHJldHVybiBtX3JlZ2lvblNlbGVjdG9yc0FuZFJ1bGVT
ZXRzOyB9CiAKICAgICB1bnNpZ25lZCBydWxlQ291bnQoKSBjb25zdCB7IHJldHVybiBtX3J1bGVD
b3VudDsgfQogCkBAIC0yMTUsNyArMjEwLDYgQEAgcHJpdmF0ZToKICAgICBib29sIG1faGFzSG9z
dFBzZXVkb0NsYXNzUnVsZXNNYXRjaGluZ0luU2hhZG93VHJlZSB7IGZhbHNlIH07CiAgICAgYm9v
bCBtX2F1dG9TaHJpbmtUb0ZpdEVuYWJsZWQgeyB0cnVlIH07CiAgICAgUnVsZUZlYXR1cmVTZXQg
bV9mZWF0dXJlczsKLSAgICBWZWN0b3I8UnVsZVNldFNlbGVjdG9yUGFpcj4gbV9yZWdpb25TZWxl
Y3RvcnNBbmRSdWxlU2V0czsKIH07CiAKIGlubGluZSBjb25zdCBSdWxlU2V0OjpSdWxlRGF0YVZl
Y3RvciogUnVsZVNldDo6dGFnUnVsZXMoY29uc3QgQXRvbWljU3RyaW5nJiBrZXksIGJvb2wgaXNI
VE1MTmFtZSkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDb252
ZXJ0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ29u
dmVydGVyLmgJKHJldmlzaW9uIDIyMjI1NykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1
aWxkZXJDb252ZXJ0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTQzLDExICsxNDMsNyBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIEJyZWFrSW5zaWRlIGNvbnZlcnRQYWdlQnJlYWtJbnNpZGUoU3R5bGVS
ZXNvbHZlciYsIGNvbnN0IENTU1ZhbHVlJik7CiAgICAgc3RhdGljIEJyZWFrQmV0d2VlbiBjb252
ZXJ0Q29sdW1uQnJlYWtCZXR3ZWVuKFN0eWxlUmVzb2x2ZXImLCBjb25zdCBDU1NWYWx1ZSYpOwog
ICAgIHN0YXRpYyBCcmVha0luc2lkZSBjb252ZXJ0Q29sdW1uQnJlYWtJbnNpZGUoU3R5bGVSZXNv
bHZlciYsIGNvbnN0IENTU1ZhbHVlJik7Ci0jaWYgRU5BQkxFKENTU19SRUdJT05TKQotICAgIHN0
YXRpYyBCcmVha0JldHdlZW4gY29udmVydFJlZ2lvbkJyZWFrQmV0d2VlbihTdHlsZVJlc29sdmVy
JiwgY29uc3QgQ1NTVmFsdWUmKTsKLSAgICBzdGF0aWMgQnJlYWtJbnNpZGUgY29udmVydFJlZ2lv
bkJyZWFrSW5zaWRlKFN0eWxlUmVzb2x2ZXImLCBjb25zdCBDU1NWYWx1ZSYpOwotI2VuZGlmCi0g
ICAgCisKICAgICBzdGF0aWMgSGFuZ2luZ1B1bmN0dWF0aW9uIGNvbnZlcnRIYW5naW5nUHVuY3R1
YXRpb24oU3R5bGVSZXNvbHZlciYsIGNvbnN0IENTU1ZhbHVlJik7CiAKICAgICBzdGF0aWMgTGVu
Z3RoIGNvbnZlcnRQb3NpdGlvbkNvbXBvbmVudFgoU3R5bGVSZXNvbHZlciYsIGNvbnN0IENTU1Zh
bHVlJik7CkBAIC0xNTIwLDI2ICsxNTE2LDYgQEAgaW5saW5lIEJyZWFrSW5zaWRlIFN0eWxlQnVp
bGRlckNvbnZlcnRlcgogICAgIHJldHVybiBwcmltaXRpdmVWYWx1ZTsKIH0KIAotI2lmIEVOQUJM
RShDU1NfUkVHSU9OUykKLWlubGluZSBCcmVha0JldHdlZW4gU3R5bGVCdWlsZGVyQ29udmVydGVy
Ojpjb252ZXJ0UmVnaW9uQnJlYWtCZXR3ZWVuKFN0eWxlUmVzb2x2ZXImLCBjb25zdCBDU1NWYWx1
ZSYgdmFsdWUpCi17Ci0gICAgYXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQcmlt
aXRpdmVWYWx1ZT4odmFsdWUpOwotICAgIGlmIChwcmltaXRpdmVWYWx1ZS52YWx1ZUlEKCkgPT0g
Q1NTVmFsdWVBbHdheXMpCi0gICAgICAgIHJldHVybiBSZWdpb25CcmVha0JldHdlZW47Ci0gICAg
aWYgKHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZUF2b2lkKQotICAgICAgICBy
ZXR1cm4gQXZvaWRSZWdpb25CcmVha0JldHdlZW47Ci0gICAgcmV0dXJuIHByaW1pdGl2ZVZhbHVl
OwotfQotCi1pbmxpbmUgQnJlYWtJbnNpZGUgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0
UmVnaW9uQnJlYWtJbnNpZGUoU3R5bGVSZXNvbHZlciYsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkK
LXsKLSAgICBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVl
Pih2YWx1ZSk7Ci0gICAgaWYgKHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZUF2
b2lkKQotICAgICAgICByZXR1cm4gQXZvaWRSZWdpb25CcmVha0luc2lkZTsKLSAgICByZXR1cm4g
cHJpbWl0aXZlVmFsdWU7Ci19Ci0jZW5kaWYKLQogaW5saW5lIEhhbmdpbmdQdW5jdHVhdGlvbiBT
dHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRIYW5naW5nUHVuY3R1YXRpb24oU3R5bGVSZXNv
bHZlciYsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBIYW5naW5nUHVuY3R1YXRpb24g
cmVzdWx0ID0gUmVuZGVyU3R5bGU6OmluaXRpYWxIYW5naW5nUHVuY3R1YXRpb24oKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnRpZXMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnRpZXMuY3BwCShyZXZpc2lvbiAyMjIyNTcpCisr
KyBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0aWVzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTE5MSwxMSArMTE5MSw2IEBAIHN0YXRpYyBjb25zdCBDU1NQcm9wZXJ0eUlEIGJsb2NrUHJv
cGVydGkKICAgICBDU1NQcm9wZXJ0eVBhZ2VCcmVha0FmdGVyLAogICAgIENTU1Byb3BlcnR5UGFn
ZUJyZWFrQmVmb3JlLAogICAgIENTU1Byb3BlcnR5UGFnZUJyZWFrSW5zaWRlLAotI2lmIEVOQUJM
RShDU1NfUkVHSU9OUykKLSAgICBDU1NQcm9wZXJ0eVdlYmtpdFJlZ2lvbkJyZWFrQWZ0ZXIsCi0g
ICAgQ1NTUHJvcGVydHlXZWJraXRSZWdpb25CcmVha0JlZm9yZSwKLSAgICBDU1NQcm9wZXJ0eVdl
YmtpdFJlZ2lvbkJyZWFrSW5zaWRlLAotI2VuZGlmCiAgICAgQ1NTUHJvcGVydHlUZXh0QWxpZ24s
CiAjaWYgRU5BQkxFKENTUzNfVEVYVCkKICAgICBDU1NQcm9wZXJ0eVdlYmtpdFRleHRBbGlnbkxh
c3QsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCShyZXZpc2lvbiAyMjIy
NTcpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTc1LDcgKzc1LDYgQEAKICNpbmNsdWRlICJOb2RlUmVuZGVyU3R5bGUuaCIKICNpbmNs
dWRlICJQYWdlUnVsZUNvbGxlY3Rvci5oIgogI2luY2x1ZGUgIlBhaXIuaCIKLSNpbmNsdWRlICJS
ZW5kZXJSZWdpb24uaCIKICNpbmNsdWRlICJSZW5kZXJTY3JvbGxiYXIuaCIKICNpbmNsdWRlICJS
ZW5kZXJTdHlsZUNvbnN0YW50cy5oIgogI2luY2x1ZGUgIlJlbmRlclRoZW1lLmgiCkBAIC0xNDEs
NyArMTQwLDYgQEAgaW5saW5lIHZvaWQgU3R5bGVSZXNvbHZlcjo6U3RhdGU6OmNsZWFyKAogICAg
IG1fZWxlbWVudCA9IG51bGxwdHI7CiAgICAgbV9wYXJlbnRTdHlsZSA9IG51bGxwdHI7CiAgICAg
bV9vd25lZFBhcmVudFN0eWxlID0gbnVsbHB0cjsKLSAgICBtX3JlZ2lvbkZvclN0eWxpbmcgPSBu
dWxscHRyOwogICAgIG1fY3NzVG9MZW5ndGhDb252ZXJzaW9uRGF0YSA9IENTU1RvTGVuZ3RoQ29u
dmVyc2lvbkRhdGEoKTsKIH0KIApAQCAtMjk4LDEwICsyOTYsOSBAQCB2b2lkIFN0eWxlUmVzb2x2
ZXI6OnN3ZWVwTWF0Y2hlZFByb3BlcnRpCiAgICAgbV9tYXRjaGVkUHJvcGVydGllc0NhY2hlQWRk
aXRpb25zU2luY2VMYXN0U3dlZXAgPSAwOwogfQogCi1TdHlsZVJlc29sdmVyOjpTdGF0ZTo6U3Rh
dGUoY29uc3QgRWxlbWVudCYgZWxlbWVudCwgY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxl
LCBjb25zdCBSZW5kZXJTdHlsZSogZG9jdW1lbnRFbGVtZW50U3R5bGUsIGNvbnN0IFJlbmRlclJl
Z2lvbiogcmVnaW9uRm9yU3R5bGluZywgY29uc3QgU2VsZWN0b3JGaWx0ZXIqIHNlbGVjdG9yRmls
dGVyKQorU3R5bGVSZXNvbHZlcjo6U3RhdGU6OlN0YXRlKGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQs
IGNvbnN0IFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIGRvY3Vt
ZW50RWxlbWVudFN0eWxlLCBjb25zdCBTZWxlY3RvckZpbHRlciogc2VsZWN0b3JGaWx0ZXIpCiAg
ICAgOiBtX2VsZW1lbnQoJmVsZW1lbnQpCiAgICAgLCBtX3BhcmVudFN0eWxlKHBhcmVudFN0eWxl
KQotICAgICwgbV9yZWdpb25Gb3JTdHlsaW5nKHJlZ2lvbkZvclN0eWxpbmcpCiAgICAgLCBtX2Vs
ZW1lbnRMaW5rU3RhdGUoZWxlbWVudC5kb2N1bWVudCgpLnZpc2l0ZWRMaW5rU3RhdGUoKS5kZXRl
cm1pbmVMaW5rU3RhdGUoZWxlbWVudCkpCiAgICAgLCBtX3NlbGVjdG9yRmlsdGVyKHNlbGVjdG9y
RmlsdGVyKQogewpAQCAtMzQyLDExICszMzksMTEgQEAgc3RhdGljIGlubGluZSBib29sIGlzQXRT
aGFkb3dCb3VuZGFyeShjbwogICAgIHJldHVybiBwYXJlbnROb2RlICYmIHBhcmVudE5vZGUtPmlz
U2hhZG93Um9vdCgpOwogfQogCi1FbGVtZW50U3R5bGUgU3R5bGVSZXNvbHZlcjo6c3R5bGVGb3JF
bGVtZW50KGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFJlbmRlclN0eWxlKiBwYXJlbnRT
dHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudEJveFN0eWxlLCBSdWxlTWF0Y2hpbmdCZWhh
dmlvciBtYXRjaGluZ0JlaGF2aW9yLCBjb25zdCBSZW5kZXJSZWdpb24qIHJlZ2lvbkZvclN0eWxp
bmcsIGNvbnN0IFNlbGVjdG9yRmlsdGVyKiBzZWxlY3RvckZpbHRlcikKK0VsZW1lbnRTdHlsZSBT
dHlsZVJlc29sdmVyOjpzdHlsZUZvckVsZW1lbnQoY29uc3QgRWxlbWVudCYgZWxlbWVudCwgY29u
c3QgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSogcGFyZW50Qm94
U3R5bGUsIFJ1bGVNYXRjaGluZ0JlaGF2aW9yIG1hdGNoaW5nQmVoYXZpb3IsIGNvbnN0IFNlbGVj
dG9yRmlsdGVyKiBzZWxlY3RvckZpbHRlcikKIHsKICAgICBSRUxFQVNFX0FTU0VSVCghbV9pc0Rl
bGV0ZWQpOwogCi0gICAgbV9zdGF0ZSA9IFN0YXRlKGVsZW1lbnQsIHBhcmVudFN0eWxlLCBtX292
ZXJyaWRlRG9jdW1lbnRFbGVtZW50U3R5bGUsIHJlZ2lvbkZvclN0eWxpbmcsIHNlbGVjdG9yRmls
dGVyKTsKKyAgICBtX3N0YXRlID0gU3RhdGUoZWxlbWVudCwgcGFyZW50U3R5bGUsIG1fb3ZlcnJp
ZGVEb2N1bWVudEVsZW1lbnRTdHlsZSwgc2VsZWN0b3JGaWx0ZXIpOwogICAgIFN0YXRlJiBzdGF0
ZSA9IG1fc3RhdGU7CiAKICAgICBpZiAoc3RhdGUucGFyZW50U3R5bGUoKSkgewpAQCAtMzczLDcg
KzM3MCw2IEBAIEVsZW1lbnRTdHlsZSBTdHlsZVJlc29sdmVyOjpzdHlsZUZvckVsZW0KICAgICBD
U1NEZWZhdWx0U3R5bGVTaGVldHM6OmVuc3VyZURlZmF1bHRTdHlsZVNoZWV0c0ZvckVsZW1lbnQo
ZWxlbWVudCk7CiAKICAgICBFbGVtZW50UnVsZUNvbGxlY3RvciBjb2xsZWN0b3IoZWxlbWVudCwg
bV9ydWxlU2V0cywgbV9zdGF0ZS5zZWxlY3RvckZpbHRlcigpKTsKLSAgICBjb2xsZWN0b3Iuc2V0
UmVnaW9uRm9yU3R5bGluZyhyZWdpb25Gb3JTdHlsaW5nKTsKICAgICBjb2xsZWN0b3Iuc2V0TWVk
aXVtKCZtX21lZGlhUXVlcnlFdmFsdWF0b3IpOwogCiAgICAgaWYgKG1hdGNoaW5nQmVoYXZpb3Ig
PT0gTWF0Y2hPbmx5VXNlckFnZW50UnVsZXMpCkBAIC0xMDU5LDI3ICsxMDU1LDYgQEAgdm9pZCBT
dHlsZVJlc29sdmVyOjphZGp1c3RSZW5kZXJTdHlsZShSZQogICAgIH0KIH0KIAotYm9vbCBTdHls
ZVJlc29sdmVyOjpjaGVja1JlZ2lvblN0eWxlKGNvbnN0IEVsZW1lbnQqIHJlZ2lvbkVsZW1lbnQp
Ci17Ci0gICAgdW5zaWduZWQgcnVsZXNTaXplID0gbV9ydWxlU2V0cy5hdXRob3JTdHlsZSgpLnJl
Z2lvblNlbGVjdG9yc0FuZFJ1bGVTZXRzKCkuc2l6ZSgpOwotICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBydWxlc1NpemU7ICsraSkgewotICAgICAgICBBU1NFUlQobV9ydWxlU2V0cy5hdXRo
b3JTdHlsZSgpLnJlZ2lvblNlbGVjdG9yc0FuZFJ1bGVTZXRzKCkuYXQoaSkucnVsZVNldC5nZXQo
KSk7Ci0gICAgICAgIGlmIChjaGVja1JlZ2lvblNlbGVjdG9yKG1fcnVsZVNldHMuYXV0aG9yU3R5
bGUoKS5yZWdpb25TZWxlY3RvcnNBbmRSdWxlU2V0cygpLmF0KGkpLnNlbGVjdG9yLCByZWdpb25F
bGVtZW50KSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIGlmIChtX3J1
bGVTZXRzLnVzZXJTdHlsZSgpKSB7Ci0gICAgICAgIHJ1bGVzU2l6ZSA9IG1fcnVsZVNldHMudXNl
clN0eWxlKCktPnJlZ2lvblNlbGVjdG9yc0FuZFJ1bGVTZXRzKCkuc2l6ZSgpOwotICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcnVsZXNTaXplOyArK2kpIHsKLSAgICAgICAgICAgIEFT
U0VSVChtX3J1bGVTZXRzLnVzZXJTdHlsZSgpLT5yZWdpb25TZWxlY3RvcnNBbmRSdWxlU2V0cygp
LmF0KGkpLnJ1bGVTZXQuZ2V0KCkpOwotICAgICAgICAgICAgaWYgKGNoZWNrUmVnaW9uU2VsZWN0
b3IobV9ydWxlU2V0cy51c2VyU3R5bGUoKS0+cmVnaW9uU2VsZWN0b3JzQW5kUnVsZVNldHMoKS5h
dChpKS5zZWxlY3RvciwgcmVnaW9uRWxlbWVudCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRy
dWU7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KIHN0YXRpYyB2
b2lkIGNoZWNrRm9yT3JpZW50YXRpb25DaGFuZ2UoUmVuZGVyU3R5bGUqIHN0eWxlKQogewogICAg
IEZvbnRPcmllbnRhdGlvbiBmb250T3JpZW50YXRpb247CkBAIC0xNTA0LDIxICsxNDc5LDYgQEAg
c3RhdGljIGlubGluZSBib29sIGlzVmFsaWRNYXJrZXJTdHlsZVBybwogICAgIHJldHVybiBmYWxz
ZTsKIH0KIAotLy8gaHR0cDovL2Rldi53My5vcmcvY3Nzd2cvY3NzMy1yZWdpb25zLyN0aGUtYXQt
cmVnaW9uLXN0eWxlLXJ1bGUKLS8vIEZJWE1FOiBBZGQgaW5jcmVtZW50YWwgc3VwcG9ydCBmb3Ig
b3RoZXIgcmVnaW9uIHN0eWxpbmcgcHJvcGVydGllcy4KLXN0YXRpYyBpbmxpbmUgYm9vbCBpc1Zh
bGlkUmVnaW9uU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIGlkKQotewotICAgIHN3aXRjaCAo
aWQpIHsKLSAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yOgotICAgIGNhc2UgQ1NT
UHJvcGVydHlDb2xvcjoKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgZGVmYXVsdDoKLSAgICAg
ICAgYnJlYWs7Ci0gICAgfQotCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCiAjaWYgRU5BQkxFKFZJ
REVPX1RSQUNLKQogc3RhdGljIGlubGluZSBib29sIGlzVmFsaWRDdWVTdHlsZVByb3BlcnR5KENT
U1Byb3BlcnR5SUQgaWQpCiB7CkBAIC0yMTc5LDggKzIxMzksNiBAQCB2b2lkIFN0eWxlUmVzb2x2
ZXI6OkNhc2NhZGVkUHJvcGVydGllczo6CiAgICAgICAgIH0KICAgICAgICAgQ1NTUHJvcGVydHlJ
RCBwcm9wZXJ0eUlEID0gY3VycmVudC5pZCgpOwogCi0gICAgICAgIGlmIChwcm9wZXJ0eVdoaXRl
bGlzdFR5cGUgPT0gUHJvcGVydHlXaGl0ZWxpc3RSZWdpb24gJiYgIWlzVmFsaWRSZWdpb25TdHls
ZVByb3BlcnR5KHByb3BlcnR5SUQpKQotICAgICAgICAgICAgY29udGludWU7CiAjaWYgRU5BQkxF
KFZJREVPX1RSQUNLKQogICAgICAgICBpZiAocHJvcGVydHlXaGl0ZWxpc3RUeXBlID09IFByb3Bl
cnR5V2hpdGVsaXN0Q3VlICYmICFpc1ZhbGlkQ3VlU3R5bGVQcm9wZXJ0eShwcm9wZXJ0eUlEKSkK
ICAgICAgICAgICAgIGNvbnRpbnVlOwpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVz
b2x2ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5o
CShyZXZpc2lvbiAyMjIyNTcpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC02Miw3ICs2Miw2IEBAIGNsYXNzIEtleWZyYW1lTGlzdDsKIGNs
YXNzIEtleWZyYW1lVmFsdWU7CiBjbGFzcyBNZWRpYVF1ZXJ5RXZhbHVhdG9yOwogY2xhc3MgTm9k
ZTsKLWNsYXNzIFJlbmRlclJlZ2lvbjsKIGNsYXNzIFJlbmRlclNjcm9sbGJhcjsKIGNsYXNzIFJ1
bGVEYXRhOwogY2xhc3MgUnVsZVNldDsKQEAgLTc2LDcgKzc1LDYgQEAgY2xhc3MgU3R5bGVQcm9w
ZXJ0aWVzOwogY2xhc3MgU3R5bGVSdWxlOwogY2xhc3MgU3R5bGVSdWxlS2V5ZnJhbWVzOwogY2xh
c3MgU3R5bGVSdWxlUGFnZTsKLWNsYXNzIFN0eWxlUnVsZVJlZ2lvbjsKIGNsYXNzIFN0eWxlU2hl
ZXQ7CiBjbGFzcyBTdHlsZVNoZWV0TGlzdDsKIGNsYXNzIFN0eWxlZEVsZW1lbnQ7CkBAIC0xMzEs
NyArMTI5LDcgQEAgcHVibGljOgogICAgIFN0eWxlUmVzb2x2ZXIoRG9jdW1lbnQmKTsKICAgICB+
U3R5bGVSZXNvbHZlcigpOwogCi0gICAgRWxlbWVudFN0eWxlIHN0eWxlRm9yRWxlbWVudChjb25z
dCBFbGVtZW50JiwgY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlLCBjb25zdCBSZW5kZXJT
dHlsZSogcGFyZW50Qm94U3R5bGUgPSBudWxscHRyLCBSdWxlTWF0Y2hpbmdCZWhhdmlvciA9IE1h
dGNoQWxsUnVsZXMsIGNvbnN0IFJlbmRlclJlZ2lvbiogcmVnaW9uRm9yU3R5bGluZyA9IG51bGxw
dHIsIGNvbnN0IFNlbGVjdG9yRmlsdGVyKiA9IG51bGxwdHIpOworICAgIEVsZW1lbnRTdHlsZSBz
dHlsZUZvckVsZW1lbnQoY29uc3QgRWxlbWVudCYsIGNvbnN0IFJlbmRlclN0eWxlKiBwYXJlbnRT
dHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudEJveFN0eWxlID0gbnVsbHB0ciwgUnVsZU1h
dGNoaW5nQmVoYXZpb3IgPSBNYXRjaEFsbFJ1bGVzLCBjb25zdCBTZWxlY3RvckZpbHRlciogPSBu
dWxscHRyKTsKIAogICAgIHZvaWQga2V5ZnJhbWVTdHlsZXNGb3JBbmltYXRpb24oY29uc3QgRWxl
bWVudCYsIGNvbnN0IFJlbmRlclN0eWxlKiwgS2V5ZnJhbWVMaXN0Jik7CiAKQEAgLTIxMSw4ICsy
MDksNiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFkZEtleWZyYW1lU3R5bGUoUmVmPFN0eWxlUnVs
ZUtleWZyYW1lcz4mJik7CiAKLSAgICBib29sIGNoZWNrUmVnaW9uU3R5bGUoY29uc3QgRWxlbWVu
dCogcmVnaW9uRWxlbWVudCk7Ci0KICAgICBib29sIHVzZXNGaXJzdExpbmVSdWxlcygpIGNvbnN0
IHsgcmV0dXJuIG1fcnVsZVNldHMuZmVhdHVyZXMoKS51c2VzRmlyc3RMaW5lUnVsZXM7IH0KICAg
ICBib29sIHVzZXNGaXJzdExldHRlclJ1bGVzKCkgY29uc3QgeyByZXR1cm4gbV9ydWxlU2V0cy5m
ZWF0dXJlcygpLnVzZXNGaXJzdExldHRlclJ1bGVzOyB9CiAgICAgCkBAIC0zNDYsNyArMzQyLDcg
QEAgcHVibGljOgogICAgIGNsYXNzIFN0YXRlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIFN0YXRl
KCkgeyB9Ci0gICAgICAgIFN0YXRlKGNvbnN0IEVsZW1lbnQmLCBjb25zdCBSZW5kZXJTdHlsZSog
cGFyZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKiBkb2N1bWVudEVsZW1lbnRTdHlsZSA9IG51
bGxwdHIsIGNvbnN0IFJlbmRlclJlZ2lvbiogcmVnaW9uRm9yU3R5bGluZyA9IG51bGxwdHIsIGNv
bnN0IFNlbGVjdG9yRmlsdGVyKiA9IG51bGxwdHIpOworICAgICAgICBTdGF0ZShjb25zdCBFbGVt
ZW50JiwgY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSog
ZG9jdW1lbnRFbGVtZW50U3R5bGUgPSBudWxscHRyLCBjb25zdCBTZWxlY3RvckZpbHRlciogPSBu
dWxscHRyKTsKIAogICAgIHB1YmxpYzoKICAgICAgICAgdm9pZCBjbGVhcigpOwpAQCAtMzYyLDcg
KzM1OCw2IEBAIHB1YmxpYzoKICAgICAgICAgY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxl
KCkgY29uc3QgeyByZXR1cm4gbV9wYXJlbnRTdHlsZTsgfQogICAgICAgICBjb25zdCBSZW5kZXJT
dHlsZSogcm9vdEVsZW1lbnRTdHlsZSgpIGNvbnN0IHsgcmV0dXJuIG1fcm9vdEVsZW1lbnRTdHls
ZTsgfQogCi0gICAgICAgIGNvbnN0IFJlbmRlclJlZ2lvbiogcmVnaW9uRm9yU3R5bGluZygpIGNv
bnN0IHsgcmV0dXJuIG1fcmVnaW9uRm9yU3R5bGluZzsgfQogICAgICAgICBFSW5zaWRlTGluayBl
bGVtZW50TGlua1N0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9lbGVtZW50TGlua1N0YXRlOyB9CiAK
ICAgICAgICAgdm9pZCBzZXRBcHBseVByb3BlcnR5VG9SZWd1bGFyU3R5bGUoYm9vbCBpc0FwcGx5
KSB7IG1fYXBwbHlQcm9wZXJ0eVRvUmVndWxhclN0eWxlID0gaXNBcHBseTsgfQpAQCAtNDE1LDgg
KzQxMCw2IEBAIHB1YmxpYzoKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBt
X293bmVkUGFyZW50U3R5bGU7CiAgICAgICAgIGNvbnN0IFJlbmRlclN0eWxlKiBtX3Jvb3RFbGVt
ZW50U3R5bGUgeyBudWxscHRyIH07CiAKLSAgICAgICAgY29uc3QgUmVuZGVyUmVnaW9uKiBtX3Jl
Z2lvbkZvclN0eWxpbmcgeyBudWxscHRyIH07Ci0gICAgICAgIAogICAgICAgICBFSW5zaWRlTGlu
ayBtX2VsZW1lbnRMaW5rU3RhdGUgeyBOb3RJbnNpZGVMaW5rIH07CiAKICAgICAgICAgYm9vbCBt
X2FwcGx5UHJvcGVydHlUb1JlZ3VsYXJTdHlsZSB7IHRydWUgfTsKQEAgLTU0MSwxOSArNTM0LDQg
QEAgaW5saW5lIGJvb2wgU3R5bGVSZXNvbHZlcjo6aGFzU2VsZWN0b3JGbwogICAgIHJldHVybiBt
X3J1bGVTZXRzLmZlYXR1cmVzKCkuaWRzSW5SdWxlcy5jb250YWlucyhpZFZhbHVlKTsKIH0KIAot
aW5saW5lIGJvb2wgY2hlY2tSZWdpb25TZWxlY3Rvcihjb25zdCBDU1NTZWxlY3RvciogcmVnaW9u
U2VsZWN0b3IsIGNvbnN0IEVsZW1lbnQqIHJlZ2lvbkVsZW1lbnQpCi17Ci0gICAgaWYgKCFyZWdp
b25TZWxlY3RvciB8fCAhcmVnaW9uRWxlbWVudCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgU2VsZWN0b3JDaGVja2VyIHNlbGVjdG9yQ2hlY2tlcihyZWdpb25FbGVtZW50LT5kb2N1bWVu
dCgpKTsKLSAgICBmb3IgKGNvbnN0IENTU1NlbGVjdG9yKiBzID0gcmVnaW9uU2VsZWN0b3I7IHM7
IHMgPSBDU1NTZWxlY3Rvckxpc3Q6Om5leHQocykpIHsKLSAgICAgICAgU2VsZWN0b3JDaGVja2Vy
OjpDaGVja2luZ0NvbnRleHQgc2VsZWN0b3JDaGVja2luZ0NvbnRleHQoU2VsZWN0b3JDaGVja2Vy
OjpNb2RlOjpRdWVyeWluZ1J1bGVzKTsKLSAgICAgICAgdW5zaWduZWQgaWdub3JlZFNwZWNpZmlj
aXR5OwotICAgICAgICBpZiAoc2VsZWN0b3JDaGVja2VyLm1hdGNoKCpzLCAqcmVnaW9uRWxlbWVu
dCwgc2VsZWN0b3JDaGVja2luZ0NvbnRleHQsIGlnbm9yZWRTcGVjaWZpY2l0eSkpCi0gICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlLmNwcAkocmV2aXNpb24g
MjIyMjU3KQorKysgU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM1LDcgKzM1LDYgQEAKICNpbmNsdWRlICJNZWRpYUxpc3QuaCIKICNpbmNsdWRlICJT
dHlsZVByb3BlcnRpZXMuaCIKICNpbmNsdWRlICJTdHlsZVJ1bGVJbXBvcnQuaCIKLSNpbmNsdWRl
ICJXZWJLaXRDU1NSZWdpb25SdWxlLmgiCiAjaW5jbHVkZSAiV2ViS2l0Q1NTVmlld3BvcnRSdWxl
LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTc0LDExICs3Myw2IEBAIHZvaWQgU3R5bGVS
dWxlQmFzZTo6ZGVzdHJveSgpCiAgICAgY2FzZSBTdXBwb3J0czoKICAgICAgICAgZGVsZXRlIGRv
d25jYXN0PFN0eWxlUnVsZVN1cHBvcnRzPih0aGlzKTsKICAgICAgICAgcmV0dXJuOwotI2lmIEVO
QUJMRShDU1NfUkVHSU9OUykKLSAgICBjYXNlIFJlZ2lvbjoKLSAgICAgICAgZGVsZXRlIGRvd25j
YXN0PFN0eWxlUnVsZVJlZ2lvbj4odGhpcyk7Ci0gICAgICAgIHJldHVybjsKLSNlbmRpZgogICAg
IGNhc2UgSW1wb3J0OgogICAgICAgICBkZWxldGUgZG93bmNhc3Q8U3R5bGVSdWxlSW1wb3J0Pih0
aGlzKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTAwLDkgKzk0LDYgQEAgdm9pZCBTdHlsZVJ1bGVC
YXNlOjpkZXN0cm95KCkKICAgICAgICAgZGVsZXRlIGRvd25jYXN0PFN0eWxlUnVsZUNoYXJzZXQ+
KHRoaXMpOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBVbmtub3duOgotI2lmICFFTkFCTEUo
Q1NTX1JFR0lPTlMpCi0gICAgY2FzZSBSZWdpb246Ci0jZW5kaWYKICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMjIsMTAgKzExMyw2IEBA
IFJlZjxTdHlsZVJ1bGVCYXNlPiBTdHlsZVJ1bGVCYXNlOjpjb3B5KCkKICAgICAgICAgcmV0dXJu
IGRvd25jYXN0PFN0eWxlUnVsZU1lZGlhPigqdGhpcykuY29weSgpOwogICAgIGNhc2UgU3VwcG9y
dHM6CiAgICAgICAgIHJldHVybiBkb3duY2FzdDxTdHlsZVJ1bGVTdXBwb3J0cz4oKnRoaXMpLmNv
cHkoKTsKLSNpZiBFTkFCTEUoQ1NTX1JFR0lPTlMpCi0gICAgY2FzZSBSZWdpb246Ci0gICAgICAg
IHJldHVybiBkb3duY2FzdDxTdHlsZVJ1bGVSZWdpb24+KCp0aGlzKS5jb3B5KCk7Ci0jZW5kaWYK
ICAgICBjYXNlIEtleWZyYW1lczoKICAgICAgICAgcmV0dXJuIGRvd25jYXN0PFN0eWxlUnVsZUtl
eWZyYW1lcz4oKnRoaXMpLmNvcHkoKTsKICNpZiBFTkFCTEUoQ1NTX0RFVklDRV9BREFQVEFUSU9O
KQpAQCAtMTM5LDkgKzEyNiw2IEBAIFJlZjxTdHlsZVJ1bGVCYXNlPiBTdHlsZVJ1bGVCYXNlOjpj
b3B5KCkKICAgICBjYXNlIFVua25vd246CiAgICAgY2FzZSBDaGFyc2V0OgogICAgIGNhc2UgS2V5
ZnJhbWU6Ci0jaWYgIUVOQUJMRShDU1NfUkVHSU9OUykKLSAgICBjYXNlIFJlZ2lvbjoKLSNlbmRp
ZgogICAgICAgICBicmVhazsKICAgICB9CiAgICAgQ1JBU0goKTsKQEAgLTE2NywxMSArMTUxLDYg
QEAgUmVmUHRyPENTU1J1bGU+IFN0eWxlUnVsZUJhc2U6OmNyZWF0ZUNTUwogICAgIGNhc2UgU3Vw
cG9ydHM6CiAgICAgICAgIHJ1bGUgPSBDU1NTdXBwb3J0c1J1bGU6OmNyZWF0ZShkb3duY2FzdDxT
dHlsZVJ1bGVTdXBwb3J0cz4oc2VsZiksIHBhcmVudFNoZWV0KTsKICAgICAgICAgYnJlYWs7Ci0j
aWYgRU5BQkxFKENTU19SRUdJT05TKQotICAgIGNhc2UgUmVnaW9uOgotICAgICAgICBydWxlID0g
V2ViS2l0Q1NTUmVnaW9uUnVsZTo6Y3JlYXRlKGRvd25jYXN0PFN0eWxlUnVsZVJlZ2lvbj4oc2Vs
ZiksIHBhcmVudFNoZWV0KTsKLSAgICAgICAgYnJlYWs7Ci0jZW5kaWYKICAgICBjYXNlIEltcG9y
dDoKICAgICAgICAgcnVsZSA9IENTU0ltcG9ydFJ1bGU6OmNyZWF0ZShkb3duY2FzdDxTdHlsZVJ1
bGVJbXBvcnQ+KHNlbGYpLCBwYXJlbnRTaGVldCk7CiAgICAgICAgIGJyZWFrOwpAQCAtMTg5LDkg
KzE2OCw2IEBAIFJlZlB0cjxDU1NSdWxlPiBTdHlsZVJ1bGVCYXNlOjpjcmVhdGVDU1MKICAgICBj
YXNlIFVua25vd246CiAgICAgY2FzZSBDaGFyc2V0OgogICAgIGNhc2UgS2V5ZnJhbWU6Ci0jaWYg
IUVOQUJMRShDU1NfUkVHSU9OUykKLSAgICBjYXNlIFJlZ2lvbjoKLSNlbmRpZgogICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQpAQCAt
NDI3LDI1ICs0MDMsNiBAQCBTdHlsZVJ1bGVTdXBwb3J0czo6U3R5bGVSdWxlU3VwcG9ydHMoY29u
CiB7CiB9CiAKLVN0eWxlUnVsZVJlZ2lvbjo6U3R5bGVSdWxlUmVnaW9uKFZlY3RvcjxzdGQ6OnVu
aXF1ZV9wdHI8Q1NTUGFyc2VyU2VsZWN0b3I+Piogc2VsZWN0b3JzLCBWZWN0b3I8UmVmUHRyPFN0
eWxlUnVsZUJhc2U+PiYgYWRvcHRSdWxlcykKLSAgICA6IFN0eWxlUnVsZUdyb3VwKFJlZ2lvbiwg
YWRvcHRSdWxlcykKLXsKLSAgICBtX3NlbGVjdG9yTGlzdC5hZG9wdFNlbGVjdG9yVmVjdG9yKCpz
ZWxlY3RvcnMpOwotfQotCi1TdHlsZVJ1bGVSZWdpb246OlN0eWxlUnVsZVJlZ2lvbihDU1NTZWxl
Y3Rvckxpc3QmIHNlbGVjdG9ycywgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGVCYXNlPj4mIGFkb3B0
UnVsZXMpCi0gICAgOiBTdHlsZVJ1bGVHcm91cChSZWdpb24sIGFkb3B0UnVsZXMpCi0gICAgLCBt
X3NlbGVjdG9yTGlzdChXVEZNb3ZlKHNlbGVjdG9ycykpCi17Ci19Ci0KLVN0eWxlUnVsZVJlZ2lv
bjo6U3R5bGVSdWxlUmVnaW9uKGNvbnN0IFN0eWxlUnVsZVJlZ2lvbiYgbykKLSAgICA6IFN0eWxl
UnVsZUdyb3VwKG8pCi0gICAgLCBtX3NlbGVjdG9yTGlzdChvLm1fc2VsZWN0b3JMaXN0KQotewot
fQotCi0KICNpZiBFTkFCTEUoQ1NTX0RFVklDRV9BREFQVEFUSU9OKQogU3R5bGVSdWxlVmlld3Bv
cnQ6OlN0eWxlUnVsZVZpZXdwb3J0KFJlZjxTdHlsZVByb3BlcnRpZXM+JiYgcHJvcGVydGllcykK
ICAgICA6IFN0eWxlUnVsZUJhc2UoVmlld3BvcnQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3Mv
U3R5bGVSdWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZS5o
CShyZXZpc2lvbiAyMjIyNTcpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTU1LDcgKzU1LDYgQEAgcHVibGljOgogI2lmIEVOQUJMRShDU1NfREVW
SUNFX0FEQVBUQVRJT04pCiAgICAgICAgIFZpZXdwb3J0ID0gMTUsCiAjZW5kaWYKLSAgICAgICAg
UmVnaW9uID0gMTYsCiAgICAgfTsKIAogICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0
YXRpY19jYXN0PFR5cGU+KG1fdHlwZSk7IH0KQEAgLTY4LDcgKzY3LDYgQEAgcHVibGljOgogICAg
IGJvb2wgaXNNZWRpYVJ1bGUoKSBjb25zdCB7IHJldHVybiB0eXBlKCkgPT0gTWVkaWE7IH0KICAg
ICBib29sIGlzUGFnZVJ1bGUoKSBjb25zdCB7IHJldHVybiB0eXBlKCkgPT0gUGFnZTsgfQogICAg
IGJvb2wgaXNTdHlsZVJ1bGUoKSBjb25zdCB7IHJldHVybiB0eXBlKCkgPT0gU3R5bGU7IH0KLSAg
ICBib29sIGlzUmVnaW9uUnVsZSgpIGNvbnN0IHsgcmV0dXJuIHR5cGUoKSA9PSBSZWdpb247IH0K
ICAgICBib29sIGlzU3VwcG9ydHNSdWxlKCkgY29uc3QgeyByZXR1cm4gdHlwZSgpID09IFN1cHBv
cnRzOyB9CiAjaWYgRU5BQkxFKENTU19ERVZJQ0VfQURBUFRBVElPTikKICAgICBib29sIGlzVmll
d3BvcnRSdWxlKCkgY29uc3QgeyByZXR1cm4gdHlwZSgpID09IFZpZXdwb3J0OyB9CkBAIC0yNzYs
MzEgKzI3NCw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2NvbmRpdGlvbklzU3VwcG9ydGVkOwog
fTsKIAotY2xhc3MgU3R5bGVSdWxlUmVnaW9uIGZpbmFsIDogcHVibGljIFN0eWxlUnVsZUdyb3Vw
IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFN0eWxlUnVsZVJlZ2lvbj4gY3JlYXRlKFZlY3Rv
cjxzdGQ6OnVuaXF1ZV9wdHI8Q1NTUGFyc2VyU2VsZWN0b3I+Piogc2VsZWN0b3JzLCBWZWN0b3I8
UmVmUHRyPFN0eWxlUnVsZUJhc2U+PiYgYWRvcHRSdWxlcykKLSAgICB7Ci0gICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFN0eWxlUnVsZVJlZ2lvbihzZWxlY3RvcnMsIGFkb3B0UnVsZXMpKTsK
LSAgICB9Ci0gICAgCi0gICAgc3RhdGljIFJlZjxTdHlsZVJ1bGVSZWdpb24+IGNyZWF0ZShDU1NT
ZWxlY3Rvckxpc3QmIHNlbGVjdG9ycywgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGVCYXNlPj4mIGFk
b3B0UnVsZXMpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHlsZVJ1bGVS
ZWdpb24oc2VsZWN0b3JzLCBhZG9wdFJ1bGVzKSk7Ci0gICAgfQotICAgIAotICAgIGNvbnN0IENT
U1NlbGVjdG9yTGlzdCYgc2VsZWN0b3JMaXN0KCkgY29uc3QgeyByZXR1cm4gbV9zZWxlY3Rvckxp
c3Q7IH0KLQotICAgIFJlZjxTdHlsZVJ1bGVSZWdpb24+IGNvcHkoKSBjb25zdCB7IHJldHVybiBh
ZG9wdFJlZigqbmV3IFN0eWxlUnVsZVJlZ2lvbigqdGhpcykpOyB9Ci0KLXByaXZhdGU6Ci0gICAg
U3R5bGVSdWxlUmVnaW9uKFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Q1NTUGFyc2VyU2VsZWN0b3I+
PiosIFZlY3RvcjxSZWZQdHI8U3R5bGVSdWxlQmFzZT4+JiBhZG9wdFJ1bGVzKTsKLSAgICBTdHls
ZVJ1bGVSZWdpb24oQ1NTU2VsZWN0b3JMaXN0JiwgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGVCYXNl
Pj4mKTsKLSAgICAKLSAgICBTdHlsZVJ1bGVSZWdpb24oY29uc3QgU3R5bGVSdWxlUmVnaW9uJik7
Ci0gICAgCi0gICAgQ1NTU2VsZWN0b3JMaXN0IG1fc2VsZWN0b3JMaXN0OwotfTsKLQogI2lmIEVO
QUJMRShDU1NfREVWSUNFX0FEQVBUQVRJT04pCiBjbGFzcyBTdHlsZVJ1bGVWaWV3cG9ydCBmaW5h
bCA6IHB1YmxpYyBTdHlsZVJ1bGVCYXNlIHsKIHB1YmxpYzoKQEAgLTM3OSwxMCArMzUyLDYgQEAg
U1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpTdAogICAgIHN0YXRpYyBib29s
IGlzVHlwZShjb25zdCBXZWJDb3JlOjpTdHlsZVJ1bGVCYXNlJiBydWxlKSB7IHJldHVybiBydWxl
LmlzU3VwcG9ydHNSdWxlKCk7IH0KIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKIAotU1BF
Q0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpTdHlsZVJ1bGVSZWdpb24pCi0gICAg
c3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OlN0eWxlUnVsZUJhc2UmIHJ1bGUpIHsg
cmV0dXJuIHJ1bGUuaXNSZWdpb25SdWxlKCk7IH0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5E
KCkKLQogI2lmIEVOQUJMRShDU1NfREVWSUNFX0FEQVBUQVRJT04pCiBTUEVDSUFMSVpFX1RZUEVf
VFJBSVRTX0JFR0lOKFdlYkNvcmU6OlN0eWxlUnVsZVZpZXdwb3J0KQogICAgIHN0YXRpYyBib29s
IGlzVHlwZShjb25zdCBXZWJDb3JlOjpTdHlsZVJ1bGVCYXNlJiBydWxlKSB7IHJldHVybiBydWxl
LmlzVmlld3BvcnRSdWxlKCk7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0
Q29udGVudHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0
Q29udGVudHMuY3BwCShyZXZpc2lvbiAyMjIyNTcpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVTaGVldENvbnRlbnRzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUwLDEwICs0NTAsNiBAQCBz
dGF0aWMgYm9vbCB0cmF2ZXJzZVN1YnJlc291cmNlc0luUnVsZXMoCiAgICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICBjYXNl
IFN0eWxlUnVsZUJhc2U6OlJlZ2lvbjoKLSAgICAgICAgICAgIGlmICh0cmF2ZXJzZVN1YnJlc291
cmNlc0luUnVsZXMoZG93bmNhc3Q8U3R5bGVSdWxlUmVnaW9uPigqcnVsZSkuY2hpbGRSdWxlcygp
LCBoYW5kbGVyKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICBjYXNlIFN0eWxlUnVsZUJhc2U6OkltcG9ydDoKICAgICAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogI2lmIEFTU0VSVF9ESVNBQkxFRApJbmRleDogU291cmNlL1dl
YkNvcmUvY3NzL1dlYktpdENTU1JlZ2lvblJ1bGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2Nzcy9XZWJLaXRDU1NSZWdpb25SdWxlLmNwcAkocmV2aXNpb24gMjIyMjU3KQorKysg
U291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU1JlZ2lvblJ1bGUuY3BwCShub25leGlzdGVudCkK
QEAgLTEsNjQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBZG9iZSBTeXN0ZW1z
IEluY29ycG9yYXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAx
MiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZQotICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKLSAqICAgIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCi0gKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZwotICogICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzCi0gKiAgICBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUiAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVS
IEJFCi0gKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksCi0gKiBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SCi0gKiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YKLSAqIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRgotICogU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNv
bmZpZy5oIgotCi0jaW5jbHVkZSAiV2ViS2l0Q1NTUmVnaW9uUnVsZS5oIgotCi0jaW5jbHVkZSAi
Q1NTUnVsZUxpc3QuaCIKLSNpbmNsdWRlICJTdHlsZVJ1bGUuaCIKLSNpbmNsdWRlIDx3dGYvdGV4
dC9TdHJpbmdCdWlsZGVyLmg+Ci0KLSNpZiBFTkFCTEUoQ1NTX1JFR0lPTlMpCi0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLVdlYktpdENTU1JlZ2lvblJ1bGU6OldlYktpdENTU1JlZ2lvblJ1bGUoU3R5
bGVSdWxlUmVnaW9uJiByZWdpb25SdWxlLCBDU1NTdHlsZVNoZWV0KiBwYXJlbnQpCi0gICAgOiBD
U1NHcm91cGluZ1J1bGUocmVnaW9uUnVsZSwgcGFyZW50KQotewotfQotCi1TdHJpbmcgV2ViS2l0
Q1NTUmVnaW9uUnVsZTo6Y3NzVGV4dCgpIGNvbnN0Ci17Ci0gICAgU3RyaW5nQnVpbGRlciByZXN1
bHQ7Ci0gICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoIkAtd2Via2l0LXJlZ2lvbiAiKTsKLQotICAg
IC8vIEZpcnN0IGFkZCB0aGUgc2VsZWN0b3JzLgotICAgIGRvd25jYXN0PFN0eWxlUnVsZVJlZ2lv
bj4obV9ncm91cFJ1bGUuZ2V0KCkpLnNlbGVjdG9yTGlzdCgpLmJ1aWxkU2VsZWN0b3JzVGV4dChy
ZXN1bHQpOwotCi0gICAgLy8gVGhlbiBhZGQgdGhlIHJ1bGVzLgotICAgIHJlc3VsdC5hcHBlbmRM
aXRlcmFsKCIgeyBcbiIpOwotICAgIGFwcGVuZENzc1RleHRGb3JJdGVtcyhyZXN1bHQpOwotICAg
IHJlc3VsdC5hcHBlbmQoJ30nKTsKLSAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7Ci19Ci0K
LX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9j
c3MvV2ViS2l0Q1NTUmVnaW9uUnVsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nz
cy9XZWJLaXRDU1NSZWdpb25SdWxlLmgJKHJldmlzaW9uIDIyMjI1NykKKysrIFNvdXJjZS9XZWJD
b3JlL2Nzcy9XZWJLaXRDU1NSZWdpb25SdWxlLmgJKG5vbmV4aXN0ZW50KQpAQCAtMSw1NiArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVk
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqCi0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlCi0gKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZwotICogICAgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqICAg
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nCi0gKiAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMKLSAqICAgIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSICJBUyBJUyIg
QU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgQkUKLSAqIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwKLSAqIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IKLSAqIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRgotICog
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GCi0gKiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUg
IkNTU0dyb3VwaW5nUnVsZS5oIgotCi0jaWYgRU5BQkxFKENTU19SRUdJT05TKQotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFN0eWxlUnVsZVJlZ2lvbjsKLQotY2xhc3MgV2ViS2l0Q1NT
UmVnaW9uUnVsZSBmaW5hbCA6IHB1YmxpYyBDU1NHcm91cGluZ1J1bGUgewotcHVibGljOgotICAg
IHN0YXRpYyBSZWY8V2ViS2l0Q1NTUmVnaW9uUnVsZT4gY3JlYXRlKFN0eWxlUnVsZVJlZ2lvbiYg
cnVsZSwgQ1NTU3R5bGVTaGVldCogc2hlZXQpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViS2l0
Q1NTUmVnaW9uUnVsZShydWxlLCBzaGVldCkpOyB9Ci0KLSAgICBDU1NSdWxlOjpUeXBlIHR5cGUo
KSBjb25zdCBmaW5hbCB7IHJldHVybiBXRUJLSVRfUkVHSU9OX1JVTEU7IH0KLSAgICBTdHJpbmcg
Y3NzVGV4dCgpIGNvbnN0IGZpbmFsOwotCi1wcml2YXRlOgotICAgIFdlYktpdENTU1JlZ2lvblJ1
bGUoU3R5bGVSdWxlUmVnaW9uJiwgQ1NTU3R5bGVTaGVldCogcGFyZW50KTsKLX07Ci0KLX0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKLQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19DU1NfUlVMRShXZWJL
aXRDU1NSZWdpb25SdWxlLCBDU1NSdWxlOjpXRUJLSVRfUkVHSU9OX1JVTEUpCi0KLSNlbmRpZiAv
LyBFTkFCTEUoQ1NTX1JFR0lPTlMpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NT
UmVnaW9uUnVsZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENT
U1JlZ2lvblJ1bGUuaWRsCShyZXZpc2lvbiAyMjIyNTcpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3Mv
V2ViS2l0Q1NTUmVnaW9uUnVsZS5pZGwJKG5vbmV4aXN0ZW50KQpAQCAtMSwzNSArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDExIEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUKLSAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nCi0gKiAgICBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogICAgY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcK
LSAqICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscwotICogICAgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVIgIkFTIElTIiBBTkQg
QU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBCRQotICogTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLAot
ICogT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUgotICogVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GCi0gKiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YKLSAqIFNVQ0ggREFNQUdFLgotICovCi0KLVsKLSAgICBDb25kaXRpb25hbD1DU1NfUkVHSU9O
UywKLV0gaW50ZXJmYWNlIFdlYktpdENTU1JlZ2lvblJ1bGUgOiBDU1NSdWxlIHsKLSAgICByZWFk
b25seSBhdHRyaWJ1dGUgQ1NTUnVsZUxpc3QgY3NzUnVsZXM7Ci19OwotCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9jc3MvcGFyc2VyL0NTU0F0UnVsZUlELmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9jc3MvcGFyc2VyL0NTU0F0UnVsZUlELmNwcAkocmV2aXNpb24gMjIyMjU3KQorKysg
U291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NBdFJ1bGVJRC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTU2LDEwICs1Niw2IEBAIENTU0F0UnVsZUlEIGNzc0F0UnVsZUlEKFN0cmluZ1ZpZXcgbmFt
ZSkKICAgICAgICAgcmV0dXJuIENTU0F0UnVsZVdlYmtpdEtleWZyYW1lczsKICAgICBpZiAoZXF1
YWxJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCAiYXBwbHkiKSkKICAgICAgICAgcmV0dXJuIENTU0F0
UnVsZUFwcGx5OwotI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKLSAgICBpZiAoZXF1YWxJZ25vcmlu
Z0FTQ0lJQ2FzZShuYW1lLCAiLXdlYmtpdC1yZWdpb24iKSkKLSAgICAgICAgcmV0dXJuIENTU0F0
UnVsZVdlYmtpdFJlZ2lvbjsKLSNlbmRpZgogICAgIHJldHVybiBDU1NBdFJ1bGVJbnZhbGlkOwog
fQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU0F0UnVsZUlELmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NBdFJ1bGVJRC5oCShyZXZpc2lv
biAyMjIyNTcpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU0F0UnVsZUlELmgJKHdv
cmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3LDYgQEAgZW51bSBDU1NBdFJ1bGVJRCB7CiAKICAgICBD
U1NBdFJ1bGVXZWJraXRLZXlmcmFtZXMgPSAxMCwKICAgICBDU1NBdFJ1bGVBcHBseSA9IDExLAot
ICAgIENTU0F0UnVsZVdlYmtpdFJlZ2lvbiA9IDEyCiB9OwogCiBDU1NBdFJ1bGVJRCBjc3NBdFJ1
bGVJRChTdHJpbmdWaWV3IG5hbWUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9D
U1NQYXJzZXJGYXN0UGF0aHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9w
YXJzZXIvQ1NTUGFyc2VyRmFzdFBhdGhzLmNwcAkocmV2aXNpb24gMjIyMjU3KQorKysgU291cmNl
L1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJGYXN0UGF0aHMuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC02MTMsMTcgKzYxMyw5IEBAIGJvb2wgQ1NTUGFyc2VyRmFzdFBhdGhzOjppc1ZhbGlkS2V5
d29yZFAKICAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVWaXNpYmxlIHx8IHZhbHVl
SUQgPT0gQ1NTVmFsdWVIaWRkZW4gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVNjcm9sbCB8fCB2YWx1
ZUlEID09IENTU1ZhbHVlQXV0byB8fCB2YWx1ZUlEID09IENTU1ZhbHVlT3ZlcmxheSB8fCB2YWx1
ZUlEID09IENTU1ZhbHVlV2Via2l0UGFnZWRYIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVXZWJraXRQ
YWdlZFk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eUJyZWFrQWZ0ZXI6CiAgICAgY2FzZSBDU1NQcm9w
ZXJ0eUJyZWFrQmVmb3JlOgotICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZUF1dG8g
fHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUF2b2lkIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVBdm9pZFBh
Z2UgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVBhZ2UgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUxlZnQg
fHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVJpZ2h0IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVSZWN0byB8
fCB2YWx1ZUlEID09IENTU1ZhbHVlVmVyc28gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUF2b2lkQ29s
dW1uIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVDb2x1bW4KLSNpZiBFTkFCTEUoQ1NTX1JFR0lPTlMp
Ci0gICAgICAgICAgICB8fCB2YWx1ZUlEID09IENTU1ZhbHVlUmVnaW9uIHx8IHZhbHVlSUQgPT0g
Q1NTVmFsdWVBdm9pZFJlZ2lvbgotI2VuZGlmCi0gICAgICAgIDsKKyAgICAgICAgcmV0dXJuIHZh
bHVlSUQgPT0gQ1NTVmFsdWVBdXRvIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVBdm9pZCB8fCB2YWx1
ZUlEID09IENTU1ZhbHVlQXZvaWRQYWdlIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVQYWdlIHx8IHZh
bHVlSUQgPT0gQ1NTVmFsdWVMZWZ0IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVSaWdodCB8fCB2YWx1
ZUlEID09IENTU1ZhbHVlUmVjdG8gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVZlcnNvIHx8IHZhbHVl
SUQgPT0gQ1NTVmFsdWVBdm9pZENvbHVtbiB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQ29sdW1uOwog
ICAgIGNhc2UgQ1NTUHJvcGVydHlCcmVha0luc2lkZToKLSAgICAgICAgcmV0dXJuIHZhbHVlSUQg
PT0gQ1NTVmFsdWVBdXRvIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVBdm9pZCB8fCB2YWx1ZUlEID09
IENTU1ZhbHVlQXZvaWRQYWdlIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVBdm9pZENvbHVtbgotI2lm
IEVOQUJMRShDU1NfUkVHSU9OUykKLSAgICAgICAgICAgIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVB
dm9pZFJlZ2lvbgotI2VuZGlmCi0gICAgICAgIDsKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0g
Q1NTVmFsdWVBdXRvIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVBdm9pZCB8fCB2YWx1ZUlEID09IENT
U1ZhbHVlQXZvaWRQYWdlIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVBdm9pZENvbHVtbjsKICAgICBj
YXNlIENTU1Byb3BlcnR5UG9pbnRlckV2ZW50czoKICAgICAgICAgLy8gbm9uZSB8IHZpc2libGVQ
YWludGVkIHwgdmlzaWJsZUZpbGwgfCB2aXNpYmxlU3Ryb2tlIHwgdmlzaWJsZSB8CiAgICAgICAg
IC8vIHBhaW50ZWQgfCBmaWxsIHwgc3Ryb2tlIHwgYXV0byB8IGFsbCB8IGJvdW5kaW5nLWJveApA
QCAtNzgzLDEwICs3NzUsNiBAQCBib29sIENTU1BhcnNlckZhc3RQYXRoczo6aXNWYWxpZEtleXdv
cmRQCiAgICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlTm9ybWFsIHx8IHZhbHVlSUQg
PT0gQ1NTVmFsdWVCcmVha0FsbCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlS2VlcEFsbCB8fCB2YWx1
ZUlEID09IENTU1ZhbHVlQnJlYWtXb3JkOwogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3Jk
ZXJGaXQ6CiAgICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlQm9yZGVyIHx8IHZhbHVl
SUQgPT0gQ1NTVmFsdWVMaW5lczsKLSNpZiBFTkFCTEUoQ1NTX1JFR0lPTlMpCi0gICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdFJlZ2lvbkZyYWdtZW50OgotICAgICAgICByZXR1cm4gdmFsdWVJRCA9
PSBDU1NWYWx1ZUF1dG8gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUJyZWFrOwotI2VuZGlmCiAjaWYg
RU5BQkxFKFRPVUNIX0VWRU5UUykKICAgICBjYXNlIENTU1Byb3BlcnR5VG91Y2hBY3Rpb246IC8v
IGF1dG8gfCBtYW5pcHVsYXRpb24KICAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVB
dXRvIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVNYW5pcHVsYXRpb247CkBAIC05NzYsOSArOTY0LDYg
QEAgYm9vbCBDU1NQYXJzZXJGYXN0UGF0aHM6OmlzS2V5d29yZFByb3BlcgogI2lmIEVOQUJMRShB
Q0NFTEVSQVRFRF9PVkVSRkxPV19TQ1JPTExJTkcpCiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dE92ZXJmbG93U2Nyb2xsaW5nOgogI2VuZGlmCi0jaWYgRU5BQkxFKENTU19SRUdJT05TKQotICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRSZWdpb25GcmFnbWVudDoKLSNlbmRpZgogI2lmIEVOQUJM
RShDU1MzX1RFWFQpCiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRBbGlnbkxhc3Q6CiAg
ICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRKdXN0aWZ5OgpJbmRleDogU291cmNlL1dlYkNv
cmUvY3NzL3BhcnNlci9DU1NQYXJzZXJJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckltcGwuY3BwCShyZXZpc2lvbiAyMjIyNTcpCisrKyBT
b3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckltcGwuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00NTIsMTAgKzQ1Miw2IEBAIFJlZlB0cjxTdHlsZVJ1bGVCYXNlPiBDU1NQYXJzZXJJbXBs
Ojpjb24KICAgICAgICAgcmV0dXJuIGNvbnN1bWVLZXlmcmFtZXNSdWxlKGZhbHNlLCBwcmVsdWRl
LCBibG9jayk7CiAgICAgY2FzZSBDU1NBdFJ1bGVQYWdlOgogICAgICAgICByZXR1cm4gY29uc3Vt
ZVBhZ2VSdWxlKHByZWx1ZGUsIGJsb2NrKTsKLSNpZiBFTkFCTEUoQ1NTX1JFR0lPTlMpCi0gICAg
Y2FzZSBDU1NBdFJ1bGVXZWJraXRSZWdpb246Ci0gICAgICAgIHJldHVybiBjb25zdW1lUmVnaW9u
UnVsZShwcmVsdWRlLCBibG9jayk7Ci0jZW5kaWYKICAgICBkZWZhdWx0OgogICAgICAgICByZXR1
cm4gbnVsbHB0cjsgLy8gUGFyc2UgZXJyb3IsIHVucmVjb2duaXNlZCBhdC1ydWxlIHdpdGggYmxv
Y2sKICAgICB9CkBAIC02NzcsMzIgKzY3Myw2IEBAIFJlZlB0cjxTdHlsZVJ1bGVQYWdlPiBDU1NQ
YXJzZXJJbXBsOjpjb24KICAgICByZXR1cm4gcGFnZTsKIH0KIAotI2lmIEVOQUJMRShDU1NfUkVH
SU9OUykKLVJlZlB0cjxTdHlsZVJ1bGVSZWdpb24+IENTU1BhcnNlckltcGw6OmNvbnN1bWVSZWdp
b25SdWxlKENTU1BhcnNlclRva2VuUmFuZ2UgcHJlbHVkZSwgQ1NTUGFyc2VyVG9rZW5SYW5nZSBi
bG9jaykKLXsKLSAgICBDU1NTZWxlY3Rvckxpc3Qgc2VsZWN0b3JMaXN0ID0gQ1NTU2VsZWN0b3JQ
YXJzZXI6OnBhcnNlU2VsZWN0b3IocHJlbHVkZSwgbV9jb250ZXh0LCBtX3N0eWxlU2hlZXQuZ2V0
KCkpOwotICAgIGlmICghc2VsZWN0b3JMaXN0LmlzVmFsaWQoKSkKLSAgICAgICAgcmV0dXJuIG51
bGxwdHI7IC8vIFBhcnNlIGVycm9yLCBpbnZhbGlkIHNlbGVjdG9yIGxpc3QKLQotICAgIGlmICht
X29ic2VydmVyV3JhcHBlcikgewotICAgICAgICBtX29ic2VydmVyV3JhcHBlci0+b2JzZXJ2ZXIo
KS5zdGFydFJ1bGVIZWFkZXIoU3R5bGVSdWxlOjpSZWdpb24sIG1fb2JzZXJ2ZXJXcmFwcGVyLT5z
dGFydE9mZnNldChwcmVsdWRlKSk7Ci0gICAgICAgIG1fb2JzZXJ2ZXJXcmFwcGVyLT5vYnNlcnZl
cigpLmVuZFJ1bGVIZWFkZXIobV9vYnNlcnZlcldyYXBwZXItPmVuZE9mZnNldChwcmVsdWRlKSk7
Ci0gICAgICAgIG1fb2JzZXJ2ZXJXcmFwcGVyLT5vYnNlcnZlcigpLnN0YXJ0UnVsZUJvZHkobV9v
YnNlcnZlcldyYXBwZXItPnByZXZpb3VzVG9rZW5TdGFydE9mZnNldChibG9jaykpOwotICAgIH0K
LSAgICAKLSAgICBWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZUJhc2U+PiBydWxlczsKLSAgICBjb25z
dW1lUnVsZUxpc3QoYmxvY2ssIFJlZ3VsYXJSdWxlTGlzdCwgWyZydWxlc10oUmVmUHRyPFN0eWxl
UnVsZUJhc2U+IHJ1bGUpIHsKLSAgICAgICAgcnVsZXMuYXBwZW5kKHJ1bGUpOwotICAgIH0pOwot
ICAgIAotICAgIGlmIChtX29ic2VydmVyV3JhcHBlcikKLSAgICAgICAgbV9vYnNlcnZlcldyYXBw
ZXItPm9ic2VydmVyKCkuZW5kUnVsZUJvZHkobV9vYnNlcnZlcldyYXBwZXItPmVuZE9mZnNldChi
bG9jaykpOwotICAgIAotICAgIHJldHVybiBTdHlsZVJ1bGVSZWdpb246OmNyZWF0ZShzZWxlY3Rv
ckxpc3QsIHJ1bGVzKTsKLQotfQotI2VuZGlmCi0KIC8vIEZJWE1FLU5FV1BBUlNFUjogU3VwcG9y
dCAiYXBwbHkiCiAvKnZvaWQgQ1NTUGFyc2VySW1wbDo6Y29uc3VtZUFwcGx5UnVsZShDU1NQYXJz
ZXJUb2tlblJhbmdlIHByZWx1ZGUpCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2Vy
L0NTU1BhcnNlckltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2Vy
L0NTU1BhcnNlckltcGwuaAkocmV2aXNpb24gMjIyMjU3KQorKysgU291cmNlL1dlYkNvcmUvY3Nz
L3BhcnNlci9DU1NQYXJzZXJJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzMiwxMCArMTMyLDYg
QEAgcHJpdmF0ZToKICAgICBSZWZQdHI8U3R5bGVSdWxlRm9udEZhY2U+IGNvbnN1bWVGb250RmFj
ZVJ1bGUoQ1NTUGFyc2VyVG9rZW5SYW5nZSBwcmVsdWRlLCBDU1NQYXJzZXJUb2tlblJhbmdlIGJs
b2NrKTsKICAgICBSZWZQdHI8U3R5bGVSdWxlS2V5ZnJhbWVzPiBjb25zdW1lS2V5ZnJhbWVzUnVs
ZShib29sIHdlYmtpdFByZWZpeGVkLCBDU1NQYXJzZXJUb2tlblJhbmdlIHByZWx1ZGUsIENTU1Bh
cnNlclRva2VuUmFuZ2UgYmxvY2spOwogICAgIFJlZlB0cjxTdHlsZVJ1bGVQYWdlPiBjb25zdW1l
UGFnZVJ1bGUoQ1NTUGFyc2VyVG9rZW5SYW5nZSBwcmVsdWRlLCBDU1NQYXJzZXJUb2tlblJhbmdl
IGJsb2NrKTsKLSNpZiBFTkFCTEUoQ1NTX1JFR0lPTlMpCi0gICAgUmVmUHRyPFN0eWxlUnVsZVJl
Z2lvbj4gY29uc3VtZVJlZ2lvblJ1bGUoQ1NTUGFyc2VyVG9rZW5SYW5nZSBwcmVsdWRlLCBDU1NQ
YXJzZXJUb2tlblJhbmdlIGJsb2NrKTsKLSNlbmRpZgotICAgIC8vIFVwZGF0ZXMgbV9wYXJzZWRQ
cm9wZXJ0aWVzCiAgICAgCiAgICAgLy8gRklYTUUtTkVXUEFSU0VSOiBTdXBwb3J0ICJhcHBseSIK
ICAgICAvLyB2b2lkIGNvbnN1bWVBcHBseVJ1bGUoQ1NTUGFyc2VyVG9rZW5SYW5nZSBwcmVsdWRl
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJz
ZXIuY3BwCShyZXZpc2lvbiAyMjIyNTcpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NT
U1Byb3BlcnR5UGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjkwLDExICsyOTAsNiBAQCBz
dGF0aWMgYm9vbCBpc0xlZ2FjeUJyZWFrUHJvcGVydHkoQ1NTUHJvCiAgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdENvbHVtbkJyZWFrQWZ0ZXI6CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENv
bHVtbkJyZWFrQmVmb3JlOgogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5CcmVha0lu
c2lkZToKLSNpZiBFTkFCTEUoQ1NTX1JFR0lPTlMpCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dFJlZ2lvbkJyZWFrQWZ0ZXI6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFJlZ2lvbkJyZWFr
QmVmb3JlOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRSZWdpb25CcmVha0luc2lkZToKLSNl
bmRpZgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsK
QEAgLTM0OTgsMTggKzM0OTMsNiBAQCBzdGF0aWMgUmVmUHRyPENTU1ZhbHVlPiBjb25zdW1lR3Jp
ZFRlbXBsCiAgICAgcmV0dXJuIENTU0dyaWRUZW1wbGF0ZUFyZWFzVmFsdWU6OmNyZWF0ZShncmlk
QXJlYU1hcCwgcm93Q291bnQsIGNvbHVtbkNvdW50KTsKIH0KIAotI2lmIEVOQUJMRShDU1NfUkVH
SU9OUykKLXN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVGbG93UHJvcGVydHkoQ1NTUGFy
c2VyVG9rZW5SYW5nZSYgcmFuZ2UpCi17Ci0gICAgUmVmUHRyPENTU1ZhbHVlPiByZXN1bHQ7Ci0g
ICAgaWYgKHJhbmdlLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlTm9uZSkKLSAgICAgICAgcmVzdWx0
ID0gY29uc3VtZUlkZW50KHJhbmdlKTsKLSAgICBlbHNlCi0gICAgICAgIHJlc3VsdCA9IGNvbnN1
bWVDdXN0b21JZGVudChyYW5nZSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLSNlbmRpZgotCiBz
dGF0aWMgUmVmUHRyPENTU1ZhbHVlPiBjb25zdW1lTGluZUJveENvbnRhaW4oQ1NTUGFyc2VyVG9r
ZW5SYW5nZSYgcmFuZ2UpCiB7CiAgICAgaWYgKHJhbmdlLnBlZWsoKS5pZCgpID09IENTU1ZhbHVl
Tm9uZSkKQEAgLTQyNTMsMTEgKzQyMzYsNiBAQCBSZWZQdHI8Q1NTVmFsdWU+IENTU1Byb3BlcnR5
UGFyc2VyOjpwYXJzCiAgICAgICAgIGlmICghbV9jb250ZXh0LmNzc0dyaWRMYXlvdXRFbmFibGVk
KQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIHJldHVybiBjb25zdW1lR3Jp
ZEF1dG9GbG93KG1fcmFuZ2UpOwotI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKLSAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0Rmxvd0ludG86Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEZsb3dG
cm9tOgotICAgICAgICByZXR1cm4gY29uc3VtZUZsb3dQcm9wZXJ0eShtX3JhbmdlKTsKLSNlbmRp
ZgogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRMaW5lR3JpZDoKICAgICAgICAgcmV0dXJuIGNv
bnN1bWVMaW5lR3JpZChtX3JhbmdlKTsKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0SW5pdGlh
bExldHRlcjoKQEAgLTUwMDEsMTkgKzQ5NzksNiBAQCBzdGF0aWMgaW5saW5lIENTU1ZhbHVlSUQg
bWFwRnJvbUNvbHVtbkJyCiAgICAgcmV0dXJuIENTU1ZhbHVlSW52YWxpZDsKIH0KIAotI2lmIEVO
QUJMRShDU1NfUkVHSU9OUykKLXN0YXRpYyBpbmxpbmUgQ1NTVmFsdWVJRCBtYXBGcm9tUmVnaW9u
QnJlYWtCZXR3ZWVuKENTU1ZhbHVlSUQgdmFsdWUpCi17Ci0gICAgaWYgKHZhbHVlID09IENTU1Zh
bHVlQWx3YXlzKQotICAgICAgICByZXR1cm4gQ1NTVmFsdWVSZWdpb247Ci0gICAgaWYgKHZhbHVl
ID09IENTU1ZhbHVlQXV0bykKLSAgICAgICAgcmV0dXJuIHZhbHVlOwotICAgIGlmICh2YWx1ZSA9
PSBDU1NWYWx1ZUF2b2lkKQotICAgICAgICByZXR1cm4gQ1NTVmFsdWVBdm9pZFJlZ2lvbjsKLSAg
ICByZXR1cm4gQ1NTVmFsdWVJbnZhbGlkOwotfQotI2VuZGlmCi0KIHN0YXRpYyBpbmxpbmUgQ1NT
VmFsdWVJRCBtYXBGcm9tQ29sdW1uUmVnaW9uT3JQYWdlQnJlYWtJbnNpZGUoQ1NTVmFsdWVJRCB2
YWx1ZSkKIHsKICAgICBpZiAodmFsdWUgPT0gQ1NTVmFsdWVBdXRvIHx8IHZhbHVlID09IENTU1Zh
bHVlQXZvaWQpCkBAIC01MDI3LDE1ICs0OTkyLDcgQEAgc3RhdGljIGlubGluZSBDU1NQcm9wZXJ0
eUlEIG1hcEZyb21MZWdhYwogICAgICAgICByZXR1cm4gQ1NTUHJvcGVydHlCcmVha0FmdGVyOwog
ICAgIGlmIChwcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eVBhZ2VCcmVha0JlZm9yZSB8fCBwcm9wZXJ0
eSA9PSBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbkJyZWFrQmVmb3JlKQogICAgICAgICByZXR1cm4g
Q1NTUHJvcGVydHlCcmVha0JlZm9yZTsKLSNpZiBFTkFCTEUoQ1NTX1JFR0lPTlMpCi0gICAgaWYg
KHByb3BlcnR5ID09IENTU1Byb3BlcnR5V2Via2l0UmVnaW9uQnJlYWtBZnRlcikKLSAgICAgICAg
cmV0dXJuIENTU1Byb3BlcnR5QnJlYWtBZnRlcjsKLSAgICBpZiAocHJvcGVydHkgPT0gQ1NTUHJv
cGVydHlXZWJraXRSZWdpb25CcmVha0JlZm9yZSkKLSAgICAgICAgcmV0dXJuIENTU1Byb3BlcnR5
QnJlYWtCZWZvcmU7Ci0gICAgQVNTRVJUKHByb3BlcnR5ID09IENTU1Byb3BlcnR5UGFnZUJyZWFr
SW5zaWRlIHx8IHByb3BlcnR5ID09IENTU1Byb3BlcnR5V2Via2l0Q29sdW1uQnJlYWtJbnNpZGUg
fHwgcHJvcGVydHkgPT0gQ1NTUHJvcGVydHlXZWJraXRSZWdpb25CcmVha0luc2lkZSk7Ci0jZWxz
ZQogICAgIEFTU0VSVChwcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eVBhZ2VCcmVha0luc2lkZSB8fCBw
cm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbkJyZWFrSW5zaWRlKTsKLSNlbmRpZgog
ICAgIHJldHVybiBDU1NQcm9wZXJ0eUJyZWFrSW5zaWRlOwogfQogCkBAIC01MDU5LDEzICs1MDE2
LDYgQEAgYm9vbCBDU1NQcm9wZXJ0eVBhcnNlcjo6Y29uc3VtZUxlZ2FjeUJyZQogICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRDb2x1bW5CcmVha0JlZm9yZToKICAgICAgICAgdmFsdWUgPSBtYXBG
cm9tQ29sdW1uQnJlYWtCZXR3ZWVuKHZhbHVlKTsKICAgICAgICAgYnJlYWs7Ci0jaWYgRU5BQkxF
KENTU19SRUdJT05TKQotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRSZWdpb25CcmVha0FmdGVy
OgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRSZWdpb25CcmVha0JlZm9yZToKLSAgICAgICAg
dmFsdWUgPSBtYXBGcm9tUmVnaW9uQnJlYWtCZXR3ZWVuKHZhbHVlKTsKLSAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFJlZ2lvbkJyZWFrSW5zaWRlOgotI2VuZGlmCiAg
ICAgY2FzZSBDU1NQcm9wZXJ0eVBhZ2VCcmVha0luc2lkZToKICAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0Q29sdW1uQnJlYWtJbnNpZGU6CiAgICAgICAgIHZhbHVlID0gbWFwRnJvbUNvbHVtblJl
Z2lvbk9yUGFnZUJyZWFrSW5zaWRlKHZhbHVlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9D
b250YWluZXJOb2RlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vQ29udGFp
bmVyTm9kZS5jcHAJKHJldmlzaW9uIDIyMjI1NykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Db250
YWluZXJOb2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA4LDkgKzEwOCw3IEBAIHN0YXRpYyBp
bmxpbmUgdm9pZCBkZXN0cm95UmVuZGVyVHJlZUlmTmUKIHsKICAgICBib29sIGlzRWxlbWVudCA9
IGlzPEVsZW1lbnQ+KGNoaWxkKTsKICAgICBhdXRvIGhhc0Rpc3BsYXlDb250ZW50cyA9IGlzRWxl
bWVudCAmJiBkb3duY2FzdDxFbGVtZW50PihjaGlsZCkuaGFzRGlzcGxheUNvbnRlbnRzKCk7Ci0g
ICAgYXV0byBpc05hbWVkRmxvd0VsZW1lbnQgPSBpc0VsZW1lbnQgJiYgZG93bmNhc3Q8RWxlbWVu
dD4oY2hpbGQpLmlzTmFtZWRGbG93Q29udGVudEVsZW1lbnQoKTsKLSAgICAvLyBGSVhNRTogR2V0
IHJpZCBvZiB0aGUgbmFtZWQgZmxvdyB0ZXN0LgotICAgIGlmICghY2hpbGQucmVuZGVyZXIoKSAm
JiAhaGFzRGlzcGxheUNvbnRlbnRzICYmICFpc05hbWVkRmxvd0VsZW1lbnQpCisgICAgaWYgKCFj
aGlsZC5yZW5kZXJlcigpICYmICFoYXNEaXNwbGF5Q29udGVudHMpCiAgICAgICAgIHJldHVybjsK
ICAgICBpZiAoaXNFbGVtZW50KQogICAgICAgICBSZW5kZXJUcmVlVXBkYXRlcjo6dGVhckRvd25S
ZW5kZXJlcnMoZG93bmNhc3Q8RWxlbWVudD4oY2hpbGQpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2RvbS9ET01OYW1lZEZsb3dDb2xsZWN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9kb20vRE9NTmFtZWRGbG93Q29sbGVjdGlvbi5jcHAJKHJldmlzaW9uIDIyMjI1NykKKysr
IFNvdXJjZS9XZWJDb3JlL2RvbS9ET01OYW1lZEZsb3dDb2xsZWN0aW9uLmNwcAkobm9uZXhpc3Rl
bnQpCkBAIC0xLDkzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgQWRvYmUgU3lz
dGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUKLSAqICAgIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCi0gKiAgICBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQotICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcKLSAqICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscwotICogICAgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVIgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhP
TERFUiBCRQotICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLAotICogT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUgot
ICogVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GCi0gKiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKLSAqIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRl
ICJjb25maWcuaCIKLSNpbmNsdWRlICJET01OYW1lZEZsb3dDb2xsZWN0aW9uLmgiCi0KLSNpbmNs
dWRlICJXZWJLaXROYW1lZEZsb3cuaCIKLSNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmdI
YXNoLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotaW5saW5lIERPTU5hbWVkRmxvd0NvbGxl
Y3Rpb246OkRPTU5hbWVkRmxvd0NvbGxlY3Rpb24oVmVjdG9yPFJlZjxXZWJLaXROYW1lZEZsb3c+
PiYmIGZsb3dzKQotICAgIDogbV9mbG93cyhXVEZNb3ZlKGZsb3dzKSkKLXsKLX0KLQotUmVmPERP
TU5hbWVkRmxvd0NvbGxlY3Rpb24+IERPTU5hbWVkRmxvd0NvbGxlY3Rpb246OmNyZWF0ZShWZWN0
b3I8UmVmPFdlYktpdE5hbWVkRmxvdz4+JiYgZmxvd3MpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgRE9NTmFtZWRGbG93Q29sbGVjdGlvbihXVEZNb3ZlKGZsb3dzKSkpOwotfQotCi1ET01O
YW1lZEZsb3dDb2xsZWN0aW9uOjp+RE9NTmFtZWRGbG93Q29sbGVjdGlvbigpCi17Ci19Ci0KLVdl
YktpdE5hbWVkRmxvdyogRE9NTmFtZWRGbG93Q29sbGVjdGlvbjo6aXRlbSh1bnNpZ25lZCBpbmRl
eCkgY29uc3QKLXsKLSAgICBpZiAoaW5kZXggPj0gbV9mbG93cy5zaXplKCkpCi0gICAgICAgIHJl
dHVybiBudWxscHRyOwotICAgIHJldHVybiBjb25zdF9jYXN0PFdlYktpdE5hbWVkRmxvdyo+KG1f
Zmxvd3NbaW5kZXhdLnB0cigpKTsKLX0KLQotc3RydWN0IERPTU5hbWVkRmxvd0NvbGxlY3Rpb246
Okhhc2hGdW5jdGlvbnMgewotICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFdlYktpdE5h
bWVkRmxvdyoga2V5KSB7IHJldHVybiBBdG9taWNTdHJpbmdIYXNoOjpoYXNoKGtleS0+bmFtZSgp
KTsgfQotICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFdlYktpdE5hbWVkRmxvdyogYSwgY29u
c3QgV2ViS2l0TmFtZWRGbG93KiBiKSB7IHJldHVybiBhLT5uYW1lKCkgPT0gYi0+bmFtZSgpOyB9
Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSBm
YWxzZTsKLQotICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IEF0b21pY1N0cmluZyYga2V5
KSB7IHJldHVybiBBdG9taWNTdHJpbmdIYXNoOjpoYXNoKGtleSk7IH0KLSAgICBzdGF0aWMgYm9v
bCBlcXVhbChjb25zdCBXZWJLaXROYW1lZEZsb3cqIGEsIGNvbnN0IEF0b21pY1N0cmluZyYgYikg
eyByZXR1cm4gYS0+bmFtZSgpID09IGI7IH0KLX07Ci0KLVdlYktpdE5hbWVkRmxvdyogRE9NTmFt
ZWRGbG93Q29sbGVjdGlvbjo6bmFtZWRJdGVtKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkgY29u
c3QKLXsKLSAgICBpZiAobV9mbG93c0J5TmFtZS5pc0VtcHR5KCkpIHsKLSAgICAgICAgLy8gTm8g
bmVlZCB0byBvcHRpbWl6ZSB0aGUgY2FzZSB3aGVyZSBtX2Zsb3dzIGlzIGVtcHR5OyB3aWxsIGRv
IG5vdGhpbmcgdmVyeSBxdWlja2x5LgotICAgICAgICBmb3IgKGF1dG8mIGZsb3cgOiBtX2Zsb3dz
KQotICAgICAgICAgICAgbV9mbG93c0J5TmFtZS5hZGQoY29uc3RfY2FzdDxXZWJLaXROYW1lZEZs
b3cqPihmbG93LnB0cigpKSk7Ci0gICAgfQotICAgIGF1dG8gaXQgPSBtX2Zsb3dzQnlOYW1lLmZp
bmQ8SGFzaEZ1bmN0aW9ucz4obmFtZSk7Ci0gICAgaWYgKGl0ID09IG1fZmxvd3NCeU5hbWUuZW5k
KCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiAqaXQ7Ci19Ci0KLWNvbnN0
IFZlY3RvcjxBdG9taWNTdHJpbmc+JiBET01OYW1lZEZsb3dDb2xsZWN0aW9uOjpzdXBwb3J0ZWRQ
cm9wZXJ0eU5hbWVzKCkKLXsKLSAgICBpZiAobV9mbG93TmFtZXMuaXNFbXB0eSgpKSB7Ci0gICAg
ICAgIC8vIE5vIG5lZWQgdG8gb3B0aW1pemUgdGhlIGNhc2Ugd2hlcmUgbV9mbG93cyBpcyBlbXB0
eTsgd2lsbCBkbyBub3RoaW5nIHJlbGF0aXZlbHkgcXVpY2tseS4KLSAgICAgICAgbV9mbG93TmFt
ZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShtX2Zsb3dzLnNpemUoKSk7Ci0gICAgICAgIGZvciAo
YXV0byYgZmxvdyA6IG1fZmxvd3MpCi0gICAgICAgICAgICBtX2Zsb3dOYW1lcy51bmNoZWNrZWRB
cHBlbmQoZmxvdy0+bmFtZSgpKTsKLSAgICB9Ci0gICAgcmV0dXJuIG1fZmxvd05hbWVzOwotfQot
Ci19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRE9NTmFt
ZWRGbG93Q29sbGVjdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9ET01O
YW1lZEZsb3dDb2xsZWN0aW9uLmgJKHJldmlzaW9uIDIyMjI1NykKKysrIFNvdXJjZS9XZWJDb3Jl
L2RvbS9ET01OYW1lZEZsb3dDb2xsZWN0aW9uLmgJKG5vbmV4aXN0ZW50KQpAQCAtMSw2NyArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVk
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqCi0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlCi0gKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZwotICogICAgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqICAg
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nCi0gKiAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMKLSAqICAgIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSICJBUyBJUyIg
QU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgQkUKLSAqIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwKLSAqIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IKLSAqIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRgotICog
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GCi0gKiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUg
PHd0Zi9Gb3J3YXJkLmg+Ci0jaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KLSNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1jbGFzcyBXZWJLaXROYW1lZEZsb3c7Ci0KLWNsYXNzIERPTU5hbWVkRmxvd0NvbGxl
Y3Rpb24gOiBwdWJsaWMgUmVmQ291bnRlZDxET01OYW1lZEZsb3dDb2xsZWN0aW9uPiB7Ci1wdWJs
aWM6Ci0gICAgc3RhdGljIFJlZjxET01OYW1lZEZsb3dDb2xsZWN0aW9uPiBjcmVhdGUoVmVjdG9y
PFJlZjxXZWJLaXROYW1lZEZsb3c+PiYmKTsKLSAgICB+RE9NTmFtZWRGbG93Q29sbGVjdGlvbigp
OwotCi0gICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3Q7Ci0gICAgV2ViS2l0TmFtZWRGbG93KiBp
dGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdDsKLSAgICBXZWJLaXROYW1lZEZsb3cqIG5hbWVkSXRl
bShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpIGNvbnN0OwotICAgIGNvbnN0IFZlY3RvcjxBdG9t
aWNTdHJpbmc+JiBzdXBwb3J0ZWRQcm9wZXJ0eU5hbWVzKCk7Ci0KLXByaXZhdGU6Ci0gICAgc3Ry
dWN0IEhhc2hGdW5jdGlvbnM7Ci0KLSAgICBleHBsaWNpdCBET01OYW1lZEZsb3dDb2xsZWN0aW9u
KFZlY3RvcjxSZWY8V2ViS2l0TmFtZWRGbG93Pj4mJik7Ci0KLSAgICBjb25zdCBWZWN0b3I8UmVm
PFdlYktpdE5hbWVkRmxvdz4+IG1fZmxvd3M7Ci0gICAgbXV0YWJsZSBIYXNoU2V0PFdlYktpdE5h
bWVkRmxvdyosIEhhc2hGdW5jdGlvbnM+IG1fZmxvd3NCeU5hbWU7Ci0gICAgbXV0YWJsZSBWZWN0
b3I8QXRvbWljU3RyaW5nPiBtX2Zsb3dOYW1lczsKLX07Ci0KLWlubGluZSB1bnNpZ25lZCBET01O
YW1lZEZsb3dDb2xsZWN0aW9uOjpsZW5ndGgoKSBjb25zdAotewotICAgIHJldHVybiBtX2Zsb3dz
LnNpemUoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNv
cmUvZG9tL0RPTU5hbWVkRmxvd0NvbGxlY3Rpb24uaWRsCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2RvbS9ET01OYW1lZEZsb3dDb2xsZWN0aW9uLmlkbAkocmV2aXNpb24gMjIyMjU3KQor
KysgU291cmNlL1dlYkNvcmUvZG9tL0RPTU5hbWVkRmxvd0NvbGxlY3Rpb24uaWRsCShub25leGlz
dGVudCkKQEAgLTEsNDEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBBZG9iZSBT
eXN0ZW1zIEluY29ycG9yYXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlCi0gKiAgICBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZwotICogICAgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKLSAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCi0gKiAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMKLSAqICAgIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VCBIT0xERVIgQkUKLSAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwKLSAqIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IKLSAqIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRgotICogVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCi0gKiBTVUNIIERBTUFHRS4KLSAqLwotCi1bCi0g
ICAgQ29uZGl0aW9uYWw9Q1NTX1JFR0lPTlMsCi0gICAgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJs
ZSwKLSAgICBJbnRlcmZhY2VOYW1lPVdlYktpdE5hbWVkRmxvd0NvbGxlY3Rpb24sCi0gICAgSlNH
ZW5lcmF0ZVRvSlNPYmplY3QsCi0gICAgTGVnYWN5VW5lbnVtZXJhYmxlTmFtZWRQcm9wZXJ0aWVz
LAotICAgIE5vSW50ZXJmYWNlT2JqZWN0Ci1dIGludGVyZmFjZSBET01OYW1lZEZsb3dDb2xsZWN0
aW9uIHsKLSAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBsZW5ndGg7Ci0gICAg
Z2V0dGVyIFdlYktpdE5hbWVkRmxvdz8gaXRlbSh1bnNpZ25lZCBsb25nIGluZGV4KTsKLSAgICBn
ZXR0ZXIgV2ViS2l0TmFtZWRGbG93PyBuYW1lZEl0ZW0oRE9NU3RyaW5nIG5hbWUpOwotfTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkocmV2aXNpb24gMjIyMjU3KQorKysgU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEsNyArNTEsNiBAQAog
I2luY2x1ZGUgIkN1c3RvbUVsZW1lbnRSZWdpc3RyeS5oIgogI2luY2x1ZGUgIkN1c3RvbUV2ZW50
LmgiCiAjaW5jbHVkZSAiRE9NSW1wbGVtZW50YXRpb24uaCIKLSNpbmNsdWRlICJET01OYW1lZEZs
b3dDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiRGF0ZUNv
bXBvbmVudHMuaCIKICNpbmNsdWRlICJEZWJ1Z1BhZ2VPdmVybGF5cy5oIgpAQCAtMTE4LDcgKzEx
Nyw2IEBACiAjaW5jbHVkZSAiTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cy5oIgogI2luY2x1
ZGUgIk11dGF0aW9uRXZlbnQuaCIKICNpbmNsdWRlICJOYW1lTm9kZUxpc3QuaCIKLSNpbmNsdWRl
ICJOYW1lZEZsb3dDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiTmF2aWdhdGlvbkRpc2FibGVyLmgi
CiAjaW5jbHVkZSAiTmF2aWdhdGlvblNjaGVkdWxlci5oIgogI2luY2x1ZGUgIk5lc3RpbmdMZXZl
bEluY3JlbWVudGVyLmgiCkBAIC0xMTUzLDI4ICsxMTUxLDYgQEAgYm9vbCBEb2N1bWVudDo6aXND
U1NHcmlkTGF5b3V0RW5hYmxlZCgpIAogICAgIHJldHVybiBSdW50aW1lRW5hYmxlZEZlYXR1cmVz
OjpzaGFyZWRGZWF0dXJlcygpLmlzQ1NTR3JpZExheW91dEVuYWJsZWQoKTsKIH0KIAotI2lmIEVO
QUJMRShDU1NfUkVHSU9OUykKLQotUmVmUHRyPERPTU5hbWVkRmxvd0NvbGxlY3Rpb24+IERvY3Vt
ZW50Ojp3ZWJraXRHZXROYW1lZEZsb3dzKCkKLXsKLSAgICBpZiAoIXJlbmRlclZpZXcoKSkKLSAg
ICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICB1cGRhdGVTdHlsZUlmTmVlZGVkKCk7Ci0KLSAg
ICByZXR1cm4gbmFtZWRGbG93cygpLmNyZWF0ZUNTU09NU25hcHNob3QoKTsKLX0KLQotI2VuZGlm
Ci0KLU5hbWVkRmxvd0NvbGxlY3Rpb24mIERvY3VtZW50OjpuYW1lZEZsb3dzKCkKLXsKLSAgICBp
ZiAoIW1fbmFtZWRGbG93cykKLSAgICAgICAgbV9uYW1lZEZsb3dzID0gTmFtZWRGbG93Q29sbGVj
dGlvbjo6Y3JlYXRlKHRoaXMpOwotCi0gICAgcmV0dXJuICptX25hbWVkRmxvd3M7Ci19Ci0KIEV4
Y2VwdGlvbk9yPFJlZjxFbGVtZW50Pj4gRG9jdW1lbnQ6OmNyZWF0ZUVsZW1lbnROUyhjb25zdCBB
dG9taWNTdHJpbmcmIG5hbWVzcGFjZVVSSSwgY29uc3QgU3RyaW5nJiBxdWFsaWZpZWROYW1lKQog
ewogICAgIGF1dG8gcGFyc2VSZXN1bHQgPSBwYXJzZVF1YWxpZmllZE5hbWUobmFtZXNwYWNlVVJJ
LCBxdWFsaWZpZWROYW1lKTsKQEAgLTIwMzYsMTAgKzIwMTIsOCBAQCBib29sIERvY3VtZW50Ojp1
cGRhdGVMYXlvdXRJZkRpbWVuc2lvbnNPCiAgICAgdXBkYXRlU3R5bGVJZk5lZWRlZCgpOwogCiAg
ICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IGVsZW1lbnQucmVuZGVyZXIoKTsKLSAgICBpZiAo
IXJlbmRlcmVyIHx8IHJlbmRlcmVyLT5uZWVkc0xheW91dCgpIHx8IGVsZW1lbnQucmVuZGVyTmFt
ZWRGbG93RnJhZ21lbnQoKSkgeworICAgIGlmICghcmVuZGVyZXIgfHwgcmVuZGVyZXItPm5lZWRz
TGF5b3V0KCkpIHsKICAgICAgICAgLy8gSWYgd2UgZG9uJ3QgaGF2ZSBhIHJlbmRlcmVyIG9yIGlm
IHRoZSByZW5kZXJlciBuZWVkcyBsYXlvdXQgZm9yIGFueSByZWFzb24sIGdpdmUgdXAuCi0gICAg
ICAgIC8vIE5hbWVkIGZsb3dzIGNhbiBoYXZlIGF1dG8gaGVpZ2h0LCBzbyBkb24ndCB0cnkgdG8g
ZW5mb3JjZSB0aGUgb3B0aW1pemF0aW9uIGluIHRoaXMgY2FzZS4KLSAgICAgICAgLy8gVGhlIDIt
cGFzcyBuYXR1cmUgb2YgYXV0byBoZWlnaHQgbmFtZWQgZmxvdyBsYXlvdXQgbWVhbnMgdGhlIHJl
Z2lvbiBtYXkgbm90IGJlIGRpcnR5IHlldC4KICAgICAgICAgcmVxdWlyZUZ1bGxMYXlvdXQgPSB0
cnVlOwogICAgIH0KIApAQCAtMjA4NSw3ICsyMDU5LDcgQEAgYm9vbCBEb2N1bWVudDo6dXBkYXRl
TGF5b3V0SWZEaW1lbnNpb25zTwogICAgICAgICAgICAgaWYgKCFjdXJyZW50Qm94LT5pc1JlbmRl
ckJsb2NrRmxvdygpIHx8IGN1cnJlbnRCb3gtPmZsb3dUaHJlYWRDb250YWluaW5nQmxvY2soKSB8
fCBjdXJyZW50Qm94LT5pc1dyaXRpbmdNb2RlUm9vdCgpKSB7CiAgICAgICAgICAgICAgICAgLy8g
RklYTUU6IEZvciBub3cgcmVxdWlyZSBvbmx5IGJsb2NrIGZsb3dzIGFsbCB0aGUgd2F5IGJhY2sg
dG8gdGhlIHJvb3QuIFRoaXMgbGltaXRzIHRoZSBvcHRpbWl6YXRpb24KICAgICAgICAgICAgICAg
ICAvLyBmb3Igbm93LCBhbmQgd2UnbGwgZXhwYW5kIGl0IGluIGZ1dHVyZSBwYXRjaGVzIHRvIGFw
cGx5IHRvIG1vcmUgYW5kIG1vcmUgc2NlbmFyaW9zLgotICAgICAgICAgICAgICAgIC8vIERpc2Fs
bG93IHJlZ2lvbnMvY29sdW1ucyBmcm9tIGhhdmluZyB0aGUgb3B0aW1pemF0aW9uLgorICAgICAg
ICAgICAgICAgIC8vIERpc2FsbG93IGNvbHVtbnMgZnJvbSBoYXZpbmcgdGhlIG9wdGltaXphdGlv
bi4KICAgICAgICAgICAgICAgICAvLyBHaXZlIHVwIGlmIHRoZSB3cml0aW5nIG1vZGUgY2hhbmdl
cyBhdCBhbGwgaW4gdGhlIGNvbnRhaW5pbmcgYmxvY2sgY2hhaW4uCiAgICAgICAgICAgICAgICAg
cmVxdWlyZUZ1bGxMYXlvdXQgPSB0cnVlOwogICAgICAgICAgICAgICAgIGJyZWFrOwpJbmRleDog
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmgJKHJldmlzaW9uIDIyMjI1NykKKysrIFNvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC05Nyw3ICs5Nyw2IEBAIGNsYXNzIENoYXJh
Y3RlckRhdGE7CiBjbGFzcyBDb21tZW50OwogY2xhc3MgQ29uc3RhbnRQcm9wZXJ0eU1hcDsKIGNs
YXNzIERPTUltcGxlbWVudGF0aW9uOwotY2xhc3MgRE9NTmFtZWRGbG93Q29sbGVjdGlvbjsKIGNs
YXNzIERPTVNlbGVjdGlvbjsKIGNsYXNzIERPTVdpbmRvdzsKIGNsYXNzIERPTVdyYXBwZXJXb3Js
ZDsKQEAgLTE0Niw3ICsxNDUsNiBAQCBjbGFzcyBNZWRpYVBsYXliYWNrVGFyZ2V0Q2xpZW50Owog
Y2xhc3MgTWVkaWFRdWVyeUxpc3Q7CiBjbGFzcyBNZWRpYVF1ZXJ5TWF0Y2hlcjsKIGNsYXNzIE1v
dXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHM7Ci1jbGFzcyBOYW1lZEZsb3dDb2xsZWN0aW9uOwog
Y2xhc3MgTm9kZUZpbHRlcjsKIGNsYXNzIE5vZGVJdGVyYXRvcjsKIGNsYXNzIFBhZ2U7CkBAIC00
MDgsMTEgKzQwNiw2IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgQ3VzdG9tRWxlbWVudE5hbWVWYWxp
ZGF0aW9uU3RhdHVzIHZhbGlkYXRlQ3VzdG9tRWxlbWVudE5hbWUoY29uc3QgQXRvbWljU3RyaW5n
Jik7CiAKICAgICBib29sIGlzQ1NTR3JpZExheW91dEVuYWJsZWQoKSBjb25zdDsKLSNpZiBFTkFC
TEUoQ1NTX1JFR0lPTlMpCi0gICAgUmVmUHRyPERPTU5hbWVkRmxvd0NvbGxlY3Rpb24+IHdlYmtp
dEdldE5hbWVkRmxvd3MoKTsKLSNlbmRpZgotCi0gICAgTmFtZWRGbG93Q29sbGVjdGlvbiYgbmFt
ZWRGbG93cygpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPFJhbmdlPiBjYXJldFJhbmdl
RnJvbVBvaW50KGludCB4LCBpbnQgeSk7CiAgICAgUmVmUHRyPFJhbmdlPiBjYXJldFJhbmdlRnJv
bVBvaW50KGNvbnN0IExheW91dFBvaW50JiBjbGllbnRQb2ludCk7CkBAIC0xNjcyLDggKzE2NjUs
NiBAQCBwcml2YXRlOgogCiAgICAgVGltZXIgbV92aXN1YWxVcGRhdGVzU3VwcHJlc3Npb25UaW1l
cjsKIAotICAgIFJlZlB0cjxOYW1lZEZsb3dDb2xsZWN0aW9uPiBtX25hbWVkRmxvd3M7Ci0KICAg
ICB2b2lkIGNsZWFyU2hhcmVkT2JqZWN0UG9vbCgpOwogICAgIFRpbWVyIG1fc2hhcmVkT2JqZWN0
UG9vbENsZWFyVGltZXI7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmlkbAkocmV2aXNpb24g
MjIyMjU3KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmlkbAkod29ya2luZyBjb3B5
KQpAQCAtMTg5LDkgKzE4OSw2IEBAIHR5cGVkZWYgKAogICAgIC8vIEZJWE1FOiBUaGlzIGlzIG5v
dCBzdGFuZGFyZCBhbmQgaGFzIGJlZW4gZHJvcHBlZCBmcm9tIEJsaW5rIGFscmVhZHkuCiAgICAg
UmVuZGVyaW5nQ29udGV4dD8gZ2V0Q1NTQ2FudmFzQ29udGV4dChET01TdHJpbmcgY29udGV4dElk
LCBET01TdHJpbmcgbmFtZSwgbG9uZyB3aWR0aCwgbG9uZyBoZWlnaHQpOwogCi0gICAgLy8gTm9u
IHN0YW5kYXJkIChodHRwczovL2RldmVsb3Blci5hcHBsZS5jb20vcmVmZXJlbmNlL3dlYmtpdGpz
L2RvY3VtZW50LzE2MzM4NjMtd2Via2l0Z2V0bmFtZWRmbG93cykuCi0gICAgW0NvbmRpdGlvbmFs
PUNTU19SRUdJT05TXSBET01OYW1lZEZsb3dDb2xsZWN0aW9uIHdlYmtpdEdldE5hbWVkRmxvd3Mo
KTsKLQogICAgIC8vIE5vbiBzdGFuZGFyZCwgdG8gYnJpbmcgdXAgd2l0aCBzdGFuZGFyZHMgd29y
a2luZyBncm91cC4KICAgICBbRW5hYmxlZEJ5U2V0dGluZz1TdG9yYWdlQWNjZXNzQVBJXSByZWFk
b25seSBhdHRyaWJ1dGUgYm9vbGVhbiBoYXNTdG9yYWdlQWNjZXNzOwogICAgIFtFbmFibGVkQnlT
ZXR0aW5nPVN0b3JhZ2VBY2Nlc3NBUEldIFByb21pc2U8Ym9vbGVhbj4gcmVxdWVzdFN0b3JhZ2VB
Y2Nlc3MoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAJKHJldmlzaW9uIDIyMjI1NykKKysr
IFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgsNyAr
NDgsNiBAQAogI2luY2x1ZGUgIkV2ZW50RGlzcGF0Y2hlci5oIgogI2luY2x1ZGUgIkV2ZW50SGFu
ZGxlci5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKLSNpbmNsdWRlICJGbG93VGhyZWFkQ29u
dHJvbGxlci5oIgogI2luY2x1ZGUgIkZvY3VzQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkZvY3Vz
RXZlbnQuaCIKICNpbmNsdWRlICJGcmFtZVNlbGVjdGlvbi5oIgpAQCAtNzksMTAgKzc4LDggQEAK
ICNpbmNsdWRlICJOb2RlUmVuZGVyU3R5bGUuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVdoZWVsRXZl
bnQuaCIKICNpbmNsdWRlICJQb2ludGVyTG9ja0NvbnRyb2xsZXIuaCIKLSNpbmNsdWRlICJSZW5k
ZXJGbG93VGhyZWFkLmgiCiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXIuaCIKICNpbmNsdWRlICJSZW5k
ZXJMaXN0Qm94LmgiCi0jaW5jbHVkZSAiUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQuaCIKICNpbmNs
dWRlICJSZW5kZXJSZWdpb24uaCIKICNpbmNsdWRlICJSZW5kZXJUaGVtZS5oIgogI2luY2x1ZGUg
IlJlbmRlclRyZWVVcGRhdGVyLmgiCkBAIC0xODIsMTUgKzE3OSw2IEBAIEVsZW1lbnQ6OkVsZW1l
bnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGEKIAogRWxlbWVudDo6fkVsZW1lbnQoKQogewotI2lm
bmRlZiBOREVCVUcKLSAgICBpZiAoZG9jdW1lbnQoKS5oYXNMaXZpbmdSZW5kZXJUcmVlKCkpIHsK
LSAgICAgICAgLy8gV2hlbiB0aGUgZG9jdW1lbnQgaXMgbm90IGRlc3Ryb3llZCwgYW4gZWxlbWVu
dCB0aGF0IHdhcyBwYXJ0IG9mIGEgbmFtZWQgZmxvdwotICAgICAgICAvLyBjb250ZW50IG5vZGVz
IHNob3VsZCBoYXZlIGJlZW4gcmVtb3ZlZCBmcm9tIHRoZSBjb250ZW50IG5vZGVzIGNvbGxlY3Rp
b24KLSAgICAgICAgLy8gYW5kIHRoZSBpc05hbWVkRmxvd0NvbnRlbnRFbGVtZW50IGZsYWcgcmVz
ZXQuCi0gICAgICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKCFpc05hbWVkRmxv
d0NvbnRlbnRFbGVtZW50KCkpOwotICAgIH0KLSNlbmRpZgotCiAgICAgQVNTRVJUKCFiZWZvcmVQ
c2V1ZG9FbGVtZW50KCkpOwogICAgIEFTU0VSVCghYWZ0ZXJQc2V1ZG9FbGVtZW50KCkpOwogCkBA
IC0xNzgzLDEyICsxNzcxLDYgQEAgdm9pZCBFbGVtZW50OjpyZW1vdmVkRnJvbShDb250YWluZXJO
b2RlJgogI2VuZGlmCiB9CiAKLXZvaWQgRWxlbWVudDo6dW5yZWdpc3Rlck5hbWVkRmxvd0NvbnRl
bnRFbGVtZW50KCkKLXsKLSAgICBpZiAoaXNOYW1lZEZsb3dDb250ZW50RWxlbWVudCgpICYmIGRv
Y3VtZW50KCkucmVuZGVyVmlldygpKQotICAgICAgICBkb2N1bWVudCgpLnJlbmRlclZpZXcoKS0+
Zmxvd1RocmVhZENvbnRyb2xsZXIoKS51bnJlZ2lzdGVyTmFtZWRGbG93Q29udGVudEVsZW1lbnQo
KnRoaXMpOwotfQotCiBTaGFkb3dSb290KiBFbGVtZW50OjpzaGFkb3dSb290KCkgY29uc3QKIHsK
ICAgICByZXR1cm4gaGFzUmFyZURhdGEoKSA/IGVsZW1lbnRSYXJlRGF0YSgpLT5zaGFkb3dSb290
KCkgOiBudWxscHRyOwpAQCAtMjExMiwxNiArMjA5NCw2IEBAIHZvaWQgRWxlbWVudDo6c2V0QXR0
cmlidXRlRXZlbnRMaXN0ZW5lcigKICAgICBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50
VHlwZSwgSlNMYXp5RXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKCp0aGlzLCBhdHRyaWJ1dGVOYW1lLCBh
dHRyaWJ1dGVWYWx1ZSksIG1haW5UaHJlYWROb3JtYWxXb3JsZCgpKTsKIH0KIAotdm9pZCBFbGVt
ZW50OjpzZXRJc05hbWVkRmxvd0NvbnRlbnRFbGVtZW50KCkKLXsKLSAgICBlbnN1cmVFbGVtZW50
UmFyZURhdGEoKS5zZXRJc05hbWVkRmxvd0NvbnRlbnRFbGVtZW50KHRydWUpOwotfQotCi12b2lk
IEVsZW1lbnQ6OmNsZWFySXNOYW1lZEZsb3dDb250ZW50RWxlbWVudCgpCi17Ci0gICAgZW5zdXJl
RWxlbWVudFJhcmVEYXRhKCkuc2V0SXNOYW1lZEZsb3dDb250ZW50RWxlbWVudChmYWxzZSk7Ci19
Ci0KIHZvaWQgRWxlbWVudDo6cmVtb3ZlQWxsRXZlbnRMaXN0ZW5lcnMoKQogewogICAgIENvbnRh
aW5lck5vZGU6OnJlbW92ZUFsbEV2ZW50TGlzdGVuZXJzKCk7CkBAIC0yODUzLDEyICsyODI1LDYg
QEAgYm9vbCBFbGVtZW50OjpyYXJlRGF0YVN0eWxlQWZmZWN0ZWRCeUZvYwogICAgIHJldHVybiBl
bGVtZW50UmFyZURhdGEoKS0+c3R5bGVBZmZlY3RlZEJ5Rm9jdXNXaXRoaW4oKTsKIH0KIAotYm9v
bCBFbGVtZW50OjpyYXJlRGF0YUlzTmFtZWRGbG93Q29udGVudEVsZW1lbnQoKSBjb25zdAotewot
ICAgIEFTU0VSVChoYXNSYXJlRGF0YSgpKTsKLSAgICByZXR1cm4gZWxlbWVudFJhcmVEYXRhKCkt
PmlzTmFtZWRGbG93Q29udGVudEVsZW1lbnQoKTsKLX0KLQogYm9vbCBFbGVtZW50OjpyYXJlRGF0
YVN0eWxlQWZmZWN0ZWRCeUFjdGl2ZSgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGhhc1JhcmVEYXRh
KCkpOwpAQCAtMjg4OSwxNiArMjg1NSw2IEBAIHVuc2lnbmVkIEVsZW1lbnQ6OnJhcmVEYXRhQ2hp
bGRJbmRleCgpIGMKICAgICByZXR1cm4gZWxlbWVudFJhcmVEYXRhKCktPmNoaWxkSW5kZXgoKTsK
IH0KIAotdm9pZCBFbGVtZW50OjpzZXRSZWdpb25PdmVyc2V0U3RhdGUoUmVnaW9uT3ZlcnNldFN0
YXRlIHN0YXRlKQotewotICAgIGVuc3VyZUVsZW1lbnRSYXJlRGF0YSgpLnNldFJlZ2lvbk92ZXJz
ZXRTdGF0ZShzdGF0ZSk7Ci19Ci0KLVJlZ2lvbk92ZXJzZXRTdGF0ZSBFbGVtZW50OjpyZWdpb25P
dmVyc2V0U3RhdGUoKSBjb25zdAotewotICAgIHJldHVybiBoYXNSYXJlRGF0YSgpID8gZWxlbWVu
dFJhcmVEYXRhKCktPnJlZ2lvbk92ZXJzZXRTdGF0ZSgpIDogUmVnaW9uVW5kZWZpbmVkOwotfQot
CiBBdG9taWNTdHJpbmcgRWxlbWVudDo6Y29tcHV0ZUluaGVyaXRlZExhbmd1YWdlKCkgY29uc3QK
IHsKICAgICBpZiAoY29uc3QgRWxlbWVudERhdGEqIGVsZW1lbnREYXRhID0gdGhpcy0+ZWxlbWVu
dERhdGEoKSkgewpAQCAtMzE4MSw3NiArMzEzNyw2IEBAIGJvb2wgRWxlbWVudDo6aXNTcGVsbENo
ZWNraW5nRW5hYmxlZCgpIGMKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotUmVuZGVyTmFtZWRGbG93
RnJhZ21lbnQqIEVsZW1lbnQ6OnJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KCkgY29uc3QKLXsKLSAg
ICBpZiAocmVuZGVyZXIoKSAmJiByZW5kZXJlcigpLT5pc1JlbmRlck5hbWVkRmxvd0ZyYWdtZW50
Q29udGFpbmVyKCkpCi0gICAgICAgIHJldHVybiBkb3duY2FzdDxSZW5kZXJCbG9ja0Zsb3c+KCpy
ZW5kZXJlcigpKS5yZW5kZXJOYW1lZEZsb3dGcmFnbWVudCgpOwotCi0gICAgcmV0dXJuIG51bGxw
dHI7Ci19Ci0KLSNpZiBFTkFCTEUoQ1NTX1JFR0lPTlMpCi0KLWJvb2wgRWxlbWVudDo6c2hvdWxk
TW92ZVRvRmxvd1RocmVhZChjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGVUb1VzZSkgY29uc3QKLXsK
LSNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCi0gICAgaWYgKGRvY3VtZW50KCkud2Via2l0SXNG
dWxsU2NyZWVuKCkgJiYgZG9jdW1lbnQoKS53ZWJraXRDdXJyZW50RnVsbFNjcmVlbkVsZW1lbnQo
KSA9PSB0aGlzKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0jZW5kaWYKLQotICAgIGlmIChpc0lu
U2hhZG93VHJlZSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoIXN0eWxlVG9V
c2UuaGFzRmxvd0ludG8oKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIHRy
dWU7Ci19Ci0KLWNvbnN0IEF0b21pY1N0cmluZyYgRWxlbWVudDo6d2Via2l0UmVnaW9uT3ZlcnNl
dCgpIGNvbnN0Ci17Ci0gICAgZG9jdW1lbnQoKS51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5
bGVzaGVldHMoKTsKLQotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IHVu
ZGVmaW5lZFN0YXRlKCJ1bmRlZmluZWQiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKTsKLSAgICBpZiAoIXJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KCkpCi0gICAgICAgIHJldHVy
biB1bmRlZmluZWRTdGF0ZTsKLQotICAgIHN3aXRjaCAocmVnaW9uT3ZlcnNldFN0YXRlKCkpIHsK
LSAgICBjYXNlIFJlZ2lvbkZpdDogewotICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRv
bWljU3RyaW5nPiBmaXRTdGF0ZSgiZml0IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0
ZXJhbCk7Ci0gICAgICAgIHJldHVybiBmaXRTdGF0ZTsKLSAgICB9Ci0gICAgY2FzZSBSZWdpb25F
bXB0eTogewotICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBlbXB0
eVN0YXRlKCJlbXB0eSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAg
ICAgICByZXR1cm4gZW1wdHlTdGF0ZTsKLSAgICB9Ci0gICAgY2FzZSBSZWdpb25PdmVyc2V0OiB7
Ci0gICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IG92ZXJmbG93U3Rh
dGUoIm92ZXJzZXQiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICAg
ICAgcmV0dXJuIG92ZXJmbG93U3RhdGU7Ci0gICAgfQotICAgIGNhc2UgUmVnaW9uVW5kZWZpbmVk
OgotICAgICAgICByZXR1cm4gdW5kZWZpbmVkU3RhdGU7Ci0gICAgfQotCi0gICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIHVuZGVmaW5lZFN0YXRlOwotfQotCi1WZWN0b3I8UmVm
UHRyPFJhbmdlPj4gRWxlbWVudDo6d2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpIGNvbnN0Ci17
Ci0gICAgVmVjdG9yPFJlZlB0cjxSYW5nZT4+IHJhbmdlT2JqZWN0czsKLSAgICBkb2N1bWVudCgp
LnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOwotICAgIGF1dG8qIHJlbmRl
cmVyID0gdGhpcy0+cmVuZGVyZXIoKTsKLSAgICBpZiAocmVuZGVyZXIgJiYgcmVuZGVyZXItPmlz
UmVuZGVyTmFtZWRGbG93RnJhZ21lbnRDb250YWluZXIoKSkgewotICAgICAgICBhdXRvJiBuYW1l
ZEZsb3dGcmFnbWVudCA9ICpkb3duY2FzdDxSZW5kZXJCbG9ja0Zsb3c+KCpyZW5kZXJlcikucmVu
ZGVyTmFtZWRGbG93RnJhZ21lbnQoKTsKLSAgICAgICAgaWYgKG5hbWVkRmxvd0ZyYWdtZW50Lmlz
VmFsaWQoKSkKLSAgICAgICAgICAgIG5hbWVkRmxvd0ZyYWdtZW50LmdldFJhbmdlcyhyYW5nZU9i
amVjdHMpOwotICAgIH0KLSAgICByZXR1cm4gcmFuZ2VPYmplY3RzOwotfQotCi0jZW5kaWYKLQog
I2lmbmRlZiBOREVCVUcKIGJvb2wgRWxlbWVudDo6ZmFzdEF0dHJpYnV0ZUxvb2t1cEFsbG93ZWQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkgY29uc3QKIHsKQEAgLTM1MjAsNyArMzQwNiw2IEBA
IHZvaWQgRWxlbWVudDo6cmVzZXRTdHlsZVJlbGF0aW9ucygpCiAKIHZvaWQgRWxlbWVudDo6Y2xl
YXJTdHlsZURlcml2ZWREYXRhQmVmb3JlRGV0YWNoaW5nUmVuZGVyZXIoKQogewotICAgIHVucmVn
aXN0ZXJOYW1lZEZsb3dDb250ZW50RWxlbWVudCgpOwogICAgIGNsZWFyQmVmb3JlUHNldWRvRWxl
bWVudCgpOwogICAgIGNsZWFyQWZ0ZXJQc2V1ZG9FbGVtZW50KCk7CiB9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9kb20vRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9F
bGVtZW50LmgJKHJldmlzaW9uIDIyMjI1NykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDYgQEAKICNpbmNsdWRlICJEb2N1bWVudC5o
IgogI2luY2x1ZGUgIkVsZW1lbnREYXRhLmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCi0jaW5j
bHVkZSAiUmVnaW9uT3ZlcnNldFN0YXRlLmgiCiAjaW5jbHVkZSAiU2Nyb2xsVG9PcHRpb25zLmgi
CiAjaW5jbHVkZSAiU2Nyb2xsVHlwZXMuaCIKICNpbmNsdWRlICJTaGFkb3dSb290TW9kZS5oIgpA
QCAtNTIsNyArNTEsNiBAQCBjbGFzcyBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ7CiBjbGFzcyBQbGF0
Zm9ybU1vdXNlRXZlbnQ7CiBjbGFzcyBQbGF0Zm9ybVdoZWVsRXZlbnQ7CiBjbGFzcyBQc2V1ZG9F
bGVtZW50OwotY2xhc3MgUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQ7CiBjbGFzcyBSZW5kZXJUcmVl
UG9zaXRpb247CiBjbGFzcyBXZWJBbmltYXRpb247CiBzdHJ1Y3QgRWxlbWVudFN0eWxlOwpAQCAt
MzQ1LDkgKzM0Myw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFN0eWxlSXNBZmZlY3RlZEJ5UHJl
dmlvdXNTaWJsaW5nKCkgeyBzZXRGbGFnKFN0eWxlSXNBZmZlY3RlZEJ5UHJldmlvdXNTaWJsaW5n
KTsgfQogICAgIHZvaWQgc2V0Q2hpbGRJbmRleCh1bnNpZ25lZCk7CiAKLSAgICB2b2lkIHNldFJl
Z2lvbk92ZXJzZXRTdGF0ZShSZWdpb25PdmVyc2V0U3RhdGUpOwotICAgIFJlZ2lvbk92ZXJzZXRT
dGF0ZSByZWdpb25PdmVyc2V0U3RhdGUoKSBjb25zdDsKLQogICAgIEF0b21pY1N0cmluZyBjb21w
dXRlSW5oZXJpdGVkTGFuZ3VhZ2UoKSBjb25zdDsKICAgICBMb2NhbGUmIGxvY2FsZSgpIGNvbnN0
OwogCkBAIC00NjcsMTUgKzQ2Miw2IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNTcGVsbENoZWNr
aW5nRW5hYmxlZCgpIGNvbnN0OwogCi0gICAgUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQqIHJlbmRl
ck5hbWVkRmxvd0ZyYWdtZW50KCkgY29uc3Q7Ci0KLSNpZiBFTkFCTEUoQ1NTX1JFR0lPTlMpCi0g
ICAgdmlydHVhbCBib29sIHNob3VsZE1vdmVUb0Zsb3dUaHJlYWQoY29uc3QgUmVuZGVyU3R5bGUm
KSBjb25zdDsKLSAgICAKLSAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBBdG9taWNTdHJpbmcmIHdl
YmtpdFJlZ2lvbk92ZXJzZXQoKSBjb25zdDsKLSAgICBWZWN0b3I8UmVmUHRyPFJhbmdlPj4gd2Vi
a2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpIGNvbnN0OwotI2VuZGlmCi0KICAgICBib29sIGhhc0lE
KCkgY29uc3Q7CiAgICAgYm9vbCBoYXNDbGFzcygpIGNvbnN0OwogICAgIGJvb2wgaGFzTmFtZSgp
IGNvbnN0OwpAQCAtNTUzLDEwICs1MzksNiBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQ29udGFpbmVy
Tm9kZTo6c2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcjsKICAgICB2b2lkIHNldEF0dHJpYnV0ZUV2
ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGNvbnN0IFF1YWxpZmll
ZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpOwogCi0gICAg
Ym9vbCBpc05hbWVkRmxvd0NvbnRlbnRFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gaGFzUmFyZURh
dGEoKSAmJiByYXJlRGF0YUlzTmFtZWRGbG93Q29udGVudEVsZW1lbnQoKTsgfQotICAgIHZvaWQg
c2V0SXNOYW1lZEZsb3dDb250ZW50RWxlbWVudCgpOwotICAgIHZvaWQgY2xlYXJJc05hbWVkRmxv
d0NvbnRlbnRFbGVtZW50KCk7Ci0KICNpZiBFTkFCTEUoV0VCX0FOSU1BVElPTlMpCiAgICAgVmVj
dG9yPFdlYkFuaW1hdGlvbio+IGdldEFuaW1hdGlvbnMoKTsKICNlbmRpZgpAQCAtNjUwLDcgKzYz
Miw2IEBAIHByaXZhdGU6CiAKICAgICBib29sIHJhcmVEYXRhU3R5bGVBZmZlY3RlZEJ5RW1wdHko
KSBjb25zdDsKICAgICBib29sIHJhcmVEYXRhU3R5bGVBZmZlY3RlZEJ5Rm9jdXNXaXRoaW4oKSBj
b25zdDsKLSAgICBib29sIHJhcmVEYXRhSXNOYW1lZEZsb3dDb250ZW50RWxlbWVudCgpIGNvbnN0
OwogICAgIGJvb2wgcmFyZURhdGFDaGlsZHJlbkFmZmVjdGVkQnlIb3ZlcigpIGNvbnN0OwogICAg
IGJvb2wgcmFyZURhdGFTdHlsZUFmZmVjdGVkQnlBY3RpdmUoKSBjb25zdDsKICAgICBib29sIHJh
cmVEYXRhQ2hpbGRyZW5BZmZlY3RlZEJ5RHJhZygpIGNvbnN0OwpAQCAtNjYxLDggKzY0Miw2IEBA
IHByaXZhdGU6CiAKICAgICBTcGVsbGNoZWNrQXR0cmlidXRlU3RhdGUgc3BlbGxjaGVja0F0dHJp
YnV0ZVN0YXRlKCkgY29uc3Q7CiAKLSAgICB2b2lkIHVucmVnaXN0ZXJOYW1lZEZsb3dDb250ZW50
RWxlbWVudCgpOwotCiAgICAgdm9pZCBjcmVhdGVVbmlxdWVFbGVtZW50RGF0YSgpOwogCiAgICAg
RWxlbWVudFJhcmVEYXRhKiBlbGVtZW50UmFyZURhdGEoKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2RvbS9FbGVtZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudC5pZGwJKHJldmlzaW9uIDIyMjI1NykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMTAwLDEyICsxMDAsNiBAQAogICAgIC8vIEV4dGVu
c2lvbnMgZnJvbSBQb2ludGVyIExvY2sgQVBJIChodHRwczovL3czYy5naXRodWIuaW8vcG9pbnRl
cmxvY2svI2V4dGVuc2lvbnMtdG8tdGhlLWVsZW1lbnQtaW50ZXJmYWNlKS4KICAgICBbQ29uZGl0
aW9uYWw9UE9JTlRFUl9MT0NLXSB2b2lkIHJlcXVlc3RQb2ludGVyTG9jaygpOwogCi0gICAgLy8g
RXh0ZW5zaW9ucyBmcm9tIENTUyBSZWdpb25zIEFQSSAoaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3Jn
L2Nzcy1yZWdpb25zLyN0aGUtcmVnaW9uLWludGVyZmFjZSkuCi0gICAgLy8gRklYTUU6IFNob3Vs
ZCBiZSBpbiBhIHNlcGFyYXRlIFJlZ2lvbiBpbnRlcmZhY2UgaW1wbGVtZW50ZWQgYnkgRWxlbWVu
dC4KLSAgICAvLyBGSVhNRTogU2hvdWxkIHdlIGFkZCB1bnByZWZpeGVkIHZlcnNpb25zPwotICAg
IFtDb25kaXRpb25hbD1DU1NfUkVHSU9OU10gcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyB3
ZWJraXRSZWdpb25PdmVyc2V0OwotICAgIFtDb25kaXRpb25hbD1DU1NfUkVHSU9OU10gc2VxdWVu
Y2U8UmFuZ2U+PyB3ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCk7Ci0KICAgICAvLyBOb24gc3Rh
bmRhcmQgQVBJIChodHRwczovL3d3dy53My5vcmcvQnVncy9QdWJsaWMvc2hvd19idWcuY2dpP2lk
PTE3MTUyKS4KICAgICB2b2lkIHNjcm9sbEludG9WaWV3SWZOZWVkZWQob3B0aW9uYWwgYm9vbGVh
biBjZW50ZXJJZk5lZWRlZCA9IHRydWUpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudFJhcmVEYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dFJhcmVEYXRhLmNwcAkocmV2aXNpb24gMjIyMjU3KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0Vs
ZW1lbnRSYXJlRGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxLDcgKzQxLDYgQEAgc3RydWN0
IFNhbWVTaXplQXNFbGVtZW50UmFyZURhdGEgOiBOb2RlUgogI2Vsc2UKICAgICB1bnNpZ25lZCBi
aXRmaWVsZHMgOiAxMDsKICNlbmRpZgotICAgIFJlZ2lvbk92ZXJzZXRTdGF0ZSByZWdpb25PdmVy
c2V0U3RhdGU7CiAgICAgTGF5b3V0U2l6ZSBzaXplRm9yUmVzaXppbmc7CiAgICAgSW50UG9pbnQg
c2F2ZWRMYXllclNjcm9sbFBvc2l0aW9uOwogICAgIHZvaWQqIHBvaW50ZXJzWzhdOwpJbmRleDog
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRSYXJlRGF0YS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEuaAkocmV2aXNpb24gMjIyMjU3KQorKysgU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRSYXJlRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC02MCwx
MiArNjAsNiBAQCBwdWJsaWM6CiAgICAgYm9vbCBzdHlsZUFmZmVjdGVkQnlGb2N1c1dpdGhpbigp
IGNvbnN0IHsgcmV0dXJuIG1fc3R5bGVBZmZlY3RlZEJ5Rm9jdXNXaXRoaW47IH0KICAgICB2b2lk
IHNldFN0eWxlQWZmZWN0ZWRCeUZvY3VzV2l0aGluKGJvb2wgdmFsdWUpIHsgbV9zdHlsZUFmZmVj
dGVkQnlGb2N1c1dpdGhpbiA9IHZhbHVlOyB9CiAKLSAgICBSZWdpb25PdmVyc2V0U3RhdGUgcmVn
aW9uT3ZlcnNldFN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9yZWdpb25PdmVyc2V0U3RhdGU7IH0K
LSAgICB2b2lkIHNldFJlZ2lvbk92ZXJzZXRTdGF0ZShSZWdpb25PdmVyc2V0U3RhdGUgc3RhdGUp
IHsgbV9yZWdpb25PdmVyc2V0U3RhdGUgPSBzdGF0ZTsgfQotCi0gICAgYm9vbCBpc05hbWVkRmxv
d0NvbnRlbnRFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gbV9pc05hbWVkRmxvd0NvbnRlbnRFbGVt
ZW50OyB9Ci0gICAgdm9pZCBzZXRJc05hbWVkRmxvd0NvbnRlbnRFbGVtZW50KGJvb2wgdmFsdWUp
IHsgbV9pc05hbWVkRmxvd0NvbnRlbnRFbGVtZW50ID0gdmFsdWU7IH0KLQogI2lmIEVOQUJMRShG
VUxMU0NSRUVOX0FQSSkKICAgICBib29sIGNvbnRhaW5zRnVsbFNjcmVlbkVsZW1lbnQoKSB7IHJl
dHVybiBtX2NvbnRhaW5zRnVsbFNjcmVlbkVsZW1lbnQ7IH0KICAgICB2b2lkIHNldENvbnRhaW5z
RnVsbFNjcmVlbkVsZW1lbnQoYm9vbCB2YWx1ZSkgeyBtX2NvbnRhaW5zRnVsbFNjcmVlbkVsZW1l
bnQgPSB2YWx1ZTsgfQpAQCAtMTMyLDkgKzEyNiw2IEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQg
bV9jaGlsZHJlbkFmZmVjdGVkQnlMYXN0Q2hpbGRSdWxlcyA6IDE7CiAgICAgdW5zaWduZWQgbV9j
aGlsZHJlbkFmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcyA6IDE7CiAgICAgdW5zaWdu
ZWQgbV9jaGlsZHJlbkFmZmVjdGVkQnlQcm9wZXJ0eUJhc2VkQmFja3dhcmRQb3NpdGlvbmFsUnVs
ZXMgOiAxOwotICAgIHVuc2lnbmVkIG1faXNOYW1lZEZsb3dDb250ZW50RWxlbWVudCA6IDE7Ci0K
LSAgICBSZWdpb25PdmVyc2V0U3RhdGUgbV9yZWdpb25PdmVyc2V0U3RhdGU7CiAKICAgICBMYXlv
dXRTaXplIG1fbWluaW11bVNpemVGb3JSZXNpemluZzsKICAgICBJbnRQb2ludCBtX3NhdmVkTGF5
ZXJTY3JvbGxQb3NpdGlvbjsKQEAgLTE3NCw4ICsxNjUsNiBAQCBpbmxpbmUgRWxlbWVudFJhcmVE
YXRhOjpFbGVtZW50UmFyZURhdGEoCiAgICAgLCBtX2NoaWxkcmVuQWZmZWN0ZWRCeUxhc3RDaGls
ZFJ1bGVzKGZhbHNlKQogICAgICwgbV9jaGlsZHJlbkFmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9u
YWxSdWxlcyhmYWxzZSkKICAgICAsIG1fY2hpbGRyZW5BZmZlY3RlZEJ5UHJvcGVydHlCYXNlZEJh
Y2t3YXJkUG9zaXRpb25hbFJ1bGVzKGZhbHNlKQotICAgICwgbV9pc05hbWVkRmxvd0NvbnRlbnRF
bGVtZW50KGZhbHNlKQotICAgICwgbV9yZWdpb25PdmVyc2V0U3RhdGUoUmVnaW9uVW5kZWZpbmVk
KQogICAgICwgbV9taW5pbXVtU2l6ZUZvclJlc2l6aW5nKGRlZmF1bHRNaW5pbXVtU2l6ZUZvclJl
c2l6aW5nKCkpCiB7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0
b3J5LmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3Rv
cnkuaW4JKHJldmlzaW9uIDIyMjI1NykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdl
dEZhY3RvcnkuaW4JKHdvcmtpbmcgY29weSkKQEAgLTQxLDcgKzQxLDYgQEAgVGV4dFRyYWNrTGlz
dCBjb25kaXRpb25hbD1WSURFT19UUkFDSwogVlJEaXNwbGF5CiBWaWRlb1RyYWNrTGlzdCBjb25k
aXRpb25hbD1WSURFT19UUkFDSwogV2ViS2l0TWVkaWFLZXlTZXNzaW9uIGNvbmRpdGlvbmFsPUxF
R0FDWV9FTkNSWVBURURfTUVESUEKLVdlYktpdE5hbWVkRmxvdwogV2ViU29ja2V0CiBXb3JrZXIK
IFhNTEh0dHBSZXF1ZXN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vTmFtZWRGbG93Q29sbGVj
dGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL05hbWVkRmxvd0NvbGxl
Y3Rpb24uY3BwCShyZXZpc2lvbiAyMjIyNTcpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vTmFtZWRG
bG93Q29sbGVjdGlvbi5jcHAJKG5vbmV4aXN0ZW50KQpAQCAtMSwxMzEgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMiBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqCi0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlCi0gKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZwotICogICAgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqICAgIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCi0gKiAg
ICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMK
LSAqICAgIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSICJBUyBJUyIgQU5EIEFOWQot
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgQkUKLSAqIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwKLSAqIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IKLSAqIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRgotICogVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCi0g
KiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiTmFt
ZWRGbG93Q29sbGVjdGlvbi5oIgotCi0jaW5jbHVkZSAiRE9NTmFtZWRGbG93Q29sbGVjdGlvbi5o
IgotI2luY2x1ZGUgIkRvY3VtZW50LmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uLmgiCi0KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+Ci0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotTmFtZWRGbG93Q29sbGVjdGlvbjo6TmFtZWRGbG93Q29sbGVjdGlvbihEb2N1
bWVudCogZG9jdW1lbnQpCi0gICAgOiBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcihkb2N1bWVu
dCkKLXsKLX0KLQotVmVjdG9yPFJlZlB0cjxXZWJLaXROYW1lZEZsb3c+PiBOYW1lZEZsb3dDb2xs
ZWN0aW9uOjpuYW1lZEZsb3dzKCkKLXsKLSAgICBWZWN0b3I8UmVmUHRyPFdlYktpdE5hbWVkRmxv
dz4+IG5hbWVkRmxvd3M7Ci0KLSAgICBmb3IgKGF1dG8mIG5hbWVkRmxvdyA6IG1fbmFtZWRGbG93
cykgewotICAgICAgICBpZiAobmFtZWRGbG93LT5mbG93U3RhdGUoKSA9PSBXZWJLaXROYW1lZEZs
b3c6OkZsb3dTdGF0ZU51bGwpCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBuYW1l
ZEZsb3dzLmFwcGVuZChSZWZQdHI8V2ViS2l0TmFtZWRGbG93PihuYW1lZEZsb3cpKTsKLSAgICB9
Ci0KLSAgICByZXR1cm4gbmFtZWRGbG93czsKLX0KLQotV2ViS2l0TmFtZWRGbG93KiBOYW1lZEZs
b3dDb2xsZWN0aW9uOjpmbG93QnlOYW1lKGNvbnN0IFN0cmluZyYgZmxvd05hbWUpCi17Ci0gICAg
TmFtZWRGbG93U2V0OjppdGVyYXRvciBpdCA9IG1fbmFtZWRGbG93cy5maW5kPFN0cmluZywgTmFt
ZWRGbG93SGFzaFRyYW5zbGF0b3I+KGZsb3dOYW1lKTsKLSAgICBpZiAoaXQgPT0gbV9uYW1lZEZs
b3dzLmVuZCgpIHx8ICgqaXQpLT5mbG93U3RhdGUoKSA9PSBXZWJLaXROYW1lZEZsb3c6OkZsb3dT
dGF0ZU51bGwpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgcmV0dXJuICppdDsKLX0K
LQotUmVmPFdlYktpdE5hbWVkRmxvdz4gTmFtZWRGbG93Q29sbGVjdGlvbjo6ZW5zdXJlRmxvd1dp
dGhOYW1lKGNvbnN0IFN0cmluZyYgZmxvd05hbWUpCi17Ci0gICAgTmFtZWRGbG93U2V0OjppdGVy
YXRvciBpdCA9IG1fbmFtZWRGbG93cy5maW5kPFN0cmluZywgTmFtZWRGbG93SGFzaFRyYW5zbGF0
b3I+KGZsb3dOYW1lKTsKLSAgICBpZiAoaXQgIT0gbV9uYW1lZEZsb3dzLmVuZCgpKSB7Ci0gICAg
ICAgIFdlYktpdE5hbWVkRmxvdyogbmFtZWRGbG93ID0gKml0OwotICAgICAgICBBU1NFUlQobmFt
ZWRGbG93LT5mbG93U3RhdGUoKSA9PSBXZWJLaXROYW1lZEZsb3c6OkZsb3dTdGF0ZU51bGwpOwot
Ci0gICAgICAgIHJldHVybiAqbmFtZWRGbG93OwotICAgIH0KLQotICAgIFJlZlB0cjxXZWJLaXRO
YW1lZEZsb3c+IG5ld0Zsb3cgPSBXZWJLaXROYW1lZEZsb3c6OmNyZWF0ZSgqdGhpcywgZmxvd05h
bWUpOwotICAgIG1fbmFtZWRGbG93cy5hZGQobmV3Rmxvdy5nZXQoKSk7Ci0KLSAgICBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OmRpZENyZWF0ZU5hbWVkRmxvdyhkb2N1bWVudCgpLCAqbmV3Rmxv
dyk7Ci0KLSAgICByZXR1cm4gbmV3Rmxvdy5yZWxlYXNlTm9uTnVsbCgpOwotfQotCi12b2lkIE5h
bWVkRmxvd0NvbGxlY3Rpb246OmRpc2NhcmROYW1lZEZsb3coV2ViS2l0TmFtZWRGbG93KiBuYW1l
ZEZsb3cpCi17Ci0gICAgLy8gVGhlIGRvY3VtZW50IGlzIG5vdCB2YWxpZCBhbnltb3JlIHNvIHRo
ZSBjb2xsZWN0aW9uIHdpbGwgYmUgZGVzdHJveWVkIGFueXdheS4KLSAgICBpZiAoIWRvY3VtZW50
KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIEFTU0VSVChuYW1lZEZsb3ctPmZsb3dTdGF0ZSgp
ID09IFdlYktpdE5hbWVkRmxvdzo6Rmxvd1N0YXRlTnVsbCk7Ci0gICAgQVNTRVJUKG1fbmFtZWRG
bG93cy5jb250YWlucyhuYW1lZEZsb3cpKTsKLQotICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6d2lsbFJlbW92ZU5hbWVkRmxvdyhkb2N1bWVudCgpLCAqbmFtZWRGbG93KTsKLQotICAgIG1f
bmFtZWRGbG93cy5yZW1vdmUobmFtZWRGbG93KTsKLX0KLQotRG9jdW1lbnQqIE5hbWVkRmxvd0Nv
bGxlY3Rpb246OmRvY3VtZW50KCkgY29uc3QKLXsKLSAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0ID0gQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXI6OnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKTsKLSAgICByZXR1cm4gZG93bmNhc3Q8RG9jdW1lbnQ+KGNvbnRleHQpOwotfQotCi1S
ZWY8RE9NTmFtZWRGbG93Q29sbGVjdGlvbj4gTmFtZWRGbG93Q29sbGVjdGlvbjo6Y3JlYXRlQ1NT
T01TbmFwc2hvdCgpCi17Ci0gICAgVmVjdG9yPFJlZjxXZWJLaXROYW1lZEZsb3c+PiBjcmVhdGVk
Rmxvd3M7Ci0gICAgZm9yIChhdXRvJiBuYW1lZEZsb3cgOiBtX25hbWVkRmxvd3MpIHsKLSAgICAg
ICAgaWYgKG5hbWVkRmxvdy0+Zmxvd1N0YXRlKCkgPT0gV2ViS2l0TmFtZWRGbG93OjpGbG93U3Rh
dGVDcmVhdGVkKQotICAgICAgICAgICAgY3JlYXRlZEZsb3dzLmFwcGVuZCgqbmFtZWRGbG93KTsK
LSAgICB9Ci0gICAgcmV0dXJuIERPTU5hbWVkRmxvd0NvbGxlY3Rpb246OmNyZWF0ZShXVEZNb3Zl
KGNyZWF0ZWRGbG93cykpOwotfQotCi0vLyBUaGUgSGFzaEZ1bmN0aW9ucyBvYmplY3QgdXNlZCBi
eSB0aGUgSGFzaFNldCB0byBjb21wYXJlIGJldHdlZW4gTmFtZWRGbG93cy4KLS8vIEl0IGlzIHNh
ZmUgdG8gc2V0IHNhZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkIGJlY2F1c2UgdGhlIEhhc2hT
ZXQgd2lsbCBuZXZlciBjb250YWluIG51bGwgcG9pbnRlcnMgb3IgZGVsZXRlZCB2YWx1ZXMuCi1z
dHJ1Y3QgTmFtZWRGbG93Q29sbGVjdGlvbjo6TmFtZWRGbG93SGFzaEZ1bmN0aW9ucyB7Ci0gICAg
c3RhdGljIHVuc2lnbmVkIGhhc2goV2ViS2l0TmFtZWRGbG93KiBrZXkpIHsgcmV0dXJuIERlZmF1
bHRIYXNoPFN0cmluZz46Okhhc2g6Omhhc2goa2V5LT5uYW1lKCkpOyB9Ci0gICAgc3RhdGljIGJv
b2wgZXF1YWwoV2ViS2l0TmFtZWRGbG93KiBhLCBXZWJLaXROYW1lZEZsb3cqIGIpIHsgcmV0dXJu
IGEtPm5hbWUoKSA9PSBiLT5uYW1lKCk7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBzYWZlVG9D
b21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IHRydWU7Ci19OwotCi0vLyBUaGUgSGFzaFRyYW5zbGF0
b3IgaXMgdXNlZCB0byBsb29rdXAgYSBOYW1lZEZsb3cgaW4gdGhlIHNldCB1c2luZyBhIG5hbWUu
Ci1zdHJ1Y3QgTmFtZWRGbG93Q29sbGVjdGlvbjo6TmFtZWRGbG93SGFzaFRyYW5zbGF0b3Igewot
ICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFN0cmluZyYga2V5KSB7IHJldHVybiBEZWZh
dWx0SGFzaDxTdHJpbmc+OjpIYXNoOjpoYXNoKGtleSk7IH0KLSAgICBzdGF0aWMgYm9vbCBlcXVh
bChXZWJLaXROYW1lZEZsb3cqIGEsIGNvbnN0IFN0cmluZyYgYikgeyByZXR1cm4gYS0+bmFtZSgp
ID09IGI7IH0KLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2RvbS9OYW1lZEZsb3dDb2xsZWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvZG9tL05hbWVkRmxvd0NvbGxlY3Rpb24uaAkocmV2aXNpb24gMjIyMjU3KQorKysgU291cmNl
L1dlYkNvcmUvZG9tL05hbWVkRmxvd0NvbGxlY3Rpb24uaAkobm9uZXhpc3RlbnQpCkBAIC0xLDcx
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgQWRvYmUgU3lzdGVtcyBJbmNvcnBv
cmF0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZQotICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKLSAqICAgIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
Ci0gKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZwotICogICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzCi0gKiAgICBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUiAi
QVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIEJFCi0g
KiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksCi0gKiBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SCi0gKiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YKLSAqIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRgotICogU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNp
bmNsdWRlICJDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlci5oIgotI2luY2x1ZGUgIldlYktpdE5h
bWVkRmxvdy5oIgotI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0jaW5jbHVkZSA8d3RmL0xpc3RI
YXNoU2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgRG9jdW1lbnQ7Ci1jbGFzcyBE
T01OYW1lZEZsb3dDb2xsZWN0aW9uOwotCi1jbGFzcyBOYW1lZEZsb3dDb2xsZWN0aW9uIGZpbmFs
IDogcHVibGljIFJlZkNvdW50ZWQ8TmFtZWRGbG93Q29sbGVjdGlvbj4sIHB1YmxpYyBDb250ZXh0
RGVzdHJ1Y3Rpb25PYnNlcnZlciB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxOYW1lZEZsb3dD
b2xsZWN0aW9uPiBjcmVhdGUoRG9jdW1lbnQqIGRvYykgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBO
YW1lZEZsb3dDb2xsZWN0aW9uKGRvYykpOyB9Ci0KLSAgICBWZWN0b3I8UmVmUHRyPFdlYktpdE5h
bWVkRmxvdz4+IG5hbWVkRmxvd3MoKTsKLSAgICBXZWJLaXROYW1lZEZsb3cqIGZsb3dCeU5hbWUo
Y29uc3QgU3RyaW5nJik7Ci0gICAgUmVmPFdlYktpdE5hbWVkRmxvdz4gZW5zdXJlRmxvd1dpdGhO
YW1lKGNvbnN0IFN0cmluZyYpOwotCi0gICAgdm9pZCBkaXNjYXJkTmFtZWRGbG93KFdlYktpdE5h
bWVkRmxvdyopOwotCi0gICAgRG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3Q7Ci0KLSAgICB2aXJ0
dWFsIH5OYW1lZEZsb3dDb2xsZWN0aW9uKCkgeyB9Ci0KLSAgICBSZWY8RE9NTmFtZWRGbG93Q29s
bGVjdGlvbj4gY3JlYXRlQ1NTT01TbmFwc2hvdCgpOwotCi1wcml2YXRlOgotICAgIHN0cnVjdCBO
YW1lZEZsb3dIYXNoRnVuY3Rpb25zOwotICAgIHN0cnVjdCBOYW1lZEZsb3dIYXNoVHJhbnNsYXRv
cjsKLQotICAgIHR5cGVkZWYgTGlzdEhhc2hTZXQ8V2ViS2l0TmFtZWRGbG93KiwgTmFtZWRGbG93
SGFzaEZ1bmN0aW9ucz4gTmFtZWRGbG93U2V0OwotCi0gICAgZXhwbGljaXQgTmFtZWRGbG93Q29s
bGVjdGlvbihEb2N1bWVudCopOwotCi0gICAgTmFtZWRGbG93U2V0IG1fbmFtZWRGbG93czsKLX07
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Qc2V1
ZG9FbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1BzZXVkb0VsZW1l
bnQuaAkocmV2aXNpb24gMjIyMjU3KQorKysgU291cmNlL1dlYkNvcmUvZG9tL1BzZXVkb0VsZW1l
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDQsMTIgKzQ0LDYgQEAgcHVibGljOgogCiAgICAgYm9v
bCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlJikgb3ZlcnJpZGU7CiAKLSAgICAv
LyBBcyBwZXIgaHR0cDovL2Rldi53My5vcmcvY3Nzd2cvY3NzMy1yZWdpb25zLyNmbG93LWludG8s
IHBzZXVkby1lbGVtZW50cyBzdWNoIGFzIDo6Zmlyc3QtbGluZSwgOjpmaXJzdC1sZXR0ZXIsIDo6
YmVmb3JlIG9yIDo6YWZ0ZXIKLSAgICAvLyBjYW5ub3QgYmUgZGlyZWN0bHkgY29sbGVjdGVkIGlu
dG8gYSBuYW1lZCBmbG93LgotI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKLSAgICBib29sIHNob3Vs
ZE1vdmVUb0Zsb3dUaHJlYWQoY29uc3QgUmVuZGVyU3R5bGUmKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBmYWxzZTsgfQotI2VuZGlmCi0KICAgICBib29sIGNhblN0YXJ0U2VsZWN0aW9uKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICBib29sIGNhbkNvbnRhaW5SYW5nZUVu
ZFBvaW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KIApJbmRleDogU291cmNl
L1dlYkNvcmUvZG9tL1dlYktpdE5hbWVkRmxvdy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvZG9tL1dlYktpdE5hbWVkRmxvdy5jcHAJKHJldmlzaW9uIDIyMjI1NykKKysrIFNvdXJj
ZS9XZWJDb3JlL2RvbS9XZWJLaXROYW1lZEZsb3cuY3BwCShub25leGlzdGVudCkKQEAgLTEsMjM1
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQWRvYmUgU3lzdGVtcyBJbmNvcnBv
cmF0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZQotICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKLSAqICAgIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
Ci0gKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZwotICogICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzCi0gKiAgICBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KiAKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVIg
IkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBCRQot
ICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLAotICogT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUgotICogVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GCi0gKiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YKLSAqIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcu
aCIKLSNpbmNsdWRlICJXZWJLaXROYW1lZEZsb3cuaCIKLQotI2luY2x1ZGUgIkV2ZW50TmFtZXMu
aCIKLSNpbmNsdWRlICJOYW1lZEZsb3dDb2xsZWN0aW9uLmgiCi0jaW5jbHVkZSAiTm9FdmVudERp
c3BhdGNoQXNzZXJ0aW9uLmgiCi0jaW5jbHVkZSAiUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQuaCIK
LSNpbmNsdWRlICJSZW5kZXJOYW1lZEZsb3dUaHJlYWQuaCIKLSNpbmNsdWRlICJSZW5kZXJSZWdp
b24uaCIKLSNpbmNsdWRlICJTdGF0aWNOb2RlTGlzdC5oIgotI2luY2x1ZGUgIlVJRXZlbnQuaCIK
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1XZWJLaXROYW1lZEZsb3c6OldlYktpdE5hbWVkRmxv
dyhOYW1lZEZsb3dDb2xsZWN0aW9uJiBtYW5hZ2VyLCBjb25zdCBBdG9taWNTdHJpbmcmIGZsb3dU
aHJlYWROYW1lKQotICAgIDogbV9mbG93VGhyZWFkTmFtZShmbG93VGhyZWFkTmFtZSkKLSAgICAs
IG1fZmxvd01hbmFnZXIoJm1hbmFnZXIpCi0gICAgLCBtX3BhcmVudEZsb3dUaHJlYWQobnVsbHB0
cikKLXsKLX0KLQotV2ViS2l0TmFtZWRGbG93Ojp+V2ViS2l0TmFtZWRGbG93KCkKLXsKLSAgICAv
LyBUaGUgbmFtZWQgZmxvdyBpcyBub3QgInN0cm9uZyIgcmVmZXJlbmNlZCBmcm9tIGFueXdoZXJl
IGF0IHRoaXMgdGltZSBzbyBpdCBzaG91bGRuJ3QgYmUgcmV1c2VkIGlmIHRoZSBuYW1lZCBmbG93
IGlzIHJlY3JlYXRlZC4KLSAgICBtX2Zsb3dNYW5hZ2VyLT5kaXNjYXJkTmFtZWRGbG93KHRoaXMp
OwotfQotCi1SZWY8V2ViS2l0TmFtZWRGbG93PiBXZWJLaXROYW1lZEZsb3c6OmNyZWF0ZShOYW1l
ZEZsb3dDb2xsZWN0aW9uJiBtYW5hZ2VyLCBjb25zdCBBdG9taWNTdHJpbmcmIGZsb3dUaHJlYWRO
YW1lKQotewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYktpdE5hbWVkRmxvdyhtYW5hZ2Vy
LCBmbG93VGhyZWFkTmFtZSkpOwotfQotCi1jb25zdCBBdG9taWNTdHJpbmcmIFdlYktpdE5hbWVk
Rmxvdzo6bmFtZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fZmxvd1RocmVhZE5hbWU7Ci19Ci0K
LWJvb2wgV2ViS2l0TmFtZWRGbG93OjpvdmVyc2V0KCkgY29uc3QKLXsKLSAgICBpZiAobV9mbG93
TWFuYWdlci0+ZG9jdW1lbnQoKSkKLSAgICAgICAgbV9mbG93TWFuYWdlci0+ZG9jdW1lbnQoKS0+
dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7Ci0KLSAgICAvLyBUaGUgcmVu
ZGVyZXIgbWF5IGJlIGRlc3Ryb3llZCBvciBjcmVhdGVkIGFmdGVyIHRoZSBzdHlsZSB1cGRhdGUu
Ci0gICAgLy8gQmVjYXVzZSB0aGlzIGlzIGNhbGxlZCBmcm9tIEpTLCB3aGVyZSB0aGUgd3JhcHBl
ciBrZWVwcyBhIHJlZmVyZW5jZSB0byB0aGUgTmFtZWRGbG93LCBubyBndWFyZCBpcyBuZWNlc3Nh
cnkuCi0gICAgaWYgKCFtX3BhcmVudEZsb3dUaHJlYWQgfHwgIW1fcGFyZW50Rmxvd1RocmVhZC0+
aGFzUmVnaW9ucygpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIGNvbnN0IGF1dG8mIG5h
bWVkRmxvd0ZyYWdtZW50ID0gZG93bmNhc3Q8UmVuZGVyTmFtZWRGbG93RnJhZ21lbnQ+KCptX3Bh
cmVudEZsb3dUaHJlYWQtPmxhc3RSZWdpb24oKSk7Ci0gICAgcmV0dXJuIG5hbWVkRmxvd0ZyYWdt
ZW50LnJlZ2lvbk92ZXJzZXRTdGF0ZSgpID09IFJlZ2lvbk92ZXJzZXQ7Ci19Ci0KLXN0YXRpYyBp
bmxpbmUgYm9vbCBpbkZsb3dUaHJlYWQoUmVuZGVyT2JqZWN0KiByZW5kZXJlciwgUmVuZGVyTmFt
ZWRGbG93VGhyZWFkKiBmbG93VGhyZWFkKQotewotICAgIGlmICghcmVuZGVyZXIpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICBSZW5kZXJGbG93VGhyZWFkKiBjdXJyZW50Rmxvd1RocmVhZCA9
IHJlbmRlcmVyLT5mbG93VGhyZWFkQ29udGFpbmluZ0Jsb2NrKCk7Ci0gICAgaWYgKGZsb3dUaHJl
YWQgPT0gY3VycmVudEZsb3dUaHJlYWQpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIGlmIChy
ZW5kZXJlci0+Zmxvd1RocmVhZFN0YXRlKCkgIT0gUmVuZGVyT2JqZWN0OjpJbnNpZGVJbkZsb3dU
aHJlYWQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKLSAgICAvLyBBbiBpbi1mbG93IGZs
b3cgdGhyZWFkIGNhbiBiZSBuZXN0ZWQgaW5zaWRlIGFuIG91dC1vZi1mbG93IG9uZSwgc28gd2Ug
aGF2ZSB0byByZWN1ciB1cCB0byBjaGVjay4KLSAgICByZXR1cm4gaW5GbG93VGhyZWFkKGN1cnJl
bnRGbG93VGhyZWFkLT5jb250YWluaW5nQmxvY2soKSwgZmxvd1RocmVhZCk7Ci19Ci0KLWludCBX
ZWJLaXROYW1lZEZsb3c6OmZpcnN0RW1wdHlSZWdpb25JbmRleCgpIGNvbnN0Ci17Ci0gICAgaWYg
KG1fZmxvd01hbmFnZXItPmRvY3VtZW50KCkpCi0gICAgICAgIG1fZmxvd01hbmFnZXItPmRvY3Vt
ZW50KCktPnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOwotCi0gICAgaWYg
KCFtX3BhcmVudEZsb3dUaHJlYWQpCi0gICAgICAgIHJldHVybiAtMTsKLQotICAgIGNvbnN0IFJl
bmRlclJlZ2lvbkxpc3QmIHJlZ2lvbkxpc3QgPSBtX3BhcmVudEZsb3dUaHJlYWQtPnJlbmRlclJl
Z2lvbkxpc3QoKTsKLSAgICBpZiAocmVnaW9uTGlzdC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVy
biAtMTsKLQotICAgIGludCBjb3VudE5vblBzZXVkb1JlZ2lvbnMgPSAtMTsKLSAgICBmb3IgKGNv
bnN0IGF1dG8mIHJlbmRlclJlZ2lvbiA6IHJlZ2lvbkxpc3QpIHsKLSAgICAgICAgY29uc3QgYXV0
byYgbmFtZWRGbG93RnJhZ21lbnQgPSBkb3duY2FzdDxSZW5kZXJOYW1lZEZsb3dGcmFnbWVudD4o
KnJlbmRlclJlZ2lvbik7Ci0gICAgICAgIC8vIEZJWE1FOiBQc2V1ZG8tZWxlbWVudHMgYXJlIG5v
dCBpbmNsdWRlZCBpbiB0aGUgbGlzdC4KLSAgICAgICAgLy8gVGhleSB3aWxsIGJlIGluY2x1ZGVk
IHdoZW4gd2Ugd2lsbCBwcm9wZXJseSBzdXBwb3J0IHRoZSBSZWdpb24gaW50ZXJmYWNlCi0gICAg
ICAgIC8vIGh0dHA6Ly9kZXYudzMub3JnL2Nzc3dnL2Nzcy1yZWdpb25zLyN0aGUtcmVnaW9uLWlu
dGVyZmFjZQotICAgICAgICBpZiAobmFtZWRGbG93RnJhZ21lbnQuaXNQc2V1ZG9FbGVtZW50UmVn
aW9uKCkpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgKytjb3VudE5vblBzZXVkb1Jl
Z2lvbnM7Ci0gICAgICAgIGlmIChuYW1lZEZsb3dGcmFnbWVudC5yZWdpb25PdmVyc2V0U3RhdGUo
KSA9PSBSZWdpb25FbXB0eSkKLSAgICAgICAgICAgIHJldHVybiBjb3VudE5vblBzZXVkb1JlZ2lv
bnM7Ci0gICAgfQotICAgIHJldHVybiAtMTsKLX0KLQotUmVmPE5vZGVMaXN0PiBXZWJLaXROYW1l
ZEZsb3c6OmdldFJlZ2lvbnNCeUNvbnRlbnQoTm9kZSogY29udGVudE5vZGUpCi17Ci0gICAgaWYg
KCFjb250ZW50Tm9kZSkKLSAgICAgICAgcmV0dXJuIFN0YXRpY0VsZW1lbnRMaXN0OjpjcmVhdGUo
KTsKLQotICAgIGlmIChtX2Zsb3dNYW5hZ2VyLT5kb2N1bWVudCgpKQotICAgICAgICBtX2Zsb3dN
YW5hZ2VyLT5kb2N1bWVudCgpLT51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMo
KTsKLQotICAgIC8vIFRoZSByZW5kZXJlciBtYXkgYmUgZGVzdHJveWVkIG9yIGNyZWF0ZWQgYWZ0
ZXIgdGhlIHN0eWxlIHVwZGF0ZS4KLSAgICAvLyBCZWNhdXNlIHRoaXMgaXMgY2FsbGVkIGZyb20g
SlMsIHdoZXJlIHRoZSB3cmFwcGVyIGtlZXBzIGEgcmVmZXJlbmNlIHRvIHRoZSBOYW1lZEZsb3cs
IG5vIGd1YXJkIGlzIG5lY2Vzc2FyeS4KLSAgICBpZiAoIW1fcGFyZW50Rmxvd1RocmVhZCkKLSAg
ICAgICAgcmV0dXJuIFN0YXRpY0VsZW1lbnRMaXN0OjpjcmVhdGUoKTsKLQotICAgIFZlY3RvcjxS
ZWY8RWxlbWVudD4+IHJlZ2lvbkVsZW1lbnRzOwotCi0gICAgaWYgKGluRmxvd1RocmVhZChjb250
ZW50Tm9kZS0+cmVuZGVyZXIoKSwgbV9wYXJlbnRGbG93VGhyZWFkKSkgewotICAgICAgICBjb25z
dCBSZW5kZXJSZWdpb25MaXN0JiByZWdpb25MaXN0ID0gbV9wYXJlbnRGbG93VGhyZWFkLT5yZW5k
ZXJSZWdpb25MaXN0KCk7Ci0gICAgICAgIGZvciAoY29uc3QgYXV0byYgcmVuZGVyUmVnaW9uIDog
cmVnaW9uTGlzdCkgewotICAgICAgICAgICAgY29uc3QgYXV0byYgbmFtZWRGbG93RnJhZ21lbnQg
PSBkb3duY2FzdDxSZW5kZXJOYW1lZEZsb3dGcmFnbWVudD4oKnJlbmRlclJlZ2lvbik7Ci0gICAg
ICAgICAgICAvLyBGSVhNRTogUHNldWRvLWVsZW1lbnRzIGFyZSBub3QgaW5jbHVkZWQgaW4gdGhl
IGxpc3QuCi0gICAgICAgICAgICAvLyBUaGV5IHdpbGwgYmUgaW5jbHVkZWQgd2hlbiB3ZSB3aWxs
IHByb3Blcmx5IHN1cHBvcnQgdGhlIFJlZ2lvbiBpbnRlcmZhY2UKLSAgICAgICAgICAgIC8vIGh0
dHA6Ly9kZXYudzMub3JnL2Nzc3dnL2Nzcy1yZWdpb25zLyN0aGUtcmVnaW9uLWludGVyZmFjZQot
ICAgICAgICAgICAgaWYgKG5hbWVkRmxvd0ZyYWdtZW50LmlzUHNldWRvRWxlbWVudFJlZ2lvbigp
KQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgaWYgKG1fcGFyZW50Rmxv
d1RocmVhZC0+b2JqZWN0SW5GbG93UmVnaW9uKGNvbnRlbnROb2RlLT5yZW5kZXJlcigpLCAmbmFt
ZWRGbG93RnJhZ21lbnQpKSB7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKG5hbWVkRmxvd0ZyYWdt
ZW50LmdlbmVyYXRpbmdFbGVtZW50KCkpOwotICAgICAgICAgICAgICAgIHJlZ2lvbkVsZW1lbnRz
LmFwcGVuZCgqbmFtZWRGbG93RnJhZ21lbnQuZ2VuZXJhdGluZ0VsZW1lbnQoKSk7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gU3RhdGljRWxlbWVudExpc3Q6
OmNyZWF0ZShXVEZNb3ZlKHJlZ2lvbkVsZW1lbnRzKSk7Ci19Ci0KLVJlZjxOb2RlTGlzdD4gV2Vi
S2l0TmFtZWRGbG93OjpnZXRSZWdpb25zKCkKLXsKLSAgICBpZiAobV9mbG93TWFuYWdlci0+ZG9j
dW1lbnQoKSkKLSAgICAgICAgbV9mbG93TWFuYWdlci0+ZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0
SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7Ci0KLSAgICAvLyBUaGUgcmVuZGVyZXIgbWF5IGJl
IGRlc3Ryb3llZCBvciBjcmVhdGVkIGFmdGVyIHRoZSBzdHlsZSB1cGRhdGUuCi0gICAgLy8gQmVj
YXVzZSB0aGlzIGlzIGNhbGxlZCBmcm9tIEpTLCB3aGVyZSB0aGUgd3JhcHBlciBrZWVwcyBhIHJl
ZmVyZW5jZSB0byB0aGUgTmFtZWRGbG93LCBubyBndWFyZCBpcyBuZWNlc3NhcnkuCi0gICAgaWYg
KCFtX3BhcmVudEZsb3dUaHJlYWQpCi0gICAgICAgIHJldHVybiBTdGF0aWNFbGVtZW50TGlzdDo6
Y3JlYXRlKCk7Ci0KLSAgICBWZWN0b3I8UmVmPEVsZW1lbnQ+PiByZWdpb25FbGVtZW50czsKLQot
ICAgIGNvbnN0IFJlbmRlclJlZ2lvbkxpc3QmIHJlZ2lvbkxpc3QgPSBtX3BhcmVudEZsb3dUaHJl
YWQtPnJlbmRlclJlZ2lvbkxpc3QoKTsKLSAgICBmb3IgKGNvbnN0IGF1dG8mIHJlbmRlclJlZ2lv
biA6IHJlZ2lvbkxpc3QpIHsKLSAgICAgICAgY29uc3QgYXV0byYgbmFtZWRGbG93RnJhZ21lbnQg
PSBkb3duY2FzdDxSZW5kZXJOYW1lZEZsb3dGcmFnbWVudD4oKnJlbmRlclJlZ2lvbik7Ci0gICAg
ICAgIC8vIEZJWE1FOiBQc2V1ZG8tZWxlbWVudHMgYXJlIG5vdCBpbmNsdWRlZCBpbiB0aGUgbGlz
dC4KLSAgICAgICAgLy8gVGhleSB3aWxsIGJlIGluY2x1ZGVkIHdoZW4gd2Ugd2lsbCBwcm9wZXJs
eSBzdXBwb3J0IHRoZSBSZWdpb24gaW50ZXJmYWNlCi0gICAgICAgIC8vIGh0dHA6Ly9kZXYudzMu
b3JnL2Nzc3dnL2Nzcy1yZWdpb25zLyN0aGUtcmVnaW9uLWludGVyZmFjZQotICAgICAgICBpZiAo
bmFtZWRGbG93RnJhZ21lbnQuaXNQc2V1ZG9FbGVtZW50UmVnaW9uKCkpCi0gICAgICAgICAgICBj
b250aW51ZTsKLSAgICAgICAgQVNTRVJUKG5hbWVkRmxvd0ZyYWdtZW50LmdlbmVyYXRpbmdFbGVt
ZW50KCkpOwotICAgICAgICByZWdpb25FbGVtZW50cy5hcHBlbmQoKm5hbWVkRmxvd0ZyYWdtZW50
LmdlbmVyYXRpbmdFbGVtZW50KCkpOwotICAgIH0KLQotICAgIHJldHVybiBTdGF0aWNFbGVtZW50
TGlzdDo6Y3JlYXRlKFdURk1vdmUocmVnaW9uRWxlbWVudHMpKTsKLX0KLQotUmVmPE5vZGVMaXN0
PiBXZWJLaXROYW1lZEZsb3c6OmdldENvbnRlbnQoKQotewotICAgIGlmIChtX2Zsb3dNYW5hZ2Vy
LT5kb2N1bWVudCgpKQotICAgICAgICBtX2Zsb3dNYW5hZ2VyLT5kb2N1bWVudCgpLT51cGRhdGVM
YXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoKTsKLQotICAgIC8vIFRoZSByZW5kZXJlciBt
YXkgYmUgZGVzdHJveWVkIG9yIGNyZWF0ZWQgYWZ0ZXIgdGhlIHN0eWxlIHVwZGF0ZS4KLSAgICAv
LyBCZWNhdXNlIHRoaXMgaXMgY2FsbGVkIGZyb20gSlMsIHdoZXJlIHRoZSB3cmFwcGVyIGtlZXBz
IGEgcmVmZXJlbmNlIHRvIHRoZSBOYW1lZEZsb3csIG5vIGd1YXJkIGlzIG5lY2Vzc2FyeS4KLSAg
ICBpZiAoIW1fcGFyZW50Rmxvd1RocmVhZCkKLSAgICAgICAgcmV0dXJuIFN0YXRpY0VsZW1lbnRM
aXN0OjpjcmVhdGUoKTsKLQotICAgIGF1dG8mIGNvbnRlbnRFbGVtZW50c0xpc3QgPSBtX3BhcmVu
dEZsb3dUaHJlYWQtPmNvbnRlbnRFbGVtZW50cygpOwotICAgIFZlY3RvcjxSZWY8RWxlbWVudD4+
IGNvbnRlbnRFbGVtZW50czsKLSAgICBjb250ZW50RWxlbWVudHMucmVzZXJ2ZUluaXRpYWxDYXBh
Y2l0eShjb250ZW50RWxlbWVudHNMaXN0LnNpemUoKSk7Ci0gICAgZm9yIChhdXRvJiBlbGVtZW50
IDogY29udGVudEVsZW1lbnRzTGlzdCkgewotICAgICAgICBBU1NFUlQoZWxlbWVudC0+Y29tcHV0
ZWRTdHlsZSgpLT5mbG93VGhyZWFkKCkgPT0gbV9wYXJlbnRGbG93VGhyZWFkLT5mbG93VGhyZWFk
TmFtZSgpKTsKLSAgICAgICAgY29udGVudEVsZW1lbnRzLnVuY2hlY2tlZEFwcGVuZCgqZWxlbWVu
dCk7Ci0gICAgfQotCi0gICAgcmV0dXJuIFN0YXRpY0VsZW1lbnRMaXN0OjpjcmVhdGUoV1RGTW92
ZShjb250ZW50RWxlbWVudHMpKTsKLX0KLQotdm9pZCBXZWJLaXROYW1lZEZsb3c6OnNldFJlbmRl
cmVyKFJlbmRlck5hbWVkRmxvd1RocmVhZCogcGFyZW50Rmxvd1RocmVhZCkKLXsKLSAgICAvLyBU
aGUgbmFtZWQgZmxvdyBjYW4gZWl0aGVyIGdvIGZyb20gYSBub19yZW5kZXJlci0+cmVuZGVyZXIg
b3IgcmVuZGVyZXItPm5vX3JlbmRlcmVyIHN0YXRlOyBhbnl0aGluZyBlbHNlIGNvdWxkIGluZGlj
YXRlIGEgYnVnLgotICAgIEFTU0VSVCgoIW1fcGFyZW50Rmxvd1RocmVhZCAmJiBwYXJlbnRGbG93
VGhyZWFkKSB8fCAobV9wYXJlbnRGbG93VGhyZWFkICYmICFwYXJlbnRGbG93VGhyZWFkKSk7Ci0K
LSAgICAvLyBJZiBwYXJlbnRGbG93VGhyZWFkIGlzIDAsIHRoZSBmbG93IHRocmVhZCB3aWxsIG1v
dmUgaW4gdGhlICJOVUxMIiBzdGF0ZS4KLSAgICBtX3BhcmVudEZsb3dUaHJlYWQgPSBwYXJlbnRG
bG93VGhyZWFkOwotfQotCi12b2lkIFdlYktpdE5hbWVkRmxvdzo6ZGlzcGF0Y2hSZWdpb25PdmVy
c2V0Q2hhbmdlRXZlbnQoKQotewotICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9O
KE5vRXZlbnREaXNwYXRjaEFzc2VydGlvbjo6aXNFdmVudEFsbG93ZWRJbk1haW5UaHJlYWQoKSk7
Ci0gICAgCi0gICAgLy8gSWYgdGhlIGZsb3cgaXMgaW4gdGhlICJOVUxMIiBzdGF0ZSB0aGUgZXZl
bnQgc2hvdWxkIG5vdCBiZSBkaXNwYXRjaGVkIGFueSBtb3JlLgotICAgIGlmIChmbG93U3RhdGUo
KSA9PSBGbG93U3RhdGVOdWxsKQotICAgICAgICByZXR1cm47Ci0KLSAgICBkaXNwYXRjaEV2ZW50
KFVJRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkud2Via2l0cmVnaW9ub3ZlcnNldGNoYW5nZUV2
ZW50LCBmYWxzZSwgZmFsc2UsIG1fZmxvd01hbmFnZXItPmRvY3VtZW50KCktPmRlZmF1bHRWaWV3
KCksIDApKTsKLX0KLQotU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogV2ViS2l0TmFtZWRGbG93Ojpz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9mbG93TWFuYWdl
ci0+ZG9jdW1lbnQoKTsKLX0KLQotTm9kZSogV2ViS2l0TmFtZWRGbG93Ojpvd25lck5vZGUoKSBj
b25zdAotewotICAgIHJldHVybiBtX2Zsb3dNYW5hZ2VyLT5kb2N1bWVudCgpOwotfQotCi19IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCi0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9XZWJLaXROYW1l
ZEZsb3cuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vV2ViS2l0TmFtZWRGbG93
LmgJKHJldmlzaW9uIDIyMjI1NykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9XZWJLaXROYW1lZEZs
b3cuaAkobm9uZXhpc3RlbnQpCkBAIC0xLDkzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTEgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZQotICogICAg
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcKLSAqICAgIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZwotICogICAgZGlzY2xhaW1lciBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzCi0gKiAgICBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKiAKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVIgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQot
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUIEhPTERFUiBCRQotICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLAotICogT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgot
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUgotICogVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GCi0gKiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKLSAqIFNVQ0ggREFNQUdF
LgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKLSNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLSNpbmNsdWRl
IDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFz
cyBOYW1lZEZsb3dDb2xsZWN0aW9uOwotY2xhc3MgTm9kZTsKLWNsYXNzIE5vZGVMaXN0OwotY2xh
c3MgUmVuZGVyTmFtZWRGbG93VGhyZWFkOwotY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsK
LQotY2xhc3MgV2ViS2l0TmFtZWRGbG93IGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViS2l0
TmFtZWRGbG93PiwgcHVibGljIEV2ZW50VGFyZ2V0V2l0aElubGluZURhdGEgewotcHVibGljOgot
ICAgIHN0YXRpYyBSZWY8V2ViS2l0TmFtZWRGbG93PiBjcmVhdGUoTmFtZWRGbG93Q29sbGVjdGlv
biYgbWFuYWdlciwgY29uc3QgQXRvbWljU3RyaW5nJiBmbG93VGhyZWFkTmFtZSk7Ci0KLSAgICB+
V2ViS2l0TmFtZWRGbG93KCk7Ci0KLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUoKSBjb25z
dDsKLSAgICBib29sIG92ZXJzZXQoKSBjb25zdDsKLSAgICBpbnQgZmlyc3RFbXB0eVJlZ2lvbklu
ZGV4KCkgY29uc3Q7Ci0gICAgUmVmPE5vZGVMaXN0PiBnZXRSZWdpb25zQnlDb250ZW50KE5vZGUq
KTsKLSAgICBSZWY8Tm9kZUxpc3Q+IGdldFJlZ2lvbnMoKTsKLSAgICBSZWY8Tm9kZUxpc3Q+IGdl
dENvbnRlbnQoKTsKLQotICAgIHVzaW5nIFJlZkNvdW50ZWQ8V2ViS2l0TmFtZWRGbG93Pjo6cmVm
OwotICAgIHVzaW5nIFJlZkNvdW50ZWQ8V2ViS2l0TmFtZWRGbG93Pjo6ZGVyZWY7Ci0KLSAgICBF
dmVudFRhcmdldEludGVyZmFjZSBldmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIFdlYktpdE5hbWVkRmxvd0V2ZW50VGFyZ2V0SW50ZXJmYWNlVHlwZTsgfQotICAg
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBv
dmVycmlkZTsKLQotICAgIC8vIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGZyb20gdGhlIEpTIGJp
bmRpbmcgY29kZSB0byBkZXRlcm1pbmUgaWYgdGhlIE5hbWVkRmxvdyBvYmplY3QgaXMgcmVhY2hh
YmxlIG9yIG5vdC4KLSAgICAvLyBJZiB0aGUgb2JqZWN0IGhhcyBsaXN0ZW5lcnMsIHRoZSBvYmpl
Y3Qgc2hvdWxkIG9ubHkgYmUgZGlzY2FyZGVkIGlmIHRoZSBwYXJlbnQgRG9jdW1lbnQgaXMgbm90
IHJlYWNoYWJsZS4KLSAgICBOb2RlKiBvd25lck5vZGUoKSBjb25zdDsKLQotICAgIHZvaWQgc2V0
UmVuZGVyZXIoUmVuZGVyTmFtZWRGbG93VGhyZWFkKiBwYXJlbnRGbG93VGhyZWFkKTsKLQotICAg
IGVudW0gRmxvd1N0YXRlIHsKLSAgICAgICAgRmxvd1N0YXRlQ3JlYXRlZCwKLSAgICAgICAgRmxv
d1N0YXRlTnVsbAotICAgIH07Ci0KLSAgICBGbG93U3RhdGUgZmxvd1N0YXRlKCkgY29uc3QgeyBy
ZXR1cm4gbV9wYXJlbnRGbG93VGhyZWFkID8gRmxvd1N0YXRlQ3JlYXRlZCA6IEZsb3dTdGF0ZU51
bGw7IH0KLQotICAgIHZvaWQgZGlzcGF0Y2hSZWdpb25PdmVyc2V0Q2hhbmdlRXZlbnQoKTsKLQot
cHJpdmF0ZToKLSAgICBXZWJLaXROYW1lZEZsb3coTmFtZWRGbG93Q29sbGVjdGlvbiYsIGNvbnN0
IEF0b21pY1N0cmluZyYpOwotCi0gICAgLy8gRXZlbnRUYXJnZXQgaW1wbGVtZW50YXRpb24uCi0g
ICAgdm9pZCByZWZFdmVudFRhcmdldCgpIG92ZXJyaWRlIHsgcmVmKCk7IH0KLSAgICB2b2lkIGRl
cmVmRXZlbnRUYXJnZXQoKSBvdmVycmlkZSB7IGRlcmVmKCk7IH0KLQotICAgIC8vIFRoZSBuYW1l
IG9mIHRoZSBmbG93IHRocmVhZCBhcyBzcGVjaWZpZWQgaW4gQ1NTLgotICAgIEF0b21pY1N0cmlu
ZyBtX2Zsb3dUaHJlYWROYW1lOwotCi0gICAgUmVmUHRyPE5hbWVkRmxvd0NvbGxlY3Rpb24+IG1f
Zmxvd01hbmFnZXI7Ci0gICAgUmVuZGVyTmFtZWRGbG93VGhyZWFkKiBtX3BhcmVudEZsb3dUaHJl
YWQ7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9k
b20vV2ViS2l0TmFtZWRGbG93LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20v
V2ViS2l0TmFtZWRGbG93LmlkbAkocmV2aXNpb24gMjIyMjU3KQorKysgU291cmNlL1dlYkNvcmUv
ZG9tL1dlYktpdE5hbWVkRmxvdy5pZGwJKG5vbmV4aXN0ZW50KQpAQCAtMSw0MiArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDExIEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUKLSAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nCi0gKiAgICBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogICAgY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcK
LSAqICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscwotICogICAgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSICJBUyBJUyIgQU5E
IEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgQkUKLSAqIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwK
LSAqIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IKLSAqIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRgotICogVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GCi0gKiBTVUNIIERBTUFHRS4KLSAqLwotCi1bCi0gICAgR2VuZXJhdGVJc1JlYWNoYWJsZT1J
bXBsT3duZXJOb2RlUm9vdCwKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKLV0gaW50ZXJmYWNlIFdl
YktpdE5hbWVkRmxvdyA6IEV2ZW50VGFyZ2V0Ci17Ci0gICAgcmVhZG9ubHkgYXR0cmlidXRlIERP
TVN0cmluZyBuYW1lOwotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIG92ZXJzZXQ7Ci0g
ICAgcmVhZG9ubHkgYXR0cmlidXRlIGxvbmcgZmlyc3RFbXB0eVJlZ2lvbkluZGV4OwotICAgIC8v
IEZJWE1FOiBjb250ZW50Tm9kZSBzaG91bGQgbm90IGJlIG51bGxhYmxlLgotICAgIE5vZGVMaXN0
IGdldFJlZ2lvbnNCeUNvbnRlbnQoTm9kZT8gY29udGVudE5vZGUpOwotICAgIE5vZGVMaXN0IGdl
dFJlZ2lvbnMoKTsKLSAgICBOb2RlTGlzdCBnZXRDb250ZW50KCk7Ci19OwpJbmRleDogU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCShyZXZpc2lvbiAy
MjIyNTcpCisrKyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zNywxNiArMzcsMTUgQEAKICNpbmNsdWRlICJDb250ZW50U2Vj
dXJpdHlQb2xpY3kuaCIKICNpbmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRlICJGb250Q2Fj
aGUuaCIKKyNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkhUTUxIZWFkRWxlbWVudC5oIgog
I2luY2x1ZGUgIkhUTUxTdHlsZUVsZW1lbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JIaXN0b3J5
LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yUGFnZUFnZW50LmgiCiAjaW5jbHVkZSAiSW5zdHJ1bWVu
dGluZ0FnZW50cy5oIgotI2luY2x1ZGUgIk5hbWVkRmxvd0NvbGxlY3Rpb24uaCIKICNpbmNsdWRl
ICJOb2RlLmgiCiAjaW5jbHVkZSAiTm9kZUxpc3QuaCIKICNpbmNsdWRlICJQc2V1ZG9FbGVtZW50
LmgiCi0jaW5jbHVkZSAiUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQuaCIKICNpbmNsdWRlICJTVkdT
dHlsZUVsZW1lbnQuaCIKICNpbmNsdWRlICJTZWxlY3RvckNoZWNrZXIuaCIKICNpbmNsdWRlICJT
aGFkb3dSb290LmgiCkBAIC01Niw3ICs1NSw2IEBACiAjaW5jbHVkZSAiU3R5bGVSdWxlLmgiCiAj
aW5jbHVkZSAiU3R5bGVTY29wZS5oIgogI2luY2x1ZGUgIlN0eWxlU2hlZXRMaXN0LmgiCi0jaW5j
bHVkZSAiV2ViS2l0TmFtZWRGbG93LmgiCiAjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclBy
b3RvY29sT2JqZWN0cy5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CkBAIC0xMDMsNTQgKzEwMSw2IEBAIHN0YXRpYyB1bnNpZ25lZCBjb21wdXRlUHNldWRv
Q2xhc3NNYXNrKGMKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1jbGFzcyBDaGFuZ2VSZWdpb25P
dmVyc2V0VGFzayB7Ci1wdWJsaWM6Ci0gICAgQ2hhbmdlUmVnaW9uT3ZlcnNldFRhc2soSW5zcGVj
dG9yQ1NTQWdlbnQqKTsKLSAgICB2b2lkIHNjaGVkdWxlRm9yKFdlYktpdE5hbWVkRmxvdyosIGlu
dCBkb2N1bWVudE5vZGVJZCk7Ci0gICAgdm9pZCB1bnNjaGVkdWxlKFdlYktpdE5hbWVkRmxvdyop
OwotICAgIHZvaWQgcmVzZXQoKTsKLSAgICB2b2lkIHRpbWVyRmlyZWQoKTsKLQotcHJpdmF0ZToK
LSAgICBJbnNwZWN0b3JDU1NBZ2VudCogbV9jc3NBZ2VudDsKLSAgICBUaW1lciBtX3RpbWVyOwot
ICAgIEhhc2hNYXA8V2ViS2l0TmFtZWRGbG93KiwgaW50PiBtX25hbWVkRmxvd3M7Ci19OwotCi1D
aGFuZ2VSZWdpb25PdmVyc2V0VGFzazo6Q2hhbmdlUmVnaW9uT3ZlcnNldFRhc2soSW5zcGVjdG9y
Q1NTQWdlbnQqIGNzc0FnZW50KQotICAgIDogbV9jc3NBZ2VudChjc3NBZ2VudCkKLSAgICAsIG1f
dGltZXIoKnRoaXMsICZDaGFuZ2VSZWdpb25PdmVyc2V0VGFzazo6dGltZXJGaXJlZCkKLXsKLX0K
LQotdm9pZCBDaGFuZ2VSZWdpb25PdmVyc2V0VGFzazo6c2NoZWR1bGVGb3IoV2ViS2l0TmFtZWRG
bG93KiBuYW1lZEZsb3csIGludCBkb2N1bWVudE5vZGVJZCkKLXsKLSAgICBtX25hbWVkRmxvd3Mu
YWRkKG5hbWVkRmxvdywgZG9jdW1lbnROb2RlSWQpOwotCi0gICAgaWYgKCFtX3RpbWVyLmlzQWN0
aXZlKCkpCi0gICAgICAgIG1fdGltZXIuc3RhcnRPbmVTaG90KDBfcyk7Ci19Ci0KLXZvaWQgQ2hh
bmdlUmVnaW9uT3ZlcnNldFRhc2s6OnVuc2NoZWR1bGUoV2ViS2l0TmFtZWRGbG93KiBuYW1lZEZs
b3cpCi17Ci0gICAgbV9uYW1lZEZsb3dzLnJlbW92ZShuYW1lZEZsb3cpOwotfQotCi12b2lkIENo
YW5nZVJlZ2lvbk92ZXJzZXRUYXNrOjpyZXNldCgpCi17Ci0gICAgbV90aW1lci5zdG9wKCk7Ci0g
ICAgbV9uYW1lZEZsb3dzLmNsZWFyKCk7Ci19Ci0KLXZvaWQgQ2hhbmdlUmVnaW9uT3ZlcnNldFRh
c2s6OnRpbWVyRmlyZWQoKQotewotICAgIC8vIFRoZSB0aW1lciBpcyBzdG9wcGVkIG9uIG1fY3Nz
QWdlbnQgZGVzdHJ1Y3Rpb24sIHNvIHRoaXMgbWV0aG9kIHdpbGwgbmV2ZXIgYmUgY2FsbGVkIGFm
dGVyIG1fY3NzQWdlbnQgaGFzIGJlZW4gZGVzdHJveWVkLgotICAgIGZvciAoYXV0byYgbmFtZWRG
bG93IDogbV9uYW1lZEZsb3dzKQotICAgICAgICBtX2Nzc0FnZW50LT5yZWdpb25PdmVyc2V0Q2hh
bmdlZChuYW1lZEZsb3cua2V5LCBuYW1lZEZsb3cudmFsdWUpOwotCi0gICAgbV9uYW1lZEZsb3dz
LmNsZWFyKCk7Ci19Ci0KIGNsYXNzIEluc3BlY3RvckNTU0FnZW50OjpTdHlsZVNoZWV0QWN0aW9u
IDogcHVibGljIEluc3BlY3Rvckhpc3Rvcnk6OkFjdGlvbiB7CiAgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoU3R5bGVTaGVldEFjdGlvbik7CiBwdWJsaWM6CkBAIC0zODUsOSArMzM1LDYgQEAgdm9p
ZCBJbnNwZWN0b3JDU1NBZ2VudDo6cmVzZXQoKQogCiB2b2lkIEluc3BlY3RvckNTU0FnZW50Ojpy
ZXNldE5vblBlcnNpc3RlbnREYXRhKCkKIHsKLSAgICBtX25hbWVkRmxvd0NvbGxlY3Rpb25zUmVx
dWVzdGVkLmNsZWFyKCk7Ci0gICAgaWYgKG1fY2hhbmdlUmVnaW9uT3ZlcnNldFRhc2spCi0gICAg
ICAgIG1fY2hhbmdlUmVnaW9uT3ZlcnNldFRhc2stPnJlc2V0KCk7CiAgICAgcmVzZXRQc2V1ZG9T
dGF0ZXMoKTsKIH0KIApAQCAtNDU4LDc3ICs0MDUsNiBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50
OjpzZXRBY3RpdmVTdHlsZVNoCiAgICAgfQogfQogCi12b2lkIEluc3BlY3RvckNTU0FnZW50Ojpk
aWRDcmVhdGVOYW1lZEZsb3coRG9jdW1lbnQmIGRvY3VtZW50LCBXZWJLaXROYW1lZEZsb3cmIG5h
bWVkRmxvdykKLXsKLSAgICBpbnQgZG9jdW1lbnROb2RlSWQgPSBkb2N1bWVudE5vZGVXaXRoUmVx
dWVzdGVkRmxvd3NJZCgmZG9jdW1lbnQpOwotICAgIGlmICghZG9jdW1lbnROb2RlSWQpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIEVycm9yU3RyaW5nIHVudXNlZDsKLSAgICBtX2Zyb250ZW5kRGlz
cGF0Y2hlci0+bmFtZWRGbG93Q3JlYXRlZChidWlsZE9iamVjdEZvck5hbWVkRmxvdyh1bnVzZWQs
ICZuYW1lZEZsb3csIGRvY3VtZW50Tm9kZUlkKSk7Ci19Ci0KLXZvaWQgSW5zcGVjdG9yQ1NTQWdl
bnQ6OndpbGxSZW1vdmVOYW1lZEZsb3coRG9jdW1lbnQmIGRvY3VtZW50LCBXZWJLaXROYW1lZEZs
b3cmIG5hbWVkRmxvdykKLXsKLSAgICBpbnQgZG9jdW1lbnROb2RlSWQgPSBkb2N1bWVudE5vZGVX
aXRoUmVxdWVzdGVkRmxvd3NJZCgmZG9jdW1lbnQpOwotICAgIGlmICghZG9jdW1lbnROb2RlSWQp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChtX2NoYW5nZVJlZ2lvbk92ZXJzZXRUYXNrKQot
ICAgICAgICBtX2NoYW5nZVJlZ2lvbk92ZXJzZXRUYXNrLT51bnNjaGVkdWxlKCZuYW1lZEZsb3cp
OwotCi0gICAgbV9mcm9udGVuZERpc3BhdGNoZXItPm5hbWVkRmxvd1JlbW92ZWQoZG9jdW1lbnRO
b2RlSWQsIG5hbWVkRmxvdy5uYW1lKCkuc3RyaW5nKCkpOwotfQotCi12b2lkIEluc3BlY3RvckNT
U0FnZW50OjpkaWRDaGFuZ2VSZWdpb25PdmVyc2V0KERvY3VtZW50JiBkb2N1bWVudCwgV2ViS2l0
TmFtZWRGbG93JiBuYW1lZEZsb3cpCi17Ci0gICAgaW50IGRvY3VtZW50Tm9kZUlkID0gZG9jdW1l
bnROb2RlV2l0aFJlcXVlc3RlZEZsb3dzSWQoJmRvY3VtZW50KTsKLSAgICBpZiAoIWRvY3VtZW50
Tm9kZUlkKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoIW1fY2hhbmdlUmVnaW9uT3ZlcnNl
dFRhc2spCi0gICAgICAgIG1fY2hhbmdlUmVnaW9uT3ZlcnNldFRhc2sgPSBzdGQ6Om1ha2VfdW5p
cXVlPENoYW5nZVJlZ2lvbk92ZXJzZXRUYXNrPih0aGlzKTsKLSAgICBtX2NoYW5nZVJlZ2lvbk92
ZXJzZXRUYXNrLT5zY2hlZHVsZUZvcigmbmFtZWRGbG93LCBkb2N1bWVudE5vZGVJZCk7Ci19Ci0K
LXZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OnJlZ2lvbk92ZXJzZXRDaGFuZ2VkKFdlYktpdE5hbWVk
RmxvdyogbmFtZWRGbG93LCBpbnQgZG9jdW1lbnROb2RlSWQpCi17Ci0gICAgaWYgKG5hbWVkRmxv
dy0+Zmxvd1N0YXRlKCkgPT0gV2ViS2l0TmFtZWRGbG93OjpGbG93U3RhdGVOdWxsKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBFcnJvclN0cmluZyB1bnVzZWQ7Ci0gICAgUmVmPFdlYktpdE5hbWVk
Rmxvdz4gcHJvdGVjdCgqbmFtZWRGbG93KTsKLQotICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5y
ZWdpb25PdmVyc2V0Q2hhbmdlZChidWlsZE9iamVjdEZvck5hbWVkRmxvdyh1bnVzZWQsIG5hbWVk
RmxvdywgZG9jdW1lbnROb2RlSWQpKTsKLX0KLQotdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6ZGlk
UmVnaXN0ZXJOYW1lZEZsb3dDb250ZW50RWxlbWVudChEb2N1bWVudCYgZG9jdW1lbnQsIFdlYktp
dE5hbWVkRmxvdyYgbmFtZWRGbG93LCBOb2RlJiBjb250ZW50RWxlbWVudCwgTm9kZSogbmV4dENv
bnRlbnRFbGVtZW50KQotewotICAgIGludCBkb2N1bWVudE5vZGVJZCA9IGRvY3VtZW50Tm9kZVdp
dGhSZXF1ZXN0ZWRGbG93c0lkKCZkb2N1bWVudCk7Ci0gICAgaWYgKCFkb2N1bWVudE5vZGVJZCkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgRXJyb3JTdHJpbmcgdW51c2VkOwotICAgIGludCBjb250
ZW50RWxlbWVudE5vZGVJZCA9IG1fZG9tQWdlbnQtPnB1c2hOb2RlVG9Gcm9udGVuZCh1bnVzZWQs
IGRvY3VtZW50Tm9kZUlkLCAmY29udGVudEVsZW1lbnQpOwotICAgIGludCBuZXh0Q29udGVudEVs
ZW1lbnROb2RlSWQgPSBuZXh0Q29udGVudEVsZW1lbnQgPyBtX2RvbUFnZW50LT5wdXNoTm9kZVRv
RnJvbnRlbmQodW51c2VkLCBkb2N1bWVudE5vZGVJZCwgbmV4dENvbnRlbnRFbGVtZW50KSA6IDA7
Ci0gICAgbV9mcm9udGVuZERpc3BhdGNoZXItPnJlZ2lzdGVyZWROYW1lZEZsb3dDb250ZW50RWxl
bWVudChkb2N1bWVudE5vZGVJZCwgbmFtZWRGbG93Lm5hbWUoKS5zdHJpbmcoKSwgY29udGVudEVs
ZW1lbnROb2RlSWQsIG5leHRDb250ZW50RWxlbWVudE5vZGVJZCk7Ci19Ci0KLXZvaWQgSW5zcGVj
dG9yQ1NTQWdlbnQ6OmRpZFVucmVnaXN0ZXJOYW1lZEZsb3dDb250ZW50RWxlbWVudChEb2N1bWVu
dCYgZG9jdW1lbnQsIFdlYktpdE5hbWVkRmxvdyYgbmFtZWRGbG93LCBOb2RlJiBjb250ZW50RWxl
bWVudCkKLXsKLSAgICBpbnQgZG9jdW1lbnROb2RlSWQgPSBkb2N1bWVudE5vZGVXaXRoUmVxdWVz
dGVkRmxvd3NJZCgmZG9jdW1lbnQpOwotICAgIGlmICghZG9jdW1lbnROb2RlSWQpCi0gICAgICAg
IHJldHVybjsKLQotICAgIEVycm9yU3RyaW5nIHVudXNlZDsKLSAgICBpbnQgY29udGVudEVsZW1l
bnROb2RlSWQgPSBtX2RvbUFnZW50LT5wdXNoTm9kZVRvRnJvbnRlbmQodW51c2VkLCBkb2N1bWVu
dE5vZGVJZCwgJmNvbnRlbnRFbGVtZW50KTsKLSAgICBpZiAoIWNvbnRlbnRFbGVtZW50Tm9kZUlk
KSB7Ci0gICAgICAgIC8vIFdlJ3ZlIGFscmVhZHkgbm90aWZpZWQgdGhhdCB0aGUgRE9NIG5vZGUg
d2FzIHJlbW92ZWQgZnJvbSB0aGUgRE9NLCBzbyB0aGVyZSdzIG5vIG5lZWQgdG8gc2VuZCBhbm90
aGVyIGV2ZW50LgotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIG1fZnJvbnRlbmREaXNwYXRj
aGVyLT51bnJlZ2lzdGVyZWROYW1lZEZsb3dDb250ZW50RWxlbWVudChkb2N1bWVudE5vZGVJZCwg
bmFtZWRGbG93Lm5hbWUoKS5zdHJpbmcoKSwgY29udGVudEVsZW1lbnROb2RlSWQpOwotfQotCiBi
b29sIEluc3BlY3RvckNTU0FnZW50Ojpmb3JjZVBzZXVkb1N0YXRlKGNvbnN0IEVsZW1lbnQmIGVs
ZW1lbnQsIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc1R5cGUgcHNldWRvQ2xhc3NUeXBlKQogewog
ICAgIGlmIChtX25vZGVJZFRvRm9yY2VkUHNldWRvU3RhdGUuaXNFbXB0eSgpKQpAQCAtOTAxLDIx
ICs3NzcsOCBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50Ojpmb3JjZVBzZXVkb1N0YXRlCiAgICAg
ZWxlbWVudC0+ZG9jdW1lbnQoKS5zdHlsZVNjb3BlKCkuZGlkQ2hhbmdlU3R5bGVTaGVldEVudmly
b25tZW50KCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldE5hbWVkRmxvd0NvbGxl
Y3Rpb24oRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBpbnQgZG9jdW1lbnROb2RlSWQsIFJlZlB0
cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6Ok5h
bWVkRmxvdz4+JiByZXN1bHQpCit2b2lkIEluc3BlY3RvckNTU0FnZW50OjpnZXROYW1lZEZsb3dD
b2xsZWN0aW9uKEVycm9yU3RyaW5nJiwgaW50LCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6
QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpOYW1lZEZsb3c+PiYpCiB7Ci0gICAgRG9j
dW1lbnQqIGRvY3VtZW50ID0gbV9kb21BZ2VudC0+YXNzZXJ0RG9jdW1lbnQoZXJyb3JTdHJpbmcs
IGRvY3VtZW50Tm9kZUlkKTsKLSAgICBpZiAoIWRvY3VtZW50KQotICAgICAgICByZXR1cm47Ci0K
LSAgICBtX25hbWVkRmxvd0NvbGxlY3Rpb25zUmVxdWVzdGVkLmFkZChkb2N1bWVudE5vZGVJZCk7
Ci0KLSAgICBWZWN0b3I8UmVmUHRyPFdlYktpdE5hbWVkRmxvdz4+IG5hbWVkRmxvd3NWZWN0b3Ig
PSBkb2N1bWVudC0+bmFtZWRGbG93cygpLm5hbWVkRmxvd3MoKTsKLSAgICBhdXRvIG5hbWVkRmxv
d3MgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6
Ok5hbWVkRmxvdz46OmNyZWF0ZSgpOwotCi0gICAgZm9yIChhdXRvJiBuYW1lZEZsb3cgOiBuYW1l
ZEZsb3dzVmVjdG9yKQotICAgICAgICBuYW1lZEZsb3dzLT5hZGRJdGVtKGJ1aWxkT2JqZWN0Rm9y
TmFtZWRGbG93KGVycm9yU3RyaW5nLCBuYW1lZEZsb3cuZ2V0KCksIGRvY3VtZW50Tm9kZUlkKSk7
Ci0KLSAgICByZXN1bHQgPSBXVEZNb3ZlKG5hbWVkRmxvd3MpOwogfQogCiBJbnNwZWN0b3JTdHls
ZVNoZWV0Rm9ySW5saW5lU3R5bGUmIEluc3BlY3RvckNTU0FnZW50Ojphc0luc3BlY3RvclN0eWxl
U2hlZXQoU3R5bGVkRWxlbWVudCYgZWxlbWVudCkKQEAgLTk0NywxNSArODEwLDYgQEAgRWxlbWVu
dCogSW5zcGVjdG9yQ1NTQWdlbnQ6OmVsZW1lbnRGb3JJZAogICAgIHJldHVybiBkb3duY2FzdDxF
bGVtZW50Pihub2RlKTsKIH0KIAotaW50IEluc3BlY3RvckNTU0FnZW50Ojpkb2N1bWVudE5vZGVX
aXRoUmVxdWVzdGVkRmxvd3NJZChEb2N1bWVudCogZG9jdW1lbnQpCi17Ci0gICAgaW50IGRvY3Vt
ZW50Tm9kZUlkID0gbV9kb21BZ2VudC0+Ym91bmROb2RlSWQoZG9jdW1lbnQpOwotICAgIGlmICgh
ZG9jdW1lbnROb2RlSWQgfHwgIW1fbmFtZWRGbG93Q29sbGVjdGlvbnNSZXF1ZXN0ZWQuY29udGFp
bnMoZG9jdW1lbnROb2RlSWQpKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIHJldHVybiBkb2N1
bWVudE5vZGVJZDsKLX0KLQogU3RyaW5nIEluc3BlY3RvckNTU0FnZW50Ojp1bmJpbmRTdHlsZVNo
ZWV0KEluc3BlY3RvclN0eWxlU2hlZXQqIGluc3BlY3RvclN0eWxlU2hlZXQpCiB7CiAgICAgU3Ry
aW5nIGlkID0gaW5zcGVjdG9yU3R5bGVTaGVldC0+aWQoKTsKQEAgLTEwOTIsNjEgKzk0Niw2IEBA
IFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1N0eWwKICAgICByZXR1cm4gaW5z
cGVjdG9yU3R5bGUtPmJ1aWxkT2JqZWN0Rm9yU3R5bGUoKTsKIH0KIAotUmVmUHRyPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6UmVnaW9uPj4gSW5z
cGVjdG9yQ1NTQWdlbnQ6OmJ1aWxkQXJyYXlGb3JSZWdpb25zKEVycm9yU3RyaW5nJiBlcnJvclN0
cmluZywgUmVmUHRyPE5vZGVMaXN0PiYmIHJlZ2lvbkxpc3QsIGludCBkb2N1bWVudE5vZGVJZCkK
LXsKLSAgICBhdXRvIHJlZ2lvbnMgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0
b3I6OlByb3RvY29sOjpDU1M6OlJlZ2lvbj46OmNyZWF0ZSgpOwotCi0gICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IHJlZ2lvbkxpc3QtPmxlbmd0aCgpOyArK2kpIHsKLSAgICAgICAgSW5zcGVj
dG9yOjpQcm90b2NvbDo6Q1NTOjpSZWdpb246OlJlZ2lvbk92ZXJzZXQgcmVnaW9uT3ZlcnNldDsK
LQotICAgICAgICBzd2l0Y2ggKGRvd25jYXN0PEVsZW1lbnQ+KHJlZ2lvbkxpc3QtPml0ZW0oaSkp
LT5yZWdpb25PdmVyc2V0U3RhdGUoKSkgewotICAgICAgICBjYXNlIFJlZ2lvbkZpdDoKLSAgICAg
ICAgICAgIHJlZ2lvbk92ZXJzZXQgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OlJlZ2lvbjo6
UmVnaW9uT3ZlcnNldDo6Rml0OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgUmVn
aW9uRW1wdHk6Ci0gICAgICAgICAgICByZWdpb25PdmVyc2V0ID0gSW5zcGVjdG9yOjpQcm90b2Nv
bDo6Q1NTOjpSZWdpb246OlJlZ2lvbk92ZXJzZXQ6OkVtcHR5OwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIGNhc2UgUmVnaW9uT3ZlcnNldDoKLSAgICAgICAgICAgIHJlZ2lvbk92ZXJzZXQg
PSBJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OlJlZ2lvbjo6UmVnaW9uT3ZlcnNldDo6T3ZlcnNl
dDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFJlZ2lvblVuZGVmaW5lZDoKLSAg
ICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotCi0gICAg
ICAgIGF1dG8gcmVnaW9uID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpSZWdpb246OmNyZWF0
ZSgpCi0gICAgICAgICAgICAuc2V0UmVnaW9uT3ZlcnNldChyZWdpb25PdmVyc2V0KQotICAgICAg
ICAgICAgLy8gZG9jdW1lbnROb2RlSWQgd2FzIHByZXZpb3VzbHkgYXNzZXJ0ZWQKLSAgICAgICAg
ICAgIC5zZXROb2RlSWQobV9kb21BZ2VudC0+cHVzaE5vZGVUb0Zyb250ZW5kKGVycm9yU3RyaW5n
LCBkb2N1bWVudE5vZGVJZCwgcmVnaW9uTGlzdC0+aXRlbShpKSkpCi0gICAgICAgICAgICAucmVs
ZWFzZSgpOwotCi0gICAgICAgIHJlZ2lvbnMtPmFkZEl0ZW0oV1RGTW92ZShyZWdpb24pKTsKLSAg
ICB9Ci0KLSAgICByZXR1cm4gV1RGTW92ZShyZWdpb25zKTsKLX0KLQotUmVmUHRyPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkNTUzo6TmFtZWRGbG93PiBJbnNwZWN0b3JDU1NBZ2VudDo6YnVpbGRPYmpl
Y3RGb3JOYW1lZEZsb3coRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBXZWJLaXROYW1lZEZsb3cq
IHdlYmtpdE5hbWVkRmxvdywgaW50IGRvY3VtZW50Tm9kZUlkKQotewotICAgIFJlZlB0cjxOb2Rl
TGlzdD4gY29udGVudExpc3QgPSB3ZWJraXROYW1lZEZsb3ctPmdldENvbnRlbnQoKTsKLSAgICBh
dXRvIGNvbnRlbnQgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxpbnQ+OjpjcmVhdGUoKTsK
LQotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjb250ZW50TGlzdC0+bGVuZ3RoKCk7ICsr
aSkgewotICAgICAgICAvLyBkb2N1bWVudE5vZGVJZCB3YXMgcHJldmlvdXNseSBhc3NlcnRlZAot
ICAgICAgICBjb250ZW50LT5hZGRJdGVtKG1fZG9tQWdlbnQtPnB1c2hOb2RlVG9Gcm9udGVuZChl
cnJvclN0cmluZywgZG9jdW1lbnROb2RlSWQsIGNvbnRlbnRMaXN0LT5pdGVtKGkpKSk7Ci0gICAg
fQotCi0gICAgcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6TmFtZWRGbG93OjpjcmVh
dGUoKQotICAgICAgICAuc2V0RG9jdW1lbnROb2RlSWQoZG9jdW1lbnROb2RlSWQpCi0gICAgICAg
IC5zZXROYW1lKHdlYmtpdE5hbWVkRmxvdy0+bmFtZSgpLnN0cmluZygpKQotICAgICAgICAuc2V0
T3ZlcnNldCh3ZWJraXROYW1lZEZsb3ctPm92ZXJzZXQoKSkKLSAgICAgICAgLnNldENvbnRlbnQo
V1RGTW92ZShjb250ZW50KSkKLSAgICAgICAgLnNldFJlZ2lvbnMoYnVpbGRBcnJheUZvclJlZ2lv
bnMoZXJyb3JTdHJpbmcsIHdlYmtpdE5hbWVkRmxvdy0+Z2V0UmVnaW9ucygpLCBkb2N1bWVudE5v
ZGVJZCkpCi0gICAgICAgIC5yZWxlYXNlKCk7Ci19Ci0KIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6
OmRpZFJlbW92ZURPTU5vZGUoTm9kZSYgbm9kZSwgaW50IG5vZGVJZCkKIHsKICAgICBtX25vZGVJ
ZFRvRm9yY2VkUHNldWRvU3RhdGUucmVtb3ZlKG5vZGVJZCk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuaAkocmV2aXNpb24gMjIyMjU3KQorKysg
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQ3LDE0ICs0NywxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDU1NSdWxl
OwogY2xhc3MgQ1NTU3R5bGVSdWxlOwogY2xhc3MgQ1NTU3R5bGVTaGVldDsKLWNsYXNzIENoYW5n
ZVJlZ2lvbk92ZXJzZXRUYXNrOwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBFbGVtZW50OwogY2xh
c3MgTm9kZTsKIGNsYXNzIE5vZGVMaXN0OwogY2xhc3MgU3R5bGVSZXNvbHZlcjsKIGNsYXNzIFN0
eWxlUnVsZTsKLWNsYXNzIFdlYktpdE5hbWVkRmxvdzsKIAogY2xhc3MgSW5zcGVjdG9yQ1NTQWdl
bnQgZmluYWwKICAgICA6IHB1YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2UKQEAgLTkxLDE4ICs4OSwx
MiBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaXNjYXJkQWdlbnQoKSBvdmVycmlkZTsKICAgICB2b2lk
IGVuYWJsZShFcnJvclN0cmluZyYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlzYWJsZShFcnJvclN0
cmluZyYpIG92ZXJyaWRlOwotICAgIHZvaWQgcmVnaW9uT3ZlcnNldENoYW5nZWQoV2ViS2l0TmFt
ZWRGbG93KiwgaW50IGRvY3VtZW50Tm9kZUlkKTsKICAgICB2b2lkIHJlc2V0KCk7CiAKICAgICAv
LyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24KICAgICB2b2lkIGRvY3VtZW50RGV0YWNoZWQoRG9j
dW1lbnQmKTsKICAgICB2b2lkIG1lZGlhUXVlcnlSZXN1bHRDaGFuZ2VkKCk7CiAgICAgdm9pZCBh
Y3RpdmVTdHlsZVNoZWV0c1VwZGF0ZWQoRG9jdW1lbnQmKTsKLSAgICB2b2lkIGRpZENyZWF0ZU5h
bWVkRmxvdyhEb2N1bWVudCYsIFdlYktpdE5hbWVkRmxvdyYpOwotICAgIHZvaWQgd2lsbFJlbW92
ZU5hbWVkRmxvdyhEb2N1bWVudCYsIFdlYktpdE5hbWVkRmxvdyYpOwotICAgIHZvaWQgZGlkQ2hh
bmdlUmVnaW9uT3ZlcnNldChEb2N1bWVudCYsIFdlYktpdE5hbWVkRmxvdyYpOwotICAgIHZvaWQg
ZGlkUmVnaXN0ZXJOYW1lZEZsb3dDb250ZW50RWxlbWVudChEb2N1bWVudCYsIFdlYktpdE5hbWVk
RmxvdyYsIE5vZGUmIGNvbnRlbnRFbGVtZW50LCBOb2RlKiBuZXh0Q29udGVudEVsZW1lbnQgPSBu
dWxscHRyKTsKLSAgICB2b2lkIGRpZFVucmVnaXN0ZXJOYW1lZEZsb3dDb250ZW50RWxlbWVudChE
b2N1bWVudCYsIFdlYktpdE5hbWVkRmxvdyYsIE5vZGUmIGNvbnRlbnRFbGVtZW50KTsKICAgICBi
b29sIGZvcmNlUHNldWRvU3RhdGUoY29uc3QgRWxlbWVudCYsIENTU1NlbGVjdG9yOjpQc2V1ZG9D
bGFzc1R5cGUpOwogCiAgICAgdm9pZCBnZXRDb21wdXRlZFN0eWxlRm9yTm9kZShFcnJvclN0cmlu
ZyYsIGludCBub2RlSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0
b3I6OlByb3RvY29sOjpDU1M6OkNTU0NvbXB1dGVkU3R5bGVQcm9wZXJ0eT4+Jikgb3ZlcnJpZGU7
CkBAIC0xMzcsNyArMTI5LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlc2V0Tm9uUGVyc2lzdGVu
dERhdGEoKTsKICAgICBJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGUmIGFzSW5zcGVj
dG9yU3R5bGVTaGVldChTdHlsZWRFbGVtZW50Jik7CiAgICAgRWxlbWVudCogZWxlbWVudEZvcklk
KEVycm9yU3RyaW5nJiwgaW50IG5vZGVJZCk7Ci0gICAgaW50IGRvY3VtZW50Tm9kZVdpdGhSZXF1
ZXN0ZWRGbG93c0lkKERvY3VtZW50Kik7CiAKICAgICB2b2lkIGNvbGxlY3RBbGxTdHlsZVNoZWV0
cyhWZWN0b3I8SW5zcGVjdG9yU3R5bGVTaGVldCo+Jik7CiAgICAgdm9pZCBjb2xsZWN0QWxsRG9j
dW1lbnRTdHlsZVNoZWV0cyhEb2N1bWVudCYsIFZlY3RvcjxDU1NTdHlsZVNoZWV0Kj4mKTsKQEAg
LTE1NCw4ICsxNDUsNiBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29s
OjpDU1M6OkNTU1J1bGU+IGJ1aWxkT2JqZWN0Rm9yUnVsZShDU1NTdHlsZVJ1bGUqKTsKICAgICBS
ZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NT
OjpSdWxlTWF0Y2g+PiBidWlsZEFycmF5Rm9yTWF0Y2hlZFJ1bGVMaXN0KGNvbnN0IFZlY3RvcjxS
ZWZQdHI8U3R5bGVSdWxlPj4mLCBTdHlsZVJlc29sdmVyJiwgRWxlbWVudCYsIFBzZXVkb0lkKTsK
ICAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NTdHlsZT4gYnVpbGRPYmpl
Y3RGb3JBdHRyaWJ1dGVzU3R5bGUoU3R5bGVkRWxlbWVudCYpOwotICAgIFJlZlB0cjxJbnNwZWN0
b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OlJlZ2lvbj4+IGJ1
aWxkQXJyYXlGb3JSZWdpb25zKEVycm9yU3RyaW5nJiwgUmVmUHRyPE5vZGVMaXN0PiYmLCBpbnQg
ZG9jdW1lbnROb2RlSWQpOwotICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6Ok5h
bWVkRmxvdz4gYnVpbGRPYmplY3RGb3JOYW1lZEZsb3coRXJyb3JTdHJpbmcmLCBXZWJLaXROYW1l
ZEZsb3cqLCBpbnQgZG9jdW1lbnROb2RlSWQpOwogCiAgICAgLy8gSW5zcGVjdG9yRE9NQWdlbnQ6
OkRPTUxpc3RlbmVyIGltcGxlbWVudGF0aW9uCiAgICAgdm9pZCBkaWRSZW1vdmVET01Ob2RlKE5v
ZGUmLCBpbnQgbm9kZUlkKSBvdmVycmlkZTsKQEAgLTE3Nyw4ICsxNjYsNiBAQCBwcml2YXRlOgog
ICAgIEhhc2hNYXA8RG9jdW1lbnQqLCBIYXNoU2V0PENTU1N0eWxlU2hlZXQqPj4gbV9kb2N1bWVu
dFRvS25vd25DU1NTdHlsZVNoZWV0czsKICAgICBOb2RlSWRUb0ZvcmNlZFBzZXVkb1N0YXRlIG1f
bm9kZUlkVG9Gb3JjZWRQc2V1ZG9TdGF0ZTsKICAgICBIYXNoU2V0PERvY3VtZW50Kj4gbV9kb2N1
bWVudHNXaXRoRm9yY2VkUHNldWRvU3RhdGVzOwotICAgIEhhc2hTZXQ8aW50PiBtX25hbWVkRmxv
d0NvbGxlY3Rpb25zUmVxdWVzdGVkOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxDaGFuZ2VSZWdpb25P
dmVyc2V0VGFzaz4gbV9jaGFuZ2VSZWdpb25PdmVyc2V0VGFzazsKIAogICAgIGludCBtX2xhc3RT
dHlsZVNoZWV0SWQgeyAxIH07CiAgICAgYm9vbCBtX2NyZWF0aW5nVmlhSW5zcGVjdG9yU3R5bGVT
aGVldCB7IGZhbHNlIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAkocmV2aXNpb24gMjIyMjU3KQorKysgU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI0OSw0MiArMjQ5LDYgQEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OnBzZXVkb0VsZQogICAgICAgICBsYXllclRyZWVBZ2VudC0+cHNldWRvRWxlbWVudERlc3Ry
b3llZChwc2V1ZG9FbGVtZW50KTsKIH0KIAotdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmRpZENyZWF0ZU5hbWVkRmxvd0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGlu
Z0FnZW50cywgRG9jdW1lbnQqIGRvY3VtZW50LCBXZWJLaXROYW1lZEZsb3cmIG5hbWVkRmxvdykK
LXsKLSAgICBpZiAoIWRvY3VtZW50KQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoSW5zcGVj
dG9yQ1NTQWdlbnQqIGNzc0FnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JDU1NB
Z2VudCgpKQotICAgICAgICBjc3NBZ2VudC0+ZGlkQ3JlYXRlTmFtZWRGbG93KCpkb2N1bWVudCwg
bmFtZWRGbG93KTsKLX0KLQotdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxSZW1v
dmVOYW1lZEZsb3dJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMs
IERvY3VtZW50KiBkb2N1bWVudCwgV2ViS2l0TmFtZWRGbG93JiBuYW1lZEZsb3cpCi17Ci0gICAg
aWYgKCFkb2N1bWVudCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKEluc3BlY3RvckNTU0Fn
ZW50KiBjc3NBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yQ1NTQWdlbnQoKSkK
LSAgICAgICAgY3NzQWdlbnQtPndpbGxSZW1vdmVOYW1lZEZsb3coKmRvY3VtZW50LCBuYW1lZEZs
b3cpOwotfQotCi12b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ2hhbmdlUmVnaW9u
T3ZlcnNldEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgRG9j
dW1lbnQmIGRvY3VtZW50LCBXZWJLaXROYW1lZEZsb3cmIG5hbWVkRmxvdykKLXsKLSAgICBpZiAo
SW5zcGVjdG9yQ1NTQWdlbnQqIGNzc0FnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0
b3JDU1NBZ2VudCgpKQotICAgICAgICBjc3NBZ2VudC0+ZGlkQ2hhbmdlUmVnaW9uT3ZlcnNldChk
b2N1bWVudCwgbmFtZWRGbG93KTsKLX0KLQotdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmRpZFJlZ2lzdGVyTmFtZWRGbG93Q29udGVudEVsZW1lbnRJbXBsKEluc3RydW1lbnRpbmdBZ2Vu
dHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIERvY3VtZW50JiBkb2N1bWVudCwgV2ViS2l0TmFtZWRG
bG93JiBuYW1lZEZsb3csIE5vZGUmIGNvbnRlbnRFbGVtZW50LCBOb2RlKiBuZXh0Q29udGVudEVs
ZW1lbnQpCi17Ci0gICAgaWYgKEluc3BlY3RvckNTU0FnZW50KiBjc3NBZ2VudCA9IGluc3RydW1l
bnRpbmdBZ2VudHMuaW5zcGVjdG9yQ1NTQWdlbnQoKSkKLSAgICAgICAgY3NzQWdlbnQtPmRpZFJl
Z2lzdGVyTmFtZWRGbG93Q29udGVudEVsZW1lbnQoZG9jdW1lbnQsIG5hbWVkRmxvdywgY29udGVu
dEVsZW1lbnQsIG5leHRDb250ZW50RWxlbWVudCk7Ci19Ci0KLXZvaWQgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpkaWRVbnJlZ2lzdGVyTmFtZWRGbG93Q29udGVudEVsZW1lbnRJbXBsKEluc3Ry
dW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIERvY3VtZW50JiBkb2N1bWVudCwg
V2ViS2l0TmFtZWRGbG93JiBuYW1lZEZsb3csIE5vZGUmIGNvbnRlbnRFbGVtZW50KQotewotICAg
IGlmIChJbnNwZWN0b3JDU1NBZ2VudCogY3NzQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmlu
c3BlY3RvckNTU0FnZW50KCkpCi0gICAgICAgIGNzc0FnZW50LT5kaWRVbnJlZ2lzdGVyTmFtZWRG
bG93Q29udGVudEVsZW1lbnQoZG9jdW1lbnQsIG5hbWVkRmxvdywgY29udGVudEVsZW1lbnQpOwot
fQotCiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6bW91c2VEaWRNb3ZlT3ZlckVsZW1l
bnRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIGNvbnN0IEhp
dFRlc3RSZXN1bHQmIHJlc3VsdCwgdW5zaWduZWQgbW9kaWZpZXJGbGFncykKIHsKICAgICBpZiAo
SW5zcGVjdG9yRE9NQWdlbnQqIGRvbUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0
b3JET01BZ2VudCgpKQpJbmRleDogU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92
ZXJsYXkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JPdmVybGF5LmNwcAkocmV2aXNpb24gMjIyMjU3KQorKysgU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MSw4ICs1MSw2IEBA
CiAjaW5jbHVkZSAiUmVuZGVyRWxlbWVudC5oIgogI2luY2x1ZGUgIlJlbmRlckZsb3dUaHJlYWQu
aCIKICNpbmNsdWRlICJSZW5kZXJJbmxpbmUuaCIKLSNpbmNsdWRlICJSZW5kZXJOYW1lZEZsb3dG
cmFnbWVudC5oIgotI2luY2x1ZGUgIlJlbmRlck5hbWVkRmxvd1RocmVhZC5oIgogI2luY2x1ZGUg
IlJlbmRlclJlZ2lvbi5oIgogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKICNpbmNsdWRlICJTY3Jp
cHRDb250cm9sbGVyLmgiCkBAIC0xMjAsNyArMTE4LDcgQEAgc3RhdGljIHZvaWQgYnVpbGRSZW5k
ZXJlckhpZ2hsaWdodChSZW5kZQogICAgICAgICAgICAgICAgIG1hcmdpbnMuZW5kKHJlbmRlckJv
eC5zdHlsZSgpLndyaXRpbmdNb2RlKCkpID0gY29tcHV0ZWRWYWx1ZXMubV9tYXJnaW5zLm1fZW5k
OwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBwYWRkaW5nQm94ID0gcmVuZGVyQm94LmNs
aWVudEJveFJlY3RJblJlZ2lvbihyZWdpb24pOworICAgICAgICAgICAgcGFkZGluZ0JveCA9IHJl
bmRlckJveC5jbGllbnRCb3hSZWN0KCk7CiAgICAgICAgICAgICBjb250ZW50Qm94ID0gTGF5b3V0
UmVjdChwYWRkaW5nQm94LngoKSArIHJlbmRlckJveC5wYWRkaW5nTGVmdCgpLCBwYWRkaW5nQm94
LnkoKSArIHJlbmRlckJveC5wYWRkaW5nVG9wKCksCiAgICAgICAgICAgICAgICAgcGFkZGluZ0Jv
eC53aWR0aCgpIC0gcmVuZGVyQm94LnBhZGRpbmdMZWZ0KCkgLSByZW5kZXJCb3gucGFkZGluZ1Jp
Z2h0KCksIHBhZGRpbmdCb3guaGVpZ2h0KCkgLSByZW5kZXJCb3gucGFkZGluZ1RvcCgpIC0gcmVu
ZGVyQm94LnBhZGRpbmdCb3R0b20oKSk7CiAgICAgICAgICAgICBib3JkZXJCb3ggPSBMYXlvdXRS
ZWN0KHBhZGRpbmdCb3gueCgpIC0gcmVuZGVyQm94LmJvcmRlckxlZnQoKSwgcGFkZGluZ0JveC55
KCkgLSByZW5kZXJCb3guYm9yZGVyVG9wKCksCkBAIC0zOTUsNjggKzM5Myw2IEBAIHN0YXRpYyBS
ZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6T3ZlcmxheVQKICAgICAgICAgLnJlbGVhc2UoKTsKIH0K
IAotc3RhdGljIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpPdmVybGF5VHlwZXM6OlJlZ2lv
bj4gYnVpbGRPYmplY3RGb3JSZWdpb24oRnJhbWVWaWV3KiBtYWluVmlldywgUmVuZGVyUmVnaW9u
KiByZWdpb24pCi17Ci0gICAgRnJhbWVWaWV3KiBjb250YWluaW5nVmlldyA9IHJlZ2lvbi0+ZnJh
bWUoKS52aWV3KCk7Ci0gICAgaWYgKCFjb250YWluaW5nVmlldykKLSAgICAgICAgcmV0dXJuIG51
bGxwdHI7Ci0KLSAgICBSZW5kZXJCbG9ja0Zsb3cmIHJlZ2lvbkNvbnRhaW5lciA9IGRvd25jYXN0
PFJlbmRlckJsb2NrRmxvdz4oKnJlZ2lvbi0+cGFyZW50KCkpOwotICAgIExheW91dFJlY3QgYm9y
ZGVyQm94ID0gcmVnaW9uQ29udGFpbmVyLmJvcmRlckJveFJlY3QoKTsKLSAgICBib3JkZXJCb3gu
c2V0V2lkdGgoYm9yZGVyQm94LndpZHRoKCkgKyByZWdpb25Db250YWluZXIudmVydGljYWxTY3Jv
bGxiYXJXaWR0aCgpKTsKLSAgICBib3JkZXJCb3guc2V0SGVpZ2h0KGJvcmRlckJveC5oZWlnaHQo
KSArIHJlZ2lvbkNvbnRhaW5lci5ob3Jpem9udGFsU2Nyb2xsYmFySGVpZ2h0KCkpOwotCi0gICAg
Ly8gQ3JlYXRlIGluY29taW5nIGFuZCBvdXRnb2luZyBib3hlcyB0aGF0IHdlIHVzZSB0byBjaGFp
biB0aGUgcmVnaW9ucyB0b2doZXRoZXIuCi0gICAgY29uc3QgTGF5b3V0U2l6ZSBsaW5rQm94U2l6
ZSgxMCwgMTApOwotICAgIGNvbnN0IExheW91dFNpemUgbGlua0JveE1pZHBvaW50KGxpbmtCb3hT
aXplLndpZHRoKCkgLyAyLCBsaW5rQm94U2l6ZS5oZWlnaHQoKSAvIDIpOwotCi0gICAgTGF5b3V0
UmVjdCBpbmNvbWluZ1JlY3RCb3ggPSBMYXlvdXRSZWN0KGJvcmRlckJveC5sb2NhdGlvbigpIC0g
bGlua0JveE1pZHBvaW50LCBsaW5rQm94U2l6ZSk7Ci0gICAgTGF5b3V0UmVjdCBvdXRnb2luZ1Jl
Y3RCb3ggPSBMYXlvdXRSZWN0KGJvcmRlckJveC5sb2NhdGlvbigpIC0gbGlua0JveE1pZHBvaW50
ICsgYm9yZGVyQm94LnNpemUoKSwgbGlua0JveFNpemUpOwotCi0gICAgLy8gTW92ZSB0aGUgbGlu
ayBib3hlcyBzbGlnaHRseSBpbnNpZGUgdGhlIHJlZ2lvbiBib3JkZXIgYm94LgotICAgIExheW91
dFVuaXQgbWF4VXNhYmxlSGVpZ2h0ID0gc3RkOjptYXgoTGF5b3V0VW5pdCgpLCBib3JkZXJCb3gu
aGVpZ2h0KCkgLSBsaW5rQm94TWlkcG9pbnQuaGVpZ2h0KCkpOwotICAgIExheW91dFVuaXQgbGlu
a0JveFZlcnRpY2FsT2Zmc2V0ID0gc3RkOjptaW4oTGF5b3V0VW5pdDo6ZnJvbVBpeGVsKDE1KSwg
bWF4VXNhYmxlSGVpZ2h0KTsKLSAgICBpbmNvbWluZ1JlY3RCb3gubW92ZSgwLCBsaW5rQm94VmVy
dGljYWxPZmZzZXQpOwotICAgIG91dGdvaW5nUmVjdEJveC5tb3ZlKDAsIC1saW5rQm94VmVydGlj
YWxPZmZzZXQpOwotCi0gICAgRmxvYXRRdWFkIGJvcmRlclJlY3RRdWFkID0gcmVnaW9uQ29udGFp
bmVyLmxvY2FsVG9BYnNvbHV0ZVF1YWQoRmxvYXRSZWN0KGJvcmRlckJveCkpOwotICAgIEZsb2F0
UXVhZCBpbmNvbWluZ1JlY3RRdWFkID0gcmVnaW9uQ29udGFpbmVyLmxvY2FsVG9BYnNvbHV0ZVF1
YWQoRmxvYXRSZWN0KGluY29taW5nUmVjdEJveCkpOwotICAgIEZsb2F0UXVhZCBvdXRnb2luZ1Jl
Y3RRdWFkID0gcmVnaW9uQ29udGFpbmVyLmxvY2FsVG9BYnNvbHV0ZVF1YWQoRmxvYXRSZWN0KG91
dGdvaW5nUmVjdEJveCkpOwotCi0gICAgY29udGVudHNRdWFkVG9QYWdlKG1haW5WaWV3LCBjb250
YWluaW5nVmlldywgYm9yZGVyUmVjdFF1YWQpOwotICAgIGNvbnRlbnRzUXVhZFRvUGFnZShtYWlu
VmlldywgY29udGFpbmluZ1ZpZXcsIGluY29taW5nUmVjdFF1YWQpOwotICAgIGNvbnRlbnRzUXVh
ZFRvUGFnZShtYWluVmlldywgY29udGFpbmluZ1ZpZXcsIG91dGdvaW5nUmVjdFF1YWQpOwotCi0g
ICAgcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok92ZXJsYXlUeXBlczo6UmVnaW9uOjpjcmVh
dGUoKQotICAgICAgICAuc2V0Qm9yZGVyUXVhZChidWlsZEFycmF5Rm9yUXVhZChib3JkZXJSZWN0
UXVhZCkpCi0gICAgICAgIC5zZXRJbmNvbWluZ1F1YWQoYnVpbGRBcnJheUZvclF1YWQoaW5jb21p
bmdSZWN0UXVhZCkpCi0gICAgICAgIC5zZXRPdXRnb2luZ1F1YWQoYnVpbGRBcnJheUZvclF1YWQo
b3V0Z29pbmdSZWN0UXVhZCkpCi0gICAgICAgIC5yZWxlYXNlKCk7Ci19Ci0KLXN0YXRpYyBSZWY8
SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6T3ZlcmxheVR5
cGVzOjpSZWdpb24+PiBidWlsZE9iamVjdEZvckZsb3dSZWdpb25zKFJlbmRlclJlZ2lvbiogcmVn
aW9uLCBSZW5kZXJGbG93VGhyZWFkKiBmbG93VGhyZWFkKQotewotICAgIEZyYW1lVmlldyogbWFp
bkZyYW1lVmlldyA9IHJlZ2lvbi0+ZG9jdW1lbnQoKS5wYWdlKCktPm1haW5GcmFtZSgpLnZpZXco
KTsKLQotICAgIGF1dG8gYXJyYXlPZlJlZ2lvbnMgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJh
eTxJbnNwZWN0b3I6OlByb3RvY29sOjpPdmVybGF5VHlwZXM6OlJlZ2lvbj46OmNyZWF0ZSgpOwot
Ci0gICAgY29uc3QgUmVuZGVyUmVnaW9uTGlzdCYgcmVnaW9uTGlzdCA9IGZsb3dUaHJlYWQtPnJl
bmRlclJlZ2lvbkxpc3QoKTsKLSAgICBmb3IgKGF1dG8mIGl0ZXJSZWdpb24gOiByZWdpb25MaXN0
KSB7Ci0gICAgICAgIGlmICghaXRlclJlZ2lvbi0+aXNWYWxpZCgpKQotICAgICAgICAgICAgY29u
dGludWU7Ci0gICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpPdmVybGF5VHlwZXM6
OlJlZ2lvbj4gcmVnaW9uT2JqZWN0ID0gYnVpbGRPYmplY3RGb3JSZWdpb24obWFpbkZyYW1lVmll
dywgaXRlclJlZ2lvbik7Ci0gICAgICAgIGlmICghcmVnaW9uT2JqZWN0KQotICAgICAgICAgICAg
Y29udGludWU7Ci0gICAgICAgIGlmIChyZWdpb24gPT0gaXRlclJlZ2lvbikgewotICAgICAgICAg
ICAgLy8gTGV0IHRoZSBzY3JpcHQga25vdyB0aGF0IHRoaXMgaXMgdGhlIGN1cnJlbnRseSBoaWdo
bGlnaHRlZCBub2RlLgotICAgICAgICAgICAgcmVnaW9uT2JqZWN0LT5zZXRJc0hpZ2hsaWdodGVk
KHRydWUpOwotICAgICAgICB9Ci0gICAgICAgIGFycmF5T2ZSZWdpb25zLT5hZGRJdGVtKFdURk1v
dmUocmVnaW9uT2JqZWN0KSk7Ci0gICAgfQotCi0gICAgcmV0dXJuIGFycmF5T2ZSZWdpb25zOwot
fQotCiBzdGF0aWMgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok92ZXJsYXlUeXBlczo6U2l6ZT4g
YnVpbGRPYmplY3RGb3JTaXplKGNvbnN0IEludFNpemUmIHNpemUpCiB7CiAgICAgcmV0dXJuIElu
c3BlY3Rvcjo6UHJvdG9jb2w6Ok92ZXJsYXlUeXBlczo6U2l6ZTo6Y3JlYXRlKCkKQEAgLTY5NSw3
ICs2MzEsNyBAQCBzdGF0aWMgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok92ZXJsCiAgICAg
cmV0dXJuIFdURk1vdmUoc2hhcGVPYmplY3QpOwogfQogCi1zdGF0aWMgUmVmUHRyPEluc3BlY3Rv
cjo6UHJvdG9jb2w6Ok92ZXJsYXlUeXBlczo6RWxlbWVudERhdGE+IGJ1aWxkT2JqZWN0Rm9yRWxl
bWVudERhdGEoTm9kZSogbm9kZSwgSGlnaGxpZ2h0VHlwZSB0eXBlKQorc3RhdGljIFJlZlB0cjxJ
bnNwZWN0b3I6OlByb3RvY29sOjpPdmVybGF5VHlwZXM6OkVsZW1lbnREYXRhPiBidWlsZE9iamVj
dEZvckVsZW1lbnREYXRhKE5vZGUqIG5vZGUsIEhpZ2hsaWdodFR5cGUpCiB7CiAgICAgaWYgKCFp
czxFbGVtZW50Pihub2RlKSB8fCAhbm9kZS0+ZG9jdW1lbnQoKS5mcmFtZSgpKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKQEAgLTc1MSwyNyArNjg3LDYgQEAgc3RhdGljIFJlZlB0cjxJbnNwZWN0
b3I6OlByb3RvY29sOjpPdmVybAogICAgICAgICAucmVsZWFzZSgpOwogICAgIGVsZW1lbnREYXRh
LT5zZXRTaXplKFdURk1vdmUoc2l6ZU9iamVjdCkpOwogCi0gICAgaWYgKHR5cGUgIT0gSGlnaGxp
Z2h0VHlwZTo6Tm9kZUxpc3QgJiYgcmVuZGVyZXItPmlzUmVuZGVyTmFtZWRGbG93RnJhZ21lbnRD
b250YWluZXIoKSkgewotICAgICAgICBSZW5kZXJOYW1lZEZsb3dGcmFnbWVudCYgcmVnaW9uID0g
KmRvd25jYXN0PFJlbmRlckJsb2NrRmxvdz4oKnJlbmRlcmVyKS5yZW5kZXJOYW1lZEZsb3dGcmFn
bWVudCgpOwotICAgICAgICBpZiAocmVnaW9uLmlzVmFsaWQoKSkgewotICAgICAgICAgICAgUmVu
ZGVyRmxvd1RocmVhZCogZmxvd1RocmVhZCA9IHJlZ2lvbi5mbG93VGhyZWFkKCk7Ci0gICAgICAg
ICAgICBhdXRvIHJlZ2lvbkZsb3dEYXRhID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6T3ZlcmxheVR5
cGVzOjpSZWdpb25GbG93RGF0YTo6Y3JlYXRlKCkKLSAgICAgICAgICAgICAgICAuc2V0TmFtZShk
b3duY2FzdDxSZW5kZXJOYW1lZEZsb3dUaHJlYWQ+KCpmbG93VGhyZWFkKS5mbG93VGhyZWFkTmFt
ZSgpKQotICAgICAgICAgICAgICAgIC5zZXRSZWdpb25zKGJ1aWxkT2JqZWN0Rm9yRmxvd1JlZ2lv
bnMoJnJlZ2lvbiwgZmxvd1RocmVhZCkpCi0gICAgICAgICAgICAgICAgLnJlbGVhc2UoKTsKLSAg
ICAgICAgICAgIGVsZW1lbnREYXRhLT5zZXRSZWdpb25GbG93RGF0YShXVEZNb3ZlKHJlZ2lvbkZs
b3dEYXRhKSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBSZW5kZXJGbG93VGhyZWFkKiBjb250
YWluaW5nRmxvd1RocmVhZCA9IHJlbmRlcmVyLT5mbG93VGhyZWFkQ29udGFpbmluZ0Jsb2NrKCk7
Ci0gICAgaWYgKGlzPFJlbmRlck5hbWVkRmxvd1RocmVhZD4oY29udGFpbmluZ0Zsb3dUaHJlYWQp
KSB7Ci0gICAgICAgIGF1dG8gY29udGVudEZsb3dEYXRhID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6
T3ZlcmxheVR5cGVzOjpDb250ZW50Rmxvd0RhdGE6OmNyZWF0ZSgpCi0gICAgICAgICAgICAuc2V0
TmFtZShkb3duY2FzdDxSZW5kZXJOYW1lZEZsb3dUaHJlYWQ+KCpjb250YWluaW5nRmxvd1RocmVh
ZCkuZmxvd1RocmVhZE5hbWUoKSkKLSAgICAgICAgICAgIC5yZWxlYXNlKCk7Ci0KLSAgICAgICAg
ZWxlbWVudERhdGEtPnNldENvbnRlbnRGbG93RGF0YShXVEZNb3ZlKGNvbnRlbnRGbG93RGF0YSkp
OwotICAgIH0KLQogICAgIGlmIChpczxSZW5kZXJCb3g+KCpyZW5kZXJlcikpIHsKICAgICAgICAg
YXV0byYgcmVuZGVyQm94ID0gZG93bmNhc3Q8UmVuZGVyQm94PigqcmVuZGVyZXIpOwogICAgICAg
ICBpZiAoUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok92ZXJsYXlUeXBlczo6U2hhcGVPdXRz
aWRlRGF0YT4gc2hhcGVPYmplY3QgPSBidWlsZE9iamVjdEZvclNoYXBlT3V0c2lkZShjb250YWlu
aW5nRnJhbWUsICZyZW5kZXJCb3gpKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhh
bmRsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVy
LmNwcAkocmV2aXNpb24gMjIyMjU3KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRs
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NSw3ICs3NSw2IEBACiAjaW5jbHVkZSAiUmVuZGVy
RnJhbWVTZXQuaCIKICNpbmNsdWRlICJSZW5kZXJMYXllci5oIgogI2luY2x1ZGUgIlJlbmRlckxp
c3RCb3guaCIKLSNpbmNsdWRlICJSZW5kZXJOYW1lZEZsb3dUaHJlYWQuaCIKICNpbmNsdWRlICJS
ZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuaCIKICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCiAj
aW5jbHVkZSAiUmVuZGVyV2lkZ2V0LmgiCkBAIC0zMjksOCArMzI4LDYgQEAgc3RhdGljIGlubGlu
ZSBib29sIGhhbmRsZVdoZWVsRXZlbnRJbkFwcAogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAK
ICAgICAgICAgY3VycmVudEVuY2xvc2luZ0JveCA9IGN1cnJlbnRFbmNsb3NpbmdCb3gtPmNvbnRh
aW5pbmdCbG9jaygpOwotICAgICAgICBpZiAoY3VycmVudEVuY2xvc2luZ0JveCAmJiBjdXJyZW50
RW5jbG9zaW5nQm94LT5pc1JlbmRlck5hbWVkRmxvd1RocmVhZCgpKQotICAgICAgICAgICAgY3Vy
cmVudEVuY2xvc2luZ0JveCA9IFJlbmRlck5hbWVkRmxvd1RocmVhZDo6ZnJhZ21lbnRGcm9tUmVu
ZGVyQm94QXNSZW5kZXJCbG9jayhjdXJyZW50RW5jbG9zaW5nQm94LCByb3VuZGVkSW50UG9pbnQo
d2hlZWxFdmVudC5hYnNvbHV0ZUxvY2F0aW9uKCkpLCBpbml0aWFsRW5jbG9zaW5nQm94KTsKICAg
ICAgICAgaWYgKCFjdXJyZW50RW5jbG9zaW5nQm94IHx8IGN1cnJlbnRFbmNsb3NpbmdCb3gtPmlz
UmVuZGVyVmlldygpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GbG93VGhyZWFkQ29udHJvbGxlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0Zsb3dUaHJlYWRDb250cm9sbGVyLmNwcAko
cmV2aXNpb24gMjIyMjU3KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0Zsb3dUaHJlYWRD
b250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsMTIgKzMwLDEwIEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRmxvd1RocmVhZENvbnRyb2xsZXIuaCIKIAotI2luY2x1
ZGUgIk5hbWVkRmxvd0NvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJSZW5kZXJGbG93VGhyZWFkLmgi
CiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXIuaCIKICNpbmNsdWRlICJSZW5kZXJOYW1lZEZsb3dUaHJl
YWQuaCIKICNpbmNsdWRlICJTdHlsZUluaGVyaXRlZERhdGEuaCIKLSNpbmNsdWRlICJXZWJLaXRO
YW1lZEZsb3cuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpAQCAtNTEsMzQgKzQ5LDYgQEAgRmxvd1RocmVhZENvbnRyb2xsZXI6On5G
bG93VGhyZWFkQ29udHJvbAogewogfQogCi1SZW5kZXJOYW1lZEZsb3dUaHJlYWQmIEZsb3dUaHJl
YWRDb250cm9sbGVyOjplbnN1cmVSZW5kZXJGbG93VGhyZWFkV2l0aE5hbWUoY29uc3QgQXRvbWlj
U3RyaW5nJiBuYW1lKQotewotICAgIGlmICghbV9yZW5kZXJOYW1lZEZsb3dUaHJlYWRMaXN0KQot
ICAgICAgICBtX3JlbmRlck5hbWVkRmxvd1RocmVhZExpc3QgPSBzdGQ6Om1ha2VfdW5pcXVlPFJl
bmRlck5hbWVkRmxvd1RocmVhZExpc3Q+KCk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIGZvciAoYXV0
byYgZmxvd1JlbmRlcmVyIDogKm1fcmVuZGVyTmFtZWRGbG93VGhyZWFkTGlzdCkgewotICAgICAg
ICAgICAgaWYgKGZsb3dSZW5kZXJlci0+Zmxvd1RocmVhZE5hbWUoKSA9PSBuYW1lKQotICAgICAg
ICAgICAgICAgIHJldHVybiAqZmxvd1JlbmRlcmVyOwotICAgICAgICB9Ci0gICAgfQotCi0gICAg
TmFtZWRGbG93Q29sbGVjdGlvbiYgbmFtZWRGbG93cyA9IG1fdmlldy0+ZG9jdW1lbnQoKS5uYW1l
ZEZsb3dzKCk7Ci0KLSAgICAvLyBTYW5pdHkgY2hlY2sgZm9yIHRoZSBhYnNlbmNlIG9mIGEgbmFt
ZWQgZmxvdyBpbiB0aGUgIkNSRUFURUQiIHN0YXRlIHdpdGggdGhlIHNhbWUgbmFtZS4KLSAgICBB
U1NFUlQoIW5hbWVkRmxvd3MuZmxvd0J5TmFtZShuYW1lKSk7Ci0KLSAgICBhdXRvIGZsb3dSZW5k
ZXJlciA9IG5ldyBSZW5kZXJOYW1lZEZsb3dUaHJlYWQobV92aWV3LT5kb2N1bWVudCgpLCBSZW5k
ZXJGbG93VGhyZWFkOjpjcmVhdGVGbG93VGhyZWFkU3R5bGUoJm1fdmlldy0+c3R5bGUoKSksIG5h
bWVkRmxvd3MuZW5zdXJlRmxvd1dpdGhOYW1lKG5hbWUpKTsKLSAgICBmbG93UmVuZGVyZXItPmlu
aXRpYWxpemVTdHlsZSgpOwotICAgIG1fcmVuZGVyTmFtZWRGbG93VGhyZWFkTGlzdC0+YWRkKGZs
b3dSZW5kZXJlcik7Ci0KLSAgICAvLyBLZWVwIHRoZSBmbG93IHJlbmRlcmVyIGFzIGEgY2hpbGQg
b2YgUmVuZGVyVmlldy4KLSAgICBtX3ZpZXctPmFkZENoaWxkKGZsb3dSZW5kZXJlcik7Ci0KLSAg
ICBzZXRJc1JlbmRlck5hbWVkRmxvd1RocmVhZE9yZGVyRGlydHkodHJ1ZSk7Ci0KLSAgICByZXR1
cm4gKmZsb3dSZW5kZXJlcjsKLX0KLQogdm9pZCBGbG93VGhyZWFkQ29udHJvbGxlcjo6c3R5bGVE
aWRDaGFuZ2UoKQogewogICAgIGF1dG8mIHZpZXdTdHlsZSA9IG1fdmlldy0+c3R5bGUoKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GbG93VGhyZWFkQ29udHJvbGxlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GbG93VGhyZWFkQ29udHJvbGxlci5o
CShyZXZpc2lvbiAyMjIyNTcpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmxvd1RocmVh
ZENvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTUsNyArNTUsNiBAQCBwdWJsaWM6CiAg
ICAgICAgICAgICBtX3ZpZXctPnNldE5lZWRzTGF5b3V0KCk7CiAgICAgfQogCi0gICAgUmVuZGVy
TmFtZWRGbG93VGhyZWFkJiBlbnN1cmVSZW5kZXJGbG93VGhyZWFkV2l0aE5hbWUoY29uc3QgQXRv
bWljU3RyaW5nJik7CiAgICAgY29uc3QgUmVuZGVyTmFtZWRGbG93VGhyZWFkTGlzdCogcmVuZGVy
TmFtZWRGbG93VGhyZWFkTGlzdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVyTmFtZWRGbG93VGhy
ZWFkTGlzdC5nZXQoKTsgfQogICAgIGJvb2wgaGFzUmVuZGVyTmFtZWRGbG93VGhyZWFkcygpIGNv
bnN0IHsgcmV0dXJuIG1fcmVuZGVyTmFtZWRGbG93VGhyZWFkTGlzdCAmJiAhbV9yZW5kZXJOYW1l
ZEZsb3dUaHJlYWRMaXN0LT5pc0VtcHR5KCk7IH0KICAgICB2b2lkIGxheW91dFJlbmRlck5hbWVk
Rmxvd1RocmVhZHMoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZWdpb25PdmVy
c2V0U3RhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVnaW9u
T3ZlcnNldFN0YXRlLmgJKHJldmlzaW9uIDIyMjI1NykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZWdpb25PdmVyc2V0U3RhdGUuaAkobm9uZXhpc3RlbnQpCkBAIC0xLDMwICswLDAgQEAK
LS8qCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2Us
IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJy
YXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0g
KiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm
b3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGgg
dGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRv
Ci0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJl
ZXQsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKgotICov
Ci0KLSNwcmFnbWEgb25jZQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWVudW0gUmVnaW9uT3Zl
cnNldFN0YXRlIHsKLSAgICBSZWdpb25VbmRlZmluZWQsCi0gICAgUmVnaW9uRW1wdHksCi0gICAg
UmVnaW9uRml0LAotICAgIFJlZ2lvbk92ZXJzZXQKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3Bw
CShyZXZpc2lvbiAyMjIyNTcpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxv
Y2tGbG93LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUyMSw4ICsxNTIxLDcgQEAgTGF5b3V0VW5p
dCBSZW5kZXJCbG9ja0Zsb3c6OmFwcGx5QmVmb3JlQgogICAgIGJvb2wgY2hlY2tQYWdlQnJlYWtz
ID0gIWNoZWNrQ29sdW1uQnJlYWtzICYmIHZpZXcoKS5sYXlvdXRTdGF0ZSgpLT5tX3BhZ2VMb2dp
Y2FsSGVpZ2h0OyAvLyBGSVhNRTogT25jZSBjb2x1bW5zIGNhbiBwcmludCB3ZSBoYXZlIHRvIGNo
ZWNrIHRoaXMuCiAgICAgYm9vbCBjaGVja1JlZ2lvbkJyZWFrcyA9IGZsb3dUaHJlYWQgJiYgZmxv
d1RocmVhZC0+aXNSZW5kZXJOYW1lZEZsb3dUaHJlYWQoKTsKICAgICBib29sIGNoZWNrQmVmb3Jl
QWx3YXlzID0gKGNoZWNrQ29sdW1uQnJlYWtzICYmIGNoaWxkLnN0eWxlKCkuYnJlYWtCZWZvcmUo
KSA9PSBDb2x1bW5CcmVha0JldHdlZW4pCi0gICAgICAgIHx8IChjaGVja1BhZ2VCcmVha3MgJiYg
YWx3YXlzUGFnZUJyZWFrKGNoaWxkLnN0eWxlKCkuYnJlYWtCZWZvcmUoKSkpCi0gICAgICAgIHx8
IChjaGVja1JlZ2lvbkJyZWFrcyAmJiBjaGlsZC5zdHlsZSgpLmJyZWFrQmVmb3JlKCkgPT0gUmVn
aW9uQnJlYWtCZXR3ZWVuKTsKKyAgICAgICAgfHwgKGNoZWNrUGFnZUJyZWFrcyAmJiBhbHdheXNQ
YWdlQnJlYWsoY2hpbGQuc3R5bGUoKS5icmVha0JlZm9yZSgpKSk7CiAgICAgaWYgKGNoZWNrQmVm
b3JlQWx3YXlzICYmIGluTm9ybWFsRmxvdyhjaGlsZCkgJiYgaGFzTmV4dFBhZ2UobG9naWNhbE9m
ZnNldCwgSW5jbHVkZVBhZ2VCb3VuZGFyeSkpIHsKICAgICAgICAgaWYgKGNoZWNrQ29sdW1uQnJl
YWtzKSB7CiAgICAgICAgICAgICBpZiAoaXNJbnNpZGVNdWx0aWNvbEZsb3dUaHJlYWQpCkBAIC0x
NTQ3LDggKzE1NDYsNyBAQCBMYXlvdXRVbml0IFJlbmRlckJsb2NrRmxvdzo6YXBwbHlBZnRlckJy
CiAgICAgYm9vbCBjaGVja1BhZ2VCcmVha3MgPSAhY2hlY2tDb2x1bW5CcmVha3MgJiYgdmlldygp
LmxheW91dFN0YXRlKCktPm1fcGFnZUxvZ2ljYWxIZWlnaHQ7IC8vIEZJWE1FOiBPbmNlIGNvbHVt
bnMgY2FuIHByaW50IHdlIGhhdmUgdG8gY2hlY2sgdGhpcy4KICAgICBib29sIGNoZWNrUmVnaW9u
QnJlYWtzID0gZmxvd1RocmVhZCAmJiBmbG93VGhyZWFkLT5pc1JlbmRlck5hbWVkRmxvd1RocmVh
ZCgpOwogICAgIGJvb2wgY2hlY2tBZnRlckFsd2F5cyA9IChjaGVja0NvbHVtbkJyZWFrcyAmJiBj
aGlsZC5zdHlsZSgpLmJyZWFrQWZ0ZXIoKSA9PSBDb2x1bW5CcmVha0JldHdlZW4pCi0gICAgICAg
IHx8IChjaGVja1BhZ2VCcmVha3MgJiYgYWx3YXlzUGFnZUJyZWFrKGNoaWxkLnN0eWxlKCkuYnJl
YWtBZnRlcigpKSkKLSAgICAgICAgfHwgKGNoZWNrUmVnaW9uQnJlYWtzICYmIGNoaWxkLnN0eWxl
KCkuYnJlYWtBZnRlcigpID09IFJlZ2lvbkJyZWFrQmV0d2Vlbik7CisgICAgICAgIHx8IChjaGVj
a1BhZ2VCcmVha3MgJiYgYWx3YXlzUGFnZUJyZWFrKGNoaWxkLnN0eWxlKCkuYnJlYWtBZnRlcigp
KSk7CiAgICAgaWYgKGNoZWNrQWZ0ZXJBbHdheXMgJiYgaW5Ob3JtYWxGbG93KGNoaWxkKSAmJiBo
YXNOZXh0UGFnZShsb2dpY2FsT2Zmc2V0LCBJbmNsdWRlUGFnZUJvdW5kYXJ5KSkgewogICAgICAg
ICBMYXlvdXRVbml0IG1hcmdpbk9mZnNldCA9IG1hcmdpbkluZm8uY2FuQ29sbGFwc2VXaXRoTWFy
Z2luQmVmb3JlKCkgPyBMYXlvdXRVbml0KCkgOiBtYXJnaW5JbmZvLm1hcmdpbigpOwogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dGcmFn
bWVudC5jcHAJKHJldmlzaW9uIDIyMjI1NykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJOYW1lZEZsb3dGcmFnbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg3LDEwICs4Nyw4
IEBAIHZvaWQgUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQ6OnN0eWxlRGlkQ2gKICAgICAgICAgc2V0
TmVlZHNMYXlvdXQoTWFya09ubHlUaGlzKTsKIH0KIAotdm9pZCBSZW5kZXJOYW1lZEZsb3dGcmFn
bWVudDo6Z2V0UmFuZ2VzKFZlY3RvcjxSZWZQdHI8UmFuZ2U+PiYgcmFuZ2VPYmplY3RzKSBjb25z
dAordm9pZCBSZW5kZXJOYW1lZEZsb3dGcmFnbWVudDo6Z2V0UmFuZ2VzKFZlY3RvcjxSZWZQdHI8
UmFuZ2U+PiYpIGNvbnN0CiB7Ci0gICAgY29uc3QgUmVuZGVyTmFtZWRGbG93VGhyZWFkJiBuYW1l
ZEZsb3cgPSB2aWV3KCkuZmxvd1RocmVhZENvbnRyb2xsZXIoKS5lbnN1cmVSZW5kZXJGbG93VGhy
ZWFkV2l0aE5hbWUoc3R5bGUoKS5yZWdpb25UaHJlYWQoKSk7Ci0gICAgbmFtZWRGbG93LmdldFJh
bmdlcyhyYW5nZU9iamVjdHMsIHRoaXMpOwogfQogCiBib29sIFJlbmRlck5hbWVkRmxvd0ZyYWdt
ZW50OjpzaG91bGRIYXZlQXV0b0xvZ2ljYWxIZWlnaHQoKSBjb25zdApAQCAtMjYyLDEwICsyNjAs
OCBAQCB2b2lkIFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50OjpsYXlvdXRCbG9jCiAgICAgUmVuZGVy
UmVnaW9uOjpsYXlvdXRCbG9jayhyZWxheW91dENoaWxkcmVuKTsKIAogICAgIGlmIChpc1ZhbGlk
KCkpIHsKLSAgICAgICAgaWYgKG1fZmxvd1RocmVhZC0+aW5PdmVyZmxvd0xheW91dFBoYXNlKCkg
fHwgbV9mbG93VGhyZWFkLT5pbkZpbmFsTGF5b3V0UGhhc2UoKSkgeworICAgICAgICBpZiAobV9m
bG93VGhyZWFkLT5pbk92ZXJmbG93TGF5b3V0UGhhc2UoKSB8fCBtX2Zsb3dUaHJlYWQtPmluRmlu
YWxMYXlvdXRQaGFzZSgpKQogICAgICAgICAgICAgY29tcHV0ZU92ZXJmbG93RnJvbUZsb3dUaHJl
YWQoKTsKLSAgICAgICAgICAgIHVwZGF0ZU92ZXJzZXRTdGF0ZSgpOwotICAgICAgICB9CiAKICAg
ICAgICAgaWYgKGhhc0F1dG9Mb2dpY2FsSGVpZ2h0KCkgJiYgbV9mbG93VGhyZWFkLT5pbk1lYXN1
cmVDb250ZW50TGF5b3V0UGhhc2UoKSkgewogICAgICAgICAgICAgbV9mbG93VGhyZWFkLT5pbnZh
bGlkYXRlUmVnaW9ucygpOwpAQCAtMjkwLDcxICsyODYsMTkgQEAgdm9pZCBSZW5kZXJOYW1lZEZs
b3dGcmFnbWVudDo6aW52YWxpZGF0ZQogICAgIH0KIH0KIAotdm9pZCBSZW5kZXJOYW1lZEZsb3dG
cmFnbWVudDo6c2V0UmVnaW9uT3ZlcnNldFN0YXRlKFJlZ2lvbk92ZXJzZXRTdGF0ZSBzdGF0ZSkK
LXsKLSAgICBBU1NFUlQoZ2VuZXJhdGluZ0VsZW1lbnQoKSk7Ci0KLSAgICBnZW5lcmF0aW5nRWxl
bWVudCgpLT5zZXRSZWdpb25PdmVyc2V0U3RhdGUoc3RhdGUpOwotfQotCi1SZWdpb25PdmVyc2V0
U3RhdGUgUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQ6OnJlZ2lvbk92ZXJzZXRTdGF0ZSgpIGNvbnN0
Ci17Ci0gICAgQVNTRVJUKGdlbmVyYXRpbmdFbGVtZW50KCkpOwotCi0gICAgaWYgKCFpc1ZhbGlk
KCkpCi0gICAgICAgIHJldHVybiBSZWdpb25VbmRlZmluZWQ7Ci0KLSAgICByZXR1cm4gZ2VuZXJh
dGluZ0VsZW1lbnQoKS0+cmVnaW9uT3ZlcnNldFN0YXRlKCk7Ci19Ci0KLXZvaWQgUmVuZGVyTmFt
ZWRGbG93RnJhZ21lbnQ6OnVwZGF0ZU92ZXJzZXRTdGF0ZSgpCi17Ci0gICAgQVNTRVJUKGlzVmFs
aWQoKSk7Ci0KLSAgICBSZW5kZXJOYW1lZEZsb3dUaHJlYWQqIGZsb3dUaHJlYWQgPSBuYW1lZEZs
b3dUaHJlYWQoKTsKLSAgICBBU1NFUlQoZmxvd1RocmVhZCAmJiAoZmxvd1RocmVhZC0+aW5PdmVy
Zmxvd0xheW91dFBoYXNlKCkgfHwgZmxvd1RocmVhZC0+aW5GaW5hbExheW91dFBoYXNlKCkpKTsK
LQotICAgIExheW91dFVuaXQgZmxvd0NvbnRlbnRCb3R0b20gPSBmbG93VGhyZWFkLT5mbG93Q29u
dGVudEJvdHRvbSgpOwotICAgIGJvb2wgaXNIb3Jpem9udGFsV3JpdGluZ01vZGUgPSBmbG93VGhy
ZWFkLT5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpOwotCi0gICAgTGF5b3V0VW5pdCBmbG93TWlu
ID0gZmxvd0NvbnRlbnRCb3R0b20gLSAoaXNIb3Jpem9udGFsV3JpdGluZ01vZGUgPyBmbG93VGhy
ZWFkUG9ydGlvblJlY3QoKS55KCkgOiBmbG93VGhyZWFkUG9ydGlvblJlY3QoKS54KCkpOwotICAg
IExheW91dFVuaXQgZmxvd01heCA9IGZsb3dDb250ZW50Qm90dG9tIC0gKGlzSG9yaXpvbnRhbFdy
aXRpbmdNb2RlID8gZmxvd1RocmVhZFBvcnRpb25SZWN0KCkubWF4WSgpIDogZmxvd1RocmVhZFBv
cnRpb25SZWN0KCkubWF4WCgpKTsKLQotICAgIFJlZ2lvbk92ZXJzZXRTdGF0ZSBwcmV2aW91c1N0
YXRlID0gcmVnaW9uT3ZlcnNldFN0YXRlKCk7Ci0gICAgUmVnaW9uT3ZlcnNldFN0YXRlIHN0YXRl
ID0gUmVnaW9uRml0OwotICAgIGlmIChmbG93TWluIDw9IDApCi0gICAgICAgIHN0YXRlID0gUmVn
aW9uRW1wdHk7Ci0gICAgaWYgKGZsb3dNYXggPiAwICYmIGlzTGFzdFJlZ2lvbigpKQotICAgICAg
ICBzdGF0ZSA9IFJlZ2lvbk92ZXJzZXQ7Ci0gICAgCi0gICAgc2V0UmVnaW9uT3ZlcnNldFN0YXRl
KHN0YXRlKTsKLQotICAgIC8vIERldGVybWluZSB3aGV0aGVyIHRoZSBOYW1lZEZsb3cgb2JqZWN0
IHNob3VsZCBkaXNwYXRjaCBhIHJlZ2lvbk92ZXJzZXRDaGFuZ2UgZXZlbnQKLSAgICBpZiAocHJl
dmlvdXNTdGF0ZSAhPSBzdGF0ZSkKLSAgICAgICAgZmxvd1RocmVhZC0+c2V0RGlzcGF0Y2hSZWdp
b25PdmVyc2V0Q2hhbmdlRXZlbnQodHJ1ZSk7Ci19Ci0KIHZvaWQgUmVuZGVyTmFtZWRGbG93RnJh
Z21lbnQ6OmNoZWNrUmVnaW9uU3R5bGUoKQogewogICAgIEFTU0VSVChpc1ZhbGlkKCkpOwogCiAg
ICAgYm9vbCBjdXN0b21SZWdpb25TdHlsZSA9IGZhbHNlOwogCi0gICAgLy8gRklYTUU6IFJlZ2lv
biBzdHlsaW5nIGRvZXNuJ3Qgd29yayBmb3IgcHNldWRvIGVsZW1lbnRzLgotICAgIGlmICghaXNQ
c2V1ZG9FbGVtZW50KCkpCi0gICAgICAgIGN1c3RvbVJlZ2lvblN0eWxlID0gZ2VuZXJhdGluZ0Vs
ZW1lbnQoKS0+c3R5bGVSZXNvbHZlcigpLmNoZWNrUmVnaW9uU3R5bGUoZ2VuZXJhdGluZ0VsZW1l
bnQoKSk7CiAgICAgc2V0SGFzQ3VzdG9tUmVnaW9uU3R5bGUoY3VzdG9tUmVnaW9uU3R5bGUpOwog
ICAgIGRvd25jYXN0PFJlbmRlck5hbWVkRmxvd1RocmVhZD4oKm1fZmxvd1RocmVhZCkuY2hlY2tS
ZWdpb25zV2l0aFN0eWxpbmcoKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBS
ZW5kZXJOYW1lZEZsb3dGcmFnbWVudDo6Y29tcHV0ZVN0eWxlSW5SZWdpb24oUmVuZGVyRWxlbWVu
dCYgcmVuZGVyZXIsIGNvbnN0IFJlbmRlclN0eWxlJiBwYXJlbnRTdHlsZSkgY29uc3QKK3N0ZDo6
dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQ6OmNvbXB1dGVT
dHlsZUluUmVnaW9uKFJlbmRlckVsZW1lbnQmLCBjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0CiB7
Ci0gICAgQVNTRVJUKCFyZW5kZXJlci5pc0Fub255bW91cygpKTsKLQotICAgIC8vIEZJWE1FOiBS
ZWdpb24gc3R5bGluZyBmYWlscyBmb3IgcHNldWRvLWVsZW1lbnRzIGJlY2F1c2UgdGhlIHJlbmRl
cmVycyBkb24ndCBoYXZlIGEgbm9kZS4KLSAgICBhdXRvIHJlbmRlck9iamVjdFJlZ2lvblN0eWxl
ID0gcmVuZGVyZXIuZWxlbWVudCgpLT5zdHlsZVJlc29sdmVyKCkuc3R5bGVGb3JFbGVtZW50KCpy
ZW5kZXJlci5lbGVtZW50KCksICZwYXJlbnRTdHlsZSwgbnVsbHB0ciwgTWF0Y2hBbGxSdWxlcywg
dGhpcykucmVuZGVyU3R5bGU7Ci0KLSAgICByZXR1cm4gcmVuZGVyT2JqZWN0UmVnaW9uU3R5bGU7
CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIHZvaWQgUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQ6
OmNvbXB1dGVDaGlsZHJlblN0eWxlSW5SZWdpb24oUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIpCkBA
IC00MTIsNDAgKzM1Niw2IEBAIHZvaWQgUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQ6OmNsZWFyT2Jq
ZWMKIAogdm9pZCBSZW5kZXJOYW1lZEZsb3dGcmFnbWVudDo6c2V0UmVnaW9uT2JqZWN0c1JlZ2lv
blN0eWxlKCkKIHsKLSAgICBpZiAoIWhhc0N1c3RvbVJlZ2lvblN0eWxlKCkpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIC8vIFN0YXJ0IGZyb20gY29udGVudCBub2RlcyBhbmQgcmVjdXJzaXZlbHkg
Y29tcHV0ZSB0aGUgc3R5bGUgaW4gcmVnaW9uIGZvciB0aGUgcmVuZGVyIG9iamVjdHMgYmVsb3cu
Ci0gICAgLy8gSWYgdGhlIHN0eWxlIGluIHJlZ2lvbiB3YXMgYWxyZWFkeSBjb21wdXRlZCwgdXNl
ZCB0aGF0IHN0eWxlIGluc3RlYWQgb2YgY29tcHV0aW5nIGEgbmV3IG9uZS4KLSAgICBjb25zdCBS
ZW5kZXJOYW1lZEZsb3dUaHJlYWQmIG5hbWVkRmxvdyA9IHZpZXcoKS5mbG93VGhyZWFkQ29udHJv
bGxlcigpLmVuc3VyZVJlbmRlckZsb3dUaHJlYWRXaXRoTmFtZShzdHlsZSgpLnJlZ2lvblRocmVh
ZCgpKTsKLSAgICBjb25zdCBOYW1lZEZsb3dDb250ZW50RWxlbWVudHMmIGNvbnRlbnRFbGVtZW50
cyA9IG5hbWVkRmxvdy5jb250ZW50RWxlbWVudHMoKTsKLQotICAgIGZvciAoY29uc3QgYXV0byYg
ZWxlbWVudCA6IGNvbnRlbnRFbGVtZW50cykgewotICAgICAgICAvLyBUaGUgbGlzdCBvZiBjb250
ZW50IG5vZGVzIGNvbnRhaW5zIGFsc28gdGhlIG5vZGVzIHdpdGggZGlzcGxheTpub25lLgotICAg
ICAgICBpZiAoIWVsZW1lbnQtPnJlbmRlcmVyKCkpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAg
ICAgICAgYXV0byYgcmVuZGVyZXIgPSAqZWxlbWVudC0+cmVuZGVyZXIoKTsKLQotICAgICAgICAv
LyBJZiB0aGUgY29udGVudCBub2RlIGRvZXMgbm90IGZsb3cgYW55IG9mIGl0cyBjaGlsZHJlbiBp
biB0aGlzIHJlZ2lvbiwKLSAgICAgICAgLy8gd2UgZG8gbm90IGNvbXB1dGUgYW55IHN0eWxlIGZv
ciB0aGVtIGluIHRoaXMgcmVnaW9uLgotICAgICAgICBpZiAoIWZsb3dUaHJlYWQoKS0+b2JqZWN0
SW5GbG93UmVnaW9uKCZyZW5kZXJlciwgdGhpcykpCi0gICAgICAgICAgICBjb250aW51ZTsKLQot
ICAgICAgICAvLyBJZiB0aGUgb2JqZWN0IGhhcyBzdHlsZSBpbiByZWdpb24sIHVzZSB0aGF0IGlu
c3RlYWQgb2YgY29tcHV0aW5nIGEgbmV3IG9uZS4KLSAgICAgICAgYXV0byBpdCA9IG1fcmVuZGVy
ZXJSZWdpb25TdHlsZS5maW5kKCZyZW5kZXJlcik7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxS
ZW5kZXJTdHlsZT4gb2JqZWN0U3R5bGVJblJlZ2lvbjsKLSAgICAgICAgYm9vbCBvYmplY3RSZWdp
b25TdHlsZUNhY2hlZCA9IGZhbHNlOwotICAgICAgICBpZiAoaXQgIT0gbV9yZW5kZXJlclJlZ2lv
blN0eWxlLmVuZCgpKSB7Ci0gICAgICAgICAgICBvYmplY3RTdHlsZUluUmVnaW9uID0gUmVuZGVy
U3R5bGU6OmNsb25lUHRyKCppdC0+dmFsdWUuc3R5bGUpOwotICAgICAgICAgICAgQVNTRVJUKGl0
LT52YWx1ZS5jYWNoZWQpOwotICAgICAgICAgICAgb2JqZWN0UmVnaW9uU3R5bGVDYWNoZWQgPSB0
cnVlOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIG9iamVjdFN0eWxlSW5SZWdpb24gPSBj
b21wdXRlU3R5bGVJblJlZ2lvbihyZW5kZXJlciwgc3R5bGUoKSk7Ci0KLSAgICAgICAgc2V0UmVu
ZGVyZXJTdHlsZUluUmVnaW9uKHJlbmRlcmVyLCBXVEZNb3ZlKG9iamVjdFN0eWxlSW5SZWdpb24p
LCBvYmplY3RSZWdpb25TdHlsZUNhY2hlZCk7Ci0KLSAgICAgICAgY29tcHV0ZUNoaWxkcmVuU3R5
bGVJblJlZ2lvbihyZW5kZXJlcik7Ci0gICAgfQogfQogCiB2b2lkIFJlbmRlck5hbWVkRmxvd0Zy
YWdtZW50OjpyZXN0b3JlUmVnaW9uT2JqZWN0c09yaWdpbmFsU3R5bGUoKQpJbmRleDogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd0ZyYWdtZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd0ZyYWdtZW50LmgJKHJl
dmlzaW9uIDIyMjI1NykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJOYW1lZEZs
b3dGcmFnbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDUsNyArMTA1LDYgQEAgcHVibGljOgog
CiAgICAgYm9vbCBoYXNDb21wdXRlZEF1dG9IZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX2hhc0Nv
bXB1dGVkQXV0b0hlaWdodDsgfQogCi0gICAgUmVnaW9uT3ZlcnNldFN0YXRlIHJlZ2lvbk92ZXJz
ZXRTdGF0ZSgpIGNvbnN0OwogCiAgICAgdm9pZCBhdHRhY2hSZWdpb24oKSBvdmVycmlkZTsKICAg
ICB2b2lkIGRldGFjaFJlZ2lvbigpIG92ZXJyaWRlOwpAQCAtMTM2LDkgKzEzNSw2IEBAIHByaXZh
dGU6CiAKICAgICBib29sIHNob3VsZEhhdmVBdXRvTG9naWNhbEhlaWdodCgpIGNvbnN0OwogCi0g
ICAgdm9pZCB1cGRhdGVPdmVyc2V0U3RhdGUoKTsKLSAgICB2b2lkIHNldFJlZ2lvbk92ZXJzZXRT
dGF0ZShSZWdpb25PdmVyc2V0U3RhdGUpOwotCiAgICAgdm9pZCBsYXlvdXRCbG9jayhib29sIHJl
bGF5b3V0Q2hpbGRyZW4sIExheW91dFVuaXQgcGFnZUxvZ2ljYWxIZWlnaHQgPSAwKSBvdmVycmlk
ZTsKIAogICAgIHN0cnVjdCBPYmplY3RSZWdpb25TdHlsZUluZm8gewpJbmRleDogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd1RocmVhZC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd1RocmVhZC5jcHAJKHJldmlz
aW9uIDIyMjI1NykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dU
aHJlYWQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSwxNSArNDEsMTMgQEAKICNpbmNsdWRlICJS
ZW5kZXJWaWV3LmgiCiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgogI2luY2x1ZGUgIlRleHQuaCIK
LSNpbmNsdWRlICJXZWJLaXROYW1lZEZsb3cuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1S
ZW5kZXJOYW1lZEZsb3dUaHJlYWQ6OlJlbmRlck5hbWVkRmxvd1RocmVhZChEb2N1bWVudCYgZG9j
dW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUsIFJlZjxXZWJLaXROYW1lZEZsb3c+JiYgbmFtZWRG
bG93KQorUmVuZGVyTmFtZWRGbG93VGhyZWFkOjpSZW5kZXJOYW1lZEZsb3dUaHJlYWQoRG9jdW1l
bnQmIGRvY3VtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyRmxvd1RocmVh
ZChkb2N1bWVudCwgV1RGTW92ZShzdHlsZSkpCiAgICAgLCBtX2hhc1JlZ2lvbnNXaXRoU3R5bGlu
ZyhmYWxzZSkKICAgICAsIG1fZGlzcGF0Y2hSZWdpb25PdmVyc2V0Q2hhbmdlRXZlbnQoZmFsc2Up
Ci0gICAgLCBtX25hbWVkRmxvdyhXVEZNb3ZlKG5hbWVkRmxvdykpCiAgICAgLCBtX3JlZ2lvbk92
ZXJzZXRDaGFuZ2VFdmVudFRpbWVyKCp0aGlzLCAmUmVuZGVyTmFtZWRGbG93VGhyZWFkOjpyZWdp
b25PdmVyc2V0Q2hhbmdlRXZlbnRUaW1lckZpcmVkKQogewogfQpAQCAtNzgsMTUgKzc2LDYgQEAg
Y29uc3QgY2hhciogUmVuZGVyTmFtZWRGbG93VGhyZWFkOjpyZW5kZQogICAgIAogdm9pZCBSZW5k
ZXJOYW1lZEZsb3dUaHJlYWQ6OmNsZWFyQ29udGVudEVsZW1lbnRzKCkKIHsKLSAgICBmb3IgKGF1
dG8mIGNvbnRlbnRFbGVtZW50IDogbV9jb250ZW50RWxlbWVudHMpIHsKLSAgICAgICAgQVNTRVJU
KGNvbnRlbnRFbGVtZW50KTsKLSAgICAgICAgQVNTRVJUKGNvbnRlbnRFbGVtZW50LT5pc05hbWVk
Rmxvd0NvbnRlbnRFbGVtZW50KCkpOwotICAgICAgICBBU1NFUlQoJmNvbnRlbnRFbGVtZW50LT5k
b2N1bWVudCgpID09ICZkb2N1bWVudCgpKTsKLSAgICAgICAgCi0gICAgICAgIGNvbnRlbnRFbGVt
ZW50LT5jbGVhcklzTmFtZWRGbG93Q29udGVudEVsZW1lbnQoKTsKLSAgICB9Ci0gICAgCi0gICAg
bV9jb250ZW50RWxlbWVudHMuY2xlYXIoKTsKIH0KIAogdm9pZCBSZW5kZXJOYW1lZEZsb3dUaHJl
YWQ6OnVwZGF0ZVdyaXRpbmdNb2RlKCkKQEAgLTQ2Nyw1MSArNDU2LDIyIEBAIHZvaWQgUmVuZGVy
TmFtZWRGbG93VGhyZWFkOjpwdXNoRGVwZW5kZW4KIC8vIFRoZSBjb250ZW50IG5vZGVzIGxpc3Qg
Y29udGFpbnMgdGhvc2Ugbm9kZXMgd2l0aCAtd2Via2l0LWZsb3ctaW50bzogZmxvdy4KIC8vIEFu
IGVsZW1lbnQgd2l0aCBkaXNwbGF5Om5vbmUgc2hvdWxkIGFsc28gYmUgbGlzdGVkIGFtb25nIHRo
b3NlIG5vZGVzLgogLy8gVGhlIGxpc3Qgb2Ygbm9kZXMgaXMgb3JkZXJlZC4KLXZvaWQgUmVuZGVy
TmFtZWRGbG93VGhyZWFkOjpyZWdpc3Rlck5hbWVkRmxvd0NvbnRlbnRFbGVtZW50KEVsZW1lbnQm
IGNvbnRlbnRFbGVtZW50KQordm9pZCBSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6OnJlZ2lzdGVyTmFt
ZWRGbG93Q29udGVudEVsZW1lbnQoRWxlbWVudCYpCiB7Ci0gICAgQVNTRVJUKCZjb250ZW50RWxl
bWVudC5kb2N1bWVudCgpID09ICZkb2N1bWVudCgpKTsKLQotICAgIGNvbnRlbnRFbGVtZW50LnNl
dElzTmFtZWRGbG93Q29udGVudEVsZW1lbnQoKTsKLQotICAgIHJlc2V0TWFya0ZvckRlc3RydWN0
aW9uKCk7Ci0KLSAgICAvLyBGaW5kIHRoZSBmaXJzdCBjb250ZW50IG5vZGUgZm9sbG93aW5nIHRo
ZSBuZXcgY29udGVudCBub2RlLgotICAgIGZvciAoYXV0byYgZWxlbWVudCA6IG1fY29udGVudEVs
ZW1lbnRzKSB7Ci0gICAgICAgIHVuc2lnbmVkIHNob3J0IHBvc2l0aW9uID0gY29udGVudEVsZW1l
bnQuY29tcGFyZURvY3VtZW50UG9zaXRpb24oKmVsZW1lbnQpOwotICAgICAgICBpZiAocG9zaXRp
b24gJiBOb2RlOjpET0NVTUVOVF9QT1NJVElPTl9GT0xMT1dJTkcpIHsKLSAgICAgICAgICAgIG1f
Y29udGVudEVsZW1lbnRzLmluc2VydEJlZm9yZShlbGVtZW50LCAmY29udGVudEVsZW1lbnQpOwot
ICAgICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWdpc3Rlck5hbWVkRmxv
d0NvbnRlbnRFbGVtZW50KGRvY3VtZW50KCksIG5hbWVkRmxvdygpLCBjb250ZW50RWxlbWVudCwg
ZWxlbWVudCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBt
X2NvbnRlbnRFbGVtZW50cy5hZGQoJmNvbnRlbnRFbGVtZW50KTsKLSAgICBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmRpZFJlZ2lzdGVyTmFtZWRGbG93Q29udGVudEVsZW1lbnQoZG9jdW1lbnQo
KSwgbmFtZWRGbG93KCksIGNvbnRlbnRFbGVtZW50KTsKIH0KIAotdm9pZCBSZW5kZXJOYW1lZEZs
b3dUaHJlYWQ6OnVucmVnaXN0ZXJOYW1lZEZsb3dDb250ZW50RWxlbWVudChFbGVtZW50JiBjb250
ZW50RWxlbWVudCkKK3ZvaWQgUmVuZGVyTmFtZWRGbG93VGhyZWFkOjp1bnJlZ2lzdGVyTmFtZWRG
bG93Q29udGVudEVsZW1lbnQoRWxlbWVudCYpCiB7Ci0gICAgQVNTRVJUKG1fY29udGVudEVsZW1l
bnRzLmNvbnRhaW5zKCZjb250ZW50RWxlbWVudCkpOwotICAgIEFTU0VSVChjb250ZW50RWxlbWVu
dC5pc05hbWVkRmxvd0NvbnRlbnRFbGVtZW50KCkpOwotICAgIEFTU0VSVCgmY29udGVudEVsZW1l
bnQuZG9jdW1lbnQoKSA9PSAmZG9jdW1lbnQoKSk7Ci0KLSAgICBjb250ZW50RWxlbWVudC5jbGVh
cklzTmFtZWRGbG93Q29udGVudEVsZW1lbnQoKTsKLSAgICBtX2NvbnRlbnRFbGVtZW50cy5yZW1v
dmUoJmNvbnRlbnRFbGVtZW50KTsKLQotICAgIGlmIChjYW5CZURlc3Ryb3llZCgpKQotICAgICAg
ICBzZXRNYXJrRm9yRGVzdHJ1Y3Rpb24oKTsKLQotICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6ZGlkVW5yZWdpc3Rlck5hbWVkRmxvd0NvbnRlbnRFbGVtZW50KGRvY3VtZW50KCksIG5hbWVk
RmxvdygpLCBjb250ZW50RWxlbWVudCk7CiB9CiAKLWJvb2wgUmVuZGVyTmFtZWRGbG93VGhyZWFk
OjpoYXNDb250ZW50RWxlbWVudChFbGVtZW50JiBjb250ZW50RWxlbWVudCkgY29uc3QKK2Jvb2wg
UmVuZGVyTmFtZWRGbG93VGhyZWFkOjpoYXNDb250ZW50RWxlbWVudChFbGVtZW50JikgY29uc3QK
IHsKLSAgICByZXR1cm4gbV9jb250ZW50RWxlbWVudHMuY29udGFpbnMoJmNvbnRlbnRFbGVtZW50
KTsKKyAgICByZXR1cm4gZmFsc2U7CiB9CiAgICAgCiBjb25zdCBBdG9taWNTdHJpbmcmIFJlbmRl
ck5hbWVkRmxvd1RocmVhZDo6Zmxvd1RocmVhZE5hbWUoKSBjb25zdAogewotICAgIHJldHVybiBu
YW1lZEZsb3coKS5uYW1lKCk7CisgICAgcmV0dXJuIG51bGxBdG9tKCk7CiB9CiAKIGJvb2wgUmVu
ZGVyTmFtZWRGbG93VGhyZWFkOjppc0NoaWxkQWxsb3dlZChjb25zdCBSZW5kZXJPYmplY3QmIGNo
aWxkLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpIGNvbnN0CkBAIC01MzAsNDMgKzQ5MCwyMyBA
QCBib29sIFJlbmRlck5hbWVkRmxvd1RocmVhZDo6aXNDaGlsZEFsbG93CiAKIHZvaWQgUmVuZGVy
TmFtZWRGbG93VGhyZWFkOjpkaXNwYXRjaFJlZ2lvbk92ZXJzZXRDaGFuZ2VFdmVudElmTmVlZGVk
KCkKIHsKLSAgICBpZiAoIW1fZGlzcGF0Y2hSZWdpb25PdmVyc2V0Q2hhbmdlRXZlbnQpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIG1fZGlzcGF0Y2hSZWdpb25PdmVyc2V0Q2hhbmdlRXZlbnQgPSBm
YWxzZTsKLSAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENoYW5nZVJlZ2lvbk92ZXJz
ZXQoZG9jdW1lbnQoKSwgbmFtZWRGbG93KCkpOwotICAgIAotICAgIGlmICghbV9yZWdpb25PdmVy
c2V0Q2hhbmdlRXZlbnRUaW1lci5pc0FjdGl2ZSgpICYmIG5hbWVkRmxvdygpLmhhc0V2ZW50TGlz
dGVuZXJzKCkpCi0gICAgICAgIG1fcmVnaW9uT3ZlcnNldENoYW5nZUV2ZW50VGltZXIuc3RhcnRP
bmVTaG90KDBfcyk7CiB9CiAKIHZvaWQgUmVuZGVyTmFtZWRGbG93VGhyZWFkOjpyZWdpb25PdmVy
c2V0Q2hhbmdlRXZlbnRUaW1lckZpcmVkKCkKIHsKLSAgICBuYW1lZEZsb3coKS5kaXNwYXRjaFJl
Z2lvbk92ZXJzZXRDaGFuZ2VFdmVudCgpOwogfQogCiB2b2lkIFJlbmRlck5hbWVkRmxvd1RocmVh
ZDo6c2V0TWFya0ZvckRlc3RydWN0aW9uKCkKIHsKLSAgICBpZiAobmFtZWRGbG93KCkuZmxvd1N0
YXRlKCkgPT0gV2ViS2l0TmFtZWRGbG93OjpGbG93U3RhdGVOdWxsKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBuYW1lZEZsb3coKS5zZXRSZW5kZXJlcihudWxscHRyKTsKLSAgICAvLyBBZnRlciB0
aGlzIGNhbGwgZW5kcywgdGhlIHJlbmRlcmVyIGNhbiBiZSBzYWZlbHkgZGVzdHJveWVkLgotICAg
IC8vIFRoZSBOYW1lZEZsb3cgb2JqZWN0IG1heSBvdXRsaXZlIGl0cyByZW5kZXJlciBpZiBpdCdz
IHJlZmVyZW5jZWQgZnJvbSBhIHNjcmlwdCBhbmQgbWF5IGJlIHJlYXRhY2hlZCB0byBvbmUgaWYg
dGhlIG5hbWVkIGZsb3cgaXMgcmVjcmVhdGVkIGluIHRoZSBzdHlsZXNoZWV0LgogfQogCiB2b2lk
IFJlbmRlck5hbWVkRmxvd1RocmVhZDo6cmVzZXRNYXJrRm9yRGVzdHJ1Y3Rpb24oKQogewotICAg
IGlmIChuYW1lZEZsb3coKS5mbG93U3RhdGUoKSA9PSBXZWJLaXROYW1lZEZsb3c6OkZsb3dTdGF0
ZUNyZWF0ZWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIG5hbWVkRmxvdygpLnNldFJlbmRlcmVy
KHRoaXMpOwogfQogCiBib29sIFJlbmRlck5hbWVkRmxvd1RocmVhZDo6aXNNYXJrZWRGb3JEZXN0
cnVjdGlvbigpIGNvbnN0CiB7Ci0gICAgLy8gRmxvdyB0aHJlYWRzIGluIHRoZSAiTlVMTCIgc3Rh
dGUgY2FuIGJlIGRlc3Ryb3llZC4KLSAgICByZXR1cm4gbmFtZWRGbG93KCkuZmxvd1N0YXRlKCkg
PT0gV2ViS2l0TmFtZWRGbG93OjpGbG93U3RhdGVOdWxsOworICAgIHJldHVybiBmYWxzZTsKIH0K
IAogc3RhdGljIGJvb2wgaXNDb250YWluZWRJbkVsZW1lbnRzKGNvbnN0IFZlY3RvcjxFbGVtZW50
Kj4mIG90aGVycywgRWxlbWVudCogZWxlbWVudCkKQEAgLTU5MCw4ICs1MzAsNiBAQCBzdGF0aWMg
Ym9vbCBib3hJbnRlcnNlY3RzUmVnaW9uKExheW91dFVuCiAvLyBSZXRyaWV2ZSB0aGUgbmV4dCBu
b2RlIHRvIGJlIHZpc2l0ZWQgd2hpbGUgY29tcHV0aW5nIHRoZSByYW5nZXMgaW5zaWRlIGEgcmVn
aW9uLgogc3RhdGljIE5vZGUqIG5leHROb2RlSW5zaWRlQ29udGVudEVsZW1lbnQoY29uc3QgTm9k
ZSYgY3Vyck5vZGUsIGNvbnN0IEVsZW1lbnQqIGNvbnRlbnRFbGVtZW50KQogewotICAgIEFTU0VS
VChjb250ZW50RWxlbWVudCAmJiBjb250ZW50RWxlbWVudC0+aXNOYW1lZEZsb3dDb250ZW50RWxl
bWVudCgpKTsKLQogICAgIGlmIChjdXJyTm9kZS5yZW5kZXJlcigpICYmIGN1cnJOb2RlLnJlbmRl
cmVyKCktPmlzU1ZHUm9vdCgpKQogICAgICAgICByZXR1cm4gTm9kZVRyYXZlcnNhbDo6bmV4dFNr
aXBwaW5nQ2hpbGRyZW4oY3Vyck5vZGUsIGNvbnRlbnRFbGVtZW50KTsKIApJbmRleDogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd1RocmVhZC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dUaHJlYWQuaAkocmV2aXNp
b24gMjIyMjU3KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd1Ro
cmVhZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw2IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgTm9kZTsKIGNsYXNzIFJlbmRlck5hbWVkRmxvd1RocmVhZDsKLWNsYXNzIFdl
YktpdE5hbWVkRmxvdzsKIAogdHlwZWRlZiBMaXN0SGFzaFNldDxSZW5kZXJOYW1lZEZsb3dUaHJl
YWQqPiBSZW5kZXJOYW1lZEZsb3dUaHJlYWRMaXN0OwogdHlwZWRlZiBIYXNoQ291bnRlZFNldDxS
ZW5kZXJOYW1lZEZsb3dUaHJlYWQqPiBSZW5kZXJOYW1lZEZsb3dUaHJlYWRDb3VudGVkU2V0OwpA
QCAtNDQsNyArNDMsNyBAQCB0eXBlZGVmIExpc3RIYXNoU2V0PEVsZW1lbnQqPiBOYW1lZEZsb3dD
CiAKIGNsYXNzIFJlbmRlck5hbWVkRmxvd1RocmVhZCBmaW5hbCA6IHB1YmxpYyBSZW5kZXJGbG93
VGhyZWFkLCBwdWJsaWMgU2VsZWN0aW9uU3VidHJlZVJvb3QgewogcHVibGljOgotICAgIFJlbmRl
ck5hbWVkRmxvd1RocmVhZChEb2N1bWVudCYsIFJlbmRlclN0eWxlJiYsIFJlZjxXZWJLaXROYW1l
ZEZsb3c+JiYpOworICAgIFJlbmRlck5hbWVkRmxvd1RocmVhZChEb2N1bWVudCYsIFJlbmRlclN0
eWxlJiYpOwogICAgIHZpcnR1YWwgflJlbmRlck5hbWVkRmxvd1RocmVhZCgpOwogCiAgICAgY29u
c3QgQXRvbWljU3RyaW5nJiBmbG93VGhyZWFkTmFtZSgpIGNvbnN0OwpAQCAtMTE4LDkgKzExNyw2
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjbGVhckNvbnRlbnRFbGVtZW50cygpOwogICAgIHZvaWQg
dXBkYXRlV3JpdGluZ01vZGUoKTsKIAotICAgIFdlYktpdE5hbWVkRmxvdyYgbmFtZWRGbG93KCkg
eyByZXR1cm4gbV9uYW1lZEZsb3c7IH0KLSAgICBjb25zdCBXZWJLaXROYW1lZEZsb3cmIG5hbWVk
RmxvdygpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZWRGbG93OyB9Ci0KICAgICAvLyBPYnNlcnZlciBm
bG93IHRocmVhZHMgaGF2ZSBpbnZhbGlkIHJlZ2lvbnMgdGhhdCBkZXBlbmQgb24gdGhlIHN0YXRl
IG9mIHRoaXMgdGhyZWFkCiAgICAgLy8gdG8gcmUtdmFsaWRhdGUgdGhlaXIgcmVnaW9ucy4gS2Vl
cGluZyBhIHNldCBvZiBvYnNlcnZlciB0aHJlYWRzIG1ha2UgaXQgZWFzeQogICAgIC8vIHRvIG5v
dGlmeSB0aGVtIHdoZW4gYSByZWdpb24gd2FzIHJlbW92ZWQgZnJvbSB0aGlzIGZsb3cuCkBAIC0x
MzgsOSArMTM0LDYgQEAgcHJpdmF0ZToKICAgICBib29sIG1faGFzUmVnaW9uc1dpdGhTdHlsaW5n
IDogMTsKICAgICBib29sIG1fZGlzcGF0Y2hSZWdpb25PdmVyc2V0Q2hhbmdlRXZlbnQgOiAxOwog
Ci0gICAgLy8gVGhlIERPTSBPYmplY3QgdGhhdCByZXByZXNlbnRzIGEgbmFtZWQgZmxvdy4KLSAg
ICBSZWY8V2ViS2l0TmFtZWRGbG93PiBtX25hbWVkRmxvdzsKLQogICAgIFRpbWVyIG1fcmVnaW9u
T3ZlcnNldENoYW5nZUV2ZW50VGltZXI7CiAKICAgICBMYXlvdXRVbml0IG1fZmxvd0NvbnRlbnRC
b3R0b207CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmNwcAko
cmV2aXNpb24gMjIyMjU3KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lv
bi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2MiwxOSArMjYyLDcgQEAgdm9pZCBSZW5kZXJSZWdp
b246OnJlcGFpbnRGbG93VGhyZWFkQ29udAogCiB2b2lkIFJlbmRlclJlZ2lvbjo6aW5zdGFsbEZs
b3dUaHJlYWQoKQogewotICAgIG1fZmxvd1RocmVhZCA9ICZ2aWV3KCkuZmxvd1RocmVhZENvbnRy
b2xsZXIoKS5lbnN1cmVSZW5kZXJGbG93VGhyZWFkV2l0aE5hbWUoc3R5bGUoKS5yZWdpb25UaHJl
YWQoKSk7Ci0KLSAgICAvLyBCeSBub3cgdGhlIGZsb3cgdGhyZWFkIHNob3VsZCBhbHJlYWR5IGJl
IGFkZGVkIHRvIHRoZSByZW5kZXJpbmcgdHJlZSwKLSAgICAvLyBzbyB3ZSBnbyB1cCB0aGUgcmVu
ZGVyaW5nIHBhcmVudHMgYW5kIGNoZWNrIHRoYXQgdGhpcyByZWdpb24gaXMgbm90IHBhcnQgb2Yg
dGhlIHNhbWUKLSAgICAvLyBmbG93IHRoYXQgaXQgYWN0dWFsbHkgbmVlZHMgdG8gZGlzcGxheS4g
SXQgd291bGQgY3JlYXRlIGEgY2lyY3VsYXIgcmVmZXJlbmNlLgotCi0gICAgYXV0byBjbG9zZXN0
Rmxvd1RocmVhZEFuY2VzdG9yID0gYW5jZXN0b3JzT2ZUeXBlPFJlbmRlck5hbWVkRmxvd1RocmVh
ZD4oKnRoaXMpLmZpcnN0KCk7Ci0gICAgaWYgKCFjbG9zZXN0Rmxvd1RocmVhZEFuY2VzdG9yKSB7
Ci0gICAgICAgIG1fcGFyZW50TmFtZWRGbG93VGhyZWFkID0gbnVsbHB0cjsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIG1fcGFyZW50TmFtZWRGbG93VGhyZWFkID0gJipjbG9zZXN0Rmxv
d1RocmVhZEFuY2VzdG9yOworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCiB2b2lkIFJl
bmRlclJlZ2lvbjo6YXR0YWNoUmVnaW9uKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5oCShyZXZpc2lvbiAyMjIy
NTcpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVDb25zdGFu
dHMuaAkod29ya2luZyBjb3B5KQpAQCAtNDc3LDcgKzQ3Nyw3IEBAIGVudW0gVGV4dFpvb20gewog
fTsKIAogZW51bSBCcmVha0JldHdlZW4gewotICAgIEF1dG9CcmVha0JldHdlZW4sIEF2b2lkQnJl
YWtCZXR3ZWVuLCBBdm9pZENvbHVtbkJyZWFrQmV0d2VlbiwgQXZvaWRQYWdlQnJlYWtCZXR3ZWVu
LCBBdm9pZFJlZ2lvbkJyZWFrQmV0d2VlbiwgQ29sdW1uQnJlYWtCZXR3ZWVuLCBSZWdpb25CcmVh
a0JldHdlZW4sIFBhZ2VCcmVha0JldHdlZW4sIExlZnRQYWdlQnJlYWtCZXR3ZWVuLCBSaWdodFBh
Z2VCcmVha0JldHdlZW4sIFJlY3RvUGFnZUJyZWFrQmV0d2VlbiwgVmVyc29QYWdlQnJlYWtCZXR3
ZWVuCisgICAgQXV0b0JyZWFrQmV0d2VlbiwgQXZvaWRCcmVha0JldHdlZW4sIEF2b2lkQ29sdW1u
QnJlYWtCZXR3ZWVuLCBBdm9pZFBhZ2VCcmVha0JldHdlZW4sIENvbHVtbkJyZWFrQmV0d2Vlbiwg
UGFnZUJyZWFrQmV0d2VlbiwgTGVmdFBhZ2VCcmVha0JldHdlZW4sIFJpZ2h0UGFnZUJyZWFrQmV0
d2VlbiwgUmVjdG9QYWdlQnJlYWtCZXR3ZWVuLCBWZXJzb1BhZ2VCcmVha0JldHdlZW4KIH07CiBi
b29sIGFsd2F5c1BhZ2VCcmVhayhCcmVha0JldHdlZW4pOwogICAgIApJbmRleDogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1dpbGxDaGFuZ2VEYXRhLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvV2lsbENoYW5nZURhdGEuY3BwCShyZXZpc2lv
biAyMjIyNTcpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvV2lsbENoYW5nZURh
dGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Nyw5ICs4Nyw2IEBAIGJvb2wgV2lsbENoYW5nZURh
dGE6OnByb3BlcnR5Q3JlYXRlc1N0YWMKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFzazoK
ICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFza0ltYWdlOgogICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRNYXNrQm94SW1hZ2U6Ci0jaWYgRU5BQkxFKENTU19SRUdJT05TKQotICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRGbG93RnJvbToKLSNlbmRpZgogI2lmIEVOQUJMRShBQ0NFTEVSQVRF
RF9PVkVSRkxPV19TQ1JPTExJTkcpCiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE92ZXJmbG93
U2Nyb2xsaW5nOgogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdHlsZS9SZW5kZXJUcmVl
UG9zaXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N0eWxlL1JlbmRlclRy
ZWVQb3NpdGlvbi5jcHAJKHJldmlzaW9uIDIyMjI1NykKKysrIFNvdXJjZS9XZWJDb3JlL3N0eWxl
L1JlbmRlclRyZWVQb3NpdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDkgKzI3LDcgQEAK
ICNpbmNsdWRlICJSZW5kZXJUcmVlUG9zaXRpb24uaCIKIAogI2luY2x1ZGUgIkNvbXBvc2VkVHJl
ZUl0ZXJhdG9yLmgiCi0jaW5jbHVkZSAiRmxvd1RocmVhZENvbnRyb2xsZXIuaCIKICNpbmNsdWRl
ICJQc2V1ZG9FbGVtZW50LmgiCi0jaW5jbHVkZSAiUmVuZGVyTmFtZWRGbG93VGhyZWFkLmgiCiAj
aW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgogCkBAIC02
Nyw4ICs2NSw3IEBAIFJlbmRlck9iamVjdCogUmVuZGVyVHJlZVBvc2l0aW9uOjpwcmV2aW8KIAog
ICAgIGF1dG8gY29tcG9zZWRDaGlsZHJlbiA9IGNvbXBvc2VkVHJlZUNoaWxkcmVuKCpwYXJlbnRF
bGVtZW50KTsKICAgICBmb3IgKGF1dG8gaXQgPSBjb21wb3NlZENoaWxkcmVuLmF0KHRleHROb2Rl
KSwgZW5kID0gY29tcG9zZWRDaGlsZHJlbi5lbmQoKTsgaXQgIT0gZW5kOyAtLWl0KSB7Ci0gICAg
ICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBpdC0+cmVuZGVyZXIoKTsKLSAgICAgICAgaWYg
KHJlbmRlcmVyICYmICFpc1JlbmRlcmVyUmVwYXJlbnRlZCgqcmVuZGVyZXIpKQorICAgICAgICBp
ZiAoYXV0byogcmVuZGVyZXIgPSBpdC0+cmVuZGVyZXIoKSkKICAgICAgICAgICAgIHJldHVybiBy
ZW5kZXJlcjsKICAgICB9CiAgICAgaWYgKGF1dG8qIGJlZm9yZSA9IHBhcmVudEVsZW1lbnQtPmJl
Zm9yZVBzZXVkb0VsZW1lbnQoKSkKQEAgLTk1LDggKzkyLDcgQEAgUmVuZGVyT2JqZWN0KiBSZW5k
ZXJUcmVlUG9zaXRpb246Om5leHRTaQogICAgICAgICAgICAgaXQudHJhdmVyc2VOZXh0KCk7CiAg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQotICAgICAgICBSZW5kZXJPYmplY3QqIHJl
bmRlcmVyID0gbm9kZS5yZW5kZXJlcigpOwotICAgICAgICBpZiAocmVuZGVyZXIgJiYgIWlzUmVu
ZGVyZXJSZXBhcmVudGVkKCpyZW5kZXJlcikpCisgICAgICAgIGlmIChhdXRvKiByZW5kZXJlciA9
IGl0LT5yZW5kZXJlcigpKQogICAgICAgICAgICAgcmV0dXJuIHJlbmRlcmVyOwogICAgICAgICAK
ICAgICAgICAgaXQudHJhdmVyc2VOZXh0U2tpcHBpbmdDaGlsZHJlbigpOwpAQCAtMTA2LDU3ICsx
MDIsNCBAQCBSZW5kZXJPYmplY3QqIFJlbmRlclRyZWVQb3NpdGlvbjo6bmV4dFNpCiAgICAgcmV0
dXJuIG51bGxwdHI7CiB9CiAKLSNpZiBFTkFCTEUoQ1NTX1JFR0lPTlMpCi1SZW5kZXJUcmVlUG9z
aXRpb24gUmVuZGVyVHJlZVBvc2l0aW9uOjppbnNlcnRpb25Qb3NpdGlvbkZvckZsb3dUaHJlYWQo
RWxlbWVudCogaW5zZXJ0aW9uUGFyZW50LCBFbGVtZW50JiBlbGVtZW50LCBjb25zdCBSZW5kZXJT
dHlsZSYgc3R5bGUpCi17Ci0gICAgQVNTRVJUKGVsZW1lbnQuc2hvdWxkTW92ZVRvRmxvd1RocmVh
ZChzdHlsZSkpOwotICAgIGF1dG8mIHBhcmVudEZsb3dUaHJlYWQgPSBlbGVtZW50LmRvY3VtZW50
KCkucmVuZGVyVmlldygpLT5mbG93VGhyZWFkQ29udHJvbGxlcigpLmVuc3VyZVJlbmRlckZsb3dU
aHJlYWRXaXRoTmFtZShzdHlsZS5mbG93VGhyZWFkKCkpOwotCi0gICAgaWYgKCFpbnNlcnRpb25Q
YXJlbnQpCi0gICAgICAgIHJldHVybiB7IHBhcmVudEZsb3dUaHJlYWQsIG51bGxwdHIgfTsKLQot
ICAgIGF1dG8gY29tcG9zZWREZXNjZW5kYW50cyA9IGNvbXBvc2VkVHJlZURlc2NlbmRhbnRzKCpp
bnNlcnRpb25QYXJlbnQpOwotICAgIGF1dG8gaXQgPSBlbGVtZW50LmlzQmVmb3JlUHNldWRvRWxl
bWVudCgpID8gY29tcG9zZWREZXNjZW5kYW50cy5iZWdpbigpIDogY29tcG9zZWREZXNjZW5kYW50
cy5hdChlbGVtZW50KTsKLSAgICBhdXRvIGVuZCA9IGNvbXBvc2VkRGVzY2VuZGFudHMuZW5kKCk7
Ci0gICAgd2hpbGUgKGl0ICE9IGVuZCkgewotICAgICAgICBhdXRvJiBjdXJyZW50Tm9kZSA9ICpp
dDsKLSAgICAgICAgYm9vbCBoYXNEaXNwbGF5Q29udGVudHMgPSBpczxFbGVtZW50PihjdXJyZW50
Tm9kZSkgJiYgZG93bmNhc3Q8RWxlbWVudD4oY3VycmVudE5vZGUpLmhhc0Rpc3BsYXlDb250ZW50
cygpOwotICAgICAgICBpZiAoaGFzRGlzcGxheUNvbnRlbnRzKSB7Ci0gICAgICAgICAgICBpdC50
cmF2ZXJzZU5leHQoKTsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0KLSAgICAg
ICAgYXV0byogcmVuZGVyZXIgPSBjdXJyZW50Tm9kZS5yZW5kZXJlcigpOwotICAgICAgICBpZiAo
IXJlbmRlcmVyKSB7Ci0gICAgICAgICAgICBpdC50cmF2ZXJzZU5leHRTa2lwcGluZ0NoaWxkcmVu
KCk7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICghaXM8
UmVuZGVyRWxlbWVudD4oKnJlbmRlcmVyKSkgewotICAgICAgICAgICAgaXQudHJhdmVyc2VOZXh0
KCk7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIFdlIGFy
ZSB0aGUgbGFzdCBjaGlsZCBpbiB0aGlzIGZsb3cuCi0gICAgICAgIGlmICghaXNSZW5kZXJlclJl
cGFyZW50ZWQoKnJlbmRlcmVyKSkKLSAgICAgICAgICAgIHJldHVybiB7IHBhcmVudEZsb3dUaHJl
YWQsIG51bGxwdHIgfTsKLQotICAgICAgICBpZiAocmVuZGVyZXItPnN0eWxlKCkuaGFzRmxvd0lu
dG8oKSAmJiBzdHlsZS5mbG93VGhyZWFkKCkgPT0gcmVuZGVyZXItPnN0eWxlKCkuZmxvd1RocmVh
ZCgpKQotICAgICAgICAgICAgcmV0dXJuIHsgcGFyZW50Rmxvd1RocmVhZCwgZG93bmNhc3Q8UmVu
ZGVyRWxlbWVudD4ocmVuZGVyZXIpIH07Ci0gICAgICAgIC8vIE5lc3RlZCBmbG93cywgc2tpcC4K
LSAgICAgICAgaXQudHJhdmVyc2VOZXh0U2tpcHBpbmdDaGlsZHJlbigpOwotICAgIH0KLSAgICBy
ZXR1cm4geyBwYXJlbnRGbG93VGhyZWFkLCBudWxscHRyIH07Ci19Ci0jZW5kaWYKLSAgICAKLWJv
b2wgUmVuZGVyVHJlZVBvc2l0aW9uOjppc1JlbmRlcmVyUmVwYXJlbnRlZChjb25zdCBSZW5kZXJP
YmplY3QmIHJlbmRlcmVyKQotewotICAgIGlmICghcmVuZGVyZXIubm9kZSgpLT5pc0VsZW1lbnRO
b2RlKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAocmVuZGVyZXIuc3R5bGUoKS5o
YXNGbG93SW50bygpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICByZXR1cm4gZmFsc2U7Ci19
Ci0KIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N0eWxlL1JlbmRlclRyZWVQb3NpdGlvbi5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N0eWxlL1JlbmRlclRyZWVQb3NpdGlvbi5oCShy
ZXZpc2lvbiAyMjIyNTcpCisrKyBTb3VyY2UvV2ViQ29yZS9zdHlsZS9SZW5kZXJUcmVlUG9zaXRp
b24uaAkod29ya2luZyBjb3B5KQpAQCAtNDQsMTAgKzQ0LDYgQEAgcHVibGljOgogICAgICAgICA6
IG1fcGFyZW50KHBhcmVudCkKICAgICB7CiAgICAgfQotICAgIAotI2lmIEVOQUJMRShDU1NfUkVH
SU9OUykKLSAgICBzdGF0aWMgUmVuZGVyVHJlZVBvc2l0aW9uIGluc2VydGlvblBvc2l0aW9uRm9y
Rmxvd1RocmVhZChFbGVtZW50KiBpbnNlcnRpb25QYXJlbnQsIEVsZW1lbnQmIGNoaWxkLCBjb25z
dCBSZW5kZXJTdHlsZSYpOwotI2VuZGlmCiAKICAgICBSZW5kZXJFbGVtZW50JiBwYXJlbnQoKSBj
b25zdCB7IHJldHVybiBtX3BhcmVudDsgfQogICAgIHZvaWQgaW5zZXJ0KFJlbmRlck9iamVjdCYp
OwpAQCAtNjAsMTggKzU2LDggQEAgcHVibGljOgogCiAgICAgUmVuZGVyT2JqZWN0KiBwcmV2aW91
c1NpYmxpbmdSZW5kZXJlcihjb25zdCBUZXh0JikgY29uc3Q7CiAgICAgUmVuZGVyT2JqZWN0KiBu
ZXh0U2libGluZ1JlbmRlcmVyKGNvbnN0IE5vZGUmKSBjb25zdDsKLSAgICBzdGF0aWMgYm9vbCBp
c1JlbmRlcmVyUmVwYXJlbnRlZChjb25zdCBSZW5kZXJPYmplY3QmKTsKIAogcHJpdmF0ZToKLSNp
ZiBFTkFCTEUoQ1NTX1JFR0lPTlMpCi0gICAgUmVuZGVyVHJlZVBvc2l0aW9uKFJlbmRlckZsb3dU
aHJlYWQmIHBhcmVudCwgUmVuZGVyT2JqZWN0KiBuZXh0U2libGluZykKLSAgICAgICAgOiBtX3Bh
cmVudChwYXJlbnQpCi0gICAgICAgICwgbV9uZXh0U2libGluZyhuZXh0U2libGluZykKLSAgICAg
ICAgLCBtX2hhc1ZhbGlkTmV4dFNpYmxpbmcodHJ1ZSkKLSAgICB7Ci0gICAgfQotI2VuZGlmCi0K
ICAgICBSZW5kZXJFbGVtZW50JiBtX3BhcmVudDsKICAgICBSZW5kZXJPYmplY3QqIG1fbmV4dFNp
YmxpbmcgeyBudWxscHRyIH07CiAgICAgYm9vbCBtX2hhc1ZhbGlkTmV4dFNpYmxpbmcgeyBmYWxz
ZSB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvc3R5bGUvUmVuZGVyVHJlZVVwZGF0ZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N0eWxlL1JlbmRlclRyZWVVcGRhdGVyLmNwcAko
cmV2aXNpb24gMjIyMjU3KQorKysgU291cmNlL1dlYkNvcmUvc3R5bGUvUmVuZGVyVHJlZVVwZGF0
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw2IEBACiAjaW5jbHVkZSAiQ29tcG9z
ZWRUcmVlSXRlcmF0b3IuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkVsZW1l
bnQuaCIKLSNpbmNsdWRlICJGbG93VGhyZWFkQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkhUTUxT
bG90RWxlbWVudC5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2lu
Y2x1ZGUgIk5vZGVSZW5kZXJTdHlsZS5oIgpAQCAtNDAsNyArMzksNiBAQAogI2luY2x1ZGUgIlJl
bmRlckRlc2NlbmRhbnRJdGVyYXRvci5oIgogI2luY2x1ZGUgIlJlbmRlckZ1bGxTY3JlZW4uaCIK
ICNpbmNsdWRlICJSZW5kZXJMaXN0SXRlbS5oIgotI2luY2x1ZGUgIlJlbmRlck5hbWVkRmxvd1Ro
cmVhZC5oIgogI2luY2x1ZGUgIlJlbmRlclRyZWVVcGRhdGVyRmlyc3RMZXR0ZXIuaCIKICNpbmNs
dWRlICJSZW5kZXJUcmVlVXBkYXRlckdlbmVyYXRlZENvbnRlbnQuaCIKICNpbmNsdWRlICJSZW5k
ZXJUcmVlVXBkYXRlckxpc3RJdGVtLmgiCkBAIC0zMDAsOCArMjk4LDcgQEAgdm9pZCBSZW5kZXJU
cmVlVXBkYXRlcjo6dXBkYXRlRWxlbWVudFJlbgogICAgIENoZWNrRm9yVmlzaWJpbGl0eUNoYW5n
ZSBjaGVja0ZvclZpc2liaWxpdHlDaGFuZ2UoZWxlbWVudCk7CiAjZW5kaWYKIAotICAgIGJvb2wg
c2hvdWxkVGVhckRvd25SZW5kZXJlcnMgPSB1cGRhdGUuY2hhbmdlID09IFN0eWxlOjpEZXRhY2gK
LSAgICAgICAgJiYgKGVsZW1lbnQucmVuZGVyZXIoKSB8fCBlbGVtZW50LmlzTmFtZWRGbG93Q29u
dGVudEVsZW1lbnQoKSB8fCBlbGVtZW50Lmhhc0Rpc3BsYXlDb250ZW50cygpKTsKKyAgICBib29s
IHNob3VsZFRlYXJEb3duUmVuZGVyZXJzID0gdXBkYXRlLmNoYW5nZSA9PSBTdHlsZTo6RGV0YWNo
ICYmIChlbGVtZW50LnJlbmRlcmVyKCkgfHwgZWxlbWVudC5oYXNEaXNwbGF5Q29udGVudHMoKSk7
CiAgICAgaWYgKHNob3VsZFRlYXJEb3duUmVuZGVyZXJzKSB7CiAgICAgICAgIGlmICghZWxlbWVu
dC5yZW5kZXJlcigpKSB7CiAgICAgICAgICAgICAvLyBXZSBtYXkgYmUgdGVhcmluZyBkb3duIGEg
ZGVzY2VuZGFudCByZW5kZXJlciBjYWNoZWQgaW4gcmVuZGVyVHJlZVBvc2l0aW9uLgpAQCAtMzQ4
LDI1ICszNDUsOSBAQCB2b2lkIFJlbmRlclRyZWVVcGRhdGVyOjp1cGRhdGVFbGVtZW50UmVuCiAg
ICAgcmVuZGVyZXIuc2V0U3R5bGUoUmVuZGVyU3R5bGU6OmNsb25lKCp1cGRhdGUuc3R5bGUpLCBT
dHlsZURpZmZlcmVuY2VFcXVhbCk7CiB9CiAKLSNpZiBFTkFCTEUoQ1NTX1JFR0lPTlMpCi1zdGF0
aWMgdm9pZCByZWdpc3RlckVsZW1lbnRGb3JGbG93VGhyZWFkSWZOZWVkZWQoRWxlbWVudCYgZWxl
bWVudCwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQotewotICAgIGlmICghZWxlbWVudC5zaG91
bGRNb3ZlVG9GbG93VGhyZWFkKHN0eWxlKSkKLSAgICAgICAgcmV0dXJuOwotICAgIEZsb3dUaHJl
YWRDb250cm9sbGVyJiBmbG93VGhyZWFkQ29udHJvbGxlciA9IHJlbmRlclZpZXcoKS5mbG93VGhy
ZWFkQ29udHJvbGxlcigpOwotICAgIGZsb3dUaHJlYWRDb250cm9sbGVyLnJlZ2lzdGVyTmFtZWRG
bG93Q29udGVudEVsZW1lbnQoZWxlbWVudCwgZmxvd1RocmVhZENvbnRyb2xsZXIuZW5zdXJlUmVu
ZGVyRmxvd1RocmVhZFdpdGhOYW1lKHN0eWxlLmZsb3dUaHJlYWQoKSkpOwotfQotI2VuZGlmCi0K
IHZvaWQgUmVuZGVyVHJlZVVwZGF0ZXI6OmNyZWF0ZVJlbmRlcmVyKEVsZW1lbnQmIGVsZW1lbnQs
IFJlbmRlclN0eWxlJiYgc3R5bGUpCiB7Ci0gICAgYXV0byBjb21wdXRlSW5zZXJ0aW9uUG9zaXRp
b24gPSBbdGhpcywgJmVsZW1lbnQsICZzdHlsZV0gKCkgewotI2lmIEVOQUJMRShDU1NfUkVHSU9O
UykKLSAgICAgICAgaWYgKGVsZW1lbnQuc2hvdWxkTW92ZVRvRmxvd1RocmVhZChzdHlsZSkpCi0g
ICAgICAgICAgICByZXR1cm4gUmVuZGVyVHJlZVBvc2l0aW9uOjppbnNlcnRpb25Qb3NpdGlvbkZv
ckZsb3dUaHJlYWQocmVuZGVyVHJlZVBvc2l0aW9uKCkucGFyZW50KCkuZWxlbWVudCgpLCBlbGVt
ZW50LCBzdHlsZSk7Ci0jZWxzZQotICAgICAgICBVTlVTRURfUEFSQU0oc3R5bGUpOwotI2VuZGlm
CisgICAgYXV0byBjb21wdXRlSW5zZXJ0aW9uUG9zaXRpb24gPSBbdGhpcywgJmVsZW1lbnRdICgp
IHsKICAgICAgICAgcmVuZGVyVHJlZVBvc2l0aW9uKCkuY29tcHV0ZU5leHRTaWJsaW5nKGVsZW1l
bnQpOwogICAgICAgICByZXR1cm4gcmVuZGVyVHJlZVBvc2l0aW9uKCk7CiAgICAgfTsKQEAgLTM3
NCwxMSArMzU1LDYgQEAgdm9pZCBSZW5kZXJUcmVlVXBkYXRlcjo6Y3JlYXRlUmVuZGVyZXIoRQog
ICAgIGlmICghc2hvdWxkQ3JlYXRlUmVuZGVyZXIoZWxlbWVudCwgcmVuZGVyVHJlZVBvc2l0aW9u
KCkucGFyZW50KCkpKQogICAgICAgICByZXR1cm47CiAKLSNpZiBFTkFCTEUoQ1NTX1JFR0lPTlMp
Ci0gICAgLy8gRXZlbiBkaXNwbGF5OiBub25lIGVsZW1lbnRzIG5lZWQgdG8gYmUgcmVnaXN0ZXJl
ZCBpbiBGbG93VGhyZWFkQ29udHJvbGxlci4KLSAgICByZWdpc3RlckVsZW1lbnRGb3JGbG93VGhy
ZWFkSWZOZWVkZWQoZWxlbWVudCwgc3R5bGUpOwotI2VuZGlmCi0KICAgICBpZiAoIWVsZW1lbnQu
cmVuZGVyZXJJc05lZWRlZChzdHlsZSkpCiAgICAgICAgIHJldHVybjsKIApAQCAtMzkxLDEwICsz
NjcsNiBAQCB2b2lkIFJlbmRlclRyZWVVcGRhdGVyOjpjcmVhdGVSZW5kZXJlcihFCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICAvLyBNYWtlIHN1cmUgdGhlIFJlbmRlck9iamVjdCBhbHJl
YWR5IGtub3dzIGl0IGlzIGdvaW5nIHRvIGJlIGFkZGVkIHRvIGEgUmVuZGVyRmxvd1RocmVhZCBi
ZWZvcmUgd2Ugc2V0IHRoZSBzdHlsZQotICAgIC8vIGZvciB0aGUgZmlyc3QgdGltZS4gT3RoZXJ3
aXNlIGNvZGUgdXNpbmcgaW5SZW5kZXJGbG93VGhyZWFkKCkgaW4gdGhlIHN0eWxlV2lsbENoYW5n
ZSBhbmQgc3R5bGVEaWRDaGFuZ2Ugd2lsbCBmYWlsLgotICAgIG5ld1JlbmRlcmVyLT5zZXRGbG93
VGhyZWFkU3RhdGUoaW5zZXJ0aW9uUG9zaXRpb24ucGFyZW50KCkuZmxvd1RocmVhZFN0YXRlKCkp
OwotCiAgICAgZWxlbWVudC5zZXRSZW5kZXJlcihuZXdSZW5kZXJlcik7CiAKICAgICBuZXdSZW5k
ZXJlci0+aW5pdGlhbGl6ZVN0eWxlKCk7CkBAIC01MDMsOSArNDc1LDkgQEAgdm9pZCBSZW5kZXJU
cmVlVXBkYXRlcjo6aW52YWxpZGF0ZVdoaXRlcwogICAgICAgICAgICAgaWYgKG1fc3R5bGVVcGRh
dGUtPmVsZW1lbnRVcGRhdGUoZG93bmNhc3Q8RWxlbWVudD4oKnNpYmxpbmcpKSkKICAgICAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAvLyBUZXh0IHJlbmRlcmVycyBiZXlvbmQgcmVu
ZGVyZWQgZWxlbWVudHMgY2FuJ3QgYmUgYWZmZWN0ZWQuCi0gICAgICAgICAgICBpZiAoIXNpYmxp
bmctPnJlbmRlcmVyKCkgfHwgUmVuZGVyVHJlZVBvc2l0aW9uOjppc1JlbmRlcmVyUmVwYXJlbnRl
ZCgqc2libGluZy0+cmVuZGVyZXIoKSkpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAg
ICAgICAgICByZXR1cm47CisgICAgICAgICAgICBpZiAoc2libGluZy0+cmVuZGVyZXIoKSkKKyAg
ICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQog
ICAgICAgICBpZiAoIWlzPFRleHQ+KCpzaWJsaW5nKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvc3R5bGUvUmVuZGVyVHJlZVVwZGF0ZXJHZW5lcmF0ZWRDb250
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdHlsZS9SZW5kZXJUcmVlVXBk
YXRlckdlbmVyYXRlZENvbnRlbnQuY3BwCShyZXZpc2lvbiAyMjIyNTcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9zdHlsZS9SZW5kZXJUcmVlVXBkYXRlckdlbmVyYXRlZENvbnRlbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC04Miw5ICs4Miw2IEBAIHZvaWQgUmVuZGVyVHJlZVVwZGF0ZXI6OkdlbmVyYXRl
ZENvbnRlbnQKIHN0YXRpYyB2b2lkIGNyZWF0ZUNvbnRlbnRSZW5kZXJlcnMoUmVuZGVyRWxlbWVu
dCYgcmVuZGVyZXIpCiB7CiAgICAgYXV0byYgc3R5bGUgPSByZW5kZXJlci5zdHlsZSgpOwotICAg
IGlmIChzdHlsZS5oYXNGbG93RnJvbSgpKQotICAgICAgICByZXR1cm47Ci0KICAgICBBU1NFUlQo
c3R5bGUuY29udGVudERhdGEoKSk7CiAKICAgICBmb3IgKGNvbnN0IENvbnRlbnREYXRhKiBjb250
ZW50ID0gc3R5bGUuY29udGVudERhdGEoKTsgY29udGVudDsgY29udGVudCA9IGNvbnRlbnQtPm5l
eHQoKSkgewpJbmRleDogU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVDaGFuZ2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlQ2hhbmdlLmNwcAkocmV2aXNpb24g
MjIyMjU3KQorKysgU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVDaGFuZ2UuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00OCwxNyArNDgsNiBAQCBDaGFuZ2UgZGV0ZXJtaW5lQ2hhbmdlKGNvbnN0IFJl
bmRlclN0eWxlCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTU1MDY5CiAgICAgaWYgKHMxLmhhc1RleHRDb21iaW5lKCkgIT0gczIuaGFzVGV4dENvbWJpbmUo
KSkKICAgICAgICAgcmV0dXJuIERldGFjaDsKLSAgICAvLyBXZSBuZWVkIHRvIHJlYXR0YWNoIHRo
ZSBub2RlLCBzbyB0aGF0IGl0IGlzIG1vdmVkIHRvIHRoZSBjb3JyZWN0IFJlbmRlckZsb3dUaHJl
YWQuCi0gICAgaWYgKHMxLmZsb3dUaHJlYWQoKSAhPSBzMi5mbG93VGhyZWFkKCkpCi0gICAgICAg
IHJldHVybiBEZXRhY2g7Ci0gICAgLy8gV2hlbiB0aGUgcmVnaW9uIHRocmVhZCBoYXMgY2hhbmdl
ZCwgd2UgbmVlZCB0byBwcmVwYXJlIGEgc2VwYXJhdGUgcmVuZGVyIHJlZ2lvbiBvYmplY3QuCi0g
ICAgaWYgKHMxLnJlZ2lvblRocmVhZCgpICE9IHMyLnJlZ2lvblRocmVhZCgpKQotICAgICAgICBy
ZXR1cm4gRGV0YWNoOwotICAgIC8vIEZJWE1FOiBNdWx0aWNvbHVtbiByZWdpb25zIG5vdCB5ZXQg
c3VwcG9ydGVkIChodHRwOi8vZGV2LnczLm9yZy9jc3N3Zy9jc3MtcmVnaW9ucy8jbXVsdGktY29s
dW1uLXJlZ2lvbnMpCi0gICAgLy8gV2hlbiB0aGUgbm9kZSBoYXMgcmVnaW9uIHN0eWxlIGFuZCBj
aGFuZ2VkIGl0cyBtdWx0aWNvbCBzdHlsZSwgd2UgaGF2ZSB0byBwcmVwYXJlCi0gICAgLy8gYSBz
ZXBhcmF0ZSByZW5kZXIgcmVnaW9uIG9iamVjdC4KLSAgICBpZiAoczEuaGFzRmxvd0Zyb20oKSAm
JiAoczEuc3BlY2lmaWVzQ29sdW1ucygpICE9IHMyLnNwZWNpZmllc0NvbHVtbnMoKSkpCi0gICAg
ICAgIHJldHVybiBEZXRhY2g7CiAKICAgICBpZiAoczEgIT0gczIpIHsKICAgICAgICAgaWYgKHMx
LmluaGVyaXRlZE5vdEVxdWFsKCZzMikpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHls
ZVRyZWVSZXNvbHZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5
bGVUcmVlUmVzb2x2ZXIuY3BwCShyZXZpc2lvbiAyMjIyNTcpCisrKyBTb3VyY2UvV2ViQ29yZS9z
dHlsZS9TdHlsZVRyZWVSZXNvbHZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNCw3ICsxMjQs
NyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IFRyZWVSZXNvbHZlCiAgICAgaWYgKGF1
dG8gc3R5bGUgPSBzY29wZSgpLnNoYXJpbmdSZXNvbHZlci5yZXNvbHZlKGVsZW1lbnQsICptX3Vw
ZGF0ZSkpCiAgICAgICAgIHJldHVybiBzdHlsZTsKIAotICAgIGF1dG8gZWxlbWVudFN0eWxlID0g
c2NvcGUoKS5zdHlsZVJlc29sdmVyLnN0eWxlRm9yRWxlbWVudChlbGVtZW50LCAmaW5oZXJpdGVk
U3R5bGUsIHBhcmVudEJveFN0eWxlKCksIE1hdGNoQWxsUnVsZXMsIG51bGxwdHIsICZzY29wZSgp
LnNlbGVjdG9yRmlsdGVyKTsKKyAgICBhdXRvIGVsZW1lbnRTdHlsZSA9IHNjb3BlKCkuc3R5bGVS
ZXNvbHZlci5zdHlsZUZvckVsZW1lbnQoZWxlbWVudCwgJmluaGVyaXRlZFN0eWxlLCBwYXJlbnRC
b3hTdHlsZSgpLCBNYXRjaEFsbFJ1bGVzLCAmc2NvcGUoKS5zZWxlY3RvckZpbHRlcik7CiAKICAg
ICBpZiAoZWxlbWVudFN0eWxlLnJlbGF0aW9ucykKICAgICAgICAgY29tbWl0UmVsYXRpb25zKFdU
Rk1vdmUoZWxlbWVudFN0eWxlLnJlbGF0aW9ucyksICptX3VwZGF0ZSk7CkBAIC0xNjIsMTAgKzE2
Miw2IEBAIHN0YXRpYyBib29sIGFmZmVjdHNSZW5kZXJlZFN1YnRyZWUoRWxlbWUKICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgaWYgKGVsZW1lbnQucmVuZGVyZXJJc05lZWRlZChuZXdTdHlsZSkp
CiAgICAgICAgIHJldHVybiB0cnVlOwotI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKLSAgICBpZiAo
ZWxlbWVudC5zaG91bGRNb3ZlVG9GbG93VGhyZWFkKG5ld1N0eWxlKSkKLSAgICAgICAgcmV0dXJu
IHRydWU7Ci0jZW5kaWYKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRWxlbWVudC5jcHAJKHJldmlzaW9uIDIyMjI1NykKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTg5LDE0ICs1ODksNiBAQCBzdGF0aWMg
Ym9vbCBoYXNMb2FkTGlzdGVuZXIoRWxlbWVudCogZWxlCiAgICAgcmV0dXJuIGZhbHNlOwogfQog
Ci0jaWYgRU5BQkxFKENTU19SRUdJT05TKQotYm9vbCBTVkdFbGVtZW50OjpzaG91bGRNb3ZlVG9G
bG93VGhyZWFkKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZVRvVXNlKSBjb25zdAotewotICAgIC8v
IEFsbG93IG9ubHkgc3ZnIHJvb3QgZWxlbWVudHMgdG8gYmUgZGlyZWN0bHkgY29sbGVjdGVkIGJ5
IGEgcmVuZGVyIGZsb3cgdGhyZWFkLgotICAgIHJldHVybiBwYXJlbnROb2RlKCkgJiYgIXBhcmVu
dE5vZGUoKS0+aXNTVkdFbGVtZW50KCkgJiYgaGFzVGFnTmFtZShTVkdOYW1lczo6c3ZnVGFnKSAm
JiBFbGVtZW50OjpzaG91bGRNb3ZlVG9GbG93VGhyZWFkKHN0eWxlVG9Vc2UpOwotfQotI2VuZGlm
Ci0KIHZvaWQgU1ZHRWxlbWVudDo6c2VuZFNWR0xvYWRFdmVudElmUG9zc2libGUoYm9vbCBzZW5k
UGFyZW50TG9hZEV2ZW50cykKIHsKICAgICBpZiAoIWlzQ29ubmVjdGVkKCkgfHwgIWRvY3VtZW50
KCkuZnJhbWUoKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaAkocmV2aXNpb24gMjIyMjU3
KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAt
MTMxLDEwICsxMzEsNiBAQCBwdWJsaWM6CiAgICAgYm9vbCByZW1vdmVFdmVudExpc3RlbmVyKGNv
bnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyJiwgY29uc3QgTGlzdGVu
ZXJPcHRpb25zJikgb3ZlcnJpZGU7CiAgICAgYm9vbCBoYXNGb2N1c0V2ZW50TGlzdGVuZXJzKCkg
Y29uc3Q7CiAKLSNpZiBFTkFCTEUoQ1NTX1JFR0lPTlMpCi0gICAgYm9vbCBzaG91bGRNb3ZlVG9G
bG93VGhyZWFkKGNvbnN0IFJlbmRlclN0eWxlJikgY29uc3Qgb3ZlcnJpZGU7Ci0jZW5kaWYKLQog
ICAgIGJvb2wgaGFzVGFnTmFtZShjb25zdCBTVkdRdWFsaWZpZWROYW1lJiBuYW1lKSBjb25zdCB7
IHJldHVybiBoYXNMb2NhbE5hbWUobmFtZS5sb2NhbE5hbWUoKSk7IH0KICAgICBpbnQgdGFiSW5k
ZXgoKSBjb25zdCBvdmVycmlkZTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>321303</attachid>
            <date>2017-09-20 01:55:14 -0700</date>
            <delta_ts>2017-09-20 01:57:09 -0700</delta_ts>
            <desc>patch</desc>
            <filename>named-flow-removal-dom-etc-7.patch</filename>
            <type>text/plain</type>
            <size>225016</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMjI1NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIyNCBAQAorMjAxNy0wOS0xOSAgQW50dGkg
S29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIERPTSBhbmQgc3R5
bGluZyBzdXBwb3J0IGZvciBDU1MgUmVnaW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc3MjIxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCByZW1vdmVzIGFsbCBDU1MgUmVnaW9ucyAo
YWthICJuYW1lZCBmbG93IikgcmVsYXRlZCBjb2RlIGV4Y2x1ZGluZyByZW5kZXJpbmcuCisKKyAg
ICAgICAgVGhlIGZlYXR1cmUgaXMgYWxyZWFkeSBkaXNhYmxlZCBzbyBubyBmdW5jdGlvbmFsIGNo
YW5nZXMuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBDb25maWd1cmF0
aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZzoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5t
YWtlOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU0NTU1J1bGVDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
dG9KU05ld2x5Q3JlYXRlZCk6CisgICAgICAgICogY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJh
dGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb250ZW50VG9DU1NWYWx1ZSk6CisgICAgICAg
IChXZWJDb3JlOjpDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0eVZhbHVlKToKKyAgICAg
ICAgKFdlYkNvcmU6OmNvbnZlcnRUb1JlZ2lvbkJyZWFrKTogRGVsZXRlZC4KKyAgICAgICAgKiBj
c3MvQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJp
bWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1By
aW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBCcmVha0JldHdlZW4gY29uc3QpOgorICAgICAgICAqIGNz
cy9DU1NQcm9wZXJ0aWVzLmpzb246CisgICAgICAgICogY3NzL0NTU1J1bGUuY3BwOgorICAgICAg
ICAqIGNzcy9DU1NSdWxlLmg6CisgICAgICAgICogY3NzL0NTU1J1bGUuaWRsOgorICAgICAgICAq
IGNzcy9FbGVtZW50UnVsZUNvbGxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50
UnVsZUNvbGxlY3Rvcjo6bWF0Y2hBdXRob3JSdWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpFbGVt
ZW50UnVsZUNvbGxlY3Rvcjo6bWF0Y2hVc2VyUnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6RWxl
bWVudFJ1bGVDb2xsZWN0b3I6OmNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yUmVnaW9uKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBjc3MvRWxlbWVudFJ1bGVDb2xsZWN0b3IuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkVsZW1lbnRSdWxlQ29sbGVjdG9yOjpzZXRTYW1lT3JpZ2luT25seSk6CisgICAgICAgIChX
ZWJDb3JlOjpFbGVtZW50UnVsZUNvbGxlY3Rvcjo6c2V0UmVnaW9uRm9yU3R5bGluZyk6IERlbGV0
ZWQuCisgICAgICAgICogY3NzL0luc3BlY3RvckNTU09NV3JhcHBlcnMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yQ1NTT01XcmFwcGVyczo6Y29sbGVjdCk6CisgICAgICAgICogY3Nz
L1J1bGVTZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZGV0ZXJtaW5lUHJvcGVydHlXaGl0ZWxp
c3RUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bGVEYXRhOjpSdWxlRGF0YSk6CisgICAgICAg
IChXZWJDb3JlOjpSdWxlU2V0OjphZGRDaGlsZFJ1bGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1
bGVTZXQ6OnNocmlua1RvRml0KToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bGVTZXQ6OmFkZFJlZ2lv
blJ1bGUpOiBEZWxldGVkLgorICAgICAgICAqIGNzcy9SdWxlU2V0Lmg6CisgICAgICAgIChXZWJD
b3JlOjpSdWxlU2V0OjogY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UnVsZVNldDo6cmVnaW9u
U2VsZWN0b3JzQW5kUnVsZVNldHMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGNzcy9TdHls
ZUJ1aWxkZXJDb252ZXJ0ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlckNvbnZl
cnRlcjo6Y29udmVydFJlZ2lvbkJyZWFrQmV0d2Vlbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRSZWdpb25CcmVha0luc2lkZSk6IERl
bGV0ZWQuCisgICAgICAgICogY3NzL1N0eWxlUHJvcGVydGllcy5jcHA6CisgICAgICAgICogY3Nz
L1N0eWxlUmVzb2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6U3Rh
dGU6OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OlN0YXRlOjpTdGF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpzdHlsZUZvckVsZW1lbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6Q2FzY2FkZWRQcm9wZXJ0aWVzOjphZGRN
YXRjaCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpjaGVja1JlZ2lvblN0eWxl
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmlzVmFsaWRSZWdpb25TdHlsZVByb3BlcnR5
KTogRGVsZXRlZC4KKyAgICAgICAgKiBjc3MvU3R5bGVSZXNvbHZlci5oOgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGVSZXNvbHZlcjo6U3RhdGU6OnJlZ2lvbkZvclN0eWxpbmcgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6Y2hlY2tSZWdpb25TZWxlY3Rvcik6IERlbGV0ZWQuCisg
ICAgICAgICogY3NzL1N0eWxlUnVsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJ1bGVC
YXNlOjpkZXN0cm95KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUnVsZUJhc2U6OmNvcHkgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSdWxlQmFzZTo6Y3JlYXRlQ1NTT01XcmFwcGVy
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUnVsZVJlZ2lvbjo6U3R5bGVSdWxlUmVn
aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBjc3MvU3R5bGVSdWxlLmg6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZVJ1bGVCYXNlOjppc1N0eWxlUnVsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZVJ1bGVCYXNlOjppc1JlZ2lvblJ1bGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAq
IGNzcy9TdHlsZVNoZWV0Q29udGVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dHJhdmVyc2VT
dWJyZXNvdXJjZXNJblJ1bGVzKToKKyAgICAgICAgKiBjc3MvV2ViS2l0Q1NTUmVnaW9uUnVsZS5j
cHA6IFJlbW92ZWQuCisgICAgICAgICogY3NzL1dlYktpdENTU1JlZ2lvblJ1bGUuaDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBjc3MvV2ViS2l0Q1NTUmVnaW9uUnVsZS5pZGw6IFJlbW92ZWQuCisgICAg
ICAgICogY3NzL3BhcnNlci9DU1NBdFJ1bGVJRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjc3NB
dFJ1bGVJRCk6CisgICAgICAgICogY3NzL3BhcnNlci9DU1NBdFJ1bGVJRC5oOgorICAgICAgICAq
IGNzcy9wYXJzZXIvQ1NTUGFyc2VyRmFzdFBhdGhzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNT
U1BhcnNlckZhc3RQYXRoczo6aXNWYWxpZEtleXdvcmRQcm9wZXJ0eUFuZFZhbHVlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1BhcnNlckZhc3RQYXRoczo6aXNLZXl3b3JkUHJvcGVydHlJRCk6Cisg
ICAgICAgICogY3NzL3BhcnNlci9DU1NQYXJzZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1BhcnNlckltcGw6OmNvbnN1bWVBdFJ1bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFy
c2VySW1wbDo6Y29uc3VtZVJlZ2lvblJ1bGUpOiBEZWxldGVkLgorICAgICAgICAqIGNzcy9wYXJz
ZXIvQ1NTUGFyc2VySW1wbC5oOgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJz
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNMZWdhY3lCcmVha1Byb3BlcnR5KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VyOjpwYXJzZVNpbmdsZVZhbHVlKToKKyAgICAg
ICAgKFdlYkNvcmU6Om1hcEZyb21MZWdhY3lCcmVha1Byb3BlcnR5KToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1Byb3BlcnR5UGFyc2VyOjpjb25zdW1lTGVnYWN5QnJlYWtQcm9wZXJ0eSk6CisgICAg
ICAgIChXZWJDb3JlOjpjb25zdW1lRmxvd1Byb3BlcnR5KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6Om1hcEZyb21SZWdpb25CcmVha0JldHdlZW4pOiBEZWxldGVkLgorICAgICAgICAqIGRv
bS9Db250YWluZXJOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRlc3Ryb3lSZW5kZXJUcmVl
SWZOZWVkZWQpOgorICAgICAgICAqIGRvbS9ET01OYW1lZEZsb3dDb2xsZWN0aW9uLmNwcDogUmVt
b3ZlZC4KKyAgICAgICAgKiBkb20vRE9NTmFtZWRGbG93Q29sbGVjdGlvbi5oOiBSZW1vdmVkLgor
ICAgICAgICAqIGRvbS9ET01OYW1lZEZsb3dDb2xsZWN0aW9uLmlkbDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnVwZGF0
ZUxheW91dElmRGltZW5zaW9uc091dE9mRGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dDo6d2Via2l0R2V0TmFtZWRGbG93cyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudDo6bmFtZWRGbG93cyk6IERlbGV0ZWQuCisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6Cisg
ICAgICAgICogZG9tL0RvY3VtZW50LmlkbDoKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojp+RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpF
bGVtZW50OjpjbGVhclN0eWxlRGVyaXZlZERhdGFCZWZvcmVEZXRhY2hpbmdSZW5kZXJlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojp1bnJlZ2lzdGVyTmFtZWRGbG93Q29udGVudEVsZW1l
bnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c2V0SXNOYW1lZEZsb3dD
b250ZW50RWxlbWVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpjbGVh
cklzTmFtZWRGbG93Q29udGVudEVsZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
RWxlbWVudDo6cmFyZURhdGFJc05hbWVkRmxvd0NvbnRlbnRFbGVtZW50IGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNldFJlZ2lvbk92ZXJzZXRTdGF0ZSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpyZWdpb25PdmVyc2V0U3RhdGUgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6cmVuZGVyTmFtZWRGbG93
RnJhZ21lbnQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c2hv
dWxkTW92ZVRvRmxvd1RocmVhZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpF
bGVtZW50Ojp3ZWJraXRSZWdpb25PdmVyc2V0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkVsZW1lbnQ6OndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojpp
c05hbWVkRmxvd0NvbnRlbnRFbGVtZW50IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBkb20v
RWxlbWVudC5pZGw6CisgICAgICAgICogZG9tL0VsZW1lbnRSYXJlRGF0YS5jcHA6CisgICAgICAg
ICogZG9tL0VsZW1lbnRSYXJlRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFJhcmVE
YXRhOjpFbGVtZW50UmFyZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFJhcmVEYXRh
OjpyZWdpb25PdmVyc2V0U3RhdGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
RWxlbWVudFJhcmVEYXRhOjpzZXRSZWdpb25PdmVyc2V0U3RhdGUpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6RWxlbWVudFJhcmVEYXRhOjppc05hbWVkRmxvd0NvbnRlbnRFbGVtZW50IGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRSYXJlRGF0YTo6c2V0SXNO
YW1lZEZsb3dDb250ZW50RWxlbWVudCk6IERlbGV0ZWQuCisgICAgICAgICogZG9tL0V2ZW50VGFy
Z2V0RmFjdG9yeS5pbjoKKyAgICAgICAgKiBkb20vTmFtZWRGbG93Q29sbGVjdGlvbi5jcHA6IFJl
bW92ZWQuCisgICAgICAgICogZG9tL05hbWVkRmxvd0NvbGxlY3Rpb24uaDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBkb20vUHNldWRvRWxlbWVudC5oOgorICAgICAgICAqIGRvbS9XZWJLaXROYW1lZEZs
b3cuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIGRvbS9XZWJLaXROYW1lZEZsb3cuaDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBkb20vV2ViS2l0TmFtZWRGbG93LmlkbDogUmVtb3ZlZC4KKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yQ1NTQWdlbnQ6OnJlc2V0Tm9uUGVyc2lzdGVudERhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2hhbmdlUmVnaW9uT3ZlcnNldFRhc2s6OkNoYW5nZVJlZ2lvbk92ZXJzZXRUYXNrKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNoYW5nZVJlZ2lvbk92ZXJzZXRUYXNrOjpzY2hlZHVs
ZUZvcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDaGFuZ2VSZWdpb25PdmVyc2V0VGFz
azo6dW5zY2hlZHVsZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDaGFuZ2VSZWdpb25P
dmVyc2V0VGFzazo6cmVzZXQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q2hhbmdlUmVn
aW9uT3ZlcnNldFRhc2s6OnRpbWVyRmlyZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yQ1NTQWdlbnQ6OmRpZENyZWF0ZU5hbWVkRmxvdyk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6d2lsbFJlbW92ZU5hbWVkRmxvdyk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6ZGlkQ2hhbmdlUmVnaW9u
T3ZlcnNldCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6
cmVnaW9uT3ZlcnNldENoYW5nZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yQ1NTQWdlbnQ6OmRpZFJlZ2lzdGVyTmFtZWRGbG93Q29udGVudEVsZW1lbnQpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmRpZFVucmVnaXN0ZXJOYW1l
ZEZsb3dDb250ZW50RWxlbWVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JDU1NBZ2VudDo6Z2V0TmFtZWRGbG93Q29sbGVjdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6ZG9jdW1lbnROb2RlV2l0aFJlcXVlc3RlZEZsb3dz
SWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmJ1aWxk
QXJyYXlGb3JSZWdpb25zKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNT
U0FnZW50OjpidWlsZE9iamVjdEZvck5hbWVkRmxvdyk6IERlbGV0ZWQuCisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3RvckNTU0FnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rv
ckluc3RydW1lbnRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmRpZENyZWF0ZU5hbWVkRmxvd0ltcGwpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUmVtb3ZlTmFtZWRGbG93SW1wbCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRp
ZENoYW5nZVJlZ2lvbk92ZXJzZXRJbXBsKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVnaXN0ZXJOYW1lZEZsb3dDb250ZW50RWxlbWVu
dEltcGwpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpkaWRVbnJlZ2lzdGVyTmFtZWRGbG93Q29udGVudEVsZW1lbnRJbXBsKTogRGVsZXRlZC4K
KyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpidWlsZFJlbmRlcmVySGlnaGxpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OmJ1aWxkT2Jq
ZWN0Rm9yRWxlbWVudERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRPYmplY3RGb3JSZWdp
b24pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRPYmplY3RGb3JGbG93UmVnaW9u
cyk6IERlbGV0ZWQuCisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6aGFuZGxlV2hlZWxFdmVudEluQXBwcm9wcmlhdGVFbmNsb3NpbmdCb3gpOgorICAg
ICAgICAqIHJlbmRlcmluZy9GbG93VGhyZWFkQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGbG93VGhyZWFkQ29udHJvbGxlcjo6ZW5zdXJlUmVuZGVyRmxvd1RocmVhZFdpdGhOYW1l
KTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvRmxvd1RocmVhZENvbnRyb2xsZXIuaDoK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVnaW9uT3ZlcnNldFN0YXRlLmg6IFJlbW92ZWQuCisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJCbG9ja0Zsb3c6OmFwcGx5QmVmb3JlQnJlYWspOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyQmxvY2tGbG93OjphcHBseUFmdGVyQnJlYWspOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJOYW1lZEZsb3dGcmFnbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJOYW1lZEZs
b3dGcmFnbWVudDo6Z2V0UmFuZ2VzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck5h
bWVkRmxvd0ZyYWdtZW50OjpsYXlvdXRCbG9jayk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJO
YW1lZEZsb3dGcmFnbWVudDo6Y2hlY2tSZWdpb25TdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJOYW1lZEZsb3dGcmFnbWVudDo6Y29tcHV0ZVN0eWxlSW5SZWdpb24gY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTmFtZWRGbG93RnJhZ21lbnQ6OnNldFJlZ2lvbk9iamVjdHNS
ZWdpb25TdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJOYW1lZEZsb3dGcmFnbWVudDo6
c2V0UmVnaW9uT3ZlcnNldFN0YXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ck5hbWVkRmxvd0ZyYWdtZW50OjpyZWdpb25PdmVyc2V0U3RhdGUgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTmFtZWRGbG93RnJhZ21lbnQ6OnVwZGF0ZU92ZXJzZXRT
dGF0ZSk6IERlbGV0ZWQuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd0ZyYWdt
ZW50Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd1RocmVhZC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6OlJlbmRlck5hbWVkRmxvd1Ro
cmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6OmNsZWFyQ29u
dGVudEVsZW1lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck5hbWVkRmxvd1RocmVhZDo6
cmVnaXN0ZXJOYW1lZEZsb3dDb250ZW50RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJOYW1lZEZsb3dUaHJlYWQ6OnVucmVnaXN0ZXJOYW1lZEZsb3dDb250ZW50RWxlbWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6Omhhc0NvbnRlbnRFbGVtZW50
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck5hbWVkRmxvd1RocmVhZDo6Zmxvd1Ro
cmVhZE5hbWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTmFtZWRGbG93VGhyZWFk
OjpkaXNwYXRjaFJlZ2lvbk92ZXJzZXRDaGFuZ2VFdmVudElmTmVlZGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlck5hbWVkRmxvd1RocmVhZDo6cmVnaW9uT3ZlcnNldENoYW5nZUV2ZW50VGlt
ZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6OnNldE1h
cmtGb3JEZXN0cnVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJOYW1lZEZsb3dUaHJl
YWQ6OnJlc2V0TWFya0ZvckRlc3RydWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck5h
bWVkRmxvd1RocmVhZDo6aXNNYXJrZWRGb3JEZXN0cnVjdGlvbiBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpuZXh0Tm9kZUluc2lkZUNvbnRlbnRFbGVtZW50KToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyTmFtZWRGbG93VGhyZWFkLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclJl
Z2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJSZWdpb246Omluc3RhbGxGbG93VGhy
ZWFkKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuaDoK
KyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvV2lsbENoYW5nZURhdGEuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V2lsbENoYW5nZURhdGE6OnByb3BlcnR5Q3JlYXRlc1N0YWNraW5nQ29udGV4dCk6
CisgICAgICAgICogc3R5bGUvUmVuZGVyVHJlZVBvc2l0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclRyZWVQb3NpdGlvbjo6cHJldmlvdXNTaWJsaW5nUmVuZGVyZXIgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVHJlZVBvc2l0aW9uOjpuZXh0U2libGluZ1JlbmRlcmVy
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRyZWVQb3NpdGlvbjo6aW5zZXJ0aW9u
UG9zaXRpb25Gb3JGbG93VGhyZWFkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clRyZWVQb3NpdGlvbjo6aXNSZW5kZXJlclJlcGFyZW50ZWQpOiBEZWxldGVkLgorICAgICAgICAq
IHN0eWxlL1JlbmRlclRyZWVQb3NpdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVHJl
ZVBvc2l0aW9uOjpSZW5kZXJUcmVlUG9zaXRpb24pOgorICAgICAgICAqIHN0eWxlL1JlbmRlclRy
ZWVVcGRhdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRyZWVVcGRhdGVyOjp1cGRh
dGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVHJlZVVwZGF0ZXI6
OmNyZWF0ZVJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRyZWVVcGRhdGVyOjpp
bnZhbGlkYXRlV2hpdGVzcGFjZU9ubHlUZXh0U2libGluZ3NBZnRlckF0dGFjaElmTmVlZGVkKToK
KyAgICAgICAgKFdlYkNvcmU6OnJlZ2lzdGVyRWxlbWVudEZvckZsb3dUaHJlYWRJZk5lZWRlZCk6
IERlbGV0ZWQuCisgICAgICAgICogc3R5bGUvUmVuZGVyVHJlZVVwZGF0ZXJHZW5lcmF0ZWRDb250
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUNvbnRlbnRSZW5kZXJlcnMpOgorICAg
ICAgICAqIHN0eWxlL1N0eWxlQ2hhbmdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpk
ZXRlcm1pbmVDaGFuZ2UpOgorICAgICAgICAqIHN0eWxlL1N0eWxlVHJlZVJlc29sdmVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpUcmVlUmVzb2x2ZXI6OnN0eWxlRm9yRWxlbWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6YWZmZWN0c1JlbmRlcmVkU3VidHJlZSk6CisgICAg
ICAgICogc3ZnL1NWR0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6
c2hvdWxkTW92ZVRvRmxvd1RocmVhZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogc3ZnL1NW
R0VsZW1lbnQuaDoKKwogMjAxNy0wOS0xOSAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9y
Zz4KIAogICAgICAgICBPbiBNYWMsIGRhdGFUcmFuc2ZlciBjbGFpbXMgdG8gY29udGFpbiBVUkwg
bGlzdCB3aGVuIGRyb3BwaW5nIGZpbGVzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3Rz
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNp
b24gMjIyMjU3KQorKysgU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29w
eSkKQEAgLTQ4OCw3ICs0ODgsNiBAQCBzZXQoV2ViQ29yZV9OT05fU1ZHX0lETF9GSUxFUwogICAg
IGNzcy9TdHlsZVNoZWV0LmlkbAogICAgIGNzcy9TdHlsZVNoZWV0TGlzdC5pZGwKICAgICBjc3Mv
V2ViS2l0Q1NTTWF0cml4LmlkbAotICAgIGNzcy9XZWJLaXRDU1NSZWdpb25SdWxlLmlkbAogICAg
IGNzcy9XZWJLaXRDU1NWaWV3cG9ydFJ1bGUuaWRsCiAKICAgICBkb20vQW5pbWF0aW9uRXZlbnQu
aWRsCkBAIC01MDYsNyArNTA1LDYgQEAgc2V0KFdlYkNvcmVfTk9OX1NWR19JRExfRklMRVMKICAg
ICBkb20vRE9NRXJyb3IuaWRsCiAgICAgZG9tL0RPTUV4Y2VwdGlvbi5pZGwKICAgICBkb20vRE9N
SW1wbGVtZW50YXRpb24uaWRsCi0gICAgZG9tL0RPTU5hbWVkRmxvd0NvbGxlY3Rpb24uaWRsCiAg
ICAgZG9tL0RPTVBvaW50LmlkbAogICAgIGRvbS9ET01Qb2ludEluaXQuaWRsCiAgICAgZG9tL0RP
TVBvaW50UmVhZE9ubHkuaWRsCkBAIC01ODMsNyArNTgxLDYgQEAgc2V0KFdlYkNvcmVfTk9OX1NW
R19JRExfRklMRVMKICAgICBkb20vVUlFdmVudC5pZGwKICAgICBkb20vVUlFdmVudEluaXQuaWRs
CiAgICAgZG9tL1dlYktpdEFuaW1hdGlvbkV2ZW50LmlkbAotICAgIGRvbS9XZWJLaXROYW1lZEZs
b3cuaWRsCiAgICAgZG9tL1dlYktpdFRyYW5zaXRpb25FdmVudC5pZGwKICAgICBkb20vV2hlZWxF
dmVudC5pZGwKICAgICBkb20vWE1MRG9jdW1lbnQuaWRsCkBAIC0xNTYxLDcgKzE1NTgsNiBAQCBz
ZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgY3NzL1RyYW5zZm9ybUZ1bmN0aW9ucy5jcHAKICAgICBj
c3MvVmlld3BvcnRTdHlsZVJlc29sdmVyLmNwcAogICAgIGNzcy9XZWJLaXRDU1NNYXRyaXguY3Bw
Ci0gICAgY3NzL1dlYktpdENTU1JlZ2lvblJ1bGUuY3BwCiAgICAgY3NzL1dlYktpdENTU1ZpZXdw
b3J0UnVsZS5jcHAKIAogICAgIGNzcy9wYXJzZXIvQ1NTQXRSdWxlSUQuY3BwCkBAIC0xNjE1LDcg
KzE2MTEsNiBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgZG9tL0RPTUVycm9yLmNwcAogICAg
IGRvbS9ET01FeGNlcHRpb24uY3BwCiAgICAgZG9tL0RPTUltcGxlbWVudGF0aW9uLmNwcAotICAg
IGRvbS9ET01OYW1lZEZsb3dDb2xsZWN0aW9uLmNwcAogICAgIGRvbS9ET01Qb2ludFJlYWRPbmx5
LmNwcAogICAgIGRvbS9ET01RdWFkLmNwcAogICAgIGRvbS9ET01SZWN0TGlzdC5jcHAKQEAgLTE2
NzcsNyArMTY3Miw2IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBkb20vTXV0YXRpb25PYnNl
cnZlclJlZ2lzdHJhdGlvbi5jcHAKICAgICBkb20vTXV0YXRpb25SZWNvcmQuY3BwCiAgICAgZG9t
L05hbWVOb2RlTGlzdC5jcHAKLSAgICBkb20vTmFtZWRGbG93Q29sbGVjdGlvbi5jcHAKICAgICBk
b20vTmFtZWROb2RlTWFwLmNwcAogICAgIGRvbS9OYXRpdmVOb2RlRmlsdGVyLmNwcAogICAgIGRv
bS9Ob2RlLmNwcApAQCAtMTc0MCw3ICsxNzM0LDYgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAg
IGRvbS9WaWV3cG9ydEFyZ3VtZW50cy5jcHAKICAgICBkb20vVmlzaXRlZExpbmtTdGF0ZS5jcHAK
ICAgICBkb20vV2ViS2l0QW5pbWF0aW9uRXZlbnQuY3BwCi0gICAgZG9tL1dlYktpdE5hbWVkRmxv
dy5jcHAKICAgICBkb20vV2ViS2l0VHJhbnNpdGlvbkV2ZW50LmNwcAogICAgIGRvbS9XaGVlbEV2
ZW50LmNwcAogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMuY3BwCShyZXZpc2lvbiAyMjIy
NTcpCisrKyBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE1OSw3ICsxNTksNiBAQAogI2luY2x1ZGUgIkpTRE9NSW1wbGVtZW50YXRpb24uY3BwIgog
I2luY2x1ZGUgIkpTRE9NTWltZVR5cGUuY3BwIgogI2luY2x1ZGUgIkpTRE9NTWltZVR5cGVBcnJh
eS5jcHAiCi0jaW5jbHVkZSAiSlNET01OYW1lZEZsb3dDb2xsZWN0aW9uLmNwcCIKICNpbmNsdWRl
ICJKU0RPTVBhcnNlci5jcHAiCiAjaW5jbHVkZSAiSlNET01QbHVnaW4uY3BwIgogI2luY2x1ZGUg
IkpTRE9NUGx1Z2luQXJyYXkuY3BwIgpAQCAtNjE3LDcgKzYxNiw2IEBACiAjaW5jbHVkZSAiSlNX
YXZlU2hhcGVyTm9kZS5jcHAiCiAjaW5jbHVkZSAiSlNXZWJLaXRBbmltYXRpb25FdmVudC5jcHAi
CiAjaW5jbHVkZSAiSlNXZWJLaXRDU1NNYXRyaXguY3BwIgotI2luY2x1ZGUgIkpTV2ViS2l0Q1NT
UmVnaW9uUnVsZS5jcHAiCiAjaW5jbHVkZSAiSlNXZWJLaXRDU1NWaWV3cG9ydFJ1bGUuY3BwIgog
I2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQogI2luY2x1ZGUgIkpTV2ViS2l0TWVk
aWFLZXlFcnJvci5jcHAiCkBAIC02MjYsNyArNjI0LDYgQEAKICNpbmNsdWRlICJKU1dlYktpdE1l
ZGlhS2V5U2Vzc2lvbi5jcHAiCiAjaW5jbHVkZSAiSlNXZWJLaXRNZWRpYUtleXMuY3BwIgogI2Vu
ZGlmCi0jaW5jbHVkZSAiSlNXZWJLaXROYW1lZEZsb3cuY3BwIgogI2luY2x1ZGUgIkpTV2ViS2l0
UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlFdmVudC5jcHAiCiAjaW5jbHVkZSAiSlNXZWJLaXRQ
b2ludC5jcHAiCiAjaW5jbHVkZSAiSlNXZWJLaXRUcmFuc2l0aW9uRXZlbnQuY3BwIgpJbmRleDog
U291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCShyZXZpc2lvbiAyMjIyNTcpCisrKyBTb3VyY2Uv
V2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCSh3b3JraW5nIGNvcHkpCkBAIC00MDYsNyArNDA2
LDYgQEAgSlNfQklORElOR19JRExTID0gXAogICAgICQoV2ViQ29yZSkvY3NzL1N0eWxlU2hlZXQu
aWRsIFwKICAgICAkKFdlYkNvcmUpL2Nzcy9TdHlsZVNoZWV0TGlzdC5pZGwgXAogICAgICQoV2Vi
Q29yZSkvY3NzL1dlYktpdENTU01hdHJpeC5pZGwgXAotICAgICQoV2ViQ29yZSkvY3NzL1dlYktp
dENTU1JlZ2lvblJ1bGUuaWRsIFwKICAgICAkKFdlYkNvcmUpL2Nzcy9XZWJLaXRDU1NWaWV3cG9y
dFJ1bGUuaWRsIFwKICAgICAkKFdlYkNvcmUpL2RvbS9BbmltYXRpb25FdmVudC5pZGwgXAogICAg
ICQoV2ViQ29yZSkvZG9tL0F0dHIuaWRsIFwKQEAgLTQyMyw3ICs0MjIsNiBAQCBKU19CSU5ESU5H
X0lETFMgPSBcCiAgICAgJChXZWJDb3JlKS9kb20vRE9NRXJyb3IuaWRsIFwKICAgICAkKFdlYkNv
cmUpL2RvbS9ET01FeGNlcHRpb24uaWRsIFwKICAgICAkKFdlYkNvcmUpL2RvbS9ET01JbXBsZW1l
bnRhdGlvbi5pZGwgXAotICAgICQoV2ViQ29yZSkvZG9tL0RPTU5hbWVkRmxvd0NvbGxlY3Rpb24u
aWRsIFwKICAgICAkKFdlYkNvcmUpL2RvbS9ET01Qb2ludC5pZGwgXAogICAgICQoV2ViQ29yZSkv
ZG9tL0RPTVBvaW50SW5pdC5pZGwgXAogICAgICQoV2ViQ29yZSkvZG9tL0RPTVBvaW50UmVhZE9u
bHkuaWRsIFwKQEAgLTQ5Nyw3ICs0OTUsNiBAQCBKU19CSU5ESU5HX0lETFMgPSBcCiAgICAgJChX
ZWJDb3JlKS9kb20vVUlFdmVudC5pZGwgXAogICAgICQoV2ViQ29yZSkvZG9tL1VJRXZlbnRJbml0
LmlkbCBcCiAgICAgJChXZWJDb3JlKS9kb20vV2ViS2l0QW5pbWF0aW9uRXZlbnQuaWRsIFwKLSAg
ICAkKFdlYkNvcmUpL2RvbS9XZWJLaXROYW1lZEZsb3cuaWRsIFwKICAgICAkKFdlYkNvcmUpL2Rv
bS9XZWJLaXRUcmFuc2l0aW9uRXZlbnQuaWRsIFwKICAgICAkKFdlYkNvcmUpL2RvbS9XaGVlbEV2
ZW50LmlkbCBcCiAgICAgJChXZWJDb3JlKS9kb20vWE1MRG9jdW1lbnQuaWRsIFwKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhj
Y29uZmlnCShyZXZpc2lvbiAyMjIyNTcpCisrKyBTb3VyY2UvV2ViQ29yZS9Db25maWd1cmF0aW9u
cy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwkod29ya2luZyBjb3B5KQpAQCAtNzgsNyArNzgsNiBA
QCBFTkFCTEVfQ1NTX0NPTVBPU0lUSU5HID0gRU5BQkxFX0NTU19DT01QCiBFTkFCTEVfQ1NTX0RF
VklDRV9BREFQVEFUSU9OID0gOwogRU5BQkxFX0NTU19JTUFHRV9PUklFTlRBVElPTiA9IDsKIEVO
QUJMRV9DU1NfSU1BR0VfUkVTT0xVVElPTiA9IDsKLUVOQUJMRV9DU1NfUkVHSU9OUyA9IDsKIEVO
QUJMRV9DU1NfU0VMRUNUT1JTX0xFVkVMNCA9IEVOQUJMRV9DU1NfU0VMRUNUT1JTX0xFVkVMNDsK
IEVOQUJMRV9DU1MzX1RFWFQgPSA7CiBFTkFCTEVfQ1VSU09SX1ZJU0lCSUxJVFkgPSBFTkFCTEVf
Q1VSU09SX1ZJU0lCSUxJVFk7CkBAIC0yNDMsNCArMjQyLDQgQEAgRU5BQkxFX0RBVEFfSU5URVJB
Q1RJT05faXBob25lc2ltdWxhdG9yIAogRU5BQkxFX0RBVEFfSU5URVJBQ1RJT05bc2RrPWlwaG9u
ZW9zMTAqXSA9IDsKIEVOQUJMRV9EQVRBX0lOVEVSQUNUSU9OW3Nkaz1pcGhvbmVzaW11bGF0b3Ix
MCpdID0gOwogCi1GRUFUVVJFX0RFRklORVMgPSAkKEVOQUJMRV8zRF9UUkFOU0ZPUk1TKSAkKEVO
QUJMRV9BQ0NFTEVSQVRFRF8yRF9DQU5WQVMpICQoRU5BQkxFX0FDQ0VMRVJBVEVEX09WRVJGTE9X
X1NDUk9MTElORykgJChFTkFCTEVfQVBQTEVfUEFZKSAkKEVOQUJMRV9BUFBMRV9QQVlfU0VTU0lP
Tl9WMykgJChFTkFCTEVfQVRUQUNITUVOVF9FTEVNRU5UKSAkKEVOQUJMRV9BVkZfQ0FQVElPTlMp
ICQoRU5BQkxFX0NBQ0hFX1BBUlRJVElPTklORykgJChFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcp
ICQoRU5BQkxFX0NPTlRFTlRfRklMVEVSSU5HKSAkKEVOQUJMRV9DU1NfQU5JTUFUSU9OU19MRVZF
TF8yKSAkKEVOQUJMRV9DU1NfQk9YX0RFQ09SQVRJT05fQlJFQUspICQoRU5BQkxFX0NTU19DT01Q
T1NJVElORykgJChFTkFCTEVfQ1NTX0RFVklDRV9BREFQVEFUSU9OKSAkKEVOQUJMRV9DU1NfSU1B
R0VfT1JJRU5UQVRJT04pICQoRU5BQkxFX0NTU19JTUFHRV9SRVNPTFVUSU9OKSAkKEVOQUJMRV9D
U1NfUkVHSU9OUykgJChFTkFCTEVfQ1NTX1NDUk9MTF9TTkFQKSAkKEVOQUJMRV9DU1NfU0VMRUNU
T1JTX0xFVkVMNCkgJChFTkFCTEVfQ1NTX1RSQUlMSU5HX1dPUkQpICQoRU5BQkxFX0NTUzNfVEVY
VCkgJChFTkFCTEVfQ1VSU09SX1ZJU0lCSUxJVFkpICQoRU5BQkxFX0NVU1RPTV9TQ0hFTUVfSEFO
RExFUikgJChFTkFCTEVfREFTSEJPQVJEX1NVUFBPUlQpICQoRU5BQkxFX0RBVEFfSU5URVJBQ1RJ
T04pICQoRU5BQkxFX0RBVEFDVUVfVkFMVUUpICQoRU5BQkxFX0RBVEFMSVNUX0VMRU1FTlQpICQo
RU5BQkxFX0RFVklDRV9PUklFTlRBVElPTikgJChFTkFCTEVfRFJBR19TVVBQT1JUKSAkKEVOQUJM
RV9FTkNSWVBURURfTUVESUEpICQoRU5BQkxFX0ZBU1RfSklUX1BFUk1JU1NJT05TKSAkKEVOQUJM
RV9GSUxURVJTX0xFVkVMXzIpICQoRU5BQkxFX0ZUTF9KSVQpICQoRU5BQkxFX0ZVTExTQ1JFRU5f
QVBJKSAkKEVOQUJMRV9HQU1FUEFEKSAkKEVOQUJMRV9HRU9MT0NBVElPTikgJChFTkFCTEVfSUNP
TkRBVEFCQVNFKSAkKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFX0lOX1dPUktFUlMpICQoRU5BQkxF
X0lOREVYRURfREFUQUJBU0UpICQoRU5BQkxFX0lOUFVUX1RZUEVfQ09MT1JfUE9QT1ZFUikgJChF
TkFCTEVfSU5QVVRfVFlQRV9DT0xPUikgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFKSAkKEVOQUJM
RV9JTlBVVF9UWVBFX0RBVEVUSU1FX0lOQ09NUExFVEUpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFU
RVRJTUVMT0NBTCkgJChFTkFCTEVfSU5QVVRfVFlQRV9NT05USCkgJChFTkFCTEVfSU5QVVRfVFlQ
RV9USU1FKSAkKEVOQUJMRV9JTlBVVF9UWVBFX1dFRUspICQoRU5BQkxFX0lOVEVSU0VDVElPTl9P
QlNFUlZFUikgJChFTkFCTEVfSU5UTCkgJChFTkFCTEVfSU9TX0dFU1RVUkVfRVZFTlRTKSAkKEVO
QUJMRV9JT1NfVE9VQ0hfRVZFTlRTKSAkKEVOQUJMRV9KSVQpICQoRU5BQkxFX0tFWUJPQVJEX0tF
WV9BVFRSSUJVVEUpICQoRU5BQkxFX0tFWUJPQVJEX0NPREVfQVRUUklCVVRFKSAkKEVOQUJMRV9M
RUdBQ1lfQ1NTX1ZFTkRPUl9QUkVGSVhFUykgJChFTkFCTEVfTEVHQUNZX0VOQ1JZUFRFRF9NRURJ
QSkgJChFTkFCTEVfTEVHQUNZX1ZFTkRPUl9QUkVGSVhFUykgJChFTkFCTEVfTEVUVEVSUFJFU1Mp
ICQoRU5BQkxFX0xJTktfUFJFRkVUQ0gpICQoRU5BQkxFX01BQ19HRVNUVVJFX0VWRU5UUykgJChF
TkFCTEVfTUFUSE1MKSAkKEVOQUJMRV9NRURJQV9DQVBUVVJFKSAkKEVOQUJMRV9NRURJQV9DT05U
Uk9MU19TQ1JJUFQpICQoRU5BQkxFX01FRElBX1NFU1NJT04pICQoRU5BQkxFX01FRElBX1NPVVJD
RSkgJChFTkFCTEVfTUVESUFfU1RBVElTVElDUykgJChFTkFCTEVfTUVESUFfU1RSRUFNKSAkKEVO
QUJMRV9NRVRFUl9FTEVNRU5UKSAkKEVOQUJMRV9NSFRNTCkgJChFTkFCTEVfTU9VU0VfQ1VSU09S
X1NDQUxFKSAkKEVOQUJMRV9OQVZJR0FUT1JfQ09OVEVOVF9VVElMUykgJChFTkFCTEVfTkFWSUdB
VE9SX1NUQU5EQUxPTkUpICQoRU5BQkxFX05PVElGSUNBVElPTlMpICQoRU5BQkxFX1BBWU1FTlRf
UkVRVUVTVCkgJChFTkFCTEVfUERGS0lUX1BMVUdJTikgJChFTkFCTEVfUE9JTlRFUl9MT0NLKSAk
KEVOQUJMRV9QVUJMSUNfU1VGRklYX0xJU1QpICQoRU5BQkxFX1FVT1RBKSAkKEVOQUJMRV9SRU1P
VEVfSU5TUEVDVE9SKSAkKEVOQUJMRV9SRVNPTFVUSU9OX01FRElBX1FVRVJZKSAkKEVOQUJMRV9S
RVNPVVJDRV9VU0FHRSkgJChFTkFCTEVfUlVCQkVSX0JBTkRJTkcpICQoRU5BQkxFX1NFUlZJQ0Vf
Q09OVFJPTFMpICQoRU5BQkxFX1NFUlZJQ0VfV09SS0VSKSAkKEVOQUJMRV9TUEVFQ0hfU1lOVEhF
U0lTKSAkKEVOQUJMRV9TVFJFQU1TX0FQSSkgJChFTkFCTEVfU1VCVExFX0NSWVBUTykgJChFTkFC
TEVfU1ZHX0ZPTlRTKSAkKEVOQUJMRV9URUxFUEhPTkVfTlVNQkVSX0RFVEVDVElPTikgJChFTkFC
TEVfVEVYVF9BVVRPU0laSU5HKSAkKEVOQUJMRV9UT1VDSF9FVkVOVFMpICQoRU5BQkxFX1RPVUNI
X0lDT05fTE9BRElORykgJChFTkFCTEVfVVNFUlNFTEVDVF9BTEwpICQoRU5BQkxFX1ZBUklBVElP
Tl9GT05UUykgJChFTkFCTEVfVklERU9fUFJFU0VOVEFUSU9OX01PREUpICQoRU5BQkxFX01BQ19W
SURFT19UT09MQk9YKSAkKEVOQUJMRV9WSURFT19UUkFDSykgJChFTkFCTEVfVklERU8pICQoRU5B
QkxFX1dFQl9BTklNQVRJT05TKSAkKEVOQUJMRV9XRUJfQVVESU8pICQoRU5BQkxFX1dFQl9SVEMp
ICQoRU5BQkxFX1dFQkFTU0VNQkxZKSAkKEVOQUJMRV9XRUJHTCkgJChFTkFCTEVfV0VCR0wyKSAk
KEVOQUJMRV9XRUJHUFUpICQoRU5BQkxFX1dJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJChFTkFC
TEVfWFNMVCk7CitGRUFUVVJFX0RFRklORVMgPSAkKEVOQUJMRV8zRF9UUkFOU0ZPUk1TKSAkKEVO
QUJMRV9BQ0NFTEVSQVRFRF8yRF9DQU5WQVMpICQoRU5BQkxFX0FDQ0VMRVJBVEVEX09WRVJGTE9X
X1NDUk9MTElORykgJChFTkFCTEVfQVBQTEVfUEFZKSAkKEVOQUJMRV9BUFBMRV9QQVlfU0VTU0lP
Tl9WMykgJChFTkFCTEVfQVRUQUNITUVOVF9FTEVNRU5UKSAkKEVOQUJMRV9BVkZfQ0FQVElPTlMp
ICQoRU5BQkxFX0NBQ0hFX1BBUlRJVElPTklORykgJChFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcp
ICQoRU5BQkxFX0NPTlRFTlRfRklMVEVSSU5HKSAkKEVOQUJMRV9DU1NfQU5JTUFUSU9OU19MRVZF
TF8yKSAkKEVOQUJMRV9DU1NfQk9YX0RFQ09SQVRJT05fQlJFQUspICQoRU5BQkxFX0NTU19DT01Q
T1NJVElORykgJChFTkFCTEVfQ1NTX0RFVklDRV9BREFQVEFUSU9OKSAkKEVOQUJMRV9DU1NfSU1B
R0VfT1JJRU5UQVRJT04pICQoRU5BQkxFX0NTU19JTUFHRV9SRVNPTFVUSU9OKSAkKEVOQUJMRV9D
U1NfU0NST0xMX1NOQVApICQoRU5BQkxFX0NTU19TRUxFQ1RPUlNfTEVWRUw0KSAkKEVOQUJMRV9D
U1NfVFJBSUxJTkdfV09SRCkgJChFTkFCTEVfQ1NTM19URVhUKSAkKEVOQUJMRV9DVVJTT1JfVklT
SUJJTElUWSkgJChFTkFCTEVfQ1VTVE9NX1NDSEVNRV9IQU5ETEVSKSAkKEVOQUJMRV9EQVNIQk9B
UkRfU1VQUE9SVCkgJChFTkFCTEVfREFUQV9JTlRFUkFDVElPTikgJChFTkFCTEVfREFUQUNVRV9W
QUxVRSkgJChFTkFCTEVfREFUQUxJU1RfRUxFTUVOVCkgJChFTkFCTEVfREVWSUNFX09SSUVOVEFU
SU9OKSAkKEVOQUJMRV9EUkFHX1NVUFBPUlQpICQoRU5BQkxFX0VOQ1JZUFRFRF9NRURJQSkgJChF
TkFCTEVfRkFTVF9KSVRfUEVSTUlTU0lPTlMpICQoRU5BQkxFX0ZJTFRFUlNfTEVWRUxfMikgJChF
TkFCTEVfRlRMX0pJVCkgJChFTkFCTEVfRlVMTFNDUkVFTl9BUEkpICQoRU5BQkxFX0dBTUVQQUQp
ICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9JQ09OREFUQUJBU0UpICQoRU5BQkxFX0lO
REVYRURfREFUQUJBU0VfSU5fV09SS0VSUykgJChFTkFCTEVfSU5ERVhFRF9EQVRBQkFTRSkgJChF
TkFCTEVfSU5QVVRfVFlQRV9DT0xPUl9QT1BPVkVSKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0NPTE9S
KSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEUpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURVRJTUVf
SU5DT01QTEVURSkgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFVElNRUxPQ0FMKSAkKEVOQUJMRV9J
TlBVVF9UWVBFX01PTlRIKSAkKEVOQUJMRV9JTlBVVF9UWVBFX1RJTUUpICQoRU5BQkxFX0lOUFVU
X1RZUEVfV0VFSykgJChFTkFCTEVfSU5URVJTRUNUSU9OX09CU0VSVkVSKSAkKEVOQUJMRV9JTlRM
KSAkKEVOQUJMRV9JT1NfR0VTVFVSRV9FVkVOVFMpICQoRU5BQkxFX0lPU19UT1VDSF9FVkVOVFMp
ICQoRU5BQkxFX0pJVCkgJChFTkFCTEVfS0VZQk9BUkRfS0VZX0FUVFJJQlVURSkgJChFTkFCTEVf
S0VZQk9BUkRfQ09ERV9BVFRSSUJVVEUpICQoRU5BQkxFX0xFR0FDWV9DU1NfVkVORE9SX1BSRUZJ
WEVTKSAkKEVOQUJMRV9MRUdBQ1lfRU5DUllQVEVEX01FRElBKSAkKEVOQUJMRV9MRUdBQ1lfVkVO
RE9SX1BSRUZJWEVTKSAkKEVOQUJMRV9MRVRURVJQUkVTUykgJChFTkFCTEVfTElOS19QUkVGRVRD
SCkgJChFTkFCTEVfTUFDX0dFU1RVUkVfRVZFTlRTKSAkKEVOQUJMRV9NQVRITUwpICQoRU5BQkxF
X01FRElBX0NBUFRVUkUpICQoRU5BQkxFX01FRElBX0NPTlRST0xTX1NDUklQVCkgJChFTkFCTEVf
TUVESUFfU0VTU0lPTikgJChFTkFCTEVfTUVESUFfU09VUkNFKSAkKEVOQUJMRV9NRURJQV9TVEFU
SVNUSUNTKSAkKEVOQUJMRV9NRURJQV9TVFJFQU0pICQoRU5BQkxFX01FVEVSX0VMRU1FTlQpICQo
RU5BQkxFX01IVE1MKSAkKEVOQUJMRV9NT1VTRV9DVVJTT1JfU0NBTEUpICQoRU5BQkxFX05BVklH
QVRPUl9DT05URU5UX1VUSUxTKSAkKEVOQUJMRV9OQVZJR0FUT1JfU1RBTkRBTE9ORSkgJChFTkFC
TEVfTk9USUZJQ0FUSU9OUykgJChFTkFCTEVfUEFZTUVOVF9SRVFVRVNUKSAkKEVOQUJMRV9QREZL
SVRfUExVR0lOKSAkKEVOQUJMRV9QT0lOVEVSX0xPQ0spICQoRU5BQkxFX1BVQkxJQ19TVUZGSVhf
TElTVCkgJChFTkFCTEVfUVVPVEEpICQoRU5BQkxFX1JFTU9URV9JTlNQRUNUT1IpICQoRU5BQkxF
X1JFU09MVVRJT05fTUVESUFfUVVFUlkpICQoRU5BQkxFX1JFU09VUkNFX1VTQUdFKSAkKEVOQUJM
RV9SVUJCRVJfQkFORElORykgJChFTkFCTEVfU0VSVklDRV9DT05UUk9MUykgJChFTkFCTEVfU0VS
VklDRV9XT1JLRVIpICQoRU5BQkxFX1NQRUVDSF9TWU5USEVTSVMpICQoRU5BQkxFX1NUUkVBTVNf
QVBJKSAkKEVOQUJMRV9TVUJUTEVfQ1JZUFRPKSAkKEVOQUJMRV9TVkdfRk9OVFMpICQoRU5BQkxF
X1RFTEVQSE9ORV9OVU1CRVJfREVURUNUSU9OKSAkKEVOQUJMRV9URVhUX0FVVE9TSVpJTkcpICQo
RU5BQkxFX1RPVUNIX0VWRU5UUykgJChFTkFCTEVfVE9VQ0hfSUNPTl9MT0FESU5HKSAkKEVOQUJM
RV9VU0VSU0VMRUNUX0FMTCkgJChFTkFCTEVfVkFSSUFUSU9OX0ZPTlRTKSAkKEVOQUJMRV9WSURF
T19QUkVTRU5UQVRJT05fTU9ERSkgJChFTkFCTEVfTUFDX1ZJREVPX1RPT0xCT1gpICQoRU5BQkxF
X1ZJREVPX1RSQUNLKSAkKEVOQUJMRV9WSURFTykgJChFTkFCTEVfV0VCX0FOSU1BVElPTlMpICQo
RU5BQkxFX1dFQl9BVURJTykgJChFTkFCTEVfV0VCX1JUQykgJChFTkFCTEVfV0VCQVNTRU1CTFkp
ICQoRU5BQkxFX1dFQkdMKSAkKEVOQUJMRV9XRUJHTDIpICQoRU5BQkxFX1dFQkdQVSkgJChFTkFC
TEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAkKEVOQUJMRV9YU0xUKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvUEFM
L0NoYW5nZUxvZwkocmV2aXNpb24gMjIyMjU3KQorKysgU291cmNlL1dlYkNvcmUvUEFML0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDE3LTA5LTE5ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgRE9NIGFuZCBzdHls
aW5nIHN1cHBvcnQgZm9yIENTUyBSZWdpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNzcyMjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIENvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29u
ZmlnOgorCiAyMDE3LTA5LTE4ICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAogICAg
ICAgICBbTWFjXSBVcHN0cmVhbSBtaXNjZWxsYW5lb3VzIFdlYktpdFN5c3RlbUludGVyZmFjZSBm
dW5jdGlvbnMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BBTC9Db25maWd1cmF0aW9ucy9GZWF0dXJl
RGVmaW5lcy54Y2NvbmZpZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9QQUwvQ29uZmln
dXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcJKHJldmlzaW9uIDIyMjI1NykKKysrIFNv
dXJjZS9XZWJDb3JlL1BBTC9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwko
d29ya2luZyBjb3B5KQpAQCAtNzgsNyArNzgsNiBAQCBFTkFCTEVfQ1NTX0NPTVBPU0lUSU5HID0g
RU5BQkxFX0NTU19DT01QCiBFTkFCTEVfQ1NTX0RFVklDRV9BREFQVEFUSU9OID0gOwogRU5BQkxF
X0NTU19JTUFHRV9PUklFTlRBVElPTiA9IDsKIEVOQUJMRV9DU1NfSU1BR0VfUkVTT0xVVElPTiA9
IDsKLUVOQUJMRV9DU1NfUkVHSU9OUyA9IDsKIEVOQUJMRV9DU1NfU0VMRUNUT1JTX0xFVkVMNCA9
IEVOQUJMRV9DU1NfU0VMRUNUT1JTX0xFVkVMNDsKIEVOQUJMRV9DU1MzX1RFWFQgPSA7CiBFTkFC
TEVfQ1VSU09SX1ZJU0lCSUxJVFkgPSBFTkFCTEVfQ1VSU09SX1ZJU0lCSUxJVFk7CkBAIC0yNDMs
NCArMjQyLDQgQEAgRU5BQkxFX0RBVEFfSU5URVJBQ1RJT05faXBob25lc2ltdWxhdG9yIAogRU5B
QkxFX0RBVEFfSU5URVJBQ1RJT05bc2RrPWlwaG9uZW9zMTAqXSA9IDsKIEVOQUJMRV9EQVRBX0lO
VEVSQUNUSU9OW3Nkaz1pcGhvbmVzaW11bGF0b3IxMCpdID0gOwogCi1GRUFUVVJFX0RFRklORVMg
PSAkKEVOQUJMRV8zRF9UUkFOU0ZPUk1TKSAkKEVOQUJMRV9BQ0NFTEVSQVRFRF8yRF9DQU5WQVMp
ICQoRU5BQkxFX0FDQ0VMRVJBVEVEX09WRVJGTE9XX1NDUk9MTElORykgJChFTkFCTEVfQVBQTEVf
UEFZKSAkKEVOQUJMRV9BUFBMRV9QQVlfU0VTU0lPTl9WMykgJChFTkFCTEVfQVRUQUNITUVOVF9F
TEVNRU5UKSAkKEVOQUJMRV9BVkZfQ0FQVElPTlMpICQoRU5BQkxFX0NBQ0hFX1BBUlRJVElPTklO
RykgJChFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcpICQoRU5BQkxFX0NPTlRFTlRfRklMVEVSSU5H
KSAkKEVOQUJMRV9DU1NfQU5JTUFUSU9OU19MRVZFTF8yKSAkKEVOQUJMRV9DU1NfQk9YX0RFQ09S
QVRJT05fQlJFQUspICQoRU5BQkxFX0NTU19DT01QT1NJVElORykgJChFTkFCTEVfQ1NTX0RFVklD
RV9BREFQVEFUSU9OKSAkKEVOQUJMRV9DU1NfSU1BR0VfT1JJRU5UQVRJT04pICQoRU5BQkxFX0NT
U19JTUFHRV9SRVNPTFVUSU9OKSAkKEVOQUJMRV9DU1NfUkVHSU9OUykgJChFTkFCTEVfQ1NTX1ND
Uk9MTF9TTkFQKSAkKEVOQUJMRV9DU1NfU0VMRUNUT1JTX0xFVkVMNCkgJChFTkFCTEVfQ1NTX1RS
QUlMSU5HX1dPUkQpICQoRU5BQkxFX0NTUzNfVEVYVCkgJChFTkFCTEVfQ1VSU09SX1ZJU0lCSUxJ
VFkpICQoRU5BQkxFX0NVU1RPTV9TQ0hFTUVfSEFORExFUikgJChFTkFCTEVfREFTSEJPQVJEX1NV
UFBPUlQpICQoRU5BQkxFX0RBVEFfSU5URVJBQ1RJT04pICQoRU5BQkxFX0RBVEFDVUVfVkFMVUUp
ICQoRU5BQkxFX0RBVEFMSVNUX0VMRU1FTlQpICQoRU5BQkxFX0RFVklDRV9PUklFTlRBVElPTikg
JChFTkFCTEVfRFJBR19TVVBQT1JUKSAkKEVOQUJMRV9FTkNSWVBURURfTUVESUEpICQoRU5BQkxF
X0ZBU1RfSklUX1BFUk1JU1NJT05TKSAkKEVOQUJMRV9GSUxURVJTX0xFVkVMXzIpICQoRU5BQkxF
X0ZUTF9KSVQpICQoRU5BQkxFX0ZVTExTQ1JFRU5fQVBJKSAkKEVOQUJMRV9HQU1FUEFEKSAkKEVO
QUJMRV9HRU9MT0NBVElPTikgJChFTkFCTEVfSUNPTkRBVEFCQVNFKSAkKEVOQUJMRV9JTkRFWEVE
X0RBVEFCQVNFX0lOX1dPUktFUlMpICQoRU5BQkxFX0lOREVYRURfREFUQUJBU0UpICQoRU5BQkxF
X0lOUFVUX1RZUEVfQ09MT1JfUE9QT1ZFUikgJChFTkFCTEVfSU5QVVRfVFlQRV9DT0xPUikgJChF
TkFCTEVfSU5QVVRfVFlQRV9EQVRFKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1FX0lOQ09N
UExFVEUpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURVRJTUVMT0NBTCkgJChFTkFCTEVfSU5QVVRf
VFlQRV9NT05USCkgJChFTkFCTEVfSU5QVVRfVFlQRV9USU1FKSAkKEVOQUJMRV9JTlBVVF9UWVBF
X1dFRUspICQoRU5BQkxFX0lOVEVSU0VDVElPTl9PQlNFUlZFUikgJChFTkFCTEVfSU5UTCkgJChF
TkFCTEVfSU9TX0dFU1RVUkVfRVZFTlRTKSAkKEVOQUJMRV9JT1NfVE9VQ0hfRVZFTlRTKSAkKEVO
QUJMRV9KSVQpICQoRU5BQkxFX0tFWUJPQVJEX0tFWV9BVFRSSUJVVEUpICQoRU5BQkxFX0tFWUJP
QVJEX0NPREVfQVRUUklCVVRFKSAkKEVOQUJMRV9MRUdBQ1lfQ1NTX1ZFTkRPUl9QUkVGSVhFUykg
JChFTkFCTEVfTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkgJChFTkFCTEVfTEVHQUNZX1ZFTkRPUl9Q
UkVGSVhFUykgJChFTkFCTEVfTEVUVEVSUFJFU1MpICQoRU5BQkxFX0xJTktfUFJFRkVUQ0gpICQo
RU5BQkxFX01BQ19HRVNUVVJFX0VWRU5UUykgJChFTkFCTEVfTUFUSE1MKSAkKEVOQUJMRV9NRURJ
QV9DQVBUVVJFKSAkKEVOQUJMRV9NRURJQV9DT05UUk9MU19TQ1JJUFQpICQoRU5BQkxFX01FRElB
X1NFU1NJT04pICQoRU5BQkxFX01FRElBX1NPVVJDRSkgJChFTkFCTEVfTUVESUFfU1RBVElTVElD
UykgJChFTkFCTEVfTUVESUFfU1RSRUFNKSAkKEVOQUJMRV9NRVRFUl9FTEVNRU5UKSAkKEVOQUJM
RV9NSFRNTCkgJChFTkFCTEVfTU9VU0VfQ1VSU09SX1NDQUxFKSAkKEVOQUJMRV9OQVZJR0FUT1Jf
Q09OVEVOVF9VVElMUykgJChFTkFCTEVfTkFWSUdBVE9SX1NUQU5EQUxPTkUpICQoRU5BQkxFX05P
VElGSUNBVElPTlMpICQoRU5BQkxFX1BBWU1FTlRfUkVRVUVTVCkgJChFTkFCTEVfUERGS0lUX1BM
VUdJTikgJChFTkFCTEVfUE9JTlRFUl9MT0NLKSAkKEVOQUJMRV9QVUJMSUNfU1VGRklYX0xJU1Qp
ICQoRU5BQkxFX1FVT1RBKSAkKEVOQUJMRV9SRU1PVEVfSU5TUEVDVE9SKSAkKEVOQUJMRV9SRVNP
TFVUSU9OX01FRElBX1FVRVJZKSAkKEVOQUJMRV9SRVNPVVJDRV9VU0FHRSkgJChFTkFCTEVfUlVC
QkVSX0JBTkRJTkcpICQoRU5BQkxFX1NFUlZJQ0VfQ09OVFJPTFMpICQoRU5BQkxFX1NFUlZJQ0Vf
V09SS0VSKSAkKEVOQUJMRV9TUEVFQ0hfU1lOVEhFU0lTKSAkKEVOQUJMRV9TVFJFQU1TX0FQSSkg
JChFTkFCTEVfU1VCVExFX0NSWVBUTykgJChFTkFCTEVfU1ZHX0ZPTlRTKSAkKEVOQUJMRV9URUxF
UEhPTkVfTlVNQkVSX0RFVEVDVElPTikgJChFTkFCTEVfVEVYVF9BVVRPU0laSU5HKSAkKEVOQUJM
RV9UT1VDSF9FVkVOVFMpICQoRU5BQkxFX1RPVUNIX0lDT05fTE9BRElORykgJChFTkFCTEVfVVNF
UlNFTEVDVF9BTEwpICQoRU5BQkxFX1ZBUklBVElPTl9GT05UUykgJChFTkFCTEVfVklERU9fUFJF
U0VOVEFUSU9OX01PREUpICQoRU5BQkxFX01BQ19WSURFT19UT09MQk9YKSAkKEVOQUJMRV9WSURF
T19UUkFDSykgJChFTkFCTEVfVklERU8pICQoRU5BQkxFX1dFQl9BTklNQVRJT05TKSAkKEVOQUJM
RV9XRUJfQVVESU8pICQoRU5BQkxFX1dFQl9SVEMpICQoRU5BQkxFX1dFQkFTU0VNQkxZKSAkKEVO
QUJMRV9XRUJHTCkgJChFTkFCTEVfV0VCR0wyKSAkKEVOQUJMRV9XRUJHUFUpICQoRU5BQkxFX1dJ
UkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJChFTkFCTEVfWFNMVCk7CitGRUFUVVJFX0RFRklORVMg
PSAkKEVOQUJMRV8zRF9UUkFOU0ZPUk1TKSAkKEVOQUJMRV9BQ0NFTEVSQVRFRF8yRF9DQU5WQVMp
ICQoRU5BQkxFX0FDQ0VMRVJBVEVEX09WRVJGTE9XX1NDUk9MTElORykgJChFTkFCTEVfQVBQTEVf
UEFZKSAkKEVOQUJMRV9BUFBMRV9QQVlfU0VTU0lPTl9WMykgJChFTkFCTEVfQVRUQUNITUVOVF9F
TEVNRU5UKSAkKEVOQUJMRV9BVkZfQ0FQVElPTlMpICQoRU5BQkxFX0NBQ0hFX1BBUlRJVElPTklO
RykgJChFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcpICQoRU5BQkxFX0NPTlRFTlRfRklMVEVSSU5H
KSAkKEVOQUJMRV9DU1NfQU5JTUFUSU9OU19MRVZFTF8yKSAkKEVOQUJMRV9DU1NfQk9YX0RFQ09S
QVRJT05fQlJFQUspICQoRU5BQkxFX0NTU19DT01QT1NJVElORykgJChFTkFCTEVfQ1NTX0RFVklD
RV9BREFQVEFUSU9OKSAkKEVOQUJMRV9DU1NfSU1BR0VfT1JJRU5UQVRJT04pICQoRU5BQkxFX0NT
U19JTUFHRV9SRVNPTFVUSU9OKSAkKEVOQUJMRV9DU1NfU0NST0xMX1NOQVApICQoRU5BQkxFX0NT
U19TRUxFQ1RPUlNfTEVWRUw0KSAkKEVOQUJMRV9DU1NfVFJBSUxJTkdfV09SRCkgJChFTkFCTEVf
Q1NTM19URVhUKSAkKEVOQUJMRV9DVVJTT1JfVklTSUJJTElUWSkgJChFTkFCTEVfQ1VTVE9NX1ND
SEVNRV9IQU5ETEVSKSAkKEVOQUJMRV9EQVNIQk9BUkRfU1VQUE9SVCkgJChFTkFCTEVfREFUQV9J
TlRFUkFDVElPTikgJChFTkFCTEVfREFUQUNVRV9WQUxVRSkgJChFTkFCTEVfREFUQUxJU1RfRUxF
TUVOVCkgJChFTkFCTEVfREVWSUNFX09SSUVOVEFUSU9OKSAkKEVOQUJMRV9EUkFHX1NVUFBPUlQp
ICQoRU5BQkxFX0VOQ1JZUFRFRF9NRURJQSkgJChFTkFCTEVfRkFTVF9KSVRfUEVSTUlTU0lPTlMp
ICQoRU5BQkxFX0ZJTFRFUlNfTEVWRUxfMikgJChFTkFCTEVfRlRMX0pJVCkgJChFTkFCTEVfRlVM
TFNDUkVFTl9BUEkpICQoRU5BQkxFX0dBTUVQQUQpICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVO
QUJMRV9JQ09OREFUQUJBU0UpICQoRU5BQkxFX0lOREVYRURfREFUQUJBU0VfSU5fV09SS0VSUykg
JChFTkFCTEVfSU5ERVhFRF9EQVRBQkFTRSkgJChFTkFCTEVfSU5QVVRfVFlQRV9DT0xPUl9QT1BP
VkVSKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0NPTE9SKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEUp
ICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURVRJTUVfSU5DT01QTEVURSkgJChFTkFCTEVfSU5QVVRf
VFlQRV9EQVRFVElNRUxPQ0FMKSAkKEVOQUJMRV9JTlBVVF9UWVBFX01PTlRIKSAkKEVOQUJMRV9J
TlBVVF9UWVBFX1RJTUUpICQoRU5BQkxFX0lOUFVUX1RZUEVfV0VFSykgJChFTkFCTEVfSU5URVJT
RUNUSU9OX09CU0VSVkVSKSAkKEVOQUJMRV9JTlRMKSAkKEVOQUJMRV9JT1NfR0VTVFVSRV9FVkVO
VFMpICQoRU5BQkxFX0lPU19UT1VDSF9FVkVOVFMpICQoRU5BQkxFX0pJVCkgJChFTkFCTEVfS0VZ
Qk9BUkRfS0VZX0FUVFJJQlVURSkgJChFTkFCTEVfS0VZQk9BUkRfQ09ERV9BVFRSSUJVVEUpICQo
RU5BQkxFX0xFR0FDWV9DU1NfVkVORE9SX1BSRUZJWEVTKSAkKEVOQUJMRV9MRUdBQ1lfRU5DUllQ
VEVEX01FRElBKSAkKEVOQUJMRV9MRUdBQ1lfVkVORE9SX1BSRUZJWEVTKSAkKEVOQUJMRV9MRVRU
RVJQUkVTUykgJChFTkFCTEVfTElOS19QUkVGRVRDSCkgJChFTkFCTEVfTUFDX0dFU1RVUkVfRVZF
TlRTKSAkKEVOQUJMRV9NQVRITUwpICQoRU5BQkxFX01FRElBX0NBUFRVUkUpICQoRU5BQkxFX01F
RElBX0NPTlRST0xTX1NDUklQVCkgJChFTkFCTEVfTUVESUFfU0VTU0lPTikgJChFTkFCTEVfTUVE
SUFfU09VUkNFKSAkKEVOQUJMRV9NRURJQV9TVEFUSVNUSUNTKSAkKEVOQUJMRV9NRURJQV9TVFJF
QU0pICQoRU5BQkxFX01FVEVSX0VMRU1FTlQpICQoRU5BQkxFX01IVE1MKSAkKEVOQUJMRV9NT1VT
RV9DVVJTT1JfU0NBTEUpICQoRU5BQkxFX05BVklHQVRPUl9DT05URU5UX1VUSUxTKSAkKEVOQUJM
RV9OQVZJR0FUT1JfU1RBTkRBTE9ORSkgJChFTkFCTEVfTk9USUZJQ0FUSU9OUykgJChFTkFCTEVf
UEFZTUVOVF9SRVFVRVNUKSAkKEVOQUJMRV9QREZLSVRfUExVR0lOKSAkKEVOQUJMRV9QT0lOVEVS
X0xPQ0spICQoRU5BQkxFX1BVQkxJQ19TVUZGSVhfTElTVCkgJChFTkFCTEVfUVVPVEEpICQoRU5B
QkxFX1JFTU9URV9JTlNQRUNUT1IpICQoRU5BQkxFX1JFU09MVVRJT05fTUVESUFfUVVFUlkpICQo
RU5BQkxFX1JFU09VUkNFX1VTQUdFKSAkKEVOQUJMRV9SVUJCRVJfQkFORElORykgJChFTkFCTEVf
U0VSVklDRV9DT05UUk9MUykgJChFTkFCTEVfU0VSVklDRV9XT1JLRVIpICQoRU5BQkxFX1NQRUVD
SF9TWU5USEVTSVMpICQoRU5BQkxFX1NUUkVBTVNfQVBJKSAkKEVOQUJMRV9TVUJUTEVfQ1JZUFRP
KSAkKEVOQUJMRV9TVkdfRk9OVFMpICQoRU5BQkxFX1RFTEVQSE9ORV9OVU1CRVJfREVURUNUSU9O
KSAkKEVOQUJMRV9URVhUX0FVVE9TSVpJTkcpICQoRU5BQkxFX1RPVUNIX0VWRU5UUykgJChFTkFC
TEVfVE9VQ0hfSUNPTl9MT0FESU5HKSAkKEVOQUJMRV9VU0VSU0VMRUNUX0FMTCkgJChFTkFCTEVf
VkFSSUFUSU9OX0ZPTlRTKSAkKEVOQUJMRV9WSURFT19QUkVTRU5UQVRJT05fTU9ERSkgJChFTkFC
TEVfTUFDX1ZJREVPX1RPT0xCT1gpICQoRU5BQkxFX1ZJREVPX1RSQUNLKSAkKEVOQUJMRV9WSURF
TykgJChFTkFCTEVfV0VCX0FOSU1BVElPTlMpICQoRU5BQkxFX1dFQl9BVURJTykgJChFTkFCTEVf
V0VCX1JUQykgJChFTkFCTEVfV0VCQVNTRU1CTFkpICQoRU5BQkxFX1dFQkdMKSAkKEVOQUJMRV9X
RUJHTDIpICQoRU5BQkxFX1dFQkdQVSkgJChFTkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VU
KSAkKEVOQUJMRV9YU0xUKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDIyMjI1NykKKysrIFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAt
MjUyOCwxMiArMjUyOCw2IEBACiAJCTUyQjBENEJFMUM1N0ZEMUUwMDc3Q0U1MyAvKiBQbGF0Zm9y
bVZpZXcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUy
QjBENEJEMUM1N0ZEMUUwMDc3Q0U1MyAvKiBQbGF0Zm9ybVZpZXcuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MkIwRDRDMDFDNTdGRDY2MDA3N0NF
NTMgLyogVmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyQjBENEJGMUM1N0ZENjYwMDc3Q0U1MyAvKiBW
aWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUyQjBENEMyMUM1N0ZGOTEwMDc3Q0U1MyAvKiBWaWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUyQjBENEMxMUM1N0ZGOTEwMDc3Q0U1MyAvKiBWaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2VNYWMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwotCQk1MkI2QzlDMjE1RTNGNERGMDA2OTBCMDUgLyogRE9NTmFtZWRGbG93Q29sbGVj
dGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MkI2QzlCRDE1RTNGNERGMDA2OTBCMDUgLyogRE9NTmFtZWRGbG93Q29sbGVjdGlvbi5jcHAgKi87
IH07Ci0JCTUyQjZDOUMzMTVFM0Y0REYwMDY5MEIwNSAvKiBET01OYW1lZEZsb3dDb2xsZWN0aW9u
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MkI2QzlC
RTE1RTNGNERGMDA2OTBCMDUgLyogRE9NTmFtZWRGbG93Q29sbGVjdGlvbi5oICovOyB9OwotCQk1
MkI2QzlDNTE1RTNGNERGMDA2OTBCMDUgLyogTmFtZWRGbG93Q29sbGVjdGlvbi5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MkI2QzlDMDE1RTNGNERG
MDA2OTBCMDUgLyogTmFtZWRGbG93Q29sbGVjdGlvbi5jcHAgKi87IH07Ci0JCTUyQjZDOUM2MTVF
M0Y0REYwMDY5MEIwNSAvKiBOYW1lZEZsb3dDb2xsZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MkI2QzlDMTE1RTNGNERGMDA2OTBCMDUgLyog
TmFtZWRGbG93Q29sbGVjdGlvbi5oICovOyB9OwotCQk1MkNDQTlFMjE1RTNGNjJDMDA1M0M3N0Yg
LyogSlNET01OYW1lZEZsb3dDb2xsZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyQ0NBOUUwMTVFM0Y2MkMwMDUzQzc3RiAvKiBKU0RPTU5h
bWVkRmxvd0NvbGxlY3Rpb24uY3BwICovOyB9OwotCQk1MkNDQTlFMzE1RTNGNjJDMDA1M0M3N0Yg
LyogSlNET01OYW1lZEZsb3dDb2xsZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MkNDQTlFMTE1RTNGNjJDMDA1M0M3N0YgLyogSlNET01OYW1l
ZEZsb3dDb2xsZWN0aW9uLmggKi87IH07CiAJCTUyRDVBMThGMUM1NDU5MjMwMERFMzRBMyAvKiBW
aWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MkQ1QTE4RDFDNTQ1OTAzMDBERTM0QTMgLyogVmlkZW9GdWxs
c2NyZWVuTGF5ZXJNYW5hZ2VyLm1tICovOyB9OwogCQk1MkQ1QTFBNzFDNTc0ODlEMDBERTM0QTMg
LyogVmlkZW9GdWxsc2NyZWVuTW9kZWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUyRDVBMUE0MUM1NzQ4ODkwMERFMzRBMyAvKiBWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlbC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTUyRDVBMUE4MUM1NzQ4QTMwMERFMzRBMyAvKiBWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVv
RWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTJENUExQTUxQzU3NDg4OTAwREUzNEEzIC8qIFZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVt
ZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAg
LTI5MzEsNyArMjkyNSw2IEBACiAJCTZDNEM5NkRGMUFENDQ4MzUwMDM2NUE1MCAvKiBKU1JlYWRh
YmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDZDNEM5NkRCMUFENDQ4MzUwMDM2NUE1MCAvKiBKU1JlYWRhYmxl
U3RyZWFtRGVmYXVsdENvbnRyb2xsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk2QzYzODg5NUE5NkNDRUU1MEM4Qzk0NkMgLyogQ2FjaGVkUmVz
b3VyY2VSZXF1ZXN0SW5pdGlhdG9ycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNkM2Mzg4OTNBOTZDQ0VFNTBDOEM5NDZDIC8qIENhY2hlZFJlc291cmNl
UmVxdWVzdEluaXRpYXRvcnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk2QzYzODg5NkE5NkNDRUU1MEM4Qzk0NkMgLyogQ2FjaGVkUmVzb3VyY2VS
ZXF1ZXN0SW5pdGlhdG9ycy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA2QzYzODg5NEE5NkNDRUU1MEM4Qzk0NkMgLyogQ2FjaGVkUmVzb3VyY2VSZXF1
ZXN0SW5pdGlhdG9ycy5jcHAgKi87IH07Ci0JCTZDRERFOEQwMTc3MEJCMjIwMDE2RTA3MiAvKiBS
ZWdpb25PdmVyc2V0U3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDZDNzBBODE0MTc3MDdDNDkwMDlBNDQ2RSAvKiBSZWdpb25PdmVyc2V0U3RhdGUu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk2RTBF
NTY5QjE4M0JGRkU2MDBFMEU4RDUgLyogRmxvYXRSb3VuZGVkUmVjdC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTBFNTY5OTE4M0JGRkU2MDBFMEU4
RDUgLyogRmxvYXRSb3VuZGVkUmVjdC5jcHAgKi87IH07CiAJCTZFMEU1NjlDMTgzQkZGRTYwMEUw
RThENSAvKiBGbG9hdFJvdW5kZWRSZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA2RTBFNTY5QTE4M0JGRkU2MDBFMEU4RDUgLyogRmxvYXRSb3VuZGVk
UmVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTZFMjFDNkMwMTEyNjMzODUwMEE3QkUwMiAvKiBHcmFwaGljc0NvbnRleHQzRC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTIxQzZCRjExMjYzMzg1
MDBBN0JFMDIgLyogR3JhcGhpY3NDb250ZXh0M0QuY3BwICovOyB9OwpAQCAtMzc2MCwxMyArMzc1
Myw5IEBACiAJCThBOUE1ODcxMTFFODRDMzYwMDhBQ0ZEMSAvKiBKU1BlcmZvcm1hbmNlTmF2aWdh
dGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOEE5
QTU4NkYxMUU4NEMzNjAwOEFDRkQxIC8qIEpTUGVyZm9ybWFuY2VOYXZpZ2F0aW9uLmggKi87IH07
CiAJCThBOUE1ODc1MTFFODRDODEwMDhBQ0ZEMSAvKiBKU1BlcmZvcm1hbmNlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4QTlBNTg3MzExRTg0QzgxMDA4
QUNGRDEgLyogSlNQZXJmb3JtYW5jZS5oICovOyB9OwogCQk4QTlBNTg4ODExRTg0RjM3MDA4QUNG
RDEgLyogSlNQZXJmb3JtYW5jZVRpbWluZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOEE5QTU4NzcxMUU4NEM5ODAwOEFDRkQxIC8qIEpTUGVyZm9ybWFu
Y2VUaW1pbmcuaCAqLzsgfTsKLQkJOEFBNjFDRkYxNDRENTk1QjAwRjM3MzUwIC8qIFdlYktpdENT
U1JlZ2lvblJ1bGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOEFBNjFDRkQxNDRENTk1QjAwRjM3MzUwIC8qIFdlYktpdENTU1JlZ2lvblJ1bGUuY3Bw
ICovOyB9OwotCQk4QUE2MUQwMDE0NEQ1OTVCMDBGMzczNTAgLyogV2ViS2l0Q1NTUmVnaW9uUnVs
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOEFBNjFD
RkUxNDRENTk1QjAwRjM3MzUwIC8qIFdlYktpdENTU1JlZ2lvblJ1bGUuaCAqLzsgfTsKIAkJOEFC
NEJDNzcxMjZGREI3MTAwREVCNzI3IC8qIElnbm9yZURlc3RydWN0aXZlV3JpdGVDb3VudEluY3Jl
bWVudGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
QUI0QkM3NjEyNkZEQjcxMDBERUI3MjcgLyogSWdub3JlRGVzdHJ1Y3RpdmVXcml0ZUNvdW50SW5j
cmVtZW50ZXIuaCAqLzsgfTsKIAkJOEFDODIyRkMxODBGQzAzMzAwRkI2NEQ1IC8qIFJlbmRlck5h
bWVkRmxvd0ZyYWdtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDhBQzgyMkZBMTgwRkMwMzMwMEZCNjRENSAvKiBSZW5kZXJOYW1lZEZsb3dGcmFn
bWVudC5jcHAgKi87IH07CiAJCThBQzgyMkZEMTgwRkMwMzMwMEZCNjRENSAvKiBSZW5kZXJOYW1l
ZEZsb3dGcmFnbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOEFDODIyRkIxODBGQzAzMzAwRkI2NEQ1IC8qIFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50
LmggKi87IH07Ci0JCThBRDBBNTk0MTRDODgzMzYwMDBEODNDNSAvKiBKU1dlYktpdENTU1JlZ2lv
blJ1bGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OEFDQzI0Q0QxNDhFMjRCMjAwRUZDQzBEIC8qIEpTV2ViS2l0Q1NTUmVnaW9uUnVsZS5jcHAgKi87
IH07Ci0JCThBRDBBNTk1MTRDODgzMzYwMDBEODNDNSAvKiBKU1dlYktpdENTU1JlZ2lvblJ1bGUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDhBQ0MyNENF
MTQ4RTI0QjIwMEVGQ0MwRCAvKiBKU1dlYktpdENTU1JlZ2lvblJ1bGUuaCAqLzsgfTsKIAkJOEFG
NEU1NTUxMURDNUEzNjAwMEVEM0RFIC8qIFBlcmZvcm1hbmNlTmF2aWdhdGlvbi5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4QUY0RTU1MjExREM1QTM2
MDAwRUQzREUgLyogUGVyZm9ybWFuY2VOYXZpZ2F0aW9uLmNwcCAqLzsgfTsKIAkJOEFGNEU1NTYx
MURDNUEzNjAwMEVEM0RFIC8qIFBlcmZvcm1hbmNlTmF2aWdhdGlvbi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOEFGNEU1NTMxMURDNUEzNjAwMEVEM0RF
IC8qIFBlcmZvcm1hbmNlTmF2aWdhdGlvbi5oICovOyB9OwogCQk4QUY0RTU1QzExREM1QTYzMDAw
RUQzREUgLyogUGVyZm9ybWFuY2VUaW1pbmcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDhBRjRFNTU5MTFEQzVBNjMwMDBFRDNERSAvKiBQZXJmb3JtYW5j
ZVRpbWluZy5oICovOyB9OwpAQCAtNjYwMSw4ICs2NTkwLDYgQEAKIAkJRDcwQUQ2NTgxM0UxMzQy
QjAwNUI1MEI0IC8qIFJlbmRlclJlZ2lvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRDcwQUQ2NTYxM0UxMzQyQjAwNUI1MEI0IC8qIFJlbmRlclJlZ2lv
bi5oICovOyB9OwogCQlENzJGNkQ3OTE1MzE1OUEzMDAxRUU0NEUgLyogRmxvd1RocmVhZENvbnRy
b2xsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RDcyRjZENzcxNTMxNTlBMzAwMUVFNDRFIC8qIEZsb3dUaHJlYWRDb250cm9sbGVyLmNwcCAqLzsg
fTsKIAkJRDcyRjZEN0ExNTMxNTlBMzAwMUVFNDRFIC8qIEZsb3dUaHJlYWRDb250cm9sbGVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBENzJGNkQ3ODE1
MzE1OUEzMDAxRUU0NEUgLyogRmxvd1RocmVhZENvbnRyb2xsZXIuaCAqLzsgfTsKLQkJRDc2MTNB
NTAxNDc0RjEzRjAwREI4NjA2IC8qIFdlYktpdE5hbWVkRmxvdy5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBENzYxM0E0RTE0NzRGMTNGMDBEQjg2MDYg
LyogV2ViS2l0TmFtZWRGbG93LmNwcCAqLzsgfTsKLQkJRDc2MTNBQzQxNDc1M0U1NjAwREI4NjA2
IC8qIEpTV2ViS2l0TmFtZWRGbG93LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEQ3NjEzQUMyMTQ3NTNFNTYwMERCODYwNiAvKiBKU1dlYktpdE5hbWVk
Rmxvdy5jcHAgKi87IH07CiAJCUQ4QjYxNTJGMTAzMjQ5NTEwMEM4NTU0QSAvKiBDb29raWUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEQ4QjYxNTJFMTAz
MjQ5NTEwMEM4NTU0QSAvKiBDb29raWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQlEQUVEMjAzMDE2RjI0NDJCMDA3MEVDMEYgLyogUGFnZUNvbnNv
bGVDbGllbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gREFBQ0IzRDkxNkYyNDE2NDAwNjY2MTM1IC8qIFBhZ2VDb25zb2xlQ2xpZW50LmNwcCAqLzsg
fTsKIAkJREFFRDIwMzExNkYyNDQ0ODAwNzBFQzBGIC8qIFBhZ2VDb25zb2xlQ2xpZW50LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEQUFDQjNEQTE2RjI0
MTY0MDA2NjYxMzUgLyogUGFnZUNvbnNvbGVDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTA0NTUsMTMgKzEwNDQyLDYgQEAKIAkJNTJC
MEQ0QkQxQzU3RkQxRTAwNzdDRTUzIC8qIFBsYXRmb3JtVmlldy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBQbGF0Zm9ybVZpZXcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTJCMEQ0QkYxQzU3RkQ2NjAwNzdDRTUzIC8qIFZpZGVvRnVsbHNjcmVlbkNoYW5nZU9i
c2VydmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZpZGVvRnVsbHNjcmVl
bkNoYW5nZU9ic2VydmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUyQjBENEMx
MUM1N0ZGOTEwMDc3Q0U1MyAvKiBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUyQjZDOUJEMTVFM0Y0REYwMDY5MEIwNSAv
KiBET01OYW1lZEZsb3dDb2xsZWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IERPTU5hbWVkRmxvd0NvbGxlY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQk1MkI2QzlCRTE1RTNGNERGMDA2OTBCMDUgLyogRE9NTmFtZWRGbG93Q29sbGVj
dGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01OYW1lZEZsb3dDb2xs
ZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUyQjZDOUJGMTVFM0Y0REYw
MDY5MEIwNSAvKiBET01OYW1lZEZsb3dDb2xsZWN0aW9uLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBh
dGggPSBET01OYW1lZEZsb3dDb2xsZWN0aW9uLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJNTJCNkM5QzAxNUUzRjRERjAwNjkwQjA1IC8qIE5hbWVkRmxvd0NvbGxlY3Rpb24uY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmFtZWRGbG93Q29sbGVjdGlv
bi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUyQjZDOUMxMTVFM0Y0REYwMDY5
MEIwNSAvKiBOYW1lZEZsb3dDb2xsZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IE5hbWVkRmxvd0NvbGxlY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJNTJDQ0E5RTAxNUUzRjYyQzAwNTNDNzdGIC8qIEpTRE9NTmFtZWRGbG93Q29sbGVjdGlvbi5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0RPTU5hbWVkRmxvd0Nv
bGxlY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MkNDQTlFMTE1RTNG
NjJDMDA1M0M3N0YgLyogSlNET01OYW1lZEZsb3dDb2xsZWN0aW9uLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEpTRE9NTmFtZWRGbG93Q29sbGVjdGlvbi5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1MkQ1QTE4RDFDNTQ1OTAzMDBERTM0QTMgLyogVmlkZW9GdWxs
c2NyZWVuTGF5ZXJNYW5hZ2VyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gVmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1MkQ1QTE4RTFDNTQ1OTAzMDBERTM0QTMgLyogVmlkZW9GdWxsc2NyZWVuTGF5
ZXJNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZpZGVvRnVsbHNj
cmVlbkxheWVyTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MkQ1QTFB
NDFDNTc0ODg5MDBERTM0QTMgLyogVmlkZW9GdWxsc2NyZWVuTW9kZWwuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gVmlkZW9GdWxsc2NyZWVuTW9kZWwuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTEwOTI0LDcgKzEwOTA0LDYgQEAKIAkJNkM0Qzk2REIxQUQ0NDgz
NTAwMzY1QTUwIC8qIEpTUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1JlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xs
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkM2Mzg4OTNBOTZDQ0VFNTBDOEM5
NDZDIC8qIENhY2hlZFJlc291cmNlUmVxdWVzdEluaXRpYXRvcnMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IENhY2hlZFJlc291cmNlUmVxdWVzdEluaXRpYXRvcnMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkM2Mzg4OTRBOTZDQ0VFNTBDOEM5NDZDIC8qIENh
Y2hlZFJlc291cmNlUmVxdWVzdEluaXRpYXRvcnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IENhY2hlZFJlc291cmNlUmVxdWVzdEluaXRpYXRvcnMuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk2QzcwQTgxNDE3NzA3QzQ5MDA5QTQ0NkUgLyogUmVn
aW9uT3ZlcnNldFN0YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZ2lv
bk92ZXJzZXRTdGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2RTBFNTY5OTE4
M0JGRkU2MDBFMEU4RDUgLyogRmxvYXRSb3VuZGVkUmVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBGbG9hdFJvdW5kZWRSZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNkUwRTU2OUExODNCRkZFNjAwRTBFOEQ1IC8qIEZsb2F0Um91bmRlZFJl
Y3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmxvYXRSb3VuZGVkUmVjdC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2RTIxQzZCRjExMjYzMzg1MDBBN0JFMDIg
LyogR3JhcGhpY3NDb250ZXh0M0QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gR3JhcGhpY3NDb250ZXh0M0QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMTIxMzMsMTQgKzEyMTEyLDkgQEAKIAkJOEE5QTU4NkYxMUU4NEMzNjAwOEFDRkQxIC8qIEpT
UGVyZm9ybWFuY2VOYXZpZ2F0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEpTUGVyZm9ybWFuY2VOYXZpZ2F0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CThBOUE1ODczMTFFODRDODEwMDhBQ0ZEMSAvKiBKU1BlcmZvcm1hbmNlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTUGVyZm9ybWFuY2UuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJOEE5QTU4NzcxMUU4NEM5ODAwOEFDRkQxIC8qIEpTUGVyZm9ybWFuY2VUaW1p
bmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNQZXJmb3JtYW5jZVRpbWlu
Zy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4QUE2MUNGRDE0NEQ1OTVCMDBGMzcz
NTAgLyogV2ViS2l0Q1NTUmVnaW9uUnVsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBXZWJLaXRDU1NSZWdpb25SdWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJOEFBNjFDRkUxNDRENTk1QjAwRjM3MzUwIC8qIFdlYktpdENTU1JlZ2lvblJ1bGUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViS2l0Q1NTUmVnaW9uUnVsZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4QUI0QkM3NjEyNkZEQjcxMDBERUI3Mjcg
LyogSWdub3JlRGVzdHJ1Y3RpdmVXcml0ZUNvdW50SW5jcmVtZW50ZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSWdub3JlRGVzdHJ1Y3RpdmVXcml0ZUNvdW50SW5jcmVtZW50
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOEFDODIyRkExODBGQzAzMzAwRkI2
NEQ1IC8qIFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJOEFDODIyRkIxODBGQzAzMzAwRkI2NEQ1IC8qIFJlbmRlck5hbWVk
Rmxvd0ZyYWdtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlck5h
bWVkRmxvd0ZyYWdtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCThBQ0MyNENE
MTQ4RTI0QjIwMEVGQ0MwRCAvKiBKU1dlYktpdENTU1JlZ2lvblJ1bGUuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNXZWJLaXRDU1NSZWdpb25SdWxlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJOEFDQzI0Q0UxNDhFMjRCMjAwRUZDQzBEIC8qIEpT
V2ViS2l0Q1NTUmVnaW9uUnVsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBK
U1dlYktpdENTU1JlZ2lvblJ1bGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJOEFE
MEE1NTYxNEM4NzQyNTAwMEQ4M0M1IC8qIFdlYktpdENTU1JlZ2lvblJ1bGUuaWRsICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IFdlYktpdENTU1JlZ2lvblJ1bGUuaWRsOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk4QUY0RTU1MjExREM1QTM2MDAwRUQzREUgLyogUGVyZm9ybWFuY2VOYXZp
Z2F0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBlcmZvcm1h
bmNlTmF2aWdhdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCThBRjRFNTUz
MTFEQzVBMzYwMDBFRDNERSAvKiBQZXJmb3JtYW5jZU5hdmlnYXRpb24uaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUGVyZm9ybWFuY2VOYXZpZ2F0aW9uLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCThBRjRFNTU0MTFEQzVBMzYwMDBFRDNERSAvKiBQZXJmb3JtYW5j
ZU5hdmlnYXRpb24uaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFBlcmZvcm1hbmNlTmF2aWdh
dGlvbi5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNTQwNSwxMSArMTUzNzks
NiBAQAogCQlENzBBRDY1NjEzRTEzNDJCMDA1QjUwQjQgLyogUmVuZGVyUmVnaW9uLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlclJlZ2lvbi5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlENzJGNkQ3NzE1MzE1OUEzMDAxRUU0NEUgLyogRmxvd1RocmVhZENv
bnRyb2xsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRmxvd1Ro
cmVhZENvbnRyb2xsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlENzJGNkQ3
ODE1MzE1OUEzMDAxRUU0NEUgLyogRmxvd1RocmVhZENvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gRmxvd1RocmVhZENvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJRDc2MTNBNEExNDc0RUU5NTAwREI4NjA2IC8qIFdlYktpdE5hbWVk
Rmxvdy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViS2l0TmFtZWRGbG93LmlkbDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDc2MTNBNEQxNDc0RjEzRjAwREI4NjA2IC8qIFdl
YktpdE5hbWVkRmxvdy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJLaXRO
YW1lZEZsb3cuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDc2MTNBNEUxNDc0RjEz
RjAwREI4NjA2IC8qIFdlYktpdE5hbWVkRmxvdy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBXZWJLaXROYW1lZEZsb3cuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQlENzYxM0FDMjE0NzUzRTU2MDBEQjg2MDYgLyogSlNXZWJLaXROYW1lZEZsb3cuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNXZWJLaXROYW1lZEZsb3cu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlENzYxM0FDMzE0NzUzRTU2MDBEQjg2
MDYgLyogSlNXZWJLaXROYW1lZEZsb3cuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSlNXZWJLaXROYW1lZEZsb3cuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDhC
NjE1MkUxMDMyNDk1MTAwQzg1NTRBIC8qIENvb2tpZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBDb29raWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJREFBQ0Iz
RDkxNkYyNDE2NDAwNjY2MTM1IC8qIFBhZ2VDb25zb2xlQ2xpZW50LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBhZ2VDb25zb2xlQ2xpZW50LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJREFBQ0IzREExNkYyNDE2NDAwNjY2MTM1IC8qIFBhZ2VDb25z
b2xlQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBhZ2VDb25zb2xl
Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMjY1NCw4ICsyMjYyMyw2
IEBACiAJCQkJQTg0RUJEODEwQ0I4Qzk3NzAwMDc5NjA5IC8qIEpTU3R5bGVTaGVldExpc3QuaCAq
LywKIAkJCQk0OTgzOTEzRDBGMUU3Njc1MDBDMjM3ODIgLyogSlNXZWJLaXRDU1NNYXRyaXguY3Bw
ICovLAogCQkJCTQ5ODM5MTNFMEYxRTc2NzUwMEMyMzc4MiAvKiBKU1dlYktpdENTU01hdHJpeC5o
ICovLAotCQkJCThBQ0MyNENEMTQ4RTI0QjIwMEVGQ0MwRCAvKiBKU1dlYktpdENTU1JlZ2lvblJ1
bGUuY3BwICovLAotCQkJCThBQ0MyNENFMTQ4RTI0QjIwMEVGQ0MwRCAvKiBKU1dlYktpdENTU1Jl
Z2lvblJ1bGUuaCAqLywKIAkJCQkzRjJCMzNFOTE2NUFGMTU1MDBFMzk4N0MgLyogSlNXZWJLaXRD
U1NWaWV3cG9ydFJ1bGUuY3BwICovLAogCQkJCTNGMkIzM0VBMTY1QUYxNTUwMEUzOTg3QyAvKiBK
U1dlYktpdENTU1ZpZXdwb3J0UnVsZS5oICovLAogCQkJKTsKQEAgLTIyNjk1LDggKzIyNjYyLDYg
QEAKIAkJCQlCQzYwRDdCRjBEMjlBNDYzMDBCOTkxOEYgLyogSlNET01FeGNlcHRpb24uaCAqLywK
IAkJCQk2NURGMzFFMzA5RDFDQzYwMDAwQkUzMjUgLyogSlNET01JbXBsZW1lbnRhdGlvbi5jcHAg
Ki8sCiAJCQkJNjVERjMxRTQwOUQxQ0M2MDAwMEJFMzI1IC8qIEpTRE9NSW1wbGVtZW50YXRpb24u
aCAqLywKLQkJCQk1MkNDQTlFMDE1RTNGNjJDMDA1M0M3N0YgLyogSlNET01OYW1lZEZsb3dDb2xs
ZWN0aW9uLmNwcCAqLywKLQkJCQk1MkNDQTlFMTE1RTNGNjJDMDA1M0M3N0YgLyogSlNET01OYW1l
ZEZsb3dDb2xsZWN0aW9uLmggKi8sCiAJCQkJMEY0OTY2QTQxREI0MEM0MzAwQTI3NEJCIC8qIEpT
RE9NUG9pbnQuY3BwICovLAogCQkJCTBGNDk2NkE1MURCNDBDNDMwMEEyNzRCQiAvKiBKU0RPTVBv
aW50LmggKi8sCiAJCQkJMEY0OTY2QTYxREI0MEM0MzAwQTI3NEJCIC8qIEpTRE9NUG9pbnRJbml0
LmNwcCAqLywKQEAgLTIyNzQ3LDggKzIyNzEyLDYgQEAKIAkJCQk5QjA5OEJFNzFGM0Q2QUY2MDAy
REQ1NjIgLyogSlNTdHJpbmdDYWxsYmFjay5oICovLAogCQkJCTY1REYzMUVGMDlEMUNDNjAwMDBC
RTMyNSAvKiBKU1RleHQuY3BwICovLAogCQkJCTY1REYzMUYwMDlEMUNDNjAwMDBCRTMyNSAvKiBK
U1RleHQuaCAqLywKLQkJCQlENzYxM0FDMjE0NzUzRTU2MDBEQjg2MDYgLyogSlNXZWJLaXROYW1l
ZEZsb3cuY3BwICovLAotCQkJCUQ3NjEzQUMzMTQ3NTNFNTYwMERCODYwNiAvKiBKU1dlYktpdE5h
bWVkRmxvdy5oICovLAogCQkJCTgzRjU3MEFFMUM1MzI2OEUwMDdGRDZDQiAvKiBKU1hNTERvY3Vt
ZW50LmNwcCAqLywKIAkJCQk4M0Y1NzBBRDFDNTMyNjhFMDA3RkQ2Q0IgLyogSlNYTUxEb2N1bWVu
dC5oICovLAogCQkJKTsKQEAgLTI1ODY3LDkgKzI1ODMwLDYgQEAKIAkJCQk0OTgzOTE1NTBGMUU3
NzY5MDBDMjM3ODIgLyogV2ViS2l0Q1NTTWF0cml4LmNwcCAqLywKIAkJCQk0OTgzOTE1NjBGMUU3
NzY5MDBDMjM3ODIgLyogV2ViS2l0Q1NTTWF0cml4LmggKi8sCiAJCQkJNDk4MzkxNTcwRjFFNzc2
OTAwQzIzNzgyIC8qIFdlYktpdENTU01hdHJpeC5pZGwgKi8sCi0JCQkJOEFBNjFDRkQxNDRENTk1
QjAwRjM3MzUwIC8qIFdlYktpdENTU1JlZ2lvblJ1bGUuY3BwICovLAotCQkJCThBQTYxQ0ZFMTQ0
RDU5NUIwMEYzNzM1MCAvKiBXZWJLaXRDU1NSZWdpb25SdWxlLmggKi8sCi0JCQkJOEFEMEE1NTYx
NEM4NzQyNTAwMEQ4M0M1IC8qIFdlYktpdENTU1JlZ2lvblJ1bGUuaWRsICovLAogCQkJCTNGRkZG
OUE2MTU5RDlBNTUwMDIwQkJENSAvKiBXZWJLaXRDU1NWaWV3cG9ydFJ1bGUuY3BwICovLAogCQkJ
CTNGRkZGOUE3MTU5RDlBNTUwMDIwQkJENSAvKiBXZWJLaXRDU1NWaWV3cG9ydFJ1bGUuaCAqLywK
IAkJCQkzRjJCMzNFMzE2NUFCRDM1MDBFMzk4N0MgLyogV2ViS2l0Q1NTVmlld3BvcnRSdWxlLmlk
bCAqLywKQEAgLTI1OTU0LDcgKzI1OTE0LDYgQEAKIAkJCQkwODg1MDY3RTExREEwNDVCMDAxODJC
OTggLyogUGFpbnRQaGFzZS5oICovLAogCQkJCUIyQjFGNzE0MEQwMENBQTgwMDRBRUE2NCAvKiBQ
b2ludGVyRXZlbnRzSGl0UnVsZXMuY3BwICovLAogCQkJCUIyQjFGNzE1MEQwMENBQTgwMDRBRUE2
NCAvKiBQb2ludGVyRXZlbnRzSGl0UnVsZXMuaCAqLywKLQkJCQk2QzcwQTgxNDE3NzA3QzQ5MDA5
QTQ0NkUgLyogUmVnaW9uT3ZlcnNldFN0YXRlLmggKi8sCiAJCQkJQjU5RUQyM0ExODI3MjY3OTAw
NkQ1NjRDIC8qIFJlbmRlckFuY2VzdG9ySXRlcmF0b3IuaCAqLywKIAkJCQk3Q0Q0OTRDQTFBODZF
QjFEMDAwQTg3RUMgLyogUmVuZGVyQXR0YWNobWVudC5jcHAgKi8sCiAJCQkJN0NENDk0Q0IxQTg2
RUIxRDAwMEE4N0VDIC8qIFJlbmRlckF0dGFjaG1lbnQuaCAqLywKQEAgLTI2MzExLDkgKzI2Mjcw
LDYgQEAKIAkJCQlBODE4NUYzNjA5NzY1NzY1MDA1ODI2RDkgLyogRE9NSW1wbGVtZW50YXRpb24u
Y3BwICovLAogCQkJCUE4MTg1RjMzMDk3NjU3NjUwMDU4MjZEOSAvKiBET01JbXBsZW1lbnRhdGlv
bi5oICovLAogCQkJCTkzRUVDMUU5MDlDMjg3NzcwMEM1MTVEMSAvKiBET01JbXBsZW1lbnRhdGlv
bi5pZGwgKi8sCi0JCQkJNTJCNkM5QkQxNUUzRjRERjAwNjkwQjA1IC8qIERPTU5hbWVkRmxvd0Nv
bGxlY3Rpb24uY3BwICovLAotCQkJCTUyQjZDOUJFMTVFM0Y0REYwMDY5MEIwNSAvKiBET01OYW1l
ZEZsb3dDb2xsZWN0aW9uLmggKi8sCi0JCQkJNTJCNkM5QkYxNUUzRjRERjAwNjkwQjA1IC8qIERP
TU5hbWVkRmxvd0NvbGxlY3Rpb24uaWRsICovLAogCQkJCTBGNDk2Njk5MURCNDA4QzEwMEEyNzRC
QiAvKiBET01Qb2ludC5oICovLAogCQkJCTBGNDk2NjlBMURCNDA4QzEwMEEyNzRCQiAvKiBET01Q
b2ludC5pZGwgKi8sCiAJCQkJMEY0OTY2QTIxREI0MDkxMDAwQTI3NEJCIC8qIERPTVBvaW50SW5p
dC5oICovLApAQCAtMjY0NjEsOCArMjY0MTcsNiBAQAogCQkJCUM2RjA4RkI5MTQzMEZFOEYwMDY4
NTg0OSAvKiBNdXRhdGlvblJlY29yZC5jcHAgKi8sCiAJCQkJQzZGMDhGQkExNDMwRkU4RjAwNjg1
ODQ5IC8qIE11dGF0aW9uUmVjb3JkLmggKi8sCiAJCQkJQzZGMDhGQkIxNDMwRkU4RjAwNjg1ODQ5
IC8qIE11dGF0aW9uUmVjb3JkLmlkbCAqLywKLQkJCQk1MkI2QzlDMDE1RTNGNERGMDA2OTBCMDUg
LyogTmFtZWRGbG93Q29sbGVjdGlvbi5jcHAgKi8sCi0JCQkJNTJCNkM5QzExNUUzRjRERjAwNjkw
QjA1IC8qIE5hbWVkRmxvd0NvbGxlY3Rpb24uaCAqLywKIAkJCQlCQ0YzNEEzNjExQTIzMUNEMDBD
NzE4MDQgLyogTmFtZWROb2RlTWFwLmNwcCAqLywKIAkJCQlBODE4NzIxODA5NzdEM0MwMDA1ODI2
RDkgLyogTmFtZWROb2RlTWFwLmggKi8sCiAJCQkJODVBQ0E5RjkwQTlCNjMxMDAwNjcxRTkwIC8q
IE5hbWVkTm9kZU1hcC5pZGwgKi8sCkBAIC0yNjY0MSw5ICsyNjU5NSw2IEBACiAJCQkJMzFDMEZG
MUIwRTRDRUI2RTAwN0Q2RkU1IC8qIFdlYktpdEFuaW1hdGlvbkV2ZW50LmNwcCAqLywKIAkJCQkz
MUMwRkYxQzBFNENFQjZFMDA3RDZGRTUgLyogV2ViS2l0QW5pbWF0aW9uRXZlbnQuaCAqLywKIAkJ
CQkzMUMwRkYxRDBFNENFQjZFMDA3RDZGRTUgLyogV2ViS2l0QW5pbWF0aW9uRXZlbnQuaWRsICov
LAotCQkJCUQ3NjEzQTRFMTQ3NEYxM0YwMERCODYwNiAvKiBXZWJLaXROYW1lZEZsb3cuY3BwICov
LAotCQkJCUQ3NjEzQTREMTQ3NEYxM0YwMERCODYwNiAvKiBXZWJLaXROYW1lZEZsb3cuaCAqLywK
LQkJCQlENzYxM0E0QTE0NzRFRTk1MDBEQjg2MDYgLyogV2ViS2l0TmFtZWRGbG93LmlkbCAqLywK
IAkJCQkzMUMwRkYxRTBFNENFQjZFMDA3RDZGRTUgLyogV2ViS2l0VHJhbnNpdGlvbkV2ZW50LmNw
cCAqLywKIAkJCQkzMUMwRkYxRjBFNENFQjZFMDA3RDZGRTUgLyogV2ViS2l0VHJhbnNpdGlvbkV2
ZW50LmggKi8sCiAJCQkJMzFDMEZGMjAwRTRDRUI2RTAwN0Q2RkU1IC8qIFdlYktpdFRyYW5zaXRp
b25FdmVudC5pZGwgKi8sCkBAIC0yNzc4MCw3ICsyNzczMSw2IEBACiAJCQkJODM2QUNFQzMxRUNB
NjJDODAwNEJEMDEyIC8qIERPTU1hdHJpeFJlYWRPbmx5LmggaW4gSGVhZGVycyAqLywKIAkJCQlB
OUM2RTRFNDBENzQ1RTA1MDA2NDQyRTkgLyogRE9NTWltZVR5cGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCUE5QzZFNEU4MEQ3NDVFMTgwMDY0NDJFOSAvKiBET01NaW1lVHlwZUFycmF5LmggaW4gSGVh
ZGVycyAqLywKLQkJCQk1MkI2QzlDMzE1RTNGNERGMDA2OTBCMDUgLyogRE9NTmFtZWRGbG93Q29s
bGVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFDRTUzRTgwQThEMThFNzAwMjI5NDdEIC8q
IERPTVBhcnNlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0E1NDg4MTcxNEU0MzJBMTAwNkFFMDVB
IC8qIERPTVBhdGNoU3VwcG9ydC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTlDNkU0RUMwRDc0NUUy
QjAwNjQ0MkU5IC8qIERPTVBsdWdpbi5oIGluIEhlYWRlcnMgKi8sCkBAIC0yODU2Niw3ICsyODUx
Niw2IEBACiAJCQkJODM2QUNFRDYxRUNBQUIxOTAwNEJEMDEyIC8qIEpTRE9NTWF0cml4UmVhZE9u
bHkuaCBpbiBIZWFkZXJzICovLAogCQkJCUE5RDI0ODA3MEQ3NTdFN0QwMEZERjk1OSAvKiBKU0RP
TU1pbWVUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOUQyNDgwOTBENzU3RTdEMDBGREY5NTkg
LyogSlNET01NaW1lVHlwZUFycmF5LmggaW4gSGVhZGVycyAqLywKLQkJCQk1MkNDQTlFMzE1RTNG
NjJDMDA1M0M3N0YgLyogSlNET01OYW1lZEZsb3dDb2xsZWN0aW9uLmggaW4gSGVhZGVycyAqLywK
IAkJCQk3QzgxMzlBNzFFRDYyODc0MDBDRTI2RTggLyogSlNET01PcGVyYXRpb24uaCBpbiBIZWFk
ZXJzICovLAogCQkJCTdDODEzOUE4MUVENjI4NzQwMENFMjZFOCAvKiBKU0RPTU9wZXJhdGlvblJl
dHVybmluZ1Byb21pc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQ0U1M0UwMEE4RDE4ODEwMDIy
OTQ3RCAvKiBKU0RPTVBhcnNlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0yOTE2OCw3ICsyOTExNyw2
IEBACiAJCQkJMzFBMDg5OEMxRTczOEQ1QTAwM0I2NjA5IC8qIEpTV2ViR1BVVGV4dHVyZURlc2Ny
aXB0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxQzBGRjNFMEU0Q0VGQUMwMDdENkZFNSAvKiBK
U1dlYktpdEFuaW1hdGlvbkV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk0OTgzOTE0MDBGMUU3
Njc1MDBDMjM3ODIgLyogSlNXZWJLaXRDU1NNYXRyaXguaCBpbiBIZWFkZXJzICovLAotCQkJCThB
RDBBNTk1MTRDODgzMzYwMDBEODNDNSAvKiBKU1dlYktpdENTU1JlZ2lvblJ1bGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTNGMkIzM0VGMTY1QUYxNTYwMEUzOTg3QyAvKiBKU1dlYktpdENTU1ZpZXdw
b3J0UnVsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0NDNjk5NDExOTFFQzVGNTAwQUYyMjcwIC8q
IEpTV2ViS2l0TmFtZXNwYWNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkRBN0MyNzE4ODMzMzMy
MDBDOTU0QjUgLyogSlNXZWJLaXRQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUV2ZW50LmggaW4g
SGVhZGVycyAqLywKQEAgLTI5NDM3LDcgKzI5Mzg1LDYgQEAKIAkJCQlENkU1MjhBNDE0OUE5MjZE
MDBFRkUxRjMgLyogTXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXAuaCBpbiBIZWFkZXJzICov
LAogCQkJCUQ2RTI3NkIwMTQ2Mzc0NTUwMDFEMjgwQSAvKiBNdXRhdGlvbk9ic2VydmVyUmVnaXN0
cmF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlDNkYwOEZCRDE0MzBGRThGMDA2ODU4NDkgLyog
TXV0YXRpb25SZWNvcmQuaCBpbiBIZWFkZXJzICovLAotCQkJCTUyQjZDOUM2MTVFM0Y0REYwMDY5
MEIwNSAvKiBOYW1lZEZsb3dDb2xsZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMTRCRTNB
NzFCMzEwM0ZCMDAxNDE5ODIgLyogTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBODE4NzIyMzA5NzdEM0MwMDA1ODI2RDkgLyogTmFtZWROb2RlTWFwLmggaW4g
SGVhZGVycyAqLywKIAkJCQlBODE4NzIxRTA5NzdEM0MwMDA1ODI2RDkgLyogTmFtZU5vZGVMaXN0
LmggaW4gSGVhZGVycyAqLywKQEAgLTI5NzM3LDcgKzI5Njg0LDYgQEAKIAkJCQk1Q0VFRTQzNjFG
NUY4RjIxMDAxNEE1RjUgLyogUmVjdEVkZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQk5ODMxQUU0
QTE1NDIyNUM5MDBGRTI2NDQgLyogUmVmZXJyZXJQb2xpY3kuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUJDQUI0MTgyMTNFMzU2RTgwMEQ4QUFGMyAvKiBSZWdpb24uaCBpbiBIZWFkZXJzICovLAotCQkJ
CTZDRERFOEQwMTc3MEJCMjIwMDE2RTA3MiAvKiBSZWdpb25PdmVyc2V0U3RhdGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTI2Qjk5OThGMTgwM0FFNzIwMEQwMTEyMSAvKiBSZWdpc3RlckFsbG9jYXRv
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODUwMzFCNEMwQTQ0RUZDNzAwRjk5MkUwIC8qIFJlZ2lz
dGVyZWRFdmVudExpc3RlbmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTc4RjQzRjFERTBCNjMw
MDAzREZDNkEgLyogUmVqZWN0ZWRQcm9taXNlVHJhY2tlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0z
MDgwNCw3ICszMDc1MCw2IEBACiAJCQkJMzFDMEZGMjIwRTRDRUI2RTAwN0Q2RkU1IC8qIFdlYktp
dEFuaW1hdGlvbkV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk1REZFQkFCNzE4NTkyQjZEMDBD
NzVCRUIgLyogV2ViS2l0QXZhaWxhYmlsaXR5LmggaW4gSGVhZGVycyAqLywKIAkJCQk0OTgzOTE1
OTBGMUU3NzY5MDBDMjM3ODIgLyogV2ViS2l0Q1NTTWF0cml4LmggaW4gSGVhZGVycyAqLywKLQkJ
CQk4QUE2MUQwMDE0NEQ1OTVCMDBGMzczNTAgLyogV2ViS2l0Q1NTUmVnaW9uUnVsZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJM0ZGRkY5QTkxNTlEOUE1NTAwMjBCQkQ1IC8qIFdlYktpdENTU1ZpZXdw
b3J0UnVsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQwNjIxNDUxREE2MzlCQTAwQTdGQjI2IC8q
IFdlYktpdE1lZGlhS2V5TWVzc2FnZUV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDA2MjE1
MTFEQTYzQTlGMDBBN0ZCMjYgLyogV2ViS2l0TWVkaWFLZXlOZWVkZWRFdmVudC5oIGluIEhlYWRl
cnMgKi8sCkBAIC0zMTg1Nyw3ICszMTgwMiw2IEBACiAJCQkJODM2QUNFQzIxRUNBNjJDODAwNEJE
MDEyIC8qIERPTU1hdHJpeFJlYWRPbmx5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE5QzZFNEUz
MEQ3NDVFMDUwMDY0NDJFOSAvKiBET01NaW1lVHlwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlB
OUM2RTRFNzBENzQ1RTE4MDA2NDQyRTkgLyogRE9NTWltZVR5cGVBcnJheS5jcHAgaW4gU291cmNl
cyAqLywKLQkJCQk1MkI2QzlDMjE1RTNGNERGMDA2OTBCMDUgLyogRE9NTmFtZWRGbG93Q29sbGVj
dGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUNFNTNFNzBBOEQxOEU3MDAyMjk0N0QgLyog
RE9NUGFyc2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdBNTQ4ODE4MTRFNDMyQTEwMDZBRTA1
QSAvKiBET01QYXRjaFN1cHBvcnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTlDNkU0RUIwRDc0
NUUyQjAwNjQ0MkU5IC8qIERPTVBsdWdpbi5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMyNTk0LDcg
KzMyNTM4LDYgQEAKIAkJCQk4MzZBQ0VENTFFQ0FBQjE5MDA0QkQwMTIgLyogSlNET01NYXRyaXhS
ZWFkT25seS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOUQyNDgwNjBENzU3RTdEMDBGREY5NTkg
LyogSlNET01NaW1lVHlwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOUQyNDgwODBENzU3RTdE
MDBGREY5NTkgLyogSlNET01NaW1lVHlwZUFycmF5LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTUy
Q0NBOUUyMTVFM0Y2MkMwMDUzQzc3RiAvKiBKU0RPTU5hbWVkRmxvd0NvbGxlY3Rpb24uY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMUFDRTUzREYwQThEMTg4MTAwMjI5NDdEIC8qIEpTRE9NUGFyc2Vy
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE5RDI0N0ZFMEQ3NTdFNjkwMEZERjk1OSAvKiBKU0RP
TVBsdWdpbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOUQyNDgwMDBENzU3RTY5MDBGREY5NTkg
LyogSlNET01QbHVnaW5BcnJheS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMzMjQ5LDE0ICszMzE5
MiwxMiBAQAogCQkJCTMxQTA4OThBMUU3MzhENUEwMDNCNjYwOSAvKiBKU1dlYkdQVVRleHR1cmVE
ZXNjcmlwdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTMxQzBGRjNEMEU0Q0VGQUMwMDdENkZF
NSAvKiBKU1dlYktpdEFuaW1hdGlvbkV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ5ODM5
MTNGMEYxRTc2NzUwMEMyMzc4MiAvKiBKU1dlYktpdENTU01hdHJpeC5jcHAgaW4gU291cmNlcyAq
LywKLQkJCQk4QUQwQTU5NDE0Qzg4MzM2MDAwRDgzQzUgLyogSlNXZWJLaXRDU1NSZWdpb25SdWxl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTNGMkIzM0VFMTY1QUYxNTYwMEUzOTg3QyAvKiBKU1dl
YktpdENTU1ZpZXdwb3J0UnVsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDREE5OERBMzE2MDE0
NjQxMDBGRUEzQjEgLyogSlNXZWJLaXRNZWRpYUtleUVycm9yLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUNEQTk4RERGMTYwMjZBMzcwMEZFQTNCMSAvKiBKU1dlYktpdE1lZGlhS2V5TWVzc2FnZUV2
ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNEQTk4REUwMTYwMjZBMzcwMEZFQTNCMSAvKiBK
U1dlYktpdE1lZGlhS2V5TmVlZGVkRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RBOThF
MDQxNjAzOUUxQTAwRkVBM0IxIC8qIEpTV2ViS2l0TWVkaWFLZXlzLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUNEQTk4RTA2MTYwMzlFMUYwMEZFQTNCMSAvKiBKU1dlYktpdE1lZGlhS2V5U2Vzc2lv
bi5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlENzYxM0FDNDE0NzUzRTU2MDBEQjg2MDYgLyogSlNX
ZWJLaXROYW1lZEZsb3cuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDNjk5NDAxOTFFQzVGNTAw
QUYyMjcwIC8qIEpTV2ViS2l0TmFtZXNwYWNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGREE3
QzI2MTg4MzMzMzIwMEM5NTRCNSAvKiBKU1dlYktpdFBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5
RXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDk0QkQ3OUQwRjU1Qzk0QzAwNzQ3ODI4IC8q
IEpTV2ViS2l0UG9pbnQuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zMzUwMyw3ICszMzQ0NCw2IEBA
CiAJCQkJRDZFNTI4QTMxNDlBOTI2RDAwRUZFMUYzIC8qIE11dGF0aW9uT2JzZXJ2ZXJJbnRlcmVz
dEdyb3VwLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUQ2RTI3NkFGMTQ2Mzc0NTUwMDFEMjgwQSAv
KiBNdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUM2
RjA4RkJDMTQzMEZFOEYwMDY4NTg0OSAvKiBNdXRhdGlvblJlY29yZC5jcHAgaW4gU291cmNlcyAq
LywKLQkJCQk1MkI2QzlDNTE1RTNGNERGMDA2OTBCMDUgLyogTmFtZWRGbG93Q29sbGVjdGlvbi5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkzMTRCRTNBNjFCMzEwM0ZCMDAxNDE5ODIgLyogTmFtZWRJ
bWFnZUdlbmVyYXRlZEltYWdlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDRjM0QTM3MTFBMjMx
Q0QwMEM3MTgwNCAvKiBOYW1lZE5vZGVNYXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTgxODcy
MjQwOTc3RDNDMDAwNTgyNkQ5IC8qIE5hbWVOb2RlTGlzdC5jcHAgaW4gU291cmNlcyAqLywKQEAg
LTM0NjExLDE0ICszNDU1MSwxMiBAQAogCQkJCUY0ODIyMzEwMUUzODY5QjgwMDY2RkM3OSAvKiBX
ZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMzFDMEZGMjEw
RTRDRUI2RTAwN0Q2RkU1IC8qIFdlYktpdEFuaW1hdGlvbkV2ZW50LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTQ5ODM5MTU4MEYxRTc3NjkwMEMyMzc4MiAvKiBXZWJLaXRDU1NNYXRyaXguY3BwIGlu
IFNvdXJjZXMgKi8sCi0JCQkJOEFBNjFDRkYxNDRENTk1QjAwRjM3MzUwIC8qIFdlYktpdENTU1Jl
Z2lvblJ1bGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJM0ZGRkY5QTgxNTlEOUE1NTAwMjBCQkQ1
IC8qIFdlYktpdENTU1ZpZXdwb3J0UnVsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTE0MTRC
NTEzQTBGMDUwMDAxOTk5NkMgLyogV2ViS2l0Rm9udEZhbWlseU5hbWVzLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTJEMDYyMTQ0MURBNjM5QjYwMEE3RkIyNiAvKiBXZWJLaXRNZWRpYUtleU1lc3Nh
Z2VFdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDA2MjE1MjFEQTYzQUEyMDBBN0ZCMjYg
LyogV2ViS2l0TWVkaWFLZXlOZWVkZWRFdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDA2
MjE0RDFEQTYzQThCMDBBN0ZCMjYgLyogV2ViS2l0TWVkaWFLZXlzLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTJEMDYyMTRGMURBNjNBOTEwMEE3RkIyNiAvKiBXZWJLaXRNZWRpYUtleVNlc3Npb24u
Y3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJRDc2MTNBNTAxNDc0RjEzRjAwREI4NjA2IC8qIFdlYktp
dE5hbWVkRmxvdy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzQ4QTZEMDE5MUM5RDY1MDAwMjY2
NzQgLyogV2ViS2l0TmFtZXNwYWNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1REVCREEzMTZG
QjkwODcwMDgzNkZFMCAvKiBXZWJLaXRQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUV2ZW50LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTMxQzBGRjI0MEU0Q0VCNkUwMDdENkZFNSAvKiBXZWJLaXRU
cmFuc2l0aW9uRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0NTU1J1bGVDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTQ1NTUnVsZUN1c3RvbS5jcHAJKHJldmlzaW9uIDIyMjI1NykKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTUnVsZUN1c3RvbS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQ2LDkgKzQ2LDcgQEAKICNpbmNsdWRlICJKU0NTU1N1cHBvcnRzUnVsZS5oIgog
I2luY2x1ZGUgIkpTTm9kZS5oIgogI2luY2x1ZGUgIkpTU3R5bGVTaGVldEN1c3RvbS5oIgotI2lu
Y2x1ZGUgIkpTV2ViS2l0Q1NTUmVnaW9uUnVsZS5oIgogI2luY2x1ZGUgIkpTV2ViS2l0Q1NTVmll
d3BvcnRSdWxlLmgiCi0jaW5jbHVkZSAiV2ViS2l0Q1NTUmVnaW9uUnVsZS5oIgogI2luY2x1ZGUg
IldlYktpdENTU1ZpZXdwb3J0UnVsZS5oIgogCiB1c2luZyBuYW1lc3BhY2UgSlNDOwpAQCAtODUs
MTAgKzgzLDYgQEAgSlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEV4ZWNTdGF0ZSosIEpTRAogICAg
IGNhc2UgQ1NTUnVsZTo6V0VCS0lUX1ZJRVdQT1JUX1JVTEU6CiAgICAgICAgIHJldHVybiBjcmVh
dGVXcmFwcGVyPFdlYktpdENTU1ZpZXdwb3J0UnVsZT4oZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKHJ1
bGUpKTsKICNlbmRpZgotI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKLSAgICBjYXNlIENTU1J1bGU6
OldFQktJVF9SRUdJT05fUlVMRToKLSAgICAgICAgcmV0dXJuIGNyZWF0ZVdyYXBwZXI8V2ViS2l0
Q1NTUmVnaW9uUnVsZT4oZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKHJ1bGUpKTsKLSNlbmRpZgogICAg
IGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBjcmVhdGVXcmFwcGVyPENTU1J1bGU+KGdsb2JhbE9i
amVjdCwgV1RGTW92ZShydWxlKSk7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NT
U0FsbEluT25lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQWxsSW5P
bmUuY3BwCShyZXZpc2lvbiAyMjIyNTcpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQWxsSW5P
bmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjQsNiArMTI0LDUgQEAKICNpbmNsdWRlICJUcmFu
c2Zvcm1GdW5jdGlvbnMuY3BwIgogI2luY2x1ZGUgIlZpZXdwb3J0U3R5bGVSZXNvbHZlci5jcHAi
CiAjaW5jbHVkZSAiV2ViS2l0Q1NTTWF0cml4LmNwcCIKLSNpbmNsdWRlICJXZWJLaXRDU1NSZWdp
b25SdWxlLmNwcCIKICNpbmNsdWRlICJXZWJLaXRDU1NWaWV3cG9ydFJ1bGUuY3BwIgogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9u
LmNwcAkocmV2aXNpb24gMjIyMjU3KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVk
U3R5bGVEZWNsYXJhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxNywxNCArNDE3LDYgQEAg
c3RhdGljIGNvbnN0IENTU1Byb3BlcnR5SUQgY29tcHV0ZWRQcm9wZQogICAgIENTU1Byb3BlcnR5
V2Via2l0VXNlckRyYWcsCiAgICAgQ1NTUHJvcGVydHlXZWJraXRVc2VyTW9kaWZ5LAogICAgIENT
U1Byb3BlcnR5V2Via2l0VXNlclNlbGVjdCwKLSNpZiBFTkFCTEUoQ1NTX1JFR0lPTlMpCi0gICAg
Q1NTUHJvcGVydHlXZWJraXRGbG93SW50bywKLSAgICBDU1NQcm9wZXJ0eVdlYmtpdEZsb3dGcm9t
LAotICAgIENTU1Byb3BlcnR5V2Via2l0UmVnaW9uQnJlYWtBZnRlciwKLSAgICBDU1NQcm9wZXJ0
eVdlYmtpdFJlZ2lvbkJyZWFrQmVmb3JlLAotICAgIENTU1Byb3BlcnR5V2Via2l0UmVnaW9uQnJl
YWtJbnNpZGUsCi0gICAgQ1NTUHJvcGVydHlXZWJraXRSZWdpb25GcmFnbWVudCwKLSNlbmRpZgog
ICAgIENTU1Byb3BlcnR5U2hhcGVJbWFnZVRocmVzaG9sZCwKICAgICBDU1NQcm9wZXJ0eVNoYXBl
TWFyZ2luLAogICAgIENTU1Byb3BlcnR5U2hhcGVPdXRzaWRlLApAQCAtMTkxNiw4ICsxOTA4LDYg
QEAgc3RhdGljIFJlZjxDU1NWYWx1ZUxpc3Q+IGNvbnRlbnRUb0NTU1ZhbAogICAgICAgICBlbHNl
IGlmIChpczxUZXh0Q29udGVudERhdGE+KCpjb250ZW50RGF0YSkpCiAgICAgICAgICAgICBsaXN0
LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKGRvd25jYXN0PFRleHRDb250ZW50RGF0
YT4oKmNvbnRlbnREYXRhKS50ZXh0KCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfU1RSSU5HKSk7
CiAgICAgfQotICAgIGlmIChzdHlsZS5oYXNGbG93RnJvbSgpKQotICAgICAgICBsaXN0LT5hcHBl
bmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHN0eWxlLnJlZ2lvblRocmVhZCgpLCBDU1NQcmlt
aXRpdmVWYWx1ZTo6Q1NTX1NUUklORykpOwogICAgIHJldHVybiBsaXN0OwogfQogCkBAIC0yMjkw
LDI0ICsyMjgwLDYgQEAgc3RhdGljIENTU1ZhbHVlSUQgY29udmVydFRvQ29sdW1uQnJlYWsoQgog
ICAgIHJldHVybiBDU1NWYWx1ZUF1dG87CiB9CiAKLSNpZiBFTkFCTEUoQ1NTX1JFR0lPTlMpCi1z
dGF0aWMgQ1NTVmFsdWVJRCBjb252ZXJ0VG9SZWdpb25CcmVhayhCcmVha0JldHdlZW4gdmFsdWUp
Ci17Ci0gICAgaWYgKHZhbHVlID09IFJlZ2lvbkJyZWFrQmV0d2VlbikKLSAgICAgICAgcmV0dXJu
IENTU1ZhbHVlQWx3YXlzOwotICAgIGlmICh2YWx1ZSA9PSBBdm9pZEJyZWFrQmV0d2VlbiB8fCB2
YWx1ZSA9PSBBdm9pZFJlZ2lvbkJyZWFrQmV0d2VlbikKLSAgICAgICAgcmV0dXJuIENTU1ZhbHVl
QXZvaWQ7Ci0gICAgcmV0dXJuIENTU1ZhbHVlQXV0bzsKLX0KLSAgICAKLXN0YXRpYyBDU1NWYWx1
ZUlEIGNvbnZlcnRUb1JlZ2lvbkJyZWFrKEJyZWFrSW5zaWRlIHZhbHVlKQotewotICAgIGlmICh2
YWx1ZSA9PSBBdm9pZEJyZWFrSW5zaWRlIHx8IHZhbHVlID09IEF2b2lkUmVnaW9uQnJlYWtJbnNp
ZGUpCi0gICAgICAgIHJldHVybiBDU1NWYWx1ZUF2b2lkOwotICAgIHJldHVybiBDU1NWYWx1ZUF1
dG87Ci19Ci0jZW5kaWYKLQogc3RhdGljIGlubGluZSBib29sIGlzTm9uUmVwbGFjZWRJbmxpbmUo
UmVuZGVyT2JqZWN0JiByZW5kZXJlcikKIHsKICAgICByZXR1cm4gcmVuZGVyZXIuaXNJbmxpbmUo
KSAmJiAhcmVuZGVyZXIuaXNSZXBsYWNlZCgpOwpAQCAtMjk0NSwxNCArMjkxNyw2IEBAIFJlZlB0
cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3RvcjoKICAgICAgICAgICAgIHJldHVybiB6
b29tQWRqdXN0ZWRQaXhlbFZhbHVlKHN0eWxlLT5jb2x1bW5XaWR0aCgpLCAqc3R5bGUpOwogICAg
ICAgICBjYXNlIENTU1Byb3BlcnR5VGFiU2l6ZToKICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1
ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUtPnRhYlNpemUoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U19OVU1CRVIpOwotI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKLSAgICAgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdFJlZ2lvbkJyZWFrQWZ0ZXI6Ci0gICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQ
b29sLmNyZWF0ZVZhbHVlKGNvbnZlcnRUb1JlZ2lvbkJyZWFrKHN0eWxlLT5icmVha0FmdGVyKCkp
KTsKLSAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFJlZ2lvbkJyZWFrQmVmb3JlOgotICAg
ICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShjb252ZXJ0VG9SZWdpb25C
cmVhayhzdHlsZS0+YnJlYWtCZWZvcmUoKSkpOwotICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0UmVnaW9uQnJlYWtJbnNpZGU6Ci0gICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNy
ZWF0ZVZhbHVlKGNvbnZlcnRUb1JlZ2lvbkJyZWFrKHN0eWxlLT5icmVha0luc2lkZSgpKSk7Ci0j
ZW5kaWYKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUN1cnNvcjogewogICAgICAgICAgICAgUmVm
UHRyPENTU1ZhbHVlTGlzdD4gbGlzdDsKICAgICAgICAgICAgIGF1dG8qIGN1cnNvcnMgPSBzdHls
ZS0+Y3Vyc29ycygpOwpAQCAtMzgyOCwxOCArMzc5Miw2IEBAIFJlZlB0cjxDU1NWYWx1ZT4gQ29t
cHV0ZWRTdHlsZUV4dHJhY3RvcjoKICAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFs
dWVQb29sLmNyZWF0ZVZhbHVlKGRvd25jYXN0PEJveENsaXBQYXRoT3BlcmF0aW9uPigqb3BlcmF0
aW9uKS5yZWZlcmVuY2VCb3goKSkpOwogICAgICAgICAgICAgcmV0dXJuIFdURk1vdmUobGlzdCk7
CiAgICAgICAgIH0KLSNpZiBFTkFCTEUoQ1NTX1JFR0lPTlMpCi0gICAgICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRGbG93SW50bzoKLSAgICAgICAgICAgIGlmICghc3R5bGUtPmhhc0Zsb3dJbnRv
KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlmaWVy
VmFsdWUoQ1NTVmFsdWVOb25lKTsKLSAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3Jl
YXRlVmFsdWUoc3R5bGUtPmZsb3dUaHJlYWQoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19TVFJJ
TkcpOwotICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Rmxvd0Zyb206Ci0gICAgICAgICAg
ICBpZiAoIXN0eWxlLT5oYXNGbG93RnJvbSgpKQotICAgICAgICAgICAgICAgIHJldHVybiBjc3NW
YWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlTm9uZSk7Ci0gICAgICAgICAg
ICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHN0eWxlLT5yZWdpb25UaHJlYWQoKSwg
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU19TVFJJTkcpOwotICAgICAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0UmVnaW9uRnJhZ21lbnQ6Ci0gICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNy
ZWF0ZVZhbHVlKHN0eWxlLT5yZWdpb25GcmFnbWVudCgpKTsKLSNlbmRpZgogICAgICAgICBjYXNl
IENTU1Byb3BlcnR5U2hhcGVNYXJnaW46CiAgICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29s
LmNyZWF0ZVZhbHVlKHN0eWxlLT5zaGFwZU1hcmdpbigpLCAqc3R5bGUpOwogICAgICAgICBjYXNl
IENTU1Byb3BlcnR5U2hhcGVJbWFnZVRocmVzaG9sZDoKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaAkocmV2aXNpb24gMjIyMjU3KQorKysg
U291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaAkod29ya2luZyBj
b3B5KQpAQCAtMjI0NSwxOCArMjI0NSwxMiBAQCB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRp
dmVWYWx1ZTo6Q1NTCiAgICAgY2FzZSBBdm9pZFBhZ2VCcmVha0JldHdlZW46CiAgICAgICAgIG1f
dmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlQXZvaWRQYWdlOwogICAgICAgICBicmVhazsKLSAgICBj
YXNlIEF2b2lkUmVnaW9uQnJlYWtCZXR3ZWVuOgotICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBD
U1NWYWx1ZUF2b2lkUmVnaW9uOwotICAgICAgICBicmVhazsKICAgICBjYXNlIENvbHVtbkJyZWFr
QmV0d2VlbjoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVDb2x1bW47CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgUGFnZUJyZWFrQmV0d2VlbjoKICAgICAgICAgbV92YWx1ZS52
YWx1ZUlEID0gQ1NTVmFsdWVQYWdlOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFJlZ2lvbkJy
ZWFrQmV0d2VlbjoKLSAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVSZWdpb247Ci0g
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgTGVmdFBhZ2VCcmVha0JldHdlZW46CiAgICAgICAgIG1f
dmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlTGVmdDsKICAgICAgICAgYnJlYWs7CkBAIC0yMjg1LDE0
ICsyMjc5LDEwIEBAIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGUKICAg
ICAgICAgcmV0dXJuIEF2b2lkQ29sdW1uQnJlYWtCZXR3ZWVuOwogICAgIGNhc2UgQ1NTVmFsdWVB
dm9pZFBhZ2U6CiAgICAgICAgIHJldHVybiBBdm9pZFBhZ2VCcmVha0JldHdlZW47Ci0gICAgY2Fz
ZSBDU1NWYWx1ZUF2b2lkUmVnaW9uOgotICAgICAgICByZXR1cm4gQXZvaWRSZWdpb25CcmVha0Jl
dHdlZW47CiAgICAgY2FzZSBDU1NWYWx1ZUNvbHVtbjoKICAgICAgICAgcmV0dXJuIENvbHVtbkJy
ZWFrQmV0d2VlbjsKICAgICBjYXNlIENTU1ZhbHVlUGFnZToKICAgICAgICAgcmV0dXJuIFBhZ2VC
cmVha0JldHdlZW47Ci0gICAgY2FzZSBDU1NWYWx1ZVJlZ2lvbjoKLSAgICAgICAgcmV0dXJuIFJl
Z2lvbkJyZWFrQmV0d2VlbjsKICAgICBjYXNlIENTU1ZhbHVlTGVmdDoKICAgICAgICAgcmV0dXJu
IExlZnRQYWdlQnJlYWtCZXR3ZWVuOwogICAgIGNhc2UgQ1NTVmFsdWVSaWdodDoKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0aWVzLmpzb24KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvY3NzL0NTU1Byb3BlcnRpZXMuanNvbgkocmV2aXNpb24gMjIyMjU3KQorKysgU291
cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnRpZXMuanNvbgkod29ya2luZyBjb3B5KQpAQCAtMTYz
OSwxMCArMTYzOSw4IEBACiAgICAgICAgICAgICAgICAgInZlcnNvIiwKICAgICAgICAgICAgICAg
ICAiY29sdW1uIiwKICAgICAgICAgICAgICAgICAicGFnZSIsCi0gICAgICAgICAgICAgICAgInJl
Z2lvbiIsCiAgICAgICAgICAgICAgICAgImF2b2lkLWNvbHVtbiIsCi0gICAgICAgICAgICAgICAg
ImF2b2lkLXBhZ2UiLAotICAgICAgICAgICAgICAgICJhdm9pZC1yZWdpb24iCisgICAgICAgICAg
ICAgICAgImF2b2lkLXBhZ2UiCiAgICAgICAgICAgICBdLAogICAgICAgICAgICAgImNvZGVnZW4t
cHJvcGVydGllcyI6IHsKICAgICAgICAgICAgICAgICAiaW5pdGlhbCI6ICJpbml0aWFsQnJlYWtC
ZXR3ZWVuIgpAQCAtMTY2MiwxMCArMTY2MCw4IEBACiAgICAgICAgICAgICAgICAgInZlcnNvIiwK
ICAgICAgICAgICAgICAgICAiY29sdW1uIiwKICAgICAgICAgICAgICAgICAicGFnZSIsCi0gICAg
ICAgICAgICAgICAgInJlZ2lvbiIsCiAgICAgICAgICAgICAgICAgImF2b2lkLWNvbHVtbiIsCi0g
ICAgICAgICAgICAgICAgImF2b2lkLXBhZ2UiLAotICAgICAgICAgICAgICAgICJhdm9pZC1yZWdp
b24iCisgICAgICAgICAgICAgICAgImF2b2lkLXBhZ2UiCiAgICAgICAgICAgICBdLAogICAgICAg
ICAgICAgImNvZGVnZW4tcHJvcGVydGllcyI6IHsKICAgICAgICAgICAgICAgICAiaW5pdGlhbCI6
ICJpbml0aWFsQnJlYWtCZXR3ZWVuIgpAQCAtMTY4MCw4ICsxNjc2LDcgQEAKICAgICAgICAgICAg
ICAgICAiYXV0byIsCiAgICAgICAgICAgICAgICAgImF2b2lkIiwKICAgICAgICAgICAgICAgICAi
YXZvaWQtY29sdW1uIiwKLSAgICAgICAgICAgICAgICAiYXZvaWQtcGFnZSIsCi0gICAgICAgICAg
ICAgICAgImF2b2lkLXJlZ2lvbiIKKyAgICAgICAgICAgICAgICAiYXZvaWQtcGFnZSIKICAgICAg
ICAgICAgIF0sCiAgICAgICAgICAgICAiY29kZWdlbi1wcm9wZXJ0aWVzIjogewogICAgICAgICAg
ICAgICAgICJpbml0aWFsIjogImluaXRpYWxCcmVha0luc2lkZSIKQEAgLTYwOTUsOTUgKzYwOTAs
NiBAQAogICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly93d3cudzMub3JnL1RSL2Nzcy11
aS00LyNwcm9wZGVmLXVzZXItc2VsZWN0IgogICAgICAgICAgICAgfQogICAgICAgICB9LAotICAg
ICAgICAiLXdlYmtpdC1mbG93LWludG8iOiB7Ci0gICAgICAgICAgICAiY29kZWdlbi1wcm9wZXJ0
aWVzIjogewotICAgICAgICAgICAgICAgICJuYW1lLWZvci1tZXRob2RzIjogIkZsb3dUaHJlYWQi
LAotICAgICAgICAgICAgICAgICJjb252ZXJ0ZXIiOiAiU3RyaW5nT3JOb25lIiwKLSAgICAgICAg
ICAgICAgICAiZW5hYmxlLWlmIjogIkVOQUJMRV9DU1NfUkVHSU9OUyIKLSAgICAgICAgICAgIH0s
Ci0gICAgICAgICAgICAic3BlY2lmaWNhdGlvbiI6IHsKLSAgICAgICAgICAgICAgICAiY2F0ZWdv
cnkiOiAiY3NzLXJlZ2lvbnMiLAotICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly93d3cu
dzMub3JnL1RSL2Nzcy1yZWdpb25zLTEvI3Byb3BkZWYtZmxvdy1pbnRvIgotICAgICAgICAgICAg
fQotICAgICAgICB9LAotICAgICAgICAiLXdlYmtpdC1mbG93LWZyb20iOiB7Ci0gICAgICAgICAg
ICAiY29kZWdlbi1wcm9wZXJ0aWVzIjogewotICAgICAgICAgICAgICAgICJuYW1lLWZvci1tZXRo
b2RzIjogIlJlZ2lvblRocmVhZCIsCi0gICAgICAgICAgICAgICAgImNvbnZlcnRlciI6ICJTdHJp
bmdPck5vbmUiLAotICAgICAgICAgICAgICAgICJlbmFibGUtaWYiOiAiRU5BQkxFX0NTU19SRUdJ
T05TIgotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICJzcGVjaWZpY2F0aW9uIjogewotICAg
ICAgICAgICAgICAgICJjYXRlZ29yeSI6ICJjc3MtcmVnaW9ucyIsCi0gICAgICAgICAgICAgICAg
InVybCI6ICJodHRwczovL3d3dy53My5vcmcvVFIvY3NzLXJlZ2lvbnMtMS8jcHJvcGRlZi1mbG93
LWZyb20iCi0gICAgICAgICAgICB9Ci0gICAgICAgIH0sCi0gICAgICAgICItd2Via2l0LXJlZ2lv
bi1mcmFnbWVudCI6IHsKLSAgICAgICAgICAgICJ2YWx1ZXMiOiBbCi0gICAgICAgICAgICAgICAg
ImF1dG8iLAotICAgICAgICAgICAgICAgICJicmVhayIKLSAgICAgICAgICAgIF0sCi0gICAgICAg
ICAgICAiY29kZWdlbi1wcm9wZXJ0aWVzIjogewotICAgICAgICAgICAgICAgICJlbmFibGUtaWYi
OiAiRU5BQkxFX0NTU19SRUdJT05TIgotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICJzcGVj
aWZpY2F0aW9uIjogewotICAgICAgICAgICAgICAgICJjYXRlZ29yeSI6ICJjc3MtcmVnaW9ucyIs
Ci0gICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL3d3dy53My5vcmcvVFIvY3NzLXJlZ2lv
bnMtMS8jcHJvcGRlZi1yZWdpb24tZnJhZ21lbnQiCi0gICAgICAgICAgICB9Ci0gICAgICAgIH0s
Ci0gICAgICAgICItd2Via2l0LXJlZ2lvbi1icmVhay1hZnRlciI6IHsKLSAgICAgICAgICAgICJ2
YWx1ZXMiOiBbCi0gICAgICAgICAgICAgICAgImF1dG8iLAotICAgICAgICAgICAgICAgICJhbHdh
eXMiLAotICAgICAgICAgICAgICAgICJhdm9pZCIsCi0gICAgICAgICAgICAgICAgImxlZnQiLAot
ICAgICAgICAgICAgICAgICJyaWdodCIKLSAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAiY29k
ZWdlbi1wcm9wZXJ0aWVzIjogewotICAgICAgICAgICAgICAgICJpbml0aWFsIjogImluaXRpYWxC
cmVha0JldHdlZW4iLAotICAgICAgICAgICAgICAgICJuYW1lLWZvci1tZXRob2RzIjogIkJyZWFr
QWZ0ZXIiLAotICAgICAgICAgICAgICAgICJjb252ZXJ0ZXIiOiAiUmVnaW9uQnJlYWtCZXR3ZWVu
IiwKLSAgICAgICAgICAgICAgICAiZW5hYmxlLWlmIjogIkVOQUJMRV9DU1NfUkVHSU9OUyIKLSAg
ICAgICAgICAgIH0sCi0gICAgICAgICAgICAic3BlY2lmaWNhdGlvbiI6IHsKLSAgICAgICAgICAg
ICAgICAiY2F0ZWdvcnkiOiAiY3NzLXJlZ2lvbnMiLAotICAgICAgICAgICAgICAgICJ1cmwiOiAi
aHR0cHM6Ly93d3cudzMub3JnL1RSL2Nzcy1yZWdpb25zLTEvI3Byb3BkZWYtYnJlYWstYWZ0ZXIi
Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0sCi0gICAgICAgICItd2Via2l0LXJlZ2lvbi1icmVh
ay1iZWZvcmUiOiB7Ci0gICAgICAgICAgICAidmFsdWVzIjogWwotICAgICAgICAgICAgICAgICJh
dXRvIiwKLSAgICAgICAgICAgICAgICAiYWx3YXlzIiwKLSAgICAgICAgICAgICAgICAiYXZvaWQi
LAotICAgICAgICAgICAgICAgICJsZWZ0IiwKLSAgICAgICAgICAgICAgICAicmlnaHQiCi0gICAg
ICAgICAgICBdLAotICAgICAgICAgICAgImNvZGVnZW4tcHJvcGVydGllcyI6IHsKLSAgICAgICAg
ICAgICAgICAiaW5pdGlhbCI6ICJpbml0aWFsQnJlYWtCZXR3ZWVuIiwKLSAgICAgICAgICAgICAg
ICAibmFtZS1mb3ItbWV0aG9kcyI6ICJCcmVha0JlZm9yZSIsCi0gICAgICAgICAgICAgICAgImNv
bnZlcnRlciI6ICJSZWdpb25CcmVha0JldHdlZW4iLAotICAgICAgICAgICAgICAgICJlbmFibGUt
aWYiOiAiRU5BQkxFX0NTU19SRUdJT05TIgotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICJz
cGVjaWZpY2F0aW9uIjogewotICAgICAgICAgICAgICAgICJjYXRlZ29yeSI6ICJjc3MtcmVnaW9u
cyIsCi0gICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL3d3dy53My5vcmcvVFIvY3NzLXJl
Z2lvbnMtMS8jcHJvcGRlZi1icmVhay1iZWZvcmUiCi0gICAgICAgICAgICB9Ci0gICAgICAgIH0s
Ci0gICAgICAgICItd2Via2l0LXJlZ2lvbi1icmVhay1pbnNpZGUiOiB7Ci0gICAgICAgICAgICAi
dmFsdWVzIjogWwotICAgICAgICAgICAgICAgICJhdXRvIiwKLSAgICAgICAgICAgICAgICAiYXZv
aWQiCi0gICAgICAgICAgICBdLAotICAgICAgICAgICAgImNvZGVnZW4tcHJvcGVydGllcyI6IHsK
LSAgICAgICAgICAgICAgICAiaW5pdGlhbCI6ICJpbml0aWFsQnJlYWtJbnNpZGUiLAotICAgICAg
ICAgICAgICAgICJuYW1lLWZvci1tZXRob2RzIjogIkJyZWFrSW5zaWRlIiwKLSAgICAgICAgICAg
ICAgICAiY29udmVydGVyIjogIlJlZ2lvbkJyZWFrSW5zaWRlIiwKLSAgICAgICAgICAgICAgICAi
ZW5hYmxlLWlmIjogIkVOQUJMRV9DU1NfUkVHSU9OUyIKLSAgICAgICAgICAgIH0sCi0gICAgICAg
ICAgICAic3BlY2lmaWNhdGlvbiI6IHsKLSAgICAgICAgICAgICAgICAiY2F0ZWdvcnkiOiAiY3Nz
LXJlZ2lvbnMiLAotICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly93d3cudzMub3JnL1RS
L2Nzcy1yZWdpb25zLTEvI3Byb3BkZWYtYnJlYWstaW5zaWRlIgotICAgICAgICAgICAgfQotICAg
ICAgICB9LAogICAgICAgICAic2Nyb2xsLXBhZGRpbmciOiB7CiAgICAgICAgICAgICAiY29kZWdl
bi1wcm9wZXJ0aWVzIjogewogICAgICAgICAgICAgICAgICJlbmFibGUtaWYiOiAiRU5BQkxFX0NT
U19TQ1JPTExfU05BUCIsCkBAIC02ODIyLDEyICs2NzI4LDYgQEAKICAgICAgICAgICAgICJsb25n
bmFtZSI6ICJDU1MgUGFnZWQgTWVkaWEgTW9kdWxlIiwKICAgICAgICAgICAgICJ1cmwiOiAiaHR0
cHM6Ly93d3cudzMub3JnL1RSL2NzczMtcGFnZS8iCiAgICAgICAgIH0sCi0gICAgICAgICJjc3Mt
cmVnaW9ucyI6IHsKLSAgICAgICAgICAgICJzaG9ydG5hbWUiOiAiQ1NTIFJlZ2lvbnMiLAotICAg
ICAgICAgICAgImxvbmduYW1lIjogIkNTUyBSZWdpb25zIE1vZHVsZSIsCi0gICAgICAgICAgICAi
dXJsIjogImh0dHBzOi8vd3d3LnczLm9yZy9UUi9jc3MtcmVnaW9ucy0xLyIsCi0gICAgICAgICAg
ICAic3RhdHVzIjogImV4cGVyaW1lbnRhbCIKLSAgICAgICAgfSwKICAgICAgICAgImNzcy1yb3Vu
ZC1kaXNwbGF5IjogewogICAgICAgICAgICAgInNob3J0bmFtZSI6ICJDU1MgUm91bmQgRGlzcGxh
eSIsCiAgICAgICAgICAgICAibG9uZ25hbWUiOiAiQ1NTIFJvdW5kIERpc3BsYXkgTW9kdWxlIiwK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NSdWxlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTUnVsZS5jcHAJKHJldmlzaW9uIDIyMjI1NykKKysrIFNvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NSdWxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsMTAgKzM2LDYgQEAg
c3RydWN0IFNhbWVTaXplQXNDU1NSdWxlIDogcHVibGljIFJlZkNvdQogCiBDT01QSUxFX0FTU0VS
VChzaXplb2YoQ1NTUnVsZSkgPT0gc2l6ZW9mKFNhbWVTaXplQXNDU1NSdWxlKSwgQ1NTUnVsZV9z
aG91bGRfc3RheV9zbWFsbCk7CiAKLSNpZiBFTkFCTEUoQ1NTX1JFR0lPTlMpCi1DT01QSUxFX0FT
U0VSVChTdHlsZVJ1bGVCYXNlOjpSZWdpb24gPT0gc3RhdGljX2Nhc3Q8U3R5bGVSdWxlQmFzZTo6
VHlwZT4oQ1NTUnVsZTo6V0VCS0lUX1JFR0lPTl9SVUxFKSwgZW51bXNfc2hvdWxkX21hdGNoKTsK
LSNlbmRpZgotCiAjaWYgRU5BQkxFKENTU19ERVZJQ0VfQURBUFRBVElPTikKIENPTVBJTEVfQVNT
RVJUKFN0eWxlUnVsZUJhc2U6OlZpZXdwb3J0ID09IHN0YXRpY19jYXN0PFN0eWxlUnVsZUJhc2U6
OlR5cGU+KENTU1J1bGU6OldFQktJVF9WSUVXUE9SVF9SVUxFKSwgZW51bXNfc2hvdWxkX21hdGNo
KTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1J1bGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUnVsZS5oCShyZXZpc2lvbiAyMjIyNTcpCisrKyBT
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTUnVsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01NCw5ICs1NCw2
IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoQ1NTX0RFVklDRV9BREFQVEFUSU9OKQogICAgICAgICBX
RUJLSVRfVklFV1BPUlRfUlVMRSA9IDE1LAogI2VuZGlmCi0jaWYgRU5BQkxFKENTU19SRUdJT05T
KQotICAgICAgICBXRUJLSVRfUkVHSU9OX1JVTEUgPSAxNiwKLSNlbmRpZgogICAgIH07CiAKICAg
ICBlbnVtIERlcHJlY2F0ZWRUeXBlIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NSdWxl
LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUnVsZS5pZGwJKHJldmlz
aW9uIDIyMjI1NykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NSdWxlLmlkbAkod29ya2luZyBj
b3B5KQpAQCAtMzgsNyArMzgsNiBAQAogICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IE5BTUVTUEFD
RV9SVUxFID0gMTA7CiAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1VQUE9SVFNfUlVMRSA9IDEy
OwogICAgIFtDb25kaXRpb25hbD1DU1NfREVWSUNFX0FEQVBUQVRJT05dIGNvbnN0IHVuc2lnbmVk
IHNob3J0IFdFQktJVF9WSUVXUE9SVF9SVUxFID0gMTU7Ci0gICAgW0NvbmRpdGlvbmFsPUNTU19S
RUdJT05TXSBjb25zdCB1bnNpZ25lZCBzaG9ydCBXRUJLSVRfUkVHSU9OX1JVTEUgPSAxNjsKIAog
ICAgIC8vIExlZ2FjeSBzeW5vbnltcyBmb3IgdGhlIGFib3ZlLCBrZXB0IHRvIGF2b2lkIGJyZWFr
aW5nIGV4aXN0aW5nIGNvbnRlbnQuCiAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgV0VCS0lUX0tF
WUZSQU1FU19SVUxFID0gNzsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9FbGVtZW50UnVsZUNv
bGxlY3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0VsZW1lbnRSdWxl
Q29sbGVjdG9yLmNwcAkocmV2aXNpb24gMjIyMjU3KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0Vs
ZW1lbnRSdWxlQ29sbGVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNiBAQAog
I2luY2x1ZGUgIkNTU1ZhbHVlS2V5d29yZHMuaCIKICNpbmNsdWRlICJIVE1MRWxlbWVudC5oIgog
I2luY2x1ZGUgIkhUTUxTbG90RWxlbWVudC5oIgotI2luY2x1ZGUgIlJlbmRlclJlZ2lvbi5oIgog
I2luY2x1ZGUgIlNWR0VsZW1lbnQuaCIKICNpbmNsdWRlICJTZWxlY3RvckNvbXBpbGVyLmgiCiAj
aW5jbHVkZSAiU2VsZWN0b3JGaWx0ZXIuaCIKQEAgLTE2NCwyMiArMTYzLDYgQEAgdm9pZCBFbGVt
ZW50UnVsZUNvbGxlY3Rvcjo6Y29sbGVjdE1hdGNoaQogICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVz
Rm9yTGlzdChtYXRjaFJlcXVlc3QucnVsZVNldC0+dW5pdmVyc2FsUnVsZXMoKSwgbWF0Y2hSZXF1
ZXN0LCBydWxlUmFuZ2UpOwogfQogCi12b2lkIEVsZW1lbnRSdWxlQ29sbGVjdG9yOjpjb2xsZWN0
TWF0Y2hpbmdSdWxlc0ZvclJlZ2lvbihjb25zdCBNYXRjaFJlcXVlc3QmIG1hdGNoUmVxdWVzdCwg
U3R5bGVSZXNvbHZlcjo6UnVsZVJhbmdlJiBydWxlUmFuZ2UpCi17Ci0gICAgaWYgKCFtX3JlZ2lv
bkZvclN0eWxpbmcpCi0gICAgICAgIHJldHVybjsKLQotICAgIHVuc2lnbmVkIHNpemUgPSBtYXRj
aFJlcXVlc3QucnVsZVNldC0+cmVnaW9uU2VsZWN0b3JzQW5kUnVsZVNldHMoKS5zaXplKCk7Ci0g
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7ICsraSkgewotICAgICAgICBjb25zdCBD
U1NTZWxlY3RvciogcmVnaW9uU2VsZWN0b3IgPSBtYXRjaFJlcXVlc3QucnVsZVNldC0+cmVnaW9u
U2VsZWN0b3JzQW5kUnVsZVNldHMoKS5hdChpKS5zZWxlY3RvcjsKLSAgICAgICAgaWYgKGNoZWNr
UmVnaW9uU2VsZWN0b3IocmVnaW9uU2VsZWN0b3IsIG1fcmVnaW9uRm9yU3R5bGluZy0+Z2VuZXJh
dGluZ0VsZW1lbnQoKSkpIHsKLSAgICAgICAgICAgIFJ1bGVTZXQqIHJlZ2lvblJ1bGVzID0gbWF0
Y2hSZXF1ZXN0LnJ1bGVTZXQtPnJlZ2lvblNlbGVjdG9yc0FuZFJ1bGVTZXRzKCkuYXQoaSkucnVs
ZVNldC5nZXQoKTsKLSAgICAgICAgICAgIEFTU0VSVChyZWdpb25SdWxlcyk7Ci0gICAgICAgICAg
ICBjb2xsZWN0TWF0Y2hpbmdSdWxlcyhNYXRjaFJlcXVlc3QocmVnaW9uUnVsZXMsIG1hdGNoUmVx
dWVzdC5pbmNsdWRlRW1wdHlSdWxlcyksIHJ1bGVSYW5nZSk7Ci0gICAgICAgIH0KLSAgICB9Ci19
Ci0KIHZvaWQgRWxlbWVudFJ1bGVDb2xsZWN0b3I6OnNvcnRBbmRUcmFuc2Zlck1hdGNoZWRSdWxl
cygpCiB7CiAgICAgaWYgKG1fbWF0Y2hlZFJ1bGVzLmlzRW1wdHkoKSkKQEAgLTIwOCw3ICsxOTEs
NiBAQCB2b2lkIEVsZW1lbnRSdWxlQ29sbGVjdG9yOjptYXRjaEF1dGhvclJ1CiAgICAgewogICAg
ICAgICBNYXRjaFJlcXVlc3QgbWF0Y2hSZXF1ZXN0KCZtX2F1dGhvclN0eWxlLCBpbmNsdWRlRW1w
dHlSdWxlcyk7CiAgICAgICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzKG1hdGNoUmVxdWVzdCwgcnVs
ZVJhbmdlKTsKLSAgICAgICAgY29sbGVjdE1hdGNoaW5nUnVsZXNGb3JSZWdpb24obWF0Y2hSZXF1
ZXN0LCBydWxlUmFuZ2UpOwogICAgIH0KIAogICAgIGF1dG8qIHBhcmVudCA9IG1fZWxlbWVudC5w
YXJlbnRFbGVtZW50KCk7CkBAIC0zMjcsNyArMzA5LDYgQEAgdm9pZCBFbGVtZW50UnVsZUNvbGxl
Y3Rvcjo6bWF0Y2hVc2VyUnVsZQogICAgIE1hdGNoUmVxdWVzdCBtYXRjaFJlcXVlc3QobV91c2Vy
U3R5bGUsIGluY2x1ZGVFbXB0eVJ1bGVzKTsKICAgICBTdHlsZVJlc29sdmVyOjpSdWxlUmFuZ2Ug
cnVsZVJhbmdlID0gbV9yZXN1bHQucmFuZ2VzLnVzZXJSdWxlUmFuZ2UoKTsKICAgICBjb2xsZWN0
TWF0Y2hpbmdSdWxlcyhtYXRjaFJlcXVlc3QsIHJ1bGVSYW5nZSk7Ci0gICAgY29sbGVjdE1hdGNo
aW5nUnVsZXNGb3JSZWdpb24obWF0Y2hSZXF1ZXN0LCBydWxlUmFuZ2UpOwogCiAgICAgc29ydEFu
ZFRyYW5zZmVyTWF0Y2hlZFJ1bGVzKCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvRWxl
bWVudFJ1bGVDb2xsZWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvRWxl
bWVudFJ1bGVDb2xsZWN0b3IuaAkocmV2aXNpb24gMjIyMjU3KQorKysgU291cmNlL1dlYkNvcmUv
Y3NzL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDYg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBEb2N1bWVudFJ1bGVTZXRzOwogY2xhc3Mg
TWF0Y2hSZXF1ZXN0OwotY2xhc3MgUmVuZGVyUmVnaW9uOwogY2xhc3MgUnVsZURhdGE7CiBjbGFz
cyBSdWxlU2V0OwogY2xhc3MgU2VsZWN0b3JGaWx0ZXI7CkBAIC01Niw3ICs1NSw2IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNldE1vZGUoU2VsZWN0b3JDaGVja2VyOjpNb2RlIG1vZGUpIHsgbV9tb2Rl
ID0gbW9kZTsgfQogICAgIHZvaWQgc2V0UHNldWRvU3R5bGVSZXF1ZXN0KGNvbnN0IFBzZXVkb1N0
eWxlUmVxdWVzdCYgcmVxdWVzdCkgeyBtX3BzZXVkb1N0eWxlUmVxdWVzdCA9IHJlcXVlc3Q7IH0K
ICAgICB2b2lkIHNldFNhbWVPcmlnaW5Pbmx5KGJvb2wgZikgeyBtX3NhbWVPcmlnaW5Pbmx5ID0g
ZjsgfSAKLSAgICB2b2lkIHNldFJlZ2lvbkZvclN0eWxpbmcoY29uc3QgUmVuZGVyUmVnaW9uKiBy
ZWdpb25Gb3JTdHlsaW5nKSB7IG1fcmVnaW9uRm9yU3R5bGluZyA9IHJlZ2lvbkZvclN0eWxpbmc7
IH0KICAgICB2b2lkIHNldE1lZGl1bShjb25zdCBNZWRpYVF1ZXJ5RXZhbHVhdG9yKiBtZWRpdW0p
IHsgbV9pc1ByaW50U3R5bGUgPSBtZWRpdW0tPm1lZGlhVHlwZU1hdGNoU3BlY2lmaWMoInByaW50
Iik7IH0KIAogICAgIGJvb2wgaGFzQW55TWF0Y2hpbmdSdWxlcyhjb25zdCBSdWxlU2V0Kik7CkBA
IC04Myw3ICs4MSw2IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPFJ1bGVTZXQ6OlJ1
bGVEYXRhVmVjdG9yPiBjb2xsZWN0U2xvdHRlZFBzZXVkb0VsZW1lbnRSdWxlc0ZvclNsb3QoYm9v
bCBpbmNsdWRlRW1wdHlSdWxlcyk7CiAKICAgICB2b2lkIGNvbGxlY3RNYXRjaGluZ1J1bGVzKGNv
bnN0IE1hdGNoUmVxdWVzdCYsIFN0eWxlUmVzb2x2ZXI6OlJ1bGVSYW5nZSYpOwotICAgIHZvaWQg
Y29sbGVjdE1hdGNoaW5nUnVsZXNGb3JSZWdpb24oY29uc3QgTWF0Y2hSZXF1ZXN0JiwgU3R5bGVS
ZXNvbHZlcjo6UnVsZVJhbmdlJik7CiAgICAgdm9pZCBjb2xsZWN0TWF0Y2hpbmdSdWxlc0Zvckxp
c3QoY29uc3QgUnVsZVNldDo6UnVsZURhdGFWZWN0b3IqLCBjb25zdCBNYXRjaFJlcXVlc3QmLCBT
dHlsZVJlc29sdmVyOjpSdWxlUmFuZ2UmKTsKICAgICBib29sIHJ1bGVNYXRjaGVzKGNvbnN0IFJ1
bGVEYXRhJiwgdW5zaWduZWQgJnNwZWNpZmljaXR5KTsKIApAQCAtOTgsNyArOTUsNiBAQCBwcml2
YXRlOgogICAgIGNvbnN0IFNlbGVjdG9yRmlsdGVyKiBtX3NlbGVjdG9yRmlsdGVyIHsgbnVsbHB0
ciB9OwogCiAgICAgYm9vbCBtX2lzUHJpbnRTdHlsZSB7IGZhbHNlIH07Ci0gICAgY29uc3QgUmVu
ZGVyUmVnaW9uKiBtX3JlZ2lvbkZvclN0eWxpbmcgeyBudWxscHRyIH07CiAgICAgUHNldWRvU3R5
bGVSZXF1ZXN0IG1fcHNldWRvU3R5bGVSZXF1ZXN0IHsgTk9QU0VVRE8gfTsKICAgICBib29sIG1f
c2FtZU9yaWdpbk9ubHkgeyBmYWxzZSB9OwogICAgIFNlbGVjdG9yQ2hlY2tlcjo6TW9kZSBtX21v
ZGUgeyBTZWxlY3RvckNoZWNrZXI6Ok1vZGU6OlJlc29sdmluZ1N0eWxlIH07CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9jc3MvSW5zcGVjdG9yQ1NTT01XcmFwcGVycy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvY3NzL0luc3BlY3RvckNTU09NV3JhcHBlcnMuY3BwCShyZXZpc2lvbiAy
MjIyNTcpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvSW5zcGVjdG9yQ1NTT01XcmFwcGVycy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDYgQEAKICNpbmNsdWRlICJFeHRlbnNpb25TdHls
ZVNoZWV0cy5oIgogI2luY2x1ZGUgIlN0eWxlU2NvcGUuaCIKICNpbmNsdWRlICJTdHlsZVNoZWV0
Q29udGVudHMuaCIKLSNpbmNsdWRlICJXZWJLaXRDU1NSZWdpb25SdWxlLmgiCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIApAQCAtNjcsMTEgKzY2LDYgQEAgdm9pZCBJbnNwZWN0b3JDU1NPTVdyYXBw
ZXJzOjpjb2xsZWN0KExpcwogICAgICAgICBjYXNlIENTU1J1bGU6OlNVUFBPUlRTX1JVTEU6CiAg
ICAgICAgICAgICBjb2xsZWN0KGRvd25jYXN0PENTU1N1cHBvcnRzUnVsZT4oY3NzUnVsZSkpOwog
ICAgICAgICAgICAgYnJlYWs7Ci0jaWYgRU5BQkxFKENTU19SRUdJT05TKQotICAgICAgICBjYXNl
IENTU1J1bGU6OldFQktJVF9SRUdJT05fUlVMRToKLSAgICAgICAgICAgIGNvbGxlY3QoZG93bmNh
c3Q8V2ViS2l0Q1NTUmVnaW9uUnVsZT4oY3NzUnVsZSkpOwotICAgICAgICAgICAgYnJlYWs7Ci0j
ZW5kaWYKICAgICAgICAgY2FzZSBDU1NSdWxlOjpTVFlMRV9SVUxFOgogICAgICAgICAgICAgbV9z
dHlsZVJ1bGVUb0NTU09NV3JhcHBlck1hcC5hZGQoJmRvd25jYXN0PENTU1N0eWxlUnVsZT4oKmNz
c1J1bGUpLnN0eWxlUnVsZSgpLCBkb3duY2FzdDxDU1NTdHlsZVJ1bGU+KGNzc1J1bGUpKTsKICAg
ICAgICAgICAgIGJyZWFrOwpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL1J1bGVTZXQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlU2V0LmNwcAkocmV2aXNpb24gMjIy
MjU3KQorKysgU291cmNlL1dlYkNvcmUvY3NzL1J1bGVTZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMzUsMTAgKzEzNSw4IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBjb250YWluc1VuY29tbW9uQXR0
cmkKICAgICByZXR1cm4gY29udGFpbnNVbmNvbW1vbkF0dHJpYnV0ZVNlbGVjdG9yKHJvb3RTZWxl
Y3RvciwgdHJ1ZSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgUHJvcGVydHlXaGl0ZWxpc3RUeXBlIGRl
dGVybWluZVByb3BlcnR5V2hpdGVsaXN0VHlwZShjb25zdCBBZGRSdWxlRmxhZ3MgYWRkUnVsZUZs
YWdzLCBjb25zdCBDU1NTZWxlY3Rvciogc2VsZWN0b3IpCitzdGF0aWMgaW5saW5lIFByb3BlcnR5
V2hpdGVsaXN0VHlwZSBkZXRlcm1pbmVQcm9wZXJ0eVdoaXRlbGlzdFR5cGUoY29uc3QgQ1NTU2Vs
ZWN0b3IqIHNlbGVjdG9yKQogewotICAgIGlmIChhZGRSdWxlRmxhZ3MgJiBSdWxlSXNJblJlZ2lv
blJ1bGUpCi0gICAgICAgIHJldHVybiBQcm9wZXJ0eVdoaXRlbGlzdFJlZ2lvbjsKICAgICBmb3Ig
KGNvbnN0IENTU1NlbGVjdG9yKiBjb21wb25lbnQgPSBzZWxlY3RvcjsgY29tcG9uZW50OyBjb21w
b25lbnQgPSBjb21wb25lbnQtPnRhZ0hpc3RvcnkoKSkgewogI2lmIEVOQUJMRShWSURFT19UUkFD
SykKICAgICAgICAgaWYgKGNvbXBvbmVudC0+bWF0Y2goKSA9PSBDU1NTZWxlY3Rvcjo6UHNldWRv
RWxlbWVudCAmJiAoY29tcG9uZW50LT5wc2V1ZG9FbGVtZW50VHlwZSgpID09IENTU1NlbGVjdG9y
OjpQc2V1ZG9FbGVtZW50Q3VlIHx8IGNvbXBvbmVudC0+dmFsdWUoKSA9PSBUZXh0VHJhY2tDdWU6
OmN1ZVNoYWRvd1BzZXVkb0lkKCkpKQpAQCAtMTU5LDcgKzE1Nyw3IEBAIFJ1bGVEYXRhOjpSdWxl
RGF0YShTdHlsZVJ1bGUqIHJ1bGUsIHVuc2kKICAgICAsIG1fY2FuTWF0Y2hQc2V1ZG9FbGVtZW50
KHNlbGVjdG9yQ2FuTWF0Y2hQc2V1ZG9FbGVtZW50KCpzZWxlY3RvcigpKSkKICAgICAsIG1fY29u
dGFpbnNVbmNvbW1vbkF0dHJpYnV0ZVNlbGVjdG9yKFdlYkNvcmU6OmNvbnRhaW5zVW5jb21tb25B
dHRyaWJ1dGVTZWxlY3Rvcigqc2VsZWN0b3IoKSkpCiAgICAgLCBtX2xpbmtNYXRjaFR5cGUoU2Vs
ZWN0b3JDaGVja2VyOjpkZXRlcm1pbmVMaW5rTWF0Y2hUeXBlKHNlbGVjdG9yKCkpKQotICAgICwg
bV9wcm9wZXJ0eVdoaXRlbGlzdFR5cGUoZGV0ZXJtaW5lUHJvcGVydHlXaGl0ZWxpc3RUeXBlKGFk
ZFJ1bGVGbGFncywgc2VsZWN0b3IoKSkpCisgICAgLCBtX3Byb3BlcnR5V2hpdGVsaXN0VHlwZShk
ZXRlcm1pbmVQcm9wZXJ0eVdoaXRlbGlzdFR5cGUoc2VsZWN0b3IoKSkpCiAjaWYgRU5BQkxFKENT
U19TRUxFQ1RPUl9KSVQpICYmIENTU19TRUxFQ1RPUl9KSVRfUFJPRklMSU5HCiAgICAgLCBtX2Nv
bXBpbGVkU2VsZWN0b3JVc2VDb3VudCgwKQogI2VuZGlmCkBAIC0zNjYsMjkgKzM2NCw2IEBAIHZv
aWQgUnVsZVNldDo6YWRkUGFnZVJ1bGUoU3R5bGVSdWxlUGFnZSoKICAgICBtX3BhZ2VSdWxlcy5h
cHBlbmQocnVsZSk7CiB9CiAKLXZvaWQgUnVsZVNldDo6YWRkUmVnaW9uUnVsZShTdHlsZVJ1bGVS
ZWdpb24qIHJlZ2lvblJ1bGUsIGJvb2wgaGFzRG9jdW1lbnRTZWN1cml0eU9yaWdpbikKLXsKLSAg
ICBhdXRvIHJlZ2lvblJ1bGVTZXQgPSBzdGQ6Om1ha2VfdW5pcXVlPFJ1bGVTZXQ+KCk7Ci0gICAg
Ly8gVGhlIHJlZ2lvbiBydWxlIHNldCBzaG91bGQgdGFrZSBpbnRvIGFjY291bnQgdGhlIHBvc2l0
aW9uIGluc2lkZSB0aGUgcGFyZW50IHJ1bGUgc2V0LgotICAgIC8vIE90aGVyd2lzZSwgdGhlIHJ1
bGVzIGluc2lkZSByZWdpb24gYmxvY2sgbWlnaHQgYmUgaW5jb3JyZWN0bHkgcG9zaXRpb25lZCBi
ZWZvcmUgb3RoZXIgc2ltaWxhciBydWxlcyBmcm9tCi0gICAgLy8gdGhlIHN0eWxlc2hlZXQgdGhh
dCBjb250YWlucyB0aGUgcmVnaW9uIGJsb2NrLgotICAgIHJlZ2lvblJ1bGVTZXQtPm1fcnVsZUNv
dW50ID0gbV9ydWxlQ291bnQ7Ci0KLSAgICAvLyBDb2xsZWN0IHRoZSByZWdpb24gcnVsZXMgaW50
byBhIHJ1bGUgc2V0Ci0gICAgLy8gRklYTUU6IFNob3VsZCB0aGlzIGFkZCBvdGhlciB0eXBlcyBv
ZiBydWxlcz8gKGkuZS4gdXNlIGFkZENoaWxkUnVsZXMoKSBkaXJlY3RseT8pCi0gICAgY29uc3Qg
VmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGVCYXNlPj4mIGNoaWxkUnVsZXMgPSByZWdpb25SdWxlLT5j
aGlsZFJ1bGVzKCk7Ci0gICAgQWRkUnVsZUZsYWdzIGFkZFJ1bGVGbGFncyA9IGhhc0RvY3VtZW50
U2VjdXJpdHlPcmlnaW4gPyBSdWxlSGFzRG9jdW1lbnRTZWN1cml0eU9yaWdpbiA6IFJ1bGVIYXNO
b1NwZWNpYWxTdGF0ZTsKLSAgICBhZGRSdWxlRmxhZ3MgPSBzdGF0aWNfY2FzdDxBZGRSdWxlRmxh
Z3M+KGFkZFJ1bGVGbGFncyB8IFJ1bGVJc0luUmVnaW9uUnVsZSk7Ci0gICAgZm9yIChhdXRvJiBj
aGlsZFJ1bGUgOiBjaGlsZFJ1bGVzKSB7Ci0gICAgICAgIGlmIChpczxTdHlsZVJ1bGU+KCpjaGls
ZFJ1bGUpKQotICAgICAgICAgICAgcmVnaW9uUnVsZVNldC0+YWRkU3R5bGVSdWxlKGRvd25jYXN0
PFN0eWxlUnVsZT4oY2hpbGRSdWxlLmdldCgpKSwgYWRkUnVsZUZsYWdzKTsKLSAgICB9Ci0gICAg
Ly8gVXBkYXRlIHRoZSAiZ2xvYmFsIiBydWxlIGNvdW50IHNvIHRoYXQgcHJvcGVyIG9yZGVyIGlz
IG1haW50YWluZWQKLSAgICBtX3J1bGVDb3VudCA9IHJlZ2lvblJ1bGVTZXQtPm1fcnVsZUNvdW50
OwotCi0gICAgbV9yZWdpb25TZWxlY3RvcnNBbmRSdWxlU2V0cy5hcHBlbmQoUnVsZVNldFNlbGVj
dG9yUGFpcihyZWdpb25SdWxlLT5zZWxlY3Rvckxpc3QoKS5maXJzdCgpLCBXVEZNb3ZlKHJlZ2lv
blJ1bGVTZXQpKSk7Ci19Ci0KIHZvaWQgUnVsZVNldDo6YWRkQ2hpbGRSdWxlcyhjb25zdCBWZWN0
b3I8UmVmUHRyPFN0eWxlUnVsZUJhc2U+PiYgcnVsZXMsIGNvbnN0IE1lZGlhUXVlcnlFdmFsdWF0
b3ImIG1lZGl1bSwgU3R5bGVSZXNvbHZlciogcmVzb2x2ZXIsIGJvb2wgaGFzRG9jdW1lbnRTZWN1
cml0eU9yaWdpbiwgYm9vbCBpc0luaXRpYXRpbmdFbGVtZW50SW5Vc2VyQWdlbnRTaGFkb3dUcmVl
LCBBZGRSdWxlRmxhZ3MgYWRkUnVsZUZsYWdzKQogewogICAgIGZvciAoYXV0byYgcnVsZSA6IHJ1
bGVzKSB7CkBAIC00MDgsMTEgKzM4Myw2IEBAIHZvaWQgUnVsZVNldDo6YWRkQ2hpbGRSdWxlcyhj
b25zdCBWZWN0b3IKICAgICAgICAgICAgIHJlc29sdmVyLT5hZGRLZXlmcmFtZVN0eWxlKGRvd25j
YXN0PFN0eWxlUnVsZUtleWZyYW1lcz4oKnJ1bGUpKTsKICAgICAgICAgZWxzZSBpZiAoaXM8U3R5
bGVSdWxlU3VwcG9ydHM+KCpydWxlKSAmJiBkb3duY2FzdDxTdHlsZVJ1bGVTdXBwb3J0cz4oKnJ1
bGUpLmNvbmRpdGlvbklzU3VwcG9ydGVkKCkpCiAgICAgICAgICAgICBhZGRDaGlsZFJ1bGVzKGRv
d25jYXN0PFN0eWxlUnVsZVN1cHBvcnRzPigqcnVsZSkuY2hpbGRSdWxlcygpLCBtZWRpdW0sIHJl
c29sdmVyLCBoYXNEb2N1bWVudFNlY3VyaXR5T3JpZ2luLCBpc0luaXRpYXRpbmdFbGVtZW50SW5V
c2VyQWdlbnRTaGFkb3dUcmVlLCBhZGRSdWxlRmxhZ3MpOwotI2lmIEVOQUJMRShDU1NfUkVHSU9O
UykKLSAgICAgICAgZWxzZSBpZiAoaXM8U3R5bGVSdWxlUmVnaW9uPigqcnVsZSkgJiYgcmVzb2x2
ZXIpIHsKLSAgICAgICAgICAgIGFkZFJlZ2lvblJ1bGUoZG93bmNhc3Q8U3R5bGVSdWxlUmVnaW9u
PihydWxlLmdldCgpKSwgaGFzRG9jdW1lbnRTZWN1cml0eU9yaWdpbik7Ci0gICAgICAgIH0KLSNl
bmRpZgogI2lmIEVOQUJMRShDU1NfREVWSUNFX0FEQVBUQVRJT04pCiAgICAgICAgIGVsc2UgaWYg
KGlzPFN0eWxlUnVsZVZpZXdwb3J0PigqcnVsZSkgJiYgcmVzb2x2ZXIpIHsKICAgICAgICAgICAg
IHJlc29sdmVyLT52aWV3cG9ydFN0eWxlUmVzb2x2ZXIoKS0+YWRkVmlld3BvcnRSdWxlKGRvd25j
YXN0PFN0eWxlUnVsZVZpZXdwb3J0PihydWxlLmdldCgpKSk7CkBAIC00ODAsNyArNDUwLDYgQEAg
dm9pZCBSdWxlU2V0OjpzaHJpbmtUb0ZpdCgpCiAgICAgbV91bml2ZXJzYWxSdWxlcy5zaHJpbmtU
b0ZpdCgpOwogICAgIG1fcGFnZVJ1bGVzLnNocmlua1RvRml0KCk7CiAgICAgbV9mZWF0dXJlcy5z
aHJpbmtUb0ZpdCgpOwotICAgIG1fcmVnaW9uU2VsZWN0b3JzQW5kUnVsZVNldHMuc2hyaW5rVG9G
aXQoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUv
Y3NzL1J1bGVTZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvUnVsZVNldC5o
CShyZXZpc2lvbiAyMjIyNTcpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvUnVsZVNldC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNCwxMyArMzQsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogZW51bSBB
ZGRSdWxlRmxhZ3MgewogICAgIFJ1bGVIYXNOb1NwZWNpYWxTdGF0ZSAgICAgICAgID0gMCwKICAg
ICBSdWxlSGFzRG9jdW1lbnRTZWN1cml0eU9yaWdpbiA9IDEsCi0gICAgUnVsZUlzSW5SZWdpb25S
dWxlICAgICAgICAgICAgPSAxIDw8IDEsCiB9OwogICAgIAogZW51bSBQcm9wZXJ0eVdoaXRlbGlz
dFR5cGUgewogICAgIFByb3BlcnR5V2hpdGVsaXN0Tm9uZSAgID0gMCwKICAgICBQcm9wZXJ0eVdo
aXRlbGlzdE1hcmtlciwKLSAgICBQcm9wZXJ0eVdoaXRlbGlzdFJlZ2lvbiwKICNpZiBFTkFCTEUo
VklERU9fVFJBQ0spCiAgICAgUHJvcGVydHlXaGl0ZWxpc3RDdWUKICNlbmRpZgpAQCAtNTEsNyAr
NDksNiBAQCBjbGFzcyBDb250YWluZXJOb2RlOwogY2xhc3MgTWVkaWFRdWVyeUV2YWx1YXRvcjsK
IGNsYXNzIE5vZGU7CiBjbGFzcyBTdHlsZVJlc29sdmVyOwotY2xhc3MgU3R5bGVSdWxlUmVnaW9u
OwogY2xhc3MgU3R5bGVTaGVldENvbnRlbnRzOwogCiBlbnVtIGNsYXNzIE1hdGNoQmFzZWRPblJ1
bGVIYXNoIDogdW5zaWduZWQgewpAQCAtMTY3LDcgKzE2NCw2IEBAIHB1YmxpYzoKICAgICB2b2lk
IGFkZFJ1bGUoU3R5bGVSdWxlKiwgdW5zaWduZWQgc2VsZWN0b3JJbmRleCwgQWRkUnVsZUZsYWdz
KTsKICAgICB2b2lkIGFkZFBhZ2VSdWxlKFN0eWxlUnVsZVBhZ2UqKTsKICAgICB2b2lkIGFkZFRv
UnVsZVNldChjb25zdCBBdG9taWNTdHJpbmcmIGtleSwgQXRvbVJ1bGVNYXAmLCBjb25zdCBSdWxl
RGF0YSYpOwotICAgIHZvaWQgYWRkUmVnaW9uUnVsZShTdHlsZVJ1bGVSZWdpb24qLCBib29sIGhh
c0RvY3VtZW50U2VjdXJpdHlPcmlnaW4pOwogICAgIHZvaWQgc2hyaW5rVG9GaXQoKTsKICAgICB2
b2lkIGRpc2FibGVBdXRvU2hyaW5rVG9GaXQoKSB7IG1fYXV0b1Nocmlua1RvRml0RW5hYmxlZCA9
IGZhbHNlOyB9CiAKQEAgLTE4Nyw3ICsxODMsNiBAQCBwdWJsaWM6CiAgICAgY29uc3QgUnVsZURh
dGFWZWN0b3IqIHVuaXZlcnNhbFJ1bGVzKCkgY29uc3QgeyByZXR1cm4gJm1fdW5pdmVyc2FsUnVs
ZXM7IH0KIAogICAgIGNvbnN0IFZlY3RvcjxTdHlsZVJ1bGVQYWdlKj4mIHBhZ2VSdWxlcygpIGNv
bnN0IHsgcmV0dXJuIG1fcGFnZVJ1bGVzOyB9Ci0gICAgY29uc3QgVmVjdG9yPFJ1bGVTZXRTZWxl
Y3RvclBhaXI+JiByZWdpb25TZWxlY3RvcnNBbmRSdWxlU2V0cygpIGNvbnN0IHsgcmV0dXJuIG1f
cmVnaW9uU2VsZWN0b3JzQW5kUnVsZVNldHM7IH0KIAogICAgIHVuc2lnbmVkIHJ1bGVDb3VudCgp
IGNvbnN0IHsgcmV0dXJuIG1fcnVsZUNvdW50OyB9CiAKQEAgLTIxNSw3ICsyMTAsNiBAQCBwcml2
YXRlOgogICAgIGJvb2wgbV9oYXNIb3N0UHNldWRvQ2xhc3NSdWxlc01hdGNoaW5nSW5TaGFkb3dU
cmVlIHsgZmFsc2UgfTsKICAgICBib29sIG1fYXV0b1Nocmlua1RvRml0RW5hYmxlZCB7IHRydWUg
fTsKICAgICBSdWxlRmVhdHVyZVNldCBtX2ZlYXR1cmVzOwotICAgIFZlY3RvcjxSdWxlU2V0U2Vs
ZWN0b3JQYWlyPiBtX3JlZ2lvblNlbGVjdG9yc0FuZFJ1bGVTZXRzOwogfTsKIAogaW5saW5lIGNv
bnN0IFJ1bGVTZXQ6OlJ1bGVEYXRhVmVjdG9yKiBSdWxlU2V0Ojp0YWdSdWxlcyhjb25zdCBBdG9t
aWNTdHJpbmcmIGtleSwgYm9vbCBpc0hUTUxOYW1lKSBjb25zdApJbmRleDogU291cmNlL1dlYkNv
cmUvY3NzL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaAkocmV2aXNpb24gMjIyMjU3KQorKysgU291
cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xNDMsMTEgKzE0Myw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgQnJlYWtJbnNpZGUgY29udmVy
dFBhZ2VCcmVha0luc2lkZShTdHlsZVJlc29sdmVyJiwgY29uc3QgQ1NTVmFsdWUmKTsKICAgICBz
dGF0aWMgQnJlYWtCZXR3ZWVuIGNvbnZlcnRDb2x1bW5CcmVha0JldHdlZW4oU3R5bGVSZXNvbHZl
ciYsIGNvbnN0IENTU1ZhbHVlJik7CiAgICAgc3RhdGljIEJyZWFrSW5zaWRlIGNvbnZlcnRDb2x1
bW5CcmVha0luc2lkZShTdHlsZVJlc29sdmVyJiwgY29uc3QgQ1NTVmFsdWUmKTsKLSNpZiBFTkFC
TEUoQ1NTX1JFR0lPTlMpCi0gICAgc3RhdGljIEJyZWFrQmV0d2VlbiBjb252ZXJ0UmVnaW9uQnJl
YWtCZXR3ZWVuKFN0eWxlUmVzb2x2ZXImLCBjb25zdCBDU1NWYWx1ZSYpOwotICAgIHN0YXRpYyBC
cmVha0luc2lkZSBjb252ZXJ0UmVnaW9uQnJlYWtJbnNpZGUoU3R5bGVSZXNvbHZlciYsIGNvbnN0
IENTU1ZhbHVlJik7Ci0jZW5kaWYKLSAgICAKKwogICAgIHN0YXRpYyBIYW5naW5nUHVuY3R1YXRp
b24gY29udmVydEhhbmdpbmdQdW5jdHVhdGlvbihTdHlsZVJlc29sdmVyJiwgY29uc3QgQ1NTVmFs
dWUmKTsKIAogICAgIHN0YXRpYyBMZW5ndGggY29udmVydFBvc2l0aW9uQ29tcG9uZW50WChTdHls
ZVJlc29sdmVyJiwgY29uc3QgQ1NTVmFsdWUmKTsKQEAgLTE1MjAsMjYgKzE1MTYsNiBAQCBpbmxp
bmUgQnJlYWtJbnNpZGUgU3R5bGVCdWlsZGVyQ29udmVydGVyCiAgICAgcmV0dXJuIHByaW1pdGl2
ZVZhbHVlOwogfQogCi0jaWYgRU5BQkxFKENTU19SRUdJT05TKQotaW5saW5lIEJyZWFrQmV0d2Vl
biBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRSZWdpb25CcmVha0JldHdlZW4oU3R5bGVS
ZXNvbHZlciYsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKLXsKLSAgICBhdXRvJiBwcmltaXRpdmVW
YWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSk7Ci0gICAgaWYgKHByaW1p
dGl2ZVZhbHVlLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZUFsd2F5cykKLSAgICAgICAgcmV0dXJuIFJl
Z2lvbkJyZWFrQmV0d2VlbjsKLSAgICBpZiAocHJpbWl0aXZlVmFsdWUudmFsdWVJRCgpID09IENT
U1ZhbHVlQXZvaWQpCi0gICAgICAgIHJldHVybiBBdm9pZFJlZ2lvbkJyZWFrQmV0d2VlbjsKLSAg
ICByZXR1cm4gcHJpbWl0aXZlVmFsdWU7Ci19Ci0KLWlubGluZSBCcmVha0luc2lkZSBTdHlsZUJ1
aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRSZWdpb25CcmVha0luc2lkZShTdHlsZVJlc29sdmVyJiwg
Y29uc3QgQ1NTVmFsdWUmIHZhbHVlKQotewotICAgIGF1dG8mIHByaW1pdGl2ZVZhbHVlID0gZG93
bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsKLSAgICBpZiAocHJpbWl0aXZlVmFsdWUu
dmFsdWVJRCgpID09IENTU1ZhbHVlQXZvaWQpCi0gICAgICAgIHJldHVybiBBdm9pZFJlZ2lvbkJy
ZWFrSW5zaWRlOwotICAgIHJldHVybiBwcmltaXRpdmVWYWx1ZTsKLX0KLSNlbmRpZgotCiBpbmxp
bmUgSGFuZ2luZ1B1bmN0dWF0aW9uIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEhhbmdp
bmdQdW5jdHVhdGlvbihTdHlsZVJlc29sdmVyJiwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQogewog
ICAgIEhhbmdpbmdQdW5jdHVhdGlvbiByZXN1bHQgPSBSZW5kZXJTdHlsZTo6aW5pdGlhbEhhbmdp
bmdQdW5jdHVhdGlvbigpOwpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydGll
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydGllcy5j
cHAJKHJldmlzaW9uIDIyMjI1NykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnRp
ZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTkxLDExICsxMTkxLDYgQEAgc3RhdGljIGNvbnN0
IENTU1Byb3BlcnR5SUQgYmxvY2tQcm9wZXJ0aQogICAgIENTU1Byb3BlcnR5UGFnZUJyZWFrQWZ0
ZXIsCiAgICAgQ1NTUHJvcGVydHlQYWdlQnJlYWtCZWZvcmUsCiAgICAgQ1NTUHJvcGVydHlQYWdl
QnJlYWtJbnNpZGUsCi0jaWYgRU5BQkxFKENTU19SRUdJT05TKQotICAgIENTU1Byb3BlcnR5V2Vi
a2l0UmVnaW9uQnJlYWtBZnRlciwKLSAgICBDU1NQcm9wZXJ0eVdlYmtpdFJlZ2lvbkJyZWFrQmVm
b3JlLAotICAgIENTU1Byb3BlcnR5V2Via2l0UmVnaW9uQnJlYWtJbnNpZGUsCi0jZW5kaWYKICAg
ICBDU1NQcm9wZXJ0eVRleHRBbGlnbiwKICNpZiBFTkFCTEUoQ1NTM19URVhUKQogICAgIENTU1By
b3BlcnR5V2Via2l0VGV4dEFsaWduTGFzdCwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHls
ZVJlc29sdmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNv
bHZlci5jcHAJKHJldmlzaW9uIDIyMjI1NykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJl
c29sdmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzUsNyArNzUsNiBAQAogI2luY2x1ZGUgIk5v
ZGVSZW5kZXJTdHlsZS5oIgogI2luY2x1ZGUgIlBhZ2VSdWxlQ29sbGVjdG9yLmgiCiAjaW5jbHVk
ZSAiUGFpci5oIgotI2luY2x1ZGUgIlJlbmRlclJlZ2lvbi5oIgogI2luY2x1ZGUgIlJlbmRlclNj
cm9sbGJhci5oIgogI2luY2x1ZGUgIlJlbmRlclN0eWxlQ29uc3RhbnRzLmgiCiAjaW5jbHVkZSAi
UmVuZGVyVGhlbWUuaCIKQEAgLTE0MSw3ICsxNDAsNiBAQCBpbmxpbmUgdm9pZCBTdHlsZVJlc29s
dmVyOjpTdGF0ZTo6Y2xlYXIoCiAgICAgbV9lbGVtZW50ID0gbnVsbHB0cjsKICAgICBtX3BhcmVu
dFN0eWxlID0gbnVsbHB0cjsKICAgICBtX293bmVkUGFyZW50U3R5bGUgPSBudWxscHRyOwotICAg
IG1fcmVnaW9uRm9yU3R5bGluZyA9IG51bGxwdHI7CiAgICAgbV9jc3NUb0xlbmd0aENvbnZlcnNp
b25EYXRhID0gQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSgpOwogfQogCkBAIC0yOTgsMTAgKzI5
Niw5IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6c3dlZXBNYXRjaGVkUHJvcGVydGkKICAgICBtX21h
dGNoZWRQcm9wZXJ0aWVzQ2FjaGVBZGRpdGlvbnNTaW5jZUxhc3RTd2VlcCA9IDA7CiB9CiAKLVN0
eWxlUmVzb2x2ZXI6OlN0YXRlOjpTdGF0ZShjb25zdCBFbGVtZW50JiBlbGVtZW50LCBjb25zdCBS
ZW5kZXJTdHlsZSogcGFyZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKiBkb2N1bWVudEVsZW1l
bnRTdHlsZSwgY29uc3QgUmVuZGVyUmVnaW9uKiByZWdpb25Gb3JTdHlsaW5nLCBjb25zdCBTZWxl
Y3RvckZpbHRlciogc2VsZWN0b3JGaWx0ZXIpCitTdHlsZVJlc29sdmVyOjpTdGF0ZTo6U3RhdGUo
Y29uc3QgRWxlbWVudCYgZWxlbWVudCwgY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlLCBj
b25zdCBSZW5kZXJTdHlsZSogZG9jdW1lbnRFbGVtZW50U3R5bGUsIGNvbnN0IFNlbGVjdG9yRmls
dGVyKiBzZWxlY3RvckZpbHRlcikKICAgICA6IG1fZWxlbWVudCgmZWxlbWVudCkKICAgICAsIG1f
cGFyZW50U3R5bGUocGFyZW50U3R5bGUpCi0gICAgLCBtX3JlZ2lvbkZvclN0eWxpbmcocmVnaW9u
Rm9yU3R5bGluZykKICAgICAsIG1fZWxlbWVudExpbmtTdGF0ZShlbGVtZW50LmRvY3VtZW50KCku
dmlzaXRlZExpbmtTdGF0ZSgpLmRldGVybWluZUxpbmtTdGF0ZShlbGVtZW50KSkKICAgICAsIG1f
c2VsZWN0b3JGaWx0ZXIoc2VsZWN0b3JGaWx0ZXIpCiB7CkBAIC0zNDIsMTEgKzMzOSwxMSBAQCBz
dGF0aWMgaW5saW5lIGJvb2wgaXNBdFNoYWRvd0JvdW5kYXJ5KGNvCiAgICAgcmV0dXJuIHBhcmVu
dE5vZGUgJiYgcGFyZW50Tm9kZS0+aXNTaGFkb3dSb290KCk7CiB9CiAKLUVsZW1lbnRTdHlsZSBT
dHlsZVJlc29sdmVyOjpzdHlsZUZvckVsZW1lbnQoY29uc3QgRWxlbWVudCYgZWxlbWVudCwgY29u
c3QgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSogcGFyZW50Qm94
U3R5bGUsIFJ1bGVNYXRjaGluZ0JlaGF2aW9yIG1hdGNoaW5nQmVoYXZpb3IsIGNvbnN0IFJlbmRl
clJlZ2lvbiogcmVnaW9uRm9yU3R5bGluZywgY29uc3QgU2VsZWN0b3JGaWx0ZXIqIHNlbGVjdG9y
RmlsdGVyKQorRWxlbWVudFN0eWxlIFN0eWxlUmVzb2x2ZXI6OnN0eWxlRm9yRWxlbWVudChjb25z
dCBFbGVtZW50JiBlbGVtZW50LCBjb25zdCBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUsIGNvbnN0
IFJlbmRlclN0eWxlKiBwYXJlbnRCb3hTdHlsZSwgUnVsZU1hdGNoaW5nQmVoYXZpb3IgbWF0Y2hp
bmdCZWhhdmlvciwgY29uc3QgU2VsZWN0b3JGaWx0ZXIqIHNlbGVjdG9yRmlsdGVyKQogewogICAg
IFJFTEVBU0VfQVNTRVJUKCFtX2lzRGVsZXRlZCk7CiAKLSAgICBtX3N0YXRlID0gU3RhdGUoZWxl
bWVudCwgcGFyZW50U3R5bGUsIG1fb3ZlcnJpZGVEb2N1bWVudEVsZW1lbnRTdHlsZSwgcmVnaW9u
Rm9yU3R5bGluZywgc2VsZWN0b3JGaWx0ZXIpOworICAgIG1fc3RhdGUgPSBTdGF0ZShlbGVtZW50
LCBwYXJlbnRTdHlsZSwgbV9vdmVycmlkZURvY3VtZW50RWxlbWVudFN0eWxlLCBzZWxlY3RvckZp
bHRlcik7CiAgICAgU3RhdGUmIHN0YXRlID0gbV9zdGF0ZTsKIAogICAgIGlmIChzdGF0ZS5wYXJl
bnRTdHlsZSgpKSB7CkBAIC0zNzMsNyArMzcwLDYgQEAgRWxlbWVudFN0eWxlIFN0eWxlUmVzb2x2
ZXI6OnN0eWxlRm9yRWxlbQogICAgIENTU0RlZmF1bHRTdHlsZVNoZWV0czo6ZW5zdXJlRGVmYXVs
dFN0eWxlU2hlZXRzRm9yRWxlbWVudChlbGVtZW50KTsKIAogICAgIEVsZW1lbnRSdWxlQ29sbGVj
dG9yIGNvbGxlY3RvcihlbGVtZW50LCBtX3J1bGVTZXRzLCBtX3N0YXRlLnNlbGVjdG9yRmlsdGVy
KCkpOwotICAgIGNvbGxlY3Rvci5zZXRSZWdpb25Gb3JTdHlsaW5nKHJlZ2lvbkZvclN0eWxpbmcp
OwogICAgIGNvbGxlY3Rvci5zZXRNZWRpdW0oJm1fbWVkaWFRdWVyeUV2YWx1YXRvcik7CiAKICAg
ICBpZiAobWF0Y2hpbmdCZWhhdmlvciA9PSBNYXRjaE9ubHlVc2VyQWdlbnRSdWxlcykKQEAgLTEw
NTksMjcgKzEwNTUsNiBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmFkanVzdFJlbmRlclN0eWxlKFJl
CiAgICAgfQogfQogCi1ib29sIFN0eWxlUmVzb2x2ZXI6OmNoZWNrUmVnaW9uU3R5bGUoY29uc3Qg
RWxlbWVudCogcmVnaW9uRWxlbWVudCkKLXsKLSAgICB1bnNpZ25lZCBydWxlc1NpemUgPSBtX3J1
bGVTZXRzLmF1dGhvclN0eWxlKCkucmVnaW9uU2VsZWN0b3JzQW5kUnVsZVNldHMoKS5zaXplKCk7
Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHJ1bGVzU2l6ZTsgKytpKSB7Ci0gICAgICAg
IEFTU0VSVChtX3J1bGVTZXRzLmF1dGhvclN0eWxlKCkucmVnaW9uU2VsZWN0b3JzQW5kUnVsZVNl
dHMoKS5hdChpKS5ydWxlU2V0LmdldCgpKTsKLSAgICAgICAgaWYgKGNoZWNrUmVnaW9uU2VsZWN0
b3IobV9ydWxlU2V0cy5hdXRob3JTdHlsZSgpLnJlZ2lvblNlbGVjdG9yc0FuZFJ1bGVTZXRzKCku
YXQoaSkuc2VsZWN0b3IsIHJlZ2lvbkVsZW1lbnQpKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgfQotCi0gICAgaWYgKG1fcnVsZVNldHMudXNlclN0eWxlKCkpIHsKLSAgICAgICAgcnVs
ZXNTaXplID0gbV9ydWxlU2V0cy51c2VyU3R5bGUoKS0+cmVnaW9uU2VsZWN0b3JzQW5kUnVsZVNl
dHMoKS5zaXplKCk7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBydWxlc1NpemU7
ICsraSkgewotICAgICAgICAgICAgQVNTRVJUKG1fcnVsZVNldHMudXNlclN0eWxlKCktPnJlZ2lv
blNlbGVjdG9yc0FuZFJ1bGVTZXRzKCkuYXQoaSkucnVsZVNldC5nZXQoKSk7Ci0gICAgICAgICAg
ICBpZiAoY2hlY2tSZWdpb25TZWxlY3RvcihtX3J1bGVTZXRzLnVzZXJTdHlsZSgpLT5yZWdpb25T
ZWxlY3RvcnNBbmRSdWxlU2V0cygpLmF0KGkpLnNlbGVjdG9yLCByZWdpb25FbGVtZW50KSkKLSAg
ICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHJldHVy
biBmYWxzZTsKLX0KLQogc3RhdGljIHZvaWQgY2hlY2tGb3JPcmllbnRhdGlvbkNoYW5nZShSZW5k
ZXJTdHlsZSogc3R5bGUpCiB7CiAgICAgRm9udE9yaWVudGF0aW9uIGZvbnRPcmllbnRhdGlvbjsK
QEAgLTE1MDQsMjEgKzE0NzksNiBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNWYWxpZE1hcmtlclN0
eWxlUHJvCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi0vLyBodHRwOi8vZGV2LnczLm9yZy9jc3N3
Zy9jc3MzLXJlZ2lvbnMvI3RoZS1hdC1yZWdpb24tc3R5bGUtcnVsZQotLy8gRklYTUU6IEFkZCBp
bmNyZW1lbnRhbCBzdXBwb3J0IGZvciBvdGhlciByZWdpb24gc3R5bGluZyBwcm9wZXJ0aWVzLgot
c3RhdGljIGlubGluZSBib29sIGlzVmFsaWRSZWdpb25TdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5
SUQgaWQpCi17Ci0gICAgc3dpdGNoIChpZCkgewotICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3Jv
dW5kQ29sb3I6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUNvbG9yOgotICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICBkZWZhdWx0OgotICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICByZXR1cm4gZmFs
c2U7Ci19Ci0KICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiBzdGF0aWMgaW5saW5lIGJvb2wgaXNW
YWxpZEN1ZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlJRCBpZCkKIHsKQEAgLTIxNzksOCArMjEz
OSw2IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6Q2FzY2FkZWRQcm9wZXJ0aWVzOjoKICAgICAgICAg
fQogICAgICAgICBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQgPSBjdXJyZW50LmlkKCk7CiAKLSAg
ICAgICAgaWYgKHByb3BlcnR5V2hpdGVsaXN0VHlwZSA9PSBQcm9wZXJ0eVdoaXRlbGlzdFJlZ2lv
biAmJiAhaXNWYWxpZFJlZ2lvblN0eWxlUHJvcGVydHkocHJvcGVydHlJRCkpCi0gICAgICAgICAg
ICBjb250aW51ZTsKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAgICAgICAgIGlmIChwcm9wZXJ0
eVdoaXRlbGlzdFR5cGUgPT0gUHJvcGVydHlXaGl0ZWxpc3RDdWUgJiYgIWlzVmFsaWRDdWVTdHls
ZVByb3BlcnR5KHByb3BlcnR5SUQpKQogICAgICAgICAgICAgY29udGludWU7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZVJlc29sdmVyLmgJKHJldmlzaW9uIDIyMjI1NykKKysrIFNvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZVJlc29sdmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTYyLDcgKzYyLDYgQEAg
Y2xhc3MgS2V5ZnJhbWVMaXN0OwogY2xhc3MgS2V5ZnJhbWVWYWx1ZTsKIGNsYXNzIE1lZGlhUXVl
cnlFdmFsdWF0b3I7CiBjbGFzcyBOb2RlOwotY2xhc3MgUmVuZGVyUmVnaW9uOwogY2xhc3MgUmVu
ZGVyU2Nyb2xsYmFyOwogY2xhc3MgUnVsZURhdGE7CiBjbGFzcyBSdWxlU2V0OwpAQCAtNzYsNyAr
NzUsNiBAQCBjbGFzcyBTdHlsZVByb3BlcnRpZXM7CiBjbGFzcyBTdHlsZVJ1bGU7CiBjbGFzcyBT
dHlsZVJ1bGVLZXlmcmFtZXM7CiBjbGFzcyBTdHlsZVJ1bGVQYWdlOwotY2xhc3MgU3R5bGVSdWxl
UmVnaW9uOwogY2xhc3MgU3R5bGVTaGVldDsKIGNsYXNzIFN0eWxlU2hlZXRMaXN0OwogY2xhc3Mg
U3R5bGVkRWxlbWVudDsKQEAgLTEzMSw3ICsxMjksNyBAQCBwdWJsaWM6CiAgICAgU3R5bGVSZXNv
bHZlcihEb2N1bWVudCYpOwogICAgIH5TdHlsZVJlc29sdmVyKCk7CiAKLSAgICBFbGVtZW50U3R5
bGUgc3R5bGVGb3JFbGVtZW50KGNvbnN0IEVsZW1lbnQmLCBjb25zdCBSZW5kZXJTdHlsZSogcGFy
ZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKiBwYXJlbnRCb3hTdHlsZSA9IG51bGxwdHIsIFJ1
bGVNYXRjaGluZ0JlaGF2aW9yID0gTWF0Y2hBbGxSdWxlcywgY29uc3QgUmVuZGVyUmVnaW9uKiBy
ZWdpb25Gb3JTdHlsaW5nID0gbnVsbHB0ciwgY29uc3QgU2VsZWN0b3JGaWx0ZXIqID0gbnVsbHB0
cik7CisgICAgRWxlbWVudFN0eWxlIHN0eWxlRm9yRWxlbWVudChjb25zdCBFbGVtZW50JiwgY29u
c3QgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSogcGFyZW50Qm94
U3R5bGUgPSBudWxscHRyLCBSdWxlTWF0Y2hpbmdCZWhhdmlvciA9IE1hdGNoQWxsUnVsZXMsIGNv
bnN0IFNlbGVjdG9yRmlsdGVyKiA9IG51bGxwdHIpOwogCiAgICAgdm9pZCBrZXlmcmFtZVN0eWxl
c0ZvckFuaW1hdGlvbihjb25zdCBFbGVtZW50JiwgY29uc3QgUmVuZGVyU3R5bGUqLCBLZXlmcmFt
ZUxpc3QmKTsKIApAQCAtMjExLDggKzIwOSw2IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYWRkS2V5
ZnJhbWVTdHlsZShSZWY8U3R5bGVSdWxlS2V5ZnJhbWVzPiYmKTsKIAotICAgIGJvb2wgY2hlY2tS
ZWdpb25TdHlsZShjb25zdCBFbGVtZW50KiByZWdpb25FbGVtZW50KTsKLQogICAgIGJvb2wgdXNl
c0ZpcnN0TGluZVJ1bGVzKCkgY29uc3QgeyByZXR1cm4gbV9ydWxlU2V0cy5mZWF0dXJlcygpLnVz
ZXNGaXJzdExpbmVSdWxlczsgfQogICAgIGJvb2wgdXNlc0ZpcnN0TGV0dGVyUnVsZXMoKSBjb25z
dCB7IHJldHVybiBtX3J1bGVTZXRzLmZlYXR1cmVzKCkudXNlc0ZpcnN0TGV0dGVyUnVsZXM7IH0K
ICAgICAKQEAgLTM0Niw3ICszNDIsNyBAQCBwdWJsaWM6CiAgICAgY2xhc3MgU3RhdGUgewogICAg
IHB1YmxpYzoKICAgICAgICAgU3RhdGUoKSB7IH0KLSAgICAgICAgU3RhdGUoY29uc3QgRWxlbWVu
dCYsIGNvbnN0IFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIGRv
Y3VtZW50RWxlbWVudFN0eWxlID0gbnVsbHB0ciwgY29uc3QgUmVuZGVyUmVnaW9uKiByZWdpb25G
b3JTdHlsaW5nID0gbnVsbHB0ciwgY29uc3QgU2VsZWN0b3JGaWx0ZXIqID0gbnVsbHB0cik7Cisg
ICAgICAgIFN0YXRlKGNvbnN0IEVsZW1lbnQmLCBjb25zdCBSZW5kZXJTdHlsZSogcGFyZW50U3R5
bGUsIGNvbnN0IFJlbmRlclN0eWxlKiBkb2N1bWVudEVsZW1lbnRTdHlsZSA9IG51bGxwdHIsIGNv
bnN0IFNlbGVjdG9yRmlsdGVyKiA9IG51bGxwdHIpOwogCiAgICAgcHVibGljOgogICAgICAgICB2
b2lkIGNsZWFyKCk7CkBAIC0zNjIsNyArMzU4LDYgQEAgcHVibGljOgogICAgICAgICBjb25zdCBS
ZW5kZXJTdHlsZSogcGFyZW50U3R5bGUoKSBjb25zdCB7IHJldHVybiBtX3BhcmVudFN0eWxlOyB9
CiAgICAgICAgIGNvbnN0IFJlbmRlclN0eWxlKiByb290RWxlbWVudFN0eWxlKCkgY29uc3QgeyBy
ZXR1cm4gbV9yb290RWxlbWVudFN0eWxlOyB9CiAKLSAgICAgICAgY29uc3QgUmVuZGVyUmVnaW9u
KiByZWdpb25Gb3JTdHlsaW5nKCkgY29uc3QgeyByZXR1cm4gbV9yZWdpb25Gb3JTdHlsaW5nOyB9
CiAgICAgICAgIEVJbnNpZGVMaW5rIGVsZW1lbnRMaW5rU3RhdGUoKSBjb25zdCB7IHJldHVybiBt
X2VsZW1lbnRMaW5rU3RhdGU7IH0KIAogICAgICAgICB2b2lkIHNldEFwcGx5UHJvcGVydHlUb1Jl
Z3VsYXJTdHlsZShib29sIGlzQXBwbHkpIHsgbV9hcHBseVByb3BlcnR5VG9SZWd1bGFyU3R5bGUg
PSBpc0FwcGx5OyB9CkBAIC00MTUsOCArNDEwLDYgQEAgcHVibGljOgogICAgICAgICBzdGQ6OnVu
aXF1ZV9wdHI8UmVuZGVyU3R5bGU+IG1fb3duZWRQYXJlbnRTdHlsZTsKICAgICAgICAgY29uc3Qg
UmVuZGVyU3R5bGUqIG1fcm9vdEVsZW1lbnRTdHlsZSB7IG51bGxwdHIgfTsKIAotICAgICAgICBj
b25zdCBSZW5kZXJSZWdpb24qIG1fcmVnaW9uRm9yU3R5bGluZyB7IG51bGxwdHIgfTsKLSAgICAg
ICAgCiAgICAgICAgIEVJbnNpZGVMaW5rIG1fZWxlbWVudExpbmtTdGF0ZSB7IE5vdEluc2lkZUxp
bmsgfTsKIAogICAgICAgICBib29sIG1fYXBwbHlQcm9wZXJ0eVRvUmVndWxhclN0eWxlIHsgdHJ1
ZSB9OwpAQCAtNTQxLDE5ICs1MzQsNCBAQCBpbmxpbmUgYm9vbCBTdHlsZVJlc29sdmVyOjpoYXNT
ZWxlY3RvckZvCiAgICAgcmV0dXJuIG1fcnVsZVNldHMuZmVhdHVyZXMoKS5pZHNJblJ1bGVzLmNv
bnRhaW5zKGlkVmFsdWUpOwogfQogCi1pbmxpbmUgYm9vbCBjaGVja1JlZ2lvblNlbGVjdG9yKGNv
bnN0IENTU1NlbGVjdG9yKiByZWdpb25TZWxlY3RvciwgY29uc3QgRWxlbWVudCogcmVnaW9uRWxl
bWVudCkKLXsKLSAgICBpZiAoIXJlZ2lvblNlbGVjdG9yIHx8ICFyZWdpb25FbGVtZW50KQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBTZWxlY3RvckNoZWNrZXIgc2VsZWN0b3JDaGVja2Vy
KHJlZ2lvbkVsZW1lbnQtPmRvY3VtZW50KCkpOwotICAgIGZvciAoY29uc3QgQ1NTU2VsZWN0b3Iq
IHMgPSByZWdpb25TZWxlY3RvcjsgczsgcyA9IENTU1NlbGVjdG9yTGlzdDo6bmV4dChzKSkgewot
ICAgICAgICBTZWxlY3RvckNoZWNrZXI6OkNoZWNraW5nQ29udGV4dCBzZWxlY3RvckNoZWNraW5n
Q29udGV4dChTZWxlY3RvckNoZWNrZXI6Ok1vZGU6OlF1ZXJ5aW5nUnVsZXMpOwotICAgICAgICB1
bnNpZ25lZCBpZ25vcmVkU3BlY2lmaWNpdHk7Ci0gICAgICAgIGlmIChzZWxlY3RvckNoZWNrZXIu
bWF0Y2goKnMsICpyZWdpb25FbGVtZW50LCBzZWxlY3RvckNoZWNraW5nQ29udGV4dCwgaWdub3Jl
ZFNwZWNpZmljaXR5KSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICByZXR1
cm4gZmFsc2U7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZVJ1bGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9T
dHlsZVJ1bGUuY3BwCShyZXZpc2lvbiAyMjIyNTcpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVSdWxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNiBAQAogI2luY2x1ZGUgIk1l
ZGlhTGlzdC5oIgogI2luY2x1ZGUgIlN0eWxlUHJvcGVydGllcy5oIgogI2luY2x1ZGUgIlN0eWxl
UnVsZUltcG9ydC5oIgotI2luY2x1ZGUgIldlYktpdENTU1JlZ2lvblJ1bGUuaCIKICNpbmNsdWRl
ICJXZWJLaXRDU1NWaWV3cG9ydFJ1bGUuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNzQs
MTEgKzczLDYgQEAgdm9pZCBTdHlsZVJ1bGVCYXNlOjpkZXN0cm95KCkKICAgICBjYXNlIFN1cHBv
cnRzOgogICAgICAgICBkZWxldGUgZG93bmNhc3Q8U3R5bGVSdWxlU3VwcG9ydHM+KHRoaXMpOwog
ICAgICAgICByZXR1cm47Ci0jaWYgRU5BQkxFKENTU19SRUdJT05TKQotICAgIGNhc2UgUmVnaW9u
OgotICAgICAgICBkZWxldGUgZG93bmNhc3Q8U3R5bGVSdWxlUmVnaW9uPih0aGlzKTsKLSAgICAg
ICAgcmV0dXJuOwotI2VuZGlmCiAgICAgY2FzZSBJbXBvcnQ6CiAgICAgICAgIGRlbGV0ZSBkb3du
Y2FzdDxTdHlsZVJ1bGVJbXBvcnQ+KHRoaXMpOwogICAgICAgICByZXR1cm47CkBAIC0xMDAsOSAr
OTQsNiBAQCB2b2lkIFN0eWxlUnVsZUJhc2U6OmRlc3Ryb3koKQogICAgICAgICBkZWxldGUgZG93
bmNhc3Q8U3R5bGVSdWxlQ2hhcnNldD4odGhpcyk7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNl
IFVua25vd246Ci0jaWYgIUVOQUJMRShDU1NfUkVHSU9OUykKLSAgICBjYXNlIFJlZ2lvbjoKLSNl
bmRpZgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KQEAgLTEyMiwxMCArMTEzLDYgQEAgUmVmPFN0eWxlUnVsZUJhc2U+IFN0eWxlUnVsZUJhc2U6
OmNvcHkoKQogICAgICAgICByZXR1cm4gZG93bmNhc3Q8U3R5bGVSdWxlTWVkaWE+KCp0aGlzKS5j
b3B5KCk7CiAgICAgY2FzZSBTdXBwb3J0czoKICAgICAgICAgcmV0dXJuIGRvd25jYXN0PFN0eWxl
UnVsZVN1cHBvcnRzPigqdGhpcykuY29weSgpOwotI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKLSAg
ICBjYXNlIFJlZ2lvbjoKLSAgICAgICAgcmV0dXJuIGRvd25jYXN0PFN0eWxlUnVsZVJlZ2lvbj4o
KnRoaXMpLmNvcHkoKTsKLSNlbmRpZgogICAgIGNhc2UgS2V5ZnJhbWVzOgogICAgICAgICByZXR1
cm4gZG93bmNhc3Q8U3R5bGVSdWxlS2V5ZnJhbWVzPigqdGhpcykuY29weSgpOwogI2lmIEVOQUJM
RShDU1NfREVWSUNFX0FEQVBUQVRJT04pCkBAIC0xMzksOSArMTI2LDYgQEAgUmVmPFN0eWxlUnVs
ZUJhc2U+IFN0eWxlUnVsZUJhc2U6OmNvcHkoKQogICAgIGNhc2UgVW5rbm93bjoKICAgICBjYXNl
IENoYXJzZXQ6CiAgICAgY2FzZSBLZXlmcmFtZToKLSNpZiAhRU5BQkxFKENTU19SRUdJT05TKQot
ICAgIGNhc2UgUmVnaW9uOgotI2VuZGlmCiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBDUkFT
SCgpOwpAQCAtMTY3LDExICsxNTEsNiBAQCBSZWZQdHI8Q1NTUnVsZT4gU3R5bGVSdWxlQmFzZTo6
Y3JlYXRlQ1NTCiAgICAgY2FzZSBTdXBwb3J0czoKICAgICAgICAgcnVsZSA9IENTU1N1cHBvcnRz
UnVsZTo6Y3JlYXRlKGRvd25jYXN0PFN0eWxlUnVsZVN1cHBvcnRzPihzZWxmKSwgcGFyZW50U2hl
ZXQpOwogICAgICAgICBicmVhazsKLSNpZiBFTkFCTEUoQ1NTX1JFR0lPTlMpCi0gICAgY2FzZSBS
ZWdpb246Ci0gICAgICAgIHJ1bGUgPSBXZWJLaXRDU1NSZWdpb25SdWxlOjpjcmVhdGUoZG93bmNh
c3Q8U3R5bGVSdWxlUmVnaW9uPihzZWxmKSwgcGFyZW50U2hlZXQpOwotICAgICAgICBicmVhazsK
LSNlbmRpZgogICAgIGNhc2UgSW1wb3J0OgogICAgICAgICBydWxlID0gQ1NTSW1wb3J0UnVsZTo6
Y3JlYXRlKGRvd25jYXN0PFN0eWxlUnVsZUltcG9ydD4oc2VsZiksIHBhcmVudFNoZWV0KTsKICAg
ICAgICAgYnJlYWs7CkBAIC0xODksOSArMTY4LDYgQEAgUmVmUHRyPENTU1J1bGU+IFN0eWxlUnVs
ZUJhc2U6OmNyZWF0ZUNTUwogICAgIGNhc2UgVW5rbm93bjoKICAgICBjYXNlIENoYXJzZXQ6CiAg
ICAgY2FzZSBLZXlmcmFtZToKLSNpZiAhRU5BQkxFKENTU19SRUdJT05TKQotICAgIGNhc2UgUmVn
aW9uOgotI2VuZGlmCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICB9CkBAIC00MjcsMjUgKzQwMyw2IEBAIFN0eWxlUnVsZVN1cHBvcnRz
OjpTdHlsZVJ1bGVTdXBwb3J0cyhjb24KIHsKIH0KIAotU3R5bGVSdWxlUmVnaW9uOjpTdHlsZVJ1
bGVSZWdpb24oVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxDU1NQYXJzZXJTZWxlY3Rvcj4+KiBzZWxl
Y3RvcnMsIFZlY3RvcjxSZWZQdHI8U3R5bGVSdWxlQmFzZT4+JiBhZG9wdFJ1bGVzKQotICAgIDog
U3R5bGVSdWxlR3JvdXAoUmVnaW9uLCBhZG9wdFJ1bGVzKQotewotICAgIG1fc2VsZWN0b3JMaXN0
LmFkb3B0U2VsZWN0b3JWZWN0b3IoKnNlbGVjdG9ycyk7Ci19Ci0KLVN0eWxlUnVsZVJlZ2lvbjo6
U3R5bGVSdWxlUmVnaW9uKENTU1NlbGVjdG9yTGlzdCYgc2VsZWN0b3JzLCBWZWN0b3I8UmVmUHRy
PFN0eWxlUnVsZUJhc2U+PiYgYWRvcHRSdWxlcykKLSAgICA6IFN0eWxlUnVsZUdyb3VwKFJlZ2lv
biwgYWRvcHRSdWxlcykKLSAgICAsIG1fc2VsZWN0b3JMaXN0KFdURk1vdmUoc2VsZWN0b3JzKSkK
LXsKLX0KLQotU3R5bGVSdWxlUmVnaW9uOjpTdHlsZVJ1bGVSZWdpb24oY29uc3QgU3R5bGVSdWxl
UmVnaW9uJiBvKQotICAgIDogU3R5bGVSdWxlR3JvdXAobykKLSAgICAsIG1fc2VsZWN0b3JMaXN0
KG8ubV9zZWxlY3Rvckxpc3QpCi17Ci19Ci0KLQogI2lmIEVOQUJMRShDU1NfREVWSUNFX0FEQVBU
QVRJT04pCiBTdHlsZVJ1bGVWaWV3cG9ydDo6U3R5bGVSdWxlVmlld3BvcnQoUmVmPFN0eWxlUHJv
cGVydGllcz4mJiBwcm9wZXJ0aWVzKQogICAgIDogU3R5bGVSdWxlQmFzZShWaWV3cG9ydCkKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9jc3MvU3R5bGVSdWxlLmgJKHJldmlzaW9uIDIyMjI1NykKKysrIFNvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZVJ1bGUuaAkod29ya2luZyBjb3B5KQpAQCAtNTUsNyArNTUsNiBAQCBwdWJs
aWM6CiAjaWYgRU5BQkxFKENTU19ERVZJQ0VfQURBUFRBVElPTikKICAgICAgICAgVmlld3BvcnQg
PSAxNSwKICNlbmRpZgotICAgICAgICBSZWdpb24gPSAxNiwKICAgICB9OwogCiAgICAgVHlwZSB0
eXBlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VHlwZT4obV90eXBlKTsgfQpAQCAtNjgs
NyArNjcsNiBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc01lZGlhUnVsZSgpIGNvbnN0IHsgcmV0dXJu
IHR5cGUoKSA9PSBNZWRpYTsgfQogICAgIGJvb2wgaXNQYWdlUnVsZSgpIGNvbnN0IHsgcmV0dXJu
IHR5cGUoKSA9PSBQYWdlOyB9CiAgICAgYm9vbCBpc1N0eWxlUnVsZSgpIGNvbnN0IHsgcmV0dXJu
IHR5cGUoKSA9PSBTdHlsZTsgfQotICAgIGJvb2wgaXNSZWdpb25SdWxlKCkgY29uc3QgeyByZXR1
cm4gdHlwZSgpID09IFJlZ2lvbjsgfQogICAgIGJvb2wgaXNTdXBwb3J0c1J1bGUoKSBjb25zdCB7
IHJldHVybiB0eXBlKCkgPT0gU3VwcG9ydHM7IH0KICNpZiBFTkFCTEUoQ1NTX0RFVklDRV9BREFQ
VEFUSU9OKQogICAgIGJvb2wgaXNWaWV3cG9ydFJ1bGUoKSBjb25zdCB7IHJldHVybiB0eXBlKCkg
PT0gVmlld3BvcnQ7IH0KQEAgLTI3NiwzMSArMjc0LDYgQEAgcHJpdmF0ZToKICAgICBib29sIG1f
Y29uZGl0aW9uSXNTdXBwb3J0ZWQ7CiB9OwogCi1jbGFzcyBTdHlsZVJ1bGVSZWdpb24gZmluYWwg
OiBwdWJsaWMgU3R5bGVSdWxlR3JvdXAgewotcHVibGljOgotICAgIHN0YXRpYyBSZWY8U3R5bGVS
dWxlUmVnaW9uPiBjcmVhdGUoVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxDU1NQYXJzZXJTZWxlY3Rv
cj4+KiBzZWxlY3RvcnMsIFZlY3RvcjxSZWZQdHI8U3R5bGVSdWxlQmFzZT4+JiBhZG9wdFJ1bGVz
KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVSdWxlUmVnaW9uKHNl
bGVjdG9ycywgYWRvcHRSdWxlcykpOwotICAgIH0KLSAgICAKLSAgICBzdGF0aWMgUmVmPFN0eWxl
UnVsZVJlZ2lvbj4gY3JlYXRlKENTU1NlbGVjdG9yTGlzdCYgc2VsZWN0b3JzLCBWZWN0b3I8UmVm
UHRyPFN0eWxlUnVsZUJhc2U+PiYgYWRvcHRSdWxlcykKLSAgICB7Ci0gICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFN0eWxlUnVsZVJlZ2lvbihzZWxlY3RvcnMsIGFkb3B0UnVsZXMpKTsKLSAg
ICB9Ci0gICAgCi0gICAgY29uc3QgQ1NTU2VsZWN0b3JMaXN0JiBzZWxlY3Rvckxpc3QoKSBjb25z
dCB7IHJldHVybiBtX3NlbGVjdG9yTGlzdDsgfQotCi0gICAgUmVmPFN0eWxlUnVsZVJlZ2lvbj4g
Y29weSgpIGNvbnN0IHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVSdWxlUmVnaW9uKCp0aGlz
KSk7IH0KLQotcHJpdmF0ZToKLSAgICBTdHlsZVJ1bGVSZWdpb24oVmVjdG9yPHN0ZDo6dW5pcXVl
X3B0cjxDU1NQYXJzZXJTZWxlY3Rvcj4+KiwgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGVCYXNlPj4m
IGFkb3B0UnVsZXMpOwotICAgIFN0eWxlUnVsZVJlZ2lvbihDU1NTZWxlY3Rvckxpc3QmLCBWZWN0
b3I8UmVmUHRyPFN0eWxlUnVsZUJhc2U+PiYpOwotICAgIAotICAgIFN0eWxlUnVsZVJlZ2lvbihj
b25zdCBTdHlsZVJ1bGVSZWdpb24mKTsKLSAgICAKLSAgICBDU1NTZWxlY3Rvckxpc3QgbV9zZWxl
Y3Rvckxpc3Q7Ci19OwotCiAjaWYgRU5BQkxFKENTU19ERVZJQ0VfQURBUFRBVElPTikKIGNsYXNz
IFN0eWxlUnVsZVZpZXdwb3J0IGZpbmFsIDogcHVibGljIFN0eWxlUnVsZUJhc2UgewogcHVibGlj
OgpAQCAtMzc5LDEwICszNTIsNiBAQCBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNv
cmU6OlN0CiAgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OlN0eWxlUnVsZUJh
c2UmIHJ1bGUpIHsgcmV0dXJuIHJ1bGUuaXNTdXBwb3J0c1J1bGUoKTsgfQogU1BFQ0lBTElaRV9U
WVBFX1RSQUlUU19FTkQoKQogCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6
OlN0eWxlUnVsZVJlZ2lvbikKLSAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6
U3R5bGVSdWxlQmFzZSYgcnVsZSkgeyByZXR1cm4gcnVsZS5pc1JlZ2lvblJ1bGUoKTsgfQotU1BF
Q0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQotCiAjaWYgRU5BQkxFKENTU19ERVZJQ0VfQURBUFRB
VElPTikKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6U3R5bGVSdWxlVmll
d3BvcnQpCiAgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OlN0eWxlUnVsZUJh
c2UmIHJ1bGUpIHsgcmV0dXJuIHJ1bGUuaXNWaWV3cG9ydFJ1bGUoKTsgfQpJbmRleDogU291cmNl
L1dlYkNvcmUvY3NzL1N0eWxlU2hlZXRDb250ZW50cy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvY3NzL1N0eWxlU2hlZXRDb250ZW50cy5jcHAJKHJldmlzaW9uIDIyMjI1NykKKysr
IFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0Q29udGVudHMuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00NTAsMTAgKzQ1MCw2IEBAIHN0YXRpYyBib29sIHRyYXZlcnNlU3VicmVzb3VyY2VzSW5S
dWxlcygKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9Ci0gICAgICAgIGNhc2UgU3R5bGVSdWxlQmFzZTo6UmVnaW9uOgotICAgICAgICAg
ICAgaWYgKHRyYXZlcnNlU3VicmVzb3VyY2VzSW5SdWxlcyhkb3duY2FzdDxTdHlsZVJ1bGVSZWdp
b24+KCpydWxlKS5jaGlsZFJ1bGVzKCksIGhhbmRsZXIpKQotICAgICAgICAgICAgICAgIHJldHVy
biB0cnVlOwotICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgU3R5bGVSdWxlQmFzZTo6
SW1wb3J0OgogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAjaWYgQVNTRVJUX0RJ
U0FCTEVECkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTUmVnaW9uUnVsZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU1JlZ2lvblJ1bGUuY3Bw
CShyZXZpc2lvbiAyMjIyNTcpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTUmVnaW9u
UnVsZS5jcHAJKG5vbmV4aXN0ZW50KQpAQCAtMSw2NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDExIEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlCi0gKiAg
ICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZwotICogICAgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCi0gKiAgICBkaXNjbGFpbWVy
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMKLSAqICAgIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
LSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVCBIT0xERVIgQkUKLSAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwKLSAqIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
LSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IKLSAqIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRgotICogVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCi0gKiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpbmNsdWRlICJXZWJLaXRDU1NSZWdp
b25SdWxlLmgiCi0KLSNpbmNsdWRlICJDU1NSdWxlTGlzdC5oIgotI2luY2x1ZGUgIlN0eWxlUnVs
ZS5oIgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KLQotI2lmIEVOQUJMRShD
U1NfUkVHSU9OUykKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotV2ViS2l0Q1NTUmVnaW9uUnVsZTo6
V2ViS2l0Q1NTUmVnaW9uUnVsZShTdHlsZVJ1bGVSZWdpb24mIHJlZ2lvblJ1bGUsIENTU1N0eWxl
U2hlZXQqIHBhcmVudCkKLSAgICA6IENTU0dyb3VwaW5nUnVsZShyZWdpb25SdWxlLCBwYXJlbnQp
Ci17Ci19Ci0KLVN0cmluZyBXZWJLaXRDU1NSZWdpb25SdWxlOjpjc3NUZXh0KCkgY29uc3QKLXsK
LSAgICBTdHJpbmdCdWlsZGVyIHJlc3VsdDsKLSAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiQC13
ZWJraXQtcmVnaW9uICIpOwotCi0gICAgLy8gRmlyc3QgYWRkIHRoZSBzZWxlY3RvcnMuCi0gICAg
ZG93bmNhc3Q8U3R5bGVSdWxlUmVnaW9uPihtX2dyb3VwUnVsZS5nZXQoKSkuc2VsZWN0b3JMaXN0
KCkuYnVpbGRTZWxlY3RvcnNUZXh0KHJlc3VsdCk7Ci0KLSAgICAvLyBUaGVuIGFkZCB0aGUgcnVs
ZXMuCi0gICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoIiB7IFxuIik7Ci0gICAgYXBwZW5kQ3NzVGV4
dEZvckl0ZW1zKHJlc3VsdCk7Ci0gICAgcmVzdWx0LmFwcGVuZCgnfScpOwotICAgIHJldHVybiBy
ZXN1bHQudG9TdHJpbmcoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NSZWdpb25SdWxlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU1JlZ2lvblJ1bGUuaAkocmV2aXNpb24g
MjIyMjU3KQorKysgU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU1JlZ2lvblJ1bGUuaAkobm9u
ZXhpc3RlbnQpCkBAIC0xLDU2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQWRv
YmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUKLSAqICAgIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCi0gKiAgICBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQotICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKLSAqICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscwotICogICAgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVIgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUIEhPTERFUiBCRQotICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLAotICogT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUgotICogVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GCi0gKiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKLSAqIFNVQ0ggREFNQUdFLgotICovCi0KLSNw
cmFnbWEgb25jZQotCi0jaW5jbHVkZSAiQ1NTR3JvdXBpbmdSdWxlLmgiCi0KLSNpZiBFTkFCTEUo
Q1NTX1JFR0lPTlMpCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgU3R5bGVSdWxlUmVn
aW9uOwotCi1jbGFzcyBXZWJLaXRDU1NSZWdpb25SdWxlIGZpbmFsIDogcHVibGljIENTU0dyb3Vw
aW5nUnVsZSB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxXZWJLaXRDU1NSZWdpb25SdWxlPiBj
cmVhdGUoU3R5bGVSdWxlUmVnaW9uJiBydWxlLCBDU1NTdHlsZVNoZWV0KiBzaGVldCkgeyByZXR1
cm4gYWRvcHRSZWYoKm5ldyBXZWJLaXRDU1NSZWdpb25SdWxlKHJ1bGUsIHNoZWV0KSk7IH0KLQot
ICAgIENTU1J1bGU6OlR5cGUgdHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIFdFQktJVF9SRUdJ
T05fUlVMRTsgfQotICAgIFN0cmluZyBjc3NUZXh0KCkgY29uc3QgZmluYWw7Ci0KLXByaXZhdGU6
Ci0gICAgV2ViS2l0Q1NTUmVnaW9uUnVsZShTdHlsZVJ1bGVSZWdpb24mLCBDU1NTdHlsZVNoZWV0
KiBwYXJlbnQpOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi1TUEVDSUFMSVpFX1RZ
UEVfVFJBSVRTX0NTU19SVUxFKFdlYktpdENTU1JlZ2lvblJ1bGUsIENTU1J1bGU6OldFQktJVF9S
RUdJT05fUlVMRSkKLQotI2VuZGlmIC8vIEVOQUJMRShDU1NfUkVHSU9OUykKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NSZWdpb25SdWxlLmlkbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTUmVnaW9uUnVsZS5pZGwJKHJldmlzaW9uIDIyMjI1NykK
KysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NSZWdpb25SdWxlLmlkbAkobm9uZXhpc3Rl
bnQpCkBAIC0xLDM1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQWRvYmUgU3lz
dGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZQotICogICAgY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKLSAqICAgIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCi0gKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZwotICogICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzCi0gKiAgICBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUiAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQg
SE9MREVSIEJFCi0gKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksCi0gKiBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
Ci0gKiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YKLSAqIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgotICogU1VDSCBEQU1BR0UuCi0gKi8KLQotWwotICAg
IENvbmRpdGlvbmFsPUNTU19SRUdJT05TLAotXSBpbnRlcmZhY2UgV2ViS2l0Q1NTUmVnaW9uUnVs
ZSA6IENTU1J1bGUgewotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBDU1NSdWxlTGlzdCBjc3NSdWxl
czsKLX07Ci0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTQXRSdWxlSUQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTQXRSdWxlSUQuY3Bw
CShyZXZpc2lvbiAyMjIyNTcpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU0F0UnVs
ZUlELmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTYsMTAgKzU2LDYgQEAgQ1NTQXRSdWxlSUQgY3Nz
QXRSdWxlSUQoU3RyaW5nVmlldyBuYW1lKQogICAgICAgICByZXR1cm4gQ1NTQXRSdWxlV2Via2l0
S2V5ZnJhbWVzOwogICAgIGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG5hbWUsICJhcHBseSIp
KQogICAgICAgICByZXR1cm4gQ1NTQXRSdWxlQXBwbHk7Ci0jaWYgRU5BQkxFKENTU19SRUdJT05T
KQotICAgIGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG5hbWUsICItd2Via2l0LXJlZ2lvbiIp
KQotICAgICAgICByZXR1cm4gQ1NTQXRSdWxlV2Via2l0UmVnaW9uOwotI2VuZGlmCiAgICAgcmV0
dXJuIENTU0F0UnVsZUludmFsaWQ7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJz
ZXIvQ1NTQXRSdWxlSUQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2Vy
L0NTU0F0UnVsZUlELmgJKHJldmlzaW9uIDIyMjI1NykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9w
YXJzZXIvQ1NTQXRSdWxlSUQuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsNyArNDcsNiBAQCBlbnVt
IENTU0F0UnVsZUlEIHsKIAogICAgIENTU0F0UnVsZVdlYmtpdEtleWZyYW1lcyA9IDEwLAogICAg
IENTU0F0UnVsZUFwcGx5ID0gMTEsCi0gICAgQ1NTQXRSdWxlV2Via2l0UmVnaW9uID0gMTIKIH07
CiAKIENTU0F0UnVsZUlEIGNzc0F0UnVsZUlEKFN0cmluZ1ZpZXcgbmFtZSk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckZhc3RQYXRocy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJGYXN0UGF0aHMuY3BwCShyZXZp
c2lvbiAyMjIyNTcpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckZhc3RQ
YXRocy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYxMywxNyArNjEzLDkgQEAgYm9vbCBDU1NQYXJz
ZXJGYXN0UGF0aHM6OmlzVmFsaWRLZXl3b3JkUAogICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBD
U1NWYWx1ZVZpc2libGUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUhpZGRlbiB8fCB2YWx1ZUlEID09
IENTU1ZhbHVlU2Nyb2xsIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVBdXRvIHx8IHZhbHVlSUQgPT0g
Q1NTVmFsdWVPdmVybGF5IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVXZWJraXRQYWdlZFggfHwgdmFs
dWVJRCA9PSBDU1NWYWx1ZVdlYmtpdFBhZ2VkWTsKICAgICBjYXNlIENTU1Byb3BlcnR5QnJlYWtB
ZnRlcjoKICAgICBjYXNlIENTU1Byb3BlcnR5QnJlYWtCZWZvcmU6Ci0gICAgICAgIHJldHVybiB2
YWx1ZUlEID09IENTU1ZhbHVlQXV0byB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQXZvaWQgfHwgdmFs
dWVJRCA9PSBDU1NWYWx1ZUF2b2lkUGFnZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlUGFnZSB8fCB2
YWx1ZUlEID09IENTU1ZhbHVlTGVmdCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlUmlnaHQgfHwgdmFs
dWVJRCA9PSBDU1NWYWx1ZVJlY3RvIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVWZXJzbyB8fCB2YWx1
ZUlEID09IENTU1ZhbHVlQXZvaWRDb2x1bW4gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUNvbHVtbgot
I2lmIEVOQUJMRShDU1NfUkVHSU9OUykKLSAgICAgICAgICAgIHx8IHZhbHVlSUQgPT0gQ1NTVmFs
dWVSZWdpb24gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUF2b2lkUmVnaW9uCi0jZW5kaWYKLSAgICAg
ICAgOworICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZUF1dG8gfHwgdmFsdWVJRCA9
PSBDU1NWYWx1ZUF2b2lkIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVBdm9pZFBhZ2UgfHwgdmFsdWVJ
RCA9PSBDU1NWYWx1ZVBhZ2UgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUxlZnQgfHwgdmFsdWVJRCA9
PSBDU1NWYWx1ZVJpZ2h0IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVSZWN0byB8fCB2YWx1ZUlEID09
IENTU1ZhbHVlVmVyc28gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUF2b2lkQ29sdW1uIHx8IHZhbHVl
SUQgPT0gQ1NTVmFsdWVDb2x1bW47CiAgICAgY2FzZSBDU1NQcm9wZXJ0eUJyZWFrSW5zaWRlOgot
ICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZUF1dG8gfHwgdmFsdWVJRCA9PSBDU1NW
YWx1ZUF2b2lkIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVBdm9pZFBhZ2UgfHwgdmFsdWVJRCA9PSBD
U1NWYWx1ZUF2b2lkQ29sdW1uCi0jaWYgRU5BQkxFKENTU19SRUdJT05TKQotICAgICAgICAgICAg
fHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUF2b2lkUmVnaW9uCi0jZW5kaWYKLSAgICAgICAgOworICAg
ICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZUF1dG8gfHwgdmFsdWVJRCA9PSBDU1NWYWx1
ZUF2b2lkIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVBdm9pZFBhZ2UgfHwgdmFsdWVJRCA9PSBDU1NW
YWx1ZUF2b2lkQ29sdW1uOwogICAgIGNhc2UgQ1NTUHJvcGVydHlQb2ludGVyRXZlbnRzOgogICAg
ICAgICAvLyBub25lIHwgdmlzaWJsZVBhaW50ZWQgfCB2aXNpYmxlRmlsbCB8IHZpc2libGVTdHJv
a2UgfCB2aXNpYmxlIHwKICAgICAgICAgLy8gcGFpbnRlZCB8IGZpbGwgfCBzdHJva2UgfCBhdXRv
IHwgYWxsIHwgYm91bmRpbmctYm94CkBAIC03ODMsMTAgKzc3NSw2IEBAIGJvb2wgQ1NTUGFyc2Vy
RmFzdFBhdGhzOjppc1ZhbGlkS2V5d29yZFAKICAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NT
VmFsdWVOb3JtYWwgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUJyZWFrQWxsIHx8IHZhbHVlSUQgPT0g
Q1NTVmFsdWVLZWVwQWxsIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVCcmVha1dvcmQ7CiAgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckZpdDoKICAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0g
Q1NTVmFsdWVCb3JkZXIgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUxpbmVzOwotI2lmIEVOQUJMRShD
U1NfUkVHSU9OUykKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0UmVnaW9uRnJhZ21lbnQ6Ci0g
ICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlQXV0byB8fCB2YWx1ZUlEID09IENTU1Zh
bHVlQnJlYWs7Ci0jZW5kaWYKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogICAgIGNhc2UgQ1NT
UHJvcGVydHlUb3VjaEFjdGlvbjogLy8gYXV0byB8IG1hbmlwdWxhdGlvbgogICAgICAgICByZXR1
cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZUF1dG8gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU1hbmlwdWxh
dGlvbjsKQEAgLTk3Niw5ICs5NjQsNiBAQCBib29sIENTU1BhcnNlckZhc3RQYXRoczo6aXNLZXl3
b3JkUHJvcGVyCiAjaWYgRU5BQkxFKEFDQ0VMRVJBVEVEX09WRVJGTE9XX1NDUk9MTElORykKICAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0T3ZlcmZsb3dTY3JvbGxpbmc6CiAjZW5kaWYKLSNpZiBF
TkFCTEUoQ1NTX1JFR0lPTlMpCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFJlZ2lvbkZyYWdt
ZW50OgotI2VuZGlmCiAjaWYgRU5BQkxFKENTUzNfVEVYVCkKICAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0VGV4dEFsaWduTGFzdDoKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dEp1c3Rp
Znk6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckltcGwuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VySW1wbC5jcHAJ
KHJldmlzaW9uIDIyMjI1NykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2Vy
SW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1MiwxMCArNDUyLDYgQEAgUmVmUHRyPFN0eWxl
UnVsZUJhc2U+IENTU1BhcnNlckltcGw6OmNvbgogICAgICAgICByZXR1cm4gY29uc3VtZUtleWZy
YW1lc1J1bGUoZmFsc2UsIHByZWx1ZGUsIGJsb2NrKTsKICAgICBjYXNlIENTU0F0UnVsZVBhZ2U6
CiAgICAgICAgIHJldHVybiBjb25zdW1lUGFnZVJ1bGUocHJlbHVkZSwgYmxvY2spOwotI2lmIEVO
QUJMRShDU1NfUkVHSU9OUykKLSAgICBjYXNlIENTU0F0UnVsZVdlYmtpdFJlZ2lvbjoKLSAgICAg
ICAgcmV0dXJuIGNvbnN1bWVSZWdpb25SdWxlKHByZWx1ZGUsIGJsb2NrKTsKLSNlbmRpZgogICAg
IGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBudWxscHRyOyAvLyBQYXJzZSBlcnJvciwgdW5yZWNv
Z25pc2VkIGF0LXJ1bGUgd2l0aCBibG9jawogICAgIH0KQEAgLTY3NywzMiArNjczLDYgQEAgUmVm
UHRyPFN0eWxlUnVsZVBhZ2U+IENTU1BhcnNlckltcGw6OmNvbgogICAgIHJldHVybiBwYWdlOwog
fQogCi0jaWYgRU5BQkxFKENTU19SRUdJT05TKQotUmVmUHRyPFN0eWxlUnVsZVJlZ2lvbj4gQ1NT
UGFyc2VySW1wbDo6Y29uc3VtZVJlZ2lvblJ1bGUoQ1NTUGFyc2VyVG9rZW5SYW5nZSBwcmVsdWRl
LCBDU1NQYXJzZXJUb2tlblJhbmdlIGJsb2NrKQotewotICAgIENTU1NlbGVjdG9yTGlzdCBzZWxl
Y3Rvckxpc3QgPSBDU1NTZWxlY3RvclBhcnNlcjo6cGFyc2VTZWxlY3RvcihwcmVsdWRlLCBtX2Nv
bnRleHQsIG1fc3R5bGVTaGVldC5nZXQoKSk7Ci0gICAgaWYgKCFzZWxlY3Rvckxpc3QuaXNWYWxp
ZCgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsgLy8gUGFyc2UgZXJyb3IsIGludmFsaWQgc2Vs
ZWN0b3IgbGlzdAotCi0gICAgaWYgKG1fb2JzZXJ2ZXJXcmFwcGVyKSB7Ci0gICAgICAgIG1fb2Jz
ZXJ2ZXJXcmFwcGVyLT5vYnNlcnZlcigpLnN0YXJ0UnVsZUhlYWRlcihTdHlsZVJ1bGU6OlJlZ2lv
biwgbV9vYnNlcnZlcldyYXBwZXItPnN0YXJ0T2Zmc2V0KHByZWx1ZGUpKTsKLSAgICAgICAgbV9v
YnNlcnZlcldyYXBwZXItPm9ic2VydmVyKCkuZW5kUnVsZUhlYWRlcihtX29ic2VydmVyV3JhcHBl
ci0+ZW5kT2Zmc2V0KHByZWx1ZGUpKTsKLSAgICAgICAgbV9vYnNlcnZlcldyYXBwZXItPm9ic2Vy
dmVyKCkuc3RhcnRSdWxlQm9keShtX29ic2VydmVyV3JhcHBlci0+cHJldmlvdXNUb2tlblN0YXJ0
T2Zmc2V0KGJsb2NrKSk7Ci0gICAgfQotICAgIAotICAgIFZlY3RvcjxSZWZQdHI8U3R5bGVSdWxl
QmFzZT4+IHJ1bGVzOwotICAgIGNvbnN1bWVSdWxlTGlzdChibG9jaywgUmVndWxhclJ1bGVMaXN0
LCBbJnJ1bGVzXShSZWZQdHI8U3R5bGVSdWxlQmFzZT4gcnVsZSkgewotICAgICAgICBydWxlcy5h
cHBlbmQocnVsZSk7Ci0gICAgfSk7Ci0gICAgCi0gICAgaWYgKG1fb2JzZXJ2ZXJXcmFwcGVyKQot
ICAgICAgICBtX29ic2VydmVyV3JhcHBlci0+b2JzZXJ2ZXIoKS5lbmRSdWxlQm9keShtX29ic2Vy
dmVyV3JhcHBlci0+ZW5kT2Zmc2V0KGJsb2NrKSk7Ci0gICAgCi0gICAgcmV0dXJuIFN0eWxlUnVs
ZVJlZ2lvbjo6Y3JlYXRlKHNlbGVjdG9yTGlzdCwgcnVsZXMpOwotCi19Ci0jZW5kaWYKLQogLy8g
RklYTUUtTkVXUEFSU0VSOiBTdXBwb3J0ICJhcHBseSIKIC8qdm9pZCBDU1NQYXJzZXJJbXBsOjpj
b25zdW1lQXBwbHlSdWxlKENTU1BhcnNlclRva2VuUmFuZ2UgcHJlbHVkZSkKIHsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VySW1wbC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VySW1wbC5oCShyZXZpc2lvbiAyMjIyNTcp
CisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckltcGwuaAkod29ya2luZyBj
b3B5KQpAQCAtMTMyLDEwICsxMzIsNiBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxTdHlsZVJ1bGVG
b250RmFjZT4gY29uc3VtZUZvbnRGYWNlUnVsZShDU1NQYXJzZXJUb2tlblJhbmdlIHByZWx1ZGUs
IENTU1BhcnNlclRva2VuUmFuZ2UgYmxvY2spOwogICAgIFJlZlB0cjxTdHlsZVJ1bGVLZXlmcmFt
ZXM+IGNvbnN1bWVLZXlmcmFtZXNSdWxlKGJvb2wgd2Via2l0UHJlZml4ZWQsIENTU1BhcnNlclRv
a2VuUmFuZ2UgcHJlbHVkZSwgQ1NTUGFyc2VyVG9rZW5SYW5nZSBibG9jayk7CiAgICAgUmVmUHRy
PFN0eWxlUnVsZVBhZ2U+IGNvbnN1bWVQYWdlUnVsZShDU1NQYXJzZXJUb2tlblJhbmdlIHByZWx1
ZGUsIENTU1BhcnNlclRva2VuUmFuZ2UgYmxvY2spOwotI2lmIEVOQUJMRShDU1NfUkVHSU9OUykK
LSAgICBSZWZQdHI8U3R5bGVSdWxlUmVnaW9uPiBjb25zdW1lUmVnaW9uUnVsZShDU1NQYXJzZXJU
b2tlblJhbmdlIHByZWx1ZGUsIENTU1BhcnNlclRva2VuUmFuZ2UgYmxvY2spOwotI2VuZGlmCi0g
ICAgLy8gVXBkYXRlcyBtX3BhcnNlZFByb3BlcnRpZXMKICAgICAKICAgICAvLyBGSVhNRS1ORVdQ
QVJTRVI6IFN1cHBvcnQgImFwcGx5IgogICAgIC8vIHZvaWQgY29uc3VtZUFwcGx5UnVsZShDU1NQ
YXJzZXJUb2tlblJhbmdlIHByZWx1ZGUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL3BhcnNl
ci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3Nz
L3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAJKHJldmlzaW9uIDIyMjI1NykKKysrIFNvdXJj
ZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yOTAsMTEgKzI5MCw2IEBAIHN0YXRpYyBib29sIGlzTGVnYWN5QnJlYWtQcm9wZXJ0eShD
U1NQcm8KICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Q29sdW1uQnJlYWtBZnRlcjoKICAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0Q29sdW1uQnJlYWtCZWZvcmU6CiAgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdENvbHVtbkJyZWFrSW5zaWRlOgotI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKLSAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0UmVnaW9uQnJlYWtBZnRlcjoKLSAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0UmVnaW9uQnJlYWtCZWZvcmU6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dFJlZ2lvbkJyZWFrSW5zaWRlOgotI2VuZGlmCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGRl
ZmF1bHQ6CiAgICAgICAgIGJyZWFrOwpAQCAtMzQ5OCwxOCArMzQ5Myw2IEBAIHN0YXRpYyBSZWZQ
dHI8Q1NTVmFsdWU+IGNvbnN1bWVHcmlkVGVtcGwKICAgICByZXR1cm4gQ1NTR3JpZFRlbXBsYXRl
QXJlYXNWYWx1ZTo6Y3JlYXRlKGdyaWRBcmVhTWFwLCByb3dDb3VudCwgY29sdW1uQ291bnQpOwog
fQogCi0jaWYgRU5BQkxFKENTU19SRUdJT05TKQotc3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4gY29u
c3VtZUZsb3dQcm9wZXJ0eShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKLXsKLSAgICBSZWZQ
dHI8Q1NTVmFsdWU+IHJlc3VsdDsKLSAgICBpZiAocmFuZ2UucGVlaygpLmlkKCkgPT0gQ1NTVmFs
dWVOb25lKQotICAgICAgICByZXN1bHQgPSBjb25zdW1lSWRlbnQocmFuZ2UpOwotICAgIGVsc2UK
LSAgICAgICAgcmVzdWx0ID0gY29uc3VtZUN1c3RvbUlkZW50KHJhbmdlKTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotI2VuZGlmCi0KIHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVMaW5l
Qm94Q29udGFpbihDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKIHsKICAgICBpZiAocmFuZ2Uu
cGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVOb25lKQpAQCAtNDI1MywxMSArNDIzNiw2IEBAIFJlZlB0
cjxDU1NWYWx1ZT4gQ1NTUHJvcGVydHlQYXJzZXI6OnBhcnMKICAgICAgICAgaWYgKCFtX2NvbnRl
eHQuY3NzR3JpZExheW91dEVuYWJsZWQpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICAgICAgcmV0dXJuIGNvbnN1bWVHcmlkQXV0b0Zsb3cobV9yYW5nZSk7Ci0jaWYgRU5BQkxFKENT
U19SRUdJT05TKQotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRGbG93SW50bzoKLSAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0Rmxvd0Zyb206Ci0gICAgICAgIHJldHVybiBjb25zdW1lRmxvd1By
b3BlcnR5KG1fcmFuZ2UpOwotI2VuZGlmCiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdExpbmVH
cmlkOgogICAgICAgICByZXR1cm4gY29uc3VtZUxpbmVHcmlkKG1fcmFuZ2UpOwogICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRJbml0aWFsTGV0dGVyOgpAQCAtNTAwMSwxOSArNDk3OSw2IEBAIHN0
YXRpYyBpbmxpbmUgQ1NTVmFsdWVJRCBtYXBGcm9tQ29sdW1uQnIKICAgICByZXR1cm4gQ1NTVmFs
dWVJbnZhbGlkOwogfQogCi0jaWYgRU5BQkxFKENTU19SRUdJT05TKQotc3RhdGljIGlubGluZSBD
U1NWYWx1ZUlEIG1hcEZyb21SZWdpb25CcmVha0JldHdlZW4oQ1NTVmFsdWVJRCB2YWx1ZSkKLXsK
LSAgICBpZiAodmFsdWUgPT0gQ1NTVmFsdWVBbHdheXMpCi0gICAgICAgIHJldHVybiBDU1NWYWx1
ZVJlZ2lvbjsKLSAgICBpZiAodmFsdWUgPT0gQ1NTVmFsdWVBdXRvKQotICAgICAgICByZXR1cm4g
dmFsdWU7Ci0gICAgaWYgKHZhbHVlID09IENTU1ZhbHVlQXZvaWQpCi0gICAgICAgIHJldHVybiBD
U1NWYWx1ZUF2b2lkUmVnaW9uOwotICAgIHJldHVybiBDU1NWYWx1ZUludmFsaWQ7Ci19Ci0jZW5k
aWYKLQogc3RhdGljIGlubGluZSBDU1NWYWx1ZUlEIG1hcEZyb21Db2x1bW5SZWdpb25PclBhZ2VC
cmVha0luc2lkZShDU1NWYWx1ZUlEIHZhbHVlKQogewogICAgIGlmICh2YWx1ZSA9PSBDU1NWYWx1
ZUF1dG8gfHwgdmFsdWUgPT0gQ1NTVmFsdWVBdm9pZCkKQEAgLTUwMjcsMTUgKzQ5OTIsNyBAQCBz
dGF0aWMgaW5saW5lIENTU1Byb3BlcnR5SUQgbWFwRnJvbUxlZ2FjCiAgICAgICAgIHJldHVybiBD
U1NQcm9wZXJ0eUJyZWFrQWZ0ZXI7CiAgICAgaWYgKHByb3BlcnR5ID09IENTU1Byb3BlcnR5UGFn
ZUJyZWFrQmVmb3JlIHx8IHByb3BlcnR5ID09IENTU1Byb3BlcnR5V2Via2l0Q29sdW1uQnJlYWtC
ZWZvcmUpCiAgICAgICAgIHJldHVybiBDU1NQcm9wZXJ0eUJyZWFrQmVmb3JlOwotI2lmIEVOQUJM
RShDU1NfUkVHSU9OUykKLSAgICBpZiAocHJvcGVydHkgPT0gQ1NTUHJvcGVydHlXZWJraXRSZWdp
b25CcmVha0FmdGVyKQotICAgICAgICByZXR1cm4gQ1NTUHJvcGVydHlCcmVha0FmdGVyOwotICAg
IGlmIChwcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eVdlYmtpdFJlZ2lvbkJyZWFrQmVmb3JlKQotICAg
ICAgICByZXR1cm4gQ1NTUHJvcGVydHlCcmVha0JlZm9yZTsKLSAgICBBU1NFUlQocHJvcGVydHkg
PT0gQ1NTUHJvcGVydHlQYWdlQnJlYWtJbnNpZGUgfHwgcHJvcGVydHkgPT0gQ1NTUHJvcGVydHlX
ZWJraXRDb2x1bW5CcmVha0luc2lkZSB8fCBwcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eVdlYmtpdFJl
Z2lvbkJyZWFrSW5zaWRlKTsKLSNlbHNlCiAgICAgQVNTRVJUKHByb3BlcnR5ID09IENTU1Byb3Bl
cnR5UGFnZUJyZWFrSW5zaWRlIHx8IHByb3BlcnR5ID09IENTU1Byb3BlcnR5V2Via2l0Q29sdW1u
QnJlYWtJbnNpZGUpOwotI2VuZGlmCiAgICAgcmV0dXJuIENTU1Byb3BlcnR5QnJlYWtJbnNpZGU7
CiB9CiAKQEAgLTUwNTksMTMgKzUwMTYsNiBAQCBib29sIENTU1Byb3BlcnR5UGFyc2VyOjpjb25z
dW1lTGVnYWN5QnJlCiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbkJyZWFrQmVmb3Jl
OgogICAgICAgICB2YWx1ZSA9IG1hcEZyb21Db2x1bW5CcmVha0JldHdlZW4odmFsdWUpOwogICAg
ICAgICBicmVhazsKLSNpZiBFTkFCTEUoQ1NTX1JFR0lPTlMpCi0gICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdFJlZ2lvbkJyZWFrQWZ0ZXI6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFJlZ2lv
bkJyZWFrQmVmb3JlOgotICAgICAgICB2YWx1ZSA9IG1hcEZyb21SZWdpb25CcmVha0JldHdlZW4o
dmFsdWUpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0UmVnaW9u
QnJlYWtJbnNpZGU6Ci0jZW5kaWYKICAgICBjYXNlIENTU1Byb3BlcnR5UGFnZUJyZWFrSW5zaWRl
OgogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5CcmVha0luc2lkZToKICAgICAgICAg
dmFsdWUgPSBtYXBGcm9tQ29sdW1uUmVnaW9uT3JQYWdlQnJlYWtJbnNpZGUodmFsdWUpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcAkocmV2aXNpb24gMjIyMjU3KQorKysg
U291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MDgsOSArMTA4LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGRlc3Ryb3lSZW5kZXJUcmVlSWZOZQog
ewogICAgIGJvb2wgaXNFbGVtZW50ID0gaXM8RWxlbWVudD4oY2hpbGQpOwogICAgIGF1dG8gaGFz
RGlzcGxheUNvbnRlbnRzID0gaXNFbGVtZW50ICYmIGRvd25jYXN0PEVsZW1lbnQ+KGNoaWxkKS5o
YXNEaXNwbGF5Q29udGVudHMoKTsKLSAgICBhdXRvIGlzTmFtZWRGbG93RWxlbWVudCA9IGlzRWxl
bWVudCAmJiBkb3duY2FzdDxFbGVtZW50PihjaGlsZCkuaXNOYW1lZEZsb3dDb250ZW50RWxlbWVu
dCgpOwotICAgIC8vIEZJWE1FOiBHZXQgcmlkIG9mIHRoZSBuYW1lZCBmbG93IHRlc3QuCi0gICAg
aWYgKCFjaGlsZC5yZW5kZXJlcigpICYmICFoYXNEaXNwbGF5Q29udGVudHMgJiYgIWlzTmFtZWRG
bG93RWxlbWVudCkKKyAgICBpZiAoIWNoaWxkLnJlbmRlcmVyKCkgJiYgIWhhc0Rpc3BsYXlDb250
ZW50cykKICAgICAgICAgcmV0dXJuOwogICAgIGlmIChpc0VsZW1lbnQpCiAgICAgICAgIFJlbmRl
clRyZWVVcGRhdGVyOjp0ZWFyRG93blJlbmRlcmVycyhkb3duY2FzdDxFbGVtZW50PihjaGlsZCkp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RPTUFsbEluT25lLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9kb20vRE9NQWxsSW5PbmUuY3BwCShyZXZpc2lvbiAyMjIyNTcpCisr
KyBTb3VyY2UvV2ViQ29yZS9kb20vRE9NQWxsSW5PbmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
OSw3ICs0OSw2IEBACiAjaW5jbHVkZSAiRE9NRXJyb3IuY3BwIgogI2luY2x1ZGUgIkRPTUV4Y2Vw
dGlvbi5jcHAiCiAjaW5jbHVkZSAiRE9NSW1wbGVtZW50YXRpb24uY3BwIgotI2luY2x1ZGUgIkRP
TU5hbWVkRmxvd0NvbGxlY3Rpb24uY3BwIgogI2luY2x1ZGUgIkRPTVN0cmluZ0xpc3QuY3BwIgog
I2luY2x1ZGUgIkRhdGFUcmFuc2Zlci5jcHAiCiAjaW5jbHVkZSAiRGF0YVRyYW5zZmVySXRlbS5j
cHAiCkBAIC0xMDIsNyArMTAxLDYgQEAKICNpbmNsdWRlICJNdXRhdGlvbk9ic2VydmVyUmVnaXN0
cmF0aW9uLmNwcCIKICNpbmNsdWRlICJNdXRhdGlvblJlY29yZC5jcHAiCiAjaW5jbHVkZSAiTmFt
ZU5vZGVMaXN0LmNwcCIKLSNpbmNsdWRlICJOYW1lZEZsb3dDb2xsZWN0aW9uLmNwcCIKICNpbmNs
dWRlICJOYW1lZE5vZGVNYXAuY3BwIgogI2luY2x1ZGUgIk5vZGUuY3BwIgogI2luY2x1ZGUgIk5v
ZGVGaWx0ZXJDb25kaXRpb24uY3BwIgpAQCAtMTU4LDcgKzE1Niw2IEBACiAjaW5jbHVkZSAiVmll
d3BvcnRBcmd1bWVudHMuY3BwIgogI2luY2x1ZGUgIlZpc2l0ZWRMaW5rU3RhdGUuY3BwIgogI2lu
Y2x1ZGUgIldlYktpdEFuaW1hdGlvbkV2ZW50LmNwcCIKLSNpbmNsdWRlICJXZWJLaXROYW1lZEZs
b3cuY3BwIgogI2luY2x1ZGUgIldlYktpdFRyYW5zaXRpb25FdmVudC5jcHAiCiAjaW5jbHVkZSAi
V2hlZWxFdmVudC5jcHAiCiAjaW5jbHVkZSAiWE1MRG9jdW1lbnRQYXJzZXIuY3BwIgpJbmRleDog
U291cmNlL1dlYkNvcmUvZG9tL0RPTU5hbWVkRmxvd0NvbGxlY3Rpb24uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9ET01OYW1lZEZsb3dDb2xsZWN0aW9uLmNwcAkocmV2aXNp
b24gMjIyMjU3KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RPTU5hbWVkRmxvd0NvbGxlY3Rpb24u
Y3BwCShub25leGlzdGVudCkKQEAgLTEsOTMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMiBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
IENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZQotICogICAgY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcK
LSAqICAgIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZwotICogICAgZGlzY2xhaW1lciBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzCi0gKiAgICBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUiAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQgSE9MREVSIEJFCi0gKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksCi0gKiBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SCi0gKiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YKLSAqIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgotICogU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkRPTU5hbWVkRmxvd0NvbGxlY3Rp
b24uaCIKLQotI2luY2x1ZGUgIldlYktpdE5hbWVkRmxvdy5oIgotI2luY2x1ZGUgPHd0Zi90ZXh0
L0F0b21pY1N0cmluZ0hhc2guaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1pbmxpbmUgRE9N
TmFtZWRGbG93Q29sbGVjdGlvbjo6RE9NTmFtZWRGbG93Q29sbGVjdGlvbihWZWN0b3I8UmVmPFdl
YktpdE5hbWVkRmxvdz4+JiYgZmxvd3MpCi0gICAgOiBtX2Zsb3dzKFdURk1vdmUoZmxvd3MpKQot
ewotfQotCi1SZWY8RE9NTmFtZWRGbG93Q29sbGVjdGlvbj4gRE9NTmFtZWRGbG93Q29sbGVjdGlv
bjo6Y3JlYXRlKFZlY3RvcjxSZWY8V2ViS2l0TmFtZWRGbG93Pj4mJiBmbG93cykKLXsKLSAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBET01OYW1lZEZsb3dDb2xsZWN0aW9uKFdURk1vdmUoZmxvd3Mp
KSk7Ci19Ci0KLURPTU5hbWVkRmxvd0NvbGxlY3Rpb246On5ET01OYW1lZEZsb3dDb2xsZWN0aW9u
KCkKLXsKLX0KLQotV2ViS2l0TmFtZWRGbG93KiBET01OYW1lZEZsb3dDb2xsZWN0aW9uOjppdGVt
KHVuc2lnbmVkIGluZGV4KSBjb25zdAotewotICAgIGlmIChpbmRleCA+PSBtX2Zsb3dzLnNpemUo
KSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIGNvbnN0X2Nhc3Q8V2ViS2l0
TmFtZWRGbG93Kj4obV9mbG93c1tpbmRleF0ucHRyKCkpOwotfQotCi1zdHJ1Y3QgRE9NTmFtZWRG
bG93Q29sbGVjdGlvbjo6SGFzaEZ1bmN0aW9ucyB7Ci0gICAgc3RhdGljIHVuc2lnbmVkIGhhc2go
Y29uc3QgV2ViS2l0TmFtZWRGbG93KiBrZXkpIHsgcmV0dXJuIEF0b21pY1N0cmluZ0hhc2g6Omhh
c2goa2V5LT5uYW1lKCkpOyB9Ci0gICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgV2ViS2l0TmFt
ZWRGbG93KiBhLCBjb25zdCBXZWJLaXROYW1lZEZsb3cqIGIpIHsgcmV0dXJuIGEtPm5hbWUoKSA9
PSBiLT5uYW1lKCk7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0
eU9yRGVsZXRlZCA9IGZhbHNlOwotCi0gICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgQXRv
bWljU3RyaW5nJiBrZXkpIHsgcmV0dXJuIEF0b21pY1N0cmluZ0hhc2g6Omhhc2goa2V5KTsgfQot
ICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFdlYktpdE5hbWVkRmxvdyogYSwgY29uc3QgQXRv
bWljU3RyaW5nJiBiKSB7IHJldHVybiBhLT5uYW1lKCkgPT0gYjsgfQotfTsKLQotV2ViS2l0TmFt
ZWRGbG93KiBET01OYW1lZEZsb3dDb2xsZWN0aW9uOjpuYW1lZEl0ZW0oY29uc3QgQXRvbWljU3Ry
aW5nJiBuYW1lKSBjb25zdAotewotICAgIGlmIChtX2Zsb3dzQnlOYW1lLmlzRW1wdHkoKSkgewot
ICAgICAgICAvLyBObyBuZWVkIHRvIG9wdGltaXplIHRoZSBjYXNlIHdoZXJlIG1fZmxvd3MgaXMg
ZW1wdHk7IHdpbGwgZG8gbm90aGluZyB2ZXJ5IHF1aWNrbHkuCi0gICAgICAgIGZvciAoYXV0byYg
ZmxvdyA6IG1fZmxvd3MpCi0gICAgICAgICAgICBtX2Zsb3dzQnlOYW1lLmFkZChjb25zdF9jYXN0
PFdlYktpdE5hbWVkRmxvdyo+KGZsb3cucHRyKCkpKTsKLSAgICB9Ci0gICAgYXV0byBpdCA9IG1f
Zmxvd3NCeU5hbWUuZmluZDxIYXNoRnVuY3Rpb25zPihuYW1lKTsKLSAgICBpZiAoaXQgPT0gbV9m
bG93c0J5TmFtZS5lbmQoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuICpp
dDsKLX0KLQotY29uc3QgVmVjdG9yPEF0b21pY1N0cmluZz4mIERPTU5hbWVkRmxvd0NvbGxlY3Rp
b246OnN1cHBvcnRlZFByb3BlcnR5TmFtZXMoKQotewotICAgIGlmIChtX2Zsb3dOYW1lcy5pc0Vt
cHR5KCkpIHsKLSAgICAgICAgLy8gTm8gbmVlZCB0byBvcHRpbWl6ZSB0aGUgY2FzZSB3aGVyZSBt
X2Zsb3dzIGlzIGVtcHR5OyB3aWxsIGRvIG5vdGhpbmcgcmVsYXRpdmVseSBxdWlja2x5LgotICAg
ICAgICBtX2Zsb3dOYW1lcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1fZmxvd3Muc2l6ZSgpKTsK
LSAgICAgICAgZm9yIChhdXRvJiBmbG93IDogbV9mbG93cykKLSAgICAgICAgICAgIG1fZmxvd05h
bWVzLnVuY2hlY2tlZEFwcGVuZChmbG93LT5uYW1lKCkpOwotICAgIH0KLSAgICByZXR1cm4gbV9m
bG93TmFtZXM7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2RvbS9ET01OYW1lZEZsb3dDb2xsZWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvZG9tL0RPTU5hbWVkRmxvd0NvbGxlY3Rpb24uaAkocmV2aXNpb24gMjIyMjU3KQorKysg
U291cmNlL1dlYkNvcmUvZG9tL0RPTU5hbWVkRmxvd0NvbGxlY3Rpb24uaAkobm9uZXhpc3RlbnQp
CkBAIC0xLDY3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgQWRvYmUgU3lzdGVt
cyBJbmNvcnBvcmF0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUKLSAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCi0gKiAgICBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQotICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcKLSAqICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscwotICogICAgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVIgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERF
UiBCRQotICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLAotICogT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUgotICog
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GCi0gKiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YKLSAqIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25j
ZQotCi0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgot
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFdlYktpdE5hbWVkRmxvdzsKLQotY2xhc3MgRE9N
TmFtZWRGbG93Q29sbGVjdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPERPTU5hbWVkRmxvd0NvbGxl
Y3Rpb24+IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPERPTU5hbWVkRmxvd0NvbGxlY3Rpb24+
IGNyZWF0ZShWZWN0b3I8UmVmPFdlYktpdE5hbWVkRmxvdz4+JiYpOwotICAgIH5ET01OYW1lZEZs
b3dDb2xsZWN0aW9uKCk7Ci0KLSAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdDsKLSAgICBXZWJL
aXROYW1lZEZsb3cqIGl0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0OwotICAgIFdlYktpdE5hbWVk
RmxvdyogbmFtZWRJdGVtKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkgY29uc3Q7Ci0gICAgY29u
c3QgVmVjdG9yPEF0b21pY1N0cmluZz4mIHN1cHBvcnRlZFByb3BlcnR5TmFtZXMoKTsKLQotcHJp
dmF0ZToKLSAgICBzdHJ1Y3QgSGFzaEZ1bmN0aW9uczsKLQotICAgIGV4cGxpY2l0IERPTU5hbWVk
Rmxvd0NvbGxlY3Rpb24oVmVjdG9yPFJlZjxXZWJLaXROYW1lZEZsb3c+PiYmKTsKLQotICAgIGNv
bnN0IFZlY3RvcjxSZWY8V2ViS2l0TmFtZWRGbG93Pj4gbV9mbG93czsKLSAgICBtdXRhYmxlIEhh
c2hTZXQ8V2ViS2l0TmFtZWRGbG93KiwgSGFzaEZ1bmN0aW9ucz4gbV9mbG93c0J5TmFtZTsKLSAg
ICBtdXRhYmxlIFZlY3RvcjxBdG9taWNTdHJpbmc+IG1fZmxvd05hbWVzOwotfTsKLQotaW5saW5l
IHVuc2lnbmVkIERPTU5hbWVkRmxvd0NvbGxlY3Rpb246Omxlbmd0aCgpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIG1fZmxvd3Muc2l6ZSgpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9kb20vRE9NTmFtZWRGbG93Q29sbGVjdGlvbi5pZGwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RPTU5hbWVkRmxvd0NvbGxlY3Rpb24uaWRsCShyZXZp
c2lvbiAyMjIyNTcpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRE9NTmFtZWRGbG93Q29sbGVjdGlv
bi5pZGwJKG5vbmV4aXN0ZW50KQpAQCAtMSw0MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDEyIEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUKLSAqICAg
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nCi0gKiAgICBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKLSAqICAgIGRpc2NsYWltZXIg
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscwotICogICAgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVIgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQot
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUIEhPTERFUiBCRQotICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLAotICogT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgot
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUgotICogVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GCi0gKiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKLSAqIFNVQ0ggREFNQUdF
LgotICovCi0KLVsKLSAgICBDb25kaXRpb25hbD1DU1NfUkVHSU9OUywKLSAgICBJbXBsZW1lbnRh
dGlvbkxhY2tzVlRhYmxlLAotICAgIEludGVyZmFjZU5hbWU9V2ViS2l0TmFtZWRGbG93Q29sbGVj
dGlvbiwKLSAgICBKU0dlbmVyYXRlVG9KU09iamVjdCwKLSAgICBMZWdhY3lVbmVudW1lcmFibGVO
YW1lZFByb3BlcnRpZXMsCi0gICAgTm9JbnRlcmZhY2VPYmplY3QKLV0gaW50ZXJmYWNlIERPTU5h
bWVkRmxvd0NvbGxlY3Rpb24gewotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25n
IGxlbmd0aDsKLSAgICBnZXR0ZXIgV2ViS2l0TmFtZWRGbG93PyBpdGVtKHVuc2lnbmVkIGxvbmcg
aW5kZXgpOwotICAgIGdldHRlciBXZWJLaXROYW1lZEZsb3c/IG5hbWVkSXRlbShET01TdHJpbmcg
bmFtZSk7Ci19OwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCShyZXZpc2lvbiAyMjIyNTcp
CisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01
MSw3ICs1MSw2IEBACiAjaW5jbHVkZSAiQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5LmgiCiAjaW5jbHVk
ZSAiQ3VzdG9tRXZlbnQuaCIKICNpbmNsdWRlICJET01JbXBsZW1lbnRhdGlvbi5oIgotI2luY2x1
ZGUgIkRPTU5hbWVkRmxvd0NvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJET01XaW5kb3cuaCIKICNp
bmNsdWRlICJEYXRlQ29tcG9uZW50cy5oIgogI2luY2x1ZGUgIkRlYnVnUGFnZU92ZXJsYXlzLmgi
CkBAIC0xMTgsNyArMTE3LDYgQEAKICNpbmNsdWRlICJNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1
bHRzLmgiCiAjaW5jbHVkZSAiTXV0YXRpb25FdmVudC5oIgogI2luY2x1ZGUgIk5hbWVOb2RlTGlz
dC5oIgotI2luY2x1ZGUgIk5hbWVkRmxvd0NvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJOYXZpZ2F0
aW9uRGlzYWJsZXIuaCIKICNpbmNsdWRlICJOYXZpZ2F0aW9uU2NoZWR1bGVyLmgiCiAjaW5jbHVk
ZSAiTmVzdGluZ0xldmVsSW5jcmVtZW50ZXIuaCIKQEAgLTExNTMsMjggKzExNTEsNiBAQCBib29s
IERvY3VtZW50Ojppc0NTU0dyaWRMYXlvdXRFbmFibGVkKCkgCiAgICAgcmV0dXJuIFJ1bnRpbWVF
bmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuaXNDU1NHcmlkTGF5b3V0RW5hYmxlZCgp
OwogfQogCi0jaWYgRU5BQkxFKENTU19SRUdJT05TKQotCi1SZWZQdHI8RE9NTmFtZWRGbG93Q29s
bGVjdGlvbj4gRG9jdW1lbnQ6OndlYmtpdEdldE5hbWVkRmxvd3MoKQotewotICAgIGlmICghcmVu
ZGVyVmlldygpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIHVwZGF0ZVN0eWxlSWZO
ZWVkZWQoKTsKLQotICAgIHJldHVybiBuYW1lZEZsb3dzKCkuY3JlYXRlQ1NTT01TbmFwc2hvdCgp
OwotfQotCi0jZW5kaWYKLQotTmFtZWRGbG93Q29sbGVjdGlvbiYgRG9jdW1lbnQ6Om5hbWVkRmxv
d3MoKQotewotICAgIGlmICghbV9uYW1lZEZsb3dzKQotICAgICAgICBtX25hbWVkRmxvd3MgPSBO
YW1lZEZsb3dDb2xsZWN0aW9uOjpjcmVhdGUodGhpcyk7Ci0KLSAgICByZXR1cm4gKm1fbmFtZWRG
bG93czsKLX0KLQogRXhjZXB0aW9uT3I8UmVmPEVsZW1lbnQ+PiBEb2N1bWVudDo6Y3JlYXRlRWxl
bWVudE5TKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZXNwYWNlVVJJLCBjb25zdCBTdHJpbmcmIHF1
YWxpZmllZE5hbWUpCiB7CiAgICAgYXV0byBwYXJzZVJlc3VsdCA9IHBhcnNlUXVhbGlmaWVkTmFt
ZShuYW1lc3BhY2VVUkksIHF1YWxpZmllZE5hbWUpOwpAQCAtMjAzNiwxMCArMjAxMiw4IEBAIGJv
b2wgRG9jdW1lbnQ6OnVwZGF0ZUxheW91dElmRGltZW5zaW9uc08KICAgICB1cGRhdGVTdHlsZUlm
TmVlZGVkKCk7CiAKICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gZWxlbWVudC5yZW5kZXJl
cigpOwotICAgIGlmICghcmVuZGVyZXIgfHwgcmVuZGVyZXItPm5lZWRzTGF5b3V0KCkgfHwgZWxl
bWVudC5yZW5kZXJOYW1lZEZsb3dGcmFnbWVudCgpKSB7CisgICAgaWYgKCFyZW5kZXJlciB8fCBy
ZW5kZXJlci0+bmVlZHNMYXlvdXQoKSkgewogICAgICAgICAvLyBJZiB3ZSBkb24ndCBoYXZlIGEg
cmVuZGVyZXIgb3IgaWYgdGhlIHJlbmRlcmVyIG5lZWRzIGxheW91dCBmb3IgYW55IHJlYXNvbiwg
Z2l2ZSB1cC4KLSAgICAgICAgLy8gTmFtZWQgZmxvd3MgY2FuIGhhdmUgYXV0byBoZWlnaHQsIHNv
IGRvbid0IHRyeSB0byBlbmZvcmNlIHRoZSBvcHRpbWl6YXRpb24gaW4gdGhpcyBjYXNlLgotICAg
ICAgICAvLyBUaGUgMi1wYXNzIG5hdHVyZSBvZiBhdXRvIGhlaWdodCBuYW1lZCBmbG93IGxheW91
dCBtZWFucyB0aGUgcmVnaW9uIG1heSBub3QgYmUgZGlydHkgeWV0LgogICAgICAgICByZXF1aXJl
RnVsbExheW91dCA9IHRydWU7CiAgICAgfQogCkBAIC0yMDg1LDcgKzIwNTksNyBAQCBib29sIERv
Y3VtZW50Ojp1cGRhdGVMYXlvdXRJZkRpbWVuc2lvbnNPCiAgICAgICAgICAgICBpZiAoIWN1cnJl
bnRCb3gtPmlzUmVuZGVyQmxvY2tGbG93KCkgfHwgY3VycmVudEJveC0+Zmxvd1RocmVhZENvbnRh
aW5pbmdCbG9jaygpIHx8IGN1cnJlbnRCb3gtPmlzV3JpdGluZ01vZGVSb290KCkpIHsKICAgICAg
ICAgICAgICAgICAvLyBGSVhNRTogRm9yIG5vdyByZXF1aXJlIG9ubHkgYmxvY2sgZmxvd3MgYWxs
IHRoZSB3YXkgYmFjayB0byB0aGUgcm9vdC4gVGhpcyBsaW1pdHMgdGhlIG9wdGltaXphdGlvbgog
ICAgICAgICAgICAgICAgIC8vIGZvciBub3csIGFuZCB3ZSdsbCBleHBhbmQgaXQgaW4gZnV0dXJl
IHBhdGNoZXMgdG8gYXBwbHkgdG8gbW9yZSBhbmQgbW9yZSBzY2VuYXJpb3MuCi0gICAgICAgICAg
ICAgICAgLy8gRGlzYWxsb3cgcmVnaW9ucy9jb2x1bW5zIGZyb20gaGF2aW5nIHRoZSBvcHRpbWl6
YXRpb24uCisgICAgICAgICAgICAgICAgLy8gRGlzYWxsb3cgY29sdW1ucyBmcm9tIGhhdmluZyB0
aGUgb3B0aW1pemF0aW9uLgogICAgICAgICAgICAgICAgIC8vIEdpdmUgdXAgaWYgdGhlIHdyaXRp
bmcgbW9kZSBjaGFuZ2VzIGF0IGFsbCBpbiB0aGUgY29udGFpbmluZyBibG9jayBjaGFpbi4KICAg
ICAgICAgICAgICAgICByZXF1aXJlRnVsbExheW91dCA9IHRydWU7CiAgICAgICAgICAgICAgICAg
YnJlYWs7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAkocmV2aXNpb24gMjIyMjU3KQorKysgU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTk3LDcgKzk3LDYg
QEAgY2xhc3MgQ2hhcmFjdGVyRGF0YTsKIGNsYXNzIENvbW1lbnQ7CiBjbGFzcyBDb25zdGFudFBy
b3BlcnR5TWFwOwogY2xhc3MgRE9NSW1wbGVtZW50YXRpb247Ci1jbGFzcyBET01OYW1lZEZsb3dD
b2xsZWN0aW9uOwogY2xhc3MgRE9NU2VsZWN0aW9uOwogY2xhc3MgRE9NV2luZG93OwogY2xhc3Mg
RE9NV3JhcHBlcldvcmxkOwpAQCAtMTQ2LDcgKzE0NSw2IEBAIGNsYXNzIE1lZGlhUGxheWJhY2tU
YXJnZXRDbGllbnQ7CiBjbGFzcyBNZWRpYVF1ZXJ5TGlzdDsKIGNsYXNzIE1lZGlhUXVlcnlNYXRj
aGVyOwogY2xhc3MgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0czsKLWNsYXNzIE5hbWVkRmxv
d0NvbGxlY3Rpb247CiBjbGFzcyBOb2RlRmlsdGVyOwogY2xhc3MgTm9kZUl0ZXJhdG9yOwogY2xh
c3MgUGFnZTsKQEAgLTQwOCwxMSArNDA2LDYgQEAgcHVibGljOgogICAgIHN0YXRpYyBDdXN0b21F
bGVtZW50TmFtZVZhbGlkYXRpb25TdGF0dXMgdmFsaWRhdGVDdXN0b21FbGVtZW50TmFtZShjb25z
dCBBdG9taWNTdHJpbmcmKTsKIAogICAgIGJvb2wgaXNDU1NHcmlkTGF5b3V0RW5hYmxlZCgpIGNv
bnN0OwotI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKLSAgICBSZWZQdHI8RE9NTmFtZWRGbG93Q29s
bGVjdGlvbj4gd2Via2l0R2V0TmFtZWRGbG93cygpOwotI2VuZGlmCi0KLSAgICBOYW1lZEZsb3dD
b2xsZWN0aW9uJiBuYW1lZEZsb3dzKCk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8UmFu
Z2U+IGNhcmV0UmFuZ2VGcm9tUG9pbnQoaW50IHgsIGludCB5KTsKICAgICBSZWZQdHI8UmFuZ2U+
IGNhcmV0UmFuZ2VGcm9tUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmIGNsaWVudFBvaW50KTsKQEAg
LTE2NzIsOCArMTY2NSw2IEBAIHByaXZhdGU6CiAKICAgICBUaW1lciBtX3Zpc3VhbFVwZGF0ZXNT
dXBwcmVzc2lvblRpbWVyOwogCi0gICAgUmVmUHRyPE5hbWVkRmxvd0NvbGxlY3Rpb24+IG1fbmFt
ZWRGbG93czsKLQogICAgIHZvaWQgY2xlYXJTaGFyZWRPYmplY3RQb29sKCk7CiAgICAgVGltZXIg
bV9zaGFyZWRPYmplY3RQb29sQ2xlYXJUaW1lcjsKIApJbmRleDogU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
aWRsCShyZXZpc2lvbiAyMjIyNTcpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRs
CSh3b3JraW5nIGNvcHkpCkBAIC0xODksOSArMTg5LDYgQEAgdHlwZWRlZiAoCiAgICAgLy8gRklY
TUU6IFRoaXMgaXMgbm90IHN0YW5kYXJkIGFuZCBoYXMgYmVlbiBkcm9wcGVkIGZyb20gQmxpbmsg
YWxyZWFkeS4KICAgICBSZW5kZXJpbmdDb250ZXh0PyBnZXRDU1NDYW52YXNDb250ZXh0KERPTVN0
cmluZyBjb250ZXh0SWQsIERPTVN0cmluZyBuYW1lLCBsb25nIHdpZHRoLCBsb25nIGhlaWdodCk7
CiAKLSAgICAvLyBOb24gc3RhbmRhcmQgKGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9yZWZl
cmVuY2Uvd2Via2l0anMvZG9jdW1lbnQvMTYzMzg2My13ZWJraXRnZXRuYW1lZGZsb3dzKS4KLSAg
ICBbQ29uZGl0aW9uYWw9Q1NTX1JFR0lPTlNdIERPTU5hbWVkRmxvd0NvbGxlY3Rpb24gd2Via2l0
R2V0TmFtZWRGbG93cygpOwotCiAgICAgLy8gTm9uIHN0YW5kYXJkLCB0byBicmluZyB1cCB3aXRo
IHN0YW5kYXJkcyB3b3JraW5nIGdyb3VwLgogICAgIFtFbmFibGVkQnlTZXR0aW5nPVN0b3JhZ2VB
Y2Nlc3NBUEldIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIGhhc1N0b3JhZ2VBY2Nlc3M7CiAg
ICAgW0VuYWJsZWRCeVNldHRpbmc9U3RvcmFnZUFjY2Vzc0FQSV0gUHJvbWlzZTxib29sZWFuPiBy
ZXF1ZXN0U3RvcmFnZUFjY2VzcygpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAkocmV2aXNp
b24gMjIyMjU3KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00OCw3ICs0OCw2IEBACiAjaW5jbHVkZSAiRXZlbnREaXNwYXRjaGVyLmgiCiAjaW5j
bHVkZSAiRXZlbnRIYW5kbGVyLmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgotI2luY2x1ZGUg
IkZsb3dUaHJlYWRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiRm9jdXNDb250cm9sbGVyLmgiCiAj
aW5jbHVkZSAiRm9jdXNFdmVudC5oIgogI2luY2x1ZGUgIkZyYW1lU2VsZWN0aW9uLmgiCkBAIC03
OSwxMCArNzgsOCBAQAogI2luY2x1ZGUgIk5vZGVSZW5kZXJTdHlsZS5oIgogI2luY2x1ZGUgIlBs
YXRmb3JtV2hlZWxFdmVudC5oIgogI2luY2x1ZGUgIlBvaW50ZXJMb2NrQ29udHJvbGxlci5oIgot
I2luY2x1ZGUgIlJlbmRlckZsb3dUaHJlYWQuaCIKICNpbmNsdWRlICJSZW5kZXJMYXllci5oIgog
I2luY2x1ZGUgIlJlbmRlckxpc3RCb3guaCIKLSNpbmNsdWRlICJSZW5kZXJOYW1lZEZsb3dGcmFn
bWVudC5oIgogI2luY2x1ZGUgIlJlbmRlclJlZ2lvbi5oIgogI2luY2x1ZGUgIlJlbmRlclRoZW1l
LmgiCiAjaW5jbHVkZSAiUmVuZGVyVHJlZVVwZGF0ZXIuaCIKQEAgLTE4MiwxNSArMTc5LDYgQEAg
RWxlbWVudDo6RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YQogCiBFbGVtZW50Ojp+RWxl
bWVudCgpCiB7Ci0jaWZuZGVmIE5ERUJVRwotICAgIGlmIChkb2N1bWVudCgpLmhhc0xpdmluZ1Jl
bmRlclRyZWUoKSkgewotICAgICAgICAvLyBXaGVuIHRoZSBkb2N1bWVudCBpcyBub3QgZGVzdHJv
eWVkLCBhbiBlbGVtZW50IHRoYXQgd2FzIHBhcnQgb2YgYSBuYW1lZCBmbG93Ci0gICAgICAgIC8v
IGNvbnRlbnQgbm9kZXMgc2hvdWxkIGhhdmUgYmVlbiByZW1vdmVkIGZyb20gdGhlIGNvbnRlbnQg
bm9kZXMgY29sbGVjdGlvbgotICAgICAgICAvLyBhbmQgdGhlIGlzTmFtZWRGbG93Q29udGVudEVs
ZW1lbnQgZmxhZyByZXNldC4KLSAgICAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJ
T04oIWlzTmFtZWRGbG93Q29udGVudEVsZW1lbnQoKSk7Ci0gICAgfQotI2VuZGlmCi0KICAgICBB
U1NFUlQoIWJlZm9yZVBzZXVkb0VsZW1lbnQoKSk7CiAgICAgQVNTRVJUKCFhZnRlclBzZXVkb0Vs
ZW1lbnQoKSk7CiAKQEAgLTE3ODMsMTIgKzE3NzEsNiBAQCB2b2lkIEVsZW1lbnQ6OnJlbW92ZWRG
cm9tKENvbnRhaW5lck5vZGUmCiAjZW5kaWYKIH0KIAotdm9pZCBFbGVtZW50Ojp1bnJlZ2lzdGVy
TmFtZWRGbG93Q29udGVudEVsZW1lbnQoKQotewotICAgIGlmIChpc05hbWVkRmxvd0NvbnRlbnRF
bGVtZW50KCkgJiYgZG9jdW1lbnQoKS5yZW5kZXJWaWV3KCkpCi0gICAgICAgIGRvY3VtZW50KCku
cmVuZGVyVmlldygpLT5mbG93VGhyZWFkQ29udHJvbGxlcigpLnVucmVnaXN0ZXJOYW1lZEZsb3dD
b250ZW50RWxlbWVudCgqdGhpcyk7Ci19Ci0KIFNoYWRvd1Jvb3QqIEVsZW1lbnQ6OnNoYWRvd1Jv
b3QoKSBjb25zdAogewogICAgIHJldHVybiBoYXNSYXJlRGF0YSgpID8gZWxlbWVudFJhcmVEYXRh
KCktPnNoYWRvd1Jvb3QoKSA6IG51bGxwdHI7CkBAIC0yMTEyLDE2ICsyMDk0LDYgQEAgdm9pZCBF
bGVtZW50OjpzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKAogICAgIHNldEF0dHJpYnV0ZUV2ZW50
TGlzdGVuZXIoZXZlbnRUeXBlLCBKU0xhenlFdmVudExpc3RlbmVyOjpjcmVhdGUoKnRoaXMsIGF0
dHJpYnV0ZU5hbWUsIGF0dHJpYnV0ZVZhbHVlKSwgbWFpblRocmVhZE5vcm1hbFdvcmxkKCkpOwog
fQogCi12b2lkIEVsZW1lbnQ6OnNldElzTmFtZWRGbG93Q29udGVudEVsZW1lbnQoKQotewotICAg
IGVuc3VyZUVsZW1lbnRSYXJlRGF0YSgpLnNldElzTmFtZWRGbG93Q29udGVudEVsZW1lbnQodHJ1
ZSk7Ci19Ci0KLXZvaWQgRWxlbWVudDo6Y2xlYXJJc05hbWVkRmxvd0NvbnRlbnRFbGVtZW50KCkK
LXsKLSAgICBlbnN1cmVFbGVtZW50UmFyZURhdGEoKS5zZXRJc05hbWVkRmxvd0NvbnRlbnRFbGVt
ZW50KGZhbHNlKTsKLX0KLQogdm9pZCBFbGVtZW50OjpyZW1vdmVBbGxFdmVudExpc3RlbmVycygp
CiB7CiAgICAgQ29udGFpbmVyTm9kZTo6cmVtb3ZlQWxsRXZlbnRMaXN0ZW5lcnMoKTsKQEAgLTI4
NTMsMTIgKzI4MjUsNiBAQCBib29sIEVsZW1lbnQ6OnJhcmVEYXRhU3R5bGVBZmZlY3RlZEJ5Rm9j
CiAgICAgcmV0dXJuIGVsZW1lbnRSYXJlRGF0YSgpLT5zdHlsZUFmZmVjdGVkQnlGb2N1c1dpdGhp
bigpOwogfQogCi1ib29sIEVsZW1lbnQ6OnJhcmVEYXRhSXNOYW1lZEZsb3dDb250ZW50RWxlbWVu
dCgpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKGhhc1JhcmVEYXRhKCkpOwotICAgIHJldHVybiBlbGVt
ZW50UmFyZURhdGEoKS0+aXNOYW1lZEZsb3dDb250ZW50RWxlbWVudCgpOwotfQotCiBib29sIEVs
ZW1lbnQ6OnJhcmVEYXRhU3R5bGVBZmZlY3RlZEJ5QWN0aXZlKCkgY29uc3QKIHsKICAgICBBU1NF
UlQoaGFzUmFyZURhdGEoKSk7CkBAIC0yODg5LDE2ICsyODU1LDYgQEAgdW5zaWduZWQgRWxlbWVu
dDo6cmFyZURhdGFDaGlsZEluZGV4KCkgYwogICAgIHJldHVybiBlbGVtZW50UmFyZURhdGEoKS0+
Y2hpbGRJbmRleCgpOwogfQogCi12b2lkIEVsZW1lbnQ6OnNldFJlZ2lvbk92ZXJzZXRTdGF0ZShS
ZWdpb25PdmVyc2V0U3RhdGUgc3RhdGUpCi17Ci0gICAgZW5zdXJlRWxlbWVudFJhcmVEYXRhKCku
c2V0UmVnaW9uT3ZlcnNldFN0YXRlKHN0YXRlKTsKLX0KLQotUmVnaW9uT3ZlcnNldFN0YXRlIEVs
ZW1lbnQ6OnJlZ2lvbk92ZXJzZXRTdGF0ZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGhhc1JhcmVE
YXRhKCkgPyBlbGVtZW50UmFyZURhdGEoKS0+cmVnaW9uT3ZlcnNldFN0YXRlKCkgOiBSZWdpb25V
bmRlZmluZWQ7Ci19Ci0KIEF0b21pY1N0cmluZyBFbGVtZW50Ojpjb21wdXRlSW5oZXJpdGVkTGFu
Z3VhZ2UoKSBjb25zdAogewogICAgIGlmIChjb25zdCBFbGVtZW50RGF0YSogZWxlbWVudERhdGEg
PSB0aGlzLT5lbGVtZW50RGF0YSgpKSB7CkBAIC0zMTgxLDc2ICszMTM3LDYgQEAgYm9vbCBFbGVt
ZW50Ojppc1NwZWxsQ2hlY2tpbmdFbmFibGVkKCkgYwogICAgIHJldHVybiB0cnVlOwogfQogCi1S
ZW5kZXJOYW1lZEZsb3dGcmFnbWVudCogRWxlbWVudDo6cmVuZGVyTmFtZWRGbG93RnJhZ21lbnQo
KSBjb25zdAotewotICAgIGlmIChyZW5kZXJlcigpICYmIHJlbmRlcmVyKCktPmlzUmVuZGVyTmFt
ZWRGbG93RnJhZ21lbnRDb250YWluZXIoKSkKLSAgICAgICAgcmV0dXJuIGRvd25jYXN0PFJlbmRl
ckJsb2NrRmxvdz4oKnJlbmRlcmVyKCkpLnJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KCk7Ci0KLSAg
ICByZXR1cm4gbnVsbHB0cjsKLX0KLQotI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKLQotYm9vbCBF
bGVtZW50OjpzaG91bGRNb3ZlVG9GbG93VGhyZWFkKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZVRv
VXNlKSBjb25zdAotewotI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKLSAgICBpZiAoZG9jdW1l
bnQoKS53ZWJraXRJc0Z1bGxTY3JlZW4oKSAmJiBkb2N1bWVudCgpLndlYmtpdEN1cnJlbnRGdWxs
U2NyZWVuRWxlbWVudCgpID09IHRoaXMpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSNlbmRpZgot
Ci0gICAgaWYgKGlzSW5TaGFkb3dUcmVlKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAg
IGlmICghc3R5bGVUb1VzZS5oYXNGbG93SW50bygpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0K
LSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotY29uc3QgQXRvbWljU3RyaW5nJiBFbGVtZW50Ojp3ZWJr
aXRSZWdpb25PdmVyc2V0KCkgY29uc3QKLXsKLSAgICBkb2N1bWVudCgpLnVwZGF0ZUxheW91dEln
bm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOwotCi0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0
b21pY1N0cmluZz4gdW5kZWZpbmVkU3RhdGUoInVuZGVmaW5lZCIsIEF0b21pY1N0cmluZzo6Q29u
c3RydWN0RnJvbUxpdGVyYWwpOwotICAgIGlmICghcmVuZGVyTmFtZWRGbG93RnJhZ21lbnQoKSkK
LSAgICAgICAgcmV0dXJuIHVuZGVmaW5lZFN0YXRlOwotCi0gICAgc3dpdGNoIChyZWdpb25PdmVy
c2V0U3RhdGUoKSkgewotICAgIGNhc2UgUmVnaW9uRml0OiB7Ci0gICAgICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IGZpdFN0YXRlKCJmaXQiLCBBdG9taWNTdHJpbmc6OkNv
bnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICAgICAgcmV0dXJuIGZpdFN0YXRlOwotICAgIH0KLSAg
ICBjYXNlIFJlZ2lvbkVtcHR5OiB7Ci0gICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9t
aWNTdHJpbmc+IGVtcHR5U3RhdGUoImVtcHR5IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9t
TGl0ZXJhbCk7Ci0gICAgICAgIHJldHVybiBlbXB0eVN0YXRlOwotICAgIH0KLSAgICBjYXNlIFJl
Z2lvbk92ZXJzZXQ6IHsKLSAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmlu
Zz4gb3ZlcmZsb3dTdGF0ZSgib3ZlcnNldCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpOwotICAgICAgICByZXR1cm4gb3ZlcmZsb3dTdGF0ZTsKLSAgICB9Ci0gICAgY2FzZSBS
ZWdpb25VbmRlZmluZWQ6Ci0gICAgICAgIHJldHVybiB1bmRlZmluZWRTdGF0ZTsKLSAgICB9Ci0K
LSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gdW5kZWZpbmVkU3RhdGU7Ci19
Ci0KLVZlY3RvcjxSZWZQdHI8UmFuZ2U+PiBFbGVtZW50Ojp3ZWJraXRHZXRSZWdpb25GbG93UmFu
Z2VzKCkgY29uc3QKLXsKLSAgICBWZWN0b3I8UmVmUHRyPFJhbmdlPj4gcmFuZ2VPYmplY3RzOwot
ICAgIGRvY3VtZW50KCkudXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7Ci0g
ICAgYXV0byogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpOwotICAgIGlmIChyZW5kZXJlciAm
JiByZW5kZXJlci0+aXNSZW5kZXJOYW1lZEZsb3dGcmFnbWVudENvbnRhaW5lcigpKSB7Ci0gICAg
ICAgIGF1dG8mIG5hbWVkRmxvd0ZyYWdtZW50ID0gKmRvd25jYXN0PFJlbmRlckJsb2NrRmxvdz4o
KnJlbmRlcmVyKS5yZW5kZXJOYW1lZEZsb3dGcmFnbWVudCgpOwotICAgICAgICBpZiAobmFtZWRG
bG93RnJhZ21lbnQuaXNWYWxpZCgpKQotICAgICAgICAgICAgbmFtZWRGbG93RnJhZ21lbnQuZ2V0
UmFuZ2VzKHJhbmdlT2JqZWN0cyk7Ci0gICAgfQotICAgIHJldHVybiByYW5nZU9iamVjdHM7Ci19
Ci0KLSNlbmRpZgotCiAjaWZuZGVmIE5ERUJVRwogYm9vbCBFbGVtZW50OjpmYXN0QXR0cmlidXRl
TG9va3VwQWxsb3dlZChjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lKSBjb25zdAogewpAQCAtMzUy
MCw3ICszNDA2LDYgQEAgdm9pZCBFbGVtZW50OjpyZXNldFN0eWxlUmVsYXRpb25zKCkKIAogdm9p
ZCBFbGVtZW50OjpjbGVhclN0eWxlRGVyaXZlZERhdGFCZWZvcmVEZXRhY2hpbmdSZW5kZXJlcigp
CiB7Ci0gICAgdW5yZWdpc3Rlck5hbWVkRmxvd0NvbnRlbnRFbGVtZW50KCk7CiAgICAgY2xlYXJC
ZWZvcmVQc2V1ZG9FbGVtZW50KCk7CiAgICAgY2xlYXJBZnRlclBzZXVkb0VsZW1lbnQoKTsKIH0K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvZG9tL0VsZW1lbnQuaAkocmV2aXNpb24gMjIyMjU3KQorKysgU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNiBAQAogI2luY2x1
ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRWxlbWVudERhdGEuaCIKICNpbmNsdWRlICJIVE1M
TmFtZXMuaCIKLSNpbmNsdWRlICJSZWdpb25PdmVyc2V0U3RhdGUuaCIKICNpbmNsdWRlICJTY3Jv
bGxUb09wdGlvbnMuaCIKICNpbmNsdWRlICJTY3JvbGxUeXBlcy5oIgogI2luY2x1ZGUgIlNoYWRv
d1Jvb3RNb2RlLmgiCkBAIC01Miw3ICs1MSw2IEBAIGNsYXNzIFBsYXRmb3JtS2V5Ym9hcmRFdmVu
dDsKIGNsYXNzIFBsYXRmb3JtTW91c2VFdmVudDsKIGNsYXNzIFBsYXRmb3JtV2hlZWxFdmVudDsK
IGNsYXNzIFBzZXVkb0VsZW1lbnQ7Ci1jbGFzcyBSZW5kZXJOYW1lZEZsb3dGcmFnbWVudDsKIGNs
YXNzIFJlbmRlclRyZWVQb3NpdGlvbjsKIGNsYXNzIFdlYkFuaW1hdGlvbjsKIHN0cnVjdCBFbGVt
ZW50U3R5bGU7CkBAIC0zNDUsOSArMzQzLDYgQEAgcHVibGljOgogICAgIHZvaWQgc2V0U3R5bGVJ
c0FmZmVjdGVkQnlQcmV2aW91c1NpYmxpbmcoKSB7IHNldEZsYWcoU3R5bGVJc0FmZmVjdGVkQnlQ
cmV2aW91c1NpYmxpbmcpOyB9CiAgICAgdm9pZCBzZXRDaGlsZEluZGV4KHVuc2lnbmVkKTsKIAot
ICAgIHZvaWQgc2V0UmVnaW9uT3ZlcnNldFN0YXRlKFJlZ2lvbk92ZXJzZXRTdGF0ZSk7Ci0gICAg
UmVnaW9uT3ZlcnNldFN0YXRlIHJlZ2lvbk92ZXJzZXRTdGF0ZSgpIGNvbnN0OwotCiAgICAgQXRv
bWljU3RyaW5nIGNvbXB1dGVJbmhlcml0ZWRMYW5ndWFnZSgpIGNvbnN0OwogICAgIExvY2FsZSYg
bG9jYWxlKCkgY29uc3Q7CiAKQEAgLTQ2NywxNSArNDYyLDYgQEAgcHVibGljOgogCiAgICAgYm9v
bCBpc1NwZWxsQ2hlY2tpbmdFbmFibGVkKCkgY29uc3Q7CiAKLSAgICBSZW5kZXJOYW1lZEZsb3dG
cmFnbWVudCogcmVuZGVyTmFtZWRGbG93RnJhZ21lbnQoKSBjb25zdDsKLQotI2lmIEVOQUJMRShD
U1NfUkVHSU9OUykKLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkTW92ZVRvRmxvd1RocmVhZChjb25z
dCBSZW5kZXJTdHlsZSYpIGNvbnN0OwotICAgIAotICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IEF0
b21pY1N0cmluZyYgd2Via2l0UmVnaW9uT3ZlcnNldCgpIGNvbnN0OwotICAgIFZlY3RvcjxSZWZQ
dHI8UmFuZ2U+PiB3ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCkgY29uc3Q7Ci0jZW5kaWYKLQog
ICAgIGJvb2wgaGFzSUQoKSBjb25zdDsKICAgICBib29sIGhhc0NsYXNzKCkgY29uc3Q7CiAgICAg
Ym9vbCBoYXNOYW1lKCkgY29uc3Q7CkBAIC01NTMsMTAgKzUzOSw2IEBAIHB1YmxpYzoKICAgICB1
c2luZyBDb250YWluZXJOb2RlOjpzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyOwogICAgIHZvaWQg
c2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwg
Y29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2
YWx1ZSk7CiAKLSAgICBib29sIGlzTmFtZWRGbG93Q29udGVudEVsZW1lbnQoKSBjb25zdCB7IHJl
dHVybiBoYXNSYXJlRGF0YSgpICYmIHJhcmVEYXRhSXNOYW1lZEZsb3dDb250ZW50RWxlbWVudCgp
OyB9Ci0gICAgdm9pZCBzZXRJc05hbWVkRmxvd0NvbnRlbnRFbGVtZW50KCk7Ci0gICAgdm9pZCBj
bGVhcklzTmFtZWRGbG93Q29udGVudEVsZW1lbnQoKTsKLQogI2lmIEVOQUJMRShXRUJfQU5JTUFU
SU9OUykKICAgICBWZWN0b3I8V2ViQW5pbWF0aW9uKj4gZ2V0QW5pbWF0aW9ucygpOwogI2VuZGlm
CkBAIC02NTAsNyArNjMyLDYgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgcmFyZURhdGFTdHlsZUFm
ZmVjdGVkQnlFbXB0eSgpIGNvbnN0OwogICAgIGJvb2wgcmFyZURhdGFTdHlsZUFmZmVjdGVkQnlG
b2N1c1dpdGhpbigpIGNvbnN0OwotICAgIGJvb2wgcmFyZURhdGFJc05hbWVkRmxvd0NvbnRlbnRF
bGVtZW50KCkgY29uc3Q7CiAgICAgYm9vbCByYXJlRGF0YUNoaWxkcmVuQWZmZWN0ZWRCeUhvdmVy
KCkgY29uc3Q7CiAgICAgYm9vbCByYXJlRGF0YVN0eWxlQWZmZWN0ZWRCeUFjdGl2ZSgpIGNvbnN0
OwogICAgIGJvb2wgcmFyZURhdGFDaGlsZHJlbkFmZmVjdGVkQnlEcmFnKCkgY29uc3Q7CkBAIC02
NjEsOCArNjQyLDYgQEAgcHJpdmF0ZToKIAogICAgIFNwZWxsY2hlY2tBdHRyaWJ1dGVTdGF0ZSBz
cGVsbGNoZWNrQXR0cmlidXRlU3RhdGUoKSBjb25zdDsKIAotICAgIHZvaWQgdW5yZWdpc3Rlck5h
bWVkRmxvd0NvbnRlbnRFbGVtZW50KCk7Ci0KICAgICB2b2lkIGNyZWF0ZVVuaXF1ZUVsZW1lbnRE
YXRhKCk7CiAKICAgICBFbGVtZW50UmFyZURhdGEqIGVsZW1lbnRSYXJlRGF0YSgpIGNvbnN0OwpJ
bmRleDogU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaWRsCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50LmlkbAkocmV2aXNpb24gMjIyMjU3KQorKysgU291cmNlL1dl
YkNvcmUvZG9tL0VsZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAsMTIgKzEwMCw2IEBA
CiAgICAgLy8gRXh0ZW5zaW9ucyBmcm9tIFBvaW50ZXIgTG9jayBBUEkgKGh0dHBzOi8vdzNjLmdp
dGh1Yi5pby9wb2ludGVybG9jay8jZXh0ZW5zaW9ucy10by10aGUtZWxlbWVudC1pbnRlcmZhY2Up
LgogICAgIFtDb25kaXRpb25hbD1QT0lOVEVSX0xPQ0tdIHZvaWQgcmVxdWVzdFBvaW50ZXJMb2Nr
KCk7CiAKLSAgICAvLyBFeHRlbnNpb25zIGZyb20gQ1NTIFJlZ2lvbnMgQVBJIChodHRwczovL2Ry
YWZ0cy5jc3N3Zy5vcmcvY3NzLXJlZ2lvbnMvI3RoZS1yZWdpb24taW50ZXJmYWNlKS4KLSAgICAv
LyBGSVhNRTogU2hvdWxkIGJlIGluIGEgc2VwYXJhdGUgUmVnaW9uIGludGVyZmFjZSBpbXBsZW1l
bnRlZCBieSBFbGVtZW50LgotICAgIC8vIEZJWE1FOiBTaG91bGQgd2UgYWRkIHVucHJlZml4ZWQg
dmVyc2lvbnM/Ci0gICAgW0NvbmRpdGlvbmFsPUNTU19SRUdJT05TXSByZWFkb25seSBhdHRyaWJ1
dGUgRE9NU3RyaW5nIHdlYmtpdFJlZ2lvbk92ZXJzZXQ7Ci0gICAgW0NvbmRpdGlvbmFsPUNTU19S
RUdJT05TXSBzZXF1ZW5jZTxSYW5nZT4/IHdlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKLQog
ICAgIC8vIE5vbiBzdGFuZGFyZCBBUEkgKGh0dHBzOi8vd3d3LnczLm9yZy9CdWdzL1B1YmxpYy9z
aG93X2J1Zy5jZ2k/aWQ9MTcxNTIpLgogICAgIHZvaWQgc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZChv
cHRpb25hbCBib29sZWFuIGNlbnRlcklmTmVlZGVkID0gdHJ1ZSk7CiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50UmFyZURhdGEuY3BwCShyZXZpc2lvbiAyMjIyNTcpCisrKyBTb3VyY2Uv
V2ViQ29yZS9kb20vRWxlbWVudFJhcmVEYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyAr
NDEsNiBAQCBzdHJ1Y3QgU2FtZVNpemVBc0VsZW1lbnRSYXJlRGF0YSA6IE5vZGVSCiAjZWxzZQog
ICAgIHVuc2lnbmVkIGJpdGZpZWxkcyA6IDEwOwogI2VuZGlmCi0gICAgUmVnaW9uT3ZlcnNldFN0
YXRlIHJlZ2lvbk92ZXJzZXRTdGF0ZTsKICAgICBMYXlvdXRTaXplIHNpemVGb3JSZXNpemluZzsK
ICAgICBJbnRQb2ludCBzYXZlZExheWVyU2Nyb2xsUG9zaXRpb247CiAgICAgdm9pZCogcG9pbnRl
cnNbOF07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFJhcmVEYXRhLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRSYXJlRGF0YS5oCShyZXZpc2lvbiAy
MjIyNTcpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFJhcmVEYXRhLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTYwLDEyICs2MCw2IEBAIHB1YmxpYzoKICAgICBib29sIHN0eWxlQWZmZWN0ZWRC
eUZvY3VzV2l0aGluKCkgY29uc3QgeyByZXR1cm4gbV9zdHlsZUFmZmVjdGVkQnlGb2N1c1dpdGhp
bjsgfQogICAgIHZvaWQgc2V0U3R5bGVBZmZlY3RlZEJ5Rm9jdXNXaXRoaW4oYm9vbCB2YWx1ZSkg
eyBtX3N0eWxlQWZmZWN0ZWRCeUZvY3VzV2l0aGluID0gdmFsdWU7IH0KIAotICAgIFJlZ2lvbk92
ZXJzZXRTdGF0ZSByZWdpb25PdmVyc2V0U3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3JlZ2lvbk92
ZXJzZXRTdGF0ZTsgfQotICAgIHZvaWQgc2V0UmVnaW9uT3ZlcnNldFN0YXRlKFJlZ2lvbk92ZXJz
ZXRTdGF0ZSBzdGF0ZSkgeyBtX3JlZ2lvbk92ZXJzZXRTdGF0ZSA9IHN0YXRlOyB9Ci0KLSAgICBi
b29sIGlzTmFtZWRGbG93Q29udGVudEVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2lzTmFtZWRG
bG93Q29udGVudEVsZW1lbnQ7IH0KLSAgICB2b2lkIHNldElzTmFtZWRGbG93Q29udGVudEVsZW1l
bnQoYm9vbCB2YWx1ZSkgeyBtX2lzTmFtZWRGbG93Q29udGVudEVsZW1lbnQgPSB2YWx1ZTsgfQot
CiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQogICAgIGJvb2wgY29udGFpbnNGdWxsU2NyZWVu
RWxlbWVudCgpIHsgcmV0dXJuIG1fY29udGFpbnNGdWxsU2NyZWVuRWxlbWVudDsgfQogICAgIHZv
aWQgc2V0Q29udGFpbnNGdWxsU2NyZWVuRWxlbWVudChib29sIHZhbHVlKSB7IG1fY29udGFpbnNG
dWxsU2NyZWVuRWxlbWVudCA9IHZhbHVlOyB9CkBAIC0xMzIsOSArMTI2LDYgQEAgcHJpdmF0ZToK
ICAgICB1bnNpZ25lZCBtX2NoaWxkcmVuQWZmZWN0ZWRCeUxhc3RDaGlsZFJ1bGVzIDogMTsKICAg
ICB1bnNpZ25lZCBtX2NoaWxkcmVuQWZmZWN0ZWRCeUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzIDog
MTsKICAgICB1bnNpZ25lZCBtX2NoaWxkcmVuQWZmZWN0ZWRCeVByb3BlcnR5QmFzZWRCYWNrd2Fy
ZFBvc2l0aW9uYWxSdWxlcyA6IDE7Ci0gICAgdW5zaWduZWQgbV9pc05hbWVkRmxvd0NvbnRlbnRF
bGVtZW50IDogMTsKLQotICAgIFJlZ2lvbk92ZXJzZXRTdGF0ZSBtX3JlZ2lvbk92ZXJzZXRTdGF0
ZTsKIAogICAgIExheW91dFNpemUgbV9taW5pbXVtU2l6ZUZvclJlc2l6aW5nOwogICAgIEludFBv
aW50IG1fc2F2ZWRMYXllclNjcm9sbFBvc2l0aW9uOwpAQCAtMTc0LDggKzE2NSw2IEBAIGlubGlu
ZSBFbGVtZW50UmFyZURhdGE6OkVsZW1lbnRSYXJlRGF0YSgKICAgICAsIG1fY2hpbGRyZW5BZmZl
Y3RlZEJ5TGFzdENoaWxkUnVsZXMoZmFsc2UpCiAgICAgLCBtX2NoaWxkcmVuQWZmZWN0ZWRCeUJh
Y2t3YXJkUG9zaXRpb25hbFJ1bGVzKGZhbHNlKQogICAgICwgbV9jaGlsZHJlbkFmZmVjdGVkQnlQ
cm9wZXJ0eUJhc2VkQmFja3dhcmRQb3NpdGlvbmFsUnVsZXMoZmFsc2UpCi0gICAgLCBtX2lzTmFt
ZWRGbG93Q29udGVudEVsZW1lbnQoZmFsc2UpCi0gICAgLCBtX3JlZ2lvbk92ZXJzZXRTdGF0ZShS
ZWdpb25VbmRlZmluZWQpCiAgICAgLCBtX21pbmltdW1TaXplRm9yUmVzaXppbmcoZGVmYXVsdE1p
bmltdW1TaXplRm9yUmVzaXppbmcoKSkKIHsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9F
dmVudFRhcmdldEZhY3RvcnkuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0V2
ZW50VGFyZ2V0RmFjdG9yeS5pbgkocmV2aXNpb24gMjIyMjU3KQorKysgU291cmNlL1dlYkNvcmUv
ZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgkod29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEsNiBA
QCBUZXh0VHJhY2tMaXN0IGNvbmRpdGlvbmFsPVZJREVPX1RSQUNLCiBWUkRpc3BsYXkKIFZpZGVv
VHJhY2tMaXN0IGNvbmRpdGlvbmFsPVZJREVPX1RSQUNLCiBXZWJLaXRNZWRpYUtleVNlc3Npb24g
Y29uZGl0aW9uYWw9TEVHQUNZX0VOQ1JZUFRFRF9NRURJQQotV2ViS2l0TmFtZWRGbG93CiBXZWJT
b2NrZXQKIFdvcmtlcgogWE1MSHR0cFJlcXVlc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9O
YW1lZEZsb3dDb2xsZWN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20v
TmFtZWRGbG93Q29sbGVjdGlvbi5jcHAJKHJldmlzaW9uIDIyMjI1NykKKysrIFNvdXJjZS9XZWJD
b3JlL2RvbS9OYW1lZEZsb3dDb2xsZWN0aW9uLmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDEzMSAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3Jh
dGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUKLSAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCi0gKiAgICBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQot
ICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcKLSAqICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscwotICogICAgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVIgIkFT
IElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBCRQotICog
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLAotICogT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUgotICogVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
Ci0gKiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YKLSAqIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIK
LSNpbmNsdWRlICJOYW1lZEZsb3dDb2xsZWN0aW9uLmgiCi0KLSNpbmNsdWRlICJET01OYW1lZEZs
b3dDb2xsZWN0aW9uLmgiCi0jaW5jbHVkZSAiRG9jdW1lbnQuaCIKLSNpbmNsdWRlICJJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb24uaCIKLQotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4K
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1OYW1lZEZsb3dDb2xsZWN0aW9uOjpOYW1lZEZsb3dD
b2xsZWN0aW9uKERvY3VtZW50KiBkb2N1bWVudCkKLSAgICA6IENvbnRleHREZXN0cnVjdGlvbk9i
c2VydmVyKGRvY3VtZW50KQotewotfQotCi1WZWN0b3I8UmVmUHRyPFdlYktpdE5hbWVkRmxvdz4+
IE5hbWVkRmxvd0NvbGxlY3Rpb246Om5hbWVkRmxvd3MoKQotewotICAgIFZlY3RvcjxSZWZQdHI8
V2ViS2l0TmFtZWRGbG93Pj4gbmFtZWRGbG93czsKLQotICAgIGZvciAoYXV0byYgbmFtZWRGbG93
IDogbV9uYW1lZEZsb3dzKSB7Ci0gICAgICAgIGlmIChuYW1lZEZsb3ctPmZsb3dTdGF0ZSgpID09
IFdlYktpdE5hbWVkRmxvdzo6Rmxvd1N0YXRlTnVsbCkKLSAgICAgICAgICAgIGNvbnRpbnVlOwot
Ci0gICAgICAgIG5hbWVkRmxvd3MuYXBwZW5kKFJlZlB0cjxXZWJLaXROYW1lZEZsb3c+KG5hbWVk
RmxvdykpOwotICAgIH0KLQotICAgIHJldHVybiBuYW1lZEZsb3dzOwotfQotCi1XZWJLaXROYW1l
ZEZsb3cqIE5hbWVkRmxvd0NvbGxlY3Rpb246OmZsb3dCeU5hbWUoY29uc3QgU3RyaW5nJiBmbG93
TmFtZSkKLXsKLSAgICBOYW1lZEZsb3dTZXQ6Oml0ZXJhdG9yIGl0ID0gbV9uYW1lZEZsb3dzLmZp
bmQ8U3RyaW5nLCBOYW1lZEZsb3dIYXNoVHJhbnNsYXRvcj4oZmxvd05hbWUpOwotICAgIGlmIChp
dCA9PSBtX25hbWVkRmxvd3MuZW5kKCkgfHwgKCppdCktPmZsb3dTdGF0ZSgpID09IFdlYktpdE5h
bWVkRmxvdzo6Rmxvd1N0YXRlTnVsbCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBy
ZXR1cm4gKml0OwotfQotCi1SZWY8V2ViS2l0TmFtZWRGbG93PiBOYW1lZEZsb3dDb2xsZWN0aW9u
OjplbnN1cmVGbG93V2l0aE5hbWUoY29uc3QgU3RyaW5nJiBmbG93TmFtZSkKLXsKLSAgICBOYW1l
ZEZsb3dTZXQ6Oml0ZXJhdG9yIGl0ID0gbV9uYW1lZEZsb3dzLmZpbmQ8U3RyaW5nLCBOYW1lZEZs
b3dIYXNoVHJhbnNsYXRvcj4oZmxvd05hbWUpOwotICAgIGlmIChpdCAhPSBtX25hbWVkRmxvd3Mu
ZW5kKCkpIHsKLSAgICAgICAgV2ViS2l0TmFtZWRGbG93KiBuYW1lZEZsb3cgPSAqaXQ7Ci0gICAg
ICAgIEFTU0VSVChuYW1lZEZsb3ctPmZsb3dTdGF0ZSgpID09IFdlYktpdE5hbWVkRmxvdzo6Rmxv
d1N0YXRlTnVsbCk7Ci0KLSAgICAgICAgcmV0dXJuICpuYW1lZEZsb3c7Ci0gICAgfQotCi0gICAg
UmVmUHRyPFdlYktpdE5hbWVkRmxvdz4gbmV3RmxvdyA9IFdlYktpdE5hbWVkRmxvdzo6Y3JlYXRl
KCp0aGlzLCBmbG93TmFtZSk7Ci0gICAgbV9uYW1lZEZsb3dzLmFkZChuZXdGbG93LmdldCgpKTsK
LQotICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ3JlYXRlTmFtZWRGbG93KGRvY3Vt
ZW50KCksICpuZXdGbG93KTsKLQotICAgIHJldHVybiBuZXdGbG93LnJlbGVhc2VOb25OdWxsKCk7
Ci19Ci0KLXZvaWQgTmFtZWRGbG93Q29sbGVjdGlvbjo6ZGlzY2FyZE5hbWVkRmxvdyhXZWJLaXRO
YW1lZEZsb3cqIG5hbWVkRmxvdykKLXsKLSAgICAvLyBUaGUgZG9jdW1lbnQgaXMgbm90IHZhbGlk
IGFueW1vcmUgc28gdGhlIGNvbGxlY3Rpb24gd2lsbCBiZSBkZXN0cm95ZWQgYW55d2F5LgotICAg
IGlmICghZG9jdW1lbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQVNTRVJUKG5hbWVkRmxv
dy0+Zmxvd1N0YXRlKCkgPT0gV2ViS2l0TmFtZWRGbG93OjpGbG93U3RhdGVOdWxsKTsKLSAgICBB
U1NFUlQobV9uYW1lZEZsb3dzLmNvbnRhaW5zKG5hbWVkRmxvdykpOwotCi0gICAgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjp3aWxsUmVtb3ZlTmFtZWRGbG93KGRvY3VtZW50KCksICpuYW1lZEZs
b3cpOwotCi0gICAgbV9uYW1lZEZsb3dzLnJlbW92ZShuYW1lZEZsb3cpOwotfQotCi1Eb2N1bWVu
dCogTmFtZWRGbG93Q29sbGVjdGlvbjo6ZG9jdW1lbnQoKSBjb25zdAotewotICAgIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQgPSBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcjo6c2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgIHJldHVybiBkb3duY2FzdDxEb2N1bWVudD4oY29u
dGV4dCk7Ci19Ci0KLVJlZjxET01OYW1lZEZsb3dDb2xsZWN0aW9uPiBOYW1lZEZsb3dDb2xsZWN0
aW9uOjpjcmVhdGVDU1NPTVNuYXBzaG90KCkKLXsKLSAgICBWZWN0b3I8UmVmPFdlYktpdE5hbWVk
Rmxvdz4+IGNyZWF0ZWRGbG93czsKLSAgICBmb3IgKGF1dG8mIG5hbWVkRmxvdyA6IG1fbmFtZWRG
bG93cykgewotICAgICAgICBpZiAobmFtZWRGbG93LT5mbG93U3RhdGUoKSA9PSBXZWJLaXROYW1l
ZEZsb3c6OkZsb3dTdGF0ZUNyZWF0ZWQpCi0gICAgICAgICAgICBjcmVhdGVkRmxvd3MuYXBwZW5k
KCpuYW1lZEZsb3cpOwotICAgIH0KLSAgICByZXR1cm4gRE9NTmFtZWRGbG93Q29sbGVjdGlvbjo6
Y3JlYXRlKFdURk1vdmUoY3JlYXRlZEZsb3dzKSk7Ci19Ci0KLS8vIFRoZSBIYXNoRnVuY3Rpb25z
IG9iamVjdCB1c2VkIGJ5IHRoZSBIYXNoU2V0IHRvIGNvbXBhcmUgYmV0d2VlbiBOYW1lZEZsb3dz
LgotLy8gSXQgaXMgc2FmZSB0byBzZXQgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgYmVj
YXVzZSB0aGUgSGFzaFNldCB3aWxsIG5ldmVyIGNvbnRhaW4gbnVsbCBwb2ludGVycyBvciBkZWxl
dGVkIHZhbHVlcy4KLXN0cnVjdCBOYW1lZEZsb3dDb2xsZWN0aW9uOjpOYW1lZEZsb3dIYXNoRnVu
Y3Rpb25zIHsKLSAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChXZWJLaXROYW1lZEZsb3cqIGtleSkg
eyByZXR1cm4gRGVmYXVsdEhhc2g8U3RyaW5nPjo6SGFzaDo6aGFzaChrZXktPm5hbWUoKSk7IH0K
LSAgICBzdGF0aWMgYm9vbCBlcXVhbChXZWJLaXROYW1lZEZsb3cqIGEsIFdlYktpdE5hbWVkRmxv
dyogYikgeyByZXR1cm4gYS0+bmFtZSgpID09IGItPm5hbWUoKTsgfQotICAgIHN0YXRpYyBjb25z
dCBib29sIHNhZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkID0gdHJ1ZTsKLX07Ci0KLS8vIFRo
ZSBIYXNoVHJhbnNsYXRvciBpcyB1c2VkIHRvIGxvb2t1cCBhIE5hbWVkRmxvdyBpbiB0aGUgc2V0
IHVzaW5nIGEgbmFtZS4KLXN0cnVjdCBOYW1lZEZsb3dDb2xsZWN0aW9uOjpOYW1lZEZsb3dIYXNo
VHJhbnNsYXRvciB7Ci0gICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgU3RyaW5nJiBrZXkp
IHsgcmV0dXJuIERlZmF1bHRIYXNoPFN0cmluZz46Okhhc2g6Omhhc2goa2V5KTsgfQotICAgIHN0
YXRpYyBib29sIGVxdWFsKFdlYktpdE5hbWVkRmxvdyogYSwgY29uc3QgU3RyaW5nJiBiKSB7IHJl
dHVybiBhLT5uYW1lKCkgPT0gYjsgfQotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRl
eDogU291cmNlL1dlYkNvcmUvZG9tL05hbWVkRmxvd0NvbGxlY3Rpb24uaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9kb20vTmFtZWRGbG93Q29sbGVjdGlvbi5oCShyZXZpc2lvbiAyMjIy
NTcpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vTmFtZWRGbG93Q29sbGVjdGlvbi5oCShub25leGlz
dGVudCkKQEAgLTEsNzEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBBZG9iZSBT
eXN0ZW1zIEluY29ycG9yYXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlCi0gKiAgICBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZwotICogICAgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKLSAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCi0gKiAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMKLSAqICAgIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VCBIT0xERVIgQkUKLSAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwKLSAqIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IKLSAqIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRgotICogVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCi0gKiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJh
Z21hIG9uY2UKLQotI2luY2x1ZGUgIkNvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyLmgiCi0jaW5j
bHVkZSAiV2ViS2l0TmFtZWRGbG93LmgiCi0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNpbmNs
dWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBEb2N1
bWVudDsKLWNsYXNzIERPTU5hbWVkRmxvd0NvbGxlY3Rpb247Ci0KLWNsYXNzIE5hbWVkRmxvd0Nv
bGxlY3Rpb24gZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxOYW1lZEZsb3dDb2xsZWN0aW9uPiwg
cHVibGljIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMg
UmVmPE5hbWVkRmxvd0NvbGxlY3Rpb24+IGNyZWF0ZShEb2N1bWVudCogZG9jKSB7IHJldHVybiBh
ZG9wdFJlZigqbmV3IE5hbWVkRmxvd0NvbGxlY3Rpb24oZG9jKSk7IH0KLQotICAgIFZlY3RvcjxS
ZWZQdHI8V2ViS2l0TmFtZWRGbG93Pj4gbmFtZWRGbG93cygpOwotICAgIFdlYktpdE5hbWVkRmxv
dyogZmxvd0J5TmFtZShjb25zdCBTdHJpbmcmKTsKLSAgICBSZWY8V2ViS2l0TmFtZWRGbG93PiBl
bnN1cmVGbG93V2l0aE5hbWUoY29uc3QgU3RyaW5nJik7Ci0KLSAgICB2b2lkIGRpc2NhcmROYW1l
ZEZsb3coV2ViS2l0TmFtZWRGbG93Kik7Ci0KLSAgICBEb2N1bWVudCogZG9jdW1lbnQoKSBjb25z
dDsKLQotICAgIHZpcnR1YWwgfk5hbWVkRmxvd0NvbGxlY3Rpb24oKSB7IH0KLQotICAgIFJlZjxE
T01OYW1lZEZsb3dDb2xsZWN0aW9uPiBjcmVhdGVDU1NPTVNuYXBzaG90KCk7Ci0KLXByaXZhdGU6
Ci0gICAgc3RydWN0IE5hbWVkRmxvd0hhc2hGdW5jdGlvbnM7Ci0gICAgc3RydWN0IE5hbWVkRmxv
d0hhc2hUcmFuc2xhdG9yOwotCi0gICAgdHlwZWRlZiBMaXN0SGFzaFNldDxXZWJLaXROYW1lZEZs
b3cqLCBOYW1lZEZsb3dIYXNoRnVuY3Rpb25zPiBOYW1lZEZsb3dTZXQ7Ci0KLSAgICBleHBsaWNp
dCBOYW1lZEZsb3dDb2xsZWN0aW9uKERvY3VtZW50Kik7Ci0KLSAgICBOYW1lZEZsb3dTZXQgbV9u
YW1lZEZsb3dzOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dl
YkNvcmUvZG9tL1BzZXVkb0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9k
b20vUHNldWRvRWxlbWVudC5oCShyZXZpc2lvbiAyMjIyNTcpCisrKyBTb3VyY2UvV2ViQ29yZS9k
b20vUHNldWRvRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCwxMiArNDQsNiBAQCBwdWJs
aWM6CiAKICAgICBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUmKSBvdmVy
cmlkZTsKIAotICAgIC8vIEFzIHBlciBodHRwOi8vZGV2LnczLm9yZy9jc3N3Zy9jc3MzLXJlZ2lv
bnMvI2Zsb3ctaW50bywgcHNldWRvLWVsZW1lbnRzIHN1Y2ggYXMgOjpmaXJzdC1saW5lLCA6OmZp
cnN0LWxldHRlciwgOjpiZWZvcmUgb3IgOjphZnRlcgotICAgIC8vIGNhbm5vdCBiZSBkaXJlY3Rs
eSBjb2xsZWN0ZWQgaW50byBhIG5hbWVkIGZsb3cuCi0jaWYgRU5BQkxFKENTU19SRUdJT05TKQot
ICAgIGJvb2wgc2hvdWxkTW92ZVRvRmxvd1RocmVhZChjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0jZW5kaWYKLQogICAgIGJvb2wgY2FuU3RhcnRT
ZWxlY3Rpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wgY2Fu
Q29udGFpblJhbmdlRW5kUG9pbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vV2ViS2l0TmFtZWRGbG93LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vV2ViS2l0TmFtZWRGbG93LmNwcAkocmV2aXNpb24gMjIy
MjU3KQorKysgU291cmNlL1dlYkNvcmUvZG9tL1dlYktpdE5hbWVkRmxvdy5jcHAJKG5vbmV4aXN0
ZW50KQpAQCAtMSwyMzUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBZG9iZSBT
eXN0ZW1zIEluY29ycG9yYXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlCi0gKiAgICBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZwotICogICAgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKLSAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCi0gKiAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMKLSAqICAgIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqIAotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUiAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQgSE9MREVSIEJFCi0gKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksCi0gKiBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SCi0gKiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YKLSAqIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgotICogU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lu
Y2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldlYktpdE5hbWVkRmxvdy5oIgotCi0jaW5jbHVk
ZSAiRXZlbnROYW1lcy5oIgotI2luY2x1ZGUgIk5hbWVkRmxvd0NvbGxlY3Rpb24uaCIKLSNpbmNs
dWRlICJOb0V2ZW50RGlzcGF0Y2hBc3NlcnRpb24uaCIKLSNpbmNsdWRlICJSZW5kZXJOYW1lZEZs
b3dGcmFnbWVudC5oIgotI2luY2x1ZGUgIlJlbmRlck5hbWVkRmxvd1RocmVhZC5oIgotI2luY2x1
ZGUgIlJlbmRlclJlZ2lvbi5oIgotI2luY2x1ZGUgIlN0YXRpY05vZGVMaXN0LmgiCi0jaW5jbHVk
ZSAiVUlFdmVudC5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVdlYktpdE5hbWVkRmxvdzo6
V2ViS2l0TmFtZWRGbG93KE5hbWVkRmxvd0NvbGxlY3Rpb24mIG1hbmFnZXIsIGNvbnN0IEF0b21p
Y1N0cmluZyYgZmxvd1RocmVhZE5hbWUpCi0gICAgOiBtX2Zsb3dUaHJlYWROYW1lKGZsb3dUaHJl
YWROYW1lKQotICAgICwgbV9mbG93TWFuYWdlcigmbWFuYWdlcikKLSAgICAsIG1fcGFyZW50Rmxv
d1RocmVhZChudWxscHRyKQotewotfQotCi1XZWJLaXROYW1lZEZsb3c6On5XZWJLaXROYW1lZEZs
b3coKQotewotICAgIC8vIFRoZSBuYW1lZCBmbG93IGlzIG5vdCAic3Ryb25nIiByZWZlcmVuY2Vk
IGZyb20gYW55d2hlcmUgYXQgdGhpcyB0aW1lIHNvIGl0IHNob3VsZG4ndCBiZSByZXVzZWQgaWYg
dGhlIG5hbWVkIGZsb3cgaXMgcmVjcmVhdGVkLgotICAgIG1fZmxvd01hbmFnZXItPmRpc2NhcmRO
YW1lZEZsb3codGhpcyk7Ci19Ci0KLVJlZjxXZWJLaXROYW1lZEZsb3c+IFdlYktpdE5hbWVkRmxv
dzo6Y3JlYXRlKE5hbWVkRmxvd0NvbGxlY3Rpb24mIG1hbmFnZXIsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgZmxvd1RocmVhZE5hbWUpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViS2l0TmFt
ZWRGbG93KG1hbmFnZXIsIGZsb3dUaHJlYWROYW1lKSk7Ci19Ci0KLWNvbnN0IEF0b21pY1N0cmlu
ZyYgV2ViS2l0TmFtZWRGbG93OjpuYW1lKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9mbG93VGhy
ZWFkTmFtZTsKLX0KLQotYm9vbCBXZWJLaXROYW1lZEZsb3c6Om92ZXJzZXQoKSBjb25zdAotewot
ICAgIGlmIChtX2Zsb3dNYW5hZ2VyLT5kb2N1bWVudCgpKQotICAgICAgICBtX2Zsb3dNYW5hZ2Vy
LT5kb2N1bWVudCgpLT51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoKTsKLQot
ICAgIC8vIFRoZSByZW5kZXJlciBtYXkgYmUgZGVzdHJveWVkIG9yIGNyZWF0ZWQgYWZ0ZXIgdGhl
IHN0eWxlIHVwZGF0ZS4KLSAgICAvLyBCZWNhdXNlIHRoaXMgaXMgY2FsbGVkIGZyb20gSlMsIHdo
ZXJlIHRoZSB3cmFwcGVyIGtlZXBzIGEgcmVmZXJlbmNlIHRvIHRoZSBOYW1lZEZsb3csIG5vIGd1
YXJkIGlzIG5lY2Vzc2FyeS4KLSAgICBpZiAoIW1fcGFyZW50Rmxvd1RocmVhZCB8fCAhbV9wYXJl
bnRGbG93VGhyZWFkLT5oYXNSZWdpb25zKCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAg
Y29uc3QgYXV0byYgbmFtZWRGbG93RnJhZ21lbnQgPSBkb3duY2FzdDxSZW5kZXJOYW1lZEZsb3dG
cmFnbWVudD4oKm1fcGFyZW50Rmxvd1RocmVhZC0+bGFzdFJlZ2lvbigpKTsKLSAgICByZXR1cm4g
bmFtZWRGbG93RnJhZ21lbnQucmVnaW9uT3ZlcnNldFN0YXRlKCkgPT0gUmVnaW9uT3ZlcnNldDsK
LX0KLQotc3RhdGljIGlubGluZSBib29sIGluRmxvd1RocmVhZChSZW5kZXJPYmplY3QqIHJlbmRl
cmVyLCBSZW5kZXJOYW1lZEZsb3dUaHJlYWQqIGZsb3dUaHJlYWQpCi17Ci0gICAgaWYgKCFyZW5k
ZXJlcikKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIFJlbmRlckZsb3dUaHJlYWQqIGN1cnJl
bnRGbG93VGhyZWFkID0gcmVuZGVyZXItPmZsb3dUaHJlYWRDb250YWluaW5nQmxvY2soKTsKLSAg
ICBpZiAoZmxvd1RocmVhZCA9PSBjdXJyZW50Rmxvd1RocmVhZCkKLSAgICAgICAgcmV0dXJuIHRy
dWU7Ci0gICAgaWYgKHJlbmRlcmVyLT5mbG93VGhyZWFkU3RhdGUoKSAhPSBSZW5kZXJPYmplY3Q6
Okluc2lkZUluRmxvd1RocmVhZCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIAotICAgIC8v
IEFuIGluLWZsb3cgZmxvdyB0aHJlYWQgY2FuIGJlIG5lc3RlZCBpbnNpZGUgYW4gb3V0LW9mLWZs
b3cgb25lLCBzbyB3ZSBoYXZlIHRvIHJlY3VyIHVwIHRvIGNoZWNrLgotICAgIHJldHVybiBpbkZs
b3dUaHJlYWQoY3VycmVudEZsb3dUaHJlYWQtPmNvbnRhaW5pbmdCbG9jaygpLCBmbG93VGhyZWFk
KTsKLX0KLQotaW50IFdlYktpdE5hbWVkRmxvdzo6Zmlyc3RFbXB0eVJlZ2lvbkluZGV4KCkgY29u
c3QKLXsKLSAgICBpZiAobV9mbG93TWFuYWdlci0+ZG9jdW1lbnQoKSkKLSAgICAgICAgbV9mbG93
TWFuYWdlci0+ZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRz
KCk7Ci0KLSAgICBpZiAoIW1fcGFyZW50Rmxvd1RocmVhZCkKLSAgICAgICAgcmV0dXJuIC0xOwot
Ci0gICAgY29uc3QgUmVuZGVyUmVnaW9uTGlzdCYgcmVnaW9uTGlzdCA9IG1fcGFyZW50Rmxvd1Ro
cmVhZC0+cmVuZGVyUmVnaW9uTGlzdCgpOwotICAgIGlmIChyZWdpb25MaXN0LmlzRW1wdHkoKSkK
LSAgICAgICAgcmV0dXJuIC0xOwotCi0gICAgaW50IGNvdW50Tm9uUHNldWRvUmVnaW9ucyA9IC0x
OwotICAgIGZvciAoY29uc3QgYXV0byYgcmVuZGVyUmVnaW9uIDogcmVnaW9uTGlzdCkgewotICAg
ICAgICBjb25zdCBhdXRvJiBuYW1lZEZsb3dGcmFnbWVudCA9IGRvd25jYXN0PFJlbmRlck5hbWVk
Rmxvd0ZyYWdtZW50PigqcmVuZGVyUmVnaW9uKTsKLSAgICAgICAgLy8gRklYTUU6IFBzZXVkby1l
bGVtZW50cyBhcmUgbm90IGluY2x1ZGVkIGluIHRoZSBsaXN0LgotICAgICAgICAvLyBUaGV5IHdp
bGwgYmUgaW5jbHVkZWQgd2hlbiB3ZSB3aWxsIHByb3Blcmx5IHN1cHBvcnQgdGhlIFJlZ2lvbiBp
bnRlcmZhY2UKLSAgICAgICAgLy8gaHR0cDovL2Rldi53My5vcmcvY3Nzd2cvY3NzLXJlZ2lvbnMv
I3RoZS1yZWdpb24taW50ZXJmYWNlCi0gICAgICAgIGlmIChuYW1lZEZsb3dGcmFnbWVudC5pc1Bz
ZXVkb0VsZW1lbnRSZWdpb24oKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICArK2Nv
dW50Tm9uUHNldWRvUmVnaW9uczsKLSAgICAgICAgaWYgKG5hbWVkRmxvd0ZyYWdtZW50LnJlZ2lv
bk92ZXJzZXRTdGF0ZSgpID09IFJlZ2lvbkVtcHR5KQotICAgICAgICAgICAgcmV0dXJuIGNvdW50
Tm9uUHNldWRvUmVnaW9uczsKLSAgICB9Ci0gICAgcmV0dXJuIC0xOwotfQotCi1SZWY8Tm9kZUxp
c3Q+IFdlYktpdE5hbWVkRmxvdzo6Z2V0UmVnaW9uc0J5Q29udGVudChOb2RlKiBjb250ZW50Tm9k
ZSkKLXsKLSAgICBpZiAoIWNvbnRlbnROb2RlKQotICAgICAgICByZXR1cm4gU3RhdGljRWxlbWVu
dExpc3Q6OmNyZWF0ZSgpOwotCi0gICAgaWYgKG1fZmxvd01hbmFnZXItPmRvY3VtZW50KCkpCi0g
ICAgICAgIG1fZmxvd01hbmFnZXItPmRvY3VtZW50KCktPnVwZGF0ZUxheW91dElnbm9yZVBlbmRp
bmdTdHlsZXNoZWV0cygpOwotCi0gICAgLy8gVGhlIHJlbmRlcmVyIG1heSBiZSBkZXN0cm95ZWQg
b3IgY3JlYXRlZCBhZnRlciB0aGUgc3R5bGUgdXBkYXRlLgotICAgIC8vIEJlY2F1c2UgdGhpcyBp
cyBjYWxsZWQgZnJvbSBKUywgd2hlcmUgdGhlIHdyYXBwZXIga2VlcHMgYSByZWZlcmVuY2UgdG8g
dGhlIE5hbWVkRmxvdywgbm8gZ3VhcmQgaXMgbmVjZXNzYXJ5LgotICAgIGlmICghbV9wYXJlbnRG
bG93VGhyZWFkKQotICAgICAgICByZXR1cm4gU3RhdGljRWxlbWVudExpc3Q6OmNyZWF0ZSgpOwot
Ci0gICAgVmVjdG9yPFJlZjxFbGVtZW50Pj4gcmVnaW9uRWxlbWVudHM7Ci0KLSAgICBpZiAoaW5G
bG93VGhyZWFkKGNvbnRlbnROb2RlLT5yZW5kZXJlcigpLCBtX3BhcmVudEZsb3dUaHJlYWQpKSB7
Ci0gICAgICAgIGNvbnN0IFJlbmRlclJlZ2lvbkxpc3QmIHJlZ2lvbkxpc3QgPSBtX3BhcmVudEZs
b3dUaHJlYWQtPnJlbmRlclJlZ2lvbkxpc3QoKTsKLSAgICAgICAgZm9yIChjb25zdCBhdXRvJiBy
ZW5kZXJSZWdpb24gOiByZWdpb25MaXN0KSB7Ci0gICAgICAgICAgICBjb25zdCBhdXRvJiBuYW1l
ZEZsb3dGcmFnbWVudCA9IGRvd25jYXN0PFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50PigqcmVuZGVy
UmVnaW9uKTsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBQc2V1ZG8tZWxlbWVudHMgYXJlIG5vdCBp
bmNsdWRlZCBpbiB0aGUgbGlzdC4KLSAgICAgICAgICAgIC8vIFRoZXkgd2lsbCBiZSBpbmNsdWRl
ZCB3aGVuIHdlIHdpbGwgcHJvcGVybHkgc3VwcG9ydCB0aGUgUmVnaW9uIGludGVyZmFjZQotICAg
ICAgICAgICAgLy8gaHR0cDovL2Rldi53My5vcmcvY3Nzd2cvY3NzLXJlZ2lvbnMvI3RoZS1yZWdp
b24taW50ZXJmYWNlCi0gICAgICAgICAgICBpZiAobmFtZWRGbG93RnJhZ21lbnQuaXNQc2V1ZG9F
bGVtZW50UmVnaW9uKCkpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBp
ZiAobV9wYXJlbnRGbG93VGhyZWFkLT5vYmplY3RJbkZsb3dSZWdpb24oY29udGVudE5vZGUtPnJl
bmRlcmVyKCksICZuYW1lZEZsb3dGcmFnbWVudCkpIHsKLSAgICAgICAgICAgICAgICBBU1NFUlQo
bmFtZWRGbG93RnJhZ21lbnQuZ2VuZXJhdGluZ0VsZW1lbnQoKSk7Ci0gICAgICAgICAgICAgICAg
cmVnaW9uRWxlbWVudHMuYXBwZW5kKCpuYW1lZEZsb3dGcmFnbWVudC5nZW5lcmF0aW5nRWxlbWVu
dCgpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiBTdGF0
aWNFbGVtZW50TGlzdDo6Y3JlYXRlKFdURk1vdmUocmVnaW9uRWxlbWVudHMpKTsKLX0KLQotUmVm
PE5vZGVMaXN0PiBXZWJLaXROYW1lZEZsb3c6OmdldFJlZ2lvbnMoKQotewotICAgIGlmIChtX2Zs
b3dNYW5hZ2VyLT5kb2N1bWVudCgpKQotICAgICAgICBtX2Zsb3dNYW5hZ2VyLT5kb2N1bWVudCgp
LT51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoKTsKLQotICAgIC8vIFRoZSBy
ZW5kZXJlciBtYXkgYmUgZGVzdHJveWVkIG9yIGNyZWF0ZWQgYWZ0ZXIgdGhlIHN0eWxlIHVwZGF0
ZS4KLSAgICAvLyBCZWNhdXNlIHRoaXMgaXMgY2FsbGVkIGZyb20gSlMsIHdoZXJlIHRoZSB3cmFw
cGVyIGtlZXBzIGEgcmVmZXJlbmNlIHRvIHRoZSBOYW1lZEZsb3csIG5vIGd1YXJkIGlzIG5lY2Vz
c2FyeS4KLSAgICBpZiAoIW1fcGFyZW50Rmxvd1RocmVhZCkKLSAgICAgICAgcmV0dXJuIFN0YXRp
Y0VsZW1lbnRMaXN0OjpjcmVhdGUoKTsKLQotICAgIFZlY3RvcjxSZWY8RWxlbWVudD4+IHJlZ2lv
bkVsZW1lbnRzOwotCi0gICAgY29uc3QgUmVuZGVyUmVnaW9uTGlzdCYgcmVnaW9uTGlzdCA9IG1f
cGFyZW50Rmxvd1RocmVhZC0+cmVuZGVyUmVnaW9uTGlzdCgpOwotICAgIGZvciAoY29uc3QgYXV0
byYgcmVuZGVyUmVnaW9uIDogcmVnaW9uTGlzdCkgewotICAgICAgICBjb25zdCBhdXRvJiBuYW1l
ZEZsb3dGcmFnbWVudCA9IGRvd25jYXN0PFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50PigqcmVuZGVy
UmVnaW9uKTsKLSAgICAgICAgLy8gRklYTUU6IFBzZXVkby1lbGVtZW50cyBhcmUgbm90IGluY2x1
ZGVkIGluIHRoZSBsaXN0LgotICAgICAgICAvLyBUaGV5IHdpbGwgYmUgaW5jbHVkZWQgd2hlbiB3
ZSB3aWxsIHByb3Blcmx5IHN1cHBvcnQgdGhlIFJlZ2lvbiBpbnRlcmZhY2UKLSAgICAgICAgLy8g
aHR0cDovL2Rldi53My5vcmcvY3Nzd2cvY3NzLXJlZ2lvbnMvI3RoZS1yZWdpb24taW50ZXJmYWNl
Ci0gICAgICAgIGlmIChuYW1lZEZsb3dGcmFnbWVudC5pc1BzZXVkb0VsZW1lbnRSZWdpb24oKSkK
LSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBBU1NFUlQobmFtZWRGbG93RnJhZ21lbnQu
Z2VuZXJhdGluZ0VsZW1lbnQoKSk7Ci0gICAgICAgIHJlZ2lvbkVsZW1lbnRzLmFwcGVuZCgqbmFt
ZWRGbG93RnJhZ21lbnQuZ2VuZXJhdGluZ0VsZW1lbnQoKSk7Ci0gICAgfQotCi0gICAgcmV0dXJu
IFN0YXRpY0VsZW1lbnRMaXN0OjpjcmVhdGUoV1RGTW92ZShyZWdpb25FbGVtZW50cykpOwotfQot
Ci1SZWY8Tm9kZUxpc3Q+IFdlYktpdE5hbWVkRmxvdzo6Z2V0Q29udGVudCgpCi17Ci0gICAgaWYg
KG1fZmxvd01hbmFnZXItPmRvY3VtZW50KCkpCi0gICAgICAgIG1fZmxvd01hbmFnZXItPmRvY3Vt
ZW50KCktPnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOwotCi0gICAgLy8g
VGhlIHJlbmRlcmVyIG1heSBiZSBkZXN0cm95ZWQgb3IgY3JlYXRlZCBhZnRlciB0aGUgc3R5bGUg
dXBkYXRlLgotICAgIC8vIEJlY2F1c2UgdGhpcyBpcyBjYWxsZWQgZnJvbSBKUywgd2hlcmUgdGhl
IHdyYXBwZXIga2VlcHMgYSByZWZlcmVuY2UgdG8gdGhlIE5hbWVkRmxvdywgbm8gZ3VhcmQgaXMg
bmVjZXNzYXJ5LgotICAgIGlmICghbV9wYXJlbnRGbG93VGhyZWFkKQotICAgICAgICByZXR1cm4g
U3RhdGljRWxlbWVudExpc3Q6OmNyZWF0ZSgpOwotCi0gICAgYXV0byYgY29udGVudEVsZW1lbnRz
TGlzdCA9IG1fcGFyZW50Rmxvd1RocmVhZC0+Y29udGVudEVsZW1lbnRzKCk7Ci0gICAgVmVjdG9y
PFJlZjxFbGVtZW50Pj4gY29udGVudEVsZW1lbnRzOwotICAgIGNvbnRlbnRFbGVtZW50cy5yZXNl
cnZlSW5pdGlhbENhcGFjaXR5KGNvbnRlbnRFbGVtZW50c0xpc3Quc2l6ZSgpKTsKLSAgICBmb3Ig
KGF1dG8mIGVsZW1lbnQgOiBjb250ZW50RWxlbWVudHNMaXN0KSB7Ci0gICAgICAgIEFTU0VSVChl
bGVtZW50LT5jb21wdXRlZFN0eWxlKCktPmZsb3dUaHJlYWQoKSA9PSBtX3BhcmVudEZsb3dUaHJl
YWQtPmZsb3dUaHJlYWROYW1lKCkpOwotICAgICAgICBjb250ZW50RWxlbWVudHMudW5jaGVja2Vk
QXBwZW5kKCplbGVtZW50KTsKLSAgICB9Ci0KLSAgICByZXR1cm4gU3RhdGljRWxlbWVudExpc3Q6
OmNyZWF0ZShXVEZNb3ZlKGNvbnRlbnRFbGVtZW50cykpOwotfQotCi12b2lkIFdlYktpdE5hbWVk
Rmxvdzo6c2V0UmVuZGVyZXIoUmVuZGVyTmFtZWRGbG93VGhyZWFkKiBwYXJlbnRGbG93VGhyZWFk
KQotewotICAgIC8vIFRoZSBuYW1lZCBmbG93IGNhbiBlaXRoZXIgZ28gZnJvbSBhIG5vX3JlbmRl
cmVyLT5yZW5kZXJlciBvciByZW5kZXJlci0+bm9fcmVuZGVyZXIgc3RhdGU7IGFueXRoaW5nIGVs
c2UgY291bGQgaW5kaWNhdGUgYSBidWcuCi0gICAgQVNTRVJUKCghbV9wYXJlbnRGbG93VGhyZWFk
ICYmIHBhcmVudEZsb3dUaHJlYWQpIHx8IChtX3BhcmVudEZsb3dUaHJlYWQgJiYgIXBhcmVudEZs
b3dUaHJlYWQpKTsKLQotICAgIC8vIElmIHBhcmVudEZsb3dUaHJlYWQgaXMgMCwgdGhlIGZsb3cg
dGhyZWFkIHdpbGwgbW92ZSBpbiB0aGUgIk5VTEwiIHN0YXRlLgotICAgIG1fcGFyZW50Rmxvd1Ro
cmVhZCA9IHBhcmVudEZsb3dUaHJlYWQ7Ci19Ci0KLXZvaWQgV2ViS2l0TmFtZWRGbG93OjpkaXNw
YXRjaFJlZ2lvbk92ZXJzZXRDaGFuZ2VFdmVudCgpCi17Ci0gICAgQVNTRVJUX1dJVEhfU0VDVVJJ
VFlfSU1QTElDQVRJT04oTm9FdmVudERpc3BhdGNoQXNzZXJ0aW9uOjppc0V2ZW50QWxsb3dlZElu
TWFpblRocmVhZCgpKTsKLSAgICAKLSAgICAvLyBJZiB0aGUgZmxvdyBpcyBpbiB0aGUgIk5VTEwi
IHN0YXRlIHRoZSBldmVudCBzaG91bGQgbm90IGJlIGRpc3BhdGNoZWQgYW55IG1vcmUuCi0gICAg
aWYgKGZsb3dTdGF0ZSgpID09IEZsb3dTdGF0ZU51bGwpCi0gICAgICAgIHJldHVybjsKLQotICAg
IGRpc3BhdGNoRXZlbnQoVUlFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS53ZWJraXRyZWdpb25v
dmVyc2V0Y2hhbmdlRXZlbnQsIGZhbHNlLCBmYWxzZSwgbV9mbG93TWFuYWdlci0+ZG9jdW1lbnQo
KS0+ZGVmYXVsdFZpZXcoKSwgMCkpOwotfQotCi1TY3JpcHRFeGVjdXRpb25Db250ZXh0KiBXZWJL
aXROYW1lZEZsb3c6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAotewotICAgIHJldHVy
biBtX2Zsb3dNYW5hZ2VyLT5kb2N1bWVudCgpOwotfQotCi1Ob2RlKiBXZWJLaXROYW1lZEZsb3c6
Om93bmVyTm9kZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fZmxvd01hbmFnZXItPmRvY3VtZW50
KCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQpJbmRleDogU291cmNlL1dlYkNvcmUv
ZG9tL1dlYktpdE5hbWVkRmxvdy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9X
ZWJLaXROYW1lZEZsb3cuaAkocmV2aXNpb24gMjIyMjU3KQorKysgU291cmNlL1dlYkNvcmUvZG9t
L1dlYktpdE5hbWVkRmxvdy5oCShub25leGlzdGVudCkKQEAgLTEsOTMgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMSBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqCi0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlCi0gKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZwotICogICAgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqICAgIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCi0gKiAg
ICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMK
LSAqICAgIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIAotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUiAiQVMgSVMiIEFORCBBTlkK
LSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIEJFCi0gKiBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksCi0gKiBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SCi0gKiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YKLSAqIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgot
ICogU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJFdmVudFRh
cmdldC5oIgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0
ci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLWNsYXNzIE5hbWVkRmxvd0NvbGxlY3Rpb247Ci1jbGFzcyBOb2RlOwotY2xhc3Mg
Tm9kZUxpc3Q7Ci1jbGFzcyBSZW5kZXJOYW1lZEZsb3dUaHJlYWQ7Ci1jbGFzcyBTY3JpcHRFeGVj
dXRpb25Db250ZXh0OwotCi1jbGFzcyBXZWJLaXROYW1lZEZsb3cgZmluYWwgOiBwdWJsaWMgUmVm
Q291bnRlZDxXZWJLaXROYW1lZEZsb3c+LCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0
YSB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxXZWJLaXROYW1lZEZsb3c+IGNyZWF0ZShOYW1l
ZEZsb3dDb2xsZWN0aW9uJiBtYW5hZ2VyLCBjb25zdCBBdG9taWNTdHJpbmcmIGZsb3dUaHJlYWRO
YW1lKTsKLQotICAgIH5XZWJLaXROYW1lZEZsb3coKTsKLQotICAgIGNvbnN0IEF0b21pY1N0cmlu
ZyYgbmFtZSgpIGNvbnN0OwotICAgIGJvb2wgb3ZlcnNldCgpIGNvbnN0OwotICAgIGludCBmaXJz
dEVtcHR5UmVnaW9uSW5kZXgoKSBjb25zdDsKLSAgICBSZWY8Tm9kZUxpc3Q+IGdldFJlZ2lvbnNC
eUNvbnRlbnQoTm9kZSopOwotICAgIFJlZjxOb2RlTGlzdD4gZ2V0UmVnaW9ucygpOwotICAgIFJl
ZjxOb2RlTGlzdD4gZ2V0Q29udGVudCgpOwotCi0gICAgdXNpbmcgUmVmQ291bnRlZDxXZWJLaXRO
YW1lZEZsb3c+OjpyZWY7Ci0gICAgdXNpbmcgUmVmQ291bnRlZDxXZWJLaXROYW1lZEZsb3c+Ojpk
ZXJlZjsKLQotICAgIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gV2ViS2l0TmFtZWRGbG93RXZlbnRUYXJnZXRJbnRlcmZh
Y2VUeXBlOyB9Ci0gICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpIGNvbnN0IG92ZXJyaWRlOwotCi0gICAgLy8gVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQg
ZnJvbSB0aGUgSlMgYmluZGluZyBjb2RlIHRvIGRldGVybWluZSBpZiB0aGUgTmFtZWRGbG93IG9i
amVjdCBpcyByZWFjaGFibGUgb3Igbm90LgotICAgIC8vIElmIHRoZSBvYmplY3QgaGFzIGxpc3Rl
bmVycywgdGhlIG9iamVjdCBzaG91bGQgb25seSBiZSBkaXNjYXJkZWQgaWYgdGhlIHBhcmVudCBE
b2N1bWVudCBpcyBub3QgcmVhY2hhYmxlLgotICAgIE5vZGUqIG93bmVyTm9kZSgpIGNvbnN0Owot
Ci0gICAgdm9pZCBzZXRSZW5kZXJlcihSZW5kZXJOYW1lZEZsb3dUaHJlYWQqIHBhcmVudEZsb3dU
aHJlYWQpOwotCi0gICAgZW51bSBGbG93U3RhdGUgewotICAgICAgICBGbG93U3RhdGVDcmVhdGVk
LAotICAgICAgICBGbG93U3RhdGVOdWxsCi0gICAgfTsKLQotICAgIEZsb3dTdGF0ZSBmbG93U3Rh
dGUoKSBjb25zdCB7IHJldHVybiBtX3BhcmVudEZsb3dUaHJlYWQgPyBGbG93U3RhdGVDcmVhdGVk
IDogRmxvd1N0YXRlTnVsbDsgfQotCi0gICAgdm9pZCBkaXNwYXRjaFJlZ2lvbk92ZXJzZXRDaGFu
Z2VFdmVudCgpOwotCi1wcml2YXRlOgotICAgIFdlYktpdE5hbWVkRmxvdyhOYW1lZEZsb3dDb2xs
ZWN0aW9uJiwgY29uc3QgQXRvbWljU3RyaW5nJik7Ci0KLSAgICAvLyBFdmVudFRhcmdldCBpbXBs
ZW1lbnRhdGlvbi4KLSAgICB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgb3ZlcnJpZGUgeyByZWYoKTsg
fQotICAgIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIG92ZXJyaWRlIHsgZGVyZWYoKTsgfQotCi0g
ICAgLy8gVGhlIG5hbWUgb2YgdGhlIGZsb3cgdGhyZWFkIGFzIHNwZWNpZmllZCBpbiBDU1MuCi0g
ICAgQXRvbWljU3RyaW5nIG1fZmxvd1RocmVhZE5hbWU7Ci0KLSAgICBSZWZQdHI8TmFtZWRGbG93
Q29sbGVjdGlvbj4gbV9mbG93TWFuYWdlcjsKLSAgICBSZW5kZXJOYW1lZEZsb3dUaHJlYWQqIG1f
cGFyZW50Rmxvd1RocmVhZDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2RvbS9XZWJLaXROYW1lZEZsb3cuaWRsCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2RvbS9XZWJLaXROYW1lZEZsb3cuaWRsCShyZXZpc2lvbiAyMjIyNTcpCisrKyBT
b3VyY2UvV2ViQ29yZS9kb20vV2ViS2l0TmFtZWRGbG93LmlkbAkobm9uZXhpc3RlbnQpCkBAIC0x
LDQyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQWRvYmUgU3lzdGVtcyBJbmNv
cnBvcmF0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZQotICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKLSAqICAgIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCi0gKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZwotICogICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzCi0gKiAgICBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKiAKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVIgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBC
RQotICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLAotICogT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUgotICogVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GCi0gKiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YKLSAqIFNVQ0ggREFNQUdFLgotICovCi0KLVsKLSAgICBHZW5lcmF0
ZUlzUmVhY2hhYmxlPUltcGxPd25lck5vZGVSb290LAotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAot
XSBpbnRlcmZhY2UgV2ViS2l0TmFtZWRGbG93IDogRXZlbnRUYXJnZXQKLXsKLSAgICByZWFkb25s
eSBhdHRyaWJ1dGUgRE9NU3RyaW5nIG5hbWU7Ci0gICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xl
YW4gb3ZlcnNldDsKLSAgICByZWFkb25seSBhdHRyaWJ1dGUgbG9uZyBmaXJzdEVtcHR5UmVnaW9u
SW5kZXg7Ci0gICAgLy8gRklYTUU6IGNvbnRlbnROb2RlIHNob3VsZCBub3QgYmUgbnVsbGFibGUu
Ci0gICAgTm9kZUxpc3QgZ2V0UmVnaW9uc0J5Q29udGVudChOb2RlPyBjb250ZW50Tm9kZSk7Ci0g
ICAgTm9kZUxpc3QgZ2V0UmVnaW9ucygpOwotICAgIE5vZGVMaXN0IGdldENvbnRlbnQoKTsKLX07
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5j
cHAJKHJldmlzaW9uIDIyMjI1NykKKysrIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDU1NBZ2VudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDE2ICszNywxNSBAQAogI2luY2x1
ZGUgIkNvbnRlbnRTZWN1cml0eVBvbGljeS5oIgogI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgogI2lu
Y2x1ZGUgIkZvbnRDYWNoZS5oIgorI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiSFRNTEhl
YWRFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFN0eWxlRWxlbWVudC5oIgogI2luY2x1ZGUgIklu
c3BlY3Rvckhpc3RvcnkuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JQYWdlQWdlbnQuaCIKICNpbmNs
dWRlICJJbnN0cnVtZW50aW5nQWdlbnRzLmgiCi0jaW5jbHVkZSAiTmFtZWRGbG93Q29sbGVjdGlv
bi5oIgogI2luY2x1ZGUgIk5vZGUuaCIKICNpbmNsdWRlICJOb2RlTGlzdC5oIgogI2luY2x1ZGUg
IlBzZXVkb0VsZW1lbnQuaCIKLSNpbmNsdWRlICJSZW5kZXJOYW1lZEZsb3dGcmFnbWVudC5oIgog
I2luY2x1ZGUgIlNWR1N0eWxlRWxlbWVudC5oIgogI2luY2x1ZGUgIlNlbGVjdG9yQ2hlY2tlci5o
IgogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKQEAgLTU2LDcgKzU1LDYgQEAKICNpbmNsdWRlICJT
dHlsZVJ1bGUuaCIKICNpbmNsdWRlICJTdHlsZVNjb3BlLmgiCiAjaW5jbHVkZSAiU3R5bGVTaGVl
dExpc3QuaCIKLSNpbmNsdWRlICJXZWJLaXROYW1lZEZsb3cuaCIKICNpbmNsdWRlIDxpbnNwZWN0
b3IvSW5zcGVjdG9yUHJvdG9jb2xPYmplY3RzLmg+CiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTEwMyw1NCArMTAxLDYgQEAgc3RhdGljIHVuc2lnbmVk
IGNvbXB1dGVQc2V1ZG9DbGFzc01hc2soYwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLWNsYXNz
IENoYW5nZVJlZ2lvbk92ZXJzZXRUYXNrIHsKLXB1YmxpYzoKLSAgICBDaGFuZ2VSZWdpb25PdmVy
c2V0VGFzayhJbnNwZWN0b3JDU1NBZ2VudCopOwotICAgIHZvaWQgc2NoZWR1bGVGb3IoV2ViS2l0
TmFtZWRGbG93KiwgaW50IGRvY3VtZW50Tm9kZUlkKTsKLSAgICB2b2lkIHVuc2NoZWR1bGUoV2Vi
S2l0TmFtZWRGbG93Kik7Ci0gICAgdm9pZCByZXNldCgpOwotICAgIHZvaWQgdGltZXJGaXJlZCgp
OwotCi1wcml2YXRlOgotICAgIEluc3BlY3RvckNTU0FnZW50KiBtX2Nzc0FnZW50OwotICAgIFRp
bWVyIG1fdGltZXI7Ci0gICAgSGFzaE1hcDxXZWJLaXROYW1lZEZsb3cqLCBpbnQ+IG1fbmFtZWRG
bG93czsKLX07Ci0KLUNoYW5nZVJlZ2lvbk92ZXJzZXRUYXNrOjpDaGFuZ2VSZWdpb25PdmVyc2V0
VGFzayhJbnNwZWN0b3JDU1NBZ2VudCogY3NzQWdlbnQpCi0gICAgOiBtX2Nzc0FnZW50KGNzc0Fn
ZW50KQotICAgICwgbV90aW1lcigqdGhpcywgJkNoYW5nZVJlZ2lvbk92ZXJzZXRUYXNrOjp0aW1l
ckZpcmVkKQotewotfQotCi12b2lkIENoYW5nZVJlZ2lvbk92ZXJzZXRUYXNrOjpzY2hlZHVsZUZv
cihXZWJLaXROYW1lZEZsb3cqIG5hbWVkRmxvdywgaW50IGRvY3VtZW50Tm9kZUlkKQotewotICAg
IG1fbmFtZWRGbG93cy5hZGQobmFtZWRGbG93LCBkb2N1bWVudE5vZGVJZCk7Ci0KLSAgICBpZiAo
IW1fdGltZXIuaXNBY3RpdmUoKSkKLSAgICAgICAgbV90aW1lci5zdGFydE9uZVNob3QoMF9zKTsK
LX0KLQotdm9pZCBDaGFuZ2VSZWdpb25PdmVyc2V0VGFzazo6dW5zY2hlZHVsZShXZWJLaXROYW1l
ZEZsb3cqIG5hbWVkRmxvdykKLXsKLSAgICBtX25hbWVkRmxvd3MucmVtb3ZlKG5hbWVkRmxvdyk7
Ci19Ci0KLXZvaWQgQ2hhbmdlUmVnaW9uT3ZlcnNldFRhc2s6OnJlc2V0KCkKLXsKLSAgICBtX3Rp
bWVyLnN0b3AoKTsKLSAgICBtX25hbWVkRmxvd3MuY2xlYXIoKTsKLX0KLQotdm9pZCBDaGFuZ2VS
ZWdpb25PdmVyc2V0VGFzazo6dGltZXJGaXJlZCgpCi17Ci0gICAgLy8gVGhlIHRpbWVyIGlzIHN0
b3BwZWQgb24gbV9jc3NBZ2VudCBkZXN0cnVjdGlvbiwgc28gdGhpcyBtZXRob2Qgd2lsbCBuZXZl
ciBiZSBjYWxsZWQgYWZ0ZXIgbV9jc3NBZ2VudCBoYXMgYmVlbiBkZXN0cm95ZWQuCi0gICAgZm9y
IChhdXRvJiBuYW1lZEZsb3cgOiBtX25hbWVkRmxvd3MpCi0gICAgICAgIG1fY3NzQWdlbnQtPnJl
Z2lvbk92ZXJzZXRDaGFuZ2VkKG5hbWVkRmxvdy5rZXksIG5hbWVkRmxvdy52YWx1ZSk7Ci0KLSAg
ICBtX25hbWVkRmxvd3MuY2xlYXIoKTsKLX0KLQogY2xhc3MgSW5zcGVjdG9yQ1NTQWdlbnQ6OlN0
eWxlU2hlZXRBY3Rpb24gOiBwdWJsaWMgSW5zcGVjdG9ySGlzdG9yeTo6QWN0aW9uIHsKICAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShTdHlsZVNoZWV0QWN0aW9uKTsKIHB1YmxpYzoKQEAgLTM4NSw5
ICszMzUsNiBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpyZXNldCgpCiAKIHZvaWQgSW5zcGVj
dG9yQ1NTQWdlbnQ6OnJlc2V0Tm9uUGVyc2lzdGVudERhdGEoKQogewotICAgIG1fbmFtZWRGbG93
Q29sbGVjdGlvbnNSZXF1ZXN0ZWQuY2xlYXIoKTsKLSAgICBpZiAobV9jaGFuZ2VSZWdpb25PdmVy
c2V0VGFzaykKLSAgICAgICAgbV9jaGFuZ2VSZWdpb25PdmVyc2V0VGFzay0+cmVzZXQoKTsKICAg
ICByZXNldFBzZXVkb1N0YXRlcygpOwogfQogCkBAIC00NTgsNzcgKzQwNSw2IEBAIHZvaWQgSW5z
cGVjdG9yQ1NTQWdlbnQ6OnNldEFjdGl2ZVN0eWxlU2gKICAgICB9CiB9CiAKLXZvaWQgSW5zcGVj
dG9yQ1NTQWdlbnQ6OmRpZENyZWF0ZU5hbWVkRmxvdyhEb2N1bWVudCYgZG9jdW1lbnQsIFdlYktp
dE5hbWVkRmxvdyYgbmFtZWRGbG93KQotewotICAgIGludCBkb2N1bWVudE5vZGVJZCA9IGRvY3Vt
ZW50Tm9kZVdpdGhSZXF1ZXN0ZWRGbG93c0lkKCZkb2N1bWVudCk7Ci0gICAgaWYgKCFkb2N1bWVu
dE5vZGVJZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgRXJyb3JTdHJpbmcgdW51c2VkOwotICAg
IG1fZnJvbnRlbmREaXNwYXRjaGVyLT5uYW1lZEZsb3dDcmVhdGVkKGJ1aWxkT2JqZWN0Rm9yTmFt
ZWRGbG93KHVudXNlZCwgJm5hbWVkRmxvdywgZG9jdW1lbnROb2RlSWQpKTsKLX0KLQotdm9pZCBJ
bnNwZWN0b3JDU1NBZ2VudDo6d2lsbFJlbW92ZU5hbWVkRmxvdyhEb2N1bWVudCYgZG9jdW1lbnQs
IFdlYktpdE5hbWVkRmxvdyYgbmFtZWRGbG93KQotewotICAgIGludCBkb2N1bWVudE5vZGVJZCA9
IGRvY3VtZW50Tm9kZVdpdGhSZXF1ZXN0ZWRGbG93c0lkKCZkb2N1bWVudCk7Ci0gICAgaWYgKCFk
b2N1bWVudE5vZGVJZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKG1fY2hhbmdlUmVnaW9u
T3ZlcnNldFRhc2spCi0gICAgICAgIG1fY2hhbmdlUmVnaW9uT3ZlcnNldFRhc2stPnVuc2NoZWR1
bGUoJm5hbWVkRmxvdyk7Ci0KLSAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+bmFtZWRGbG93UmVt
b3ZlZChkb2N1bWVudE5vZGVJZCwgbmFtZWRGbG93Lm5hbWUoKS5zdHJpbmcoKSk7Ci19Ci0KLXZv
aWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmRpZENoYW5nZVJlZ2lvbk92ZXJzZXQoRG9jdW1lbnQmIGRv
Y3VtZW50LCBXZWJLaXROYW1lZEZsb3cmIG5hbWVkRmxvdykKLXsKLSAgICBpbnQgZG9jdW1lbnRO
b2RlSWQgPSBkb2N1bWVudE5vZGVXaXRoUmVxdWVzdGVkRmxvd3NJZCgmZG9jdW1lbnQpOwotICAg
IGlmICghZG9jdW1lbnROb2RlSWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmICghbV9jaGFu
Z2VSZWdpb25PdmVyc2V0VGFzaykKLSAgICAgICAgbV9jaGFuZ2VSZWdpb25PdmVyc2V0VGFzayA9
IHN0ZDo6bWFrZV91bmlxdWU8Q2hhbmdlUmVnaW9uT3ZlcnNldFRhc2s+KHRoaXMpOwotICAgIG1f
Y2hhbmdlUmVnaW9uT3ZlcnNldFRhc2stPnNjaGVkdWxlRm9yKCZuYW1lZEZsb3csIGRvY3VtZW50
Tm9kZUlkKTsKLX0KLQotdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6cmVnaW9uT3ZlcnNldENoYW5n
ZWQoV2ViS2l0TmFtZWRGbG93KiBuYW1lZEZsb3csIGludCBkb2N1bWVudE5vZGVJZCkKLXsKLSAg
ICBpZiAobmFtZWRGbG93LT5mbG93U3RhdGUoKSA9PSBXZWJLaXROYW1lZEZsb3c6OkZsb3dTdGF0
ZU51bGwpCi0gICAgICAgIHJldHVybjsKLQotICAgIEVycm9yU3RyaW5nIHVudXNlZDsKLSAgICBS
ZWY8V2ViS2l0TmFtZWRGbG93PiBwcm90ZWN0KCpuYW1lZEZsb3cpOwotCi0gICAgbV9mcm9udGVu
ZERpc3BhdGNoZXItPnJlZ2lvbk92ZXJzZXRDaGFuZ2VkKGJ1aWxkT2JqZWN0Rm9yTmFtZWRGbG93
KHVudXNlZCwgbmFtZWRGbG93LCBkb2N1bWVudE5vZGVJZCkpOwotfQotCi12b2lkIEluc3BlY3Rv
ckNTU0FnZW50OjpkaWRSZWdpc3Rlck5hbWVkRmxvd0NvbnRlbnRFbGVtZW50KERvY3VtZW50JiBk
b2N1bWVudCwgV2ViS2l0TmFtZWRGbG93JiBuYW1lZEZsb3csIE5vZGUmIGNvbnRlbnRFbGVtZW50
LCBOb2RlKiBuZXh0Q29udGVudEVsZW1lbnQpCi17Ci0gICAgaW50IGRvY3VtZW50Tm9kZUlkID0g
ZG9jdW1lbnROb2RlV2l0aFJlcXVlc3RlZEZsb3dzSWQoJmRvY3VtZW50KTsKLSAgICBpZiAoIWRv
Y3VtZW50Tm9kZUlkKQotICAgICAgICByZXR1cm47Ci0KLSAgICBFcnJvclN0cmluZyB1bnVzZWQ7
Ci0gICAgaW50IGNvbnRlbnRFbGVtZW50Tm9kZUlkID0gbV9kb21BZ2VudC0+cHVzaE5vZGVUb0Zy
b250ZW5kKHVudXNlZCwgZG9jdW1lbnROb2RlSWQsICZjb250ZW50RWxlbWVudCk7Ci0gICAgaW50
IG5leHRDb250ZW50RWxlbWVudE5vZGVJZCA9IG5leHRDb250ZW50RWxlbWVudCA/IG1fZG9tQWdl
bnQtPnB1c2hOb2RlVG9Gcm9udGVuZCh1bnVzZWQsIGRvY3VtZW50Tm9kZUlkLCBuZXh0Q29udGVu
dEVsZW1lbnQpIDogMDsKLSAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+cmVnaXN0ZXJlZE5hbWVk
Rmxvd0NvbnRlbnRFbGVtZW50KGRvY3VtZW50Tm9kZUlkLCBuYW1lZEZsb3cubmFtZSgpLnN0cmlu
ZygpLCBjb250ZW50RWxlbWVudE5vZGVJZCwgbmV4dENvbnRlbnRFbGVtZW50Tm9kZUlkKTsKLX0K
LQotdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6ZGlkVW5yZWdpc3Rlck5hbWVkRmxvd0NvbnRlbnRF
bGVtZW50KERvY3VtZW50JiBkb2N1bWVudCwgV2ViS2l0TmFtZWRGbG93JiBuYW1lZEZsb3csIE5v
ZGUmIGNvbnRlbnRFbGVtZW50KQotewotICAgIGludCBkb2N1bWVudE5vZGVJZCA9IGRvY3VtZW50
Tm9kZVdpdGhSZXF1ZXN0ZWRGbG93c0lkKCZkb2N1bWVudCk7Ci0gICAgaWYgKCFkb2N1bWVudE5v
ZGVJZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgRXJyb3JTdHJpbmcgdW51c2VkOwotICAgIGlu
dCBjb250ZW50RWxlbWVudE5vZGVJZCA9IG1fZG9tQWdlbnQtPnB1c2hOb2RlVG9Gcm9udGVuZCh1
bnVzZWQsIGRvY3VtZW50Tm9kZUlkLCAmY29udGVudEVsZW1lbnQpOwotICAgIGlmICghY29udGVu
dEVsZW1lbnROb2RlSWQpIHsKLSAgICAgICAgLy8gV2UndmUgYWxyZWFkeSBub3RpZmllZCB0aGF0
IHRoZSBET00gbm9kZSB3YXMgcmVtb3ZlZCBmcm9tIHRoZSBET00sIHNvIHRoZXJlJ3Mgbm8gbmVl
ZCB0byBzZW5kIGFub3RoZXIgZXZlbnQuCi0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgbV9m
cm9udGVuZERpc3BhdGNoZXItPnVucmVnaXN0ZXJlZE5hbWVkRmxvd0NvbnRlbnRFbGVtZW50KGRv
Y3VtZW50Tm9kZUlkLCBuYW1lZEZsb3cubmFtZSgpLnN0cmluZygpLCBjb250ZW50RWxlbWVudE5v
ZGVJZCk7Ci19Ci0KIGJvb2wgSW5zcGVjdG9yQ1NTQWdlbnQ6OmZvcmNlUHNldWRvU3RhdGUoY29u
c3QgRWxlbWVudCYgZWxlbWVudCwgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzVHlwZSBwc2V1ZG9D
bGFzc1R5cGUpCiB7CiAgICAgaWYgKG1fbm9kZUlkVG9Gb3JjZWRQc2V1ZG9TdGF0ZS5pc0VtcHR5
KCkpCkBAIC05MDEsMjEgKzc3Nyw4IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmZvcmNlUHNl
dWRvU3RhdGUKICAgICBlbGVtZW50LT5kb2N1bWVudCgpLnN0eWxlU2NvcGUoKS5kaWRDaGFuZ2VT
dHlsZVNoZWV0RW52aXJvbm1lbnQoKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0
TmFtZWRGbG93Q29sbGVjdGlvbihFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGludCBkb2N1bWVu
dE5vZGVJZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkNTUzo6TmFtZWRGbG93Pj4mIHJlc3VsdCkKK3ZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6
OmdldE5hbWVkRmxvd0NvbGxlY3Rpb24oRXJyb3JTdHJpbmcmLCBpbnQsIFJlZlB0cjxJbnNwZWN0
b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6Ok5hbWVkRmxvdz4+
JikKIHsKLSAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBtX2RvbUFnZW50LT5hc3NlcnREb2N1bWVu
dChlcnJvclN0cmluZywgZG9jdW1lbnROb2RlSWQpOwotICAgIGlmICghZG9jdW1lbnQpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIG1fbmFtZWRGbG93Q29sbGVjdGlvbnNSZXF1ZXN0ZWQuYWRkKGRv
Y3VtZW50Tm9kZUlkKTsKLQotICAgIFZlY3RvcjxSZWZQdHI8V2ViS2l0TmFtZWRGbG93Pj4gbmFt
ZWRGbG93c1ZlY3RvciA9IGRvY3VtZW50LT5uYW1lZEZsb3dzKCkubmFtZWRGbG93cygpOwotICAg
IGF1dG8gbmFtZWRGbG93cyA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkNTUzo6TmFtZWRGbG93Pjo6Y3JlYXRlKCk7Ci0KLSAgICBmb3IgKGF1dG8mIG5h
bWVkRmxvdyA6IG5hbWVkRmxvd3NWZWN0b3IpCi0gICAgICAgIG5hbWVkRmxvd3MtPmFkZEl0ZW0o
YnVpbGRPYmplY3RGb3JOYW1lZEZsb3coZXJyb3JTdHJpbmcsIG5hbWVkRmxvdy5nZXQoKSwgZG9j
dW1lbnROb2RlSWQpKTsKLQotICAgIHJlc3VsdCA9IFdURk1vdmUobmFtZWRGbG93cyk7CiB9CiAK
IEluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZSYgSW5zcGVjdG9yQ1NTQWdlbnQ6OmFz
SW5zcGVjdG9yU3R5bGVTaGVldChTdHlsZWRFbGVtZW50JiBlbGVtZW50KQpAQCAtOTQ3LDE1ICs4
MTAsNiBAQCBFbGVtZW50KiBJbnNwZWN0b3JDU1NBZ2VudDo6ZWxlbWVudEZvcklkCiAgICAgcmV0
dXJuIGRvd25jYXN0PEVsZW1lbnQ+KG5vZGUpOwogfQogCi1pbnQgSW5zcGVjdG9yQ1NTQWdlbnQ6
OmRvY3VtZW50Tm9kZVdpdGhSZXF1ZXN0ZWRGbG93c0lkKERvY3VtZW50KiBkb2N1bWVudCkKLXsK
LSAgICBpbnQgZG9jdW1lbnROb2RlSWQgPSBtX2RvbUFnZW50LT5ib3VuZE5vZGVJZChkb2N1bWVu
dCk7Ci0gICAgaWYgKCFkb2N1bWVudE5vZGVJZCB8fCAhbV9uYW1lZEZsb3dDb2xsZWN0aW9uc1Jl
cXVlc3RlZC5jb250YWlucyhkb2N1bWVudE5vZGVJZCkpCi0gICAgICAgIHJldHVybiAwOwotCi0g
ICAgcmV0dXJuIGRvY3VtZW50Tm9kZUlkOwotfQotCiBTdHJpbmcgSW5zcGVjdG9yQ1NTQWdlbnQ6
OnVuYmluZFN0eWxlU2hlZXQoSW5zcGVjdG9yU3R5bGVTaGVldCogaW5zcGVjdG9yU3R5bGVTaGVl
dCkKIHsKICAgICBTdHJpbmcgaWQgPSBpbnNwZWN0b3JTdHlsZVNoZWV0LT5pZCgpOwpAQCAtMTA5
Miw2MSArOTQ2LDYgQEAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTU3R5bAog
ICAgIHJldHVybiBpbnNwZWN0b3JTdHlsZS0+YnVpbGRPYmplY3RGb3JTdHlsZSgpOwogfQogCi1S
ZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NT
OjpSZWdpb24+PiBJbnNwZWN0b3JDU1NBZ2VudDo6YnVpbGRBcnJheUZvclJlZ2lvbnMoRXJyb3JT
dHJpbmcmIGVycm9yU3RyaW5nLCBSZWZQdHI8Tm9kZUxpc3Q+JiYgcmVnaW9uTGlzdCwgaW50IGRv
Y3VtZW50Tm9kZUlkKQotewotICAgIGF1dG8gcmVnaW9ucyA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6UmVnaW9uPjo6Y3JlYXRlKCk7Ci0KLSAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcmVnaW9uTGlzdC0+bGVuZ3RoKCk7ICsraSkgewot
ICAgICAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OlJlZ2lvbjo6UmVnaW9uT3ZlcnNldCBy
ZWdpb25PdmVyc2V0OwotCi0gICAgICAgIHN3aXRjaCAoZG93bmNhc3Q8RWxlbWVudD4ocmVnaW9u
TGlzdC0+aXRlbShpKSktPnJlZ2lvbk92ZXJzZXRTdGF0ZSgpKSB7Ci0gICAgICAgIGNhc2UgUmVn
aW9uRml0OgotICAgICAgICAgICAgcmVnaW9uT3ZlcnNldCA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkNTUzo6UmVnaW9uOjpSZWdpb25PdmVyc2V0OjpGaXQ7Ci0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgY2FzZSBSZWdpb25FbXB0eToKLSAgICAgICAgICAgIHJlZ2lvbk92ZXJzZXQgPSBJbnNw
ZWN0b3I6OlByb3RvY29sOjpDU1M6OlJlZ2lvbjo6UmVnaW9uT3ZlcnNldDo6RW1wdHk7Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBSZWdpb25PdmVyc2V0OgotICAgICAgICAgICAg
cmVnaW9uT3ZlcnNldCA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6UmVnaW9uOjpSZWdpb25P
dmVyc2V0OjpPdmVyc2V0OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgUmVnaW9u
VW5kZWZpbmVkOgotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAg
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAg
ICAgICB9Ci0KLSAgICAgICAgYXV0byByZWdpb24gPSBJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6
OlJlZ2lvbjo6Y3JlYXRlKCkKLSAgICAgICAgICAgIC5zZXRSZWdpb25PdmVyc2V0KHJlZ2lvbk92
ZXJzZXQpCi0gICAgICAgICAgICAvLyBkb2N1bWVudE5vZGVJZCB3YXMgcHJldmlvdXNseSBhc3Nl
cnRlZAotICAgICAgICAgICAgLnNldE5vZGVJZChtX2RvbUFnZW50LT5wdXNoTm9kZVRvRnJvbnRl
bmQoZXJyb3JTdHJpbmcsIGRvY3VtZW50Tm9kZUlkLCByZWdpb25MaXN0LT5pdGVtKGkpKSkKLSAg
ICAgICAgICAgIC5yZWxlYXNlKCk7Ci0KLSAgICAgICAgcmVnaW9ucy0+YWRkSXRlbShXVEZNb3Zl
KHJlZ2lvbikpOwotICAgIH0KLQotICAgIHJldHVybiBXVEZNb3ZlKHJlZ2lvbnMpOwotfQotCi1S
ZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpOYW1lZEZsb3c+IEluc3BlY3RvckNTU0Fn
ZW50OjpidWlsZE9iamVjdEZvck5hbWVkRmxvdyhFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIFdl
YktpdE5hbWVkRmxvdyogd2Via2l0TmFtZWRGbG93LCBpbnQgZG9jdW1lbnROb2RlSWQpCi17Ci0g
ICAgUmVmUHRyPE5vZGVMaXN0PiBjb250ZW50TGlzdCA9IHdlYmtpdE5hbWVkRmxvdy0+Z2V0Q29u
dGVudCgpOwotICAgIGF1dG8gY29udGVudCA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PGlu
dD46OmNyZWF0ZSgpOwotCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNvbnRlbnRMaXN0
LT5sZW5ndGgoKTsgKytpKSB7Ci0gICAgICAgIC8vIGRvY3VtZW50Tm9kZUlkIHdhcyBwcmV2aW91
c2x5IGFzc2VydGVkCi0gICAgICAgIGNvbnRlbnQtPmFkZEl0ZW0obV9kb21BZ2VudC0+cHVzaE5v
ZGVUb0Zyb250ZW5kKGVycm9yU3RyaW5nLCBkb2N1bWVudE5vZGVJZCwgY29udGVudExpc3QtPml0
ZW0oaSkpKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpO
YW1lZEZsb3c6OmNyZWF0ZSgpCi0gICAgICAgIC5zZXREb2N1bWVudE5vZGVJZChkb2N1bWVudE5v
ZGVJZCkKLSAgICAgICAgLnNldE5hbWUod2Via2l0TmFtZWRGbG93LT5uYW1lKCkuc3RyaW5nKCkp
Ci0gICAgICAgIC5zZXRPdmVyc2V0KHdlYmtpdE5hbWVkRmxvdy0+b3ZlcnNldCgpKQotICAgICAg
ICAuc2V0Q29udGVudChXVEZNb3ZlKGNvbnRlbnQpKQotICAgICAgICAuc2V0UmVnaW9ucyhidWls
ZEFycmF5Rm9yUmVnaW9ucyhlcnJvclN0cmluZywgd2Via2l0TmFtZWRGbG93LT5nZXRSZWdpb25z
KCksIGRvY3VtZW50Tm9kZUlkKSkKLSAgICAgICAgLnJlbGVhc2UoKTsKLX0KLQogdm9pZCBJbnNw
ZWN0b3JDU1NBZ2VudDo6ZGlkUmVtb3ZlRE9NTm9kZShOb2RlJiBub2RlLCBpbnQgbm9kZUlkKQog
ewogICAgIG1fbm9kZUlkVG9Gb3JjZWRQc2V1ZG9TdGF0ZS5yZW1vdmUobm9kZUlkKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oCShyZXZpc2lv
biAyMjIyNTcpCisrKyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtNDcsMTQgKzQ3LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IGNsYXNzIENTU1J1bGU7CiBjbGFzcyBDU1NTdHlsZVJ1bGU7CiBjbGFzcyBDU1NTdHlsZVNoZWV0
OwotY2xhc3MgQ2hhbmdlUmVnaW9uT3ZlcnNldFRhc2s7CiBjbGFzcyBEb2N1bWVudDsKIGNsYXNz
IEVsZW1lbnQ7CiBjbGFzcyBOb2RlOwogY2xhc3MgTm9kZUxpc3Q7CiBjbGFzcyBTdHlsZVJlc29s
dmVyOwogY2xhc3MgU3R5bGVSdWxlOwotY2xhc3MgV2ViS2l0TmFtZWRGbG93OwogCiBjbGFzcyBJ
bnNwZWN0b3JDU1NBZ2VudCBmaW5hbAogICAgIDogcHVibGljIEluc3BlY3RvckFnZW50QmFzZQpA
QCAtOTEsMTggKzg5LDEyIEBAIHB1YmxpYzoKICAgICB2b2lkIGRpc2NhcmRBZ2VudCgpIG92ZXJy
aWRlOwogICAgIHZvaWQgZW5hYmxlKEVycm9yU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBk
aXNhYmxlKEVycm9yU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCByZWdpb25PdmVyc2V0Q2hh
bmdlZChXZWJLaXROYW1lZEZsb3cqLCBpbnQgZG9jdW1lbnROb2RlSWQpOwogICAgIHZvaWQgcmVz
ZXQoKTsKIAogICAgIC8vIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbgogICAgIHZvaWQgZG9jdW1l
bnREZXRhY2hlZChEb2N1bWVudCYpOwogICAgIHZvaWQgbWVkaWFRdWVyeVJlc3VsdENoYW5nZWQo
KTsKICAgICB2b2lkIGFjdGl2ZVN0eWxlU2hlZXRzVXBkYXRlZChEb2N1bWVudCYpOwotICAgIHZv
aWQgZGlkQ3JlYXRlTmFtZWRGbG93KERvY3VtZW50JiwgV2ViS2l0TmFtZWRGbG93Jik7Ci0gICAg
dm9pZCB3aWxsUmVtb3ZlTmFtZWRGbG93KERvY3VtZW50JiwgV2ViS2l0TmFtZWRGbG93Jik7Ci0g
ICAgdm9pZCBkaWRDaGFuZ2VSZWdpb25PdmVyc2V0KERvY3VtZW50JiwgV2ViS2l0TmFtZWRGbG93
Jik7Ci0gICAgdm9pZCBkaWRSZWdpc3Rlck5hbWVkRmxvd0NvbnRlbnRFbGVtZW50KERvY3VtZW50
JiwgV2ViS2l0TmFtZWRGbG93JiwgTm9kZSYgY29udGVudEVsZW1lbnQsIE5vZGUqIG5leHRDb250
ZW50RWxlbWVudCA9IG51bGxwdHIpOwotICAgIHZvaWQgZGlkVW5yZWdpc3Rlck5hbWVkRmxvd0Nv
bnRlbnRFbGVtZW50KERvY3VtZW50JiwgV2ViS2l0TmFtZWRGbG93JiwgTm9kZSYgY29udGVudEVs
ZW1lbnQpOwogICAgIGJvb2wgZm9yY2VQc2V1ZG9TdGF0ZShjb25zdCBFbGVtZW50JiwgQ1NTU2Vs
ZWN0b3I6OlBzZXVkb0NsYXNzVHlwZSk7CiAKICAgICB2b2lkIGdldENvbXB1dGVkU3R5bGVGb3JO
b2RlKEVycm9yU3RyaW5nJiwgaW50IG5vZGVJZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTQ29tcHV0ZWRTdHlsZVByb3BlcnR5
Pj4mKSBvdmVycmlkZTsKQEAgLTEzNyw3ICsxMjksNiBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVz
ZXROb25QZXJzaXN0ZW50RGF0YSgpOwogICAgIEluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVT
dHlsZSYgYXNJbnNwZWN0b3JTdHlsZVNoZWV0KFN0eWxlZEVsZW1lbnQmKTsKICAgICBFbGVtZW50
KiBlbGVtZW50Rm9ySWQoRXJyb3JTdHJpbmcmLCBpbnQgbm9kZUlkKTsKLSAgICBpbnQgZG9jdW1l
bnROb2RlV2l0aFJlcXVlc3RlZEZsb3dzSWQoRG9jdW1lbnQqKTsKIAogICAgIHZvaWQgY29sbGVj
dEFsbFN0eWxlU2hlZXRzKFZlY3RvcjxJbnNwZWN0b3JTdHlsZVNoZWV0Kj4mKTsKICAgICB2b2lk
IGNvbGxlY3RBbGxEb2N1bWVudFN0eWxlU2hlZXRzKERvY3VtZW50JiwgVmVjdG9yPENTU1N0eWxl
U2hlZXQqPiYpOwpAQCAtMTU0LDggKzE0NSw2IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTUnVsZT4gYnVpbGRPYmplY3RGb3JSdWxlKENTU1N0eWxl
UnVsZSopOwogICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6
OlByb3RvY29sOjpDU1M6OlJ1bGVNYXRjaD4+IGJ1aWxkQXJyYXlGb3JNYXRjaGVkUnVsZUxpc3Qo
Y29uc3QgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGU+PiYsIFN0eWxlUmVzb2x2ZXImLCBFbGVtZW50
JiwgUHNldWRvSWQpOwogICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1N0
eWxlPiBidWlsZE9iamVjdEZvckF0dHJpYnV0ZXNTdHlsZShTdHlsZWRFbGVtZW50Jik7Ci0gICAg
UmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNT
Uzo6UmVnaW9uPj4gYnVpbGRBcnJheUZvclJlZ2lvbnMoRXJyb3JTdHJpbmcmLCBSZWZQdHI8Tm9k
ZUxpc3Q+JiYsIGludCBkb2N1bWVudE5vZGVJZCk7Ci0gICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkNTUzo6TmFtZWRGbG93PiBidWlsZE9iamVjdEZvck5hbWVkRmxvdyhFcnJvclN0cmlu
ZyYsIFdlYktpdE5hbWVkRmxvdyosIGludCBkb2N1bWVudE5vZGVJZCk7CiAKICAgICAvLyBJbnNw
ZWN0b3JET01BZ2VudDo6RE9NTGlzdGVuZXIgaW1wbGVtZW50YXRpb24KICAgICB2b2lkIGRpZFJl
bW92ZURPTU5vZGUoTm9kZSYsIGludCBub2RlSWQpIG92ZXJyaWRlOwpAQCAtMTc3LDggKzE2Niw2
IEBAIHByaXZhdGU6CiAgICAgSGFzaE1hcDxEb2N1bWVudCosIEhhc2hTZXQ8Q1NTU3R5bGVTaGVl
dCo+PiBtX2RvY3VtZW50VG9Lbm93bkNTU1N0eWxlU2hlZXRzOwogICAgIE5vZGVJZFRvRm9yY2Vk
UHNldWRvU3RhdGUgbV9ub2RlSWRUb0ZvcmNlZFBzZXVkb1N0YXRlOwogICAgIEhhc2hTZXQ8RG9j
dW1lbnQqPiBtX2RvY3VtZW50c1dpdGhGb3JjZWRQc2V1ZG9TdGF0ZXM7Ci0gICAgSGFzaFNldDxp
bnQ+IG1fbmFtZWRGbG93Q29sbGVjdGlvbnNSZXF1ZXN0ZWQ7Ci0gICAgc3RkOjp1bmlxdWVfcHRy
PENoYW5nZVJlZ2lvbk92ZXJzZXRUYXNrPiBtX2NoYW5nZVJlZ2lvbk92ZXJzZXRUYXNrOwogCiAg
ICAgaW50IG1fbGFzdFN0eWxlU2hlZXRJZCB7IDEgfTsKICAgICBib29sIG1fY3JlYXRpbmdWaWFJ
bnNwZWN0b3JTdHlsZVNoZWV0IHsgZmFsc2UgfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCShyZXZpc2lvbiAy
MjIyNTcpCisrKyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQ5LDQyICsyNDksNiBAQCB2b2lkIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6cHNldWRvRWxlCiAgICAgICAgIGxheWVyVHJlZUFnZW50LT5wc2V1
ZG9FbGVtZW50RGVzdHJveWVkKHBzZXVkb0VsZW1lbnQpOwogfQogCi12b2lkIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6ZGlkQ3JlYXRlTmFtZWRGbG93SW1wbChJbnN0cnVtZW50aW5nQWdlbnRz
JiBpbnN0cnVtZW50aW5nQWdlbnRzLCBEb2N1bWVudCogZG9jdW1lbnQsIFdlYktpdE5hbWVkRmxv
dyYgbmFtZWRGbG93KQotewotICAgIGlmICghZG9jdW1lbnQpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIGlmIChJbnNwZWN0b3JDU1NBZ2VudCogY3NzQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRz
Lmluc3BlY3RvckNTU0FnZW50KCkpCi0gICAgICAgIGNzc0FnZW50LT5kaWRDcmVhdGVOYW1lZEZs
b3coKmRvY3VtZW50LCBuYW1lZEZsb3cpOwotfQotCi12b2lkIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6d2lsbFJlbW92ZU5hbWVkRmxvd0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1
bWVudGluZ0FnZW50cywgRG9jdW1lbnQqIGRvY3VtZW50LCBXZWJLaXROYW1lZEZsb3cmIG5hbWVk
RmxvdykKLXsKLSAgICBpZiAoIWRvY3VtZW50KQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAo
SW5zcGVjdG9yQ1NTQWdlbnQqIGNzc0FnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0
b3JDU1NBZ2VudCgpKQotICAgICAgICBjc3NBZ2VudC0+d2lsbFJlbW92ZU5hbWVkRmxvdygqZG9j
dW1lbnQsIG5hbWVkRmxvdyk7Ci19Ci0KLXZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpk
aWRDaGFuZ2VSZWdpb25PdmVyc2V0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50
aW5nQWdlbnRzLCBEb2N1bWVudCYgZG9jdW1lbnQsIFdlYktpdE5hbWVkRmxvdyYgbmFtZWRGbG93
KQotewotICAgIGlmIChJbnNwZWN0b3JDU1NBZ2VudCogY3NzQWdlbnQgPSBpbnN0cnVtZW50aW5n
QWdlbnRzLmluc3BlY3RvckNTU0FnZW50KCkpCi0gICAgICAgIGNzc0FnZW50LT5kaWRDaGFuZ2VS
ZWdpb25PdmVyc2V0KGRvY3VtZW50LCBuYW1lZEZsb3cpOwotfQotCi12b2lkIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6ZGlkUmVnaXN0ZXJOYW1lZEZsb3dDb250ZW50RWxlbWVudEltcGwoSW5z
dHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgRG9jdW1lbnQmIGRvY3VtZW50
LCBXZWJLaXROYW1lZEZsb3cmIG5hbWVkRmxvdywgTm9kZSYgY29udGVudEVsZW1lbnQsIE5vZGUq
IG5leHRDb250ZW50RWxlbWVudCkKLXsKLSAgICBpZiAoSW5zcGVjdG9yQ1NTQWdlbnQqIGNzc0Fn
ZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JDU1NBZ2VudCgpKQotICAgICAgICBj
c3NBZ2VudC0+ZGlkUmVnaXN0ZXJOYW1lZEZsb3dDb250ZW50RWxlbWVudChkb2N1bWVudCwgbmFt
ZWRGbG93LCBjb250ZW50RWxlbWVudCwgbmV4dENvbnRlbnRFbGVtZW50KTsKLX0KLQotdm9pZCBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFVucmVnaXN0ZXJOYW1lZEZsb3dDb250ZW50RWxl
bWVudEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgRG9jdW1l
bnQmIGRvY3VtZW50LCBXZWJLaXROYW1lZEZsb3cmIG5hbWVkRmxvdywgTm9kZSYgY29udGVudEVs
ZW1lbnQpCi17Ci0gICAgaWYgKEluc3BlY3RvckNTU0FnZW50KiBjc3NBZ2VudCA9IGluc3RydW1l
bnRpbmdBZ2VudHMuaW5zcGVjdG9yQ1NTQWdlbnQoKSkKLSAgICAgICAgY3NzQWdlbnQtPmRpZFVu
cmVnaXN0ZXJOYW1lZEZsb3dDb250ZW50RWxlbWVudChkb2N1bWVudCwgbmFtZWRGbG93LCBjb250
ZW50RWxlbWVudCk7Ci19Ci0KIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjptb3VzZURp
ZE1vdmVPdmVyRWxlbWVudEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0Fn
ZW50cywgY29uc3QgSGl0VGVzdFJlc3VsdCYgcmVzdWx0LCB1bnNpZ25lZCBtb2RpZmllckZsYWdz
KQogewogICAgIGlmIChJbnNwZWN0b3JET01BZ2VudCogZG9tQWdlbnQgPSBpbnN0cnVtZW50aW5n
QWdlbnRzLmluc3BlY3RvckRPTUFnZW50KCkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwCShyZXZpc2lvbiAyMjIyNTcpCisrKyBTb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTUxLDggKzUxLDYgQEAKICNpbmNsdWRlICJSZW5kZXJFbGVtZW50LmgiCiAjaW5jbHVkZSAiUmVu
ZGVyRmxvd1RocmVhZC5oIgogI2luY2x1ZGUgIlJlbmRlcklubGluZS5oIgotI2luY2x1ZGUgIlJl
bmRlck5hbWVkRmxvd0ZyYWdtZW50LmgiCi0jaW5jbHVkZSAiUmVuZGVyTmFtZWRGbG93VGhyZWFk
LmgiCiAjaW5jbHVkZSAiUmVuZGVyUmVnaW9uLmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgog
I2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKQEAgLTEyMCw3ICsxMTgsNyBAQCBzdGF0aWMg
dm9pZCBidWlsZFJlbmRlcmVySGlnaGxpZ2h0KFJlbmRlCiAgICAgICAgICAgICAgICAgbWFyZ2lu
cy5lbmQocmVuZGVyQm94LnN0eWxlKCkud3JpdGluZ01vZGUoKSkgPSBjb21wdXRlZFZhbHVlcy5t
X21hcmdpbnMubV9lbmQ7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIHBhZGRpbmdCb3gg
PSByZW5kZXJCb3guY2xpZW50Qm94UmVjdEluUmVnaW9uKHJlZ2lvbik7CisgICAgICAgICAgICBw
YWRkaW5nQm94ID0gcmVuZGVyQm94LmNsaWVudEJveFJlY3QoKTsKICAgICAgICAgICAgIGNvbnRl
bnRCb3ggPSBMYXlvdXRSZWN0KHBhZGRpbmdCb3gueCgpICsgcmVuZGVyQm94LnBhZGRpbmdMZWZ0
KCksIHBhZGRpbmdCb3gueSgpICsgcmVuZGVyQm94LnBhZGRpbmdUb3AoKSwKICAgICAgICAgICAg
ICAgICBwYWRkaW5nQm94LndpZHRoKCkgLSByZW5kZXJCb3gucGFkZGluZ0xlZnQoKSAtIHJlbmRl
ckJveC5wYWRkaW5nUmlnaHQoKSwgcGFkZGluZ0JveC5oZWlnaHQoKSAtIHJlbmRlckJveC5wYWRk
aW5nVG9wKCkgLSByZW5kZXJCb3gucGFkZGluZ0JvdHRvbSgpKTsKICAgICAgICAgICAgIGJvcmRl
ckJveCA9IExheW91dFJlY3QocGFkZGluZ0JveC54KCkgLSByZW5kZXJCb3guYm9yZGVyTGVmdCgp
LCBwYWRkaW5nQm94LnkoKSAtIHJlbmRlckJveC5ib3JkZXJUb3AoKSwKQEAgLTM5NSw2OCArMzkz
LDYgQEAgc3RhdGljIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpPdmVybGF5VAogICAgICAgICAu
cmVsZWFzZSgpOwogfQogCi1zdGF0aWMgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok92ZXJs
YXlUeXBlczo6UmVnaW9uPiBidWlsZE9iamVjdEZvclJlZ2lvbihGcmFtZVZpZXcqIG1haW5WaWV3
LCBSZW5kZXJSZWdpb24qIHJlZ2lvbikKLXsKLSAgICBGcmFtZVZpZXcqIGNvbnRhaW5pbmdWaWV3
ID0gcmVnaW9uLT5mcmFtZSgpLnZpZXcoKTsKLSAgICBpZiAoIWNvbnRhaW5pbmdWaWV3KQotICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIFJlbmRlckJsb2NrRmxvdyYgcmVnaW9uQ29udGFp
bmVyID0gZG93bmNhc3Q8UmVuZGVyQmxvY2tGbG93PigqcmVnaW9uLT5wYXJlbnQoKSk7Ci0gICAg
TGF5b3V0UmVjdCBib3JkZXJCb3ggPSByZWdpb25Db250YWluZXIuYm9yZGVyQm94UmVjdCgpOwot
ICAgIGJvcmRlckJveC5zZXRXaWR0aChib3JkZXJCb3gud2lkdGgoKSArIHJlZ2lvbkNvbnRhaW5l
ci52ZXJ0aWNhbFNjcm9sbGJhcldpZHRoKCkpOwotICAgIGJvcmRlckJveC5zZXRIZWlnaHQoYm9y
ZGVyQm94LmhlaWdodCgpICsgcmVnaW9uQ29udGFpbmVyLmhvcml6b250YWxTY3JvbGxiYXJIZWln
aHQoKSk7Ci0KLSAgICAvLyBDcmVhdGUgaW5jb21pbmcgYW5kIG91dGdvaW5nIGJveGVzIHRoYXQg
d2UgdXNlIHRvIGNoYWluIHRoZSByZWdpb25zIHRvZ2hldGhlci4KLSAgICBjb25zdCBMYXlvdXRT
aXplIGxpbmtCb3hTaXplKDEwLCAxMCk7Ci0gICAgY29uc3QgTGF5b3V0U2l6ZSBsaW5rQm94TWlk
cG9pbnQobGlua0JveFNpemUud2lkdGgoKSAvIDIsIGxpbmtCb3hTaXplLmhlaWdodCgpIC8gMik7
Ci0KLSAgICBMYXlvdXRSZWN0IGluY29taW5nUmVjdEJveCA9IExheW91dFJlY3QoYm9yZGVyQm94
LmxvY2F0aW9uKCkgLSBsaW5rQm94TWlkcG9pbnQsIGxpbmtCb3hTaXplKTsKLSAgICBMYXlvdXRS
ZWN0IG91dGdvaW5nUmVjdEJveCA9IExheW91dFJlY3QoYm9yZGVyQm94LmxvY2F0aW9uKCkgLSBs
aW5rQm94TWlkcG9pbnQgKyBib3JkZXJCb3guc2l6ZSgpLCBsaW5rQm94U2l6ZSk7Ci0KLSAgICAv
LyBNb3ZlIHRoZSBsaW5rIGJveGVzIHNsaWdodGx5IGluc2lkZSB0aGUgcmVnaW9uIGJvcmRlciBi
b3guCi0gICAgTGF5b3V0VW5pdCBtYXhVc2FibGVIZWlnaHQgPSBzdGQ6Om1heChMYXlvdXRVbml0
KCksIGJvcmRlckJveC5oZWlnaHQoKSAtIGxpbmtCb3hNaWRwb2ludC5oZWlnaHQoKSk7Ci0gICAg
TGF5b3V0VW5pdCBsaW5rQm94VmVydGljYWxPZmZzZXQgPSBzdGQ6Om1pbihMYXlvdXRVbml0Ojpm
cm9tUGl4ZWwoMTUpLCBtYXhVc2FibGVIZWlnaHQpOwotICAgIGluY29taW5nUmVjdEJveC5tb3Zl
KDAsIGxpbmtCb3hWZXJ0aWNhbE9mZnNldCk7Ci0gICAgb3V0Z29pbmdSZWN0Qm94Lm1vdmUoMCwg
LWxpbmtCb3hWZXJ0aWNhbE9mZnNldCk7Ci0KLSAgICBGbG9hdFF1YWQgYm9yZGVyUmVjdFF1YWQg
PSByZWdpb25Db250YWluZXIubG9jYWxUb0Fic29sdXRlUXVhZChGbG9hdFJlY3QoYm9yZGVyQm94
KSk7Ci0gICAgRmxvYXRRdWFkIGluY29taW5nUmVjdFF1YWQgPSByZWdpb25Db250YWluZXIubG9j
YWxUb0Fic29sdXRlUXVhZChGbG9hdFJlY3QoaW5jb21pbmdSZWN0Qm94KSk7Ci0gICAgRmxvYXRR
dWFkIG91dGdvaW5nUmVjdFF1YWQgPSByZWdpb25Db250YWluZXIubG9jYWxUb0Fic29sdXRlUXVh
ZChGbG9hdFJlY3Qob3V0Z29pbmdSZWN0Qm94KSk7Ci0KLSAgICBjb250ZW50c1F1YWRUb1BhZ2Uo
bWFpblZpZXcsIGNvbnRhaW5pbmdWaWV3LCBib3JkZXJSZWN0UXVhZCk7Ci0gICAgY29udGVudHNR
dWFkVG9QYWdlKG1haW5WaWV3LCBjb250YWluaW5nVmlldywgaW5jb21pbmdSZWN0UXVhZCk7Ci0g
ICAgY29udGVudHNRdWFkVG9QYWdlKG1haW5WaWV3LCBjb250YWluaW5nVmlldywgb3V0Z29pbmdS
ZWN0UXVhZCk7Ci0KLSAgICByZXR1cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6T3ZlcmxheVR5cGVz
OjpSZWdpb246OmNyZWF0ZSgpCi0gICAgICAgIC5zZXRCb3JkZXJRdWFkKGJ1aWxkQXJyYXlGb3JR
dWFkKGJvcmRlclJlY3RRdWFkKSkKLSAgICAgICAgLnNldEluY29taW5nUXVhZChidWlsZEFycmF5
Rm9yUXVhZChpbmNvbWluZ1JlY3RRdWFkKSkKLSAgICAgICAgLnNldE91dGdvaW5nUXVhZChidWls
ZEFycmF5Rm9yUXVhZChvdXRnb2luZ1JlY3RRdWFkKSkKLSAgICAgICAgLnJlbGVhc2UoKTsKLX0K
LQotc3RhdGljIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpPdmVybGF5VHlwZXM6OlJlZ2lvbj4+IGJ1aWxkT2JqZWN0Rm9yRmxvd1JlZ2lvbnMoUmVu
ZGVyUmVnaW9uKiByZWdpb24sIFJlbmRlckZsb3dUaHJlYWQqIGZsb3dUaHJlYWQpCi17Ci0gICAg
RnJhbWVWaWV3KiBtYWluRnJhbWVWaWV3ID0gcmVnaW9uLT5kb2N1bWVudCgpLnBhZ2UoKS0+bWFp
bkZyYW1lKCkudmlldygpOwotCi0gICAgYXV0byBhcnJheU9mUmVnaW9ucyA9IEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok92ZXJsYXlUeXBlczo6UmVnaW9u
Pjo6Y3JlYXRlKCk7Ci0KLSAgICBjb25zdCBSZW5kZXJSZWdpb25MaXN0JiByZWdpb25MaXN0ID0g
Zmxvd1RocmVhZC0+cmVuZGVyUmVnaW9uTGlzdCgpOwotICAgIGZvciAoYXV0byYgaXRlclJlZ2lv
biA6IHJlZ2lvbkxpc3QpIHsKLSAgICAgICAgaWYgKCFpdGVyUmVnaW9uLT5pc1ZhbGlkKCkpCi0g
ICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6
Ok92ZXJsYXlUeXBlczo6UmVnaW9uPiByZWdpb25PYmplY3QgPSBidWlsZE9iamVjdEZvclJlZ2lv
bihtYWluRnJhbWVWaWV3LCBpdGVyUmVnaW9uKTsKLSAgICAgICAgaWYgKCFyZWdpb25PYmplY3Qp
Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgaWYgKHJlZ2lvbiA9PSBpdGVyUmVnaW9u
KSB7Ci0gICAgICAgICAgICAvLyBMZXQgdGhlIHNjcmlwdCBrbm93IHRoYXQgdGhpcyBpcyB0aGUg
Y3VycmVudGx5IGhpZ2hsaWdodGVkIG5vZGUuCi0gICAgICAgICAgICByZWdpb25PYmplY3QtPnNl
dElzSGlnaGxpZ2h0ZWQodHJ1ZSk7Ci0gICAgICAgIH0KLSAgICAgICAgYXJyYXlPZlJlZ2lvbnMt
PmFkZEl0ZW0oV1RGTW92ZShyZWdpb25PYmplY3QpKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gYXJy
YXlPZlJlZ2lvbnM7Ci19Ci0KIHN0YXRpYyBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6T3Zlcmxh
eVR5cGVzOjpTaXplPiBidWlsZE9iamVjdEZvclNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsK
ICAgICByZXR1cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6T3ZlcmxheVR5cGVzOjpTaXplOjpjcmVh
dGUoKQpAQCAtNjk1LDcgKzYzMSw3IEBAIHN0YXRpYyBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6T3ZlcmwKICAgICByZXR1cm4gV1RGTW92ZShzaGFwZU9iamVjdCk7CiB9CiAKLXN0YXRpYyBS
ZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6T3ZlcmxheVR5cGVzOjpFbGVtZW50RGF0YT4gYnVp
bGRPYmplY3RGb3JFbGVtZW50RGF0YShOb2RlKiBub2RlLCBIaWdobGlnaHRUeXBlIHR5cGUpCitz
dGF0aWMgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok92ZXJsYXlUeXBlczo6RWxlbWVudERh
dGE+IGJ1aWxkT2JqZWN0Rm9yRWxlbWVudERhdGEoTm9kZSogbm9kZSwgSGlnaGxpZ2h0VHlwZSkK
IHsKICAgICBpZiAoIWlzPEVsZW1lbnQ+KG5vZGUpIHx8ICFub2RlLT5kb2N1bWVudCgpLmZyYW1l
KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtNzUxLDI3ICs2ODcsNiBAQCBzdGF0aWMg
UmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok92ZXJsCiAgICAgICAgIC5yZWxlYXNlKCk7CiAg
ICAgZWxlbWVudERhdGEtPnNldFNpemUoV1RGTW92ZShzaXplT2JqZWN0KSk7CiAKLSAgICBpZiAo
dHlwZSAhPSBIaWdobGlnaHRUeXBlOjpOb2RlTGlzdCAmJiByZW5kZXJlci0+aXNSZW5kZXJOYW1l
ZEZsb3dGcmFnbWVudENvbnRhaW5lcigpKSB7Ci0gICAgICAgIFJlbmRlck5hbWVkRmxvd0ZyYWdt
ZW50JiByZWdpb24gPSAqZG93bmNhc3Q8UmVuZGVyQmxvY2tGbG93PigqcmVuZGVyZXIpLnJlbmRl
ck5hbWVkRmxvd0ZyYWdtZW50KCk7Ci0gICAgICAgIGlmIChyZWdpb24uaXNWYWxpZCgpKSB7Ci0g
ICAgICAgICAgICBSZW5kZXJGbG93VGhyZWFkKiBmbG93VGhyZWFkID0gcmVnaW9uLmZsb3dUaHJl
YWQoKTsKLSAgICAgICAgICAgIGF1dG8gcmVnaW9uRmxvd0RhdGEgPSBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpPdmVybGF5VHlwZXM6OlJlZ2lvbkZsb3dEYXRhOjpjcmVhdGUoKQotICAgICAgICAgICAg
ICAgIC5zZXROYW1lKGRvd25jYXN0PFJlbmRlck5hbWVkRmxvd1RocmVhZD4oKmZsb3dUaHJlYWQp
LmZsb3dUaHJlYWROYW1lKCkpCi0gICAgICAgICAgICAgICAgLnNldFJlZ2lvbnMoYnVpbGRPYmpl
Y3RGb3JGbG93UmVnaW9ucygmcmVnaW9uLCBmbG93VGhyZWFkKSkKLSAgICAgICAgICAgICAgICAu
cmVsZWFzZSgpOwotICAgICAgICAgICAgZWxlbWVudERhdGEtPnNldFJlZ2lvbkZsb3dEYXRhKFdU
Rk1vdmUocmVnaW9uRmxvd0RhdGEpKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIFJlbmRlckZs
b3dUaHJlYWQqIGNvbnRhaW5pbmdGbG93VGhyZWFkID0gcmVuZGVyZXItPmZsb3dUaHJlYWRDb250
YWluaW5nQmxvY2soKTsKLSAgICBpZiAoaXM8UmVuZGVyTmFtZWRGbG93VGhyZWFkPihjb250YWlu
aW5nRmxvd1RocmVhZCkpIHsKLSAgICAgICAgYXV0byBjb250ZW50Rmxvd0RhdGEgPSBJbnNwZWN0
b3I6OlByb3RvY29sOjpPdmVybGF5VHlwZXM6OkNvbnRlbnRGbG93RGF0YTo6Y3JlYXRlKCkKLSAg
ICAgICAgICAgIC5zZXROYW1lKGRvd25jYXN0PFJlbmRlck5hbWVkRmxvd1RocmVhZD4oKmNvbnRh
aW5pbmdGbG93VGhyZWFkKS5mbG93VGhyZWFkTmFtZSgpKQotICAgICAgICAgICAgLnJlbGVhc2Uo
KTsKLQotICAgICAgICBlbGVtZW50RGF0YS0+c2V0Q29udGVudEZsb3dEYXRhKFdURk1vdmUoY29u
dGVudEZsb3dEYXRhKSk7Ci0gICAgfQotCiAgICAgaWYgKGlzPFJlbmRlckJveD4oKnJlbmRlcmVy
KSkgewogICAgICAgICBhdXRvJiByZW5kZXJCb3ggPSBkb3duY2FzdDxSZW5kZXJCb3g+KCpyZW5k
ZXJlcik7CiAgICAgICAgIGlmIChSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6T3ZlcmxheVR5
cGVzOjpTaGFwZU91dHNpZGVEYXRhPiBzaGFwZU9iamVjdCA9IGJ1aWxkT2JqZWN0Rm9yU2hhcGVP
dXRzaWRlKGNvbnRhaW5pbmdGcmFtZSwgJnJlbmRlckJveCkpCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFn
ZS9FdmVudEhhbmRsZXIuY3BwCShyZXZpc2lvbiAyMjIyNTcpCisrKyBTb3VyY2UvV2ViQ29yZS9w
YWdlL0V2ZW50SGFuZGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc1LDcgKzc1LDYgQEAKICNp
bmNsdWRlICJSZW5kZXJGcmFtZVNldC5oIgogI2luY2x1ZGUgIlJlbmRlckxheWVyLmgiCiAjaW5j
bHVkZSAiUmVuZGVyTGlzdEJveC5oIgotI2luY2x1ZGUgIlJlbmRlck5hbWVkRmxvd1RocmVhZC5o
IgogI2luY2x1ZGUgIlJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5oIgogI2luY2x1ZGUgIlJl
bmRlclZpZXcuaCIKICNpbmNsdWRlICJSZW5kZXJXaWRnZXQuaCIKQEAgLTMyOSw4ICszMjgsNiBA
QCBzdGF0aWMgaW5saW5lIGJvb2wgaGFuZGxlV2hlZWxFdmVudEluQXBwCiAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKIAogICAgICAgICBjdXJyZW50RW5jbG9zaW5nQm94ID0gY3VycmVudEVuY2xv
c2luZ0JveC0+Y29udGFpbmluZ0Jsb2NrKCk7Ci0gICAgICAgIGlmIChjdXJyZW50RW5jbG9zaW5n
Qm94ICYmIGN1cnJlbnRFbmNsb3NpbmdCb3gtPmlzUmVuZGVyTmFtZWRGbG93VGhyZWFkKCkpCi0g
ICAgICAgICAgICBjdXJyZW50RW5jbG9zaW5nQm94ID0gUmVuZGVyTmFtZWRGbG93VGhyZWFkOjpm
cmFnbWVudEZyb21SZW5kZXJCb3hBc1JlbmRlckJsb2NrKGN1cnJlbnRFbmNsb3NpbmdCb3gsIHJv
dW5kZWRJbnRQb2ludCh3aGVlbEV2ZW50LmFic29sdXRlTG9jYXRpb24oKSksIGluaXRpYWxFbmNs
b3NpbmdCb3gpOwogICAgICAgICBpZiAoIWN1cnJlbnRFbmNsb3NpbmdCb3ggfHwgY3VycmVudEVu
Y2xvc2luZ0JveC0+aXNSZW5kZXJWaWV3KCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0Zsb3dUaHJlYWRDb250cm9sbGVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmxvd1RocmVhZENv
bnRyb2xsZXIuY3BwCShyZXZpc2lvbiAyMjIyNTcpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvRmxvd1RocmVhZENvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCwxMiArMzAs
MTAgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJGbG93VGhyZWFkQ29udHJvbGxl
ci5oIgogCi0jaW5jbHVkZSAiTmFtZWRGbG93Q29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIlJlbmRl
ckZsb3dUaHJlYWQuaCIKICNpbmNsdWRlICJSZW5kZXJMYXllci5oIgogI2luY2x1ZGUgIlJlbmRl
ck5hbWVkRmxvd1RocmVhZC5oIgogI2luY2x1ZGUgIlN0eWxlSW5oZXJpdGVkRGF0YS5oIgotI2lu
Y2x1ZGUgIldlYktpdE5hbWVkRmxvdy5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmlu
Zy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01MSwzNCArNDksNiBAQCBGbG93VGhyZWFk
Q29udHJvbGxlcjo6fkZsb3dUaHJlYWRDb250cm9sCiB7CiB9CiAKLVJlbmRlck5hbWVkRmxvd1Ro
cmVhZCYgRmxvd1RocmVhZENvbnRyb2xsZXI6OmVuc3VyZVJlbmRlckZsb3dUaHJlYWRXaXRoTmFt
ZShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpCi17Ci0gICAgaWYgKCFtX3JlbmRlck5hbWVkRmxv
d1RocmVhZExpc3QpCi0gICAgICAgIG1fcmVuZGVyTmFtZWRGbG93VGhyZWFkTGlzdCA9IHN0ZDo6
bWFrZV91bmlxdWU8UmVuZGVyTmFtZWRGbG93VGhyZWFkTGlzdD4oKTsKLSAgICBlbHNlIHsKLSAg
ICAgICAgZm9yIChhdXRvJiBmbG93UmVuZGVyZXIgOiAqbV9yZW5kZXJOYW1lZEZsb3dUaHJlYWRM
aXN0KSB7Ci0gICAgICAgICAgICBpZiAoZmxvd1JlbmRlcmVyLT5mbG93VGhyZWFkTmFtZSgpID09
IG5hbWUpCi0gICAgICAgICAgICAgICAgcmV0dXJuICpmbG93UmVuZGVyZXI7Ci0gICAgICAgIH0K
LSAgICB9Ci0KLSAgICBOYW1lZEZsb3dDb2xsZWN0aW9uJiBuYW1lZEZsb3dzID0gbV92aWV3LT5k
b2N1bWVudCgpLm5hbWVkRmxvd3MoKTsKLQotICAgIC8vIFNhbml0eSBjaGVjayBmb3IgdGhlIGFi
c2VuY2Ugb2YgYSBuYW1lZCBmbG93IGluIHRoZSAiQ1JFQVRFRCIgc3RhdGUgd2l0aCB0aGUgc2Ft
ZSBuYW1lLgotICAgIEFTU0VSVCghbmFtZWRGbG93cy5mbG93QnlOYW1lKG5hbWUpKTsKLQotICAg
IGF1dG8gZmxvd1JlbmRlcmVyID0gbmV3IFJlbmRlck5hbWVkRmxvd1RocmVhZChtX3ZpZXctPmRv
Y3VtZW50KCksIFJlbmRlckZsb3dUaHJlYWQ6OmNyZWF0ZUZsb3dUaHJlYWRTdHlsZSgmbV92aWV3
LT5zdHlsZSgpKSwgbmFtZWRGbG93cy5lbnN1cmVGbG93V2l0aE5hbWUobmFtZSkpOwotICAgIGZs
b3dSZW5kZXJlci0+aW5pdGlhbGl6ZVN0eWxlKCk7Ci0gICAgbV9yZW5kZXJOYW1lZEZsb3dUaHJl
YWRMaXN0LT5hZGQoZmxvd1JlbmRlcmVyKTsKLQotICAgIC8vIEtlZXAgdGhlIGZsb3cgcmVuZGVy
ZXIgYXMgYSBjaGlsZCBvZiBSZW5kZXJWaWV3LgotICAgIG1fdmlldy0+YWRkQ2hpbGQoZmxvd1Jl
bmRlcmVyKTsKLQotICAgIHNldElzUmVuZGVyTmFtZWRGbG93VGhyZWFkT3JkZXJEaXJ0eSh0cnVl
KTsKLQotICAgIHJldHVybiAqZmxvd1JlbmRlcmVyOwotfQotCiB2b2lkIEZsb3dUaHJlYWRDb250
cm9sbGVyOjpzdHlsZURpZENoYW5nZSgpCiB7CiAgICAgYXV0byYgdmlld1N0eWxlID0gbV92aWV3
LT5zdHlsZSgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0Zsb3dUaHJlYWRDb250
cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0Zsb3dUaHJl
YWRDb250cm9sbGVyLmgJKHJldmlzaW9uIDIyMjI1NykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9GbG93VGhyZWFkQ29udHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSw3ICs1NSw2
IEBAIHB1YmxpYzoKICAgICAgICAgICAgIG1fdmlldy0+c2V0TmVlZHNMYXlvdXQoKTsKICAgICB9
CiAKLSAgICBSZW5kZXJOYW1lZEZsb3dUaHJlYWQmIGVuc3VyZVJlbmRlckZsb3dUaHJlYWRXaXRo
TmFtZShjb25zdCBBdG9taWNTdHJpbmcmKTsKICAgICBjb25zdCBSZW5kZXJOYW1lZEZsb3dUaHJl
YWRMaXN0KiByZW5kZXJOYW1lZEZsb3dUaHJlYWRMaXN0KCkgY29uc3QgeyByZXR1cm4gbV9yZW5k
ZXJOYW1lZEZsb3dUaHJlYWRMaXN0LmdldCgpOyB9CiAgICAgYm9vbCBoYXNSZW5kZXJOYW1lZEZs
b3dUaHJlYWRzKCkgY29uc3QgeyByZXR1cm4gbV9yZW5kZXJOYW1lZEZsb3dUaHJlYWRMaXN0ICYm
ICFtX3JlbmRlck5hbWVkRmxvd1RocmVhZExpc3QtPmlzRW1wdHkoKTsgfQogICAgIHZvaWQgbGF5
b3V0UmVuZGVyTmFtZWRGbG93VGhyZWFkcygpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlZ2lvbk92ZXJzZXRTdGF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZWdpb25PdmVyc2V0U3RhdGUuaAkocmV2aXNpb24gMjIyMjU3KQorKysgU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlZ2lvbk92ZXJzZXRTdGF0ZS5oCShub25leGlzdGVudCkKQEAg
LTEsMzAgKzAsMCBAQAotLyoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hl
ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAq
Ci0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQot
ICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElm
IG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUx
IEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEs
IFVTQS4KLSAqCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQot
ZW51bSBSZWdpb25PdmVyc2V0U3RhdGUgewotICAgIFJlZ2lvblVuZGVmaW5lZCwKLSAgICBSZWdp
b25FbXB0eSwKLSAgICBSZWdpb25GaXQsCi0gICAgUmVnaW9uT3ZlcnNldAotfTsKLQotfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJs
b2NrRmxvdy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJsb2NrRmxvdy5jcHAJKHJldmlzaW9uIDIyMjI1NykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTIxLDggKzE1MjEs
NyBAQCBMYXlvdXRVbml0IFJlbmRlckJsb2NrRmxvdzo6YXBwbHlCZWZvcmVCCiAgICAgYm9vbCBj
aGVja1BhZ2VCcmVha3MgPSAhY2hlY2tDb2x1bW5CcmVha3MgJiYgdmlldygpLmxheW91dFN0YXRl
KCktPm1fcGFnZUxvZ2ljYWxIZWlnaHQ7IC8vIEZJWE1FOiBPbmNlIGNvbHVtbnMgY2FuIHByaW50
IHdlIGhhdmUgdG8gY2hlY2sgdGhpcy4KICAgICBib29sIGNoZWNrUmVnaW9uQnJlYWtzID0gZmxv
d1RocmVhZCAmJiBmbG93VGhyZWFkLT5pc1JlbmRlck5hbWVkRmxvd1RocmVhZCgpOwogICAgIGJv
b2wgY2hlY2tCZWZvcmVBbHdheXMgPSAoY2hlY2tDb2x1bW5CcmVha3MgJiYgY2hpbGQuc3R5bGUo
KS5icmVha0JlZm9yZSgpID09IENvbHVtbkJyZWFrQmV0d2VlbikKLSAgICAgICAgfHwgKGNoZWNr
UGFnZUJyZWFrcyAmJiBhbHdheXNQYWdlQnJlYWsoY2hpbGQuc3R5bGUoKS5icmVha0JlZm9yZSgp
KSkKLSAgICAgICAgfHwgKGNoZWNrUmVnaW9uQnJlYWtzICYmIGNoaWxkLnN0eWxlKCkuYnJlYWtC
ZWZvcmUoKSA9PSBSZWdpb25CcmVha0JldHdlZW4pOworICAgICAgICB8fCAoY2hlY2tQYWdlQnJl
YWtzICYmIGFsd2F5c1BhZ2VCcmVhayhjaGlsZC5zdHlsZSgpLmJyZWFrQmVmb3JlKCkpKTsKICAg
ICBpZiAoY2hlY2tCZWZvcmVBbHdheXMgJiYgaW5Ob3JtYWxGbG93KGNoaWxkKSAmJiBoYXNOZXh0
UGFnZShsb2dpY2FsT2Zmc2V0LCBJbmNsdWRlUGFnZUJvdW5kYXJ5KSkgewogICAgICAgICBpZiAo
Y2hlY2tDb2x1bW5CcmVha3MpIHsKICAgICAgICAgICAgIGlmIChpc0luc2lkZU11bHRpY29sRmxv
d1RocmVhZCkKQEAgLTE1NDcsOCArMTU0Niw3IEBAIExheW91dFVuaXQgUmVuZGVyQmxvY2tGbG93
OjphcHBseUFmdGVyQnIKICAgICBib29sIGNoZWNrUGFnZUJyZWFrcyA9ICFjaGVja0NvbHVtbkJy
ZWFrcyAmJiB2aWV3KCkubGF5b3V0U3RhdGUoKS0+bV9wYWdlTG9naWNhbEhlaWdodDsgLy8gRklY
TUU6IE9uY2UgY29sdW1ucyBjYW4gcHJpbnQgd2UgaGF2ZSB0byBjaGVjayB0aGlzLgogICAgIGJv
b2wgY2hlY2tSZWdpb25CcmVha3MgPSBmbG93VGhyZWFkICYmIGZsb3dUaHJlYWQtPmlzUmVuZGVy
TmFtZWRGbG93VGhyZWFkKCk7CiAgICAgYm9vbCBjaGVja0FmdGVyQWx3YXlzID0gKGNoZWNrQ29s
dW1uQnJlYWtzICYmIGNoaWxkLnN0eWxlKCkuYnJlYWtBZnRlcigpID09IENvbHVtbkJyZWFrQmV0
d2VlbikKLSAgICAgICAgfHwgKGNoZWNrUGFnZUJyZWFrcyAmJiBhbHdheXNQYWdlQnJlYWsoY2hp
bGQuc3R5bGUoKS5icmVha0FmdGVyKCkpKQotICAgICAgICB8fCAoY2hlY2tSZWdpb25CcmVha3Mg
JiYgY2hpbGQuc3R5bGUoKS5icmVha0FmdGVyKCkgPT0gUmVnaW9uQnJlYWtCZXR3ZWVuKTsKKyAg
ICAgICAgfHwgKGNoZWNrUGFnZUJyZWFrcyAmJiBhbHdheXNQYWdlQnJlYWsoY2hpbGQuc3R5bGUo
KS5icmVha0FmdGVyKCkpKTsKICAgICBpZiAoY2hlY2tBZnRlckFsd2F5cyAmJiBpbk5vcm1hbEZs
b3coY2hpbGQpICYmIGhhc05leHRQYWdlKGxvZ2ljYWxPZmZzZXQsIEluY2x1ZGVQYWdlQm91bmRh
cnkpKSB7CiAgICAgICAgIExheW91dFVuaXQgbWFyZ2luT2Zmc2V0ID0gbWFyZ2luSW5mby5jYW5D
b2xsYXBzZVdpdGhNYXJnaW5CZWZvcmUoKSA/IExheW91dFVuaXQoKSA6IG1hcmdpbkluZm8ubWFy
Z2luKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dG
cmFnbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ck5hbWVkRmxvd0ZyYWdtZW50LmNwcAkocmV2aXNpb24gMjIyMjU3KQorKysgU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd0ZyYWdtZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtODcsMTAgKzg3LDggQEAgdm9pZCBSZW5kZXJOYW1lZEZsb3dGcmFnbWVudDo6c3R5bGVEaWRD
aAogICAgICAgICBzZXROZWVkc0xheW91dChNYXJrT25seVRoaXMpOwogfQogCi12b2lkIFJlbmRl
ck5hbWVkRmxvd0ZyYWdtZW50OjpnZXRSYW5nZXMoVmVjdG9yPFJlZlB0cjxSYW5nZT4+JiByYW5n
ZU9iamVjdHMpIGNvbnN0Cit2b2lkIFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50OjpnZXRSYW5nZXMo
VmVjdG9yPFJlZlB0cjxSYW5nZT4+JikgY29uc3QKIHsKLSAgICBjb25zdCBSZW5kZXJOYW1lZEZs
b3dUaHJlYWQmIG5hbWVkRmxvdyA9IHZpZXcoKS5mbG93VGhyZWFkQ29udHJvbGxlcigpLmVuc3Vy
ZVJlbmRlckZsb3dUaHJlYWRXaXRoTmFtZShzdHlsZSgpLnJlZ2lvblRocmVhZCgpKTsKLSAgICBu
YW1lZEZsb3cuZ2V0UmFuZ2VzKHJhbmdlT2JqZWN0cywgdGhpcyk7CiB9CiAKIGJvb2wgUmVuZGVy
TmFtZWRGbG93RnJhZ21lbnQ6OnNob3VsZEhhdmVBdXRvTG9naWNhbEhlaWdodCgpIGNvbnN0CkBA
IC0yNjIsMTAgKzI2MCw4IEBAIHZvaWQgUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQ6OmxheW91dEJs
b2MKICAgICBSZW5kZXJSZWdpb246OmxheW91dEJsb2NrKHJlbGF5b3V0Q2hpbGRyZW4pOwogCiAg
ICAgaWYgKGlzVmFsaWQoKSkgewotICAgICAgICBpZiAobV9mbG93VGhyZWFkLT5pbk92ZXJmbG93
TGF5b3V0UGhhc2UoKSB8fCBtX2Zsb3dUaHJlYWQtPmluRmluYWxMYXlvdXRQaGFzZSgpKSB7Cisg
ICAgICAgIGlmIChtX2Zsb3dUaHJlYWQtPmluT3ZlcmZsb3dMYXlvdXRQaGFzZSgpIHx8IG1fZmxv
d1RocmVhZC0+aW5GaW5hbExheW91dFBoYXNlKCkpCiAgICAgICAgICAgICBjb21wdXRlT3ZlcmZs
b3dGcm9tRmxvd1RocmVhZCgpOwotICAgICAgICAgICAgdXBkYXRlT3ZlcnNldFN0YXRlKCk7Ci0g
ICAgICAgIH0KIAogICAgICAgICBpZiAoaGFzQXV0b0xvZ2ljYWxIZWlnaHQoKSAmJiBtX2Zsb3dU
aHJlYWQtPmluTWVhc3VyZUNvbnRlbnRMYXlvdXRQaGFzZSgpKSB7CiAgICAgICAgICAgICBtX2Zs
b3dUaHJlYWQtPmludmFsaWRhdGVSZWdpb25zKCk7CkBAIC0yOTAsNzEgKzI4NiwxOSBAQCB2b2lk
IFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50OjppbnZhbGlkYXRlCiAgICAgfQogfQogCi12b2lkIFJl
bmRlck5hbWVkRmxvd0ZyYWdtZW50OjpzZXRSZWdpb25PdmVyc2V0U3RhdGUoUmVnaW9uT3ZlcnNl
dFN0YXRlIHN0YXRlKQotewotICAgIEFTU0VSVChnZW5lcmF0aW5nRWxlbWVudCgpKTsKLQotICAg
IGdlbmVyYXRpbmdFbGVtZW50KCktPnNldFJlZ2lvbk92ZXJzZXRTdGF0ZShzdGF0ZSk7Ci19Ci0K
LVJlZ2lvbk92ZXJzZXRTdGF0ZSBSZW5kZXJOYW1lZEZsb3dGcmFnbWVudDo6cmVnaW9uT3ZlcnNl
dFN0YXRlKCkgY29uc3QKLXsKLSAgICBBU1NFUlQoZ2VuZXJhdGluZ0VsZW1lbnQoKSk7Ci0KLSAg
ICBpZiAoIWlzVmFsaWQoKSkKLSAgICAgICAgcmV0dXJuIFJlZ2lvblVuZGVmaW5lZDsKLQotICAg
IHJldHVybiBnZW5lcmF0aW5nRWxlbWVudCgpLT5yZWdpb25PdmVyc2V0U3RhdGUoKTsKLX0KLQot
dm9pZCBSZW5kZXJOYW1lZEZsb3dGcmFnbWVudDo6dXBkYXRlT3ZlcnNldFN0YXRlKCkKLXsKLSAg
ICBBU1NFUlQoaXNWYWxpZCgpKTsKLQotICAgIFJlbmRlck5hbWVkRmxvd1RocmVhZCogZmxvd1Ro
cmVhZCA9IG5hbWVkRmxvd1RocmVhZCgpOwotICAgIEFTU0VSVChmbG93VGhyZWFkICYmIChmbG93
VGhyZWFkLT5pbk92ZXJmbG93TGF5b3V0UGhhc2UoKSB8fCBmbG93VGhyZWFkLT5pbkZpbmFsTGF5
b3V0UGhhc2UoKSkpOwotCi0gICAgTGF5b3V0VW5pdCBmbG93Q29udGVudEJvdHRvbSA9IGZsb3dU
aHJlYWQtPmZsb3dDb250ZW50Qm90dG9tKCk7Ci0gICAgYm9vbCBpc0hvcml6b250YWxXcml0aW5n
TW9kZSA9IGZsb3dUaHJlYWQtPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCk7Ci0KLSAgICBMYXlv
dXRVbml0IGZsb3dNaW4gPSBmbG93Q29udGVudEJvdHRvbSAtIChpc0hvcml6b250YWxXcml0aW5n
TW9kZSA/IGZsb3dUaHJlYWRQb3J0aW9uUmVjdCgpLnkoKSA6IGZsb3dUaHJlYWRQb3J0aW9uUmVj
dCgpLngoKSk7Ci0gICAgTGF5b3V0VW5pdCBmbG93TWF4ID0gZmxvd0NvbnRlbnRCb3R0b20gLSAo
aXNIb3Jpem9udGFsV3JpdGluZ01vZGUgPyBmbG93VGhyZWFkUG9ydGlvblJlY3QoKS5tYXhZKCkg
OiBmbG93VGhyZWFkUG9ydGlvblJlY3QoKS5tYXhYKCkpOwotCi0gICAgUmVnaW9uT3ZlcnNldFN0
YXRlIHByZXZpb3VzU3RhdGUgPSByZWdpb25PdmVyc2V0U3RhdGUoKTsKLSAgICBSZWdpb25PdmVy
c2V0U3RhdGUgc3RhdGUgPSBSZWdpb25GaXQ7Ci0gICAgaWYgKGZsb3dNaW4gPD0gMCkKLSAgICAg
ICAgc3RhdGUgPSBSZWdpb25FbXB0eTsKLSAgICBpZiAoZmxvd01heCA+IDAgJiYgaXNMYXN0UmVn
aW9uKCkpCi0gICAgICAgIHN0YXRlID0gUmVnaW9uT3ZlcnNldDsKLSAgICAKLSAgICBzZXRSZWdp
b25PdmVyc2V0U3RhdGUoc3RhdGUpOwotCi0gICAgLy8gRGV0ZXJtaW5lIHdoZXRoZXIgdGhlIE5h
bWVkRmxvdyBvYmplY3Qgc2hvdWxkIGRpc3BhdGNoIGEgcmVnaW9uT3ZlcnNldENoYW5nZSBldmVu
dAotICAgIGlmIChwcmV2aW91c1N0YXRlICE9IHN0YXRlKQotICAgICAgICBmbG93VGhyZWFkLT5z
ZXREaXNwYXRjaFJlZ2lvbk92ZXJzZXRDaGFuZ2VFdmVudCh0cnVlKTsKLX0KLQogdm9pZCBSZW5k
ZXJOYW1lZEZsb3dGcmFnbWVudDo6Y2hlY2tSZWdpb25TdHlsZSgpCiB7CiAgICAgQVNTRVJUKGlz
VmFsaWQoKSk7CiAKICAgICBib29sIGN1c3RvbVJlZ2lvblN0eWxlID0gZmFsc2U7CiAKLSAgICAv
LyBGSVhNRTogUmVnaW9uIHN0eWxpbmcgZG9lc24ndCB3b3JrIGZvciBwc2V1ZG8gZWxlbWVudHMu
Ci0gICAgaWYgKCFpc1BzZXVkb0VsZW1lbnQoKSkKLSAgICAgICAgY3VzdG9tUmVnaW9uU3R5bGUg
PSBnZW5lcmF0aW5nRWxlbWVudCgpLT5zdHlsZVJlc29sdmVyKCkuY2hlY2tSZWdpb25TdHlsZShn
ZW5lcmF0aW5nRWxlbWVudCgpKTsKICAgICBzZXRIYXNDdXN0b21SZWdpb25TdHlsZShjdXN0b21S
ZWdpb25TdHlsZSk7CiAgICAgZG93bmNhc3Q8UmVuZGVyTmFtZWRGbG93VGhyZWFkPigqbV9mbG93
VGhyZWFkKS5jaGVja1JlZ2lvbnNXaXRoU3R5bGluZygpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8
UmVuZGVyU3R5bGU+IFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50Ojpjb21wdXRlU3R5bGVJblJlZ2lv
bihSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgY29uc3QgUmVuZGVyU3R5bGUmIHBhcmVudFN0eWxl
KSBjb25zdAorc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBSZW5kZXJOYW1lZEZsb3dGcmFn
bWVudDo6Y29tcHV0ZVN0eWxlSW5SZWdpb24oUmVuZGVyRWxlbWVudCYsIGNvbnN0IFJlbmRlclN0
eWxlJikgY29uc3QKIHsKLSAgICBBU1NFUlQoIXJlbmRlcmVyLmlzQW5vbnltb3VzKCkpOwotCi0g
ICAgLy8gRklYTUU6IFJlZ2lvbiBzdHlsaW5nIGZhaWxzIGZvciBwc2V1ZG8tZWxlbWVudHMgYmVj
YXVzZSB0aGUgcmVuZGVyZXJzIGRvbid0IGhhdmUgYSBub2RlLgotICAgIGF1dG8gcmVuZGVyT2Jq
ZWN0UmVnaW9uU3R5bGUgPSByZW5kZXJlci5lbGVtZW50KCktPnN0eWxlUmVzb2x2ZXIoKS5zdHls
ZUZvckVsZW1lbnQoKnJlbmRlcmVyLmVsZW1lbnQoKSwgJnBhcmVudFN0eWxlLCBudWxscHRyLCBN
YXRjaEFsbFJ1bGVzLCB0aGlzKS5yZW5kZXJTdHlsZTsKLQotICAgIHJldHVybiByZW5kZXJPYmpl
Y3RSZWdpb25TdHlsZTsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogdm9pZCBSZW5kZXJOYW1l
ZEZsb3dGcmFnbWVudDo6Y29tcHV0ZUNoaWxkcmVuU3R5bGVJblJlZ2lvbihSZW5kZXJFbGVtZW50
JiByZW5kZXJlcikKQEAgLTQxMiw0MCArMzU2LDYgQEAgdm9pZCBSZW5kZXJOYW1lZEZsb3dGcmFn
bWVudDo6Y2xlYXJPYmplYwogCiB2b2lkIFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50OjpzZXRSZWdp
b25PYmplY3RzUmVnaW9uU3R5bGUoKQogewotICAgIGlmICghaGFzQ3VzdG9tUmVnaW9uU3R5bGUo
KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gU3RhcnQgZnJvbSBjb250ZW50IG5vZGVzIGFu
ZCByZWN1cnNpdmVseSBjb21wdXRlIHRoZSBzdHlsZSBpbiByZWdpb24gZm9yIHRoZSByZW5kZXIg
b2JqZWN0cyBiZWxvdy4KLSAgICAvLyBJZiB0aGUgc3R5bGUgaW4gcmVnaW9uIHdhcyBhbHJlYWR5
IGNvbXB1dGVkLCB1c2VkIHRoYXQgc3R5bGUgaW5zdGVhZCBvZiBjb21wdXRpbmcgYSBuZXcgb25l
LgotICAgIGNvbnN0IFJlbmRlck5hbWVkRmxvd1RocmVhZCYgbmFtZWRGbG93ID0gdmlldygpLmZs
b3dUaHJlYWRDb250cm9sbGVyKCkuZW5zdXJlUmVuZGVyRmxvd1RocmVhZFdpdGhOYW1lKHN0eWxl
KCkucmVnaW9uVGhyZWFkKCkpOwotICAgIGNvbnN0IE5hbWVkRmxvd0NvbnRlbnRFbGVtZW50cyYg
Y29udGVudEVsZW1lbnRzID0gbmFtZWRGbG93LmNvbnRlbnRFbGVtZW50cygpOwotCi0gICAgZm9y
IChjb25zdCBhdXRvJiBlbGVtZW50IDogY29udGVudEVsZW1lbnRzKSB7Ci0gICAgICAgIC8vIFRo
ZSBsaXN0IG9mIGNvbnRlbnQgbm9kZXMgY29udGFpbnMgYWxzbyB0aGUgbm9kZXMgd2l0aCBkaXNw
bGF5Om5vbmUuCi0gICAgICAgIGlmICghZWxlbWVudC0+cmVuZGVyZXIoKSkKLSAgICAgICAgICAg
IGNvbnRpbnVlOwotICAgICAgICBhdXRvJiByZW5kZXJlciA9ICplbGVtZW50LT5yZW5kZXJlcigp
OwotCi0gICAgICAgIC8vIElmIHRoZSBjb250ZW50IG5vZGUgZG9lcyBub3QgZmxvdyBhbnkgb2Yg
aXRzIGNoaWxkcmVuIGluIHRoaXMgcmVnaW9uLAotICAgICAgICAvLyB3ZSBkbyBub3QgY29tcHV0
ZSBhbnkgc3R5bGUgZm9yIHRoZW0gaW4gdGhpcyByZWdpb24uCi0gICAgICAgIGlmICghZmxvd1Ro
cmVhZCgpLT5vYmplY3RJbkZsb3dSZWdpb24oJnJlbmRlcmVyLCB0aGlzKSkKLSAgICAgICAgICAg
IGNvbnRpbnVlOwotCi0gICAgICAgIC8vIElmIHRoZSBvYmplY3QgaGFzIHN0eWxlIGluIHJlZ2lv
biwgdXNlIHRoYXQgaW5zdGVhZCBvZiBjb21wdXRpbmcgYSBuZXcgb25lLgotICAgICAgICBhdXRv
IGl0ID0gbV9yZW5kZXJlclJlZ2lvblN0eWxlLmZpbmQoJnJlbmRlcmVyKTsKLSAgICAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBvYmplY3RTdHlsZUluUmVnaW9uOwotICAgICAgICBi
b29sIG9iamVjdFJlZ2lvblN0eWxlQ2FjaGVkID0gZmFsc2U7Ci0gICAgICAgIGlmIChpdCAhPSBt
X3JlbmRlcmVyUmVnaW9uU3R5bGUuZW5kKCkpIHsKLSAgICAgICAgICAgIG9iamVjdFN0eWxlSW5S
ZWdpb24gPSBSZW5kZXJTdHlsZTo6Y2xvbmVQdHIoKml0LT52YWx1ZS5zdHlsZSk7Ci0gICAgICAg
ICAgICBBU1NFUlQoaXQtPnZhbHVlLmNhY2hlZCk7Ci0gICAgICAgICAgICBvYmplY3RSZWdpb25T
dHlsZUNhY2hlZCA9IHRydWU7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgb2JqZWN0U3R5
bGVJblJlZ2lvbiA9IGNvbXB1dGVTdHlsZUluUmVnaW9uKHJlbmRlcmVyLCBzdHlsZSgpKTsKLQot
ICAgICAgICBzZXRSZW5kZXJlclN0eWxlSW5SZWdpb24ocmVuZGVyZXIsIFdURk1vdmUob2JqZWN0
U3R5bGVJblJlZ2lvbiksIG9iamVjdFJlZ2lvblN0eWxlQ2FjaGVkKTsKLQotICAgICAgICBjb21w
dXRlQ2hpbGRyZW5TdHlsZUluUmVnaW9uKHJlbmRlcmVyKTsKLSAgICB9CiB9CiAKIHZvaWQgUmVu
ZGVyTmFtZWRGbG93RnJhZ21lbnQ6OnJlc3RvcmVSZWdpb25PYmplY3RzT3JpZ2luYWxTdHlsZSgp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93
RnJhZ21lbnQuaAkocmV2aXNpb24gMjIyMjU3KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlck5hbWVkRmxvd0ZyYWdtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEwNSw3ICsxMDUs
NiBAQCBwdWJsaWM6CiAKICAgICBib29sIGhhc0NvbXB1dGVkQXV0b0hlaWdodCgpIGNvbnN0IHsg
cmV0dXJuIG1faGFzQ29tcHV0ZWRBdXRvSGVpZ2h0OyB9CiAKLSAgICBSZWdpb25PdmVyc2V0U3Rh
dGUgcmVnaW9uT3ZlcnNldFN0YXRlKCkgY29uc3Q7CiAKICAgICB2b2lkIGF0dGFjaFJlZ2lvbigp
IG92ZXJyaWRlOwogICAgIHZvaWQgZGV0YWNoUmVnaW9uKCkgb3ZlcnJpZGU7CkBAIC0xMzYsOSAr
MTM1LDYgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgc2hvdWxkSGF2ZUF1dG9Mb2dpY2FsSGVpZ2h0
KCkgY29uc3Q7CiAKLSAgICB2b2lkIHVwZGF0ZU92ZXJzZXRTdGF0ZSgpOwotICAgIHZvaWQgc2V0
UmVnaW9uT3ZlcnNldFN0YXRlKFJlZ2lvbk92ZXJzZXRTdGF0ZSk7Ci0KICAgICB2b2lkIGxheW91
dEJsb2NrKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgTGF5b3V0VW5pdCBwYWdlTG9naWNhbEhlaWdo
dCA9IDApIG92ZXJyaWRlOwogCiAgICAgc3RydWN0IE9iamVjdFJlZ2lvblN0eWxlSW5mbyB7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93VGhyZWFkLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93VGhy
ZWFkLmNwcAkocmV2aXNpb24gMjIyMjU3KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlck5hbWVkRmxvd1RocmVhZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxLDE1ICs0MSwxMyBA
QAogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKICNpbmNsdWRlICJTaGFkb3dSb290LmgiCiAjaW5j
bHVkZSAiVGV4dC5oIgotI2luY2x1ZGUgIldlYktpdE5hbWVkRmxvdy5oIgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLVJlbmRlck5hbWVkRmxvd1RocmVhZDo6UmVuZGVyTmFtZWRGbG93VGhyZWFk
KERvY3VtZW50JiBkb2N1bWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSwgUmVmPFdlYktpdE5hbWVk
Rmxvdz4mJiBuYW1lZEZsb3cpCitSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6OlJlbmRlck5hbWVkRmxv
d1RocmVhZChEb2N1bWVudCYgZG9jdW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgOiBS
ZW5kZXJGbG93VGhyZWFkKGRvY3VtZW50LCBXVEZNb3ZlKHN0eWxlKSkKICAgICAsIG1faGFzUmVn
aW9uc1dpdGhTdHlsaW5nKGZhbHNlKQogICAgICwgbV9kaXNwYXRjaFJlZ2lvbk92ZXJzZXRDaGFu
Z2VFdmVudChmYWxzZSkKLSAgICAsIG1fbmFtZWRGbG93KFdURk1vdmUobmFtZWRGbG93KSkKICAg
ICAsIG1fcmVnaW9uT3ZlcnNldENoYW5nZUV2ZW50VGltZXIoKnRoaXMsICZSZW5kZXJOYW1lZEZs
b3dUaHJlYWQ6OnJlZ2lvbk92ZXJzZXRDaGFuZ2VFdmVudFRpbWVyRmlyZWQpCiB7CiB9CkBAIC03
OCwxNSArNzYsNiBAQCBjb25zdCBjaGFyKiBSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6OnJlbmRlCiAg
ICAgCiB2b2lkIFJlbmRlck5hbWVkRmxvd1RocmVhZDo6Y2xlYXJDb250ZW50RWxlbWVudHMoKQog
ewotICAgIGZvciAoYXV0byYgY29udGVudEVsZW1lbnQgOiBtX2NvbnRlbnRFbGVtZW50cykgewot
ICAgICAgICBBU1NFUlQoY29udGVudEVsZW1lbnQpOwotICAgICAgICBBU1NFUlQoY29udGVudEVs
ZW1lbnQtPmlzTmFtZWRGbG93Q29udGVudEVsZW1lbnQoKSk7Ci0gICAgICAgIEFTU0VSVCgmY29u
dGVudEVsZW1lbnQtPmRvY3VtZW50KCkgPT0gJmRvY3VtZW50KCkpOwotICAgICAgICAKLSAgICAg
ICAgY29udGVudEVsZW1lbnQtPmNsZWFySXNOYW1lZEZsb3dDb250ZW50RWxlbWVudCgpOwotICAg
IH0KLSAgICAKLSAgICBtX2NvbnRlbnRFbGVtZW50cy5jbGVhcigpOwogfQogCiB2b2lkIFJlbmRl
ck5hbWVkRmxvd1RocmVhZDo6dXBkYXRlV3JpdGluZ01vZGUoKQpAQCAtNDY3LDUxICs0NTYsMjIg
QEAgdm9pZCBSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6OnB1c2hEZXBlbmRlbgogLy8gVGhlIGNvbnRl
bnQgbm9kZXMgbGlzdCBjb250YWlucyB0aG9zZSBub2RlcyB3aXRoIC13ZWJraXQtZmxvdy1pbnRv
OiBmbG93LgogLy8gQW4gZWxlbWVudCB3aXRoIGRpc3BsYXk6bm9uZSBzaG91bGQgYWxzbyBiZSBs
aXN0ZWQgYW1vbmcgdGhvc2Ugbm9kZXMuCiAvLyBUaGUgbGlzdCBvZiBub2RlcyBpcyBvcmRlcmVk
Lgotdm9pZCBSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6OnJlZ2lzdGVyTmFtZWRGbG93Q29udGVudEVs
ZW1lbnQoRWxlbWVudCYgY29udGVudEVsZW1lbnQpCit2b2lkIFJlbmRlck5hbWVkRmxvd1RocmVh
ZDo6cmVnaXN0ZXJOYW1lZEZsb3dDb250ZW50RWxlbWVudChFbGVtZW50JikKIHsKLSAgICBBU1NF
UlQoJmNvbnRlbnRFbGVtZW50LmRvY3VtZW50KCkgPT0gJmRvY3VtZW50KCkpOwotCi0gICAgY29u
dGVudEVsZW1lbnQuc2V0SXNOYW1lZEZsb3dDb250ZW50RWxlbWVudCgpOwotCi0gICAgcmVzZXRN
YXJrRm9yRGVzdHJ1Y3Rpb24oKTsKLQotICAgIC8vIEZpbmQgdGhlIGZpcnN0IGNvbnRlbnQgbm9k
ZSBmb2xsb3dpbmcgdGhlIG5ldyBjb250ZW50IG5vZGUuCi0gICAgZm9yIChhdXRvJiBlbGVtZW50
IDogbV9jb250ZW50RWxlbWVudHMpIHsKLSAgICAgICAgdW5zaWduZWQgc2hvcnQgcG9zaXRpb24g
PSBjb250ZW50RWxlbWVudC5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbigqZWxlbWVudCk7Ci0gICAg
ICAgIGlmIChwb3NpdGlvbiAmIE5vZGU6OkRPQ1VNRU5UX1BPU0lUSU9OX0ZPTExPV0lORykgewot
ICAgICAgICAgICAgbV9jb250ZW50RWxlbWVudHMuaW5zZXJ0QmVmb3JlKGVsZW1lbnQsICZjb250
ZW50RWxlbWVudCk7Ci0gICAgICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJl
Z2lzdGVyTmFtZWRGbG93Q29udGVudEVsZW1lbnQoZG9jdW1lbnQoKSwgbmFtZWRGbG93KCksIGNv
bnRlbnRFbGVtZW50LCBlbGVtZW50KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQot
ICAgIH0KLQotICAgIG1fY29udGVudEVsZW1lbnRzLmFkZCgmY29udGVudEVsZW1lbnQpOwotICAg
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVnaXN0ZXJOYW1lZEZsb3dDb250ZW50RWxl
bWVudChkb2N1bWVudCgpLCBuYW1lZEZsb3coKSwgY29udGVudEVsZW1lbnQpOwogfQogCi12b2lk
IFJlbmRlck5hbWVkRmxvd1RocmVhZDo6dW5yZWdpc3Rlck5hbWVkRmxvd0NvbnRlbnRFbGVtZW50
KEVsZW1lbnQmIGNvbnRlbnRFbGVtZW50KQordm9pZCBSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6OnVu
cmVnaXN0ZXJOYW1lZEZsb3dDb250ZW50RWxlbWVudChFbGVtZW50JikKIHsKLSAgICBBU1NFUlQo
bV9jb250ZW50RWxlbWVudHMuY29udGFpbnMoJmNvbnRlbnRFbGVtZW50KSk7Ci0gICAgQVNTRVJU
KGNvbnRlbnRFbGVtZW50LmlzTmFtZWRGbG93Q29udGVudEVsZW1lbnQoKSk7Ci0gICAgQVNTRVJU
KCZjb250ZW50RWxlbWVudC5kb2N1bWVudCgpID09ICZkb2N1bWVudCgpKTsKLQotICAgIGNvbnRl
bnRFbGVtZW50LmNsZWFySXNOYW1lZEZsb3dDb250ZW50RWxlbWVudCgpOwotICAgIG1fY29udGVu
dEVsZW1lbnRzLnJlbW92ZSgmY29udGVudEVsZW1lbnQpOwotCi0gICAgaWYgKGNhbkJlRGVzdHJv
eWVkKCkpCi0gICAgICAgIHNldE1hcmtGb3JEZXN0cnVjdGlvbigpOwotCi0gICAgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpkaWRVbnJlZ2lzdGVyTmFtZWRGbG93Q29udGVudEVsZW1lbnQoZG9j
dW1lbnQoKSwgbmFtZWRGbG93KCksIGNvbnRlbnRFbGVtZW50KTsKIH0KIAotYm9vbCBSZW5kZXJO
YW1lZEZsb3dUaHJlYWQ6Omhhc0NvbnRlbnRFbGVtZW50KEVsZW1lbnQmIGNvbnRlbnRFbGVtZW50
KSBjb25zdAorYm9vbCBSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6Omhhc0NvbnRlbnRFbGVtZW50KEVs
ZW1lbnQmKSBjb25zdAogewotICAgIHJldHVybiBtX2NvbnRlbnRFbGVtZW50cy5jb250YWlucygm
Y29udGVudEVsZW1lbnQpOworICAgIHJldHVybiBmYWxzZTsKIH0KICAgICAKIGNvbnN0IEF0b21p
Y1N0cmluZyYgUmVuZGVyTmFtZWRGbG93VGhyZWFkOjpmbG93VGhyZWFkTmFtZSgpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIG5hbWVkRmxvdygpLm5hbWUoKTsKKyAgICByZXR1cm4gbnVsbEF0b20oKTsK
IH0KIAogYm9vbCBSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6OmlzQ2hpbGRBbGxvd2VkKGNvbnN0IFJl
bmRlck9iamVjdCYgY2hpbGQsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkgY29uc3QKQEAgLTUz
MCw0MyArNDkwLDIzIEBAIGJvb2wgUmVuZGVyTmFtZWRGbG93VGhyZWFkOjppc0NoaWxkQWxsb3cK
IAogdm9pZCBSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6OmRpc3BhdGNoUmVnaW9uT3ZlcnNldENoYW5n
ZUV2ZW50SWZOZWVkZWQoKQogewotICAgIGlmICghbV9kaXNwYXRjaFJlZ2lvbk92ZXJzZXRDaGFu
Z2VFdmVudCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9kaXNwYXRjaFJlZ2lvbk92ZXJzZXRD
aGFuZ2VFdmVudCA9IGZhbHNlOwotICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ2hh
bmdlUmVnaW9uT3ZlcnNldChkb2N1bWVudCgpLCBuYW1lZEZsb3coKSk7Ci0gICAgCi0gICAgaWYg
KCFtX3JlZ2lvbk92ZXJzZXRDaGFuZ2VFdmVudFRpbWVyLmlzQWN0aXZlKCkgJiYgbmFtZWRGbG93
KCkuaGFzRXZlbnRMaXN0ZW5lcnMoKSkKLSAgICAgICAgbV9yZWdpb25PdmVyc2V0Q2hhbmdlRXZl
bnRUaW1lci5zdGFydE9uZVNob3QoMF9zKTsKIH0KIAogdm9pZCBSZW5kZXJOYW1lZEZsb3dUaHJl
YWQ6OnJlZ2lvbk92ZXJzZXRDaGFuZ2VFdmVudFRpbWVyRmlyZWQoKQogewotICAgIG5hbWVkRmxv
dygpLmRpc3BhdGNoUmVnaW9uT3ZlcnNldENoYW5nZUV2ZW50KCk7CiB9CiAKIHZvaWQgUmVuZGVy
TmFtZWRGbG93VGhyZWFkOjpzZXRNYXJrRm9yRGVzdHJ1Y3Rpb24oKQogewotICAgIGlmIChuYW1l
ZEZsb3coKS5mbG93U3RhdGUoKSA9PSBXZWJLaXROYW1lZEZsb3c6OkZsb3dTdGF0ZU51bGwpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIG5hbWVkRmxvdygpLnNldFJlbmRlcmVyKG51bGxwdHIpOwot
ICAgIC8vIEFmdGVyIHRoaXMgY2FsbCBlbmRzLCB0aGUgcmVuZGVyZXIgY2FuIGJlIHNhZmVseSBk
ZXN0cm95ZWQuCi0gICAgLy8gVGhlIE5hbWVkRmxvdyBvYmplY3QgbWF5IG91dGxpdmUgaXRzIHJl
bmRlcmVyIGlmIGl0J3MgcmVmZXJlbmNlZCBmcm9tIGEgc2NyaXB0IGFuZCBtYXkgYmUgcmVhdGFj
aGVkIHRvIG9uZSBpZiB0aGUgbmFtZWQgZmxvdyBpcyByZWNyZWF0ZWQgaW4gdGhlIHN0eWxlc2hl
ZXQuCiB9CiAKIHZvaWQgUmVuZGVyTmFtZWRGbG93VGhyZWFkOjpyZXNldE1hcmtGb3JEZXN0cnVj
dGlvbigpCiB7Ci0gICAgaWYgKG5hbWVkRmxvdygpLmZsb3dTdGF0ZSgpID09IFdlYktpdE5hbWVk
Rmxvdzo6Rmxvd1N0YXRlQ3JlYXRlZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbmFtZWRGbG93
KCkuc2V0UmVuZGVyZXIodGhpcyk7CiB9CiAKIGJvb2wgUmVuZGVyTmFtZWRGbG93VGhyZWFkOjpp
c01hcmtlZEZvckRlc3RydWN0aW9uKCkgY29uc3QKIHsKLSAgICAvLyBGbG93IHRocmVhZHMgaW4g
dGhlICJOVUxMIiBzdGF0ZSBjYW4gYmUgZGVzdHJveWVkLgotICAgIHJldHVybiBuYW1lZEZsb3co
KS5mbG93U3RhdGUoKSA9PSBXZWJLaXROYW1lZEZsb3c6OkZsb3dTdGF0ZU51bGw7CisgICAgcmV0
dXJuIGZhbHNlOwogfQogCiBzdGF0aWMgYm9vbCBpc0NvbnRhaW5lZEluRWxlbWVudHMoY29uc3Qg
VmVjdG9yPEVsZW1lbnQqPiYgb3RoZXJzLCBFbGVtZW50KiBlbGVtZW50KQpAQCAtNTkwLDggKzUz
MCw2IEBAIHN0YXRpYyBib29sIGJveEludGVyc2VjdHNSZWdpb24oTGF5b3V0VW4KIC8vIFJldHJp
ZXZlIHRoZSBuZXh0IG5vZGUgdG8gYmUgdmlzaXRlZCB3aGlsZSBjb21wdXRpbmcgdGhlIHJhbmdl
cyBpbnNpZGUgYSByZWdpb24uCiBzdGF0aWMgTm9kZSogbmV4dE5vZGVJbnNpZGVDb250ZW50RWxl
bWVudChjb25zdCBOb2RlJiBjdXJyTm9kZSwgY29uc3QgRWxlbWVudCogY29udGVudEVsZW1lbnQp
CiB7Ci0gICAgQVNTRVJUKGNvbnRlbnRFbGVtZW50ICYmIGNvbnRlbnRFbGVtZW50LT5pc05hbWVk
Rmxvd0NvbnRlbnRFbGVtZW50KCkpOwotCiAgICAgaWYgKGN1cnJOb2RlLnJlbmRlcmVyKCkgJiYg
Y3Vyck5vZGUucmVuZGVyZXIoKS0+aXNTVkdSb290KCkpCiAgICAgICAgIHJldHVybiBOb2RlVHJh
dmVyc2FsOjpuZXh0U2tpcHBpbmdDaGlsZHJlbihjdXJyTm9kZSwgY29udGVudEVsZW1lbnQpOwog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93VGhyZWFkLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd1Ro
cmVhZC5oCShyZXZpc2lvbiAyMjIyNTcpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTmFtZWRGbG93VGhyZWFkLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDYgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBOb2RlOwogY2xhc3MgUmVuZGVyTmFtZWRGbG93VGhy
ZWFkOwotY2xhc3MgV2ViS2l0TmFtZWRGbG93OwogCiB0eXBlZGVmIExpc3RIYXNoU2V0PFJlbmRl
ck5hbWVkRmxvd1RocmVhZCo+IFJlbmRlck5hbWVkRmxvd1RocmVhZExpc3Q7CiB0eXBlZGVmIEhh
c2hDb3VudGVkU2V0PFJlbmRlck5hbWVkRmxvd1RocmVhZCo+IFJlbmRlck5hbWVkRmxvd1RocmVh
ZENvdW50ZWRTZXQ7CkBAIC00NCw3ICs0Myw3IEBAIHR5cGVkZWYgTGlzdEhhc2hTZXQ8RWxlbWVu
dCo+IE5hbWVkRmxvd0MKIAogY2xhc3MgUmVuZGVyTmFtZWRGbG93VGhyZWFkIGZpbmFsIDogcHVi
bGljIFJlbmRlckZsb3dUaHJlYWQsIHB1YmxpYyBTZWxlY3Rpb25TdWJ0cmVlUm9vdCB7CiBwdWJs
aWM6Ci0gICAgUmVuZGVyTmFtZWRGbG93VGhyZWFkKERvY3VtZW50JiwgUmVuZGVyU3R5bGUmJiwg
UmVmPFdlYktpdE5hbWVkRmxvdz4mJik7CisgICAgUmVuZGVyTmFtZWRGbG93VGhyZWFkKERvY3Vt
ZW50JiwgUmVuZGVyU3R5bGUmJik7CiAgICAgdmlydHVhbCB+UmVuZGVyTmFtZWRGbG93VGhyZWFk
KCk7CiAKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGZsb3dUaHJlYWROYW1lKCkgY29uc3Q7CkBA
IC0xMTgsOSArMTE3LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNsZWFyQ29udGVudEVsZW1lbnRz
KCk7CiAgICAgdm9pZCB1cGRhdGVXcml0aW5nTW9kZSgpOwogCi0gICAgV2ViS2l0TmFtZWRGbG93
JiBuYW1lZEZsb3coKSB7IHJldHVybiBtX25hbWVkRmxvdzsgfQotICAgIGNvbnN0IFdlYktpdE5h
bWVkRmxvdyYgbmFtZWRGbG93KCkgY29uc3QgeyByZXR1cm4gbV9uYW1lZEZsb3c7IH0KLQogICAg
IC8vIE9ic2VydmVyIGZsb3cgdGhyZWFkcyBoYXZlIGludmFsaWQgcmVnaW9ucyB0aGF0IGRlcGVu
ZCBvbiB0aGUgc3RhdGUgb2YgdGhpcyB0aHJlYWQKICAgICAvLyB0byByZS12YWxpZGF0ZSB0aGVp
ciByZWdpb25zLiBLZWVwaW5nIGEgc2V0IG9mIG9ic2VydmVyIHRocmVhZHMgbWFrZSBpdCBlYXN5
CiAgICAgLy8gdG8gbm90aWZ5IHRoZW0gd2hlbiBhIHJlZ2lvbiB3YXMgcmVtb3ZlZCBmcm9tIHRo
aXMgZmxvdy4KQEAgLTEzOCw5ICsxMzQsNiBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9oYXNSZWdp
b25zV2l0aFN0eWxpbmcgOiAxOwogICAgIGJvb2wgbV9kaXNwYXRjaFJlZ2lvbk92ZXJzZXRDaGFu
Z2VFdmVudCA6IDE7CiAKLSAgICAvLyBUaGUgRE9NIE9iamVjdCB0aGF0IHJlcHJlc2VudHMgYSBu
YW1lZCBmbG93LgotICAgIFJlZjxXZWJLaXROYW1lZEZsb3c+IG1fbmFtZWRGbG93OwotCiAgICAg
VGltZXIgbV9yZWdpb25PdmVyc2V0Q2hhbmdlRXZlbnRUaW1lcjsKIAogICAgIExheW91dFVuaXQg
bV9mbG93Q29udGVudEJvdHRvbTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJSZWdpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJSZWdpb24uY3BwCShyZXZpc2lvbiAyMjIyNTcpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyUmVnaW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYyLDE5ICsyNjIsNyBAQCB2
b2lkIFJlbmRlclJlZ2lvbjo6cmVwYWludEZsb3dUaHJlYWRDb250CiAKIHZvaWQgUmVuZGVyUmVn
aW9uOjppbnN0YWxsRmxvd1RocmVhZCgpCiB7Ci0gICAgbV9mbG93VGhyZWFkID0gJnZpZXcoKS5m
bG93VGhyZWFkQ29udHJvbGxlcigpLmVuc3VyZVJlbmRlckZsb3dUaHJlYWRXaXRoTmFtZShzdHls
ZSgpLnJlZ2lvblRocmVhZCgpKTsKLQotICAgIC8vIEJ5IG5vdyB0aGUgZmxvdyB0aHJlYWQgc2hv
dWxkIGFscmVhZHkgYmUgYWRkZWQgdG8gdGhlIHJlbmRlcmluZyB0cmVlLAotICAgIC8vIHNvIHdl
IGdvIHVwIHRoZSByZW5kZXJpbmcgcGFyZW50cyBhbmQgY2hlY2sgdGhhdCB0aGlzIHJlZ2lvbiBp
cyBub3QgcGFydCBvZiB0aGUgc2FtZQotICAgIC8vIGZsb3cgdGhhdCBpdCBhY3R1YWxseSBuZWVk
cyB0byBkaXNwbGF5LiBJdCB3b3VsZCBjcmVhdGUgYSBjaXJjdWxhciByZWZlcmVuY2UuCi0KLSAg
ICBhdXRvIGNsb3Nlc3RGbG93VGhyZWFkQW5jZXN0b3IgPSBhbmNlc3RvcnNPZlR5cGU8UmVuZGVy
TmFtZWRGbG93VGhyZWFkPigqdGhpcykuZmlyc3QoKTsKLSAgICBpZiAoIWNsb3Nlc3RGbG93VGhy
ZWFkQW5jZXN0b3IpIHsKLSAgICAgICAgbV9wYXJlbnROYW1lZEZsb3dUaHJlYWQgPSBudWxscHRy
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgbV9wYXJlbnROYW1lZEZsb3dUaHJlYWQg
PSAmKmNsb3Nlc3RGbG93VGhyZWFkQW5jZXN0b3I7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiB9CiAKIHZvaWQgUmVuZGVyUmVnaW9uOjphdHRhY2hSZWdpb24oKQpJbmRleDogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmgJ
KHJldmlzaW9uIDIyMjI1NykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5k
ZXJTdHlsZUNvbnN0YW50cy5oCSh3b3JraW5nIGNvcHkpCkBAIC00NzcsNyArNDc3LDcgQEAgZW51
bSBUZXh0Wm9vbSB7CiB9OwogCiBlbnVtIEJyZWFrQmV0d2VlbiB7Ci0gICAgQXV0b0JyZWFrQmV0
d2VlbiwgQXZvaWRCcmVha0JldHdlZW4sIEF2b2lkQ29sdW1uQnJlYWtCZXR3ZWVuLCBBdm9pZFBh
Z2VCcmVha0JldHdlZW4sIEF2b2lkUmVnaW9uQnJlYWtCZXR3ZWVuLCBDb2x1bW5CcmVha0JldHdl
ZW4sIFJlZ2lvbkJyZWFrQmV0d2VlbiwgUGFnZUJyZWFrQmV0d2VlbiwgTGVmdFBhZ2VCcmVha0Jl
dHdlZW4sIFJpZ2h0UGFnZUJyZWFrQmV0d2VlbiwgUmVjdG9QYWdlQnJlYWtCZXR3ZWVuLCBWZXJz
b1BhZ2VCcmVha0JldHdlZW4KKyAgICBBdXRvQnJlYWtCZXR3ZWVuLCBBdm9pZEJyZWFrQmV0d2Vl
biwgQXZvaWRDb2x1bW5CcmVha0JldHdlZW4sIEF2b2lkUGFnZUJyZWFrQmV0d2VlbiwgQ29sdW1u
QnJlYWtCZXR3ZWVuLCBQYWdlQnJlYWtCZXR3ZWVuLCBMZWZ0UGFnZUJyZWFrQmV0d2VlbiwgUmln
aHRQYWdlQnJlYWtCZXR3ZWVuLCBSZWN0b1BhZ2VCcmVha0JldHdlZW4sIFZlcnNvUGFnZUJyZWFr
QmV0d2VlbgogfTsKIGJvb2wgYWx3YXlzUGFnZUJyZWFrKEJyZWFrQmV0d2Vlbik7CiAgICAgCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvV2lsbENoYW5nZURhdGEuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9XaWxsQ2hhbmdlRGF0
YS5jcHAJKHJldmlzaW9uIDIyMjI1NykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9XaWxsQ2hhbmdlRGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg3LDkgKzg3LDYgQEAgYm9v
bCBXaWxsQ2hhbmdlRGF0YTo6cHJvcGVydHlDcmVhdGVzU3RhYwogICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRNYXNrOgogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrSW1hZ2U6CiAgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tCb3hJbWFnZToKLSNpZiBFTkFCTEUoQ1NTX1JFR0lP
TlMpCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEZsb3dGcm9tOgotI2VuZGlmCiAjaWYgRU5B
QkxFKEFDQ0VMRVJBVEVEX09WRVJGTE9XX1NDUk9MTElORykKICAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0T3ZlcmZsb3dTY3JvbGxpbmc6CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N0
eWxlL1JlbmRlclRyZWVQb3NpdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
c3R5bGUvUmVuZGVyVHJlZVBvc2l0aW9uLmNwcAkocmV2aXNpb24gMjIyMjU3KQorKysgU291cmNl
L1dlYkNvcmUvc3R5bGUvUmVuZGVyVHJlZVBvc2l0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjcsOSArMjcsNyBAQAogI2luY2x1ZGUgIlJlbmRlclRyZWVQb3NpdGlvbi5oIgogCiAjaW5jbHVk
ZSAiQ29tcG9zZWRUcmVlSXRlcmF0b3IuaCIKLSNpbmNsdWRlICJGbG93VGhyZWFkQ29udHJvbGxl
ci5oIgogI2luY2x1ZGUgIlBzZXVkb0VsZW1lbnQuaCIKLSNpbmNsdWRlICJSZW5kZXJOYW1lZEZs
b3dUaHJlYWQuaCIKICNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKICNpbmNsdWRlICJTaGFkb3dS
b290LmgiCiAKQEAgLTY3LDggKzY1LDcgQEAgUmVuZGVyT2JqZWN0KiBSZW5kZXJUcmVlUG9zaXRp
b246OnByZXZpbwogCiAgICAgYXV0byBjb21wb3NlZENoaWxkcmVuID0gY29tcG9zZWRUcmVlQ2hp
bGRyZW4oKnBhcmVudEVsZW1lbnQpOwogICAgIGZvciAoYXV0byBpdCA9IGNvbXBvc2VkQ2hpbGRy
ZW4uYXQodGV4dE5vZGUpLCBlbmQgPSBjb21wb3NlZENoaWxkcmVuLmVuZCgpOyBpdCAhPSBlbmQ7
IC0taXQpIHsKLSAgICAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IGl0LT5yZW5kZXJlcigp
OwotICAgICAgICBpZiAocmVuZGVyZXIgJiYgIWlzUmVuZGVyZXJSZXBhcmVudGVkKCpyZW5kZXJl
cikpCisgICAgICAgIGlmIChhdXRvKiByZW5kZXJlciA9IGl0LT5yZW5kZXJlcigpKQogICAgICAg
ICAgICAgcmV0dXJuIHJlbmRlcmVyOwogICAgIH0KICAgICBpZiAoYXV0byogYmVmb3JlID0gcGFy
ZW50RWxlbWVudC0+YmVmb3JlUHNldWRvRWxlbWVudCgpKQpAQCAtOTUsOCArOTIsNyBAQCBSZW5k
ZXJPYmplY3QqIFJlbmRlclRyZWVQb3NpdGlvbjo6bmV4dFNpCiAgICAgICAgICAgICBpdC50cmF2
ZXJzZU5leHQoKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9Ci0gICAgICAgIFJl
bmRlck9iamVjdCogcmVuZGVyZXIgPSBub2RlLnJlbmRlcmVyKCk7Ci0gICAgICAgIGlmIChyZW5k
ZXJlciAmJiAhaXNSZW5kZXJlclJlcGFyZW50ZWQoKnJlbmRlcmVyKSkKKyAgICAgICAgaWYgKGF1
dG8qIHJlbmRlcmVyID0gaXQtPnJlbmRlcmVyKCkpCiAgICAgICAgICAgICByZXR1cm4gcmVuZGVy
ZXI7CiAgICAgICAgIAogICAgICAgICBpdC50cmF2ZXJzZU5leHRTa2lwcGluZ0NoaWxkcmVuKCk7
CkBAIC0xMDYsNTcgKzEwMiw0IEBAIFJlbmRlck9iamVjdCogUmVuZGVyVHJlZVBvc2l0aW9uOjpu
ZXh0U2kKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotI2lmIEVOQUJMRShDU1NfUkVHSU9OUykK
LVJlbmRlclRyZWVQb3NpdGlvbiBSZW5kZXJUcmVlUG9zaXRpb246Omluc2VydGlvblBvc2l0aW9u
Rm9yRmxvd1RocmVhZChFbGVtZW50KiBpbnNlcnRpb25QYXJlbnQsIEVsZW1lbnQmIGVsZW1lbnQs
IGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKLXsKLSAgICBBU1NFUlQoZWxlbWVudC5zaG91bGRN
b3ZlVG9GbG93VGhyZWFkKHN0eWxlKSk7Ci0gICAgYXV0byYgcGFyZW50Rmxvd1RocmVhZCA9IGVs
ZW1lbnQuZG9jdW1lbnQoKS5yZW5kZXJWaWV3KCktPmZsb3dUaHJlYWRDb250cm9sbGVyKCkuZW5z
dXJlUmVuZGVyRmxvd1RocmVhZFdpdGhOYW1lKHN0eWxlLmZsb3dUaHJlYWQoKSk7Ci0KLSAgICBp
ZiAoIWluc2VydGlvblBhcmVudCkKLSAgICAgICAgcmV0dXJuIHsgcGFyZW50Rmxvd1RocmVhZCwg
bnVsbHB0ciB9OwotCi0gICAgYXV0byBjb21wb3NlZERlc2NlbmRhbnRzID0gY29tcG9zZWRUcmVl
RGVzY2VuZGFudHMoKmluc2VydGlvblBhcmVudCk7Ci0gICAgYXV0byBpdCA9IGVsZW1lbnQuaXNC
ZWZvcmVQc2V1ZG9FbGVtZW50KCkgPyBjb21wb3NlZERlc2NlbmRhbnRzLmJlZ2luKCkgOiBjb21w
b3NlZERlc2NlbmRhbnRzLmF0KGVsZW1lbnQpOwotICAgIGF1dG8gZW5kID0gY29tcG9zZWREZXNj
ZW5kYW50cy5lbmQoKTsKLSAgICB3aGlsZSAoaXQgIT0gZW5kKSB7Ci0gICAgICAgIGF1dG8mIGN1
cnJlbnROb2RlID0gKml0OwotICAgICAgICBib29sIGhhc0Rpc3BsYXlDb250ZW50cyA9IGlzPEVs
ZW1lbnQ+KGN1cnJlbnROb2RlKSAmJiBkb3duY2FzdDxFbGVtZW50PihjdXJyZW50Tm9kZSkuaGFz
RGlzcGxheUNvbnRlbnRzKCk7Ci0gICAgICAgIGlmIChoYXNEaXNwbGF5Q29udGVudHMpIHsKLSAg
ICAgICAgICAgIGl0LnRyYXZlcnNlTmV4dCgpOwotICAgICAgICAgICAgY29udGludWU7Ci0gICAg
ICAgIH0KLQotICAgICAgICBhdXRvKiByZW5kZXJlciA9IGN1cnJlbnROb2RlLnJlbmRlcmVyKCk7
Ci0gICAgICAgIGlmICghcmVuZGVyZXIpIHsKLSAgICAgICAgICAgIGl0LnRyYXZlcnNlTmV4dFNr
aXBwaW5nQ2hpbGRyZW4oKTsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0KLSAg
ICAgICAgaWYgKCFpczxSZW5kZXJFbGVtZW50PigqcmVuZGVyZXIpKSB7Ci0gICAgICAgICAgICBp
dC50cmF2ZXJzZU5leHQoKTsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0KLSAg
ICAgICAgLy8gV2UgYXJlIHRoZSBsYXN0IGNoaWxkIGluIHRoaXMgZmxvdy4KLSAgICAgICAgaWYg
KCFpc1JlbmRlcmVyUmVwYXJlbnRlZCgqcmVuZGVyZXIpKQotICAgICAgICAgICAgcmV0dXJuIHsg
cGFyZW50Rmxvd1RocmVhZCwgbnVsbHB0ciB9OwotCi0gICAgICAgIGlmIChyZW5kZXJlci0+c3R5
bGUoKS5oYXNGbG93SW50bygpICYmIHN0eWxlLmZsb3dUaHJlYWQoKSA9PSByZW5kZXJlci0+c3R5
bGUoKS5mbG93VGhyZWFkKCkpCi0gICAgICAgICAgICByZXR1cm4geyBwYXJlbnRGbG93VGhyZWFk
LCBkb3duY2FzdDxSZW5kZXJFbGVtZW50PihyZW5kZXJlcikgfTsKLSAgICAgICAgLy8gTmVzdGVk
IGZsb3dzLCBza2lwLgotICAgICAgICBpdC50cmF2ZXJzZU5leHRTa2lwcGluZ0NoaWxkcmVuKCk7
Ci0gICAgfQotICAgIHJldHVybiB7IHBhcmVudEZsb3dUaHJlYWQsIG51bGxwdHIgfTsKLX0KLSNl
bmRpZgotICAgIAotYm9vbCBSZW5kZXJUcmVlUG9zaXRpb246OmlzUmVuZGVyZXJSZXBhcmVudGVk
KGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIpCi17Ci0gICAgaWYgKCFyZW5kZXJlci5ub2Rl
KCktPmlzRWxlbWVudE5vZGUoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChyZW5k
ZXJlci5zdHlsZSgpLmhhc0Zsb3dJbnRvKCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIHJl
dHVybiBmYWxzZTsKLX0KLQogfQpJbmRleDogU291cmNlL1dlYkNvcmUvc3R5bGUvUmVuZGVyVHJl
ZVBvc2l0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3R5bGUvUmVuZGVyVHJl
ZVBvc2l0aW9uLmgJKHJldmlzaW9uIDIyMjI1NykKKysrIFNvdXJjZS9XZWJDb3JlL3N0eWxlL1Jl
bmRlclRyZWVQb3NpdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCwxMCArNDQsNiBAQCBwdWJs
aWM6CiAgICAgICAgIDogbV9wYXJlbnQocGFyZW50KQogICAgIHsKICAgICB9Ci0gICAgCi0jaWYg
RU5BQkxFKENTU19SRUdJT05TKQotICAgIHN0YXRpYyBSZW5kZXJUcmVlUG9zaXRpb24gaW5zZXJ0
aW9uUG9zaXRpb25Gb3JGbG93VGhyZWFkKEVsZW1lbnQqIGluc2VydGlvblBhcmVudCwgRWxlbWVu
dCYgY2hpbGQsIGNvbnN0IFJlbmRlclN0eWxlJik7Ci0jZW5kaWYKIAogICAgIFJlbmRlckVsZW1l
bnQmIHBhcmVudCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyZW50OyB9CiAgICAgdm9pZCBpbnNlcnQo
UmVuZGVyT2JqZWN0Jik7CkBAIC02MCwxOCArNTYsOCBAQCBwdWJsaWM6CiAKICAgICBSZW5kZXJP
YmplY3QqIHByZXZpb3VzU2libGluZ1JlbmRlcmVyKGNvbnN0IFRleHQmKSBjb25zdDsKICAgICBS
ZW5kZXJPYmplY3QqIG5leHRTaWJsaW5nUmVuZGVyZXIoY29uc3QgTm9kZSYpIGNvbnN0OwotICAg
IHN0YXRpYyBib29sIGlzUmVuZGVyZXJSZXBhcmVudGVkKGNvbnN0IFJlbmRlck9iamVjdCYpOwog
CiBwcml2YXRlOgotI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKLSAgICBSZW5kZXJUcmVlUG9zaXRp
b24oUmVuZGVyRmxvd1RocmVhZCYgcGFyZW50LCBSZW5kZXJPYmplY3QqIG5leHRTaWJsaW5nKQot
ICAgICAgICA6IG1fcGFyZW50KHBhcmVudCkKLSAgICAgICAgLCBtX25leHRTaWJsaW5nKG5leHRT
aWJsaW5nKQotICAgICAgICAsIG1faGFzVmFsaWROZXh0U2libGluZyh0cnVlKQotICAgIHsKLSAg
ICB9Ci0jZW5kaWYKLQogICAgIFJlbmRlckVsZW1lbnQmIG1fcGFyZW50OwogICAgIFJlbmRlck9i
amVjdCogbV9uZXh0U2libGluZyB7IG51bGxwdHIgfTsKICAgICBib29sIG1faGFzVmFsaWROZXh0
U2libGluZyB7IGZhbHNlIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdHlsZS9SZW5kZXJUcmVl
VXBkYXRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3R5bGUvUmVuZGVyVHJl
ZVVwZGF0ZXIuY3BwCShyZXZpc2lvbiAyMjIyNTcpCisrKyBTb3VyY2UvV2ViQ29yZS9zdHlsZS9S
ZW5kZXJUcmVlVXBkYXRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDYgQEAKICNp
bmNsdWRlICJDb21wb3NlZFRyZWVJdGVyYXRvci5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAj
aW5jbHVkZSAiRWxlbWVudC5oIgotI2luY2x1ZGUgIkZsb3dUaHJlYWRDb250cm9sbGVyLmgiCiAj
aW5jbHVkZSAiSFRNTFNsb3RFbGVtZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uLmgiCiAjaW5jbHVkZSAiTm9kZVJlbmRlclN0eWxlLmgiCkBAIC00MCw3ICszOSw2IEBA
CiAjaW5jbHVkZSAiUmVuZGVyRGVzY2VuZGFudEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiUmVuZGVy
RnVsbFNjcmVlbi5oIgogI2luY2x1ZGUgIlJlbmRlckxpc3RJdGVtLmgiCi0jaW5jbHVkZSAiUmVu
ZGVyTmFtZWRGbG93VGhyZWFkLmgiCiAjaW5jbHVkZSAiUmVuZGVyVHJlZVVwZGF0ZXJGaXJzdExl
dHRlci5oIgogI2luY2x1ZGUgIlJlbmRlclRyZWVVcGRhdGVyR2VuZXJhdGVkQ29udGVudC5oIgog
I2luY2x1ZGUgIlJlbmRlclRyZWVVcGRhdGVyTGlzdEl0ZW0uaCIKQEAgLTMwMCw4ICsyOTgsNyBA
QCB2b2lkIFJlbmRlclRyZWVVcGRhdGVyOjp1cGRhdGVFbGVtZW50UmVuCiAgICAgQ2hlY2tGb3JW
aXNpYmlsaXR5Q2hhbmdlIGNoZWNrRm9yVmlzaWJpbGl0eUNoYW5nZShlbGVtZW50KTsKICNlbmRp
ZgogCi0gICAgYm9vbCBzaG91bGRUZWFyRG93blJlbmRlcmVycyA9IHVwZGF0ZS5jaGFuZ2UgPT0g
U3R5bGU6OkRldGFjaAotICAgICAgICAmJiAoZWxlbWVudC5yZW5kZXJlcigpIHx8IGVsZW1lbnQu
aXNOYW1lZEZsb3dDb250ZW50RWxlbWVudCgpIHx8IGVsZW1lbnQuaGFzRGlzcGxheUNvbnRlbnRz
KCkpOworICAgIGJvb2wgc2hvdWxkVGVhckRvd25SZW5kZXJlcnMgPSB1cGRhdGUuY2hhbmdlID09
IFN0eWxlOjpEZXRhY2ggJiYgKGVsZW1lbnQucmVuZGVyZXIoKSB8fCBlbGVtZW50Lmhhc0Rpc3Bs
YXlDb250ZW50cygpKTsKICAgICBpZiAoc2hvdWxkVGVhckRvd25SZW5kZXJlcnMpIHsKICAgICAg
ICAgaWYgKCFlbGVtZW50LnJlbmRlcmVyKCkpIHsKICAgICAgICAgICAgIC8vIFdlIG1heSBiZSB0
ZWFyaW5nIGRvd24gYSBkZXNjZW5kYW50IHJlbmRlcmVyIGNhY2hlZCBpbiByZW5kZXJUcmVlUG9z
aXRpb24uCkBAIC0zNDgsMjUgKzM0NSw5IEBAIHZvaWQgUmVuZGVyVHJlZVVwZGF0ZXI6OnVwZGF0
ZUVsZW1lbnRSZW4KICAgICByZW5kZXJlci5zZXRTdHlsZShSZW5kZXJTdHlsZTo6Y2xvbmUoKnVw
ZGF0ZS5zdHlsZSksIFN0eWxlRGlmZmVyZW5jZUVxdWFsKTsKIH0KIAotI2lmIEVOQUJMRShDU1Nf
UkVHSU9OUykKLXN0YXRpYyB2b2lkIHJlZ2lzdGVyRWxlbWVudEZvckZsb3dUaHJlYWRJZk5lZWRl
ZChFbGVtZW50JiBlbGVtZW50LCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCi17Ci0gICAgaWYg
KCFlbGVtZW50LnNob3VsZE1vdmVUb0Zsb3dUaHJlYWQoc3R5bGUpKQotICAgICAgICByZXR1cm47
Ci0gICAgRmxvd1RocmVhZENvbnRyb2xsZXImIGZsb3dUaHJlYWRDb250cm9sbGVyID0gcmVuZGVy
VmlldygpLmZsb3dUaHJlYWRDb250cm9sbGVyKCk7Ci0gICAgZmxvd1RocmVhZENvbnRyb2xsZXIu
cmVnaXN0ZXJOYW1lZEZsb3dDb250ZW50RWxlbWVudChlbGVtZW50LCBmbG93VGhyZWFkQ29udHJv
bGxlci5lbnN1cmVSZW5kZXJGbG93VGhyZWFkV2l0aE5hbWUoc3R5bGUuZmxvd1RocmVhZCgpKSk7
Ci19Ci0jZW5kaWYKLQogdm9pZCBSZW5kZXJUcmVlVXBkYXRlcjo6Y3JlYXRlUmVuZGVyZXIoRWxl
bWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKIHsKLSAgICBhdXRvIGNvbXB1dGVJ
bnNlcnRpb25Qb3NpdGlvbiA9IFt0aGlzLCAmZWxlbWVudCwgJnN0eWxlXSAoKSB7Ci0jaWYgRU5B
QkxFKENTU19SRUdJT05TKQotICAgICAgICBpZiAoZWxlbWVudC5zaG91bGRNb3ZlVG9GbG93VGhy
ZWFkKHN0eWxlKSkKLSAgICAgICAgICAgIHJldHVybiBSZW5kZXJUcmVlUG9zaXRpb246Omluc2Vy
dGlvblBvc2l0aW9uRm9yRmxvd1RocmVhZChyZW5kZXJUcmVlUG9zaXRpb24oKS5wYXJlbnQoKS5l
bGVtZW50KCksIGVsZW1lbnQsIHN0eWxlKTsKLSNlbHNlCi0gICAgICAgIFVOVVNFRF9QQVJBTShz
dHlsZSk7Ci0jZW5kaWYKKyAgICBhdXRvIGNvbXB1dGVJbnNlcnRpb25Qb3NpdGlvbiA9IFt0aGlz
LCAmZWxlbWVudF0gKCkgewogICAgICAgICByZW5kZXJUcmVlUG9zaXRpb24oKS5jb21wdXRlTmV4
dFNpYmxpbmcoZWxlbWVudCk7CiAgICAgICAgIHJldHVybiByZW5kZXJUcmVlUG9zaXRpb24oKTsK
ICAgICB9OwpAQCAtMzc0LDExICszNTUsNiBAQCB2b2lkIFJlbmRlclRyZWVVcGRhdGVyOjpjcmVh
dGVSZW5kZXJlcihFCiAgICAgaWYgKCFzaG91bGRDcmVhdGVSZW5kZXJlcihlbGVtZW50LCByZW5k
ZXJUcmVlUG9zaXRpb24oKS5wYXJlbnQoKSkpCiAgICAgICAgIHJldHVybjsKIAotI2lmIEVOQUJM
RShDU1NfUkVHSU9OUykKLSAgICAvLyBFdmVuIGRpc3BsYXk6IG5vbmUgZWxlbWVudHMgbmVlZCB0
byBiZSByZWdpc3RlcmVkIGluIEZsb3dUaHJlYWRDb250cm9sbGVyLgotICAgIHJlZ2lzdGVyRWxl
bWVudEZvckZsb3dUaHJlYWRJZk5lZWRlZChlbGVtZW50LCBzdHlsZSk7Ci0jZW5kaWYKLQogICAg
IGlmICghZWxlbWVudC5yZW5kZXJlcklzTmVlZGVkKHN0eWxlKSkKICAgICAgICAgcmV0dXJuOwog
CkBAIC0zOTEsMTAgKzM2Nyw2IEBAIHZvaWQgUmVuZGVyVHJlZVVwZGF0ZXI6OmNyZWF0ZVJlbmRl
cmVyKEUKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIC8vIE1ha2Ugc3VyZSB0aGUgUmVu
ZGVyT2JqZWN0IGFscmVhZHkga25vd3MgaXQgaXMgZ29pbmcgdG8gYmUgYWRkZWQgdG8gYSBSZW5k
ZXJGbG93VGhyZWFkIGJlZm9yZSB3ZSBzZXQgdGhlIHN0eWxlCi0gICAgLy8gZm9yIHRoZSBmaXJz
dCB0aW1lLiBPdGhlcndpc2UgY29kZSB1c2luZyBpblJlbmRlckZsb3dUaHJlYWQoKSBpbiB0aGUg
c3R5bGVXaWxsQ2hhbmdlIGFuZCBzdHlsZURpZENoYW5nZSB3aWxsIGZhaWwuCi0gICAgbmV3UmVu
ZGVyZXItPnNldEZsb3dUaHJlYWRTdGF0ZShpbnNlcnRpb25Qb3NpdGlvbi5wYXJlbnQoKS5mbG93
VGhyZWFkU3RhdGUoKSk7Ci0KICAgICBlbGVtZW50LnNldFJlbmRlcmVyKG5ld1JlbmRlcmVyKTsK
IAogICAgIG5ld1JlbmRlcmVyLT5pbml0aWFsaXplU3R5bGUoKTsKQEAgLTUwMyw5ICs0NzUsOSBA
QCB2b2lkIFJlbmRlclRyZWVVcGRhdGVyOjppbnZhbGlkYXRlV2hpdGVzCiAgICAgICAgICAgICBp
ZiAobV9zdHlsZVVwZGF0ZS0+ZWxlbWVudFVwZGF0ZShkb3duY2FzdDxFbGVtZW50Pigqc2libGlu
ZykpKQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIC8vIFRleHQgcmVuZGVy
ZXJzIGJleW9uZCByZW5kZXJlZCBlbGVtZW50cyBjYW4ndCBiZSBhZmZlY3RlZC4KLSAgICAgICAg
ICAgIGlmICghc2libGluZy0+cmVuZGVyZXIoKSB8fCBSZW5kZXJUcmVlUG9zaXRpb246OmlzUmVu
ZGVyZXJSZXBhcmVudGVkKCpzaWJsaW5nLT5yZW5kZXJlcigpKSkKLSAgICAgICAgICAgICAgICBj
b250aW51ZTsKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGlmIChzaWJsaW5nLT5y
ZW5kZXJlcigpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGNvbnRpbnVl
OwogICAgICAgICB9CiAgICAgICAgIGlmICghaXM8VGV4dD4oKnNpYmxpbmcpKQogICAgICAgICAg
ICAgY29udGludWU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdHlsZS9SZW5kZXJUcmVlVXBkYXRl
ckdlbmVyYXRlZENvbnRlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N0eWxl
L1JlbmRlclRyZWVVcGRhdGVyR2VuZXJhdGVkQ29udGVudC5jcHAJKHJldmlzaW9uIDIyMjI1NykK
KysrIFNvdXJjZS9XZWJDb3JlL3N0eWxlL1JlbmRlclRyZWVVcGRhdGVyR2VuZXJhdGVkQ29udGVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgyLDkgKzgyLDYgQEAgdm9pZCBSZW5kZXJUcmVlVXBk
YXRlcjo6R2VuZXJhdGVkQ29udGVudAogc3RhdGljIHZvaWQgY3JlYXRlQ29udGVudFJlbmRlcmVy
cyhSZW5kZXJFbGVtZW50JiByZW5kZXJlcikKIHsKICAgICBhdXRvJiBzdHlsZSA9IHJlbmRlcmVy
LnN0eWxlKCk7Ci0gICAgaWYgKHN0eWxlLmhhc0Zsb3dGcm9tKCkpCi0gICAgICAgIHJldHVybjsK
LQogICAgIEFTU0VSVChzdHlsZS5jb250ZW50RGF0YSgpKTsKIAogICAgIGZvciAoY29uc3QgQ29u
dGVudERhdGEqIGNvbnRlbnQgPSBzdHlsZS5jb250ZW50RGF0YSgpOyBjb250ZW50OyBjb250ZW50
ID0gY29udGVudC0+bmV4dCgpKSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUNo
YW5nZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVDaGFuZ2Uu
Y3BwCShyZXZpc2lvbiAyMjIyNTcpCisrKyBTb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUNoYW5n
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDE3ICs0OCw2IEBAIENoYW5nZSBkZXRlcm1pbmVD
aGFuZ2UoY29uc3QgUmVuZGVyU3R5bGUKICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NTUwNjkKICAgICBpZiAoczEuaGFzVGV4dENvbWJpbmUoKSAhPSBzMi5o
YXNUZXh0Q29tYmluZSgpKQogICAgICAgICByZXR1cm4gRGV0YWNoOwotICAgIC8vIFdlIG5lZWQg
dG8gcmVhdHRhY2ggdGhlIG5vZGUsIHNvIHRoYXQgaXQgaXMgbW92ZWQgdG8gdGhlIGNvcnJlY3Qg
UmVuZGVyRmxvd1RocmVhZC4KLSAgICBpZiAoczEuZmxvd1RocmVhZCgpICE9IHMyLmZsb3dUaHJl
YWQoKSkKLSAgICAgICAgcmV0dXJuIERldGFjaDsKLSAgICAvLyBXaGVuIHRoZSByZWdpb24gdGhy
ZWFkIGhhcyBjaGFuZ2VkLCB3ZSBuZWVkIHRvIHByZXBhcmUgYSBzZXBhcmF0ZSByZW5kZXIgcmVn
aW9uIG9iamVjdC4KLSAgICBpZiAoczEucmVnaW9uVGhyZWFkKCkgIT0gczIucmVnaW9uVGhyZWFk
KCkpCi0gICAgICAgIHJldHVybiBEZXRhY2g7Ci0gICAgLy8gRklYTUU6IE11bHRpY29sdW1uIHJl
Z2lvbnMgbm90IHlldCBzdXBwb3J0ZWQgKGh0dHA6Ly9kZXYudzMub3JnL2Nzc3dnL2Nzcy1yZWdp
b25zLyNtdWx0aS1jb2x1bW4tcmVnaW9ucykKLSAgICAvLyBXaGVuIHRoZSBub2RlIGhhcyByZWdp
b24gc3R5bGUgYW5kIGNoYW5nZWQgaXRzIG11bHRpY29sIHN0eWxlLCB3ZSBoYXZlIHRvIHByZXBh
cmUKLSAgICAvLyBhIHNlcGFyYXRlIHJlbmRlciByZWdpb24gb2JqZWN0LgotICAgIGlmIChzMS5o
YXNGbG93RnJvbSgpICYmIChzMS5zcGVjaWZpZXNDb2x1bW5zKCkgIT0gczIuc3BlY2lmaWVzQ29s
dW1ucygpKSkKLSAgICAgICAgcmV0dXJuIERldGFjaDsKIAogICAgIGlmIChzMSAhPSBzMikgewog
ICAgICAgICBpZiAoczEuaW5oZXJpdGVkTm90RXF1YWwoJnMyKSkKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3N0eWxlL1N0eWxlVHJlZVJlc29sdmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5jcHAJKHJldmlzaW9uIDIyMjI1NykKKysrIFNv
dXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlVHJlZVJlc29sdmVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTI0LDcgKzEyNCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gVHJlZVJlc29s
dmUKICAgICBpZiAoYXV0byBzdHlsZSA9IHNjb3BlKCkuc2hhcmluZ1Jlc29sdmVyLnJlc29sdmUo
ZWxlbWVudCwgKm1fdXBkYXRlKSkKICAgICAgICAgcmV0dXJuIHN0eWxlOwogCi0gICAgYXV0byBl
bGVtZW50U3R5bGUgPSBzY29wZSgpLnN0eWxlUmVzb2x2ZXIuc3R5bGVGb3JFbGVtZW50KGVsZW1l
bnQsICZpbmhlcml0ZWRTdHlsZSwgcGFyZW50Qm94U3R5bGUoKSwgTWF0Y2hBbGxSdWxlcywgbnVs
bHB0ciwgJnNjb3BlKCkuc2VsZWN0b3JGaWx0ZXIpOworICAgIGF1dG8gZWxlbWVudFN0eWxlID0g
c2NvcGUoKS5zdHlsZVJlc29sdmVyLnN0eWxlRm9yRWxlbWVudChlbGVtZW50LCAmaW5oZXJpdGVk
U3R5bGUsIHBhcmVudEJveFN0eWxlKCksIE1hdGNoQWxsUnVsZXMsICZzY29wZSgpLnNlbGVjdG9y
RmlsdGVyKTsKIAogICAgIGlmIChlbGVtZW50U3R5bGUucmVsYXRpb25zKQogICAgICAgICBjb21t
aXRSZWxhdGlvbnMoV1RGTW92ZShlbGVtZW50U3R5bGUucmVsYXRpb25zKSwgKm1fdXBkYXRlKTsK
QEAgLTE2MiwxMCArMTYyLDYgQEAgc3RhdGljIGJvb2wgYWZmZWN0c1JlbmRlcmVkU3VidHJlZShF
bGVtZQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBpZiAoZWxlbWVudC5yZW5kZXJlcklzTmVl
ZGVkKG5ld1N0eWxlKSkKICAgICAgICAgcmV0dXJuIHRydWU7Ci0jaWYgRU5BQkxFKENTU19SRUdJ
T05TKQotICAgIGlmIChlbGVtZW50LnNob3VsZE1vdmVUb0Zsb3dUaHJlYWQobmV3U3R5bGUpKQot
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSNlbmRpZgogICAgIHJldHVybiBmYWxzZTsKIH0KIApJbmRl
eDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcAkocmV2aXNpb24gMjIyMjU3KQorKysgU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01ODksMTQgKzU4
OSw2IEBAIHN0YXRpYyBib29sIGhhc0xvYWRMaXN0ZW5lcihFbGVtZW50KiBlbGUKICAgICByZXR1
cm4gZmFsc2U7CiB9CiAKLSNpZiBFTkFCTEUoQ1NTX1JFR0lPTlMpCi1ib29sIFNWR0VsZW1lbnQ6
OnNob3VsZE1vdmVUb0Zsb3dUaHJlYWQoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlVG9Vc2UpIGNv
bnN0Ci17Ci0gICAgLy8gQWxsb3cgb25seSBzdmcgcm9vdCBlbGVtZW50cyB0byBiZSBkaXJlY3Rs
eSBjb2xsZWN0ZWQgYnkgYSByZW5kZXIgZmxvdyB0aHJlYWQuCi0gICAgcmV0dXJuIHBhcmVudE5v
ZGUoKSAmJiAhcGFyZW50Tm9kZSgpLT5pc1NWR0VsZW1lbnQoKSAmJiBoYXNUYWdOYW1lKFNWR05h
bWVzOjpzdmdUYWcpICYmIEVsZW1lbnQ6OnNob3VsZE1vdmVUb0Zsb3dUaHJlYWQoc3R5bGVUb1Vz
ZSk7Ci19Ci0jZW5kaWYKLQogdm9pZCBTVkdFbGVtZW50OjpzZW5kU1ZHTG9hZEV2ZW50SWZQb3Nz
aWJsZShib29sIHNlbmRQYXJlbnRMb2FkRXZlbnRzKQogewogICAgIGlmICghaXNDb25uZWN0ZWQo
KSB8fCAhZG9jdW1lbnQoKS5mcmFtZSgpKQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Vs
ZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oCShy
ZXZpc2lvbiAyMjIyNTcpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMzEsMTAgKzEzMSw2IEBAIHB1YmxpYzoKICAgICBib29sIHJlbW92ZUV2
ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXIm
LCBjb25zdCBMaXN0ZW5lck9wdGlvbnMmKSBvdmVycmlkZTsKICAgICBib29sIGhhc0ZvY3VzRXZl
bnRMaXN0ZW5lcnMoKSBjb25zdDsKIAotI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKLSAgICBib29s
IHNob3VsZE1vdmVUb0Zsb3dUaHJlYWQoY29uc3QgUmVuZGVyU3R5bGUmKSBjb25zdCBvdmVycmlk
ZTsKLSNlbmRpZgotCiAgICAgYm9vbCBoYXNUYWdOYW1lKGNvbnN0IFNWR1F1YWxpZmllZE5hbWUm
IG5hbWUpIGNvbnN0IHsgcmV0dXJuIGhhc0xvY2FsTmFtZShuYW1lLmxvY2FsTmFtZSgpKTsgfQog
ICAgIGludCB0YWJJbmRleCgpIGNvbnN0IG92ZXJyaWRlOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>321304</attachid>
            <date>2017-09-20 01:57:09 -0700</date>
            <delta_ts>2017-09-20 02:12:27 -0700</delta_ts>
            <desc>patch</desc>
            <filename>named-flow-removal-dom-etc-7.patch</filename>
            <type>text/plain</type>
            <size>246875</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5l
cy54Y2NvbmZpZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ29uZmlndXJh
dGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcJKHJldmlzaW9uIDIyMjI1NykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwko
d29ya2luZyBjb3B5KQpAQCAtNzgsNyArNzgsNiBAQCBFTkFCTEVfQ1NTX0NPTVBPU0lUSU5HID0g
RU5BQkxFX0NTU19DT01QCiBFTkFCTEVfQ1NTX0RFVklDRV9BREFQVEFUSU9OID0gOwogRU5BQkxF
X0NTU19JTUFHRV9PUklFTlRBVElPTiA9IDsKIEVOQUJMRV9DU1NfSU1BR0VfUkVTT0xVVElPTiA9
IDsKLUVOQUJMRV9DU1NfUkVHSU9OUyA9IDsKIEVOQUJMRV9DU1NfU0VMRUNUT1JTX0xFVkVMNCA9
IEVOQUJMRV9DU1NfU0VMRUNUT1JTX0xFVkVMNDsKIEVOQUJMRV9DU1MzX1RFWFQgPSA7CiBFTkFC
TEVfQ1VSU09SX1ZJU0lCSUxJVFkgPSBFTkFCTEVfQ1VSU09SX1ZJU0lCSUxJVFk7CkBAIC0yNDMs
NCArMjQyLDQgQEAgRU5BQkxFX0RBVEFfSU5URVJBQ1RJT05faXBob25lc2ltdWxhdG9yIAogRU5B
QkxFX0RBVEFfSU5URVJBQ1RJT05bc2RrPWlwaG9uZW9zMTAqXSA9IDsKIEVOQUJMRV9EQVRBX0lO
VEVSQUNUSU9OW3Nkaz1pcGhvbmVzaW11bGF0b3IxMCpdID0gOwogCi1GRUFUVVJFX0RFRklORVMg
PSAkKEVOQUJMRV8zRF9UUkFOU0ZPUk1TKSAkKEVOQUJMRV9BQ0NFTEVSQVRFRF8yRF9DQU5WQVMp
ICQoRU5BQkxFX0FDQ0VMRVJBVEVEX09WRVJGTE9XX1NDUk9MTElORykgJChFTkFCTEVfQVBQTEVf
UEFZKSAkKEVOQUJMRV9BUFBMRV9QQVlfU0VTU0lPTl9WMykgJChFTkFCTEVfQVRUQUNITUVOVF9F
TEVNRU5UKSAkKEVOQUJMRV9BVkZfQ0FQVElPTlMpICQoRU5BQkxFX0NBQ0hFX1BBUlRJVElPTklO
RykgJChFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcpICQoRU5BQkxFX0NPTlRFTlRfRklMVEVSSU5H
KSAkKEVOQUJMRV9DU1NfQU5JTUFUSU9OU19MRVZFTF8yKSAkKEVOQUJMRV9DU1NfQk9YX0RFQ09S
QVRJT05fQlJFQUspICQoRU5BQkxFX0NTU19DT01QT1NJVElORykgJChFTkFCTEVfQ1NTX0RFVklD
RV9BREFQVEFUSU9OKSAkKEVOQUJMRV9DU1NfSU1BR0VfT1JJRU5UQVRJT04pICQoRU5BQkxFX0NT
U19JTUFHRV9SRVNPTFVUSU9OKSAkKEVOQUJMRV9DU1NfUkVHSU9OUykgJChFTkFCTEVfQ1NTX1ND
Uk9MTF9TTkFQKSAkKEVOQUJMRV9DU1NfU0VMRUNUT1JTX0xFVkVMNCkgJChFTkFCTEVfQ1NTX1RS
QUlMSU5HX1dPUkQpICQoRU5BQkxFX0NTUzNfVEVYVCkgJChFTkFCTEVfQ1VSU09SX1ZJU0lCSUxJ
VFkpICQoRU5BQkxFX0NVU1RPTV9TQ0hFTUVfSEFORExFUikgJChFTkFCTEVfREFTSEJPQVJEX1NV
UFBPUlQpICQoRU5BQkxFX0RBVEFfSU5URVJBQ1RJT04pICQoRU5BQkxFX0RBVEFDVUVfVkFMVUUp
ICQoRU5BQkxFX0RBVEFMSVNUX0VMRU1FTlQpICQoRU5BQkxFX0RFVklDRV9PUklFTlRBVElPTikg
JChFTkFCTEVfRFJBR19TVVBQT1JUKSAkKEVOQUJMRV9FTkNSWVBURURfTUVESUEpICQoRU5BQkxF
X0ZBU1RfSklUX1BFUk1JU1NJT05TKSAkKEVOQUJMRV9GSUxURVJTX0xFVkVMXzIpICQoRU5BQkxF
X0ZUTF9KSVQpICQoRU5BQkxFX0ZVTExTQ1JFRU5fQVBJKSAkKEVOQUJMRV9HQU1FUEFEKSAkKEVO
QUJMRV9HRU9MT0NBVElPTikgJChFTkFCTEVfSUNPTkRBVEFCQVNFKSAkKEVOQUJMRV9JTkRFWEVE
X0RBVEFCQVNFX0lOX1dPUktFUlMpICQoRU5BQkxFX0lOREVYRURfREFUQUJBU0UpICQoRU5BQkxF
X0lOUFVUX1RZUEVfQ09MT1JfUE9QT1ZFUikgJChFTkFCTEVfSU5QVVRfVFlQRV9DT0xPUikgJChF
TkFCTEVfSU5QVVRfVFlQRV9EQVRFKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1FX0lOQ09N
UExFVEUpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURVRJTUVMT0NBTCkgJChFTkFCTEVfSU5QVVRf
VFlQRV9NT05USCkgJChFTkFCTEVfSU5QVVRfVFlQRV9USU1FKSAkKEVOQUJMRV9JTlBVVF9UWVBF
X1dFRUspICQoRU5BQkxFX0lOVEVSU0VDVElPTl9PQlNFUlZFUikgJChFTkFCTEVfSU5UTCkgJChF
TkFCTEVfSU9TX0dFU1RVUkVfRVZFTlRTKSAkKEVOQUJMRV9JT1NfVE9VQ0hfRVZFTlRTKSAkKEVO
QUJMRV9KSVQpICQoRU5BQkxFX0tFWUJPQVJEX0tFWV9BVFRSSUJVVEUpICQoRU5BQkxFX0tFWUJP
QVJEX0NPREVfQVRUUklCVVRFKSAkKEVOQUJMRV9MRUdBQ1lfQ1NTX1ZFTkRPUl9QUkVGSVhFUykg
JChFTkFCTEVfTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkgJChFTkFCTEVfTEVHQUNZX1ZFTkRPUl9Q
UkVGSVhFUykgJChFTkFCTEVfTEVUVEVSUFJFU1MpICQoRU5BQkxFX0xJTktfUFJFRkVUQ0gpICQo
RU5BQkxFX01BQ19HRVNUVVJFX0VWRU5UUykgJChFTkFCTEVfTUFUSE1MKSAkKEVOQUJMRV9NRURJ
QV9DQVBUVVJFKSAkKEVOQUJMRV9NRURJQV9DT05UUk9MU19TQ1JJUFQpICQoRU5BQkxFX01FRElB
X1NFU1NJT04pICQoRU5BQkxFX01FRElBX1NPVVJDRSkgJChFTkFCTEVfTUVESUFfU1RBVElTVElD
UykgJChFTkFCTEVfTUVESUFfU1RSRUFNKSAkKEVOQUJMRV9NRVRFUl9FTEVNRU5UKSAkKEVOQUJM
RV9NSFRNTCkgJChFTkFCTEVfTU9VU0VfQ1VSU09SX1NDQUxFKSAkKEVOQUJMRV9OQVZJR0FUT1Jf
Q09OVEVOVF9VVElMUykgJChFTkFCTEVfTkFWSUdBVE9SX1NUQU5EQUxPTkUpICQoRU5BQkxFX05P
VElGSUNBVElPTlMpICQoRU5BQkxFX1BBWU1FTlRfUkVRVUVTVCkgJChFTkFCTEVfUERGS0lUX1BM
VUdJTikgJChFTkFCTEVfUE9JTlRFUl9MT0NLKSAkKEVOQUJMRV9QVUJMSUNfU1VGRklYX0xJU1Qp
ICQoRU5BQkxFX1FVT1RBKSAkKEVOQUJMRV9SRU1PVEVfSU5TUEVDVE9SKSAkKEVOQUJMRV9SRVNP
TFVUSU9OX01FRElBX1FVRVJZKSAkKEVOQUJMRV9SRVNPVVJDRV9VU0FHRSkgJChFTkFCTEVfUlVC
QkVSX0JBTkRJTkcpICQoRU5BQkxFX1NFUlZJQ0VfQ09OVFJPTFMpICQoRU5BQkxFX1NFUlZJQ0Vf
V09SS0VSKSAkKEVOQUJMRV9TUEVFQ0hfU1lOVEhFU0lTKSAkKEVOQUJMRV9TVFJFQU1TX0FQSSkg
JChFTkFCTEVfU1VCVExFX0NSWVBUTykgJChFTkFCTEVfU1ZHX0ZPTlRTKSAkKEVOQUJMRV9URUxF
UEhPTkVfTlVNQkVSX0RFVEVDVElPTikgJChFTkFCTEVfVEVYVF9BVVRPU0laSU5HKSAkKEVOQUJM
RV9UT1VDSF9FVkVOVFMpICQoRU5BQkxFX1RPVUNIX0lDT05fTE9BRElORykgJChFTkFCTEVfVVNF
UlNFTEVDVF9BTEwpICQoRU5BQkxFX1ZBUklBVElPTl9GT05UUykgJChFTkFCTEVfVklERU9fUFJF
U0VOVEFUSU9OX01PREUpICQoRU5BQkxFX01BQ19WSURFT19UT09MQk9YKSAkKEVOQUJMRV9WSURF
T19UUkFDSykgJChFTkFCTEVfVklERU8pICQoRU5BQkxFX1dFQl9BTklNQVRJT05TKSAkKEVOQUJM
RV9XRUJfQVVESU8pICQoRU5BQkxFX1dFQl9SVEMpICQoRU5BQkxFX1dFQkFTU0VNQkxZKSAkKEVO
QUJMRV9XRUJHTCkgJChFTkFCTEVfV0VCR0wyKSAkKEVOQUJMRV9XRUJHUFUpICQoRU5BQkxFX1dJ
UkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJChFTkFCTEVfWFNMVCk7CitGRUFUVVJFX0RFRklORVMg
PSAkKEVOQUJMRV8zRF9UUkFOU0ZPUk1TKSAkKEVOQUJMRV9BQ0NFTEVSQVRFRF8yRF9DQU5WQVMp
ICQoRU5BQkxFX0FDQ0VMRVJBVEVEX09WRVJGTE9XX1NDUk9MTElORykgJChFTkFCTEVfQVBQTEVf
UEFZKSAkKEVOQUJMRV9BUFBMRV9QQVlfU0VTU0lPTl9WMykgJChFTkFCTEVfQVRUQUNITUVOVF9F
TEVNRU5UKSAkKEVOQUJMRV9BVkZfQ0FQVElPTlMpICQoRU5BQkxFX0NBQ0hFX1BBUlRJVElPTklO
RykgJChFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcpICQoRU5BQkxFX0NPTlRFTlRfRklMVEVSSU5H
KSAkKEVOQUJMRV9DU1NfQU5JTUFUSU9OU19MRVZFTF8yKSAkKEVOQUJMRV9DU1NfQk9YX0RFQ09S
QVRJT05fQlJFQUspICQoRU5BQkxFX0NTU19DT01QT1NJVElORykgJChFTkFCTEVfQ1NTX0RFVklD
RV9BREFQVEFUSU9OKSAkKEVOQUJMRV9DU1NfSU1BR0VfT1JJRU5UQVRJT04pICQoRU5BQkxFX0NT
U19JTUFHRV9SRVNPTFVUSU9OKSAkKEVOQUJMRV9DU1NfU0NST0xMX1NOQVApICQoRU5BQkxFX0NT
U19TRUxFQ1RPUlNfTEVWRUw0KSAkKEVOQUJMRV9DU1NfVFJBSUxJTkdfV09SRCkgJChFTkFCTEVf
Q1NTM19URVhUKSAkKEVOQUJMRV9DVVJTT1JfVklTSUJJTElUWSkgJChFTkFCTEVfQ1VTVE9NX1ND
SEVNRV9IQU5ETEVSKSAkKEVOQUJMRV9EQVNIQk9BUkRfU1VQUE9SVCkgJChFTkFCTEVfREFUQV9J
TlRFUkFDVElPTikgJChFTkFCTEVfREFUQUNVRV9WQUxVRSkgJChFTkFCTEVfREFUQUxJU1RfRUxF
TUVOVCkgJChFTkFCTEVfREVWSUNFX09SSUVOVEFUSU9OKSAkKEVOQUJMRV9EUkFHX1NVUFBPUlQp
ICQoRU5BQkxFX0VOQ1JZUFRFRF9NRURJQSkgJChFTkFCTEVfRkFTVF9KSVRfUEVSTUlTU0lPTlMp
ICQoRU5BQkxFX0ZJTFRFUlNfTEVWRUxfMikgJChFTkFCTEVfRlRMX0pJVCkgJChFTkFCTEVfRlVM
TFNDUkVFTl9BUEkpICQoRU5BQkxFX0dBTUVQQUQpICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVO
QUJMRV9JQ09OREFUQUJBU0UpICQoRU5BQkxFX0lOREVYRURfREFUQUJBU0VfSU5fV09SS0VSUykg
JChFTkFCTEVfSU5ERVhFRF9EQVRBQkFTRSkgJChFTkFCTEVfSU5QVVRfVFlQRV9DT0xPUl9QT1BP
VkVSKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0NPTE9SKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEUp
ICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURVRJTUVfSU5DT01QTEVURSkgJChFTkFCTEVfSU5QVVRf
VFlQRV9EQVRFVElNRUxPQ0FMKSAkKEVOQUJMRV9JTlBVVF9UWVBFX01PTlRIKSAkKEVOQUJMRV9J
TlBVVF9UWVBFX1RJTUUpICQoRU5BQkxFX0lOUFVUX1RZUEVfV0VFSykgJChFTkFCTEVfSU5URVJT
RUNUSU9OX09CU0VSVkVSKSAkKEVOQUJMRV9JTlRMKSAkKEVOQUJMRV9JT1NfR0VTVFVSRV9FVkVO
VFMpICQoRU5BQkxFX0lPU19UT1VDSF9FVkVOVFMpICQoRU5BQkxFX0pJVCkgJChFTkFCTEVfS0VZ
Qk9BUkRfS0VZX0FUVFJJQlVURSkgJChFTkFCTEVfS0VZQk9BUkRfQ09ERV9BVFRSSUJVVEUpICQo
RU5BQkxFX0xFR0FDWV9DU1NfVkVORE9SX1BSRUZJWEVTKSAkKEVOQUJMRV9MRUdBQ1lfRU5DUllQ
VEVEX01FRElBKSAkKEVOQUJMRV9MRUdBQ1lfVkVORE9SX1BSRUZJWEVTKSAkKEVOQUJMRV9MRVRU
RVJQUkVTUykgJChFTkFCTEVfTElOS19QUkVGRVRDSCkgJChFTkFCTEVfTUFDX0dFU1RVUkVfRVZF
TlRTKSAkKEVOQUJMRV9NQVRITUwpICQoRU5BQkxFX01FRElBX0NBUFRVUkUpICQoRU5BQkxFX01F
RElBX0NPTlRST0xTX1NDUklQVCkgJChFTkFCTEVfTUVESUFfU0VTU0lPTikgJChFTkFCTEVfTUVE
SUFfU09VUkNFKSAkKEVOQUJMRV9NRURJQV9TVEFUSVNUSUNTKSAkKEVOQUJMRV9NRURJQV9TVFJF
QU0pICQoRU5BQkxFX01FVEVSX0VMRU1FTlQpICQoRU5BQkxFX01IVE1MKSAkKEVOQUJMRV9NT1VT
RV9DVVJTT1JfU0NBTEUpICQoRU5BQkxFX05BVklHQVRPUl9DT05URU5UX1VUSUxTKSAkKEVOQUJM
RV9OQVZJR0FUT1JfU1RBTkRBTE9ORSkgJChFTkFCTEVfTk9USUZJQ0FUSU9OUykgJChFTkFCTEVf
UEFZTUVOVF9SRVFVRVNUKSAkKEVOQUJMRV9QREZLSVRfUExVR0lOKSAkKEVOQUJMRV9QT0lOVEVS
X0xPQ0spICQoRU5BQkxFX1BVQkxJQ19TVUZGSVhfTElTVCkgJChFTkFCTEVfUVVPVEEpICQoRU5B
QkxFX1JFTU9URV9JTlNQRUNUT1IpICQoRU5BQkxFX1JFU09MVVRJT05fTUVESUFfUVVFUlkpICQo
RU5BQkxFX1JFU09VUkNFX1VTQUdFKSAkKEVOQUJMRV9SVUJCRVJfQkFORElORykgJChFTkFCTEVf
U0VSVklDRV9DT05UUk9MUykgJChFTkFCTEVfU0VSVklDRV9XT1JLRVIpICQoRU5BQkxFX1NQRUVD
SF9TWU5USEVTSVMpICQoRU5BQkxFX1NUUkVBTVNfQVBJKSAkKEVOQUJMRV9TVUJUTEVfQ1JZUFRP
KSAkKEVOQUJMRV9TVkdfRk9OVFMpICQoRU5BQkxFX1RFTEVQSE9ORV9OVU1CRVJfREVURUNUSU9O
KSAkKEVOQUJMRV9URVhUX0FVVE9TSVpJTkcpICQoRU5BQkxFX1RPVUNIX0VWRU5UUykgJChFTkFC
TEVfVE9VQ0hfSUNPTl9MT0FESU5HKSAkKEVOQUJMRV9VU0VSU0VMRUNUX0FMTCkgJChFTkFCTEVf
VkFSSUFUSU9OX0ZPTlRTKSAkKEVOQUJMRV9WSURFT19QUkVTRU5UQVRJT05fTU9ERSkgJChFTkFC
TEVfTUFDX1ZJREVPX1RPT0xCT1gpICQoRU5BQkxFX1ZJREVPX1RSQUNLKSAkKEVOQUJMRV9WSURF
TykgJChFTkFCTEVfV0VCX0FOSU1BVElPTlMpICQoRU5BQkxFX1dFQl9BVURJTykgJChFTkFCTEVf
V0VCX1JUQykgJChFTkFCTEVfV0VCQVNTRU1CTFkpICQoRU5BQkxFX1dFQkdMKSAkKEVOQUJMRV9X
RUJHTDIpICQoRU5BQkxFX1dFQkdQVSkgJChFTkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VU
KSAkKEVOQUJMRV9YU0xUKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMjI1NykKKysrIFNv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIyNCBAQAor
MjAxNy0wOS0xOSAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CisKKyAgICAgICAg
UmVtb3ZlIERPTSBhbmQgc3R5bGluZyBzdXBwb3J0IGZvciBDU1MgUmVnaW9ucworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc3MjIxCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCByZW1vdmVz
IGFsbCBDU1MgUmVnaW9ucyAoYWthICJuYW1lZCBmbG93IikgcmVsYXRlZCBjb2RlIGV4Y2x1ZGlu
ZyByZW5kZXJpbmcuCisKKyAgICAgICAgVGhlIGZlYXR1cmUgaXMgYWxyZWFkeSBkaXNhYmxlZCBz
byBubyBmdW5jdGlvbmFsIGNoYW5nZXMuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAg
ICAgICAgKiBDb25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZzoKKyAgICAgICAg
KiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0NTU1J1bGVDdXN0b20uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6dG9KU05ld2x5Q3JlYXRlZCk6CisgICAgICAgICogY3NzL0NTU0Nv
bXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb250ZW50VG9D
U1NWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpwcm9w
ZXJ0eVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRUb1JlZ2lvbkJyZWFrKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBjc3MvQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBCcmVha0JldHdlZW4gY29u
c3QpOgorICAgICAgICAqIGNzcy9DU1NQcm9wZXJ0aWVzLmpzb246CisgICAgICAgICogY3NzL0NT
U1J1bGUuY3BwOgorICAgICAgICAqIGNzcy9DU1NSdWxlLmg6CisgICAgICAgICogY3NzL0NTU1J1
bGUuaWRsOgorICAgICAgICAqIGNzcy9FbGVtZW50UnVsZUNvbGxlY3Rvci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpFbGVtZW50UnVsZUNvbGxlY3Rvcjo6bWF0Y2hBdXRob3JSdWxlcyk6CisgICAg
ICAgIChXZWJDb3JlOjpFbGVtZW50UnVsZUNvbGxlY3Rvcjo6bWF0Y2hVc2VyUnVsZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6RWxlbWVudFJ1bGVDb2xsZWN0b3I6OmNvbGxlY3RNYXRjaGluZ1J1bGVz
Rm9yUmVnaW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBjc3MvRWxlbWVudFJ1bGVDb2xsZWN0b3Iu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRSdWxlQ29sbGVjdG9yOjpzZXRTYW1lT3JpZ2lu
T25seSk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50UnVsZUNvbGxlY3Rvcjo6c2V0UmVnaW9u
Rm9yU3R5bGluZyk6IERlbGV0ZWQuCisgICAgICAgICogY3NzL0luc3BlY3RvckNTU09NV3JhcHBl
cnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTT01XcmFwcGVyczo6Y29sbGVj
dCk6CisgICAgICAgICogY3NzL1J1bGVTZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZGV0ZXJt
aW5lUHJvcGVydHlXaGl0ZWxpc3RUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bGVEYXRhOjpS
dWxlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpSdWxlU2V0OjphZGRDaGlsZFJ1bGVzKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJ1bGVTZXQ6OnNocmlua1RvRml0KToKKyAgICAgICAgKFdlYkNvcmU6
OlJ1bGVTZXQ6OmFkZFJlZ2lvblJ1bGUpOiBEZWxldGVkLgorICAgICAgICAqIGNzcy9SdWxlU2V0
Lmg6CisgICAgICAgIChXZWJDb3JlOjpSdWxlU2V0OjogY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6UnVsZVNldDo6cmVnaW9uU2VsZWN0b3JzQW5kUnVsZVNldHMgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAqIGNzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFJlZ2lvbkJyZWFrQmV0d2Vlbik6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRSZWdp
b25CcmVha0luc2lkZSk6IERlbGV0ZWQuCisgICAgICAgICogY3NzL1N0eWxlUHJvcGVydGllcy5j
cHA6CisgICAgICAgICogY3NzL1N0eWxlUmVzb2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGVSZXNvbHZlcjo6U3RhdGU6OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVz
b2x2ZXI6OlN0YXRlOjpTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpz
dHlsZUZvckVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6Q2FzY2Fk
ZWRQcm9wZXJ0aWVzOjphZGRNYXRjaCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVy
OjpjaGVja1JlZ2lvblN0eWxlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmlzVmFsaWRS
ZWdpb25TdHlsZVByb3BlcnR5KTogRGVsZXRlZC4KKyAgICAgICAgKiBjc3MvU3R5bGVSZXNvbHZl
ci5oOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6U3RhdGU6OnJlZ2lvbkZvclN0
eWxpbmcgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Y2hlY2tSZWdpb25TZWxl
Y3Rvcik6IERlbGV0ZWQuCisgICAgICAgICogY3NzL1N0eWxlUnVsZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZVJ1bGVCYXNlOjpkZXN0cm95KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
UnVsZUJhc2U6OmNvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSdWxlQmFzZTo6
Y3JlYXRlQ1NTT01XcmFwcGVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUnVsZVJl
Z2lvbjo6U3R5bGVSdWxlUmVnaW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBjc3MvU3R5bGVSdWxl
Lmg6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJ1bGVCYXNlOjppc1N0eWxlUnVsZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJ1bGVCYXNlOjppc1JlZ2lvblJ1bGUgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAqIGNzcy9TdHlsZVNoZWV0Q29udGVudHMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6dHJhdmVyc2VTdWJyZXNvdXJjZXNJblJ1bGVzKToKKyAgICAgICAgKiBjc3MvV2Vi
S2l0Q1NTUmVnaW9uUnVsZS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogY3NzL1dlYktpdENTU1Jl
Z2lvblJ1bGUuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBjc3MvV2ViS2l0Q1NTUmVnaW9uUnVsZS5p
ZGw6IFJlbW92ZWQuCisgICAgICAgICogY3NzL3BhcnNlci9DU1NBdFJ1bGVJRC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpjc3NBdFJ1bGVJRCk6CisgICAgICAgICogY3NzL3BhcnNlci9DU1NBdFJ1
bGVJRC5oOgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUGFyc2VyRmFzdFBhdGhzLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlckZhc3RQYXRoczo6aXNWYWxpZEtleXdvcmRQcm9wZXJ0
eUFuZFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlckZhc3RQYXRoczo6aXNLZXl3
b3JkUHJvcGVydHlJRCk6CisgICAgICAgICogY3NzL3BhcnNlci9DU1NQYXJzZXJJbXBsLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlckltcGw6OmNvbnN1bWVBdFJ1bGUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTUGFyc2VySW1wbDo6Y29uc3VtZVJlZ2lvblJ1bGUpOiBEZWxldGVkLgor
ICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUGFyc2VySW1wbC5oOgorICAgICAgICAqIGNzcy9wYXJz
ZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNMZWdhY3lCcmVh
a1Byb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VyOjpwYXJzZVNp
bmdsZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6Om1hcEZyb21MZWdhY3lCcmVha1Byb3BlcnR5
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VyOjpjb25zdW1lTGVnYWN5QnJl
YWtQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpjb25zdW1lRmxvd1Byb3BlcnR5KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Om1hcEZyb21SZWdpb25CcmVha0JldHdlZW4pOiBEZWxl
dGVkLgorICAgICAgICAqIGRvbS9Db250YWluZXJOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmRlc3Ryb3lSZW5kZXJUcmVlSWZOZWVkZWQpOgorICAgICAgICAqIGRvbS9ET01OYW1lZEZsb3dD
b2xsZWN0aW9uLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBkb20vRE9NTmFtZWRGbG93Q29sbGVj
dGlvbi5oOiBSZW1vdmVkLgorICAgICAgICAqIGRvbS9ET01OYW1lZEZsb3dDb2xsZWN0aW9uLmlk
bDogUmVtb3ZlZC4KKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnQ6OnVwZGF0ZUxheW91dElmRGltZW5zaW9uc091dE9mRGF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudDo6d2Via2l0R2V0TmFtZWRGbG93cyk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudDo6bmFtZWRGbG93cyk6IERlbGV0ZWQuCisgICAgICAgICog
ZG9tL0RvY3VtZW50Lmg6CisgICAgICAgICogZG9tL0RvY3VtZW50LmlkbDoKKyAgICAgICAgKiBk
b20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojp+RWxlbWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpjbGVhclN0eWxlRGVyaXZlZERhdGFCZWZvcmVEZXRh
Y2hpbmdSZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojp1bnJlZ2lzdGVyTmFt
ZWRGbG93Q29udGVudEVsZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVu
dDo6c2V0SXNOYW1lZEZsb3dDb250ZW50RWxlbWVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpFbGVtZW50OjpjbGVhcklzTmFtZWRGbG93Q29udGVudEVsZW1lbnQpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6cmFyZURhdGFJc05hbWVkRmxvd0NvbnRlbnRFbGVt
ZW50IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNldFJlZ2lv
bk92ZXJzZXRTdGF0ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpyZWdp
b25PdmVyc2V0U3RhdGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVu
dDo6cmVuZGVyTmFtZWRGbG93RnJhZ21lbnQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6RWxlbWVudDo6c2hvdWxkTW92ZVRvRmxvd1RocmVhZCBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojp3ZWJraXRSZWdpb25PdmVyc2V0IGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OndlYmtpdEdldFJlZ2lvbkZsb3dSYW5n
ZXMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6CisgICAgICAgIChX
ZWJDb3JlOjpFbGVtZW50Ojppc05hbWVkRmxvd0NvbnRlbnRFbGVtZW50IGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKiBkb20vRWxlbWVudC5pZGw6CisgICAgICAgICogZG9tL0VsZW1lbnRSYXJl
RGF0YS5jcHA6CisgICAgICAgICogZG9tL0VsZW1lbnRSYXJlRGF0YS5oOgorICAgICAgICAoV2Vi
Q29yZTo6RWxlbWVudFJhcmVEYXRhOjpFbGVtZW50UmFyZURhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6RWxlbWVudFJhcmVEYXRhOjpyZWdpb25PdmVyc2V0U3RhdGUgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFJhcmVEYXRhOjpzZXRSZWdpb25PdmVyc2V0U3RhdGUp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFJhcmVEYXRhOjppc05hbWVkRmxv
d0NvbnRlbnRFbGVtZW50IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkVsZW1l
bnRSYXJlRGF0YTo6c2V0SXNOYW1lZEZsb3dDb250ZW50RWxlbWVudCk6IERlbGV0ZWQuCisgICAg
ICAgICogZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbjoKKyAgICAgICAgKiBkb20vTmFtZWRGbG93
Q29sbGVjdGlvbi5jcHA6IFJlbW92ZWQuCisgICAgICAgICogZG9tL05hbWVkRmxvd0NvbGxlY3Rp
b24uaDogUmVtb3ZlZC4KKyAgICAgICAgKiBkb20vUHNldWRvRWxlbWVudC5oOgorICAgICAgICAq
IGRvbS9XZWJLaXROYW1lZEZsb3cuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIGRvbS9XZWJLaXRO
YW1lZEZsb3cuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBkb20vV2ViS2l0TmFtZWRGbG93LmlkbDog
UmVtb3ZlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OnJlc2V0Tm9uUGVyc2lzdGVudERhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6Q2hhbmdlUmVnaW9uT3ZlcnNldFRhc2s6OkNoYW5nZVJlZ2lv
bk92ZXJzZXRUYXNrKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNoYW5nZVJlZ2lvbk92
ZXJzZXRUYXNrOjpzY2hlZHVsZUZvcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDaGFu
Z2VSZWdpb25PdmVyc2V0VGFzazo6dW5zY2hlZHVsZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpDaGFuZ2VSZWdpb25PdmVyc2V0VGFzazo6cmVzZXQpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6Q2hhbmdlUmVnaW9uT3ZlcnNldFRhc2s6OnRpbWVyRmlyZWQpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmRpZENyZWF0ZU5hbWVkRmxvdyk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6d2lsbFJlbW92
ZU5hbWVkRmxvdyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2Vu
dDo6ZGlkQ2hhbmdlUmVnaW9uT3ZlcnNldCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JDU1NBZ2VudDo6cmVnaW9uT3ZlcnNldENoYW5nZWQpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmRpZFJlZ2lzdGVyTmFtZWRGbG93Q29udGVu
dEVsZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6
OmRpZFVucmVnaXN0ZXJOYW1lZEZsb3dDb250ZW50RWxlbWVudCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0TmFtZWRGbG93Q29sbGVjdGlvbik6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6ZG9jdW1lbnROb2Rl
V2l0aFJlcXVlc3RlZEZsb3dzSWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yQ1NTQWdlbnQ6OmJ1aWxkQXJyYXlGb3JSZWdpb25zKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpidWlsZE9iamVjdEZvck5hbWVkRmxvdyk6IERlbGV0
ZWQuCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50Lmg6CisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENyZWF0ZU5hbWVkRmxvd0ltcGwpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUmVt
b3ZlTmFtZWRGbG93SW1wbCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmRpZENoYW5nZVJlZ2lvbk92ZXJzZXRJbXBsKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVnaXN0ZXJOYW1l
ZEZsb3dDb250ZW50RWxlbWVudEltcGwpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRVbnJlZ2lzdGVyTmFtZWRGbG93Q29udGVudEVsZW1l
bnRJbXBsKTogRGVsZXRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpidWlsZFJlbmRlcmVySGlnaGxpZ2h0KToKKyAgICAgICAg
KFdlYkNvcmU6OmJ1aWxkT2JqZWN0Rm9yRWxlbWVudERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6
YnVpbGRPYmplY3RGb3JSZWdpb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRP
YmplY3RGb3JGbG93UmVnaW9ucyk6IERlbGV0ZWQuCisgICAgICAgICogcGFnZS9FdmVudEhhbmRs
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aGFuZGxlV2hlZWxFdmVudEluQXBwcm9wcmlhdGVF
bmNsb3NpbmdCb3gpOgorICAgICAgICAqIHJlbmRlcmluZy9GbG93VGhyZWFkQ29udHJvbGxlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGbG93VGhyZWFkQ29udHJvbGxlcjo6ZW5zdXJlUmVuZGVy
Rmxvd1RocmVhZFdpdGhOYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvRmxvd1Ro
cmVhZENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVnaW9uT3ZlcnNldFN0YXRl
Lmg6IFJlbW92ZWQuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmFwcGx5QmVmb3JlQnJlYWspOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93OjphcHBseUFmdGVyQnJlYWspOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dGcmFnbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJOYW1lZEZsb3dGcmFnbWVudDo6Z2V0UmFuZ2VzIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlck5hbWVkRmxvd0ZyYWdtZW50OjpsYXlvdXRCbG9jayk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJOYW1lZEZsb3dGcmFnbWVudDo6Y2hlY2tSZWdpb25TdHlsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJOYW1lZEZsb3dGcmFnbWVudDo6Y29tcHV0ZVN0eWxlSW5S
ZWdpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTmFtZWRGbG93RnJhZ21lbnQ6
OnNldFJlZ2lvbk9iamVjdHNSZWdpb25TdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJO
YW1lZEZsb3dGcmFnbWVudDo6c2V0UmVnaW9uT3ZlcnNldFN0YXRlKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlck5hbWVkRmxvd0ZyYWdtZW50OjpyZWdpb25PdmVyc2V0U3RhdGUg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTmFtZWRGbG93RnJhZ21l
bnQ6OnVwZGF0ZU92ZXJzZXRTdGF0ZSk6IERlbGV0ZWQuCisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlck5hbWVkRmxvd0ZyYWdtZW50Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck5hbWVk
Rmxvd1RocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6
OlJlbmRlck5hbWVkRmxvd1RocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJOYW1lZEZs
b3dUaHJlYWQ6OmNsZWFyQ29udGVudEVsZW1lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ck5hbWVkRmxvd1RocmVhZDo6cmVnaXN0ZXJOYW1lZEZsb3dDb250ZW50RWxlbWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6OnVucmVnaXN0ZXJOYW1lZEZsb3dD
b250ZW50RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6
Omhhc0NvbnRlbnRFbGVtZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck5hbWVk
Rmxvd1RocmVhZDo6Zmxvd1RocmVhZE5hbWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyTmFtZWRGbG93VGhyZWFkOjpkaXNwYXRjaFJlZ2lvbk92ZXJzZXRDaGFuZ2VFdmVudElmTmVl
ZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck5hbWVkRmxvd1RocmVhZDo6cmVnaW9uT3Zl
cnNldENoYW5nZUV2ZW50VGltZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJOYW1l
ZEZsb3dUaHJlYWQ6OnNldE1hcmtGb3JEZXN0cnVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJOYW1lZEZsb3dUaHJlYWQ6OnJlc2V0TWFya0ZvckRlc3RydWN0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlck5hbWVkRmxvd1RocmVhZDo6aXNNYXJrZWRGb3JEZXN0cnVjdGlvbiBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpuZXh0Tm9kZUluc2lkZUNvbnRlbnRFbGVtZW50KToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93VGhyZWFkLmg6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJSZWdp
b246Omluc3RhbGxGbG93VGhyZWFkKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVy
U3R5bGVDb25zdGFudHMuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvV2lsbENoYW5nZURh
dGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2lsbENoYW5nZURhdGE6OnByb3BlcnR5Q3JlYXRl
c1N0YWNraW5nQ29udGV4dCk6CisgICAgICAgICogc3R5bGUvUmVuZGVyVHJlZVBvc2l0aW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRyZWVQb3NpdGlvbjo6cHJldmlvdXNTaWJsaW5n
UmVuZGVyZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVHJlZVBvc2l0aW9uOjpu
ZXh0U2libGluZ1JlbmRlcmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRyZWVQ
b3NpdGlvbjo6aW5zZXJ0aW9uUG9zaXRpb25Gb3JGbG93VGhyZWFkKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRyZWVQb3NpdGlvbjo6aXNSZW5kZXJlclJlcGFyZW50ZWQpOiBE
ZWxldGVkLgorICAgICAgICAqIHN0eWxlL1JlbmRlclRyZWVQb3NpdGlvbi5oOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyVHJlZVBvc2l0aW9uOjpSZW5kZXJUcmVlUG9zaXRpb24pOgorICAgICAg
ICAqIHN0eWxlL1JlbmRlclRyZWVVcGRhdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clRyZWVVcGRhdGVyOjp1cGRhdGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyVHJlZVVwZGF0ZXI6OmNyZWF0ZVJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclRyZWVVcGRhdGVyOjppbnZhbGlkYXRlV2hpdGVzcGFjZU9ubHlUZXh0U2libGluZ3NBZnRl
ckF0dGFjaElmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OnJlZ2lzdGVyRWxlbWVudEZvckZs
b3dUaHJlYWRJZk5lZWRlZCk6IERlbGV0ZWQuCisgICAgICAgICogc3R5bGUvUmVuZGVyVHJlZVVw
ZGF0ZXJHZW5lcmF0ZWRDb250ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUNvbnRl
bnRSZW5kZXJlcnMpOgorICAgICAgICAqIHN0eWxlL1N0eWxlQ2hhbmdlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlN0eWxlOjpkZXRlcm1pbmVDaGFuZ2UpOgorICAgICAgICAqIHN0eWxlL1N0eWxl
VHJlZVJlc29sdmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpUcmVlUmVzb2x2ZXI6
OnN0eWxlRm9yRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6YWZmZWN0c1JlbmRl
cmVkU3VidHJlZSk6CisgICAgICAgICogc3ZnL1NWR0VsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHRWxlbWVudDo6c2hvdWxkTW92ZVRvRmxvd1RocmVhZCBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgICogc3ZnL1NWR0VsZW1lbnQuaDoKKwogMjAxNy0wOS0xOSAgUnlvc3VrZSBOaXdh
ICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBPbiBNYWMsIGRhdGFUcmFuc2ZlciBjbGFp
bXMgdG8gY29udGFpbiBVUkwgbGlzdCB3aGVuIGRyb3BwaW5nIGZpbGVzCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DTWFr
ZUxpc3RzLnR4dAkocmV2aXNpb24gMjIyMjU3KQorKysgU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTQ4OCw3ICs0ODgsNiBAQCBzZXQoV2ViQ29yZV9OT05f
U1ZHX0lETF9GSUxFUwogICAgIGNzcy9TdHlsZVNoZWV0LmlkbAogICAgIGNzcy9TdHlsZVNoZWV0
TGlzdC5pZGwKICAgICBjc3MvV2ViS2l0Q1NTTWF0cml4LmlkbAotICAgIGNzcy9XZWJLaXRDU1NS
ZWdpb25SdWxlLmlkbAogICAgIGNzcy9XZWJLaXRDU1NWaWV3cG9ydFJ1bGUuaWRsCiAKICAgICBk
b20vQW5pbWF0aW9uRXZlbnQuaWRsCkBAIC01MDYsNyArNTA1LDYgQEAgc2V0KFdlYkNvcmVfTk9O
X1NWR19JRExfRklMRVMKICAgICBkb20vRE9NRXJyb3IuaWRsCiAgICAgZG9tL0RPTUV4Y2VwdGlv
bi5pZGwKICAgICBkb20vRE9NSW1wbGVtZW50YXRpb24uaWRsCi0gICAgZG9tL0RPTU5hbWVkRmxv
d0NvbGxlY3Rpb24uaWRsCiAgICAgZG9tL0RPTVBvaW50LmlkbAogICAgIGRvbS9ET01Qb2ludElu
aXQuaWRsCiAgICAgZG9tL0RPTVBvaW50UmVhZE9ubHkuaWRsCkBAIC01ODMsNyArNTgxLDYgQEAg
c2V0KFdlYkNvcmVfTk9OX1NWR19JRExfRklMRVMKICAgICBkb20vVUlFdmVudC5pZGwKICAgICBk
b20vVUlFdmVudEluaXQuaWRsCiAgICAgZG9tL1dlYktpdEFuaW1hdGlvbkV2ZW50LmlkbAotICAg
IGRvbS9XZWJLaXROYW1lZEZsb3cuaWRsCiAgICAgZG9tL1dlYktpdFRyYW5zaXRpb25FdmVudC5p
ZGwKICAgICBkb20vV2hlZWxFdmVudC5pZGwKICAgICBkb20vWE1MRG9jdW1lbnQuaWRsCkBAIC0x
NTYxLDcgKzE1NTgsNiBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgY3NzL1RyYW5zZm9ybUZ1
bmN0aW9ucy5jcHAKICAgICBjc3MvVmlld3BvcnRTdHlsZVJlc29sdmVyLmNwcAogICAgIGNzcy9X
ZWJLaXRDU1NNYXRyaXguY3BwCi0gICAgY3NzL1dlYktpdENTU1JlZ2lvblJ1bGUuY3BwCiAgICAg
Y3NzL1dlYktpdENTU1ZpZXdwb3J0UnVsZS5jcHAKIAogICAgIGNzcy9wYXJzZXIvQ1NTQXRSdWxl
SUQuY3BwCkBAIC0xNjE1LDcgKzE2MTEsNiBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgZG9t
L0RPTUVycm9yLmNwcAogICAgIGRvbS9ET01FeGNlcHRpb24uY3BwCiAgICAgZG9tL0RPTUltcGxl
bWVudGF0aW9uLmNwcAotICAgIGRvbS9ET01OYW1lZEZsb3dDb2xsZWN0aW9uLmNwcAogICAgIGRv
bS9ET01Qb2ludFJlYWRPbmx5LmNwcAogICAgIGRvbS9ET01RdWFkLmNwcAogICAgIGRvbS9ET01S
ZWN0TGlzdC5jcHAKQEAgLTE2NzcsNyArMTY3Miw2IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAg
ICBkb20vTXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbi5jcHAKICAgICBkb20vTXV0YXRpb25S
ZWNvcmQuY3BwCiAgICAgZG9tL05hbWVOb2RlTGlzdC5jcHAKLSAgICBkb20vTmFtZWRGbG93Q29s
bGVjdGlvbi5jcHAKICAgICBkb20vTmFtZWROb2RlTWFwLmNwcAogICAgIGRvbS9OYXRpdmVOb2Rl
RmlsdGVyLmNwcAogICAgIGRvbS9Ob2RlLmNwcApAQCAtMTc0MCw3ICsxNzM0LDYgQEAgc2V0KFdl
YkNvcmVfU09VUkNFUwogICAgIGRvbS9WaWV3cG9ydEFyZ3VtZW50cy5jcHAKICAgICBkb20vVmlz
aXRlZExpbmtTdGF0ZS5jcHAKICAgICBkb20vV2ViS2l0QW5pbWF0aW9uRXZlbnQuY3BwCi0gICAg
ZG9tL1dlYktpdE5hbWVkRmxvdy5jcHAKICAgICBkb20vV2ViS2l0VHJhbnNpdGlvbkV2ZW50LmNw
cAogICAgIGRvbS9XaGVlbEV2ZW50LmNwcAogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9EZXJpdmVk
U291cmNlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMu
Y3BwCShyZXZpc2lvbiAyMjIyNTcpCisrKyBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE1OSw3ICsxNTksNiBAQAogI2luY2x1ZGUgIkpTRE9NSW1w
bGVtZW50YXRpb24uY3BwIgogI2luY2x1ZGUgIkpTRE9NTWltZVR5cGUuY3BwIgogI2luY2x1ZGUg
IkpTRE9NTWltZVR5cGVBcnJheS5jcHAiCi0jaW5jbHVkZSAiSlNET01OYW1lZEZsb3dDb2xsZWN0
aW9uLmNwcCIKICNpbmNsdWRlICJKU0RPTVBhcnNlci5jcHAiCiAjaW5jbHVkZSAiSlNET01QbHVn
aW4uY3BwIgogI2luY2x1ZGUgIkpTRE9NUGx1Z2luQXJyYXkuY3BwIgpAQCAtNjE3LDcgKzYxNiw2
IEBACiAjaW5jbHVkZSAiSlNXYXZlU2hhcGVyTm9kZS5jcHAiCiAjaW5jbHVkZSAiSlNXZWJLaXRB
bmltYXRpb25FdmVudC5jcHAiCiAjaW5jbHVkZSAiSlNXZWJLaXRDU1NNYXRyaXguY3BwIgotI2lu
Y2x1ZGUgIkpTV2ViS2l0Q1NTUmVnaW9uUnVsZS5jcHAiCiAjaW5jbHVkZSAiSlNXZWJLaXRDU1NW
aWV3cG9ydFJ1bGUuY3BwIgogI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQogI2lu
Y2x1ZGUgIkpTV2ViS2l0TWVkaWFLZXlFcnJvci5jcHAiCkBAIC02MjYsNyArNjI0LDYgQEAKICNp
bmNsdWRlICJKU1dlYktpdE1lZGlhS2V5U2Vzc2lvbi5jcHAiCiAjaW5jbHVkZSAiSlNXZWJLaXRN
ZWRpYUtleXMuY3BwIgogI2VuZGlmCi0jaW5jbHVkZSAiSlNXZWJLaXROYW1lZEZsb3cuY3BwIgog
I2luY2x1ZGUgIkpTV2ViS2l0UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlFdmVudC5jcHAiCiAj
aW5jbHVkZSAiSlNXZWJLaXRQb2ludC5jcHAiCiAjaW5jbHVkZSAiSlNXZWJLaXRUcmFuc2l0aW9u
RXZlbnQuY3BwIgpJbmRleDogU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCShyZXZpc2lvbiAy
MjIyNTcpCisrKyBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCSh3b3JraW5nIGNv
cHkpCkBAIC00MDYsNyArNDA2LDYgQEAgSlNfQklORElOR19JRExTID0gXAogICAgICQoV2ViQ29y
ZSkvY3NzL1N0eWxlU2hlZXQuaWRsIFwKICAgICAkKFdlYkNvcmUpL2Nzcy9TdHlsZVNoZWV0TGlz
dC5pZGwgXAogICAgICQoV2ViQ29yZSkvY3NzL1dlYktpdENTU01hdHJpeC5pZGwgXAotICAgICQo
V2ViQ29yZSkvY3NzL1dlYktpdENTU1JlZ2lvblJ1bGUuaWRsIFwKICAgICAkKFdlYkNvcmUpL2Nz
cy9XZWJLaXRDU1NWaWV3cG9ydFJ1bGUuaWRsIFwKICAgICAkKFdlYkNvcmUpL2RvbS9BbmltYXRp
b25FdmVudC5pZGwgXAogICAgICQoV2ViQ29yZSkvZG9tL0F0dHIuaWRsIFwKQEAgLTQyMyw3ICs0
MjIsNiBAQCBKU19CSU5ESU5HX0lETFMgPSBcCiAgICAgJChXZWJDb3JlKS9kb20vRE9NRXJyb3Iu
aWRsIFwKICAgICAkKFdlYkNvcmUpL2RvbS9ET01FeGNlcHRpb24uaWRsIFwKICAgICAkKFdlYkNv
cmUpL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5pZGwgXAotICAgICQoV2ViQ29yZSkvZG9tL0RPTU5h
bWVkRmxvd0NvbGxlY3Rpb24uaWRsIFwKICAgICAkKFdlYkNvcmUpL2RvbS9ET01Qb2ludC5pZGwg
XAogICAgICQoV2ViQ29yZSkvZG9tL0RPTVBvaW50SW5pdC5pZGwgXAogICAgICQoV2ViQ29yZSkv
ZG9tL0RPTVBvaW50UmVhZE9ubHkuaWRsIFwKQEAgLTQ5Nyw3ICs0OTUsNiBAQCBKU19CSU5ESU5H
X0lETFMgPSBcCiAgICAgJChXZWJDb3JlKS9kb20vVUlFdmVudC5pZGwgXAogICAgICQoV2ViQ29y
ZSkvZG9tL1VJRXZlbnRJbml0LmlkbCBcCiAgICAgJChXZWJDb3JlKS9kb20vV2ViS2l0QW5pbWF0
aW9uRXZlbnQuaWRsIFwKLSAgICAkKFdlYkNvcmUpL2RvbS9XZWJLaXROYW1lZEZsb3cuaWRsIFwK
ICAgICAkKFdlYkNvcmUpL2RvbS9XZWJLaXRUcmFuc2l0aW9uRXZlbnQuaWRsIFwKICAgICAkKFdl
YkNvcmUpL2RvbS9XaGVlbEV2ZW50LmlkbCBcCiAgICAgJChXZWJDb3JlKS9kb20vWE1MRG9jdW1l
bnQuaWRsIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZp
bmVzLnhjY29uZmlnCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25z
L0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCShyZXZpc2lvbiAyMjIyNTcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwkod29ya2luZyBjb3B5
KQpAQCAtNzgsNyArNzgsNiBAQCBFTkFCTEVfQ1NTX0NPTVBPU0lUSU5HID0gRU5BQkxFX0NTU19D
T01QCiBFTkFCTEVfQ1NTX0RFVklDRV9BREFQVEFUSU9OID0gOwogRU5BQkxFX0NTU19JTUFHRV9P
UklFTlRBVElPTiA9IDsKIEVOQUJMRV9DU1NfSU1BR0VfUkVTT0xVVElPTiA9IDsKLUVOQUJMRV9D
U1NfUkVHSU9OUyA9IDsKIEVOQUJMRV9DU1NfU0VMRUNUT1JTX0xFVkVMNCA9IEVOQUJMRV9DU1Nf
U0VMRUNUT1JTX0xFVkVMNDsKIEVOQUJMRV9DU1MzX1RFWFQgPSA7CiBFTkFCTEVfQ1VSU09SX1ZJ
U0lCSUxJVFkgPSBFTkFCTEVfQ1VSU09SX1ZJU0lCSUxJVFk7CkBAIC0yNDMsNCArMjQyLDQgQEAg
RU5BQkxFX0RBVEFfSU5URVJBQ1RJT05faXBob25lc2ltdWxhdG9yIAogRU5BQkxFX0RBVEFfSU5U
RVJBQ1RJT05bc2RrPWlwaG9uZW9zMTAqXSA9IDsKIEVOQUJMRV9EQVRBX0lOVEVSQUNUSU9OW3Nk
az1pcGhvbmVzaW11bGF0b3IxMCpdID0gOwogCi1GRUFUVVJFX0RFRklORVMgPSAkKEVOQUJMRV8z
RF9UUkFOU0ZPUk1TKSAkKEVOQUJMRV9BQ0NFTEVSQVRFRF8yRF9DQU5WQVMpICQoRU5BQkxFX0FD
Q0VMRVJBVEVEX09WRVJGTE9XX1NDUk9MTElORykgJChFTkFCTEVfQVBQTEVfUEFZKSAkKEVOQUJM
RV9BUFBMRV9QQVlfU0VTU0lPTl9WMykgJChFTkFCTEVfQVRUQUNITUVOVF9FTEVNRU5UKSAkKEVO
QUJMRV9BVkZfQ0FQVElPTlMpICQoRU5BQkxFX0NBQ0hFX1BBUlRJVElPTklORykgJChFTkFCTEVf
Q0hBTk5FTF9NRVNTQUdJTkcpICQoRU5BQkxFX0NPTlRFTlRfRklMVEVSSU5HKSAkKEVOQUJMRV9D
U1NfQU5JTUFUSU9OU19MRVZFTF8yKSAkKEVOQUJMRV9DU1NfQk9YX0RFQ09SQVRJT05fQlJFQUsp
ICQoRU5BQkxFX0NTU19DT01QT1NJVElORykgJChFTkFCTEVfQ1NTX0RFVklDRV9BREFQVEFUSU9O
KSAkKEVOQUJMRV9DU1NfSU1BR0VfT1JJRU5UQVRJT04pICQoRU5BQkxFX0NTU19JTUFHRV9SRVNP
TFVUSU9OKSAkKEVOQUJMRV9DU1NfUkVHSU9OUykgJChFTkFCTEVfQ1NTX1NDUk9MTF9TTkFQKSAk
KEVOQUJMRV9DU1NfU0VMRUNUT1JTX0xFVkVMNCkgJChFTkFCTEVfQ1NTX1RSQUlMSU5HX1dPUkQp
ICQoRU5BQkxFX0NTUzNfVEVYVCkgJChFTkFCTEVfQ1VSU09SX1ZJU0lCSUxJVFkpICQoRU5BQkxF
X0NVU1RPTV9TQ0hFTUVfSEFORExFUikgJChFTkFCTEVfREFTSEJPQVJEX1NVUFBPUlQpICQoRU5B
QkxFX0RBVEFfSU5URVJBQ1RJT04pICQoRU5BQkxFX0RBVEFDVUVfVkFMVUUpICQoRU5BQkxFX0RB
VEFMSVNUX0VMRU1FTlQpICQoRU5BQkxFX0RFVklDRV9PUklFTlRBVElPTikgJChFTkFCTEVfRFJB
R19TVVBQT1JUKSAkKEVOQUJMRV9FTkNSWVBURURfTUVESUEpICQoRU5BQkxFX0ZBU1RfSklUX1BF
Uk1JU1NJT05TKSAkKEVOQUJMRV9GSUxURVJTX0xFVkVMXzIpICQoRU5BQkxFX0ZUTF9KSVQpICQo
RU5BQkxFX0ZVTExTQ1JFRU5fQVBJKSAkKEVOQUJMRV9HQU1FUEFEKSAkKEVOQUJMRV9HRU9MT0NB
VElPTikgJChFTkFCTEVfSUNPTkRBVEFCQVNFKSAkKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFX0lO
X1dPUktFUlMpICQoRU5BQkxFX0lOREVYRURfREFUQUJBU0UpICQoRU5BQkxFX0lOUFVUX1RZUEVf
Q09MT1JfUE9QT1ZFUikgJChFTkFCTEVfSU5QVVRfVFlQRV9DT0xPUikgJChFTkFCTEVfSU5QVVRf
VFlQRV9EQVRFKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1FX0lOQ09NUExFVEUpICQoRU5B
QkxFX0lOUFVUX1RZUEVfREFURVRJTUVMT0NBTCkgJChFTkFCTEVfSU5QVVRfVFlQRV9NT05USCkg
JChFTkFCTEVfSU5QVVRfVFlQRV9USU1FKSAkKEVOQUJMRV9JTlBVVF9UWVBFX1dFRUspICQoRU5B
QkxFX0lOVEVSU0VDVElPTl9PQlNFUlZFUikgJChFTkFCTEVfSU5UTCkgJChFTkFCTEVfSU9TX0dF
U1RVUkVfRVZFTlRTKSAkKEVOQUJMRV9JT1NfVE9VQ0hfRVZFTlRTKSAkKEVOQUJMRV9KSVQpICQo
RU5BQkxFX0tFWUJPQVJEX0tFWV9BVFRSSUJVVEUpICQoRU5BQkxFX0tFWUJPQVJEX0NPREVfQVRU
UklCVVRFKSAkKEVOQUJMRV9MRUdBQ1lfQ1NTX1ZFTkRPUl9QUkVGSVhFUykgJChFTkFCTEVfTEVH
QUNZX0VOQ1JZUFRFRF9NRURJQSkgJChFTkFCTEVfTEVHQUNZX1ZFTkRPUl9QUkVGSVhFUykgJChF
TkFCTEVfTEVUVEVSUFJFU1MpICQoRU5BQkxFX0xJTktfUFJFRkVUQ0gpICQoRU5BQkxFX01BQ19H
RVNUVVJFX0VWRU5UUykgJChFTkFCTEVfTUFUSE1MKSAkKEVOQUJMRV9NRURJQV9DQVBUVVJFKSAk
KEVOQUJMRV9NRURJQV9DT05UUk9MU19TQ1JJUFQpICQoRU5BQkxFX01FRElBX1NFU1NJT04pICQo
RU5BQkxFX01FRElBX1NPVVJDRSkgJChFTkFCTEVfTUVESUFfU1RBVElTVElDUykgJChFTkFCTEVf
TUVESUFfU1RSRUFNKSAkKEVOQUJMRV9NRVRFUl9FTEVNRU5UKSAkKEVOQUJMRV9NSFRNTCkgJChF
TkFCTEVfTU9VU0VfQ1VSU09SX1NDQUxFKSAkKEVOQUJMRV9OQVZJR0FUT1JfQ09OVEVOVF9VVElM
UykgJChFTkFCTEVfTkFWSUdBVE9SX1NUQU5EQUxPTkUpICQoRU5BQkxFX05PVElGSUNBVElPTlMp
ICQoRU5BQkxFX1BBWU1FTlRfUkVRVUVTVCkgJChFTkFCTEVfUERGS0lUX1BMVUdJTikgJChFTkFC
TEVfUE9JTlRFUl9MT0NLKSAkKEVOQUJMRV9QVUJMSUNfU1VGRklYX0xJU1QpICQoRU5BQkxFX1FV
T1RBKSAkKEVOQUJMRV9SRU1PVEVfSU5TUEVDVE9SKSAkKEVOQUJMRV9SRVNPTFVUSU9OX01FRElB
X1FVRVJZKSAkKEVOQUJMRV9SRVNPVVJDRV9VU0FHRSkgJChFTkFCTEVfUlVCQkVSX0JBTkRJTkcp
ICQoRU5BQkxFX1NFUlZJQ0VfQ09OVFJPTFMpICQoRU5BQkxFX1NFUlZJQ0VfV09SS0VSKSAkKEVO
QUJMRV9TUEVFQ0hfU1lOVEhFU0lTKSAkKEVOQUJMRV9TVFJFQU1TX0FQSSkgJChFTkFCTEVfU1VC
VExFX0NSWVBUTykgJChFTkFCTEVfU1ZHX0ZPTlRTKSAkKEVOQUJMRV9URUxFUEhPTkVfTlVNQkVS
X0RFVEVDVElPTikgJChFTkFCTEVfVEVYVF9BVVRPU0laSU5HKSAkKEVOQUJMRV9UT1VDSF9FVkVO
VFMpICQoRU5BQkxFX1RPVUNIX0lDT05fTE9BRElORykgJChFTkFCTEVfVVNFUlNFTEVDVF9BTEwp
ICQoRU5BQkxFX1ZBUklBVElPTl9GT05UUykgJChFTkFCTEVfVklERU9fUFJFU0VOVEFUSU9OX01P
REUpICQoRU5BQkxFX01BQ19WSURFT19UT09MQk9YKSAkKEVOQUJMRV9WSURFT19UUkFDSykgJChF
TkFCTEVfVklERU8pICQoRU5BQkxFX1dFQl9BTklNQVRJT05TKSAkKEVOQUJMRV9XRUJfQVVESU8p
ICQoRU5BQkxFX1dFQl9SVEMpICQoRU5BQkxFX1dFQkFTU0VNQkxZKSAkKEVOQUJMRV9XRUJHTCkg
JChFTkFCTEVfV0VCR0wyKSAkKEVOQUJMRV9XRUJHUFUpICQoRU5BQkxFX1dJUkVMRVNTX1BMQVlC
QUNLX1RBUkdFVCkgJChFTkFCTEVfWFNMVCk7CitGRUFUVVJFX0RFRklORVMgPSAkKEVOQUJMRV8z
RF9UUkFOU0ZPUk1TKSAkKEVOQUJMRV9BQ0NFTEVSQVRFRF8yRF9DQU5WQVMpICQoRU5BQkxFX0FD
Q0VMRVJBVEVEX09WRVJGTE9XX1NDUk9MTElORykgJChFTkFCTEVfQVBQTEVfUEFZKSAkKEVOQUJM
RV9BUFBMRV9QQVlfU0VTU0lPTl9WMykgJChFTkFCTEVfQVRUQUNITUVOVF9FTEVNRU5UKSAkKEVO
QUJMRV9BVkZfQ0FQVElPTlMpICQoRU5BQkxFX0NBQ0hFX1BBUlRJVElPTklORykgJChFTkFCTEVf
Q0hBTk5FTF9NRVNTQUdJTkcpICQoRU5BQkxFX0NPTlRFTlRfRklMVEVSSU5HKSAkKEVOQUJMRV9D
U1NfQU5JTUFUSU9OU19MRVZFTF8yKSAkKEVOQUJMRV9DU1NfQk9YX0RFQ09SQVRJT05fQlJFQUsp
ICQoRU5BQkxFX0NTU19DT01QT1NJVElORykgJChFTkFCTEVfQ1NTX0RFVklDRV9BREFQVEFUSU9O
KSAkKEVOQUJMRV9DU1NfSU1BR0VfT1JJRU5UQVRJT04pICQoRU5BQkxFX0NTU19JTUFHRV9SRVNP
TFVUSU9OKSAkKEVOQUJMRV9DU1NfU0NST0xMX1NOQVApICQoRU5BQkxFX0NTU19TRUxFQ1RPUlNf
TEVWRUw0KSAkKEVOQUJMRV9DU1NfVFJBSUxJTkdfV09SRCkgJChFTkFCTEVfQ1NTM19URVhUKSAk
KEVOQUJMRV9DVVJTT1JfVklTSUJJTElUWSkgJChFTkFCTEVfQ1VTVE9NX1NDSEVNRV9IQU5ETEVS
KSAkKEVOQUJMRV9EQVNIQk9BUkRfU1VQUE9SVCkgJChFTkFCTEVfREFUQV9JTlRFUkFDVElPTikg
JChFTkFCTEVfREFUQUNVRV9WQUxVRSkgJChFTkFCTEVfREFUQUxJU1RfRUxFTUVOVCkgJChFTkFC
TEVfREVWSUNFX09SSUVOVEFUSU9OKSAkKEVOQUJMRV9EUkFHX1NVUFBPUlQpICQoRU5BQkxFX0VO
Q1JZUFRFRF9NRURJQSkgJChFTkFCTEVfRkFTVF9KSVRfUEVSTUlTU0lPTlMpICQoRU5BQkxFX0ZJ
TFRFUlNfTEVWRUxfMikgJChFTkFCTEVfRlRMX0pJVCkgJChFTkFCTEVfRlVMTFNDUkVFTl9BUEkp
ICQoRU5BQkxFX0dBTUVQQUQpICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9JQ09OREFU
QUJBU0UpICQoRU5BQkxFX0lOREVYRURfREFUQUJBU0VfSU5fV09SS0VSUykgJChFTkFCTEVfSU5E
RVhFRF9EQVRBQkFTRSkgJChFTkFCTEVfSU5QVVRfVFlQRV9DT0xPUl9QT1BPVkVSKSAkKEVOQUJM
RV9JTlBVVF9UWVBFX0NPTE9SKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEUpICQoRU5BQkxFX0lO
UFVUX1RZUEVfREFURVRJTUVfSU5DT01QTEVURSkgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFVElN
RUxPQ0FMKSAkKEVOQUJMRV9JTlBVVF9UWVBFX01PTlRIKSAkKEVOQUJMRV9JTlBVVF9UWVBFX1RJ
TUUpICQoRU5BQkxFX0lOUFVUX1RZUEVfV0VFSykgJChFTkFCTEVfSU5URVJTRUNUSU9OX09CU0VS
VkVSKSAkKEVOQUJMRV9JTlRMKSAkKEVOQUJMRV9JT1NfR0VTVFVSRV9FVkVOVFMpICQoRU5BQkxF
X0lPU19UT1VDSF9FVkVOVFMpICQoRU5BQkxFX0pJVCkgJChFTkFCTEVfS0VZQk9BUkRfS0VZX0FU
VFJJQlVURSkgJChFTkFCTEVfS0VZQk9BUkRfQ09ERV9BVFRSSUJVVEUpICQoRU5BQkxFX0xFR0FD
WV9DU1NfVkVORE9SX1BSRUZJWEVTKSAkKEVOQUJMRV9MRUdBQ1lfRU5DUllQVEVEX01FRElBKSAk
KEVOQUJMRV9MRUdBQ1lfVkVORE9SX1BSRUZJWEVTKSAkKEVOQUJMRV9MRVRURVJQUkVTUykgJChF
TkFCTEVfTElOS19QUkVGRVRDSCkgJChFTkFCTEVfTUFDX0dFU1RVUkVfRVZFTlRTKSAkKEVOQUJM
RV9NQVRITUwpICQoRU5BQkxFX01FRElBX0NBUFRVUkUpICQoRU5BQkxFX01FRElBX0NPTlRST0xT
X1NDUklQVCkgJChFTkFCTEVfTUVESUFfU0VTU0lPTikgJChFTkFCTEVfTUVESUFfU09VUkNFKSAk
KEVOQUJMRV9NRURJQV9TVEFUSVNUSUNTKSAkKEVOQUJMRV9NRURJQV9TVFJFQU0pICQoRU5BQkxF
X01FVEVSX0VMRU1FTlQpICQoRU5BQkxFX01IVE1MKSAkKEVOQUJMRV9NT1VTRV9DVVJTT1JfU0NB
TEUpICQoRU5BQkxFX05BVklHQVRPUl9DT05URU5UX1VUSUxTKSAkKEVOQUJMRV9OQVZJR0FUT1Jf
U1RBTkRBTE9ORSkgJChFTkFCTEVfTk9USUZJQ0FUSU9OUykgJChFTkFCTEVfUEFZTUVOVF9SRVFV
RVNUKSAkKEVOQUJMRV9QREZLSVRfUExVR0lOKSAkKEVOQUJMRV9QT0lOVEVSX0xPQ0spICQoRU5B
QkxFX1BVQkxJQ19TVUZGSVhfTElTVCkgJChFTkFCTEVfUVVPVEEpICQoRU5BQkxFX1JFTU9URV9J
TlNQRUNUT1IpICQoRU5BQkxFX1JFU09MVVRJT05fTUVESUFfUVVFUlkpICQoRU5BQkxFX1JFU09V
UkNFX1VTQUdFKSAkKEVOQUJMRV9SVUJCRVJfQkFORElORykgJChFTkFCTEVfU0VSVklDRV9DT05U
Uk9MUykgJChFTkFCTEVfU0VSVklDRV9XT1JLRVIpICQoRU5BQkxFX1NQRUVDSF9TWU5USEVTSVMp
ICQoRU5BQkxFX1NUUkVBTVNfQVBJKSAkKEVOQUJMRV9TVUJUTEVfQ1JZUFRPKSAkKEVOQUJMRV9T
VkdfRk9OVFMpICQoRU5BQkxFX1RFTEVQSE9ORV9OVU1CRVJfREVURUNUSU9OKSAkKEVOQUJMRV9U
RVhUX0FVVE9TSVpJTkcpICQoRU5BQkxFX1RPVUNIX0VWRU5UUykgJChFTkFCTEVfVE9VQ0hfSUNP
Tl9MT0FESU5HKSAkKEVOQUJMRV9VU0VSU0VMRUNUX0FMTCkgJChFTkFCTEVfVkFSSUFUSU9OX0ZP
TlRTKSAkKEVOQUJMRV9WSURFT19QUkVTRU5UQVRJT05fTU9ERSkgJChFTkFCTEVfTUFDX1ZJREVP
X1RPT0xCT1gpICQoRU5BQkxFX1ZJREVPX1RSQUNLKSAkKEVOQUJMRV9WSURFTykgJChFTkFCTEVf
V0VCX0FOSU1BVElPTlMpICQoRU5BQkxFX1dFQl9BVURJTykgJChFTkFCTEVfV0VCX1JUQykgJChF
TkFCTEVfV0VCQVNTRU1CTFkpICQoRU5BQkxFX1dFQkdMKSAkKEVOQUJMRV9XRUJHTDIpICQoRU5B
QkxFX1dFQkdQVSkgJChFTkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAkKEVOQUJMRV9Y
U0xUKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwkocmV2aXNpb24gMjIyMjU3KQorKysgU291cmNl
L1dlYkNvcmUvUEFML0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisy
MDE3LTA5LTE5ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBS
ZW1vdmUgRE9NIGFuZCBzdHlsaW5nIHN1cHBvcnQgZm9yIENTUyBSZWdpb25zCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzcyMjEKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENvbmZpZ3VyYXRpb25zL0Zl
YXR1cmVEZWZpbmVzLnhjY29uZmlnOgorCiAyMDE3LTA5LTE4ICBBbmR5IEVzdGVzICA8YWVzdGVz
QGFwcGxlLmNvbT4KIAogICAgICAgICBbTWFjXSBVcHN0cmVhbSBtaXNjZWxsYW5lb3VzIFdlYktp
dFN5c3RlbUludGVyZmFjZSBmdW5jdGlvbnMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BBTC9Db25m
aWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9QQUwvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcJKHJldmlz
aW9uIDIyMjI1NykKKysrIFNvdXJjZS9XZWJDb3JlL1BBTC9Db25maWd1cmF0aW9ucy9GZWF0dXJl
RGVmaW5lcy54Y2NvbmZpZwkod29ya2luZyBjb3B5KQpAQCAtNzgsNyArNzgsNiBAQCBFTkFCTEVf
Q1NTX0NPTVBPU0lUSU5HID0gRU5BQkxFX0NTU19DT01QCiBFTkFCTEVfQ1NTX0RFVklDRV9BREFQ
VEFUSU9OID0gOwogRU5BQkxFX0NTU19JTUFHRV9PUklFTlRBVElPTiA9IDsKIEVOQUJMRV9DU1Nf
SU1BR0VfUkVTT0xVVElPTiA9IDsKLUVOQUJMRV9DU1NfUkVHSU9OUyA9IDsKIEVOQUJMRV9DU1Nf
U0VMRUNUT1JTX0xFVkVMNCA9IEVOQUJMRV9DU1NfU0VMRUNUT1JTX0xFVkVMNDsKIEVOQUJMRV9D
U1MzX1RFWFQgPSA7CiBFTkFCTEVfQ1VSU09SX1ZJU0lCSUxJVFkgPSBFTkFCTEVfQ1VSU09SX1ZJ
U0lCSUxJVFk7CkBAIC0yNDMsNCArMjQyLDQgQEAgRU5BQkxFX0RBVEFfSU5URVJBQ1RJT05faXBo
b25lc2ltdWxhdG9yIAogRU5BQkxFX0RBVEFfSU5URVJBQ1RJT05bc2RrPWlwaG9uZW9zMTAqXSA9
IDsKIEVOQUJMRV9EQVRBX0lOVEVSQUNUSU9OW3Nkaz1pcGhvbmVzaW11bGF0b3IxMCpdID0gOwog
Ci1GRUFUVVJFX0RFRklORVMgPSAkKEVOQUJMRV8zRF9UUkFOU0ZPUk1TKSAkKEVOQUJMRV9BQ0NF
TEVSQVRFRF8yRF9DQU5WQVMpICQoRU5BQkxFX0FDQ0VMRVJBVEVEX09WRVJGTE9XX1NDUk9MTElO
RykgJChFTkFCTEVfQVBQTEVfUEFZKSAkKEVOQUJMRV9BUFBMRV9QQVlfU0VTU0lPTl9WMykgJChF
TkFCTEVfQVRUQUNITUVOVF9FTEVNRU5UKSAkKEVOQUJMRV9BVkZfQ0FQVElPTlMpICQoRU5BQkxF
X0NBQ0hFX1BBUlRJVElPTklORykgJChFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcpICQoRU5BQkxF
X0NPTlRFTlRfRklMVEVSSU5HKSAkKEVOQUJMRV9DU1NfQU5JTUFUSU9OU19MRVZFTF8yKSAkKEVO
QUJMRV9DU1NfQk9YX0RFQ09SQVRJT05fQlJFQUspICQoRU5BQkxFX0NTU19DT01QT1NJVElORykg
JChFTkFCTEVfQ1NTX0RFVklDRV9BREFQVEFUSU9OKSAkKEVOQUJMRV9DU1NfSU1BR0VfT1JJRU5U
QVRJT04pICQoRU5BQkxFX0NTU19JTUFHRV9SRVNPTFVUSU9OKSAkKEVOQUJMRV9DU1NfUkVHSU9O
UykgJChFTkFCTEVfQ1NTX1NDUk9MTF9TTkFQKSAkKEVOQUJMRV9DU1NfU0VMRUNUT1JTX0xFVkVM
NCkgJChFTkFCTEVfQ1NTX1RSQUlMSU5HX1dPUkQpICQoRU5BQkxFX0NTUzNfVEVYVCkgJChFTkFC
TEVfQ1VSU09SX1ZJU0lCSUxJVFkpICQoRU5BQkxFX0NVU1RPTV9TQ0hFTUVfSEFORExFUikgJChF
TkFCTEVfREFTSEJPQVJEX1NVUFBPUlQpICQoRU5BQkxFX0RBVEFfSU5URVJBQ1RJT04pICQoRU5B
QkxFX0RBVEFDVUVfVkFMVUUpICQoRU5BQkxFX0RBVEFMSVNUX0VMRU1FTlQpICQoRU5BQkxFX0RF
VklDRV9PUklFTlRBVElPTikgJChFTkFCTEVfRFJBR19TVVBQT1JUKSAkKEVOQUJMRV9FTkNSWVBU
RURfTUVESUEpICQoRU5BQkxFX0ZBU1RfSklUX1BFUk1JU1NJT05TKSAkKEVOQUJMRV9GSUxURVJT
X0xFVkVMXzIpICQoRU5BQkxFX0ZUTF9KSVQpICQoRU5BQkxFX0ZVTExTQ1JFRU5fQVBJKSAkKEVO
QUJMRV9HQU1FUEFEKSAkKEVOQUJMRV9HRU9MT0NBVElPTikgJChFTkFCTEVfSUNPTkRBVEFCQVNF
KSAkKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFX0lOX1dPUktFUlMpICQoRU5BQkxFX0lOREVYRURf
REFUQUJBU0UpICQoRU5BQkxFX0lOUFVUX1RZUEVfQ09MT1JfUE9QT1ZFUikgJChFTkFCTEVfSU5Q
VVRfVFlQRV9DT0xPUikgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFKSAkKEVOQUJMRV9JTlBVVF9U
WVBFX0RBVEVUSU1FX0lOQ09NUExFVEUpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURVRJTUVMT0NB
TCkgJChFTkFCTEVfSU5QVVRfVFlQRV9NT05USCkgJChFTkFCTEVfSU5QVVRfVFlQRV9USU1FKSAk
KEVOQUJMRV9JTlBVVF9UWVBFX1dFRUspICQoRU5BQkxFX0lOVEVSU0VDVElPTl9PQlNFUlZFUikg
JChFTkFCTEVfSU5UTCkgJChFTkFCTEVfSU9TX0dFU1RVUkVfRVZFTlRTKSAkKEVOQUJMRV9JT1Nf
VE9VQ0hfRVZFTlRTKSAkKEVOQUJMRV9KSVQpICQoRU5BQkxFX0tFWUJPQVJEX0tFWV9BVFRSSUJV
VEUpICQoRU5BQkxFX0tFWUJPQVJEX0NPREVfQVRUUklCVVRFKSAkKEVOQUJMRV9MRUdBQ1lfQ1NT
X1ZFTkRPUl9QUkVGSVhFUykgJChFTkFCTEVfTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkgJChFTkFC
TEVfTEVHQUNZX1ZFTkRPUl9QUkVGSVhFUykgJChFTkFCTEVfTEVUVEVSUFJFU1MpICQoRU5BQkxF
X0xJTktfUFJFRkVUQ0gpICQoRU5BQkxFX01BQ19HRVNUVVJFX0VWRU5UUykgJChFTkFCTEVfTUFU
SE1MKSAkKEVOQUJMRV9NRURJQV9DQVBUVVJFKSAkKEVOQUJMRV9NRURJQV9DT05UUk9MU19TQ1JJ
UFQpICQoRU5BQkxFX01FRElBX1NFU1NJT04pICQoRU5BQkxFX01FRElBX1NPVVJDRSkgJChFTkFC
TEVfTUVESUFfU1RBVElTVElDUykgJChFTkFCTEVfTUVESUFfU1RSRUFNKSAkKEVOQUJMRV9NRVRF
Ul9FTEVNRU5UKSAkKEVOQUJMRV9NSFRNTCkgJChFTkFCTEVfTU9VU0VfQ1VSU09SX1NDQUxFKSAk
KEVOQUJMRV9OQVZJR0FUT1JfQ09OVEVOVF9VVElMUykgJChFTkFCTEVfTkFWSUdBVE9SX1NUQU5E
QUxPTkUpICQoRU5BQkxFX05PVElGSUNBVElPTlMpICQoRU5BQkxFX1BBWU1FTlRfUkVRVUVTVCkg
JChFTkFCTEVfUERGS0lUX1BMVUdJTikgJChFTkFCTEVfUE9JTlRFUl9MT0NLKSAkKEVOQUJMRV9Q
VUJMSUNfU1VGRklYX0xJU1QpICQoRU5BQkxFX1FVT1RBKSAkKEVOQUJMRV9SRU1PVEVfSU5TUEVD
VE9SKSAkKEVOQUJMRV9SRVNPTFVUSU9OX01FRElBX1FVRVJZKSAkKEVOQUJMRV9SRVNPVVJDRV9V
U0FHRSkgJChFTkFCTEVfUlVCQkVSX0JBTkRJTkcpICQoRU5BQkxFX1NFUlZJQ0VfQ09OVFJPTFMp
ICQoRU5BQkxFX1NFUlZJQ0VfV09SS0VSKSAkKEVOQUJMRV9TUEVFQ0hfU1lOVEhFU0lTKSAkKEVO
QUJMRV9TVFJFQU1TX0FQSSkgJChFTkFCTEVfU1VCVExFX0NSWVBUTykgJChFTkFCTEVfU1ZHX0ZP
TlRTKSAkKEVOQUJMRV9URUxFUEhPTkVfTlVNQkVSX0RFVEVDVElPTikgJChFTkFCTEVfVEVYVF9B
VVRPU0laSU5HKSAkKEVOQUJMRV9UT1VDSF9FVkVOVFMpICQoRU5BQkxFX1RPVUNIX0lDT05fTE9B
RElORykgJChFTkFCTEVfVVNFUlNFTEVDVF9BTEwpICQoRU5BQkxFX1ZBUklBVElPTl9GT05UUykg
JChFTkFCTEVfVklERU9fUFJFU0VOVEFUSU9OX01PREUpICQoRU5BQkxFX01BQ19WSURFT19UT09M
Qk9YKSAkKEVOQUJMRV9WSURFT19UUkFDSykgJChFTkFCTEVfVklERU8pICQoRU5BQkxFX1dFQl9B
TklNQVRJT05TKSAkKEVOQUJMRV9XRUJfQVVESU8pICQoRU5BQkxFX1dFQl9SVEMpICQoRU5BQkxF
X1dFQkFTU0VNQkxZKSAkKEVOQUJMRV9XRUJHTCkgJChFTkFCTEVfV0VCR0wyKSAkKEVOQUJMRV9X
RUJHUFUpICQoRU5BQkxFX1dJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJChFTkFCTEVfWFNMVCk7
CitGRUFUVVJFX0RFRklORVMgPSAkKEVOQUJMRV8zRF9UUkFOU0ZPUk1TKSAkKEVOQUJMRV9BQ0NF
TEVSQVRFRF8yRF9DQU5WQVMpICQoRU5BQkxFX0FDQ0VMRVJBVEVEX09WRVJGTE9XX1NDUk9MTElO
RykgJChFTkFCTEVfQVBQTEVfUEFZKSAkKEVOQUJMRV9BUFBMRV9QQVlfU0VTU0lPTl9WMykgJChF
TkFCTEVfQVRUQUNITUVOVF9FTEVNRU5UKSAkKEVOQUJMRV9BVkZfQ0FQVElPTlMpICQoRU5BQkxF
X0NBQ0hFX1BBUlRJVElPTklORykgJChFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcpICQoRU5BQkxF
X0NPTlRFTlRfRklMVEVSSU5HKSAkKEVOQUJMRV9DU1NfQU5JTUFUSU9OU19MRVZFTF8yKSAkKEVO
QUJMRV9DU1NfQk9YX0RFQ09SQVRJT05fQlJFQUspICQoRU5BQkxFX0NTU19DT01QT1NJVElORykg
JChFTkFCTEVfQ1NTX0RFVklDRV9BREFQVEFUSU9OKSAkKEVOQUJMRV9DU1NfSU1BR0VfT1JJRU5U
QVRJT04pICQoRU5BQkxFX0NTU19JTUFHRV9SRVNPTFVUSU9OKSAkKEVOQUJMRV9DU1NfU0NST0xM
X1NOQVApICQoRU5BQkxFX0NTU19TRUxFQ1RPUlNfTEVWRUw0KSAkKEVOQUJMRV9DU1NfVFJBSUxJ
TkdfV09SRCkgJChFTkFCTEVfQ1NTM19URVhUKSAkKEVOQUJMRV9DVVJTT1JfVklTSUJJTElUWSkg
JChFTkFCTEVfQ1VTVE9NX1NDSEVNRV9IQU5ETEVSKSAkKEVOQUJMRV9EQVNIQk9BUkRfU1VQUE9S
VCkgJChFTkFCTEVfREFUQV9JTlRFUkFDVElPTikgJChFTkFCTEVfREFUQUNVRV9WQUxVRSkgJChF
TkFCTEVfREFUQUxJU1RfRUxFTUVOVCkgJChFTkFCTEVfREVWSUNFX09SSUVOVEFUSU9OKSAkKEVO
QUJMRV9EUkFHX1NVUFBPUlQpICQoRU5BQkxFX0VOQ1JZUFRFRF9NRURJQSkgJChFTkFCTEVfRkFT
VF9KSVRfUEVSTUlTU0lPTlMpICQoRU5BQkxFX0ZJTFRFUlNfTEVWRUxfMikgJChFTkFCTEVfRlRM
X0pJVCkgJChFTkFCTEVfRlVMTFNDUkVFTl9BUEkpICQoRU5BQkxFX0dBTUVQQUQpICQoRU5BQkxF
X0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9JQ09OREFUQUJBU0UpICQoRU5BQkxFX0lOREVYRURfREFU
QUJBU0VfSU5fV09SS0VSUykgJChFTkFCTEVfSU5ERVhFRF9EQVRBQkFTRSkgJChFTkFCTEVfSU5Q
VVRfVFlQRV9DT0xPUl9QT1BPVkVSKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0NPTE9SKSAkKEVOQUJM
RV9JTlBVVF9UWVBFX0RBVEUpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURVRJTUVfSU5DT01QTEVU
RSkgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFVElNRUxPQ0FMKSAkKEVOQUJMRV9JTlBVVF9UWVBF
X01PTlRIKSAkKEVOQUJMRV9JTlBVVF9UWVBFX1RJTUUpICQoRU5BQkxFX0lOUFVUX1RZUEVfV0VF
SykgJChFTkFCTEVfSU5URVJTRUNUSU9OX09CU0VSVkVSKSAkKEVOQUJMRV9JTlRMKSAkKEVOQUJM
RV9JT1NfR0VTVFVSRV9FVkVOVFMpICQoRU5BQkxFX0lPU19UT1VDSF9FVkVOVFMpICQoRU5BQkxF
X0pJVCkgJChFTkFCTEVfS0VZQk9BUkRfS0VZX0FUVFJJQlVURSkgJChFTkFCTEVfS0VZQk9BUkRf
Q09ERV9BVFRSSUJVVEUpICQoRU5BQkxFX0xFR0FDWV9DU1NfVkVORE9SX1BSRUZJWEVTKSAkKEVO
QUJMRV9MRUdBQ1lfRU5DUllQVEVEX01FRElBKSAkKEVOQUJMRV9MRUdBQ1lfVkVORE9SX1BSRUZJ
WEVTKSAkKEVOQUJMRV9MRVRURVJQUkVTUykgJChFTkFCTEVfTElOS19QUkVGRVRDSCkgJChFTkFC
TEVfTUFDX0dFU1RVUkVfRVZFTlRTKSAkKEVOQUJMRV9NQVRITUwpICQoRU5BQkxFX01FRElBX0NB
UFRVUkUpICQoRU5BQkxFX01FRElBX0NPTlRST0xTX1NDUklQVCkgJChFTkFCTEVfTUVESUFfU0VT
U0lPTikgJChFTkFCTEVfTUVESUFfU09VUkNFKSAkKEVOQUJMRV9NRURJQV9TVEFUSVNUSUNTKSAk
KEVOQUJMRV9NRURJQV9TVFJFQU0pICQoRU5BQkxFX01FVEVSX0VMRU1FTlQpICQoRU5BQkxFX01I
VE1MKSAkKEVOQUJMRV9NT1VTRV9DVVJTT1JfU0NBTEUpICQoRU5BQkxFX05BVklHQVRPUl9DT05U
RU5UX1VUSUxTKSAkKEVOQUJMRV9OQVZJR0FUT1JfU1RBTkRBTE9ORSkgJChFTkFCTEVfTk9USUZJ
Q0FUSU9OUykgJChFTkFCTEVfUEFZTUVOVF9SRVFVRVNUKSAkKEVOQUJMRV9QREZLSVRfUExVR0lO
KSAkKEVOQUJMRV9QT0lOVEVSX0xPQ0spICQoRU5BQkxFX1BVQkxJQ19TVUZGSVhfTElTVCkgJChF
TkFCTEVfUVVPVEEpICQoRU5BQkxFX1JFTU9URV9JTlNQRUNUT1IpICQoRU5BQkxFX1JFU09MVVRJ
T05fTUVESUFfUVVFUlkpICQoRU5BQkxFX1JFU09VUkNFX1VTQUdFKSAkKEVOQUJMRV9SVUJCRVJf
QkFORElORykgJChFTkFCTEVfU0VSVklDRV9DT05UUk9MUykgJChFTkFCTEVfU0VSVklDRV9XT1JL
RVIpICQoRU5BQkxFX1NQRUVDSF9TWU5USEVTSVMpICQoRU5BQkxFX1NUUkVBTVNfQVBJKSAkKEVO
QUJMRV9TVUJUTEVfQ1JZUFRPKSAkKEVOQUJMRV9TVkdfRk9OVFMpICQoRU5BQkxFX1RFTEVQSE9O
RV9OVU1CRVJfREVURUNUSU9OKSAkKEVOQUJMRV9URVhUX0FVVE9TSVpJTkcpICQoRU5BQkxFX1RP
VUNIX0VWRU5UUykgJChFTkFCTEVfVE9VQ0hfSUNPTl9MT0FESU5HKSAkKEVOQUJMRV9VU0VSU0VM
RUNUX0FMTCkgJChFTkFCTEVfVkFSSUFUSU9OX0ZPTlRTKSAkKEVOQUJMRV9WSURFT19QUkVTRU5U
QVRJT05fTU9ERSkgJChFTkFCTEVfTUFDX1ZJREVPX1RPT0xCT1gpICQoRU5BQkxFX1ZJREVPX1RS
QUNLKSAkKEVOQUJMRV9WSURFTykgJChFTkFCTEVfV0VCX0FOSU1BVElPTlMpICQoRU5BQkxFX1dF
Ql9BVURJTykgJChFTkFCTEVfV0VCX1JUQykgJChFTkFCTEVfV0VCQVNTRU1CTFkpICQoRU5BQkxF
X1dFQkdMKSAkKEVOQUJMRV9XRUJHTDIpICQoRU5BQkxFX1dFQkdQVSkgJChFTkFCTEVfV0lSRUxF
U1NfUExBWUJBQ0tfVEFSR0VUKSAkKEVOQUJMRV9YU0xUKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDIyMjI1
NykKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
d29ya2luZyBjb3B5KQpAQCAtMjUyOCwxMiArMjUyOCw2IEBACiAJCTUyQjBENEJFMUM1N0ZEMUUw
MDc3Q0U1MyAvKiBQbGF0Zm9ybVZpZXcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUyQjBENEJEMUM1N0ZEMUUwMDc3Q0U1MyAvKiBQbGF0Zm9ybVZpZXcu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MkIw
RDRDMDFDNTdGRDY2MDA3N0NFNTMgLyogVmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyQjBENEJGMUM1
N0ZENjYwMDc3Q0U1MyAvKiBWaWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUyQjBENEMyMUM1N0ZG
OTEwMDc3Q0U1MyAvKiBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyQjBENEMxMUM1N0ZGOTEwMDc3Q0U1
MyAvKiBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk1MkI2QzlDMjE1RTNGNERGMDA2OTBCMDUgLyog
RE9NTmFtZWRGbG93Q29sbGVjdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MkI2QzlCRDE1RTNGNERGMDA2OTBCMDUgLyogRE9NTmFtZWRGbG93
Q29sbGVjdGlvbi5jcHAgKi87IH07Ci0JCTUyQjZDOUMzMTVFM0Y0REYwMDY5MEIwNSAvKiBET01O
YW1lZEZsb3dDb2xsZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MkI2QzlCRTE1RTNGNERGMDA2OTBCMDUgLyogRE9NTmFtZWRGbG93Q29sbGVj
dGlvbi5oICovOyB9OwotCQk1MkI2QzlDNTE1RTNGNERGMDA2OTBCMDUgLyogTmFtZWRGbG93Q29s
bGVjdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MkI2QzlDMDE1RTNGNERGMDA2OTBCMDUgLyogTmFtZWRGbG93Q29sbGVjdGlvbi5jcHAgKi87
IH07Ci0JCTUyQjZDOUM2MTVFM0Y0REYwMDY5MEIwNSAvKiBOYW1lZEZsb3dDb2xsZWN0aW9uLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MkI2QzlDMTE1
RTNGNERGMDA2OTBCMDUgLyogTmFtZWRGbG93Q29sbGVjdGlvbi5oICovOyB9OwotCQk1MkNDQTlF
MjE1RTNGNjJDMDA1M0M3N0YgLyogSlNET01OYW1lZEZsb3dDb2xsZWN0aW9uLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyQ0NBOUUwMTVFM0Y2MkMw
MDUzQzc3RiAvKiBKU0RPTU5hbWVkRmxvd0NvbGxlY3Rpb24uY3BwICovOyB9OwotCQk1MkNDQTlF
MzE1RTNGNjJDMDA1M0M3N0YgLyogSlNET01OYW1lZEZsb3dDb2xsZWN0aW9uLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MkNDQTlFMTE1RTNGNjJDMDA1
M0M3N0YgLyogSlNET01OYW1lZEZsb3dDb2xsZWN0aW9uLmggKi87IH07CiAJCTUyRDVBMThGMUM1
NDU5MjMwMERFMzRBMyAvKiBWaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXIubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MkQ1QTE4RDFDNTQ1OTAzMDBE
RTM0QTMgLyogVmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyLm1tICovOyB9OwogCQk1MkQ1QTFB
NzFDNTc0ODlEMDBERTM0QTMgLyogVmlkZW9GdWxsc2NyZWVuTW9kZWwuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyRDVBMUE0MUM1NzQ4ODkwMERFMzRB
MyAvKiBWaWRlb0Z1bGxzY3JlZW5Nb2RlbC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTUyRDVBMUE4MUM1NzQ4QTMwMERFMzRBMyAvKiBWaWRlb0Z1
bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTJENUExQTUxQzU3NDg4OTAwREUzNEEzIC8qIFZpZGVvRnVsbHNj
cmVlbk1vZGVsVmlkZW9FbGVtZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKQEAgLTI5MzEsNyArMjkyNSw2IEBACiAJCTZDNEM5NkRGMUFENDQ4MzUw
MDM2NUE1MCAvKiBKU1JlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZDNEM5NkRCMUFENDQ4MzUwMDM2
NUE1MCAvKiBKU1JlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk2QzYzODg5NUE5NkNDRUU1MEM4
Qzk0NkMgLyogQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkM2Mzg4OTNBOTZDQ0VFNTBDOEM5NDZD
IC8qIENhY2hlZFJlc291cmNlUmVxdWVzdEluaXRpYXRvcnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk2QzYzODg5NkE5NkNDRUU1MEM4Qzk0NkMg
LyogQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycy5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QzYzODg5NEE5NkNDRUU1MEM4Qzk0NkMgLyog
Q2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycy5jcHAgKi87IH07Ci0JCTZDRERFOEQwMTc3
MEJCMjIwMDE2RTA3MiAvKiBSZWdpb25PdmVyc2V0U3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZDNzBBODE0MTc3MDdDNDkwMDlBNDQ2RSAvKiBS
ZWdpb25PdmVyc2V0U3RhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk2RTBFNTY5QjE4M0JGRkU2MDBFMEU4RDUgLyogRmxvYXRSb3VuZGVkUmVj
dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTBF
NTY5OTE4M0JGRkU2MDBFMEU4RDUgLyogRmxvYXRSb3VuZGVkUmVjdC5jcHAgKi87IH07CiAJCTZF
MEU1NjlDMTgzQkZGRTYwMEUwRThENSAvKiBGbG9hdFJvdW5kZWRSZWN0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTBFNTY5QTE4M0JGRkU2MDBFMEU4
RDUgLyogRmxvYXRSb3VuZGVkUmVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTZFMjFDNkMwMTEyNjMzODUwMEE3QkUwMiAvKiBHcmFwaGljc0Nv
bnRleHQzRC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA2RTIxQzZCRjExMjYzMzg1MDBBN0JFMDIgLyogR3JhcGhpY3NDb250ZXh0M0QuY3BwICovOyB9
OwpAQCAtMzc2MCwxMyArMzc1Myw5IEBACiAJCThBOUE1ODcxMTFFODRDMzYwMDhBQ0ZEMSAvKiBK
U1BlcmZvcm1hbmNlTmF2aWdhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOEE5QTU4NkYxMUU4NEMzNjAwOEFDRkQxIC8qIEpTUGVyZm9ybWFuY2VO
YXZpZ2F0aW9uLmggKi87IH07CiAJCThBOUE1ODc1MTFFODRDODEwMDhBQ0ZEMSAvKiBKU1BlcmZv
cm1hbmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
QTlBNTg3MzExRTg0QzgxMDA4QUNGRDEgLyogSlNQZXJmb3JtYW5jZS5oICovOyB9OwogCQk4QTlB
NTg4ODExRTg0RjM3MDA4QUNGRDEgLyogSlNQZXJmb3JtYW5jZVRpbWluZy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOEE5QTU4NzcxMUU4NEM5ODAwOEFD
RkQxIC8qIEpTUGVyZm9ybWFuY2VUaW1pbmcuaCAqLzsgfTsKLQkJOEFBNjFDRkYxNDRENTk1QjAw
RjM3MzUwIC8qIFdlYktpdENTU1JlZ2lvblJ1bGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOEFBNjFDRkQxNDRENTk1QjAwRjM3MzUwIC8qIFdlYktp
dENTU1JlZ2lvblJ1bGUuY3BwICovOyB9OwotCQk4QUE2MUQwMDE0NEQ1OTVCMDBGMzczNTAgLyog
V2ViS2l0Q1NTUmVnaW9uUnVsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOEFBNjFDRkUxNDRENTk1QjAwRjM3MzUwIC8qIFdlYktpdENTU1JlZ2lvblJ1
bGUuaCAqLzsgfTsKIAkJOEFCNEJDNzcxMjZGREI3MTAwREVCNzI3IC8qIElnbm9yZURlc3RydWN0
aXZlV3JpdGVDb3VudEluY3JlbWVudGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4QUI0QkM3NjEyNkZEQjcxMDBERUI3MjcgLyogSWdub3JlRGVzdHJ1
Y3RpdmVXcml0ZUNvdW50SW5jcmVtZW50ZXIuaCAqLzsgfTsKIAkJOEFDODIyRkMxODBGQzAzMzAw
RkI2NEQ1IC8qIFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDhBQzgyMkZBMTgwRkMwMzMwMEZCNjRENSAvKiBS
ZW5kZXJOYW1lZEZsb3dGcmFnbWVudC5jcHAgKi87IH07CiAJCThBQzgyMkZEMTgwRkMwMzMwMEZC
NjRENSAvKiBSZW5kZXJOYW1lZEZsb3dGcmFnbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOEFDODIyRkIxODBGQzAzMzAwRkI2NEQ1IC8qIFJlbmRl
ck5hbWVkRmxvd0ZyYWdtZW50LmggKi87IH07Ci0JCThBRDBBNTk0MTRDODgzMzYwMDBEODNDNSAv
KiBKU1dlYktpdENTU1JlZ2lvblJ1bGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOEFDQzI0Q0QxNDhFMjRCMjAwRUZDQzBEIC8qIEpTV2ViS2l0Q1NT
UmVnaW9uUnVsZS5jcHAgKi87IH07Ci0JCThBRDBBNTk1MTRDODgzMzYwMDBEODNDNSAvKiBKU1dl
YktpdENTU1JlZ2lvblJ1bGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDhBQ0MyNENFMTQ4RTI0QjIwMEVGQ0MwRCAvKiBKU1dlYktpdENTU1JlZ2lvblJ1
bGUuaCAqLzsgfTsKIAkJOEFGNEU1NTUxMURDNUEzNjAwMEVEM0RFIC8qIFBlcmZvcm1hbmNlTmF2
aWdhdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4QUY0RTU1MjExREM1QTM2MDAwRUQzREUgLyogUGVyZm9ybWFuY2VOYXZpZ2F0aW9uLmNwcCAq
LzsgfTsKIAkJOEFGNEU1NTYxMURDNUEzNjAwMEVEM0RFIC8qIFBlcmZvcm1hbmNlTmF2aWdhdGlv
bi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOEFGNEU1
NTMxMURDNUEzNjAwMEVEM0RFIC8qIFBlcmZvcm1hbmNlTmF2aWdhdGlvbi5oICovOyB9OwogCQk4
QUY0RTU1QzExREM1QTYzMDAwRUQzREUgLyogUGVyZm9ybWFuY2VUaW1pbmcuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDhBRjRFNTU5MTFEQzVBNjMwMDBF
RDNERSAvKiBQZXJmb3JtYW5jZVRpbWluZy5oICovOyB9OwpAQCAtNjYwMSw4ICs2NTkwLDYgQEAK
IAkJRDcwQUQ2NTgxM0UxMzQyQjAwNUI1MEI0IC8qIFJlbmRlclJlZ2lvbi5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRDcwQUQ2NTYxM0UxMzQyQjAwNUI1
MEI0IC8qIFJlbmRlclJlZ2lvbi5oICovOyB9OwogCQlENzJGNkQ3OTE1MzE1OUEzMDAxRUU0NEUg
LyogRmxvd1RocmVhZENvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRDcyRjZENzcxNTMxNTlBMzAwMUVFNDRFIC8qIEZsb3dUaHJlYWRD
b250cm9sbGVyLmNwcCAqLzsgfTsKIAkJRDcyRjZEN0ExNTMxNTlBMzAwMUVFNDRFIC8qIEZsb3dU
aHJlYWRDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBENzJGNkQ3ODE1MzE1OUEzMDAxRUU0NEUgLyogRmxvd1RocmVhZENvbnRyb2xsZXIu
aCAqLzsgfTsKLQkJRDc2MTNBNTAxNDc0RjEzRjAwREI4NjA2IC8qIFdlYktpdE5hbWVkRmxvdy5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBENzYxM0E0
RTE0NzRGMTNGMDBEQjg2MDYgLyogV2ViS2l0TmFtZWRGbG93LmNwcCAqLzsgfTsKLQkJRDc2MTNB
QzQxNDc1M0U1NjAwREI4NjA2IC8qIEpTV2ViS2l0TmFtZWRGbG93LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEQ3NjEzQUMyMTQ3NTNFNTYwMERCODYw
NiAvKiBKU1dlYktpdE5hbWVkRmxvdy5jcHAgKi87IH07CiAJCUQ4QjYxNTJGMTAzMjQ5NTEwMEM4
NTU0QSAvKiBDb29raWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEQ4QjYxNTJFMTAzMjQ5NTEwMEM4NTU0QSAvKiBDb29raWUuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlEQUVEMjAzMDE2RjI0NDJCMDA3
MEVDMEYgLyogUGFnZUNvbnNvbGVDbGllbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gREFBQ0IzRDkxNkYyNDE2NDAwNjY2MTM1IC8qIFBhZ2VDb25z
b2xlQ2xpZW50LmNwcCAqLzsgfTsKIAkJREFFRDIwMzExNkYyNDQ0ODAwNzBFQzBGIC8qIFBhZ2VD
b25zb2xlQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBEQUFDQjNEQTE2RjI0MTY0MDA2NjYxMzUgLyogUGFnZUNvbnNvbGVDbGllbnQuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTA0NTUsMTMg
KzEwNDQyLDYgQEAKIAkJNTJCMEQ0QkQxQzU3RkQxRTAwNzdDRTUzIC8qIFBsYXRmb3JtVmlldy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQbGF0Zm9ybVZpZXcuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTJCMEQ0QkYxQzU3RkQ2NjAwNzdDRTUzIC8qIFZpZGVv
RnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFZpZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTUyQjBENEMxMUM1N0ZGOTEwMDc3Q0U1MyAvKiBWaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2VNYWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmlkZW9GdWxsc2Ny
ZWVuSW50ZXJmYWNlTWFjLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUyQjZDOUJE
MTVFM0Y0REYwMDY5MEIwNSAvKiBET01OYW1lZEZsb3dDb2xsZWN0aW9uLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERPTU5hbWVkRmxvd0NvbGxlY3Rpb24uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MkI2QzlCRTE1RTNGNERGMDA2OTBCMDUgLyog
RE9NTmFtZWRGbG93Q29sbGVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBET01OYW1lZEZsb3dDb2xsZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTUyQjZDOUJGMTVFM0Y0REYwMDY5MEIwNSAvKiBET01OYW1lZEZsb3dDb2xsZWN0aW9uLmlkbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQ7IHBhdGggPSBET01OYW1lZEZsb3dDb2xsZWN0aW9uLmlkbDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTJCNkM5QzAxNUUzRjRERjAwNjkwQjA1IC8qIE5hbWVk
Rmxvd0NvbGxlY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
TmFtZWRGbG93Q29sbGVjdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUy
QjZDOUMxMTVFM0Y0REYwMDY5MEIwNSAvKiBOYW1lZEZsb3dDb2xsZWN0aW9uLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5hbWVkRmxvd0NvbGxlY3Rpb24uaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTJDQ0E5RTAxNUUzRjYyQzAwNTNDNzdGIC8qIEpTRE9NTmFt
ZWRGbG93Q29sbGVjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBKU0RPTU5hbWVkRmxvd0NvbGxlY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQk1MkNDQTlFMTE1RTNGNjJDMDA1M0M3N0YgLyogSlNET01OYW1lZEZsb3dDb2xsZWN0aW9u
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRE9NTmFtZWRGbG93Q29sbGVj
dGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MkQ1QTE4RDFDNTQ1OTAzMDBE
RTM0QTMgLyogVmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gVmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MkQ1QTE4RTFDNTQ1OTAzMDBERTM0QTMgLyog
VmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1MkQ1QTFBNDFDNTc0ODg5MDBERTM0QTMgLyogVmlkZW9GdWxsc2NyZWVuTW9k
ZWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmlkZW9GdWxsc2NyZWVuTW9k
ZWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEwOTI0LDcgKzEwOTA0LDYgQEAK
IAkJNkM0Qzk2REIxQUQ0NDgzNTAwMzY1QTUwIC8qIEpTUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29u
dHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1JlYWRhYmxlU3Ry
ZWFtRGVmYXVsdENvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkM2
Mzg4OTNBOTZDQ0VFNTBDOEM5NDZDIC8qIENhY2hlZFJlc291cmNlUmVxdWVzdEluaXRpYXRvcnMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhY2hlZFJlc291cmNlUmVxdWVz
dEluaXRpYXRvcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkM2Mzg4OTRBOTZD
Q0VFNTBDOEM5NDZDIC8qIENhY2hlZFJlc291cmNlUmVxdWVzdEluaXRpYXRvcnMuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENhY2hlZFJlc291cmNlUmVxdWVzdElu
aXRpYXRvcnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk2QzcwQTgxNDE3NzA3
QzQ5MDA5QTQ0NkUgLyogUmVnaW9uT3ZlcnNldFN0YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFJlZ2lvbk92ZXJzZXRTdGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk2RTBFNTY5OTE4M0JGRkU2MDBFMEU4RDUgLyogRmxvYXRSb3VuZGVkUmVjdC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGbG9hdFJvdW5kZWRSZWN0LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkUwRTU2OUExODNCRkZFNjAwRTBFOEQ1
IC8qIEZsb2F0Um91bmRlZFJlY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
RmxvYXRSb3VuZGVkUmVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2RTIxQzZC
RjExMjYzMzg1MDBBN0JFMDIgLyogR3JhcGhpY3NDb250ZXh0M0QuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0M0QuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMTIxMzMsMTQgKzEyMTEyLDkgQEAKIAkJOEE5QTU4NkYxMUU4
NEMzNjAwOEFDRkQxIC8qIEpTUGVyZm9ybWFuY2VOYXZpZ2F0aW9uLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEpTUGVyZm9ybWFuY2VOYXZpZ2F0aW9uLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCThBOUE1ODczMTFFODRDODEwMDhBQ0ZEMSAvKiBKU1BlcmZvcm1h
bmNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTUGVyZm9ybWFuY2UuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOEE5QTU4NzcxMUU4NEM5ODAwOEFDRkQxIC8q
IEpTUGVyZm9ybWFuY2VUaW1pbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SlNQZXJmb3JtYW5jZVRpbWluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4QUE2
MUNGRDE0NEQ1OTVCMDBGMzczNTAgLyogV2ViS2l0Q1NTUmVnaW9uUnVsZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJLaXRDU1NSZWdpb25SdWxlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJOEFBNjFDRkUxNDRENTk1QjAwRjM3MzUwIC8qIFdl
YktpdENTU1JlZ2lvblJ1bGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vi
S2l0Q1NTUmVnaW9uUnVsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4QUI0QkM3
NjEyNkZEQjcxMDBERUI3MjcgLyogSWdub3JlRGVzdHJ1Y3RpdmVXcml0ZUNvdW50SW5jcmVtZW50
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSWdub3JlRGVzdHJ1Y3RpdmVX
cml0ZUNvdW50SW5jcmVtZW50ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOEFD
ODIyRkExODBGQzAzMzAwRkI2NEQ1IC8qIFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOEFDODIyRkIxODBGQzAzMzAwRkI2
NEQ1IC8qIFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCThBQ0MyNENEMTQ4RTI0QjIwMEVGQ0MwRCAvKiBKU1dlYktpdENTU1JlZ2lvblJ1
bGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNXZWJLaXRDU1NS
ZWdpb25SdWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJOEFDQzI0Q0UxNDhF
MjRCMjAwRUZDQzBEIC8qIEpTV2ViS2l0Q1NTUmVnaW9uUnVsZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBKU1dlYktpdENTU1JlZ2lvblJ1bGUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJOEFEMEE1NTYxNEM4NzQyNTAwMEQ4M0M1IC8qIFdlYktpdENTU1JlZ2lv
blJ1bGUuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYktpdENTU1JlZ2lvblJ1bGUuaWRs
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4QUY0RTU1MjExREM1QTM2MDAwRUQzREUg
LyogUGVyZm9ybWFuY2VOYXZpZ2F0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFBlcmZvcm1hbmNlTmF2aWdhdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCThBRjRFNTUzMTFEQzVBMzYwMDBFRDNERSAvKiBQZXJmb3JtYW5jZU5hdmlnYXRp
b24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGVyZm9ybWFuY2VOYXZpZ2F0
aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCThBRjRFNTU0MTFEQzVBMzYwMDBF
RDNERSAvKiBQZXJmb3JtYW5jZU5hdmlnYXRpb24uaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9
IFBlcmZvcm1hbmNlTmF2aWdhdGlvbi5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC0xNTQwNSwxMSArMTUzNzksNiBAQAogCQlENzBBRDY1NjEzRTEzNDJCMDA1QjUwQjQgLyogUmVu
ZGVyUmVnaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlclJlZ2lv
bi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlENzJGNkQ3NzE1MzE1OUEzMDAxRUU0
NEUgLyogRmxvd1RocmVhZENvbnRyb2xsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gRmxvd1RocmVhZENvbnRyb2xsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlENzJGNkQ3ODE1MzE1OUEzMDAxRUU0NEUgLyogRmxvd1RocmVhZENvbnRyb2xs
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmxvd1RocmVhZENvbnRyb2xs
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDc2MTNBNEExNDc0RUU5NTAwREI4
NjA2IC8qIFdlYktpdE5hbWVkRmxvdy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViS2l0
TmFtZWRGbG93LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDc2MTNBNEQxNDc0
RjEzRjAwREI4NjA2IC8qIFdlYktpdE5hbWVkRmxvdy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXZWJLaXROYW1lZEZsb3cuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJRDc2MTNBNEUxNDc0RjEzRjAwREI4NjA2IC8qIFdlYktpdE5hbWVkRmxvdy5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJLaXROYW1lZEZsb3cuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlENzYxM0FDMjE0NzUzRTU2MDBEQjg2MDYgLyogSlNX
ZWJLaXROYW1lZEZsb3cuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SlNXZWJLaXROYW1lZEZsb3cuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlENzYx
M0FDMzE0NzUzRTU2MDBEQjg2MDYgLyogSlNXZWJLaXROYW1lZEZsb3cuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSlNXZWJLaXROYW1lZEZsb3cuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRDhCNjE1MkUxMDMyNDk1MTAwQzg1NTRBIC8qIENvb2tpZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb29raWUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJREFBQ0IzRDkxNkYyNDE2NDAwNjY2MTM1IC8qIFBhZ2VDb25zb2xlQ2xpZW50
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBhZ2VDb25zb2xlQ2xp
ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJREFBQ0IzREExNkYyNDE2NDAw
NjY2MTM1IC8qIFBhZ2VDb25zb2xlQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFBhZ2VDb25zb2xlQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC0yMjY1NCw4ICsyMjYyMyw2IEBACiAJCQkJQTg0RUJEODEwQ0I4Qzk3NzAwMDc5NjA5IC8qIEpT
U3R5bGVTaGVldExpc3QuaCAqLywKIAkJCQk0OTgzOTEzRDBGMUU3Njc1MDBDMjM3ODIgLyogSlNX
ZWJLaXRDU1NNYXRyaXguY3BwICovLAogCQkJCTQ5ODM5MTNFMEYxRTc2NzUwMEMyMzc4MiAvKiBK
U1dlYktpdENTU01hdHJpeC5oICovLAotCQkJCThBQ0MyNENEMTQ4RTI0QjIwMEVGQ0MwRCAvKiBK
U1dlYktpdENTU1JlZ2lvblJ1bGUuY3BwICovLAotCQkJCThBQ0MyNENFMTQ4RTI0QjIwMEVGQ0Mw
RCAvKiBKU1dlYktpdENTU1JlZ2lvblJ1bGUuaCAqLywKIAkJCQkzRjJCMzNFOTE2NUFGMTU1MDBF
Mzk4N0MgLyogSlNXZWJLaXRDU1NWaWV3cG9ydFJ1bGUuY3BwICovLAogCQkJCTNGMkIzM0VBMTY1
QUYxNTUwMEUzOTg3QyAvKiBKU1dlYktpdENTU1ZpZXdwb3J0UnVsZS5oICovLAogCQkJKTsKQEAg
LTIyNjk1LDggKzIyNjYyLDYgQEAKIAkJCQlCQzYwRDdCRjBEMjlBNDYzMDBCOTkxOEYgLyogSlNE
T01FeGNlcHRpb24uaCAqLywKIAkJCQk2NURGMzFFMzA5RDFDQzYwMDAwQkUzMjUgLyogSlNET01J
bXBsZW1lbnRhdGlvbi5jcHAgKi8sCiAJCQkJNjVERjMxRTQwOUQxQ0M2MDAwMEJFMzI1IC8qIEpT
RE9NSW1wbGVtZW50YXRpb24uaCAqLywKLQkJCQk1MkNDQTlFMDE1RTNGNjJDMDA1M0M3N0YgLyog
SlNET01OYW1lZEZsb3dDb2xsZWN0aW9uLmNwcCAqLywKLQkJCQk1MkNDQTlFMTE1RTNGNjJDMDA1
M0M3N0YgLyogSlNET01OYW1lZEZsb3dDb2xsZWN0aW9uLmggKi8sCiAJCQkJMEY0OTY2QTQxREI0
MEM0MzAwQTI3NEJCIC8qIEpTRE9NUG9pbnQuY3BwICovLAogCQkJCTBGNDk2NkE1MURCNDBDNDMw
MEEyNzRCQiAvKiBKU0RPTVBvaW50LmggKi8sCiAJCQkJMEY0OTY2QTYxREI0MEM0MzAwQTI3NEJC
IC8qIEpTRE9NUG9pbnRJbml0LmNwcCAqLywKQEAgLTIyNzQ3LDggKzIyNzEyLDYgQEAKIAkJCQk5
QjA5OEJFNzFGM0Q2QUY2MDAyREQ1NjIgLyogSlNTdHJpbmdDYWxsYmFjay5oICovLAogCQkJCTY1
REYzMUVGMDlEMUNDNjAwMDBCRTMyNSAvKiBKU1RleHQuY3BwICovLAogCQkJCTY1REYzMUYwMDlE
MUNDNjAwMDBCRTMyNSAvKiBKU1RleHQuaCAqLywKLQkJCQlENzYxM0FDMjE0NzUzRTU2MDBEQjg2
MDYgLyogSlNXZWJLaXROYW1lZEZsb3cuY3BwICovLAotCQkJCUQ3NjEzQUMzMTQ3NTNFNTYwMERC
ODYwNiAvKiBKU1dlYktpdE5hbWVkRmxvdy5oICovLAogCQkJCTgzRjU3MEFFMUM1MzI2OEUwMDdG
RDZDQiAvKiBKU1hNTERvY3VtZW50LmNwcCAqLywKIAkJCQk4M0Y1NzBBRDFDNTMyNjhFMDA3RkQ2
Q0IgLyogSlNYTUxEb2N1bWVudC5oICovLAogCQkJKTsKQEAgLTI1ODY3LDkgKzI1ODMwLDYgQEAK
IAkJCQk0OTgzOTE1NTBGMUU3NzY5MDBDMjM3ODIgLyogV2ViS2l0Q1NTTWF0cml4LmNwcCAqLywK
IAkJCQk0OTgzOTE1NjBGMUU3NzY5MDBDMjM3ODIgLyogV2ViS2l0Q1NTTWF0cml4LmggKi8sCiAJ
CQkJNDk4MzkxNTcwRjFFNzc2OTAwQzIzNzgyIC8qIFdlYktpdENTU01hdHJpeC5pZGwgKi8sCi0J
CQkJOEFBNjFDRkQxNDRENTk1QjAwRjM3MzUwIC8qIFdlYktpdENTU1JlZ2lvblJ1bGUuY3BwICov
LAotCQkJCThBQTYxQ0ZFMTQ0RDU5NUIwMEYzNzM1MCAvKiBXZWJLaXRDU1NSZWdpb25SdWxlLmgg
Ki8sCi0JCQkJOEFEMEE1NTYxNEM4NzQyNTAwMEQ4M0M1IC8qIFdlYktpdENTU1JlZ2lvblJ1bGUu
aWRsICovLAogCQkJCTNGRkZGOUE2MTU5RDlBNTUwMDIwQkJENSAvKiBXZWJLaXRDU1NWaWV3cG9y
dFJ1bGUuY3BwICovLAogCQkJCTNGRkZGOUE3MTU5RDlBNTUwMDIwQkJENSAvKiBXZWJLaXRDU1NW
aWV3cG9ydFJ1bGUuaCAqLywKIAkJCQkzRjJCMzNFMzE2NUFCRDM1MDBFMzk4N0MgLyogV2ViS2l0
Q1NTVmlld3BvcnRSdWxlLmlkbCAqLywKQEAgLTI1OTU0LDcgKzI1OTE0LDYgQEAKIAkJCQkwODg1
MDY3RTExREEwNDVCMDAxODJCOTggLyogUGFpbnRQaGFzZS5oICovLAogCQkJCUIyQjFGNzE0MEQw
MENBQTgwMDRBRUE2NCAvKiBQb2ludGVyRXZlbnRzSGl0UnVsZXMuY3BwICovLAogCQkJCUIyQjFG
NzE1MEQwMENBQTgwMDRBRUE2NCAvKiBQb2ludGVyRXZlbnRzSGl0UnVsZXMuaCAqLywKLQkJCQk2
QzcwQTgxNDE3NzA3QzQ5MDA5QTQ0NkUgLyogUmVnaW9uT3ZlcnNldFN0YXRlLmggKi8sCiAJCQkJ
QjU5RUQyM0ExODI3MjY3OTAwNkQ1NjRDIC8qIFJlbmRlckFuY2VzdG9ySXRlcmF0b3IuaCAqLywK
IAkJCQk3Q0Q0OTRDQTFBODZFQjFEMDAwQTg3RUMgLyogUmVuZGVyQXR0YWNobWVudC5jcHAgKi8s
CiAJCQkJN0NENDk0Q0IxQTg2RUIxRDAwMEE4N0VDIC8qIFJlbmRlckF0dGFjaG1lbnQuaCAqLywK
QEAgLTI2MzExLDkgKzI2MjcwLDYgQEAKIAkJCQlBODE4NUYzNjA5NzY1NzY1MDA1ODI2RDkgLyog
RE9NSW1wbGVtZW50YXRpb24uY3BwICovLAogCQkJCUE4MTg1RjMzMDk3NjU3NjUwMDU4MjZEOSAv
KiBET01JbXBsZW1lbnRhdGlvbi5oICovLAogCQkJCTkzRUVDMUU5MDlDMjg3NzcwMEM1MTVEMSAv
KiBET01JbXBsZW1lbnRhdGlvbi5pZGwgKi8sCi0JCQkJNTJCNkM5QkQxNUUzRjRERjAwNjkwQjA1
IC8qIERPTU5hbWVkRmxvd0NvbGxlY3Rpb24uY3BwICovLAotCQkJCTUyQjZDOUJFMTVFM0Y0REYw
MDY5MEIwNSAvKiBET01OYW1lZEZsb3dDb2xsZWN0aW9uLmggKi8sCi0JCQkJNTJCNkM5QkYxNUUz
RjRERjAwNjkwQjA1IC8qIERPTU5hbWVkRmxvd0NvbGxlY3Rpb24uaWRsICovLAogCQkJCTBGNDk2
Njk5MURCNDA4QzEwMEEyNzRCQiAvKiBET01Qb2ludC5oICovLAogCQkJCTBGNDk2NjlBMURCNDA4
QzEwMEEyNzRCQiAvKiBET01Qb2ludC5pZGwgKi8sCiAJCQkJMEY0OTY2QTIxREI0MDkxMDAwQTI3
NEJCIC8qIERPTVBvaW50SW5pdC5oICovLApAQCAtMjY0NjEsOCArMjY0MTcsNiBAQAogCQkJCUM2
RjA4RkI5MTQzMEZFOEYwMDY4NTg0OSAvKiBNdXRhdGlvblJlY29yZC5jcHAgKi8sCiAJCQkJQzZG
MDhGQkExNDMwRkU4RjAwNjg1ODQ5IC8qIE11dGF0aW9uUmVjb3JkLmggKi8sCiAJCQkJQzZGMDhG
QkIxNDMwRkU4RjAwNjg1ODQ5IC8qIE11dGF0aW9uUmVjb3JkLmlkbCAqLywKLQkJCQk1MkI2QzlD
MDE1RTNGNERGMDA2OTBCMDUgLyogTmFtZWRGbG93Q29sbGVjdGlvbi5jcHAgKi8sCi0JCQkJNTJC
NkM5QzExNUUzRjRERjAwNjkwQjA1IC8qIE5hbWVkRmxvd0NvbGxlY3Rpb24uaCAqLywKIAkJCQlC
Q0YzNEEzNjExQTIzMUNEMDBDNzE4MDQgLyogTmFtZWROb2RlTWFwLmNwcCAqLywKIAkJCQlBODE4
NzIxODA5NzdEM0MwMDA1ODI2RDkgLyogTmFtZWROb2RlTWFwLmggKi8sCiAJCQkJODVBQ0E5Rjkw
QTlCNjMxMDAwNjcxRTkwIC8qIE5hbWVkTm9kZU1hcC5pZGwgKi8sCkBAIC0yNjY0MSw5ICsyNjU5
NSw2IEBACiAJCQkJMzFDMEZGMUIwRTRDRUI2RTAwN0Q2RkU1IC8qIFdlYktpdEFuaW1hdGlvbkV2
ZW50LmNwcCAqLywKIAkJCQkzMUMwRkYxQzBFNENFQjZFMDA3RDZGRTUgLyogV2ViS2l0QW5pbWF0
aW9uRXZlbnQuaCAqLywKIAkJCQkzMUMwRkYxRDBFNENFQjZFMDA3RDZGRTUgLyogV2ViS2l0QW5p
bWF0aW9uRXZlbnQuaWRsICovLAotCQkJCUQ3NjEzQTRFMTQ3NEYxM0YwMERCODYwNiAvKiBXZWJL
aXROYW1lZEZsb3cuY3BwICovLAotCQkJCUQ3NjEzQTREMTQ3NEYxM0YwMERCODYwNiAvKiBXZWJL
aXROYW1lZEZsb3cuaCAqLywKLQkJCQlENzYxM0E0QTE0NzRFRTk1MDBEQjg2MDYgLyogV2ViS2l0
TmFtZWRGbG93LmlkbCAqLywKIAkJCQkzMUMwRkYxRTBFNENFQjZFMDA3RDZGRTUgLyogV2ViS2l0
VHJhbnNpdGlvbkV2ZW50LmNwcCAqLywKIAkJCQkzMUMwRkYxRjBFNENFQjZFMDA3RDZGRTUgLyog
V2ViS2l0VHJhbnNpdGlvbkV2ZW50LmggKi8sCiAJCQkJMzFDMEZGMjAwRTRDRUI2RTAwN0Q2RkU1
IC8qIFdlYktpdFRyYW5zaXRpb25FdmVudC5pZGwgKi8sCkBAIC0yNzc4MCw3ICsyNzczMSw2IEBA
CiAJCQkJODM2QUNFQzMxRUNBNjJDODAwNEJEMDEyIC8qIERPTU1hdHJpeFJlYWRPbmx5LmggaW4g
SGVhZGVycyAqLywKIAkJCQlBOUM2RTRFNDBENzQ1RTA1MDA2NDQyRTkgLyogRE9NTWltZVR5cGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCUE5QzZFNEU4MEQ3NDVFMTgwMDY0NDJFOSAvKiBET01NaW1l
VHlwZUFycmF5LmggaW4gSGVhZGVycyAqLywKLQkJCQk1MkI2QzlDMzE1RTNGNERGMDA2OTBCMDUg
LyogRE9NTmFtZWRGbG93Q29sbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFDRTUzRTgw
QThEMThFNzAwMjI5NDdEIC8qIERPTVBhcnNlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0E1NDg4
MTcxNEU0MzJBMTAwNkFFMDVBIC8qIERPTVBhdGNoU3VwcG9ydC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTlDNkU0RUMwRDc0NUUyQjAwNjQ0MkU5IC8qIERPTVBsdWdpbi5oIGluIEhlYWRlcnMgKi8s
CkBAIC0yODU2Niw3ICsyODUxNiw2IEBACiAJCQkJODM2QUNFRDYxRUNBQUIxOTAwNEJEMDEyIC8q
IEpTRE9NTWF0cml4UmVhZE9ubHkuaCBpbiBIZWFkZXJzICovLAogCQkJCUE5RDI0ODA3MEQ3NTdF
N0QwMEZERjk1OSAvKiBKU0RPTU1pbWVUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOUQyNDgw
OTBENzU3RTdEMDBGREY5NTkgLyogSlNET01NaW1lVHlwZUFycmF5LmggaW4gSGVhZGVycyAqLywK
LQkJCQk1MkNDQTlFMzE1RTNGNjJDMDA1M0M3N0YgLyogSlNET01OYW1lZEZsb3dDb2xsZWN0aW9u
LmggaW4gSGVhZGVycyAqLywKIAkJCQk3QzgxMzlBNzFFRDYyODc0MDBDRTI2RTggLyogSlNET01P
cGVyYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTdDODEzOUE4MUVENjI4NzQwMENFMjZFOCAv
KiBKU0RPTU9wZXJhdGlvblJldHVybmluZ1Byb21pc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTFB
Q0U1M0UwMEE4RDE4ODEwMDIyOTQ3RCAvKiBKU0RPTVBhcnNlci5oIGluIEhlYWRlcnMgKi8sCkBA
IC0yOTE2OCw3ICsyOTExNyw2IEBACiAJCQkJMzFBMDg5OEMxRTczOEQ1QTAwM0I2NjA5IC8qIEpT
V2ViR1BVVGV4dHVyZURlc2NyaXB0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxQzBGRjNFMEU0
Q0VGQUMwMDdENkZFNSAvKiBKU1dlYktpdEFuaW1hdGlvbkV2ZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQk0OTgzOTE0MDBGMUU3Njc1MDBDMjM3ODIgLyogSlNXZWJLaXRDU1NNYXRyaXguaCBpbiBI
ZWFkZXJzICovLAotCQkJCThBRDBBNTk1MTRDODgzMzYwMDBEODNDNSAvKiBKU1dlYktpdENTU1Jl
Z2lvblJ1bGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTNGMkIzM0VGMTY1QUYxNTYwMEUzOTg3QyAv
KiBKU1dlYktpdENTU1ZpZXdwb3J0UnVsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0NDNjk5NDEx
OTFFQzVGNTAwQUYyMjcwIC8qIEpTV2ViS2l0TmFtZXNwYWNlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRkRBN0MyNzE4ODMzMzMyMDBDOTU0QjUgLyogSlNXZWJLaXRQbGF5YmFja1RhcmdldEF2YWls
YWJpbGl0eUV2ZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTI5NDM3LDcgKzI5Mzg1LDYgQEAKIAkJ
CQlENkU1MjhBNDE0OUE5MjZEMDBFRkUxRjMgLyogTXV0YXRpb25PYnNlcnZlckludGVyZXN0R3Jv
dXAuaCBpbiBIZWFkZXJzICovLAogCQkJCUQ2RTI3NkIwMTQ2Mzc0NTUwMDFEMjgwQSAvKiBNdXRh
dGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlDNkYwOEZCRDE0
MzBGRThGMDA2ODU4NDkgLyogTXV0YXRpb25SZWNvcmQuaCBpbiBIZWFkZXJzICovLAotCQkJCTUy
QjZDOUM2MTVFM0Y0REYwMDY5MEIwNSAvKiBOYW1lZEZsb3dDb2xsZWN0aW9uLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkzMTRCRTNBNzFCMzEwM0ZCMDAxNDE5ODIgLyogTmFtZWRJbWFnZUdlbmVyYXRl
ZEltYWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBODE4NzIyMzA5NzdEM0MwMDA1ODI2RDkgLyog
TmFtZWROb2RlTWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQlBODE4NzIxRTA5NzdEM0MwMDA1ODI2
RDkgLyogTmFtZU5vZGVMaXN0LmggaW4gSGVhZGVycyAqLywKQEAgLTI5NzM3LDcgKzI5Njg0LDYg
QEAKIAkJCQk1Q0VFRTQzNjFGNUY4RjIxMDAxNEE1RjUgLyogUmVjdEVkZ2VzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk5ODMxQUU0QTE1NDIyNUM5MDBGRTI2NDQgLyogUmVmZXJyZXJQb2xpY3kuaCBp
biBIZWFkZXJzICovLAogCQkJCUJDQUI0MTgyMTNFMzU2RTgwMEQ4QUFGMyAvKiBSZWdpb24uaCBp
biBIZWFkZXJzICovLAotCQkJCTZDRERFOEQwMTc3MEJCMjIwMDE2RTA3MiAvKiBSZWdpb25PdmVy
c2V0U3RhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTI2Qjk5OThGMTgwM0FFNzIwMEQwMTEyMSAv
KiBSZWdpc3RlckFsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODUwMzFCNEMwQTQ0RUZD
NzAwRjk5MkUwIC8qIFJlZ2lzdGVyZWRFdmVudExpc3RlbmVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBNTc4RjQzRjFERTBCNjMwMDAzREZDNkEgLyogUmVqZWN0ZWRQcm9taXNlVHJhY2tlci5oIGlu
IEhlYWRlcnMgKi8sCkBAIC0zMDgwNCw3ICszMDc1MCw2IEBACiAJCQkJMzFDMEZGMjIwRTRDRUI2
RTAwN0Q2RkU1IC8qIFdlYktpdEFuaW1hdGlvbkV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk1
REZFQkFCNzE4NTkyQjZEMDBDNzVCRUIgLyogV2ViS2l0QXZhaWxhYmlsaXR5LmggaW4gSGVhZGVy
cyAqLywKIAkJCQk0OTgzOTE1OTBGMUU3NzY5MDBDMjM3ODIgLyogV2ViS2l0Q1NTTWF0cml4Lmgg
aW4gSGVhZGVycyAqLywKLQkJCQk4QUE2MUQwMDE0NEQ1OTVCMDBGMzczNTAgLyogV2ViS2l0Q1NT
UmVnaW9uUnVsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJM0ZGRkY5QTkxNTlEOUE1NTAwMjBCQkQ1
IC8qIFdlYktpdENTU1ZpZXdwb3J0UnVsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQwNjIxNDUx
REE2MzlCQTAwQTdGQjI2IC8qIFdlYktpdE1lZGlhS2V5TWVzc2FnZUV2ZW50LmggaW4gSGVhZGVy
cyAqLywKIAkJCQkyRDA2MjE1MTFEQTYzQTlGMDBBN0ZCMjYgLyogV2ViS2l0TWVkaWFLZXlOZWVk
ZWRFdmVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMTg1Nyw3ICszMTgwMiw2IEBACiAJCQkJODM2
QUNFQzIxRUNBNjJDODAwNEJEMDEyIC8qIERPTU1hdHJpeFJlYWRPbmx5LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUE5QzZFNEUzMEQ3NDVFMDUwMDY0NDJFOSAvKiBET01NaW1lVHlwZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlBOUM2RTRFNzBENzQ1RTE4MDA2NDQyRTkgLyogRE9NTWltZVR5cGVB
cnJheS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk1MkI2QzlDMjE1RTNGNERGMDA2OTBCMDUgLyog
RE9NTmFtZWRGbG93Q29sbGVjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUNFNTNFNzBB
OEQxOEU3MDAyMjk0N0QgLyogRE9NUGFyc2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdBNTQ4
ODE4MTRFNDMyQTEwMDZBRTA1QSAvKiBET01QYXRjaFN1cHBvcnQuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQTlDNkU0RUIwRDc0NUUyQjAwNjQ0MkU5IC8qIERPTVBsdWdpbi5jcHAgaW4gU291cmNl
cyAqLywKQEAgLTMyNTk0LDcgKzMyNTM4LDYgQEAKIAkJCQk4MzZBQ0VENTFFQ0FBQjE5MDA0QkQw
MTIgLyogSlNET01NYXRyaXhSZWFkT25seS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOUQyNDgw
NjBENzU3RTdEMDBGREY5NTkgLyogSlNET01NaW1lVHlwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlBOUQyNDgwODBENzU3RTdEMDBGREY5NTkgLyogSlNET01NaW1lVHlwZUFycmF5LmNwcCBpbiBT
b3VyY2VzICovLAotCQkJCTUyQ0NBOUUyMTVFM0Y2MkMwMDUzQzc3RiAvKiBKU0RPTU5hbWVkRmxv
d0NvbGxlY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFDRTUzREYwQThEMTg4MTAwMjI5
NDdEIC8qIEpTRE9NUGFyc2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE5RDI0N0ZFMEQ3NTdF
NjkwMEZERjk1OSAvKiBKU0RPTVBsdWdpbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOUQyNDgw
MDBENzU3RTY5MDBGREY5NTkgLyogSlNET01QbHVnaW5BcnJheS5jcHAgaW4gU291cmNlcyAqLywK
QEAgLTMzMjQ5LDE0ICszMzE5MiwxMiBAQAogCQkJCTMxQTA4OThBMUU3MzhENUEwMDNCNjYwOSAv
KiBKU1dlYkdQVVRleHR1cmVEZXNjcmlwdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTMxQzBG
RjNEMEU0Q0VGQUMwMDdENkZFNSAvKiBKU1dlYktpdEFuaW1hdGlvbkV2ZW50LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTQ5ODM5MTNGMEYxRTc2NzUwMEMyMzc4MiAvKiBKU1dlYktpdENTU01hdHJp
eC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk4QUQwQTU5NDE0Qzg4MzM2MDAwRDgzQzUgLyogSlNX
ZWJLaXRDU1NSZWdpb25SdWxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTNGMkIzM0VFMTY1QUYx
NTYwMEUzOTg3QyAvKiBKU1dlYktpdENTU1ZpZXdwb3J0UnVsZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlDREE5OERBMzE2MDE0NjQxMDBGRUEzQjEgLyogSlNXZWJLaXRNZWRpYUtleUVycm9yLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUNEQTk4RERGMTYwMjZBMzcwMEZFQTNCMSAvKiBKU1dlYktp
dE1lZGlhS2V5TWVzc2FnZUV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNEQTk4REUwMTYw
MjZBMzcwMEZFQTNCMSAvKiBKU1dlYktpdE1lZGlhS2V5TmVlZGVkRXZlbnQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQ0RBOThFMDQxNjAzOUUxQTAwRkVBM0IxIC8qIEpTV2ViS2l0TWVkaWFLZXlz
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNEQTk4RTA2MTYwMzlFMUYwMEZFQTNCMSAvKiBKU1dl
YktpdE1lZGlhS2V5U2Vzc2lvbi5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlENzYxM0FDNDE0NzUz
RTU2MDBEQjg2MDYgLyogSlNXZWJLaXROYW1lZEZsb3cuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
N0NDNjk5NDAxOTFFQzVGNTAwQUYyMjcwIC8qIEpTV2ViS2l0TmFtZXNwYWNlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTBGREE3QzI2MTg4MzMzMzIwMEM5NTRCNSAvKiBKU1dlYktpdFBsYXliYWNr
VGFyZ2V0QXZhaWxhYmlsaXR5RXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDk0QkQ3OUQw
RjU1Qzk0QzAwNzQ3ODI4IC8qIEpTV2ViS2l0UG9pbnQuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0z
MzUwMyw3ICszMzQ0NCw2IEBACiAJCQkJRDZFNTI4QTMxNDlBOTI2RDAwRUZFMUYzIC8qIE11dGF0
aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUQ2RTI3NkFG
MTQ2Mzc0NTUwMDFEMjgwQSAvKiBNdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUM2RjA4RkJDMTQzMEZFOEYwMDY4NTg0OSAvKiBNdXRhdGlvblJlY29y
ZC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk1MkI2QzlDNTE1RTNGNERGMDA2OTBCMDUgLyogTmFt
ZWRGbG93Q29sbGVjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzMTRCRTNBNjFCMzEwM0ZC
MDAxNDE5ODIgLyogTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUJDRjM0QTM3MTFBMjMxQ0QwMEM3MTgwNCAvKiBOYW1lZE5vZGVNYXAuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQTgxODcyMjQwOTc3RDNDMDAwNTgyNkQ5IC8qIE5hbWVOb2RlTGlzdC5jcHAg
aW4gU291cmNlcyAqLywKQEAgLTM0NjExLDE0ICszNDU1MSwxMiBAQAogCQkJCUY0ODIyMzEwMUUz
ODY5QjgwMDY2RkM3OSAvKiBXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMzFDMEZGMjEwRTRDRUI2RTAwN0Q2RkU1IC8qIFdlYktpdEFuaW1hdGlvbkV2ZW50
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ5ODM5MTU4MEYxRTc3NjkwMEMyMzc4MiAvKiBXZWJL
aXRDU1NNYXRyaXguY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJOEFBNjFDRkYxNDRENTk1QjAwRjM3
MzUwIC8qIFdlYktpdENTU1JlZ2lvblJ1bGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJM0ZGRkY5
QTgxNTlEOUE1NTAwMjBCQkQ1IC8qIFdlYktpdENTU1ZpZXdwb3J0UnVsZS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkxQTE0MTRCNTEzQTBGMDUwMDAxOTk5NkMgLyogV2ViS2l0Rm9udEZhbWlseU5h
bWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEMDYyMTQ0MURBNjM5QjYwMEE3RkIyNiAvKiBX
ZWJLaXRNZWRpYUtleU1lc3NhZ2VFdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDA2MjE1
MjFEQTYzQUEyMDBBN0ZCMjYgLyogV2ViS2l0TWVkaWFLZXlOZWVkZWRFdmVudC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkyRDA2MjE0RDFEQTYzQThCMDBBN0ZCMjYgLyogV2ViS2l0TWVkaWFLZXlz
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEMDYyMTRGMURBNjNBOTEwMEE3RkIyNiAvKiBXZWJL
aXRNZWRpYUtleVNlc3Npb24uY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJRDc2MTNBNTAxNDc0RjEz
RjAwREI4NjA2IC8qIFdlYktpdE5hbWVkRmxvdy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzQ4
QTZEMDE5MUM5RDY1MDAwMjY2NzQgLyogV2ViS2l0TmFtZXNwYWNlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUE1REVCREEzMTZGQjkwODcwMDgzNkZFMCAvKiBXZWJLaXRQbGF5YmFja1RhcmdldEF2
YWlsYWJpbGl0eUV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTMxQzBGRjI0MEU0Q0VCNkUw
MDdENkZFNSAvKiBXZWJLaXRUcmFuc2l0aW9uRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1J1bGVDdXN0b20uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTUnVsZUN1c3RvbS5jcHAJKHJl
dmlzaW9uIDIyMjI1NykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTUnVsZUN1
c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDkgKzQ2LDcgQEAKICNpbmNsdWRlICJKU0NT
U1N1cHBvcnRzUnVsZS5oIgogI2luY2x1ZGUgIkpTTm9kZS5oIgogI2luY2x1ZGUgIkpTU3R5bGVT
aGVldEN1c3RvbS5oIgotI2luY2x1ZGUgIkpTV2ViS2l0Q1NTUmVnaW9uUnVsZS5oIgogI2luY2x1
ZGUgIkpTV2ViS2l0Q1NTVmlld3BvcnRSdWxlLmgiCi0jaW5jbHVkZSAiV2ViS2l0Q1NTUmVnaW9u
UnVsZS5oIgogI2luY2x1ZGUgIldlYktpdENTU1ZpZXdwb3J0UnVsZS5oIgogCiB1c2luZyBuYW1l
c3BhY2UgSlNDOwpAQCAtODUsMTAgKzgzLDYgQEAgSlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEV4
ZWNTdGF0ZSosIEpTRAogICAgIGNhc2UgQ1NTUnVsZTo6V0VCS0lUX1ZJRVdQT1JUX1JVTEU6CiAg
ICAgICAgIHJldHVybiBjcmVhdGVXcmFwcGVyPFdlYktpdENTU1ZpZXdwb3J0UnVsZT4oZ2xvYmFs
T2JqZWN0LCBXVEZNb3ZlKHJ1bGUpKTsKICNlbmRpZgotI2lmIEVOQUJMRShDU1NfUkVHSU9OUykK
LSAgICBjYXNlIENTU1J1bGU6OldFQktJVF9SRUdJT05fUlVMRToKLSAgICAgICAgcmV0dXJuIGNy
ZWF0ZVdyYXBwZXI8V2ViS2l0Q1NTUmVnaW9uUnVsZT4oZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKHJ1
bGUpKTsKLSNlbmRpZgogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBjcmVhdGVXcmFwcGVy
PENTU1J1bGU+KGdsb2JhbE9iamVjdCwgV1RGTW92ZShydWxlKSk7CiAgICAgfQpJbmRleDogU291
cmNlL1dlYkNvcmUvY3NzL0NTU0FsbEluT25lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTQWxsSW5PbmUuY3BwCShyZXZpc2lvbiAyMjIyNTcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTQWxsSW5PbmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjQsNiArMTI0LDUg
QEAKICNpbmNsdWRlICJUcmFuc2Zvcm1GdW5jdGlvbnMuY3BwIgogI2luY2x1ZGUgIlZpZXdwb3J0
U3R5bGVSZXNvbHZlci5jcHAiCiAjaW5jbHVkZSAiV2ViS2l0Q1NTTWF0cml4LmNwcCIKLSNpbmNs
dWRlICJXZWJLaXRDU1NSZWdpb25SdWxlLmNwcCIKICNpbmNsdWRlICJXZWJLaXRDU1NWaWV3cG9y
dFJ1bGUuY3BwIgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURl
Y2xhcmF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0
ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAkocmV2aXNpb24gMjIyMjU3KQorKysgU291cmNlL1dlYkNv
cmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQxNywxNCArNDE3LDYgQEAgc3RhdGljIGNvbnN0IENTU1Byb3BlcnR5SUQgY29tcHV0ZWRQcm9w
ZQogICAgIENTU1Byb3BlcnR5V2Via2l0VXNlckRyYWcsCiAgICAgQ1NTUHJvcGVydHlXZWJraXRV
c2VyTW9kaWZ5LAogICAgIENTU1Byb3BlcnR5V2Via2l0VXNlclNlbGVjdCwKLSNpZiBFTkFCTEUo
Q1NTX1JFR0lPTlMpCi0gICAgQ1NTUHJvcGVydHlXZWJraXRGbG93SW50bywKLSAgICBDU1NQcm9w
ZXJ0eVdlYmtpdEZsb3dGcm9tLAotICAgIENTU1Byb3BlcnR5V2Via2l0UmVnaW9uQnJlYWtBZnRl
ciwKLSAgICBDU1NQcm9wZXJ0eVdlYmtpdFJlZ2lvbkJyZWFrQmVmb3JlLAotICAgIENTU1Byb3Bl
cnR5V2Via2l0UmVnaW9uQnJlYWtJbnNpZGUsCi0gICAgQ1NTUHJvcGVydHlXZWJraXRSZWdpb25G
cmFnbWVudCwKLSNlbmRpZgogICAgIENTU1Byb3BlcnR5U2hhcGVJbWFnZVRocmVzaG9sZCwKICAg
ICBDU1NQcm9wZXJ0eVNoYXBlTWFyZ2luLAogICAgIENTU1Byb3BlcnR5U2hhcGVPdXRzaWRlLApA
QCAtMTkxNiw4ICsxOTA4LDYgQEAgc3RhdGljIFJlZjxDU1NWYWx1ZUxpc3Q+IGNvbnRlbnRUb0NT
U1ZhbAogICAgICAgICBlbHNlIGlmIChpczxUZXh0Q29udGVudERhdGE+KCpjb250ZW50RGF0YSkp
CiAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKGRvd25j
YXN0PFRleHRDb250ZW50RGF0YT4oKmNvbnRlbnREYXRhKS50ZXh0KCksIENTU1ByaW1pdGl2ZVZh
bHVlOjpDU1NfU1RSSU5HKSk7CiAgICAgfQotICAgIGlmIChzdHlsZS5oYXNGbG93RnJvbSgpKQot
ICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHN0eWxlLnJlZ2lv
blRocmVhZCgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1NUUklORykpOwogICAgIHJldHVybiBs
aXN0OwogfQogCkBAIC0yMjkwLDI0ICsyMjgwLDYgQEAgc3RhdGljIENTU1ZhbHVlSUQgY29udmVy
dFRvQ29sdW1uQnJlYWsoQgogICAgIHJldHVybiBDU1NWYWx1ZUF1dG87CiB9CiAKLSNpZiBFTkFC
TEUoQ1NTX1JFR0lPTlMpCi1zdGF0aWMgQ1NTVmFsdWVJRCBjb252ZXJ0VG9SZWdpb25CcmVhayhC
cmVha0JldHdlZW4gdmFsdWUpCi17Ci0gICAgaWYgKHZhbHVlID09IFJlZ2lvbkJyZWFrQmV0d2Vl
bikKLSAgICAgICAgcmV0dXJuIENTU1ZhbHVlQWx3YXlzOwotICAgIGlmICh2YWx1ZSA9PSBBdm9p
ZEJyZWFrQmV0d2VlbiB8fCB2YWx1ZSA9PSBBdm9pZFJlZ2lvbkJyZWFrQmV0d2VlbikKLSAgICAg
ICAgcmV0dXJuIENTU1ZhbHVlQXZvaWQ7Ci0gICAgcmV0dXJuIENTU1ZhbHVlQXV0bzsKLX0KLSAg
ICAKLXN0YXRpYyBDU1NWYWx1ZUlEIGNvbnZlcnRUb1JlZ2lvbkJyZWFrKEJyZWFrSW5zaWRlIHZh
bHVlKQotewotICAgIGlmICh2YWx1ZSA9PSBBdm9pZEJyZWFrSW5zaWRlIHx8IHZhbHVlID09IEF2
b2lkUmVnaW9uQnJlYWtJbnNpZGUpCi0gICAgICAgIHJldHVybiBDU1NWYWx1ZUF2b2lkOwotICAg
IHJldHVybiBDU1NWYWx1ZUF1dG87Ci19Ci0jZW5kaWYKLQogc3RhdGljIGlubGluZSBib29sIGlz
Tm9uUmVwbGFjZWRJbmxpbmUoUmVuZGVyT2JqZWN0JiByZW5kZXJlcikKIHsKICAgICByZXR1cm4g
cmVuZGVyZXIuaXNJbmxpbmUoKSAmJiAhcmVuZGVyZXIuaXNSZXBsYWNlZCgpOwpAQCAtMjk0NSwx
NCArMjkxNyw2IEBAIFJlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3RvcjoKICAg
ICAgICAgICAgIHJldHVybiB6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKHN0eWxlLT5jb2x1bW5XaWR0
aCgpLCAqc3R5bGUpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5VGFiU2l6ZToKICAgICAgICAg
ICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUtPnRhYlNpemUoKSwgQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpOwotI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKLSAg
ICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFJlZ2lvbkJyZWFrQWZ0ZXI6Ci0gICAgICAgICAg
ICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKGNvbnZlcnRUb1JlZ2lvbkJyZWFrKHN0
eWxlLT5icmVha0FmdGVyKCkpKTsKLSAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFJlZ2lv
bkJyZWFrQmVmb3JlOgotICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1
ZShjb252ZXJ0VG9SZWdpb25CcmVhayhzdHlsZS0+YnJlYWtCZWZvcmUoKSkpOwotICAgICAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0UmVnaW9uQnJlYWtJbnNpZGU6Ci0gICAgICAgICAgICByZXR1
cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKGNvbnZlcnRUb1JlZ2lvbkJyZWFrKHN0eWxlLT5i
cmVha0luc2lkZSgpKSk7Ci0jZW5kaWYKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUN1cnNvcjog
ewogICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbGlzdDsKICAgICAgICAgICAgIGF1
dG8qIGN1cnNvcnMgPSBzdHlsZS0+Y3Vyc29ycygpOwpAQCAtMzgyOCwxOCArMzc5Miw2IEBAIFJl
ZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3RvcjoKICAgICAgICAgICAgICAgICBs
aXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKGRvd25jYXN0PEJveENsaXBQYXRo
T3BlcmF0aW9uPigqb3BlcmF0aW9uKS5yZWZlcmVuY2VCb3goKSkpOwogICAgICAgICAgICAgcmV0
dXJuIFdURk1vdmUobGlzdCk7CiAgICAgICAgIH0KLSNpZiBFTkFCTEUoQ1NTX1JFR0lPTlMpCi0g
ICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRGbG93SW50bzoKLSAgICAgICAgICAgIGlmICgh
c3R5bGUtPmhhc0Zsb3dJbnRvKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9v
bC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVOb25lKTsKLSAgICAgICAgICAgIHJldHVy
biBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUtPmZsb3dUaHJlYWQoKSwgQ1NTUHJpbWl0
aXZlVmFsdWU6OkNTU19TVFJJTkcpOwotICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Rmxv
d0Zyb206Ci0gICAgICAgICAgICBpZiAoIXN0eWxlLT5oYXNGbG93RnJvbSgpKQotICAgICAgICAg
ICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVl
Tm9uZSk7Ci0gICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHN0eWxl
LT5yZWdpb25UaHJlYWQoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19TVFJJTkcpOwotICAgICAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0UmVnaW9uRnJhZ21lbnQ6Ci0gICAgICAgICAgICByZXR1
cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHN0eWxlLT5yZWdpb25GcmFnbWVudCgpKTsKLSNl
bmRpZgogICAgICAgICBjYXNlIENTU1Byb3BlcnR5U2hhcGVNYXJnaW46CiAgICAgICAgICAgICBy
ZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHN0eWxlLT5zaGFwZU1hcmdpbigpLCAqc3R5
bGUpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5U2hhcGVJbWFnZVRocmVzaG9sZDoKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaAkocmV2
aXNpb24gMjIyMjU3KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlTWFw
cGluZ3MuaAkod29ya2luZyBjb3B5KQpAQCAtMjI0NSwxOCArMjI0NSwxMiBAQCB0ZW1wbGF0ZTw+
IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTCiAgICAgY2FzZSBBdm9pZFBhZ2VCcmVha0Jl
dHdlZW46CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlQXZvaWRQYWdlOwogICAg
ICAgICBicmVhazsKLSAgICBjYXNlIEF2b2lkUmVnaW9uQnJlYWtCZXR3ZWVuOgotICAgICAgICBt
X3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUF2b2lkUmVnaW9uOwotICAgICAgICBicmVhazsKICAg
ICBjYXNlIENvbHVtbkJyZWFrQmV0d2VlbjoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NT
VmFsdWVDb2x1bW47CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUGFnZUJyZWFrQmV0d2VlbjoK
ICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVQYWdlOwogICAgICAgICBicmVhazsK
LSAgICBjYXNlIFJlZ2lvbkJyZWFrQmV0d2VlbjoKLSAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0g
Q1NTVmFsdWVSZWdpb247Ci0gICAgICAgIGJyZWFrOwogICAgIGNhc2UgTGVmdFBhZ2VCcmVha0Jl
dHdlZW46CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlTGVmdDsKICAgICAgICAg
YnJlYWs7CkBAIC0yMjg1LDE0ICsyMjc5LDEwIEBAIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1p
dGl2ZVZhbHVlOjpvcGUKICAgICAgICAgcmV0dXJuIEF2b2lkQ29sdW1uQnJlYWtCZXR3ZWVuOwog
ICAgIGNhc2UgQ1NTVmFsdWVBdm9pZFBhZ2U6CiAgICAgICAgIHJldHVybiBBdm9pZFBhZ2VCcmVh
a0JldHdlZW47Ci0gICAgY2FzZSBDU1NWYWx1ZUF2b2lkUmVnaW9uOgotICAgICAgICByZXR1cm4g
QXZvaWRSZWdpb25CcmVha0JldHdlZW47CiAgICAgY2FzZSBDU1NWYWx1ZUNvbHVtbjoKICAgICAg
ICAgcmV0dXJuIENvbHVtbkJyZWFrQmV0d2VlbjsKICAgICBjYXNlIENTU1ZhbHVlUGFnZToKICAg
ICAgICAgcmV0dXJuIFBhZ2VCcmVha0JldHdlZW47Ci0gICAgY2FzZSBDU1NWYWx1ZVJlZ2lvbjoK
LSAgICAgICAgcmV0dXJuIFJlZ2lvbkJyZWFrQmV0d2VlbjsKICAgICBjYXNlIENTU1ZhbHVlTGVm
dDoKICAgICAgICAgcmV0dXJuIExlZnRQYWdlQnJlYWtCZXR3ZWVuOwogICAgIGNhc2UgQ1NTVmFs
dWVSaWdodDoKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0aWVzLmpzb24KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnRpZXMuanNvbgkocmV2aXNp
b24gMjIyMjU3KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnRpZXMuanNvbgkod29y
a2luZyBjb3B5KQpAQCAtMTYzOSwxMCArMTYzOSw4IEBACiAgICAgICAgICAgICAgICAgInZlcnNv
IiwKICAgICAgICAgICAgICAgICAiY29sdW1uIiwKICAgICAgICAgICAgICAgICAicGFnZSIsCi0g
ICAgICAgICAgICAgICAgInJlZ2lvbiIsCiAgICAgICAgICAgICAgICAgImF2b2lkLWNvbHVtbiIs
Ci0gICAgICAgICAgICAgICAgImF2b2lkLXBhZ2UiLAotICAgICAgICAgICAgICAgICJhdm9pZC1y
ZWdpb24iCisgICAgICAgICAgICAgICAgImF2b2lkLXBhZ2UiCiAgICAgICAgICAgICBdLAogICAg
ICAgICAgICAgImNvZGVnZW4tcHJvcGVydGllcyI6IHsKICAgICAgICAgICAgICAgICAiaW5pdGlh
bCI6ICJpbml0aWFsQnJlYWtCZXR3ZWVuIgpAQCAtMTY2MiwxMCArMTY2MCw4IEBACiAgICAgICAg
ICAgICAgICAgInZlcnNvIiwKICAgICAgICAgICAgICAgICAiY29sdW1uIiwKICAgICAgICAgICAg
ICAgICAicGFnZSIsCi0gICAgICAgICAgICAgICAgInJlZ2lvbiIsCiAgICAgICAgICAgICAgICAg
ImF2b2lkLWNvbHVtbiIsCi0gICAgICAgICAgICAgICAgImF2b2lkLXBhZ2UiLAotICAgICAgICAg
ICAgICAgICJhdm9pZC1yZWdpb24iCisgICAgICAgICAgICAgICAgImF2b2lkLXBhZ2UiCiAgICAg
ICAgICAgICBdLAogICAgICAgICAgICAgImNvZGVnZW4tcHJvcGVydGllcyI6IHsKICAgICAgICAg
ICAgICAgICAiaW5pdGlhbCI6ICJpbml0aWFsQnJlYWtCZXR3ZWVuIgpAQCAtMTY4MCw4ICsxNjc2
LDcgQEAKICAgICAgICAgICAgICAgICAiYXV0byIsCiAgICAgICAgICAgICAgICAgImF2b2lkIiwK
ICAgICAgICAgICAgICAgICAiYXZvaWQtY29sdW1uIiwKLSAgICAgICAgICAgICAgICAiYXZvaWQt
cGFnZSIsCi0gICAgICAgICAgICAgICAgImF2b2lkLXJlZ2lvbiIKKyAgICAgICAgICAgICAgICAi
YXZvaWQtcGFnZSIKICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAiY29kZWdlbi1wcm9wZXJ0
aWVzIjogewogICAgICAgICAgICAgICAgICJpbml0aWFsIjogImluaXRpYWxCcmVha0luc2lkZSIK
QEAgLTYwOTUsOTUgKzYwOTAsNiBAQAogICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly93
d3cudzMub3JnL1RSL2Nzcy11aS00LyNwcm9wZGVmLXVzZXItc2VsZWN0IgogICAgICAgICAgICAg
fQogICAgICAgICB9LAotICAgICAgICAiLXdlYmtpdC1mbG93LWludG8iOiB7Ci0gICAgICAgICAg
ICAiY29kZWdlbi1wcm9wZXJ0aWVzIjogewotICAgICAgICAgICAgICAgICJuYW1lLWZvci1tZXRo
b2RzIjogIkZsb3dUaHJlYWQiLAotICAgICAgICAgICAgICAgICJjb252ZXJ0ZXIiOiAiU3RyaW5n
T3JOb25lIiwKLSAgICAgICAgICAgICAgICAiZW5hYmxlLWlmIjogIkVOQUJMRV9DU1NfUkVHSU9O
UyIKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAic3BlY2lmaWNhdGlvbiI6IHsKLSAgICAg
ICAgICAgICAgICAiY2F0ZWdvcnkiOiAiY3NzLXJlZ2lvbnMiLAotICAgICAgICAgICAgICAgICJ1
cmwiOiAiaHR0cHM6Ly93d3cudzMub3JnL1RSL2Nzcy1yZWdpb25zLTEvI3Byb3BkZWYtZmxvdy1p
bnRvIgotICAgICAgICAgICAgfQotICAgICAgICB9LAotICAgICAgICAiLXdlYmtpdC1mbG93LWZy
b20iOiB7Ci0gICAgICAgICAgICAiY29kZWdlbi1wcm9wZXJ0aWVzIjogewotICAgICAgICAgICAg
ICAgICJuYW1lLWZvci1tZXRob2RzIjogIlJlZ2lvblRocmVhZCIsCi0gICAgICAgICAgICAgICAg
ImNvbnZlcnRlciI6ICJTdHJpbmdPck5vbmUiLAotICAgICAgICAgICAgICAgICJlbmFibGUtaWYi
OiAiRU5BQkxFX0NTU19SRUdJT05TIgotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICJzcGVj
aWZpY2F0aW9uIjogewotICAgICAgICAgICAgICAgICJjYXRlZ29yeSI6ICJjc3MtcmVnaW9ucyIs
Ci0gICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL3d3dy53My5vcmcvVFIvY3NzLXJlZ2lv
bnMtMS8jcHJvcGRlZi1mbG93LWZyb20iCi0gICAgICAgICAgICB9Ci0gICAgICAgIH0sCi0gICAg
ICAgICItd2Via2l0LXJlZ2lvbi1mcmFnbWVudCI6IHsKLSAgICAgICAgICAgICJ2YWx1ZXMiOiBb
Ci0gICAgICAgICAgICAgICAgImF1dG8iLAotICAgICAgICAgICAgICAgICJicmVhayIKLSAgICAg
ICAgICAgIF0sCi0gICAgICAgICAgICAiY29kZWdlbi1wcm9wZXJ0aWVzIjogewotICAgICAgICAg
ICAgICAgICJlbmFibGUtaWYiOiAiRU5BQkxFX0NTU19SRUdJT05TIgotICAgICAgICAgICAgfSwK
LSAgICAgICAgICAgICJzcGVjaWZpY2F0aW9uIjogewotICAgICAgICAgICAgICAgICJjYXRlZ29y
eSI6ICJjc3MtcmVnaW9ucyIsCi0gICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL3d3dy53
My5vcmcvVFIvY3NzLXJlZ2lvbnMtMS8jcHJvcGRlZi1yZWdpb24tZnJhZ21lbnQiCi0gICAgICAg
ICAgICB9Ci0gICAgICAgIH0sCi0gICAgICAgICItd2Via2l0LXJlZ2lvbi1icmVhay1hZnRlciI6
IHsKLSAgICAgICAgICAgICJ2YWx1ZXMiOiBbCi0gICAgICAgICAgICAgICAgImF1dG8iLAotICAg
ICAgICAgICAgICAgICJhbHdheXMiLAotICAgICAgICAgICAgICAgICJhdm9pZCIsCi0gICAgICAg
ICAgICAgICAgImxlZnQiLAotICAgICAgICAgICAgICAgICJyaWdodCIKLSAgICAgICAgICAgIF0s
Ci0gICAgICAgICAgICAiY29kZWdlbi1wcm9wZXJ0aWVzIjogewotICAgICAgICAgICAgICAgICJp
bml0aWFsIjogImluaXRpYWxCcmVha0JldHdlZW4iLAotICAgICAgICAgICAgICAgICJuYW1lLWZv
ci1tZXRob2RzIjogIkJyZWFrQWZ0ZXIiLAotICAgICAgICAgICAgICAgICJjb252ZXJ0ZXIiOiAi
UmVnaW9uQnJlYWtCZXR3ZWVuIiwKLSAgICAgICAgICAgICAgICAiZW5hYmxlLWlmIjogIkVOQUJM
RV9DU1NfUkVHSU9OUyIKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAic3BlY2lmaWNhdGlv
biI6IHsKLSAgICAgICAgICAgICAgICAiY2F0ZWdvcnkiOiAiY3NzLXJlZ2lvbnMiLAotICAgICAg
ICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly93d3cudzMub3JnL1RSL2Nzcy1yZWdpb25zLTEvI3By
b3BkZWYtYnJlYWstYWZ0ZXIiCi0gICAgICAgICAgICB9Ci0gICAgICAgIH0sCi0gICAgICAgICIt
d2Via2l0LXJlZ2lvbi1icmVhay1iZWZvcmUiOiB7Ci0gICAgICAgICAgICAidmFsdWVzIjogWwot
ICAgICAgICAgICAgICAgICJhdXRvIiwKLSAgICAgICAgICAgICAgICAiYWx3YXlzIiwKLSAgICAg
ICAgICAgICAgICAiYXZvaWQiLAotICAgICAgICAgICAgICAgICJsZWZ0IiwKLSAgICAgICAgICAg
ICAgICAicmlnaHQiCi0gICAgICAgICAgICBdLAotICAgICAgICAgICAgImNvZGVnZW4tcHJvcGVy
dGllcyI6IHsKLSAgICAgICAgICAgICAgICAiaW5pdGlhbCI6ICJpbml0aWFsQnJlYWtCZXR3ZWVu
IiwKLSAgICAgICAgICAgICAgICAibmFtZS1mb3ItbWV0aG9kcyI6ICJCcmVha0JlZm9yZSIsCi0g
ICAgICAgICAgICAgICAgImNvbnZlcnRlciI6ICJSZWdpb25CcmVha0JldHdlZW4iLAotICAgICAg
ICAgICAgICAgICJlbmFibGUtaWYiOiAiRU5BQkxFX0NTU19SRUdJT05TIgotICAgICAgICAgICAg
fSwKLSAgICAgICAgICAgICJzcGVjaWZpY2F0aW9uIjogewotICAgICAgICAgICAgICAgICJjYXRl
Z29yeSI6ICJjc3MtcmVnaW9ucyIsCi0gICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL3d3
dy53My5vcmcvVFIvY3NzLXJlZ2lvbnMtMS8jcHJvcGRlZi1icmVhay1iZWZvcmUiCi0gICAgICAg
ICAgICB9Ci0gICAgICAgIH0sCi0gICAgICAgICItd2Via2l0LXJlZ2lvbi1icmVhay1pbnNpZGUi
OiB7Ci0gICAgICAgICAgICAidmFsdWVzIjogWwotICAgICAgICAgICAgICAgICJhdXRvIiwKLSAg
ICAgICAgICAgICAgICAiYXZvaWQiCi0gICAgICAgICAgICBdLAotICAgICAgICAgICAgImNvZGVn
ZW4tcHJvcGVydGllcyI6IHsKLSAgICAgICAgICAgICAgICAiaW5pdGlhbCI6ICJpbml0aWFsQnJl
YWtJbnNpZGUiLAotICAgICAgICAgICAgICAgICJuYW1lLWZvci1tZXRob2RzIjogIkJyZWFrSW5z
aWRlIiwKLSAgICAgICAgICAgICAgICAiY29udmVydGVyIjogIlJlZ2lvbkJyZWFrSW5zaWRlIiwK
LSAgICAgICAgICAgICAgICAiZW5hYmxlLWlmIjogIkVOQUJMRV9DU1NfUkVHSU9OUyIKLSAgICAg
ICAgICAgIH0sCi0gICAgICAgICAgICAic3BlY2lmaWNhdGlvbiI6IHsKLSAgICAgICAgICAgICAg
ICAiY2F0ZWdvcnkiOiAiY3NzLXJlZ2lvbnMiLAotICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0
cHM6Ly93d3cudzMub3JnL1RSL2Nzcy1yZWdpb25zLTEvI3Byb3BkZWYtYnJlYWstaW5zaWRlIgot
ICAgICAgICAgICAgfQotICAgICAgICB9LAogICAgICAgICAic2Nyb2xsLXBhZGRpbmciOiB7CiAg
ICAgICAgICAgICAiY29kZWdlbi1wcm9wZXJ0aWVzIjogewogICAgICAgICAgICAgICAgICJlbmFi
bGUtaWYiOiAiRU5BQkxFX0NTU19TQ1JPTExfU05BUCIsCkBAIC02ODIyLDEyICs2NzI4LDYgQEAK
ICAgICAgICAgICAgICJsb25nbmFtZSI6ICJDU1MgUGFnZWQgTWVkaWEgTW9kdWxlIiwKICAgICAg
ICAgICAgICJ1cmwiOiAiaHR0cHM6Ly93d3cudzMub3JnL1RSL2NzczMtcGFnZS8iCiAgICAgICAg
IH0sCi0gICAgICAgICJjc3MtcmVnaW9ucyI6IHsKLSAgICAgICAgICAgICJzaG9ydG5hbWUiOiAi
Q1NTIFJlZ2lvbnMiLAotICAgICAgICAgICAgImxvbmduYW1lIjogIkNTUyBSZWdpb25zIE1vZHVs
ZSIsCi0gICAgICAgICAgICAidXJsIjogImh0dHBzOi8vd3d3LnczLm9yZy9UUi9jc3MtcmVnaW9u
cy0xLyIsCi0gICAgICAgICAgICAic3RhdHVzIjogImV4cGVyaW1lbnRhbCIKLSAgICAgICAgfSwK
ICAgICAgICAgImNzcy1yb3VuZC1kaXNwbGF5IjogewogICAgICAgICAgICAgInNob3J0bmFtZSI6
ICJDU1MgUm91bmQgRGlzcGxheSIsCiAgICAgICAgICAgICAibG9uZ25hbWUiOiAiQ1NTIFJvdW5k
IERpc3BsYXkgTW9kdWxlIiwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NSdWxlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUnVsZS5jcHAJKHJldmlzaW9uIDIy
MjI1NykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NSdWxlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzYsMTAgKzM2LDYgQEAgc3RydWN0IFNhbWVTaXplQXNDU1NSdWxlIDogcHVibGljIFJlZkNv
dQogCiBDT01QSUxFX0FTU0VSVChzaXplb2YoQ1NTUnVsZSkgPT0gc2l6ZW9mKFNhbWVTaXplQXND
U1NSdWxlKSwgQ1NTUnVsZV9zaG91bGRfc3RheV9zbWFsbCk7CiAKLSNpZiBFTkFCTEUoQ1NTX1JF
R0lPTlMpCi1DT01QSUxFX0FTU0VSVChTdHlsZVJ1bGVCYXNlOjpSZWdpb24gPT0gc3RhdGljX2Nh
c3Q8U3R5bGVSdWxlQmFzZTo6VHlwZT4oQ1NTUnVsZTo6V0VCS0lUX1JFR0lPTl9SVUxFKSwgZW51
bXNfc2hvdWxkX21hdGNoKTsKLSNlbmRpZgotCiAjaWYgRU5BQkxFKENTU19ERVZJQ0VfQURBUFRB
VElPTikKIENPTVBJTEVfQVNTRVJUKFN0eWxlUnVsZUJhc2U6OlZpZXdwb3J0ID09IHN0YXRpY19j
YXN0PFN0eWxlUnVsZUJhc2U6OlR5cGU+KENTU1J1bGU6OldFQktJVF9WSUVXUE9SVF9SVUxFKSwg
ZW51bXNfc2hvdWxkX21hdGNoKTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NT
U1J1bGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUnVsZS5oCShyZXZp
c2lvbiAyMjIyNTcpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUnVsZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC01NCw5ICs1NCw2IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoQ1NTX0RFVklDRV9BREFQ
VEFUSU9OKQogICAgICAgICBXRUJLSVRfVklFV1BPUlRfUlVMRSA9IDE1LAogI2VuZGlmCi0jaWYg
RU5BQkxFKENTU19SRUdJT05TKQotICAgICAgICBXRUJLSVRfUkVHSU9OX1JVTEUgPSAxNiwKLSNl
bmRpZgogICAgIH07CiAKICAgICBlbnVtIERlcHJlY2F0ZWRUeXBlIHsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NSdWxlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTUnVsZS5pZGwJKHJldmlzaW9uIDIyMjI1NykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NS
dWxlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNiBAQAogICAgIGNvbnN0IHVuc2ln
bmVkIHNob3J0IE5BTUVTUEFDRV9SVUxFID0gMTA7CiAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQg
U1VQUE9SVFNfUlVMRSA9IDEyOwogICAgIFtDb25kaXRpb25hbD1DU1NfREVWSUNFX0FEQVBUQVRJ
T05dIGNvbnN0IHVuc2lnbmVkIHNob3J0IFdFQktJVF9WSUVXUE9SVF9SVUxFID0gMTU7Ci0gICAg
W0NvbmRpdGlvbmFsPUNTU19SRUdJT05TXSBjb25zdCB1bnNpZ25lZCBzaG9ydCBXRUJLSVRfUkVH
SU9OX1JVTEUgPSAxNjsKIAogICAgIC8vIExlZ2FjeSBzeW5vbnltcyBmb3IgdGhlIGFib3ZlLCBr
ZXB0IHRvIGF2b2lkIGJyZWFraW5nIGV4aXN0aW5nIGNvbnRlbnQuCiAgICAgY29uc3QgdW5zaWdu
ZWQgc2hvcnQgV0VCS0lUX0tFWUZSQU1FU19SVUxFID0gNzsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2Nzcy9FbGVtZW50UnVsZUNvbGxlY3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvY3NzL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmNwcAkocmV2aXNpb24gMjIyMjU3KQorKysgU291
cmNlL1dlYkNvcmUvY3NzL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzUsNyArMzUsNiBAQAogI2luY2x1ZGUgIkNTU1ZhbHVlS2V5d29yZHMuaCIKICNpbmNsdWRl
ICJIVE1MRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxTbG90RWxlbWVudC5oIgotI2luY2x1ZGUg
IlJlbmRlclJlZ2lvbi5oIgogI2luY2x1ZGUgIlNWR0VsZW1lbnQuaCIKICNpbmNsdWRlICJTZWxl
Y3RvckNvbXBpbGVyLmgiCiAjaW5jbHVkZSAiU2VsZWN0b3JGaWx0ZXIuaCIKQEAgLTE2NCwyMiAr
MTYzLDYgQEAgdm9pZCBFbGVtZW50UnVsZUNvbGxlY3Rvcjo6Y29sbGVjdE1hdGNoaQogICAgIGNv
bGxlY3RNYXRjaGluZ1J1bGVzRm9yTGlzdChtYXRjaFJlcXVlc3QucnVsZVNldC0+dW5pdmVyc2Fs
UnVsZXMoKSwgbWF0Y2hSZXF1ZXN0LCBydWxlUmFuZ2UpOwogfQogCi12b2lkIEVsZW1lbnRSdWxl
Q29sbGVjdG9yOjpjb2xsZWN0TWF0Y2hpbmdSdWxlc0ZvclJlZ2lvbihjb25zdCBNYXRjaFJlcXVl
c3QmIG1hdGNoUmVxdWVzdCwgU3R5bGVSZXNvbHZlcjo6UnVsZVJhbmdlJiBydWxlUmFuZ2UpCi17
Ci0gICAgaWYgKCFtX3JlZ2lvbkZvclN0eWxpbmcpCi0gICAgICAgIHJldHVybjsKLQotICAgIHVu
c2lnbmVkIHNpemUgPSBtYXRjaFJlcXVlc3QucnVsZVNldC0+cmVnaW9uU2VsZWN0b3JzQW5kUnVs
ZVNldHMoKS5zaXplKCk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7ICsraSkg
ewotICAgICAgICBjb25zdCBDU1NTZWxlY3RvciogcmVnaW9uU2VsZWN0b3IgPSBtYXRjaFJlcXVl
c3QucnVsZVNldC0+cmVnaW9uU2VsZWN0b3JzQW5kUnVsZVNldHMoKS5hdChpKS5zZWxlY3RvcjsK
LSAgICAgICAgaWYgKGNoZWNrUmVnaW9uU2VsZWN0b3IocmVnaW9uU2VsZWN0b3IsIG1fcmVnaW9u
Rm9yU3R5bGluZy0+Z2VuZXJhdGluZ0VsZW1lbnQoKSkpIHsKLSAgICAgICAgICAgIFJ1bGVTZXQq
IHJlZ2lvblJ1bGVzID0gbWF0Y2hSZXF1ZXN0LnJ1bGVTZXQtPnJlZ2lvblNlbGVjdG9yc0FuZFJ1
bGVTZXRzKCkuYXQoaSkucnVsZVNldC5nZXQoKTsKLSAgICAgICAgICAgIEFTU0VSVChyZWdpb25S
dWxlcyk7Ci0gICAgICAgICAgICBjb2xsZWN0TWF0Y2hpbmdSdWxlcyhNYXRjaFJlcXVlc3QocmVn
aW9uUnVsZXMsIG1hdGNoUmVxdWVzdC5pbmNsdWRlRW1wdHlSdWxlcyksIHJ1bGVSYW5nZSk7Ci0g
ICAgICAgIH0KLSAgICB9Ci19Ci0KIHZvaWQgRWxlbWVudFJ1bGVDb2xsZWN0b3I6OnNvcnRBbmRU
cmFuc2Zlck1hdGNoZWRSdWxlcygpCiB7CiAgICAgaWYgKG1fbWF0Y2hlZFJ1bGVzLmlzRW1wdHko
KSkKQEAgLTIwOCw3ICsxOTEsNiBAQCB2b2lkIEVsZW1lbnRSdWxlQ29sbGVjdG9yOjptYXRjaEF1
dGhvclJ1CiAgICAgewogICAgICAgICBNYXRjaFJlcXVlc3QgbWF0Y2hSZXF1ZXN0KCZtX2F1dGhv
clN0eWxlLCBpbmNsdWRlRW1wdHlSdWxlcyk7CiAgICAgICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVz
KG1hdGNoUmVxdWVzdCwgcnVsZVJhbmdlKTsKLSAgICAgICAgY29sbGVjdE1hdGNoaW5nUnVsZXNG
b3JSZWdpb24obWF0Y2hSZXF1ZXN0LCBydWxlUmFuZ2UpOwogICAgIH0KIAogICAgIGF1dG8qIHBh
cmVudCA9IG1fZWxlbWVudC5wYXJlbnRFbGVtZW50KCk7CkBAIC0zMjcsNyArMzA5LDYgQEAgdm9p
ZCBFbGVtZW50UnVsZUNvbGxlY3Rvcjo6bWF0Y2hVc2VyUnVsZQogICAgIE1hdGNoUmVxdWVzdCBt
YXRjaFJlcXVlc3QobV91c2VyU3R5bGUsIGluY2x1ZGVFbXB0eVJ1bGVzKTsKICAgICBTdHlsZVJl
c29sdmVyOjpSdWxlUmFuZ2UgcnVsZVJhbmdlID0gbV9yZXN1bHQucmFuZ2VzLnVzZXJSdWxlUmFu
Z2UoKTsKICAgICBjb2xsZWN0TWF0Y2hpbmdSdWxlcyhtYXRjaFJlcXVlc3QsIHJ1bGVSYW5nZSk7
Ci0gICAgY29sbGVjdE1hdGNoaW5nUnVsZXNGb3JSZWdpb24obWF0Y2hSZXF1ZXN0LCBydWxlUmFu
Z2UpOwogCiAgICAgc29ydEFuZFRyYW5zZmVyTWF0Y2hlZFJ1bGVzKCk7CiB9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9jc3MvRWxlbWVudFJ1bGVDb2xsZWN0b3IuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9jc3MvRWxlbWVudFJ1bGVDb2xsZWN0b3IuaAkocmV2aXNpb24gMjIyMjU3KQor
KysgU291cmNlL1dlYkNvcmUvY3NzL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTMyLDcgKzMyLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBEb2N1bWVu
dFJ1bGVTZXRzOwogY2xhc3MgTWF0Y2hSZXF1ZXN0OwotY2xhc3MgUmVuZGVyUmVnaW9uOwogY2xh
c3MgUnVsZURhdGE7CiBjbGFzcyBSdWxlU2V0OwogY2xhc3MgU2VsZWN0b3JGaWx0ZXI7CkBAIC01
Niw3ICs1NSw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE1vZGUoU2VsZWN0b3JDaGVja2VyOjpN
b2RlIG1vZGUpIHsgbV9tb2RlID0gbW9kZTsgfQogICAgIHZvaWQgc2V0UHNldWRvU3R5bGVSZXF1
ZXN0KGNvbnN0IFBzZXVkb1N0eWxlUmVxdWVzdCYgcmVxdWVzdCkgeyBtX3BzZXVkb1N0eWxlUmVx
dWVzdCA9IHJlcXVlc3Q7IH0KICAgICB2b2lkIHNldFNhbWVPcmlnaW5Pbmx5KGJvb2wgZikgeyBt
X3NhbWVPcmlnaW5Pbmx5ID0gZjsgfSAKLSAgICB2b2lkIHNldFJlZ2lvbkZvclN0eWxpbmcoY29u
c3QgUmVuZGVyUmVnaW9uKiByZWdpb25Gb3JTdHlsaW5nKSB7IG1fcmVnaW9uRm9yU3R5bGluZyA9
IHJlZ2lvbkZvclN0eWxpbmc7IH0KICAgICB2b2lkIHNldE1lZGl1bShjb25zdCBNZWRpYVF1ZXJ5
RXZhbHVhdG9yKiBtZWRpdW0pIHsgbV9pc1ByaW50U3R5bGUgPSBtZWRpdW0tPm1lZGlhVHlwZU1h
dGNoU3BlY2lmaWMoInByaW50Iik7IH0KIAogICAgIGJvb2wgaGFzQW55TWF0Y2hpbmdSdWxlcyhj
b25zdCBSdWxlU2V0Kik7CkBAIC04Myw3ICs4MSw2IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlx
dWVfcHRyPFJ1bGVTZXQ6OlJ1bGVEYXRhVmVjdG9yPiBjb2xsZWN0U2xvdHRlZFBzZXVkb0VsZW1l
bnRSdWxlc0ZvclNsb3QoYm9vbCBpbmNsdWRlRW1wdHlSdWxlcyk7CiAKICAgICB2b2lkIGNvbGxl
Y3RNYXRjaGluZ1J1bGVzKGNvbnN0IE1hdGNoUmVxdWVzdCYsIFN0eWxlUmVzb2x2ZXI6OlJ1bGVS
YW5nZSYpOwotICAgIHZvaWQgY29sbGVjdE1hdGNoaW5nUnVsZXNGb3JSZWdpb24oY29uc3QgTWF0
Y2hSZXF1ZXN0JiwgU3R5bGVSZXNvbHZlcjo6UnVsZVJhbmdlJik7CiAgICAgdm9pZCBjb2xsZWN0
TWF0Y2hpbmdSdWxlc0Zvckxpc3QoY29uc3QgUnVsZVNldDo6UnVsZURhdGFWZWN0b3IqLCBjb25z
dCBNYXRjaFJlcXVlc3QmLCBTdHlsZVJlc29sdmVyOjpSdWxlUmFuZ2UmKTsKICAgICBib29sIHJ1
bGVNYXRjaGVzKGNvbnN0IFJ1bGVEYXRhJiwgdW5zaWduZWQgJnNwZWNpZmljaXR5KTsKIApAQCAt
OTgsNyArOTUsNiBAQCBwcml2YXRlOgogICAgIGNvbnN0IFNlbGVjdG9yRmlsdGVyKiBtX3NlbGVj
dG9yRmlsdGVyIHsgbnVsbHB0ciB9OwogCiAgICAgYm9vbCBtX2lzUHJpbnRTdHlsZSB7IGZhbHNl
IH07Ci0gICAgY29uc3QgUmVuZGVyUmVnaW9uKiBtX3JlZ2lvbkZvclN0eWxpbmcgeyBudWxscHRy
IH07CiAgICAgUHNldWRvU3R5bGVSZXF1ZXN0IG1fcHNldWRvU3R5bGVSZXF1ZXN0IHsgTk9QU0VV
RE8gfTsKICAgICBib29sIG1fc2FtZU9yaWdpbk9ubHkgeyBmYWxzZSB9OwogICAgIFNlbGVjdG9y
Q2hlY2tlcjo6TW9kZSBtX21vZGUgeyBTZWxlY3RvckNoZWNrZXI6Ok1vZGU6OlJlc29sdmluZ1N0
eWxlIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvSW5zcGVjdG9yQ1NTT01XcmFwcGVycy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0luc3BlY3RvckNTU09NV3JhcHBl
cnMuY3BwCShyZXZpc2lvbiAyMjIyNTcpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvSW5zcGVjdG9y
Q1NTT01XcmFwcGVycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDYgQEAKICNpbmNs
dWRlICJFeHRlbnNpb25TdHlsZVNoZWV0cy5oIgogI2luY2x1ZGUgIlN0eWxlU2NvcGUuaCIKICNp
bmNsdWRlICJTdHlsZVNoZWV0Q29udGVudHMuaCIKLSNpbmNsdWRlICJXZWJLaXRDU1NSZWdpb25S
dWxlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNjcsMTEgKzY2LDYgQEAgdm9pZCBJ
bnNwZWN0b3JDU1NPTVdyYXBwZXJzOjpjb2xsZWN0KExpcwogICAgICAgICBjYXNlIENTU1J1bGU6
OlNVUFBPUlRTX1JVTEU6CiAgICAgICAgICAgICBjb2xsZWN0KGRvd25jYXN0PENTU1N1cHBvcnRz
UnVsZT4oY3NzUnVsZSkpOwogICAgICAgICAgICAgYnJlYWs7Ci0jaWYgRU5BQkxFKENTU19SRUdJ
T05TKQotICAgICAgICBjYXNlIENTU1J1bGU6OldFQktJVF9SRUdJT05fUlVMRToKLSAgICAgICAg
ICAgIGNvbGxlY3QoZG93bmNhc3Q8V2ViS2l0Q1NTUmVnaW9uUnVsZT4oY3NzUnVsZSkpOwotICAg
ICAgICAgICAgYnJlYWs7Ci0jZW5kaWYKICAgICAgICAgY2FzZSBDU1NSdWxlOjpTVFlMRV9SVUxF
OgogICAgICAgICAgICAgbV9zdHlsZVJ1bGVUb0NTU09NV3JhcHBlck1hcC5hZGQoJmRvd25jYXN0
PENTU1N0eWxlUnVsZT4oKmNzc1J1bGUpLnN0eWxlUnVsZSgpLCBkb3duY2FzdDxDU1NTdHlsZVJ1
bGU+KGNzc1J1bGUpKTsKICAgICAgICAgICAgIGJyZWFrOwpJbmRleDogU291cmNlL1dlYkNvcmUv
Y3NzL1J1bGVTZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlU2V0
LmNwcAkocmV2aXNpb24gMjIyMjU3KQorKysgU291cmNlL1dlYkNvcmUvY3NzL1J1bGVTZXQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMzUsMTAgKzEzNSw4IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBj
b250YWluc1VuY29tbW9uQXR0cmkKICAgICByZXR1cm4gY29udGFpbnNVbmNvbW1vbkF0dHJpYnV0
ZVNlbGVjdG9yKHJvb3RTZWxlY3RvciwgdHJ1ZSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgUHJvcGVy
dHlXaGl0ZWxpc3RUeXBlIGRldGVybWluZVByb3BlcnR5V2hpdGVsaXN0VHlwZShjb25zdCBBZGRS
dWxlRmxhZ3MgYWRkUnVsZUZsYWdzLCBjb25zdCBDU1NTZWxlY3Rvciogc2VsZWN0b3IpCitzdGF0
aWMgaW5saW5lIFByb3BlcnR5V2hpdGVsaXN0VHlwZSBkZXRlcm1pbmVQcm9wZXJ0eVdoaXRlbGlz
dFR5cGUoY29uc3QgQ1NTU2VsZWN0b3IqIHNlbGVjdG9yKQogewotICAgIGlmIChhZGRSdWxlRmxh
Z3MgJiBSdWxlSXNJblJlZ2lvblJ1bGUpCi0gICAgICAgIHJldHVybiBQcm9wZXJ0eVdoaXRlbGlz
dFJlZ2lvbjsKICAgICBmb3IgKGNvbnN0IENTU1NlbGVjdG9yKiBjb21wb25lbnQgPSBzZWxlY3Rv
cjsgY29tcG9uZW50OyBjb21wb25lbnQgPSBjb21wb25lbnQtPnRhZ0hpc3RvcnkoKSkgewogI2lm
IEVOQUJMRShWSURFT19UUkFDSykKICAgICAgICAgaWYgKGNvbXBvbmVudC0+bWF0Y2goKSA9PSBD
U1NTZWxlY3Rvcjo6UHNldWRvRWxlbWVudCAmJiAoY29tcG9uZW50LT5wc2V1ZG9FbGVtZW50VHlw
ZSgpID09IENTU1NlbGVjdG9yOjpQc2V1ZG9FbGVtZW50Q3VlIHx8IGNvbXBvbmVudC0+dmFsdWUo
KSA9PSBUZXh0VHJhY2tDdWU6OmN1ZVNoYWRvd1BzZXVkb0lkKCkpKQpAQCAtMTU5LDcgKzE1Nyw3
IEBAIFJ1bGVEYXRhOjpSdWxlRGF0YShTdHlsZVJ1bGUqIHJ1bGUsIHVuc2kKICAgICAsIG1fY2Fu
TWF0Y2hQc2V1ZG9FbGVtZW50KHNlbGVjdG9yQ2FuTWF0Y2hQc2V1ZG9FbGVtZW50KCpzZWxlY3Rv
cigpKSkKICAgICAsIG1fY29udGFpbnNVbmNvbW1vbkF0dHJpYnV0ZVNlbGVjdG9yKFdlYkNvcmU6
OmNvbnRhaW5zVW5jb21tb25BdHRyaWJ1dGVTZWxlY3Rvcigqc2VsZWN0b3IoKSkpCiAgICAgLCBt
X2xpbmtNYXRjaFR5cGUoU2VsZWN0b3JDaGVja2VyOjpkZXRlcm1pbmVMaW5rTWF0Y2hUeXBlKHNl
bGVjdG9yKCkpKQotICAgICwgbV9wcm9wZXJ0eVdoaXRlbGlzdFR5cGUoZGV0ZXJtaW5lUHJvcGVy
dHlXaGl0ZWxpc3RUeXBlKGFkZFJ1bGVGbGFncywgc2VsZWN0b3IoKSkpCisgICAgLCBtX3Byb3Bl
cnR5V2hpdGVsaXN0VHlwZShkZXRlcm1pbmVQcm9wZXJ0eVdoaXRlbGlzdFR5cGUoc2VsZWN0b3Io
KSkpCiAjaWYgRU5BQkxFKENTU19TRUxFQ1RPUl9KSVQpICYmIENTU19TRUxFQ1RPUl9KSVRfUFJP
RklMSU5HCiAgICAgLCBtX2NvbXBpbGVkU2VsZWN0b3JVc2VDb3VudCgwKQogI2VuZGlmCkBAIC0z
NjYsMjkgKzM2NCw2IEBAIHZvaWQgUnVsZVNldDo6YWRkUGFnZVJ1bGUoU3R5bGVSdWxlUGFnZSoK
ICAgICBtX3BhZ2VSdWxlcy5hcHBlbmQocnVsZSk7CiB9CiAKLXZvaWQgUnVsZVNldDo6YWRkUmVn
aW9uUnVsZShTdHlsZVJ1bGVSZWdpb24qIHJlZ2lvblJ1bGUsIGJvb2wgaGFzRG9jdW1lbnRTZWN1
cml0eU9yaWdpbikKLXsKLSAgICBhdXRvIHJlZ2lvblJ1bGVTZXQgPSBzdGQ6Om1ha2VfdW5pcXVl
PFJ1bGVTZXQ+KCk7Ci0gICAgLy8gVGhlIHJlZ2lvbiBydWxlIHNldCBzaG91bGQgdGFrZSBpbnRv
IGFjY291bnQgdGhlIHBvc2l0aW9uIGluc2lkZSB0aGUgcGFyZW50IHJ1bGUgc2V0LgotICAgIC8v
IE90aGVyd2lzZSwgdGhlIHJ1bGVzIGluc2lkZSByZWdpb24gYmxvY2sgbWlnaHQgYmUgaW5jb3Jy
ZWN0bHkgcG9zaXRpb25lZCBiZWZvcmUgb3RoZXIgc2ltaWxhciBydWxlcyBmcm9tCi0gICAgLy8g
dGhlIHN0eWxlc2hlZXQgdGhhdCBjb250YWlucyB0aGUgcmVnaW9uIGJsb2NrLgotICAgIHJlZ2lv
blJ1bGVTZXQtPm1fcnVsZUNvdW50ID0gbV9ydWxlQ291bnQ7Ci0KLSAgICAvLyBDb2xsZWN0IHRo
ZSByZWdpb24gcnVsZXMgaW50byBhIHJ1bGUgc2V0Ci0gICAgLy8gRklYTUU6IFNob3VsZCB0aGlz
IGFkZCBvdGhlciB0eXBlcyBvZiBydWxlcz8gKGkuZS4gdXNlIGFkZENoaWxkUnVsZXMoKSBkaXJl
Y3RseT8pCi0gICAgY29uc3QgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGVCYXNlPj4mIGNoaWxkUnVs
ZXMgPSByZWdpb25SdWxlLT5jaGlsZFJ1bGVzKCk7Ci0gICAgQWRkUnVsZUZsYWdzIGFkZFJ1bGVG
bGFncyA9IGhhc0RvY3VtZW50U2VjdXJpdHlPcmlnaW4gPyBSdWxlSGFzRG9jdW1lbnRTZWN1cml0
eU9yaWdpbiA6IFJ1bGVIYXNOb1NwZWNpYWxTdGF0ZTsKLSAgICBhZGRSdWxlRmxhZ3MgPSBzdGF0
aWNfY2FzdDxBZGRSdWxlRmxhZ3M+KGFkZFJ1bGVGbGFncyB8IFJ1bGVJc0luUmVnaW9uUnVsZSk7
Ci0gICAgZm9yIChhdXRvJiBjaGlsZFJ1bGUgOiBjaGlsZFJ1bGVzKSB7Ci0gICAgICAgIGlmIChp
czxTdHlsZVJ1bGU+KCpjaGlsZFJ1bGUpKQotICAgICAgICAgICAgcmVnaW9uUnVsZVNldC0+YWRk
U3R5bGVSdWxlKGRvd25jYXN0PFN0eWxlUnVsZT4oY2hpbGRSdWxlLmdldCgpKSwgYWRkUnVsZUZs
YWdzKTsKLSAgICB9Ci0gICAgLy8gVXBkYXRlIHRoZSAiZ2xvYmFsIiBydWxlIGNvdW50IHNvIHRo
YXQgcHJvcGVyIG9yZGVyIGlzIG1haW50YWluZWQKLSAgICBtX3J1bGVDb3VudCA9IHJlZ2lvblJ1
bGVTZXQtPm1fcnVsZUNvdW50OwotCi0gICAgbV9yZWdpb25TZWxlY3RvcnNBbmRSdWxlU2V0cy5h
cHBlbmQoUnVsZVNldFNlbGVjdG9yUGFpcihyZWdpb25SdWxlLT5zZWxlY3Rvckxpc3QoKS5maXJz
dCgpLCBXVEZNb3ZlKHJlZ2lvblJ1bGVTZXQpKSk7Ci19Ci0KIHZvaWQgUnVsZVNldDo6YWRkQ2hp
bGRSdWxlcyhjb25zdCBWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZUJhc2U+PiYgcnVsZXMsIGNvbnN0
IE1lZGlhUXVlcnlFdmFsdWF0b3ImIG1lZGl1bSwgU3R5bGVSZXNvbHZlciogcmVzb2x2ZXIsIGJv
b2wgaGFzRG9jdW1lbnRTZWN1cml0eU9yaWdpbiwgYm9vbCBpc0luaXRpYXRpbmdFbGVtZW50SW5V
c2VyQWdlbnRTaGFkb3dUcmVlLCBBZGRSdWxlRmxhZ3MgYWRkUnVsZUZsYWdzKQogewogICAgIGZv
ciAoYXV0byYgcnVsZSA6IHJ1bGVzKSB7CkBAIC00MDgsMTEgKzM4Myw2IEBAIHZvaWQgUnVsZVNl
dDo6YWRkQ2hpbGRSdWxlcyhjb25zdCBWZWN0b3IKICAgICAgICAgICAgIHJlc29sdmVyLT5hZGRL
ZXlmcmFtZVN0eWxlKGRvd25jYXN0PFN0eWxlUnVsZUtleWZyYW1lcz4oKnJ1bGUpKTsKICAgICAg
ICAgZWxzZSBpZiAoaXM8U3R5bGVSdWxlU3VwcG9ydHM+KCpydWxlKSAmJiBkb3duY2FzdDxTdHls
ZVJ1bGVTdXBwb3J0cz4oKnJ1bGUpLmNvbmRpdGlvbklzU3VwcG9ydGVkKCkpCiAgICAgICAgICAg
ICBhZGRDaGlsZFJ1bGVzKGRvd25jYXN0PFN0eWxlUnVsZVN1cHBvcnRzPigqcnVsZSkuY2hpbGRS
dWxlcygpLCBtZWRpdW0sIHJlc29sdmVyLCBoYXNEb2N1bWVudFNlY3VyaXR5T3JpZ2luLCBpc0lu
aXRpYXRpbmdFbGVtZW50SW5Vc2VyQWdlbnRTaGFkb3dUcmVlLCBhZGRSdWxlRmxhZ3MpOwotI2lm
IEVOQUJMRShDU1NfUkVHSU9OUykKLSAgICAgICAgZWxzZSBpZiAoaXM8U3R5bGVSdWxlUmVnaW9u
PigqcnVsZSkgJiYgcmVzb2x2ZXIpIHsKLSAgICAgICAgICAgIGFkZFJlZ2lvblJ1bGUoZG93bmNh
c3Q8U3R5bGVSdWxlUmVnaW9uPihydWxlLmdldCgpKSwgaGFzRG9jdW1lbnRTZWN1cml0eU9yaWdp
bik7Ci0gICAgICAgIH0KLSNlbmRpZgogI2lmIEVOQUJMRShDU1NfREVWSUNFX0FEQVBUQVRJT04p
CiAgICAgICAgIGVsc2UgaWYgKGlzPFN0eWxlUnVsZVZpZXdwb3J0PigqcnVsZSkgJiYgcmVzb2x2
ZXIpIHsKICAgICAgICAgICAgIHJlc29sdmVyLT52aWV3cG9ydFN0eWxlUmVzb2x2ZXIoKS0+YWRk
Vmlld3BvcnRSdWxlKGRvd25jYXN0PFN0eWxlUnVsZVZpZXdwb3J0PihydWxlLmdldCgpKSk7CkBA
IC00ODAsNyArNDUwLDYgQEAgdm9pZCBSdWxlU2V0OjpzaHJpbmtUb0ZpdCgpCiAgICAgbV91bml2
ZXJzYWxSdWxlcy5zaHJpbmtUb0ZpdCgpOwogICAgIG1fcGFnZVJ1bGVzLnNocmlua1RvRml0KCk7
CiAgICAgbV9mZWF0dXJlcy5zaHJpbmtUb0ZpdCgpOwotICAgIG1fcmVnaW9uU2VsZWN0b3JzQW5k
UnVsZVNldHMuc2hyaW5rVG9GaXQoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRl
eDogU291cmNlL1dlYkNvcmUvY3NzL1J1bGVTZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9jc3MvUnVsZVNldC5oCShyZXZpc2lvbiAyMjIyNTcpCisrKyBTb3VyY2UvV2ViQ29yZS9j
c3MvUnVsZVNldC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCwxMyArMzQsMTEgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogZW51bSBBZGRSdWxlRmxhZ3MgewogICAgIFJ1bGVIYXNOb1NwZWNpYWxTdGF0
ZSAgICAgICAgID0gMCwKICAgICBSdWxlSGFzRG9jdW1lbnRTZWN1cml0eU9yaWdpbiA9IDEsCi0g
ICAgUnVsZUlzSW5SZWdpb25SdWxlICAgICAgICAgICAgPSAxIDw8IDEsCiB9OwogICAgIAogZW51
bSBQcm9wZXJ0eVdoaXRlbGlzdFR5cGUgewogICAgIFByb3BlcnR5V2hpdGVsaXN0Tm9uZSAgID0g
MCwKICAgICBQcm9wZXJ0eVdoaXRlbGlzdE1hcmtlciwKLSAgICBQcm9wZXJ0eVdoaXRlbGlzdFJl
Z2lvbiwKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAgICAgUHJvcGVydHlXaGl0ZWxpc3RDdWUK
ICNlbmRpZgpAQCAtNTEsNyArNDksNiBAQCBjbGFzcyBDb250YWluZXJOb2RlOwogY2xhc3MgTWVk
aWFRdWVyeUV2YWx1YXRvcjsKIGNsYXNzIE5vZGU7CiBjbGFzcyBTdHlsZVJlc29sdmVyOwotY2xh
c3MgU3R5bGVSdWxlUmVnaW9uOwogY2xhc3MgU3R5bGVTaGVldENvbnRlbnRzOwogCiBlbnVtIGNs
YXNzIE1hdGNoQmFzZWRPblJ1bGVIYXNoIDogdW5zaWduZWQgewpAQCAtMTY3LDcgKzE2NCw2IEBA
IHB1YmxpYzoKICAgICB2b2lkIGFkZFJ1bGUoU3R5bGVSdWxlKiwgdW5zaWduZWQgc2VsZWN0b3JJ
bmRleCwgQWRkUnVsZUZsYWdzKTsKICAgICB2b2lkIGFkZFBhZ2VSdWxlKFN0eWxlUnVsZVBhZ2Uq
KTsKICAgICB2b2lkIGFkZFRvUnVsZVNldChjb25zdCBBdG9taWNTdHJpbmcmIGtleSwgQXRvbVJ1
bGVNYXAmLCBjb25zdCBSdWxlRGF0YSYpOwotICAgIHZvaWQgYWRkUmVnaW9uUnVsZShTdHlsZVJ1
bGVSZWdpb24qLCBib29sIGhhc0RvY3VtZW50U2VjdXJpdHlPcmlnaW4pOwogICAgIHZvaWQgc2hy
aW5rVG9GaXQoKTsKICAgICB2b2lkIGRpc2FibGVBdXRvU2hyaW5rVG9GaXQoKSB7IG1fYXV0b1No
cmlua1RvRml0RW5hYmxlZCA9IGZhbHNlOyB9CiAKQEAgLTE4Nyw3ICsxODMsNiBAQCBwdWJsaWM6
CiAgICAgY29uc3QgUnVsZURhdGFWZWN0b3IqIHVuaXZlcnNhbFJ1bGVzKCkgY29uc3QgeyByZXR1
cm4gJm1fdW5pdmVyc2FsUnVsZXM7IH0KIAogICAgIGNvbnN0IFZlY3RvcjxTdHlsZVJ1bGVQYWdl
Kj4mIHBhZ2VSdWxlcygpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZVJ1bGVzOyB9Ci0gICAgY29uc3Qg
VmVjdG9yPFJ1bGVTZXRTZWxlY3RvclBhaXI+JiByZWdpb25TZWxlY3RvcnNBbmRSdWxlU2V0cygp
IGNvbnN0IHsgcmV0dXJuIG1fcmVnaW9uU2VsZWN0b3JzQW5kUnVsZVNldHM7IH0KIAogICAgIHVu
c2lnbmVkIHJ1bGVDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fcnVsZUNvdW50OyB9CiAKQEAgLTIx
NSw3ICsyMTAsNiBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9oYXNIb3N0UHNldWRvQ2xhc3NSdWxl
c01hdGNoaW5nSW5TaGFkb3dUcmVlIHsgZmFsc2UgfTsKICAgICBib29sIG1fYXV0b1Nocmlua1Rv
Rml0RW5hYmxlZCB7IHRydWUgfTsKICAgICBSdWxlRmVhdHVyZVNldCBtX2ZlYXR1cmVzOwotICAg
IFZlY3RvcjxSdWxlU2V0U2VsZWN0b3JQYWlyPiBtX3JlZ2lvblNlbGVjdG9yc0FuZFJ1bGVTZXRz
OwogfTsKIAogaW5saW5lIGNvbnN0IFJ1bGVTZXQ6OlJ1bGVEYXRhVmVjdG9yKiBSdWxlU2V0Ojp0
YWdSdWxlcyhjb25zdCBBdG9taWNTdHJpbmcmIGtleSwgYm9vbCBpc0hUTUxOYW1lKSBjb25zdApJ
bmRleDogU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaAkocmV2aXNp
b24gMjIyMjU3KQorKysgU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckNvbnZlcnRlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xNDMsMTEgKzE0Myw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
QnJlYWtJbnNpZGUgY29udmVydFBhZ2VCcmVha0luc2lkZShTdHlsZVJlc29sdmVyJiwgY29uc3Qg
Q1NTVmFsdWUmKTsKICAgICBzdGF0aWMgQnJlYWtCZXR3ZWVuIGNvbnZlcnRDb2x1bW5CcmVha0Jl
dHdlZW4oU3R5bGVSZXNvbHZlciYsIGNvbnN0IENTU1ZhbHVlJik7CiAgICAgc3RhdGljIEJyZWFr
SW5zaWRlIGNvbnZlcnRDb2x1bW5CcmVha0luc2lkZShTdHlsZVJlc29sdmVyJiwgY29uc3QgQ1NT
VmFsdWUmKTsKLSNpZiBFTkFCTEUoQ1NTX1JFR0lPTlMpCi0gICAgc3RhdGljIEJyZWFrQmV0d2Vl
biBjb252ZXJ0UmVnaW9uQnJlYWtCZXR3ZWVuKFN0eWxlUmVzb2x2ZXImLCBjb25zdCBDU1NWYWx1
ZSYpOwotICAgIHN0YXRpYyBCcmVha0luc2lkZSBjb252ZXJ0UmVnaW9uQnJlYWtJbnNpZGUoU3R5
bGVSZXNvbHZlciYsIGNvbnN0IENTU1ZhbHVlJik7Ci0jZW5kaWYKLSAgICAKKwogICAgIHN0YXRp
YyBIYW5naW5nUHVuY3R1YXRpb24gY29udmVydEhhbmdpbmdQdW5jdHVhdGlvbihTdHlsZVJlc29s
dmVyJiwgY29uc3QgQ1NTVmFsdWUmKTsKIAogICAgIHN0YXRpYyBMZW5ndGggY29udmVydFBvc2l0
aW9uQ29tcG9uZW50WChTdHlsZVJlc29sdmVyJiwgY29uc3QgQ1NTVmFsdWUmKTsKQEAgLTE1MjAs
MjYgKzE1MTYsNiBAQCBpbmxpbmUgQnJlYWtJbnNpZGUgU3R5bGVCdWlsZGVyQ29udmVydGVyCiAg
ICAgcmV0dXJuIHByaW1pdGl2ZVZhbHVlOwogfQogCi0jaWYgRU5BQkxFKENTU19SRUdJT05TKQot
aW5saW5lIEJyZWFrQmV0d2VlbiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRSZWdpb25C
cmVha0JldHdlZW4oU3R5bGVSZXNvbHZlciYsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKLXsKLSAg
ICBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1
ZSk7Ci0gICAgaWYgKHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZUFsd2F5cykK
LSAgICAgICAgcmV0dXJuIFJlZ2lvbkJyZWFrQmV0d2VlbjsKLSAgICBpZiAocHJpbWl0aXZlVmFs
dWUudmFsdWVJRCgpID09IENTU1ZhbHVlQXZvaWQpCi0gICAgICAgIHJldHVybiBBdm9pZFJlZ2lv
bkJyZWFrQmV0d2VlbjsKLSAgICByZXR1cm4gcHJpbWl0aXZlVmFsdWU7Ci19Ci0KLWlubGluZSBC
cmVha0luc2lkZSBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRSZWdpb25CcmVha0luc2lk
ZShTdHlsZVJlc29sdmVyJiwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQotewotICAgIGF1dG8mIHBy
aW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsKLSAgICBp
ZiAocHJpbWl0aXZlVmFsdWUudmFsdWVJRCgpID09IENTU1ZhbHVlQXZvaWQpCi0gICAgICAgIHJl
dHVybiBBdm9pZFJlZ2lvbkJyZWFrSW5zaWRlOwotICAgIHJldHVybiBwcmltaXRpdmVWYWx1ZTsK
LX0KLSNlbmRpZgotCiBpbmxpbmUgSGFuZ2luZ1B1bmN0dWF0aW9uIFN0eWxlQnVpbGRlckNvbnZl
cnRlcjo6Y29udmVydEhhbmdpbmdQdW5jdHVhdGlvbihTdHlsZVJlc29sdmVyJiwgY29uc3QgQ1NT
VmFsdWUmIHZhbHVlKQogewogICAgIEhhbmdpbmdQdW5jdHVhdGlvbiByZXN1bHQgPSBSZW5kZXJT
dHlsZTo6aW5pdGlhbEhhbmdpbmdQdW5jdHVhdGlvbigpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
Y3NzL1N0eWxlUHJvcGVydGllcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3Nz
L1N0eWxlUHJvcGVydGllcy5jcHAJKHJldmlzaW9uIDIyMjI1NykKKysrIFNvdXJjZS9XZWJDb3Jl
L2Nzcy9TdHlsZVByb3BlcnRpZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTkxLDExICsxMTkx
LDYgQEAgc3RhdGljIGNvbnN0IENTU1Byb3BlcnR5SUQgYmxvY2tQcm9wZXJ0aQogICAgIENTU1By
b3BlcnR5UGFnZUJyZWFrQWZ0ZXIsCiAgICAgQ1NTUHJvcGVydHlQYWdlQnJlYWtCZWZvcmUsCiAg
ICAgQ1NTUHJvcGVydHlQYWdlQnJlYWtJbnNpZGUsCi0jaWYgRU5BQkxFKENTU19SRUdJT05TKQot
ICAgIENTU1Byb3BlcnR5V2Via2l0UmVnaW9uQnJlYWtBZnRlciwKLSAgICBDU1NQcm9wZXJ0eVdl
YmtpdFJlZ2lvbkJyZWFrQmVmb3JlLAotICAgIENTU1Byb3BlcnR5V2Via2l0UmVnaW9uQnJlYWtJ
bnNpZGUsCi0jZW5kaWYKICAgICBDU1NQcm9wZXJ0eVRleHRBbGlnbiwKICNpZiBFTkFCTEUoQ1NT
M19URVhUKQogICAgIENTU1Byb3BlcnR5V2Via2l0VGV4dEFsaWduTGFzdCwKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAJKHJldmlzaW9uIDIyMjI1NykKKysrIFNvdXJjZS9X
ZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzUsNyArNzUs
NiBAQAogI2luY2x1ZGUgIk5vZGVSZW5kZXJTdHlsZS5oIgogI2luY2x1ZGUgIlBhZ2VSdWxlQ29s
bGVjdG9yLmgiCiAjaW5jbHVkZSAiUGFpci5oIgotI2luY2x1ZGUgIlJlbmRlclJlZ2lvbi5oIgog
I2luY2x1ZGUgIlJlbmRlclNjcm9sbGJhci5oIgogI2luY2x1ZGUgIlJlbmRlclN0eWxlQ29uc3Rh
bnRzLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIKQEAgLTE0MSw3ICsxNDAsNiBAQCBpbmxp
bmUgdm9pZCBTdHlsZVJlc29sdmVyOjpTdGF0ZTo6Y2xlYXIoCiAgICAgbV9lbGVtZW50ID0gbnVs
bHB0cjsKICAgICBtX3BhcmVudFN0eWxlID0gbnVsbHB0cjsKICAgICBtX293bmVkUGFyZW50U3R5
bGUgPSBudWxscHRyOwotICAgIG1fcmVnaW9uRm9yU3R5bGluZyA9IG51bGxwdHI7CiAgICAgbV9j
c3NUb0xlbmd0aENvbnZlcnNpb25EYXRhID0gQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSgpOwog
fQogCkBAIC0yOTgsMTAgKzI5Niw5IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6c3dlZXBNYXRjaGVk
UHJvcGVydGkKICAgICBtX21hdGNoZWRQcm9wZXJ0aWVzQ2FjaGVBZGRpdGlvbnNTaW5jZUxhc3RT
d2VlcCA9IDA7CiB9CiAKLVN0eWxlUmVzb2x2ZXI6OlN0YXRlOjpTdGF0ZShjb25zdCBFbGVtZW50
JiBlbGVtZW50LCBjb25zdCBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0
eWxlKiBkb2N1bWVudEVsZW1lbnRTdHlsZSwgY29uc3QgUmVuZGVyUmVnaW9uKiByZWdpb25Gb3JT
dHlsaW5nLCBjb25zdCBTZWxlY3RvckZpbHRlciogc2VsZWN0b3JGaWx0ZXIpCitTdHlsZVJlc29s
dmVyOjpTdGF0ZTo6U3RhdGUoY29uc3QgRWxlbWVudCYgZWxlbWVudCwgY29uc3QgUmVuZGVyU3R5
bGUqIHBhcmVudFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSogZG9jdW1lbnRFbGVtZW50U3R5bGUs
IGNvbnN0IFNlbGVjdG9yRmlsdGVyKiBzZWxlY3RvckZpbHRlcikKICAgICA6IG1fZWxlbWVudCgm
ZWxlbWVudCkKICAgICAsIG1fcGFyZW50U3R5bGUocGFyZW50U3R5bGUpCi0gICAgLCBtX3JlZ2lv
bkZvclN0eWxpbmcocmVnaW9uRm9yU3R5bGluZykKICAgICAsIG1fZWxlbWVudExpbmtTdGF0ZShl
bGVtZW50LmRvY3VtZW50KCkudmlzaXRlZExpbmtTdGF0ZSgpLmRldGVybWluZUxpbmtTdGF0ZShl
bGVtZW50KSkKICAgICAsIG1fc2VsZWN0b3JGaWx0ZXIoc2VsZWN0b3JGaWx0ZXIpCiB7CkBAIC0z
NDIsMTEgKzMzOSwxMSBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNBdFNoYWRvd0JvdW5kYXJ5KGNv
CiAgICAgcmV0dXJuIHBhcmVudE5vZGUgJiYgcGFyZW50Tm9kZS0+aXNTaGFkb3dSb290KCk7CiB9
CiAKLUVsZW1lbnRTdHlsZSBTdHlsZVJlc29sdmVyOjpzdHlsZUZvckVsZW1lbnQoY29uc3QgRWxl
bWVudCYgZWxlbWVudCwgY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlLCBjb25zdCBSZW5k
ZXJTdHlsZSogcGFyZW50Qm94U3R5bGUsIFJ1bGVNYXRjaGluZ0JlaGF2aW9yIG1hdGNoaW5nQmVo
YXZpb3IsIGNvbnN0IFJlbmRlclJlZ2lvbiogcmVnaW9uRm9yU3R5bGluZywgY29uc3QgU2VsZWN0
b3JGaWx0ZXIqIHNlbGVjdG9yRmlsdGVyKQorRWxlbWVudFN0eWxlIFN0eWxlUmVzb2x2ZXI6OnN0
eWxlRm9yRWxlbWVudChjb25zdCBFbGVtZW50JiBlbGVtZW50LCBjb25zdCBSZW5kZXJTdHlsZSog
cGFyZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKiBwYXJlbnRCb3hTdHlsZSwgUnVsZU1hdGNo
aW5nQmVoYXZpb3IgbWF0Y2hpbmdCZWhhdmlvciwgY29uc3QgU2VsZWN0b3JGaWx0ZXIqIHNlbGVj
dG9yRmlsdGVyKQogewogICAgIFJFTEVBU0VfQVNTRVJUKCFtX2lzRGVsZXRlZCk7CiAKLSAgICBt
X3N0YXRlID0gU3RhdGUoZWxlbWVudCwgcGFyZW50U3R5bGUsIG1fb3ZlcnJpZGVEb2N1bWVudEVs
ZW1lbnRTdHlsZSwgcmVnaW9uRm9yU3R5bGluZywgc2VsZWN0b3JGaWx0ZXIpOworICAgIG1fc3Rh
dGUgPSBTdGF0ZShlbGVtZW50LCBwYXJlbnRTdHlsZSwgbV9vdmVycmlkZURvY3VtZW50RWxlbWVu
dFN0eWxlLCBzZWxlY3RvckZpbHRlcik7CiAgICAgU3RhdGUmIHN0YXRlID0gbV9zdGF0ZTsKIAog
ICAgIGlmIChzdGF0ZS5wYXJlbnRTdHlsZSgpKSB7CkBAIC0zNzMsNyArMzcwLDYgQEAgRWxlbWVu
dFN0eWxlIFN0eWxlUmVzb2x2ZXI6OnN0eWxlRm9yRWxlbQogICAgIENTU0RlZmF1bHRTdHlsZVNo
ZWV0czo6ZW5zdXJlRGVmYXVsdFN0eWxlU2hlZXRzRm9yRWxlbWVudChlbGVtZW50KTsKIAogICAg
IEVsZW1lbnRSdWxlQ29sbGVjdG9yIGNvbGxlY3RvcihlbGVtZW50LCBtX3J1bGVTZXRzLCBtX3N0
YXRlLnNlbGVjdG9yRmlsdGVyKCkpOwotICAgIGNvbGxlY3Rvci5zZXRSZWdpb25Gb3JTdHlsaW5n
KHJlZ2lvbkZvclN0eWxpbmcpOwogICAgIGNvbGxlY3Rvci5zZXRNZWRpdW0oJm1fbWVkaWFRdWVy
eUV2YWx1YXRvcik7CiAKICAgICBpZiAobWF0Y2hpbmdCZWhhdmlvciA9PSBNYXRjaE9ubHlVc2Vy
QWdlbnRSdWxlcykKQEAgLTEwNTksMjcgKzEwNTUsNiBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmFk
anVzdFJlbmRlclN0eWxlKFJlCiAgICAgfQogfQogCi1ib29sIFN0eWxlUmVzb2x2ZXI6OmNoZWNr
UmVnaW9uU3R5bGUoY29uc3QgRWxlbWVudCogcmVnaW9uRWxlbWVudCkKLXsKLSAgICB1bnNpZ25l
ZCBydWxlc1NpemUgPSBtX3J1bGVTZXRzLmF1dGhvclN0eWxlKCkucmVnaW9uU2VsZWN0b3JzQW5k
UnVsZVNldHMoKS5zaXplKCk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHJ1bGVzU2l6
ZTsgKytpKSB7Ci0gICAgICAgIEFTU0VSVChtX3J1bGVTZXRzLmF1dGhvclN0eWxlKCkucmVnaW9u
U2VsZWN0b3JzQW5kUnVsZVNldHMoKS5hdChpKS5ydWxlU2V0LmdldCgpKTsKLSAgICAgICAgaWYg
KGNoZWNrUmVnaW9uU2VsZWN0b3IobV9ydWxlU2V0cy5hdXRob3JTdHlsZSgpLnJlZ2lvblNlbGVj
dG9yc0FuZFJ1bGVTZXRzKCkuYXQoaSkuc2VsZWN0b3IsIHJlZ2lvbkVsZW1lbnQpKQotICAgICAg
ICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgaWYgKG1fcnVsZVNldHMudXNlclN0eWxl
KCkpIHsKLSAgICAgICAgcnVsZXNTaXplID0gbV9ydWxlU2V0cy51c2VyU3R5bGUoKS0+cmVnaW9u
U2VsZWN0b3JzQW5kUnVsZVNldHMoKS5zaXplKCk7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBydWxlc1NpemU7ICsraSkgewotICAgICAgICAgICAgQVNTRVJUKG1fcnVsZVNldHMu
dXNlclN0eWxlKCktPnJlZ2lvblNlbGVjdG9yc0FuZFJ1bGVTZXRzKCkuYXQoaSkucnVsZVNldC5n
ZXQoKSk7Ci0gICAgICAgICAgICBpZiAoY2hlY2tSZWdpb25TZWxlY3RvcihtX3J1bGVTZXRzLnVz
ZXJTdHlsZSgpLT5yZWdpb25TZWxlY3RvcnNBbmRSdWxlU2V0cygpLmF0KGkpLnNlbGVjdG9yLCBy
ZWdpb25FbGVtZW50KSkKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQot
ICAgIH0KLQotICAgIHJldHVybiBmYWxzZTsKLX0KLQogc3RhdGljIHZvaWQgY2hlY2tGb3JPcmll
bnRhdGlvbkNoYW5nZShSZW5kZXJTdHlsZSogc3R5bGUpCiB7CiAgICAgRm9udE9yaWVudGF0aW9u
IGZvbnRPcmllbnRhdGlvbjsKQEAgLTE1MDQsMjEgKzE0NzksNiBAQCBzdGF0aWMgaW5saW5lIGJv
b2wgaXNWYWxpZE1hcmtlclN0eWxlUHJvCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi0vLyBodHRw
Oi8vZGV2LnczLm9yZy9jc3N3Zy9jc3MzLXJlZ2lvbnMvI3RoZS1hdC1yZWdpb24tc3R5bGUtcnVs
ZQotLy8gRklYTUU6IEFkZCBpbmNyZW1lbnRhbCBzdXBwb3J0IGZvciBvdGhlciByZWdpb24gc3R5
bGluZyBwcm9wZXJ0aWVzLgotc3RhdGljIGlubGluZSBib29sIGlzVmFsaWRSZWdpb25TdHlsZVBy
b3BlcnR5KENTU1Byb3BlcnR5SUQgaWQpCi17Ci0gICAgc3dpdGNoIChpZCkgewotICAgIGNhc2Ug
Q1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3I6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUNvbG9yOgot
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBkZWZhdWx0OgotICAgICAgICBicmVhazsKLSAgICB9
Ci0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiBzdGF0
aWMgaW5saW5lIGJvb2wgaXNWYWxpZEN1ZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlJRCBpZCkK
IHsKQEAgLTIxNzksOCArMjEzOSw2IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6Q2FzY2FkZWRQcm9w
ZXJ0aWVzOjoKICAgICAgICAgfQogICAgICAgICBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQgPSBj
dXJyZW50LmlkKCk7CiAKLSAgICAgICAgaWYgKHByb3BlcnR5V2hpdGVsaXN0VHlwZSA9PSBQcm9w
ZXJ0eVdoaXRlbGlzdFJlZ2lvbiAmJiAhaXNWYWxpZFJlZ2lvblN0eWxlUHJvcGVydHkocHJvcGVy
dHlJRCkpCi0gICAgICAgICAgICBjb250aW51ZTsKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAg
ICAgICAgIGlmIChwcm9wZXJ0eVdoaXRlbGlzdFR5cGUgPT0gUHJvcGVydHlXaGl0ZWxpc3RDdWUg
JiYgIWlzVmFsaWRDdWVTdHlsZVByb3BlcnR5KHByb3BlcnR5SUQpKQogICAgICAgICAgICAgY29u
dGludWU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmgJKHJldmlzaW9uIDIyMjI1
NykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTYyLDcgKzYyLDYgQEAgY2xhc3MgS2V5ZnJhbWVMaXN0OwogY2xhc3MgS2V5ZnJhbWVWYWx1
ZTsKIGNsYXNzIE1lZGlhUXVlcnlFdmFsdWF0b3I7CiBjbGFzcyBOb2RlOwotY2xhc3MgUmVuZGVy
UmVnaW9uOwogY2xhc3MgUmVuZGVyU2Nyb2xsYmFyOwogY2xhc3MgUnVsZURhdGE7CiBjbGFzcyBS
dWxlU2V0OwpAQCAtNzYsNyArNzUsNiBAQCBjbGFzcyBTdHlsZVByb3BlcnRpZXM7CiBjbGFzcyBT
dHlsZVJ1bGU7CiBjbGFzcyBTdHlsZVJ1bGVLZXlmcmFtZXM7CiBjbGFzcyBTdHlsZVJ1bGVQYWdl
OwotY2xhc3MgU3R5bGVSdWxlUmVnaW9uOwogY2xhc3MgU3R5bGVTaGVldDsKIGNsYXNzIFN0eWxl
U2hlZXRMaXN0OwogY2xhc3MgU3R5bGVkRWxlbWVudDsKQEAgLTEzMSw3ICsxMjksNyBAQCBwdWJs
aWM6CiAgICAgU3R5bGVSZXNvbHZlcihEb2N1bWVudCYpOwogICAgIH5TdHlsZVJlc29sdmVyKCk7
CiAKLSAgICBFbGVtZW50U3R5bGUgc3R5bGVGb3JFbGVtZW50KGNvbnN0IEVsZW1lbnQmLCBjb25z
dCBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKiBwYXJlbnRCb3hT
dHlsZSA9IG51bGxwdHIsIFJ1bGVNYXRjaGluZ0JlaGF2aW9yID0gTWF0Y2hBbGxSdWxlcywgY29u
c3QgUmVuZGVyUmVnaW9uKiByZWdpb25Gb3JTdHlsaW5nID0gbnVsbHB0ciwgY29uc3QgU2VsZWN0
b3JGaWx0ZXIqID0gbnVsbHB0cik7CisgICAgRWxlbWVudFN0eWxlIHN0eWxlRm9yRWxlbWVudChj
b25zdCBFbGVtZW50JiwgY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlLCBjb25zdCBSZW5k
ZXJTdHlsZSogcGFyZW50Qm94U3R5bGUgPSBudWxscHRyLCBSdWxlTWF0Y2hpbmdCZWhhdmlvciA9
IE1hdGNoQWxsUnVsZXMsIGNvbnN0IFNlbGVjdG9yRmlsdGVyKiA9IG51bGxwdHIpOwogCiAgICAg
dm9pZCBrZXlmcmFtZVN0eWxlc0ZvckFuaW1hdGlvbihjb25zdCBFbGVtZW50JiwgY29uc3QgUmVu
ZGVyU3R5bGUqLCBLZXlmcmFtZUxpc3QmKTsKIApAQCAtMjExLDggKzIwOSw2IEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgYWRkS2V5ZnJhbWVTdHlsZShSZWY8U3R5bGVSdWxlS2V5ZnJhbWVzPiYmKTsK
IAotICAgIGJvb2wgY2hlY2tSZWdpb25TdHlsZShjb25zdCBFbGVtZW50KiByZWdpb25FbGVtZW50
KTsKLQogICAgIGJvb2wgdXNlc0ZpcnN0TGluZVJ1bGVzKCkgY29uc3QgeyByZXR1cm4gbV9ydWxl
U2V0cy5mZWF0dXJlcygpLnVzZXNGaXJzdExpbmVSdWxlczsgfQogICAgIGJvb2wgdXNlc0ZpcnN0
TGV0dGVyUnVsZXMoKSBjb25zdCB7IHJldHVybiBtX3J1bGVTZXRzLmZlYXR1cmVzKCkudXNlc0Zp
cnN0TGV0dGVyUnVsZXM7IH0KICAgICAKQEAgLTM0Niw3ICszNDIsNyBAQCBwdWJsaWM6CiAgICAg
Y2xhc3MgU3RhdGUgewogICAgIHB1YmxpYzoKICAgICAgICAgU3RhdGUoKSB7IH0KLSAgICAgICAg
U3RhdGUoY29uc3QgRWxlbWVudCYsIGNvbnN0IFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSwgY29u
c3QgUmVuZGVyU3R5bGUqIGRvY3VtZW50RWxlbWVudFN0eWxlID0gbnVsbHB0ciwgY29uc3QgUmVu
ZGVyUmVnaW9uKiByZWdpb25Gb3JTdHlsaW5nID0gbnVsbHB0ciwgY29uc3QgU2VsZWN0b3JGaWx0
ZXIqID0gbnVsbHB0cik7CisgICAgICAgIFN0YXRlKGNvbnN0IEVsZW1lbnQmLCBjb25zdCBSZW5k
ZXJTdHlsZSogcGFyZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKiBkb2N1bWVudEVsZW1lbnRT
dHlsZSA9IG51bGxwdHIsIGNvbnN0IFNlbGVjdG9yRmlsdGVyKiA9IG51bGxwdHIpOwogCiAgICAg
cHVibGljOgogICAgICAgICB2b2lkIGNsZWFyKCk7CkBAIC0zNjIsNyArMzU4LDYgQEAgcHVibGlj
OgogICAgICAgICBjb25zdCBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUoKSBjb25zdCB7IHJldHVy
biBtX3BhcmVudFN0eWxlOyB9CiAgICAgICAgIGNvbnN0IFJlbmRlclN0eWxlKiByb290RWxlbWVu
dFN0eWxlKCkgY29uc3QgeyByZXR1cm4gbV9yb290RWxlbWVudFN0eWxlOyB9CiAKLSAgICAgICAg
Y29uc3QgUmVuZGVyUmVnaW9uKiByZWdpb25Gb3JTdHlsaW5nKCkgY29uc3QgeyByZXR1cm4gbV9y
ZWdpb25Gb3JTdHlsaW5nOyB9CiAgICAgICAgIEVJbnNpZGVMaW5rIGVsZW1lbnRMaW5rU3RhdGUo
KSBjb25zdCB7IHJldHVybiBtX2VsZW1lbnRMaW5rU3RhdGU7IH0KIAogICAgICAgICB2b2lkIHNl
dEFwcGx5UHJvcGVydHlUb1JlZ3VsYXJTdHlsZShib29sIGlzQXBwbHkpIHsgbV9hcHBseVByb3Bl
cnR5VG9SZWd1bGFyU3R5bGUgPSBpc0FwcGx5OyB9CkBAIC00MTUsOCArNDEwLDYgQEAgcHVibGlj
OgogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IG1fb3duZWRQYXJlbnRTdHls
ZTsKICAgICAgICAgY29uc3QgUmVuZGVyU3R5bGUqIG1fcm9vdEVsZW1lbnRTdHlsZSB7IG51bGxw
dHIgfTsKIAotICAgICAgICBjb25zdCBSZW5kZXJSZWdpb24qIG1fcmVnaW9uRm9yU3R5bGluZyB7
IG51bGxwdHIgfTsKLSAgICAgICAgCiAgICAgICAgIEVJbnNpZGVMaW5rIG1fZWxlbWVudExpbmtT
dGF0ZSB7IE5vdEluc2lkZUxpbmsgfTsKIAogICAgICAgICBib29sIG1fYXBwbHlQcm9wZXJ0eVRv
UmVndWxhclN0eWxlIHsgdHJ1ZSB9OwpAQCAtNTQxLDE5ICs1MzQsNCBAQCBpbmxpbmUgYm9vbCBT
dHlsZVJlc29sdmVyOjpoYXNTZWxlY3RvckZvCiAgICAgcmV0dXJuIG1fcnVsZVNldHMuZmVhdHVy
ZXMoKS5pZHNJblJ1bGVzLmNvbnRhaW5zKGlkVmFsdWUpOwogfQogCi1pbmxpbmUgYm9vbCBjaGVj
a1JlZ2lvblNlbGVjdG9yKGNvbnN0IENTU1NlbGVjdG9yKiByZWdpb25TZWxlY3RvciwgY29uc3Qg
RWxlbWVudCogcmVnaW9uRWxlbWVudCkKLXsKLSAgICBpZiAoIXJlZ2lvblNlbGVjdG9yIHx8ICFy
ZWdpb25FbGVtZW50KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBTZWxlY3RvckNoZWNr
ZXIgc2VsZWN0b3JDaGVja2VyKHJlZ2lvbkVsZW1lbnQtPmRvY3VtZW50KCkpOwotICAgIGZvciAo
Y29uc3QgQ1NTU2VsZWN0b3IqIHMgPSByZWdpb25TZWxlY3RvcjsgczsgcyA9IENTU1NlbGVjdG9y
TGlzdDo6bmV4dChzKSkgewotICAgICAgICBTZWxlY3RvckNoZWNrZXI6OkNoZWNraW5nQ29udGV4
dCBzZWxlY3RvckNoZWNraW5nQ29udGV4dChTZWxlY3RvckNoZWNrZXI6Ok1vZGU6OlF1ZXJ5aW5n
UnVsZXMpOwotICAgICAgICB1bnNpZ25lZCBpZ25vcmVkU3BlY2lmaWNpdHk7Ci0gICAgICAgIGlm
IChzZWxlY3RvckNoZWNrZXIubWF0Y2goKnMsICpyZWdpb25FbGVtZW50LCBzZWxlY3RvckNoZWNr
aW5nQ29udGV4dCwgaWdub3JlZFNwZWNpZmljaXR5KSkKLSAgICAgICAgICAgIHJldHVybiB0cnVl
OwotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuY3BwCShyZXZpc2lvbiAyMjIyNTcpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUs
NiBAQAogI2luY2x1ZGUgIk1lZGlhTGlzdC5oIgogI2luY2x1ZGUgIlN0eWxlUHJvcGVydGllcy5o
IgogI2luY2x1ZGUgIlN0eWxlUnVsZUltcG9ydC5oIgotI2luY2x1ZGUgIldlYktpdENTU1JlZ2lv
blJ1bGUuaCIKICNpbmNsdWRlICJXZWJLaXRDU1NWaWV3cG9ydFJ1bGUuaCIKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpAQCAtNzQsMTEgKzczLDYgQEAgdm9pZCBTdHlsZVJ1bGVCYXNlOjpkZXN0cm95
KCkKICAgICBjYXNlIFN1cHBvcnRzOgogICAgICAgICBkZWxldGUgZG93bmNhc3Q8U3R5bGVSdWxl
U3VwcG9ydHM+KHRoaXMpOwogICAgICAgICByZXR1cm47Ci0jaWYgRU5BQkxFKENTU19SRUdJT05T
KQotICAgIGNhc2UgUmVnaW9uOgotICAgICAgICBkZWxldGUgZG93bmNhc3Q8U3R5bGVSdWxlUmVn
aW9uPih0aGlzKTsKLSAgICAgICAgcmV0dXJuOwotI2VuZGlmCiAgICAgY2FzZSBJbXBvcnQ6CiAg
ICAgICAgIGRlbGV0ZSBkb3duY2FzdDxTdHlsZVJ1bGVJbXBvcnQ+KHRoaXMpOwogICAgICAgICBy
ZXR1cm47CkBAIC0xMDAsOSArOTQsNiBAQCB2b2lkIFN0eWxlUnVsZUJhc2U6OmRlc3Ryb3koKQog
ICAgICAgICBkZWxldGUgZG93bmNhc3Q8U3R5bGVSdWxlQ2hhcnNldD4odGhpcyk7CiAgICAgICAg
IHJldHVybjsKICAgICBjYXNlIFVua25vd246Ci0jaWYgIUVOQUJMRShDU1NfUkVHSU9OUykKLSAg
ICBjYXNlIFJlZ2lvbjoKLSNlbmRpZgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTEyMiwxMCArMTEzLDYgQEAgUmVmPFN0eWxlUnVsZUJh
c2U+IFN0eWxlUnVsZUJhc2U6OmNvcHkoKQogICAgICAgICByZXR1cm4gZG93bmNhc3Q8U3R5bGVS
dWxlTWVkaWE+KCp0aGlzKS5jb3B5KCk7CiAgICAgY2FzZSBTdXBwb3J0czoKICAgICAgICAgcmV0
dXJuIGRvd25jYXN0PFN0eWxlUnVsZVN1cHBvcnRzPigqdGhpcykuY29weSgpOwotI2lmIEVOQUJM
RShDU1NfUkVHSU9OUykKLSAgICBjYXNlIFJlZ2lvbjoKLSAgICAgICAgcmV0dXJuIGRvd25jYXN0
PFN0eWxlUnVsZVJlZ2lvbj4oKnRoaXMpLmNvcHkoKTsKLSNlbmRpZgogICAgIGNhc2UgS2V5ZnJh
bWVzOgogICAgICAgICByZXR1cm4gZG93bmNhc3Q8U3R5bGVSdWxlS2V5ZnJhbWVzPigqdGhpcyku
Y29weSgpOwogI2lmIEVOQUJMRShDU1NfREVWSUNFX0FEQVBUQVRJT04pCkBAIC0xMzksOSArMTI2
LDYgQEAgUmVmPFN0eWxlUnVsZUJhc2U+IFN0eWxlUnVsZUJhc2U6OmNvcHkoKQogICAgIGNhc2Ug
VW5rbm93bjoKICAgICBjYXNlIENoYXJzZXQ6CiAgICAgY2FzZSBLZXlmcmFtZToKLSNpZiAhRU5B
QkxFKENTU19SRUdJT05TKQotICAgIGNhc2UgUmVnaW9uOgotI2VuZGlmCiAgICAgICAgIGJyZWFr
OwogICAgIH0KICAgICBDUkFTSCgpOwpAQCAtMTY3LDExICsxNTEsNiBAQCBSZWZQdHI8Q1NTUnVs
ZT4gU3R5bGVSdWxlQmFzZTo6Y3JlYXRlQ1NTCiAgICAgY2FzZSBTdXBwb3J0czoKICAgICAgICAg
cnVsZSA9IENTU1N1cHBvcnRzUnVsZTo6Y3JlYXRlKGRvd25jYXN0PFN0eWxlUnVsZVN1cHBvcnRz
PihzZWxmKSwgcGFyZW50U2hlZXQpOwogICAgICAgICBicmVhazsKLSNpZiBFTkFCTEUoQ1NTX1JF
R0lPTlMpCi0gICAgY2FzZSBSZWdpb246Ci0gICAgICAgIHJ1bGUgPSBXZWJLaXRDU1NSZWdpb25S
dWxlOjpjcmVhdGUoZG93bmNhc3Q8U3R5bGVSdWxlUmVnaW9uPihzZWxmKSwgcGFyZW50U2hlZXQp
OwotICAgICAgICBicmVhazsKLSNlbmRpZgogICAgIGNhc2UgSW1wb3J0OgogICAgICAgICBydWxl
ID0gQ1NTSW1wb3J0UnVsZTo6Y3JlYXRlKGRvd25jYXN0PFN0eWxlUnVsZUltcG9ydD4oc2VsZiks
IHBhcmVudFNoZWV0KTsKICAgICAgICAgYnJlYWs7CkBAIC0xODksOSArMTY4LDYgQEAgUmVmUHRy
PENTU1J1bGU+IFN0eWxlUnVsZUJhc2U6OmNyZWF0ZUNTUwogICAgIGNhc2UgVW5rbm93bjoKICAg
ICBjYXNlIENoYXJzZXQ6CiAgICAgY2FzZSBLZXlmcmFtZToKLSNpZiAhRU5BQkxFKENTU19SRUdJ
T05TKQotICAgIGNhc2UgUmVnaW9uOgotI2VuZGlmCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CkBAIC00MjcsMjUgKzQwMyw2IEBA
IFN0eWxlUnVsZVN1cHBvcnRzOjpTdHlsZVJ1bGVTdXBwb3J0cyhjb24KIHsKIH0KIAotU3R5bGVS
dWxlUmVnaW9uOjpTdHlsZVJ1bGVSZWdpb24oVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxDU1NQYXJz
ZXJTZWxlY3Rvcj4+KiBzZWxlY3RvcnMsIFZlY3RvcjxSZWZQdHI8U3R5bGVSdWxlQmFzZT4+JiBh
ZG9wdFJ1bGVzKQotICAgIDogU3R5bGVSdWxlR3JvdXAoUmVnaW9uLCBhZG9wdFJ1bGVzKQotewot
ICAgIG1fc2VsZWN0b3JMaXN0LmFkb3B0U2VsZWN0b3JWZWN0b3IoKnNlbGVjdG9ycyk7Ci19Ci0K
LVN0eWxlUnVsZVJlZ2lvbjo6U3R5bGVSdWxlUmVnaW9uKENTU1NlbGVjdG9yTGlzdCYgc2VsZWN0
b3JzLCBWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZUJhc2U+PiYgYWRvcHRSdWxlcykKLSAgICA6IFN0
eWxlUnVsZUdyb3VwKFJlZ2lvbiwgYWRvcHRSdWxlcykKLSAgICAsIG1fc2VsZWN0b3JMaXN0KFdU
Rk1vdmUoc2VsZWN0b3JzKSkKLXsKLX0KLQotU3R5bGVSdWxlUmVnaW9uOjpTdHlsZVJ1bGVSZWdp
b24oY29uc3QgU3R5bGVSdWxlUmVnaW9uJiBvKQotICAgIDogU3R5bGVSdWxlR3JvdXAobykKLSAg
ICAsIG1fc2VsZWN0b3JMaXN0KG8ubV9zZWxlY3Rvckxpc3QpCi17Ci19Ci0KLQogI2lmIEVOQUJM
RShDU1NfREVWSUNFX0FEQVBUQVRJT04pCiBTdHlsZVJ1bGVWaWV3cG9ydDo6U3R5bGVSdWxlVmll
d3BvcnQoUmVmPFN0eWxlUHJvcGVydGllcz4mJiBwcm9wZXJ0aWVzKQogICAgIDogU3R5bGVSdWxl
QmFzZShWaWV3cG9ydCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlLmgJKHJldmlzaW9uIDIyMjI1
NykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuaAkod29ya2luZyBjb3B5KQpAQCAt
NTUsNyArNTUsNiBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKENTU19ERVZJQ0VfQURBUFRBVElPTikK
ICAgICAgICAgVmlld3BvcnQgPSAxNSwKICNlbmRpZgotICAgICAgICBSZWdpb24gPSAxNiwKICAg
ICB9OwogCiAgICAgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VHlwZT4o
bV90eXBlKTsgfQpAQCAtNjgsNyArNjcsNiBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc01lZGlhUnVs
ZSgpIGNvbnN0IHsgcmV0dXJuIHR5cGUoKSA9PSBNZWRpYTsgfQogICAgIGJvb2wgaXNQYWdlUnVs
ZSgpIGNvbnN0IHsgcmV0dXJuIHR5cGUoKSA9PSBQYWdlOyB9CiAgICAgYm9vbCBpc1N0eWxlUnVs
ZSgpIGNvbnN0IHsgcmV0dXJuIHR5cGUoKSA9PSBTdHlsZTsgfQotICAgIGJvb2wgaXNSZWdpb25S
dWxlKCkgY29uc3QgeyByZXR1cm4gdHlwZSgpID09IFJlZ2lvbjsgfQogICAgIGJvb2wgaXNTdXBw
b3J0c1J1bGUoKSBjb25zdCB7IHJldHVybiB0eXBlKCkgPT0gU3VwcG9ydHM7IH0KICNpZiBFTkFC
TEUoQ1NTX0RFVklDRV9BREFQVEFUSU9OKQogICAgIGJvb2wgaXNWaWV3cG9ydFJ1bGUoKSBjb25z
dCB7IHJldHVybiB0eXBlKCkgPT0gVmlld3BvcnQ7IH0KQEAgLTI3NiwzMSArMjc0LDYgQEAgcHJp
dmF0ZToKICAgICBib29sIG1fY29uZGl0aW9uSXNTdXBwb3J0ZWQ7CiB9OwogCi1jbGFzcyBTdHls
ZVJ1bGVSZWdpb24gZmluYWwgOiBwdWJsaWMgU3R5bGVSdWxlR3JvdXAgewotcHVibGljOgotICAg
IHN0YXRpYyBSZWY8U3R5bGVSdWxlUmVnaW9uPiBjcmVhdGUoVmVjdG9yPHN0ZDo6dW5pcXVlX3B0
cjxDU1NQYXJzZXJTZWxlY3Rvcj4+KiBzZWxlY3RvcnMsIFZlY3RvcjxSZWZQdHI8U3R5bGVSdWxl
QmFzZT4+JiBhZG9wdFJ1bGVzKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
U3R5bGVSdWxlUmVnaW9uKHNlbGVjdG9ycywgYWRvcHRSdWxlcykpOwotICAgIH0KLSAgICAKLSAg
ICBzdGF0aWMgUmVmPFN0eWxlUnVsZVJlZ2lvbj4gY3JlYXRlKENTU1NlbGVjdG9yTGlzdCYgc2Vs
ZWN0b3JzLCBWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZUJhc2U+PiYgYWRvcHRSdWxlcykKLSAgICB7
Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0eWxlUnVsZVJlZ2lvbihzZWxlY3RvcnMs
IGFkb3B0UnVsZXMpKTsKLSAgICB9Ci0gICAgCi0gICAgY29uc3QgQ1NTU2VsZWN0b3JMaXN0JiBz
ZWxlY3Rvckxpc3QoKSBjb25zdCB7IHJldHVybiBtX3NlbGVjdG9yTGlzdDsgfQotCi0gICAgUmVm
PFN0eWxlUnVsZVJlZ2lvbj4gY29weSgpIGNvbnN0IHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5
bGVSdWxlUmVnaW9uKCp0aGlzKSk7IH0KLQotcHJpdmF0ZToKLSAgICBTdHlsZVJ1bGVSZWdpb24o
VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxDU1NQYXJzZXJTZWxlY3Rvcj4+KiwgVmVjdG9yPFJlZlB0
cjxTdHlsZVJ1bGVCYXNlPj4mIGFkb3B0UnVsZXMpOwotICAgIFN0eWxlUnVsZVJlZ2lvbihDU1NT
ZWxlY3Rvckxpc3QmLCBWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZUJhc2U+PiYpOwotICAgIAotICAg
IFN0eWxlUnVsZVJlZ2lvbihjb25zdCBTdHlsZVJ1bGVSZWdpb24mKTsKLSAgICAKLSAgICBDU1NT
ZWxlY3Rvckxpc3QgbV9zZWxlY3Rvckxpc3Q7Ci19OwotCiAjaWYgRU5BQkxFKENTU19ERVZJQ0Vf
QURBUFRBVElPTikKIGNsYXNzIFN0eWxlUnVsZVZpZXdwb3J0IGZpbmFsIDogcHVibGljIFN0eWxl
UnVsZUJhc2UgewogcHVibGljOgpAQCAtMzc5LDEwICszNTIsNiBAQCBTUEVDSUFMSVpFX1RZUEVf
VFJBSVRTX0JFR0lOKFdlYkNvcmU6OlN0CiAgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdl
YkNvcmU6OlN0eWxlUnVsZUJhc2UmIHJ1bGUpIHsgcmV0dXJuIHJ1bGUuaXNTdXBwb3J0c1J1bGUo
KTsgfQogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQogCi1TUEVDSUFMSVpFX1RZUEVfVFJB
SVRTX0JFR0lOKFdlYkNvcmU6OlN0eWxlUnVsZVJlZ2lvbikKLSAgICBzdGF0aWMgYm9vbCBpc1R5
cGUoY29uc3QgV2ViQ29yZTo6U3R5bGVSdWxlQmFzZSYgcnVsZSkgeyByZXR1cm4gcnVsZS5pc1Jl
Z2lvblJ1bGUoKTsgfQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQotCiAjaWYgRU5BQkxF
KENTU19ERVZJQ0VfQURBUFRBVElPTikKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2Vi
Q29yZTo6U3R5bGVSdWxlVmlld3BvcnQpCiAgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdl
YkNvcmU6OlN0eWxlUnVsZUJhc2UmIHJ1bGUpIHsgcmV0dXJuIHJ1bGUuaXNWaWV3cG9ydFJ1bGUo
KTsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXRDb250ZW50cy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXRDb250ZW50cy5jcHAJKHJl
dmlzaW9uIDIyMjI1NykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0Q29udGVudHMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NTAsMTAgKzQ1MCw2IEBAIHN0YXRpYyBib29sIHRyYXZl
cnNlU3VicmVzb3VyY2VzSW5SdWxlcygKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIGNhc2UgU3R5bGVSdWxlQmFzZTo6
UmVnaW9uOgotICAgICAgICAgICAgaWYgKHRyYXZlcnNlU3VicmVzb3VyY2VzSW5SdWxlcyhkb3du
Y2FzdDxTdHlsZVJ1bGVSZWdpb24+KCpydWxlKS5jaGlsZFJ1bGVzKCksIGhhbmRsZXIpKQotICAg
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNh
c2UgU3R5bGVSdWxlQmFzZTo6SW1wb3J0OgogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAjaWYgQVNTRVJUX0RJU0FCTEVECkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0
Q1NTUmVnaW9uUnVsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL1dlYktp
dENTU1JlZ2lvblJ1bGUuY3BwCShyZXZpc2lvbiAyMjIyNTcpCisrKyBTb3VyY2UvV2ViQ29yZS9j
c3MvV2ViS2l0Q1NTUmVnaW9uUnVsZS5jcHAJKG5vbmV4aXN0ZW50KQpAQCAtMSw2NCArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqCi0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlCi0gKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZwotICogICAgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqICAgIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
Ci0gKiAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMKLSAqICAgIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSICJBUyBJUyIgQU5E
IEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgQkUKLSAqIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwK
LSAqIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IKLSAqIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRgotICogVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GCi0gKiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpbmNs
dWRlICJXZWJLaXRDU1NSZWdpb25SdWxlLmgiCi0KLSNpbmNsdWRlICJDU1NSdWxlTGlzdC5oIgot
I2luY2x1ZGUgIlN0eWxlUnVsZS5oIgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIu
aD4KLQotI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotV2Vi
S2l0Q1NTUmVnaW9uUnVsZTo6V2ViS2l0Q1NTUmVnaW9uUnVsZShTdHlsZVJ1bGVSZWdpb24mIHJl
Z2lvblJ1bGUsIENTU1N0eWxlU2hlZXQqIHBhcmVudCkKLSAgICA6IENTU0dyb3VwaW5nUnVsZShy
ZWdpb25SdWxlLCBwYXJlbnQpCi17Ci19Ci0KLVN0cmluZyBXZWJLaXRDU1NSZWdpb25SdWxlOjpj
c3NUZXh0KCkgY29uc3QKLXsKLSAgICBTdHJpbmdCdWlsZGVyIHJlc3VsdDsKLSAgICByZXN1bHQu
YXBwZW5kTGl0ZXJhbCgiQC13ZWJraXQtcmVnaW9uICIpOwotCi0gICAgLy8gRmlyc3QgYWRkIHRo
ZSBzZWxlY3RvcnMuCi0gICAgZG93bmNhc3Q8U3R5bGVSdWxlUmVnaW9uPihtX2dyb3VwUnVsZS5n
ZXQoKSkuc2VsZWN0b3JMaXN0KCkuYnVpbGRTZWxlY3RvcnNUZXh0KHJlc3VsdCk7Ci0KLSAgICAv
LyBUaGVuIGFkZCB0aGUgcnVsZXMuCi0gICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoIiB7IFxuIik7
Ci0gICAgYXBwZW5kQ3NzVGV4dEZvckl0ZW1zKHJlc3VsdCk7Ci0gICAgcmVzdWx0LmFwcGVuZCgn
fScpOwotICAgIHJldHVybiByZXN1bHQudG9TdHJpbmcoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQotCi0jZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NSZWdp
b25SdWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU1JlZ2lv
blJ1bGUuaAkocmV2aXNpb24gMjIyMjU3KQorKysgU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENT
U1JlZ2lvblJ1bGUuaAkobm9uZXhpc3RlbnQpCkBAIC0xLDU2ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTEgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUK
LSAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nCi0gKiAgICBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogICAgY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKLSAqICAgIGRpc2Ns
YWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscwotICogICAg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVIgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBCRQotICogTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLAotICogT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUgotICogVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GCi0gKiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKLSAqIFNVQ0gg
REFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiQ1NTR3JvdXBpbmdSdWxl
LmgiCi0KLSNpZiBFTkFCTEUoQ1NTX1JFR0lPTlMpCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQot
Y2xhc3MgU3R5bGVSdWxlUmVnaW9uOwotCi1jbGFzcyBXZWJLaXRDU1NSZWdpb25SdWxlIGZpbmFs
IDogcHVibGljIENTU0dyb3VwaW5nUnVsZSB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxXZWJL
aXRDU1NSZWdpb25SdWxlPiBjcmVhdGUoU3R5bGVSdWxlUmVnaW9uJiBydWxlLCBDU1NTdHlsZVNo
ZWV0KiBzaGVldCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJLaXRDU1NSZWdpb25SdWxlKHJ1
bGUsIHNoZWV0KSk7IH0KLQotICAgIENTU1J1bGU6OlR5cGUgdHlwZSgpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIFdFQktJVF9SRUdJT05fUlVMRTsgfQotICAgIFN0cmluZyBjc3NUZXh0KCkgY29uc3Qg
ZmluYWw7Ci0KLXByaXZhdGU6Ci0gICAgV2ViS2l0Q1NTUmVnaW9uUnVsZShTdHlsZVJ1bGVSZWdp
b24mLCBDU1NTdHlsZVNoZWV0KiBwYXJlbnQpOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQotCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0NTU19SVUxFKFdlYktpdENTU1JlZ2lvblJ1bGUs
IENTU1J1bGU6OldFQktJVF9SRUdJT05fUlVMRSkKLQotI2VuZGlmIC8vIEVOQUJMRShDU1NfUkVH
SU9OUykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NSZWdpb25SdWxlLmlkbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTUmVnaW9uUnVsZS5pZGwJ
KHJldmlzaW9uIDIyMjI1NykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NSZWdpb25S
dWxlLmlkbAkobm9uZXhpc3RlbnQpCkBAIC0xLDM1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTEgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZQotICog
ICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcKLSAqICAgIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZwotICogICAgZGlzY2xhaW1l
ciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzCi0gKiAgICBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUiAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
Ci0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIEJFCi0gKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksCi0gKiBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
Ci0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SCi0gKiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YKLSAqIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgotICogU1VDSCBEQU1B
R0UuCi0gKi8KLQotWwotICAgIENvbmRpdGlvbmFsPUNTU19SRUdJT05TLAotXSBpbnRlcmZhY2Ug
V2ViS2l0Q1NTUmVnaW9uUnVsZSA6IENTU1J1bGUgewotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBD
U1NSdWxlTGlzdCBjc3NSdWxlczsKLX07Ci0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJz
ZXIvQ1NTQXRSdWxlSUQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJz
ZXIvQ1NTQXRSdWxlSUQuY3BwCShyZXZpc2lvbiAyMjIyNTcpCisrKyBTb3VyY2UvV2ViQ29yZS9j
c3MvcGFyc2VyL0NTU0F0UnVsZUlELmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTYsMTAgKzU2LDYg
QEAgQ1NTQXRSdWxlSUQgY3NzQXRSdWxlSUQoU3RyaW5nVmlldyBuYW1lKQogICAgICAgICByZXR1
cm4gQ1NTQXRSdWxlV2Via2l0S2V5ZnJhbWVzOwogICAgIGlmIChlcXVhbElnbm9yaW5nQVNDSUlD
YXNlKG5hbWUsICJhcHBseSIpKQogICAgICAgICByZXR1cm4gQ1NTQXRSdWxlQXBwbHk7Ci0jaWYg
RU5BQkxFKENTU19SRUdJT05TKQotICAgIGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG5hbWUs
ICItd2Via2l0LXJlZ2lvbiIpKQotICAgICAgICByZXR1cm4gQ1NTQXRSdWxlV2Via2l0UmVnaW9u
OwotI2VuZGlmCiAgICAgcmV0dXJuIENTU0F0UnVsZUludmFsaWQ7CiB9CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTQXRSdWxlSUQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9jc3MvcGFyc2VyL0NTU0F0UnVsZUlELmgJKHJldmlzaW9uIDIyMjI1NykKKysrIFNv
dXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTQXRSdWxlSUQuaAkod29ya2luZyBjb3B5KQpAQCAt
NDcsNyArNDcsNiBAQCBlbnVtIENTU0F0UnVsZUlEIHsKIAogICAgIENTU0F0UnVsZVdlYmtpdEtl
eWZyYW1lcyA9IDEwLAogICAgIENTU0F0UnVsZUFwcGx5ID0gMTEsCi0gICAgQ1NTQXRSdWxlV2Vi
a2l0UmVnaW9uID0gMTIKIH07CiAKIENTU0F0UnVsZUlEIGNzc0F0UnVsZUlEKFN0cmluZ1ZpZXcg
bmFtZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckZhc3RQYXRo
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJG
YXN0UGF0aHMuY3BwCShyZXZpc2lvbiAyMjIyNTcpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvcGFy
c2VyL0NTU1BhcnNlckZhc3RQYXRocy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYxMywxNyArNjEz
LDkgQEAgYm9vbCBDU1NQYXJzZXJGYXN0UGF0aHM6OmlzVmFsaWRLZXl3b3JkUAogICAgICAgICBy
ZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZVZpc2libGUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUhp
ZGRlbiB8fCB2YWx1ZUlEID09IENTU1ZhbHVlU2Nyb2xsIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVB
dXRvIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVPdmVybGF5IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVX
ZWJraXRQYWdlZFggfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVdlYmtpdFBhZ2VkWTsKICAgICBjYXNl
IENTU1Byb3BlcnR5QnJlYWtBZnRlcjoKICAgICBjYXNlIENTU1Byb3BlcnR5QnJlYWtCZWZvcmU6
Ci0gICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlQXV0byB8fCB2YWx1ZUlEID09IENT
U1ZhbHVlQXZvaWQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUF2b2lkUGFnZSB8fCB2YWx1ZUlEID09
IENTU1ZhbHVlUGFnZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlTGVmdCB8fCB2YWx1ZUlEID09IENT
U1ZhbHVlUmlnaHQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVJlY3RvIHx8IHZhbHVlSUQgPT0gQ1NT
VmFsdWVWZXJzbyB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQXZvaWRDb2x1bW4gfHwgdmFsdWVJRCA9
PSBDU1NWYWx1ZUNvbHVtbgotI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKLSAgICAgICAgICAgIHx8
IHZhbHVlSUQgPT0gQ1NTVmFsdWVSZWdpb24gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUF2b2lkUmVn
aW9uCi0jZW5kaWYKLSAgICAgICAgOworICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1
ZUF1dG8gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUF2b2lkIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVB
dm9pZFBhZ2UgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVBhZ2UgfHwgdmFsdWVJRCA9PSBDU1NWYWx1
ZUxlZnQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVJpZ2h0IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVS
ZWN0byB8fCB2YWx1ZUlEID09IENTU1ZhbHVlVmVyc28gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUF2
b2lkQ29sdW1uIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVDb2x1bW47CiAgICAgY2FzZSBDU1NQcm9w
ZXJ0eUJyZWFrSW5zaWRlOgotICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZUF1dG8g
fHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUF2b2lkIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVBdm9pZFBh
Z2UgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUF2b2lkQ29sdW1uCi0jaWYgRU5BQkxFKENTU19SRUdJ
T05TKQotICAgICAgICAgICAgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUF2b2lkUmVnaW9uCi0jZW5k
aWYKLSAgICAgICAgOworICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZUF1dG8gfHwg
dmFsdWVJRCA9PSBDU1NWYWx1ZUF2b2lkIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVBdm9pZFBhZ2Ug
fHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUF2b2lkQ29sdW1uOwogICAgIGNhc2UgQ1NTUHJvcGVydHlQ
b2ludGVyRXZlbnRzOgogICAgICAgICAvLyBub25lIHwgdmlzaWJsZVBhaW50ZWQgfCB2aXNpYmxl
RmlsbCB8IHZpc2libGVTdHJva2UgfCB2aXNpYmxlIHwKICAgICAgICAgLy8gcGFpbnRlZCB8IGZp
bGwgfCBzdHJva2UgfCBhdXRvIHwgYWxsIHwgYm91bmRpbmctYm94CkBAIC03ODMsMTAgKzc3NSw2
IEBAIGJvb2wgQ1NTUGFyc2VyRmFzdFBhdGhzOjppc1ZhbGlkS2V5d29yZFAKICAgICAgICAgcmV0
dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVOb3JtYWwgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUJyZWFr
QWxsIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVLZWVwQWxsIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVC
cmVha1dvcmQ7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckZpdDoKICAgICAgICAg
cmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVCb3JkZXIgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUxp
bmVzOwotI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
UmVnaW9uRnJhZ21lbnQ6Ci0gICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlQXV0byB8
fCB2YWx1ZUlEID09IENTU1ZhbHVlQnJlYWs7Ci0jZW5kaWYKICNpZiBFTkFCTEUoVE9VQ0hfRVZF
TlRTKQogICAgIGNhc2UgQ1NTUHJvcGVydHlUb3VjaEFjdGlvbjogLy8gYXV0byB8IG1hbmlwdWxh
dGlvbgogICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZUF1dG8gfHwgdmFsdWVJRCA9
PSBDU1NWYWx1ZU1hbmlwdWxhdGlvbjsKQEAgLTk3Niw5ICs5NjQsNiBAQCBib29sIENTU1BhcnNl
ckZhc3RQYXRoczo6aXNLZXl3b3JkUHJvcGVyCiAjaWYgRU5BQkxFKEFDQ0VMRVJBVEVEX09WRVJG
TE9XX1NDUk9MTElORykKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0T3ZlcmZsb3dTY3JvbGxp
bmc6CiAjZW5kaWYKLSNpZiBFTkFCTEUoQ1NTX1JFR0lPTlMpCi0gICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdFJlZ2lvbkZyYWdtZW50OgotI2VuZGlmCiAjaWYgRU5BQkxFKENTUzNfVEVYVCkKICAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dEFsaWduTGFzdDoKICAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0VGV4dEp1c3RpZnk6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NT
U1BhcnNlckltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIv
Q1NTUGFyc2VySW1wbC5jcHAJKHJldmlzaW9uIDIyMjI1NykKKysrIFNvdXJjZS9XZWJDb3JlL2Nz
cy9wYXJzZXIvQ1NTUGFyc2VySW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1MiwxMCArNDUy
LDYgQEAgUmVmUHRyPFN0eWxlUnVsZUJhc2U+IENTU1BhcnNlckltcGw6OmNvbgogICAgICAgICBy
ZXR1cm4gY29uc3VtZUtleWZyYW1lc1J1bGUoZmFsc2UsIHByZWx1ZGUsIGJsb2NrKTsKICAgICBj
YXNlIENTU0F0UnVsZVBhZ2U6CiAgICAgICAgIHJldHVybiBjb25zdW1lUGFnZVJ1bGUocHJlbHVk
ZSwgYmxvY2spOwotI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKLSAgICBjYXNlIENTU0F0UnVsZVdl
YmtpdFJlZ2lvbjoKLSAgICAgICAgcmV0dXJuIGNvbnN1bWVSZWdpb25SdWxlKHByZWx1ZGUsIGJs
b2NrKTsKLSNlbmRpZgogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBudWxscHRyOyAvLyBQ
YXJzZSBlcnJvciwgdW5yZWNvZ25pc2VkIGF0LXJ1bGUgd2l0aCBibG9jawogICAgIH0KQEAgLTY3
NywzMiArNjczLDYgQEAgUmVmUHRyPFN0eWxlUnVsZVBhZ2U+IENTU1BhcnNlckltcGw6OmNvbgog
ICAgIHJldHVybiBwYWdlOwogfQogCi0jaWYgRU5BQkxFKENTU19SRUdJT05TKQotUmVmUHRyPFN0
eWxlUnVsZVJlZ2lvbj4gQ1NTUGFyc2VySW1wbDo6Y29uc3VtZVJlZ2lvblJ1bGUoQ1NTUGFyc2Vy
VG9rZW5SYW5nZSBwcmVsdWRlLCBDU1NQYXJzZXJUb2tlblJhbmdlIGJsb2NrKQotewotICAgIENT
U1NlbGVjdG9yTGlzdCBzZWxlY3Rvckxpc3QgPSBDU1NTZWxlY3RvclBhcnNlcjo6cGFyc2VTZWxl
Y3RvcihwcmVsdWRlLCBtX2NvbnRleHQsIG1fc3R5bGVTaGVldC5nZXQoKSk7Ci0gICAgaWYgKCFz
ZWxlY3Rvckxpc3QuaXNWYWxpZCgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsgLy8gUGFyc2Ug
ZXJyb3IsIGludmFsaWQgc2VsZWN0b3IgbGlzdAotCi0gICAgaWYgKG1fb2JzZXJ2ZXJXcmFwcGVy
KSB7Ci0gICAgICAgIG1fb2JzZXJ2ZXJXcmFwcGVyLT5vYnNlcnZlcigpLnN0YXJ0UnVsZUhlYWRl
cihTdHlsZVJ1bGU6OlJlZ2lvbiwgbV9vYnNlcnZlcldyYXBwZXItPnN0YXJ0T2Zmc2V0KHByZWx1
ZGUpKTsKLSAgICAgICAgbV9vYnNlcnZlcldyYXBwZXItPm9ic2VydmVyKCkuZW5kUnVsZUhlYWRl
cihtX29ic2VydmVyV3JhcHBlci0+ZW5kT2Zmc2V0KHByZWx1ZGUpKTsKLSAgICAgICAgbV9vYnNl
cnZlcldyYXBwZXItPm9ic2VydmVyKCkuc3RhcnRSdWxlQm9keShtX29ic2VydmVyV3JhcHBlci0+
cHJldmlvdXNUb2tlblN0YXJ0T2Zmc2V0KGJsb2NrKSk7Ci0gICAgfQotICAgIAotICAgIFZlY3Rv
cjxSZWZQdHI8U3R5bGVSdWxlQmFzZT4+IHJ1bGVzOwotICAgIGNvbnN1bWVSdWxlTGlzdChibG9j
aywgUmVndWxhclJ1bGVMaXN0LCBbJnJ1bGVzXShSZWZQdHI8U3R5bGVSdWxlQmFzZT4gcnVsZSkg
ewotICAgICAgICBydWxlcy5hcHBlbmQocnVsZSk7Ci0gICAgfSk7Ci0gICAgCi0gICAgaWYgKG1f
b2JzZXJ2ZXJXcmFwcGVyKQotICAgICAgICBtX29ic2VydmVyV3JhcHBlci0+b2JzZXJ2ZXIoKS5l
bmRSdWxlQm9keShtX29ic2VydmVyV3JhcHBlci0+ZW5kT2Zmc2V0KGJsb2NrKSk7Ci0gICAgCi0g
ICAgcmV0dXJuIFN0eWxlUnVsZVJlZ2lvbjo6Y3JlYXRlKHNlbGVjdG9yTGlzdCwgcnVsZXMpOwot
Ci19Ci0jZW5kaWYKLQogLy8gRklYTUUtTkVXUEFSU0VSOiBTdXBwb3J0ICJhcHBseSIKIC8qdm9p
ZCBDU1NQYXJzZXJJbXBsOjpjb25zdW1lQXBwbHlSdWxlKENTU1BhcnNlclRva2VuUmFuZ2UgcHJl
bHVkZSkKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VySW1wbC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VySW1wbC5o
CShyZXZpc2lvbiAyMjIyNTcpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNl
ckltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtMTMyLDEwICsxMzIsNiBAQCBwcml2YXRlOgogICAg
IFJlZlB0cjxTdHlsZVJ1bGVGb250RmFjZT4gY29uc3VtZUZvbnRGYWNlUnVsZShDU1NQYXJzZXJU
b2tlblJhbmdlIHByZWx1ZGUsIENTU1BhcnNlclRva2VuUmFuZ2UgYmxvY2spOwogICAgIFJlZlB0
cjxTdHlsZVJ1bGVLZXlmcmFtZXM+IGNvbnN1bWVLZXlmcmFtZXNSdWxlKGJvb2wgd2Via2l0UHJl
Zml4ZWQsIENTU1BhcnNlclRva2VuUmFuZ2UgcHJlbHVkZSwgQ1NTUGFyc2VyVG9rZW5SYW5nZSBi
bG9jayk7CiAgICAgUmVmUHRyPFN0eWxlUnVsZVBhZ2U+IGNvbnN1bWVQYWdlUnVsZShDU1NQYXJz
ZXJUb2tlblJhbmdlIHByZWx1ZGUsIENTU1BhcnNlclRva2VuUmFuZ2UgYmxvY2spOwotI2lmIEVO
QUJMRShDU1NfUkVHSU9OUykKLSAgICBSZWZQdHI8U3R5bGVSdWxlUmVnaW9uPiBjb25zdW1lUmVn
aW9uUnVsZShDU1NQYXJzZXJUb2tlblJhbmdlIHByZWx1ZGUsIENTU1BhcnNlclRva2VuUmFuZ2Ug
YmxvY2spOwotI2VuZGlmCi0gICAgLy8gVXBkYXRlcyBtX3BhcnNlZFByb3BlcnRpZXMKICAgICAK
ICAgICAvLyBGSVhNRS1ORVdQQVJTRVI6IFN1cHBvcnQgImFwcGx5IgogICAgIC8vIHZvaWQgY29u
c3VtZUFwcGx5UnVsZShDU1NQYXJzZXJUb2tlblJhbmdlIHByZWx1ZGUpOwpJbmRleDogU291cmNl
L1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAJKHJldmlzaW9u
IDIyMjI1NykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOTAsMTEgKzI5MCw2IEBAIHN0YXRpYyBib29sIGlzTGVn
YWN5QnJlYWtQcm9wZXJ0eShDU1NQcm8KICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Q29sdW1u
QnJlYWtBZnRlcjoKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Q29sdW1uQnJlYWtCZWZvcmU6
CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbkJyZWFrSW5zaWRlOgotI2lmIEVOQUJM
RShDU1NfUkVHSU9OUykKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0UmVnaW9uQnJlYWtBZnRl
cjoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0UmVnaW9uQnJlYWtCZWZvcmU6Ci0gICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdFJlZ2lvbkJyZWFrSW5zaWRlOgotI2VuZGlmCiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwpAQCAtMzQ5OCwxOCArMzQ5
Myw2IEBAIHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVHcmlkVGVtcGwKICAgICByZXR1
cm4gQ1NTR3JpZFRlbXBsYXRlQXJlYXNWYWx1ZTo6Y3JlYXRlKGdyaWRBcmVhTWFwLCByb3dDb3Vu
dCwgY29sdW1uQ291bnQpOwogfQogCi0jaWYgRU5BQkxFKENTU19SRUdJT05TKQotc3RhdGljIFJl
ZlB0cjxDU1NWYWx1ZT4gY29uc3VtZUZsb3dQcm9wZXJ0eShDU1NQYXJzZXJUb2tlblJhbmdlJiBy
YW5nZSkKLXsKLSAgICBSZWZQdHI8Q1NTVmFsdWU+IHJlc3VsdDsKLSAgICBpZiAocmFuZ2UucGVl
aygpLmlkKCkgPT0gQ1NTVmFsdWVOb25lKQotICAgICAgICByZXN1bHQgPSBjb25zdW1lSWRlbnQo
cmFuZ2UpOwotICAgIGVsc2UKLSAgICAgICAgcmVzdWx0ID0gY29uc3VtZUN1c3RvbUlkZW50KHJh
bmdlKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotI2VuZGlmCi0KIHN0YXRpYyBSZWZQdHI8Q1NT
VmFsdWU+IGNvbnN1bWVMaW5lQm94Q29udGFpbihDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkK
IHsKICAgICBpZiAocmFuZ2UucGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVOb25lKQpAQCAtNDI1Mywx
MSArNDIzNiw2IEBAIFJlZlB0cjxDU1NWYWx1ZT4gQ1NTUHJvcGVydHlQYXJzZXI6OnBhcnMKICAg
ICAgICAgaWYgKCFtX2NvbnRleHQuY3NzR3JpZExheW91dEVuYWJsZWQpCiAgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICAgICAgcmV0dXJuIGNvbnN1bWVHcmlkQXV0b0Zsb3cobV9yYW5n
ZSk7Ci0jaWYgRU5BQkxFKENTU19SRUdJT05TKQotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRG
bG93SW50bzoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Rmxvd0Zyb206Ci0gICAgICAgIHJl
dHVybiBjb25zdW1lRmxvd1Byb3BlcnR5KG1fcmFuZ2UpOwotI2VuZGlmCiAgICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdExpbmVHcmlkOgogICAgICAgICByZXR1cm4gY29uc3VtZUxpbmVHcmlkKG1f
cmFuZ2UpOwogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRJbml0aWFsTGV0dGVyOgpAQCAtNTAw
MSwxOSArNDk3OSw2IEBAIHN0YXRpYyBpbmxpbmUgQ1NTVmFsdWVJRCBtYXBGcm9tQ29sdW1uQnIK
ICAgICByZXR1cm4gQ1NTVmFsdWVJbnZhbGlkOwogfQogCi0jaWYgRU5BQkxFKENTU19SRUdJT05T
KQotc3RhdGljIGlubGluZSBDU1NWYWx1ZUlEIG1hcEZyb21SZWdpb25CcmVha0JldHdlZW4oQ1NT
VmFsdWVJRCB2YWx1ZSkKLXsKLSAgICBpZiAodmFsdWUgPT0gQ1NTVmFsdWVBbHdheXMpCi0gICAg
ICAgIHJldHVybiBDU1NWYWx1ZVJlZ2lvbjsKLSAgICBpZiAodmFsdWUgPT0gQ1NTVmFsdWVBdXRv
KQotICAgICAgICByZXR1cm4gdmFsdWU7Ci0gICAgaWYgKHZhbHVlID09IENTU1ZhbHVlQXZvaWQp
Ci0gICAgICAgIHJldHVybiBDU1NWYWx1ZUF2b2lkUmVnaW9uOwotICAgIHJldHVybiBDU1NWYWx1
ZUludmFsaWQ7Ci19Ci0jZW5kaWYKLQogc3RhdGljIGlubGluZSBDU1NWYWx1ZUlEIG1hcEZyb21D
b2x1bW5SZWdpb25PclBhZ2VCcmVha0luc2lkZShDU1NWYWx1ZUlEIHZhbHVlKQogewogICAgIGlm
ICh2YWx1ZSA9PSBDU1NWYWx1ZUF1dG8gfHwgdmFsdWUgPT0gQ1NTVmFsdWVBdm9pZCkKQEAgLTUw
MjcsMTUgKzQ5OTIsNyBAQCBzdGF0aWMgaW5saW5lIENTU1Byb3BlcnR5SUQgbWFwRnJvbUxlZ2Fj
CiAgICAgICAgIHJldHVybiBDU1NQcm9wZXJ0eUJyZWFrQWZ0ZXI7CiAgICAgaWYgKHByb3BlcnR5
ID09IENTU1Byb3BlcnR5UGFnZUJyZWFrQmVmb3JlIHx8IHByb3BlcnR5ID09IENTU1Byb3BlcnR5
V2Via2l0Q29sdW1uQnJlYWtCZWZvcmUpCiAgICAgICAgIHJldHVybiBDU1NQcm9wZXJ0eUJyZWFr
QmVmb3JlOwotI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKLSAgICBpZiAocHJvcGVydHkgPT0gQ1NT
UHJvcGVydHlXZWJraXRSZWdpb25CcmVha0FmdGVyKQotICAgICAgICByZXR1cm4gQ1NTUHJvcGVy
dHlCcmVha0FmdGVyOwotICAgIGlmIChwcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eVdlYmtpdFJlZ2lv
bkJyZWFrQmVmb3JlKQotICAgICAgICByZXR1cm4gQ1NTUHJvcGVydHlCcmVha0JlZm9yZTsKLSAg
ICBBU1NFUlQocHJvcGVydHkgPT0gQ1NTUHJvcGVydHlQYWdlQnJlYWtJbnNpZGUgfHwgcHJvcGVy
dHkgPT0gQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5CcmVha0luc2lkZSB8fCBwcm9wZXJ0eSA9PSBD
U1NQcm9wZXJ0eVdlYmtpdFJlZ2lvbkJyZWFrSW5zaWRlKTsKLSNlbHNlCiAgICAgQVNTRVJUKHBy
b3BlcnR5ID09IENTU1Byb3BlcnR5UGFnZUJyZWFrSW5zaWRlIHx8IHByb3BlcnR5ID09IENTU1By
b3BlcnR5V2Via2l0Q29sdW1uQnJlYWtJbnNpZGUpOwotI2VuZGlmCiAgICAgcmV0dXJuIENTU1By
b3BlcnR5QnJlYWtJbnNpZGU7CiB9CiAKQEAgLTUwNTksMTMgKzUwMTYsNiBAQCBib29sIENTU1By
b3BlcnR5UGFyc2VyOjpjb25zdW1lTGVnYWN5QnJlCiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dENvbHVtbkJyZWFrQmVmb3JlOgogICAgICAgICB2YWx1ZSA9IG1hcEZyb21Db2x1bW5CcmVha0Jl
dHdlZW4odmFsdWUpOwogICAgICAgICBicmVhazsKLSNpZiBFTkFCTEUoQ1NTX1JFR0lPTlMpCi0g
ICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFJlZ2lvbkJyZWFrQWZ0ZXI6Ci0gICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdFJlZ2lvbkJyZWFrQmVmb3JlOgotICAgICAgICB2YWx1ZSA9IG1hcEZyb21S
ZWdpb25CcmVha0JldHdlZW4odmFsdWUpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0UmVnaW9uQnJlYWtJbnNpZGU6Ci0jZW5kaWYKICAgICBjYXNlIENTU1Byb3Bl
cnR5UGFnZUJyZWFrSW5zaWRlOgogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5CcmVh
a0luc2lkZToKICAgICAgICAgdmFsdWUgPSBtYXBGcm9tQ29sdW1uUmVnaW9uT3JQYWdlQnJlYWtJ
bnNpZGUodmFsdWUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcAkocmV2
aXNpb24gMjIyMjU3KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMDgsOSArMTA4LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGRlc3Ry
b3lSZW5kZXJUcmVlSWZOZQogewogICAgIGJvb2wgaXNFbGVtZW50ID0gaXM8RWxlbWVudD4oY2hp
bGQpOwogICAgIGF1dG8gaGFzRGlzcGxheUNvbnRlbnRzID0gaXNFbGVtZW50ICYmIGRvd25jYXN0
PEVsZW1lbnQ+KGNoaWxkKS5oYXNEaXNwbGF5Q29udGVudHMoKTsKLSAgICBhdXRvIGlzTmFtZWRG
bG93RWxlbWVudCA9IGlzRWxlbWVudCAmJiBkb3duY2FzdDxFbGVtZW50PihjaGlsZCkuaXNOYW1l
ZEZsb3dDb250ZW50RWxlbWVudCgpOwotICAgIC8vIEZJWE1FOiBHZXQgcmlkIG9mIHRoZSBuYW1l
ZCBmbG93IHRlc3QuCi0gICAgaWYgKCFjaGlsZC5yZW5kZXJlcigpICYmICFoYXNEaXNwbGF5Q29u
dGVudHMgJiYgIWlzTmFtZWRGbG93RWxlbWVudCkKKyAgICBpZiAoIWNoaWxkLnJlbmRlcmVyKCkg
JiYgIWhhc0Rpc3BsYXlDb250ZW50cykKICAgICAgICAgcmV0dXJuOwogICAgIGlmIChpc0VsZW1l
bnQpCiAgICAgICAgIFJlbmRlclRyZWVVcGRhdGVyOjp0ZWFyRG93blJlbmRlcmVycyhkb3duY2Fz
dDxFbGVtZW50PihjaGlsZCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RPTUFsbEluT25l
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRE9NQWxsSW5PbmUuY3BwCShy
ZXZpc2lvbiAyMjIyNTcpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRE9NQWxsSW5PbmUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00OSw3ICs0OSw2IEBACiAjaW5jbHVkZSAiRE9NRXJyb3IuY3BwIgog
I2luY2x1ZGUgIkRPTUV4Y2VwdGlvbi5jcHAiCiAjaW5jbHVkZSAiRE9NSW1wbGVtZW50YXRpb24u
Y3BwIgotI2luY2x1ZGUgIkRPTU5hbWVkRmxvd0NvbGxlY3Rpb24uY3BwIgogI2luY2x1ZGUgIkRP
TVN0cmluZ0xpc3QuY3BwIgogI2luY2x1ZGUgIkRhdGFUcmFuc2Zlci5jcHAiCiAjaW5jbHVkZSAi
RGF0YVRyYW5zZmVySXRlbS5jcHAiCkBAIC0xMDIsNyArMTAxLDYgQEAKICNpbmNsdWRlICJNdXRh
dGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uLmNwcCIKICNpbmNsdWRlICJNdXRhdGlvblJlY29yZC5j
cHAiCiAjaW5jbHVkZSAiTmFtZU5vZGVMaXN0LmNwcCIKLSNpbmNsdWRlICJOYW1lZEZsb3dDb2xs
ZWN0aW9uLmNwcCIKICNpbmNsdWRlICJOYW1lZE5vZGVNYXAuY3BwIgogI2luY2x1ZGUgIk5vZGUu
Y3BwIgogI2luY2x1ZGUgIk5vZGVGaWx0ZXJDb25kaXRpb24uY3BwIgpAQCAtMTU4LDcgKzE1Niw2
IEBACiAjaW5jbHVkZSAiVmlld3BvcnRBcmd1bWVudHMuY3BwIgogI2luY2x1ZGUgIlZpc2l0ZWRM
aW5rU3RhdGUuY3BwIgogI2luY2x1ZGUgIldlYktpdEFuaW1hdGlvbkV2ZW50LmNwcCIKLSNpbmNs
dWRlICJXZWJLaXROYW1lZEZsb3cuY3BwIgogI2luY2x1ZGUgIldlYktpdFRyYW5zaXRpb25FdmVu
dC5jcHAiCiAjaW5jbHVkZSAiV2hlZWxFdmVudC5jcHAiCiAjaW5jbHVkZSAiWE1MRG9jdW1lbnRQ
YXJzZXIuY3BwIgpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RPTU5hbWVkRmxvd0NvbGxlY3Rp
b24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9ET01OYW1lZEZsb3dDb2xs
ZWN0aW9uLmNwcAkocmV2aXNpb24gMjIyMjU3KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RPTU5h
bWVkRmxvd0NvbGxlY3Rpb24uY3BwCShub25leGlzdGVudCkKQEAgLTEsOTMgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMiBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZQotICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcKLSAqICAgIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiAgICBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZwotICog
ICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
Ci0gKiAgICBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUiAiQVMgSVMiIEFORCBBTlkK
LSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIEJFCi0gKiBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksCi0gKiBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SCi0gKiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YKLSAqIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgot
ICogU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkRP
TU5hbWVkRmxvd0NvbGxlY3Rpb24uaCIKLQotI2luY2x1ZGUgIldlYktpdE5hbWVkRmxvdy5oIgot
I2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZ0hhc2guaD4KLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1pbmxpbmUgRE9NTmFtZWRGbG93Q29sbGVjdGlvbjo6RE9NTmFtZWRGbG93Q29sbGVj
dGlvbihWZWN0b3I8UmVmPFdlYktpdE5hbWVkRmxvdz4+JiYgZmxvd3MpCi0gICAgOiBtX2Zsb3dz
KFdURk1vdmUoZmxvd3MpKQotewotfQotCi1SZWY8RE9NTmFtZWRGbG93Q29sbGVjdGlvbj4gRE9N
TmFtZWRGbG93Q29sbGVjdGlvbjo6Y3JlYXRlKFZlY3RvcjxSZWY8V2ViS2l0TmFtZWRGbG93Pj4m
JiBmbG93cykKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBET01OYW1lZEZsb3dDb2xsZWN0
aW9uKFdURk1vdmUoZmxvd3MpKSk7Ci19Ci0KLURPTU5hbWVkRmxvd0NvbGxlY3Rpb246On5ET01O
YW1lZEZsb3dDb2xsZWN0aW9uKCkKLXsKLX0KLQotV2ViS2l0TmFtZWRGbG93KiBET01OYW1lZEZs
b3dDb2xsZWN0aW9uOjppdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdAotewotICAgIGlmIChpbmRl
eCA+PSBtX2Zsb3dzLnNpemUoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJu
IGNvbnN0X2Nhc3Q8V2ViS2l0TmFtZWRGbG93Kj4obV9mbG93c1tpbmRleF0ucHRyKCkpOwotfQot
Ci1zdHJ1Y3QgRE9NTmFtZWRGbG93Q29sbGVjdGlvbjo6SGFzaEZ1bmN0aW9ucyB7Ci0gICAgc3Rh
dGljIHVuc2lnbmVkIGhhc2goY29uc3QgV2ViS2l0TmFtZWRGbG93KiBrZXkpIHsgcmV0dXJuIEF0
b21pY1N0cmluZ0hhc2g6Omhhc2goa2V5LT5uYW1lKCkpOyB9Ci0gICAgc3RhdGljIGJvb2wgZXF1
YWwoY29uc3QgV2ViS2l0TmFtZWRGbG93KiBhLCBjb25zdCBXZWJLaXROYW1lZEZsb3cqIGIpIHsg
cmV0dXJuIGEtPm5hbWUoKSA9PSBiLT5uYW1lKCk7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBz
YWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IGZhbHNlOwotCi0gICAgc3RhdGljIHVuc2ln
bmVkIGhhc2goY29uc3QgQXRvbWljU3RyaW5nJiBrZXkpIHsgcmV0dXJuIEF0b21pY1N0cmluZ0hh
c2g6Omhhc2goa2V5KTsgfQotICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFdlYktpdE5hbWVk
RmxvdyogYSwgY29uc3QgQXRvbWljU3RyaW5nJiBiKSB7IHJldHVybiBhLT5uYW1lKCkgPT0gYjsg
fQotfTsKLQotV2ViS2l0TmFtZWRGbG93KiBET01OYW1lZEZsb3dDb2xsZWN0aW9uOjpuYW1lZEl0
ZW0oY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKSBjb25zdAotewotICAgIGlmIChtX2Zsb3dzQnlO
YW1lLmlzRW1wdHkoKSkgewotICAgICAgICAvLyBObyBuZWVkIHRvIG9wdGltaXplIHRoZSBjYXNl
IHdoZXJlIG1fZmxvd3MgaXMgZW1wdHk7IHdpbGwgZG8gbm90aGluZyB2ZXJ5IHF1aWNrbHkuCi0g
ICAgICAgIGZvciAoYXV0byYgZmxvdyA6IG1fZmxvd3MpCi0gICAgICAgICAgICBtX2Zsb3dzQnlO
YW1lLmFkZChjb25zdF9jYXN0PFdlYktpdE5hbWVkRmxvdyo+KGZsb3cucHRyKCkpKTsKLSAgICB9
Ci0gICAgYXV0byBpdCA9IG1fZmxvd3NCeU5hbWUuZmluZDxIYXNoRnVuY3Rpb25zPihuYW1lKTsK
LSAgICBpZiAoaXQgPT0gbV9mbG93c0J5TmFtZS5lbmQoKSkKLSAgICAgICAgcmV0dXJuIG51bGxw
dHI7Ci0gICAgcmV0dXJuICppdDsKLX0KLQotY29uc3QgVmVjdG9yPEF0b21pY1N0cmluZz4mIERP
TU5hbWVkRmxvd0NvbGxlY3Rpb246OnN1cHBvcnRlZFByb3BlcnR5TmFtZXMoKQotewotICAgIGlm
IChtX2Zsb3dOYW1lcy5pc0VtcHR5KCkpIHsKLSAgICAgICAgLy8gTm8gbmVlZCB0byBvcHRpbWl6
ZSB0aGUgY2FzZSB3aGVyZSBtX2Zsb3dzIGlzIGVtcHR5OyB3aWxsIGRvIG5vdGhpbmcgcmVsYXRp
dmVseSBxdWlja2x5LgotICAgICAgICBtX2Zsb3dOYW1lcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5
KG1fZmxvd3Muc2l6ZSgpKTsKLSAgICAgICAgZm9yIChhdXRvJiBmbG93IDogbV9mbG93cykKLSAg
ICAgICAgICAgIG1fZmxvd05hbWVzLnVuY2hlY2tlZEFwcGVuZChmbG93LT5uYW1lKCkpOwotICAg
IH0KLSAgICByZXR1cm4gbV9mbG93TmFtZXM7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9ET01OYW1lZEZsb3dDb2xsZWN0aW9uLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RPTU5hbWVkRmxvd0NvbGxlY3Rpb24uaAkocmV2
aXNpb24gMjIyMjU3KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RPTU5hbWVkRmxvd0NvbGxlY3Rp
b24uaAkobm9uZXhpc3RlbnQpCkBAIC0xLDY3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTIgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUKLSAqICAgIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
Ci0gKiAgICBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKLSAqICAgIGRpc2NsYWltZXIgaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscwotICogICAgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVIgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUIEhPTERFUiBCRQotICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLAotICogT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUgotICogVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GCi0gKiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKLSAqIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRl
IDx3dGYvSGFzaFNldC5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFdlYktpdE5hbWVk
RmxvdzsKLQotY2xhc3MgRE9NTmFtZWRGbG93Q29sbGVjdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVk
PERPTU5hbWVkRmxvd0NvbGxlY3Rpb24+IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPERPTU5h
bWVkRmxvd0NvbGxlY3Rpb24+IGNyZWF0ZShWZWN0b3I8UmVmPFdlYktpdE5hbWVkRmxvdz4+JiYp
OwotICAgIH5ET01OYW1lZEZsb3dDb2xsZWN0aW9uKCk7Ci0KLSAgICB1bnNpZ25lZCBsZW5ndGgo
KSBjb25zdDsKLSAgICBXZWJLaXROYW1lZEZsb3cqIGl0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0
OwotICAgIFdlYktpdE5hbWVkRmxvdyogbmFtZWRJdGVtKGNvbnN0IEF0b21pY1N0cmluZyYgbmFt
ZSkgY29uc3Q7Ci0gICAgY29uc3QgVmVjdG9yPEF0b21pY1N0cmluZz4mIHN1cHBvcnRlZFByb3Bl
cnR5TmFtZXMoKTsKLQotcHJpdmF0ZToKLSAgICBzdHJ1Y3QgSGFzaEZ1bmN0aW9uczsKLQotICAg
IGV4cGxpY2l0IERPTU5hbWVkRmxvd0NvbGxlY3Rpb24oVmVjdG9yPFJlZjxXZWJLaXROYW1lZEZs
b3c+PiYmKTsKLQotICAgIGNvbnN0IFZlY3RvcjxSZWY8V2ViS2l0TmFtZWRGbG93Pj4gbV9mbG93
czsKLSAgICBtdXRhYmxlIEhhc2hTZXQ8V2ViS2l0TmFtZWRGbG93KiwgSGFzaEZ1bmN0aW9ucz4g
bV9mbG93c0J5TmFtZTsKLSAgICBtdXRhYmxlIFZlY3RvcjxBdG9taWNTdHJpbmc+IG1fZmxvd05h
bWVzOwotfTsKLQotaW5saW5lIHVuc2lnbmVkIERPTU5hbWVkRmxvd0NvbGxlY3Rpb246Omxlbmd0
aCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fZmxvd3Muc2l6ZSgpOwotfQotCi19IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRE9NTmFtZWRGbG93Q29sbGVj
dGlvbi5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RPTU5hbWVkRmxvd0Nv
bGxlY3Rpb24uaWRsCShyZXZpc2lvbiAyMjIyNTcpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRE9N
TmFtZWRGbG93Q29sbGVjdGlvbi5pZGwJKG5vbmV4aXN0ZW50KQpAQCAtMSw0MSArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDEyIEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUKLSAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nCi0gKiAgICBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogICAgY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcK
LSAqICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscwotICogICAgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVIgIkFTIElTIiBBTkQg
QU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBCRQotICogTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLAot
ICogT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUgotICogVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GCi0gKiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YKLSAqIFNVQ0ggREFNQUdFLgotICovCi0KLVsKLSAgICBDb25kaXRpb25hbD1DU1NfUkVHSU9O
UywKLSAgICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlLAotICAgIEludGVyZmFjZU5hbWU9V2Vi
S2l0TmFtZWRGbG93Q29sbGVjdGlvbiwKLSAgICBKU0dlbmVyYXRlVG9KU09iamVjdCwKLSAgICBM
ZWdhY3lVbmVudW1lcmFibGVOYW1lZFByb3BlcnRpZXMsCi0gICAgTm9JbnRlcmZhY2VPYmplY3QK
LV0gaW50ZXJmYWNlIERPTU5hbWVkRmxvd0NvbGxlY3Rpb24gewotICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSB1bnNpZ25lZCBsb25nIGxlbmd0aDsKLSAgICBnZXR0ZXIgV2ViS2l0TmFtZWRGbG93PyBp
dGVtKHVuc2lnbmVkIGxvbmcgaW5kZXgpOwotICAgIGdldHRlciBXZWJLaXROYW1lZEZsb3c/IG5h
bWVkSXRlbShET01TdHJpbmcgbmFtZSk7Ci19OwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3Bw
CShyZXZpc2lvbiAyMjIyNTcpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC01MSw3ICs1MSw2IEBACiAjaW5jbHVkZSAiQ3VzdG9tRWxlbWVudFJl
Z2lzdHJ5LmgiCiAjaW5jbHVkZSAiQ3VzdG9tRXZlbnQuaCIKICNpbmNsdWRlICJET01JbXBsZW1l
bnRhdGlvbi5oIgotI2luY2x1ZGUgIkRPTU5hbWVkRmxvd0NvbGxlY3Rpb24uaCIKICNpbmNsdWRl
ICJET01XaW5kb3cuaCIKICNpbmNsdWRlICJEYXRlQ29tcG9uZW50cy5oIgogI2luY2x1ZGUgIkRl
YnVnUGFnZU92ZXJsYXlzLmgiCkBAIC0xMTgsNyArMTE3LDYgQEAKICNpbmNsdWRlICJNb3VzZUV2
ZW50V2l0aEhpdFRlc3RSZXN1bHRzLmgiCiAjaW5jbHVkZSAiTXV0YXRpb25FdmVudC5oIgogI2lu
Y2x1ZGUgIk5hbWVOb2RlTGlzdC5oIgotI2luY2x1ZGUgIk5hbWVkRmxvd0NvbGxlY3Rpb24uaCIK
ICNpbmNsdWRlICJOYXZpZ2F0aW9uRGlzYWJsZXIuaCIKICNpbmNsdWRlICJOYXZpZ2F0aW9uU2No
ZWR1bGVyLmgiCiAjaW5jbHVkZSAiTmVzdGluZ0xldmVsSW5jcmVtZW50ZXIuaCIKQEAgLTExNTMs
MjggKzExNTEsNiBAQCBib29sIERvY3VtZW50Ojppc0NTU0dyaWRMYXlvdXRFbmFibGVkKCkgCiAg
ICAgcmV0dXJuIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuaXNDU1NH
cmlkTGF5b3V0RW5hYmxlZCgpOwogfQogCi0jaWYgRU5BQkxFKENTU19SRUdJT05TKQotCi1SZWZQ
dHI8RE9NTmFtZWRGbG93Q29sbGVjdGlvbj4gRG9jdW1lbnQ6OndlYmtpdEdldE5hbWVkRmxvd3Mo
KQotewotICAgIGlmICghcmVuZGVyVmlldygpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQot
ICAgIHVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKLQotICAgIHJldHVybiBuYW1lZEZsb3dzKCkuY3Jl
YXRlQ1NTT01TbmFwc2hvdCgpOwotfQotCi0jZW5kaWYKLQotTmFtZWRGbG93Q29sbGVjdGlvbiYg
RG9jdW1lbnQ6Om5hbWVkRmxvd3MoKQotewotICAgIGlmICghbV9uYW1lZEZsb3dzKQotICAgICAg
ICBtX25hbWVkRmxvd3MgPSBOYW1lZEZsb3dDb2xsZWN0aW9uOjpjcmVhdGUodGhpcyk7Ci0KLSAg
ICByZXR1cm4gKm1fbmFtZWRGbG93czsKLX0KLQogRXhjZXB0aW9uT3I8UmVmPEVsZW1lbnQ+PiBE
b2N1bWVudDo6Y3JlYXRlRWxlbWVudE5TKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZXNwYWNlVVJJ
LCBjb25zdCBTdHJpbmcmIHF1YWxpZmllZE5hbWUpCiB7CiAgICAgYXV0byBwYXJzZVJlc3VsdCA9
IHBhcnNlUXVhbGlmaWVkTmFtZShuYW1lc3BhY2VVUkksIHF1YWxpZmllZE5hbWUpOwpAQCAtMjAz
NiwxMCArMjAxMiw4IEBAIGJvb2wgRG9jdW1lbnQ6OnVwZGF0ZUxheW91dElmRGltZW5zaW9uc08K
ICAgICB1cGRhdGVTdHlsZUlmTmVlZGVkKCk7CiAKICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVy
ID0gZWxlbWVudC5yZW5kZXJlcigpOwotICAgIGlmICghcmVuZGVyZXIgfHwgcmVuZGVyZXItPm5l
ZWRzTGF5b3V0KCkgfHwgZWxlbWVudC5yZW5kZXJOYW1lZEZsb3dGcmFnbWVudCgpKSB7CisgICAg
aWYgKCFyZW5kZXJlciB8fCByZW5kZXJlci0+bmVlZHNMYXlvdXQoKSkgewogICAgICAgICAvLyBJ
ZiB3ZSBkb24ndCBoYXZlIGEgcmVuZGVyZXIgb3IgaWYgdGhlIHJlbmRlcmVyIG5lZWRzIGxheW91
dCBmb3IgYW55IHJlYXNvbiwgZ2l2ZSB1cC4KLSAgICAgICAgLy8gTmFtZWQgZmxvd3MgY2FuIGhh
dmUgYXV0byBoZWlnaHQsIHNvIGRvbid0IHRyeSB0byBlbmZvcmNlIHRoZSBvcHRpbWl6YXRpb24g
aW4gdGhpcyBjYXNlLgotICAgICAgICAvLyBUaGUgMi1wYXNzIG5hdHVyZSBvZiBhdXRvIGhlaWdo
dCBuYW1lZCBmbG93IGxheW91dCBtZWFucyB0aGUgcmVnaW9uIG1heSBub3QgYmUgZGlydHkgeWV0
LgogICAgICAgICByZXF1aXJlRnVsbExheW91dCA9IHRydWU7CiAgICAgfQogCkBAIC0yMDg1LDcg
KzIwNTksNyBAQCBib29sIERvY3VtZW50Ojp1cGRhdGVMYXlvdXRJZkRpbWVuc2lvbnNPCiAgICAg
ICAgICAgICBpZiAoIWN1cnJlbnRCb3gtPmlzUmVuZGVyQmxvY2tGbG93KCkgfHwgY3VycmVudEJv
eC0+Zmxvd1RocmVhZENvbnRhaW5pbmdCbG9jaygpIHx8IGN1cnJlbnRCb3gtPmlzV3JpdGluZ01v
ZGVSb290KCkpIHsKICAgICAgICAgICAgICAgICAvLyBGSVhNRTogRm9yIG5vdyByZXF1aXJlIG9u
bHkgYmxvY2sgZmxvd3MgYWxsIHRoZSB3YXkgYmFjayB0byB0aGUgcm9vdC4gVGhpcyBsaW1pdHMg
dGhlIG9wdGltaXphdGlvbgogICAgICAgICAgICAgICAgIC8vIGZvciBub3csIGFuZCB3ZSdsbCBl
eHBhbmQgaXQgaW4gZnV0dXJlIHBhdGNoZXMgdG8gYXBwbHkgdG8gbW9yZSBhbmQgbW9yZSBzY2Vu
YXJpb3MuCi0gICAgICAgICAgICAgICAgLy8gRGlzYWxsb3cgcmVnaW9ucy9jb2x1bW5zIGZyb20g
aGF2aW5nIHRoZSBvcHRpbWl6YXRpb24uCisgICAgICAgICAgICAgICAgLy8gRGlzYWxsb3cgY29s
dW1ucyBmcm9tIGhhdmluZyB0aGUgb3B0aW1pemF0aW9uLgogICAgICAgICAgICAgICAgIC8vIEdp
dmUgdXAgaWYgdGhlIHdyaXRpbmcgbW9kZSBjaGFuZ2VzIGF0IGFsbCBpbiB0aGUgY29udGFpbmlu
ZyBibG9jayBjaGFpbi4KICAgICAgICAgICAgICAgICByZXF1aXJlRnVsbExheW91dCA9IHRydWU7
CiAgICAgICAgICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAkocmV2aXNp
b24gMjIyMjU3KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTk3LDcgKzk3LDYgQEAgY2xhc3MgQ2hhcmFjdGVyRGF0YTsKIGNsYXNzIENvbW1lbnQ7
CiBjbGFzcyBDb25zdGFudFByb3BlcnR5TWFwOwogY2xhc3MgRE9NSW1wbGVtZW50YXRpb247Ci1j
bGFzcyBET01OYW1lZEZsb3dDb2xsZWN0aW9uOwogY2xhc3MgRE9NU2VsZWN0aW9uOwogY2xhc3Mg
RE9NV2luZG93OwogY2xhc3MgRE9NV3JhcHBlcldvcmxkOwpAQCAtMTQ2LDcgKzE0NSw2IEBAIGNs
YXNzIE1lZGlhUGxheWJhY2tUYXJnZXRDbGllbnQ7CiBjbGFzcyBNZWRpYVF1ZXJ5TGlzdDsKIGNs
YXNzIE1lZGlhUXVlcnlNYXRjaGVyOwogY2xhc3MgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0
czsKLWNsYXNzIE5hbWVkRmxvd0NvbGxlY3Rpb247CiBjbGFzcyBOb2RlRmlsdGVyOwogY2xhc3Mg
Tm9kZUl0ZXJhdG9yOwogY2xhc3MgUGFnZTsKQEAgLTQwOCwxMSArNDA2LDYgQEAgcHVibGljOgog
ICAgIHN0YXRpYyBDdXN0b21FbGVtZW50TmFtZVZhbGlkYXRpb25TdGF0dXMgdmFsaWRhdGVDdXN0
b21FbGVtZW50TmFtZShjb25zdCBBdG9taWNTdHJpbmcmKTsKIAogICAgIGJvb2wgaXNDU1NHcmlk
TGF5b3V0RW5hYmxlZCgpIGNvbnN0OwotI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKLSAgICBSZWZQ
dHI8RE9NTmFtZWRGbG93Q29sbGVjdGlvbj4gd2Via2l0R2V0TmFtZWRGbG93cygpOwotI2VuZGlm
Ci0KLSAgICBOYW1lZEZsb3dDb2xsZWN0aW9uJiBuYW1lZEZsb3dzKCk7CiAKICAgICBXRUJDT1JF
X0VYUE9SVCBSZWZQdHI8UmFuZ2U+IGNhcmV0UmFuZ2VGcm9tUG9pbnQoaW50IHgsIGludCB5KTsK
ICAgICBSZWZQdHI8UmFuZ2U+IGNhcmV0UmFuZ2VGcm9tUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQm
IGNsaWVudFBvaW50KTsKQEAgLTE2NzIsOCArMTY2NSw2IEBAIHByaXZhdGU6CiAKICAgICBUaW1l
ciBtX3Zpc3VhbFVwZGF0ZXNTdXBwcmVzc2lvblRpbWVyOwogCi0gICAgUmVmUHRyPE5hbWVkRmxv
d0NvbGxlY3Rpb24+IG1fbmFtZWRGbG93czsKLQogICAgIHZvaWQgY2xlYXJTaGFyZWRPYmplY3RQ
b29sKCk7CiAgICAgVGltZXIgbV9zaGFyZWRPYmplY3RQb29sQ2xlYXJUaW1lcjsKIApJbmRleDog
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuaWRsCShyZXZpc2lvbiAyMjIyNTcpCisrKyBTb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xODksOSArMTg5LDYgQEAgdHlw
ZWRlZiAoCiAgICAgLy8gRklYTUU6IFRoaXMgaXMgbm90IHN0YW5kYXJkIGFuZCBoYXMgYmVlbiBk
cm9wcGVkIGZyb20gQmxpbmsgYWxyZWFkeS4KICAgICBSZW5kZXJpbmdDb250ZXh0PyBnZXRDU1ND
YW52YXNDb250ZXh0KERPTVN0cmluZyBjb250ZXh0SWQsIERPTVN0cmluZyBuYW1lLCBsb25nIHdp
ZHRoLCBsb25nIGhlaWdodCk7CiAKLSAgICAvLyBOb24gc3RhbmRhcmQgKGh0dHBzOi8vZGV2ZWxv
cGVyLmFwcGxlLmNvbS9yZWZlcmVuY2Uvd2Via2l0anMvZG9jdW1lbnQvMTYzMzg2My13ZWJraXRn
ZXRuYW1lZGZsb3dzKS4KLSAgICBbQ29uZGl0aW9uYWw9Q1NTX1JFR0lPTlNdIERPTU5hbWVkRmxv
d0NvbGxlY3Rpb24gd2Via2l0R2V0TmFtZWRGbG93cygpOwotCiAgICAgLy8gTm9uIHN0YW5kYXJk
LCB0byBicmluZyB1cCB3aXRoIHN0YW5kYXJkcyB3b3JraW5nIGdyb3VwLgogICAgIFtFbmFibGVk
QnlTZXR0aW5nPVN0b3JhZ2VBY2Nlc3NBUEldIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIGhh
c1N0b3JhZ2VBY2Nlc3M7CiAgICAgW0VuYWJsZWRCeVNldHRpbmc9U3RvcmFnZUFjY2Vzc0FQSV0g
UHJvbWlzZTxib29sZWFuPiByZXF1ZXN0U3RvcmFnZUFjY2VzcygpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvZG9tL0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9F
bGVtZW50LmNwcAkocmV2aXNpb24gMjIyMjU3KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCw3ICs0OCw2IEBACiAjaW5jbHVkZSAiRXZlbnRE
aXNwYXRjaGVyLmgiCiAjaW5jbHVkZSAiRXZlbnRIYW5kbGVyLmgiCiAjaW5jbHVkZSAiRXZlbnRO
YW1lcy5oIgotI2luY2x1ZGUgIkZsb3dUaHJlYWRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiRm9j
dXNDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiRm9jdXNFdmVudC5oIgogI2luY2x1ZGUgIkZyYW1l
U2VsZWN0aW9uLmgiCkBAIC03OSwxMCArNzgsOCBAQAogI2luY2x1ZGUgIk5vZGVSZW5kZXJTdHls
ZS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtV2hlZWxFdmVudC5oIgogI2luY2x1ZGUgIlBvaW50ZXJM
b2NrQ29udHJvbGxlci5oIgotI2luY2x1ZGUgIlJlbmRlckZsb3dUaHJlYWQuaCIKICNpbmNsdWRl
ICJSZW5kZXJMYXllci5oIgogI2luY2x1ZGUgIlJlbmRlckxpc3RCb3guaCIKLSNpbmNsdWRlICJS
ZW5kZXJOYW1lZEZsb3dGcmFnbWVudC5oIgogI2luY2x1ZGUgIlJlbmRlclJlZ2lvbi5oIgogI2lu
Y2x1ZGUgIlJlbmRlclRoZW1lLmgiCiAjaW5jbHVkZSAiUmVuZGVyVHJlZVVwZGF0ZXIuaCIKQEAg
LTE4MiwxNSArMTc5LDYgQEAgRWxlbWVudDo6RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0
YQogCiBFbGVtZW50Ojp+RWxlbWVudCgpCiB7Ci0jaWZuZGVmIE5ERUJVRwotICAgIGlmIChkb2N1
bWVudCgpLmhhc0xpdmluZ1JlbmRlclRyZWUoKSkgewotICAgICAgICAvLyBXaGVuIHRoZSBkb2N1
bWVudCBpcyBub3QgZGVzdHJveWVkLCBhbiBlbGVtZW50IHRoYXQgd2FzIHBhcnQgb2YgYSBuYW1l
ZCBmbG93Ci0gICAgICAgIC8vIGNvbnRlbnQgbm9kZXMgc2hvdWxkIGhhdmUgYmVlbiByZW1vdmVk
IGZyb20gdGhlIGNvbnRlbnQgbm9kZXMgY29sbGVjdGlvbgotICAgICAgICAvLyBhbmQgdGhlIGlz
TmFtZWRGbG93Q29udGVudEVsZW1lbnQgZmxhZyByZXNldC4KLSAgICAgICAgQVNTRVJUX1dJVEhf
U0VDVVJJVFlfSU1QTElDQVRJT04oIWlzTmFtZWRGbG93Q29udGVudEVsZW1lbnQoKSk7Ci0gICAg
fQotI2VuZGlmCi0KICAgICBBU1NFUlQoIWJlZm9yZVBzZXVkb0VsZW1lbnQoKSk7CiAgICAgQVNT
RVJUKCFhZnRlclBzZXVkb0VsZW1lbnQoKSk7CiAKQEAgLTE3ODMsMTIgKzE3NzEsNiBAQCB2b2lk
IEVsZW1lbnQ6OnJlbW92ZWRGcm9tKENvbnRhaW5lck5vZGUmCiAjZW5kaWYKIH0KIAotdm9pZCBF
bGVtZW50Ojp1bnJlZ2lzdGVyTmFtZWRGbG93Q29udGVudEVsZW1lbnQoKQotewotICAgIGlmIChp
c05hbWVkRmxvd0NvbnRlbnRFbGVtZW50KCkgJiYgZG9jdW1lbnQoKS5yZW5kZXJWaWV3KCkpCi0g
ICAgICAgIGRvY3VtZW50KCkucmVuZGVyVmlldygpLT5mbG93VGhyZWFkQ29udHJvbGxlcigpLnVu
cmVnaXN0ZXJOYW1lZEZsb3dDb250ZW50RWxlbWVudCgqdGhpcyk7Ci19Ci0KIFNoYWRvd1Jvb3Qq
IEVsZW1lbnQ6OnNoYWRvd1Jvb3QoKSBjb25zdAogewogICAgIHJldHVybiBoYXNSYXJlRGF0YSgp
ID8gZWxlbWVudFJhcmVEYXRhKCktPnNoYWRvd1Jvb3QoKSA6IG51bGxwdHI7CkBAIC0yMTEyLDE2
ICsyMDk0LDYgQEAgdm9pZCBFbGVtZW50OjpzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKAogICAg
IHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBKU0xhenlFdmVudExpc3RlbmVy
OjpjcmVhdGUoKnRoaXMsIGF0dHJpYnV0ZU5hbWUsIGF0dHJpYnV0ZVZhbHVlKSwgbWFpblRocmVh
ZE5vcm1hbFdvcmxkKCkpOwogfQogCi12b2lkIEVsZW1lbnQ6OnNldElzTmFtZWRGbG93Q29udGVu
dEVsZW1lbnQoKQotewotICAgIGVuc3VyZUVsZW1lbnRSYXJlRGF0YSgpLnNldElzTmFtZWRGbG93
Q29udGVudEVsZW1lbnQodHJ1ZSk7Ci19Ci0KLXZvaWQgRWxlbWVudDo6Y2xlYXJJc05hbWVkRmxv
d0NvbnRlbnRFbGVtZW50KCkKLXsKLSAgICBlbnN1cmVFbGVtZW50UmFyZURhdGEoKS5zZXRJc05h
bWVkRmxvd0NvbnRlbnRFbGVtZW50KGZhbHNlKTsKLX0KLQogdm9pZCBFbGVtZW50OjpyZW1vdmVB
bGxFdmVudExpc3RlbmVycygpCiB7CiAgICAgQ29udGFpbmVyTm9kZTo6cmVtb3ZlQWxsRXZlbnRM
aXN0ZW5lcnMoKTsKQEAgLTI4NTMsMTIgKzI4MjUsNiBAQCBib29sIEVsZW1lbnQ6OnJhcmVEYXRh
U3R5bGVBZmZlY3RlZEJ5Rm9jCiAgICAgcmV0dXJuIGVsZW1lbnRSYXJlRGF0YSgpLT5zdHlsZUFm
ZmVjdGVkQnlGb2N1c1dpdGhpbigpOwogfQogCi1ib29sIEVsZW1lbnQ6OnJhcmVEYXRhSXNOYW1l
ZEZsb3dDb250ZW50RWxlbWVudCgpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKGhhc1JhcmVEYXRhKCkp
OwotICAgIHJldHVybiBlbGVtZW50UmFyZURhdGEoKS0+aXNOYW1lZEZsb3dDb250ZW50RWxlbWVu
dCgpOwotfQotCiBib29sIEVsZW1lbnQ6OnJhcmVEYXRhU3R5bGVBZmZlY3RlZEJ5QWN0aXZlKCkg
Y29uc3QKIHsKICAgICBBU1NFUlQoaGFzUmFyZURhdGEoKSk7CkBAIC0yODg5LDE2ICsyODU1LDYg
QEAgdW5zaWduZWQgRWxlbWVudDo6cmFyZURhdGFDaGlsZEluZGV4KCkgYwogICAgIHJldHVybiBl
bGVtZW50UmFyZURhdGEoKS0+Y2hpbGRJbmRleCgpOwogfQogCi12b2lkIEVsZW1lbnQ6OnNldFJl
Z2lvbk92ZXJzZXRTdGF0ZShSZWdpb25PdmVyc2V0U3RhdGUgc3RhdGUpCi17Ci0gICAgZW5zdXJl
RWxlbWVudFJhcmVEYXRhKCkuc2V0UmVnaW9uT3ZlcnNldFN0YXRlKHN0YXRlKTsKLX0KLQotUmVn
aW9uT3ZlcnNldFN0YXRlIEVsZW1lbnQ6OnJlZ2lvbk92ZXJzZXRTdGF0ZSgpIGNvbnN0Ci17Ci0g
ICAgcmV0dXJuIGhhc1JhcmVEYXRhKCkgPyBlbGVtZW50UmFyZURhdGEoKS0+cmVnaW9uT3ZlcnNl
dFN0YXRlKCkgOiBSZWdpb25VbmRlZmluZWQ7Ci19Ci0KIEF0b21pY1N0cmluZyBFbGVtZW50Ojpj
b21wdXRlSW5oZXJpdGVkTGFuZ3VhZ2UoKSBjb25zdAogewogICAgIGlmIChjb25zdCBFbGVtZW50
RGF0YSogZWxlbWVudERhdGEgPSB0aGlzLT5lbGVtZW50RGF0YSgpKSB7CkBAIC0zMTgxLDc2ICsz
MTM3LDYgQEAgYm9vbCBFbGVtZW50Ojppc1NwZWxsQ2hlY2tpbmdFbmFibGVkKCkgYwogICAgIHJl
dHVybiB0cnVlOwogfQogCi1SZW5kZXJOYW1lZEZsb3dGcmFnbWVudCogRWxlbWVudDo6cmVuZGVy
TmFtZWRGbG93RnJhZ21lbnQoKSBjb25zdAotewotICAgIGlmIChyZW5kZXJlcigpICYmIHJlbmRl
cmVyKCktPmlzUmVuZGVyTmFtZWRGbG93RnJhZ21lbnRDb250YWluZXIoKSkKLSAgICAgICAgcmV0
dXJuIGRvd25jYXN0PFJlbmRlckJsb2NrRmxvdz4oKnJlbmRlcmVyKCkpLnJlbmRlck5hbWVkRmxv
d0ZyYWdtZW50KCk7Ci0KLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLQotI2lmIEVOQUJMRShDU1Nf
UkVHSU9OUykKLQotYm9vbCBFbGVtZW50OjpzaG91bGRNb3ZlVG9GbG93VGhyZWFkKGNvbnN0IFJl
bmRlclN0eWxlJiBzdHlsZVRvVXNlKSBjb25zdAotewotI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQ
SSkKLSAgICBpZiAoZG9jdW1lbnQoKS53ZWJraXRJc0Z1bGxTY3JlZW4oKSAmJiBkb2N1bWVudCgp
LndlYmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxlbWVudCgpID09IHRoaXMpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLSNlbmRpZgotCi0gICAgaWYgKGlzSW5TaGFkb3dUcmVlKCkpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLQotICAgIGlmICghc3R5bGVUb1VzZS5oYXNGbG93SW50bygpKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotY29uc3QgQXRvbWljU3Ry
aW5nJiBFbGVtZW50Ojp3ZWJraXRSZWdpb25PdmVyc2V0KCkgY29uc3QKLXsKLSAgICBkb2N1bWVu
dCgpLnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOwotCi0gICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gdW5kZWZpbmVkU3RhdGUoInVuZGVmaW5lZCIs
IEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgIGlmICghcmVuZGVyTmFt
ZWRGbG93RnJhZ21lbnQoKSkKLSAgICAgICAgcmV0dXJuIHVuZGVmaW5lZFN0YXRlOwotCi0gICAg
c3dpdGNoIChyZWdpb25PdmVyc2V0U3RhdGUoKSkgewotICAgIGNhc2UgUmVnaW9uRml0OiB7Ci0g
ICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IGZpdFN0YXRlKCJmaXQi
LCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICAgICAgcmV0dXJuIGZp
dFN0YXRlOwotICAgIH0KLSAgICBjYXNlIFJlZ2lvbkVtcHR5OiB7Ci0gICAgICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IGVtcHR5U3RhdGUoImVtcHR5IiwgQXRvbWljU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgICAgIHJldHVybiBlbXB0eVN0YXRlOwot
ICAgIH0KLSAgICBjYXNlIFJlZ2lvbk92ZXJzZXQ6IHsKLSAgICAgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPEF0b21pY1N0cmluZz4gb3ZlcmZsb3dTdGF0ZSgib3ZlcnNldCIsIEF0b21pY1N0cmlu
Zzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgICAgICByZXR1cm4gb3ZlcmZsb3dTdGF0ZTsK
LSAgICB9Ci0gICAgY2FzZSBSZWdpb25VbmRlZmluZWQ6Ci0gICAgICAgIHJldHVybiB1bmRlZmlu
ZWRTdGF0ZTsKLSAgICB9Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4g
dW5kZWZpbmVkU3RhdGU7Ci19Ci0KLVZlY3RvcjxSZWZQdHI8UmFuZ2U+PiBFbGVtZW50Ojp3ZWJr
aXRHZXRSZWdpb25GbG93UmFuZ2VzKCkgY29uc3QKLXsKLSAgICBWZWN0b3I8UmVmUHRyPFJhbmdl
Pj4gcmFuZ2VPYmplY3RzOwotICAgIGRvY3VtZW50KCkudXBkYXRlTGF5b3V0SWdub3JlUGVuZGlu
Z1N0eWxlc2hlZXRzKCk7Ci0gICAgYXV0byogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpOwot
ICAgIGlmIChyZW5kZXJlciAmJiByZW5kZXJlci0+aXNSZW5kZXJOYW1lZEZsb3dGcmFnbWVudENv
bnRhaW5lcigpKSB7Ci0gICAgICAgIGF1dG8mIG5hbWVkRmxvd0ZyYWdtZW50ID0gKmRvd25jYXN0
PFJlbmRlckJsb2NrRmxvdz4oKnJlbmRlcmVyKS5yZW5kZXJOYW1lZEZsb3dGcmFnbWVudCgpOwot
ICAgICAgICBpZiAobmFtZWRGbG93RnJhZ21lbnQuaXNWYWxpZCgpKQotICAgICAgICAgICAgbmFt
ZWRGbG93RnJhZ21lbnQuZ2V0UmFuZ2VzKHJhbmdlT2JqZWN0cyk7Ci0gICAgfQotICAgIHJldHVy
biByYW5nZU9iamVjdHM7Ci19Ci0KLSNlbmRpZgotCiAjaWZuZGVmIE5ERUJVRwogYm9vbCBFbGVt
ZW50OjpmYXN0QXR0cmlidXRlTG9va3VwQWxsb3dlZChjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1l
KSBjb25zdAogewpAQCAtMzUyMCw3ICszNDA2LDYgQEAgdm9pZCBFbGVtZW50OjpyZXNldFN0eWxl
UmVsYXRpb25zKCkKIAogdm9pZCBFbGVtZW50OjpjbGVhclN0eWxlRGVyaXZlZERhdGFCZWZvcmVE
ZXRhY2hpbmdSZW5kZXJlcigpCiB7Ci0gICAgdW5yZWdpc3Rlck5hbWVkRmxvd0NvbnRlbnRFbGVt
ZW50KCk7CiAgICAgY2xlYXJCZWZvcmVQc2V1ZG9FbGVtZW50KCk7CiAgICAgY2xlYXJBZnRlclBz
ZXVkb0VsZW1lbnQoKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAkocmV2aXNpb24gMjIyMjU3
KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjgs
NyArMjgsNiBAQAogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRWxlbWVudERhdGEu
aCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKLSNpbmNsdWRlICJSZWdpb25PdmVyc2V0U3RhdGUu
aCIKICNpbmNsdWRlICJTY3JvbGxUb09wdGlvbnMuaCIKICNpbmNsdWRlICJTY3JvbGxUeXBlcy5o
IgogI2luY2x1ZGUgIlNoYWRvd1Jvb3RNb2RlLmgiCkBAIC01Miw3ICs1MSw2IEBAIGNsYXNzIFBs
YXRmb3JtS2V5Ym9hcmRFdmVudDsKIGNsYXNzIFBsYXRmb3JtTW91c2VFdmVudDsKIGNsYXNzIFBs
YXRmb3JtV2hlZWxFdmVudDsKIGNsYXNzIFBzZXVkb0VsZW1lbnQ7Ci1jbGFzcyBSZW5kZXJOYW1l
ZEZsb3dGcmFnbWVudDsKIGNsYXNzIFJlbmRlclRyZWVQb3NpdGlvbjsKIGNsYXNzIFdlYkFuaW1h
dGlvbjsKIHN0cnVjdCBFbGVtZW50U3R5bGU7CkBAIC0zNDUsOSArMzQzLDYgQEAgcHVibGljOgog
ICAgIHZvaWQgc2V0U3R5bGVJc0FmZmVjdGVkQnlQcmV2aW91c1NpYmxpbmcoKSB7IHNldEZsYWco
U3R5bGVJc0FmZmVjdGVkQnlQcmV2aW91c1NpYmxpbmcpOyB9CiAgICAgdm9pZCBzZXRDaGlsZElu
ZGV4KHVuc2lnbmVkKTsKIAotICAgIHZvaWQgc2V0UmVnaW9uT3ZlcnNldFN0YXRlKFJlZ2lvbk92
ZXJzZXRTdGF0ZSk7Ci0gICAgUmVnaW9uT3ZlcnNldFN0YXRlIHJlZ2lvbk92ZXJzZXRTdGF0ZSgp
IGNvbnN0OwotCiAgICAgQXRvbWljU3RyaW5nIGNvbXB1dGVJbmhlcml0ZWRMYW5ndWFnZSgpIGNv
bnN0OwogICAgIExvY2FsZSYgbG9jYWxlKCkgY29uc3Q7CiAKQEAgLTQ2NywxNSArNDYyLDYgQEAg
cHVibGljOgogCiAgICAgYm9vbCBpc1NwZWxsQ2hlY2tpbmdFbmFibGVkKCkgY29uc3Q7CiAKLSAg
ICBSZW5kZXJOYW1lZEZsb3dGcmFnbWVudCogcmVuZGVyTmFtZWRGbG93RnJhZ21lbnQoKSBjb25z
dDsKLQotI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkTW92
ZVRvRmxvd1RocmVhZChjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0OwotICAgIAotICAgIFdFQkNP
UkVfRVhQT1JUIGNvbnN0IEF0b21pY1N0cmluZyYgd2Via2l0UmVnaW9uT3ZlcnNldCgpIGNvbnN0
OwotICAgIFZlY3RvcjxSZWZQdHI8UmFuZ2U+PiB3ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCkg
Y29uc3Q7Ci0jZW5kaWYKLQogICAgIGJvb2wgaGFzSUQoKSBjb25zdDsKICAgICBib29sIGhhc0Ns
YXNzKCkgY29uc3Q7CiAgICAgYm9vbCBoYXNOYW1lKCkgY29uc3Q7CkBAIC01NTMsMTAgKzUzOSw2
IEBAIHB1YmxpYzoKICAgICB1c2luZyBDb250YWluZXJOb2RlOjpzZXRBdHRyaWJ1dGVFdmVudExp
c3RlbmVyOwogICAgIHZvaWQgc2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNT
dHJpbmcmIGV2ZW50VHlwZSwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgY29u
c3QgQXRvbWljU3RyaW5nJiB2YWx1ZSk7CiAKLSAgICBib29sIGlzTmFtZWRGbG93Q29udGVudEVs
ZW1lbnQoKSBjb25zdCB7IHJldHVybiBoYXNSYXJlRGF0YSgpICYmIHJhcmVEYXRhSXNOYW1lZEZs
b3dDb250ZW50RWxlbWVudCgpOyB9Ci0gICAgdm9pZCBzZXRJc05hbWVkRmxvd0NvbnRlbnRFbGVt
ZW50KCk7Ci0gICAgdm9pZCBjbGVhcklzTmFtZWRGbG93Q29udGVudEVsZW1lbnQoKTsKLQogI2lm
IEVOQUJMRShXRUJfQU5JTUFUSU9OUykKICAgICBWZWN0b3I8V2ViQW5pbWF0aW9uKj4gZ2V0QW5p
bWF0aW9ucygpOwogI2VuZGlmCkBAIC02NTAsNyArNjMyLDYgQEAgcHJpdmF0ZToKIAogICAgIGJv
b2wgcmFyZURhdGFTdHlsZUFmZmVjdGVkQnlFbXB0eSgpIGNvbnN0OwogICAgIGJvb2wgcmFyZURh
dGFTdHlsZUFmZmVjdGVkQnlGb2N1c1dpdGhpbigpIGNvbnN0OwotICAgIGJvb2wgcmFyZURhdGFJ
c05hbWVkRmxvd0NvbnRlbnRFbGVtZW50KCkgY29uc3Q7CiAgICAgYm9vbCByYXJlRGF0YUNoaWxk
cmVuQWZmZWN0ZWRCeUhvdmVyKCkgY29uc3Q7CiAgICAgYm9vbCByYXJlRGF0YVN0eWxlQWZmZWN0
ZWRCeUFjdGl2ZSgpIGNvbnN0OwogICAgIGJvb2wgcmFyZURhdGFDaGlsZHJlbkFmZmVjdGVkQnlE
cmFnKCkgY29uc3Q7CkBAIC02NjEsOCArNjQyLDYgQEAgcHJpdmF0ZToKIAogICAgIFNwZWxsY2hl
Y2tBdHRyaWJ1dGVTdGF0ZSBzcGVsbGNoZWNrQXR0cmlidXRlU3RhdGUoKSBjb25zdDsKIAotICAg
IHZvaWQgdW5yZWdpc3Rlck5hbWVkRmxvd0NvbnRlbnRFbGVtZW50KCk7Ci0KICAgICB2b2lkIGNy
ZWF0ZVVuaXF1ZUVsZW1lbnREYXRhKCk7CiAKICAgICBFbGVtZW50UmFyZURhdGEqIGVsZW1lbnRS
YXJlRGF0YSgpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaWRsCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmlkbAkocmV2aXNpb24gMjIy
MjU3KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBA
IC0xMDAsMTIgKzEwMCw2IEBACiAgICAgLy8gRXh0ZW5zaW9ucyBmcm9tIFBvaW50ZXIgTG9jayBB
UEkgKGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9wb2ludGVybG9jay8jZXh0ZW5zaW9ucy10by10aGUt
ZWxlbWVudC1pbnRlcmZhY2UpLgogICAgIFtDb25kaXRpb25hbD1QT0lOVEVSX0xPQ0tdIHZvaWQg
cmVxdWVzdFBvaW50ZXJMb2NrKCk7CiAKLSAgICAvLyBFeHRlbnNpb25zIGZyb20gQ1NTIFJlZ2lv
bnMgQVBJIChodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLXJlZ2lvbnMvI3RoZS1yZWdpb24t
aW50ZXJmYWNlKS4KLSAgICAvLyBGSVhNRTogU2hvdWxkIGJlIGluIGEgc2VwYXJhdGUgUmVnaW9u
IGludGVyZmFjZSBpbXBsZW1lbnRlZCBieSBFbGVtZW50LgotICAgIC8vIEZJWE1FOiBTaG91bGQg
d2UgYWRkIHVucHJlZml4ZWQgdmVyc2lvbnM/Ci0gICAgW0NvbmRpdGlvbmFsPUNTU19SRUdJT05T
XSByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHdlYmtpdFJlZ2lvbk92ZXJzZXQ7Ci0gICAg
W0NvbmRpdGlvbmFsPUNTU19SRUdJT05TXSBzZXF1ZW5jZTxSYW5nZT4/IHdlYmtpdEdldFJlZ2lv
bkZsb3dSYW5nZXMoKTsKLQogICAgIC8vIE5vbiBzdGFuZGFyZCBBUEkgKGh0dHBzOi8vd3d3Lncz
Lm9yZy9CdWdzL1B1YmxpYy9zaG93X2J1Zy5jZ2k/aWQ9MTcxNTIpLgogICAgIHZvaWQgc2Nyb2xs
SW50b1ZpZXdJZk5lZWRlZChvcHRpb25hbCBib29sZWFuIGNlbnRlcklmTmVlZGVkID0gdHJ1ZSk7
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEuY3BwCShyZXZpc2lvbiAy
MjIyNTcpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFJhcmVEYXRhLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDEsNyArNDEsNiBAQCBzdHJ1Y3QgU2FtZVNpemVBc0VsZW1lbnRSYXJlRGF0
YSA6IE5vZGVSCiAjZWxzZQogICAgIHVuc2lnbmVkIGJpdGZpZWxkcyA6IDEwOwogI2VuZGlmCi0g
ICAgUmVnaW9uT3ZlcnNldFN0YXRlIHJlZ2lvbk92ZXJzZXRTdGF0ZTsKICAgICBMYXlvdXRTaXpl
IHNpemVGb3JSZXNpemluZzsKICAgICBJbnRQb2ludCBzYXZlZExheWVyU2Nyb2xsUG9zaXRpb247
CiAgICAgdm9pZCogcG9pbnRlcnNbOF07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dFJhcmVEYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRSYXJl
RGF0YS5oCShyZXZpc2lvbiAyMjIyNTcpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFJh
cmVEYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTYwLDEyICs2MCw2IEBAIHB1YmxpYzoKICAgICBi
b29sIHN0eWxlQWZmZWN0ZWRCeUZvY3VzV2l0aGluKCkgY29uc3QgeyByZXR1cm4gbV9zdHlsZUFm
ZmVjdGVkQnlGb2N1c1dpdGhpbjsgfQogICAgIHZvaWQgc2V0U3R5bGVBZmZlY3RlZEJ5Rm9jdXNX
aXRoaW4oYm9vbCB2YWx1ZSkgeyBtX3N0eWxlQWZmZWN0ZWRCeUZvY3VzV2l0aGluID0gdmFsdWU7
IH0KIAotICAgIFJlZ2lvbk92ZXJzZXRTdGF0ZSByZWdpb25PdmVyc2V0U3RhdGUoKSBjb25zdCB7
IHJldHVybiBtX3JlZ2lvbk92ZXJzZXRTdGF0ZTsgfQotICAgIHZvaWQgc2V0UmVnaW9uT3ZlcnNl
dFN0YXRlKFJlZ2lvbk92ZXJzZXRTdGF0ZSBzdGF0ZSkgeyBtX3JlZ2lvbk92ZXJzZXRTdGF0ZSA9
IHN0YXRlOyB9Ci0KLSAgICBib29sIGlzTmFtZWRGbG93Q29udGVudEVsZW1lbnQoKSBjb25zdCB7
IHJldHVybiBtX2lzTmFtZWRGbG93Q29udGVudEVsZW1lbnQ7IH0KLSAgICB2b2lkIHNldElzTmFt
ZWRGbG93Q29udGVudEVsZW1lbnQoYm9vbCB2YWx1ZSkgeyBtX2lzTmFtZWRGbG93Q29udGVudEVs
ZW1lbnQgPSB2YWx1ZTsgfQotCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQogICAgIGJvb2wg
Y29udGFpbnNGdWxsU2NyZWVuRWxlbWVudCgpIHsgcmV0dXJuIG1fY29udGFpbnNGdWxsU2NyZWVu
RWxlbWVudDsgfQogICAgIHZvaWQgc2V0Q29udGFpbnNGdWxsU2NyZWVuRWxlbWVudChib29sIHZh
bHVlKSB7IG1fY29udGFpbnNGdWxsU2NyZWVuRWxlbWVudCA9IHZhbHVlOyB9CkBAIC0xMzIsOSAr
MTI2LDYgQEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX2NoaWxkcmVuQWZmZWN0ZWRCeUxhc3RD
aGlsZFJ1bGVzIDogMTsKICAgICB1bnNpZ25lZCBtX2NoaWxkcmVuQWZmZWN0ZWRCeUJhY2t3YXJk
UG9zaXRpb25hbFJ1bGVzIDogMTsKICAgICB1bnNpZ25lZCBtX2NoaWxkcmVuQWZmZWN0ZWRCeVBy
b3BlcnR5QmFzZWRCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcyA6IDE7Ci0gICAgdW5zaWduZWQgbV9p
c05hbWVkRmxvd0NvbnRlbnRFbGVtZW50IDogMTsKLQotICAgIFJlZ2lvbk92ZXJzZXRTdGF0ZSBt
X3JlZ2lvbk92ZXJzZXRTdGF0ZTsKIAogICAgIExheW91dFNpemUgbV9taW5pbXVtU2l6ZUZvclJl
c2l6aW5nOwogICAgIEludFBvaW50IG1fc2F2ZWRMYXllclNjcm9sbFBvc2l0aW9uOwpAQCAtMTc0
LDggKzE2NSw2IEBAIGlubGluZSBFbGVtZW50UmFyZURhdGE6OkVsZW1lbnRSYXJlRGF0YSgKICAg
ICAsIG1fY2hpbGRyZW5BZmZlY3RlZEJ5TGFzdENoaWxkUnVsZXMoZmFsc2UpCiAgICAgLCBtX2No
aWxkcmVuQWZmZWN0ZWRCeUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKGZhbHNlKQogICAgICwgbV9j
aGlsZHJlbkFmZmVjdGVkQnlQcm9wZXJ0eUJhc2VkQmFja3dhcmRQb3NpdGlvbmFsUnVsZXMoZmFs
c2UpCi0gICAgLCBtX2lzTmFtZWRGbG93Q29udGVudEVsZW1lbnQoZmFsc2UpCi0gICAgLCBtX3Jl
Z2lvbk92ZXJzZXRTdGF0ZShSZWdpb25VbmRlZmluZWQpCiAgICAgLCBtX21pbmltdW1TaXplRm9y
UmVzaXppbmcoZGVmYXVsdE1pbmltdW1TaXplRm9yUmVzaXppbmcoKSkKIHsKIH0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgkocmV2aXNpb24gMjIyMjU3KQor
KysgU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgkod29ya2luZyBjb3B5
KQpAQCAtNDEsNyArNDEsNiBAQCBUZXh0VHJhY2tMaXN0IGNvbmRpdGlvbmFsPVZJREVPX1RSQUNL
CiBWUkRpc3BsYXkKIFZpZGVvVHJhY2tMaXN0IGNvbmRpdGlvbmFsPVZJREVPX1RSQUNLCiBXZWJL
aXRNZWRpYUtleVNlc3Npb24gY29uZGl0aW9uYWw9TEVHQUNZX0VOQ1JZUFRFRF9NRURJQQotV2Vi
S2l0TmFtZWRGbG93CiBXZWJTb2NrZXQKIFdvcmtlcgogWE1MSHR0cFJlcXVlc3QKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2RvbS9OYW1lZEZsb3dDb2xsZWN0aW9uLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9kb20vTmFtZWRGbG93Q29sbGVjdGlvbi5jcHAJKHJldmlzaW9uIDIyMjI1
NykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9OYW1lZEZsb3dDb2xsZWN0aW9uLmNwcAkobm9uZXhp
c3RlbnQpCkBAIC0xLDEzMSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEFkb2Jl
IFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUKLSAqICAgIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCi0gKiAgICBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQotICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKLSAqICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscwotICogICAgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVIgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUIEhPTERFUiBCRQotICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLAotICogT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUgotICogVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GCi0gKiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKLSAqIFNVQ0ggREFNQUdFLgotICovCi0KLSNp
bmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJOYW1lZEZsb3dDb2xsZWN0aW9uLmgiCi0KLSNp
bmNsdWRlICJET01OYW1lZEZsb3dDb2xsZWN0aW9uLmgiCi0jaW5jbHVkZSAiRG9jdW1lbnQuaCIK
LSNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKLQotI2luY2x1ZGUgPHd0Zi90
ZXh0L1N0cmluZ0hhc2guaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1OYW1lZEZsb3dDb2xs
ZWN0aW9uOjpOYW1lZEZsb3dDb2xsZWN0aW9uKERvY3VtZW50KiBkb2N1bWVudCkKLSAgICA6IENv
bnRleHREZXN0cnVjdGlvbk9ic2VydmVyKGRvY3VtZW50KQotewotfQotCi1WZWN0b3I8UmVmUHRy
PFdlYktpdE5hbWVkRmxvdz4+IE5hbWVkRmxvd0NvbGxlY3Rpb246Om5hbWVkRmxvd3MoKQotewot
ICAgIFZlY3RvcjxSZWZQdHI8V2ViS2l0TmFtZWRGbG93Pj4gbmFtZWRGbG93czsKLQotICAgIGZv
ciAoYXV0byYgbmFtZWRGbG93IDogbV9uYW1lZEZsb3dzKSB7Ci0gICAgICAgIGlmIChuYW1lZEZs
b3ctPmZsb3dTdGF0ZSgpID09IFdlYktpdE5hbWVkRmxvdzo6Rmxvd1N0YXRlTnVsbCkKLSAgICAg
ICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIG5hbWVkRmxvd3MuYXBwZW5kKFJlZlB0cjxXZWJL
aXROYW1lZEZsb3c+KG5hbWVkRmxvdykpOwotICAgIH0KLQotICAgIHJldHVybiBuYW1lZEZsb3dz
OwotfQotCi1XZWJLaXROYW1lZEZsb3cqIE5hbWVkRmxvd0NvbGxlY3Rpb246OmZsb3dCeU5hbWUo
Y29uc3QgU3RyaW5nJiBmbG93TmFtZSkKLXsKLSAgICBOYW1lZEZsb3dTZXQ6Oml0ZXJhdG9yIGl0
ID0gbV9uYW1lZEZsb3dzLmZpbmQ8U3RyaW5nLCBOYW1lZEZsb3dIYXNoVHJhbnNsYXRvcj4oZmxv
d05hbWUpOwotICAgIGlmIChpdCA9PSBtX25hbWVkRmxvd3MuZW5kKCkgfHwgKCppdCktPmZsb3dT
dGF0ZSgpID09IFdlYktpdE5hbWVkRmxvdzo6Rmxvd1N0YXRlTnVsbCkKLSAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0KLSAgICByZXR1cm4gKml0OwotfQotCi1SZWY8V2ViS2l0TmFtZWRGbG93PiBO
YW1lZEZsb3dDb2xsZWN0aW9uOjplbnN1cmVGbG93V2l0aE5hbWUoY29uc3QgU3RyaW5nJiBmbG93
TmFtZSkKLXsKLSAgICBOYW1lZEZsb3dTZXQ6Oml0ZXJhdG9yIGl0ID0gbV9uYW1lZEZsb3dzLmZp
bmQ8U3RyaW5nLCBOYW1lZEZsb3dIYXNoVHJhbnNsYXRvcj4oZmxvd05hbWUpOwotICAgIGlmIChp
dCAhPSBtX25hbWVkRmxvd3MuZW5kKCkpIHsKLSAgICAgICAgV2ViS2l0TmFtZWRGbG93KiBuYW1l
ZEZsb3cgPSAqaXQ7Ci0gICAgICAgIEFTU0VSVChuYW1lZEZsb3ctPmZsb3dTdGF0ZSgpID09IFdl
YktpdE5hbWVkRmxvdzo6Rmxvd1N0YXRlTnVsbCk7Ci0KLSAgICAgICAgcmV0dXJuICpuYW1lZEZs
b3c7Ci0gICAgfQotCi0gICAgUmVmUHRyPFdlYktpdE5hbWVkRmxvdz4gbmV3RmxvdyA9IFdlYktp
dE5hbWVkRmxvdzo6Y3JlYXRlKCp0aGlzLCBmbG93TmFtZSk7Ci0gICAgbV9uYW1lZEZsb3dzLmFk
ZChuZXdGbG93LmdldCgpKTsKLQotICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ3Jl
YXRlTmFtZWRGbG93KGRvY3VtZW50KCksICpuZXdGbG93KTsKLQotICAgIHJldHVybiBuZXdGbG93
LnJlbGVhc2VOb25OdWxsKCk7Ci19Ci0KLXZvaWQgTmFtZWRGbG93Q29sbGVjdGlvbjo6ZGlzY2Fy
ZE5hbWVkRmxvdyhXZWJLaXROYW1lZEZsb3cqIG5hbWVkRmxvdykKLXsKLSAgICAvLyBUaGUgZG9j
dW1lbnQgaXMgbm90IHZhbGlkIGFueW1vcmUgc28gdGhlIGNvbGxlY3Rpb24gd2lsbCBiZSBkZXN0
cm95ZWQgYW55d2F5LgotICAgIGlmICghZG9jdW1lbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgQVNTRVJUKG5hbWVkRmxvdy0+Zmxvd1N0YXRlKCkgPT0gV2ViS2l0TmFtZWRGbG93OjpGbG93
U3RhdGVOdWxsKTsKLSAgICBBU1NFUlQobV9uYW1lZEZsb3dzLmNvbnRhaW5zKG5hbWVkRmxvdykp
OwotCi0gICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUmVtb3ZlTmFtZWRGbG93KGRv
Y3VtZW50KCksICpuYW1lZEZsb3cpOwotCi0gICAgbV9uYW1lZEZsb3dzLnJlbW92ZShuYW1lZEZs
b3cpOwotfQotCi1Eb2N1bWVudCogTmFtZWRGbG93Q29sbGVjdGlvbjo6ZG9jdW1lbnQoKSBjb25z
dAotewotICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQgPSBDb250ZXh0RGVzdHJ1
Y3Rpb25PYnNlcnZlcjo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgIHJldHVybiBkb3du
Y2FzdDxEb2N1bWVudD4oY29udGV4dCk7Ci19Ci0KLVJlZjxET01OYW1lZEZsb3dDb2xsZWN0aW9u
PiBOYW1lZEZsb3dDb2xsZWN0aW9uOjpjcmVhdGVDU1NPTVNuYXBzaG90KCkKLXsKLSAgICBWZWN0
b3I8UmVmPFdlYktpdE5hbWVkRmxvdz4+IGNyZWF0ZWRGbG93czsKLSAgICBmb3IgKGF1dG8mIG5h
bWVkRmxvdyA6IG1fbmFtZWRGbG93cykgewotICAgICAgICBpZiAobmFtZWRGbG93LT5mbG93U3Rh
dGUoKSA9PSBXZWJLaXROYW1lZEZsb3c6OkZsb3dTdGF0ZUNyZWF0ZWQpCi0gICAgICAgICAgICBj
cmVhdGVkRmxvd3MuYXBwZW5kKCpuYW1lZEZsb3cpOwotICAgIH0KLSAgICByZXR1cm4gRE9NTmFt
ZWRGbG93Q29sbGVjdGlvbjo6Y3JlYXRlKFdURk1vdmUoY3JlYXRlZEZsb3dzKSk7Ci19Ci0KLS8v
IFRoZSBIYXNoRnVuY3Rpb25zIG9iamVjdCB1c2VkIGJ5IHRoZSBIYXNoU2V0IHRvIGNvbXBhcmUg
YmV0d2VlbiBOYW1lZEZsb3dzLgotLy8gSXQgaXMgc2FmZSB0byBzZXQgc2FmZVRvQ29tcGFyZVRv
RW1wdHlPckRlbGV0ZWQgYmVjYXVzZSB0aGUgSGFzaFNldCB3aWxsIG5ldmVyIGNvbnRhaW4gbnVs
bCBwb2ludGVycyBvciBkZWxldGVkIHZhbHVlcy4KLXN0cnVjdCBOYW1lZEZsb3dDb2xsZWN0aW9u
OjpOYW1lZEZsb3dIYXNoRnVuY3Rpb25zIHsKLSAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChXZWJL
aXROYW1lZEZsb3cqIGtleSkgeyByZXR1cm4gRGVmYXVsdEhhc2g8U3RyaW5nPjo6SGFzaDo6aGFz
aChrZXktPm5hbWUoKSk7IH0KLSAgICBzdGF0aWMgYm9vbCBlcXVhbChXZWJLaXROYW1lZEZsb3cq
IGEsIFdlYktpdE5hbWVkRmxvdyogYikgeyByZXR1cm4gYS0+bmFtZSgpID09IGItPm5hbWUoKTsg
fQotICAgIHN0YXRpYyBjb25zdCBib29sIHNhZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkID0g
dHJ1ZTsKLX07Ci0KLS8vIFRoZSBIYXNoVHJhbnNsYXRvciBpcyB1c2VkIHRvIGxvb2t1cCBhIE5h
bWVkRmxvdyBpbiB0aGUgc2V0IHVzaW5nIGEgbmFtZS4KLXN0cnVjdCBOYW1lZEZsb3dDb2xsZWN0
aW9uOjpOYW1lZEZsb3dIYXNoVHJhbnNsYXRvciB7Ci0gICAgc3RhdGljIHVuc2lnbmVkIGhhc2go
Y29uc3QgU3RyaW5nJiBrZXkpIHsgcmV0dXJuIERlZmF1bHRIYXNoPFN0cmluZz46Okhhc2g6Omhh
c2goa2V5KTsgfQotICAgIHN0YXRpYyBib29sIGVxdWFsKFdlYktpdE5hbWVkRmxvdyogYSwgY29u
c3QgU3RyaW5nJiBiKSB7IHJldHVybiBhLT5uYW1lKCkgPT0gYjsgfQotfTsKLQotfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL05hbWVkRmxvd0NvbGxlY3Rp
b24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vTmFtZWRGbG93Q29sbGVjdGlv
bi5oCShyZXZpc2lvbiAyMjIyNTcpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vTmFtZWRGbG93Q29s
bGVjdGlvbi5oCShub25leGlzdGVudCkKQEAgLTEsNzEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMiBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlCi0g
KiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZwotICogICAgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqICAgIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCi0gKiAgICBkaXNjbGFp
bWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMKLSAqICAgIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgQkUKLSAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwKLSAqIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IKLSAqIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRgotICogVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCi0gKiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIkNvbnRleHREZXN0cnVjdGlv
bk9ic2VydmVyLmgiCi0jaW5jbHVkZSAiV2ViS2l0TmFtZWRGbG93LmgiCi0jaW5jbHVkZSA8d3Rm
L0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KLSNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1jbGFzcyBEb2N1bWVudDsKLWNsYXNzIERPTU5hbWVkRmxvd0NvbGxlY3Rpb247Ci0K
LWNsYXNzIE5hbWVkRmxvd0NvbGxlY3Rpb24gZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxOYW1l
ZEZsb3dDb2xsZWN0aW9uPiwgcHVibGljIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyIHsKLXB1
YmxpYzoKLSAgICBzdGF0aWMgUmVmPE5hbWVkRmxvd0NvbGxlY3Rpb24+IGNyZWF0ZShEb2N1bWVu
dCogZG9jKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IE5hbWVkRmxvd0NvbGxlY3Rpb24oZG9jKSk7
IH0KLQotICAgIFZlY3RvcjxSZWZQdHI8V2ViS2l0TmFtZWRGbG93Pj4gbmFtZWRGbG93cygpOwot
ICAgIFdlYktpdE5hbWVkRmxvdyogZmxvd0J5TmFtZShjb25zdCBTdHJpbmcmKTsKLSAgICBSZWY8
V2ViS2l0TmFtZWRGbG93PiBlbnN1cmVGbG93V2l0aE5hbWUoY29uc3QgU3RyaW5nJik7Ci0KLSAg
ICB2b2lkIGRpc2NhcmROYW1lZEZsb3coV2ViS2l0TmFtZWRGbG93Kik7Ci0KLSAgICBEb2N1bWVu
dCogZG9jdW1lbnQoKSBjb25zdDsKLQotICAgIHZpcnR1YWwgfk5hbWVkRmxvd0NvbGxlY3Rpb24o
KSB7IH0KLQotICAgIFJlZjxET01OYW1lZEZsb3dDb2xsZWN0aW9uPiBjcmVhdGVDU1NPTVNuYXBz
aG90KCk7Ci0KLXByaXZhdGU6Ci0gICAgc3RydWN0IE5hbWVkRmxvd0hhc2hGdW5jdGlvbnM7Ci0g
ICAgc3RydWN0IE5hbWVkRmxvd0hhc2hUcmFuc2xhdG9yOwotCi0gICAgdHlwZWRlZiBMaXN0SGFz
aFNldDxXZWJLaXROYW1lZEZsb3cqLCBOYW1lZEZsb3dIYXNoRnVuY3Rpb25zPiBOYW1lZEZsb3dT
ZXQ7Ci0KLSAgICBleHBsaWNpdCBOYW1lZEZsb3dDb2xsZWN0aW9uKERvY3VtZW50Kik7Ci0KLSAg
ICBOYW1lZEZsb3dTZXQgbV9uYW1lZEZsb3dzOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1BzZXVkb0VsZW1lbnQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9kb20vUHNldWRvRWxlbWVudC5oCShyZXZpc2lvbiAyMjIyNTcpCisr
KyBTb3VyY2UvV2ViQ29yZS9kb20vUHNldWRvRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00
NCwxMiArNDQsNiBAQCBwdWJsaWM6CiAKICAgICBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3Qg
UmVuZGVyU3R5bGUmKSBvdmVycmlkZTsKIAotICAgIC8vIEFzIHBlciBodHRwOi8vZGV2LnczLm9y
Zy9jc3N3Zy9jc3MzLXJlZ2lvbnMvI2Zsb3ctaW50bywgcHNldWRvLWVsZW1lbnRzIHN1Y2ggYXMg
OjpmaXJzdC1saW5lLCA6OmZpcnN0LWxldHRlciwgOjpiZWZvcmUgb3IgOjphZnRlcgotICAgIC8v
IGNhbm5vdCBiZSBkaXJlY3RseSBjb2xsZWN0ZWQgaW50byBhIG5hbWVkIGZsb3cuCi0jaWYgRU5B
QkxFKENTU19SRUdJT05TKQotICAgIGJvb2wgc2hvdWxkTW92ZVRvRmxvd1RocmVhZChjb25zdCBS
ZW5kZXJTdHlsZSYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0jZW5kaWYKLQog
ICAgIGJvb2wgY2FuU3RhcnRTZWxlY3Rpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxz
ZTsgfQogICAgIGJvb2wgY2FuQ29udGFpblJhbmdlRW5kUG9pbnQoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBmYWxzZTsgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vV2ViS2l0TmFtZWRG
bG93LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vV2ViS2l0TmFtZWRGbG93
LmNwcAkocmV2aXNpb24gMjIyMjU3KQorKysgU291cmNlL1dlYkNvcmUvZG9tL1dlYktpdE5hbWVk
Rmxvdy5jcHAJKG5vbmV4aXN0ZW50KQpAQCAtMSwyMzUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMSBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlCi0g
KiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZwotICogICAgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqICAgIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCi0gKiAgICBkaXNjbGFp
bWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMKLSAqICAgIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIAotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUiAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIEJFCi0gKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksCi0gKiBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SCi0gKiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YKLSAqIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgotICogU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldlYktpdE5hbWVk
Rmxvdy5oIgotCi0jaW5jbHVkZSAiRXZlbnROYW1lcy5oIgotI2luY2x1ZGUgIk5hbWVkRmxvd0Nv
bGxlY3Rpb24uaCIKLSNpbmNsdWRlICJOb0V2ZW50RGlzcGF0Y2hBc3NlcnRpb24uaCIKLSNpbmNs
dWRlICJSZW5kZXJOYW1lZEZsb3dGcmFnbWVudC5oIgotI2luY2x1ZGUgIlJlbmRlck5hbWVkRmxv
d1RocmVhZC5oIgotI2luY2x1ZGUgIlJlbmRlclJlZ2lvbi5oIgotI2luY2x1ZGUgIlN0YXRpY05v
ZGVMaXN0LmgiCi0jaW5jbHVkZSAiVUlFdmVudC5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LVdlYktpdE5hbWVkRmxvdzo6V2ViS2l0TmFtZWRGbG93KE5hbWVkRmxvd0NvbGxlY3Rpb24mIG1h
bmFnZXIsIGNvbnN0IEF0b21pY1N0cmluZyYgZmxvd1RocmVhZE5hbWUpCi0gICAgOiBtX2Zsb3dU
aHJlYWROYW1lKGZsb3dUaHJlYWROYW1lKQotICAgICwgbV9mbG93TWFuYWdlcigmbWFuYWdlcikK
LSAgICAsIG1fcGFyZW50Rmxvd1RocmVhZChudWxscHRyKQotewotfQotCi1XZWJLaXROYW1lZEZs
b3c6On5XZWJLaXROYW1lZEZsb3coKQotewotICAgIC8vIFRoZSBuYW1lZCBmbG93IGlzIG5vdCAi
c3Ryb25nIiByZWZlcmVuY2VkIGZyb20gYW55d2hlcmUgYXQgdGhpcyB0aW1lIHNvIGl0IHNob3Vs
ZG4ndCBiZSByZXVzZWQgaWYgdGhlIG5hbWVkIGZsb3cgaXMgcmVjcmVhdGVkLgotICAgIG1fZmxv
d01hbmFnZXItPmRpc2NhcmROYW1lZEZsb3codGhpcyk7Ci19Ci0KLVJlZjxXZWJLaXROYW1lZEZs
b3c+IFdlYktpdE5hbWVkRmxvdzo6Y3JlYXRlKE5hbWVkRmxvd0NvbGxlY3Rpb24mIG1hbmFnZXIs
IGNvbnN0IEF0b21pY1N0cmluZyYgZmxvd1RocmVhZE5hbWUpCi17Ci0gICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgV2ViS2l0TmFtZWRGbG93KG1hbmFnZXIsIGZsb3dUaHJlYWROYW1lKSk7Ci19Ci0K
LWNvbnN0IEF0b21pY1N0cmluZyYgV2ViS2l0TmFtZWRGbG93OjpuYW1lKCkgY29uc3QKLXsKLSAg
ICByZXR1cm4gbV9mbG93VGhyZWFkTmFtZTsKLX0KLQotYm9vbCBXZWJLaXROYW1lZEZsb3c6Om92
ZXJzZXQoKSBjb25zdAotewotICAgIGlmIChtX2Zsb3dNYW5hZ2VyLT5kb2N1bWVudCgpKQotICAg
ICAgICBtX2Zsb3dNYW5hZ2VyLT5kb2N1bWVudCgpLT51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5n
U3R5bGVzaGVldHMoKTsKLQotICAgIC8vIFRoZSByZW5kZXJlciBtYXkgYmUgZGVzdHJveWVkIG9y
IGNyZWF0ZWQgYWZ0ZXIgdGhlIHN0eWxlIHVwZGF0ZS4KLSAgICAvLyBCZWNhdXNlIHRoaXMgaXMg
Y2FsbGVkIGZyb20gSlMsIHdoZXJlIHRoZSB3cmFwcGVyIGtlZXBzIGEgcmVmZXJlbmNlIHRvIHRo
ZSBOYW1lZEZsb3csIG5vIGd1YXJkIGlzIG5lY2Vzc2FyeS4KLSAgICBpZiAoIW1fcGFyZW50Rmxv
d1RocmVhZCB8fCAhbV9wYXJlbnRGbG93VGhyZWFkLT5oYXNSZWdpb25zKCkpCi0gICAgICAgIHJl
dHVybiB0cnVlOwotCi0gICAgY29uc3QgYXV0byYgbmFtZWRGbG93RnJhZ21lbnQgPSBkb3duY2Fz
dDxSZW5kZXJOYW1lZEZsb3dGcmFnbWVudD4oKm1fcGFyZW50Rmxvd1RocmVhZC0+bGFzdFJlZ2lv
bigpKTsKLSAgICByZXR1cm4gbmFtZWRGbG93RnJhZ21lbnQucmVnaW9uT3ZlcnNldFN0YXRlKCkg
PT0gUmVnaW9uT3ZlcnNldDsKLX0KLQotc3RhdGljIGlubGluZSBib29sIGluRmxvd1RocmVhZChS
ZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBSZW5kZXJOYW1lZEZsb3dUaHJlYWQqIGZsb3dUaHJlYWQp
Ci17Ci0gICAgaWYgKCFyZW5kZXJlcikKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIFJlbmRl
ckZsb3dUaHJlYWQqIGN1cnJlbnRGbG93VGhyZWFkID0gcmVuZGVyZXItPmZsb3dUaHJlYWRDb250
YWluaW5nQmxvY2soKTsKLSAgICBpZiAoZmxvd1RocmVhZCA9PSBjdXJyZW50Rmxvd1RocmVhZCkK
LSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgaWYgKHJlbmRlcmVyLT5mbG93VGhyZWFkU3RhdGUo
KSAhPSBSZW5kZXJPYmplY3Q6Okluc2lkZUluRmxvd1RocmVhZCkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIAotICAgIC8vIEFuIGluLWZsb3cgZmxvdyB0aHJlYWQgY2FuIGJlIG5lc3RlZCBp
bnNpZGUgYW4gb3V0LW9mLWZsb3cgb25lLCBzbyB3ZSBoYXZlIHRvIHJlY3VyIHVwIHRvIGNoZWNr
LgotICAgIHJldHVybiBpbkZsb3dUaHJlYWQoY3VycmVudEZsb3dUaHJlYWQtPmNvbnRhaW5pbmdC
bG9jaygpLCBmbG93VGhyZWFkKTsKLX0KLQotaW50IFdlYktpdE5hbWVkRmxvdzo6Zmlyc3RFbXB0
eVJlZ2lvbkluZGV4KCkgY29uc3QKLXsKLSAgICBpZiAobV9mbG93TWFuYWdlci0+ZG9jdW1lbnQo
KSkKLSAgICAgICAgbV9mbG93TWFuYWdlci0+ZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0SWdub3Jl
UGVuZGluZ1N0eWxlc2hlZXRzKCk7Ci0KLSAgICBpZiAoIW1fcGFyZW50Rmxvd1RocmVhZCkKLSAg
ICAgICAgcmV0dXJuIC0xOwotCi0gICAgY29uc3QgUmVuZGVyUmVnaW9uTGlzdCYgcmVnaW9uTGlz
dCA9IG1fcGFyZW50Rmxvd1RocmVhZC0+cmVuZGVyUmVnaW9uTGlzdCgpOwotICAgIGlmIChyZWdp
b25MaXN0LmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIC0xOwotCi0gICAgaW50IGNvdW50Tm9u
UHNldWRvUmVnaW9ucyA9IC0xOwotICAgIGZvciAoY29uc3QgYXV0byYgcmVuZGVyUmVnaW9uIDog
cmVnaW9uTGlzdCkgewotICAgICAgICBjb25zdCBhdXRvJiBuYW1lZEZsb3dGcmFnbWVudCA9IGRv
d25jYXN0PFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50PigqcmVuZGVyUmVnaW9uKTsKLSAgICAgICAg
Ly8gRklYTUU6IFBzZXVkby1lbGVtZW50cyBhcmUgbm90IGluY2x1ZGVkIGluIHRoZSBsaXN0Lgot
ICAgICAgICAvLyBUaGV5IHdpbGwgYmUgaW5jbHVkZWQgd2hlbiB3ZSB3aWxsIHByb3Blcmx5IHN1
cHBvcnQgdGhlIFJlZ2lvbiBpbnRlcmZhY2UKLSAgICAgICAgLy8gaHR0cDovL2Rldi53My5vcmcv
Y3Nzd2cvY3NzLXJlZ2lvbnMvI3RoZS1yZWdpb24taW50ZXJmYWNlCi0gICAgICAgIGlmIChuYW1l
ZEZsb3dGcmFnbWVudC5pc1BzZXVkb0VsZW1lbnRSZWdpb24oKSkKLSAgICAgICAgICAgIGNvbnRp
bnVlOwotICAgICAgICArK2NvdW50Tm9uUHNldWRvUmVnaW9uczsKLSAgICAgICAgaWYgKG5hbWVk
Rmxvd0ZyYWdtZW50LnJlZ2lvbk92ZXJzZXRTdGF0ZSgpID09IFJlZ2lvbkVtcHR5KQotICAgICAg
ICAgICAgcmV0dXJuIGNvdW50Tm9uUHNldWRvUmVnaW9uczsKLSAgICB9Ci0gICAgcmV0dXJuIC0x
OwotfQotCi1SZWY8Tm9kZUxpc3Q+IFdlYktpdE5hbWVkRmxvdzo6Z2V0UmVnaW9uc0J5Q29udGVu
dChOb2RlKiBjb250ZW50Tm9kZSkKLXsKLSAgICBpZiAoIWNvbnRlbnROb2RlKQotICAgICAgICBy
ZXR1cm4gU3RhdGljRWxlbWVudExpc3Q6OmNyZWF0ZSgpOwotCi0gICAgaWYgKG1fZmxvd01hbmFn
ZXItPmRvY3VtZW50KCkpCi0gICAgICAgIG1fZmxvd01hbmFnZXItPmRvY3VtZW50KCktPnVwZGF0
ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOwotCi0gICAgLy8gVGhlIHJlbmRlcmVy
IG1heSBiZSBkZXN0cm95ZWQgb3IgY3JlYXRlZCBhZnRlciB0aGUgc3R5bGUgdXBkYXRlLgotICAg
IC8vIEJlY2F1c2UgdGhpcyBpcyBjYWxsZWQgZnJvbSBKUywgd2hlcmUgdGhlIHdyYXBwZXIga2Vl
cHMgYSByZWZlcmVuY2UgdG8gdGhlIE5hbWVkRmxvdywgbm8gZ3VhcmQgaXMgbmVjZXNzYXJ5Lgot
ICAgIGlmICghbV9wYXJlbnRGbG93VGhyZWFkKQotICAgICAgICByZXR1cm4gU3RhdGljRWxlbWVu
dExpc3Q6OmNyZWF0ZSgpOwotCi0gICAgVmVjdG9yPFJlZjxFbGVtZW50Pj4gcmVnaW9uRWxlbWVu
dHM7Ci0KLSAgICBpZiAoaW5GbG93VGhyZWFkKGNvbnRlbnROb2RlLT5yZW5kZXJlcigpLCBtX3Bh
cmVudEZsb3dUaHJlYWQpKSB7Ci0gICAgICAgIGNvbnN0IFJlbmRlclJlZ2lvbkxpc3QmIHJlZ2lv
bkxpc3QgPSBtX3BhcmVudEZsb3dUaHJlYWQtPnJlbmRlclJlZ2lvbkxpc3QoKTsKLSAgICAgICAg
Zm9yIChjb25zdCBhdXRvJiByZW5kZXJSZWdpb24gOiByZWdpb25MaXN0KSB7Ci0gICAgICAgICAg
ICBjb25zdCBhdXRvJiBuYW1lZEZsb3dGcmFnbWVudCA9IGRvd25jYXN0PFJlbmRlck5hbWVkRmxv
d0ZyYWdtZW50PigqcmVuZGVyUmVnaW9uKTsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBQc2V1ZG8t
ZWxlbWVudHMgYXJlIG5vdCBpbmNsdWRlZCBpbiB0aGUgbGlzdC4KLSAgICAgICAgICAgIC8vIFRo
ZXkgd2lsbCBiZSBpbmNsdWRlZCB3aGVuIHdlIHdpbGwgcHJvcGVybHkgc3VwcG9ydCB0aGUgUmVn
aW9uIGludGVyZmFjZQotICAgICAgICAgICAgLy8gaHR0cDovL2Rldi53My5vcmcvY3Nzd2cvY3Nz
LXJlZ2lvbnMvI3RoZS1yZWdpb24taW50ZXJmYWNlCi0gICAgICAgICAgICBpZiAobmFtZWRGbG93
RnJhZ21lbnQuaXNQc2V1ZG9FbGVtZW50UmVnaW9uKCkpCi0gICAgICAgICAgICAgICAgY29udGlu
dWU7Ci0gICAgICAgICAgICBpZiAobV9wYXJlbnRGbG93VGhyZWFkLT5vYmplY3RJbkZsb3dSZWdp
b24oY29udGVudE5vZGUtPnJlbmRlcmVyKCksICZuYW1lZEZsb3dGcmFnbWVudCkpIHsKLSAgICAg
ICAgICAgICAgICBBU1NFUlQobmFtZWRGbG93RnJhZ21lbnQuZ2VuZXJhdGluZ0VsZW1lbnQoKSk7
Ci0gICAgICAgICAgICAgICAgcmVnaW9uRWxlbWVudHMuYXBwZW5kKCpuYW1lZEZsb3dGcmFnbWVu
dC5nZW5lcmF0aW5nRWxlbWVudCgpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0K
LQotICAgIHJldHVybiBTdGF0aWNFbGVtZW50TGlzdDo6Y3JlYXRlKFdURk1vdmUocmVnaW9uRWxl
bWVudHMpKTsKLX0KLQotUmVmPE5vZGVMaXN0PiBXZWJLaXROYW1lZEZsb3c6OmdldFJlZ2lvbnMo
KQotewotICAgIGlmIChtX2Zsb3dNYW5hZ2VyLT5kb2N1bWVudCgpKQotICAgICAgICBtX2Zsb3dN
YW5hZ2VyLT5kb2N1bWVudCgpLT51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMo
KTsKLQotICAgIC8vIFRoZSByZW5kZXJlciBtYXkgYmUgZGVzdHJveWVkIG9yIGNyZWF0ZWQgYWZ0
ZXIgdGhlIHN0eWxlIHVwZGF0ZS4KLSAgICAvLyBCZWNhdXNlIHRoaXMgaXMgY2FsbGVkIGZyb20g
SlMsIHdoZXJlIHRoZSB3cmFwcGVyIGtlZXBzIGEgcmVmZXJlbmNlIHRvIHRoZSBOYW1lZEZsb3cs
IG5vIGd1YXJkIGlzIG5lY2Vzc2FyeS4KLSAgICBpZiAoIW1fcGFyZW50Rmxvd1RocmVhZCkKLSAg
ICAgICAgcmV0dXJuIFN0YXRpY0VsZW1lbnRMaXN0OjpjcmVhdGUoKTsKLQotICAgIFZlY3RvcjxS
ZWY8RWxlbWVudD4+IHJlZ2lvbkVsZW1lbnRzOwotCi0gICAgY29uc3QgUmVuZGVyUmVnaW9uTGlz
dCYgcmVnaW9uTGlzdCA9IG1fcGFyZW50Rmxvd1RocmVhZC0+cmVuZGVyUmVnaW9uTGlzdCgpOwot
ICAgIGZvciAoY29uc3QgYXV0byYgcmVuZGVyUmVnaW9uIDogcmVnaW9uTGlzdCkgewotICAgICAg
ICBjb25zdCBhdXRvJiBuYW1lZEZsb3dGcmFnbWVudCA9IGRvd25jYXN0PFJlbmRlck5hbWVkRmxv
d0ZyYWdtZW50PigqcmVuZGVyUmVnaW9uKTsKLSAgICAgICAgLy8gRklYTUU6IFBzZXVkby1lbGVt
ZW50cyBhcmUgbm90IGluY2x1ZGVkIGluIHRoZSBsaXN0LgotICAgICAgICAvLyBUaGV5IHdpbGwg
YmUgaW5jbHVkZWQgd2hlbiB3ZSB3aWxsIHByb3Blcmx5IHN1cHBvcnQgdGhlIFJlZ2lvbiBpbnRl
cmZhY2UKLSAgICAgICAgLy8gaHR0cDovL2Rldi53My5vcmcvY3Nzd2cvY3NzLXJlZ2lvbnMvI3Ro
ZS1yZWdpb24taW50ZXJmYWNlCi0gICAgICAgIGlmIChuYW1lZEZsb3dGcmFnbWVudC5pc1BzZXVk
b0VsZW1lbnRSZWdpb24oKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBBU1NFUlQo
bmFtZWRGbG93RnJhZ21lbnQuZ2VuZXJhdGluZ0VsZW1lbnQoKSk7Ci0gICAgICAgIHJlZ2lvbkVs
ZW1lbnRzLmFwcGVuZCgqbmFtZWRGbG93RnJhZ21lbnQuZ2VuZXJhdGluZ0VsZW1lbnQoKSk7Ci0g
ICAgfQotCi0gICAgcmV0dXJuIFN0YXRpY0VsZW1lbnRMaXN0OjpjcmVhdGUoV1RGTW92ZShyZWdp
b25FbGVtZW50cykpOwotfQotCi1SZWY8Tm9kZUxpc3Q+IFdlYktpdE5hbWVkRmxvdzo6Z2V0Q29u
dGVudCgpCi17Ci0gICAgaWYgKG1fZmxvd01hbmFnZXItPmRvY3VtZW50KCkpCi0gICAgICAgIG1f
Zmxvd01hbmFnZXItPmRvY3VtZW50KCktPnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNo
ZWV0cygpOwotCi0gICAgLy8gVGhlIHJlbmRlcmVyIG1heSBiZSBkZXN0cm95ZWQgb3IgY3JlYXRl
ZCBhZnRlciB0aGUgc3R5bGUgdXBkYXRlLgotICAgIC8vIEJlY2F1c2UgdGhpcyBpcyBjYWxsZWQg
ZnJvbSBKUywgd2hlcmUgdGhlIHdyYXBwZXIga2VlcHMgYSByZWZlcmVuY2UgdG8gdGhlIE5hbWVk
Rmxvdywgbm8gZ3VhcmQgaXMgbmVjZXNzYXJ5LgotICAgIGlmICghbV9wYXJlbnRGbG93VGhyZWFk
KQotICAgICAgICByZXR1cm4gU3RhdGljRWxlbWVudExpc3Q6OmNyZWF0ZSgpOwotCi0gICAgYXV0
byYgY29udGVudEVsZW1lbnRzTGlzdCA9IG1fcGFyZW50Rmxvd1RocmVhZC0+Y29udGVudEVsZW1l
bnRzKCk7Ci0gICAgVmVjdG9yPFJlZjxFbGVtZW50Pj4gY29udGVudEVsZW1lbnRzOwotICAgIGNv
bnRlbnRFbGVtZW50cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGNvbnRlbnRFbGVtZW50c0xpc3Qu
c2l6ZSgpKTsKLSAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBjb250ZW50RWxlbWVudHNMaXN0KSB7
Ci0gICAgICAgIEFTU0VSVChlbGVtZW50LT5jb21wdXRlZFN0eWxlKCktPmZsb3dUaHJlYWQoKSA9
PSBtX3BhcmVudEZsb3dUaHJlYWQtPmZsb3dUaHJlYWROYW1lKCkpOwotICAgICAgICBjb250ZW50
RWxlbWVudHMudW5jaGVja2VkQXBwZW5kKCplbGVtZW50KTsKLSAgICB9Ci0KLSAgICByZXR1cm4g
U3RhdGljRWxlbWVudExpc3Q6OmNyZWF0ZShXVEZNb3ZlKGNvbnRlbnRFbGVtZW50cykpOwotfQot
Ci12b2lkIFdlYktpdE5hbWVkRmxvdzo6c2V0UmVuZGVyZXIoUmVuZGVyTmFtZWRGbG93VGhyZWFk
KiBwYXJlbnRGbG93VGhyZWFkKQotewotICAgIC8vIFRoZSBuYW1lZCBmbG93IGNhbiBlaXRoZXIg
Z28gZnJvbSBhIG5vX3JlbmRlcmVyLT5yZW5kZXJlciBvciByZW5kZXJlci0+bm9fcmVuZGVyZXIg
c3RhdGU7IGFueXRoaW5nIGVsc2UgY291bGQgaW5kaWNhdGUgYSBidWcuCi0gICAgQVNTRVJUKCgh
bV9wYXJlbnRGbG93VGhyZWFkICYmIHBhcmVudEZsb3dUaHJlYWQpIHx8IChtX3BhcmVudEZsb3dU
aHJlYWQgJiYgIXBhcmVudEZsb3dUaHJlYWQpKTsKLQotICAgIC8vIElmIHBhcmVudEZsb3dUaHJl
YWQgaXMgMCwgdGhlIGZsb3cgdGhyZWFkIHdpbGwgbW92ZSBpbiB0aGUgIk5VTEwiIHN0YXRlLgot
ICAgIG1fcGFyZW50Rmxvd1RocmVhZCA9IHBhcmVudEZsb3dUaHJlYWQ7Ci19Ci0KLXZvaWQgV2Vi
S2l0TmFtZWRGbG93OjpkaXNwYXRjaFJlZ2lvbk92ZXJzZXRDaGFuZ2VFdmVudCgpCi17Ci0gICAg
QVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oTm9FdmVudERpc3BhdGNoQXNzZXJ0aW9u
Ojppc0V2ZW50QWxsb3dlZEluTWFpblRocmVhZCgpKTsKLSAgICAKLSAgICAvLyBJZiB0aGUgZmxv
dyBpcyBpbiB0aGUgIk5VTEwiIHN0YXRlIHRoZSBldmVudCBzaG91bGQgbm90IGJlIGRpc3BhdGNo
ZWQgYW55IG1vcmUuCi0gICAgaWYgKGZsb3dTdGF0ZSgpID09IEZsb3dTdGF0ZU51bGwpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIGRpc3BhdGNoRXZlbnQoVUlFdmVudDo6Y3JlYXRlKGV2ZW50TmFt
ZXMoKS53ZWJraXRyZWdpb25vdmVyc2V0Y2hhbmdlRXZlbnQsIGZhbHNlLCBmYWxzZSwgbV9mbG93
TWFuYWdlci0+ZG9jdW1lbnQoKS0+ZGVmYXVsdFZpZXcoKSwgMCkpOwotfQotCi1TY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBXZWJLaXROYW1lZEZsb3c6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBj
b25zdAotewotICAgIHJldHVybiBtX2Zsb3dNYW5hZ2VyLT5kb2N1bWVudCgpOwotfQotCi1Ob2Rl
KiBXZWJLaXROYW1lZEZsb3c6Om93bmVyTm9kZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fZmxv
d01hbmFnZXItPmRvY3VtZW50KCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQpJbmRl
eDogU291cmNlL1dlYkNvcmUvZG9tL1dlYktpdE5hbWVkRmxvdy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2RvbS9XZWJLaXROYW1lZEZsb3cuaAkocmV2aXNpb24gMjIyMjU3KQorKysg
U291cmNlL1dlYkNvcmUvZG9tL1dlYktpdE5hbWVkRmxvdy5oCShub25leGlzdGVudCkKQEAgLTEs
OTMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBZG9iZSBTeXN0ZW1zIEluY29y
cG9yYXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlCi0gKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZwotICogICAgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKLSAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nCi0gKiAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMKLSAqICAgIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqIAotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UiAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIEJF
Ci0gKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksCi0gKiBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SCi0gKiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YKLSAqIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRgotICogU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0K
LSNpbmNsdWRlICJFdmVudFRhcmdldC5oIgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0j
aW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5o
PgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIE5hbWVkRmxvd0NvbGxlY3Rpb247Ci1j
bGFzcyBOb2RlOwotY2xhc3MgTm9kZUxpc3Q7Ci1jbGFzcyBSZW5kZXJOYW1lZEZsb3dUaHJlYWQ7
Ci1jbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwotCi1jbGFzcyBXZWJLaXROYW1lZEZsb3cg
ZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJLaXROYW1lZEZsb3c+LCBwdWJsaWMgRXZlbnRU
YXJnZXRXaXRoSW5saW5lRGF0YSB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxXZWJLaXROYW1l
ZEZsb3c+IGNyZWF0ZShOYW1lZEZsb3dDb2xsZWN0aW9uJiBtYW5hZ2VyLCBjb25zdCBBdG9taWNT
dHJpbmcmIGZsb3dUaHJlYWROYW1lKTsKLQotICAgIH5XZWJLaXROYW1lZEZsb3coKTsKLQotICAg
IGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSgpIGNvbnN0OwotICAgIGJvb2wgb3ZlcnNldCgpIGNv
bnN0OwotICAgIGludCBmaXJzdEVtcHR5UmVnaW9uSW5kZXgoKSBjb25zdDsKLSAgICBSZWY8Tm9k
ZUxpc3Q+IGdldFJlZ2lvbnNCeUNvbnRlbnQoTm9kZSopOwotICAgIFJlZjxOb2RlTGlzdD4gZ2V0
UmVnaW9ucygpOwotICAgIFJlZjxOb2RlTGlzdD4gZ2V0Q29udGVudCgpOwotCi0gICAgdXNpbmcg
UmVmQ291bnRlZDxXZWJLaXROYW1lZEZsb3c+OjpyZWY7Ci0gICAgdXNpbmcgUmVmQ291bnRlZDxX
ZWJLaXROYW1lZEZsb3c+OjpkZXJlZjsKLQotICAgIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50
VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gV2ViS2l0TmFtZWRGbG93
RXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBlOyB9Ci0gICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IG92ZXJyaWRlOwotCi0gICAgLy8gVGhpcyBm
dW5jdGlvbiBpcyBjYWxsZWQgZnJvbSB0aGUgSlMgYmluZGluZyBjb2RlIHRvIGRldGVybWluZSBp
ZiB0aGUgTmFtZWRGbG93IG9iamVjdCBpcyByZWFjaGFibGUgb3Igbm90LgotICAgIC8vIElmIHRo
ZSBvYmplY3QgaGFzIGxpc3RlbmVycywgdGhlIG9iamVjdCBzaG91bGQgb25seSBiZSBkaXNjYXJk
ZWQgaWYgdGhlIHBhcmVudCBEb2N1bWVudCBpcyBub3QgcmVhY2hhYmxlLgotICAgIE5vZGUqIG93
bmVyTm9kZSgpIGNvbnN0OwotCi0gICAgdm9pZCBzZXRSZW5kZXJlcihSZW5kZXJOYW1lZEZsb3dU
aHJlYWQqIHBhcmVudEZsb3dUaHJlYWQpOwotCi0gICAgZW51bSBGbG93U3RhdGUgewotICAgICAg
ICBGbG93U3RhdGVDcmVhdGVkLAotICAgICAgICBGbG93U3RhdGVOdWxsCi0gICAgfTsKLQotICAg
IEZsb3dTdGF0ZSBmbG93U3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3BhcmVudEZsb3dUaHJlYWQg
PyBGbG93U3RhdGVDcmVhdGVkIDogRmxvd1N0YXRlTnVsbDsgfQotCi0gICAgdm9pZCBkaXNwYXRj
aFJlZ2lvbk92ZXJzZXRDaGFuZ2VFdmVudCgpOwotCi1wcml2YXRlOgotICAgIFdlYktpdE5hbWVk
RmxvdyhOYW1lZEZsb3dDb2xsZWN0aW9uJiwgY29uc3QgQXRvbWljU3RyaW5nJik7Ci0KLSAgICAv
LyBFdmVudFRhcmdldCBpbXBsZW1lbnRhdGlvbi4KLSAgICB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkg
b3ZlcnJpZGUgeyByZWYoKTsgfQotICAgIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIG92ZXJyaWRl
IHsgZGVyZWYoKTsgfQotCi0gICAgLy8gVGhlIG5hbWUgb2YgdGhlIGZsb3cgdGhyZWFkIGFzIHNw
ZWNpZmllZCBpbiBDU1MuCi0gICAgQXRvbWljU3RyaW5nIG1fZmxvd1RocmVhZE5hbWU7Ci0KLSAg
ICBSZWZQdHI8TmFtZWRGbG93Q29sbGVjdGlvbj4gbV9mbG93TWFuYWdlcjsKLSAgICBSZW5kZXJO
YW1lZEZsb3dUaHJlYWQqIG1fcGFyZW50Rmxvd1RocmVhZDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9XZWJLaXROYW1lZEZsb3cuaWRsCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9XZWJLaXROYW1lZEZsb3cuaWRsCShyZXZp
c2lvbiAyMjIyNTcpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vV2ViS2l0TmFtZWRGbG93LmlkbAko
bm9uZXhpc3RlbnQpCkBAIC0xLDQyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEg
QWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZQotICogICAgY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKLSAq
ICAgIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZwotICogICAgZGlzY2xhaW1lciBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzCi0gKiAgICBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKiAKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVIgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUIEhPTERFUiBCRQotICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLAotICogT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
Ci0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUgotICogVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GCi0gKiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKLSAqIFNVQ0ggREFNQUdFLgotICov
Ci0KLVsKLSAgICBHZW5lcmF0ZUlzUmVhY2hhYmxlPUltcGxPd25lck5vZGVSb290LAotICAgIE5v
SW50ZXJmYWNlT2JqZWN0LAotXSBpbnRlcmZhY2UgV2ViS2l0TmFtZWRGbG93IDogRXZlbnRUYXJn
ZXQKLXsKLSAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIG5hbWU7Ci0gICAgcmVhZG9u
bHkgYXR0cmlidXRlIGJvb2xlYW4gb3ZlcnNldDsKLSAgICByZWFkb25seSBhdHRyaWJ1dGUgbG9u
ZyBmaXJzdEVtcHR5UmVnaW9uSW5kZXg7Ci0gICAgLy8gRklYTUU6IGNvbnRlbnROb2RlIHNob3Vs
ZCBub3QgYmUgbnVsbGFibGUuCi0gICAgTm9kZUxpc3QgZ2V0UmVnaW9uc0J5Q29udGVudChOb2Rl
PyBjb250ZW50Tm9kZSk7Ci0gICAgTm9kZUxpc3QgZ2V0UmVnaW9ucygpOwotICAgIE5vZGVMaXN0
IGdldENvbnRlbnQoKTsKLX07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQ1NTQWdlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JDU1NBZ2VudC5jcHAJKHJldmlzaW9uIDIyMjI1NykKKysrIFNvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDE2
ICszNywxNSBAQAogI2luY2x1ZGUgIkNvbnRlbnRTZWN1cml0eVBvbGljeS5oIgogI2luY2x1ZGUg
IkRPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkZvbnRDYWNoZS5oIgorI2luY2x1ZGUgIkZyYW1lLmgi
CiAjaW5jbHVkZSAiSFRNTEhlYWRFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFN0eWxlRWxlbWVu
dC5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckhpc3RvcnkuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JQ
YWdlQWdlbnQuaCIKICNpbmNsdWRlICJJbnN0cnVtZW50aW5nQWdlbnRzLmgiCi0jaW5jbHVkZSAi
TmFtZWRGbG93Q29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIk5vZGUuaCIKICNpbmNsdWRlICJOb2Rl
TGlzdC5oIgogI2luY2x1ZGUgIlBzZXVkb0VsZW1lbnQuaCIKLSNpbmNsdWRlICJSZW5kZXJOYW1l
ZEZsb3dGcmFnbWVudC5oIgogI2luY2x1ZGUgIlNWR1N0eWxlRWxlbWVudC5oIgogI2luY2x1ZGUg
IlNlbGVjdG9yQ2hlY2tlci5oIgogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKQEAgLTU2LDcgKzU1
LDYgQEAKICNpbmNsdWRlICJTdHlsZVJ1bGUuaCIKICNpbmNsdWRlICJTdHlsZVNjb3BlLmgiCiAj
aW5jbHVkZSAiU3R5bGVTaGVldExpc3QuaCIKLSNpbmNsdWRlICJXZWJLaXROYW1lZEZsb3cuaCIK
ICNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yUHJvdG9jb2xPYmplY3RzLmg+CiAjaW5jbHVk
ZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTEwMyw1NCArMTAxLDYg
QEAgc3RhdGljIHVuc2lnbmVkIGNvbXB1dGVQc2V1ZG9DbGFzc01hc2soYwogICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKLWNsYXNzIENoYW5nZVJlZ2lvbk92ZXJzZXRUYXNrIHsKLXB1YmxpYzoKLSAg
ICBDaGFuZ2VSZWdpb25PdmVyc2V0VGFzayhJbnNwZWN0b3JDU1NBZ2VudCopOwotICAgIHZvaWQg
c2NoZWR1bGVGb3IoV2ViS2l0TmFtZWRGbG93KiwgaW50IGRvY3VtZW50Tm9kZUlkKTsKLSAgICB2
b2lkIHVuc2NoZWR1bGUoV2ViS2l0TmFtZWRGbG93Kik7Ci0gICAgdm9pZCByZXNldCgpOwotICAg
IHZvaWQgdGltZXJGaXJlZCgpOwotCi1wcml2YXRlOgotICAgIEluc3BlY3RvckNTU0FnZW50KiBt
X2Nzc0FnZW50OwotICAgIFRpbWVyIG1fdGltZXI7Ci0gICAgSGFzaE1hcDxXZWJLaXROYW1lZEZs
b3cqLCBpbnQ+IG1fbmFtZWRGbG93czsKLX07Ci0KLUNoYW5nZVJlZ2lvbk92ZXJzZXRUYXNrOjpD
aGFuZ2VSZWdpb25PdmVyc2V0VGFzayhJbnNwZWN0b3JDU1NBZ2VudCogY3NzQWdlbnQpCi0gICAg
OiBtX2Nzc0FnZW50KGNzc0FnZW50KQotICAgICwgbV90aW1lcigqdGhpcywgJkNoYW5nZVJlZ2lv
bk92ZXJzZXRUYXNrOjp0aW1lckZpcmVkKQotewotfQotCi12b2lkIENoYW5nZVJlZ2lvbk92ZXJz
ZXRUYXNrOjpzY2hlZHVsZUZvcihXZWJLaXROYW1lZEZsb3cqIG5hbWVkRmxvdywgaW50IGRvY3Vt
ZW50Tm9kZUlkKQotewotICAgIG1fbmFtZWRGbG93cy5hZGQobmFtZWRGbG93LCBkb2N1bWVudE5v
ZGVJZCk7Ci0KLSAgICBpZiAoIW1fdGltZXIuaXNBY3RpdmUoKSkKLSAgICAgICAgbV90aW1lci5z
dGFydE9uZVNob3QoMF9zKTsKLX0KLQotdm9pZCBDaGFuZ2VSZWdpb25PdmVyc2V0VGFzazo6dW5z
Y2hlZHVsZShXZWJLaXROYW1lZEZsb3cqIG5hbWVkRmxvdykKLXsKLSAgICBtX25hbWVkRmxvd3Mu
cmVtb3ZlKG5hbWVkRmxvdyk7Ci19Ci0KLXZvaWQgQ2hhbmdlUmVnaW9uT3ZlcnNldFRhc2s6OnJl
c2V0KCkKLXsKLSAgICBtX3RpbWVyLnN0b3AoKTsKLSAgICBtX25hbWVkRmxvd3MuY2xlYXIoKTsK
LX0KLQotdm9pZCBDaGFuZ2VSZWdpb25PdmVyc2V0VGFzazo6dGltZXJGaXJlZCgpCi17Ci0gICAg
Ly8gVGhlIHRpbWVyIGlzIHN0b3BwZWQgb24gbV9jc3NBZ2VudCBkZXN0cnVjdGlvbiwgc28gdGhp
cyBtZXRob2Qgd2lsbCBuZXZlciBiZSBjYWxsZWQgYWZ0ZXIgbV9jc3NBZ2VudCBoYXMgYmVlbiBk
ZXN0cm95ZWQuCi0gICAgZm9yIChhdXRvJiBuYW1lZEZsb3cgOiBtX25hbWVkRmxvd3MpCi0gICAg
ICAgIG1fY3NzQWdlbnQtPnJlZ2lvbk92ZXJzZXRDaGFuZ2VkKG5hbWVkRmxvdy5rZXksIG5hbWVk
Rmxvdy52YWx1ZSk7Ci0KLSAgICBtX25hbWVkRmxvd3MuY2xlYXIoKTsKLX0KLQogY2xhc3MgSW5z
cGVjdG9yQ1NTQWdlbnQ6OlN0eWxlU2hlZXRBY3Rpb24gOiBwdWJsaWMgSW5zcGVjdG9ySGlzdG9y
eTo6QWN0aW9uIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTdHlsZVNoZWV0QWN0aW9uKTsK
IHB1YmxpYzoKQEAgLTM4NSw5ICszMzUsNiBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpyZXNl
dCgpCiAKIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OnJlc2V0Tm9uUGVyc2lzdGVudERhdGEoKQog
ewotICAgIG1fbmFtZWRGbG93Q29sbGVjdGlvbnNSZXF1ZXN0ZWQuY2xlYXIoKTsKLSAgICBpZiAo
bV9jaGFuZ2VSZWdpb25PdmVyc2V0VGFzaykKLSAgICAgICAgbV9jaGFuZ2VSZWdpb25PdmVyc2V0
VGFzay0+cmVzZXQoKTsKICAgICByZXNldFBzZXVkb1N0YXRlcygpOwogfQogCkBAIC00NTgsNzcg
KzQwNSw2IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OnNldEFjdGl2ZVN0eWxlU2gKICAgICB9
CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmRpZENyZWF0ZU5hbWVkRmxvdyhEb2N1bWVu
dCYgZG9jdW1lbnQsIFdlYktpdE5hbWVkRmxvdyYgbmFtZWRGbG93KQotewotICAgIGludCBkb2N1
bWVudE5vZGVJZCA9IGRvY3VtZW50Tm9kZVdpdGhSZXF1ZXN0ZWRGbG93c0lkKCZkb2N1bWVudCk7
Ci0gICAgaWYgKCFkb2N1bWVudE5vZGVJZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgRXJyb3JT
dHJpbmcgdW51c2VkOwotICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5uYW1lZEZsb3dDcmVhdGVk
KGJ1aWxkT2JqZWN0Rm9yTmFtZWRGbG93KHVudXNlZCwgJm5hbWVkRmxvdywgZG9jdW1lbnROb2Rl
SWQpKTsKLX0KLQotdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6d2lsbFJlbW92ZU5hbWVkRmxvdyhE
b2N1bWVudCYgZG9jdW1lbnQsIFdlYktpdE5hbWVkRmxvdyYgbmFtZWRGbG93KQotewotICAgIGlu
dCBkb2N1bWVudE5vZGVJZCA9IGRvY3VtZW50Tm9kZVdpdGhSZXF1ZXN0ZWRGbG93c0lkKCZkb2N1
bWVudCk7Ci0gICAgaWYgKCFkb2N1bWVudE5vZGVJZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
aWYgKG1fY2hhbmdlUmVnaW9uT3ZlcnNldFRhc2spCi0gICAgICAgIG1fY2hhbmdlUmVnaW9uT3Zl
cnNldFRhc2stPnVuc2NoZWR1bGUoJm5hbWVkRmxvdyk7Ci0KLSAgICBtX2Zyb250ZW5kRGlzcGF0
Y2hlci0+bmFtZWRGbG93UmVtb3ZlZChkb2N1bWVudE5vZGVJZCwgbmFtZWRGbG93Lm5hbWUoKS5z
dHJpbmcoKSk7Ci19Ci0KLXZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmRpZENoYW5nZVJlZ2lvbk92
ZXJzZXQoRG9jdW1lbnQmIGRvY3VtZW50LCBXZWJLaXROYW1lZEZsb3cmIG5hbWVkRmxvdykKLXsK
LSAgICBpbnQgZG9jdW1lbnROb2RlSWQgPSBkb2N1bWVudE5vZGVXaXRoUmVxdWVzdGVkRmxvd3NJ
ZCgmZG9jdW1lbnQpOwotICAgIGlmICghZG9jdW1lbnROb2RlSWQpCi0gICAgICAgIHJldHVybjsK
LQotICAgIGlmICghbV9jaGFuZ2VSZWdpb25PdmVyc2V0VGFzaykKLSAgICAgICAgbV9jaGFuZ2VS
ZWdpb25PdmVyc2V0VGFzayA9IHN0ZDo6bWFrZV91bmlxdWU8Q2hhbmdlUmVnaW9uT3ZlcnNldFRh
c2s+KHRoaXMpOwotICAgIG1fY2hhbmdlUmVnaW9uT3ZlcnNldFRhc2stPnNjaGVkdWxlRm9yKCZu
YW1lZEZsb3csIGRvY3VtZW50Tm9kZUlkKTsKLX0KLQotdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6
cmVnaW9uT3ZlcnNldENoYW5nZWQoV2ViS2l0TmFtZWRGbG93KiBuYW1lZEZsb3csIGludCBkb2N1
bWVudE5vZGVJZCkKLXsKLSAgICBpZiAobmFtZWRGbG93LT5mbG93U3RhdGUoKSA9PSBXZWJLaXRO
YW1lZEZsb3c6OkZsb3dTdGF0ZU51bGwpCi0gICAgICAgIHJldHVybjsKLQotICAgIEVycm9yU3Ry
aW5nIHVudXNlZDsKLSAgICBSZWY8V2ViS2l0TmFtZWRGbG93PiBwcm90ZWN0KCpuYW1lZEZsb3cp
OwotCi0gICAgbV9mcm9udGVuZERpc3BhdGNoZXItPnJlZ2lvbk92ZXJzZXRDaGFuZ2VkKGJ1aWxk
T2JqZWN0Rm9yTmFtZWRGbG93KHVudXNlZCwgbmFtZWRGbG93LCBkb2N1bWVudE5vZGVJZCkpOwot
fQotCi12b2lkIEluc3BlY3RvckNTU0FnZW50OjpkaWRSZWdpc3Rlck5hbWVkRmxvd0NvbnRlbnRF
bGVtZW50KERvY3VtZW50JiBkb2N1bWVudCwgV2ViS2l0TmFtZWRGbG93JiBuYW1lZEZsb3csIE5v
ZGUmIGNvbnRlbnRFbGVtZW50LCBOb2RlKiBuZXh0Q29udGVudEVsZW1lbnQpCi17Ci0gICAgaW50
IGRvY3VtZW50Tm9kZUlkID0gZG9jdW1lbnROb2RlV2l0aFJlcXVlc3RlZEZsb3dzSWQoJmRvY3Vt
ZW50KTsKLSAgICBpZiAoIWRvY3VtZW50Tm9kZUlkKQotICAgICAgICByZXR1cm47Ci0KLSAgICBF
cnJvclN0cmluZyB1bnVzZWQ7Ci0gICAgaW50IGNvbnRlbnRFbGVtZW50Tm9kZUlkID0gbV9kb21B
Z2VudC0+cHVzaE5vZGVUb0Zyb250ZW5kKHVudXNlZCwgZG9jdW1lbnROb2RlSWQsICZjb250ZW50
RWxlbWVudCk7Ci0gICAgaW50IG5leHRDb250ZW50RWxlbWVudE5vZGVJZCA9IG5leHRDb250ZW50
RWxlbWVudCA/IG1fZG9tQWdlbnQtPnB1c2hOb2RlVG9Gcm9udGVuZCh1bnVzZWQsIGRvY3VtZW50
Tm9kZUlkLCBuZXh0Q29udGVudEVsZW1lbnQpIDogMDsKLSAgICBtX2Zyb250ZW5kRGlzcGF0Y2hl
ci0+cmVnaXN0ZXJlZE5hbWVkRmxvd0NvbnRlbnRFbGVtZW50KGRvY3VtZW50Tm9kZUlkLCBuYW1l
ZEZsb3cubmFtZSgpLnN0cmluZygpLCBjb250ZW50RWxlbWVudE5vZGVJZCwgbmV4dENvbnRlbnRF
bGVtZW50Tm9kZUlkKTsKLX0KLQotdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6ZGlkVW5yZWdpc3Rl
ck5hbWVkRmxvd0NvbnRlbnRFbGVtZW50KERvY3VtZW50JiBkb2N1bWVudCwgV2ViS2l0TmFtZWRG
bG93JiBuYW1lZEZsb3csIE5vZGUmIGNvbnRlbnRFbGVtZW50KQotewotICAgIGludCBkb2N1bWVu
dE5vZGVJZCA9IGRvY3VtZW50Tm9kZVdpdGhSZXF1ZXN0ZWRGbG93c0lkKCZkb2N1bWVudCk7Ci0g
ICAgaWYgKCFkb2N1bWVudE5vZGVJZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgRXJyb3JTdHJp
bmcgdW51c2VkOwotICAgIGludCBjb250ZW50RWxlbWVudE5vZGVJZCA9IG1fZG9tQWdlbnQtPnB1
c2hOb2RlVG9Gcm9udGVuZCh1bnVzZWQsIGRvY3VtZW50Tm9kZUlkLCAmY29udGVudEVsZW1lbnQp
OwotICAgIGlmICghY29udGVudEVsZW1lbnROb2RlSWQpIHsKLSAgICAgICAgLy8gV2UndmUgYWxy
ZWFkeSBub3RpZmllZCB0aGF0IHRoZSBET00gbm9kZSB3YXMgcmVtb3ZlZCBmcm9tIHRoZSBET00s
IHNvIHRoZXJlJ3Mgbm8gbmVlZCB0byBzZW5kIGFub3RoZXIgZXZlbnQuCi0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0gICAgbV9mcm9udGVuZERpc3BhdGNoZXItPnVucmVnaXN0ZXJlZE5hbWVkRmxv
d0NvbnRlbnRFbGVtZW50KGRvY3VtZW50Tm9kZUlkLCBuYW1lZEZsb3cubmFtZSgpLnN0cmluZygp
LCBjb250ZW50RWxlbWVudE5vZGVJZCk7Ci19Ci0KIGJvb2wgSW5zcGVjdG9yQ1NTQWdlbnQ6OmZv
cmNlUHNldWRvU3RhdGUoY29uc3QgRWxlbWVudCYgZWxlbWVudCwgQ1NTU2VsZWN0b3I6OlBzZXVk
b0NsYXNzVHlwZSBwc2V1ZG9DbGFzc1R5cGUpCiB7CiAgICAgaWYgKG1fbm9kZUlkVG9Gb3JjZWRQ
c2V1ZG9TdGF0ZS5pc0VtcHR5KCkpCkBAIC05MDEsMjEgKzc3Nyw4IEBAIHZvaWQgSW5zcGVjdG9y
Q1NTQWdlbnQ6OmZvcmNlUHNldWRvU3RhdGUKICAgICBlbGVtZW50LT5kb2N1bWVudCgpLnN0eWxl
U2NvcGUoKS5kaWRDaGFuZ2VTdHlsZVNoZWV0RW52aXJvbm1lbnQoKTsKIH0KIAotdm9pZCBJbnNw
ZWN0b3JDU1NBZ2VudDo6Z2V0TmFtZWRGbG93Q29sbGVjdGlvbihFcnJvclN0cmluZyYgZXJyb3JT
dHJpbmcsIGludCBkb2N1bWVudE5vZGVJZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFy
cmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6TmFtZWRGbG93Pj4mIHJlc3VsdCkKK3ZvaWQg
SW5zcGVjdG9yQ1NTQWdlbnQ6OmdldE5hbWVkRmxvd0NvbGxlY3Rpb24oRXJyb3JTdHJpbmcmLCBp
bnQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29s
OjpDU1M6Ok5hbWVkRmxvdz4+JikKIHsKLSAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBtX2RvbUFn
ZW50LT5hc3NlcnREb2N1bWVudChlcnJvclN0cmluZywgZG9jdW1lbnROb2RlSWQpOwotICAgIGlm
ICghZG9jdW1lbnQpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fbmFtZWRGbG93Q29sbGVjdGlv
bnNSZXF1ZXN0ZWQuYWRkKGRvY3VtZW50Tm9kZUlkKTsKLQotICAgIFZlY3RvcjxSZWZQdHI8V2Vi
S2l0TmFtZWRGbG93Pj4gbmFtZWRGbG93c1ZlY3RvciA9IGRvY3VtZW50LT5uYW1lZEZsb3dzKCku
bmFtZWRGbG93cygpOwotICAgIGF1dG8gbmFtZWRGbG93cyA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6TmFtZWRGbG93Pjo6Y3JlYXRlKCk7Ci0K
LSAgICBmb3IgKGF1dG8mIG5hbWVkRmxvdyA6IG5hbWVkRmxvd3NWZWN0b3IpCi0gICAgICAgIG5h
bWVkRmxvd3MtPmFkZEl0ZW0oYnVpbGRPYmplY3RGb3JOYW1lZEZsb3coZXJyb3JTdHJpbmcsIG5h
bWVkRmxvdy5nZXQoKSwgZG9jdW1lbnROb2RlSWQpKTsKLQotICAgIHJlc3VsdCA9IFdURk1vdmUo
bmFtZWRGbG93cyk7CiB9CiAKIEluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZSYgSW5z
cGVjdG9yQ1NTQWdlbnQ6OmFzSW5zcGVjdG9yU3R5bGVTaGVldChTdHlsZWRFbGVtZW50JiBlbGVt
ZW50KQpAQCAtOTQ3LDE1ICs4MTAsNiBAQCBFbGVtZW50KiBJbnNwZWN0b3JDU1NBZ2VudDo6ZWxl
bWVudEZvcklkCiAgICAgcmV0dXJuIGRvd25jYXN0PEVsZW1lbnQ+KG5vZGUpOwogfQogCi1pbnQg
SW5zcGVjdG9yQ1NTQWdlbnQ6OmRvY3VtZW50Tm9kZVdpdGhSZXF1ZXN0ZWRGbG93c0lkKERvY3Vt
ZW50KiBkb2N1bWVudCkKLXsKLSAgICBpbnQgZG9jdW1lbnROb2RlSWQgPSBtX2RvbUFnZW50LT5i
b3VuZE5vZGVJZChkb2N1bWVudCk7Ci0gICAgaWYgKCFkb2N1bWVudE5vZGVJZCB8fCAhbV9uYW1l
ZEZsb3dDb2xsZWN0aW9uc1JlcXVlc3RlZC5jb250YWlucyhkb2N1bWVudE5vZGVJZCkpCi0gICAg
ICAgIHJldHVybiAwOwotCi0gICAgcmV0dXJuIGRvY3VtZW50Tm9kZUlkOwotfQotCiBTdHJpbmcg
SW5zcGVjdG9yQ1NTQWdlbnQ6OnVuYmluZFN0eWxlU2hlZXQoSW5zcGVjdG9yU3R5bGVTaGVldCog
aW5zcGVjdG9yU3R5bGVTaGVldCkKIHsKICAgICBTdHJpbmcgaWQgPSBpbnNwZWN0b3JTdHlsZVNo
ZWV0LT5pZCgpOwpAQCAtMTA5Miw2MSArOTQ2LDYgQEAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkNTUzo6Q1NTU3R5bAogICAgIHJldHVybiBpbnNwZWN0b3JTdHlsZS0+YnVpbGRPYmplY3RG
b3JTdHlsZSgpOwogfQogCi1SZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVj
dG9yOjpQcm90b2NvbDo6Q1NTOjpSZWdpb24+PiBJbnNwZWN0b3JDU1NBZ2VudDo6YnVpbGRBcnJh
eUZvclJlZ2lvbnMoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBSZWZQdHI8Tm9kZUxpc3Q+JiYg
cmVnaW9uTGlzdCwgaW50IGRvY3VtZW50Tm9kZUlkKQotewotICAgIGF1dG8gcmVnaW9ucyA9IElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6UmVnaW9u
Pjo6Y3JlYXRlKCk7Ci0KLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcmVnaW9uTGlzdC0+
bGVuZ3RoKCk7ICsraSkgewotICAgICAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OlJlZ2lv
bjo6UmVnaW9uT3ZlcnNldCByZWdpb25PdmVyc2V0OwotCi0gICAgICAgIHN3aXRjaCAoZG93bmNh
c3Q8RWxlbWVudD4ocmVnaW9uTGlzdC0+aXRlbShpKSktPnJlZ2lvbk92ZXJzZXRTdGF0ZSgpKSB7
Ci0gICAgICAgIGNhc2UgUmVnaW9uRml0OgotICAgICAgICAgICAgcmVnaW9uT3ZlcnNldCA9IElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6UmVnaW9uOjpSZWdpb25PdmVyc2V0OjpGaXQ7Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBSZWdpb25FbXB0eToKLSAgICAgICAgICAgIHJl
Z2lvbk92ZXJzZXQgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OlJlZ2lvbjo6UmVnaW9uT3Zl
cnNldDo6RW1wdHk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBSZWdpb25PdmVy
c2V0OgotICAgICAgICAgICAgcmVnaW9uT3ZlcnNldCA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNT
Uzo6UmVnaW9uOjpSZWdpb25PdmVyc2V0OjpPdmVyc2V0OwotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIGNhc2UgUmVnaW9uVW5kZWZpbmVkOgotICAgICAgICAgICAgY29udGludWU7Ci0gICAg
ICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAg
ICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgYXV0byByZWdpb24gPSBJbnNwZWN0
b3I6OlByb3RvY29sOjpDU1M6OlJlZ2lvbjo6Y3JlYXRlKCkKLSAgICAgICAgICAgIC5zZXRSZWdp
b25PdmVyc2V0KHJlZ2lvbk92ZXJzZXQpCi0gICAgICAgICAgICAvLyBkb2N1bWVudE5vZGVJZCB3
YXMgcHJldmlvdXNseSBhc3NlcnRlZAotICAgICAgICAgICAgLnNldE5vZGVJZChtX2RvbUFnZW50
LT5wdXNoTm9kZVRvRnJvbnRlbmQoZXJyb3JTdHJpbmcsIGRvY3VtZW50Tm9kZUlkLCByZWdpb25M
aXN0LT5pdGVtKGkpKSkKLSAgICAgICAgICAgIC5yZWxlYXNlKCk7Ci0KLSAgICAgICAgcmVnaW9u
cy0+YWRkSXRlbShXVEZNb3ZlKHJlZ2lvbikpOwotICAgIH0KLQotICAgIHJldHVybiBXVEZNb3Zl
KHJlZ2lvbnMpOwotfQotCi1SZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpOYW1lZEZs
b3c+IEluc3BlY3RvckNTU0FnZW50OjpidWlsZE9iamVjdEZvck5hbWVkRmxvdyhFcnJvclN0cmlu
ZyYgZXJyb3JTdHJpbmcsIFdlYktpdE5hbWVkRmxvdyogd2Via2l0TmFtZWRGbG93LCBpbnQgZG9j
dW1lbnROb2RlSWQpCi17Ci0gICAgUmVmUHRyPE5vZGVMaXN0PiBjb250ZW50TGlzdCA9IHdlYmtp
dE5hbWVkRmxvdy0+Z2V0Q29udGVudCgpOwotICAgIGF1dG8gY29udGVudCA9IEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkFycmF5PGludD46OmNyZWF0ZSgpOwotCi0gICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IGNvbnRlbnRMaXN0LT5sZW5ndGgoKTsgKytpKSB7Ci0gICAgICAgIC8vIGRvY3VtZW50
Tm9kZUlkIHdhcyBwcmV2aW91c2x5IGFzc2VydGVkCi0gICAgICAgIGNvbnRlbnQtPmFkZEl0ZW0o
bV9kb21BZ2VudC0+cHVzaE5vZGVUb0Zyb250ZW5kKGVycm9yU3RyaW5nLCBkb2N1bWVudE5vZGVJ
ZCwgY29udGVudExpc3QtPml0ZW0oaSkpKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gSW5zcGVjdG9y
OjpQcm90b2NvbDo6Q1NTOjpOYW1lZEZsb3c6OmNyZWF0ZSgpCi0gICAgICAgIC5zZXREb2N1bWVu
dE5vZGVJZChkb2N1bWVudE5vZGVJZCkKLSAgICAgICAgLnNldE5hbWUod2Via2l0TmFtZWRGbG93
LT5uYW1lKCkuc3RyaW5nKCkpCi0gICAgICAgIC5zZXRPdmVyc2V0KHdlYmtpdE5hbWVkRmxvdy0+
b3ZlcnNldCgpKQotICAgICAgICAuc2V0Q29udGVudChXVEZNb3ZlKGNvbnRlbnQpKQotICAgICAg
ICAuc2V0UmVnaW9ucyhidWlsZEFycmF5Rm9yUmVnaW9ucyhlcnJvclN0cmluZywgd2Via2l0TmFt
ZWRGbG93LT5nZXRSZWdpb25zKCksIGRvY3VtZW50Tm9kZUlkKSkKLSAgICAgICAgLnJlbGVhc2Uo
KTsKLX0KLQogdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6ZGlkUmVtb3ZlRE9NTm9kZShOb2RlJiBu
b2RlLCBpbnQgbm9kZUlkKQogewogICAgIG1fbm9kZUlkVG9Gb3JjZWRQc2V1ZG9TdGF0ZS5yZW1v
dmUobm9kZUlkKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NB
Z2VudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JD
U1NBZ2VudC5oCShyZXZpc2lvbiAyMjIyNTcpCisrKyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQ1NTQWdlbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsMTQgKzQ3LDEyIEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENTU1J1bGU7CiBjbGFzcyBDU1NTdHlsZVJ1bGU7CiBj
bGFzcyBDU1NTdHlsZVNoZWV0OwotY2xhc3MgQ2hhbmdlUmVnaW9uT3ZlcnNldFRhc2s7CiBjbGFz
cyBEb2N1bWVudDsKIGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBOb2RlOwogY2xhc3MgTm9kZUxpc3Q7
CiBjbGFzcyBTdHlsZVJlc29sdmVyOwogY2xhc3MgU3R5bGVSdWxlOwotY2xhc3MgV2ViS2l0TmFt
ZWRGbG93OwogCiBjbGFzcyBJbnNwZWN0b3JDU1NBZ2VudCBmaW5hbAogICAgIDogcHVibGljIElu
c3BlY3RvckFnZW50QmFzZQpAQCAtOTEsMTggKzg5LDEyIEBAIHB1YmxpYzoKICAgICB2b2lkIGRp
c2NhcmRBZ2VudCgpIG92ZXJyaWRlOwogICAgIHZvaWQgZW5hYmxlKEVycm9yU3RyaW5nJikgb3Zl
cnJpZGU7CiAgICAgdm9pZCBkaXNhYmxlKEVycm9yU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCByZWdpb25PdmVyc2V0Q2hhbmdlZChXZWJLaXROYW1lZEZsb3cqLCBpbnQgZG9jdW1lbnROb2Rl
SWQpOwogICAgIHZvaWQgcmVzZXQoKTsKIAogICAgIC8vIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bgogICAgIHZvaWQgZG9jdW1lbnREZXRhY2hlZChEb2N1bWVudCYpOwogICAgIHZvaWQgbWVkaWFR
dWVyeVJlc3VsdENoYW5nZWQoKTsKICAgICB2b2lkIGFjdGl2ZVN0eWxlU2hlZXRzVXBkYXRlZChE
b2N1bWVudCYpOwotICAgIHZvaWQgZGlkQ3JlYXRlTmFtZWRGbG93KERvY3VtZW50JiwgV2ViS2l0
TmFtZWRGbG93Jik7Ci0gICAgdm9pZCB3aWxsUmVtb3ZlTmFtZWRGbG93KERvY3VtZW50JiwgV2Vi
S2l0TmFtZWRGbG93Jik7Ci0gICAgdm9pZCBkaWRDaGFuZ2VSZWdpb25PdmVyc2V0KERvY3VtZW50
JiwgV2ViS2l0TmFtZWRGbG93Jik7Ci0gICAgdm9pZCBkaWRSZWdpc3Rlck5hbWVkRmxvd0NvbnRl
bnRFbGVtZW50KERvY3VtZW50JiwgV2ViS2l0TmFtZWRGbG93JiwgTm9kZSYgY29udGVudEVsZW1l
bnQsIE5vZGUqIG5leHRDb250ZW50RWxlbWVudCA9IG51bGxwdHIpOwotICAgIHZvaWQgZGlkVW5y
ZWdpc3Rlck5hbWVkRmxvd0NvbnRlbnRFbGVtZW50KERvY3VtZW50JiwgV2ViS2l0TmFtZWRGbG93
JiwgTm9kZSYgY29udGVudEVsZW1lbnQpOwogICAgIGJvb2wgZm9yY2VQc2V1ZG9TdGF0ZShjb25z
dCBFbGVtZW50JiwgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzVHlwZSk7CiAKICAgICB2b2lkIGdl
dENvbXB1dGVkU3R5bGVGb3JOb2RlKEVycm9yU3RyaW5nJiwgaW50IG5vZGVJZCwgUmVmUHRyPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTQ29t
cHV0ZWRTdHlsZVByb3BlcnR5Pj4mKSBvdmVycmlkZTsKQEAgLTEzNyw3ICsxMjksNiBAQCBwcml2
YXRlOgogICAgIHZvaWQgcmVzZXROb25QZXJzaXN0ZW50RGF0YSgpOwogICAgIEluc3BlY3RvclN0
eWxlU2hlZXRGb3JJbmxpbmVTdHlsZSYgYXNJbnNwZWN0b3JTdHlsZVNoZWV0KFN0eWxlZEVsZW1l
bnQmKTsKICAgICBFbGVtZW50KiBlbGVtZW50Rm9ySWQoRXJyb3JTdHJpbmcmLCBpbnQgbm9kZUlk
KTsKLSAgICBpbnQgZG9jdW1lbnROb2RlV2l0aFJlcXVlc3RlZEZsb3dzSWQoRG9jdW1lbnQqKTsK
IAogICAgIHZvaWQgY29sbGVjdEFsbFN0eWxlU2hlZXRzKFZlY3RvcjxJbnNwZWN0b3JTdHlsZVNo
ZWV0Kj4mKTsKICAgICB2b2lkIGNvbGxlY3RBbGxEb2N1bWVudFN0eWxlU2hlZXRzKERvY3VtZW50
JiwgVmVjdG9yPENTU1N0eWxlU2hlZXQqPiYpOwpAQCAtMTU0LDggKzE0NSw2IEBAIHByaXZhdGU6
CiAgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTUnVsZT4gYnVpbGRPYmpl
Y3RGb3JSdWxlKENTU1N0eWxlUnVsZSopOwogICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29s
OjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OlJ1bGVNYXRjaD4+IGJ1aWxkQXJyYXlG
b3JNYXRjaGVkUnVsZUxpc3QoY29uc3QgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGU+PiYsIFN0eWxl
UmVzb2x2ZXImLCBFbGVtZW50JiwgUHNldWRvSWQpOwogICAgIFJlZlB0cjxJbnNwZWN0b3I6OlBy
b3RvY29sOjpDU1M6OkNTU1N0eWxlPiBidWlsZE9iamVjdEZvckF0dHJpYnV0ZXNTdHlsZShTdHls
ZWRFbGVtZW50Jik7Ci0gICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkNTUzo6UmVnaW9uPj4gYnVpbGRBcnJheUZvclJlZ2lvbnMoRXJyb3JT
dHJpbmcmLCBSZWZQdHI8Tm9kZUxpc3Q+JiYsIGludCBkb2N1bWVudE5vZGVJZCk7Ci0gICAgUmVm
UHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6TmFtZWRGbG93PiBidWlsZE9iamVjdEZvck5h
bWVkRmxvdyhFcnJvclN0cmluZyYsIFdlYktpdE5hbWVkRmxvdyosIGludCBkb2N1bWVudE5vZGVJ
ZCk7CiAKICAgICAvLyBJbnNwZWN0b3JET01BZ2VudDo6RE9NTGlzdGVuZXIgaW1wbGVtZW50YXRp
b24KICAgICB2b2lkIGRpZFJlbW92ZURPTU5vZGUoTm9kZSYsIGludCBub2RlSWQpIG92ZXJyaWRl
OwpAQCAtMTc3LDggKzE2Niw2IEBAIHByaXZhdGU6CiAgICAgSGFzaE1hcDxEb2N1bWVudCosIEhh
c2hTZXQ8Q1NTU3R5bGVTaGVldCo+PiBtX2RvY3VtZW50VG9Lbm93bkNTU1N0eWxlU2hlZXRzOwog
ICAgIE5vZGVJZFRvRm9yY2VkUHNldWRvU3RhdGUgbV9ub2RlSWRUb0ZvcmNlZFBzZXVkb1N0YXRl
OwogICAgIEhhc2hTZXQ8RG9jdW1lbnQqPiBtX2RvY3VtZW50c1dpdGhGb3JjZWRQc2V1ZG9TdGF0
ZXM7Ci0gICAgSGFzaFNldDxpbnQ+IG1fbmFtZWRGbG93Q29sbGVjdGlvbnNSZXF1ZXN0ZWQ7Ci0g
ICAgc3RkOjp1bmlxdWVfcHRyPENoYW5nZVJlZ2lvbk92ZXJzZXRUYXNrPiBtX2NoYW5nZVJlZ2lv
bk92ZXJzZXRUYXNrOwogCiAgICAgaW50IG1fbGFzdFN0eWxlU2hlZXRJZCB7IDEgfTsKICAgICBi
b29sIG1fY3JlYXRpbmdWaWFJbnNwZWN0b3JTdHlsZVNoZWV0IHsgZmFsc2UgfTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRp
b24uY3BwCShyZXZpc2lvbiAyMjIyNTcpCisrKyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQ5LDQyICsyNDks
NiBAQCB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6cHNldWRvRWxlCiAgICAgICAgIGxh
eWVyVHJlZUFnZW50LT5wc2V1ZG9FbGVtZW50RGVzdHJveWVkKHBzZXVkb0VsZW1lbnQpOwogfQog
Ci12b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ3JlYXRlTmFtZWRGbG93SW1wbChJ
bnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBEb2N1bWVudCogZG9jdW1l
bnQsIFdlYktpdE5hbWVkRmxvdyYgbmFtZWRGbG93KQotewotICAgIGlmICghZG9jdW1lbnQpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIGlmIChJbnNwZWN0b3JDU1NBZ2VudCogY3NzQWdlbnQgPSBp
bnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckNTU0FnZW50KCkpCi0gICAgICAgIGNzc0FnZW50
LT5kaWRDcmVhdGVOYW1lZEZsb3coKmRvY3VtZW50LCBuYW1lZEZsb3cpOwotfQotCi12b2lkIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFJlbW92ZU5hbWVkRmxvd0ltcGwoSW5zdHJ1bWVu
dGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgRG9jdW1lbnQqIGRvY3VtZW50LCBXZWJL
aXROYW1lZEZsb3cmIG5hbWVkRmxvdykKLXsKLSAgICBpZiAoIWRvY3VtZW50KQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBpZiAoSW5zcGVjdG9yQ1NTQWdlbnQqIGNzc0FnZW50ID0gaW5zdHJ1bWVu
dGluZ0FnZW50cy5pbnNwZWN0b3JDU1NBZ2VudCgpKQotICAgICAgICBjc3NBZ2VudC0+d2lsbFJl
bW92ZU5hbWVkRmxvdygqZG9jdW1lbnQsIG5hbWVkRmxvdyk7Ci19Ci0KLXZvaWQgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpkaWRDaGFuZ2VSZWdpb25PdmVyc2V0SW1wbChJbnN0cnVtZW50aW5n
QWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBEb2N1bWVudCYgZG9jdW1lbnQsIFdlYktpdE5h
bWVkRmxvdyYgbmFtZWRGbG93KQotewotICAgIGlmIChJbnNwZWN0b3JDU1NBZ2VudCogY3NzQWdl
bnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckNTU0FnZW50KCkpCi0gICAgICAgIGNz
c0FnZW50LT5kaWRDaGFuZ2VSZWdpb25PdmVyc2V0KGRvY3VtZW50LCBuYW1lZEZsb3cpOwotfQot
Ci12b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVnaXN0ZXJOYW1lZEZsb3dDb250
ZW50RWxlbWVudEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywg
RG9jdW1lbnQmIGRvY3VtZW50LCBXZWJLaXROYW1lZEZsb3cmIG5hbWVkRmxvdywgTm9kZSYgY29u
dGVudEVsZW1lbnQsIE5vZGUqIG5leHRDb250ZW50RWxlbWVudCkKLXsKLSAgICBpZiAoSW5zcGVj
dG9yQ1NTQWdlbnQqIGNzc0FnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JDU1NB
Z2VudCgpKQotICAgICAgICBjc3NBZ2VudC0+ZGlkUmVnaXN0ZXJOYW1lZEZsb3dDb250ZW50RWxl
bWVudChkb2N1bWVudCwgbmFtZWRGbG93LCBjb250ZW50RWxlbWVudCwgbmV4dENvbnRlbnRFbGVt
ZW50KTsKLX0KLQotdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFVucmVnaXN0ZXJO
YW1lZEZsb3dDb250ZW50RWxlbWVudEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVu
dGluZ0FnZW50cywgRG9jdW1lbnQmIGRvY3VtZW50LCBXZWJLaXROYW1lZEZsb3cmIG5hbWVkRmxv
dywgTm9kZSYgY29udGVudEVsZW1lbnQpCi17Ci0gICAgaWYgKEluc3BlY3RvckNTU0FnZW50KiBj
c3NBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yQ1NTQWdlbnQoKSkKLSAgICAg
ICAgY3NzQWdlbnQtPmRpZFVucmVnaXN0ZXJOYW1lZEZsb3dDb250ZW50RWxlbWVudChkb2N1bWVu
dCwgbmFtZWRGbG93LCBjb250ZW50RWxlbWVudCk7Ci19Ci0KIHZvaWQgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjptb3VzZURpZE1vdmVPdmVyRWxlbWVudEltcGwoSW5zdHJ1bWVudGluZ0FnZW50
cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgY29uc3QgSGl0VGVzdFJlc3VsdCYgcmVzdWx0LCB1bnNp
Z25lZCBtb2RpZmllckZsYWdzKQogewogICAgIGlmIChJbnNwZWN0b3JET01BZ2VudCogZG9tQWdl
bnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckRPTUFnZW50KCkpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwCShyZXZpc2lvbiAy
MjIyNTcpCisrKyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTUxLDggKzUxLDYgQEAKICNpbmNsdWRlICJSZW5kZXJFbGVtZW50
LmgiCiAjaW5jbHVkZSAiUmVuZGVyRmxvd1RocmVhZC5oIgogI2luY2x1ZGUgIlJlbmRlcklubGlu
ZS5oIgotI2luY2x1ZGUgIlJlbmRlck5hbWVkRmxvd0ZyYWdtZW50LmgiCi0jaW5jbHVkZSAiUmVu
ZGVyTmFtZWRGbG93VGhyZWFkLmgiCiAjaW5jbHVkZSAiUmVuZGVyUmVnaW9uLmgiCiAjaW5jbHVk
ZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKQEAgLTEyMCw3
ICsxMTgsNyBAQCBzdGF0aWMgdm9pZCBidWlsZFJlbmRlcmVySGlnaGxpZ2h0KFJlbmRlCiAgICAg
ICAgICAgICAgICAgbWFyZ2lucy5lbmQocmVuZGVyQm94LnN0eWxlKCkud3JpdGluZ01vZGUoKSkg
PSBjb21wdXRlZFZhbHVlcy5tX21hcmdpbnMubV9lbmQ7CiAgICAgICAgICAgICB9CiAKLSAgICAg
ICAgICAgIHBhZGRpbmdCb3ggPSByZW5kZXJCb3guY2xpZW50Qm94UmVjdEluUmVnaW9uKHJlZ2lv
bik7CisgICAgICAgICAgICBwYWRkaW5nQm94ID0gcmVuZGVyQm94LmNsaWVudEJveFJlY3QoKTsK
ICAgICAgICAgICAgIGNvbnRlbnRCb3ggPSBMYXlvdXRSZWN0KHBhZGRpbmdCb3gueCgpICsgcmVu
ZGVyQm94LnBhZGRpbmdMZWZ0KCksIHBhZGRpbmdCb3gueSgpICsgcmVuZGVyQm94LnBhZGRpbmdU
b3AoKSwKICAgICAgICAgICAgICAgICBwYWRkaW5nQm94LndpZHRoKCkgLSByZW5kZXJCb3gucGFk
ZGluZ0xlZnQoKSAtIHJlbmRlckJveC5wYWRkaW5nUmlnaHQoKSwgcGFkZGluZ0JveC5oZWlnaHQo
KSAtIHJlbmRlckJveC5wYWRkaW5nVG9wKCkgLSByZW5kZXJCb3gucGFkZGluZ0JvdHRvbSgpKTsK
ICAgICAgICAgICAgIGJvcmRlckJveCA9IExheW91dFJlY3QocGFkZGluZ0JveC54KCkgLSByZW5k
ZXJCb3guYm9yZGVyTGVmdCgpLCBwYWRkaW5nQm94LnkoKSAtIHJlbmRlckJveC5ib3JkZXJUb3Ao
KSwKQEAgLTM5NSw2OCArMzkzLDYgQEAgc3RhdGljIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpP
dmVybGF5VAogICAgICAgICAucmVsZWFzZSgpOwogfQogCi1zdGF0aWMgUmVmUHRyPEluc3BlY3Rv
cjo6UHJvdG9jb2w6Ok92ZXJsYXlUeXBlczo6UmVnaW9uPiBidWlsZE9iamVjdEZvclJlZ2lvbihG
cmFtZVZpZXcqIG1haW5WaWV3LCBSZW5kZXJSZWdpb24qIHJlZ2lvbikKLXsKLSAgICBGcmFtZVZp
ZXcqIGNvbnRhaW5pbmdWaWV3ID0gcmVnaW9uLT5mcmFtZSgpLnZpZXcoKTsKLSAgICBpZiAoIWNv
bnRhaW5pbmdWaWV3KQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIFJlbmRlckJsb2Nr
RmxvdyYgcmVnaW9uQ29udGFpbmVyID0gZG93bmNhc3Q8UmVuZGVyQmxvY2tGbG93PigqcmVnaW9u
LT5wYXJlbnQoKSk7Ci0gICAgTGF5b3V0UmVjdCBib3JkZXJCb3ggPSByZWdpb25Db250YWluZXIu
Ym9yZGVyQm94UmVjdCgpOwotICAgIGJvcmRlckJveC5zZXRXaWR0aChib3JkZXJCb3gud2lkdGgo
KSArIHJlZ2lvbkNvbnRhaW5lci52ZXJ0aWNhbFNjcm9sbGJhcldpZHRoKCkpOwotICAgIGJvcmRl
ckJveC5zZXRIZWlnaHQoYm9yZGVyQm94LmhlaWdodCgpICsgcmVnaW9uQ29udGFpbmVyLmhvcml6
b250YWxTY3JvbGxiYXJIZWlnaHQoKSk7Ci0KLSAgICAvLyBDcmVhdGUgaW5jb21pbmcgYW5kIG91
dGdvaW5nIGJveGVzIHRoYXQgd2UgdXNlIHRvIGNoYWluIHRoZSByZWdpb25zIHRvZ2hldGhlci4K
LSAgICBjb25zdCBMYXlvdXRTaXplIGxpbmtCb3hTaXplKDEwLCAxMCk7Ci0gICAgY29uc3QgTGF5
b3V0U2l6ZSBsaW5rQm94TWlkcG9pbnQobGlua0JveFNpemUud2lkdGgoKSAvIDIsIGxpbmtCb3hT
aXplLmhlaWdodCgpIC8gMik7Ci0KLSAgICBMYXlvdXRSZWN0IGluY29taW5nUmVjdEJveCA9IExh
eW91dFJlY3QoYm9yZGVyQm94LmxvY2F0aW9uKCkgLSBsaW5rQm94TWlkcG9pbnQsIGxpbmtCb3hT
aXplKTsKLSAgICBMYXlvdXRSZWN0IG91dGdvaW5nUmVjdEJveCA9IExheW91dFJlY3QoYm9yZGVy
Qm94LmxvY2F0aW9uKCkgLSBsaW5rQm94TWlkcG9pbnQgKyBib3JkZXJCb3guc2l6ZSgpLCBsaW5r
Qm94U2l6ZSk7Ci0KLSAgICAvLyBNb3ZlIHRoZSBsaW5rIGJveGVzIHNsaWdodGx5IGluc2lkZSB0
aGUgcmVnaW9uIGJvcmRlciBib3guCi0gICAgTGF5b3V0VW5pdCBtYXhVc2FibGVIZWlnaHQgPSBz
dGQ6Om1heChMYXlvdXRVbml0KCksIGJvcmRlckJveC5oZWlnaHQoKSAtIGxpbmtCb3hNaWRwb2lu
dC5oZWlnaHQoKSk7Ci0gICAgTGF5b3V0VW5pdCBsaW5rQm94VmVydGljYWxPZmZzZXQgPSBzdGQ6
Om1pbihMYXlvdXRVbml0Ojpmcm9tUGl4ZWwoMTUpLCBtYXhVc2FibGVIZWlnaHQpOwotICAgIGlu
Y29taW5nUmVjdEJveC5tb3ZlKDAsIGxpbmtCb3hWZXJ0aWNhbE9mZnNldCk7Ci0gICAgb3V0Z29p
bmdSZWN0Qm94Lm1vdmUoMCwgLWxpbmtCb3hWZXJ0aWNhbE9mZnNldCk7Ci0KLSAgICBGbG9hdFF1
YWQgYm9yZGVyUmVjdFF1YWQgPSByZWdpb25Db250YWluZXIubG9jYWxUb0Fic29sdXRlUXVhZChG
bG9hdFJlY3QoYm9yZGVyQm94KSk7Ci0gICAgRmxvYXRRdWFkIGluY29taW5nUmVjdFF1YWQgPSBy
ZWdpb25Db250YWluZXIubG9jYWxUb0Fic29sdXRlUXVhZChGbG9hdFJlY3QoaW5jb21pbmdSZWN0
Qm94KSk7Ci0gICAgRmxvYXRRdWFkIG91dGdvaW5nUmVjdFF1YWQgPSByZWdpb25Db250YWluZXIu
bG9jYWxUb0Fic29sdXRlUXVhZChGbG9hdFJlY3Qob3V0Z29pbmdSZWN0Qm94KSk7Ci0KLSAgICBj
b250ZW50c1F1YWRUb1BhZ2UobWFpblZpZXcsIGNvbnRhaW5pbmdWaWV3LCBib3JkZXJSZWN0UXVh
ZCk7Ci0gICAgY29udGVudHNRdWFkVG9QYWdlKG1haW5WaWV3LCBjb250YWluaW5nVmlldywgaW5j
b21pbmdSZWN0UXVhZCk7Ci0gICAgY29udGVudHNRdWFkVG9QYWdlKG1haW5WaWV3LCBjb250YWlu
aW5nVmlldywgb3V0Z29pbmdSZWN0UXVhZCk7Ci0KLSAgICByZXR1cm4gSW5zcGVjdG9yOjpQcm90
b2NvbDo6T3ZlcmxheVR5cGVzOjpSZWdpb246OmNyZWF0ZSgpCi0gICAgICAgIC5zZXRCb3JkZXJR
dWFkKGJ1aWxkQXJyYXlGb3JRdWFkKGJvcmRlclJlY3RRdWFkKSkKLSAgICAgICAgLnNldEluY29t
aW5nUXVhZChidWlsZEFycmF5Rm9yUXVhZChpbmNvbWluZ1JlY3RRdWFkKSkKLSAgICAgICAgLnNl
dE91dGdvaW5nUXVhZChidWlsZEFycmF5Rm9yUXVhZChvdXRnb2luZ1JlY3RRdWFkKSkKLSAgICAg
ICAgLnJlbGVhc2UoKTsKLX0KLQotc3RhdGljIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJh
eTxJbnNwZWN0b3I6OlByb3RvY29sOjpPdmVybGF5VHlwZXM6OlJlZ2lvbj4+IGJ1aWxkT2JqZWN0
Rm9yRmxvd1JlZ2lvbnMoUmVuZGVyUmVnaW9uKiByZWdpb24sIFJlbmRlckZsb3dUaHJlYWQqIGZs
b3dUaHJlYWQpCi17Ci0gICAgRnJhbWVWaWV3KiBtYWluRnJhbWVWaWV3ID0gcmVnaW9uLT5kb2N1
bWVudCgpLnBhZ2UoKS0+bWFpbkZyYW1lKCkudmlldygpOwotCi0gICAgYXV0byBhcnJheU9mUmVn
aW9ucyA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok92
ZXJsYXlUeXBlczo6UmVnaW9uPjo6Y3JlYXRlKCk7Ci0KLSAgICBjb25zdCBSZW5kZXJSZWdpb25M
aXN0JiByZWdpb25MaXN0ID0gZmxvd1RocmVhZC0+cmVuZGVyUmVnaW9uTGlzdCgpOwotICAgIGZv
ciAoYXV0byYgaXRlclJlZ2lvbiA6IHJlZ2lvbkxpc3QpIHsKLSAgICAgICAgaWYgKCFpdGVyUmVn
aW9uLT5pc1ZhbGlkKCkpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgUmVmUHRyPElu
c3BlY3Rvcjo6UHJvdG9jb2w6Ok92ZXJsYXlUeXBlczo6UmVnaW9uPiByZWdpb25PYmplY3QgPSBi
dWlsZE9iamVjdEZvclJlZ2lvbihtYWluRnJhbWVWaWV3LCBpdGVyUmVnaW9uKTsKLSAgICAgICAg
aWYgKCFyZWdpb25PYmplY3QpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgaWYgKHJl
Z2lvbiA9PSBpdGVyUmVnaW9uKSB7Ci0gICAgICAgICAgICAvLyBMZXQgdGhlIHNjcmlwdCBrbm93
IHRoYXQgdGhpcyBpcyB0aGUgY3VycmVudGx5IGhpZ2hsaWdodGVkIG5vZGUuCi0gICAgICAgICAg
ICByZWdpb25PYmplY3QtPnNldElzSGlnaGxpZ2h0ZWQodHJ1ZSk7Ci0gICAgICAgIH0KLSAgICAg
ICAgYXJyYXlPZlJlZ2lvbnMtPmFkZEl0ZW0oV1RGTW92ZShyZWdpb25PYmplY3QpKTsKLSAgICB9
Ci0KLSAgICByZXR1cm4gYXJyYXlPZlJlZ2lvbnM7Ci19Ci0KIHN0YXRpYyBSZWY8SW5zcGVjdG9y
OjpQcm90b2NvbDo6T3ZlcmxheVR5cGVzOjpTaXplPiBidWlsZE9iamVjdEZvclNpemUoY29uc3Qg
SW50U2l6ZSYgc2l6ZSkKIHsKICAgICByZXR1cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6T3Zlcmxh
eVR5cGVzOjpTaXplOjpjcmVhdGUoKQpAQCAtNjk1LDcgKzYzMSw3IEBAIHN0YXRpYyBSZWZQdHI8
SW5zcGVjdG9yOjpQcm90b2NvbDo6T3ZlcmwKICAgICByZXR1cm4gV1RGTW92ZShzaGFwZU9iamVj
dCk7CiB9CiAKLXN0YXRpYyBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6T3ZlcmxheVR5cGVz
OjpFbGVtZW50RGF0YT4gYnVpbGRPYmplY3RGb3JFbGVtZW50RGF0YShOb2RlKiBub2RlLCBIaWdo
bGlnaHRUeXBlIHR5cGUpCitzdGF0aWMgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok92ZXJs
YXlUeXBlczo6RWxlbWVudERhdGE+IGJ1aWxkT2JqZWN0Rm9yRWxlbWVudERhdGEoTm9kZSogbm9k
ZSwgSGlnaGxpZ2h0VHlwZSkKIHsKICAgICBpZiAoIWlzPEVsZW1lbnQ+KG5vZGUpIHx8ICFub2Rl
LT5kb2N1bWVudCgpLmZyYW1lKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtNzUxLDI3
ICs2ODcsNiBAQCBzdGF0aWMgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok92ZXJsCiAgICAg
ICAgIC5yZWxlYXNlKCk7CiAgICAgZWxlbWVudERhdGEtPnNldFNpemUoV1RGTW92ZShzaXplT2Jq
ZWN0KSk7CiAKLSAgICBpZiAodHlwZSAhPSBIaWdobGlnaHRUeXBlOjpOb2RlTGlzdCAmJiByZW5k
ZXJlci0+aXNSZW5kZXJOYW1lZEZsb3dGcmFnbWVudENvbnRhaW5lcigpKSB7Ci0gICAgICAgIFJl
bmRlck5hbWVkRmxvd0ZyYWdtZW50JiByZWdpb24gPSAqZG93bmNhc3Q8UmVuZGVyQmxvY2tGbG93
PigqcmVuZGVyZXIpLnJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KCk7Ci0gICAgICAgIGlmIChyZWdp
b24uaXNWYWxpZCgpKSB7Ci0gICAgICAgICAgICBSZW5kZXJGbG93VGhyZWFkKiBmbG93VGhyZWFk
ID0gcmVnaW9uLmZsb3dUaHJlYWQoKTsKLSAgICAgICAgICAgIGF1dG8gcmVnaW9uRmxvd0RhdGEg
PSBJbnNwZWN0b3I6OlByb3RvY29sOjpPdmVybGF5VHlwZXM6OlJlZ2lvbkZsb3dEYXRhOjpjcmVh
dGUoKQotICAgICAgICAgICAgICAgIC5zZXROYW1lKGRvd25jYXN0PFJlbmRlck5hbWVkRmxvd1Ro
cmVhZD4oKmZsb3dUaHJlYWQpLmZsb3dUaHJlYWROYW1lKCkpCi0gICAgICAgICAgICAgICAgLnNl
dFJlZ2lvbnMoYnVpbGRPYmplY3RGb3JGbG93UmVnaW9ucygmcmVnaW9uLCBmbG93VGhyZWFkKSkK
LSAgICAgICAgICAgICAgICAucmVsZWFzZSgpOwotICAgICAgICAgICAgZWxlbWVudERhdGEtPnNl
dFJlZ2lvbkZsb3dEYXRhKFdURk1vdmUocmVnaW9uRmxvd0RhdGEpKTsKLSAgICAgICAgfQotICAg
IH0KLQotICAgIFJlbmRlckZsb3dUaHJlYWQqIGNvbnRhaW5pbmdGbG93VGhyZWFkID0gcmVuZGVy
ZXItPmZsb3dUaHJlYWRDb250YWluaW5nQmxvY2soKTsKLSAgICBpZiAoaXM8UmVuZGVyTmFtZWRG
bG93VGhyZWFkPihjb250YWluaW5nRmxvd1RocmVhZCkpIHsKLSAgICAgICAgYXV0byBjb250ZW50
Rmxvd0RhdGEgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpPdmVybGF5VHlwZXM6OkNvbnRlbnRGbG93
RGF0YTo6Y3JlYXRlKCkKLSAgICAgICAgICAgIC5zZXROYW1lKGRvd25jYXN0PFJlbmRlck5hbWVk
Rmxvd1RocmVhZD4oKmNvbnRhaW5pbmdGbG93VGhyZWFkKS5mbG93VGhyZWFkTmFtZSgpKQotICAg
ICAgICAgICAgLnJlbGVhc2UoKTsKLQotICAgICAgICBlbGVtZW50RGF0YS0+c2V0Q29udGVudEZs
b3dEYXRhKFdURk1vdmUoY29udGVudEZsb3dEYXRhKSk7Ci0gICAgfQotCiAgICAgaWYgKGlzPFJl
bmRlckJveD4oKnJlbmRlcmVyKSkgewogICAgICAgICBhdXRvJiByZW5kZXJCb3ggPSBkb3duY2Fz
dDxSZW5kZXJCb3g+KCpyZW5kZXJlcik7CiAgICAgICAgIGlmIChSZWZQdHI8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6T3ZlcmxheVR5cGVzOjpTaGFwZU91dHNpZGVEYXRhPiBzaGFwZU9iamVjdCA9IGJ1
aWxkT2JqZWN0Rm9yU2hhcGVPdXRzaWRlKGNvbnRhaW5pbmdGcmFtZSwgJnJlbmRlckJveCkpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCShyZXZpc2lvbiAyMjIyNTcpCisr
KyBTb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTc1LDcgKzc1LDYgQEAKICNpbmNsdWRlICJSZW5kZXJGcmFtZVNldC5oIgogI2luY2x1ZGUgIlJl
bmRlckxheWVyLmgiCiAjaW5jbHVkZSAiUmVuZGVyTGlzdEJveC5oIgotI2luY2x1ZGUgIlJlbmRl
ck5hbWVkRmxvd1RocmVhZC5oIgogI2luY2x1ZGUgIlJlbmRlclRleHRDb250cm9sU2luZ2xlTGlu
ZS5oIgogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKICNpbmNsdWRlICJSZW5kZXJXaWRnZXQuaCIK
QEAgLTMyOSw4ICszMjgsNiBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaGFuZGxlV2hlZWxFdmVudElu
QXBwCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgICAgICBjdXJyZW50RW5jbG9zaW5n
Qm94ID0gY3VycmVudEVuY2xvc2luZ0JveC0+Y29udGFpbmluZ0Jsb2NrKCk7Ci0gICAgICAgIGlm
IChjdXJyZW50RW5jbG9zaW5nQm94ICYmIGN1cnJlbnRFbmNsb3NpbmdCb3gtPmlzUmVuZGVyTmFt
ZWRGbG93VGhyZWFkKCkpCi0gICAgICAgICAgICBjdXJyZW50RW5jbG9zaW5nQm94ID0gUmVuZGVy
TmFtZWRGbG93VGhyZWFkOjpmcmFnbWVudEZyb21SZW5kZXJCb3hBc1JlbmRlckJsb2NrKGN1cnJl
bnRFbmNsb3NpbmdCb3gsIHJvdW5kZWRJbnRQb2ludCh3aGVlbEV2ZW50LmFic29sdXRlTG9jYXRp
b24oKSksIGluaXRpYWxFbmNsb3NpbmdCb3gpOwogICAgICAgICBpZiAoIWN1cnJlbnRFbmNsb3Np
bmdCb3ggfHwgY3VycmVudEVuY2xvc2luZ0JveC0+aXNSZW5kZXJWaWV3KCkpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0Zs
b3dUaHJlYWRDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvRmxvd1RocmVhZENvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAyMjIyNTcpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvRmxvd1RocmVhZENvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zMCwxMiArMzAsMTAgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJG
bG93VGhyZWFkQ29udHJvbGxlci5oIgogCi0jaW5jbHVkZSAiTmFtZWRGbG93Q29sbGVjdGlvbi5o
IgogI2luY2x1ZGUgIlJlbmRlckZsb3dUaHJlYWQuaCIKICNpbmNsdWRlICJSZW5kZXJMYXllci5o
IgogI2luY2x1ZGUgIlJlbmRlck5hbWVkRmxvd1RocmVhZC5oIgogI2luY2x1ZGUgIlN0eWxlSW5o
ZXJpdGVkRGF0YS5oIgotI2luY2x1ZGUgIldlYktpdE5hbWVkRmxvdy5oIgogI2luY2x1ZGUgPHd0
Zi90ZXh0L0F0b21pY1N0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01MSwzNCAr
NDksNiBAQCBGbG93VGhyZWFkQ29udHJvbGxlcjo6fkZsb3dUaHJlYWRDb250cm9sCiB7CiB9CiAK
LVJlbmRlck5hbWVkRmxvd1RocmVhZCYgRmxvd1RocmVhZENvbnRyb2xsZXI6OmVuc3VyZVJlbmRl
ckZsb3dUaHJlYWRXaXRoTmFtZShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpCi17Ci0gICAgaWYg
KCFtX3JlbmRlck5hbWVkRmxvd1RocmVhZExpc3QpCi0gICAgICAgIG1fcmVuZGVyTmFtZWRGbG93
VGhyZWFkTGlzdCA9IHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyTmFtZWRGbG93VGhyZWFkTGlzdD4o
KTsKLSAgICBlbHNlIHsKLSAgICAgICAgZm9yIChhdXRvJiBmbG93UmVuZGVyZXIgOiAqbV9yZW5k
ZXJOYW1lZEZsb3dUaHJlYWRMaXN0KSB7Ci0gICAgICAgICAgICBpZiAoZmxvd1JlbmRlcmVyLT5m
bG93VGhyZWFkTmFtZSgpID09IG5hbWUpCi0gICAgICAgICAgICAgICAgcmV0dXJuICpmbG93UmVu
ZGVyZXI7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBOYW1lZEZsb3dDb2xsZWN0aW9uJiBuYW1l
ZEZsb3dzID0gbV92aWV3LT5kb2N1bWVudCgpLm5hbWVkRmxvd3MoKTsKLQotICAgIC8vIFNhbml0
eSBjaGVjayBmb3IgdGhlIGFic2VuY2Ugb2YgYSBuYW1lZCBmbG93IGluIHRoZSAiQ1JFQVRFRCIg
c3RhdGUgd2l0aCB0aGUgc2FtZSBuYW1lLgotICAgIEFTU0VSVCghbmFtZWRGbG93cy5mbG93QnlO
YW1lKG5hbWUpKTsKLQotICAgIGF1dG8gZmxvd1JlbmRlcmVyID0gbmV3IFJlbmRlck5hbWVkRmxv
d1RocmVhZChtX3ZpZXctPmRvY3VtZW50KCksIFJlbmRlckZsb3dUaHJlYWQ6OmNyZWF0ZUZsb3dU
aHJlYWRTdHlsZSgmbV92aWV3LT5zdHlsZSgpKSwgbmFtZWRGbG93cy5lbnN1cmVGbG93V2l0aE5h
bWUobmFtZSkpOwotICAgIGZsb3dSZW5kZXJlci0+aW5pdGlhbGl6ZVN0eWxlKCk7Ci0gICAgbV9y
ZW5kZXJOYW1lZEZsb3dUaHJlYWRMaXN0LT5hZGQoZmxvd1JlbmRlcmVyKTsKLQotICAgIC8vIEtl
ZXAgdGhlIGZsb3cgcmVuZGVyZXIgYXMgYSBjaGlsZCBvZiBSZW5kZXJWaWV3LgotICAgIG1fdmll
dy0+YWRkQ2hpbGQoZmxvd1JlbmRlcmVyKTsKLQotICAgIHNldElzUmVuZGVyTmFtZWRGbG93VGhy
ZWFkT3JkZXJEaXJ0eSh0cnVlKTsKLQotICAgIHJldHVybiAqZmxvd1JlbmRlcmVyOwotfQotCiB2
b2lkIEZsb3dUaHJlYWRDb250cm9sbGVyOjpzdHlsZURpZENoYW5nZSgpCiB7CiAgICAgYXV0byYg
dmlld1N0eWxlID0gbV92aWV3LT5zdHlsZSgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0Zsb3dUaHJlYWRDb250cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0Zsb3dUaHJlYWRDb250cm9sbGVyLmgJKHJldmlzaW9uIDIyMjI1NykKKysrIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GbG93VGhyZWFkQ29udHJvbGxlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC01NSw3ICs1NSw2IEBAIHB1YmxpYzoKICAgICAgICAgICAgIG1fdmlldy0+c2V0TmVl
ZHNMYXlvdXQoKTsKICAgICB9CiAKLSAgICBSZW5kZXJOYW1lZEZsb3dUaHJlYWQmIGVuc3VyZVJl
bmRlckZsb3dUaHJlYWRXaXRoTmFtZShjb25zdCBBdG9taWNTdHJpbmcmKTsKICAgICBjb25zdCBS
ZW5kZXJOYW1lZEZsb3dUaHJlYWRMaXN0KiByZW5kZXJOYW1lZEZsb3dUaHJlYWRMaXN0KCkgY29u
c3QgeyByZXR1cm4gbV9yZW5kZXJOYW1lZEZsb3dUaHJlYWRMaXN0LmdldCgpOyB9CiAgICAgYm9v
bCBoYXNSZW5kZXJOYW1lZEZsb3dUaHJlYWRzKCkgY29uc3QgeyByZXR1cm4gbV9yZW5kZXJOYW1l
ZEZsb3dUaHJlYWRMaXN0ICYmICFtX3JlbmRlck5hbWVkRmxvd1RocmVhZExpc3QtPmlzRW1wdHko
KTsgfQogICAgIHZvaWQgbGF5b3V0UmVuZGVyTmFtZWRGbG93VGhyZWFkcygpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlZ2lvbk92ZXJzZXRTdGF0ZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZWdpb25PdmVyc2V0U3RhdGUuaAkocmV2aXNpb24g
MjIyMjU3KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlZ2lvbk92ZXJzZXRTdGF0ZS5o
CShub25leGlzdGVudCkKQEAgLTEsMzAgKzAsMCBAQAotLyoKLSAqIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U
WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICog
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICog
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmls
ZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0
b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotZW51bSBSZWdpb25PdmVyc2V0U3RhdGUgewotICAgIFJlZ2lvblVu
ZGVmaW5lZCwKLSAgICBSZWdpb25FbXB0eSwKLSAgICBSZWdpb25GaXQsCi0gICAgUmVnaW9uT3Zl
cnNldAotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAJKHJldmlzaW9uIDIyMjI1NykKKysrIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xNTIxLDggKzE1MjEsNyBAQCBMYXlvdXRVbml0IFJlbmRlckJsb2NrRmxvdzo6YXBwbHlC
ZWZvcmVCCiAgICAgYm9vbCBjaGVja1BhZ2VCcmVha3MgPSAhY2hlY2tDb2x1bW5CcmVha3MgJiYg
dmlldygpLmxheW91dFN0YXRlKCktPm1fcGFnZUxvZ2ljYWxIZWlnaHQ7IC8vIEZJWE1FOiBPbmNl
IGNvbHVtbnMgY2FuIHByaW50IHdlIGhhdmUgdG8gY2hlY2sgdGhpcy4KICAgICBib29sIGNoZWNr
UmVnaW9uQnJlYWtzID0gZmxvd1RocmVhZCAmJiBmbG93VGhyZWFkLT5pc1JlbmRlck5hbWVkRmxv
d1RocmVhZCgpOwogICAgIGJvb2wgY2hlY2tCZWZvcmVBbHdheXMgPSAoY2hlY2tDb2x1bW5CcmVh
a3MgJiYgY2hpbGQuc3R5bGUoKS5icmVha0JlZm9yZSgpID09IENvbHVtbkJyZWFrQmV0d2VlbikK
LSAgICAgICAgfHwgKGNoZWNrUGFnZUJyZWFrcyAmJiBhbHdheXNQYWdlQnJlYWsoY2hpbGQuc3R5
bGUoKS5icmVha0JlZm9yZSgpKSkKLSAgICAgICAgfHwgKGNoZWNrUmVnaW9uQnJlYWtzICYmIGNo
aWxkLnN0eWxlKCkuYnJlYWtCZWZvcmUoKSA9PSBSZWdpb25CcmVha0JldHdlZW4pOworICAgICAg
ICB8fCAoY2hlY2tQYWdlQnJlYWtzICYmIGFsd2F5c1BhZ2VCcmVhayhjaGlsZC5zdHlsZSgpLmJy
ZWFrQmVmb3JlKCkpKTsKICAgICBpZiAoY2hlY2tCZWZvcmVBbHdheXMgJiYgaW5Ob3JtYWxGbG93
KGNoaWxkKSAmJiBoYXNOZXh0UGFnZShsb2dpY2FsT2Zmc2V0LCBJbmNsdWRlUGFnZUJvdW5kYXJ5
KSkgewogICAgICAgICBpZiAoY2hlY2tDb2x1bW5CcmVha3MpIHsKICAgICAgICAgICAgIGlmIChp
c0luc2lkZU11bHRpY29sRmxvd1RocmVhZCkKQEAgLTE1NDcsOCArMTU0Niw3IEBAIExheW91dFVu
aXQgUmVuZGVyQmxvY2tGbG93OjphcHBseUFmdGVyQnIKICAgICBib29sIGNoZWNrUGFnZUJyZWFr
cyA9ICFjaGVja0NvbHVtbkJyZWFrcyAmJiB2aWV3KCkubGF5b3V0U3RhdGUoKS0+bV9wYWdlTG9n
aWNhbEhlaWdodDsgLy8gRklYTUU6IE9uY2UgY29sdW1ucyBjYW4gcHJpbnQgd2UgaGF2ZSB0byBj
aGVjayB0aGlzLgogICAgIGJvb2wgY2hlY2tSZWdpb25CcmVha3MgPSBmbG93VGhyZWFkICYmIGZs
b3dUaHJlYWQtPmlzUmVuZGVyTmFtZWRGbG93VGhyZWFkKCk7CiAgICAgYm9vbCBjaGVja0FmdGVy
QWx3YXlzID0gKGNoZWNrQ29sdW1uQnJlYWtzICYmIGNoaWxkLnN0eWxlKCkuYnJlYWtBZnRlcigp
ID09IENvbHVtbkJyZWFrQmV0d2VlbikKLSAgICAgICAgfHwgKGNoZWNrUGFnZUJyZWFrcyAmJiBh
bHdheXNQYWdlQnJlYWsoY2hpbGQuc3R5bGUoKS5icmVha0FmdGVyKCkpKQotICAgICAgICB8fCAo
Y2hlY2tSZWdpb25CcmVha3MgJiYgY2hpbGQuc3R5bGUoKS5icmVha0FmdGVyKCkgPT0gUmVnaW9u
QnJlYWtCZXR3ZWVuKTsKKyAgICAgICAgfHwgKGNoZWNrUGFnZUJyZWFrcyAmJiBhbHdheXNQYWdl
QnJlYWsoY2hpbGQuc3R5bGUoKS5icmVha0FmdGVyKCkpKTsKICAgICBpZiAoY2hlY2tBZnRlckFs
d2F5cyAmJiBpbk5vcm1hbEZsb3coY2hpbGQpICYmIGhhc05leHRQYWdlKGxvZ2ljYWxPZmZzZXQs
IEluY2x1ZGVQYWdlQm91bmRhcnkpKSB7CiAgICAgICAgIExheW91dFVuaXQgbWFyZ2luT2Zmc2V0
ID0gbWFyZ2luSW5mby5jYW5Db2xsYXBzZVdpdGhNYXJnaW5CZWZvcmUoKSA/IExheW91dFVuaXQo
KSA6IG1hcmdpbkluZm8ubWFyZ2luKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJOYW1lZEZsb3dGcmFnbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd0ZyYWdtZW50LmNwcAkocmV2aXNpb24gMjIyMjU3
KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd0ZyYWdtZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtODcsMTAgKzg3LDggQEAgdm9pZCBSZW5kZXJOYW1lZEZsb3dG
cmFnbWVudDo6c3R5bGVEaWRDaAogICAgICAgICBzZXROZWVkc0xheW91dChNYXJrT25seVRoaXMp
OwogfQogCi12b2lkIFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50OjpnZXRSYW5nZXMoVmVjdG9yPFJl
ZlB0cjxSYW5nZT4+JiByYW5nZU9iamVjdHMpIGNvbnN0Cit2b2lkIFJlbmRlck5hbWVkRmxvd0Zy
YWdtZW50OjpnZXRSYW5nZXMoVmVjdG9yPFJlZlB0cjxSYW5nZT4+JikgY29uc3QKIHsKLSAgICBj
b25zdCBSZW5kZXJOYW1lZEZsb3dUaHJlYWQmIG5hbWVkRmxvdyA9IHZpZXcoKS5mbG93VGhyZWFk
Q29udHJvbGxlcigpLmVuc3VyZVJlbmRlckZsb3dUaHJlYWRXaXRoTmFtZShzdHlsZSgpLnJlZ2lv
blRocmVhZCgpKTsKLSAgICBuYW1lZEZsb3cuZ2V0UmFuZ2VzKHJhbmdlT2JqZWN0cywgdGhpcyk7
CiB9CiAKIGJvb2wgUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQ6OnNob3VsZEhhdmVBdXRvTG9naWNh
bEhlaWdodCgpIGNvbnN0CkBAIC0yNjIsMTAgKzI2MCw4IEBAIHZvaWQgUmVuZGVyTmFtZWRGbG93
RnJhZ21lbnQ6OmxheW91dEJsb2MKICAgICBSZW5kZXJSZWdpb246OmxheW91dEJsb2NrKHJlbGF5
b3V0Q2hpbGRyZW4pOwogCiAgICAgaWYgKGlzVmFsaWQoKSkgewotICAgICAgICBpZiAobV9mbG93
VGhyZWFkLT5pbk92ZXJmbG93TGF5b3V0UGhhc2UoKSB8fCBtX2Zsb3dUaHJlYWQtPmluRmluYWxM
YXlvdXRQaGFzZSgpKSB7CisgICAgICAgIGlmIChtX2Zsb3dUaHJlYWQtPmluT3ZlcmZsb3dMYXlv
dXRQaGFzZSgpIHx8IG1fZmxvd1RocmVhZC0+aW5GaW5hbExheW91dFBoYXNlKCkpCiAgICAgICAg
ICAgICBjb21wdXRlT3ZlcmZsb3dGcm9tRmxvd1RocmVhZCgpOwotICAgICAgICAgICAgdXBkYXRl
T3ZlcnNldFN0YXRlKCk7Ci0gICAgICAgIH0KIAogICAgICAgICBpZiAoaGFzQXV0b0xvZ2ljYWxI
ZWlnaHQoKSAmJiBtX2Zsb3dUaHJlYWQtPmluTWVhc3VyZUNvbnRlbnRMYXlvdXRQaGFzZSgpKSB7
CiAgICAgICAgICAgICBtX2Zsb3dUaHJlYWQtPmludmFsaWRhdGVSZWdpb25zKCk7CkBAIC0yOTAs
NzEgKzI4NiwxOSBAQCB2b2lkIFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50OjppbnZhbGlkYXRlCiAg
ICAgfQogfQogCi12b2lkIFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50OjpzZXRSZWdpb25PdmVyc2V0
U3RhdGUoUmVnaW9uT3ZlcnNldFN0YXRlIHN0YXRlKQotewotICAgIEFTU0VSVChnZW5lcmF0aW5n
RWxlbWVudCgpKTsKLQotICAgIGdlbmVyYXRpbmdFbGVtZW50KCktPnNldFJlZ2lvbk92ZXJzZXRT
dGF0ZShzdGF0ZSk7Ci19Ci0KLVJlZ2lvbk92ZXJzZXRTdGF0ZSBSZW5kZXJOYW1lZEZsb3dGcmFn
bWVudDo6cmVnaW9uT3ZlcnNldFN0YXRlKCkgY29uc3QKLXsKLSAgICBBU1NFUlQoZ2VuZXJhdGlu
Z0VsZW1lbnQoKSk7Ci0KLSAgICBpZiAoIWlzVmFsaWQoKSkKLSAgICAgICAgcmV0dXJuIFJlZ2lv
blVuZGVmaW5lZDsKLQotICAgIHJldHVybiBnZW5lcmF0aW5nRWxlbWVudCgpLT5yZWdpb25PdmVy
c2V0U3RhdGUoKTsKLX0KLQotdm9pZCBSZW5kZXJOYW1lZEZsb3dGcmFnbWVudDo6dXBkYXRlT3Zl
cnNldFN0YXRlKCkKLXsKLSAgICBBU1NFUlQoaXNWYWxpZCgpKTsKLQotICAgIFJlbmRlck5hbWVk
Rmxvd1RocmVhZCogZmxvd1RocmVhZCA9IG5hbWVkRmxvd1RocmVhZCgpOwotICAgIEFTU0VSVChm
bG93VGhyZWFkICYmIChmbG93VGhyZWFkLT5pbk92ZXJmbG93TGF5b3V0UGhhc2UoKSB8fCBmbG93
VGhyZWFkLT5pbkZpbmFsTGF5b3V0UGhhc2UoKSkpOwotCi0gICAgTGF5b3V0VW5pdCBmbG93Q29u
dGVudEJvdHRvbSA9IGZsb3dUaHJlYWQtPmZsb3dDb250ZW50Qm90dG9tKCk7Ci0gICAgYm9vbCBp
c0hvcml6b250YWxXcml0aW5nTW9kZSA9IGZsb3dUaHJlYWQtPmlzSG9yaXpvbnRhbFdyaXRpbmdN
b2RlKCk7Ci0KLSAgICBMYXlvdXRVbml0IGZsb3dNaW4gPSBmbG93Q29udGVudEJvdHRvbSAtIChp
c0hvcml6b250YWxXcml0aW5nTW9kZSA/IGZsb3dUaHJlYWRQb3J0aW9uUmVjdCgpLnkoKSA6IGZs
b3dUaHJlYWRQb3J0aW9uUmVjdCgpLngoKSk7Ci0gICAgTGF5b3V0VW5pdCBmbG93TWF4ID0gZmxv
d0NvbnRlbnRCb3R0b20gLSAoaXNIb3Jpem9udGFsV3JpdGluZ01vZGUgPyBmbG93VGhyZWFkUG9y
dGlvblJlY3QoKS5tYXhZKCkgOiBmbG93VGhyZWFkUG9ydGlvblJlY3QoKS5tYXhYKCkpOwotCi0g
ICAgUmVnaW9uT3ZlcnNldFN0YXRlIHByZXZpb3VzU3RhdGUgPSByZWdpb25PdmVyc2V0U3RhdGUo
KTsKLSAgICBSZWdpb25PdmVyc2V0U3RhdGUgc3RhdGUgPSBSZWdpb25GaXQ7Ci0gICAgaWYgKGZs
b3dNaW4gPD0gMCkKLSAgICAgICAgc3RhdGUgPSBSZWdpb25FbXB0eTsKLSAgICBpZiAoZmxvd01h
eCA+IDAgJiYgaXNMYXN0UmVnaW9uKCkpCi0gICAgICAgIHN0YXRlID0gUmVnaW9uT3ZlcnNldDsK
LSAgICAKLSAgICBzZXRSZWdpb25PdmVyc2V0U3RhdGUoc3RhdGUpOwotCi0gICAgLy8gRGV0ZXJt
aW5lIHdoZXRoZXIgdGhlIE5hbWVkRmxvdyBvYmplY3Qgc2hvdWxkIGRpc3BhdGNoIGEgcmVnaW9u
T3ZlcnNldENoYW5nZSBldmVudAotICAgIGlmIChwcmV2aW91c1N0YXRlICE9IHN0YXRlKQotICAg
ICAgICBmbG93VGhyZWFkLT5zZXREaXNwYXRjaFJlZ2lvbk92ZXJzZXRDaGFuZ2VFdmVudCh0cnVl
KTsKLX0KLQogdm9pZCBSZW5kZXJOYW1lZEZsb3dGcmFnbWVudDo6Y2hlY2tSZWdpb25TdHlsZSgp
CiB7CiAgICAgQVNTRVJUKGlzVmFsaWQoKSk7CiAKICAgICBib29sIGN1c3RvbVJlZ2lvblN0eWxl
ID0gZmFsc2U7CiAKLSAgICAvLyBGSVhNRTogUmVnaW9uIHN0eWxpbmcgZG9lc24ndCB3b3JrIGZv
ciBwc2V1ZG8gZWxlbWVudHMuCi0gICAgaWYgKCFpc1BzZXVkb0VsZW1lbnQoKSkKLSAgICAgICAg
Y3VzdG9tUmVnaW9uU3R5bGUgPSBnZW5lcmF0aW5nRWxlbWVudCgpLT5zdHlsZVJlc29sdmVyKCku
Y2hlY2tSZWdpb25TdHlsZShnZW5lcmF0aW5nRWxlbWVudCgpKTsKICAgICBzZXRIYXNDdXN0b21S
ZWdpb25TdHlsZShjdXN0b21SZWdpb25TdHlsZSk7CiAgICAgZG93bmNhc3Q8UmVuZGVyTmFtZWRG
bG93VGhyZWFkPigqbV9mbG93VGhyZWFkKS5jaGVja1JlZ2lvbnNXaXRoU3R5bGluZygpOwogfQog
Ci1zdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50Ojpj
b21wdXRlU3R5bGVJblJlZ2lvbihSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgY29uc3QgUmVuZGVy
U3R5bGUmIHBhcmVudFN0eWxlKSBjb25zdAorc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBS
ZW5kZXJOYW1lZEZsb3dGcmFnbWVudDo6Y29tcHV0ZVN0eWxlSW5SZWdpb24oUmVuZGVyRWxlbWVu
dCYsIGNvbnN0IFJlbmRlclN0eWxlJikgY29uc3QKIHsKLSAgICBBU1NFUlQoIXJlbmRlcmVyLmlz
QW5vbnltb3VzKCkpOwotCi0gICAgLy8gRklYTUU6IFJlZ2lvbiBzdHlsaW5nIGZhaWxzIGZvciBw
c2V1ZG8tZWxlbWVudHMgYmVjYXVzZSB0aGUgcmVuZGVyZXJzIGRvbid0IGhhdmUgYSBub2RlLgot
ICAgIGF1dG8gcmVuZGVyT2JqZWN0UmVnaW9uU3R5bGUgPSByZW5kZXJlci5lbGVtZW50KCktPnN0
eWxlUmVzb2x2ZXIoKS5zdHlsZUZvckVsZW1lbnQoKnJlbmRlcmVyLmVsZW1lbnQoKSwgJnBhcmVu
dFN0eWxlLCBudWxscHRyLCBNYXRjaEFsbFJ1bGVzLCB0aGlzKS5yZW5kZXJTdHlsZTsKLQotICAg
IHJldHVybiByZW5kZXJPYmplY3RSZWdpb25TdHlsZTsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0K
IAogdm9pZCBSZW5kZXJOYW1lZEZsb3dGcmFnbWVudDo6Y29tcHV0ZUNoaWxkcmVuU3R5bGVJblJl
Z2lvbihSZW5kZXJFbGVtZW50JiByZW5kZXJlcikKQEAgLTQxMiw0MCArMzU2LDYgQEAgdm9pZCBS
ZW5kZXJOYW1lZEZsb3dGcmFnbWVudDo6Y2xlYXJPYmplYwogCiB2b2lkIFJlbmRlck5hbWVkRmxv
d0ZyYWdtZW50OjpzZXRSZWdpb25PYmplY3RzUmVnaW9uU3R5bGUoKQogewotICAgIGlmICghaGFz
Q3VzdG9tUmVnaW9uU3R5bGUoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gU3RhcnQgZnJv
bSBjb250ZW50IG5vZGVzIGFuZCByZWN1cnNpdmVseSBjb21wdXRlIHRoZSBzdHlsZSBpbiByZWdp
b24gZm9yIHRoZSByZW5kZXIgb2JqZWN0cyBiZWxvdy4KLSAgICAvLyBJZiB0aGUgc3R5bGUgaW4g
cmVnaW9uIHdhcyBhbHJlYWR5IGNvbXB1dGVkLCB1c2VkIHRoYXQgc3R5bGUgaW5zdGVhZCBvZiBj
b21wdXRpbmcgYSBuZXcgb25lLgotICAgIGNvbnN0IFJlbmRlck5hbWVkRmxvd1RocmVhZCYgbmFt
ZWRGbG93ID0gdmlldygpLmZsb3dUaHJlYWRDb250cm9sbGVyKCkuZW5zdXJlUmVuZGVyRmxvd1Ro
cmVhZFdpdGhOYW1lKHN0eWxlKCkucmVnaW9uVGhyZWFkKCkpOwotICAgIGNvbnN0IE5hbWVkRmxv
d0NvbnRlbnRFbGVtZW50cyYgY29udGVudEVsZW1lbnRzID0gbmFtZWRGbG93LmNvbnRlbnRFbGVt
ZW50cygpOwotCi0gICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDogY29udGVudEVsZW1lbnRz
KSB7Ci0gICAgICAgIC8vIFRoZSBsaXN0IG9mIGNvbnRlbnQgbm9kZXMgY29udGFpbnMgYWxzbyB0
aGUgbm9kZXMgd2l0aCBkaXNwbGF5Om5vbmUuCi0gICAgICAgIGlmICghZWxlbWVudC0+cmVuZGVy
ZXIoKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBhdXRvJiByZW5kZXJlciA9ICpl
bGVtZW50LT5yZW5kZXJlcigpOwotCi0gICAgICAgIC8vIElmIHRoZSBjb250ZW50IG5vZGUgZG9l
cyBub3QgZmxvdyBhbnkgb2YgaXRzIGNoaWxkcmVuIGluIHRoaXMgcmVnaW9uLAotICAgICAgICAv
LyB3ZSBkbyBub3QgY29tcHV0ZSBhbnkgc3R5bGUgZm9yIHRoZW0gaW4gdGhpcyByZWdpb24uCi0g
ICAgICAgIGlmICghZmxvd1RocmVhZCgpLT5vYmplY3RJbkZsb3dSZWdpb24oJnJlbmRlcmVyLCB0
aGlzKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIC8vIElmIHRoZSBvYmplY3Qg
aGFzIHN0eWxlIGluIHJlZ2lvbiwgdXNlIHRoYXQgaW5zdGVhZCBvZiBjb21wdXRpbmcgYSBuZXcg
b25lLgotICAgICAgICBhdXRvIGl0ID0gbV9yZW5kZXJlclJlZ2lvblN0eWxlLmZpbmQoJnJlbmRl
cmVyKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBvYmplY3RTdHlsZUlu
UmVnaW9uOwotICAgICAgICBib29sIG9iamVjdFJlZ2lvblN0eWxlQ2FjaGVkID0gZmFsc2U7Ci0g
ICAgICAgIGlmIChpdCAhPSBtX3JlbmRlcmVyUmVnaW9uU3R5bGUuZW5kKCkpIHsKLSAgICAgICAg
ICAgIG9iamVjdFN0eWxlSW5SZWdpb24gPSBSZW5kZXJTdHlsZTo6Y2xvbmVQdHIoKml0LT52YWx1
ZS5zdHlsZSk7Ci0gICAgICAgICAgICBBU1NFUlQoaXQtPnZhbHVlLmNhY2hlZCk7Ci0gICAgICAg
ICAgICBvYmplY3RSZWdpb25TdHlsZUNhY2hlZCA9IHRydWU7Ci0gICAgICAgIH0gZWxzZQotICAg
ICAgICAgICAgb2JqZWN0U3R5bGVJblJlZ2lvbiA9IGNvbXB1dGVTdHlsZUluUmVnaW9uKHJlbmRl
cmVyLCBzdHlsZSgpKTsKLQotICAgICAgICBzZXRSZW5kZXJlclN0eWxlSW5SZWdpb24ocmVuZGVy
ZXIsIFdURk1vdmUob2JqZWN0U3R5bGVJblJlZ2lvbiksIG9iamVjdFJlZ2lvblN0eWxlQ2FjaGVk
KTsKLQotICAgICAgICBjb21wdXRlQ2hpbGRyZW5TdHlsZUluUmVnaW9uKHJlbmRlcmVyKTsKLSAg
ICB9CiB9CiAKIHZvaWQgUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQ6OnJlc3RvcmVSZWdpb25PYmpl
Y3RzT3JpZ2luYWxTdHlsZSgpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TmFtZWRGbG93RnJhZ21lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQuaAkocmV2aXNpb24gMjIyMjU3KQorKysgU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd0ZyYWdtZW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEwNSw3ICsxMDUsNiBAQCBwdWJsaWM6CiAKICAgICBib29sIGhhc0NvbXB1dGVkQXV0
b0hlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1faGFzQ29tcHV0ZWRBdXRvSGVpZ2h0OyB9CiAKLSAg
ICBSZWdpb25PdmVyc2V0U3RhdGUgcmVnaW9uT3ZlcnNldFN0YXRlKCkgY29uc3Q7CiAKICAgICB2
b2lkIGF0dGFjaFJlZ2lvbigpIG92ZXJyaWRlOwogICAgIHZvaWQgZGV0YWNoUmVnaW9uKCkgb3Zl
cnJpZGU7CkBAIC0xMzYsOSArMTM1LDYgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgc2hvdWxkSGF2
ZUF1dG9Mb2dpY2FsSGVpZ2h0KCkgY29uc3Q7CiAKLSAgICB2b2lkIHVwZGF0ZU92ZXJzZXRTdGF0
ZSgpOwotICAgIHZvaWQgc2V0UmVnaW9uT3ZlcnNldFN0YXRlKFJlZ2lvbk92ZXJzZXRTdGF0ZSk7
Ci0KICAgICB2b2lkIGxheW91dEJsb2NrKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgTGF5b3V0VW5p
dCBwYWdlTG9naWNhbEhlaWdodCA9IDApIG92ZXJyaWRlOwogCiAgICAgc3RydWN0IE9iamVjdFJl
Z2lvblN0eWxlSW5mbyB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFt
ZWRGbG93VGhyZWFkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTmFtZWRGbG93VGhyZWFkLmNwcAkocmV2aXNpb24gMjIyMjU3KQorKysgU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd1RocmVhZC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQxLDE1ICs0MSwxMyBAQAogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKICNpbmNsdWRlICJT
aGFkb3dSb290LmgiCiAjaW5jbHVkZSAiVGV4dC5oIgotI2luY2x1ZGUgIldlYktpdE5hbWVkRmxv
dy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlbmRlck5hbWVkRmxvd1RocmVhZDo6UmVu
ZGVyTmFtZWRGbG93VGhyZWFkKERvY3VtZW50JiBkb2N1bWVudCwgUmVuZGVyU3R5bGUmJiBzdHls
ZSwgUmVmPFdlYktpdE5hbWVkRmxvdz4mJiBuYW1lZEZsb3cpCitSZW5kZXJOYW1lZEZsb3dUaHJl
YWQ6OlJlbmRlck5hbWVkRmxvd1RocmVhZChEb2N1bWVudCYgZG9jdW1lbnQsIFJlbmRlclN0eWxl
JiYgc3R5bGUpCiAgICAgOiBSZW5kZXJGbG93VGhyZWFkKGRvY3VtZW50LCBXVEZNb3ZlKHN0eWxl
KSkKICAgICAsIG1faGFzUmVnaW9uc1dpdGhTdHlsaW5nKGZhbHNlKQogICAgICwgbV9kaXNwYXRj
aFJlZ2lvbk92ZXJzZXRDaGFuZ2VFdmVudChmYWxzZSkKLSAgICAsIG1fbmFtZWRGbG93KFdURk1v
dmUobmFtZWRGbG93KSkKICAgICAsIG1fcmVnaW9uT3ZlcnNldENoYW5nZUV2ZW50VGltZXIoKnRo
aXMsICZSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6OnJlZ2lvbk92ZXJzZXRDaGFuZ2VFdmVudFRpbWVy
RmlyZWQpCiB7CiB9CkBAIC03OCwxNSArNzYsNiBAQCBjb25zdCBjaGFyKiBSZW5kZXJOYW1lZEZs
b3dUaHJlYWQ6OnJlbmRlCiAgICAgCiB2b2lkIFJlbmRlck5hbWVkRmxvd1RocmVhZDo6Y2xlYXJD
b250ZW50RWxlbWVudHMoKQogewotICAgIGZvciAoYXV0byYgY29udGVudEVsZW1lbnQgOiBtX2Nv
bnRlbnRFbGVtZW50cykgewotICAgICAgICBBU1NFUlQoY29udGVudEVsZW1lbnQpOwotICAgICAg
ICBBU1NFUlQoY29udGVudEVsZW1lbnQtPmlzTmFtZWRGbG93Q29udGVudEVsZW1lbnQoKSk7Ci0g
ICAgICAgIEFTU0VSVCgmY29udGVudEVsZW1lbnQtPmRvY3VtZW50KCkgPT0gJmRvY3VtZW50KCkp
OwotICAgICAgICAKLSAgICAgICAgY29udGVudEVsZW1lbnQtPmNsZWFySXNOYW1lZEZsb3dDb250
ZW50RWxlbWVudCgpOwotICAgIH0KLSAgICAKLSAgICBtX2NvbnRlbnRFbGVtZW50cy5jbGVhcigp
OwogfQogCiB2b2lkIFJlbmRlck5hbWVkRmxvd1RocmVhZDo6dXBkYXRlV3JpdGluZ01vZGUoKQpA
QCAtNDY3LDUxICs0NTYsMjIgQEAgdm9pZCBSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6OnB1c2hEZXBl
bmRlbgogLy8gVGhlIGNvbnRlbnQgbm9kZXMgbGlzdCBjb250YWlucyB0aG9zZSBub2RlcyB3aXRo
IC13ZWJraXQtZmxvdy1pbnRvOiBmbG93LgogLy8gQW4gZWxlbWVudCB3aXRoIGRpc3BsYXk6bm9u
ZSBzaG91bGQgYWxzbyBiZSBsaXN0ZWQgYW1vbmcgdGhvc2Ugbm9kZXMuCiAvLyBUaGUgbGlzdCBv
ZiBub2RlcyBpcyBvcmRlcmVkLgotdm9pZCBSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6OnJlZ2lzdGVy
TmFtZWRGbG93Q29udGVudEVsZW1lbnQoRWxlbWVudCYgY29udGVudEVsZW1lbnQpCit2b2lkIFJl
bmRlck5hbWVkRmxvd1RocmVhZDo6cmVnaXN0ZXJOYW1lZEZsb3dDb250ZW50RWxlbWVudChFbGVt
ZW50JikKIHsKLSAgICBBU1NFUlQoJmNvbnRlbnRFbGVtZW50LmRvY3VtZW50KCkgPT0gJmRvY3Vt
ZW50KCkpOwotCi0gICAgY29udGVudEVsZW1lbnQuc2V0SXNOYW1lZEZsb3dDb250ZW50RWxlbWVu
dCgpOwotCi0gICAgcmVzZXRNYXJrRm9yRGVzdHJ1Y3Rpb24oKTsKLQotICAgIC8vIEZpbmQgdGhl
IGZpcnN0IGNvbnRlbnQgbm9kZSBmb2xsb3dpbmcgdGhlIG5ldyBjb250ZW50IG5vZGUuCi0gICAg
Zm9yIChhdXRvJiBlbGVtZW50IDogbV9jb250ZW50RWxlbWVudHMpIHsKLSAgICAgICAgdW5zaWdu
ZWQgc2hvcnQgcG9zaXRpb24gPSBjb250ZW50RWxlbWVudC5jb21wYXJlRG9jdW1lbnRQb3NpdGlv
bigqZWxlbWVudCk7Ci0gICAgICAgIGlmIChwb3NpdGlvbiAmIE5vZGU6OkRPQ1VNRU5UX1BPU0lU
SU9OX0ZPTExPV0lORykgewotICAgICAgICAgICAgbV9jb250ZW50RWxlbWVudHMuaW5zZXJ0QmVm
b3JlKGVsZW1lbnQsICZjb250ZW50RWxlbWVudCk7Ci0gICAgICAgICAgICBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmRpZFJlZ2lzdGVyTmFtZWRGbG93Q29udGVudEVsZW1lbnQoZG9jdW1lbnQo
KSwgbmFtZWRGbG93KCksIGNvbnRlbnRFbGVtZW50LCBlbGVtZW50KTsKLSAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgfQotICAgIH0KLQotICAgIG1fY29udGVudEVsZW1lbnRzLmFkZCgmY29u
dGVudEVsZW1lbnQpOwotICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVnaXN0ZXJO
YW1lZEZsb3dDb250ZW50RWxlbWVudChkb2N1bWVudCgpLCBuYW1lZEZsb3coKSwgY29udGVudEVs
ZW1lbnQpOwogfQogCi12b2lkIFJlbmRlck5hbWVkRmxvd1RocmVhZDo6dW5yZWdpc3Rlck5hbWVk
Rmxvd0NvbnRlbnRFbGVtZW50KEVsZW1lbnQmIGNvbnRlbnRFbGVtZW50KQordm9pZCBSZW5kZXJO
YW1lZEZsb3dUaHJlYWQ6OnVucmVnaXN0ZXJOYW1lZEZsb3dDb250ZW50RWxlbWVudChFbGVtZW50
JikKIHsKLSAgICBBU1NFUlQobV9jb250ZW50RWxlbWVudHMuY29udGFpbnMoJmNvbnRlbnRFbGVt
ZW50KSk7Ci0gICAgQVNTRVJUKGNvbnRlbnRFbGVtZW50LmlzTmFtZWRGbG93Q29udGVudEVsZW1l
bnQoKSk7Ci0gICAgQVNTRVJUKCZjb250ZW50RWxlbWVudC5kb2N1bWVudCgpID09ICZkb2N1bWVu
dCgpKTsKLQotICAgIGNvbnRlbnRFbGVtZW50LmNsZWFySXNOYW1lZEZsb3dDb250ZW50RWxlbWVu
dCgpOwotICAgIG1fY29udGVudEVsZW1lbnRzLnJlbW92ZSgmY29udGVudEVsZW1lbnQpOwotCi0g
ICAgaWYgKGNhbkJlRGVzdHJveWVkKCkpCi0gICAgICAgIHNldE1hcmtGb3JEZXN0cnVjdGlvbigp
OwotCi0gICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRVbnJlZ2lzdGVyTmFtZWRGbG93
Q29udGVudEVsZW1lbnQoZG9jdW1lbnQoKSwgbmFtZWRGbG93KCksIGNvbnRlbnRFbGVtZW50KTsK
IH0KIAotYm9vbCBSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6Omhhc0NvbnRlbnRFbGVtZW50KEVsZW1l
bnQmIGNvbnRlbnRFbGVtZW50KSBjb25zdAorYm9vbCBSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6Omhh
c0NvbnRlbnRFbGVtZW50KEVsZW1lbnQmKSBjb25zdAogewotICAgIHJldHVybiBtX2NvbnRlbnRF
bGVtZW50cy5jb250YWlucygmY29udGVudEVsZW1lbnQpOworICAgIHJldHVybiBmYWxzZTsKIH0K
ICAgICAKIGNvbnN0IEF0b21pY1N0cmluZyYgUmVuZGVyTmFtZWRGbG93VGhyZWFkOjpmbG93VGhy
ZWFkTmFtZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG5hbWVkRmxvdygpLm5hbWUoKTsKKyAgICBy
ZXR1cm4gbnVsbEF0b20oKTsKIH0KIAogYm9vbCBSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6OmlzQ2hp
bGRBbGxvd2VkKGNvbnN0IFJlbmRlck9iamVjdCYgY2hpbGQsIGNvbnN0IFJlbmRlclN0eWxlJiBz
dHlsZSkgY29uc3QKQEAgLTUzMCw0MyArNDkwLDIzIEBAIGJvb2wgUmVuZGVyTmFtZWRGbG93VGhy
ZWFkOjppc0NoaWxkQWxsb3cKIAogdm9pZCBSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6OmRpc3BhdGNo
UmVnaW9uT3ZlcnNldENoYW5nZUV2ZW50SWZOZWVkZWQoKQogewotICAgIGlmICghbV9kaXNwYXRj
aFJlZ2lvbk92ZXJzZXRDaGFuZ2VFdmVudCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9kaXNw
YXRjaFJlZ2lvbk92ZXJzZXRDaGFuZ2VFdmVudCA9IGZhbHNlOwotICAgIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZGlkQ2hhbmdlUmVnaW9uT3ZlcnNldChkb2N1bWVudCgpLCBuYW1lZEZsb3co
KSk7Ci0gICAgCi0gICAgaWYgKCFtX3JlZ2lvbk92ZXJzZXRDaGFuZ2VFdmVudFRpbWVyLmlzQWN0
aXZlKCkgJiYgbmFtZWRGbG93KCkuaGFzRXZlbnRMaXN0ZW5lcnMoKSkKLSAgICAgICAgbV9yZWdp
b25PdmVyc2V0Q2hhbmdlRXZlbnRUaW1lci5zdGFydE9uZVNob3QoMF9zKTsKIH0KIAogdm9pZCBS
ZW5kZXJOYW1lZEZsb3dUaHJlYWQ6OnJlZ2lvbk92ZXJzZXRDaGFuZ2VFdmVudFRpbWVyRmlyZWQo
KQogewotICAgIG5hbWVkRmxvdygpLmRpc3BhdGNoUmVnaW9uT3ZlcnNldENoYW5nZUV2ZW50KCk7
CiB9CiAKIHZvaWQgUmVuZGVyTmFtZWRGbG93VGhyZWFkOjpzZXRNYXJrRm9yRGVzdHJ1Y3Rpb24o
KQogewotICAgIGlmIChuYW1lZEZsb3coKS5mbG93U3RhdGUoKSA9PSBXZWJLaXROYW1lZEZsb3c6
OkZsb3dTdGF0ZU51bGwpCi0gICAgICAgIHJldHVybjsKLQotICAgIG5hbWVkRmxvdygpLnNldFJl
bmRlcmVyKG51bGxwdHIpOwotICAgIC8vIEFmdGVyIHRoaXMgY2FsbCBlbmRzLCB0aGUgcmVuZGVy
ZXIgY2FuIGJlIHNhZmVseSBkZXN0cm95ZWQuCi0gICAgLy8gVGhlIE5hbWVkRmxvdyBvYmplY3Qg
bWF5IG91dGxpdmUgaXRzIHJlbmRlcmVyIGlmIGl0J3MgcmVmZXJlbmNlZCBmcm9tIGEgc2NyaXB0
IGFuZCBtYXkgYmUgcmVhdGFjaGVkIHRvIG9uZSBpZiB0aGUgbmFtZWQgZmxvdyBpcyByZWNyZWF0
ZWQgaW4gdGhlIHN0eWxlc2hlZXQuCiB9CiAKIHZvaWQgUmVuZGVyTmFtZWRGbG93VGhyZWFkOjpy
ZXNldE1hcmtGb3JEZXN0cnVjdGlvbigpCiB7Ci0gICAgaWYgKG5hbWVkRmxvdygpLmZsb3dTdGF0
ZSgpID09IFdlYktpdE5hbWVkRmxvdzo6Rmxvd1N0YXRlQ3JlYXRlZCkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgbmFtZWRGbG93KCkuc2V0UmVuZGVyZXIodGhpcyk7CiB9CiAKIGJvb2wgUmVuZGVy
TmFtZWRGbG93VGhyZWFkOjppc01hcmtlZEZvckRlc3RydWN0aW9uKCkgY29uc3QKIHsKLSAgICAv
LyBGbG93IHRocmVhZHMgaW4gdGhlICJOVUxMIiBzdGF0ZSBjYW4gYmUgZGVzdHJveWVkLgotICAg
IHJldHVybiBuYW1lZEZsb3coKS5mbG93U3RhdGUoKSA9PSBXZWJLaXROYW1lZEZsb3c6OkZsb3dT
dGF0ZU51bGw7CisgICAgcmV0dXJuIGZhbHNlOwogfQogCiBzdGF0aWMgYm9vbCBpc0NvbnRhaW5l
ZEluRWxlbWVudHMoY29uc3QgVmVjdG9yPEVsZW1lbnQqPiYgb3RoZXJzLCBFbGVtZW50KiBlbGVt
ZW50KQpAQCAtNTkwLDggKzUzMCw2IEBAIHN0YXRpYyBib29sIGJveEludGVyc2VjdHNSZWdpb24o
TGF5b3V0VW4KIC8vIFJldHJpZXZlIHRoZSBuZXh0IG5vZGUgdG8gYmUgdmlzaXRlZCB3aGlsZSBj
b21wdXRpbmcgdGhlIHJhbmdlcyBpbnNpZGUgYSByZWdpb24uCiBzdGF0aWMgTm9kZSogbmV4dE5v
ZGVJbnNpZGVDb250ZW50RWxlbWVudChjb25zdCBOb2RlJiBjdXJyTm9kZSwgY29uc3QgRWxlbWVu
dCogY29udGVudEVsZW1lbnQpCiB7Ci0gICAgQVNTRVJUKGNvbnRlbnRFbGVtZW50ICYmIGNvbnRl
bnRFbGVtZW50LT5pc05hbWVkRmxvd0NvbnRlbnRFbGVtZW50KCkpOwotCiAgICAgaWYgKGN1cnJO
b2RlLnJlbmRlcmVyKCkgJiYgY3Vyck5vZGUucmVuZGVyZXIoKS0+aXNTVkdSb290KCkpCiAgICAg
ICAgIHJldHVybiBOb2RlVHJhdmVyc2FsOjpuZXh0U2tpcHBpbmdDaGlsZHJlbihjdXJyTm9kZSwg
Y29udGVudEVsZW1lbnQpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TmFtZWRGbG93VGhyZWFkLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlck5hbWVkRmxvd1RocmVhZC5oCShyZXZpc2lvbiAyMjIyNTcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93VGhyZWFkLmgJKHdvcmtpbmcgY29weSkKQEAg
LTM2LDcgKzM2LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBOb2RlOwogY2xhc3Mg
UmVuZGVyTmFtZWRGbG93VGhyZWFkOwotY2xhc3MgV2ViS2l0TmFtZWRGbG93OwogCiB0eXBlZGVm
IExpc3RIYXNoU2V0PFJlbmRlck5hbWVkRmxvd1RocmVhZCo+IFJlbmRlck5hbWVkRmxvd1RocmVh
ZExpc3Q7CiB0eXBlZGVmIEhhc2hDb3VudGVkU2V0PFJlbmRlck5hbWVkRmxvd1RocmVhZCo+IFJl
bmRlck5hbWVkRmxvd1RocmVhZENvdW50ZWRTZXQ7CkBAIC00NCw3ICs0Myw3IEBAIHR5cGVkZWYg
TGlzdEhhc2hTZXQ8RWxlbWVudCo+IE5hbWVkRmxvd0MKIAogY2xhc3MgUmVuZGVyTmFtZWRGbG93
VGhyZWFkIGZpbmFsIDogcHVibGljIFJlbmRlckZsb3dUaHJlYWQsIHB1YmxpYyBTZWxlY3Rpb25T
dWJ0cmVlUm9vdCB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyTmFtZWRGbG93VGhyZWFkKERvY3VtZW50
JiwgUmVuZGVyU3R5bGUmJiwgUmVmPFdlYktpdE5hbWVkRmxvdz4mJik7CisgICAgUmVuZGVyTmFt
ZWRGbG93VGhyZWFkKERvY3VtZW50JiwgUmVuZGVyU3R5bGUmJik7CiAgICAgdmlydHVhbCB+UmVu
ZGVyTmFtZWRGbG93VGhyZWFkKCk7CiAKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGZsb3dUaHJl
YWROYW1lKCkgY29uc3Q7CkBAIC0xMTgsOSArMTE3LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNs
ZWFyQ29udGVudEVsZW1lbnRzKCk7CiAgICAgdm9pZCB1cGRhdGVXcml0aW5nTW9kZSgpOwogCi0g
ICAgV2ViS2l0TmFtZWRGbG93JiBuYW1lZEZsb3coKSB7IHJldHVybiBtX25hbWVkRmxvdzsgfQot
ICAgIGNvbnN0IFdlYktpdE5hbWVkRmxvdyYgbmFtZWRGbG93KCkgY29uc3QgeyByZXR1cm4gbV9u
YW1lZEZsb3c7IH0KLQogICAgIC8vIE9ic2VydmVyIGZsb3cgdGhyZWFkcyBoYXZlIGludmFsaWQg
cmVnaW9ucyB0aGF0IGRlcGVuZCBvbiB0aGUgc3RhdGUgb2YgdGhpcyB0aHJlYWQKICAgICAvLyB0
byByZS12YWxpZGF0ZSB0aGVpciByZWdpb25zLiBLZWVwaW5nIGEgc2V0IG9mIG9ic2VydmVyIHRo
cmVhZHMgbWFrZSBpdCBlYXN5CiAgICAgLy8gdG8gbm90aWZ5IHRoZW0gd2hlbiBhIHJlZ2lvbiB3
YXMgcmVtb3ZlZCBmcm9tIHRoaXMgZmxvdy4KQEAgLTEzOCw5ICsxMzQsNiBAQCBwcml2YXRlOgog
ICAgIGJvb2wgbV9oYXNSZWdpb25zV2l0aFN0eWxpbmcgOiAxOwogICAgIGJvb2wgbV9kaXNwYXRj
aFJlZ2lvbk92ZXJzZXRDaGFuZ2VFdmVudCA6IDE7CiAKLSAgICAvLyBUaGUgRE9NIE9iamVjdCB0
aGF0IHJlcHJlc2VudHMgYSBuYW1lZCBmbG93LgotICAgIFJlZjxXZWJLaXROYW1lZEZsb3c+IG1f
bmFtZWRGbG93OwotCiAgICAgVGltZXIgbV9yZWdpb25PdmVyc2V0Q2hhbmdlRXZlbnRUaW1lcjsK
IAogICAgIExheW91dFVuaXQgbV9mbG93Q29udGVudEJvdHRvbTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24uY3BwCShyZXZpc2lvbiAyMjIyNTcpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjYyLDE5ICsyNjIsNyBAQCB2b2lkIFJlbmRlclJlZ2lvbjo6cmVwYWludEZsb3dUaHJlYWRDb250
CiAKIHZvaWQgUmVuZGVyUmVnaW9uOjppbnN0YWxsRmxvd1RocmVhZCgpCiB7Ci0gICAgbV9mbG93
VGhyZWFkID0gJnZpZXcoKS5mbG93VGhyZWFkQ29udHJvbGxlcigpLmVuc3VyZVJlbmRlckZsb3dU
aHJlYWRXaXRoTmFtZShzdHlsZSgpLnJlZ2lvblRocmVhZCgpKTsKLQotICAgIC8vIEJ5IG5vdyB0
aGUgZmxvdyB0aHJlYWQgc2hvdWxkIGFscmVhZHkgYmUgYWRkZWQgdG8gdGhlIHJlbmRlcmluZyB0
cmVlLAotICAgIC8vIHNvIHdlIGdvIHVwIHRoZSByZW5kZXJpbmcgcGFyZW50cyBhbmQgY2hlY2sg
dGhhdCB0aGlzIHJlZ2lvbiBpcyBub3QgcGFydCBvZiB0aGUgc2FtZQotICAgIC8vIGZsb3cgdGhh
dCBpdCBhY3R1YWxseSBuZWVkcyB0byBkaXNwbGF5LiBJdCB3b3VsZCBjcmVhdGUgYSBjaXJjdWxh
ciByZWZlcmVuY2UuCi0KLSAgICBhdXRvIGNsb3Nlc3RGbG93VGhyZWFkQW5jZXN0b3IgPSBhbmNl
c3RvcnNPZlR5cGU8UmVuZGVyTmFtZWRGbG93VGhyZWFkPigqdGhpcykuZmlyc3QoKTsKLSAgICBp
ZiAoIWNsb3Nlc3RGbG93VGhyZWFkQW5jZXN0b3IpIHsKLSAgICAgICAgbV9wYXJlbnROYW1lZEZs
b3dUaHJlYWQgPSBudWxscHRyOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgbV9wYXJl
bnROYW1lZEZsb3dUaHJlYWQgPSAmKmNsb3Nlc3RGbG93VGhyZWFkQW5jZXN0b3I7CisgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKIHZvaWQgUmVuZGVyUmVnaW9uOjphdHRhY2hSZWdpb24o
KQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlQ29uc3Rh
bnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRl
clN0eWxlQ29uc3RhbnRzLmgJKHJldmlzaW9uIDIyMjI1NykKKysrIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5oCSh3b3JraW5nIGNvcHkpCkBAIC00
NzcsNyArNDc3LDcgQEAgZW51bSBUZXh0Wm9vbSB7CiB9OwogCiBlbnVtIEJyZWFrQmV0d2VlbiB7
Ci0gICAgQXV0b0JyZWFrQmV0d2VlbiwgQXZvaWRCcmVha0JldHdlZW4sIEF2b2lkQ29sdW1uQnJl
YWtCZXR3ZWVuLCBBdm9pZFBhZ2VCcmVha0JldHdlZW4sIEF2b2lkUmVnaW9uQnJlYWtCZXR3ZWVu
LCBDb2x1bW5CcmVha0JldHdlZW4sIFJlZ2lvbkJyZWFrQmV0d2VlbiwgUGFnZUJyZWFrQmV0d2Vl
biwgTGVmdFBhZ2VCcmVha0JldHdlZW4sIFJpZ2h0UGFnZUJyZWFrQmV0d2VlbiwgUmVjdG9QYWdl
QnJlYWtCZXR3ZWVuLCBWZXJzb1BhZ2VCcmVha0JldHdlZW4KKyAgICBBdXRvQnJlYWtCZXR3ZWVu
LCBBdm9pZEJyZWFrQmV0d2VlbiwgQXZvaWRDb2x1bW5CcmVha0JldHdlZW4sIEF2b2lkUGFnZUJy
ZWFrQmV0d2VlbiwgQ29sdW1uQnJlYWtCZXR3ZWVuLCBQYWdlQnJlYWtCZXR3ZWVuLCBMZWZ0UGFn
ZUJyZWFrQmV0d2VlbiwgUmlnaHRQYWdlQnJlYWtCZXR3ZWVuLCBSZWN0b1BhZ2VCcmVha0JldHdl
ZW4sIFZlcnNvUGFnZUJyZWFrQmV0d2VlbgogfTsKIGJvb2wgYWx3YXlzUGFnZUJyZWFrKEJyZWFr
QmV0d2Vlbik7CiAgICAgCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvV2ls
bENoYW5nZURhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9XaWxsQ2hhbmdlRGF0YS5jcHAJKHJldmlzaW9uIDIyMjI1NykKKysrIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9XaWxsQ2hhbmdlRGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTg3LDkgKzg3LDYgQEAgYm9vbCBXaWxsQ2hhbmdlRGF0YTo6cHJvcGVydHlDcmVhdGVzU3RhYwog
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrOgogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRNYXNrSW1hZ2U6CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tCb3hJbWFnZToKLSNp
ZiBFTkFCTEUoQ1NTX1JFR0lPTlMpCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEZsb3dGcm9t
OgotI2VuZGlmCiAjaWYgRU5BQkxFKEFDQ0VMRVJBVEVEX09WRVJGTE9XX1NDUk9MTElORykKICAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0T3ZlcmZsb3dTY3JvbGxpbmc6CiAjZW5kaWYKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3N0eWxlL1JlbmRlclRyZWVQb3NpdGlvbi5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvc3R5bGUvUmVuZGVyVHJlZVBvc2l0aW9uLmNwcAkocmV2aXNpb24g
MjIyMjU3KQorKysgU291cmNlL1dlYkNvcmUvc3R5bGUvUmVuZGVyVHJlZVBvc2l0aW9uLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjcsOSArMjcsNyBAQAogI2luY2x1ZGUgIlJlbmRlclRyZWVQb3Np
dGlvbi5oIgogCiAjaW5jbHVkZSAiQ29tcG9zZWRUcmVlSXRlcmF0b3IuaCIKLSNpbmNsdWRlICJG
bG93VGhyZWFkQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIlBzZXVkb0VsZW1lbnQuaCIKLSNpbmNs
dWRlICJSZW5kZXJOYW1lZEZsb3dUaHJlYWQuaCIKICNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIK
ICNpbmNsdWRlICJTaGFkb3dSb290LmgiCiAKQEAgLTY3LDggKzY1LDcgQEAgUmVuZGVyT2JqZWN0
KiBSZW5kZXJUcmVlUG9zaXRpb246OnByZXZpbwogCiAgICAgYXV0byBjb21wb3NlZENoaWxkcmVu
ID0gY29tcG9zZWRUcmVlQ2hpbGRyZW4oKnBhcmVudEVsZW1lbnQpOwogICAgIGZvciAoYXV0byBp
dCA9IGNvbXBvc2VkQ2hpbGRyZW4uYXQodGV4dE5vZGUpLCBlbmQgPSBjb21wb3NlZENoaWxkcmVu
LmVuZCgpOyBpdCAhPSBlbmQ7IC0taXQpIHsKLSAgICAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJl
ciA9IGl0LT5yZW5kZXJlcigpOwotICAgICAgICBpZiAocmVuZGVyZXIgJiYgIWlzUmVuZGVyZXJS
ZXBhcmVudGVkKCpyZW5kZXJlcikpCisgICAgICAgIGlmIChhdXRvKiByZW5kZXJlciA9IGl0LT5y
ZW5kZXJlcigpKQogICAgICAgICAgICAgcmV0dXJuIHJlbmRlcmVyOwogICAgIH0KICAgICBpZiAo
YXV0byogYmVmb3JlID0gcGFyZW50RWxlbWVudC0+YmVmb3JlUHNldWRvRWxlbWVudCgpKQpAQCAt
OTUsOCArOTIsNyBAQCBSZW5kZXJPYmplY3QqIFJlbmRlclRyZWVQb3NpdGlvbjo6bmV4dFNpCiAg
ICAgICAgICAgICBpdC50cmF2ZXJzZU5leHQoKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAg
ICAgICB9Ci0gICAgICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBub2RlLnJlbmRlcmVyKCk7
Ci0gICAgICAgIGlmIChyZW5kZXJlciAmJiAhaXNSZW5kZXJlclJlcGFyZW50ZWQoKnJlbmRlcmVy
KSkKKyAgICAgICAgaWYgKGF1dG8qIHJlbmRlcmVyID0gaXQtPnJlbmRlcmVyKCkpCiAgICAgICAg
ICAgICByZXR1cm4gcmVuZGVyZXI7CiAgICAgICAgIAogICAgICAgICBpdC50cmF2ZXJzZU5leHRT
a2lwcGluZ0NoaWxkcmVuKCk7CkBAIC0xMDYsNTcgKzEwMiw0IEBAIFJlbmRlck9iamVjdCogUmVu
ZGVyVHJlZVBvc2l0aW9uOjpuZXh0U2kKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotI2lmIEVO
QUJMRShDU1NfUkVHSU9OUykKLVJlbmRlclRyZWVQb3NpdGlvbiBSZW5kZXJUcmVlUG9zaXRpb246
Omluc2VydGlvblBvc2l0aW9uRm9yRmxvd1RocmVhZChFbGVtZW50KiBpbnNlcnRpb25QYXJlbnQs
IEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKLXsKLSAgICBBU1NF
UlQoZWxlbWVudC5zaG91bGRNb3ZlVG9GbG93VGhyZWFkKHN0eWxlKSk7Ci0gICAgYXV0byYgcGFy
ZW50Rmxvd1RocmVhZCA9IGVsZW1lbnQuZG9jdW1lbnQoKS5yZW5kZXJWaWV3KCktPmZsb3dUaHJl
YWRDb250cm9sbGVyKCkuZW5zdXJlUmVuZGVyRmxvd1RocmVhZFdpdGhOYW1lKHN0eWxlLmZsb3dU
aHJlYWQoKSk7Ci0KLSAgICBpZiAoIWluc2VydGlvblBhcmVudCkKLSAgICAgICAgcmV0dXJuIHsg
cGFyZW50Rmxvd1RocmVhZCwgbnVsbHB0ciB9OwotCi0gICAgYXV0byBjb21wb3NlZERlc2NlbmRh
bnRzID0gY29tcG9zZWRUcmVlRGVzY2VuZGFudHMoKmluc2VydGlvblBhcmVudCk7Ci0gICAgYXV0
byBpdCA9IGVsZW1lbnQuaXNCZWZvcmVQc2V1ZG9FbGVtZW50KCkgPyBjb21wb3NlZERlc2NlbmRh
bnRzLmJlZ2luKCkgOiBjb21wb3NlZERlc2NlbmRhbnRzLmF0KGVsZW1lbnQpOwotICAgIGF1dG8g
ZW5kID0gY29tcG9zZWREZXNjZW5kYW50cy5lbmQoKTsKLSAgICB3aGlsZSAoaXQgIT0gZW5kKSB7
Ci0gICAgICAgIGF1dG8mIGN1cnJlbnROb2RlID0gKml0OwotICAgICAgICBib29sIGhhc0Rpc3Bs
YXlDb250ZW50cyA9IGlzPEVsZW1lbnQ+KGN1cnJlbnROb2RlKSAmJiBkb3duY2FzdDxFbGVtZW50
PihjdXJyZW50Tm9kZSkuaGFzRGlzcGxheUNvbnRlbnRzKCk7Ci0gICAgICAgIGlmIChoYXNEaXNw
bGF5Q29udGVudHMpIHsKLSAgICAgICAgICAgIGl0LnRyYXZlcnNlTmV4dCgpOwotICAgICAgICAg
ICAgY29udGludWU7Ci0gICAgICAgIH0KLQotICAgICAgICBhdXRvKiByZW5kZXJlciA9IGN1cnJl
bnROb2RlLnJlbmRlcmVyKCk7Ci0gICAgICAgIGlmICghcmVuZGVyZXIpIHsKLSAgICAgICAgICAg
IGl0LnRyYXZlcnNlTmV4dFNraXBwaW5nQ2hpbGRyZW4oKTsKLSAgICAgICAgICAgIGNvbnRpbnVl
OwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCFpczxSZW5kZXJFbGVtZW50PigqcmVuZGVyZXIp
KSB7Ci0gICAgICAgICAgICBpdC50cmF2ZXJzZU5leHQoKTsKLSAgICAgICAgICAgIGNvbnRpbnVl
OwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gV2UgYXJlIHRoZSBsYXN0IGNoaWxkIGluIHRoaXMg
Zmxvdy4KLSAgICAgICAgaWYgKCFpc1JlbmRlcmVyUmVwYXJlbnRlZCgqcmVuZGVyZXIpKQotICAg
ICAgICAgICAgcmV0dXJuIHsgcGFyZW50Rmxvd1RocmVhZCwgbnVsbHB0ciB9OwotCi0gICAgICAg
IGlmIChyZW5kZXJlci0+c3R5bGUoKS5oYXNGbG93SW50bygpICYmIHN0eWxlLmZsb3dUaHJlYWQo
KSA9PSByZW5kZXJlci0+c3R5bGUoKS5mbG93VGhyZWFkKCkpCi0gICAgICAgICAgICByZXR1cm4g
eyBwYXJlbnRGbG93VGhyZWFkLCBkb3duY2FzdDxSZW5kZXJFbGVtZW50PihyZW5kZXJlcikgfTsK
LSAgICAgICAgLy8gTmVzdGVkIGZsb3dzLCBza2lwLgotICAgICAgICBpdC50cmF2ZXJzZU5leHRT
a2lwcGluZ0NoaWxkcmVuKCk7Ci0gICAgfQotICAgIHJldHVybiB7IHBhcmVudEZsb3dUaHJlYWQs
IG51bGxwdHIgfTsKLX0KLSNlbmRpZgotICAgIAotYm9vbCBSZW5kZXJUcmVlUG9zaXRpb246Omlz
UmVuZGVyZXJSZXBhcmVudGVkKGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIpCi17Ci0gICAg
aWYgKCFyZW5kZXJlci5ub2RlKCktPmlzRWxlbWVudE5vZGUoKSkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIGlmIChyZW5kZXJlci5zdHlsZSgpLmhhc0Zsb3dJbnRvKCkpCi0gICAgICAgIHJl
dHVybiB0cnVlOwotICAgIHJldHVybiBmYWxzZTsKLX0KLQogfQpJbmRleDogU291cmNlL1dlYkNv
cmUvc3R5bGUvUmVuZGVyVHJlZVBvc2l0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvc3R5bGUvUmVuZGVyVHJlZVBvc2l0aW9uLmgJKHJldmlzaW9uIDIyMjI1NykKKysrIFNvdXJj
ZS9XZWJDb3JlL3N0eWxlL1JlbmRlclRyZWVQb3NpdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC00
NCwxMCArNDQsNiBAQCBwdWJsaWM6CiAgICAgICAgIDogbV9wYXJlbnQocGFyZW50KQogICAgIHsK
ICAgICB9Ci0gICAgCi0jaWYgRU5BQkxFKENTU19SRUdJT05TKQotICAgIHN0YXRpYyBSZW5kZXJU
cmVlUG9zaXRpb24gaW5zZXJ0aW9uUG9zaXRpb25Gb3JGbG93VGhyZWFkKEVsZW1lbnQqIGluc2Vy
dGlvblBhcmVudCwgRWxlbWVudCYgY2hpbGQsIGNvbnN0IFJlbmRlclN0eWxlJik7Ci0jZW5kaWYK
IAogICAgIFJlbmRlckVsZW1lbnQmIHBhcmVudCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyZW50OyB9
CiAgICAgdm9pZCBpbnNlcnQoUmVuZGVyT2JqZWN0Jik7CkBAIC02MCwxOCArNTYsOCBAQCBwdWJs
aWM6CiAKICAgICBSZW5kZXJPYmplY3QqIHByZXZpb3VzU2libGluZ1JlbmRlcmVyKGNvbnN0IFRl
eHQmKSBjb25zdDsKICAgICBSZW5kZXJPYmplY3QqIG5leHRTaWJsaW5nUmVuZGVyZXIoY29uc3Qg
Tm9kZSYpIGNvbnN0OwotICAgIHN0YXRpYyBib29sIGlzUmVuZGVyZXJSZXBhcmVudGVkKGNvbnN0
IFJlbmRlck9iamVjdCYpOwogCiBwcml2YXRlOgotI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKLSAg
ICBSZW5kZXJUcmVlUG9zaXRpb24oUmVuZGVyRmxvd1RocmVhZCYgcGFyZW50LCBSZW5kZXJPYmpl
Y3QqIG5leHRTaWJsaW5nKQotICAgICAgICA6IG1fcGFyZW50KHBhcmVudCkKLSAgICAgICAgLCBt
X25leHRTaWJsaW5nKG5leHRTaWJsaW5nKQotICAgICAgICAsIG1faGFzVmFsaWROZXh0U2libGlu
Zyh0cnVlKQotICAgIHsKLSAgICB9Ci0jZW5kaWYKLQogICAgIFJlbmRlckVsZW1lbnQmIG1fcGFy
ZW50OwogICAgIFJlbmRlck9iamVjdCogbV9uZXh0U2libGluZyB7IG51bGxwdHIgfTsKICAgICBi
b29sIG1faGFzVmFsaWROZXh0U2libGluZyB7IGZhbHNlIH07CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9zdHlsZS9SZW5kZXJUcmVlVXBkYXRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvc3R5bGUvUmVuZGVyVHJlZVVwZGF0ZXIuY3BwCShyZXZpc2lvbiAyMjIyNTcpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9zdHlsZS9SZW5kZXJUcmVlVXBkYXRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTMyLDcgKzMyLDYgQEAKICNpbmNsdWRlICJDb21wb3NlZFRyZWVJdGVyYXRvci5oIgogI2luY2x1
ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRWxlbWVudC5oIgotI2luY2x1ZGUgIkZsb3dUaHJl
YWRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiSFRNTFNsb3RFbGVtZW50LmgiCiAjaW5jbHVkZSAi
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiTm9kZVJlbmRlclN0eWxlLmgi
CkBAIC00MCw3ICszOSw2IEBACiAjaW5jbHVkZSAiUmVuZGVyRGVzY2VuZGFudEl0ZXJhdG9yLmgi
CiAjaW5jbHVkZSAiUmVuZGVyRnVsbFNjcmVlbi5oIgogI2luY2x1ZGUgIlJlbmRlckxpc3RJdGVt
LmgiCi0jaW5jbHVkZSAiUmVuZGVyTmFtZWRGbG93VGhyZWFkLmgiCiAjaW5jbHVkZSAiUmVuZGVy
VHJlZVVwZGF0ZXJGaXJzdExldHRlci5oIgogI2luY2x1ZGUgIlJlbmRlclRyZWVVcGRhdGVyR2Vu
ZXJhdGVkQ29udGVudC5oIgogI2luY2x1ZGUgIlJlbmRlclRyZWVVcGRhdGVyTGlzdEl0ZW0uaCIK
QEAgLTMwMCw4ICsyOTgsNyBAQCB2b2lkIFJlbmRlclRyZWVVcGRhdGVyOjp1cGRhdGVFbGVtZW50
UmVuCiAgICAgQ2hlY2tGb3JWaXNpYmlsaXR5Q2hhbmdlIGNoZWNrRm9yVmlzaWJpbGl0eUNoYW5n
ZShlbGVtZW50KTsKICNlbmRpZgogCi0gICAgYm9vbCBzaG91bGRUZWFyRG93blJlbmRlcmVycyA9
IHVwZGF0ZS5jaGFuZ2UgPT0gU3R5bGU6OkRldGFjaAotICAgICAgICAmJiAoZWxlbWVudC5yZW5k
ZXJlcigpIHx8IGVsZW1lbnQuaXNOYW1lZEZsb3dDb250ZW50RWxlbWVudCgpIHx8IGVsZW1lbnQu
aGFzRGlzcGxheUNvbnRlbnRzKCkpOworICAgIGJvb2wgc2hvdWxkVGVhckRvd25SZW5kZXJlcnMg
PSB1cGRhdGUuY2hhbmdlID09IFN0eWxlOjpEZXRhY2ggJiYgKGVsZW1lbnQucmVuZGVyZXIoKSB8
fCBlbGVtZW50Lmhhc0Rpc3BsYXlDb250ZW50cygpKTsKICAgICBpZiAoc2hvdWxkVGVhckRvd25S
ZW5kZXJlcnMpIHsKICAgICAgICAgaWYgKCFlbGVtZW50LnJlbmRlcmVyKCkpIHsKICAgICAgICAg
ICAgIC8vIFdlIG1heSBiZSB0ZWFyaW5nIGRvd24gYSBkZXNjZW5kYW50IHJlbmRlcmVyIGNhY2hl
ZCBpbiByZW5kZXJUcmVlUG9zaXRpb24uCkBAIC0zNDgsMjUgKzM0NSw5IEBAIHZvaWQgUmVuZGVy
VHJlZVVwZGF0ZXI6OnVwZGF0ZUVsZW1lbnRSZW4KICAgICByZW5kZXJlci5zZXRTdHlsZShSZW5k
ZXJTdHlsZTo6Y2xvbmUoKnVwZGF0ZS5zdHlsZSksIFN0eWxlRGlmZmVyZW5jZUVxdWFsKTsKIH0K
IAotI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKLXN0YXRpYyB2b2lkIHJlZ2lzdGVyRWxlbWVudEZv
ckZsb3dUaHJlYWRJZk5lZWRlZChFbGVtZW50JiBlbGVtZW50LCBjb25zdCBSZW5kZXJTdHlsZSYg
c3R5bGUpCi17Ci0gICAgaWYgKCFlbGVtZW50LnNob3VsZE1vdmVUb0Zsb3dUaHJlYWQoc3R5bGUp
KQotICAgICAgICByZXR1cm47Ci0gICAgRmxvd1RocmVhZENvbnRyb2xsZXImIGZsb3dUaHJlYWRD
b250cm9sbGVyID0gcmVuZGVyVmlldygpLmZsb3dUaHJlYWRDb250cm9sbGVyKCk7Ci0gICAgZmxv
d1RocmVhZENvbnRyb2xsZXIucmVnaXN0ZXJOYW1lZEZsb3dDb250ZW50RWxlbWVudChlbGVtZW50
LCBmbG93VGhyZWFkQ29udHJvbGxlci5lbnN1cmVSZW5kZXJGbG93VGhyZWFkV2l0aE5hbWUoc3R5
bGUuZmxvd1RocmVhZCgpKSk7Ci19Ci0jZW5kaWYKLQogdm9pZCBSZW5kZXJUcmVlVXBkYXRlcjo6
Y3JlYXRlUmVuZGVyZXIoRWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKIHsK
LSAgICBhdXRvIGNvbXB1dGVJbnNlcnRpb25Qb3NpdGlvbiA9IFt0aGlzLCAmZWxlbWVudCwgJnN0
eWxlXSAoKSB7Ci0jaWYgRU5BQkxFKENTU19SRUdJT05TKQotICAgICAgICBpZiAoZWxlbWVudC5z
aG91bGRNb3ZlVG9GbG93VGhyZWFkKHN0eWxlKSkKLSAgICAgICAgICAgIHJldHVybiBSZW5kZXJU
cmVlUG9zaXRpb246Omluc2VydGlvblBvc2l0aW9uRm9yRmxvd1RocmVhZChyZW5kZXJUcmVlUG9z
aXRpb24oKS5wYXJlbnQoKS5lbGVtZW50KCksIGVsZW1lbnQsIHN0eWxlKTsKLSNlbHNlCi0gICAg
ICAgIFVOVVNFRF9QQVJBTShzdHlsZSk7Ci0jZW5kaWYKKyAgICBhdXRvIGNvbXB1dGVJbnNlcnRp
b25Qb3NpdGlvbiA9IFt0aGlzLCAmZWxlbWVudF0gKCkgewogICAgICAgICByZW5kZXJUcmVlUG9z
aXRpb24oKS5jb21wdXRlTmV4dFNpYmxpbmcoZWxlbWVudCk7CiAgICAgICAgIHJldHVybiByZW5k
ZXJUcmVlUG9zaXRpb24oKTsKICAgICB9OwpAQCAtMzc0LDExICszNTUsNiBAQCB2b2lkIFJlbmRl
clRyZWVVcGRhdGVyOjpjcmVhdGVSZW5kZXJlcihFCiAgICAgaWYgKCFzaG91bGRDcmVhdGVSZW5k
ZXJlcihlbGVtZW50LCByZW5kZXJUcmVlUG9zaXRpb24oKS5wYXJlbnQoKSkpCiAgICAgICAgIHJl
dHVybjsKIAotI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKLSAgICAvLyBFdmVuIGRpc3BsYXk6IG5v
bmUgZWxlbWVudHMgbmVlZCB0byBiZSByZWdpc3RlcmVkIGluIEZsb3dUaHJlYWRDb250cm9sbGVy
LgotICAgIHJlZ2lzdGVyRWxlbWVudEZvckZsb3dUaHJlYWRJZk5lZWRlZChlbGVtZW50LCBzdHls
ZSk7Ci0jZW5kaWYKLQogICAgIGlmICghZWxlbWVudC5yZW5kZXJlcklzTmVlZGVkKHN0eWxlKSkK
ICAgICAgICAgcmV0dXJuOwogCkBAIC0zOTEsMTAgKzM2Nyw2IEBAIHZvaWQgUmVuZGVyVHJlZVVw
ZGF0ZXI6OmNyZWF0ZVJlbmRlcmVyKEUKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIC8v
IE1ha2Ugc3VyZSB0aGUgUmVuZGVyT2JqZWN0IGFscmVhZHkga25vd3MgaXQgaXMgZ29pbmcgdG8g
YmUgYWRkZWQgdG8gYSBSZW5kZXJGbG93VGhyZWFkIGJlZm9yZSB3ZSBzZXQgdGhlIHN0eWxlCi0g
ICAgLy8gZm9yIHRoZSBmaXJzdCB0aW1lLiBPdGhlcndpc2UgY29kZSB1c2luZyBpblJlbmRlckZs
b3dUaHJlYWQoKSBpbiB0aGUgc3R5bGVXaWxsQ2hhbmdlIGFuZCBzdHlsZURpZENoYW5nZSB3aWxs
IGZhaWwuCi0gICAgbmV3UmVuZGVyZXItPnNldEZsb3dUaHJlYWRTdGF0ZShpbnNlcnRpb25Qb3Np
dGlvbi5wYXJlbnQoKS5mbG93VGhyZWFkU3RhdGUoKSk7Ci0KICAgICBlbGVtZW50LnNldFJlbmRl
cmVyKG5ld1JlbmRlcmVyKTsKIAogICAgIG5ld1JlbmRlcmVyLT5pbml0aWFsaXplU3R5bGUoKTsK
QEAgLTUwMyw5ICs0NzUsOSBAQCB2b2lkIFJlbmRlclRyZWVVcGRhdGVyOjppbnZhbGlkYXRlV2hp
dGVzCiAgICAgICAgICAgICBpZiAobV9zdHlsZVVwZGF0ZS0+ZWxlbWVudFVwZGF0ZShkb3duY2Fz
dDxFbGVtZW50Pigqc2libGluZykpKQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
ICAgIC8vIFRleHQgcmVuZGVyZXJzIGJleW9uZCByZW5kZXJlZCBlbGVtZW50cyBjYW4ndCBiZSBh
ZmZlY3RlZC4KLSAgICAgICAgICAgIGlmICghc2libGluZy0+cmVuZGVyZXIoKSB8fCBSZW5kZXJU
cmVlUG9zaXRpb246OmlzUmVuZGVyZXJSZXBhcmVudGVkKCpzaWJsaW5nLT5yZW5kZXJlcigpKSkK
LSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
ICAgIGlmIChzaWJsaW5nLT5yZW5kZXJlcigpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAgICAgICAgIGlmICghaXM8VGV4dD4oKnNp
YmxpbmcpKQogICAgICAgICAgICAgY29udGludWU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdHls
ZS9SZW5kZXJUcmVlVXBkYXRlckdlbmVyYXRlZENvbnRlbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3N0eWxlL1JlbmRlclRyZWVVcGRhdGVyR2VuZXJhdGVkQ29udGVudC5jcHAJ
KHJldmlzaW9uIDIyMjI1NykKKysrIFNvdXJjZS9XZWJDb3JlL3N0eWxlL1JlbmRlclRyZWVVcGRh
dGVyR2VuZXJhdGVkQ29udGVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgyLDkgKzgyLDYgQEAg
dm9pZCBSZW5kZXJUcmVlVXBkYXRlcjo6R2VuZXJhdGVkQ29udGVudAogc3RhdGljIHZvaWQgY3Jl
YXRlQ29udGVudFJlbmRlcmVycyhSZW5kZXJFbGVtZW50JiByZW5kZXJlcikKIHsKICAgICBhdXRv
JiBzdHlsZSA9IHJlbmRlcmVyLnN0eWxlKCk7Ci0gICAgaWYgKHN0eWxlLmhhc0Zsb3dGcm9tKCkp
Ci0gICAgICAgIHJldHVybjsKLQogICAgIEFTU0VSVChzdHlsZS5jb250ZW50RGF0YSgpKTsKIAog
ICAgIGZvciAoY29uc3QgQ29udGVudERhdGEqIGNvbnRlbnQgPSBzdHlsZS5jb250ZW50RGF0YSgp
OyBjb250ZW50OyBjb250ZW50ID0gY29udGVudC0+bmV4dCgpKSB7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9zdHlsZS9TdHlsZUNoYW5nZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
c3R5bGUvU3R5bGVDaGFuZ2UuY3BwCShyZXZpc2lvbiAyMjIyNTcpCisrKyBTb3VyY2UvV2ViQ29y
ZS9zdHlsZS9TdHlsZUNoYW5nZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDE3ICs0OCw2IEBA
IENoYW5nZSBkZXRlcm1pbmVDaGFuZ2UoY29uc3QgUmVuZGVyU3R5bGUKICAgICAvLyBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTUwNjkKICAgICBpZiAoczEuaGFzVGV4
dENvbWJpbmUoKSAhPSBzMi5oYXNUZXh0Q29tYmluZSgpKQogICAgICAgICByZXR1cm4gRGV0YWNo
OwotICAgIC8vIFdlIG5lZWQgdG8gcmVhdHRhY2ggdGhlIG5vZGUsIHNvIHRoYXQgaXQgaXMgbW92
ZWQgdG8gdGhlIGNvcnJlY3QgUmVuZGVyRmxvd1RocmVhZC4KLSAgICBpZiAoczEuZmxvd1RocmVh
ZCgpICE9IHMyLmZsb3dUaHJlYWQoKSkKLSAgICAgICAgcmV0dXJuIERldGFjaDsKLSAgICAvLyBX
aGVuIHRoZSByZWdpb24gdGhyZWFkIGhhcyBjaGFuZ2VkLCB3ZSBuZWVkIHRvIHByZXBhcmUgYSBz
ZXBhcmF0ZSByZW5kZXIgcmVnaW9uIG9iamVjdC4KLSAgICBpZiAoczEucmVnaW9uVGhyZWFkKCkg
IT0gczIucmVnaW9uVGhyZWFkKCkpCi0gICAgICAgIHJldHVybiBEZXRhY2g7Ci0gICAgLy8gRklY
TUU6IE11bHRpY29sdW1uIHJlZ2lvbnMgbm90IHlldCBzdXBwb3J0ZWQgKGh0dHA6Ly9kZXYudzMu
b3JnL2Nzc3dnL2Nzcy1yZWdpb25zLyNtdWx0aS1jb2x1bW4tcmVnaW9ucykKLSAgICAvLyBXaGVu
IHRoZSBub2RlIGhhcyByZWdpb24gc3R5bGUgYW5kIGNoYW5nZWQgaXRzIG11bHRpY29sIHN0eWxl
LCB3ZSBoYXZlIHRvIHByZXBhcmUKLSAgICAvLyBhIHNlcGFyYXRlIHJlbmRlciByZWdpb24gb2Jq
ZWN0LgotICAgIGlmIChzMS5oYXNGbG93RnJvbSgpICYmIChzMS5zcGVjaWZpZXNDb2x1bW5zKCkg
IT0gczIuc3BlY2lmaWVzQ29sdW1ucygpKSkKLSAgICAgICAgcmV0dXJuIERldGFjaDsKIAogICAg
IGlmIChzMSAhPSBzMikgewogICAgICAgICBpZiAoczEuaW5oZXJpdGVkTm90RXF1YWwoJnMyKSkK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlVHJlZVJlc29sdmVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5jcHAJKHJldmlz
aW9uIDIyMjI1NykKKysrIFNvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlVHJlZVJlc29sdmVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTI0LDcgKzEyNCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxSZW5k
ZXJTdHlsZT4gVHJlZVJlc29sdmUKICAgICBpZiAoYXV0byBzdHlsZSA9IHNjb3BlKCkuc2hhcmlu
Z1Jlc29sdmVyLnJlc29sdmUoZWxlbWVudCwgKm1fdXBkYXRlKSkKICAgICAgICAgcmV0dXJuIHN0
eWxlOwogCi0gICAgYXV0byBlbGVtZW50U3R5bGUgPSBzY29wZSgpLnN0eWxlUmVzb2x2ZXIuc3R5
bGVGb3JFbGVtZW50KGVsZW1lbnQsICZpbmhlcml0ZWRTdHlsZSwgcGFyZW50Qm94U3R5bGUoKSwg
TWF0Y2hBbGxSdWxlcywgbnVsbHB0ciwgJnNjb3BlKCkuc2VsZWN0b3JGaWx0ZXIpOworICAgIGF1
dG8gZWxlbWVudFN0eWxlID0gc2NvcGUoKS5zdHlsZVJlc29sdmVyLnN0eWxlRm9yRWxlbWVudChl
bGVtZW50LCAmaW5oZXJpdGVkU3R5bGUsIHBhcmVudEJveFN0eWxlKCksIE1hdGNoQWxsUnVsZXMs
ICZzY29wZSgpLnNlbGVjdG9yRmlsdGVyKTsKIAogICAgIGlmIChlbGVtZW50U3R5bGUucmVsYXRp
b25zKQogICAgICAgICBjb21taXRSZWxhdGlvbnMoV1RGTW92ZShlbGVtZW50U3R5bGUucmVsYXRp
b25zKSwgKm1fdXBkYXRlKTsKQEAgLTE2MiwxMCArMTYyLDYgQEAgc3RhdGljIGJvb2wgYWZmZWN0
c1JlbmRlcmVkU3VidHJlZShFbGVtZQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBpZiAoZWxl
bWVudC5yZW5kZXJlcklzTmVlZGVkKG5ld1N0eWxlKSkKICAgICAgICAgcmV0dXJuIHRydWU7Ci0j
aWYgRU5BQkxFKENTU19SRUdJT05TKQotICAgIGlmIChlbGVtZW50LnNob3VsZE1vdmVUb0Zsb3dU
aHJlYWQobmV3U3R5bGUpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSNlbmRpZgogICAgIHJldHVy
biBmYWxzZTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcAkocmV2aXNpb24g
MjIyMjU3KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC01ODksMTQgKzU4OSw2IEBAIHN0YXRpYyBib29sIGhhc0xvYWRMaXN0ZW5lcihFbGVt
ZW50KiBlbGUKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLSNpZiBFTkFCTEUoQ1NTX1JFR0lPTlMp
Ci1ib29sIFNWR0VsZW1lbnQ6OnNob3VsZE1vdmVUb0Zsb3dUaHJlYWQoY29uc3QgUmVuZGVyU3R5
bGUmIHN0eWxlVG9Vc2UpIGNvbnN0Ci17Ci0gICAgLy8gQWxsb3cgb25seSBzdmcgcm9vdCBlbGVt
ZW50cyB0byBiZSBkaXJlY3RseSBjb2xsZWN0ZWQgYnkgYSByZW5kZXIgZmxvdyB0aHJlYWQuCi0g
ICAgcmV0dXJuIHBhcmVudE5vZGUoKSAmJiAhcGFyZW50Tm9kZSgpLT5pc1NWR0VsZW1lbnQoKSAm
JiBoYXNUYWdOYW1lKFNWR05hbWVzOjpzdmdUYWcpICYmIEVsZW1lbnQ6OnNob3VsZE1vdmVUb0Zs
b3dUaHJlYWQoc3R5bGVUb1VzZSk7Ci19Ci0jZW5kaWYKLQogdm9pZCBTVkdFbGVtZW50OjpzZW5k
U1ZHTG9hZEV2ZW50SWZQb3NzaWJsZShib29sIHNlbmRQYXJlbnRMb2FkRXZlbnRzKQogewogICAg
IGlmICghaXNDb25uZWN0ZWQoKSB8fCAhZG9jdW1lbnQoKS5mcmFtZSgpKQpJbmRleDogU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRWxlbWVudC5oCShyZXZpc2lvbiAyMjIyNTcpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzEsMTAgKzEzMSw2IEBAIHB1YmxpYzoK
ICAgICBib29sIHJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5
cGUsIEV2ZW50TGlzdGVuZXImLCBjb25zdCBMaXN0ZW5lck9wdGlvbnMmKSBvdmVycmlkZTsKICAg
ICBib29sIGhhc0ZvY3VzRXZlbnRMaXN0ZW5lcnMoKSBjb25zdDsKIAotI2lmIEVOQUJMRShDU1Nf
UkVHSU9OUykKLSAgICBib29sIHNob3VsZE1vdmVUb0Zsb3dUaHJlYWQoY29uc3QgUmVuZGVyU3R5
bGUmKSBjb25zdCBvdmVycmlkZTsKLSNlbmRpZgotCiAgICAgYm9vbCBoYXNUYWdOYW1lKGNvbnN0
IFNWR1F1YWxpZmllZE5hbWUmIG5hbWUpIGNvbnN0IHsgcmV0dXJuIGhhc0xvY2FsTmFtZShuYW1l
LmxvY2FsTmFtZSgpKTsgfQogICAgIGludCB0YWJJbmRleCgpIGNvbnN0IG92ZXJyaWRlOwogCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwkocmV2aXNpb24gMjIyMjU3KQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMiBAQAorMjAxNy0wOS0xOSAgQW50dGkgS29pdmlz
dG8gIDxhbnR0aUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIERPTSBhbmQgc3R5bGluZyBz
dXBwb3J0IGZvciBDU1MgUmVnaW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTc3MjIxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZzoK
KwogMjAxNy0wOS0xOSAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAog
ICAgICAgICBEbyBtb3JlIG1hdGggaW4gdGVybXMgb2YgRmxvYXRTaXplcyBhbmQgRmxvYXRQb2lu
dHMKSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNj
b25maWcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9Db25maWd1cmF0aW9ucy9GZWF0dXJl
RGVmaW5lcy54Y2NvbmZpZwkocmV2aXNpb24gMjIyMjU3KQorKysgU291cmNlL1dlYktpdC9Db25m
aWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwkod29ya2luZyBjb3B5KQpAQCAtNzgs
NyArNzgsNiBAQCBFTkFCTEVfQ1NTX0NPTVBPU0lUSU5HID0gRU5BQkxFX0NTU19DT01QCiBFTkFC
TEVfQ1NTX0RFVklDRV9BREFQVEFUSU9OID0gOwogRU5BQkxFX0NTU19JTUFHRV9PUklFTlRBVElP
TiA9IDsKIEVOQUJMRV9DU1NfSU1BR0VfUkVTT0xVVElPTiA9IDsKLUVOQUJMRV9DU1NfUkVHSU9O
UyA9IDsKIEVOQUJMRV9DU1NfU0VMRUNUT1JTX0xFVkVMNCA9IEVOQUJMRV9DU1NfU0VMRUNUT1JT
X0xFVkVMNDsKIEVOQUJMRV9DU1MzX1RFWFQgPSA7CiBFTkFCTEVfQ1VSU09SX1ZJU0lCSUxJVFkg
PSBFTkFCTEVfQ1VSU09SX1ZJU0lCSUxJVFk7CkBAIC0yNDMsNCArMjQyLDQgQEAgRU5BQkxFX0RB
VEFfSU5URVJBQ1RJT05faXBob25lc2ltdWxhdG9yIAogRU5BQkxFX0RBVEFfSU5URVJBQ1RJT05b
c2RrPWlwaG9uZW9zMTAqXSA9IDsKIEVOQUJMRV9EQVRBX0lOVEVSQUNUSU9OW3Nkaz1pcGhvbmVz
aW11bGF0b3IxMCpdID0gOwogCi1GRUFUVVJFX0RFRklORVMgPSAkKEVOQUJMRV8zRF9UUkFOU0ZP
Uk1TKSAkKEVOQUJMRV9BQ0NFTEVSQVRFRF8yRF9DQU5WQVMpICQoRU5BQkxFX0FDQ0VMRVJBVEVE
X09WRVJGTE9XX1NDUk9MTElORykgJChFTkFCTEVfQVBQTEVfUEFZKSAkKEVOQUJMRV9BUFBMRV9Q
QVlfU0VTU0lPTl9WMykgJChFTkFCTEVfQVRUQUNITUVOVF9FTEVNRU5UKSAkKEVOQUJMRV9BVkZf
Q0FQVElPTlMpICQoRU5BQkxFX0NBQ0hFX1BBUlRJVElPTklORykgJChFTkFCTEVfQ0hBTk5FTF9N
RVNTQUdJTkcpICQoRU5BQkxFX0NPTlRFTlRfRklMVEVSSU5HKSAkKEVOQUJMRV9DU1NfQU5JTUFU
SU9OU19MRVZFTF8yKSAkKEVOQUJMRV9DU1NfQk9YX0RFQ09SQVRJT05fQlJFQUspICQoRU5BQkxF
X0NTU19DT01QT1NJVElORykgJChFTkFCTEVfQ1NTX0RFVklDRV9BREFQVEFUSU9OKSAkKEVOQUJM
RV9DU1NfSU1BR0VfT1JJRU5UQVRJT04pICQoRU5BQkxFX0NTU19JTUFHRV9SRVNPTFVUSU9OKSAk
KEVOQUJMRV9DU1NfUkVHSU9OUykgJChFTkFCTEVfQ1NTX1NDUk9MTF9TTkFQKSAkKEVOQUJMRV9D
U1NfU0VMRUNUT1JTX0xFVkVMNCkgJChFTkFCTEVfQ1NTX1RSQUlMSU5HX1dPUkQpICQoRU5BQkxF
X0NTUzNfVEVYVCkgJChFTkFCTEVfQ1VSU09SX1ZJU0lCSUxJVFkpICQoRU5BQkxFX0NVU1RPTV9T
Q0hFTUVfSEFORExFUikgJChFTkFCTEVfREFTSEJPQVJEX1NVUFBPUlQpICQoRU5BQkxFX0RBVEFf
SU5URVJBQ1RJT04pICQoRU5BQkxFX0RBVEFDVUVfVkFMVUUpICQoRU5BQkxFX0RBVEFMSVNUX0VM
RU1FTlQpICQoRU5BQkxFX0RFVklDRV9PUklFTlRBVElPTikgJChFTkFCTEVfRFJBR19TVVBQT1JU
KSAkKEVOQUJMRV9FTkNSWVBURURfTUVESUEpICQoRU5BQkxFX0ZBU1RfSklUX1BFUk1JU1NJT05T
KSAkKEVOQUJMRV9GSUxURVJTX0xFVkVMXzIpICQoRU5BQkxFX0ZUTF9KSVQpICQoRU5BQkxFX0ZV
TExTQ1JFRU5fQVBJKSAkKEVOQUJMRV9HQU1FUEFEKSAkKEVOQUJMRV9HRU9MT0NBVElPTikgJChF
TkFCTEVfSUNPTkRBVEFCQVNFKSAkKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFX0lOX1dPUktFUlMp
ICQoRU5BQkxFX0lOREVYRURfREFUQUJBU0UpICQoRU5BQkxFX0lOUFVUX1RZUEVfQ09MT1JfUE9Q
T1ZFUikgJChFTkFCTEVfSU5QVVRfVFlQRV9DT0xPUikgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRF
KSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1FX0lOQ09NUExFVEUpICQoRU5BQkxFX0lOUFVU
X1RZUEVfREFURVRJTUVMT0NBTCkgJChFTkFCTEVfSU5QVVRfVFlQRV9NT05USCkgJChFTkFCTEVf
SU5QVVRfVFlQRV9USU1FKSAkKEVOQUJMRV9JTlBVVF9UWVBFX1dFRUspICQoRU5BQkxFX0lOVEVS
U0VDVElPTl9PQlNFUlZFUikgJChFTkFCTEVfSU5UTCkgJChFTkFCTEVfSU9TX0dFU1RVUkVfRVZF
TlRTKSAkKEVOQUJMRV9JT1NfVE9VQ0hfRVZFTlRTKSAkKEVOQUJMRV9KSVQpICQoRU5BQkxFX0tF
WUJPQVJEX0tFWV9BVFRSSUJVVEUpICQoRU5BQkxFX0tFWUJPQVJEX0NPREVfQVRUUklCVVRFKSAk
KEVOQUJMRV9MRUdBQ1lfQ1NTX1ZFTkRPUl9QUkVGSVhFUykgJChFTkFCTEVfTEVHQUNZX0VOQ1JZ
UFRFRF9NRURJQSkgJChFTkFCTEVfTEVHQUNZX1ZFTkRPUl9QUkVGSVhFUykgJChFTkFCTEVfTEVU
VEVSUFJFU1MpICQoRU5BQkxFX0xJTktfUFJFRkVUQ0gpICQoRU5BQkxFX01BQ19HRVNUVVJFX0VW
RU5UUykgJChFTkFCTEVfTUFUSE1MKSAkKEVOQUJMRV9NRURJQV9DQVBUVVJFKSAkKEVOQUJMRV9N
RURJQV9DT05UUk9MU19TQ1JJUFQpICQoRU5BQkxFX01FRElBX1NFU1NJT04pICQoRU5BQkxFX01F
RElBX1NPVVJDRSkgJChFTkFCTEVfTUVESUFfU1RBVElTVElDUykgJChFTkFCTEVfTUVESUFfU1RS
RUFNKSAkKEVOQUJMRV9NRVRFUl9FTEVNRU5UKSAkKEVOQUJMRV9NSFRNTCkgJChFTkFCTEVfTU9V
U0VfQ1VSU09SX1NDQUxFKSAkKEVOQUJMRV9OQVZJR0FUT1JfQ09OVEVOVF9VVElMUykgJChFTkFC
TEVfTkFWSUdBVE9SX1NUQU5EQUxPTkUpICQoRU5BQkxFX05PVElGSUNBVElPTlMpICQoRU5BQkxF
X1BBWU1FTlRfUkVRVUVTVCkgJChFTkFCTEVfUERGS0lUX1BMVUdJTikgJChFTkFCTEVfUE9JTlRF
Ul9MT0NLKSAkKEVOQUJMRV9QVUJMSUNfU1VGRklYX0xJU1QpICQoRU5BQkxFX1FVT1RBKSAkKEVO
QUJMRV9SRU1PVEVfSU5TUEVDVE9SKSAkKEVOQUJMRV9SRVNPTFVUSU9OX01FRElBX1FVRVJZKSAk
KEVOQUJMRV9SRVNPVVJDRV9VU0FHRSkgJChFTkFCTEVfUlVCQkVSX0JBTkRJTkcpICQoRU5BQkxF
X1NFUlZJQ0VfQ09OVFJPTFMpICQoRU5BQkxFX1NFUlZJQ0VfV09SS0VSKSAkKEVOQUJMRV9TUEVF
Q0hfU1lOVEhFU0lTKSAkKEVOQUJMRV9TVFJFQU1TX0FQSSkgJChFTkFCTEVfU1VCVExFX0NSWVBU
TykgJChFTkFCTEVfU1ZHX0ZPTlRTKSAkKEVOQUJMRV9URUxFUEhPTkVfTlVNQkVSX0RFVEVDVElP
TikgJChFTkFCTEVfVEVYVF9BVVRPU0laSU5HKSAkKEVOQUJMRV9UT1VDSF9FVkVOVFMpICQoRU5B
QkxFX1RPVUNIX0lDT05fTE9BRElORykgJChFTkFCTEVfVVNFUlNFTEVDVF9BTEwpICQoRU5BQkxF
X1ZBUklBVElPTl9GT05UUykgJChFTkFCTEVfVklERU9fUFJFU0VOVEFUSU9OX01PREUpICQoRU5B
QkxFX01BQ19WSURFT19UT09MQk9YKSAkKEVOQUJMRV9WSURFT19UUkFDSykgJChFTkFCTEVfVklE
RU8pICQoRU5BQkxFX1dFQl9BTklNQVRJT05TKSAkKEVOQUJMRV9XRUJfQVVESU8pICQoRU5BQkxF
X1dFQl9SVEMpICQoRU5BQkxFX1dFQkFTU0VNQkxZKSAkKEVOQUJMRV9XRUJHTCkgJChFTkFCTEVf
V0VCR0wyKSAkKEVOQUJMRV9XRUJHUFUpICQoRU5BQkxFX1dJUkVMRVNTX1BMQVlCQUNLX1RBUkdF
VCkgJChFTkFCTEVfWFNMVCk7CitGRUFUVVJFX0RFRklORVMgPSAkKEVOQUJMRV8zRF9UUkFOU0ZP
Uk1TKSAkKEVOQUJMRV9BQ0NFTEVSQVRFRF8yRF9DQU5WQVMpICQoRU5BQkxFX0FDQ0VMRVJBVEVE
X09WRVJGTE9XX1NDUk9MTElORykgJChFTkFCTEVfQVBQTEVfUEFZKSAkKEVOQUJMRV9BUFBMRV9Q
QVlfU0VTU0lPTl9WMykgJChFTkFCTEVfQVRUQUNITUVOVF9FTEVNRU5UKSAkKEVOQUJMRV9BVkZf
Q0FQVElPTlMpICQoRU5BQkxFX0NBQ0hFX1BBUlRJVElPTklORykgJChFTkFCTEVfQ0hBTk5FTF9N
RVNTQUdJTkcpICQoRU5BQkxFX0NPTlRFTlRfRklMVEVSSU5HKSAkKEVOQUJMRV9DU1NfQU5JTUFU
SU9OU19MRVZFTF8yKSAkKEVOQUJMRV9DU1NfQk9YX0RFQ09SQVRJT05fQlJFQUspICQoRU5BQkxF
X0NTU19DT01QT1NJVElORykgJChFTkFCTEVfQ1NTX0RFVklDRV9BREFQVEFUSU9OKSAkKEVOQUJM
RV9DU1NfSU1BR0VfT1JJRU5UQVRJT04pICQoRU5BQkxFX0NTU19JTUFHRV9SRVNPTFVUSU9OKSAk
KEVOQUJMRV9DU1NfU0NST0xMX1NOQVApICQoRU5BQkxFX0NTU19TRUxFQ1RPUlNfTEVWRUw0KSAk
KEVOQUJMRV9DU1NfVFJBSUxJTkdfV09SRCkgJChFTkFCTEVfQ1NTM19URVhUKSAkKEVOQUJMRV9D
VVJTT1JfVklTSUJJTElUWSkgJChFTkFCTEVfQ1VTVE9NX1NDSEVNRV9IQU5ETEVSKSAkKEVOQUJM
RV9EQVNIQk9BUkRfU1VQUE9SVCkgJChFTkFCTEVfREFUQV9JTlRFUkFDVElPTikgJChFTkFCTEVf
REFUQUNVRV9WQUxVRSkgJChFTkFCTEVfREFUQUxJU1RfRUxFTUVOVCkgJChFTkFCTEVfREVWSUNF
X09SSUVOVEFUSU9OKSAkKEVOQUJMRV9EUkFHX1NVUFBPUlQpICQoRU5BQkxFX0VOQ1JZUFRFRF9N
RURJQSkgJChFTkFCTEVfRkFTVF9KSVRfUEVSTUlTU0lPTlMpICQoRU5BQkxFX0ZJTFRFUlNfTEVW
RUxfMikgJChFTkFCTEVfRlRMX0pJVCkgJChFTkFCTEVfRlVMTFNDUkVFTl9BUEkpICQoRU5BQkxF
X0dBTUVQQUQpICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9JQ09OREFUQUJBU0UpICQo
RU5BQkxFX0lOREVYRURfREFUQUJBU0VfSU5fV09SS0VSUykgJChFTkFCTEVfSU5ERVhFRF9EQVRB
QkFTRSkgJChFTkFCTEVfSU5QVVRfVFlQRV9DT0xPUl9QT1BPVkVSKSAkKEVOQUJMRV9JTlBVVF9U
WVBFX0NPTE9SKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEUpICQoRU5BQkxFX0lOUFVUX1RZUEVf
REFURVRJTUVfSU5DT01QTEVURSkgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFVElNRUxPQ0FMKSAk
KEVOQUJMRV9JTlBVVF9UWVBFX01PTlRIKSAkKEVOQUJMRV9JTlBVVF9UWVBFX1RJTUUpICQoRU5B
QkxFX0lOUFVUX1RZUEVfV0VFSykgJChFTkFCTEVfSU5URVJTRUNUSU9OX09CU0VSVkVSKSAkKEVO
QUJMRV9JTlRMKSAkKEVOQUJMRV9JT1NfR0VTVFVSRV9FVkVOVFMpICQoRU5BQkxFX0lPU19UT1VD
SF9FVkVOVFMpICQoRU5BQkxFX0pJVCkgJChFTkFCTEVfS0VZQk9BUkRfS0VZX0FUVFJJQlVURSkg
JChFTkFCTEVfS0VZQk9BUkRfQ09ERV9BVFRSSUJVVEUpICQoRU5BQkxFX0xFR0FDWV9DU1NfVkVO
RE9SX1BSRUZJWEVTKSAkKEVOQUJMRV9MRUdBQ1lfRU5DUllQVEVEX01FRElBKSAkKEVOQUJMRV9M
RUdBQ1lfVkVORE9SX1BSRUZJWEVTKSAkKEVOQUJMRV9MRVRURVJQUkVTUykgJChFTkFCTEVfTElO
S19QUkVGRVRDSCkgJChFTkFCTEVfTUFDX0dFU1RVUkVfRVZFTlRTKSAkKEVOQUJMRV9NQVRITUwp
ICQoRU5BQkxFX01FRElBX0NBUFRVUkUpICQoRU5BQkxFX01FRElBX0NPTlRST0xTX1NDUklQVCkg
JChFTkFCTEVfTUVESUFfU0VTU0lPTikgJChFTkFCTEVfTUVESUFfU09VUkNFKSAkKEVOQUJMRV9N
RURJQV9TVEFUSVNUSUNTKSAkKEVOQUJMRV9NRURJQV9TVFJFQU0pICQoRU5BQkxFX01FVEVSX0VM
RU1FTlQpICQoRU5BQkxFX01IVE1MKSAkKEVOQUJMRV9NT1VTRV9DVVJTT1JfU0NBTEUpICQoRU5B
QkxFX05BVklHQVRPUl9DT05URU5UX1VUSUxTKSAkKEVOQUJMRV9OQVZJR0FUT1JfU1RBTkRBTE9O
RSkgJChFTkFCTEVfTk9USUZJQ0FUSU9OUykgJChFTkFCTEVfUEFZTUVOVF9SRVFVRVNUKSAkKEVO
QUJMRV9QREZLSVRfUExVR0lOKSAkKEVOQUJMRV9QT0lOVEVSX0xPQ0spICQoRU5BQkxFX1BVQkxJ
Q19TVUZGSVhfTElTVCkgJChFTkFCTEVfUVVPVEEpICQoRU5BQkxFX1JFTU9URV9JTlNQRUNUT1Ip
ICQoRU5BQkxFX1JFU09MVVRJT05fTUVESUFfUVVFUlkpICQoRU5BQkxFX1JFU09VUkNFX1VTQUdF
KSAkKEVOQUJMRV9SVUJCRVJfQkFORElORykgJChFTkFCTEVfU0VSVklDRV9DT05UUk9MUykgJChF
TkFCTEVfU0VSVklDRV9XT1JLRVIpICQoRU5BQkxFX1NQRUVDSF9TWU5USEVTSVMpICQoRU5BQkxF
X1NUUkVBTVNfQVBJKSAkKEVOQUJMRV9TVUJUTEVfQ1JZUFRPKSAkKEVOQUJMRV9TVkdfRk9OVFMp
ICQoRU5BQkxFX1RFTEVQSE9ORV9OVU1CRVJfREVURUNUSU9OKSAkKEVOQUJMRV9URVhUX0FVVE9T
SVpJTkcpICQoRU5BQkxFX1RPVUNIX0VWRU5UUykgJChFTkFCTEVfVE9VQ0hfSUNPTl9MT0FESU5H
KSAkKEVOQUJMRV9VU0VSU0VMRUNUX0FMTCkgJChFTkFCTEVfVkFSSUFUSU9OX0ZPTlRTKSAkKEVO
QUJMRV9WSURFT19QUkVTRU5UQVRJT05fTU9ERSkgJChFTkFCTEVfTUFDX1ZJREVPX1RPT0xCT1gp
ICQoRU5BQkxFX1ZJREVPX1RSQUNLKSAkKEVOQUJMRV9WSURFTykgJChFTkFCTEVfV0VCX0FOSU1B
VElPTlMpICQoRU5BQkxFX1dFQl9BVURJTykgJChFTkFCTEVfV0VCX1JUQykgJChFTkFCTEVfV0VC
QVNTRU1CTFkpICQoRU5BQkxFX1dFQkdMKSAkKEVOQUJMRV9XRUJHTDIpICQoRU5BQkxFX1dFQkdQ
VSkgJChFTkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAkKEVOQUJMRV9YU0xUKTsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMjI1NykKKysrIFNvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2
IEBACisyMDE3LTA5LTE5ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAg
ICAgICBSZW1vdmUgRE9NIGFuZCBzdHlsaW5nIHN1cHBvcnQgZm9yIENTUyBSZWdpb25zCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzcyMjEKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENvbmZpZ3VyYXRp
b25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnOgorICAgICAgICAqIERPTS9ET01DU1MubW06Cisg
ICAgICAgIChraXRDbGFzcyk6CisgICAgICAgICogRE9NL0RPTUVsZW1lbnQubW06CisgICAgICAg
ICgtW0RPTUVsZW1lbnQgd2Via2l0UmVnaW9uT3ZlcnNldF0pOiBEZWxldGVkLgorCiAyMDE3LTA5
LTE5ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAgICAgICAgIExheWVy
aW5nIHZpb2xhdGlvbiBpbiBFZGl0b3I6OmNyZWF0ZUZyYWdtZW50CkluZGV4OiBTb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9Db25maWd1cmF0aW9ucy9GZWF0dXJl
RGVmaW5lcy54Y2NvbmZpZwkocmV2aXNpb24gMjIyMjU3KQorKysgU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcJKHdvcmtpbmcgY29w
eSkKQEAgLTc4LDcgKzc4LDYgQEAgRU5BQkxFX0NTU19DT01QT1NJVElORyA9IEVOQUJMRV9DU1Nf
Q09NUAogRU5BQkxFX0NTU19ERVZJQ0VfQURBUFRBVElPTiA9IDsKIEVOQUJMRV9DU1NfSU1BR0Vf
T1JJRU5UQVRJT04gPSA7CiBFTkFCTEVfQ1NTX0lNQUdFX1JFU09MVVRJT04gPSA7Ci1FTkFCTEVf
Q1NTX1JFR0lPTlMgPSA7CiBFTkFCTEVfQ1NTX1NFTEVDVE9SU19MRVZFTDQgPSBFTkFCTEVfQ1NT
X1NFTEVDVE9SU19MRVZFTDQ7CiBFTkFCTEVfQ1NTM19URVhUID0gOwogRU5BQkxFX0NVUlNPUl9W
SVNJQklMSVRZID0gRU5BQkxFX0NVUlNPUl9WSVNJQklMSVRZOwpAQCAtMjQzLDQgKzI0Miw0IEBA
IEVOQUJMRV9EQVRBX0lOVEVSQUNUSU9OX2lwaG9uZXNpbXVsYXRvciAKIEVOQUJMRV9EQVRBX0lO
VEVSQUNUSU9OW3Nkaz1pcGhvbmVvczEwKl0gPSA7CiBFTkFCTEVfREFUQV9JTlRFUkFDVElPTltz
ZGs9aXBob25lc2ltdWxhdG9yMTAqXSA9IDsKIAotRkVBVFVSRV9ERUZJTkVTID0gJChFTkFCTEVf
M0RfVFJBTlNGT1JNUykgJChFTkFCTEVfQUNDRUxFUkFURURfMkRfQ0FOVkFTKSAkKEVOQUJMRV9B
Q0NFTEVSQVRFRF9PVkVSRkxPV19TQ1JPTExJTkcpICQoRU5BQkxFX0FQUExFX1BBWSkgJChFTkFC
TEVfQVBQTEVfUEFZX1NFU1NJT05fVjMpICQoRU5BQkxFX0FUVEFDSE1FTlRfRUxFTUVOVCkgJChF
TkFCTEVfQVZGX0NBUFRJT05TKSAkKEVOQUJMRV9DQUNIRV9QQVJUSVRJT05JTkcpICQoRU5BQkxF
X0NIQU5ORUxfTUVTU0FHSU5HKSAkKEVOQUJMRV9DT05URU5UX0ZJTFRFUklORykgJChFTkFCTEVf
Q1NTX0FOSU1BVElPTlNfTEVWRUxfMikgJChFTkFCTEVfQ1NTX0JPWF9ERUNPUkFUSU9OX0JSRUFL
KSAkKEVOQUJMRV9DU1NfQ09NUE9TSVRJTkcpICQoRU5BQkxFX0NTU19ERVZJQ0VfQURBUFRBVElP
TikgJChFTkFCTEVfQ1NTX0lNQUdFX09SSUVOVEFUSU9OKSAkKEVOQUJMRV9DU1NfSU1BR0VfUkVT
T0xVVElPTikgJChFTkFCTEVfQ1NTX1JFR0lPTlMpICQoRU5BQkxFX0NTU19TQ1JPTExfU05BUCkg
JChFTkFCTEVfQ1NTX1NFTEVDVE9SU19MRVZFTDQpICQoRU5BQkxFX0NTU19UUkFJTElOR19XT1JE
KSAkKEVOQUJMRV9DU1MzX1RFWFQpICQoRU5BQkxFX0NVUlNPUl9WSVNJQklMSVRZKSAkKEVOQUJM
RV9DVVNUT01fU0NIRU1FX0hBTkRMRVIpICQoRU5BQkxFX0RBU0hCT0FSRF9TVVBQT1JUKSAkKEVO
QUJMRV9EQVRBX0lOVEVSQUNUSU9OKSAkKEVOQUJMRV9EQVRBQ1VFX1ZBTFVFKSAkKEVOQUJMRV9E
QVRBTElTVF9FTEVNRU5UKSAkKEVOQUJMRV9ERVZJQ0VfT1JJRU5UQVRJT04pICQoRU5BQkxFX0RS
QUdfU1VQUE9SVCkgJChFTkFCTEVfRU5DUllQVEVEX01FRElBKSAkKEVOQUJMRV9GQVNUX0pJVF9Q
RVJNSVNTSU9OUykgJChFTkFCTEVfRklMVEVSU19MRVZFTF8yKSAkKEVOQUJMRV9GVExfSklUKSAk
KEVOQUJMRV9GVUxMU0NSRUVOX0FQSSkgJChFTkFCTEVfR0FNRVBBRCkgJChFTkFCTEVfR0VPTE9D
QVRJT04pICQoRU5BQkxFX0lDT05EQVRBQkFTRSkgJChFTkFCTEVfSU5ERVhFRF9EQVRBQkFTRV9J
Tl9XT1JLRVJTKSAkKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFKSAkKEVOQUJMRV9JTlBVVF9UWVBF
X0NPTE9SX1BPUE9WRVIpICQoRU5BQkxFX0lOUFVUX1RZUEVfQ09MT1IpICQoRU5BQkxFX0lOUFVU
X1RZUEVfREFURSkgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFVElNRV9JTkNPTVBMRVRFKSAkKEVO
QUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1FTE9DQUwpICQoRU5BQkxFX0lOUFVUX1RZUEVfTU9OVEgp
ICQoRU5BQkxFX0lOUFVUX1RZUEVfVElNRSkgJChFTkFCTEVfSU5QVVRfVFlQRV9XRUVLKSAkKEVO
QUJMRV9JTlRFUlNFQ1RJT05fT0JTRVJWRVIpICQoRU5BQkxFX0lOVEwpICQoRU5BQkxFX0lPU19H
RVNUVVJFX0VWRU5UUykgJChFTkFCTEVfSU9TX1RPVUNIX0VWRU5UUykgJChFTkFCTEVfSklUKSAk
KEVOQUJMRV9LRVlCT0FSRF9LRVlfQVRUUklCVVRFKSAkKEVOQUJMRV9LRVlCT0FSRF9DT0RFX0FU
VFJJQlVURSkgJChFTkFCTEVfTEVHQUNZX0NTU19WRU5ET1JfUFJFRklYRVMpICQoRU5BQkxFX0xF
R0FDWV9FTkNSWVBURURfTUVESUEpICQoRU5BQkxFX0xFR0FDWV9WRU5ET1JfUFJFRklYRVMpICQo
RU5BQkxFX0xFVFRFUlBSRVNTKSAkKEVOQUJMRV9MSU5LX1BSRUZFVENIKSAkKEVOQUJMRV9NQUNf
R0VTVFVSRV9FVkVOVFMpICQoRU5BQkxFX01BVEhNTCkgJChFTkFCTEVfTUVESUFfQ0FQVFVSRSkg
JChFTkFCTEVfTUVESUFfQ09OVFJPTFNfU0NSSVBUKSAkKEVOQUJMRV9NRURJQV9TRVNTSU9OKSAk
KEVOQUJMRV9NRURJQV9TT1VSQ0UpICQoRU5BQkxFX01FRElBX1NUQVRJU1RJQ1MpICQoRU5BQkxF
X01FRElBX1NUUkVBTSkgJChFTkFCTEVfTUVURVJfRUxFTUVOVCkgJChFTkFCTEVfTUhUTUwpICQo
RU5BQkxFX01PVVNFX0NVUlNPUl9TQ0FMRSkgJChFTkFCTEVfTkFWSUdBVE9SX0NPTlRFTlRfVVRJ
TFMpICQoRU5BQkxFX05BVklHQVRPUl9TVEFOREFMT05FKSAkKEVOQUJMRV9OT1RJRklDQVRJT05T
KSAkKEVOQUJMRV9QQVlNRU5UX1JFUVVFU1QpICQoRU5BQkxFX1BERktJVF9QTFVHSU4pICQoRU5B
QkxFX1BPSU5URVJfTE9DSykgJChFTkFCTEVfUFVCTElDX1NVRkZJWF9MSVNUKSAkKEVOQUJMRV9R
VU9UQSkgJChFTkFCTEVfUkVNT1RFX0lOU1BFQ1RPUikgJChFTkFCTEVfUkVTT0xVVElPTl9NRURJ
QV9RVUVSWSkgJChFTkFCTEVfUkVTT1VSQ0VfVVNBR0UpICQoRU5BQkxFX1JVQkJFUl9CQU5ESU5H
KSAkKEVOQUJMRV9TRVJWSUNFX0NPTlRST0xTKSAkKEVOQUJMRV9TRVJWSUNFX1dPUktFUikgJChF
TkFCTEVfU1BFRUNIX1NZTlRIRVNJUykgJChFTkFCTEVfU1RSRUFNU19BUEkpICQoRU5BQkxFX1NV
QlRMRV9DUllQVE8pICQoRU5BQkxFX1NWR19GT05UUykgJChFTkFCTEVfVEVMRVBIT05FX05VTUJF
Ul9ERVRFQ1RJT04pICQoRU5BQkxFX1RFWFRfQVVUT1NJWklORykgJChFTkFCTEVfVE9VQ0hfRVZF
TlRTKSAkKEVOQUJMRV9UT1VDSF9JQ09OX0xPQURJTkcpICQoRU5BQkxFX1VTRVJTRUxFQ1RfQUxM
KSAkKEVOQUJMRV9WQVJJQVRJT05fRk9OVFMpICQoRU5BQkxFX1ZJREVPX1BSRVNFTlRBVElPTl9N
T0RFKSAkKEVOQUJMRV9NQUNfVklERU9fVE9PTEJPWCkgJChFTkFCTEVfVklERU9fVFJBQ0spICQo
RU5BQkxFX1ZJREVPKSAkKEVOQUJMRV9XRUJfQU5JTUFUSU9OUykgJChFTkFCTEVfV0VCX0FVRElP
KSAkKEVOQUJMRV9XRUJfUlRDKSAkKEVOQUJMRV9XRUJBU1NFTUJMWSkgJChFTkFCTEVfV0VCR0wp
ICQoRU5BQkxFX1dFQkdMMikgJChFTkFCTEVfV0VCR1BVKSAkKEVOQUJMRV9XSVJFTEVTU19QTEFZ
QkFDS19UQVJHRVQpICQoRU5BQkxFX1hTTFQpOworRkVBVFVSRV9ERUZJTkVTID0gJChFTkFCTEVf
M0RfVFJBTlNGT1JNUykgJChFTkFCTEVfQUNDRUxFUkFURURfMkRfQ0FOVkFTKSAkKEVOQUJMRV9B
Q0NFTEVSQVRFRF9PVkVSRkxPV19TQ1JPTExJTkcpICQoRU5BQkxFX0FQUExFX1BBWSkgJChFTkFC
TEVfQVBQTEVfUEFZX1NFU1NJT05fVjMpICQoRU5BQkxFX0FUVEFDSE1FTlRfRUxFTUVOVCkgJChF
TkFCTEVfQVZGX0NBUFRJT05TKSAkKEVOQUJMRV9DQUNIRV9QQVJUSVRJT05JTkcpICQoRU5BQkxF
X0NIQU5ORUxfTUVTU0FHSU5HKSAkKEVOQUJMRV9DT05URU5UX0ZJTFRFUklORykgJChFTkFCTEVf
Q1NTX0FOSU1BVElPTlNfTEVWRUxfMikgJChFTkFCTEVfQ1NTX0JPWF9ERUNPUkFUSU9OX0JSRUFL
KSAkKEVOQUJMRV9DU1NfQ09NUE9TSVRJTkcpICQoRU5BQkxFX0NTU19ERVZJQ0VfQURBUFRBVElP
TikgJChFTkFCTEVfQ1NTX0lNQUdFX09SSUVOVEFUSU9OKSAkKEVOQUJMRV9DU1NfSU1BR0VfUkVT
T0xVVElPTikgJChFTkFCTEVfQ1NTX1NDUk9MTF9TTkFQKSAkKEVOQUJMRV9DU1NfU0VMRUNUT1JT
X0xFVkVMNCkgJChFTkFCTEVfQ1NTX1RSQUlMSU5HX1dPUkQpICQoRU5BQkxFX0NTUzNfVEVYVCkg
JChFTkFCTEVfQ1VSU09SX1ZJU0lCSUxJVFkpICQoRU5BQkxFX0NVU1RPTV9TQ0hFTUVfSEFORExF
UikgJChFTkFCTEVfREFTSEJPQVJEX1NVUFBPUlQpICQoRU5BQkxFX0RBVEFfSU5URVJBQ1RJT04p
ICQoRU5BQkxFX0RBVEFDVUVfVkFMVUUpICQoRU5BQkxFX0RBVEFMSVNUX0VMRU1FTlQpICQoRU5B
QkxFX0RFVklDRV9PUklFTlRBVElPTikgJChFTkFCTEVfRFJBR19TVVBQT1JUKSAkKEVOQUJMRV9F
TkNSWVBURURfTUVESUEpICQoRU5BQkxFX0ZBU1RfSklUX1BFUk1JU1NJT05TKSAkKEVOQUJMRV9G
SUxURVJTX0xFVkVMXzIpICQoRU5BQkxFX0ZUTF9KSVQpICQoRU5BQkxFX0ZVTExTQ1JFRU5fQVBJ
KSAkKEVOQUJMRV9HQU1FUEFEKSAkKEVOQUJMRV9HRU9MT0NBVElPTikgJChFTkFCTEVfSUNPTkRB
VEFCQVNFKSAkKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFX0lOX1dPUktFUlMpICQoRU5BQkxFX0lO
REVYRURfREFUQUJBU0UpICQoRU5BQkxFX0lOUFVUX1RZUEVfQ09MT1JfUE9QT1ZFUikgJChFTkFC
TEVfSU5QVVRfVFlQRV9DT0xPUikgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFKSAkKEVOQUJMRV9J
TlBVVF9UWVBFX0RBVEVUSU1FX0lOQ09NUExFVEUpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURVRJ
TUVMT0NBTCkgJChFTkFCTEVfSU5QVVRfVFlQRV9NT05USCkgJChFTkFCTEVfSU5QVVRfVFlQRV9U
SU1FKSAkKEVOQUJMRV9JTlBVVF9UWVBFX1dFRUspICQoRU5BQkxFX0lOVEVSU0VDVElPTl9PQlNF
UlZFUikgJChFTkFCTEVfSU5UTCkgJChFTkFCTEVfSU9TX0dFU1RVUkVfRVZFTlRTKSAkKEVOQUJM
RV9JT1NfVE9VQ0hfRVZFTlRTKSAkKEVOQUJMRV9KSVQpICQoRU5BQkxFX0tFWUJPQVJEX0tFWV9B
VFRSSUJVVEUpICQoRU5BQkxFX0tFWUJPQVJEX0NPREVfQVRUUklCVVRFKSAkKEVOQUJMRV9MRUdB
Q1lfQ1NTX1ZFTkRPUl9QUkVGSVhFUykgJChFTkFCTEVfTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkg
JChFTkFCTEVfTEVHQUNZX1ZFTkRPUl9QUkVGSVhFUykgJChFTkFCTEVfTEVUVEVSUFJFU1MpICQo
RU5BQkxFX0xJTktfUFJFRkVUQ0gpICQoRU5BQkxFX01BQ19HRVNUVVJFX0VWRU5UUykgJChFTkFC
TEVfTUFUSE1MKSAkKEVOQUJMRV9NRURJQV9DQVBUVVJFKSAkKEVOQUJMRV9NRURJQV9DT05UUk9M
U19TQ1JJUFQpICQoRU5BQkxFX01FRElBX1NFU1NJT04pICQoRU5BQkxFX01FRElBX1NPVVJDRSkg
JChFTkFCTEVfTUVESUFfU1RBVElTVElDUykgJChFTkFCTEVfTUVESUFfU1RSRUFNKSAkKEVOQUJM
RV9NRVRFUl9FTEVNRU5UKSAkKEVOQUJMRV9NSFRNTCkgJChFTkFCTEVfTU9VU0VfQ1VSU09SX1ND
QUxFKSAkKEVOQUJMRV9OQVZJR0FUT1JfQ09OVEVOVF9VVElMUykgJChFTkFCTEVfTkFWSUdBVE9S
X1NUQU5EQUxPTkUpICQoRU5BQkxFX05PVElGSUNBVElPTlMpICQoRU5BQkxFX1BBWU1FTlRfUkVR
VUVTVCkgJChFTkFCTEVfUERGS0lUX1BMVUdJTikgJChFTkFCTEVfUE9JTlRFUl9MT0NLKSAkKEVO
QUJMRV9QVUJMSUNfU1VGRklYX0xJU1QpICQoRU5BQkxFX1FVT1RBKSAkKEVOQUJMRV9SRU1PVEVf
SU5TUEVDVE9SKSAkKEVOQUJMRV9SRVNPTFVUSU9OX01FRElBX1FVRVJZKSAkKEVOQUJMRV9SRVNP
VVJDRV9VU0FHRSkgJChFTkFCTEVfUlVCQkVSX0JBTkRJTkcpICQoRU5BQkxFX1NFUlZJQ0VfQ09O
VFJPTFMpICQoRU5BQkxFX1NFUlZJQ0VfV09SS0VSKSAkKEVOQUJMRV9TUEVFQ0hfU1lOVEhFU0lT
KSAkKEVOQUJMRV9TVFJFQU1TX0FQSSkgJChFTkFCTEVfU1VCVExFX0NSWVBUTykgJChFTkFCTEVf
U1ZHX0ZPTlRTKSAkKEVOQUJMRV9URUxFUEhPTkVfTlVNQkVSX0RFVEVDVElPTikgJChFTkFCTEVf
VEVYVF9BVVRPU0laSU5HKSAkKEVOQUJMRV9UT1VDSF9FVkVOVFMpICQoRU5BQkxFX1RPVUNIX0lD
T05fTE9BRElORykgJChFTkFCTEVfVVNFUlNFTEVDVF9BTEwpICQoRU5BQkxFX1ZBUklBVElPTl9G
T05UUykgJChFTkFCTEVfVklERU9fUFJFU0VOVEFUSU9OX01PREUpICQoRU5BQkxFX01BQ19WSURF
T19UT09MQk9YKSAkKEVOQUJMRV9WSURFT19UUkFDSykgJChFTkFCTEVfVklERU8pICQoRU5BQkxF
X1dFQl9BTklNQVRJT05TKSAkKEVOQUJMRV9XRUJfQVVESU8pICQoRU5BQkxFX1dFQl9SVEMpICQo
RU5BQkxFX1dFQkFTU0VNQkxZKSAkKEVOQUJMRV9XRUJHTCkgJChFTkFCTEVfV0VCR0wyKSAkKEVO
QUJMRV9XRUJHUFUpICQoRU5BQkxFX1dJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJChFTkFCTEVf
WFNMVCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ1NTLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01DU1MubW0JKHJldmlzaW9u
IDIyMjI1NykKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01DU1MubW0JKHdvcmtp
bmcgY29weSkKQEAgLTgyLDkgKzgyLDYgQEAgQ2xhc3Mga2l0Q2xhc3MoV2ViQ29yZTo6Q1NTUnVs
ZSogaW1wbCkKICNpZiBFTkFCTEUoQ1NTX0RFVklDRV9BREFQVEFUSU9OKQogICAgIGNhc2UgV2Vi
Q29yZTo6Q1NTUnVsZTo6V0VCS0lUX1ZJRVdQT1JUX1JVTEU6CiAjZW5kaWYKLSNpZiBFTkFCTEUo
Q1NTX1JFR0lPTlMpCi0gICAgY2FzZSBXZWJDb3JlOjpDU1NSdWxlOjpXRUJLSVRfUkVHSU9OX1JV
TEU6Ci0jZW5kaWYKICAgICAgICAgcmV0dXJuIFtET01DU1NSdWxlIGNsYXNzXTsKICAgICB9CiAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9E
T00vRE9NRWxlbWVudC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9E
T00vRE9NRWxlbWVudC5tbQkocmV2aXNpb24gMjIyMjU3KQorKysgU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTUVsZW1lbnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTIyNywxNCArMjI3LDYg
QEAgLSAodm9pZClzZXRVaWFjdGlvbnM6KE5TU3RyaW5nICopbmV3VWlhYwogICAgIHVud3JhcCgq
c2VsZikuc2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihXZWJDb3JlOjpIVE1MTmFt
ZXM6OnVpYWN0aW9uc0F0dHIsIG5ld1VpYWN0aW9ucyk7CiB9CiAKLSNpZiBFTkFCTEUoQ1NTX1JF
R0lPTlMpCi0tIChOU1N0cmluZyAqKXdlYmtpdFJlZ2lvbk92ZXJzZXQKLXsKLSAgICBXZWJDb3Jl
OjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgcmV0dXJuIHVud3JhcCgqc2VsZiku
d2Via2l0UmVnaW9uT3ZlcnNldCgpOwotfQotI2VuZGlmCi0KIC0gKERPTUVsZW1lbnQgKilwcmV2
aW91c0VsZW1lbnRTaWJsaW5nCiB7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRl
IHN0YXRlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>321305</attachid>
            <date>2017-09-20 02:12:27 -0700</date>
            <delta_ts>2017-09-20 05:58:50 -0700</delta_ts>
            <desc>patch</desc>
            <filename>named-flow-removal-dom-etc-8.patch</filename>
            <type>text/plain</type>
            <size>253328</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5l
cy54Y2NvbmZpZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ29uZmlndXJh
dGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcJKHJldmlzaW9uIDIyMjI1NykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwko
d29ya2luZyBjb3B5KQpAQCAtNzgsNyArNzgsNiBAQCBFTkFCTEVfQ1NTX0NPTVBPU0lUSU5HID0g
RU5BQkxFX0NTU19DT01QCiBFTkFCTEVfQ1NTX0RFVklDRV9BREFQVEFUSU9OID0gOwogRU5BQkxF
X0NTU19JTUFHRV9PUklFTlRBVElPTiA9IDsKIEVOQUJMRV9DU1NfSU1BR0VfUkVTT0xVVElPTiA9
IDsKLUVOQUJMRV9DU1NfUkVHSU9OUyA9IDsKIEVOQUJMRV9DU1NfU0VMRUNUT1JTX0xFVkVMNCA9
IEVOQUJMRV9DU1NfU0VMRUNUT1JTX0xFVkVMNDsKIEVOQUJMRV9DU1MzX1RFWFQgPSA7CiBFTkFC
TEVfQ1VSU09SX1ZJU0lCSUxJVFkgPSBFTkFCTEVfQ1VSU09SX1ZJU0lCSUxJVFk7CkBAIC0yNDMs
NCArMjQyLDQgQEAgRU5BQkxFX0RBVEFfSU5URVJBQ1RJT05faXBob25lc2ltdWxhdG9yIAogRU5B
QkxFX0RBVEFfSU5URVJBQ1RJT05bc2RrPWlwaG9uZW9zMTAqXSA9IDsKIEVOQUJMRV9EQVRBX0lO
VEVSQUNUSU9OW3Nkaz1pcGhvbmVzaW11bGF0b3IxMCpdID0gOwogCi1GRUFUVVJFX0RFRklORVMg
PSAkKEVOQUJMRV8zRF9UUkFOU0ZPUk1TKSAkKEVOQUJMRV9BQ0NFTEVSQVRFRF8yRF9DQU5WQVMp
ICQoRU5BQkxFX0FDQ0VMRVJBVEVEX09WRVJGTE9XX1NDUk9MTElORykgJChFTkFCTEVfQVBQTEVf
UEFZKSAkKEVOQUJMRV9BUFBMRV9QQVlfU0VTU0lPTl9WMykgJChFTkFCTEVfQVRUQUNITUVOVF9F
TEVNRU5UKSAkKEVOQUJMRV9BVkZfQ0FQVElPTlMpICQoRU5BQkxFX0NBQ0hFX1BBUlRJVElPTklO
RykgJChFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcpICQoRU5BQkxFX0NPTlRFTlRfRklMVEVSSU5H
KSAkKEVOQUJMRV9DU1NfQU5JTUFUSU9OU19MRVZFTF8yKSAkKEVOQUJMRV9DU1NfQk9YX0RFQ09S
QVRJT05fQlJFQUspICQoRU5BQkxFX0NTU19DT01QT1NJVElORykgJChFTkFCTEVfQ1NTX0RFVklD
RV9BREFQVEFUSU9OKSAkKEVOQUJMRV9DU1NfSU1BR0VfT1JJRU5UQVRJT04pICQoRU5BQkxFX0NT
U19JTUFHRV9SRVNPTFVUSU9OKSAkKEVOQUJMRV9DU1NfUkVHSU9OUykgJChFTkFCTEVfQ1NTX1ND
Uk9MTF9TTkFQKSAkKEVOQUJMRV9DU1NfU0VMRUNUT1JTX0xFVkVMNCkgJChFTkFCTEVfQ1NTX1RS
QUlMSU5HX1dPUkQpICQoRU5BQkxFX0NTUzNfVEVYVCkgJChFTkFCTEVfQ1VSU09SX1ZJU0lCSUxJ
VFkpICQoRU5BQkxFX0NVU1RPTV9TQ0hFTUVfSEFORExFUikgJChFTkFCTEVfREFTSEJPQVJEX1NV
UFBPUlQpICQoRU5BQkxFX0RBVEFfSU5URVJBQ1RJT04pICQoRU5BQkxFX0RBVEFDVUVfVkFMVUUp
ICQoRU5BQkxFX0RBVEFMSVNUX0VMRU1FTlQpICQoRU5BQkxFX0RFVklDRV9PUklFTlRBVElPTikg
JChFTkFCTEVfRFJBR19TVVBQT1JUKSAkKEVOQUJMRV9FTkNSWVBURURfTUVESUEpICQoRU5BQkxF
X0ZBU1RfSklUX1BFUk1JU1NJT05TKSAkKEVOQUJMRV9GSUxURVJTX0xFVkVMXzIpICQoRU5BQkxF
X0ZUTF9KSVQpICQoRU5BQkxFX0ZVTExTQ1JFRU5fQVBJKSAkKEVOQUJMRV9HQU1FUEFEKSAkKEVO
QUJMRV9HRU9MT0NBVElPTikgJChFTkFCTEVfSUNPTkRBVEFCQVNFKSAkKEVOQUJMRV9JTkRFWEVE
X0RBVEFCQVNFX0lOX1dPUktFUlMpICQoRU5BQkxFX0lOREVYRURfREFUQUJBU0UpICQoRU5BQkxF
X0lOUFVUX1RZUEVfQ09MT1JfUE9QT1ZFUikgJChFTkFCTEVfSU5QVVRfVFlQRV9DT0xPUikgJChF
TkFCTEVfSU5QVVRfVFlQRV9EQVRFKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1FX0lOQ09N
UExFVEUpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURVRJTUVMT0NBTCkgJChFTkFCTEVfSU5QVVRf
VFlQRV9NT05USCkgJChFTkFCTEVfSU5QVVRfVFlQRV9USU1FKSAkKEVOQUJMRV9JTlBVVF9UWVBF
X1dFRUspICQoRU5BQkxFX0lOVEVSU0VDVElPTl9PQlNFUlZFUikgJChFTkFCTEVfSU5UTCkgJChF
TkFCTEVfSU9TX0dFU1RVUkVfRVZFTlRTKSAkKEVOQUJMRV9JT1NfVE9VQ0hfRVZFTlRTKSAkKEVO
QUJMRV9KSVQpICQoRU5BQkxFX0tFWUJPQVJEX0tFWV9BVFRSSUJVVEUpICQoRU5BQkxFX0tFWUJP
QVJEX0NPREVfQVRUUklCVVRFKSAkKEVOQUJMRV9MRUdBQ1lfQ1NTX1ZFTkRPUl9QUkVGSVhFUykg
JChFTkFCTEVfTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkgJChFTkFCTEVfTEVHQUNZX1ZFTkRPUl9Q
UkVGSVhFUykgJChFTkFCTEVfTEVUVEVSUFJFU1MpICQoRU5BQkxFX0xJTktfUFJFRkVUQ0gpICQo
RU5BQkxFX01BQ19HRVNUVVJFX0VWRU5UUykgJChFTkFCTEVfTUFUSE1MKSAkKEVOQUJMRV9NRURJ
QV9DQVBUVVJFKSAkKEVOQUJMRV9NRURJQV9DT05UUk9MU19TQ1JJUFQpICQoRU5BQkxFX01FRElB
X1NFU1NJT04pICQoRU5BQkxFX01FRElBX1NPVVJDRSkgJChFTkFCTEVfTUVESUFfU1RBVElTVElD
UykgJChFTkFCTEVfTUVESUFfU1RSRUFNKSAkKEVOQUJMRV9NRVRFUl9FTEVNRU5UKSAkKEVOQUJM
RV9NSFRNTCkgJChFTkFCTEVfTU9VU0VfQ1VSU09SX1NDQUxFKSAkKEVOQUJMRV9OQVZJR0FUT1Jf
Q09OVEVOVF9VVElMUykgJChFTkFCTEVfTkFWSUdBVE9SX1NUQU5EQUxPTkUpICQoRU5BQkxFX05P
VElGSUNBVElPTlMpICQoRU5BQkxFX1BBWU1FTlRfUkVRVUVTVCkgJChFTkFCTEVfUERGS0lUX1BM
VUdJTikgJChFTkFCTEVfUE9JTlRFUl9MT0NLKSAkKEVOQUJMRV9QVUJMSUNfU1VGRklYX0xJU1Qp
ICQoRU5BQkxFX1FVT1RBKSAkKEVOQUJMRV9SRU1PVEVfSU5TUEVDVE9SKSAkKEVOQUJMRV9SRVNP
TFVUSU9OX01FRElBX1FVRVJZKSAkKEVOQUJMRV9SRVNPVVJDRV9VU0FHRSkgJChFTkFCTEVfUlVC
QkVSX0JBTkRJTkcpICQoRU5BQkxFX1NFUlZJQ0VfQ09OVFJPTFMpICQoRU5BQkxFX1NFUlZJQ0Vf
V09SS0VSKSAkKEVOQUJMRV9TUEVFQ0hfU1lOVEhFU0lTKSAkKEVOQUJMRV9TVFJFQU1TX0FQSSkg
JChFTkFCTEVfU1VCVExFX0NSWVBUTykgJChFTkFCTEVfU1ZHX0ZPTlRTKSAkKEVOQUJMRV9URUxF
UEhPTkVfTlVNQkVSX0RFVEVDVElPTikgJChFTkFCTEVfVEVYVF9BVVRPU0laSU5HKSAkKEVOQUJM
RV9UT1VDSF9FVkVOVFMpICQoRU5BQkxFX1RPVUNIX0lDT05fTE9BRElORykgJChFTkFCTEVfVVNF
UlNFTEVDVF9BTEwpICQoRU5BQkxFX1ZBUklBVElPTl9GT05UUykgJChFTkFCTEVfVklERU9fUFJF
U0VOVEFUSU9OX01PREUpICQoRU5BQkxFX01BQ19WSURFT19UT09MQk9YKSAkKEVOQUJMRV9WSURF
T19UUkFDSykgJChFTkFCTEVfVklERU8pICQoRU5BQkxFX1dFQl9BTklNQVRJT05TKSAkKEVOQUJM
RV9XRUJfQVVESU8pICQoRU5BQkxFX1dFQl9SVEMpICQoRU5BQkxFX1dFQkFTU0VNQkxZKSAkKEVO
QUJMRV9XRUJHTCkgJChFTkFCTEVfV0VCR0wyKSAkKEVOQUJMRV9XRUJHUFUpICQoRU5BQkxFX1dJ
UkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJChFTkFCTEVfWFNMVCk7CitGRUFUVVJFX0RFRklORVMg
PSAkKEVOQUJMRV8zRF9UUkFOU0ZPUk1TKSAkKEVOQUJMRV9BQ0NFTEVSQVRFRF8yRF9DQU5WQVMp
ICQoRU5BQkxFX0FDQ0VMRVJBVEVEX09WRVJGTE9XX1NDUk9MTElORykgJChFTkFCTEVfQVBQTEVf
UEFZKSAkKEVOQUJMRV9BUFBMRV9QQVlfU0VTU0lPTl9WMykgJChFTkFCTEVfQVRUQUNITUVOVF9F
TEVNRU5UKSAkKEVOQUJMRV9BVkZfQ0FQVElPTlMpICQoRU5BQkxFX0NBQ0hFX1BBUlRJVElPTklO
RykgJChFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcpICQoRU5BQkxFX0NPTlRFTlRfRklMVEVSSU5H
KSAkKEVOQUJMRV9DU1NfQU5JTUFUSU9OU19MRVZFTF8yKSAkKEVOQUJMRV9DU1NfQk9YX0RFQ09S
QVRJT05fQlJFQUspICQoRU5BQkxFX0NTU19DT01QT1NJVElORykgJChFTkFCTEVfQ1NTX0RFVklD
RV9BREFQVEFUSU9OKSAkKEVOQUJMRV9DU1NfSU1BR0VfT1JJRU5UQVRJT04pICQoRU5BQkxFX0NT
U19JTUFHRV9SRVNPTFVUSU9OKSAkKEVOQUJMRV9DU1NfU0NST0xMX1NOQVApICQoRU5BQkxFX0NT
U19TRUxFQ1RPUlNfTEVWRUw0KSAkKEVOQUJMRV9DU1NfVFJBSUxJTkdfV09SRCkgJChFTkFCTEVf
Q1NTM19URVhUKSAkKEVOQUJMRV9DVVJTT1JfVklTSUJJTElUWSkgJChFTkFCTEVfQ1VTVE9NX1ND
SEVNRV9IQU5ETEVSKSAkKEVOQUJMRV9EQVNIQk9BUkRfU1VQUE9SVCkgJChFTkFCTEVfREFUQV9J
TlRFUkFDVElPTikgJChFTkFCTEVfREFUQUNVRV9WQUxVRSkgJChFTkFCTEVfREFUQUxJU1RfRUxF
TUVOVCkgJChFTkFCTEVfREVWSUNFX09SSUVOVEFUSU9OKSAkKEVOQUJMRV9EUkFHX1NVUFBPUlQp
ICQoRU5BQkxFX0VOQ1JZUFRFRF9NRURJQSkgJChFTkFCTEVfRkFTVF9KSVRfUEVSTUlTU0lPTlMp
ICQoRU5BQkxFX0ZJTFRFUlNfTEVWRUxfMikgJChFTkFCTEVfRlRMX0pJVCkgJChFTkFCTEVfRlVM
TFNDUkVFTl9BUEkpICQoRU5BQkxFX0dBTUVQQUQpICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVO
QUJMRV9JQ09OREFUQUJBU0UpICQoRU5BQkxFX0lOREVYRURfREFUQUJBU0VfSU5fV09SS0VSUykg
JChFTkFCTEVfSU5ERVhFRF9EQVRBQkFTRSkgJChFTkFCTEVfSU5QVVRfVFlQRV9DT0xPUl9QT1BP
VkVSKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0NPTE9SKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEUp
ICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURVRJTUVfSU5DT01QTEVURSkgJChFTkFCTEVfSU5QVVRf
VFlQRV9EQVRFVElNRUxPQ0FMKSAkKEVOQUJMRV9JTlBVVF9UWVBFX01PTlRIKSAkKEVOQUJMRV9J
TlBVVF9UWVBFX1RJTUUpICQoRU5BQkxFX0lOUFVUX1RZUEVfV0VFSykgJChFTkFCTEVfSU5URVJT
RUNUSU9OX09CU0VSVkVSKSAkKEVOQUJMRV9JTlRMKSAkKEVOQUJMRV9JT1NfR0VTVFVSRV9FVkVO
VFMpICQoRU5BQkxFX0lPU19UT1VDSF9FVkVOVFMpICQoRU5BQkxFX0pJVCkgJChFTkFCTEVfS0VZ
Qk9BUkRfS0VZX0FUVFJJQlVURSkgJChFTkFCTEVfS0VZQk9BUkRfQ09ERV9BVFRSSUJVVEUpICQo
RU5BQkxFX0xFR0FDWV9DU1NfVkVORE9SX1BSRUZJWEVTKSAkKEVOQUJMRV9MRUdBQ1lfRU5DUllQ
VEVEX01FRElBKSAkKEVOQUJMRV9MRUdBQ1lfVkVORE9SX1BSRUZJWEVTKSAkKEVOQUJMRV9MRVRU
RVJQUkVTUykgJChFTkFCTEVfTElOS19QUkVGRVRDSCkgJChFTkFCTEVfTUFDX0dFU1RVUkVfRVZF
TlRTKSAkKEVOQUJMRV9NQVRITUwpICQoRU5BQkxFX01FRElBX0NBUFRVUkUpICQoRU5BQkxFX01F
RElBX0NPTlRST0xTX1NDUklQVCkgJChFTkFCTEVfTUVESUFfU0VTU0lPTikgJChFTkFCTEVfTUVE
SUFfU09VUkNFKSAkKEVOQUJMRV9NRURJQV9TVEFUSVNUSUNTKSAkKEVOQUJMRV9NRURJQV9TVFJF
QU0pICQoRU5BQkxFX01FVEVSX0VMRU1FTlQpICQoRU5BQkxFX01IVE1MKSAkKEVOQUJMRV9NT1VT
RV9DVVJTT1JfU0NBTEUpICQoRU5BQkxFX05BVklHQVRPUl9DT05URU5UX1VUSUxTKSAkKEVOQUJM
RV9OQVZJR0FUT1JfU1RBTkRBTE9ORSkgJChFTkFCTEVfTk9USUZJQ0FUSU9OUykgJChFTkFCTEVf
UEFZTUVOVF9SRVFVRVNUKSAkKEVOQUJMRV9QREZLSVRfUExVR0lOKSAkKEVOQUJMRV9QT0lOVEVS
X0xPQ0spICQoRU5BQkxFX1BVQkxJQ19TVUZGSVhfTElTVCkgJChFTkFCTEVfUVVPVEEpICQoRU5B
QkxFX1JFTU9URV9JTlNQRUNUT1IpICQoRU5BQkxFX1JFU09MVVRJT05fTUVESUFfUVVFUlkpICQo
RU5BQkxFX1JFU09VUkNFX1VTQUdFKSAkKEVOQUJMRV9SVUJCRVJfQkFORElORykgJChFTkFCTEVf
U0VSVklDRV9DT05UUk9MUykgJChFTkFCTEVfU0VSVklDRV9XT1JLRVIpICQoRU5BQkxFX1NQRUVD
SF9TWU5USEVTSVMpICQoRU5BQkxFX1NUUkVBTVNfQVBJKSAkKEVOQUJMRV9TVUJUTEVfQ1JZUFRP
KSAkKEVOQUJMRV9TVkdfRk9OVFMpICQoRU5BQkxFX1RFTEVQSE9ORV9OVU1CRVJfREVURUNUSU9O
KSAkKEVOQUJMRV9URVhUX0FVVE9TSVpJTkcpICQoRU5BQkxFX1RPVUNIX0VWRU5UUykgJChFTkFC
TEVfVE9VQ0hfSUNPTl9MT0FESU5HKSAkKEVOQUJMRV9VU0VSU0VMRUNUX0FMTCkgJChFTkFCTEVf
VkFSSUFUSU9OX0ZPTlRTKSAkKEVOQUJMRV9WSURFT19QUkVTRU5UQVRJT05fTU9ERSkgJChFTkFC
TEVfTUFDX1ZJREVPX1RPT0xCT1gpICQoRU5BQkxFX1ZJREVPX1RSQUNLKSAkKEVOQUJMRV9WSURF
TykgJChFTkFCTEVfV0VCX0FOSU1BVElPTlMpICQoRU5BQkxFX1dFQl9BVURJTykgJChFTkFCTEVf
V0VCX1JUQykgJChFTkFCTEVfV0VCQVNTRU1CTFkpICQoRU5BQkxFX1dFQkdMKSAkKEVOQUJMRV9X
RUJHTDIpICQoRU5BQkxFX1dFQkdQVSkgJChFTkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VU
KSAkKEVOQUJMRV9YU0xUKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMjI1NykKKysrIFNv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIyNCBAQAor
MjAxNy0wOS0xOSAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CisKKyAgICAgICAg
UmVtb3ZlIERPTSBhbmQgc3R5bGluZyBzdXBwb3J0IGZvciBDU1MgUmVnaW9ucworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc3MjIxCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCByZW1vdmVz
IGFsbCBDU1MgUmVnaW9ucyAoYWthICJuYW1lZCBmbG93IikgcmVsYXRlZCBjb2RlIGV4Y2x1ZGlu
ZyByZW5kZXJpbmcuCisKKyAgICAgICAgVGhlIGZlYXR1cmUgaXMgYWxyZWFkeSBkaXNhYmxlZCBz
byBubyBmdW5jdGlvbmFsIGNoYW5nZXMuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAg
ICAgICAgKiBDb25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZzoKKyAgICAgICAg
KiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0NTU1J1bGVDdXN0b20uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6dG9KU05ld2x5Q3JlYXRlZCk6CisgICAgICAgICogY3NzL0NTU0Nv
bXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb250ZW50VG9D
U1NWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpwcm9w
ZXJ0eVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRUb1JlZ2lvbkJyZWFrKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBjc3MvQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBCcmVha0JldHdlZW4gY29u
c3QpOgorICAgICAgICAqIGNzcy9DU1NQcm9wZXJ0aWVzLmpzb246CisgICAgICAgICogY3NzL0NT
U1J1bGUuY3BwOgorICAgICAgICAqIGNzcy9DU1NSdWxlLmg6CisgICAgICAgICogY3NzL0NTU1J1
bGUuaWRsOgorICAgICAgICAqIGNzcy9FbGVtZW50UnVsZUNvbGxlY3Rvci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpFbGVtZW50UnVsZUNvbGxlY3Rvcjo6bWF0Y2hBdXRob3JSdWxlcyk6CisgICAg
ICAgIChXZWJDb3JlOjpFbGVtZW50UnVsZUNvbGxlY3Rvcjo6bWF0Y2hVc2VyUnVsZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6RWxlbWVudFJ1bGVDb2xsZWN0b3I6OmNvbGxlY3RNYXRjaGluZ1J1bGVz
Rm9yUmVnaW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBjc3MvRWxlbWVudFJ1bGVDb2xsZWN0b3Iu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRSdWxlQ29sbGVjdG9yOjpzZXRTYW1lT3JpZ2lu
T25seSk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50UnVsZUNvbGxlY3Rvcjo6c2V0UmVnaW9u
Rm9yU3R5bGluZyk6IERlbGV0ZWQuCisgICAgICAgICogY3NzL0luc3BlY3RvckNTU09NV3JhcHBl
cnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTT01XcmFwcGVyczo6Y29sbGVj
dCk6CisgICAgICAgICogY3NzL1J1bGVTZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZGV0ZXJt
aW5lUHJvcGVydHlXaGl0ZWxpc3RUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bGVEYXRhOjpS
dWxlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpSdWxlU2V0OjphZGRDaGlsZFJ1bGVzKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJ1bGVTZXQ6OnNocmlua1RvRml0KToKKyAgICAgICAgKFdlYkNvcmU6
OlJ1bGVTZXQ6OmFkZFJlZ2lvblJ1bGUpOiBEZWxldGVkLgorICAgICAgICAqIGNzcy9SdWxlU2V0
Lmg6CisgICAgICAgIChXZWJDb3JlOjpSdWxlU2V0OjogY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6UnVsZVNldDo6cmVnaW9uU2VsZWN0b3JzQW5kUnVsZVNldHMgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAqIGNzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFJlZ2lvbkJyZWFrQmV0d2Vlbik6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRSZWdp
b25CcmVha0luc2lkZSk6IERlbGV0ZWQuCisgICAgICAgICogY3NzL1N0eWxlUHJvcGVydGllcy5j
cHA6CisgICAgICAgICogY3NzL1N0eWxlUmVzb2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGVSZXNvbHZlcjo6U3RhdGU6OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVz
b2x2ZXI6OlN0YXRlOjpTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpz
dHlsZUZvckVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6Q2FzY2Fk
ZWRQcm9wZXJ0aWVzOjphZGRNYXRjaCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVy
OjpjaGVja1JlZ2lvblN0eWxlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmlzVmFsaWRS
ZWdpb25TdHlsZVByb3BlcnR5KTogRGVsZXRlZC4KKyAgICAgICAgKiBjc3MvU3R5bGVSZXNvbHZl
ci5oOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6U3RhdGU6OnJlZ2lvbkZvclN0
eWxpbmcgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Y2hlY2tSZWdpb25TZWxl
Y3Rvcik6IERlbGV0ZWQuCisgICAgICAgICogY3NzL1N0eWxlUnVsZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZVJ1bGVCYXNlOjpkZXN0cm95KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
UnVsZUJhc2U6OmNvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSdWxlQmFzZTo6
Y3JlYXRlQ1NTT01XcmFwcGVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUnVsZVJl
Z2lvbjo6U3R5bGVSdWxlUmVnaW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBjc3MvU3R5bGVSdWxl
Lmg6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJ1bGVCYXNlOjppc1N0eWxlUnVsZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJ1bGVCYXNlOjppc1JlZ2lvblJ1bGUgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAqIGNzcy9TdHlsZVNoZWV0Q29udGVudHMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6dHJhdmVyc2VTdWJyZXNvdXJjZXNJblJ1bGVzKToKKyAgICAgICAgKiBjc3MvV2Vi
S2l0Q1NTUmVnaW9uUnVsZS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogY3NzL1dlYktpdENTU1Jl
Z2lvblJ1bGUuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBjc3MvV2ViS2l0Q1NTUmVnaW9uUnVsZS5p
ZGw6IFJlbW92ZWQuCisgICAgICAgICogY3NzL3BhcnNlci9DU1NBdFJ1bGVJRC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpjc3NBdFJ1bGVJRCk6CisgICAgICAgICogY3NzL3BhcnNlci9DU1NBdFJ1
bGVJRC5oOgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUGFyc2VyRmFzdFBhdGhzLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlckZhc3RQYXRoczo6aXNWYWxpZEtleXdvcmRQcm9wZXJ0
eUFuZFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlckZhc3RQYXRoczo6aXNLZXl3
b3JkUHJvcGVydHlJRCk6CisgICAgICAgICogY3NzL3BhcnNlci9DU1NQYXJzZXJJbXBsLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlckltcGw6OmNvbnN1bWVBdFJ1bGUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTUGFyc2VySW1wbDo6Y29uc3VtZVJlZ2lvblJ1bGUpOiBEZWxldGVkLgor
ICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUGFyc2VySW1wbC5oOgorICAgICAgICAqIGNzcy9wYXJz
ZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNMZWdhY3lCcmVh
a1Byb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VyOjpwYXJzZVNp
bmdsZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6Om1hcEZyb21MZWdhY3lCcmVha1Byb3BlcnR5
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VyOjpjb25zdW1lTGVnYWN5QnJl
YWtQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpjb25zdW1lRmxvd1Byb3BlcnR5KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Om1hcEZyb21SZWdpb25CcmVha0JldHdlZW4pOiBEZWxl
dGVkLgorICAgICAgICAqIGRvbS9Db250YWluZXJOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmRlc3Ryb3lSZW5kZXJUcmVlSWZOZWVkZWQpOgorICAgICAgICAqIGRvbS9ET01OYW1lZEZsb3dD
b2xsZWN0aW9uLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBkb20vRE9NTmFtZWRGbG93Q29sbGVj
dGlvbi5oOiBSZW1vdmVkLgorICAgICAgICAqIGRvbS9ET01OYW1lZEZsb3dDb2xsZWN0aW9uLmlk
bDogUmVtb3ZlZC4KKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnQ6OnVwZGF0ZUxheW91dElmRGltZW5zaW9uc091dE9mRGF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudDo6d2Via2l0R2V0TmFtZWRGbG93cyk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudDo6bmFtZWRGbG93cyk6IERlbGV0ZWQuCisgICAgICAgICog
ZG9tL0RvY3VtZW50Lmg6CisgICAgICAgICogZG9tL0RvY3VtZW50LmlkbDoKKyAgICAgICAgKiBk
b20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojp+RWxlbWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpjbGVhclN0eWxlRGVyaXZlZERhdGFCZWZvcmVEZXRh
Y2hpbmdSZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojp1bnJlZ2lzdGVyTmFt
ZWRGbG93Q29udGVudEVsZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVu
dDo6c2V0SXNOYW1lZEZsb3dDb250ZW50RWxlbWVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpFbGVtZW50OjpjbGVhcklzTmFtZWRGbG93Q29udGVudEVsZW1lbnQpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6cmFyZURhdGFJc05hbWVkRmxvd0NvbnRlbnRFbGVt
ZW50IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNldFJlZ2lv
bk92ZXJzZXRTdGF0ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpyZWdp
b25PdmVyc2V0U3RhdGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVu
dDo6cmVuZGVyTmFtZWRGbG93RnJhZ21lbnQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6RWxlbWVudDo6c2hvdWxkTW92ZVRvRmxvd1RocmVhZCBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojp3ZWJraXRSZWdpb25PdmVyc2V0IGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OndlYmtpdEdldFJlZ2lvbkZsb3dSYW5n
ZXMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6CisgICAgICAgIChX
ZWJDb3JlOjpFbGVtZW50Ojppc05hbWVkRmxvd0NvbnRlbnRFbGVtZW50IGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKiBkb20vRWxlbWVudC5pZGw6CisgICAgICAgICogZG9tL0VsZW1lbnRSYXJl
RGF0YS5jcHA6CisgICAgICAgICogZG9tL0VsZW1lbnRSYXJlRGF0YS5oOgorICAgICAgICAoV2Vi
Q29yZTo6RWxlbWVudFJhcmVEYXRhOjpFbGVtZW50UmFyZURhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6RWxlbWVudFJhcmVEYXRhOjpyZWdpb25PdmVyc2V0U3RhdGUgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFJhcmVEYXRhOjpzZXRSZWdpb25PdmVyc2V0U3RhdGUp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFJhcmVEYXRhOjppc05hbWVkRmxv
d0NvbnRlbnRFbGVtZW50IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkVsZW1l
bnRSYXJlRGF0YTo6c2V0SXNOYW1lZEZsb3dDb250ZW50RWxlbWVudCk6IERlbGV0ZWQuCisgICAg
ICAgICogZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbjoKKyAgICAgICAgKiBkb20vTmFtZWRGbG93
Q29sbGVjdGlvbi5jcHA6IFJlbW92ZWQuCisgICAgICAgICogZG9tL05hbWVkRmxvd0NvbGxlY3Rp
b24uaDogUmVtb3ZlZC4KKyAgICAgICAgKiBkb20vUHNldWRvRWxlbWVudC5oOgorICAgICAgICAq
IGRvbS9XZWJLaXROYW1lZEZsb3cuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIGRvbS9XZWJLaXRO
YW1lZEZsb3cuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBkb20vV2ViS2l0TmFtZWRGbG93LmlkbDog
UmVtb3ZlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OnJlc2V0Tm9uUGVyc2lzdGVudERhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6Q2hhbmdlUmVnaW9uT3ZlcnNldFRhc2s6OkNoYW5nZVJlZ2lv
bk92ZXJzZXRUYXNrKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNoYW5nZVJlZ2lvbk92
ZXJzZXRUYXNrOjpzY2hlZHVsZUZvcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDaGFu
Z2VSZWdpb25PdmVyc2V0VGFzazo6dW5zY2hlZHVsZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpDaGFuZ2VSZWdpb25PdmVyc2V0VGFzazo6cmVzZXQpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6Q2hhbmdlUmVnaW9uT3ZlcnNldFRhc2s6OnRpbWVyRmlyZWQpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmRpZENyZWF0ZU5hbWVkRmxvdyk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6d2lsbFJlbW92
ZU5hbWVkRmxvdyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2Vu
dDo6ZGlkQ2hhbmdlUmVnaW9uT3ZlcnNldCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JDU1NBZ2VudDo6cmVnaW9uT3ZlcnNldENoYW5nZWQpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmRpZFJlZ2lzdGVyTmFtZWRGbG93Q29udGVu
dEVsZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6
OmRpZFVucmVnaXN0ZXJOYW1lZEZsb3dDb250ZW50RWxlbWVudCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0TmFtZWRGbG93Q29sbGVjdGlvbik6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6ZG9jdW1lbnROb2Rl
V2l0aFJlcXVlc3RlZEZsb3dzSWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yQ1NTQWdlbnQ6OmJ1aWxkQXJyYXlGb3JSZWdpb25zKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpidWlsZE9iamVjdEZvck5hbWVkRmxvdyk6IERlbGV0
ZWQuCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50Lmg6CisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENyZWF0ZU5hbWVkRmxvd0ltcGwpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUmVt
b3ZlTmFtZWRGbG93SW1wbCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmRpZENoYW5nZVJlZ2lvbk92ZXJzZXRJbXBsKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVnaXN0ZXJOYW1l
ZEZsb3dDb250ZW50RWxlbWVudEltcGwpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRVbnJlZ2lzdGVyTmFtZWRGbG93Q29udGVudEVsZW1l
bnRJbXBsKTogRGVsZXRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpidWlsZFJlbmRlcmVySGlnaGxpZ2h0KToKKyAgICAgICAg
KFdlYkNvcmU6OmJ1aWxkT2JqZWN0Rm9yRWxlbWVudERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6
YnVpbGRPYmplY3RGb3JSZWdpb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRP
YmplY3RGb3JGbG93UmVnaW9ucyk6IERlbGV0ZWQuCisgICAgICAgICogcGFnZS9FdmVudEhhbmRs
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aGFuZGxlV2hlZWxFdmVudEluQXBwcm9wcmlhdGVF
bmNsb3NpbmdCb3gpOgorICAgICAgICAqIHJlbmRlcmluZy9GbG93VGhyZWFkQ29udHJvbGxlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGbG93VGhyZWFkQ29udHJvbGxlcjo6ZW5zdXJlUmVuZGVy
Rmxvd1RocmVhZFdpdGhOYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvRmxvd1Ro
cmVhZENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVnaW9uT3ZlcnNldFN0YXRl
Lmg6IFJlbW92ZWQuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmFwcGx5QmVmb3JlQnJlYWspOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93OjphcHBseUFmdGVyQnJlYWspOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dGcmFnbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJOYW1lZEZsb3dGcmFnbWVudDo6Z2V0UmFuZ2VzIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlck5hbWVkRmxvd0ZyYWdtZW50OjpsYXlvdXRCbG9jayk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJOYW1lZEZsb3dGcmFnbWVudDo6Y2hlY2tSZWdpb25TdHlsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJOYW1lZEZsb3dGcmFnbWVudDo6Y29tcHV0ZVN0eWxlSW5S
ZWdpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTmFtZWRGbG93RnJhZ21lbnQ6
OnNldFJlZ2lvbk9iamVjdHNSZWdpb25TdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJO
YW1lZEZsb3dGcmFnbWVudDo6c2V0UmVnaW9uT3ZlcnNldFN0YXRlKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlck5hbWVkRmxvd0ZyYWdtZW50OjpyZWdpb25PdmVyc2V0U3RhdGUg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTmFtZWRGbG93RnJhZ21l
bnQ6OnVwZGF0ZU92ZXJzZXRTdGF0ZSk6IERlbGV0ZWQuCisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlck5hbWVkRmxvd0ZyYWdtZW50Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck5hbWVk
Rmxvd1RocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6
OlJlbmRlck5hbWVkRmxvd1RocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJOYW1lZEZs
b3dUaHJlYWQ6OmNsZWFyQ29udGVudEVsZW1lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ck5hbWVkRmxvd1RocmVhZDo6cmVnaXN0ZXJOYW1lZEZsb3dDb250ZW50RWxlbWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6OnVucmVnaXN0ZXJOYW1lZEZsb3dD
b250ZW50RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6
Omhhc0NvbnRlbnRFbGVtZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck5hbWVk
Rmxvd1RocmVhZDo6Zmxvd1RocmVhZE5hbWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyTmFtZWRGbG93VGhyZWFkOjpkaXNwYXRjaFJlZ2lvbk92ZXJzZXRDaGFuZ2VFdmVudElmTmVl
ZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck5hbWVkRmxvd1RocmVhZDo6cmVnaW9uT3Zl
cnNldENoYW5nZUV2ZW50VGltZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJOYW1l
ZEZsb3dUaHJlYWQ6OnNldE1hcmtGb3JEZXN0cnVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJOYW1lZEZsb3dUaHJlYWQ6OnJlc2V0TWFya0ZvckRlc3RydWN0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlck5hbWVkRmxvd1RocmVhZDo6aXNNYXJrZWRGb3JEZXN0cnVjdGlvbiBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpuZXh0Tm9kZUluc2lkZUNvbnRlbnRFbGVtZW50KToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93VGhyZWFkLmg6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJSZWdp
b246Omluc3RhbGxGbG93VGhyZWFkKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVy
U3R5bGVDb25zdGFudHMuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvV2lsbENoYW5nZURh
dGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2lsbENoYW5nZURhdGE6OnByb3BlcnR5Q3JlYXRl
c1N0YWNraW5nQ29udGV4dCk6CisgICAgICAgICogc3R5bGUvUmVuZGVyVHJlZVBvc2l0aW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRyZWVQb3NpdGlvbjo6cHJldmlvdXNTaWJsaW5n
UmVuZGVyZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVHJlZVBvc2l0aW9uOjpu
ZXh0U2libGluZ1JlbmRlcmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRyZWVQ
b3NpdGlvbjo6aW5zZXJ0aW9uUG9zaXRpb25Gb3JGbG93VGhyZWFkKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRyZWVQb3NpdGlvbjo6aXNSZW5kZXJlclJlcGFyZW50ZWQpOiBE
ZWxldGVkLgorICAgICAgICAqIHN0eWxlL1JlbmRlclRyZWVQb3NpdGlvbi5oOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyVHJlZVBvc2l0aW9uOjpSZW5kZXJUcmVlUG9zaXRpb24pOgorICAgICAg
ICAqIHN0eWxlL1JlbmRlclRyZWVVcGRhdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clRyZWVVcGRhdGVyOjp1cGRhdGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyVHJlZVVwZGF0ZXI6OmNyZWF0ZVJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclRyZWVVcGRhdGVyOjppbnZhbGlkYXRlV2hpdGVzcGFjZU9ubHlUZXh0U2libGluZ3NBZnRl
ckF0dGFjaElmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OnJlZ2lzdGVyRWxlbWVudEZvckZs
b3dUaHJlYWRJZk5lZWRlZCk6IERlbGV0ZWQuCisgICAgICAgICogc3R5bGUvUmVuZGVyVHJlZVVw
ZGF0ZXJHZW5lcmF0ZWRDb250ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUNvbnRl
bnRSZW5kZXJlcnMpOgorICAgICAgICAqIHN0eWxlL1N0eWxlQ2hhbmdlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlN0eWxlOjpkZXRlcm1pbmVDaGFuZ2UpOgorICAgICAgICAqIHN0eWxlL1N0eWxl
VHJlZVJlc29sdmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpUcmVlUmVzb2x2ZXI6
OnN0eWxlRm9yRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6YWZmZWN0c1JlbmRl
cmVkU3VidHJlZSk6CisgICAgICAgICogc3ZnL1NWR0VsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHRWxlbWVudDo6c2hvdWxkTW92ZVRvRmxvd1RocmVhZCBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgICogc3ZnL1NWR0VsZW1lbnQuaDoKKwogMjAxNy0wOS0xOSAgUnlvc3VrZSBOaXdh
ICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBPbiBNYWMsIGRhdGFUcmFuc2ZlciBjbGFp
bXMgdG8gY29udGFpbiBVUkwgbGlzdCB3aGVuIGRyb3BwaW5nIGZpbGVzCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DTWFr
ZUxpc3RzLnR4dAkocmV2aXNpb24gMjIyMjU3KQorKysgU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTQ4OCw3ICs0ODgsNiBAQCBzZXQoV2ViQ29yZV9OT05f
U1ZHX0lETF9GSUxFUwogICAgIGNzcy9TdHlsZVNoZWV0LmlkbAogICAgIGNzcy9TdHlsZVNoZWV0
TGlzdC5pZGwKICAgICBjc3MvV2ViS2l0Q1NTTWF0cml4LmlkbAotICAgIGNzcy9XZWJLaXRDU1NS
ZWdpb25SdWxlLmlkbAogICAgIGNzcy9XZWJLaXRDU1NWaWV3cG9ydFJ1bGUuaWRsCiAKICAgICBk
b20vQW5pbWF0aW9uRXZlbnQuaWRsCkBAIC01MDYsNyArNTA1LDYgQEAgc2V0KFdlYkNvcmVfTk9O
X1NWR19JRExfRklMRVMKICAgICBkb20vRE9NRXJyb3IuaWRsCiAgICAgZG9tL0RPTUV4Y2VwdGlv
bi5pZGwKICAgICBkb20vRE9NSW1wbGVtZW50YXRpb24uaWRsCi0gICAgZG9tL0RPTU5hbWVkRmxv
d0NvbGxlY3Rpb24uaWRsCiAgICAgZG9tL0RPTVBvaW50LmlkbAogICAgIGRvbS9ET01Qb2ludElu
aXQuaWRsCiAgICAgZG9tL0RPTVBvaW50UmVhZE9ubHkuaWRsCkBAIC01ODMsNyArNTgxLDYgQEAg
c2V0KFdlYkNvcmVfTk9OX1NWR19JRExfRklMRVMKICAgICBkb20vVUlFdmVudC5pZGwKICAgICBk
b20vVUlFdmVudEluaXQuaWRsCiAgICAgZG9tL1dlYktpdEFuaW1hdGlvbkV2ZW50LmlkbAotICAg
IGRvbS9XZWJLaXROYW1lZEZsb3cuaWRsCiAgICAgZG9tL1dlYktpdFRyYW5zaXRpb25FdmVudC5p
ZGwKICAgICBkb20vV2hlZWxFdmVudC5pZGwKICAgICBkb20vWE1MRG9jdW1lbnQuaWRsCkBAIC0x
NTYxLDcgKzE1NTgsNiBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgY3NzL1RyYW5zZm9ybUZ1
bmN0aW9ucy5jcHAKICAgICBjc3MvVmlld3BvcnRTdHlsZVJlc29sdmVyLmNwcAogICAgIGNzcy9X
ZWJLaXRDU1NNYXRyaXguY3BwCi0gICAgY3NzL1dlYktpdENTU1JlZ2lvblJ1bGUuY3BwCiAgICAg
Y3NzL1dlYktpdENTU1ZpZXdwb3J0UnVsZS5jcHAKIAogICAgIGNzcy9wYXJzZXIvQ1NTQXRSdWxl
SUQuY3BwCkBAIC0xNjE1LDcgKzE2MTEsNiBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgZG9t
L0RPTUVycm9yLmNwcAogICAgIGRvbS9ET01FeGNlcHRpb24uY3BwCiAgICAgZG9tL0RPTUltcGxl
bWVudGF0aW9uLmNwcAotICAgIGRvbS9ET01OYW1lZEZsb3dDb2xsZWN0aW9uLmNwcAogICAgIGRv
bS9ET01Qb2ludFJlYWRPbmx5LmNwcAogICAgIGRvbS9ET01RdWFkLmNwcAogICAgIGRvbS9ET01S
ZWN0TGlzdC5jcHAKQEAgLTE2NzcsNyArMTY3Miw2IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAg
ICBkb20vTXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbi5jcHAKICAgICBkb20vTXV0YXRpb25S
ZWNvcmQuY3BwCiAgICAgZG9tL05hbWVOb2RlTGlzdC5jcHAKLSAgICBkb20vTmFtZWRGbG93Q29s
bGVjdGlvbi5jcHAKICAgICBkb20vTmFtZWROb2RlTWFwLmNwcAogICAgIGRvbS9OYXRpdmVOb2Rl
RmlsdGVyLmNwcAogICAgIGRvbS9Ob2RlLmNwcApAQCAtMTc0MCw3ICsxNzM0LDYgQEAgc2V0KFdl
YkNvcmVfU09VUkNFUwogICAgIGRvbS9WaWV3cG9ydEFyZ3VtZW50cy5jcHAKICAgICBkb20vVmlz
aXRlZExpbmtTdGF0ZS5jcHAKICAgICBkb20vV2ViS2l0QW5pbWF0aW9uRXZlbnQuY3BwCi0gICAg
ZG9tL1dlYktpdE5hbWVkRmxvdy5jcHAKICAgICBkb20vV2ViS2l0VHJhbnNpdGlvbkV2ZW50LmNw
cAogICAgIGRvbS9XaGVlbEV2ZW50LmNwcAogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9EZXJpdmVk
U291cmNlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMu
Y3BwCShyZXZpc2lvbiAyMjIyNTcpCisrKyBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE1OSw3ICsxNTksNiBAQAogI2luY2x1ZGUgIkpTRE9NSW1w
bGVtZW50YXRpb24uY3BwIgogI2luY2x1ZGUgIkpTRE9NTWltZVR5cGUuY3BwIgogI2luY2x1ZGUg
IkpTRE9NTWltZVR5cGVBcnJheS5jcHAiCi0jaW5jbHVkZSAiSlNET01OYW1lZEZsb3dDb2xsZWN0
aW9uLmNwcCIKICNpbmNsdWRlICJKU0RPTVBhcnNlci5jcHAiCiAjaW5jbHVkZSAiSlNET01QbHVn
aW4uY3BwIgogI2luY2x1ZGUgIkpTRE9NUGx1Z2luQXJyYXkuY3BwIgpAQCAtNjE3LDcgKzYxNiw2
IEBACiAjaW5jbHVkZSAiSlNXYXZlU2hhcGVyTm9kZS5jcHAiCiAjaW5jbHVkZSAiSlNXZWJLaXRB
bmltYXRpb25FdmVudC5jcHAiCiAjaW5jbHVkZSAiSlNXZWJLaXRDU1NNYXRyaXguY3BwIgotI2lu
Y2x1ZGUgIkpTV2ViS2l0Q1NTUmVnaW9uUnVsZS5jcHAiCiAjaW5jbHVkZSAiSlNXZWJLaXRDU1NW
aWV3cG9ydFJ1bGUuY3BwIgogI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQogI2lu
Y2x1ZGUgIkpTV2ViS2l0TWVkaWFLZXlFcnJvci5jcHAiCkBAIC02MjYsNyArNjI0LDYgQEAKICNp
bmNsdWRlICJKU1dlYktpdE1lZGlhS2V5U2Vzc2lvbi5jcHAiCiAjaW5jbHVkZSAiSlNXZWJLaXRN
ZWRpYUtleXMuY3BwIgogI2VuZGlmCi0jaW5jbHVkZSAiSlNXZWJLaXROYW1lZEZsb3cuY3BwIgog
I2luY2x1ZGUgIkpTV2ViS2l0UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlFdmVudC5jcHAiCiAj
aW5jbHVkZSAiSlNXZWJLaXRQb2ludC5jcHAiCiAjaW5jbHVkZSAiSlNXZWJLaXRUcmFuc2l0aW9u
RXZlbnQuY3BwIgpJbmRleDogU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCShyZXZpc2lvbiAy
MjIyNTcpCisrKyBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCSh3b3JraW5nIGNv
cHkpCkBAIC00MDYsNyArNDA2LDYgQEAgSlNfQklORElOR19JRExTID0gXAogICAgICQoV2ViQ29y
ZSkvY3NzL1N0eWxlU2hlZXQuaWRsIFwKICAgICAkKFdlYkNvcmUpL2Nzcy9TdHlsZVNoZWV0TGlz
dC5pZGwgXAogICAgICQoV2ViQ29yZSkvY3NzL1dlYktpdENTU01hdHJpeC5pZGwgXAotICAgICQo
V2ViQ29yZSkvY3NzL1dlYktpdENTU1JlZ2lvblJ1bGUuaWRsIFwKICAgICAkKFdlYkNvcmUpL2Nz
cy9XZWJLaXRDU1NWaWV3cG9ydFJ1bGUuaWRsIFwKICAgICAkKFdlYkNvcmUpL2RvbS9BbmltYXRp
b25FdmVudC5pZGwgXAogICAgICQoV2ViQ29yZSkvZG9tL0F0dHIuaWRsIFwKQEAgLTQyMyw3ICs0
MjIsNiBAQCBKU19CSU5ESU5HX0lETFMgPSBcCiAgICAgJChXZWJDb3JlKS9kb20vRE9NRXJyb3Iu
aWRsIFwKICAgICAkKFdlYkNvcmUpL2RvbS9ET01FeGNlcHRpb24uaWRsIFwKICAgICAkKFdlYkNv
cmUpL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5pZGwgXAotICAgICQoV2ViQ29yZSkvZG9tL0RPTU5h
bWVkRmxvd0NvbGxlY3Rpb24uaWRsIFwKICAgICAkKFdlYkNvcmUpL2RvbS9ET01Qb2ludC5pZGwg
XAogICAgICQoV2ViQ29yZSkvZG9tL0RPTVBvaW50SW5pdC5pZGwgXAogICAgICQoV2ViQ29yZSkv
ZG9tL0RPTVBvaW50UmVhZE9ubHkuaWRsIFwKQEAgLTQ5Nyw3ICs0OTUsNiBAQCBKU19CSU5ESU5H
X0lETFMgPSBcCiAgICAgJChXZWJDb3JlKS9kb20vVUlFdmVudC5pZGwgXAogICAgICQoV2ViQ29y
ZSkvZG9tL1VJRXZlbnRJbml0LmlkbCBcCiAgICAgJChXZWJDb3JlKS9kb20vV2ViS2l0QW5pbWF0
aW9uRXZlbnQuaWRsIFwKLSAgICAkKFdlYkNvcmUpL2RvbS9XZWJLaXROYW1lZEZsb3cuaWRsIFwK
ICAgICAkKFdlYkNvcmUpL2RvbS9XZWJLaXRUcmFuc2l0aW9uRXZlbnQuaWRsIFwKICAgICAkKFdl
YkNvcmUpL2RvbS9XaGVlbEV2ZW50LmlkbCBcCiAgICAgJChXZWJDb3JlKS9kb20vWE1MRG9jdW1l
bnQuaWRsIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZp
bmVzLnhjY29uZmlnCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25z
L0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCShyZXZpc2lvbiAyMjIyNTcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwkod29ya2luZyBjb3B5
KQpAQCAtNzgsNyArNzgsNiBAQCBFTkFCTEVfQ1NTX0NPTVBPU0lUSU5HID0gRU5BQkxFX0NTU19D
T01QCiBFTkFCTEVfQ1NTX0RFVklDRV9BREFQVEFUSU9OID0gOwogRU5BQkxFX0NTU19JTUFHRV9P
UklFTlRBVElPTiA9IDsKIEVOQUJMRV9DU1NfSU1BR0VfUkVTT0xVVElPTiA9IDsKLUVOQUJMRV9D
U1NfUkVHSU9OUyA9IDsKIEVOQUJMRV9DU1NfU0VMRUNUT1JTX0xFVkVMNCA9IEVOQUJMRV9DU1Nf
U0VMRUNUT1JTX0xFVkVMNDsKIEVOQUJMRV9DU1MzX1RFWFQgPSA7CiBFTkFCTEVfQ1VSU09SX1ZJ
U0lCSUxJVFkgPSBFTkFCTEVfQ1VSU09SX1ZJU0lCSUxJVFk7CkBAIC0yNDMsNCArMjQyLDQgQEAg
RU5BQkxFX0RBVEFfSU5URVJBQ1RJT05faXBob25lc2ltdWxhdG9yIAogRU5BQkxFX0RBVEFfSU5U
RVJBQ1RJT05bc2RrPWlwaG9uZW9zMTAqXSA9IDsKIEVOQUJMRV9EQVRBX0lOVEVSQUNUSU9OW3Nk
az1pcGhvbmVzaW11bGF0b3IxMCpdID0gOwogCi1GRUFUVVJFX0RFRklORVMgPSAkKEVOQUJMRV8z
RF9UUkFOU0ZPUk1TKSAkKEVOQUJMRV9BQ0NFTEVSQVRFRF8yRF9DQU5WQVMpICQoRU5BQkxFX0FD
Q0VMRVJBVEVEX09WRVJGTE9XX1NDUk9MTElORykgJChFTkFCTEVfQVBQTEVfUEFZKSAkKEVOQUJM
RV9BUFBMRV9QQVlfU0VTU0lPTl9WMykgJChFTkFCTEVfQVRUQUNITUVOVF9FTEVNRU5UKSAkKEVO
QUJMRV9BVkZfQ0FQVElPTlMpICQoRU5BQkxFX0NBQ0hFX1BBUlRJVElPTklORykgJChFTkFCTEVf
Q0hBTk5FTF9NRVNTQUdJTkcpICQoRU5BQkxFX0NPTlRFTlRfRklMVEVSSU5HKSAkKEVOQUJMRV9D
U1NfQU5JTUFUSU9OU19MRVZFTF8yKSAkKEVOQUJMRV9DU1NfQk9YX0RFQ09SQVRJT05fQlJFQUsp
ICQoRU5BQkxFX0NTU19DT01QT1NJVElORykgJChFTkFCTEVfQ1NTX0RFVklDRV9BREFQVEFUSU9O
KSAkKEVOQUJMRV9DU1NfSU1BR0VfT1JJRU5UQVRJT04pICQoRU5BQkxFX0NTU19JTUFHRV9SRVNP
TFVUSU9OKSAkKEVOQUJMRV9DU1NfUkVHSU9OUykgJChFTkFCTEVfQ1NTX1NDUk9MTF9TTkFQKSAk
KEVOQUJMRV9DU1NfU0VMRUNUT1JTX0xFVkVMNCkgJChFTkFCTEVfQ1NTX1RSQUlMSU5HX1dPUkQp
ICQoRU5BQkxFX0NTUzNfVEVYVCkgJChFTkFCTEVfQ1VSU09SX1ZJU0lCSUxJVFkpICQoRU5BQkxF
X0NVU1RPTV9TQ0hFTUVfSEFORExFUikgJChFTkFCTEVfREFTSEJPQVJEX1NVUFBPUlQpICQoRU5B
QkxFX0RBVEFfSU5URVJBQ1RJT04pICQoRU5BQkxFX0RBVEFDVUVfVkFMVUUpICQoRU5BQkxFX0RB
VEFMSVNUX0VMRU1FTlQpICQoRU5BQkxFX0RFVklDRV9PUklFTlRBVElPTikgJChFTkFCTEVfRFJB
R19TVVBQT1JUKSAkKEVOQUJMRV9FTkNSWVBURURfTUVESUEpICQoRU5BQkxFX0ZBU1RfSklUX1BF
Uk1JU1NJT05TKSAkKEVOQUJMRV9GSUxURVJTX0xFVkVMXzIpICQoRU5BQkxFX0ZUTF9KSVQpICQo
RU5BQkxFX0ZVTExTQ1JFRU5fQVBJKSAkKEVOQUJMRV9HQU1FUEFEKSAkKEVOQUJMRV9HRU9MT0NB
VElPTikgJChFTkFCTEVfSUNPTkRBVEFCQVNFKSAkKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFX0lO
X1dPUktFUlMpICQoRU5BQkxFX0lOREVYRURfREFUQUJBU0UpICQoRU5BQkxFX0lOUFVUX1RZUEVf
Q09MT1JfUE9QT1ZFUikgJChFTkFCTEVfSU5QVVRfVFlQRV9DT0xPUikgJChFTkFCTEVfSU5QVVRf
VFlQRV9EQVRFKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1FX0lOQ09NUExFVEUpICQoRU5B
QkxFX0lOUFVUX1RZUEVfREFURVRJTUVMT0NBTCkgJChFTkFCTEVfSU5QVVRfVFlQRV9NT05USCkg
JChFTkFCTEVfSU5QVVRfVFlQRV9USU1FKSAkKEVOQUJMRV9JTlBVVF9UWVBFX1dFRUspICQoRU5B
QkxFX0lOVEVSU0VDVElPTl9PQlNFUlZFUikgJChFTkFCTEVfSU5UTCkgJChFTkFCTEVfSU9TX0dF
U1RVUkVfRVZFTlRTKSAkKEVOQUJMRV9JT1NfVE9VQ0hfRVZFTlRTKSAkKEVOQUJMRV9KSVQpICQo
RU5BQkxFX0tFWUJPQVJEX0tFWV9BVFRSSUJVVEUpICQoRU5BQkxFX0tFWUJPQVJEX0NPREVfQVRU
UklCVVRFKSAkKEVOQUJMRV9MRUdBQ1lfQ1NTX1ZFTkRPUl9QUkVGSVhFUykgJChFTkFCTEVfTEVH
QUNZX0VOQ1JZUFRFRF9NRURJQSkgJChFTkFCTEVfTEVHQUNZX1ZFTkRPUl9QUkVGSVhFUykgJChF
TkFCTEVfTEVUVEVSUFJFU1MpICQoRU5BQkxFX0xJTktfUFJFRkVUQ0gpICQoRU5BQkxFX01BQ19H
RVNUVVJFX0VWRU5UUykgJChFTkFCTEVfTUFUSE1MKSAkKEVOQUJMRV9NRURJQV9DQVBUVVJFKSAk
KEVOQUJMRV9NRURJQV9DT05UUk9MU19TQ1JJUFQpICQoRU5BQkxFX01FRElBX1NFU1NJT04pICQo
RU5BQkxFX01FRElBX1NPVVJDRSkgJChFTkFCTEVfTUVESUFfU1RBVElTVElDUykgJChFTkFCTEVf
TUVESUFfU1RSRUFNKSAkKEVOQUJMRV9NRVRFUl9FTEVNRU5UKSAkKEVOQUJMRV9NSFRNTCkgJChF
TkFCTEVfTU9VU0VfQ1VSU09SX1NDQUxFKSAkKEVOQUJMRV9OQVZJR0FUT1JfQ09OVEVOVF9VVElM
UykgJChFTkFCTEVfTkFWSUdBVE9SX1NUQU5EQUxPTkUpICQoRU5BQkxFX05PVElGSUNBVElPTlMp
ICQoRU5BQkxFX1BBWU1FTlRfUkVRVUVTVCkgJChFTkFCTEVfUERGS0lUX1BMVUdJTikgJChFTkFC
TEVfUE9JTlRFUl9MT0NLKSAkKEVOQUJMRV9QVUJMSUNfU1VGRklYX0xJU1QpICQoRU5BQkxFX1FV
T1RBKSAkKEVOQUJMRV9SRU1PVEVfSU5TUEVDVE9SKSAkKEVOQUJMRV9SRVNPTFVUSU9OX01FRElB
X1FVRVJZKSAkKEVOQUJMRV9SRVNPVVJDRV9VU0FHRSkgJChFTkFCTEVfUlVCQkVSX0JBTkRJTkcp
ICQoRU5BQkxFX1NFUlZJQ0VfQ09OVFJPTFMpICQoRU5BQkxFX1NFUlZJQ0VfV09SS0VSKSAkKEVO
QUJMRV9TUEVFQ0hfU1lOVEhFU0lTKSAkKEVOQUJMRV9TVFJFQU1TX0FQSSkgJChFTkFCTEVfU1VC
VExFX0NSWVBUTykgJChFTkFCTEVfU1ZHX0ZPTlRTKSAkKEVOQUJMRV9URUxFUEhPTkVfTlVNQkVS
X0RFVEVDVElPTikgJChFTkFCTEVfVEVYVF9BVVRPU0laSU5HKSAkKEVOQUJMRV9UT1VDSF9FVkVO
VFMpICQoRU5BQkxFX1RPVUNIX0lDT05fTE9BRElORykgJChFTkFCTEVfVVNFUlNFTEVDVF9BTEwp
ICQoRU5BQkxFX1ZBUklBVElPTl9GT05UUykgJChFTkFCTEVfVklERU9fUFJFU0VOVEFUSU9OX01P
REUpICQoRU5BQkxFX01BQ19WSURFT19UT09MQk9YKSAkKEVOQUJMRV9WSURFT19UUkFDSykgJChF
TkFCTEVfVklERU8pICQoRU5BQkxFX1dFQl9BTklNQVRJT05TKSAkKEVOQUJMRV9XRUJfQVVESU8p
ICQoRU5BQkxFX1dFQl9SVEMpICQoRU5BQkxFX1dFQkFTU0VNQkxZKSAkKEVOQUJMRV9XRUJHTCkg
JChFTkFCTEVfV0VCR0wyKSAkKEVOQUJMRV9XRUJHUFUpICQoRU5BQkxFX1dJUkVMRVNTX1BMQVlC
QUNLX1RBUkdFVCkgJChFTkFCTEVfWFNMVCk7CitGRUFUVVJFX0RFRklORVMgPSAkKEVOQUJMRV8z
RF9UUkFOU0ZPUk1TKSAkKEVOQUJMRV9BQ0NFTEVSQVRFRF8yRF9DQU5WQVMpICQoRU5BQkxFX0FD
Q0VMRVJBVEVEX09WRVJGTE9XX1NDUk9MTElORykgJChFTkFCTEVfQVBQTEVfUEFZKSAkKEVOQUJM
RV9BUFBMRV9QQVlfU0VTU0lPTl9WMykgJChFTkFCTEVfQVRUQUNITUVOVF9FTEVNRU5UKSAkKEVO
QUJMRV9BVkZfQ0FQVElPTlMpICQoRU5BQkxFX0NBQ0hFX1BBUlRJVElPTklORykgJChFTkFCTEVf
Q0hBTk5FTF9NRVNTQUdJTkcpICQoRU5BQkxFX0NPTlRFTlRfRklMVEVSSU5HKSAkKEVOQUJMRV9D
U1NfQU5JTUFUSU9OU19MRVZFTF8yKSAkKEVOQUJMRV9DU1NfQk9YX0RFQ09SQVRJT05fQlJFQUsp
ICQoRU5BQkxFX0NTU19DT01QT1NJVElORykgJChFTkFCTEVfQ1NTX0RFVklDRV9BREFQVEFUSU9O
KSAkKEVOQUJMRV9DU1NfSU1BR0VfT1JJRU5UQVRJT04pICQoRU5BQkxFX0NTU19JTUFHRV9SRVNP
TFVUSU9OKSAkKEVOQUJMRV9DU1NfU0NST0xMX1NOQVApICQoRU5BQkxFX0NTU19TRUxFQ1RPUlNf
TEVWRUw0KSAkKEVOQUJMRV9DU1NfVFJBSUxJTkdfV09SRCkgJChFTkFCTEVfQ1NTM19URVhUKSAk
KEVOQUJMRV9DVVJTT1JfVklTSUJJTElUWSkgJChFTkFCTEVfQ1VTVE9NX1NDSEVNRV9IQU5ETEVS
KSAkKEVOQUJMRV9EQVNIQk9BUkRfU1VQUE9SVCkgJChFTkFCTEVfREFUQV9JTlRFUkFDVElPTikg
JChFTkFCTEVfREFUQUNVRV9WQUxVRSkgJChFTkFCTEVfREFUQUxJU1RfRUxFTUVOVCkgJChFTkFC
TEVfREVWSUNFX09SSUVOVEFUSU9OKSAkKEVOQUJMRV9EUkFHX1NVUFBPUlQpICQoRU5BQkxFX0VO
Q1JZUFRFRF9NRURJQSkgJChFTkFCTEVfRkFTVF9KSVRfUEVSTUlTU0lPTlMpICQoRU5BQkxFX0ZJ
TFRFUlNfTEVWRUxfMikgJChFTkFCTEVfRlRMX0pJVCkgJChFTkFCTEVfRlVMTFNDUkVFTl9BUEkp
ICQoRU5BQkxFX0dBTUVQQUQpICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9JQ09OREFU
QUJBU0UpICQoRU5BQkxFX0lOREVYRURfREFUQUJBU0VfSU5fV09SS0VSUykgJChFTkFCTEVfSU5E
RVhFRF9EQVRBQkFTRSkgJChFTkFCTEVfSU5QVVRfVFlQRV9DT0xPUl9QT1BPVkVSKSAkKEVOQUJM
RV9JTlBVVF9UWVBFX0NPTE9SKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEUpICQoRU5BQkxFX0lO
UFVUX1RZUEVfREFURVRJTUVfSU5DT01QTEVURSkgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFVElN
RUxPQ0FMKSAkKEVOQUJMRV9JTlBVVF9UWVBFX01PTlRIKSAkKEVOQUJMRV9JTlBVVF9UWVBFX1RJ
TUUpICQoRU5BQkxFX0lOUFVUX1RZUEVfV0VFSykgJChFTkFCTEVfSU5URVJTRUNUSU9OX09CU0VS
VkVSKSAkKEVOQUJMRV9JTlRMKSAkKEVOQUJMRV9JT1NfR0VTVFVSRV9FVkVOVFMpICQoRU5BQkxF
X0lPU19UT1VDSF9FVkVOVFMpICQoRU5BQkxFX0pJVCkgJChFTkFCTEVfS0VZQk9BUkRfS0VZX0FU
VFJJQlVURSkgJChFTkFCTEVfS0VZQk9BUkRfQ09ERV9BVFRSSUJVVEUpICQoRU5BQkxFX0xFR0FD
WV9DU1NfVkVORE9SX1BSRUZJWEVTKSAkKEVOQUJMRV9MRUdBQ1lfRU5DUllQVEVEX01FRElBKSAk
KEVOQUJMRV9MRUdBQ1lfVkVORE9SX1BSRUZJWEVTKSAkKEVOQUJMRV9MRVRURVJQUkVTUykgJChF
TkFCTEVfTElOS19QUkVGRVRDSCkgJChFTkFCTEVfTUFDX0dFU1RVUkVfRVZFTlRTKSAkKEVOQUJM
RV9NQVRITUwpICQoRU5BQkxFX01FRElBX0NBUFRVUkUpICQoRU5BQkxFX01FRElBX0NPTlRST0xT
X1NDUklQVCkgJChFTkFCTEVfTUVESUFfU0VTU0lPTikgJChFTkFCTEVfTUVESUFfU09VUkNFKSAk
KEVOQUJMRV9NRURJQV9TVEFUSVNUSUNTKSAkKEVOQUJMRV9NRURJQV9TVFJFQU0pICQoRU5BQkxF
X01FVEVSX0VMRU1FTlQpICQoRU5BQkxFX01IVE1MKSAkKEVOQUJMRV9NT1VTRV9DVVJTT1JfU0NB
TEUpICQoRU5BQkxFX05BVklHQVRPUl9DT05URU5UX1VUSUxTKSAkKEVOQUJMRV9OQVZJR0FUT1Jf
U1RBTkRBTE9ORSkgJChFTkFCTEVfTk9USUZJQ0FUSU9OUykgJChFTkFCTEVfUEFZTUVOVF9SRVFV
RVNUKSAkKEVOQUJMRV9QREZLSVRfUExVR0lOKSAkKEVOQUJMRV9QT0lOVEVSX0xPQ0spICQoRU5B
QkxFX1BVQkxJQ19TVUZGSVhfTElTVCkgJChFTkFCTEVfUVVPVEEpICQoRU5BQkxFX1JFTU9URV9J
TlNQRUNUT1IpICQoRU5BQkxFX1JFU09MVVRJT05fTUVESUFfUVVFUlkpICQoRU5BQkxFX1JFU09V
UkNFX1VTQUdFKSAkKEVOQUJMRV9SVUJCRVJfQkFORElORykgJChFTkFCTEVfU0VSVklDRV9DT05U
Uk9MUykgJChFTkFCTEVfU0VSVklDRV9XT1JLRVIpICQoRU5BQkxFX1NQRUVDSF9TWU5USEVTSVMp
ICQoRU5BQkxFX1NUUkVBTVNfQVBJKSAkKEVOQUJMRV9TVUJUTEVfQ1JZUFRPKSAkKEVOQUJMRV9T
VkdfRk9OVFMpICQoRU5BQkxFX1RFTEVQSE9ORV9OVU1CRVJfREVURUNUSU9OKSAkKEVOQUJMRV9U
RVhUX0FVVE9TSVpJTkcpICQoRU5BQkxFX1RPVUNIX0VWRU5UUykgJChFTkFCTEVfVE9VQ0hfSUNP
Tl9MT0FESU5HKSAkKEVOQUJMRV9VU0VSU0VMRUNUX0FMTCkgJChFTkFCTEVfVkFSSUFUSU9OX0ZP
TlRTKSAkKEVOQUJMRV9WSURFT19QUkVTRU5UQVRJT05fTU9ERSkgJChFTkFCTEVfTUFDX1ZJREVP
X1RPT0xCT1gpICQoRU5BQkxFX1ZJREVPX1RSQUNLKSAkKEVOQUJMRV9WSURFTykgJChFTkFCTEVf
V0VCX0FOSU1BVElPTlMpICQoRU5BQkxFX1dFQl9BVURJTykgJChFTkFCTEVfV0VCX1JUQykgJChF
TkFCTEVfV0VCQVNTRU1CTFkpICQoRU5BQkxFX1dFQkdMKSAkKEVOQUJMRV9XRUJHTDIpICQoRU5B
QkxFX1dFQkdQVSkgJChFTkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAkKEVOQUJMRV9Y
U0xUKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwkocmV2aXNpb24gMjIyMjU3KQorKysgU291cmNl
L1dlYkNvcmUvUEFML0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisy
MDE3LTA5LTE5ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBS
ZW1vdmUgRE9NIGFuZCBzdHlsaW5nIHN1cHBvcnQgZm9yIENTUyBSZWdpb25zCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzcyMjEKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENvbmZpZ3VyYXRpb25zL0Zl
YXR1cmVEZWZpbmVzLnhjY29uZmlnOgorCiAyMDE3LTA5LTE4ICBBbmR5IEVzdGVzICA8YWVzdGVz
QGFwcGxlLmNvbT4KIAogICAgICAgICBbTWFjXSBVcHN0cmVhbSBtaXNjZWxsYW5lb3VzIFdlYktp
dFN5c3RlbUludGVyZmFjZSBmdW5jdGlvbnMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BBTC9Db25m
aWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9QQUwvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcJKHJldmlz
aW9uIDIyMjI1NykKKysrIFNvdXJjZS9XZWJDb3JlL1BBTC9Db25maWd1cmF0aW9ucy9GZWF0dXJl
RGVmaW5lcy54Y2NvbmZpZwkod29ya2luZyBjb3B5KQpAQCAtNzgsNyArNzgsNiBAQCBFTkFCTEVf
Q1NTX0NPTVBPU0lUSU5HID0gRU5BQkxFX0NTU19DT01QCiBFTkFCTEVfQ1NTX0RFVklDRV9BREFQ
VEFUSU9OID0gOwogRU5BQkxFX0NTU19JTUFHRV9PUklFTlRBVElPTiA9IDsKIEVOQUJMRV9DU1Nf
SU1BR0VfUkVTT0xVVElPTiA9IDsKLUVOQUJMRV9DU1NfUkVHSU9OUyA9IDsKIEVOQUJMRV9DU1Nf
U0VMRUNUT1JTX0xFVkVMNCA9IEVOQUJMRV9DU1NfU0VMRUNUT1JTX0xFVkVMNDsKIEVOQUJMRV9D
U1MzX1RFWFQgPSA7CiBFTkFCTEVfQ1VSU09SX1ZJU0lCSUxJVFkgPSBFTkFCTEVfQ1VSU09SX1ZJ
U0lCSUxJVFk7CkBAIC0yNDMsNCArMjQyLDQgQEAgRU5BQkxFX0RBVEFfSU5URVJBQ1RJT05faXBo
b25lc2ltdWxhdG9yIAogRU5BQkxFX0RBVEFfSU5URVJBQ1RJT05bc2RrPWlwaG9uZW9zMTAqXSA9
IDsKIEVOQUJMRV9EQVRBX0lOVEVSQUNUSU9OW3Nkaz1pcGhvbmVzaW11bGF0b3IxMCpdID0gOwog
Ci1GRUFUVVJFX0RFRklORVMgPSAkKEVOQUJMRV8zRF9UUkFOU0ZPUk1TKSAkKEVOQUJMRV9BQ0NF
TEVSQVRFRF8yRF9DQU5WQVMpICQoRU5BQkxFX0FDQ0VMRVJBVEVEX09WRVJGTE9XX1NDUk9MTElO
RykgJChFTkFCTEVfQVBQTEVfUEFZKSAkKEVOQUJMRV9BUFBMRV9QQVlfU0VTU0lPTl9WMykgJChF
TkFCTEVfQVRUQUNITUVOVF9FTEVNRU5UKSAkKEVOQUJMRV9BVkZfQ0FQVElPTlMpICQoRU5BQkxF
X0NBQ0hFX1BBUlRJVElPTklORykgJChFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcpICQoRU5BQkxF
X0NPTlRFTlRfRklMVEVSSU5HKSAkKEVOQUJMRV9DU1NfQU5JTUFUSU9OU19MRVZFTF8yKSAkKEVO
QUJMRV9DU1NfQk9YX0RFQ09SQVRJT05fQlJFQUspICQoRU5BQkxFX0NTU19DT01QT1NJVElORykg
JChFTkFCTEVfQ1NTX0RFVklDRV9BREFQVEFUSU9OKSAkKEVOQUJMRV9DU1NfSU1BR0VfT1JJRU5U
QVRJT04pICQoRU5BQkxFX0NTU19JTUFHRV9SRVNPTFVUSU9OKSAkKEVOQUJMRV9DU1NfUkVHSU9O
UykgJChFTkFCTEVfQ1NTX1NDUk9MTF9TTkFQKSAkKEVOQUJMRV9DU1NfU0VMRUNUT1JTX0xFVkVM
NCkgJChFTkFCTEVfQ1NTX1RSQUlMSU5HX1dPUkQpICQoRU5BQkxFX0NTUzNfVEVYVCkgJChFTkFC
TEVfQ1VSU09SX1ZJU0lCSUxJVFkpICQoRU5BQkxFX0NVU1RPTV9TQ0hFTUVfSEFORExFUikgJChF
TkFCTEVfREFTSEJPQVJEX1NVUFBPUlQpICQoRU5BQkxFX0RBVEFfSU5URVJBQ1RJT04pICQoRU5B
QkxFX0RBVEFDVUVfVkFMVUUpICQoRU5BQkxFX0RBVEFMSVNUX0VMRU1FTlQpICQoRU5BQkxFX0RF
VklDRV9PUklFTlRBVElPTikgJChFTkFCTEVfRFJBR19TVVBQT1JUKSAkKEVOQUJMRV9FTkNSWVBU
RURfTUVESUEpICQoRU5BQkxFX0ZBU1RfSklUX1BFUk1JU1NJT05TKSAkKEVOQUJMRV9GSUxURVJT
X0xFVkVMXzIpICQoRU5BQkxFX0ZUTF9KSVQpICQoRU5BQkxFX0ZVTExTQ1JFRU5fQVBJKSAkKEVO
QUJMRV9HQU1FUEFEKSAkKEVOQUJMRV9HRU9MT0NBVElPTikgJChFTkFCTEVfSUNPTkRBVEFCQVNF
KSAkKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFX0lOX1dPUktFUlMpICQoRU5BQkxFX0lOREVYRURf
REFUQUJBU0UpICQoRU5BQkxFX0lOUFVUX1RZUEVfQ09MT1JfUE9QT1ZFUikgJChFTkFCTEVfSU5Q
VVRfVFlQRV9DT0xPUikgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFKSAkKEVOQUJMRV9JTlBVVF9U
WVBFX0RBVEVUSU1FX0lOQ09NUExFVEUpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURVRJTUVMT0NB
TCkgJChFTkFCTEVfSU5QVVRfVFlQRV9NT05USCkgJChFTkFCTEVfSU5QVVRfVFlQRV9USU1FKSAk
KEVOQUJMRV9JTlBVVF9UWVBFX1dFRUspICQoRU5BQkxFX0lOVEVSU0VDVElPTl9PQlNFUlZFUikg
JChFTkFCTEVfSU5UTCkgJChFTkFCTEVfSU9TX0dFU1RVUkVfRVZFTlRTKSAkKEVOQUJMRV9JT1Nf
VE9VQ0hfRVZFTlRTKSAkKEVOQUJMRV9KSVQpICQoRU5BQkxFX0tFWUJPQVJEX0tFWV9BVFRSSUJV
VEUpICQoRU5BQkxFX0tFWUJPQVJEX0NPREVfQVRUUklCVVRFKSAkKEVOQUJMRV9MRUdBQ1lfQ1NT
X1ZFTkRPUl9QUkVGSVhFUykgJChFTkFCTEVfTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkgJChFTkFC
TEVfTEVHQUNZX1ZFTkRPUl9QUkVGSVhFUykgJChFTkFCTEVfTEVUVEVSUFJFU1MpICQoRU5BQkxF
X0xJTktfUFJFRkVUQ0gpICQoRU5BQkxFX01BQ19HRVNUVVJFX0VWRU5UUykgJChFTkFCTEVfTUFU
SE1MKSAkKEVOQUJMRV9NRURJQV9DQVBUVVJFKSAkKEVOQUJMRV9NRURJQV9DT05UUk9MU19TQ1JJ
UFQpICQoRU5BQkxFX01FRElBX1NFU1NJT04pICQoRU5BQkxFX01FRElBX1NPVVJDRSkgJChFTkFC
TEVfTUVESUFfU1RBVElTVElDUykgJChFTkFCTEVfTUVESUFfU1RSRUFNKSAkKEVOQUJMRV9NRVRF
Ul9FTEVNRU5UKSAkKEVOQUJMRV9NSFRNTCkgJChFTkFCTEVfTU9VU0VfQ1VSU09SX1NDQUxFKSAk
KEVOQUJMRV9OQVZJR0FUT1JfQ09OVEVOVF9VVElMUykgJChFTkFCTEVfTkFWSUdBVE9SX1NUQU5E
QUxPTkUpICQoRU5BQkxFX05PVElGSUNBVElPTlMpICQoRU5BQkxFX1BBWU1FTlRfUkVRVUVTVCkg
JChFTkFCTEVfUERGS0lUX1BMVUdJTikgJChFTkFCTEVfUE9JTlRFUl9MT0NLKSAkKEVOQUJMRV9Q
VUJMSUNfU1VGRklYX0xJU1QpICQoRU5BQkxFX1FVT1RBKSAkKEVOQUJMRV9SRU1PVEVfSU5TUEVD
VE9SKSAkKEVOQUJMRV9SRVNPTFVUSU9OX01FRElBX1FVRVJZKSAkKEVOQUJMRV9SRVNPVVJDRV9V
U0FHRSkgJChFTkFCTEVfUlVCQkVSX0JBTkRJTkcpICQoRU5BQkxFX1NFUlZJQ0VfQ09OVFJPTFMp
ICQoRU5BQkxFX1NFUlZJQ0VfV09SS0VSKSAkKEVOQUJMRV9TUEVFQ0hfU1lOVEhFU0lTKSAkKEVO
QUJMRV9TVFJFQU1TX0FQSSkgJChFTkFCTEVfU1VCVExFX0NSWVBUTykgJChFTkFCTEVfU1ZHX0ZP
TlRTKSAkKEVOQUJMRV9URUxFUEhPTkVfTlVNQkVSX0RFVEVDVElPTikgJChFTkFCTEVfVEVYVF9B
VVRPU0laSU5HKSAkKEVOQUJMRV9UT1VDSF9FVkVOVFMpICQoRU5BQkxFX1RPVUNIX0lDT05fTE9B
RElORykgJChFTkFCTEVfVVNFUlNFTEVDVF9BTEwpICQoRU5BQkxFX1ZBUklBVElPTl9GT05UUykg
JChFTkFCTEVfVklERU9fUFJFU0VOVEFUSU9OX01PREUpICQoRU5BQkxFX01BQ19WSURFT19UT09M
Qk9YKSAkKEVOQUJMRV9WSURFT19UUkFDSykgJChFTkFCTEVfVklERU8pICQoRU5BQkxFX1dFQl9B
TklNQVRJT05TKSAkKEVOQUJMRV9XRUJfQVVESU8pICQoRU5BQkxFX1dFQl9SVEMpICQoRU5BQkxF
X1dFQkFTU0VNQkxZKSAkKEVOQUJMRV9XRUJHTCkgJChFTkFCTEVfV0VCR0wyKSAkKEVOQUJMRV9X
RUJHUFUpICQoRU5BQkxFX1dJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJChFTkFCTEVfWFNMVCk7
CitGRUFUVVJFX0RFRklORVMgPSAkKEVOQUJMRV8zRF9UUkFOU0ZPUk1TKSAkKEVOQUJMRV9BQ0NF
TEVSQVRFRF8yRF9DQU5WQVMpICQoRU5BQkxFX0FDQ0VMRVJBVEVEX09WRVJGTE9XX1NDUk9MTElO
RykgJChFTkFCTEVfQVBQTEVfUEFZKSAkKEVOQUJMRV9BUFBMRV9QQVlfU0VTU0lPTl9WMykgJChF
TkFCTEVfQVRUQUNITUVOVF9FTEVNRU5UKSAkKEVOQUJMRV9BVkZfQ0FQVElPTlMpICQoRU5BQkxF
X0NBQ0hFX1BBUlRJVElPTklORykgJChFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcpICQoRU5BQkxF
X0NPTlRFTlRfRklMVEVSSU5HKSAkKEVOQUJMRV9DU1NfQU5JTUFUSU9OU19MRVZFTF8yKSAkKEVO
QUJMRV9DU1NfQk9YX0RFQ09SQVRJT05fQlJFQUspICQoRU5BQkxFX0NTU19DT01QT1NJVElORykg
JChFTkFCTEVfQ1NTX0RFVklDRV9BREFQVEFUSU9OKSAkKEVOQUJMRV9DU1NfSU1BR0VfT1JJRU5U
QVRJT04pICQoRU5BQkxFX0NTU19JTUFHRV9SRVNPTFVUSU9OKSAkKEVOQUJMRV9DU1NfU0NST0xM
X1NOQVApICQoRU5BQkxFX0NTU19TRUxFQ1RPUlNfTEVWRUw0KSAkKEVOQUJMRV9DU1NfVFJBSUxJ
TkdfV09SRCkgJChFTkFCTEVfQ1NTM19URVhUKSAkKEVOQUJMRV9DVVJTT1JfVklTSUJJTElUWSkg
JChFTkFCTEVfQ1VTVE9NX1NDSEVNRV9IQU5ETEVSKSAkKEVOQUJMRV9EQVNIQk9BUkRfU1VQUE9S
VCkgJChFTkFCTEVfREFUQV9JTlRFUkFDVElPTikgJChFTkFCTEVfREFUQUNVRV9WQUxVRSkgJChF
TkFCTEVfREFUQUxJU1RfRUxFTUVOVCkgJChFTkFCTEVfREVWSUNFX09SSUVOVEFUSU9OKSAkKEVO
QUJMRV9EUkFHX1NVUFBPUlQpICQoRU5BQkxFX0VOQ1JZUFRFRF9NRURJQSkgJChFTkFCTEVfRkFT
VF9KSVRfUEVSTUlTU0lPTlMpICQoRU5BQkxFX0ZJTFRFUlNfTEVWRUxfMikgJChFTkFCTEVfRlRM
X0pJVCkgJChFTkFCTEVfRlVMTFNDUkVFTl9BUEkpICQoRU5BQkxFX0dBTUVQQUQpICQoRU5BQkxF
X0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9JQ09OREFUQUJBU0UpICQoRU5BQkxFX0lOREVYRURfREFU
QUJBU0VfSU5fV09SS0VSUykgJChFTkFCTEVfSU5ERVhFRF9EQVRBQkFTRSkgJChFTkFCTEVfSU5Q
VVRfVFlQRV9DT0xPUl9QT1BPVkVSKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0NPTE9SKSAkKEVOQUJM
RV9JTlBVVF9UWVBFX0RBVEUpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURVRJTUVfSU5DT01QTEVU
RSkgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFVElNRUxPQ0FMKSAkKEVOQUJMRV9JTlBVVF9UWVBF
X01PTlRIKSAkKEVOQUJMRV9JTlBVVF9UWVBFX1RJTUUpICQoRU5BQkxFX0lOUFVUX1RZUEVfV0VF
SykgJChFTkFCTEVfSU5URVJTRUNUSU9OX09CU0VSVkVSKSAkKEVOQUJMRV9JTlRMKSAkKEVOQUJM
RV9JT1NfR0VTVFVSRV9FVkVOVFMpICQoRU5BQkxFX0lPU19UT1VDSF9FVkVOVFMpICQoRU5BQkxF
X0pJVCkgJChFTkFCTEVfS0VZQk9BUkRfS0VZX0FUVFJJQlVURSkgJChFTkFCTEVfS0VZQk9BUkRf
Q09ERV9BVFRSSUJVVEUpICQoRU5BQkxFX0xFR0FDWV9DU1NfVkVORE9SX1BSRUZJWEVTKSAkKEVO
QUJMRV9MRUdBQ1lfRU5DUllQVEVEX01FRElBKSAkKEVOQUJMRV9MRUdBQ1lfVkVORE9SX1BSRUZJ
WEVTKSAkKEVOQUJMRV9MRVRURVJQUkVTUykgJChFTkFCTEVfTElOS19QUkVGRVRDSCkgJChFTkFC
TEVfTUFDX0dFU1RVUkVfRVZFTlRTKSAkKEVOQUJMRV9NQVRITUwpICQoRU5BQkxFX01FRElBX0NB
UFRVUkUpICQoRU5BQkxFX01FRElBX0NPTlRST0xTX1NDUklQVCkgJChFTkFCTEVfTUVESUFfU0VT
U0lPTikgJChFTkFCTEVfTUVESUFfU09VUkNFKSAkKEVOQUJMRV9NRURJQV9TVEFUSVNUSUNTKSAk
KEVOQUJMRV9NRURJQV9TVFJFQU0pICQoRU5BQkxFX01FVEVSX0VMRU1FTlQpICQoRU5BQkxFX01I
VE1MKSAkKEVOQUJMRV9NT1VTRV9DVVJTT1JfU0NBTEUpICQoRU5BQkxFX05BVklHQVRPUl9DT05U
RU5UX1VUSUxTKSAkKEVOQUJMRV9OQVZJR0FUT1JfU1RBTkRBTE9ORSkgJChFTkFCTEVfTk9USUZJ
Q0FUSU9OUykgJChFTkFCTEVfUEFZTUVOVF9SRVFVRVNUKSAkKEVOQUJMRV9QREZLSVRfUExVR0lO
KSAkKEVOQUJMRV9QT0lOVEVSX0xPQ0spICQoRU5BQkxFX1BVQkxJQ19TVUZGSVhfTElTVCkgJChF
TkFCTEVfUVVPVEEpICQoRU5BQkxFX1JFTU9URV9JTlNQRUNUT1IpICQoRU5BQkxFX1JFU09MVVRJ
T05fTUVESUFfUVVFUlkpICQoRU5BQkxFX1JFU09VUkNFX1VTQUdFKSAkKEVOQUJMRV9SVUJCRVJf
QkFORElORykgJChFTkFCTEVfU0VSVklDRV9DT05UUk9MUykgJChFTkFCTEVfU0VSVklDRV9XT1JL
RVIpICQoRU5BQkxFX1NQRUVDSF9TWU5USEVTSVMpICQoRU5BQkxFX1NUUkVBTVNfQVBJKSAkKEVO
QUJMRV9TVUJUTEVfQ1JZUFRPKSAkKEVOQUJMRV9TVkdfRk9OVFMpICQoRU5BQkxFX1RFTEVQSE9O
RV9OVU1CRVJfREVURUNUSU9OKSAkKEVOQUJMRV9URVhUX0FVVE9TSVpJTkcpICQoRU5BQkxFX1RP
VUNIX0VWRU5UUykgJChFTkFCTEVfVE9VQ0hfSUNPTl9MT0FESU5HKSAkKEVOQUJMRV9VU0VSU0VM
RUNUX0FMTCkgJChFTkFCTEVfVkFSSUFUSU9OX0ZPTlRTKSAkKEVOQUJMRV9WSURFT19QUkVTRU5U
QVRJT05fTU9ERSkgJChFTkFCTEVfTUFDX1ZJREVPX1RPT0xCT1gpICQoRU5BQkxFX1ZJREVPX1RS
QUNLKSAkKEVOQUJMRV9WSURFTykgJChFTkFCTEVfV0VCX0FOSU1BVElPTlMpICQoRU5BQkxFX1dF
Ql9BVURJTykgJChFTkFCTEVfV0VCX1JUQykgJChFTkFCTEVfV0VCQVNTRU1CTFkpICQoRU5BQkxF
X1dFQkdMKSAkKEVOQUJMRV9XRUJHTDIpICQoRU5BQkxFX1dFQkdQVSkgJChFTkFCTEVfV0lSRUxF
U1NfUExBWUJBQ0tfVEFSR0VUKSAkKEVOQUJMRV9YU0xUKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDIyMjI1
NykKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
d29ya2luZyBjb3B5KQpAQCAtMjUyOCwxMiArMjUyOCw2IEBACiAJCTUyQjBENEJFMUM1N0ZEMUUw
MDc3Q0U1MyAvKiBQbGF0Zm9ybVZpZXcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUyQjBENEJEMUM1N0ZEMUUwMDc3Q0U1MyAvKiBQbGF0Zm9ybVZpZXcu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MkIw
RDRDMDFDNTdGRDY2MDA3N0NFNTMgLyogVmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyQjBENEJGMUM1
N0ZENjYwMDc3Q0U1MyAvKiBWaWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUyQjBENEMyMUM1N0ZG
OTEwMDc3Q0U1MyAvKiBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyQjBENEMxMUM1N0ZGOTEwMDc3Q0U1
MyAvKiBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk1MkI2QzlDMjE1RTNGNERGMDA2OTBCMDUgLyog
RE9NTmFtZWRGbG93Q29sbGVjdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MkI2QzlCRDE1RTNGNERGMDA2OTBCMDUgLyogRE9NTmFtZWRGbG93
Q29sbGVjdGlvbi5jcHAgKi87IH07Ci0JCTUyQjZDOUMzMTVFM0Y0REYwMDY5MEIwNSAvKiBET01O
YW1lZEZsb3dDb2xsZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MkI2QzlCRTE1RTNGNERGMDA2OTBCMDUgLyogRE9NTmFtZWRGbG93Q29sbGVj
dGlvbi5oICovOyB9OwotCQk1MkI2QzlDNTE1RTNGNERGMDA2OTBCMDUgLyogTmFtZWRGbG93Q29s
bGVjdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MkI2QzlDMDE1RTNGNERGMDA2OTBCMDUgLyogTmFtZWRGbG93Q29sbGVjdGlvbi5jcHAgKi87
IH07Ci0JCTUyQjZDOUM2MTVFM0Y0REYwMDY5MEIwNSAvKiBOYW1lZEZsb3dDb2xsZWN0aW9uLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MkI2QzlDMTE1
RTNGNERGMDA2OTBCMDUgLyogTmFtZWRGbG93Q29sbGVjdGlvbi5oICovOyB9OwotCQk1MkNDQTlF
MjE1RTNGNjJDMDA1M0M3N0YgLyogSlNET01OYW1lZEZsb3dDb2xsZWN0aW9uLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyQ0NBOUUwMTVFM0Y2MkMw
MDUzQzc3RiAvKiBKU0RPTU5hbWVkRmxvd0NvbGxlY3Rpb24uY3BwICovOyB9OwotCQk1MkNDQTlF
MzE1RTNGNjJDMDA1M0M3N0YgLyogSlNET01OYW1lZEZsb3dDb2xsZWN0aW9uLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MkNDQTlFMTE1RTNGNjJDMDA1
M0M3N0YgLyogSlNET01OYW1lZEZsb3dDb2xsZWN0aW9uLmggKi87IH07CiAJCTUyRDVBMThGMUM1
NDU5MjMwMERFMzRBMyAvKiBWaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXIubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MkQ1QTE4RDFDNTQ1OTAzMDBE
RTM0QTMgLyogVmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyLm1tICovOyB9OwogCQk1MkQ1QTFB
NzFDNTc0ODlEMDBERTM0QTMgLyogVmlkZW9GdWxsc2NyZWVuTW9kZWwuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyRDVBMUE0MUM1NzQ4ODkwMERFMzRB
MyAvKiBWaWRlb0Z1bGxzY3JlZW5Nb2RlbC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTUyRDVBMUE4MUM1NzQ4QTMwMERFMzRBMyAvKiBWaWRlb0Z1
bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTJENUExQTUxQzU3NDg4OTAwREUzNEEzIC8qIFZpZGVvRnVsbHNj
cmVlbk1vZGVsVmlkZW9FbGVtZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKQEAgLTI5MzEsNyArMjkyNSw2IEBACiAJCTZDNEM5NkRGMUFENDQ4MzUw
MDM2NUE1MCAvKiBKU1JlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZDNEM5NkRCMUFENDQ4MzUwMDM2
NUE1MCAvKiBKU1JlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk2QzYzODg5NUE5NkNDRUU1MEM4
Qzk0NkMgLyogQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkM2Mzg4OTNBOTZDQ0VFNTBDOEM5NDZD
IC8qIENhY2hlZFJlc291cmNlUmVxdWVzdEluaXRpYXRvcnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk2QzYzODg5NkE5NkNDRUU1MEM4Qzk0NkMg
LyogQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycy5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QzYzODg5NEE5NkNDRUU1MEM4Qzk0NkMgLyog
Q2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycy5jcHAgKi87IH07Ci0JCTZDRERFOEQwMTc3
MEJCMjIwMDE2RTA3MiAvKiBSZWdpb25PdmVyc2V0U3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZDNzBBODE0MTc3MDdDNDkwMDlBNDQ2RSAvKiBS
ZWdpb25PdmVyc2V0U3RhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk2RTBFNTY5QjE4M0JGRkU2MDBFMEU4RDUgLyogRmxvYXRSb3VuZGVkUmVj
dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTBF
NTY5OTE4M0JGRkU2MDBFMEU4RDUgLyogRmxvYXRSb3VuZGVkUmVjdC5jcHAgKi87IH07CiAJCTZF
MEU1NjlDMTgzQkZGRTYwMEUwRThENSAvKiBGbG9hdFJvdW5kZWRSZWN0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTBFNTY5QTE4M0JGRkU2MDBFMEU4
RDUgLyogRmxvYXRSb3VuZGVkUmVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTZFMjFDNkMwMTEyNjMzODUwMEE3QkUwMiAvKiBHcmFwaGljc0Nv
bnRleHQzRC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA2RTIxQzZCRjExMjYzMzg1MDBBN0JFMDIgLyogR3JhcGhpY3NDb250ZXh0M0QuY3BwICovOyB9
OwpAQCAtMzc2MCwxMyArMzc1Myw5IEBACiAJCThBOUE1ODcxMTFFODRDMzYwMDhBQ0ZEMSAvKiBK
U1BlcmZvcm1hbmNlTmF2aWdhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOEE5QTU4NkYxMUU4NEMzNjAwOEFDRkQxIC8qIEpTUGVyZm9ybWFuY2VO
YXZpZ2F0aW9uLmggKi87IH07CiAJCThBOUE1ODc1MTFFODRDODEwMDhBQ0ZEMSAvKiBKU1BlcmZv
cm1hbmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
QTlBNTg3MzExRTg0QzgxMDA4QUNGRDEgLyogSlNQZXJmb3JtYW5jZS5oICovOyB9OwogCQk4QTlB
NTg4ODExRTg0RjM3MDA4QUNGRDEgLyogSlNQZXJmb3JtYW5jZVRpbWluZy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOEE5QTU4NzcxMUU4NEM5ODAwOEFD
RkQxIC8qIEpTUGVyZm9ybWFuY2VUaW1pbmcuaCAqLzsgfTsKLQkJOEFBNjFDRkYxNDRENTk1QjAw
RjM3MzUwIC8qIFdlYktpdENTU1JlZ2lvblJ1bGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOEFBNjFDRkQxNDRENTk1QjAwRjM3MzUwIC8qIFdlYktp
dENTU1JlZ2lvblJ1bGUuY3BwICovOyB9OwotCQk4QUE2MUQwMDE0NEQ1OTVCMDBGMzczNTAgLyog
V2ViS2l0Q1NTUmVnaW9uUnVsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOEFBNjFDRkUxNDRENTk1QjAwRjM3MzUwIC8qIFdlYktpdENTU1JlZ2lvblJ1
bGUuaCAqLzsgfTsKIAkJOEFCNEJDNzcxMjZGREI3MTAwREVCNzI3IC8qIElnbm9yZURlc3RydWN0
aXZlV3JpdGVDb3VudEluY3JlbWVudGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4QUI0QkM3NjEyNkZEQjcxMDBERUI3MjcgLyogSWdub3JlRGVzdHJ1
Y3RpdmVXcml0ZUNvdW50SW5jcmVtZW50ZXIuaCAqLzsgfTsKIAkJOEFDODIyRkMxODBGQzAzMzAw
RkI2NEQ1IC8qIFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDhBQzgyMkZBMTgwRkMwMzMwMEZCNjRENSAvKiBS
ZW5kZXJOYW1lZEZsb3dGcmFnbWVudC5jcHAgKi87IH07CiAJCThBQzgyMkZEMTgwRkMwMzMwMEZC
NjRENSAvKiBSZW5kZXJOYW1lZEZsb3dGcmFnbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOEFDODIyRkIxODBGQzAzMzAwRkI2NEQ1IC8qIFJlbmRl
ck5hbWVkRmxvd0ZyYWdtZW50LmggKi87IH07Ci0JCThBRDBBNTk0MTRDODgzMzYwMDBEODNDNSAv
KiBKU1dlYktpdENTU1JlZ2lvblJ1bGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOEFDQzI0Q0QxNDhFMjRCMjAwRUZDQzBEIC8qIEpTV2ViS2l0Q1NT
UmVnaW9uUnVsZS5jcHAgKi87IH07Ci0JCThBRDBBNTk1MTRDODgzMzYwMDBEODNDNSAvKiBKU1dl
YktpdENTU1JlZ2lvblJ1bGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDhBQ0MyNENFMTQ4RTI0QjIwMEVGQ0MwRCAvKiBKU1dlYktpdENTU1JlZ2lvblJ1
bGUuaCAqLzsgfTsKIAkJOEFGNEU1NTUxMURDNUEzNjAwMEVEM0RFIC8qIFBlcmZvcm1hbmNlTmF2
aWdhdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4QUY0RTU1MjExREM1QTM2MDAwRUQzREUgLyogUGVyZm9ybWFuY2VOYXZpZ2F0aW9uLmNwcCAq
LzsgfTsKIAkJOEFGNEU1NTYxMURDNUEzNjAwMEVEM0RFIC8qIFBlcmZvcm1hbmNlTmF2aWdhdGlv
bi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOEFGNEU1
NTMxMURDNUEzNjAwMEVEM0RFIC8qIFBlcmZvcm1hbmNlTmF2aWdhdGlvbi5oICovOyB9OwogCQk4
QUY0RTU1QzExREM1QTYzMDAwRUQzREUgLyogUGVyZm9ybWFuY2VUaW1pbmcuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDhBRjRFNTU5MTFEQzVBNjMwMDBF
RDNERSAvKiBQZXJmb3JtYW5jZVRpbWluZy5oICovOyB9OwpAQCAtNjYwMSw4ICs2NTkwLDYgQEAK
IAkJRDcwQUQ2NTgxM0UxMzQyQjAwNUI1MEI0IC8qIFJlbmRlclJlZ2lvbi5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRDcwQUQ2NTYxM0UxMzQyQjAwNUI1
MEI0IC8qIFJlbmRlclJlZ2lvbi5oICovOyB9OwogCQlENzJGNkQ3OTE1MzE1OUEzMDAxRUU0NEUg
LyogRmxvd1RocmVhZENvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRDcyRjZENzcxNTMxNTlBMzAwMUVFNDRFIC8qIEZsb3dUaHJlYWRD
b250cm9sbGVyLmNwcCAqLzsgfTsKIAkJRDcyRjZEN0ExNTMxNTlBMzAwMUVFNDRFIC8qIEZsb3dU
aHJlYWRDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBENzJGNkQ3ODE1MzE1OUEzMDAxRUU0NEUgLyogRmxvd1RocmVhZENvbnRyb2xsZXIu
aCAqLzsgfTsKLQkJRDc2MTNBNTAxNDc0RjEzRjAwREI4NjA2IC8qIFdlYktpdE5hbWVkRmxvdy5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBENzYxM0E0
RTE0NzRGMTNGMDBEQjg2MDYgLyogV2ViS2l0TmFtZWRGbG93LmNwcCAqLzsgfTsKLQkJRDc2MTNB
QzQxNDc1M0U1NjAwREI4NjA2IC8qIEpTV2ViS2l0TmFtZWRGbG93LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEQ3NjEzQUMyMTQ3NTNFNTYwMERCODYw
NiAvKiBKU1dlYktpdE5hbWVkRmxvdy5jcHAgKi87IH07CiAJCUQ4QjYxNTJGMTAzMjQ5NTEwMEM4
NTU0QSAvKiBDb29raWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEQ4QjYxNTJFMTAzMjQ5NTEwMEM4NTU0QSAvKiBDb29raWUuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlEQUVEMjAzMDE2RjI0NDJCMDA3
MEVDMEYgLyogUGFnZUNvbnNvbGVDbGllbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gREFBQ0IzRDkxNkYyNDE2NDAwNjY2MTM1IC8qIFBhZ2VDb25z
b2xlQ2xpZW50LmNwcCAqLzsgfTsKIAkJREFFRDIwMzExNkYyNDQ0ODAwNzBFQzBGIC8qIFBhZ2VD
b25zb2xlQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBEQUFDQjNEQTE2RjI0MTY0MDA2NjYxMzUgLyogUGFnZUNvbnNvbGVDbGllbnQuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTA0NTUsMTMg
KzEwNDQyLDYgQEAKIAkJNTJCMEQ0QkQxQzU3RkQxRTAwNzdDRTUzIC8qIFBsYXRmb3JtVmlldy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQbGF0Zm9ybVZpZXcuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTJCMEQ0QkYxQzU3RkQ2NjAwNzdDRTUzIC8qIFZpZGVv
RnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFZpZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTUyQjBENEMxMUM1N0ZGOTEwMDc3Q0U1MyAvKiBWaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2VNYWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmlkZW9GdWxsc2Ny
ZWVuSW50ZXJmYWNlTWFjLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUyQjZDOUJE
MTVFM0Y0REYwMDY5MEIwNSAvKiBET01OYW1lZEZsb3dDb2xsZWN0aW9uLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERPTU5hbWVkRmxvd0NvbGxlY3Rpb24uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MkI2QzlCRTE1RTNGNERGMDA2OTBCMDUgLyog
RE9NTmFtZWRGbG93Q29sbGVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBET01OYW1lZEZsb3dDb2xsZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTUyQjZDOUJGMTVFM0Y0REYwMDY5MEIwNSAvKiBET01OYW1lZEZsb3dDb2xsZWN0aW9uLmlkbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQ7IHBhdGggPSBET01OYW1lZEZsb3dDb2xsZWN0aW9uLmlkbDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTJCNkM5QzAxNUUzRjRERjAwNjkwQjA1IC8qIE5hbWVk
Rmxvd0NvbGxlY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
TmFtZWRGbG93Q29sbGVjdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUy
QjZDOUMxMTVFM0Y0REYwMDY5MEIwNSAvKiBOYW1lZEZsb3dDb2xsZWN0aW9uLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5hbWVkRmxvd0NvbGxlY3Rpb24uaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTJDQ0E5RTAxNUUzRjYyQzAwNTNDNzdGIC8qIEpTRE9NTmFt
ZWRGbG93Q29sbGVjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBKU0RPTU5hbWVkRmxvd0NvbGxlY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQk1MkNDQTlFMTE1RTNGNjJDMDA1M0M3N0YgLyogSlNET01OYW1lZEZsb3dDb2xsZWN0aW9u
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRE9NTmFtZWRGbG93Q29sbGVj
dGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MkQ1QTE4RDFDNTQ1OTAzMDBE
RTM0QTMgLyogVmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gVmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MkQ1QTE4RTFDNTQ1OTAzMDBERTM0QTMgLyog
VmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1MkQ1QTFBNDFDNTc0ODg5MDBERTM0QTMgLyogVmlkZW9GdWxsc2NyZWVuTW9k
ZWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmlkZW9GdWxsc2NyZWVuTW9k
ZWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEwOTI0LDcgKzEwOTA0LDYgQEAK
IAkJNkM0Qzk2REIxQUQ0NDgzNTAwMzY1QTUwIC8qIEpTUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29u
dHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1JlYWRhYmxlU3Ry
ZWFtRGVmYXVsdENvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkM2
Mzg4OTNBOTZDQ0VFNTBDOEM5NDZDIC8qIENhY2hlZFJlc291cmNlUmVxdWVzdEluaXRpYXRvcnMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhY2hlZFJlc291cmNlUmVxdWVz
dEluaXRpYXRvcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkM2Mzg4OTRBOTZD
Q0VFNTBDOEM5NDZDIC8qIENhY2hlZFJlc291cmNlUmVxdWVzdEluaXRpYXRvcnMuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENhY2hlZFJlc291cmNlUmVxdWVzdElu
aXRpYXRvcnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk2QzcwQTgxNDE3NzA3
QzQ5MDA5QTQ0NkUgLyogUmVnaW9uT3ZlcnNldFN0YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFJlZ2lvbk92ZXJzZXRTdGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk2RTBFNTY5OTE4M0JGRkU2MDBFMEU4RDUgLyogRmxvYXRSb3VuZGVkUmVjdC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGbG9hdFJvdW5kZWRSZWN0LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkUwRTU2OUExODNCRkZFNjAwRTBFOEQ1
IC8qIEZsb2F0Um91bmRlZFJlY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
RmxvYXRSb3VuZGVkUmVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2RTIxQzZC
RjExMjYzMzg1MDBBN0JFMDIgLyogR3JhcGhpY3NDb250ZXh0M0QuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0M0QuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMTIxMzMsMTQgKzEyMTEyLDkgQEAKIAkJOEE5QTU4NkYxMUU4
NEMzNjAwOEFDRkQxIC8qIEpTUGVyZm9ybWFuY2VOYXZpZ2F0aW9uLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEpTUGVyZm9ybWFuY2VOYXZpZ2F0aW9uLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCThBOUE1ODczMTFFODRDODEwMDhBQ0ZEMSAvKiBKU1BlcmZvcm1h
bmNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTUGVyZm9ybWFuY2UuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOEE5QTU4NzcxMUU4NEM5ODAwOEFDRkQxIC8q
IEpTUGVyZm9ybWFuY2VUaW1pbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SlNQZXJmb3JtYW5jZVRpbWluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4QUE2
MUNGRDE0NEQ1OTVCMDBGMzczNTAgLyogV2ViS2l0Q1NTUmVnaW9uUnVsZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJLaXRDU1NSZWdpb25SdWxlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJOEFBNjFDRkUxNDRENTk1QjAwRjM3MzUwIC8qIFdl
YktpdENTU1JlZ2lvblJ1bGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vi
S2l0Q1NTUmVnaW9uUnVsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4QUI0QkM3
NjEyNkZEQjcxMDBERUI3MjcgLyogSWdub3JlRGVzdHJ1Y3RpdmVXcml0ZUNvdW50SW5jcmVtZW50
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSWdub3JlRGVzdHJ1Y3RpdmVX
cml0ZUNvdW50SW5jcmVtZW50ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOEFD
ODIyRkExODBGQzAzMzAwRkI2NEQ1IC8qIFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOEFDODIyRkIxODBGQzAzMzAwRkI2
NEQ1IC8qIFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCThBQ0MyNENEMTQ4RTI0QjIwMEVGQ0MwRCAvKiBKU1dlYktpdENTU1JlZ2lvblJ1
bGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNXZWJLaXRDU1NS
ZWdpb25SdWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJOEFDQzI0Q0UxNDhF
MjRCMjAwRUZDQzBEIC8qIEpTV2ViS2l0Q1NTUmVnaW9uUnVsZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBKU1dlYktpdENTU1JlZ2lvblJ1bGUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJOEFEMEE1NTYxNEM4NzQyNTAwMEQ4M0M1IC8qIFdlYktpdENTU1JlZ2lv
blJ1bGUuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYktpdENTU1JlZ2lvblJ1bGUuaWRs
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4QUY0RTU1MjExREM1QTM2MDAwRUQzREUg
LyogUGVyZm9ybWFuY2VOYXZpZ2F0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFBlcmZvcm1hbmNlTmF2aWdhdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCThBRjRFNTUzMTFEQzVBMzYwMDBFRDNERSAvKiBQZXJmb3JtYW5jZU5hdmlnYXRp
b24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGVyZm9ybWFuY2VOYXZpZ2F0
aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCThBRjRFNTU0MTFEQzVBMzYwMDBF
RDNERSAvKiBQZXJmb3JtYW5jZU5hdmlnYXRpb24uaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9
IFBlcmZvcm1hbmNlTmF2aWdhdGlvbi5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC0xNTQwNSwxMSArMTUzNzksNiBAQAogCQlENzBBRDY1NjEzRTEzNDJCMDA1QjUwQjQgLyogUmVu
ZGVyUmVnaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlclJlZ2lv
bi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlENzJGNkQ3NzE1MzE1OUEzMDAxRUU0
NEUgLyogRmxvd1RocmVhZENvbnRyb2xsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gRmxvd1RocmVhZENvbnRyb2xsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlENzJGNkQ3ODE1MzE1OUEzMDAxRUU0NEUgLyogRmxvd1RocmVhZENvbnRyb2xs
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmxvd1RocmVhZENvbnRyb2xs
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDc2MTNBNEExNDc0RUU5NTAwREI4
NjA2IC8qIFdlYktpdE5hbWVkRmxvdy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViS2l0
TmFtZWRGbG93LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDc2MTNBNEQxNDc0
RjEzRjAwREI4NjA2IC8qIFdlYktpdE5hbWVkRmxvdy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXZWJLaXROYW1lZEZsb3cuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJRDc2MTNBNEUxNDc0RjEzRjAwREI4NjA2IC8qIFdlYktpdE5hbWVkRmxvdy5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJLaXROYW1lZEZsb3cuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlENzYxM0FDMjE0NzUzRTU2MDBEQjg2MDYgLyogSlNX
ZWJLaXROYW1lZEZsb3cuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SlNXZWJLaXROYW1lZEZsb3cuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlENzYx
M0FDMzE0NzUzRTU2MDBEQjg2MDYgLyogSlNXZWJLaXROYW1lZEZsb3cuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSlNXZWJLaXROYW1lZEZsb3cuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRDhCNjE1MkUxMDMyNDk1MTAwQzg1NTRBIC8qIENvb2tpZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb29raWUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJREFBQ0IzRDkxNkYyNDE2NDAwNjY2MTM1IC8qIFBhZ2VDb25zb2xlQ2xpZW50
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBhZ2VDb25zb2xlQ2xp
ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJREFBQ0IzREExNkYyNDE2NDAw
NjY2MTM1IC8qIFBhZ2VDb25zb2xlQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFBhZ2VDb25zb2xlQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC0yMjY1NCw4ICsyMjYyMyw2IEBACiAJCQkJQTg0RUJEODEwQ0I4Qzk3NzAwMDc5NjA5IC8qIEpT
U3R5bGVTaGVldExpc3QuaCAqLywKIAkJCQk0OTgzOTEzRDBGMUU3Njc1MDBDMjM3ODIgLyogSlNX
ZWJLaXRDU1NNYXRyaXguY3BwICovLAogCQkJCTQ5ODM5MTNFMEYxRTc2NzUwMEMyMzc4MiAvKiBK
U1dlYktpdENTU01hdHJpeC5oICovLAotCQkJCThBQ0MyNENEMTQ4RTI0QjIwMEVGQ0MwRCAvKiBK
U1dlYktpdENTU1JlZ2lvblJ1bGUuY3BwICovLAotCQkJCThBQ0MyNENFMTQ4RTI0QjIwMEVGQ0Mw
RCAvKiBKU1dlYktpdENTU1JlZ2lvblJ1bGUuaCAqLywKIAkJCQkzRjJCMzNFOTE2NUFGMTU1MDBF
Mzk4N0MgLyogSlNXZWJLaXRDU1NWaWV3cG9ydFJ1bGUuY3BwICovLAogCQkJCTNGMkIzM0VBMTY1
QUYxNTUwMEUzOTg3QyAvKiBKU1dlYktpdENTU1ZpZXdwb3J0UnVsZS5oICovLAogCQkJKTsKQEAg
LTIyNjk1LDggKzIyNjYyLDYgQEAKIAkJCQlCQzYwRDdCRjBEMjlBNDYzMDBCOTkxOEYgLyogSlNE
T01FeGNlcHRpb24uaCAqLywKIAkJCQk2NURGMzFFMzA5RDFDQzYwMDAwQkUzMjUgLyogSlNET01J
bXBsZW1lbnRhdGlvbi5jcHAgKi8sCiAJCQkJNjVERjMxRTQwOUQxQ0M2MDAwMEJFMzI1IC8qIEpT
RE9NSW1wbGVtZW50YXRpb24uaCAqLywKLQkJCQk1MkNDQTlFMDE1RTNGNjJDMDA1M0M3N0YgLyog
SlNET01OYW1lZEZsb3dDb2xsZWN0aW9uLmNwcCAqLywKLQkJCQk1MkNDQTlFMTE1RTNGNjJDMDA1
M0M3N0YgLyogSlNET01OYW1lZEZsb3dDb2xsZWN0aW9uLmggKi8sCiAJCQkJMEY0OTY2QTQxREI0
MEM0MzAwQTI3NEJCIC8qIEpTRE9NUG9pbnQuY3BwICovLAogCQkJCTBGNDk2NkE1MURCNDBDNDMw
MEEyNzRCQiAvKiBKU0RPTVBvaW50LmggKi8sCiAJCQkJMEY0OTY2QTYxREI0MEM0MzAwQTI3NEJC
IC8qIEpTRE9NUG9pbnRJbml0LmNwcCAqLywKQEAgLTIyNzQ3LDggKzIyNzEyLDYgQEAKIAkJCQk5
QjA5OEJFNzFGM0Q2QUY2MDAyREQ1NjIgLyogSlNTdHJpbmdDYWxsYmFjay5oICovLAogCQkJCTY1
REYzMUVGMDlEMUNDNjAwMDBCRTMyNSAvKiBKU1RleHQuY3BwICovLAogCQkJCTY1REYzMUYwMDlE
MUNDNjAwMDBCRTMyNSAvKiBKU1RleHQuaCAqLywKLQkJCQlENzYxM0FDMjE0NzUzRTU2MDBEQjg2
MDYgLyogSlNXZWJLaXROYW1lZEZsb3cuY3BwICovLAotCQkJCUQ3NjEzQUMzMTQ3NTNFNTYwMERC
ODYwNiAvKiBKU1dlYktpdE5hbWVkRmxvdy5oICovLAogCQkJCTgzRjU3MEFFMUM1MzI2OEUwMDdG
RDZDQiAvKiBKU1hNTERvY3VtZW50LmNwcCAqLywKIAkJCQk4M0Y1NzBBRDFDNTMyNjhFMDA3RkQ2
Q0IgLyogSlNYTUxEb2N1bWVudC5oICovLAogCQkJKTsKQEAgLTI1ODY3LDkgKzI1ODMwLDYgQEAK
IAkJCQk0OTgzOTE1NTBGMUU3NzY5MDBDMjM3ODIgLyogV2ViS2l0Q1NTTWF0cml4LmNwcCAqLywK
IAkJCQk0OTgzOTE1NjBGMUU3NzY5MDBDMjM3ODIgLyogV2ViS2l0Q1NTTWF0cml4LmggKi8sCiAJ
CQkJNDk4MzkxNTcwRjFFNzc2OTAwQzIzNzgyIC8qIFdlYktpdENTU01hdHJpeC5pZGwgKi8sCi0J
CQkJOEFBNjFDRkQxNDRENTk1QjAwRjM3MzUwIC8qIFdlYktpdENTU1JlZ2lvblJ1bGUuY3BwICov
LAotCQkJCThBQTYxQ0ZFMTQ0RDU5NUIwMEYzNzM1MCAvKiBXZWJLaXRDU1NSZWdpb25SdWxlLmgg
Ki8sCi0JCQkJOEFEMEE1NTYxNEM4NzQyNTAwMEQ4M0M1IC8qIFdlYktpdENTU1JlZ2lvblJ1bGUu
aWRsICovLAogCQkJCTNGRkZGOUE2MTU5RDlBNTUwMDIwQkJENSAvKiBXZWJLaXRDU1NWaWV3cG9y
dFJ1bGUuY3BwICovLAogCQkJCTNGRkZGOUE3MTU5RDlBNTUwMDIwQkJENSAvKiBXZWJLaXRDU1NW
aWV3cG9ydFJ1bGUuaCAqLywKIAkJCQkzRjJCMzNFMzE2NUFCRDM1MDBFMzk4N0MgLyogV2ViS2l0
Q1NTVmlld3BvcnRSdWxlLmlkbCAqLywKQEAgLTI1OTU0LDcgKzI1OTE0LDYgQEAKIAkJCQkwODg1
MDY3RTExREEwNDVCMDAxODJCOTggLyogUGFpbnRQaGFzZS5oICovLAogCQkJCUIyQjFGNzE0MEQw
MENBQTgwMDRBRUE2NCAvKiBQb2ludGVyRXZlbnRzSGl0UnVsZXMuY3BwICovLAogCQkJCUIyQjFG
NzE1MEQwMENBQTgwMDRBRUE2NCAvKiBQb2ludGVyRXZlbnRzSGl0UnVsZXMuaCAqLywKLQkJCQk2
QzcwQTgxNDE3NzA3QzQ5MDA5QTQ0NkUgLyogUmVnaW9uT3ZlcnNldFN0YXRlLmggKi8sCiAJCQkJ
QjU5RUQyM0ExODI3MjY3OTAwNkQ1NjRDIC8qIFJlbmRlckFuY2VzdG9ySXRlcmF0b3IuaCAqLywK
IAkJCQk3Q0Q0OTRDQTFBODZFQjFEMDAwQTg3RUMgLyogUmVuZGVyQXR0YWNobWVudC5jcHAgKi8s
CiAJCQkJN0NENDk0Q0IxQTg2RUIxRDAwMEE4N0VDIC8qIFJlbmRlckF0dGFjaG1lbnQuaCAqLywK
QEAgLTI2MzExLDkgKzI2MjcwLDYgQEAKIAkJCQlBODE4NUYzNjA5NzY1NzY1MDA1ODI2RDkgLyog
RE9NSW1wbGVtZW50YXRpb24uY3BwICovLAogCQkJCUE4MTg1RjMzMDk3NjU3NjUwMDU4MjZEOSAv
KiBET01JbXBsZW1lbnRhdGlvbi5oICovLAogCQkJCTkzRUVDMUU5MDlDMjg3NzcwMEM1MTVEMSAv
KiBET01JbXBsZW1lbnRhdGlvbi5pZGwgKi8sCi0JCQkJNTJCNkM5QkQxNUUzRjRERjAwNjkwQjA1
IC8qIERPTU5hbWVkRmxvd0NvbGxlY3Rpb24uY3BwICovLAotCQkJCTUyQjZDOUJFMTVFM0Y0REYw
MDY5MEIwNSAvKiBET01OYW1lZEZsb3dDb2xsZWN0aW9uLmggKi8sCi0JCQkJNTJCNkM5QkYxNUUz
RjRERjAwNjkwQjA1IC8qIERPTU5hbWVkRmxvd0NvbGxlY3Rpb24uaWRsICovLAogCQkJCTBGNDk2
Njk5MURCNDA4QzEwMEEyNzRCQiAvKiBET01Qb2ludC5oICovLAogCQkJCTBGNDk2NjlBMURCNDA4
QzEwMEEyNzRCQiAvKiBET01Qb2ludC5pZGwgKi8sCiAJCQkJMEY0OTY2QTIxREI0MDkxMDAwQTI3
NEJCIC8qIERPTVBvaW50SW5pdC5oICovLApAQCAtMjY0NjEsOCArMjY0MTcsNiBAQAogCQkJCUM2
RjA4RkI5MTQzMEZFOEYwMDY4NTg0OSAvKiBNdXRhdGlvblJlY29yZC5jcHAgKi8sCiAJCQkJQzZG
MDhGQkExNDMwRkU4RjAwNjg1ODQ5IC8qIE11dGF0aW9uUmVjb3JkLmggKi8sCiAJCQkJQzZGMDhG
QkIxNDMwRkU4RjAwNjg1ODQ5IC8qIE11dGF0aW9uUmVjb3JkLmlkbCAqLywKLQkJCQk1MkI2QzlD
MDE1RTNGNERGMDA2OTBCMDUgLyogTmFtZWRGbG93Q29sbGVjdGlvbi5jcHAgKi8sCi0JCQkJNTJC
NkM5QzExNUUzRjRERjAwNjkwQjA1IC8qIE5hbWVkRmxvd0NvbGxlY3Rpb24uaCAqLywKIAkJCQlC
Q0YzNEEzNjExQTIzMUNEMDBDNzE4MDQgLyogTmFtZWROb2RlTWFwLmNwcCAqLywKIAkJCQlBODE4
NzIxODA5NzdEM0MwMDA1ODI2RDkgLyogTmFtZWROb2RlTWFwLmggKi8sCiAJCQkJODVBQ0E5Rjkw
QTlCNjMxMDAwNjcxRTkwIC8qIE5hbWVkTm9kZU1hcC5pZGwgKi8sCkBAIC0yNjY0MSw5ICsyNjU5
NSw2IEBACiAJCQkJMzFDMEZGMUIwRTRDRUI2RTAwN0Q2RkU1IC8qIFdlYktpdEFuaW1hdGlvbkV2
ZW50LmNwcCAqLywKIAkJCQkzMUMwRkYxQzBFNENFQjZFMDA3RDZGRTUgLyogV2ViS2l0QW5pbWF0
aW9uRXZlbnQuaCAqLywKIAkJCQkzMUMwRkYxRDBFNENFQjZFMDA3RDZGRTUgLyogV2ViS2l0QW5p
bWF0aW9uRXZlbnQuaWRsICovLAotCQkJCUQ3NjEzQTRFMTQ3NEYxM0YwMERCODYwNiAvKiBXZWJL
aXROYW1lZEZsb3cuY3BwICovLAotCQkJCUQ3NjEzQTREMTQ3NEYxM0YwMERCODYwNiAvKiBXZWJL
aXROYW1lZEZsb3cuaCAqLywKLQkJCQlENzYxM0E0QTE0NzRFRTk1MDBEQjg2MDYgLyogV2ViS2l0
TmFtZWRGbG93LmlkbCAqLywKIAkJCQkzMUMwRkYxRTBFNENFQjZFMDA3RDZGRTUgLyogV2ViS2l0
VHJhbnNpdGlvbkV2ZW50LmNwcCAqLywKIAkJCQkzMUMwRkYxRjBFNENFQjZFMDA3RDZGRTUgLyog
V2ViS2l0VHJhbnNpdGlvbkV2ZW50LmggKi8sCiAJCQkJMzFDMEZGMjAwRTRDRUI2RTAwN0Q2RkU1
IC8qIFdlYktpdFRyYW5zaXRpb25FdmVudC5pZGwgKi8sCkBAIC0yNzc4MCw3ICsyNzczMSw2IEBA
CiAJCQkJODM2QUNFQzMxRUNBNjJDODAwNEJEMDEyIC8qIERPTU1hdHJpeFJlYWRPbmx5LmggaW4g
SGVhZGVycyAqLywKIAkJCQlBOUM2RTRFNDBENzQ1RTA1MDA2NDQyRTkgLyogRE9NTWltZVR5cGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCUE5QzZFNEU4MEQ3NDVFMTgwMDY0NDJFOSAvKiBET01NaW1l
VHlwZUFycmF5LmggaW4gSGVhZGVycyAqLywKLQkJCQk1MkI2QzlDMzE1RTNGNERGMDA2OTBCMDUg
LyogRE9NTmFtZWRGbG93Q29sbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFDRTUzRTgw
QThEMThFNzAwMjI5NDdEIC8qIERPTVBhcnNlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0E1NDg4
MTcxNEU0MzJBMTAwNkFFMDVBIC8qIERPTVBhdGNoU3VwcG9ydC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTlDNkU0RUMwRDc0NUUyQjAwNjQ0MkU5IC8qIERPTVBsdWdpbi5oIGluIEhlYWRlcnMgKi8s
CkBAIC0yODU2Niw3ICsyODUxNiw2IEBACiAJCQkJODM2QUNFRDYxRUNBQUIxOTAwNEJEMDEyIC8q
IEpTRE9NTWF0cml4UmVhZE9ubHkuaCBpbiBIZWFkZXJzICovLAogCQkJCUE5RDI0ODA3MEQ3NTdF
N0QwMEZERjk1OSAvKiBKU0RPTU1pbWVUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOUQyNDgw
OTBENzU3RTdEMDBGREY5NTkgLyogSlNET01NaW1lVHlwZUFycmF5LmggaW4gSGVhZGVycyAqLywK
LQkJCQk1MkNDQTlFMzE1RTNGNjJDMDA1M0M3N0YgLyogSlNET01OYW1lZEZsb3dDb2xsZWN0aW9u
LmggaW4gSGVhZGVycyAqLywKIAkJCQk3QzgxMzlBNzFFRDYyODc0MDBDRTI2RTggLyogSlNET01P
cGVyYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTdDODEzOUE4MUVENjI4NzQwMENFMjZFOCAv
KiBKU0RPTU9wZXJhdGlvblJldHVybmluZ1Byb21pc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTFB
Q0U1M0UwMEE4RDE4ODEwMDIyOTQ3RCAvKiBKU0RPTVBhcnNlci5oIGluIEhlYWRlcnMgKi8sCkBA
IC0yOTE2OCw3ICsyOTExNyw2IEBACiAJCQkJMzFBMDg5OEMxRTczOEQ1QTAwM0I2NjA5IC8qIEpT
V2ViR1BVVGV4dHVyZURlc2NyaXB0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxQzBGRjNFMEU0
Q0VGQUMwMDdENkZFNSAvKiBKU1dlYktpdEFuaW1hdGlvbkV2ZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQk0OTgzOTE0MDBGMUU3Njc1MDBDMjM3ODIgLyogSlNXZWJLaXRDU1NNYXRyaXguaCBpbiBI
ZWFkZXJzICovLAotCQkJCThBRDBBNTk1MTRDODgzMzYwMDBEODNDNSAvKiBKU1dlYktpdENTU1Jl
Z2lvblJ1bGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTNGMkIzM0VGMTY1QUYxNTYwMEUzOTg3QyAv
KiBKU1dlYktpdENTU1ZpZXdwb3J0UnVsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0NDNjk5NDEx
OTFFQzVGNTAwQUYyMjcwIC8qIEpTV2ViS2l0TmFtZXNwYWNlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRkRBN0MyNzE4ODMzMzMyMDBDOTU0QjUgLyogSlNXZWJLaXRQbGF5YmFja1RhcmdldEF2YWls
YWJpbGl0eUV2ZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTI5NDM3LDcgKzI5Mzg1LDYgQEAKIAkJ
CQlENkU1MjhBNDE0OUE5MjZEMDBFRkUxRjMgLyogTXV0YXRpb25PYnNlcnZlckludGVyZXN0R3Jv
dXAuaCBpbiBIZWFkZXJzICovLAogCQkJCUQ2RTI3NkIwMTQ2Mzc0NTUwMDFEMjgwQSAvKiBNdXRh
dGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlDNkYwOEZCRDE0
MzBGRThGMDA2ODU4NDkgLyogTXV0YXRpb25SZWNvcmQuaCBpbiBIZWFkZXJzICovLAotCQkJCTUy
QjZDOUM2MTVFM0Y0REYwMDY5MEIwNSAvKiBOYW1lZEZsb3dDb2xsZWN0aW9uLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkzMTRCRTNBNzFCMzEwM0ZCMDAxNDE5ODIgLyogTmFtZWRJbWFnZUdlbmVyYXRl
ZEltYWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBODE4NzIyMzA5NzdEM0MwMDA1ODI2RDkgLyog
TmFtZWROb2RlTWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQlBODE4NzIxRTA5NzdEM0MwMDA1ODI2
RDkgLyogTmFtZU5vZGVMaXN0LmggaW4gSGVhZGVycyAqLywKQEAgLTI5NzM3LDcgKzI5Njg0LDYg
QEAKIAkJCQk1Q0VFRTQzNjFGNUY4RjIxMDAxNEE1RjUgLyogUmVjdEVkZ2VzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk5ODMxQUU0QTE1NDIyNUM5MDBGRTI2NDQgLyogUmVmZXJyZXJQb2xpY3kuaCBp
biBIZWFkZXJzICovLAogCQkJCUJDQUI0MTgyMTNFMzU2RTgwMEQ4QUFGMyAvKiBSZWdpb24uaCBp
biBIZWFkZXJzICovLAotCQkJCTZDRERFOEQwMTc3MEJCMjIwMDE2RTA3MiAvKiBSZWdpb25PdmVy
c2V0U3RhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTI2Qjk5OThGMTgwM0FFNzIwMEQwMTEyMSAv
KiBSZWdpc3RlckFsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODUwMzFCNEMwQTQ0RUZD
NzAwRjk5MkUwIC8qIFJlZ2lzdGVyZWRFdmVudExpc3RlbmVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBNTc4RjQzRjFERTBCNjMwMDAzREZDNkEgLyogUmVqZWN0ZWRQcm9taXNlVHJhY2tlci5oIGlu
IEhlYWRlcnMgKi8sCkBAIC0zMDgwNCw3ICszMDc1MCw2IEBACiAJCQkJMzFDMEZGMjIwRTRDRUI2
RTAwN0Q2RkU1IC8qIFdlYktpdEFuaW1hdGlvbkV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk1
REZFQkFCNzE4NTkyQjZEMDBDNzVCRUIgLyogV2ViS2l0QXZhaWxhYmlsaXR5LmggaW4gSGVhZGVy
cyAqLywKIAkJCQk0OTgzOTE1OTBGMUU3NzY5MDBDMjM3ODIgLyogV2ViS2l0Q1NTTWF0cml4Lmgg
aW4gSGVhZGVycyAqLywKLQkJCQk4QUE2MUQwMDE0NEQ1OTVCMDBGMzczNTAgLyogV2ViS2l0Q1NT
UmVnaW9uUnVsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJM0ZGRkY5QTkxNTlEOUE1NTAwMjBCQkQ1
IC8qIFdlYktpdENTU1ZpZXdwb3J0UnVsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQwNjIxNDUx
REE2MzlCQTAwQTdGQjI2IC8qIFdlYktpdE1lZGlhS2V5TWVzc2FnZUV2ZW50LmggaW4gSGVhZGVy
cyAqLywKIAkJCQkyRDA2MjE1MTFEQTYzQTlGMDBBN0ZCMjYgLyogV2ViS2l0TWVkaWFLZXlOZWVk
ZWRFdmVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMTg1Nyw3ICszMTgwMiw2IEBACiAJCQkJODM2
QUNFQzIxRUNBNjJDODAwNEJEMDEyIC8qIERPTU1hdHJpeFJlYWRPbmx5LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUE5QzZFNEUzMEQ3NDVFMDUwMDY0NDJFOSAvKiBET01NaW1lVHlwZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlBOUM2RTRFNzBENzQ1RTE4MDA2NDQyRTkgLyogRE9NTWltZVR5cGVB
cnJheS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk1MkI2QzlDMjE1RTNGNERGMDA2OTBCMDUgLyog
RE9NTmFtZWRGbG93Q29sbGVjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUNFNTNFNzBB
OEQxOEU3MDAyMjk0N0QgLyogRE9NUGFyc2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdBNTQ4
ODE4MTRFNDMyQTEwMDZBRTA1QSAvKiBET01QYXRjaFN1cHBvcnQuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQTlDNkU0RUIwRDc0NUUyQjAwNjQ0MkU5IC8qIERPTVBsdWdpbi5jcHAgaW4gU291cmNl
cyAqLywKQEAgLTMyNTk0LDcgKzMyNTM4LDYgQEAKIAkJCQk4MzZBQ0VENTFFQ0FBQjE5MDA0QkQw
MTIgLyogSlNET01NYXRyaXhSZWFkT25seS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOUQyNDgw
NjBENzU3RTdEMDBGREY5NTkgLyogSlNET01NaW1lVHlwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlBOUQyNDgwODBENzU3RTdEMDBGREY5NTkgLyogSlNET01NaW1lVHlwZUFycmF5LmNwcCBpbiBT
b3VyY2VzICovLAotCQkJCTUyQ0NBOUUyMTVFM0Y2MkMwMDUzQzc3RiAvKiBKU0RPTU5hbWVkRmxv
d0NvbGxlY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFDRTUzREYwQThEMTg4MTAwMjI5
NDdEIC8qIEpTRE9NUGFyc2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE5RDI0N0ZFMEQ3NTdF
NjkwMEZERjk1OSAvKiBKU0RPTVBsdWdpbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOUQyNDgw
MDBENzU3RTY5MDBGREY5NTkgLyogSlNET01QbHVnaW5BcnJheS5jcHAgaW4gU291cmNlcyAqLywK
QEAgLTMzMjQ5LDE0ICszMzE5MiwxMiBAQAogCQkJCTMxQTA4OThBMUU3MzhENUEwMDNCNjYwOSAv
KiBKU1dlYkdQVVRleHR1cmVEZXNjcmlwdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTMxQzBG
RjNEMEU0Q0VGQUMwMDdENkZFNSAvKiBKU1dlYktpdEFuaW1hdGlvbkV2ZW50LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTQ5ODM5MTNGMEYxRTc2NzUwMEMyMzc4MiAvKiBKU1dlYktpdENTU01hdHJp
eC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk4QUQwQTU5NDE0Qzg4MzM2MDAwRDgzQzUgLyogSlNX
ZWJLaXRDU1NSZWdpb25SdWxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTNGMkIzM0VFMTY1QUYx
NTYwMEUzOTg3QyAvKiBKU1dlYktpdENTU1ZpZXdwb3J0UnVsZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlDREE5OERBMzE2MDE0NjQxMDBGRUEzQjEgLyogSlNXZWJLaXRNZWRpYUtleUVycm9yLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUNEQTk4RERGMTYwMjZBMzcwMEZFQTNCMSAvKiBKU1dlYktp
dE1lZGlhS2V5TWVzc2FnZUV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNEQTk4REUwMTYw
MjZBMzcwMEZFQTNCMSAvKiBKU1dlYktpdE1lZGlhS2V5TmVlZGVkRXZlbnQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQ0RBOThFMDQxNjAzOUUxQTAwRkVBM0IxIC8qIEpTV2ViS2l0TWVkaWFLZXlz
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNEQTk4RTA2MTYwMzlFMUYwMEZFQTNCMSAvKiBKU1dl
YktpdE1lZGlhS2V5U2Vzc2lvbi5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlENzYxM0FDNDE0NzUz
RTU2MDBEQjg2MDYgLyogSlNXZWJLaXROYW1lZEZsb3cuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
N0NDNjk5NDAxOTFFQzVGNTAwQUYyMjcwIC8qIEpTV2ViS2l0TmFtZXNwYWNlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTBGREE3QzI2MTg4MzMzMzIwMEM5NTRCNSAvKiBKU1dlYktpdFBsYXliYWNr
VGFyZ2V0QXZhaWxhYmlsaXR5RXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDk0QkQ3OUQw
RjU1Qzk0QzAwNzQ3ODI4IC8qIEpTV2ViS2l0UG9pbnQuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0z
MzUwMyw3ICszMzQ0NCw2IEBACiAJCQkJRDZFNTI4QTMxNDlBOTI2RDAwRUZFMUYzIC8qIE11dGF0
aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUQ2RTI3NkFG
MTQ2Mzc0NTUwMDFEMjgwQSAvKiBNdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUM2RjA4RkJDMTQzMEZFOEYwMDY4NTg0OSAvKiBNdXRhdGlvblJlY29y
ZC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk1MkI2QzlDNTE1RTNGNERGMDA2OTBCMDUgLyogTmFt
ZWRGbG93Q29sbGVjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzMTRCRTNBNjFCMzEwM0ZC
MDAxNDE5ODIgLyogTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUJDRjM0QTM3MTFBMjMxQ0QwMEM3MTgwNCAvKiBOYW1lZE5vZGVNYXAuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQTgxODcyMjQwOTc3RDNDMDAwNTgyNkQ5IC8qIE5hbWVOb2RlTGlzdC5jcHAg
aW4gU291cmNlcyAqLywKQEAgLTM0NjExLDE0ICszNDU1MSwxMiBAQAogCQkJCUY0ODIyMzEwMUUz
ODY5QjgwMDY2RkM3OSAvKiBXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMzFDMEZGMjEwRTRDRUI2RTAwN0Q2RkU1IC8qIFdlYktpdEFuaW1hdGlvbkV2ZW50
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ5ODM5MTU4MEYxRTc3NjkwMEMyMzc4MiAvKiBXZWJL
aXRDU1NNYXRyaXguY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJOEFBNjFDRkYxNDRENTk1QjAwRjM3
MzUwIC8qIFdlYktpdENTU1JlZ2lvblJ1bGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJM0ZGRkY5
QTgxNTlEOUE1NTAwMjBCQkQ1IC8qIFdlYktpdENTU1ZpZXdwb3J0UnVsZS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkxQTE0MTRCNTEzQTBGMDUwMDAxOTk5NkMgLyogV2ViS2l0Rm9udEZhbWlseU5h
bWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEMDYyMTQ0MURBNjM5QjYwMEE3RkIyNiAvKiBX
ZWJLaXRNZWRpYUtleU1lc3NhZ2VFdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDA2MjE1
MjFEQTYzQUEyMDBBN0ZCMjYgLyogV2ViS2l0TWVkaWFLZXlOZWVkZWRFdmVudC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkyRDA2MjE0RDFEQTYzQThCMDBBN0ZCMjYgLyogV2ViS2l0TWVkaWFLZXlz
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEMDYyMTRGMURBNjNBOTEwMEE3RkIyNiAvKiBXZWJL
aXRNZWRpYUtleVNlc3Npb24uY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJRDc2MTNBNTAxNDc0RjEz
RjAwREI4NjA2IC8qIFdlYktpdE5hbWVkRmxvdy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzQ4
QTZEMDE5MUM5RDY1MDAwMjY2NzQgLyogV2ViS2l0TmFtZXNwYWNlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUE1REVCREEzMTZGQjkwODcwMDgzNkZFMCAvKiBXZWJLaXRQbGF5YmFja1RhcmdldEF2
YWlsYWJpbGl0eUV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTMxQzBGRjI0MEU0Q0VCNkUw
MDdENkZFNSAvKiBXZWJLaXRUcmFuc2l0aW9uRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1J1bGVDdXN0b20uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTUnVsZUN1c3RvbS5jcHAJKHJl
dmlzaW9uIDIyMjI1NykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTUnVsZUN1
c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDkgKzQ2LDcgQEAKICNpbmNsdWRlICJKU0NT
U1N1cHBvcnRzUnVsZS5oIgogI2luY2x1ZGUgIkpTTm9kZS5oIgogI2luY2x1ZGUgIkpTU3R5bGVT
aGVldEN1c3RvbS5oIgotI2luY2x1ZGUgIkpTV2ViS2l0Q1NTUmVnaW9uUnVsZS5oIgogI2luY2x1
ZGUgIkpTV2ViS2l0Q1NTVmlld3BvcnRSdWxlLmgiCi0jaW5jbHVkZSAiV2ViS2l0Q1NTUmVnaW9u
UnVsZS5oIgogI2luY2x1ZGUgIldlYktpdENTU1ZpZXdwb3J0UnVsZS5oIgogCiB1c2luZyBuYW1l
c3BhY2UgSlNDOwpAQCAtODUsMTAgKzgzLDYgQEAgSlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEV4
ZWNTdGF0ZSosIEpTRAogICAgIGNhc2UgQ1NTUnVsZTo6V0VCS0lUX1ZJRVdQT1JUX1JVTEU6CiAg
ICAgICAgIHJldHVybiBjcmVhdGVXcmFwcGVyPFdlYktpdENTU1ZpZXdwb3J0UnVsZT4oZ2xvYmFs
T2JqZWN0LCBXVEZNb3ZlKHJ1bGUpKTsKICNlbmRpZgotI2lmIEVOQUJMRShDU1NfUkVHSU9OUykK
LSAgICBjYXNlIENTU1J1bGU6OldFQktJVF9SRUdJT05fUlVMRToKLSAgICAgICAgcmV0dXJuIGNy
ZWF0ZVdyYXBwZXI8V2ViS2l0Q1NTUmVnaW9uUnVsZT4oZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKHJ1
bGUpKTsKLSNlbmRpZgogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBjcmVhdGVXcmFwcGVy
PENTU1J1bGU+KGdsb2JhbE9iamVjdCwgV1RGTW92ZShydWxlKSk7CiAgICAgfQpJbmRleDogU291
cmNlL1dlYkNvcmUvY3NzL0NTU0FsbEluT25lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTQWxsSW5PbmUuY3BwCShyZXZpc2lvbiAyMjIyNTcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTQWxsSW5PbmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjQsNiArMTI0LDUg
QEAKICNpbmNsdWRlICJUcmFuc2Zvcm1GdW5jdGlvbnMuY3BwIgogI2luY2x1ZGUgIlZpZXdwb3J0
U3R5bGVSZXNvbHZlci5jcHAiCiAjaW5jbHVkZSAiV2ViS2l0Q1NTTWF0cml4LmNwcCIKLSNpbmNs
dWRlICJXZWJLaXRDU1NSZWdpb25SdWxlLmNwcCIKICNpbmNsdWRlICJXZWJLaXRDU1NWaWV3cG9y
dFJ1bGUuY3BwIgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURl
Y2xhcmF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0
ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAkocmV2aXNpb24gMjIyMjU3KQorKysgU291cmNlL1dlYkNv
cmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQxNywxNCArNDE3LDYgQEAgc3RhdGljIGNvbnN0IENTU1Byb3BlcnR5SUQgY29tcHV0ZWRQcm9w
ZQogICAgIENTU1Byb3BlcnR5V2Via2l0VXNlckRyYWcsCiAgICAgQ1NTUHJvcGVydHlXZWJraXRV
c2VyTW9kaWZ5LAogICAgIENTU1Byb3BlcnR5V2Via2l0VXNlclNlbGVjdCwKLSNpZiBFTkFCTEUo
Q1NTX1JFR0lPTlMpCi0gICAgQ1NTUHJvcGVydHlXZWJraXRGbG93SW50bywKLSAgICBDU1NQcm9w
ZXJ0eVdlYmtpdEZsb3dGcm9tLAotICAgIENTU1Byb3BlcnR5V2Via2l0UmVnaW9uQnJlYWtBZnRl
ciwKLSAgICBDU1NQcm9wZXJ0eVdlYmtpdFJlZ2lvbkJyZWFrQmVmb3JlLAotICAgIENTU1Byb3Bl
cnR5V2Via2l0UmVnaW9uQnJlYWtJbnNpZGUsCi0gICAgQ1NTUHJvcGVydHlXZWJraXRSZWdpb25G
cmFnbWVudCwKLSNlbmRpZgogICAgIENTU1Byb3BlcnR5U2hhcGVJbWFnZVRocmVzaG9sZCwKICAg
ICBDU1NQcm9wZXJ0eVNoYXBlTWFyZ2luLAogICAgIENTU1Byb3BlcnR5U2hhcGVPdXRzaWRlLApA
QCAtMTkxNiw4ICsxOTA4LDYgQEAgc3RhdGljIFJlZjxDU1NWYWx1ZUxpc3Q+IGNvbnRlbnRUb0NT
U1ZhbAogICAgICAgICBlbHNlIGlmIChpczxUZXh0Q29udGVudERhdGE+KCpjb250ZW50RGF0YSkp
CiAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKGRvd25j
YXN0PFRleHRDb250ZW50RGF0YT4oKmNvbnRlbnREYXRhKS50ZXh0KCksIENTU1ByaW1pdGl2ZVZh
bHVlOjpDU1NfU1RSSU5HKSk7CiAgICAgfQotICAgIGlmIChzdHlsZS5oYXNGbG93RnJvbSgpKQot
ICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHN0eWxlLnJlZ2lv
blRocmVhZCgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1NUUklORykpOwogICAgIHJldHVybiBs
aXN0OwogfQogCkBAIC0yMjkwLDI0ICsyMjgwLDYgQEAgc3RhdGljIENTU1ZhbHVlSUQgY29udmVy
dFRvQ29sdW1uQnJlYWsoQgogICAgIHJldHVybiBDU1NWYWx1ZUF1dG87CiB9CiAKLSNpZiBFTkFC
TEUoQ1NTX1JFR0lPTlMpCi1zdGF0aWMgQ1NTVmFsdWVJRCBjb252ZXJ0VG9SZWdpb25CcmVhayhC
cmVha0JldHdlZW4gdmFsdWUpCi17Ci0gICAgaWYgKHZhbHVlID09IFJlZ2lvbkJyZWFrQmV0d2Vl
bikKLSAgICAgICAgcmV0dXJuIENTU1ZhbHVlQWx3YXlzOwotICAgIGlmICh2YWx1ZSA9PSBBdm9p
ZEJyZWFrQmV0d2VlbiB8fCB2YWx1ZSA9PSBBdm9pZFJlZ2lvbkJyZWFrQmV0d2VlbikKLSAgICAg
ICAgcmV0dXJuIENTU1ZhbHVlQXZvaWQ7Ci0gICAgcmV0dXJuIENTU1ZhbHVlQXV0bzsKLX0KLSAg
ICAKLXN0YXRpYyBDU1NWYWx1ZUlEIGNvbnZlcnRUb1JlZ2lvbkJyZWFrKEJyZWFrSW5zaWRlIHZh
bHVlKQotewotICAgIGlmICh2YWx1ZSA9PSBBdm9pZEJyZWFrSW5zaWRlIHx8IHZhbHVlID09IEF2
b2lkUmVnaW9uQnJlYWtJbnNpZGUpCi0gICAgICAgIHJldHVybiBDU1NWYWx1ZUF2b2lkOwotICAg
IHJldHVybiBDU1NWYWx1ZUF1dG87Ci19Ci0jZW5kaWYKLQogc3RhdGljIGlubGluZSBib29sIGlz
Tm9uUmVwbGFjZWRJbmxpbmUoUmVuZGVyT2JqZWN0JiByZW5kZXJlcikKIHsKICAgICByZXR1cm4g
cmVuZGVyZXIuaXNJbmxpbmUoKSAmJiAhcmVuZGVyZXIuaXNSZXBsYWNlZCgpOwpAQCAtMjk0NSwx
NCArMjkxNyw2IEBAIFJlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3RvcjoKICAg
ICAgICAgICAgIHJldHVybiB6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKHN0eWxlLT5jb2x1bW5XaWR0
aCgpLCAqc3R5bGUpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5VGFiU2l6ZToKICAgICAgICAg
ICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUtPnRhYlNpemUoKSwgQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpOwotI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKLSAg
ICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFJlZ2lvbkJyZWFrQWZ0ZXI6Ci0gICAgICAgICAg
ICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKGNvbnZlcnRUb1JlZ2lvbkJyZWFrKHN0
eWxlLT5icmVha0FmdGVyKCkpKTsKLSAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFJlZ2lv
bkJyZWFrQmVmb3JlOgotICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1
ZShjb252ZXJ0VG9SZWdpb25CcmVhayhzdHlsZS0+YnJlYWtCZWZvcmUoKSkpOwotICAgICAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0UmVnaW9uQnJlYWtJbnNpZGU6Ci0gICAgICAgICAgICByZXR1
cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKGNvbnZlcnRUb1JlZ2lvbkJyZWFrKHN0eWxlLT5i
cmVha0luc2lkZSgpKSk7Ci0jZW5kaWYKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUN1cnNvcjog
ewogICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbGlzdDsKICAgICAgICAgICAgIGF1
dG8qIGN1cnNvcnMgPSBzdHlsZS0+Y3Vyc29ycygpOwpAQCAtMzgyOCwxOCArMzc5Miw2IEBAIFJl
ZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3RvcjoKICAgICAgICAgICAgICAgICBs
aXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKGRvd25jYXN0PEJveENsaXBQYXRo
T3BlcmF0aW9uPigqb3BlcmF0aW9uKS5yZWZlcmVuY2VCb3goKSkpOwogICAgICAgICAgICAgcmV0
dXJuIFdURk1vdmUobGlzdCk7CiAgICAgICAgIH0KLSNpZiBFTkFCTEUoQ1NTX1JFR0lPTlMpCi0g
ICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRGbG93SW50bzoKLSAgICAgICAgICAgIGlmICgh
c3R5bGUtPmhhc0Zsb3dJbnRvKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9v
bC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVOb25lKTsKLSAgICAgICAgICAgIHJldHVy
biBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUtPmZsb3dUaHJlYWQoKSwgQ1NTUHJpbWl0
aXZlVmFsdWU6OkNTU19TVFJJTkcpOwotICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Rmxv
d0Zyb206Ci0gICAgICAgICAgICBpZiAoIXN0eWxlLT5oYXNGbG93RnJvbSgpKQotICAgICAgICAg
ICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVl
Tm9uZSk7Ci0gICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHN0eWxl
LT5yZWdpb25UaHJlYWQoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19TVFJJTkcpOwotICAgICAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0UmVnaW9uRnJhZ21lbnQ6Ci0gICAgICAgICAgICByZXR1
cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHN0eWxlLT5yZWdpb25GcmFnbWVudCgpKTsKLSNl
bmRpZgogICAgICAgICBjYXNlIENTU1Byb3BlcnR5U2hhcGVNYXJnaW46CiAgICAgICAgICAgICBy
ZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHN0eWxlLT5zaGFwZU1hcmdpbigpLCAqc3R5
bGUpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5U2hhcGVJbWFnZVRocmVzaG9sZDoKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaAkocmV2
aXNpb24gMjIyMjU3KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlTWFw
cGluZ3MuaAkod29ya2luZyBjb3B5KQpAQCAtMjI0NSwxOCArMjI0NSwxMiBAQCB0ZW1wbGF0ZTw+
IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTCiAgICAgY2FzZSBBdm9pZFBhZ2VCcmVha0Jl
dHdlZW46CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlQXZvaWRQYWdlOwogICAg
ICAgICBicmVhazsKLSAgICBjYXNlIEF2b2lkUmVnaW9uQnJlYWtCZXR3ZWVuOgotICAgICAgICBt
X3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUF2b2lkUmVnaW9uOwotICAgICAgICBicmVhazsKICAg
ICBjYXNlIENvbHVtbkJyZWFrQmV0d2VlbjoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NT
VmFsdWVDb2x1bW47CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUGFnZUJyZWFrQmV0d2VlbjoK
ICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVQYWdlOwogICAgICAgICBicmVhazsK
LSAgICBjYXNlIFJlZ2lvbkJyZWFrQmV0d2VlbjoKLSAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0g
Q1NTVmFsdWVSZWdpb247Ci0gICAgICAgIGJyZWFrOwogICAgIGNhc2UgTGVmdFBhZ2VCcmVha0Jl
dHdlZW46CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlTGVmdDsKICAgICAgICAg
YnJlYWs7CkBAIC0yMjg1LDE0ICsyMjc5LDEwIEBAIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1p
dGl2ZVZhbHVlOjpvcGUKICAgICAgICAgcmV0dXJuIEF2b2lkQ29sdW1uQnJlYWtCZXR3ZWVuOwog
ICAgIGNhc2UgQ1NTVmFsdWVBdm9pZFBhZ2U6CiAgICAgICAgIHJldHVybiBBdm9pZFBhZ2VCcmVh
a0JldHdlZW47Ci0gICAgY2FzZSBDU1NWYWx1ZUF2b2lkUmVnaW9uOgotICAgICAgICByZXR1cm4g
QXZvaWRSZWdpb25CcmVha0JldHdlZW47CiAgICAgY2FzZSBDU1NWYWx1ZUNvbHVtbjoKICAgICAg
ICAgcmV0dXJuIENvbHVtbkJyZWFrQmV0d2VlbjsKICAgICBjYXNlIENTU1ZhbHVlUGFnZToKICAg
ICAgICAgcmV0dXJuIFBhZ2VCcmVha0JldHdlZW47Ci0gICAgY2FzZSBDU1NWYWx1ZVJlZ2lvbjoK
LSAgICAgICAgcmV0dXJuIFJlZ2lvbkJyZWFrQmV0d2VlbjsKICAgICBjYXNlIENTU1ZhbHVlTGVm
dDoKICAgICAgICAgcmV0dXJuIExlZnRQYWdlQnJlYWtCZXR3ZWVuOwogICAgIGNhc2UgQ1NTVmFs
dWVSaWdodDoKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0aWVzLmpzb24KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnRpZXMuanNvbgkocmV2aXNp
b24gMjIyMjU3KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnRpZXMuanNvbgkod29y
a2luZyBjb3B5KQpAQCAtMTYzOSwxMCArMTYzOSw4IEBACiAgICAgICAgICAgICAgICAgInZlcnNv
IiwKICAgICAgICAgICAgICAgICAiY29sdW1uIiwKICAgICAgICAgICAgICAgICAicGFnZSIsCi0g
ICAgICAgICAgICAgICAgInJlZ2lvbiIsCiAgICAgICAgICAgICAgICAgImF2b2lkLWNvbHVtbiIs
Ci0gICAgICAgICAgICAgICAgImF2b2lkLXBhZ2UiLAotICAgICAgICAgICAgICAgICJhdm9pZC1y
ZWdpb24iCisgICAgICAgICAgICAgICAgImF2b2lkLXBhZ2UiCiAgICAgICAgICAgICBdLAogICAg
ICAgICAgICAgImNvZGVnZW4tcHJvcGVydGllcyI6IHsKICAgICAgICAgICAgICAgICAiaW5pdGlh
bCI6ICJpbml0aWFsQnJlYWtCZXR3ZWVuIgpAQCAtMTY2MiwxMCArMTY2MCw4IEBACiAgICAgICAg
ICAgICAgICAgInZlcnNvIiwKICAgICAgICAgICAgICAgICAiY29sdW1uIiwKICAgICAgICAgICAg
ICAgICAicGFnZSIsCi0gICAgICAgICAgICAgICAgInJlZ2lvbiIsCiAgICAgICAgICAgICAgICAg
ImF2b2lkLWNvbHVtbiIsCi0gICAgICAgICAgICAgICAgImF2b2lkLXBhZ2UiLAotICAgICAgICAg
ICAgICAgICJhdm9pZC1yZWdpb24iCisgICAgICAgICAgICAgICAgImF2b2lkLXBhZ2UiCiAgICAg
ICAgICAgICBdLAogICAgICAgICAgICAgImNvZGVnZW4tcHJvcGVydGllcyI6IHsKICAgICAgICAg
ICAgICAgICAiaW5pdGlhbCI6ICJpbml0aWFsQnJlYWtCZXR3ZWVuIgpAQCAtMTY4MCw4ICsxNjc2
LDcgQEAKICAgICAgICAgICAgICAgICAiYXV0byIsCiAgICAgICAgICAgICAgICAgImF2b2lkIiwK
ICAgICAgICAgICAgICAgICAiYXZvaWQtY29sdW1uIiwKLSAgICAgICAgICAgICAgICAiYXZvaWQt
cGFnZSIsCi0gICAgICAgICAgICAgICAgImF2b2lkLXJlZ2lvbiIKKyAgICAgICAgICAgICAgICAi
YXZvaWQtcGFnZSIKICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAiY29kZWdlbi1wcm9wZXJ0
aWVzIjogewogICAgICAgICAgICAgICAgICJpbml0aWFsIjogImluaXRpYWxCcmVha0luc2lkZSIK
QEAgLTYwOTUsOTUgKzYwOTAsNiBAQAogICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly93
d3cudzMub3JnL1RSL2Nzcy11aS00LyNwcm9wZGVmLXVzZXItc2VsZWN0IgogICAgICAgICAgICAg
fQogICAgICAgICB9LAotICAgICAgICAiLXdlYmtpdC1mbG93LWludG8iOiB7Ci0gICAgICAgICAg
ICAiY29kZWdlbi1wcm9wZXJ0aWVzIjogewotICAgICAgICAgICAgICAgICJuYW1lLWZvci1tZXRo
b2RzIjogIkZsb3dUaHJlYWQiLAotICAgICAgICAgICAgICAgICJjb252ZXJ0ZXIiOiAiU3RyaW5n
T3JOb25lIiwKLSAgICAgICAgICAgICAgICAiZW5hYmxlLWlmIjogIkVOQUJMRV9DU1NfUkVHSU9O
UyIKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAic3BlY2lmaWNhdGlvbiI6IHsKLSAgICAg
ICAgICAgICAgICAiY2F0ZWdvcnkiOiAiY3NzLXJlZ2lvbnMiLAotICAgICAgICAgICAgICAgICJ1
cmwiOiAiaHR0cHM6Ly93d3cudzMub3JnL1RSL2Nzcy1yZWdpb25zLTEvI3Byb3BkZWYtZmxvdy1p
bnRvIgotICAgICAgICAgICAgfQotICAgICAgICB9LAotICAgICAgICAiLXdlYmtpdC1mbG93LWZy
b20iOiB7Ci0gICAgICAgICAgICAiY29kZWdlbi1wcm9wZXJ0aWVzIjogewotICAgICAgICAgICAg
ICAgICJuYW1lLWZvci1tZXRob2RzIjogIlJlZ2lvblRocmVhZCIsCi0gICAgICAgICAgICAgICAg
ImNvbnZlcnRlciI6ICJTdHJpbmdPck5vbmUiLAotICAgICAgICAgICAgICAgICJlbmFibGUtaWYi
OiAiRU5BQkxFX0NTU19SRUdJT05TIgotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICJzcGVj
aWZpY2F0aW9uIjogewotICAgICAgICAgICAgICAgICJjYXRlZ29yeSI6ICJjc3MtcmVnaW9ucyIs
Ci0gICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL3d3dy53My5vcmcvVFIvY3NzLXJlZ2lv
bnMtMS8jcHJvcGRlZi1mbG93LWZyb20iCi0gICAgICAgICAgICB9Ci0gICAgICAgIH0sCi0gICAg
ICAgICItd2Via2l0LXJlZ2lvbi1mcmFnbWVudCI6IHsKLSAgICAgICAgICAgICJ2YWx1ZXMiOiBb
Ci0gICAgICAgICAgICAgICAgImF1dG8iLAotICAgICAgICAgICAgICAgICJicmVhayIKLSAgICAg
ICAgICAgIF0sCi0gICAgICAgICAgICAiY29kZWdlbi1wcm9wZXJ0aWVzIjogewotICAgICAgICAg
ICAgICAgICJlbmFibGUtaWYiOiAiRU5BQkxFX0NTU19SRUdJT05TIgotICAgICAgICAgICAgfSwK
LSAgICAgICAgICAgICJzcGVjaWZpY2F0aW9uIjogewotICAgICAgICAgICAgICAgICJjYXRlZ29y
eSI6ICJjc3MtcmVnaW9ucyIsCi0gICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL3d3dy53
My5vcmcvVFIvY3NzLXJlZ2lvbnMtMS8jcHJvcGRlZi1yZWdpb24tZnJhZ21lbnQiCi0gICAgICAg
ICAgICB9Ci0gICAgICAgIH0sCi0gICAgICAgICItd2Via2l0LXJlZ2lvbi1icmVhay1hZnRlciI6
IHsKLSAgICAgICAgICAgICJ2YWx1ZXMiOiBbCi0gICAgICAgICAgICAgICAgImF1dG8iLAotICAg
ICAgICAgICAgICAgICJhbHdheXMiLAotICAgICAgICAgICAgICAgICJhdm9pZCIsCi0gICAgICAg
ICAgICAgICAgImxlZnQiLAotICAgICAgICAgICAgICAgICJyaWdodCIKLSAgICAgICAgICAgIF0s
Ci0gICAgICAgICAgICAiY29kZWdlbi1wcm9wZXJ0aWVzIjogewotICAgICAgICAgICAgICAgICJp
bml0aWFsIjogImluaXRpYWxCcmVha0JldHdlZW4iLAotICAgICAgICAgICAgICAgICJuYW1lLWZv
ci1tZXRob2RzIjogIkJyZWFrQWZ0ZXIiLAotICAgICAgICAgICAgICAgICJjb252ZXJ0ZXIiOiAi
UmVnaW9uQnJlYWtCZXR3ZWVuIiwKLSAgICAgICAgICAgICAgICAiZW5hYmxlLWlmIjogIkVOQUJM
RV9DU1NfUkVHSU9OUyIKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAic3BlY2lmaWNhdGlv
biI6IHsKLSAgICAgICAgICAgICAgICAiY2F0ZWdvcnkiOiAiY3NzLXJlZ2lvbnMiLAotICAgICAg
ICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly93d3cudzMub3JnL1RSL2Nzcy1yZWdpb25zLTEvI3By
b3BkZWYtYnJlYWstYWZ0ZXIiCi0gICAgICAgICAgICB9Ci0gICAgICAgIH0sCi0gICAgICAgICIt
d2Via2l0LXJlZ2lvbi1icmVhay1iZWZvcmUiOiB7Ci0gICAgICAgICAgICAidmFsdWVzIjogWwot
ICAgICAgICAgICAgICAgICJhdXRvIiwKLSAgICAgICAgICAgICAgICAiYWx3YXlzIiwKLSAgICAg
ICAgICAgICAgICAiYXZvaWQiLAotICAgICAgICAgICAgICAgICJsZWZ0IiwKLSAgICAgICAgICAg
ICAgICAicmlnaHQiCi0gICAgICAgICAgICBdLAotICAgICAgICAgICAgImNvZGVnZW4tcHJvcGVy
dGllcyI6IHsKLSAgICAgICAgICAgICAgICAiaW5pdGlhbCI6ICJpbml0aWFsQnJlYWtCZXR3ZWVu
IiwKLSAgICAgICAgICAgICAgICAibmFtZS1mb3ItbWV0aG9kcyI6ICJCcmVha0JlZm9yZSIsCi0g
ICAgICAgICAgICAgICAgImNvbnZlcnRlciI6ICJSZWdpb25CcmVha0JldHdlZW4iLAotICAgICAg
ICAgICAgICAgICJlbmFibGUtaWYiOiAiRU5BQkxFX0NTU19SRUdJT05TIgotICAgICAgICAgICAg
fSwKLSAgICAgICAgICAgICJzcGVjaWZpY2F0aW9uIjogewotICAgICAgICAgICAgICAgICJjYXRl
Z29yeSI6ICJjc3MtcmVnaW9ucyIsCi0gICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL3d3
dy53My5vcmcvVFIvY3NzLXJlZ2lvbnMtMS8jcHJvcGRlZi1icmVhay1iZWZvcmUiCi0gICAgICAg
ICAgICB9Ci0gICAgICAgIH0sCi0gICAgICAgICItd2Via2l0LXJlZ2lvbi1icmVhay1pbnNpZGUi
OiB7Ci0gICAgICAgICAgICAidmFsdWVzIjogWwotICAgICAgICAgICAgICAgICJhdXRvIiwKLSAg
ICAgICAgICAgICAgICAiYXZvaWQiCi0gICAgICAgICAgICBdLAotICAgICAgICAgICAgImNvZGVn
ZW4tcHJvcGVydGllcyI6IHsKLSAgICAgICAgICAgICAgICAiaW5pdGlhbCI6ICJpbml0aWFsQnJl
YWtJbnNpZGUiLAotICAgICAgICAgICAgICAgICJuYW1lLWZvci1tZXRob2RzIjogIkJyZWFrSW5z
aWRlIiwKLSAgICAgICAgICAgICAgICAiY29udmVydGVyIjogIlJlZ2lvbkJyZWFrSW5zaWRlIiwK
LSAgICAgICAgICAgICAgICAiZW5hYmxlLWlmIjogIkVOQUJMRV9DU1NfUkVHSU9OUyIKLSAgICAg
ICAgICAgIH0sCi0gICAgICAgICAgICAic3BlY2lmaWNhdGlvbiI6IHsKLSAgICAgICAgICAgICAg
ICAiY2F0ZWdvcnkiOiAiY3NzLXJlZ2lvbnMiLAotICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0
cHM6Ly93d3cudzMub3JnL1RSL2Nzcy1yZWdpb25zLTEvI3Byb3BkZWYtYnJlYWstaW5zaWRlIgot
ICAgICAgICAgICAgfQotICAgICAgICB9LAogICAgICAgICAic2Nyb2xsLXBhZGRpbmciOiB7CiAg
ICAgICAgICAgICAiY29kZWdlbi1wcm9wZXJ0aWVzIjogewogICAgICAgICAgICAgICAgICJlbmFi
bGUtaWYiOiAiRU5BQkxFX0NTU19TQ1JPTExfU05BUCIsCkBAIC02ODIyLDEyICs2NzI4LDYgQEAK
ICAgICAgICAgICAgICJsb25nbmFtZSI6ICJDU1MgUGFnZWQgTWVkaWEgTW9kdWxlIiwKICAgICAg
ICAgICAgICJ1cmwiOiAiaHR0cHM6Ly93d3cudzMub3JnL1RSL2NzczMtcGFnZS8iCiAgICAgICAg
IH0sCi0gICAgICAgICJjc3MtcmVnaW9ucyI6IHsKLSAgICAgICAgICAgICJzaG9ydG5hbWUiOiAi
Q1NTIFJlZ2lvbnMiLAotICAgICAgICAgICAgImxvbmduYW1lIjogIkNTUyBSZWdpb25zIE1vZHVs
ZSIsCi0gICAgICAgICAgICAidXJsIjogImh0dHBzOi8vd3d3LnczLm9yZy9UUi9jc3MtcmVnaW9u
cy0xLyIsCi0gICAgICAgICAgICAic3RhdHVzIjogImV4cGVyaW1lbnRhbCIKLSAgICAgICAgfSwK
ICAgICAgICAgImNzcy1yb3VuZC1kaXNwbGF5IjogewogICAgICAgICAgICAgInNob3J0bmFtZSI6
ICJDU1MgUm91bmQgRGlzcGxheSIsCiAgICAgICAgICAgICAibG9uZ25hbWUiOiAiQ1NTIFJvdW5k
IERpc3BsYXkgTW9kdWxlIiwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NSdWxlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUnVsZS5jcHAJKHJldmlzaW9uIDIy
MjI1NykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NSdWxlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzYsMTAgKzM2LDYgQEAgc3RydWN0IFNhbWVTaXplQXNDU1NSdWxlIDogcHVibGljIFJlZkNv
dQogCiBDT01QSUxFX0FTU0VSVChzaXplb2YoQ1NTUnVsZSkgPT0gc2l6ZW9mKFNhbWVTaXplQXND
U1NSdWxlKSwgQ1NTUnVsZV9zaG91bGRfc3RheV9zbWFsbCk7CiAKLSNpZiBFTkFCTEUoQ1NTX1JF
R0lPTlMpCi1DT01QSUxFX0FTU0VSVChTdHlsZVJ1bGVCYXNlOjpSZWdpb24gPT0gc3RhdGljX2Nh
c3Q8U3R5bGVSdWxlQmFzZTo6VHlwZT4oQ1NTUnVsZTo6V0VCS0lUX1JFR0lPTl9SVUxFKSwgZW51
bXNfc2hvdWxkX21hdGNoKTsKLSNlbmRpZgotCiAjaWYgRU5BQkxFKENTU19ERVZJQ0VfQURBUFRB
VElPTikKIENPTVBJTEVfQVNTRVJUKFN0eWxlUnVsZUJhc2U6OlZpZXdwb3J0ID09IHN0YXRpY19j
YXN0PFN0eWxlUnVsZUJhc2U6OlR5cGU+KENTU1J1bGU6OldFQktJVF9WSUVXUE9SVF9SVUxFKSwg
ZW51bXNfc2hvdWxkX21hdGNoKTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NT
U1J1bGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUnVsZS5oCShyZXZp
c2lvbiAyMjIyNTcpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUnVsZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC01NCw5ICs1NCw2IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoQ1NTX0RFVklDRV9BREFQ
VEFUSU9OKQogICAgICAgICBXRUJLSVRfVklFV1BPUlRfUlVMRSA9IDE1LAogI2VuZGlmCi0jaWYg
RU5BQkxFKENTU19SRUdJT05TKQotICAgICAgICBXRUJLSVRfUkVHSU9OX1JVTEUgPSAxNiwKLSNl
bmRpZgogICAgIH07CiAKICAgICBlbnVtIERlcHJlY2F0ZWRUeXBlIHsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NSdWxlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTUnVsZS5pZGwJKHJldmlzaW9uIDIyMjI1NykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NS
dWxlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNiBAQAogICAgIGNvbnN0IHVuc2ln
bmVkIHNob3J0IE5BTUVTUEFDRV9SVUxFID0gMTA7CiAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQg
U1VQUE9SVFNfUlVMRSA9IDEyOwogICAgIFtDb25kaXRpb25hbD1DU1NfREVWSUNFX0FEQVBUQVRJ
T05dIGNvbnN0IHVuc2lnbmVkIHNob3J0IFdFQktJVF9WSUVXUE9SVF9SVUxFID0gMTU7Ci0gICAg
W0NvbmRpdGlvbmFsPUNTU19SRUdJT05TXSBjb25zdCB1bnNpZ25lZCBzaG9ydCBXRUJLSVRfUkVH
SU9OX1JVTEUgPSAxNjsKIAogICAgIC8vIExlZ2FjeSBzeW5vbnltcyBmb3IgdGhlIGFib3ZlLCBr
ZXB0IHRvIGF2b2lkIGJyZWFraW5nIGV4aXN0aW5nIGNvbnRlbnQuCiAgICAgY29uc3QgdW5zaWdu
ZWQgc2hvcnQgV0VCS0lUX0tFWUZSQU1FU19SVUxFID0gNzsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2Nzcy9FbGVtZW50UnVsZUNvbGxlY3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvY3NzL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmNwcAkocmV2aXNpb24gMjIyMjU3KQorKysgU291
cmNlL1dlYkNvcmUvY3NzL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzUsNyArMzUsNiBAQAogI2luY2x1ZGUgIkNTU1ZhbHVlS2V5d29yZHMuaCIKICNpbmNsdWRl
ICJIVE1MRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxTbG90RWxlbWVudC5oIgotI2luY2x1ZGUg
IlJlbmRlclJlZ2lvbi5oIgogI2luY2x1ZGUgIlNWR0VsZW1lbnQuaCIKICNpbmNsdWRlICJTZWxl
Y3RvckNvbXBpbGVyLmgiCiAjaW5jbHVkZSAiU2VsZWN0b3JGaWx0ZXIuaCIKQEAgLTE2NCwyMiAr
MTYzLDYgQEAgdm9pZCBFbGVtZW50UnVsZUNvbGxlY3Rvcjo6Y29sbGVjdE1hdGNoaQogICAgIGNv
bGxlY3RNYXRjaGluZ1J1bGVzRm9yTGlzdChtYXRjaFJlcXVlc3QucnVsZVNldC0+dW5pdmVyc2Fs
UnVsZXMoKSwgbWF0Y2hSZXF1ZXN0LCBydWxlUmFuZ2UpOwogfQogCi12b2lkIEVsZW1lbnRSdWxl
Q29sbGVjdG9yOjpjb2xsZWN0TWF0Y2hpbmdSdWxlc0ZvclJlZ2lvbihjb25zdCBNYXRjaFJlcXVl
c3QmIG1hdGNoUmVxdWVzdCwgU3R5bGVSZXNvbHZlcjo6UnVsZVJhbmdlJiBydWxlUmFuZ2UpCi17
Ci0gICAgaWYgKCFtX3JlZ2lvbkZvclN0eWxpbmcpCi0gICAgICAgIHJldHVybjsKLQotICAgIHVu
c2lnbmVkIHNpemUgPSBtYXRjaFJlcXVlc3QucnVsZVNldC0+cmVnaW9uU2VsZWN0b3JzQW5kUnVs
ZVNldHMoKS5zaXplKCk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7ICsraSkg
ewotICAgICAgICBjb25zdCBDU1NTZWxlY3RvciogcmVnaW9uU2VsZWN0b3IgPSBtYXRjaFJlcXVl
c3QucnVsZVNldC0+cmVnaW9uU2VsZWN0b3JzQW5kUnVsZVNldHMoKS5hdChpKS5zZWxlY3RvcjsK
LSAgICAgICAgaWYgKGNoZWNrUmVnaW9uU2VsZWN0b3IocmVnaW9uU2VsZWN0b3IsIG1fcmVnaW9u
Rm9yU3R5bGluZy0+Z2VuZXJhdGluZ0VsZW1lbnQoKSkpIHsKLSAgICAgICAgICAgIFJ1bGVTZXQq
IHJlZ2lvblJ1bGVzID0gbWF0Y2hSZXF1ZXN0LnJ1bGVTZXQtPnJlZ2lvblNlbGVjdG9yc0FuZFJ1
bGVTZXRzKCkuYXQoaSkucnVsZVNldC5nZXQoKTsKLSAgICAgICAgICAgIEFTU0VSVChyZWdpb25S
dWxlcyk7Ci0gICAgICAgICAgICBjb2xsZWN0TWF0Y2hpbmdSdWxlcyhNYXRjaFJlcXVlc3QocmVn
aW9uUnVsZXMsIG1hdGNoUmVxdWVzdC5pbmNsdWRlRW1wdHlSdWxlcyksIHJ1bGVSYW5nZSk7Ci0g
ICAgICAgIH0KLSAgICB9Ci19Ci0KIHZvaWQgRWxlbWVudFJ1bGVDb2xsZWN0b3I6OnNvcnRBbmRU
cmFuc2Zlck1hdGNoZWRSdWxlcygpCiB7CiAgICAgaWYgKG1fbWF0Y2hlZFJ1bGVzLmlzRW1wdHko
KSkKQEAgLTIwOCw3ICsxOTEsNiBAQCB2b2lkIEVsZW1lbnRSdWxlQ29sbGVjdG9yOjptYXRjaEF1
dGhvclJ1CiAgICAgewogICAgICAgICBNYXRjaFJlcXVlc3QgbWF0Y2hSZXF1ZXN0KCZtX2F1dGhv
clN0eWxlLCBpbmNsdWRlRW1wdHlSdWxlcyk7CiAgICAgICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVz
KG1hdGNoUmVxdWVzdCwgcnVsZVJhbmdlKTsKLSAgICAgICAgY29sbGVjdE1hdGNoaW5nUnVsZXNG
b3JSZWdpb24obWF0Y2hSZXF1ZXN0LCBydWxlUmFuZ2UpOwogICAgIH0KIAogICAgIGF1dG8qIHBh
cmVudCA9IG1fZWxlbWVudC5wYXJlbnRFbGVtZW50KCk7CkBAIC0zMjcsNyArMzA5LDYgQEAgdm9p
ZCBFbGVtZW50UnVsZUNvbGxlY3Rvcjo6bWF0Y2hVc2VyUnVsZQogICAgIE1hdGNoUmVxdWVzdCBt
YXRjaFJlcXVlc3QobV91c2VyU3R5bGUsIGluY2x1ZGVFbXB0eVJ1bGVzKTsKICAgICBTdHlsZVJl
c29sdmVyOjpSdWxlUmFuZ2UgcnVsZVJhbmdlID0gbV9yZXN1bHQucmFuZ2VzLnVzZXJSdWxlUmFu
Z2UoKTsKICAgICBjb2xsZWN0TWF0Y2hpbmdSdWxlcyhtYXRjaFJlcXVlc3QsIHJ1bGVSYW5nZSk7
Ci0gICAgY29sbGVjdE1hdGNoaW5nUnVsZXNGb3JSZWdpb24obWF0Y2hSZXF1ZXN0LCBydWxlUmFu
Z2UpOwogCiAgICAgc29ydEFuZFRyYW5zZmVyTWF0Y2hlZFJ1bGVzKCk7CiB9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9jc3MvRWxlbWVudFJ1bGVDb2xsZWN0b3IuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9jc3MvRWxlbWVudFJ1bGVDb2xsZWN0b3IuaAkocmV2aXNpb24gMjIyMjU3KQor
KysgU291cmNlL1dlYkNvcmUvY3NzL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTMyLDcgKzMyLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBEb2N1bWVu
dFJ1bGVTZXRzOwogY2xhc3MgTWF0Y2hSZXF1ZXN0OwotY2xhc3MgUmVuZGVyUmVnaW9uOwogY2xh
c3MgUnVsZURhdGE7CiBjbGFzcyBSdWxlU2V0OwogY2xhc3MgU2VsZWN0b3JGaWx0ZXI7CkBAIC01
Niw3ICs1NSw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE1vZGUoU2VsZWN0b3JDaGVja2VyOjpN
b2RlIG1vZGUpIHsgbV9tb2RlID0gbW9kZTsgfQogICAgIHZvaWQgc2V0UHNldWRvU3R5bGVSZXF1
ZXN0KGNvbnN0IFBzZXVkb1N0eWxlUmVxdWVzdCYgcmVxdWVzdCkgeyBtX3BzZXVkb1N0eWxlUmVx
dWVzdCA9IHJlcXVlc3Q7IH0KICAgICB2b2lkIHNldFNhbWVPcmlnaW5Pbmx5KGJvb2wgZikgeyBt
X3NhbWVPcmlnaW5Pbmx5ID0gZjsgfSAKLSAgICB2b2lkIHNldFJlZ2lvbkZvclN0eWxpbmcoY29u
c3QgUmVuZGVyUmVnaW9uKiByZWdpb25Gb3JTdHlsaW5nKSB7IG1fcmVnaW9uRm9yU3R5bGluZyA9
IHJlZ2lvbkZvclN0eWxpbmc7IH0KICAgICB2b2lkIHNldE1lZGl1bShjb25zdCBNZWRpYVF1ZXJ5
RXZhbHVhdG9yKiBtZWRpdW0pIHsgbV9pc1ByaW50U3R5bGUgPSBtZWRpdW0tPm1lZGlhVHlwZU1h
dGNoU3BlY2lmaWMoInByaW50Iik7IH0KIAogICAgIGJvb2wgaGFzQW55TWF0Y2hpbmdSdWxlcyhj
b25zdCBSdWxlU2V0Kik7CkBAIC04Myw3ICs4MSw2IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlx
dWVfcHRyPFJ1bGVTZXQ6OlJ1bGVEYXRhVmVjdG9yPiBjb2xsZWN0U2xvdHRlZFBzZXVkb0VsZW1l
bnRSdWxlc0ZvclNsb3QoYm9vbCBpbmNsdWRlRW1wdHlSdWxlcyk7CiAKICAgICB2b2lkIGNvbGxl
Y3RNYXRjaGluZ1J1bGVzKGNvbnN0IE1hdGNoUmVxdWVzdCYsIFN0eWxlUmVzb2x2ZXI6OlJ1bGVS
YW5nZSYpOwotICAgIHZvaWQgY29sbGVjdE1hdGNoaW5nUnVsZXNGb3JSZWdpb24oY29uc3QgTWF0
Y2hSZXF1ZXN0JiwgU3R5bGVSZXNvbHZlcjo6UnVsZVJhbmdlJik7CiAgICAgdm9pZCBjb2xsZWN0
TWF0Y2hpbmdSdWxlc0Zvckxpc3QoY29uc3QgUnVsZVNldDo6UnVsZURhdGFWZWN0b3IqLCBjb25z
dCBNYXRjaFJlcXVlc3QmLCBTdHlsZVJlc29sdmVyOjpSdWxlUmFuZ2UmKTsKICAgICBib29sIHJ1
bGVNYXRjaGVzKGNvbnN0IFJ1bGVEYXRhJiwgdW5zaWduZWQgJnNwZWNpZmljaXR5KTsKIApAQCAt
OTgsNyArOTUsNiBAQCBwcml2YXRlOgogICAgIGNvbnN0IFNlbGVjdG9yRmlsdGVyKiBtX3NlbGVj
dG9yRmlsdGVyIHsgbnVsbHB0ciB9OwogCiAgICAgYm9vbCBtX2lzUHJpbnRTdHlsZSB7IGZhbHNl
IH07Ci0gICAgY29uc3QgUmVuZGVyUmVnaW9uKiBtX3JlZ2lvbkZvclN0eWxpbmcgeyBudWxscHRy
IH07CiAgICAgUHNldWRvU3R5bGVSZXF1ZXN0IG1fcHNldWRvU3R5bGVSZXF1ZXN0IHsgTk9QU0VV
RE8gfTsKICAgICBib29sIG1fc2FtZU9yaWdpbk9ubHkgeyBmYWxzZSB9OwogICAgIFNlbGVjdG9y
Q2hlY2tlcjo6TW9kZSBtX21vZGUgeyBTZWxlY3RvckNoZWNrZXI6Ok1vZGU6OlJlc29sdmluZ1N0
eWxlIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvSW5zcGVjdG9yQ1NTT01XcmFwcGVycy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0luc3BlY3RvckNTU09NV3JhcHBl
cnMuY3BwCShyZXZpc2lvbiAyMjIyNTcpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvSW5zcGVjdG9y
Q1NTT01XcmFwcGVycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDYgQEAKICNpbmNs
dWRlICJFeHRlbnNpb25TdHlsZVNoZWV0cy5oIgogI2luY2x1ZGUgIlN0eWxlU2NvcGUuaCIKICNp
bmNsdWRlICJTdHlsZVNoZWV0Q29udGVudHMuaCIKLSNpbmNsdWRlICJXZWJLaXRDU1NSZWdpb25S
dWxlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNjcsMTEgKzY2LDYgQEAgdm9pZCBJ
bnNwZWN0b3JDU1NPTVdyYXBwZXJzOjpjb2xsZWN0KExpcwogICAgICAgICBjYXNlIENTU1J1bGU6
OlNVUFBPUlRTX1JVTEU6CiAgICAgICAgICAgICBjb2xsZWN0KGRvd25jYXN0PENTU1N1cHBvcnRz
UnVsZT4oY3NzUnVsZSkpOwogICAgICAgICAgICAgYnJlYWs7Ci0jaWYgRU5BQkxFKENTU19SRUdJ
T05TKQotICAgICAgICBjYXNlIENTU1J1bGU6OldFQktJVF9SRUdJT05fUlVMRToKLSAgICAgICAg
ICAgIGNvbGxlY3QoZG93bmNhc3Q8V2ViS2l0Q1NTUmVnaW9uUnVsZT4oY3NzUnVsZSkpOwotICAg
ICAgICAgICAgYnJlYWs7Ci0jZW5kaWYKICAgICAgICAgY2FzZSBDU1NSdWxlOjpTVFlMRV9SVUxF
OgogICAgICAgICAgICAgbV9zdHlsZVJ1bGVUb0NTU09NV3JhcHBlck1hcC5hZGQoJmRvd25jYXN0
PENTU1N0eWxlUnVsZT4oKmNzc1J1bGUpLnN0eWxlUnVsZSgpLCBkb3duY2FzdDxDU1NTdHlsZVJ1
bGU+KGNzc1J1bGUpKTsKICAgICAgICAgICAgIGJyZWFrOwpJbmRleDogU291cmNlL1dlYkNvcmUv
Y3NzL1J1bGVTZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlU2V0
LmNwcAkocmV2aXNpb24gMjIyMjU3KQorKysgU291cmNlL1dlYkNvcmUvY3NzL1J1bGVTZXQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMzUsMTAgKzEzNSw4IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBj
b250YWluc1VuY29tbW9uQXR0cmkKICAgICByZXR1cm4gY29udGFpbnNVbmNvbW1vbkF0dHJpYnV0
ZVNlbGVjdG9yKHJvb3RTZWxlY3RvciwgdHJ1ZSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgUHJvcGVy
dHlXaGl0ZWxpc3RUeXBlIGRldGVybWluZVByb3BlcnR5V2hpdGVsaXN0VHlwZShjb25zdCBBZGRS
dWxlRmxhZ3MgYWRkUnVsZUZsYWdzLCBjb25zdCBDU1NTZWxlY3Rvciogc2VsZWN0b3IpCitzdGF0
aWMgaW5saW5lIFByb3BlcnR5V2hpdGVsaXN0VHlwZSBkZXRlcm1pbmVQcm9wZXJ0eVdoaXRlbGlz
dFR5cGUoY29uc3QgQ1NTU2VsZWN0b3IqIHNlbGVjdG9yKQogewotICAgIGlmIChhZGRSdWxlRmxh
Z3MgJiBSdWxlSXNJblJlZ2lvblJ1bGUpCi0gICAgICAgIHJldHVybiBQcm9wZXJ0eVdoaXRlbGlz
dFJlZ2lvbjsKICAgICBmb3IgKGNvbnN0IENTU1NlbGVjdG9yKiBjb21wb25lbnQgPSBzZWxlY3Rv
cjsgY29tcG9uZW50OyBjb21wb25lbnQgPSBjb21wb25lbnQtPnRhZ0hpc3RvcnkoKSkgewogI2lm
IEVOQUJMRShWSURFT19UUkFDSykKICAgICAgICAgaWYgKGNvbXBvbmVudC0+bWF0Y2goKSA9PSBD
U1NTZWxlY3Rvcjo6UHNldWRvRWxlbWVudCAmJiAoY29tcG9uZW50LT5wc2V1ZG9FbGVtZW50VHlw
ZSgpID09IENTU1NlbGVjdG9yOjpQc2V1ZG9FbGVtZW50Q3VlIHx8IGNvbXBvbmVudC0+dmFsdWUo
KSA9PSBUZXh0VHJhY2tDdWU6OmN1ZVNoYWRvd1BzZXVkb0lkKCkpKQpAQCAtMTU5LDcgKzE1Nyw3
IEBAIFJ1bGVEYXRhOjpSdWxlRGF0YShTdHlsZVJ1bGUqIHJ1bGUsIHVuc2kKICAgICAsIG1fY2Fu
TWF0Y2hQc2V1ZG9FbGVtZW50KHNlbGVjdG9yQ2FuTWF0Y2hQc2V1ZG9FbGVtZW50KCpzZWxlY3Rv
cigpKSkKICAgICAsIG1fY29udGFpbnNVbmNvbW1vbkF0dHJpYnV0ZVNlbGVjdG9yKFdlYkNvcmU6
OmNvbnRhaW5zVW5jb21tb25BdHRyaWJ1dGVTZWxlY3Rvcigqc2VsZWN0b3IoKSkpCiAgICAgLCBt
X2xpbmtNYXRjaFR5cGUoU2VsZWN0b3JDaGVja2VyOjpkZXRlcm1pbmVMaW5rTWF0Y2hUeXBlKHNl
bGVjdG9yKCkpKQotICAgICwgbV9wcm9wZXJ0eVdoaXRlbGlzdFR5cGUoZGV0ZXJtaW5lUHJvcGVy
dHlXaGl0ZWxpc3RUeXBlKGFkZFJ1bGVGbGFncywgc2VsZWN0b3IoKSkpCisgICAgLCBtX3Byb3Bl
cnR5V2hpdGVsaXN0VHlwZShkZXRlcm1pbmVQcm9wZXJ0eVdoaXRlbGlzdFR5cGUoc2VsZWN0b3Io
KSkpCiAjaWYgRU5BQkxFKENTU19TRUxFQ1RPUl9KSVQpICYmIENTU19TRUxFQ1RPUl9KSVRfUFJP
RklMSU5HCiAgICAgLCBtX2NvbXBpbGVkU2VsZWN0b3JVc2VDb3VudCgwKQogI2VuZGlmCkBAIC0z
NjYsMjkgKzM2NCw2IEBAIHZvaWQgUnVsZVNldDo6YWRkUGFnZVJ1bGUoU3R5bGVSdWxlUGFnZSoK
ICAgICBtX3BhZ2VSdWxlcy5hcHBlbmQocnVsZSk7CiB9CiAKLXZvaWQgUnVsZVNldDo6YWRkUmVn
aW9uUnVsZShTdHlsZVJ1bGVSZWdpb24qIHJlZ2lvblJ1bGUsIGJvb2wgaGFzRG9jdW1lbnRTZWN1
cml0eU9yaWdpbikKLXsKLSAgICBhdXRvIHJlZ2lvblJ1bGVTZXQgPSBzdGQ6Om1ha2VfdW5pcXVl
PFJ1bGVTZXQ+KCk7Ci0gICAgLy8gVGhlIHJlZ2lvbiBydWxlIHNldCBzaG91bGQgdGFrZSBpbnRv
IGFjY291bnQgdGhlIHBvc2l0aW9uIGluc2lkZSB0aGUgcGFyZW50IHJ1bGUgc2V0LgotICAgIC8v
IE90aGVyd2lzZSwgdGhlIHJ1bGVzIGluc2lkZSByZWdpb24gYmxvY2sgbWlnaHQgYmUgaW5jb3Jy
ZWN0bHkgcG9zaXRpb25lZCBiZWZvcmUgb3RoZXIgc2ltaWxhciBydWxlcyBmcm9tCi0gICAgLy8g
dGhlIHN0eWxlc2hlZXQgdGhhdCBjb250YWlucyB0aGUgcmVnaW9uIGJsb2NrLgotICAgIHJlZ2lv
blJ1bGVTZXQtPm1fcnVsZUNvdW50ID0gbV9ydWxlQ291bnQ7Ci0KLSAgICAvLyBDb2xsZWN0IHRo
ZSByZWdpb24gcnVsZXMgaW50byBhIHJ1bGUgc2V0Ci0gICAgLy8gRklYTUU6IFNob3VsZCB0aGlz
IGFkZCBvdGhlciB0eXBlcyBvZiBydWxlcz8gKGkuZS4gdXNlIGFkZENoaWxkUnVsZXMoKSBkaXJl
Y3RseT8pCi0gICAgY29uc3QgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGVCYXNlPj4mIGNoaWxkUnVs
ZXMgPSByZWdpb25SdWxlLT5jaGlsZFJ1bGVzKCk7Ci0gICAgQWRkUnVsZUZsYWdzIGFkZFJ1bGVG
bGFncyA9IGhhc0RvY3VtZW50U2VjdXJpdHlPcmlnaW4gPyBSdWxlSGFzRG9jdW1lbnRTZWN1cml0
eU9yaWdpbiA6IFJ1bGVIYXNOb1NwZWNpYWxTdGF0ZTsKLSAgICBhZGRSdWxlRmxhZ3MgPSBzdGF0
aWNfY2FzdDxBZGRSdWxlRmxhZ3M+KGFkZFJ1bGVGbGFncyB8IFJ1bGVJc0luUmVnaW9uUnVsZSk7
Ci0gICAgZm9yIChhdXRvJiBjaGlsZFJ1bGUgOiBjaGlsZFJ1bGVzKSB7Ci0gICAgICAgIGlmIChp
czxTdHlsZVJ1bGU+KCpjaGlsZFJ1bGUpKQotICAgICAgICAgICAgcmVnaW9uUnVsZVNldC0+YWRk
U3R5bGVSdWxlKGRvd25jYXN0PFN0eWxlUnVsZT4oY2hpbGRSdWxlLmdldCgpKSwgYWRkUnVsZUZs
YWdzKTsKLSAgICB9Ci0gICAgLy8gVXBkYXRlIHRoZSAiZ2xvYmFsIiBydWxlIGNvdW50IHNvIHRo
YXQgcHJvcGVyIG9yZGVyIGlzIG1haW50YWluZWQKLSAgICBtX3J1bGVDb3VudCA9IHJlZ2lvblJ1
bGVTZXQtPm1fcnVsZUNvdW50OwotCi0gICAgbV9yZWdpb25TZWxlY3RvcnNBbmRSdWxlU2V0cy5h
cHBlbmQoUnVsZVNldFNlbGVjdG9yUGFpcihyZWdpb25SdWxlLT5zZWxlY3Rvckxpc3QoKS5maXJz
dCgpLCBXVEZNb3ZlKHJlZ2lvblJ1bGVTZXQpKSk7Ci19Ci0KIHZvaWQgUnVsZVNldDo6YWRkQ2hp
bGRSdWxlcyhjb25zdCBWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZUJhc2U+PiYgcnVsZXMsIGNvbnN0
IE1lZGlhUXVlcnlFdmFsdWF0b3ImIG1lZGl1bSwgU3R5bGVSZXNvbHZlciogcmVzb2x2ZXIsIGJv
b2wgaGFzRG9jdW1lbnRTZWN1cml0eU9yaWdpbiwgYm9vbCBpc0luaXRpYXRpbmdFbGVtZW50SW5V
c2VyQWdlbnRTaGFkb3dUcmVlLCBBZGRSdWxlRmxhZ3MgYWRkUnVsZUZsYWdzKQogewogICAgIGZv
ciAoYXV0byYgcnVsZSA6IHJ1bGVzKSB7CkBAIC00MDgsMTEgKzM4Myw2IEBAIHZvaWQgUnVsZVNl
dDo6YWRkQ2hpbGRSdWxlcyhjb25zdCBWZWN0b3IKICAgICAgICAgICAgIHJlc29sdmVyLT5hZGRL
ZXlmcmFtZVN0eWxlKGRvd25jYXN0PFN0eWxlUnVsZUtleWZyYW1lcz4oKnJ1bGUpKTsKICAgICAg
ICAgZWxzZSBpZiAoaXM8U3R5bGVSdWxlU3VwcG9ydHM+KCpydWxlKSAmJiBkb3duY2FzdDxTdHls
ZVJ1bGVTdXBwb3J0cz4oKnJ1bGUpLmNvbmRpdGlvbklzU3VwcG9ydGVkKCkpCiAgICAgICAgICAg
ICBhZGRDaGlsZFJ1bGVzKGRvd25jYXN0PFN0eWxlUnVsZVN1cHBvcnRzPigqcnVsZSkuY2hpbGRS
dWxlcygpLCBtZWRpdW0sIHJlc29sdmVyLCBoYXNEb2N1bWVudFNlY3VyaXR5T3JpZ2luLCBpc0lu
aXRpYXRpbmdFbGVtZW50SW5Vc2VyQWdlbnRTaGFkb3dUcmVlLCBhZGRSdWxlRmxhZ3MpOwotI2lm
IEVOQUJMRShDU1NfUkVHSU9OUykKLSAgICAgICAgZWxzZSBpZiAoaXM8U3R5bGVSdWxlUmVnaW9u
PigqcnVsZSkgJiYgcmVzb2x2ZXIpIHsKLSAgICAgICAgICAgIGFkZFJlZ2lvblJ1bGUoZG93bmNh
c3Q8U3R5bGVSdWxlUmVnaW9uPihydWxlLmdldCgpKSwgaGFzRG9jdW1lbnRTZWN1cml0eU9yaWdp
bik7Ci0gICAgICAgIH0KLSNlbmRpZgogI2lmIEVOQUJMRShDU1NfREVWSUNFX0FEQVBUQVRJT04p
CiAgICAgICAgIGVsc2UgaWYgKGlzPFN0eWxlUnVsZVZpZXdwb3J0PigqcnVsZSkgJiYgcmVzb2x2
ZXIpIHsKICAgICAgICAgICAgIHJlc29sdmVyLT52aWV3cG9ydFN0eWxlUmVzb2x2ZXIoKS0+YWRk
Vmlld3BvcnRSdWxlKGRvd25jYXN0PFN0eWxlUnVsZVZpZXdwb3J0PihydWxlLmdldCgpKSk7CkBA
IC00ODAsNyArNDUwLDYgQEAgdm9pZCBSdWxlU2V0OjpzaHJpbmtUb0ZpdCgpCiAgICAgbV91bml2
ZXJzYWxSdWxlcy5zaHJpbmtUb0ZpdCgpOwogICAgIG1fcGFnZVJ1bGVzLnNocmlua1RvRml0KCk7
CiAgICAgbV9mZWF0dXJlcy5zaHJpbmtUb0ZpdCgpOwotICAgIG1fcmVnaW9uU2VsZWN0b3JzQW5k
UnVsZVNldHMuc2hyaW5rVG9GaXQoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRl
eDogU291cmNlL1dlYkNvcmUvY3NzL1J1bGVTZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9jc3MvUnVsZVNldC5oCShyZXZpc2lvbiAyMjIyNTcpCisrKyBTb3VyY2UvV2ViQ29yZS9j
c3MvUnVsZVNldC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCwxMyArMzQsMTEgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogZW51bSBBZGRSdWxlRmxhZ3MgewogICAgIFJ1bGVIYXNOb1NwZWNpYWxTdGF0
ZSAgICAgICAgID0gMCwKICAgICBSdWxlSGFzRG9jdW1lbnRTZWN1cml0eU9yaWdpbiA9IDEsCi0g
ICAgUnVsZUlzSW5SZWdpb25SdWxlICAgICAgICAgICAgPSAxIDw8IDEsCiB9OwogICAgIAogZW51
bSBQcm9wZXJ0eVdoaXRlbGlzdFR5cGUgewogICAgIFByb3BlcnR5V2hpdGVsaXN0Tm9uZSAgID0g
MCwKICAgICBQcm9wZXJ0eVdoaXRlbGlzdE1hcmtlciwKLSAgICBQcm9wZXJ0eVdoaXRlbGlzdFJl
Z2lvbiwKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAgICAgUHJvcGVydHlXaGl0ZWxpc3RDdWUK
ICNlbmRpZgpAQCAtNTEsNyArNDksNiBAQCBjbGFzcyBDb250YWluZXJOb2RlOwogY2xhc3MgTWVk
aWFRdWVyeUV2YWx1YXRvcjsKIGNsYXNzIE5vZGU7CiBjbGFzcyBTdHlsZVJlc29sdmVyOwotY2xh
c3MgU3R5bGVSdWxlUmVnaW9uOwogY2xhc3MgU3R5bGVTaGVldENvbnRlbnRzOwogCiBlbnVtIGNs
YXNzIE1hdGNoQmFzZWRPblJ1bGVIYXNoIDogdW5zaWduZWQgewpAQCAtMTY3LDcgKzE2NCw2IEBA
IHB1YmxpYzoKICAgICB2b2lkIGFkZFJ1bGUoU3R5bGVSdWxlKiwgdW5zaWduZWQgc2VsZWN0b3JJ
bmRleCwgQWRkUnVsZUZsYWdzKTsKICAgICB2b2lkIGFkZFBhZ2VSdWxlKFN0eWxlUnVsZVBhZ2Uq
KTsKICAgICB2b2lkIGFkZFRvUnVsZVNldChjb25zdCBBdG9taWNTdHJpbmcmIGtleSwgQXRvbVJ1
bGVNYXAmLCBjb25zdCBSdWxlRGF0YSYpOwotICAgIHZvaWQgYWRkUmVnaW9uUnVsZShTdHlsZVJ1
bGVSZWdpb24qLCBib29sIGhhc0RvY3VtZW50U2VjdXJpdHlPcmlnaW4pOwogICAgIHZvaWQgc2hy
aW5rVG9GaXQoKTsKICAgICB2b2lkIGRpc2FibGVBdXRvU2hyaW5rVG9GaXQoKSB7IG1fYXV0b1No
cmlua1RvRml0RW5hYmxlZCA9IGZhbHNlOyB9CiAKQEAgLTE4Nyw3ICsxODMsNiBAQCBwdWJsaWM6
CiAgICAgY29uc3QgUnVsZURhdGFWZWN0b3IqIHVuaXZlcnNhbFJ1bGVzKCkgY29uc3QgeyByZXR1
cm4gJm1fdW5pdmVyc2FsUnVsZXM7IH0KIAogICAgIGNvbnN0IFZlY3RvcjxTdHlsZVJ1bGVQYWdl
Kj4mIHBhZ2VSdWxlcygpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZVJ1bGVzOyB9Ci0gICAgY29uc3Qg
VmVjdG9yPFJ1bGVTZXRTZWxlY3RvclBhaXI+JiByZWdpb25TZWxlY3RvcnNBbmRSdWxlU2V0cygp
IGNvbnN0IHsgcmV0dXJuIG1fcmVnaW9uU2VsZWN0b3JzQW5kUnVsZVNldHM7IH0KIAogICAgIHVu
c2lnbmVkIHJ1bGVDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fcnVsZUNvdW50OyB9CiAKQEAgLTIx
NSw3ICsyMTAsNiBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9oYXNIb3N0UHNldWRvQ2xhc3NSdWxl
c01hdGNoaW5nSW5TaGFkb3dUcmVlIHsgZmFsc2UgfTsKICAgICBib29sIG1fYXV0b1Nocmlua1Rv
Rml0RW5hYmxlZCB7IHRydWUgfTsKICAgICBSdWxlRmVhdHVyZVNldCBtX2ZlYXR1cmVzOwotICAg
IFZlY3RvcjxSdWxlU2V0U2VsZWN0b3JQYWlyPiBtX3JlZ2lvblNlbGVjdG9yc0FuZFJ1bGVTZXRz
OwogfTsKIAogaW5saW5lIGNvbnN0IFJ1bGVTZXQ6OlJ1bGVEYXRhVmVjdG9yKiBSdWxlU2V0Ojp0
YWdSdWxlcyhjb25zdCBBdG9taWNTdHJpbmcmIGtleSwgYm9vbCBpc0hUTUxOYW1lKSBjb25zdApJ
bmRleDogU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaAkocmV2aXNp
b24gMjIyMjU3KQorKysgU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckNvbnZlcnRlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xNDMsMTEgKzE0Myw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
QnJlYWtJbnNpZGUgY29udmVydFBhZ2VCcmVha0luc2lkZShTdHlsZVJlc29sdmVyJiwgY29uc3Qg
Q1NTVmFsdWUmKTsKICAgICBzdGF0aWMgQnJlYWtCZXR3ZWVuIGNvbnZlcnRDb2x1bW5CcmVha0Jl
dHdlZW4oU3R5bGVSZXNvbHZlciYsIGNvbnN0IENTU1ZhbHVlJik7CiAgICAgc3RhdGljIEJyZWFr
SW5zaWRlIGNvbnZlcnRDb2x1bW5CcmVha0luc2lkZShTdHlsZVJlc29sdmVyJiwgY29uc3QgQ1NT
VmFsdWUmKTsKLSNpZiBFTkFCTEUoQ1NTX1JFR0lPTlMpCi0gICAgc3RhdGljIEJyZWFrQmV0d2Vl
biBjb252ZXJ0UmVnaW9uQnJlYWtCZXR3ZWVuKFN0eWxlUmVzb2x2ZXImLCBjb25zdCBDU1NWYWx1
ZSYpOwotICAgIHN0YXRpYyBCcmVha0luc2lkZSBjb252ZXJ0UmVnaW9uQnJlYWtJbnNpZGUoU3R5
bGVSZXNvbHZlciYsIGNvbnN0IENTU1ZhbHVlJik7Ci0jZW5kaWYKLSAgICAKKwogICAgIHN0YXRp
YyBIYW5naW5nUHVuY3R1YXRpb24gY29udmVydEhhbmdpbmdQdW5jdHVhdGlvbihTdHlsZVJlc29s
dmVyJiwgY29uc3QgQ1NTVmFsdWUmKTsKIAogICAgIHN0YXRpYyBMZW5ndGggY29udmVydFBvc2l0
aW9uQ29tcG9uZW50WChTdHlsZVJlc29sdmVyJiwgY29uc3QgQ1NTVmFsdWUmKTsKQEAgLTE1MjAs
MjYgKzE1MTYsNiBAQCBpbmxpbmUgQnJlYWtJbnNpZGUgU3R5bGVCdWlsZGVyQ29udmVydGVyCiAg
ICAgcmV0dXJuIHByaW1pdGl2ZVZhbHVlOwogfQogCi0jaWYgRU5BQkxFKENTU19SRUdJT05TKQot
aW5saW5lIEJyZWFrQmV0d2VlbiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRSZWdpb25C
cmVha0JldHdlZW4oU3R5bGVSZXNvbHZlciYsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKLXsKLSAg
ICBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1
ZSk7Ci0gICAgaWYgKHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZUFsd2F5cykK
LSAgICAgICAgcmV0dXJuIFJlZ2lvbkJyZWFrQmV0d2VlbjsKLSAgICBpZiAocHJpbWl0aXZlVmFs
dWUudmFsdWVJRCgpID09IENTU1ZhbHVlQXZvaWQpCi0gICAgICAgIHJldHVybiBBdm9pZFJlZ2lv
bkJyZWFrQmV0d2VlbjsKLSAgICByZXR1cm4gcHJpbWl0aXZlVmFsdWU7Ci19Ci0KLWlubGluZSBC
cmVha0luc2lkZSBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRSZWdpb25CcmVha0luc2lk
ZShTdHlsZVJlc29sdmVyJiwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQotewotICAgIGF1dG8mIHBy
aW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsKLSAgICBp
ZiAocHJpbWl0aXZlVmFsdWUudmFsdWVJRCgpID09IENTU1ZhbHVlQXZvaWQpCi0gICAgICAgIHJl
dHVybiBBdm9pZFJlZ2lvbkJyZWFrSW5zaWRlOwotICAgIHJldHVybiBwcmltaXRpdmVWYWx1ZTsK
LX0KLSNlbmRpZgotCiBpbmxpbmUgSGFuZ2luZ1B1bmN0dWF0aW9uIFN0eWxlQnVpbGRlckNvbnZl
cnRlcjo6Y29udmVydEhhbmdpbmdQdW5jdHVhdGlvbihTdHlsZVJlc29sdmVyJiwgY29uc3QgQ1NT
VmFsdWUmIHZhbHVlKQogewogICAgIEhhbmdpbmdQdW5jdHVhdGlvbiByZXN1bHQgPSBSZW5kZXJT
dHlsZTo6aW5pdGlhbEhhbmdpbmdQdW5jdHVhdGlvbigpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
Y3NzL1N0eWxlUHJvcGVydGllcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3Nz
L1N0eWxlUHJvcGVydGllcy5jcHAJKHJldmlzaW9uIDIyMjI1NykKKysrIFNvdXJjZS9XZWJDb3Jl
L2Nzcy9TdHlsZVByb3BlcnRpZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTkxLDExICsxMTkx
LDYgQEAgc3RhdGljIGNvbnN0IENTU1Byb3BlcnR5SUQgYmxvY2tQcm9wZXJ0aQogICAgIENTU1By
b3BlcnR5UGFnZUJyZWFrQWZ0ZXIsCiAgICAgQ1NTUHJvcGVydHlQYWdlQnJlYWtCZWZvcmUsCiAg
ICAgQ1NTUHJvcGVydHlQYWdlQnJlYWtJbnNpZGUsCi0jaWYgRU5BQkxFKENTU19SRUdJT05TKQot
ICAgIENTU1Byb3BlcnR5V2Via2l0UmVnaW9uQnJlYWtBZnRlciwKLSAgICBDU1NQcm9wZXJ0eVdl
YmtpdFJlZ2lvbkJyZWFrQmVmb3JlLAotICAgIENTU1Byb3BlcnR5V2Via2l0UmVnaW9uQnJlYWtJ
bnNpZGUsCi0jZW5kaWYKICAgICBDU1NQcm9wZXJ0eVRleHRBbGlnbiwKICNpZiBFTkFCTEUoQ1NT
M19URVhUKQogICAgIENTU1Byb3BlcnR5V2Via2l0VGV4dEFsaWduTGFzdCwKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAJKHJldmlzaW9uIDIyMjI1NykKKysrIFNvdXJjZS9X
ZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzUsNyArNzUs
NiBAQAogI2luY2x1ZGUgIk5vZGVSZW5kZXJTdHlsZS5oIgogI2luY2x1ZGUgIlBhZ2VSdWxlQ29s
bGVjdG9yLmgiCiAjaW5jbHVkZSAiUGFpci5oIgotI2luY2x1ZGUgIlJlbmRlclJlZ2lvbi5oIgog
I2luY2x1ZGUgIlJlbmRlclNjcm9sbGJhci5oIgogI2luY2x1ZGUgIlJlbmRlclN0eWxlQ29uc3Rh
bnRzLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIKQEAgLTE0MSw3ICsxNDAsNiBAQCBpbmxp
bmUgdm9pZCBTdHlsZVJlc29sdmVyOjpTdGF0ZTo6Y2xlYXIoCiAgICAgbV9lbGVtZW50ID0gbnVs
bHB0cjsKICAgICBtX3BhcmVudFN0eWxlID0gbnVsbHB0cjsKICAgICBtX293bmVkUGFyZW50U3R5
bGUgPSBudWxscHRyOwotICAgIG1fcmVnaW9uRm9yU3R5bGluZyA9IG51bGxwdHI7CiAgICAgbV9j
c3NUb0xlbmd0aENvbnZlcnNpb25EYXRhID0gQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSgpOwog
fQogCkBAIC0yOTgsMTAgKzI5Niw5IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6c3dlZXBNYXRjaGVk
UHJvcGVydGkKICAgICBtX21hdGNoZWRQcm9wZXJ0aWVzQ2FjaGVBZGRpdGlvbnNTaW5jZUxhc3RT
d2VlcCA9IDA7CiB9CiAKLVN0eWxlUmVzb2x2ZXI6OlN0YXRlOjpTdGF0ZShjb25zdCBFbGVtZW50
JiBlbGVtZW50LCBjb25zdCBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0
eWxlKiBkb2N1bWVudEVsZW1lbnRTdHlsZSwgY29uc3QgUmVuZGVyUmVnaW9uKiByZWdpb25Gb3JT
dHlsaW5nLCBjb25zdCBTZWxlY3RvckZpbHRlciogc2VsZWN0b3JGaWx0ZXIpCitTdHlsZVJlc29s
dmVyOjpTdGF0ZTo6U3RhdGUoY29uc3QgRWxlbWVudCYgZWxlbWVudCwgY29uc3QgUmVuZGVyU3R5
bGUqIHBhcmVudFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSogZG9jdW1lbnRFbGVtZW50U3R5bGUs
IGNvbnN0IFNlbGVjdG9yRmlsdGVyKiBzZWxlY3RvckZpbHRlcikKICAgICA6IG1fZWxlbWVudCgm
ZWxlbWVudCkKICAgICAsIG1fcGFyZW50U3R5bGUocGFyZW50U3R5bGUpCi0gICAgLCBtX3JlZ2lv
bkZvclN0eWxpbmcocmVnaW9uRm9yU3R5bGluZykKICAgICAsIG1fZWxlbWVudExpbmtTdGF0ZShl
bGVtZW50LmRvY3VtZW50KCkudmlzaXRlZExpbmtTdGF0ZSgpLmRldGVybWluZUxpbmtTdGF0ZShl
bGVtZW50KSkKICAgICAsIG1fc2VsZWN0b3JGaWx0ZXIoc2VsZWN0b3JGaWx0ZXIpCiB7CkBAIC0z
NDIsMTEgKzMzOSwxMSBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNBdFNoYWRvd0JvdW5kYXJ5KGNv
CiAgICAgcmV0dXJuIHBhcmVudE5vZGUgJiYgcGFyZW50Tm9kZS0+aXNTaGFkb3dSb290KCk7CiB9
CiAKLUVsZW1lbnRTdHlsZSBTdHlsZVJlc29sdmVyOjpzdHlsZUZvckVsZW1lbnQoY29uc3QgRWxl
bWVudCYgZWxlbWVudCwgY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlLCBjb25zdCBSZW5k
ZXJTdHlsZSogcGFyZW50Qm94U3R5bGUsIFJ1bGVNYXRjaGluZ0JlaGF2aW9yIG1hdGNoaW5nQmVo
YXZpb3IsIGNvbnN0IFJlbmRlclJlZ2lvbiogcmVnaW9uRm9yU3R5bGluZywgY29uc3QgU2VsZWN0
b3JGaWx0ZXIqIHNlbGVjdG9yRmlsdGVyKQorRWxlbWVudFN0eWxlIFN0eWxlUmVzb2x2ZXI6OnN0
eWxlRm9yRWxlbWVudChjb25zdCBFbGVtZW50JiBlbGVtZW50LCBjb25zdCBSZW5kZXJTdHlsZSog
cGFyZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKiBwYXJlbnRCb3hTdHlsZSwgUnVsZU1hdGNo
aW5nQmVoYXZpb3IgbWF0Y2hpbmdCZWhhdmlvciwgY29uc3QgU2VsZWN0b3JGaWx0ZXIqIHNlbGVj
dG9yRmlsdGVyKQogewogICAgIFJFTEVBU0VfQVNTRVJUKCFtX2lzRGVsZXRlZCk7CiAKLSAgICBt
X3N0YXRlID0gU3RhdGUoZWxlbWVudCwgcGFyZW50U3R5bGUsIG1fb3ZlcnJpZGVEb2N1bWVudEVs
ZW1lbnRTdHlsZSwgcmVnaW9uRm9yU3R5bGluZywgc2VsZWN0b3JGaWx0ZXIpOworICAgIG1fc3Rh
dGUgPSBTdGF0ZShlbGVtZW50LCBwYXJlbnRTdHlsZSwgbV9vdmVycmlkZURvY3VtZW50RWxlbWVu
dFN0eWxlLCBzZWxlY3RvckZpbHRlcik7CiAgICAgU3RhdGUmIHN0YXRlID0gbV9zdGF0ZTsKIAog
ICAgIGlmIChzdGF0ZS5wYXJlbnRTdHlsZSgpKSB7CkBAIC0zNzMsNyArMzcwLDYgQEAgRWxlbWVu
dFN0eWxlIFN0eWxlUmVzb2x2ZXI6OnN0eWxlRm9yRWxlbQogICAgIENTU0RlZmF1bHRTdHlsZVNo
ZWV0czo6ZW5zdXJlRGVmYXVsdFN0eWxlU2hlZXRzRm9yRWxlbWVudChlbGVtZW50KTsKIAogICAg
IEVsZW1lbnRSdWxlQ29sbGVjdG9yIGNvbGxlY3RvcihlbGVtZW50LCBtX3J1bGVTZXRzLCBtX3N0
YXRlLnNlbGVjdG9yRmlsdGVyKCkpOwotICAgIGNvbGxlY3Rvci5zZXRSZWdpb25Gb3JTdHlsaW5n
KHJlZ2lvbkZvclN0eWxpbmcpOwogICAgIGNvbGxlY3Rvci5zZXRNZWRpdW0oJm1fbWVkaWFRdWVy
eUV2YWx1YXRvcik7CiAKICAgICBpZiAobWF0Y2hpbmdCZWhhdmlvciA9PSBNYXRjaE9ubHlVc2Vy
QWdlbnRSdWxlcykKQEAgLTEwNTksMjcgKzEwNTUsNiBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmFk
anVzdFJlbmRlclN0eWxlKFJlCiAgICAgfQogfQogCi1ib29sIFN0eWxlUmVzb2x2ZXI6OmNoZWNr
UmVnaW9uU3R5bGUoY29uc3QgRWxlbWVudCogcmVnaW9uRWxlbWVudCkKLXsKLSAgICB1bnNpZ25l
ZCBydWxlc1NpemUgPSBtX3J1bGVTZXRzLmF1dGhvclN0eWxlKCkucmVnaW9uU2VsZWN0b3JzQW5k
UnVsZVNldHMoKS5zaXplKCk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHJ1bGVzU2l6
ZTsgKytpKSB7Ci0gICAgICAgIEFTU0VSVChtX3J1bGVTZXRzLmF1dGhvclN0eWxlKCkucmVnaW9u
U2VsZWN0b3JzQW5kUnVsZVNldHMoKS5hdChpKS5ydWxlU2V0LmdldCgpKTsKLSAgICAgICAgaWYg
KGNoZWNrUmVnaW9uU2VsZWN0b3IobV9ydWxlU2V0cy5hdXRob3JTdHlsZSgpLnJlZ2lvblNlbGVj
dG9yc0FuZFJ1bGVTZXRzKCkuYXQoaSkuc2VsZWN0b3IsIHJlZ2lvbkVsZW1lbnQpKQotICAgICAg
ICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgaWYgKG1fcnVsZVNldHMudXNlclN0eWxl
KCkpIHsKLSAgICAgICAgcnVsZXNTaXplID0gbV9ydWxlU2V0cy51c2VyU3R5bGUoKS0+cmVnaW9u
U2VsZWN0b3JzQW5kUnVsZVNldHMoKS5zaXplKCk7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBydWxlc1NpemU7ICsraSkgewotICAgICAgICAgICAgQVNTRVJUKG1fcnVsZVNldHMu
dXNlclN0eWxlKCktPnJlZ2lvblNlbGVjdG9yc0FuZFJ1bGVTZXRzKCkuYXQoaSkucnVsZVNldC5n
ZXQoKSk7Ci0gICAgICAgICAgICBpZiAoY2hlY2tSZWdpb25TZWxlY3RvcihtX3J1bGVTZXRzLnVz
ZXJTdHlsZSgpLT5yZWdpb25TZWxlY3RvcnNBbmRSdWxlU2V0cygpLmF0KGkpLnNlbGVjdG9yLCBy
ZWdpb25FbGVtZW50KSkKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQot
ICAgIH0KLQotICAgIHJldHVybiBmYWxzZTsKLX0KLQogc3RhdGljIHZvaWQgY2hlY2tGb3JPcmll
bnRhdGlvbkNoYW5nZShSZW5kZXJTdHlsZSogc3R5bGUpCiB7CiAgICAgRm9udE9yaWVudGF0aW9u
IGZvbnRPcmllbnRhdGlvbjsKQEAgLTE1MDQsMjEgKzE0NzksNiBAQCBzdGF0aWMgaW5saW5lIGJv
b2wgaXNWYWxpZE1hcmtlclN0eWxlUHJvCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi0vLyBodHRw
Oi8vZGV2LnczLm9yZy9jc3N3Zy9jc3MzLXJlZ2lvbnMvI3RoZS1hdC1yZWdpb24tc3R5bGUtcnVs
ZQotLy8gRklYTUU6IEFkZCBpbmNyZW1lbnRhbCBzdXBwb3J0IGZvciBvdGhlciByZWdpb24gc3R5
bGluZyBwcm9wZXJ0aWVzLgotc3RhdGljIGlubGluZSBib29sIGlzVmFsaWRSZWdpb25TdHlsZVBy
b3BlcnR5KENTU1Byb3BlcnR5SUQgaWQpCi17Ci0gICAgc3dpdGNoIChpZCkgewotICAgIGNhc2Ug
Q1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3I6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUNvbG9yOgot
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBkZWZhdWx0OgotICAgICAgICBicmVhazsKLSAgICB9
Ci0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiBzdGF0
aWMgaW5saW5lIGJvb2wgaXNWYWxpZEN1ZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlJRCBpZCkK
IHsKQEAgLTIxNzksOCArMjEzOSw2IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6Q2FzY2FkZWRQcm9w
ZXJ0aWVzOjoKICAgICAgICAgfQogICAgICAgICBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQgPSBj
dXJyZW50LmlkKCk7CiAKLSAgICAgICAgaWYgKHByb3BlcnR5V2hpdGVsaXN0VHlwZSA9PSBQcm9w
ZXJ0eVdoaXRlbGlzdFJlZ2lvbiAmJiAhaXNWYWxpZFJlZ2lvblN0eWxlUHJvcGVydHkocHJvcGVy
dHlJRCkpCi0gICAgICAgICAgICBjb250aW51ZTsKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAg
ICAgICAgIGlmIChwcm9wZXJ0eVdoaXRlbGlzdFR5cGUgPT0gUHJvcGVydHlXaGl0ZWxpc3RDdWUg
JiYgIWlzVmFsaWRDdWVTdHlsZVByb3BlcnR5KHByb3BlcnR5SUQpKQogICAgICAgICAgICAgY29u
dGludWU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmgJKHJldmlzaW9uIDIyMjI1
NykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTYyLDcgKzYyLDYgQEAgY2xhc3MgS2V5ZnJhbWVMaXN0OwogY2xhc3MgS2V5ZnJhbWVWYWx1
ZTsKIGNsYXNzIE1lZGlhUXVlcnlFdmFsdWF0b3I7CiBjbGFzcyBOb2RlOwotY2xhc3MgUmVuZGVy
UmVnaW9uOwogY2xhc3MgUmVuZGVyU2Nyb2xsYmFyOwogY2xhc3MgUnVsZURhdGE7CiBjbGFzcyBS
dWxlU2V0OwpAQCAtNzYsNyArNzUsNiBAQCBjbGFzcyBTdHlsZVByb3BlcnRpZXM7CiBjbGFzcyBT
dHlsZVJ1bGU7CiBjbGFzcyBTdHlsZVJ1bGVLZXlmcmFtZXM7CiBjbGFzcyBTdHlsZVJ1bGVQYWdl
OwotY2xhc3MgU3R5bGVSdWxlUmVnaW9uOwogY2xhc3MgU3R5bGVTaGVldDsKIGNsYXNzIFN0eWxl
U2hlZXRMaXN0OwogY2xhc3MgU3R5bGVkRWxlbWVudDsKQEAgLTEzMSw3ICsxMjksNyBAQCBwdWJs
aWM6CiAgICAgU3R5bGVSZXNvbHZlcihEb2N1bWVudCYpOwogICAgIH5TdHlsZVJlc29sdmVyKCk7
CiAKLSAgICBFbGVtZW50U3R5bGUgc3R5bGVGb3JFbGVtZW50KGNvbnN0IEVsZW1lbnQmLCBjb25z
dCBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKiBwYXJlbnRCb3hT
dHlsZSA9IG51bGxwdHIsIFJ1bGVNYXRjaGluZ0JlaGF2aW9yID0gTWF0Y2hBbGxSdWxlcywgY29u
c3QgUmVuZGVyUmVnaW9uKiByZWdpb25Gb3JTdHlsaW5nID0gbnVsbHB0ciwgY29uc3QgU2VsZWN0
b3JGaWx0ZXIqID0gbnVsbHB0cik7CisgICAgRWxlbWVudFN0eWxlIHN0eWxlRm9yRWxlbWVudChj
b25zdCBFbGVtZW50JiwgY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlLCBjb25zdCBSZW5k
ZXJTdHlsZSogcGFyZW50Qm94U3R5bGUgPSBudWxscHRyLCBSdWxlTWF0Y2hpbmdCZWhhdmlvciA9
IE1hdGNoQWxsUnVsZXMsIGNvbnN0IFNlbGVjdG9yRmlsdGVyKiA9IG51bGxwdHIpOwogCiAgICAg
dm9pZCBrZXlmcmFtZVN0eWxlc0ZvckFuaW1hdGlvbihjb25zdCBFbGVtZW50JiwgY29uc3QgUmVu
ZGVyU3R5bGUqLCBLZXlmcmFtZUxpc3QmKTsKIApAQCAtMjExLDggKzIwOSw2IEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgYWRkS2V5ZnJhbWVTdHlsZShSZWY8U3R5bGVSdWxlS2V5ZnJhbWVzPiYmKTsK
IAotICAgIGJvb2wgY2hlY2tSZWdpb25TdHlsZShjb25zdCBFbGVtZW50KiByZWdpb25FbGVtZW50
KTsKLQogICAgIGJvb2wgdXNlc0ZpcnN0TGluZVJ1bGVzKCkgY29uc3QgeyByZXR1cm4gbV9ydWxl
U2V0cy5mZWF0dXJlcygpLnVzZXNGaXJzdExpbmVSdWxlczsgfQogICAgIGJvb2wgdXNlc0ZpcnN0
TGV0dGVyUnVsZXMoKSBjb25zdCB7IHJldHVybiBtX3J1bGVTZXRzLmZlYXR1cmVzKCkudXNlc0Zp
cnN0TGV0dGVyUnVsZXM7IH0KICAgICAKQEAgLTM0Niw3ICszNDIsNyBAQCBwdWJsaWM6CiAgICAg
Y2xhc3MgU3RhdGUgewogICAgIHB1YmxpYzoKICAgICAgICAgU3RhdGUoKSB7IH0KLSAgICAgICAg
U3RhdGUoY29uc3QgRWxlbWVudCYsIGNvbnN0IFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSwgY29u
c3QgUmVuZGVyU3R5bGUqIGRvY3VtZW50RWxlbWVudFN0eWxlID0gbnVsbHB0ciwgY29uc3QgUmVu
ZGVyUmVnaW9uKiByZWdpb25Gb3JTdHlsaW5nID0gbnVsbHB0ciwgY29uc3QgU2VsZWN0b3JGaWx0
ZXIqID0gbnVsbHB0cik7CisgICAgICAgIFN0YXRlKGNvbnN0IEVsZW1lbnQmLCBjb25zdCBSZW5k
ZXJTdHlsZSogcGFyZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKiBkb2N1bWVudEVsZW1lbnRT
dHlsZSA9IG51bGxwdHIsIGNvbnN0IFNlbGVjdG9yRmlsdGVyKiA9IG51bGxwdHIpOwogCiAgICAg
cHVibGljOgogICAgICAgICB2b2lkIGNsZWFyKCk7CkBAIC0zNjIsNyArMzU4LDYgQEAgcHVibGlj
OgogICAgICAgICBjb25zdCBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUoKSBjb25zdCB7IHJldHVy
biBtX3BhcmVudFN0eWxlOyB9CiAgICAgICAgIGNvbnN0IFJlbmRlclN0eWxlKiByb290RWxlbWVu
dFN0eWxlKCkgY29uc3QgeyByZXR1cm4gbV9yb290RWxlbWVudFN0eWxlOyB9CiAKLSAgICAgICAg
Y29uc3QgUmVuZGVyUmVnaW9uKiByZWdpb25Gb3JTdHlsaW5nKCkgY29uc3QgeyByZXR1cm4gbV9y
ZWdpb25Gb3JTdHlsaW5nOyB9CiAgICAgICAgIEVJbnNpZGVMaW5rIGVsZW1lbnRMaW5rU3RhdGUo
KSBjb25zdCB7IHJldHVybiBtX2VsZW1lbnRMaW5rU3RhdGU7IH0KIAogICAgICAgICB2b2lkIHNl
dEFwcGx5UHJvcGVydHlUb1JlZ3VsYXJTdHlsZShib29sIGlzQXBwbHkpIHsgbV9hcHBseVByb3Bl
cnR5VG9SZWd1bGFyU3R5bGUgPSBpc0FwcGx5OyB9CkBAIC00MTUsOCArNDEwLDYgQEAgcHVibGlj
OgogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IG1fb3duZWRQYXJlbnRTdHls
ZTsKICAgICAgICAgY29uc3QgUmVuZGVyU3R5bGUqIG1fcm9vdEVsZW1lbnRTdHlsZSB7IG51bGxw
dHIgfTsKIAotICAgICAgICBjb25zdCBSZW5kZXJSZWdpb24qIG1fcmVnaW9uRm9yU3R5bGluZyB7
IG51bGxwdHIgfTsKLSAgICAgICAgCiAgICAgICAgIEVJbnNpZGVMaW5rIG1fZWxlbWVudExpbmtT
dGF0ZSB7IE5vdEluc2lkZUxpbmsgfTsKIAogICAgICAgICBib29sIG1fYXBwbHlQcm9wZXJ0eVRv
UmVndWxhclN0eWxlIHsgdHJ1ZSB9OwpAQCAtNTQxLDE5ICs1MzQsNCBAQCBpbmxpbmUgYm9vbCBT
dHlsZVJlc29sdmVyOjpoYXNTZWxlY3RvckZvCiAgICAgcmV0dXJuIG1fcnVsZVNldHMuZmVhdHVy
ZXMoKS5pZHNJblJ1bGVzLmNvbnRhaW5zKGlkVmFsdWUpOwogfQogCi1pbmxpbmUgYm9vbCBjaGVj
a1JlZ2lvblNlbGVjdG9yKGNvbnN0IENTU1NlbGVjdG9yKiByZWdpb25TZWxlY3RvciwgY29uc3Qg
RWxlbWVudCogcmVnaW9uRWxlbWVudCkKLXsKLSAgICBpZiAoIXJlZ2lvblNlbGVjdG9yIHx8ICFy
ZWdpb25FbGVtZW50KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBTZWxlY3RvckNoZWNr
ZXIgc2VsZWN0b3JDaGVja2VyKHJlZ2lvbkVsZW1lbnQtPmRvY3VtZW50KCkpOwotICAgIGZvciAo
Y29uc3QgQ1NTU2VsZWN0b3IqIHMgPSByZWdpb25TZWxlY3RvcjsgczsgcyA9IENTU1NlbGVjdG9y
TGlzdDo6bmV4dChzKSkgewotICAgICAgICBTZWxlY3RvckNoZWNrZXI6OkNoZWNraW5nQ29udGV4
dCBzZWxlY3RvckNoZWNraW5nQ29udGV4dChTZWxlY3RvckNoZWNrZXI6Ok1vZGU6OlF1ZXJ5aW5n
UnVsZXMpOwotICAgICAgICB1bnNpZ25lZCBpZ25vcmVkU3BlY2lmaWNpdHk7Ci0gICAgICAgIGlm
IChzZWxlY3RvckNoZWNrZXIubWF0Y2goKnMsICpyZWdpb25FbGVtZW50LCBzZWxlY3RvckNoZWNr
aW5nQ29udGV4dCwgaWdub3JlZFNwZWNpZmljaXR5KSkKLSAgICAgICAgICAgIHJldHVybiB0cnVl
OwotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuY3BwCShyZXZpc2lvbiAyMjIyNTcpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUs
NiBAQAogI2luY2x1ZGUgIk1lZGlhTGlzdC5oIgogI2luY2x1ZGUgIlN0eWxlUHJvcGVydGllcy5o
IgogI2luY2x1ZGUgIlN0eWxlUnVsZUltcG9ydC5oIgotI2luY2x1ZGUgIldlYktpdENTU1JlZ2lv
blJ1bGUuaCIKICNpbmNsdWRlICJXZWJLaXRDU1NWaWV3cG9ydFJ1bGUuaCIKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpAQCAtNzQsMTEgKzczLDYgQEAgdm9pZCBTdHlsZVJ1bGVCYXNlOjpkZXN0cm95
KCkKICAgICBjYXNlIFN1cHBvcnRzOgogICAgICAgICBkZWxldGUgZG93bmNhc3Q8U3R5bGVSdWxl
U3VwcG9ydHM+KHRoaXMpOwogICAgICAgICByZXR1cm47Ci0jaWYgRU5BQkxFKENTU19SRUdJT05T
KQotICAgIGNhc2UgUmVnaW9uOgotICAgICAgICBkZWxldGUgZG93bmNhc3Q8U3R5bGVSdWxlUmVn
aW9uPih0aGlzKTsKLSAgICAgICAgcmV0dXJuOwotI2VuZGlmCiAgICAgY2FzZSBJbXBvcnQ6CiAg
ICAgICAgIGRlbGV0ZSBkb3duY2FzdDxTdHlsZVJ1bGVJbXBvcnQ+KHRoaXMpOwogICAgICAgICBy
ZXR1cm47CkBAIC0xMDAsOSArOTQsNiBAQCB2b2lkIFN0eWxlUnVsZUJhc2U6OmRlc3Ryb3koKQog
ICAgICAgICBkZWxldGUgZG93bmNhc3Q8U3R5bGVSdWxlQ2hhcnNldD4odGhpcyk7CiAgICAgICAg
IHJldHVybjsKICAgICBjYXNlIFVua25vd246Ci0jaWYgIUVOQUJMRShDU1NfUkVHSU9OUykKLSAg
ICBjYXNlIFJlZ2lvbjoKLSNlbmRpZgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTEyMiwxMCArMTEzLDYgQEAgUmVmPFN0eWxlUnVsZUJh
c2U+IFN0eWxlUnVsZUJhc2U6OmNvcHkoKQogICAgICAgICByZXR1cm4gZG93bmNhc3Q8U3R5bGVS
dWxlTWVkaWE+KCp0aGlzKS5jb3B5KCk7CiAgICAgY2FzZSBTdXBwb3J0czoKICAgICAgICAgcmV0
dXJuIGRvd25jYXN0PFN0eWxlUnVsZVN1cHBvcnRzPigqdGhpcykuY29weSgpOwotI2lmIEVOQUJM
RShDU1NfUkVHSU9OUykKLSAgICBjYXNlIFJlZ2lvbjoKLSAgICAgICAgcmV0dXJuIGRvd25jYXN0
PFN0eWxlUnVsZVJlZ2lvbj4oKnRoaXMpLmNvcHkoKTsKLSNlbmRpZgogICAgIGNhc2UgS2V5ZnJh
bWVzOgogICAgICAgICByZXR1cm4gZG93bmNhc3Q8U3R5bGVSdWxlS2V5ZnJhbWVzPigqdGhpcyku
Y29weSgpOwogI2lmIEVOQUJMRShDU1NfREVWSUNFX0FEQVBUQVRJT04pCkBAIC0xMzksOSArMTI2
LDYgQEAgUmVmPFN0eWxlUnVsZUJhc2U+IFN0eWxlUnVsZUJhc2U6OmNvcHkoKQogICAgIGNhc2Ug
VW5rbm93bjoKICAgICBjYXNlIENoYXJzZXQ6CiAgICAgY2FzZSBLZXlmcmFtZToKLSNpZiAhRU5B
QkxFKENTU19SRUdJT05TKQotICAgIGNhc2UgUmVnaW9uOgotI2VuZGlmCiAgICAgICAgIGJyZWFr
OwogICAgIH0KICAgICBDUkFTSCgpOwpAQCAtMTY3LDExICsxNTEsNiBAQCBSZWZQdHI8Q1NTUnVs
ZT4gU3R5bGVSdWxlQmFzZTo6Y3JlYXRlQ1NTCiAgICAgY2FzZSBTdXBwb3J0czoKICAgICAgICAg
cnVsZSA9IENTU1N1cHBvcnRzUnVsZTo6Y3JlYXRlKGRvd25jYXN0PFN0eWxlUnVsZVN1cHBvcnRz
PihzZWxmKSwgcGFyZW50U2hlZXQpOwogICAgICAgICBicmVhazsKLSNpZiBFTkFCTEUoQ1NTX1JF
R0lPTlMpCi0gICAgY2FzZSBSZWdpb246Ci0gICAgICAgIHJ1bGUgPSBXZWJLaXRDU1NSZWdpb25S
dWxlOjpjcmVhdGUoZG93bmNhc3Q8U3R5bGVSdWxlUmVnaW9uPihzZWxmKSwgcGFyZW50U2hlZXQp
OwotICAgICAgICBicmVhazsKLSNlbmRpZgogICAgIGNhc2UgSW1wb3J0OgogICAgICAgICBydWxl
ID0gQ1NTSW1wb3J0UnVsZTo6Y3JlYXRlKGRvd25jYXN0PFN0eWxlUnVsZUltcG9ydD4oc2VsZiks
IHBhcmVudFNoZWV0KTsKICAgICAgICAgYnJlYWs7CkBAIC0xODksOSArMTY4LDYgQEAgUmVmUHRy
PENTU1J1bGU+IFN0eWxlUnVsZUJhc2U6OmNyZWF0ZUNTUwogICAgIGNhc2UgVW5rbm93bjoKICAg
ICBjYXNlIENoYXJzZXQ6CiAgICAgY2FzZSBLZXlmcmFtZToKLSNpZiAhRU5BQkxFKENTU19SRUdJ
T05TKQotICAgIGNhc2UgUmVnaW9uOgotI2VuZGlmCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CkBAIC00MjcsMjUgKzQwMyw2IEBA
IFN0eWxlUnVsZVN1cHBvcnRzOjpTdHlsZVJ1bGVTdXBwb3J0cyhjb24KIHsKIH0KIAotU3R5bGVS
dWxlUmVnaW9uOjpTdHlsZVJ1bGVSZWdpb24oVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxDU1NQYXJz
ZXJTZWxlY3Rvcj4+KiBzZWxlY3RvcnMsIFZlY3RvcjxSZWZQdHI8U3R5bGVSdWxlQmFzZT4+JiBh
ZG9wdFJ1bGVzKQotICAgIDogU3R5bGVSdWxlR3JvdXAoUmVnaW9uLCBhZG9wdFJ1bGVzKQotewot
ICAgIG1fc2VsZWN0b3JMaXN0LmFkb3B0U2VsZWN0b3JWZWN0b3IoKnNlbGVjdG9ycyk7Ci19Ci0K
LVN0eWxlUnVsZVJlZ2lvbjo6U3R5bGVSdWxlUmVnaW9uKENTU1NlbGVjdG9yTGlzdCYgc2VsZWN0
b3JzLCBWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZUJhc2U+PiYgYWRvcHRSdWxlcykKLSAgICA6IFN0
eWxlUnVsZUdyb3VwKFJlZ2lvbiwgYWRvcHRSdWxlcykKLSAgICAsIG1fc2VsZWN0b3JMaXN0KFdU
Rk1vdmUoc2VsZWN0b3JzKSkKLXsKLX0KLQotU3R5bGVSdWxlUmVnaW9uOjpTdHlsZVJ1bGVSZWdp
b24oY29uc3QgU3R5bGVSdWxlUmVnaW9uJiBvKQotICAgIDogU3R5bGVSdWxlR3JvdXAobykKLSAg
ICAsIG1fc2VsZWN0b3JMaXN0KG8ubV9zZWxlY3Rvckxpc3QpCi17Ci19Ci0KLQogI2lmIEVOQUJM
RShDU1NfREVWSUNFX0FEQVBUQVRJT04pCiBTdHlsZVJ1bGVWaWV3cG9ydDo6U3R5bGVSdWxlVmll
d3BvcnQoUmVmPFN0eWxlUHJvcGVydGllcz4mJiBwcm9wZXJ0aWVzKQogICAgIDogU3R5bGVSdWxl
QmFzZShWaWV3cG9ydCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlLmgJKHJldmlzaW9uIDIyMjI1
NykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuaAkod29ya2luZyBjb3B5KQpAQCAt
NTUsNyArNTUsNiBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKENTU19ERVZJQ0VfQURBUFRBVElPTikK
ICAgICAgICAgVmlld3BvcnQgPSAxNSwKICNlbmRpZgotICAgICAgICBSZWdpb24gPSAxNiwKICAg
ICB9OwogCiAgICAgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VHlwZT4o
bV90eXBlKTsgfQpAQCAtNjgsNyArNjcsNiBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc01lZGlhUnVs
ZSgpIGNvbnN0IHsgcmV0dXJuIHR5cGUoKSA9PSBNZWRpYTsgfQogICAgIGJvb2wgaXNQYWdlUnVs
ZSgpIGNvbnN0IHsgcmV0dXJuIHR5cGUoKSA9PSBQYWdlOyB9CiAgICAgYm9vbCBpc1N0eWxlUnVs
ZSgpIGNvbnN0IHsgcmV0dXJuIHR5cGUoKSA9PSBTdHlsZTsgfQotICAgIGJvb2wgaXNSZWdpb25S
dWxlKCkgY29uc3QgeyByZXR1cm4gdHlwZSgpID09IFJlZ2lvbjsgfQogICAgIGJvb2wgaXNTdXBw
b3J0c1J1bGUoKSBjb25zdCB7IHJldHVybiB0eXBlKCkgPT0gU3VwcG9ydHM7IH0KICNpZiBFTkFC
TEUoQ1NTX0RFVklDRV9BREFQVEFUSU9OKQogICAgIGJvb2wgaXNWaWV3cG9ydFJ1bGUoKSBjb25z
dCB7IHJldHVybiB0eXBlKCkgPT0gVmlld3BvcnQ7IH0KQEAgLTI3NiwzMSArMjc0LDYgQEAgcHJp
dmF0ZToKICAgICBib29sIG1fY29uZGl0aW9uSXNTdXBwb3J0ZWQ7CiB9OwogCi1jbGFzcyBTdHls
ZVJ1bGVSZWdpb24gZmluYWwgOiBwdWJsaWMgU3R5bGVSdWxlR3JvdXAgewotcHVibGljOgotICAg
IHN0YXRpYyBSZWY8U3R5bGVSdWxlUmVnaW9uPiBjcmVhdGUoVmVjdG9yPHN0ZDo6dW5pcXVlX3B0
cjxDU1NQYXJzZXJTZWxlY3Rvcj4+KiBzZWxlY3RvcnMsIFZlY3RvcjxSZWZQdHI8U3R5bGVSdWxl
QmFzZT4+JiBhZG9wdFJ1bGVzKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
U3R5bGVSdWxlUmVnaW9uKHNlbGVjdG9ycywgYWRvcHRSdWxlcykpOwotICAgIH0KLSAgICAKLSAg
ICBzdGF0aWMgUmVmPFN0eWxlUnVsZVJlZ2lvbj4gY3JlYXRlKENTU1NlbGVjdG9yTGlzdCYgc2Vs
ZWN0b3JzLCBWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZUJhc2U+PiYgYWRvcHRSdWxlcykKLSAgICB7
Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0eWxlUnVsZVJlZ2lvbihzZWxlY3RvcnMs
IGFkb3B0UnVsZXMpKTsKLSAgICB9Ci0gICAgCi0gICAgY29uc3QgQ1NTU2VsZWN0b3JMaXN0JiBz
ZWxlY3Rvckxpc3QoKSBjb25zdCB7IHJldHVybiBtX3NlbGVjdG9yTGlzdDsgfQotCi0gICAgUmVm
PFN0eWxlUnVsZVJlZ2lvbj4gY29weSgpIGNvbnN0IHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5
bGVSdWxlUmVnaW9uKCp0aGlzKSk7IH0KLQotcHJpdmF0ZToKLSAgICBTdHlsZVJ1bGVSZWdpb24o
VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxDU1NQYXJzZXJTZWxlY3Rvcj4+KiwgVmVjdG9yPFJlZlB0
cjxTdHlsZVJ1bGVCYXNlPj4mIGFkb3B0UnVsZXMpOwotICAgIFN0eWxlUnVsZVJlZ2lvbihDU1NT
ZWxlY3Rvckxpc3QmLCBWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZUJhc2U+PiYpOwotICAgIAotICAg
IFN0eWxlUnVsZVJlZ2lvbihjb25zdCBTdHlsZVJ1bGVSZWdpb24mKTsKLSAgICAKLSAgICBDU1NT
ZWxlY3Rvckxpc3QgbV9zZWxlY3Rvckxpc3Q7Ci19OwotCiAjaWYgRU5BQkxFKENTU19ERVZJQ0Vf
QURBUFRBVElPTikKIGNsYXNzIFN0eWxlUnVsZVZpZXdwb3J0IGZpbmFsIDogcHVibGljIFN0eWxl
UnVsZUJhc2UgewogcHVibGljOgpAQCAtMzc5LDEwICszNTIsNiBAQCBTUEVDSUFMSVpFX1RZUEVf
VFJBSVRTX0JFR0lOKFdlYkNvcmU6OlN0CiAgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdl
YkNvcmU6OlN0eWxlUnVsZUJhc2UmIHJ1bGUpIHsgcmV0dXJuIHJ1bGUuaXNTdXBwb3J0c1J1bGUo
KTsgfQogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQogCi1TUEVDSUFMSVpFX1RZUEVfVFJB
SVRTX0JFR0lOKFdlYkNvcmU6OlN0eWxlUnVsZVJlZ2lvbikKLSAgICBzdGF0aWMgYm9vbCBpc1R5
cGUoY29uc3QgV2ViQ29yZTo6U3R5bGVSdWxlQmFzZSYgcnVsZSkgeyByZXR1cm4gcnVsZS5pc1Jl
Z2lvblJ1bGUoKTsgfQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQotCiAjaWYgRU5BQkxF
KENTU19ERVZJQ0VfQURBUFRBVElPTikKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2Vi
Q29yZTo6U3R5bGVSdWxlVmlld3BvcnQpCiAgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdl
YkNvcmU6OlN0eWxlUnVsZUJhc2UmIHJ1bGUpIHsgcmV0dXJuIHJ1bGUuaXNWaWV3cG9ydFJ1bGUo
KTsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXRDb250ZW50cy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXRDb250ZW50cy5jcHAJKHJl
dmlzaW9uIDIyMjI1NykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0Q29udGVudHMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NTAsMTAgKzQ1MCw2IEBAIHN0YXRpYyBib29sIHRyYXZl
cnNlU3VicmVzb3VyY2VzSW5SdWxlcygKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIGNhc2UgU3R5bGVSdWxlQmFzZTo6
UmVnaW9uOgotICAgICAgICAgICAgaWYgKHRyYXZlcnNlU3VicmVzb3VyY2VzSW5SdWxlcyhkb3du
Y2FzdDxTdHlsZVJ1bGVSZWdpb24+KCpydWxlKS5jaGlsZFJ1bGVzKCksIGhhbmRsZXIpKQotICAg
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNh
c2UgU3R5bGVSdWxlQmFzZTo6SW1wb3J0OgogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAjaWYgQVNTRVJUX0RJU0FCTEVECkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0
Q1NTUmVnaW9uUnVsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL1dlYktp
dENTU1JlZ2lvblJ1bGUuY3BwCShyZXZpc2lvbiAyMjIyNTcpCisrKyBTb3VyY2UvV2ViQ29yZS9j
c3MvV2ViS2l0Q1NTUmVnaW9uUnVsZS5jcHAJKG5vbmV4aXN0ZW50KQpAQCAtMSw2NCArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqCi0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlCi0gKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZwotICogICAgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqICAgIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
Ci0gKiAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMKLSAqICAgIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSICJBUyBJUyIgQU5E
IEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgQkUKLSAqIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwK
LSAqIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IKLSAqIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRgotICogVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GCi0gKiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpbmNs
dWRlICJXZWJLaXRDU1NSZWdpb25SdWxlLmgiCi0KLSNpbmNsdWRlICJDU1NSdWxlTGlzdC5oIgot
I2luY2x1ZGUgIlN0eWxlUnVsZS5oIgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIu
aD4KLQotI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotV2Vi
S2l0Q1NTUmVnaW9uUnVsZTo6V2ViS2l0Q1NTUmVnaW9uUnVsZShTdHlsZVJ1bGVSZWdpb24mIHJl
Z2lvblJ1bGUsIENTU1N0eWxlU2hlZXQqIHBhcmVudCkKLSAgICA6IENTU0dyb3VwaW5nUnVsZShy
ZWdpb25SdWxlLCBwYXJlbnQpCi17Ci19Ci0KLVN0cmluZyBXZWJLaXRDU1NSZWdpb25SdWxlOjpj
c3NUZXh0KCkgY29uc3QKLXsKLSAgICBTdHJpbmdCdWlsZGVyIHJlc3VsdDsKLSAgICByZXN1bHQu
YXBwZW5kTGl0ZXJhbCgiQC13ZWJraXQtcmVnaW9uICIpOwotCi0gICAgLy8gRmlyc3QgYWRkIHRo
ZSBzZWxlY3RvcnMuCi0gICAgZG93bmNhc3Q8U3R5bGVSdWxlUmVnaW9uPihtX2dyb3VwUnVsZS5n
ZXQoKSkuc2VsZWN0b3JMaXN0KCkuYnVpbGRTZWxlY3RvcnNUZXh0KHJlc3VsdCk7Ci0KLSAgICAv
LyBUaGVuIGFkZCB0aGUgcnVsZXMuCi0gICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoIiB7IFxuIik7
Ci0gICAgYXBwZW5kQ3NzVGV4dEZvckl0ZW1zKHJlc3VsdCk7Ci0gICAgcmVzdWx0LmFwcGVuZCgn
fScpOwotICAgIHJldHVybiByZXN1bHQudG9TdHJpbmcoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQotCi0jZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NSZWdp
b25SdWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU1JlZ2lv
blJ1bGUuaAkocmV2aXNpb24gMjIyMjU3KQorKysgU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENT
U1JlZ2lvblJ1bGUuaAkobm9uZXhpc3RlbnQpCkBAIC0xLDU2ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTEgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUK
LSAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nCi0gKiAgICBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogICAgY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKLSAqICAgIGRpc2Ns
YWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscwotICogICAg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVIgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBCRQotICogTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLAotICogT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUgotICogVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GCi0gKiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKLSAqIFNVQ0gg
REFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiQ1NTR3JvdXBpbmdSdWxl
LmgiCi0KLSNpZiBFTkFCTEUoQ1NTX1JFR0lPTlMpCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQot
Y2xhc3MgU3R5bGVSdWxlUmVnaW9uOwotCi1jbGFzcyBXZWJLaXRDU1NSZWdpb25SdWxlIGZpbmFs
IDogcHVibGljIENTU0dyb3VwaW5nUnVsZSB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxXZWJL
aXRDU1NSZWdpb25SdWxlPiBjcmVhdGUoU3R5bGVSdWxlUmVnaW9uJiBydWxlLCBDU1NTdHlsZVNo
ZWV0KiBzaGVldCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJLaXRDU1NSZWdpb25SdWxlKHJ1
bGUsIHNoZWV0KSk7IH0KLQotICAgIENTU1J1bGU6OlR5cGUgdHlwZSgpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIFdFQktJVF9SRUdJT05fUlVMRTsgfQotICAgIFN0cmluZyBjc3NUZXh0KCkgY29uc3Qg
ZmluYWw7Ci0KLXByaXZhdGU6Ci0gICAgV2ViS2l0Q1NTUmVnaW9uUnVsZShTdHlsZVJ1bGVSZWdp
b24mLCBDU1NTdHlsZVNoZWV0KiBwYXJlbnQpOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQotCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0NTU19SVUxFKFdlYktpdENTU1JlZ2lvblJ1bGUs
IENTU1J1bGU6OldFQktJVF9SRUdJT05fUlVMRSkKLQotI2VuZGlmIC8vIEVOQUJMRShDU1NfUkVH
SU9OUykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NSZWdpb25SdWxlLmlkbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTUmVnaW9uUnVsZS5pZGwJ
KHJldmlzaW9uIDIyMjI1NykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NSZWdpb25S
dWxlLmlkbAkobm9uZXhpc3RlbnQpCkBAIC0xLDM1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTEgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZQotICog
ICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcKLSAqICAgIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZwotICogICAgZGlzY2xhaW1l
ciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzCi0gKiAgICBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUiAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
Ci0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIEJFCi0gKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksCi0gKiBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
Ci0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SCi0gKiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YKLSAqIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgotICogU1VDSCBEQU1B
R0UuCi0gKi8KLQotWwotICAgIENvbmRpdGlvbmFsPUNTU19SRUdJT05TLAotXSBpbnRlcmZhY2Ug
V2ViS2l0Q1NTUmVnaW9uUnVsZSA6IENTU1J1bGUgewotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBD
U1NSdWxlTGlzdCBjc3NSdWxlczsKLX07Ci0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJz
ZXIvQ1NTQXRSdWxlSUQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJz
ZXIvQ1NTQXRSdWxlSUQuY3BwCShyZXZpc2lvbiAyMjIyNTcpCisrKyBTb3VyY2UvV2ViQ29yZS9j
c3MvcGFyc2VyL0NTU0F0UnVsZUlELmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTYsMTAgKzU2LDYg
QEAgQ1NTQXRSdWxlSUQgY3NzQXRSdWxlSUQoU3RyaW5nVmlldyBuYW1lKQogICAgICAgICByZXR1
cm4gQ1NTQXRSdWxlV2Via2l0S2V5ZnJhbWVzOwogICAgIGlmIChlcXVhbElnbm9yaW5nQVNDSUlD
YXNlKG5hbWUsICJhcHBseSIpKQogICAgICAgICByZXR1cm4gQ1NTQXRSdWxlQXBwbHk7Ci0jaWYg
RU5BQkxFKENTU19SRUdJT05TKQotICAgIGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG5hbWUs
ICItd2Via2l0LXJlZ2lvbiIpKQotICAgICAgICByZXR1cm4gQ1NTQXRSdWxlV2Via2l0UmVnaW9u
OwotI2VuZGlmCiAgICAgcmV0dXJuIENTU0F0UnVsZUludmFsaWQ7CiB9CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTQXRSdWxlSUQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9jc3MvcGFyc2VyL0NTU0F0UnVsZUlELmgJKHJldmlzaW9uIDIyMjI1NykKKysrIFNv
dXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTQXRSdWxlSUQuaAkod29ya2luZyBjb3B5KQpAQCAt
NDcsNyArNDcsNiBAQCBlbnVtIENTU0F0UnVsZUlEIHsKIAogICAgIENTU0F0UnVsZVdlYmtpdEtl
eWZyYW1lcyA9IDEwLAogICAgIENTU0F0UnVsZUFwcGx5ID0gMTEsCi0gICAgQ1NTQXRSdWxlV2Vi
a2l0UmVnaW9uID0gMTIKIH07CiAKIENTU0F0UnVsZUlEIGNzc0F0UnVsZUlEKFN0cmluZ1ZpZXcg
bmFtZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckZhc3RQYXRo
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJG
YXN0UGF0aHMuY3BwCShyZXZpc2lvbiAyMjIyNTcpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvcGFy
c2VyL0NTU1BhcnNlckZhc3RQYXRocy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYxMywxNyArNjEz
LDkgQEAgYm9vbCBDU1NQYXJzZXJGYXN0UGF0aHM6OmlzVmFsaWRLZXl3b3JkUAogICAgICAgICBy
ZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZVZpc2libGUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUhp
ZGRlbiB8fCB2YWx1ZUlEID09IENTU1ZhbHVlU2Nyb2xsIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVB
dXRvIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVPdmVybGF5IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVX
ZWJraXRQYWdlZFggfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVdlYmtpdFBhZ2VkWTsKICAgICBjYXNl
IENTU1Byb3BlcnR5QnJlYWtBZnRlcjoKICAgICBjYXNlIENTU1Byb3BlcnR5QnJlYWtCZWZvcmU6
Ci0gICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlQXV0byB8fCB2YWx1ZUlEID09IENT
U1ZhbHVlQXZvaWQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUF2b2lkUGFnZSB8fCB2YWx1ZUlEID09
IENTU1ZhbHVlUGFnZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlTGVmdCB8fCB2YWx1ZUlEID09IENT
U1ZhbHVlUmlnaHQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVJlY3RvIHx8IHZhbHVlSUQgPT0gQ1NT
VmFsdWVWZXJzbyB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQXZvaWRDb2x1bW4gfHwgdmFsdWVJRCA9
PSBDU1NWYWx1ZUNvbHVtbgotI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKLSAgICAgICAgICAgIHx8
IHZhbHVlSUQgPT0gQ1NTVmFsdWVSZWdpb24gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUF2b2lkUmVn
aW9uCi0jZW5kaWYKLSAgICAgICAgOworICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1
ZUF1dG8gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUF2b2lkIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVB
dm9pZFBhZ2UgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVBhZ2UgfHwgdmFsdWVJRCA9PSBDU1NWYWx1
ZUxlZnQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVJpZ2h0IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVS
ZWN0byB8fCB2YWx1ZUlEID09IENTU1ZhbHVlVmVyc28gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUF2
b2lkQ29sdW1uIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVDb2x1bW47CiAgICAgY2FzZSBDU1NQcm9w
ZXJ0eUJyZWFrSW5zaWRlOgotICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZUF1dG8g
fHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUF2b2lkIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVBdm9pZFBh
Z2UgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUF2b2lkQ29sdW1uCi0jaWYgRU5BQkxFKENTU19SRUdJ
T05TKQotICAgICAgICAgICAgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUF2b2lkUmVnaW9uCi0jZW5k
aWYKLSAgICAgICAgOworICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZUF1dG8gfHwg
dmFsdWVJRCA9PSBDU1NWYWx1ZUF2b2lkIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVBdm9pZFBhZ2Ug
fHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUF2b2lkQ29sdW1uOwogICAgIGNhc2UgQ1NTUHJvcGVydHlQ
b2ludGVyRXZlbnRzOgogICAgICAgICAvLyBub25lIHwgdmlzaWJsZVBhaW50ZWQgfCB2aXNpYmxl
RmlsbCB8IHZpc2libGVTdHJva2UgfCB2aXNpYmxlIHwKICAgICAgICAgLy8gcGFpbnRlZCB8IGZp
bGwgfCBzdHJva2UgfCBhdXRvIHwgYWxsIHwgYm91bmRpbmctYm94CkBAIC03ODMsMTAgKzc3NSw2
IEBAIGJvb2wgQ1NTUGFyc2VyRmFzdFBhdGhzOjppc1ZhbGlkS2V5d29yZFAKICAgICAgICAgcmV0
dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVOb3JtYWwgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUJyZWFr
QWxsIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVLZWVwQWxsIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVC
cmVha1dvcmQ7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckZpdDoKICAgICAgICAg
cmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVCb3JkZXIgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUxp
bmVzOwotI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
UmVnaW9uRnJhZ21lbnQ6Ci0gICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlQXV0byB8
fCB2YWx1ZUlEID09IENTU1ZhbHVlQnJlYWs7Ci0jZW5kaWYKICNpZiBFTkFCTEUoVE9VQ0hfRVZF
TlRTKQogICAgIGNhc2UgQ1NTUHJvcGVydHlUb3VjaEFjdGlvbjogLy8gYXV0byB8IG1hbmlwdWxh
dGlvbgogICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZUF1dG8gfHwgdmFsdWVJRCA9
PSBDU1NWYWx1ZU1hbmlwdWxhdGlvbjsKQEAgLTk3Niw5ICs5NjQsNiBAQCBib29sIENTU1BhcnNl
ckZhc3RQYXRoczo6aXNLZXl3b3JkUHJvcGVyCiAjaWYgRU5BQkxFKEFDQ0VMRVJBVEVEX09WRVJG
TE9XX1NDUk9MTElORykKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0T3ZlcmZsb3dTY3JvbGxp
bmc6CiAjZW5kaWYKLSNpZiBFTkFCTEUoQ1NTX1JFR0lPTlMpCi0gICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdFJlZ2lvbkZyYWdtZW50OgotI2VuZGlmCiAjaWYgRU5BQkxFKENTUzNfVEVYVCkKICAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dEFsaWduTGFzdDoKICAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0VGV4dEp1c3RpZnk6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NT
U1BhcnNlckltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIv
Q1NTUGFyc2VySW1wbC5jcHAJKHJldmlzaW9uIDIyMjI1NykKKysrIFNvdXJjZS9XZWJDb3JlL2Nz
cy9wYXJzZXIvQ1NTUGFyc2VySW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1MiwxMCArNDUy
LDYgQEAgUmVmUHRyPFN0eWxlUnVsZUJhc2U+IENTU1BhcnNlckltcGw6OmNvbgogICAgICAgICBy
ZXR1cm4gY29uc3VtZUtleWZyYW1lc1J1bGUoZmFsc2UsIHByZWx1ZGUsIGJsb2NrKTsKICAgICBj
YXNlIENTU0F0UnVsZVBhZ2U6CiAgICAgICAgIHJldHVybiBjb25zdW1lUGFnZVJ1bGUocHJlbHVk
ZSwgYmxvY2spOwotI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKLSAgICBjYXNlIENTU0F0UnVsZVdl
YmtpdFJlZ2lvbjoKLSAgICAgICAgcmV0dXJuIGNvbnN1bWVSZWdpb25SdWxlKHByZWx1ZGUsIGJs
b2NrKTsKLSNlbmRpZgogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBudWxscHRyOyAvLyBQ
YXJzZSBlcnJvciwgdW5yZWNvZ25pc2VkIGF0LXJ1bGUgd2l0aCBibG9jawogICAgIH0KQEAgLTY3
NywzMiArNjczLDYgQEAgUmVmUHRyPFN0eWxlUnVsZVBhZ2U+IENTU1BhcnNlckltcGw6OmNvbgog
ICAgIHJldHVybiBwYWdlOwogfQogCi0jaWYgRU5BQkxFKENTU19SRUdJT05TKQotUmVmUHRyPFN0
eWxlUnVsZVJlZ2lvbj4gQ1NTUGFyc2VySW1wbDo6Y29uc3VtZVJlZ2lvblJ1bGUoQ1NTUGFyc2Vy
VG9rZW5SYW5nZSBwcmVsdWRlLCBDU1NQYXJzZXJUb2tlblJhbmdlIGJsb2NrKQotewotICAgIENT
U1NlbGVjdG9yTGlzdCBzZWxlY3Rvckxpc3QgPSBDU1NTZWxlY3RvclBhcnNlcjo6cGFyc2VTZWxl
Y3RvcihwcmVsdWRlLCBtX2NvbnRleHQsIG1fc3R5bGVTaGVldC5nZXQoKSk7Ci0gICAgaWYgKCFz
ZWxlY3Rvckxpc3QuaXNWYWxpZCgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsgLy8gUGFyc2Ug
ZXJyb3IsIGludmFsaWQgc2VsZWN0b3IgbGlzdAotCi0gICAgaWYgKG1fb2JzZXJ2ZXJXcmFwcGVy
KSB7Ci0gICAgICAgIG1fb2JzZXJ2ZXJXcmFwcGVyLT5vYnNlcnZlcigpLnN0YXJ0UnVsZUhlYWRl
cihTdHlsZVJ1bGU6OlJlZ2lvbiwgbV9vYnNlcnZlcldyYXBwZXItPnN0YXJ0T2Zmc2V0KHByZWx1
ZGUpKTsKLSAgICAgICAgbV9vYnNlcnZlcldyYXBwZXItPm9ic2VydmVyKCkuZW5kUnVsZUhlYWRl
cihtX29ic2VydmVyV3JhcHBlci0+ZW5kT2Zmc2V0KHByZWx1ZGUpKTsKLSAgICAgICAgbV9vYnNl
cnZlcldyYXBwZXItPm9ic2VydmVyKCkuc3RhcnRSdWxlQm9keShtX29ic2VydmVyV3JhcHBlci0+
cHJldmlvdXNUb2tlblN0YXJ0T2Zmc2V0KGJsb2NrKSk7Ci0gICAgfQotICAgIAotICAgIFZlY3Rv
cjxSZWZQdHI8U3R5bGVSdWxlQmFzZT4+IHJ1bGVzOwotICAgIGNvbnN1bWVSdWxlTGlzdChibG9j
aywgUmVndWxhclJ1bGVMaXN0LCBbJnJ1bGVzXShSZWZQdHI8U3R5bGVSdWxlQmFzZT4gcnVsZSkg
ewotICAgICAgICBydWxlcy5hcHBlbmQocnVsZSk7Ci0gICAgfSk7Ci0gICAgCi0gICAgaWYgKG1f
b2JzZXJ2ZXJXcmFwcGVyKQotICAgICAgICBtX29ic2VydmVyV3JhcHBlci0+b2JzZXJ2ZXIoKS5l
bmRSdWxlQm9keShtX29ic2VydmVyV3JhcHBlci0+ZW5kT2Zmc2V0KGJsb2NrKSk7Ci0gICAgCi0g
ICAgcmV0dXJuIFN0eWxlUnVsZVJlZ2lvbjo6Y3JlYXRlKHNlbGVjdG9yTGlzdCwgcnVsZXMpOwot
Ci19Ci0jZW5kaWYKLQogLy8gRklYTUUtTkVXUEFSU0VSOiBTdXBwb3J0ICJhcHBseSIKIC8qdm9p
ZCBDU1NQYXJzZXJJbXBsOjpjb25zdW1lQXBwbHlSdWxlKENTU1BhcnNlclRva2VuUmFuZ2UgcHJl
bHVkZSkKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VySW1wbC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VySW1wbC5o
CShyZXZpc2lvbiAyMjIyNTcpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNl
ckltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtMTMyLDEwICsxMzIsNiBAQCBwcml2YXRlOgogICAg
IFJlZlB0cjxTdHlsZVJ1bGVGb250RmFjZT4gY29uc3VtZUZvbnRGYWNlUnVsZShDU1NQYXJzZXJU
b2tlblJhbmdlIHByZWx1ZGUsIENTU1BhcnNlclRva2VuUmFuZ2UgYmxvY2spOwogICAgIFJlZlB0
cjxTdHlsZVJ1bGVLZXlmcmFtZXM+IGNvbnN1bWVLZXlmcmFtZXNSdWxlKGJvb2wgd2Via2l0UHJl
Zml4ZWQsIENTU1BhcnNlclRva2VuUmFuZ2UgcHJlbHVkZSwgQ1NTUGFyc2VyVG9rZW5SYW5nZSBi
bG9jayk7CiAgICAgUmVmUHRyPFN0eWxlUnVsZVBhZ2U+IGNvbnN1bWVQYWdlUnVsZShDU1NQYXJz
ZXJUb2tlblJhbmdlIHByZWx1ZGUsIENTU1BhcnNlclRva2VuUmFuZ2UgYmxvY2spOwotI2lmIEVO
QUJMRShDU1NfUkVHSU9OUykKLSAgICBSZWZQdHI8U3R5bGVSdWxlUmVnaW9uPiBjb25zdW1lUmVn
aW9uUnVsZShDU1NQYXJzZXJUb2tlblJhbmdlIHByZWx1ZGUsIENTU1BhcnNlclRva2VuUmFuZ2Ug
YmxvY2spOwotI2VuZGlmCi0gICAgLy8gVXBkYXRlcyBtX3BhcnNlZFByb3BlcnRpZXMKICAgICAK
ICAgICAvLyBGSVhNRS1ORVdQQVJTRVI6IFN1cHBvcnQgImFwcGx5IgogICAgIC8vIHZvaWQgY29u
c3VtZUFwcGx5UnVsZShDU1NQYXJzZXJUb2tlblJhbmdlIHByZWx1ZGUpOwpJbmRleDogU291cmNl
L1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAJKHJldmlzaW9u
IDIyMjI1NykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOTAsMTEgKzI5MCw2IEBAIHN0YXRpYyBib29sIGlzTGVn
YWN5QnJlYWtQcm9wZXJ0eShDU1NQcm8KICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Q29sdW1u
QnJlYWtBZnRlcjoKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Q29sdW1uQnJlYWtCZWZvcmU6
CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbkJyZWFrSW5zaWRlOgotI2lmIEVOQUJM
RShDU1NfUkVHSU9OUykKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0UmVnaW9uQnJlYWtBZnRl
cjoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0UmVnaW9uQnJlYWtCZWZvcmU6Ci0gICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdFJlZ2lvbkJyZWFrSW5zaWRlOgotI2VuZGlmCiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwpAQCAtMzQ5OCwxOCArMzQ5
Myw2IEBAIHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVHcmlkVGVtcGwKICAgICByZXR1
cm4gQ1NTR3JpZFRlbXBsYXRlQXJlYXNWYWx1ZTo6Y3JlYXRlKGdyaWRBcmVhTWFwLCByb3dDb3Vu
dCwgY29sdW1uQ291bnQpOwogfQogCi0jaWYgRU5BQkxFKENTU19SRUdJT05TKQotc3RhdGljIFJl
ZlB0cjxDU1NWYWx1ZT4gY29uc3VtZUZsb3dQcm9wZXJ0eShDU1NQYXJzZXJUb2tlblJhbmdlJiBy
YW5nZSkKLXsKLSAgICBSZWZQdHI8Q1NTVmFsdWU+IHJlc3VsdDsKLSAgICBpZiAocmFuZ2UucGVl
aygpLmlkKCkgPT0gQ1NTVmFsdWVOb25lKQotICAgICAgICByZXN1bHQgPSBjb25zdW1lSWRlbnQo
cmFuZ2UpOwotICAgIGVsc2UKLSAgICAgICAgcmVzdWx0ID0gY29uc3VtZUN1c3RvbUlkZW50KHJh
bmdlKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotI2VuZGlmCi0KIHN0YXRpYyBSZWZQdHI8Q1NT
VmFsdWU+IGNvbnN1bWVMaW5lQm94Q29udGFpbihDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkK
IHsKICAgICBpZiAocmFuZ2UucGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVOb25lKQpAQCAtNDI1Mywx
MSArNDIzNiw2IEBAIFJlZlB0cjxDU1NWYWx1ZT4gQ1NTUHJvcGVydHlQYXJzZXI6OnBhcnMKICAg
ICAgICAgaWYgKCFtX2NvbnRleHQuY3NzR3JpZExheW91dEVuYWJsZWQpCiAgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICAgICAgcmV0dXJuIGNvbnN1bWVHcmlkQXV0b0Zsb3cobV9yYW5n
ZSk7Ci0jaWYgRU5BQkxFKENTU19SRUdJT05TKQotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRG
bG93SW50bzoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Rmxvd0Zyb206Ci0gICAgICAgIHJl
dHVybiBjb25zdW1lRmxvd1Byb3BlcnR5KG1fcmFuZ2UpOwotI2VuZGlmCiAgICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdExpbmVHcmlkOgogICAgICAgICByZXR1cm4gY29uc3VtZUxpbmVHcmlkKG1f
cmFuZ2UpOwogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRJbml0aWFsTGV0dGVyOgpAQCAtNTAw
MSwxOSArNDk3OSw2IEBAIHN0YXRpYyBpbmxpbmUgQ1NTVmFsdWVJRCBtYXBGcm9tQ29sdW1uQnIK
ICAgICByZXR1cm4gQ1NTVmFsdWVJbnZhbGlkOwogfQogCi0jaWYgRU5BQkxFKENTU19SRUdJT05T
KQotc3RhdGljIGlubGluZSBDU1NWYWx1ZUlEIG1hcEZyb21SZWdpb25CcmVha0JldHdlZW4oQ1NT
VmFsdWVJRCB2YWx1ZSkKLXsKLSAgICBpZiAodmFsdWUgPT0gQ1NTVmFsdWVBbHdheXMpCi0gICAg
ICAgIHJldHVybiBDU1NWYWx1ZVJlZ2lvbjsKLSAgICBpZiAodmFsdWUgPT0gQ1NTVmFsdWVBdXRv
KQotICAgICAgICByZXR1cm4gdmFsdWU7Ci0gICAgaWYgKHZhbHVlID09IENTU1ZhbHVlQXZvaWQp
Ci0gICAgICAgIHJldHVybiBDU1NWYWx1ZUF2b2lkUmVnaW9uOwotICAgIHJldHVybiBDU1NWYWx1
ZUludmFsaWQ7Ci19Ci0jZW5kaWYKLQogc3RhdGljIGlubGluZSBDU1NWYWx1ZUlEIG1hcEZyb21D
b2x1bW5SZWdpb25PclBhZ2VCcmVha0luc2lkZShDU1NWYWx1ZUlEIHZhbHVlKQogewogICAgIGlm
ICh2YWx1ZSA9PSBDU1NWYWx1ZUF1dG8gfHwgdmFsdWUgPT0gQ1NTVmFsdWVBdm9pZCkKQEAgLTUw
MjcsMTUgKzQ5OTIsNyBAQCBzdGF0aWMgaW5saW5lIENTU1Byb3BlcnR5SUQgbWFwRnJvbUxlZ2Fj
CiAgICAgICAgIHJldHVybiBDU1NQcm9wZXJ0eUJyZWFrQWZ0ZXI7CiAgICAgaWYgKHByb3BlcnR5
ID09IENTU1Byb3BlcnR5UGFnZUJyZWFrQmVmb3JlIHx8IHByb3BlcnR5ID09IENTU1Byb3BlcnR5
V2Via2l0Q29sdW1uQnJlYWtCZWZvcmUpCiAgICAgICAgIHJldHVybiBDU1NQcm9wZXJ0eUJyZWFr
QmVmb3JlOwotI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKLSAgICBpZiAocHJvcGVydHkgPT0gQ1NT
UHJvcGVydHlXZWJraXRSZWdpb25CcmVha0FmdGVyKQotICAgICAgICByZXR1cm4gQ1NTUHJvcGVy
dHlCcmVha0FmdGVyOwotICAgIGlmIChwcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eVdlYmtpdFJlZ2lv
bkJyZWFrQmVmb3JlKQotICAgICAgICByZXR1cm4gQ1NTUHJvcGVydHlCcmVha0JlZm9yZTsKLSAg
ICBBU1NFUlQocHJvcGVydHkgPT0gQ1NTUHJvcGVydHlQYWdlQnJlYWtJbnNpZGUgfHwgcHJvcGVy
dHkgPT0gQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5CcmVha0luc2lkZSB8fCBwcm9wZXJ0eSA9PSBD
U1NQcm9wZXJ0eVdlYmtpdFJlZ2lvbkJyZWFrSW5zaWRlKTsKLSNlbHNlCiAgICAgQVNTRVJUKHBy
b3BlcnR5ID09IENTU1Byb3BlcnR5UGFnZUJyZWFrSW5zaWRlIHx8IHByb3BlcnR5ID09IENTU1By
b3BlcnR5V2Via2l0Q29sdW1uQnJlYWtJbnNpZGUpOwotI2VuZGlmCiAgICAgcmV0dXJuIENTU1By
b3BlcnR5QnJlYWtJbnNpZGU7CiB9CiAKQEAgLTUwNTksMTMgKzUwMTYsNiBAQCBib29sIENTU1By
b3BlcnR5UGFyc2VyOjpjb25zdW1lTGVnYWN5QnJlCiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dENvbHVtbkJyZWFrQmVmb3JlOgogICAgICAgICB2YWx1ZSA9IG1hcEZyb21Db2x1bW5CcmVha0Jl
dHdlZW4odmFsdWUpOwogICAgICAgICBicmVhazsKLSNpZiBFTkFCTEUoQ1NTX1JFR0lPTlMpCi0g
ICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFJlZ2lvbkJyZWFrQWZ0ZXI6Ci0gICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdFJlZ2lvbkJyZWFrQmVmb3JlOgotICAgICAgICB2YWx1ZSA9IG1hcEZyb21S
ZWdpb25CcmVha0JldHdlZW4odmFsdWUpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0UmVnaW9uQnJlYWtJbnNpZGU6Ci0jZW5kaWYKICAgICBjYXNlIENTU1Byb3Bl
cnR5UGFnZUJyZWFrSW5zaWRlOgogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5CcmVh
a0luc2lkZToKICAgICAgICAgdmFsdWUgPSBtYXBGcm9tQ29sdW1uUmVnaW9uT3JQYWdlQnJlYWtJ
bnNpZGUodmFsdWUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcAkocmV2
aXNpb24gMjIyMjU3KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMDgsOSArMTA4LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGRlc3Ry
b3lSZW5kZXJUcmVlSWZOZQogewogICAgIGJvb2wgaXNFbGVtZW50ID0gaXM8RWxlbWVudD4oY2hp
bGQpOwogICAgIGF1dG8gaGFzRGlzcGxheUNvbnRlbnRzID0gaXNFbGVtZW50ICYmIGRvd25jYXN0
PEVsZW1lbnQ+KGNoaWxkKS5oYXNEaXNwbGF5Q29udGVudHMoKTsKLSAgICBhdXRvIGlzTmFtZWRG
bG93RWxlbWVudCA9IGlzRWxlbWVudCAmJiBkb3duY2FzdDxFbGVtZW50PihjaGlsZCkuaXNOYW1l
ZEZsb3dDb250ZW50RWxlbWVudCgpOwotICAgIC8vIEZJWE1FOiBHZXQgcmlkIG9mIHRoZSBuYW1l
ZCBmbG93IHRlc3QuCi0gICAgaWYgKCFjaGlsZC5yZW5kZXJlcigpICYmICFoYXNEaXNwbGF5Q29u
dGVudHMgJiYgIWlzTmFtZWRGbG93RWxlbWVudCkKKyAgICBpZiAoIWNoaWxkLnJlbmRlcmVyKCkg
JiYgIWhhc0Rpc3BsYXlDb250ZW50cykKICAgICAgICAgcmV0dXJuOwogICAgIGlmIChpc0VsZW1l
bnQpCiAgICAgICAgIFJlbmRlclRyZWVVcGRhdGVyOjp0ZWFyRG93blJlbmRlcmVycyhkb3duY2Fz
dDxFbGVtZW50PihjaGlsZCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RPTUFsbEluT25l
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRE9NQWxsSW5PbmUuY3BwCShy
ZXZpc2lvbiAyMjIyNTcpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRE9NQWxsSW5PbmUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00OSw3ICs0OSw2IEBACiAjaW5jbHVkZSAiRE9NRXJyb3IuY3BwIgog
I2luY2x1ZGUgIkRPTUV4Y2VwdGlvbi5jcHAiCiAjaW5jbHVkZSAiRE9NSW1wbGVtZW50YXRpb24u
Y3BwIgotI2luY2x1ZGUgIkRPTU5hbWVkRmxvd0NvbGxlY3Rpb24uY3BwIgogI2luY2x1ZGUgIkRP
TVN0cmluZ0xpc3QuY3BwIgogI2luY2x1ZGUgIkRhdGFUcmFuc2Zlci5jcHAiCiAjaW5jbHVkZSAi
RGF0YVRyYW5zZmVySXRlbS5jcHAiCkBAIC0xMDIsNyArMTAxLDYgQEAKICNpbmNsdWRlICJNdXRh
dGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uLmNwcCIKICNpbmNsdWRlICJNdXRhdGlvblJlY29yZC5j
cHAiCiAjaW5jbHVkZSAiTmFtZU5vZGVMaXN0LmNwcCIKLSNpbmNsdWRlICJOYW1lZEZsb3dDb2xs
ZWN0aW9uLmNwcCIKICNpbmNsdWRlICJOYW1lZE5vZGVNYXAuY3BwIgogI2luY2x1ZGUgIk5vZGUu
Y3BwIgogI2luY2x1ZGUgIk5vZGVGaWx0ZXJDb25kaXRpb24uY3BwIgpAQCAtMTU4LDcgKzE1Niw2
IEBACiAjaW5jbHVkZSAiVmlld3BvcnRBcmd1bWVudHMuY3BwIgogI2luY2x1ZGUgIlZpc2l0ZWRM
aW5rU3RhdGUuY3BwIgogI2luY2x1ZGUgIldlYktpdEFuaW1hdGlvbkV2ZW50LmNwcCIKLSNpbmNs
dWRlICJXZWJLaXROYW1lZEZsb3cuY3BwIgogI2luY2x1ZGUgIldlYktpdFRyYW5zaXRpb25FdmVu
dC5jcHAiCiAjaW5jbHVkZSAiV2hlZWxFdmVudC5jcHAiCiAjaW5jbHVkZSAiWE1MRG9jdW1lbnRQ
YXJzZXIuY3BwIgpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RPTU5hbWVkRmxvd0NvbGxlY3Rp
b24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9ET01OYW1lZEZsb3dDb2xs
ZWN0aW9uLmNwcAkocmV2aXNpb24gMjIyMjU3KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RPTU5h
bWVkRmxvd0NvbGxlY3Rpb24uY3BwCShub25leGlzdGVudCkKQEAgLTEsOTMgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMiBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZQotICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcKLSAqICAgIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiAgICBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZwotICog
ICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
Ci0gKiAgICBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUiAiQVMgSVMiIEFORCBBTlkK
LSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIEJFCi0gKiBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksCi0gKiBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SCi0gKiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YKLSAqIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgot
ICogU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkRP
TU5hbWVkRmxvd0NvbGxlY3Rpb24uaCIKLQotI2luY2x1ZGUgIldlYktpdE5hbWVkRmxvdy5oIgot
I2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZ0hhc2guaD4KLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1pbmxpbmUgRE9NTmFtZWRGbG93Q29sbGVjdGlvbjo6RE9NTmFtZWRGbG93Q29sbGVj
dGlvbihWZWN0b3I8UmVmPFdlYktpdE5hbWVkRmxvdz4+JiYgZmxvd3MpCi0gICAgOiBtX2Zsb3dz
KFdURk1vdmUoZmxvd3MpKQotewotfQotCi1SZWY8RE9NTmFtZWRGbG93Q29sbGVjdGlvbj4gRE9N
TmFtZWRGbG93Q29sbGVjdGlvbjo6Y3JlYXRlKFZlY3RvcjxSZWY8V2ViS2l0TmFtZWRGbG93Pj4m
JiBmbG93cykKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBET01OYW1lZEZsb3dDb2xsZWN0
aW9uKFdURk1vdmUoZmxvd3MpKSk7Ci19Ci0KLURPTU5hbWVkRmxvd0NvbGxlY3Rpb246On5ET01O
YW1lZEZsb3dDb2xsZWN0aW9uKCkKLXsKLX0KLQotV2ViS2l0TmFtZWRGbG93KiBET01OYW1lZEZs
b3dDb2xsZWN0aW9uOjppdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdAotewotICAgIGlmIChpbmRl
eCA+PSBtX2Zsb3dzLnNpemUoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJu
IGNvbnN0X2Nhc3Q8V2ViS2l0TmFtZWRGbG93Kj4obV9mbG93c1tpbmRleF0ucHRyKCkpOwotfQot
Ci1zdHJ1Y3QgRE9NTmFtZWRGbG93Q29sbGVjdGlvbjo6SGFzaEZ1bmN0aW9ucyB7Ci0gICAgc3Rh
dGljIHVuc2lnbmVkIGhhc2goY29uc3QgV2ViS2l0TmFtZWRGbG93KiBrZXkpIHsgcmV0dXJuIEF0
b21pY1N0cmluZ0hhc2g6Omhhc2goa2V5LT5uYW1lKCkpOyB9Ci0gICAgc3RhdGljIGJvb2wgZXF1
YWwoY29uc3QgV2ViS2l0TmFtZWRGbG93KiBhLCBjb25zdCBXZWJLaXROYW1lZEZsb3cqIGIpIHsg
cmV0dXJuIGEtPm5hbWUoKSA9PSBiLT5uYW1lKCk7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBz
YWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IGZhbHNlOwotCi0gICAgc3RhdGljIHVuc2ln
bmVkIGhhc2goY29uc3QgQXRvbWljU3RyaW5nJiBrZXkpIHsgcmV0dXJuIEF0b21pY1N0cmluZ0hh
c2g6Omhhc2goa2V5KTsgfQotICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFdlYktpdE5hbWVk
RmxvdyogYSwgY29uc3QgQXRvbWljU3RyaW5nJiBiKSB7IHJldHVybiBhLT5uYW1lKCkgPT0gYjsg
fQotfTsKLQotV2ViS2l0TmFtZWRGbG93KiBET01OYW1lZEZsb3dDb2xsZWN0aW9uOjpuYW1lZEl0
ZW0oY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKSBjb25zdAotewotICAgIGlmIChtX2Zsb3dzQnlO
YW1lLmlzRW1wdHkoKSkgewotICAgICAgICAvLyBObyBuZWVkIHRvIG9wdGltaXplIHRoZSBjYXNl
IHdoZXJlIG1fZmxvd3MgaXMgZW1wdHk7IHdpbGwgZG8gbm90aGluZyB2ZXJ5IHF1aWNrbHkuCi0g
ICAgICAgIGZvciAoYXV0byYgZmxvdyA6IG1fZmxvd3MpCi0gICAgICAgICAgICBtX2Zsb3dzQnlO
YW1lLmFkZChjb25zdF9jYXN0PFdlYktpdE5hbWVkRmxvdyo+KGZsb3cucHRyKCkpKTsKLSAgICB9
Ci0gICAgYXV0byBpdCA9IG1fZmxvd3NCeU5hbWUuZmluZDxIYXNoRnVuY3Rpb25zPihuYW1lKTsK
LSAgICBpZiAoaXQgPT0gbV9mbG93c0J5TmFtZS5lbmQoKSkKLSAgICAgICAgcmV0dXJuIG51bGxw
dHI7Ci0gICAgcmV0dXJuICppdDsKLX0KLQotY29uc3QgVmVjdG9yPEF0b21pY1N0cmluZz4mIERP
TU5hbWVkRmxvd0NvbGxlY3Rpb246OnN1cHBvcnRlZFByb3BlcnR5TmFtZXMoKQotewotICAgIGlm
IChtX2Zsb3dOYW1lcy5pc0VtcHR5KCkpIHsKLSAgICAgICAgLy8gTm8gbmVlZCB0byBvcHRpbWl6
ZSB0aGUgY2FzZSB3aGVyZSBtX2Zsb3dzIGlzIGVtcHR5OyB3aWxsIGRvIG5vdGhpbmcgcmVsYXRp
dmVseSBxdWlja2x5LgotICAgICAgICBtX2Zsb3dOYW1lcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5
KG1fZmxvd3Muc2l6ZSgpKTsKLSAgICAgICAgZm9yIChhdXRvJiBmbG93IDogbV9mbG93cykKLSAg
ICAgICAgICAgIG1fZmxvd05hbWVzLnVuY2hlY2tlZEFwcGVuZChmbG93LT5uYW1lKCkpOwotICAg
IH0KLSAgICByZXR1cm4gbV9mbG93TmFtZXM7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9ET01OYW1lZEZsb3dDb2xsZWN0aW9uLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RPTU5hbWVkRmxvd0NvbGxlY3Rpb24uaAkocmV2
aXNpb24gMjIyMjU3KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RPTU5hbWVkRmxvd0NvbGxlY3Rp
b24uaAkobm9uZXhpc3RlbnQpCkBAIC0xLDY3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTIgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUKLSAqICAgIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
Ci0gKiAgICBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKLSAqICAgIGRpc2NsYWltZXIgaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscwotICogICAgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVIgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUIEhPTERFUiBCRQotICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLAotICogT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUgotICogVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GCi0gKiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKLSAqIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRl
IDx3dGYvSGFzaFNldC5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFdlYktpdE5hbWVk
RmxvdzsKLQotY2xhc3MgRE9NTmFtZWRGbG93Q29sbGVjdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVk
PERPTU5hbWVkRmxvd0NvbGxlY3Rpb24+IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPERPTU5h
bWVkRmxvd0NvbGxlY3Rpb24+IGNyZWF0ZShWZWN0b3I8UmVmPFdlYktpdE5hbWVkRmxvdz4+JiYp
OwotICAgIH5ET01OYW1lZEZsb3dDb2xsZWN0aW9uKCk7Ci0KLSAgICB1bnNpZ25lZCBsZW5ndGgo
KSBjb25zdDsKLSAgICBXZWJLaXROYW1lZEZsb3cqIGl0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0
OwotICAgIFdlYktpdE5hbWVkRmxvdyogbmFtZWRJdGVtKGNvbnN0IEF0b21pY1N0cmluZyYgbmFt
ZSkgY29uc3Q7Ci0gICAgY29uc3QgVmVjdG9yPEF0b21pY1N0cmluZz4mIHN1cHBvcnRlZFByb3Bl
cnR5TmFtZXMoKTsKLQotcHJpdmF0ZToKLSAgICBzdHJ1Y3QgSGFzaEZ1bmN0aW9uczsKLQotICAg
IGV4cGxpY2l0IERPTU5hbWVkRmxvd0NvbGxlY3Rpb24oVmVjdG9yPFJlZjxXZWJLaXROYW1lZEZs
b3c+PiYmKTsKLQotICAgIGNvbnN0IFZlY3RvcjxSZWY8V2ViS2l0TmFtZWRGbG93Pj4gbV9mbG93
czsKLSAgICBtdXRhYmxlIEhhc2hTZXQ8V2ViS2l0TmFtZWRGbG93KiwgSGFzaEZ1bmN0aW9ucz4g
bV9mbG93c0J5TmFtZTsKLSAgICBtdXRhYmxlIFZlY3RvcjxBdG9taWNTdHJpbmc+IG1fZmxvd05h
bWVzOwotfTsKLQotaW5saW5lIHVuc2lnbmVkIERPTU5hbWVkRmxvd0NvbGxlY3Rpb246Omxlbmd0
aCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fZmxvd3Muc2l6ZSgpOwotfQotCi19IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRE9NTmFtZWRGbG93Q29sbGVj
dGlvbi5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RPTU5hbWVkRmxvd0Nv
bGxlY3Rpb24uaWRsCShyZXZpc2lvbiAyMjIyNTcpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRE9N
TmFtZWRGbG93Q29sbGVjdGlvbi5pZGwJKG5vbmV4aXN0ZW50KQpAQCAtMSw0MSArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDEyIEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUKLSAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nCi0gKiAgICBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogICAgY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcK
LSAqICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscwotICogICAgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVIgIkFTIElTIiBBTkQg
QU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBCRQotICogTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLAot
ICogT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUgotICogVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GCi0gKiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YKLSAqIFNVQ0ggREFNQUdFLgotICovCi0KLVsKLSAgICBDb25kaXRpb25hbD1DU1NfUkVHSU9O
UywKLSAgICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlLAotICAgIEludGVyZmFjZU5hbWU9V2Vi
S2l0TmFtZWRGbG93Q29sbGVjdGlvbiwKLSAgICBKU0dlbmVyYXRlVG9KU09iamVjdCwKLSAgICBM
ZWdhY3lVbmVudW1lcmFibGVOYW1lZFByb3BlcnRpZXMsCi0gICAgTm9JbnRlcmZhY2VPYmplY3QK
LV0gaW50ZXJmYWNlIERPTU5hbWVkRmxvd0NvbGxlY3Rpb24gewotICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSB1bnNpZ25lZCBsb25nIGxlbmd0aDsKLSAgICBnZXR0ZXIgV2ViS2l0TmFtZWRGbG93PyBp
dGVtKHVuc2lnbmVkIGxvbmcgaW5kZXgpOwotICAgIGdldHRlciBXZWJLaXROYW1lZEZsb3c/IG5h
bWVkSXRlbShET01TdHJpbmcgbmFtZSk7Ci19OwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3Bw
CShyZXZpc2lvbiAyMjIyNTcpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC01MSw3ICs1MSw2IEBACiAjaW5jbHVkZSAiQ3VzdG9tRWxlbWVudFJl
Z2lzdHJ5LmgiCiAjaW5jbHVkZSAiQ3VzdG9tRXZlbnQuaCIKICNpbmNsdWRlICJET01JbXBsZW1l
bnRhdGlvbi5oIgotI2luY2x1ZGUgIkRPTU5hbWVkRmxvd0NvbGxlY3Rpb24uaCIKICNpbmNsdWRl
ICJET01XaW5kb3cuaCIKICNpbmNsdWRlICJEYXRlQ29tcG9uZW50cy5oIgogI2luY2x1ZGUgIkRl
YnVnUGFnZU92ZXJsYXlzLmgiCkBAIC0xMTgsNyArMTE3LDYgQEAKICNpbmNsdWRlICJNb3VzZUV2
ZW50V2l0aEhpdFRlc3RSZXN1bHRzLmgiCiAjaW5jbHVkZSAiTXV0YXRpb25FdmVudC5oIgogI2lu
Y2x1ZGUgIk5hbWVOb2RlTGlzdC5oIgotI2luY2x1ZGUgIk5hbWVkRmxvd0NvbGxlY3Rpb24uaCIK
ICNpbmNsdWRlICJOYXZpZ2F0aW9uRGlzYWJsZXIuaCIKICNpbmNsdWRlICJOYXZpZ2F0aW9uU2No
ZWR1bGVyLmgiCiAjaW5jbHVkZSAiTmVzdGluZ0xldmVsSW5jcmVtZW50ZXIuaCIKQEAgLTExNTMs
MjggKzExNTEsNiBAQCBib29sIERvY3VtZW50Ojppc0NTU0dyaWRMYXlvdXRFbmFibGVkKCkgCiAg
ICAgcmV0dXJuIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuaXNDU1NH
cmlkTGF5b3V0RW5hYmxlZCgpOwogfQogCi0jaWYgRU5BQkxFKENTU19SRUdJT05TKQotCi1SZWZQ
dHI8RE9NTmFtZWRGbG93Q29sbGVjdGlvbj4gRG9jdW1lbnQ6OndlYmtpdEdldE5hbWVkRmxvd3Mo
KQotewotICAgIGlmICghcmVuZGVyVmlldygpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQot
ICAgIHVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKLQotICAgIHJldHVybiBuYW1lZEZsb3dzKCkuY3Jl
YXRlQ1NTT01TbmFwc2hvdCgpOwotfQotCi0jZW5kaWYKLQotTmFtZWRGbG93Q29sbGVjdGlvbiYg
RG9jdW1lbnQ6Om5hbWVkRmxvd3MoKQotewotICAgIGlmICghbV9uYW1lZEZsb3dzKQotICAgICAg
ICBtX25hbWVkRmxvd3MgPSBOYW1lZEZsb3dDb2xsZWN0aW9uOjpjcmVhdGUodGhpcyk7Ci0KLSAg
ICByZXR1cm4gKm1fbmFtZWRGbG93czsKLX0KLQogRXhjZXB0aW9uT3I8UmVmPEVsZW1lbnQ+PiBE
b2N1bWVudDo6Y3JlYXRlRWxlbWVudE5TKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZXNwYWNlVVJJ
LCBjb25zdCBTdHJpbmcmIHF1YWxpZmllZE5hbWUpCiB7CiAgICAgYXV0byBwYXJzZVJlc3VsdCA9
IHBhcnNlUXVhbGlmaWVkTmFtZShuYW1lc3BhY2VVUkksIHF1YWxpZmllZE5hbWUpOwpAQCAtMjAz
NiwxMCArMjAxMiw4IEBAIGJvb2wgRG9jdW1lbnQ6OnVwZGF0ZUxheW91dElmRGltZW5zaW9uc08K
ICAgICB1cGRhdGVTdHlsZUlmTmVlZGVkKCk7CiAKICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVy
ID0gZWxlbWVudC5yZW5kZXJlcigpOwotICAgIGlmICghcmVuZGVyZXIgfHwgcmVuZGVyZXItPm5l
ZWRzTGF5b3V0KCkgfHwgZWxlbWVudC5yZW5kZXJOYW1lZEZsb3dGcmFnbWVudCgpKSB7CisgICAg
aWYgKCFyZW5kZXJlciB8fCByZW5kZXJlci0+bmVlZHNMYXlvdXQoKSkgewogICAgICAgICAvLyBJ
ZiB3ZSBkb24ndCBoYXZlIGEgcmVuZGVyZXIgb3IgaWYgdGhlIHJlbmRlcmVyIG5lZWRzIGxheW91
dCBmb3IgYW55IHJlYXNvbiwgZ2l2ZSB1cC4KLSAgICAgICAgLy8gTmFtZWQgZmxvd3MgY2FuIGhh
dmUgYXV0byBoZWlnaHQsIHNvIGRvbid0IHRyeSB0byBlbmZvcmNlIHRoZSBvcHRpbWl6YXRpb24g
aW4gdGhpcyBjYXNlLgotICAgICAgICAvLyBUaGUgMi1wYXNzIG5hdHVyZSBvZiBhdXRvIGhlaWdo
dCBuYW1lZCBmbG93IGxheW91dCBtZWFucyB0aGUgcmVnaW9uIG1heSBub3QgYmUgZGlydHkgeWV0
LgogICAgICAgICByZXF1aXJlRnVsbExheW91dCA9IHRydWU7CiAgICAgfQogCkBAIC0yMDg1LDcg
KzIwNTksNyBAQCBib29sIERvY3VtZW50Ojp1cGRhdGVMYXlvdXRJZkRpbWVuc2lvbnNPCiAgICAg
ICAgICAgICBpZiAoIWN1cnJlbnRCb3gtPmlzUmVuZGVyQmxvY2tGbG93KCkgfHwgY3VycmVudEJv
eC0+Zmxvd1RocmVhZENvbnRhaW5pbmdCbG9jaygpIHx8IGN1cnJlbnRCb3gtPmlzV3JpdGluZ01v
ZGVSb290KCkpIHsKICAgICAgICAgICAgICAgICAvLyBGSVhNRTogRm9yIG5vdyByZXF1aXJlIG9u
bHkgYmxvY2sgZmxvd3MgYWxsIHRoZSB3YXkgYmFjayB0byB0aGUgcm9vdC4gVGhpcyBsaW1pdHMg
dGhlIG9wdGltaXphdGlvbgogICAgICAgICAgICAgICAgIC8vIGZvciBub3csIGFuZCB3ZSdsbCBl
eHBhbmQgaXQgaW4gZnV0dXJlIHBhdGNoZXMgdG8gYXBwbHkgdG8gbW9yZSBhbmQgbW9yZSBzY2Vu
YXJpb3MuCi0gICAgICAgICAgICAgICAgLy8gRGlzYWxsb3cgcmVnaW9ucy9jb2x1bW5zIGZyb20g
aGF2aW5nIHRoZSBvcHRpbWl6YXRpb24uCisgICAgICAgICAgICAgICAgLy8gRGlzYWxsb3cgY29s
dW1ucyBmcm9tIGhhdmluZyB0aGUgb3B0aW1pemF0aW9uLgogICAgICAgICAgICAgICAgIC8vIEdp
dmUgdXAgaWYgdGhlIHdyaXRpbmcgbW9kZSBjaGFuZ2VzIGF0IGFsbCBpbiB0aGUgY29udGFpbmlu
ZyBibG9jayBjaGFpbi4KICAgICAgICAgICAgICAgICByZXF1aXJlRnVsbExheW91dCA9IHRydWU7
CiAgICAgICAgICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAkocmV2aXNp
b24gMjIyMjU3KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTk3LDcgKzk3LDYgQEAgY2xhc3MgQ2hhcmFjdGVyRGF0YTsKIGNsYXNzIENvbW1lbnQ7
CiBjbGFzcyBDb25zdGFudFByb3BlcnR5TWFwOwogY2xhc3MgRE9NSW1wbGVtZW50YXRpb247Ci1j
bGFzcyBET01OYW1lZEZsb3dDb2xsZWN0aW9uOwogY2xhc3MgRE9NU2VsZWN0aW9uOwogY2xhc3Mg
RE9NV2luZG93OwogY2xhc3MgRE9NV3JhcHBlcldvcmxkOwpAQCAtMTQ2LDcgKzE0NSw2IEBAIGNs
YXNzIE1lZGlhUGxheWJhY2tUYXJnZXRDbGllbnQ7CiBjbGFzcyBNZWRpYVF1ZXJ5TGlzdDsKIGNs
YXNzIE1lZGlhUXVlcnlNYXRjaGVyOwogY2xhc3MgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0
czsKLWNsYXNzIE5hbWVkRmxvd0NvbGxlY3Rpb247CiBjbGFzcyBOb2RlRmlsdGVyOwogY2xhc3Mg
Tm9kZUl0ZXJhdG9yOwogY2xhc3MgUGFnZTsKQEAgLTQwOCwxMSArNDA2LDYgQEAgcHVibGljOgog
ICAgIHN0YXRpYyBDdXN0b21FbGVtZW50TmFtZVZhbGlkYXRpb25TdGF0dXMgdmFsaWRhdGVDdXN0
b21FbGVtZW50TmFtZShjb25zdCBBdG9taWNTdHJpbmcmKTsKIAogICAgIGJvb2wgaXNDU1NHcmlk
TGF5b3V0RW5hYmxlZCgpIGNvbnN0OwotI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKLSAgICBSZWZQ
dHI8RE9NTmFtZWRGbG93Q29sbGVjdGlvbj4gd2Via2l0R2V0TmFtZWRGbG93cygpOwotI2VuZGlm
Ci0KLSAgICBOYW1lZEZsb3dDb2xsZWN0aW9uJiBuYW1lZEZsb3dzKCk7CiAKICAgICBXRUJDT1JF
X0VYUE9SVCBSZWZQdHI8UmFuZ2U+IGNhcmV0UmFuZ2VGcm9tUG9pbnQoaW50IHgsIGludCB5KTsK
ICAgICBSZWZQdHI8UmFuZ2U+IGNhcmV0UmFuZ2VGcm9tUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQm
IGNsaWVudFBvaW50KTsKQEAgLTE2NzIsOCArMTY2NSw2IEBAIHByaXZhdGU6CiAKICAgICBUaW1l
ciBtX3Zpc3VhbFVwZGF0ZXNTdXBwcmVzc2lvblRpbWVyOwogCi0gICAgUmVmUHRyPE5hbWVkRmxv
d0NvbGxlY3Rpb24+IG1fbmFtZWRGbG93czsKLQogICAgIHZvaWQgY2xlYXJTaGFyZWRPYmplY3RQ
b29sKCk7CiAgICAgVGltZXIgbV9zaGFyZWRPYmplY3RQb29sQ2xlYXJUaW1lcjsKIApJbmRleDog
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuaWRsCShyZXZpc2lvbiAyMjIyNTcpCisrKyBTb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xODksOSArMTg5LDYgQEAgdHlw
ZWRlZiAoCiAgICAgLy8gRklYTUU6IFRoaXMgaXMgbm90IHN0YW5kYXJkIGFuZCBoYXMgYmVlbiBk
cm9wcGVkIGZyb20gQmxpbmsgYWxyZWFkeS4KICAgICBSZW5kZXJpbmdDb250ZXh0PyBnZXRDU1ND
YW52YXNDb250ZXh0KERPTVN0cmluZyBjb250ZXh0SWQsIERPTVN0cmluZyBuYW1lLCBsb25nIHdp
ZHRoLCBsb25nIGhlaWdodCk7CiAKLSAgICAvLyBOb24gc3RhbmRhcmQgKGh0dHBzOi8vZGV2ZWxv
cGVyLmFwcGxlLmNvbS9yZWZlcmVuY2Uvd2Via2l0anMvZG9jdW1lbnQvMTYzMzg2My13ZWJraXRn
ZXRuYW1lZGZsb3dzKS4KLSAgICBbQ29uZGl0aW9uYWw9Q1NTX1JFR0lPTlNdIERPTU5hbWVkRmxv
d0NvbGxlY3Rpb24gd2Via2l0R2V0TmFtZWRGbG93cygpOwotCiAgICAgLy8gTm9uIHN0YW5kYXJk
LCB0byBicmluZyB1cCB3aXRoIHN0YW5kYXJkcyB3b3JraW5nIGdyb3VwLgogICAgIFtFbmFibGVk
QnlTZXR0aW5nPVN0b3JhZ2VBY2Nlc3NBUEldIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIGhh
c1N0b3JhZ2VBY2Nlc3M7CiAgICAgW0VuYWJsZWRCeVNldHRpbmc9U3RvcmFnZUFjY2Vzc0FQSV0g
UHJvbWlzZTxib29sZWFuPiByZXF1ZXN0U3RvcmFnZUFjY2VzcygpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvZG9tL0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9F
bGVtZW50LmNwcAkocmV2aXNpb24gMjIyMjU3KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCw3ICs0OCw2IEBACiAjaW5jbHVkZSAiRXZlbnRE
aXNwYXRjaGVyLmgiCiAjaW5jbHVkZSAiRXZlbnRIYW5kbGVyLmgiCiAjaW5jbHVkZSAiRXZlbnRO
YW1lcy5oIgotI2luY2x1ZGUgIkZsb3dUaHJlYWRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiRm9j
dXNDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiRm9jdXNFdmVudC5oIgogI2luY2x1ZGUgIkZyYW1l
U2VsZWN0aW9uLmgiCkBAIC03OSwxMCArNzgsOCBAQAogI2luY2x1ZGUgIk5vZGVSZW5kZXJTdHls
ZS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtV2hlZWxFdmVudC5oIgogI2luY2x1ZGUgIlBvaW50ZXJM
b2NrQ29udHJvbGxlci5oIgotI2luY2x1ZGUgIlJlbmRlckZsb3dUaHJlYWQuaCIKICNpbmNsdWRl
ICJSZW5kZXJMYXllci5oIgogI2luY2x1ZGUgIlJlbmRlckxpc3RCb3guaCIKLSNpbmNsdWRlICJS
ZW5kZXJOYW1lZEZsb3dGcmFnbWVudC5oIgogI2luY2x1ZGUgIlJlbmRlclJlZ2lvbi5oIgogI2lu
Y2x1ZGUgIlJlbmRlclRoZW1lLmgiCiAjaW5jbHVkZSAiUmVuZGVyVHJlZVVwZGF0ZXIuaCIKQEAg
LTE4MiwxNSArMTc5LDYgQEAgRWxlbWVudDo6RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0
YQogCiBFbGVtZW50Ojp+RWxlbWVudCgpCiB7Ci0jaWZuZGVmIE5ERUJVRwotICAgIGlmIChkb2N1
bWVudCgpLmhhc0xpdmluZ1JlbmRlclRyZWUoKSkgewotICAgICAgICAvLyBXaGVuIHRoZSBkb2N1
bWVudCBpcyBub3QgZGVzdHJveWVkLCBhbiBlbGVtZW50IHRoYXQgd2FzIHBhcnQgb2YgYSBuYW1l
ZCBmbG93Ci0gICAgICAgIC8vIGNvbnRlbnQgbm9kZXMgc2hvdWxkIGhhdmUgYmVlbiByZW1vdmVk
IGZyb20gdGhlIGNvbnRlbnQgbm9kZXMgY29sbGVjdGlvbgotICAgICAgICAvLyBhbmQgdGhlIGlz
TmFtZWRGbG93Q29udGVudEVsZW1lbnQgZmxhZyByZXNldC4KLSAgICAgICAgQVNTRVJUX1dJVEhf
U0VDVVJJVFlfSU1QTElDQVRJT04oIWlzTmFtZWRGbG93Q29udGVudEVsZW1lbnQoKSk7Ci0gICAg
fQotI2VuZGlmCi0KICAgICBBU1NFUlQoIWJlZm9yZVBzZXVkb0VsZW1lbnQoKSk7CiAgICAgQVNT
RVJUKCFhZnRlclBzZXVkb0VsZW1lbnQoKSk7CiAKQEAgLTE3ODMsMTIgKzE3NzEsNiBAQCB2b2lk
IEVsZW1lbnQ6OnJlbW92ZWRGcm9tKENvbnRhaW5lck5vZGUmCiAjZW5kaWYKIH0KIAotdm9pZCBF
bGVtZW50Ojp1bnJlZ2lzdGVyTmFtZWRGbG93Q29udGVudEVsZW1lbnQoKQotewotICAgIGlmIChp
c05hbWVkRmxvd0NvbnRlbnRFbGVtZW50KCkgJiYgZG9jdW1lbnQoKS5yZW5kZXJWaWV3KCkpCi0g
ICAgICAgIGRvY3VtZW50KCkucmVuZGVyVmlldygpLT5mbG93VGhyZWFkQ29udHJvbGxlcigpLnVu
cmVnaXN0ZXJOYW1lZEZsb3dDb250ZW50RWxlbWVudCgqdGhpcyk7Ci19Ci0KIFNoYWRvd1Jvb3Qq
IEVsZW1lbnQ6OnNoYWRvd1Jvb3QoKSBjb25zdAogewogICAgIHJldHVybiBoYXNSYXJlRGF0YSgp
ID8gZWxlbWVudFJhcmVEYXRhKCktPnNoYWRvd1Jvb3QoKSA6IG51bGxwdHI7CkBAIC0yMTEyLDE2
ICsyMDk0LDYgQEAgdm9pZCBFbGVtZW50OjpzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKAogICAg
IHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBKU0xhenlFdmVudExpc3RlbmVy
OjpjcmVhdGUoKnRoaXMsIGF0dHJpYnV0ZU5hbWUsIGF0dHJpYnV0ZVZhbHVlKSwgbWFpblRocmVh
ZE5vcm1hbFdvcmxkKCkpOwogfQogCi12b2lkIEVsZW1lbnQ6OnNldElzTmFtZWRGbG93Q29udGVu
dEVsZW1lbnQoKQotewotICAgIGVuc3VyZUVsZW1lbnRSYXJlRGF0YSgpLnNldElzTmFtZWRGbG93
Q29udGVudEVsZW1lbnQodHJ1ZSk7Ci19Ci0KLXZvaWQgRWxlbWVudDo6Y2xlYXJJc05hbWVkRmxv
d0NvbnRlbnRFbGVtZW50KCkKLXsKLSAgICBlbnN1cmVFbGVtZW50UmFyZURhdGEoKS5zZXRJc05h
bWVkRmxvd0NvbnRlbnRFbGVtZW50KGZhbHNlKTsKLX0KLQogdm9pZCBFbGVtZW50OjpyZW1vdmVB
bGxFdmVudExpc3RlbmVycygpCiB7CiAgICAgQ29udGFpbmVyTm9kZTo6cmVtb3ZlQWxsRXZlbnRM
aXN0ZW5lcnMoKTsKQEAgLTI4NTMsMTIgKzI4MjUsNiBAQCBib29sIEVsZW1lbnQ6OnJhcmVEYXRh
U3R5bGVBZmZlY3RlZEJ5Rm9jCiAgICAgcmV0dXJuIGVsZW1lbnRSYXJlRGF0YSgpLT5zdHlsZUFm
ZmVjdGVkQnlGb2N1c1dpdGhpbigpOwogfQogCi1ib29sIEVsZW1lbnQ6OnJhcmVEYXRhSXNOYW1l
ZEZsb3dDb250ZW50RWxlbWVudCgpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKGhhc1JhcmVEYXRhKCkp
OwotICAgIHJldHVybiBlbGVtZW50UmFyZURhdGEoKS0+aXNOYW1lZEZsb3dDb250ZW50RWxlbWVu
dCgpOwotfQotCiBib29sIEVsZW1lbnQ6OnJhcmVEYXRhU3R5bGVBZmZlY3RlZEJ5QWN0aXZlKCkg
Y29uc3QKIHsKICAgICBBU1NFUlQoaGFzUmFyZURhdGEoKSk7CkBAIC0yODg5LDE2ICsyODU1LDYg
QEAgdW5zaWduZWQgRWxlbWVudDo6cmFyZURhdGFDaGlsZEluZGV4KCkgYwogICAgIHJldHVybiBl
bGVtZW50UmFyZURhdGEoKS0+Y2hpbGRJbmRleCgpOwogfQogCi12b2lkIEVsZW1lbnQ6OnNldFJl
Z2lvbk92ZXJzZXRTdGF0ZShSZWdpb25PdmVyc2V0U3RhdGUgc3RhdGUpCi17Ci0gICAgZW5zdXJl
RWxlbWVudFJhcmVEYXRhKCkuc2V0UmVnaW9uT3ZlcnNldFN0YXRlKHN0YXRlKTsKLX0KLQotUmVn
aW9uT3ZlcnNldFN0YXRlIEVsZW1lbnQ6OnJlZ2lvbk92ZXJzZXRTdGF0ZSgpIGNvbnN0Ci17Ci0g
ICAgcmV0dXJuIGhhc1JhcmVEYXRhKCkgPyBlbGVtZW50UmFyZURhdGEoKS0+cmVnaW9uT3ZlcnNl
dFN0YXRlKCkgOiBSZWdpb25VbmRlZmluZWQ7Ci19Ci0KIEF0b21pY1N0cmluZyBFbGVtZW50Ojpj
b21wdXRlSW5oZXJpdGVkTGFuZ3VhZ2UoKSBjb25zdAogewogICAgIGlmIChjb25zdCBFbGVtZW50
RGF0YSogZWxlbWVudERhdGEgPSB0aGlzLT5lbGVtZW50RGF0YSgpKSB7CkBAIC0zMTgxLDc2ICsz
MTM3LDYgQEAgYm9vbCBFbGVtZW50Ojppc1NwZWxsQ2hlY2tpbmdFbmFibGVkKCkgYwogICAgIHJl
dHVybiB0cnVlOwogfQogCi1SZW5kZXJOYW1lZEZsb3dGcmFnbWVudCogRWxlbWVudDo6cmVuZGVy
TmFtZWRGbG93RnJhZ21lbnQoKSBjb25zdAotewotICAgIGlmIChyZW5kZXJlcigpICYmIHJlbmRl
cmVyKCktPmlzUmVuZGVyTmFtZWRGbG93RnJhZ21lbnRDb250YWluZXIoKSkKLSAgICAgICAgcmV0
dXJuIGRvd25jYXN0PFJlbmRlckJsb2NrRmxvdz4oKnJlbmRlcmVyKCkpLnJlbmRlck5hbWVkRmxv
d0ZyYWdtZW50KCk7Ci0KLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLQotI2lmIEVOQUJMRShDU1Nf
UkVHSU9OUykKLQotYm9vbCBFbGVtZW50OjpzaG91bGRNb3ZlVG9GbG93VGhyZWFkKGNvbnN0IFJl
bmRlclN0eWxlJiBzdHlsZVRvVXNlKSBjb25zdAotewotI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQ
SSkKLSAgICBpZiAoZG9jdW1lbnQoKS53ZWJraXRJc0Z1bGxTY3JlZW4oKSAmJiBkb2N1bWVudCgp
LndlYmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxlbWVudCgpID09IHRoaXMpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLSNlbmRpZgotCi0gICAgaWYgKGlzSW5TaGFkb3dUcmVlKCkpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLQotICAgIGlmICghc3R5bGVUb1VzZS5oYXNGbG93SW50bygpKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotY29uc3QgQXRvbWljU3Ry
aW5nJiBFbGVtZW50Ojp3ZWJraXRSZWdpb25PdmVyc2V0KCkgY29uc3QKLXsKLSAgICBkb2N1bWVu
dCgpLnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOwotCi0gICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gdW5kZWZpbmVkU3RhdGUoInVuZGVmaW5lZCIs
IEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgIGlmICghcmVuZGVyTmFt
ZWRGbG93RnJhZ21lbnQoKSkKLSAgICAgICAgcmV0dXJuIHVuZGVmaW5lZFN0YXRlOwotCi0gICAg
c3dpdGNoIChyZWdpb25PdmVyc2V0U3RhdGUoKSkgewotICAgIGNhc2UgUmVnaW9uRml0OiB7Ci0g
ICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IGZpdFN0YXRlKCJmaXQi
LCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICAgICAgcmV0dXJuIGZp
dFN0YXRlOwotICAgIH0KLSAgICBjYXNlIFJlZ2lvbkVtcHR5OiB7Ci0gICAgICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IGVtcHR5U3RhdGUoImVtcHR5IiwgQXRvbWljU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgICAgIHJldHVybiBlbXB0eVN0YXRlOwot
ICAgIH0KLSAgICBjYXNlIFJlZ2lvbk92ZXJzZXQ6IHsKLSAgICAgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPEF0b21pY1N0cmluZz4gb3ZlcmZsb3dTdGF0ZSgib3ZlcnNldCIsIEF0b21pY1N0cmlu
Zzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgICAgICByZXR1cm4gb3ZlcmZsb3dTdGF0ZTsK
LSAgICB9Ci0gICAgY2FzZSBSZWdpb25VbmRlZmluZWQ6Ci0gICAgICAgIHJldHVybiB1bmRlZmlu
ZWRTdGF0ZTsKLSAgICB9Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4g
dW5kZWZpbmVkU3RhdGU7Ci19Ci0KLVZlY3RvcjxSZWZQdHI8UmFuZ2U+PiBFbGVtZW50Ojp3ZWJr
aXRHZXRSZWdpb25GbG93UmFuZ2VzKCkgY29uc3QKLXsKLSAgICBWZWN0b3I8UmVmUHRyPFJhbmdl
Pj4gcmFuZ2VPYmplY3RzOwotICAgIGRvY3VtZW50KCkudXBkYXRlTGF5b3V0SWdub3JlUGVuZGlu
Z1N0eWxlc2hlZXRzKCk7Ci0gICAgYXV0byogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpOwot
ICAgIGlmIChyZW5kZXJlciAmJiByZW5kZXJlci0+aXNSZW5kZXJOYW1lZEZsb3dGcmFnbWVudENv
bnRhaW5lcigpKSB7Ci0gICAgICAgIGF1dG8mIG5hbWVkRmxvd0ZyYWdtZW50ID0gKmRvd25jYXN0
PFJlbmRlckJsb2NrRmxvdz4oKnJlbmRlcmVyKS5yZW5kZXJOYW1lZEZsb3dGcmFnbWVudCgpOwot
ICAgICAgICBpZiAobmFtZWRGbG93RnJhZ21lbnQuaXNWYWxpZCgpKQotICAgICAgICAgICAgbmFt
ZWRGbG93RnJhZ21lbnQuZ2V0UmFuZ2VzKHJhbmdlT2JqZWN0cyk7Ci0gICAgfQotICAgIHJldHVy
biByYW5nZU9iamVjdHM7Ci19Ci0KLSNlbmRpZgotCiAjaWZuZGVmIE5ERUJVRwogYm9vbCBFbGVt
ZW50OjpmYXN0QXR0cmlidXRlTG9va3VwQWxsb3dlZChjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1l
KSBjb25zdAogewpAQCAtMzUyMCw3ICszNDA2LDYgQEAgdm9pZCBFbGVtZW50OjpyZXNldFN0eWxl
UmVsYXRpb25zKCkKIAogdm9pZCBFbGVtZW50OjpjbGVhclN0eWxlRGVyaXZlZERhdGFCZWZvcmVE
ZXRhY2hpbmdSZW5kZXJlcigpCiB7Ci0gICAgdW5yZWdpc3Rlck5hbWVkRmxvd0NvbnRlbnRFbGVt
ZW50KCk7CiAgICAgY2xlYXJCZWZvcmVQc2V1ZG9FbGVtZW50KCk7CiAgICAgY2xlYXJBZnRlclBz
ZXVkb0VsZW1lbnQoKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAkocmV2aXNpb24gMjIyMjU3
KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjgs
NyArMjgsNiBAQAogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRWxlbWVudERhdGEu
aCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKLSNpbmNsdWRlICJSZWdpb25PdmVyc2V0U3RhdGUu
aCIKICNpbmNsdWRlICJTY3JvbGxUb09wdGlvbnMuaCIKICNpbmNsdWRlICJTY3JvbGxUeXBlcy5o
IgogI2luY2x1ZGUgIlNoYWRvd1Jvb3RNb2RlLmgiCkBAIC01Miw3ICs1MSw2IEBAIGNsYXNzIFBs
YXRmb3JtS2V5Ym9hcmRFdmVudDsKIGNsYXNzIFBsYXRmb3JtTW91c2VFdmVudDsKIGNsYXNzIFBs
YXRmb3JtV2hlZWxFdmVudDsKIGNsYXNzIFBzZXVkb0VsZW1lbnQ7Ci1jbGFzcyBSZW5kZXJOYW1l
ZEZsb3dGcmFnbWVudDsKIGNsYXNzIFJlbmRlclRyZWVQb3NpdGlvbjsKIGNsYXNzIFdlYkFuaW1h
dGlvbjsKIHN0cnVjdCBFbGVtZW50U3R5bGU7CkBAIC0zNDUsOSArMzQzLDYgQEAgcHVibGljOgog
ICAgIHZvaWQgc2V0U3R5bGVJc0FmZmVjdGVkQnlQcmV2aW91c1NpYmxpbmcoKSB7IHNldEZsYWco
U3R5bGVJc0FmZmVjdGVkQnlQcmV2aW91c1NpYmxpbmcpOyB9CiAgICAgdm9pZCBzZXRDaGlsZElu
ZGV4KHVuc2lnbmVkKTsKIAotICAgIHZvaWQgc2V0UmVnaW9uT3ZlcnNldFN0YXRlKFJlZ2lvbk92
ZXJzZXRTdGF0ZSk7Ci0gICAgUmVnaW9uT3ZlcnNldFN0YXRlIHJlZ2lvbk92ZXJzZXRTdGF0ZSgp
IGNvbnN0OwotCiAgICAgQXRvbWljU3RyaW5nIGNvbXB1dGVJbmhlcml0ZWRMYW5ndWFnZSgpIGNv
bnN0OwogICAgIExvY2FsZSYgbG9jYWxlKCkgY29uc3Q7CiAKQEAgLTQ2NywxNSArNDYyLDYgQEAg
cHVibGljOgogCiAgICAgYm9vbCBpc1NwZWxsQ2hlY2tpbmdFbmFibGVkKCkgY29uc3Q7CiAKLSAg
ICBSZW5kZXJOYW1lZEZsb3dGcmFnbWVudCogcmVuZGVyTmFtZWRGbG93RnJhZ21lbnQoKSBjb25z
dDsKLQotI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkTW92
ZVRvRmxvd1RocmVhZChjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0OwotICAgIAotICAgIFdFQkNP
UkVfRVhQT1JUIGNvbnN0IEF0b21pY1N0cmluZyYgd2Via2l0UmVnaW9uT3ZlcnNldCgpIGNvbnN0
OwotICAgIFZlY3RvcjxSZWZQdHI8UmFuZ2U+PiB3ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCkg
Y29uc3Q7Ci0jZW5kaWYKLQogICAgIGJvb2wgaGFzSUQoKSBjb25zdDsKICAgICBib29sIGhhc0Ns
YXNzKCkgY29uc3Q7CiAgICAgYm9vbCBoYXNOYW1lKCkgY29uc3Q7CkBAIC01NTMsMTAgKzUzOSw2
IEBAIHB1YmxpYzoKICAgICB1c2luZyBDb250YWluZXJOb2RlOjpzZXRBdHRyaWJ1dGVFdmVudExp
c3RlbmVyOwogICAgIHZvaWQgc2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNT
dHJpbmcmIGV2ZW50VHlwZSwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgY29u
c3QgQXRvbWljU3RyaW5nJiB2YWx1ZSk7CiAKLSAgICBib29sIGlzTmFtZWRGbG93Q29udGVudEVs
ZW1lbnQoKSBjb25zdCB7IHJldHVybiBoYXNSYXJlRGF0YSgpICYmIHJhcmVEYXRhSXNOYW1lZEZs
b3dDb250ZW50RWxlbWVudCgpOyB9Ci0gICAgdm9pZCBzZXRJc05hbWVkRmxvd0NvbnRlbnRFbGVt
ZW50KCk7Ci0gICAgdm9pZCBjbGVhcklzTmFtZWRGbG93Q29udGVudEVsZW1lbnQoKTsKLQogI2lm
IEVOQUJMRShXRUJfQU5JTUFUSU9OUykKICAgICBWZWN0b3I8V2ViQW5pbWF0aW9uKj4gZ2V0QW5p
bWF0aW9ucygpOwogI2VuZGlmCkBAIC02NTAsNyArNjMyLDYgQEAgcHJpdmF0ZToKIAogICAgIGJv
b2wgcmFyZURhdGFTdHlsZUFmZmVjdGVkQnlFbXB0eSgpIGNvbnN0OwogICAgIGJvb2wgcmFyZURh
dGFTdHlsZUFmZmVjdGVkQnlGb2N1c1dpdGhpbigpIGNvbnN0OwotICAgIGJvb2wgcmFyZURhdGFJ
c05hbWVkRmxvd0NvbnRlbnRFbGVtZW50KCkgY29uc3Q7CiAgICAgYm9vbCByYXJlRGF0YUNoaWxk
cmVuQWZmZWN0ZWRCeUhvdmVyKCkgY29uc3Q7CiAgICAgYm9vbCByYXJlRGF0YVN0eWxlQWZmZWN0
ZWRCeUFjdGl2ZSgpIGNvbnN0OwogICAgIGJvb2wgcmFyZURhdGFDaGlsZHJlbkFmZmVjdGVkQnlE
cmFnKCkgY29uc3Q7CkBAIC02NjEsOCArNjQyLDYgQEAgcHJpdmF0ZToKIAogICAgIFNwZWxsY2hl
Y2tBdHRyaWJ1dGVTdGF0ZSBzcGVsbGNoZWNrQXR0cmlidXRlU3RhdGUoKSBjb25zdDsKIAotICAg
IHZvaWQgdW5yZWdpc3Rlck5hbWVkRmxvd0NvbnRlbnRFbGVtZW50KCk7Ci0KICAgICB2b2lkIGNy
ZWF0ZVVuaXF1ZUVsZW1lbnREYXRhKCk7CiAKICAgICBFbGVtZW50UmFyZURhdGEqIGVsZW1lbnRS
YXJlRGF0YSgpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaWRsCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmlkbAkocmV2aXNpb24gMjIy
MjU3KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBA
IC0xMDAsMTIgKzEwMCw2IEBACiAgICAgLy8gRXh0ZW5zaW9ucyBmcm9tIFBvaW50ZXIgTG9jayBB
UEkgKGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9wb2ludGVybG9jay8jZXh0ZW5zaW9ucy10by10aGUt
ZWxlbWVudC1pbnRlcmZhY2UpLgogICAgIFtDb25kaXRpb25hbD1QT0lOVEVSX0xPQ0tdIHZvaWQg
cmVxdWVzdFBvaW50ZXJMb2NrKCk7CiAKLSAgICAvLyBFeHRlbnNpb25zIGZyb20gQ1NTIFJlZ2lv
bnMgQVBJIChodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLXJlZ2lvbnMvI3RoZS1yZWdpb24t
aW50ZXJmYWNlKS4KLSAgICAvLyBGSVhNRTogU2hvdWxkIGJlIGluIGEgc2VwYXJhdGUgUmVnaW9u
IGludGVyZmFjZSBpbXBsZW1lbnRlZCBieSBFbGVtZW50LgotICAgIC8vIEZJWE1FOiBTaG91bGQg
d2UgYWRkIHVucHJlZml4ZWQgdmVyc2lvbnM/Ci0gICAgW0NvbmRpdGlvbmFsPUNTU19SRUdJT05T
XSByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHdlYmtpdFJlZ2lvbk92ZXJzZXQ7Ci0gICAg
W0NvbmRpdGlvbmFsPUNTU19SRUdJT05TXSBzZXF1ZW5jZTxSYW5nZT4/IHdlYmtpdEdldFJlZ2lv
bkZsb3dSYW5nZXMoKTsKLQogICAgIC8vIE5vbiBzdGFuZGFyZCBBUEkgKGh0dHBzOi8vd3d3Lncz
Lm9yZy9CdWdzL1B1YmxpYy9zaG93X2J1Zy5jZ2k/aWQ9MTcxNTIpLgogICAgIHZvaWQgc2Nyb2xs
SW50b1ZpZXdJZk5lZWRlZChvcHRpb25hbCBib29sZWFuIGNlbnRlcklmTmVlZGVkID0gdHJ1ZSk7
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEuY3BwCShyZXZpc2lvbiAy
MjIyNTcpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFJhcmVEYXRhLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDEsNyArNDEsNiBAQCBzdHJ1Y3QgU2FtZVNpemVBc0VsZW1lbnRSYXJlRGF0
YSA6IE5vZGVSCiAjZWxzZQogICAgIHVuc2lnbmVkIGJpdGZpZWxkcyA6IDEwOwogI2VuZGlmCi0g
ICAgUmVnaW9uT3ZlcnNldFN0YXRlIHJlZ2lvbk92ZXJzZXRTdGF0ZTsKICAgICBMYXlvdXRTaXpl
IHNpemVGb3JSZXNpemluZzsKICAgICBJbnRQb2ludCBzYXZlZExheWVyU2Nyb2xsUG9zaXRpb247
CiAgICAgdm9pZCogcG9pbnRlcnNbOF07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dFJhcmVEYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRSYXJl
RGF0YS5oCShyZXZpc2lvbiAyMjIyNTcpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFJh
cmVEYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTYwLDEyICs2MCw2IEBAIHB1YmxpYzoKICAgICBi
b29sIHN0eWxlQWZmZWN0ZWRCeUZvY3VzV2l0aGluKCkgY29uc3QgeyByZXR1cm4gbV9zdHlsZUFm
ZmVjdGVkQnlGb2N1c1dpdGhpbjsgfQogICAgIHZvaWQgc2V0U3R5bGVBZmZlY3RlZEJ5Rm9jdXNX
aXRoaW4oYm9vbCB2YWx1ZSkgeyBtX3N0eWxlQWZmZWN0ZWRCeUZvY3VzV2l0aGluID0gdmFsdWU7
IH0KIAotICAgIFJlZ2lvbk92ZXJzZXRTdGF0ZSByZWdpb25PdmVyc2V0U3RhdGUoKSBjb25zdCB7
IHJldHVybiBtX3JlZ2lvbk92ZXJzZXRTdGF0ZTsgfQotICAgIHZvaWQgc2V0UmVnaW9uT3ZlcnNl
dFN0YXRlKFJlZ2lvbk92ZXJzZXRTdGF0ZSBzdGF0ZSkgeyBtX3JlZ2lvbk92ZXJzZXRTdGF0ZSA9
IHN0YXRlOyB9Ci0KLSAgICBib29sIGlzTmFtZWRGbG93Q29udGVudEVsZW1lbnQoKSBjb25zdCB7
IHJldHVybiBtX2lzTmFtZWRGbG93Q29udGVudEVsZW1lbnQ7IH0KLSAgICB2b2lkIHNldElzTmFt
ZWRGbG93Q29udGVudEVsZW1lbnQoYm9vbCB2YWx1ZSkgeyBtX2lzTmFtZWRGbG93Q29udGVudEVs
ZW1lbnQgPSB2YWx1ZTsgfQotCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQogICAgIGJvb2wg
Y29udGFpbnNGdWxsU2NyZWVuRWxlbWVudCgpIHsgcmV0dXJuIG1fY29udGFpbnNGdWxsU2NyZWVu
RWxlbWVudDsgfQogICAgIHZvaWQgc2V0Q29udGFpbnNGdWxsU2NyZWVuRWxlbWVudChib29sIHZh
bHVlKSB7IG1fY29udGFpbnNGdWxsU2NyZWVuRWxlbWVudCA9IHZhbHVlOyB9CkBAIC0xMzIsOSAr
MTI2LDYgQEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX2NoaWxkcmVuQWZmZWN0ZWRCeUxhc3RD
aGlsZFJ1bGVzIDogMTsKICAgICB1bnNpZ25lZCBtX2NoaWxkcmVuQWZmZWN0ZWRCeUJhY2t3YXJk
UG9zaXRpb25hbFJ1bGVzIDogMTsKICAgICB1bnNpZ25lZCBtX2NoaWxkcmVuQWZmZWN0ZWRCeVBy
b3BlcnR5QmFzZWRCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcyA6IDE7Ci0gICAgdW5zaWduZWQgbV9p
c05hbWVkRmxvd0NvbnRlbnRFbGVtZW50IDogMTsKLQotICAgIFJlZ2lvbk92ZXJzZXRTdGF0ZSBt
X3JlZ2lvbk92ZXJzZXRTdGF0ZTsKIAogICAgIExheW91dFNpemUgbV9taW5pbXVtU2l6ZUZvclJl
c2l6aW5nOwogICAgIEludFBvaW50IG1fc2F2ZWRMYXllclNjcm9sbFBvc2l0aW9uOwpAQCAtMTc0
LDggKzE2NSw2IEBAIGlubGluZSBFbGVtZW50UmFyZURhdGE6OkVsZW1lbnRSYXJlRGF0YSgKICAg
ICAsIG1fY2hpbGRyZW5BZmZlY3RlZEJ5TGFzdENoaWxkUnVsZXMoZmFsc2UpCiAgICAgLCBtX2No
aWxkcmVuQWZmZWN0ZWRCeUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKGZhbHNlKQogICAgICwgbV9j
aGlsZHJlbkFmZmVjdGVkQnlQcm9wZXJ0eUJhc2VkQmFja3dhcmRQb3NpdGlvbmFsUnVsZXMoZmFs
c2UpCi0gICAgLCBtX2lzTmFtZWRGbG93Q29udGVudEVsZW1lbnQoZmFsc2UpCi0gICAgLCBtX3Jl
Z2lvbk92ZXJzZXRTdGF0ZShSZWdpb25VbmRlZmluZWQpCiAgICAgLCBtX21pbmltdW1TaXplRm9y
UmVzaXppbmcoZGVmYXVsdE1pbmltdW1TaXplRm9yUmVzaXppbmcoKSkKIHsKIH0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgkocmV2aXNpb24gMjIyMjU3KQor
KysgU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgkod29ya2luZyBjb3B5
KQpAQCAtNDEsNyArNDEsNiBAQCBUZXh0VHJhY2tMaXN0IGNvbmRpdGlvbmFsPVZJREVPX1RSQUNL
CiBWUkRpc3BsYXkKIFZpZGVvVHJhY2tMaXN0IGNvbmRpdGlvbmFsPVZJREVPX1RSQUNLCiBXZWJL
aXRNZWRpYUtleVNlc3Npb24gY29uZGl0aW9uYWw9TEVHQUNZX0VOQ1JZUFRFRF9NRURJQQotV2Vi
S2l0TmFtZWRGbG93CiBXZWJTb2NrZXQKIFdvcmtlcgogWE1MSHR0cFJlcXVlc3QKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2RvbS9OYW1lZEZsb3dDb2xsZWN0aW9uLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9kb20vTmFtZWRGbG93Q29sbGVjdGlvbi5jcHAJKHJldmlzaW9uIDIyMjI1
NykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9OYW1lZEZsb3dDb2xsZWN0aW9uLmNwcAkobm9uZXhp
c3RlbnQpCkBAIC0xLDEzMSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEFkb2Jl
IFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUKLSAqICAgIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCi0gKiAgICBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQotICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKLSAqICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscwotICogICAgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVIgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUIEhPTERFUiBCRQotICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLAotICogT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUgotICogVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GCi0gKiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKLSAqIFNVQ0ggREFNQUdFLgotICovCi0KLSNp
bmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJOYW1lZEZsb3dDb2xsZWN0aW9uLmgiCi0KLSNp
bmNsdWRlICJET01OYW1lZEZsb3dDb2xsZWN0aW9uLmgiCi0jaW5jbHVkZSAiRG9jdW1lbnQuaCIK
LSNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKLQotI2luY2x1ZGUgPHd0Zi90
ZXh0L1N0cmluZ0hhc2guaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1OYW1lZEZsb3dDb2xs
ZWN0aW9uOjpOYW1lZEZsb3dDb2xsZWN0aW9uKERvY3VtZW50KiBkb2N1bWVudCkKLSAgICA6IENv
bnRleHREZXN0cnVjdGlvbk9ic2VydmVyKGRvY3VtZW50KQotewotfQotCi1WZWN0b3I8UmVmUHRy
PFdlYktpdE5hbWVkRmxvdz4+IE5hbWVkRmxvd0NvbGxlY3Rpb246Om5hbWVkRmxvd3MoKQotewot
ICAgIFZlY3RvcjxSZWZQdHI8V2ViS2l0TmFtZWRGbG93Pj4gbmFtZWRGbG93czsKLQotICAgIGZv
ciAoYXV0byYgbmFtZWRGbG93IDogbV9uYW1lZEZsb3dzKSB7Ci0gICAgICAgIGlmIChuYW1lZEZs
b3ctPmZsb3dTdGF0ZSgpID09IFdlYktpdE5hbWVkRmxvdzo6Rmxvd1N0YXRlTnVsbCkKLSAgICAg
ICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIG5hbWVkRmxvd3MuYXBwZW5kKFJlZlB0cjxXZWJL
aXROYW1lZEZsb3c+KG5hbWVkRmxvdykpOwotICAgIH0KLQotICAgIHJldHVybiBuYW1lZEZsb3dz
OwotfQotCi1XZWJLaXROYW1lZEZsb3cqIE5hbWVkRmxvd0NvbGxlY3Rpb246OmZsb3dCeU5hbWUo
Y29uc3QgU3RyaW5nJiBmbG93TmFtZSkKLXsKLSAgICBOYW1lZEZsb3dTZXQ6Oml0ZXJhdG9yIGl0
ID0gbV9uYW1lZEZsb3dzLmZpbmQ8U3RyaW5nLCBOYW1lZEZsb3dIYXNoVHJhbnNsYXRvcj4oZmxv
d05hbWUpOwotICAgIGlmIChpdCA9PSBtX25hbWVkRmxvd3MuZW5kKCkgfHwgKCppdCktPmZsb3dT
dGF0ZSgpID09IFdlYktpdE5hbWVkRmxvdzo6Rmxvd1N0YXRlTnVsbCkKLSAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0KLSAgICByZXR1cm4gKml0OwotfQotCi1SZWY8V2ViS2l0TmFtZWRGbG93PiBO
YW1lZEZsb3dDb2xsZWN0aW9uOjplbnN1cmVGbG93V2l0aE5hbWUoY29uc3QgU3RyaW5nJiBmbG93
TmFtZSkKLXsKLSAgICBOYW1lZEZsb3dTZXQ6Oml0ZXJhdG9yIGl0ID0gbV9uYW1lZEZsb3dzLmZp
bmQ8U3RyaW5nLCBOYW1lZEZsb3dIYXNoVHJhbnNsYXRvcj4oZmxvd05hbWUpOwotICAgIGlmIChp
dCAhPSBtX25hbWVkRmxvd3MuZW5kKCkpIHsKLSAgICAgICAgV2ViS2l0TmFtZWRGbG93KiBuYW1l
ZEZsb3cgPSAqaXQ7Ci0gICAgICAgIEFTU0VSVChuYW1lZEZsb3ctPmZsb3dTdGF0ZSgpID09IFdl
YktpdE5hbWVkRmxvdzo6Rmxvd1N0YXRlTnVsbCk7Ci0KLSAgICAgICAgcmV0dXJuICpuYW1lZEZs
b3c7Ci0gICAgfQotCi0gICAgUmVmUHRyPFdlYktpdE5hbWVkRmxvdz4gbmV3RmxvdyA9IFdlYktp
dE5hbWVkRmxvdzo6Y3JlYXRlKCp0aGlzLCBmbG93TmFtZSk7Ci0gICAgbV9uYW1lZEZsb3dzLmFk
ZChuZXdGbG93LmdldCgpKTsKLQotICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ3Jl
YXRlTmFtZWRGbG93KGRvY3VtZW50KCksICpuZXdGbG93KTsKLQotICAgIHJldHVybiBuZXdGbG93
LnJlbGVhc2VOb25OdWxsKCk7Ci19Ci0KLXZvaWQgTmFtZWRGbG93Q29sbGVjdGlvbjo6ZGlzY2Fy
ZE5hbWVkRmxvdyhXZWJLaXROYW1lZEZsb3cqIG5hbWVkRmxvdykKLXsKLSAgICAvLyBUaGUgZG9j
dW1lbnQgaXMgbm90IHZhbGlkIGFueW1vcmUgc28gdGhlIGNvbGxlY3Rpb24gd2lsbCBiZSBkZXN0
cm95ZWQgYW55d2F5LgotICAgIGlmICghZG9jdW1lbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgQVNTRVJUKG5hbWVkRmxvdy0+Zmxvd1N0YXRlKCkgPT0gV2ViS2l0TmFtZWRGbG93OjpGbG93
U3RhdGVOdWxsKTsKLSAgICBBU1NFUlQobV9uYW1lZEZsb3dzLmNvbnRhaW5zKG5hbWVkRmxvdykp
OwotCi0gICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUmVtb3ZlTmFtZWRGbG93KGRv
Y3VtZW50KCksICpuYW1lZEZsb3cpOwotCi0gICAgbV9uYW1lZEZsb3dzLnJlbW92ZShuYW1lZEZs
b3cpOwotfQotCi1Eb2N1bWVudCogTmFtZWRGbG93Q29sbGVjdGlvbjo6ZG9jdW1lbnQoKSBjb25z
dAotewotICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQgPSBDb250ZXh0RGVzdHJ1
Y3Rpb25PYnNlcnZlcjo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgIHJldHVybiBkb3du
Y2FzdDxEb2N1bWVudD4oY29udGV4dCk7Ci19Ci0KLVJlZjxET01OYW1lZEZsb3dDb2xsZWN0aW9u
PiBOYW1lZEZsb3dDb2xsZWN0aW9uOjpjcmVhdGVDU1NPTVNuYXBzaG90KCkKLXsKLSAgICBWZWN0
b3I8UmVmPFdlYktpdE5hbWVkRmxvdz4+IGNyZWF0ZWRGbG93czsKLSAgICBmb3IgKGF1dG8mIG5h
bWVkRmxvdyA6IG1fbmFtZWRGbG93cykgewotICAgICAgICBpZiAobmFtZWRGbG93LT5mbG93U3Rh
dGUoKSA9PSBXZWJLaXROYW1lZEZsb3c6OkZsb3dTdGF0ZUNyZWF0ZWQpCi0gICAgICAgICAgICBj
cmVhdGVkRmxvd3MuYXBwZW5kKCpuYW1lZEZsb3cpOwotICAgIH0KLSAgICByZXR1cm4gRE9NTmFt
ZWRGbG93Q29sbGVjdGlvbjo6Y3JlYXRlKFdURk1vdmUoY3JlYXRlZEZsb3dzKSk7Ci19Ci0KLS8v
IFRoZSBIYXNoRnVuY3Rpb25zIG9iamVjdCB1c2VkIGJ5IHRoZSBIYXNoU2V0IHRvIGNvbXBhcmUg
YmV0d2VlbiBOYW1lZEZsb3dzLgotLy8gSXQgaXMgc2FmZSB0byBzZXQgc2FmZVRvQ29tcGFyZVRv
RW1wdHlPckRlbGV0ZWQgYmVjYXVzZSB0aGUgSGFzaFNldCB3aWxsIG5ldmVyIGNvbnRhaW4gbnVs
bCBwb2ludGVycyBvciBkZWxldGVkIHZhbHVlcy4KLXN0cnVjdCBOYW1lZEZsb3dDb2xsZWN0aW9u
OjpOYW1lZEZsb3dIYXNoRnVuY3Rpb25zIHsKLSAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChXZWJL
aXROYW1lZEZsb3cqIGtleSkgeyByZXR1cm4gRGVmYXVsdEhhc2g8U3RyaW5nPjo6SGFzaDo6aGFz
aChrZXktPm5hbWUoKSk7IH0KLSAgICBzdGF0aWMgYm9vbCBlcXVhbChXZWJLaXROYW1lZEZsb3cq
IGEsIFdlYktpdE5hbWVkRmxvdyogYikgeyByZXR1cm4gYS0+bmFtZSgpID09IGItPm5hbWUoKTsg
fQotICAgIHN0YXRpYyBjb25zdCBib29sIHNhZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkID0g
dHJ1ZTsKLX07Ci0KLS8vIFRoZSBIYXNoVHJhbnNsYXRvciBpcyB1c2VkIHRvIGxvb2t1cCBhIE5h
bWVkRmxvdyBpbiB0aGUgc2V0IHVzaW5nIGEgbmFtZS4KLXN0cnVjdCBOYW1lZEZsb3dDb2xsZWN0
aW9uOjpOYW1lZEZsb3dIYXNoVHJhbnNsYXRvciB7Ci0gICAgc3RhdGljIHVuc2lnbmVkIGhhc2go
Y29uc3QgU3RyaW5nJiBrZXkpIHsgcmV0dXJuIERlZmF1bHRIYXNoPFN0cmluZz46Okhhc2g6Omhh
c2goa2V5KTsgfQotICAgIHN0YXRpYyBib29sIGVxdWFsKFdlYktpdE5hbWVkRmxvdyogYSwgY29u
c3QgU3RyaW5nJiBiKSB7IHJldHVybiBhLT5uYW1lKCkgPT0gYjsgfQotfTsKLQotfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL05hbWVkRmxvd0NvbGxlY3Rp
b24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vTmFtZWRGbG93Q29sbGVjdGlv
bi5oCShyZXZpc2lvbiAyMjIyNTcpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vTmFtZWRGbG93Q29s
bGVjdGlvbi5oCShub25leGlzdGVudCkKQEAgLTEsNzEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMiBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlCi0g
KiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZwotICogICAgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqICAgIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCi0gKiAgICBkaXNjbGFp
bWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMKLSAqICAgIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgQkUKLSAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwKLSAqIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IKLSAqIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRgotICogVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCi0gKiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIkNvbnRleHREZXN0cnVjdGlv
bk9ic2VydmVyLmgiCi0jaW5jbHVkZSAiV2ViS2l0TmFtZWRGbG93LmgiCi0jaW5jbHVkZSA8d3Rm
L0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KLSNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1jbGFzcyBEb2N1bWVudDsKLWNsYXNzIERPTU5hbWVkRmxvd0NvbGxlY3Rpb247Ci0K
LWNsYXNzIE5hbWVkRmxvd0NvbGxlY3Rpb24gZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxOYW1l
ZEZsb3dDb2xsZWN0aW9uPiwgcHVibGljIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyIHsKLXB1
YmxpYzoKLSAgICBzdGF0aWMgUmVmPE5hbWVkRmxvd0NvbGxlY3Rpb24+IGNyZWF0ZShEb2N1bWVu
dCogZG9jKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IE5hbWVkRmxvd0NvbGxlY3Rpb24oZG9jKSk7
IH0KLQotICAgIFZlY3RvcjxSZWZQdHI8V2ViS2l0TmFtZWRGbG93Pj4gbmFtZWRGbG93cygpOwot
ICAgIFdlYktpdE5hbWVkRmxvdyogZmxvd0J5TmFtZShjb25zdCBTdHJpbmcmKTsKLSAgICBSZWY8
V2ViS2l0TmFtZWRGbG93PiBlbnN1cmVGbG93V2l0aE5hbWUoY29uc3QgU3RyaW5nJik7Ci0KLSAg
ICB2b2lkIGRpc2NhcmROYW1lZEZsb3coV2ViS2l0TmFtZWRGbG93Kik7Ci0KLSAgICBEb2N1bWVu
dCogZG9jdW1lbnQoKSBjb25zdDsKLQotICAgIHZpcnR1YWwgfk5hbWVkRmxvd0NvbGxlY3Rpb24o
KSB7IH0KLQotICAgIFJlZjxET01OYW1lZEZsb3dDb2xsZWN0aW9uPiBjcmVhdGVDU1NPTVNuYXBz
aG90KCk7Ci0KLXByaXZhdGU6Ci0gICAgc3RydWN0IE5hbWVkRmxvd0hhc2hGdW5jdGlvbnM7Ci0g
ICAgc3RydWN0IE5hbWVkRmxvd0hhc2hUcmFuc2xhdG9yOwotCi0gICAgdHlwZWRlZiBMaXN0SGFz
aFNldDxXZWJLaXROYW1lZEZsb3cqLCBOYW1lZEZsb3dIYXNoRnVuY3Rpb25zPiBOYW1lZEZsb3dT
ZXQ7Ci0KLSAgICBleHBsaWNpdCBOYW1lZEZsb3dDb2xsZWN0aW9uKERvY3VtZW50Kik7Ci0KLSAg
ICBOYW1lZEZsb3dTZXQgbV9uYW1lZEZsb3dzOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1BzZXVkb0VsZW1lbnQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9kb20vUHNldWRvRWxlbWVudC5oCShyZXZpc2lvbiAyMjIyNTcpCisr
KyBTb3VyY2UvV2ViQ29yZS9kb20vUHNldWRvRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00
NCwxMiArNDQsNiBAQCBwdWJsaWM6CiAKICAgICBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3Qg
UmVuZGVyU3R5bGUmKSBvdmVycmlkZTsKIAotICAgIC8vIEFzIHBlciBodHRwOi8vZGV2LnczLm9y
Zy9jc3N3Zy9jc3MzLXJlZ2lvbnMvI2Zsb3ctaW50bywgcHNldWRvLWVsZW1lbnRzIHN1Y2ggYXMg
OjpmaXJzdC1saW5lLCA6OmZpcnN0LWxldHRlciwgOjpiZWZvcmUgb3IgOjphZnRlcgotICAgIC8v
IGNhbm5vdCBiZSBkaXJlY3RseSBjb2xsZWN0ZWQgaW50byBhIG5hbWVkIGZsb3cuCi0jaWYgRU5B
QkxFKENTU19SRUdJT05TKQotICAgIGJvb2wgc2hvdWxkTW92ZVRvRmxvd1RocmVhZChjb25zdCBS
ZW5kZXJTdHlsZSYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0jZW5kaWYKLQog
ICAgIGJvb2wgY2FuU3RhcnRTZWxlY3Rpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxz
ZTsgfQogICAgIGJvb2wgY2FuQ29udGFpblJhbmdlRW5kUG9pbnQoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBmYWxzZTsgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vV2ViS2l0TmFtZWRG
bG93LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vV2ViS2l0TmFtZWRGbG93
LmNwcAkocmV2aXNpb24gMjIyMjU3KQorKysgU291cmNlL1dlYkNvcmUvZG9tL1dlYktpdE5hbWVk
Rmxvdy5jcHAJKG5vbmV4aXN0ZW50KQpAQCAtMSwyMzUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMSBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlCi0g
KiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZwotICogICAgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqICAgIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCi0gKiAgICBkaXNjbGFp
bWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMKLSAqICAgIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIAotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUiAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIEJFCi0gKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksCi0gKiBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SCi0gKiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YKLSAqIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgotICogU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldlYktpdE5hbWVk
Rmxvdy5oIgotCi0jaW5jbHVkZSAiRXZlbnROYW1lcy5oIgotI2luY2x1ZGUgIk5hbWVkRmxvd0Nv
bGxlY3Rpb24uaCIKLSNpbmNsdWRlICJOb0V2ZW50RGlzcGF0Y2hBc3NlcnRpb24uaCIKLSNpbmNs
dWRlICJSZW5kZXJOYW1lZEZsb3dGcmFnbWVudC5oIgotI2luY2x1ZGUgIlJlbmRlck5hbWVkRmxv
d1RocmVhZC5oIgotI2luY2x1ZGUgIlJlbmRlclJlZ2lvbi5oIgotI2luY2x1ZGUgIlN0YXRpY05v
ZGVMaXN0LmgiCi0jaW5jbHVkZSAiVUlFdmVudC5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LVdlYktpdE5hbWVkRmxvdzo6V2ViS2l0TmFtZWRGbG93KE5hbWVkRmxvd0NvbGxlY3Rpb24mIG1h
bmFnZXIsIGNvbnN0IEF0b21pY1N0cmluZyYgZmxvd1RocmVhZE5hbWUpCi0gICAgOiBtX2Zsb3dU
aHJlYWROYW1lKGZsb3dUaHJlYWROYW1lKQotICAgICwgbV9mbG93TWFuYWdlcigmbWFuYWdlcikK
LSAgICAsIG1fcGFyZW50Rmxvd1RocmVhZChudWxscHRyKQotewotfQotCi1XZWJLaXROYW1lZEZs
b3c6On5XZWJLaXROYW1lZEZsb3coKQotewotICAgIC8vIFRoZSBuYW1lZCBmbG93IGlzIG5vdCAi
c3Ryb25nIiByZWZlcmVuY2VkIGZyb20gYW55d2hlcmUgYXQgdGhpcyB0aW1lIHNvIGl0IHNob3Vs
ZG4ndCBiZSByZXVzZWQgaWYgdGhlIG5hbWVkIGZsb3cgaXMgcmVjcmVhdGVkLgotICAgIG1fZmxv
d01hbmFnZXItPmRpc2NhcmROYW1lZEZsb3codGhpcyk7Ci19Ci0KLVJlZjxXZWJLaXROYW1lZEZs
b3c+IFdlYktpdE5hbWVkRmxvdzo6Y3JlYXRlKE5hbWVkRmxvd0NvbGxlY3Rpb24mIG1hbmFnZXIs
IGNvbnN0IEF0b21pY1N0cmluZyYgZmxvd1RocmVhZE5hbWUpCi17Ci0gICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgV2ViS2l0TmFtZWRGbG93KG1hbmFnZXIsIGZsb3dUaHJlYWROYW1lKSk7Ci19Ci0K
LWNvbnN0IEF0b21pY1N0cmluZyYgV2ViS2l0TmFtZWRGbG93OjpuYW1lKCkgY29uc3QKLXsKLSAg
ICByZXR1cm4gbV9mbG93VGhyZWFkTmFtZTsKLX0KLQotYm9vbCBXZWJLaXROYW1lZEZsb3c6Om92
ZXJzZXQoKSBjb25zdAotewotICAgIGlmIChtX2Zsb3dNYW5hZ2VyLT5kb2N1bWVudCgpKQotICAg
ICAgICBtX2Zsb3dNYW5hZ2VyLT5kb2N1bWVudCgpLT51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5n
U3R5bGVzaGVldHMoKTsKLQotICAgIC8vIFRoZSByZW5kZXJlciBtYXkgYmUgZGVzdHJveWVkIG9y
IGNyZWF0ZWQgYWZ0ZXIgdGhlIHN0eWxlIHVwZGF0ZS4KLSAgICAvLyBCZWNhdXNlIHRoaXMgaXMg
Y2FsbGVkIGZyb20gSlMsIHdoZXJlIHRoZSB3cmFwcGVyIGtlZXBzIGEgcmVmZXJlbmNlIHRvIHRo
ZSBOYW1lZEZsb3csIG5vIGd1YXJkIGlzIG5lY2Vzc2FyeS4KLSAgICBpZiAoIW1fcGFyZW50Rmxv
d1RocmVhZCB8fCAhbV9wYXJlbnRGbG93VGhyZWFkLT5oYXNSZWdpb25zKCkpCi0gICAgICAgIHJl
dHVybiB0cnVlOwotCi0gICAgY29uc3QgYXV0byYgbmFtZWRGbG93RnJhZ21lbnQgPSBkb3duY2Fz
dDxSZW5kZXJOYW1lZEZsb3dGcmFnbWVudD4oKm1fcGFyZW50Rmxvd1RocmVhZC0+bGFzdFJlZ2lv
bigpKTsKLSAgICByZXR1cm4gbmFtZWRGbG93RnJhZ21lbnQucmVnaW9uT3ZlcnNldFN0YXRlKCkg
PT0gUmVnaW9uT3ZlcnNldDsKLX0KLQotc3RhdGljIGlubGluZSBib29sIGluRmxvd1RocmVhZChS
ZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBSZW5kZXJOYW1lZEZsb3dUaHJlYWQqIGZsb3dUaHJlYWQp
Ci17Ci0gICAgaWYgKCFyZW5kZXJlcikKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIFJlbmRl
ckZsb3dUaHJlYWQqIGN1cnJlbnRGbG93VGhyZWFkID0gcmVuZGVyZXItPmZsb3dUaHJlYWRDb250
YWluaW5nQmxvY2soKTsKLSAgICBpZiAoZmxvd1RocmVhZCA9PSBjdXJyZW50Rmxvd1RocmVhZCkK
LSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgaWYgKHJlbmRlcmVyLT5mbG93VGhyZWFkU3RhdGUo
KSAhPSBSZW5kZXJPYmplY3Q6Okluc2lkZUluRmxvd1RocmVhZCkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIAotICAgIC8vIEFuIGluLWZsb3cgZmxvdyB0aHJlYWQgY2FuIGJlIG5lc3RlZCBp
bnNpZGUgYW4gb3V0LW9mLWZsb3cgb25lLCBzbyB3ZSBoYXZlIHRvIHJlY3VyIHVwIHRvIGNoZWNr
LgotICAgIHJldHVybiBpbkZsb3dUaHJlYWQoY3VycmVudEZsb3dUaHJlYWQtPmNvbnRhaW5pbmdC
bG9jaygpLCBmbG93VGhyZWFkKTsKLX0KLQotaW50IFdlYktpdE5hbWVkRmxvdzo6Zmlyc3RFbXB0
eVJlZ2lvbkluZGV4KCkgY29uc3QKLXsKLSAgICBpZiAobV9mbG93TWFuYWdlci0+ZG9jdW1lbnQo
KSkKLSAgICAgICAgbV9mbG93TWFuYWdlci0+ZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0SWdub3Jl
UGVuZGluZ1N0eWxlc2hlZXRzKCk7Ci0KLSAgICBpZiAoIW1fcGFyZW50Rmxvd1RocmVhZCkKLSAg
ICAgICAgcmV0dXJuIC0xOwotCi0gICAgY29uc3QgUmVuZGVyUmVnaW9uTGlzdCYgcmVnaW9uTGlz
dCA9IG1fcGFyZW50Rmxvd1RocmVhZC0+cmVuZGVyUmVnaW9uTGlzdCgpOwotICAgIGlmIChyZWdp
b25MaXN0LmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIC0xOwotCi0gICAgaW50IGNvdW50Tm9u
UHNldWRvUmVnaW9ucyA9IC0xOwotICAgIGZvciAoY29uc3QgYXV0byYgcmVuZGVyUmVnaW9uIDog
cmVnaW9uTGlzdCkgewotICAgICAgICBjb25zdCBhdXRvJiBuYW1lZEZsb3dGcmFnbWVudCA9IGRv
d25jYXN0PFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50PigqcmVuZGVyUmVnaW9uKTsKLSAgICAgICAg
Ly8gRklYTUU6IFBzZXVkby1lbGVtZW50cyBhcmUgbm90IGluY2x1ZGVkIGluIHRoZSBsaXN0Lgot
ICAgICAgICAvLyBUaGV5IHdpbGwgYmUgaW5jbHVkZWQgd2hlbiB3ZSB3aWxsIHByb3Blcmx5IHN1
cHBvcnQgdGhlIFJlZ2lvbiBpbnRlcmZhY2UKLSAgICAgICAgLy8gaHR0cDovL2Rldi53My5vcmcv
Y3Nzd2cvY3NzLXJlZ2lvbnMvI3RoZS1yZWdpb24taW50ZXJmYWNlCi0gICAgICAgIGlmIChuYW1l
ZEZsb3dGcmFnbWVudC5pc1BzZXVkb0VsZW1lbnRSZWdpb24oKSkKLSAgICAgICAgICAgIGNvbnRp
bnVlOwotICAgICAgICArK2NvdW50Tm9uUHNldWRvUmVnaW9uczsKLSAgICAgICAgaWYgKG5hbWVk
Rmxvd0ZyYWdtZW50LnJlZ2lvbk92ZXJzZXRTdGF0ZSgpID09IFJlZ2lvbkVtcHR5KQotICAgICAg
ICAgICAgcmV0dXJuIGNvdW50Tm9uUHNldWRvUmVnaW9uczsKLSAgICB9Ci0gICAgcmV0dXJuIC0x
OwotfQotCi1SZWY8Tm9kZUxpc3Q+IFdlYktpdE5hbWVkRmxvdzo6Z2V0UmVnaW9uc0J5Q29udGVu
dChOb2RlKiBjb250ZW50Tm9kZSkKLXsKLSAgICBpZiAoIWNvbnRlbnROb2RlKQotICAgICAgICBy
ZXR1cm4gU3RhdGljRWxlbWVudExpc3Q6OmNyZWF0ZSgpOwotCi0gICAgaWYgKG1fZmxvd01hbmFn
ZXItPmRvY3VtZW50KCkpCi0gICAgICAgIG1fZmxvd01hbmFnZXItPmRvY3VtZW50KCktPnVwZGF0
ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOwotCi0gICAgLy8gVGhlIHJlbmRlcmVy
IG1heSBiZSBkZXN0cm95ZWQgb3IgY3JlYXRlZCBhZnRlciB0aGUgc3R5bGUgdXBkYXRlLgotICAg
IC8vIEJlY2F1c2UgdGhpcyBpcyBjYWxsZWQgZnJvbSBKUywgd2hlcmUgdGhlIHdyYXBwZXIga2Vl
cHMgYSByZWZlcmVuY2UgdG8gdGhlIE5hbWVkRmxvdywgbm8gZ3VhcmQgaXMgbmVjZXNzYXJ5Lgot
ICAgIGlmICghbV9wYXJlbnRGbG93VGhyZWFkKQotICAgICAgICByZXR1cm4gU3RhdGljRWxlbWVu
dExpc3Q6OmNyZWF0ZSgpOwotCi0gICAgVmVjdG9yPFJlZjxFbGVtZW50Pj4gcmVnaW9uRWxlbWVu
dHM7Ci0KLSAgICBpZiAoaW5GbG93VGhyZWFkKGNvbnRlbnROb2RlLT5yZW5kZXJlcigpLCBtX3Bh
cmVudEZsb3dUaHJlYWQpKSB7Ci0gICAgICAgIGNvbnN0IFJlbmRlclJlZ2lvbkxpc3QmIHJlZ2lv
bkxpc3QgPSBtX3BhcmVudEZsb3dUaHJlYWQtPnJlbmRlclJlZ2lvbkxpc3QoKTsKLSAgICAgICAg
Zm9yIChjb25zdCBhdXRvJiByZW5kZXJSZWdpb24gOiByZWdpb25MaXN0KSB7Ci0gICAgICAgICAg
ICBjb25zdCBhdXRvJiBuYW1lZEZsb3dGcmFnbWVudCA9IGRvd25jYXN0PFJlbmRlck5hbWVkRmxv
d0ZyYWdtZW50PigqcmVuZGVyUmVnaW9uKTsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBQc2V1ZG8t
ZWxlbWVudHMgYXJlIG5vdCBpbmNsdWRlZCBpbiB0aGUgbGlzdC4KLSAgICAgICAgICAgIC8vIFRo
ZXkgd2lsbCBiZSBpbmNsdWRlZCB3aGVuIHdlIHdpbGwgcHJvcGVybHkgc3VwcG9ydCB0aGUgUmVn
aW9uIGludGVyZmFjZQotICAgICAgICAgICAgLy8gaHR0cDovL2Rldi53My5vcmcvY3Nzd2cvY3Nz
LXJlZ2lvbnMvI3RoZS1yZWdpb24taW50ZXJmYWNlCi0gICAgICAgICAgICBpZiAobmFtZWRGbG93
RnJhZ21lbnQuaXNQc2V1ZG9FbGVtZW50UmVnaW9uKCkpCi0gICAgICAgICAgICAgICAgY29udGlu
dWU7Ci0gICAgICAgICAgICBpZiAobV9wYXJlbnRGbG93VGhyZWFkLT5vYmplY3RJbkZsb3dSZWdp
b24oY29udGVudE5vZGUtPnJlbmRlcmVyKCksICZuYW1lZEZsb3dGcmFnbWVudCkpIHsKLSAgICAg
ICAgICAgICAgICBBU1NFUlQobmFtZWRGbG93RnJhZ21lbnQuZ2VuZXJhdGluZ0VsZW1lbnQoKSk7
Ci0gICAgICAgICAgICAgICAgcmVnaW9uRWxlbWVudHMuYXBwZW5kKCpuYW1lZEZsb3dGcmFnbWVu
dC5nZW5lcmF0aW5nRWxlbWVudCgpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0K
LQotICAgIHJldHVybiBTdGF0aWNFbGVtZW50TGlzdDo6Y3JlYXRlKFdURk1vdmUocmVnaW9uRWxl
bWVudHMpKTsKLX0KLQotUmVmPE5vZGVMaXN0PiBXZWJLaXROYW1lZEZsb3c6OmdldFJlZ2lvbnMo
KQotewotICAgIGlmIChtX2Zsb3dNYW5hZ2VyLT5kb2N1bWVudCgpKQotICAgICAgICBtX2Zsb3dN
YW5hZ2VyLT5kb2N1bWVudCgpLT51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMo
KTsKLQotICAgIC8vIFRoZSByZW5kZXJlciBtYXkgYmUgZGVzdHJveWVkIG9yIGNyZWF0ZWQgYWZ0
ZXIgdGhlIHN0eWxlIHVwZGF0ZS4KLSAgICAvLyBCZWNhdXNlIHRoaXMgaXMgY2FsbGVkIGZyb20g
SlMsIHdoZXJlIHRoZSB3cmFwcGVyIGtlZXBzIGEgcmVmZXJlbmNlIHRvIHRoZSBOYW1lZEZsb3cs
IG5vIGd1YXJkIGlzIG5lY2Vzc2FyeS4KLSAgICBpZiAoIW1fcGFyZW50Rmxvd1RocmVhZCkKLSAg
ICAgICAgcmV0dXJuIFN0YXRpY0VsZW1lbnRMaXN0OjpjcmVhdGUoKTsKLQotICAgIFZlY3RvcjxS
ZWY8RWxlbWVudD4+IHJlZ2lvbkVsZW1lbnRzOwotCi0gICAgY29uc3QgUmVuZGVyUmVnaW9uTGlz
dCYgcmVnaW9uTGlzdCA9IG1fcGFyZW50Rmxvd1RocmVhZC0+cmVuZGVyUmVnaW9uTGlzdCgpOwot
ICAgIGZvciAoY29uc3QgYXV0byYgcmVuZGVyUmVnaW9uIDogcmVnaW9uTGlzdCkgewotICAgICAg
ICBjb25zdCBhdXRvJiBuYW1lZEZsb3dGcmFnbWVudCA9IGRvd25jYXN0PFJlbmRlck5hbWVkRmxv
d0ZyYWdtZW50PigqcmVuZGVyUmVnaW9uKTsKLSAgICAgICAgLy8gRklYTUU6IFBzZXVkby1lbGVt
ZW50cyBhcmUgbm90IGluY2x1ZGVkIGluIHRoZSBsaXN0LgotICAgICAgICAvLyBUaGV5IHdpbGwg
YmUgaW5jbHVkZWQgd2hlbiB3ZSB3aWxsIHByb3Blcmx5IHN1cHBvcnQgdGhlIFJlZ2lvbiBpbnRl
cmZhY2UKLSAgICAgICAgLy8gaHR0cDovL2Rldi53My5vcmcvY3Nzd2cvY3NzLXJlZ2lvbnMvI3Ro
ZS1yZWdpb24taW50ZXJmYWNlCi0gICAgICAgIGlmIChuYW1lZEZsb3dGcmFnbWVudC5pc1BzZXVk
b0VsZW1lbnRSZWdpb24oKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBBU1NFUlQo
bmFtZWRGbG93RnJhZ21lbnQuZ2VuZXJhdGluZ0VsZW1lbnQoKSk7Ci0gICAgICAgIHJlZ2lvbkVs
ZW1lbnRzLmFwcGVuZCgqbmFtZWRGbG93RnJhZ21lbnQuZ2VuZXJhdGluZ0VsZW1lbnQoKSk7Ci0g
ICAgfQotCi0gICAgcmV0dXJuIFN0YXRpY0VsZW1lbnRMaXN0OjpjcmVhdGUoV1RGTW92ZShyZWdp
b25FbGVtZW50cykpOwotfQotCi1SZWY8Tm9kZUxpc3Q+IFdlYktpdE5hbWVkRmxvdzo6Z2V0Q29u
dGVudCgpCi17Ci0gICAgaWYgKG1fZmxvd01hbmFnZXItPmRvY3VtZW50KCkpCi0gICAgICAgIG1f
Zmxvd01hbmFnZXItPmRvY3VtZW50KCktPnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNo
ZWV0cygpOwotCi0gICAgLy8gVGhlIHJlbmRlcmVyIG1heSBiZSBkZXN0cm95ZWQgb3IgY3JlYXRl
ZCBhZnRlciB0aGUgc3R5bGUgdXBkYXRlLgotICAgIC8vIEJlY2F1c2UgdGhpcyBpcyBjYWxsZWQg
ZnJvbSBKUywgd2hlcmUgdGhlIHdyYXBwZXIga2VlcHMgYSByZWZlcmVuY2UgdG8gdGhlIE5hbWVk
Rmxvdywgbm8gZ3VhcmQgaXMgbmVjZXNzYXJ5LgotICAgIGlmICghbV9wYXJlbnRGbG93VGhyZWFk
KQotICAgICAgICByZXR1cm4gU3RhdGljRWxlbWVudExpc3Q6OmNyZWF0ZSgpOwotCi0gICAgYXV0
byYgY29udGVudEVsZW1lbnRzTGlzdCA9IG1fcGFyZW50Rmxvd1RocmVhZC0+Y29udGVudEVsZW1l
bnRzKCk7Ci0gICAgVmVjdG9yPFJlZjxFbGVtZW50Pj4gY29udGVudEVsZW1lbnRzOwotICAgIGNv
bnRlbnRFbGVtZW50cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGNvbnRlbnRFbGVtZW50c0xpc3Qu
c2l6ZSgpKTsKLSAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBjb250ZW50RWxlbWVudHNMaXN0KSB7
Ci0gICAgICAgIEFTU0VSVChlbGVtZW50LT5jb21wdXRlZFN0eWxlKCktPmZsb3dUaHJlYWQoKSA9
PSBtX3BhcmVudEZsb3dUaHJlYWQtPmZsb3dUaHJlYWROYW1lKCkpOwotICAgICAgICBjb250ZW50
RWxlbWVudHMudW5jaGVja2VkQXBwZW5kKCplbGVtZW50KTsKLSAgICB9Ci0KLSAgICByZXR1cm4g
U3RhdGljRWxlbWVudExpc3Q6OmNyZWF0ZShXVEZNb3ZlKGNvbnRlbnRFbGVtZW50cykpOwotfQot
Ci12b2lkIFdlYktpdE5hbWVkRmxvdzo6c2V0UmVuZGVyZXIoUmVuZGVyTmFtZWRGbG93VGhyZWFk
KiBwYXJlbnRGbG93VGhyZWFkKQotewotICAgIC8vIFRoZSBuYW1lZCBmbG93IGNhbiBlaXRoZXIg
Z28gZnJvbSBhIG5vX3JlbmRlcmVyLT5yZW5kZXJlciBvciByZW5kZXJlci0+bm9fcmVuZGVyZXIg
c3RhdGU7IGFueXRoaW5nIGVsc2UgY291bGQgaW5kaWNhdGUgYSBidWcuCi0gICAgQVNTRVJUKCgh
bV9wYXJlbnRGbG93VGhyZWFkICYmIHBhcmVudEZsb3dUaHJlYWQpIHx8IChtX3BhcmVudEZsb3dU
aHJlYWQgJiYgIXBhcmVudEZsb3dUaHJlYWQpKTsKLQotICAgIC8vIElmIHBhcmVudEZsb3dUaHJl
YWQgaXMgMCwgdGhlIGZsb3cgdGhyZWFkIHdpbGwgbW92ZSBpbiB0aGUgIk5VTEwiIHN0YXRlLgot
ICAgIG1fcGFyZW50Rmxvd1RocmVhZCA9IHBhcmVudEZsb3dUaHJlYWQ7Ci19Ci0KLXZvaWQgV2Vi
S2l0TmFtZWRGbG93OjpkaXNwYXRjaFJlZ2lvbk92ZXJzZXRDaGFuZ2VFdmVudCgpCi17Ci0gICAg
QVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oTm9FdmVudERpc3BhdGNoQXNzZXJ0aW9u
Ojppc0V2ZW50QWxsb3dlZEluTWFpblRocmVhZCgpKTsKLSAgICAKLSAgICAvLyBJZiB0aGUgZmxv
dyBpcyBpbiB0aGUgIk5VTEwiIHN0YXRlIHRoZSBldmVudCBzaG91bGQgbm90IGJlIGRpc3BhdGNo
ZWQgYW55IG1vcmUuCi0gICAgaWYgKGZsb3dTdGF0ZSgpID09IEZsb3dTdGF0ZU51bGwpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIGRpc3BhdGNoRXZlbnQoVUlFdmVudDo6Y3JlYXRlKGV2ZW50TmFt
ZXMoKS53ZWJraXRyZWdpb25vdmVyc2V0Y2hhbmdlRXZlbnQsIGZhbHNlLCBmYWxzZSwgbV9mbG93
TWFuYWdlci0+ZG9jdW1lbnQoKS0+ZGVmYXVsdFZpZXcoKSwgMCkpOwotfQotCi1TY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBXZWJLaXROYW1lZEZsb3c6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBj
b25zdAotewotICAgIHJldHVybiBtX2Zsb3dNYW5hZ2VyLT5kb2N1bWVudCgpOwotfQotCi1Ob2Rl
KiBXZWJLaXROYW1lZEZsb3c6Om93bmVyTm9kZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fZmxv
d01hbmFnZXItPmRvY3VtZW50KCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQpJbmRl
eDogU291cmNlL1dlYkNvcmUvZG9tL1dlYktpdE5hbWVkRmxvdy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2RvbS9XZWJLaXROYW1lZEZsb3cuaAkocmV2aXNpb24gMjIyMjU3KQorKysg
U291cmNlL1dlYkNvcmUvZG9tL1dlYktpdE5hbWVkRmxvdy5oCShub25leGlzdGVudCkKQEAgLTEs
OTMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBZG9iZSBTeXN0ZW1zIEluY29y
cG9yYXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlCi0gKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZwotICogICAgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKLSAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nCi0gKiAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMKLSAqICAgIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqIAotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UiAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIEJF
Ci0gKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksCi0gKiBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SCi0gKiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YKLSAqIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRgotICogU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0K
LSNpbmNsdWRlICJFdmVudFRhcmdldC5oIgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0j
aW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5o
PgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIE5hbWVkRmxvd0NvbGxlY3Rpb247Ci1j
bGFzcyBOb2RlOwotY2xhc3MgTm9kZUxpc3Q7Ci1jbGFzcyBSZW5kZXJOYW1lZEZsb3dUaHJlYWQ7
Ci1jbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwotCi1jbGFzcyBXZWJLaXROYW1lZEZsb3cg
ZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJLaXROYW1lZEZsb3c+LCBwdWJsaWMgRXZlbnRU
YXJnZXRXaXRoSW5saW5lRGF0YSB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxXZWJLaXROYW1l
ZEZsb3c+IGNyZWF0ZShOYW1lZEZsb3dDb2xsZWN0aW9uJiBtYW5hZ2VyLCBjb25zdCBBdG9taWNT
dHJpbmcmIGZsb3dUaHJlYWROYW1lKTsKLQotICAgIH5XZWJLaXROYW1lZEZsb3coKTsKLQotICAg
IGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSgpIGNvbnN0OwotICAgIGJvb2wgb3ZlcnNldCgpIGNv
bnN0OwotICAgIGludCBmaXJzdEVtcHR5UmVnaW9uSW5kZXgoKSBjb25zdDsKLSAgICBSZWY8Tm9k
ZUxpc3Q+IGdldFJlZ2lvbnNCeUNvbnRlbnQoTm9kZSopOwotICAgIFJlZjxOb2RlTGlzdD4gZ2V0
UmVnaW9ucygpOwotICAgIFJlZjxOb2RlTGlzdD4gZ2V0Q29udGVudCgpOwotCi0gICAgdXNpbmcg
UmVmQ291bnRlZDxXZWJLaXROYW1lZEZsb3c+OjpyZWY7Ci0gICAgdXNpbmcgUmVmQ291bnRlZDxX
ZWJLaXROYW1lZEZsb3c+OjpkZXJlZjsKLQotICAgIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50
VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gV2ViS2l0TmFtZWRGbG93
RXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBlOyB9Ci0gICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IG92ZXJyaWRlOwotCi0gICAgLy8gVGhpcyBm
dW5jdGlvbiBpcyBjYWxsZWQgZnJvbSB0aGUgSlMgYmluZGluZyBjb2RlIHRvIGRldGVybWluZSBp
ZiB0aGUgTmFtZWRGbG93IG9iamVjdCBpcyByZWFjaGFibGUgb3Igbm90LgotICAgIC8vIElmIHRo
ZSBvYmplY3QgaGFzIGxpc3RlbmVycywgdGhlIG9iamVjdCBzaG91bGQgb25seSBiZSBkaXNjYXJk
ZWQgaWYgdGhlIHBhcmVudCBEb2N1bWVudCBpcyBub3QgcmVhY2hhYmxlLgotICAgIE5vZGUqIG93
bmVyTm9kZSgpIGNvbnN0OwotCi0gICAgdm9pZCBzZXRSZW5kZXJlcihSZW5kZXJOYW1lZEZsb3dU
aHJlYWQqIHBhcmVudEZsb3dUaHJlYWQpOwotCi0gICAgZW51bSBGbG93U3RhdGUgewotICAgICAg
ICBGbG93U3RhdGVDcmVhdGVkLAotICAgICAgICBGbG93U3RhdGVOdWxsCi0gICAgfTsKLQotICAg
IEZsb3dTdGF0ZSBmbG93U3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3BhcmVudEZsb3dUaHJlYWQg
PyBGbG93U3RhdGVDcmVhdGVkIDogRmxvd1N0YXRlTnVsbDsgfQotCi0gICAgdm9pZCBkaXNwYXRj
aFJlZ2lvbk92ZXJzZXRDaGFuZ2VFdmVudCgpOwotCi1wcml2YXRlOgotICAgIFdlYktpdE5hbWVk
RmxvdyhOYW1lZEZsb3dDb2xsZWN0aW9uJiwgY29uc3QgQXRvbWljU3RyaW5nJik7Ci0KLSAgICAv
LyBFdmVudFRhcmdldCBpbXBsZW1lbnRhdGlvbi4KLSAgICB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkg
b3ZlcnJpZGUgeyByZWYoKTsgfQotICAgIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIG92ZXJyaWRl
IHsgZGVyZWYoKTsgfQotCi0gICAgLy8gVGhlIG5hbWUgb2YgdGhlIGZsb3cgdGhyZWFkIGFzIHNw
ZWNpZmllZCBpbiBDU1MuCi0gICAgQXRvbWljU3RyaW5nIG1fZmxvd1RocmVhZE5hbWU7Ci0KLSAg
ICBSZWZQdHI8TmFtZWRGbG93Q29sbGVjdGlvbj4gbV9mbG93TWFuYWdlcjsKLSAgICBSZW5kZXJO
YW1lZEZsb3dUaHJlYWQqIG1fcGFyZW50Rmxvd1RocmVhZDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9XZWJLaXROYW1lZEZsb3cuaWRsCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9XZWJLaXROYW1lZEZsb3cuaWRsCShyZXZp
c2lvbiAyMjIyNTcpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vV2ViS2l0TmFtZWRGbG93LmlkbAko
bm9uZXhpc3RlbnQpCkBAIC0xLDQyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEg
QWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZQotICogICAgY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKLSAq
ICAgIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZwotICogICAgZGlzY2xhaW1lciBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzCi0gKiAgICBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKiAKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVIgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUIEhPTERFUiBCRQotICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLAotICogT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
Ci0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUgotICogVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GCi0gKiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKLSAqIFNVQ0ggREFNQUdFLgotICov
Ci0KLVsKLSAgICBHZW5lcmF0ZUlzUmVhY2hhYmxlPUltcGxPd25lck5vZGVSb290LAotICAgIE5v
SW50ZXJmYWNlT2JqZWN0LAotXSBpbnRlcmZhY2UgV2ViS2l0TmFtZWRGbG93IDogRXZlbnRUYXJn
ZXQKLXsKLSAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIG5hbWU7Ci0gICAgcmVhZG9u
bHkgYXR0cmlidXRlIGJvb2xlYW4gb3ZlcnNldDsKLSAgICByZWFkb25seSBhdHRyaWJ1dGUgbG9u
ZyBmaXJzdEVtcHR5UmVnaW9uSW5kZXg7Ci0gICAgLy8gRklYTUU6IGNvbnRlbnROb2RlIHNob3Vs
ZCBub3QgYmUgbnVsbGFibGUuCi0gICAgTm9kZUxpc3QgZ2V0UmVnaW9uc0J5Q29udGVudChOb2Rl
PyBjb250ZW50Tm9kZSk7Ci0gICAgTm9kZUxpc3QgZ2V0UmVnaW9ucygpOwotICAgIE5vZGVMaXN0
IGdldENvbnRlbnQoKTsKLX07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQ1NTQWdlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JDU1NBZ2VudC5jcHAJKHJldmlzaW9uIDIyMjI1NykKKysrIFNvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDE2
ICszNywxNSBAQAogI2luY2x1ZGUgIkNvbnRlbnRTZWN1cml0eVBvbGljeS5oIgogI2luY2x1ZGUg
IkRPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkZvbnRDYWNoZS5oIgorI2luY2x1ZGUgIkZyYW1lLmgi
CiAjaW5jbHVkZSAiSFRNTEhlYWRFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFN0eWxlRWxlbWVu
dC5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckhpc3RvcnkuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JQ
YWdlQWdlbnQuaCIKICNpbmNsdWRlICJJbnN0cnVtZW50aW5nQWdlbnRzLmgiCi0jaW5jbHVkZSAi
TmFtZWRGbG93Q29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIk5vZGUuaCIKICNpbmNsdWRlICJOb2Rl
TGlzdC5oIgogI2luY2x1ZGUgIlBzZXVkb0VsZW1lbnQuaCIKLSNpbmNsdWRlICJSZW5kZXJOYW1l
ZEZsb3dGcmFnbWVudC5oIgogI2luY2x1ZGUgIlNWR1N0eWxlRWxlbWVudC5oIgogI2luY2x1ZGUg
IlNlbGVjdG9yQ2hlY2tlci5oIgogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKQEAgLTU2LDcgKzU1
LDYgQEAKICNpbmNsdWRlICJTdHlsZVJ1bGUuaCIKICNpbmNsdWRlICJTdHlsZVNjb3BlLmgiCiAj
aW5jbHVkZSAiU3R5bGVTaGVldExpc3QuaCIKLSNpbmNsdWRlICJXZWJLaXROYW1lZEZsb3cuaCIK
ICNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yUHJvdG9jb2xPYmplY3RzLmg+CiAjaW5jbHVk
ZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTEwMyw1NCArMTAxLDYg
QEAgc3RhdGljIHVuc2lnbmVkIGNvbXB1dGVQc2V1ZG9DbGFzc01hc2soYwogICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKLWNsYXNzIENoYW5nZVJlZ2lvbk92ZXJzZXRUYXNrIHsKLXB1YmxpYzoKLSAg
ICBDaGFuZ2VSZWdpb25PdmVyc2V0VGFzayhJbnNwZWN0b3JDU1NBZ2VudCopOwotICAgIHZvaWQg
c2NoZWR1bGVGb3IoV2ViS2l0TmFtZWRGbG93KiwgaW50IGRvY3VtZW50Tm9kZUlkKTsKLSAgICB2
b2lkIHVuc2NoZWR1bGUoV2ViS2l0TmFtZWRGbG93Kik7Ci0gICAgdm9pZCByZXNldCgpOwotICAg
IHZvaWQgdGltZXJGaXJlZCgpOwotCi1wcml2YXRlOgotICAgIEluc3BlY3RvckNTU0FnZW50KiBt
X2Nzc0FnZW50OwotICAgIFRpbWVyIG1fdGltZXI7Ci0gICAgSGFzaE1hcDxXZWJLaXROYW1lZEZs
b3cqLCBpbnQ+IG1fbmFtZWRGbG93czsKLX07Ci0KLUNoYW5nZVJlZ2lvbk92ZXJzZXRUYXNrOjpD
aGFuZ2VSZWdpb25PdmVyc2V0VGFzayhJbnNwZWN0b3JDU1NBZ2VudCogY3NzQWdlbnQpCi0gICAg
OiBtX2Nzc0FnZW50KGNzc0FnZW50KQotICAgICwgbV90aW1lcigqdGhpcywgJkNoYW5nZVJlZ2lv
bk92ZXJzZXRUYXNrOjp0aW1lckZpcmVkKQotewotfQotCi12b2lkIENoYW5nZVJlZ2lvbk92ZXJz
ZXRUYXNrOjpzY2hlZHVsZUZvcihXZWJLaXROYW1lZEZsb3cqIG5hbWVkRmxvdywgaW50IGRvY3Vt
ZW50Tm9kZUlkKQotewotICAgIG1fbmFtZWRGbG93cy5hZGQobmFtZWRGbG93LCBkb2N1bWVudE5v
ZGVJZCk7Ci0KLSAgICBpZiAoIW1fdGltZXIuaXNBY3RpdmUoKSkKLSAgICAgICAgbV90aW1lci5z
dGFydE9uZVNob3QoMF9zKTsKLX0KLQotdm9pZCBDaGFuZ2VSZWdpb25PdmVyc2V0VGFzazo6dW5z
Y2hlZHVsZShXZWJLaXROYW1lZEZsb3cqIG5hbWVkRmxvdykKLXsKLSAgICBtX25hbWVkRmxvd3Mu
cmVtb3ZlKG5hbWVkRmxvdyk7Ci19Ci0KLXZvaWQgQ2hhbmdlUmVnaW9uT3ZlcnNldFRhc2s6OnJl
c2V0KCkKLXsKLSAgICBtX3RpbWVyLnN0b3AoKTsKLSAgICBtX25hbWVkRmxvd3MuY2xlYXIoKTsK
LX0KLQotdm9pZCBDaGFuZ2VSZWdpb25PdmVyc2V0VGFzazo6dGltZXJGaXJlZCgpCi17Ci0gICAg
Ly8gVGhlIHRpbWVyIGlzIHN0b3BwZWQgb24gbV9jc3NBZ2VudCBkZXN0cnVjdGlvbiwgc28gdGhp
cyBtZXRob2Qgd2lsbCBuZXZlciBiZSBjYWxsZWQgYWZ0ZXIgbV9jc3NBZ2VudCBoYXMgYmVlbiBk
ZXN0cm95ZWQuCi0gICAgZm9yIChhdXRvJiBuYW1lZEZsb3cgOiBtX25hbWVkRmxvd3MpCi0gICAg
ICAgIG1fY3NzQWdlbnQtPnJlZ2lvbk92ZXJzZXRDaGFuZ2VkKG5hbWVkRmxvdy5rZXksIG5hbWVk
Rmxvdy52YWx1ZSk7Ci0KLSAgICBtX25hbWVkRmxvd3MuY2xlYXIoKTsKLX0KLQogY2xhc3MgSW5z
cGVjdG9yQ1NTQWdlbnQ6OlN0eWxlU2hlZXRBY3Rpb24gOiBwdWJsaWMgSW5zcGVjdG9ySGlzdG9y
eTo6QWN0aW9uIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTdHlsZVNoZWV0QWN0aW9uKTsK
IHB1YmxpYzoKQEAgLTM4NSw5ICszMzUsNiBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpyZXNl
dCgpCiAKIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OnJlc2V0Tm9uUGVyc2lzdGVudERhdGEoKQog
ewotICAgIG1fbmFtZWRGbG93Q29sbGVjdGlvbnNSZXF1ZXN0ZWQuY2xlYXIoKTsKLSAgICBpZiAo
bV9jaGFuZ2VSZWdpb25PdmVyc2V0VGFzaykKLSAgICAgICAgbV9jaGFuZ2VSZWdpb25PdmVyc2V0
VGFzay0+cmVzZXQoKTsKICAgICByZXNldFBzZXVkb1N0YXRlcygpOwogfQogCkBAIC00NTgsNzcg
KzQwNSw2IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OnNldEFjdGl2ZVN0eWxlU2gKICAgICB9
CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmRpZENyZWF0ZU5hbWVkRmxvdyhEb2N1bWVu
dCYgZG9jdW1lbnQsIFdlYktpdE5hbWVkRmxvdyYgbmFtZWRGbG93KQotewotICAgIGludCBkb2N1
bWVudE5vZGVJZCA9IGRvY3VtZW50Tm9kZVdpdGhSZXF1ZXN0ZWRGbG93c0lkKCZkb2N1bWVudCk7
Ci0gICAgaWYgKCFkb2N1bWVudE5vZGVJZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgRXJyb3JT
dHJpbmcgdW51c2VkOwotICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5uYW1lZEZsb3dDcmVhdGVk
KGJ1aWxkT2JqZWN0Rm9yTmFtZWRGbG93KHVudXNlZCwgJm5hbWVkRmxvdywgZG9jdW1lbnROb2Rl
SWQpKTsKLX0KLQotdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6d2lsbFJlbW92ZU5hbWVkRmxvdyhE
b2N1bWVudCYgZG9jdW1lbnQsIFdlYktpdE5hbWVkRmxvdyYgbmFtZWRGbG93KQotewotICAgIGlu
dCBkb2N1bWVudE5vZGVJZCA9IGRvY3VtZW50Tm9kZVdpdGhSZXF1ZXN0ZWRGbG93c0lkKCZkb2N1
bWVudCk7Ci0gICAgaWYgKCFkb2N1bWVudE5vZGVJZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
aWYgKG1fY2hhbmdlUmVnaW9uT3ZlcnNldFRhc2spCi0gICAgICAgIG1fY2hhbmdlUmVnaW9uT3Zl
cnNldFRhc2stPnVuc2NoZWR1bGUoJm5hbWVkRmxvdyk7Ci0KLSAgICBtX2Zyb250ZW5kRGlzcGF0
Y2hlci0+bmFtZWRGbG93UmVtb3ZlZChkb2N1bWVudE5vZGVJZCwgbmFtZWRGbG93Lm5hbWUoKS5z
dHJpbmcoKSk7Ci19Ci0KLXZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmRpZENoYW5nZVJlZ2lvbk92
ZXJzZXQoRG9jdW1lbnQmIGRvY3VtZW50LCBXZWJLaXROYW1lZEZsb3cmIG5hbWVkRmxvdykKLXsK
LSAgICBpbnQgZG9jdW1lbnROb2RlSWQgPSBkb2N1bWVudE5vZGVXaXRoUmVxdWVzdGVkRmxvd3NJ
ZCgmZG9jdW1lbnQpOwotICAgIGlmICghZG9jdW1lbnROb2RlSWQpCi0gICAgICAgIHJldHVybjsK
LQotICAgIGlmICghbV9jaGFuZ2VSZWdpb25PdmVyc2V0VGFzaykKLSAgICAgICAgbV9jaGFuZ2VS
ZWdpb25PdmVyc2V0VGFzayA9IHN0ZDo6bWFrZV91bmlxdWU8Q2hhbmdlUmVnaW9uT3ZlcnNldFRh
c2s+KHRoaXMpOwotICAgIG1fY2hhbmdlUmVnaW9uT3ZlcnNldFRhc2stPnNjaGVkdWxlRm9yKCZu
YW1lZEZsb3csIGRvY3VtZW50Tm9kZUlkKTsKLX0KLQotdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6
cmVnaW9uT3ZlcnNldENoYW5nZWQoV2ViS2l0TmFtZWRGbG93KiBuYW1lZEZsb3csIGludCBkb2N1
bWVudE5vZGVJZCkKLXsKLSAgICBpZiAobmFtZWRGbG93LT5mbG93U3RhdGUoKSA9PSBXZWJLaXRO
YW1lZEZsb3c6OkZsb3dTdGF0ZU51bGwpCi0gICAgICAgIHJldHVybjsKLQotICAgIEVycm9yU3Ry
aW5nIHVudXNlZDsKLSAgICBSZWY8V2ViS2l0TmFtZWRGbG93PiBwcm90ZWN0KCpuYW1lZEZsb3cp
OwotCi0gICAgbV9mcm9udGVuZERpc3BhdGNoZXItPnJlZ2lvbk92ZXJzZXRDaGFuZ2VkKGJ1aWxk
T2JqZWN0Rm9yTmFtZWRGbG93KHVudXNlZCwgbmFtZWRGbG93LCBkb2N1bWVudE5vZGVJZCkpOwot
fQotCi12b2lkIEluc3BlY3RvckNTU0FnZW50OjpkaWRSZWdpc3Rlck5hbWVkRmxvd0NvbnRlbnRF
bGVtZW50KERvY3VtZW50JiBkb2N1bWVudCwgV2ViS2l0TmFtZWRGbG93JiBuYW1lZEZsb3csIE5v
ZGUmIGNvbnRlbnRFbGVtZW50LCBOb2RlKiBuZXh0Q29udGVudEVsZW1lbnQpCi17Ci0gICAgaW50
IGRvY3VtZW50Tm9kZUlkID0gZG9jdW1lbnROb2RlV2l0aFJlcXVlc3RlZEZsb3dzSWQoJmRvY3Vt
ZW50KTsKLSAgICBpZiAoIWRvY3VtZW50Tm9kZUlkKQotICAgICAgICByZXR1cm47Ci0KLSAgICBF
cnJvclN0cmluZyB1bnVzZWQ7Ci0gICAgaW50IGNvbnRlbnRFbGVtZW50Tm9kZUlkID0gbV9kb21B
Z2VudC0+cHVzaE5vZGVUb0Zyb250ZW5kKHVudXNlZCwgZG9jdW1lbnROb2RlSWQsICZjb250ZW50
RWxlbWVudCk7Ci0gICAgaW50IG5leHRDb250ZW50RWxlbWVudE5vZGVJZCA9IG5leHRDb250ZW50
RWxlbWVudCA/IG1fZG9tQWdlbnQtPnB1c2hOb2RlVG9Gcm9udGVuZCh1bnVzZWQsIGRvY3VtZW50
Tm9kZUlkLCBuZXh0Q29udGVudEVsZW1lbnQpIDogMDsKLSAgICBtX2Zyb250ZW5kRGlzcGF0Y2hl
ci0+cmVnaXN0ZXJlZE5hbWVkRmxvd0NvbnRlbnRFbGVtZW50KGRvY3VtZW50Tm9kZUlkLCBuYW1l
ZEZsb3cubmFtZSgpLnN0cmluZygpLCBjb250ZW50RWxlbWVudE5vZGVJZCwgbmV4dENvbnRlbnRF
bGVtZW50Tm9kZUlkKTsKLX0KLQotdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6ZGlkVW5yZWdpc3Rl
ck5hbWVkRmxvd0NvbnRlbnRFbGVtZW50KERvY3VtZW50JiBkb2N1bWVudCwgV2ViS2l0TmFtZWRG
bG93JiBuYW1lZEZsb3csIE5vZGUmIGNvbnRlbnRFbGVtZW50KQotewotICAgIGludCBkb2N1bWVu
dE5vZGVJZCA9IGRvY3VtZW50Tm9kZVdpdGhSZXF1ZXN0ZWRGbG93c0lkKCZkb2N1bWVudCk7Ci0g
ICAgaWYgKCFkb2N1bWVudE5vZGVJZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgRXJyb3JTdHJp
bmcgdW51c2VkOwotICAgIGludCBjb250ZW50RWxlbWVudE5vZGVJZCA9IG1fZG9tQWdlbnQtPnB1
c2hOb2RlVG9Gcm9udGVuZCh1bnVzZWQsIGRvY3VtZW50Tm9kZUlkLCAmY29udGVudEVsZW1lbnQp
OwotICAgIGlmICghY29udGVudEVsZW1lbnROb2RlSWQpIHsKLSAgICAgICAgLy8gV2UndmUgYWxy
ZWFkeSBub3RpZmllZCB0aGF0IHRoZSBET00gbm9kZSB3YXMgcmVtb3ZlZCBmcm9tIHRoZSBET00s
IHNvIHRoZXJlJ3Mgbm8gbmVlZCB0byBzZW5kIGFub3RoZXIgZXZlbnQuCi0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0gICAgbV9mcm9udGVuZERpc3BhdGNoZXItPnVucmVnaXN0ZXJlZE5hbWVkRmxv
d0NvbnRlbnRFbGVtZW50KGRvY3VtZW50Tm9kZUlkLCBuYW1lZEZsb3cubmFtZSgpLnN0cmluZygp
LCBjb250ZW50RWxlbWVudE5vZGVJZCk7Ci19Ci0KIGJvb2wgSW5zcGVjdG9yQ1NTQWdlbnQ6OmZv
cmNlUHNldWRvU3RhdGUoY29uc3QgRWxlbWVudCYgZWxlbWVudCwgQ1NTU2VsZWN0b3I6OlBzZXVk
b0NsYXNzVHlwZSBwc2V1ZG9DbGFzc1R5cGUpCiB7CiAgICAgaWYgKG1fbm9kZUlkVG9Gb3JjZWRQ
c2V1ZG9TdGF0ZS5pc0VtcHR5KCkpCkBAIC05MDEsMjEgKzc3Nyw4IEBAIHZvaWQgSW5zcGVjdG9y
Q1NTQWdlbnQ6OmZvcmNlUHNldWRvU3RhdGUKICAgICBlbGVtZW50LT5kb2N1bWVudCgpLnN0eWxl
U2NvcGUoKS5kaWRDaGFuZ2VTdHlsZVNoZWV0RW52aXJvbm1lbnQoKTsKIH0KIAotdm9pZCBJbnNw
ZWN0b3JDU1NBZ2VudDo6Z2V0TmFtZWRGbG93Q29sbGVjdGlvbihFcnJvclN0cmluZyYgZXJyb3JT
dHJpbmcsIGludCBkb2N1bWVudE5vZGVJZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFy
cmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6TmFtZWRGbG93Pj4mIHJlc3VsdCkKK3ZvaWQg
SW5zcGVjdG9yQ1NTQWdlbnQ6OmdldE5hbWVkRmxvd0NvbGxlY3Rpb24oRXJyb3JTdHJpbmcmLCBp
bnQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29s
OjpDU1M6Ok5hbWVkRmxvdz4+JikKIHsKLSAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBtX2RvbUFn
ZW50LT5hc3NlcnREb2N1bWVudChlcnJvclN0cmluZywgZG9jdW1lbnROb2RlSWQpOwotICAgIGlm
ICghZG9jdW1lbnQpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fbmFtZWRGbG93Q29sbGVjdGlv
bnNSZXF1ZXN0ZWQuYWRkKGRvY3VtZW50Tm9kZUlkKTsKLQotICAgIFZlY3RvcjxSZWZQdHI8V2Vi
S2l0TmFtZWRGbG93Pj4gbmFtZWRGbG93c1ZlY3RvciA9IGRvY3VtZW50LT5uYW1lZEZsb3dzKCku
bmFtZWRGbG93cygpOwotICAgIGF1dG8gbmFtZWRGbG93cyA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6TmFtZWRGbG93Pjo6Y3JlYXRlKCk7Ci0K
LSAgICBmb3IgKGF1dG8mIG5hbWVkRmxvdyA6IG5hbWVkRmxvd3NWZWN0b3IpCi0gICAgICAgIG5h
bWVkRmxvd3MtPmFkZEl0ZW0oYnVpbGRPYmplY3RGb3JOYW1lZEZsb3coZXJyb3JTdHJpbmcsIG5h
bWVkRmxvdy5nZXQoKSwgZG9jdW1lbnROb2RlSWQpKTsKLQotICAgIHJlc3VsdCA9IFdURk1vdmUo
bmFtZWRGbG93cyk7CiB9CiAKIEluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZSYgSW5z
cGVjdG9yQ1NTQWdlbnQ6OmFzSW5zcGVjdG9yU3R5bGVTaGVldChTdHlsZWRFbGVtZW50JiBlbGVt
ZW50KQpAQCAtOTQ3LDE1ICs4MTAsNiBAQCBFbGVtZW50KiBJbnNwZWN0b3JDU1NBZ2VudDo6ZWxl
bWVudEZvcklkCiAgICAgcmV0dXJuIGRvd25jYXN0PEVsZW1lbnQ+KG5vZGUpOwogfQogCi1pbnQg
SW5zcGVjdG9yQ1NTQWdlbnQ6OmRvY3VtZW50Tm9kZVdpdGhSZXF1ZXN0ZWRGbG93c0lkKERvY3Vt
ZW50KiBkb2N1bWVudCkKLXsKLSAgICBpbnQgZG9jdW1lbnROb2RlSWQgPSBtX2RvbUFnZW50LT5i
b3VuZE5vZGVJZChkb2N1bWVudCk7Ci0gICAgaWYgKCFkb2N1bWVudE5vZGVJZCB8fCAhbV9uYW1l
ZEZsb3dDb2xsZWN0aW9uc1JlcXVlc3RlZC5jb250YWlucyhkb2N1bWVudE5vZGVJZCkpCi0gICAg
ICAgIHJldHVybiAwOwotCi0gICAgcmV0dXJuIGRvY3VtZW50Tm9kZUlkOwotfQotCiBTdHJpbmcg
SW5zcGVjdG9yQ1NTQWdlbnQ6OnVuYmluZFN0eWxlU2hlZXQoSW5zcGVjdG9yU3R5bGVTaGVldCog
aW5zcGVjdG9yU3R5bGVTaGVldCkKIHsKICAgICBTdHJpbmcgaWQgPSBpbnNwZWN0b3JTdHlsZVNo
ZWV0LT5pZCgpOwpAQCAtMTA5Miw2MSArOTQ2LDYgQEAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkNTUzo6Q1NTU3R5bAogICAgIHJldHVybiBpbnNwZWN0b3JTdHlsZS0+YnVpbGRPYmplY3RG
b3JTdHlsZSgpOwogfQogCi1SZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVj
dG9yOjpQcm90b2NvbDo6Q1NTOjpSZWdpb24+PiBJbnNwZWN0b3JDU1NBZ2VudDo6YnVpbGRBcnJh
eUZvclJlZ2lvbnMoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBSZWZQdHI8Tm9kZUxpc3Q+JiYg
cmVnaW9uTGlzdCwgaW50IGRvY3VtZW50Tm9kZUlkKQotewotICAgIGF1dG8gcmVnaW9ucyA9IElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6UmVnaW9u
Pjo6Y3JlYXRlKCk7Ci0KLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcmVnaW9uTGlzdC0+
bGVuZ3RoKCk7ICsraSkgewotICAgICAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OlJlZ2lv
bjo6UmVnaW9uT3ZlcnNldCByZWdpb25PdmVyc2V0OwotCi0gICAgICAgIHN3aXRjaCAoZG93bmNh
c3Q8RWxlbWVudD4ocmVnaW9uTGlzdC0+aXRlbShpKSktPnJlZ2lvbk92ZXJzZXRTdGF0ZSgpKSB7
Ci0gICAgICAgIGNhc2UgUmVnaW9uRml0OgotICAgICAgICAgICAgcmVnaW9uT3ZlcnNldCA9IElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6UmVnaW9uOjpSZWdpb25PdmVyc2V0OjpGaXQ7Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBSZWdpb25FbXB0eToKLSAgICAgICAgICAgIHJl
Z2lvbk92ZXJzZXQgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OlJlZ2lvbjo6UmVnaW9uT3Zl
cnNldDo6RW1wdHk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBSZWdpb25PdmVy
c2V0OgotICAgICAgICAgICAgcmVnaW9uT3ZlcnNldCA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNT
Uzo6UmVnaW9uOjpSZWdpb25PdmVyc2V0OjpPdmVyc2V0OwotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIGNhc2UgUmVnaW9uVW5kZWZpbmVkOgotICAgICAgICAgICAgY29udGludWU7Ci0gICAg
ICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAg
ICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgYXV0byByZWdpb24gPSBJbnNwZWN0
b3I6OlByb3RvY29sOjpDU1M6OlJlZ2lvbjo6Y3JlYXRlKCkKLSAgICAgICAgICAgIC5zZXRSZWdp
b25PdmVyc2V0KHJlZ2lvbk92ZXJzZXQpCi0gICAgICAgICAgICAvLyBkb2N1bWVudE5vZGVJZCB3
YXMgcHJldmlvdXNseSBhc3NlcnRlZAotICAgICAgICAgICAgLnNldE5vZGVJZChtX2RvbUFnZW50
LT5wdXNoTm9kZVRvRnJvbnRlbmQoZXJyb3JTdHJpbmcsIGRvY3VtZW50Tm9kZUlkLCByZWdpb25M
aXN0LT5pdGVtKGkpKSkKLSAgICAgICAgICAgIC5yZWxlYXNlKCk7Ci0KLSAgICAgICAgcmVnaW9u
cy0+YWRkSXRlbShXVEZNb3ZlKHJlZ2lvbikpOwotICAgIH0KLQotICAgIHJldHVybiBXVEZNb3Zl
KHJlZ2lvbnMpOwotfQotCi1SZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpOYW1lZEZs
b3c+IEluc3BlY3RvckNTU0FnZW50OjpidWlsZE9iamVjdEZvck5hbWVkRmxvdyhFcnJvclN0cmlu
ZyYgZXJyb3JTdHJpbmcsIFdlYktpdE5hbWVkRmxvdyogd2Via2l0TmFtZWRGbG93LCBpbnQgZG9j
dW1lbnROb2RlSWQpCi17Ci0gICAgUmVmUHRyPE5vZGVMaXN0PiBjb250ZW50TGlzdCA9IHdlYmtp
dE5hbWVkRmxvdy0+Z2V0Q29udGVudCgpOwotICAgIGF1dG8gY29udGVudCA9IEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkFycmF5PGludD46OmNyZWF0ZSgpOwotCi0gICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IGNvbnRlbnRMaXN0LT5sZW5ndGgoKTsgKytpKSB7Ci0gICAgICAgIC8vIGRvY3VtZW50
Tm9kZUlkIHdhcyBwcmV2aW91c2x5IGFzc2VydGVkCi0gICAgICAgIGNvbnRlbnQtPmFkZEl0ZW0o
bV9kb21BZ2VudC0+cHVzaE5vZGVUb0Zyb250ZW5kKGVycm9yU3RyaW5nLCBkb2N1bWVudE5vZGVJ
ZCwgY29udGVudExpc3QtPml0ZW0oaSkpKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gSW5zcGVjdG9y
OjpQcm90b2NvbDo6Q1NTOjpOYW1lZEZsb3c6OmNyZWF0ZSgpCi0gICAgICAgIC5zZXREb2N1bWVu
dE5vZGVJZChkb2N1bWVudE5vZGVJZCkKLSAgICAgICAgLnNldE5hbWUod2Via2l0TmFtZWRGbG93
LT5uYW1lKCkuc3RyaW5nKCkpCi0gICAgICAgIC5zZXRPdmVyc2V0KHdlYmtpdE5hbWVkRmxvdy0+
b3ZlcnNldCgpKQotICAgICAgICAuc2V0Q29udGVudChXVEZNb3ZlKGNvbnRlbnQpKQotICAgICAg
ICAuc2V0UmVnaW9ucyhidWlsZEFycmF5Rm9yUmVnaW9ucyhlcnJvclN0cmluZywgd2Via2l0TmFt
ZWRGbG93LT5nZXRSZWdpb25zKCksIGRvY3VtZW50Tm9kZUlkKSkKLSAgICAgICAgLnJlbGVhc2Uo
KTsKLX0KLQogdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6ZGlkUmVtb3ZlRE9NTm9kZShOb2RlJiBu
b2RlLCBpbnQgbm9kZUlkKQogewogICAgIG1fbm9kZUlkVG9Gb3JjZWRQc2V1ZG9TdGF0ZS5yZW1v
dmUobm9kZUlkKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NB
Z2VudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JD
U1NBZ2VudC5oCShyZXZpc2lvbiAyMjIyNTcpCisrKyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQ1NTQWdlbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsMTQgKzQ3LDEyIEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENTU1J1bGU7CiBjbGFzcyBDU1NTdHlsZVJ1bGU7CiBj
bGFzcyBDU1NTdHlsZVNoZWV0OwotY2xhc3MgQ2hhbmdlUmVnaW9uT3ZlcnNldFRhc2s7CiBjbGFz
cyBEb2N1bWVudDsKIGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBOb2RlOwogY2xhc3MgTm9kZUxpc3Q7
CiBjbGFzcyBTdHlsZVJlc29sdmVyOwogY2xhc3MgU3R5bGVSdWxlOwotY2xhc3MgV2ViS2l0TmFt
ZWRGbG93OwogCiBjbGFzcyBJbnNwZWN0b3JDU1NBZ2VudCBmaW5hbAogICAgIDogcHVibGljIElu
c3BlY3RvckFnZW50QmFzZQpAQCAtOTEsMTggKzg5LDEyIEBAIHB1YmxpYzoKICAgICB2b2lkIGRp
c2NhcmRBZ2VudCgpIG92ZXJyaWRlOwogICAgIHZvaWQgZW5hYmxlKEVycm9yU3RyaW5nJikgb3Zl
cnJpZGU7CiAgICAgdm9pZCBkaXNhYmxlKEVycm9yU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCByZWdpb25PdmVyc2V0Q2hhbmdlZChXZWJLaXROYW1lZEZsb3cqLCBpbnQgZG9jdW1lbnROb2Rl
SWQpOwogICAgIHZvaWQgcmVzZXQoKTsKIAogICAgIC8vIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bgogICAgIHZvaWQgZG9jdW1lbnREZXRhY2hlZChEb2N1bWVudCYpOwogICAgIHZvaWQgbWVkaWFR
dWVyeVJlc3VsdENoYW5nZWQoKTsKICAgICB2b2lkIGFjdGl2ZVN0eWxlU2hlZXRzVXBkYXRlZChE
b2N1bWVudCYpOwotICAgIHZvaWQgZGlkQ3JlYXRlTmFtZWRGbG93KERvY3VtZW50JiwgV2ViS2l0
TmFtZWRGbG93Jik7Ci0gICAgdm9pZCB3aWxsUmVtb3ZlTmFtZWRGbG93KERvY3VtZW50JiwgV2Vi
S2l0TmFtZWRGbG93Jik7Ci0gICAgdm9pZCBkaWRDaGFuZ2VSZWdpb25PdmVyc2V0KERvY3VtZW50
JiwgV2ViS2l0TmFtZWRGbG93Jik7Ci0gICAgdm9pZCBkaWRSZWdpc3Rlck5hbWVkRmxvd0NvbnRl
bnRFbGVtZW50KERvY3VtZW50JiwgV2ViS2l0TmFtZWRGbG93JiwgTm9kZSYgY29udGVudEVsZW1l
bnQsIE5vZGUqIG5leHRDb250ZW50RWxlbWVudCA9IG51bGxwdHIpOwotICAgIHZvaWQgZGlkVW5y
ZWdpc3Rlck5hbWVkRmxvd0NvbnRlbnRFbGVtZW50KERvY3VtZW50JiwgV2ViS2l0TmFtZWRGbG93
JiwgTm9kZSYgY29udGVudEVsZW1lbnQpOwogICAgIGJvb2wgZm9yY2VQc2V1ZG9TdGF0ZShjb25z
dCBFbGVtZW50JiwgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzVHlwZSk7CiAKICAgICB2b2lkIGdl
dENvbXB1dGVkU3R5bGVGb3JOb2RlKEVycm9yU3RyaW5nJiwgaW50IG5vZGVJZCwgUmVmUHRyPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTQ29t
cHV0ZWRTdHlsZVByb3BlcnR5Pj4mKSBvdmVycmlkZTsKQEAgLTEzNyw3ICsxMjksNiBAQCBwcml2
YXRlOgogICAgIHZvaWQgcmVzZXROb25QZXJzaXN0ZW50RGF0YSgpOwogICAgIEluc3BlY3RvclN0
eWxlU2hlZXRGb3JJbmxpbmVTdHlsZSYgYXNJbnNwZWN0b3JTdHlsZVNoZWV0KFN0eWxlZEVsZW1l
bnQmKTsKICAgICBFbGVtZW50KiBlbGVtZW50Rm9ySWQoRXJyb3JTdHJpbmcmLCBpbnQgbm9kZUlk
KTsKLSAgICBpbnQgZG9jdW1lbnROb2RlV2l0aFJlcXVlc3RlZEZsb3dzSWQoRG9jdW1lbnQqKTsK
IAogICAgIHZvaWQgY29sbGVjdEFsbFN0eWxlU2hlZXRzKFZlY3RvcjxJbnNwZWN0b3JTdHlsZVNo
ZWV0Kj4mKTsKICAgICB2b2lkIGNvbGxlY3RBbGxEb2N1bWVudFN0eWxlU2hlZXRzKERvY3VtZW50
JiwgVmVjdG9yPENTU1N0eWxlU2hlZXQqPiYpOwpAQCAtMTU0LDggKzE0NSw2IEBAIHByaXZhdGU6
CiAgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTUnVsZT4gYnVpbGRPYmpl
Y3RGb3JSdWxlKENTU1N0eWxlUnVsZSopOwogICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29s
OjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OlJ1bGVNYXRjaD4+IGJ1aWxkQXJyYXlG
b3JNYXRjaGVkUnVsZUxpc3QoY29uc3QgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGU+PiYsIFN0eWxl
UmVzb2x2ZXImLCBFbGVtZW50JiwgUHNldWRvSWQpOwogICAgIFJlZlB0cjxJbnNwZWN0b3I6OlBy
b3RvY29sOjpDU1M6OkNTU1N0eWxlPiBidWlsZE9iamVjdEZvckF0dHJpYnV0ZXNTdHlsZShTdHls
ZWRFbGVtZW50Jik7Ci0gICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkNTUzo6UmVnaW9uPj4gYnVpbGRBcnJheUZvclJlZ2lvbnMoRXJyb3JT
dHJpbmcmLCBSZWZQdHI8Tm9kZUxpc3Q+JiYsIGludCBkb2N1bWVudE5vZGVJZCk7Ci0gICAgUmVm
UHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6TmFtZWRGbG93PiBidWlsZE9iamVjdEZvck5h
bWVkRmxvdyhFcnJvclN0cmluZyYsIFdlYktpdE5hbWVkRmxvdyosIGludCBkb2N1bWVudE5vZGVJ
ZCk7CiAKICAgICAvLyBJbnNwZWN0b3JET01BZ2VudDo6RE9NTGlzdGVuZXIgaW1wbGVtZW50YXRp
b24KICAgICB2b2lkIGRpZFJlbW92ZURPTU5vZGUoTm9kZSYsIGludCBub2RlSWQpIG92ZXJyaWRl
OwpAQCAtMTc3LDggKzE2Niw2IEBAIHByaXZhdGU6CiAgICAgSGFzaE1hcDxEb2N1bWVudCosIEhh
c2hTZXQ8Q1NTU3R5bGVTaGVldCo+PiBtX2RvY3VtZW50VG9Lbm93bkNTU1N0eWxlU2hlZXRzOwog
ICAgIE5vZGVJZFRvRm9yY2VkUHNldWRvU3RhdGUgbV9ub2RlSWRUb0ZvcmNlZFBzZXVkb1N0YXRl
OwogICAgIEhhc2hTZXQ8RG9jdW1lbnQqPiBtX2RvY3VtZW50c1dpdGhGb3JjZWRQc2V1ZG9TdGF0
ZXM7Ci0gICAgSGFzaFNldDxpbnQ+IG1fbmFtZWRGbG93Q29sbGVjdGlvbnNSZXF1ZXN0ZWQ7Ci0g
ICAgc3RkOjp1bmlxdWVfcHRyPENoYW5nZVJlZ2lvbk92ZXJzZXRUYXNrPiBtX2NoYW5nZVJlZ2lv
bk92ZXJzZXRUYXNrOwogCiAgICAgaW50IG1fbGFzdFN0eWxlU2hlZXRJZCB7IDEgfTsKICAgICBi
b29sIG1fY3JlYXRpbmdWaWFJbnNwZWN0b3JTdHlsZVNoZWV0IHsgZmFsc2UgfTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRp
b24uY3BwCShyZXZpc2lvbiAyMjIyNTcpCisrKyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQ5LDQyICsyNDks
NiBAQCB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6cHNldWRvRWxlCiAgICAgICAgIGxh
eWVyVHJlZUFnZW50LT5wc2V1ZG9FbGVtZW50RGVzdHJveWVkKHBzZXVkb0VsZW1lbnQpOwogfQog
Ci12b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ3JlYXRlTmFtZWRGbG93SW1wbChJ
bnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBEb2N1bWVudCogZG9jdW1l
bnQsIFdlYktpdE5hbWVkRmxvdyYgbmFtZWRGbG93KQotewotICAgIGlmICghZG9jdW1lbnQpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIGlmIChJbnNwZWN0b3JDU1NBZ2VudCogY3NzQWdlbnQgPSBp
bnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckNTU0FnZW50KCkpCi0gICAgICAgIGNzc0FnZW50
LT5kaWRDcmVhdGVOYW1lZEZsb3coKmRvY3VtZW50LCBuYW1lZEZsb3cpOwotfQotCi12b2lkIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFJlbW92ZU5hbWVkRmxvd0ltcGwoSW5zdHJ1bWVu
dGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgRG9jdW1lbnQqIGRvY3VtZW50LCBXZWJL
aXROYW1lZEZsb3cmIG5hbWVkRmxvdykKLXsKLSAgICBpZiAoIWRvY3VtZW50KQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBpZiAoSW5zcGVjdG9yQ1NTQWdlbnQqIGNzc0FnZW50ID0gaW5zdHJ1bWVu
dGluZ0FnZW50cy5pbnNwZWN0b3JDU1NBZ2VudCgpKQotICAgICAgICBjc3NBZ2VudC0+d2lsbFJl
bW92ZU5hbWVkRmxvdygqZG9jdW1lbnQsIG5hbWVkRmxvdyk7Ci19Ci0KLXZvaWQgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpkaWRDaGFuZ2VSZWdpb25PdmVyc2V0SW1wbChJbnN0cnVtZW50aW5n
QWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBEb2N1bWVudCYgZG9jdW1lbnQsIFdlYktpdE5h
bWVkRmxvdyYgbmFtZWRGbG93KQotewotICAgIGlmIChJbnNwZWN0b3JDU1NBZ2VudCogY3NzQWdl
bnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckNTU0FnZW50KCkpCi0gICAgICAgIGNz
c0FnZW50LT5kaWRDaGFuZ2VSZWdpb25PdmVyc2V0KGRvY3VtZW50LCBuYW1lZEZsb3cpOwotfQot
Ci12b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVnaXN0ZXJOYW1lZEZsb3dDb250
ZW50RWxlbWVudEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywg
RG9jdW1lbnQmIGRvY3VtZW50LCBXZWJLaXROYW1lZEZsb3cmIG5hbWVkRmxvdywgTm9kZSYgY29u
dGVudEVsZW1lbnQsIE5vZGUqIG5leHRDb250ZW50RWxlbWVudCkKLXsKLSAgICBpZiAoSW5zcGVj
dG9yQ1NTQWdlbnQqIGNzc0FnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JDU1NB
Z2VudCgpKQotICAgICAgICBjc3NBZ2VudC0+ZGlkUmVnaXN0ZXJOYW1lZEZsb3dDb250ZW50RWxl
bWVudChkb2N1bWVudCwgbmFtZWRGbG93LCBjb250ZW50RWxlbWVudCwgbmV4dENvbnRlbnRFbGVt
ZW50KTsKLX0KLQotdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFVucmVnaXN0ZXJO
YW1lZEZsb3dDb250ZW50RWxlbWVudEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVu
dGluZ0FnZW50cywgRG9jdW1lbnQmIGRvY3VtZW50LCBXZWJLaXROYW1lZEZsb3cmIG5hbWVkRmxv
dywgTm9kZSYgY29udGVudEVsZW1lbnQpCi17Ci0gICAgaWYgKEluc3BlY3RvckNTU0FnZW50KiBj
c3NBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yQ1NTQWdlbnQoKSkKLSAgICAg
ICAgY3NzQWdlbnQtPmRpZFVucmVnaXN0ZXJOYW1lZEZsb3dDb250ZW50RWxlbWVudChkb2N1bWVu
dCwgbmFtZWRGbG93LCBjb250ZW50RWxlbWVudCk7Ci19Ci0KIHZvaWQgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjptb3VzZURpZE1vdmVPdmVyRWxlbWVudEltcGwoSW5zdHJ1bWVudGluZ0FnZW50
cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgY29uc3QgSGl0VGVzdFJlc3VsdCYgcmVzdWx0LCB1bnNp
Z25lZCBtb2RpZmllckZsYWdzKQogewogICAgIGlmIChJbnNwZWN0b3JET01BZ2VudCogZG9tQWdl
bnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckRPTUFnZW50KCkpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwCShyZXZpc2lvbiAy
MjIyNTcpCisrKyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTUxLDggKzUxLDYgQEAKICNpbmNsdWRlICJSZW5kZXJFbGVtZW50
LmgiCiAjaW5jbHVkZSAiUmVuZGVyRmxvd1RocmVhZC5oIgogI2luY2x1ZGUgIlJlbmRlcklubGlu
ZS5oIgotI2luY2x1ZGUgIlJlbmRlck5hbWVkRmxvd0ZyYWdtZW50LmgiCi0jaW5jbHVkZSAiUmVu
ZGVyTmFtZWRGbG93VGhyZWFkLmgiCiAjaW5jbHVkZSAiUmVuZGVyUmVnaW9uLmgiCiAjaW5jbHVk
ZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKQEAgLTEyMCw3
ICsxMTgsNyBAQCBzdGF0aWMgdm9pZCBidWlsZFJlbmRlcmVySGlnaGxpZ2h0KFJlbmRlCiAgICAg
ICAgICAgICAgICAgbWFyZ2lucy5lbmQocmVuZGVyQm94LnN0eWxlKCkud3JpdGluZ01vZGUoKSkg
PSBjb21wdXRlZFZhbHVlcy5tX21hcmdpbnMubV9lbmQ7CiAgICAgICAgICAgICB9CiAKLSAgICAg
ICAgICAgIHBhZGRpbmdCb3ggPSByZW5kZXJCb3guY2xpZW50Qm94UmVjdEluUmVnaW9uKHJlZ2lv
bik7CisgICAgICAgICAgICBwYWRkaW5nQm94ID0gcmVuZGVyQm94LmNsaWVudEJveFJlY3QoKTsK
ICAgICAgICAgICAgIGNvbnRlbnRCb3ggPSBMYXlvdXRSZWN0KHBhZGRpbmdCb3gueCgpICsgcmVu
ZGVyQm94LnBhZGRpbmdMZWZ0KCksIHBhZGRpbmdCb3gueSgpICsgcmVuZGVyQm94LnBhZGRpbmdU
b3AoKSwKICAgICAgICAgICAgICAgICBwYWRkaW5nQm94LndpZHRoKCkgLSByZW5kZXJCb3gucGFk
ZGluZ0xlZnQoKSAtIHJlbmRlckJveC5wYWRkaW5nUmlnaHQoKSwgcGFkZGluZ0JveC5oZWlnaHQo
KSAtIHJlbmRlckJveC5wYWRkaW5nVG9wKCkgLSByZW5kZXJCb3gucGFkZGluZ0JvdHRvbSgpKTsK
ICAgICAgICAgICAgIGJvcmRlckJveCA9IExheW91dFJlY3QocGFkZGluZ0JveC54KCkgLSByZW5k
ZXJCb3guYm9yZGVyTGVmdCgpLCBwYWRkaW5nQm94LnkoKSAtIHJlbmRlckJveC5ib3JkZXJUb3Ao
KSwKQEAgLTM5NSw2OCArMzkzLDYgQEAgc3RhdGljIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpP
dmVybGF5VAogICAgICAgICAucmVsZWFzZSgpOwogfQogCi1zdGF0aWMgUmVmUHRyPEluc3BlY3Rv
cjo6UHJvdG9jb2w6Ok92ZXJsYXlUeXBlczo6UmVnaW9uPiBidWlsZE9iamVjdEZvclJlZ2lvbihG
cmFtZVZpZXcqIG1haW5WaWV3LCBSZW5kZXJSZWdpb24qIHJlZ2lvbikKLXsKLSAgICBGcmFtZVZp
ZXcqIGNvbnRhaW5pbmdWaWV3ID0gcmVnaW9uLT5mcmFtZSgpLnZpZXcoKTsKLSAgICBpZiAoIWNv
bnRhaW5pbmdWaWV3KQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIFJlbmRlckJsb2Nr
RmxvdyYgcmVnaW9uQ29udGFpbmVyID0gZG93bmNhc3Q8UmVuZGVyQmxvY2tGbG93PigqcmVnaW9u
LT5wYXJlbnQoKSk7Ci0gICAgTGF5b3V0UmVjdCBib3JkZXJCb3ggPSByZWdpb25Db250YWluZXIu
Ym9yZGVyQm94UmVjdCgpOwotICAgIGJvcmRlckJveC5zZXRXaWR0aChib3JkZXJCb3gud2lkdGgo
KSArIHJlZ2lvbkNvbnRhaW5lci52ZXJ0aWNhbFNjcm9sbGJhcldpZHRoKCkpOwotICAgIGJvcmRl
ckJveC5zZXRIZWlnaHQoYm9yZGVyQm94LmhlaWdodCgpICsgcmVnaW9uQ29udGFpbmVyLmhvcml6
b250YWxTY3JvbGxiYXJIZWlnaHQoKSk7Ci0KLSAgICAvLyBDcmVhdGUgaW5jb21pbmcgYW5kIG91
dGdvaW5nIGJveGVzIHRoYXQgd2UgdXNlIHRvIGNoYWluIHRoZSByZWdpb25zIHRvZ2hldGhlci4K
LSAgICBjb25zdCBMYXlvdXRTaXplIGxpbmtCb3hTaXplKDEwLCAxMCk7Ci0gICAgY29uc3QgTGF5
b3V0U2l6ZSBsaW5rQm94TWlkcG9pbnQobGlua0JveFNpemUud2lkdGgoKSAvIDIsIGxpbmtCb3hT
aXplLmhlaWdodCgpIC8gMik7Ci0KLSAgICBMYXlvdXRSZWN0IGluY29taW5nUmVjdEJveCA9IExh
eW91dFJlY3QoYm9yZGVyQm94LmxvY2F0aW9uKCkgLSBsaW5rQm94TWlkcG9pbnQsIGxpbmtCb3hT
aXplKTsKLSAgICBMYXlvdXRSZWN0IG91dGdvaW5nUmVjdEJveCA9IExheW91dFJlY3QoYm9yZGVy
Qm94LmxvY2F0aW9uKCkgLSBsaW5rQm94TWlkcG9pbnQgKyBib3JkZXJCb3guc2l6ZSgpLCBsaW5r
Qm94U2l6ZSk7Ci0KLSAgICAvLyBNb3ZlIHRoZSBsaW5rIGJveGVzIHNsaWdodGx5IGluc2lkZSB0
aGUgcmVnaW9uIGJvcmRlciBib3guCi0gICAgTGF5b3V0VW5pdCBtYXhVc2FibGVIZWlnaHQgPSBz
dGQ6Om1heChMYXlvdXRVbml0KCksIGJvcmRlckJveC5oZWlnaHQoKSAtIGxpbmtCb3hNaWRwb2lu
dC5oZWlnaHQoKSk7Ci0gICAgTGF5b3V0VW5pdCBsaW5rQm94VmVydGljYWxPZmZzZXQgPSBzdGQ6
Om1pbihMYXlvdXRVbml0Ojpmcm9tUGl4ZWwoMTUpLCBtYXhVc2FibGVIZWlnaHQpOwotICAgIGlu
Y29taW5nUmVjdEJveC5tb3ZlKDAsIGxpbmtCb3hWZXJ0aWNhbE9mZnNldCk7Ci0gICAgb3V0Z29p
bmdSZWN0Qm94Lm1vdmUoMCwgLWxpbmtCb3hWZXJ0aWNhbE9mZnNldCk7Ci0KLSAgICBGbG9hdFF1
YWQgYm9yZGVyUmVjdFF1YWQgPSByZWdpb25Db250YWluZXIubG9jYWxUb0Fic29sdXRlUXVhZChG
bG9hdFJlY3QoYm9yZGVyQm94KSk7Ci0gICAgRmxvYXRRdWFkIGluY29taW5nUmVjdFF1YWQgPSBy
ZWdpb25Db250YWluZXIubG9jYWxUb0Fic29sdXRlUXVhZChGbG9hdFJlY3QoaW5jb21pbmdSZWN0
Qm94KSk7Ci0gICAgRmxvYXRRdWFkIG91dGdvaW5nUmVjdFF1YWQgPSByZWdpb25Db250YWluZXIu
bG9jYWxUb0Fic29sdXRlUXVhZChGbG9hdFJlY3Qob3V0Z29pbmdSZWN0Qm94KSk7Ci0KLSAgICBj
b250ZW50c1F1YWRUb1BhZ2UobWFpblZpZXcsIGNvbnRhaW5pbmdWaWV3LCBib3JkZXJSZWN0UXVh
ZCk7Ci0gICAgY29udGVudHNRdWFkVG9QYWdlKG1haW5WaWV3LCBjb250YWluaW5nVmlldywgaW5j
b21pbmdSZWN0UXVhZCk7Ci0gICAgY29udGVudHNRdWFkVG9QYWdlKG1haW5WaWV3LCBjb250YWlu
aW5nVmlldywgb3V0Z29pbmdSZWN0UXVhZCk7Ci0KLSAgICByZXR1cm4gSW5zcGVjdG9yOjpQcm90
b2NvbDo6T3ZlcmxheVR5cGVzOjpSZWdpb246OmNyZWF0ZSgpCi0gICAgICAgIC5zZXRCb3JkZXJR
dWFkKGJ1aWxkQXJyYXlGb3JRdWFkKGJvcmRlclJlY3RRdWFkKSkKLSAgICAgICAgLnNldEluY29t
aW5nUXVhZChidWlsZEFycmF5Rm9yUXVhZChpbmNvbWluZ1JlY3RRdWFkKSkKLSAgICAgICAgLnNl
dE91dGdvaW5nUXVhZChidWlsZEFycmF5Rm9yUXVhZChvdXRnb2luZ1JlY3RRdWFkKSkKLSAgICAg
ICAgLnJlbGVhc2UoKTsKLX0KLQotc3RhdGljIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJh
eTxJbnNwZWN0b3I6OlByb3RvY29sOjpPdmVybGF5VHlwZXM6OlJlZ2lvbj4+IGJ1aWxkT2JqZWN0
Rm9yRmxvd1JlZ2lvbnMoUmVuZGVyUmVnaW9uKiByZWdpb24sIFJlbmRlckZsb3dUaHJlYWQqIGZs
b3dUaHJlYWQpCi17Ci0gICAgRnJhbWVWaWV3KiBtYWluRnJhbWVWaWV3ID0gcmVnaW9uLT5kb2N1
bWVudCgpLnBhZ2UoKS0+bWFpbkZyYW1lKCkudmlldygpOwotCi0gICAgYXV0byBhcnJheU9mUmVn
aW9ucyA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok92
ZXJsYXlUeXBlczo6UmVnaW9uPjo6Y3JlYXRlKCk7Ci0KLSAgICBjb25zdCBSZW5kZXJSZWdpb25M
aXN0JiByZWdpb25MaXN0ID0gZmxvd1RocmVhZC0+cmVuZGVyUmVnaW9uTGlzdCgpOwotICAgIGZv
ciAoYXV0byYgaXRlclJlZ2lvbiA6IHJlZ2lvbkxpc3QpIHsKLSAgICAgICAgaWYgKCFpdGVyUmVn
aW9uLT5pc1ZhbGlkKCkpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgUmVmUHRyPElu
c3BlY3Rvcjo6UHJvdG9jb2w6Ok92ZXJsYXlUeXBlczo6UmVnaW9uPiByZWdpb25PYmplY3QgPSBi
dWlsZE9iamVjdEZvclJlZ2lvbihtYWluRnJhbWVWaWV3LCBpdGVyUmVnaW9uKTsKLSAgICAgICAg
aWYgKCFyZWdpb25PYmplY3QpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgaWYgKHJl
Z2lvbiA9PSBpdGVyUmVnaW9uKSB7Ci0gICAgICAgICAgICAvLyBMZXQgdGhlIHNjcmlwdCBrbm93
IHRoYXQgdGhpcyBpcyB0aGUgY3VycmVudGx5IGhpZ2hsaWdodGVkIG5vZGUuCi0gICAgICAgICAg
ICByZWdpb25PYmplY3QtPnNldElzSGlnaGxpZ2h0ZWQodHJ1ZSk7Ci0gICAgICAgIH0KLSAgICAg
ICAgYXJyYXlPZlJlZ2lvbnMtPmFkZEl0ZW0oV1RGTW92ZShyZWdpb25PYmplY3QpKTsKLSAgICB9
Ci0KLSAgICByZXR1cm4gYXJyYXlPZlJlZ2lvbnM7Ci19Ci0KIHN0YXRpYyBSZWY8SW5zcGVjdG9y
OjpQcm90b2NvbDo6T3ZlcmxheVR5cGVzOjpTaXplPiBidWlsZE9iamVjdEZvclNpemUoY29uc3Qg
SW50U2l6ZSYgc2l6ZSkKIHsKICAgICByZXR1cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6T3Zlcmxh
eVR5cGVzOjpTaXplOjpjcmVhdGUoKQpAQCAtNjk1LDcgKzYzMSw3IEBAIHN0YXRpYyBSZWZQdHI8
SW5zcGVjdG9yOjpQcm90b2NvbDo6T3ZlcmwKICAgICByZXR1cm4gV1RGTW92ZShzaGFwZU9iamVj
dCk7CiB9CiAKLXN0YXRpYyBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6T3ZlcmxheVR5cGVz
OjpFbGVtZW50RGF0YT4gYnVpbGRPYmplY3RGb3JFbGVtZW50RGF0YShOb2RlKiBub2RlLCBIaWdo
bGlnaHRUeXBlIHR5cGUpCitzdGF0aWMgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok92ZXJs
YXlUeXBlczo6RWxlbWVudERhdGE+IGJ1aWxkT2JqZWN0Rm9yRWxlbWVudERhdGEoTm9kZSogbm9k
ZSwgSGlnaGxpZ2h0VHlwZSkKIHsKICAgICBpZiAoIWlzPEVsZW1lbnQ+KG5vZGUpIHx8ICFub2Rl
LT5kb2N1bWVudCgpLmZyYW1lKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtNzUxLDI3
ICs2ODcsNiBAQCBzdGF0aWMgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok92ZXJsCiAgICAg
ICAgIC5yZWxlYXNlKCk7CiAgICAgZWxlbWVudERhdGEtPnNldFNpemUoV1RGTW92ZShzaXplT2Jq
ZWN0KSk7CiAKLSAgICBpZiAodHlwZSAhPSBIaWdobGlnaHRUeXBlOjpOb2RlTGlzdCAmJiByZW5k
ZXJlci0+aXNSZW5kZXJOYW1lZEZsb3dGcmFnbWVudENvbnRhaW5lcigpKSB7Ci0gICAgICAgIFJl
bmRlck5hbWVkRmxvd0ZyYWdtZW50JiByZWdpb24gPSAqZG93bmNhc3Q8UmVuZGVyQmxvY2tGbG93
PigqcmVuZGVyZXIpLnJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KCk7Ci0gICAgICAgIGlmIChyZWdp
b24uaXNWYWxpZCgpKSB7Ci0gICAgICAgICAgICBSZW5kZXJGbG93VGhyZWFkKiBmbG93VGhyZWFk
ID0gcmVnaW9uLmZsb3dUaHJlYWQoKTsKLSAgICAgICAgICAgIGF1dG8gcmVnaW9uRmxvd0RhdGEg
PSBJbnNwZWN0b3I6OlByb3RvY29sOjpPdmVybGF5VHlwZXM6OlJlZ2lvbkZsb3dEYXRhOjpjcmVh
dGUoKQotICAgICAgICAgICAgICAgIC5zZXROYW1lKGRvd25jYXN0PFJlbmRlck5hbWVkRmxvd1Ro
cmVhZD4oKmZsb3dUaHJlYWQpLmZsb3dUaHJlYWROYW1lKCkpCi0gICAgICAgICAgICAgICAgLnNl
dFJlZ2lvbnMoYnVpbGRPYmplY3RGb3JGbG93UmVnaW9ucygmcmVnaW9uLCBmbG93VGhyZWFkKSkK
LSAgICAgICAgICAgICAgICAucmVsZWFzZSgpOwotICAgICAgICAgICAgZWxlbWVudERhdGEtPnNl
dFJlZ2lvbkZsb3dEYXRhKFdURk1vdmUocmVnaW9uRmxvd0RhdGEpKTsKLSAgICAgICAgfQotICAg
IH0KLQotICAgIFJlbmRlckZsb3dUaHJlYWQqIGNvbnRhaW5pbmdGbG93VGhyZWFkID0gcmVuZGVy
ZXItPmZsb3dUaHJlYWRDb250YWluaW5nQmxvY2soKTsKLSAgICBpZiAoaXM8UmVuZGVyTmFtZWRG
bG93VGhyZWFkPihjb250YWluaW5nRmxvd1RocmVhZCkpIHsKLSAgICAgICAgYXV0byBjb250ZW50
Rmxvd0RhdGEgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpPdmVybGF5VHlwZXM6OkNvbnRlbnRGbG93
RGF0YTo6Y3JlYXRlKCkKLSAgICAgICAgICAgIC5zZXROYW1lKGRvd25jYXN0PFJlbmRlck5hbWVk
Rmxvd1RocmVhZD4oKmNvbnRhaW5pbmdGbG93VGhyZWFkKS5mbG93VGhyZWFkTmFtZSgpKQotICAg
ICAgICAgICAgLnJlbGVhc2UoKTsKLQotICAgICAgICBlbGVtZW50RGF0YS0+c2V0Q29udGVudEZs
b3dEYXRhKFdURk1vdmUoY29udGVudEZsb3dEYXRhKSk7Ci0gICAgfQotCiAgICAgaWYgKGlzPFJl
bmRlckJveD4oKnJlbmRlcmVyKSkgewogICAgICAgICBhdXRvJiByZW5kZXJCb3ggPSBkb3duY2Fz
dDxSZW5kZXJCb3g+KCpyZW5kZXJlcik7CiAgICAgICAgIGlmIChSZWZQdHI8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6T3ZlcmxheVR5cGVzOjpTaGFwZU91dHNpZGVEYXRhPiBzaGFwZU9iamVjdCA9IGJ1
aWxkT2JqZWN0Rm9yU2hhcGVPdXRzaWRlKGNvbnRhaW5pbmdGcmFtZSwgJnJlbmRlckJveCkpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCShyZXZpc2lvbiAyMjIyNTcpCisr
KyBTb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTc1LDcgKzc1LDYgQEAKICNpbmNsdWRlICJSZW5kZXJGcmFtZVNldC5oIgogI2luY2x1ZGUgIlJl
bmRlckxheWVyLmgiCiAjaW5jbHVkZSAiUmVuZGVyTGlzdEJveC5oIgotI2luY2x1ZGUgIlJlbmRl
ck5hbWVkRmxvd1RocmVhZC5oIgogI2luY2x1ZGUgIlJlbmRlclRleHRDb250cm9sU2luZ2xlTGlu
ZS5oIgogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKICNpbmNsdWRlICJSZW5kZXJXaWRnZXQuaCIK
QEAgLTMyOSw4ICszMjgsNiBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaGFuZGxlV2hlZWxFdmVudElu
QXBwCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgICAgICBjdXJyZW50RW5jbG9zaW5n
Qm94ID0gY3VycmVudEVuY2xvc2luZ0JveC0+Y29udGFpbmluZ0Jsb2NrKCk7Ci0gICAgICAgIGlm
IChjdXJyZW50RW5jbG9zaW5nQm94ICYmIGN1cnJlbnRFbmNsb3NpbmdCb3gtPmlzUmVuZGVyTmFt
ZWRGbG93VGhyZWFkKCkpCi0gICAgICAgICAgICBjdXJyZW50RW5jbG9zaW5nQm94ID0gUmVuZGVy
TmFtZWRGbG93VGhyZWFkOjpmcmFnbWVudEZyb21SZW5kZXJCb3hBc1JlbmRlckJsb2NrKGN1cnJl
bnRFbmNsb3NpbmdCb3gsIHJvdW5kZWRJbnRQb2ludCh3aGVlbEV2ZW50LmFic29sdXRlTG9jYXRp
b24oKSksIGluaXRpYWxFbmNsb3NpbmdCb3gpOwogICAgICAgICBpZiAoIWN1cnJlbnRFbmNsb3Np
bmdCb3ggfHwgY3VycmVudEVuY2xvc2luZ0JveC0+aXNSZW5kZXJWaWV3KCkpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0Zs
b3dUaHJlYWRDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvRmxvd1RocmVhZENvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAyMjIyNTcpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvRmxvd1RocmVhZENvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zMCwxMiArMzAsMTAgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJG
bG93VGhyZWFkQ29udHJvbGxlci5oIgogCi0jaW5jbHVkZSAiTmFtZWRGbG93Q29sbGVjdGlvbi5o
IgogI2luY2x1ZGUgIlJlbmRlckZsb3dUaHJlYWQuaCIKICNpbmNsdWRlICJSZW5kZXJMYXllci5o
IgogI2luY2x1ZGUgIlJlbmRlck5hbWVkRmxvd1RocmVhZC5oIgogI2luY2x1ZGUgIlN0eWxlSW5o
ZXJpdGVkRGF0YS5oIgotI2luY2x1ZGUgIldlYktpdE5hbWVkRmxvdy5oIgogI2luY2x1ZGUgPHd0
Zi90ZXh0L0F0b21pY1N0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01MSwzNCAr
NDksNiBAQCBGbG93VGhyZWFkQ29udHJvbGxlcjo6fkZsb3dUaHJlYWRDb250cm9sCiB7CiB9CiAK
LVJlbmRlck5hbWVkRmxvd1RocmVhZCYgRmxvd1RocmVhZENvbnRyb2xsZXI6OmVuc3VyZVJlbmRl
ckZsb3dUaHJlYWRXaXRoTmFtZShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpCi17Ci0gICAgaWYg
KCFtX3JlbmRlck5hbWVkRmxvd1RocmVhZExpc3QpCi0gICAgICAgIG1fcmVuZGVyTmFtZWRGbG93
VGhyZWFkTGlzdCA9IHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyTmFtZWRGbG93VGhyZWFkTGlzdD4o
KTsKLSAgICBlbHNlIHsKLSAgICAgICAgZm9yIChhdXRvJiBmbG93UmVuZGVyZXIgOiAqbV9yZW5k
ZXJOYW1lZEZsb3dUaHJlYWRMaXN0KSB7Ci0gICAgICAgICAgICBpZiAoZmxvd1JlbmRlcmVyLT5m
bG93VGhyZWFkTmFtZSgpID09IG5hbWUpCi0gICAgICAgICAgICAgICAgcmV0dXJuICpmbG93UmVu
ZGVyZXI7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBOYW1lZEZsb3dDb2xsZWN0aW9uJiBuYW1l
ZEZsb3dzID0gbV92aWV3LT5kb2N1bWVudCgpLm5hbWVkRmxvd3MoKTsKLQotICAgIC8vIFNhbml0
eSBjaGVjayBmb3IgdGhlIGFic2VuY2Ugb2YgYSBuYW1lZCBmbG93IGluIHRoZSAiQ1JFQVRFRCIg
c3RhdGUgd2l0aCB0aGUgc2FtZSBuYW1lLgotICAgIEFTU0VSVCghbmFtZWRGbG93cy5mbG93QnlO
YW1lKG5hbWUpKTsKLQotICAgIGF1dG8gZmxvd1JlbmRlcmVyID0gbmV3IFJlbmRlck5hbWVkRmxv
d1RocmVhZChtX3ZpZXctPmRvY3VtZW50KCksIFJlbmRlckZsb3dUaHJlYWQ6OmNyZWF0ZUZsb3dU
aHJlYWRTdHlsZSgmbV92aWV3LT5zdHlsZSgpKSwgbmFtZWRGbG93cy5lbnN1cmVGbG93V2l0aE5h
bWUobmFtZSkpOwotICAgIGZsb3dSZW5kZXJlci0+aW5pdGlhbGl6ZVN0eWxlKCk7Ci0gICAgbV9y
ZW5kZXJOYW1lZEZsb3dUaHJlYWRMaXN0LT5hZGQoZmxvd1JlbmRlcmVyKTsKLQotICAgIC8vIEtl
ZXAgdGhlIGZsb3cgcmVuZGVyZXIgYXMgYSBjaGlsZCBvZiBSZW5kZXJWaWV3LgotICAgIG1fdmll
dy0+YWRkQ2hpbGQoZmxvd1JlbmRlcmVyKTsKLQotICAgIHNldElzUmVuZGVyTmFtZWRGbG93VGhy
ZWFkT3JkZXJEaXJ0eSh0cnVlKTsKLQotICAgIHJldHVybiAqZmxvd1JlbmRlcmVyOwotfQotCiB2
b2lkIEZsb3dUaHJlYWRDb250cm9sbGVyOjpzdHlsZURpZENoYW5nZSgpCiB7CiAgICAgYXV0byYg
dmlld1N0eWxlID0gbV92aWV3LT5zdHlsZSgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0Zsb3dUaHJlYWRDb250cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0Zsb3dUaHJlYWRDb250cm9sbGVyLmgJKHJldmlzaW9uIDIyMjI1NykKKysrIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GbG93VGhyZWFkQ29udHJvbGxlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC01NSw3ICs1NSw2IEBAIHB1YmxpYzoKICAgICAgICAgICAgIG1fdmlldy0+c2V0TmVl
ZHNMYXlvdXQoKTsKICAgICB9CiAKLSAgICBSZW5kZXJOYW1lZEZsb3dUaHJlYWQmIGVuc3VyZVJl
bmRlckZsb3dUaHJlYWRXaXRoTmFtZShjb25zdCBBdG9taWNTdHJpbmcmKTsKICAgICBjb25zdCBS
ZW5kZXJOYW1lZEZsb3dUaHJlYWRMaXN0KiByZW5kZXJOYW1lZEZsb3dUaHJlYWRMaXN0KCkgY29u
c3QgeyByZXR1cm4gbV9yZW5kZXJOYW1lZEZsb3dUaHJlYWRMaXN0LmdldCgpOyB9CiAgICAgYm9v
bCBoYXNSZW5kZXJOYW1lZEZsb3dUaHJlYWRzKCkgY29uc3QgeyByZXR1cm4gbV9yZW5kZXJOYW1l
ZEZsb3dUaHJlYWRMaXN0ICYmICFtX3JlbmRlck5hbWVkRmxvd1RocmVhZExpc3QtPmlzRW1wdHko
KTsgfQogICAgIHZvaWQgbGF5b3V0UmVuZGVyTmFtZWRGbG93VGhyZWFkcygpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlZ2lvbk92ZXJzZXRTdGF0ZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZWdpb25PdmVyc2V0U3RhdGUuaAkocmV2aXNpb24g
MjIyMjU3KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlZ2lvbk92ZXJzZXRTdGF0ZS5o
CShub25leGlzdGVudCkKQEAgLTEsMzAgKzAsMCBAQAotLyoKLSAqIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U
WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICog
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICog
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmls
ZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0
b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotZW51bSBSZWdpb25PdmVyc2V0U3RhdGUgewotICAgIFJlZ2lvblVu
ZGVmaW5lZCwKLSAgICBSZWdpb25FbXB0eSwKLSAgICBSZWdpb25GaXQsCi0gICAgUmVnaW9uT3Zl
cnNldAotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAJKHJldmlzaW9uIDIyMjI1NykKKysrIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xNTIxLDggKzE1MjEsNyBAQCBMYXlvdXRVbml0IFJlbmRlckJsb2NrRmxvdzo6YXBwbHlC
ZWZvcmVCCiAgICAgYm9vbCBjaGVja1BhZ2VCcmVha3MgPSAhY2hlY2tDb2x1bW5CcmVha3MgJiYg
dmlldygpLmxheW91dFN0YXRlKCktPm1fcGFnZUxvZ2ljYWxIZWlnaHQ7IC8vIEZJWE1FOiBPbmNl
IGNvbHVtbnMgY2FuIHByaW50IHdlIGhhdmUgdG8gY2hlY2sgdGhpcy4KICAgICBib29sIGNoZWNr
UmVnaW9uQnJlYWtzID0gZmxvd1RocmVhZCAmJiBmbG93VGhyZWFkLT5pc1JlbmRlck5hbWVkRmxv
d1RocmVhZCgpOwogICAgIGJvb2wgY2hlY2tCZWZvcmVBbHdheXMgPSAoY2hlY2tDb2x1bW5CcmVh
a3MgJiYgY2hpbGQuc3R5bGUoKS5icmVha0JlZm9yZSgpID09IENvbHVtbkJyZWFrQmV0d2VlbikK
LSAgICAgICAgfHwgKGNoZWNrUGFnZUJyZWFrcyAmJiBhbHdheXNQYWdlQnJlYWsoY2hpbGQuc3R5
bGUoKS5icmVha0JlZm9yZSgpKSkKLSAgICAgICAgfHwgKGNoZWNrUmVnaW9uQnJlYWtzICYmIGNo
aWxkLnN0eWxlKCkuYnJlYWtCZWZvcmUoKSA9PSBSZWdpb25CcmVha0JldHdlZW4pOworICAgICAg
ICB8fCAoY2hlY2tQYWdlQnJlYWtzICYmIGFsd2F5c1BhZ2VCcmVhayhjaGlsZC5zdHlsZSgpLmJy
ZWFrQmVmb3JlKCkpKTsKICAgICBpZiAoY2hlY2tCZWZvcmVBbHdheXMgJiYgaW5Ob3JtYWxGbG93
KGNoaWxkKSAmJiBoYXNOZXh0UGFnZShsb2dpY2FsT2Zmc2V0LCBJbmNsdWRlUGFnZUJvdW5kYXJ5
KSkgewogICAgICAgICBpZiAoY2hlY2tDb2x1bW5CcmVha3MpIHsKICAgICAgICAgICAgIGlmIChp
c0luc2lkZU11bHRpY29sRmxvd1RocmVhZCkKQEAgLTE1NDcsOCArMTU0Niw3IEBAIExheW91dFVu
aXQgUmVuZGVyQmxvY2tGbG93OjphcHBseUFmdGVyQnIKICAgICBib29sIGNoZWNrUGFnZUJyZWFr
cyA9ICFjaGVja0NvbHVtbkJyZWFrcyAmJiB2aWV3KCkubGF5b3V0U3RhdGUoKS0+bV9wYWdlTG9n
aWNhbEhlaWdodDsgLy8gRklYTUU6IE9uY2UgY29sdW1ucyBjYW4gcHJpbnQgd2UgaGF2ZSB0byBj
aGVjayB0aGlzLgogICAgIGJvb2wgY2hlY2tSZWdpb25CcmVha3MgPSBmbG93VGhyZWFkICYmIGZs
b3dUaHJlYWQtPmlzUmVuZGVyTmFtZWRGbG93VGhyZWFkKCk7CiAgICAgYm9vbCBjaGVja0FmdGVy
QWx3YXlzID0gKGNoZWNrQ29sdW1uQnJlYWtzICYmIGNoaWxkLnN0eWxlKCkuYnJlYWtBZnRlcigp
ID09IENvbHVtbkJyZWFrQmV0d2VlbikKLSAgICAgICAgfHwgKGNoZWNrUGFnZUJyZWFrcyAmJiBh
bHdheXNQYWdlQnJlYWsoY2hpbGQuc3R5bGUoKS5icmVha0FmdGVyKCkpKQotICAgICAgICB8fCAo
Y2hlY2tSZWdpb25CcmVha3MgJiYgY2hpbGQuc3R5bGUoKS5icmVha0FmdGVyKCkgPT0gUmVnaW9u
QnJlYWtCZXR3ZWVuKTsKKyAgICAgICAgfHwgKGNoZWNrUGFnZUJyZWFrcyAmJiBhbHdheXNQYWdl
QnJlYWsoY2hpbGQuc3R5bGUoKS5icmVha0FmdGVyKCkpKTsKICAgICBpZiAoY2hlY2tBZnRlckFs
d2F5cyAmJiBpbk5vcm1hbEZsb3coY2hpbGQpICYmIGhhc05leHRQYWdlKGxvZ2ljYWxPZmZzZXQs
IEluY2x1ZGVQYWdlQm91bmRhcnkpKSB7CiAgICAgICAgIExheW91dFVuaXQgbWFyZ2luT2Zmc2V0
ID0gbWFyZ2luSW5mby5jYW5Db2xsYXBzZVdpdGhNYXJnaW5CZWZvcmUoKSA/IExheW91dFVuaXQo
KSA6IG1hcmdpbkluZm8ubWFyZ2luKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJOYW1lZEZsb3dGcmFnbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd0ZyYWdtZW50LmNwcAkocmV2aXNpb24gMjIyMjU3
KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd0ZyYWdtZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtODcsMTAgKzg3LDggQEAgdm9pZCBSZW5kZXJOYW1lZEZsb3dG
cmFnbWVudDo6c3R5bGVEaWRDaAogICAgICAgICBzZXROZWVkc0xheW91dChNYXJrT25seVRoaXMp
OwogfQogCi12b2lkIFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50OjpnZXRSYW5nZXMoVmVjdG9yPFJl
ZlB0cjxSYW5nZT4+JiByYW5nZU9iamVjdHMpIGNvbnN0Cit2b2lkIFJlbmRlck5hbWVkRmxvd0Zy
YWdtZW50OjpnZXRSYW5nZXMoVmVjdG9yPFJlZlB0cjxSYW5nZT4+JikgY29uc3QKIHsKLSAgICBj
b25zdCBSZW5kZXJOYW1lZEZsb3dUaHJlYWQmIG5hbWVkRmxvdyA9IHZpZXcoKS5mbG93VGhyZWFk
Q29udHJvbGxlcigpLmVuc3VyZVJlbmRlckZsb3dUaHJlYWRXaXRoTmFtZShzdHlsZSgpLnJlZ2lv
blRocmVhZCgpKTsKLSAgICBuYW1lZEZsb3cuZ2V0UmFuZ2VzKHJhbmdlT2JqZWN0cywgdGhpcyk7
CiB9CiAKIGJvb2wgUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQ6OnNob3VsZEhhdmVBdXRvTG9naWNh
bEhlaWdodCgpIGNvbnN0CkBAIC0yNjIsMTAgKzI2MCw4IEBAIHZvaWQgUmVuZGVyTmFtZWRGbG93
RnJhZ21lbnQ6OmxheW91dEJsb2MKICAgICBSZW5kZXJSZWdpb246OmxheW91dEJsb2NrKHJlbGF5
b3V0Q2hpbGRyZW4pOwogCiAgICAgaWYgKGlzVmFsaWQoKSkgewotICAgICAgICBpZiAobV9mbG93
VGhyZWFkLT5pbk92ZXJmbG93TGF5b3V0UGhhc2UoKSB8fCBtX2Zsb3dUaHJlYWQtPmluRmluYWxM
YXlvdXRQaGFzZSgpKSB7CisgICAgICAgIGlmIChtX2Zsb3dUaHJlYWQtPmluT3ZlcmZsb3dMYXlv
dXRQaGFzZSgpIHx8IG1fZmxvd1RocmVhZC0+aW5GaW5hbExheW91dFBoYXNlKCkpCiAgICAgICAg
ICAgICBjb21wdXRlT3ZlcmZsb3dGcm9tRmxvd1RocmVhZCgpOwotICAgICAgICAgICAgdXBkYXRl
T3ZlcnNldFN0YXRlKCk7Ci0gICAgICAgIH0KIAogICAgICAgICBpZiAoaGFzQXV0b0xvZ2ljYWxI
ZWlnaHQoKSAmJiBtX2Zsb3dUaHJlYWQtPmluTWVhc3VyZUNvbnRlbnRMYXlvdXRQaGFzZSgpKSB7
CiAgICAgICAgICAgICBtX2Zsb3dUaHJlYWQtPmludmFsaWRhdGVSZWdpb25zKCk7CkBAIC0yOTAs
NzEgKzI4NiwxOSBAQCB2b2lkIFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50OjppbnZhbGlkYXRlCiAg
ICAgfQogfQogCi12b2lkIFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50OjpzZXRSZWdpb25PdmVyc2V0
U3RhdGUoUmVnaW9uT3ZlcnNldFN0YXRlIHN0YXRlKQotewotICAgIEFTU0VSVChnZW5lcmF0aW5n
RWxlbWVudCgpKTsKLQotICAgIGdlbmVyYXRpbmdFbGVtZW50KCktPnNldFJlZ2lvbk92ZXJzZXRT
dGF0ZShzdGF0ZSk7Ci19Ci0KLVJlZ2lvbk92ZXJzZXRTdGF0ZSBSZW5kZXJOYW1lZEZsb3dGcmFn
bWVudDo6cmVnaW9uT3ZlcnNldFN0YXRlKCkgY29uc3QKLXsKLSAgICBBU1NFUlQoZ2VuZXJhdGlu
Z0VsZW1lbnQoKSk7Ci0KLSAgICBpZiAoIWlzVmFsaWQoKSkKLSAgICAgICAgcmV0dXJuIFJlZ2lv
blVuZGVmaW5lZDsKLQotICAgIHJldHVybiBnZW5lcmF0aW5nRWxlbWVudCgpLT5yZWdpb25PdmVy
c2V0U3RhdGUoKTsKLX0KLQotdm9pZCBSZW5kZXJOYW1lZEZsb3dGcmFnbWVudDo6dXBkYXRlT3Zl
cnNldFN0YXRlKCkKLXsKLSAgICBBU1NFUlQoaXNWYWxpZCgpKTsKLQotICAgIFJlbmRlck5hbWVk
Rmxvd1RocmVhZCogZmxvd1RocmVhZCA9IG5hbWVkRmxvd1RocmVhZCgpOwotICAgIEFTU0VSVChm
bG93VGhyZWFkICYmIChmbG93VGhyZWFkLT5pbk92ZXJmbG93TGF5b3V0UGhhc2UoKSB8fCBmbG93
VGhyZWFkLT5pbkZpbmFsTGF5b3V0UGhhc2UoKSkpOwotCi0gICAgTGF5b3V0VW5pdCBmbG93Q29u
dGVudEJvdHRvbSA9IGZsb3dUaHJlYWQtPmZsb3dDb250ZW50Qm90dG9tKCk7Ci0gICAgYm9vbCBp
c0hvcml6b250YWxXcml0aW5nTW9kZSA9IGZsb3dUaHJlYWQtPmlzSG9yaXpvbnRhbFdyaXRpbmdN
b2RlKCk7Ci0KLSAgICBMYXlvdXRVbml0IGZsb3dNaW4gPSBmbG93Q29udGVudEJvdHRvbSAtIChp
c0hvcml6b250YWxXcml0aW5nTW9kZSA/IGZsb3dUaHJlYWRQb3J0aW9uUmVjdCgpLnkoKSA6IGZs
b3dUaHJlYWRQb3J0aW9uUmVjdCgpLngoKSk7Ci0gICAgTGF5b3V0VW5pdCBmbG93TWF4ID0gZmxv
d0NvbnRlbnRCb3R0b20gLSAoaXNIb3Jpem9udGFsV3JpdGluZ01vZGUgPyBmbG93VGhyZWFkUG9y
dGlvblJlY3QoKS5tYXhZKCkgOiBmbG93VGhyZWFkUG9ydGlvblJlY3QoKS5tYXhYKCkpOwotCi0g
ICAgUmVnaW9uT3ZlcnNldFN0YXRlIHByZXZpb3VzU3RhdGUgPSByZWdpb25PdmVyc2V0U3RhdGUo
KTsKLSAgICBSZWdpb25PdmVyc2V0U3RhdGUgc3RhdGUgPSBSZWdpb25GaXQ7Ci0gICAgaWYgKGZs
b3dNaW4gPD0gMCkKLSAgICAgICAgc3RhdGUgPSBSZWdpb25FbXB0eTsKLSAgICBpZiAoZmxvd01h
eCA+IDAgJiYgaXNMYXN0UmVnaW9uKCkpCi0gICAgICAgIHN0YXRlID0gUmVnaW9uT3ZlcnNldDsK
LSAgICAKLSAgICBzZXRSZWdpb25PdmVyc2V0U3RhdGUoc3RhdGUpOwotCi0gICAgLy8gRGV0ZXJt
aW5lIHdoZXRoZXIgdGhlIE5hbWVkRmxvdyBvYmplY3Qgc2hvdWxkIGRpc3BhdGNoIGEgcmVnaW9u
T3ZlcnNldENoYW5nZSBldmVudAotICAgIGlmIChwcmV2aW91c1N0YXRlICE9IHN0YXRlKQotICAg
ICAgICBmbG93VGhyZWFkLT5zZXREaXNwYXRjaFJlZ2lvbk92ZXJzZXRDaGFuZ2VFdmVudCh0cnVl
KTsKLX0KLQogdm9pZCBSZW5kZXJOYW1lZEZsb3dGcmFnbWVudDo6Y2hlY2tSZWdpb25TdHlsZSgp
CiB7CiAgICAgQVNTRVJUKGlzVmFsaWQoKSk7CiAKICAgICBib29sIGN1c3RvbVJlZ2lvblN0eWxl
ID0gZmFsc2U7CiAKLSAgICAvLyBGSVhNRTogUmVnaW9uIHN0eWxpbmcgZG9lc24ndCB3b3JrIGZv
ciBwc2V1ZG8gZWxlbWVudHMuCi0gICAgaWYgKCFpc1BzZXVkb0VsZW1lbnQoKSkKLSAgICAgICAg
Y3VzdG9tUmVnaW9uU3R5bGUgPSBnZW5lcmF0aW5nRWxlbWVudCgpLT5zdHlsZVJlc29sdmVyKCku
Y2hlY2tSZWdpb25TdHlsZShnZW5lcmF0aW5nRWxlbWVudCgpKTsKICAgICBzZXRIYXNDdXN0b21S
ZWdpb25TdHlsZShjdXN0b21SZWdpb25TdHlsZSk7CiAgICAgZG93bmNhc3Q8UmVuZGVyTmFtZWRG
bG93VGhyZWFkPigqbV9mbG93VGhyZWFkKS5jaGVja1JlZ2lvbnNXaXRoU3R5bGluZygpOwogfQog
Ci1zdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50Ojpj
b21wdXRlU3R5bGVJblJlZ2lvbihSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgY29uc3QgUmVuZGVy
U3R5bGUmIHBhcmVudFN0eWxlKSBjb25zdAorc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBS
ZW5kZXJOYW1lZEZsb3dGcmFnbWVudDo6Y29tcHV0ZVN0eWxlSW5SZWdpb24oUmVuZGVyRWxlbWVu
dCYsIGNvbnN0IFJlbmRlclN0eWxlJikgY29uc3QKIHsKLSAgICBBU1NFUlQoIXJlbmRlcmVyLmlz
QW5vbnltb3VzKCkpOwotCi0gICAgLy8gRklYTUU6IFJlZ2lvbiBzdHlsaW5nIGZhaWxzIGZvciBw
c2V1ZG8tZWxlbWVudHMgYmVjYXVzZSB0aGUgcmVuZGVyZXJzIGRvbid0IGhhdmUgYSBub2RlLgot
ICAgIGF1dG8gcmVuZGVyT2JqZWN0UmVnaW9uU3R5bGUgPSByZW5kZXJlci5lbGVtZW50KCktPnN0
eWxlUmVzb2x2ZXIoKS5zdHlsZUZvckVsZW1lbnQoKnJlbmRlcmVyLmVsZW1lbnQoKSwgJnBhcmVu
dFN0eWxlLCBudWxscHRyLCBNYXRjaEFsbFJ1bGVzLCB0aGlzKS5yZW5kZXJTdHlsZTsKLQotICAg
IHJldHVybiByZW5kZXJPYmplY3RSZWdpb25TdHlsZTsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0K
IAogdm9pZCBSZW5kZXJOYW1lZEZsb3dGcmFnbWVudDo6Y29tcHV0ZUNoaWxkcmVuU3R5bGVJblJl
Z2lvbihSZW5kZXJFbGVtZW50JiByZW5kZXJlcikKQEAgLTQxMiw0MCArMzU2LDYgQEAgdm9pZCBS
ZW5kZXJOYW1lZEZsb3dGcmFnbWVudDo6Y2xlYXJPYmplYwogCiB2b2lkIFJlbmRlck5hbWVkRmxv
d0ZyYWdtZW50OjpzZXRSZWdpb25PYmplY3RzUmVnaW9uU3R5bGUoKQogewotICAgIGlmICghaGFz
Q3VzdG9tUmVnaW9uU3R5bGUoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gU3RhcnQgZnJv
bSBjb250ZW50IG5vZGVzIGFuZCByZWN1cnNpdmVseSBjb21wdXRlIHRoZSBzdHlsZSBpbiByZWdp
b24gZm9yIHRoZSByZW5kZXIgb2JqZWN0cyBiZWxvdy4KLSAgICAvLyBJZiB0aGUgc3R5bGUgaW4g
cmVnaW9uIHdhcyBhbHJlYWR5IGNvbXB1dGVkLCB1c2VkIHRoYXQgc3R5bGUgaW5zdGVhZCBvZiBj
b21wdXRpbmcgYSBuZXcgb25lLgotICAgIGNvbnN0IFJlbmRlck5hbWVkRmxvd1RocmVhZCYgbmFt
ZWRGbG93ID0gdmlldygpLmZsb3dUaHJlYWRDb250cm9sbGVyKCkuZW5zdXJlUmVuZGVyRmxvd1Ro
cmVhZFdpdGhOYW1lKHN0eWxlKCkucmVnaW9uVGhyZWFkKCkpOwotICAgIGNvbnN0IE5hbWVkRmxv
d0NvbnRlbnRFbGVtZW50cyYgY29udGVudEVsZW1lbnRzID0gbmFtZWRGbG93LmNvbnRlbnRFbGVt
ZW50cygpOwotCi0gICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDogY29udGVudEVsZW1lbnRz
KSB7Ci0gICAgICAgIC8vIFRoZSBsaXN0IG9mIGNvbnRlbnQgbm9kZXMgY29udGFpbnMgYWxzbyB0
aGUgbm9kZXMgd2l0aCBkaXNwbGF5Om5vbmUuCi0gICAgICAgIGlmICghZWxlbWVudC0+cmVuZGVy
ZXIoKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBhdXRvJiByZW5kZXJlciA9ICpl
bGVtZW50LT5yZW5kZXJlcigpOwotCi0gICAgICAgIC8vIElmIHRoZSBjb250ZW50IG5vZGUgZG9l
cyBub3QgZmxvdyBhbnkgb2YgaXRzIGNoaWxkcmVuIGluIHRoaXMgcmVnaW9uLAotICAgICAgICAv
LyB3ZSBkbyBub3QgY29tcHV0ZSBhbnkgc3R5bGUgZm9yIHRoZW0gaW4gdGhpcyByZWdpb24uCi0g
ICAgICAgIGlmICghZmxvd1RocmVhZCgpLT5vYmplY3RJbkZsb3dSZWdpb24oJnJlbmRlcmVyLCB0
aGlzKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIC8vIElmIHRoZSBvYmplY3Qg
aGFzIHN0eWxlIGluIHJlZ2lvbiwgdXNlIHRoYXQgaW5zdGVhZCBvZiBjb21wdXRpbmcgYSBuZXcg
b25lLgotICAgICAgICBhdXRvIGl0ID0gbV9yZW5kZXJlclJlZ2lvblN0eWxlLmZpbmQoJnJlbmRl
cmVyKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBvYmplY3RTdHlsZUlu
UmVnaW9uOwotICAgICAgICBib29sIG9iamVjdFJlZ2lvblN0eWxlQ2FjaGVkID0gZmFsc2U7Ci0g
ICAgICAgIGlmIChpdCAhPSBtX3JlbmRlcmVyUmVnaW9uU3R5bGUuZW5kKCkpIHsKLSAgICAgICAg
ICAgIG9iamVjdFN0eWxlSW5SZWdpb24gPSBSZW5kZXJTdHlsZTo6Y2xvbmVQdHIoKml0LT52YWx1
ZS5zdHlsZSk7Ci0gICAgICAgICAgICBBU1NFUlQoaXQtPnZhbHVlLmNhY2hlZCk7Ci0gICAgICAg
ICAgICBvYmplY3RSZWdpb25TdHlsZUNhY2hlZCA9IHRydWU7Ci0gICAgICAgIH0gZWxzZQotICAg
ICAgICAgICAgb2JqZWN0U3R5bGVJblJlZ2lvbiA9IGNvbXB1dGVTdHlsZUluUmVnaW9uKHJlbmRl
cmVyLCBzdHlsZSgpKTsKLQotICAgICAgICBzZXRSZW5kZXJlclN0eWxlSW5SZWdpb24ocmVuZGVy
ZXIsIFdURk1vdmUob2JqZWN0U3R5bGVJblJlZ2lvbiksIG9iamVjdFJlZ2lvblN0eWxlQ2FjaGVk
KTsKLQotICAgICAgICBjb21wdXRlQ2hpbGRyZW5TdHlsZUluUmVnaW9uKHJlbmRlcmVyKTsKLSAg
ICB9CiB9CiAKIHZvaWQgUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQ6OnJlc3RvcmVSZWdpb25PYmpl
Y3RzT3JpZ2luYWxTdHlsZSgpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TmFtZWRGbG93RnJhZ21lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQuaAkocmV2aXNpb24gMjIyMjU3KQorKysgU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd0ZyYWdtZW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEwNSw3ICsxMDUsNiBAQCBwdWJsaWM6CiAKICAgICBib29sIGhhc0NvbXB1dGVkQXV0
b0hlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1faGFzQ29tcHV0ZWRBdXRvSGVpZ2h0OyB9CiAKLSAg
ICBSZWdpb25PdmVyc2V0U3RhdGUgcmVnaW9uT3ZlcnNldFN0YXRlKCkgY29uc3Q7CiAKICAgICB2
b2lkIGF0dGFjaFJlZ2lvbigpIG92ZXJyaWRlOwogICAgIHZvaWQgZGV0YWNoUmVnaW9uKCkgb3Zl
cnJpZGU7CkBAIC0xMzYsOSArMTM1LDYgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgc2hvdWxkSGF2
ZUF1dG9Mb2dpY2FsSGVpZ2h0KCkgY29uc3Q7CiAKLSAgICB2b2lkIHVwZGF0ZU92ZXJzZXRTdGF0
ZSgpOwotICAgIHZvaWQgc2V0UmVnaW9uT3ZlcnNldFN0YXRlKFJlZ2lvbk92ZXJzZXRTdGF0ZSk7
Ci0KICAgICB2b2lkIGxheW91dEJsb2NrKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgTGF5b3V0VW5p
dCBwYWdlTG9naWNhbEhlaWdodCA9IDApIG92ZXJyaWRlOwogCiAgICAgc3RydWN0IE9iamVjdFJl
Z2lvblN0eWxlSW5mbyB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFt
ZWRGbG93VGhyZWFkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTmFtZWRGbG93VGhyZWFkLmNwcAkocmV2aXNpb24gMjIyMjU3KQorKysgU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd1RocmVhZC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQxLDE1ICs0MSwxMyBAQAogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKICNpbmNsdWRlICJT
aGFkb3dSb290LmgiCiAjaW5jbHVkZSAiVGV4dC5oIgotI2luY2x1ZGUgIldlYktpdE5hbWVkRmxv
dy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlbmRlck5hbWVkRmxvd1RocmVhZDo6UmVu
ZGVyTmFtZWRGbG93VGhyZWFkKERvY3VtZW50JiBkb2N1bWVudCwgUmVuZGVyU3R5bGUmJiBzdHls
ZSwgUmVmPFdlYktpdE5hbWVkRmxvdz4mJiBuYW1lZEZsb3cpCitSZW5kZXJOYW1lZEZsb3dUaHJl
YWQ6OlJlbmRlck5hbWVkRmxvd1RocmVhZChEb2N1bWVudCYgZG9jdW1lbnQsIFJlbmRlclN0eWxl
JiYgc3R5bGUpCiAgICAgOiBSZW5kZXJGbG93VGhyZWFkKGRvY3VtZW50LCBXVEZNb3ZlKHN0eWxl
KSkKICAgICAsIG1faGFzUmVnaW9uc1dpdGhTdHlsaW5nKGZhbHNlKQogICAgICwgbV9kaXNwYXRj
aFJlZ2lvbk92ZXJzZXRDaGFuZ2VFdmVudChmYWxzZSkKLSAgICAsIG1fbmFtZWRGbG93KFdURk1v
dmUobmFtZWRGbG93KSkKICAgICAsIG1fcmVnaW9uT3ZlcnNldENoYW5nZUV2ZW50VGltZXIoKnRo
aXMsICZSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6OnJlZ2lvbk92ZXJzZXRDaGFuZ2VFdmVudFRpbWVy
RmlyZWQpCiB7CiB9CkBAIC03OCwxNSArNzYsNiBAQCBjb25zdCBjaGFyKiBSZW5kZXJOYW1lZEZs
b3dUaHJlYWQ6OnJlbmRlCiAgICAgCiB2b2lkIFJlbmRlck5hbWVkRmxvd1RocmVhZDo6Y2xlYXJD
b250ZW50RWxlbWVudHMoKQogewotICAgIGZvciAoYXV0byYgY29udGVudEVsZW1lbnQgOiBtX2Nv
bnRlbnRFbGVtZW50cykgewotICAgICAgICBBU1NFUlQoY29udGVudEVsZW1lbnQpOwotICAgICAg
ICBBU1NFUlQoY29udGVudEVsZW1lbnQtPmlzTmFtZWRGbG93Q29udGVudEVsZW1lbnQoKSk7Ci0g
ICAgICAgIEFTU0VSVCgmY29udGVudEVsZW1lbnQtPmRvY3VtZW50KCkgPT0gJmRvY3VtZW50KCkp
OwotICAgICAgICAKLSAgICAgICAgY29udGVudEVsZW1lbnQtPmNsZWFySXNOYW1lZEZsb3dDb250
ZW50RWxlbWVudCgpOwotICAgIH0KLSAgICAKLSAgICBtX2NvbnRlbnRFbGVtZW50cy5jbGVhcigp
OwogfQogCiB2b2lkIFJlbmRlck5hbWVkRmxvd1RocmVhZDo6dXBkYXRlV3JpdGluZ01vZGUoKQpA
QCAtNDY3LDUxICs0NTYsMjIgQEAgdm9pZCBSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6OnB1c2hEZXBl
bmRlbgogLy8gVGhlIGNvbnRlbnQgbm9kZXMgbGlzdCBjb250YWlucyB0aG9zZSBub2RlcyB3aXRo
IC13ZWJraXQtZmxvdy1pbnRvOiBmbG93LgogLy8gQW4gZWxlbWVudCB3aXRoIGRpc3BsYXk6bm9u
ZSBzaG91bGQgYWxzbyBiZSBsaXN0ZWQgYW1vbmcgdGhvc2Ugbm9kZXMuCiAvLyBUaGUgbGlzdCBv
ZiBub2RlcyBpcyBvcmRlcmVkLgotdm9pZCBSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6OnJlZ2lzdGVy
TmFtZWRGbG93Q29udGVudEVsZW1lbnQoRWxlbWVudCYgY29udGVudEVsZW1lbnQpCit2b2lkIFJl
bmRlck5hbWVkRmxvd1RocmVhZDo6cmVnaXN0ZXJOYW1lZEZsb3dDb250ZW50RWxlbWVudChFbGVt
ZW50JikKIHsKLSAgICBBU1NFUlQoJmNvbnRlbnRFbGVtZW50LmRvY3VtZW50KCkgPT0gJmRvY3Vt
ZW50KCkpOwotCi0gICAgY29udGVudEVsZW1lbnQuc2V0SXNOYW1lZEZsb3dDb250ZW50RWxlbWVu
dCgpOwotCi0gICAgcmVzZXRNYXJrRm9yRGVzdHJ1Y3Rpb24oKTsKLQotICAgIC8vIEZpbmQgdGhl
IGZpcnN0IGNvbnRlbnQgbm9kZSBmb2xsb3dpbmcgdGhlIG5ldyBjb250ZW50IG5vZGUuCi0gICAg
Zm9yIChhdXRvJiBlbGVtZW50IDogbV9jb250ZW50RWxlbWVudHMpIHsKLSAgICAgICAgdW5zaWdu
ZWQgc2hvcnQgcG9zaXRpb24gPSBjb250ZW50RWxlbWVudC5jb21wYXJlRG9jdW1lbnRQb3NpdGlv
bigqZWxlbWVudCk7Ci0gICAgICAgIGlmIChwb3NpdGlvbiAmIE5vZGU6OkRPQ1VNRU5UX1BPU0lU
SU9OX0ZPTExPV0lORykgewotICAgICAgICAgICAgbV9jb250ZW50RWxlbWVudHMuaW5zZXJ0QmVm
b3JlKGVsZW1lbnQsICZjb250ZW50RWxlbWVudCk7Ci0gICAgICAgICAgICBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmRpZFJlZ2lzdGVyTmFtZWRGbG93Q29udGVudEVsZW1lbnQoZG9jdW1lbnQo
KSwgbmFtZWRGbG93KCksIGNvbnRlbnRFbGVtZW50LCBlbGVtZW50KTsKLSAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgfQotICAgIH0KLQotICAgIG1fY29udGVudEVsZW1lbnRzLmFkZCgmY29u
dGVudEVsZW1lbnQpOwotICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVnaXN0ZXJO
YW1lZEZsb3dDb250ZW50RWxlbWVudChkb2N1bWVudCgpLCBuYW1lZEZsb3coKSwgY29udGVudEVs
ZW1lbnQpOwogfQogCi12b2lkIFJlbmRlck5hbWVkRmxvd1RocmVhZDo6dW5yZWdpc3Rlck5hbWVk
Rmxvd0NvbnRlbnRFbGVtZW50KEVsZW1lbnQmIGNvbnRlbnRFbGVtZW50KQordm9pZCBSZW5kZXJO
YW1lZEZsb3dUaHJlYWQ6OnVucmVnaXN0ZXJOYW1lZEZsb3dDb250ZW50RWxlbWVudChFbGVtZW50
JikKIHsKLSAgICBBU1NFUlQobV9jb250ZW50RWxlbWVudHMuY29udGFpbnMoJmNvbnRlbnRFbGVt
ZW50KSk7Ci0gICAgQVNTRVJUKGNvbnRlbnRFbGVtZW50LmlzTmFtZWRGbG93Q29udGVudEVsZW1l
bnQoKSk7Ci0gICAgQVNTRVJUKCZjb250ZW50RWxlbWVudC5kb2N1bWVudCgpID09ICZkb2N1bWVu
dCgpKTsKLQotICAgIGNvbnRlbnRFbGVtZW50LmNsZWFySXNOYW1lZEZsb3dDb250ZW50RWxlbWVu
dCgpOwotICAgIG1fY29udGVudEVsZW1lbnRzLnJlbW92ZSgmY29udGVudEVsZW1lbnQpOwotCi0g
ICAgaWYgKGNhbkJlRGVzdHJveWVkKCkpCi0gICAgICAgIHNldE1hcmtGb3JEZXN0cnVjdGlvbigp
OwotCi0gICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRVbnJlZ2lzdGVyTmFtZWRGbG93
Q29udGVudEVsZW1lbnQoZG9jdW1lbnQoKSwgbmFtZWRGbG93KCksIGNvbnRlbnRFbGVtZW50KTsK
IH0KIAotYm9vbCBSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6Omhhc0NvbnRlbnRFbGVtZW50KEVsZW1l
bnQmIGNvbnRlbnRFbGVtZW50KSBjb25zdAorYm9vbCBSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6Omhh
c0NvbnRlbnRFbGVtZW50KEVsZW1lbnQmKSBjb25zdAogewotICAgIHJldHVybiBtX2NvbnRlbnRF
bGVtZW50cy5jb250YWlucygmY29udGVudEVsZW1lbnQpOworICAgIHJldHVybiBmYWxzZTsKIH0K
ICAgICAKIGNvbnN0IEF0b21pY1N0cmluZyYgUmVuZGVyTmFtZWRGbG93VGhyZWFkOjpmbG93VGhy
ZWFkTmFtZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG5hbWVkRmxvdygpLm5hbWUoKTsKKyAgICBy
ZXR1cm4gbnVsbEF0b20oKTsKIH0KIAogYm9vbCBSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6OmlzQ2hp
bGRBbGxvd2VkKGNvbnN0IFJlbmRlck9iamVjdCYgY2hpbGQsIGNvbnN0IFJlbmRlclN0eWxlJiBz
dHlsZSkgY29uc3QKQEAgLTUzMCw0MyArNDkwLDIzIEBAIGJvb2wgUmVuZGVyTmFtZWRGbG93VGhy
ZWFkOjppc0NoaWxkQWxsb3cKIAogdm9pZCBSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6OmRpc3BhdGNo
UmVnaW9uT3ZlcnNldENoYW5nZUV2ZW50SWZOZWVkZWQoKQogewotICAgIGlmICghbV9kaXNwYXRj
aFJlZ2lvbk92ZXJzZXRDaGFuZ2VFdmVudCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9kaXNw
YXRjaFJlZ2lvbk92ZXJzZXRDaGFuZ2VFdmVudCA9IGZhbHNlOwotICAgIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZGlkQ2hhbmdlUmVnaW9uT3ZlcnNldChkb2N1bWVudCgpLCBuYW1lZEZsb3co
KSk7Ci0gICAgCi0gICAgaWYgKCFtX3JlZ2lvbk92ZXJzZXRDaGFuZ2VFdmVudFRpbWVyLmlzQWN0
aXZlKCkgJiYgbmFtZWRGbG93KCkuaGFzRXZlbnRMaXN0ZW5lcnMoKSkKLSAgICAgICAgbV9yZWdp
b25PdmVyc2V0Q2hhbmdlRXZlbnRUaW1lci5zdGFydE9uZVNob3QoMF9zKTsKIH0KIAogdm9pZCBS
ZW5kZXJOYW1lZEZsb3dUaHJlYWQ6OnJlZ2lvbk92ZXJzZXRDaGFuZ2VFdmVudFRpbWVyRmlyZWQo
KQogewotICAgIG5hbWVkRmxvdygpLmRpc3BhdGNoUmVnaW9uT3ZlcnNldENoYW5nZUV2ZW50KCk7
CiB9CiAKIHZvaWQgUmVuZGVyTmFtZWRGbG93VGhyZWFkOjpzZXRNYXJrRm9yRGVzdHJ1Y3Rpb24o
KQogewotICAgIGlmIChuYW1lZEZsb3coKS5mbG93U3RhdGUoKSA9PSBXZWJLaXROYW1lZEZsb3c6
OkZsb3dTdGF0ZU51bGwpCi0gICAgICAgIHJldHVybjsKLQotICAgIG5hbWVkRmxvdygpLnNldFJl
bmRlcmVyKG51bGxwdHIpOwotICAgIC8vIEFmdGVyIHRoaXMgY2FsbCBlbmRzLCB0aGUgcmVuZGVy
ZXIgY2FuIGJlIHNhZmVseSBkZXN0cm95ZWQuCi0gICAgLy8gVGhlIE5hbWVkRmxvdyBvYmplY3Qg
bWF5IG91dGxpdmUgaXRzIHJlbmRlcmVyIGlmIGl0J3MgcmVmZXJlbmNlZCBmcm9tIGEgc2NyaXB0
IGFuZCBtYXkgYmUgcmVhdGFjaGVkIHRvIG9uZSBpZiB0aGUgbmFtZWQgZmxvdyBpcyByZWNyZWF0
ZWQgaW4gdGhlIHN0eWxlc2hlZXQuCiB9CiAKIHZvaWQgUmVuZGVyTmFtZWRGbG93VGhyZWFkOjpy
ZXNldE1hcmtGb3JEZXN0cnVjdGlvbigpCiB7Ci0gICAgaWYgKG5hbWVkRmxvdygpLmZsb3dTdGF0
ZSgpID09IFdlYktpdE5hbWVkRmxvdzo6Rmxvd1N0YXRlQ3JlYXRlZCkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgbmFtZWRGbG93KCkuc2V0UmVuZGVyZXIodGhpcyk7CiB9CiAKIGJvb2wgUmVuZGVy
TmFtZWRGbG93VGhyZWFkOjppc01hcmtlZEZvckRlc3RydWN0aW9uKCkgY29uc3QKIHsKLSAgICAv
LyBGbG93IHRocmVhZHMgaW4gdGhlICJOVUxMIiBzdGF0ZSBjYW4gYmUgZGVzdHJveWVkLgotICAg
IHJldHVybiBuYW1lZEZsb3coKS5mbG93U3RhdGUoKSA9PSBXZWJLaXROYW1lZEZsb3c6OkZsb3dT
dGF0ZU51bGw7CisgICAgcmV0dXJuIGZhbHNlOwogfQogCiBzdGF0aWMgYm9vbCBpc0NvbnRhaW5l
ZEluRWxlbWVudHMoY29uc3QgVmVjdG9yPEVsZW1lbnQqPiYgb3RoZXJzLCBFbGVtZW50KiBlbGVt
ZW50KQpAQCAtNTkwLDggKzUzMCw2IEBAIHN0YXRpYyBib29sIGJveEludGVyc2VjdHNSZWdpb24o
TGF5b3V0VW4KIC8vIFJldHJpZXZlIHRoZSBuZXh0IG5vZGUgdG8gYmUgdmlzaXRlZCB3aGlsZSBj
b21wdXRpbmcgdGhlIHJhbmdlcyBpbnNpZGUgYSByZWdpb24uCiBzdGF0aWMgTm9kZSogbmV4dE5v
ZGVJbnNpZGVDb250ZW50RWxlbWVudChjb25zdCBOb2RlJiBjdXJyTm9kZSwgY29uc3QgRWxlbWVu
dCogY29udGVudEVsZW1lbnQpCiB7Ci0gICAgQVNTRVJUKGNvbnRlbnRFbGVtZW50ICYmIGNvbnRl
bnRFbGVtZW50LT5pc05hbWVkRmxvd0NvbnRlbnRFbGVtZW50KCkpOwotCiAgICAgaWYgKGN1cnJO
b2RlLnJlbmRlcmVyKCkgJiYgY3Vyck5vZGUucmVuZGVyZXIoKS0+aXNTVkdSb290KCkpCiAgICAg
ICAgIHJldHVybiBOb2RlVHJhdmVyc2FsOjpuZXh0U2tpcHBpbmdDaGlsZHJlbihjdXJyTm9kZSwg
Y29udGVudEVsZW1lbnQpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TmFtZWRGbG93VGhyZWFkLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlck5hbWVkRmxvd1RocmVhZC5oCShyZXZpc2lvbiAyMjIyNTcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93VGhyZWFkLmgJKHdvcmtpbmcgY29weSkKQEAg
LTM2LDcgKzM2LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBOb2RlOwogY2xhc3Mg
UmVuZGVyTmFtZWRGbG93VGhyZWFkOwotY2xhc3MgV2ViS2l0TmFtZWRGbG93OwogCiB0eXBlZGVm
IExpc3RIYXNoU2V0PFJlbmRlck5hbWVkRmxvd1RocmVhZCo+IFJlbmRlck5hbWVkRmxvd1RocmVh
ZExpc3Q7CiB0eXBlZGVmIEhhc2hDb3VudGVkU2V0PFJlbmRlck5hbWVkRmxvd1RocmVhZCo+IFJl
bmRlck5hbWVkRmxvd1RocmVhZENvdW50ZWRTZXQ7CkBAIC00NCw3ICs0Myw3IEBAIHR5cGVkZWYg
TGlzdEhhc2hTZXQ8RWxlbWVudCo+IE5hbWVkRmxvd0MKIAogY2xhc3MgUmVuZGVyTmFtZWRGbG93
VGhyZWFkIGZpbmFsIDogcHVibGljIFJlbmRlckZsb3dUaHJlYWQsIHB1YmxpYyBTZWxlY3Rpb25T
dWJ0cmVlUm9vdCB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyTmFtZWRGbG93VGhyZWFkKERvY3VtZW50
JiwgUmVuZGVyU3R5bGUmJiwgUmVmPFdlYktpdE5hbWVkRmxvdz4mJik7CisgICAgUmVuZGVyTmFt
ZWRGbG93VGhyZWFkKERvY3VtZW50JiwgUmVuZGVyU3R5bGUmJik7CiAgICAgdmlydHVhbCB+UmVu
ZGVyTmFtZWRGbG93VGhyZWFkKCk7CiAKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGZsb3dUaHJl
YWROYW1lKCkgY29uc3Q7CkBAIC0xMTgsOSArMTE3LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNs
ZWFyQ29udGVudEVsZW1lbnRzKCk7CiAgICAgdm9pZCB1cGRhdGVXcml0aW5nTW9kZSgpOwogCi0g
ICAgV2ViS2l0TmFtZWRGbG93JiBuYW1lZEZsb3coKSB7IHJldHVybiBtX25hbWVkRmxvdzsgfQot
ICAgIGNvbnN0IFdlYktpdE5hbWVkRmxvdyYgbmFtZWRGbG93KCkgY29uc3QgeyByZXR1cm4gbV9u
YW1lZEZsb3c7IH0KLQogICAgIC8vIE9ic2VydmVyIGZsb3cgdGhyZWFkcyBoYXZlIGludmFsaWQg
cmVnaW9ucyB0aGF0IGRlcGVuZCBvbiB0aGUgc3RhdGUgb2YgdGhpcyB0aHJlYWQKICAgICAvLyB0
byByZS12YWxpZGF0ZSB0aGVpciByZWdpb25zLiBLZWVwaW5nIGEgc2V0IG9mIG9ic2VydmVyIHRo
cmVhZHMgbWFrZSBpdCBlYXN5CiAgICAgLy8gdG8gbm90aWZ5IHRoZW0gd2hlbiBhIHJlZ2lvbiB3
YXMgcmVtb3ZlZCBmcm9tIHRoaXMgZmxvdy4KQEAgLTEzOCw5ICsxMzQsNiBAQCBwcml2YXRlOgog
ICAgIGJvb2wgbV9oYXNSZWdpb25zV2l0aFN0eWxpbmcgOiAxOwogICAgIGJvb2wgbV9kaXNwYXRj
aFJlZ2lvbk92ZXJzZXRDaGFuZ2VFdmVudCA6IDE7CiAKLSAgICAvLyBUaGUgRE9NIE9iamVjdCB0
aGF0IHJlcHJlc2VudHMgYSBuYW1lZCBmbG93LgotICAgIFJlZjxXZWJLaXROYW1lZEZsb3c+IG1f
bmFtZWRGbG93OwotCiAgICAgVGltZXIgbV9yZWdpb25PdmVyc2V0Q2hhbmdlRXZlbnRUaW1lcjsK
IAogICAgIExheW91dFVuaXQgbV9mbG93Q29udGVudEJvdHRvbTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24uY3BwCShyZXZpc2lvbiAyMjIyNTcpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjYyLDE5ICsyNjIsNyBAQCB2b2lkIFJlbmRlclJlZ2lvbjo6cmVwYWludEZsb3dUaHJlYWRDb250
CiAKIHZvaWQgUmVuZGVyUmVnaW9uOjppbnN0YWxsRmxvd1RocmVhZCgpCiB7Ci0gICAgbV9mbG93
VGhyZWFkID0gJnZpZXcoKS5mbG93VGhyZWFkQ29udHJvbGxlcigpLmVuc3VyZVJlbmRlckZsb3dU
aHJlYWRXaXRoTmFtZShzdHlsZSgpLnJlZ2lvblRocmVhZCgpKTsKLQotICAgIC8vIEJ5IG5vdyB0
aGUgZmxvdyB0aHJlYWQgc2hvdWxkIGFscmVhZHkgYmUgYWRkZWQgdG8gdGhlIHJlbmRlcmluZyB0
cmVlLAotICAgIC8vIHNvIHdlIGdvIHVwIHRoZSByZW5kZXJpbmcgcGFyZW50cyBhbmQgY2hlY2sg
dGhhdCB0aGlzIHJlZ2lvbiBpcyBub3QgcGFydCBvZiB0aGUgc2FtZQotICAgIC8vIGZsb3cgdGhh
dCBpdCBhY3R1YWxseSBuZWVkcyB0byBkaXNwbGF5LiBJdCB3b3VsZCBjcmVhdGUgYSBjaXJjdWxh
ciByZWZlcmVuY2UuCi0KLSAgICBhdXRvIGNsb3Nlc3RGbG93VGhyZWFkQW5jZXN0b3IgPSBhbmNl
c3RvcnNPZlR5cGU8UmVuZGVyTmFtZWRGbG93VGhyZWFkPigqdGhpcykuZmlyc3QoKTsKLSAgICBp
ZiAoIWNsb3Nlc3RGbG93VGhyZWFkQW5jZXN0b3IpIHsKLSAgICAgICAgbV9wYXJlbnROYW1lZEZs
b3dUaHJlYWQgPSBudWxscHRyOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgbV9wYXJl
bnROYW1lZEZsb3dUaHJlYWQgPSAmKmNsb3Nlc3RGbG93VGhyZWFkQW5jZXN0b3I7CisgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKIHZvaWQgUmVuZGVyUmVnaW9uOjphdHRhY2hSZWdpb24o
KQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlQ29uc3Rh
bnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRl
clN0eWxlQ29uc3RhbnRzLmgJKHJldmlzaW9uIDIyMjI1NykKKysrIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5oCSh3b3JraW5nIGNvcHkpCkBAIC00
NzcsNyArNDc3LDcgQEAgZW51bSBUZXh0Wm9vbSB7CiB9OwogCiBlbnVtIEJyZWFrQmV0d2VlbiB7
Ci0gICAgQXV0b0JyZWFrQmV0d2VlbiwgQXZvaWRCcmVha0JldHdlZW4sIEF2b2lkQ29sdW1uQnJl
YWtCZXR3ZWVuLCBBdm9pZFBhZ2VCcmVha0JldHdlZW4sIEF2b2lkUmVnaW9uQnJlYWtCZXR3ZWVu
LCBDb2x1bW5CcmVha0JldHdlZW4sIFJlZ2lvbkJyZWFrQmV0d2VlbiwgUGFnZUJyZWFrQmV0d2Vl
biwgTGVmdFBhZ2VCcmVha0JldHdlZW4sIFJpZ2h0UGFnZUJyZWFrQmV0d2VlbiwgUmVjdG9QYWdl
QnJlYWtCZXR3ZWVuLCBWZXJzb1BhZ2VCcmVha0JldHdlZW4KKyAgICBBdXRvQnJlYWtCZXR3ZWVu
LCBBdm9pZEJyZWFrQmV0d2VlbiwgQXZvaWRDb2x1bW5CcmVha0JldHdlZW4sIEF2b2lkUGFnZUJy
ZWFrQmV0d2VlbiwgQ29sdW1uQnJlYWtCZXR3ZWVuLCBQYWdlQnJlYWtCZXR3ZWVuLCBMZWZ0UGFn
ZUJyZWFrQmV0d2VlbiwgUmlnaHRQYWdlQnJlYWtCZXR3ZWVuLCBSZWN0b1BhZ2VCcmVha0JldHdl
ZW4sIFZlcnNvUGFnZUJyZWFrQmV0d2VlbgogfTsKIGJvb2wgYWx3YXlzUGFnZUJyZWFrKEJyZWFr
QmV0d2Vlbik7CiAgICAgCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvV2ls
bENoYW5nZURhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9XaWxsQ2hhbmdlRGF0YS5jcHAJKHJldmlzaW9uIDIyMjI1NykKKysrIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9XaWxsQ2hhbmdlRGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTg3LDkgKzg3LDYgQEAgYm9vbCBXaWxsQ2hhbmdlRGF0YTo6cHJvcGVydHlDcmVhdGVzU3RhYwog
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrOgogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRNYXNrSW1hZ2U6CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tCb3hJbWFnZToKLSNp
ZiBFTkFCTEUoQ1NTX1JFR0lPTlMpCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEZsb3dGcm9t
OgotI2VuZGlmCiAjaWYgRU5BQkxFKEFDQ0VMRVJBVEVEX09WRVJGTE9XX1NDUk9MTElORykKICAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0T3ZlcmZsb3dTY3JvbGxpbmc6CiAjZW5kaWYKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3N0eWxlL1JlbmRlclRyZWVQb3NpdGlvbi5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvc3R5bGUvUmVuZGVyVHJlZVBvc2l0aW9uLmNwcAkocmV2aXNpb24g
MjIyMjU3KQorKysgU291cmNlL1dlYkNvcmUvc3R5bGUvUmVuZGVyVHJlZVBvc2l0aW9uLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjcsOSArMjcsNyBAQAogI2luY2x1ZGUgIlJlbmRlclRyZWVQb3Np
dGlvbi5oIgogCiAjaW5jbHVkZSAiQ29tcG9zZWRUcmVlSXRlcmF0b3IuaCIKLSNpbmNsdWRlICJG
bG93VGhyZWFkQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIlBzZXVkb0VsZW1lbnQuaCIKLSNpbmNs
dWRlICJSZW5kZXJOYW1lZEZsb3dUaHJlYWQuaCIKICNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIK
ICNpbmNsdWRlICJTaGFkb3dSb290LmgiCiAKQEAgLTY3LDggKzY1LDcgQEAgUmVuZGVyT2JqZWN0
KiBSZW5kZXJUcmVlUG9zaXRpb246OnByZXZpbwogCiAgICAgYXV0byBjb21wb3NlZENoaWxkcmVu
ID0gY29tcG9zZWRUcmVlQ2hpbGRyZW4oKnBhcmVudEVsZW1lbnQpOwogICAgIGZvciAoYXV0byBp
dCA9IGNvbXBvc2VkQ2hpbGRyZW4uYXQodGV4dE5vZGUpLCBlbmQgPSBjb21wb3NlZENoaWxkcmVu
LmVuZCgpOyBpdCAhPSBlbmQ7IC0taXQpIHsKLSAgICAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJl
ciA9IGl0LT5yZW5kZXJlcigpOwotICAgICAgICBpZiAocmVuZGVyZXIgJiYgIWlzUmVuZGVyZXJS
ZXBhcmVudGVkKCpyZW5kZXJlcikpCisgICAgICAgIGlmIChhdXRvKiByZW5kZXJlciA9IGl0LT5y
ZW5kZXJlcigpKQogICAgICAgICAgICAgcmV0dXJuIHJlbmRlcmVyOwogICAgIH0KICAgICBpZiAo
YXV0byogYmVmb3JlID0gcGFyZW50RWxlbWVudC0+YmVmb3JlUHNldWRvRWxlbWVudCgpKQpAQCAt
OTUsOCArOTIsNyBAQCBSZW5kZXJPYmplY3QqIFJlbmRlclRyZWVQb3NpdGlvbjo6bmV4dFNpCiAg
ICAgICAgICAgICBpdC50cmF2ZXJzZU5leHQoKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAg
ICAgICB9Ci0gICAgICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBub2RlLnJlbmRlcmVyKCk7
Ci0gICAgICAgIGlmIChyZW5kZXJlciAmJiAhaXNSZW5kZXJlclJlcGFyZW50ZWQoKnJlbmRlcmVy
KSkKKyAgICAgICAgaWYgKGF1dG8qIHJlbmRlcmVyID0gaXQtPnJlbmRlcmVyKCkpCiAgICAgICAg
ICAgICByZXR1cm4gcmVuZGVyZXI7CiAgICAgICAgIAogICAgICAgICBpdC50cmF2ZXJzZU5leHRT
a2lwcGluZ0NoaWxkcmVuKCk7CkBAIC0xMDYsNTcgKzEwMiw0IEBAIFJlbmRlck9iamVjdCogUmVu
ZGVyVHJlZVBvc2l0aW9uOjpuZXh0U2kKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotI2lmIEVO
QUJMRShDU1NfUkVHSU9OUykKLVJlbmRlclRyZWVQb3NpdGlvbiBSZW5kZXJUcmVlUG9zaXRpb246
Omluc2VydGlvblBvc2l0aW9uRm9yRmxvd1RocmVhZChFbGVtZW50KiBpbnNlcnRpb25QYXJlbnQs
IEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKLXsKLSAgICBBU1NF
UlQoZWxlbWVudC5zaG91bGRNb3ZlVG9GbG93VGhyZWFkKHN0eWxlKSk7Ci0gICAgYXV0byYgcGFy
ZW50Rmxvd1RocmVhZCA9IGVsZW1lbnQuZG9jdW1lbnQoKS5yZW5kZXJWaWV3KCktPmZsb3dUaHJl
YWRDb250cm9sbGVyKCkuZW5zdXJlUmVuZGVyRmxvd1RocmVhZFdpdGhOYW1lKHN0eWxlLmZsb3dU
aHJlYWQoKSk7Ci0KLSAgICBpZiAoIWluc2VydGlvblBhcmVudCkKLSAgICAgICAgcmV0dXJuIHsg
cGFyZW50Rmxvd1RocmVhZCwgbnVsbHB0ciB9OwotCi0gICAgYXV0byBjb21wb3NlZERlc2NlbmRh
bnRzID0gY29tcG9zZWRUcmVlRGVzY2VuZGFudHMoKmluc2VydGlvblBhcmVudCk7Ci0gICAgYXV0
byBpdCA9IGVsZW1lbnQuaXNCZWZvcmVQc2V1ZG9FbGVtZW50KCkgPyBjb21wb3NlZERlc2NlbmRh
bnRzLmJlZ2luKCkgOiBjb21wb3NlZERlc2NlbmRhbnRzLmF0KGVsZW1lbnQpOwotICAgIGF1dG8g
ZW5kID0gY29tcG9zZWREZXNjZW5kYW50cy5lbmQoKTsKLSAgICB3aGlsZSAoaXQgIT0gZW5kKSB7
Ci0gICAgICAgIGF1dG8mIGN1cnJlbnROb2RlID0gKml0OwotICAgICAgICBib29sIGhhc0Rpc3Bs
YXlDb250ZW50cyA9IGlzPEVsZW1lbnQ+KGN1cnJlbnROb2RlKSAmJiBkb3duY2FzdDxFbGVtZW50
PihjdXJyZW50Tm9kZSkuaGFzRGlzcGxheUNvbnRlbnRzKCk7Ci0gICAgICAgIGlmIChoYXNEaXNw
bGF5Q29udGVudHMpIHsKLSAgICAgICAgICAgIGl0LnRyYXZlcnNlTmV4dCgpOwotICAgICAgICAg
ICAgY29udGludWU7Ci0gICAgICAgIH0KLQotICAgICAgICBhdXRvKiByZW5kZXJlciA9IGN1cnJl
bnROb2RlLnJlbmRlcmVyKCk7Ci0gICAgICAgIGlmICghcmVuZGVyZXIpIHsKLSAgICAgICAgICAg
IGl0LnRyYXZlcnNlTmV4dFNraXBwaW5nQ2hpbGRyZW4oKTsKLSAgICAgICAgICAgIGNvbnRpbnVl
OwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCFpczxSZW5kZXJFbGVtZW50PigqcmVuZGVyZXIp
KSB7Ci0gICAgICAgICAgICBpdC50cmF2ZXJzZU5leHQoKTsKLSAgICAgICAgICAgIGNvbnRpbnVl
OwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gV2UgYXJlIHRoZSBsYXN0IGNoaWxkIGluIHRoaXMg
Zmxvdy4KLSAgICAgICAgaWYgKCFpc1JlbmRlcmVyUmVwYXJlbnRlZCgqcmVuZGVyZXIpKQotICAg
ICAgICAgICAgcmV0dXJuIHsgcGFyZW50Rmxvd1RocmVhZCwgbnVsbHB0ciB9OwotCi0gICAgICAg
IGlmIChyZW5kZXJlci0+c3R5bGUoKS5oYXNGbG93SW50bygpICYmIHN0eWxlLmZsb3dUaHJlYWQo
KSA9PSByZW5kZXJlci0+c3R5bGUoKS5mbG93VGhyZWFkKCkpCi0gICAgICAgICAgICByZXR1cm4g
eyBwYXJlbnRGbG93VGhyZWFkLCBkb3duY2FzdDxSZW5kZXJFbGVtZW50PihyZW5kZXJlcikgfTsK
LSAgICAgICAgLy8gTmVzdGVkIGZsb3dzLCBza2lwLgotICAgICAgICBpdC50cmF2ZXJzZU5leHRT
a2lwcGluZ0NoaWxkcmVuKCk7Ci0gICAgfQotICAgIHJldHVybiB7IHBhcmVudEZsb3dUaHJlYWQs
IG51bGxwdHIgfTsKLX0KLSNlbmRpZgotICAgIAotYm9vbCBSZW5kZXJUcmVlUG9zaXRpb246Omlz
UmVuZGVyZXJSZXBhcmVudGVkKGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIpCi17Ci0gICAg
aWYgKCFyZW5kZXJlci5ub2RlKCktPmlzRWxlbWVudE5vZGUoKSkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIGlmIChyZW5kZXJlci5zdHlsZSgpLmhhc0Zsb3dJbnRvKCkpCi0gICAgICAgIHJl
dHVybiB0cnVlOwotICAgIHJldHVybiBmYWxzZTsKLX0KLQogfQpJbmRleDogU291cmNlL1dlYkNv
cmUvc3R5bGUvUmVuZGVyVHJlZVBvc2l0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvc3R5bGUvUmVuZGVyVHJlZVBvc2l0aW9uLmgJKHJldmlzaW9uIDIyMjI1NykKKysrIFNvdXJj
ZS9XZWJDb3JlL3N0eWxlL1JlbmRlclRyZWVQb3NpdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC00
NCwxMCArNDQsNiBAQCBwdWJsaWM6CiAgICAgICAgIDogbV9wYXJlbnQocGFyZW50KQogICAgIHsK
ICAgICB9Ci0gICAgCi0jaWYgRU5BQkxFKENTU19SRUdJT05TKQotICAgIHN0YXRpYyBSZW5kZXJU
cmVlUG9zaXRpb24gaW5zZXJ0aW9uUG9zaXRpb25Gb3JGbG93VGhyZWFkKEVsZW1lbnQqIGluc2Vy
dGlvblBhcmVudCwgRWxlbWVudCYgY2hpbGQsIGNvbnN0IFJlbmRlclN0eWxlJik7Ci0jZW5kaWYK
IAogICAgIFJlbmRlckVsZW1lbnQmIHBhcmVudCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyZW50OyB9
CiAgICAgdm9pZCBpbnNlcnQoUmVuZGVyT2JqZWN0Jik7CkBAIC02MCwxOCArNTYsOCBAQCBwdWJs
aWM6CiAKICAgICBSZW5kZXJPYmplY3QqIHByZXZpb3VzU2libGluZ1JlbmRlcmVyKGNvbnN0IFRl
eHQmKSBjb25zdDsKICAgICBSZW5kZXJPYmplY3QqIG5leHRTaWJsaW5nUmVuZGVyZXIoY29uc3Qg
Tm9kZSYpIGNvbnN0OwotICAgIHN0YXRpYyBib29sIGlzUmVuZGVyZXJSZXBhcmVudGVkKGNvbnN0
IFJlbmRlck9iamVjdCYpOwogCiBwcml2YXRlOgotI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKLSAg
ICBSZW5kZXJUcmVlUG9zaXRpb24oUmVuZGVyRmxvd1RocmVhZCYgcGFyZW50LCBSZW5kZXJPYmpl
Y3QqIG5leHRTaWJsaW5nKQotICAgICAgICA6IG1fcGFyZW50KHBhcmVudCkKLSAgICAgICAgLCBt
X25leHRTaWJsaW5nKG5leHRTaWJsaW5nKQotICAgICAgICAsIG1faGFzVmFsaWROZXh0U2libGlu
Zyh0cnVlKQotICAgIHsKLSAgICB9Ci0jZW5kaWYKLQogICAgIFJlbmRlckVsZW1lbnQmIG1fcGFy
ZW50OwogICAgIFJlbmRlck9iamVjdCogbV9uZXh0U2libGluZyB7IG51bGxwdHIgfTsKICAgICBi
b29sIG1faGFzVmFsaWROZXh0U2libGluZyB7IGZhbHNlIH07CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9zdHlsZS9SZW5kZXJUcmVlVXBkYXRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvc3R5bGUvUmVuZGVyVHJlZVVwZGF0ZXIuY3BwCShyZXZpc2lvbiAyMjIyNTcpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9zdHlsZS9SZW5kZXJUcmVlVXBkYXRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTMyLDcgKzMyLDYgQEAKICNpbmNsdWRlICJDb21wb3NlZFRyZWVJdGVyYXRvci5oIgogI2luY2x1
ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRWxlbWVudC5oIgotI2luY2x1ZGUgIkZsb3dUaHJl
YWRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiSFRNTFNsb3RFbGVtZW50LmgiCiAjaW5jbHVkZSAi
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiTm9kZVJlbmRlclN0eWxlLmgi
CkBAIC00MCw3ICszOSw2IEBACiAjaW5jbHVkZSAiUmVuZGVyRGVzY2VuZGFudEl0ZXJhdG9yLmgi
CiAjaW5jbHVkZSAiUmVuZGVyRnVsbFNjcmVlbi5oIgogI2luY2x1ZGUgIlJlbmRlckxpc3RJdGVt
LmgiCi0jaW5jbHVkZSAiUmVuZGVyTmFtZWRGbG93VGhyZWFkLmgiCiAjaW5jbHVkZSAiUmVuZGVy
VHJlZVVwZGF0ZXJGaXJzdExldHRlci5oIgogI2luY2x1ZGUgIlJlbmRlclRyZWVVcGRhdGVyR2Vu
ZXJhdGVkQ29udGVudC5oIgogI2luY2x1ZGUgIlJlbmRlclRyZWVVcGRhdGVyTGlzdEl0ZW0uaCIK
QEAgLTMwMCw4ICsyOTgsNyBAQCB2b2lkIFJlbmRlclRyZWVVcGRhdGVyOjp1cGRhdGVFbGVtZW50
UmVuCiAgICAgQ2hlY2tGb3JWaXNpYmlsaXR5Q2hhbmdlIGNoZWNrRm9yVmlzaWJpbGl0eUNoYW5n
ZShlbGVtZW50KTsKICNlbmRpZgogCi0gICAgYm9vbCBzaG91bGRUZWFyRG93blJlbmRlcmVycyA9
IHVwZGF0ZS5jaGFuZ2UgPT0gU3R5bGU6OkRldGFjaAotICAgICAgICAmJiAoZWxlbWVudC5yZW5k
ZXJlcigpIHx8IGVsZW1lbnQuaXNOYW1lZEZsb3dDb250ZW50RWxlbWVudCgpIHx8IGVsZW1lbnQu
aGFzRGlzcGxheUNvbnRlbnRzKCkpOworICAgIGJvb2wgc2hvdWxkVGVhckRvd25SZW5kZXJlcnMg
PSB1cGRhdGUuY2hhbmdlID09IFN0eWxlOjpEZXRhY2ggJiYgKGVsZW1lbnQucmVuZGVyZXIoKSB8
fCBlbGVtZW50Lmhhc0Rpc3BsYXlDb250ZW50cygpKTsKICAgICBpZiAoc2hvdWxkVGVhckRvd25S
ZW5kZXJlcnMpIHsKICAgICAgICAgaWYgKCFlbGVtZW50LnJlbmRlcmVyKCkpIHsKICAgICAgICAg
ICAgIC8vIFdlIG1heSBiZSB0ZWFyaW5nIGRvd24gYSBkZXNjZW5kYW50IHJlbmRlcmVyIGNhY2hl
ZCBpbiByZW5kZXJUcmVlUG9zaXRpb24uCkBAIC0zNDgsMjUgKzM0NSw5IEBAIHZvaWQgUmVuZGVy
VHJlZVVwZGF0ZXI6OnVwZGF0ZUVsZW1lbnRSZW4KICAgICByZW5kZXJlci5zZXRTdHlsZShSZW5k
ZXJTdHlsZTo6Y2xvbmUoKnVwZGF0ZS5zdHlsZSksIFN0eWxlRGlmZmVyZW5jZUVxdWFsKTsKIH0K
IAotI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKLXN0YXRpYyB2b2lkIHJlZ2lzdGVyRWxlbWVudEZv
ckZsb3dUaHJlYWRJZk5lZWRlZChFbGVtZW50JiBlbGVtZW50LCBjb25zdCBSZW5kZXJTdHlsZSYg
c3R5bGUpCi17Ci0gICAgaWYgKCFlbGVtZW50LnNob3VsZE1vdmVUb0Zsb3dUaHJlYWQoc3R5bGUp
KQotICAgICAgICByZXR1cm47Ci0gICAgRmxvd1RocmVhZENvbnRyb2xsZXImIGZsb3dUaHJlYWRD
b250cm9sbGVyID0gcmVuZGVyVmlldygpLmZsb3dUaHJlYWRDb250cm9sbGVyKCk7Ci0gICAgZmxv
d1RocmVhZENvbnRyb2xsZXIucmVnaXN0ZXJOYW1lZEZsb3dDb250ZW50RWxlbWVudChlbGVtZW50
LCBmbG93VGhyZWFkQ29udHJvbGxlci5lbnN1cmVSZW5kZXJGbG93VGhyZWFkV2l0aE5hbWUoc3R5
bGUuZmxvd1RocmVhZCgpKSk7Ci19Ci0jZW5kaWYKLQogdm9pZCBSZW5kZXJUcmVlVXBkYXRlcjo6
Y3JlYXRlUmVuZGVyZXIoRWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKIHsK
LSAgICBhdXRvIGNvbXB1dGVJbnNlcnRpb25Qb3NpdGlvbiA9IFt0aGlzLCAmZWxlbWVudCwgJnN0
eWxlXSAoKSB7Ci0jaWYgRU5BQkxFKENTU19SRUdJT05TKQotICAgICAgICBpZiAoZWxlbWVudC5z
aG91bGRNb3ZlVG9GbG93VGhyZWFkKHN0eWxlKSkKLSAgICAgICAgICAgIHJldHVybiBSZW5kZXJU
cmVlUG9zaXRpb246Omluc2VydGlvblBvc2l0aW9uRm9yRmxvd1RocmVhZChyZW5kZXJUcmVlUG9z
aXRpb24oKS5wYXJlbnQoKS5lbGVtZW50KCksIGVsZW1lbnQsIHN0eWxlKTsKLSNlbHNlCi0gICAg
ICAgIFVOVVNFRF9QQVJBTShzdHlsZSk7Ci0jZW5kaWYKKyAgICBhdXRvIGNvbXB1dGVJbnNlcnRp
b25Qb3NpdGlvbiA9IFt0aGlzLCAmZWxlbWVudF0gKCkgewogICAgICAgICByZW5kZXJUcmVlUG9z
aXRpb24oKS5jb21wdXRlTmV4dFNpYmxpbmcoZWxlbWVudCk7CiAgICAgICAgIHJldHVybiByZW5k
ZXJUcmVlUG9zaXRpb24oKTsKICAgICB9OwpAQCAtMzc0LDExICszNTUsNiBAQCB2b2lkIFJlbmRl
clRyZWVVcGRhdGVyOjpjcmVhdGVSZW5kZXJlcihFCiAgICAgaWYgKCFzaG91bGRDcmVhdGVSZW5k
ZXJlcihlbGVtZW50LCByZW5kZXJUcmVlUG9zaXRpb24oKS5wYXJlbnQoKSkpCiAgICAgICAgIHJl
dHVybjsKIAotI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKLSAgICAvLyBFdmVuIGRpc3BsYXk6IG5v
bmUgZWxlbWVudHMgbmVlZCB0byBiZSByZWdpc3RlcmVkIGluIEZsb3dUaHJlYWRDb250cm9sbGVy
LgotICAgIHJlZ2lzdGVyRWxlbWVudEZvckZsb3dUaHJlYWRJZk5lZWRlZChlbGVtZW50LCBzdHls
ZSk7Ci0jZW5kaWYKLQogICAgIGlmICghZWxlbWVudC5yZW5kZXJlcklzTmVlZGVkKHN0eWxlKSkK
ICAgICAgICAgcmV0dXJuOwogCkBAIC0zOTEsMTAgKzM2Nyw2IEBAIHZvaWQgUmVuZGVyVHJlZVVw
ZGF0ZXI6OmNyZWF0ZVJlbmRlcmVyKEUKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIC8v
IE1ha2Ugc3VyZSB0aGUgUmVuZGVyT2JqZWN0IGFscmVhZHkga25vd3MgaXQgaXMgZ29pbmcgdG8g
YmUgYWRkZWQgdG8gYSBSZW5kZXJGbG93VGhyZWFkIGJlZm9yZSB3ZSBzZXQgdGhlIHN0eWxlCi0g
ICAgLy8gZm9yIHRoZSBmaXJzdCB0aW1lLiBPdGhlcndpc2UgY29kZSB1c2luZyBpblJlbmRlckZs
b3dUaHJlYWQoKSBpbiB0aGUgc3R5bGVXaWxsQ2hhbmdlIGFuZCBzdHlsZURpZENoYW5nZSB3aWxs
IGZhaWwuCi0gICAgbmV3UmVuZGVyZXItPnNldEZsb3dUaHJlYWRTdGF0ZShpbnNlcnRpb25Qb3Np
dGlvbi5wYXJlbnQoKS5mbG93VGhyZWFkU3RhdGUoKSk7Ci0KICAgICBlbGVtZW50LnNldFJlbmRl
cmVyKG5ld1JlbmRlcmVyKTsKIAogICAgIG5ld1JlbmRlcmVyLT5pbml0aWFsaXplU3R5bGUoKTsK
QEAgLTUwMyw5ICs0NzUsOSBAQCB2b2lkIFJlbmRlclRyZWVVcGRhdGVyOjppbnZhbGlkYXRlV2hp
dGVzCiAgICAgICAgICAgICBpZiAobV9zdHlsZVVwZGF0ZS0+ZWxlbWVudFVwZGF0ZShkb3duY2Fz
dDxFbGVtZW50Pigqc2libGluZykpKQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
ICAgIC8vIFRleHQgcmVuZGVyZXJzIGJleW9uZCByZW5kZXJlZCBlbGVtZW50cyBjYW4ndCBiZSBh
ZmZlY3RlZC4KLSAgICAgICAgICAgIGlmICghc2libGluZy0+cmVuZGVyZXIoKSB8fCBSZW5kZXJU
cmVlUG9zaXRpb246OmlzUmVuZGVyZXJSZXBhcmVudGVkKCpzaWJsaW5nLT5yZW5kZXJlcigpKSkK
LSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
ICAgIGlmIChzaWJsaW5nLT5yZW5kZXJlcigpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAgICAgICAgIGlmICghaXM8VGV4dD4oKnNp
YmxpbmcpKQogICAgICAgICAgICAgY29udGludWU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdHls
ZS9SZW5kZXJUcmVlVXBkYXRlckdlbmVyYXRlZENvbnRlbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3N0eWxlL1JlbmRlclRyZWVVcGRhdGVyR2VuZXJhdGVkQ29udGVudC5jcHAJ
KHJldmlzaW9uIDIyMjI1NykKKysrIFNvdXJjZS9XZWJDb3JlL3N0eWxlL1JlbmRlclRyZWVVcGRh
dGVyR2VuZXJhdGVkQ29udGVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgyLDkgKzgyLDYgQEAg
dm9pZCBSZW5kZXJUcmVlVXBkYXRlcjo6R2VuZXJhdGVkQ29udGVudAogc3RhdGljIHZvaWQgY3Jl
YXRlQ29udGVudFJlbmRlcmVycyhSZW5kZXJFbGVtZW50JiByZW5kZXJlcikKIHsKICAgICBhdXRv
JiBzdHlsZSA9IHJlbmRlcmVyLnN0eWxlKCk7Ci0gICAgaWYgKHN0eWxlLmhhc0Zsb3dGcm9tKCkp
Ci0gICAgICAgIHJldHVybjsKLQogICAgIEFTU0VSVChzdHlsZS5jb250ZW50RGF0YSgpKTsKIAog
ICAgIGZvciAoY29uc3QgQ29udGVudERhdGEqIGNvbnRlbnQgPSBzdHlsZS5jb250ZW50RGF0YSgp
OyBjb250ZW50OyBjb250ZW50ID0gY29udGVudC0+bmV4dCgpKSB7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9zdHlsZS9TdHlsZUNoYW5nZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
c3R5bGUvU3R5bGVDaGFuZ2UuY3BwCShyZXZpc2lvbiAyMjIyNTcpCisrKyBTb3VyY2UvV2ViQ29y
ZS9zdHlsZS9TdHlsZUNoYW5nZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDE3ICs0OCw2IEBA
IENoYW5nZSBkZXRlcm1pbmVDaGFuZ2UoY29uc3QgUmVuZGVyU3R5bGUKICAgICAvLyBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTUwNjkKICAgICBpZiAoczEuaGFzVGV4
dENvbWJpbmUoKSAhPSBzMi5oYXNUZXh0Q29tYmluZSgpKQogICAgICAgICByZXR1cm4gRGV0YWNo
OwotICAgIC8vIFdlIG5lZWQgdG8gcmVhdHRhY2ggdGhlIG5vZGUsIHNvIHRoYXQgaXQgaXMgbW92
ZWQgdG8gdGhlIGNvcnJlY3QgUmVuZGVyRmxvd1RocmVhZC4KLSAgICBpZiAoczEuZmxvd1RocmVh
ZCgpICE9IHMyLmZsb3dUaHJlYWQoKSkKLSAgICAgICAgcmV0dXJuIERldGFjaDsKLSAgICAvLyBX
aGVuIHRoZSByZWdpb24gdGhyZWFkIGhhcyBjaGFuZ2VkLCB3ZSBuZWVkIHRvIHByZXBhcmUgYSBz
ZXBhcmF0ZSByZW5kZXIgcmVnaW9uIG9iamVjdC4KLSAgICBpZiAoczEucmVnaW9uVGhyZWFkKCkg
IT0gczIucmVnaW9uVGhyZWFkKCkpCi0gICAgICAgIHJldHVybiBEZXRhY2g7Ci0gICAgLy8gRklY
TUU6IE11bHRpY29sdW1uIHJlZ2lvbnMgbm90IHlldCBzdXBwb3J0ZWQgKGh0dHA6Ly9kZXYudzMu
b3JnL2Nzc3dnL2Nzcy1yZWdpb25zLyNtdWx0aS1jb2x1bW4tcmVnaW9ucykKLSAgICAvLyBXaGVu
IHRoZSBub2RlIGhhcyByZWdpb24gc3R5bGUgYW5kIGNoYW5nZWQgaXRzIG11bHRpY29sIHN0eWxl
LCB3ZSBoYXZlIHRvIHByZXBhcmUKLSAgICAvLyBhIHNlcGFyYXRlIHJlbmRlciByZWdpb24gb2Jq
ZWN0LgotICAgIGlmIChzMS5oYXNGbG93RnJvbSgpICYmIChzMS5zcGVjaWZpZXNDb2x1bW5zKCkg
IT0gczIuc3BlY2lmaWVzQ29sdW1ucygpKSkKLSAgICAgICAgcmV0dXJuIERldGFjaDsKIAogICAg
IGlmIChzMSAhPSBzMikgewogICAgICAgICBpZiAoczEuaW5oZXJpdGVkTm90RXF1YWwoJnMyKSkK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlVHJlZVJlc29sdmVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5jcHAJKHJldmlz
aW9uIDIyMjI1NykKKysrIFNvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlVHJlZVJlc29sdmVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTI0LDcgKzEyNCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxSZW5k
ZXJTdHlsZT4gVHJlZVJlc29sdmUKICAgICBpZiAoYXV0byBzdHlsZSA9IHNjb3BlKCkuc2hhcmlu
Z1Jlc29sdmVyLnJlc29sdmUoZWxlbWVudCwgKm1fdXBkYXRlKSkKICAgICAgICAgcmV0dXJuIHN0
eWxlOwogCi0gICAgYXV0byBlbGVtZW50U3R5bGUgPSBzY29wZSgpLnN0eWxlUmVzb2x2ZXIuc3R5
bGVGb3JFbGVtZW50KGVsZW1lbnQsICZpbmhlcml0ZWRTdHlsZSwgcGFyZW50Qm94U3R5bGUoKSwg
TWF0Y2hBbGxSdWxlcywgbnVsbHB0ciwgJnNjb3BlKCkuc2VsZWN0b3JGaWx0ZXIpOworICAgIGF1
dG8gZWxlbWVudFN0eWxlID0gc2NvcGUoKS5zdHlsZVJlc29sdmVyLnN0eWxlRm9yRWxlbWVudChl
bGVtZW50LCAmaW5oZXJpdGVkU3R5bGUsIHBhcmVudEJveFN0eWxlKCksIE1hdGNoQWxsUnVsZXMs
ICZzY29wZSgpLnNlbGVjdG9yRmlsdGVyKTsKIAogICAgIGlmIChlbGVtZW50U3R5bGUucmVsYXRp
b25zKQogICAgICAgICBjb21taXRSZWxhdGlvbnMoV1RGTW92ZShlbGVtZW50U3R5bGUucmVsYXRp
b25zKSwgKm1fdXBkYXRlKTsKQEAgLTE2MiwxMCArMTYyLDYgQEAgc3RhdGljIGJvb2wgYWZmZWN0
c1JlbmRlcmVkU3VidHJlZShFbGVtZQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBpZiAoZWxl
bWVudC5yZW5kZXJlcklzTmVlZGVkKG5ld1N0eWxlKSkKICAgICAgICAgcmV0dXJuIHRydWU7Ci0j
aWYgRU5BQkxFKENTU19SRUdJT05TKQotICAgIGlmIChlbGVtZW50LnNob3VsZE1vdmVUb0Zsb3dU
aHJlYWQobmV3U3R5bGUpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSNlbmRpZgogICAgIHJldHVy
biBmYWxzZTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcAkocmV2aXNpb24g
MjIyMjU3KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC01ODksMTQgKzU4OSw2IEBAIHN0YXRpYyBib29sIGhhc0xvYWRMaXN0ZW5lcihFbGVt
ZW50KiBlbGUKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLSNpZiBFTkFCTEUoQ1NTX1JFR0lPTlMp
Ci1ib29sIFNWR0VsZW1lbnQ6OnNob3VsZE1vdmVUb0Zsb3dUaHJlYWQoY29uc3QgUmVuZGVyU3R5
bGUmIHN0eWxlVG9Vc2UpIGNvbnN0Ci17Ci0gICAgLy8gQWxsb3cgb25seSBzdmcgcm9vdCBlbGVt
ZW50cyB0byBiZSBkaXJlY3RseSBjb2xsZWN0ZWQgYnkgYSByZW5kZXIgZmxvdyB0aHJlYWQuCi0g
ICAgcmV0dXJuIHBhcmVudE5vZGUoKSAmJiAhcGFyZW50Tm9kZSgpLT5pc1NWR0VsZW1lbnQoKSAm
JiBoYXNUYWdOYW1lKFNWR05hbWVzOjpzdmdUYWcpICYmIEVsZW1lbnQ6OnNob3VsZE1vdmVUb0Zs
b3dUaHJlYWQoc3R5bGVUb1VzZSk7Ci19Ci0jZW5kaWYKLQogdm9pZCBTVkdFbGVtZW50OjpzZW5k
U1ZHTG9hZEV2ZW50SWZQb3NzaWJsZShib29sIHNlbmRQYXJlbnRMb2FkRXZlbnRzKQogewogICAg
IGlmICghaXNDb25uZWN0ZWQoKSB8fCAhZG9jdW1lbnQoKS5mcmFtZSgpKQpJbmRleDogU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRWxlbWVudC5oCShyZXZpc2lvbiAyMjIyNTcpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzEsMTAgKzEzMSw2IEBAIHB1YmxpYzoK
ICAgICBib29sIHJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5
cGUsIEV2ZW50TGlzdGVuZXImLCBjb25zdCBMaXN0ZW5lck9wdGlvbnMmKSBvdmVycmlkZTsKICAg
ICBib29sIGhhc0ZvY3VzRXZlbnRMaXN0ZW5lcnMoKSBjb25zdDsKIAotI2lmIEVOQUJMRShDU1Nf
UkVHSU9OUykKLSAgICBib29sIHNob3VsZE1vdmVUb0Zsb3dUaHJlYWQoY29uc3QgUmVuZGVyU3R5
bGUmKSBjb25zdCBvdmVycmlkZTsKLSNlbmRpZgotCiAgICAgYm9vbCBoYXNUYWdOYW1lKGNvbnN0
IFNWR1F1YWxpZmllZE5hbWUmIG5hbWUpIGNvbnN0IHsgcmV0dXJuIGhhc0xvY2FsTmFtZShuYW1l
LmxvY2FsTmFtZSgpKTsgfQogICAgIGludCB0YWJJbmRleCgpIGNvbnN0IG92ZXJyaWRlOwogCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwkocmV2aXNpb24gMjIyMjU3KQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMiBAQAorMjAxNy0wOS0xOSAgQW50dGkgS29pdmlz
dG8gIDxhbnR0aUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIERPTSBhbmQgc3R5bGluZyBz
dXBwb3J0IGZvciBDU1MgUmVnaW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTc3MjIxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZzoK
KwogMjAxNy0wOS0xOSAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAog
ICAgICAgICBEbyBtb3JlIG1hdGggaW4gdGVybXMgb2YgRmxvYXRTaXplcyBhbmQgRmxvYXRQb2lu
dHMKSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNj
b25maWcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9Db25maWd1cmF0aW9ucy9GZWF0dXJl
RGVmaW5lcy54Y2NvbmZpZwkocmV2aXNpb24gMjIyMjU3KQorKysgU291cmNlL1dlYktpdC9Db25m
aWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwkod29ya2luZyBjb3B5KQpAQCAtNzgs
NyArNzgsNiBAQCBFTkFCTEVfQ1NTX0NPTVBPU0lUSU5HID0gRU5BQkxFX0NTU19DT01QCiBFTkFC
TEVfQ1NTX0RFVklDRV9BREFQVEFUSU9OID0gOwogRU5BQkxFX0NTU19JTUFHRV9PUklFTlRBVElP
TiA9IDsKIEVOQUJMRV9DU1NfSU1BR0VfUkVTT0xVVElPTiA9IDsKLUVOQUJMRV9DU1NfUkVHSU9O
UyA9IDsKIEVOQUJMRV9DU1NfU0VMRUNUT1JTX0xFVkVMNCA9IEVOQUJMRV9DU1NfU0VMRUNUT1JT
X0xFVkVMNDsKIEVOQUJMRV9DU1MzX1RFWFQgPSA7CiBFTkFCTEVfQ1VSU09SX1ZJU0lCSUxJVFkg
PSBFTkFCTEVfQ1VSU09SX1ZJU0lCSUxJVFk7CkBAIC0yNDMsNCArMjQyLDQgQEAgRU5BQkxFX0RB
VEFfSU5URVJBQ1RJT05faXBob25lc2ltdWxhdG9yIAogRU5BQkxFX0RBVEFfSU5URVJBQ1RJT05b
c2RrPWlwaG9uZW9zMTAqXSA9IDsKIEVOQUJMRV9EQVRBX0lOVEVSQUNUSU9OW3Nkaz1pcGhvbmVz
aW11bGF0b3IxMCpdID0gOwogCi1GRUFUVVJFX0RFRklORVMgPSAkKEVOQUJMRV8zRF9UUkFOU0ZP
Uk1TKSAkKEVOQUJMRV9BQ0NFTEVSQVRFRF8yRF9DQU5WQVMpICQoRU5BQkxFX0FDQ0VMRVJBVEVE
X09WRVJGTE9XX1NDUk9MTElORykgJChFTkFCTEVfQVBQTEVfUEFZKSAkKEVOQUJMRV9BUFBMRV9Q
QVlfU0VTU0lPTl9WMykgJChFTkFCTEVfQVRUQUNITUVOVF9FTEVNRU5UKSAkKEVOQUJMRV9BVkZf
Q0FQVElPTlMpICQoRU5BQkxFX0NBQ0hFX1BBUlRJVElPTklORykgJChFTkFCTEVfQ0hBTk5FTF9N
RVNTQUdJTkcpICQoRU5BQkxFX0NPTlRFTlRfRklMVEVSSU5HKSAkKEVOQUJMRV9DU1NfQU5JTUFU
SU9OU19MRVZFTF8yKSAkKEVOQUJMRV9DU1NfQk9YX0RFQ09SQVRJT05fQlJFQUspICQoRU5BQkxF
X0NTU19DT01QT1NJVElORykgJChFTkFCTEVfQ1NTX0RFVklDRV9BREFQVEFUSU9OKSAkKEVOQUJM
RV9DU1NfSU1BR0VfT1JJRU5UQVRJT04pICQoRU5BQkxFX0NTU19JTUFHRV9SRVNPTFVUSU9OKSAk
KEVOQUJMRV9DU1NfUkVHSU9OUykgJChFTkFCTEVfQ1NTX1NDUk9MTF9TTkFQKSAkKEVOQUJMRV9D
U1NfU0VMRUNUT1JTX0xFVkVMNCkgJChFTkFCTEVfQ1NTX1RSQUlMSU5HX1dPUkQpICQoRU5BQkxF
X0NTUzNfVEVYVCkgJChFTkFCTEVfQ1VSU09SX1ZJU0lCSUxJVFkpICQoRU5BQkxFX0NVU1RPTV9T
Q0hFTUVfSEFORExFUikgJChFTkFCTEVfREFTSEJPQVJEX1NVUFBPUlQpICQoRU5BQkxFX0RBVEFf
SU5URVJBQ1RJT04pICQoRU5BQkxFX0RBVEFDVUVfVkFMVUUpICQoRU5BQkxFX0RBVEFMSVNUX0VM
RU1FTlQpICQoRU5BQkxFX0RFVklDRV9PUklFTlRBVElPTikgJChFTkFCTEVfRFJBR19TVVBQT1JU
KSAkKEVOQUJMRV9FTkNSWVBURURfTUVESUEpICQoRU5BQkxFX0ZBU1RfSklUX1BFUk1JU1NJT05T
KSAkKEVOQUJMRV9GSUxURVJTX0xFVkVMXzIpICQoRU5BQkxFX0ZUTF9KSVQpICQoRU5BQkxFX0ZV
TExTQ1JFRU5fQVBJKSAkKEVOQUJMRV9HQU1FUEFEKSAkKEVOQUJMRV9HRU9MT0NBVElPTikgJChF
TkFCTEVfSUNPTkRBVEFCQVNFKSAkKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFX0lOX1dPUktFUlMp
ICQoRU5BQkxFX0lOREVYRURfREFUQUJBU0UpICQoRU5BQkxFX0lOUFVUX1RZUEVfQ09MT1JfUE9Q
T1ZFUikgJChFTkFCTEVfSU5QVVRfVFlQRV9DT0xPUikgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRF
KSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1FX0lOQ09NUExFVEUpICQoRU5BQkxFX0lOUFVU
X1RZUEVfREFURVRJTUVMT0NBTCkgJChFTkFCTEVfSU5QVVRfVFlQRV9NT05USCkgJChFTkFCTEVf
SU5QVVRfVFlQRV9USU1FKSAkKEVOQUJMRV9JTlBVVF9UWVBFX1dFRUspICQoRU5BQkxFX0lOVEVS
U0VDVElPTl9PQlNFUlZFUikgJChFTkFCTEVfSU5UTCkgJChFTkFCTEVfSU9TX0dFU1RVUkVfRVZF
TlRTKSAkKEVOQUJMRV9JT1NfVE9VQ0hfRVZFTlRTKSAkKEVOQUJMRV9KSVQpICQoRU5BQkxFX0tF
WUJPQVJEX0tFWV9BVFRSSUJVVEUpICQoRU5BQkxFX0tFWUJPQVJEX0NPREVfQVRUUklCVVRFKSAk
KEVOQUJMRV9MRUdBQ1lfQ1NTX1ZFTkRPUl9QUkVGSVhFUykgJChFTkFCTEVfTEVHQUNZX0VOQ1JZ
UFRFRF9NRURJQSkgJChFTkFCTEVfTEVHQUNZX1ZFTkRPUl9QUkVGSVhFUykgJChFTkFCTEVfTEVU
VEVSUFJFU1MpICQoRU5BQkxFX0xJTktfUFJFRkVUQ0gpICQoRU5BQkxFX01BQ19HRVNUVVJFX0VW
RU5UUykgJChFTkFCTEVfTUFUSE1MKSAkKEVOQUJMRV9NRURJQV9DQVBUVVJFKSAkKEVOQUJMRV9N
RURJQV9DT05UUk9MU19TQ1JJUFQpICQoRU5BQkxFX01FRElBX1NFU1NJT04pICQoRU5BQkxFX01F
RElBX1NPVVJDRSkgJChFTkFCTEVfTUVESUFfU1RBVElTVElDUykgJChFTkFCTEVfTUVESUFfU1RS
RUFNKSAkKEVOQUJMRV9NRVRFUl9FTEVNRU5UKSAkKEVOQUJMRV9NSFRNTCkgJChFTkFCTEVfTU9V
U0VfQ1VSU09SX1NDQUxFKSAkKEVOQUJMRV9OQVZJR0FUT1JfQ09OVEVOVF9VVElMUykgJChFTkFC
TEVfTkFWSUdBVE9SX1NUQU5EQUxPTkUpICQoRU5BQkxFX05PVElGSUNBVElPTlMpICQoRU5BQkxF
X1BBWU1FTlRfUkVRVUVTVCkgJChFTkFCTEVfUERGS0lUX1BMVUdJTikgJChFTkFCTEVfUE9JTlRF
Ul9MT0NLKSAkKEVOQUJMRV9QVUJMSUNfU1VGRklYX0xJU1QpICQoRU5BQkxFX1FVT1RBKSAkKEVO
QUJMRV9SRU1PVEVfSU5TUEVDVE9SKSAkKEVOQUJMRV9SRVNPTFVUSU9OX01FRElBX1FVRVJZKSAk
KEVOQUJMRV9SRVNPVVJDRV9VU0FHRSkgJChFTkFCTEVfUlVCQkVSX0JBTkRJTkcpICQoRU5BQkxF
X1NFUlZJQ0VfQ09OVFJPTFMpICQoRU5BQkxFX1NFUlZJQ0VfV09SS0VSKSAkKEVOQUJMRV9TUEVF
Q0hfU1lOVEhFU0lTKSAkKEVOQUJMRV9TVFJFQU1TX0FQSSkgJChFTkFCTEVfU1VCVExFX0NSWVBU
TykgJChFTkFCTEVfU1ZHX0ZPTlRTKSAkKEVOQUJMRV9URUxFUEhPTkVfTlVNQkVSX0RFVEVDVElP
TikgJChFTkFCTEVfVEVYVF9BVVRPU0laSU5HKSAkKEVOQUJMRV9UT1VDSF9FVkVOVFMpICQoRU5B
QkxFX1RPVUNIX0lDT05fTE9BRElORykgJChFTkFCTEVfVVNFUlNFTEVDVF9BTEwpICQoRU5BQkxF
X1ZBUklBVElPTl9GT05UUykgJChFTkFCTEVfVklERU9fUFJFU0VOVEFUSU9OX01PREUpICQoRU5B
QkxFX01BQ19WSURFT19UT09MQk9YKSAkKEVOQUJMRV9WSURFT19UUkFDSykgJChFTkFCTEVfVklE
RU8pICQoRU5BQkxFX1dFQl9BTklNQVRJT05TKSAkKEVOQUJMRV9XRUJfQVVESU8pICQoRU5BQkxF
X1dFQl9SVEMpICQoRU5BQkxFX1dFQkFTU0VNQkxZKSAkKEVOQUJMRV9XRUJHTCkgJChFTkFCTEVf
V0VCR0wyKSAkKEVOQUJMRV9XRUJHUFUpICQoRU5BQkxFX1dJUkVMRVNTX1BMQVlCQUNLX1RBUkdF
VCkgJChFTkFCTEVfWFNMVCk7CitGRUFUVVJFX0RFRklORVMgPSAkKEVOQUJMRV8zRF9UUkFOU0ZP
Uk1TKSAkKEVOQUJMRV9BQ0NFTEVSQVRFRF8yRF9DQU5WQVMpICQoRU5BQkxFX0FDQ0VMRVJBVEVE
X09WRVJGTE9XX1NDUk9MTElORykgJChFTkFCTEVfQVBQTEVfUEFZKSAkKEVOQUJMRV9BUFBMRV9Q
QVlfU0VTU0lPTl9WMykgJChFTkFCTEVfQVRUQUNITUVOVF9FTEVNRU5UKSAkKEVOQUJMRV9BVkZf
Q0FQVElPTlMpICQoRU5BQkxFX0NBQ0hFX1BBUlRJVElPTklORykgJChFTkFCTEVfQ0hBTk5FTF9N
RVNTQUdJTkcpICQoRU5BQkxFX0NPTlRFTlRfRklMVEVSSU5HKSAkKEVOQUJMRV9DU1NfQU5JTUFU
SU9OU19MRVZFTF8yKSAkKEVOQUJMRV9DU1NfQk9YX0RFQ09SQVRJT05fQlJFQUspICQoRU5BQkxF
X0NTU19DT01QT1NJVElORykgJChFTkFCTEVfQ1NTX0RFVklDRV9BREFQVEFUSU9OKSAkKEVOQUJM
RV9DU1NfSU1BR0VfT1JJRU5UQVRJT04pICQoRU5BQkxFX0NTU19JTUFHRV9SRVNPTFVUSU9OKSAk
KEVOQUJMRV9DU1NfU0NST0xMX1NOQVApICQoRU5BQkxFX0NTU19TRUxFQ1RPUlNfTEVWRUw0KSAk
KEVOQUJMRV9DU1NfVFJBSUxJTkdfV09SRCkgJChFTkFCTEVfQ1NTM19URVhUKSAkKEVOQUJMRV9D
VVJTT1JfVklTSUJJTElUWSkgJChFTkFCTEVfQ1VTVE9NX1NDSEVNRV9IQU5ETEVSKSAkKEVOQUJM
RV9EQVNIQk9BUkRfU1VQUE9SVCkgJChFTkFCTEVfREFUQV9JTlRFUkFDVElPTikgJChFTkFCTEVf
REFUQUNVRV9WQUxVRSkgJChFTkFCTEVfREFUQUxJU1RfRUxFTUVOVCkgJChFTkFCTEVfREVWSUNF
X09SSUVOVEFUSU9OKSAkKEVOQUJMRV9EUkFHX1NVUFBPUlQpICQoRU5BQkxFX0VOQ1JZUFRFRF9N
RURJQSkgJChFTkFCTEVfRkFTVF9KSVRfUEVSTUlTU0lPTlMpICQoRU5BQkxFX0ZJTFRFUlNfTEVW
RUxfMikgJChFTkFCTEVfRlRMX0pJVCkgJChFTkFCTEVfRlVMTFNDUkVFTl9BUEkpICQoRU5BQkxF
X0dBTUVQQUQpICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9JQ09OREFUQUJBU0UpICQo
RU5BQkxFX0lOREVYRURfREFUQUJBU0VfSU5fV09SS0VSUykgJChFTkFCTEVfSU5ERVhFRF9EQVRB
QkFTRSkgJChFTkFCTEVfSU5QVVRfVFlQRV9DT0xPUl9QT1BPVkVSKSAkKEVOQUJMRV9JTlBVVF9U
WVBFX0NPTE9SKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEUpICQoRU5BQkxFX0lOUFVUX1RZUEVf
REFURVRJTUVfSU5DT01QTEVURSkgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFVElNRUxPQ0FMKSAk
KEVOQUJMRV9JTlBVVF9UWVBFX01PTlRIKSAkKEVOQUJMRV9JTlBVVF9UWVBFX1RJTUUpICQoRU5B
QkxFX0lOUFVUX1RZUEVfV0VFSykgJChFTkFCTEVfSU5URVJTRUNUSU9OX09CU0VSVkVSKSAkKEVO
QUJMRV9JTlRMKSAkKEVOQUJMRV9JT1NfR0VTVFVSRV9FVkVOVFMpICQoRU5BQkxFX0lPU19UT1VD
SF9FVkVOVFMpICQoRU5BQkxFX0pJVCkgJChFTkFCTEVfS0VZQk9BUkRfS0VZX0FUVFJJQlVURSkg
JChFTkFCTEVfS0VZQk9BUkRfQ09ERV9BVFRSSUJVVEUpICQoRU5BQkxFX0xFR0FDWV9DU1NfVkVO
RE9SX1BSRUZJWEVTKSAkKEVOQUJMRV9MRUdBQ1lfRU5DUllQVEVEX01FRElBKSAkKEVOQUJMRV9M
RUdBQ1lfVkVORE9SX1BSRUZJWEVTKSAkKEVOQUJMRV9MRVRURVJQUkVTUykgJChFTkFCTEVfTElO
S19QUkVGRVRDSCkgJChFTkFCTEVfTUFDX0dFU1RVUkVfRVZFTlRTKSAkKEVOQUJMRV9NQVRITUwp
ICQoRU5BQkxFX01FRElBX0NBUFRVUkUpICQoRU5BQkxFX01FRElBX0NPTlRST0xTX1NDUklQVCkg
JChFTkFCTEVfTUVESUFfU0VTU0lPTikgJChFTkFCTEVfTUVESUFfU09VUkNFKSAkKEVOQUJMRV9N
RURJQV9TVEFUSVNUSUNTKSAkKEVOQUJMRV9NRURJQV9TVFJFQU0pICQoRU5BQkxFX01FVEVSX0VM
RU1FTlQpICQoRU5BQkxFX01IVE1MKSAkKEVOQUJMRV9NT1VTRV9DVVJTT1JfU0NBTEUpICQoRU5B
QkxFX05BVklHQVRPUl9DT05URU5UX1VUSUxTKSAkKEVOQUJMRV9OQVZJR0FUT1JfU1RBTkRBTE9O
RSkgJChFTkFCTEVfTk9USUZJQ0FUSU9OUykgJChFTkFCTEVfUEFZTUVOVF9SRVFVRVNUKSAkKEVO
QUJMRV9QREZLSVRfUExVR0lOKSAkKEVOQUJMRV9QT0lOVEVSX0xPQ0spICQoRU5BQkxFX1BVQkxJ
Q19TVUZGSVhfTElTVCkgJChFTkFCTEVfUVVPVEEpICQoRU5BQkxFX1JFTU9URV9JTlNQRUNUT1Ip
ICQoRU5BQkxFX1JFU09MVVRJT05fTUVESUFfUVVFUlkpICQoRU5BQkxFX1JFU09VUkNFX1VTQUdF
KSAkKEVOQUJMRV9SVUJCRVJfQkFORElORykgJChFTkFCTEVfU0VSVklDRV9DT05UUk9MUykgJChF
TkFCTEVfU0VSVklDRV9XT1JLRVIpICQoRU5BQkxFX1NQRUVDSF9TWU5USEVTSVMpICQoRU5BQkxF
X1NUUkVBTVNfQVBJKSAkKEVOQUJMRV9TVUJUTEVfQ1JZUFRPKSAkKEVOQUJMRV9TVkdfRk9OVFMp
ICQoRU5BQkxFX1RFTEVQSE9ORV9OVU1CRVJfREVURUNUSU9OKSAkKEVOQUJMRV9URVhUX0FVVE9T
SVpJTkcpICQoRU5BQkxFX1RPVUNIX0VWRU5UUykgJChFTkFCTEVfVE9VQ0hfSUNPTl9MT0FESU5H
KSAkKEVOQUJMRV9VU0VSU0VMRUNUX0FMTCkgJChFTkFCTEVfVkFSSUFUSU9OX0ZPTlRTKSAkKEVO
QUJMRV9WSURFT19QUkVTRU5UQVRJT05fTU9ERSkgJChFTkFCTEVfTUFDX1ZJREVPX1RPT0xCT1gp
ICQoRU5BQkxFX1ZJREVPX1RSQUNLKSAkKEVOQUJMRV9WSURFTykgJChFTkFCTEVfV0VCX0FOSU1B
VElPTlMpICQoRU5BQkxFX1dFQl9BVURJTykgJChFTkFCTEVfV0VCX1JUQykgJChFTkFCTEVfV0VC
QVNTRU1CTFkpICQoRU5BQkxFX1dFQkdMKSAkKEVOQUJMRV9XRUJHTDIpICQoRU5BQkxFX1dFQkdQ
VSkgJChFTkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAkKEVOQUJMRV9YU0xUKTsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMjI1NykKKysrIFNvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2
IEBACisyMDE3LTA5LTE5ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAg
ICAgICBSZW1vdmUgRE9NIGFuZCBzdHlsaW5nIHN1cHBvcnQgZm9yIENTUyBSZWdpb25zCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzcyMjEKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENvbmZpZ3VyYXRp
b25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnOgorICAgICAgICAqIERPTS9ET01DU1MubW06Cisg
ICAgICAgIChraXRDbGFzcyk6CisgICAgICAgICogRE9NL0RPTUVsZW1lbnQubW06CisgICAgICAg
ICgtW0RPTUVsZW1lbnQgd2Via2l0UmVnaW9uT3ZlcnNldF0pOiBEZWxldGVkLgorCiAyMDE3LTA5
LTE5ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAgICAgICAgIExheWVy
aW5nIHZpb2xhdGlvbiBpbiBFZGl0b3I6OmNyZWF0ZUZyYWdtZW50CkluZGV4OiBTb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9Db25maWd1cmF0aW9ucy9GZWF0dXJl
RGVmaW5lcy54Y2NvbmZpZwkocmV2aXNpb24gMjIyMjU3KQorKysgU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcJKHdvcmtpbmcgY29w
eSkKQEAgLTc4LDcgKzc4LDYgQEAgRU5BQkxFX0NTU19DT01QT1NJVElORyA9IEVOQUJMRV9DU1Nf
Q09NUAogRU5BQkxFX0NTU19ERVZJQ0VfQURBUFRBVElPTiA9IDsKIEVOQUJMRV9DU1NfSU1BR0Vf
T1JJRU5UQVRJT04gPSA7CiBFTkFCTEVfQ1NTX0lNQUdFX1JFU09MVVRJT04gPSA7Ci1FTkFCTEVf
Q1NTX1JFR0lPTlMgPSA7CiBFTkFCTEVfQ1NTX1NFTEVDVE9SU19MRVZFTDQgPSBFTkFCTEVfQ1NT
X1NFTEVDVE9SU19MRVZFTDQ7CiBFTkFCTEVfQ1NTM19URVhUID0gOwogRU5BQkxFX0NVUlNPUl9W
SVNJQklMSVRZID0gRU5BQkxFX0NVUlNPUl9WSVNJQklMSVRZOwpAQCAtMjQzLDQgKzI0Miw0IEBA
IEVOQUJMRV9EQVRBX0lOVEVSQUNUSU9OX2lwaG9uZXNpbXVsYXRvciAKIEVOQUJMRV9EQVRBX0lO
VEVSQUNUSU9OW3Nkaz1pcGhvbmVvczEwKl0gPSA7CiBFTkFCTEVfREFUQV9JTlRFUkFDVElPTltz
ZGs9aXBob25lc2ltdWxhdG9yMTAqXSA9IDsKIAotRkVBVFVSRV9ERUZJTkVTID0gJChFTkFCTEVf
M0RfVFJBTlNGT1JNUykgJChFTkFCTEVfQUNDRUxFUkFURURfMkRfQ0FOVkFTKSAkKEVOQUJMRV9B
Q0NFTEVSQVRFRF9PVkVSRkxPV19TQ1JPTExJTkcpICQoRU5BQkxFX0FQUExFX1BBWSkgJChFTkFC
TEVfQVBQTEVfUEFZX1NFU1NJT05fVjMpICQoRU5BQkxFX0FUVEFDSE1FTlRfRUxFTUVOVCkgJChF
TkFCTEVfQVZGX0NBUFRJT05TKSAkKEVOQUJMRV9DQUNIRV9QQVJUSVRJT05JTkcpICQoRU5BQkxF
X0NIQU5ORUxfTUVTU0FHSU5HKSAkKEVOQUJMRV9DT05URU5UX0ZJTFRFUklORykgJChFTkFCTEVf
Q1NTX0FOSU1BVElPTlNfTEVWRUxfMikgJChFTkFCTEVfQ1NTX0JPWF9ERUNPUkFUSU9OX0JSRUFL
KSAkKEVOQUJMRV9DU1NfQ09NUE9TSVRJTkcpICQoRU5BQkxFX0NTU19ERVZJQ0VfQURBUFRBVElP
TikgJChFTkFCTEVfQ1NTX0lNQUdFX09SSUVOVEFUSU9OKSAkKEVOQUJMRV9DU1NfSU1BR0VfUkVT
T0xVVElPTikgJChFTkFCTEVfQ1NTX1JFR0lPTlMpICQoRU5BQkxFX0NTU19TQ1JPTExfU05BUCkg
JChFTkFCTEVfQ1NTX1NFTEVDVE9SU19MRVZFTDQpICQoRU5BQkxFX0NTU19UUkFJTElOR19XT1JE
KSAkKEVOQUJMRV9DU1MzX1RFWFQpICQoRU5BQkxFX0NVUlNPUl9WSVNJQklMSVRZKSAkKEVOQUJM
RV9DVVNUT01fU0NIRU1FX0hBTkRMRVIpICQoRU5BQkxFX0RBU0hCT0FSRF9TVVBQT1JUKSAkKEVO
QUJMRV9EQVRBX0lOVEVSQUNUSU9OKSAkKEVOQUJMRV9EQVRBQ1VFX1ZBTFVFKSAkKEVOQUJMRV9E
QVRBTElTVF9FTEVNRU5UKSAkKEVOQUJMRV9ERVZJQ0VfT1JJRU5UQVRJT04pICQoRU5BQkxFX0RS
QUdfU1VQUE9SVCkgJChFTkFCTEVfRU5DUllQVEVEX01FRElBKSAkKEVOQUJMRV9GQVNUX0pJVF9Q
RVJNSVNTSU9OUykgJChFTkFCTEVfRklMVEVSU19MRVZFTF8yKSAkKEVOQUJMRV9GVExfSklUKSAk
KEVOQUJMRV9GVUxMU0NSRUVOX0FQSSkgJChFTkFCTEVfR0FNRVBBRCkgJChFTkFCTEVfR0VPTE9D
QVRJT04pICQoRU5BQkxFX0lDT05EQVRBQkFTRSkgJChFTkFCTEVfSU5ERVhFRF9EQVRBQkFTRV9J
Tl9XT1JLRVJTKSAkKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFKSAkKEVOQUJMRV9JTlBVVF9UWVBF
X0NPTE9SX1BPUE9WRVIpICQoRU5BQkxFX0lOUFVUX1RZUEVfQ09MT1IpICQoRU5BQkxFX0lOUFVU
X1RZUEVfREFURSkgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFVElNRV9JTkNPTVBMRVRFKSAkKEVO
QUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1FTE9DQUwpICQoRU5BQkxFX0lOUFVUX1RZUEVfTU9OVEgp
ICQoRU5BQkxFX0lOUFVUX1RZUEVfVElNRSkgJChFTkFCTEVfSU5QVVRfVFlQRV9XRUVLKSAkKEVO
QUJMRV9JTlRFUlNFQ1RJT05fT0JTRVJWRVIpICQoRU5BQkxFX0lOVEwpICQoRU5BQkxFX0lPU19H
RVNUVVJFX0VWRU5UUykgJChFTkFCTEVfSU9TX1RPVUNIX0VWRU5UUykgJChFTkFCTEVfSklUKSAk
KEVOQUJMRV9LRVlCT0FSRF9LRVlfQVRUUklCVVRFKSAkKEVOQUJMRV9LRVlCT0FSRF9DT0RFX0FU
VFJJQlVURSkgJChFTkFCTEVfTEVHQUNZX0NTU19WRU5ET1JfUFJFRklYRVMpICQoRU5BQkxFX0xF
R0FDWV9FTkNSWVBURURfTUVESUEpICQoRU5BQkxFX0xFR0FDWV9WRU5ET1JfUFJFRklYRVMpICQo
RU5BQkxFX0xFVFRFUlBSRVNTKSAkKEVOQUJMRV9MSU5LX1BSRUZFVENIKSAkKEVOQUJMRV9NQUNf
R0VTVFVSRV9FVkVOVFMpICQoRU5BQkxFX01BVEhNTCkgJChFTkFCTEVfTUVESUFfQ0FQVFVSRSkg
JChFTkFCTEVfTUVESUFfQ09OVFJPTFNfU0NSSVBUKSAkKEVOQUJMRV9NRURJQV9TRVNTSU9OKSAk
KEVOQUJMRV9NRURJQV9TT1VSQ0UpICQoRU5BQkxFX01FRElBX1NUQVRJU1RJQ1MpICQoRU5BQkxF
X01FRElBX1NUUkVBTSkgJChFTkFCTEVfTUVURVJfRUxFTUVOVCkgJChFTkFCTEVfTUhUTUwpICQo
RU5BQkxFX01PVVNFX0NVUlNPUl9TQ0FMRSkgJChFTkFCTEVfTkFWSUdBVE9SX0NPTlRFTlRfVVRJ
TFMpICQoRU5BQkxFX05BVklHQVRPUl9TVEFOREFMT05FKSAkKEVOQUJMRV9OT1RJRklDQVRJT05T
KSAkKEVOQUJMRV9QQVlNRU5UX1JFUVVFU1QpICQoRU5BQkxFX1BERktJVF9QTFVHSU4pICQoRU5B
QkxFX1BPSU5URVJfTE9DSykgJChFTkFCTEVfUFVCTElDX1NVRkZJWF9MSVNUKSAkKEVOQUJMRV9R
VU9UQSkgJChFTkFCTEVfUkVNT1RFX0lOU1BFQ1RPUikgJChFTkFCTEVfUkVTT0xVVElPTl9NRURJ
QV9RVUVSWSkgJChFTkFCTEVfUkVTT1VSQ0VfVVNBR0UpICQoRU5BQkxFX1JVQkJFUl9CQU5ESU5H
KSAkKEVOQUJMRV9TRVJWSUNFX0NPTlRST0xTKSAkKEVOQUJMRV9TRVJWSUNFX1dPUktFUikgJChF
TkFCTEVfU1BFRUNIX1NZTlRIRVNJUykgJChFTkFCTEVfU1RSRUFNU19BUEkpICQoRU5BQkxFX1NV
QlRMRV9DUllQVE8pICQoRU5BQkxFX1NWR19GT05UUykgJChFTkFCTEVfVEVMRVBIT05FX05VTUJF
Ul9ERVRFQ1RJT04pICQoRU5BQkxFX1RFWFRfQVVUT1NJWklORykgJChFTkFCTEVfVE9VQ0hfRVZF
TlRTKSAkKEVOQUJMRV9UT1VDSF9JQ09OX0xPQURJTkcpICQoRU5BQkxFX1VTRVJTRUxFQ1RfQUxM
KSAkKEVOQUJMRV9WQVJJQVRJT05fRk9OVFMpICQoRU5BQkxFX1ZJREVPX1BSRVNFTlRBVElPTl9N
T0RFKSAkKEVOQUJMRV9NQUNfVklERU9fVE9PTEJPWCkgJChFTkFCTEVfVklERU9fVFJBQ0spICQo
RU5BQkxFX1ZJREVPKSAkKEVOQUJMRV9XRUJfQU5JTUFUSU9OUykgJChFTkFCTEVfV0VCX0FVRElP
KSAkKEVOQUJMRV9XRUJfUlRDKSAkKEVOQUJMRV9XRUJBU1NFTUJMWSkgJChFTkFCTEVfV0VCR0wp
ICQoRU5BQkxFX1dFQkdMMikgJChFTkFCTEVfV0VCR1BVKSAkKEVOQUJMRV9XSVJFTEVTU19QTEFZ
QkFDS19UQVJHRVQpICQoRU5BQkxFX1hTTFQpOworRkVBVFVSRV9ERUZJTkVTID0gJChFTkFCTEVf
M0RfVFJBTlNGT1JNUykgJChFTkFCTEVfQUNDRUxFUkFURURfMkRfQ0FOVkFTKSAkKEVOQUJMRV9B
Q0NFTEVSQVRFRF9PVkVSRkxPV19TQ1JPTExJTkcpICQoRU5BQkxFX0FQUExFX1BBWSkgJChFTkFC
TEVfQVBQTEVfUEFZX1NFU1NJT05fVjMpICQoRU5BQkxFX0FUVEFDSE1FTlRfRUxFTUVOVCkgJChF
TkFCTEVfQVZGX0NBUFRJT05TKSAkKEVOQUJMRV9DQUNIRV9QQVJUSVRJT05JTkcpICQoRU5BQkxF
X0NIQU5ORUxfTUVTU0FHSU5HKSAkKEVOQUJMRV9DT05URU5UX0ZJTFRFUklORykgJChFTkFCTEVf
Q1NTX0FOSU1BVElPTlNfTEVWRUxfMikgJChFTkFCTEVfQ1NTX0JPWF9ERUNPUkFUSU9OX0JSRUFL
KSAkKEVOQUJMRV9DU1NfQ09NUE9TSVRJTkcpICQoRU5BQkxFX0NTU19ERVZJQ0VfQURBUFRBVElP
TikgJChFTkFCTEVfQ1NTX0lNQUdFX09SSUVOVEFUSU9OKSAkKEVOQUJMRV9DU1NfSU1BR0VfUkVT
T0xVVElPTikgJChFTkFCTEVfQ1NTX1NDUk9MTF9TTkFQKSAkKEVOQUJMRV9DU1NfU0VMRUNUT1JT
X0xFVkVMNCkgJChFTkFCTEVfQ1NTX1RSQUlMSU5HX1dPUkQpICQoRU5BQkxFX0NTUzNfVEVYVCkg
JChFTkFCTEVfQ1VSU09SX1ZJU0lCSUxJVFkpICQoRU5BQkxFX0NVU1RPTV9TQ0hFTUVfSEFORExF
UikgJChFTkFCTEVfREFTSEJPQVJEX1NVUFBPUlQpICQoRU5BQkxFX0RBVEFfSU5URVJBQ1RJT04p
ICQoRU5BQkxFX0RBVEFDVUVfVkFMVUUpICQoRU5BQkxFX0RBVEFMSVNUX0VMRU1FTlQpICQoRU5B
QkxFX0RFVklDRV9PUklFTlRBVElPTikgJChFTkFCTEVfRFJBR19TVVBQT1JUKSAkKEVOQUJMRV9F
TkNSWVBURURfTUVESUEpICQoRU5BQkxFX0ZBU1RfSklUX1BFUk1JU1NJT05TKSAkKEVOQUJMRV9G
SUxURVJTX0xFVkVMXzIpICQoRU5BQkxFX0ZUTF9KSVQpICQoRU5BQkxFX0ZVTExTQ1JFRU5fQVBJ
KSAkKEVOQUJMRV9HQU1FUEFEKSAkKEVOQUJMRV9HRU9MT0NBVElPTikgJChFTkFCTEVfSUNPTkRB
VEFCQVNFKSAkKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFX0lOX1dPUktFUlMpICQoRU5BQkxFX0lO
REVYRURfREFUQUJBU0UpICQoRU5BQkxFX0lOUFVUX1RZUEVfQ09MT1JfUE9QT1ZFUikgJChFTkFC
TEVfSU5QVVRfVFlQRV9DT0xPUikgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFKSAkKEVOQUJMRV9J
TlBVVF9UWVBFX0RBVEVUSU1FX0lOQ09NUExFVEUpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURVRJ
TUVMT0NBTCkgJChFTkFCTEVfSU5QVVRfVFlQRV9NT05USCkgJChFTkFCTEVfSU5QVVRfVFlQRV9U
SU1FKSAkKEVOQUJMRV9JTlBVVF9UWVBFX1dFRUspICQoRU5BQkxFX0lOVEVSU0VDVElPTl9PQlNF
UlZFUikgJChFTkFCTEVfSU5UTCkgJChFTkFCTEVfSU9TX0dFU1RVUkVfRVZFTlRTKSAkKEVOQUJM
RV9JT1NfVE9VQ0hfRVZFTlRTKSAkKEVOQUJMRV9KSVQpICQoRU5BQkxFX0tFWUJPQVJEX0tFWV9B
VFRSSUJVVEUpICQoRU5BQkxFX0tFWUJPQVJEX0NPREVfQVRUUklCVVRFKSAkKEVOQUJMRV9MRUdB
Q1lfQ1NTX1ZFTkRPUl9QUkVGSVhFUykgJChFTkFCTEVfTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkg
JChFTkFCTEVfTEVHQUNZX1ZFTkRPUl9QUkVGSVhFUykgJChFTkFCTEVfTEVUVEVSUFJFU1MpICQo
RU5BQkxFX0xJTktfUFJFRkVUQ0gpICQoRU5BQkxFX01BQ19HRVNUVVJFX0VWRU5UUykgJChFTkFC
TEVfTUFUSE1MKSAkKEVOQUJMRV9NRURJQV9DQVBUVVJFKSAkKEVOQUJMRV9NRURJQV9DT05UUk9M
U19TQ1JJUFQpICQoRU5BQkxFX01FRElBX1NFU1NJT04pICQoRU5BQkxFX01FRElBX1NPVVJDRSkg
JChFTkFCTEVfTUVESUFfU1RBVElTVElDUykgJChFTkFCTEVfTUVESUFfU1RSRUFNKSAkKEVOQUJM
RV9NRVRFUl9FTEVNRU5UKSAkKEVOQUJMRV9NSFRNTCkgJChFTkFCTEVfTU9VU0VfQ1VSU09SX1ND
QUxFKSAkKEVOQUJMRV9OQVZJR0FUT1JfQ09OVEVOVF9VVElMUykgJChFTkFCTEVfTkFWSUdBVE9S
X1NUQU5EQUxPTkUpICQoRU5BQkxFX05PVElGSUNBVElPTlMpICQoRU5BQkxFX1BBWU1FTlRfUkVR
VUVTVCkgJChFTkFCTEVfUERGS0lUX1BMVUdJTikgJChFTkFCTEVfUE9JTlRFUl9MT0NLKSAkKEVO
QUJMRV9QVUJMSUNfU1VGRklYX0xJU1QpICQoRU5BQkxFX1FVT1RBKSAkKEVOQUJMRV9SRU1PVEVf
SU5TUEVDVE9SKSAkKEVOQUJMRV9SRVNPTFVUSU9OX01FRElBX1FVRVJZKSAkKEVOQUJMRV9SRVNP
VVJDRV9VU0FHRSkgJChFTkFCTEVfUlVCQkVSX0JBTkRJTkcpICQoRU5BQkxFX1NFUlZJQ0VfQ09O
VFJPTFMpICQoRU5BQkxFX1NFUlZJQ0VfV09SS0VSKSAkKEVOQUJMRV9TUEVFQ0hfU1lOVEhFU0lT
KSAkKEVOQUJMRV9TVFJFQU1TX0FQSSkgJChFTkFCTEVfU1VCVExFX0NSWVBUTykgJChFTkFCTEVf
U1ZHX0ZPTlRTKSAkKEVOQUJMRV9URUxFUEhPTkVfTlVNQkVSX0RFVEVDVElPTikgJChFTkFCTEVf
VEVYVF9BVVRPU0laSU5HKSAkKEVOQUJMRV9UT1VDSF9FVkVOVFMpICQoRU5BQkxFX1RPVUNIX0lD
T05fTE9BRElORykgJChFTkFCTEVfVVNFUlNFTEVDVF9BTEwpICQoRU5BQkxFX1ZBUklBVElPTl9G
T05UUykgJChFTkFCTEVfVklERU9fUFJFU0VOVEFUSU9OX01PREUpICQoRU5BQkxFX01BQ19WSURF
T19UT09MQk9YKSAkKEVOQUJMRV9WSURFT19UUkFDSykgJChFTkFCTEVfVklERU8pICQoRU5BQkxF
X1dFQl9BTklNQVRJT05TKSAkKEVOQUJMRV9XRUJfQVVESU8pICQoRU5BQkxFX1dFQl9SVEMpICQo
RU5BQkxFX1dFQkFTU0VNQkxZKSAkKEVOQUJMRV9XRUJHTCkgJChFTkFCTEVfV0VCR0wyKSAkKEVO
QUJMRV9XRUJHUFUpICQoRU5BQkxFX1dJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJChFTkFCTEVf
WFNMVCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ1NTLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01DU1MubW0JKHJldmlzaW9u
IDIyMjI1NykKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01DU1MubW0JKHdvcmtp
bmcgY29weSkKQEAgLTgyLDkgKzgyLDYgQEAgQ2xhc3Mga2l0Q2xhc3MoV2ViQ29yZTo6Q1NTUnVs
ZSogaW1wbCkKICNpZiBFTkFCTEUoQ1NTX0RFVklDRV9BREFQVEFUSU9OKQogICAgIGNhc2UgV2Vi
Q29yZTo6Q1NTUnVsZTo6V0VCS0lUX1ZJRVdQT1JUX1JVTEU6CiAjZW5kaWYKLSNpZiBFTkFCTEUo
Q1NTX1JFR0lPTlMpCi0gICAgY2FzZSBXZWJDb3JlOjpDU1NSdWxlOjpXRUJLSVRfUkVHSU9OX1JV
TEU6Ci0jZW5kaWYKICAgICAgICAgcmV0dXJuIFtET01DU1NSdWxlIGNsYXNzXTsKICAgICB9CiAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9E
T00vRE9NRWxlbWVudC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9E
T00vRE9NRWxlbWVudC5tbQkocmV2aXNpb24gMjIyMjU3KQorKysgU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTUVsZW1lbnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTIyNywxNCArMjI3LDYg
QEAgLSAodm9pZClzZXRVaWFjdGlvbnM6KE5TU3RyaW5nICopbmV3VWlhYwogICAgIHVud3JhcCgq
c2VsZikuc2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihXZWJDb3JlOjpIVE1MTmFt
ZXM6OnVpYWN0aW9uc0F0dHIsIG5ld1VpYWN0aW9ucyk7CiB9CiAKLSNpZiBFTkFCTEUoQ1NTX1JF
R0lPTlMpCi0tIChOU1N0cmluZyAqKXdlYmtpdFJlZ2lvbk92ZXJzZXQKLXsKLSAgICBXZWJDb3Jl
OjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgcmV0dXJuIHVud3JhcCgqc2VsZiku
d2Via2l0UmVnaW9uT3ZlcnNldCgpOwotfQotI2VuZGlmCi0KIC0gKERPTUVsZW1lbnQgKilwcmV2
aW91c0VsZW1lbnRTaWJsaW5nCiB7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRl
IHN0YXRlOwpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9GZWF0dXJl
RGVmaW5lcy54Y2NvbmZpZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL0NvbmZp
Z3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCShyZXZpc2lvbiAyMjIyNTcpCisrKyBU
b29scy9UZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmln
CSh3b3JraW5nIGNvcHkpCkBAIC03OCw3ICs3OCw2IEBAIEVOQUJMRV9DU1NfQ09NUE9TSVRJTkcg
PSBFTkFCTEVfQ1NTX0NPTVAKIEVOQUJMRV9DU1NfREVWSUNFX0FEQVBUQVRJT04gPSA7CiBFTkFC
TEVfQ1NTX0lNQUdFX09SSUVOVEFUSU9OID0gOwogRU5BQkxFX0NTU19JTUFHRV9SRVNPTFVUSU9O
ID0gOwotRU5BQkxFX0NTU19SRUdJT05TID0gOwogRU5BQkxFX0NTU19TRUxFQ1RPUlNfTEVWRUw0
ID0gRU5BQkxFX0NTU19TRUxFQ1RPUlNfTEVWRUw0OwogRU5BQkxFX0NTUzNfVEVYVCA9IDsKIEVO
QUJMRV9DVVJTT1JfVklTSUJJTElUWSA9IEVOQUJMRV9DVVJTT1JfVklTSUJJTElUWTsKQEAgLTI0
Myw0ICsyNDIsNCBAQCBFTkFCTEVfREFUQV9JTlRFUkFDVElPTl9pcGhvbmVzaW11bGF0b3IgCiBF
TkFCTEVfREFUQV9JTlRFUkFDVElPTltzZGs9aXBob25lb3MxMCpdID0gOwogRU5BQkxFX0RBVEFf
SU5URVJBQ1RJT05bc2RrPWlwaG9uZXNpbXVsYXRvcjEwKl0gPSA7CiAKLUZFQVRVUkVfREVGSU5F
UyA9ICQoRU5BQkxFXzNEX1RSQU5TRk9STVMpICQoRU5BQkxFX0FDQ0VMRVJBVEVEXzJEX0NBTlZB
UykgJChFTkFCTEVfQUNDRUxFUkFURURfT1ZFUkZMT1dfU0NST0xMSU5HKSAkKEVOQUJMRV9BUFBM
RV9QQVkpICQoRU5BQkxFX0FQUExFX1BBWV9TRVNTSU9OX1YzKSAkKEVOQUJMRV9BVFRBQ0hNRU5U
X0VMRU1FTlQpICQoRU5BQkxFX0FWRl9DQVBUSU9OUykgJChFTkFCTEVfQ0FDSEVfUEFSVElUSU9O
SU5HKSAkKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORykgJChFTkFCTEVfQ09OVEVOVF9GSUxURVJJ
TkcpICQoRU5BQkxFX0NTU19BTklNQVRJT05TX0xFVkVMXzIpICQoRU5BQkxFX0NTU19CT1hfREVD
T1JBVElPTl9CUkVBSykgJChFTkFCTEVfQ1NTX0NPTVBPU0lUSU5HKSAkKEVOQUJMRV9DU1NfREVW
SUNFX0FEQVBUQVRJT04pICQoRU5BQkxFX0NTU19JTUFHRV9PUklFTlRBVElPTikgJChFTkFCTEVf
Q1NTX0lNQUdFX1JFU09MVVRJT04pICQoRU5BQkxFX0NTU19SRUdJT05TKSAkKEVOQUJMRV9DU1Nf
U0NST0xMX1NOQVApICQoRU5BQkxFX0NTU19TRUxFQ1RPUlNfTEVWRUw0KSAkKEVOQUJMRV9DU1Nf
VFJBSUxJTkdfV09SRCkgJChFTkFCTEVfQ1NTM19URVhUKSAkKEVOQUJMRV9DVVJTT1JfVklTSUJJ
TElUWSkgJChFTkFCTEVfQ1VTVE9NX1NDSEVNRV9IQU5ETEVSKSAkKEVOQUJMRV9EQVNIQk9BUkRf
U1VQUE9SVCkgJChFTkFCTEVfREFUQV9JTlRFUkFDVElPTikgJChFTkFCTEVfREFUQUNVRV9WQUxV
RSkgJChFTkFCTEVfREFUQUxJU1RfRUxFTUVOVCkgJChFTkFCTEVfREVWSUNFX09SSUVOVEFUSU9O
KSAkKEVOQUJMRV9EUkFHX1NVUFBPUlQpICQoRU5BQkxFX0VOQ1JZUFRFRF9NRURJQSkgJChFTkFC
TEVfRkFTVF9KSVRfUEVSTUlTU0lPTlMpICQoRU5BQkxFX0ZJTFRFUlNfTEVWRUxfMikgJChFTkFC
TEVfRlRMX0pJVCkgJChFTkFCTEVfRlVMTFNDUkVFTl9BUEkpICQoRU5BQkxFX0dBTUVQQUQpICQo
RU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9JQ09OREFUQUJBU0UpICQoRU5BQkxFX0lOREVY
RURfREFUQUJBU0VfSU5fV09SS0VSUykgJChFTkFCTEVfSU5ERVhFRF9EQVRBQkFTRSkgJChFTkFC
TEVfSU5QVVRfVFlQRV9DT0xPUl9QT1BPVkVSKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0NPTE9SKSAk
KEVOQUJMRV9JTlBVVF9UWVBFX0RBVEUpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURVRJTUVfSU5D
T01QTEVURSkgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFVElNRUxPQ0FMKSAkKEVOQUJMRV9JTlBV
VF9UWVBFX01PTlRIKSAkKEVOQUJMRV9JTlBVVF9UWVBFX1RJTUUpICQoRU5BQkxFX0lOUFVUX1RZ
UEVfV0VFSykgJChFTkFCTEVfSU5URVJTRUNUSU9OX09CU0VSVkVSKSAkKEVOQUJMRV9JTlRMKSAk
KEVOQUJMRV9JT1NfR0VTVFVSRV9FVkVOVFMpICQoRU5BQkxFX0lPU19UT1VDSF9FVkVOVFMpICQo
RU5BQkxFX0pJVCkgJChFTkFCTEVfS0VZQk9BUkRfS0VZX0FUVFJJQlVURSkgJChFTkFCTEVfS0VZ
Qk9BUkRfQ09ERV9BVFRSSUJVVEUpICQoRU5BQkxFX0xFR0FDWV9DU1NfVkVORE9SX1BSRUZJWEVT
KSAkKEVOQUJMRV9MRUdBQ1lfRU5DUllQVEVEX01FRElBKSAkKEVOQUJMRV9MRUdBQ1lfVkVORE9S
X1BSRUZJWEVTKSAkKEVOQUJMRV9MRVRURVJQUkVTUykgJChFTkFCTEVfTElOS19QUkVGRVRDSCkg
JChFTkFCTEVfTUFDX0dFU1RVUkVfRVZFTlRTKSAkKEVOQUJMRV9NQVRITUwpICQoRU5BQkxFX01F
RElBX0NBUFRVUkUpICQoRU5BQkxFX01FRElBX0NPTlRST0xTX1NDUklQVCkgJChFTkFCTEVfTUVE
SUFfU0VTU0lPTikgJChFTkFCTEVfTUVESUFfU09VUkNFKSAkKEVOQUJMRV9NRURJQV9TVEFUSVNU
SUNTKSAkKEVOQUJMRV9NRURJQV9TVFJFQU0pICQoRU5BQkxFX01FVEVSX0VMRU1FTlQpICQoRU5B
QkxFX01IVE1MKSAkKEVOQUJMRV9NT1VTRV9DVVJTT1JfU0NBTEUpICQoRU5BQkxFX05BVklHQVRP
Ul9DT05URU5UX1VUSUxTKSAkKEVOQUJMRV9OQVZJR0FUT1JfU1RBTkRBTE9ORSkgJChFTkFCTEVf
Tk9USUZJQ0FUSU9OUykgJChFTkFCTEVfUEFZTUVOVF9SRVFVRVNUKSAkKEVOQUJMRV9QREZLSVRf
UExVR0lOKSAkKEVOQUJMRV9QT0lOVEVSX0xPQ0spICQoRU5BQkxFX1BVQkxJQ19TVUZGSVhfTElT
VCkgJChFTkFCTEVfUVVPVEEpICQoRU5BQkxFX1JFTU9URV9JTlNQRUNUT1IpICQoRU5BQkxFX1JF
U09MVVRJT05fTUVESUFfUVVFUlkpICQoRU5BQkxFX1JFU09VUkNFX1VTQUdFKSAkKEVOQUJMRV9S
VUJCRVJfQkFORElORykgJChFTkFCTEVfU0VSVklDRV9DT05UUk9MUykgJChFTkFCTEVfU0VSVklD
RV9XT1JLRVIpICQoRU5BQkxFX1NQRUVDSF9TWU5USEVTSVMpICQoRU5BQkxFX1NUUkVBTVNfQVBJ
KSAkKEVOQUJMRV9TVUJUTEVfQ1JZUFRPKSAkKEVOQUJMRV9TVkdfRk9OVFMpICQoRU5BQkxFX1RF
TEVQSE9ORV9OVU1CRVJfREVURUNUSU9OKSAkKEVOQUJMRV9URVhUX0FVVE9TSVpJTkcpICQoRU5B
QkxFX1RPVUNIX0VWRU5UUykgJChFTkFCTEVfVE9VQ0hfSUNPTl9MT0FESU5HKSAkKEVOQUJMRV9V
U0VSU0VMRUNUX0FMTCkgJChFTkFCTEVfVkFSSUFUSU9OX0ZPTlRTKSAkKEVOQUJMRV9WSURFT19Q
UkVTRU5UQVRJT05fTU9ERSkgJChFTkFCTEVfTUFDX1ZJREVPX1RPT0xCT1gpICQoRU5BQkxFX1ZJ
REVPX1RSQUNLKSAkKEVOQUJMRV9WSURFTykgJChFTkFCTEVfV0VCX0FOSU1BVElPTlMpICQoRU5B
QkxFX1dFQl9BVURJTykgJChFTkFCTEVfV0VCX1JUQykgJChFTkFCTEVfV0VCQVNTRU1CTFkpICQo
RU5BQkxFX1dFQkdMKSAkKEVOQUJMRV9XRUJHTDIpICQoRU5BQkxFX1dFQkdQVSkgJChFTkFCTEVf
V0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAkKEVOQUJMRV9YU0xUKTsKK0ZFQVRVUkVfREVGSU5F
UyA9ICQoRU5BQkxFXzNEX1RSQU5TRk9STVMpICQoRU5BQkxFX0FDQ0VMRVJBVEVEXzJEX0NBTlZB
UykgJChFTkFCTEVfQUNDRUxFUkFURURfT1ZFUkZMT1dfU0NST0xMSU5HKSAkKEVOQUJMRV9BUFBM
RV9QQVkpICQoRU5BQkxFX0FQUExFX1BBWV9TRVNTSU9OX1YzKSAkKEVOQUJMRV9BVFRBQ0hNRU5U
X0VMRU1FTlQpICQoRU5BQkxFX0FWRl9DQVBUSU9OUykgJChFTkFCTEVfQ0FDSEVfUEFSVElUSU9O
SU5HKSAkKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORykgJChFTkFCTEVfQ09OVEVOVF9GSUxURVJJ
TkcpICQoRU5BQkxFX0NTU19BTklNQVRJT05TX0xFVkVMXzIpICQoRU5BQkxFX0NTU19CT1hfREVD
T1JBVElPTl9CUkVBSykgJChFTkFCTEVfQ1NTX0NPTVBPU0lUSU5HKSAkKEVOQUJMRV9DU1NfREVW
SUNFX0FEQVBUQVRJT04pICQoRU5BQkxFX0NTU19JTUFHRV9PUklFTlRBVElPTikgJChFTkFCTEVf
Q1NTX0lNQUdFX1JFU09MVVRJT04pICQoRU5BQkxFX0NTU19TQ1JPTExfU05BUCkgJChFTkFCTEVf
Q1NTX1NFTEVDVE9SU19MRVZFTDQpICQoRU5BQkxFX0NTU19UUkFJTElOR19XT1JEKSAkKEVOQUJM
RV9DU1MzX1RFWFQpICQoRU5BQkxFX0NVUlNPUl9WSVNJQklMSVRZKSAkKEVOQUJMRV9DVVNUT01f
U0NIRU1FX0hBTkRMRVIpICQoRU5BQkxFX0RBU0hCT0FSRF9TVVBQT1JUKSAkKEVOQUJMRV9EQVRB
X0lOVEVSQUNUSU9OKSAkKEVOQUJMRV9EQVRBQ1VFX1ZBTFVFKSAkKEVOQUJMRV9EQVRBTElTVF9F
TEVNRU5UKSAkKEVOQUJMRV9ERVZJQ0VfT1JJRU5UQVRJT04pICQoRU5BQkxFX0RSQUdfU1VQUE9S
VCkgJChFTkFCTEVfRU5DUllQVEVEX01FRElBKSAkKEVOQUJMRV9GQVNUX0pJVF9QRVJNSVNTSU9O
UykgJChFTkFCTEVfRklMVEVSU19MRVZFTF8yKSAkKEVOQUJMRV9GVExfSklUKSAkKEVOQUJMRV9G
VUxMU0NSRUVOX0FQSSkgJChFTkFCTEVfR0FNRVBBRCkgJChFTkFCTEVfR0VPTE9DQVRJT04pICQo
RU5BQkxFX0lDT05EQVRBQkFTRSkgJChFTkFCTEVfSU5ERVhFRF9EQVRBQkFTRV9JTl9XT1JLRVJT
KSAkKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0NPTE9SX1BP
UE9WRVIpICQoRU5BQkxFX0lOUFVUX1RZUEVfQ09MT1IpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFU
RSkgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFVElNRV9JTkNPTVBMRVRFKSAkKEVOQUJMRV9JTlBV
VF9UWVBFX0RBVEVUSU1FTE9DQUwpICQoRU5BQkxFX0lOUFVUX1RZUEVfTU9OVEgpICQoRU5BQkxF
X0lOUFVUX1RZUEVfVElNRSkgJChFTkFCTEVfSU5QVVRfVFlQRV9XRUVLKSAkKEVOQUJMRV9JTlRF
UlNFQ1RJT05fT0JTRVJWRVIpICQoRU5BQkxFX0lOVEwpICQoRU5BQkxFX0lPU19HRVNUVVJFX0VW
RU5UUykgJChFTkFCTEVfSU9TX1RPVUNIX0VWRU5UUykgJChFTkFCTEVfSklUKSAkKEVOQUJMRV9L
RVlCT0FSRF9LRVlfQVRUUklCVVRFKSAkKEVOQUJMRV9LRVlCT0FSRF9DT0RFX0FUVFJJQlVURSkg
JChFTkFCTEVfTEVHQUNZX0NTU19WRU5ET1JfUFJFRklYRVMpICQoRU5BQkxFX0xFR0FDWV9FTkNS
WVBURURfTUVESUEpICQoRU5BQkxFX0xFR0FDWV9WRU5ET1JfUFJFRklYRVMpICQoRU5BQkxFX0xF
VFRFUlBSRVNTKSAkKEVOQUJMRV9MSU5LX1BSRUZFVENIKSAkKEVOQUJMRV9NQUNfR0VTVFVSRV9F
VkVOVFMpICQoRU5BQkxFX01BVEhNTCkgJChFTkFCTEVfTUVESUFfQ0FQVFVSRSkgJChFTkFCTEVf
TUVESUFfQ09OVFJPTFNfU0NSSVBUKSAkKEVOQUJMRV9NRURJQV9TRVNTSU9OKSAkKEVOQUJMRV9N
RURJQV9TT1VSQ0UpICQoRU5BQkxFX01FRElBX1NUQVRJU1RJQ1MpICQoRU5BQkxFX01FRElBX1NU
UkVBTSkgJChFTkFCTEVfTUVURVJfRUxFTUVOVCkgJChFTkFCTEVfTUhUTUwpICQoRU5BQkxFX01P
VVNFX0NVUlNPUl9TQ0FMRSkgJChFTkFCTEVfTkFWSUdBVE9SX0NPTlRFTlRfVVRJTFMpICQoRU5B
QkxFX05BVklHQVRPUl9TVEFOREFMT05FKSAkKEVOQUJMRV9OT1RJRklDQVRJT05TKSAkKEVOQUJM
RV9QQVlNRU5UX1JFUVVFU1QpICQoRU5BQkxFX1BERktJVF9QTFVHSU4pICQoRU5BQkxFX1BPSU5U
RVJfTE9DSykgJChFTkFCTEVfUFVCTElDX1NVRkZJWF9MSVNUKSAkKEVOQUJMRV9RVU9UQSkgJChF
TkFCTEVfUkVNT1RFX0lOU1BFQ1RPUikgJChFTkFCTEVfUkVTT0xVVElPTl9NRURJQV9RVUVSWSkg
JChFTkFCTEVfUkVTT1VSQ0VfVVNBR0UpICQoRU5BQkxFX1JVQkJFUl9CQU5ESU5HKSAkKEVOQUJM
RV9TRVJWSUNFX0NPTlRST0xTKSAkKEVOQUJMRV9TRVJWSUNFX1dPUktFUikgJChFTkFCTEVfU1BF
RUNIX1NZTlRIRVNJUykgJChFTkFCTEVfU1RSRUFNU19BUEkpICQoRU5BQkxFX1NVQlRMRV9DUllQ
VE8pICQoRU5BQkxFX1NWR19GT05UUykgJChFTkFCTEVfVEVMRVBIT05FX05VTUJFUl9ERVRFQ1RJ
T04pICQoRU5BQkxFX1RFWFRfQVVUT1NJWklORykgJChFTkFCTEVfVE9VQ0hfRVZFTlRTKSAkKEVO
QUJMRV9UT1VDSF9JQ09OX0xPQURJTkcpICQoRU5BQkxFX1VTRVJTRUxFQ1RfQUxMKSAkKEVOQUJM
RV9WQVJJQVRJT05fRk9OVFMpICQoRU5BQkxFX1ZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSAkKEVO
QUJMRV9NQUNfVklERU9fVE9PTEJPWCkgJChFTkFCTEVfVklERU9fVFJBQ0spICQoRU5BQkxFX1ZJ
REVPKSAkKEVOQUJMRV9XRUJfQU5JTUFUSU9OUykgJChFTkFCTEVfV0VCX0FVRElPKSAkKEVOQUJM
RV9XRUJfUlRDKSAkKEVOQUJMRV9XRUJBU1NFTUJMWSkgJChFTkFCTEVfV0VCR0wpICQoRU5BQkxF
X1dFQkdMMikgJChFTkFCTEVfV0VCR1BVKSAkKEVOQUJMRV9XSVJFTEVTU19QTEFZQkFDS19UQVJH
RVQpICQoRU5BQkxFX1hTTFQpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>