<?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>200103</bug_id>
          
          <creation_ts>2019-07-24 17:41:48 -0700</creation_ts>
          <short_desc>[bmalloc] Add IsoHeap test to ensure that IsoHeap pages are not allocating too large VA</short_desc>
          <delta_ts>2019-07-24 20:42:16 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>mark.lam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1555594</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-07-24 17:41:48 -0700</bug_when>
    <thetext>[bmalloc] Add IsoHeap test to ensure that IsoHeap pages are not allocating too large VA</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1555601</commentid>
    <comment_count>1</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-07-24 17:50:20 -0700</bug_when>
    <thetext>&lt;rdar://problem/53521391&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1555606</commentid>
    <comment_count>2</comment_count>
      <attachid>374841</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-07-24 17:53:31 -0700</bug_when>
    <thetext>Created attachment 374841
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1555610</commentid>
    <comment_count>3</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-07-24 17:56:16 -0700</bug_when>
    <thetext>Attachment 374841 did not pass style-queue:


ERROR: Source/WTF/wtf/spi/cocoa/MachVMSPI.h:38:  mach_vm_allocate is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/spi/cocoa/MachVMSPI.h:39:  mach_vm_deallocate is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/spi/cocoa/MachVMSPI.h:40:  mach_vm_map is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/spi/cocoa/MachVMSPI.h:42:  mach_vm_protect is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/spi/cocoa/MachVMSPI.h:43:  mach_vm_region is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/spi/cocoa/MachVMSPI.h:45:  mach_vm_region_recurse is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/spi/cocoa/MachVMSPI.h:46:  mach_vm_purgable_control is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Total errors found: 7 in 19 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1555612</commentid>
    <comment_count>4</comment_count>
      <attachid>374841</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-07-24 18:26:30 -0700</bug_when>
    <thetext>Comment on attachment 374841
Patch

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

r=me

&gt; Source/WebCore/PAL/PAL.xcodeproj/project.pbxproj:-46
&gt; -		0C2DA1481F3BEB4900DBC317 /* MachVMSPI.h in Headers */ = {isa = PBXBuildFile; fileRef = 0C2DA12C1F3BEB4900DBC317 /* MachVMSPI.h */; };

I don&apos;t see the old MachVMSPI.h being deleted.  Are you missing a &quot;svn rm&quot;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1555614</commentid>
    <comment_count>5</comment_count>
      <attachid>374841</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-07-24 18:34:46 -0700</bug_when>
    <thetext>Comment on attachment 374841
Patch

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

&gt; Tools/TestWebKitAPI/Tests/WTF/bmalloc/IsoHeap.cpp:2474
&gt; +    for (unsigned i = 0; i &lt; 100; ++i)

I&apos;ll add a comment that this is exhausting IsoHeap shared tier.

&gt; Tools/TestWebKitAPI/Tests/WTF/bmalloc/IsoHeap.cpp:2490
&gt; +    EXPECT_LT((static_cast&lt;int64_t&gt;(after[VM_MEMORY_JAVASCRIPT_JIT_REGISTER_FILE].reserved) - static_cast&lt;int64_t&gt;(before[VM_MEMORY_JAVASCRIPT_JIT_REGISTER_FILE].reserved)) * static_cast&lt;int64_t&gt;(WTF::vmPageSize()), 100 * static_cast&lt;int64_t&gt;(WTF::vmPageSize()));

I&apos;ll add a comment like this,

// Previously, we have an issue that every thread leaks 1~ page. Underlying IsoHeap implementation can add some IsoPages during this test and it would change the value of this, but we can say that such an implementation change would not add 100 pages, and if we have a leak in IsoTLS, it is larger than 1000 pages and this test correctly catch the issue.

&gt; Tools/TestWebKitAPI/Tests/WTF/bmalloc/IsoHeap.cpp:2518
&gt; +    EXPECT_LT((static_cast&lt;int64_t&gt;(after[VM_MEMORY_JAVASCRIPT_JIT_REGISTER_FILE].reserved) - static_cast&lt;int64_t&gt;(before[VM_MEMORY_JAVASCRIPT_JIT_REGISTER_FILE].reserved)) * static_cast&lt;int64_t&gt;(WTF::vmPageSize()), (50 &lt;&lt; 20));

I&apos;ll add a comment like this,

// We picked 50MB here to make this test work even if the underlying implementation of IsoHeap is changed, like, adding more # of IsoHeap shared tier instances.
// Currently, this number says 31MB in macOS, so 50MB threshold can catch the issue if the catastrophic thing happens. For example, if we revert https://bugs.webkit.org/show_bug.cgi?id=200024,
// we will see 2GB VA allocations here, which can be caught by this test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1555626</commentid>
    <comment_count>6</comment_count>
      <attachid>374845</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-07-24 19:04:01 -0700</bug_when>
    <thetext>Created attachment 374845
Patch

Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1555630</commentid>
    <comment_count>7</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-07-24 19:06:09 -0700</bug_when>
    <thetext>Attachment 374845 did not pass style-queue:


ERROR: Source/WTF/wtf/spi/cocoa/MachVMSPI.h:38:  mach_vm_allocate is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/spi/cocoa/MachVMSPI.h:39:  mach_vm_deallocate is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/spi/cocoa/MachVMSPI.h:40:  mach_vm_map is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/spi/cocoa/MachVMSPI.h:42:  mach_vm_protect is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/spi/cocoa/MachVMSPI.h:43:  mach_vm_region is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/spi/cocoa/MachVMSPI.h:45:  mach_vm_region_recurse is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/spi/cocoa/MachVMSPI.h:46:  mach_vm_purgable_control is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Total errors found: 7 in 19 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1555671</commentid>
    <comment_count>8</comment_count>
      <attachid>374845</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-07-24 20:26:36 -0700</bug_when>
    <thetext>Comment on attachment 374845
Patch

Rejecting attachment 374845 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-03&apos;, &apos;validate-changelog&apos;, &apos;--check-oops&apos;, &apos;--non-interactive&apos;, 374845, &apos;--port=mac&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

ChangeLog entry in Source/WTF/ChangeLog contains OOPS!.

Full output: https://webkit-queues.webkit.org/results/12806511</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1555679</commentid>
    <comment_count>9</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-07-24 20:42:16 -0700</bug_when>
    <thetext>Committed r247815: &lt;https://trac.webkit.org/changeset/247815&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>374841</attachid>
            <date>2019-07-24 17:53:31 -0700</date>
            <delta_ts>2019-07-24 18:26:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200103-20190724175331.patch</filename>
            <type>text/plain</type>
            <size>45743</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ3NzgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDkwMGIxM2QyMjUyYjFhNDE5YjA5M2E4
MzVjYjlmZjZmNTVkZTc5NjcuLmVlZjFlNjAwMDkxZWQ5ODZkMjhhOWNkZTllMjBhZWExYTY1YTlj
MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTktMDctMjQgIFl1c3VrZSBTdXp1a2kgIDx5c3V6
dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbYm1hbGxvY10gQWRkIElzb0hlYXAgdGVzdCB0byBl
bnN1cmUgdGhhdCBJc29IZWFwIHBhZ2VzIGFyZSBub3QgYWxsb2NhdGluZyB0b28gbGFyZ2UgVkEK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDEwMwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIG1vdmUg
Vk1UYWcgcGFnZSBpbnZlc3RpZ2F0aW9uIGNvZGUgZnJvbSBQQUwgdG8gV1RGIHRvIHVzZSBpdCBp
biBUZXN0V1RGLgorICAgICAgICBBbmQgd2UgYWxzbyBhY2N1bXVsYXRlIGFsbG9jYXRlZCBWQSBz
aXplIGluIGByZXNlcnZlZGAgZmllbGQgb2YgYFRhZ0luZm9gLgorCisgICAgICAgICogV1RGLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogd3RmL0NNYWtlTGlzdHMudHh0Ogor
ICAgICAgICAqIHd0Zi9QbGF0Zm9ybU1hYy5jbWFrZToKKyAgICAgICAgKiB3dGYvUmVzb3VyY2VV
c2FnZS5oOiBBZGRlZC4KKyAgICAgICAgKiB3dGYvY29jb2EvTWVtb3J5UHJlc3N1cmVIYW5kbGVy
Q29jb2EubW06CisgICAgICAgICogd3RmL2NvY29hL1Jlc291cmNlVXNhZ2VDb2NvYS5jcHA6IEFk
ZGVkLgorICAgICAgICAoV1RGOjp2bVBhZ2VTaXplKToKKyAgICAgICAgKFdURjo6bG9nRm9vdHBy
aW50Q29tcGFyaXNvbik6CisgICAgICAgIChXVEY6OmRpc3BsYXlOYW1lRm9yVk1UYWcpOgorICAg
ICAgICAoV1RGOjpwYWdlc1BlclZNVGFnKToKKyAgICAgICAgKiB3dGYvc3BpL2NvY29hL01hY2hW
TVNQSS5oOiBBZGRlZC4KKwogMjAxOS0wNy0yMyAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVy
QGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgY2hlYXQgc2hlZXQgY29tbWVudCBmb3IgSGFzaE1h
cC9TZXQgaXRlcmF0b3IvQWRkUmVzdWx0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzhhMjZmNjgyYzZiMzZmMTI5
NjJhZDEwZmMwOTVkMjFhYzVmNjQyOC4uZDBhZDUzMGVjZTJhOTY5OGNlMmJhYzE3OGUwZjJhZmY5
NGI5YjMwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDE5LTA3LTI0ICBZdXN1a2Ug
U3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW2JtYWxsb2NdIEFkZCBJc29I
ZWFwIHRlc3QgdG8gZW5zdXJlIHRoYXQgSXNvSGVhcCBwYWdlcyBhcmUgbm90IGFsbG9jYXRpbmcg
dG9vIGxhcmdlIFZBCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMDAxMDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBObyBiZWhhdmlvciBjaGFuZ2UgaW4gV2ViQ29yZS4KKworICAgICAgICAqIHBhZ2UvTWVt
b3J5UmVsZWFzZS5jcHA6CisgICAgICAgICogcGFnZS9SZXNvdXJjZVVzYWdlVGhyZWFkLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpUYWdJbmZvOjpUYWdJbmZvKTogRGVsZXRlZC4KKyAgICAgICAgKiBw
YWdlL2NvY29hL1Jlc291cmNlVXNhZ2VUaHJlYWRDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6
OnZtUGFnZVNpemUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6bG9nRm9vdHByaW50Q29t
cGFyaXNvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpkaXNwbGF5TmFtZUZvclZNVGFn
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnBhZ2VzUGVyVk1UYWcpOiBEZWxldGVkLgor
CiAyMDE5LTA3LTI0ICBBbGljaWEgQm95YSBHYXJjw61hICA8YWJveWFAaWdhbGlhLmNvbT4KIAog
ICAgICAgICBbTVNFXSBSZWVucXVldWUgYWZ0ZXIgcmVtb3ZlQ29kZWRGcmFtZXMoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9D
aGFuZ2VMb2cKaW5kZXggMGNlOTZkOGRkMzdkZjYxYWY4OGM3Y2Y1NzdjMThjYTc1ZTcwZmM0OC4u
OGFlNDVmNmUwMzMzZmJkMTBmMDMwNDM4N2U5OTA1ZWYzMzg0NzcyZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTktMDctMjQgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtp
QGFwcGxlLmNvbT4KKworICAgICAgICBbYm1hbGxvY10gQWRkIElzb0hlYXAgdGVzdCB0byBlbnN1
cmUgdGhhdCBJc29IZWFwIHBhZ2VzIGFyZSBub3QgYWxsb2NhdGluZyB0b28gbGFyZ2UgVkEKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDEwMworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmUgVk1UYWcg
cGFnZSBtZW1vcnkgaW52ZXN0aWdhdGlvbiBjb2RlIGZyb20gUEFMIHRvIFdURiB0byByZXVzZSBp
dCBpbiBUZXN0V1RGLgorCisgICAgICAgICogUEFMLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogcGFsL1BsYXRmb3JtTWFjLmNtYWtlOgorCiAyMDE5LTA3LTIyICBTaW1vbiBG
cmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIE1ha2Ugc29tZSBjb25z
dHJ1Y3RvcnMgZXhwbGljaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMzNkYjgwNDE3MjUxZDI3ZmNkNDQ0Y2Y1ZDZj
NDI5OTNjZDY0YmFiNi4uMGU3ZDQwZjc1MTc1NTViNjA5ZWY2ZDE4ZDc0ZjRhMWVkMjZjYWVmYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxOS0wNy0yNCAgWXVzdWtlIFN1enVraSAgPHlz
dXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtibWFsbG9jXSBBZGQgSXNvSGVhcCB0ZXN0IHRv
IGVuc3VyZSB0aGF0IElzb0hlYXAgcGFnZXMgYXJlIG5vdCBhbGxvY2F0aW5nIHRvbyBsYXJnZSBW
QQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwMTAz
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW92ZSBN
YWNoVk1TUEkuaCBmcm9tIFBBTCB0byBXVEYuCisKKyAgICAgICAgKiBQbGF0Zm9ybS9jb2NvYS9T
aGFyZWRNZW1vcnlDb2NvYS5jcHA6CisKIDIwMTktMDctMjQgIFlvdWVubiBGYWJsZXQgIDx5b3Vl
bm5AYXBwbGUuY29tPgogCiAgICAgICAgIFNZU19fX3B0aHJlYWRfbWFya2NhbmNlbCBpcyBzb21l
dGltZXMgdXNlZCBieSBsaWJ3ZWJydGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL0NoYW5n
ZUxvZyBiL1NvdXJjZS9ibWFsbG9jL0NoYW5nZUxvZwppbmRleCBlODUwMmZhOTcxZTQ3NjZiNmQy
MTFiNmFkZGI1MzZmYjUwYTgzMTUwLi44NjRhNjg0YjllZjJlNmIyMjllNDQ5ZDRjZmE0OTEzMjM0
NjlmMjk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L2JtYWxsb2MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTktMDctMjQgIFl1c3VrZSBT
dXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbYm1hbGxvY10gQWRkIElzb0hl
YXAgdGVzdCB0byBlbnN1cmUgdGhhdCBJc29IZWFwIHBhZ2VzIGFyZSBub3QgYWxsb2NhdGluZyB0
b28gbGFyZ2UgVkEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIwMDEwMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogYm1hbGxvYy9Jc29QYWdlLmNwcDoKKwogMjAxOS0wNy0yMiAgWXVzdWtlIFN1enVraSAg
PHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFtibWFsbG9jXSBFYWNoIElzb1BhZ2UgZ2V0
cyAxTUIgVkEgYmVjYXVzZSBWTUhlYXA6OnRyeUFsbG9jYXRlTGFyZ2VDaHVuayByb3VuZHMgdXAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9T
b3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDA3N2FmYmZiMWRk
NGM5NmMwYThlOWU4Nzk1MTQ4ZDk4MWZmYzAwZGQuLmQxZDVmOWJhNmUyNzY1YjEyNTkyM2M1Zjdm
MzA5OThiMDY2NjM0MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtMTY0LDYgKzE2NCw3IEBACiAJCUUzOEM0MTI1MUVCNEUwNEMwMDQyOTU3RCAvKiBDUFVU
aW1lQ29jb2EuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTM4QzQxMjQxRUI0RTA0QzAwNDI5NTdEIC8qIENQVVRpbWVDb2NvYS5jcHAgKi87IH07CiAJ
CUUzOEM0MTI4MUVCNEUwNjgwMDQyOTU3RCAvKiBDUFVUaW1lLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOEM0MTI2MUVCNEUwNjgwMDQyOTU3RCAv
KiBDUFVUaW1lLmNwcCAqLzsgfTsKIAkJRTM4RDZFMjcxRjU1MjJFMzAwQTc1Q0M0IC8qIFN0cmlu
Z0J1aWxkZXJKU09OLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEUzOEQ2RTI2MUY1NTIyRTMwMEE3NUNDNCAvKiBTdHJpbmdCdWlsZGVySlNPTi5jcHAg
Ki87IH07CisJCUUzOTJGQTI3MjJFOTJCRkYwMEVDREM3MyAvKiBSZXNvdXJjZVVzYWdlQ29jb2Eu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5MkZB
MjYyMkU5MkJGRjAwRUNEQzczIC8qIFJlc291cmNlVXNhZ2VDb2NvYS5jcHAgKi87IH07CiAJCUUz
QTMyQkM0MUZDODMwRTIwMDdEN0U3NiAvKiBKU1ZhbHVlTWFsbG9jLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzQTMyQkMyMUZDODMwRTIwMDdEN0U3
NiAvKiBKU1ZhbHVlTWFsbG9jLmNwcCAqLzsgfTsKIAkJRTRBMEFEMzkxQTk2MjQ1NTAwNTM2REY2
IC8qIFdvcmtRdWV1ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFNEEwQUQzNzFBOTYyNDU1MDA1MzZERjYgLyogV29ya1F1ZXVlLmNwcCAqLzsgfTsK
IAkJRTRBMEFEM0QxQTk2MjUzQzAwNTM2REY2IC8qIFdvcmtRdWV1ZUNvY29hLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0QTBBRDNDMUE5NjI1M0Mw
MDUzNkRGNiAvKiBXb3JrUXVldWVDb2NvYS5jcHAgKi87IH07CkBAIC02NTksNiArNjYwLDcgQEAK
IAkJRTMwMEU1MjEyMDNENjQ1RjAwREE3OUJFIC8qIFVuaXF1ZUFycmF5LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVuaXF1ZUFycmF5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUUzMTFGQjE1MUYwQTU2OEIwMDNDMDhERSAvKiBUaHJlYWRHcm91cC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUaHJlYWRHcm91cC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzMTFGQjE2MUYwQTU2OEIwMDNDMDhERSAvKiBUaHJl
YWRHcm91cC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUaHJlYWRHcm91cC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzFCREUyODIyRTkxM0NDMDAyOUIxMDUg
LyogTWFjaFZNU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hY2hWTVNQ
SS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzIwMEFCNDFFOUE1MzZEMDAzQjU5
RDIgLyogUGxhdGZvcm1SZWdpc3RlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUGxhdGZvcm1SZWdpc3RlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMz
RDVGODcxRkJFRDY2NzAwQkY2MjVFIC8qIFJlY3Vyc2FibGVMYW1iZGEuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUmVjdXJzYWJsZUxhbWJkYS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlFMzRDRDBEMDIyODEwQTAyMDAyMEQyOTkgLyogUGFja2VkLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFBhY2tlZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjcwLDYg
KzY3Miw3IEBACiAJCUUzOEM0MTI2MUVCNEUwNjgwMDQyOTU3RCAvKiBDUFVUaW1lLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENQVVRpbWUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlFMzhDNDEyNzFFQjRFMDY4MDA0Mjk1N0QgLyogQ1BVVGltZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDUFVUaW1lLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUUzOEQ2RTI2MUY1NTIyRTMwMEE3NUNDNCAvKiBTdHJpbmdCdWls
ZGVySlNPTi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdHJpbmdC
dWlsZGVySlNPTi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzOTJGQTI2MjJF
OTJCRkYwMEVDREM3MyAvKiBSZXNvdXJjZVVzYWdlQ29jb2EuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gUmVzb3VyY2VVc2FnZUNvY29hLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRTNBMzJCQzIxRkM4MzBFMjAwN0Q3RTc2IC8qIEpTVmFsdWVNYWxs
b2MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNWYWx1ZU1hbGxv
Yy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzQTMyQkMzMUZDODMwRTIwMDdE
N0U3NiAvKiBKU1ZhbHVlTWFsbG9jLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEpTVmFsdWVNYWxsb2MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNDRjc2OTAy
MTE1RDZCQTAwOTFERTQ4IC8qIENvbXBhY3RQb2ludGVyVHVwbGUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQ29tcGFjdFBvaW50ZXJUdXBsZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMTM1OCw2ICsxMzYxLDcgQEAKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJ
Y2hpbGRyZW4gPSAoCiAJCQkJOTM4NEI3M0UyMERFQTI4NDAwNUI3M0IyIC8qIENGWFBDQnJpZGdl
U1BJLmggKi8sCisJCQkJRTMxQkRFMjgyMkU5MTNDQzAwMjlCMTA1IC8qIE1hY2hWTVNQSS5oICov
LAogCQkJCTkzRDE5MUNGMjBDQUVDRTgwMEM1MUI4RSAvKiBvYmpjU1BJLmggKi8sCiAJCQkJQTUw
OThCMDExQzE2QTRGOTAwMDg3Nzk3IC8qIFNlY3VyaXR5U1BJLmggKi8sCiAJCQkpOwpAQCAtMTQy
NCw2ICsxNDI4LDcgQEAKIAkJCQlBRDg5QjZCOTFFNjQxNTBGMDA5MDcwN0YgLyogTWVtb3J5UHJl
c3N1cmVIYW5kbGVyQ29jb2EubW0gKi8sCiAJCQkJNUNDMEVFODcyMTYyQkMyMjAwQTFBODQyIC8q
IE5TVVJMRXh0cmFzLmggKi8sCiAJCQkJNUNDMEVFODgyMTYyQkMyMjAwQTFBODQyIC8qIE5TVVJM
RXh0cmFzLm1tICovLAorCQkJCUUzOTJGQTI2MjJFOTJCRkYwMEVDREM3MyAvKiBSZXNvdXJjZVVz
YWdlQ29jb2EuY3BwICovLAogCQkJCUEzMEQ0MTJDMUYwREUwQkEwMEI3MTk1NCAvKiBTb2Z0TGlu
a2luZy5oICovLAogCQkJCTVDQzBFRTg2MjE2MkJDMjIwMEExQTg0MiAvKiBVUkxDb2NvYS5tbSAq
LywKIAkJCQlFNEEwQUQzQzFBOTYyNTNDMDA1MzZERjYgLyogV29ya1F1ZXVlQ29jb2EuY3BwICov
LApAQCAtMTU5NCw2ICsxNTk5LDcgQEAKIAkJCQlBOEE0NzQxNDE1MUE4MjVCMDA0MTIzRkYgLyog
UmFuZG9tTnVtYmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRUMzQzVFMUYzNjhBOTcwMEY1
OUI2QyAvKiBSZWFkV3JpdGVMb2NrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3NDFBMTUx
QTgyNUIwMDQxMjNGRiAvKiBSZWZDb3VudGVkTGVha0NvdW50ZXIuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJRTM5MkZBMjcyMkU5MkJGRjAwRUNEQzczIC8qIFJlc291cmNlVXNhZ2VDb2NvYS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkyQ0RFRDBGMzE4MTE1Qzg1MDA0REJBNzAgLyogUnVuTG9vcC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkyQ0RFRDBFRjE4MTE1QzM4MDA0REJBNzAgLyogUnVuTG9v
cENGLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUEzRUU1QzNFMjFGRkFDN0QwMEZBQkQ2MSAvKiBS
dW5Mb29wVGltZXJDRi5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKaW5kZXgg
YjdmZTcxNGY0ZTdkZjFlYTIwYTYwNjRmY2Q4NGI4NjcxN2NiNGE1MC4uYTMyZTdlMjlkNWE3Yjk0
ZTBiMWFiNzQ3MWFhOTEwMjY3ZTI4OWYyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQ01h
a2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKQEAgLTE5MCw2
ICsxOTAsNyBAQCBzZXQoV1RGX1BVQkxJQ19IRUFERVJTCiAgICAgUmVmQ291bnRlZExlYWtDb3Vu
dGVyLmgKICAgICBSZWZDb3VudGVyLmgKICAgICBSZWZQdHIuaAorICAgIFJlc291cmNlVXNhZ2Uu
aAogICAgIFJldGFpblB0ci5oCiAgICAgUnVuTG9vcC5oCiAgICAgUnVuTG9vcFRpbWVyLmgKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtTWFjLmNtYWtlIGIvU291cmNlL1dURi93
dGYvUGxhdGZvcm1NYWMuY21ha2UKaW5kZXggNzk3YzVjZmU3YTViZWJlN2RhMmRjOGRkOTA2OGRk
YWIzMmMyN2Q1My4uYWU4YWJiMmJjMTdkMGMzMWUxOGU3ZjViYzc2MjZkODE1Y2EzZTg1MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1NYWMuY21ha2UKKysrIGIvU291cmNlL1dU
Ri93dGYvUGxhdGZvcm1NYWMuY21ha2UKQEAgLTI1LDYgKzI1LDcgQEAgbGlzdChBUFBFTkQgV1RG
X1BVQkxJQ19IRUFERVJTCiAgICAgc3BpL2NmL0NGU3RyaW5nU1BJLmgKIAogICAgIHNwaS9jb2Nv
YS9DRlhQQ0JyaWRnZVNQSS5oCisgICAgc3BpL2NvY29hL01hY2hWTVNQSS5oCiAgICAgc3BpL2Nv
Y29hL1NlY3VyaXR5U1BJLmgKICAgICBzcGkvY29jb2Evb2JqY1NQSS5oCiAKQEAgLTU4LDYgKzU5
LDcgQEAgbGlzdChBUFBFTkQgV1RGX1NPVVJDRVMKICAgICBjb2NvYS9NZW1vcnlGb290cHJpbnRD
b2NvYS5jcHAKICAgICBjb2NvYS9NZW1vcnlQcmVzc3VyZUhhbmRsZXJDb2NvYS5tbQogICAgIGNv
Y29hL05TVVJMRXh0cmFzLm1tCisgICAgY29jb2EvUmVzb3VyY2VVc2FnZUNvY29hLmNwcAogICAg
IGNvY29hL1VSTENvY29hLm1tCiAgICAgY29jb2EvV29ya1F1ZXVlQ29jb2EuY3BwCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL1Jlc291cmNlVXNhZ2UuaCBiL1NvdXJjZS9XVEYvd3RmL1Jl
c291cmNlVXNhZ2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NDIyZTU2YzUxMTY3ZmQ2YWI4N2I4YWQ5NWMyMDc2
MjJkYjdmODhmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvUmVzb3VyY2VVc2Fn
ZS5oCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1
ZGUgPGFycmF5PgorCituYW1lc3BhY2UgV1RGIHsKKworI2lmIFBMQVRGT1JNKENPQ09BKQorCitz
dHJ1Y3QgVGFnSW5mbyB7CisgICAgc2l6ZV90IGRpcnR5IHsgMCB9OworICAgIHNpemVfdCByZWNs
YWltYWJsZSB7IDAgfTsKKyAgICBzaXplX3QgcmVzZXJ2ZWQgeyAwIH07Cit9OworCitXVEZfRVhQ
T1JUX1BSSVZBVEUgY29uc3QgY2hhciogZGlzcGxheU5hbWVGb3JWTVRhZyh1bnNpZ25lZCk7CitX
VEZfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IHZtUGFnZVNpemUoKTsKK1dURl9FWFBPUlRfUFJJVkFU
RSBzdGQ6OmFycmF5PFRhZ0luZm8sIDI1Nj4gcGFnZXNQZXJWTVRhZygpOworV1RGX0VYUE9SVF9Q
UklWQVRFIHZvaWQgbG9nRm9vdHByaW50Q29tcGFyaXNvbihjb25zdCBzdGQ6OmFycmF5PFRhZ0lu
Zm8sIDI1Nj4mLCBjb25zdCBzdGQ6OmFycmF5PFRhZ0luZm8sIDI1Nj4mKTsKKworI2VuZGlmCisK
K30KKworI2lmIFBMQVRGT1JNKENPQ09BKQordXNpbmcgV1RGOjpUYWdJbmZvOwordXNpbmcgV1RG
OjpkaXNwbGF5TmFtZUZvclZNVGFnOwordXNpbmcgV1RGOjp2bVBhZ2VTaXplOwordXNpbmcgV1RG
OjpwYWdlc1BlclZNVGFnOworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9jb2Nv
YS9NZW1vcnlQcmVzc3VyZUhhbmRsZXJDb2NvYS5tbSBiL1NvdXJjZS9XVEYvd3RmL2NvY29hL01l
bW9yeVByZXNzdXJlSGFuZGxlckNvY29hLm1tCmluZGV4IDc1ZWE4M2ZmZmQ1MzFhMzI5OGEyNjEz
MTZlMmFkNzU2NDVkNmFmY2UuLjIxZDA1ZWNiN2U3OWE5MDgyNmM4M2JiMjljMzNiMmMxZTU0ZTkx
MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL2NvY29hL01lbW9yeVByZXNzdXJlSGFuZGxl
ckNvY29hLm1tCisrKyBiL1NvdXJjZS9XVEYvd3RmL2NvY29hL01lbW9yeVByZXNzdXJlSGFuZGxl
ckNvY29hLm1tCkBAIC0zMCw2ICszMCw3IEBACiAjaW1wb3J0IDxtYWNoL3Rhc2tfaW5mby5oPgog
I2ltcG9ydCA8bWFsbG9jL21hbGxvYy5oPgogI2ltcG9ydCA8bm90aWZ5Lmg+CisjaW1wb3J0IDx3
dGYvUmVzb3VyY2VVc2FnZS5oPgogI2ltcG9ydCA8d3RmL3NwaS9kYXJ3aW4vRGlzcGF0Y2hTUEku
aD4KIAogI2RlZmluZSBFTkFCTEVfRk1XX0ZPT1RQUklOVF9DT01QQVJJU09OIDAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL2NvY29hL1Jlc291cmNlVXNhZ2VDb2NvYS5jcHAgYi9Tb3VyY2Uv
V1RGL3d0Zi9jb2NvYS9SZXNvdXJjZVVzYWdlQ29jb2EuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRmY2EwNzJi
NGM0YWNlZTAzMjEzYjY5OTAwMTM3ODYxYTNiMzQ5ZGQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi9jb2NvYS9SZXNvdXJjZVVzYWdlQ29jb2EuY3BwCkBAIC0wLDAgKzEsMTQxIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSA8d3RmL1Jl
c291cmNlVXNhZ2UuaD4KKworI2luY2x1ZGUgPG1hY2gvbWFjaF9lcnJvci5oPgorI2luY2x1ZGUg
PG1hY2gvbWFjaF9pbml0Lmg+CisjaW5jbHVkZSA8dXRpbGl0eT4KKyNpbmNsdWRlIDx3dGYvc3Bp
L2NvY29hL01hY2hWTVNQSS5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRl
TnVtYmVycy5oPgorCituYW1lc3BhY2UgV1RGIHsKKworc2l6ZV90IHZtUGFnZVNpemUoKQorewor
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgcmV0dXJuIHZtX2tlcm5lbF9wYWdlX3NpemU7
CisjZWxzZQorICAgIHN0YXRpYyBzaXplX3QgY2FjaGVkID0gc3lzY29uZihfU0NfUEFHRVNJWkUp
OworICAgIHJldHVybiBjYWNoZWQ7CisjZW5kaWYKK30KKwordm9pZCBsb2dGb290cHJpbnRDb21w
YXJpc29uKGNvbnN0IHN0ZDo6YXJyYXk8VGFnSW5mbywgMjU2PiYgYmVmb3JlLCBjb25zdCBzdGQ6
OmFycmF5PFRhZ0luZm8sIDI1Nj4mIGFmdGVyKQoreworICAgIGNvbnN0IHNpemVfdCBwYWdlU2l6
ZSA9IHZtUGFnZVNpemUoKTsKKworICAgIFdURkxvZ0Fsd2F5cygiUGVyLXRhZyBicmVha2Rvd24g
b2YgbWVtb3J5IHJlY2xhaW1lZCBieSBwcmVzc3VyZSBoYW5kbGVyOiIpOworICAgIFdURkxvZ0Fs
d2F5cygiICAjIyAlMTZzICUxMHMgJTEwcyAlMTBzIiwgIlZNIFRhZyIsICJCZWZvcmUiLCAiQWZ0
ZXIiLCAiRGlmZiIpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCAyNTY7ICsraSkgewor
ICAgICAgICBzc2l6ZV90IGRpcnR5QmVmb3JlID0gYmVmb3JlW2ldLmRpcnR5ICogcGFnZVNpemU7
CisgICAgICAgIHNzaXplX3QgZGlydHlBZnRlciA9IGFmdGVyW2ldLmRpcnR5ICogcGFnZVNpemU7
CisgICAgICAgIHNzaXplX3QgZGlydHlEaWZmID0gZGlydHlBZnRlciAtIGRpcnR5QmVmb3JlOwor
ICAgICAgICBpZiAoIWRpcnR5QmVmb3JlICYmICFkaXJ0eUFmdGVyKQorICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgIFN0cmluZyB0YWdOYW1lID0gZGlzcGxheU5hbWVGb3JWTVRhZyhpKTsK
KyAgICAgICAgaWYgKCF0YWdOYW1lKQorICAgICAgICAgICAgdGFnTmFtZSA9IG1ha2VTdHJpbmco
IlRhZyAiLCBpKTsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCIgICUwMlggJTE2cyAlMTBsZCAlMTBs
ZCAlMTBsZCIsCisgICAgICAgICAgICBpLAorICAgICAgICAgICAgdGFnTmFtZS5hc2NpaSgpLmRh
dGEoKSwKKyAgICAgICAgICAgIGRpcnR5QmVmb3JlLAorICAgICAgICAgICAgZGlydHlBZnRlciwK
KyAgICAgICAgICAgIGRpcnR5RGlmZgorICAgICAgICApOworICAgIH0KK30KKworY29uc3QgY2hh
ciogZGlzcGxheU5hbWVGb3JWTVRhZyh1bnNpZ25lZCB0YWcpCit7CisgICAgc3dpdGNoICh0YWcp
IHsKKyAgICBjYXNlIFZNX01FTU9SWV9JT0tJVDogcmV0dXJuICJJT0tpdCI7CisgICAgY2FzZSBW
TV9NRU1PUllfTEFZRVJLSVQ6IHJldHVybiAiQ29yZUFuaW1hdGlvbiI7CisgICAgY2FzZSBWTV9N
RU1PUllfSU1BR0VJTzogcmV0dXJuICJJbWFnZUlPIjsKKyAgICBjYXNlIFZNX01FTU9SWV9DR0lN
QUdFOiByZXR1cm4gIkNHIGltYWdlIjsKKyAgICBjYXNlIFZNX01FTU9SWV9KQVZBU0NSSVBUX0NP
UkU6IHJldHVybiAiR2lnYWNhZ2UiOworICAgIGNhc2UgVk1fTUVNT1JZX0pBVkFTQ1JJUFRfSklU
X0VYRUNVVEFCTEVfQUxMT0NBVE9SOiByZXR1cm4gIkpTQyBKSVQiOworICAgIGNhc2UgVk1fTUVN
T1JZX0pBVkFTQ1JJUFRfSklUX1JFR0lTVEVSX0ZJTEU6IHJldHVybiAiSXNvSGVhcCI7CisgICAg
Y2FzZSBWTV9NRU1PUllfTUFMTE9DOiByZXR1cm4gIm1hbGxvYyI7CisgICAgY2FzZSBWTV9NRU1P
UllfTUFMTE9DX0hVR0U6IHJldHVybiAibWFsbG9jIChodWdlKSI7CisgICAgY2FzZSBWTV9NRU1P
UllfTUFMTE9DX0xBUkdFOiByZXR1cm4gIm1hbGxvYyAobGFyZ2UpIjsKKyAgICBjYXNlIFZNX01F
TU9SWV9NQUxMT0NfU01BTEw6IHJldHVybiAibWFsbG9jIChzbWFsbCkiOworICAgIGNhc2UgVk1f
TUVNT1JZX01BTExPQ19USU5ZOiByZXR1cm4gIm1hbGxvYyAodGlueSkiOworICAgIGNhc2UgVk1f
TUVNT1JZX01BTExPQ19OQU5POiByZXR1cm4gIm1hbGxvYyAobmFubykiOworICAgIGNhc2UgVk1f
TUVNT1JZX1RDTUFMTE9DOiByZXR1cm4gImJtYWxsb2MiOworICAgIGNhc2UgVk1fTUVNT1JZX0ZP
VU5EQVRJT046IHJldHVybiAiRm91bmRhdGlvbiI7CisgICAgY2FzZSBWTV9NRU1PUllfU1RBQ0s6
IHJldHVybiAiU3RhY2siOworICAgIGNhc2UgVk1fTUVNT1JZX1NRTElURTogcmV0dXJuICJTUUxp
dGUiOworICAgIGNhc2UgVk1fTUVNT1JZX1VOU0hBUkVEX1BNQVA6IHJldHVybiAicG1hcCAodW5z
aGFyZWQpIjsKKyAgICBjYXNlIFZNX01FTU9SWV9EWUxJQjogcmV0dXJuICJkeWxpYiI7CisgICAg
Y2FzZSBWTV9NRU1PUllfQ09SRVNFUlZJQ0VTOiByZXR1cm4gIkNvcmVTZXJ2aWNlcyI7CisgICAg
Y2FzZSBWTV9NRU1PUllfT1NfQUxMT0NfT05DRTogcmV0dXJuICJvc19hbGxvY19vbmNlIjsKKyAg
ICBjYXNlIFZNX01FTU9SWV9MSUJESVNQQVRDSDogcmV0dXJuICJsaWJkaXNwYXRjaCI7CisgICAg
ZGVmYXVsdDogcmV0dXJuIG51bGxwdHI7CisgICAgfQorfQorCitzdGQ6OmFycmF5PFRhZ0luZm8s
IDI1Nj4gcGFnZXNQZXJWTVRhZygpCit7CisgICAgc3RkOjphcnJheTxUYWdJbmZvLCAyNTY+IHRh
Z3M7CisgICAgdGFza190IHRhc2sgPSBtYWNoX3Rhc2tfc2VsZigpOworICAgIG1hY2hfdm1fc2l6
ZV90IHNpemU7CisgICAgdWludDMyX3QgZGVwdGggPSAwOworICAgIHN0cnVjdCB2bV9yZWdpb25f
c3VibWFwX2luZm9fNjQgaW5mbyA9IHsgfTsKKyAgICBtYWNoX21zZ190eXBlX251bWJlcl90IGNv
dW50ID0gVk1fUkVHSU9OX1NVQk1BUF9JTkZPX0NPVU5UXzY0OworICAgIGZvciAobWFjaF92bV9h
ZGRyZXNzX3QgYWRkciA9IDA7IDsgYWRkciArPSBzaXplKSB7CisgICAgICAgIGludCBwdXJnZWFi
bGVTdGF0ZTsKKyAgICAgICAgaWYgKG1hY2hfdm1fcHVyZ2FibGVfY29udHJvbCh0YXNrLCBhZGRy
LCBWTV9QVVJHQUJMRV9HRVRfU1RBVEUsICZwdXJnZWFibGVTdGF0ZSkgIT0gS0VSTl9TVUNDRVNT
KQorICAgICAgICAgICAgcHVyZ2VhYmxlU3RhdGUgPSBWTV9QVVJHQUJMRV9ERU5ZOworCisgICAg
ICAgIGtlcm5fcmV0dXJuX3Qga3IgPSBtYWNoX3ZtX3JlZ2lvbl9yZWN1cnNlKHRhc2ssICZhZGRy
LCAmc2l6ZSwgJmRlcHRoLCAodm1fcmVnaW9uX2luZm9fdCkmaW5mbywgJmNvdW50KTsKKyAgICAg
ICAgaWYgKGtyICE9IEtFUk5fU1VDQ0VTUykKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAg
IHRhZ3NbaW5mby51c2VyX3RhZ10ucmVzZXJ2ZWQgKz0gc2l6ZSAvIHZtUGFnZVNpemUoKTsKKwor
ICAgICAgICBpZiAocHVyZ2VhYmxlU3RhdGUgPT0gVk1fUFVSR0FCTEVfVk9MQVRJTEUpIHsKKyAg
ICAgICAgICAgIHRhZ3NbaW5mby51c2VyX3RhZ10ucmVjbGFpbWFibGUgKz0gaW5mby5wYWdlc19y
ZXNpZGVudDsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgaWYg
KHB1cmdlYWJsZVN0YXRlID09IFZNX1BVUkdBQkxFX0VNUFRZKSB7CisgICAgICAgICAgICB0YWdz
W2luZm8udXNlcl90YWddLnJlY2xhaW1hYmxlICs9IHNpemUgLyB2bVBhZ2VTaXplKCk7CisgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIGJvb2wgYW5vbnltb3VzID0g
IWluZm8uZXh0ZXJuYWxfcGFnZXI7CisgICAgICAgIGlmIChhbm9ueW1vdXMpIHsKKyAgICAgICAg
ICAgIHRhZ3NbaW5mby51c2VyX3RhZ10uZGlydHkgKz0gaW5mby5wYWdlc19yZXNpZGVudCAtIGlu
Zm8ucGFnZXNfcmV1c2FibGU7CisgICAgICAgICAgICB0YWdzW2luZm8udXNlcl90YWddLnJlY2xh
aW1hYmxlICs9IGluZm8ucGFnZXNfcmV1c2FibGU7CisgICAgICAgIH0gZWxzZQorICAgICAgICAg
ICAgdGFnc1tpbmZvLnVzZXJfdGFnXS5kaXJ0eSArPSBpbmZvLnBhZ2VzX2RpcnRpZWQ7CisgICAg
fQorCisgICAgcmV0dXJuIHRhZ3M7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L3NwaS9jb2NvYS9NYWNoVk1TUEkuaCBiL1NvdXJjZS9XVEYvd3RmL3NwaS9jb2NvYS9NYWNoVk1T
UEkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi44M2QwYzUwNTE5NmY0ZmNlYzQxOTc3MTcwODcxMjRhZmUwNWQ3YjI4
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvc3BpL2NvY29hL01hY2hWTVNQSS5o
CkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxNiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5j
bHVkZSA8bWFjaC9ib29sZWFuLmg+CisjaW5jbHVkZSA8bWFjaC9rZXJuX3JldHVybi5oPgorI2lu
Y2x1ZGUgPG1hY2gvbWFjaF90eXBlcy5oPgorCisjaWYgUExBVEZPUk0oTUFDKSB8fCBVU0UoQVBQ
TEVfSU5URVJOQUxfU0RLKQorI2luY2x1ZGUgPG1hY2gvbWFjaF92bS5oPgorI2VuZGlmCisKK1dU
Rl9FWFRFUk5fQ19CRUdJTgorCitrZXJuX3JldHVybl90IG1hY2hfdm1fYWxsb2NhdGUodm1fbWFw
X3QgdGFyZ2V0LCBtYWNoX3ZtX2FkZHJlc3NfdCosIG1hY2hfdm1fc2l6ZV90LCBpbnQgZmxhZ3Mp
Owora2Vybl9yZXR1cm5fdCBtYWNoX3ZtX2RlYWxsb2NhdGUodm1fbWFwX3QgdGFyZ2V0LCBtYWNo
X3ZtX2FkZHJlc3NfdCwgbWFjaF92bV9zaXplX3QpOwora2Vybl9yZXR1cm5fdCBtYWNoX3ZtX21h
cCh2bV9tYXBfdCB0YXJnZXRUYXNrLCBtYWNoX3ZtX2FkZHJlc3NfdCosIG1hY2hfdm1fc2l6ZV90
LCBtYWNoX3ZtX29mZnNldF90IG1hc2ssIGludCBmbGFncywKKyAgICBtZW1fZW50cnlfbmFtZV9w
b3J0X3QsIG1lbW9yeV9vYmplY3Rfb2Zmc2V0X3QsIGJvb2xlYW5fdCBjb3B5LCB2bV9wcm90X3Qg
Y3VycmVudFByb3RlY3Rpb24sIHZtX3Byb3RfdCBtYXhpbXVtUHJvdGVjdGlvbiwgdm1faW5oZXJp
dF90KTsKK2tlcm5fcmV0dXJuX3QgbWFjaF92bV9wcm90ZWN0KHZtX21hcF90IHRhcmdldFRhc2ss
IG1hY2hfdm1fYWRkcmVzc190LCBtYWNoX3ZtX3NpemVfdCwgYm9vbGVhbl90IHNldE1heGltdW0s
IHZtX3Byb3RfdCBuZXdQcm90ZWN0aW9uKTsKK2tlcm5fcmV0dXJuX3QgbWFjaF92bV9yZWdpb24o
dm1fbWFwX3QgdGFyZ2V0VGFzaywgbWFjaF92bV9hZGRyZXNzX3QqLCBtYWNoX3ZtX3NpemVfdCos
IHZtX3JlZ2lvbl9mbGF2b3JfdCwgdm1fcmVnaW9uX2luZm9fdCwKKyAgICBtYWNoX21zZ190eXBl
X251bWJlcl90KiBpbmZvQ291bnQsIG1hY2hfcG9ydF90KiBvYmplY3ROYW1lKTsKK2tlcm5fcmV0
dXJuX3QgbWFjaF92bV9yZWdpb25fcmVjdXJzZSh2bV9tYXBfdCB0YXJnZXRUYXNrLCBtYWNoX3Zt
X2FkZHJlc3NfdCosIG1hY2hfdm1fc2l6ZV90KiwgdWludDMyX3QqIGRlcHRoLCB2bV9yZWdpb25f
cmVjdXJzZV9pbmZvX3QsIG1hY2hfbXNnX3R5cGVfbnVtYmVyX3QqIGluZm9Db3VudCk7CitrZXJu
X3JldHVybl90IG1hY2hfdm1fcHVyZ2FibGVfY29udHJvbCh2bV9tYXBfdCB0YXJnZXQsIG1hY2hf
dm1fYWRkcmVzc190LCB2bV9wdXJnYWJsZV90IGNvbnRyb2wsIGludCogc3RhdGUpOworCitXVEZf
RVhURVJOX0NfRU5ECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvUEFMLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9QQUwvUEFMLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggYzQzOGMzYmY3ODMwMmEzZDEwMzE4YWVmZjJhMzFkYThkYWY3ZGU2
Mi4uZGVhYjAxZGIxODZiYjVmMmYxNWMwNDRlZWU0YWU0YTc4N2QyOTYyNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvUEFML1BBTC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1BBTC9QQUwueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDMsNyAr
NDMsNiBAQAogCQkwQzJEQTE0NTFGM0JFQjQ5MDBEQkMzMTcgLyogSU9TdXJmYWNlU1BJLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwQzJEQTEyOTFGM0JF
QjQ5MDBEQkMzMTcgLyogSU9TdXJmYWNlU1BJLmggKi87IH07CiAJCTBDMkRBMTQ2MUYzQkVCNDkw
MERCQzMxNyAvKiBJT1R5cGVzU1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwQzJEQTEyQTFGM0JFQjQ5MDBEQkMzMTcgLyogSU9UeXBlc1NQSS5oICov
OyB9OwogCQkwQzJEQTE0NzFGM0JFQjQ5MDBEQkMzMTcgLyogVVJMRm9ybWF0dGluZ1NQSS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEMyREExMkIxRjNC
RUI0OTAwREJDMzE3IC8qIFVSTEZvcm1hdHRpbmdTUEkuaCAqLzsgfTsKLQkJMEMyREExNDgxRjNC
RUI0OTAwREJDMzE3IC8qIE1hY2hWTVNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEMyREExMkMxRjNCRUI0OTAwREJDMzE3IC8qIE1hY2hWTVNQSS5o
ICovOyB9OwogCQkwQzJEQTE0OTFGM0JFQjQ5MDBEQkMzMTcgLyogTkVGaWx0ZXJTb3VyY2VTUEku
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBDMkRBMTJE
MUYzQkVCNDkwMERCQzMxNyAvKiBORUZpbHRlclNvdXJjZVNQSS5oICovOyB9OwogCQkwQzJEQTE0
QTFGM0JFQjQ5MDBEQkMzMTcgLyogTlNBdHRyaWJ1dGVkU3RyaW5nU1BJLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwQzJEQTEyRTFGM0JFQjQ5MDBEQkMz
MTcgLyogTlNBdHRyaWJ1dGVkU3RyaW5nU1BJLmggKi87IH07CiAJCTBDMkRBMTRCMUYzQkVCNDkw
MERCQzMxNyAvKiBOU0J1dHRvbkNlbGxTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBDMkRBMTJGMUYzQkVCNDkwMERCQzMxNyAvKiBOU0J1dHRvbkNl
bGxTUEkuaCAqLzsgfTsKQEAgLTIwNyw3ICsyMDYsNiBAQAogCQkwQzJEQTEyOTFGM0JFQjQ5MDBE
QkMzMTcgLyogSU9TdXJmYWNlU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IElPU3VyZmFjZVNQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwQzJEQTEyQTFG
M0JFQjQ5MDBEQkMzMTcgLyogSU9UeXBlc1NQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBJT1R5cGVzU1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBDMkRB
MTJCMUYzQkVCNDkwMERCQzMxNyAvKiBVUkxGb3JtYXR0aW5nU1BJLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFVSTEZvcm1hdHRpbmdTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJMEMyREExMkMxRjNCRUI0OTAwREJDMzE3IC8qIE1hY2hWTVNQSS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYWNoVk1TUEkuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMEMyREExMkQxRjNCRUI0OTAwREJDMzE3IC8qIE5FRmlsdGVyU291cmNl
U1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5FRmlsdGVyU291cmNlU1BJ
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBDMkRBMTJFMUYzQkVCNDkwMERCQzMx
NyAvKiBOU0F0dHJpYnV0ZWRTdHJpbmdTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gTlNBdHRyaWJ1dGVkU3RyaW5nU1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTBDMkRBMTJGMUYzQkVCNDkwMERCQzMxNyAvKiBOU0J1dHRvbkNlbGxTUEkuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTlNCdXR0b25DZWxsU1BJLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC00MTgsNyArNDE2LDYgQEAKIAkJCQkwQzJEQTEyOTFGM0JFQjQ5
MDBEQkMzMTcgLyogSU9TdXJmYWNlU1BJLmggKi8sCiAJCQkJMEMyREExMkExRjNCRUI0OTAwREJD
MzE3IC8qIElPVHlwZXNTUEkuaCAqLywKIAkJCQkwQzVBRjkxMjFGNDNBNEM3MDAyRUFDMDIgLyog
TGF1bmNoU2VydmljZXNTUEkuaCAqLywKLQkJCQkwQzJEQTEyQzFGM0JFQjQ5MDBEQkMzMTcgLyog
TWFjaFZNU1BJLmggKi8sCiAJCQkJMUNDM0FDRTcyMkJEN0VCODAwRjM2MEYwIC8qIE1ldGFsU1BJ
LmggKi8sCiAJCQkJMEMyREExMkQxRjNCRUI0OTAwREJDMzE3IC8qIE5FRmlsdGVyU291cmNlU1BJ
LmggKi8sCiAJCQkJMEMyREExMkUxRjNCRUI0OTAwREJDMzE3IC8qIE5TQXR0cmlidXRlZFN0cmlu
Z1NQSS5oICovLApAQCAtNTQ5LDEwICs1NDYsMTAgQEAKIAkJCQkwQzJEQTA2NTFGMzNDQTMzMDBE
QkMzMTcgLyogc3BpICovLAogCQkJCUEzNzg4RTlGMUYwNUI3Q0UwMDY3OTQyNSAvKiBzeXN0ZW0g
Ki8sCiAJCQkJQTMwRDQxMUQxRjBERDBBQzAwQjcxOTU0IC8qIHRleHQgKi8sCi0JCQkJMUMwMjJF
RkQyMkNGRThFMTAwNkRGMDFCIC8qIEd1bnppcC5oICovLAogCQkJCTBDMkQ5RTcyMUVFRjVBRjYw
MERCQzMxNyAvKiBFeHBvcnRNYWNyb3MuaCAqLywKIAkJCQlGNDQyOTE2MjFGQTUyNjcwMDAyQ0M5
M0UgLyogRmlsZVNpemVGb3JtYXR0ZXIuY3BwICovLAogCQkJCUY0NDI5MTVGMUZBNTI2MUUwMDJD
QzkzRSAvKiBGaWxlU2l6ZUZvcm1hdHRlci5oICovLAorCQkJCTFDMDIyRUZEMjJDRkU4RTEwMDZE
RjAxQiAvKiBHdW56aXAuaCAqLywKIAkJCQlBMzlERTc0RDFGN0M0NDNDMDA3QkNCMDAgLyogSHlz
dGVyZXNpc0FjdGl2aXR5LmggKi8sCiAJCQkJMUM0ODc2RDYxRjhEN0Y0RTAwQ0NFRUJEIC8qIExv
Z2dpbmcuY3BwICovLAogCQkJCTFDNDg3NkQ3MUY4RDdGNEUwMENDRUVCRCAvKiBMb2dnaW5nLmgg
Ki8sCkBAIC01OTcsMTIgKzU5NCwxMiBAQAogCQkxQzQ4NzZERTFGOEQ4MzEzMDBDQ0VFQkQgLyog
Y29jb2EgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCTFD
MDIyRUZDMjJDRkU4RTAwMDZERjAxQiAvKiBHdW56aXAuY3BwICovLAogCQkJCTU3RkQzMTg4MjJC
MzU5MkYwMDhEMEU4QiAvKiBBcHBTU09Tb2Z0TGluay5oICovLAogCQkJCTU3RkQzMTg5MjJCMzU5
M0UwMDhEMEU4QiAvKiBBcHBTU09Tb2Z0TGluay5tbSAqLywKIAkJCQkwNzdFODdCMDIyNkE0NjAy
MDBBMkFGRjAgLyogQVZGb3VuZGF0aW9uU29mdExpbmsuaCAqLywKIAkJCQkwNzdFODdBRjIyNkE0
NjAyMDBBMkFGRjAgLyogQVZGb3VuZGF0aW9uU29mdExpbmsubW0gKi8sCiAJCQkJRjQ0MjkxNjYx
RkE1MjcwNTAwMkNDOTNFIC8qIEZpbGVTaXplRm9ybWF0dGVyQ29jb2EubW0gKi8sCisJCQkJMUMw
MjJFRkMyMkNGRThFMDAwNkRGMDFCIC8qIEd1bnppcC5jcHAgKi8sCiAJCQkJQTFGNjNDOUQyMUE0
REJGNzAwNkZCNDNCIC8qIFBhc3NLaXRTb2Z0TGluay5oICovLAogCQkJCUExRjYzQzlFMjFBNERC
RjcwMDZGQjQzQiAvKiBQYXNzS2l0U29mdExpbmsubW0gKi8sCiAJCQkpOwpAQCAtNzMwLDYgKzcy
Nyw3IEBACiAJCQkJMEMyRDlFNzMxRUVGNUFGNjAwREJDMzE3IC8qIEV4cG9ydE1hY3Jvcy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRjQ0MjkxNjAxRkE1MjYxRTAwMkNDOTNFIC8qIEZpbGVTaXplRm9y
bWF0dGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwQzVBRjkxQjFGNDNBNEM3MDAyRUFDMDIgLyog
R3JhcGhpY3NTZXJ2aWNlc1NQSS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMUMwMjJFRkYyMkNGRUM1
MzAwNkRGMDFCIC8qIEd1bnppcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTEwMjY1OEUxRjU2N0U5
RDAwQjRDODQ0IC8qIEhJU2VydmljZXNTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCUExMDI2NTg5
MUY1Njc0N0EwMEI0Qzg0NCAvKiBISVRvb2xib3hTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCUEz
OURFNzRFMUY3QzQ0M0QwMDdCQ0IwMCAvKiBIeXN0ZXJlc2lzQWN0aXZpdHkuaCBpbiBIZWFkZXJz
ICovLApAQCAtNzQ1LDggKzc0Myw2IEBACiAJCQkJMUM0ODc2RDkxRjhEN0Y0RTAwQ0NFRUJEIC8q
IExvZ2dpbmcuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ0RTFBOEFGMjFGQTU0RTYwMEMzMDQ4RSAv
KiBMb29rdXBTb2Z0TGluay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEM3Nzg1OEIxRjQ1MTMwRjAw
RjRFQkI2IC8qIExvb2t1cFNQSS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMUMwMjJFRkYyMkNGRUM1
MzAwNkRGMDFCIC8qIEd1bnppcC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMEMyREExNDgxRjNCRUI0
OTAwREJDMzE3IC8qIE1hY2hWTVNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEM1QUY5MUQxRjQz
QTRDNzAwMkVBQzAyIC8qIE1lZGlhUGxheWVyU1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQkwQzc3
ODU4QzFGNDUxMzBGMDBGNEVCQjYgLyogTWVkaWFSZW1vdGVTUEkuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBDMDBDRkQ0MUY2OENFNDYwMEFBQzI2RCAvKiBNZWRpYVRpbWVBVkZvdW5kYXRpb24uaCBp
biBIZWFkZXJzICovLApAQCAtOTE5LDkgKzkxNSw5IEBACiAJCQkJQTExNzVCNTgxRjZCNDcwNTAw
QzRCOUYwIC8qIERlZmF1bHRTZWFyY2hQcm92aWRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlG
NDQyOTE2NDFGQTUyNjcwMDAyQ0M5M0UgLyogRmlsZVNpemVGb3JtYXR0ZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJRjQ0MjkxNjgxRkE1MjcwNTAwMkNDOTNFIC8qIEZpbGVTaXplRm9ybWF0dGVy
Q29jb2EubW0gaW4gU291cmNlcyAqLywKKwkJCQkxQzAyMkVGRTIyQ0ZFOEUxMDA2REYwMUIgLyog
R3VuemlwLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUEzMEQ0MTIyMUYwREQwRUEwMEI3MTk1NCAv
KiBLaWxsUmluZy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBMzBENDEyNTFGMEREMTJEMDBCNzE5
NTQgLyogS2lsbFJpbmdNYWMubW0gaW4gU291cmNlcyAqLywKLQkJCQkxQzAyMkVGRTIyQ0ZFOEUx
MDA2REYwMUIgLyogR3VuemlwLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFDNDg3NkQ4MUY4RDdG
NEUwMENDRUVCRCAvKiBMb2dnaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ0RTFBOEIwMjFG
QTU0RUIwMEMzMDQ4RSAvKiBMb29rdXBTb2Z0TGluay5tbSBpbiBTb3VyY2VzICovLAogCQkJCTBD
Rjk5Q0E0MUY3MzYzNzUwMDdFRTc5MyAvKiBNZWRpYVRpbWVBVkZvdW5kYXRpb24uY3BwIGluIFNv
dXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL1BsYXRmb3JtTWFj
LmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9QbGF0Zm9ybU1hYy5jbWFrZQppbmRleCA3
MTcyOWE4YzFiYjU1MWE4MTk3M2FjMzVmMGQxNjAzZmUwMzE5MmRjLi43MzMwNDk5ODc2ZjVhMTA2
MzMzMTJkNGNkY2NhY2JkN2VkOWJhYjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwv
cGFsL1BsYXRmb3JtTWFjLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvUGxhdGZv
cm1NYWMuY21ha2UKQEAgLTMwLDcgKzMwLDYgQEAgbGlzdChBUFBFTkQgUEFMX1BVQkxJQ19IRUFE
RVJTCiAgICAgc3BpL2NvY29hL0lPU3VyZmFjZVNQSS5oCiAgICAgc3BpL2NvY29hL0lPVHlwZXNT
UEkuaAogICAgIHNwaS9jb2NvYS9MYXVuY2hTZXJ2aWNlc1NQSS5oCi0gICAgc3BpL2NvY29hL01h
Y2hWTVNQSS5oCiAgICAgc3BpL2NvY29hL05FRmlsdGVyU291cmNlU1BJLmgKICAgICBzcGkvY29j
b2EvTlNBdHRyaWJ1dGVkU3RyaW5nU1BJLmgKICAgICBzcGkvY29jb2EvTlNCdXR0b25DZWxsU1BJ
LmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVtb3J5UmVsZWFzZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL01lbW9yeVJlbGVhc2UuY3BwCmluZGV4IDhhMjEzNWU1YjUyYWEy
ZWI2N2IyNmI4YWIyMmNhY2Y1YTFhZGQwYjguLjBkNzNlNGIzNDE2NGY5ZTU3ZTdmYzMwNWE3YmZh
NzI2ZDA3ZGM2ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVtb3J5UmVsZWFz
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9NZW1vcnlSZWxlYXNlLmNwcApAQCAtNTAs
NiArNTAsNyBAQAogI2luY2x1ZGUgIlRleHRQYWludGVyLmgiCiAjaW5jbHVkZSAiV29ya2VyVGhy
ZWFkLmgiCiAjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KKyNpbmNsdWRlIDx3dGYvUmVzb3Vy
Y2VVc2FnZS5oPgogI2luY2x1ZGUgPHd0Zi9TeXN0ZW1UcmFjaW5nLmg+CiAKICNpZiBQTEFURk9S
TShDT0NPQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVzb3VyY2VVc2FnZVRo
cmVhZC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9SZXNvdXJjZVVzYWdlVGhyZWFkLmgKaW5kZXgg
MGUzNWVhMjkyNTI1Y2E3OTgyZjI2ZjA1YmNkZDM0NWNlNjZkYjAzMC4uNGFjNmEzZjMxMzM3MDNm
MDE4ZDQyMWFmY2Q0ZTc4MTkyNjdiMzY0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9SZXNvdXJjZVVzYWdlVGhyZWFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9SZXNvdXJj
ZVVzYWdlVGhyZWFkLmgKQEAgLTk0LDE5ICs5NCw2IEBAIGNsYXNzIFJlc291cmNlVXNhZ2VUaHJl
YWQgewogCiB9OwogCi0jaWYgUExBVEZPUk0oQ09DT0EpCi1zdHJ1Y3QgVGFnSW5mbyB7Ci0gICAg
VGFnSW5mbygpIHsgfQotICAgIHNpemVfdCBkaXJ0eSB7IDAgfTsKLSAgICBzaXplX3QgcmVjbGFp
bWFibGUgeyAwIH07Ci19OwotCi1jb25zdCBjaGFyKiBkaXNwbGF5TmFtZUZvclZNVGFnKHVuc2ln
bmVkKTsKLXNpemVfdCB2bVBhZ2VTaXplKCk7Ci1zdGQ6OmFycmF5PFRhZ0luZm8sIDI1Nj4gcGFn
ZXNQZXJWTVRhZygpOwotdm9pZCBsb2dGb290cHJpbnRDb21wYXJpc29uKGNvbnN0IHN0ZDo6YXJy
YXk8VGFnSW5mbywgMjU2PiYsIGNvbnN0IHN0ZDo6YXJyYXk8VGFnSW5mbywgMjU2PiYpOwotI2Vu
ZGlmCi0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShSRVNPVVJD
RV9VU0FHRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvUmVzb3VyY2VV
c2FnZVRocmVhZENvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jb2NvYS9SZXNvdXJjZVVz
YWdlVGhyZWFkQ29jb2EubW0KaW5kZXggMTA3YTljOTJhNmIwMWM5ZmZmZjkyNTE5MzYxMDMyZTJi
YmI2MWYzYy4uODY5ZjgxMjMxZTdhZTZlNzEwZTMwZDVhYjM2OWY2Y2Q4NzdiODhiZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9jb2NvYS9SZXNvdXJjZVVzYWdlVGhyZWFkQ29jb2Eu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jb2NvYS9SZXNvdXJjZVVzYWdlVGhyZWFkQ29j
b2EubW0KQEAgLTM1LDExNCArMzUsMTMgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9WTS5o
PgogI2luY2x1ZGUgPG1hY2gvbWFjaC5oPgogI2luY2x1ZGUgPG1hY2gvdm1fc3RhdGlzdGljcy5o
PgotI2luY2x1ZGUgPHBhbC9zcGkvY29jb2EvTWFjaFZNU1BJLmg+CiAjaW5jbHVkZSA8d3RmL01h
Y2hTZW5kUmlnaHQuaD4KKyNpbmNsdWRlIDx3dGYvUmVzb3VyY2VVc2FnZS5oPgorI2luY2x1ZGUg
PHd0Zi9zcGkvY29jb2EvTWFjaFZNU1BJLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29u
Y2F0ZW5hdGVOdW1iZXJzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc2l6ZV90IHZtUGFn
ZVNpemUoKQotewotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgcmV0dXJuIHZtX2tlcm5l
bF9wYWdlX3NpemU7Ci0jZWxzZQotICAgIHN0YXRpYyBzaXplX3QgY2FjaGVkID0gc3lzY29uZihf
U0NfUEFHRVNJWkUpOwotICAgIHJldHVybiBjYWNoZWQ7Ci0jZW5kaWYKLX0KLQotdm9pZCBsb2dG
b290cHJpbnRDb21wYXJpc29uKGNvbnN0IHN0ZDo6YXJyYXk8VGFnSW5mbywgMjU2PiYgYmVmb3Jl
LCBjb25zdCBzdGQ6OmFycmF5PFRhZ0luZm8sIDI1Nj4mIGFmdGVyKQotewotICAgIGNvbnN0IHNp
emVfdCBwYWdlU2l6ZSA9IHZtUGFnZVNpemUoKTsKLQotICAgIFdURkxvZ0Fsd2F5cygiUGVyLXRh
ZyBicmVha2Rvd24gb2YgbWVtb3J5IHJlY2xhaW1lZCBieSBwcmVzc3VyZSBoYW5kbGVyOiIpOwot
ICAgIFdURkxvZ0Fsd2F5cygiICAjIyAlMTZzICUxMHMgJTEwcyAlMTBzIiwgIlZNIFRhZyIsICJC
ZWZvcmUiLCAiQWZ0ZXIiLCAiRGlmZiIpOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCAy
NTY7ICsraSkgewotICAgICAgICBzc2l6ZV90IGRpcnR5QmVmb3JlID0gYmVmb3JlW2ldLmRpcnR5
ICogcGFnZVNpemU7Ci0gICAgICAgIHNzaXplX3QgZGlydHlBZnRlciA9IGFmdGVyW2ldLmRpcnR5
ICogcGFnZVNpemU7Ci0gICAgICAgIHNzaXplX3QgZGlydHlEaWZmID0gZGlydHlBZnRlciAtIGRp
cnR5QmVmb3JlOwotICAgICAgICBpZiAoIWRpcnR5QmVmb3JlICYmICFkaXJ0eUFmdGVyKQotICAg
ICAgICAgICAgY29udGludWU7Ci0gICAgICAgIFN0cmluZyB0YWdOYW1lID0gZGlzcGxheU5hbWVG
b3JWTVRhZyhpKTsKLSAgICAgICAgaWYgKCF0YWdOYW1lKQotICAgICAgICAgICAgdGFnTmFtZSA9
IG1ha2VTdHJpbmcoIlRhZyAiLCBpKTsKLSAgICAgICAgV1RGTG9nQWx3YXlzKCIgICUwMlggJTE2
cyAlMTBsZCAlMTBsZCAlMTBsZCIsCi0gICAgICAgICAgICBpLAotICAgICAgICAgICAgdGFnTmFt
ZS5hc2NpaSgpLmRhdGEoKSwKLSAgICAgICAgICAgIGRpcnR5QmVmb3JlLAotICAgICAgICAgICAg
ZGlydHlBZnRlciwKLSAgICAgICAgICAgIGRpcnR5RGlmZgotICAgICAgICApOwotICAgIH0KLX0K
LQotY29uc3QgY2hhciogZGlzcGxheU5hbWVGb3JWTVRhZyh1bnNpZ25lZCB0YWcpCi17Ci0gICAg
c3dpdGNoICh0YWcpIHsKLSAgICBjYXNlIFZNX01FTU9SWV9JT0tJVDogcmV0dXJuICJJT0tpdCI7
Ci0gICAgY2FzZSBWTV9NRU1PUllfTEFZRVJLSVQ6IHJldHVybiAiQ29yZUFuaW1hdGlvbiI7Ci0g
ICAgY2FzZSBWTV9NRU1PUllfSU1BR0VJTzogcmV0dXJuICJJbWFnZUlPIjsKLSAgICBjYXNlIFZN
X01FTU9SWV9DR0lNQUdFOiByZXR1cm4gIkNHIGltYWdlIjsKLSAgICBjYXNlIFZNX01FTU9SWV9K
QVZBU0NSSVBUX0NPUkU6IHJldHVybiAiR2lnYWNhZ2UiOwotICAgIGNhc2UgVk1fTUVNT1JZX0pB
VkFTQ1JJUFRfSklUX0VYRUNVVEFCTEVfQUxMT0NBVE9SOiByZXR1cm4gIkpTQyBKSVQiOwotICAg
IGNhc2UgVk1fTUVNT1JZX0pBVkFTQ1JJUFRfSklUX1JFR0lTVEVSX0ZJTEU6IHJldHVybiAiSXNv
SGVhcCI7Ci0gICAgY2FzZSBWTV9NRU1PUllfTUFMTE9DOiByZXR1cm4gIm1hbGxvYyI7Ci0gICAg
Y2FzZSBWTV9NRU1PUllfTUFMTE9DX0hVR0U6IHJldHVybiAibWFsbG9jIChodWdlKSI7Ci0gICAg
Y2FzZSBWTV9NRU1PUllfTUFMTE9DX0xBUkdFOiByZXR1cm4gIm1hbGxvYyAobGFyZ2UpIjsKLSAg
ICBjYXNlIFZNX01FTU9SWV9NQUxMT0NfU01BTEw6IHJldHVybiAibWFsbG9jIChzbWFsbCkiOwot
ICAgIGNhc2UgVk1fTUVNT1JZX01BTExPQ19USU5ZOiByZXR1cm4gIm1hbGxvYyAodGlueSkiOwot
ICAgIGNhc2UgVk1fTUVNT1JZX01BTExPQ19OQU5POiByZXR1cm4gIm1hbGxvYyAobmFubykiOwot
ICAgIGNhc2UgVk1fTUVNT1JZX1RDTUFMTE9DOiByZXR1cm4gImJtYWxsb2MiOwotICAgIGNhc2Ug
Vk1fTUVNT1JZX0ZPVU5EQVRJT046IHJldHVybiAiRm91bmRhdGlvbiI7Ci0gICAgY2FzZSBWTV9N
RU1PUllfU1RBQ0s6IHJldHVybiAiU3RhY2siOwotICAgIGNhc2UgVk1fTUVNT1JZX1NRTElURTog
cmV0dXJuICJTUUxpdGUiOwotICAgIGNhc2UgVk1fTUVNT1JZX1VOU0hBUkVEX1BNQVA6IHJldHVy
biAicG1hcCAodW5zaGFyZWQpIjsKLSAgICBjYXNlIFZNX01FTU9SWV9EWUxJQjogcmV0dXJuICJk
eWxpYiI7Ci0gICAgY2FzZSBWTV9NRU1PUllfQ09SRVNFUlZJQ0VTOiByZXR1cm4gIkNvcmVTZXJ2
aWNlcyI7Ci0gICAgY2FzZSBWTV9NRU1PUllfT1NfQUxMT0NfT05DRTogcmV0dXJuICJvc19hbGxv
Y19vbmNlIjsKLSAgICBjYXNlIFZNX01FTU9SWV9MSUJESVNQQVRDSDogcmV0dXJuICJsaWJkaXNw
YXRjaCI7Ci0gICAgZGVmYXVsdDogcmV0dXJuIG51bGxwdHI7Ci0gICAgfQotfQotCi1zdGQ6OmFy
cmF5PFRhZ0luZm8sIDI1Nj4gcGFnZXNQZXJWTVRhZygpCi17Ci0gICAgc3RkOjphcnJheTxUYWdJ
bmZvLCAyNTY+IHRhZ3M7Ci0gICAgdGFza190IHRhc2sgPSBtYWNoX3Rhc2tfc2VsZigpOwotICAg
IG1hY2hfdm1fc2l6ZV90IHNpemU7Ci0gICAgdWludDMyX3QgZGVwdGggPSAwOwotICAgIHN0cnVj
dCB2bV9yZWdpb25fc3VibWFwX2luZm9fNjQgaW5mbyA9IHsgfTsKLSAgICBtYWNoX21zZ190eXBl
X251bWJlcl90IGNvdW50ID0gVk1fUkVHSU9OX1NVQk1BUF9JTkZPX0NPVU5UXzY0OwotICAgIGZv
ciAobWFjaF92bV9hZGRyZXNzX3QgYWRkciA9IDA7IDsgYWRkciArPSBzaXplKSB7Ci0gICAgICAg
IGludCBwdXJnZWFibGVTdGF0ZTsKLSAgICAgICAgaWYgKG1hY2hfdm1fcHVyZ2FibGVfY29udHJv
bCh0YXNrLCBhZGRyLCBWTV9QVVJHQUJMRV9HRVRfU1RBVEUsICZwdXJnZWFibGVTdGF0ZSkgIT0g
S0VSTl9TVUNDRVNTKQotICAgICAgICAgICAgcHVyZ2VhYmxlU3RhdGUgPSBWTV9QVVJHQUJMRV9E
RU5ZOwotCi0gICAgICAgIGtlcm5fcmV0dXJuX3Qga3IgPSBtYWNoX3ZtX3JlZ2lvbl9yZWN1cnNl
KHRhc2ssICZhZGRyLCAmc2l6ZSwgJmRlcHRoLCAodm1fcmVnaW9uX2luZm9fdCkmaW5mbywgJmNv
dW50KTsKLSAgICAgICAgaWYgKGtyICE9IEtFUk5fU1VDQ0VTUykKLSAgICAgICAgICAgIGJyZWFr
OwotCi0gICAgICAgIGlmIChwdXJnZWFibGVTdGF0ZSA9PSBWTV9QVVJHQUJMRV9WT0xBVElMRSkg
ewotICAgICAgICAgICAgdGFnc1tpbmZvLnVzZXJfdGFnXS5yZWNsYWltYWJsZSArPSBpbmZvLnBh
Z2VzX3Jlc2lkZW50OwotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLQotICAgICAg
ICBpZiAocHVyZ2VhYmxlU3RhdGUgPT0gVk1fUFVSR0FCTEVfRU1QVFkpIHsKLSAgICAgICAgICAg
IHRhZ3NbaW5mby51c2VyX3RhZ10ucmVjbGFpbWFibGUgKz0gc2l6ZSAvIHZtUGFnZVNpemUoKTsK
LSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBhbm9ueW1v
dXMgPSAhaW5mby5leHRlcm5hbF9wYWdlcjsKLSAgICAgICAgaWYgKGFub255bW91cykgewotICAg
ICAgICAgICAgdGFnc1tpbmZvLnVzZXJfdGFnXS5kaXJ0eSArPSBpbmZvLnBhZ2VzX3Jlc2lkZW50
IC0gaW5mby5wYWdlc19yZXVzYWJsZTsKLSAgICAgICAgICAgIHRhZ3NbaW5mby51c2VyX3RhZ10u
cmVjbGFpbWFibGUgKz0gaW5mby5wYWdlc19yZXVzYWJsZTsKLSAgICAgICAgfSBlbHNlCi0gICAg
ICAgICAgICB0YWdzW2luZm8udXNlcl90YWddLmRpcnR5ICs9IGluZm8ucGFnZXNfZGlydGllZDsK
LSAgICB9Ci0KLSAgICByZXR1cm4gdGFnczsKLX0KLQogc3RhdGljIHVuc2lnbmVkIGNhdGVnb3J5
Rm9yVk1UYWcodW5zaWduZWQgdGFnKQogewogICAgIHN3aXRjaCAodGFnKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NvY29hL1NoYXJlZE1lbW9yeUNvY29hLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvU2hhcmVkTWVtb3J5Q29jb2EuY3BwCmluZGV4IGU4
YzZmYzBlYTdhODIzYjM3YjQyNzc1MDg3YmQ1YjI2MWM1ZGI0NTkuLjE3ZTYyNzBhZGE1OWI0ZGVk
MjNiMDFhYzQ0M2VkYjFiYTViZTk2NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vY29jb2EvU2hhcmVkTWVtb3J5Q29jb2EuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vY29jb2EvU2hhcmVkTWVtb3J5Q29jb2EuY3BwCkBAIC0zNCw5ICszNCw5IEBACiAjaW5jbHVk
ZSA8bWFjaC9tYWNoX2Vycm9yLmg+CiAjaW5jbHVkZSA8bWFjaC9tYWNoX3BvcnQuaD4KICNpbmNs
dWRlIDxtYWNoL3ZtX21hcC5oPgotI2luY2x1ZGUgPHBhbC9zcGkvY29jb2EvTWFjaFZNU1BJLmg+
CiAjaW5jbHVkZSA8d3RmL01hY2hTZW5kUmlnaHQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+
CisjaW5jbHVkZSA8d3RmL3NwaS9jb2NvYS9NYWNoVk1TUEkuaD4KIAogbmFtZXNwYWNlIFdlYktp
dCB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvUGFnZS5jcHAgYi9T
b3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb1BhZ2UuY3BwCmluZGV4IDcwN2MzNjBiZDFhNDAzOGFh
MTEzZmY3OWUyZjFjYTlkNzg5MzJkYTMuLjQyMDQ5ZDE4Yjk5ZWVmYmVmNWFmMDUxNGFiMTAwYTdj
OWE5MDc2MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvUGFnZS5jcHAK
KysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29QYWdlLmNwcApAQCAtMjYsNyArMjYsNyBA
QAogI2luY2x1ZGUgIklzb1BhZ2UuaCIKIAogI2luY2x1ZGUgIlBlclByb2Nlc3MuaCIKLSNpbmNs
dWRlICJWTUhlYXAuaCIKKyNpbmNsdWRlICJWTUFsbG9jYXRlLmgiCiAKIG5hbWVzcGFjZSBibWFs
bG9jIHsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmlu
ZGV4IDY4YTliYzVlZGRhZmM5NWQzZGMzYTM0MzE3YmJjZjNjNDgwYTU4YWIuLjdkOWU1NjFmZWJl
ZjdjYjIzYWNlYTBmNGJlMDFmYjdkYzMzNjI2NTkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxv
ZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxOS0wNy0yNCAgWXVz
dWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtibWFsbG9jXSBBZGQg
SXNvSGVhcCB0ZXN0IHRvIGVuc3VyZSB0aGF0IElzb0hlYXAgcGFnZXMgYXJlIG5vdCBhbGxvY2F0
aW5nIHRvbyBsYXJnZSBWQQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjAwMTAzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIHRlc3RzIHRvIFRlc3RXVEYgSXNvSGVhcCB0ZXN0cyB0
byBlbnN1cmUgdGhhdCBJc29IZWFwJ3MgY29tcG9uZW50IGlzIG5vdCBsZWFraW5nIHBhZ2VzIG9y
IG5vdCBhbGxvY2F0aW5nIHRvbyBsYXJnZSBWQXMgZm9yIG1lbW9yeSBhbGxvY2F0aW9uLgorICAg
ICAgICBXZSB1c2UgVk1UYWcgdG8gZ2V0IHRoZSBzeXN0ZW0gdmlldyBvZiB0aGUgYWxsb2NhdGVk
IFZBcyBhbmQgY2hlY2sgd2hldGhlciBpdCBpcyBub3QgaW5jcmVkaWJseSBsYXJnZS4KKworICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL2JtYWxsb2MvSXNvSGVhcC5jcHA6CisgICAg
ICAgIChhc3NlcnRFbXB0eVBvaW50ZXJTZXQpOgorICAgICAgICAoYXNzZXJ0SGFzT25seU9iamVj
dHMpOgorICAgICAgICAoYXNzZXJ0Q2xlYW4pOgorICAgICAgICAoVEVTVCk6CisgICAgICAgIChh
bGxvY2F0ZUFuZERlYWxsb2NhdGUpOgorCiAyMDE5LTA3LTI0ICBaaGlmZWkgRmFuZyAgPHpoaWZl
aV9mYW5nQGFwcGxlLmNvbT4KIAogICAgICAgICBydW4tamF2YXNjcmlwdGNvcmUtdGVzdHMgd29u
J3QgcmVwb3J0IHRlc3QgcmVzdWx0cyBmb3IgdGVzdG1hc20sIHRlc3RhaXIsIHRlc3RiMywgdGVz
dGRmZyBhbmQgdGVzdCBhcGkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V1RGL2JtYWxsb2MvSXNvSGVhcC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9i
bWFsbG9jL0lzb0hlYXAuY3BwCmluZGV4IDFhZTUwYTUxZjQ3NTFkYWIxNGFlOTY3Njk1ZTQwYWMx
NGVkNzRmOTUuLjI2N2NlMTI0NGY4NmQyMWFkMzU3ZmZiMDU2OGY1NWI5MTExMTVmZDggMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL2JtYWxsb2MvSXNvSGVhcC5jcHAK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvYm1hbGxvYy9Jc29IZWFwLmNwcApA
QCAtMzAsNyArMzAsOSBAQAogI2luY2x1ZGUgPGJtYWxsb2MvYm1hbGxvYy5oPgogI2luY2x1ZGUg
PGJtYWxsb2MvRW52aXJvbm1lbnQuaD4KICNpbmNsdWRlIDxibWFsbG9jL0lzb0hlYXBJbmxpbmVz
Lmg+CisjaW5jbHVkZSA8d3RmL1Jlc291cmNlVXNhZ2UuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFk
aW5nLmg+CisjaW5jbHVkZSA8d3RmL1ZNVGFncy5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUmFuZG9t
Lmg+CiAKICNpbmNsdWRlIDxjbWF0aD4KQEAgLTQxLDIzICs0Myw2IEBACiB1c2luZyBuYW1lc3Bh
Y2UgYm1hbGxvYzsKIHVzaW5nIG5hbWVzcGFjZSBibWFsbG9jOjphcGk7CiAKLSNkZWZpbmUgUlVO
KHRlc3QpIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLWlmICghc2hvdWxkUnVuKCN0
ZXN0KSkgICAgICAgICAgICAgICAgICBcCi1icmVhazsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCi1wdXRzKCN0ZXN0ICIuLi4iKTsgICAgICAgICAgICAgICAgICAgICAgXAotdGVzdDsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXB1dHMoI3Rlc3QgIjogT0shIik7
ICAgICAgICAgICAgICAgICAgICBcCi19IHdoaWxlIChmYWxzZSkKLQotLy8gTm90aGluZyBmYW5j
eSBmb3Igbm93OyB3ZSBqdXN0IHVzZSB0aGUgZXhpc3RpbmcgV1RGIGFzc2VydGlvbiBtYWNoaW5l
cnkuCi0jZGVmaW5lIENIRUNLKHgpIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCi1pZiAoISEoeCkpICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotYnJlYWs7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotZnByaW50ZihzdGRlcnIsICIl
czolZDogaW4gJXM6IGFzc2VydGlvbiAlcyBmYWlsZWQuXG4iLCAgICAgICAgIFwKLV9fRklMRV9f
LCBfX0xJTkVfXywgX19QUkVUVFlfRlVOQ1RJT05fXywgI3gpOyAgICAgICAgICAgICAgIFwKLWFi
b3J0KCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCi19IHdoaWxlIChmYWxzZSkKLQogc3RhdGljIHN0ZDo6c2V0PHZvaWQqPiB0b3B0cnNl
dChjb25zdCBzdGQ6OnZlY3Rvcjx2b2lkKj4mIHB0cnMpCiB7CiAgICAgc3RkOjpzZXQ8dm9pZCo+
IHJlc3VsdDsKQEAgLTgxLDcgKzY2LDcgQEAgc3RhdGljIHZvaWQgYXNzZXJ0RW1wdHlQb2ludGVy
U2V0KGNvbnN0IHN0ZDo6c2V0PHZvaWQqPiYgcG9pbnRlcnMpCiAgICAgZm9yICh2b2lkKiBwdHIg
OiBwb2ludGVycykKICAgICAgICAgcHJpbnRmKCIgJXAiLCBwdHIpOwogICAgIHByaW50ZigiXG4i
KTsKLSAgICBDSEVDSyhwb2ludGVycy5lbXB0eSgpKTsKKyAgICBFWFBFQ1RfVFJVRShwb2ludGVy
cy5lbXB0eSgpKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgaGVhcFR5cGU+CkBAIC0xMTEsNyAr
OTYsNyBAQCBzdGF0aWMgdm9pZCBhc3NlcnRIYXNPbmx5T2JqZWN0cyhJc29IZWFwPGhlYXBUeXBl
PiYgaGVhcCwgc3RkOjpzZXQ8dm9pZCo+IHBvaW50ZQogICAgIHN0ZDo6bG9ja19ndWFyZDxibWFs
bG9jOjpNdXRleD4gbG9ja2VyKGltcGwubG9jayk7CiAgICAgaW1wbC5mb3JFYWNoTGl2ZU9iamVj
dCgKICAgICAgICAgWyZdICh2b2lkKiBvYmplY3QpIHsKLSAgICAgICAgICAgIENIRUNLKHBvaW50
ZXJzLmVyYXNlKG9iamVjdCkgPT0gMSk7CisgICAgICAgICAgICBFWFBFQ1RfRVEocG9pbnRlcnMu
ZXJhc2Uob2JqZWN0KSwgMVUpOwogICAgICAgICB9KTsKICAgICBhc3NlcnRFbXB0eVBvaW50ZXJT
ZXQocG9pbnRlcnMpOwogfQpAQCAtMTI0LDE0ICsxMDksMTQgQEAgc3RhdGljIHZvaWQgYXNzZXJ0
Q2xlYW4oSXNvSGVhcDxoZWFwVHlwZT4mIGhlYXApCiAgICAgICAgIGF1dG8mIGltcGwgPSBoZWFw
LmltcGwoKTsKICAgICAgICAgewogICAgICAgICAgICAgc3RkOjpsb2NrX2d1YXJkPGJtYWxsb2M6
Ok11dGV4PiBsb2NrZXIoaW1wbC5sb2NrKTsKLSAgICAgICAgICAgIENIRUNLKCFpbXBsLm51bUxp
dmVPYmplY3RzKCkpOworICAgICAgICAgICAgRVhQRUNUX0ZBTFNFKGltcGwubnVtTGl2ZU9iamVj
dHMoKSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgaGVhcC5zY2F2ZW5nZSgpOwogICAgIGlmICgh
RW52aXJvbm1lbnQ6OmdldCgpLT5pc0RlYnVnSGVhcEVuYWJsZWQoKSkgewogICAgICAgICBhdXRv
JiBpbXBsID0gaGVhcC5pbXBsKCk7CiAgICAgICAgIHN0ZDo6bG9ja19ndWFyZDxibWFsbG9jOjpN
dXRleD4gbG9ja2VyKGltcGwubG9jayk7Ci0gICAgICAgIENIRUNLKCFpbXBsLm51bUNvbW1pdHRl
ZFBhZ2VzKCkpOworICAgICAgICBFWFBFQ1RfRkFMU0UoaW1wbC5udW1Db21taXR0ZWRQYWdlcygp
KTsKICAgICB9CiB9CiAKQEAgLTEzOSwxMSArMTI0LDExIEBAIFRFU1QoYm1hbGxvYywgSXNvU2lt
cGxlKQogewogICAgIHN0YXRpYyBJc29IZWFwPGRvdWJsZT4gaGVhcDsKICAgICB2b2lkKiBwdHIx
ID0gaGVhcC5hbGxvY2F0ZSgpOwotICAgIENIRUNLKHB0cjEpOworICAgIEVYUEVDVF9UUlVFKHB0
cjEpOwogICAgIHZvaWQqIHB0cjIgPSBoZWFwLmFsbG9jYXRlKCk7Ci0gICAgQ0hFQ0socHRyMik7
Ci0gICAgQ0hFQ0socHRyMSAhPSBwdHIyKTsKLSAgICBDSEVDSyhzdGQ6OmFicyhzdGF0aWNfY2Fz
dDxjaGFyKj4ocHRyMSkgLSBzdGF0aWNfY2FzdDxjaGFyKj4ocHRyMikpID49IDgpOworICAgIEVY
UEVDVF9UUlVFKHB0cjIpOworICAgIEVYUEVDVF9ORShwdHIxLCBwdHIyKTsKKyAgICBFWFBFQ1Rf
R0Uoc3RkOjphYnMoc3RhdGljX2Nhc3Q8Y2hhcio+KHB0cjEpIC0gc3RhdGljX2Nhc3Q8Y2hhcio+
KHB0cjIpKSwgOCk7CiAgICAgYXNzZXJ0SGFzT2JqZWN0cyhoZWFwLCB7cHRyMSwgcHRyMn0pOwog
ICAgIGhlYXAuZGVhbGxvY2F0ZShwdHIxKTsKICAgICBoZWFwLmRlYWxsb2NhdGUocHRyMik7CkBA
IC0xNTQsMTEgKzEzOSwxMSBAQCBURVNUKGJtYWxsb2MsIElzb1NpbXBsZVNjYXZlbmdlQmVmb3Jl
RGVhbGxvYykKIHsKICAgICBzdGF0aWMgSXNvSGVhcDxkb3VibGU+IGhlYXA7CiAgICAgdm9pZCog
cHRyMSA9IGhlYXAuYWxsb2NhdGUoKTsKLSAgICBDSEVDSyhwdHIxKTsKKyAgICBFWFBFQ1RfVFJV
RShwdHIxKTsKICAgICB2b2lkKiBwdHIyID0gaGVhcC5hbGxvY2F0ZSgpOwotICAgIENIRUNLKHB0
cjIpOwotICAgIENIRUNLKHB0cjEgIT0gcHRyMik7Ci0gICAgQ0hFQ0soc3RkOjphYnMoc3RhdGlj
X2Nhc3Q8Y2hhcio+KHB0cjEpIC0gc3RhdGljX2Nhc3Q8Y2hhcio+KHB0cjIpKSA+PSA4KTsKKyAg
ICBFWFBFQ1RfVFJVRShwdHIyKTsKKyAgICBFWFBFQ1RfTkUocHRyMSwgcHRyMik7CisgICAgRVhQ
RUNUX0dFKHN0ZDo6YWJzKHN0YXRpY19jYXN0PGNoYXIqPihwdHIxKSAtIHN0YXRpY19jYXN0PGNo
YXIqPihwdHIyKSksIDgpOwogICAgIHNjYXZlbmdlVGhpc1RocmVhZCgpOwogICAgIGFzc2VydEhh
c09ubHlPYmplY3RzKGhlYXAsIHtwdHIxLCBwdHIyfSk7CiAgICAgaGVhcC5kZWFsbG9jYXRlKHB0
cjEpOwpAQCAtMTcyLDcgKzE1Nyw3IEBAIFRFU1QoYm1hbGxvYywgSXNvRmxpcEZsb3BGcmFnbWVu
dGVkUGFnZXMpCiAgICAgc3RkOjp2ZWN0b3I8dm9pZCo+IHB0cnM7CiAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMTAwMDAwOyBpLS07KSB7CiAgICAgICAgIHZvaWQqIHB0ciA9IGhlYXAuYWxsb2NhdGUo
KTsKLSAgICAgICAgQ0hFQ0socHRyKTsKKyAgICAgICAgRVhQRUNUX1RSVUUocHRyKTsKICAgICAg
ICAgcHRycy5wdXNoX2JhY2socHRyKTsKICAgICB9CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IHB0cnMuc2l6ZSgpOyBpICs9IDIpIHsKQEAgLTE5MiwxMCArMTc3LDEwIEBAIFRFU1QoYm1h
bGxvYywgSXNvRmxpcEZsb3BGcmFnbWVudGVkUGFnZXNTY2F2ZW5nZUluTWlkZGxlKQogICAgIHN0
ZDo6dmVjdG9yPHZvaWQqPiBwdHJzOwogICAgIGZvciAodW5zaWduZWQgaSA9IDEwMDAwMDsgaS0t
OykgewogICAgICAgICB2b2lkKiBwdHIgPSBoZWFwLmFsbG9jYXRlKCk7Ci0gICAgICAgIENIRUNL
KHB0cik7CisgICAgICAgIEVYUEVDVF9UUlVFKHB0cik7CiAgICAgICAgIHB0cnMucHVzaF9iYWNr
KHB0cik7CiAgICAgfQotICAgIENIRUNLKHRvcHRyc2V0KHB0cnMpLnNpemUoKSA9PSBwdHJzLnNp
emUoKSk7CisgICAgRVhQRUNUX0VRKHRvcHRyc2V0KHB0cnMpLnNpemUoKSwgcHRycy5zaXplKCkp
OwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwdHJzLnNpemUoKTsgaSArPSAyKSB7CiAg
ICAgICAgIGhlYXAuZGVhbGxvY2F0ZShwdHJzW2ldKTsKICAgICAgICAgcHRyc1tpXSA9IG51bGxw
dHI7CkBAIC0yMTIsNyArMTk3LDcgQEAgVEVTVChibWFsbG9jLCBJc29GbGlwRmxvcEZyYWdtZW50
ZWRQYWdlc1NjYXZlbmdlSW5NaWRkbGUpCiAgICAgICAgIHB0cnMucHVzaF9iYWNrKGhlYXAuYWxs
b2NhdGUoKSk7CiAgICAgewogICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8Ym1hbGxvYzo6TXV0ZXg+
IGxvY2tlcihpbXBsLmxvY2spOwotICAgICAgICBDSEVDSyhudW1Db21taXR0ZWRQYWdlc0JlZm9y
ZSA9PSBpbXBsLm51bUNvbW1pdHRlZFBhZ2VzKCkpOworICAgICAgICBFWFBFQ1RfRVEobnVtQ29t
bWl0dGVkUGFnZXNCZWZvcmUsIGltcGwubnVtQ29tbWl0dGVkUGFnZXMoKSk7CiAgICAgfQogICAg
IGZvciAodm9pZCogcHRyIDogcHRycykKICAgICAgICAgaGVhcC5kZWFsbG9jYXRlKHB0cik7CkBA
IC0yMjUsMTAgKzIxMCwxMCBAQCBURVNUKGJtYWxsb2MsIElzb0ZsaXBGbG9wRnJhZ21lbnRlZFBh
Z2VzU2NhdmVuZ2VJbk1pZGRsZTI4OCkKICAgICBzdGQ6OnZlY3Rvcjx2b2lkKj4gcHRyczsKICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAxMDAwMDA7IGktLTspIHsKICAgICAgICAgdm9pZCogcHRyID0g
aGVhcC5hbGxvY2F0ZSgpOwotICAgICAgICBDSEVDSyhwdHIpOworICAgICAgICBFWFBFQ1RfVFJV
RShwdHIpOwogICAgICAgICBwdHJzLnB1c2hfYmFjayhwdHIpOwogICAgIH0KLSAgICBDSEVDSyh0
b3B0cnNldChwdHJzKS5zaXplKCkgPT0gcHRycy5zaXplKCkpOworICAgIEVYUEVDVF9FUSh0b3B0
cnNldChwdHJzKS5zaXplKCksIHB0cnMuc2l6ZSgpKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgcHRycy5zaXplKCk7IGkgKz0gMikgewogICAgICAgICBoZWFwLmRlYWxsb2NhdGUocHRy
c1tpXSk7CiAgICAgICAgIHB0cnNbaV0gPSBudWxscHRyOwpAQCAtMjQ1LDcgKzIzMCw3IEBAIFRF
U1QoYm1hbGxvYywgSXNvRmxpcEZsb3BGcmFnbWVudGVkUGFnZXNTY2F2ZW5nZUluTWlkZGxlMjg4
KQogICAgICAgICBwdHJzLnB1c2hfYmFjayhoZWFwLmFsbG9jYXRlKCkpOwogICAgIHsKICAgICAg
ICAgc3RkOjpsb2NrX2d1YXJkPGJtYWxsb2M6Ok11dGV4PiBsb2NrZXIoaW1wbC5sb2NrKTsKLSAg
ICAgICAgQ0hFQ0sobnVtQ29tbWl0dGVkUGFnZXNCZWZvcmUgPT0gaW1wbC5udW1Db21taXR0ZWRQ
YWdlcygpKTsKKyAgICAgICAgRVhQRUNUX0VRKG51bUNvbW1pdHRlZFBhZ2VzQmVmb3JlLCBpbXBs
Lm51bUNvbW1pdHRlZFBhZ2VzKCkpOwogICAgIH0KICAgICBmb3IgKHZvaWQqIHB0ciA6IHB0cnMp
CiAgICAgICAgIGhlYXAuZGVhbGxvY2F0ZShwdHIpOwpAQCAtMjYwLDcgKzI0NSw3IEBAIFRFU1Qo
Ym1hbGxvYywgSXNvTWFsbG9jQW5kRnJlZUZhc3QpCiAgICAgICAgIHB0ciA9IGhlYXAuYWxsb2Nh
dGUoKTsKICAgICAgICAgaGVhcC5kZWFsbG9jYXRlKHB0cik7CiAgICAgfQotICAgIENIRUNLKCFJ
c29QYWdlQmFzZTo6cGFnZUZvcihwdHIpLT5pc1NoYXJlZCgpKTsKKyAgICBFWFBFQ1RfRkFMU0Uo
SXNvUGFnZUJhc2U6OnBhZ2VGb3IocHRyKS0+aXNTaGFyZWQoKSk7CiB9CiAKIGNsYXNzIEJpc29N
YWxsb2NlZCB7CkBAIC0zMTksMjEgKzMwNCwyMSBAQCBURVNUKGJtYWxsb2MsIFNjYXZlbmdlZE1l
bW9yeVNob3VsZEJlUmV1c2VkKQogICAgICAgICAvLyBMZXQncyBleGhhdXN0IHRoZSBjYXBhY2l0
eSBvZiB0aGUgbG93ZXIgdGllci4KICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IElz
b1BhZ2U8ZGVjbHR5cGUoaGVhcCk6OkNvbmZpZz46Om51bU9iamVjdHM7ICsraSkgewogICAgICAg
ICAgICAgdm9pZCogcHRyID0gaGVhcC5hbGxvY2F0ZSgpOwotICAgICAgICAgICAgQ0hFQ0socHRy
KTsKKyAgICAgICAgICAgIEVYUEVDVF9UUlVFKHB0cik7CiAgICAgICAgICAgICBsb3dlclRpZXJQ
dHJzLnB1c2hfYmFjayhwdHIpOwogICAgICAgICB9CiAKICAgICAgICAgLy8gQWZ0ZXIgdGhhdCwg
YWxsb2NhdGluZyBwb2ludGVycyBpbiB0aGUgdXBwZXIgdGllci4KICAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgO2krKykgewogICAgICAgICAgICAgdm9pZCogcHRyID0gaGVhcC5hbGxvY2F0
ZSgpOwotICAgICAgICAgICAgQ0hFQ0socHRyKTsKKyAgICAgICAgICAgIEVYUEVDVF9UUlVFKHB0
cik7CiAgICAgICAgICAgICBwdHJzLnB1c2hfYmFjayhwdHIpOwogICAgICAgICAgICAgaWYgKGhl
YXAuaW1wbCgpLm51bUNvbW1pdHRlZFBhZ2VzKCkgPT0gbnVtUGFnZXNUb0NvbW1pdCkKICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCiAgICAgICAgIHN0ZDo6c2V0PHZvaWQqPiB1
bmlxdWVkUHRyc09mVXBwZXJUaWVycyA9IHRvcHRyc2V0KHB0cnMpOwotICAgICAgICBDSEVDSyhw
dHJzLnNpemUoKSA9PSB1bmlxdWVkUHRyc09mVXBwZXJUaWVycy5zaXplKCkpOworICAgICAgICBF
WFBFQ1RfRVEocHRycy5zaXplKCksIHVuaXF1ZWRQdHJzT2ZVcHBlclRpZXJzLnNpemUoKSk7CiAK
ICAgICAgICAgc3RkOjpzZXQ8dm9pZCo+IHVuaXF1ZWRQdHJzID0gdW5pcXVlZFB0cnNPZlVwcGVy
VGllcnM7CiAgICAgICAgIGZvciAodm9pZCogcHRyIDogbG93ZXJUaWVyUHRycykKQEAgLTM1MSw3
ICszMzYsNyBAQCBURVNUKGJtYWxsb2MsIFNjYXZlbmdlZE1lbW9yeVNob3VsZEJlUmV1c2VkKQog
ICAgICAgICBhc3NlcnRIYXNPbmx5T2JqZWN0cyhoZWFwLCB1bmlxdWVkUHRycyk7CiAKICAgICAg
ICAgYXV0byogcHRyMiA9IGhlYXAuYWxsb2NhdGUoKTsKLSAgICAgICAgQ0hFQ0sodW5pcXVlZFB0
cnNPZlVwcGVyVGllcnMuZmluZChwdHIyKSAhPSB1bmlxdWVkUHRyc09mVXBwZXJUaWVycy5lbmQo
KSk7CisgICAgICAgIEVYUEVDVF9ORSh1bmlxdWVkUHRyc09mVXBwZXJUaWVycy5maW5kKHB0cjIp
LCB1bmlxdWVkUHRyc09mVXBwZXJUaWVycy5lbmQoKSk7CiAgICAgICAgIGhlYXAuZGVhbGxvY2F0
ZShwdHIyKTsKIAogICAgICAgICBmb3IgKHZvaWQqIHB0ciA6IGxvd2VyVGllclB0cnMpCkBAIC0y
NDgxLDQgKzI0NjYsNTggQEAgVEVTVChibWFsbG9jLCBJc29IZWFwTXVsdGlwbGVUaHJlYWRzKQog
ICAgICAgICB0aHJlYWQtPndhaXRGb3JDb21wbGV0aW9uKCk7CiB9CiAKKyNpZiBQTEFURk9STShD
T0NPQSkKK3N0YXRpYyB2b2lkIGFsbG9jYXRlQW5kRGVhbGxvY2F0ZSgpCit7CisgICAgc3RhdGlj
IElzb0hlYXA8ZG91YmxlPiBoZWFwOworICAgIHN0ZDo6dmVjdG9yPHZvaWQqPiBwdHJzOworICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCAxMDA7ICsraSkKKyAgICAgICAgcHRycy5wdXNoX2Jh
Y2soaGVhcC5hbGxvY2F0ZSgpKTsKKyAgICBmb3IgKHZvaWQqIHB0ciA6IHB0cnMpCisgICAgICAg
IGhlYXAuZGVhbGxvY2F0ZShwdHIpOworICAgIGhlYXAuc2NhdmVuZ2UoKTsKK30KKworVEVTVChi
bWFsbG9jLCBJc29IZWFwSXNvVExTTGVhaykKK3sKKyAgICBhbGxvY2F0ZUFuZERlYWxsb2NhdGUo
KTsKKyAgICBhdXRvIGJlZm9yZSA9IHBhZ2VzUGVyVk1UYWcoKTsKKyAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgMTAwMDsgKytpKSB7CisgICAgICAgIGF1dG8gdGhyZWFkID0gVGhyZWFkOjpj
cmVhdGUoIklzb0hlYXBTdHJlc3MiLCBhbGxvY2F0ZUFuZERlYWxsb2NhdGUpOworICAgICAgICB0
aHJlYWQtPndhaXRGb3JDb21wbGV0aW9uKCk7CisgICAgfQorICAgIGF1dG8gYWZ0ZXIgPSBwYWdl
c1BlclZNVGFnKCk7CisgICAgRVhQRUNUX0xUKChzdGF0aWNfY2FzdDxpbnQ2NF90PihhZnRlcltW
TV9NRU1PUllfSkFWQVNDUklQVF9KSVRfUkVHSVNURVJfRklMRV0ucmVzZXJ2ZWQpIC0gc3RhdGlj
X2Nhc3Q8aW50NjRfdD4oYmVmb3JlW1ZNX01FTU9SWV9KQVZBU0NSSVBUX0pJVF9SRUdJU1RFUl9G
SUxFXS5yZXNlcnZlZCkpICogc3RhdGljX2Nhc3Q8aW50NjRfdD4oV1RGOjp2bVBhZ2VTaXplKCkp
LCAxMDAgKiBzdGF0aWNfY2FzdDxpbnQ2NF90PihXVEY6OnZtUGFnZVNpemUoKSkpOworfQorCitU
RVNUKGJtYWxsb2MsIElzb0hlYXBJc29QYWdlQWxsb2NhdGluZ09uZVBhZ2UpCit7CisgICAgc3Ry
dWN0IExhcmdlRGF0YSB7CisgICAgICAgIHN0ZDo6YXJyYXk8ZG91YmxlLCAyNTY+IGRhdGE7Cisg
ICAgfTsKKyAgICBzdGF0aWMgSXNvSGVhcDxMYXJnZURhdGE+IGhlYXA7CisKKyAgICBzdGQ6OnZl
Y3Rvcjx2b2lkKj4gcHRyczsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgNTA7ICsraSkK
KyAgICAgICAgcHRycy5wdXNoX2JhY2soaGVhcC5hbGxvY2F0ZSgpKTsKKyAgICBmb3IgKHZvaWQq
IHB0ciA6IHB0cnMpCisgICAgICAgIGhlYXAuZGVhbGxvY2F0ZShwdHIpOworICAgIGhlYXAuc2Nh
dmVuZ2UoKTsKKyAgICBwdHJzLmNsZWFyKCk7CisKKyAgICBhdXRvIGJlZm9yZSA9IHBhZ2VzUGVy
Vk1UYWcoKTsKKworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCAxNjAwMDsgKytpKQorICAg
ICAgICBwdHJzLnB1c2hfYmFjayhoZWFwLmFsbG9jYXRlKCkpOworICAgIGZvciAoYXV0byogcHRy
IDogcHRycykKKyAgICAgICAgaGVhcC5kZWFsbG9jYXRlKHB0cik7CisgICAgaGVhcC5zY2F2ZW5n
ZSgpOworICAgIHB0cnMuY2xlYXIoKTsKKworICAgIGF1dG8gYWZ0ZXIgPSBwYWdlc1BlclZNVGFn
KCk7CisgICAgRVhQRUNUX0xUKChzdGF0aWNfY2FzdDxpbnQ2NF90PihhZnRlcltWTV9NRU1PUllf
SkFWQVNDUklQVF9KSVRfUkVHSVNURVJfRklMRV0ucmVzZXJ2ZWQpIC0gc3RhdGljX2Nhc3Q8aW50
NjRfdD4oYmVmb3JlW1ZNX01FTU9SWV9KQVZBU0NSSVBUX0pJVF9SRUdJU1RFUl9GSUxFXS5yZXNl
cnZlZCkpICogc3RhdGljX2Nhc3Q8aW50NjRfdD4oV1RGOjp2bVBhZ2VTaXplKCkpLCAoNTAgPDwg
MjApKTsKK30KKworI2VuZGlmCisKICNlbmRpZgo=
</data>
<flag name="review"
          id="390623"
          type_id="1"
          status="+"
          setter="mark.lam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>374845</attachid>
            <date>2019-07-24 19:04:01 -0700</date>
            <delta_ts>2019-07-24 20:26:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200103-20190724190400.patch</filename>
            <type>text/plain</type>
            <size>50184</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ3ODA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDkwMGIxM2QyMjUyYjFhNDE5YjA5M2E4
MzVjYjlmZjZmNTVkZTc5NjcuLmVlZjFlNjAwMDkxZWQ5ODZkMjhhOWNkZTllMjBhZWExYTY1YTlj
MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTktMDctMjQgIFl1c3VrZSBTdXp1a2kgIDx5c3V6
dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbYm1hbGxvY10gQWRkIElzb0hlYXAgdGVzdCB0byBl
bnN1cmUgdGhhdCBJc29IZWFwIHBhZ2VzIGFyZSBub3QgYWxsb2NhdGluZyB0b28gbGFyZ2UgVkEK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDEwMwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIG1vdmUg
Vk1UYWcgcGFnZSBpbnZlc3RpZ2F0aW9uIGNvZGUgZnJvbSBQQUwgdG8gV1RGIHRvIHVzZSBpdCBp
biBUZXN0V1RGLgorICAgICAgICBBbmQgd2UgYWxzbyBhY2N1bXVsYXRlIGFsbG9jYXRlZCBWQSBz
aXplIGluIGByZXNlcnZlZGAgZmllbGQgb2YgYFRhZ0luZm9gLgorCisgICAgICAgICogV1RGLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogd3RmL0NNYWtlTGlzdHMudHh0Ogor
ICAgICAgICAqIHd0Zi9QbGF0Zm9ybU1hYy5jbWFrZToKKyAgICAgICAgKiB3dGYvUmVzb3VyY2VV
c2FnZS5oOiBBZGRlZC4KKyAgICAgICAgKiB3dGYvY29jb2EvTWVtb3J5UHJlc3N1cmVIYW5kbGVy
Q29jb2EubW06CisgICAgICAgICogd3RmL2NvY29hL1Jlc291cmNlVXNhZ2VDb2NvYS5jcHA6IEFk
ZGVkLgorICAgICAgICAoV1RGOjp2bVBhZ2VTaXplKToKKyAgICAgICAgKFdURjo6bG9nRm9vdHBy
aW50Q29tcGFyaXNvbik6CisgICAgICAgIChXVEY6OmRpc3BsYXlOYW1lRm9yVk1UYWcpOgorICAg
ICAgICAoV1RGOjpwYWdlc1BlclZNVGFnKToKKyAgICAgICAgKiB3dGYvc3BpL2NvY29hL01hY2hW
TVNQSS5oOiBBZGRlZC4KKwogMjAxOS0wNy0yMyAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVy
QGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgY2hlYXQgc2hlZXQgY29tbWVudCBmb3IgSGFzaE1h
cC9TZXQgaXRlcmF0b3IvQWRkUmVzdWx0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjg5YjU3Yzc2ZWU2Y2VjZTU2
ZDY4MjU4N2U0YjczYzZlYmY4NWVlOS4uYTg0OThlNTg0MTAwMjQyYWFmMTUzMGUzYjQxNWU1ZTQ1
MGMwMGI4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDE5LTA3LTI0ICBZdXN1a2Ug
U3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW2JtYWxsb2NdIEFkZCBJc29I
ZWFwIHRlc3QgdG8gZW5zdXJlIHRoYXQgSXNvSGVhcCBwYWdlcyBhcmUgbm90IGFsbG9jYXRpbmcg
dG9vIGxhcmdlIFZBCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMDAxMDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBObyBiZWhhdmlvciBjaGFuZ2UgaW4gV2ViQ29yZS4KKworICAgICAgICAqIHBhZ2UvTWVt
b3J5UmVsZWFzZS5jcHA6CisgICAgICAgICogcGFnZS9SZXNvdXJjZVVzYWdlVGhyZWFkLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpUYWdJbmZvOjpUYWdJbmZvKTogRGVsZXRlZC4KKyAgICAgICAgKiBw
YWdlL2NvY29hL1Jlc291cmNlVXNhZ2VUaHJlYWRDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6
OnZtUGFnZVNpemUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6bG9nRm9vdHByaW50Q29t
cGFyaXNvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpkaXNwbGF5TmFtZUZvclZNVGFn
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnBhZ2VzUGVyVk1UYWcpOiBEZWxldGVkLgor
CiAyMDE5LTA3LTI0ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KIAogICAgICAg
ICBXZWIgSW5zcGVjdG9yOiBSRUdSRVNTSU9OOiBPdmVybGF5OiBoaWdobGlnaHRpbmcgYSA6OmJl
Zm9yZS86OmFmdGVyIHNob3dzIHRoZSBub2RlIGluZm8gb2YgdGhlIHBhcmVudCBpbnN0ZWFkCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUv
UEFML0NoYW5nZUxvZwppbmRleCAwY2U5NmQ4ZGQzN2RmNjFhZjg4YzdjZjU3N2MxOGNhNzVlNzBm
YzQ4Li44YWU0NWY2ZTAzMzNmYmQxMGYwMzA0Mzg3ZTk5MDVlZjMzODQ3NzJmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxOS0wNy0yNCAgWXVzdWtlIFN1enVraSAgPHlz
dXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtibWFsbG9jXSBBZGQgSXNvSGVhcCB0ZXN0IHRv
IGVuc3VyZSB0aGF0IElzb0hlYXAgcGFnZXMgYXJlIG5vdCBhbGxvY2F0aW5nIHRvbyBsYXJnZSBW
QQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwMTAz
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW92ZSBW
TVRhZyBwYWdlIG1lbW9yeSBpbnZlc3RpZ2F0aW9uIGNvZGUgZnJvbSBQQUwgdG8gV1RGIHRvIHJl
dXNlIGl0IGluIFRlc3RXVEYuCisKKyAgICAgICAgKiBQQUwueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBwYWwvUGxhdGZvcm1NYWMuY21ha2U6CisKIDIwMTktMDctMjIgIFNp
bW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgTWFrZSBzb21l
IGNvbnN0cnVjdG9ycyBleHBsaWNpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA0YzE5ZWJjZjQzMDgxZjMxM2U5ZTZj
ZTkxOGUxODNiODViMjRkMWZlLi4wZThmYWJiODk5NTYxNDFlYzg3N2NhZmMwMDkxYjAxNTdhYTEy
ZTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE5LTA3LTI0ICBZdXN1a2UgU3V6dWtp
ICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW2JtYWxsb2NdIEFkZCBJc29IZWFwIHRl
c3QgdG8gZW5zdXJlIHRoYXQgSXNvSGVhcCBwYWdlcyBhcmUgbm90IGFsbG9jYXRpbmcgdG9vIGxh
cmdlIFZBCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MDAxMDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBN
b3ZlIE1hY2hWTVNQSS5oIGZyb20gUEFMIHRvIFdURi4KKworICAgICAgICAqIFBsYXRmb3JtL2Nv
Y29hL1NoYXJlZE1lbW9yeUNvY29hLmNwcDoKKwogMjAxOS0wNy0yNCAgWW91ZW5uIEZhYmxldCAg
PHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgRGlzYWJsZSBzcGVjdWxhdGl2ZSBsb2FkaW5n
IGlmIGNhY2hlIGlzIG5vdCB0byBiZSB1c2VkIGZvciB0aGUgbG9hZApkaWZmIC0tZ2l0IGEvU291
cmNlL2JtYWxsb2MvQ2hhbmdlTG9nIGIvU291cmNlL2JtYWxsb2MvQ2hhbmdlTG9nCmluZGV4IGU4
NTAyZmE5NzFlNDc2NmI2ZDIxMWI2YWRkYjUzNmZiNTBhODMxNTAuLjg2NGE2ODRiOWVmMmU2YjIy
OWU0NDlkNGNmYTQ5MTMyMzQ2OWYyOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvYm1hbGxvYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAx
OS0wNy0yNCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFti
bWFsbG9jXSBBZGQgSXNvSGVhcCB0ZXN0IHRvIGVuc3VyZSB0aGF0IElzb0hlYXAgcGFnZXMgYXJl
IG5vdCBhbGxvY2F0aW5nIHRvbyBsYXJnZSBWQQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwMTAzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBibWFsbG9jL0lzb1BhZ2UuY3BwOgorCiAyMDE5LTA3LTIy
ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW2JtYWxsb2Nd
IEVhY2ggSXNvUGFnZSBnZXRzIDFNQiBWQSBiZWNhdXNlIFZNSGVhcDo6dHJ5QWxsb2NhdGVMYXJn
ZUNodW5rIHJvdW5kcyB1cApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggMDc3YWZiZmIxZGQ0Yzk2YzBhOGU5ZTg3OTUxNDhkOTgxZmZjMDBkZC4uZDFkNWY5YmE2
ZTI3NjViMTI1OTIzYzVmN2YzMDk5OGIwNjY2MzQxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9X
VEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV1RGL1dURi54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNjQsNiArMTY0LDcgQEAKIAkJRTM4QzQxMjUxRUI0RTA0
QzAwNDI5NTdEIC8qIENQVVRpbWVDb2NvYS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFMzhDNDEyNDFFQjRFMDRDMDA0Mjk1N0QgLyogQ1BVVGltZUNv
Y29hLmNwcCAqLzsgfTsKIAkJRTM4QzQxMjgxRUI0RTA2ODAwNDI5NTdEIC8qIENQVVRpbWUuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM4QzQxMjYx
RUI0RTA2ODAwNDI5NTdEIC8qIENQVVRpbWUuY3BwICovOyB9OwogCQlFMzhENkUyNzFGNTUyMkUz
MDBBNzVDQzQgLyogU3RyaW5nQnVpbGRlckpTT04uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM4RDZFMjYxRjU1MjJFMzAwQTc1Q0M0IC8qIFN0cmlu
Z0J1aWxkZXJKU09OLmNwcCAqLzsgfTsKKwkJRTM5MkZBMjcyMkU5MkJGRjAwRUNEQzczIC8qIFJl
c291cmNlVXNhZ2VDb2NvYS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFMzkyRkEyNjIyRTkyQkZGMDBFQ0RDNzMgLyogUmVzb3VyY2VVc2FnZUNvY29h
LmNwcCAqLzsgfTsKIAkJRTNBMzJCQzQxRkM4MzBFMjAwN0Q3RTc2IC8qIEpTVmFsdWVNYWxsb2Mu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNBMzJC
QzIxRkM4MzBFMjAwN0Q3RTc2IC8qIEpTVmFsdWVNYWxsb2MuY3BwICovOyB9OwogCQlFNEEwQUQz
OTFBOTYyNDU1MDA1MzZERjYgLyogV29ya1F1ZXVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0QTBBRDM3MUE5NjI0NTUwMDUzNkRGNiAvKiBXb3Jr
UXVldWUuY3BwICovOyB9OwogCQlFNEEwQUQzRDFBOTYyNTNDMDA1MzZERjYgLyogV29ya1F1ZXVl
Q29jb2EuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTRBMEFEM0MxQTk2MjUzQzAwNTM2REY2IC8qIFdvcmtRdWV1ZUNvY29hLmNwcCAqLzsgfTsKQEAg
LTY1OSw2ICs2NjAsNyBAQAogCQlFMzAwRTUyMTIwM0Q2NDVGMDBEQTc5QkUgLyogVW5pcXVlQXJy
YXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVW5pcXVlQXJyYXkuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMxMUZCMTUxRjBBNTY4QjAwM0MwOERFIC8qIFRo
cmVhZEdyb3VwLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRocmVh
ZEdyb3VwLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMxMUZCMTYxRjBBNTY4
QjAwM0MwOERFIC8qIFRocmVhZEdyb3VwLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFRocmVhZEdyb3VwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzMUJERTI4
MjJFOTEzQ0MwMDI5QjEwNSAvKiBNYWNoVk1TUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gTWFjaFZNU1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzMjAw
QUI0MUU5QTUzNkQwMDNCNTlEMiAvKiBQbGF0Zm9ybVJlZ2lzdGVycy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBQbGF0Zm9ybVJlZ2lzdGVycy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlFMzNENUY4NzFGQkVENjY3MDBCRjYyNUUgLyogUmVjdXJzYWJsZUxhbWJk
YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWN1cnNhYmxlTGFtYmRhLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNENEMEQwMjI4MTBBMDIwMDIwRDI5OSAv
KiBQYWNrZWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGFja2VkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC02NzAsNiArNjcyLDcgQEAKIAkJRTM4QzQxMjYxRUI0RTA2ODAwNDI5NTdEIC8q
IENQVVRpbWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ1BVVGlt
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOEM0MTI3MUVCNEUwNjgwMDQy
OTU3RCAvKiBDUFVUaW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENQVVRp
bWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM4RDZFMjYxRjU1MjJFMzAwQTc1
Q0M0IC8qIFN0cmluZ0J1aWxkZXJKU09OLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFN0cmluZ0J1aWxkZXJKU09OLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJRTM5MkZBMjYyMkU5MkJGRjAwRUNEQzczIC8qIFJlc291cmNlVXNhZ2VDb2NvYS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZXNvdXJjZVVzYWdlQ29jb2Eu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0EzMkJDMjFGQzgzMEUyMDA3RDdF
NzYgLyogSlNWYWx1ZU1hbGxvYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBKU1ZhbHVlTWFsbG9jLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNB
MzJCQzMxRkM4MzBFMjAwN0Q3RTc2IC8qIEpTVmFsdWVNYWxsb2MuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSlNWYWx1ZU1hbGxvYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlFM0NGNzY5MDIxMTVENkJBMDA5MURFNDggLyogQ29tcGFjdFBvaW50ZXJUdXBsZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb21wYWN0UG9pbnRlclR1cGxlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMzU4LDYgKzEzNjEsNyBAQAogCQkJaXNh
ID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQk5Mzg0QjczRTIwREVBMjg0MDA1Qjcz
QjIgLyogQ0ZYUENCcmlkZ2VTUEkuaCAqLywKKwkJCQlFMzFCREUyODIyRTkxM0NDMDAyOUIxMDUg
LyogTWFjaFZNU1BJLmggKi8sCiAJCQkJOTNEMTkxQ0YyMENBRUNFODAwQzUxQjhFIC8qIG9iamNT
UEkuaCAqLywKIAkJCQlBNTA5OEIwMTFDMTZBNEY5MDAwODc3OTcgLyogU2VjdXJpdHlTUEkuaCAq
LywKIAkJCSk7CkBAIC0xNDI0LDYgKzE0MjgsNyBAQAogCQkJCUFEODlCNkI5MUU2NDE1MEYwMDkw
NzA3RiAvKiBNZW1vcnlQcmVzc3VyZUhhbmRsZXJDb2NvYS5tbSAqLywKIAkJCQk1Q0MwRUU4NzIx
NjJCQzIyMDBBMUE4NDIgLyogTlNVUkxFeHRyYXMuaCAqLywKIAkJCQk1Q0MwRUU4ODIxNjJCQzIy
MDBBMUE4NDIgLyogTlNVUkxFeHRyYXMubW0gKi8sCisJCQkJRTM5MkZBMjYyMkU5MkJGRjAwRUNE
QzczIC8qIFJlc291cmNlVXNhZ2VDb2NvYS5jcHAgKi8sCiAJCQkJQTMwRDQxMkMxRjBERTBCQTAw
QjcxOTU0IC8qIFNvZnRMaW5raW5nLmggKi8sCiAJCQkJNUNDMEVFODYyMTYyQkMyMjAwQTFBODQy
IC8qIFVSTENvY29hLm1tICovLAogCQkJCUU0QTBBRDNDMUE5NjI1M0MwMDUzNkRGNiAvKiBXb3Jr
UXVldWVDb2NvYS5jcHAgKi8sCkBAIC0xNTk0LDYgKzE1OTksNyBAQAogCQkJCUE4QTQ3NDE0MTUx
QTgyNUIwMDQxMjNGRiAvKiBSYW5kb21OdW1iZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZF
QzNDNUUxRjM2OEE5NzAwRjU5QjZDIC8qIFJlYWRXcml0ZUxvY2suY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQThBNDc0MUExNTFBODI1QjAwNDEyM0ZGIC8qIFJlZkNvdW50ZWRMZWFrQ291bnRlci5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQlFMzkyRkEyNzIyRTkyQkZGMDBFQ0RDNzMgLyogUmVzb3Vy
Y2VVc2FnZUNvY29hLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJDREVEMEYzMTgxMTVDODUwMDRE
QkE3MCAvKiBSdW5Mb29wLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJDREVEMEVGMTgxMTVDMzgw
MDREQkE3MCAvKiBSdW5Mb29wQ0YuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTNFRTVDM0UyMUZG
QUM3RDAwRkFCRDYxIC8qIFJ1bkxvb3BUaW1lckNGLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV1RGL3d0Zi9DTWFr
ZUxpc3RzLnR4dAppbmRleCBiN2ZlNzE0ZjRlN2RmMWVhMjBhNjA2NGZjZDg0Yjg2NzE3Y2I0YTUw
Li5hMzJlN2UyOWQ1YTdiOTRlMGIxYWI3NDcxYWE5MTAyNjdlMjg5ZjIzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxp
c3RzLnR4dApAQCAtMTkwLDYgKzE5MCw3IEBAIHNldChXVEZfUFVCTElDX0hFQURFUlMKICAgICBS
ZWZDb3VudGVkTGVha0NvdW50ZXIuaAogICAgIFJlZkNvdW50ZXIuaAogICAgIFJlZlB0ci5oCisg
ICAgUmVzb3VyY2VVc2FnZS5oCiAgICAgUmV0YWluUHRyLmgKICAgICBSdW5Mb29wLmgKICAgICBS
dW5Mb29wVGltZXIuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1NYWMuY21h
a2UgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybU1hYy5jbWFrZQppbmRleCA3OTdjNWNmZTdhNWJl
YmU3ZGEyZGM4ZGQ5MDY4ZGRhYjMyYzI3ZDUzLi5hZThhYmIyYmMxN2QwYzMxZTE4ZTdmNWJjNzYy
NmQ4MTVjYTNlODUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybU1hYy5jbWFr
ZQorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybU1hYy5jbWFrZQpAQCAtMjUsNiArMjUsNyBA
QCBsaXN0KEFQUEVORCBXVEZfUFVCTElDX0hFQURFUlMKICAgICBzcGkvY2YvQ0ZTdHJpbmdTUEku
aAogCiAgICAgc3BpL2NvY29hL0NGWFBDQnJpZGdlU1BJLmgKKyAgICBzcGkvY29jb2EvTWFjaFZN
U1BJLmgKICAgICBzcGkvY29jb2EvU2VjdXJpdHlTUEkuaAogICAgIHNwaS9jb2NvYS9vYmpjU1BJ
LmgKIApAQCAtNTgsNiArNTksNyBAQCBsaXN0KEFQUEVORCBXVEZfU09VUkNFUwogICAgIGNvY29h
L01lbW9yeUZvb3RwcmludENvY29hLmNwcAogICAgIGNvY29hL01lbW9yeVByZXNzdXJlSGFuZGxl
ckNvY29hLm1tCiAgICAgY29jb2EvTlNVUkxFeHRyYXMubW0KKyAgICBjb2NvYS9SZXNvdXJjZVVz
YWdlQ29jb2EuY3BwCiAgICAgY29jb2EvVVJMQ29jb2EubW0KICAgICBjb2NvYS9Xb3JrUXVldWVD
b2NvYS5jcHAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUmVzb3VyY2VVc2FnZS5oIGIv
U291cmNlL1dURi93dGYvUmVzb3VyY2VVc2FnZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU0MjJlNTZjNTExNjdm
ZDZhYjg3YjhhZDk1YzIwNzYyMmRiN2Y4OGYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9SZXNvdXJjZVVzYWdlLmgKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaW5jbHVkZSA8YXJyYXk+CisKK25hbWVzcGFjZSBXVEYgeworCisjaWYgUExB
VEZPUk0oQ09DT0EpCisKK3N0cnVjdCBUYWdJbmZvIHsKKyAgICBzaXplX3QgZGlydHkgeyAwIH07
CisgICAgc2l6ZV90IHJlY2xhaW1hYmxlIHsgMCB9OworICAgIHNpemVfdCByZXNlcnZlZCB7IDAg
fTsKK307CisKK1dURl9FWFBPUlRfUFJJVkFURSBjb25zdCBjaGFyKiBkaXNwbGF5TmFtZUZvclZN
VGFnKHVuc2lnbmVkKTsKK1dURl9FWFBPUlRfUFJJVkFURSBzaXplX3Qgdm1QYWdlU2l6ZSgpOwor
V1RGX0VYUE9SVF9QUklWQVRFIHN0ZDo6YXJyYXk8VGFnSW5mbywgMjU2PiBwYWdlc1BlclZNVGFn
KCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBsb2dGb290cHJpbnRDb21wYXJpc29uKGNvbnN0
IHN0ZDo6YXJyYXk8VGFnSW5mbywgMjU2PiYsIGNvbnN0IHN0ZDo6YXJyYXk8VGFnSW5mbywgMjU2
PiYpOworCisjZW5kaWYKKworfQorCisjaWYgUExBVEZPUk0oQ09DT0EpCit1c2luZyBXVEY6OlRh
Z0luZm87Cit1c2luZyBXVEY6OmRpc3BsYXlOYW1lRm9yVk1UYWc7Cit1c2luZyBXVEY6OnZtUGFn
ZVNpemU7Cit1c2luZyBXVEY6OnBhZ2VzUGVyVk1UYWc7CisjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL2NvY29hL01lbW9yeVByZXNzdXJlSGFuZGxlckNvY29hLm1tIGIvU291cmNl
L1dURi93dGYvY29jb2EvTWVtb3J5UHJlc3N1cmVIYW5kbGVyQ29jb2EubW0KaW5kZXggNzVlYTgz
ZmZmZDUzMWEzMjk4YTI2MTMxNmUyYWQ3NTY0NWQ2YWZjZS4uMjFkMDVlY2I3ZTc5YTkwODI2Yzgz
YmIyOWMzM2IyYzFlNTRlOTEzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvY29jb2EvTWVt
b3J5UHJlc3N1cmVIYW5kbGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dURi93dGYvY29jb2EvTWVt
b3J5UHJlc3N1cmVIYW5kbGVyQ29jb2EubW0KQEAgLTMwLDYgKzMwLDcgQEAKICNpbXBvcnQgPG1h
Y2gvdGFza19pbmZvLmg+CiAjaW1wb3J0IDxtYWxsb2MvbWFsbG9jLmg+CiAjaW1wb3J0IDxub3Rp
ZnkuaD4KKyNpbXBvcnQgPHd0Zi9SZXNvdXJjZVVzYWdlLmg+CiAjaW1wb3J0IDx3dGYvc3BpL2Rh
cndpbi9EaXNwYXRjaFNQSS5oPgogCiAjZGVmaW5lIEVOQUJMRV9GTVdfRk9PVFBSSU5UX0NPTVBB
UklTT04gMApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvY29jb2EvUmVzb3VyY2VVc2FnZUNv
Y29hLmNwcCBiL1NvdXJjZS9XVEYvd3RmL2NvY29hL1Jlc291cmNlVXNhZ2VDb2NvYS5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZGZjYTA3MmI0YzRhY2VlMDMyMTNiNjk5MDAxMzc4NjFhM2IzNDlkZAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL2NvY29hL1Jlc291cmNlVXNhZ2VDb2NvYS5jcHAK
QEAgLTAsMCArMSwxNDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlIDx3dGYvUmVzb3VyY2VVc2FnZS5oPgorCisjaW5jbHVkZSA8bWFjaC9tYWNoX2Vy
cm9yLmg+CisjaW5jbHVkZSA8bWFjaC9tYWNoX2luaXQuaD4KKyNpbmNsdWRlIDx1dGlsaXR5Pgor
I2luY2x1ZGUgPHd0Zi9zcGkvY29jb2EvTWFjaFZNU1BJLmg+CisjaW5jbHVkZSA8d3RmL3RleHQv
U3RyaW5nQ29uY2F0ZW5hdGVOdW1iZXJzLmg+CisKK25hbWVzcGFjZSBXVEYgeworCitzaXplX3Qg
dm1QYWdlU2l6ZSgpCit7CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICByZXR1cm4gdm1f
a2VybmVsX3BhZ2Vfc2l6ZTsKKyNlbHNlCisgICAgc3RhdGljIHNpemVfdCBjYWNoZWQgPSBzeXNj
b25mKF9TQ19QQUdFU0laRSk7CisgICAgcmV0dXJuIGNhY2hlZDsKKyNlbmRpZgorfQorCit2b2lk
IGxvZ0Zvb3RwcmludENvbXBhcmlzb24oY29uc3Qgc3RkOjphcnJheTxUYWdJbmZvLCAyNTY+JiBi
ZWZvcmUsIGNvbnN0IHN0ZDo6YXJyYXk8VGFnSW5mbywgMjU2PiYgYWZ0ZXIpCit7CisgICAgY29u
c3Qgc2l6ZV90IHBhZ2VTaXplID0gdm1QYWdlU2l6ZSgpOworCisgICAgV1RGTG9nQWx3YXlzKCJQ
ZXItdGFnIGJyZWFrZG93biBvZiBtZW1vcnkgcmVjbGFpbWVkIGJ5IHByZXNzdXJlIGhhbmRsZXI6
Iik7CisgICAgV1RGTG9nQWx3YXlzKCIgICMjICUxNnMgJTEwcyAlMTBzICUxMHMiLCAiVk0gVGFn
IiwgIkJlZm9yZSIsICJBZnRlciIsICJEaWZmIik7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IDI1NjsgKytpKSB7CisgICAgICAgIHNzaXplX3QgZGlydHlCZWZvcmUgPSBiZWZvcmVbaV0u
ZGlydHkgKiBwYWdlU2l6ZTsKKyAgICAgICAgc3NpemVfdCBkaXJ0eUFmdGVyID0gYWZ0ZXJbaV0u
ZGlydHkgKiBwYWdlU2l6ZTsKKyAgICAgICAgc3NpemVfdCBkaXJ0eURpZmYgPSBkaXJ0eUFmdGVy
IC0gZGlydHlCZWZvcmU7CisgICAgICAgIGlmICghZGlydHlCZWZvcmUgJiYgIWRpcnR5QWZ0ZXIp
CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgU3RyaW5nIHRhZ05hbWUgPSBkaXNwbGF5
TmFtZUZvclZNVGFnKGkpOworICAgICAgICBpZiAoIXRhZ05hbWUpCisgICAgICAgICAgICB0YWdO
YW1lID0gbWFrZVN0cmluZygiVGFnICIsIGkpOworICAgICAgICBXVEZMb2dBbHdheXMoIiAgJTAy
WCAlMTZzICUxMGxkICUxMGxkICUxMGxkIiwKKyAgICAgICAgICAgIGksCisgICAgICAgICAgICB0
YWdOYW1lLmFzY2lpKCkuZGF0YSgpLAorICAgICAgICAgICAgZGlydHlCZWZvcmUsCisgICAgICAg
ICAgICBkaXJ0eUFmdGVyLAorICAgICAgICAgICAgZGlydHlEaWZmCisgICAgICAgICk7CisgICAg
fQorfQorCitjb25zdCBjaGFyKiBkaXNwbGF5TmFtZUZvclZNVGFnKHVuc2lnbmVkIHRhZykKK3sK
KyAgICBzd2l0Y2ggKHRhZykgeworICAgIGNhc2UgVk1fTUVNT1JZX0lPS0lUOiByZXR1cm4gIklP
S2l0IjsKKyAgICBjYXNlIFZNX01FTU9SWV9MQVlFUktJVDogcmV0dXJuICJDb3JlQW5pbWF0aW9u
IjsKKyAgICBjYXNlIFZNX01FTU9SWV9JTUFHRUlPOiByZXR1cm4gIkltYWdlSU8iOworICAgIGNh
c2UgVk1fTUVNT1JZX0NHSU1BR0U6IHJldHVybiAiQ0cgaW1hZ2UiOworICAgIGNhc2UgVk1fTUVN
T1JZX0pBVkFTQ1JJUFRfQ09SRTogcmV0dXJuICJHaWdhY2FnZSI7CisgICAgY2FzZSBWTV9NRU1P
UllfSkFWQVNDUklQVF9KSVRfRVhFQ1VUQUJMRV9BTExPQ0FUT1I6IHJldHVybiAiSlNDIEpJVCI7
CisgICAgY2FzZSBWTV9NRU1PUllfSkFWQVNDUklQVF9KSVRfUkVHSVNURVJfRklMRTogcmV0dXJu
ICJJc29IZWFwIjsKKyAgICBjYXNlIFZNX01FTU9SWV9NQUxMT0M6IHJldHVybiAibWFsbG9jIjsK
KyAgICBjYXNlIFZNX01FTU9SWV9NQUxMT0NfSFVHRTogcmV0dXJuICJtYWxsb2MgKGh1Z2UpIjsK
KyAgICBjYXNlIFZNX01FTU9SWV9NQUxMT0NfTEFSR0U6IHJldHVybiAibWFsbG9jIChsYXJnZSki
OworICAgIGNhc2UgVk1fTUVNT1JZX01BTExPQ19TTUFMTDogcmV0dXJuICJtYWxsb2MgKHNtYWxs
KSI7CisgICAgY2FzZSBWTV9NRU1PUllfTUFMTE9DX1RJTlk6IHJldHVybiAibWFsbG9jICh0aW55
KSI7CisgICAgY2FzZSBWTV9NRU1PUllfTUFMTE9DX05BTk86IHJldHVybiAibWFsbG9jIChuYW5v
KSI7CisgICAgY2FzZSBWTV9NRU1PUllfVENNQUxMT0M6IHJldHVybiAiYm1hbGxvYyI7CisgICAg
Y2FzZSBWTV9NRU1PUllfRk9VTkRBVElPTjogcmV0dXJuICJGb3VuZGF0aW9uIjsKKyAgICBjYXNl
IFZNX01FTU9SWV9TVEFDSzogcmV0dXJuICJTdGFjayI7CisgICAgY2FzZSBWTV9NRU1PUllfU1FM
SVRFOiByZXR1cm4gIlNRTGl0ZSI7CisgICAgY2FzZSBWTV9NRU1PUllfVU5TSEFSRURfUE1BUDog
cmV0dXJuICJwbWFwICh1bnNoYXJlZCkiOworICAgIGNhc2UgVk1fTUVNT1JZX0RZTElCOiByZXR1
cm4gImR5bGliIjsKKyAgICBjYXNlIFZNX01FTU9SWV9DT1JFU0VSVklDRVM6IHJldHVybiAiQ29y
ZVNlcnZpY2VzIjsKKyAgICBjYXNlIFZNX01FTU9SWV9PU19BTExPQ19PTkNFOiByZXR1cm4gIm9z
X2FsbG9jX29uY2UiOworICAgIGNhc2UgVk1fTUVNT1JZX0xJQkRJU1BBVENIOiByZXR1cm4gImxp
YmRpc3BhdGNoIjsKKyAgICBkZWZhdWx0OiByZXR1cm4gbnVsbHB0cjsKKyAgICB9Cit9CisKK3N0
ZDo6YXJyYXk8VGFnSW5mbywgMjU2PiBwYWdlc1BlclZNVGFnKCkKK3sKKyAgICBzdGQ6OmFycmF5
PFRhZ0luZm8sIDI1Nj4gdGFnczsKKyAgICB0YXNrX3QgdGFzayA9IG1hY2hfdGFza19zZWxmKCk7
CisgICAgbWFjaF92bV9zaXplX3Qgc2l6ZTsKKyAgICB1aW50MzJfdCBkZXB0aCA9IDA7CisgICAg
c3RydWN0IHZtX3JlZ2lvbl9zdWJtYXBfaW5mb182NCBpbmZvID0geyB9OworICAgIG1hY2hfbXNn
X3R5cGVfbnVtYmVyX3QgY291bnQgPSBWTV9SRUdJT05fU1VCTUFQX0lORk9fQ09VTlRfNjQ7Cisg
ICAgZm9yIChtYWNoX3ZtX2FkZHJlc3NfdCBhZGRyID0gMDsgOyBhZGRyICs9IHNpemUpIHsKKyAg
ICAgICAgaW50IHB1cmdlYWJsZVN0YXRlOworICAgICAgICBpZiAobWFjaF92bV9wdXJnYWJsZV9j
b250cm9sKHRhc2ssIGFkZHIsIFZNX1BVUkdBQkxFX0dFVF9TVEFURSwgJnB1cmdlYWJsZVN0YXRl
KSAhPSBLRVJOX1NVQ0NFU1MpCisgICAgICAgICAgICBwdXJnZWFibGVTdGF0ZSA9IFZNX1BVUkdB
QkxFX0RFTlk7CisKKyAgICAgICAga2Vybl9yZXR1cm5fdCBrciA9IG1hY2hfdm1fcmVnaW9uX3Jl
Y3Vyc2UodGFzaywgJmFkZHIsICZzaXplLCAmZGVwdGgsICh2bV9yZWdpb25faW5mb190KSZpbmZv
LCAmY291bnQpOworICAgICAgICBpZiAoa3IgIT0gS0VSTl9TVUNDRVNTKQorICAgICAgICAgICAg
YnJlYWs7CisKKyAgICAgICAgdGFnc1tpbmZvLnVzZXJfdGFnXS5yZXNlcnZlZCArPSBzaXplIC8g
dm1QYWdlU2l6ZSgpOworCisgICAgICAgIGlmIChwdXJnZWFibGVTdGF0ZSA9PSBWTV9QVVJHQUJM
RV9WT0xBVElMRSkgeworICAgICAgICAgICAgdGFnc1tpbmZvLnVzZXJfdGFnXS5yZWNsYWltYWJs
ZSArPSBpbmZvLnBhZ2VzX3Jlc2lkZW50OworICAgICAgICAgICAgY29udGludWU7CisgICAgICAg
IH0KKworICAgICAgICBpZiAocHVyZ2VhYmxlU3RhdGUgPT0gVk1fUFVSR0FCTEVfRU1QVFkpIHsK
KyAgICAgICAgICAgIHRhZ3NbaW5mby51c2VyX3RhZ10ucmVjbGFpbWFibGUgKz0gc2l6ZSAvIHZt
UGFnZVNpemUoKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAg
Ym9vbCBhbm9ueW1vdXMgPSAhaW5mby5leHRlcm5hbF9wYWdlcjsKKyAgICAgICAgaWYgKGFub255
bW91cykgeworICAgICAgICAgICAgdGFnc1tpbmZvLnVzZXJfdGFnXS5kaXJ0eSArPSBpbmZvLnBh
Z2VzX3Jlc2lkZW50IC0gaW5mby5wYWdlc19yZXVzYWJsZTsKKyAgICAgICAgICAgIHRhZ3NbaW5m
by51c2VyX3RhZ10ucmVjbGFpbWFibGUgKz0gaW5mby5wYWdlc19yZXVzYWJsZTsKKyAgICAgICAg
fSBlbHNlCisgICAgICAgICAgICB0YWdzW2luZm8udXNlcl90YWddLmRpcnR5ICs9IGluZm8ucGFn
ZXNfZGlydGllZDsKKyAgICB9CisKKyAgICByZXR1cm4gdGFnczsKK30KKworfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvc3BpL2NvY29hL01hY2hWTVNQSS5oIGIvU291cmNlL1dURi93dGYv
c3BpL2NvY29hL01hY2hWTVNQSS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgzZDBjNTA1MTk2ZjRmY2VjNDE5Nzcx
NzA4NzEyNGFmZTA1ZDdiMjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9zcGkv
Y29jb2EvTWFjaFZNU1BJLmgKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNC0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpbmNsdWRlIDxtYWNoL2Jvb2xlYW4uaD4KKyNpbmNsdWRlIDxtYWNoL2tl
cm5fcmV0dXJuLmg+CisjaW5jbHVkZSA8bWFjaC9tYWNoX3R5cGVzLmg+CisKKyNpZiBQTEFURk9S
TShNQUMpIHx8IFVTRShBUFBMRV9JTlRFUk5BTF9TREspCisjaW5jbHVkZSA8bWFjaC9tYWNoX3Zt
Lmg+CisjZW5kaWYKKworV1RGX0VYVEVSTl9DX0JFR0lOCisKK2tlcm5fcmV0dXJuX3QgbWFjaF92
bV9hbGxvY2F0ZSh2bV9tYXBfdCB0YXJnZXQsIG1hY2hfdm1fYWRkcmVzc190KiwgbWFjaF92bV9z
aXplX3QsIGludCBmbGFncyk7CitrZXJuX3JldHVybl90IG1hY2hfdm1fZGVhbGxvY2F0ZSh2bV9t
YXBfdCB0YXJnZXQsIG1hY2hfdm1fYWRkcmVzc190LCBtYWNoX3ZtX3NpemVfdCk7CitrZXJuX3Jl
dHVybl90IG1hY2hfdm1fbWFwKHZtX21hcF90IHRhcmdldFRhc2ssIG1hY2hfdm1fYWRkcmVzc190
KiwgbWFjaF92bV9zaXplX3QsIG1hY2hfdm1fb2Zmc2V0X3QgbWFzaywgaW50IGZsYWdzLAorICAg
IG1lbV9lbnRyeV9uYW1lX3BvcnRfdCwgbWVtb3J5X29iamVjdF9vZmZzZXRfdCwgYm9vbGVhbl90
IGNvcHksIHZtX3Byb3RfdCBjdXJyZW50UHJvdGVjdGlvbiwgdm1fcHJvdF90IG1heGltdW1Qcm90
ZWN0aW9uLCB2bV9pbmhlcml0X3QpOwora2Vybl9yZXR1cm5fdCBtYWNoX3ZtX3Byb3RlY3Qodm1f
bWFwX3QgdGFyZ2V0VGFzaywgbWFjaF92bV9hZGRyZXNzX3QsIG1hY2hfdm1fc2l6ZV90LCBib29s
ZWFuX3Qgc2V0TWF4aW11bSwgdm1fcHJvdF90IG5ld1Byb3RlY3Rpb24pOwora2Vybl9yZXR1cm5f
dCBtYWNoX3ZtX3JlZ2lvbih2bV9tYXBfdCB0YXJnZXRUYXNrLCBtYWNoX3ZtX2FkZHJlc3NfdCos
IG1hY2hfdm1fc2l6ZV90Kiwgdm1fcmVnaW9uX2ZsYXZvcl90LCB2bV9yZWdpb25faW5mb190LAor
ICAgIG1hY2hfbXNnX3R5cGVfbnVtYmVyX3QqIGluZm9Db3VudCwgbWFjaF9wb3J0X3QqIG9iamVj
dE5hbWUpOwora2Vybl9yZXR1cm5fdCBtYWNoX3ZtX3JlZ2lvbl9yZWN1cnNlKHZtX21hcF90IHRh
cmdldFRhc2ssIG1hY2hfdm1fYWRkcmVzc190KiwgbWFjaF92bV9zaXplX3QqLCB1aW50MzJfdCog
ZGVwdGgsIHZtX3JlZ2lvbl9yZWN1cnNlX2luZm9fdCwgbWFjaF9tc2dfdHlwZV9udW1iZXJfdCog
aW5mb0NvdW50KTsKK2tlcm5fcmV0dXJuX3QgbWFjaF92bV9wdXJnYWJsZV9jb250cm9sKHZtX21h
cF90IHRhcmdldCwgbWFjaF92bV9hZGRyZXNzX3QsIHZtX3B1cmdhYmxlX3QgY29udHJvbCwgaW50
KiBzdGF0ZSk7CisKK1dURl9FWFRFUk5fQ19FTkQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1BBTC9QQUwueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1BBTC9Q
QUwueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBjNDM4YzNiZjc4MzAyYTNkMTAzMThh
ZWZmMmEzMWRhOGRhZjdkZTYyLi5kZWFiMDFkYjE4NmJiNWYyZjE1YzA0NGVlZTRhZTRhNzg3ZDI5
NjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvUEFMLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML1BBTC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC00Myw3ICs0Myw2IEBACiAJCTBDMkRBMTQ1MUYzQkVCNDkwMERCQzMxNyAvKiBJ
T1N1cmZhY2VTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBDMkRBMTI5MUYzQkVCNDkwMERCQzMxNyAvKiBJT1N1cmZhY2VTUEkuaCAqLzsgfTsKIAkJ
MEMyREExNDYxRjNCRUI0OTAwREJDMzE3IC8qIElPVHlwZXNTUEkuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBDMkRBMTJBMUYzQkVCNDkwMERCQzMxNyAv
KiBJT1R5cGVzU1BJLmggKi87IH07CiAJCTBDMkRBMTQ3MUYzQkVCNDkwMERCQzMxNyAvKiBVUkxG
b3JtYXR0aW5nU1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwQzJEQTEyQjFGM0JFQjQ5MDBEQkMzMTcgLyogVVJMRm9ybWF0dGluZ1NQSS5oICovOyB9
OwotCQkwQzJEQTE0ODFGM0JFQjQ5MDBEQkMzMTcgLyogTWFjaFZNU1BJLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwQzJEQTEyQzFGM0JFQjQ5MDBEQkMz
MTcgLyogTWFjaFZNU1BJLmggKi87IH07CiAJCTBDMkRBMTQ5MUYzQkVCNDkwMERCQzMxNyAvKiBO
RUZpbHRlclNvdXJjZVNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEMyREExMkQxRjNCRUI0OTAwREJDMzE3IC8qIE5FRmlsdGVyU291cmNlU1BJLmgg
Ki87IH07CiAJCTBDMkRBMTRBMUYzQkVCNDkwMERCQzMxNyAvKiBOU0F0dHJpYnV0ZWRTdHJpbmdT
UEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBDMkRB
MTJFMUYzQkVCNDkwMERCQzMxNyAvKiBOU0F0dHJpYnV0ZWRTdHJpbmdTUEkuaCAqLzsgfTsKIAkJ
MEMyREExNEIxRjNCRUI0OTAwREJDMzE3IC8qIE5TQnV0dG9uQ2VsbFNQSS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEMyREExMkYxRjNCRUI0OTAwREJD
MzE3IC8qIE5TQnV0dG9uQ2VsbFNQSS5oICovOyB9OwpAQCAtMjA3LDcgKzIwNiw2IEBACiAJCTBD
MkRBMTI5MUYzQkVCNDkwMERCQzMxNyAvKiBJT1N1cmZhY2VTUEkuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSU9TdXJmYWNlU1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTBDMkRBMTJBMUYzQkVCNDkwMERCQzMxNyAvKiBJT1R5cGVzU1BJLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElPVHlwZXNTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMEMyREExMkIxRjNCRUI0OTAwREJDMzE3IC8qIFVSTEZvcm1hdHRpbmdTUEku
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVVJMRm9ybWF0dGluZ1NQSS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwQzJEQTEyQzFGM0JFQjQ5MDBEQkMzMTcgLyog
TWFjaFZNU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hY2hWTVNQSS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwQzJEQTEyRDFGM0JFQjQ5MDBEQkMzMTcg
LyogTkVGaWx0ZXJTb3VyY2VTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
TkVGaWx0ZXJTb3VyY2VTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEMyREEx
MkUxRjNCRUI0OTAwREJDMzE3IC8qIE5TQXR0cmlidXRlZFN0cmluZ1NQSS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBOU0F0dHJpYnV0ZWRTdHJpbmdTUEkuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEMyREExMkYxRjNCRUI0OTAwREJDMzE3IC8qIE5TQnV0dG9u
Q2VsbFNQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOU0J1dHRvbkNlbGxT
UEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQxOCw3ICs0MTYsNiBAQAogCQkJ
CTBDMkRBMTI5MUYzQkVCNDkwMERCQzMxNyAvKiBJT1N1cmZhY2VTUEkuaCAqLywKIAkJCQkwQzJE
QTEyQTFGM0JFQjQ5MDBEQkMzMTcgLyogSU9UeXBlc1NQSS5oICovLAogCQkJCTBDNUFGOTEyMUY0
M0E0QzcwMDJFQUMwMiAvKiBMYXVuY2hTZXJ2aWNlc1NQSS5oICovLAotCQkJCTBDMkRBMTJDMUYz
QkVCNDkwMERCQzMxNyAvKiBNYWNoVk1TUEkuaCAqLywKIAkJCQkxQ0MzQUNFNzIyQkQ3RUI4MDBG
MzYwRjAgLyogTWV0YWxTUEkuaCAqLywKIAkJCQkwQzJEQTEyRDFGM0JFQjQ5MDBEQkMzMTcgLyog
TkVGaWx0ZXJTb3VyY2VTUEkuaCAqLywKIAkJCQkwQzJEQTEyRTFGM0JFQjQ5MDBEQkMzMTcgLyog
TlNBdHRyaWJ1dGVkU3RyaW5nU1BJLmggKi8sCkBAIC01NDksMTAgKzU0NiwxMCBAQAogCQkJCTBD
MkRBMDY1MUYzM0NBMzMwMERCQzMxNyAvKiBzcGkgKi8sCiAJCQkJQTM3ODhFOUYxRjA1QjdDRTAw
Njc5NDI1IC8qIHN5c3RlbSAqLywKIAkJCQlBMzBENDExRDFGMEREMEFDMDBCNzE5NTQgLyogdGV4
dCAqLywKLQkJCQkxQzAyMkVGRDIyQ0ZFOEUxMDA2REYwMUIgLyogR3VuemlwLmggKi8sCiAJCQkJ
MEMyRDlFNzIxRUVGNUFGNjAwREJDMzE3IC8qIEV4cG9ydE1hY3Jvcy5oICovLAogCQkJCUY0NDI5
MTYyMUZBNTI2NzAwMDJDQzkzRSAvKiBGaWxlU2l6ZUZvcm1hdHRlci5jcHAgKi8sCiAJCQkJRjQ0
MjkxNUYxRkE1MjYxRTAwMkNDOTNFIC8qIEZpbGVTaXplRm9ybWF0dGVyLmggKi8sCisJCQkJMUMw
MjJFRkQyMkNGRThFMTAwNkRGMDFCIC8qIEd1bnppcC5oICovLAogCQkJCUEzOURFNzREMUY3QzQ0
M0MwMDdCQ0IwMCAvKiBIeXN0ZXJlc2lzQWN0aXZpdHkuaCAqLywKIAkJCQkxQzQ4NzZENjFGOEQ3
RjRFMDBDQ0VFQkQgLyogTG9nZ2luZy5jcHAgKi8sCiAJCQkJMUM0ODc2RDcxRjhEN0Y0RTAwQ0NF
RUJEIC8qIExvZ2dpbmcuaCAqLywKQEAgLTU5NywxMiArNTk0LDEyIEBACiAJCTFDNDg3NkRFMUY4
RDgzMTMwMENDRUVCRCAvKiBjb2NvYSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hp
bGRyZW4gPSAoCi0JCQkJMUMwMjJFRkMyMkNGRThFMDAwNkRGMDFCIC8qIEd1bnppcC5jcHAgKi8s
CiAJCQkJNTdGRDMxODgyMkIzNTkyRjAwOEQwRThCIC8qIEFwcFNTT1NvZnRMaW5rLmggKi8sCiAJ
CQkJNTdGRDMxODkyMkIzNTkzRTAwOEQwRThCIC8qIEFwcFNTT1NvZnRMaW5rLm1tICovLAogCQkJ
CTA3N0U4N0IwMjI2QTQ2MDIwMEEyQUZGMCAvKiBBVkZvdW5kYXRpb25Tb2Z0TGluay5oICovLAog
CQkJCTA3N0U4N0FGMjI2QTQ2MDIwMEEyQUZGMCAvKiBBVkZvdW5kYXRpb25Tb2Z0TGluay5tbSAq
LywKIAkJCQlGNDQyOTE2NjFGQTUyNzA1MDAyQ0M5M0UgLyogRmlsZVNpemVGb3JtYXR0ZXJDb2Nv
YS5tbSAqLywKKwkJCQkxQzAyMkVGQzIyQ0ZFOEUwMDA2REYwMUIgLyogR3VuemlwLmNwcCAqLywK
IAkJCQlBMUY2M0M5RDIxQTREQkY3MDA2RkI0M0IgLyogUGFzc0tpdFNvZnRMaW5rLmggKi8sCiAJ
CQkJQTFGNjNDOUUyMUE0REJGNzAwNkZCNDNCIC8qIFBhc3NLaXRTb2Z0TGluay5tbSAqLywKIAkJ
CSk7CkBAIC03MzAsNiArNzI3LDcgQEAKIAkJCQkwQzJEOUU3MzFFRUY1QUY2MDBEQkMzMTcgLyog
RXhwb3J0TWFjcm9zLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNDQyOTE2MDFGQTUyNjFFMDAyQ0M5
M0UgLyogRmlsZVNpemVGb3JtYXR0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBDNUFGOTFCMUY0
M0E0QzcwMDJFQUMwMiAvKiBHcmFwaGljc1NlcnZpY2VzU1BJLmggaW4gSGVhZGVycyAqLywKKwkJ
CQkxQzAyMkVGRjIyQ0ZFQzUzMDA2REYwMUIgLyogR3VuemlwLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBMTAyNjU4RTFGNTY3RTlEMDBCNEM4NDQgLyogSElTZXJ2aWNlc1NQSS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQTEwMjY1ODkxRjU2NzQ3QTAwQjRDODQ0IC8qIEhJVG9vbGJveFNQSS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQTM5REU3NEUxRjdDNDQzRDAwN0JDQjAwIC8qIEh5c3RlcmVzaXNBY3Rp
dml0eS5oIGluIEhlYWRlcnMgKi8sCkBAIC03NDUsOCArNzQzLDYgQEAKIAkJCQkxQzQ4NzZEOTFG
OEQ3RjRFMDBDQ0VFQkQgLyogTG9nZ2luZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDRFMUE4QUYy
MUZBNTRFNjAwQzMwNDhFIC8qIExvb2t1cFNvZnRMaW5rLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
Qzc3ODU4QjFGNDUxMzBGMDBGNEVCQjYgLyogTG9va3VwU1BJLmggaW4gSGVhZGVycyAqLywKLQkJ
CQkxQzAyMkVGRjIyQ0ZFQzUzMDA2REYwMUIgLyogR3VuemlwLmggaW4gSGVhZGVycyAqLywKLQkJ
CQkwQzJEQTE0ODFGM0JFQjQ5MDBEQkMzMTcgLyogTWFjaFZNU1BJLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwQzVBRjkxRDFGNDNBNEM3MDAyRUFDMDIgLyogTWVkaWFQbGF5ZXJTUEkuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBDNzc4NThDMUY0NTEzMEYwMEY0RUJCNiAvKiBNZWRpYVJlbW90ZVNQSS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEMwMENGRDQxRjY4Q0U0NjAwQUFDMjZEIC8qIE1lZGlhVGlt
ZUFWRm91bmRhdGlvbi5oIGluIEhlYWRlcnMgKi8sCkBAIC05MTksOSArOTE1LDkgQEAKIAkJCQlB
MTE3NUI1ODFGNkI0NzA1MDBDNEI5RjAgLyogRGVmYXVsdFNlYXJjaFByb3ZpZGVyLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUY0NDI5MTY0MUZBNTI2NzAwMDJDQzkzRSAvKiBGaWxlU2l6ZUZvcm1h
dHRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGNDQyOTE2ODFGQTUyNzA1MDAyQ0M5M0UgLyog
RmlsZVNpemVGb3JtYXR0ZXJDb2NvYS5tbSBpbiBTb3VyY2VzICovLAorCQkJCTFDMDIyRUZFMjJD
RkU4RTEwMDZERjAxQiAvKiBHdW56aXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTMwRDQxMjIx
RjBERDBFQTAwQjcxOTU0IC8qIEtpbGxSaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUEzMEQ0
MTI1MUYwREQxMkQwMEI3MTk1NCAvKiBLaWxsUmluZ01hYy5tbSBpbiBTb3VyY2VzICovLAotCQkJ
CTFDMDIyRUZFMjJDRkU4RTEwMDZERjAxQiAvKiBHdW56aXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMUM0ODc2RDgxRjhEN0Y0RTAwQ0NFRUJEIC8qIExvZ2dpbmcuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNDRFMUE4QjAyMUZBNTRFQjAwQzMwNDhFIC8qIExvb2t1cFNvZnRMaW5rLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJMENGOTlDQTQxRjczNjM3NTAwN0VFNzkzIC8qIE1lZGlhVGltZUFWRm91
bmRhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BB
TC9wYWwvUGxhdGZvcm1NYWMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL1BsYXRmb3Jt
TWFjLmNtYWtlCmluZGV4IDcxNzI5YThjMWJiNTUxYTgxOTczYWMzNWYwZDE2MDNmZTAzMTkyZGMu
LjczMzA0OTk4NzZmNWExMDYzMzMxMmQ0Y2RjY2FjYmQ3ZWQ5YmFiNGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1BBTC9wYWwvUGxhdGZvcm1NYWMuY21ha2UKKysrIGIvU291cmNlL1dlYkNv
cmUvUEFML3BhbC9QbGF0Zm9ybU1hYy5jbWFrZQpAQCAtMzAsNyArMzAsNiBAQCBsaXN0KEFQUEVO
RCBQQUxfUFVCTElDX0hFQURFUlMKICAgICBzcGkvY29jb2EvSU9TdXJmYWNlU1BJLmgKICAgICBz
cGkvY29jb2EvSU9UeXBlc1NQSS5oCiAgICAgc3BpL2NvY29hL0xhdW5jaFNlcnZpY2VzU1BJLmgK
LSAgICBzcGkvY29jb2EvTWFjaFZNU1BJLmgKICAgICBzcGkvY29jb2EvTkVGaWx0ZXJTb3VyY2VT
UEkuaAogICAgIHNwaS9jb2NvYS9OU0F0dHJpYnV0ZWRTdHJpbmdTUEkuaAogICAgIHNwaS9jb2Nv
YS9OU0J1dHRvbkNlbGxTUEkuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9z
cGkvY29jb2EvTWFjaFZNU1BJLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9N
YWNoVk1TUEkuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODNkMGM1MDUxOTZmNGZj
ZWM0MTk3NzE3MDg3MTI0YWZlMDVkN2IyOC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9NYWNoVk1T
UEkuaAorKysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTQtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNw
cmFnbWEgb25jZQotCi0jaW5jbHVkZSA8bWFjaC9ib29sZWFuLmg+Ci0jaW5jbHVkZSA8bWFjaC9r
ZXJuX3JldHVybi5oPgotI2luY2x1ZGUgPG1hY2gvbWFjaF90eXBlcy5oPgotCi0jaWYgUExBVEZP
Uk0oTUFDKSB8fCBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQotI2luY2x1ZGUgPG1hY2gvbWFjaF92
bS5oPgotI2VuZGlmCi0KLVdURl9FWFRFUk5fQ19CRUdJTgotCi1rZXJuX3JldHVybl90IG1hY2hf
dm1fYWxsb2NhdGUodm1fbWFwX3QgdGFyZ2V0LCBtYWNoX3ZtX2FkZHJlc3NfdCosIG1hY2hfdm1f
c2l6ZV90LCBpbnQgZmxhZ3MpOwota2Vybl9yZXR1cm5fdCBtYWNoX3ZtX2RlYWxsb2NhdGUodm1f
bWFwX3QgdGFyZ2V0LCBtYWNoX3ZtX2FkZHJlc3NfdCwgbWFjaF92bV9zaXplX3QpOwota2Vybl9y
ZXR1cm5fdCBtYWNoX3ZtX21hcCh2bV9tYXBfdCB0YXJnZXRUYXNrLCBtYWNoX3ZtX2FkZHJlc3Nf
dCosIG1hY2hfdm1fc2l6ZV90LCBtYWNoX3ZtX29mZnNldF90IG1hc2ssIGludCBmbGFncywKLSAg
ICBtZW1fZW50cnlfbmFtZV9wb3J0X3QsIG1lbW9yeV9vYmplY3Rfb2Zmc2V0X3QsIGJvb2xlYW5f
dCBjb3B5LCB2bV9wcm90X3QgY3VycmVudFByb3RlY3Rpb24sIHZtX3Byb3RfdCBtYXhpbXVtUHJv
dGVjdGlvbiwgdm1faW5oZXJpdF90KTsKLWtlcm5fcmV0dXJuX3QgbWFjaF92bV9wcm90ZWN0KHZt
X21hcF90IHRhcmdldFRhc2ssIG1hY2hfdm1fYWRkcmVzc190LCBtYWNoX3ZtX3NpemVfdCwgYm9v
bGVhbl90IHNldE1heGltdW0sIHZtX3Byb3RfdCBuZXdQcm90ZWN0aW9uKTsKLWtlcm5fcmV0dXJu
X3QgbWFjaF92bV9yZWdpb24odm1fbWFwX3QgdGFyZ2V0VGFzaywgbWFjaF92bV9hZGRyZXNzX3Qq
LCBtYWNoX3ZtX3NpemVfdCosIHZtX3JlZ2lvbl9mbGF2b3JfdCwgdm1fcmVnaW9uX2luZm9fdCwK
LSAgICBtYWNoX21zZ190eXBlX251bWJlcl90KiBpbmZvQ291bnQsIG1hY2hfcG9ydF90KiBvYmpl
Y3ROYW1lKTsKLWtlcm5fcmV0dXJuX3QgbWFjaF92bV9yZWdpb25fcmVjdXJzZSh2bV9tYXBfdCB0
YXJnZXRUYXNrLCBtYWNoX3ZtX2FkZHJlc3NfdCosIG1hY2hfdm1fc2l6ZV90KiwgdWludDMyX3Qq
IGRlcHRoLCB2bV9yZWdpb25fcmVjdXJzZV9pbmZvX3QsIG1hY2hfbXNnX3R5cGVfbnVtYmVyX3Qq
IGluZm9Db3VudCk7Ci1rZXJuX3JldHVybl90IG1hY2hfdm1fcHVyZ2FibGVfY29udHJvbCh2bV9t
YXBfdCB0YXJnZXQsIG1hY2hfdm1fYWRkcmVzc190LCB2bV9wdXJnYWJsZV90IGNvbnRyb2wsIGlu
dCogc3RhdGUpOwotCi1XVEZfRVhURVJOX0NfRU5ECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL01lbW9yeVJlbGVhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9NZW1vcnlSZWxl
YXNlLmNwcAppbmRleCA4YTIxMzVlNWI1MmFhMmViNjdiMjZiOGFiMjJjYWNmNWExYWRkMGI4Li4w
ZDczZTRiMzQxNjRmOWU1N2U3ZmMzMDVhN2JmYTcyNmQwN2RjNjg4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL01lbW9yeVJlbGVhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvTWVtb3J5UmVsZWFzZS5jcHAKQEAgLTUwLDYgKzUwLDcgQEAKICNpbmNsdWRlICJUZXh0UGFp
bnRlci5oIgogI2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgogI2luY2x1ZGUgPHd0Zi9GYXN0TWFs
bG9jLmg+CisjaW5jbHVkZSA8d3RmL1Jlc291cmNlVXNhZ2UuaD4KICNpbmNsdWRlIDx3dGYvU3lz
dGVtVHJhY2luZy5oPgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1Jlc291cmNlVXNhZ2VUaHJlYWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UmVzb3VyY2VVc2FnZVRocmVhZC5oCmluZGV4IDBlMzVlYTI5MjUyNWNhNzk4MmYyNmYwNWJjZGQz
NDVjZTY2ZGIwMzAuLjRhYzZhM2YzMTMzNzAzZjAxOGQ0MjFhZmNkNGU3ODE5MjY3YjM2NGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVzb3VyY2VVc2FnZVRocmVhZC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVzb3VyY2VVc2FnZVRocmVhZC5oCkBAIC05NCwxOSArOTQs
NiBAQCBjbGFzcyBSZXNvdXJjZVVzYWdlVGhyZWFkIHsKIAogfTsKIAotI2lmIFBMQVRGT1JNKENP
Q09BKQotc3RydWN0IFRhZ0luZm8gewotICAgIFRhZ0luZm8oKSB7IH0KLSAgICBzaXplX3QgZGly
dHkgeyAwIH07Ci0gICAgc2l6ZV90IHJlY2xhaW1hYmxlIHsgMCB9OwotfTsKLQotY29uc3QgY2hh
ciogZGlzcGxheU5hbWVGb3JWTVRhZyh1bnNpZ25lZCk7Ci1zaXplX3Qgdm1QYWdlU2l6ZSgpOwot
c3RkOjphcnJheTxUYWdJbmZvLCAyNTY+IHBhZ2VzUGVyVk1UYWcoKTsKLXZvaWQgbG9nRm9vdHBy
aW50Q29tcGFyaXNvbihjb25zdCBzdGQ6OmFycmF5PFRhZ0luZm8sIDI1Nj4mLCBjb25zdCBzdGQ6
OmFycmF5PFRhZ0luZm8sIDI1Nj4mKTsKLSNlbmRpZgotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKICNlbmRpZiAvLyBFTkFCTEUoUkVTT1VSQ0VfVVNBR0UpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL2NvY29hL1Jlc291cmNlVXNhZ2VUaHJlYWRDb2NvYS5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvY29jb2EvUmVzb3VyY2VVc2FnZVRocmVhZENvY29hLm1tCmluZGV4IDEwN2E5
YzkyYTZiMDFjOWZmZmY5MjUxOTM2MTAzMmUyYmJiNjFmM2MuLjg2OWY4MTIzMWU3YWU2ZTcxMGUz
MGQ1YWIzNjlmNmNkODc3Yjg4YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29j
b2EvUmVzb3VyY2VVc2FnZVRocmVhZENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Y29jb2EvUmVzb3VyY2VVc2FnZVRocmVhZENvY29hLm1tCkBAIC0zNSwxMTQgKzM1LDEzIEBACiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvVk0uaD4KICNpbmNsdWRlIDxtYWNoL21hY2guaD4KICNp
bmNsdWRlIDxtYWNoL3ZtX3N0YXRpc3RpY3MuaD4KLSNpbmNsdWRlIDxwYWwvc3BpL2NvY29hL01h
Y2hWTVNQSS5oPgogI2luY2x1ZGUgPHd0Zi9NYWNoU2VuZFJpZ2h0Lmg+CisjaW5jbHVkZSA8d3Rm
L1Jlc291cmNlVXNhZ2UuaD4KKyNpbmNsdWRlIDx3dGYvc3BpL2NvY29hL01hY2hWTVNQSS5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlTnVtYmVycy5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLXNpemVfdCB2bVBhZ2VTaXplKCkKLXsKLSNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQotICAgIHJldHVybiB2bV9rZXJuZWxfcGFnZV9zaXplOwotI2Vsc2UKLSAgICBzdGF0
aWMgc2l6ZV90IGNhY2hlZCA9IHN5c2NvbmYoX1NDX1BBR0VTSVpFKTsKLSAgICByZXR1cm4gY2Fj
aGVkOwotI2VuZGlmCi19Ci0KLXZvaWQgbG9nRm9vdHByaW50Q29tcGFyaXNvbihjb25zdCBzdGQ6
OmFycmF5PFRhZ0luZm8sIDI1Nj4mIGJlZm9yZSwgY29uc3Qgc3RkOjphcnJheTxUYWdJbmZvLCAy
NTY+JiBhZnRlcikKLXsKLSAgICBjb25zdCBzaXplX3QgcGFnZVNpemUgPSB2bVBhZ2VTaXplKCk7
Ci0KLSAgICBXVEZMb2dBbHdheXMoIlBlci10YWcgYnJlYWtkb3duIG9mIG1lbW9yeSByZWNsYWlt
ZWQgYnkgcHJlc3N1cmUgaGFuZGxlcjoiKTsKLSAgICBXVEZMb2dBbHdheXMoIiAgIyMgJTE2cyAl
MTBzICUxMHMgJTEwcyIsICJWTSBUYWciLCAiQmVmb3JlIiwgIkFmdGVyIiwgIkRpZmYiKTsKLSAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgMjU2OyArK2kpIHsKLSAgICAgICAgc3NpemVfdCBk
aXJ0eUJlZm9yZSA9IGJlZm9yZVtpXS5kaXJ0eSAqIHBhZ2VTaXplOwotICAgICAgICBzc2l6ZV90
IGRpcnR5QWZ0ZXIgPSBhZnRlcltpXS5kaXJ0eSAqIHBhZ2VTaXplOwotICAgICAgICBzc2l6ZV90
IGRpcnR5RGlmZiA9IGRpcnR5QWZ0ZXIgLSBkaXJ0eUJlZm9yZTsKLSAgICAgICAgaWYgKCFkaXJ0
eUJlZm9yZSAmJiAhZGlydHlBZnRlcikKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBT
dHJpbmcgdGFnTmFtZSA9IGRpc3BsYXlOYW1lRm9yVk1UYWcoaSk7Ci0gICAgICAgIGlmICghdGFn
TmFtZSkKLSAgICAgICAgICAgIHRhZ05hbWUgPSBtYWtlU3RyaW5nKCJUYWcgIiwgaSk7Ci0gICAg
ICAgIFdURkxvZ0Fsd2F5cygiICAlMDJYICUxNnMgJTEwbGQgJTEwbGQgJTEwbGQiLAotICAgICAg
ICAgICAgaSwKLSAgICAgICAgICAgIHRhZ05hbWUuYXNjaWkoKS5kYXRhKCksCi0gICAgICAgICAg
ICBkaXJ0eUJlZm9yZSwKLSAgICAgICAgICAgIGRpcnR5QWZ0ZXIsCi0gICAgICAgICAgICBkaXJ0
eURpZmYKLSAgICAgICAgKTsKLSAgICB9Ci19Ci0KLWNvbnN0IGNoYXIqIGRpc3BsYXlOYW1lRm9y
Vk1UYWcodW5zaWduZWQgdGFnKQotewotICAgIHN3aXRjaCAodGFnKSB7Ci0gICAgY2FzZSBWTV9N
RU1PUllfSU9LSVQ6IHJldHVybiAiSU9LaXQiOwotICAgIGNhc2UgVk1fTUVNT1JZX0xBWUVSS0lU
OiByZXR1cm4gIkNvcmVBbmltYXRpb24iOwotICAgIGNhc2UgVk1fTUVNT1JZX0lNQUdFSU86IHJl
dHVybiAiSW1hZ2VJTyI7Ci0gICAgY2FzZSBWTV9NRU1PUllfQ0dJTUFHRTogcmV0dXJuICJDRyBp
bWFnZSI7Ci0gICAgY2FzZSBWTV9NRU1PUllfSkFWQVNDUklQVF9DT1JFOiByZXR1cm4gIkdpZ2Fj
YWdlIjsKLSAgICBjYXNlIFZNX01FTU9SWV9KQVZBU0NSSVBUX0pJVF9FWEVDVVRBQkxFX0FMTE9D
QVRPUjogcmV0dXJuICJKU0MgSklUIjsKLSAgICBjYXNlIFZNX01FTU9SWV9KQVZBU0NSSVBUX0pJ
VF9SRUdJU1RFUl9GSUxFOiByZXR1cm4gIklzb0hlYXAiOwotICAgIGNhc2UgVk1fTUVNT1JZX01B
TExPQzogcmV0dXJuICJtYWxsb2MiOwotICAgIGNhc2UgVk1fTUVNT1JZX01BTExPQ19IVUdFOiBy
ZXR1cm4gIm1hbGxvYyAoaHVnZSkiOwotICAgIGNhc2UgVk1fTUVNT1JZX01BTExPQ19MQVJHRTog
cmV0dXJuICJtYWxsb2MgKGxhcmdlKSI7Ci0gICAgY2FzZSBWTV9NRU1PUllfTUFMTE9DX1NNQUxM
OiByZXR1cm4gIm1hbGxvYyAoc21hbGwpIjsKLSAgICBjYXNlIFZNX01FTU9SWV9NQUxMT0NfVElO
WTogcmV0dXJuICJtYWxsb2MgKHRpbnkpIjsKLSAgICBjYXNlIFZNX01FTU9SWV9NQUxMT0NfTkFO
TzogcmV0dXJuICJtYWxsb2MgKG5hbm8pIjsKLSAgICBjYXNlIFZNX01FTU9SWV9UQ01BTExPQzog
cmV0dXJuICJibWFsbG9jIjsKLSAgICBjYXNlIFZNX01FTU9SWV9GT1VOREFUSU9OOiByZXR1cm4g
IkZvdW5kYXRpb24iOwotICAgIGNhc2UgVk1fTUVNT1JZX1NUQUNLOiByZXR1cm4gIlN0YWNrIjsK
LSAgICBjYXNlIFZNX01FTU9SWV9TUUxJVEU6IHJldHVybiAiU1FMaXRlIjsKLSAgICBjYXNlIFZN
X01FTU9SWV9VTlNIQVJFRF9QTUFQOiByZXR1cm4gInBtYXAgKHVuc2hhcmVkKSI7Ci0gICAgY2Fz
ZSBWTV9NRU1PUllfRFlMSUI6IHJldHVybiAiZHlsaWIiOwotICAgIGNhc2UgVk1fTUVNT1JZX0NP
UkVTRVJWSUNFUzogcmV0dXJuICJDb3JlU2VydmljZXMiOwotICAgIGNhc2UgVk1fTUVNT1JZX09T
X0FMTE9DX09OQ0U6IHJldHVybiAib3NfYWxsb2Nfb25jZSI7Ci0gICAgY2FzZSBWTV9NRU1PUllf
TElCRElTUEFUQ0g6IHJldHVybiAibGliZGlzcGF0Y2giOwotICAgIGRlZmF1bHQ6IHJldHVybiBu
dWxscHRyOwotICAgIH0KLX0KLQotc3RkOjphcnJheTxUYWdJbmZvLCAyNTY+IHBhZ2VzUGVyVk1U
YWcoKQotewotICAgIHN0ZDo6YXJyYXk8VGFnSW5mbywgMjU2PiB0YWdzOwotICAgIHRhc2tfdCB0
YXNrID0gbWFjaF90YXNrX3NlbGYoKTsKLSAgICBtYWNoX3ZtX3NpemVfdCBzaXplOwotICAgIHVp
bnQzMl90IGRlcHRoID0gMDsKLSAgICBzdHJ1Y3Qgdm1fcmVnaW9uX3N1Ym1hcF9pbmZvXzY0IGlu
Zm8gPSB7IH07Ci0gICAgbWFjaF9tc2dfdHlwZV9udW1iZXJfdCBjb3VudCA9IFZNX1JFR0lPTl9T
VUJNQVBfSU5GT19DT1VOVF82NDsKLSAgICBmb3IgKG1hY2hfdm1fYWRkcmVzc190IGFkZHIgPSAw
OyA7IGFkZHIgKz0gc2l6ZSkgewotICAgICAgICBpbnQgcHVyZ2VhYmxlU3RhdGU7Ci0gICAgICAg
IGlmIChtYWNoX3ZtX3B1cmdhYmxlX2NvbnRyb2wodGFzaywgYWRkciwgVk1fUFVSR0FCTEVfR0VU
X1NUQVRFLCAmcHVyZ2VhYmxlU3RhdGUpICE9IEtFUk5fU1VDQ0VTUykKLSAgICAgICAgICAgIHB1
cmdlYWJsZVN0YXRlID0gVk1fUFVSR0FCTEVfREVOWTsKLQotICAgICAgICBrZXJuX3JldHVybl90
IGtyID0gbWFjaF92bV9yZWdpb25fcmVjdXJzZSh0YXNrLCAmYWRkciwgJnNpemUsICZkZXB0aCwg
KHZtX3JlZ2lvbl9pbmZvX3QpJmluZm8sICZjb3VudCk7Ci0gICAgICAgIGlmIChrciAhPSBLRVJO
X1NVQ0NFU1MpCi0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBpZiAocHVyZ2VhYmxlU3Rh
dGUgPT0gVk1fUFVSR0FCTEVfVk9MQVRJTEUpIHsKLSAgICAgICAgICAgIHRhZ3NbaW5mby51c2Vy
X3RhZ10ucmVjbGFpbWFibGUgKz0gaW5mby5wYWdlc19yZXNpZGVudDsKLSAgICAgICAgICAgIGNv
bnRpbnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHB1cmdlYWJsZVN0YXRlID09IFZNX1BV
UkdBQkxFX0VNUFRZKSB7Ci0gICAgICAgICAgICB0YWdzW2luZm8udXNlcl90YWddLnJlY2xhaW1h
YmxlICs9IHNpemUgLyB2bVBhZ2VTaXplKCk7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAg
ICAgfQotCi0gICAgICAgIGJvb2wgYW5vbnltb3VzID0gIWluZm8uZXh0ZXJuYWxfcGFnZXI7Ci0g
ICAgICAgIGlmIChhbm9ueW1vdXMpIHsKLSAgICAgICAgICAgIHRhZ3NbaW5mby51c2VyX3RhZ10u
ZGlydHkgKz0gaW5mby5wYWdlc19yZXNpZGVudCAtIGluZm8ucGFnZXNfcmV1c2FibGU7Ci0gICAg
ICAgICAgICB0YWdzW2luZm8udXNlcl90YWddLnJlY2xhaW1hYmxlICs9IGluZm8ucGFnZXNfcmV1
c2FibGU7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgdGFnc1tpbmZvLnVzZXJfdGFnXS5k
aXJ0eSArPSBpbmZvLnBhZ2VzX2RpcnRpZWQ7Ci0gICAgfQotCi0gICAgcmV0dXJuIHRhZ3M7Ci19
Ci0KIHN0YXRpYyB1bnNpZ25lZCBjYXRlZ29yeUZvclZNVGFnKHVuc2lnbmVkIHRhZykKIHsKICAg
ICBzd2l0Y2ggKHRhZykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2Nv
YS9TaGFyZWRNZW1vcnlDb2NvYS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NvY29hL1No
YXJlZE1lbW9yeUNvY29hLmNwcAppbmRleCBlOGM2ZmMwZWE3YTgyM2IzN2I0Mjc3NTA4N2JkNWIy
NjFjNWRiNDU5Li4xN2U2MjcwYWRhNTliNGRlZDIzYjAxYWM0NDNlZGIxYmE1YmU5NjUwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NvY29hL1NoYXJlZE1lbW9yeUNvY29hLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NvY29hL1NoYXJlZE1lbW9yeUNvY29hLmNw
cApAQCAtMzQsOSArMzQsOSBAQAogI2luY2x1ZGUgPG1hY2gvbWFjaF9lcnJvci5oPgogI2luY2x1
ZGUgPG1hY2gvbWFjaF9wb3J0Lmg+CiAjaW5jbHVkZSA8bWFjaC92bV9tYXAuaD4KLSNpbmNsdWRl
IDxwYWwvc3BpL2NvY29hL01hY2hWTVNQSS5oPgogI2luY2x1ZGUgPHd0Zi9NYWNoU2VuZFJpZ2h0
Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9zcGkvY29jb2EvTWFj
aFZNU1BJLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1h
bGxvYy9ibWFsbG9jL0lzb1BhZ2UuY3BwIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29QYWdl
LmNwcAppbmRleCA3MDdjMzYwYmQxYTQwMzhhYTExM2ZmNzllMmYxY2E5ZDc4OTMyZGEzLi40MjA0
OWQxOGI5OWVlZmJlZjVhZjA1MTRhYjEwMGE3YzlhOTA3NjEwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
Ym1hbGxvYy9ibWFsbG9jL0lzb1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2Mv
SXNvUGFnZS5jcHAKQEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRlICJJc29QYWdlLmgiCiAKICNp
bmNsdWRlICJQZXJQcm9jZXNzLmgiCi0jaW5jbHVkZSAiVk1IZWFwLmgiCisjaW5jbHVkZSAiVk1B
bGxvY2F0ZS5oIgogCiBuYW1lc3BhY2UgYm1hbGxvYyB7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0No
YW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAzZmVhMjMwOWZkMzFmNWQ5NWYwNGIzOWMy
MmE3ZGFhNzY0YWNmOGY3Li5kMTIyNDFiM2Y1NjJlNmJjMGNhYTAxZjJlNzJkZDk5ZTcyMjhkYWI0
IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjMgQEAKKzIwMTktMDctMjQgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbYm1hbGxvY10gQWRkIElzb0hlYXAgdGVzdCB0byBlbnN1cmUgdGhhdCBJ
c29IZWFwIHBhZ2VzIGFyZSBub3QgYWxsb2NhdGluZyB0b28gbGFyZ2UgVkEKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDEwMworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyB0ZXN0
cyB0byBUZXN0V1RGIElzb0hlYXAgdGVzdHMgdG8gZW5zdXJlIHRoYXQgSXNvSGVhcCdzIGNvbXBv
bmVudCBpcyBub3QgbGVha2luZyBwYWdlcyBvciBub3QgYWxsb2NhdGluZyB0b28gbGFyZ2UgVkFz
IGZvciBtZW1vcnkgYWxsb2NhdGlvbi4KKyAgICAgICAgV2UgdXNlIFZNVGFnIHRvIGdldCB0aGUg
c3lzdGVtIHZpZXcgb2YgdGhlIGFsbG9jYXRlZCBWQXMgYW5kIGNoZWNrIHdoZXRoZXIgaXQgaXMg
bm90IGluY3JlZGlibHkgbGFyZ2UuCisKKyAgICAgICAgV2hpbGUgdGhlIHRlc3RzIGFyZSB3aGl0
ZS1ib3ggdGVzdHMgKGl0IG1lYW5zIHRoYXQgdGhpcyBpcyBhIGJpdCBmbGFreSB0byB0aGUgaW1w
bGVtZW50YXRpb24gY2hhbmdlcyBvZiBJc29IZWFwKSwgSSBhZGp1c3RlZCBzb21lIHRocmVzaG9s
ZCB0byBtYWtlIHRoaXMgbGVzcy1mbGFreQorICAgICAgICB0byB0aGUgZnV0dXJlIGltcGxlbWVu
dGF0aW9uIGNoYW5nZXMgd2hpbGUgaXQgY2F0Y2hlcyB0aGUgc2V2ZXJlIGlzc3VlcyB3ZSBoYWQu
CisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9ibWFsbG9jL0lzb0hlYXAuY3Bw
OgorICAgICAgICAoYXNzZXJ0RW1wdHlQb2ludGVyU2V0KToKKyAgICAgICAgKGFzc2VydEhhc09u
bHlPYmplY3RzKToKKyAgICAgICAgKGFzc2VydENsZWFuKToKKyAgICAgICAgKFRFU1QpOgorICAg
ICAgICAoYWxsb2NhdGVBbmREZWFsbG9jYXRlKToKKwogMjAxOS0wNy0yNCAgUHJpeWFua2EgQWdh
cndhbCAgPHBhZ2Fyd2FsOTk5QGFwcGxlLmNvbT4KIAogICAgICAgICBBbGxvdyBDbGllbnRzIHRv
IEFkZCBGaWVsZHMgdG8gdGhlIEF1dG9GaWxsQ29udGV4dCBEaWN0aW9uYXJ5LgpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvYm1hbGxvYy9Jc29IZWFwLmNwcCBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL2JtYWxsb2MvSXNvSGVhcC5jcHAKaW5kZXggMWFl
NTBhNTFmNDc1MWRhYjE0YWU5Njc2OTVlNDBhYzE0ZWQ3NGY5NS4uODFiMmNlZGY1MmZlZTdmYjZm
OGJkMWI2YzI1MGVlYzM1ODBlYzU0MCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XVEYvYm1hbGxvYy9Jc29IZWFwLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dURi9ibWFsbG9jL0lzb0hlYXAuY3BwCkBAIC0zMCw3ICszMCw5IEBACiAjaW5jbHVkZSA8
Ym1hbGxvYy9ibWFsbG9jLmg+CiAjaW5jbHVkZSA8Ym1hbGxvYy9FbnZpcm9ubWVudC5oPgogI2lu
Y2x1ZGUgPGJtYWxsb2MvSXNvSGVhcElubGluZXMuaD4KKyNpbmNsdWRlIDx3dGYvUmVzb3VyY2VV
c2FnZS5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KKyNpbmNsdWRlIDx3dGYvVk1UYWdz
Lmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtSYW5kb20uaD4KIAogI2luY2x1ZGUgPGNtYXRoPgpAQCAt
NDEsMjMgKzQzLDYgQEAKIHVzaW5nIG5hbWVzcGFjZSBibWFsbG9jOwogdXNpbmcgbmFtZXNwYWNl
IGJtYWxsb2M6OmFwaTsKIAotI2RlZmluZSBSVU4odGVzdCkgZG8geyAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAotaWYgKCFzaG91bGRSdW4oI3Rlc3QpKSAgICAgICAgICAgICAgICAgIFwKLWJy
ZWFrOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXB1dHMoI3Rlc3QgIi4uLiIpOyAg
ICAgICAgICAgICAgICAgICAgICBcCi10ZXN0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAotcHV0cygjdGVzdCAiOiBPSyEiKTsgICAgICAgICAgICAgICAgICAgIFwKLX0gd2hp
bGUgKGZhbHNlKQotCi0vLyBOb3RoaW5nIGZhbmN5IGZvciBub3c7IHdlIGp1c3QgdXNlIHRoZSBl
eGlzdGluZyBXVEYgYXNzZXJ0aW9uIG1hY2hpbmVyeS4KLSNkZWZpbmUgQ0hFQ0soeCkgZG8geyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLWlmICgh
ISh4KSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCi1icmVhazsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCi1mcHJpbnRmKHN0ZGVyciwgIiVzOiVkOiBpbiAlczogYXNzZXJ0aW9uICVzIGZh
aWxlZC5cbiIsICAgICAgICAgXAotX19GSUxFX18sIF9fTElORV9fLCBfX1BSRVRUWV9GVU5DVElP
Tl9fLCAjeCk7ICAgICAgICAgICAgICAgXAotYWJvcnQoKTsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLX0gd2hpbGUgKGZhbHNlKQotCiBz
dGF0aWMgc3RkOjpzZXQ8dm9pZCo+IHRvcHRyc2V0KGNvbnN0IHN0ZDo6dmVjdG9yPHZvaWQqPiYg
cHRycykKIHsKICAgICBzdGQ6OnNldDx2b2lkKj4gcmVzdWx0OwpAQCAtODEsNyArNjYsNyBAQCBz
dGF0aWMgdm9pZCBhc3NlcnRFbXB0eVBvaW50ZXJTZXQoY29uc3Qgc3RkOjpzZXQ8dm9pZCo+JiBw
b2ludGVycykKICAgICBmb3IgKHZvaWQqIHB0ciA6IHBvaW50ZXJzKQogICAgICAgICBwcmludGYo
IiAlcCIsIHB0cik7CiAgICAgcHJpbnRmKCJcbiIpOwotICAgIENIRUNLKHBvaW50ZXJzLmVtcHR5
KCkpOworICAgIEVYUEVDVF9UUlVFKHBvaW50ZXJzLmVtcHR5KCkpOwogfQogCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBoZWFwVHlwZT4KQEAgLTExMSw3ICs5Niw3IEBAIHN0YXRpYyB2b2lkIGFzc2VydEhh
c09ubHlPYmplY3RzKElzb0hlYXA8aGVhcFR5cGU+JiBoZWFwLCBzdGQ6OnNldDx2b2lkKj4gcG9p
bnRlCiAgICAgc3RkOjpsb2NrX2d1YXJkPGJtYWxsb2M6Ok11dGV4PiBsb2NrZXIoaW1wbC5sb2Nr
KTsKICAgICBpbXBsLmZvckVhY2hMaXZlT2JqZWN0KAogICAgICAgICBbJl0gKHZvaWQqIG9iamVj
dCkgewotICAgICAgICAgICAgQ0hFQ0socG9pbnRlcnMuZXJhc2Uob2JqZWN0KSA9PSAxKTsKKyAg
ICAgICAgICAgIEVYUEVDVF9FUShwb2ludGVycy5lcmFzZShvYmplY3QpLCAxVSk7CiAgICAgICAg
IH0pOwogICAgIGFzc2VydEVtcHR5UG9pbnRlclNldChwb2ludGVycyk7CiB9CkBAIC0xMjQsMTQg
KzEwOSwxNCBAQCBzdGF0aWMgdm9pZCBhc3NlcnRDbGVhbihJc29IZWFwPGhlYXBUeXBlPiYgaGVh
cCkKICAgICAgICAgYXV0byYgaW1wbCA9IGhlYXAuaW1wbCgpOwogICAgICAgICB7CiAgICAgICAg
ICAgICBzdGQ6OmxvY2tfZ3VhcmQ8Ym1hbGxvYzo6TXV0ZXg+IGxvY2tlcihpbXBsLmxvY2spOwot
ICAgICAgICAgICAgQ0hFQ0soIWltcGwubnVtTGl2ZU9iamVjdHMoKSk7CisgICAgICAgICAgICBF
WFBFQ1RfRkFMU0UoaW1wbC5udW1MaXZlT2JqZWN0cygpKTsKICAgICAgICAgfQogICAgIH0KICAg
ICBoZWFwLnNjYXZlbmdlKCk7CiAgICAgaWYgKCFFbnZpcm9ubWVudDo6Z2V0KCktPmlzRGVidWdI
ZWFwRW5hYmxlZCgpKSB7CiAgICAgICAgIGF1dG8mIGltcGwgPSBoZWFwLmltcGwoKTsKICAgICAg
ICAgc3RkOjpsb2NrX2d1YXJkPGJtYWxsb2M6Ok11dGV4PiBsb2NrZXIoaW1wbC5sb2NrKTsKLSAg
ICAgICAgQ0hFQ0soIWltcGwubnVtQ29tbWl0dGVkUGFnZXMoKSk7CisgICAgICAgIEVYUEVDVF9G
QUxTRShpbXBsLm51bUNvbW1pdHRlZFBhZ2VzKCkpOwogICAgIH0KIH0KIApAQCAtMTM5LDExICsx
MjQsMTEgQEAgVEVTVChibWFsbG9jLCBJc29TaW1wbGUpCiB7CiAgICAgc3RhdGljIElzb0hlYXA8
ZG91YmxlPiBoZWFwOwogICAgIHZvaWQqIHB0cjEgPSBoZWFwLmFsbG9jYXRlKCk7Ci0gICAgQ0hF
Q0socHRyMSk7CisgICAgRVhQRUNUX1RSVUUocHRyMSk7CiAgICAgdm9pZCogcHRyMiA9IGhlYXAu
YWxsb2NhdGUoKTsKLSAgICBDSEVDSyhwdHIyKTsKLSAgICBDSEVDSyhwdHIxICE9IHB0cjIpOwot
ICAgIENIRUNLKHN0ZDo6YWJzKHN0YXRpY19jYXN0PGNoYXIqPihwdHIxKSAtIHN0YXRpY19jYXN0
PGNoYXIqPihwdHIyKSkgPj0gOCk7CisgICAgRVhQRUNUX1RSVUUocHRyMik7CisgICAgRVhQRUNU
X05FKHB0cjEsIHB0cjIpOworICAgIEVYUEVDVF9HRShzdGQ6OmFicyhzdGF0aWNfY2FzdDxjaGFy
Kj4ocHRyMSkgLSBzdGF0aWNfY2FzdDxjaGFyKj4ocHRyMikpLCA4KTsKICAgICBhc3NlcnRIYXNP
YmplY3RzKGhlYXAsIHtwdHIxLCBwdHIyfSk7CiAgICAgaGVhcC5kZWFsbG9jYXRlKHB0cjEpOwog
ICAgIGhlYXAuZGVhbGxvY2F0ZShwdHIyKTsKQEAgLTE1NCwxMSArMTM5LDExIEBAIFRFU1QoYm1h
bGxvYywgSXNvU2ltcGxlU2NhdmVuZ2VCZWZvcmVEZWFsbG9jKQogewogICAgIHN0YXRpYyBJc29I
ZWFwPGRvdWJsZT4gaGVhcDsKICAgICB2b2lkKiBwdHIxID0gaGVhcC5hbGxvY2F0ZSgpOwotICAg
IENIRUNLKHB0cjEpOworICAgIEVYUEVDVF9UUlVFKHB0cjEpOwogICAgIHZvaWQqIHB0cjIgPSBo
ZWFwLmFsbG9jYXRlKCk7Ci0gICAgQ0hFQ0socHRyMik7Ci0gICAgQ0hFQ0socHRyMSAhPSBwdHIy
KTsKLSAgICBDSEVDSyhzdGQ6OmFicyhzdGF0aWNfY2FzdDxjaGFyKj4ocHRyMSkgLSBzdGF0aWNf
Y2FzdDxjaGFyKj4ocHRyMikpID49IDgpOworICAgIEVYUEVDVF9UUlVFKHB0cjIpOworICAgIEVY
UEVDVF9ORShwdHIxLCBwdHIyKTsKKyAgICBFWFBFQ1RfR0Uoc3RkOjphYnMoc3RhdGljX2Nhc3Q8
Y2hhcio+KHB0cjEpIC0gc3RhdGljX2Nhc3Q8Y2hhcio+KHB0cjIpKSwgOCk7CiAgICAgc2NhdmVu
Z2VUaGlzVGhyZWFkKCk7CiAgICAgYXNzZXJ0SGFzT25seU9iamVjdHMoaGVhcCwge3B0cjEsIHB0
cjJ9KTsKICAgICBoZWFwLmRlYWxsb2NhdGUocHRyMSk7CkBAIC0xNzIsNyArMTU3LDcgQEAgVEVT
VChibWFsbG9jLCBJc29GbGlwRmxvcEZyYWdtZW50ZWRQYWdlcykKICAgICBzdGQ6OnZlY3Rvcjx2
b2lkKj4gcHRyczsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAxMDAwMDA7IGktLTspIHsKICAgICAg
ICAgdm9pZCogcHRyID0gaGVhcC5hbGxvY2F0ZSgpOwotICAgICAgICBDSEVDSyhwdHIpOworICAg
ICAgICBFWFBFQ1RfVFJVRShwdHIpOwogICAgICAgICBwdHJzLnB1c2hfYmFjayhwdHIpOwogICAg
IH0KICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcHRycy5zaXplKCk7IGkgKz0gMikgewpA
QCAtMTkyLDEwICsxNzcsMTAgQEAgVEVTVChibWFsbG9jLCBJc29GbGlwRmxvcEZyYWdtZW50ZWRQ
YWdlc1NjYXZlbmdlSW5NaWRkbGUpCiAgICAgc3RkOjp2ZWN0b3I8dm9pZCo+IHB0cnM7CiAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMTAwMDAwOyBpLS07KSB7CiAgICAgICAgIHZvaWQqIHB0ciA9IGhl
YXAuYWxsb2NhdGUoKTsKLSAgICAgICAgQ0hFQ0socHRyKTsKKyAgICAgICAgRVhQRUNUX1RSVUUo
cHRyKTsKICAgICAgICAgcHRycy5wdXNoX2JhY2socHRyKTsKICAgICB9Ci0gICAgQ0hFQ0sodG9w
dHJzZXQocHRycykuc2l6ZSgpID09IHB0cnMuc2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEodG9wdHJz
ZXQocHRycykuc2l6ZSgpLCBwdHJzLnNpemUoKSk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IHB0cnMuc2l6ZSgpOyBpICs9IDIpIHsKICAgICAgICAgaGVhcC5kZWFsbG9jYXRlKHB0cnNb
aV0pOwogICAgICAgICBwdHJzW2ldID0gbnVsbHB0cjsKQEAgLTIxMiw3ICsxOTcsNyBAQCBURVNU
KGJtYWxsb2MsIElzb0ZsaXBGbG9wRnJhZ21lbnRlZFBhZ2VzU2NhdmVuZ2VJbk1pZGRsZSkKICAg
ICAgICAgcHRycy5wdXNoX2JhY2soaGVhcC5hbGxvY2F0ZSgpKTsKICAgICB7CiAgICAgICAgIHN0
ZDo6bG9ja19ndWFyZDxibWFsbG9jOjpNdXRleD4gbG9ja2VyKGltcGwubG9jayk7Ci0gICAgICAg
IENIRUNLKG51bUNvbW1pdHRlZFBhZ2VzQmVmb3JlID09IGltcGwubnVtQ29tbWl0dGVkUGFnZXMo
KSk7CisgICAgICAgIEVYUEVDVF9FUShudW1Db21taXR0ZWRQYWdlc0JlZm9yZSwgaW1wbC5udW1D
b21taXR0ZWRQYWdlcygpKTsKICAgICB9CiAgICAgZm9yICh2b2lkKiBwdHIgOiBwdHJzKQogICAg
ICAgICBoZWFwLmRlYWxsb2NhdGUocHRyKTsKQEAgLTIyNSwxMCArMjEwLDEwIEBAIFRFU1QoYm1h
bGxvYywgSXNvRmxpcEZsb3BGcmFnbWVudGVkUGFnZXNTY2F2ZW5nZUluTWlkZGxlMjg4KQogICAg
IHN0ZDo6dmVjdG9yPHZvaWQqPiBwdHJzOwogICAgIGZvciAodW5zaWduZWQgaSA9IDEwMDAwMDsg
aS0tOykgewogICAgICAgICB2b2lkKiBwdHIgPSBoZWFwLmFsbG9jYXRlKCk7Ci0gICAgICAgIENI
RUNLKHB0cik7CisgICAgICAgIEVYUEVDVF9UUlVFKHB0cik7CiAgICAgICAgIHB0cnMucHVzaF9i
YWNrKHB0cik7CiAgICAgfQotICAgIENIRUNLKHRvcHRyc2V0KHB0cnMpLnNpemUoKSA9PSBwdHJz
LnNpemUoKSk7CisgICAgRVhQRUNUX0VRKHRvcHRyc2V0KHB0cnMpLnNpemUoKSwgcHRycy5zaXpl
KCkpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwdHJzLnNpemUoKTsgaSArPSAyKSB7
CiAgICAgICAgIGhlYXAuZGVhbGxvY2F0ZShwdHJzW2ldKTsKICAgICAgICAgcHRyc1tpXSA9IG51
bGxwdHI7CkBAIC0yNDUsNyArMjMwLDcgQEAgVEVTVChibWFsbG9jLCBJc29GbGlwRmxvcEZyYWdt
ZW50ZWRQYWdlc1NjYXZlbmdlSW5NaWRkbGUyODgpCiAgICAgICAgIHB0cnMucHVzaF9iYWNrKGhl
YXAuYWxsb2NhdGUoKSk7CiAgICAgewogICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8Ym1hbGxvYzo6
TXV0ZXg+IGxvY2tlcihpbXBsLmxvY2spOwotICAgICAgICBDSEVDSyhudW1Db21taXR0ZWRQYWdl
c0JlZm9yZSA9PSBpbXBsLm51bUNvbW1pdHRlZFBhZ2VzKCkpOworICAgICAgICBFWFBFQ1RfRVEo
bnVtQ29tbWl0dGVkUGFnZXNCZWZvcmUsIGltcGwubnVtQ29tbWl0dGVkUGFnZXMoKSk7CiAgICAg
fQogICAgIGZvciAodm9pZCogcHRyIDogcHRycykKICAgICAgICAgaGVhcC5kZWFsbG9jYXRlKHB0
cik7CkBAIC0yNjAsNyArMjQ1LDcgQEAgVEVTVChibWFsbG9jLCBJc29NYWxsb2NBbmRGcmVlRmFz
dCkKICAgICAgICAgcHRyID0gaGVhcC5hbGxvY2F0ZSgpOwogICAgICAgICBoZWFwLmRlYWxsb2Nh
dGUocHRyKTsKICAgICB9Ci0gICAgQ0hFQ0soIUlzb1BhZ2VCYXNlOjpwYWdlRm9yKHB0ciktPmlz
U2hhcmVkKCkpOworICAgIEVYUEVDVF9GQUxTRShJc29QYWdlQmFzZTo6cGFnZUZvcihwdHIpLT5p
c1NoYXJlZCgpKTsKIH0KIAogY2xhc3MgQmlzb01hbGxvY2VkIHsKQEAgLTMxOSwyMSArMzA0LDIx
IEBAIFRFU1QoYm1hbGxvYywgU2NhdmVuZ2VkTWVtb3J5U2hvdWxkQmVSZXVzZWQpCiAgICAgICAg
IC8vIExldCdzIGV4aGF1c3QgdGhlIGNhcGFjaXR5IG9mIHRoZSBsb3dlciB0aWVyLgogICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgSXNvUGFnZTxkZWNsdHlwZShoZWFwKTo6Q29uZmln
Pjo6bnVtT2JqZWN0czsgKytpKSB7CiAgICAgICAgICAgICB2b2lkKiBwdHIgPSBoZWFwLmFsbG9j
YXRlKCk7Ci0gICAgICAgICAgICBDSEVDSyhwdHIpOworICAgICAgICAgICAgRVhQRUNUX1RSVUUo
cHRyKTsKICAgICAgICAgICAgIGxvd2VyVGllclB0cnMucHVzaF9iYWNrKHB0cik7CiAgICAgICAg
IH0KIAogICAgICAgICAvLyBBZnRlciB0aGF0LCBhbGxvY2F0aW5nIHBvaW50ZXJzIGluIHRoZSB1
cHBlciB0aWVyLgogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyA7aSsrKSB7CiAgICAgICAg
ICAgICB2b2lkKiBwdHIgPSBoZWFwLmFsbG9jYXRlKCk7Ci0gICAgICAgICAgICBDSEVDSyhwdHIp
OworICAgICAgICAgICAgRVhQRUNUX1RSVUUocHRyKTsKICAgICAgICAgICAgIHB0cnMucHVzaF9i
YWNrKHB0cik7CiAgICAgICAgICAgICBpZiAoaGVhcC5pbXBsKCkubnVtQ29tbWl0dGVkUGFnZXMo
KSA9PSBudW1QYWdlc1RvQ29tbWl0KQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAKICAgICAgICAgc3RkOjpzZXQ8dm9pZCo+IHVuaXF1ZWRQdHJzT2ZVcHBlclRpZXJzID0gdG9w
dHJzZXQocHRycyk7Ci0gICAgICAgIENIRUNLKHB0cnMuc2l6ZSgpID09IHVuaXF1ZWRQdHJzT2ZV
cHBlclRpZXJzLnNpemUoKSk7CisgICAgICAgIEVYUEVDVF9FUShwdHJzLnNpemUoKSwgdW5pcXVl
ZFB0cnNPZlVwcGVyVGllcnMuc2l6ZSgpKTsKIAogICAgICAgICBzdGQ6OnNldDx2b2lkKj4gdW5p
cXVlZFB0cnMgPSB1bmlxdWVkUHRyc09mVXBwZXJUaWVyczsKICAgICAgICAgZm9yICh2b2lkKiBw
dHIgOiBsb3dlclRpZXJQdHJzKQpAQCAtMzUxLDcgKzMzNiw3IEBAIFRFU1QoYm1hbGxvYywgU2Nh
dmVuZ2VkTWVtb3J5U2hvdWxkQmVSZXVzZWQpCiAgICAgICAgIGFzc2VydEhhc09ubHlPYmplY3Rz
KGhlYXAsIHVuaXF1ZWRQdHJzKTsKIAogICAgICAgICBhdXRvKiBwdHIyID0gaGVhcC5hbGxvY2F0
ZSgpOwotICAgICAgICBDSEVDSyh1bmlxdWVkUHRyc09mVXBwZXJUaWVycy5maW5kKHB0cjIpICE9
IHVuaXF1ZWRQdHJzT2ZVcHBlclRpZXJzLmVuZCgpKTsKKyAgICAgICAgRVhQRUNUX05FKHVuaXF1
ZWRQdHJzT2ZVcHBlclRpZXJzLmZpbmQocHRyMiksIHVuaXF1ZWRQdHJzT2ZVcHBlclRpZXJzLmVu
ZCgpKTsKICAgICAgICAgaGVhcC5kZWFsbG9jYXRlKHB0cjIpOwogCiAgICAgICAgIGZvciAodm9p
ZCogcHRyIDogbG93ZXJUaWVyUHRycykKQEAgLTI0ODEsNCArMjQ2Niw2NSBAQCBURVNUKGJtYWxs
b2MsIElzb0hlYXBNdWx0aXBsZVRocmVhZHMpCiAgICAgICAgIHRocmVhZC0+d2FpdEZvckNvbXBs
ZXRpb24oKTsKIH0KIAorI2lmIFBMQVRGT1JNKENPQ09BKQorc3RhdGljIHZvaWQgYWxsb2NhdGVB
bmREZWFsbG9jYXRlKCkKK3sKKyAgICBzdGF0aWMgSXNvSGVhcDxkb3VibGU+IGhlYXA7CisgICAg
c3RkOjp2ZWN0b3I8dm9pZCo+IHB0cnM7CisgICAgLy8gVGhpcyBleGhhdXN0cyAjIG9mIGluc3Rh
bmNlcyBhc3NpZ25lZCB0byBJc29IZWFwIHNoYXJlZCB0aWVyLgorICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCAxMDA7ICsraSkKKyAgICAgICAgcHRycy5wdXNoX2JhY2soaGVhcC5hbGxvY2F0
ZSgpKTsKKyAgICBmb3IgKHZvaWQqIHB0ciA6IHB0cnMpCisgICAgICAgIGhlYXAuZGVhbGxvY2F0
ZShwdHIpOworICAgIGhlYXAuc2NhdmVuZ2UoKTsKK30KKworVEVTVChibWFsbG9jLCBJc29IZWFw
SXNvVExTTGVhaykKK3sKKyAgICBhbGxvY2F0ZUFuZERlYWxsb2NhdGUoKTsKKyAgICBhdXRvIGJl
Zm9yZSA9IHBhZ2VzUGVyVk1UYWcoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgMTAw
MDsgKytpKSB7CisgICAgICAgIGF1dG8gdGhyZWFkID0gVGhyZWFkOjpjcmVhdGUoIklzb0hlYXBT
dHJlc3MiLCBhbGxvY2F0ZUFuZERlYWxsb2NhdGUpOworICAgICAgICB0aHJlYWQtPndhaXRGb3JD
b21wbGV0aW9uKCk7CisgICAgfQorICAgIGF1dG8gYWZ0ZXIgPSBwYWdlc1BlclZNVGFnKCk7Cisg
ICAgLy8gUHJldmlvdXNseSwgd2UgaGF2ZSBhbiBpc3N1ZSB0aGF0IGV2ZXJ5IHRocmVhZCBsZWFr
cyAxfiBwYWdlLiBUaGUgdW5kZXJseWluZyBJc29IZWFwIGltcGxlbWVudGF0aW9uIGNhbiBhZGQg
c29tZSBJc29QYWdlcyBkdXJpbmcgdGhpcyB0ZXN0IGFuZCBpdCB3b3VsZCBjaGFuZ2UgdGhlIHZh
bHVlIG9mIHRoaXMsCisgICAgLy8gYnV0IHdlIGNhbiByZWxhdGl2ZWx5IG5vbi1mbGFraWx5IHNh
eSB0aGF0IHN1Y2ggYW4gaW1wbGVtZW50YXRpb24gY2hhbmdlIHdvdWxkIG5vdCBhZGQgMTAwIG1v
cmUgcGFnZXMsIGFuZCBpZiB3ZSBoYXZlIGEgbGVhayBpbiBJc29UTFMsIGl0IGlzIGxhcmdlciB0
aGFuIDEwMDAgcGFnZXMgYW5kIHRoaXMgdGVzdCBjb3JyZWN0bHkgY2F0Y2ggdGhlIGlzc3VlLgor
ICAgIEVYUEVDVF9MVCgoc3RhdGljX2Nhc3Q8aW50NjRfdD4oYWZ0ZXJbVk1fTUVNT1JZX0pBVkFT
Q1JJUFRfSklUX1JFR0lTVEVSX0ZJTEVdLnJlc2VydmVkKSAtIHN0YXRpY19jYXN0PGludDY0X3Q+
KGJlZm9yZVtWTV9NRU1PUllfSkFWQVNDUklQVF9KSVRfUkVHSVNURVJfRklMRV0ucmVzZXJ2ZWQp
KSAqIHN0YXRpY19jYXN0PGludDY0X3Q+KFdURjo6dm1QYWdlU2l6ZSgpKSwgMTAwICogc3RhdGlj
X2Nhc3Q8aW50NjRfdD4oV1RGOjp2bVBhZ2VTaXplKCkpKTsKK30KKworVEVTVChibWFsbG9jLCBJ
c29IZWFwSXNvUGFnZUFsbG9jYXRpbmdPbmVQYWdlKQoreworICAgIHN0cnVjdCBMYXJnZURhdGEg
eworICAgICAgICBzdGQ6OmFycmF5PGRvdWJsZSwgMjU2PiBkYXRhOworICAgIH07CisgICAgc3Rh
dGljIElzb0hlYXA8TGFyZ2VEYXRhPiBoZWFwOworCisgICAgc3RkOjp2ZWN0b3I8dm9pZCo+IHB0
cnM7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IDUwOyArK2kpCisgICAgICAgIHB0cnMu
cHVzaF9iYWNrKGhlYXAuYWxsb2NhdGUoKSk7CisgICAgZm9yICh2b2lkKiBwdHIgOiBwdHJzKQor
ICAgICAgICBoZWFwLmRlYWxsb2NhdGUocHRyKTsKKyAgICBoZWFwLnNjYXZlbmdlKCk7CisgICAg
cHRycy5jbGVhcigpOworCisgICAgYXV0byBiZWZvcmUgPSBwYWdlc1BlclZNVGFnKCk7CisKKyAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgMTYwMDA7ICsraSkKKyAgICAgICAgcHRycy5wdXNo
X2JhY2soaGVhcC5hbGxvY2F0ZSgpKTsKKyAgICBmb3IgKGF1dG8qIHB0ciA6IHB0cnMpCisgICAg
ICAgIGhlYXAuZGVhbGxvY2F0ZShwdHIpOworICAgIGhlYXAuc2NhdmVuZ2UoKTsKKyAgICBwdHJz
LmNsZWFyKCk7CisKKyAgICBhdXRvIGFmdGVyID0gcGFnZXNQZXJWTVRhZygpOworICAgIC8vIFRo
aXMgbnVtYmVyICg1ME1CKSBoZWF2aWx5IHJlbGllcyBvbiB0aGUgdW5kZXJseWluZyBpbXBsZW1l
bnRhdGlvbiBvZiBJc29IZWFwLiBUbyBtYWtlIHRoaXMgdGVzdCBsZXNzLWZsYWt5LCB3ZSBwaWNr
ZWQgYSBiaXQgbGFyZ2UgbnVtYmVyIHRoYW4gdGhlIGN1cnJlbnQgb25lLCA1ME1CLAorICAgIC8v
IHRvIG1ha2UgdGhpcyB0ZXN0IHdvcmsgZXZlbiBpZiB0aGUgdW5kZXJseWluZyBpbXBsZW1lbnRh
dGlvbiBvZiBJc29IZWFwIGlzIGNoYW5nZWQsIGUuZy4gYWRkaW5nIG1vcmUgIyBvZiBJc29IZWFw
IHNoYXJlZCB0aWVyIGluc3RhbmNlcy4KKyAgICAvLyBDdXJyZW50bHksIHRoaXMgbnVtYmVyIHNh
eXMgMzFNQiBpbiBtYWNPUywgc28gNTBNQiB0aHJlc2hvbGQgY2FuIGNhdGNoIHRoZSBpc3N1ZSBp
ZiB0aGUgY2F0YXN0cm9waGljIHRoaW5nIGhhcHBlbnMuIEZvciBleGFtcGxlLCBpZiB3ZSByZXZl
cnQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDAyNCwKKyAgICAv
LyB3ZSB3aWxsIHNlZSAyR0IgVkEgYWxsb2NhdGlvbnMgaGVyZSwgd2hpY2ggY2FuIGJlIGNhdWdo
dCBieSB0aGlzIHRlc3QuIFdlIGNhbiBhZGp1c3QgdGhpcyB0aHJlc2hvbGQgaWYgdGhlIHVuZGVy
bHlpbmcgaW1wbGVtZW50YXRpb24gaXMgbGFyZ2VseSBjaGFuZ2VkIGFuZCB0aGlzIG51bWJlcgor
ICAgIEVYUEVDVF9MVCgoc3RhdGljX2Nhc3Q8aW50NjRfdD4oYWZ0ZXJbVk1fTUVNT1JZX0pBVkFT
Q1JJUFRfSklUX1JFR0lTVEVSX0ZJTEVdLnJlc2VydmVkKSAtIHN0YXRpY19jYXN0PGludDY0X3Q+
KGJlZm9yZVtWTV9NRU1PUllfSkFWQVNDUklQVF9KSVRfUkVHSVNURVJfRklMRV0ucmVzZXJ2ZWQp
KSAqIHN0YXRpY19jYXN0PGludDY0X3Q+KFdURjo6dm1QYWdlU2l6ZSgpKSwgKDUwIDw8IDIwKSk7
Cit9CisKKyNlbmRpZgorCiAjZW5kaWYK
</data>
<flag name="commit-queue"
          id="390636"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
      

    </bug>

</bugzilla>